diff --git a/code/ATMOSPHERICS/components/binary_devices/circulator.dm b/code/ATMOSPHERICS/components/binary_devices/circulator.dm index 5e2bbce6da..044d6b0c13 100644 --- a/code/ATMOSPHERICS/components/binary_devices/circulator.dm +++ b/code/ATMOSPHERICS/components/binary_devices/circulator.dm @@ -125,24 +125,24 @@ ..() /obj/machinery/atmospherics/binary/circulator/verb/rotate_clockwise() + set name = "Rotate Circulator Clockwise" + set category = "Object" + set src in view(1) + + if (usr.stat || usr.restrained() || anchored) + return + + src.set_dir(turn(src.dir, 270)) + desc = initial(desc) + " Its outlet port is to the [dir2text(dir)]." + + +/obj/machinery/atmospherics/binary/circulator/verb/rotate_counterclockwise() + set name = "Rotate Circulator Counterclockwise" set category = "Object" - set name = "Rotate Circulator (Clockwise)" set src in view(1) if (usr.stat || usr.restrained() || anchored) return src.set_dir(turn(src.dir, 90)) - desc = initial(desc) + " Its outlet port is to the [dir2text(dir)]." - - -/obj/machinery/atmospherics/binary/circulator/verb/rotate_anticlockwise() - set category = "Object" - set name = "Rotate Circulator (Counterclockwise)" - set src in view(1) - - if (usr.stat || usr.restrained() || anchored) - return - - src.set_dir(turn(src.dir, -90)) desc = initial(desc) + " Its outlet port is to the [dir2text(dir)]." \ No newline at end of file diff --git a/code/ATMOSPHERICS/components/binary_devices/dp_vent_pump.dm b/code/ATMOSPHERICS/components/binary_devices/dp_vent_pump.dm index d696aad039..a72aae425b 100644 --- a/code/ATMOSPHERICS/components/binary_devices/dp_vent_pump.dm +++ b/code/ATMOSPHERICS/components/binary_devices/dp_vent_pump.dm @@ -194,7 +194,7 @@ return 1 -/obj/machinery/atmospherics/binary/dp_vent_pump/initialize() +/obj/machinery/atmospherics/binary/dp_vent_pump/Initialize() . = ..() if(frequency) set_frequency(frequency) diff --git a/code/ATMOSPHERICS/components/binary_devices/passive_gate.dm b/code/ATMOSPHERICS/components/binary_devices/passive_gate.dm index 3988b790c8..accedb543d 100644 --- a/code/ATMOSPHERICS/components/binary_devices/passive_gate.dm +++ b/code/ATMOSPHERICS/components/binary_devices/passive_gate.dm @@ -129,7 +129,7 @@ return 1 -/obj/machinery/atmospherics/binary/passive_gate/initialize() +/obj/machinery/atmospherics/binary/passive_gate/Initialize() . = ..() if(frequency) set_frequency(frequency) diff --git a/code/ATMOSPHERICS/components/binary_devices/pipeturbine.dm b/code/ATMOSPHERICS/components/binary_devices/pipeturbine.dm index d26422c309..a7c8fd6d38 100644 --- a/code/ATMOSPHERICS/components/binary_devices/pipeturbine.dm +++ b/code/ATMOSPHERICS/components/binary_devices/pipeturbine.dm @@ -20,209 +20,210 @@ var/datum/pipe_network/network1 var/datum/pipe_network/network2 - New() - ..() - air_in.volume = 200 - air_out.volume = 800 - volume_ratio = air_in.volume / (air_in.volume + air_out.volume) - switch(dir) - if(NORTH) +/obj/machinery/atmospherics/pipeturbine/New() + ..() + air_in.volume = 200 + air_out.volume = 800 + volume_ratio = air_in.volume / (air_in.volume + air_out.volume) + switch(dir) + if(NORTH) + initialize_directions = EAST|WEST + if(SOUTH) + initialize_directions = EAST|WEST + if(EAST) + initialize_directions = NORTH|SOUTH + if(WEST) + initialize_directions = NORTH|SOUTH + +/obj/machinery/atmospherics/pipeturbine/Destroy() + . = ..() + + if(node1) + node1.disconnect(src) + qdel(network1) + if(node2) + node2.disconnect(src) + qdel(network2) + + node1 = null + node2 = null + +/obj/machinery/atmospherics/pipeturbine/process() + ..() + if(anchored && !(stat&BROKEN)) + kin_energy *= 1 - kin_loss + dP = max(air_in.return_pressure() - air_out.return_pressure(), 0) + if(dP > 10) + kin_energy += 1/ADIABATIC_EXPONENT * dP * air_in.volume * (1 - volume_ratio**ADIABATIC_EXPONENT) * efficiency + air_in.temperature *= volume_ratio**ADIABATIC_EXPONENT + + var/datum/gas_mixture/air_all = new + air_all.volume = air_in.volume + air_out.volume + air_all.merge(air_in.remove_ratio(1)) + air_all.merge(air_out.remove_ratio(1)) + + air_in.merge(air_all.remove(volume_ratio)) + air_out.merge(air_all) + + update_icon() + + if (network1) + network1.update = 1 + if (network2) + network2.update = 1 + +/obj/machinery/atmospherics/pipeturbine/update_icon() + overlays.Cut() + if (dP > 10) + overlays += image('icons/obj/pipeturbine.dmi', "moto-turb") + if (kin_energy > 100000) + overlays += image('icons/obj/pipeturbine.dmi', "low-turb") + if (kin_energy > 500000) + overlays += image('icons/obj/pipeturbine.dmi', "med-turb") + if (kin_energy > 1000000) + overlays += image('icons/obj/pipeturbine.dmi', "hi-turb") + +/obj/machinery/atmospherics/pipeturbine/attackby(obj/item/weapon/W as obj, mob/user as mob) + if(W.is_wrench()) + anchored = !anchored + playsound(src, W.usesound, 50, 1) + to_chat(user, "You [anchored ? "secure" : "unsecure"] the bolts holding \the [src] to the floor.") + + if(anchored) + if(dir & (NORTH|SOUTH)) initialize_directions = EAST|WEST - if(SOUTH) - initialize_directions = EAST|WEST - if(EAST) - initialize_directions = NORTH|SOUTH - if(WEST) + else if(dir & (EAST|WEST)) initialize_directions = NORTH|SOUTH - Destroy() - . = ..() - - if(node1) - node1.disconnect(src) - qdel(network1) - if(node2) - node2.disconnect(src) - qdel(network2) - - node1 = null - node2 = null - - process() - ..() - if(anchored && !(stat&BROKEN)) - kin_energy *= 1 - kin_loss - dP = max(air_in.return_pressure() - air_out.return_pressure(), 0) - if(dP > 10) - kin_energy += 1/ADIABATIC_EXPONENT * dP * air_in.volume * (1 - volume_ratio**ADIABATIC_EXPONENT) * efficiency - air_in.temperature *= volume_ratio**ADIABATIC_EXPONENT - - var/datum/gas_mixture/air_all = new - air_all.volume = air_in.volume + air_out.volume - air_all.merge(air_in.remove_ratio(1)) - air_all.merge(air_out.remove_ratio(1)) - - air_in.merge(air_all.remove(volume_ratio)) - air_out.merge(air_all) - - update_icon() - - if (network1) - network1.update = 1 - if (network2) - network2.update = 1 - - update_icon() - overlays.Cut() - if (dP > 10) - overlays += image('icons/obj/pipeturbine.dmi', "moto-turb") - if (kin_energy > 100000) - overlays += image('icons/obj/pipeturbine.dmi', "low-turb") - if (kin_energy > 500000) - overlays += image('icons/obj/pipeturbine.dmi', "med-turb") - if (kin_energy > 1000000) - overlays += image('icons/obj/pipeturbine.dmi', "hi-turb") - - attackby(obj/item/weapon/W as obj, mob/user as mob) - if(W.is_wrench()) - anchored = !anchored - playsound(src, W.usesound, 50, 1) - to_chat(user, "You [anchored ? "secure" : "unsecure"] the bolts holding \the [src] to the floor.") - - if(anchored) - if(dir & (NORTH|SOUTH)) - initialize_directions = EAST|WEST - else if(dir & (EAST|WEST)) - initialize_directions = NORTH|SOUTH - - atmos_init() - build_network() - if (node1) - node1.atmos_init() - node1.build_network() - if (node2) - node2.atmos_init() - node2.build_network() - else - if(node1) - node1.disconnect(src) - qdel(network1) - if(node2) - node2.disconnect(src) - qdel(network2) - - node1 = null - node2 = null - + atmos_init() + build_network() + if (node1) + node1.atmos_init() + node1.build_network() + if (node2) + node2.atmos_init() + node2.build_network() else - ..() + if(node1) + node1.disconnect(src) + qdel(network1) + if(node2) + node2.disconnect(src) + qdel(network2) - verb/rotate_clockwise() - set category = "Object" - set name = "Rotate Circulator (Clockwise)" - set src in view(1) - - if (usr.stat || usr.restrained() || anchored) - return - - src.set_dir(turn(src.dir, -90)) - - - verb/rotate_anticlockwise() - set category = "Object" - set name = "Rotate Circulator (Counterclockwise)" - set src in view(1) - - if (usr.stat || usr.restrained() || anchored) - return - - src.set_dir(turn(src.dir, 90)) - -//Goddamn copypaste from binary base class because atmospherics machinery API is not damn flexible - get_neighbor_nodes_for_init() - return list(node1, node2) - - network_expand(datum/pipe_network/new_network, obj/machinery/atmospherics/pipe/reference) - if(reference == node1) - network1 = new_network - - else if(reference == node2) - network2 = new_network - - if(new_network.normal_members.Find(src)) - return 0 - - new_network.normal_members += src - - return null - - atmos_init() - if(node1 && node2) return - - var/node2_connect = turn(dir, -90) - var/node1_connect = turn(dir, 90) - - for(var/obj/machinery/atmospherics/target in get_step(src,node1_connect)) - if(target.initialize_directions & get_dir(target,src)) - node1 = target - break - - for(var/obj/machinery/atmospherics/target in get_step(src,node2_connect)) - if(target.initialize_directions & get_dir(target,src)) - node2 = target - break - - build_network() - if(!network1 && node1) - network1 = new /datum/pipe_network() - network1.normal_members += src - network1.build_network(node1, src) - - if(!network2 && node2) - network2 = new /datum/pipe_network() - network2.normal_members += src - network2.build_network(node2, src) - - - return_network(obj/machinery/atmospherics/reference) - build_network() - - if(reference==node1) - return network1 - - if(reference==node2) - return network2 - - return null - - reassign_network(datum/pipe_network/old_network, datum/pipe_network/new_network) - if(network1 == old_network) - network1 = new_network - if(network2 == old_network) - network2 = new_network - - return 1 - - return_network_air(datum/pipe_network/reference) - var/list/results = list() - - if(network1 == reference) - results += air_in - if(network2 == reference) - results += air_out - - return results - - disconnect(obj/machinery/atmospherics/reference) - if(reference==node1) - qdel(network1) node1 = null - - else if(reference==node2) - qdel(network2) node2 = null - return null + return + ..() + +/obj/machinery/atmospherics/pipeturbine/verb/rotate_clockwise() + set name = "Rotate Turbine Clockwise" + set category = "Object" + set src in view(1) + + if (usr.stat || usr.restrained() || anchored) + return + + src.set_dir(turn(src.dir, 270)) + + +/obj/machinery/atmospherics/pipeturbine/verb/rotate_counterclockwise() + set name = "Rotate Turbine Counterclockwise" + set category = "Object" + set src in view(1) + + if (usr.stat || usr.restrained() || anchored) + return + + src.set_dir(turn(src.dir, 90)) + +//Goddamn copypaste from binary base class because atmospherics machinery API is not damn flexible +/obj/machinery/atmospherics/pipeturbine/get_neighbor_nodes_for_init() + return list(node1, node2) + +/obj/machinery/atmospherics/pipeturbine/network_expand(datum/pipe_network/new_network, obj/machinery/atmospherics/pipe/reference) + if(reference == node1) + network1 = new_network + + else if(reference == node2) + network2 = new_network + + if(new_network.normal_members.Find(src)) + return 0 + + new_network.normal_members += src + + return null + +/obj/machinery/atmospherics/pipeturbine/atmos_init() + if(node1 && node2) + return + + var/node2_connect = turn(dir, -90) + var/node1_connect = turn(dir, 90) + + for(var/obj/machinery/atmospherics/target in get_step(src,node1_connect)) + if(target.initialize_directions & get_dir(target,src)) + node1 = target + break + + for(var/obj/machinery/atmospherics/target in get_step(src,node2_connect)) + if(target.initialize_directions & get_dir(target,src)) + node2 = target + break + +/obj/machinery/atmospherics/pipeturbine/build_network() + if(!network1 && node1) + network1 = new /datum/pipe_network() + network1.normal_members += src + network1.build_network(node1, src) + + if(!network2 && node2) + network2 = new /datum/pipe_network() + network2.normal_members += src + network2.build_network(node2, src) + + +/obj/machinery/atmospherics/pipeturbine/return_network(obj/machinery/atmospherics/reference) + build_network() + + if(reference==node1) + return network1 + + if(reference==node2) + return network2 + + return null + +/obj/machinery/atmospherics/pipeturbine/reassign_network(datum/pipe_network/old_network, datum/pipe_network/new_network) + if(network1 == old_network) + network1 = new_network + if(network2 == old_network) + network2 = new_network + + return 1 + +/obj/machinery/atmospherics/pipeturbine/return_network_air(datum/pipe_network/reference) + var/list/results = list() + + if(network1 == reference) + results += air_in + if(network2 == reference) + results += air_out + + return results + +/obj/machinery/atmospherics/pipeturbine/disconnect(obj/machinery/atmospherics/reference) + if(reference==node1) + qdel(network1) + node1 = null + + else if(reference==node2) + qdel(network2) + node2 = null + + return null /obj/machinery/power/turbinemotor @@ -236,54 +237,53 @@ var/kin_to_el_ratio = 0.1 //How much kinetic energy will be taken from turbine and converted into electricity var/obj/machinery/atmospherics/pipeturbine/turbine - New() - ..() - spawn(1) - updateConnection() - - proc/updateConnection() - turbine = null - if(src.loc && anchored) - turbine = locate(/obj/machinery/atmospherics/pipeturbine) in get_step(src,dir) - if (turbine.stat & (BROKEN) || !turbine.anchored || turn(turbine.dir,180) != dir) - turbine = null - - process() +/obj/machinery/power/turbinemotor/New() + ..() + spawn(1) updateConnection() - if(!turbine || !anchored || stat & (BROKEN)) - return - var/power_generated = kin_to_el_ratio * turbine.kin_energy - turbine.kin_energy -= power_generated - add_avail(power_generated) - - - attackby(obj/item/weapon/W as obj, mob/user as mob) - if(W.is_wrench()) - anchored = !anchored - playsound(src, W.usesound, 50, 1) +/obj/machinery/power/turbinemotor/proc/updateConnection() + turbine = null + if(src.loc && anchored) + turbine = locate(/obj/machinery/atmospherics/pipeturbine) in get_step(src,dir) + if (turbine.stat & (BROKEN) || !turbine.anchored || turn(turbine.dir,180) != dir) turbine = null - to_chat(user, "You [anchored ? "secure" : "unsecure"] the bolts holding \the [src] to the floor.") - updateConnection() - else - ..() - verb/rotate_clock() - set category = "Object" - set name = "Rotate Motor Clockwise" - set src in view(1) +/obj/machinery/power/turbinemotor/process() + updateConnection() + if(!turbine || !anchored || stat & (BROKEN)) + return - if (usr.stat || usr.restrained() || anchored) - return + var/power_generated = kin_to_el_ratio * turbine.kin_energy + turbine.kin_energy -= power_generated + add_avail(power_generated) - src.set_dir(turn(src.dir, -90)) +/obj/machinery/power/turbinemotor/attackby(obj/item/weapon/W as obj, mob/user as mob) + if(W.is_wrench()) + anchored = !anchored + playsound(src, W.usesound, 50, 1) + turbine = null + to_chat(user, "You [anchored ? "secure" : "unsecure"] the bolts holding \the [src] to the floor.") + updateConnection() + else + ..() - verb/rotate_anticlock() - set category = "Object" - set name = "Rotate Motor Counterclockwise" - set src in view(1) +/obj/machinery/power/turbinemotor/verb/rotate_clockwise() + set name = "Rotate Motor Clockwise" + set category = "Object" + set src in view(1) - if (usr.stat || usr.restrained() || anchored) - return + if (usr.stat || usr.restrained() || anchored) + return - src.set_dir(turn(src.dir, 90)) + src.set_dir(turn(src.dir, 270)) + +/obj/machinery/power/turbinemotor/verb/rotate_counterclockwise() + set name = "Rotate Motor Counterclockwise" + set category = "Object" + set src in view(1) + + if (usr.stat || usr.restrained() || anchored) + return + + src.set_dir(turn(src.dir, 90)) \ No newline at end of file diff --git a/code/ATMOSPHERICS/components/binary_devices/pump.dm b/code/ATMOSPHERICS/components/binary_devices/pump.dm index b03206b262..cacdf5240b 100644 --- a/code/ATMOSPHERICS/components/binary_devices/pump.dm +++ b/code/ATMOSPHERICS/components/binary_devices/pump.dm @@ -149,7 +149,7 @@ Thus, the two variables affect pump operation are set in New(): ui.open() // open the new ui window ui.set_auto_update(1) // auto update every Master Controller tick -/obj/machinery/atmospherics/binary/pump/initialize() +/obj/machinery/atmospherics/binary/pump/Initialize() . = ..() if(frequency) set_frequency(frequency) diff --git a/code/ATMOSPHERICS/components/trinary_devices/filter.dm b/code/ATMOSPHERICS/components/trinary_devices/filter.dm index 49cb05e9af..ea3bd60456 100755 --- a/code/ATMOSPHERICS/components/trinary_devices/filter.dm +++ b/code/ATMOSPHERICS/components/trinary_devices/filter.dm @@ -105,7 +105,7 @@ return 1 -/obj/machinery/atmospherics/trinary/atmos_filter/initialize() +/obj/machinery/atmospherics/trinary/atmos_filter/Initialize() . = ..() if(frequency) set_frequency(frequency) diff --git a/code/ATMOSPHERICS/components/tvalve.dm b/code/ATMOSPHERICS/components/tvalve.dm index cfc990c6e5..c0d796d45b 100644 --- a/code/ATMOSPHERICS/components/tvalve.dm +++ b/code/ATMOSPHERICS/components/tvalve.dm @@ -302,7 +302,7 @@ -/obj/machinery/atmospherics/tvalve/digital/initialize() +/obj/machinery/atmospherics/tvalve/digital/Initialize() . = ..() if(frequency) set_frequency(frequency) diff --git a/code/ATMOSPHERICS/components/unary/outlet_injector.dm b/code/ATMOSPHERICS/components/unary/outlet_injector.dm index 4a9403a64b..ee1379ac28 100644 --- a/code/ATMOSPHERICS/components/unary/outlet_injector.dm +++ b/code/ATMOSPHERICS/components/unary/outlet_injector.dm @@ -122,7 +122,7 @@ return 1 -/obj/machinery/atmospherics/unary/outlet_injector/initialize() +/obj/machinery/atmospherics/unary/outlet_injector/Initialize() . = ..() if(frequency) set_frequency(frequency) diff --git a/code/ATMOSPHERICS/components/valve.dm b/code/ATMOSPHERICS/components/valve.dm index f385ae5ed6..2e5e3e08ee 100644 --- a/code/ATMOSPHERICS/components/valve.dm +++ b/code/ATMOSPHERICS/components/valve.dm @@ -263,7 +263,7 @@ if(frequency) radio_connection = radio_controller.add_object(src, frequency, RADIO_ATMOSIA) -/obj/machinery/atmospherics/valve/digital/initialize() +/obj/machinery/atmospherics/valve/digital/Initialize() . = ..() if(frequency) set_frequency(frequency) diff --git a/code/ATMOSPHERICS/datum_pipe_network.dm b/code/ATMOSPHERICS/datum_pipe_network.dm index 74134e6ff2..eb5e89276e 100644 --- a/code/ATMOSPHERICS/datum_pipe_network.dm +++ b/code/ATMOSPHERICS/datum_pipe_network.dm @@ -20,7 +20,7 @@ var/global/list/datum/pipe_network/pipe_networks = list() // TODO - Move into SS gases.Cut() // Do not qdel the gases, we don't own them return ..() - proc/process() + process() //Equalize gases amongst pipe if called for if(update) update = 0 @@ -75,7 +75,7 @@ var/global/list/datum/pipe_network/pipe_networks = list() // TODO - Move into SS for(var/datum/pipeline/line_member in line_members) gases += line_member.air - + for(var/datum/gas_mixture/air in gases) volume += air.volume diff --git a/code/ATMOSPHERICS/datum_pipeline.dm b/code/ATMOSPHERICS/datum_pipeline.dm index 28391c4352..fc47bca938 100644 --- a/code/ATMOSPHERICS/datum_pipeline.dm +++ b/code/ATMOSPHERICS/datum_pipeline.dm @@ -20,7 +20,7 @@ datum/pipeline edges = null . = ..() - proc/process()//This use to be called called from the pipe networks + process()//This use to be called called from the pipe networks //Check to see if pressure is within acceptable limits var/pressure = air.return_pressure() diff --git a/code/ATMOSPHERICS/mainspipe.dm b/code/ATMOSPHERICS/mainspipe.dm index baba515fae..ac2b3193c9 100644 --- a/code/ATMOSPHERICS/mainspipe.dm +++ b/code/ATMOSPHERICS/mainspipe.dm @@ -571,7 +571,7 @@ obj/machinery/atmospherics/mains_pipe/valve else icon_state = "[hide?"h":""]mvalve[open]" - initialize() + Initialize() normalize_dir() var/node1_dir var/node2_dir @@ -609,7 +609,7 @@ obj/machinery/atmospherics/mains_pipe/valve open = 1 update_icon() - initialize() + Initialize() return 1 @@ -668,7 +668,7 @@ obj/machinery/atmospherics/mains_pipe/valve var/id = null var/datum/radio_frequency/radio_connection - initialize() + Initialize() ..() if(frequency) set_frequency(frequency) diff --git a/code/ZAS/Airflow.dm b/code/ZAS/Airflow.dm index e5d2b7eb11..394fe72478 100644 --- a/code/ZAS/Airflow.dm +++ b/code/ZAS/Airflow.dm @@ -22,9 +22,6 @@ mob/proc/airflow_stun() mob/living/silicon/airflow_stun() return -mob/living/simple_animal/slime/airflow_stun() - return - mob/living/carbon/human/airflow_stun() if(shoes && (shoes.item_flags & NOSLIP)) to_chat(src, "Air suddenly rushes past you!") diff --git a/code/ZAS/Atom.dm b/code/ZAS/Atom.dm index 63ed9cf090..0457dce1a5 100644 --- a/code/ZAS/Atom.dm +++ b/code/ZAS/Atom.dm @@ -1,34 +1,46 @@ /atom/var/pressure_resistance = ONE_ATMOSPHERE +/atom/var/can_atmos_pass = ATMOS_PASS_YES -/atom/proc/CanPass(atom/movable/mover, turf/target, height=1.5, air_group = 0) - //Purpose: Determines if the object (or airflow) can pass this atom. - //Called by: Movement, airflow. - //Inputs: The moving atom (optional), target turf, "height" and air group - //Outputs: Boolean if can pass. +// Purpose: Determines if the object can pass this atom. +// Called by: Movement. +// Inputs: The moving atom, target turf. +// Outputs: Boolean if can pass. +// Airflow and ZAS zones now uses CanZASPass() instead of this proc. +/atom/proc/CanPass(atom/movable/mover, turf/target) + return !density - return (!density || !height || air_group) +// Purpose: Determines if airflow is allowed between T and loc. +// Called by: Airflow. +// Inputs: The turf the airflow is from, which may not be the same as loc. is_zone is for conditionally disallowing merging. +// Outputs: Boolean if airflow can pass. +/atom/proc/CanZASPass(turf/T, is_zone) + switch(can_atmos_pass) + if(ATMOS_PASS_DENSITY) + return !density + else + return can_atmos_pass -/turf/CanPass(atom/movable/mover, turf/target, height=1.5,air_group=0) - if(!target) return 0 +/turf/can_atmos_pass = ATMOS_PASS_NO + +/turf/CanPass(atom/movable/mover, turf/target) + if(!target) return FALSE if(istype(mover)) // turf/Enter(...) will perform more advanced checks return !density - else // Now, doing more detailed checks for air movement and air group formation - if(target.blocks_air||blocks_air) - return 0 - - for(var/obj/obstacle in src) - if(!obstacle.CanPass(mover, target, height, air_group)) - return 0 - if(target != src) - for(var/obj/obstacle in target) - if(!obstacle.CanPass(mover, src, height, air_group)) - return 0 - - return 1 +/turf/CanZASPass(turf/T, is_zone) + if(T.blocks_air || src.blocks_air) + return FALSE + for(var/obj/obstacle in src) + if(!obstacle.CanZASPass(T, is_zone)) + return FALSE + if(T != src) + for(var/obj/obstacle in T) + if(!obstacle.CanZASPass(src, is_zone)) + return FALSE + return TRUE //Convenience function for atoms to update turfs they occupy /atom/movable/proc/update_nearby_tiles(need_rebuild) @@ -50,8 +62,7 @@ atom/proc/c_airblock(turf/other) #ifdef ZASDBG ASSERT(isturf(other)) #endif - return (AIR_BLOCKED*!CanPass(null, other, 0, 0))|(ZONE_BLOCKED*!CanPass(null, other, 1.5, 1)) - + return (AIR_BLOCKED*!CanZASPass(other, FALSE))|(ZONE_BLOCKED*!CanZASPass(other, TRUE)) turf/c_airblock(turf/other) #ifdef ZASDBG diff --git a/code/__datastructures/globals.dm b/code/__datastructures/globals.dm index 637af7f0fc..05d5a2d29b 100644 --- a/code/__datastructures/globals.dm +++ b/code/__datastructures/globals.dm @@ -36,3 +36,4 @@ #define GLOBAL_LIST(X) GLOBAL_RAW(/list/##X); GLOBAL_MANAGED(X, null) #define GLOBAL_DATUM(X, Typepath) GLOBAL_RAW(Typepath/##X); GLOBAL_MANAGED(X, null) + diff --git a/code/__defines/MC.dm b/code/__defines/MC.dm index ad03630666..6acc667f2d 100644 --- a/code/__defines/MC.dm +++ b/code/__defines/MC.dm @@ -1,15 +1,81 @@ -#define MC_TICK_CHECK ( ( TICK_USAGE > GLOB.CURRENT_TICKLIMIT || src.state != SS_RUNNING ) ? pause() : 0 ) - -// Used for splitting up your remaining time into phases, if you want to evenly divide it. -#define MC_SPLIT_TICK_INIT(phase_count) var/original_tick_limit = GLOB.CURRENT_TICKLIMIT; var/split_tick_phases = ##phase_count +#define MC_TICK_CHECK ( ( TICK_USAGE > Master.current_ticklimit || src.state != SS_RUNNING ) ? pause() : 0 ) +#define MC_SPLIT_TICK_INIT(phase_count) var/original_tick_limit = Master.current_ticklimit; var/split_tick_phases = ##phase_count #define MC_SPLIT_TICK \ - if(split_tick_phases > 1){\ - GLOB.CURRENT_TICKLIMIT = ((original_tick_limit - world.tick_usage) / split_tick_phases) + world.tick_usage;\ - --split_tick_phases;\ - } else {\ - GLOB.CURRENT_TICKLIMIT = original_tick_limit;\ - } + if(split_tick_phases > 1){\ + Master.current_ticklimit = ((original_tick_limit - TICK_USAGE) / split_tick_phases) + TICK_USAGE;\ + --split_tick_phases;\ + } else {\ + Master.current_ticklimit = original_tick_limit;\ + } + +// Used to smooth out costs to try and avoid oscillation. +#define MC_AVERAGE_FAST(average, current) (0.7 * (average) + 0.3 * (current)) +#define MC_AVERAGE(average, current) (0.8 * (average) + 0.2 * (current)) +#define MC_AVERAGE_SLOW(average, current) (0.9 * (average) + 0.1 * (current)) + +#define MC_AVG_FAST_UP_SLOW_DOWN(average, current) (average > current ? MC_AVERAGE_SLOW(average, current) : MC_AVERAGE_FAST(average, current)) +#define MC_AVG_SLOW_UP_FAST_DOWN(average, current) (average < current ? MC_AVERAGE_SLOW(average, current) : MC_AVERAGE_FAST(average, current)) + +#define NEW_SS_GLOBAL(varname) if(varname != src){if(istype(varname)){Recover();qdel(varname);}varname = src;} + +#define START_PROCESSING(Processor, Datum) if (!(Datum.datum_flags & DF_ISPROCESSING)) {Datum.datum_flags |= DF_ISPROCESSING;Processor.processing += Datum} +#define STOP_PROCESSING(Processor, Datum) Datum.datum_flags &= ~DF_ISPROCESSING;Processor.processing -= Datum + +//! SubSystem flags (Please design any new flags so that the default is off, to make adding flags to subsystems easier) + +/// subsystem does not initialize. +#define SS_NO_INIT 1 + +/** subsystem does not fire. */ +/// (like can_fire = 0, but keeps it from getting added to the processing subsystems list) +/// (Requires a MC restart to change) +#define SS_NO_FIRE 2 + +/** subsystem only runs on spare cpu (after all non-background subsystems have ran that tick) */ +/// SS_BACKGROUND has its own priority bracket +#define SS_BACKGROUND 4 + +/// subsystem does not tick check, and should not run unless there is enough time (or its running behind (unless background)) +#define SS_NO_TICK_CHECK 8 + +/** Treat wait as a tick count, not DS, run every wait ticks. */ +/// (also forces it to run first in the tick, above even SS_NO_TICK_CHECK subsystems) +/// (implies all runlevels because of how it works) +/// (overrides SS_BACKGROUND) +/// This is designed for basically anything that works as a mini-mc (like SStimer) +#define SS_TICKER 16 + +/** keep the subsystem's timing on point by firing early if it fired late last fire because of lag */ +/// ie: if a 20ds subsystem fires say 5 ds late due to lag or what not, its next fire would be in 15ds, not 20ds. +#define SS_KEEP_TIMING 32 + +/** Calculate its next fire after its fired. */ +/// (IE: if a 5ds wait SS takes 2ds to run, its next fire should be 5ds away, not 3ds like it normally would be) +/// This flag overrides SS_KEEP_TIMING +#define SS_POST_FIRE_TIMING 64 + +//! SUBSYSTEM STATES +#define SS_IDLE 0 /// aint doing shit. +#define SS_QUEUED 1 /// queued to run +#define SS_RUNNING 2 /// actively running +#define SS_PAUSED 3 /// paused by mc_tick_check +#define SS_SLEEPING 4 /// fire() slept. +#define SS_PAUSING 5 /// in the middle of pausing + +#define SUBSYSTEM_DEF(X) GLOBAL_REAL(SS##X, /datum/controller/subsystem/##X);\ +/datum/controller/subsystem/##X/New(){\ + NEW_SS_GLOBAL(SS##X);\ + PreInit();\ +}\ +/datum/controller/subsystem/##X + +#define PROCESSING_SUBSYSTEM_DEF(X) GLOBAL_REAL(SS##X, /datum/controller/subsystem/processing/##X);\ +/datum/controller/subsystem/processing/##X/New(){\ + NEW_SS_GLOBAL(SS##X);\ + PreInit();\ +}\ +/datum/controller/subsystem/processing/##X // Boilerplate code for multi-step processors. See machines.dm for example use. #define INTERNAL_PROCESS_STEP(this_step, initial_step, proc_to_call, cost_var, next_step)\ @@ -23,71 +89,3 @@ if(current_step == this_step || (initial_step && !resumed)) /* So we start at st resumed = 0;\ current_step = next_step;\ } - -// Used to smooth out costs to try and avoid oscillation. -#define MC_AVERAGE_FAST(average, current) (0.7 * (average) + 0.3 * (current)) -#define MC_AVERAGE(average, current) (0.8 * (average) + 0.2 * (current)) -#define MC_AVERAGE_SLOW(average, current) (0.9 * (average) + 0.1 * (current)) - -#define MC_AVG_FAST_UP_SLOW_DOWN(average, current) (average > current ? MC_AVERAGE_SLOW(average, current) : MC_AVERAGE_FAST(average, current)) -#define MC_AVG_SLOW_UP_FAST_DOWN(average, current) (average < current ? MC_AVERAGE_SLOW(average, current) : MC_AVERAGE_FAST(average, current)) - -#define NEW_SS_GLOBAL(varname) if(varname != src){if(istype(varname)){Recover();qdel(varname);}varname = src;} - -#define START_PROCESSING(Processor, Datum) if (!Datum.isprocessing) {Datum.isprocessing = 1;Processor.processing += Datum} -#define STOP_PROCESSING(Processor, Datum) Datum.isprocessing = 0;Processor.processing -= Datum - -//SubSystem flags (Please design any new flags so that the default is off, to make adding flags to subsystems easier) - -//subsystem does not initialize. -#define SS_NO_INIT 1 - -//subsystem does not fire. -// (like can_fire = 0, but keeps it from getting added to the processing subsystems list) -// (Requires a MC restart to change) -#define SS_NO_FIRE 2 - -//subsystem only runs on spare cpu (after all non-background subsystems have ran that tick) -// SS_BACKGROUND has its own priority bracket -#define SS_BACKGROUND 4 - -//subsystem does not tick check, and should not run unless there is enough time (or its running behind (unless background)) -#define SS_NO_TICK_CHECK 8 - -//Treat wait as a tick count, not DS, run every wait ticks. -// (also forces it to run first in the tick, above even SS_NO_TICK_CHECK subsystems) -// (implies all runlevels because of how it works) -// (overrides SS_BACKGROUND) -// This is designed for basically anything that works as a mini-mc (like SStimer) -#define SS_TICKER 16 - -//keep the subsystem's timing on point by firing early if it fired late last fire because of lag -// ie: if a 20ds subsystem fires say 5 ds late due to lag or what not, its next fire would be in 15ds, not 20ds. -#define SS_KEEP_TIMING 32 - -//Calculate its next fire after its fired. -// (IE: if a 5ds wait SS takes 2ds to run, its next fire should be 5ds away, not 3ds like it normally would be) -// This flag overrides SS_KEEP_TIMING -#define SS_POST_FIRE_TIMING 64 - -//SUBSYSTEM STATES -#define SS_IDLE 0 //aint doing shit. -#define SS_QUEUED 1 //queued to run -#define SS_RUNNING 2 //actively running -#define SS_PAUSED 3 //paused by mc_tick_check -#define SS_SLEEPING 4 //fire() slept. -#define SS_PAUSING 5 //in the middle of pausing - -// Standard way to define a global subsystem, keep boilerplate organized here! -#define SUBSYSTEM_DEF(X) GLOBAL_REAL(SS##X, /datum/controller/subsystem/##X);\ -/datum/controller/subsystem/##X/New(){\ - NEW_SS_GLOBAL(SS##X);\ - PreInit();\ -}\ -/datum/controller/subsystem/##X - #define PROCESSING_SUBSYSTEM_DEF(X) GLOBAL_REAL(SS##X, /datum/controller/subsystem/processing/##X);\ -/datum/controller/subsystem/processing/##X/New(){\ - NEW_SS_GLOBAL(SS##X);\ - PreInit();\ -}\ -/datum/controller/subsystem/processing/##X \ No newline at end of file diff --git a/code/__defines/_lists.dm b/code/__defines/_lists.dm new file mode 100644 index 0000000000..348aafccef --- /dev/null +++ b/code/__defines/_lists.dm @@ -0,0 +1,56 @@ +// Helper macros to aid in optimizing lazy instantiation of lists. +// All of these are null-safe, you can use them without knowing if the list var is initialized yet + +//Picks from the list, with some safeties, and returns the "default" arg if it fails +#define DEFAULTPICK(L, default) ((istype(L, /list) && L:len) ? pick(L) : default) +// Ensures L is initailized after this point +#define LAZYINITLIST(L) if (!L) L = list() +// Sets a L back to null iff it is empty +#define UNSETEMPTY(L) if (L && !length(L)) L = null +// Removes I from list L, and sets I to null if it is now empty +#define LAZYREMOVE(L, I) if(L) { L -= I; if(!length(L)) { L = null; } } +// Adds I to L, initalizing I if necessary +#define LAZYADD(L, I) if(!L) { L = list(); } L += I; +#define LAZYOR(L, I) if(!L) { L = list(); } L |= I; +#define LAZYFIND(L, V) L ? L.Find(V) : 0 +// Reads I from L safely - Works with both associative and traditional lists. +#define LAZYACCESS(L, I) (L ? (isnum(I) ? (I > 0 && I <= length(L) ? L[I] : null) : L[I]) : null) +// Turns LAZYINITLIST(L) L[K] = V into ... for associated lists +#define LAZYSET(L, K, V) if(!L) { L = list(); } L[K] = V; +// Reads the length of L, returning 0 if null +#define LAZYLEN(L) length(L) +// Null-safe L.Cut() +#define LAZYCLEARLIST(L) if(L) L.Cut() +// Reads L or an empty list if L is not a list. Note: Does NOT assign, L may be an expression. +#define SANITIZE_LIST(L) ( islist(L) ? L : list() ) +#define reverseList(L) reverseRange(L.Copy()) + +// binary search sorted insert +// IN: Object to be inserted +// LIST: List to insert object into +// TYPECONT: The typepath of the contents of the list +// COMPARE: The variable on the objects to compare +#define BINARY_INSERT(IN, LIST, TYPECONT, COMPARE) \ + var/__BIN_CTTL = length(LIST);\ + if(!__BIN_CTTL) {\ + LIST += IN;\ + } else {\ + var/__BIN_LEFT = 1;\ + var/__BIN_RIGHT = __BIN_CTTL;\ + var/__BIN_MID = (__BIN_LEFT + __BIN_RIGHT) >> 1;\ + var/##TYPECONT/__BIN_ITEM;\ + while(__BIN_LEFT < __BIN_RIGHT) {\ + __BIN_ITEM = LIST[__BIN_MID];\ + if(__BIN_ITEM.##COMPARE <= IN.##COMPARE) {\ + __BIN_LEFT = __BIN_MID + 1;\ + } else {\ + __BIN_RIGHT = __BIN_MID;\ + };\ + __BIN_MID = (__BIN_LEFT + __BIN_RIGHT) >> 1;\ + };\ + __BIN_ITEM = LIST[__BIN_MID];\ + __BIN_MID = __BIN_ITEM.##COMPARE > IN.##COMPARE ? __BIN_MID : __BIN_MID + 1;\ + LIST.Insert(__BIN_MID, IN);\ + } + +#define islist(L) istype(L, /list) diff --git a/code/__defines/_planes+layers.dm b/code/__defines/_planes+layers.dm index 4d258cd91f..3bee841881 100644 --- a/code/__defines/_planes+layers.dm +++ b/code/__defines/_planes+layers.dm @@ -58,23 +58,28 @@ What is the naming convention for planes or layers? #define ATMOS_LAYER 2.4 // Pipe-like atmos machinery that goes on the floor, like filters. #define ABOVE_UTILITY 2.5 // Above stuff like pipes and wires #define TURF_PLANE -45 // Turfs themselves, most flooring - #define ABOVE_TURF_LAYER 2.1 // Snow and wallmounted/floormounted equipment + #define WATER_FLOOR_LAYER 2.0 // The 'bottom' of water tiles. + #define UNDERWATER_LAYER 2.5 // Anything on this layer will render under the water layer. + #define WATER_LAYER 3.0 // Layer for water overlays. + #define ABOVE_TURF_LAYER 3.1 // Snow and wallmounted/floormounted equipment #define DECAL_PLANE -44 // Permanent decals #define DIRTY_PLANE -43 // Nonpermanent decals #define BLOOD_PLANE -42 // Blood is really dirty, but we can do special stuff if we separate it // Obj planes #define OBJ_PLANE -35 + #define STAIRS_LAYER 2.5 // Layer for stairs #define HIDING_LAYER 2.6 // Layer at which mobs hide to be under things like tables #define DOOR_OPEN_LAYER 2.7 // Under all objects if opened. 2.7 due to tables being at 2.6 #define TABLE_LAYER 2.8 // Just under stuff that wants to be slightly below common objects. + #define PROJECTILE_HIT_THRESHOLD_LAYER 2.8 #define UNDER_JUNK_LAYER 2.9 // Things that want to be slightly below common objects // Turf/Obj layer boundary #define ABOVE_JUNK_LAYER 3.1 // Things that want to be slightly above common objects #define DOOR_CLOSED_LAYER 3.1 // Doors when closed #define WINDOW_LAYER 3.2 // Windows - #define ABOVE_WINDOW_LAYER 3.25 //Above full tile windows so wall items are clickable #define ON_WINDOW_LAYER 3.3 // Ontop of a window + #define ABOVE_WINDOW_LAYER 3.4 //Above full tile windows so wall items are clickable // Mob planes #define MOB_PLANE -25 diff --git a/code/__defines/_tick.dm b/code/__defines/_tick.dm index 7ca3fb23a2..54ac7d398d 100644 --- a/code/__defines/_tick.dm +++ b/code/__defines/_tick.dm @@ -1,9 +1,15 @@ + #define TICK_LIMIT_RUNNING 80 #define TICK_LIMIT_TO_RUN 70 #define TICK_LIMIT_MC 70 #define TICK_LIMIT_MC_INIT_DEFAULT 98 -#define TICK_CHECK ( TICK_USAGE > GLOB.CURRENT_TICKLIMIT ) -#define CHECK_TICK if TICK_CHECK stoplag() - #define TICK_USAGE world.tick_usage + +#define TICK_CHECK ( TICK_USAGE > Master.current_ticklimit ) +#define CHECK_TICK ( TICK_CHECK ? stoplag() : 0 ) + +#define TICK_CHECK_HIGH_PRIORITY ( TICK_USAGE > 95 ) +#define CHECK_TICK_HIGH_PRIORITY ( TICK_CHECK_HIGH_PRIORITY? stoplag() : 0 ) + +#define UNTIL(X) while(!(X)) stoplag() \ No newline at end of file diff --git a/code/__defines/atmos.dm b/code/__defines/atmos.dm index 13964a6f80..66348344f2 100644 --- a/code/__defines/atmos.dm +++ b/code/__defines/atmos.dm @@ -92,4 +92,10 @@ #define ATMOSTANK_OXYGEN 40000 // O2 is also important for airmix, but not as much as N2 as it's only 21% of it. #define ATMOSTANK_CO2 25000 // CO2 and PH are not critically important for station, only for toxins and alternative coolants, no need to store a lot of those. #define ATMOSTANK_PHORON 25000 -#define ATMOSTANK_NITROUSOXIDE 10000 // N2O doesn't have a real useful use, i guess it's on station just to allow refilling of sec's riot control canisters? \ No newline at end of file +#define ATMOSTANK_NITROUSOXIDE 10000 // N2O doesn't have a real useful use, i guess it's on station just to allow refilling of sec's riot control canisters? + +// Used for quickly making certain things allow airflow or not. +// More complicated, conditional airflow should override CanZASPass(). +#define ATMOS_PASS_YES 1 +#define ATMOS_PASS_NO 0 +#define ATMOS_PASS_DENSITY -1 // Just checks density. \ No newline at end of file diff --git a/code/__defines/belly_modes_vr.dm b/code/__defines/belly_modes_vr.dm index e6f072ca0c..cd444abc18 100644 --- a/code/__defines/belly_modes_vr.dm +++ b/code/__defines/belly_modes_vr.dm @@ -30,10 +30,15 @@ //Addon mode flags #define DM_FLAG_NUMBING 0x1 -#define DM_FLAG_ITEMWEAK 0x2 -#define DM_FLAG_STRIPPING 0x4 +#define DM_FLAG_STRIPPING 0x2 +//#define DM_FLAG_ITEMWEAK 0x4 -// Stance for hostile mobs to be in while devouring someone. +//Item related modes +#define IM_HOLD "Hold" +#define IM_DIGEST_FOOD "Digest (Food Only)" +#define IM_DIGEST "Digest" + +//Stance for hostile mobs to be in while devouring someone. #define HOSTILE_STANCE_EATING 99 // Defines for weight system diff --git a/code/__defines/chemistry.dm b/code/__defines/chemistry.dm index 00c7ab061d..399c7e879b 100644 --- a/code/__defines/chemistry.dm +++ b/code/__defines/chemistry.dm @@ -25,6 +25,7 @@ #define IS_XENOS 6 #define IS_TESHARI 7 #define IS_SLIME 8 +#define IS_ZADDAT 9 #define CE_STABLE "stable" // Inaprovaline #define CE_ANTIBIOTIC "antibiotic" // Antibiotics diff --git a/code/__defines/chemistry_vr.dm b/code/__defines/chemistry_vr.dm index 7c29bced61..094bfc2139 100644 --- a/code/__defines/chemistry_vr.dm +++ b/code/__defines/chemistry_vr.dm @@ -1,4 +1,2 @@ // More for our custom races -#define IS_SERGAL 10 -#define IS_AKULA 11 -#define IS_NEVREAN 12 \ No newline at end of file +#define IS_CHIMERA 12 \ No newline at end of file diff --git a/code/__defines/damage_organs.dm b/code/__defines/damage_organs.dm index 7bb32fa75c..285b0b341e 100644 --- a/code/__defines/damage_organs.dm +++ b/code/__defines/damage_organs.dm @@ -7,6 +7,7 @@ #define CLONE "clone" #define HALLOSS "halloss" #define ELECTROCUTE "electrocute" +#define BIOACID "bioacid" #define CUT "cut" #define BRUISE "bruise" diff --git a/code/__defines/flags.dm b/code/__defines/flags.dm new file mode 100644 index 0000000000..64782715d3 --- /dev/null +++ b/code/__defines/flags.dm @@ -0,0 +1,47 @@ +//MARK ALL FLAG CHANGES IN _globals/bitfields.dm! +//All flags should go in here if possible. +#define ALL (~0) //For convenience. +#define NONE 0 + +//for convenience +#define ENABLE_BITFIELD(variable, flag) (variable |= (flag)) +#define DISABLE_BITFIELD(variable, flag) (variable &= ~(flag)) +#define CHECK_BITFIELD(variable, flag) (variable & (flag)) + +//check if all bitflags specified are present +#define CHECK_MULTIPLE_BITFIELDS(flagvar, flags) ((flagvar & (flags)) == flags) + +GLOBAL_LIST_INIT(bitflags, list(1, 2, 4, 8, 16, 32, 64, 128, 256, 512, 1024, 2048, 4096, 8192, 16384, 32768)) + +// datum_flags +#define DF_VAR_EDITED (1<<0) +#define DF_ISPROCESSING (1<<1) +#define DF_USE_TAG (1<<2) + +// /atom/movable movement_type +#define UNSTOPPABLE (1<<0) //Can not be stopped from moving from Cross(), CanPass(), or Uncross() failing. Still bumps everything it passes through, though. + +// Flags bitmasks. - Used in /atom/var/flags +#define NOBLUDGEON (1<<0) // When an item has this it produces no "X has been hit by Y with Z" message with the default handler. +#define NOCONDUCT (1<<1) // Conducts electricity. (metal etc.) +#define ON_BORDER (1<<2) // Item has priority to check when entering or leaving. +#define NOBLOODY (1<<3) // Used for items if they don't want to get a blood overlay. +#define OPENCONTAINER (1<<4) // Is an open container for chemistry purposes. +#define PHORONGUARD (1<<5) // Does not get contaminated by phoron. +#define NOREACT (1<<6) // Reagents don't react inside this container. +#define PROXMOVE (1<<7)// Does this object require proximity checking in Enter()? +#define OVERLAY_QUEUED (1<<8)// Atom queued to SSoverlay for COMPILE_OVERLAYS + +//Flags for items (equipment) - Used in /obj/item/var/item_flags +#define THICKMATERIAL (1<<0) // Prevents syringes, parapens and hyposprays if equipped to slot_suit or slot_head. +#define AIRTIGHT (1<<1) // Functions with internals. +#define NOSLIP (1<<2) // Prevents from slipping on wet floors, in space, etc. +#define BLOCK_GAS_SMOKE_EFFECT (1<<3) // Blocks the effect that chemical clouds would have on a mob -- glasses, mask and helmets ONLY! (NOTE: flag shared with ONESIZEFITSALL) +#define FLEXIBLEMATERIAL (1<<4) // At the moment, masks with this flag will not prevent eating even if they are covering your face. + +// Flags for pass_flags. - Used in /atom/var/pass_flags +#define PASSTABLE (1<<0) +#define PASSGLASS (1<<1) +#define PASSGRILLE (1<<2) +#define PASSBLOB (1<<3) +#define PASSMOB (1<<4) diff --git a/code/__defines/gamemode.dm b/code/__defines/gamemode.dm index 5327931608..bed21dc482 100644 --- a/code/__defines/gamemode.dm +++ b/code/__defines/gamemode.dm @@ -5,9 +5,12 @@ // Security levels. #define SEC_LEVEL_GREEN 0 -#define SEC_LEVEL_BLUE 1 -#define SEC_LEVEL_RED 2 -#define SEC_LEVEL_DELTA 3 +#define SEC_LEVEL_YELLOW 1 +#define SEC_LEVEL_VIOLET 2 +#define SEC_LEVEL_ORANGE 3 +#define SEC_LEVEL_BLUE 4 +#define SEC_LEVEL_RED 5 +#define SEC_LEVEL_DELTA 6 #define BE_TRAITOR 0x1 #define BE_OPERATIVE 0x2 @@ -45,8 +48,6 @@ var/list/be_special_flags = list( "pAI" = BE_PAI ) -#define IS_MODE_COMPILED(MODE) (ispath(text2path("/datum/game_mode/"+(MODE)))) - // Antagonist datum flags. #define ANTAG_OVERRIDE_JOB 0x1 // Assigned job is set to MODE when spawning. diff --git a/code/__defines/is_helpers.dm b/code/__defines/is_helpers.dm new file mode 100644 index 0000000000..ed4a0dd10f --- /dev/null +++ b/code/__defines/is_helpers.dm @@ -0,0 +1,53 @@ + +#define isdatum(D) istype(D, /datum) +#define isweakref(A) istype(A, /weakref) + +#define islist(D) istype(D, /list) + +//--------------- +#define isatom(D) istype(D, /atom) + +//--------------- +//#define isobj(D) istype(D, /obj) //Built in + +#define isitem(D) istype(D, /obj/item) + +#define isairlock(A) istype(A, /obj/machinery/door/airlock) + +#define isorgan(A) istype(A, /obj/item/organ/external) + +//--------------- +//#define isarea(D) istype(D, /area) //Built in + +//--------------- +//#define ismob(D) istype(D, /mob) //Built in +#define isliving(A) istype(A, /mob/living) + +#define isobserver(A) istype(A, /mob/observer/dead) +#define isEye(A) istype(A, /mob/observer/eye) + +#define isnewplayer(A) istype(A, /mob/new_player) + +#define isanimal(A) istype(A, /mob/living/simple_mob) +#define ismouse(A) istype(A, /mob/living/simple_mob/animal/passive/mouse) +#define iscorgi(A) istype(A, /mob/living/simple_mob/animal/passive/dog/corgi) +#define isslime(A) istype(A, /mob/living/simple_mob/slime) +#define isxeno(A) istype(A, /mob/living/simple_mob/animal/space/alien) + +#define iscarbon(A) istype(A, /mob/living/carbon) +#define isalien(A) istype(A, /mob/living/carbon/alien) +#define isbrain(A) istype(A, /mob/living/carbon/brain) +#define ishuman(A) istype(A, /mob/living/carbon/human) + +#define issilicon(A) istype(A, /mob/living/silicon) +#define isAI(A) istype(A, /mob/living/silicon/ai) +#define isrobot(A) istype(A, /mob/living/silicon/robot) +#define ispAI(A) istype(A, /mob/living/silicon/pai) + +#define isbot(A) istype(A, /mob/living/bot) + +#define isvoice(A) istype(A, /mob/living/voice) + +//--------------- +//#define isturf(D) istype(D, /turf) //Built in +#define isopenspace(A) istype(A, /turf/simulated/open) diff --git a/code/__defines/items_clothing.dm b/code/__defines/items_clothing.dm index 4b13ccf55f..c67e598fb0 100644 --- a/code/__defines/items_clothing.dm +++ b/code/__defines/items_clothing.dm @@ -41,31 +41,6 @@ #define ACCESSORY_SLOT_TORSO (ACCESSORY_SLOT_UTILITY|ACCESSORY_SLOT_WEAPON) -// Flags bitmasks. - Used in /atom/var/flags -#define NOBLUDGEON 0x1 // When an item has this it produces no "X has been hit by Y with Z" message with the default handler. -#define CONDUCT 0x2 // Conducts electricity. (metal etc.) -#define ON_BORDER 0x4 // Item has priority to check when entering or leaving. -#define NOBLOODY 0x8 // Used for items if they don't want to get a blood overlay. -#define OPENCONTAINER 0x10 // Is an open container for chemistry purposes. -#define PHORONGUARD 0x20 // Does not get contaminated by phoron. -#define NOREACT 0x40 // Reagents don't react inside this container. -#define PROXMOVE 0x80 // Does this object require proximity checking in Enter()? -#define OVERLAY_QUEUED 0x100 // Atom queued to SSoverlay for COMPILE_OVERLAYS - -//Flags for items (equipment) - Used in /obj/item/var/item_flags -#define THICKMATERIAL 0x1 // Prevents syringes, parapens and hyposprays if equipped to slot_suit or slot_head. -#define STOPPRESSUREDAMAGE 0x2 // Counts towards pressure protection. Note that like temperature protection, body_parts_covered is considered here as well. -#define AIRTIGHT 0x4 // Functions with internals. -#define NOSLIP 0x8 // Prevents from slipping on wet floors, in space, etc. -#define BLOCK_GAS_SMOKE_EFFECT 0x10 // Blocks the effect that chemical clouds would have on a mob -- glasses, mask and helmets ONLY! (NOTE: flag shared with ONESIZEFITSALL) -#define FLEXIBLEMATERIAL 0x20 // At the moment, masks with this flag will not prevent eating even if they are covering your face. - -// Flags for pass_flags. - Used in /atom/var/pass_flags -#define PASSTABLE 0x1 -#define PASSGLASS 0x2 -#define PASSGRILLE 0x4 -#define PASSBLOB 0x8 - // Bitmasks for the /obj/item/var/flags_inv variable. These determine when a piece of clothing hides another, i.e. a helmet hiding glasses. // WARNING: The following flags apply only to the external suit! #define HIDEGLOVES 0x1 diff --git a/code/__defines/machinery.dm b/code/__defines/machinery.dm index d77b5cf297..95d4929acb 100644 --- a/code/__defines/machinery.dm +++ b/code/__defines/machinery.dm @@ -106,26 +106,15 @@ var/list/restricted_camera_networks = list(NETWORK_ERT,NETWORK_MERCENARY,"Secret #define ATMOS_DEFAULT_VOLUME_MIXER 200 // L. #define ATMOS_DEFAULT_VOLUME_PIPE 70 // L. +//wIP - PORT ALL OF THESE TO SUBSYSTEMS AND GET RID OF THE WHOLE LIST PROCESS THING // Fancy-pants START/STOP_PROCESSING() macros that lets us custom define what the list is. #define START_PROCESSING_IN_LIST(DATUM, LIST) \ -if (DATUM.is_processing) {\ - if(DATUM.is_processing != #LIST)\ - {\ - crash_with("Failed to start processing. [log_info_line(DATUM)] is already being processed by [DATUM.is_processing] but queue attempt occured on [#LIST]."); \ - }\ -} else {\ - DATUM.is_processing = #LIST;\ +if (!(DATUM.datum_flags & DF_ISPROCESSING)) {\ LIST += DATUM;\ + DATUM.datum_flags |= DF_ISPROCESSING\ } -#define STOP_PROCESSING_IN_LIST(DATUM, LIST) \ -if(DATUM.is_processing) {\ - if(LIST.Remove(DATUM)) {\ - DATUM.is_processing = null;\ - } else {\ - crash_with("Failed to stop processing. [log_info_line(DATUM)] is being processed by [is_processing] and not found in SSmachines.[#LIST]"); \ - }\ -} +#define STOP_PROCESSING_IN_LIST(DATUM, LIST) LIST.Remove(DATUM);DATUM.datum_flags &= ~DF_ISPROCESSING // Note - I would prefer these be defined machines.dm, but some are used prior in file order. ~Leshana #define START_MACHINE_PROCESSING(Datum) START_PROCESSING_IN_LIST(Datum, global.processing_machines) diff --git a/code/__defines/math.dm b/code/__defines/math.dm index 3d64ba6c81..88c459ba78 100644 --- a/code/__defines/math.dm +++ b/code/__defines/math.dm @@ -1,18 +1,228 @@ +// Credits to Nickr5 for the useful procs I've taken from his library resource. +// This file is quadruple wrapped for your pleasure +// ( + +#define NUM_E 2.71828183 + +#define M_PI (3.14159265) +#define INFINITY (1.#INF) //closer then enough + +#define SHORT_REAL_LIMIT 16777216 + //"fancy" math for calculating time in ms from tick_usage percentage and the length of ticks //percent_of_tick_used * (ticklag * 100(to convert to ms)) / 100(percent ratio) //collapsed to percent_of_tick_used * tick_lag #define TICK_DELTA_TO_MS(percent_of_tick_used) ((percent_of_tick_used) * world.tick_lag) -#define TICK_USAGE_TO_MS(starting_tickusage) (TICK_DELTA_TO_MS(TICK_USAGE-starting_tickusage)) +#define TICK_USAGE_TO_MS(starting_tickusage) (TICK_DELTA_TO_MS(world.tick_usage - starting_tickusage)) + +#define PERCENT(val) (round((val)*100, 0.1)) +#define CLAMP01(x) (CLAMP(x, 0, 1)) //time of day but automatically adjusts to the server going into the next day within the same round. //for when you need a reliable time number that doesn't depend on byond time. #define REALTIMEOFDAY (world.timeofday + (MIDNIGHT_ROLLOVER * MIDNIGHT_ROLLOVER_CHECK)) #define MIDNIGHT_ROLLOVER_CHECK ( rollovercheck_last_timeofday != world.timeofday ? update_midnight_rollover() : midnight_rollovers ) -#define SHORT_REAL_LIMIT 16777216 // 2^24 - Maximum integer that can be exactly represented in a float (BYOND num var) +#define SIGN(x) ( (x)!=0 ? (x) / abs(x) : 0 ) #define CEILING(x, y) ( -round(-(x) / (y)) * (y) ) + // round() acts like floor(x, 1) by default but can't handle other values #define FLOOR(x, y) ( round((x) / (y)) * (y) ) -// Check if a BYOND dir var is a cardinal direction (power of two) + +#define CLAMP(CLVALUE,CLMIN,CLMAX) ( max( (CLMIN), min((CLVALUE), (CLMAX)) ) ) + +// Similar to clamp but the bottom rolls around to the top and vice versa. min is inclusive, max is exclusive +#define WRAP(val, min, max) ( min == max ? min : (val) - (round(((val) - (min))/((max) - (min))) * ((max) - (min))) ) + +// Real modulus that handles decimals +#define MODULUS(x, y) ( (x) - (y) * round((x) / (y)) ) + +// Tangent +#define TAN(x) (sin(x) / cos(x)) + +// Cotangent +#define COT(x) (1 / TAN(x)) + +// Secant +#define SEC(x) (1 / cos(x)) + +// Cosecant +#define CSC(x) (1 / sin(x)) + +#define ATAN2(x, y) ( !(x) && !(y) ? 0 : (y) >= 0 ? arccos((x) / sqrt((x)*(x) + (y)*(y))) : -arccos((x) / sqrt((x)*(x) + (y)*(y))) ) + +// Greatest Common Divisor - Euclid's algorithm +/proc/GCD(a, b) + return b ? GCD(b, (a) % (b)) : a + +// Least Common Multiple +#define LCM(a, b) (abs(a) / GCD(a, b) * abs(b)) + #define IS_CARDINAL(x) ((x & (x - 1)) == 0) + +#define INVERSE(x) ( 1/(x) ) + +// Used for calculating the radioactive strength falloff +#define INVERSE_SQUARE(initial_strength,cur_distance,initial_distance) ( (initial_strength)*((initial_distance)**2/(cur_distance)**2) ) + +#define ISABOUTEQUAL(a, b, deviation) (deviation ? abs((a) - (b)) <= deviation : abs((a) - (b)) <= 0.1) + +#define ISEVEN(x) (x % 2 == 0) + +#define ISODD(x) (x % 2 != 0) + +// Returns true if val is from min to max, inclusive. +#define ISINRANGE(val, min, max) (min <= val && val <= max) + +// Same as above, exclusive. +#define ISINRANGE_EX(val, min, max) (min < val && val > max) + +#define ISINTEGER(x) (round(x) == x) + +#define ISMULTIPLE(x, y) ((x) % (y) == 0) + +// Performs a linear interpolation between a and b. +// Note that amount=0 returns a, amount=1 returns b, and +// amount=0.5 returns the mean of a and b. +#define LERP(a, b, amount) ( amount ? ((a) + ((b) - (a)) * (amount)) : a ) + +// Returns the nth root of x. +#define ROOT(n, x) ((x) ** (1 / (n))) + +/proc/Mean(...) + var/sum = 0 + for(var/val in args) + sum += val + return sum / args.len + +// The quadratic formula. Returns a list with the solutions, or an empty list +// if they are imaginary. +/proc/SolveQuadratic(a, b, c) + ASSERT(a) + . = list() + var/d = b*b - 4 * a * c + var/bottom = 2 * a + // Return if the roots are imaginary. + if(d < 0) + return + var/root = sqrt(d) + . += (-b + root) / bottom + // If discriminant == 0, there would be two roots at the same position. + if(!d) + return + . += (-b - root) / bottom + + // 180 / Pi ~ 57.2957795 +#define TODEGREES(radians) ((radians) * 57.2957795) + + // Pi / 180 ~ 0.0174532925 +#define TORADIANS(degrees) ((degrees) * 0.0174532925) + +// Will filter out extra rotations and negative rotations +// E.g: 540 becomes 180. -180 becomes 180. +#define SIMPLIFY_DEGREES(degrees) (MODULUS((degrees), 360)) + +#define GET_ANGLE_OF_INCIDENCE(face, input) (MODULUS((face) - (input), 360)) + +//Finds the shortest angle that angle A has to change to get to angle B. Aka, whether to move clock or counterclockwise. +/proc/closer_angle_difference(a, b) + if(!isnum(a) || !isnum(b)) + return + a = SIMPLIFY_DEGREES(a) + b = SIMPLIFY_DEGREES(b) + var/inc = b - a + if(inc < 0) + inc += 360 + var/dec = a - b + if(dec < 0) + dec += 360 + . = inc > dec? -dec : inc + +//A logarithm that converts an integer to a number scaled between 0 and 1. +//Currently, this is used for hydroponics-produce sprite transforming, but could be useful for other transform functions. +#define TRANSFORM_USING_VARIABLE(input, max) ( sin((90*(input))/(max))**2 ) + +//converts a uniform distributed random number into a normal distributed one +//since this method produces two random numbers, one is saved for subsequent calls +//(making the cost negligble for every second call) +//This will return +/- decimals, situated about mean with standard deviation stddev +//68% chance that the number is within 1stddev +//95% chance that the number is within 2stddev +//98% chance that the number is within 3stddev...etc +#define ACCURACY 10000 +/proc/gaussian(mean, stddev) + var/static/gaussian_next + var/R1;var/R2;var/working + if(gaussian_next != null) + R1 = gaussian_next + gaussian_next = null + else + do + R1 = rand(-ACCURACY,ACCURACY)/ACCURACY + R2 = rand(-ACCURACY,ACCURACY)/ACCURACY + working = R1*R1 + R2*R2 + while(working >= 1 || working==0) + working = sqrt(-2 * log(working) / working) + R1 *= working + gaussian_next = R2 * working + return (mean + stddev * R1) +#undef ACCURACY + +/proc/get_turf_in_angle(angle, turf/starting, increments) + var/pixel_x = 0 + var/pixel_y = 0 + for(var/i in 1 to increments) + pixel_x += sin(angle)+16*sin(angle)*2 + pixel_y += cos(angle)+16*cos(angle)*2 + var/new_x = starting.x + var/new_y = starting.y + while(pixel_x > 16) + pixel_x -= 32 + new_x++ + while(pixel_x < -16) + pixel_x += 32 + new_x-- + while(pixel_y > 16) + pixel_y -= 32 + new_y++ + while(pixel_y < -16) + pixel_y += 32 + new_y-- + new_x = CLAMP(new_x, 0, world.maxx) + new_y = CLAMP(new_y, 0, world.maxy) + return locate(new_x, new_y, starting.z) + +// Returns a list where [1] is all x values and [2] is all y values that overlap between the given pair of rectangles +/proc/get_overlap(x1, y1, x2, y2, x3, y3, x4, y4) + var/list/region_x1 = list() + var/list/region_y1 = list() + var/list/region_x2 = list() + var/list/region_y2 = list() + + // These loops create loops filled with x/y values that the boundaries inhabit + // ex: list(5, 6, 7, 8, 9) + for(var/i in min(x1, x2) to max(x1, x2)) + region_x1["[i]"] = TRUE + for(var/i in min(y1, y2) to max(y1, y2)) + region_y1["[i]"] = TRUE + for(var/i in min(x3, x4) to max(x3, x4)) + region_x2["[i]"] = TRUE + for(var/i in min(y3, y4) to max(y3, y4)) + region_y2["[i]"] = TRUE + + return list(region_x1 & region_x2, region_y1 & region_y2) + +// ) + +#define RAND_F(LOW, HIGH) (rand()*(HIGH-LOW) + LOW) + +#define SQUARE(x) (x*x) + +//Vector Algebra +#define SQUAREDNORM(x, y) (x*x+y*y) +#define NORM(x, y) (sqrt(SQUAREDNORM(x,y))) +#define ISPOWEROFTWO(x) ((x & (x - 1)) == 0) +#define ROUNDUPTOPOWEROFTWO(x) (2 ** -round(-log(2,x))) + +#define DEFAULT(a, b) (a? a : b) diff --git a/code/__defines/math_physics.dm b/code/__defines/math_physics.dm index da1c2aebd1..90950d0ca0 100644 --- a/code/__defines/math_physics.dm +++ b/code/__defines/math_physics.dm @@ -1,10 +1,13 @@ // Math constants. -#define M_PI 3.14159265 - #define R_IDEAL_GAS_EQUATION 8.31 // kPa*L/(K*mol). #define ONE_ATMOSPHERE 101.325 // kPa. #define IDEAL_GAS_ENTROPY_CONSTANT 1164 // (mol^3 * s^3) / (kg^3 * L). +#define T0C 273.15 // 0.0 degrees celcius +#define T20C 293.15 // 20.0 degrees celcius +#define TCMB 2.7 // -270.3 degrees celcius +#define TN60C 213.15 // -60 degrees celcius + // Radiation constants. #define STEFAN_BOLTZMANN_CONSTANT 5.6704e-8 // W/(m^2*K^4). #define COSMIC_RADIATION_TEMPERATURE 3.15 // K. @@ -15,18 +18,7 @@ #define RADIATOR_EXPOSED_SURFACE_AREA_RATIO 0.04 // (3 cm + 100 cm * sin(3deg))/(2*(3+100 cm)). Unitless ratio. #define HUMAN_EXPOSED_SURFACE_AREA 5.2 //m^2, surface area of 1.7m (H) x 0.46m (D) cylinder -#define T0C 273.15 // 0.0 degrees celcius -#define T20C 293.15 // 20.0 degrees celcius -#define TCMB 2.7 // -270.3 degrees celcius -#define TN60C 213.15 // -60 degrees celcius - -#define CLAMP01(x) max(0, min(1, x)) #define QUANTIZE(variable) (round(variable,0.0001)) -#define INFINITY 1.#INF - -#define TICKS_IN_DAY 24*60*60*10 -#define TICKS_IN_SECOND 10 - -#define SIMPLE_SIGN(X) ((X) < 0 ? -1 : 1) -#define SIGN(X) ((X) ? SIMPLE_SIGN(X) : 0) +#define TICKS_IN_DAY (TICKS_IN_SECOND * 60 * 60 * 24) +#define TICKS_IN_SECOND (world.fps) diff --git a/code/__defines/misc.dm b/code/__defines/misc.dm index aa334224ad..0e3234ed83 100644 --- a/code/__defines/misc.dm +++ b/code/__defines/misc.dm @@ -258,7 +258,7 @@ // If the GLOB system is ever ported, you can change this macro in one place and have less work to do than you otherwise would. #define GLOBAL_LIST_BOILERPLATE(LIST_NAME, PATH)\ var/global/list/##LIST_NAME = list();\ -##PATH/initialize(mapload, ...)\ +##PATH/Initialize(mapload, ...)\ {\ ##LIST_NAME += src;\ return ..();\ @@ -290,6 +290,11 @@ var/global/list/##LIST_NAME = list();\ #define IS_WIRECUTTER "wirecutter" #define IS_WRENCH "wrench" + +// Diagonal movement +#define FIRST_DIAG_STEP 1 +#define SECOND_DIAG_STEP 2 + // RCD modes. Used on the RCD, and gets passed to an object's rcd_act() when an RCD is used on it, to determine what happens. #define RCD_FLOORWALL "Floor / Wall" // Builds plating on space/ground/open tiles. Builds a wall when on floors. Finishes walls when used on girders. #define RCD_AIRLOCK "Airlock" // Builds an airlock on the tile if one isn't already there. @@ -300,6 +305,11 @@ var/global/list/##LIST_NAME = list();\ #define RCD_VALUE_DELAY "delay" #define RCD_VALUE_COST "cost" - #define RCD_SHEETS_PER_MATTER_UNIT 4 // Each physical material sheet is worth four matter units. -#define RCD_MAX_CAPACITY 30 * RCD_SHEETS_PER_MATTER_UNIT \ No newline at end of file +#define RCD_MAX_CAPACITY 30 * RCD_SHEETS_PER_MATTER_UNIT + +// Radiation 'levels'. Used for the geiger counter, for visuals and sound. They are in different files so this goes here. +#define RAD_LEVEL_LOW 0.01 // Around the level at which radiation starts to become harmful +#define RAD_LEVEL_MODERATE 10 +#define RAD_LEVEL_HIGH 25 +#define RAD_LEVEL_VERY_HIGH 50 diff --git a/code/__defines/misc_vr.dm b/code/__defines/misc_vr.dm index 600bf5be2b..23910771f0 100644 --- a/code/__defines/misc_vr.dm +++ b/code/__defines/misc_vr.dm @@ -21,9 +21,9 @@ #define MAX_SPECIES_TRAITS 5 // Xenochimera thing mostly -#define REVIVING_NOW 1 -#define REVIVING_DONE 2 -#define REVIVING_COOLDOWN 3 +#define REVIVING_NOW -1 +#define REVIVING_DONE 0 +#define REVIVING_READY 1 // Resleeving Mind Record Status #define MR_NORMAL 0 diff --git a/code/__defines/mobs.dm b/code/__defines/mobs.dm index 679962b210..51039af253 100644 --- a/code/__defines/mobs.dm +++ b/code/__defines/mobs.dm @@ -27,6 +27,9 @@ #define BORGXRAY 0x4 #define BORGMATERIAL 8 +#define STANCE_ATTACK 11 // Backwards compatability +#define STANCE_ATTACKING 12 // Ditto +/* #define STANCE_IDLE 1 // Looking for targets if hostile. Does idle wandering. #define STANCE_ALERT 2 // Bears #define STANCE_ATTACK 3 // Attempting to get into attack position @@ -34,6 +37,20 @@ #define STANCE_TIRED 5 // Bears #define STANCE_FOLLOW 6 // Following somone #define STANCE_BUSY 7 // Do nothing on life ticks (Other code is running) +*/ +#define STANCE_SLEEP 0 // Doing (almost) nothing, to save on CPU because nobody is around to notice or the mob died. +#define STANCE_IDLE 1 // The more or less default state. Wanders around, looks for baddies, and spouts one-liners. +#define STANCE_ALERT 2 // A baddie is visible but not too close, and essentially we tell them to go away or die. +#define STANCE_APPROACH 3 // Attempting to get into range to attack them. +#define STANCE_FIGHT 4 // Actually fighting, with melee or ranged. +#define STANCE_BLINDFIGHT 5 // Fighting something that cannot be seen by the mob, from invisibility or out of sight. +#define STANCE_REPOSITION 6 // Relocating to a better position while in combat. Also used when moving away from a danger like grenades. +#define STANCE_MOVE 7 // Similar to above but for out of combat. If a baddie is seen, they'll cancel and fight them. +#define STANCE_FOLLOW 8 // Following somone, without trying to murder them. +#define STANCE_FLEE 9 // Run away from the target because they're too spooky/we're dying/some other reason. +#define STANCE_DISABLED 10 // Used when the holder is afflicted with certain status effects, such as stuns or confusion. + +#define STANCES_COMBAT list(STANCE_ALERT, STANCE_APPROACH, STANCE_FIGHT, STANCE_BLINDFIGHT, STANCE_REPOSITION) #define LEFT 0x1 #define RIGHT 0x2 @@ -70,6 +87,7 @@ #define ROBOT_NOTIFICATION_NEW_NAME 2 #define ROBOT_NOTIFICATION_NEW_MODULE 3 #define ROBOT_NOTIFICATION_MODULE_RESET 4 +#define ROBOT_NOTIFICATION_AI_SHELL 5 // Appearance change flags #define APPEARANCE_UPDATE_DNA 0x1 @@ -192,7 +210,10 @@ #define O_ACID "acid gland" #define O_EGG "egg sac" #define O_RESIN "resin spinner" -#define O_ALL list(O_STANDARD, O_MOUTH, O_CELL, O_PLASMA, O_HIVE, O_NUTRIENT, O_STRATA, O_RESPONSE, O_GBLADDER, O_POLYP, O_ANCHOR, O_ACID, O_EGG, O_RESIN) +#define O_AREJECT "immune hub" +#define O_VENTC "morphoplastic node" +#define O_VRLINK "virtual node" +#define O_ALL list(O_STANDARD, O_MOUTH, O_CELL, O_PLASMA, O_HIVE, O_NUTRIENT, O_STRATA, O_RESPONSE, O_GBLADDER, O_POLYP, O_ANCHOR, O_ACID, O_EGG, O_RESIN, O_AREJECT, O_VENTC, O_VRLINK) // External organs, aka limbs #define BP_L_FOOT "l_foot" @@ -234,6 +255,13 @@ #define FBP_POSI "Positronic" #define FBP_DRONE "Drone" +// Similar to above but for borgs. +// Seperate defines are unfortunately required since borgs display the brain differently for some reason. +#define BORG_BRAINTYPE_CYBORG "Cyborg" +#define BORG_BRAINTYPE_POSI "Robot" +#define BORG_BRAINTYPE_DRONE "Drone" +#define BORG_BRAINTYPE_AI_SHELL "AI Shell" + // 'Regular' species. #define SPECIES_HUMAN "Human" #define SPECIES_HUMAN_VATBORN "Vatborn" @@ -244,6 +272,7 @@ #define SPECIES_PROMETHEAN "Promethean" #define SPECIES_DIONA "Diona" #define SPECIES_VOX "Vox" +#define SPECIES_ZADDAT "Zaddat" // Monkey and alien monkeys. #define SPECIES_MONKEY "Monkey" @@ -259,6 +288,9 @@ #define SPECIES_VR_SKRELL "Virtual Reality Skrell" #define SPECIES_VR_TESHARI "Virtual Reality Teshari" #define SPECIES_VR_DIONA "Virtual Reality Diona" +#define SPECIES_VR_MONKEY "Virtual Reality Monkey" +#define SPECIES_VR_SKELETON "Virtual Reality Skeleton" +#define SPECIES_VR_VOX "Virtual Reality Vox" // Ayyy IDs. #define SPECIES_XENO "Xenomorph" @@ -273,17 +305,45 @@ #define SPECIES_GOLEM "Golem" #define SPECIES_EVENT1 "X Occursus" +// Replicant types. Currently only used for alien pods and events. +#define SPECIES_REPLICANT "Replicant" +#define SPECIES_REPLICANT_ALPHA "Alpha Replicant" +#define SPECIES_REPLICANT_BETA "Beta Replicant" + // Used to seperate simple animals by ""intelligence"". #define SA_PLANT 1 #define SA_ANIMAL 2 #define SA_ROBOTIC 3 #define SA_HUMANOID 4 +// More refined version of SA_* ""intelligence"" seperators. +// Now includes bitflags, so to target two classes you just do 'MOB_CLASS_ANIMAL|MOB_CLASS_HUMANOID' +#define MOB_CLASS_NONE 0 // Default value, and used to invert for _ALL. + +#define MOB_CLASS_PLANT 1 // Unused at the moment. +#define MOB_CLASS_ANIMAL 2 // Animals and beasts like spiders, saviks, and bears. +#define MOB_CLASS_HUMANOID 4 // Non-robotic humanoids, including /simple_mob and /carbon/humans and their alien variants. +#define MOB_CLASS_SYNTHETIC 8 // Silicons, mechanical simple mobs, FBPs, and anything else that would pass is_synthetic() +#define MOB_CLASS_SLIME 16 // Everyone's favorite xenobiology specimen (and maybe prometheans?). +#define MOB_CLASS_ABERRATION 32 // Weird shit. +#define MOB_CLASS_DEMONIC 64 // Cult stuff. +#define MOB_CLASS_BOSS 128 // Future megafauna hopefully someday. +#define MOB_CLASS_ILLUSION 256 // Fake mobs, e.g. Technomancer illusions. +#define MOB_CLASS_PHOTONIC 512 // Holographic mobs like holocarp, similar to _ILLUSION, but that make no attempt to hide their true nature. + +#define MOB_CLASS_ALL (~MOB_CLASS_NONE) + // For slime commanding. Higher numbers allow for more actions. #define SLIME_COMMAND_OBEY 1 // When disciplined. #define SLIME_COMMAND_FACTION 2 // When in the same 'faction'. #define SLIME_COMMAND_FRIEND 3 // When befriended with a slime friendship agent. +// Threshold for mobs being able to damage things like airlocks or reinforced glass windows. +// If the damage is below this, nothing will happen besides a message saying that the attack was ineffective. +// Generally, this was not a define but was commonly set to 10, however 10 may be too low now since simple_mobs now attack twice as fast, +// at half damage compared to the old mob system, meaning mobs who could hurt structures may not be able to now, so now it is 5. +#define STRUCTURE_MIN_DAMAGE_THRESHOLD 5 + //Vision flags, for dealing with plane visibility #define VIS_FULLBRIGHT 1 #define VIS_LIGHTING 2 diff --git a/code/__defines/nifsoft.dm b/code/__defines/nifsoft.dm index dc03b2b411..cca614f1fb 100644 --- a/code/__defines/nifsoft.dm +++ b/code/__defines/nifsoft.dm @@ -17,31 +17,32 @@ #define NIF_FLASHPROT 13 //Health-related #define NIF_BACKUP 14 -#define NIF_CREWMONITOR 15 -#define NIF_ORGANIC_HEAL 16 -#define NIF_SYNTH_HEAL 17 -#define NIF_AUTOSTASIS 18 //These two are just part of -#define NIF_MED_ALARM 19 //medichines right now -#define NIF_TOXHEAL 20 //And this, for organics -#define NIF_SPAREBREATH 21 +#define NIF_MEDMONITOR 15 +#define NIF_ENGMONITOR 16 +#define NIF_ORGANIC_HEAL 17 +#define NIF_SYNTH_HEAL 18 +#define NIF_AUTOSTASIS 19 //These two are just part of +#define NIF_MED_ALARM 20 //medichines right now +#define NIF_TOXHEAL 21 //And this, for organics +#define NIF_SPAREBREATH 22 //Combat Related -#define NIF_BRUTEARMOR 22 -#define NIF_BURNARMOR 23 -#define NIF_PAINKILLERS 24 -#define NIF_HARDCLAWS 25 -#define NIF_HIDDENLASER 26 +#define NIF_BRUTEARMOR 23 +#define NIF_BURNARMOR 24 +#define NIF_PAINKILLERS 25 +#define NIF_HARDCLAWS 26 +#define NIF_HIDDENLASER 27 //Other -#define NIF_COMMLINK 27 -#define NIF_APCCHARGE 28 -#define NIF_PRESSURE 29 -#define NIF_HEATSINK 30 -#define NIF_COMPLIANCE 31 -#define NIF_SIZECHANGE 32 -#define NIF_SOULCATCHER 33 -#define NIF_WORLDBEND 34 +#define NIF_COMMLINK 28 +#define NIF_APCCHARGE 29 +#define NIF_PRESSURE 30 +#define NIF_HEATSINK 31 +#define NIF_COMPLIANCE 32 +#define NIF_SIZECHANGE 33 +#define NIF_SOULCATCHER 34 +#define NIF_WORLDBEND 35 // Must be equal to the highest number above -#define TOTAL_NIF_SOFTWARE 34 +#define TOTAL_NIF_SOFTWARE 35 ////////////////////// // NIF flag list hints diff --git a/code/__defines/objects.dm b/code/__defines/objects.dm index 879bed2cd1..3d2891a3c5 100644 --- a/code/__defines/objects.dm +++ b/code/__defines/objects.dm @@ -1,6 +1,5 @@ /* * Defines used for miscellaneous objects. - * Currently only the home of the Multiool. */ // Multitool Mode Defines. @@ -8,3 +7,37 @@ #define MULTITOOL_MODE_STANDARD "Standard" #define MULTITOOL_MODE_INTCIRCUITS "Modular Wiring" #define MULTITOOL_MODE_DOORHACK "Advanced Jacking" + +// Identity system defines. +#define IDENTITY_UNKNOWN 0 // Nothing is known so far. +#define IDENTITY_PROPERTIES 1 // Basic function of the item, and amount of charges available if it uses them. +#define IDENTITY_QUALITY 2 // Blessed/Uncursed/Cursed status. Some things don't use this. +#define IDENTITY_FULL IDENTITY_PROPERTIES|IDENTITY_QUALITY // Know everything. + +#define IDENTITY_TYPE_NONE "generic" +#define IDENTITY_TYPE_TECH "technological" +#define IDENTITY_TYPE_CHEMICAL "chemical" + +// Roguelike object quality defines. Not used at the moment. +#define ROGUELIKE_ITEM_ARTIFACT 2 // Cannot degrade, very rare. +#define ROGUELIKE_ITEM_BLESSED 1 // Better than average and resists cursing. +#define ROGUELIKE_ITEM_UNCURSED 0 // Normal. +#define ROGUELIKE_ITEM_CURSED -1 // Does bad things, clothing cannot be taken off. + +// Consistant messages for certain events. +// Consistancy is import in order to avoid giving too much information away when using an +// unidentified object due to a typo or some other unique difference in message output. +#define ROGUELIKE_MESSAGE_NOTHING "Nothing happens." +#define ROGUELIKE_MESSAGE_UNKNOWN "Something happened, but you're not sure what." + +// Cataloguer defines. + +// Defines about the reward point scaling. Adjust these if you want points to be more or less common. +#define CATALOGUER_REWARD_TRIVIAL 10 // Very easy things that would take little effort to find, like the grass or an NT banner. +#define CATALOGUER_REWARD_EASY 40 // Fairly easy things, like the common Sif creatures, cave crystals, and the base spiders +#define CATALOGUER_REWARD_MEDIUM 160 // Takes effort to find, like PoI specific things like black boxes, or rarer mobs like the special spiders. +#define CATALOGUER_REWARD_HARD 640 // Requires significant effort, such as scanning all spiders or other compilation-based discoveries, or clearing a dangerous PoI. +#define CATALOGUER_REWARD_SUPERHARD 2560 // Very difficult and dangerous, such as scanning the Advanced Dark Gygax. + +// 5 10 20 40 80 160 +// 10 40 160 640 2560 \ No newline at end of file diff --git a/code/__defines/planets.dm b/code/__defines/planets.dm index 3c2a1abcfc..da67d42ea2 100644 --- a/code/__defines/planets.dm +++ b/code/__defines/planets.dm @@ -9,6 +9,9 @@ #define WEATHER_WINDY "windy" #define WEATHER_HOT "hot" #define WEATHER_BLOOD_MOON "blood moon" // For admin fun or cult later on. +#define WEATHER_EMBERFALL "emberfall" // More adminbuse, from TG. Harmless. +#define WEATHER_ASH_STORM "ash storm" // Ripped from TG, like the above. Less harmless. +#define WEATHER_FALLOUT "fallout" // Modified emberfall, actually harmful. Admin only. #define MOON_PHASE_NEW_MOON "new moon" #define MOON_PHASE_WAXING_CRESCENT "waxing crescent" diff --git a/code/__defines/qdel.dm b/code/__defines/qdel.dm index 51c6db5325..ab85326658 100644 --- a/code/__defines/qdel.dm +++ b/code/__defines/qdel.dm @@ -22,7 +22,13 @@ #define QDELETED(X) (!X || X.gc_destroyed) #define QDESTROYING(X) (!X || X.gc_destroyed == GC_CURRENTLY_BEING_QDELETED) +//Qdel helper macros. +#define QDEL_IN(item, time) addtimer(CALLBACK(GLOBAL_PROC, .proc/qdel, item), time, TIMER_STOPPABLE) +#define QDEL_IN_CLIENT_TIME(item, time) addtimer(CALLBACK(GLOBAL_PROC, .proc/qdel, item), time, TIMER_STOPPABLE | TIMER_CLIENT_TIME) +#define QDEL_NULL(item) qdel(item); item = null +#define QDEL_LIST_NULL(x) if(x) { for(var/y in x) { qdel(y) } ; x = null } #define QDEL_LIST(L) if(L) { for(var/I in L) qdel(I); L.Cut(); } +#define QDEL_LIST_IN(L, time) addtimer(CALLBACK(GLOBAL_PROC, .proc/______qdel_list_wrapper, L), time, TIMER_STOPPABLE) #define QDEL_LIST_ASSOC(L) if(L) { for(var/I in L) { qdel(L[I]); qdel(I); } L.Cut(); } #define QDEL_LIST_ASSOC_VAL(L) if(L) { for(var/I in L) qdel(L[I]); L.Cut(); } diff --git a/code/__defines/species_languages.dm b/code/__defines/species_languages.dm index f66599713f..1ca43bbd61 100644 --- a/code/__defines/species_languages.dm +++ b/code/__defines/species_languages.dm @@ -52,6 +52,8 @@ #define LANGUAGE_EVENT1 "Occursus" #define LANGUAGE_AKHANI "Akhani" #define LANGUAGE_ALAI "Alai" +#define LANGUAGE_ZADDAT "Vedahq" +#define LANGUAGE_GIBBERISH "Babel" // Language flags. #define WHITELISTED 1 // Language is available if the speaker is whitelisted. diff --git a/code/__defines/subsystems.dm b/code/__defines/subsystems.dm index 5c2d9a8ca3..ac480237b5 100644 --- a/code/__defines/subsystems.dm +++ b/code/__defines/subsystems.dm @@ -1,18 +1,23 @@ //Timing subsystem //Don't run if there is an identical unique timer active -#define TIMER_UNIQUE 0x1 +//if the arguments to addtimer are the same as an existing timer, it doesn't create a new timer, and returns the id of the existing timer +#define TIMER_UNIQUE (1<<0) //For unique timers: Replace the old timer rather then not start this one -#define TIMER_OVERRIDE 0x2 +#define TIMER_OVERRIDE (1<<1) //Timing should be based on how timing progresses on clients, not the sever. // tracking this is more expensive, // should only be used in conjuction with things that have to progress client side, such as animate() or sound() -#define TIMER_CLIENT_TIME 0x4 +#define TIMER_CLIENT_TIME (1<<2) //Timer can be stopped using deltimer() -#define TIMER_STOPPABLE 0x8 +#define TIMER_STOPPABLE (1<<3) //To be used with TIMER_UNIQUE //prevents distinguishing identical timers with the wait variable -#define TIMER_NO_HASH_WAIT 0x10 -#define TIMER_NO_INVOKE_WARNING 600 //number of byond ticks that are allowed to pass before the timer subsystem thinks it hung on something +#define TIMER_NO_HASH_WAIT (1<<4) +//Loops the timer repeatedly until qdeleted +//In most cases you want a subsystem instead +#define TIMER_LOOP (1<<5) + +#define TIMER_ID_NULL -1 #define INITIALIZATION_INSSATOMS 0 //New should not call Initialize #define INITIALIZATION_INNEW_MAPLOAD 1 //New should call Initialize(TRUE) @@ -47,19 +52,22 @@ var/global/list/runlevel_flags = list(RUNLEVEL_LOBBY, RUNLEVEL_SETUP, RUNLEVEL_G // Subsystem init_order, from highest priority to lowest priority // Subsystems shutdown in the reverse of the order they initialize in // The numbers just define the ordering, they are meaningless otherwise. -#define INIT_ORDER_MAPPING 20 // VOREStation Edit -#define INIT_ORDER_DECALS 16 -#define INIT_ORDER_ATOMS 15 -#define INIT_ORDER_MACHINES 10 -#define INIT_ORDER_SHUTTLES 3 -#define INIT_ORDER_DEFAULT 0 -#define INIT_ORDER_LIGHTING 0 -#define INIT_ORDER_AIR -1 -#define INIT_ORDER_PLANETS -4 -#define INIT_ORDER_HOLOMAPS -5 -#define INIT_ORDER_OVERLAY -6 -#define INIT_ORDER_XENOARCH -20 -#define INIT_ORDER_CIRCUIT -21 +#define INIT_ORDER_CHEMISTRY 18 +#define INIT_ORDER_MAPPING 17 +#define INIT_ORDER_DECALS 16 +#define INIT_ORDER_ATOMS 15 +#define INIT_ORDER_MACHINES 10 +#define INIT_ORDER_SHUTTLES 3 +#define INIT_ORDER_TIMER 1 +#define INIT_ORDER_DEFAULT 0 +#define INIT_ORDER_LIGHTING 0 +#define INIT_ORDER_AIR -1 +#define INIT_ORDER_PLANETS -4 +#define INIT_ORDER_HOLOMAPS -5 +#define INIT_ORDER_OVERLAY -6 +#define INIT_ORDER_XENOARCH -20 +#define INIT_ORDER_CIRCUIT -21 +#define INIT_ORDER_AI -22 // Subsystem fire priority, from lowest to highest priority @@ -67,12 +75,16 @@ var/global/list/runlevel_flags = list(RUNLEVEL_LOBBY, RUNLEVEL_SETUP, RUNLEVEL_G #define FIRE_PRIORITY_SHUTTLES 5 #define FIRE_PRIORITY_ORBIT 8 #define FIRE_PRIORITY_VOTE 9 +#define FIRE_PRIORITY_AI 10 #define FIRE_PRIORITY_GARBAGE 15 #define FIRE_PRIORITY_AIRFLOW 30 #define FIRE_PRIORITY_AIR 35 +#define FIRE_PRIORITY_OBJ 40 +#define FIRE_PRIORITY_PROCESS 45 #define FIRE_PRIORITY_DEFAULT 50 #define FIRE_PRIORITY_PLANETS 75 #define FIRE_PRIORITY_MACHINES 100 +#define FIRE_PRIORITY_PROJECTILES 150 #define FIRE_PRIORITY_OVERLAYS 500 // Macro defining the actual code applying our overlays lists to the BYOND overlays list. (I guess a macro for speed) diff --git a/code/__defines/vv.dm b/code/__defines/vv.dm new file mode 100644 index 0000000000..97e3a02e0d --- /dev/null +++ b/code/__defines/vv.dm @@ -0,0 +1,46 @@ +#define VV_NUM "Number" +#define VV_TEXT "Text" +#define VV_MESSAGE "Mutiline Text" +#define VV_ICON "Icon" +#define VV_ATOM_REFERENCE "Atom Reference" +#define VV_DATUM_REFERENCE "Datum Reference" +#define VV_MOB_REFERENCE "Mob Reference" +#define VV_CLIENT "Client" +#define VV_ATOM_TYPE "Atom Typepath" +#define VV_DATUM_TYPE "Datum Typepath" +#define VV_TYPE "Custom Typepath" +#define VV_FILE "File" +#define VV_LIST "List" +#define VV_NEW_ATOM "New Atom" +#define VV_NEW_DATUM "New Datum" +#define VV_NEW_TYPE "New Custom Typepath" +#define VV_NEW_LIST "New List" +#define VV_NULL "NULL" +#define VV_RESTORE_DEFAULT "Restore to Default" +#define VV_MARKED_DATUM "Marked Datum" +#define VV_BITFIELD "Bitfield" + +#define VV_MSG_MARKED "
Marked Object" +#define VV_MSG_EDITED "
Var Edited" +#define VV_MSG_DELETED "
Deleted" + +#define VV_NORMAL_LIST_NO_EXPAND_THRESHOLD 50 +#define VV_SPECIAL_LIST_NO_EXPAND_THRESHOLD 150 + +#define IS_VALID_ASSOC_KEY(V) (istext(V) || isdatum(V) || islist(V)) + +//Helpers for vv_get_dropdown() +#define VV_DROPDOWN_OPTION(href_key, name) . += "" + +//Helpers for vv_do_topic(list/href_list) +#define IF_VV_OPTION(href_key) if(href_list[href_key]) + +// /datum +#define VV_HK_DELETE "delete" +#define VV_HK_EXPOSE "expose" +#define VV_HK_CALLPROC "proc_call" +#define VV_HK_MARK "mark" + +// /atom +#define VV_HK_ATOM_EXPLODE "turf_explode" +#define VV_HK_ATOM_EMP "turf_emp" diff --git a/code/_global_vars/bitfields.dm b/code/_global_vars/bitfields.dm new file mode 100644 index 0000000000..891c50ce88 --- /dev/null +++ b/code/_global_vars/bitfields.dm @@ -0,0 +1,7 @@ +GLOBAL_LIST_INIT(bitfields, list( + "datum_flags" = list( + "DF_VAR_EDITED" = DF_VAR_EDITED, + "DF_ISPROCESSING" = DF_ISPROCESSING + ) + +)) diff --git a/code/_global_vars/misc.dm b/code/_global_vars/misc.dm index 5e7737f163..6ece6be2d7 100644 --- a/code/_global_vars/misc.dm +++ b/code/_global_vars/misc.dm @@ -1,4 +1,8 @@ -GLOBAL_LIST_EMPTY(all_observable_events) +GLOBAL_LIST_EMPTY(error_last_seen) +GLOBAL_LIST_EMPTY(error_cooldown) + +GLOBAL_DATUM_INIT(all_observable_events, /datum/all_observable_events, new) // This is a datum. It is not a list. +GLOBAL_DATUM_INIT(destroyed_event, /decl/observ/destroyed, new()) GLOBAL_VAR_INIT(timezoneOffset, 0) // The difference betwen midnight (of the host computer) and 0 world.ticks. diff --git a/code/_global_vars/mobs.dm b/code/_global_vars/mobs.dm index fac5a14036..10d829904a 100644 --- a/code/_global_vars/mobs.dm +++ b/code/_global_vars/mobs.dm @@ -2,4 +2,6 @@ GLOBAL_LIST_EMPTY(admins) //all clients whom are admins GLOBAL_PROTECT(admins) GLOBAL_LIST_EMPTY(deadmins) //all ckeys who have used the de-admin verb. GLOBAL_LIST_EMPTY(stealthminID) -GLOBAL_LIST_EMPTY(directory) //all ckeys with associated client \ No newline at end of file +GLOBAL_LIST_EMPTY(directory) //all ckeys with associated client +GLOBAL_LIST_EMPTY(clients) +GLOBAL_LIST_EMPTY(players_by_zlevel) diff --git a/code/_helpers/lists.dm b/code/_helpers/_lists.dm similarity index 96% rename from code/_helpers/lists.dm rename to code/_helpers/_lists.dm index b9e5dd8623..553984330d 100644 --- a/code/_helpers/lists.dm +++ b/code/_helpers/_lists.dm @@ -1,755 +1,758 @@ -/* - * Holds procs to help with list operations - * Contains groups: - * Misc - * Sorting - */ - -/* - * Misc - */ - -//Returns a list in plain english as a string -/proc/english_list(var/list/input, nothing_text = "nothing", and_text = " and ", comma_text = ", ", final_comma_text = "" ) - switch(input.len) - if(0) return nothing_text - if(1) return "[input[1]]" - if(2) return "[input[1]][and_text][input[2]]" - else return "[jointext(input, comma_text, 1, -1)][final_comma_text][and_text][input[input.len]]" - -//Returns list element or null. Should prevent "index out of bounds" error. -proc/listgetindex(var/list/list,index) - if(istype(list) && list.len) - if(isnum(index)) - if(InRange(index,1,list.len)) - return list[index] - else if(index in list) - return list[index] - return - -proc/islist(list/list) - return(istype(list)) - -//Return either pick(list) or null if list is not of type /list or is empty -proc/safepick(list/list) - if(!islist(list) || !list.len) - return - return pick(list) - -//Checks if the list is empty -proc/isemptylist(list/list) - if(!list.len) - return 1 - return 0 - -//Checks for specific types in a list -/proc/is_type_in_list(var/atom/A, var/list/L) - for(var/type in L) - if(istype(A, type)) - return 1 - return 0 - -//Checks for specific paths in a list -/proc/is_path_in_list(var/atom/A, var/list/L) - for(var/path in L) - if(ispath(A, path)) - return 1 - return 0 - -////////////////////////////////////////////////////// -// "typecache" utilities - Making and searching them -////////////////////////////////////////////////////// - -//Checks for specific types in specifically structured (Assoc "type" = TRUE) lists ('typecaches') -/proc/is_type_in_typecache(atom/A, list/L) - if(!LAZYLEN(L) || !A) - return FALSE - return L[A.type] - -//returns a new list with only atoms that are in typecache L -/proc/typecache_filter_list(list/atoms, list/typecache) - . = list() - for(var/thing in atoms) - var/atom/A = thing - if(typecache[A.type]) - . += A - -/proc/typecache_filter_list_reverse(list/atoms, list/typecache) - . = list() - for(var/thing in atoms) - var/atom/A = thing - if(!typecache[A.type]) - . += A - -/proc/typecache_filter_multi_list_exclusion(list/atoms, list/typecache_include, list/typecache_exclude) - . = list() - for(var/thing in atoms) - var/atom/A = thing - if(typecache_include[A.type] && !typecache_exclude[A.type]) - . += A - -//Like typesof() or subtypesof(), but returns a typecache instead of a list -/proc/typecacheof(path, ignore_root_path, only_root_path = FALSE) - if(ispath(path)) - var/list/types = list() - if(only_root_path) - types = list(path) - else - types = ignore_root_path ? subtypesof(path) : typesof(path) - var/list/L = list() - for(var/T in types) - L[T] = TRUE - return L - else if(islist(path)) - var/list/pathlist = path - var/list/L = list() - if(ignore_root_path) - for(var/P in pathlist) - for(var/T in subtypesof(P)) - L[T] = TRUE - else - for(var/P in pathlist) - if(only_root_path) - L[P] = TRUE - else - for(var/T in typesof(P)) - L[T] = TRUE - return L - -////////////////////////////////////////////////////// - -//Empties the list by setting the length to 0. Hopefully the elements get garbage collected -proc/clearlist(list/list) - if(istype(list)) - list.len = 0 - return - -//Removes any null entries from the list -proc/listclearnulls(list/list) - if(istype(list)) - while(null in list) - list -= null - return - -/* - * Returns list containing all the entries from first list that are not present in second. - * If skiprep = 1, repeated elements are treated as one. - * If either of arguments is not a list, returns null - */ -/proc/difflist(var/list/first, var/list/second, var/skiprep=0) - if(!islist(first) || !islist(second)) - return - var/list/result = new - if(skiprep) - for(var/e in first) - if(!(e in result) && !(e in second)) - result += e - else - result = first - second - return result - -/* - * Returns list containing entries that are in either list but not both. - * If skipref = 1, repeated elements are treated as one. - * If either of arguments is not a list, returns null - */ -/proc/uniquemergelist(var/list/first, var/list/second, var/skiprep=0) - if(!islist(first) || !islist(second)) - return - var/list/result = new - if(skiprep) - result = difflist(first, second, skiprep)+difflist(second, first, skiprep) - else - result = first ^ second - return result - -//Pretends to pick an element based on its weight but really just seems to pick a random element. -/proc/pickweight(list/L) - var/total = 0 - var/item - for (item in L) - if (!L[item]) - L[item] = 1 - total += L[item] - - total = rand(1, total) - for (item in L) - total -=L [item] - if (total <= 0) - return item - - return null - -//Pick a random element from the list and remove it from the list. -/proc/pick_n_take(list/listfrom) - if (listfrom.len > 0) - var/picked = pick(listfrom) - listfrom -= picked - return picked - return null - -//Returns the top(last) element from the list and removes it from the list (typical stack function) -/proc/pop(list/listfrom) - if (listfrom.len > 0) - var/picked = listfrom[listfrom.len] - listfrom.len-- - return picked - return null - -//Returns the next element in parameter list after first appearance of parameter element. If it is the last element of the list or not present in list, returns first element. -/proc/next_in_list(element, list/L) - for(var/i=1, i= 1; i--) - output += L[i] - return output - -//Randomize: Return the list in a random order -/proc/shuffle(var/list/L) - if(!L) - return - - L = L.Copy() - - for(var/i=1; i current_index) - current_index++ - current_item = sorted_list[current_index] - - current_item_value = current_item:dd_SortValue() - current_sort_object_value = current_sort_object:dd_SortValue() - if (current_sort_object_value < current_item_value) - high_index = current_index - 1 - else if (current_sort_object_value > current_item_value) - low_index = current_index + 1 - else - // current_sort_object == current_item - low_index = current_index - break - - // Insert before low_index. - insert_index = low_index - - // Special case adding to end of list. - if (insert_index > sorted_list.len) - sorted_list += current_sort_object - continue - - // Because BYOND lists don't support insert, have to do it by: - // 1) taking out bottom of list, 2) adding item, 3) putting back bottom of list. - list_bottom = sorted_list.Copy(insert_index) - sorted_list.Cut(insert_index) - sorted_list += current_sort_object - sorted_list += list_bottom - return sorted_list -*/ - -proc/dd_sortedtextlist(list/incoming, case_sensitive = 0) - // Returns a new list with the text values sorted. - // Use binary search to order by sortValue. - // This works by going to the half-point of the list, seeing if the node in question is higher or lower cost, - // then going halfway up or down the list and checking again. - // This is a very fast way to sort an item into a list. - var/list/sorted_text = new() - var/low_index - var/high_index - var/insert_index - var/midway_calc - var/current_index - var/current_item - var/list/list_bottom - var/sort_result - - var/current_sort_text - for (current_sort_text in incoming) - low_index = 1 - high_index = sorted_text.len - while (low_index <= high_index) - // Figure out the midpoint, rounding up for fractions. (BYOND rounds down, so add 1 if necessary.) - midway_calc = (low_index + high_index) / 2 - current_index = round(midway_calc) - if (midway_calc > current_index) - current_index++ - current_item = sorted_text[current_index] - - if (case_sensitive) - sort_result = sorttextEx(current_sort_text, current_item) - else - sort_result = sorttext(current_sort_text, current_item) - - switch(sort_result) - if (1) - high_index = current_index - 1 // current_sort_text < current_item - if (-1) - low_index = current_index + 1 // current_sort_text > current_item - if (0) - low_index = current_index // current_sort_text == current_item - break - - // Insert before low_index. - insert_index = low_index - - // Special case adding to end of list. - if (insert_index > sorted_text.len) - sorted_text += current_sort_text - continue - - // Because BYOND lists don't support insert, have to do it by: - // 1) taking out bottom of list, 2) adding item, 3) putting back bottom of list. - list_bottom = sorted_text.Copy(insert_index) - sorted_text.Cut(insert_index) - sorted_text += current_sort_text - sorted_text += list_bottom - return sorted_text - - -proc/dd_sortedTextList(list/incoming) - var/case_sensitive = 1 - return dd_sortedtextlist(incoming, case_sensitive) - - -/datum/proc/dd_SortValue() - return "[src]" - -/obj/machinery/dd_SortValue() - return "[sanitize_old(name)]" - -/obj/machinery/camera/dd_SortValue() - return "[c_tag]" - -/datum/alarm/dd_SortValue() - return "[sanitize_old(last_name)]" - -/proc/subtypesof(prototype) - return (typesof(prototype) - prototype) - -//creates every subtype of prototype (excluding prototype) and adds it to list L. -//if no list/L is provided, one is created. -/proc/init_subtypes(prototype, list/L) - if(!istype(L)) L = list() - for(var/path in subtypesof(prototype)) - L += new path() - return L - -//creates every subtype of prototype (excluding prototype) and adds it to list L as a type/instance pair. -//if no list/L is provided, one is created. -/proc/init_subtypes_assoc(prototype, list/L) - if(!istype(L)) L = list() - for(var/path in subtypesof(prototype)) - L[path] = new path() - return L - -//Move a single element from position fromIndex within a list, to position toIndex -//All elements in the range [1,toIndex) before the move will be before the pivot afterwards -//All elements in the range [toIndex, L.len+1) before the move will be after the pivot afterwards -//In other words, it's as if the range [fromIndex,toIndex) have been rotated using a <<< operation common to other languages. -//fromIndex and toIndex must be in the range [1,L.len+1] -//This will preserve associations ~Carnie -/proc/moveElement(list/L, fromIndex, toIndex) - if(fromIndex == toIndex || fromIndex+1 == toIndex) //no need to move - return - if(fromIndex > toIndex) - ++fromIndex //since a null will be inserted before fromIndex, the index needs to be nudged right by one - - L.Insert(toIndex, null) - L.Swap(fromIndex, toIndex) - L.Cut(fromIndex, fromIndex+1) - -//Move elements [fromIndex,fromIndex+len) to [toIndex-len, toIndex) -//Same as moveElement but for ranges of elements -//This will preserve associations ~Carnie -/proc/moveRange(list/L, fromIndex, toIndex, len=1) - var/distance = abs(toIndex - fromIndex) - if(len >= distance) //there are more elements to be moved than the distance to be moved. Therefore the same result can be achieved (with fewer operations) by moving elements between where we are and where we are going. The result being, our range we are moving is shifted left or right by dist elements - if(fromIndex <= toIndex) - return //no need to move - fromIndex += len //we want to shift left instead of right - - for(var/i=0, i toIndex) - fromIndex += len - - for(var/i=0, i 0) + var/picked = pick(listfrom) + listfrom -= picked + return picked + return null + +//Returns the top(last) element from the list and removes it from the list (typical stack function) +/proc/pop(list/listfrom) + if (listfrom.len > 0) + var/picked = listfrom[listfrom.len] + listfrom.len-- + return picked + return null + +//Returns the next element in parameter list after first appearance of parameter element. If it is the last element of the list or not present in list, returns first element. +/proc/next_in_list(element, list/L) + for(var/i=1, i= 1; i--) + output += L[i] + return output + +//Randomize: Return the list in a random order +/proc/shuffle(var/list/L) + if(!L) + return + + L = L.Copy() + + for(var/i=1; i current_index) + current_index++ + current_item = sorted_list[current_index] + + current_item_value = current_item:dd_SortValue() + current_sort_object_value = current_sort_object:dd_SortValue() + if (current_sort_object_value < current_item_value) + high_index = current_index - 1 + else if (current_sort_object_value > current_item_value) + low_index = current_index + 1 + else + // current_sort_object == current_item + low_index = current_index + break + + // Insert before low_index. + insert_index = low_index + + // Special case adding to end of list. + if (insert_index > sorted_list.len) + sorted_list += current_sort_object + continue + + // Because BYOND lists don't support insert, have to do it by: + // 1) taking out bottom of list, 2) adding item, 3) putting back bottom of list. + list_bottom = sorted_list.Copy(insert_index) + sorted_list.Cut(insert_index) + sorted_list += current_sort_object + sorted_list += list_bottom + return sorted_list +*/ + +proc/dd_sortedtextlist(list/incoming, case_sensitive = 0) + // Returns a new list with the text values sorted. + // Use binary search to order by sortValue. + // This works by going to the half-point of the list, seeing if the node in question is higher or lower cost, + // then going halfway up or down the list and checking again. + // This is a very fast way to sort an item into a list. + var/list/sorted_text = new() + var/low_index + var/high_index + var/insert_index + var/midway_calc + var/current_index + var/current_item + var/list/list_bottom + var/sort_result + + var/current_sort_text + for (current_sort_text in incoming) + low_index = 1 + high_index = sorted_text.len + while (low_index <= high_index) + // Figure out the midpoint, rounding up for fractions. (BYOND rounds down, so add 1 if necessary.) + midway_calc = (low_index + high_index) / 2 + current_index = round(midway_calc) + if (midway_calc > current_index) + current_index++ + current_item = sorted_text[current_index] + + if (case_sensitive) + sort_result = sorttextEx(current_sort_text, current_item) + else + sort_result = sorttext(current_sort_text, current_item) + + switch(sort_result) + if (1) + high_index = current_index - 1 // current_sort_text < current_item + if (-1) + low_index = current_index + 1 // current_sort_text > current_item + if (0) + low_index = current_index // current_sort_text == current_item + break + + // Insert before low_index. + insert_index = low_index + + // Special case adding to end of list. + if (insert_index > sorted_text.len) + sorted_text += current_sort_text + continue + + // Because BYOND lists don't support insert, have to do it by: + // 1) taking out bottom of list, 2) adding item, 3) putting back bottom of list. + list_bottom = sorted_text.Copy(insert_index) + sorted_text.Cut(insert_index) + sorted_text += current_sort_text + sorted_text += list_bottom + return sorted_text + + +proc/dd_sortedTextList(list/incoming) + var/case_sensitive = 1 + return dd_sortedtextlist(incoming, case_sensitive) + + +/datum/proc/dd_SortValue() + return "[src]" + +/obj/machinery/dd_SortValue() + return "[sanitize_old(name)]" + +/obj/machinery/camera/dd_SortValue() + return "[c_tag]" + +/datum/alarm/dd_SortValue() + return "[sanitize_old(last_name)]" + +/proc/subtypesof(prototype) + return (typesof(prototype) - prototype) + +//creates every subtype of prototype (excluding prototype) and adds it to list L. +//if no list/L is provided, one is created. +/proc/init_subtypes(prototype, list/L) + if(!istype(L)) L = list() + for(var/path in subtypesof(prototype)) + L += new path() + return L + +//creates every subtype of prototype (excluding prototype) and adds it to list L as a type/instance pair. +//if no list/L is provided, one is created. +/proc/init_subtypes_assoc(prototype, list/L) + if(!istype(L)) L = list() + for(var/path in subtypesof(prototype)) + L[path] = new path() + return L + +//Move a single element from position fromIndex within a list, to position toIndex +//All elements in the range [1,toIndex) before the move will be before the pivot afterwards +//All elements in the range [toIndex, L.len+1) before the move will be after the pivot afterwards +//In other words, it's as if the range [fromIndex,toIndex) have been rotated using a <<< operation common to other languages. +//fromIndex and toIndex must be in the range [1,L.len+1] +//This will preserve associations ~Carnie +/proc/moveElement(list/L, fromIndex, toIndex) + if(fromIndex == toIndex || fromIndex+1 == toIndex) //no need to move + return + if(fromIndex > toIndex) + ++fromIndex //since a null will be inserted before fromIndex, the index needs to be nudged right by one + + L.Insert(toIndex, null) + L.Swap(fromIndex, toIndex) + L.Cut(fromIndex, fromIndex+1) + +//Move elements [fromIndex,fromIndex+len) to [toIndex-len, toIndex) +//Same as moveElement but for ranges of elements +//This will preserve associations ~Carnie +/proc/moveRange(list/L, fromIndex, toIndex, len=1) + var/distance = abs(toIndex - fromIndex) + if(len >= distance) //there are more elements to be moved than the distance to be moved. Therefore the same result can be achieved (with fewer operations) by moving elements between where we are and where we are going. The result being, our range we are moving is shifted left or right by dist elements + if(fromIndex <= toIndex) + return //no need to move + fromIndex += len //we want to shift left instead of right + + for(var/i=0, i toIndex) + fromIndex += len + + for(var/i=0, ilayers.len) // Reached end of list without inserting - layers[current]=currentLayer // Place at end + if(flat_size ~! add_size) + // Resize the flattened icon so the new icon fits + flat.Crop( + addX1 - flatX1 + 1, + addY1 - flatY1 + 1, + addX2 - flatX1 + 1, + addY2 - flatY1 + 1 + ) + flat_size = add_size.Copy() - curIndex++ + // Blend the overlay into the flattened icon + flat.Blend(add, blendMode2iconMode(curblend), I.pixel_x + 2 - flatX1, I.pixel_y + 2 - flatY1) - if(curIndex>process.len) - if(pSet == 0) // Switch to overlays - curIndex = 1 - pSet = 1 - process = A.overlays - else // All done - break + if(A.color) + if(islist(A.color)) + flat.MapColors(arglist(A.color)) + else + flat.Blend(A.color, ICON_MULTIPLY) - var/icon/add // Icon of overlay being added + if(A.alpha < 255) + flat.Blend(rgb(255, 255, 255, A.alpha), ICON_MULTIPLY) - // Current dimensions of flattened icon - var/flatX1=1 - var/flatX2=flat.Width() - var/flatY1=1 - var/flatY2=flat.Height() - // Dimensions of overlay being added - var/addX1 - var/addX2 - var/addY1 - var/addY2 - - for(var/V in layers) - var/image/I = V - if(I.alpha == 0) - continue - - if(I == copy) // 'I' is an /image based on the object being flattened. - curblend = BLEND_OVERLAY - add = icon(I.icon, I.icon_state, base_icon_dir) - else // 'I' is an appearance object. - add = getFlatIcon(new/image(I), curdir, curicon, curstate, curblend, FALSE, no_anim) - - // Find the new dimensions of the flat icon to fit the added overlay - addX1 = min(flatX1, I.pixel_x+1) - addX2 = max(flatX2, I.pixel_x+add.Width()) - addY1 = min(flatY1, I.pixel_y+1) - addY2 = max(flatY2, I.pixel_y+add.Height()) - - if(addX1!=flatX1 || addX2!=flatX2 || addY1!=flatY1 || addY2!=flatY2) - // Resize the flattened icon so the new icon fits - flat.Crop(addX1-flatX1+1, addY1-flatY1+1, addX2-flatX1+1, addY2-flatY1+1) - flatX1=addX1;flatX2=addX2 - flatY1=addY1;flatY2=addY2 - - // Blend the overlay into the flattened icon - flat.Blend(add, blendMode2iconMode(curblend), I.pixel_x + 2 - flatX1, I.pixel_y + 2 - flatY1) - - if(A.color) - flat.Blend(A.color, ICON_MULTIPLY) - if(A.alpha < 255) - flat.Blend(rgb(255, 255, 255, A.alpha), ICON_MULTIPLY) - - if(no_anim) - //Clean up repeated frames - var/icon/cleaned = new /icon() - cleaned.Insert(flat, "", SOUTH, 1, 0) - return cleaned - else - return icon(flat, "", SOUTH) + if(no_anim) + //Clean up repeated frames + var/icon/cleaned = new /icon() + cleaned.Insert(flat, "", SOUTH, 1, 0) + . = cleaned + else + . = icon(flat, "", SOUTH) + else //There's no overlays. + if(!noIcon) + SET_SELF(.) + //Clear defines + #undef flatX1 + #undef flatX2 + #undef flatY1 + #undef flatY2 + #undef addX1 + #undef addX2 + #undef addY1 + #undef addY2 + #undef INDEX_X_LOW + #undef INDEX_X_HIGH + #undef INDEX_Y_LOW + #undef INDEX_Y_HIGH + #undef BLANK + #undef SET_SELF /proc/getIconMask(atom/A)//By yours truly. Creates a dynamic mask for a mob/whatever. /N var/icon/alpha_mask = new(A.icon,A.icon_state)//So we want the default icon and icon state of A. @@ -900,9 +904,9 @@ proc/adjust_brightness(var/color, var/value) if (!value) return color var/list/RGB = ReadRGB(color) - RGB[1] = Clamp(RGB[1]+value,0,255) - RGB[2] = Clamp(RGB[2]+value,0,255) - RGB[3] = Clamp(RGB[3]+value,0,255) + RGB[1] = CLAMP(RGB[1]+value,0,255) + RGB[2] = CLAMP(RGB[2]+value,0,255) + RGB[3] = CLAMP(RGB[3]+value,0,255) return rgb(RGB[1],RGB[2],RGB[3]) proc/sort_atoms_by_layer(var/list/atoms) diff --git a/code/__defines/tick.dm b/code/_helpers/lists.dm~1fb83e6... Merge pull request #5959 from elgeonmb_suit++ similarity index 100% rename from code/__defines/tick.dm rename to code/_helpers/lists.dm~1fb83e6... Merge pull request #5959 from elgeonmb_suit++ diff --git a/code/_helpers/maths.dm b/code/_helpers/maths.dm deleted file mode 100644 index 4cbe75bffc..0000000000 --- a/code/_helpers/maths.dm +++ /dev/null @@ -1,131 +0,0 @@ -// Macro functions. -#define RAND_F(LOW, HIGH) (rand()*(HIGH-LOW) + LOW) -#define ceil(x) (-round(-(x))) - -// min is inclusive, max is exclusive -/proc/Wrap(val, min, max) - var/d = max - min - var/t = Floor((val - min) / d) - return val - (t * d) - -/proc/Default(a, b) - return a ? a : b - -// Trigonometric functions. -/proc/Tan(x) - return sin(x) / cos(x) - -/proc/Csc(x) - return 1 / sin(x) - -/proc/Sec(x) - return 1 / cos(x) - -/proc/Cot(x) - return 1 / Tan(x) - -/proc/Atan2(x, y) - if(!x && !y) return 0 - var/a = arccos(x / sqrt(x*x + y*y)) - return y >= 0 ? a : -a - -/proc/Floor(x) - return round(x) - -/proc/Ceiling(x) - return -round(-x) - -// Greatest Common Divisor: Euclid's algorithm. -/proc/Gcd(a, b) - while (1) - if (!b) return a - a %= b - if (!a) return b - b %= a - -// Least Common Multiple. The formula is a consequence of: a*b = LCM*GCD. -/proc/Lcm(a, b) - return abs(a) * abs(b) / Gcd(a, b) - -// Useful in the cases when x is a large expression, e.g. x = 3a/2 + b^2 + Function(c) -/proc/Square(x) - return x*x - -/proc/Inverse(x) - return 1 / x - -// Condition checks. -/proc/IsAboutEqual(a, b, delta = 0.1) - return abs(a - b) <= delta - -// Returns true if val is from min to max, inclusive. -/proc/IsInRange(val, min, max) - return (val >= min) && (val <= max) - -/proc/IsInteger(x) - return Floor(x) == x - -/proc/IsMultiple(x, y) - return x % y == 0 - -/proc/IsEven(x) - return !(x & 0x1) - -/proc/IsOdd(x) - return (x & 0x1) - -// Performs a linear interpolation between a and b. -// Note: weight=0 returns a, weight=1 returns b, and weight=0.5 returns the mean of a and b. -/proc/Interpolate(a, b, weight = 0.5) - return a + (b - a) * weight // Equivalent to: a*(1 - weight) + b*weight - -/proc/Mean(...) - var/sum = 0 - for(var/val in args) - sum += val - return sum / args.len - -// Returns the nth root of x. -/proc/Root(n, x) - return x ** (1 / n) - -// The quadratic formula. Returns a list with the solutions, or an empty list -// if they are imaginary. -/proc/SolveQuadratic(a, b, c) - ASSERT(a) - - . = list() - var/discriminant = b*b - 4*a*c - var/bottom = 2*a - - // Return if the roots are imaginary. - if(discriminant < 0) - return - - var/root = sqrt(discriminant) - . += (-b + root) / bottom - - // If discriminant == 0, there would be two roots at the same position. - if(discriminant != 0) - . += (-b - root) / bottom - -/proc/ToDegrees(radians) - // 180 / Pi ~ 57.2957795 - return radians * 57.2957795 - -/proc/ToRadians(degrees) - // Pi / 180 ~ 0.0174532925 - return degrees * 0.0174532925 - -// Vector algebra. -/proc/squaredNorm(x, y) - return x*x + y*y - -/proc/norm(x, y) - return sqrt(squaredNorm(x, y)) - -/proc/IsPowerOfTwo(var/val) - return (val & (val-1)) == 0 - -/proc/RoundUpToPowerOfTwo(var/val) - return 2 ** -round(-log(2,val)) diff --git a/code/_helpers/matrices.dm b/code/_helpers/matrices.dm index 2e7247543c..a5ef701c2d 100644 --- a/code/_helpers/matrices.dm +++ b/code/_helpers/matrices.dm @@ -50,7 +50,7 @@ /proc/color_rotation(angle) if(angle == 0) return color_identity() - angle = Clamp(angle, -180, 180) + angle = CLAMP(angle, -180, 180) var/cos = cos(angle) var/sin = sin(angle) @@ -65,7 +65,7 @@ //Makes everything brighter or darker without regard to existing color or brightness /proc/color_brightness(power) - power = Clamp(power, -255, 255) + power = CLAMP(power, -255, 255) power = power/255 return list(1,0,0, 0,1,0, 0,0,1, power,power,power) @@ -85,7 +85,7 @@ //Exxagerates or removes brightness /proc/color_contrast(value) - value = Clamp(value, -100, 100) + value = CLAMP(value, -100, 100) if(value == 0) return color_identity() @@ -108,7 +108,7 @@ /proc/color_saturation(value as num) if(value == 0) return color_identity() - value = Clamp(value, -100, 100) + value = CLAMP(value, -100, 100) if(value > 0) value *= 3 var/x = 1 + value / 100 diff --git a/code/_helpers/mobs.dm b/code/_helpers/mobs.dm index bc111ccbcb..96c97ec9f6 100644 --- a/code/_helpers/mobs.dm +++ b/code/_helpers/mobs.dm @@ -177,7 +177,7 @@ Proc for attack log creation, because really why not else return pick("chest", "groin") -/proc/do_mob(mob/user , mob/target, time = 30, target_zone = 0, uninterruptible = 0, progress = 1) +/proc/do_mob(mob/user , mob/target, time = 30, target_zone = 0, uninterruptible = FALSE, progress = TRUE, ignore_movement = FALSE) if(!user || !target) return 0 var/user_loc = user.loc @@ -190,37 +190,41 @@ Proc for attack log creation, because really why not var/endtime = world.time+time var/starttime = world.time - . = 1 + . = TRUE while (world.time < endtime) stoplag(1) if (progress) progbar.update(world.time - starttime) if(!user || !target) - . = 0 + . = FALSE break if(uninterruptible) continue - if(!user || user.incapacitated() || user.loc != user_loc) - . = 0 + if(!user || user.incapacitated()) + . = FALSE break - if(target.loc != target_loc) - . = 0 + if(user.loc != user_loc && !ignore_movement) + . = FALSE + break + + if(target.loc != target_loc && !ignore_movement) + . = FALSE break if(user.get_active_hand() != holding) - . = 0 + . = FALSE break if(target_zone && user.zone_sel.selecting != target_zone) - . = 0 + . = FALSE break if (progbar) qdel(progbar) -/proc/do_after(mob/user, delay, atom/target = null, needhand = 1, progress = 1, var/incapacitation_flags = INCAPACITATION_DEFAULT) +/proc/do_after(mob/user, delay, atom/target = null, needhand = TRUE, progress = TRUE, incapacitation_flags = INCAPACITATION_DEFAULT, ignore_movement = FALSE, max_distance = null) if(!user) return 0 if(!delay) @@ -242,23 +246,35 @@ Proc for attack log creation, because really why not . = 1 while (world.time < endtime) stoplag(1) - if (progress) + if(progress) progbar.update(world.time - starttime) - if(!user || user.incapacitated(incapacitation_flags) || user.loc != original_loc) - . = 0 + if(!user || user.incapacitated(incapacitation_flags)) + . = FALSE break - if(target_loc && (QDELETED(target) || target_loc != target.loc)) - . = 0 + if(user.loc != original_loc && !ignore_movement) + . = FALSE + break + + if(target_loc && (QDELETED(target))) + . = FALSE + break + + if(target && target_loc != target.loc && !ignore_movement) + . = FALSE break if(needhand) if(user.get_active_hand() != holding) - . = 0 + . = FALSE break - if (progbar) + if(max_distance && target && get_dist(user, target) > max_distance) + . = FALSE + break + + if(progbar) qdel(progbar) /atom/proc/living_mobs(var/range = world.view) @@ -285,16 +301,3 @@ Proc for attack log creation, because really why not else . = getCompoundIcon(desired) cached_character_icons[cachekey] = . - -/proc/getviewsize(view) - var/viewX - var/viewY - if(isnum(view)) - var/totalviewrange = 1 + 2 * view - viewX = totalviewrange - viewY = totalviewrange - else - var/list/viewrangelist = splittext(view,"x") - viewX = text2num(viewrangelist[1]) - viewY = text2num(viewrangelist[2]) - return list(viewX, viewY) diff --git a/code/_helpers/sorts/comparators.dm b/code/_helpers/sorts/comparators.dm index 7fd07ec711..73ad3d847c 100644 --- a/code/_helpers/sorts/comparators.dm +++ b/code/_helpers/sorts/comparators.dm @@ -19,6 +19,9 @@ /proc/cmp_subsystem_priority(datum/controller/subsystem/a, datum/controller/subsystem/b) return a.priority - b.priority +/proc/cmp_timer(datum/timedevent/a, datum/timedevent/b) + return a.timeToRun - b.timeToRun + // Sorts qdel statistics recorsd by time and count /proc/cmp_qdel_item_time(datum/qdel_item/A, datum/qdel_item/B) . = B.hard_delete_time - A.hard_delete_time diff --git a/code/_helpers/time.dm b/code/_helpers/time.dm index ce640731a6..c075925fdd 100644 --- a/code/_helpers/time.dm +++ b/code/_helpers/time.dm @@ -16,8 +16,8 @@ #define TICK *world.tick_lag #define TICKS *world.tick_lag -#define DS2TICKS(DS) (DS/world.tick_lag) // Convert deciseconds to ticks -#define TICKS2DS(T) (T TICKS) // Convert ticks to deciseconds +#define DS2TICKS(DS) ((DS)/world.tick_lag) // Convert deciseconds to ticks +#define TICKS2DS(T) ((T) TICKS) // Convert ticks to deciseconds /proc/get_game_time() var/global/time_offset = 0 @@ -140,103 +140,36 @@ var/round_start_time = 0 . += CEILING(i*DELTA_CALC, 1) sleep(i*world.tick_lag*DELTA_CALC) i *= 2 - while (TICK_USAGE > min(TICK_LIMIT_TO_RUN, GLOB.CURRENT_TICKLIMIT)) + while (TICK_USAGE > min(TICK_LIMIT_TO_RUN, Master.current_ticklimit)) #undef DELTA_CALC //Takes a value of time in deciseconds. //Returns a text value of that number in hours, minutes, or seconds. -/proc/DisplayTimeText(time_value, truncate = FALSE) - var/second = (time_value)*0.1 - var/second_adjusted = null - var/second_rounded = FALSE - var/minute = null - var/hour = null - var/day = null - +/proc/DisplayTimeText(time_value, round_seconds_to = 0.1) + var/second = round(time_value * 0.1, round_seconds_to) if(!second) - return "0 seconds" - if(second >= 60) - minute = FLOOR(second/60, 1) - second = round(second - (minute*60), 0.1) - second_rounded = TRUE - if(second) //check if we still have seconds remaining to format, or if everything went into minute. - second_adjusted = round(second) //used to prevent '1 seconds' being shown - if(day || hour || minute) - if(second_adjusted == 1 && second >= 1) - second = " and 1 second" - else if(second > 1) - second = " and [second_adjusted] seconds" - else //shows a fraction if seconds is < 1 - if(second_rounded) //no sense rounding again if it's already done - second = " and [second] seconds" - else - second = " and [round(second, 0.1)] seconds" - else - if(second_adjusted == 1 && second >= 1) - second = "[truncate ? "second" : "1 second"]" - else if(second > 1) - second = "[second_adjusted] seconds" - else - if(second_rounded) - second = "[second] seconds" - else - second = "[round(second, 0.1)] seconds" - else - second = null - - if(!minute) - return "[second]" - if(minute >= 60) - hour = FLOOR(minute/60, 1) - minute = (minute - (hour*60)) - if(minute) //alot simpler from here since you don't have to worry about fractions - if(minute != 1) - if((day || hour) && second) - minute = ", [minute] minutes" - else if((day || hour) && !second) - minute = " and [minute] minutes" - else - minute = "[minute] minutes" - else - if((day || hour) && second) - minute = ", 1 minute" - else if((day || hour) && !second) - minute = " and 1 minute" - else - minute = "[truncate ? "minute" : "1 minute"]" - else - minute = null - - if(!hour) - return "[minute][second]" - if(hour >= 24) - day = FLOOR(hour/24, 1) - hour = (hour - (day*24)) + return "right now" + if(second < 60) + return "[second] second[(second != 1)? "s":""]" + var/minute = FLOOR(second / 60, 1) + second = MODULUS(second, 60) + var/secondT + if(second) + secondT = " and [second] second[(second != 1)? "s":""]" + if(minute < 60) + return "[minute] minute[(minute != 1)? "s":""][secondT]" + var/hour = FLOOR(minute / 60, 1) + minute = MODULUS(minute, 60) + var/minuteT + if(minute) + minuteT = " and [minute] minute[(minute != 1)? "s":""]" + if(hour < 24) + return "[hour] hour[(hour != 1)? "s":""][minuteT][secondT]" + var/day = FLOOR(hour / 24, 1) + hour = MODULUS(hour, 24) + var/hourT if(hour) - if(hour != 1) - if(day && (minute || second)) - hour = ", [hour] hours" - else if(day && (!minute || !second)) - hour = " and [hour] hours" - else - hour = "[hour] hours" - else - if(day && (minute || second)) - hour = ", 1 hour" - else if(day && (!minute || !second)) - hour = " and 1 hour" - else - hour = "[truncate ? "hour" : "1 hour"]" - else - hour = null - - if(!day) - return "[hour][minute][second]" - if(day > 1) - day = "[day] days" - else - day = "[truncate ? "day" : "1 day"]" - - return "[day][hour][minute][second]" \ No newline at end of file + hourT = " and [hour] hour[(hour != 1)? "s":""]" + return "[day] day[(day != 1)? "s":""][hourT][minuteT][secondT]" diff --git a/code/_helpers/type2type.dm b/code/_helpers/type2type.dm index 0316e1d186..bdfa4e0fbb 100644 --- a/code/_helpers/type2type.dm +++ b/code/_helpers/type2type.dm @@ -242,3 +242,42 @@ /proc/isLeap(y) return ((y) % 4 == 0 && ((y) % 100 != 0 || (y) % 400 == 0)) + +//Takes a string and a datum +//The string is well, obviously the string being checked +//The datum is used as a source for var names, to check validity +//Otherwise every single word could technically be a variable! +/proc/string2listofvars(var/t_string, var/datum/var_source) + if(!t_string || !var_source) + return list() + + . = list() + + var/var_found = findtext(t_string,"\[") //Not the actual variables, just a generic "should we even bother" check + if(var_found) + //Find var names + + // "A dog said hi [name]!" + // splittext() --> list("A dog said hi ","name]!" + // jointext() --> "A dog said hi name]!" + // splittext() --> list("A","dog","said","hi","name]!") + + t_string = replacetext(t_string,"\[","\[ ")//Necessary to resolve "word[var_name]" scenarios + var/list/list_value = splittext(t_string,"\[") + var/intermediate_stage = jointext(list_value, null) + + list_value = splittext(intermediate_stage," ") + for(var/value in list_value) + if(findtext(value,"]")) + value = splittext(value,"]") //"name]!" --> list("name","!") + for(var/A in value) + if(var_source.vars.Find(A)) + . += A + +/proc/get_end_section_of_type(type) + var/strtype = "[type]" + var/delim_pos = findlasttext(strtype, "/") + if(delim_pos == 0) + return strtype + return copytext(strtype, delim_pos) + diff --git a/code/_helpers/unsorted.dm b/code/_helpers/unsorted.dm index 7590c0947c..4d865cd853 100644 --- a/code/_helpers/unsorted.dm +++ b/code/_helpers/unsorted.dm @@ -504,7 +504,7 @@ Turf and target are seperate in case you want to teleport some distance from a t moblist.Add(M) for(var/mob/new_player/M in sortmob) moblist.Add(M) - for(var/mob/living/simple_animal/M in sortmob) + for(var/mob/living/simple_mob/M in sortmob) moblist.Add(M) // for(var/mob/living/silicon/hivebot/M in sortmob) // mob_list.Add(M) @@ -831,14 +831,25 @@ proc/GaussRandRound(var/sigma,var/roundto) SX.air.copy_from(ST.zone.air) ST.zone.remove(ST) + var/z_level_change = FALSE + if(T.z != X.z) + z_level_change = TRUE + //Move the objects. Not forceMove because the object isn't "moving" really, it's supposed to be on the "same" turf. for(var/obj/O in T) O.loc = X + O.update_light() + if(z_level_change) // The objects still need to know if their z-level changed. + O.onTransitZ(T.z, X.z) //Move the mobs unless it's an AI eye or other eye type. for(var/mob/M in T) if(istype(M, /mob/observer/eye)) continue // If we need to check for more mobs, I'll add a variable M.loc = X + + if(z_level_change) // Same goes for mobs. + M.onTransitZ(T.z, X.z) + if(istype(M, /mob/living)) var/mob/living/LM = M LM.check_shadow() // Need to check their Z-shadow, which is normally done in forceMove(). @@ -1269,9 +1280,11 @@ var/mob/dview/dview_mob = new if(!center) return - if(!dview_mob) //VOREStation Add - Emergency Backup + //VOREStation Add - Emergency Backup + if(!dview_mob) dview_mob = new() WARNING("dview mob was lost, and had to be recreated!") + //VOREStation Add End dview_mob.loc = center @@ -1405,6 +1418,20 @@ var/mob/dview/dview_mob = new #undef NOT_FLAG #undef HAS_FLAG +//datum may be null, but it does need to be a typed var +#define NAMEOF(datum, X) (#X || ##datum.##X) + +#define VARSET_LIST_CALLBACK(target, var_name, var_value) CALLBACK(GLOBAL_PROC, /proc/___callbackvarset, ##target, ##var_name, ##var_value) +//dupe code because dm can't handle 3 level deep macros +#define VARSET_CALLBACK(datum, var, var_value) CALLBACK(GLOBAL_PROC, /proc/___callbackvarset, ##datum, NAMEOF(##datum, ##var), ##var_value) + +/proc/___callbackvarset(list_or_datum, var_name, var_value) + if(length(list_or_datum)) + list_or_datum[var_name] = var_value + return + var/datum/D = list_or_datum + D.vars[var_name] = var_value + // Returns direction-string, rounded to multiples of 22.5, from the first parameter to the second // N, NNE, NE, ENE, E, ESE, SE, SSE, S, SSW, SW, WSW, W, WNW, NW, NNW /proc/get_adir(var/turf/A, var/turf/B) @@ -1447,28 +1474,111 @@ var/mob/dview/dview_mob = new /proc/stack_trace(msg) CRASH(msg) -/datum/proc/stack_trace(msg) - CRASH(msg) - - //This is used to force compiletime errors if you incorrectly supply variable names. Crafty! #define NAMEOF(datum, X) (#X || ##datum.##X) -//Creates a callback with the specific purpose of setting a variable -#define VARSET_CALLBACK(datum, var, var_value) CALLBACK(GLOBAL_PROC, /proc/___callbackvarset, weakref(##datum), NAMEOF(##datum, ##var), ##var_value) +/proc/pick_closest_path(value, list/matches = get_fancy_list_of_atom_types()) + if (value == FALSE) //nothing should be calling us with a number, so this is safe + value = input("Enter type to find (blank for all, cancel to cancel)", "Search for type") as null|text + if (isnull(value)) + return + value = trim(value) + if(!isnull(value) && value != "") + matches = filter_fancy_list(matches, value) -//Helper for the above -/proc/___callbackvarset(list_or_datum, var_name, var_value) - if(isweakref(list_or_datum)) - var/weakref/wr = list_or_datum - list_or_datum = wr.resolve() - if(!list_or_datum) + if(matches.len==0) return - if(length(list_or_datum)) - list_or_datum[var_name] = var_value - return - var/datum/D = list_or_datum - D.vars[var_name] = var_value + + var/chosen + if(matches.len==1) + chosen = matches[1] + else + chosen = input("Select a type", "Pick Type", matches[1]) as null|anything in matches + if(!chosen) + return + chosen = matches[chosen] + return chosen + +/proc/get_fancy_list_of_atom_types() + var/static/list/pre_generated_list + if (!pre_generated_list) //init + pre_generated_list = make_types_fancy(typesof(/atom)) + return pre_generated_list + +/proc/get_fancy_list_of_datum_types() + var/static/list/pre_generated_list + if (!pre_generated_list) //init + pre_generated_list = make_types_fancy(sortList(typesof(/datum) - typesof(/atom))) + return pre_generated_list + +/proc/filter_fancy_list(list/L, filter as text) + var/list/matches = new + for(var/key in L) + var/value = L[key] + if(findtext("[key]", filter) || findtext("[value]", filter)) + matches[key] = value + return matches + +/proc/make_types_fancy(var/list/types) + if (ispath(types)) + types = list(types) + . = list() + for(var/type in types) + var/typename = "[type]" + var/static/list/TYPES_SHORTCUTS = list( + /obj/effect/decal/cleanable = "CLEANABLE", + /obj/item/device/radio/headset = "HEADSET", + /obj/item/clothing/head/helmet/space = "SPESSHELMET", + /obj/item/weapon/book/manual = "MANUAL", + /obj/item/weapon/reagent_containers/food/drinks = "DRINK", + /obj/item/weapon/reagent_containers/food = "FOOD", + /obj/item/weapon/reagent_containers = "REAGENT_CONTAINERS", + /obj/machinery/atmospherics = "ATMOS_MECH", + /obj/machinery/portable_atmospherics = "PORT_ATMOS", + /obj/item/mecha_parts/mecha_equipment/weapon/ballistic/missile_rack = "MECHA_MISSILE_RACK", + /obj/item/mecha_parts/mecha_equipment = "MECHA_EQUIP", + /obj/item/organ = "ORGAN", + /obj/item = "ITEM", + /obj/machinery = "MACHINERY", + /obj/effect = "EFFECT", + /obj = "O", + /datum = "D", + /turf/simulated/wall = "S-WALL", + /turf/simulated/floor = "S-FLOOR", + /turf/simulated = "SIMULATED", + /turf/unsimulated/wall = "US-WALL", + /turf/unsimulated/floor = "US-FLOOR", + /turf/unsimulated = "UNSIMULATED", + /turf = "T", + /mob/living/carbon = "CARBON", + /mob/living/simple_mob = "SIMPLE", + /mob/living = "LIVING", + /mob = "M" + ) + for (var/tn in TYPES_SHORTCUTS) + if (copytext(typename,1, length("[tn]/")+1)=="[tn]/" /*findtextEx(typename,"[tn]/",1,2)*/ ) + typename = TYPES_SHORTCUTS[tn]+copytext(typename,length("[tn]/")) + break + .[typename] = type + +/proc/IsValidSrc(datum/D) + if(istype(D)) + return !QDELETED(D) + return FALSE + +// \ref behaviour got changed in 512 so this is necesary to replicate old behaviour. +// If it ever becomes necesary to get a more performant REF(), this lies here in wait +// #define REF(thing) (thing && istype(thing, /datum) && (thing:datum_flags & DF_USE_TAG) && thing:tag ? "[thing:tag]" : "\ref[thing]") +/proc/REF(input) + if(istype(input, /datum)) + var/datum/thing = input + if(thing.datum_flags & DF_USE_TAG) + if(!thing.tag) + thing.datum_flags &= ~DF_USE_TAG + stack_trace("A ref was requested of an object with DF_USE_TAG set but no tag: [thing]") + else + return "\[[url_encode(thing.tag)]\]" + return "\ref[input]" /proc/pass() - return + return \ No newline at end of file diff --git a/code/_helpers/vector.dm b/code/_helpers/vector.dm deleted file mode 100644 index 44d293734c..0000000000 --- a/code/_helpers/vector.dm +++ /dev/null @@ -1,141 +0,0 @@ -/* -plot_vector is a helper datum for plotting a path in a straight line towards a target turf. -This datum converts from world space (turf.x and turf.y) to pixel space, which the datum keeps track of itself. This -should work with any size turfs (i.e. 32x32, 64x64) as it references world.icon_size (note: not actually tested with -anything other than 32x32 turfs). - -setup() - This should be called after creating a new instance of a plot_vector datum. - This does the initial setup and calculations. Since we are travelling in a straight line we only need to calculate - the vector and x/y steps once. x/y steps are capped to 1 full turf, whichever is further. If we are travelling along - the y axis each step will be +/- 1 y, and the x movement reduced based on the angle (tangent calculation). After - this every subsequent step will be incremented based on these calculations. - Inputs: - source - the turf the object is starting from - target - the target turf the object is travelling towards - xo - starting pixel_x offset, typically won't be needed, but included in case someone has a need for it later - yo - same as xo, but for the y_pixel offset - -increment() - Adds the offset to the current location - incrementing it by one step along the vector. - -return_angle() - Returns the direction (angle in degrees) the object is travelling in. - - (N) - 90° - ^ - | - (W) 180° <--+--> 0° (E) - | - v - -90° - (S) - -return_hypotenuse() - Returns the distance of travel for each step of the vector, relative to each full step of movement. 1 is a full turf - length. Currently used as a multiplier for scaling effects that should be contiguous, like laser beams. - -return_location() - Returns a vector_loc datum containing the current location data of the object (see /datum/vector_loc). This includes - the turf it currently should be at, as well as the pixel offset from the centre of that turf. Typically increment() - would be called before this if you are going to move an object based on it's vector data. -*/ - -/datum/plot_vector - var/turf/source - var/turf/target - var/angle = 0 // direction of travel in degrees - var/loc_x = 0 // in pixels from the left edge of the map - var/loc_y = 0 // in pixels from the bottom edge of the map - var/loc_z = 0 // loc z is in world space coordinates (i.e. z level) - we don't care about measuring pixels for this - var/offset_x = 0 // distance to increment each step - var/offset_y = 0 - -/datum/plot_vector/proc/setup(var/turf/S, var/turf/T, var/xo = 0, var/yo = 0, var/angle_offset=0) - source = S - target = T - - if(!istype(source)) - source = get_turf(source) - if(!istype(target)) - target = get_turf(target) - - if(!istype(source) || !istype(target)) - return - - // convert coordinates to pixel space (default is 32px/turf, 8160px across for a size 255 map) - loc_x = source.x * world.icon_size + xo - loc_y = source.y * world.icon_size + yo - loc_z = source.z - - // calculate initial x and y difference - var/dx = target.x - source.x - var/dy = target.y - source.y - - // if we aren't moving anywhere; quit now - if(dx == 0 && dy == 0) - return - - // calculate the angle - angle = Atan2(dx, dy) + angle_offset - - // and some rounding to stop the increments jumping whole turfs - because byond favours certain angles - if(angle > -135 && angle < 45) - angle = Ceiling(angle) - else - angle = Floor(angle) - - // calculate the offset per increment step - if(abs(angle) in list(0, 45, 90, 135, 180)) // check if the angle is a cardinal - if(abs(angle) in list(0, 45, 135, 180)) // if so we can skip the trigonometry and set these to absolutes as - offset_x = sign(dx) // they will always be a full step in one or more directions - if(abs(angle) in list(45, 90, 135)) - offset_y = sign(dy) - else if(abs(dy) > abs(dx)) - offset_x = Cot(abs(angle)) // otherwise set the offsets - offset_y = sign(dy) - else - offset_x = sign(dx) - offset_y = Tan(angle) - if(dx < 0) - offset_y = -offset_y - - // multiply the offset by the turf pixel size - offset_x *= world.icon_size - offset_y *= world.icon_size - -/datum/plot_vector/proc/increment() - loc_x += offset_x - loc_y += offset_y - -/datum/plot_vector/proc/return_angle() - return angle - -/datum/plot_vector/proc/return_hypotenuse() - return sqrt(((offset_x / 32) ** 2) + ((offset_y / 32) ** 2)) - -/datum/plot_vector/proc/return_location(var/datum/vector_loc/data) - if(!data) - data = new() - data.loc = locate(round(loc_x / world.icon_size, 1), round(loc_y / world.icon_size, 1), loc_z) - if(!data.loc) - return - data.pixel_x = loc_x - (data.loc.x * world.icon_size) - data.pixel_y = loc_y - (data.loc.y * world.icon_size) - return data - -/* -vector_loc is a helper datum for returning precise location data from plot_vector. It includes the turf the object is in -as well as the pixel offsets. - -return_turf() - Returns the turf the object should be currently located in. -*/ -/datum/vector_loc - var/turf/loc - var/pixel_x - var/pixel_y - -/datum/vector_loc/proc/return_turf() - return loc diff --git a/code/_helpers/view.dm b/code/_helpers/view.dm new file mode 100644 index 0000000000..13ee837caa --- /dev/null +++ b/code/_helpers/view.dm @@ -0,0 +1,12 @@ +/proc/getviewsize(view) + var/viewX + var/viewY + if(isnum(view)) + var/totalviewrange = 1 + 2 * view + viewX = totalviewrange + viewY = totalviewrange + else + var/list/viewrangelist = splittext(view,"x") + viewX = text2num(viewrangelist[1]) + viewY = text2num(viewrangelist[2]) + return list(viewX, viewY) diff --git a/code/_macros.dm b/code/_macros.dm index 9cd11a6c15..0af691a90c 100644 --- a/code/_macros.dm +++ b/code/_macros.dm @@ -1,57 +1,7 @@ -#define Clamp(x, y, z) (x <= y ? y : (x >= z ? z : x)) - -#define CLAMP01(x) (Clamp(x, 0, 1)) - #define span(class, text) ("[text]") #define get_turf(A) get_step(A,0) -#define isAI(A) istype(A, /mob/living/silicon/ai) - -#define isalien(A) istype(A, /mob/living/carbon/alien) - -#define isanimal(A) istype(A, /mob/living/simple_animal) - -#define isairlock(A) istype(A, /obj/machinery/door/airlock) - -#define isbrain(A) istype(A, /mob/living/carbon/brain) - -#define iscarbon(A) istype(A, /mob/living/carbon) - -#define iscorgi(A) istype(A, /mob/living/simple_animal/corgi) - -#define isEye(A) istype(A, /mob/observer/eye) - -#define ishuman(A) istype(A, /mob/living/carbon/human) - -#define isliving(A) istype(A, /mob/living) - -#define ismouse(A) istype(A, /mob/living/simple_animal/mouse) - -#define isnewplayer(A) istype(A, /mob/new_player) - -#define isobserver(A) istype(A, /mob/observer/dead) - -#define isorgan(A) istype(A, /obj/item/organ/external) - -#define ispAI(A) istype(A, /mob/living/silicon/pai) - -#define isrobot(A) istype(A, /mob/living/silicon/robot) - -#define issilicon(A) istype(A, /mob/living/silicon) - -#define isvoice(A) istype(A, /mob/living/voice) - -#define isslime(A) istype(A, /mob/living/simple_animal/slime) - -#define isbot(A) istype(A, /mob/living/bot) - -#define isxeno(A) istype(A, /mob/living/simple_animal/xeno) - -#define isopenspace(A) istype(A, /turf/simulated/open) - -#define isweakref(A) istype(A, /weakref) - #define RANDOM_BLOOD_TYPE pick(4;"O-", 36;"O+", 3;"A-", 28;"A+", 1;"B-", 20;"B+", 1;"AB-", 5;"AB+") #define to_chat(target, message) target << message @@ -62,35 +12,12 @@ #define to_file(file_entry, source_var) file_entry << source_var #define from_file(file_entry, target_var) file_entry >> target_var +// From TG, might be useful to have. +// Didn't port SEND_TEXT() since to_chat() appears to serve the same purpose. +#define DIRECT_OUTPUT(A, B) A << B +#define SEND_IMAGE(target, image) DIRECT_OUTPUT(target, image) +#define SEND_SOUND(target, sound) DIRECT_OUTPUT(target, sound) #define CanInteract(user, state) (CanUseTopic(user, state) == STATUS_INTERACTIVE) -#define QDEL_NULL_LIST(x) if(x) { for(var/y in x) { qdel(y) } ; x = null } - -#define QDEL_NULL(x) if(x) { qdel(x) ; x = null } - #define ARGS_DEBUG log_debug("[__FILE__] - [__LINE__]") ; for(var/arg in args) { log_debug("\t[log_info_line(arg)]") } - -// Helper macros to aid in optimizing lazy instantiation of lists. -// All of these are null-safe, you can use them without knowing if the list var is initialized yet - -//Picks from the list, with some safeties, and returns the "default" arg if it fails -#define DEFAULTPICK(L, default) ((istype(L, /list) && L:len) ? pick(L) : default) -// Ensures L is initailized after this point -#define LAZYINITLIST(L) if (!L) L = list() -// Sets a L back to null iff it is empty -#define UNSETEMPTY(L) if (L && !L.len) L = null -// Removes I from list L, and sets I to null if it is now empty -#define LAZYREMOVE(L, I) if(L) { L -= I; if(!L.len) { L = null; } } -// Adds I to L, initalizing I if necessary -#define LAZYADD(L, I) if(!L) { L = list(); } L += I; -// Reads I from L safely - Works with both associative and traditional lists. -#define LAZYACCESS(L, I) (L ? (isnum(I) ? (I > 0 && I <= L.len ? L[I] : null) : L[I]) : null) -// Reads the length of L, returning 0 if null -#define LAZYLEN(L) length(L) -// Null-safe L.Cut() -#define LAZYCLEARLIST(L) if(L) L.Cut() -// Reads L or an empty list if L is not a list. Note: Does NOT assign, L may be an expression. -#define SANITIZE_LIST(L) ( islist(L) ? L : list() ) -// Turns LAZYINITLIST(L) L[K] = V into ... for associated lists -#define LAZYSET(L, K, V) if(!L) { L = list(); } L[K] = V; \ No newline at end of file diff --git a/code/_onclick/click.dm b/code/_onclick/click.dm index 17b62d739f..643ab6d790 100644 --- a/code/_onclick/click.dm +++ b/code/_onclick/click.dm @@ -76,7 +76,7 @@ if(!locate(/turf) in list(A, A.loc)) // Prevents inventory from being drilled return var/obj/mecha/M = loc - return M.click_action(A, src) + return M.click_action(A, src, params) if(restrained()) setClickCooldown(10) @@ -282,10 +282,10 @@ Laser Eyes: as the name implies, handles this since nothing else does currently face_atom: turns the mob towards what you clicked on */ -/mob/proc/LaserEyes(atom/A) +/mob/proc/LaserEyes(atom/A, params) return -/mob/living/LaserEyes(atom/A) +/mob/living/LaserEyes(atom/A, params) setClickCooldown(4) var/turf/T = get_turf(src) @@ -293,8 +293,11 @@ LE.icon = 'icons/effects/genetics.dmi' LE.icon_state = "eyelasers" playsound(usr.loc, 'sound/weapons/taser2.ogg', 75, 1) - LE.launch(A) -/mob/living/carbon/human/LaserEyes() + LE.firer = src + LE.preparePixelProjectile(A, src, params) + LE.fire() + +/mob/living/carbon/human/LaserEyes(atom/A, params) if(nutrition>0) ..() nutrition = max(nutrition - rand(1,5),0) diff --git a/code/_onclick/hud/action.dm b/code/_onclick/hud/action.dm index 2b29fa6492..b5299cd77b 100644 --- a/code/_onclick/hud/action.dm +++ b/code/_onclick/hud/action.dm @@ -82,7 +82,7 @@ /datum/action/proc/Deactivate() return -/datum/action/proc/Process() +/datum/action/process() return /datum/action/proc/CheckRemoval(mob/living/user) // 1 if action is no longer valid for this mob and should be removed diff --git a/code/_onclick/hud/fullscreen.dm b/code/_onclick/hud/fullscreen.dm index 94a067200a..2a92ba20bc 100644 --- a/code/_onclick/hud/fullscreen.dm +++ b/code/_onclick/hud/fullscreen.dm @@ -98,7 +98,7 @@ /obj/screen/fullscreen/flash icon = 'icons/mob/screen1.dmi' screen_loc = "WEST,SOUTH to EAST,NORTH" - icon_state = "flash" + icon_state = "flash_static" /obj/screen/fullscreen/flash/noise icon_state = "noise" diff --git a/code/_onclick/hud/hud.dm b/code/_onclick/hud/hud.dm index 8b32d1447e..fef0301c81 100644 --- a/code/_onclick/hud/hud.dm +++ b/code/_onclick/hud/hud.dm @@ -316,8 +316,6 @@ datum/hud/New(mob/owner) mymob.instantiate_hud(src) else if(isalien(mymob)) larva_hud() - else if(isslime(mymob)) - slime_hud() else if(isAI(mymob)) ai_hud() else if(isobserver(mymob)) diff --git a/code/_onclick/hud/other_mobs.dm b/code/_onclick/hud/other_mobs.dm index f1b9165a26..6a2a2a0f45 100644 --- a/code/_onclick/hud/other_mobs.dm +++ b/code/_onclick/hud/other_mobs.dm @@ -23,7 +23,7 @@ mymob.client.screen += list(blobpwrdisplay, blobhealthdisplay) mymob.client.screen += mymob.client.void - +/* /datum/hud/proc/slime_hud(ui_style = 'icons/mob/screen1_Midnight.dmi') src.adding = list() @@ -92,23 +92,20 @@ mymob.client.screen += mymob.client.void return - - -/mob/living/simple_animal/construct/instantiate_hud(var/datum/hud/HUD) - ..(HUD) +*/ // HUD.construct_hud() //Archaic. /* /datum/hud/proc/construct_hud() var/constructtype - if(istype(mymob,/mob/living/simple_animal/construct/armoured) || istype(mymob,/mob/living/simple_animal/construct/behemoth)) + if(istype(mymob,/mob/living/simple_mob/construct/armoured) || istype(mymob,/mob/living/simple_mob/construct/behemoth)) constructtype = "juggernaut" - else if(istype(mymob,/mob/living/simple_animal/construct/builder)) + else if(istype(mymob,/mob/living/simple_mob/construct/builder)) constructtype = "artificer" - else if(istype(mymob,/mob/living/simple_animal/construct/wraith)) + else if(istype(mymob,/mob/living/simple_mob/construct/wraith)) constructtype = "wraith" - else if(istype(mymob,/mob/living/simple_animal/construct/harvester)) + else if(istype(mymob,/mob/living/simple_mob/construct/harvester)) constructtype = "harvester" if(constructtype) diff --git a/code/_onclick/hud/screen_objects_vr.dm b/code/_onclick/hud/screen_objects_vr.dm index 6dcab650a4..ea6b72cd10 100644 --- a/code/_onclick/hud/screen_objects_vr.dm +++ b/code/_onclick/hud/screen_objects_vr.dm @@ -1,15 +1,15 @@ -/obj/screen/proc/Click_vr(location, control, params) +/obj/screen/proc/Click_vr(location, control, params) //VORESTATION AI TEMPORARY REMOVAL if(!usr) return 1 switch(name) //Shadekin if("darkness") - var/mob/living/simple_animal/shadekin/sk = usr + var/mob/living/simple_mob/shadekin/sk = usr var/turf/T = get_turf(sk) var/darkness = round(1 - T.get_lumcount(),0.1) to_chat(usr,"Darkness: [darkness]") if("energy") - var/mob/living/simple_animal/shadekin/sk = usr + var/mob/living/simple_mob/shadekin/sk = usr to_chat(usr,"Energy: [sk.energy] ([sk.dark_gains])") diff --git a/code/_onclick/item_attack.dm b/code/_onclick/item_attack.dm index d1a61ec8f4..a1f2335a9d 100644 --- a/code/_onclick/item_attack.dm +++ b/code/_onclick/item_attack.dm @@ -60,7 +60,7 @@ avoid code duplication. This includes items that may sometimes act as a standard // Same as above but actually does useful things. // W is the item being used in the attack, if any. modifier is if the attack should be longer or shorter than usual, for whatever reason. /mob/living/get_attack_speed(var/obj/item/W) - var/speed = DEFAULT_ATTACK_COOLDOWN + var/speed = base_attack_cooldown if(W && istype(W)) speed = W.attackspeed for(var/datum/modifier/M in modifiers) diff --git a/code/_onclick/other_mobs.dm b/code/_onclick/other_mobs.dm index 729330ddaa..e367769b07 100644 --- a/code/_onclick/other_mobs.dm +++ b/code/_onclick/other_mobs.dm @@ -68,58 +68,3 @@ */ /mob/new_player/ClickOn() return - -/* - Animals -*/ -/mob/living/simple_animal/UnarmedAttack(var/atom/A, var/proximity) - if(!(. = ..())) - return - - setClickCooldown(get_attack_speed()) - - if(has_hands && istype(A,/obj) && a_intent != I_HURT) - var/obj/O = A - return O.attack_hand(src) - - switch(a_intent) - if(I_HELP) - if(isliving(A)) - custom_emote(1,"[pick(friendly)] [A]!") - - if(I_HURT) - if(prob(spattack_prob)) - if(spattack_min_range <= 1) - SpecialAtkTarget() - - - else if(melee_damage_upper == 0 && istype(A,/mob/living)) - custom_emote(1,"[pick(friendly)] [A]!") - - - else - DoPunch(A) - - if(I_GRAB) - if(has_hands) - A.attack_hand(src) - - if(I_DISARM) - if(has_hands) - A.attack_hand(src) - -/mob/living/simple_animal/RangedAttack(var/atom/A) - setClickCooldown(get_attack_speed()) - var/distance = get_dist(src, A) - - if(prob(spattack_prob) && (distance >= spattack_min_range) && (distance <= spattack_max_range)) - target_mob = A - SpecialAtkTarget() - target_mob = null - return - - if(ranged && distance <= shoot_range) - target_mob = A - ShootTarget(A) - target_mob = null - diff --git a/code/controllers/ProcessScheduler/core/process.dm b/code/controllers/ProcessScheduler/core/process.dm index 2965a52abe..6bbcb62a54 100644 --- a/code/controllers/ProcessScheduler/core/process.dm +++ b/code/controllers/ProcessScheduler/core/process.dm @@ -155,7 +155,7 @@ /datum/controller/process/proc/setup() -/datum/controller/process/proc/process() +/datum/controller/process/process() started() doWork() finished() diff --git a/code/controllers/ProcessScheduler/core/processScheduler.dm b/code/controllers/ProcessScheduler/core/processScheduler.dm index 86dcdac287..c5b658de15 100644 --- a/code/controllers/ProcessScheduler/core/processScheduler.dm +++ b/code/controllers/ProcessScheduler/core/processScheduler.dm @@ -70,7 +70,7 @@ var/global/datum/controller/processScheduler/processScheduler spawn(0) process() -/datum/controller/processScheduler/proc/process() +/datum/controller/processScheduler/process() while(isRunning) checkRunningProcesses() queueProcesses() diff --git a/code/controllers/Processes/air.dm b/code/controllers/Processes/air.dm deleted file mode 100644 index bdb9fe7fbd..0000000000 --- a/code/controllers/Processes/air.dm +++ /dev/null @@ -1,23 +0,0 @@ -/datum/controller/process/air/setup() - name = "air" - schedule_interval = 20 // every 2 seconds - start_delay = 4 - - if(!air_master) - air_master = new - air_master.Setup() - -/datum/controller/process/air/doWork() - if(!air_processing_killed) - if(!air_master.Tick()) //Runtimed. - air_master.failed_ticks++ - - if(air_master.failed_ticks > 5) - world << "RUNTIMES IN ATMOS TICKER. Killing air simulation!" - world.log << "### ZAS SHUTDOWN" - - message_admins("ZASALERT: Shutting down! status: [air_master.tick_progress]") - log_admin("ZASALERT: Shutting down! status: [air_master.tick_progress]") - - air_processing_killed = TRUE - air_master.failed_ticks = 0 diff --git a/code/controllers/Processes/alarm.dm b/code/controllers/Processes/alarm.dm index 47f311efea..3590149811 100644 --- a/code/controllers/Processes/alarm.dm +++ b/code/controllers/Processes/alarm.dm @@ -11,7 +11,7 @@ var/datum/controller/process/alarm/alarm_manager /datum/controller/process/alarm - var/list/datum/alarm/all_handlers + var/list/datum/alarm/all_handlers = list() /datum/controller/process/alarm/setup() name = "alarm" diff --git a/code/controllers/Processes/chemistry.dm b/code/controllers/Processes/chemistry.dm index 084de83e28..89d3cc01be 100644 --- a/code/controllers/Processes/chemistry.dm +++ b/code/controllers/Processes/chemistry.dm @@ -1,33 +1,33 @@ -var/datum/controller/process/chemistry/chemistryProcess - -/datum/controller/process/chemistry - var/list/active_holders - var/list/chemical_reactions - var/list/chemical_reagents - -/datum/controller/process/chemistry/setup() - name = "chemistry" - schedule_interval = 20 // every 2 seconds - chemistryProcess = src - active_holders = list() - chemical_reactions = chemical_reactions_list - chemical_reagents = chemical_reagents_list - -/datum/controller/process/chemistry/statProcess() - ..() - stat(null, "[active_holders.len] reagent holder\s") - -/datum/controller/process/chemistry/doWork() - for(last_object in active_holders) - var/datum/reagents/holder = last_object - if(!holder.process_reactions()) - active_holders -= holder - SCHECK - -/datum/controller/process/chemistry/proc/mark_for_update(var/datum/reagents/holder) - if(holder in active_holders) - return - - //Process once, right away. If we still need to continue then add to the active_holders list and continue later - if(holder.process_reactions()) - active_holders += holder +var/datum/controller/process/chemistry/chemistryProcess + +/datum/controller/process/chemistry + var/list/active_holders + var/list/chemical_reactions + var/list/chemical_reagents + +/datum/controller/process/chemistry/setup() + name = "chemistry" + schedule_interval = 20 // every 2 seconds + chemistryProcess = src + active_holders = list() + chemical_reactions = chemical_reactions_list + chemical_reagents = chemical_reagents_list + +/datum/controller/process/chemistry/statProcess() + ..() + stat(null, "[active_holders.len] reagent holder\s") + +/datum/controller/process/chemistry/doWork() + for(last_object in active_holders) + var/datum/reagents/holder = last_object + if(!holder.process_reactions()) + active_holders -= holder + SCHECK + +/datum/controller/process/chemistry/proc/mark_for_update(var/datum/reagents/holder) + if(holder in active_holders) + return + + //Process once, right away. If we still need to continue then add to the active_holders list and continue later + if(holder.process_reactions()) + active_holders += holder \ No newline at end of file diff --git a/code/controllers/Processes/event.dm b/code/controllers/Processes/event.dm deleted file mode 100644 index 72bc01613d..0000000000 --- a/code/controllers/Processes/event.dm +++ /dev/null @@ -1,6 +0,0 @@ -/datum/controller/process/event/setup() - name = "event controller" - schedule_interval = 20 // every 2 seconds - -/datum/controller/process/event/doWork() - event_manager.process() \ No newline at end of file diff --git a/code/controllers/Processes/obj.dm b/code/controllers/Processes/obj.dm deleted file mode 100644 index 6032cbb541..0000000000 --- a/code/controllers/Processes/obj.dm +++ /dev/null @@ -1,26 +0,0 @@ -/datum/controller/process/obj/setup() - name = "obj" - schedule_interval = 20 // every 2 seconds - start_delay = 8 - -/datum/controller/process/obj/started() - ..() - if(!processing_objects) - processing_objects = list() - -/datum/controller/process/obj/doWork() - for(last_object in processing_objects) - var/datum/O = last_object - if(!QDELETED(O)) - try - O:process() - catch(var/exception/e) - catchException(e, O) - SCHECK - else - catchBadType(O) - processing_objects -= O - -/datum/controller/process/obj/statProcess() - ..() - stat(null, "[processing_objects.len] objects") \ No newline at end of file diff --git a/code/controllers/Processes/scheduler.dm b/code/controllers/Processes/scheduler.dm index c68ef116b6..ac5e4696ab 100644 --- a/code/controllers/Processes/scheduler.dm +++ b/code/controllers/Processes/scheduler.dm @@ -40,7 +40,7 @@ // We are being killed. Least we can do is deregister all those events we registered /datum/controller/process/scheduler/onKill() for(var/st in scheduled_tasks) - destroyed_event.unregister(st, src) + GLOB.destroyed_event.unregister(st, src) /datum/controller/process/scheduler/statProcess() ..() @@ -148,7 +148,7 @@ /datum/scheduled_task/source/New(var/trigger_time, var/datum/source, var/procedure, var/list/arguments, var/proc/task_after_process, var/list/task_after_process_args) src.source = source - destroyed_event.register(src.source, src, /datum/scheduled_task/source/proc/source_destroyed) + GLOB.destroyed_event.register(src.source, src, /datum/scheduled_task/source/proc/source_destroyed) ..(trigger_time, procedure, arguments, task_after_process, task_after_process_args) /datum/scheduled_task/source/Destroy() diff --git a/code/controllers/Processes/sun.dm b/code/controllers/Processes/sun.dm deleted file mode 100644 index f09806cef5..0000000000 --- a/code/controllers/Processes/sun.dm +++ /dev/null @@ -1,7 +0,0 @@ -/datum/controller/process/sun/setup() - name = "sun" - schedule_interval = 20 // every second - sun = new - -/datum/controller/process/sun/doWork() - sun.calc_position() diff --git a/code/controllers/Processes/supply.dm b/code/controllers/Processes/supply.dm index 2234b7a9ac..781e285371 100644 --- a/code/controllers/Processes/supply.dm +++ b/code/controllers/Processes/supply.dm @@ -65,7 +65,7 @@ var/datum/controller/supply/supply_controller = new() // Supply shuttle ticker - handles supply point regeneration // This is called by the process scheduler every thirty seconds -/datum/controller/supply/proc/process() +/datum/controller/supply/process() points += points_per_process //To stop things being sent to CentCom which should not be sent to centcomm. Recursively checks for these types. diff --git a/code/controllers/Processes/turf.dm b/code/controllers/Processes/turf.dm deleted file mode 100644 index bfced8f93b..0000000000 --- a/code/controllers/Processes/turf.dm +++ /dev/null @@ -1,16 +0,0 @@ -var/global/list/turf/processing_turfs = list() - -/datum/controller/process/turf/setup() - name = "turf" - schedule_interval = 20 // every 2 seconds - -/datum/controller/process/turf/doWork() - for(last_object in processing_turfs) - var/turf/T = last_object - if(T.process() == PROCESS_KILL) - processing_turfs.Remove(T) - SCHECK - -/datum/controller/process/turf/statProcess() - ..() - stat(null, "[processing_turfs.len] turf\s") \ No newline at end of file diff --git a/code/controllers/autotransfer.dm b/code/controllers/autotransfer.dm index 98e211ccf2..6d736509b3 100644 --- a/code/controllers/autotransfer.dm +++ b/code/controllers/autotransfer.dm @@ -9,12 +9,12 @@ datum/controller/transfer_controller/New() timerbuffer = config.vote_autotransfer_initial shift_hard_end = config.vote_autotransfer_initial + (config.vote_autotransfer_interval * 4) //VOREStation Edit //Change this "1" to how many extend votes you want there to be. shift_last_vote = shift_hard_end - config.vote_autotransfer_interval //VOREStation Edit - processing_objects += src + START_PROCESSING(SSobj, src) datum/controller/transfer_controller/Destroy() - processing_objects -= src + STOP_PROCESSING(SSobj, src) -datum/controller/transfer_controller/proc/process() +datum/controller/transfer_controller/process() currenttick = currenttick + 1 //VOREStation Edit START if (round_duration_in_ticks >= shift_last_vote - 2 MINUTES) diff --git a/code/controllers/configuration.dm b/code/controllers/configuration.dm index 1cdc7e2717..2e20e37970 100644 --- a/code/controllers/configuration.dm +++ b/code/controllers/configuration.dm @@ -60,7 +60,8 @@ var/list/gamemode_cache = list() var/humans_need_surnames = 0 var/allow_random_events = 0 // enables random events mid-round when set to 1 var/allow_ai = 1 // allow ai job - var/allow_ai_drones = 0 // allow ai controlled drones + var/allow_ai_shells = FALSE // allow AIs to enter and leave special borg shells at will, and for those shells to be buildable. + var/give_free_ai_shell = FALSE // allows a specific spawner object to instantiate a premade AI Shell var/hostedby = null var/respawn = 1 var/guest_jobban = 1 @@ -112,8 +113,14 @@ var/list/gamemode_cache = list() //Alert level description var/alert_desc_green = "All threats to the station have passed. Security may not have weapons visible, privacy laws are once again fully enforced." - var/alert_desc_blue_upto = "The station has received reliable information about possible hostile activity on the station. Security staff may have weapons visible, random searches are permitted." - var/alert_desc_blue_downto = "The immediate threat has passed. Security may no longer have weapons drawn at all times, but may continue to have them visible. Random searches are still allowed." + var/alert_desc_yellow_upto = "A minor security emergency has developed. Security personnel are to report to their supervisor for orders and may have weapons visible on their person. Privacy laws are still enforced." + var/alert_desc_yellow_downto = "Code yellow procedures are now in effect. Security personnel are to report to their supervisor for orders and may have weapons visible on their person. Privacy laws are still enforced." + var/alert_desc_violet_upto = "A major medical emergency has developed. Medical personnel are required to report to their supervisor for orders, and non-medical personnel are required to obey all relevant instructions from medical staff." + var/alert_desc_violet_downto = "Code violet procedures are now in effect; Medical personnel are required to report to their supervisor for orders, and non-medical personnel are required to obey relevant instructions from medical staff." + var/alert_desc_orange_upto = "A major engineering emergency has developed. Engineering personnel are required to report to their supervisor for orders, and non-engineering personnel are required to evacuate any affected areas and obey relevant instructions from engineering staff." + var/alert_desc_orange_downto = "Code orange procedures are now in effect; Engineering personnel are required to report to their supervisor for orders, and non-engineering personnel are required to evacuate any affected areas and obey relevant instructions from engineering staff." + var/alert_desc_blue_upto = "A major security emergency has developed. Security personnel are to report to their supervisor for orders, are permitted to search staff and facilities, and may have weapons visible on their person." + var/alert_desc_blue_downto = "Code blue procedures are now in effect. Security personnel are to report to their supervisor for orders, are permitted to search staff and facilities, and may have weapons visible on their person." var/alert_desc_red_upto = "There is an immediate serious threat to the station. Security may have weapons unholstered at all times. Random searches are allowed and advised." var/alert_desc_red_downto = "The self-destruct mechanism has been deactivated, there is still however an immediate serious threat to the station. Security may have weapons unholstered at all times, random searches are allowed and advised." var/alert_desc_delta = "The station's self-destruct mechanism has been engaged. All crew are instructed to obey all instructions given by heads of staff. Any violations of these orders can be punished by death. This is not a drill." @@ -130,6 +137,7 @@ var/list/gamemode_cache = list() var/organ_regeneration_multiplier = 1 var/organs_decay var/default_brain_health = 400 + var/allow_headgibs = FALSE //Paincrit knocks someone down once they hit 60 shock_stage, so by default make it so that close to 100 additional damage needs to be dealt, //so that it's similar to HALLOSS. Lowered it a bit since hitting paincrit takes much longer to wear off than a halloss stun. @@ -220,7 +228,7 @@ var/list/gamemode_cache = list() var/aggressive_changelog = 0 - var/list/language_prefixes = list(",","#","-")//Default language prefixes + var/list/language_prefixes = list(",","#")//Default language prefixes var/show_human_death_message = 1 @@ -228,6 +236,8 @@ var/list/gamemode_cache = list() var/radiation_resistance_multiplier = 8.5 //VOREstation edit var/radiation_lower_limit = 0.35 //If the radiation level for a turf would be below this, ignore it. + var/random_submap_orientation = FALSE // If true, submaps loaded automatically can be rotated. + /datum/configuration/New() var/list/L = typesof(/datum/game_mode) - /datum/game_mode for (var/T in L) @@ -401,8 +411,11 @@ var/list/gamemode_cache = list() if ("allow_ai") config.allow_ai = 1 - if ("allow_ai_drones") - config.allow_ai_drones = 1 + if ("allow_ai_shells") + config.allow_ai_shells = TRUE + + if("give_free_ai_shell") + config.give_free_ai_shell = TRUE // if ("authentication") // config.enable_authentication = 1 @@ -748,6 +761,9 @@ var/list/gamemode_cache = list() if ("paranoia_logging") config.paranoia_logging = 1 + if("random_submap_orientation") + config.random_submap_orientation = 1 + else log_misc("Unknown setting in configuration: '[name]'") @@ -787,6 +803,8 @@ var/list/gamemode_cache = list() config.bones_can_break = value if("limbs_can_break") config.limbs_can_break = value + if("allow_headgibs") + config.allow_headgibs = TRUE if("run_speed") config.run_speed = value diff --git a/code/controllers/emergency_shuttle_controller.dm b/code/controllers/emergency_shuttle_controller.dm index 05468bee76..5dbfeb427a 100644 --- a/code/controllers/emergency_shuttle_controller.dm +++ b/code/controllers/emergency_shuttle_controller.dm @@ -26,7 +26,7 @@ var/global/datum/emergency_shuttle_controller/emergency_shuttle escape_pods = list() ..() -/datum/emergency_shuttle_controller/proc/process() +/datum/emergency_shuttle_controller/process() if (wait_for_launch) if (evac && auto_recall && world.time >= auto_recall_time) recall() @@ -195,6 +195,8 @@ var/global/datum/emergency_shuttle_controller/emergency_shuttle //returns 1 if the shuttle is not idle at centcom /datum/emergency_shuttle_controller/proc/online() + if(!shuttle) + return FALSE if (!shuttle.location) //not at centcom return 1 if (wait_for_launch || shuttle.moving_status != SHUTTLE_IDLE) diff --git a/code/controllers/globals.dm b/code/controllers/globals.dm index fa7b917194..56a9244347 100644 --- a/code/controllers/globals.dm +++ b/code/controllers/globals.dm @@ -38,8 +38,10 @@ GLOBAL_REAL(GLOB, /datum/controller/global_vars) stat("Globals:", statclick.update("Edit")) -/datum/controller/global_vars/VV_hidden() - return ..() + gvars_datum_protected_varlist +/datum/controller/global_vars/vv_edit_var(var_name, var_value) + if(gvars_datum_protected_varlist[var_name]) + return FALSE + return ..() /datum/controller/global_vars/Initialize(var/exclude_these) gvars_datum_init_order = list() diff --git a/code/controllers/master.dm b/code/controllers/master.dm index 02b29aa644..fad4ef9692 100644 --- a/code/controllers/master.dm +++ b/code/controllers/master.dm @@ -13,14 +13,6 @@ GLOBAL_REAL(Master, /datum/controller/master) = new //THIS IS THE INIT ORDER //Master -> SSPreInit -> GLOB -> world -> config -> SSInit -> Failsafe //GOT IT MEMORIZED? -GLOBAL_VAR_INIT(MC_restart_clear, 0) -GLOBAL_VAR_INIT(MC_restart_timeout, 0) -GLOBAL_VAR_INIT(MC_restart_count, 0) - -//current tick limit, assigned by the queue controller before running a subsystem. -//used by check_tick as well so that the procs subsystems call can obey that SS's tick limits -GLOBAL_VAR_INIT(CURRENT_TICKLIMIT, TICK_LIMIT_RUNNING) - /datum/controller/master name = "Master" @@ -62,6 +54,10 @@ GLOBAL_VAR_INIT(CURRENT_TICKLIMIT, TICK_LIMIT_RUNNING) var/static/restart_timeout = 0 var/static/restart_count = 0 + //current tick limit, assigned by the queue controller before running a subsystem. + //used by check_tick as well so that the procs subsystems call can obey that SS's tick limits + var/static/current_ticklimit + /datum/controller/master/New() // Highlander-style: there can only be one! Kill off the old and replace it with the new. var/list/_subsystems = list() @@ -98,14 +94,14 @@ GLOBAL_VAR_INIT(CURRENT_TICKLIMIT, TICK_LIMIT_RUNNING) // -1 if we encountered a runtime trying to recreate it /proc/Recreate_MC() . = -1 //so if we runtime, things know we failed - if (world.time < GLOB.MC_restart_timeout) + if (world.time < Master.restart_timeout) return 0 - if (world.time < GLOB.MC_restart_clear) - GLOB.MC_restart_count *= 0.5 + if (world.time < Master.restart_clear) + Master.restart_count *= 0.5 - var/delay = 50 * ++GLOB.MC_restart_count - GLOB.MC_restart_timeout = world.time + delay - GLOB.MC_restart_clear = world.time + (delay * 2) + var/delay = 50 * ++Master.restart_count + Master.restart_timeout = world.time + delay + Master.restart_clear = world.time + (delay * 2) Master.processing = FALSE //stop ticking this one try new/datum/controller/master() @@ -176,13 +172,13 @@ GLOBAL_VAR_INIT(CURRENT_TICKLIMIT, TICK_LIMIT_RUNNING) var/start_timeofday = REALTIMEOFDAY // Initialize subsystems. - GLOB.CURRENT_TICKLIMIT = config.tick_limit_mc_init + current_ticklimit = config.tick_limit_mc_init for (var/datum/controller/subsystem/SS in subsystems) if (SS.flags & SS_NO_INIT) continue SS.Initialize(REALTIMEOFDAY) CHECK_TICK - GLOB.CURRENT_TICKLIMIT = TICK_LIMIT_RUNNING + current_ticklimit = TICK_LIMIT_RUNNING var/time = (REALTIMEOFDAY - start_timeofday) / 10 var/msg = "Initializations complete within [time] second[time == 1 ? "" : "s"]!" @@ -293,7 +289,7 @@ GLOBAL_VAR_INIT(CURRENT_TICKLIMIT, TICK_LIMIT_RUNNING) tickdrift = max(0, MC_AVERAGE_FAST(tickdrift, (((REALTIMEOFDAY - init_timeofday) - (world.time - init_time)) / world.tick_lag))) var/starting_tick_usage = TICK_USAGE if (processing <= 0) - GLOB.CURRENT_TICKLIMIT = TICK_LIMIT_RUNNING + current_ticklimit = TICK_LIMIT_RUNNING sleep(10) continue @@ -302,7 +298,7 @@ GLOBAL_VAR_INIT(CURRENT_TICKLIMIT, TICK_LIMIT_RUNNING) // (because sleeps are processed in the order received, longer sleeps are more likely to run first) if (starting_tick_usage > TICK_LIMIT_MC) //if there isn't enough time to bother doing anything this tick, sleep a bit. sleep_delta *= 2 - GLOB.CURRENT_TICKLIMIT = TICK_LIMIT_RUNNING * 0.5 + current_ticklimit = TICK_LIMIT_RUNNING * 0.5 sleep(world.tick_lag * (processing * sleep_delta)) continue @@ -348,7 +344,7 @@ GLOBAL_VAR_INIT(CURRENT_TICKLIMIT, TICK_LIMIT_RUNNING) if (!error_level) iteration++ error_level++ - GLOB.CURRENT_TICKLIMIT = TICK_LIMIT_RUNNING + current_ticklimit = TICK_LIMIT_RUNNING sleep(10) continue @@ -360,7 +356,7 @@ GLOBAL_VAR_INIT(CURRENT_TICKLIMIT, TICK_LIMIT_RUNNING) if (!error_level) iteration++ error_level++ - GLOB.CURRENT_TICKLIMIT = TICK_LIMIT_RUNNING + current_ticklimit = TICK_LIMIT_RUNNING sleep(10) continue error_level-- @@ -371,9 +367,9 @@ GLOBAL_VAR_INIT(CURRENT_TICKLIMIT, TICK_LIMIT_RUNNING) iteration++ last_run = world.time src.sleep_delta = MC_AVERAGE_FAST(src.sleep_delta, sleep_delta) - GLOB.CURRENT_TICKLIMIT = TICK_LIMIT_RUNNING + current_ticklimit = TICK_LIMIT_RUNNING if (processing * sleep_delta <= world.tick_lag) - GLOB.CURRENT_TICKLIMIT -= (TICK_LIMIT_RUNNING * 0.25) //reserve the tail 1/4 of the next tick for the mc if we plan on running next tick + current_ticklimit -= (TICK_LIMIT_RUNNING * 0.25) //reserve the tail 1/4 of the next tick for the mc if we plan on running next tick sleep(world.tick_lag * (processing * sleep_delta)) @@ -465,7 +461,7 @@ GLOBAL_VAR_INIT(CURRENT_TICKLIMIT, TICK_LIMIT_RUNNING) // Reduce tick allocation for subsystems that overran on their last tick. tick_precentage = max(tick_precentage*0.5, tick_precentage-queue_node.tick_overrun) - GLOB.CURRENT_TICKLIMIT = round(TICK_USAGE + tick_precentage) + current_ticklimit = round(TICK_USAGE + tick_precentage) if (!(queue_node_flags & SS_TICKER)) ran_non_ticker = TRUE diff --git a/code/controllers/subsystem.dm b/code/controllers/subsystem.dm index dcb52a8cb3..8c0b6fa5de 100644 --- a/code/controllers/subsystem.dm +++ b/code/controllers/subsystem.dm @@ -6,6 +6,7 @@ var/priority = FIRE_PRIORITY_DEFAULT //When mutiple subsystems need to run in the same tick, higher priority subsystems will run first and be given a higher share of the tick before MC_TICK_CHECK triggers a sleep var/flags = 0 //see MC.dm in __DEFINES Most flags must be set on world start to take full effect. (You can also restart the mc to force them to process again) + var/subsystem_initialized = FALSE //set to TRUE after it has been initialized, will obviously never be set if the subsystem doesn't initialize var/runlevels = RUNLEVELS_DEFAULT //points of the game at which the SS can fire //set to 0 to prevent fire() calls, mostly for admin use or subsystems that may be resumed later @@ -154,6 +155,7 @@ //used to initialize the subsystem AFTER the map has loaded /datum/controller/subsystem/Initialize(start_timeofday) + subsystem_initialized = TRUE var/time = (REALTIMEOFDAY - start_timeofday) / 10 var/msg = "Initialized [name] subsystem within [time] second[time == 1 ? "" : "s"]!" to_chat(world, "[msg]") diff --git a/code/controllers/subsystems/ai.dm b/code/controllers/subsystems/ai.dm new file mode 100644 index 0000000000..8977818755 --- /dev/null +++ b/code/controllers/subsystems/ai.dm @@ -0,0 +1,36 @@ +SUBSYSTEM_DEF(ai) + name = "AI" + init_order = INIT_ORDER_AI + priority = FIRE_PRIORITY_AI + wait = 5 // This gets run twice a second, however this is technically two loops in one, with the second loop being run every four iterations. + flags = SS_NO_INIT|SS_TICKER + runlevels = RUNLEVEL_GAME | RUNLEVEL_POSTGAME + + var/list/processing = list() + var/list/currentrun = list() + +/datum/controller/subsystem/ai/stat_entry(msg_prefix) + var/list/msg = list(msg_prefix) + msg += "P:[processing.len]" + ..(msg.Join()) + +/datum/controller/subsystem/ai/fire(resumed = 0) + if (!resumed) + src.currentrun = processing.Copy() + + //cache for sanic speed (lists are references anyways) + var/list/currentrun = src.currentrun + + while(currentrun.len) + // var/mob/living/L = currentrun[currentrun.len] + var/datum/ai_holder/A = currentrun[currentrun.len] + --currentrun.len + if(!A || QDELETED(A)) // Doesn't exist or won't exist soon. + continue + if(times_fired % 4 == 0 && A.holder.stat != DEAD) + A.handle_strategicals() + if(A.holder.stat != DEAD) // The /TG/ version checks stat twice, presumably in-case processing somehow got the mob killed in that instant. + A.handle_tactics() + + if(MC_TICK_CHECK) + return diff --git a/code/controllers/subsystems/atoms.dm b/code/controllers/subsystems/atoms.dm index 7dae153d66..60fccf6dd3 100644 --- a/code/controllers/subsystems/atoms.dm +++ b/code/controllers/subsystems/atoms.dm @@ -77,7 +77,7 @@ SUBSYSTEM_DEF(atoms) var/start_tick = world.time - var/result = A.initialize(arglist(arguments)) + var/result = A.Initialize(arglist(arguments)) if(start_tick != world.time) BadInitializeCalls[the_type] |= BAD_INIT_SLEPT diff --git a/code/controllers/subsystems/creation.dm b/code/controllers/subsystems/creation.dm deleted file mode 100644 index d6f4b3c9c5..0000000000 --- a/code/controllers/subsystems/creation.dm +++ /dev/null @@ -1,29 +0,0 @@ -// -// Creation subsystem, which is responsible for initializing newly created objects. -// -SUBSYSTEM_DEF(creation) - name = "Creation" - priority = 14 - wait = 5 -// flags = SS_POST_FIRE_TIMING|SS_BACKGROUND|SS_NO_INIT - flags = SS_NO_FIRE|SS_NO_INIT - runlevels = RUNLEVELS_DEFAULT | RUNLEVEL_LOBBY - - var/list/atoms_needing_initialize = list() - - var/map_loading = FALSE - -/datum/controller/subsystem/creation/StartLoadingMap(var/quiet) - map_loading = TRUE - -/datum/controller/subsystem/creation/StopLoadingMap(var/quiet) - map_loading = FALSE - -/datum/controller/subsystem/creation/proc/initialize_late_atoms() - admin_notice("Initializing atoms in submap.", R_DEBUG) - var/total_atoms = atoms_needing_initialize.len - for(var/atom/movable/A in atoms_needing_initialize) - if(!QDELETED(A)) - A.initialize() - atoms_needing_initialize -= A - admin_notice("Initalized [total_atoms] atoms in submap.", R_DEBUG) \ No newline at end of file diff --git a/code/controllers/subsystems/events.dm b/code/controllers/subsystems/events.dm new file mode 100644 index 0000000000..24ce81fab4 --- /dev/null +++ b/code/controllers/subsystems/events.dm @@ -0,0 +1,72 @@ +SUBSYSTEM_DEF(events) + name = "Events" + wait = 20 + + var/list/datum/event/active_events = list() + var/list/datum/event/finished_events = list() + + var/list/datum/event/allEvents + var/list/datum/event_container/event_containers + + var/datum/event_meta/new_event = new + +/datum/controller/subsystem/events/Initialize() + event_containers = list( + EVENT_LEVEL_MUNDANE = new/datum/event_container/mundane, + EVENT_LEVEL_MODERATE = new/datum/event_container/moderate, + EVENT_LEVEL_MAJOR = new/datum/event_container/major + ) + allEvents = typesof(/datum/event) - /datum/event + return ..() + +/datum/controller/subsystem/events/fire(resumed) + for(var/datum/event/E in active_events) + E.process() + + for(var/i = EVENT_LEVEL_MUNDANE to EVENT_LEVEL_MAJOR) + var/list/datum/event_container/EC = event_containers[i] + EC.process() + +/datum/controller/subsystem/events/Recover() + if(SSevents.active_events) + active_events |= SSevents.active_events + if(SSevents.finished_events) + finished_events |= SSevents.finished_events + +/datum/controller/subsystem/events/proc/event_complete(var/datum/event/E) + if(!E.event_meta || !E.severity) // datum/event is used here and there for random reasons, maintaining "backwards compatibility" + log_debug("Event of '[E.type]' with missing meta-data has completed.") + return + + finished_events += E + + // Add the event back to the list of available events + var/datum/event_container/EC = event_containers[E.severity] + var/datum/event_meta/EM = E.event_meta + if(EM.add_to_queue) + EC.available_events += EM + + log_debug("Event '[EM.name]' has completed at [worldtime2stationtime(world.time)].") + +/datum/controller/subsystem/events/proc/delay_events(var/severity, var/delay) + var/list/datum/event_container/EC = event_containers[severity] + EC.next_event_time += delay + +/datum/controller/subsystem/events/proc/RoundEnd() + if(!report_at_round_end) + return + + to_chat(world, "


Random Events This Round:") + for(var/datum/event/E in active_events|finished_events) + var/datum/event_meta/EM = E.event_meta + if(EM.name == "Nothing") + continue + var/message = "'[EM.name]' began at [worldtime2stationtime(E.startedAt)] " + if(E.isRunning) + message += "and is still running." + else + if(E.endedAt - E.startedAt > MinutesToTicks(5)) // Only mention end time if the entire duration was more than 5 minutes + message += "and ended at [worldtime2stationtime(E.endedAt)]." + else + message += "and ran to completion." + to_chat(world, message) diff --git a/code/controllers/Processes/inactivity.dm b/code/controllers/subsystems/inactivity.dm similarity index 66% rename from code/controllers/Processes/inactivity.dm rename to code/controllers/subsystems/inactivity.dm index 9435a18bf0..1affe905fd 100644 --- a/code/controllers/Processes/inactivity.dm +++ b/code/controllers/subsystems/inactivity.dm @@ -1,11 +1,12 @@ -/datum/controller/process/inactivity/setup() - name = "inactivity" - schedule_interval = 600 // Once every minute (approx.) +SUBSYSTEM_DEF(inactivity) + name = "AFK Kick" + wait = 600 + flags = SS_BACKGROUND | SS_NO_TICK_CHECK -/datum/controller/process/inactivity/doWork() +/datum/controller/subsystem/inactivity/fire() if(config.kick_inactive) - for(last_object in clients) - var/client/C = last_object + for(var/i in GLOB.clients) + var/client/C = i if(C.is_afk(config.kick_inactive MINUTES) && !C.holder) // VOREStation Edit - Allow admins to idle to_chat(C,"You have been inactive for more than [config.kick_inactive] minute\s and have been disconnected.") var/information @@ -26,6 +27,12 @@ else if(issilicon(C.mob)) information = " while a silicon." + if(isAI(C.mob)) + var/mob/living/silicon/ai/A = C.mob + empty_playable_ai_cores += new /obj/structure/AIcore/deactivated(A.loc) + global_announcer.autosay("[A] has been moved to intelligence storage.", "Artificial Intelligence Oversight") + A.clear_client() + information = " while an AI." var/adminlinks adminlinks = " (JMP|CRYO)" @@ -33,4 +40,3 @@ log_and_message_admins("being kicked for AFK[information][adminlinks]", C.mob) qdel(C) - SCHECK diff --git a/code/controllers/subsystems/machines.dm b/code/controllers/subsystems/machines.dm index 4cba70a981..7f35bfd971 100644 --- a/code/controllers/subsystems/machines.dm +++ b/code/controllers/subsystems/machines.dm @@ -42,10 +42,10 @@ SUBSYSTEM_DEF(machines) /datum/controller/subsystem/machines/fire(resumed = 0) var/timer = TICK_USAGE + INTERNAL_PROCESS_STEP(SSMACHINES_POWER_OBJECTS,FALSE,process_power_objects,cost_power_objects,SSMACHINES_PIPENETS) // Higher priority, damnit INTERNAL_PROCESS_STEP(SSMACHINES_PIPENETS,TRUE,process_pipenets,cost_pipenets,SSMACHINES_MACHINERY) INTERNAL_PROCESS_STEP(SSMACHINES_MACHINERY,FALSE,process_machinery,cost_machinery,SSMACHINES_POWERNETS) INTERNAL_PROCESS_STEP(SSMACHINES_POWERNETS,FALSE,process_powernets,cost_powernets,SSMACHINES_POWER_OBJECTS) - INTERNAL_PROCESS_STEP(SSMACHINES_POWER_OBJECTS,FALSE,process_power_objects,cost_power_objects,SSMACHINES_PIPENETS) // rebuild all power networks from scratch - only called at world creation or by the admin verb // The above is a lie. Turbolifts also call this proc. @@ -109,7 +109,7 @@ SUBSYSTEM_DEF(machines) else global.pipe_networks.Remove(PN) if(!QDELETED(PN)) - PN.is_processing = null + DISABLE_BITFIELD(PN.datum_flags, DF_ISPROCESSING) if(MC_TICK_CHECK) return @@ -127,7 +127,7 @@ SUBSYSTEM_DEF(machines) else global.processing_machines.Remove(M) if(!QDELETED(M)) - M.is_processing = null + DISABLE_BITFIELD(M.datum_flags, DF_ISPROCESSING) if(MC_TICK_CHECK) return @@ -144,7 +144,7 @@ SUBSYSTEM_DEF(machines) else global.powernets.Remove(PN) if(!QDELETED(PN)) - PN.is_processing = null + DISABLE_BITFIELD(PN.datum_flags, DF_ISPROCESSING) if(MC_TICK_CHECK) return @@ -160,7 +160,7 @@ SUBSYSTEM_DEF(machines) current_run.len-- if(!I.pwr_drain(wait)) // 0 = Process Kill, remove from processing list. global.processing_power_items.Remove(I) - I.is_processing = null + DISABLE_BITFIELD(I.datum_flags, DF_ISPROCESSING) if(MC_TICK_CHECK) return diff --git a/code/controllers/subsystems/mapping.dm b/code/controllers/subsystems/mapping.dm new file mode 100644 index 0000000000..cc69931426 --- /dev/null +++ b/code/controllers/subsystems/mapping.dm @@ -0,0 +1,30 @@ +// Handles map-related tasks, mostly here to ensure it does so after the MC initializes. +SUBSYSTEM_DEF(mapping) + name = "Mapping" + init_order = INIT_ORDER_MAPPING + flags = SS_NO_FIRE + + var/list/map_templates = list() + var/dmm_suite/maploader = null + +/datum/controller/subsystem/mapping/Initialize(timeofday) + if(subsystem_initialized) + return + world.max_z_changed() // This is to set up the player z-level list, maxz hasn't actually changed (probably) + maploader = new() + load_map_templates() + + if(config.generate_map) + // Map-gen is still very specific to the map, however putting it here should ensure it loads in the correct order. + if(using_map.perform_map_generation()) + using_map.refresh_mining_turfs() + + +/datum/controller/subsystem/mapping/proc/load_map_templates() + for(var/T in subtypesof(/datum/map_template)) + var/datum/map_template/template = T + if(!(initial(template.mappath))) // If it's missing the actual path its probably a base type or being used for inheritence. + continue + template = new T() + map_templates[template.name] = template + return TRUE diff --git a/code/controllers/subsystems/mapping_vr.dm b/code/controllers/subsystems/mapping_vr.dm index c36336b161..0b301e2fe1 100644 --- a/code/controllers/subsystems/mapping_vr.dm +++ b/code/controllers/subsystems/mapping_vr.dm @@ -7,6 +7,8 @@ SUBSYSTEM_DEF(mapping) init_order = INIT_ORDER_MAPPING flags = SS_NO_FIRE + var/list/map_templates = list() + var/dmm_suite/maploader = null var/obj/effect/landmark/engine_loader/engine_loader var/obj/effect/landmark/engine_loader_pickable/engine_loader_pickable @@ -17,6 +19,17 @@ SUBSYSTEM_DEF(mapping) shelter_templates = SSmapping.shelter_templates /datum/controller/subsystem/mapping/Initialize(timeofday) + if(subsystem_initialized) + return + world.max_z_changed() // This is to set up the player z-level list, maxz hasn't actually changed (probably) + maploader = new() + load_map_templates() + + if(config.generate_map) + // Map-gen is still very specific to the map, however putting it here should ensure it loads in the correct order. + if(using_map.perform_map_generation()) + using_map.refresh_mining_turfs() + loadEngine() preloadShelterTemplates() // Mining generation probably should be here too @@ -25,6 +38,15 @@ SUBSYSTEM_DEF(mapping) loadLateMaps() ..() +/datum/controller/subsystem/mapping/proc/load_map_templates() + for(var/T in subtypesof(/datum/map_template)) + var/datum/map_template/template = T + if(!(initial(template.mappath))) // If it's missing the actual path its probably a base type or being used for inheritence. + continue + template = new T() + map_templates[template.name] = template + return TRUE + /datum/controller/subsystem/mapping/proc/loadEngine() if(!engine_loader) return // Seems this map doesn't need an engine loaded. diff --git a/code/controllers/subsystems/overlays.dm b/code/controllers/subsystems/overlays.dm index 5c8b3531c9..60b08c71d2 100644 --- a/code/controllers/subsystems/overlays.dm +++ b/code/controllers/subsystems/overlays.dm @@ -168,7 +168,7 @@ var/global/image/appearance_bro = new() // Temporarily super-global because of B * Adds specific overlay(s) to the atom. * It is designed so any of the types allowed to be added to /atom/overlays can be added here too. More details below. * - * @param overlays The overlay(s) to add. These may be + * @param overlays The overlay(s) to add. These may be * - A string: In which case it is treated as an icon_state of the atom's icon. * - An icon: It is treated as an icon. * - An atom: Its own overlays are compiled and then it's appearance is added. (Meaning its current apperance is frozen). @@ -205,7 +205,7 @@ var/global/image/appearance_bro = new() // Temporarily super-global because of B /** * Copy the overlays from another atom, either replacing all of ours or appending to our existing overlays. * Note: This copies only the normal overlays, not the "priority" overlays. - * + * * @param other The atom to copy overlays from. * @param cut_old If true, all of our overlays will be *replaced* by the other's. If other is null, that means cutting all ours. */ diff --git a/code/controllers/subsystems/processing/fastprocess.dm b/code/controllers/subsystems/processing/fastprocess.dm new file mode 100644 index 0000000000..9622e02146 --- /dev/null +++ b/code/controllers/subsystems/processing/fastprocess.dm @@ -0,0 +1,6 @@ +//Fires five times every second. + +PROCESSING_SUBSYSTEM_DEF(fastprocess) + name = "Fast Processing" + wait = 2 + stat_tag = "FP" diff --git a/code/controllers/subsystems/processing/obj.dm b/code/controllers/subsystems/processing/obj.dm new file mode 100644 index 0000000000..26021fb267 --- /dev/null +++ b/code/controllers/subsystems/processing/obj.dm @@ -0,0 +1,5 @@ +PROCESSING_SUBSYSTEM_DEF(obj) + name = "Objects" + priority = FIRE_PRIORITY_OBJ + flags = SS_NO_INIT + wait = 20 diff --git a/code/controllers/subsystems/processing/processing.dm b/code/controllers/subsystems/processing/processing.dm new file mode 100644 index 0000000000..c5d6dfa126 --- /dev/null +++ b/code/controllers/subsystems/processing/processing.dm @@ -0,0 +1,35 @@ +//Used to process objects. Fires once every second. + +SUBSYSTEM_DEF(processing) + name = "Processing" + priority = FIRE_PRIORITY_PROCESS + flags = SS_BACKGROUND|SS_POST_FIRE_TIMING|SS_NO_INIT + wait = 10 + + var/stat_tag = "P" //Used for logging + var/list/processing = list() + var/list/currentrun = list() + +/datum/controller/subsystem/processing/stat_entry() + ..("[stat_tag]:[processing.len]") + +/datum/controller/subsystem/processing/fire(resumed = 0) + if (!resumed) + currentrun = processing.Copy() + //cache for sanic speed (lists are references anyways) + var/list/current_run = currentrun + + while(current_run.len) + var/datum/thing = current_run[current_run.len] + current_run.len-- + if(QDELETED(thing)) + processing -= thing + else if(thing.process(wait) == PROCESS_KILL) + // fully stop so that a future START_PROCESSING will work + STOP_PROCESSING(src, thing) + if (MC_TICK_CHECK) + return + +/datum/proc/process() + set waitfor = 0 + return PROCESS_KILL diff --git a/code/controllers/subsystems/processing/projectiles.dm b/code/controllers/subsystems/processing/projectiles.dm new file mode 100644 index 0000000000..87c9f097de --- /dev/null +++ b/code/controllers/subsystems/processing/projectiles.dm @@ -0,0 +1,16 @@ +PROCESSING_SUBSYSTEM_DEF(projectiles) + name = "Projectiles" + wait = 1 + stat_tag = "PP" + priority = FIRE_PRIORITY_PROJECTILES + flags = SS_NO_INIT|SS_TICKER + var/global_max_tick_moves = 10 + var/global_pixel_speed = 2 + var/global_iterations_per_move = 16 + +/datum/controller/subsystem/processing/projectiles/proc/set_pixel_speed(new_speed) + global_pixel_speed = new_speed + for(var/i in processing) + var/obj/item/projectile/P = i + if(istype(P)) //there's non projectiles on this too. + P.set_pixel_speed(new_speed) diff --git a/code/controllers/subsystems/processing/turfs.dm b/code/controllers/subsystems/processing/turfs.dm new file mode 100644 index 0000000000..941513527e --- /dev/null +++ b/code/controllers/subsystems/processing/turfs.dm @@ -0,0 +1,3 @@ +PROCESSING_SUBSYSTEM_DEF(turfs) + name = "Turf Processing" + wait = 20 diff --git a/code/controllers/subsystems/sun.dm b/code/controllers/subsystems/sun.dm new file mode 100644 index 0000000000..551130a20b --- /dev/null +++ b/code/controllers/subsystems/sun.dm @@ -0,0 +1,7 @@ +SUBSYSTEM_DEF(sun) + name = "Sun" + wait = 600 + var/static/datum/sun/sun = new + +/datum/controller/subsystem/sun/fire() + sun.calc_position() diff --git a/code/controllers/subsystems/time_track.dm b/code/controllers/subsystems/time_track.dm new file mode 100644 index 0000000000..aed175ed27 --- /dev/null +++ b/code/controllers/subsystems/time_track.dm @@ -0,0 +1,37 @@ +SUBSYSTEM_DEF(time_track) + name = "Time Tracking" + wait = 600 + flags = SS_NO_INIT|SS_NO_TICK_CHECK + runlevels = RUNLEVEL_LOBBY | RUNLEVELS_DEFAULT + + var/time_dilation_current = 0 + + var/time_dilation_avg_fast = 0 + var/time_dilation_avg = 0 + var/time_dilation_avg_slow = 0 + + var/first_run = TRUE + + var/last_tick_realtime = 0 + var/last_tick_byond_time = 0 + var/last_tick_tickcount = 0 + +/datum/controller/subsystem/time_track/fire() + + var/current_realtime = REALTIMEOFDAY + var/current_byondtime = world.time + var/current_tickcount = world.time/world.tick_lag + + if (!first_run) + var/tick_drift = max(0, (((current_realtime - last_tick_realtime) - (current_byondtime - last_tick_byond_time)) / world.tick_lag)) + + time_dilation_current = tick_drift / (current_tickcount - last_tick_tickcount) * 100 + + time_dilation_avg_fast = MC_AVERAGE_FAST(time_dilation_avg_fast, time_dilation_current) + time_dilation_avg = MC_AVERAGE(time_dilation_avg, time_dilation_avg_fast) + time_dilation_avg_slow = MC_AVERAGE_SLOW(time_dilation_avg_slow, time_dilation_avg) + else + first_run = FALSE + last_tick_realtime = current_realtime + last_tick_byond_time = current_byondtime + last_tick_tickcount = current_tickcount diff --git a/code/controllers/subsystems/timer.dm b/code/controllers/subsystems/timer.dm new file mode 100644 index 0000000000..3cd4ffe6ba --- /dev/null +++ b/code/controllers/subsystems/timer.dm @@ -0,0 +1,522 @@ +#define BUCKET_LEN (world.fps*1*60) //how many ticks should we keep in the bucket. (1 minutes worth) +#define BUCKET_POS(timer) ((round((timer.timeToRun - SStimer.head_offset) / world.tick_lag) % BUCKET_LEN)||BUCKET_LEN) +#define TIMER_MAX (world.time + TICKS2DS(min(BUCKET_LEN-(SStimer.practical_offset-DS2TICKS(world.time - SStimer.head_offset))-1, BUCKET_LEN-1))) +#define TIMER_ID_MAX (2**24) //max float with integer precision + +SUBSYSTEM_DEF(timer) + name = "Timer" + wait = 1 //SS_TICKER subsystem, so wait is in ticks + init_order = INIT_ORDER_TIMER + + flags = SS_TICKER|SS_NO_INIT + + var/list/datum/timedevent/second_queue = list() //awe, yes, you've had first queue, but what about second queue? + var/list/hashes = list() + + var/head_offset = 0 //world.time of the first entry in the the bucket. + var/practical_offset = 1 //index of the first non-empty item in the bucket. + var/bucket_resolution = 0 //world.tick_lag the bucket was designed for + var/bucket_count = 0 //how many timers are in the buckets + + var/list/bucket_list = list() //list of buckets, each bucket holds every timer that has to run that byond tick. + + var/list/timer_id_dict = list() //list of all active timers assoicated to their timer id (for easy lookup) + + var/list/clienttime_timers = list() //special snowflake timers that run on fancy pansy "client time" + + var/last_invoke_tick = 0 + var/static/last_invoke_warning = 0 + var/static/bucket_auto_reset = TRUE + +/datum/controller/subsystem/timer/PreInit() + bucket_list.len = BUCKET_LEN + head_offset = world.time + bucket_resolution = world.tick_lag + +/datum/controller/subsystem/timer/stat_entry(msg) + ..("B:[bucket_count] P:[length(second_queue)] H:[length(hashes)] C:[length(clienttime_timers)] S:[length(timer_id_dict)]") + +/datum/controller/subsystem/timer/fire(resumed = FALSE) + var/lit = last_invoke_tick + var/last_check = world.time - TICKS2DS(BUCKET_LEN*1.5) + var/list/bucket_list = src.bucket_list + + if(!bucket_count) + last_invoke_tick = world.time + + if(lit && lit < last_check && head_offset < last_check && last_invoke_warning < last_check) + last_invoke_warning = world.time + var/msg = "No regular timers processed in the last [BUCKET_LEN*1.5] ticks[bucket_auto_reset ? ", resetting buckets" : ""]!" + message_admins(msg) + WARNING(msg) + if(bucket_auto_reset) + bucket_resolution = 0 + + log_world("Timer bucket reset. world.time: [world.time], head_offset: [head_offset], practical_offset: [practical_offset]") + for (var/i in 1 to length(bucket_list)) + var/datum/timedevent/bucket_head = bucket_list[i] + if (!bucket_head) + continue + + log_world("Active timers at index [i]:") + + var/datum/timedevent/bucket_node = bucket_head + var/anti_loop_check = 1000 + do + log_world(get_timer_debug_string(bucket_node)) + bucket_node = bucket_node.next + anti_loop_check-- + while(bucket_node && bucket_node != bucket_head && anti_loop_check) + log_world("Active timers in the second_queue queue:") + for(var/I in second_queue) + log_world(get_timer_debug_string(I)) + + var/cut_start_index = 1 + var/next_clienttime_timer_index = 0 + var/len = length(clienttime_timers) + + for (next_clienttime_timer_index in 1 to len) + if (MC_TICK_CHECK) + next_clienttime_timer_index-- + break + var/datum/timedevent/ctime_timer = clienttime_timers[next_clienttime_timer_index] + if (ctime_timer.timeToRun > REALTIMEOFDAY) + next_clienttime_timer_index-- + break + + var/datum/callback/callBack = ctime_timer.callBack + if (!callBack) + clienttime_timers.Cut(next_clienttime_timer_index,next_clienttime_timer_index+1) + CRASH("Invalid timer: [get_timer_debug_string(ctime_timer)] world.time: [world.time], head_offset: [head_offset], practical_offset: [practical_offset], REALTIMEOFDAY: [REALTIMEOFDAY]") + + ctime_timer.spent = REALTIMEOFDAY + callBack.InvokeAsync() + + if(ctime_timer.flags & TIMER_LOOP) + ctime_timer.spent = 0 + clienttime_timers.Insert(ctime_timer, 1) + cut_start_index++ + else + qdel(ctime_timer) + + + if (next_clienttime_timer_index) + clienttime_timers.Cut(cut_start_index,next_clienttime_timer_index+1) + + if (MC_TICK_CHECK) + return + + var/static/list/spent = list() + var/static/datum/timedevent/timer + if (practical_offset > BUCKET_LEN) + head_offset += TICKS2DS(BUCKET_LEN) + practical_offset = 1 + resumed = FALSE + + if ((length(bucket_list) != BUCKET_LEN) || (world.tick_lag != bucket_resolution)) + reset_buckets() + bucket_list = src.bucket_list + resumed = FALSE + + + if (!resumed) + timer = null + + while (practical_offset <= BUCKET_LEN && head_offset + ((practical_offset-1)*world.tick_lag) <= world.time) + var/datum/timedevent/head = bucket_list[practical_offset] + if (!timer || !head || timer == head) + head = bucket_list[practical_offset] + timer = head + while (timer) + var/datum/callback/callBack = timer.callBack + if (!callBack) + bucket_resolution = null //force bucket recreation + CRASH("Invalid timer: [get_timer_debug_string(timer)] world.time: [world.time], head_offset: [head_offset], practical_offset: [practical_offset]") + + if (!timer.spent) + spent += timer + timer.spent = world.time + callBack.InvokeAsync() + last_invoke_tick = world.time + + if (MC_TICK_CHECK) + return + + timer = timer.next + if (timer == head) + break + + + bucket_list[practical_offset++] = null + + //we freed up a bucket, lets see if anything in second_queue needs to be shifted to that bucket. + var/i = 0 + var/L = length(second_queue) + for (i in 1 to L) + timer = second_queue[i] + if (timer.timeToRun >= TIMER_MAX) + i-- + break + + if (timer.timeToRun < head_offset) + bucket_resolution = null //force bucket recreation + CRASH("[i] Invalid timer state: Timer in long run queue with a time to run less then head_offset. [get_timer_debug_string(timer)] world.time: [world.time], head_offset: [head_offset], practical_offset: [practical_offset]") + + if (timer.callBack && !timer.spent) + timer.callBack.InvokeAsync() + spent += timer + bucket_count++ + else if(!QDELETED(timer)) + qdel(timer) + continue + + if (timer.timeToRun < head_offset + TICKS2DS(practical_offset-1)) + bucket_resolution = null //force bucket recreation + CRASH("[i] Invalid timer state: Timer in long run queue that would require a backtrack to transfer to short run queue. [get_timer_debug_string(timer)] world.time: [world.time], head_offset: [head_offset], practical_offset: [practical_offset]") + if (timer.callBack && !timer.spent) + timer.callBack.InvokeAsync() + spent += timer + bucket_count++ + else if(!QDELETED(timer)) + qdel(timer) + continue + + bucket_count++ + var/bucket_pos = max(1, BUCKET_POS(timer)) + + var/datum/timedevent/bucket_head = bucket_list[bucket_pos] + if (!bucket_head) + bucket_list[bucket_pos] = timer + timer.next = null + timer.prev = null + continue + + if (!bucket_head.prev) + bucket_head.prev = bucket_head + timer.next = bucket_head + timer.prev = bucket_head.prev + timer.next.prev = timer + timer.prev.next = timer + if (i) + second_queue.Cut(1, i+1) + + timer = null + + bucket_count -= length(spent) + + for (var/i in spent) + var/datum/timedevent/qtimer = i + if(QDELETED(qtimer)) + bucket_count++ + continue + if(!(qtimer.flags & TIMER_LOOP)) + qdel(qtimer) + else + bucket_count++ + qtimer.spent = 0 + qtimer.bucketEject() + if(qtimer.flags & TIMER_CLIENT_TIME) + qtimer.timeToRun = REALTIMEOFDAY + qtimer.wait + else + qtimer.timeToRun = world.time + qtimer.wait + qtimer.bucketJoin() + + spent.len = 0 + +//formated this way to be runtime resistant +/datum/controller/subsystem/timer/proc/get_timer_debug_string(datum/timedevent/TE) + . = "Timer: [TE]" + . += "Prev: [TE.prev ? TE.prev : "NULL"], Next: [TE.next ? TE.next : "NULL"]" + if(TE.spent) + . += ", SPENT([TE.spent])" + if(QDELETED(TE)) + . += ", QDELETED" + if(!TE.callBack) + . += ", NO CALLBACK" + +/datum/controller/subsystem/timer/proc/reset_buckets() + var/list/bucket_list = src.bucket_list + var/list/alltimers = list() + //collect the timers currently in the bucket + for (var/bucket_head in bucket_list) + if (!bucket_head) + continue + var/datum/timedevent/bucket_node = bucket_head + do + alltimers += bucket_node + bucket_node = bucket_node.next + while(bucket_node && bucket_node != bucket_head) + + bucket_list.len = 0 + bucket_list.len = BUCKET_LEN + + practical_offset = 1 + bucket_count = 0 + head_offset = world.time + bucket_resolution = world.tick_lag + + alltimers += second_queue + if (!length(alltimers)) + return + + sortTim(alltimers, .proc/cmp_timer) + + var/datum/timedevent/head = alltimers[1] + + if (head.timeToRun < head_offset) + head_offset = head.timeToRun + + var/new_bucket_count + var/i = 1 + for (i in 1 to length(alltimers)) + var/datum/timedevent/timer = alltimers[1] + if (!timer) + continue + + var/bucket_pos = BUCKET_POS(timer) + if (timer.timeToRun >= TIMER_MAX) + i-- + break + + + if (!timer.callBack || timer.spent) + WARNING("Invalid timer: [get_timer_debug_string(timer)] world.time: [world.time], head_offset: [head_offset], practical_offset: [practical_offset]") + if (timer.callBack) + qdel(timer) + continue + + new_bucket_count++ + var/datum/timedevent/bucket_head = bucket_list[bucket_pos] + if (!bucket_head) + bucket_list[bucket_pos] = timer + timer.next = null + timer.prev = null + continue + + if (!bucket_head.prev) + bucket_head.prev = bucket_head + timer.next = bucket_head + timer.prev = bucket_head.prev + timer.next.prev = timer + timer.prev.next = timer + if (i) + alltimers.Cut(1, i+1) + second_queue = alltimers + bucket_count = new_bucket_count + + +/datum/controller/subsystem/timer/Recover() + second_queue |= SStimer.second_queue + hashes |= SStimer.hashes + timer_id_dict |= SStimer.timer_id_dict + bucket_list |= SStimer.bucket_list + +/datum/timedevent + var/id + var/datum/callback/callBack + var/timeToRun + var/wait + var/hash + var/list/flags + var/spent = 0 //time we ran the timer. + var/name //for easy debugging. + //cicular doublely linked list + var/datum/timedevent/next + var/datum/timedevent/prev + +/datum/timedevent/New(datum/callback/callBack, wait, flags, hash) + var/static/nextid = 1 + id = TIMER_ID_NULL + src.callBack = callBack + src.wait = wait + src.flags = flags + src.hash = hash + + if (flags & TIMER_CLIENT_TIME) + timeToRun = REALTIMEOFDAY + wait + else + timeToRun = world.time + wait + + if (flags & TIMER_UNIQUE) + SStimer.hashes[hash] = src + + if (flags & TIMER_STOPPABLE) + id = num2text(nextid, 100) + if (nextid >= SHORT_REAL_LIMIT) + nextid += min(1, 2**round(nextid/SHORT_REAL_LIMIT)) + else + nextid++ + SStimer.timer_id_dict[id] = src + + name = "Timer: [id] (\ref[src]), TTR: [timeToRun], Flags: [jointext(bitfield2list(flags, list("TIMER_UNIQUE", "TIMER_OVERRIDE", "TIMER_CLIENT_TIME", "TIMER_STOPPABLE", "TIMER_NO_HASH_WAIT", "TIMER_LOOP")), ", ")], callBack: \ref[callBack], callBack.object: [callBack.object]\ref[callBack.object]([getcallingtype()]), callBack.delegate:[callBack.delegate]([callBack.arguments ? callBack.arguments.Join(", ") : ""])" + + if ((timeToRun < world.time || timeToRun < SStimer.head_offset) && !(flags & TIMER_CLIENT_TIME)) + CRASH("Invalid timer state: Timer created that would require a backtrack to run (addtimer would never let this happen): [SStimer.get_timer_debug_string(src)]") + + if (callBack.object != GLOBAL_PROC && !QDESTROYING(callBack.object)) + LAZYADD(callBack.object.active_timers, src) + + bucketJoin() + +/datum/timedevent/Destroy() + ..() + if (flags & TIMER_UNIQUE && hash) + SStimer.hashes -= hash + + if (callBack && callBack.object && callBack.object != GLOBAL_PROC && callBack.object.active_timers) + callBack.object.active_timers -= src + UNSETEMPTY(callBack.object.active_timers) + + callBack = null + + if (flags & TIMER_STOPPABLE) + SStimer.timer_id_dict -= id + + if (flags & TIMER_CLIENT_TIME) + if (!spent) + spent = world.time + SStimer.clienttime_timers -= src + return QDEL_HINT_IWILLGC + + if (!spent) + spent = world.time + bucketEject() + else + if (prev && prev.next == src) + prev.next = next + if (next && next.prev == src) + next.prev = prev + next = null + prev = null + return QDEL_HINT_IWILLGC + +/datum/timedevent/proc/bucketEject() + var/bucketpos = BUCKET_POS(src) + var/list/bucket_list = SStimer.bucket_list + var/list/second_queue = SStimer.second_queue + var/datum/timedevent/buckethead + if(bucketpos > 0) + buckethead = bucket_list[bucketpos] + if(buckethead == src) + bucket_list[bucketpos] = next + SStimer.bucket_count-- + else if(timeToRun < TIMER_MAX || next || prev) + SStimer.bucket_count-- + else + var/l = length(second_queue) + second_queue -= src + if(l == length(second_queue)) + SStimer.bucket_count-- + if(prev != next) + prev.next = next + next.prev = prev + else + prev?.next = null + next?.prev = null + prev = next = null + +/datum/timedevent/proc/bucketJoin() + var/list/L + + if (flags & TIMER_CLIENT_TIME) + L = SStimer.clienttime_timers + else if (timeToRun >= TIMER_MAX) + L = SStimer.second_queue + + if(L) + BINARY_INSERT(src, L, datum/timedevent, timeToRun) + return + + //get the list of buckets + var/list/bucket_list = SStimer.bucket_list + + //calculate our place in the bucket list + var/bucket_pos = BUCKET_POS(src) + + //get the bucket for our tick + var/datum/timedevent/bucket_head = bucket_list[bucket_pos] + SStimer.bucket_count++ + //empty bucket, we will just add ourselves + if (!bucket_head) + bucket_list[bucket_pos] = src + return + //other wise, lets do a simplified linked list add. + if (!bucket_head.prev) + bucket_head.prev = bucket_head + next = bucket_head + prev = bucket_head.prev + next.prev = src + prev.next = src + +/datum/timedevent/proc/getcallingtype() + . = "ERROR" + if (callBack.object == GLOBAL_PROC) + . = "GLOBAL_PROC" + else + . = "[callBack.object.type]" + +/proc/addtimer(datum/callback/callback, wait = 0, flags = 0) + if (!callback) + CRASH("addtimer called without a callback") + + if (wait < 0) + crash_with("addtimer called with a negative wait. Converting to [world.tick_lag]") + + if (callback.object != GLOBAL_PROC && QDELETED(callback.object) && !QDESTROYING(callback.object)) + crash_with("addtimer called with a callback assigned to a qdeleted object. In the future such timers will not be supported and may refuse to run or run with a 0 wait") + + wait = max(CEILING(wait, world.tick_lag), world.tick_lag) + + if(wait >= INFINITY) + CRASH("Attempted to create timer with INFINITY delay") + + var/hash + + if (flags & TIMER_UNIQUE) + var/list/hashlist + if(flags & TIMER_NO_HASH_WAIT) + hashlist = list(callback.object, "(\ref[callback.object])", callback.delegate, flags & TIMER_CLIENT_TIME) + else + hashlist = list(callback.object, "(\ref[callback.object])", callback.delegate, wait, flags & TIMER_CLIENT_TIME) + hashlist += callback.arguments + hash = hashlist.Join("|||||||") + + var/datum/timedevent/hash_timer = SStimer.hashes[hash] + if(hash_timer) + if (hash_timer.spent) //it's pending deletion, pretend it doesn't exist. + hash_timer.hash = null //but keep it from accidentally deleting us + else + if (flags & TIMER_OVERRIDE) + hash_timer.hash = null //no need having it delete it's hash if we are going to replace it + qdel(hash_timer) + else + if (hash_timer.flags & TIMER_STOPPABLE) + . = hash_timer.id + return + else if(flags & TIMER_OVERRIDE) + crash_with("TIMER_OVERRIDE used without TIMER_UNIQUE") + + var/datum/timedevent/timer = new(callback, wait, flags, hash) + return timer.id + +/proc/deltimer(id) + if (!id) + return FALSE + if (id == TIMER_ID_NULL) + CRASH("Tried to delete a null timerid. Use TIMER_STOPPABLE flag") + if (!istext(id)) + if (istype(id, /datum/timedevent)) + qdel(id) + return TRUE + //id is string + var/datum/timedevent/timer = SStimer.timer_id_dict[id] + if (timer && !timer.spent) + qdel(timer) + return TRUE + return FALSE + + +#undef BUCKET_LEN +#undef BUCKET_POS +#undef TIMER_MAX +#undef TIMER_ID_MAX diff --git a/code/controllers/subsystems/vote.dm b/code/controllers/subsystems/vote.dm index d42cbe7f63..84b7377609 100644 --- a/code/controllers/subsystems/vote.dm +++ b/code/controllers/subsystems/vote.dm @@ -1,373 +1,373 @@ -SUBSYSTEM_DEF(vote) - name = "Vote" - wait = 10 - priority = FIRE_PRIORITY_VOTE - runlevels = RUNLEVEL_LOBBY | RUNLEVELS_DEFAULT - flags = SS_KEEP_TIMING | SS_NO_INIT - var/list/round_voters = list() - - //Current vote - var/initiator - var/started_time - var/time_remaining - var/duration - var/mode - var/question - var/list/choices = list() - var/list/gamemode_names = list() - var/list/voted = list() - var/list/current_votes = list() - var/list/additional_text = list() - -/datum/controller/subsystem/vote/fire(resumed) - if(mode) - time_remaining = round((started_time + duration - world.time)/10) - if(mode == VOTE_GAMEMODE && ticker.current_state >= GAME_STATE_SETTING_UP) - to_chat(world, "Gamemode vote aborted: Game has already started.") - reset() - return - if(time_remaining <= 0) - result() - reset() - -/datum/controller/subsystem/vote/proc/autotransfer() - initiate_vote(VOTE_CREW_TRANSFER, "the server", 1) - log_debug("The server has called a crew transfer vote.") - -/datum/controller/subsystem/vote/proc/autogamemode() - initiate_vote(VOTE_GAMEMODE, "the server", 1) - log_debug("The server has called a gamemode vote.") - -/datum/controller/subsystem/vote/proc/reset() - initiator = null - started_time = null - duration = null - time_remaining = null - mode = null - question = null - choices.Cut() - voted.Cut() - current_votes.Cut() - additional_text.Cut() - -/datum/controller/subsystem/vote/proc/get_result() // Get the highest number of votes - var/greatest_votes = 0 - var/total_votes = 0 - - for(var/option in choices) - var/votes = choices[option] - total_votes += votes - if(votes > greatest_votes) - greatest_votes = votes - - if(!config.vote_no_default && choices.len) // Default-vote for everyone who didn't vote - var/non_voters = (clients.len - total_votes) - if(non_voters > 0) - if(mode == VOTE_RESTART) - choices["Continue Playing"] += non_voters - if(choices["Continue Playing"] >= greatest_votes) - greatest_votes = choices["Continue Playing"] - else if(mode == VOTE_GAMEMODE) - if(master_mode in choices) - choices[master_mode] += non_voters - if(choices[master_mode] >= greatest_votes) - greatest_votes = choices[master_mode] - else if(mode == VOTE_CREW_TRANSFER) - var/factor = 0.5 - switch(world.time / (10 * 60)) // minutes - if(0 to 60) - factor = 0.5 - if(61 to 120) - factor = 0.8 - if(121 to 240) - factor = 1 - if(241 to 300) - factor = 1.2 - else - factor = 1.4 - choices["Initiate Crew Transfer"] = round(choices["Initiate Crew Transfer"] * factor) - world << "Crew Transfer Factor: [factor]" - greatest_votes = max(choices["Initiate Crew Transfer"], choices["Continue The Round"]) - - . = list() // Get all options with that many votes and return them in a list - if(greatest_votes) - for(var/option in choices) - if(choices[option] == greatest_votes) - . += option - -/datum/controller/subsystem/vote/proc/announce_result() - var/list/winners = get_result() - var/text - if(winners.len > 0) - if(winners.len > 1) - if(mode != VOTE_GAMEMODE || ticker.hide_mode == 0) // Here we are making sure we don't announce potential game modes - text = "Vote Tied Between:\n" - for(var/option in winners) - text += "\t[option]\n" - . = pick(winners) - - for(var/key in current_votes) - if(choices[current_votes[key]] == .) - round_voters += key // Keep track of who voted for the winning round. - if(mode != VOTE_GAMEMODE || . == "Extended" || ticker.hide_mode == 0) // Announce Extended gamemode, but not other gamemodes - text += "Vote Result: [mode == VOTE_GAMEMODE ? gamemode_names[.] : .]" - else - text += "The vote has ended." - - else - text += "Vote Result: Inconclusive - No Votes!" - if(mode == VOTE_ADD_ANTAGONIST) - antag_add_failed = 1 - log_vote(text) - to_chat(world, "[text]") - -/datum/controller/subsystem/vote/proc/result() - . = announce_result() - var/restart = 0 - if(.) - switch(mode) - if(VOTE_RESTART) - if(. == "Restart Round") - restart = 1 - if(VOTE_GAMEMODE) - if(master_mode != .) - world.save_mode(.) - if(ticker && ticker.mode) - restart = 1 - else - master_mode = . - if(VOTE_CREW_TRANSFER) - if(. == "Initiate Crew Transfer") - init_shift_change(null, 1) - if(VOTE_ADD_ANTAGONIST) - if(isnull(.) || . == "None") - antag_add_failed = 1 - else - additional_antag_types |= antag_names_to_ids[.] - - if(mode == VOTE_GAMEMODE) //fire this even if the vote fails. - if(!round_progressing) - round_progressing = 1 - world << "The round will start soon." - - if(restart) - world << "World restarting due to vote..." - feedback_set_details("end_error", "restart vote") - if(blackbox) - blackbox.save_all_data_to_sql() - sleep(50) - log_game("Rebooting due to restart vote") - world.Reboot() - -/datum/controller/subsystem/vote/proc/submit_vote(ckey, newVote) - if(mode) - if(config.vote_no_dead && usr.stat == DEAD && !usr.client.holder) - return - if(current_votes[ckey]) - choices[choices[current_votes[ckey]]]-- - if(newVote && newVote >= 1 && newVote <= choices.len) - choices[choices[newVote]]++ - current_votes[ckey] = newVote - else - current_votes[ckey] = null - -/datum/controller/subsystem/vote/proc/initiate_vote(vote_type, initiator_key, automatic = FALSE, time = config.vote_period) - if(!mode) - if(started_time != null && !(check_rights(R_ADMIN) || automatic)) - var/next_allowed_time = (started_time + config.vote_delay) - if(next_allowed_time > world.time) - return 0 - - reset() - - switch(vote_type) - if(VOTE_RESTART) - choices.Add("Restart Round", "Continue Playing") - if(VOTE_GAMEMODE) - if(ticker.current_state >= GAME_STATE_SETTING_UP) - return 0 - choices.Add(config.votable_modes) - for(var/F in choices) - var/datum/game_mode/M = gamemode_cache[F] - if(!M) - continue - gamemode_names[M.config_tag] = capitalize(M.name) //It's ugly to put this here but it works - additional_text.Add("[M.required_players]") - gamemode_names["secret"] = "Secret" - if(VOTE_CREW_TRANSFER) - if(!check_rights(R_ADMIN|R_MOD, 0)) // The gods care not for the affairs of the mortals - if(get_security_level() == "red" || get_security_level() == "delta") - initiator_key << "The current alert status is too high to call for a crew transfer!" - return 0 - if(ticker.current_state <= GAME_STATE_SETTING_UP) - initiator_key << "The crew transfer button has been disabled!" - return 0 - question = "End the shift?" - choices.Add("Initiate Crew Transfer", "Continue The Round") - if(VOTE_ADD_ANTAGONIST) - if(!config.allow_extra_antags || ticker.current_state >= GAME_STATE_SETTING_UP) - return 0 - for(var/antag_type in all_antag_types) - var/datum/antagonist/antag = all_antag_types[antag_type] - if(!(antag.id in additional_antag_types) && antag.is_votable()) - choices.Add(antag.role_text) - choices.Add("None") - if(VOTE_CUSTOM) - question = sanitizeSafe(input(usr, "What is the vote for?") as text|null) - if(!question) - return 0 - for(var/i = 1 to 10) - var/option = capitalize(sanitize(input(usr, "Please enter an option or hit cancel to finish") as text|null)) - if(!option || mode || !usr.client) - break - choices.Add(option) - else - return 0 - - mode = vote_type - initiator = initiator_key - started_time = world.time - duration = time - var/text = "[capitalize(mode)] vote started by [initiator]." - if(mode == VOTE_CUSTOM) - text += "\n[question]" - - log_vote(text) - - world << "[text]\nType vote or click here to place your votes.\nYou have [config.vote_period / 10] seconds to vote." - if(vote_type == VOTE_CREW_TRANSFER || vote_type == VOTE_GAMEMODE || vote_type == VOTE_CUSTOM) - world << sound('sound/ambience/alarm4.ogg', repeat = 0, wait = 0, volume = 50, channel = 3) - - if(mode == VOTE_GAMEMODE && round_progressing) - round_progressing = 0 - world << "Round start has been delayed." - - time_remaining = round(config.vote_period / 10) - return 1 - return 0 - -/datum/controller/subsystem/vote/proc/interface(var/client/C) - if(!istype(C)) - return - var/admin = FALSE - if(C.holder) - if(C.holder.rights & R_ADMIN) - admin = TRUE - - . = "Voting Panel" - if(mode) - if(question) - . += "

Vote: '[question]'

" - else - . += "

Vote: [capitalize(mode)]

" - . += "Time Left: [time_remaining] s
" - . += "" - if(mode == VOTE_GAMEMODE) - .+= "" - - for(var/i = 1 to choices.len) - var/votes = choices[choices[i]] - if(!votes) - votes = 0 - . += "" - var/thisVote = (current_votes[C.ckey] == i) - if(mode == VOTE_GAMEMODE) - . += "" - else - . += "" - if (additional_text.len >= i) - . += additional_text[i] - . += "" - - . += "" - - . += "
ChoicesVotesMinimum Players
[thisVote ? "" : ""][gamemode_names[choices[i]]][thisVote ? "" : ""][votes][thisVote ? "" : ""][choices[i]][thisVote ? "" : ""][votes]
Unvote

" - if(admin) - . += "(Cancel Vote) " - else - . += "

Start a vote:



" - - . += "Close" - -/datum/controller/subsystem/vote/Topic(href, href_list[]) - if(!usr || !usr.client) - return - switch(href_list["vote"]) - if("close") - usr << browse(null, "window=vote") - return - - if("cancel") - if(usr.client.holder) - reset() - if("toggle_restart") - if(usr.client.holder) - config.allow_vote_restart = !config.allow_vote_restart - if("toggle_gamemode") - if(usr.client.holder) - config.allow_vote_mode = !config.allow_vote_mode - - if(VOTE_RESTART) - if(config.allow_vote_restart || usr.client.holder) - initiate_vote(VOTE_RESTART, usr.key) - if(VOTE_GAMEMODE) - if(config.allow_vote_mode || usr.client.holder) - initiate_vote(VOTE_GAMEMODE, usr.key) - if(VOTE_CREW_TRANSFER) - if(config.allow_vote_restart || usr.client.holder) - initiate_vote(VOTE_CREW_TRANSFER, usr.key) - if(VOTE_ADD_ANTAGONIST) - if(config.allow_extra_antags || usr.client.holder) - initiate_vote(VOTE_ADD_ANTAGONIST, usr.key) - if(VOTE_CUSTOM) - if(usr.client.holder) - initiate_vote(VOTE_CUSTOM, usr.key) - - if("unvote") - submit_vote(usr.ckey, null) - - else - var/t = round(text2num(href_list["vote"])) - if(t) // It starts from 1, so there's no problem - submit_vote(usr.ckey, t) - usr.client.vote() - -/client/verb/vote() - set category = "OOC" - set name = "Vote" - - if(SSvote) - src << browse(SSvote.interface(src), "window=vote;size=500x[300 + SSvote.choices.len * 25]") +SUBSYSTEM_DEF(vote) + name = "Vote" + wait = 10 + priority = FIRE_PRIORITY_VOTE + runlevels = RUNLEVEL_LOBBY | RUNLEVELS_DEFAULT + flags = SS_KEEP_TIMING | SS_NO_INIT + var/list/round_voters = list() + + //Current vote + var/initiator + var/started_time + var/time_remaining + var/duration + var/mode + var/question + var/list/choices = list() + var/list/gamemode_names = list() + var/list/voted = list() + var/list/current_votes = list() + var/list/additional_text = list() + +/datum/controller/subsystem/vote/fire(resumed) + if(mode) + time_remaining = round((started_time + duration - world.time)/10) + if(mode == VOTE_GAMEMODE && ticker.current_state >= GAME_STATE_SETTING_UP) + to_chat(world, "Gamemode vote aborted: Game has already started.") + reset() + return + if(time_remaining <= 0) + result() + reset() + +/datum/controller/subsystem/vote/proc/autotransfer() + initiate_vote(VOTE_CREW_TRANSFER, "the server", 1) + log_debug("The server has called a crew transfer vote.") + +/datum/controller/subsystem/vote/proc/autogamemode() + initiate_vote(VOTE_GAMEMODE, "the server", 1) + log_debug("The server has called a gamemode vote.") + +/datum/controller/subsystem/vote/proc/reset() + initiator = null + started_time = null + duration = null + time_remaining = null + mode = null + question = null + choices.Cut() + voted.Cut() + current_votes.Cut() + additional_text.Cut() + +/datum/controller/subsystem/vote/proc/get_result() // Get the highest number of votes + var/greatest_votes = 0 + var/total_votes = 0 + + for(var/option in choices) + var/votes = choices[option] + total_votes += votes + if(votes > greatest_votes) + greatest_votes = votes + + if(!config.vote_no_default && choices.len) // Default-vote for everyone who didn't vote + var/non_voters = (GLOB.clients.len - total_votes) + if(non_voters > 0) + if(mode == VOTE_RESTART) + choices["Continue Playing"] += non_voters + if(choices["Continue Playing"] >= greatest_votes) + greatest_votes = choices["Continue Playing"] + else if(mode == VOTE_GAMEMODE) + if(master_mode in choices) + choices[master_mode] += non_voters + if(choices[master_mode] >= greatest_votes) + greatest_votes = choices[master_mode] + else if(mode == VOTE_CREW_TRANSFER) + var/factor = 0.5 + switch(world.time / (10 * 60)) // minutes + if(0 to 60) + factor = 0.5 + if(61 to 120) + factor = 0.8 + if(121 to 240) + factor = 1 + if(241 to 300) + factor = 1.2 + else + factor = 1.4 + choices["Initiate Crew Transfer"] = round(choices["Initiate Crew Transfer"] * factor) + world << "Crew Transfer Factor: [factor]" + greatest_votes = max(choices["Initiate Crew Transfer"], choices["Continue The Round"]) + + . = list() // Get all options with that many votes and return them in a list + if(greatest_votes) + for(var/option in choices) + if(choices[option] == greatest_votes) + . += option + +/datum/controller/subsystem/vote/proc/announce_result() + var/list/winners = get_result() + var/text + if(winners.len > 0) + if(winners.len > 1) + if(mode != VOTE_GAMEMODE || ticker.hide_mode == 0) // Here we are making sure we don't announce potential game modes + text = "Vote Tied Between:\n" + for(var/option in winners) + text += "\t[option]\n" + . = pick(winners) + + for(var/key in current_votes) + if(choices[current_votes[key]] == .) + round_voters += key // Keep track of who voted for the winning round. + if(mode != VOTE_GAMEMODE || . == "Extended" || ticker.hide_mode == 0) // Announce Extended gamemode, but not other gamemodes + text += "Vote Result: [mode == VOTE_GAMEMODE ? gamemode_names[.] : .]" + else + text += "The vote has ended." + + else + text += "Vote Result: Inconclusive - No Votes!" + if(mode == VOTE_ADD_ANTAGONIST) + antag_add_failed = 1 + log_vote(text) + to_chat(world, "[text]") + +/datum/controller/subsystem/vote/proc/result() + . = announce_result() + var/restart = 0 + if(.) + switch(mode) + if(VOTE_RESTART) + if(. == "Restart Round") + restart = 1 + if(VOTE_GAMEMODE) + if(master_mode != .) + world.save_mode(.) + if(ticker && ticker.mode) + restart = 1 + else + master_mode = . + if(VOTE_CREW_TRANSFER) + if(. == "Initiate Crew Transfer") + init_shift_change(null, 1) + if(VOTE_ADD_ANTAGONIST) + if(isnull(.) || . == "None") + antag_add_failed = 1 + else + additional_antag_types |= antag_names_to_ids[.] + + if(mode == VOTE_GAMEMODE) //fire this even if the vote fails. + if(!round_progressing) + round_progressing = 1 + world << "The round will start soon." + + if(restart) + world << "World restarting due to vote..." + feedback_set_details("end_error", "restart vote") + if(blackbox) + blackbox.save_all_data_to_sql() + sleep(50) + log_game("Rebooting due to restart vote") + world.Reboot() + +/datum/controller/subsystem/vote/proc/submit_vote(ckey, newVote) + if(mode) + if(config.vote_no_dead && usr.stat == DEAD && !usr.client.holder) + return + if(current_votes[ckey]) + choices[choices[current_votes[ckey]]]-- + if(newVote && newVote >= 1 && newVote <= choices.len) + choices[choices[newVote]]++ + current_votes[ckey] = newVote + else + current_votes[ckey] = null + +/datum/controller/subsystem/vote/proc/initiate_vote(vote_type, initiator_key, automatic = FALSE, time = config.vote_period) + if(!mode) + if(started_time != null && !(check_rights(R_ADMIN) || automatic)) + var/next_allowed_time = (started_time + config.vote_delay) + if(next_allowed_time > world.time) + return 0 + + reset() + + switch(vote_type) + if(VOTE_RESTART) + choices.Add("Restart Round", "Continue Playing") + if(VOTE_GAMEMODE) + if(ticker.current_state >= GAME_STATE_SETTING_UP) + return 0 + choices.Add(config.votable_modes) + for(var/F in choices) + var/datum/game_mode/M = gamemode_cache[F] + if(!M) + continue + gamemode_names[M.config_tag] = capitalize(M.name) //It's ugly to put this here but it works + additional_text.Add("[M.required_players]") + gamemode_names["secret"] = "Secret" + if(VOTE_CREW_TRANSFER) + if(!check_rights(R_ADMIN|R_MOD, 0)) // The gods care not for the affairs of the mortals + if(get_security_level() == "red" || get_security_level() == "delta") + initiator_key << "The current alert status is too high to call for a crew transfer!" + return 0 + if(ticker.current_state <= GAME_STATE_SETTING_UP) + initiator_key << "The crew transfer button has been disabled!" + return 0 + question = "End the shift?" + choices.Add("Initiate Crew Transfer", "Continue The Round") + if(VOTE_ADD_ANTAGONIST) + if(!config.allow_extra_antags || ticker.current_state >= GAME_STATE_SETTING_UP) + return 0 + for(var/antag_type in all_antag_types) + var/datum/antagonist/antag = all_antag_types[antag_type] + if(!(antag.id in additional_antag_types) && antag.is_votable()) + choices.Add(antag.role_text) + choices.Add("None") + if(VOTE_CUSTOM) + question = sanitizeSafe(input(usr, "What is the vote for?") as text|null) + if(!question) + return 0 + for(var/i = 1 to 10) + var/option = capitalize(sanitize(input(usr, "Please enter an option or hit cancel to finish") as text|null)) + if(!option || mode || !usr.client) + break + choices.Add(option) + else + return 0 + + mode = vote_type + initiator = initiator_key + started_time = world.time + duration = time + var/text = "[capitalize(mode)] vote started by [initiator]." + if(mode == VOTE_CUSTOM) + text += "\n[question]" + + log_vote(text) + + world << "[text]\nType vote or click here to place your votes.\nYou have [config.vote_period / 10] seconds to vote." + if(vote_type == VOTE_CREW_TRANSFER || vote_type == VOTE_GAMEMODE || vote_type == VOTE_CUSTOM) + world << sound('sound/ambience/alarm4.ogg', repeat = 0, wait = 0, volume = 50, channel = 3) + + if(mode == VOTE_GAMEMODE && round_progressing) + round_progressing = 0 + world << "Round start has been delayed." + + time_remaining = round(config.vote_period / 10) + return 1 + return 0 + +/datum/controller/subsystem/vote/proc/interface(var/client/C) + if(!istype(C)) + return + var/admin = FALSE + if(C.holder) + if(C.holder.rights & R_ADMIN) + admin = TRUE + + . = "Voting Panel" + if(mode) + if(question) + . += "

Vote: '[question]'

" + else + . += "

Vote: [capitalize(mode)]

" + . += "Time Left: [time_remaining] s
" + . += "" + if(mode == VOTE_GAMEMODE) + .+= "" + + for(var/i = 1 to choices.len) + var/votes = choices[choices[i]] + if(!votes) + votes = 0 + . += "" + var/thisVote = (current_votes[C.ckey] == i) + if(mode == VOTE_GAMEMODE) + . += "" + else + . += "" + if (additional_text.len >= i) + . += additional_text[i] + . += "" + + . += "" + + . += "
ChoicesVotesMinimum Players
[thisVote ? "" : ""][gamemode_names[choices[i]]][thisVote ? "" : ""][votes][thisVote ? "" : ""][choices[i]][thisVote ? "" : ""][votes]
Unvote

" + if(admin) + . += "(Cancel Vote) " + else + . += "

Start a vote:



" + + . += "Close" + +/datum/controller/subsystem/vote/Topic(href, href_list[]) + if(!usr || !usr.client) + return + switch(href_list["vote"]) + if("close") + usr << browse(null, "window=vote") + return + + if("cancel") + if(usr.client.holder) + reset() + if("toggle_restart") + if(usr.client.holder) + config.allow_vote_restart = !config.allow_vote_restart + if("toggle_gamemode") + if(usr.client.holder) + config.allow_vote_mode = !config.allow_vote_mode + + if(VOTE_RESTART) + if(config.allow_vote_restart || usr.client.holder) + initiate_vote(VOTE_RESTART, usr.key) + if(VOTE_GAMEMODE) + if(config.allow_vote_mode || usr.client.holder) + initiate_vote(VOTE_GAMEMODE, usr.key) + if(VOTE_CREW_TRANSFER) + if(config.allow_vote_restart || usr.client.holder) + initiate_vote(VOTE_CREW_TRANSFER, usr.key) + if(VOTE_ADD_ANTAGONIST) + if(config.allow_extra_antags || usr.client.holder) + initiate_vote(VOTE_ADD_ANTAGONIST, usr.key) + if(VOTE_CUSTOM) + if(usr.client.holder) + initiate_vote(VOTE_CUSTOM, usr.key) + + if("unvote") + submit_vote(usr.ckey, null) + + else + var/t = round(text2num(href_list["vote"])) + if(t) // It starts from 1, so there's no problem + submit_vote(usr.ckey, t) + usr.client.vote() + +/client/verb/vote() + set category = "OOC" + set name = "Vote" + + if(SSvote) + src << browse(SSvote.interface(src), "window=vote;size=500x[300 + SSvote.choices.len * 25]") diff --git a/code/controllers/verbs.dm b/code/controllers/verbs.dm index 5cd8d2ab08..4153900657 100644 --- a/code/controllers/verbs.dm +++ b/code/controllers/verbs.dm @@ -63,76 +63,59 @@ usr.client.debug_variables(antag) message_admins("Admin [key_name_admin(usr)] is debugging the [antag.role_text] template.") -/client/proc/debug_controller(controller in list("Master","Ticker","Ticker Process","Air","Jobs","Sun","Radio","Supply","Shuttles","Emergency Shuttle","Configuration","pAI", "Cameras", "Transfer Controller", "Gas Data","Event","Plants","Alarm","Nano","Chemistry","Vote","Xenobio","Planets")) +/client/proc/debug_controller() set category = "Debug" set name = "Debug Controller" - set desc = "Debug the various periodic loop controllers for the game (be careful!)" + set desc = "Debug the various subsystems/controllers for the game (be careful!)" - if(!holder) return - switch(controller) - if("Master") - debug_variables(master_controller) - feedback_add_details("admin_verb","DMC") - if("Ticker") - debug_variables(ticker) - feedback_add_details("admin_verb","DTicker") - if("Ticker Process") - debug_variables(tickerProcess) - feedback_add_details("admin_verb","DTickerProcess") - if("Air") - debug_variables(air_master) - feedback_add_details("admin_verb","DAir") - if("Jobs") - debug_variables(job_master) - feedback_add_details("admin_verb","DJobs") - if("Sun") - debug_variables(sun) - feedback_add_details("admin_verb","DSun") - if("Radio") - debug_variables(radio_controller) - feedback_add_details("admin_verb","DRadio") - if("Supply") - debug_variables(supply_controller) - feedback_add_details("admin_verb","DSupply") - if("Shuttles") - debug_variables(shuttle_controller) - feedback_add_details("admin_verb","DShuttles") - if("Emergency Shuttle") - debug_variables(emergency_shuttle) - feedback_add_details("admin_verb","DEmergency") - if("Configuration") - debug_variables(config) - feedback_add_details("admin_verb","DConf") - if("pAI") - debug_variables(paiController) - feedback_add_details("admin_verb","DpAI") - if("Cameras") - debug_variables(cameranet) - feedback_add_details("admin_verb","DCameras") - if("Transfer Controller") - debug_variables(transfer_controller) - feedback_add_details("admin_verb","DAutovoter") - if("Gas Data") - debug_variables(gas_data) - feedback_add_details("admin_verb","DGasdata") - if("Event") - debug_variables(event_manager) - feedback_add_details("admin_verb", "DEvent") - if("Plants") - debug_variables(plant_controller) - feedback_add_details("admin_verb", "DPlants") - if("Alarm") - debug_variables(alarm_manager) - feedback_add_details("admin_verb", "DAlarm") - if("Nano") - debug_variables(GLOB.nanomanager) - feedback_add_details("admin_verb", "DNano") - if("Chemistry") - debug_variables(chemistryProcess) - feedback_add_details("admin_verb", "DChem") - message_admins("Admin [key_name_admin(usr)] is debugging the [controller] controller.") - return + if(!holder) + return + var/list/options = list() + options["MC"] = Master + options["Failsafe"] = Failsafe + options["Configuration"] = config + for(var/i in Master.subsystems) + var/datum/controller/subsystem/S = i + if(!istype(S)) //Eh, we're a debug verb, let's have typechecking. + continue + var/strtype = "SS[get_end_section_of_type(S.type)]" + if(options[strtype]) + var/offset = 2 + while(istype(options["[strtype]_[offset] - DUPE ERROR"], /datum/controller/subsystem)) + offset++ + options["[strtype]_[offset] - DUPE ERROR"] = S //Something is very, very wrong. + else + options[strtype] = S + //Goon PS stuff, and other yet-to-be-subsystem things. + options["LEGACY: master_controller"] = master_controller + options["LEGACY: ticker"] = ticker + options["LEGACY: tickerProcess"] = tickerProcess + options["LEGACY: air_master"] = air_master + options["LEGACY: job_master"] = job_master + options["LEGACY: radio_controller"] = radio_controller + options["LEGACY: supply_controller"] = supply_controller + options["LEGACY: emergency_shuttle"] = emergency_shuttle + options["LEGACY: paiController"] = paiController + options["LEGACY: cameranet"] = cameranet + options["LEGACY: transfer_controller"] = transfer_controller + options["LEGACY: gas_data"] = gas_data + options["LEGACY: plant_controller"] = plant_controller + options["LEGACY: alarm_manager"] = alarm_manager + options["LEGACY: nanomanager"] = GLOB.nanomanager + options["LEGACY: chemistryProcess"] = chemistryProcess + + var/pick = input(mob, "Choose a controller to debug/view variables of.", "VV controller:") as null|anything in options + if(!pick) + return + var/datum/D = options[pick] + if(!istype(D)) + return + feedback_add_details("admin_verb", "DebugController") + message_admins("Admin [key_name_admin(mob)] is debugging the [pick] controller.") + debug_variables(D) + +//VOREStation Edit Begin /client/proc/debug_process_scheduler() set category = "Debug" set name = "Debug Process Scheduler" @@ -155,3 +138,4 @@ debug_variables(P) feedback_add_details("admin_verb", "DProcCtrl") message_admins("Admin [key_name_admin(usr)] is debugging the [controller] controller.") +//VOREStation Edit End \ No newline at end of file diff --git a/code/datums/api.dm b/code/datums/api.dm index c67773e033..582ad6cef0 100644 --- a/code/datums/api.dm +++ b/code/datums/api.dm @@ -60,64 +60,6 @@ var/list/topic_commands_names = list() return errorcount return 0 - -/datum/topic_command/send_adminmsg - name = "send_adminmsg" - description = "Sends a adminmessage to a player" - params = list( - "ckey" = list("name"="ckey","desc"="The target of the adminmessage","req"=1,"type"="str"), - "msg" = list("name"="msg","desc"="The message that should be sent","req"=1,"type"="str"), - "senderkey" = list("name"="senderkey","desc"="Unique id of the person that sent the adminmessage","req"=1,"type"="senderkey"), - "rank" = list("name"="rank","desc"="The rank that should be displayed - Defaults to admin if none specified","req"=0,"type"="str") - ) - -/datum/topic_command/send_adminmsg/run_command(queryparams) - /* - We got an adminmsg from IRC bot lets split the API - expected output: - 1. ckey = ckey of person the message is to - 2. msg = contents of message, parems2list requires - 3. rank = Rank that should be displayed - 4. senderkey = the ircnick that send the message. - */ - - var/client/C - var/req_ckey = ckey(queryparams["ckey"]) - - for(var/client/K in clients) - if(K.ckey == req_ckey) - C = K - break - if(!C) - statuscode = 404 - response = "No client with that name on server" - data = null - return 1 - - var/rank = queryparams["rank"] - if(!rank) - rank = "Admin" - - var/message = "[rank] PM from [queryparams["senderkey"]]: [queryparams["msg"]]" - var/amessage = "[rank] PM from [queryparams["senderkey"]] to [key_name(C)] : [queryparams["msg"]]" - - C.received_discord_pm = world.time - C.discord_admin = queryparams["senderkey"] - - C << 'sound/effects/adminhelp.ogg' - C << message - - for(var/client/A in admins) - if(A != C) - A << amessage - - - statuscode = 200 - response = "Admin Message sent" - data = null - return 1 - - /client var/received_discord_pm var/discord_admin \ No newline at end of file diff --git a/code/datums/autolathe/arms.dm b/code/datums/autolathe/arms.dm index e5831cec71..e170d8c885 100644 --- a/code/datums/autolathe/arms.dm +++ b/code/datums/autolathe/arms.dm @@ -70,12 +70,12 @@ hidden = 1 /datum/category_item/autolathe/arms/tommymag - name = "Tommygun magazine (.45)" + name = "Tommy Gun magazine (.45)" path =/obj/item/ammo_magazine/m45tommy hidden = 1 /datum/category_item/autolathe/arms/tommydrum - name = "Tommygun drum magazine (.45)" + name = "Tommy Gun drum magazine (.45)" path =/obj/item/ammo_magazine/m45tommydrum hidden = 1 @@ -234,13 +234,13 @@ hidden = 1 /datum/category_item/autolathe/arms/tommymag - name = "Tommygun magazine (.45)" + name = "Tommy Gun magazine (.45)" path =/obj/item/ammo_magazine/m45tommy/empty category = "Arms and Ammunition" hidden = 1 /datum/category_item/autolathe/arms/tommydrum - name = "Tommygun drum magazine (.45)" + name = "Tommy Gun drum magazine (.45)" path =/obj/item/ammo_magazine/m45tommydrum/empty category = "Arms and Ammunition" hidden = 1 diff --git a/code/datums/autolathe/general_vr.dm b/code/datums/autolathe/general_vr.dm new file mode 100644 index 0000000000..0d4a58fd96 --- /dev/null +++ b/code/datums/autolathe/general_vr.dm @@ -0,0 +1,3 @@ +/datum/category_item/autolathe/general/holocollar + name = "Holo-collar" + path =/obj/item/clothing/accessory/collar/holo diff --git a/code/datums/beam.dm b/code/datums/beam.dm index 12c22430db..24f5e6c91f 100644 --- a/code/datums/beam.dm +++ b/code/datums/beam.dm @@ -59,6 +59,10 @@ return ..() /datum/beam/proc/Draw() + if(QDELETED(target) || QDELETED(origin)) + qdel(src) + return + var/Angle = round(Get_Angle(origin,target)) var/matrix/rot_matrix = matrix() @@ -102,17 +106,19 @@ //Position the effect so the beam is one continous line var/a if(abs(Pixel_x)>32) - a = Pixel_x > 0 ? round(Pixel_x/32) : Ceiling(Pixel_x/32) + a = Pixel_x > 0 ? round(Pixel_x/32) : CEILING(Pixel_x/32, 1) X.x += a Pixel_x %= 32 if(abs(Pixel_y)>32) - a = Pixel_y > 0 ? round(Pixel_y/32) : Ceiling(Pixel_y/32) + a = Pixel_y > 0 ? round(Pixel_y/32) : CEILING(Pixel_y/32, 1) X.y += a Pixel_y %= 32 X.pixel_x = Pixel_x X.pixel_y = Pixel_y + X.on_drawn() + /obj/effect/ebeam mouse_opacity = 0 anchored = TRUE @@ -127,10 +133,53 @@ /obj/effect/ebeam/singularity_act() return +// Called when the beam datum finishes drawing and the ebeam object is placed correctly. +/obj/effect/ebeam/proc/on_drawn() + return + /obj/effect/ebeam/deadly/Crossed(atom/A) ..() A.ex_act(1) +// 'Reactive' beam parts do something when touched or stood in. +/obj/effect/ebeam/reactive + +/obj/effect/ebeam/reactive/Initialize() + START_PROCESSING(SSobj, src) + return ..() + +/obj/effect/ebeam/reactive/Destroy() + STOP_PROCESSING(SSobj, src) + return ..() + +/obj/effect/ebeam/reactive/on_drawn() + for(var/A in loc) + on_contact(A) + +/obj/effect/ebeam/reactive/Crossed(atom/A) + ..() + on_contact(A) + +/obj/effect/ebeam/reactive/process() + for(var/A in loc) + on_contact(A) + +// Override for things to do when someone touches the beam. +/obj/effect/ebeam/reactive/proc/on_contact(atom/movable/AM) + return + + +// Shocks things that touch it. +/obj/effect/ebeam/reactive/electric + var/shock_amount = 25 // Be aware that high numbers may stun and result in dying due to not being able to get out of the beam. + +/obj/effect/ebeam/reactive/electric/on_contact(atom/movable/AM) + if(isliving(AM)) + var/mob/living/L = AM + L.inflict_shock_damage(shock_amount) + + + /atom/proc/Beam(atom/BeamTarget,icon_state="b_beam",icon='icons/effects/beam.dmi',time=50, maxdistance=10,beam_type=/obj/effect/ebeam,beam_sleep_time=3) var/datum/beam/newbeam = new(src,BeamTarget,icon,icon_state,time,maxdistance,beam_type,beam_sleep_time) spawn(0) diff --git a/code/datums/browser.dm b/code/datums/browser.dm index 577698532e..ea2f4feec2 100644 --- a/code/datums/browser.dm +++ b/code/datums/browser.dm @@ -105,6 +105,10 @@ "} /datum/browser/proc/open(var/use_onclose = 1) + if(isnull(window_id)) //null check because this can potentially nuke goonchat + WARNING("Browser [title] tried to open with a null ID") + to_chat(user, "The [title] browser you tried to open failed a sanity check! Please report this on github!") + return var/window_size = "" if (width && height) window_size = "size=[width]x[height];" @@ -112,9 +116,6 @@ if (use_onclose) onclose(user, window_id, ref) -/datum/browser/proc/close() - user << browse(null, "window=[window_id]") - // This will allow you to show an icon in the browse window // This is added to mob so that it can be used without a reference to the browser object // There is probably a better place for this... @@ -157,12 +158,12 @@ //world << "OnClose [user]: [windowid] : ["on-close=\".windowclose [param]\""]" - // the on-close client verb // called when a browser popup window is closed after registering with proc/onclose() // if a valid atom reference is supplied, call the atom's Topic() with "close=1" // otherwise, just reset the client mob's machine var. // + /client/verb/windowclose(var/atomref as text) set hidden = 1 // hide this verb from the user's panel set name = ".windowclose" // no autocomplete on cmd line @@ -182,3 +183,198 @@ //world << "[src] was [src.mob.machine], setting to null" src.mob.unset_machine() return + +/datum/browser/proc/close() + if(!isnull(window_id))//null check because this can potentially nuke goonchat + user << browse(null, "window=[window_id]") + else + WARNING("Browser [title] tried to close with a null ID") + +/datum/browser/modal/alert/New(User,Message,Title,Button1="Ok",Button2,Button3,StealFocus = 1,Timeout=6000) + if (!User) + return + + var/output = {"
[Message]

+
+ [Button1]"} + + if (Button2) + output += {"[Button2]"} + + if (Button3) + output += {"[Button3]"} + + output += {"
"} + + ..(User, ckey("[User]-[Message]-[Title]-[world.time]-[rand(1,10000)]"), Title, 350, 150, src, StealFocus, Timeout) + set_content(output) + +/datum/browser/modal/alert/Topic(href,href_list) + if (href_list["close"] || !user || !user.client) + opentime = 0 + return + if (href_list["button"]) + var/button = text2num(href_list["button"]) + if (button <= 3 && button >= 1) + selectedbutton = button + opentime = 0 + close() + +//designed as a drop in replacement for alert(); functions the same. (outside of needing User specified) +/proc/tgalert(var/mob/User, Message, Title, Button1="Ok", Button2, Button3, StealFocus = 1, Timeout = 6000) + if (!User) + User = usr + switch(askuser(User, Message, Title, Button1, Button2, Button3, StealFocus, Timeout)) + if (1) + return Button1 + if (2) + return Button2 + if (3) + return Button3 + +//Same shit, but it returns the button number, could at some point support unlimited button amounts. +/proc/askuser(var/mob/User,Message, Title, Button1="Ok", Button2, Button3, StealFocus = 1, Timeout = 6000) + if (!istype(User)) + if (istype(User, /client/)) + var/client/C = User + User = C.mob + else + return + var/datum/browser/modal/alert/A = new(User, Message, Title, Button1, Button2, Button3, StealFocus, Timeout) + A.open() + A.wait() + if (A.selectedbutton) + return A.selectedbutton + +/datum/browser/modal + var/opentime = 0 + var/timeout + var/selectedbutton = 0 + var/stealfocus + +/datum/browser/modal/New(nuser, nwindow_id, ntitle = 0, nwidth = 0, nheight = 0, var/atom/nref = null, StealFocus = 1, Timeout = 6000) + ..() + stealfocus = StealFocus + if (!StealFocus) + window_options += "focus=false;" + timeout = Timeout + + +/datum/browser/modal/close() + .=..() + opentime = 0 + +/datum/browser/modal/open() + set waitfor = 0 + opentime = world.time + + if (stealfocus) + . = ..(use_onclose = 1) + else + var/focusedwindow = winget(user, null, "focus") + . = ..(use_onclose = 1) + + //waits for the window to show up client side before attempting to un-focus it + //winexists sleeps until it gets a reply from the client, so we don't need to bother sleeping + for (var/i in 1 to 10) + if (user && winexists(user, window_id)) + if (focusedwindow) + winset(user, focusedwindow, "focus=true") + else + winset(user, "mapwindow", "focus=true") + break + if (timeout) + addtimer(CALLBACK(src, .proc/close), timeout) + +/datum/browser/modal/proc/wait() + while (opentime && selectedbutton <= 0 && (!timeout || opentime+timeout > world.time)) + stoplag(1) + +/datum/browser/modal/listpicker + var/valueslist = list() + +/datum/browser/modal/listpicker/New(User,Message,Title,Button1="Ok",Button2,Button3,StealFocus = 1, Timeout = FALSE,list/values,inputtype="checkbox", width, height, slidecolor) + if (!User) + return + + var/output = {"
    "} + if (inputtype == "checkbox" || inputtype == "radio") + for (var/i in values) + var/div_slider = slidecolor + if(!i["allowed_edit"]) + div_slider = "locked" + output += {"
  • + +
  • "} + else + for (var/i in values) + output += {"
  • +
  • "} + output += {"
+ "} + + if (Button2) + output += {""} + + if (Button3) + output += {""} + + output += {"
"} + ..(User, ckey("[User]-[Message]-[Title]-[world.time]-[rand(1,10000)]"), Title, width, height, src, StealFocus, Timeout) + set_content(output) + +/datum/browser/modal/listpicker/Topic(href,href_list) + if (href_list["close"] || !user || !user.client) + opentime = 0 + return + if (href_list["button"]) + var/button = text2num(href_list["button"]) + if (button <= 3 && button >= 1) + selectedbutton = button + for (var/item in href_list) + switch(item) + if ("close", "button", "src") + continue + else + valueslist[item] = href_list[item] + opentime = 0 + close() + +/proc/presentpicker(var/mob/User,Message, Title, Button1="Ok", Button2, Button3, StealFocus = 1,Timeout = 6000,list/values, inputtype = "checkbox", width, height, slidecolor) + if (!istype(User)) + if (istype(User, /client/)) + var/client/C = User + User = C.mob + else + return + var/datum/browser/modal/listpicker/A = new(User, Message, Title, Button1, Button2, Button3, StealFocus,Timeout, values, inputtype, width, height, slidecolor) + A.open() + A.wait() + if (A.selectedbutton) + return list("button" = A.selectedbutton, "values" = A.valueslist) + +/proc/input_bitfield(var/mob/User, title, bitfield, current_value, nwidth = 350, nheight = 350, nslidecolor, allowed_edit_list = null) + if (!User || !(bitfield in GLOB.bitfields)) + return + var/list/pickerlist = list() + for (var/i in GLOB.bitfields[bitfield]) + var/can_edit = 1 + if(!isnull(allowed_edit_list) && !(allowed_edit_list & GLOB.bitfields[bitfield][i])) + can_edit = 0 + if (current_value & GLOB.bitfields[bitfield][i]) + pickerlist += list(list("checked" = 1, "value" = GLOB.bitfields[bitfield][i], "name" = i, "allowed_edit" = can_edit)) + else + pickerlist += list(list("checked" = 0, "value" = GLOB.bitfields[bitfield][i], "name" = i, "allowed_edit" = can_edit)) + var/list/result = presentpicker(User, "", title, Button1="Save", Button2 = "Cancel", Timeout=FALSE, values = pickerlist, width = nwidth, height = nheight, slidecolor = nslidecolor) + if (islist(result)) + if (result["button"] == 2) // If the user pressed the cancel button + return + . = 0 + for (var/flag in result["values"]) + . |= GLOB.bitfields[bitfield][flag] + else + return diff --git a/code/datums/callback.dm b/code/datums/callback.dm index a92a715ece..74d5719ce2 100644 --- a/code/datums/callback.dm +++ b/code/datums/callback.dm @@ -166,7 +166,7 @@ // Use sparingly /world/proc/PushUsr(mob/M, datum/callback/CB) var/temp = usr - testing("PushUsr() in use") +// testing("PushUsr() in use") usr = M . = CB.Invoke() usr = temp diff --git a/code/datums/datum.dm b/code/datums/datum.dm index 7441999f0b..2ec99d81d4 100644 --- a/code/datums/datum.dm +++ b/code/datums/datum.dm @@ -5,9 +5,9 @@ /datum var/gc_destroyed //Time when this object was destroyed. + var/list/active_timers //for SStimer var/weakref/weakref // Holder of weakref instance pointing to this datum - var/is_processing = FALSE // If this datum is in an MC processing list, this will be set to its name. - var/datum_flags = 0 + var/datum_flags = NONE #ifdef TESTING var/tmp/running_find_references @@ -18,7 +18,18 @@ // This should be overridden to remove all references pointing to the object being destroyed. // Return the appropriate QDEL_HINT; in most cases this is QDEL_HINT_QUEUE. /datum/proc/Destroy(force=FALSE) + + //clear timers + var/list/timers = active_timers + active_timers = null + for(var/thing in timers) + var/datum/timedevent/timer = thing + if (timer.spent) + continue + qdel(timer) + weakref = null // Clear this reference to ensure it's kept for as brief duration as possible. + tag = null GLOB.nanomanager.close_uis(src) return QDEL_HINT_QUEUE diff --git a/code/datums/datumvars.dm b/code/datums/datumvars.dm index c245d60894..aa28473fa3 100644 --- a/code/datums/datumvars.dm +++ b/code/datums/datumvars.dm @@ -1,12 +1,68 @@ -#define DF_VAR_EDITED 2 -#define NAMEOF(datum, X) (#X || ##datum.##X) - +/datum/proc/CanProcCall(procname) + return TRUE /datum/proc/can_vv_get(var_name) return TRUE /datum/proc/vv_edit_var(var_name, var_value) //called whenever a var is edited - if(var_name == NAMEOF(src, vars)) + if(var_name == NAMEOF(src, vars) || var_name == NAMEOF(src, parent_type)) return FALSE vars[var_name] = var_value - datum_flags |= DF_VAR_EDITED \ No newline at end of file + datum_flags |= DF_VAR_EDITED + return TRUE + +/datum/proc/vv_get_var(var_name) + switch(var_name) + if ("vars") + return debug_variable(var_name, list(), 0, src) + return debug_variable(var_name, vars[var_name], 0, src) + +//please call . = ..() first and append to the result, that way parent items are always at the top and child items are further down +//add separaters by doing . += "---" +/datum/proc/vv_get_dropdown() + . = list() + VV_DROPDOWN_OPTION("", "---") + VV_DROPDOWN_OPTION(VV_HK_CALLPROC, "Call Proc") + VV_DROPDOWN_OPTION(VV_HK_MARK, "Mark Object") + VV_DROPDOWN_OPTION(VV_HK_DELETE, "Delete") + VV_DROPDOWN_OPTION(VV_HK_EXPOSE, "Show VV To Player") + +//This proc is only called if everything topic-wise is verified. The only verifications that should happen here is things like permission checks! +//href_list is a reference, modifying it in these procs WILL change the rest of the proc in topic.dm of admin/view_variables! +/datum/proc/vv_do_topic(list/href_list) + if(!usr || !usr.client.holder) + return //This is VV, not to be called by anything else. + IF_VV_OPTION(VV_HK_EXPOSE) + if(!check_rights(R_ADMIN, FALSE)) + return + var/value = usr.client.vv_get_value(VV_CLIENT) + if (value["class"] != VV_CLIENT) + return + var/client/C = value["value"] + if (!C) + return + var/prompt = alert("Do you want to grant [C] access to view this VV window? (they will not be able to edit or change anysrc nor open nested vv windows unless they themselves are an admin)", "Confirm", "Yes", "No") + if (prompt != "Yes" || !usr.client) + return + message_admins("[key_name_admin(usr)] Showed [key_name_admin(C)] a VV window") + log_admin("Admin [key_name(usr)] Showed [key_name(C)] a VV window of a [src]") + to_chat(C, "[usr.client.holder.fakekey ? "an Administrator" : "[usr.client.key]"] has granted you access to view a View Variables window") + C.debug_variables(src) + IF_VV_OPTION(VV_HK_DELETE) + if(!check_rights(R_DEBUG)) + return + usr.client.admin_delete(src) + if (isturf(src)) // show the turf that took its place + usr.client.debug_variables(src) + IF_VV_OPTION(VV_HK_MARK) + usr.client.mark_datum(src) + IF_VV_OPTION(VV_HK_CALLPROC) + usr.client.callproc_datum(src) + +/datum/proc/vv_get_header() + . = list() + if(("name" in vars) && !isatom(src)) + . += "[vars["name"]]
" + +/datum/proc/on_reagent_change(changetype) + return diff --git a/code/datums/ghost_query.dm b/code/datums/ghost_query.dm index d041558a0c..2f7942a9b2 100644 --- a/code/datums/ghost_query.dm +++ b/code/datums/ghost_query.dm @@ -106,6 +106,13 @@ check_bans = list("AI", "Cyborg", "Syndicate") cutoff_number = 1 +/datum/ghost_query/borer + role_name = "Cortical Borer" + question = "A cortical borer has just been created on the facility. Would you like to play as them?" + be_special_flag = BE_ALIEN + check_bans = list("Syndicate", "Borer") + cutoff_number = 1 + // Surface stuff. /datum/ghost_query/lost_drone role_name = "Lost Drone" diff --git a/code/datums/helper_datums/global_iterator.dm b/code/datums/helper_datums/global_iterator.dm index d511b5d233..2ebab5582d 100644 --- a/code/datums/helper_datums/global_iterator.dm +++ b/code/datums/helper_datums/global_iterator.dm @@ -1,3 +1,7 @@ +/* + DO NOT USE THIS. THIS IS BEING DEPRECATED BY PROCESSING SUBSYSTEMS (controllers/subsystems/processing) AND TIMERS. +*/ + /* README: @@ -109,9 +113,6 @@ Data storage vars: CRASH("The global_iterator loop \ref[src] failed to terminate in designated timeframe. This may be caused by server lagging.") return 1 - proc/process() - return - proc/active() return control_switch diff --git a/code/datums/looping_sounds/_looping_sound.dm b/code/datums/looping_sounds/_looping_sound.dm new file mode 100644 index 0000000000..99af50bf42 --- /dev/null +++ b/code/datums/looping_sounds/_looping_sound.dm @@ -0,0 +1,111 @@ +/* + output_atoms (list of atoms) The destination(s) for the sounds + + mid_sounds (list or soundfile) Since this can be either a list or a single soundfile you can have random sounds. May contain further lists but must contain a soundfile at the end. + mid_length (num) The length to wait between playing mid_sounds + + start_sound (soundfile) Played before starting the mid_sounds loop + start_length (num) How long to wait before starting the main loop after playing start_sound + + end_sound (soundfile) The sound played after the main loop has concluded + + chance (num) Chance per loop to play a mid_sound + volume (num) Sound output volume + muted (bool) Private. Used to stop the sound loop. + max_loops (num) The max amount of loops to run for. + direct (bool) If true plays directly to provided atoms instead of from them + opacity_check (bool) If true, things behind walls/opaque things won't hear the sounds. + pref_check (type) If set to a /datum/client_preference type, will check if the hearer has that preference active before playing it to them. +*/ +/datum/looping_sound + var/list/atom/output_atoms + var/mid_sounds + var/mid_length + var/start_sound + var/start_length + var/end_sound + var/chance + var/volume = 100 + var/max_loops + var/direct + var/opacity_check + var/pref_check + + var/timerid + +/datum/looping_sound/New(list/_output_atoms=list(), start_immediately=FALSE, _direct=FALSE) + if(!mid_sounds) + WARNING("A looping sound datum was created without sounds to play.") + return + + output_atoms = _output_atoms + direct = _direct + + if(start_immediately) + start() + +/datum/looping_sound/Destroy() + stop() + output_atoms = null + return ..() + +/datum/looping_sound/proc/start(atom/add_thing) + if(add_thing) + output_atoms |= add_thing + if(timerid) + return + on_start() + +/datum/looping_sound/proc/stop(atom/remove_thing) + if(remove_thing) + output_atoms -= remove_thing + if(!timerid) + return + on_stop() + deltimer(timerid) + timerid = null + +/datum/looping_sound/proc/sound_loop(starttime) + if(max_loops && world.time >= starttime + mid_length * max_loops) + stop() + return + if(!chance || prob(chance)) + play(get_sound(starttime)) + if(!timerid) + timerid = addtimer(CALLBACK(src, .proc/sound_loop, world.time), mid_length, TIMER_STOPPABLE | TIMER_LOOP) + +/datum/looping_sound/proc/play(soundfile) + var/list/atoms_cache = output_atoms + var/sound/S = sound(soundfile) + if(direct) + S.channel = open_sound_channel() + S.volume = volume + for(var/i in 1 to atoms_cache.len) + var/atom/thing = atoms_cache[i] + if(direct) + if(ismob(thing)) + var/mob/M = thing + if(!M.is_preference_enabled(pref_check)) + continue + SEND_SOUND(thing, S) + else + playsound(thing, S, volume, ignore_walls = !opacity_check, preference = pref_check) + +/datum/looping_sound/proc/get_sound(starttime, _mid_sounds) + if(!_mid_sounds) + . = mid_sounds + else + . = _mid_sounds + while(!isfile(.) && !isnull(.)) + . = pickweight(.) + +/datum/looping_sound/proc/on_start() + var/start_wait = 1 // On TG this is 0, however it needs to be 1 to work around an issue. + if(start_sound) + play(start_sound) + start_wait = start_length + addtimer(CALLBACK(src, .proc/sound_loop), start_wait) + +/datum/looping_sound/proc/on_stop() + if(end_sound) + play(end_sound) \ No newline at end of file diff --git a/code/datums/looping_sounds/item_sounds.dm b/code/datums/looping_sounds/item_sounds.dm new file mode 100644 index 0000000000..4619acd3b5 --- /dev/null +++ b/code/datums/looping_sounds/item_sounds.dm @@ -0,0 +1,29 @@ +/datum/looping_sound/geiger + mid_sounds = list( + list('sound/items/geiger/low1.ogg'=1, 'sound/items/geiger/low2.ogg'=1, 'sound/items/geiger/low3.ogg'=1, 'sound/items/geiger/low4.ogg'=1), + list('sound/items/geiger/med1.ogg'=1, 'sound/items/geiger/med2.ogg'=1, 'sound/items/geiger/med3.ogg'=1, 'sound/items/geiger/med4.ogg'=1), + list('sound/items/geiger/high1.ogg'=1, 'sound/items/geiger/high2.ogg'=1, 'sound/items/geiger/high3.ogg'=1, 'sound/items/geiger/high4.ogg'=1), + list('sound/items/geiger/ext1.ogg'=1, 'sound/items/geiger/ext2.ogg'=1, 'sound/items/geiger/ext3.ogg'=1, 'sound/items/geiger/ext4.ogg'=1) + ) + mid_length = 1 SECOND + volume = 25 + var/last_radiation + +/datum/looping_sound/geiger/get_sound(starttime) + var/danger + switch(last_radiation) + if(0 to RAD_LEVEL_MODERATE) + danger = 1 + if(RAD_LEVEL_MODERATE to RAD_LEVEL_HIGH) + danger = 2 + if(RAD_LEVEL_HIGH to RAD_LEVEL_VERY_HIGH) + danger = 3 + if(RAD_LEVEL_VERY_HIGH to INFINITY) + danger = 4 + else + return null + return ..(starttime, mid_sounds[danger]) + +/datum/looping_sound/geiger/stop() + . = ..() + last_radiation = 0 diff --git a/code/datums/looping_sounds/machinery_sounds.dm b/code/datums/looping_sounds/machinery_sounds.dm new file mode 100644 index 0000000000..8b927b3a54 --- /dev/null +++ b/code/datums/looping_sounds/machinery_sounds.dm @@ -0,0 +1,46 @@ +/datum/looping_sound/showering + start_sound = 'sound/machines/shower/shower_start.ogg' + start_length = 2 + mid_sounds = list('sound/machines/shower/shower_mid1.ogg'=1,'sound/machines/shower/shower_mid2.ogg'=1,'sound/machines/shower/shower_mid3.ogg'=1) + mid_length = 10 + end_sound = 'sound/machines/shower/shower_end.ogg' + volume = 20 + +/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// + +/datum/looping_sound/supermatter + mid_sounds = list('sound/machines/sm/supermatter1.ogg'=1,'sound/machines/sm/supermatter2.ogg'=1,'sound/machines/sm/supermatter3.ogg'=1) + mid_length = 10 + volume = 1 + pref_check = /datum/client_preference/supermatter_hum + +/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// + +/datum/looping_sound/generator + start_sound = 'sound/machines/generator/generator_start.ogg' + start_length = 4 + mid_sounds = list('sound/machines/generator/generator_mid1.ogg'=1, 'sound/machines/generator/generator_mid2.ogg'=1, 'sound/machines/generator/generator_mid3.ogg'=1) + mid_length = 4 + end_sound = 'sound/machines/generator/generator_end.ogg' + volume = 40 + +/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// + + +/datum/looping_sound/deep_fryer + start_sound = 'sound/machines/fryer/deep_fryer_immerse.ogg' //my immersions + start_length = 10 + mid_sounds = list('sound/machines/fryer/deep_fryer_1.ogg' = 1, 'sound/machines/fryer/deep_fryer_2.ogg' = 1) + mid_length = 2 + end_sound = 'sound/machines/fryer/deep_fryer_emerge.ogg' + volume = 15 + +/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// + +/datum/looping_sound/microwave + start_sound = 'sound/machines/microwave/microwave-start.ogg' + start_length = 10 + mid_sounds = list('sound/machines/microwave/microwave-mid1.ogg'=10, 'sound/machines/microwave/microwave-mid2.ogg'=1) + mid_length = 10 + end_sound = 'sound/machines/microwave/microwave-end.ogg' + volume = 90 \ No newline at end of file diff --git a/code/datums/looping_sounds/sequence.dm b/code/datums/looping_sounds/sequence.dm new file mode 100644 index 0000000000..9399619555 --- /dev/null +++ b/code/datums/looping_sounds/sequence.dm @@ -0,0 +1,176 @@ +// These looping sounds work off of a sequence of things (usually letters or numbers) given to them. + +// Base sequencer type. +/datum/looping_sound/sequence + var/sequence = "The quick brown fox jumps over the lazy dog" // The string to iterate over. + var/position = 1 // Where we are inside the sequence. IE the index we're on for the above. + var/loop_sequence = TRUE // If it should loop the entire sequence upon reaching the end. Otherwise stop() is called. + var/repeat_sequnce_delay = 2 SECONDS // How long to wait when reaching the end, if the above var is true, in deciseconds. + var/next_iteration_delay = 0 + +/datum/looping_sound/sequence/vv_edit_var(var_name, var_value) + if(var_name == "sequence") + set_new_sequence(var_value) + return ..() + +/datum/looping_sound/sequence/proc/iterate_on_sequence() + var/data = get_data_from_position() + next_iteration_delay = process_data(data) + increment_position() + +/datum/looping_sound/sequence/proc/get_data_from_position() + return sequence[position] + +// Override to do something based on the input. +/datum/looping_sound/sequence/proc/process_data(input) + return + +// Changes the sequence, and sets the position back to the start. +/datum/looping_sound/sequence/proc/set_new_sequence(new_sequence) + sequence = new_sequence + reset_position() + +// Called to advance the position, and handle reaching the end if so. +/datum/looping_sound/sequence/proc/increment_position() + position++ + if(position > get_max_position()) + reached_end_of_sequence() + +/datum/looping_sound/sequence/proc/get_max_position() + return length(sequence) + +/datum/looping_sound/sequence/proc/reset_position() + position = 1 + +// Called when the sequence is finished being iterated over. +// If looping is on, the position will be reset, otherwise processing will stop. +/datum/looping_sound/sequence/proc/reached_end_of_sequence() + if(loop_sequence) + next_iteration_delay += repeat_sequnce_delay + reset_position() + else + stop() + +/datum/looping_sound/sequence/sound_loop(starttime) + iterate_on_sequence() + + timerid = addtimer(CALLBACK(src, .proc/sound_loop, world.time), next_iteration_delay, TIMER_STOPPABLE) + +#define MORSE_DOT "*" // Yes this is an asterisk but its easier to see on a computer compared to a period. +#define MORSE_DASH "-" +#define MORSE_BASE_DELAY 1 // If you change this you will also need to change [dot|dash]_soundfile variables. + +// This implements an automatic conversion of text (the sequence) into audible morse code. +// This can be useful for flavor purposes. For 'real' usage its suggested to also display the sequence in text form, for the benefit of those without sound. +/datum/looping_sound/sequence/morse + // This is just to pass validation in the base type. + mid_sounds = list('sound/effects/tones/440_sine_01.ogg') + mid_length = 1 + opacity_check = TRUE // So we don't have to constantly hear it when out of sight. + + // Dots. + // In Morse Code, the dot's length is one unit. + var/dot_soundfile = 'sound/effects/tones/440_sine_01.ogg' // The sound file to play for a 'dot'. + var/dot_delay = MORSE_BASE_DELAY // How long the sound above plays for, in deciseconds. + + // Dashes. + // In Morse Code, a dash's length is equal to three units (or three dots). + var/dash_soundfile = 'sound/effects/tones/440_sine_03.ogg' // The sound file to play for a 'dash'. + var/dash_delay = MORSE_BASE_DELAY * 3 // Same as the dot delay, except for the dash sound. + + // Spaces. + // In Morse Code, a space's length is equal to one unit (or one dot). + var/spaces_between_sounds = MORSE_BASE_DELAY // How many spaces are between parts of the same letter. + var/spaces_between_letters = MORSE_BASE_DELAY * 3 // How many spaces are between different letters in the same word. + var/spaces_between_words = MORSE_BASE_DELAY * 7 // How many spaces are between different words. + + // Morse Alphabet. + // Note that it is case-insensative. 'A' and 'a' will make the same sounds. + // Unfortunately there isn't a nice way to implement procedure signs w/o the space inbetween the letters. + // Also some of the punctuation isn't super offical/widespread in real life but its the future so *shrug. + var/static/list/morse_alphabet = list( + "A" = list("*", "-"), + "B" = list("-", "*", "*", "*"), + "C" = list("-", "*", "-", "*"), + "D" = list("-", "*", "*"), + "E" = list("*"), + "F" = list("*", "*", "-", "*"), + "G" = list("-", "-", "*"), + "H" = list("*", "*", "*", "*"), + "I" = list("*", "*"), + "J" = list("*", "-", "-", "-"), + "K" = list("-", "*", "-"), + "L" = list("*", "-", "*", "*"), + "M" = list("*", "*"), + "N" = list("-", "*"), + "O" = list("-", "-", "-"), + "P" = list("*", "-", "-", "*"), + "Q" = list("-", "-", "*", "-"), + "R" = list("*", "-", "*"), + "S" = list("*", "*", "*"), + "T" = list("-"), + "U" = list("*", "*", "-"), + "V" = list("*", "*", "*", "-"), + "W" = list("*", "-", "-"), + "X" = list("-", "*", "*", "-"), + "Y" = list("-", "*", "-", "-"), + "Z" = list("-", "-", "*", "*"), + + "1" = list("*", "-", "-", "-", "-"), + "2" = list("*", "*", "-", "-", "-"), + "3" = list("*", "*", "*", "-", "-"), + "4" = list("*", "*", "*", "*", "-"), + "5" = list("*", "*", "*", "*", "*"), + "6" = list("-", "*", "*", "*", "*"), + "7" = list("-", "-", "*", "*", "*"), + "8" = list("-", "-", "-", "*", "*"), + "9" = list("-", "-", "-", "-", "*"), + "0" = list("-", "-", "-", "-", "-"), + + "." = list("*", "-", "*", "-", "*", "-"), + "," = list("-", "-", "*", "*", "-", "-"), + "?" = list("*", "*", "-", "-", "*", "*"), + "'" = list("*", "-", "-", "-", "-", "*"), + "!" = list("-", "*", "-", "*", "-", "-"), + "/" = list("-", "*", "*", "-", "*"), + "(" = list("-", "*", "-", "-", "*"), + ")" = list("-", "*", "-", "-", "*", "-"), + "&" = list("*", "-", "*", "*", "*"), + ":" = list("-", "-", "-", "*", "*", "*"), + ";" = list("-", "*", "-", "*", "-", "*"), + "=" = list("-", "*", "*", "*", "-"), + "+" = list("*", "-", "*", "-", "*"), + "-" = list("-", "*", "*", "*", "*", "-"), + "_" = list("*", "*", "-", "-", "*", "-"), + "\""= list("*", "-", "*", "*", "-", "*"), + "$" = list("*", "*", "*", "-", "*", "*", "-"), + "@" = list("*", "-", "-", "*", "-", "*"), + ) + + +/datum/looping_sound/sequence/morse/process_data(letter) + letter = uppertext(letter) // Make it case-insensative. + + // If it's whitespace, treat it as a (Morse) space. + if(letter == " ") + return spaces_between_words + + if(!(letter in morse_alphabet)) + CRASH("Encountered invalid character in morse sequence \"[letter]\".") + return + + // So I heard you like sequences... + // Play a sequence of sounds while inside the current iteration of the outer sequence. + var/list/instructions = morse_alphabet[letter] + for(var/sound in instructions) + if(sound == MORSE_DOT) + play(dot_soundfile) + sleep(dot_delay) + else // It's a dash otherwise. + play(dash_soundfile) + sleep(dash_delay) + sleep(spaces_between_sounds) + return spaces_between_letters + +#undef MORSE_DOT +#undef MORSE_DASH \ No newline at end of file diff --git a/code/datums/looping_sounds/weather_sounds.dm b/code/datums/looping_sounds/weather_sounds.dm new file mode 100644 index 0000000000..106c25643a --- /dev/null +++ b/code/datums/looping_sounds/weather_sounds.dm @@ -0,0 +1,79 @@ +/datum/looping_sound/weather + pref_check = /datum/client_preference/weather_sounds + +/datum/looping_sound/weather/outside_blizzard + mid_sounds = list( + 'sound/effects/weather/snowstorm/outside/active_mid1.ogg' = 1, + 'sound/effects/weather/snowstorm/outside/active_mid1.ogg' = 1, + 'sound/effects/weather/snowstorm/outside/active_mid1.ogg' = 1 + ) + mid_length = 8 SECONDS + start_sound = 'sound/effects/weather/snowstorm/outside/active_start.ogg' + start_length = 13 SECONDS + end_sound = 'sound/effects/weather/snowstorm/outside/active_end.ogg' + volume = 80 + +/datum/looping_sound/weather/inside_blizzard + mid_sounds = list( + 'sound/effects/weather/snowstorm/inside/active_mid1.ogg' = 1, + 'sound/effects/weather/snowstorm/inside/active_mid2.ogg' = 1, + 'sound/effects/weather/snowstorm/inside/active_mid3.ogg' = 1 + ) + mid_length = 8 SECONDS + start_sound = 'sound/effects/weather/snowstorm/inside/active_start.ogg' + start_length = 13 SECONDS + end_sound = 'sound/effects/weather/snowstorm/inside/active_end.ogg' + volume = 60 + +/datum/looping_sound/weather/outside_snow + mid_sounds = list( + 'sound/effects/weather/snowstorm/outside/weak_mid1.ogg' = 1, + 'sound/effects/weather/snowstorm/outside/weak_mid2.ogg' = 1, + 'sound/effects/weather/snowstorm/outside/weak_mid3.ogg' = 1 + ) + mid_length = 8 SECONDS + start_sound = 'sound/effects/weather/snowstorm/outside/weak_start.ogg' + start_length = 13 SECONDS + end_sound = 'sound/effects/weather/snowstorm/outside/weak_end.ogg' + volume = 50 + +/datum/looping_sound/weather/inside_snow + mid_sounds = list( + 'sound/effects/weather/snowstorm/inside/weak_mid1.ogg' = 1, + 'sound/effects/weather/snowstorm/inside/weak_mid2.ogg' = 1, + 'sound/effects/weather/snowstorm/inside/weak_mid3.ogg' = 1 + ) + mid_length = 8 SECONDS + start_sound = 'sound/effects/weather/snowstorm/inside/weak_start.ogg' + start_length = 13 SECONDS + end_sound = 'sound/effects/weather/snowstorm/inside/weak_end.ogg' + volume = 30 + +/datum/looping_sound/weather/wind + mid_sounds = list( + 'sound/effects/weather/wind/wind_2_1.ogg' = 1, + 'sound/effects/weather/wind/wind_2_2.ogg' = 1, + 'sound/effects/weather/wind/wind_3_1.ogg' = 1, + 'sound/effects/weather/wind/wind_4_1.ogg' = 1, + 'sound/effects/weather/wind/wind_4_2.ogg' = 1, + 'sound/effects/weather/wind/wind_5_1.ogg' = 1 + ) + mid_length = 10 SECONDS // The lengths for the files vary, but the longest is ten seconds, so this will make it sound like intermittent wind. + volume = 50 + +// Don't have special sounds so we just make it quieter indoors. +/datum/looping_sound/weather/wind/indoors + volume = 30 + +/datum/looping_sound/weather/rain + mid_sounds = list( + 'sound/effects/weather/acidrain_mid.ogg' = 1 + ) + mid_length = 15 SECONDS // The lengths for the files vary, but the longest is ten seconds, so this will make it sound like intermittent wind. + start_sound = 'sound/effects/weather/acidrain_start.ogg' + start_length = 13 SECONDS + end_sound = 'sound/effects/weather/acidrain_end.ogg' + volume = 50 + +/datum/looping_sound/weather/rain/indoors + volume = 30 \ No newline at end of file diff --git a/code/datums/mind.dm b/code/datums/mind.dm index 5204964bda..fdca613460 100644 --- a/code/datums/mind.dm +++ b/code/datums/mind.dm @@ -502,7 +502,7 @@ if(!mind.assigned_role) mind.assigned_role = USELESS_JOB //defualt //VOREStation Edit - Visitor not Assistant //slime -/mob/living/simple_animal/slime/mind_initialize() +/mob/living/simple_mob/slime/mind_initialize() . = ..() mind.assigned_role = "slime" @@ -527,29 +527,30 @@ mind.special_role = "" //Animals -/mob/living/simple_animal/mind_initialize() +/mob/living/simple_mob/mind_initialize() . = ..() - mind.assigned_role = "Animal" + mind.assigned_role = "Simple Mob" -/mob/living/simple_animal/corgi/mind_initialize() +/mob/living/simple_mob/animal/passive/dog/corgi/mind_initialize() . = ..() mind.assigned_role = "Corgi" -/mob/living/simple_animal/shade/mind_initialize() +/mob/living/simple_mob/construct/shade/mind_initialize() . = ..() mind.assigned_role = "Shade" + mind.special_role = "Cultist" -/mob/living/simple_animal/construct/builder/mind_initialize() +/mob/living/simple_mob/construct/artificer/mind_initialize() . = ..() mind.assigned_role = "Artificer" mind.special_role = "Cultist" -/mob/living/simple_animal/construct/wraith/mind_initialize() +/mob/living/simple_mob/construct/wraith/mind_initialize() . = ..() mind.assigned_role = "Wraith" mind.special_role = "Cultist" -/mob/living/simple_animal/construct/armoured/mind_initialize() +/mob/living/simple_mob/construct/juggernaut/mind_initialize() . = ..() mind.assigned_role = "Juggernaut" mind.special_role = "Cultist" diff --git a/code/datums/observation/_debug.dm b/code/datums/observation/_debug.dm index 2f882929cf..5b805aa930 100644 --- a/code/datums/observation/_debug.dm +++ b/code/datums/observation/_debug.dm @@ -1,7 +1,6 @@ /**************** * Debug Support * ****************/ -var/datum/all_observable_events/all_observable_events = new() /datum/all_observable_events var/list/events diff --git a/code/datums/observation/destroyed.dm b/code/datums/observation/destroyed.dm index 6a65300a25..ff8778645c 100644 --- a/code/datums/observation/destroyed.dm +++ b/code/datums/observation/destroyed.dm @@ -5,11 +5,10 @@ // // Arguments that the called proc should expect: // /datum/destroyed_instance: The instance that was destroyed. -var/decl/observ/destroyed/destroyed_event = new() /decl/observ/destroyed name = "Destroyed" /datum/Destroy() - destroyed_event.raise_event(src) + GLOB.destroyed_event.raise_event(src) . = ..() diff --git a/code/datums/observation/observation.dm b/code/datums/observation/observation.dm index 32a96871e6..db1f9e0d6e 100644 --- a/code/datums/observation/observation.dm +++ b/code/datums/observation/observation.dm @@ -63,7 +63,7 @@ var/list/global_listeners = list() // Associative list of instances that listen to all events of this type (as opposed to events belonging to a specific source) and the proc to call. /decl/observ/New() - all_observable_events.events += src + GLOB.all_observable_events.events += src . = ..() /decl/observ/proc/is_listening(var/event_source, var/datum/listener, var/proc_call) diff --git a/code/datums/observation/task_triggered.dm b/code/datums/observation/task_triggered.dm deleted file mode 100644 index 0c04ef2ead..0000000000 --- a/code/datums/observation/task_triggered.dm +++ /dev/null @@ -1,13 +0,0 @@ -// -// Observer Pattern Implementation: Scheduled task triggered -// Registration type: /datum/scheduled_task -// -// Raised when: When a scheduled task reaches its trigger time. -// -// Arguments that the called proc should expect: -// /datum/scheduled_task/task: The task that reached its trigger time. -var/decl/observ/task_triggered/task_triggered_event = new() - -/decl/observ/task_triggered - name = "Task Triggered" - expected_type = /datum/scheduled_task diff --git a/code/datums/observation/z_moved.dm b/code/datums/observation/z_moved.dm new file mode 100644 index 0000000000..63b89ba0da --- /dev/null +++ b/code/datums/observation/z_moved.dm @@ -0,0 +1,16 @@ +// Observer Pattern Implementation: Z_Moved +// Registration type: /atom/movable +// +// Raised when: An /atom/movable instance has changed z-levels by any means. +// +// Arguments that the called proc should expect: +// /atom/movable/moving_instance: The instance that moved +// old_z: The z number before the move. +// new_z: The z number after the move. + + +GLOBAL_DATUM_INIT(z_moved_event, /decl/observ/z_moved, new) + +/decl/observ/z_moved + name = "Z_Moved" + expected_type = /atom/movable diff --git a/code/datums/observation/~cleanup.dm b/code/datums/observation/~cleanup.dm index eb6ccceef8..825902d483 100644 --- a/code/datums/observation/~cleanup.dm +++ b/code/datums/observation/~cleanup.dm @@ -1,6 +1,6 @@ -var/list/global_listen_count = list() -var/list/event_sources_count = list() -var/list/event_listen_count = list() +GLOBAL_LIST_EMPTY(global_listen_count) +GLOBAL_LIST_EMPTY(event_sources_count) +GLOBAL_LIST_EMPTY(event_listen_count) /decl/observ/destroyed/raise_event() . = ..() @@ -8,39 +8,39 @@ var/list/event_listen_count = list() return var/source = args[1] - if(global_listen_count[source]) - cleanup_global_listener(source, global_listen_count[source]) - if(event_sources_count[source]) - cleanup_source_listeners(source, event_sources_count[source]) - if(event_listen_count[source]) - cleanup_event_listener(source, event_listen_count[source]) + if(GLOB.global_listen_count[source]) + cleanup_global_listener(source, GLOB.global_listen_count[source]) + if(GLOB.event_sources_count[source]) + cleanup_source_listeners(source, GLOB.event_sources_count[source]) + if(GLOB.event_listen_count[source]) + cleanup_event_listener(source, GLOB.event_listen_count[source]) /decl/observ/register(var/datum/event_source, var/datum/listener, var/proc_call) . = ..() if(.) - event_sources_count[event_source] += 1 - event_listen_count[listener] += 1 + GLOB.event_sources_count[event_source] += 1 + GLOB.event_listen_count[listener] += 1 /decl/observ/unregister(var/datum/event_source, var/datum/listener, var/proc_call) . = ..() if(.) - event_sources_count[event_source] -= 1 - event_listen_count[listener] -= 1 + GLOB.event_sources_count[event_source] -= 1 + GLOB.event_listen_count[listener] -= 1 /decl/observ/register_global(var/datum/listener, var/proc_call) . = ..() if(.) - global_listen_count[listener] += 1 + GLOB.global_listen_count[listener] += 1 /decl/observ/unregister_global(var/datum/listener, var/proc_call) . = ..() if(.) - global_listen_count[listener] -= 1 + GLOB.global_listen_count[listener] -= 1 /decl/observ/destroyed/proc/cleanup_global_listener(listener, listen_count) - global_listen_count -= listener - for(var/entry in all_observable_events.events) + GLOB.global_listen_count -= listener + for(var/entry in GLOB.all_observable_events.events) var/decl/observ/event = entry if(event.unregister_global(listener)) log_debug("[event] - [listener] was deleted while still registered to global events.") @@ -48,8 +48,8 @@ var/list/event_listen_count = list() return /decl/observ/destroyed/proc/cleanup_source_listeners(event_source, source_listener_count) - event_sources_count -= event_source - for(var/entry in all_observable_events.events) + GLOB.event_sources_count -= event_source + for(var/entry in GLOB.all_observable_events.events) var/decl/observ/event = entry var/proc_owners = event.event_sources[event_source] if(proc_owners) @@ -60,11 +60,11 @@ var/list/event_listen_count = list() return /decl/observ/destroyed/proc/cleanup_event_listener(listener, listener_count) - event_listen_count -= listener - for(var/entry in all_observable_events.events) + GLOB.event_listen_count -= listener + for(var/entry in GLOB.all_observable_events.events) var/decl/observ/event = entry for(var/event_source in event.event_sources) if(event.unregister(event_source, listener)) log_debug("[event] - [listener] was deleted while still listening to [event_source].") if(!(--listener_count)) - return + return \ No newline at end of file diff --git a/code/datums/outfits/misc.dm b/code/datums/outfits/misc.dm index f7dc6e0f33..c9a43077b5 100644 --- a/code/datums/outfits/misc.dm +++ b/code/datums/outfits/misc.dm @@ -52,4 +52,9 @@ name = "Merchant - Vox" shoes = /obj/item/clothing/shoes/boots/jackboots/toeless uniform = /obj/item/clothing/under/vox/vox_robes - suit = /obj/item/clothing/suit/armor/vox_scrap \ No newline at end of file + suit = /obj/item/clothing/suit/armor/vox_scrap + +/decl/hierarchy/outfit/zaddat + name = "Zaddat Suit" + suit = /obj/item/clothing/suit/space/void/zaddat/ + mask = /obj/item/clothing/mask/gas/zaddat \ No newline at end of file diff --git a/code/datums/position_point_vector.dm b/code/datums/position_point_vector.dm new file mode 100644 index 0000000000..c5c392e126 --- /dev/null +++ b/code/datums/position_point_vector.dm @@ -0,0 +1,227 @@ +//Designed for things that need precision trajectories like projectiles. +//Don't use this for anything that you don't absolutely have to use this with (like projectiles!) because it isn't worth using a datum unless you need accuracy down to decimal places in pixels. + +//You might see places where it does - 16 - 1. This is intentionally 17 instead of 16, because of how byond's tiles work and how not doing it will result in rounding errors like things getting put on the wrong turf. + +#define RETURN_PRECISE_POSITION(A) new /datum/position(A) +#define RETURN_PRECISE_POINT(A) new /datum/point(A) + +#define RETURN_POINT_VECTOR(ATOM, ANGLE, SPEED) {new /datum/point/vector(ATOM, null, null, null, null, ANGLE, SPEED)} +#define RETURN_POINT_VECTOR_INCREMENT(ATOM, ANGLE, SPEED, AMT) {new /datum/point/vector(ATOM, null, null, null, null, ANGLE, SPEED, AMT)} + +/datum/position //For positions with map x/y/z and pixel x/y so you don't have to return lists. Could use addition/subtraction in the future I guess. + var/x = 0 + var/y = 0 + var/z = 0 + var/pixel_x = 0 + var/pixel_y = 0 + +/datum/position/proc/valid() + return x && y && z && !isnull(pixel_x) && !isnull(pixel_y) + +/datum/position/New(_x = 0, _y = 0, _z = 0, _pixel_x = 0, _pixel_y = 0) //first argument can also be a /datum/point. + if(istype(_x, /datum/point)) + var/datum/point/P = _x + var/turf/T = P.return_turf() + _x = T.x + _y = T.y + _z = T.z + _pixel_x = P.return_px() + _pixel_y = P.return_py() + else if(istype(_x, /atom)) + var/atom/A = _x + _x = A.x + _y = A.y + _z = A.z + _pixel_x = A.pixel_x + _pixel_y = A.pixel_y + x = _x + y = _y + z = _z + pixel_x = _pixel_x + pixel_y = _pixel_y + +/datum/position/proc/return_turf() + return locate(x, y, z) + +/datum/position/proc/return_px() + return pixel_x + +/datum/position/proc/return_py() + return pixel_y + +/datum/position/proc/return_point() + return new /datum/point(src) + +/proc/point_midpoint_points(datum/point/a, datum/point/b) //Obviously will not support multiZ calculations! Same for the two below. + var/datum/point/P = new + P.x = a.x + (b.x - a.x) / 2 + P.y = a.y + (b.y - a.y) / 2 + P.z = a.z + return P + +/proc/pixel_length_between_points(datum/point/a, datum/point/b) + return sqrt(((b.x - a.x) ** 2) + ((b.y - a.y) ** 2)) + +/proc/angle_between_points(datum/point/a, datum/point/b) + return ATAN2((b.y - a.y), (b.x - a.x)) + +/datum/point //A precise point on the map in absolute pixel locations based on world.icon_size. Pixels are FROM THE EDGE OF THE MAP! + var/x = 0 + var/y = 0 + var/z = 0 + +/datum/point/proc/valid() + return x && y && z + +/datum/point/proc/copy_to(datum/point/p = new) + p.x = x + p.y = y + p.z = z + return p + +/datum/point/New(_x, _y, _z, _pixel_x = 0, _pixel_y = 0) //first argument can also be a /datum/position or /atom. + if(istype(_x, /datum/position)) + var/datum/position/P = _x + _x = P.x + _y = P.y + _z = P.z + _pixel_x = P.pixel_x + _pixel_y = P.pixel_y + else if(istype(_x, /atom)) + var/atom/A = _x + _x = A.x + _y = A.y + _z = A.z + _pixel_x = A.pixel_x + _pixel_y = A.pixel_y + initialize_location(_x, _y, _z, _pixel_x, _pixel_y) + +/datum/point/proc/initialize_location(tile_x, tile_y, tile_z, p_x = 0, p_y = 0) + if(!isnull(tile_x)) + x = ((tile_x - 1) * world.icon_size) + world.icon_size / 2 + p_x + 1 + if(!isnull(tile_y)) + y = ((tile_y - 1) * world.icon_size) + world.icon_size / 2 + p_y + 1 + if(!isnull(tile_z)) + z = tile_z + +/datum/point/proc/debug_out() + var/turf/T = return_turf() + return "\ref[src] aX [x] aY [y] aZ [z] pX [return_px()] pY [return_py()] mX [T.x] mY [T.y] mZ [T.z]" + +/datum/point/proc/move_atom_to_src(atom/movable/AM) + AM.forceMove(return_turf()) + AM.pixel_x = return_px() + AM.pixel_y = return_py() + +/datum/point/proc/return_turf() + return locate(CEILING(x / world.icon_size, 1), CEILING(y / world.icon_size, 1), z) + +/datum/point/proc/return_coordinates() //[turf_x, turf_y, z] + return list(CEILING(x / world.icon_size, 1), CEILING(y / world.icon_size, 1), z) + +/datum/point/proc/return_position() + return new /datum/position(src) + +/datum/point/proc/return_px() + return MODULUS(x, world.icon_size) - 16 - 1 + +/datum/point/proc/return_py() + return MODULUS(y, world.icon_size) - 16 - 1 + + +/datum/point/vector + var/speed = 32 //pixels per iteration + var/iteration = 0 + var/angle = 0 + var/mpx = 0 //calculated x/y movement amounts to prevent having to do trig every step. + var/mpy = 0 + var/starting_x = 0 //just like before, pixels from EDGE of map! This is set in initialize_location(). + var/starting_y = 0 + var/starting_z = 0 + +/datum/point/vector/New(_x, _y, _z, _pixel_x = 0, _pixel_y = 0, _angle, _speed, initial_increment = 0) + ..() + initialize_trajectory(_speed, _angle) + if(initial_increment) + increment(initial_increment) + +/datum/point/vector/initialize_location(tile_x, tile_y, tile_z, p_x = 0, p_y = 0) + . = ..() + starting_x = x + starting_y = y + starting_z = z + +/datum/point/vector/copy_to(datum/point/vector/v = new) + ..(v) + v.speed = speed + v.iteration = iteration + v.angle = angle + v.mpx = mpx + v.mpy = mpy + v.starting_x = starting_x + v.starting_y = starting_y + v.starting_z = starting_z + return v + +/datum/point/vector/proc/initialize_trajectory(pixel_speed, new_angle) + if(!isnull(pixel_speed)) + speed = pixel_speed + set_angle(new_angle) + +/datum/point/vector/proc/set_angle(new_angle) //calculations use "byond angle" where north is 0 instead of 90, and south is 180 instead of 270. + if(isnull(angle)) + return + angle = new_angle + update_offsets() + +/datum/point/vector/proc/update_offsets() + mpx = sin(angle) * speed + mpy = cos(angle) * speed + +/datum/point/vector/proc/set_speed(new_speed) + if(isnull(new_speed) || speed == new_speed) + return + speed = new_speed + update_offsets() + +/datum/point/vector/proc/increment(multiplier = 1) + iteration++ + x += mpx * multiplier + y += mpy * multiplier + +/datum/point/vector/proc/return_vector_after_increments(amount = 7, multiplier = 1, force_simulate = FALSE) + var/datum/point/vector/v = copy_to() + if(force_simulate) + for(var/i in 1 to amount) + v.increment(multiplier) + else + v.increment(multiplier * amount) + return v + +/datum/point/vector/proc/on_z_change() + return + +/datum/point/vector/processed //pixel_speed is per decisecond. + var/last_process = 0 + var/last_move = 0 + var/paused = FALSE + +/datum/point/vector/processed/Destroy() + STOP_PROCESSING(SSprojectiles, src) + return ..() + +/datum/point/vector/processed/proc/start() + last_process = world.time + last_move = world.time + START_PROCESSING(SSprojectiles, src) + +/datum/point/vector/processed/process() + if(paused) + last_move += world.time - last_process + last_process = world.time + return + var/needed_time = world.time - last_move + last_process = world.time + last_move = world.time + increment(needed_time / SSprojectiles.wait) \ No newline at end of file diff --git a/code/datums/progressbar.dm b/code/datums/progressbar.dm index bf38ab7a1c..581dc012f8 100644 --- a/code/datums/progressbar.dm +++ b/code/datums/progressbar.dm @@ -39,7 +39,7 @@ shown = 0 client = user.client - progress = Clamp(progress, 0, goal) + progress = CLAMP(progress, 0, goal) bar.icon_state = "prog_bar_[round(((progress / goal) * 100), 5)]" if (!shown && user.is_preference_enabled(/datum/client_preference/show_progress_bar)) user.client.images += bar diff --git a/code/datums/repositories/crew.dm b/code/datums/repositories/crew.dm index ae73c98c8d..88ea491e51 100644 --- a/code/datums/repositories/crew.dm +++ b/code/datums/repositories/crew.dm @@ -24,7 +24,7 @@ var/global/datum/repository/crew/crew_repository = new() var/tracked = scan() for(var/obj/item/clothing/under/C in tracked) var/turf/pos = get_turf(C) - if((C) && (C.has_sensor) && (pos) && (pos.z == zLevel) && (C.sensor_mode != SUIT_SENSOR_OFF)) + if((C) && (C.has_sensor) && (pos) && (pos.z == zLevel) && (C.sensor_mode != SUIT_SENSOR_OFF) && !(is_jammed(C))) if(istype(C.loc, /mob/living/carbon/human)) var/mob/living/carbon/human/H = C.loc if(H.w_uniform != C) diff --git a/code/datums/repositories/radiation.dm b/code/datums/repositories/radiation.dm index bbc1e01632..4525032e20 100644 --- a/code/datums/repositories/radiation.dm +++ b/code/datums/repositories/radiation.dm @@ -86,7 +86,7 @@ var/global/repository/radiation/radiation_repository = new() add_source(S) // Sets the radiation in a range to a constant value. -/repository/radiation/proc/flat_radiate(source, power, range, var/respect_maint = FALSE) +/repository/radiation/proc/flat_radiate(source, power, range, var/respect_maint = TRUE) //VOREStation edit; Respect shielded areas by default please. if(!(source && power && range)) return var/datum/radiation_source/S = new() @@ -98,7 +98,7 @@ var/global/repository/radiation/radiation_repository = new() add_source(S) // Irradiates a full Z-level. Hacky way of doing it, but not too expensive. -/repository/radiation/proc/z_radiate(var/atom/source, power, var/respect_maint = FALSE) +/repository/radiation/proc/z_radiate(var/atom/source, power, var/respect_maint = TRUE) //VOREStation edit; Respect shielded areas by default please. if(!(power && source)) return var/turf/epicentre = locate(round(world.maxx / 2), round(world.maxy / 2), source.z) diff --git a/code/datums/soul_link.dm b/code/datums/soul_link.dm new file mode 100644 index 0000000000..7bc652a863 --- /dev/null +++ b/code/datums/soul_link.dm @@ -0,0 +1,156 @@ +// A datum used to link multiple mobs together in some form. +// The code is from TG, however tweaked to be within the preferred code style. + +/mob/living + var/list/owned_soul_links // Soul links we are the owner of. + var/list/shared_soul_links // Soul links we are a/the sharer of. + +/mob/living/Destroy() + for(var/s in owned_soul_links) + var/datum/soul_link/S = s + S.owner_died(FALSE) + qdel(s) // If the owner is destroy()'d, the soullink is destroy()'d. + owned_soul_links = null + for(var/s in shared_soul_links) + var/datum/soul_link/S = s + S.sharer_died(FALSE) + S.remove_soul_sharer(src) // If a sharer is destroy()'d, they are simply removed. + shared_soul_links = null + return ..() + +// Keeps track of a Mob->Mob (potentially Player->Player) connection. +// Can be used to trigger actions on one party when events happen to another. +// Eg: shared deaths. +// Can be used to form a linked list of mob-hopping. +// Does NOT transfer with minds. +/datum/soul_link + var/mob/living/soul_owner + var/mob/living/soul_sharer + var/id // Optional ID, for tagging and finding specific instances. + +/datum/soul_link/Destroy() + if(soul_owner) + LAZYREMOVE(soul_owner.owned_soul_links, src) + soul_owner = null + if(soul_sharer) + LAZYREMOVE(soul_sharer.shared_soul_links, src) + soul_sharer = null + return ..() + +/datum/soul_link/proc/remove_soul_sharer(mob/living/sharer) + if(soul_sharer == sharer) + soul_sharer = null + LAZYREMOVE(sharer.shared_soul_links, src) + +// Used to assign variables, called primarily by soullink() +// Override this to create more unique soullinks (Eg: 1->Many relationships) +// Return TRUE/FALSE to return the soullink/null in soullink() +/datum/soul_link/proc/parse_args(mob/living/owner, mob/living/sharer) + if(!owner || !sharer) + return FALSE + soul_owner = owner + soul_sharer = sharer + LAZYADD(owner.owned_soul_links, src) + LAZYADD(sharer.shared_soul_links, src) + return TRUE + +// Runs after /living death() +// Override this for content. +/datum/soul_link/proc/owner_died(gibbed, mob/living/owner) + +// Runs after /living death() +// Override this for content. +/datum/soul_link/proc/sharer_died(gibbed, mob/living/owner) + +// Quick-use helper. +/proc/soul_link(typepath, ...) + var/datum/soul_link/S = new typepath() + if(S.parse_args(arglist(args.Copy(2, 0)))) + return S + + +///////////////// +// MULTISHARER // +///////////////// +// Abstract soullink for use with 1 Owner -> Many Sharer setups +/datum/soul_link/multi_sharer + var/list/soul_sharers + +/datum/soul_link/multi_sharer/parse_args(mob/living/owner, list/sharers) + if(!owner || !LAZYLEN(sharers)) + return FALSE + soul_owner = owner + soul_sharers = sharers + LAZYADD(owner.owned_soul_links, src) + for(var/l in sharers) + var/mob/living/L = l + LAZYADD(L.shared_soul_links, src) + return TRUE + +/datum/soul_link/multi_sharer/remove_soul_sharer(mob/living/sharer) + LAZYREMOVE(soul_sharers, sharer) + + +///////////////// +// SHARED FATE // +///////////////// +// When the soulowner dies, the soulsharer dies, and vice versa +// This is intended for two players(or AI) and two mobs + +/datum/soul_link/shared_fate/owner_died(gibbed, mob/living/owner) + if(soul_sharer) + soul_sharer.death(gibbed) + +/datum/soul_link/shared_fate/sharer_died(gibbed, mob/living/sharer) + if(soul_owner) + soul_owner.death(gibbed) + +////////////// +// ONE WAY // +////////////// +// When the soul owner dies, the soul sharer dies, but NOT vice versa. +// This is intended for two players (or AI) and two mobs. + +/datum/soul_link/one_way/owner_died(gibbed, mob/living/owner) + if(soul_sharer) + soul_sharer.dust(FALSE) + +///////////////// +// SHARED BODY // +///////////////// +// When the soulsharer dies, they're placed in the soulowner, who remains alive +// If the soulowner dies, the soulsharer is killed and placed into the soulowner (who is still dying) +// This one is intended for one player moving between many mobs + +/datum/soul_link/shared_body/owner_died(gibbed, mob/living/owner) + if(soul_owner && soul_sharer) + if(soul_sharer.mind) + soul_sharer.mind.transfer_to(soul_owner) + soul_sharer.death(gibbed) + +/datum/soul_link/shared_body/sharer_died(gibbed, mob/living/sharer) + if(soul_owner && soul_sharer && soul_sharer.mind) + soul_sharer.mind.transfer_to(soul_owner) + + + +////////////////////// +// REPLACEMENT POOL // +////////////////////// +// When the owner dies, one of the sharers is placed in the owner's body, fully healed +// Sort of a "winner-stays-on" soullink +// Gibbing ends it immediately + +/datum/soul_link/multi_sharer/replacement_pool/owner_died(gibbed, mob/living/owner) + if(LAZYLEN(soul_sharers) && !gibbed) //let's not put them in some gibs + var/list/souls = shuffle(soul_sharers.Copy()) + for(var/l in souls) + var/mob/living/L = l + if(L.stat != DEAD && L.mind) + L.mind.transfer_to(soul_owner) + soul_owner.revive(TRUE, TRUE) + L.death(FALSE) + +// Lose your claim to the throne! +/datum/soul_link/multi_sharer/replacement_pool/sharer_died(gibbed, mob/living/sharer) + remove_soul_sharer(sharer) diff --git a/code/datums/sun.dm b/code/datums/sun.dm index a78c89ac46..69b725f305 100644 --- a/code/datums/sun.dm +++ b/code/datums/sun.dm @@ -1,38 +1,21 @@ -#define SOLAR_UPDATE_TIME 600 //duration between two updates of the whole sun/solars positions - /datum/sun var/angle var/dx var/dy var/rate - var/list/solars // for debugging purposes, references solars_list at the constructor var/solar_next_update // last time the sun position was checked and adjusted /datum/sun/New() - - solars = solars_list rate = rand(50,200)/100 // 50% - 200% of standard rotation if(prob(50)) // same chance to rotate clockwise than counter-clockwise rate = -rate - solar_next_update = world.time // init the timer angle = rand (0,360) // the station position to the sun is randomised at round start -/*/hook/startup/proc/createSun() // handled in scheduler - sun = new /datum/sun() - return 1*/ - // calculate the sun's position given the time of day // at the standard rate (100%) the angle is increase/decreased by 6 degrees every minute. // a full rotation thus take a game hour in that case /datum/sun/proc/calc_position() - - if(world.time < solar_next_update) //if less than 60 game secondes have passed, do nothing - return; - angle = (360 + angle + rate * 6) % 360 // increase/decrease the angle to the sun, adjusted by the rate - - solar_next_update += SOLAR_UPDATE_TIME // since we updated the angle, set the proper time for the next loop - // now calculate and cache the (dx,dy) increments for line drawing var/s = sin(angle) @@ -51,8 +34,8 @@ dy = c / abs(s) //now tell the solar control computers to update their status and linked devices - for(var/obj/machinery/power/solar_control/SC in solars_list) + for(var/obj/machinery/power/solar_control/SC in GLOB.solars_list) if(!SC.powernet) - solars_list.Remove(SC) + GLOB.solars_list.Remove(SC) continue SC.update() diff --git a/code/datums/supplypacks/hydroponics.dm b/code/datums/supplypacks/hydroponics.dm index 9ee6a80532..4341a696ad 100644 --- a/code/datums/supplypacks/hydroponics.dm +++ b/code/datums/supplypacks/hydroponics.dm @@ -42,6 +42,13 @@ containertype = /obj/structure/largecrate/animal/corgi containername = "Corgi Crate" +/datum/supply_pack/hydro/cat + name = "Cat Crate" + contains = list() + cost = 45 + containertype = /obj/structure/largecrate/animal/cat + containername = "Cat Crate" + /datum/supply_pack/hydro/hydroponics name = "Hydroponics Supply Crate" contains = list( diff --git a/code/datums/supplypacks/medical_vr.dm b/code/datums/supplypacks/medical_vr.dm index 2cc35ad600..5a080c5e9f 100644 --- a/code/datums/supplypacks/medical_vr.dm +++ b/code/datums/supplypacks/medical_vr.dm @@ -27,4 +27,12 @@ cost = 40 containertype = "/obj/structure/closet/crate/secure" containername = "Virology biohazard equipment" + access = access_medical_equip + +/datum/supply_pack/med/virus + name = "Virus sample crate" + contains = list(/obj/item/weapon/virusdish/random = 4) + cost = 25 + containertype = "/obj/structure/closet/crate/secure" + containername = "Virus sample crate" access = access_medical_equip \ No newline at end of file diff --git a/code/datums/supplypacks/misc.dm b/code/datums/supplypacks/misc.dm index bc7687ab78..c4cd4992c1 100644 --- a/code/datums/supplypacks/misc.dm +++ b/code/datums/supplypacks/misc.dm @@ -23,6 +23,64 @@ containertype = /obj/structure/closet/crate containername = "cards crate" +/datum/supply_pack/randomised/misc/dnd + num_contained = 4 + contains = list( + /obj/item/toy/character/alien, + /obj/item/toy/character/warrior, + /obj/item/toy/character/cleric, + /obj/item/toy/character/thief, + /obj/item/toy/character/wizard, + /obj/item/toy/character/voidone, + /obj/item/toy/character/lich + ) + name = "Miniatures Crate" + cost = 200 + containertype = /obj/structure/closet/crate + containername = "Miniature Crate" + +/datum/supply_pack/randomised/misc/plushies + num_contained = 5 + contains = list( + /obj/item/toy/plushie/nymph, + /obj/item/toy/plushie/mouse, + /obj/item/toy/plushie/kitten, + /obj/item/toy/plushie/lizard, + /obj/item/toy/plushie/spider, + /obj/item/toy/plushie/farwa, + /obj/item/toy/plushie/corgi, + /obj/item/toy/plushie/girly_corgi, + /obj/item/toy/plushie/robo_corgi, + /obj/item/toy/plushie/octopus, + /obj/item/toy/plushie/face_hugger, + /obj/item/toy/plushie/red_fox, + /obj/item/toy/plushie/black_fox, + /obj/item/toy/plushie/marble_fox, + /obj/item/toy/plushie/blue_fox, + /obj/item/toy/plushie/coffee_fox, + /obj/item/toy/plushie/pink_fox, + /obj/item/toy/plushie/purple_fox, + /obj/item/toy/plushie/crimson_fox, + /obj/item/toy/plushie/deer, + /obj/item/toy/plushie/black_cat, + /obj/item/toy/plushie/grey_cat, + /obj/item/toy/plushie/white_cat, + /obj/item/toy/plushie/orange_cat, + /obj/item/toy/plushie/siamese_cat, + /obj/item/toy/plushie/tabby_cat, + /obj/item/toy/plushie/tuxedo_cat, + /obj/item/toy/plushie/squid/green, + /obj/item/toy/plushie/squid/mint, + /obj/item/toy/plushie/squid/blue, + /obj/item/toy/plushie/squid/orange, + /obj/item/toy/plushie/squid/yellow, + /obj/item/toy/plushie/squid/pink + ) + name = "Plushies Crate" + cost = 15 + containertype = /obj/structure/closet/crate + containername = "Plushies Crate" + /datum/supply_pack/misc/eftpos contains = list(/obj/item/device/eftpos) name = "EFTPOS scanner" @@ -77,3 +135,12 @@ cost = 15 containertype = /obj/structure/closet/crate containername = "Holoplant crate" + +/datum/supply_pack/misc/glucose_hypos + name = "Glucose Hypoinjectors" + contains = list( + /obj/item/weapon/reagent_containers/hypospray/autoinjector/biginjector/glucose = 5 + ) + cost = 25 + containertype = "obj/structure/closet/crate" + containername = "Glucose Hypo Crate" \ No newline at end of file diff --git a/code/datums/supplypacks/misc_vr.dm b/code/datums/supplypacks/misc_vr.dm index 072c4001fa..973840f5b2 100644 --- a/code/datums/supplypacks/misc_vr.dm +++ b/code/datums/supplypacks/misc_vr.dm @@ -13,6 +13,24 @@ containername = "Belt-miner gear crate" access = access_mining +/datum/supply_pack/misc/rations + name = "Emergency rations" + contains = list( + /obj/item/weapon/reagent_containers/food/snacks/liquidfood = 4, + ) + cost = 20 + containertype = /obj/structure/closet/crate/freezer + containername = "emergency rations" + +/datum/supply_pack/misc/proteinrations + name = "Emergency meat rations" + contains = list( + /obj/item/weapon/reagent_containers/food/snacks/liquidprotein = 4, + ) + cost = 30 + containertype = /obj/structure/closet/crate/freezer + containername = "emergency meat rations" + /datum/supply_pack/misc/eva_rig name = "eva hardsuit (empty)" contains = list( diff --git a/code/datums/supplypacks/recreation_vr.dm b/code/datums/supplypacks/recreation_vr.dm index 23b377afa0..c4d7ee0ccc 100644 --- a/code/datums/supplypacks/recreation_vr.dm +++ b/code/datums/supplypacks/recreation_vr.dm @@ -50,21 +50,17 @@ containertype = /obj/structure/closet/crate containername = "Action figures crate" -/datum/supply_pack/recreation/characters_vr - name = "Tabletop miniatures" +/datum/supply_pack/recreation/collars + name = "Collar bundle" contains = list( - /obj/item/weapon/storage/box/characters + /obj/item/clothing/accessory/collar/shock = 1, + /obj/item/clothing/accessory/collar/spike = 1, + /obj/item/clothing/accessory/collar/silver = 1, + /obj/item/clothing/accessory/collar/gold = 1, + /obj/item/clothing/accessory/collar/bell = 1, + /obj/item/clothing/accessory/collar/pink = 1, + /obj/item/clothing/accessory/collar/holo = 1 ) + cost = 25 containertype = /obj/structure/closet/crate - containername = "Tabletop miniatures crate" - cost = 50 - -/datum/supply_pack/randomised/recreation/plushies_vr - name = "Plushies crate" - num_contained = 3 - contains = list( - /obj/random/plushie - ) - cost = 60 - containertype = /obj/structure/closet/crate - containername = "Plushies crate" \ No newline at end of file + containername = "collar crate" diff --git a/code/datums/supplypacks/science_vr.dm b/code/datums/supplypacks/science_vr.dm index 0f507ce8e0..e0e4ea2e68 100644 --- a/code/datums/supplypacks/science_vr.dm +++ b/code/datums/supplypacks/science_vr.dm @@ -22,7 +22,7 @@ containername = "EXTREMELY Dangerous Predator crate" access = access_xenobiology contraband = 1 - +/* /datum/supply_pack/sci/otie name = "VARMAcorp adoptable reject (Dangerous!)" cost = 100 @@ -35,4 +35,5 @@ cost = 200 containertype = /obj/structure/largecrate/animal/otie/phoron containername = "VARMAcorp adaptive beta subject (Experimental)" - access = access_xenobiology \ No newline at end of file + access = access_xenobiology +*/ //VORESTATION AI TEMPORARY REMOVAL. Oties commented out cuz broke. diff --git a/code/datums/supplypacks/security_vr.dm b/code/datums/supplypacks/security_vr.dm index 9c1ea33d43..3538a311d5 100644 --- a/code/datums/supplypacks/security_vr.dm +++ b/code/datums/supplypacks/security_vr.dm @@ -1,4 +1,4 @@ -/datum/supply_pack/security/guardbeast +/*/datum/supply_pack/security/guardbeast //VORESTATION AI TEMPORARY REMOVAL name = "VARMAcorp autoNOMous security solution" cost = 150 containertype = /obj/structure/largecrate/animal/guardbeast @@ -15,6 +15,7 @@ access = list( access_security, access_xenobiology) +*/ /datum/supply_pack/security/biosuit contains = list( diff --git a/code/datums/supplypacks/voidsuits.dm b/code/datums/supplypacks/voidsuits.dm index 64df129aba..42fca890a6 100644 --- a/code/datums/supplypacks/voidsuits.dm +++ b/code/datums/supplypacks/voidsuits.dm @@ -214,6 +214,17 @@ containername = "Frontier Mining voidsuit crate" access = access_mining +/datum/supply_pack/voidsuits/zaddat + name = "Zaddat Shroud" + contains = list( + /obj/item/clothing/suit/space/void/zaddat = 1, + /obj/item/clothing/mask/gas/zaddat = 1 + ) + cost = 30 + containertype = "/obj/structure/closet/crate" + containername = "Zaddat Shroud crate" + access = access_mining + /datum/supply_pack/voidsuits/unathi_bs_yw name = "Unathi breacher chassis" contains = list(/obj/item/weapon/rig/breacher/fancy) diff --git a/code/datums/uplink/ammunition.dm b/code/datums/uplink/ammunition.dm index ebadbdaa8d..3ed884316a 100644 --- a/code/datums/uplink/ammunition.dm +++ b/code/datums/uplink/ammunition.dm @@ -40,20 +40,20 @@ path = /obj/item/ammo_magazine/s45/ap /datum/uplink_item/item/ammo/tommymag - name = "Tommygun Magazine (.45)" + name = "Tommy Gun Magazine (.45)" path = /obj/item/ammo_magazine/m45tommy /datum/uplink_item/item/ammo/tommymagap - name = "Tommygun Magazine (.45 AP)" + name = "Tommy Gun Magazine (.45 AP)" path = /obj/item/ammo_magazine/m45tommy/ap /datum/uplink_item/item/ammo/tommydrum - name = "Tommygun Drum Magazine (.45)" + name = "Tommy Gun Drum Magazine (.45)" path = /obj/item/ammo_magazine/m45tommydrum item_cost = 40 /datum/uplink_item/item/ammo/tommydrumap - name = "Tommygun Drum Magazine (.45 AP)" + name = "Tommy Gun Drum Magazine (.45 AP)" path = /obj/item/ammo_magazine/m45tommydrum/ap /datum/uplink_item/item/ammo/darts diff --git a/code/datums/uplink/tools.dm b/code/datums/uplink/tools.dm index 558c922b46..6c340385b0 100644 --- a/code/datums/uplink/tools.dm +++ b/code/datums/uplink/tools.dm @@ -84,7 +84,7 @@ item_cost = 25 path = /obj/item/device/radio_jammer desc = "A device which is capable of disrupting subspace communications, preventing the use of headsets, PDAs, and communicators within \ - a radius of seven meters. It runs off weapon cells, which can be replaced as needed. One cell will last for approximately a minute." + a radius of seven meters. It runs off weapon cells, which can be replaced as needed. One cell will last for approximately ten minutes." /datum/uplink_item/item/tools/emag name = "Cryptographic Sequencer" @@ -132,4 +132,4 @@ name = "Teleporter Circuit Board" item_cost = DEFAULT_TELECRYSTAL_AMOUNT * 1.5 path = /obj/item/weapon/circuitboard/teleporter - blacklisted = 1 \ No newline at end of file + blacklisted = 1 diff --git a/code/datums/uplink/visible_weapons.dm b/code/datums/uplink/visible_weapons.dm index 6415365bd3..e8a69d2aaf 100644 --- a/code/datums/uplink/visible_weapons.dm +++ b/code/datums/uplink/visible_weapons.dm @@ -139,7 +139,7 @@ path = /obj/item/weapon/storage/secure/briefcase/fuelrod /datum/uplink_item/item/visible_weapons/tommygun - name = "Tommygun (.45)" // We're keeping this because it's CLASSY. -Spades + name = "Tommy Gun (.45)" // We're keeping this because it's CLASSY. -Spades item_cost = 60 path = /obj/item/weapon/gun/projectile/automatic/tommygun diff --git a/code/defines/obj.dm b/code/defines/obj.dm index 22dcf982fc..470774cf7b 100644 --- a/code/defines/obj.dm +++ b/code/defines/obj.dm @@ -222,7 +222,6 @@ var/global/list/PDA_Manifest = list() throwforce = 0.0 throw_speed = 1 throw_range = 20 - flags = CONDUCT afterattack(atom/target as mob|obj|turf|area, mob/user as mob) user.drop_item() diff --git a/code/defines/obj/weapon.dm b/code/defines/obj/weapon.dm index 75c95d0b0c..493d5ccd38 100644 --- a/code/defines/obj/weapon.dm +++ b/code/defines/obj/weapon.dm @@ -3,7 +3,6 @@ desc = "Should anything ever go wrong..." icon = 'icons/obj/items.dmi' icon_state = "red_phone" - flags = CONDUCT force = 3.0 throwforce = 2.0 throw_speed = 1 @@ -85,7 +84,6 @@ slot_l_hand_str = 'icons/mob/items/lefthand_melee.dmi', slot_r_hand_str = 'icons/mob/items/righthand_melee.dmi', ) - flags = CONDUCT force = 5.0 throwforce = 7.0 w_class = ITEMSIZE_NORMAL @@ -210,7 +208,7 @@ var/traitor_frequency = 0.0 var/mob/currentUser = null var/obj/item/device/radio/origradio = null - flags = CONDUCT | ONBELT + flags = ONBELT w_class = ITEMSIZE_SMALL item_state = "radio" throw_speed = 4 @@ -228,7 +226,6 @@ var/selfdestruct = 0.0 var/traitor_frequency = 0.0 var/obj/item/device/radio/origradio = null - flags = CONDUCT slot_flags = SLOT_BELT item_state = "radio" throwforce = 5 @@ -283,7 +280,6 @@ icon_state = "std_module" item_state = "std_mod" w_class = ITEMSIZE_SMALL - flags = CONDUCT var/mtype = 1 // 1=electronic 2=hardware /obj/item/weapon/module/card_reader diff --git a/code/game/antagonist/alien/borer.dm b/code/game/antagonist/alien/borer.dm index e852bc8418..34b79271f7 100644 --- a/code/game/antagonist/alien/borer.dm +++ b/code/game/antagonist/alien/borer.dm @@ -5,7 +5,7 @@ var/datum/antagonist/borer/borers role_type = BE_ALIEN role_text = "Cortical Borer" role_text_plural = "Cortical Borers" - mob_path = /mob/living/simple_animal/borer + mob_path = /mob/living/simple_mob/animal/borer bantype = "Borer" welcome_text = "Use your Infest power to crawl into the ear of a host and fuse with their brain. You can only take control temporarily, and at risk of hurting your host, so be clever and careful; your host is encouraged to help you however they can. Talk to your fellow borers with :x." antag_indicator = "brainworm" @@ -40,7 +40,7 @@ var/datum/antagonist/borer/borers player.objectives += new /datum/objective/escape() /datum/antagonist/borer/place_mob(var/mob/living/mob) - var/mob/living/simple_animal/borer/borer = mob + var/mob/living/simple_mob/animal/borer/borer = mob if(istype(borer)) var/mob/living/carbon/human/host for(var/mob/living/carbon/human/H in mob_list) diff --git a/code/game/antagonist/station/cultist.dm b/code/game/antagonist/station/cultist.dm index e40085f90a..e5c7d8f652 100644 --- a/code/game/antagonist/station/cultist.dm +++ b/code/game/antagonist/station/cultist.dm @@ -111,12 +111,12 @@ var/datum/antagonist/cultist/cult . = ..() if(.) player << "You catch a glimpse of the Realm of Nar-Sie, the Geometer of Blood. You now see how flimsy the world is, you see that it should be open to the knowledge of That Which Waits. Assist your new compatriots in their dark dealings. Their goals are yours, and yours are theirs. You serve the Dark One above all else. Bring It back." - if(player.current && !istype(player.current, /mob/living/simple_animal/construct)) + if(player.current && !istype(player.current, /mob/living/simple_mob/construct)) player.current.add_language(LANGUAGE_CULT) /datum/antagonist/cultist/remove_antagonist(var/datum/mind/player, var/show_message, var/implanted) . = ..() - if(. && player.current && !istype(player.current, /mob/living/simple_animal/construct)) + if(. && player.current && !istype(player.current, /mob/living/simple_mob/construct)) player.current.remove_language(LANGUAGE_CULT) /datum/antagonist/cultist/can_become_antag(var/datum/mind/player) diff --git a/code/game/area/Space Station 13 areas_vr.dm b/code/game/area/Space Station 13 areas_vr.dm index 330d703ac0..c7d8b08398 100644 --- a/code/game/area/Space Station 13 areas_vr.dm +++ b/code/game/area/Space Station 13 areas_vr.dm @@ -34,6 +34,36 @@ /area/crew_quarters/sleep/vistor_room_12 flags = RAD_SHIELDED | BLUE_SHIELDED +/area/crew_quarters/sleep/Dorm_1 + flags = RAD_SHIELDED | BLUE_SHIELDED + +/area/crew_quarters/sleep/Dorm_2 + flags = RAD_SHIELDED | BLUE_SHIELDED + +/area/crew_quarters/sleep/Dorm_3 + flags = RAD_SHIELDED | BLUE_SHIELDED + +/area/crew_quarters/sleep/Dorm_4 + flags = RAD_SHIELDED | BLUE_SHIELDED + +/area/crew_quarters/sleep/Dorm_5 + flags = RAD_SHIELDED | BLUE_SHIELDED + +/area/crew_quarters/sleep/Dorm_6 + flags = RAD_SHIELDED | BLUE_SHIELDED + +/area/crew_quarters/sleep/Dorm_7 + flags = RAD_SHIELDED | BLUE_SHIELDED + +/area/crew_quarters/sleep/Dorm_8 + flags = RAD_SHIELDED | BLUE_SHIELDED + +/area/crew_quarters/sleep/Dorm_9 + flags = RAD_SHIELDED | BLUE_SHIELDED + +/area/crew_quarters/sleep/Dorm_10 + flags = RAD_SHIELDED | BLUE_SHIELDED + /area/teleporter/departing name = "\improper Long-Range Teleporter" icon_state = "teleporter" @@ -49,6 +79,16 @@ /area/security/nuke_storage flags = BLUE_SHIELDED +// Add rad shielding to maintenance and construction sites +/area/vacant + flags = RAD_SHIELDED + +/area/maintenance + flags = RAD_SHIELDED + +/area/rnd/research_storage //Located entirely in maint under public access, so why not that too + flags = RAD_SHIELDED + // New shuttles /area/shuttle/administration/transit name = "Deep Space (AS)" @@ -206,6 +246,10 @@ name = "\improper Weapons Testing Range" icon_state = "firingrange" +/area/rnd/research/researchdivision + name = "\improper Research Division" + icon_state = "research" + /area/rnd/outpost name = "\improper Research Outpost Hallway" icon_state = "research" diff --git a/code/game/area/areas.dm b/code/game/area/areas.dm index 5d318cf932..dbe6d45c30 100644 --- a/code/game/area/areas.dm +++ b/code/game/area/areas.dm @@ -59,7 +59,7 @@ ..() -/area/initialize() +/area/Initialize() . = ..() return INITIALIZE_HINT_LATELOAD // Areas tradiationally are initialized AFTER other atoms. diff --git a/code/game/atoms.dm b/code/game/atoms.dm index d1289a23de..6929943de2 100644 --- a/code/game/atoms.dm +++ b/code/game/atoms.dm @@ -8,13 +8,14 @@ var/list/blood_DNA var/was_bloodied var/blood_color - var/last_bumped = 0 var/pass_flags = 0 var/throwpass = 0 var/germ_level = GERM_LEVEL_AMBIENT // The higher the germ level, the more germ on the atom. var/simulated = 1 //filter for actions - used by lighting overlays var/fluorescent // Shows up under a UV light. + var/last_bumped = 0 + ///Chemistry. var/datum/reagents/reagents = null @@ -63,7 +64,7 @@ // Must not sleep! // Other parameters are passed from New (excluding loc), this does not happen if mapload is TRUE // Must return an Initialize hint. Defined in code/__defines/subsystems.dm -/atom/proc/initialize(mapload, ...) +/atom/proc/Initialize(mapload, ...) if(QDELETED(src)) crash_with("GC: -- [type] had initialize() called after qdel() --") if(initialized) @@ -97,11 +98,8 @@ return 0 return -1 -/atom/proc/on_reagent_change() - return - /atom/proc/Bumped(AM as mob|obj) - return + set waitfor = FALSE // Convenience proc to see if a container is open for chemistry handling // returns true if open @@ -499,7 +497,7 @@ if(!istype(drop_destination) || drop_destination == destination) return forceMove(destination) destination = drop_destination - return forceMove(null) + return moveToNullspace() /atom/proc/onDropInto(var/atom/movable/AM) return // If onDropInto returns null, then dropInto will forceMove AM into us. @@ -524,7 +522,7 @@ var/atom/L = loc if(!L) return null - return L.AllowDrop() ? L : get_turf(L) + return L.AllowDrop() ? L : L.drop_location() /atom/proc/AllowDrop() return FALSE @@ -534,3 +532,35 @@ /atom/proc/get_nametag_desc(mob/user) return "" //Desc itself is often too long to use + +/atom/vv_get_dropdown() + . = ..() + VV_DROPDOWN_OPTION(VV_HK_ATOM_EXPLODE, "Explosion") + VV_DROPDOWN_OPTION(VV_HK_ATOM_EMP, "Emp Pulse") + +/atom/vv_do_topic(list/href_list) + . = ..() + IF_VV_OPTION(VV_HK_ATOM_EXPLODE) + if(!check_rights(R_DEBUG|R_FUN)) + return + usr.client.cmd_admin_explosion(src) + href_list["datumrefresh"] = "\ref[src]" + IF_VV_OPTION(VV_HK_ATOM_EMP) + if(!check_rights(R_DEBUG|R_FUN)) + return + usr.client.cmd_admin_emp(src) + href_list["datumrefresh"] = "\ref[src]" + +/atom/vv_get_header() + . = ..() + var/custom_edit_name + if(!isliving(src)) + custom_edit_name = "[src]" + . += {" + [custom_edit_name] +
+ << + [dir2text(dir)] + >> + + "} diff --git a/code/game/atoms_movable.dm b/code/game/atoms_movable.dm index f287a23f75..104fa066b6 100644 --- a/code/game/atoms_movable.dm +++ b/code/game/atoms_movable.dm @@ -4,6 +4,7 @@ var/last_move = null var/anchored = 0 // var/elevation = 2 - not used anywhere + var/moving_diagonally var/move_speed = 10 var/l_move_time = 1 var/m_flag = 1 @@ -21,6 +22,7 @@ var/old_y = 0 var/datum/riding/riding_datum //VOREStation Add - Moved from /obj/vehicle var/does_spin = TRUE // Does the atom spin when thrown (of course it does :P) + var/movement_type = NONE /atom/movable/Destroy() . = ..() @@ -33,7 +35,7 @@ if(opacity && isturf(loc)) un_opaque = loc - loc = null + moveToNullspace() if(un_opaque) un_opaque.recalc_atom_opacity() if (pulledby) @@ -42,51 +44,246 @@ pulledby = null QDEL_NULL(riding_datum) //VOREStation Add -/atom/movable/Bump(var/atom/A, yes) - if(src.throwing) - src.throw_impact(A) - src.throwing = 0 +/atom/movable/vv_edit_var(var_name, var_value) + if(GLOB.VVpixelmovement[var_name]) //Pixel movement is not yet implemented, changing this will break everything irreversibly. + return FALSE + return ..() - spawn(0) - if ((A && yes)) - A.last_bumped = world.time - A.Bumped(src) +//////////////////////////////////////// +// Here's where we rewrite how byond handles movement except slightly different +// To be removed on step_ conversion +// All this work to prevent a second bump +/atom/movable/Move(atom/newloc, direct=0) + . = FALSE + if(!newloc || newloc == loc) return - ..() + + if(!direct) + direct = get_dir(src, newloc) + set_dir(direct) + + if(!loc.Exit(src, newloc)) + return + + if(!newloc.Enter(src, src.loc)) + return + // Past this is the point of no return + var/atom/oldloc = loc + var/area/oldarea = get_area(oldloc) + var/area/newarea = get_area(newloc) + loc = newloc + . = TRUE + oldloc.Exited(src, newloc) + if(oldarea != newarea) + oldarea.Exited(src, newloc) + + for(var/i in oldloc) + if(i == src) // Multi tile objects + continue + var/atom/movable/thing = i + thing.Uncrossed(src) + + newloc.Entered(src, oldloc) + if(oldarea != newarea) + newarea.Entered(src, oldloc) + + for(var/i in loc) + if(i == src) // Multi tile objects + continue + var/atom/movable/thing = i + thing.Crossed(src) +// +//////////////////////////////////////// + +/atom/movable/Move(atom/newloc, direct) + if(!loc || !newloc) + return FALSE + var/atom/oldloc = loc + + if(loc != newloc) + if (!(direct & (direct - 1))) //Cardinal move + . = ..() + else //Diagonal move, split it into cardinal moves + moving_diagonally = FIRST_DIAG_STEP + var/first_step_dir + // The `&& moving_diagonally` checks are so that a forceMove taking + // place due to a Crossed, Bumped, etc. call will interrupt + // the second half of the diagonal movement, or the second attempt + // at a first half if step() fails because we hit something. + if (direct & NORTH) + if (direct & EAST) + if (step(src, NORTH) && moving_diagonally) + first_step_dir = NORTH + moving_diagonally = SECOND_DIAG_STEP + . = step(src, EAST) + else if (moving_diagonally && step(src, EAST)) + first_step_dir = EAST + moving_diagonally = SECOND_DIAG_STEP + . = step(src, NORTH) + else if (direct & WEST) + if (step(src, NORTH) && moving_diagonally) + first_step_dir = NORTH + moving_diagonally = SECOND_DIAG_STEP + . = step(src, WEST) + else if (moving_diagonally && step(src, WEST)) + first_step_dir = WEST + moving_diagonally = SECOND_DIAG_STEP + . = step(src, NORTH) + else if (direct & SOUTH) + if (direct & EAST) + if (step(src, SOUTH) && moving_diagonally) + first_step_dir = SOUTH + moving_diagonally = SECOND_DIAG_STEP + . = step(src, EAST) + else if (moving_diagonally && step(src, EAST)) + first_step_dir = EAST + moving_diagonally = SECOND_DIAG_STEP + . = step(src, SOUTH) + else if (direct & WEST) + if (step(src, SOUTH) && moving_diagonally) + first_step_dir = SOUTH + moving_diagonally = SECOND_DIAG_STEP + . = step(src, WEST) + else if (moving_diagonally && step(src, WEST)) + first_step_dir = WEST + moving_diagonally = SECOND_DIAG_STEP + . = step(src, SOUTH) + if(moving_diagonally == SECOND_DIAG_STEP) + if(!.) + set_dir(first_step_dir) + //else if (!inertia_moving) + // inertia_next_move = world.time + inertia_move_delay + // newtonian_move(direct) + moving_diagonally = 0 + return + + if(!loc || (loc == oldloc && oldloc != newloc)) + last_move = 0 + return + + if(.) + Moved(oldloc, direct) + + //Polaris stuff + move_speed = world.time - l_move_time + l_move_time = world.time + m_flag = 1 + //End + + last_move = direct + set_dir(direct) + if(. && has_buckled_mobs() && !handle_buckled_mob_movement(loc,direct)) //movement failed due to buckled mob(s) + return FALSE + //VOREStation Add + else if(. && riding_datum) + riding_datum.handle_vehicle_layer() + riding_datum.handle_vehicle_offsets() + //VOREStation Add End + +//Called after a successful Move(). By this point, we've already moved +/atom/movable/proc/Moved(atom/OldLoc, Dir, Forced = FALSE) + //if (!inertia_moving) + // inertia_next_move = world.time + inertia_move_delay + // newtonian_move(Dir) + //if (length(client_mobs_in_contents)) + // update_parallax_contents() + + return TRUE + +// Make sure you know what you're doing if you call this, this is intended to only be called by byond directly. +// You probably want CanPass() +/atom/movable/Cross(atom/movable/AM) + . = TRUE + return CanPass(AM, loc) + +//oldloc = old location on atom, inserted when forceMove is called and ONLY when forceMove is called! +/atom/movable/Crossed(atom/movable/AM, oldloc) return +/atom/movable/Uncross(atom/movable/AM, atom/newloc) + . = ..() + if(isturf(newloc) && !CheckExit(AM, newloc)) + return FALSE + +/atom/movable/Bump(atom/A) + if(!A) + CRASH("Bump was called with no argument.") + . = ..() + if(throwing) + throw_impact(A) + throwing = 0 + if(QDELETED(A)) + return + A.Bumped(src) + A.last_bumped = world.time + /atom/movable/proc/forceMove(atom/destination) - if(loc == destination) - return 0 - var/is_origin_turf = isturf(loc) - var/is_destination_turf = isturf(destination) - // It is a new area if: - // Both the origin and destination are turfs with different areas. - // When either origin or destination is a turf and the other is not. - var/is_new_area = (is_origin_turf ^ is_destination_turf) || (is_origin_turf && is_destination_turf && loc.loc != destination.loc) - - var/atom/origin = loc - loc = destination - - if(origin) - origin.Exited(src, destination) - if(is_origin_turf) - for(var/atom/movable/AM in origin) - AM.Uncrossed(src) - if(is_new_area && is_origin_turf) - origin.loc.Exited(src, destination) - + . = FALSE if(destination) - destination.Entered(src, origin) - if(is_destination_turf) // If we're entering a turf, cross all movable atoms - for(var/atom/movable/AM in loc) - if(AM != src) - AM.Crossed(src) - if(is_new_area && is_destination_turf) - destination.loc.Entered(src, origin) + . = doMove(destination) + else + CRASH("No valid destination passed into forceMove") - Moved(origin) - return 1 +/atom/movable/proc/moveToNullspace() + return doMove(null) + +/atom/movable/proc/doMove(atom/destination) + . = FALSE + if(destination) + var/atom/oldloc = loc + var/same_loc = oldloc == destination + var/area/old_area = get_area(oldloc) + var/area/destarea = get_area(destination) + + loc = destination + moving_diagonally = 0 + + if(!same_loc) + if(oldloc) + oldloc.Exited(src, destination) + if(old_area && old_area != destarea) + old_area.Exited(src, destination) + for(var/atom/movable/AM in oldloc) + AM.Uncrossed(src) + var/turf/oldturf = get_turf(oldloc) + var/turf/destturf = get_turf(destination) + var/old_z = (oldturf ? oldturf.z : null) + var/dest_z = (destturf ? destturf.z : null) + if (old_z != dest_z) + onTransitZ(old_z, dest_z) + destination.Entered(src, oldloc) + if(destarea && old_area != destarea) + destarea.Entered(src, oldloc) + + for(var/atom/movable/AM in destination) + if(AM == src) + continue + AM.Crossed(src, oldloc) + + // Break pulling if we are too far to pull now. + if(pulledby && (pulledby.z != src.z || get_dist(pulledby, src) > 1)) + pulledby.stop_pulling() + + Moved(oldloc, NONE, TRUE) + . = TRUE + + //If no destination, move the atom into nullspace (don't do this unless you know what you're doing) + else + . = TRUE + if (loc) + var/atom/oldloc = loc + var/area/old_area = get_area(oldloc) + oldloc.Exited(src, null) + if(old_area) + old_area.Exited(src, null) + loc = null + +/atom/movable/proc/onTransitZ(old_z,new_z) + GLOB.z_moved_event.raise_event(src, old_z, new_z) + for(var/item in src) // Notify contents of Z-transition. This can be overridden IF we know the items contents do not care. + var/atom/movable/AM = item + AM.onTransitZ(old_z,new_z) +///////////////////////////////////////////////////////////////// //called when src is thrown into hit_atom /atom/movable/proc/throw_impact(atom/hit_atom, var/speed) @@ -121,7 +318,7 @@ // Special handling of windows, which are dense but block only from some directions if(istype(A, /obj/structure/window)) var/obj/structure/window/W = A - if (!W.is_full_window() && !(turn(src.last_move, 180) & A.dir)) + if (!W.is_fulltile() && !(turn(src.last_move, 180) & A.dir)) continue // Same thing for (closed) windoors, which have the same problem else if(istype(A, /obj/machinery/door/window) && !(turn(src.last_move, 180) & A.dir)) @@ -290,4 +487,8 @@ /atom/movable/proc/adjust_rotation(new_rotation) icon_rotation = new_rotation - update_transform() \ No newline at end of file + update_transform() + +// Called when touching a lava tile. +/atom/movable/proc/lava_act() + fire_act(null, 10000, 1000) diff --git a/code/game/gamemodes/changeling/powers/armblade.dm b/code/game/gamemodes/changeling/powers/armblade.dm index 35526be0d6..ed27a49ba0 100644 --- a/code/game/gamemodes/changeling/powers/armblade.dm +++ b/code/game/gamemodes/changeling/powers/armblade.dm @@ -64,7 +64,7 @@ /obj/item/weapon/melee/changeling/New(location) ..() - processing_objects |= src + START_PROCESSING(SSobj, src) if(ismob(loc)) visible_message("A grotesque weapon forms around [loc.name]\'s arm!", "Our arm twists and mutates, transforming it into a deadly weapon.", @@ -81,7 +81,7 @@ qdel(src) /obj/item/weapon/melee/changeling/Destroy() - processing_objects -= src + STOP_PROCESSING(SSobj, src) creator = null ..() diff --git a/code/game/gamemodes/changeling/powers/armor.dm b/code/game/gamemodes/changeling/powers/armor.dm index ca8a3c8780..3f555ca8ae 100644 --- a/code/game/gamemodes/changeling/powers/armor.dm +++ b/code/game/gamemodes/changeling/powers/armor.dm @@ -35,8 +35,8 @@ name = "flesh mass" icon_state = "lingspacesuit" desc = "A huge, bulky mass of pressure and temperature-resistant organic tissue, evolved to facilitate space travel." - flags = STOPPRESSUREDAMAGE //Not THICKMATERIAL because it's organic tissue, so if somebody tries to inject something into it, - //it still ends up in your blood. (also balance but muh fluff) + flags = 0 //Not THICKMATERIAL because it's organic tissue, so if somebody tries to inject something into it, + //it still ends up in your blood. (also balance but muh fluff) allowed = list(/obj/item/device/flashlight, /obj/item/weapon/tank/emergency/oxygen, /obj/item/weapon/tank/oxygen) armor = list(melee = 0, bullet = 0, laser = 0,energy = 0, bomb = 0, bio = 0, rad = 0) //No armor at all. canremove = 0 @@ -55,7 +55,7 @@ name = "flesh mass" icon_state = "lingspacehelmet" desc = "A covering of pressure and temperature-resistant organic tissue with a glass-like chitin front." - flags = BLOCKHAIR | STOPPRESSUREDAMAGE //Again, no THICKMATERIAL. + flags = BLOCKHAIR //Again, no THICKMATERIAL. armor = list(melee = 0, bullet = 0, laser = 0,energy = 0, bomb = 0, bio = 0, rad = 0) body_parts_covered = HEAD|FACE|EYES canremove = 0 diff --git a/code/game/gamemodes/changeling/powers/escape_restraints.dm b/code/game/gamemodes/changeling/powers/escape_restraints.dm index 4e6ed4e5cf..08700b1e04 100644 --- a/code/game/gamemodes/changeling/powers/escape_restraints.dm +++ b/code/game/gamemodes/changeling/powers/escape_restraints.dm @@ -21,7 +21,7 @@ if(world.time < changeling.next_escape) to_chat(src, "We are still recovering from our last escape...") return 0 - if(!(C.handcuffed || C.legcuffed)) // No need to waste chems if there's nothing to break out of + if(!(C.handcuffed || C.legcuffed || istype(C.wear_suit,/obj/item/clothing/suit/straight_jacket))) // No need to waste chems if there's nothing to break out of to_chat(C, "We are are not restrained in a way we can escape...") return 0 @@ -37,22 +37,26 @@ C.update_inv_handcuffed() if (C.client) C.client.screen -= W + W.forceMove(C.loc) + W.dropped(C) if(W) - W.loc = C.loc - W.dropped(C) - if(W) - W.layer = initial(W.layer) + W.layer = initial(W.layer) if(C.legcuffed) var/obj/item/weapon/W = C.legcuffed C.legcuffed = null C.update_inv_legcuffed() if(C.client) C.client.screen -= W + W.forceMove(C.loc) + W.dropped(C) if(W) - W.loc = C.loc - W.dropped(C) - if(W) - W.layer = initial(W.layer) + W.layer = initial(W.layer) + if(istype(C.wear_suit, /obj/item/clothing/suit/straight_jacket)) + var/obj/item/clothing/suit/straight_jacket/SJ = C.wear_suit + SJ.forceMove(C.loc) + SJ.dropped(C) + C.wear_suit = null + escape_cooldown *= 1.5 // Straight jackets are tedious compared to cuffs. if(src.mind.changeling.recursive_enhancement) escape_cooldown *= 0.5 diff --git a/code/game/gamemodes/changeling/powers/fabricate_clothing.dm b/code/game/gamemodes/changeling/powers/fabricate_clothing.dm index d79af62b4c..b90b402e78 100644 --- a/code/game/gamemodes/changeling/powers/fabricate_clothing.dm +++ b/code/game/gamemodes/changeling/powers/fabricate_clothing.dm @@ -268,7 +268,7 @@ var/global/list/changeling_fabricated_clothing = list( ..() registered_user = user -/obj/item/weapon/card/id/syndicate/changeling/initialize() +/obj/item/weapon/card/id/syndicate/changeling/Initialize() . = ..() access = null diff --git a/code/game/gamemodes/changeling/powers/revive.dm b/code/game/gamemodes/changeling/powers/revive.dm index 0da6c3c3d5..7fe4ab232b 100644 --- a/code/game/gamemodes/changeling/powers/revive.dm +++ b/code/game/gamemodes/changeling/powers/revive.dm @@ -45,6 +45,34 @@ BITSET(H.hud_updateflag, STATUS_HUD) BITSET(H.hud_updateflag, LIFE_HUD) + if(H.handcuffed) + var/obj/item/weapon/W = H.handcuffed + H.handcuffed = null + if(H.buckled && H.buckled.buckle_require_restraints) + H.buckled.unbuckle_mob() + H.update_inv_handcuffed() + if (H.client) + H.client.screen -= W + W.forceMove(H.loc) + W.dropped(H) + if(W) + W.layer = initial(W.layer) + if(H.legcuffed) + var/obj/item/weapon/W = H.legcuffed + H.legcuffed = null + H.update_inv_legcuffed() + if(H.client) + H.client.screen -= W + W.forceMove(H.loc) + W.dropped(H) + if(W) + W.layer = initial(W.layer) + if(istype(H.wear_suit, /obj/item/clothing/suit/straight_jacket)) + var/obj/item/clothing/suit/straight_jacket/SJ = H.wear_suit + SJ.forceMove(H.loc) + SJ.dropped(H) + H.wear_suit = null + C.halloss = 0 C.shock_stage = 0 //Pain C << "We have regenerated." diff --git a/code/game/gamemodes/cult/construct_spells.dm b/code/game/gamemodes/cult/construct_spells.dm index f8ff57fc35..937284629b 100644 --- a/code/game/gamemodes/cult/construct_spells.dm +++ b/code/game/gamemodes/cult/construct_spells.dm @@ -476,14 +476,14 @@ proc/findNullRod(var/atom/target) /obj/item/weapon/spell/construct/run_checks() if(owner) - if((iscultist(owner) || istype(owner, /mob/living/simple_animal/construct)) && (world.time >= (last_castcheck + cooldown))) //Are they a cultist or a construct, and has the cooldown time passed? + if((iscultist(owner) || istype(owner, /mob/living/simple_mob/construct)) && (world.time >= (last_castcheck + cooldown))) //Are they a cultist or a construct, and has the cooldown time passed? last_castcheck = world.time return 1 return 0 /obj/item/weapon/spell/construct/pay_energy(var/amount) if(owner) - if(istype(owner, /mob/living/simple_animal/construct)) + if(istype(owner, /mob/living/simple_mob/construct)) return 1 if(iscultist(owner) && pay_blood(amount)) return 1 @@ -532,7 +532,8 @@ proc/findNullRod(var/atom/target) /obj/item/weapon/spell/construct/projectile/on_ranged_cast(atom/hit_atom, mob/living/user) if(set_up(hit_atom, user)) var/obj/item/projectile/new_projectile = make_projectile(spell_projectile, user) - new_projectile.launch(hit_atom) + new_projectile.old_style_target(hit_atom) + new_projectile.fire() log_and_message_admins("has casted [src] at \the [hit_atom].") if(fire_sound) playsound(get_turf(src), fire_sound, 75, 1) @@ -597,9 +598,9 @@ proc/findNullRod(var/atom/target) light_power = -2 light_color = "#FFFFFF" - muzzle_type = /obj/effect/projectile/inversion/muzzle - tracer_type = /obj/effect/projectile/inversion/tracer - impact_type = /obj/effect/projectile/inversion/impact + muzzle_type = /obj/effect/projectile/muzzle/inversion + tracer_type = /obj/effect/projectile/tracer/inversion + impact_type = /obj/effect/projectile/impact/inversion //Harvester Pain Orb @@ -607,7 +608,7 @@ proc/findNullRod(var/atom/target) name = "sphere of agony" desc = "Call forth a portal to a dimension of naught but pain at your target." - spawner_type = /obj/effect/temporary_effect/pulsar/agonizing_sphere + spawner_type = /obj/effect/temporary_effect/pulse/agonizing_sphere /obj/item/weapon/spell/construct/spawner/agonizing_sphere/on_ranged_cast(atom/hit_atom, mob/user) if(within_range(hit_atom) && pay_energy(10)) @@ -619,7 +620,7 @@ proc/findNullRod(var/atom/target) var/mob/living/L = hit_atom L.add_modifier(/datum/modifier/agonize, 10 SECONDS) -/obj/effect/temporary_effect/pulsar/agonizing_sphere +/obj/effect/temporary_effect/pulse/agonizing_sphere name = "agonizing sphere" desc = "A portal to some hellish place. Its screams wrack your body with pain.." icon_state = "red_static_sphere" @@ -628,19 +629,15 @@ proc/findNullRod(var/atom/target) light_power = 5 light_color = "#FF0000" pulses_remaining = 10 + pulse_delay = 1 SECOND -/obj/effect/temporary_effect/pulsar/agonizing_sphere/pulse_loop() - while(pulses_remaining) - sleep(1 SECONDS) - spawn() - for(var/mob/living/L in view(4,src)) - if(!iscultist(L) && !istype(L, /mob/living/simple_animal/construct)) - L.add_modifier(/datum/modifier/agonize, 2 SECONDS) - if(L.isSynthetic()) - to_chat(L, "Your chassis warps as the [src] pulses!") - L.adjustFireLoss(4) - pulses_remaining-- - qdel(src) +/obj/effect/temporary_effect/pulse/agonizing_sphere/on_pulse() + for(var/mob/living/L in view(4,src)) + if(!iscultist(L) && !istype(L, /mob/living/simple_mob/construct)) + L.add_modifier(/datum/modifier/agonize, 2 SECONDS) + if(L.isSynthetic()) + to_chat(L, "Your chassis warps as the [src] pulses!") + L.adjustFireLoss(4) //Artificer Heal @@ -659,7 +656,7 @@ proc/findNullRod(var/atom/target) L.add_modifier(/datum/modifier/mend_occult, 150) qdel(src) -//Juggernaut + Behemoth Slam +//Juggernaut Slam /obj/item/weapon/spell/construct/slam name = "slam" desc = "Empower your FIST, to send an opponent flying." @@ -672,8 +669,8 @@ proc/findNullRod(var/atom/target) /obj/item/weapon/spell/construct/slam/on_melee_cast(atom/hit_atom, mob/living/user, def_zone) var/attack_message = "slams" - if(istype(user, /mob/living/simple_animal)) - var/mob/living/simple_animal/S = user + if(istype(user, /mob/living/simple_mob)) + var/mob/living/simple_mob/S = user attack_message = pick(S.attacktext) if(isliving(hit_atom)) var/mob/living/L = hit_atom diff --git a/code/game/gamemodes/cult/cult_items.dm b/code/game/gamemodes/cult/cult_items.dm index 082404b271..7118aafe80 100644 --- a/code/game/gamemodes/cult/cult_items.dm +++ b/code/game/gamemodes/cult/cult_items.dm @@ -14,7 +14,7 @@ return /obj/item/weapon/melee/cultblade/attack(mob/living/M, mob/living/user, var/target_zone) - if(iscultist(user) && !istype(user, /mob/living/simple_animal/construct)) + if(iscultist(user) && !istype(user, /mob/living/simple_mob/construct)) return ..() var/zone = (user.hand ? "l_arm":"r_arm") @@ -25,7 +25,7 @@ //random amount of damage between half of the blade's force and the full force of the blade. user.apply_damage(rand(force/2, force), BRUTE, zone, 0, sharp=1, edge=1) user.Weaken(5) - else if(!istype(user, /mob/living/simple_animal/construct)) + else if(!istype(user, /mob/living/simple_mob/construct)) to_chat(user, "An inexplicable force rips through you, tearing the sword from your grasp!") else to_chat(user, "The blade hisses, forcing itself from your manipulators. \The [src] will only allow mortals to wield it against foes, not kin.") @@ -39,10 +39,10 @@ return 1 /obj/item/weapon/melee/cultblade/pickup(mob/living/user as mob) - if(!iscultist(user) && !istype(user, /mob/living/simple_animal/construct)) + if(!iscultist(user) && !istype(user, /mob/living/simple_mob/construct)) to_chat(user, "An overwhelming feeling of dread comes over you as you pick up the cultist's sword. It would be wise to be rid of this blade quickly.") user.make_dizzy(120) - if(istype(user, /mob/living/simple_animal/construct)) + if(istype(user, /mob/living/simple_mob/construct)) to_chat(user, "\The [src] hisses, as it is discontent with your acquisition of it. It would be wise to return it to a worthy mortal quickly.") /obj/item/clothing/head/culthood diff --git a/code/game/gamemodes/cult/cult_structures.dm b/code/game/gamemodes/cult/cult_structures.dm index d588299cc5..c87427bc44 100644 --- a/code/game/gamemodes/cult/cult_structures.dm +++ b/code/game/gamemodes/cult/cult_structures.dm @@ -108,18 +108,18 @@ light_range=5 light_color="#ff0000" spawnable=list( - /mob/living/simple_animal/hostile/scarybat, - /mob/living/simple_animal/hostile/creature/vore, - /mob/living/simple_animal/hostile/faithless - ) // Vorestation Edit + /mob/living/simple_mob/animal/space/bats, + /mob/living/simple_mob/creature, + /mob/living/simple_mob/faithless + ) /obj/effect/gateway/active/cult light_range=5 light_color="#ff0000" spawnable=list( - /mob/living/simple_animal/hostile/scarybat/cult, - /mob/living/simple_animal/hostile/creature/cult, - /mob/living/simple_animal/hostile/faithless/cult + /mob/living/simple_mob/animal/space/bats/cult, + /mob/living/simple_mob/creature/cult, + /mob/living/simple_mob/faithless/cult ) /obj/effect/gateway/active/cult/cultify() diff --git a/code/game/gamemodes/cult/cultify/mob.dm b/code/game/gamemodes/cult/cultify/mob.dm index 14bb380a19..d78956c40a 100644 --- a/code/game/gamemodes/cult/cultify/mob.dm +++ b/code/game/gamemodes/cult/cultify/mob.dm @@ -16,7 +16,7 @@ /mob/living/cultify() if(iscultist(src) && client) - var/mob/living/simple_animal/construct/harvester/C = new(get_turf(src)) + var/mob/living/simple_mob/construct/harvester/C = new(get_turf(src)) mind.transfer_to(C) C << "The Geometer of Blood is overjoyed to be reunited with its followers, and accepts your body in sacrifice. As reward, you have been gifted with the shell of an Harvester.
Your tendrils can use and draw runes without need for a tome, your eyes can see beings through walls, and your mind can open any door. Use these assets to serve Nar-Sie and bring him any remaining living human in the world.
You can teleport yourself back to Nar-Sie along with any being under yourself at any time using your \"Harvest\" spell.
" dust() diff --git a/code/game/gamemodes/cult/narsie.dm b/code/game/gamemodes/cult/narsie.dm index ea866ad856..21ee7ec1df 100644 --- a/code/game/gamemodes/cult/narsie.dm +++ b/code/game/gamemodes/cult/narsie.dm @@ -44,7 +44,7 @@ var/global/list/narsie_list = list() ..() if(announce) world << "[uppertext(name)] HAS RISEN" - world << sound('sound/effects/wind/wind_5_1.ogg') + world << sound('sound/effects/weather/wind/wind_5_1.ogg') narsie_spawn_animation() diff --git a/code/game/gamemodes/cult/runes.dm b/code/game/gamemodes/cult/runes.dm index 40008c5ecc..1bfe4e0d60 100644 --- a/code/game/gamemodes/cult/runes.dm +++ b/code/game/gamemodes/cult/runes.dm @@ -206,7 +206,7 @@ var/list/sacrificed = list() if(cultists.len >= 9) if(!narsie_cometh)//so we don't initiate Hell more than one time. world << "THE VEIL HAS BEEN SHATTERED!" - world << sound('sound/effects/wind/wind_5_1.ogg') + world << sound('sound/effects/weather/wind/wind_5_1.ogg') SetUniversalState(/datum/universal_state/hell) narsie_cometh = 1 diff --git a/code/modules/mob/living/simple_animal/constructs/soulstone.dm b/code/game/gamemodes/cult/soulstone.dm similarity index 88% rename from code/modules/mob/living/simple_animal/constructs/soulstone.dm rename to code/game/gamemodes/cult/soulstone.dm index 6f13789dfc..61db88917a 100644 --- a/code/modules/mob/living/simple_animal/constructs/soulstone.dm +++ b/code/game/gamemodes/cult/soulstone.dm @@ -1,242 +1,246 @@ -/obj/item/device/soulstone/cultify() - return - -/obj/item/device/soulstone - name = "Soul Stone Shard" - icon = 'icons/obj/wizard.dmi' - icon_state = "soulstone" - item_state = "electronic" - desc = "A fragment of the legendary treasure known simply as the 'Soul Stone'. The shard still flickers with a fraction of the full artefacts power." - w_class = ITEMSIZE_SMALL - slot_flags = SLOT_BELT - origin_tech = list(TECH_BLUESPACE = 4, TECH_MATERIAL = 4) - var/imprinted = "empty" - var/possible_constructs = list("Juggernaut","Wraith","Artificer","Harvester") - -//////////////////////////////Capturing//////////////////////////////////////////////////////// - -/obj/item/device/soulstone/attack(mob/living/carbon/human/M as mob, mob/user as mob) - if(!istype(M, /mob/living/carbon/human))//If target is not a human. - return ..() - if(istype(M, /mob/living/carbon/human/dummy)) - return..() - if(jobban_isbanned(M, "cultist")) - user << "This person's soul is too corrupt and cannot be captured!" - return..() - - if(M.has_brain_worms()) //Borer stuff - RR - user << "This being is corrupted by an alien intelligence and cannot be soul trapped." - return..() - - add_attack_logs(user,M,"Soulstone'd with [src.name]") - transfer_soul("VICTIM", M, user) - return - - -///////////////////Options for using captured souls/////////////////////////////////////// - -/obj/item/device/soulstone/attack_self(mob/user) - if (!in_range(src, user)) - return - user.set_machine(src) - var/dat = "Soul Stone
" - for(var/mob/living/simple_animal/shade/A in src) - dat += "Captured Soul: [A.name]
" - dat += {"Summon Shade"} - dat += "
" - dat += {" Close"} - user << browse(dat, "window=aicard") - onclose(user, "aicard") - return - - - - -/obj/item/device/soulstone/Topic(href, href_list) - var/mob/U = usr - if (!in_range(src, U)||U.machine!=src) - U << browse(null, "window=aicard") - U.unset_machine() - return - - add_fingerprint(U) - U.set_machine(src) - - switch(href_list["choice"])//Now we switch based on choice. - if ("Close") - U << browse(null, "window=aicard") - U.unset_machine() - return - - if ("Summon") - for(var/mob/living/simple_animal/shade/A in src) - A.status_flags &= ~GODMODE - A.canmove = 1 - A << "You have been released from your prison, but you are still bound to [U.name]'s will. Help them suceed in their goals at all costs." - A.forceMove(U.loc) - A.cancel_camera() - src.icon_state = "soulstone" - attack_self(U) - -///////////////////////////Transferring to constructs///////////////////////////////////////////////////// -/obj/structure/constructshell - name = "empty shell" - icon = 'icons/obj/wizard.dmi' - icon_state = "construct" - desc = "A wicked machine used by those skilled in magical arts. It is inactive." - -/obj/structure/constructshell/cultify() - return - -/obj/structure/constructshell/cult - icon_state = "construct-cult" - desc = "This eerie contraption looks like it would come alive if supplied with a missing ingredient." - -/obj/structure/constructshell/attackby(obj/item/O as obj, mob/user as mob) - if(istype(O, /obj/item/device/soulstone)) - var/obj/item/device/soulstone/S = O; - S.transfer_soul("CONSTRUCT",src,user) - - -////////////////////////////Proc for moving soul in and out off stone////////////////////////////////////// -/obj/item/device/soulstone/proc/transfer_human(var/mob/living/carbon/human/T,var/mob/U) - if(!istype(T)) - return; - if(src.imprinted != "empty") - U << "Capture failed!: The soul stone has already been imprinted with [src.imprinted]'s mind!" - return - if ((T.health + T.halloss) > config.health_threshold_crit && T.stat != DEAD) - U << "Capture failed!: Kill or maim the victim first!" - return - if(T.client == null) - U << "Capture failed!: The soul has already fled it's mortal frame." - return - if(src.contents.len) - U << "Capture failed!: The soul stone is full! Use or free an existing soul to make room." - return - - for(var/obj/item/W in T) - T.drop_from_inventory(W) - - new /obj/effect/decal/remains/human(T.loc) //Spawns a skeleton - T.invisibility = 101 - - var/atom/movable/overlay/animation = new /atom/movable/overlay( T.loc ) - animation.icon_state = "blank" - animation.icon = 'icons/mob/mob.dmi' - animation.master = T - flick("dust-h", animation) - qdel(animation) - - var/mob/living/simple_animal/shade/S = new /mob/living/simple_animal/shade( T.loc ) - S.forceMove(src) //put shade in stone - S.status_flags |= GODMODE //So they won't die inside the stone somehow - S.canmove = 0//Can't move out of the soul stone - S.name = "Shade of [T.real_name]" - S.real_name = "Shade of [T.real_name]" - S.icon = T.icon - S.icon_state = T.icon_state - S.overlays = T.overlays - S.color = rgb(254,0,0) - S.alpha = 127 - if (T.client) - T.client.mob = S - S.cancel_camera() - - - src.icon_state = "soulstone2" - src.name = "Soul Stone: [S.real_name]" - to_chat(S, "Your soul has been captured! You are now bound to [U.name]'s will, help them suceed in their goals at all costs.") - to_chat(U, "Capture successful! : [T.real_name]'s soul has been ripped from their body and stored within the soul stone.") - to_chat(U, "The soulstone has been imprinted with [S.real_name]'s mind, it will no longer react to other souls.") - src.imprinted = "[S.name]" - qdel(T) - -/obj/item/device/soulstone/proc/transfer_shade(var/mob/living/simple_animal/shade/T,var/mob/U) - if(!istype(T)) - return; - if (T.stat == DEAD) - to_chat(U, "Capture failed!: The shade has already been banished!") - return - if(src.contents.len) - to_chat(U, "Capture failed!: The soul stone is full! Use or free an existing soul to make room.") - return - if(T.name != src.imprinted) - to_chat(U, "Capture failed!: The soul stone has already been imprinted with [src.imprinted]'s mind!") - return - - T.forceMove(src) //put shade in stone - T.status_flags |= GODMODE - T.canmove = 0 - T.health = T.getMaxHealth() - src.icon_state = "soulstone2" - - to_chat(T, "Your soul has been recaptured by the soul stone, its arcane energies are reknitting your ethereal form") - to_chat(U, "Capture successful! : [T.name]'s has been recaptured and stored within the soul stone.") - -/obj/item/device/soulstone/proc/transfer_construct(var/obj/structure/constructshell/T,var/mob/U) - var/mob/living/simple_animal/shade/A = locate() in src - if(!A) - to_chat(U,"Capture failed!: The soul stone is empty! Go kill someone!") - return; - var/construct_class = input(U, "Please choose which type of construct you wish to create.") as null|anything in possible_constructs - switch(construct_class) - if("Juggernaut") - var/mob/living/simple_animal/construct/armoured/Z = new /mob/living/simple_animal/construct/armoured (get_turf(T.loc)) - Z.key = A.key - if(iscultist(U)) - cult.add_antagonist(Z.mind) - qdel(T) - to_chat(Z,"You are playing a Juggernaut. Though slow, you can withstand extreme punishment, and rip apart enemies and walls alike.") - to_chat(Z,"You are still bound to serve your creator, follow their orders and help them complete their goals at all costs.") - Z.cancel_camera() - qdel(src) - if("Wraith") - var/mob/living/simple_animal/construct/wraith/Z = new /mob/living/simple_animal/construct/wraith (get_turf(T.loc)) - Z.key = A.key - if(iscultist(U)) - cult.add_antagonist(Z.mind) - qdel(T) - to_chat(Z,"You are playing a Wraith. Though relatively fragile, you are fast, deadly, and even able to phase through walls.") - to_chat(Z,"You are still bound to serve your creator, follow their orders and help them complete their goals at all costs.") - Z.cancel_camera() - qdel(src) - if("Artificer") - var/mob/living/simple_animal/construct/builder/Z = new /mob/living/simple_animal/construct/builder (get_turf(T.loc)) - Z.key = A.key - if(iscultist(U)) - cult.add_antagonist(Z.mind) - qdel(T) - to_chat(Z,"You are playing an Artificer. You are incredibly weak and fragile, but you are able to construct fortifications, repair allied constructs (by clicking on them), and even create new constructs") - to_chat(Z,"You are still bound to serve your creator, follow their orders and help them complete their goals at all costs.") - Z.cancel_camera() - qdel(src) - if("Harvester") - var/mob/living/simple_animal/construct/harvester/Z = new /mob/living/simple_animal/construct/harvester (get_turf(T.loc)) - Z.key = A.key - if(iscultist(U)) - cult.add_antagonist(Z.mind) - qdel(T) - to_chat(Z,"You are playing a Harvester. You are relatively weak, but your physical frailty is made up for by your ranged abilities.") - to_chat(Z,"You are still bound to serve your creator, follow their orders and help them complete their goals at all costs.") - Z.cancel_camera() - qdel(src) - if("Behemoth") - var/mob/living/simple_animal/construct/behemoth/Z = new /mob/living/simple_animal/construct/behemoth (get_turf(T.loc)) - Z.key = A.key - if(iscultist(U)) - cult.add_antagonist(Z.mind) - qdel(T) - to_chat(Z,"You are playing a Behemoth. You are incredibly slow, though your slowness is made up for by the fact your shell is far larger than any of your bretheren. You are the Unstoppable Force, and Immovable Object.") - to_chat(Z,"You are still bound to serve your creator, follow their orders and help them complete their goals at all costs.") - Z.cancel_camera() - qdel(src) - -/obj/item/device/soulstone/proc/transfer_soul(var/choice as text, var/target, var/mob/U as mob) - switch(choice) - if("VICTIM") - transfer_human(target,U) - if("SHADE") - transfer_shade(target,U) - if("CONSTRUCT") - transfer_construct(target,U) +///////////////////////// +// Soulstone +///////////////////////// + +/obj/item/device/soulstone + name = "Soul Stone Shard" + icon = 'icons/obj/wizard.dmi' + icon_state = "soulstone" + item_state = "electronic" + desc = "A fragment of the legendary treasure known simply as the 'Soul Stone'. The shard still flickers with a fraction of the full artefacts power." + w_class = ITEMSIZE_SMALL + slot_flags = SLOT_BELT + origin_tech = list(TECH_BLUESPACE = 4, TECH_MATERIAL = 4) + var/imprinted = "empty" + var/possible_constructs = list("Juggernaut","Wraith","Artificer","Harvester") + +/obj/item/device/soulstone/cultify() + return + +//////////////////////////////Capturing//////////////////////////////////////////////////////// + +/obj/item/device/soulstone/attack(mob/living/carbon/human/M as mob, mob/user as mob) + if(!istype(M, /mob/living/carbon/human))//If target is not a human. + return ..() + if(istype(M, /mob/living/carbon/human/dummy)) + return..() + if(jobban_isbanned(M, "cultist")) + user << "This person's soul is too corrupt and cannot be captured!" + return..() + + if(M.has_brain_worms()) //Borer stuff - RR + user << "This being is corrupted by an alien intelligence and cannot be soul trapped." + return..() + + add_attack_logs(user,M,"Soulstone'd with [src.name]") + transfer_soul("VICTIM", M, user) + return + + +///////////////////Options for using captured souls/////////////////////////////////////// + +/obj/item/device/soulstone/attack_self(mob/user) + if (!in_range(src, user)) + return + user.set_machine(src) + var/dat = "Soul Stone
" + for(var/mob/living/simple_mob/construct/shade/A in src) + dat += "Captured Soul: [A.name]
" + dat += {"Summon Shade"} + dat += "
" + dat += {" Close"} + user << browse(dat, "window=aicard") + onclose(user, "aicard") + return + + + + +/obj/item/device/soulstone/Topic(href, href_list) + var/mob/U = usr + if (!in_range(src, U)||U.machine!=src) + U << browse(null, "window=aicard") + U.unset_machine() + return + + add_fingerprint(U) + U.set_machine(src) + + switch(href_list["choice"])//Now we switch based on choice. + if ("Close") + U << browse(null, "window=aicard") + U.unset_machine() + return + + if ("Summon") + for(var/mob/living/simple_mob/construct/shade/A in src) + A.status_flags &= ~GODMODE + A.canmove = 1 + A << "You have been released from your prison, but you are still bound to [U.name]'s will. Help them suceed in their goals at all costs." + A.forceMove(U.loc) + A.cancel_camera() + src.icon_state = "soulstone" + attack_self(U) + +///////////////////////////Transferring to constructs///////////////////////////////////////////////////// +/obj/structure/constructshell + name = "empty shell" + icon = 'icons/obj/wizard.dmi' + icon_state = "construct" + desc = "A wicked machine used by those skilled in magical arts. It is inactive." + +/obj/structure/constructshell/cultify() + return + +/obj/structure/constructshell/cult + icon_state = "construct-cult" + desc = "This eerie contraption looks like it would come alive if supplied with a missing ingredient." + +/obj/structure/constructshell/attackby(obj/item/O as obj, mob/user as mob) + if(istype(O, /obj/item/device/soulstone)) + var/obj/item/device/soulstone/S = O; + S.transfer_soul("CONSTRUCT",src,user) + + +////////////////////////////Proc for moving soul in and out off stone////////////////////////////////////// +/obj/item/device/soulstone/proc/transfer_human(var/mob/living/carbon/human/T,var/mob/U) + if(!istype(T)) + return; + if(src.imprinted != "empty") + U << "Capture failed!: The soul stone has already been imprinted with [src.imprinted]'s mind!" + return + if ((T.health + T.halloss) > config.health_threshold_crit && T.stat != DEAD) + U << "Capture failed!: Kill or maim the victim first!" + return + if(T.client == null) + U << "Capture failed!: The soul has already fled it's mortal frame." + return + if(src.contents.len) + U << "Capture failed!: The soul stone is full! Use or free an existing soul to make room." + return + + for(var/obj/item/W in T) + T.drop_from_inventory(W) + + new /obj/effect/decal/remains/human(T.loc) //Spawns a skeleton + T.invisibility = 101 + + var/atom/movable/overlay/animation = new /atom/movable/overlay( T.loc ) + animation.icon_state = "blank" + animation.icon = 'icons/mob/mob.dmi' + animation.master = T + flick("dust-h", animation) + qdel(animation) + + var/mob/living/simple_mob/construct/shade/S = new /mob/living/simple_mob/construct/shade( T.loc ) + S.forceMove(src) //put shade in stone + S.status_flags |= GODMODE //So they won't die inside the stone somehow + S.canmove = 0//Can't move out of the soul stone + S.name = "Shade of [T.real_name]" + S.real_name = "Shade of [T.real_name]" + S.icon = T.icon + S.icon_state = T.icon_state + S.overlays = T.overlays + S.color = rgb(254,0,0) + S.alpha = 127 + if (T.client) + T.client.mob = S + S.cancel_camera() + + + src.icon_state = "soulstone2" + src.name = "Soul Stone: [S.real_name]" + to_chat(S, "Your soul has been captured! You are now bound to [U.name]'s will, help them suceed in their goals at all costs.") + to_chat(U, "Capture successful! : [T.real_name]'s soul has been ripped from their body and stored within the soul stone.") + to_chat(U, "The soulstone has been imprinted with [S.real_name]'s mind, it will no longer react to other souls.") + src.imprinted = "[S.name]" + qdel(T) + +/obj/item/device/soulstone/proc/transfer_shade(var/mob/living/simple_mob/construct/shade/T,var/mob/U) + if(!istype(T)) + return; + if (T.stat == DEAD) + to_chat(U, "Capture failed!: The shade has already been banished!") + return + if(src.contents.len) + to_chat(U, "Capture failed!: The soul stone is full! Use or free an existing soul to make room.") + return + if(T.name != src.imprinted) + to_chat(U, "Capture failed!: The soul stone has already been imprinted with [src.imprinted]'s mind!") + return + + T.forceMove(src) //put shade in stone + T.status_flags |= GODMODE + T.canmove = 0 + T.health = T.getMaxHealth() + src.icon_state = "soulstone2" + + to_chat(T, "Your soul has been recaptured by the soul stone, its arcane energies are reknitting your ethereal form") + to_chat(U, "Capture successful! : [T.name]'s has been recaptured and stored within the soul stone.") + +/obj/item/device/soulstone/proc/transfer_construct(var/obj/structure/constructshell/T,var/mob/U) + var/mob/living/simple_mob/construct/shade/A = locate() in src + if(!A) + to_chat(U,"Capture failed!: The soul stone is empty! Go kill someone!") + return; + var/construct_class = input(U, "Please choose which type of construct you wish to create.") as null|anything in possible_constructs + switch(construct_class) + if("Juggernaut") + var/mob/living/simple_mob/construct/juggernaut/Z = new /mob/living/simple_mob/construct/juggernaut (get_turf(T.loc)) + Z.key = A.key + if(iscultist(U)) + cult.add_antagonist(Z.mind) + qdel(T) + to_chat(Z,"You are playing a Juggernaut. Though slow, you can withstand extreme punishment, and rip apart enemies and walls alike.") + to_chat(Z,"You are still bound to serve your creator, follow their orders and help them complete their goals at all costs.") + Z.cancel_camera() + qdel(src) + if("Wraith") + var/mob/living/simple_mob/construct/wraith/Z = new /mob/living/simple_mob/construct/wraith (get_turf(T.loc)) + Z.key = A.key + if(iscultist(U)) + cult.add_antagonist(Z.mind) + qdel(T) + to_chat(Z,"You are playing a Wraith. Though relatively fragile, you are fast, deadly, and even able to phase through walls.") + to_chat(Z,"You are still bound to serve your creator, follow their orders and help them complete their goals at all costs.") + Z.cancel_camera() + qdel(src) + if("Artificer") + var/mob/living/simple_mob/construct/artificer/Z = new /mob/living/simple_mob/construct/artificer (get_turf(T.loc)) + Z.key = A.key + if(iscultist(U)) + cult.add_antagonist(Z.mind) + qdel(T) + to_chat(Z,"You are playing an Artificer. You are incredibly weak and fragile, but you are able to construct fortifications, repair allied constructs (by clicking on them), and even create new constructs") + to_chat(Z,"You are still bound to serve your creator, follow their orders and help them complete their goals at all costs.") + Z.cancel_camera() + qdel(src) + if("Harvester") + var/mob/living/simple_mob/construct/harvester/Z = new /mob/living/simple_mob/construct/harvester (get_turf(T.loc)) + Z.key = A.key + if(iscultist(U)) + cult.add_antagonist(Z.mind) + qdel(T) + to_chat(Z,"You are playing a Harvester. You are relatively weak, but your physical frailty is made up for by your ranged abilities.") + to_chat(Z,"You are still bound to serve your creator, follow their orders and help them complete their goals at all costs.") + Z.cancel_camera() + qdel(src) + if("Behemoth") + var/mob/living/simple_mob/construct/juggernaut/behemoth/Z = new /mob/living/simple_mob/construct/juggernaut/behemoth (get_turf(T.loc)) + Z.key = A.key + if(iscultist(U)) + cult.add_antagonist(Z.mind) + qdel(T) + to_chat(Z,"You are playing a Behemoth. You are incredibly slow, though your slowness is made up for by the fact your shell is far larger than any of your bretheren. You are the Unstoppable Force, and Immovable Object.") + to_chat(Z,"You are still bound to serve your creator, follow their orders and help them complete their goals at all costs.") + Z.cancel_camera() + qdel(src) + +/obj/item/device/soulstone/proc/transfer_soul(var/choice as text, var/target, var/mob/U as mob) + switch(choice) + if("VICTIM") + transfer_human(target,U) + if("SHADE") + transfer_shade(target,U) + if("CONSTRUCT") + transfer_construct(target,U) diff --git a/code/game/gamemodes/endgame/supermatter_cascade/blob.dm b/code/game/gamemodes/endgame/supermatter_cascade/blob.dm index 1051587d13..99e28f5ef7 100644 --- a/code/game/gamemodes/endgame/supermatter_cascade/blob.dm +++ b/code/game/gamemodes/endgame/supermatter_cascade/blob.dm @@ -16,11 +16,11 @@ /turf/unsimulated/wall/supermatter/New() ..() - processing_turfs.Add(src) + START_PROCESSING(SSturfs, src) next_check = world.time+5 SECONDS /turf/unsimulated/wall/supermatter/Destroy() - processing_turfs.Remove(src) + STOP_PROCESSING(SSturfs, src) ..() /turf/unsimulated/wall/supermatter/process() @@ -29,7 +29,7 @@ // No more available directions? Shut down process(). if(avail_dirs.len==0) - processing_objects.Remove(src) + STOP_PROCESSING(SSobj, src) return 1 // We're checking, reset the timer. @@ -57,7 +57,7 @@ T.ChangeTurf(type) if((spawned & (NORTH|SOUTH|EAST|WEST)) == (NORTH|SOUTH|EAST|WEST)) - processing_turfs -= src + STOP_PROCESSING(SSturfs, src) return /turf/unsimulated/wall/supermatter/attack_generic(mob/user as mob) diff --git a/code/game/gamemodes/endgame/supermatter_cascade/portal.dm b/code/game/gamemodes/endgame/supermatter_cascade/portal.dm index 7f7310f996..aef330c144 100644 --- a/code/game/gamemodes/endgame/supermatter_cascade/portal.dm +++ b/code/game/gamemodes/endgame/supermatter_cascade/portal.dm @@ -16,7 +16,7 @@ /obj/singularity/narsie/large/exit/New() ..() - processing_objects.Add(src) + START_PROCESSING(SSobj, src) /obj/singularity/narsie/large/exit/update_icon() overlays = 0 diff --git a/code/game/gamemodes/events.dm b/code/game/gamemodes/events.dm index 4b2ab0cd7d..573f10a9b4 100644 --- a/code/game/gamemodes/events.dm +++ b/code/game/gamemodes/events.dm @@ -206,7 +206,7 @@ var/hadevent = 0 /proc/carp_migration() // -- Darem for(var/obj/effect/landmark/C in landmarks_list) if(C.name == "carpspawn") - new /mob/living/simple_animal/hostile/carp(C.loc) + new /mob/living/simple_mob/animal/space/carp(C.loc) //sleep(100) spawn(rand(300, 600)) //Delayed announcements to keep the crew on their toes. command_announcement.Announce("Unknown biological entities have been detected near \the [station_name()], please stand-by.", "Lifesign Alert", new_sound = 'sound/AI/commandreport.ogg') diff --git a/code/game/gamemodes/events/holidays/Christmas.dm b/code/game/gamemodes/events/holidays/Christmas.dm index b2c4b68a5a..ed86c4045d 100644 --- a/code/game/gamemodes/events/holidays/Christmas.dm +++ b/code/game/gamemodes/events/holidays/Christmas.dm @@ -4,12 +4,12 @@ for(var/turf/simulated/floor/T in orange(1,xmas)) for(var/i=1,i<=rand(1,5),i++) new /obj/item/weapon/a_gift(T) - //for(var/mob/living/simple_animal/corgi/Ian/Ian in mob_list) + //for(var/mob/living/simple_mob/corgi/Ian/Ian in mob_list) // Ian.place_on_head(new /obj/item/clothing/head/helmet/space/santahat(Ian)) /proc/ChristmasEvent() for(var/obj/structure/flora/tree/pine/xmas in world) - var/mob/living/simple_animal/hostile/tree/evil_tree = new /mob/living/simple_animal/hostile/tree(xmas.loc) + var/mob/living/simple_mob/animal/space/tree/evil_tree = new /mob/living/simple_mob/animal/space/tree(xmas.loc) evil_tree.icon_state = xmas.icon_state evil_tree.icon_living = evil_tree.icon_state evil_tree.icon_dead = evil_tree.icon_state diff --git a/code/game/gamemodes/game_mode.dm b/code/game/gamemodes/game_mode.dm index 8ab82e5e84..29139b3a3a 100644 --- a/code/game/gamemodes/game_mode.dm +++ b/code/game/gamemodes/game_mode.dm @@ -176,12 +176,12 @@ var/global/list/additional_antag_types = list() /datum/game_mode/proc/refresh_event_modifiers() if(event_delay_mod_moderate || event_delay_mod_major) - event_manager.report_at_round_end = 1 + SSevents.report_at_round_end = TRUE if(event_delay_mod_moderate) - var/datum/event_container/EModerate = event_manager.event_containers[EVENT_LEVEL_MODERATE] + var/datum/event_container/EModerate = SSevents.event_containers[EVENT_LEVEL_MODERATE] EModerate.delay_modifier = event_delay_mod_moderate if(event_delay_mod_moderate) - var/datum/event_container/EMajor = event_manager.event_containers[EVENT_LEVEL_MAJOR] + var/datum/event_container/EMajor = SSevents.event_containers[EVENT_LEVEL_MAJOR] EMajor.delay_modifier = event_delay_mod_major /datum/game_mode/proc/pre_setup() @@ -464,7 +464,7 @@ proc/display_roundstart_logout_report() if(L.ckey) var/found = 0 - for(var/client/C in clients) + for(var/client/C in GLOB.clients) if(C.ckey == L.ckey) found = 1 break diff --git a/code/game/gamemodes/game_mode_latespawn.dm b/code/game/gamemodes/game_mode_latespawn.dm index ecafc0dbc5..578c1a0d8c 100644 --- a/code/game/gamemodes/game_mode_latespawn.dm +++ b/code/game/gamemodes/game_mode_latespawn.dm @@ -13,7 +13,7 @@ ///process() ///Called by the gameticker -/datum/game_mode/proc/process() +/datum/game_mode/process() // Slow this down a bit so latejoiners have a chance of being antags. process_count++ if(process_count >= 10) diff --git a/code/game/gamemodes/gameticker.dm b/code/game/gamemodes/gameticker.dm index 7424b514c4..c1e0b3fdd1 100644 --- a/code/game/gamemodes/gameticker.dm +++ b/code/game/gamemodes/gameticker.dm @@ -307,7 +307,7 @@ var/global/datum/controller/gameticker/ticker to_chat(M, "Colony Directorship not forced on anyone.") - proc/process() + process() if(current_state != GAME_STATE_PLAYING) return 0 @@ -439,7 +439,7 @@ var/global/datum/controller/gameticker/ticker mode.declare_completion()//To declare normal completion. //Ask the event manager to print round end information - event_manager.RoundEnd() + SSevents.RoundEnd() //Print a list of antagonists to the server log var/list/total_antagonists = list() diff --git a/code/game/gamemodes/malfunction/malf_research.dm b/code/game/gamemodes/malfunction/malf_research.dm index da7a4df668..58f7d56c13 100644 --- a/code/game/gamemodes/malfunction/malf_research.dm +++ b/code/game/gamemodes/malfunction/malf_research.dm @@ -43,7 +43,7 @@ // Proc: process() // Parameters: None // Description: Processes CPU gain and research progress based on "realtime" calculation. -/datum/malf_research/proc/process(var/idle = 0) +/datum/malf_research/process(var/idle = 0) if(idle) // No power or running on APU. Do nothing. last_tick = world.time return diff --git a/code/game/gamemodes/malfunction/malf_research_ability.dm b/code/game/gamemodes/malfunction/malf_research_ability.dm index c6916208bd..8002dcead8 100644 --- a/code/game/gamemodes/malfunction/malf_research_ability.dm +++ b/code/game/gamemodes/malfunction/malf_research_ability.dm @@ -7,7 +7,7 @@ var/datum/malf_research_ability/next = null // Next research (if applicable). -/datum/malf_research_ability/proc/process(var/time = 0) +/datum/malf_research_ability/process(var/time = 0) invested += time if(invested >= price) unlocked = 1 \ No newline at end of file diff --git a/code/game/gamemodes/malfunction/newmalf_ability_trees/tree_networking.dm b/code/game/gamemodes/malfunction/newmalf_ability_trees/tree_networking.dm index 4d4c8b6220..a3b4db6b7e 100644 --- a/code/game/gamemodes/malfunction/newmalf_ability_trees/tree_networking.dm +++ b/code/game/gamemodes/malfunction/newmalf_ability_trees/tree_networking.dm @@ -120,7 +120,7 @@ if(!ability_prechecks(user, price)) return - var/alert_target = input("Select new alert level:") in list("green", "blue", "red", "delta", "CANCEL") + var/alert_target = input("Select new alert level:") in list("green", "yellow", "violet", "orange", "blue", "red", "delta", "CANCEL") if(!alert_target || !ability_pay(user, price) || alert_target == "CANCEL") user << "Hack Aborted" return diff --git a/code/game/gamemodes/meteor/meteors.dm b/code/game/gamemodes/meteor/meteors.dm index 84cbb4d904..4380331b50 100644 --- a/code/game/gamemodes/meteor/meteors.dm +++ b/code/game/gamemodes/meteor/meteors.dm @@ -148,7 +148,7 @@ else die(0) -/obj/effect/meteor/CanPass(atom/movable/mover, turf/target, height=0, air_group=0) +/obj/effect/meteor/CanPass(atom/movable/mover, turf/target) return istype(mover, /obj/effect/meteor) ? 1 : ..() /obj/effect/meteor/proc/ram_turf(var/turf/T) diff --git a/code/game/gamemodes/nuclear/pinpointer.dm b/code/game/gamemodes/nuclear/pinpointer.dm index f6e113c5b2..333d93bf50 100644 --- a/code/game/gamemodes/nuclear/pinpointer.dm +++ b/code/game/gamemodes/nuclear/pinpointer.dm @@ -2,7 +2,6 @@ name = "pinpointer" icon = 'icons/obj/device.dmi' icon_state = "pinoff" - flags = CONDUCT slot_flags = SLOT_BELT w_class = ITEMSIZE_SMALL item_state = "electronic" diff --git a/code/game/gamemodes/objective.dm b/code/game/gamemodes/objective.dm index ac9a16e8b6..a410ebfe24 100644 --- a/code/game/gamemodes/objective.dm +++ b/code/game/gamemodes/objective.dm @@ -808,7 +808,7 @@ datum/objective/heist/salvage /datum/objective/borer_survive/check_completion() if(owner) - var/mob/living/simple_animal/borer/B = owner + var/mob/living/simple_mob/animal/borer/B = owner if(istype(B) && B.stat < 2 && B.host && B.host.stat < 2) return 1 return 0 @@ -817,7 +817,7 @@ datum/objective/heist/salvage /datum/objective/borer_reproduce/check_completion() if(owner && owner.current) - var/mob/living/simple_animal/borer/B = owner.current + var/mob/living/simple_mob/animal/borer/B = owner.current if(istype(B) && B.has_reproduced) return 1 return 0 diff --git a/code/game/gamemodes/technomancer/assistance/golem.dm b/code/game/gamemodes/technomancer/assistance/golem.dm deleted file mode 100644 index 6b8654e719..0000000000 --- a/code/game/gamemodes/technomancer/assistance/golem.dm +++ /dev/null @@ -1,258 +0,0 @@ -//An AI-controlled 'companion' for the Technomancer. It's tough, strong, and can also use spells. -/mob/living/simple_animal/technomancer_golem - name = "G.O.L.E.M." - desc = "A rather unusual looking synthetic." - icon = 'icons/mob/mob.dmi' - icon_state = "technomancer_golem" - health = 250 - maxHealth = 250 - stop_automated_movement = 1 - wander = 0 - response_help = "pets" - response_disarm = "pushes away" - response_harm = "punches" - harm_intent_damage = 3 - - heat_damage_per_tick = 0 - cold_damage_per_tick = 0 - - min_oxy = 0 - max_oxy = 0 - min_tox = 0 - max_tox = 0 - min_co2 = 0 - max_co2 = 0 - min_n2 = 0 - max_n2 = 0 - unsuitable_atoms_damage = 0 - speed = 0 - - melee_damage_lower = 30 // It has a built in esword. - melee_damage_upper = 30 - attack_sound = 'sound/weapons/blade1.ogg' - attacktext = list("slashed") - friendly = "hugs" - resistance = 0 - melee_miss_chance = 0 - - var/obj/item/weapon/technomancer_core/golem/core = null - var/obj/item/weapon/spell/active_spell = null // Shield and ranged spells - var/mob/living/master = null - - var/list/known_spells = list( - "beam" = /obj/item/weapon/spell/projectile/beam, - "chain lightning" = /obj/item/weapon/spell/projectile/chain_lightning, - "force missile" = /obj/item/weapon/spell/projectile/force_missile, - "ionic bolt" = /obj/item/weapon/spell/projectile/ionic_bolt, - "lightning" = /obj/item/weapon/spell/projectile/lightning, - "blink" = /obj/item/weapon/spell/blink, - "dispel" = /obj/item/weapon/spell/dispel, - "oxygenate" = /obj/item/weapon/spell/oxygenate, - "mend life" = /obj/item/weapon/spell/modifier/mend_life, - "mend synthetic" = /obj/item/weapon/spell/modifier/mend_synthetic, - "mend organs" = /obj/item/weapon/spell/mend_organs, - "purify" = /obj/item/weapon/spell/modifier/purify, - "resurrect" = /obj/item/weapon/spell/resurrect, - "passwall" = /obj/item/weapon/spell/passwall, - "repel missiles" = /obj/item/weapon/spell/modifier/repel_missiles, - "corona" = /obj/item/weapon/spell/modifier/corona, - "haste" = /obj/item/weapon/spell/modifier/haste - ) - - // Holds the overlays, when idle or attacking. - var/image/sword_image = null - var/image/spell_image = null - // These contain icon_states for each frame of an attack animation, which is swapped in and out manually, because BYOND. - // They are assoc lists, to hold the frame duration and the frame icon_state in one list. - var/list/spell_pre_attack_states = list( - "golem_spell_attack_1" = 1, - "golem_spell_attack_2" = 2, - "golem_spell_attack_3" = 2 - ) - var/list/spell_post_attack_states = list( - "golem_spell_attack_4" = 2, - "golem_spell_attack_5" = 3, - "golem_spell_attack_6" = 3 - ) - var/list/sword_pre_attack_states = list( - "golem_sword_attack_1" = 1, - "golem_sword_attack_2" = 5 - ) - var/list/sword_post_attack_states = list( - "golem_sword_attack_3" = 1, - "golem_sword_attack_4" = 3 - ) - -/mob/living/simple_animal/technomancer_golem/New() - ..() - core = new(src) - sword_image = image(icon, src, "golem_sword") - spell_image = image(icon, src, "golem_spell") - update_icon() - -/mob/living/simple_animal/technomancer_golem/Destroy() - qdel(core) - qdel(sword_image) - qdel(spell_image) - return ..() - -/mob/living/simple_animal/technomancer_golem/unref_spell() - active_spell = null - return ..() - -/mob/living/simple_animal/hostile/hivebot/death() - ..() - visible_message("\The [src] disintegrates!") - new /obj/effect/decal/cleanable/blood/gibs/robot(src.loc) - var/datum/effect/effect/system/spark_spread/s = new /datum/effect/effect/system/spark_spread - s.set_up(3, 1, src) - s.start() - qdel(src) - -/mob/living/simple_animal/technomancer_golem/update_icon() - overlays.Cut() - overlays += sword_image - overlays += spell_image - update_modifier_visuals() - -// Unfortunately, BYOND does not let you flick() images or other overlays, so we need to do this in a terrible way. -/atom/proc/manual_flick(var/list/frames, var/image/I, var/reset_to = null) - // Swap in and out each frame manually. - for(var/frame in frames) - overlays -= I - I.icon_state = frame - overlays += I - sleep(frames[frame]) - if(reset_to) - // One more time to reset it to what it was before. - overlays -= I - I.icon_state = reset_to - overlays += I - -/mob/living/simple_animal/technomancer_golem/proc/spellcast_pre_animation() - setClickCooldown(5) - manual_flick(spell_pre_attack_states, spell_image, reset_to = "golem_spell_attack_3") - -/mob/living/simple_animal/technomancer_golem/proc/spellcast_post_animation() - setClickCooldown(8) - manual_flick(spell_post_attack_states, spell_image, reset_to = "golem_spell") - -/mob/living/simple_animal/technomancer_golem/proc/sword_pre_animation() - setClickCooldown(6) - manual_flick(sword_pre_attack_states, sword_image) - -/mob/living/simple_animal/technomancer_golem/proc/sword_post_animation() - setClickCooldown(3) - manual_flick(sword_post_attack_states, sword_image, reset_to = "golem_sword") - -/mob/living/simple_animal/technomancer_golem/DoPunch(var/atom/A) - sword_pre_animation() - . = ..() // This does the actual attack and will check adjacency again. - sword_post_animation() - -/mob/living/simple_animal/technomancer_golem/isSynthetic() - return TRUE // So Mend Synthetic will work on them. - -/mob/living/simple_animal/technomancer_golem/speech_bubble_appearance() - return "synthetic_evil" - -/mob/living/simple_animal/technomancer_golem/place_spell_in_hand(var/path) - if(!path || !ispath(path)) - return 0 - - if(active_spell) - qdel(active_spell) // Get rid of our old spell. - - var/obj/item/weapon/spell/S = new path(src) - active_spell = S - -/mob/living/simple_animal/technomancer_golem/verb/test_giving_spells() - var/choice = input(usr, "What spell?", "Give spell") as null|anything in known_spells - if(choice) - place_spell_in_hand(known_spells[choice]) - else - qdel(active_spell) - -// Used to cast spells. -/mob/living/simple_animal/technomancer_golem/RangedAttack(var/atom/A, var/params) - if(active_spell) - spellcast_pre_animation() - if(active_spell.cast_methods & CAST_RANGED) - active_spell.on_ranged_cast(A, src) - spellcast_post_animation() - -/mob/living/simple_animal/technomancer_golem/UnarmedAttack(var/atom/A, var/proximity) - if(proximity) - if(active_spell) - spellcast_pre_animation() - if(!Adjacent(A)) // Need to check again since they might've moved while 'warming up'. - spellcast_post_animation() - return - var/effective_cooldown = round(active_spell.cooldown * core.cooldown_modifier, 5) - if(active_spell.cast_methods & CAST_MELEE) - active_spell.on_melee_cast(A, src) - else if(active_spell.cast_methods & CAST_RANGED) - active_spell.on_ranged_cast(A, src) - spellcast_post_animation() - src.setClickCooldown(effective_cooldown) - else - ..() - -/mob/living/simple_animal/technomancer_golem/get_technomancer_core() - return core - -/mob/living/simple_animal/technomancer_golem/proc/bind_to_mob(mob/user) - if(!user || master) - return - master = user - name = "[master]'s [initial(name)]" - -/mob/living/simple_animal/technomancer_golem/examine(mob/user) - ..() - if(user.mind && technomancers.is_antagonist(user.mind)) - user << "Your pride and joy. It's a very special synthetic robot, capable of using functions similar to you, and you built it \ - yourself! It'll always stand by your side, ready to help you out. You have no idea what GOLEM stands for, however..." - -/mob/living/simple_animal/technomancer_golem/Life() - ..() - handle_ai() - -// This is where the real spaghetti begins. -/mob/living/simple_animal/technomancer_golem/proc/handle_ai() - if(!master) - return - if(get_dist(src, master) > 6 || src.z != master.z) - targeted_blink(master) - - // Give our allies buffs and heals. - for(var/mob/living/L in view(src)) - if(L in friends) - support_friend(L) - return - -/mob/living/simple_animal/technomancer_golem/proc/support_friend(var/mob/living/L) - if(L.getBruteLoss() >= 10 || L.getFireLoss() >= 10) - if(L.isSynthetic() && !L.has_modifier_of_type(/datum/modifier/technomancer/mend_synthetic)) - place_spell_in_hand(known_spells["mend synthetic"]) - targeted_blink(L) - UnarmedAttack(L, 1) - else if(!L.has_modifier_of_type(/datum/modifier/technomancer/mend_life)) - place_spell_in_hand(known_spells["mend life"]) - targeted_blink(L) - UnarmedAttack(L, 1) - return - - - // Give them repel missiles if they lack it. - if(!L.has_modifier_of_type(/datum/modifier/technomancer/repel_missiles)) - place_spell_in_hand(known_spells["repel missiles"]) - RangedAttack(L) - return - -/mob/living/simple_animal/technomancer_golem/proc/targeted_blink(var/atom/target) - var/datum/effect/effect/system/spark_spread/spark_system = new() - spark_system.set_up(5, 0, get_turf(src)) - spark_system.start() - src.visible_message("\The [src] vanishes!") - src.forceMove(get_turf(target)) - return \ No newline at end of file diff --git a/code/game/gamemodes/technomancer/catalog.dm b/code/game/gamemodes/technomancer/catalog.dm index 25f824d2b3..633f3f6220 100644 --- a/code/game/gamemodes/technomancer/catalog.dm +++ b/code/game/gamemodes/technomancer/catalog.dm @@ -331,7 +331,8 @@ var/list/all_technomancer_assistance = typesof(/datum/technomancer/assistance) - if(href_list["refund_functions"]) - if(H.z != 2) + var/turf/T = get_turf(H) + if(T.z in using_map.player_levels) H << "You can only refund at your base, it's too late now!" return var/obj/item/weapon/technomancer_core/core = null @@ -347,7 +348,8 @@ var/list/all_technomancer_assistance = typesof(/datum/technomancer/assistance) - attack_self(H) /obj/item/weapon/technomancer_catalog/attackby(var/atom/movable/AM, var/mob/user) - if(user.z != 2) + var/turf/T = get_turf(user) + if(T.z in using_map.player_levels) to_chat(user, "You can only refund at your base, it's too late now!") return for(var/datum/technomancer/equipment/E in equipment_instances + assistance_instances) diff --git a/code/game/gamemodes/technomancer/core_obj.dm b/code/game/gamemodes/technomancer/core_obj.dm index 1e7488258b..9400e24bf1 100644 --- a/code/game/gamemodes/technomancer/core_obj.dm +++ b/code/game/gamemodes/technomancer/core_obj.dm @@ -38,11 +38,11 @@ /obj/item/weapon/technomancer_core/New() ..() - processing_objects |= src + START_PROCESSING(SSobj, src) /obj/item/weapon/technomancer_core/Destroy() dismiss_all_summons() - processing_objects.Remove(src) + STOP_PROCESSING(SSobj, src) return ..() // Add the spell buttons to the HUD. @@ -130,7 +130,7 @@ for(var/mob/living/L in summoned_mobs) summoned_mobs -= L qdel(L) - for(var/mob/living/simple_animal/ward/ward in wards_in_use) + for(var/mob/living/ward in wards_in_use) wards_in_use -= ward qdel(ward) diff --git a/code/game/gamemodes/technomancer/devices/gloves_of_regen.dm b/code/game/gamemodes/technomancer/devices/gloves_of_regen.dm index 0056675afc..11343fdeac 100644 --- a/code/game/gamemodes/technomancer/devices/gloves_of_regen.dm +++ b/code/game/gamemodes/technomancer/devices/gloves_of_regen.dm @@ -37,12 +37,12 @@ wearer = null /obj/item/clothing/gloves/regen/New() - processing_objects |= src + START_PROCESSING(SSobj, src) ..() /obj/item/clothing/gloves/regen/Destroy() wearer = null - processing_objects -= src + STOP_PROCESSING(SSobj, src) return ..() /obj/item/clothing/gloves/regen/process() diff --git a/code/game/gamemodes/technomancer/devices/hypos.dm b/code/game/gamemodes/technomancer/devices/hypos.dm index f5174c45e3..002b3cfff0 100644 --- a/code/game/gamemodes/technomancer/devices/hypos.dm +++ b/code/game/gamemodes/technomancer/devices/hypos.dm @@ -1,16 +1,3 @@ -/obj/item/weapon/reagent_containers/hypospray/autoinjector/biginjector - name = "empty hypo" - desc = "A refined version of the standard autoinjector, allowing greater capacity." - icon_state = "autoinjector" - amount_per_transfer_from_this = 15 - volume = 15 - origin_tech = list(TECH_BIO = 4) - filled_reagents = list("inaprovaline" = 15) - -/obj/item/weapon/reagent_containers/hypospray/autoinjector/biginjector/New() - ..() - - /datum/technomancer/consumable/hypo_brute name = "Trauma Hypo" desc = "A extended capacity hypo which can treat blunt trauma." @@ -59,50 +46,3 @@ desc = "A extended capacity hypo containing a dangerous cocktail of various combat stims." cost = 75 obj_path = /obj/item/weapon/reagent_containers/hypospray/autoinjector/biginjector/combat - - -/obj/item/weapon/reagent_containers/hypospray/autoinjector/biginjector/brute - name = "trauma hypo" - desc = "A refined version of the standard autoinjector, allowing greater capacity. This one is made to be used on victims of \ - moderate blunt trauma." - filled_reagents = list("bicaridine" = 15) - -/obj/item/weapon/reagent_containers/hypospray/autoinjector/biginjector/burn - name = "burn hypo" - desc = "A refined version of the standard autoinjector, allowing greater capacity. This one is made to be used on burn victims, \ - featuring an optimized chemical mixture to allow for rapid healing." - filled_reagents = list("kelotane" = 7.5, "dermaline" = 7.5) - -/obj/item/weapon/reagent_containers/hypospray/autoinjector/biginjector/toxin - name = "toxin hypo" - desc = "A refined version of the standard autoinjector, allowing greater capacity. This one is made to counteract toxins." - filled_reagents = list("anti_toxin" = 15) - -/obj/item/weapon/reagent_containers/hypospray/autoinjector/biginjector/oxy - name = "oxy hypo" - desc = "A refined version of the standard autoinjector, allowing greater capacity. This one is made to counteract oxygen \ - deprivation." - filled_reagents = list("dexalinp" = 10, "tricordrazine" = 5) - -/obj/item/weapon/reagent_containers/hypospray/autoinjector/biginjector/purity - name = "purity hypo" - desc = "A refined version of the standard autoinjector, allowing greater capacity. This variant excels at \ - resolving viruses, infections, radiation, and genetic maladies." - filled_reagents = list("spaceacillin" = 9, "arithrazine" = 5, "ryetalyn" = 1) - -/obj/item/weapon/reagent_containers/hypospray/autoinjector/biginjector/pain - name = "pain hypo" - desc = "A refined version of the standard autoinjector, allowing greater capacity. This one contains potent painkillers." - filled_reagents = list("tramadol" = 15) - -/obj/item/weapon/reagent_containers/hypospray/autoinjector/biginjector/organ - name = "organ hypo" - desc = "A refined version of the standard autoinjector, allowing greater capacity. Organ damage is resolved by this variant." - filled_reagents = list("alkysine" = 1, "imidazoline" = 1, "peridaxon" = 13) - -/obj/item/weapon/reagent_containers/hypospray/autoinjector/biginjector/combat - name = "combat hypo" - desc = "A refined version of the standard autoinjector, allowing greater capacity. This is a more dangerous and potentially \ - addictive hypo compared to others, as it contains a potent cocktail of various chemicals to optimize the recipient's combat \ - ability." - filled_reagents = list("bicaridine" = 3, "kelotane" = 1.5, "dermaline" = 1.5, "oxycodone" = 3, "hyperzine" = 3, "tricordrazine" = 3) diff --git a/code/game/gamemodes/technomancer/devices/tesla_armor.dm b/code/game/gamemodes/technomancer/devices/tesla_armor.dm index 56f2085850..86d6f82b08 100644 --- a/code/game/gamemodes/technomancer/devices/tesla_armor.dm +++ b/code/game/gamemodes/technomancer/devices/tesla_armor.dm @@ -75,9 +75,10 @@ H.update_action_buttons() ..() -/obj/item/clothing/suit/armor/tesla/proc/shoot_lightning(var/mob/target, var/power) - var/obj/item/projectile/beam/lightning/lightning = new(src) +/obj/item/clothing/suit/armor/tesla/proc/shoot_lightning(mob/target, power) + var/obj/item/projectile/beam/lightning/lightning = new(get_turf(src)) lightning.power = power - lightning.launch(target) + lightning.old_style_target(target) + lightning.fire() visible_message("\The [src] strikes \the [target] with lightning!") playsound(get_turf(src), 'sound/weapons/gauss_shoot.ogg', 75, 1) \ No newline at end of file diff --git a/code/game/gamemodes/technomancer/spell_objs_helpers.dm b/code/game/gamemodes/technomancer/spell_objs_helpers.dm index 105b3b3e9c..cf83640775 100644 --- a/code/game/gamemodes/technomancer/spell_objs_helpers.dm +++ b/code/game/gamemodes/technomancer/spell_objs_helpers.dm @@ -1,12 +1,17 @@ -//Returns 1 if the turf is dense, or if there's dense objects on it, unless told to ignore them. -/turf/proc/check_density(var/ignore_objs = 0) +//Returns 1 if the turf is dense, or if there's dense objects/mobs on it, unless told to ignore them. +/turf/proc/check_density(var/ignore_objs = FALSE, var/ignore_mobs = FALSE) if(density) - return 1 - if(!ignore_objs) + return TRUE + if(!ignore_objs || !ignore_mobs) for(var/atom/movable/stuff in contents) if(stuff.density) - return 1 - return 0 + if(ignore_objs && isobj(stuff)) + continue + else if(ignore_mobs && isliving(stuff)) // Ghosts aren't dense but keeping this limited to living type will probably save headaches in the future. + continue + else + return TRUE + return FALSE // Used to distinguish friend from foe. /obj/item/weapon/spell/proc/is_ally(var/mob/living/L) @@ -14,9 +19,9 @@ return 1 if(L.mind && technomancers.is_antagonist(L.mind)) // This should be done better since we might want opposing technomancers later. return 1 - if(istype(L, /mob/living/simple_animal/hostile)) // Mind controlled simple mobs count as allies too. - var/mob/living/simple_animal/SA = L - if(owner in SA.friends) + if(istype(L, /mob/living/simple_mob)) // Mind controlled simple mobs count as allies too. + var/mob/living/simple_mob/SM = L + if(owner in SM.friends) return 1 return 0 diff --git a/code/game/gamemodes/technomancer/spells/abjuration.dm b/code/game/gamemodes/technomancer/spells/abjuration.dm index 146c90a987..0eb566a637 100644 --- a/code/game/gamemodes/technomancer/spells/abjuration.dm +++ b/code/game/gamemodes/technomancer/spells/abjuration.dm @@ -16,12 +16,12 @@ /obj/item/weapon/spell/abjuration/on_ranged_cast(atom/hit_atom, mob/user) if(istype(hit_atom, /mob/living) && pay_energy(500) && within_range(hit_atom)) var/mob/living/L = hit_atom - var/mob/living/simple_animal/SA = null + var/mob/living/simple_mob/SM = null //Bit of a roundabout typecheck, in order to test for two variables from two different mob types in one line. - if(istype(L, /mob/living/simple_animal)) - SA = L - if(L.summoned || (SA && SA.supernatural) ) + if(istype(L, /mob/living/simple_mob)) + SM = L + if(L.summoned || (SM && SM.supernatural) ) if(L.client) // Player-controlled mobs are immune to being killed by this. user << "\The [L] resists your attempt to banish it!" L << "\The [user] tried to teleport you far away, but failed." @@ -29,8 +29,8 @@ else visible_message("\The [L] vanishes!") qdel(L) - else if(istype(L, /mob/living/simple_animal/construct)) - var/mob/living/simple_animal/construct/evil = L + else if(istype(L, /mob/living/simple_mob/construct)) + var/mob/living/simple_mob/construct/evil = L evil << "\The [user]'s abjuration purges your form!" evil.purge = 3 adjust_instability(5) diff --git a/code/game/gamemodes/technomancer/spells/aspect_aura.dm b/code/game/gamemodes/technomancer/spells/aspect_aura.dm index 577f356229..833f72a2fb 100644 --- a/code/game/gamemodes/technomancer/spells/aspect_aura.dm +++ b/code/game/gamemodes/technomancer/spells/aspect_aura.dm @@ -44,10 +44,10 @@ /obj/item/weapon/spell/aura/New() ..() set_light(7, 4, l_color = glow_color) - processing_objects |= src + START_PROCESSING(SSobj, src) /obj/item/weapon/spell/aura/Destroy() - processing_objects -= src + STOP_PROCESSING(SSobj, src) ..() /obj/item/weapon/spell/aura/process() @@ -120,7 +120,7 @@ for(var/mob/living/carbon/human/H in nearby_mobs) //Heal our apprentices if(H.mind && technomancers.is_antagonist(H.mind)) mobs_to_heal |= H - for(var/mob/living/simple_animal/hostile/SAH in nearby_mobs) //Heal our controlled mobs + for(var/mob/living/simple_mob/hostile/SAH in nearby_mobs) //Heal our controlled mobs if(owner in SAH.friends) mobs_to_heal |= SAH else diff --git a/code/game/gamemodes/technomancer/spells/audible_deception.dm b/code/game/gamemodes/technomancer/spells/audible_deception.dm index 9e82c46ad8..4b4edc261b 100644 --- a/code/game/gamemodes/technomancer/spells/audible_deception.dm +++ b/code/game/gamemodes/technomancer/spells/audible_deception.dm @@ -31,14 +31,14 @@ "Shotgun Pumping" = 'sound/weapons/shotgunpump.ogg', "Flash" = 'sound/weapons/flash.ogg', "Bite" = 'sound/weapons/bite.ogg', - "Gun Firing" = 'sound/weapons/gunshot.ogg', - "Desert Eagle Firing" = 'sound/weapons/deagle.ogg', - "Rifle Firing" = 'sound/weapons/rifleshot.ogg', - "Sniper Rifle Firing" = 'sound/weapons/svd_shot.ogg', - "AT Rifle Firing" = 'sound/weapons/sniper.ogg', - "Shotgun Firing" = 'sound/weapons/shotgun.ogg', - "Handgun Firing" = 'sound/weapons/gunshot3.ogg', - "Machinegun Firing" = 'sound/weapons/machinegun.ogg', + "Gun Firing" = 'sound/weapons/Gunshot1.ogg', + "Desert Eagle Firing" = 'sound/weapons/Gunshot_deagle.ogg', + "Rifle Firing" = 'sound/weapons/Gunshot_generic_rifle.ogg', + "Sniper Rifle Firing" = 'sound/weapons/Gunshot_sniper.ogg', + "AT Rifle Firing" = 'sound/weapons/Gunshot_cannon.ogg', + "Shotgun Firing" = 'sound/weapons/Gunshot_shotgun.ogg', + "Handgun Firing" = 'sound/weapons/Gunshot2.ogg', + "Machinegun Firing" = 'sound/weapons/Gunshot_machinegun.ogg', "Rocket Launcher Firing"= 'sound/weapons/rpg.ogg', "Taser Firing" = 'sound/weapons/Taser.ogg', "Laser Gun Firing" = 'sound/weapons/laser.ogg', @@ -92,4 +92,4 @@ M.Paralyse(4) else M.make_jittery(50) - M << "HONK" \ No newline at end of file + M << "HONK" diff --git a/code/game/gamemodes/technomancer/spells/aura/aura.dm b/code/game/gamemodes/technomancer/spells/aura/aura.dm index f3c7c93876..be986bb7ee 100644 --- a/code/game/gamemodes/technomancer/spells/aura/aura.dm +++ b/code/game/gamemodes/technomancer/spells/aura/aura.dm @@ -9,11 +9,11 @@ /obj/item/weapon/spell/aura/New() ..() set_light(calculate_spell_power(7), calculate_spell_power(4), l_color = glow_color) - processing_objects |= src + START_PROCESSING(SSobj, src) log_and_message_admins("has started casting [src].") /obj/item/weapon/spell/aura/Destroy() - processing_objects -= src + STOP_PROCESSING(SSobj, src) log_and_message_admins("has stopped maintaining [src].") return ..() diff --git a/code/game/gamemodes/technomancer/spells/control.dm b/code/game/gamemodes/technomancer/spells/control.dm index e76e63490c..b41823dc54 100644 --- a/code/game/gamemodes/technomancer/spells/control.dm +++ b/code/game/gamemodes/technomancer/spells/control.dm @@ -21,91 +21,68 @@ aspect = ASPECT_BIOMED //Not sure if this should be something else. var/image/control_overlay = null var/list/controlled_mobs = list() - var/list/allowed_mobs = list( - /mob/living/bot, - /mob/living/simple_animal/cat, - /mob/living/simple_animal/chick, - /mob/living/simple_animal/chicken, - /mob/living/simple_animal/corgi, - /mob/living/simple_animal/cow, - /mob/living/simple_animal/crab, - /mob/living/simple_animal/lizard, - /mob/living/simple_animal/mouse, - /mob/living/simple_animal/parrot, - /mob/living/simple_animal/slime, -// /mob/living/simple_animal/adultslime, - /mob/living/simple_animal/tindalos, - /mob/living/simple_animal/yithian, - /mob/living/simple_animal/hostile/scarybat, - /mob/living/simple_animal/hostile/viscerator, - /mob/living/simple_animal/hostile/malf_drone, - /mob/living/simple_animal/hostile/giant_spider, - /mob/living/simple_animal/hostile/hivebot, - /mob/living/simple_animal/retaliate/diyaab, //Doubt these will get used but might as well, - /mob/living/simple_animal/hostile/savik, - /mob/living/simple_animal/hostile/shantak - ) + var/allowed_mob_classes = MOB_CLASS_ANIMAL|MOB_CLASS_SYNTHETIC //This unfortunately is gonna be rather messy due to the various mobtypes involved. /obj/item/weapon/spell/control/proc/select(var/mob/living/L) - if(!(is_type_in_list(L, allowed_mobs))) - return 0 + if(!(L.mob_class & allowed_mob_classes)) + return FALSE - if(istype(L, /mob/living/simple_animal)) - var/mob/living/simple_animal/SA = L - SA.ai_inactive = 1 - SA.friends |= src.owner - SA.stance = STANCE_IDLE + if(!L.has_AI()) + return FALSE - L.overlays |= control_overlay + var/datum/ai_holder/AI = L.ai_holder + AI.hostile = FALSE // The Technomancer chooses the target, not the AI. + AI.retaliate = TRUE + AI.wander = FALSE + AI.forget_everything() + + if(istype(L, /mob/living/simple_mob)) + var/mob/living/simple_mob/SM = L + SM.friends |= src.owner + + L.add_overlay(control_overlay, TRUE) controlled_mobs |= L /obj/item/weapon/spell/control/proc/deselect(var/mob/living/L) if(!(L in controlled_mobs)) - return 0 + return FALSE - if(istype(L, /mob/living/simple_animal)) - var/mob/living/simple_animal/SA = L - SA.ai_inactive = 1 - if(istype(SA, /mob/living/simple_animal/hostile)) - var/mob/living/simple_animal/hostile/SAH = SA - SAH.friends.Remove(owner) + if(L.has_AI()) + var/datum/ai_holder/AI = L.ai_holder + AI.hostile = initial(AI.hostile) + AI.retaliate = initial(AI.retaliate) + AI.wander = initial(AI.wander) + AI.forget_everything() - L.overlays.Remove(control_overlay) + if(istype(L, /mob/living/simple_mob)) + var/mob/living/simple_mob/SM = L + SM.friends -= owner + + L.cut_overlay(control_overlay, TRUE) controlled_mobs.Remove(L) /obj/item/weapon/spell/control/proc/move_all(turf/T) - for(var/mob/living/living in controlled_mobs) - if(living.stat) - deselect(living) + for(var/mob/living/L in controlled_mobs) + if(!L.has_AI() || L.stat) + deselect(L) continue - if(istype(living, /mob/living/simple_animal)) - var/mob/living/simple_animal/SA = living - SA.target_mob = null - SA.stance = STANCE_IDLE - walk_towards(SA,T,SA.speed) - else - walk_towards(living,T,5) + L.ai_holder.give_destination(T, 0, TRUE) /obj/item/weapon/spell/control/proc/attack_all(mob/target) for(var/mob/living/L in controlled_mobs) - if(L.stat) + if(!L.has_AI() || L.stat) deselect(L) continue - if(istype(L, /mob/living/simple_animal/hostile)) - var/mob/living/simple_animal/hostile/SAH - SAH.target_mob = target - else if(istype(L, /mob/living/bot)) - var/mob/living/bot/B = L - B.UnarmedAttack(L) + L.ai_holder.give_target(target) -/obj/item/weapon/spell/control/New() +/obj/item/weapon/spell/control/Initialize() control_overlay = image('icons/obj/spells.dmi',"controlled") - ..() + return ..() /obj/item/weapon/spell/control/Destroy() - for(var/mob/living/simple_animal/hostile/SM in controlled_mobs) - deselect(SM) + for(var/mob/living/L in controlled_mobs) + deselect(L) controlled_mobs = list() return ..() @@ -127,11 +104,14 @@ trying to use it on yourself, perhaps you're an exception? Regardless, nothing happens." return 0 - if(is_type_in_list(L, allowed_mobs)) + if(L.mob_class & allowed_mob_classes) if(!(L in controlled_mobs)) //Selecting if(L.client) user << "\The [L] seems to resist you!" return 0 + if(!L.has_AI()) + to_chat(user, span("warning", "\The [L] seems too dim for this to work on them.")) + return FALSE if(pay_energy(500)) select(L) user << "\The [L] is now under your (limited) control." diff --git a/code/game/gamemodes/technomancer/spells/energy_siphon.dm b/code/game/gamemodes/technomancer/spells/energy_siphon.dm index 345b632282..aab144d907 100644 --- a/code/game/gamemodes/technomancer/spells/energy_siphon.dm +++ b/code/game/gamemodes/technomancer/spells/energy_siphon.dm @@ -22,11 +22,11 @@ /obj/item/weapon/spell/energy_siphon/New() ..() - processing_objects |= src + START_PROCESSING(SSobj, src) /obj/item/weapon/spell/energy_siphon/Destroy() stop_siphoning() - processing_objects -= src + STOP_PROCESSING(SSobj, src) return ..() /obj/item/weapon/spell/energy_siphon/process() @@ -165,14 +165,15 @@ while(i) var/obj/item/projectile/beam/lightning/energy_siphon/lightning = new(get_turf(source)) lightning.firer = user - lightning.launch(user) + lightning.old_style_target(user) + lightning.fire() i-- sleep(3) /obj/item/projectile/beam/lightning/energy_siphon name = "energy stream" icon_state = "lightning" - kill_count = 6 // Backup plan in-case the effect somehow misses the Technomancer. + range = 6 // Backup plan in-case the effect somehow misses the Technomancer. power = 5 // This fires really fast, so this may add up if someone keeps standing in the beam. penetrating = 5 diff --git a/code/game/gamemodes/technomancer/spells/gambit.dm b/code/game/gamemodes/technomancer/spells/gambit.dm index e0116073dc..5e03a8ca19 100644 --- a/code/game/gamemodes/technomancer/spells/gambit.dm +++ b/code/game/gamemodes/technomancer/spells/gambit.dm @@ -75,9 +75,9 @@ for(var/mob/living/L in view(owner)) // Spiders, carp... bears. - if(istype(L, /mob/living/simple_animal)) - var/mob/living/simple_animal/SM = L - if(!is_ally(SM) && SM.hostile) + if(istype(L, /mob/living/simple_mob)) + var/mob/living/simple_mob/SM = L + if(!is_ally(SM) && SM.has_AI() && SM.ai_holder.hostile) hostile_mobs++ if(SM.summoned || SM.supernatural) // Our creations might be trying to kill us. potential_spells |= /obj/item/weapon/spell/abjuration diff --git a/code/game/gamemodes/technomancer/spells/illusion.dm b/code/game/gamemodes/technomancer/spells/illusion.dm index 418df75539..8dccc2b9ec 100644 --- a/code/game/gamemodes/technomancer/spells/illusion.dm +++ b/code/game/gamemodes/technomancer/spells/illusion.dm @@ -14,7 +14,7 @@ aspect = ASPECT_LIGHT cast_methods = CAST_RANGED | CAST_USE var/atom/movable/copied = null - var/mob/living/simple_animal/illusion/illusion = null + var/mob/living/simple_mob/illusion/illusion = null /obj/item/weapon/spell/illusion/on_ranged_cast(atom/hit_atom, mob/user) if(istype(hit_atom, /atom/movable)) @@ -33,17 +33,13 @@ if(pay_energy(500)) illusion = new(T) illusion.copy_appearance(copied) - if(ishuman(copied)) - var/mob/living/carbon/human/H = copied - // This is to try to have the illusion move at the same rate the real mob world. - illusion.step_delay = max(H.movement_delay() + 4, 3) user << "An illusion of \the [copied] is made on \the [T]." user << 'sound/effects/pop.ogg' return 1 else if(pay_energy(100)) - spawn(1) - illusion.walk_loop(T) + var/datum/ai_holder/AI = illusion.ai_holder + AI.give_destination(T) /obj/item/weapon/spell/illusion/on_use_cast(mob/user) if(illusion) @@ -76,116 +72,3 @@ temp_image.transform = M // temp_image.pixel_y = 8 src.overlays.Add(temp_image) - - -/mob/living/simple_animal/illusion - name = "illusion" // gets overwritten - desc = "If you can read me, the game broke. Please report this to a coder." - resistance = 1000 // holograms are tough - wander = 0 - response_help = "pushes a hand through" - response_disarm = "tried to disarm" - response_harm = "tried to punch" - var/atom/movable/copying = null - universal_speak = 1 - var/realistic = 0 - var/list/path = list() //Used for AStar pathfinding. - var/walking = 0 - var/step_delay = 10 - -/mob/living/simple_animal/illusion/update_icon() // We don't want the appearance changing AT ALL unless by copy_appearance(). - return - -/mob/living/simple_animal/illusion/proc/copy_appearance(var/atom/movable/thing_to_copy) - if(!thing_to_copy) - return 0 - name = thing_to_copy.name - desc = thing_to_copy.desc - gender = thing_to_copy.gender - appearance = thing_to_copy.appearance - copying = thing_to_copy - return 1 - -// We use special movement code for illusions, because BYOND's default pathfinding will use diagonal movement if it results -// in the shortest path. As players are incapable of moving in diagonals, we must do this or else illusions will not be convincing. -/mob/living/simple_animal/illusion/proc/calculate_path(var/turf/targeted_loc) - if(!path.len || !path) - spawn(0) - path = AStar(loc, targeted_loc, /turf/proc/CardinalTurfs, /turf/proc/Distance, 0, 10, id = null) - if(!path) - path = list() - return - -/mob/living/simple_animal/illusion/proc/walk_path(var/turf/targeted_loc) - if(path && path.len) - step_to(src, path[1]) - path -= path[1] - return - else - if(targeted_loc) - calculate_path(targeted_loc) - -/mob/living/simple_animal/illusion/proc/walk_loop(var/turf/targeted_loc) - if(walking) //Already busy moving somewhere else. - return 0 - walking = 1 - calculate_path(targeted_loc) - if(!targeted_loc) - walking = 0 - return 0 - if(path.len == 0) - calculate_path(targeted_loc) - while(loc != targeted_loc) - walk_path(targeted_loc) - sleep(step_delay) - walking = 0 - return 1 - -// Because we can't perfectly duplicate some examine() output, we directly examine the AM it is copying. It's messy but -// this is to prevent easy checks from the opposing force. -/mob/living/simple_animal/illusion/examine(mob/user) - if(copying) - copying.examine(user) - return - ..() - -/mob/living/simple_animal/illusion/bullet_act(var/obj/item/projectile/P) - if(!P) - return - - if(realistic) - return ..() - - return PROJECTILE_FORCE_MISS - -/mob/living/simple_animal/illusion/attack_hand(mob/living/carbon/human/M) - if(!realistic) - playsound(loc, 'sound/weapons/punchmiss.ogg', 25, 1, -1) - visible_message("[M]'s hand goes through \the [src]!") - return - else - switch(M.a_intent) - - if(I_HELP) - var/datum/gender/T = gender_datums[src.get_visible_gender()] - M.visible_message("[M] hugs [src] to make [T.him] feel better!", \ - "You hug [src] to make [T.him] feel better!") // slightly redundant as at the moment most mobs still use the normal gender var, but it works and future-proofs it - playsound(src.loc, 'sound/weapons/thudswoosh.ogg', 50, 1, -1) - - if(I_DISARM) - playsound(loc, 'sound/weapons/punchmiss.ogg', 25, 1, -1) - visible_message("[M] attempted to disarm [src]!") - M.do_attack_animation(src) - - if(I_GRAB) - ..() - - if(I_HURT) - adjustBruteLoss(harm_intent_damage) - M.visible_message("[M] [response_harm] \the [src]") - M.do_attack_animation(src) - - return - -/mob/living/simple_animal/illusion/ex_act() - return diff --git a/code/game/gamemodes/technomancer/spells/modifier/modifier.dm b/code/game/gamemodes/technomancer/spells/modifier/modifier.dm index a8b9306945..3ea278286e 100644 --- a/code/game/gamemodes/technomancer/spells/modifier/modifier.dm +++ b/code/game/gamemodes/technomancer/spells/modifier/modifier.dm @@ -15,11 +15,13 @@ /obj/item/weapon/spell/modifier/on_melee_cast(atom/hit_atom, mob/user) if(istype(hit_atom, /mob/living)) - on_add_modifier(hit_atom) + return on_add_modifier(hit_atom) + return FALSE /obj/item/weapon/spell/modifier/on_ranged_cast(atom/hit_atom, mob/user) if(istype(hit_atom, /mob/living)) - on_add_modifier(hit_atom) + return on_add_modifier(hit_atom) + return FALSE /obj/item/weapon/spell/modifier/proc/on_add_modifier(var/mob/living/L) @@ -32,6 +34,7 @@ MT.spell_power = calculate_spell_power(1) log_and_message_admins("has casted [src] on [L].") qdel(src) + return TRUE // Technomancer specific subtype which keeps track of spell power and gets targeted specificially by Dispel. /datum/modifier/technomancer diff --git a/code/game/gamemodes/technomancer/spells/phase_shift.dm b/code/game/gamemodes/technomancer/spells/phase_shift.dm index 336dbc4314..d73e45774c 100644 --- a/code/game/gamemodes/technomancer/spells/phase_shift.dm +++ b/code/game/gamemodes/technomancer/spells/phase_shift.dm @@ -31,12 +31,12 @@ /obj/effect/phase_shift/New() ..() set_light(3, 5, l_color = "#FA58F4") - processing_objects |= src + START_PROCESSING(SSobj, src) /obj/effect/phase_shift/Destroy() for(var/atom/movable/AM in contents) //Eject everything out. AM.forceMove(get_turf(src)) - processing_objects -= src + STOP_PROCESSING(SSobj, src) return ..() /obj/effect/phase_shift/process() diff --git a/code/game/gamemodes/technomancer/spells/projectile/beam.dm b/code/game/gamemodes/technomancer/spells/projectile/beam.dm index 6eb5e03be3..b96f061df8 100644 --- a/code/game/gamemodes/technomancer/spells/projectile/beam.dm +++ b/code/game/gamemodes/technomancer/spells/projectile/beam.dm @@ -22,6 +22,6 @@ /obj/item/projectile/beam/blue damage = 30 - muzzle_type = /obj/effect/projectile/laser_blue/muzzle - tracer_type = /obj/effect/projectile/laser_blue/tracer - impact_type = /obj/effect/projectile/laser_blue/impact + muzzle_type = /obj/effect/projectile/muzzle/laser_blue + tracer_type = /obj/effect/projectile/tracer/laser_blue + impact_type = /obj/effect/projectile/impact/laser_blue diff --git a/code/game/gamemodes/technomancer/spells/projectile/chain_lightning.dm b/code/game/gamemodes/technomancer/spells/projectile/chain_lightning.dm index 5614d04a88..2d9a59f144 100644 --- a/code/game/gamemodes/technomancer/spells/projectile/chain_lightning.dm +++ b/code/game/gamemodes/technomancer/spells/projectile/chain_lightning.dm @@ -26,9 +26,9 @@ nodamage = 1 damage_type = HALLOSS - muzzle_type = /obj/effect/projectile/lightning/muzzle - tracer_type = /obj/effect/projectile/lightning/tracer - impact_type = /obj/effect/projectile/lightning/impact + muzzle_type = /obj/effect/projectile/muzzle/lightning + tracer_type = /obj/effect/projectile/tracer/lightning + impact_type = /obj/effect/projectile/impact/lightning var/bounces = 3 //How many times it 'chains'. Note that the first hit is not counted as it counts /bounces/. var/list/hit_mobs = list() //Mobs which were already hit. diff --git a/code/game/gamemodes/technomancer/spells/projectile/lightning.dm b/code/game/gamemodes/technomancer/spells/projectile/lightning.dm index e996416216..57e42cf863 100644 --- a/code/game/gamemodes/technomancer/spells/projectile/lightning.dm +++ b/code/game/gamemodes/technomancer/spells/projectile/lightning.dm @@ -26,9 +26,9 @@ nodamage = 1 damage_type = HALLOSS - muzzle_type = /obj/effect/projectile/lightning/muzzle - tracer_type = /obj/effect/projectile/lightning/tracer - impact_type = /obj/effect/projectile/lightning/impact + muzzle_type = /obj/effect/projectile/muzzle/lightning + tracer_type = /obj/effect/projectile/tracer/lightning + impact_type = /obj/effect/projectile/impact/lightning var/power = 60 //How hard it will hit for with electrocute_act(). diff --git a/code/game/gamemodes/technomancer/spells/projectile/projectile.dm b/code/game/gamemodes/technomancer/spells/projectile/projectile.dm index 544213f957..a52bb2e584 100644 --- a/code/game/gamemodes/technomancer/spells/projectile/projectile.dm +++ b/code/game/gamemodes/technomancer/spells/projectile/projectile.dm @@ -12,7 +12,8 @@ /obj/item/weapon/spell/projectile/on_ranged_cast(atom/hit_atom, mob/living/user) if(set_up(hit_atom, user)) var/obj/item/projectile/new_projectile = make_projectile(spell_projectile, user) - new_projectile.launch(hit_atom) + new_projectile.old_style_target(hit_atom) + new_projectile.fire() log_and_message_admins("has casted [src] at \the [hit_atom].") if(fire_sound) playsound(get_turf(src), fire_sound, 75, 1) diff --git a/code/game/gamemodes/technomancer/spells/radiance.dm b/code/game/gamemodes/technomancer/spells/radiance.dm index fe7d83f713..d86428354e 100644 --- a/code/game/gamemodes/technomancer/spells/radiance.dm +++ b/code/game/gamemodes/technomancer/spells/radiance.dm @@ -19,11 +19,11 @@ /obj/item/weapon/spell/radiance/New() ..() set_light(7, 4, l_color = "#D9D900") - processing_objects |= src + START_PROCESSING(SSobj, src) log_and_message_admins("has casted [src].") /obj/item/weapon/spell/radiance/Destroy() - processing_objects -= src + STOP_PROCESSING(SSobj, src) log_and_message_admins("has stopped maintaining [src].") return ..() diff --git a/code/game/gamemodes/technomancer/spells/resurrect.dm b/code/game/gamemodes/technomancer/spells/resurrect.dm index 90a352c95f..2663a132a9 100644 --- a/code/game/gamemodes/technomancer/spells/resurrect.dm +++ b/code/game/gamemodes/technomancer/spells/resurrect.dm @@ -30,13 +30,13 @@ this point." return 0 user << "You stab \the [L] with a hidden integrated hypo, attempting to bring them back..." - if(istype(L, /mob/living/simple_animal)) - var/mob/living/simple_animal/SM = L + if(istype(L, /mob/living/simple_mob)) + var/mob/living/simple_mob/SM = L SM.health = SM.getMaxHealth() / 3 SM.stat = CONSCIOUS dead_mob_list -= SM living_mob_list += SM - SM.icon_state = SM.icon_living + SM.update_icon() adjust_instability(15) else if(ishuman(L)) var/mob/living/carbon/human/H = L diff --git a/code/game/gamemodes/technomancer/spells/spawner/pulsar.dm b/code/game/gamemodes/technomancer/spells/spawner/pulsar.dm index 5641df2f87..6dcd2cf4b2 100644 --- a/code/game/gamemodes/technomancer/spells/spawner/pulsar.dm +++ b/code/game/gamemodes/technomancer/spells/spawner/pulsar.dm @@ -11,7 +11,7 @@ icon_state = "radiance" cast_methods = CAST_RANGED | CAST_THROW aspect = ASPECT_EMP - spawner_type = /obj/effect/temporary_effect/pulsar + spawner_type = /obj/effect/temporary_effect/pulse/pulsar /obj/item/weapon/spell/spawner/pulsar/New() ..() @@ -25,7 +25,29 @@ /obj/item/weapon/spell/spawner/pulsar/on_throw_cast(atom/hit_atom, mob/user) empulse(hit_atom, 1, 1, 1, 1, log=1) -/obj/effect/temporary_effect/pulsar +// Does something every so often. Deletes itself when pulses_remaining hits zero. +/obj/effect/temporary_effect/pulse + var/pulses_remaining = 3 + var/pulse_delay = 2 SECONDS + +/obj/effect/temporary_effect/pulse/Initialize() + spawn(0) + pulse_loop() + return ..() + +/obj/effect/temporary_effect/pulse/proc/pulse_loop() + while(pulses_remaining) + sleep(pulse_delay) + on_pulse() + pulses_remaining-- + qdel(src) + +// Override for specific effects. +/obj/effect/temporary_effect/pulse/proc/on_pulse() + + + +/obj/effect/temporary_effect/pulse/pulsar name = "pulsar" desc = "Not a real pulsar, but still emits loads of EMP." icon_state = "shield2" @@ -33,17 +55,14 @@ light_range = 4 light_power = 5 light_color = "#2ECCFA" - var/pulses_remaining = 3 + pulses_remaining = 3 + +/obj/effect/temporary_effect/pulse/pulsar/on_pulse() + empulse(src, 1, 1, 2, 2, log = 1) + + + + -/obj/effect/temporary_effect/pulsar/New() - ..() - spawn(0) - pulse_loop() -/obj/effect/temporary_effect/pulsar/proc/pulse_loop() - while(pulses_remaining) - sleep(2 SECONDS) - empulse(src, 1, 1, 2, 2, log = 1) - pulses_remaining-- - qdel(src) diff --git a/code/game/gamemodes/technomancer/spells/summon/summon_creature.dm b/code/game/gamemodes/technomancer/spells/summon/summon_creature.dm index 9a004d3ea3..c29d9827ec 100644 --- a/code/game/gamemodes/technomancer/spells/summon/summon_creature.dm +++ b/code/game/gamemodes/technomancer/spells/summon/summon_creature.dm @@ -16,34 +16,32 @@ desc = "Chitter chitter." summoned_mob_type = null summon_options = list( - "Mouse" = /mob/living/simple_animal/mouse, - "Lizard" = /mob/living/simple_animal/lizard, - "Chicken" = /mob/living/simple_animal/chicken, - "Chick" = /mob/living/simple_animal/chick, - "Crab" = /mob/living/simple_animal/crab, - "Parrot" = /mob/living/simple_animal/parrot, - "Goat" = /mob/living/simple_animal/retaliate/goat, - "Cat" = /mob/living/simple_animal/cat, - "Kitten" = /mob/living/simple_animal/cat/kitten, - "Corgi" = /mob/living/simple_animal/corgi, - "Corgi Pup" = /mob/living/simple_animal/corgi/puppy, - "BAT" = /mob/living/simple_animal/hostile/scarybat, - "SPIDER" = /mob/living/simple_animal/hostile/giant_spider, - "SPIDER HUNTER" = /mob/living/simple_animal/hostile/giant_spider/hunter, - "SPIDER NURSE" = /mob/living/simple_animal/hostile/giant_spider/nurse, - "CARP" = /mob/living/simple_animal/hostile/carp, - "BEAR" = /mob/living/simple_animal/hostile/bear - ) // Vorestation edits to add vore versions. + "Mouse" = /mob/living/simple_mob/animal/passive/mouse, + "Lizard" = /mob/living/simple_mob/animal/passive/lizard, + "Chicken" = /mob/living/simple_mob/animal/passive/chicken, + "Chick" = /mob/living/simple_mob/animal/passive/chick, + "Crab" = /mob/living/simple_mob/animal/passive/crab, + "Parrot" = /mob/living/simple_mob/animal/passive/bird/parrot, + "Goat" = /mob/living/simple_mob/animal/goat, + "Cat" = /mob/living/simple_mob/animal/passive/cat, + "Kitten" = /mob/living/simple_mob/animal/passive/cat/kitten, + "Corgi" = /mob/living/simple_mob/animal/passive/dog/corgi, + "Corgi Pup" = /mob/living/simple_mob/animal/passive/dog/corgi/puppy, + "BAT" = /mob/living/simple_mob/animal/space/bats, + "SPIDER" = /mob/living/simple_mob/animal/giant_spider, + "SPIDER HUNTER" = /mob/living/simple_mob/animal/giant_spider/hunter, + "SPIDER NURSE" = /mob/living/simple_mob/animal/giant_spider/nurse, + "CARP" = /mob/living/simple_mob/animal/space/carp, + "BEAR" = /mob/living/simple_mob/animal/space/bear + ) cooldown = 30 instability_cost = 10 energy_cost = 1000 -/obj/item/weapon/spell/summon/summon_creature/on_summon(var/mob/living/simple_animal/summoned) +/obj/item/weapon/spell/summon/summon_creature/on_summon(var/mob/living/simple_mob/summoned) if(check_for_scepter()) // summoned.faction = "technomancer" - if(istype(summoned, /mob/living/simple_animal/hostile)) - var/mob/living/simple_animal/SA = summoned - SA.friends.Add(owner) + summoned.friends += owner // Makes their new pal big and strong, if they have spell power. summoned.maxHealth = calculate_spell_power(summoned.maxHealth) @@ -51,15 +49,12 @@ summoned.melee_damage_lower = calculate_spell_power(summoned.melee_damage_lower) summoned.melee_damage_upper = calculate_spell_power(summoned.melee_damage_upper) // This makes the summon slower, so the crew has a chance to flee from massive monsters. - summoned.move_to_delay = calculate_spell_power(round(summoned.move_to_delay)) + summoned.movement_cooldown = calculate_spell_power(round(summoned.movement_cooldown)) var/new_size = calculate_spell_power(1) if(new_size != 1) - var/matrix/M = matrix() - M.Scale(new_size) - M.Translate(0, 16*(new_size-1)) - summoned.transform = M + adjust_scale(new_size) // Now we hurt their new pal, because being forcefully abducted by teleportation can't be healthy. - summoned.health = round(summoned.getMaxHealth() * 0.7) \ No newline at end of file + summoned.adjustBruteLoss(summoned.getMaxHealth() * 0.3) // Lose 30% of max health on arrival (but could be healed back up). \ No newline at end of file diff --git a/code/game/gamemodes/technomancer/spells/summon/summon_ward.dm b/code/game/gamemodes/technomancer/spells/summon/summon_ward.dm index c6e5a2804d..9500044581 100644 --- a/code/game/gamemodes/technomancer/spells/summon/summon_ward.dm +++ b/code/game/gamemodes/technomancer/spells/summon/summon_ward.dm @@ -1,9 +1,8 @@ /datum/technomancer/spell/summon_ward - name = "Summon Ward" - desc = "Teleports a prefabricated 'ward' drone to the target location, which will alert you and your allies when it sees entities \ - moving around it, or when it is attacked. They can see for up to five meters." - enhancement_desc = "Wards can detect invisibile entities, and are more specific in relaying information about what it sees. \ - Invisible entities that are spotted by it will be decloaked." + name = "Summon Monitor Ward" + desc = "Teleports a prefabricated 'ward' drone to the target location, which will alert you when it sees entities \ + moving around it, or when it is attacked. They can see for up to five meters. It can also see invisible entities, and \ + forcefully decloak them if close enough." cost = 25 obj_path = /obj/item/weapon/spell/summon/summon_ward category = UTILITY_SPELLS @@ -12,116 +11,10 @@ name = "summon ward" desc = "Finally, someone you can depend on to watch your back." cast_methods = CAST_RANGED - summoned_mob_type = /mob/living/simple_animal/ward + summoned_mob_type = /mob/living/simple_mob/mechanical/ward/monitor cooldown = 10 instability_cost = 5 energy_cost = 500 -/obj/item/weapon/spell/summon/summon_ward/on_summon(var/mob/living/simple_animal/ward/ward) - ward.creator = owner - if(check_for_scepter()) - ward.true_sight = 1 - ward.see_invisible = SEE_INVISIBLE_LEVEL_TWO - -/mob/living/simple_animal/ward - name = "ward" - desc = "It's a little flying drone that seems to be watching you..." - icon = 'icons/mob/critter.dmi' - icon_state = "ward" - resistance = 5 - wander = 0 - response_help = "pets the" - response_disarm = "swats away" - response_harm = "punches" - min_oxy = 0 - max_oxy = 0 - min_tox = 0 - max_tox = 0 - min_co2 = 0 - max_co2 = 0 - min_n2 = 0 - max_n2 = 0 - minbodytemp = 0 - maxbodytemp = 0 - unsuitable_atoms_damage = 0 - heat_damage_per_tick = 0 - cold_damage_per_tick = 0 - - var/true_sight = 0 // If true, detects more than what the Technomancer normally can't. - var/mob/living/carbon/human/creator = null - var/list/seen_mobs = list() - -/mob/living/simple_animal/ward/death() - if(creator) - creator << "Your ward inside [get_area(src)] was killed!" - ..() - qdel(src) - -/mob/living/simple_animal/ward/proc/expire() - if(creator && src) - creator << "Your ward inside [get_area(src)] expired." - qdel(src) - -/mob/living/simple_animal/ward/Life() - ..() - detect_mobs() - update_icon() - -/mob/living/simple_animal/ward/proc/detect_mobs() - var/list/things_in_sight = view(5,src) - var/list/newly_seen_mobs = list() - for(var/mob/living/L in things_in_sight) - if(L == creator) // I really wish is_ally() was usable here. - continue - - if(istype(L, /mob/living/simple_animal/ward)) - continue - - if(istype(L, /mob/living/simple_animal)) - var/mob/living/simple_animal/SA = L - if(creator in SA.friends) - continue - - if(!true_sight) - var/turf/T = get_turf(L) - var/light_amount = T.get_lumcount() - if(light_amount <= 0.5) - continue // Too dark to see. - - if(L.alpha <= 127) - continue // Too transparent, as a mercy to camo lings. - - else - L.break_cloak() - - // Warn the Technomancer when it sees a new mob. - if(!(L in seen_mobs)) - seen_mobs.Add(L) - newly_seen_mobs.Add(L) - if(creator) - if(true_sight) - creator << "Your ward at [get_area(src)] detected [english_list(newly_seen_mobs)]." - else - creator << "Your ward at [get_area(src)] detected something." - - // Now get rid of old mobs that left vision. - for(var/mob/living/L in seen_mobs) - if(!(L in things_in_sight)) - seen_mobs.Remove(L) - - -/mob/living/simple_animal/ward/update_icon() - if(seen_mobs.len) - icon_state = "ward_spotted" - set_light(3, 3, l_color = "FF0000") - else - icon_state = "ward" - set_light(3, 3, l_color = "00FF00") - if(true_sight) - overlays.Cut() - var/image/I = image('icons/mob/critter.dmi',"ward_truesight") - overlays.Add(I) - -/mob/living/simple_animal/ward/invisible_detect - true_sight = 1 - see_invisible = SEE_INVISIBLE_LEVEL_TWO +/obj/item/weapon/spell/summon/summon_ward/on_summon(var/mob/living/simple_mob/mechanical/ward/monitor/my_ward) + my_ward.owner = owner diff --git a/code/game/jobs/job/civilian_chaplain.dm b/code/game/jobs/job/civilian_chaplain.dm index e24e462fdf..65943380bc 100644 --- a/code/game/jobs/job/civilian_chaplain.dm +++ b/code/game/jobs/job/civilian_chaplain.dm @@ -37,31 +37,33 @@ if("unitarianism") B.name = "The Talmudic Quran" if("christianity") - B.name = pick("The Holy Bible","The Dead Sea Scrolls") - if("Judaism") + B.name = "The Holy Bible" + if("judaism") B.name = "The Torah" - if("satanism") - B.name = "The Satanic Bible" - if("cthulhu") - B.name = "The Necronomicon" if("islam") B.name = "Quran" - if("scientology") - B.name = pick("The Biography of L. Ron Hubbard","Dianetics") - if("chaos") - B.name = "The Book of Lorgar" - if("imperium") - B.name = "Uplifting Primer" - if("toolboxia") - B.name = "Toolbox Manifesto" - if("homosexuality") - B.name = "Guys Gone Wild" - if("science") - B.name = pick("Principle of Relativity", "Quantum Enigma: Physics Encounters Consciousness", "Programming the Universe", "Quantum Physics and Theology", "String Theory for Dummies", "How To: Build Your Own Warp Drive", "The Mysteries of Bluespace", "Playing God: Collector's Edition") - if("capitalism") - B.name = "Wealth of Nations" - if("communism") - B.name = "The Communist Manifesto" + if("buddhism") + B.name = "Tripitakas" + if("hinduism") + B.name = pick("The Srimad Bhagvatam", "The Four Vedas", "The Shiv Mahapuran", "Devi Mahatmya") + if("neopaganism") + B.name = "Neopagan Hymnbook" + if("phact shintoism") + B.name = "The Kojiki" + if("kishari national faith") + B.name = "The Scriptures of Kishar" + if("pleromanism") + B.name = "The Revised Talmudic Quran" + if("spectralism") + B.name = "The Book of the Spark" + if("hauler") + B.name = "Histories of Captaincy" + if("nock") + B.name = "The Book of the First" + if("singulitarian worship") + B.name = "The Book of the Precursors" + if("starlit path of angessa martei") + B.name = "Quotations of Exalted Martei" else B.name = "The Holy Book of [new_religion]" feedback_set_details("religion_name","[new_religion]") diff --git a/code/game/machinery/OpTable.dm b/code/game/machinery/OpTable.dm index ccf3f69529..f7a454a7de 100644 --- a/code/game/machinery/OpTable.dm +++ b/code/game/machinery/OpTable.dm @@ -48,13 +48,10 @@ qdel(src) return -/obj/machinery/optable/CanPass(atom/movable/mover, turf/target, height=0, air_group=0) - if(air_group || (height==0)) return 1 - +/obj/machinery/optable/CanPass(atom/movable/mover, turf/target) if(istype(mover) && mover.checkpass(PASSTABLE)) - return 1 - else - return 0 + return TRUE + return FALSE /obj/machinery/optable/MouseDrop_T(obj/O as obj, mob/user as mob) diff --git a/code/game/machinery/Sleeper.dm b/code/game/machinery/Sleeper.dm index de673cec37..49a4b342ef 100644 --- a/code/game/machinery/Sleeper.dm +++ b/code/game/machinery/Sleeper.dm @@ -181,7 +181,7 @@ RefreshParts() -/obj/machinery/sleeper/initialize() +/obj/machinery/sleeper/Initialize() . = ..() update_icon() diff --git a/code/game/machinery/adv_med.dm b/code/game/machinery/adv_med.dm index 2fb2d48a82..2062f92db4 100644 --- a/code/game/machinery/adv_med.dm +++ b/code/game/machinery/adv_med.dm @@ -49,10 +49,9 @@ if(occupant) to_chat(user, "\The [src] is already occupied!") return - for(var/mob/living/simple_animal/slime/M in range(1, H.affecting)) - if(M.victim == H.affecting) - to_chat(user, "[H.affecting.name] has a slime attached to them, deal with that first.") - return + if(H.affecting.has_buckled_mobs()) + to_chat(user, span("warning", "\The [H.affecting] has other entities attached to it. Remove them first.")) + return var/mob/M = H.affecting if(M.abiotic()) to_chat(user, "Subject cannot have abiotic items on.") @@ -86,10 +85,9 @@ if(O.abiotic()) to_chat(user, "Subject cannot have abiotic items on.") return 0 - for(var/mob/living/simple_animal/slime/M in range(1, O)) - if(M.victim == O) - to_chat(user, "[O] has a slime attached to them, deal with that first.") - return 0 + if(O.has_buckled_mobs()) + to_chat(user, span("warning", "\The [O] has other entities attached to it. Remove them first.")) + return if(O == user) visible_message("[user] climbs into \the [src].") diff --git a/code/game/machinery/airconditioner_vr.dm b/code/game/machinery/airconditioner_vr.dm index 75b93fe90f..0d4f3b550f 100644 --- a/code/game/machinery/airconditioner_vr.dm +++ b/code/game/machinery/airconditioner_vr.dm @@ -45,7 +45,7 @@ disconnect_from_network() turn_off() return - if(I.is_multitool()) + if(istype(I, /obj/item/device/multitool)) var/new_temp = input("Input a new target temperature, in degrees C.","Target Temperature", 20) as num if(!Adjacent(user) || user.incapacitated()) return diff --git a/code/game/machinery/alarm.dm b/code/game/machinery/alarm.dm index 6b4013b820..1ce64f4aed 100644 --- a/code/game/machinery/alarm.dm +++ b/code/game/machinery/alarm.dm @@ -137,7 +137,7 @@ TLV["temperature"] = list(T0C - 26, T0C, T0C + 40, T0C + 66) // K -/obj/machinery/alarm/initialize() +/obj/machinery/alarm/Initialize() . = ..() set_frequency(frequency) if(!master_is_operating()) @@ -848,6 +848,9 @@ FIRE ALARM icon_state = "fire0" switch(seclevel) if("green") set_light(l_range = 2, l_power = 0.25, l_color = "#00ff00") + if("yellow") set_light(l_range = 2, l_power = 0.25, l_color = "#ffff00") + if("violet") set_light(l_range = 2, l_power = 0.25, l_color = "#9933ff") + if("orange") set_light(l_range = 2, l_power = 0.25, l_color = "#ff9900") if("blue") set_light(l_range = 2, l_power = 0.25, l_color = "#1024A9") if("red") set_light(l_range = 4, l_power = 0.9, l_color = "#ff0000") if("delta") set_light(l_range = 4, l_power = 0.9, l_color = "#FF6633") @@ -896,7 +899,7 @@ FIRE ALARM alarm() time = 0 timing = 0 - processing_objects.Remove(src) + STOP_PROCESSING(SSobj, src) updateDialog() last_process = world.timeofday @@ -965,7 +968,7 @@ FIRE ALARM else if(href_list["time"]) timing = text2num(href_list["time"]) last_process = world.timeofday - processing_objects.Add(src) + START_PROCESSING(SSobj, src) else if(href_list["tp"]) var/tp = text2num(href_list["tp"]) time += tp @@ -1003,7 +1006,7 @@ FIRE ALARM seclevel = newlevel update_icon() -/obj/machinery/firealarm/initialize() +/obj/machinery/firealarm/Initialize() . = ..() if(z in using_map.contact_levels) set_security_level(security_level? get_security_level() : "green") diff --git a/code/game/machinery/atmo_control.dm b/code/game/machinery/atmo_control.dm index 59e9670d1f..839470f356 100644 --- a/code/game/machinery/atmo_control.dm +++ b/code/game/machinery/atmo_control.dm @@ -63,7 +63,7 @@ frequency = new_frequency radio_connection = radio_controller.add_object(src, frequency, RADIO_ATMOSIA) -/obj/machinery/air_sensor/initialize() +/obj/machinery/air_sensor/Initialize() . = ..() if(frequency) set_frequency(frequency) @@ -129,7 +129,7 @@ obj/machinery/computer/general_air_control/Destroy() frequency = new_frequency radio_connection = radio_controller.add_object(src, frequency, RADIO_ATMOSIA) -/obj/machinery/computer/general_air_control/initialize() +/obj/machinery/computer/general_air_control/Initialize() . = ..() if(frequency) set_frequency(frequency) diff --git a/code/game/machinery/atmoalter/area_atmos_computer.dm b/code/game/machinery/atmoalter/area_atmos_computer.dm index bd3b390fc8..125b55eb7f 100644 --- a/code/game/machinery/atmoalter/area_atmos_computer.dm +++ b/code/game/machinery/atmoalter/area_atmos_computer.dm @@ -14,11 +14,7 @@ //Simple variable to prevent me from doing attack_hand in both this and the child computer var/zone = "This computer is working on a wireless range, the range is currently limited to " -/obj/machinery/computer/area_atmos/New() - ..() - desc += "[range] meters." - -/obj/machinery/computer/area_atmos/initialize() +/obj/machinery/computer/area_atmos/Initialize() . = ..() scanscrubbers() @@ -72,7 +68,6 @@ [status]
Scan "} - for(var/obj/machinery/portable_atmospherics/powered/scrubber/huge/scrubber in connectedscrubbers) dat += {" @@ -102,9 +97,9 @@ usr.set_machine(src) src.add_fingerprint(usr) + if(href_list["scan"]) scanscrubbers() - else if(href_list["toggle"]) var/obj/machinery/portable_atmospherics/powered/scrubber/huge/scrubber = locate(href_list["scrub"]) @@ -118,24 +113,24 @@ scrubber.on = text2num(href_list["toggle"]) scrubber.update_icon() +/obj/machinery/computer/area_atmos/proc/validscrubber(obj/machinery/portable_atmospherics/powered/scrubber/huge/scrubber as obj) + if(!isobj(scrubber) || get_dist(scrubber.loc, src.loc) > src.range || scrubber.loc.z != src.loc.z) + return FALSE + return TRUE + /obj/machinery/computer/area_atmos/proc/scanscrubbers() - connectedscrubbers.Cut() + connectedscrubbers = new() var/found = 0 for(var/obj/machinery/portable_atmospherics/powered/scrubber/huge/scrubber in range(range, src.loc)) - found = 1 - connectedscrubbers += scrubber + if(istype(scrubber)) + found = 1 + connectedscrubbers += scrubber if(!found) status = "ERROR: No scrubber found!" - src.updateUsrDialog() - -/obj/machinery/computer/area_atmos/proc/validscrubber(var/obj/machinery/portable_atmospherics/powered/scrubber/huge/scrubber) - if((get_dist(src,scrubber) <= range) && src.z == scrubber.z) - return 1 - - return 0 + updateUsrDialog() // The one that only works in the same map area /obj/machinery/computer/area_atmos/area diff --git a/code/game/machinery/atmoalter/canister.dm b/code/game/machinery/atmoalter/canister.dm index 1749b68ac9..21d3e81591 100644 --- a/code/game/machinery/atmoalter/canister.dm +++ b/code/game/machinery/atmoalter/canister.dm @@ -4,7 +4,6 @@ icon_state = "yellow" density = 1 var/health = 100.0 - flags = CONDUCT w_class = ITEMSIZE_HUGE layer = TABLE_LAYER // Above catwalks, hopefully below other things diff --git a/code/game/machinery/atmoalter/meter.dm b/code/game/machinery/atmoalter/meter.dm index c96837265d..7ee37757cc 100644 --- a/code/game/machinery/atmoalter/meter.dm +++ b/code/game/machinery/atmoalter/meter.dm @@ -12,7 +12,7 @@ use_power = 1 idle_power_usage = 15 -/obj/machinery/meter/initialize() +/obj/machinery/meter/Initialize() . = ..() if (!target) target = select_target() diff --git a/code/game/machinery/atmoalter/portable_atmospherics.dm b/code/game/machinery/atmoalter/portable_atmospherics.dm index 73f5abce4b..8778b4e5f3 100644 --- a/code/game/machinery/atmoalter/portable_atmospherics.dm +++ b/code/game/machinery/atmoalter/portable_atmospherics.dm @@ -26,7 +26,7 @@ QDEL_NULL(holding) . = ..() -/obj/machinery/portable_atmospherics/initialize() +/obj/machinery/portable_atmospherics/Initialize() . = ..() spawn() var/obj/machinery/atmospherics/portables_connector/port = locate() in loc diff --git a/code/game/machinery/atmoalter/scrubber.dm b/code/game/machinery/atmoalter/scrubber.dm index f249d7a8e7..0a47342086 100644 --- a/code/game/machinery/atmoalter/scrubber.dm +++ b/code/game/machinery/atmoalter/scrubber.dm @@ -136,7 +136,7 @@ . = 1 if (href_list["volume_adj"]) var/diff = text2num(href_list["volume_adj"]) - volume_rate = Clamp(volume_rate+diff, minrate, maxrate) + volume_rate = CLAMP(volume_rate+diff, minrate, maxrate) . = 1 update_icon() @@ -195,7 +195,7 @@ update_use_power(new_use_power) if(!on) return - + var/power_draw = -1 var/datum/gas_mixture/environment = loc.return_air() diff --git a/code/game/machinery/bioprinter.dm b/code/game/machinery/bioprinter.dm index f66b580c52..cc982ce207 100644 --- a/code/game/machinery/bioprinter.dm +++ b/code/game/machinery/bioprinter.dm @@ -287,7 +287,7 @@ /obj/machinery/organ_printer/robot/dismantle() if(stored_matter >= matter_amount_per_sheet) - new /obj/item/stack/material/steel(get_turf(src), Floor(stored_matter/matter_amount_per_sheet)) + new /obj/item/stack/material/steel(get_turf(src), FLOOR(stored_matter/matter_amount_per_sheet, 1)) return ..() /obj/machinery/organ_printer/robot/print_organ(var/choice) @@ -305,7 +305,7 @@ return var/obj/item/stack/S = W var/space_left = max_stored_matter - stored_matter - var/sheets_to_take = min(S.amount, Floor(space_left/matter_amount_per_sheet)) + var/sheets_to_take = min(S.amount, FLOOR(space_left/matter_amount_per_sheet, 1)) if(sheets_to_take <= 0) to_chat(user, "\The [src] is too full.") return diff --git a/code/game/machinery/bomb_tester_vr.dm b/code/game/machinery/bomb_tester_vr.dm index 66d71f923d..224885d9ca 100644 --- a/code/game/machinery/bomb_tester_vr.dm +++ b/code/game/machinery/bomb_tester_vr.dm @@ -201,7 +201,7 @@ if(href_list["set_can_pressure"]) var/change = text2num(href_list["set_can_pressure"]) - sim_canister_output = Clamp(sim_canister_output+change, ONE_ATMOSPHERE/10, ONE_ATMOSPHERE*10) + sim_canister_output = CLAMP(sim_canister_output+change, ONE_ATMOSPHERE/10, ONE_ATMOSPHERE*10) if(href_list["start_sim"]) start_simulating() diff --git a/code/game/machinery/camera/camera.dm b/code/game/machinery/camera/camera.dm index 20f5a617cf..e8b845ca78 100644 --- a/code/game/machinery/camera/camera.dm +++ b/code/game/machinery/camera/camera.dm @@ -96,7 +96,7 @@ kick_viewers() update_icon() update_coverage() - processing_objects |= src + START_PROCESSING(SSobj, src) /obj/machinery/camera/bullet_act(var/obj/item/projectile/P) take_damage(P.get_structure_damage()) @@ -143,7 +143,7 @@ /obj/machinery/camera/attack_generic(mob/user as mob) if(isanimal(user)) - var/mob/living/simple_animal/S = user + var/mob/living/simple_mob/S = user set_status(0) S.do_attack_animation(src) S.setClickCooldown(user.get_attack_speed()) diff --git a/code/game/machinery/cloning.dm b/code/game/machinery/cloning.dm index 6b5926042f..8e3cb117f9 100644 --- a/code/game/machinery/cloning.dm +++ b/code/game/machinery/cloning.dm @@ -194,7 +194,7 @@ occupant.adjustCloneLoss(-2 * heal_rate) //Premature clones may have brain damage. - occupant.adjustBrainLoss(-(ceil(0.5*heal_rate))) + occupant.adjustBrainLoss(-(CEILING(0.5*heal_rate, 1))) //So clones don't die of oxyloss in a running pod. if(occupant.reagents.get_reagent_amount("inaprovaline") < 30) diff --git a/code/game/machinery/computer/ai_core.dm b/code/game/machinery/computer/ai_core.dm index bc6da68332..fd4ecb14a6 100644 --- a/code/game/machinery/computer/ai_core.dm +++ b/code/game/machinery/computer/ai_core.dm @@ -200,8 +200,8 @@ GLOBAL_LIST_BOILERPLATE(all_deactivated_AI_cores, /obj/structure/AIcore/deactiva if(!istype(transfer) || locate(/mob/living/silicon/ai) in src) return - if(transfer.controlling_drone) - transfer.controlling_drone.release_ai_control("Unit control lost. Core transfer completed.") + if(transfer.deployed_shell) + transfer.disconnect_shell("Disconnected from remote shell due to core intelligence transfer.") transfer.aiRestorePowerRoutine = 0 transfer.control_disabled = 0 transfer.aiRadio.disabledAi = 0 diff --git a/code/game/machinery/computer/arcade.dm b/code/game/machinery/computer/arcade.dm index dbd96823c1..a1f9f227fc 100644 --- a/code/game/machinery/computer/arcade.dm +++ b/code/game/machinery/computer/arcade.dm @@ -4,6 +4,7 @@ icon_state = "arcade" icon_keyboard = null icon_screen = "invaders" + clicksound = null //Gets too spammy and makes no sense for arcade to have the console keyboard noise anyway var/list/prizes = list( /obj/item/weapon/storage/box/snappops = 2, /obj/item/toy/blink = 2, /obj/item/clothing/under/syndicate/tacticool = 2, diff --git a/code/game/machinery/computer/camera.dm b/code/game/machinery/computer/camera.dm index 745bdc0694..c05a886046 100644 --- a/code/game/machinery/computer/camera.dm +++ b/code/game/machinery/computer/camera.dm @@ -225,7 +225,7 @@ circuit = /obj/item/weapon/circuitboard/security/telescreen/entertainment var/obj/item/device/radio/radio = null -/obj/machinery/computer/security/telescreen/entertainment/initialize() +/obj/machinery/computer/security/telescreen/entertainment/Initialize() . = ..() radio = new(src) radio.listening = TRUE diff --git a/code/game/machinery/computer/card.dm b/code/game/machinery/computer/card.dm index d23c199db0..9f43bd077e 100644 --- a/code/game/machinery/computer/card.dm +++ b/code/game/machinery/computer/card.dm @@ -286,6 +286,7 @@ if (modify) modify.name = text("[modify.registered_name]'s ID Card ([modify.assignment])") + modify.lost_access = list() //VOREStation addition: reset the lost access upon any modifications return 1 diff --git a/code/game/machinery/computer/cloning.dm b/code/game/machinery/computer/cloning.dm index cbf0041025..44a1f69945 100644 --- a/code/game/machinery/computer/cloning.dm +++ b/code/game/machinery/computer/cloning.dm @@ -16,7 +16,7 @@ var/loading = 0 // Nice loading text -/obj/machinery/computer/cloning/initialize() +/obj/machinery/computer/cloning/Initialize() . = ..() updatemodules() diff --git a/code/game/machinery/computer/communications.dm b/code/game/machinery/computer/communications.dm index f08662a5ec..5aca29433b 100644 --- a/code/game/machinery/computer/communications.dm +++ b/code/game/machinery/computer/communications.dm @@ -93,6 +93,12 @@ switch(security_level) if(SEC_LEVEL_GREEN) feedback_inc("alert_comms_green",1) + if(SEC_LEVEL_YELLOW) + feedback_inc("alert_comms_yellow",1) + if(SEC_LEVEL_VIOLET) + feedback_inc("alert_comms_violet",1) + if(SEC_LEVEL_ORANGE) + feedback_inc("alert_comms_orange",1) if(SEC_LEVEL_BLUE) feedback_inc("alert_comms_blue",1) tmp_alertlevel = 0 @@ -358,6 +364,9 @@ dat += "The self-destruct mechanism is active. Find a way to deactivate the mechanism to lower the alert level or evacuate." else dat += "Blue
" + dat += "Orange
" + dat += "Violet
" + dat += "Yellow
" dat += "Green" if(STATE_CONFIRM_LEVEL) dat += "Current alert level: [get_security_level()]
" @@ -501,8 +510,8 @@ //delay events in case of an autotransfer if (isnull(user)) - event_manager.delay_events(EVENT_LEVEL_MODERATE, 9000) //15 minutes - event_manager.delay_events(EVENT_LEVEL_MAJOR, 9000) + SSevents.delay_events(EVENT_LEVEL_MODERATE, 9000) //15 minutes + SSevents.delay_events(EVENT_LEVEL_MAJOR, 9000) log_game("[user? key_name(user) : "Autotransfer"] has called the shuttle.") message_admins("[user? key_name_admin(user) : "Autotransfer"] has called the shuttle.", 1) diff --git a/code/game/machinery/computer/computer.dm b/code/game/machinery/computer/computer.dm index cb73fe4d7a..40a7551739 100644 --- a/code/game/machinery/computer/computer.dm +++ b/code/game/machinery/computer/computer.dm @@ -21,7 +21,7 @@ overlay_layer = layer ..() -/obj/machinery/computer/initialize() +/obj/machinery/computer/Initialize() . = ..() power_change() update_icon() diff --git a/code/game/machinery/computer/guestpass.dm b/code/game/machinery/computer/guestpass.dm index 91a4a76bb8..eaea426c07 100644 --- a/code/game/machinery/computer/guestpass.dm +++ b/code/game/machinery/computer/guestpass.dm @@ -54,13 +54,13 @@ expired = 1 return ..() -/obj/item/weapon/card/id/guest/initialize() +/obj/item/weapon/card/id/guest/Initialize() . = ..() - processing_objects.Add(src) + START_PROCESSING(SSobj, src) update_icon() /obj/item/weapon/card/id/guest/Destroy() - processing_objects.Remove(src) + STOP_PROCESSING(SSobj, src) return ..() /obj/item/weapon/card/id/guest/process() diff --git a/code/game/machinery/computer/id_restorer_vr.dm b/code/game/machinery/computer/id_restorer_vr.dm new file mode 100644 index 0000000000..86ffaa88bb --- /dev/null +++ b/code/game/machinery/computer/id_restorer_vr.dm @@ -0,0 +1,96 @@ +/obj/machinery/computer/id_restorer + name = "ID restoration terminal" + desc = "A terminal for restoration of damaged IDs. Mostly used for aftermath of unfortunate falls into vats of acid." + icon_state = "restorer" + icon_keyboard = null + light_color = "#11cc00" + layer = ABOVE_WINDOW_LAYER + icon_keyboard = null + icon = 'icons/obj/machines/id_restorer_vr.dmi' + density = FALSE + clicksound = null + circuit = /obj/item/weapon/circuitboard/id_restorer + + var/icon_success = "restorer_success" + var/icon_fail = "restorer_fail" + + var/obj/item/weapon/card/id/inserted + +/obj/machinery/computer/id_restorer/attackby(obj/I, mob/user) + if(istype(I, /obj/item/weapon/card/id) && !(istype(I,/obj/item/weapon/card/id/guest))) + if(!inserted && user.unEquip(I)) + I.forceMove(src) + inserted = I + else if(inserted) + user << "There is already ID card inside." + return + ..() + +/obj/machinery/computer/id_restorer/attack_hand(mob/user) + if(..()) return + if(stat & (NOPOWER|BROKEN)) return + + var/choice = alert(user,"What do you want to do?","[src]","Restore ID access","Eject ID","Cancel") + if(user.incapacitated() || (get_dist(src, user) > 1)) + return + switch(choice) + if("Restore ID access") + if(!inserted) + to_chat(user, "No ID is inserted.") + return + var/mob/living/carbon/human/H = user + if(!(istype(H))) + to_chat(user, "Invalid user detected. Access denied.") + flick(icon_fail, src) + return + else if((H.wear_mask && (H.wear_mask.flags_inv & HIDEFACE)) || (H.head && (H.head.flags_inv & HIDEFACE))) //Face hiding bad + to_chat(user, "Facial recognition scan failed due to physical obstructions. Access denied.") + flick(icon_fail, src) + return + else if(H.get_face_name() == "Unknown" || !(H.real_name == inserted.registered_name)) + to_chat(user, "Facial recognition scan failed. Access denied.") + flick(icon_fail, src) + return + else if(LAZYLEN(inserted.lost_access) && !(LAZYLEN(inserted.access))) + inserted.access = inserted.lost_access + inserted.lost_access = list() + inserted.desc = "A partially digested card that has seen better days. The damage to access codes, however, appears to have been mitigated." + to_chat(user, "ID access codes successfully restored.") + flick(icon_success, src) + return + else if(!(LAZYLEN(inserted.lost_access))) + to_chat(user, "No recent access codes damage detected. Restoration cancelled.") + return + else + to_chat(user, "Terminal encountered unknown error. Contact system administrator or try again.") + flick(icon_fail, src) + return + if("Eject ID") + if(!inserted) + to_chat(user, "No ID is inserted.") + return + if(ishuman(user)) + inserted.forceMove(get_turf(src)) + if(!user.get_active_hand()) + user.put_in_hands(inserted) + inserted = null + else + inserted.forceMove(get_turf(src)) + inserted = null + return + if("Cancel") + return + + +//Frame +/datum/frame/frame_types/id_restorer + name = "ID Restoration Terminal" + frame_class = FRAME_CLASS_DISPLAY + frame_size = 2 + frame_style = FRAME_STYLE_WALL + x_offset = 30 + y_offset = 30 + icon_override = 'icons/obj/machines/id_restorer_vr.dmi' + +/datum/frame/frame_types/id_restorer/get_icon_state(var/state) + return "restorer_b[state]" \ No newline at end of file diff --git a/code/game/machinery/computer/medical.dm b/code/game/machinery/computer/medical.dm index 0a90aef582..0c24c15b3e 100644 --- a/code/game/machinery/computer/medical.dm +++ b/code/game/machinery/computer/medical.dm @@ -5,7 +5,6 @@ desc = "Used to view, edit and maintain medical records." icon_keyboard = "med_key" icon_screen = "medcomp" - density = 0 //Why does a laptop blocks peoples. light_color = "#315ab4" req_one_access = list(access_medical, access_forensics_lockers, access_robotics) circuit = /obj/item/weapon/circuitboard/med_data @@ -554,4 +553,4 @@ icon_state = "laptop" icon_keyboard = "laptop_key" icon_screen = "medlaptop" - throwpass = 1 //VOREStation Edit - Really??? + density = 0 \ No newline at end of file diff --git a/code/game/machinery/computer/message.dm b/code/game/machinery/computer/message.dm index 670b637152..6fce75def7 100644 --- a/code/game/machinery/computer/message.dm +++ b/code/game/machinery/computer/message.dm @@ -71,7 +71,7 @@ icon_screen = initial(icon_screen) ..() -/obj/machinery/computer/message_monitor/initialize() +/obj/machinery/computer/message_monitor/Initialize() //Is the server isn't linked to a server, and there's a server available, default it to the first one in the list. if(!linkedServer) if(message_servers && message_servers.len > 0) diff --git a/code/game/machinery/computer/prisonshuttle.dm b/code/game/machinery/computer/prisonshuttle.dm index 8c435f5845..8fe6ffef8a 100644 --- a/code/game/machinery/computer/prisonshuttle.dm +++ b/code/game/machinery/computer/prisonshuttle.dm @@ -201,7 +201,7 @@ var/prison_shuttle_timeleft = 0 for(var/mob/living/carbon/bug in end_location) // If someone somehow is still in the shuttle's docking area... bug.gib() - for(var/mob/living/simple_animal/pest in end_location) // And for the other kind of bug... + for(var/mob/living/simple_mob/pest in end_location) // And for the other kind of bug... pest.gib() start_location.move_contents_to(end_location) diff --git a/code/game/machinery/computer/skills.dm b/code/game/machinery/computer/skills.dm index fb92e700ff..a374d48c8c 100644 --- a/code/game/machinery/computer/skills.dm +++ b/code/game/machinery/computer/skills.dm @@ -9,6 +9,7 @@ light_color = "#00b000" req_one_access = list(access_heads) circuit = /obj/item/weapon/circuitboard/skills + density = 0 var/obj/item/weapon/card/id/scan = null var/authenticated = null var/rank = null diff --git a/code/game/machinery/computer/specops_shuttle.dm b/code/game/machinery/computer/specops_shuttle.dm index 1f7c959db5..431d6278d6 100644 --- a/code/game/machinery/computer/specops_shuttle.dm +++ b/code/game/machinery/computer/specops_shuttle.dm @@ -81,7 +81,7 @@ var/specops_shuttle_timeleft = 0 for(var/mob/living/carbon/bug in end_location) // If someone somehow is still in the shuttle's docking area... bug.gib() - for(var/mob/living/simple_animal/pest in end_location) // And for the other kind of bug... + for(var/mob/living/simple_mob/pest in end_location) // And for the other kind of bug... pest.gib() start_location.move_contents_to(end_location) diff --git a/code/game/machinery/computer/station_alert.dm b/code/game/machinery/computer/station_alert.dm index d3ab69b869..8bd2f91f89 100644 --- a/code/game/machinery/computer/station_alert.dm +++ b/code/game/machinery/computer/station_alert.dm @@ -17,7 +17,7 @@ monitor_type = /datum/nano_module/alarm_monitor/all circuit = /obj/item/weapon/circuitboard/stationalert_all -/obj/machinery/computer/station_alert/initialize() +/obj/machinery/computer/station_alert/Initialize() alarm_monitor = new monitor_type(src) alarm_monitor.register_alarm(src, /obj/machinery/computer/station_alert/update_icon) . = ..() diff --git a/code/game/machinery/computer/supply.dm b/code/game/machinery/computer/supply.dm index fcaa2b4d8a..f4a68b12d5 100644 --- a/code/game/machinery/computer/supply.dm +++ b/code/game/machinery/computer/supply.dm @@ -31,6 +31,8 @@ /obj/machinery/computer/supplycomp/attack_hand(var/mob/user as mob) if(..()) return + if(!allowed(user)) + return user.set_machine(src) ui_interact(user) return diff --git a/code/game/machinery/computer/syndicate_specops_shuttle.dm b/code/game/machinery/computer/syndicate_specops_shuttle.dm index ba7193b69b..e02ab68474 100644 --- a/code/game/machinery/computer/syndicate_specops_shuttle.dm +++ b/code/game/machinery/computer/syndicate_specops_shuttle.dm @@ -166,7 +166,7 @@ var/syndicate_elite_shuttle_timeleft = 0 for(var/mob/living/carbon/bug in end_location) // If someone somehow is still in the shuttle's docking area... bug.gib() - for(var/mob/living/simple_animal/pest in end_location) // And for the other kind of bug... + for(var/mob/living/simple_mob/pest in end_location) // And for the other kind of bug... pest.gib() start_location.move_contents_to(end_location) diff --git a/code/game/machinery/computer/timeclock_vr.dm b/code/game/machinery/computer/timeclock_vr.dm index 98dc8e635d..8e49a138e3 100644 --- a/code/game/machinery/computer/timeclock_vr.dm +++ b/code/game/machinery/computer/timeclock_vr.dm @@ -15,6 +15,7 @@ layer = ABOVE_WINDOW_LAYER density = FALSE circuit = /obj/item/weapon/circuitboard/timeclock + clicksound = null var/obj/item/weapon/card/id/card // Inserted Id card diff --git a/code/game/machinery/computer3/computers/HolodeckControl.dm b/code/game/machinery/computer3/computers/HolodeckControl.dm index fcff13c968..da3c2416fd 100644 --- a/code/game/machinery/computer3/computers/HolodeckControl.dm +++ b/code/game/machinery/computer3/computers/HolodeckControl.dm @@ -207,7 +207,7 @@ for(var/obj/effect/decal/cleanable/blood/B in linkedholodeck) qdel(B) - for(var/mob/living/simple_animal/hostile/carp/C in linkedholodeck) + for(var/mob/living/simple_mob/animal/space/carp/C in linkedholodeck) qdel(C) holographic_items = A.copy_contents_to(linkedholodeck , 1) @@ -228,7 +228,7 @@ T.temperature = 5000 T.hotspot_expose(50000,50000,1) if(L.name=="Holocarp Spawn") - new /mob/living/simple_animal/hostile/carp(L.loc) + new /mob/living/simple_mob/animal/space/carp(L.loc) /datum/file/program/holodeck/proc/emergencyShutdown() diff --git a/code/game/machinery/computer3/computers/communications.dm b/code/game/machinery/computer3/computers/communications.dm index 94e5fee647..de4f9c3dc1 100644 --- a/code/game/machinery/computer3/computers/communications.dm +++ b/code/game/machinery/computer3/computers/communications.dm @@ -106,6 +106,12 @@ switch(security_level) if(SEC_LEVEL_GREEN) feedback_inc("alert_comms_green",1) + if(SEC_LEVEL_YELLOW) + feedback_inc("alert_comms_yellow",1) + if(SEC_LEVEL_VIOLET) + feedback_inc("alert_comms_violet",1) + if(SEC_LEVEL_ORANGE) + feedback_inc("alert_comms_orange",1) if(SEC_LEVEL_BLUE) feedback_inc("alert_comms_blue",1) tmp_alertlevel = 0 @@ -382,6 +388,9 @@ dat += "The self-destruct mechanism is active. Find a way to deactivate the mechanism to lower the alert level or evacuate." else dat += "Blue
" + dat += "Orange
" + dat += "Violet
" + dat += "Yellow
" dat += "Green" if(STATE_CONFIRM_LEVEL) dat += "Current alert level: [get_security_level()]
" diff --git a/code/game/machinery/computer3/program.dm b/code/game/machinery/computer3/program.dm index b39998bdfd..bf84c1622e 100644 --- a/code/game/machinery/computer3/program.dm +++ b/code/game/machinery/computer3/program.dm @@ -117,7 +117,7 @@ Programs are a file that can be executed /* The computer object will transfer process() calls to the program. */ -/datum/file/program/proc/process() +/datum/file/program/process() if(refresh && computer && !computer.stat) computer.updateDialog() update_icon() diff --git a/code/game/machinery/cryo.dm b/code/game/machinery/cryo.dm index 20a54046a6..31942366a9 100644 --- a/code/game/machinery/cryo.dm +++ b/code/game/machinery/cryo.dm @@ -30,7 +30,7 @@ icon_state = "base" initialize_directions = dir -/obj/machinery/atmospherics/unary/cryo_cell/initialize() +/obj/machinery/atmospherics/unary/cryo_cell/Initialize() . = ..() var/image/tank = image(icon,"tank") tank.alpha = 200 @@ -199,10 +199,9 @@ return if(occupant) to_chat(user,"\The [src] is already occupied by [occupant].") - for(var/mob/living/simple_animal/slime/M in range(1,grab.affecting)) - if(M.victim == grab.affecting) - to_chat(usr, "[grab.affecting.name] will not fit into the cryo because they have a slime latched onto their head.") - return + if(grab.affecting.has_buckled_mobs()) + to_chat(user, span("warning", "\The [grab.affecting] has other entities attached to it. Remove them first.")) + return var/mob/M = grab.affecting qdel(grab) put_mob(M) @@ -349,14 +348,14 @@ set name = "Move Inside" set category = "Object" set src in oview(1) - for(var/mob/living/simple_animal/slime/M in range(1,usr)) - if(M.victim == usr) - to_chat(usr, "You're too busy getting your life sucked out of you.") + if(isliving(usr)) + var/mob/living/L = usr + if(L.has_buckled_mobs()) + to_chat(L, span("warning", "You have other entities attached to yourself. Remove them first.")) return - if(usr.stat != 0) - return - put_mob(usr) - return + if(L.stat != CONSCIOUS) + return + put_mob(L) /atom/proc/return_air_for_internal_lifeform(var/mob/living/lifeform) return return_air() diff --git a/code/game/machinery/cryopod.dm b/code/game/machinery/cryopod.dm index 91fe137e54..ec127a4599 100644 --- a/code/game/machinery/cryopod.dm +++ b/code/game/machinery/cryopod.dm @@ -303,7 +303,7 @@ occupant.resting = 1 return ..() -/obj/machinery/cryopod/initialize() +/obj/machinery/cryopod/Initialize() . = ..() find_control_computer() @@ -574,9 +574,10 @@ to_chat(usr, "\The [src] is in use.") return - for(var/mob/living/simple_animal/slime/M in range(1,usr)) - if(M.victim == usr) - to_chat(usr, "You're too busy getting your life sucked out of you.") + if(isliving(usr)) + var/mob/living/L = usr + if(L.has_buckled_mobs()) + to_chat(L, span("warning", "You have other entities attached to yourself. Remove them first.")) return visible_message("[usr] [on_enter_visible_message] [src].", 3) diff --git a/code/game/machinery/deployable.dm b/code/game/machinery/deployable.dm index c50503f3c5..765ced8a39 100644 --- a/code/game/machinery/deployable.dm +++ b/code/game/machinery/deployable.dm @@ -128,13 +128,10 @@ for reference: dismantle() return -/obj/structure/barricade/CanPass(atom/movable/mover, turf/target, height=0, air_group=0)//So bullets will fly over and stuff. - if(air_group || (height==0)) - return 1 +/obj/structure/barricade/CanPass(atom/movable/mover, turf/target)//So bullets will fly over and stuff. if(istype(mover) && mover.checkpass(PASSTABLE)) - return 1 - else - return 0 + return TRUE + return FALSE //Actual Deployable machinery stuff /obj/machinery/deployable @@ -223,13 +220,10 @@ for reference: anchored = !anchored icon_state = "barrier[locked]" -/obj/machinery/deployable/barrier/CanPass(atom/movable/mover, turf/target, height=0, air_group=0)//So bullets will fly over and stuff. - if(air_group || (height==0)) - return 1 +/obj/machinery/deployable/barrier/CanPass(atom/movable/mover, turf/target)//So bullets will fly over and stuff. if(istype(mover) && mover.checkpass(PASSTABLE)) - return 1 - else - return 0 + return TRUE + return FALSE /obj/machinery/deployable/barrier/proc/explode() diff --git a/code/game/machinery/door_control.dm b/code/game/machinery/door_control.dm index e10e3bda3f..290ff6745e 100644 --- a/code/game/machinery/door_control.dm +++ b/code/game/machinery/door_control.dm @@ -4,6 +4,7 @@ icon = 'icons/obj/stationobjs.dmi' icon_state = "doorctrl0" power_channel = ENVIRON + layer = ABOVE_WINDOW_LAYER var/desiredstate = 0 var/exposedwires = 0 var/wires = 3 diff --git a/code/game/machinery/doorbell_vr.dm b/code/game/machinery/doorbell_vr.dm index 46dec472a6..25fb75df44 100644 --- a/code/game/machinery/doorbell_vr.dm +++ b/code/game/machinery/doorbell_vr.dm @@ -11,7 +11,7 @@ var/id_tag = null var/chime_sound = 'sound/machines/doorbell.ogg' -/obj/machinery/doorbell_chime/initialize() +/obj/machinery/doorbell_chime/Initialize() . = ..() update_icon() @@ -99,7 +99,7 @@ assign_uid() id = num2text(uid) -/obj/machinery/button/doorbell/initialize() +/obj/machinery/button/doorbell/Initialize() . = ..() update_icon() diff --git a/code/game/machinery/doors/airlock.dm b/code/game/machinery/doors/airlock.dm index 541e461f27..0dff930291 100644 --- a/code/game/machinery/doors/airlock.dm +++ b/code/game/machinery/doors/airlock.dm @@ -46,11 +46,12 @@ var/bolt_up_sound = 'sound/machines/boltsup.ogg' var/bolt_down_sound = 'sound/machines/boltsdown.ogg' -/obj/machinery/door/airlock/attack_generic(var/mob/user, var/damage) +/obj/machinery/door/airlock/attack_generic(var/mob/living/user, var/damage) if(stat & (BROKEN|NOPOWER)) - if(damage >= 10) + if(damage >= STRUCTURE_MIN_DAMAGE_THRESHOLD) if(src.locked || src.welded) visible_message("\The [user] begins breaking into \the [src] internals!") + user.set_AI_busy(TRUE) // If the mob doesn't have an AI attached, this won't do anything. if(do_after(user,10 SECONDS,src)) src.locked = 0 src.welded = 0 @@ -58,6 +59,7 @@ open(1) if(prob(25)) src.shock(user, 100) + user.set_AI_busy(FALSE) else if(src.density) visible_message("\The [user] forces \the [src] open!") open(1) @@ -455,9 +457,28 @@ icon = 'icons/obj/doors/shuttledoors_vertical.dmi' assembly_type = /obj/structure/door_assembly/door_assembly_voidcraft/vertical + +/datum/category_item/catalogue/anomalous/precursor_a/alien_airlock + name = "Precursor Alpha Object - Doors" + desc = "This object appears to be used in order to restrict or allow access to \ + rooms based on its physical state. In other words, a door. \ + Despite being designed and created by unknown ancient alien hands, this door has \ + a large number of similarities to the conventional airlock, such as being driven by \ + electricity, opening and closing by physically moving, and being air tight. \ + It also operates by responding to signals through internal electrical conduits. \ + These characteristics make it possible for one with experience with a multitool \ + to manipulate the door.\ +

\ + The symbol on the door does not match any living species' patterns, giving further \ + implications that this door is very old, and yet it remains operational after \ + thousands of years. It is unknown if that is due to superb construction, or \ + unseen autonomous maintenance having been performed." + value = CATALOGUER_REWARD_EASY + /obj/machinery/door/airlock/alien name = "alien airlock" desc = "You're fairly sure this is a door." + catalogue_data = list(/datum/category_item/catalogue/anomalous/precursor_a/alien_airlock) icon = 'icons/obj/doors/Dooralien.dmi' explosion_resistance = 20 secured_wires = TRUE @@ -508,9 +529,6 @@ About the new airlock wires panel: return ..(user) -/obj/machinery/door/airlock/bumpopen(mob/living/simple_animal/user as mob) - ..(user) - /obj/machinery/door/airlock/proc/isElectrified() if(src.electrified_until != 0) return 1 @@ -783,7 +801,7 @@ About the new airlock wires panel: if (user) src.attack_ai(user) -/obj/machinery/door/airlock/CanPass(atom/movable/mover, turf/target, height=0, air_group=0) +/obj/machinery/door/airlock/CanPass(atom/movable/mover, turf/target) if (src.isElectrified()) if (istype(mover, /obj/item)) var/obj/item/i = mover @@ -1206,7 +1224,7 @@ About the new airlock wires panel: else wires = new/datum/wires/airlock(src) -/obj/machinery/door/airlock/initialize() +/obj/machinery/door/airlock/Initialize() if(src.closeOtherId != null) for (var/obj/machinery/door/airlock/A in machines) if(A.closeOtherId == src.closeOtherId && A != src) diff --git a/code/game/machinery/doors/airlock_control.dm b/code/game/machinery/doors/airlock_control.dm index 295a7ff24f..cbd0875cd3 100644 --- a/code/game/machinery/doors/airlock_control.dm +++ b/code/game/machinery/doors/airlock_control.dm @@ -129,7 +129,7 @@ obj/machinery/door/airlock/proc/set_frequency(new_frequency) radio_connection = radio_controller.add_object(src, frequency, RADIO_AIRLOCK) -obj/machinery/door/airlock/initialize() +obj/machinery/door/airlock/Initialize() . = ..() if(frequency) set_frequency(frequency) @@ -203,7 +203,7 @@ obj/machinery/airlock_sensor/proc/set_frequency(new_frequency) frequency = new_frequency radio_connection = radio_controller.add_object(src, frequency, RADIO_AIRLOCK) -obj/machinery/airlock_sensor/initialize() +obj/machinery/airlock_sensor/Initialize() . = ..() set_frequency(frequency) @@ -276,7 +276,7 @@ obj/machinery/access_button/proc/set_frequency(new_frequency) radio_connection = radio_controller.add_object(src, frequency, RADIO_AIRLOCK) -obj/machinery/access_button/initialize() +obj/machinery/access_button/Initialize() . = ..() set_frequency(frequency) diff --git a/code/game/machinery/doors/alarmlock.dm b/code/game/machinery/doors/alarmlock.dm index 1c384a651d..f7dda48feb 100644 --- a/code/game/machinery/doors/alarmlock.dm +++ b/code/game/machinery/doors/alarmlock.dm @@ -18,7 +18,7 @@ radio_controller.remove_object(src,air_frequency) ..() -/obj/machinery/door/airlock/alarmlock/initialize() +/obj/machinery/door/airlock/alarmlock/Initialize() . = ..() radio_controller.remove_object(src, air_frequency) air_connection = radio_controller.add_object(src, air_frequency, RADIO_TO_AIRALARM) diff --git a/code/game/machinery/doors/blast_door.dm b/code/game/machinery/doors/blast_door.dm index 6749567439..615309d31c 100644 --- a/code/game/machinery/doors/blast_door.dm +++ b/code/game/machinery/doors/blast_door.dm @@ -23,7 +23,7 @@ var/icon_state_closed = null var/icon_state_closing = null - closed_layer = 3.3 // Above airlocks when closed + closed_layer = ON_WINDOW_LAYER // Above airlocks when closed var/id = 1.0 dir = 1 explosion_resistance = 25 @@ -32,7 +32,7 @@ //turning this off prevents awkward zone geometry in places like medbay lobby, for example. block_air_zones = 0 -/obj/machinery/door/blast/initialize() +/obj/machinery/door/blast/Initialize() . = ..() implicit_material = get_material_by_name("plasteel") @@ -63,6 +63,10 @@ /obj/machinery/door/blast/emag_act() return -1 +// Blast doors are triggered remotely, so nobody is allowed to physically influence it. +/obj/machinery/door/blast/allowed(mob/M) + return FALSE + // Proc: force_open() // Parameters: None // Description: Opens the door. No checks are done inside this proc. @@ -151,7 +155,7 @@ return else if(istype(C, /obj/item/stack/material) && C.get_material_name() == "plasteel") // Repairing. - var/amt = Ceiling((maxhealth - health)/150) + var/amt = CEILING((maxhealth - health)/150, 1) if(!amt) to_chat(user, "\The [src] is already fully repaired.") return @@ -207,9 +211,10 @@ // Proc: attack_generic() // Parameters: Attacking simple mob, incoming damage. // Description: Checks the power or integrity of the blast door, if either have failed, chekcs the damage to determine if the creature would be able to open the door by force. Otherwise, super. -/obj/machinery/door/blast/attack_generic(var/mob/user, var/damage) +/obj/machinery/door/blast/attack_generic(mob/living/user, damage) if(stat & (BROKEN|NOPOWER)) - if(damage >= 10) + if(damage >= STRUCTURE_MIN_DAMAGE_THRESHOLD) + user.set_AI_busy(TRUE) // If the mob doesn't have an AI attached, this won't do anything. if(src.density) visible_message("\The [user] starts forcing \the [src] open!") if(do_after(user, 5 SECONDS, src)) @@ -220,6 +225,7 @@ if(do_after(user, 2 SECONDS, src)) visible_message("\The [user] forces \the [src] closed!") force_close(1) + user.set_AI_busy(FALSE) else visible_message("\The [user] strains fruitlessly to force \the [src] [density ? "open" : "closed"].") return @@ -259,12 +265,14 @@ if(stat & BROKEN) stat &= ~BROKEN - -/obj/machinery/door/blast/CanPass(atom/movable/mover, turf/target, height=0, air_group=0) - if(air_group) return 1 +/* +// This replicates the old functionality coded into CanPass() for this object, however it appeared to have made blast doors not airtight. +// If for some reason this is actually needed for something important, uncomment this. +/obj/machinery/door/blast/CanZASPass(turf/T, is_zone) + if(is_zone) + return ATMOS_PASS_YES return ..() - - +*/ // SUBTYPE: Regular // Your classical blast door, found almost everywhere. diff --git a/code/game/machinery/doors/brigdoors.dm b/code/game/machinery/doors/brigdoors.dm index fe1d726d50..0935dfa724 100644 --- a/code/game/machinery/doors/brigdoors.dm +++ b/code/game/machinery/doors/brigdoors.dm @@ -31,7 +31,7 @@ maptext_height = 26 maptext_width = 32 -/obj/machinery/door_timer/initialize() +/obj/machinery/door_timer/Initialize() ..() //Doors need to go first, and can't rely on init order, so come back to me. return INITIALIZE_HINT_LATELOAD diff --git a/code/game/machinery/doors/door.dm b/code/game/machinery/doors/door.dm index ddb2001639..c25bde5ed6 100644 --- a/code/game/machinery/doors/door.dm +++ b/code/game/machinery/doors/door.dm @@ -9,6 +9,7 @@ anchored = 1 opacity = 1 density = 1 + can_atmos_pass = ATMOS_PASS_DENSITY layer = DOOR_OPEN_LAYER var/open_layer = DOOR_OPEN_LAYER var/closed_layer = DOOR_CLOSED_LAYER @@ -39,8 +40,8 @@ /obj/machinery/door/attack_generic(var/mob/user, var/damage) if(isanimal(user)) - var/mob/living/simple_animal/S = user - if(damage >= 10) + var/mob/living/simple_mob/S = user + if(damage >= STRUCTURE_MIN_DAMAGE_THRESHOLD) visible_message("\The [user] smashes into the [src]!") playsound(src, S.attack_sound, 75, 1) take_damage(damage) @@ -98,6 +99,7 @@ return 1 /obj/machinery/door/Bumped(atom/AM) + . = ..() if(p_open || operating) return if(ismob(AM)) @@ -107,6 +109,8 @@ M.last_bumped = world.time if(M.restrained() && !check_access(null)) return + else if(istype(M, /mob/living/simple_mob/animal/passive/mouse) && !(M.ckey)) //VOREStation Edit: Make wild mice + return //VOREStation Edit: unable to open doors else bumpopen(M) @@ -133,16 +137,16 @@ open() else do_animate("deny") - return - return - -/obj/machinery/door/CanPass(atom/movable/mover, turf/target, height=0, air_group=0) - if(air_group) return !block_air_zones +/obj/machinery/door/CanPass(atom/movable/mover, turf/target) if(istype(mover) && mover.checkpass(PASSGLASS)) return !opacity return !density +/obj/machinery/door/CanZASPass(turf/T, is_zone) + if(is_zone) + return block_air_zones ? ATMOS_PASS_NO : ATMOS_PASS_YES + return ..() /obj/machinery/door/proc/bumpopen(mob/user as mob) if(operating) return diff --git a/code/game/machinery/doors/firedoor.dm b/code/game/machinery/doors/firedoor.dm index fb7609ee05..d5043af6ef 100644 --- a/code/game/machinery/doors/firedoor.dm +++ b/code/game/machinery/doors/firedoor.dm @@ -216,22 +216,26 @@ return ..() -/obj/machinery/door/firedoor/attack_generic(var/mob/user, var/damage) +/obj/machinery/door/firedoor/attack_generic(var/mob/living/user, var/damage) if(stat & (BROKEN|NOPOWER)) - if(damage >= 10) + if(damage >= STRUCTURE_MIN_DAMAGE_THRESHOLD) var/time_to_force = (2 + (2 * blocked)) * 5 if(src.density) visible_message("\The [user] starts forcing \the [src] open!") + user.set_AI_busy(TRUE) // If the mob doesn't have an AI attached, this won't do anything. if(do_after(user, time_to_force, src)) visible_message("\The [user] forces \the [src] open!") src.blocked = 0 open(1) + user.set_AI_busy(FALSE) else time_to_force = (time_to_force / 2) visible_message("\The [user] starts forcing \the [src] closed!") + user.set_AI_busy(TRUE) // If the mob doesn't have an AI attached, this won't do anything. if(do_after(user, time_to_force, src)) visible_message("\The [user] forces \the [src] closed!") close(1) + user.set_AI_busy(FALSE) else visible_message("\The [user] strains fruitlessly to force \the [src] [density ? "open" : "closed"].") return @@ -467,11 +471,10 @@ heat_proof = 1 air_properties_vary_with_direction = 1 - CanPass(atom/movable/mover, turf/target, height=0, air_group=0) + CanPass(atom/movable/mover, turf/target) if(istype(mover) && mover.checkpass(PASSGLASS)) return 1 if(get_dir(loc, target) == dir) //Make sure looking at appropriate border - if(air_group) return 0 return !density else return 1 diff --git a/code/game/machinery/doors/windowdoor.dm b/code/game/machinery/doors/windowdoor.dm index fe21197dc5..a1e05d5e1e 100644 --- a/code/game/machinery/doors/windowdoor.dm +++ b/code/game/machinery/doors/windowdoor.dm @@ -68,37 +68,35 @@ if(istype(bot)) if(density && src.check_access(bot.botcard)) open() - sleep(50) - close() + addtimer(CALLBACK(src, .proc/close), 50) else if(istype(AM, /obj/mecha)) var/obj/mecha/mecha = AM if(density) if(mecha.occupant && src.allowed(mecha.occupant)) open() - sleep(50) - close() + addtimer(CALLBACK(src, .proc/close), 50) return if (!( ticker )) return if (src.operating) return - if (src.density && src.allowed(AM)) + if (density && allowed(AM)) open() - if(src.check_access(null)) - sleep(50) - else //secure doors close faster - sleep(20) - close() - return + addtimer(CALLBACK(src, .proc/close), check_access(null)? 50 : 20) -/obj/machinery/door/window/CanPass(atom/movable/mover, turf/target, height=0, air_group=0) +/obj/machinery/door/window/CanPass(atom/movable/mover, turf/target) if(istype(mover) && mover.checkpass(PASSGLASS)) - return 1 - if(get_dir(loc, target) == dir) //Make sure looking at appropriate border - if(air_group) return 0 + return TRUE + if(get_dir(mover, loc) == turn(dir, 180)) //Make sure looking at appropriate border return !density - else - return 1 + return TRUE + +/obj/machinery/door/window/CanZASPass(turf/T, is_zone) + if(get_dir(T, loc) == turn(dir, 180)) + if(is_zone) // No merging allowed. + return ATMOS_PASS_NO + return ..() // Air can flow if open (density == FALSE). + return ATMOS_PASS_YES // Windoors don't block if not facing the right way. /obj/machinery/door/window/CheckExit(atom/movable/mover as mob|obj, turf/target as turf) if(istype(mover) && mover.checkpass(PASSGLASS)) @@ -109,7 +107,7 @@ return 1 /obj/machinery/door/window/open() - if (operating == 1) //doors can still open when emag-disabled + if (operating == 1 || !density) //doors can still open when emag-disabled return 0 if (!ticker) return 0 @@ -129,20 +127,20 @@ return 1 /obj/machinery/door/window/close() - if (operating) - return 0 - src.operating = 1 + if(operating || density) + return FALSE + operating = TRUE flick(text("[]closing", src.base_state), src) playsound(src.loc, 'sound/machines/windowdoor.ogg', 100, 1) - density = 1 + density = TRUE update_icon() explosion_resistance = initial(explosion_resistance) update_nearby_tiles() sleep(10) - operating = 0 - return 1 + operating = FALSE + return TRUE /obj/machinery/door/window/take_damage(var/damage) src.health = max(0, src.health - damage) diff --git a/code/game/machinery/doppler_array.dm b/code/game/machinery/doppler_array.dm index 7a4087e2c4..75004ae7be 100644 --- a/code/game/machinery/doppler_array.dm +++ b/code/game/machinery/doppler_array.dm @@ -1,8 +1,13 @@ var/list/doppler_arrays = list() /obj/machinery/doppler_array + anchored = 1 name = "tachyon-doppler array" + density = 1 desc = "A highly precise directional sensor array which measures the release of quants from decaying tachyons. The doppler shifting of the mirror-image formed by these quants can reveal the size, location and temporal affects of energetic disturbances within a large radius ahead of the array." + dir = NORTH + + icon_state = "doppler" /obj/machinery/doppler_array/New() ..() diff --git a/code/game/machinery/embedded_controller/airlock_controllers.dm b/code/game/machinery/embedded_controller/airlock_controllers.dm index 6bf5fe0553..11893fa5ca 100644 --- a/code/game/machinery/embedded_controller/airlock_controllers.dm +++ b/code/game/machinery/embedded_controller/airlock_controllers.dm @@ -13,7 +13,7 @@ var/tag_secure = 0 var/cycle_to_external_air = 0 -/obj/machinery/embedded_controller/radio/airlock/initialize() +/obj/machinery/embedded_controller/radio/airlock/Initialize() . = ..() program = new/datum/computer/file/embedded_program/airlock(src) diff --git a/code/game/machinery/embedded_controller/airlock_docking_controller.dm b/code/game/machinery/embedded_controller/airlock_docking_controller.dm index 86885ebd53..fa7d5dfa04 100644 --- a/code/game/machinery/embedded_controller/airlock_docking_controller.dm +++ b/code/game/machinery/embedded_controller/airlock_docking_controller.dm @@ -5,7 +5,7 @@ var/datum/computer/file/embedded_program/docking/airlock/docking_program tag_secure = 1 -/obj/machinery/embedded_controller/radio/airlock/docking_port/initialize() +/obj/machinery/embedded_controller/radio/airlock/docking_port/Initialize() . = ..() airlock_program = new/datum/computer/file/embedded_program/airlock/docking(src) docking_program = new/datum/computer/file/embedded_program/docking/airlock(src, airlock_program) diff --git a/code/game/machinery/embedded_controller/airlock_docking_controller_multi.dm b/code/game/machinery/embedded_controller/airlock_docking_controller_multi.dm index 7c35568e51..bdce39de14 100644 --- a/code/game/machinery/embedded_controller/airlock_docking_controller_multi.dm +++ b/code/game/machinery/embedded_controller/airlock_docking_controller_multi.dm @@ -9,7 +9,7 @@ var/datum/computer/file/embedded_program/docking/multi/docking_program -/obj/machinery/embedded_controller/radio/docking_port_multi/initialize() +/obj/machinery/embedded_controller/radio/docking_port_multi/Initialize() . = ..() docking_program = new/datum/computer/file/embedded_program/docking/multi(src) program = docking_program @@ -55,7 +55,7 @@ var/datum/computer/file/embedded_program/airlock/multi_docking/airlock_program tag_secure = 1 -/obj/machinery/embedded_controller/radio/airlock/docking_port_multi/initialize() +/obj/machinery/embedded_controller/radio/airlock/docking_port_multi/Initialize() . = ..() airlock_program = new/datum/computer/file/embedded_program/airlock/multi_docking(src) program = airlock_program diff --git a/code/game/machinery/embedded_controller/embedded_controller_base.dm b/code/game/machinery/embedded_controller/embedded_controller_base.dm index 6833498b5f..17bf13181a 100644 --- a/code/game/machinery/embedded_controller/embedded_controller_base.dm +++ b/code/game/machinery/embedded_controller/embedded_controller_base.dm @@ -57,7 +57,7 @@ obj/machinery/embedded_controller/radio/Destroy() var/datum/radio_frequency/radio_connection unacidable = 1 -/obj/machinery/embedded_controller/radio/initialize() +/obj/machinery/embedded_controller/radio/Initialize() . = ..() set_frequency(frequency) diff --git a/code/game/machinery/embedded_controller/embedded_program_base.dm b/code/game/machinery/embedded_controller/embedded_program_base.dm index f579aca6f7..0cc711c7a4 100644 --- a/code/game/machinery/embedded_controller/embedded_program_base.dm +++ b/code/game/machinery/embedded_controller/embedded_program_base.dm @@ -17,9 +17,6 @@ /datum/computer/file/embedded_program/proc/receive_signal(datum/signal/signal, receive_method, receive_param) return -/datum/computer/file/embedded_program/proc/process() - return - /datum/computer/file/embedded_program/proc/post_signal(datum/signal/signal, comm_line) if(master) master.post_signal(signal, comm_line) diff --git a/code/game/machinery/embedded_controller/simple_docking_controller.dm b/code/game/machinery/embedded_controller/simple_docking_controller.dm index 9242afd762..8e5c941bbf 100644 --- a/code/game/machinery/embedded_controller/simple_docking_controller.dm +++ b/code/game/machinery/embedded_controller/simple_docking_controller.dm @@ -4,7 +4,7 @@ var/tag_door var/datum/computer/file/embedded_program/docking/simple/docking_program -/obj/machinery/embedded_controller/radio/simple_docking_controller/initialize() +/obj/machinery/embedded_controller/radio/simple_docking_controller/Initialize() . = ..() docking_program = new/datum/computer/file/embedded_program/docking/simple(src) program = docking_program diff --git a/code/game/machinery/frame.dm b/code/game/machinery/frame.dm index 2c16d3771e..c54734aec0 100644 --- a/code/game/machinery/frame.dm +++ b/code/game/machinery/frame.dm @@ -569,7 +569,7 @@ update_icon() -/obj/structure/frame/verb/rotate() +/obj/structure/frame/verb/rotate_counterclockwise() set name = "Rotate Frame Counter-Clockwise" set category = "Object" set src in oview(1) @@ -581,14 +581,14 @@ to_chat(usr, "It is fastened to the floor therefore you can't rotate it!") return 0 - set_dir(turn(dir, 90)) + src.set_dir(turn(src.dir, 90)) to_chat(usr, "You rotate the [src] to face [dir2text(dir)]!") return -/obj/structure/frame/verb/revrotate() +/obj/structure/frame/verb/rotate_clockwise() set name = "Rotate Frame Clockwise" set category = "Object" set src in oview(1) @@ -600,7 +600,7 @@ to_chat(usr, "It is fastened to the floor therefore you can't rotate it!") return 0 - set_dir(turn(dir, 270)) + src.set_dir(turn(src.dir, 270)) to_chat(usr, "You rotate the [src] to face [dir2text(dir)]!") diff --git a/code/game/machinery/iv_drip.dm b/code/game/machinery/iv_drip.dm index 36ec27f4ac..cc20f2cb4e 100644 --- a/code/game/machinery/iv_drip.dm +++ b/code/game/machinery/iv_drip.dm @@ -180,7 +180,7 @@ to_chat(user, "[attached ? attached : "No one"] is attached.") -/obj/machinery/iv_drip/CanPass(atom/movable/mover, turf/target, height = 0, air_group = 0) - if(height && istype(mover) && mover.checkpass(PASSTABLE)) //allow bullets, beams, thrown objects, mice, drones, and the like through. - return 1 +/obj/machinery/iv_drip/CanPass(atom/movable/mover, turf/target) + if(istype(mover) && mover.checkpass(PASSTABLE)) //allow bullets, beams, thrown objects, mice, drones, and the like through. + return TRUE return ..() diff --git a/code/game/machinery/jukebox.dm b/code/game/machinery/jukebox.dm index 5c94d8a114..b952f678bb 100644 --- a/code/game/machinery/jukebox.dm +++ b/code/game/machinery/jukebox.dm @@ -64,7 +64,7 @@ ..() // On initialization, copy our tracks from the global list -/obj/machinery/media/jukebox/initialize() +/obj/machinery/media/jukebox/Initialize() . = ..() if(LAZYLEN(all_jukebox_tracks)) //Global list has tracks tracks.Cut() diff --git a/code/game/machinery/machinery.dm b/code/game/machinery/machinery.dm index 5f5387184d..0729121195 100644 --- a/code/game/machinery/machinery.dm +++ b/code/game/machinery/machinery.dm @@ -117,6 +117,8 @@ Class Procs: var/interact_offline = 0 // Can the machine be interacted with while de-powered. var/obj/item/weapon/circuitboard/circuit = null + var/speed_process = FALSE //If false, SSmachines. If true, SSfastprocess. + /obj/machinery/New(l, d=0) ..(l) if(d) @@ -124,13 +126,19 @@ Class Procs: if(circuit) circuit = new circuit(src) -/obj/machinery/initialize() +/obj/machinery/Initialize() . = ..() global.machines += src - START_MACHINE_PROCESSING(src) + if(!speed_process) + START_MACHINE_PROCESSING(src) + else + START_PROCESSING(SSfastprocess, src) /obj/machinery/Destroy() - STOP_MACHINE_PROCESSING(src) + if(!speed_process) + STOP_MACHINE_PROCESSING(src) + else + STOP_PROCESSING(SSfastprocess, src) global.machines -= src if(component_parts) for(var/atom/A in component_parts) @@ -153,8 +161,6 @@ Class Procs: if(!(use_power || idle_power_usage || active_power_usage)) return PROCESS_KILL - return - /obj/machinery/emp_act(severity) if(use_power && stat == 0) use_power(7500/severity) diff --git a/code/game/machinery/magnet.dm b/code/game/machinery/magnet.dm index d21d751e7e..9f97ab0360 100644 --- a/code/game/machinery/magnet.dm +++ b/code/game/machinery/magnet.dm @@ -167,7 +167,7 @@ center = locate(x+center_x, y+center_y, z) if(center) for(var/obj/M in orange(magnetic_field, center)) - if(!M.anchored && (M.flags & CONDUCT)) + if(!M.anchored && !(M.flags & NOCONDUCT)) step_towards(M, center) for(var/mob/living/silicon/S in orange(magnetic_field, center)) diff --git a/code/game/machinery/oxygen_pump.dm b/code/game/machinery/oxygen_pump.dm index 2f781129b6..0720b03b26 100644 --- a/code/game/machinery/oxygen_pump.dm +++ b/code/game/machinery/oxygen_pump.dm @@ -22,7 +22,7 @@ idle_power_usage = 10 active_power_usage = 120 // No idea what the realistic amount would be. -/obj/machinery/oxygen_pump/initialize() +/obj/machinery/oxygen_pump/Initialize() . = ..() tank = new spawn_type (src) contained = new mask_type (src) diff --git a/code/game/machinery/partslathe_vr.dm b/code/game/machinery/partslathe_vr.dm index fc594606d1..736474f453 100644 --- a/code/game/machinery/partslathe_vr.dm +++ b/code/game/machinery/partslathe_vr.dm @@ -179,29 +179,29 @@ /obj/machinery/partslathe/proc/canBuild(var/datum/category_item/partslathe/D) for(var/M in D.resources) - if(materials[M] < Ceiling(D.resources[M] * mat_efficiency)) + if(materials[M] < CEILING((D.resources[M] * mat_efficiency), 1)) return 0 return 1 /obj/machinery/partslathe/proc/getLackingMaterials(var/datum/category_item/partslathe/D) var/ret = "" for(var/M in D.resources) - if(materials[M] < Ceiling(D.resources[M] * mat_efficiency)) + if(materials[M] < CEILING((D.resources[M] * mat_efficiency), 1)) if(ret != "") ret += ", " - ret += "[Ceiling(D.resources[M] * mat_efficiency) - materials[M]] [M]" + ret += "[CEILING((D.resources[M] * mat_efficiency), 1) - materials[M]] [M]" return ret /obj/machinery/partslathe/proc/build(var/datum/category_item/partslathe/D) for(var/M in D.resources) - materials[M] = max(0, materials[M] - Ceiling(D.resources[M] * mat_efficiency)) + materials[M] = max(0, materials[M] - CEILING((D.resources[M] * mat_efficiency), 1)) var/obj/new_item = D.build(loc); if(new_item) new_item.loc = loc if(mat_efficiency < 1) // No matter out of nowhere if(new_item.matter && new_item.matter.len > 0) for(var/i in new_item.matter) - new_item.matter[i] = Ceiling(new_item.matter[i] * mat_efficiency) + new_item.matter[i] = CEILING((new_item.matter[i] * mat_efficiency), 1) // 0 amount = 0 means ejecting a full stack; -1 means eject everything /obj/machinery/partslathe/proc/eject_materials(var/material, var/amount) diff --git a/code/game/machinery/pipe/construction.dm b/code/game/machinery/pipe/construction.dm index 0482e2f242..e83da8222d 100644 --- a/code/game/machinery/pipe/construction.dm +++ b/code/game/machinery/pipe/construction.dm @@ -38,7 +38,7 @@ Buildable meters * @param loc Location * @pipe_type */ -/obj/item/pipe/initialize(var/mapload, var/_pipe_type, var/_dir, var/obj/machinery/atmospherics/make_from) +/obj/item/pipe/Initialize(var/mapload, var/_pipe_type, var/_dir, var/obj/machinery/atmospherics/make_from) if(make_from) make_from_existing(make_from) else @@ -115,15 +115,15 @@ Buildable meters var/obj/machinery/atmospherics/fakeA = pipe_type icon_state = "[initial(fakeA.pipe_state)][mirrored ? "m" : ""]" -/obj/item/pipe/verb/rotate() +/obj/item/pipe/verb/rotate_clockwise() set category = "Object" - set name = "Rotate Pipe" + set name = "Rotate Pipe Clockwise" set src in view(1) if ( usr.stat || usr.restrained() || !usr.canmove ) return - set_dir(turn(src.dir, -90)) // Rotate clockwise + src.set_dir(turn(src.dir, 270)) fixdir() // If you want to disable pipe dir changing when pulled, uncomment this diff --git a/code/game/machinery/portable_turret.dm b/code/game/machinery/portable_turret.dm index 07357ceb7b..b044cc4c90 100644 --- a/code/game/machinery/portable_turret.dm +++ b/code/game/machinery/portable_turret.dm @@ -3,14 +3,40 @@ This code is slightly more documented than normal, as requested by XSI on IRC. */ +/datum/category_item/catalogue/technology/turret + name = "Turrets" + desc = "This imtimidating machine is essentially an automated gun. It is able to \ + scan its immediate environment, and if it determines that a threat is nearby, it will \ + open up, aim the barrel of the weapon at the threat, and engage it until the threat \ + goes away, it dies (if using a lethal gun), or the turret is destroyed. This has made them \ + well suited for long term defense for a static position, as electricity costs much \ + less than hiring a person to stand around. Despite this, the lack of a sapient entity's \ + judgement has sometimes lead to tragedy when turrets are poorly configured.\ +

\ + Early models generally had simple designs, and would shoot at anything that moved, with only \ + the option to disable it remotely for maintenance or to let someone pass. More modern iterations \ + of turrets have instead replaced those simple systems with intricate optical sensors and \ + image recognition software that allow the turret to distinguish between several kinds of \ + entities, and to only engage whatever their owners configured them to fight against.\ + Some models also have the ability to switch between a lethal and non-lethal mode.\ +

\ + Today's cutting edge in static defense development has shifted away from improving the \ + software of the turret, and instead towards the hardware. The newest solutions for \ + automated protection includes new hardware capabilities such as thicker armor, more \ + advanced integrated weapons, and some may even have been built with EM hardening in \ + mind." + value = CATALOGUER_REWARD_MEDIUM + + #define TURRET_PRIORITY_TARGET 2 #define TURRET_SECONDARY_TARGET 1 #define TURRET_NOT_TARGET 0 /obj/machinery/porta_turret name = "turret" + catalogue_data = list(/datum/category_item/catalogue/technology/turret) icon = 'icons/obj/turrets.dmi' - icon_state = "turretCover" + icon_state = "turret_cover" anchored = 1 density = 0 @@ -18,6 +44,17 @@ idle_power_usage = 50 //when inactive, this turret takes up constant 50 Equipment power active_power_usage = 300 //when active, this turret takes up constant 300 Equipment power power_channel = EQUIP //drains power from the EQUIPMENT channel + req_one_access = list(access_security, access_heads) + + // icon_states for turrets. + // These are for the turret covers. + var/closed_state = "turret_cover" // For when it is closed. + var/raising_state = "popup" // When turret is opening. + var/opened_state = "open" // When fully opened. + var/lowering_state = "popdown" // When closing. + var/gun_active_state = "target_prism" // The actual gun's icon_state when active. + var/gun_disabled_state = "grey_target_prism" // Gun sprite when depowered/disabled. + var/gun_destroyed_state = "destroyed_target_prism" // Turret sprite for when the turret dies. var/raised = 0 //if the turret cover is "open" and the turret is raised var/raising= 0 //if the turret is currently opening or closing its cover @@ -66,6 +103,7 @@ var/can_salvage = TRUE // If false, salvaging doesn't give you anything. /obj/machinery/porta_turret/crescent + req_one_access = list(access_cent_specops) enabled = 0 ailock = 1 check_synth = 0 @@ -76,12 +114,19 @@ check_anomalies = 1 check_all = 0 +/obj/machinery/porta_turret/can_catalogue(mob/user) // Dead turrets can't be scanned. + if(stat & BROKEN) + to_chat(user, span("warning", "\The [src] was destroyed, so it cannot be scanned.")) + return FALSE + return ..() + /obj/machinery/porta_turret/stationary ailock = 1 lethal = 1 installation = /obj/item/weapon/gun/energy/laser /obj/machinery/porta_turret/stationary/syndie // Generic turrets for POIs that need to not shoot their buddies. + req_one_access = list(access_syndicate) enabled = TRUE check_all = TRUE faction = "syndicate" // Make sure this equals the faction that the mobs in the POI have or they will fight each other. @@ -89,13 +134,30 @@ /obj/machinery/porta_turret/ai_defense name = "defense turret" desc = "This variant appears to be much more durable." + req_one_access = list(access_synth) // Just in case. installation = /obj/item/weapon/gun/energy/xray // For the armor pen. health = 250 // Since lasers do 40 each. maxhealth = 250 + +/datum/category_item/catalogue/anomalous/precursor_a/alien_turret + name = "Precursor Alpha Object - Turrets" + desc = "An autonomous defense turret created by unknown ancient aliens. It utilizes an \ + integrated laser projector to harm, firing a cyan beam at the target. The signal processing \ + of this mechanism appears to be radically different to conventional electronics used by modern \ + technology, which appears to be much less susceptible to external electromagnetic influences.\ +

\ + This makes the turret be very resistant to the effects of an EM pulse. It is unknown if whatever \ + species that built the turret had intended for it to have that quality, or if it was an incidental \ + quirk of how they designed their electronics." + value = CATALOGUER_REWARD_MEDIUM + /obj/machinery/porta_turret/alien // The kind used on the UFO submap. name = "interior anti-boarding turret" desc = "A very tough looking turret made by alien hands." + catalogue_data = list(/datum/category_item/catalogue/anomalous/precursor_a/alien_turret) + icon_state = "alien_turret_cover" + req_one_access = list(access_alien) installation = /obj/item/weapon/gun/energy/alien enabled = TRUE lethal = TRUE @@ -104,10 +166,18 @@ health = 250 // Similar to the AI turrets. maxhealth = 250 + closed_state = "alien_turret_cover" + raising_state = "alien_popup" + opened_state = "alien_open" + lowering_state = "alien_popdown" + gun_active_state = "alien_gun" + gun_disabled_state = "alien_gun_disabled" + gun_destroyed_state = "alien_gun_destroyed" + /obj/machinery/porta_turret/alien/destroyed // Turrets that are already dead, to act as a warning of what the rest of the submap contains. name = "broken interior anti-boarding turret" desc = "A very tough looking turret made by alien hands. This one looks destroyed, thankfully." - icon_state = "destroyed_target_prism" + icon_state = "alien_gun_destroyed" stat = BROKEN can_salvage = FALSE // So you need to actually kill a turret to get the alien gun. @@ -118,11 +188,7 @@ check_all = TRUE can_salvage = FALSE // So you can't just twoshot a turret and get a fancy gun -/obj/machinery/porta_turret/New() - ..() - req_access.Cut() - req_one_access = list(access_security, access_heads) - +/obj/machinery/porta_turret/Initialize() //Sets up a spark system spark_system = new /datum/effect/effect/system/spark_spread spark_system.set_up(5, 0, src) @@ -130,20 +196,35 @@ setup() -/obj/machinery/porta_turret/crescent/New() - ..() - req_one_access.Cut() - req_access = list(access_cent_specops) - -/obj/machinery/porta_turret/alien/New() - ..() - req_one_access.Cut() - req_access = list(access_alien) + // If turrets ever switch overlays, this will need to be cached and reapplied each time overlays_cut() is called. + var/image/turret_opened_overlay = image(icon, opened_state) + turret_opened_overlay.layer = layer-0.1 + add_overlay(turret_opened_overlay) + return ..() /obj/machinery/porta_turret/Destroy() qdel(spark_system) spark_system = null - . = ..() + return ..() + +/obj/machinery/porta_turret/update_icon() + if(stat & BROKEN) // Turret is dead. + icon_state = gun_destroyed_state + + else if(raised || raising) + // Turret is open. + if(powered() && enabled) + // Trying to shoot someone. + icon_state = gun_active_state + + else + // Disabled. + icon_state = gun_disabled_state + + else + // Its closed. + icon_state = closed_state + /obj/machinery/porta_turret/proc/setup() var/obj/item/weapon/gun/energy/E = installation //All energy-based weapons are applicable @@ -204,31 +285,6 @@ iconholder = 1 icon_color = "green" -var/list/turret_icons - -/obj/machinery/porta_turret/update_icon() - if(!turret_icons) - turret_icons = list() - turret_icons["open"] = image(icon, "openTurretCover") - - underlays.Cut() - underlays += turret_icons["open"] - - if(stat & BROKEN) - icon_state = "destroyed_target_prism" - else if(raised || raising) - if(powered() && enabled) - if(iconholder) - //lasers have a orange icon - icon_state = "[icon_color]_target_prism" - else - //almost everything has a blue icon - icon_state = "target_prism" - else - icon_state = "grey_target_prism" - else - icon_state = "turretCover" - /obj/machinery/porta_turret/proc/isLocked(mob/user) if(ailock && issilicon(user)) to_chat(user, "There seems to be a firewall preventing you from accessing this device.") @@ -406,16 +462,16 @@ var/list/turret_icons attacked = 0 ..() -/obj/machinery/porta_turret/attack_generic(mob/user as mob, var/damage) - if(isanimal(user)) - var/mob/living/simple_animal/S = user - if(damage >= 10) +/obj/machinery/porta_turret/attack_generic(mob/living/L, damage) + if(isanimal(L)) + var/mob/living/simple_mob/S = L + if(damage >= STRUCTURE_MIN_DAMAGE_THRESHOLD) var/incoming_damage = round(damage - (damage / 5)) //Turrets are slightly armored, assumedly. visible_message("\The [S] [pick(S.attacktext)] \the [src]!") take_damage(incoming_damage) S.do_attack_animation(src) return 1 - visible_message("\The [user] bonks \the [src]'s casing!") + visible_message("\The [L] bonks \the [src]'s casing!") return ..() /obj/machinery/porta_turret/emag_act(var/remaining_charges, var/mob/user) @@ -570,7 +626,7 @@ var/list/turret_icons if(get_dist(src, L) > 7) //if it's too far away, why bother? return TURRET_NOT_TARGET - if(!check_trajectory(L, src)) //check if we have true line of sight + if(!(L in check_trajectory(L, src))) //check if we have true line of sight return TURRET_NOT_TARGET if(emagged) // If emagged not even the dead get a rest @@ -634,7 +690,7 @@ var/list/turret_icons var/atom/flick_holder = new /atom/movable/porta_turret_cover(loc) flick_holder.layer = layer + 0.1 - flick("popup", flick_holder) + flick(raising_state, flick_holder) sleep(10) qdel(flick_holder) @@ -655,7 +711,7 @@ var/list/turret_icons var/atom/flick_holder = new /atom/movable/porta_turret_cover(loc) flick_holder.layer = layer + 0.1 - flick("popdown", flick_holder) + flick(lowering_state, flick_holder) sleep(10) qdel(flick_holder) @@ -722,7 +778,10 @@ var/list/turret_icons def_zone = pick(BP_TORSO, BP_GROIN) //Shooting Code: - A.launch(target, def_zone) + A.firer = src + A.old_style_target(target) + A.def_zone = def_zone + A.fire() // Reset the time needed to go back down, since we just tried to shoot at someone. timeout = 10 diff --git a/code/game/machinery/recharger.dm b/code/game/machinery/recharger.dm index bf10bf2ca1..c201264c3c 100644 --- a/code/game/machinery/recharger.dm +++ b/code/game/machinery/recharger.dm @@ -8,7 +8,7 @@ obj/machinery/recharger idle_power_usage = 4 active_power_usage = 40000 //40 kW var/obj/item/charging = null - var/list/allowed_devices = list(/obj/item/weapon/gun/energy, /obj/item/weapon/melee/baton, /obj/item/device/laptop, /obj/item/weapon/cell, /obj/item/device/flashlight, /obj/item/device/electronic_assembly, /obj/item/weapon/weldingtool/electric, /obj/item/ammo_magazine/smart, /obj/item/ammo_casing/nsfw_batt) //VOREStation Add - NSFW Batteries + var/list/allowed_devices = list(/obj/item/weapon/gun/energy, /obj/item/weapon/melee/baton, /obj/item/device/laptop, /obj/item/weapon/cell, /obj/item/device/flashlight, /obj/item/device/electronic_assembly, /obj/item/weapon/weldingtool/electric, /obj/item/ammo_magazine/smart, /obj/item/device/flash, /obj/item/ammo_casing/nsfw_batt) //VOREStation Add - NSFW Batteries var/icon_state_charged = "recharger2" var/icon_state_charging = "recharger1" var/icon_state_idle = "recharger0" //also when unpowered diff --git a/code/game/machinery/status_display.dm b/code/game/machinery/status_display.dm index e3a00abb4d..dcc5781bbb 100644 --- a/code/game/machinery/status_display.dm +++ b/code/game/machinery/status_display.dm @@ -49,6 +49,8 @@ var/const/STATUS_DISPLAY_TIME = 4 var/const/STATUS_DISPLAY_CUSTOM = 99 + var/seclevel = "green" + /obj/machinery/status_display/Destroy() if(radio_controller) radio_controller.remove_object(src,frequency) @@ -62,7 +64,7 @@ return // register for radio system -/obj/machinery/status_display/initialize() +/obj/machinery/status_display/Initialize() . = ..() if(radio_controller) radio_controller.add_object(src, frequency) @@ -136,7 +138,7 @@ update_display(line1, line2) return 1 if(STATUS_DISPLAY_ALERT) - set_picture(picture_state) + display_alert(seclevel) return 1 if(STATUS_DISPLAY_TIME) message1 = "TIME" @@ -165,6 +167,20 @@ message2 = "" index2 = 0 +/obj/machinery/status_display/proc/display_alert(var/newlevel) + remove_display() + if(seclevel != newlevel) + seclevel = newlevel + switch(seclevel) + if("green") set_light(l_range = 2, l_power = 0.25, l_color = "#00ff00") + if("yellow") set_light(l_range = 2, l_power = 0.25, l_color = "#ffff00") + if("violet") set_light(l_range = 2, l_power = 0.25, l_color = "#9933ff") + if("orange") set_light(l_range = 2, l_power = 0.25, l_color = "#ff9900") + if("blue") set_light(l_range = 2, l_power = 0.25, l_color = "#1024A9") + if("red") set_light(l_range = 4, l_power = 0.9, l_color = "#ff0000") + if("delta") set_light(l_range = 4, l_power = 0.9, l_color = "#FF6633") + set_picture("status_display_[seclevel]") + /obj/machinery/status_display/proc/set_picture(state) remove_display() if(!picture || picture_state != state) diff --git a/code/game/machinery/suit_storage_unit.dm b/code/game/machinery/suit_storage_unit.dm index 6bc68f4c8e..d94ac049b9 100644 --- a/code/game/machinery/suit_storage_unit.dm +++ b/code/game/machinery/suit_storage_unit.dm @@ -648,7 +648,7 @@ model_text = "Exploration" departments = list("Exploration","Old Exploration") -/obj/machinery/suit_cycler/exploration/initialize() +/obj/machinery/suit_cycler/exploreration/Initialize() species -= SPECIES_TESHARI return ..() diff --git a/code/game/machinery/telecomms/telecomunications.dm b/code/game/machinery/telecomms/telecomunications.dm index ac85f8dba4..c1955399c2 100644 --- a/code/game/machinery/telecomms/telecomunications.dm +++ b/code/game/machinery/telecomms/telecomunications.dm @@ -122,7 +122,7 @@ var/global/list/obj/machinery/telecomms/telecomms_list = list() var/turf/position = get_turf(src) listening_level = position.z -/obj/machinery/telecomms/initialize() +/obj/machinery/telecomms/Initialize() if(autolinkers.len) // Links nearby machines if(!long_range_link) @@ -317,7 +317,7 @@ var/global/list/obj/machinery/telecomms/telecomms_list = list() netspeed = 40 var/list/telecomms_map -/obj/machinery/telecomms/hub/initialize() +/obj/machinery/telecomms/hub/Initialize() . = ..() LAZYINITLIST(telecomms_map) diff --git a/code/game/machinery/teleporter.dm b/code/game/machinery/teleporter.dm index be31a5aa56..1d3556b45e 100644 --- a/code/game/machinery/teleporter.dm +++ b/code/game/machinery/teleporter.dm @@ -17,7 +17,7 @@ underlays += image('icons/obj/stationobjs.dmi', icon_state = "telecomp-wires") return -/obj/machinery/computer/teleporter/initialize() +/obj/machinery/computer/teleporter/Initialize() . = ..() var/obj/machinery/teleport/station/station var/obj/machinery/teleport/hub/hub @@ -69,7 +69,7 @@ for(var/obj/machinery/teleport/hub/H in range(1)) var/amount = rand(2,5) for(var/i=0;i\The [src] emits a low droning sound, before the pod door clicks open.") + return + else if(eject_dead && occupant && occupant.stat == DEAD) + visible_message("\The [src] sounds an alarm, swinging its hatch open.") + go_out() + +/obj/machinery/vr_sleeper/alien/attackby(var/obj/item/I, var/mob/user) + add_fingerprint(user) + + if(occupant && (istype(I, /obj/item/device/healthanalyzer) || istype(I, /obj/item/device/robotanalyzer))) + I.attack(occupant, user) + return + +/obj/machinery/vr_sleeper/alien/eject() + set src in view(1) + set category = "Object" + + if(usr.incapacitated()) + return + + var/forced = FALSE + + if(stat & (BROKEN) || (eject_dead && occupant && occupant.stat == DEAD)) + forced = TRUE + + go_out(forced) + add_fingerprint(usr) + +/obj/machinery/vr_sleeper/alien/go_out(var/forced = TRUE) + if(!occupant) + return + + if(!forced && avatar && avatar.stat != DEAD && alert(avatar, "Someone wants to remove you from virtual reality. Do you want to leave?", "Leave VR?", "Yes", "No") == "No") + return + + avatar.exit_vr() + + if(occupant && occupant.client) + occupant.client.eye = occupant.client.mob + occupant.client.perspective = MOB_PERSPECTIVE + occupant.loc = src.loc + occupant = null + for(var/atom/movable/A in src) // In case an object was dropped inside or something + if(A == circuit) + continue + if(A in component_parts) + continue + A.loc = src.loc + update_use_power(1) + update_icon() + +/obj/machinery/vr_sleeper/alien/enter_vr() + + if(!occupant) + return + + if(!occupant.mind) + return + + if(occupant.stat == DEAD && !occupant.client) + return + + if(avatar && !occupant.stat) + to_chat(occupant,"\The [src] begins to [pick("whir","hum","pulse")] as a screen appears in front of you.") + if(alert(occupant, "This pod is already linked. Are you certain you wish to engage?", "Commmit?", "Yes", "No") == "No") + visible_message("\The [src] pulses!") + + to_chat(occupant,"Your mind blurs as information bombards you.") + + if(!avatar) + var/turf/T = get_turf(src) + avatar = new(src, produce_species) + if(occupant.species.name != "Promethean" && occupant.species.name != "Human" && mirror_first_occupant) + avatar.shapeshifter_change_shape(occupant.species.name) + avatar.Sleeping(6) + + occupant.enter_vr(avatar) + + var/newname = sanitize(input(avatar, "Your mind feels foggy. You're certain your name is [occupant.real_name], but it could also be [avatar.name]. Would you like to change it to something else?", "Name change") as null|text, MAX_NAME_LEN) + if (newname) + avatar.real_name = newname + + avatar.forceMove(T) + visible_message("\The [src] [pick("gurgles", "churns", "sloshes")] before spitting out \the [avatar]!") + + else + + // There's only one body per one of these pods, so let's be kind. + var/newname = sanitize(input(avatar, "Your mind feels foggy. You're certain your name is [occupant.real_name], but it feels like it is [avatar.name]. Would you like to change it to something else?", "Name change") as null|text, MAX_NAME_LEN) + if(newname) + avatar.real_name = newname + + occupant.enter_vr(avatar) + + +/* + * Subtypes + */ + +/obj/machinery/vr_sleeper/alien/random_replicant + possible_species = list(SPECIES_REPLICANT, SPECIES_REPLICANT_ALPHA, SPECIES_REPLICANT_BETA) + +/obj/machinery/vr_sleeper/alien/alpha_replicant + produce_species = SPECIES_REPLICANT_ALPHA + +/obj/machinery/vr_sleeper/alien/beta_replicant + produce_species = SPECIES_REPLICANT_BETA diff --git a/code/game/machinery/vr_console.dm b/code/game/machinery/virtual_reality/vr_console.dm similarity index 70% rename from code/game/machinery/vr_console.dm rename to code/game/machinery/virtual_reality/vr_console.dm index 2b465e1265..dcd6e555b9 100644 --- a/code/game/machinery/vr_console.dm +++ b/code/game/machinery/virtual_reality/vr_console.dm @@ -3,12 +3,20 @@ desc = "A fancy bed with built-in sensory I/O ports and connectors to interface users' minds with their bodies in virtual reality." icon = 'icons/obj/Cryogenic2.dmi' icon_state = "syndipod_0" + + var/base_state = "syndipod_" + density = 1 anchored = 1 circuit = /obj/item/weapon/circuitboard/vr_sleeper var/mob/living/carbon/human/occupant = null var/mob/living/carbon/human/avatar = null var/datum/mind/vr_mind = null + var/datum/effect/effect/system/smoke_spread/bad/smoke + + var/eject_dead = TRUE + + var/mirror_first_occupant = TRUE // Do we force the newly produced body to look like the occupant? use_power = 1 idle_power_usage = 15 @@ -23,16 +31,27 @@ RefreshParts() -/obj/machinery/vr_sleeper/initialize() +/obj/machinery/vr_sleeper/Initialize() . = ..() + smoke = new update_icon() +/obj/machinery/vr_sleeper/Destroy() + . = ..() + go_out() + /obj/machinery/vr_sleeper/process() if(stat & (NOPOWER|BROKEN)) + if(occupant) + go_out() + visible_message("\The [src] emits a low droning sound, before the pod door clicks open.") return + else if(eject_dead && occupant && occupant.stat == DEAD) // If someone dies somehow while inside, spit them out. + visible_message("\The [src] sounds an alarm, swinging its hatch open.") + go_out() /obj/machinery/vr_sleeper/update_icon() - icon_state = "syndipod_[occupant ? "1" : "0"]" + icon_state = "[base_state][occupant ? "1" : "0"]" /obj/machinery/vr_sleeper/Topic(href, href_list) if(..()) @@ -51,6 +70,11 @@ /obj/machinery/vr_sleeper/attackby(var/obj/item/I, var/mob/user) add_fingerprint(user) + + if(occupant && (istype(I, /obj/item/device/healthanalyzer) || istype(I, /obj/item/device/robotanalyzer))) + I.attack(occupant, user) + return + if(default_deconstruction_screwdriver(user, I)) return else if(default_deconstruction_crowbar(user, I)) @@ -83,26 +107,31 @@ if(occupant) // This will eject the user from VR - // ### Fry the brain? + // ### Fry the brain? Yes. Maybe. + if(prob(15 / ( severity / 4 )) && occupant.species.has_organ[O_BRAIN] && occupant.internal_organs_by_name[O_BRAIN]) + var/obj/item/organ/O = occupant.internal_organs_by_name[O_BRAIN] + O.take_damage(severity * 2) + visible_message("\The [src]'s internal lighting flashes rapidly, before the hatch swings open with a cloud of smoke.") + smoke.set_up(n = severity, 0, src) + smoke.start("#202020") go_out() ..(severity) /obj/machinery/vr_sleeper/verb/eject() - set src in oview(1) + set src in view(1) set category = "Object" set name = "Eject VR Capsule" if(usr.incapacitated()) return - if(usr != occupant && avatar && alert(avatar, "Someone wants to remove you from virtual reality. Do you want to leave?", "Leave VR?", "Yes", "No") == "No") - return + var/forced = FALSE - // The player in VR is fine with leaving, kick them out and reset avatar - avatar.exit_vr() - avatar = null - go_out() + if(stat & (BROKEN|NOPOWER) || occupant && occupant.stat == DEAD) + forced = TRUE + + go_out(forced) add_fingerprint(usr) /obj/machinery/vr_sleeper/verb/climb_in() @@ -126,9 +155,9 @@ if(stat & (BROKEN|NOPOWER)) return if(!ishuman(M)) - user << "\The [src] rejects [M] with a sharp beep." + to_chat(user, "\The [src] rejects [M] with a sharp beep.") if(occupant) - user << "\The [src] is already occupied." + to_chat(user, "\The [src] is already occupied.") return if(M == user) @@ -153,10 +182,16 @@ enter_vr() return -/obj/machinery/vr_sleeper/proc/go_out() +/obj/machinery/vr_sleeper/proc/go_out(var/forced = TRUE) if(!occupant) return + if(!forced && avatar && alert(avatar, "Someone wants to remove you from virtual reality. Do you want to leave?", "Leave VR?", "Yes", "No") == "No") + return + + avatar.exit_vr() + avatar = null + if(occupant.client) occupant.client.eye = occupant.client.mob occupant.client.perspective = MOB_PERSPECTIVE @@ -182,12 +217,12 @@ return // Mob doesn't have an active consciousness to send/receive from - if(occupant.stat != CONSCIOUS) + if(occupant.stat == DEAD) return avatar = occupant.vr_link // If they've already enterred VR, and are reconnecting, prompt if they want a new body - if(avatar && alert(occupant, "You already have a Virtual Reality avatar. Would you like to use it?", "New avatar", "Yes", "No") == "No") + if(avatar && alert(occupant, "You already have a [avatar.stat == DEAD ? "" : "deceased "]Virtual Reality avatar. Would you like to use it?", "New avatar", "Yes", "No") == "No") // Delink the mob occupant.vr_link = null avatar = null @@ -210,7 +245,7 @@ avatar = new(S, "Virtual Reality Avatar") // If the user has a non-default (Human) bodyshape, make it match theirs. - if(occupant.species.name != "Promethean" && occupant.species.name != "Human") + if(occupant.species.name != "Promethean" && occupant.species.name != "Human" && mirror_first_occupant) avatar.shapeshifter_change_shape(occupant.species.name) avatar.forceMove(get_turf(S)) // Put the mob on the landmark, instead of inside it avatar.Sleeping(1) diff --git a/code/game/machinery/wall_frames.dm b/code/game/machinery/wall_frames.dm index dd75e2d8e9..2531c69574 100644 --- a/code/game/machinery/wall_frames.dm +++ b/code/game/machinery/wall_frames.dm @@ -3,7 +3,6 @@ desc = "Used for building frames." icon = 'icons/obj/stock_parts.dmi' icon_state = "frame_bitem" - flags = CONDUCT var/build_machine_type var/refund_amt = 5 var/refund_type = /obj/item/stack/material/steel diff --git a/code/game/mecha/combat/gorilla.dm b/code/game/mecha/combat/gorilla.dm index 65e422e402..3d29cc8f0f 100644 --- a/code/game/mecha/combat/gorilla.dm +++ b/code/game/mecha/combat/gorilla.dm @@ -10,7 +10,7 @@ HONK Blaster and a pulse cannon protected by projectile armor and powered by a b icon_state = "mecha_grenadelnchr" equip_cooldown = 55 // 5.5 seconds projectile = /obj/item/projectile/bullet/cannon - fire_sound = 'sound/weapons/cannon.ogg' + fire_sound = 'sound/weapons/Gunshot_cannon.ogg' projectiles = 1 projectile_energy_cost = 1000 salvageable = 0 // We don't want players ripping this off a dead mech. diff --git a/code/game/mecha/combat/marauder.dm b/code/game/mecha/combat/marauder.dm index 27bdf905a9..b8aed16cef 100644 --- a/code/game/mecha/combat/marauder.dm +++ b/code/game/mecha/combat/marauder.dm @@ -1,6 +1,7 @@ /obj/mecha/combat/marauder desc = "Heavy-duty, combat exosuit, developed after the Durand model. Rarely found among civilian populations." name = "Marauder" + catalogue_data = list(/datum/category_item/catalogue/technology/marauder) icon_state = "marauder" initial_icon = "marauder" step_in = 5 @@ -33,6 +34,7 @@ /obj/mecha/combat/marauder/seraph desc = "Heavy-duty, command-type exosuit. This is a custom model, utilized only by high-ranking military personnel." name = "Seraph" + catalogue_data = list(/datum/category_item/catalogue/technology/seraph) icon_state = "seraph" initial_icon = "seraph" operation_req_access = list(access_cent_creed) diff --git a/code/game/mecha/equipment/tools/medical_tools.dm b/code/game/mecha/equipment/tools/medical_tools.dm index 2fb2538cfb..f763304fc0 100644 --- a/code/game/mecha/equipment/tools/medical_tools.dm +++ b/code/game/mecha/equipment/tools/medical_tools.dm @@ -40,10 +40,9 @@ if(occupant) occupant_message("The sleeper is already occupied") return - for(var/mob/living/simple_animal/slime/M in range(1,target)) - if(M.victim == target) - occupant_message("[target] will not fit into the sleeper because they have a slime latched onto their head.") - return + if(target.has_buckled_mobs()) + occupant_message(span("warning", "\The [target] has other entities attached to it. Remove them first.")) + return occupant_message("You start putting [target] into [src].") chassis.visible_message("[chassis] starts putting [target] into the [src].") var/C = chassis.loc @@ -452,7 +451,7 @@ create_reagents(max_volume) synth = new (list(src),0) -/obj/item/mecha_parts/mecha_equipment/tool/syringe_gun/initialize() +/obj/item/mecha_parts/mecha_equipment/tool/syringe_gun/Initialize() . = ..() //Wow nice, firsties if(LAZYLEN(allowed_reagents) && !istext(allowed_reagents[1])) diff --git a/code/game/mecha/equipment/tools/tools.dm b/code/game/mecha/equipment/tools/tools.dm index 68e0c1380e..b621d97cba 100644 --- a/code/game/mecha/equipment/tools/tools.dm +++ b/code/game/mecha/equipment/tools/tools.dm @@ -177,12 +177,11 @@ var/spray_amount = 5 //units of liquid per particle. 5 is enough to wet the floor - it's a big fire extinguisher, so should be fine var/max_water = 1000 -/obj/item/mecha_parts/mecha_equipment/tool/extinguisher/New() +/obj/item/mecha_parts/mecha_equipment/tool/extinguisher/Initialize() + . = ..() reagents = new/datum/reagents(max_water) reagents.my_atom = src reagents.add_reagent("water", max_water) - ..() - return /obj/item/mecha_parts/mecha_equipment/tool/extinguisher/action(atom/target) //copypasted from extinguisher. TODO: Rewrite from scratch. if(!action_checks(target) || get_dist(chassis, target)>3) return @@ -247,7 +246,7 @@ equip_type = EQUIP_SPECIAL var/obj/item/weapon/rcd/electric/mounted/mecha/my_rcd = null -/obj/item/mecha_parts/mecha_equipment/tool/rcd/initialize() +/obj/item/mecha_parts/mecha_equipment/tool/rcd/Initialize() my_rcd = new(src) return ..() @@ -1203,9 +1202,10 @@ usr << "Kinda hard to climb in while handcuffed don't you think?" return - for(var/mob/living/simple_animal/slime/M in range(1,usr)) - if(M.victim == usr) - usr << "You're too busy getting your life sucked out of you." + if(isliving(usr)) + var/mob/living/L = usr + if(L.has_buckled_mobs()) + to_chat(L, span("warning", "You have other entities attached to yourself. Remove them first.")) return //search for a valid passenger compartment @@ -1329,4 +1329,4 @@ /obj/item/mecha_parts/mecha_equipment/tool/jetpack/do_after_cooldown() sleep(equip_cooldown) wait = 0 - return 1 \ No newline at end of file + return 1 diff --git a/code/game/mecha/equipment/weapons/weapons.dm b/code/game/mecha/equipment/weapons/weapons.dm index a53c471eb3..2be7566822 100644 --- a/code/game/mecha/equipment/weapons/weapons.dm +++ b/code/game/mecha/equipment/weapons/weapons.dm @@ -19,7 +19,7 @@ return 0 return ..() -/obj/item/mecha_parts/mecha_equipment/weapon/action(atom/target) +/obj/item/mecha_parts/mecha_equipment/weapon/action(atom/target, params) if(!action_checks(target)) return var/turf/curloc = chassis.loc @@ -39,7 +39,7 @@ playsound(chassis, fire_sound, fire_volume, 1) projectiles-- var/P = new projectile(curloc) - Fire(P, target) + Fire(P, target, params) if(i == 1) set_ready_state(0) if(fire_cooldown) @@ -60,11 +60,12 @@ return -/obj/item/mecha_parts/mecha_equipment/weapon/proc/Fire(atom/A, atom/target) +/obj/item/mecha_parts/mecha_equipment/weapon/proc/Fire(atom/A, atom/target, params) var/obj/item/projectile/P = A P.dispersion = deviation process_accuracy(P, chassis.occupant, target) - P.launch(target) + P.preparePixelProjectile(target, chassis.occupant, params) + P.fire() /obj/item/mecha_parts/mecha_equipment/weapon/proc/process_accuracy(obj/projectile, mob/living/user, atom/target) var/obj/item/projectile/P = projectile @@ -296,7 +297,7 @@ description_info = "This weapon cannot be fired indoors, underground, or on-station." icon_state = "mecha_mortar" equip_cooldown = 30 - fire_sound = 'sound/weapons/cannon.ogg' + fire_sound = 'sound/weapons/Gunshot_cannon.ogg' fire_volume = 100 projectiles = 3 deviation = 0.6 @@ -319,7 +320,7 @@ icon_state = "mecha_scatter" equip_cooldown = 20 projectile = /obj/item/projectile/bullet/pellet/shotgun/flak - fire_sound = 'sound/weapons/gunshot/shotgun.ogg' + fire_sound = 'sound/weapons/Gunshot_shotgun.ogg' fire_volume = 80 projectiles = 40 projectiles_per_shot = 4 @@ -345,7 +346,7 @@ icon_state = "mecha_uac2" equip_cooldown = 10 projectile = /obj/item/projectile/bullet/pistol/medium - fire_sound = 'sound/weapons/machinegun.ogg' + fire_sound = 'sound/weapons/Gunshot_machinegun.ogg' projectiles = 30 //10 bursts, matching the Scattershot's 10. Also, conveniently, doesn't eat your powercell when reloading like 300 bullets does. projectiles_per_shot = 3 deviation = 0.3 @@ -523,7 +524,7 @@ icon_state = "mecha_drac3" equip_cooldown = 20 projectile = /obj/item/projectile/bullet/incendiary - fire_sound = 'sound/weapons/machinegun.ogg' + fire_sound = 'sound/weapons/Gunshot_machinegun.ogg' projectiles = 30 projectiles_per_shot = 2 deviation = 0.4 diff --git a/code/game/mecha/mech_fabricator.dm b/code/game/mecha/mech_fabricator.dm index c289d79c69..5a80ed7cc3 100644 --- a/code/game/mecha/mech_fabricator.dm +++ b/code/game/mecha/mech_fabricator.dm @@ -38,7 +38,7 @@ files = new /datum/research(src) //Setup the research data holder. return -/obj/machinery/mecha_part_fabricator/initialize() +/obj/machinery/mecha_part_fabricator/Initialize() update_categories() . = ..() diff --git a/code/game/mecha/mech_prosthetics.dm b/code/game/mecha/mech_prosthetics.dm index f6872478e0..c77bf27a92 100644 --- a/code/game/mecha/mech_prosthetics.dm +++ b/code/game/mecha/mech_prosthetics.dm @@ -39,7 +39,7 @@ files = new /datum/research(src) //Setup the research data holder. return -/obj/machinery/pros_fabricator/initialize() +/obj/machinery/pros_fabricator/Initialize() . = ..() manufacturer = basic_robolimb.company update_categories() diff --git a/code/game/mecha/mech_sensor.dm b/code/game/mecha/mech_sensor.dm index eee1ecefdb..aa598d1b0d 100644 --- a/code/game/mecha/mech_sensor.dm +++ b/code/game/mecha/mech_sensor.dm @@ -15,14 +15,14 @@ var/frequency = 1379 var/datum/radio_frequency/radio_connection -/obj/machinery/mech_sensor/CanPass(atom/movable/mover, turf/target, height=0, air_group=0) - if(!src.enabled()) return 1 - if(air_group || (height==0)) return 1 +/obj/machinery/mech_sensor/CanPass(atom/movable/mover, turf/target) + if(!enabled()) + return TRUE - if ((get_dir(loc, target) & dir) && src.is_blocked(mover)) + if((get_dir(loc, target) & dir) && src.is_blocked(mover)) src.give_feedback(mover) - return 0 - return 1 + return FALSE + return TRUE /obj/machinery/mech_sensor/proc/is_blocked(O as obj) if(istype(O, /obj/mecha/medical/odysseus)) @@ -69,7 +69,7 @@ else icon_state = "airlock_sensor_off" -/obj/machinery/mech_sensor/initialize() +/obj/machinery/mech_sensor/Initialize() . = ..() set_frequency(frequency) diff --git a/code/game/mecha/mecha.dm b/code/game/mecha/mecha.dm index 82a0627fa7..9b17cb8613 100644 --- a/code/game/mecha/mecha.dm +++ b/code/game/mecha/mecha.dm @@ -317,7 +317,7 @@ // return ..() */ -/obj/mecha/proc/click_action(atom/target,mob/user) +/obj/mecha/proc/click_action(atom/target,mob/user, params) if(!src.occupant || src.occupant != user ) return if(user.stat) return if(state) @@ -339,7 +339,7 @@ if(selected && selected.is_ranged()) selected.action(target) else if(selected && selected.is_melee()) - selected.action(target) + selected.action(target, params) else src.melee_action(target) return @@ -1154,10 +1154,12 @@ to_chat(usr,"Access denied") src.log_append_to_last("Permission denied.") return - for(var/mob/living/simple_animal/slime/M in range(1,usr)) - if(M.victim == usr) - to_chat(usr,"You're too busy getting your life sucked out of you.") + if(isliving(usr)) + var/mob/living/L = usr + if(L.has_buckled_mobs()) + to_chat(L, span("warning", "You have other entities attached to yourself. Remove them first.")) return + // usr << "You start climbing into [src.name]" visible_message("\The [usr] starts to climb into [src.name]") diff --git a/code/game/mecha/mecha_parts.dm b/code/game/mecha/mecha_parts.dm index 00720d13dc..dc4036294b 100644 --- a/code/game/mecha/mecha_parts.dm +++ b/code/game/mecha/mecha_parts.dm @@ -9,7 +9,6 @@ icon = 'icons/mecha/mech_construct.dmi' icon_state = "blank" w_class = ITEMSIZE_HUGE - flags = CONDUCT origin_tech = list(TECH_DATA = 2, TECH_MATERIAL = 2) @@ -17,7 +16,6 @@ name="Mecha Chassis" icon_state = "backbone" var/datum/construction/construct - flags = CONDUCT attackby(obj/item/W as obj, mob/user as mob) if(!construct || !construct.action(W, user)) diff --git a/code/game/mecha/mecha_wreckage.dm b/code/game/mecha/mecha_wreckage.dm index 73cee1223b..bc20f25b2e 100644 --- a/code/game/mecha/mecha_wreckage.dm +++ b/code/game/mecha/mecha_wreckage.dm @@ -99,6 +99,14 @@ name = "Dark Gygax wreckage" icon_state = "darkgygax-broken" +/obj/effect/decal/mecha_wreckage/gygax/adv + name = "Advanced Dark Gygax wreckage" + icon_state = "darkgygax_adv-broken" + +/obj/effect/decal/mecha_wreckage/gygax/medgax + name = "Medgax wreckage" + icon_state = "medgax-broken" + /obj/effect/decal/mecha_wreckage/marauder name = "Marauder wreckage" icon_state = "marauder-broken" @@ -198,6 +206,9 @@ parts -= part return +/obj/effect/decal/mecha_wreckage/odysseus/murdysseus + icon_state = "murdysseus-broken" + /obj/effect/decal/mecha_wreckage/hoverpod name = "Hover pod wreckage" icon_state = "engineering_pod-broken" diff --git a/code/game/mecha/medical/medical.dm b/code/game/mecha/medical/medical.dm index adb75800ea..90ab62681a 100644 --- a/code/game/mecha/medical/medical.dm +++ b/code/game/mecha/medical/medical.dm @@ -7,7 +7,7 @@ cargo_capacity = 1 -/obj/mecha/medical/initialize() +/obj/mecha/medical/Initialize() . = ..() var/turf/T = get_turf(src) if(isPlayerLevel(T.z)) diff --git a/code/game/mecha/medical/odysseus.dm b/code/game/mecha/medical/odysseus.dm index 8a1242d1a2..b3b9faa37d 100644 --- a/code/game/mecha/medical/odysseus.dm +++ b/code/game/mecha/medical/odysseus.dm @@ -1,6 +1,10 @@ /obj/mecha/medical/odysseus/ desc = "These exosuits are developed and produced by Vey-Med. (© All rights reserved)." name = "Odysseus" + catalogue_data = list( + /datum/category_item/catalogue/technology/odysseus, + /datum/category_item/catalogue/information/organization/vey_med + ) icon_state = "odysseus" initial_icon = "odysseus" step_in = 2 @@ -109,7 +113,7 @@ else if(foundVirus) holder.icon_state = "hudill" else if(patient.has_brain_worms()) - var/mob/living/simple_animal/borer/B = patient.has_brain_worms() + var/mob/living/simple_mob/animal/borer/B = patient.has_brain_worms() if(B.controlling) holder.icon_state = "hudbrainworm" else diff --git a/code/game/mecha/micro/mecha_parts_vr.dm b/code/game/mecha/micro/mecha_parts_vr.dm index f16442abf7..59f6714351 100644 --- a/code/game/mecha/micro/mecha_parts_vr.dm +++ b/code/game/mecha/micro/mecha_parts_vr.dm @@ -11,7 +11,6 @@ name="Mecha Chassis" icon_state = "backbone" var/datum/construction/construct - flags = CONDUCT attackby(obj/item/W as obj, mob/user as mob) if(!construct || !construct.action(W, user)) diff --git a/code/game/mecha/micro/micro_equipment.dm b/code/game/mecha/micro/micro_equipment.dm index 805148512d..9d2cfe40cd 100644 --- a/code/game/mecha/micro/micro_equipment.dm +++ b/code/game/mecha/micro/micro_equipment.dm @@ -49,7 +49,7 @@ equip_cooldown = 15 var/mode = 0 //0 - buckshot, 1 - beanbag, 2 - slug. projectile = /obj/item/projectile/bullet/pellet/shotgun - fire_sound = 'sound/weapons/shotgun.ogg' + fire_sound = 'sound/weapons/Gunshot_shotgun.ogg' fire_volume = 80 projectiles = 6 projectiles_per_shot = 1 diff --git a/code/game/mecha/working/hoverpod.dm b/code/game/mecha/working/hoverpod.dm index 8a79b5a8ac..8c19c2b004 100644 --- a/code/game/mecha/working/hoverpod.dm +++ b/code/game/mecha/working/hoverpod.dm @@ -1,6 +1,7 @@ /obj/mecha/working/hoverpod desc = "Stubby and round, this space-capable craft is an ancient favorite." name = "Hover Pod" + catalogue_data = list(/datum/category_item/catalogue/technology/hoverpod) icon_state = "engineering_pod" initial_icon = "engineering_pod" internal_damage_threshold = 80 diff --git a/code/game/mecha/working/working.dm b/code/game/mecha/working/working.dm index dbdf68ce5b..f2149b1cdd 100644 --- a/code/game/mecha/working/working.dm +++ b/code/game/mecha/working/working.dm @@ -6,7 +6,7 @@ max_universal_equip = 1 max_special_equip = 1 -/obj/mecha/working/initialize() +/obj/mecha/working/Initialize() . = ..() var/turf/T = get_turf(src) if(isPlayerLevel(T.z)) diff --git a/code/game/objects/banners.dm b/code/game/objects/banners.dm index 445df1dff5..3bca84896d 100644 --- a/code/game/objects/banners.dm +++ b/code/game/objects/banners.dm @@ -23,13 +23,16 @@ name = "\improper NanoTrasen banner" icon_state = "banner-nt" desc = "A banner with NanoTrasen's logo on it." + catalogue_data = list(/datum/category_item/catalogue/information/organization/nanotrasen) /obj/item/weapon/banner/solgov name = "\improper SolGov banner" icon_state = "banner-solgov" desc = "A banner with the symbol of the Solar Confederate Government." + catalogue_data = list(/datum/category_item/catalogue/information/organization/solgov) /obj/item/weapon/banner/virgov name = "\improper VirGov banner" icon_state = "banner-virgov" - desc = "A banner with the symbol of the local government, the Vir Governmental Authority, also known as SifGov." \ No newline at end of file + desc = "A banner with the symbol of the local government, the Vir Governmental Authority, also known as VirGov." + catalogue_data = list(/datum/category_item/catalogue/information/organization/virgov) \ No newline at end of file diff --git a/code/game/objects/buckling.dm b/code/game/objects/buckling.dm index b191c69818..2ce02adb67 100644 --- a/code/game/objects/buckling.dm +++ b/code/game/objects/buckling.dm @@ -195,13 +195,3 @@ else L.set_dir(dir) return TRUE - -/atom/movable/Move(atom/newloc, direct = 0) - . = ..() - if(. && has_buckled_mobs() && !handle_buckled_mob_movement(newloc, direct)) //movement failed due to buckled mob(s) - . = 0 - //VOREStation Add - else if(. && riding_datum) - riding_datum.handle_vehicle_layer() - riding_datum.handle_vehicle_offsets() - //VOREStation Add End diff --git a/code/game/objects/effects/alien/aliens.dm b/code/game/objects/effects/alien/aliens.dm index 7a79c21e1e..44963c31d2 100644 --- a/code/game/objects/effects/alien/aliens.dm +++ b/code/game/objects/effects/alien/aliens.dm @@ -26,6 +26,7 @@ density = 1 opacity = 1 anchored = 1 + can_atmos_pass = ATMOS_PASS_NO var/health = 200 //var/mob/living/affecting = null @@ -128,8 +129,7 @@ ..() return -/obj/effect/alien/resin/CanPass(atom/movable/mover, turf/target, height=0, air_group=0) - if(air_group) return 0 +/obj/effect/alien/resin/CanPass(atom/movable/mover, turf/target) if(istype(mover) && mover.checkpass(PASSGLASS)) return !opacity return !density diff --git a/code/game/objects/effects/chem/chemsmoke.dm b/code/game/objects/effects/chem/chemsmoke.dm index 436ebabcc9..43b42cbac9 100644 --- a/code/game/objects/effects/chem/chemsmoke.dm +++ b/code/game/objects/effects/chem/chemsmoke.dm @@ -130,9 +130,9 @@ var/offset = 0 var/points = round((radius * 2 * M_PI) / arcLength) - var/angle = round(ToDegrees(arcLength / radius), 1) + var/angle = round(TODEGREES(arcLength / radius), 1) - if(!IsInteger(radius)) + if(!ISINTEGER(radius)) offset = 45 //degrees for(var/j = 0, j < points, j++) diff --git a/code/game/objects/effects/chem/foam.dm b/code/game/objects/effects/chem/foam.dm index 03f743db6b..f32a75dcce 100644 --- a/code/game/objects/effects/chem/foam.dm +++ b/code/game/objects/effects/chem/foam.dm @@ -24,7 +24,7 @@ process() checkReagents() spawn(120) - processing_objects.Remove(src) + STOP_PROCESSING(SSobj, src) sleep(30) if(metal) var/obj/structure/foamedmetal/M = new(src.loc) @@ -130,6 +130,7 @@ anchored = 1 name = "foamed metal" desc = "A lightweight foamed metal wall." + can_atmos_pass = ATMOS_PASS_NO var/metal = 1 // 1 = aluminum, 2 = iron /obj/structure/foamedmetal/New() @@ -178,8 +179,3 @@ qdel(src) else user << "You hit the metal foam to no effect." - -/obj/structure/foamedmetal/CanPass(atom/movable/mover, turf/target, height=1.5, air_group = 0) - if(air_group) - return 0 - return !density \ No newline at end of file diff --git a/code/game/objects/effects/decals/Cleanable/humans.dm b/code/game/objects/effects/decals/Cleanable/humans.dm index 69d875d977..3b1584ca19 100644 --- a/code/game/objects/effects/decals/Cleanable/humans.dm +++ b/code/game/objects/effects/decals/Cleanable/humans.dm @@ -33,11 +33,11 @@ var/global/list/image/splatter_cache=list() if(invisibility != 100) invisibility = 100 amount = 0 - processing_objects -= src + STOP_PROCESSING(SSobj, src) ..(ignore=1) /obj/effect/decal/cleanable/blood/Destroy() - processing_objects -= src + STOP_PROCESSING(SSobj, src) return ..() /obj/effect/decal/cleanable/blood/New() @@ -53,7 +53,7 @@ var/global/list/image/splatter_cache=list() blood_DNA |= B.blood_DNA.Copy() qdel(B) drytime = world.time + DRYING_TIME * (amount+1) - processing_objects += src + START_PROCESSING(SSobj, src) /obj/effect/decal/cleanable/blood/process() if(world.time > drytime) @@ -115,7 +115,7 @@ var/global/list/image/splatter_cache=list() desc = drydesc color = adjust_brightness(color, -50) amount = 0 - processing_objects -= src + STOP_PROCESSING(SSobj, src) /obj/effect/decal/cleanable/blood/attack_hand(mob/living/carbon/human/user) ..() @@ -250,4 +250,4 @@ var/global/list/image/splatter_cache=list() /obj/effect/decal/cleanable/mucus/mapped/New() ..() virus2 |= new /datum/disease2/disease - virus2.makerandom() + virus2[1].makerandom() diff --git a/code/game/objects/effects/decals/contraband.dm b/code/game/objects/effects/decals/contraband.dm index 0d7370d269..c98cacb785 100644 --- a/code/game/objects/effects/decals/contraband.dm +++ b/code/game/objects/effects/decals/contraband.dm @@ -109,7 +109,7 @@ pixel_x = -32 pixel_y = 0 -/obj/structure/sign/poster/initialize() +/obj/structure/sign/poster/Initialize() . = ..() if (poster_type) var/path = text2path(poster_type) diff --git a/code/game/objects/effects/effect_system.dm b/code/game/objects/effects/effect_system.dm index e92268f4da..f21d6443fb 100644 --- a/code/game/objects/effects/effect_system.dm +++ b/code/game/objects/effects/effect_system.dm @@ -103,9 +103,9 @@ steam.start() -- spawns the effect if (istype(T, /turf)) T.hotspot_expose(1000,100) -/obj/effect/effect/sparks/initialize() +/obj/effect/effect/sparks/Initialize() . = ..() - schedule_task_in(5 SECONDS, /proc/qdel, list(src)) + QDEL_IN(src, 5 SECONDS) /obj/effect/effect/sparks/Destroy() var/turf/T = src.loc @@ -225,15 +225,16 @@ steam.start() -- spawns the effect /obj/effect/effect/smoke/bad/Move() ..() - for(var/mob/living/carbon/M in get_turf(src)) - affect(M) + for(var/mob/living/L in get_turf(src)) + affect(L) -/obj/effect/effect/smoke/bad/affect(var/mob/living/carbon/M) +/obj/effect/effect/smoke/bad/affect(var/mob/living/L) if (!..()) return 0 - M.adjustOxyLoss(1) - if(prob(25)) - M.emote("cough") + if(L.needs_to_breathe()) + L.adjustOxyLoss(1) + if(prob(25)) + L.emote("cough") /* Not feasile until a later date /obj/effect/effect/smoke/bad/Crossed(atom/movable/M as mob|obj) @@ -251,6 +252,72 @@ steam.start() -- spawns the effect projectiles -= proj */ +///////////////////////////////////////////// +// 'Elemental' smoke +///////////////////////////////////////////// + +/obj/effect/effect/smoke/elemental + name = "cloud" + desc = "A cloud of some kind that seems really generic and boring." + opacity = FALSE + var/strength = 5 // How much damage to do inside each affect() + +/obj/effect/effect/smoke/elemental/Initialize() + START_PROCESSING(SSobj, src) + return ..() + +/obj/effect/effect/smoke/elemental/Destroy() + STOP_PROCESSING(SSobj, src) + return ..() + +/obj/effect/effect/smoke/elemental/Move() + ..() + for(var/mob/living/L in range(1, src)) + affect(L) + +/obj/effect/effect/smoke/elemental/process() + for(var/mob/living/L in range(1, src)) + affect(L) + + +/obj/effect/effect/smoke/elemental/fire + name = "burning cloud" + desc = "A cloud of something that is on fire." + color = "#FF9933" + light_color = "#FF0000" + light_range = 2 + light_power = 5 + +/obj/effect/effect/smoke/elemental/fire/affect(mob/living/L) + L.inflict_heat_damage(strength) + L.add_modifier(/datum/modifier/fire, 6 SECONDS) // Around 15 damage per stack. + +/obj/effect/effect/smoke/elemental/frost + name = "freezing cloud" + desc = "A cloud filled with brutally cold mist." + color = "#00CCFF" + +/obj/effect/effect/smoke/elemental/frost/affect(mob/living/L) + L.inflict_cold_damage(strength) + +/obj/effect/effect/smoke/elemental/shock + name = "charged cloud" + desc = "A cloud charged with electricity." + color = "#4D4D4D" + +/obj/effect/effect/smoke/elemental/shock/affect(mob/living/L) + L.inflict_shock_damage(strength) + +/obj/effect/effect/smoke/elemental/mist + name = "misty cloud" + desc = "A cloud filled with water vapor." + color = "#CCFFFF" + alpha = 128 + strength = 1 + +/obj/effect/effect/smoke/elemental/mist/affect(mob/living/L) + L.water_act(strength) + ///////////////////////////////////////////// // Smoke spread ///////////////////////////////////////////// @@ -282,7 +349,8 @@ steam.start() -- spawns the effect src.location = get_turf(holder) var/obj/effect/effect/smoke/smoke = new smoke_type(src.location) src.total_smoke++ - smoke.color = I + if(I) + smoke.color = I var/direction = src.direction if(!direction) if(src.cardinals) @@ -296,10 +364,21 @@ steam.start() -- spawns the effect if (smoke) qdel(smoke) src.total_smoke-- - /datum/effect/effect/system/smoke_spread/bad smoke_type = /obj/effect/effect/smoke/bad +/datum/effect/effect/system/smoke_spread/fire + smoke_type = /obj/effect/effect/smoke/elemental/fire + +/datum/effect/effect/system/smoke_spread/frost + smoke_type = /obj/effect/effect/smoke/elemental/frost + +/datum/effect/effect/system/smoke_spread/shock + smoke_type = /obj/effect/effect/smoke/elemental/shock + +/datum/effect/effect/system/smoke_spread/mist + smoke_type = /obj/effect/effect/smoke/elemental/mist + ///////////////////////////////////////////// //////// Attach an Ion trail to any object, that spawns when it moves (like for the jetpack) /// just pass in the object to attach it to in set_up diff --git a/code/game/objects/effects/landmarks.dm b/code/game/objects/effects/landmarks.dm index 50230eba17..193d24d4ab 100644 --- a/code/game/objects/effects/landmarks.dm +++ b/code/game/objects/effects/landmarks.dm @@ -83,7 +83,7 @@ /obj/effect/landmark/proc/delete() delete_me = 1 -/obj/effect/landmark/initialize() +/obj/effect/landmark/Initialize() . = ..() if(delete_me) return INITIALIZE_HINT_QDEL diff --git a/code/game/objects/effects/map_effects/beam_point.dm b/code/game/objects/effects/map_effects/beam_point.dm new file mode 100644 index 0000000000..524686874c --- /dev/null +++ b/code/game/objects/effects/map_effects/beam_point.dm @@ -0,0 +1,192 @@ +GLOBAL_LIST_EMPTY(all_beam_points) + +// Creates and manages a beam attached to itself and another beam_point. +// You can do cool things with these such as moving the beam_point to move the beam, turning them on and off on a timer, triggered by external input, and more. +/obj/effect/map_effect/beam_point + name = "beam point" + icon_state = "beam_point" + + // General variables. + var/list/my_beams = list() // Instances of beams. Deleting one will kill the beam. + var/id = "A" // Two beam_points must share the same ID to be connected to each other. + var/max_beams = 10 // How many concurrent beams to seperate beam_points to have at once. Set to zero to only act as targets for other beam_points. + var/seek_range = 7 // How far to look for an end beam_point when not having a beam. Defaults to screen height/width. Make sure this is below beam_max_distance. + + // Controls how and when the beam is created. + var/make_beams_on_init = FALSE + var/use_timer = FALSE // Sadly not the /tg/ timers. + var/list/on_duration = list(2 SECONDS, 2 SECONDS, 2 SECONDS) // How long the beam should stay on for, if use_timer is true. Alternates between each duration in the list. + var/list/off_duration = list(3 SECONDS, 0.5 SECOND, 0.5 SECOND) // How long it should stay off for. List length is not needed to be the same as on_duration. + var/timer_on_index = 1 // Index to use for on_duration list. + var/timer_off_index = 1// Ditto, for off_duration list. + var/initial_delay = 0 // How long to wait before first turning on the beam, to sync beam times or create a specific pattern. + var/beam_creation_sound = null // Optional sound played when one or more beams are created. + var/beam_destruction_sound = null // Optional sound played when a beam is destroyed. + + // Beam datum arguments. + var/beam_icon = 'icons/effects/beam.dmi' // Icon file to use for beam visuals. + var/beam_icon_state = "b_beam" // Icon state to use for visuals. + var/beam_time = INFINITY // How long the beam lasts. By default it will last forever until destroyed. + var/beam_max_distance = 10 // If the beam is farther than this, it will be destroyed. Make sure it's higher than seek_range. + var/beam_type = /obj/effect/ebeam // The type of beam. Default has no special properties. Some others may do things like hurt things touching it. + var/beam_sleep_time = 3 // How often the beam updates visually. Suggested to leave this alone, 3 is already fast. + +/obj/effect/map_effect/beam_point/Initialize() + GLOB.all_beam_points += src + if(make_beams_on_init) + create_beams() + if(use_timer) + spawn(initial_delay) + handle_beam_timer() + return ..() + +/obj/effect/map_effect/beam_point/Destroy() + destroy_all_beams() + use_timer = FALSE + GLOB.all_beam_points -= src + return ..() + +// This is the top level proc to make the magic happen. +/obj/effect/map_effect/beam_point/proc/create_beams() + if(my_beams.len >= max_beams) + return + var/beams_to_fill = max_beams - my_beams.len + for(var/i = 1 to beams_to_fill) + var/obj/effect/map_effect/beam_point/point = seek_beam_point() + if(!point) + break // No more points could be found, no point checking repeatively. + build_beam(point) + +// Finds a suitable beam point. +/obj/effect/map_effect/beam_point/proc/seek_beam_point() + for(var/obj/effect/map_effect/beam_point/point in GLOB.all_beam_points) + if(id != point.id) + continue // Not linked together by ID. + if(has_active_beam(point)) + continue // Already got one. + if(point.z != src.z) + continue // Not on same z-level. get_dist() ignores z-levels by design according to docs. + if(get_dist(src, point) > seek_range) + continue // Too far. + return point + +// Checks if the two points have an active beam between them. +// Used to make sure two points don't have more than one beam. +/obj/effect/map_effect/beam_point/proc/has_active_beam(var/obj/effect/map_effect/beam_point/them) + // First, check our beams. + for(var/datum/beam/B in my_beams) + if(B.target == them) + return TRUE + if(B.origin == them) // This shouldn't be needed unless the beam gets built backwards but why not. + return TRUE + + // Now check theirs, to see if they have a beam on us. + for(var/datum/beam/B in them.my_beams) + if(B.target == src) + return TRUE + if(B.origin == src) // Same story as above. + return TRUE + + return FALSE + +/obj/effect/map_effect/beam_point/proc/build_beam(var/atom/beam_target) + if(!beam_target) + log_debug("[src] ([src.type] \[[x],[y],[z]\]) failed to build its beam due to not having a target.") + return FALSE + + var/datum/beam/new_beam = Beam(beam_target, beam_icon_state, beam_icon, beam_time, beam_max_distance, beam_type, beam_sleep_time) + my_beams += new_beam + if(beam_creation_sound) + playsound(src, beam_creation_sound, 70, 1) + + return TRUE + +/obj/effect/map_effect/beam_point/proc/destroy_beam(var/datum/beam/B) + if(!B) + log_debug("[src] ([src.type] \[[x],[y],[z]\]) was asked to destroy a beam that does not exist.") + return FALSE + + if(!(B in my_beams)) + log_debug("[src] ([src.type] \[[x],[y],[z]\]) was asked to destroy a beam it did not own.") + return FALSE + + my_beams -= B + qdel(B) + if(beam_destruction_sound) + playsound(src, beam_destruction_sound, 70, 1) + + return TRUE + +/obj/effect/map_effect/beam_point/proc/destroy_all_beams() + for(var/datum/beam/B in my_beams) + destroy_beam(B) + return TRUE + +// This code makes me sad. +/obj/effect/map_effect/beam_point/proc/handle_beam_timer() + if(!use_timer || QDELETED(src)) + return + + if(my_beams.len) // Currently on. + destroy_all_beams() + color = "#FF0000" + + timer_off_index++ + if(timer_off_index > off_duration.len) + timer_off_index = 1 + + spawn(off_duration[timer_off_index]) + .() + + else // Currently off. + // If nobody's around, keep the beams off to avoid wasteful beam process(), if they have one. + if(!always_run && !check_for_player_proximity(src, proximity_needed, ignore_ghosts, ignore_afk)) + spawn(retry_delay) + .() + return + + create_beams() + color = "#00FF00" + + timer_on_index++ + if(timer_on_index > on_duration.len) + timer_on_index = 1 + + spawn(on_duration[timer_on_index]) + .() + + + +// Subtypes to use in maps and adminbuse. +// Remember, beam_points ONLY connect to other beam_points with the same id variable. + +// Creates the beam when instantiated and stays on until told otherwise. +/obj/effect/map_effect/beam_point/instant + make_beams_on_init = TRUE + +/obj/effect/map_effect/beam_point/instant/electric + beam_icon_state = "nzcrentrs_power" + beam_type = /obj/effect/ebeam/reactive/electric + beam_creation_sound = 'sound/effects/lightningshock.ogg' + beam_destruction_sound = "sparks" + +// Turns on and off on a timer. +/obj/effect/map_effect/beam_point/timer + use_timer = TRUE + +// Shocks people who touch the beam while it's on. Flicks on and off on a specific pattern. +/obj/effect/map_effect/beam_point/timer/electric + beam_icon_state = "nzcrentrs_power" + beam_type = /obj/effect/ebeam/reactive/electric + beam_creation_sound = 'sound/effects/lightningshock.ogg' + beam_destruction_sound = "sparks" + seek_range = 3 + +// Is only a target for other beams to connect to. +/obj/effect/map_effect/beam_point/end + max_beams = 0 + +// Can only have one beam. +/obj/effect/map_effect/beam_point/mono + make_beams_on_init = TRUE + max_beams = 1 diff --git a/code/game/objects/effects/map_effects/effect_emitter.dm b/code/game/objects/effects/map_effects/effect_emitter.dm new file mode 100644 index 0000000000..d7086dafa6 --- /dev/null +++ b/code/game/objects/effects/map_effects/effect_emitter.dm @@ -0,0 +1,78 @@ +// Creates effects like smoke clouds every so often. +/obj/effect/map_effect/interval/effect_emitter + var/datum/effect/effect/system/effect_system = null + var/effect_system_type = null // Which effect system to attach. + + var/effect_amount = 10 // How many effect objects to create on each interval. Note that there's a hard cap on certain effect_systems. + var/effect_cardinals_only = FALSE // If true, effects only move in cardinal directions. + var/effect_forced_dir = null // If set, effects emitted will always move in this direction. + +/obj/effect/map_effect/interval/effect_emitter/Initialize() + effect_system = new effect_system_type() + effect_system.attach(src) + configure_effects() + return ..() + +/obj/effect/map_effect/interval/effect_emitter/interval/Destroy() + QDEL_NULL(effect_system) + return ..() + +/obj/effect/map_effect/interval/effect_emitter/proc/configure_effects() + effect_system.set_up(effect_amount, effect_cardinals_only, src.loc, effect_forced_dir) + +/obj/effect/map_effect/interval/effect_emitter/trigger() + configure_effects() // We do this every interval in case it changes. + effect_system.start() + ..() + + +// Creates smoke clouds every so often. +/obj/effect/map_effect/interval/effect_emitter/smoke + name = "smoke emitter" + icon_state = "smoke_emitter" + effect_system_type = /datum/effect/effect/system/smoke_spread + + interval_lower_bound = 1 SECOND + interval_upper_bound = 1 SECOND + effect_amount = 2 + +/obj/effect/map_effect/interval/effect_emitter/smoke/bad + name = "bad smoke emitter" + effect_system_type = /datum/effect/effect/system/smoke_spread/bad + +/obj/effect/map_effect/interval/effect_emitter/smoke/fire + name = "fire smoke emitter" + effect_system_type = /datum/effect/effect/system/smoke_spread/fire + +/obj/effect/map_effect/interval/effect_emitter/smoke/frost + name = "frost smoke emitter" + effect_system_type = /datum/effect/effect/system/smoke_spread/frost + +/obj/effect/map_effect/interval/effect_emitter/smoke/shock + name = "shock smoke emitter" + effect_system_type = /datum/effect/effect/system/smoke_spread/shock + +/obj/effect/map_effect/interval/effect_emitter/smoke/mist + name = "mist smoke emitter" + effect_system_type = /datum/effect/effect/system/smoke_spread/mist + + +// Makes sparks. +/obj/effect/map_effect/interval/effect_emitter/sparks + name = "spark emitter" + icon_state = "spark_emitter" + effect_system_type = /datum/effect/effect/system/spark_spread + + interval_lower_bound = 3 SECONDS + interval_upper_bound = 7 SECONDS + +/obj/effect/map_effect/interval/effect_emitter/sparks/frequent + effect_amount = 4 // Otherwise it caps out fast. + interval_lower_bound = 1 + interval_upper_bound = 3 SECONDS + +// Makes ""steam"" that looks like fire extinguisher water except it does nothing. +/obj/effect/map_effect/interval/effect_emitter/steam + name = "steam emitter" + icon_state = "smoke_emitter" + effect_system_type = /datum/effect/effect/system/steam_spread diff --git a/code/game/objects/effects/map_effects/map_effects.dm b/code/game/objects/effects/map_effects/map_effects.dm new file mode 100644 index 0000000000..9e2986072d --- /dev/null +++ b/code/game/objects/effects/map_effects/map_effects.dm @@ -0,0 +1,72 @@ +// These are objects you can use inside special maps (like PoIs), or for adminbuse. +// Players cannot see or interact with these. +/obj/effect/map_effect + anchored = TRUE + invisibility = 99 // So a badmin can go view these by changing their see_invisible. + icon = 'icons/effects/map_effects.dmi' + + // Below vars concern check_for_player_proximity() and is used to not waste effort if nobody is around to appreciate the effects. + var/always_run = FALSE // If true, the game will not try to suppress this from firing if nobody is around to see it. + var/proximity_needed = 12 // How many tiles a mob with a client must be for this to run. + var/ignore_ghosts = FALSE // If true, ghosts won't satisfy the above requirement. + var/ignore_afk = TRUE // If true, AFK people (5 minutes) won't satisfy it as well. + var/retry_delay = 3 SECONDS // How long until we check for players again. + +/obj/effect/map_effect/ex_act() + return + +/obj/effect/map_effect/singularity_pull() + return + +/obj/effect/map_effect/singularity_act() + return + +// Base type for effects that run on variable intervals. +/obj/effect/map_effect/interval + var/interval_lower_bound = 5 SECONDS // Lower number for how often the map_effect will trigger. + var/interval_upper_bound = 5 SECONDS // Higher number for above. + var/halt = FALSE // Set to true to stop the loop when it reaches the next iteration. + +/obj/effect/map_effect/interval/Initialize() + handle_interval_delay() + return ..() + +/obj/effect/map_effect/interval/Destroy() + halt = TRUE // Shouldn't need it to GC but just in case. + return ..() + +// Override this for the specific thing to do. Be sure to call parent to keep looping. +/obj/effect/map_effect/interval/proc/trigger() + handle_interval_delay() + +// Handles the delay and making sure it doesn't run when it would be bad. +/obj/effect/map_effect/interval/proc/handle_interval_delay() + // Check to see if we're useful first. + if(halt) + return // Do not pass .(), do not recursively collect 200 thaler. + + if(!always_run && !check_for_player_proximity(src, proximity_needed, ignore_ghosts, ignore_afk)) + spawn(retry_delay) // Maybe someday we'll have fancy TG timers/schedulers. + if(!QDELETED(src)) + .() + return + + var/next_interval = rand(interval_lower_bound, interval_upper_bound) + spawn(next_interval) + if(!QDELETED(src)) + trigger() + +// Helper proc to optimize the use of effects by making sure they do not run if nobody is around to perceive it. +/proc/check_for_player_proximity(var/atom/proximity_to, var/radius = 12, var/ignore_ghosts = FALSE, var/ignore_afk = TRUE) + if(!proximity_to) + return FALSE + + for(var/thing in player_list) + var/mob/M = thing // Avoiding typechecks for more speed, player_list will only contain mobs anyways. + if(ignore_ghosts && isobserver(M)) + continue + if(ignore_afk && M.client && M.client.is_afk(5 MINUTES)) + continue + if(M.z == proximity_to.z && get_dist(M, proximity_to) <= radius) + return TRUE + return FALSE \ No newline at end of file diff --git a/code/game/objects/effects/map_effects/perma_light.dm b/code/game/objects/effects/map_effects/perma_light.dm new file mode 100644 index 0000000000..3a82dc7e69 --- /dev/null +++ b/code/game/objects/effects/map_effects/perma_light.dm @@ -0,0 +1,9 @@ +// Emits light forever with magic. Useful for mood lighting in Points of Interest. +// Be sure to check how it looks ingame, and fiddle with the settings until it looks right. +/obj/effect/map_effect/perma_light + name = "permanent light" + icon_state = "permalight" + + light_range = 3 + light_power = 1 + light_color = "#FFFFFF" \ No newline at end of file diff --git a/code/game/objects/effects/map_effects/radiation_emitter.dm b/code/game/objects/effects/map_effects/radiation_emitter.dm new file mode 100644 index 0000000000..3fb31d3c5d --- /dev/null +++ b/code/game/objects/effects/map_effects/radiation_emitter.dm @@ -0,0 +1,19 @@ +// Constantly emites radiation from the tile it's placed on. +/obj/effect/map_effect/radiation_emitter + name = "radiation emitter" + icon_state = "radiation_emitter" + var/radiation_power = 30 // Bigger numbers means more radiation. + +/obj/effect/map_effect/radiation_emitter/Initialize() + START_PROCESSING(SSobj, src) + return ..() + +/obj/effect/map_effect/radiation_emitter/Destroy() + STOP_PROCESSING(SSobj, src) + return ..() + +/obj/effect/map_effect/radiation_emitter/process() + radiation_repository.radiate(src, radiation_power) + +/obj/effect/map_effect/radiation_emitter/strong + radiation_power = 100 \ No newline at end of file diff --git a/code/game/objects/effects/map_effects/screen_shaker.dm b/code/game/objects/effects/map_effects/screen_shaker.dm new file mode 100644 index 0000000000..29568242e5 --- /dev/null +++ b/code/game/objects/effects/map_effects/screen_shaker.dm @@ -0,0 +1,18 @@ +// Makes the screen shake for nearby players every so often. +/obj/effect/map_effect/interval/screen_shaker + name = "screen shaker" + icon_state = "screen_shaker" + + interval_lower_bound = 1 SECOND + interval_upper_bound = 2 SECONDS + + var/shake_radius = 7 // How far the shaking effect extends to. By default it is one screen length. + var/shake_duration = 2 // How long the shaking lasts. + var/shake_strength = 1 // How much it shakes. + +/obj/effect/map_effect/interval/screen_shaker/trigger() + for(var/A in player_list) + var/mob/M = A + if(M.z == src.z && get_dist(src, M) <= shake_radius) + shake_camera(M, shake_duration, shake_strength) + ..() \ No newline at end of file diff --git a/code/game/objects/effects/map_effects/sound_emitter.dm b/code/game/objects/effects/map_effects/sound_emitter.dm new file mode 100644 index 0000000000..6d07cc7b7b --- /dev/null +++ b/code/game/objects/effects/map_effects/sound_emitter.dm @@ -0,0 +1,119 @@ +// Plays a sound at its location every so often. +/obj/effect/map_effect/interval/sound_emitter + name = "sound emitter" + icon_state = "sound_emitter" + var/list/sounds_to_play = list(null) // List containing sound files or strings of sound groups. + // A sound or string is picked randomly each run. + + var/sound_volume = 50 // How loud the sound is. 0 is silent, and 100 is loudest. Please be reasonable with the volume. + // Note that things like vacuum may affect the volume heard by other mobs. + + var/sound_frequency_variance = TRUE // If the sound will sound somewhat different each time. + // If a specific frequency is desired, sound_frequency must also be set. + + var/sound_extra_range = 0 // Set to make sounds heard from farther away than normal. + + var/sound_fallout = 0 // Within the 'fallout distance', the sound stays at the same volume, otherwise it attenuates. + // Higher numbers make the sound fade out more slowly with distance. + + var/sound_global = FALSE // If true, sounds will not be distorted due to the current area's 'sound environment'. + // It DOES NOT make the sound have a constant volume or z-level wide range, despite the misleading name. + + var/sound_frequency = null // Sets a specific custom frequency. sound_frequency_variance must be true as well. + // If sound_frequency is null, but sound_frequency_variance is true, a semi-random frequency will be chosen to the sound each time. + + var/sound_channel = 0 // BYOND allows a sound to play in 1 through 1024 sound channels. + // 0 will have BYOND give it the lowest available channel, it is not recommended to change this without a good reason. + + var/sound_pressure_affected = TRUE // If false, people in low pressure or vacuum will hear the sound. + + var/sound_ignore_walls = TRUE // If false, walls will completely muffle the sound. + + var/sound_preference = null // Player preference to check before playing this sound to them, if any. + +/obj/effect/map_effect/interval/sound_emitter/trigger() + playsound( + src, + pick(sounds_to_play), + sound_volume, + sound_frequency_variance, + sound_extra_range, + sound_fallout, + sound_global, + sound_frequency, + sound_channel, + sound_pressure_affected, + sound_ignore_walls, + sound_preference + ) + ..() + +/obj/effect/map_effect/interval/sound_emitter/thunder + sounds_to_play = list("thunder") + interval_lower_bound = 10 SECONDS + interval_upper_bound = 15 SECONDS + +/obj/effect/map_effect/interval/sound_emitter/geiger + sounds_to_play = list('sound/items/geiger/low1.ogg', 'sound/items/geiger/low2.ogg', 'sound/items/geiger/low3.ogg', 'sound/items/geiger/low4.ogg') + interval_lower_bound = 1 SECOND + interval_upper_bound = 1 SECOND + +/obj/effect/map_effect/interval/sound_emitter/geiger/med + sounds_to_play = list('sound/items/geiger/med1.ogg', 'sound/items/geiger/med2.ogg', 'sound/items/geiger/med3.ogg', 'sound/items/geiger/med4.ogg') + +/obj/effect/map_effect/interval/sound_emitter/geiger/high + sounds_to_play = list('sound/items/geiger/high1.ogg', 'sound/items/geiger/high2.ogg', 'sound/items/geiger/high3.ogg', 'sound/items/geiger/high4.ogg') + +/obj/effect/map_effect/interval/sound_emitter/geiger/ext + sounds_to_play = list('sound/items/geiger/ext1.ogg', 'sound/items/geiger/ext2.ogg', 'sound/items/geiger/ext3.ogg', 'sound/items/geiger/ext4.ogg') + +/obj/effect/map_effect/interval/sound_emitter/punching + sounds_to_play = list("punch") + interval_lower_bound = 5 + interval_upper_bound = 1 SECOND + +/obj/effect/map_effect/interval/sound_emitter/explosions + sounds_to_play = list("explosion") + interval_lower_bound = 5 SECONDS + interval_upper_bound = 10 SECONDS + +/obj/effect/map_effect/interval/sound_emitter/explosions/distant + sounds_to_play = list('sound/effects/explosionfar.ogg') + +/obj/effect/map_effect/interval/sound_emitter/ballistic_gunfight + sounds_to_play = list( + 'sound/weapons/Gunshot1.ogg', + 'sound/weapons/Gunshot_deagle.ogg', + 'sound/weapons/Gunshot_generic_rifle.ogg', + 'sound/weapons/Gunshot_sniper.ogg', + 'sound/weapons/Gunshot_shotgun.ogg', + 'sound/weapons/Gunshot3.ogg', + 'sound/weapons/Gunshot_machinegun.ogg' + ) + interval_lower_bound = 5 + interval_upper_bound = 2 SECONDS + +/obj/effect/map_effect/interval/sound_emitter/energy_gunfight + sounds_to_play = list( + 'sound/weapons/Taser.ogg', + 'sound/weapons/laser.ogg', + 'sound/weapons/eLuger.ogg', + 'sound/weapons/laser3.ogg', + 'sound/weapons/pulse.ogg', + 'sound/weapons/gauss_shoot.ogg', + 'sound/weapons/emitter.ogg' + ) + interval_lower_bound = 5 + interval_upper_bound = 2 SECONDS + + +// I'm not sorry. +/obj/effect/map_effect/interval/sound_emitter/clownsteps + sounds_to_play = list("clownstep") + interval_lower_bound = 5 + interval_upper_bound = 1 SECOND + +/obj/effect/map_effect/interval/sound_emitter/bikehorns + sounds_to_play = list('sound/items/bikehorn.ogg') + interval_lower_bound = 5 + interval_upper_bound = 1 SECOND diff --git a/code/game/objects/effects/mines.dm b/code/game/objects/effects/mines.dm index 9ea690318b..87af3ec90b 100644 --- a/code/game/objects/effects/mines.dm +++ b/code/game/objects/effects/mines.dm @@ -10,6 +10,7 @@ var/mineitemtype = /obj/item/weapon/mine var/panel_open = 0 var/datum/wires/mines/wires = null + register_as_dangerous_object = TRUE /obj/effect/mine/New() icon_state = "uglyminearmed" @@ -271,4 +272,10 @@ /obj/item/weapon/mine/incendiary name = "incendiary mine" desc = "A small explosive mine with a fire symbol on the side." - minetype = /obj/effect/mine/incendiary \ No newline at end of file + minetype = /obj/effect/mine/incendiary + +// This tells AI mobs to not be dumb and step on mines willingly. +/obj/item/weapon/mine/is_safe_to_step(mob/living/L) + if(!L.hovering) + return FALSE + return ..() \ No newline at end of file diff --git a/code/game/objects/effects/misc.dm b/code/game/objects/effects/misc.dm index d7db6f2a0c..5fca6fbecf 100644 --- a/code/game/objects/effects/misc.dm +++ b/code/game/objects/effects/misc.dm @@ -34,7 +34,7 @@ pixel_x = -32 pixel_y = -32 -/obj/effect/temporary_effect/cleave_attack/initialize() // Makes the slash fade smoothly. When completely transparent it should qdel itself. +/obj/effect/temporary_effect/cleave_attack/Initialize() // Makes the slash fade smoothly. When completely transparent it should qdel itself. . = ..() animate(src, alpha = 0, time = time_to_die - 1) @@ -44,7 +44,7 @@ icon_state = "shuttle_warning_still" time_to_die = 4.9 SECONDS -/obj/effect/temporary_effect/shuttle_landing/initialize() +/obj/effect/temporary_effect/shuttle_landing/Initialize() flick("shuttle_warning", src) // flick() forces the animation to always begin at the start. . = ..() @@ -60,7 +60,7 @@ time_to_die = 1 SECOND pixel_x = -32 -/obj/effect/temporary_effect/lightning_strike/initialize() +/obj/effect/temporary_effect/lightning_strike/Initialize() icon_state += "[rand(1,2)]" // To have two variants of lightning sprites. animate(src, alpha = 0, time = time_to_die - 1) . = ..() \ No newline at end of file diff --git a/code/game/objects/effects/overlays.dm b/code/game/objects/effects/overlays.dm index d9a850672e..17268d00a0 100644 --- a/code/game/objects/effects/overlays.dm +++ b/code/game/objects/effects/overlays.dm @@ -37,7 +37,7 @@ /obj/effect/overlay/bluespacify name = "Bluespace" - icon = 'icons/turf/space.dmi' + icon = 'icons/turf/space_vr.dmi' //VOREStation Edit icon_state = "bluespacify" plane = ABOVE_PLANE @@ -104,3 +104,13 @@ mouse_opacity = FALSE anchored = TRUE plane = ABOVE_PLANE + +// Similar to the tesla ball but doesn't actually do anything and is purely visual. +/obj/effect/overlay/energy_ball + name = "energy ball" + desc = "An energy ball." + icon = 'icons/obj/tesla_engine/energy_ball.dmi' + icon_state = "energy_ball" + plane = PLANE_LIGHTING_ABOVE + pixel_x = -32 + pixel_y = -32 diff --git a/code/game/objects/effects/spawners/bombspawner.dm b/code/game/objects/effects/spawners/bombspawner.dm index 7f2f509d01..c848a2f1df 100644 --- a/code/game/objects/effects/spawners/bombspawner.dm +++ b/code/game/objects/effects/spawners/bombspawner.dm @@ -157,7 +157,7 @@ if(co != null) carbon_amt = co ..() -/obj/effect/spawner/newbomb/New(newloc) +/obj/effect/spawner/newbomb/Initialize(newloc) ..(newloc) var/obj/item/device/transfer_valve/V = new(src.loc) diff --git a/code/game/objects/effects/spiders.dm b/code/game/objects/effects/spiders.dm index 8e482cc1cb..6ec90ced92 100644 --- a/code/game/objects/effects/spiders.dm +++ b/code/game/objects/effects/spiders.dm @@ -24,9 +24,9 @@ user.setClickCooldown(user.get_attack_speed(W)) if(W.attack_verb.len) - visible_message("\The [src] have been [pick(W.attack_verb)] with \the [W][(user ? " by [user]." : ".")]") + visible_message("\The [src] has been [pick(W.attack_verb)] with \the [W][(user ? " by [user]." : ".")]") else - visible_message("\The [src] have been attacked with \the [W][(user ? " by [user]." : ".")]") + visible_message("\The [src] has been attacked with \the [W][(user ? " by [user]." : ".")]") var/damage = W.force / 4.0 @@ -56,21 +56,22 @@ /obj/effect/spider/stickyweb icon_state = "stickyweb1" - New() - if(prob(50)) - icon_state = "stickyweb2" -/obj/effect/spider/stickyweb/CanPass(atom/movable/mover, turf/target, height=0, air_group=0) - if(air_group || (height==0)) return 1 - if(istype(mover, /mob/living/simple_animal/hostile/giant_spider)) - return 1 +/obj/effect/spider/stickyweb/Initialize() + if(prob(50)) + icon_state = "stickyweb2" + return ..() + +/obj/effect/spider/stickyweb/CanPass(atom/movable/mover, turf/target) + if(istype(mover, /mob/living/simple_mob/animal/giant_spider)) + return TRUE else if(istype(mover, /mob/living)) if(prob(50)) - mover << "You get stuck in \the [src] for a moment." - return 0 + to_chat(mover, span("warning", "You get stuck in \the [src] for a moment.")) + return FALSE else if(istype(mover, /obj/item/projectile)) return prob(30) - return 1 + return TRUE /obj/effect/spider/eggcluster name = "egg cluster" @@ -80,17 +81,19 @@ var/spiders_min = 6 var/spiders_max = 24 var/spider_type = /obj/effect/spider/spiderling - New() - pixel_x = rand(3,-3) - pixel_y = rand(3,-3) - processing_objects |= src + +/obj/effect/spider/eggcluster/Initialize() + pixel_x = rand(3,-3) + pixel_y = rand(3,-3) + START_PROCESSING(SSobj, src) + return ..() /obj/effect/spider/eggcluster/New(var/location, var/atom/parent) get_light_and_color(parent) ..() /obj/effect/spider/eggcluster/Destroy() - processing_objects -= src + STOP_PROCESSING(SSobj, src) if(istype(loc, /obj/item/organ/external)) var/obj/item/organ/external/O = loc O.implants -= src @@ -129,15 +132,15 @@ var/amount_grown = -1 var/obj/machinery/atmospherics/unary/vent_pump/entry_vent var/travelling_in_vent = 0 - var/list/grow_as = list(/mob/living/simple_animal/hostile/giant_spider, /mob/living/simple_animal/hostile/giant_spider/nurse, /mob/living/simple_animal/hostile/giant_spider/hunter) + var/list/grow_as = list(/mob/living/simple_mob/animal/giant_spider, /mob/living/simple_mob/animal/giant_spider/nurse, /mob/living/simple_mob/animal/giant_spider/hunter) /obj/effect/spider/spiderling/frost - grow_as = list(/mob/living/simple_animal/hostile/giant_spider/frost) + grow_as = list(/mob/living/simple_mob/animal/giant_spider/frost) /obj/effect/spider/spiderling/New(var/location, var/atom/parent) pixel_x = rand(6,-6) pixel_y = rand(6,-6) - processing_objects |= src + START_PROCESSING(SSobj, src) //50% chance to grow up if(prob(50)) amount_grown = 1 @@ -145,7 +148,7 @@ ..() /obj/effect/spider/spiderling/Destroy() - processing_objects -= src + STOP_PROCESSING(SSobj, src) walk(src, 0) // Because we might have called walk_to, we must stop the walk loop or BYOND keeps an internal reference to us forever. return ..() diff --git a/code/game/objects/effects/step_triggers.dm b/code/game/objects/effects/step_triggers.dm index febfff6d0f..b5345cc8eb 100644 --- a/code/game/objects/effects/step_triggers.dm +++ b/code/game/objects/effects/step_triggers.dm @@ -1,203 +1,239 @@ -/* Simple object type, calls a proc when "stepped" on by something */ - -/obj/effect/step_trigger - var/affect_ghosts = 0 - var/stopper = 1 // stops throwers - invisibility = 101 // nope cant see this shit - anchored = 1 - -/obj/effect/step_trigger/proc/Trigger(var/atom/movable/A) - return 0 - -/obj/effect/step_trigger/Crossed(H as mob|obj) - ..() - if(!H) - return - if(istype(H, /mob/observer) && !affect_ghosts) - return - Trigger(H) - - - -/* Tosses things in a certain direction */ - -/obj/effect/step_trigger/thrower - var/direction = SOUTH // the direction of throw - var/tiles = 3 // if 0: forever until atom hits a stopper - var/immobilize = 1 // if nonzero: prevents mobs from moving while they're being flung - var/speed = 1 // delay of movement - var/facedir = 0 // if 1: atom faces the direction of movement - var/nostop = 0 // if 1: will only be stopped by teleporters - var/list/affecting = list() - - Trigger(var/atom/A) - if(!A || !istype(A, /atom/movable)) - return - var/atom/movable/AM = A - var/curtiles = 0 - var/stopthrow = 0 - for(var/obj/effect/step_trigger/thrower/T in orange(2, src)) - if(AM in T.affecting) - return - - if(ismob(AM)) - var/mob/M = AM - if(immobilize) - M.canmove = 0 - - affecting.Add(AM) - while(AM && !stopthrow) - if(tiles) - if(curtiles >= tiles) - break - if(AM.z != src.z) - break - - curtiles++ - - sleep(speed) - - // Calculate if we should stop the process - if(!nostop) - for(var/obj/effect/step_trigger/T in get_step(AM, direction)) - if(T.stopper && T != src) - stopthrow = 1 - else - for(var/obj/effect/step_trigger/teleporter/T in get_step(AM, direction)) - if(T.stopper) - stopthrow = 1 - - if(AM) - var/predir = AM.dir - step(AM, direction) - if(!facedir) - AM.set_dir(predir) - - - - affecting.Remove(AM) - - if(ismob(AM)) - var/mob/M = AM - if(immobilize) - M.canmove = 1 - -/* Stops things thrown by a thrower, doesn't do anything */ - -/obj/effect/step_trigger/stopper - -/* Instant teleporter */ - -/obj/effect/step_trigger/teleporter - var/teleport_x = 0 // teleportation coordinates (if one is null, then no teleport!) - var/teleport_y = 0 - var/teleport_z = 0 - - Trigger(var/atom/movable/A) - if(teleport_x && teleport_y && teleport_z) - var/turf/T = locate(teleport_x, teleport_y, teleport_z) - if(isliving(A)) - var/mob/living/L = A - if(L.pulling) - var/atom/movable/P = L.pulling - L.stop_pulling() - P.forceMove(T) - L.forceMove(T) - L.start_pulling(P) - else - A.forceMove(T) - else - A.forceMove(T) - -/* Random teleporter, teleports atoms to locations ranging from teleport_x - teleport_x_offset, etc */ - -/obj/effect/step_trigger/teleporter/random - var/teleport_x_offset = 0 - var/teleport_y_offset = 0 - var/teleport_z_offset = 0 - - Trigger(var/atom/movable/A) - if(teleport_x && teleport_y && teleport_z) - if(teleport_x_offset && teleport_y_offset && teleport_z_offset) - var/turf/T = locate(rand(teleport_x, teleport_x_offset), rand(teleport_y, teleport_y_offset), rand(teleport_z, teleport_z_offset)) - A.forceMove(T) - -/* Teleporter that sends objects stepping on it to a specific landmark. */ - -/obj/effect/step_trigger/teleporter/landmark - var/obj/effect/landmark/the_landmark = null - var/landmark_id = null - -/obj/effect/step_trigger/teleporter/landmark/initialize() - . = ..() - for(var/obj/effect/landmark/teleport_mark/mark in tele_landmarks) - if(mark.landmark_id == landmark_id) - the_landmark = mark - return - -/obj/effect/step_trigger/teleporter/landmark/Trigger(var/atom/movable/A) - if(the_landmark) - A.forceMove(get_turf(the_landmark)) - - -var/global/list/tele_landmarks = list() // Terrible, but the alternative is looping through world. - -/obj/effect/landmark/teleport_mark - var/landmark_id = null - -/obj/effect/landmark/teleport_mark/New() - ..() - tele_landmarks += src - -/obj/effect/landmark/teleport_mark/Destroy() - tele_landmarks -= src - return ..() - -/* Teleporter which simulates falling out of the sky. */ - -/obj/effect/step_trigger/teleporter/planetary_fall - var/datum/planet/planet = null - -// First time setup, which planet are we aiming for? -/obj/effect/step_trigger/teleporter/planetary_fall/proc/find_planet() - return - -/obj/effect/step_trigger/teleporter/planetary_fall/Trigger(var/atom/movable/A) - if(!planet) - find_planet() - - if(planet) - if(!planet.planet_floors.len) - message_admins("ERROR: planetary_fall step trigger's list of outdoor floors was empty.") - return - var/turf/simulated/T = null - var/safety = 100 // Infinite loop protection. - while(!T && safety) - var/turf/simulated/candidate = pick(planet.planet_floors) - if(!istype(candidate) || istype(candidate, /turf/simulated/sky)) - safety-- - continue - else if(candidate && !candidate.outdoors) - safety-- - continue - else - T = candidate - break - - if(!T) - message_admins("ERROR: planetary_fall step trigger could not find a suitable landing turf.") - return - - if(isobserver(A)) - A.forceMove(T) // Harmlessly move ghosts. - return - - A.forceMove(T) - // Living things should probably be logged when they fall... - if(isliving(A)) - message_admins("\The [A] fell out of the sky.") - // ... because they're probably going to die from it. - A.fall_impact(T, 42, 90, FALSE, TRUE) //You will not be defibbed from this. - else - message_admins("ERROR: planetary_fall step trigger lacks a planet to fall onto.") - return +/* Simple object type, calls a proc when "stepped" on by something */ + +/obj/effect/step_trigger + var/affect_ghosts = 0 + var/stopper = 1 // stops throwers + invisibility = 99 // nope cant see this shit + plane = ABOVE_PLANE + anchored = 1 + +/obj/effect/step_trigger/proc/Trigger(var/atom/movable/A) + return 0 + +/obj/effect/step_trigger/Crossed(H as mob|obj) + ..() + if(!H) + return + if(istype(H, /mob/observer) && !affect_ghosts) + return + Trigger(H) + + + +/* Tosses things in a certain direction */ + +/obj/effect/step_trigger/thrower + var/direction = SOUTH // the direction of throw + var/tiles = 3 // if 0: forever until atom hits a stopper + var/immobilize = 1 // if nonzero: prevents mobs from moving while they're being flung + var/speed = 1 // delay of movement + var/facedir = 0 // if 1: atom faces the direction of movement + var/nostop = 0 // if 1: will only be stopped by teleporters + var/list/affecting = list() + + Trigger(var/atom/A) + if(!A || !istype(A, /atom/movable)) + return + var/atom/movable/AM = A + var/curtiles = 0 + var/stopthrow = 0 + for(var/obj/effect/step_trigger/thrower/T in orange(2, src)) + if(AM in T.affecting) + return + + if(ismob(AM)) + var/mob/M = AM + if(immobilize) + M.canmove = 0 + + affecting.Add(AM) + while(AM && !stopthrow) + if(tiles) + if(curtiles >= tiles) + break + if(AM.z != src.z) + break + + curtiles++ + + sleep(speed) + + // Calculate if we should stop the process + if(!nostop) + for(var/obj/effect/step_trigger/T in get_step(AM, direction)) + if(T.stopper && T != src) + stopthrow = 1 + else + for(var/obj/effect/step_trigger/teleporter/T in get_step(AM, direction)) + if(T.stopper) + stopthrow = 1 + + if(AM) + var/predir = AM.dir + step(AM, direction) + if(!facedir) + AM.set_dir(predir) + + + + affecting.Remove(AM) + + if(ismob(AM)) + var/mob/M = AM + if(immobilize) + M.canmove = 1 + +/* Stops things thrown by a thrower, doesn't do anything */ + +/obj/effect/step_trigger/stopper + +/* Instant teleporter */ + +/obj/effect/step_trigger/teleporter + var/teleport_x = 0 // teleportation coordinates (if one is null, then no teleport!) + var/teleport_y = 0 + var/teleport_z = 0 + +/obj/effect/step_trigger/teleporter/Trigger(atom/movable/AM) + if(teleport_x && teleport_y && teleport_z) + var/turf/T = locate(teleport_x, teleport_y, teleport_z) + move_object(AM, T) + + +/obj/effect/step_trigger/teleporter/proc/move_object(atom/movable/AM, turf/T) + if(AM.anchored && !istype(AM, /obj/mecha)) + return + + if(isliving(AM)) + var/mob/living/L = AM + if(L.pulling) + var/atom/movable/P = L.pulling + L.stop_pulling() + P.forceMove(T) + L.forceMove(T) + L.start_pulling(P) + else + L.forceMove(T) + else + AM.forceMove(T) + +/* Moves things by an offset, useful for 'Bridges'. Uses dir and a distance var to work with maploader direction changes. */ +/obj/effect/step_trigger/teleporter/offset + icon = 'icons/effects/effects.dmi' + icon_state = "arrow" + var/distance = 3 + +/obj/effect/step_trigger/teleporter/offset/north + dir = NORTH + +/obj/effect/step_trigger/teleporter/offset/south + dir = SOUTH + +/obj/effect/step_trigger/teleporter/offset/east + dir = EAST + +/obj/effect/step_trigger/teleporter/offset/west + dir = WEST + +/obj/effect/step_trigger/teleporter/offset/Trigger(atom/movable/AM) + var/turf/T = get_turf(src) + for(var/i = 1 to distance) + T = get_step(T, dir) + if(!istype(T)) + return + move_object(AM, T) + + + +/* Random teleporter, teleports atoms to locations ranging from teleport_x - teleport_x_offset, etc */ + +/obj/effect/step_trigger/teleporter/random + var/teleport_x_offset = 0 + var/teleport_y_offset = 0 + var/teleport_z_offset = 0 + + Trigger(var/atom/movable/A) + if(teleport_x && teleport_y && teleport_z) + if(teleport_x_offset && teleport_y_offset && teleport_z_offset) + var/turf/T = locate(rand(teleport_x, teleport_x_offset), rand(teleport_y, teleport_y_offset), rand(teleport_z, teleport_z_offset)) + A.forceMove(T) + +/* Teleporter that sends objects stepping on it to a specific landmark. */ + +/obj/effect/step_trigger/teleporter/landmark + var/obj/effect/landmark/the_landmark = null + var/landmark_id = null + +/obj/effect/step_trigger/teleporter/landmark/Initialize() + . = ..() + for(var/obj/effect/landmark/teleport_mark/mark in tele_landmarks) + if(mark.landmark_id == landmark_id) + the_landmark = mark + return + +/obj/effect/step_trigger/teleporter/landmark/Trigger(var/atom/movable/A) + if(the_landmark) + A.forceMove(get_turf(the_landmark)) + + +var/global/list/tele_landmarks = list() // Terrible, but the alternative is looping through world. + +/obj/effect/landmark/teleport_mark + var/landmark_id = null + +/obj/effect/landmark/teleport_mark/New() + ..() + tele_landmarks += src + +/obj/effect/landmark/teleport_mark/Destroy() + tele_landmarks -= src + return ..() + +/* Teleporter which simulates falling out of the sky. */ + +/obj/effect/step_trigger/teleporter/planetary_fall + var/datum/planet/planet = null + +// First time setup, which planet are we aiming for? +/obj/effect/step_trigger/teleporter/planetary_fall/proc/find_planet() + return + +/obj/effect/step_trigger/teleporter/planetary_fall/Trigger(var/atom/movable/A) + if(!planet) + find_planet() + + if(planet) + if(!planet.planet_floors.len) + message_admins("ERROR: planetary_fall step trigger's list of outdoor floors was empty.") + return + var/turf/simulated/T = null + var/safety = 100 // Infinite loop protection. + while(!T && safety) + var/turf/simulated/candidate = pick(planet.planet_floors) + if(!istype(candidate) || istype(candidate, /turf/simulated/sky)) + safety-- + continue + else if(candidate && !candidate.outdoors) + safety-- + continue + else + T = candidate + break + + if(!T) + message_admins("ERROR: planetary_fall step trigger could not find a suitable landing turf.") + return + + if(isobserver(A)) + A.forceMove(T) // Harmlessly move ghosts. + return + + A.forceMove(T) + // Living things should probably be logged when they fall... + if(isliving(A)) + message_admins("\The [A] fell out of the sky.") + // ... because they're probably going to die from it. + A.fall_impact(T, 42, 90, FALSE, TRUE) //You will not be defibbed from this. + else + message_admins("ERROR: planetary_fall step trigger lacks a planet to fall onto.") + return diff --git a/code/game/objects/effects/temporary_visuals/miscellaneous.dm b/code/game/objects/effects/temporary_visuals/miscellaneous.dm index 4e28a370f7..8a9220e87f 100644 --- a/code/game/objects/effects/temporary_visuals/miscellaneous.dm +++ b/code/game/objects/effects/temporary_visuals/miscellaneous.dm @@ -2,7 +2,7 @@ desc = "It's a decoy!" duration = 15 -/obj/effect/temp_visual/decoy/initialize(mapload, atom/mimiced_atom, var/customappearance) +/obj/effect/temp_visual/decoy/Initialize(mapload, atom/mimiced_atom, var/customappearance) . = ..() alpha = initial(alpha) if(mimiced_atom) @@ -13,7 +13,7 @@ if(customappearance) appearance = customappearance -/obj/effect/temp_visual/decoy/fading/initialize(mapload, atom/mimiced_atom) +/obj/effect/temp_visual/decoy/fading/Initialize(mapload, atom/mimiced_atom) . = ..() animate(src, alpha = 0, time = duration) diff --git a/code/game/objects/effects/temporary_visuals/projectiles/impact.dm b/code/game/objects/effects/temporary_visuals/projectiles/impact.dm new file mode 100644 index 0000000000..872c652356 --- /dev/null +++ b/code/game/objects/effects/temporary_visuals/projectiles/impact.dm @@ -0,0 +1,81 @@ +/obj/effect/projectile/impact + name = "beam impact" + icon = 'icons/obj/projectiles_impact.dmi' + +/obj/effect/projectile/impact/laser_pulse + icon_state = "impact_u_laser" + light_range = 2 + light_power = 0.5 + light_color = "#0066FF" + +/obj/effect/projectile/impact/laser_heavy + icon_state = "impact_beam_heavy" + light_range = 3 + light_power = 1 + light_color = "#FF0D00" + +/obj/effect/projectile/impact/xray + icon_state = "impact_xray" + light_range = 2 + light_power = 0.5 + light_color = "#00CC33" + +/obj/effect/projectile/impact/laser_omni + icon_state = "impact_omni" + light_range = 2 + light_power = 0.5 + light_color = "#00C6FF" + +/obj/effect/projectile/impact/laser + icon_state = "impact_laser" + light_range = 2 + light_power = 0.5 + light_color = "#FF0D00" + +/obj/effect/projectile/impact/laser_blue + icon_state = "impact_blue" + light_range = 2 + light_power = 0.5 + light_color = "#0066FF" + +/obj/effect/projectile/impact/emitter + icon_state = "impact_emitter" + light_range = 2 + light_power = 0.5 + light_color = "#00CC33" + +/obj/effect/projectile/impact/stun + icon_state = "impact_stun" + light_range = 2 + light_power = 0.5 + light_color = "#FFFFFF" + +/obj/effect/projectile/impact/lightning + icon_state = "impact_lightning" + light_range = 2 + light_power = 0.5 + light_color = "#00C6FF" + +/obj/effect/projectile/impact/darkmatterstun + icon_state = "impact_darkt" + light_range = 2 + light_power = 0.5 + light_color = "#8837A3" + +/obj/effect/projectile/impact/inversion + icon_state = "impact_invert" + light_range = 2 + light_power = -2 + light_color = "#FFFFFF" + +/obj/effect/projectile/impact/darkmatter + icon_state = "impact_darkb" + light_range = 2 + light_power = 0.5 + light_color = "#8837A3" + +/obj/effect/projectile/tungsten/impact + icon_state = "impact_mhd_laser" + light_range = 4 + light_power = 3 + light_color = "#3300ff" diff --git a/code/game/objects/effects/temporary_visuals/projectiles/muzzle.dm b/code/game/objects/effects/temporary_visuals/projectiles/muzzle.dm new file mode 100644 index 0000000000..42511e6577 --- /dev/null +++ b/code/game/objects/effects/temporary_visuals/projectiles/muzzle.dm @@ -0,0 +1,93 @@ +/obj/effect/projectile/muzzle + name = "muzzle flash" + icon = 'icons/obj/projectiles_muzzle.dmi' + +/obj/effect/projectile/muzzle/emitter + icon_state = "muzzle_emitter" + light_range = 2 + light_power = 0.5 + light_color = "#00CC33" + +/obj/effect/projectile/muzzle/laser_pulse + icon_state = "muzzle_u_laser" + light_range = 2 + light_power = 0.5 + light_color = "#0066FF" + +/obj/effect/projectile/muzzle/pulse + icon_state = "muzzle_pulse" + light_range = 2 + light_power = 0.5 + light_color = "#0066FF" + +/obj/effect/projectile/muzzle/stun + icon_state = "muzzle_stun" + light_range = 2 + light_power = 0.5 + light_color = "#FFFFFF" + +/obj/effect/projectile/muzzle/bullet + icon_state = "muzzle_bullet" + light_range = 2 + light_power = 0.5 + light_color = "#FFFFFF" + +/obj/effect/projectile/muzzle/laser_heavy + icon_state = "muzzle_beam_heavy" + light_range = 3 + light_power = 1 + light_color = "#FF0D00" + +/obj/effect/projectile/muzzle/lightning + icon_state = "muzzle_lightning" + light_range = 2 + light_power = 0.5 + light_color = "#00C6FF" + +/obj/effect/projectile/muzzle/darkmatterstun + icon_state = "muzzle_darkt" + light_range = 2 + light_power = 0.5 + light_color = "#8837A3" + +/obj/effect/projectile/muzzle/laser_blue + icon_state = "muzzle_blue" + light_range = 2 + light_power = 0.5 + light_color = "#0066FF" + +/obj/effect/projectile/muzzle/darkmatter + icon_state = "muzzle_darkb" + light_range = 2 + light_power = 0.5 + light_color = "#8837A3" + +/obj/effect/projectile/muzzle/inversion + icon_state = "muzzle_invert" + light_range = 2 + light_power = -2 + light_color = "#FFFFFF" + +/obj/effect/projectile/muzzle/xray + icon_state = "muzzle_xray" + light_range = 2 + light_power = 0.5 + light_color = "#00CC33" + +/obj/effect/projectile/muzzle/laser_omni + icon_state = "muzzle_omni" + light_range = 2 + light_power = 0.5 + light_color = "#00C6FF" + +/obj/effect/projectile/muzzle/laser + icon_state = "muzzle_laser" + light_range = 2 + light_power = 0.5 + light_color = "#FF0D00" + +/obj/effect/projectile/tungsten/muzzle + icon_state = "muzzle_mhd_laser" + light_range = 4 + light_power = 3 + light_color = "#3300ff" diff --git a/code/game/objects/effects/temporary_visuals/projectiles/projectile_effects.dm b/code/game/objects/effects/temporary_visuals/projectiles/projectile_effects.dm new file mode 100644 index 0000000000..1088a3e4ba --- /dev/null +++ b/code/game/objects/effects/temporary_visuals/projectiles/projectile_effects.dm @@ -0,0 +1,60 @@ +/obj/effect/projectile + name = "pew" + icon = 'icons/obj/projectiles.dmi' + icon_state = "nothing" + layer = ABOVE_MOB_LAYER + anchored = TRUE + mouse_opacity = 0 + appearance_flags = 0 + +/obj/effect/projectile/singularity_pull() + return + +/obj/effect/projectile/singularity_act() + return + +/obj/effect/projectile/proc/scale_to(nx,ny,override=TRUE) + var/matrix/M + if(!override) + M = transform + else + M = new + M.Scale(nx,ny) + transform = M + +/obj/effect/projectile/proc/turn_to(angle,override=TRUE) + var/matrix/M + if(!override) + M = transform + else + M = new + M.Turn(angle) + transform = M + +/obj/effect/projectile/New(angle_override, p_x, p_y, color_override, scaling = 1) + if(angle_override && p_x && p_y && color_override && scaling) + apply_vars(angle_override, p_x, p_y, color_override, scaling) + return ..() + +/obj/effect/projectile/proc/apply_vars(angle_override, p_x = 0, p_y = 0, color_override, scaling = 1, new_loc, increment = 0) + var/mutable_appearance/look = new(src) + look.pixel_x = p_x + look.pixel_y = p_y + if(color_override) + look.color = color_override + appearance = look + scale_to(1,scaling, FALSE) + turn_to(angle_override, FALSE) + if(!isnull(new_loc)) //If you want to null it just delete it... + forceMove(new_loc) + for(var/i in 1 to increment) + pixel_x += round((sin(angle_override)+16*sin(angle_override)*2), 1) + pixel_y += round((cos(angle_override)+16*cos(angle_override)*2), 1) + +/obj/effect/projectile_lighting + var/owner + +/obj/effect/projectile_lighting/New(loc, color, range, intensity, owner_key) + . = ..() + set_light(range, intensity, color) + owner = owner_key diff --git a/code/game/objects/effects/temporary_visuals/projectiles/tracer.dm b/code/game/objects/effects/temporary_visuals/projectiles/tracer.dm new file mode 100644 index 0000000000..54fa41265f --- /dev/null +++ b/code/game/objects/effects/temporary_visuals/projectiles/tracer.dm @@ -0,0 +1,109 @@ +/proc/generate_tracer_between_points(datum/point/starting, datum/point/ending, beam_type, color, qdel_in = 5, light_range = 2, light_color_override, light_intensity = 1, instance_key) //Do not pass z-crossing points as that will not be properly (and likely will never be properly until it's absolutely needed) supported! + if(!istype(starting) || !istype(ending) || !ispath(beam_type)) + return + var/datum/point/midpoint = point_midpoint_points(starting, ending) + var/obj/effect/projectile/tracer/PB = new beam_type + if(isnull(light_color_override)) + light_color_override = color + PB.apply_vars(angle_between_points(starting, ending), midpoint.return_px(), midpoint.return_py(), color, pixel_length_between_points(starting, ending) / world.icon_size, midpoint.return_turf(), 0) + . = PB + if(isnull(light_intensity) && !isnull(PB.light_power)) + light_intensity = PB.light_power + if(isnull(light_range) && !isnull(PB.light_range)) + light_range = PB.light_range + if(isnull(light_color_override) && !isnull(PB.light_color)) + light_color_override = PB.light_color + if(light_range > 0 && light_intensity > 0) + var/list/turf/line = getline(starting.return_turf(), ending.return_turf()) + tracing_line: + for(var/i in line) + var/turf/T = i + for(var/obj/effect/projectile_lighting/PL in T) + if(PL.owner == instance_key) + continue tracing_line + QDEL_IN(new /obj/effect/projectile_lighting(T, light_color_override, light_range, light_intensity, instance_key), qdel_in > 0? qdel_in : 5) + line = null + if(qdel_in) + QDEL_IN(PB, qdel_in) + +/obj/effect/projectile/tracer + name = "beam" + icon = 'icons/obj/projectiles_tracer.dmi' + +/obj/effect/projectile/tracer/stun + icon_state = "stun" + light_range = 2 + light_power = 0.5 + light_color = "#FFFFFF" + +/obj/effect/projectile/tracer/lightning + icon_state = "lightning" + light_range = 2 + light_power = 0.5 + light_color = "#00C6FF" + +/obj/effect/projectile/tracer/laser_pulse + icon_state = "u_laser" + light_range = 2 + light_power = 0.5 + light_color = "#0066FF" + +/obj/effect/projectile/tracer/emitter + icon_state = "emitter" + light_range = 2 + light_power = 0.5 + light_color = "#00CC33" + +/obj/effect/projectile/tracer/darkmatterstun + icon_state = "darkt" + light_range = 2 + light_power = 0.5 + light_color = "#8837A3" + +/obj/effect/projectile/tracer/laser_omni + icon_state = "beam_omni" + light_range = 2 + light_power = 0.5 + light_color = "#00C6FF" + +/obj/effect/projectile/tracer/xray + icon_state = "xray" + light_range = 2 + light_power = 0.5 + light_color = "#00CC33" + +/obj/effect/projectile/tracer/laser_heavy + icon_state = "beam_heavy" + light_range = 3 + light_power = 1 + light_color = "#FF0D00" + +/obj/effect/projectile/tracer/darkmatter + icon_state = "darkb" + light_range = 2 + light_power = 0.5 + light_color = "#8837A3" + +/obj/effect/projectile/tracer/inversion + icon_state = "invert" + light_range = 2 + light_power = -2 + light_color = "#FFFFFF" + +/obj/effect/projectile/tracer/laser + icon_state = "beam" + light_range = 2 + light_power = 0.5 + light_color = "#FF0D00" + +/obj/effect/projectile/tracer/laser_blue + icon_state = "beam_blue" + light_range = 2 + light_power = 0.5 + light_color = "#0066FF" + +/obj/effect/projectile/tungsten/tracer + icon_state = "mhd_laser" + light_range = 4 + light_power = 3 + light_color = "#3300ff" diff --git a/code/game/objects/effects/temporary_visuals/temproary_visual.dm b/code/game/objects/effects/temporary_visuals/temporary_visual.dm similarity index 64% rename from code/game/objects/effects/temporary_visuals/temproary_visual.dm rename to code/game/objects/effects/temporary_visuals/temporary_visual.dm index 79a8797bae..84e8e1c031 100644 --- a/code/game/objects/effects/temporary_visuals/temproary_visual.dm +++ b/code/game/objects/effects/temporary_visuals/temporary_visual.dm @@ -7,14 +7,17 @@ mouse_opacity = 0 var/duration = 10 //in deciseconds var/randomdir = TRUE + var/timerid -/obj/effect/temp_visual/initialize() +/obj/effect/temp_visual/Initialize() . = ..() if(randomdir) - set_dir(pick(cardinal)) + dir = pick(list(NORTH, SOUTH, EAST, WEST)) + timerid = QDEL_IN(src, duration) - spawn(duration) - qdel(src) +/obj/effect/temp_visual/Destroy() + . = ..() + deltimer(timerid) /obj/effect/temp_visual/singularity_act() return @@ -25,12 +28,11 @@ /obj/effect/temp_visual/ex_act() return -/* /obj/effect/temp_visual/dir_setting randomdir = FALSE -/obj/effect/temp_visual/dir_setting/Initialize(mapload, set_dir) +/obj/effect/temp_visual/dir_setting/Initialize(loc, set_dir) if(set_dir) - setDir(set_dir) + dir = set_dir . = ..() -*/ //More tg stuff that might be useful later + diff --git a/code/game/objects/effects/temporary_visuals/temproary_visual.dm~1fb83e6... Merge pull request #5959 from elgeonmb_suit++ b/code/game/objects/effects/temporary_visuals/temproary_visual.dm~1fb83e6... Merge pull request #5959 from elgeonmb_suit++ new file mode 100644 index 0000000000..e69de29bb2 diff --git a/code/game/objects/effects/temporary_visuials/temproary_visual.dm b/code/game/objects/effects/temporary_visuials/temproary_visual.dm index 9beda4cac3..0ecaf5e312 100644 --- a/code/game/objects/effects/temporary_visuials/temproary_visual.dm +++ b/code/game/objects/effects/temporary_visuials/temproary_visual.dm @@ -8,7 +8,7 @@ var/duration = 10 //in deciseconds var/randomdir = TRUE -/obj/effect/temp_visual/initialize() +/obj/effect/temp_visual/Initialize() . = ..() if(randomdir) set_dir(pick(global.cardinal)) diff --git a/code/game/objects/effects/zone_divider.dm b/code/game/objects/effects/zone_divider.dm index 5adabf318c..01e6834f16 100644 --- a/code/game/objects/effects/zone_divider.dm +++ b/code/game/objects/effects/zone_divider.dm @@ -8,13 +8,12 @@ density = 0 opacity = 0 -/obj/effect/zone_divider/CanPass(atom/movable/mover, turf/target, height=0, air_group=0) +/obj/effect/zone_divider/CanZASPass(turf/T, is_zone) // Special case to prevent us from being part of a zone during the first air master tick. // We must merge ourselves into a zone on next tick. This will cause a bit of lag on // startup, but it can't really be helped you know? if(air_master && air_master.current_cycle == 0) spawn(1) air_master.mark_for_update(get_turf(src)) - return 0 - return !air_group // Anything except zones can pass - + return ATMOS_PASS_NO + return is_zone ? ATMOS_PASS_NO : ATMOS_PASS_YES // Anything except zones can pass diff --git a/code/game/objects/explosion.dm b/code/game/objects/explosion.dm index 9132cf4b12..bd1d9cbd12 100644 --- a/code/game/objects/explosion.dm +++ b/code/game/objects/explosion.dm @@ -40,7 +40,7 @@ proc/explosion(turf/epicenter, devastation_range, heavy_impact_range, light_impa if(dist <= round(max_range + world.view - 2, 1)) M.playsound_local(epicenter, get_sfx("explosion"), 100, 1, frequency, falloff = 5) // get_sfx() is so that everyone gets the same sound else if(dist <= far_dist) - var/far_volume = Clamp(far_dist, 30, 50) // Volume is based on explosion size and dist + var/far_volume = CLAMP(far_dist, 30, 50) // Volume is based on explosion size and dist far_volume += (dist <= far_dist * 0.5 ? 50 : 0) // add 50 volume if the mob is pretty close to the explosion M.playsound_local(epicenter, 'sound/effects/explosionfar.ogg', far_volume, 1, frequency, falloff = 5) diff --git a/code/game/objects/items.dm b/code/game/objects/items.dm index be332a47e5..3ba9c1bac7 100644 --- a/code/game/objects/items.dm +++ b/code/game/objects/items.dm @@ -27,6 +27,10 @@ var/max_heat_protection_temperature //Set this variable to determine up to which temperature (IN KELVIN) the item protects against heat damage. Keep at null to disable protection. Only protects areas set by heat_protection flags var/min_cold_protection_temperature //Set this variable to determine down to which temperature (IN KELVIN) the item protects against cold damage. 0 is NOT an acceptable number due to if(varname) tests!! Keep at null to disable protection. Only protects areas set by cold_protection flags + var/max_pressure_protection // Set this variable if the item protects its wearer against high pressures below an upper bound. Keep at null to disable protection. + var/min_pressure_protection // Set this variable if the item protects its wearer against low pressures above a lower bound. Keep at null to disable protection. 0 represents protection against hard vacuum. + + var/datum/action/item_action/action = null var/action_button_name //It is also the text which gets displayed on the action button. If not set it defaults to 'Use [name]'. If it's not set, there'll be no button. var/action_button_is_hands_free = 0 //If 1, bypass the restrained, lying, and stunned checks action buttons normally test for diff --git a/code/game/objects/items/apc_frame.dm b/code/game/objects/items/apc_frame.dm index fe40f772dd..f14b19b117 100644 --- a/code/game/objects/items/apc_frame.dm +++ b/code/game/objects/items/apc_frame.dm @@ -5,7 +5,6 @@ desc = "Used for repairing or building APCs" icon = 'icons/obj/apc_repair.dmi' icon_state = "apc_frame" - flags = CONDUCT /obj/item/frame/apc/attackby(obj/item/weapon/W as obj, mob/user as mob) ..() diff --git a/code/game/objects/items/bodybag.dm b/code/game/objects/items/bodybag.dm index f79ac478b2..600ed118dc 100644 --- a/code/game/objects/items/bodybag.dm +++ b/code/game/objects/items/bodybag.dm @@ -144,8 +144,8 @@ var/stasis_level = 3 //Every 'this' life ticks are applied to the mob (when life_ticks%stasis_level == 1) var/obj/item/weapon/reagent_containers/syringe/syringe -/obj/structure/closet/body_bag/cryobag/New() - tank = new /obj/item/weapon/tank/emergency/oxygen/double(null) //It's in nullspace to prevent ejection when the bag is opened. +/obj/structure/closet/body_bag/cryobag/Initialize() + tank = new /obj/item/weapon/tank/stasis/oxygen(null) //It's in nullspace to prevent ejection when the bag is opened. ..() /obj/structure/closet/body_bag/cryobag/Destroy() diff --git a/code/game/objects/items/contraband.dm b/code/game/objects/items/contraband.dm index cc67c59517..e8c7a0d08d 100644 --- a/code/game/objects/items/contraband.dm +++ b/code/game/objects/items/contraband.dm @@ -40,8 +40,8 @@ list("impedrezene" = 15) = 2, list("zombiepowder" = 10) = 1) -/obj/item/weapon/reagent_containers/glass/beaker/vial/random/New() - ..() +/obj/item/weapon/reagent_containers/glass/beaker/vial/random/Initialize() + . = ..() if(is_open_container()) flags ^= OPENCONTAINER diff --git a/code/game/objects/items/devices/PDA/cart.dm b/code/game/objects/items/devices/PDA/cart.dm index cf91bbef3b..ae4a3323dd 100644 --- a/code/game/objects/items/devices/PDA/cart.dm +++ b/code/game/objects/items/devices/PDA/cart.dm @@ -108,7 +108,7 @@ var/list/civilian_cartridges = list( icon_state = "cart-s" access_security = 1 -/obj/item/weapon/cartridge/security/initialize() +/obj/item/weapon/cartridge/security/Initialize() radio = new /obj/item/radio/integrated/beepsky(src) . = ..() @@ -164,7 +164,7 @@ var/list/civilian_cartridges = list( access_reagent_scanner = 1 access_atmos = 1 -/obj/item/weapon/cartridge/signal/initialize() +/obj/item/weapon/cartridge/signal/Initialize() radio = new /obj/item/radio/integrated/signal(src) . = ..() @@ -198,7 +198,7 @@ var/list/civilian_cartridges = list( access_status_display = 1 access_security = 1 -/obj/item/weapon/cartridge/hos/initialize() +/obj/item/weapon/cartridge/hos/Initialize() radio = new /obj/item/radio/integrated/beepsky(src) . = ..() @@ -223,7 +223,7 @@ var/list/civilian_cartridges = list( access_reagent_scanner = 1 access_atmos = 1 -/obj/item/weapon/cartridge/rd/initialize() +/obj/item/weapon/cartridge/rd/Initialize() radio = new /obj/item/radio/integrated/signal(src) . = ..() @@ -572,6 +572,8 @@ var/list/civilian_cartridges = list( active3 = S if("Send Signal") + if(is_jammed(src)) + return spawn( 0 ) radio:send_signal("ACTIVATE") return diff --git a/code/game/objects/items/devices/PDA/radio.dm b/code/game/objects/items/devices/PDA/radio.dm index 9de35c2582..a5a76dd993 100644 --- a/code/game/objects/items/devices/PDA/radio.dm +++ b/code/game/objects/items/devices/PDA/radio.dm @@ -116,39 +116,37 @@ var/last_transmission var/datum/radio_frequency/radio_connection - initialize() - if(!radio_controller) - return - - if (src.frequency < PUBLIC_LOW_FREQ || src.frequency > PUBLIC_HIGH_FREQ) - src.frequency = sanitize_frequency(src.frequency) - - set_frequency(frequency) - - proc/set_frequency(new_frequency) - radio_controller.remove_object(src, frequency) - frequency = new_frequency - radio_connection = radio_controller.add_object(src, frequency) - - proc/send_signal(message="ACTIVATE") - - if(last_transmission && world.time < (last_transmission + 5)) - return - last_transmission = world.time - - var/time = time2text(world.realtime,"hh:mm:ss") - var/turf/T = get_turf(src) - lastsignalers.Add("[time] : [usr.key] used [src] @ location ([T.x],[T.y],[T.z]) : [format_frequency(frequency)]/[code]") - - var/datum/signal/signal = new - signal.source = src - signal.encryption = code - signal.data["message"] = message - - radio_connection.post_signal(src, signal) - +/obj/item/radio/integrated/signal/Initialize() + if(!radio_controller) return + if (src.frequency < PUBLIC_LOW_FREQ || src.frequency > PUBLIC_HIGH_FREQ) + src.frequency = sanitize_frequency(src.frequency) + + set_frequency(frequency) + +/obj/item/radio/integrated/signal/proc/set_frequency(new_frequency) + radio_controller.remove_object(src, frequency) + frequency = new_frequency + radio_connection = radio_controller.add_object(src, frequency) + +/obj/item/radio/integrated/signal/proc/send_signal(message="ACTIVATE") + + if(last_transmission && world.time < (last_transmission + 5)) + return + last_transmission = world.time + + var/time = time2text(world.realtime,"hh:mm:ss") + var/turf/T = get_turf(src) + lastsignalers.Add("[time] : [usr.key] used [src] @ location ([T.x],[T.y],[T.z]) : [format_frequency(frequency)]/[code]") + + var/datum/signal/signal = new + signal.source = src + signal.encryption = code + signal.data["message"] = message + + radio_connection.post_signal(src, signal) + /obj/item/radio/integrated/signal/Destroy() if(radio_controller) radio_controller.remove_object(src, frequency) diff --git a/code/game/objects/items/devices/advnifrepair.dm b/code/game/objects/items/devices/advnifrepair.dm index 987bee8b37..8a7c0b1da4 100644 --- a/code/game/objects/items/devices/advnifrepair.dm +++ b/code/game/objects/items/devices/advnifrepair.dm @@ -5,7 +5,6 @@ icon = 'icons/obj/device_alt.dmi' icon_state = "hydro" item_state = "gun" - flags = CONDUCT slot_flags = SLOT_BELT throwforce = 3 w_class = ITEMSIZE_SMALL diff --git a/code/game/objects/items/devices/ai_detector.dm b/code/game/objects/items/devices/ai_detector.dm index 7fa6f74521..fde112706f 100644 --- a/code/game/objects/items/devices/ai_detector.dm +++ b/code/game/objects/items/devices/ai_detector.dm @@ -17,11 +17,11 @@ // It's really really unlikely for the view range to change. But why not be futureproof anyways? range_alert = world.view range_warning = world.view * 2 - processing_objects += src + START_PROCESSING(SSobj, src) ..() /obj/item/device/multitool/ai_detector/Destroy() - processing_objects -= src + STOP_PROCESSING(SSobj, src) return ..() /obj/item/device/multitool/ai_detector/process() diff --git a/code/game/objects/items/devices/aicard.dm b/code/game/objects/items/devices/aicard.dm index c2af338521..0ced4be973 100644 --- a/code/game/objects/items/devices/aicard.dm +++ b/code/game/objects/items/devices/aicard.dm @@ -59,15 +59,15 @@ var/user = usr if (href_list["wipe"]) - var/confirm = alert("Are you sure you want to disable this core's power? This cannot be undone once started.", "Confirm Shutdown", "Yes", "No") + var/confirm = alert("Are you sure you want to disable this core's power? This cannot be undone once started.", "Confirm Shutdown", "No", "Yes") if(confirm == "Yes" && (CanUseTopic(user, state) == STATUS_INTERACTIVE)) add_attack_logs(user,carded_ai,"Purged from AI Card") flush = 1 carded_ai.suiciding = 1 to_chat(carded_ai, "Your power has been disabled!") - while (carded_ai && carded_ai.stat != 2) - if(carded_ai.controlling_drone && prob(carded_ai.oxyloss)) //You feel it creeping? Eventually will reach 100, resulting in the second half of the AI's remaining life being lonely. - carded_ai.controlling_drone.release_ai_control("Unit lost. Integrity too low to maintain connection.") + while (carded_ai && carded_ai.stat != DEAD) + if(carded_ai.deployed_shell && prob(carded_ai.oxyloss)) //You feel it creeping? Eventually will reach 100, resulting in the second half of the AI's remaining life being lonely. + carded_ai.disconnect_shell("Disconnecting from remote shell due to insufficent power.") carded_ai.adjustOxyLoss(2) carded_ai.updatehealth() sleep(10) @@ -80,8 +80,8 @@ carded_ai.control_disabled = text2num(href_list["wireless"]) to_chat(carded_ai, "Your wireless interface has been [carded_ai.control_disabled ? "disabled" : "enabled"]!") to_chat(user, "You [carded_ai.control_disabled ? "disable" : "enable"] the AI's wireless interface.") - if(carded_ai.control_disabled && carded_ai.controlling_drone) - carded_ai.controlling_drone.release_ai_control("Unit control terminated at intellicore port.") + if(carded_ai.control_disabled && carded_ai.deployed_shell) + carded_ai.disconnect_shell("Disconnecting from remote shell due to [src] wireless access interface being disabled.") update_icon() return 1 @@ -98,7 +98,7 @@ icon_state = "aicard" /obj/item/device/aicard/proc/grab_ai(var/mob/living/silicon/ai/ai, var/mob/living/user) - if(!ai.client && !ai.controlling_drone) + if(!ai.client && !ai.deployed_shell) to_chat(user, "ERROR: AI [ai.name] is offline. Unable to transfer.") return 0 @@ -107,14 +107,12 @@ return 0 if(!user.IsAdvancedToolUser() && isanimal(user)) - var/mob/living/simple_animal/S = user + var/mob/living/simple_mob/S = user if(!S.IsHumanoidToolUser(src)) return 0 user.visible_message("\The [user] starts transferring \the [ai] into \the [src]...", "You start transferring \the [ai] into \the [src]...") - to_chat(ai, "\The [user] is transferring you into \the [src]!") - if(ai.controlling_drone) - to_chat(ai.controlling_drone, "\The [user] is transferring you into \the [src]!") + show_message(span("critical", "\The [user] is transferring you into \the [src]!")) if(do_after(user, 100)) if(istype(ai.loc, /turf/)) @@ -130,8 +128,7 @@ ai.control_disabled = 1 ai.aiRestorePowerRoutine = 0 carded_ai = ai - if(ai.controlling_drone) - ai.controlling_drone.release_ai_control("Unit control lost.") + ai.disconnect_shell("Disconnected from remote shell due to core intelligence transfer.") //If the AI is controlling a borg, force the player back to core! if(ai.client) to_chat(ai, "You have been transferred into a mobile core. Remote access lost.") diff --git a/code/game/objects/items/devices/binoculars.dm b/code/game/objects/items/devices/binoculars.dm index 00ef6501d4..a971115ada 100644 --- a/code/game/objects/items/devices/binoculars.dm +++ b/code/game/objects/items/devices/binoculars.dm @@ -1,10 +1,7 @@ /obj/item/device/binoculars - name = "binoculars" desc = "A pair of binoculars." icon_state = "binoculars" - - flags = CONDUCT force = 5.0 w_class = ITEMSIZE_SMALL throwforce = 5.0 diff --git a/code/game/objects/items/devices/body_snatcher_vr.dm b/code/game/objects/items/devices/body_snatcher_vr.dm index 9e673dfe9c..e2287d5fce 100644 --- a/code/game/objects/items/devices/body_snatcher_vr.dm +++ b/code/game/objects/items/devices/body_snatcher_vr.dm @@ -5,7 +5,6 @@ icon = 'icons/obj/device_alt.dmi' icon_state = "sleevemate" //Give this a fancier sprite later. item_state = "healthanalyzer" - flags = CONDUCT slot_flags = SLOT_BELT w_class = ITEMSIZE_SMALL matter = list(DEFAULT_WALL_MATERIAL = 200) diff --git a/code/game/objects/items/devices/chameleonproj.dm b/code/game/objects/items/devices/chameleonproj.dm index 9775d64042..d0ae461edd 100644 --- a/code/game/objects/items/devices/chameleonproj.dm +++ b/code/game/objects/items/devices/chameleonproj.dm @@ -1,7 +1,6 @@ /obj/item/device/chameleon name = "chameleon projector" icon_state = "shield0" - flags = CONDUCT slot_flags = SLOT_BELT item_state = "electronic" throwforce = 5.0 diff --git a/code/game/objects/items/devices/communicator/cartridge.dm b/code/game/objects/items/devices/communicator/cartridge.dm index 6b29f1121e..b5a46b4ebe 100644 --- a/code/game/objects/items/devices/communicator/cartridge.dm +++ b/code/game/objects/items/devices/communicator/cartridge.dm @@ -379,7 +379,7 @@ ..() internal_devices |= new /obj/item/device/halogen_counter(src) -/obj/item/weapon/commcard/engineering/initialize() +/obj/item/weapon/commcard/engineering/Initialize() internal_data["grid_sensors"] = find_powernet_sensors() internal_data["powernet_target"] = "" @@ -616,7 +616,7 @@ internal_data["stat_display_active2"] = null internal_data["stat_display_special"] = null -/obj/item/weapon/commcard/head/initialize() +/obj/item/weapon/commcard/head/Initialize() // Have to register the commcard with the Radio controller to receive updates to the status displays radio_controller.add_object(src, 1435) ..() @@ -793,7 +793,7 @@ internal_devices |= new /obj.item/device/analyzer(src) internal_devices |= new /obj/item/device/halogen_counter(src) -/obj/item/weapon/commcard/head/ce/initialize() +/obj/item/weapon/commcard/head/ce/Initialize() internal_data["grid_sensors"] = find_powernet_sensors() internal_data["powernet_target"] = "" @@ -904,7 +904,7 @@ list("name" = "Shuttle Blast Door Control", "template" = "merc_blast_door_control.tmpl") ) -/obj/item/weapon/commcard/mercenary/initialize() +/obj/item/weapon/commcard/mercenary/Initialize() internal_data["shuttle_door_code"] = "smindicate" // Copied from PDA code internal_data["shuttle_doors"] = find_blast_doors() diff --git a/code/game/objects/items/devices/communicator/communicator.dm b/code/game/objects/items/devices/communicator/communicator.dm index ec9c09c161..6324af7fb5 100644 --- a/code/game/objects/items/devices/communicator/communicator.dm +++ b/code/game/objects/items/devices/communicator/communicator.dm @@ -82,7 +82,7 @@ var/global/list/obj/item/device/communicator/all_communicators = list() all_communicators += src all_communicators = sortAtom(all_communicators) node = get_exonet_node() - processing_objects |= src + START_PROCESSING(SSobj, src) camera = new(src) camera.name = "[src] #[rand(100,999)]" camera.c_tag = camera.name @@ -324,7 +324,7 @@ var/global/list/obj/item/device/communicator/all_communicators = list() //Clean up references that might point at us all_communicators -= src - processing_objects -= src + STOP_PROCESSING(SSobj, src) listening_objects.Remove(src) QDEL_NULL(camera) QDEL_NULL(exonet) diff --git a/code/game/objects/items/devices/communicator/phone.dm b/code/game/objects/items/devices/communicator/phone.dm index 8668627f8e..66a2b49f69 100644 --- a/code/game/objects/items/devices/communicator/phone.dm +++ b/code/game/objects/items/devices/communicator/phone.dm @@ -1,211 +1,211 @@ -// Proc: add_communicating() -// Parameters: 1 (comm - the communicator to add to communicating) -// Description: Used when this communicator gets a new communicator to relay say/me messages to -/obj/item/device/communicator/proc/add_communicating(obj/item/device/communicator/comm) - if(!comm || !istype(comm)) return - - communicating |= comm - listening_objects |= src - update_icon() - -// Proc: del_communicating() -// Parameters: 1 (comm - the communicator to remove from communicating) -// Description: Used when this communicator is being asked to stop relaying say/me messages to another -/obj/item/device/communicator/proc/del_communicating(obj/item/device/communicator/comm) - if(!comm || !istype(comm)) return - - communicating.Remove(comm) - update_icon() - -// Proc: open_connection() -// Parameters: 2 (user - the person who initiated the connecting being opened, candidate - the communicator or observer that will connect to the device) -// Description: Typechecks the candidate, then calls the correct proc for further connecting. -/obj/item/device/communicator/proc/open_connection(mob/user, var/atom/candidate) - if(isobserver(candidate)) - voice_invites.Remove(candidate) - open_connection_to_ghost(user, candidate) - else - if(istype(candidate, /obj/item/device/communicator)) - open_connection_to_communicator(user, candidate) - -// Proc: open_connection_to_communicator() -// Parameters: 2 (user - the person who initiated this and will be receiving feedback information, candidate - someone else's communicator) -// Description: Adds the candidate and src to each other's communicating lists, allowing messages seen by the devices to be relayed. -/obj/item/device/communicator/proc/open_connection_to_communicator(mob/user, var/atom/candidate) - if(!istype(candidate, /obj/item/device/communicator)) - return - var/obj/item/device/communicator/comm = candidate - voice_invites.Remove(candidate) - comm.voice_requests.Remove(src) - - if(user) - comm.visible_message("\icon[src] Connecting to [src].") - to_chat(user, "\icon[src] Attempting to call [comm].") - sleep(10) - to_chat(user, "\icon[src] Dialing internally from [station_name()], [system_name()].") - sleep(20) //If they don't have an exonet something is very wrong and we want a runtime. - to_chat(user, "\icon[src] Connection re-routed to [comm] at [comm.exonet.address].") - sleep(40) - to_chat(user, "\icon[src] Connection to [comm] at [comm.exonet.address] established.") - comm.visible_message("\icon[src] Connection to [src] at [exonet.address] established.") - sleep(20) - - src.add_communicating(comm) - comm.add_communicating(src) - -// Proc: open_connection_to_ghost() -// Parameters: 2 (user - the person who initiated this, candidate - the ghost that will be turned into a voice mob) -// Description: Pulls the candidate ghost from deadchat, makes a new voice mob, transfers their identity, then their client. -/obj/item/device/communicator/proc/open_connection_to_ghost(mob/user, var/mob/candidate) - if(!isobserver(candidate)) - return - //Handle moving the ghost into the new shell. - announce_ghost_joinleave(candidate, 0, "They are occupying a personal communications device now.") - voice_requests.Remove(candidate) - voice_invites.Remove(candidate) - var/mob/living/voice/new_voice = new /mob/living/voice(src) //Make the voice mob the ghost is going to be. - new_voice.transfer_identity(candidate) //Now make the voice mob load from the ghost's active character in preferences. - //Do some simple logging since this is a tad risky as a concept. - var/msg = "[candidate && candidate.client ? "[candidate.client.key]" : "*no key*"] ([candidate]) has entered [src], triggered by \ - [user && user.client ? "[user.client.key]" : "*no key*"] ([user ? "[user]" : "*null*"]) at [x],[y],[z]. They have joined as [new_voice.name]." - message_admins(msg) - log_game(msg) - new_voice.mind = candidate.mind //Transfer the mind, if any. - new_voice.ckey = candidate.ckey //Finally, bring the client over. - voice_mobs.Add(new_voice) - listening_objects |= src - - var/obj/screen/blackness = new() //Makes a black screen, so the candidate can't see what's going on before actually 'connecting' to the communicator. - blackness.screen_loc = ui_entire_screen - blackness.icon = 'icons/effects/effects.dmi' - blackness.icon_state = "1" - blackness.mouse_opacity = 2 //Can't see anything! - new_voice.client.screen.Add(blackness) - - update_icon() - - //Now for some connection fluff. - if(user) - to_chat(user, "\icon[src] Connecting to [candidate].") - to_chat(new_voice, "\icon[src] Attempting to call [src].") - sleep(10) - to_chat(new_voice, "\icon[src] Dialing to [station_name()], Kara Subsystem, [system_name()].") - sleep(20) - to_chat(new_voice, "\icon[src] Connecting to [station_name()] telecommunications array.") - sleep(40) - to_chat(new_voice, "\icon[src] Connection to [station_name()] telecommunications array established. Redirecting signal to [src].") - sleep(20) - - //We're connected, no need to hide everything. - new_voice.client.screen.Remove(blackness) - qdel(blackness) - - to_chat(new_voice, "\icon[src] Connection to [src] established.") - to_chat(new_voice, "To talk to the person on the other end of the call, just talk normally.") - to_chat(new_voice, "If you want to end the call, use the 'Hang Up' verb. The other person can also hang up at any time.") - to_chat(new_voice, "Remember, your character does not know anything you've learned from observing!") - if(new_voice.mind) - new_voice.mind.assigned_role = "Disembodied Voice" - if(user) - to_chat(user, "\icon[src] Your communicator is now connected to [candidate]'s communicator.") - -// Proc: close_connection() -// Parameters: 3 (user - the user who initiated the disconnect, target - the mob or device being disconnected, reason - string shown when disconnected) -// Description: Deletes specific voice_mobs or disconnects communicators, and shows a message to everyone when doing so. If target is null, all communicators -// and voice mobs are removed. -/obj/item/device/communicator/proc/close_connection(mob/user, var/atom/target, var/reason) - if(voice_mobs.len == 0 && communicating.len == 0) - return - - for(var/mob/living/voice/voice in voice_mobs) //Handle ghost-callers - if(target && voice != target) //If no target is inputted, it deletes all of them. - continue - to_chat(voice, "\icon[src] [reason].") - visible_message("\icon[src] [reason].") - voice_mobs.Remove(voice) - qdel(voice) - update_icon() - - for(var/obj/item/device/communicator/comm in communicating) //Now we handle real communicators. - if(target && comm != target) - continue - src.del_communicating(comm) - comm.del_communicating(src) - comm.visible_message("\icon[src] [reason].") - visible_message("\icon[src] [reason].") - if(comm.camera && video_source == comm.camera) //We hung up on the person on video - end_video() - if(camera && comm.video_source == camera) //We hung up on them while they were watching us - comm.end_video() - - if(voice_mobs.len == 0 && communicating.len == 0) - listening_objects.Remove(src) - -// Proc: request() -// Parameters: 1 (candidate - the ghost or communicator wanting to call the device) -// Description: Response to a communicator or observer trying to call the device. Adds them to the list of requesters -/obj/item/device/communicator/proc/request(var/atom/candidate) - if(candidate in voice_requests) - return - var/who = null - if(isobserver(candidate)) - who = candidate.name - else if(istype(candidate, /obj/item/device/communicator)) - var/obj/item/device/communicator/comm = candidate - who = comm.owner - comm.voice_invites |= src - - if(!who) - return - - voice_requests |= candidate - - if(ringer) - playsound(loc, 'sound/machines/twobeep.ogg', 50, 1) - for (var/mob/O in hearers(2, loc)) - O.show_message(text("\icon[src] *beep*")) - - alert_called = 1 - update_icon() - - //Search for holder of the device. - var/mob/living/L = null - if(loc && isliving(loc)) - L = loc - - if(L) - to_chat(L, "\icon[src] Communications request from [who].") - -// Proc: del_request() -// Parameters: 1 (candidate - the ghost or communicator to be declined) -// Description: Declines a request and cleans up both ends -/obj/item/device/communicator/proc/del_request(var/atom/candidate) - if(!(candidate in voice_requests)) - return - - if(isobserver(candidate)) - to_chat(candidate, "Your communicator call request was declined.") - else if(istype(candidate, /obj/item/device/communicator)) - var/obj/item/device/communicator/comm = candidate - comm.voice_invites -= src - - voice_requests -= candidate - - //Search for holder of our device. - var/mob/living/us = null - if(loc && isliving(loc)) - us = loc - - if(us) - to_chat(us, "\icon[src] Declined request.") - -// Proc: see_emote() -// Parameters: 2 (M - the mob the emote originated from, text - the emote's contents) -// Description: Relays the emote to all linked communicators. -/obj/item/device/communicator/see_emote(mob/living/M, text) - var/rendered = "\icon[src] [text]" - for(var/obj/item/device/communicator/comm in communicating) - var/turf/T = get_turf(comm) +// Proc: add_communicating() +// Parameters: 1 (comm - the communicator to add to communicating) +// Description: Used when this communicator gets a new communicator to relay say/me messages to +/obj/item/device/communicator/proc/add_communicating(obj/item/device/communicator/comm) + if(!comm || !istype(comm)) return + + communicating |= comm + listening_objects |= src + update_icon() + +// Proc: del_communicating() +// Parameters: 1 (comm - the communicator to remove from communicating) +// Description: Used when this communicator is being asked to stop relaying say/me messages to another +/obj/item/device/communicator/proc/del_communicating(obj/item/device/communicator/comm) + if(!comm || !istype(comm)) return + + communicating.Remove(comm) + update_icon() + +// Proc: open_connection() +// Parameters: 2 (user - the person who initiated the connecting being opened, candidate - the communicator or observer that will connect to the device) +// Description: Typechecks the candidate, then calls the correct proc for further connecting. +/obj/item/device/communicator/proc/open_connection(mob/user, var/atom/candidate) + if(isobserver(candidate)) + voice_invites.Remove(candidate) + open_connection_to_ghost(user, candidate) + else + if(istype(candidate, /obj/item/device/communicator)) + open_connection_to_communicator(user, candidate) + +// Proc: open_connection_to_communicator() +// Parameters: 2 (user - the person who initiated this and will be receiving feedback information, candidate - someone else's communicator) +// Description: Adds the candidate and src to each other's communicating lists, allowing messages seen by the devices to be relayed. +/obj/item/device/communicator/proc/open_connection_to_communicator(mob/user, var/atom/candidate) + if(!istype(candidate, /obj/item/device/communicator)) + return + var/obj/item/device/communicator/comm = candidate + voice_invites.Remove(candidate) + comm.voice_requests.Remove(src) + + if(user) + comm.visible_message("\icon[src] Connecting to [src].") + to_chat(user, "\icon[src] Attempting to call [comm].") + sleep(10) + to_chat(user, "\icon[src] Dialing internally from [station_name()], [system_name()].") + sleep(20) //If they don't have an exonet something is very wrong and we want a runtime. + to_chat(user, "\icon[src] Connection re-routed to [comm] at [comm.exonet.address].") + sleep(40) + to_chat(user, "\icon[src] Connection to [comm] at [comm.exonet.address] established.") + comm.visible_message("\icon[src] Connection to [src] at [exonet.address] established.") + sleep(20) + + src.add_communicating(comm) + comm.add_communicating(src) + +// Proc: open_connection_to_ghost() +// Parameters: 2 (user - the person who initiated this, candidate - the ghost that will be turned into a voice mob) +// Description: Pulls the candidate ghost from deadchat, makes a new voice mob, transfers their identity, then their client. +/obj/item/device/communicator/proc/open_connection_to_ghost(mob/user, var/mob/candidate) + if(!isobserver(candidate)) + return + //Handle moving the ghost into the new shell. + announce_ghost_joinleave(candidate, 0, "They are occupying a personal communications device now.") + voice_requests.Remove(candidate) + voice_invites.Remove(candidate) + var/mob/living/voice/new_voice = new /mob/living/voice(src) //Make the voice mob the ghost is going to be. + new_voice.transfer_identity(candidate) //Now make the voice mob load from the ghost's active character in preferences. + //Do some simple logging since this is a tad risky as a concept. + var/msg = "[candidate && candidate.client ? "[candidate.client.key]" : "*no key*"] ([candidate]) has entered [src], triggered by \ + [user && user.client ? "[user.client.key]" : "*no key*"] ([user ? "[user]" : "*null*"]) at [x],[y],[z]. They have joined as [new_voice.name]." + message_admins(msg) + log_game(msg) + new_voice.mind = candidate.mind //Transfer the mind, if any. + new_voice.ckey = candidate.ckey //Finally, bring the client over. + voice_mobs.Add(new_voice) + listening_objects |= src + + var/obj/screen/blackness = new() //Makes a black screen, so the candidate can't see what's going on before actually 'connecting' to the communicator. + blackness.screen_loc = ui_entire_screen + blackness.icon = 'icons/effects/effects.dmi' + blackness.icon_state = "1" + blackness.mouse_opacity = 2 //Can't see anything! + new_voice.client.screen.Add(blackness) + + update_icon() + + //Now for some connection fluff. + if(user) + to_chat(user, "\icon[src] Connecting to [candidate].") + to_chat(new_voice, "\icon[src] Attempting to call [src].") + sleep(10) + to_chat(new_voice, "\icon[src] Dialing to [station_name()], Kara Subsystem, [system_name()].") + sleep(20) + to_chat(new_voice, "\icon[src] Connecting to [station_name()] telecommunications array.") + sleep(40) + to_chat(new_voice, "\icon[src] Connection to [station_name()] telecommunications array established. Redirecting signal to [src].") + sleep(20) + + //We're connected, no need to hide everything. + new_voice.client.screen.Remove(blackness) + qdel(blackness) + + to_chat(new_voice, "\icon[src] Connection to [src] established.") + to_chat(new_voice, "To talk to the person on the other end of the call, just talk normally.") + to_chat(new_voice, "If you want to end the call, use the 'Hang Up' verb. The other person can also hang up at any time.") + to_chat(new_voice, "Remember, your character does not know anything you've learned from observing!") + if(new_voice.mind) + new_voice.mind.assigned_role = "Disembodied Voice" + if(user) + to_chat(user, "\icon[src] Your communicator is now connected to [candidate]'s communicator.") + +// Proc: close_connection() +// Parameters: 3 (user - the user who initiated the disconnect, target - the mob or device being disconnected, reason - string shown when disconnected) +// Description: Deletes specific voice_mobs or disconnects communicators, and shows a message to everyone when doing so. If target is null, all communicators +// and voice mobs are removed. +/obj/item/device/communicator/proc/close_connection(mob/user, var/atom/target, var/reason) + if(voice_mobs.len == 0 && communicating.len == 0) + return + + for(var/mob/living/voice/voice in voice_mobs) //Handle ghost-callers + if(target && voice != target) //If no target is inputted, it deletes all of them. + continue + to_chat(voice, "\icon[src] [reason].") + visible_message("\icon[src] [reason].") + voice_mobs.Remove(voice) + qdel(voice) + update_icon() + + for(var/obj/item/device/communicator/comm in communicating) //Now we handle real communicators. + if(target && comm != target) + continue + src.del_communicating(comm) + comm.del_communicating(src) + comm.visible_message("\icon[src] [reason].") + visible_message("\icon[src] [reason].") + if(comm.camera && video_source == comm.camera) //We hung up on the person on video + end_video() + if(camera && comm.video_source == camera) //We hung up on them while they were watching us + comm.end_video() + + if(voice_mobs.len == 0 && communicating.len == 0) + listening_objects.Remove(src) + +// Proc: request() +// Parameters: 1 (candidate - the ghost or communicator wanting to call the device) +// Description: Response to a communicator or observer trying to call the device. Adds them to the list of requesters +/obj/item/device/communicator/proc/request(var/atom/candidate) + if(candidate in voice_requests) + return + var/who = null + if(isobserver(candidate)) + who = candidate.name + else if(istype(candidate, /obj/item/device/communicator)) + var/obj/item/device/communicator/comm = candidate + who = comm.owner + comm.voice_invites |= src + + if(!who) + return + + voice_requests |= candidate + + if(ringer) + playsound(loc, 'sound/machines/twobeep.ogg', 50, 1) + for (var/mob/O in hearers(2, loc)) + O.show_message(text("\icon[src] *beep*")) + + alert_called = 1 + update_icon() + + //Search for holder of the device. + var/mob/living/L = null + if(loc && isliving(loc)) + L = loc + + if(L) + to_chat(L, "\icon[src] Communications request from [who].") + +// Proc: del_request() +// Parameters: 1 (candidate - the ghost or communicator to be declined) +// Description: Declines a request and cleans up both ends +/obj/item/device/communicator/proc/del_request(var/atom/candidate) + if(!(candidate in voice_requests)) + return + + if(isobserver(candidate)) + to_chat(candidate, "Your communicator call request was declined.") + else if(istype(candidate, /obj/item/device/communicator)) + var/obj/item/device/communicator/comm = candidate + comm.voice_invites -= src + + voice_requests -= candidate + + //Search for holder of our device. + var/mob/living/us = null + if(loc && isliving(loc)) + us = loc + + if(us) + to_chat(us, "\icon[src] Declined request.") + +// Proc: see_emote() +// Parameters: 2 (M - the mob the emote originated from, text - the emote's contents) +// Description: Relays the emote to all linked communicators. +/obj/item/device/communicator/see_emote(mob/living/M, text) + var/rendered = "\icon[src] [text]" + for(var/obj/item/device/communicator/comm in communicating) + var/turf/T = get_turf(comm) if(!T) return //VOREStation Edit Start for commlinks var/list/mobs_to_relay @@ -215,26 +215,26 @@ else var/list/in_range = get_mobs_and_objs_in_view_fast(T,world.view,0) //Range of 3 since it's a tiny video display mobs_to_relay = in_range["mobs"] - //VOREStation Edit End - - for(var/mob/mob in mobs_to_relay) //We can't use visible_message(), or else we will get an infinite loop if two communicators hear each other. - var/dst = get_dist(get_turf(mob),get_turf(comm)) - if(dst <= video_range) - mob.show_message(rendered) - else - to_chat(mob, "You can barely see some movement on \the [src]'s display.") - - ..() - -// Proc: hear_talk() -// Parameters: 4 (M - the mob the speech originated from, text - what is being said, verb - the word used to describe how text is being said, speaking - language -// being used) -// Description: Relays the speech to all linked communicators. -/obj/item/device/communicator/hear_talk(mob/living/M, text, verb, datum/language/speaking) - for(var/obj/item/device/communicator/comm in communicating) - - var/turf/T = get_turf(comm) - if(!T) return + //VOREStation Edit End + + for(var/mob/mob in mobs_to_relay) //We can't use visible_message(), or else we will get an infinite loop if two communicators hear each other. + var/dst = get_dist(get_turf(mob),get_turf(comm)) + if(dst <= video_range) + mob.show_message(rendered) + else + to_chat(mob, "You can barely see some movement on \the [src]'s display.") + + ..() + +// Proc: hear_talk() +// Parameters: 4 (M - the mob the speech originated from, text - what is being said, verb - the word used to describe how text is being said, speaking - language +// being used) +// Description: Relays the speech to all linked communicators. +/obj/item/device/communicator/hear_talk(mob/living/M, text, verb, datum/language/speaking) + for(var/obj/item/device/communicator/comm in communicating) + + var/turf/T = get_turf(comm) + if(!T) return //VOREStation Edit Start for commlinks var/list/mobs_to_relay if(istype(comm,/obj/item/device/communicator/commlink)) @@ -243,152 +243,156 @@ else var/list/in_range = get_mobs_and_objs_in_view_fast(T,world.view,0) //Range of 3 since it's a tiny video display mobs_to_relay = in_range["mobs"] - //VOREStation Edit End - - for(var/mob/mob in mobs_to_relay) - //Can whoever is hearing us understand? - if(!mob.say_understands(M, speaking)) - if(speaking) - text = speaking.scramble(text) - else - text = stars(text) - var/name_used = M.GetVoice() - var/rendered = null - if(speaking) //Language being used - rendered = "\icon[src] [name_used] [speaking.format_message(text, verb)]" - else - rendered = "\icon[src] [name_used] [verb], \"[text]\"" - mob.show_message(rendered, 2) - -// Proc: show_message() -// Parameters: 4 (msg - the message, type - number to determine if message is visible or audible, alt - unknown, alt_type - unknown) -// Description: Relays the message to all linked communicators. -/obj/item/device/communicator/show_message(msg, type, alt, alt_type) - var/rendered = "\icon[src] [msg]" - for(var/obj/item/device/communicator/comm in communicating) - var/turf/T = get_turf(comm) - if(!T) return - var/list/in_range = get_mobs_and_objs_in_view_fast(T,world.view,0) - var/list/mobs_to_relay = in_range["mobs"] - - for(var/mob/mob in mobs_to_relay) - mob.show_message(rendered) - ..() - -// Verb: join_as_voice() -// Parameters: None -// Description: Allows ghosts to call communicators, if they meet all the requirements. -/mob/observer/dead/verb/join_as_voice() - set category = "Ghost" - set name = "Call Communicator" - set desc = "If there is a communicator available, send a request to speak through it. This will reset your respawn timer, if someone picks up." - - if(ticker.current_state < GAME_STATE_PLAYING) - to_chat(src, "The game hasn't started yet!") - return - - if (!src.stat) - return - - if (usr != src) - return //something is terribly wrong - - var/confirm = alert(src, "Would you like to talk as [src.client.prefs.real_name], over a communicator? \ - This will reset your respawn timer, if someone answers.", "Join as Voice?", "Yes","No") - if(confirm == "No") - return - - for(var/mob/living/L in mob_list) //Simple check so you don't have dead people calling. - if(src.client.prefs.real_name == L.real_name) - to_chat(src, "Your identity is already present in the game world. Please load in a different character first.") - return - - var/obj/machinery/exonet_node/E = get_exonet_node() - if(!E || !E.on || !E.allow_external_communicators) - to_chat(src, "The Exonet node at telecommunications is down at the moment, or is actively blocking you, \ - so your call can't go through.") - return - - var/list/choices = list() - for(var/obj/item/device/communicator/comm in all_communicators) - if(!comm.network_visibility || !comm.exonet || !comm.exonet.address) - continue - choices.Add(comm) - - if(!choices.len) - to_chat(src , "There are no available communicators, sorry.") - return - - var/choice = input(src,"Send a voice request to whom?") as null|anything in choices - if(choice) - var/obj/item/device/communicator/chosen_communicator = choice - var/mob/observer/dead/O = src - if(O.exonet) - O.exonet.send_message(chosen_communicator.exonet.address, "voice") - - to_chat(src, "A communications request has been sent to [chosen_communicator]. Now you need to wait until someone answers.") - -// Proc: connect_video() -// Parameters: user - the mob doing the viewing of video, comm - the communicator at the far end -// Description: Sets up a videocall and puts the first view into it using watch_video, and updates the icon -/obj/item/device/communicator/proc/connect_video(mob/user,obj/item/device/communicator/comm) - if((!user) || (!comm) || user.stat) return //KO or dead, or already in a video - - if(video_source) //Already in a video - to_chat(user, "You are already connected to a video call!") - - if(user.blinded) //User is blinded - to_chat(user, "You cannot see well enough to do that!") - - if(!(src in comm.communicating) || !comm.camera) //You called someone with a broken communicator or one that's fake or yourself or something - to_chat(user, "\icon[src]ERROR: Video failed. Either bandwidth is too low, or the other communicator is malfunctioning.") - - to_chat(user, "\icon[src] Attempting to start video over existing call.") - sleep(30) - to_chat(user, "\icon[src] Please wait...") - - video_source = comm.camera - comm.visible_message("\icon[src] New video connection from [comm].") - watch_video(user) - update_icon() - -// Proc: watch_video() -// Parameters: user - the mob doing the viewing of video -// Description: Moves a mob's eye to the far end for the duration of viewing the far end -/obj/item/device/communicator/proc/watch_video(mob/user) - if(!Adjacent(user) || !video_source) return - user.set_machine(video_source) - user.reset_view(video_source) - to_chat(user,"Now viewing video session. To leave camera view, close the communicator window OR: OOC -> Cancel Camera View") - to_chat(user,"To return to an active video session, use the communicator in your hand.") - spawn(0) - while(user.machine == video_source && Adjacent(user)) - var/turf/T = get_turf(video_source) - if(!T || !is_on_same_plane_or_station(T.z, user.z) || !video_source.can_use()) - user << "The screen bursts into static, then goes black." - video_cleanup(user) - return - sleep(10) - - video_cleanup(user) - -// Proc: video_cleanup() -// Parameters: user - the mob who doesn't want to see video anymore -// Description: Cleans up mob's client when they stop watching a video -/obj/item/device/communicator/proc/video_cleanup(mob/user) - if(!user) return - - user.reset_view(null) - user.unset_machine() - -// Proc: end_video() -// Parameters: reason - the text reason to print for why it ended -// Description: Ends the video call by clearing video_source -/obj/item/device/communicator/proc/end_video(var/reason) - video_source = null - - . = "\icon[src] [reason ? reason : "Video session ended"]." - - visible_message(.) - update_icon() + //VOREStation Edit End + + for(var/mob/mob in mobs_to_relay) + //Can whoever is hearing us understand? + if(!mob.say_understands(M, speaking)) + if(speaking) + text = speaking.scramble(text) + else + text = stars(text) + var/name_used = M.GetVoice() + var/rendered = null + if(speaking) //Language being used + rendered = "\icon[src] [name_used] [speaking.format_message(text, verb)]" + else + rendered = "\icon[src] [name_used] [verb], \"[text]\"" + mob.show_message(rendered, 2) + +// Proc: show_message() +// Parameters: 4 (msg - the message, type - number to determine if message is visible or audible, alt - unknown, alt_type - unknown) +// Description: Relays the message to all linked communicators. +/obj/item/device/communicator/show_message(msg, type, alt, alt_type) + var/rendered = "\icon[src] [msg]" + for(var/obj/item/device/communicator/comm in communicating) + var/turf/T = get_turf(comm) + if(!T) return + var/list/in_range = get_mobs_and_objs_in_view_fast(T,world.view,0) + var/list/mobs_to_relay = in_range["mobs"] + + for(var/mob/mob in mobs_to_relay) + mob.show_message(rendered) + ..() + +// Verb: join_as_voice() +// Parameters: None +// Description: Allows ghosts to call communicators, if they meet all the requirements. +/mob/observer/dead/verb/join_as_voice() + set category = "Ghost" + set name = "Call Communicator" + set desc = "If there is a communicator available, send a request to speak through it. This will reset your respawn timer, if someone picks up." + + if(ticker.current_state < GAME_STATE_PLAYING) + to_chat(src, "The game hasn't started yet!") + return + + if (!src.stat) + return + + if (usr != src) + return //something is terribly wrong + + var/confirm = alert(src, "Would you like to talk as [src.client.prefs.real_name], over a communicator? \ + This will reset your respawn timer, if someone answers.", "Join as Voice?", "Yes","No") + if(confirm == "No") + return + + if(config.antag_hud_restricted && has_enabled_antagHUD == 1) + to_chat(src, "You have used the antagHUD and cannot respawn or use communicators!") + return + + for(var/mob/living/L in mob_list) //Simple check so you don't have dead people calling. + if(src.client.prefs.real_name == L.real_name) + to_chat(src, "Your identity is already present in the game world. Please load in a different character first.") + return + + var/obj/machinery/exonet_node/E = get_exonet_node() + if(!E || !E.on || !E.allow_external_communicators) + to_chat(src, "The Exonet node at telecommunications is down at the moment, or is actively blocking you, \ + so your call can't go through.") + return + + var/list/choices = list() + for(var/obj/item/device/communicator/comm in all_communicators) + if(!comm.network_visibility || !comm.exonet || !comm.exonet.address) + continue + choices.Add(comm) + + if(!choices.len) + to_chat(src , "There are no available communicators, sorry.") + return + + var/choice = input(src,"Send a voice request to whom?") as null|anything in choices + if(choice) + var/obj/item/device/communicator/chosen_communicator = choice + var/mob/observer/dead/O = src + if(O.exonet) + O.exonet.send_message(chosen_communicator.exonet.address, "voice") + + to_chat(src, "A communications request has been sent to [chosen_communicator]. Now you need to wait until someone answers.") + +// Proc: connect_video() +// Parameters: user - the mob doing the viewing of video, comm - the communicator at the far end +// Description: Sets up a videocall and puts the first view into it using watch_video, and updates the icon +/obj/item/device/communicator/proc/connect_video(mob/user,obj/item/device/communicator/comm) + if((!user) || (!comm) || user.stat) return //KO or dead, or already in a video + + if(video_source) //Already in a video + to_chat(user, "You are already connected to a video call!") + + if(user.blinded) //User is blinded + to_chat(user, "You cannot see well enough to do that!") + + if(!(src in comm.communicating) || !comm.camera) //You called someone with a broken communicator or one that's fake or yourself or something + to_chat(user, "\icon[src]ERROR: Video failed. Either bandwidth is too low, or the other communicator is malfunctioning.") + + to_chat(user, "\icon[src] Attempting to start video over existing call.") + sleep(30) + to_chat(user, "\icon[src] Please wait...") + + video_source = comm.camera + comm.visible_message("\icon[src] New video connection from [comm].") + watch_video(user) + update_icon() + +// Proc: watch_video() +// Parameters: user - the mob doing the viewing of video +// Description: Moves a mob's eye to the far end for the duration of viewing the far end +/obj/item/device/communicator/proc/watch_video(mob/user) + if(!Adjacent(user) || !video_source) return + user.set_machine(video_source) + user.reset_view(video_source) + to_chat(user,"Now viewing video session. To leave camera view, close the communicator window OR: OOC -> Cancel Camera View") + to_chat(user,"To return to an active video session, use the communicator in your hand.") + spawn(0) + while(user.machine == video_source && Adjacent(user)) + var/turf/T = get_turf(video_source) + if(!T || !is_on_same_plane_or_station(T.z, user.z) || !video_source.can_use()) + user << "The screen bursts into static, then goes black." + video_cleanup(user) + return + sleep(10) + + video_cleanup(user) + +// Proc: video_cleanup() +// Parameters: user - the mob who doesn't want to see video anymore +// Description: Cleans up mob's client when they stop watching a video +/obj/item/device/communicator/proc/video_cleanup(mob/user) + if(!user) return + + user.reset_view(null) + user.unset_machine() + +// Proc: end_video() +// Parameters: reason - the text reason to print for why it ended +// Description: Ends the video call by clearing video_source +/obj/item/device/communicator/proc/end_video(var/reason) + video_source = null + + . = "\icon[src] [reason ? reason : "Video session ended"]." + + visible_message(.) + update_icon() diff --git a/code/game/objects/items/devices/debugger.dm b/code/game/objects/items/devices/debugger.dm index c8d326b44e..a0d41a6124 100644 --- a/code/game/objects/items/devices/debugger.dm +++ b/code/game/objects/items/devices/debugger.dm @@ -9,7 +9,6 @@ desc = "Used to debug electronic equipment." icon = 'icons/obj/hacktool.dmi' icon_state = "hacktool-g" - flags = CONDUCT force = 5.0 w_class = ITEMSIZE_SMALL throwforce = 5.0 diff --git a/code/game/objects/items/devices/defib.dm b/code/game/objects/items/devices/defib.dm index a4d0dd4d8f..26fb1b69aa 100644 --- a/code/game/objects/items/devices/defib.dm +++ b/code/game/objects/items/devices/defib.dm @@ -53,7 +53,7 @@ else new_overlays += "[initial(icon_state)]-powered" - var/ratio = Ceiling(bcell.percent()/25) * 25 + var/ratio = CEILING(bcell.percent()/25, 1) * 25 new_overlays += "[initial(icon_state)]-charge[ratio]" else new_overlays += "[initial(icon_state)]-nocell" @@ -503,8 +503,7 @@ var/obj/item/organ/internal/brain/brain = H.internal_organs_by_name[O_BRAIN] if(!brain) return //no brain - var/defib_intermediary_calculation = (deadtime - DEFIB_TIME_LOSS)/(DEFIB_TIME_LIMIT - DEFIB_TIME_LOSS)*brain.max_damage - var/brain_damage = Clamp(defib_intermediary_calculation, H.getBrainLoss(), brain.max_damage) + var/brain_damage = CLAMP((deadtime - DEFIB_TIME_LOSS)/(DEFIB_TIME_LIMIT - DEFIB_TIME_LOSS)*brain.max_damage, H.getBrainLoss(), brain.max_damage) H.setBrainLoss(brain_damage) /obj/item/weapon/shockpaddles/proc/make_announcement(var/message, var/msg_class) @@ -605,7 +604,7 @@ /obj/item/weapon/shockpaddles/standalone/Destroy() . = ..() if(fail_counter) - processing_objects.Remove(src) + STOP_PROCESSING(SSobj, src) /obj/item/weapon/shockpaddles/standalone/check_charge(var/charge_amt) return 1 @@ -618,7 +617,7 @@ if(fail_counter > 0) radiation_repository.radiate(src, fail_counter--) else - processing_objects.Remove(src) + STOP_PROCESSING(SSobj, src) /obj/item/weapon/shockpaddles/standalone/emp_act(severity) ..() @@ -633,7 +632,7 @@ to_chat(loc, "\The [src] feel pleasantly warm.") if(new_fail && !fail_counter) - processing_objects.Add(src) + START_PROCESSING(SSobj, src) fail_counter = new_fail /* From the Bay port, this doesn't seem to have a sprite. diff --git a/code/game/objects/items/devices/flash.dm b/code/game/objects/items/devices/flash.dm index 53b2d83564..1fd41ec768 100644 --- a/code/game/objects/items/devices/flash.dm +++ b/code/game/objects/items/devices/flash.dm @@ -7,14 +7,82 @@ w_class = ITEMSIZE_SMALL throw_speed = 4 throw_range = 10 - flags = CONDUCT origin_tech = list(TECH_MAGNET = 2, TECH_COMBAT = 1) var/times_used = 0 //Number of times it's been used. - var/broken = 0 //Is the flash burnt out? + var/broken = FALSE //Is the flash burnt out? var/last_used = 0 //last world.time it was used. var/max_flashes = 10 // How many times the flash can be used before needing to self recharge. var/halloss_per_flash = 30 + var/break_mod = 3 // The percent to break increased by every use on the flash. + + var/can_break = TRUE // Can the flash break? + var/can_repair = FALSE // Can you repair the flash? + var/repairing = FALSE // Are we repairing right now? + + var/safe_flashes = 2 // How many flashes are kept in 1% breakchance? + + var/charge_only = FALSE // Does the flash run purely on charge? + + var/base_icon = "flash" + + var/obj/item/weapon/cell/power_supply //What type of power cell this uses + var/charge_cost = 30 //How much energy is needed to flash. + var/use_external_power = FALSE // Do we use charge from an external source? + + var/cell_type = /obj/item/weapon/cell/device + +/obj/item/device/flash/Initialize() + ..() + power_supply = new cell_type(src) + +/obj/item/device/flash/attackby(var/obj/item/W, var/mob/user) + if(W.is_screwdriver() && broken) + if(repairing) + to_chat(user, "\The [src] is already being repaired!") + return + user.visible_message("\The [user] starts trying to repair \the [src]'s bulb.") + repairing = TRUE + if(do_after(user, (40 SECONDS + rand(0, 20 SECONDS)) * W.toolspeed) && can_repair) + if(prob(30)) + user.visible_message("\The [user] successfully repairs \the [src]!") + broken = FALSE + update_icon() + playsound(src.loc, W.usesound, 50, 1) + else + user.visible_message("\The [user] fails to repair \the [src].") + repairing = FALSE + else + ..() + +/obj/item/device/flash/update_icon() + var/obj/item/weapon/cell/battery = power_supply + + if(use_external_power) + battery = get_external_power_supply() + + if(broken || !battery || battery.charge < charge_cost) + icon_state = "[base_icon]burnt" + else + icon_state = "[base_icon]" + return + +/obj/item/device/flash/get_cell() + return power_supply + +/obj/item/device/flash/proc/get_external_power_supply() + if(isrobot(src.loc)) + var/mob/living/silicon/robot/R = src.loc + return R.cell + if(istype(src.loc, /obj/item/rig_module)) + var/obj/item/rig_module/module = src.loc + if(module.holder && module.holder.wearer) + var/mob/living/carbon/human/H = module.holder.wearer + if(istype(H) && H.back) + var/obj/item/weapon/rig/suit = H.back + if(istype(suit)) + return suit.cell + return null /obj/item/device/flash/proc/clown_check(var/mob/user) if(user && (CLUMSY in user.mutations) && prob(50)) @@ -29,31 +97,53 @@ for(var/i=0, i < max_flashes, i++) if(last_used + 10 SECONDS > world.time) break + + else if(use_external_power) + var/obj/item/weapon/cell/external = get_external_power_supply() + if(!external || !external.use(charge_cost)) //Take power from the borg or rig! + break + + else if(!power_supply || !power_supply.checked_use(charge_cost)) + break + last_used += 10 SECONDS times_used-- + last_used = world.time times_used = max(0,round(times_used)) //sanity + update_icon() // Returns true if the device can flash. /obj/item/device/flash/proc/check_capacitor(var/mob/user) //spamming the flash before it's fully charged (60 seconds) increases the chance of it breaking //It will never break on the first use. - if(times_used <= max_flashes) + var/obj/item/weapon/cell/battery = power_supply + + if(use_external_power) + battery = get_external_power_supply() + + if(times_used <= max_flashes && battery && battery.checked_use(charge_cost)) last_used = world.time - if(prob( round(times_used / 2) )) //if you use it 10 times in a minute it has a 5% chance to break. - broken = 1 + if(prob( max(0, times_used - safe_flashes) * 2 + (times_used >= 1) ) && can_break) //if you use it 10 times in a minute it has a 30% chance to break. + broken = TRUE if(user) to_chat(user, "The bulb has burnt out!") - icon_state = "flashburnt" + update_icon() return FALSE else times_used++ + update_icon() return TRUE - else //can only use it 10 times a minute + else if(!charge_only) //can only use it 10 times a minute, unless it runs purely on charge. if(user) + update_icon() to_chat(user, "click") playsound(src.loc, 'sound/weapons/empty.ogg', 80, 1) return FALSE + else if(battery && battery.checked_use(charge_cost + (round(charge_cost / 4) * max(0, times_used - max_flashes)))) // Using over your maximum flashes starts taking more charge per added flash. + times_used++ + update_icon() + return TRUE //attack_as_weapon /obj/item/device/flash/attack(mob/living/M, mob/living/user, var/target_zone) @@ -101,6 +191,7 @@ H.eye_blurry = max(H.eye_blurry, flash_strength + 5) H.flash_eyes() H.adjustHalLoss(halloss_per_flash * (flash_strength / 5)) // Should take four flashes to stun. + H.apply_damage(flash_strength * H.species.flash_burn/5, BURN, BP_HEAD, 0, 0, "Photon burns") else flashfail = 1 @@ -205,6 +296,8 @@ desc = "When a problem arises, SCIENCE is the solution." icon_state = "sflash" origin_tech = list(TECH_MAGNET = 2, TECH_COMBAT = 1) + base_icon = "sflash" + can_repair = FALSE //attack_as_weapon /obj/item/device/flash/synthetic/attack(mob/living/M, mob/living/user, var/target_zone) @@ -212,11 +305,17 @@ if(!broken) broken = 1 to_chat(user, "The bulb has burnt out!") - icon_state = "flashburnt" + update_icon() /obj/item/device/flash/synthetic/attack_self(mob/living/carbon/user as mob, flag = 0, emp = 0) ..() if(!broken) broken = 1 to_chat(user, "The bulb has burnt out!") - icon_state = "flashburnt" + update_icon() + +/obj/item/device/flash/robot + name = "mounted flash" + can_break = FALSE + use_external_power = TRUE + charge_only = TRUE diff --git a/code/game/objects/items/devices/flash_vr.dm b/code/game/objects/items/devices/flash_vr.dm index dcc7b1a0f4..3524587ead 100644 --- a/code/game/objects/items/devices/flash_vr.dm +++ b/code/game/objects/items/devices/flash_vr.dm @@ -1,2 +1,2 @@ /obj/item/device/flash - halloss_per_flash = 22 \ No newline at end of file + can_break = FALSE // Can the flash break? diff --git a/code/game/objects/items/devices/flashlight.dm b/code/game/objects/items/devices/flashlight.dm index b25d86897f..83bdee0059 100644 --- a/code/game/objects/items/devices/flashlight.dm +++ b/code/game/objects/items/devices/flashlight.dm @@ -4,7 +4,6 @@ icon = 'icons/obj/lighting.dmi' icon_state = "flashlight" w_class = ITEMSIZE_SMALL - flags = CONDUCT slot_flags = SLOT_BELT matter = list(DEFAULT_WALL_MATERIAL = 50,"glass" = 20) action_button_name = "Toggle Flashlight" @@ -19,14 +18,13 @@ var/power_usage var/power_use = 1 -/obj/item/device/flashlight/initialize() +/obj/item/device/flashlight/Initialize() . = ..() update_icon() /obj/item/device/flashlight/New() if(power_use) - processing_objects |= src - + START_PROCESSING(SSobj, src) if(cell_type) cell = new cell_type(src) brightness_levels = list("low" = 0.25, "medium" = 0.5, "high" = 1) @@ -38,7 +36,7 @@ /obj/item/device/flashlight/Destroy() if(power_use) - processing_objects -= src + STOP_PROCESSING(SSobj, src) return ..() /obj/item/device/flashlight/get_cell() @@ -245,7 +243,6 @@ desc = "A pen-sized light, used by medical staff." icon_state = "penlight" item_state = "pen" - flags = CONDUCT slot_flags = SLOT_EARS brightness_on = 2 w_class = ITEMSIZE_TINY @@ -277,7 +274,6 @@ icon_state = "maglight" flashlight_colour = LIGHT_COLOR_FLUORESCENT_FLASHLIGHT force = 10 - flags = CONDUCT slot_flags = SLOT_BELT w_class = ITEMSIZE_SMALL attack_verb = list ("smacked", "thwacked", "thunked") @@ -289,7 +285,6 @@ desc = "A miniature lamp, that might be used by small robots." icon_state = "penlight" item_state = null - flags = CONDUCT brightness_on = 2 w_class = ITEMSIZE_TINY power_use = 0 @@ -302,7 +297,6 @@ force = 10 brightness_on = 5 w_class = ITEMSIZE_LARGE - flags = CONDUCT power_use = 0 on = 1 @@ -352,7 +346,7 @@ turn_off() if(!fuel) src.icon_state = "[initial(icon_state)]-empty" - processing_objects -= src + STOP_PROCESSING(SSobj, src) /obj/item/device/flashlight/flare/proc/turn_off() on = 0 @@ -375,14 +369,14 @@ user.visible_message("[user] activates the flare.", "You pull the cord on the flare, activating it!") src.force = on_damage src.damtype = "fire" - processing_objects += src + START_PROCESSING(SSobj, src) /obj/item/device/flashlight/flare/proc/ignite() //Used for flare launchers. on = !on update_icon() force = on_damage damtype = "fire" - processing_objects += src + START_PROCESSING(SSobj, src) return 1 //Glowsticks @@ -409,7 +403,7 @@ turn_off() if(!fuel) src.icon_state = "[initial(icon_state)]-empty" - processing_objects -= src + STOP_PROCESSING(SSobj, src) /obj/item/device/flashlight/glowstick/proc/turn_off() on = 0 @@ -426,7 +420,7 @@ . = ..() if(.) user.visible_message("[user] cracks and shakes the glowstick.", "You crack and shake the glowstick, turning it on!") - processing_objects += src + START_PROCESSING(SSobj, src) /obj/item/device/flashlight/glowstick/red name = "red glowstick" diff --git a/code/game/objects/items/devices/geiger.dm b/code/game/objects/items/devices/geiger.dm index dbac918609..76697ddba3 100644 --- a/code/game/objects/items/devices/geiger.dm +++ b/code/game/objects/items/devices/geiger.dm @@ -1,8 +1,3 @@ -#define RAD_LEVEL_LOW 0.01 // Around the level at which radiation starts to become harmful -#define RAD_LEVEL_MODERATE 10 -#define RAD_LEVEL_HIGH 25 -#define RAD_LEVEL_VERY_HIGH 50 - //Geiger counter //Rewritten version of TG's geiger counter //I opted to show exact radiation levels @@ -15,12 +10,16 @@ w_class = ITEMSIZE_SMALL var/scanning = 0 var/radiation_count = 0 + var/datum/looping_sound/geiger/soundloop -/obj/item/device/geiger/New() - processing_objects |= src +/obj/item/device/geiger/Initialize() + START_PROCESSING(SSobj, src) + soundloop = new(list(src), FALSE) + return ..() /obj/item/device/geiger/Destroy() - processing_objects -= src + STOP_PROCESSING(SSobj, src) + QDEL_NULL(soundloop) return ..() /obj/item/device/geiger/process() @@ -31,6 +30,7 @@ return radiation_count = radiation_repository.get_rads_at_turf(get_turf(src)) update_icon() + update_sound() /obj/item/device/geiger/examine(mob/user) ..(user) @@ -44,18 +44,24 @@ if(amount > radiation_count) radiation_count = amount - var/sound = "geiger" - if(amount < 5) - sound = "geiger_weak" - playsound(src, sound, between(10, 10 + (radiation_count * 4), 100), 0) - if(sound == "geiger_weak") // A weak geiger sound every two seconds sounds too infrequent. - spawn(1 SECOND) - playsound(src, sound, between(10, 10 + (radiation_count * 4), 100), 0) update_icon() + update_sound() + +/obj/item/device/geiger/proc/update_sound() + var/datum/looping_sound/geiger/loop = soundloop + if(!scanning) + loop.stop() + return + if(!radiation_count) + loop.stop() + return + loop.last_radiation = radiation_count + loop.start() /obj/item/device/geiger/attack_self(var/mob/user) scanning = !scanning update_icon() + update_sound() to_chat(user, "\icon[src] You switch [scanning ? "on" : "off"] \the [src].") /obj/item/device/geiger/update_icon() @@ -76,8 +82,3 @@ icon_state = "geiger_on_4" if(RAD_LEVEL_VERY_HIGH to INFINITY) icon_state = "geiger_on_5" - -#undef RAD_LEVEL_LOW -#undef RAD_LEVEL_MODERATE -#undef RAD_LEVEL_HIGH -#undef RAD_LEVEL_VERY_HIGH \ No newline at end of file diff --git a/code/game/objects/items/devices/gps.dm b/code/game/objects/items/devices/gps.dm index c62cb541ce..839dc7a2dc 100644 --- a/code/game/objects/items/devices/gps.dm +++ b/code/game/objects/items/devices/gps.dm @@ -17,7 +17,7 @@ var/list/GPS_list = list() var/hide_signal = FALSE // If true, signal is not visible to other GPS devices. var/can_hide_signal = FALSE // If it can toggle the above var. -/obj/item/device/gps/initialize() +/obj/item/device/gps/Initialize() . = ..() GPS_list += src name = "global positioning system ([gps_tag])" diff --git a/code/game/objects/items/devices/laserpointer.dm b/code/game/objects/items/devices/laserpointer.dm index 343a58ce1a..ee77a47de9 100644 --- a/code/game/objects/items/devices/laserpointer.dm +++ b/code/game/objects/items/devices/laserpointer.dm @@ -166,7 +166,7 @@ outmsg = "You missed the lens of [C] with [src]." //cats! - for(var/mob/living/simple_animal/cat/C in viewers(1,targloc)) + for(var/mob/living/simple_mob/animal/passive/cat/C in viewers(1,targloc)) if (!(C.stat || C.buckled)) if(prob(50) && !(C.client)) C.visible_message("[C] pounces on the light!", "You pounce on the light!") @@ -200,7 +200,7 @@ if(energy <= max_energy) if(!recharging) recharging = 1 - processing_objects.Add(src) + START_PROCESSING(SSobj, src) if(energy <= 0) to_chat(user, "You've overused the battery of [src], now it needs time to recharge!") recharge_locked = 1 diff --git a/code/game/objects/items/devices/lightreplacer.dm b/code/game/objects/items/devices/lightreplacer.dm index 8fd96981fc..7e2b054165 100644 --- a/code/game/objects/items/devices/lightreplacer.dm +++ b/code/game/objects/items/devices/lightreplacer.dm @@ -45,7 +45,6 @@ force = 8 icon = 'icons/obj/janitor.dmi' icon_state = "lightreplacer0" - flags = CONDUCT slot_flags = SLOT_BELT origin_tech = list(TECH_MAGNET = 3, TECH_MATERIAL = 2) diff --git a/code/game/objects/items/devices/megaphone.dm b/code/game/objects/items/devices/megaphone.dm index 9c9f1aba59..0a12b31df2 100644 --- a/code/game/objects/items/devices/megaphone.dm +++ b/code/game/objects/items/devices/megaphone.dm @@ -3,7 +3,6 @@ desc = "A device used to project your voice. Loudly." icon_state = "megaphone" w_class = ITEMSIZE_SMALL - flags = CONDUCT var/spamcheck = 0 var/emagged = 0 diff --git a/code/game/objects/items/devices/multitool.dm b/code/game/objects/items/devices/multitool.dm index e6385c751f..b0c1113ba8 100644 --- a/code/game/objects/items/devices/multitool.dm +++ b/code/game/objects/items/devices/multitool.dm @@ -8,7 +8,6 @@ name = "multitool" desc = "Used for pulsing wires to test which to cut. Not recommended by doctors." icon_state = "multitool" - flags = CONDUCT force = 5.0 w_class = ITEMSIZE_SMALL throwforce = 5.0 @@ -69,9 +68,24 @@ desc = "Optimised and stripped-down version of a regular multitool." toolspeed = 0.5 + + +/datum/category_item/catalogue/anomalous/precursor_a/alien_multitool + name = "Precursor Alpha Object - Pulse Tool" + desc = "This ancient object appears to be an electrical tool. \ + It has a simple mechanism at the handle, which will cause a pulse of \ + energy to be emitted from the head of the tool. This can be used on a \ + conductive object such as a wire, in order to send a pulse signal through it.\ +

\ + These qualities make this object somewhat similar in purpose to the common \ + multitool, and can probably be used for tasks such as direct interfacing with \ + an airlock, if one knows how." + value = CATALOGUER_REWARD_EASY + /obj/item/device/multitool/alien name = "alien multitool" desc = "An omni-technological interface." + catalogue_data = list(/datum/category_item/catalogue/anomalous/precursor_a/alien_multitool) icon = 'icons/obj/abductor.dmi' icon_state = "multitool" toolspeed = 0.1 diff --git a/code/game/objects/items/devices/powersink.dm b/code/game/objects/items/devices/powersink.dm index 6ea73e8c78..477f161e07 100644 --- a/code/game/objects/items/devices/powersink.dm +++ b/code/game/objects/items/devices/powersink.dm @@ -5,7 +5,6 @@ desc = "A nulling power sink which drains energy from electrical systems." icon_state = "powersink0" w_class = ITEMSIZE_LARGE - flags = CONDUCT throwforce = 5 throw_speed = 1 throw_range = 2 @@ -25,7 +24,7 @@ var/obj/structure/cable/attached // the attached cable /obj/item/device/powersink/Destroy() - processing_objects.Remove(src) + STOP_PROCESSING(SSobj, src) STOP_PROCESSING_POWER_OBJECT(src) ..() @@ -49,7 +48,7 @@ return else if (mode == 2) - processing_objects.Remove(src) // Now the power sink actually stops draining the station's power if you unhook it. --NeoFite + STOP_PROCESSING(SSobj, src) // Now the power sink actually stops draining the station's power if you unhook it. --NeoFite STOP_PROCESSING_POWER_OBJECT(src) anchored = 0 mode = 0 @@ -73,14 +72,15 @@ src.visible_message("[user] activates [src]!") mode = 2 icon_state = "powersink1" - processing_objects.Add(src) + START_PROCESSING(SSobj, src) + datum_flags &= ~DF_ISPROCESSING // Have to reset this flag so that PROCESSING_POWER_OBJECT can re-add it. It fails if the flag is already present. - Ater START_PROCESSING_POWER_OBJECT(src) if(2) //This switch option wasn't originally included. It exists now. --NeoFite src.visible_message("[user] deactivates [src]!") mode = 1 set_light(0) icon_state = "powersink0" - processing_objects.Remove(src) + STOP_PROCESSING(SSobj, src) STOP_PROCESSING_POWER_OBJECT(src) /obj/item/device/powersink/pwr_drain() diff --git a/code/game/objects/items/devices/radio/electropack.dm b/code/game/objects/items/devices/radio/electropack.dm index ddcb23a5aa..617b314600 100644 --- a/code/game/objects/items/devices/radio/electropack.dm +++ b/code/game/objects/items/devices/radio/electropack.dm @@ -8,7 +8,6 @@ ) item_state = "electropack" frequency = 1449 - flags = CONDUCT slot_flags = SLOT_BACK w_class = ITEMSIZE_HUGE diff --git a/code/game/objects/items/devices/radio/headset.dm b/code/game/objects/items/devices/radio/headset.dm index a67a2bef7b..51d7e0a4b6 100644 --- a/code/game/objects/items/devices/radio/headset.dm +++ b/code/game/objects/items/devices/radio/headset.dm @@ -92,7 +92,7 @@ syndie = 1 ks1type = /obj/item/device/encryptionkey/raider -/obj/item/device/radio/headset/raider/initialize() +/obj/item/device/radio/headset/raider/Initialize() . = ..() set_frequency(RAID_FREQ) diff --git a/code/game/objects/items/devices/radio/intercom.dm b/code/game/objects/items/devices/radio/intercom.dm index d462b670f9..6d823f217f 100644 --- a/code/game/objects/items/devices/radio/intercom.dm +++ b/code/game/objects/items/devices/radio/intercom.dm @@ -8,7 +8,7 @@ anchored = 1 w_class = ITEMSIZE_LARGE canhear_range = 2 - flags = CONDUCT | NOBLOODY + flags = NOBLOODY var/circuit = /obj/item/weapon/circuitboard/intercom var/number = 0 var/last_tick //used to delay the powercheck @@ -54,13 +54,13 @@ /obj/item/device/radio/intercom/omni name = "global announcer" -/obj/item/device/radio/intercom/omni/initialize() +/obj/item/device/radio/intercom/omni/Initialize() channels = radiochannels.Copy() return ..() /obj/item/device/radio/intercom/New() ..() - processing_objects += src + START_PROCESSING(SSobj, src) circuit = new circuit(src) /obj/item/device/radio/intercom/department/medbay/New() @@ -104,7 +104,7 @@ internal_channels[num2text(RAID_FREQ)] = list(access_syndicate) /obj/item/device/radio/intercom/Destroy() - processing_objects -= src + STOP_PROCESSING(SSobj, src) return ..() /obj/item/device/radio/intercom/attack_ai(mob/user as mob) diff --git a/code/game/objects/items/devices/radio/jammer.dm b/code/game/objects/items/devices/radio/jammer.dm index b129657d19..b59101cc66 100644 --- a/code/game/objects/items/devices/radio/jammer.dm +++ b/code/game/objects/items/devices/radio/jammer.dm @@ -15,7 +15,7 @@ var/global/list/active_radio_jammers = list() /obj/item/device/radio_jammer name = "subspace jammer" - desc = "Primarily for blocking subspace communications, preventing the use of headsets, PDAs, and communicators." + desc = "Primarily for blocking subspace communications, preventing the use of headsets, PDAs, and communicators. Also masks suit sensors." // Added suit sensor jamming icon = 'icons/obj/device.dmi' icon_state = "jammer0" var/active_state = "jammer1" @@ -44,7 +44,7 @@ var/global/list/active_radio_jammers = list() /obj/item/device/radio_jammer/proc/turn_off(mob/user) if(user) to_chat(user,"\The [src] deactivates.") - processing_objects.Remove(src) + STOP_PROCESSING(SSobj, src) active_radio_jammers -= src on = FALSE update_icon() @@ -52,7 +52,7 @@ var/global/list/active_radio_jammers = list() /obj/item/device/radio_jammer/proc/turn_on(mob/user) if(user) to_chat(user,"\The [src] is now active.") - processing_objects.Add(src) + START_PROCESSING(SSobj, src) active_radio_jammers += src on = TRUE update_icon() diff --git a/code/game/objects/items/devices/radio/radio.dm b/code/game/objects/items/devices/radio/radio.dm index 9e03e7ff63..579e65787b 100644 --- a/code/game/objects/items/devices/radio/radio.dm +++ b/code/game/objects/items/devices/radio/radio.dm @@ -45,7 +45,6 @@ var/global/list/default_medbay_channels = list( var/adhoc_fallback = FALSE //Falls back to 'radio' mode if subspace not available var/syndie = 0//Holder to see if it's a syndicate encrypted radio var/centComm = 0//Holder to see if it's a CentCom encrypted radio - flags = CONDUCT slot_flags = SLOT_BELT throw_speed = 2 throw_range = 9 @@ -81,7 +80,7 @@ var/global/list/default_medbay_channels = list( return ..() -/obj/item/device/radio/initialize() +/obj/item/device/radio/Initialize() . = ..() if(frequency < RADIO_LOW_FREQ || frequency > RADIO_HIGH_FREQ) frequency = sanitize_frequency(frequency, RADIO_LOW_FREQ, RADIO_HIGH_FREQ) diff --git a/code/game/objects/items/devices/scanners.dm b/code/game/objects/items/devices/scanners.dm index feed24510b..b155a1fb54 100644 --- a/code/game/objects/items/devices/scanners.dm +++ b/code/game/objects/items/devices/scanners.dm @@ -15,7 +15,6 @@ HALOGEN COUNTER - Radcount on mobs desc = "A hand-held body scanner able to distinguish vital signs of the subject." icon_state = "health" item_state = "healthanalyzer" - flags = CONDUCT slot_flags = SLOT_BELT throwforce = 3 w_class = ITEMSIZE_SMALL @@ -299,7 +298,6 @@ HALOGEN COUNTER - Radcount on mobs icon_state = "atmos" item_state = "analyzer" w_class = ITEMSIZE_SMALL - flags = CONDUCT slot_flags = SLOT_BELT throwforce = 5 throw_speed = 4 @@ -337,7 +335,7 @@ HALOGEN COUNTER - Radcount on mobs desc = "A hand-held mass spectrometer which identifies trace chemicals in a blood sample." icon_state = "spectrometer" w_class = ITEMSIZE_SMALL - flags = CONDUCT | OPENCONTAINER + flags = OPENCONTAINER slot_flags = SLOT_BELT throwforce = 5 throw_speed = 4 @@ -399,7 +397,6 @@ HALOGEN COUNTER - Radcount on mobs icon_state = "spectrometer" item_state = "analyzer" w_class = ITEMSIZE_SMALL - flags = CONDUCT slot_flags = SLOT_BELT throwforce = 5 throw_speed = 4 @@ -410,25 +407,28 @@ HALOGEN COUNTER - Radcount on mobs var/details = 0 var/recent_fail = 0 -/obj/item/device/reagent_scanner/afterattack(obj/O, mob/user as mob, proximity) +/obj/item/device/reagent_scanner/afterattack(obj/O, mob/living/user, proximity) if(!proximity || user.stat || !istype(O)) return - if (!(istype(user, /mob/living/carbon/human) || ticker) && ticker.mode.name != "monkey") - to_chat(user, "You don't have the dexterity to do this!") + if(!istype(user)) return if(!isnull(O.reagents)) + if(!(O.flags & OPENCONTAINER)) // The idea is that the scanner has to touch the reagents somehow. This is done to prevent cheesing unidentified autoinjectors. + to_chat(user, span("warning", "\The [O] is sealed, and cannot be scanned by \the [src] until unsealed.")) + return + var/dat = "" if(O.reagents.reagent_list.len > 0) var/one_percent = O.reagents.total_volume / 100 for (var/datum/reagent/R in O.reagents.reagent_list) - dat += "\n \t [R][details ? ": [R.volume / one_percent]%" : ""]" + dat += "\n \t " + span("notice", "[R][details ? ": [R.volume / one_percent]%" : ""]") if(dat) - to_chat(user, "Chemicals found: [dat]") + to_chat(user, span("notice", "Chemicals found: [dat]")) else - to_chat(user, "No active chemical agents found in [O].") + to_chat(user, span("notice", "No active chemical agents found in [O].")) else - to_chat(user, "No significant chemical agents found in [O].") + to_chat(user, span("notice", "No significant chemical agents found in [O].")) return @@ -444,22 +444,21 @@ HALOGEN COUNTER - Radcount on mobs item_state = "xenobio" origin_tech = list(TECH_BIO = 1) w_class = ITEMSIZE_SMALL - flags = CONDUCT throwforce = 0 throw_speed = 3 throw_range = 7 matter = list(DEFAULT_WALL_MATERIAL = 30,"glass" = 20) /obj/item/device/slime_scanner/attack(mob/living/M as mob, mob/living/user as mob) - if(!isslime(M)) - to_chat(user, "This device can only scan slimes!") + if(!istype(M, /mob/living/simple_mob/slime/xenobio)) + to_chat(user, "This device can only scan lab-grown slimes!") return - var/mob/living/simple_animal/slime/S = M + var/mob/living/simple_mob/slime/xenobio/S = M user.show_message("Slime scan results:
[S.slime_color] [S.is_adult ? "adult" : "baby"] slime
Health: [S.health]
Mutation Probability: [S.mutation_chance]") var/list/mutations = list() for(var/potential_color in S.slime_mutation) - var/mob/living/simple_animal/slime/slime = potential_color + var/mob/living/simple_mob/slime/xenobio/slime = potential_color mutations.Add(initial(slime.slime_color)) user.show_message("Potental to mutate into [english_list(mutations)] colors.
Extract potential: [S.cores]
Nutrition: [S.nutrition]/[S.get_max_nutrition()]") @@ -469,12 +468,14 @@ HALOGEN COUNTER - Radcount on mobs user.show_message("Warning: Subject is hungry.") user.show_message("Electric change strength: [S.power_charge]") - if(S.resentment) - user.show_message("Warning: Subject is harboring resentment.") - if(S.docile) + if(S.has_AI()) + var/datum/ai_holder/simple_mob/xenobio_slime/AI = S.ai_holder + if(AI.resentment) + user.show_message("Warning: Subject is harboring resentment.") + if(AI.rabid) + user.show_message("Subject is enraged and extremely dangerous!") + if(S.harmless) user.show_message("Subject has been pacified.") - if(S.rabid) - user.show_message("Subject is enraged and extremely dangerous!") if(S.unity) user.show_message("Subject is friendly to other slime colors.") @@ -485,7 +486,6 @@ HALOGEN COUNTER - Radcount on mobs icon_state = "eftpos" desc = "A hand-held halogen counter, used to detect the level of irradiation of living beings." w_class = ITEMSIZE_SMALL - flags = CONDUCT origin_tech = list(TECH_MAGNET = 1, TECH_BIO = 2) throwforce = 0 throw_speed = 3 diff --git a/code/game/objects/items/devices/scanners_vr.dm b/code/game/objects/items/devices/scanners_vr.dm index 266fc9c063..72a0d9e7b1 100644 --- a/code/game/objects/items/devices/scanners_vr.dm +++ b/code/game/objects/items/devices/scanners_vr.dm @@ -7,7 +7,6 @@ var/global/mob/living/carbon/human/dummy/mannequin/sleevemate_mob icon = 'icons/obj/device_alt.dmi' icon_state = "sleevemate" item_state = "healthanalyzer" - flags = CONDUCT slot_flags = SLOT_BELT throwforce = 3 w_class = ITEMSIZE_SMALL diff --git a/code/game/objects/items/devices/spy_bug.dm b/code/game/objects/items/devices/spy_bug.dm index ce145fed9e..e3392f33fe 100644 --- a/code/game/objects/items/devices/spy_bug.dm +++ b/code/game/objects/items/devices/spy_bug.dm @@ -4,7 +4,6 @@ icon = 'icons/obj/grenade.dmi' icon_state = "camgrenade" item_state = "empgrenade" - flags = CONDUCT w_class = ITEMSIZE_SMALL force = 0 throwforce = 5.0 @@ -50,7 +49,6 @@ icon = 'icons/obj/grenade.dmi' icon_state = "camgrenadebroken" item_state = "empgrenade" - flags = CONDUCT force = 5.0 w_class = ITEMSIZE_SMALL throwforce = 5.0 @@ -68,7 +66,6 @@ w_class = ITEMSIZE_TINY slot_flags = SLOT_EARS origin_tech = list(TECH_ENGINEERING = 1, TECH_ILLEGAL = 3) //crush it and you lose the data - flags = CONDUCT force = 0 throwforce = 5.0 throw_range = 15 diff --git a/code/game/objects/items/devices/suit_cooling.dm b/code/game/objects/items/devices/suit_cooling.dm index 6efc045785..e11cce4762 100644 --- a/code/game/objects/items/devices/suit_cooling.dm +++ b/code/game/objects/items/devices/suit_cooling.dm @@ -7,7 +7,6 @@ slot_flags = SLOT_BACK //copied from tank.dm - flags = CONDUCT force = 5.0 throwforce = 10.0 throw_speed = 1 @@ -30,7 +29,7 @@ toggle(usr) /obj/item/device/suit_cooling_unit/New() - processing_objects |= src + START_PROCESSING(SSobj, src) cell = new/obj/item/weapon/cell/high() //comes not with the crappy default power cell - because this is dedicated EVA equipment cell.loc = src @@ -46,7 +45,9 @@ var/mob/living/carbon/human/H = loc - var/efficiency = 1 - H.get_pressure_weakness() // You need to have a good seal for effective cooling + var/turf/T = get_turf(src) + var/datum/gas_mixture/environment = T.return_air() + var/efficiency = 1 - H.get_pressure_weakness(environment.return_pressure()) // You need to have a good seal for effective cooling var/temp_adj = 0 // How much the unit cools you. Adjusted later on. var/env_temp = get_environment_temperature() // This won't save you from a fire var/thermal_protection = H.get_heat_protection(env_temp) // ... unless you've got a good suit. diff --git a/code/game/objects/items/devices/t_scanner.dm b/code/game/objects/items/devices/t_scanner.dm index 5610828bfe..0709429ac1 100644 --- a/code/game/objects/items/devices/t_scanner.dm +++ b/code/game/objects/items/devices/t_scanner.dm @@ -28,10 +28,10 @@ /obj/item/device/t_scanner/proc/set_active(var/active) on = active if(on) - processing_objects.Add(src) + START_PROCESSING(SSobj, src) flicker = 0 else - processing_objects.Remove(src) + STOP_PROCESSING(SSobj, src) set_user_client(null) update_icon() diff --git a/code/game/objects/items/devices/taperecorder.dm b/code/game/objects/items/devices/taperecorder.dm index 841bcc18ed..c2320dcf44 100644 --- a/code/game/objects/items/devices/taperecorder.dm +++ b/code/game/objects/items/devices/taperecorder.dm @@ -13,7 +13,6 @@ var/playsleepseconds = 0.0 var/obj/item/device/tape/mytape = /obj/item/device/tape/random var/canprint = 1 - flags = CONDUCT slot_flags = SLOT_BELT throwforce = 2 throw_speed = 4 diff --git a/code/game/objects/items/devices/traitordevices.dm b/code/game/objects/items/devices/traitordevices.dm index 7820d0c4ea..655e6efe31 100644 --- a/code/game/objects/items/devices/traitordevices.dm +++ b/code/game/objects/items/devices/traitordevices.dm @@ -22,7 +22,6 @@ effective or pretty fucking useless. w_class = ITEMSIZE_TINY throw_speed = 4 throw_range = 10 - flags = CONDUCT item_state = "electronic" origin_tech = list(TECH_MAGNET = 3, TECH_COMBAT = 3, TECH_ILLEGAL = 3) diff --git a/code/game/objects/items/devices/tvcamera.dm b/code/game/objects/items/devices/tvcamera.dm index be2b4c18e7..3fdaa5e79f 100644 --- a/code/game/objects/items/devices/tvcamera.dm +++ b/code/game/objects/items/devices/tvcamera.dm @@ -26,7 +26,7 @@ to_chat(usr, "Video feed is [camera.status ? "on" : "off"]") to_chat(usr, "Audio feed is [radio.broadcasting ? "on" : "off"]") -/obj/item/device/tvcamera/initialize() +/obj/item/device/tvcamera/Initialize() . = ..() camera = new(src) camera.c_tag = channel diff --git a/code/game/objects/items/devices/uplink.dm b/code/game/objects/items/devices/uplink.dm index 2778f46b03..0bdb5a6b72 100644 --- a/code/game/objects/items/devices/uplink.dm +++ b/code/game/objects/items/devices/uplink.dm @@ -28,11 +28,11 @@ uses = owner.tcrystals else uses = telecrystals - processing_objects += src + START_PROCESSING(SSobj, src) /obj/item/device/uplink/Destroy() world_uplinks -= src - processing_objects -= src + STOP_PROCESSING(SSobj, src) return ..() /obj/item/device/uplink/get_item_cost(var/item_type, var/item_cost) diff --git a/code/game/objects/items/devices/whistle.dm b/code/game/objects/items/devices/whistle.dm index 7a7828ef95..52a830f811 100644 --- a/code/game/objects/items/devices/whistle.dm +++ b/code/game/objects/items/devices/whistle.dm @@ -4,7 +4,6 @@ icon_state = "voice0" item_state = "flashbang" //looks exactly like a flash (and nothing like a flashbang) w_class = ITEMSIZE_TINY - flags = CONDUCT slot_flags = SLOT_EARS var/use_message = "Halt! Security!" diff --git a/code/game/objects/items/glassjar.dm b/code/game/objects/items/glassjar.dm index c04b9b17dd..2e73e89e67 100644 --- a/code/game/objects/items/glassjar.dm +++ b/code/game/objects/items/glassjar.dm @@ -6,7 +6,7 @@ w_class = ITEMSIZE_SMALL matter = list("glass" = 200) flags = NOBLUDGEON - var/list/accept_mobs = list(/mob/living/simple_animal/lizard, /mob/living/simple_animal/mouse) + var/list/accept_mobs = list(/mob/living/simple_mob/animal/passive/lizard, /mob/living/simple_mob/animal/passive/mouse) var/contains = 0 // 0 = nothing, 1 = money, 2 = animal, 3 = spiderling /obj/item/glass_jar/New() @@ -34,7 +34,7 @@ var/obj/effect/spider/spiderling/S = A user.visible_message("[user] scoops [S] into \the [src].", "You scoop [S] into \the [src].") S.loc = src - processing_objects.Remove(S) // No growing inside jars + STOP_PROCESSING(SSobj, S) // No growing inside jars contains = 3 update_icon() return @@ -59,7 +59,7 @@ for(var/obj/effect/spider/spiderling/S in src) S.loc = user.loc user.visible_message("[user] releases [S] from \the [src].", "You release [S] from \the [src].") - processing_objects.Add(S) // They can grow after being let out though + START_PROCESSING(SSobj, S) // They can grow after being let out though contains = 0 update_icon() return diff --git a/code/game/objects/items/godfigures.dm b/code/game/objects/items/godfigures.dm new file mode 100644 index 0000000000..b1b1e7a4aa --- /dev/null +++ b/code/game/objects/items/godfigures.dm @@ -0,0 +1,131 @@ +/obj/item/godfig + name = "religious icon" + desc = "A painted holy figure of a plain looking human man in a robe." + description_info = "Right click to select a new sprite to fit your needs." + icon = 'icons/obj/chaplain.dmi' + icon_state = "mrobe" + force = 10 + throw_speed = 1 + throw_range = 4 + throwforce = 10 + w_class = ITEMSIZE_SMALL + + +/obj/item/godfig/verb/resprite_figure() + set name = "Customize Figure" + set category = "Object" + set desc = "Click to choose an appearance for your icon." + + var/mob/M = usr + var/list/options = list() + options["Painted - Robed Human Female"] = "frobe" + options["Painted - Robed Human Male (Pale)"] = "mrobe" + options["Painted - Robed Human Male (Dark)"] = "mrobedark" + options["Painted - Bearded Human"] = "mpose" + options["Painted - Human Male Warrior"] = "mwarrior" + options["Painted - Human Female Warrior"] = "fwarrior" + options["Painted - Human Male Hammer"] = "hammer" + options["Painted - Horned God"] = "horned" + options["Obsidian - Human Male"] = "onyxking" + options["Obsidian - Human Female"] = "onyxqueen" + options["Obsidian - Animal Headed Male"] = "onyxanimalm" + options["Obsidian - Animal Headed Female"] = "onyxanimalf" + options["Obsidian - Bird Headed Figure"] = "onyxbird" + options["Stone - Seated Figure"] = "stoneseat" + options["Stone - Head"] = "stonehead" + options["Stone - Dwarf"] = "stonedwarf" + options["Stone - Animal"] = "stoneanimal" + options["Stone - Fertility"] = "stonevenus" + options["Stone - Snake"] = "stonesnake" + options["Bronze - Elephantine"] = "elephant" + options["Bronze - Many-armed"] = "bronzearms" + options["Robot"] = "robot" + options["Singularity"] = "singularity" + options["Gemstone Eye"] = "gemeye" + options["Golden Skull"] = "skull" + options["Goatman"] = "devil" + options["Sun Gem"] = "sun" + options["Moon Gem"] = "moon" + options["Tajaran Figure"] = "catrobe" + + var/choice = input(M,"Choose your icon!","Customize Figure") in options + if(src && choice && !M.stat && in_range(M,src)) + icon_state = options[choice] + if(options[choice] == "frobe") + desc = "A painted holy figure of a plain looking human woman in a robe." + else if(options[choice] == "mrobe") + desc = "A painted holy figure of a plain looking human man in a robe." + else if(options[choice] == "mrobedark") + desc = "A painted holy figure of a plain looking human man in a robe.." + else if(options[choice] == "mpose") + desc = "A painted holy figure of a rather grandiose bearded human." + else if(options[choice] == "mwarrior") + desc = "A painted holy figure of a powerful human male warrior." + else if(options[choice] == "fwarrior") + desc = "A painted holy figure of a powerful human female warrior." + else if(options[choice] == "hammer") + desc = "A painted holy figure of a human holding a hammer aloft." + else if(options[choice] == "horned") + desc = "A painted holy figure of a human man crowned with antlers." + else if(options[choice] == "onyxking") + desc = "An obsidian holy figure of a human man wearing a grand hat." + else if(options[choice] == "onyxqueen") + desc = "An obsidian holy figure of a human woman wearing a grand hat." + else if(options[choice] == "onyxanimalm") + desc = "An obsidian holy figure of a human man with the head of an animal." + else if(options[choice] == "onyxanimalf") + desc = "An obsidian holy figure of a human woman with the head of an animal." + else if(options[choice] == "onyxbird") + desc = "An obsidian holy figure of a human with the head of a bird." + else if(options[choice] == "stoneseat") + desc = "A stone holy figure of a cross-legged human." + else if(options[choice] == "stonehead") + desc = "A stone holy figure of an imposing crowned head." + else if(options[choice] == "stonedwarf") + desc = "A stone holy figure of a somewhat ugly dwarf." + else if(options[choice] == "stoneanimal") + desc = "A stone holy figure of a four-legged animal of some sort." + else if(options[choice] == "stonevenus") + desc = "A stone holy figure of a lovingly rendered pregnant woman." + else if(options[choice] == "stonesnake") + desc = "A stone holy figure of a coiled snake ready to strike." + else if(options[choice] == "elephant") + desc = "A bronze holy figure of a dancing human with the head of an elephant." + else if(options[choice] == "bronzearms") + desc = "A bronze holy figure of a human.with four arms." + else if(options[choice] == "robot") + desc = "A titanium holy figure of a synthetic humanoid." + else if(options[choice] == "singularity") + desc = "A holy figure of some kind of energy formation." + else if(options[choice] == "gemeye") + desc = "A gemstone holy figure of a sparkling eye." + else if(options[choice] == "skull") + desc = "A golden holy figure of a humanoid skull." + else if(options[choice] == "devil") + desc = "A painted holy figure of a seated humanoid goat with wings." + else if(options[choice] == "sun") + desc = "A holy figure of a star." + else if(options[choice] == "moon") + desc = "A holy figure of a small planetoid." + else if(options[choice] == "catrobe") + desc = "A painted holy figure of a plain looking Tajaran in a robe." + + M << "The religious icon is now a [choice]. All hail!" + return 1 + + + +/obj/item/godfig/verb/rename_fig() + set name = "Name Figure" + set category = "Object" + set desc = "Rename your icon." + + var/mob/M = usr + if(!M.mind) return 0 + + var/input = sanitizeSafe(input("What do you want to name the icon?", ,""), MAX_NAME_LEN) + + if(src && input && !M.stat && in_range(M,src)) + name = "icon of " + input + M << "You name the figure. Glory to [input]!." + return 1 \ No newline at end of file diff --git a/code/game/objects/items/latexballoon.dm b/code/game/objects/items/latexballoon.dm index 707a38a284..559bfbec0d 100644 --- a/code/game/objects/items/latexballoon.dm +++ b/code/game/objects/items/latexballoon.dm @@ -25,7 +25,7 @@ /obj/item/latexballon/proc/burst() if (!air_contents) return - playsound(src, 'sound/weapons/Gunshot.ogg', 100, 1) + playsound(src, 'sound/weapons/Gunshot_old.ogg', 100, 1) icon_state = "latexballon_bursted" item_state = "lgloves" loc.assume_air(air_contents) diff --git a/code/game/objects/items/poi_items.dm b/code/game/objects/items/poi_items.dm index af1b6c9c7a..6fd6d7debd 100644 --- a/code/game/objects/items/poi_items.dm +++ b/code/game/objects/items/poi_items.dm @@ -9,14 +9,14 @@ desc = "The top of this twisted chunk of metal is faintly stamped with a five pointed star. 'Property of US Army, Pascal B - 1957'." /obj/item/poi/pascalb/New() - processing_objects += src + START_PROCESSING(SSobj, src) return ..() /obj/item/poi/pascalb/process() radiation_repository.radiate(src, 5) /obj/item/poi/pascalb/Destroy() - processing_objects -= src + STOP_PROCESSING(SSobj, src) return ..() /obj/structure/closet/crate/oldreactor @@ -37,24 +37,13 @@ desc = "This broken hunk of machinery looks extremely dangerous." /obj/item/poi/brokenoldreactor/New() - processing_objects += src + START_PROCESSING(SSobj, src) return ..() /obj/item/poi/brokenoldreactor/process() radiation_repository.radiate(src, 25) /obj/item/poi/brokenoldreactor/Destroy() - processing_objects -= src + STOP_PROCESSING(SSobj, src) return ..() - -//Crashed Cargo Shuttle PoI - -/obj/structure/largecrate/animal/crashedshuttle - name = "SCP" - -/obj/structure/largecrate/animal/crashedshuttle/initialize() - starts_with = list(pick(/mob/living/simple_animal/hostile/statue, /obj/item/cursed_marble, /obj/item/weapon/deadringer)) // Starts_with has to be a list - name = pick("Spicy Crust Pizzeria", "Soap and Care Products", "Sally's Computer Parts", "Steve's Chocolate Pastries", "Smith & Christian's Plastics","Standard Containers & Packaging Co.", "Sanitary Chemical Purgation (LTD)") - name += " delivery crate" - return ..() diff --git a/code/game/objects/items/robot/robot_parts.dm b/code/game/objects/items/robot/robot_parts.dm index 2fa9ea63c7..554663727f 100644 --- a/code/game/objects/items/robot/robot_parts.dm +++ b/code/game/objects/items/robot/robot_parts.dm @@ -3,7 +3,6 @@ icon = 'icons/obj/robot_parts.dmi' item_state = "buildpipe" icon_state = "blank" - flags = CONDUCT slot_flags = SLOT_BELT var/list/part = null // Order of args is important for installing robolimbs. var/sabotaged = 0 //Emagging limbs can have repercussions when installed as prosthetics. @@ -169,28 +168,29 @@ if(!istype(loc,/turf)) to_chat(user, "You can't put \the [W] in, the frame has to be standing on the ground to be perfectly precise.") return - if(!M.brainmob) - to_chat(user, "Sticking an empty [W] into the frame would sort of defeat the purpose.") - return - if(!M.brainmob.key) - var/ghost_can_reenter = 0 - if(M.brainmob.mind) - for(var/mob/observer/dead/G in player_list) - if(G.can_reenter_corpse && G.mind == M.brainmob.mind) - ghost_can_reenter = 1 //May come in use again at another point. - to_chat(user, "\The [W] is completely unresponsive; though it may be able to auto-resuscitate.") //Jamming a ghosted brain into a borg is likely detrimental, and may result in some problems. - return - if(!ghost_can_reenter) - to_chat(user, "\The [W] is completely unresponsive; there's no point.") + if(!istype(W, /obj/item/device/mmi/inert)) + if(!M.brainmob) + to_chat(user, "Sticking an empty [W] into the frame would sort of defeat the purpose.") + return + if(!M.brainmob.key) + var/ghost_can_reenter = 0 + if(M.brainmob.mind) + for(var/mob/observer/dead/G in player_list) + if(G.can_reenter_corpse && G.mind == M.brainmob.mind) + ghost_can_reenter = 1 //May come in use again at another point. + to_chat(user, "\The [W] is completely unresponsive; though it may be able to auto-resuscitate.") //Jamming a ghosted brain into a borg is likely detrimental, and may result in some problems. + return + if(!ghost_can_reenter) + to_chat(user, "\The [W] is completely unresponsive; there's no point.") + return + + if(M.brainmob.stat == DEAD) + to_chat(user, "Sticking a dead [W] into the frame would sort of defeat the purpose.") return - if(M.brainmob.stat == DEAD) - to_chat(user, "Sticking a dead [W] into the frame would sort of defeat the purpose.") - return - - if(jobban_isbanned(M.brainmob, "Cyborg")) - to_chat(user, "This [W] does not seem to fit.") - return + if(jobban_isbanned(M.brainmob, "Cyborg")) + to_chat(user, "This [W] does not seem to fit.") + return var/mob/living/silicon/robot/O = new /mob/living/silicon/robot(get_turf(loc), unfinished = 1) if(!O) return @@ -198,20 +198,18 @@ user.drop_item() O.mmi = W + O.post_mmi_setup() O.invisibility = 0 O.custom_name = created_name O.updatename("Default") - M.brainmob.mind.transfer_to(O) - - if(O.mind && O.mind.special_role) - O.mind.store_memory("In case you look at this after being borged, the objectives are only here until I find a way to make them not show up for you, as I can't simply delete them without screwing up round-end reporting. --NeoFite") - + if(M.brainmob) + M.brainmob.mind.transfer_to(O) + if(O.mind && O.mind.special_role) + O.mind.store_memory("In case you look at this after being borged, the objectives are only here until I find a way to make them not show up for you, as I can't simply delete them without screwing up round-end reporting. --NeoFite") + for(var/datum/language/L in M.brainmob.languages) + O.add_language(L.name) O.job = "Cyborg" - - for(var/datum/language/L in M.brainmob.languages) - O.add_language(L.name) - O.cell = chest.cell O.cell.loc = O W.loc = O//Should fix cybros run time erroring when blown up. It got deleted before, along with the frame. @@ -275,13 +273,6 @@ add_flashes(W,user) else add_flashes(W,user) - else if(istype(W, /obj/item/weapon/stock_parts/manipulator)) - to_chat(user, "You install some manipulators and modify the head, creating a functional spider-bot!") - new /mob/living/simple_animal/spiderbot(get_turf(loc)) - user.drop_item() - qdel(W) - qdel(src) - return return /obj/item/robot_parts/head/proc/add_flashes(obj/item/W as obj, mob/user as mob) //Made into a seperate proc to avoid copypasta diff --git a/code/game/objects/items/robot/robot_upgrades.dm b/code/game/objects/items/robot/robot_upgrades.dm index 1211aa6fba..fe1685ec70 100644 --- a/code/game/objects/items/robot/robot_upgrades.dm +++ b/code/game/objects/items/robot/robot_upgrades.dm @@ -25,18 +25,9 @@ require_module = 1 /obj/item/borg/upgrade/reset/action(var/mob/living/silicon/robot/R) - if(..()) return 0 - R.transform_with_anim() //VOREStation edit: sprite animation - R.uneq_all() - R.modtype = initial(R.modtype) - R.hands.icon_state = initial(R.hands.icon_state) - - R.notify_ai(ROBOT_NOTIFICATION_MODULE_RESET, R.module.name) - R.module.Reset(R) - qdel(R.module) - R.module = null - R.updatename("Default") - + if(..()) + return 0 + R.module_reset() return 1 /obj/item/borg/upgrade/rename @@ -218,5 +209,6 @@ R.add_language(LANGUAGE_SCHECHI, 1) R.add_language(LANGUAGE_ROOTLOCAL, 1) R.add_language(LANGUAGE_TERMINUS, 1) + R.add_language(LANGUAGE_ZADDAT, 1) return 1 diff --git a/code/game/objects/items/stacks/marker_beacons.dm b/code/game/objects/items/stacks/marker_beacons.dm index f252ecae06..93462c640e 100644 --- a/code/game/objects/items/stacks/marker_beacons.dm +++ b/code/game/objects/items/stacks/marker_beacons.dm @@ -37,7 +37,7 @@ var/list/marker_beacon_colors = list( /obj/item/stack/marker_beacon/hundred amount = 100 -/obj/item/stack/marker_beacon/initialize() +/obj/item/stack/marker_beacon/Initialize() . = ..() update_icon() diff --git a/code/game/objects/items/stacks/rods.dm b/code/game/objects/items/stacks/rods.dm index b2477ae9ff..fb09c03ff8 100644 --- a/code/game/objects/items/stacks/rods.dm +++ b/code/game/objects/items/stacks/rods.dm @@ -3,7 +3,6 @@ desc = "Some rods. Can be used for building, or something." singular_name = "metal rod" icon_state = "rods" - flags = CONDUCT w_class = ITEMSIZE_NORMAL force = 9.0 throwforce = 15.0 diff --git a/code/game/objects/items/stacks/sheets/glass.dm b/code/game/objects/items/stacks/sheets/glass.dm index 8d82ffc8d1..53dc72faaa 100644 --- a/code/game/objects/items/stacks/sheets/glass.dm +++ b/code/game/objects/items/stacks/sheets/glass.dm @@ -14,9 +14,7 @@ name = "glass" singular_name = "glass sheet" icon_state = "sheet-glass" - var/created_window = /obj/structure/window/basic var/is_reinforced = 0 - var/list/construction_options = list("One Direction", "Full Window") default_type = "glass" /obj/item/stack/material/glass/attack_self(mob/user as mob) @@ -52,75 +50,7 @@ if (!G && replace) user.put_in_hands(RG) -/obj/item/stack/material/glass/proc/construct_window(mob/user as mob) - if(!user || !src) return 0 - if(!istype(user.loc,/turf)) return 0 - if(!user.IsAdvancedToolUser()) - return 0 - var/title = "Sheet-[name]" - title += " ([src.get_amount()] sheet\s left)" - switch(input(title, "What would you like to construct?") as null|anything in construction_options) - if("One Direction") - if(!src) return 1 - if(src.loc != user) return 1 - var/list/directions = new/list(cardinal) - var/i = 0 - for (var/obj/structure/window/win in user.loc) - i++ - if(i >= 4) - user << "There are too many windows in this location." - return 1 - directions-=win.dir - if(!(win.dir in cardinal)) - user << "Can't let you do that." - return 1 - - //Determine the direction. It will first check in the direction the person making the window is facing, if it finds an already made window it will try looking at the next cardinal direction, etc. - var/dir_to_set = 2 - for(var/direction in list( user.dir, turn(user.dir,90), turn(user.dir,180), turn(user.dir,270) )) - var/found = 0 - for(var/obj/structure/window/WT in user.loc) - if(WT.dir == direction) - found = 1 - if(!found) - dir_to_set = direction - break - new created_window( user.loc, dir_to_set, 1 ) - src.use(1) - if("Full Window") - if(!src) return 1 - if(src.loc != user) return 1 - if(src.get_amount() < 4) - user << "You need more glass to do that." - return 1 - if(locate(/obj/structure/window) in user.loc) - user << "There is a window in the way." - return 1 - new created_window( user.loc, SOUTHWEST, 1 ) - src.use(4) - if("Windoor") - if(!is_reinforced) return 1 - - - if(!src || src.loc != user) return 1 - - if(isturf(user.loc) && locate(/obj/structure/windoor_assembly/, user.loc)) - user << "There is already a windoor assembly in that location." - return 1 - - if(isturf(user.loc) && locate(/obj/machinery/door/window/, user.loc)) - user << "There is already a windoor in that location." - return 1 - - if(src.get_amount() < 5) - user << "You need more glass to do that." - return 1 - - new /obj/structure/windoor_assembly(user.loc, user.dir, 1) - src.use(5) - - return 0 /* @@ -131,9 +61,7 @@ singular_name = "reinforced glass sheet" icon_state = "sheet-rglass" default_type = "reinforced glass" - created_window = /obj/structure/window/reinforced is_reinforced = 1 - construction_options = list("One Direction", "Full Window", "Windoor") /* * Phoron Glass sheets @@ -142,7 +70,6 @@ name = "phoron glass" singular_name = "phoron glass sheet" icon_state = "sheet-phoronglass" - created_window = /obj/structure/window/phoronbasic default_type = "phoron glass" /obj/item/stack/material/glass/phoronglass/attackby(obj/item/W, mob/user) @@ -170,5 +97,4 @@ singular_name = "reinforced phoron glass sheet" icon_state = "sheet-phoronrglass" default_type = "reinforced phoron glass" - created_window = /obj/structure/window/phoronreinforced is_reinforced = 1 diff --git a/code/game/objects/items/stacks/tiles/tile_types.dm b/code/game/objects/items/stacks/tiles/tile_types.dm index 17f4121a76..93c70930d1 100644 --- a/code/game/objects/items/stacks/tiles/tile_types.dm +++ b/code/game/objects/items/stacks/tiles/tile_types.dm @@ -113,7 +113,6 @@ throwforce = 15.0 throw_speed = 5 throw_range = 20 - flags = CONDUCT no_variants = FALSE /obj/item/stack/tile/floor/red diff --git a/code/game/objects/items/toys.dm b/code/game/objects/items/toys.dm index 0f9f4bff3c..89182806db 100644 --- a/code/game/objects/items/toys.dm +++ b/code/game/objects/items/toys.dm @@ -295,7 +295,6 @@ slot_l_hand_str = 'icons/mob/items/lefthand_material.dmi', slot_r_hand_str = 'icons/mob/items/righthand_material.dmi', ) - flags = CONDUCT slot_flags = SLOT_BELT | SLOT_BACK force = 5 throwforce = 5 diff --git a/code/game/objects/items/trash_vr.dm b/code/game/objects/items/trash_vr.dm index 942b571aa5..a738179c7f 100644 --- a/code/game/objects/items/trash_vr.dm +++ b/code/game/objects/items/trash_vr.dm @@ -24,4 +24,9 @@ forceMove(R.vore_selected) R.visible_message("[user] feeds [R] with [src]!") return - ..() \ No newline at end of file + ..() + +/obj/item/trash/liquidprotein + name = "\improper \"LiquidProtein\" ration" + icon = 'icons/obj/trash_vr.dmi' + icon_state = "liquidprotein" \ No newline at end of file diff --git a/code/game/objects/items/weapons/AI_modules.dm b/code/game/objects/items/weapons/AI_modules.dm old mode 100755 new mode 100644 index c5b637d9e5..4d6b6eea03 --- a/code/game/objects/items/weapons/AI_modules.dm +++ b/code/game/objects/items/weapons/AI_modules.dm @@ -11,7 +11,6 @@ AI MODULES icon = 'icons/obj/module.dmi' icon_state = "std_mod" desc = "An AI Module for transmitting encrypted instructions to the AI." - flags = CONDUCT force = 5.0 w_class = ITEMSIZE_SMALL throwforce = 5.0 @@ -23,7 +22,7 @@ AI MODULES /obj/item/weapon/aiModule/proc/install(var/atom/movable/AM, var/mob/living/user) if(!user.IsAdvancedToolUser() && isanimal(user)) - var/mob/living/simple_animal/S = user + var/mob/living/simple_mob/S = user if(!S.IsHumanoidToolUser(src)) return 0 diff --git a/code/game/objects/items/weapons/RCD.dm b/code/game/objects/items/weapons/RCD.dm index a0587d5dbb..f7f22d7611 100644 --- a/code/game/objects/items/weapons/RCD.dm +++ b/code/game/objects/items/weapons/RCD.dm @@ -5,7 +5,7 @@ icon = 'icons/obj/tools.dmi' icon_state = "rcd" item_state = "rcd" - flags = CONDUCT | NOBLUDGEON + flags = NOBLUDGEON force = 10 throwforce = 10 throw_speed = 1 @@ -28,7 +28,7 @@ var/material_to_use = DEFAULT_WALL_MATERIAL // So badmins can make RCDs that print diamond walls. var/make_rwalls = FALSE // If true, when building walls, they will be reinforced. -/obj/item/weapon/rcd/initialize() +/obj/item/weapon/rcd/Initialize() src.spark_system = new /datum/effect/effect/system/spark_spread spark_system.set_up(5, 0, src) spark_system.attach(src) @@ -137,7 +137,7 @@ // RCD variants. // This one starts full. -/obj/item/weapon/rcd/loaded/initialize() +/obj/item/weapon/rcd/loaded/Initialize() stored_matter = max_stored_matter return ..() @@ -148,7 +148,7 @@ used in the construction of hulls for starships. Reload with compressed matter cartridges." material_to_use = MAT_STEELHULL -/obj/item/weapon/rcd/shipwright/loaded/initialize() +/obj/item/weapon/rcd/shipwright/loaded/Initialize() stored_matter = max_stored_matter return ..() @@ -162,7 +162,7 @@ toolspeed = 0.5 // Twice as fast. max_stored_matter = RCD_MAX_CAPACITY * 3 // Three times capacity. -/obj/item/weapon/rcd/advanced/loaded/initialize() +/obj/item/weapon/rcd/advanced/loaded/Initialize() stored_matter = max_stored_matter return ..() @@ -179,7 +179,7 @@ var/make_cell = TRUE // If false, initialize() won't spawn a cell for this. var/electric_cost_coefficent = 83.33 // Higher numbers make it less efficent. 86.3... means it should matche the standard RCD capacity on a 10k cell. -/obj/item/weapon/rcd/electric/initialize() +/obj/item/weapon/rcd/electric/Initialize() if(make_cell) cell = new /obj/item/weapon/cell/high(src) return ..() diff --git a/code/game/objects/items/weapons/autopsy.dm b/code/game/objects/items/weapons/autopsy.dm index 7cddfd1efc..e1c165bc2f 100644 --- a/code/game/objects/items/weapons/autopsy.dm +++ b/code/game/objects/items/weapons/autopsy.dm @@ -8,7 +8,6 @@ icon = 'icons/obj/autopsy_scanner.dmi' icon_state = "" item_state = "autopsy_scanner" - flags = CONDUCT w_class = ITEMSIZE_SMALL origin_tech = list(TECH_MATERIAL = 1, TECH_BIO = 1) var/list/datum/autopsy_data_scanner/wdata = list() diff --git a/code/game/objects/items/weapons/candle.dm b/code/game/objects/items/weapons/candle.dm index 3f861b86d4..18cb433ded 100644 --- a/code/game/objects/items/weapons/candle.dm +++ b/code/game/objects/items/weapons/candle.dm @@ -1,11 +1,12 @@ /obj/item/weapon/flame/candle name = "red candle" - desc = "a small pillar candle. Its specially-formulated fuel-oxidizer wax mixture allows continued combustion in airless environments." + desc = "a red pillar candle. Its specially-formulated fuel-oxidizer wax mixture allows continued combustion in airless environments." icon = 'icons/obj/candle.dmi' icon_state = "candle1" w_class = ITEMSIZE_TINY light_color = "#E09D37" var/wax = 2000 + var/icon_type = "candle" /obj/item/weapon/flame/candle/New() wax -= rand(800, 1000) // Enough for 27-33 minutes. 30 minutes on average. @@ -18,7 +19,7 @@ else if(wax > 800) i = 2 else i = 3 - icon_state = "candle[i][lit ? "_lit" : ""]" + icon_state = "[icon_type][i][lit ? "_lit" : ""]" /obj/item/weapon/flame/candle/attackby(obj/item/weapon/W as obj, mob/user as mob) @@ -46,7 +47,7 @@ lit = TRUE visible_message(flavor_text) set_light(CANDLE_LUM) - processing_objects.Add(src) + START_PROCESSING(SSobj, src) /obj/item/weapon/flame/candle/process() if(!lit) @@ -68,6 +69,30 @@ update_icon() set_light(0) +/obj/item/weapon/flame/candle/small + name = "small red candle" + desc = "a small red candle, for more intimate candle occasions." + icon = 'icons/obj/candle.dmi' + icon_state = "smallcandle" + icon_type = "smallcandle" + w_class = ITEMSIZE_SMALL + +/obj/item/weapon/flame/candle/white + name = "white candle" + desc = "a white pillar candle. Its specially-formulated fuel-oxidizer wax mixture allows continued combustion in airless environments." + icon = 'icons/obj/candle.dmi' + icon_state = "whitecandle" + icon_type = "whitecandle" + w_class = ITEMSIZE_SMALL + +/obj/item/weapon/flame/candle/black + name = "black candle" + desc = "a black pillar candle. Ominous." + icon = 'icons/obj/candle.dmi' + icon_state = "blackcandle" + icon_type = "blackcandle" + w_class = ITEMSIZE_SMALL + /obj/item/weapon/flame/candle/candelabra name = "candelabra" desc = "a small gold candelabra. The cups that hold the candles save some of the wax from dripping off, allowing the candles to burn longer." @@ -85,13 +110,13 @@ /obj/item/weapon/flame/candle/everburn wax = 99999 -/obj/item/weapon/flame/candle/everburn/initialize() +/obj/item/weapon/flame/candle/everburn/Initialize() . = ..() light("\The [src] mysteriously lights itself!.") /obj/item/weapon/flame/candle/candelabra/everburn wax = 99999 -/obj/item/weapon/flame/candle/candelabra/everburn/initialize() +/obj/item/weapon/flame/candle/candelabra/everburn/Initialize() . = ..() light("\The [src] mysteriously lights itself!.") diff --git a/code/game/objects/items/weapons/cigs_lighters.dm b/code/game/objects/items/weapons/cigs_lighters.dm index 5d60c8485b..39fff82a82 100644 --- a/code/game/objects/items/weapons/cigs_lighters.dm +++ b/code/game/objects/items/weapons/cigs_lighters.dm @@ -67,7 +67,7 @@ CIGARETTE PACKETS ARE IN FANCY.DM item_state = "cigoff" name = "burnt match" desc = "A match. This one has seen better days." - processing_objects.Remove(src) + STOP_PROCESSING(SSobj, src) ////////////////// //FINE SMOKABLES// @@ -91,8 +91,8 @@ CIGARETTE PACKETS ARE IN FANCY.DM var/brand blood_sprite_state = null //Can't bloody these -/obj/item/clothing/mask/smokable/New() - ..() +/obj/item/clothing/mask/smokable/Initialize() + . = ..() flags |= NOREACT // so it doesn't react until you light it create_reagents(chem_volume) // making the cigarrete a chemical holder with a maximum volume of 15 if(smoketime && !max_smoketime) @@ -177,12 +177,12 @@ CIGARETTE PACKETS ARE IN FANCY.DM T.visible_message(flavor_text) update_icon() set_light(2, 0.25, "#E38F46") - processing_objects.Add(src) + START_PROCESSING(SSobj, src) /obj/item/clothing/mask/smokable/proc/die(var/nomessage = 0) var/turf/T = get_turf(src) set_light(0) - processing_objects.Remove(src) + STOP_PROCESSING(SSobj, src) if (type_butt) var/obj/item/butt = new type_butt(T) transfer_fingerprints_to(butt) @@ -215,7 +215,7 @@ CIGARETTE PACKETS ARE IN FANCY.DM /obj/item/clothing/mask/smokable/proc/quench() lit = 0 - processing_objects.Remove(src) + STOP_PROCESSING(SSobj, src) update_icon() /obj/item/clothing/mask/smokable/attack(mob/living/carbon/human/H, mob/user, def_zone) @@ -280,8 +280,8 @@ CIGARETTE PACKETS ARE IN FANCY.DM weldermes = "USER casually lights the NAME with FLAME." ignitermes = "USER fiddles with FLAME, and manages to light their NAME." -/obj/item/clothing/mask/smokable/cigarette/New() - ..() +/obj/item/clothing/mask/smokable/cigarette/Initialize() + . = ..() if(nicotine_amt) reagents.add_reagent("nicotine", nicotine_amt) @@ -363,8 +363,8 @@ CIGARETTE PACKETS ARE IN FANCY.DM slot_flags = SLOT_EARS throwforce = 1 -/obj/item/weapon/cigbutt/New() - ..() +/obj/item/weapon/cigbutt/Initialize() + . = ..() pixel_x = rand(-10,10) pixel_y = rand(-10,10) transform = turn(transform,rand(0,360)) @@ -502,7 +502,6 @@ CIGARETTE PACKETS ARE IN FANCY.DM item_state = "lighter-g" w_class = ITEMSIZE_TINY throwforce = 4 - flags = CONDUCT slot_flags = SLOT_BELT attack_verb = list("burnt", "singed") var/base_state @@ -541,7 +540,7 @@ CIGARETTE PACKETS ARE IN FANCY.DM user.visible_message("After a few attempts, [user] manages to light the [src], they however burn their finger in the process.") set_light(2) - processing_objects.Add(src) + START_PROCESSING(SSobj, src) else lit = 0 icon_state = "[base_state]" @@ -552,7 +551,7 @@ CIGARETTE PACKETS ARE IN FANCY.DM user.visible_message("[user] quietly shuts off the [src].") set_light(0) - processing_objects.Remove(src) + STOP_PROCESSING(SSobj, src) return diff --git a/code/game/objects/items/weapons/circuitboards/circuitboard.dm b/code/game/objects/items/weapons/circuitboards/circuitboard.dm index 83a651a201..f049197d88 100644 --- a/code/game/objects/items/weapons/circuitboards/circuitboard.dm +++ b/code/game/objects/items/weapons/circuitboards/circuitboard.dm @@ -12,7 +12,6 @@ density = 0 anchored = 0 w_class = ITEMSIZE_SMALL - flags = CONDUCT force = 5.0 throwforce = 5.0 throw_speed = 3 diff --git a/code/game/objects/items/weapons/circuitboards/circuitboards_vr.dm b/code/game/objects/items/weapons/circuitboards/circuitboards_vr.dm index fd2601c695..0084e69477 100644 --- a/code/game/objects/items/weapons/circuitboards/circuitboards_vr.dm +++ b/code/game/objects/items/weapons/circuitboards/circuitboards_vr.dm @@ -53,3 +53,10 @@ build_path = /obj/machinery/computer/timeclock board_type = new /datum/frame/frame_types/timeclock_terminal matter = list(DEFAULT_WALL_MATERIAL = 50, "glass" = 50) + +// Board for the ID restorer in id_restorer_vr.dm +/obj/item/weapon/circuitboard/id_restorer + name = T_BOARD("ID restoration console") + build_path = /obj/machinery/computer/id_restorer + board_type = new /datum/frame/frame_types/id_restorer + matter = list(DEFAULT_WALL_MATERIAL = 50, "glass" = 50) diff --git a/code/game/objects/items/weapons/clown_items.dm b/code/game/objects/items/weapons/clown_items.dm index 7124cb489f..cb6a4e4a42 100644 --- a/code/game/objects/items/weapons/clown_items.dm +++ b/code/game/objects/items/weapons/clown_items.dm @@ -15,11 +15,11 @@ /* * Soap */ -/obj/item/weapon/soap/New() - ..() +/obj/item/weapon/soap/Initialize() + . = ..() create_reagents(5) wet() - + /obj/item/weapon/soap/proc/wet() reagents.add_reagent("cleaner", 5) diff --git a/code/game/objects/items/weapons/explosives.dm b/code/game/objects/items/weapons/explosives.dm index 5290ac7479..86e3badc6f 100644 --- a/code/game/objects/items/weapons/explosives.dm +++ b/code/game/objects/items/weapons/explosives.dm @@ -37,7 +37,7 @@ /obj/item/weapon/plastique/attack_self(mob/user as mob) var/newtime = input(usr, "Please set the timer.", "Timer", 10) as num if(user.get_active_hand() == src) - newtime = Clamp(newtime, 10, 60000) + newtime = CLAMP(newtime, 10, 60000) timer = newtime user << "Timer set for [timer] seconds." diff --git a/code/game/objects/items/weapons/extinguisher.dm b/code/game/objects/items/weapons/extinguisher.dm index eba48464f0..44242719fd 100644 --- a/code/game/objects/items/weapons/extinguisher.dm +++ b/code/game/objects/items/weapons/extinguisher.dm @@ -5,7 +5,6 @@ icon_state = "fire_extinguisher0" item_state = "fire_extinguisher" hitsound = 'sound/weapons/smash.ogg' - flags = CONDUCT throwforce = 10 w_class = ITEMSIZE_NORMAL throw_speed = 2 @@ -34,22 +33,20 @@ spray_particles = 3 sprite_name = "miniFE" -/obj/item/weapon/extinguisher/New() +/obj/item/weapon/extinguisher/Initialize() create_reagents(max_water) reagents.add_reagent("water", max_water) - ..() + . = ..() /obj/item/weapon/extinguisher/examine(mob/user) if(..(user, 0)) - user << text("\icon[] [] contains [] units of water left!", src, src.name, src.reagents.total_volume) - return + to_chat(user, text("\icon[] [] contains [] units of water left!", src, src.name, src.reagents.total_volume)) /obj/item/weapon/extinguisher/attack_self(mob/user as mob) safety = !safety - src.icon_state = "[sprite_name][!safety]" - src.desc = "The safety is [safety ? "on" : "off"]." - user << "The safety is [safety ? "on" : "off"]." - return + icon_state = "[sprite_name][!safety]" + desc = "The safety is [safety ? "on" : "off"]." + to_chat(user, "The safety is [safety ? "on" : "off"].") /obj/item/weapon/extinguisher/proc/propel_object(var/obj/O, mob/user, movementdirection) if(O.anchored) return diff --git a/code/game/objects/items/weapons/flamethrower.dm b/code/game/objects/items/weapons/flamethrower.dm index 919f8cb016..498cad3f68 100644 --- a/code/game/objects/items/weapons/flamethrower.dm +++ b/code/game/objects/items/weapons/flamethrower.dm @@ -8,7 +8,6 @@ slot_r_hand_str = 'icons/mob/items/righthand_guns.dmi', ) item_state = "flamethrower_0" - flags = CONDUCT force = 3.0 throwforce = 10.0 throw_speed = 1 @@ -34,7 +33,7 @@ /obj/item/weapon/flamethrower/process() if(!lit) - processing_objects.Remove(src) + STOP_PROCESSING(SSobj, src) return null var/turf/location = loc if(istype(location, /mob/)) @@ -144,7 +143,7 @@ if(!status) return lit = !lit if(lit) - processing_objects.Add(src) + START_PROCESSING(SSobj, src) if(href_list["amount"]) throw_amount = throw_amount + text2num(href_list["amount"]) throw_amount = max(50, min(5000, throw_amount)) diff --git a/code/game/objects/items/weapons/grenades/chem_grenade.dm b/code/game/objects/items/weapons/grenades/chem_grenade.dm index 442e6c3f1d..41fa67f1d5 100644 --- a/code/game/objects/items/weapons/grenades/chem_grenade.dm +++ b/code/game/objects/items/weapons/grenades/chem_grenade.dm @@ -16,177 +16,177 @@ var/list/allowed_containers = list(/obj/item/weapon/reagent_containers/glass/beaker, /obj/item/weapon/reagent_containers/glass/bottle) var/affected_area = 3 - New() - create_reagents(1000) +/obj/item/weapon/grenade/chem_grenade/Initialize() + . = ..() + create_reagents(1000) - Destroy() - QDEL_NULL(detonator) - QDEL_NULL_LIST(beakers) - return ..() +/obj/item/weapon/grenade/chem_grenade/Destroy() + QDEL_NULL(detonator) + QDEL_LIST_NULL(beakers) + return ..() - attack_self(mob/user as mob) - if(!stage || stage==1) - if(detonator) +/obj/item/weapon/grenade/chem_grenade/attack_self(mob/user as mob) + if(!stage || stage==1) + if(detonator) // detonator.loc=src.loc - detonator.detached() - usr.put_in_hands(detonator) - detonator=null - det_time = null - stage=0 - icon_state = initial(icon_state) - else if(beakers.len) - for(var/obj/B in beakers) - if(istype(B)) - beakers -= B - user.put_in_hands(B) - name = "unsecured grenade with [beakers.len] containers[detonator?" and detonator":""]" - if(stage > 1 && !active && clown_check(user)) - to_chat(user, "You prime \the [name]!") + detonator.detached() + usr.put_in_hands(detonator) + detonator=null + det_time = null + stage=0 + icon_state = initial(icon_state) + else if(beakers.len) + for(var/obj/B in beakers) + if(istype(B)) + beakers -= B + user.put_in_hands(B) + name = "unsecured grenade with [beakers.len] containers[detonator?" and detonator":""]" + if(stage > 1 && !active && clown_check(user)) + to_chat(user, "You prime \the [name]!") - msg_admin_attack("[key_name_admin(user)] primed \a [src]") + msg_admin_attack("[key_name_admin(user)] primed \a [src]") - activate() - add_fingerprint(user) - if(iscarbon(user)) - var/mob/living/carbon/C = user - C.throw_mode_on() + activate() + add_fingerprint(user) + if(iscarbon(user)) + var/mob/living/carbon/C = user + C.throw_mode_on() - attackby(obj/item/weapon/W as obj, mob/user as mob) - - if(istype(W,/obj/item/device/assembly_holder) && (!stage || stage==1) && path != 2) - var/obj/item/device/assembly_holder/det = W - if(istype(det.a_left,det.a_right.type) || (!isigniter(det.a_left) && !isigniter(det.a_right))) - to_chat(user, "Assembly must contain one igniter.") - return - if(!det.secured) - to_chat(user, "Assembly must be secured with screwdriver.") - return +/obj/item/weapon/grenade/chem_grenade/attackby(obj/item/weapon/W as obj, mob/user as mob) + if(istype(W,/obj/item/device/assembly_holder) && (!stage || stage==1) && path != 2) + var/obj/item/device/assembly_holder/det = W + if(istype(det.a_left,det.a_right.type) || (!isigniter(det.a_left) && !isigniter(det.a_right))) + to_chat(user, "Assembly must contain one igniter.") + return + if(!det.secured) + to_chat(user, "Assembly must be secured with screwdriver.") + return + path = 1 + to_chat(user, "You add [W] to the metal casing.") + playsound(src.loc, 'sound/items/Screwdriver2.ogg', 25, -3) + user.remove_from_mob(det) + det.loc = src + detonator = det + if(istimer(detonator.a_left)) + var/obj/item/device/assembly/timer/T = detonator.a_left + det_time = 10*T.time + if(istimer(detonator.a_right)) + var/obj/item/device/assembly/timer/T = detonator.a_right + det_time = 10*T.time + icon_state = initial(icon_state) +"_ass" + name = "unsecured grenade with [beakers.len] containers[detonator?" and detonator":""]" + stage = 1 + else if(W.is_screwdriver() && path != 2) + if(stage == 1) path = 1 - to_chat(user, "You add [W] to the metal casing.") - playsound(src.loc, 'sound/items/Screwdriver2.ogg', 25, -3) - user.remove_from_mob(det) - det.loc = src - detonator = det - if(istimer(detonator.a_left)) + if(beakers.len) + to_chat(user, "You lock the assembly.") + name = "grenade" + else +// to_chat(user, "You need to add at least one beaker before locking the assembly.") + to_chat(user, "You lock the empty assembly.") + name = "fake grenade" + playsound(src, W.usesound, 50, 1) + icon_state = initial(icon_state) +"_locked" + stage = 2 + else if(stage == 2) + if(active && prob(95)) + to_chat(user, "You trigger the assembly!") + detonate() + return + else + to_chat(user, "You unlock the assembly.") + playsound(src.loc, W.usesound, 50, -3) + name = "unsecured grenade with [beakers.len] containers[detonator?" and detonator":""]" + icon_state = initial(icon_state) + (detonator?"_ass":"") + stage = 1 + active = 0 + else if(is_type_in_list(W, allowed_containers) && (!stage || stage==1) && path != 2) + path = 1 + if(beakers.len == 2) + to_chat(user, "The grenade can not hold more containers.") + return + else + if(W.reagents.total_volume) + to_chat(user, "You add \the [W] to the assembly.") + user.drop_item() + W.loc = src + beakers += W + stage = 1 + name = "unsecured grenade with [beakers.len] containers[detonator?" and detonator":""]" + else + to_chat(user, "\The [W] is empty.") + +/obj/item/weapon/grenade/chem_grenade/examine(mob/user) + ..(user) + if(detonator) + to_chat(user, "With attached [detonator.name]") + +/obj/item/weapon/grenade/chem_grenade/activate(mob/user as mob) + if(active) return + + if(detonator) + if(!isigniter(detonator.a_left)) + detonator.a_left.activate() + active = 1 + if(!isigniter(detonator.a_right)) + detonator.a_right.activate() + active = 1 + if(active) + icon_state = initial(icon_state) + "_active" + + if(user) + msg_admin_attack("[key_name_admin(user)] primed \a [src.name]") + + return + +/obj/item/weapon/grenade/chem_grenade/proc/primed(var/primed = 1) + if(active) + icon_state = initial(icon_state) + (primed?"_primed":"_active") + +/obj/item/weapon/grenade/chem_grenade/detonate() + if(!stage || stage<2) return + + var/has_reagents = 0 + for(var/obj/item/weapon/reagent_containers/glass/G in beakers) + if(G.reagents.total_volume) has_reagents = 1 + + active = 0 + if(!has_reagents) + icon_state = initial(icon_state) +"_locked" + playsound(src.loc, 'sound/items/Screwdriver2.ogg', 50, 1) + spawn(0) //Otherwise det_time is erroneously set to 0 after this + if(istimer(detonator.a_left)) //Make sure description reflects that the timer has been reset var/obj/item/device/assembly/timer/T = detonator.a_left det_time = 10*T.time if(istimer(detonator.a_right)) var/obj/item/device/assembly/timer/T = detonator.a_right det_time = 10*T.time - icon_state = initial(icon_state) +"_ass" - name = "unsecured grenade with [beakers.len] containers[detonator?" and detonator":""]" - stage = 1 - else if(W.is_screwdriver() && path != 2) - if(stage == 1) - path = 1 - if(beakers.len) - to_chat(user, "You lock the assembly.") - name = "grenade" - else -// to_chat(user, "You need to add at least one beaker before locking the assembly.") - to_chat(user, "You lock the empty assembly.") - name = "fake grenade" - playsound(src, W.usesound, 50, 1) - icon_state = initial(icon_state) +"_locked" - stage = 2 - else if(stage == 2) - if(active && prob(95)) - to_chat(user, "You trigger the assembly!") - detonate() - return - else - to_chat(user, "You unlock the assembly.") - playsound(src.loc, W.usesound, 50, -3) - name = "unsecured grenade with [beakers.len] containers[detonator?" and detonator":""]" - icon_state = initial(icon_state) + (detonator?"_ass":"") - stage = 1 - active = 0 - else if(is_type_in_list(W, allowed_containers) && (!stage || stage==1) && path != 2) - path = 1 - if(beakers.len == 2) - to_chat(user, "The grenade can not hold more containers.") - return - else - if(W.reagents.total_volume) - to_chat(user, "You add \the [W] to the assembly.") - user.drop_item() - W.loc = src - beakers += W - stage = 1 - name = "unsecured grenade with [beakers.len] containers[detonator?" and detonator":""]" - else - to_chat(user, "\The [W] is empty.") - - examine(mob/user) - ..(user) - if(detonator) - to_chat(user, "With attached [detonator.name]") - - activate(mob/user as mob) - if(active) return - - if(detonator) - if(!isigniter(detonator.a_left)) - detonator.a_left.activate() - active = 1 - if(!isigniter(detonator.a_right)) - detonator.a_right.activate() - active = 1 - if(active) - icon_state = initial(icon_state) + "_active" - - if(user) - msg_admin_attack("[key_name_admin(user)] primed \a [src.name]") - return - proc/primed(var/primed = 1) - if(active) - icon_state = initial(icon_state) + (primed?"_primed":"_active") + playsound(src.loc, 'sound/effects/bamf.ogg', 50, 1) - detonate() - if(!stage || stage<2) return + for(var/obj/item/weapon/reagent_containers/glass/G in beakers) + G.reagents.trans_to_obj(src, G.reagents.total_volume) - var/has_reagents = 0 - for(var/obj/item/weapon/reagent_containers/glass/G in beakers) - if(G.reagents.total_volume) has_reagents = 1 + if(src.reagents.total_volume) //The possible reactions didnt use up all reagents. + var/datum/effect/effect/system/steam_spread/steam = new /datum/effect/effect/system/steam_spread() + steam.set_up(10, 0, get_turf(src)) + steam.attach(src) + steam.start() - active = 0 - if(!has_reagents) - icon_state = initial(icon_state) +"_locked" - playsound(src.loc, 'sound/items/Screwdriver2.ogg', 50, 1) - spawn(0) //Otherwise det_time is erroneously set to 0 after this - if(istimer(detonator.a_left)) //Make sure description reflects that the timer has been reset - var/obj/item/device/assembly/timer/T = detonator.a_left - det_time = 10*T.time - if(istimer(detonator.a_right)) - var/obj/item/device/assembly/timer/T = detonator.a_right - det_time = 10*T.time - return + for(var/atom/A in view(affected_area, src.loc)) + if( A == src ) continue + src.reagents.touch(A) - playsound(src.loc, 'sound/effects/bamf.ogg', 50, 1) + if(istype(loc, /mob/living/carbon)) //drop dat grenade if it goes off in your hand + var/mob/living/carbon/C = loc + C.drop_from_inventory(src) + C.throw_mode_off() - for(var/obj/item/weapon/reagent_containers/glass/G in beakers) - G.reagents.trans_to_obj(src, G.reagents.total_volume) - - if(src.reagents.total_volume) //The possible reactions didnt use up all reagents. - var/datum/effect/effect/system/steam_spread/steam = new /datum/effect/effect/system/steam_spread() - steam.set_up(10, 0, get_turf(src)) - steam.attach(src) - steam.start() - - for(var/atom/A in view(affected_area, src.loc)) - if( A == src ) continue - src.reagents.touch(A) - - if(istype(loc, /mob/living/carbon)) //drop dat grenade if it goes off in your hand - var/mob/living/carbon/C = loc - C.drop_from_inventory(src) - C.throw_mode_off() - - invisibility = INVISIBILITY_MAXIMUM //Why am i doing this? - spawn(50) //To make sure all reagents can work - qdel(src) //correctly before deleting the grenade. + invisibility = INVISIBILITY_MAXIMUM //Why am i doing this? + spawn(50) //To make sure all reagents can work + qdel(src) //correctly before deleting the grenade. /obj/item/weapon/grenade/chem_grenade/large @@ -203,20 +203,20 @@ path = 1 stage = 2 - New() - ..() - var/obj/item/weapon/reagent_containers/glass/beaker/B1 = new(src) - var/obj/item/weapon/reagent_containers/glass/beaker/B2 = new(src) +/obj/item/weapon/grenade/chem_grenade/metalfoam/Initialize() + . = ..() + var/obj/item/weapon/reagent_containers/glass/beaker/B1 = new(src) + var/obj/item/weapon/reagent_containers/glass/beaker/B2 = new(src) - B1.reagents.add_reagent("aluminum", 30) - B2.reagents.add_reagent("foaming_agent", 10) - B2.reagents.add_reagent("pacid", 10) + B1.reagents.add_reagent("aluminum", 30) + B2.reagents.add_reagent("foaming_agent", 10) + B2.reagents.add_reagent("pacid", 10) - detonator = new/obj/item/device/assembly_holder/timer_igniter(src) + detonator = new/obj/item/device/assembly_holder/timer_igniter(src) - beakers += B1 - beakers += B2 - icon_state = initial(icon_state) +"_locked" + beakers += B1 + beakers += B2 + icon_state = initial(icon_state) +"_locked" /obj/item/weapon/grenade/chem_grenade/incendiary name = "incendiary grenade" @@ -224,22 +224,22 @@ path = 1 stage = 2 - New() - ..() - var/obj/item/weapon/reagent_containers/glass/beaker/B1 = new(src) - var/obj/item/weapon/reagent_containers/glass/beaker/B2 = new(src) +/obj/item/weapon/grenade/chem_grenade/incendiary/Initialize() + . = ..() + var/obj/item/weapon/reagent_containers/glass/beaker/B1 = new(src) + var/obj/item/weapon/reagent_containers/glass/beaker/B2 = new(src) - B1.reagents.add_reagent("aluminum", 15) - B1.reagents.add_reagent("fuel",20) - B2.reagents.add_reagent("phoron", 15) - B2.reagents.add_reagent("sacid", 15) - B1.reagents.add_reagent("fuel",20) + B1.reagents.add_reagent("aluminum", 15) + B1.reagents.add_reagent("fuel",20) + B2.reagents.add_reagent("phoron", 15) + B2.reagents.add_reagent("sacid", 15) + B1.reagents.add_reagent("fuel",20) - detonator = new/obj/item/device/assembly_holder/timer_igniter(src) + detonator = new/obj/item/device/assembly_holder/timer_igniter(src) - beakers += B1 - beakers += B2 - icon_state = initial(icon_state) +"_locked" + beakers += B1 + beakers += B2 + icon_state = initial(icon_state) +"_locked" /obj/item/weapon/grenade/chem_grenade/antiweed name = "weedkiller grenade" @@ -247,21 +247,21 @@ path = 1 stage = 2 - New() - ..() - var/obj/item/weapon/reagent_containers/glass/beaker/B1 = new(src) - var/obj/item/weapon/reagent_containers/glass/beaker/B2 = new(src) +/obj/item/weapon/grenade/chem_grenade/antiweed/Initialize() + . = ..() + var/obj/item/weapon/reagent_containers/glass/beaker/B1 = new(src) + var/obj/item/weapon/reagent_containers/glass/beaker/B2 = new(src) - B1.reagents.add_reagent("plantbgone", 25) - B1.reagents.add_reagent("potassium", 25) - B2.reagents.add_reagent("phosphorus", 25) - B2.reagents.add_reagent("sugar", 25) + B1.reagents.add_reagent("plantbgone", 25) + B1.reagents.add_reagent("potassium", 25) + B2.reagents.add_reagent("phosphorus", 25) + B2.reagents.add_reagent("sugar", 25) - detonator = new/obj/item/device/assembly_holder/timer_igniter(src) + detonator = new/obj/item/device/assembly_holder/timer_igniter(src) - beakers += B1 - beakers += B2 - icon_state = "grenade" + beakers += B1 + beakers += B2 + icon_state = "grenade" /obj/item/weapon/grenade/chem_grenade/cleaner name = "cleaner grenade" @@ -269,20 +269,20 @@ stage = 2 path = 1 - New() - ..() - var/obj/item/weapon/reagent_containers/glass/beaker/B1 = new(src) - var/obj/item/weapon/reagent_containers/glass/beaker/B2 = new(src) +/obj/item/weapon/grenade/chem_grenade/cleaner/Initialize() + . = ..() + var/obj/item/weapon/reagent_containers/glass/beaker/B1 = new(src) + var/obj/item/weapon/reagent_containers/glass/beaker/B2 = new(src) - B1.reagents.add_reagent("fluorosurfactant", 40) - B2.reagents.add_reagent("water", 40) - B2.reagents.add_reagent("cleaner", 10) + B1.reagents.add_reagent("fluorosurfactant", 40) + B2.reagents.add_reagent("water", 40) + B2.reagents.add_reagent("cleaner", 10) - detonator = new/obj/item/device/assembly_holder/timer_igniter(src) + detonator = new/obj/item/device/assembly_holder/timer_igniter(src) - beakers += B1 - beakers += B2 - icon_state = initial(icon_state) +"_locked" + beakers += B1 + beakers += B2 + icon_state = initial(icon_state) +"_locked" /obj/item/weapon/grenade/chem_grenade/teargas name = "tear gas grenade" @@ -290,19 +290,19 @@ stage = 2 path = 1 - New() - ..() - var/obj/item/weapon/reagent_containers/glass/beaker/large/B1 = new(src) - var/obj/item/weapon/reagent_containers/glass/beaker/large/B2 = new(src) +/obj/item/weapon/grenade/chem_grenade/teargas/Initialize() + . = ..() + var/obj/item/weapon/reagent_containers/glass/beaker/large/B1 = new(src) + var/obj/item/weapon/reagent_containers/glass/beaker/large/B2 = new(src) - B1.reagents.add_reagent("phosphorus", 40) - B1.reagents.add_reagent("potassium", 40) - B1.reagents.add_reagent("condensedcapsaicin", 40) - B2.reagents.add_reagent("sugar", 40) - B2.reagents.add_reagent("condensedcapsaicin", 80) + B1.reagents.add_reagent("phosphorus", 40) + B1.reagents.add_reagent("potassium", 40) + B1.reagents.add_reagent("condensedcapsaicin", 40) + B2.reagents.add_reagent("sugar", 40) + B2.reagents.add_reagent("condensedcapsaicin", 80) - detonator = new/obj/item/device/assembly_holder/timer_igniter(src) + detonator = new/obj/item/device/assembly_holder/timer_igniter(src) - beakers += B1 - beakers += B2 - icon_state = initial(icon_state) +"_locked" \ No newline at end of file + beakers += B1 + beakers += B2 + icon_state = initial(icon_state) +"_locked" \ No newline at end of file diff --git a/code/game/objects/items/weapons/grenades/explosive.dm b/code/game/objects/items/weapons/grenades/explosive.dm index 3b4f6a4511..076a7accce 100644 --- a/code/game/objects/items/weapons/grenades/explosive.dm +++ b/code/game/objects/items/weapons/grenades/explosive.dm @@ -50,9 +50,10 @@ var/fragment_type = pickweight(fragtypes) var/obj/item/projectile/bullet/pellet/fragment/P = new fragment_type(T) P.pellets = fragments_per_projectile - P.shot_from = src.name + P.shot_from = name - P.launch(O) + P.old_style_target(O) + P.fire() //Make sure to hit any mobs in the source turf for(var/mob/living/M in T) diff --git a/code/game/objects/items/weapons/grenades/flashbang.dm b/code/game/objects/items/weapons/grenades/flashbang.dm index 8f6ce1864f..eaed5f9f4c 100644 --- a/code/game/objects/items/weapons/grenades/flashbang.dm +++ b/code/game/objects/items/weapons/grenades/flashbang.dm @@ -26,7 +26,6 @@ new/obj/effect/effect/smoke/illumination(src.loc, 5, range=30, power=30, color="#FFFFFF") qdel(src) - return /obj/item/weapon/grenade/flashbang/proc/bang(var/turf/T , var/mob/living/carbon/M) // Added a new proc called 'bang' that takes a location and a person to be banged. to_chat(M, "BANG") // Called during the loop that bangs people in lockers/containers and when banging diff --git a/code/game/objects/items/weapons/grenades/grenade.dm b/code/game/objects/items/weapons/grenades/grenade.dm index 7b7e85cce3..d7512f54b1 100644 --- a/code/game/objects/items/weapons/grenades/grenade.dm +++ b/code/game/objects/items/weapons/grenades/grenade.dm @@ -7,7 +7,6 @@ item_state = "grenade" throw_speed = 4 throw_range = 20 - flags = CONDUCT slot_flags = SLOT_MASK|SLOT_BELT var/active = 0 diff --git a/code/game/objects/items/weapons/grenades/projectile.dm b/code/game/objects/items/weapons/grenades/projectile.dm index 05153df4fe..8ea02c9add 100644 --- a/code/game/objects/items/weapons/grenades/projectile.dm +++ b/code/game/objects/items/weapons/grenades/projectile.dm @@ -61,7 +61,8 @@ var/obj/item/projectile/P = new shot_type(T) P.shot_from = src.name - P.launch(O) + P.old_style_target(O) + P.fire() //Make sure to hit any mobs in the source turf for(var/mob/living/M in T) diff --git a/code/game/objects/items/weapons/grenades/spawnergrenade.dm b/code/game/objects/items/weapons/grenades/spawnergrenade.dm index 5a20c49ccd..7d725c36bb 100644 --- a/code/game/objects/items/weapons/grenades/spawnergrenade.dm +++ b/code/game/objects/items/weapons/grenades/spawnergrenade.dm @@ -31,19 +31,25 @@ /obj/item/weapon/grenade/spawnergrenade/manhacks name = "manhack delivery grenade" - spawner_type = /mob/living/simple_animal/hostile/viscerator + spawner_type = /mob/living/simple_mob/mechanical/viscerator deliveryamt = 5 origin_tech = list(TECH_MATERIAL = 3, TECH_MAGNET = 4, TECH_ILLEGAL = 4) +/obj/item/weapon/grenade/spawnergrenade/manhacks/mercenary + spawner_type = /mob/living/simple_mob/mechanical/viscerator/mercenary + +/obj/item/weapon/grenade/spawnergrenade/manhacks/raider + spawner_type = /mob/living/simple_mob/mechanical/viscerator/raider + /obj/item/weapon/grenade/spawnergrenade/spesscarp name = "carp delivery grenade" - spawner_type = /mob/living/simple_animal/hostile/carp + spawner_type = /mob/living/simple_mob/animal/space/carp deliveryamt = 5 origin_tech = list(TECH_MATERIAL = 3, TECH_MAGNET = 4, TECH_ILLEGAL = 4) /obj/item/weapon/grenade/spawnergrenade/spider name = "spider delivery grenade" - spawner_type = /mob/living/simple_animal/hostile/giant_spider/hunter + spawner_type = /mob/living/simple_mob/animal/giant_spider/hunter deliveryamt = 3 origin_tech = list(TECH_MATERIAL = 3, TECH_MAGNET = 4, TECH_ILLEGAL = 4) @@ -53,7 +59,6 @@ desc = "It's made of AUTHENTIC faux-leather and has a price-tag still attached. Its owner must be a real professional." icon_state = "briefcase" item_state = "briefcase" - flags = CONDUCT force = 8.0 throw_speed = 1 throw_range = 4 diff --git a/code/game/objects/items/weapons/grenades/supermatter.dm b/code/game/objects/items/weapons/grenades/supermatter.dm index 1bf35d1e1c..7eff5accd4 100644 --- a/code/game/objects/items/weapons/grenades/supermatter.dm +++ b/code/game/objects/items/weapons/grenades/supermatter.dm @@ -8,12 +8,12 @@ /obj/item/weapon/grenade/supermatter/Destroy() if(implode_at) - processing_objects -= src + STOP_PROCESSING(SSobj, src) . = ..() /obj/item/weapon/grenade/supermatter/detonate() ..() - processing_objects += src + START_PROCESSING(SSobj, src) implode_at = world.time + 10 SECONDS update_icon() playsound(src, 'sound/weapons/wave.ogg', 100) diff --git a/code/game/objects/items/weapons/handcuffs.dm b/code/game/objects/items/weapons/handcuffs.dm index 40c074c939..12ed2459c6 100644 --- a/code/game/objects/items/weapons/handcuffs.dm +++ b/code/game/objects/items/weapons/handcuffs.dm @@ -4,7 +4,6 @@ gender = PLURAL icon = 'icons/obj/items.dmi' icon_state = "handcuff" - flags = CONDUCT slot_flags = SLOT_BELT throwforce = 5 w_class = ITEMSIZE_SMALL @@ -205,7 +204,6 @@ var/last_chew = 0 gender = PLURAL icon = 'icons/obj/items.dmi' icon_state = "legcuff" - flags = CONDUCT throwforce = 0 w_class = ITEMSIZE_NORMAL origin_tech = list(TECH_MATERIAL = 1) @@ -336,4 +334,4 @@ var/last_chew = 0 target.m_intent = "walk" if(target.hud_used && user.hud_used.move_intent) target.hud_used.move_intent.icon_state = "walking" - return 1 \ No newline at end of file + return 1 diff --git a/code/game/objects/items/weapons/id cards/cards.dm b/code/game/objects/items/weapons/id cards/cards.dm index e7a3d3f4d5..389601ef1f 100644 --- a/code/game/objects/items/weapons/id cards/cards.dm +++ b/code/game/objects/items/weapons/id cards/cards.dm @@ -101,6 +101,6 @@ usr << "You are not adding enough telecrystals to fuel \the [src]." return uses += T.amount/2 //Gives 5 uses per 10 TC - uses = ceil(uses) //Ensures no decimal uses nonsense, rounds up to be nice + uses = CEILING(uses, 1) //Ensures no decimal uses nonsense, rounds up to be nice usr << "You add \the [O] to \the [src]. Increasing the uses of \the [src] to [uses]." qdel(O) \ No newline at end of file diff --git a/code/game/objects/items/weapons/id cards/station_ids.dm b/code/game/objects/items/weapons/id cards/station_ids.dm index 6e1cb10153..6aa1a5c540 100644 --- a/code/game/objects/items/weapons/id cards/station_ids.dm +++ b/code/game/objects/items/weapons/id cards/station_ids.dm @@ -121,7 +121,7 @@ return ..() -/obj/item/weapon/card/id/initialize() +/obj/item/weapon/card/id/Initialize() . = ..() var/datum/job/J = job_master.GetJob(rank) if(J) @@ -169,7 +169,7 @@ item_state = "tdgreen" assignment = "Synthetic" -/obj/item/weapon/card/id/synthetic/initialize() +/obj/item/weapon/card/id/synthetic/Initialize() . = ..() access = get_all_station_access() + access_synth @@ -180,11 +180,11 @@ registered_name = "Central Command" assignment = "General" -/obj/item/weapon/card/id/centcom/initialize() +/obj/item/weapon/card/id/centcom/Initialize() . = ..() access = get_all_centcom_access() -/obj/item/weapon/card/id/centcom/station/initialize() +/obj/item/weapon/card/id/centcom/station/Initialize() . = ..() access |= get_all_station_access() @@ -193,7 +193,7 @@ assignment = "Emergency Response Team" icon_state = "centcom" -/obj/item/weapon/card/id/centcom/ERT/initialize() +/obj/item/weapon/card/id/centcom/ERT/Initialize() . = ..() access |= get_all_station_access() diff --git a/code/game/objects/items/weapons/id cards/syndicate_ids.dm b/code/game/objects/items/weapons/id cards/syndicate_ids.dm index 05528ca19b..e1ceb489dd 100644 --- a/code/game/objects/items/weapons/id cards/syndicate_ids.dm +++ b/code/game/objects/items/weapons/id cards/syndicate_ids.dm @@ -6,11 +6,11 @@ var/electronic_warfare = 1 var/mob/registered_user = null -/obj/item/weapon/card/id/syndicate/initialize() +/obj/item/weapon/card/id/syndicate/Initialize() . = ..() access = syndicate_access.Copy() -/obj/item/weapon/card/id/syndicate/station_access/initialize() +/obj/item/weapon/card/id/syndicate/station_access/Initialize() . = ..() // Same as the normal Syndicate id, only already has all station access access |= get_all_station_access() diff --git a/code/game/objects/items/weapons/implants/implant.dm b/code/game/objects/items/weapons/implants/implant.dm index f5bd38dcc1..1804d576fd 100644 --- a/code/game/objects/items/weapons/implants/implant.dm +++ b/code/game/objects/items/weapons/implants/implant.dm @@ -110,10 +110,10 @@ GLOBAL_LIST_BOILERPLATE(all_tracking_implants, /obj/item/weapon/implant/tracking ..() /obj/item/weapon/implant/tracking/post_implant(var/mob/source) - processing_objects.Add(src) + START_PROCESSING(SSobj, src) /obj/item/weapon/implant/tracking/Destroy() - processing_objects.Remove(src) + STOP_PROCESSING(SSobj, src) return ..() /obj/item/weapon/implant/tracking/process() @@ -126,7 +126,7 @@ GLOBAL_LIST_BOILERPLATE(all_tracking_implants, /obj/item/weapon/implant/tracking desc = "Charred circuit in melted plastic case. Wonder what that used to be..." icon_state = "implant_melted" malfunction = MALFUNCTION_PERMANENT - processing_objects.Remove(src) + STOP_PROCESSING(SSobj, src) return 1 /obj/item/weapon/implant/tracking/get_data() @@ -529,7 +529,7 @@ the implant may become unstable and either pre-maturely inject the subject or si // a.autosay("[mobname] has died in [t.name]!", "[mobname]'s Death Alarm", "Security") // a.autosay("[mobname] has died in [t.name]!", "[mobname]'s Death Alarm", "Medical") qdel(a) - processing_objects.Remove(src) + STOP_PROCESSING(SSobj, src) if ("emp") var/obj/item/device/radio/headset/a = new /obj/item/device/radio/headset/heads/captain(null) var/name = prob(50) ? t.name : pick(teleportlocs) @@ -543,7 +543,7 @@ the implant may become unstable and either pre-maturely inject the subject or si // a.autosay("[mobname] has died-zzzzt in-in-in...", "[mobname]'s Death Alarm", "Security") // a.autosay("[mobname] has died-zzzzt in-in-in...", "[mobname]'s Death Alarm", "Medical") qdel(a) - processing_objects.Remove(src) + STOP_PROCESSING(SSobj, src) /obj/item/weapon/implant/death_alarm/emp_act(severity) //for some reason alarms stop going off in case they are emp'd, even without this if (malfunction) //so I'm just going to add a meltdown chance here @@ -556,14 +556,14 @@ the implant may become unstable and either pre-maturely inject the subject or si meltdown() else if (prob(60)) //but more likely it will just quietly die malfunction = MALFUNCTION_PERMANENT - processing_objects.Remove(src) + STOP_PROCESSING(SSobj, src) spawn(20) malfunction-- /obj/item/weapon/implant/death_alarm/post_implant(mob/source as mob) mobname = source.real_name - processing_objects.Add(src) + START_PROCESSING(SSobj, src) ////////////////////////////// // Compressed Matter Implant diff --git a/code/game/objects/items/weapons/implants/implant_vr.dm b/code/game/objects/items/weapons/implants/implant_vr.dm index 006c4884e1..bf67f83953 100644 --- a/code/game/objects/items/weapons/implants/implant_vr.dm +++ b/code/game/objects/items/weapons/implants/implant_vr.dm @@ -105,9 +105,9 @@ if(size_mult.Find(msg)) var/resizing_value = text2num(size_mult.match) if(findtext(msg, "centimeter")) //Because metric system rules - H.resize(Clamp(resizing_value/170 , 0.25, 2)) //170 cm is average crewmember, I think + H.resize(CLAMP(resizing_value/170 , 0.25, 2)) //170 cm is average crewmember, I think else - H.resize(Clamp(resizing_value , 0.25, 2)) + H.resize(CLAMP(resizing_value , 0.25, 2)) diff --git a/code/game/objects/items/weapons/implants/implantchair.dm b/code/game/objects/items/weapons/implants/implantchair.dm index c05d52442c..5b1ba3f6c5 100644 --- a/code/game/objects/items/weapons/implants/implantchair.dm +++ b/code/game/objects/items/weapons/implants/implantchair.dm @@ -79,10 +79,9 @@ var/obj/item/weapon/grab/grab = G if(!ismob(grab.affecting)) return - for(var/mob/living/simple_animal/slime/M in range(1,grab.affecting)) - if(M.victim == grab.affecting) - usr << "[grab.affecting.name] will not fit into the [src.name] because they have a slime latched onto their head." - return + if(grab.affecting.has_buckled_mobs()) + to_chat(user, span("warning", "\The [grab.affecting] has other entities attached to them. Remove them first.")) + return var/mob/M = grab.affecting if(put_mob(M)) qdel(G) diff --git a/code/game/objects/items/weapons/implants/implantreagent_vr.dm b/code/game/objects/items/weapons/implants/implantreagent_vr.dm index 0b227d9539..4597cbe0a8 100644 --- a/code/game/objects/items/weapons/implants/implantreagent_vr.dm +++ b/code/game/objects/items/weapons/implants/implantreagent_vr.dm @@ -31,7 +31,7 @@ return /obj/item/weapon/implant/reagent_generator/post_implant(mob/living/carbon/source) - processing_objects += src + START_PROCESSING(SSobj, src) to_chat(source, "You implant [source] with \the [src].") assigned_proc = new assigned_proc(source, verb_name, verb_desc) return 1 diff --git a/code/game/objects/items/weapons/implants/neuralbasic.dm b/code/game/objects/items/weapons/implants/neuralbasic.dm index a42778f58e..d744c80fde 100644 --- a/code/game/objects/items/weapons/implants/neuralbasic.dm +++ b/code/game/objects/items/weapons/implants/neuralbasic.dm @@ -16,13 +16,13 @@ if(H.isSynthetic() && H.get_FBP_type() != FBP_CYBORG) //If this on an FBP, it's just an extra inefficient attachment to whatever their brain is. robotic_brain = TRUE if(my_brain && my_brain.can_assist()) - processing_objects.Add(src) + START_PROCESSING(SSobj, src) /obj/item/weapon/implant/neural/Destroy() if(my_brain) if(my_brain.owner) to_chat(my_brain.owner, "You feel a pressure in your mind as something is ripped away.") - processing_objects.Remove(src) + STOP_PROCESSING(SSobj, src) my_brain = null return ..() @@ -92,7 +92,7 @@ Implant Specifics:
"} /obj/item/weapon/implant/neural/meltdown() ..() - processing_objects.Remove(src) + STOP_PROCESSING(SSobj, src) var/mob/living/carbon/human/H = null if(my_brain && my_brain.owner) if(ishuman(my_brain.owner)) diff --git a/code/game/objects/items/weapons/improvised_components.dm b/code/game/objects/items/weapons/improvised_components.dm index ded033a746..bfd059f74d 100644 --- a/code/game/objects/items/weapons/improvised_components.dm +++ b/code/game/objects/items/weapons/improvised_components.dm @@ -44,7 +44,6 @@ desc = "A rod with some wire wrapped around the top. It'd be easy to attach something to the top bit." icon_state = "wiredrod" item_state = "rods" - flags = CONDUCT force = 8 throwforce = 10 w_class = ITEMSIZE_NORMAL diff --git a/code/game/objects/items/weapons/material/ashtray.dm b/code/game/objects/items/weapons/material/ashtray.dm index 8becb48010..5a26720b7c 100644 --- a/code/game/objects/items/weapons/material/ashtray.dm +++ b/code/game/objects/items/weapons/material/ashtray.dm @@ -57,7 +57,7 @@ var/global/list/ashtray_cache = list() var/obj/item/clothing/mask/smokable/cigarette/cig = W if (cig.lit == 1) src.visible_message("[user] crushes [cig] in \the [src], putting it out.") - processing_objects.Remove(cig) + STOP_PROCESSING(SSobj, cig) var/obj/item/butt = new cig.type_butt(src) cig.transfer_fingerprints_to(butt) qdel(cig) diff --git a/code/game/objects/items/weapons/material/chainsaw.dm b/code/game/objects/items/weapons/material/chainsaw.dm index 703512bf52..f98fe79f51 100644 --- a/code/game/objects/items/weapons/material/chainsaw.dm +++ b/code/game/objects/items/weapons/material/chainsaw.dm @@ -17,11 +17,11 @@ obj/item/weapon/chainsaw/New() reagents = R R.my_atom = src R.add_reagent("fuel", max_fuel) - processing_objects |= src + START_PROCESSING(SSobj, src) ..() obj/item/weapon/chainsaw/Destroy() - processing_objects -= src + STOP_PROCESSING(SSobj, src) if(reagents) qdel(reagents) ..() diff --git a/code/game/objects/items/weapons/material/knives.dm b/code/game/objects/items/weapons/material/knives.dm index 2b1f54fb09..bce6cb22dd 100644 --- a/code/game/objects/items/weapons/material/knives.dm +++ b/code/game/objects/items/weapons/material/knives.dm @@ -59,7 +59,6 @@ icon = 'icons/obj/kitchen.dmi' icon_state = "knife" desc = "A general purpose Chef's Knife made by SpaceCook Incorporated. Guaranteed to stay sharp for years to come." - flags = CONDUCT sharp = 1 edge = 1 force_divisor = 0.15 // 9 when wielded with hardness 60 (steel) diff --git a/code/game/objects/items/weapons/material/material_armor.dm b/code/game/objects/items/weapons/material/material_armor.dm index ecd328f3ab..d8fba58175 100644 --- a/code/game/objects/items/weapons/material/material_armor.dm +++ b/code/game/objects/items/weapons/material/material_armor.dm @@ -41,7 +41,7 @@ Protectiveness | Armor % set_material(material_key) /obj/item/clothing/Destroy() - processing_objects -= src + STOP_PROCESSING(SSobj, src) return ..() /obj/item/clothing/get_material() @@ -58,7 +58,7 @@ Protectiveness | Armor % if(applies_material_color) color = material.icon_colour if(material.products_need_process()) - processing_objects |= src + START_PROCESSING(SSobj, src) update_armor() // This is called when someone wearing the object gets hit in some form (melee, bullet_act(), etc). diff --git a/code/game/objects/items/weapons/material/material_weapons.dm b/code/game/objects/items/weapons/material/material_weapons.dm index 06444f6a37..4f08c61a4c 100644 --- a/code/game/objects/items/weapons/material/material_weapons.dm +++ b/code/game/objects/items/weapons/material/material_weapons.dm @@ -67,11 +67,11 @@ if(applies_material_colour) color = material.icon_colour if(material.products_need_process()) - processing_objects |= src + START_PROCESSING(SSobj, src) update_force() /obj/item/weapon/material/Destroy() - processing_objects -= src + STOP_PROCESSING(SSobj, src) . = ..() /obj/item/weapon/material/apply_hit_effect() diff --git a/code/game/objects/items/weapons/melee/energy.dm b/code/game/objects/items/weapons/melee/energy.dm index ad30eb0a57..dae4a19d15 100644 --- a/code/game/objects/items/weapons/melee/energy.dm +++ b/code/game/objects/items/weapons/melee/energy.dm @@ -7,7 +7,7 @@ sharp = 0 edge = 0 armor_penetration = 50 - flags = NOBLOODY + flags = NOCONDUCT | NOBLOODY var/lrange = 2 var/lpower = 2 var/lcolor = "#0099FF" @@ -82,7 +82,6 @@ throw_speed = 1 throw_range = 5 w_class = ITEMSIZE_NORMAL - flags = CONDUCT | NOBLOODY origin_tech = list(TECH_MAGNET = 3, TECH_COMBAT = 4) attack_verb = list("attacked", "chopped", "cleaved", "torn", "cut") sharp = 1 @@ -233,11 +232,10 @@ playsound(get_turf(target), 'sound/weapons/blade1.ogg', 100, 1) // Make lesser robots really mad at us. - if(istype(target, /mob/living/simple_animal)) - var/mob/living/simple_animal/SA = target - if(SA.intelligence_level == SA_ROBOTIC) - SA.taunt(user) - SA.adjustFireLoss(force * 6) // 30 Burn, for 50 total. + if(target.mob_class & MOB_CLASS_SYNTHETIC) + if(target.has_AI()) + target.taunt(user) + target.adjustFireLoss(force * 6) // 30 Burn, for 50 total. /* *Energy Blade @@ -269,11 +267,11 @@ spark_system.set_up(5, 0, src) spark_system.attach(src) - processing_objects |= src + START_PROCESSING(SSobj, src) set_light(lrange, lpower, lcolor) /obj/item/weapon/melee/energy/blade/Destroy() - processing_objects -= src + STOP_PROCESSING(SSobj, src) ..() /obj/item/weapon/melee/energy/blade/attack_self(mob/user as mob) diff --git a/code/game/objects/items/weapons/melee/misc.dm b/code/game/objects/items/weapons/melee/misc.dm index 81f233cdec..7d390d613f 100644 --- a/code/game/objects/items/weapons/melee/misc.dm +++ b/code/game/objects/items/weapons/melee/misc.dm @@ -2,7 +2,6 @@ name = "chain of command" desc = "A tool used by great men to placate the frothing masses." icon_state = "chain" - flags = CONDUCT slot_flags = SLOT_BELT force = 10 throwforce = 7 @@ -21,7 +20,6 @@ icon = 'icons/obj/items.dmi' icon_state = "umbrella_closed" addblends = "umbrella_closed_a" - flags = CONDUCT slot_flags = SLOT_BELT force = 5 throwforce = 5 diff --git a/code/game/objects/items/weapons/mop_deploy.dm b/code/game/objects/items/weapons/mop_deploy.dm index 30a6991a53..93b3657f49 100644 --- a/code/game/objects/items/weapons/mop_deploy.dm +++ b/code/game/objects/items/weapons/mop_deploy.dm @@ -16,7 +16,7 @@ /obj/item/weapon/mop_deploy/New() create_reagents(5) - processing_objects |= src + START_PROCESSING(SSobj, src) /turf/proc/clean_deploy(atom/source) if(source.reagents.has_reagent("water", 1)) @@ -48,7 +48,7 @@ ..() /obj/item/weapon/mop_deploy/Destroy() - processing_objects -= src + STOP_PROCESSING(SSobj, src) . = ..() /obj/item/weapon/mop_deploy/attack_self(mob/user as mob) diff --git a/code/game/objects/items/weapons/paint.dm b/code/game/objects/items/weapons/paint.dm index 5d12f5c33b..d3f269abaf 100644 --- a/code/game/objects/items/weapons/paint.dm +++ b/code/game/objects/items/weapons/paint.dm @@ -37,7 +37,7 @@ var/global/list/cached_icons = list() else if (paint_type == "black") reagents.add_reagent("carbon", volume/5) else - reagents.add_reagent("crayon_dust_[paint_type]", volume/5) + reagents.add_reagent("marker_ink_[paint_type]", volume/5) reagents.handle_reactions() red diff --git a/code/game/objects/items/weapons/policetape.dm b/code/game/objects/items/weapons/policetape.dm index aec6a790b2..78065ff69e 100644 --- a/code/game/objects/items/weapons/policetape.dm +++ b/code/game/objects/items/weapons/policetape.dm @@ -14,7 +14,7 @@ var/apply_tape = FALSE -/obj/item/taperoll/initialize() +/obj/item/taperoll/Initialize() . = ..() if(apply_tape) var/turf/T = get_turf(src) @@ -286,16 +286,16 @@ var/list/tape_roll_applications = list() update_icon() name = "crumpled [name]" -/obj/item/tape/CanPass(atom/movable/mover, turf/target, height=0, air_group=0) +/obj/item/tape/CanPass(atom/movable/mover, turf/target) if(!lifted && ismob(mover)) var/mob/M = mover add_fingerprint(M) - if (!allowed(M)) //only select few learn art of not crumpling the tape - M << "You are not supposed to go past [src]..." - if(M.a_intent == I_HELP && !(istype(M, /mob/living/simple_animal))) - return 0 + if(!allowed(M)) //only select few learn art of not crumpling the tape + to_chat(M, span("warning", "You are not supposed to go past \the [src]...")) + if(M.a_intent == I_HELP && !(istype(M, /mob/living/simple_mob))) + return FALSE crumple() - return ..(mover) + return ..() /obj/item/tape/attackby(obj/item/weapon/W as obj, mob/user as mob) breaktape(user) diff --git a/code/game/objects/items/weapons/shields.dm b/code/game/objects/items/weapons/shields.dm index 814592a890..a1a2756eca 100644 --- a/code/game/objects/items/weapons/shields.dm +++ b/code/game/objects/items/weapons/shields.dm @@ -58,7 +58,6 @@ desc = "A shield adept for close quarters engagement. It's also capable of protecting from less powerful projectiles." icon = 'icons/obj/weapons.dmi' icon_state = "riot" - flags = CONDUCT slot_flags = SLOT_BACK force = 5.0 throwforce = 5.0 @@ -115,7 +114,7 @@ icon = 'icons/obj/weapons.dmi' icon_state = "eshield0" // eshield1 for expanded slot_flags = SLOT_EARS - flags = CONDUCT + flags = NOCONDUCT force = 3.0 throwforce = 5.0 throw_speed = 1 diff --git a/code/game/objects/items/weapons/storage/boxes.dm b/code/game/objects/items/weapons/storage/boxes.dm index 695c19e45b..e5559f6c77 100644 --- a/code/game/objects/items/weapons/storage/boxes.dm +++ b/code/game/objects/items/weapons/storage/boxes.dm @@ -401,7 +401,7 @@ W.lit = 1 W.damtype = "burn" W.icon_state = "match_lit" - processing_objects.Add(W) + START_PROCESSING(SSobj, W) W.update_icon() return diff --git a/code/game/objects/items/weapons/storage/boxes_vr.dm b/code/game/objects/items/weapons/storage/boxes_vr.dm index 81833a29a1..b1690898e8 100644 --- a/code/game/objects/items/weapons/storage/boxes_vr.dm +++ b/code/game/objects/items/weapons/storage/boxes_vr.dm @@ -26,3 +26,13 @@ name = "box of volunteer headsets" desc = "A box full of volunteer headsets, for issuing out to exploration volunteers." starts_with = list(/obj/item/device/radio/headset/volunteer = 7) + +/obj/item/weapon/storage/box/commandkeys + name = "box of command keys" + desc = "A box full of command keys, for command to give out as necessary." + starts_with = list(/obj/item/device/encryptionkey/headset_com = 7) + +/obj/item/weapon/storage/box/servicekeys + name = "box of command keys" + desc = "A box full of service keys, for the HoP to give out as necessary." + starts_with = list(/obj/item/device/encryptionkey/headset_service = 7) diff --git a/code/game/objects/items/weapons/storage/briefcase.dm b/code/game/objects/items/weapons/storage/briefcase.dm index aa023dce18..4c8a631fa3 100644 --- a/code/game/objects/items/weapons/storage/briefcase.dm +++ b/code/game/objects/items/weapons/storage/briefcase.dm @@ -2,7 +2,6 @@ name = "briefcase" desc = "It's made of AUTHENTIC faux-leather and has a price-tag still attached. Its owner must be a real professional." icon_state = "briefcase" - flags = CONDUCT force = 8.0 throw_speed = 1 throw_range = 4 @@ -13,6 +12,7 @@ /obj/item/weapon/storage/briefcase/clutch name = "clutch purse" desc = "A fashionable handheld bag typically used by women." + icon = 'icons/obj/clothing/backpack.dmi' //VOREStation Edit - Wrong sprite location icon_state = "clutch" item_state_slots = list(slot_r_hand_str = "smpurse", slot_l_hand_str = "smpurse") force = 0 diff --git a/code/game/objects/items/weapons/storage/fancy.dm b/code/game/objects/items/weapons/storage/fancy.dm index c1de372dc1..7d754d8f14 100644 --- a/code/game/objects/items/weapons/storage/fancy.dm +++ b/code/game/objects/items/weapons/storage/fancy.dm @@ -55,11 +55,11 @@ starts_with = list(/obj/item/weapon/reagent_containers/food/snacks/egg = 12) /* - * Candle Box + * Candle Boxes */ /obj/item/weapon/storage/fancy/candle_box - name = "candle pack" + name = "red candle pack" desc = "A pack of red candles." icon = 'icons/obj/candle.dmi' icon_state = "candlebox5" @@ -69,6 +69,29 @@ slot_flags = SLOT_BELT starts_with = list(/obj/item/weapon/flame/candle = 5) +/obj/item/weapon/storage/fancy/whitecandle_box + name = "white candle pack" + desc = "A pack of white candles." + icon = 'icons/obj/candle.dmi' + icon_state = "whitecandlebox5" + icon_type = "whitecandle" + item_state = "whitecandlebox5" + throwforce = 2 + slot_flags = SLOT_BELT + starts_with = list(/obj/item/weapon/flame/candle/white = 5) + +/obj/item/weapon/storage/fancy/blackcandle_box + name = "black candle pack" + desc = "A pack of black candles." + icon = 'icons/obj/candle.dmi' + icon_state = "blackcandlebox5" + icon_type = "blackcandle" + item_state = "blackcandlebox5" + throwforce = 2 + slot_flags = SLOT_BELT + starts_with = list(/obj/item/weapon/flame/candle/black = 5) + + /* * Crayon Box */ @@ -92,7 +115,7 @@ /obj/item/weapon/pen/crayon/purple ) -/obj/item/weapon/storage/fancy/crayons/initialize() +/obj/item/weapon/storage/fancy/crayons/Initialize() . = ..() update_icon() @@ -134,7 +157,7 @@ /obj/item/weapon/pen/crayon/marker/purple ) -/obj/item/weapon/storage/fancy/markers/initialize() +/obj/item/weapon/storage/fancy/markers/Initialize() . = ..() update_icon() @@ -169,12 +192,12 @@ throwforce = 2 slot_flags = SLOT_BELT storage_slots = 6 - can_hold = list(/obj/item/clothing/mask/smokable/cigarette, /obj/item/weapon/flame/lighter) + can_hold = list(/obj/item/clothing/mask/smokable/cigarette, /obj/item/weapon/flame/lighter, /obj/item/weapon/cigbutt) icon_type = "cigarette" starts_with = list(/obj/item/clothing/mask/smokable/cigarette = 6) var/brand = "\improper Trans-Stellar Duty-free" -/obj/item/weapon/storage/fancy/cigarettes/initialize() +/obj/item/weapon/storage/fancy/cigarettes/Initialize() . = ..() flags |= NOREACT create_reagents(15 * storage_slots)//so people can inject cigarettes without opening a packet, now with being able to inject the whole one @@ -276,11 +299,11 @@ throwforce = 2 slot_flags = SLOT_BELT storage_slots = 7 - can_hold = list(/obj/item/clothing/mask/smokable/cigarette/cigar) + can_hold = list(/obj/item/clothing/mask/smokable/cigarette/cigar, /obj/item/weapon/cigbutt/cigarbutt) icon_type = "cigar" starts_with = list(/obj/item/clothing/mask/smokable/cigarette/cigar = 7) -/obj/item/weapon/storage/fancy/cigar/initialize() +/obj/item/weapon/storage/fancy/cigar/Initialize() . = ..() flags |= NOREACT create_reagents(15 * storage_slots) @@ -332,7 +355,7 @@ storage_slots = 6 req_access = list(access_virology) -/obj/item/weapon/storage/lockbox/vials/initialize() +/obj/item/weapon/storage/lockbox/vials/Initialize() . = ..() update_icon() @@ -377,7 +400,7 @@ /obj/item/weapon/reagent_containers/food/snacks/chocolatepiece/truffle ) -/obj/item/weapon/storage/fancy/heartbox/initialize() +/obj/item/weapon/storage/fancy/heartbox/Initialize() . = ..() update_icon() diff --git a/code/game/objects/items/weapons/storage/firstaid.dm b/code/game/objects/items/weapons/storage/firstaid.dm index d6aabf718f..d436af1936 100644 --- a/code/game/objects/items/weapons/storage/firstaid.dm +++ b/code/game/objects/items/weapons/storage/firstaid.dm @@ -17,7 +17,7 @@ max_storage_space = ITEMSIZE_COST_SMALL * 7 // 14 // var/list/icon_variety // VOREStation edit -/obj/item/weapon/storage/firstaid/initialize() +/obj/item/weapon/storage/firstaid/Initialize() . = ..() // if(icon_variety) // VOREStation edit // icon_state = pick(icon_variety) diff --git a/code/game/objects/items/weapons/storage/misc.dm b/code/game/objects/items/weapons/storage/misc.dm index d103fbc6ef..9dca5c3edd 100644 --- a/code/game/objects/items/weapons/storage/misc.dm +++ b/code/game/objects/items/weapons/storage/misc.dm @@ -11,7 +11,7 @@ foldable = /obj/item/stack/material/cardboard starts_with = list(/obj/item/weapon/reagent_containers/food/snacks/donut/normal = 6) -/obj/item/weapon/storage/box/donut/initialize() +/obj/item/weapon/storage/box/donut/Initialize() . = ..() update_icon() diff --git a/code/game/objects/items/weapons/storage/storage.dm b/code/game/objects/items/weapons/storage/storage.dm index 8d17a1a5c7..f400f87bb3 100644 --- a/code/game/objects/items/weapons/storage/storage.dm +++ b/code/game/objects/items/weapons/storage/storage.dm @@ -527,7 +527,7 @@ for(var/obj/item/I in contents) remove_from_storage(I, T) -/obj/item/weapon/storage/initialize() +/obj/item/weapon/storage/Initialize() . = ..() if(allow_quick_empty) diff --git a/code/game/objects/items/weapons/storage/toolbox.dm b/code/game/objects/items/weapons/storage/toolbox.dm index 7989c53f1d..8edc046972 100644 --- a/code/game/objects/items/weapons/storage/toolbox.dm +++ b/code/game/objects/items/weapons/storage/toolbox.dm @@ -4,7 +4,6 @@ icon = 'icons/obj/storage.dmi' icon_state = "red" item_state_slots = list(slot_r_hand_str = "toolbox_red", slot_l_hand_str = "toolbox_red") - flags = CONDUCT force = 10 throwforce = 10 throw_speed = 1 @@ -24,7 +23,7 @@ /obj/item/weapon/extinguisher/mini, /obj/item/device/radio ) -/obj/item/weapon/storage/toolbox/emergency/initialize() +/obj/item/weapon/storage/toolbox/emergency/Initialize() if(prob(50)) new /obj/item/device/flashlight(src) else @@ -56,7 +55,7 @@ /obj/item/stack/cable_coil/random_belt, /obj/item/stack/cable_coil/random_belt ) -/obj/item/weapon/storage/toolbox/electrical/initialize() +/obj/item/weapon/storage/toolbox/electrical/Initialize() . = ..() if(prob(5)) new /obj/item/clothing/gloves/yellow(src) @@ -102,7 +101,7 @@ var/filled = FALSE attack_verb = list("lunched") -/obj/item/weapon/storage/toolbox/lunchbox/initialize() +/obj/item/weapon/storage/toolbox/lunchbox/Initialize() if(filled) var/list/lunches = lunchables_lunches() var/lunch = lunches[pick(lunches)] diff --git a/code/game/objects/items/weapons/storage/uplink_kits.dm b/code/game/objects/items/weapons/storage/uplink_kits.dm index c66da84712..4291752587 100644 --- a/code/game/objects/items/weapons/storage/uplink_kits.dm +++ b/code/game/objects/items/weapons/storage/uplink_kits.dm @@ -1,4 +1,4 @@ -/obj/item/weapon/storage/box/syndicate/initialize() +/obj/item/weapon/storage/box/syndicate/Initialize() switch (pickweight(list("bloodyspai" = 1, "stealth" = 1, "screwed" = 1, "guns" = 1, "murder" = 1, "freedom" = 1, "hacker" = 1, "lordsingulo" = 1, "smoothoperator" = 1))) if("bloodyspai") new /obj/item/clothing/under/chameleon(src) @@ -70,7 +70,7 @@ /obj/item/weapon/storage/box/syndie_kit/imp_freedom name = "boxed freedom implant (with injector)" -/obj/item/weapon/storage/box/syndie_kit/imp_freedom/initialize() +/obj/item/weapon/storage/box/syndie_kit/imp_freedom/Initialize() var/obj/item/weapon/implanter/O = new(src) O.imp = new /obj/item/weapon/implant/freedom(O) O.update() @@ -87,7 +87,7 @@ /obj/item/weapon/storage/box/syndie_kit/imp_uplink name = "boxed uplink implant (with injector)" -/obj/item/weapon/storage/box/syndie_kit/imp_uplink/initialize() +/obj/item/weapon/storage/box/syndie_kit/imp_uplink/Initialize() var/obj/item/weapon/implanter/O = new(src) O.imp = new /obj/item/weapon/implant/uplink(O) O.update() @@ -157,7 +157,7 @@ name = "\improper Tricky smokes" desc = "Comes with the following brands of cigarettes, in this order: 2xFlash, 2xSmoke, 1xMindBreaker, 1xTricordrazine. Avoid mixing them up." -/obj/item/weapon/storage/box/syndie_kit/cigarette/initialize() +/obj/item/weapon/storage/box/syndie_kit/cigarette/Initialize() . = ..() var/obj/item/weapon/storage/fancy/cigarettes/pack diff --git a/code/game/objects/items/weapons/stunbaton.dm b/code/game/objects/items/weapons/stunbaton.dm index e37b2f9977..53c092d923 100644 --- a/code/game/objects/items/weapons/stunbaton.dm +++ b/code/game/objects/items/weapons/stunbaton.dm @@ -269,9 +269,8 @@ /obj/item/weapon/melee/baton/shocker/apply_hit_effect(mob/living/target, mob/living/user, var/hit_zone) ..(target, user, hit_zone) - if(istype(target, /mob/living/simple_animal) && status) - var/mob/living/simple_animal/SA = target - SA.taunt(user) + if(status && target.has_AI()) + target.taunt(user) // Borg version, for the lost module. /obj/item/weapon/melee/baton/shocker/robot diff --git a/code/game/objects/items/weapons/surgery_tools.dm b/code/game/objects/items/weapons/surgery_tools.dm index 50468951a4..f011cd917b 100644 --- a/code/game/objects/items/weapons/surgery_tools.dm +++ b/code/game/objects/items/weapons/surgery_tools.dm @@ -13,7 +13,6 @@ desc = "This shouldn't be here, ahelp it." icon = 'icons/obj/surgery.dmi' w_class = ITEMSIZE_SMALL - flags = CONDUCT var/helpforce = 0 //For help intent things /obj/item/weapon/surgical/attack(mob/M, mob/user) @@ -92,7 +91,7 @@ origin_tech = list(TECH_MATERIAL = 1, TECH_BIO = 1) matter = list(DEFAULT_WALL_MATERIAL = 10000, "glass" = 5000) attack_verb = list("attacked", "slashed", "stabbed", "sliced", "torn", "ripped", "diced", "cut") - + suicide_act(mob/user) var/datum/gender/TU = gender_datums[user.get_visible_gender()] viewers(user) << pick("\The [user] is slitting [TU.his] wrists with the [src.name]! It looks like [TU.hes] trying to commit suicide.", \ diff --git a/code/game/objects/items/weapons/tanks/jetpack.dm b/code/game/objects/items/weapons/tanks/jetpack.dm index 736d2919ff..9200d58820 100644 --- a/code/game/objects/items/weapons/tanks/jetpack.dm +++ b/code/game/objects/items/weapons/tanks/jetpack.dm @@ -83,7 +83,7 @@ icon_state = "jetpack-void" item_state_slots = list(slot_r_hand_str = "jetpack-void", slot_l_hand_str = "jetpack-void") -/obj/item/weapon/tank/jetpack/void/New() +/obj/item/weapon/tank/jetpack/void/Initialize() ..() air_contents.adjust_gas("oxygen", (6*ONE_ATMOSPHERE)*volume/(R_IDEAL_GAS_EQUATION*T20C)) return @@ -94,7 +94,7 @@ icon_state = "jetpack" item_state_slots = list(slot_r_hand_str = "jetpack", slot_l_hand_str = "jetpack") -/obj/item/weapon/tank/jetpack/oxygen/New() +/obj/item/weapon/tank/jetpack/oxygen/Initialize() ..() air_contents.adjust_gas("oxygen", (6*ONE_ATMOSPHERE)*volume/(R_IDEAL_GAS_EQUATION*T20C)) return @@ -106,7 +106,7 @@ icon_state = "jetpack-black" item_state_slots = list(slot_r_hand_str = "jetpack-black", slot_l_hand_str = "jetpack-black") -/obj/item/weapon/tank/jetpack/carbondioxide/New() +/obj/item/weapon/tank/jetpack/carbondioxide/Initialize() ..() air_contents.adjust_gas("carbon_dioxide", (6*ONE_ATMOSPHERE)*volume/(R_IDEAL_GAS_EQUATION*T20C)) return diff --git a/code/game/objects/items/weapons/tanks/tank_types.dm b/code/game/objects/items/weapons/tanks/tank_types.dm index efacad4942..6308759044 100644 --- a/code/game/objects/items/weapons/tanks/tank_types.dm +++ b/code/game/objects/items/weapons/tanks/tank_types.dm @@ -16,14 +16,14 @@ icon_state = "oxygen" distribute_pressure = ONE_ATMOSPHERE*O2STANDARD -/obj/item/weapon/tank/oxygen/New() - ..() - air_contents.adjust_gas("oxygen", (6*ONE_ATMOSPHERE)*volume/(R_IDEAL_GAS_EQUATION*T20C)) - return +/obj/item/weapon/tank/oxygen/Initialize() + ..() + air_contents.adjust_gas("oxygen", (6*ONE_ATMOSPHERE)*volume/(R_IDEAL_GAS_EQUATION*T20C)) + return /obj/item/weapon/tank/oxygen/examine(mob/user) if(..(user, 0) && air_contents.gas["oxygen"] < 10) - user << text("The meter on \the [src] indicates you are almost out of oxygen!") + to_chat(user, text("The meter on \the [src] indicates you are almost out of oxygen!")) //playsound(usr, 'sound/effects/alert.ogg', 50, 1) /obj/item/weapon/tank/oxygen/yellow @@ -42,7 +42,7 @@ desc = "A tank with an N2O/O2 gas mix." icon_state = "anesthetic" -/obj/item/weapon/tank/anesthetic/New() +/obj/item/weapon/tank/anesthetic/Initialize() ..() air_contents.gas["oxygen"] = (3*ONE_ATMOSPHERE)*70/(R_IDEAL_GAS_EQUATION*T20C) * O2STANDARD @@ -61,10 +61,10 @@ /obj/item/weapon/tank/air/examine(mob/user) if(..(user, 0) && air_contents.gas["oxygen"] < 1 && loc==user) - user << "The meter on the [src.name] indicates you are almost out of air!" + to_chat(user, "The meter on the [src.name] indicates you are almost out of air!") user << sound('sound/effects/alert.ogg') -/obj/item/weapon/tank/air/New() +/obj/item/weapon/tank/air/Initialize() ..() src.air_contents.adjust_multi("oxygen", (6*ONE_ATMOSPHERE)*volume/(R_IDEAL_GAS_EQUATION*T20C) * O2STANDARD, "nitrogen", (6*ONE_ATMOSPHERE)*volume/(R_IDEAL_GAS_EQUATION*T20C) * N2STANDARD) @@ -79,10 +79,9 @@ desc = "Contains dangerous phoron. Do not inhale. Warning: extremely flammable." icon_state = "phoron" gauge_icon = null - flags = CONDUCT slot_flags = null //they have no straps! -/obj/item/weapon/tank/phoron/New() +/obj/item/weapon/tank/phoron/Initialize() ..() src.air_contents.adjust_gas("phoron", (3*ONE_ATMOSPHERE)*70/(R_IDEAL_GAS_EQUATION*T20C)) @@ -105,11 +104,10 @@ desc = "Contains dangerous phoron. Do not inhale. Warning: extremely flammable." icon_state = "phoron_vox" gauge_icon = null - flags = CONDUCT distribute_pressure = ONE_ATMOSPHERE*O2STANDARD slot_flags = SLOT_BACK //these ones have straps! -/obj/item/weapon/tank/vox/New() +/obj/item/weapon/tank/vox/Initialize() ..() air_contents.adjust_gas("phoron", (6*ONE_ATMOSPHERE)*volume/(R_IDEAL_GAS_EQUATION*T20C)) @@ -124,7 +122,6 @@ icon_state = "emergency" gauge_icon = "indicator_emergency" gauge_cap = 4 - flags = CONDUCT slot_flags = SLOT_BELT w_class = ITEMSIZE_SMALL force = 4 @@ -137,15 +134,14 @@ icon_state = "emergency" gauge_icon = "indicator_emergency" -/obj/item/weapon/tank/emergency/oxygen/New() - ..() - src.air_contents.adjust_gas("oxygen", (3*ONE_ATMOSPHERE)*volume/(R_IDEAL_GAS_EQUATION*T20C)) - - return +/obj/item/weapon/tank/emergency/oxygen/Initialize() + ..() + src.air_contents.adjust_gas("oxygen", (10*ONE_ATMOSPHERE)*volume/(R_IDEAL_GAS_EQUATION*T20C)) + return /obj/item/weapon/tank/emergency/oxygen/examine(mob/user) if(..(user, 0) && air_contents.gas["oxygen"] < 0.2 && loc==user) - user << text("The meter on the [src.name] indicates you are almost out of air!") + to_chat(user, text("The meter on the [src.name] indicates you are almost out of air!")) user << sound('sound/effects/alert.ogg') /obj/item/weapon/tank/emergency/oxygen/engi @@ -159,15 +155,27 @@ gauge_icon = "indicator_emergency_double" volume = 10 +/obj/item/weapon/tank/stasis/oxygen // Stasis bags need to have initial pressure within safe bounds for human atmospheric pressure (NOT breath pressure) + name = "stasis oxygen tank" + desc = "Oxygen tank included in most stasis bag designs." + icon_state = "emergency_double" + gauge_icon = "indicator_emergency_double" + volume = 10 + +/obj/item/weapon/tank/stasis/oxygen/Initialize() + ..() + src.air_contents.adjust_gas("oxygen", (3*ONE_ATMOSPHERE)*volume/(R_IDEAL_GAS_EQUATION*T20C)) + return + /obj/item/weapon/tank/emergency/nitrogen name = "emergency nitrogen tank" desc = "An emergency air tank hastily painted red." icon_state = "emergency_nitro" gauge_icon = "indicator_emergency" -/obj/item/weapon/tank/emergency/nitrogen/New() +/obj/item/weapon/tank/emergency/nitrogen/Initialize() ..() - src.air_contents.adjust_gas("nitrogen", (3*ONE_ATMOSPHERE)*volume/(R_IDEAL_GAS_EQUATION*T20C)) + src.air_contents.adjust_gas("nitrogen", (10*ONE_ATMOSPHERE)*volume/(R_IDEAL_GAS_EQUATION*T20C)) /obj/item/weapon/tank/emergency/nitrogen/double name = "double emergency nitrogen tank" @@ -181,9 +189,9 @@ icon_state = "emergency_nitro" gauge_icon = "indicator_emergency" -/obj/item/weapon/tank/emergency/phoron/New() +/obj/item/weapon/tank/emergency/phoron/Initialize() ..() - src.air_contents.adjust_gas("phoron", (3*ONE_ATMOSPHERE)*volume/(R_IDEAL_GAS_EQUATION*T20C)) + src.air_contents.adjust_gas("phoron", (10*ONE_ATMOSPHERE)*volume/(R_IDEAL_GAS_EQUATION*T20C)) /obj/item/weapon/tank/emergency/phoron/double name = "double emergency phoron tank" @@ -200,7 +208,7 @@ icon_state = "oxygen_fr" distribute_pressure = ONE_ATMOSPHERE*O2STANDARD -/obj/item/weapon/tank/nitrogen/New() +/obj/item/weapon/tank/nitrogen/Initialize() ..() src.air_contents.adjust_gas("nitrogen", (3*ONE_ATMOSPHERE)*70/(R_IDEAL_GAS_EQUATION*T20C)) @@ -208,5 +216,5 @@ /obj/item/weapon/tank/nitrogen/examine(mob/user) if(..(user, 0) && air_contents.gas["nitrogen"] < 10) - user << text("The meter on \the [src] indicates you are almost out of nitrogen!") + to_chat(user, text("The meter on \the [src] indicates you are almost out of nitrogen!")) //playsound(user, 'sound/effects/alert.ogg', 50, 1) diff --git a/code/game/objects/items/weapons/tanks/tanks.dm b/code/game/objects/items/weapons/tanks/tanks.dm index aab34d8f82..0962eef6f3 100644 --- a/code/game/objects/items/weapons/tanks/tanks.dm +++ b/code/game/objects/items/weapons/tanks/tanks.dm @@ -15,7 +15,6 @@ var/list/global/tank_gauge_cache = list() var/last_gauge_pressure var/gauge_cap = 6 - flags = CONDUCT slot_flags = SLOT_BACK w_class = ITEMSIZE_NORMAL @@ -42,14 +41,14 @@ var/list/global/tank_gauge_cache = list() description_info = "These tanks are utilised to store any of the various types of gaseous substances. \ They can be attached to various portable atmospheric devices to be filled or emptied.
\
\ - Each tank is fitted with an emergency relief valve. This relief valve will open if the tank is pressurised to over ~3000kPa or heated to over 173ºC. \ + Each tank is fitted with an emergency relief valve. This relief valve will open if the tank is pressurised to over ~3000kPa or heated to over 173�C. \ The valve itself will close after expending most or all of the contents into the air.
\
\ Filling a tank such that experiences ~4000kPa of pressure will cause the tank to rupture, spilling out its contents and destroying the tank. \ Tanks filled over ~5000kPa will rupture rather violently, exploding with significant force." - description_antag = "Each tank may be incited to burn by attaching wires and an igniter assembly, though the igniter can only be used once and the mixture only burn if the igniter pushes a flammable gas mixture above the minimum burn temperature (126ºC). \ - Wired and assembled tanks may be disarmed with a set of wirecutters. Any exploding or rupturing tank will generate shrapnel, assuming their relief valves have been welded beforehand. Even if not, they can be incited to expel hot gas on ignition if pushed above 173ºC. \ + description_antag = "Each tank may be incited to burn by attaching wires and an igniter assembly, though the igniter can only be used once and the mixture only burn if the igniter pushes a flammable gas mixture above the minimum burn temperature (126�C). \ + Wired and assembled tanks may be disarmed with a set of wirecutters. Any exploding or rupturing tank will generate shrapnel, assuming their relief valves have been welded beforehand. Even if not, they can be incited to expel hot gas on ignition if pushed above 173�C. \ Relatively easy to make, the single tank bomb requries no tank transfer valve, and is still a fairly formidable weapon that can be manufactured from any tank." /obj/item/weapon/tank/proc/init_proxy() @@ -58,21 +57,21 @@ var/list/global/tank_gauge_cache = list() src.proxyassembly = proxy -/obj/item/weapon/tank/New() +/obj/item/weapon/tank/Initialize() ..() src.init_proxy() src.air_contents = new /datum/gas_mixture() src.air_contents.volume = volume //liters src.air_contents.temperature = T20C - processing_objects.Add(src) + START_PROCESSING(SSobj, src) update_gauge() return /obj/item/weapon/tank/Destroy() QDEL_NULL(air_contents) - processing_objects.Remove(src) + STOP_PROCESSING(SSobj, src) QDEL_NULL(src.proxyassembly) if(istype(loc, /obj/item/device/transfer_valve)) @@ -464,7 +463,7 @@ var/list/global/tank_gauge_cache = list() if(!T) return T.assume_air(air_contents) - playsound(get_turf(src), 'sound/weapons/shotgun.ogg', 20, 1) + playsound(get_turf(src), 'sound/weapons/Gunshot_shotgun.ogg', 20, 1) visible_message("\icon[src] \The [src] flies apart!", "You hear a bang!") T.hotspot_expose(air_contents.temperature, 70, 1) @@ -503,7 +502,7 @@ var/list/global/tank_gauge_cache = list() var/release_ratio = 0.002 if(tank_pressure) - release_ratio = Clamp(0.002, sqrt(max(tank_pressure-env_pressure,0)/tank_pressure),1) + release_ratio = CLAMP(0.002, sqrt(max(tank_pressure-env_pressure,0)/tank_pressure),1) var/datum/gas_mixture/leaked_gas = air_contents.remove_ratio(release_ratio) //dynamic air release based on ambient pressure diff --git a/code/game/objects/items/weapons/teleportation.dm b/code/game/objects/items/weapons/teleportation.dm index 6ead332a1a..63074e7e76 100644 --- a/code/game/objects/items/weapons/teleportation.dm +++ b/code/game/objects/items/weapons/teleportation.dm @@ -16,7 +16,6 @@ var/frequency = 1451 var/broadcasting = null var/listening = 1.0 - flags = CONDUCT w_class = ITEMSIZE_SMALL item_state = "electronic" throw_speed = 4 @@ -138,7 +137,16 @@ Frequency: return var/list/L = list( ) for(var/obj/machinery/teleport/hub/R in machines) - var/obj/machinery/computer/teleporter/com = locate(/obj/machinery/computer/teleporter, locate(R.x - 2, R.y, R.z)) + var/obj/machinery/computer/teleporter/com + var/obj/machinery/teleport/station/station + for(var/direction in cardinal) + station = locate(/obj/machinery/teleport/station, get_step(R, direction)) + if(station) + for(direction in cardinal) + com = locate(/obj/machinery/computer/teleporter, get_step(station, direction)) + if(com) + break + break if (istype(com, /obj/machinery/computer/teleporter) && com.locked && !com.one_time_use) if(R.icon_state == "tele1") L["[com.id] (Active)"] = com.locked diff --git a/code/game/objects/items/weapons/tools/crowbar.dm b/code/game/objects/items/weapons/tools/crowbar.dm index 721f5e30c9..477815e62f 100644 --- a/code/game/objects/items/weapons/tools/crowbar.dm +++ b/code/game/objects/items/weapons/tools/crowbar.dm @@ -7,7 +7,6 @@ desc = "Used to remove floors and to pry open doors." icon = 'icons/obj/tools.dmi' icon_state = "crowbar" - flags = CONDUCT slot_flags = SLOT_BELT force = 6 throwforce = 7 @@ -28,9 +27,24 @@ icon_state = "red_crowbar" item_state = "crowbar_red" + +/datum/category_item/catalogue/anomalous/precursor_a/alien_crowbar + name = "Precursor Alpha Object - Hard Light Pry Tool" + desc = "An object which bears striking resemblence to the common crowbar. \ + It appears to also serve a similar purpose, being used for prying. Unlike \ + a crowbar, however, this object is made of some form of 'hard light'.\ +

\ + There is a visible switch on the base of the tool, which controls the \ + hard light side of the tool. When the switch is used, the shape of \ + the tool changes, with the hard light moving and making a prying motion. \ + This allows the user to pry something with no physical effort beyond keeping \ + the tool aligned while in use." + value = CATALOGUER_REWARD_EASY + /obj/item/weapon/tool/crowbar/alien name = "alien crowbar" desc = "A hard-light crowbar. It appears to pry by itself, without any effort required." + catalogue_data = list(/datum/category_item/catalogue/anomalous/precursor_a/alien_crowbar) icon = 'icons/obj/abductor.dmi' usesound = 'sound/weapons/sonic_jackhammer.ogg' icon_state = "crowbar" diff --git a/code/game/objects/items/weapons/tools/crowbar_vr.dm b/code/game/objects/items/weapons/tools/crowbar_vr.dm index 49cbfa63a9..51e0755f8a 100644 --- a/code/game/objects/items/weapons/tools/crowbar_vr.dm +++ b/code/game/objects/items/weapons/tools/crowbar_vr.dm @@ -7,7 +7,6 @@ desc = "A steel bar with a wedge, designed specifically for opening unpowered doors in an emergency. It comes in a variety of configurations - collect them all!" icon = 'icons/obj/tools_vr.dmi' icon_state = "prybar" - flags = CONDUCT slot_flags = SLOT_BELT force = 4 throwforce = 5 diff --git a/code/game/objects/items/weapons/tools/screwdriver.dm b/code/game/objects/items/weapons/tools/screwdriver.dm index 86ac8f1267..cb6a7f7c90 100644 --- a/code/game/objects/items/weapons/tools/screwdriver.dm +++ b/code/game/objects/items/weapons/tools/screwdriver.dm @@ -6,7 +6,6 @@ desc = "You can be totally screwwy with this." icon = 'icons/obj/tools.dmi' icon_state = "screwdriver" - flags = CONDUCT slot_flags = SLOT_BELT | SLOT_EARS force = 6 w_class = ITEMSIZE_TINY @@ -68,9 +67,24 @@ /obj/item/weapon/tool/screwdriver/is_screwdriver() return TRUE + +/datum/category_item/catalogue/anomalous/precursor_a/alien_screwdriver + name = "Precursor Alpha Object - Hard Light Torgue Tool" + desc = "This appears to be a tool, with a solid handle, and a thin hard light \ + shaft, with a tip at the end. On the handle appears to be two mechanisms that \ + causes the hard light section to spin at a high speed while held down, in a \ + similar fashion as an electric drill. One makes it spin clockwise, the other \ + counter-clockwise.\ +

\ + The hard light tip is able to shift its shape to a degree when pressed into \ + a solid receptacle. This allows it to be able to function on many kinds of \ + fastener, which includes the screws." + value = CATALOGUER_REWARD_EASY + /obj/item/weapon/tool/screwdriver/alien name = "alien screwdriver" desc = "An ultrasonic screwdriver." + catalogue_data = list(/datum/category_item/catalogue/anomalous/precursor_a/alien_screwdriver) icon = 'icons/obj/abductor.dmi' icon_state = "screwdriver_a" item_state = "screwdriver_black" @@ -122,4 +136,4 @@ counterpart.forceMove(get_turf(src)) src.forceMove(counterpart) user.put_in_active_hand(counterpart) - to_chat(user, "You attach the bolt driver bit to [src].") \ No newline at end of file + to_chat(user, "You attach the bolt driver bit to [src].") diff --git a/code/game/objects/items/weapons/tools/weldingtool.dm b/code/game/objects/items/weapons/tools/weldingtool.dm index f4ed52ad4d..8dc3496d1a 100644 --- a/code/game/objects/items/weapons/tools/weldingtool.dm +++ b/code/game/objects/items/weapons/tools/weldingtool.dm @@ -7,7 +7,6 @@ icon = 'icons/obj/tools.dmi' icon_state = "welder" item_state = "welder" - flags = CONDUCT slot_flags = SLOT_BELT //Amount of OUCH when it's thrown @@ -39,7 +38,8 @@ var/always_process = FALSE // If true, keeps the welder on the process list even if it's off. Used for when it needs to regenerate fuel. toolspeed = 1 -/obj/item/weapon/weldingtool/New() +/obj/item/weapon/weldingtool/Initialize() + . = ..() // var/random_fuel = min(rand(10,20),max_fuel) var/datum/reagents/R = new/datum/reagents(max_fuel) reagents = R @@ -47,12 +47,11 @@ R.add_reagent("fuel", max_fuel) update_icon() if(always_process) - processing_objects |= src - ..() + START_PROCESSING(SSobj, src) /obj/item/weapon/weldingtool/Destroy() if(welding || always_process) - processing_objects -= src + STOP_PROCESSING(SSobj, src) return ..() /obj/item/weapon/weldingtool/examine(mob/user) @@ -60,7 +59,7 @@ if(max_fuel) to_chat(user, text("\icon[] The [] contains []/[] units of fuel!", src, src.name, get_fuel(),src.max_fuel )) -/obj/item/weapon/weldingtool/attack(var/atom/A, var/mob/living/user, var/def_zone) +/obj/item/weapon/weldingtool/attack(atom/A, mob/living/user, def_zone) if(ishuman(A) && user.a_intent == I_HELP) var/mob/living/carbon/human/H = A var/obj/item/organ/external/S = H.organs_by_name[user.zone_sel.selecting] @@ -115,18 +114,13 @@ ..() return - /obj/item/weapon/weldingtool/process() if(welding) ++burned_fuel_for if(burned_fuel_for >= WELDER_FUEL_BURN_INTERVAL) remove_fuel(1) - - - if(get_fuel() < 1) setWelding(0) - //I'm not sure what this does. I assume it has to do with starting fires... //...but it doesnt check to see if the welder is on or not. var/turf/location = src.loc @@ -137,7 +131,6 @@ if (istype(location, /turf)) location.hotspot_expose(700, 5) - /obj/item/weapon/weldingtool/afterattack(obj/O as obj, mob/user as mob, proximity) if(!proximity) return if (istype(O, /obj/structure/reagent_dispensers/fueltank) && get_dist(src,O) <= 1) @@ -164,12 +157,8 @@ L.IgniteMob() if (istype(location, /turf)) location.hotspot_expose(700, 50, 1) - return - - -/obj/item/weapon/weldingtool/attack_self(mob/user as mob) - setWelding(!welding, usr) - return +/obj/item/weapon/weldingtool/attack_self(mob/user) + setWelding(!welding, user) //Returns the amount of fuel in the welder /obj/item/weapon/weldingtool/proc/get_fuel() @@ -198,7 +187,7 @@ //Returns whether or not the welding tool is currently on. /obj/item/weapon/weldingtool/proc/isOn() - return src.welding + return welding /obj/item/weapon/weldingtool/update_icon() ..() @@ -214,7 +203,7 @@ // Fuel counter overlay. if(change_icons && get_max_fuel()) var/ratio = get_fuel() / get_max_fuel() - ratio = Ceiling(ratio*4) * 25 + ratio = CEILING(ratio * 4, 1) * 25 var/image/I = image(icon, src, "[icon_state][ratio]") overlays.Add(I) @@ -283,7 +272,7 @@ welding = 1 update_icon() if(!always_process) - processing_objects |= src + START_PROCESSING(SSobj, src) else if(M) var/msg = max_fuel ? "welding fuel" : "charge" @@ -292,7 +281,7 @@ //Otherwise else if(!set_welding && welding) if(!always_process) - processing_objects -= src + STOP_PROCESSING(SSobj, src) if(M) to_chat(M, "You switch \the [src] off.") else if(T) @@ -386,9 +375,34 @@ toolspeed = 2 eye_safety_modifier = 1 // Safer on eyes. +/datum/category_item/catalogue/anomalous/precursor_a/alien_welder + name = "Precursor Alpha Object - Self Refueling Exothermic Tool" + desc = "An unwieldly tool which somewhat resembles a weapon, due to \ + having a prominent trigger attached to the part which would presumably \ + have been held by whatever had created this object. When the trigger is \ + held down, a small but very high temperature flame shoots out from the \ + tip of the tool. The grip is able to be held by human hands, however the \ + shape makes it somewhat awkward to hold.\ +

\ + The tool appears to utilize an unknown fuel to light and maintain the \ + flame. What is more unusual, is that the fuel appears to replenish itself. \ + How it does this is not known presently, however experimental human-made \ + welders have been known to have a similar quality.\ +

\ + Interestingly, the flame is able to cut through a wide array of materials, \ + such as iron, steel, stone, lead, plasteel, and even durasteel. Yet, it is unable \ + to cut the unknown material that itself and many other objects made by this \ + precursor civilization have made. This raises questions on the properties of \ + that material, and how difficult it would have been to work with. This tool \ + does demonstrate, however, that the alien fuel cannot melt precursor beams, walls, \ + or other structual elements, making it rather limited for their \ + deconstruction purposes." + value = CATALOGUER_REWARD_EASY + /obj/item/weapon/weldingtool/alien name = "alien welding tool" desc = "An alien welding tool. Whatever fuel it uses, it never runs out." + catalogue_data = list(/datum/category_item/catalogue/anomalous/precursor_a/alien_welder) icon = 'icons/obj/abductor.dmi' icon_state = "welder" toolspeed = 0.1 @@ -609,4 +623,4 @@ /obj/item/weapon/weldingtool/electric/mounted/cyborg toolspeed = 0.5 -#undef WELDER_FUEL_BURN_INTERVAL +#undef WELDER_FUEL_BURN_INTERVAL \ No newline at end of file diff --git a/code/game/objects/items/weapons/tools/wirecutters.dm b/code/game/objects/items/weapons/tools/wirecutters.dm index eb8b940c92..f53225ab41 100644 --- a/code/game/objects/items/weapons/tools/wirecutters.dm +++ b/code/game/objects/items/weapons/tools/wirecutters.dm @@ -6,7 +6,6 @@ desc = "This cuts wires." icon = 'icons/obj/tools.dmi' icon_state = "cutters" - flags = CONDUCT slot_flags = SLOT_BELT force = 6 throw_speed = 2 @@ -44,9 +43,24 @@ /obj/item/weapon/tool/wirecutters/is_wirecutter() return TRUE + +/datum/category_item/catalogue/anomalous/precursor_a/alien_wirecutters + name = "Precursor Alpha Object - Wire Seperator" + desc = "An object appearing to have a tool shape. It has two handles, and two \ + sides which are attached to each other in the center. At the end on each side \ + is a sharp cutting edge, made from a seperate material than the rest of the \ + tool.\ +

\ + This tool appears to serve the same purpose as conventional wirecutters, due \ + to how similar the shapes are. If so, this implies that the creators of this \ + object also may utilize flexible cylindrical strands of metal to transmit \ + energy and signals, just as humans do." + value = CATALOGUER_REWARD_EASY + /obj/item/weapon/tool/wirecutters/alien name = "alien wirecutters" desc = "Extremely sharp wirecutters, made out of a silvery-green metal." + catalogue_data = list(/datum/category_item/catalogue/anomalous/precursor_a/alien_wirecutters) icon = 'icons/obj/abductor.dmi' icon_state = "cutters" toolspeed = 0.1 diff --git a/code/game/objects/items/weapons/tools/wrench.dm b/code/game/objects/items/weapons/tools/wrench.dm index e0a6957c3c..7b1ab6a07c 100644 --- a/code/game/objects/items/weapons/tools/wrench.dm +++ b/code/game/objects/items/weapons/tools/wrench.dm @@ -6,7 +6,6 @@ desc = "A wrench with many common uses. Can be usually found in your hand." icon = 'icons/obj/tools.dmi' icon_state = "wrench" - flags = CONDUCT slot_flags = SLOT_BELT force = 6 throwforce = 7 @@ -26,9 +25,26 @@ usesound = 'sound/items/drill_use.ogg' toolspeed = 0.5 + +/datum/category_item/catalogue/anomalous/precursor_a/alien_wrench + name = "Precursor Alpha Object - Fastener Torque Tool" + desc = "This is an object that has a distinctive tool shape. \ + It has a handle on one end, with a simple mechanism attached to it. \ + On the other end is the head of the tool, with two sides each glowing \ + a different color. The head opens up towards the top, in a similar shape \ + as a conventional wrench.\ +

\ + When an object is placed into the head section of the tool, the tool appears \ + to force the object to be turned in a specific direction. The direction can be \ + inverted by pressing down on the mechanism on the handle. It is not known if \ + this tool was intended by its creators to tighten fasteners or if it has a less obvious \ + purpose, however it is very well suited to act in a wrench's capacity regardless." + value = CATALOGUER_REWARD_EASY + /obj/item/weapon/tool/wrench/alien name = "alien wrench" desc = "A polarized wrench. It causes anything placed between the jaws to turn." + catalogue_data = list(/datum/category_item/catalogue/anomalous/precursor_a/alien_wrench) icon = 'icons/obj/abductor.dmi' icon_state = "wrench" usesound = 'sound/effects/empulse.ogg' @@ -68,4 +84,4 @@ counterpart.forceMove(get_turf(src)) src.forceMove(counterpart) user.put_in_active_hand(counterpart) - to_chat(user, "You attach the screw driver bit to [src].") \ No newline at end of file + to_chat(user, "You attach the screw driver bit to [src].") diff --git a/code/game/objects/items/weapons/trays.dm b/code/game/objects/items/weapons/trays.dm index 8d9977cc17..21c8b635f3 100644 --- a/code/game/objects/items/weapons/trays.dm +++ b/code/game/objects/items/weapons/trays.dm @@ -11,7 +11,6 @@ throw_speed = 1 throw_range = 5 w_class = ITEMSIZE_NORMAL - flags = CONDUCT matter = list(DEFAULT_WALL_MATERIAL = 3000) var/list/carrying = list() // List of things on the tray. - Doohl var/max_carry = 10 diff --git a/code/game/objects/items/weapons/weaponry.dm b/code/game/objects/items/weapons/weaponry.dm index b5ae0912e9..65c61fce9d 100644 --- a/code/game/objects/items/weapons/weaponry.dm +++ b/code/game/objects/items/weapons/weaponry.dm @@ -106,7 +106,7 @@ /obj/effect/energy_net/New() ..() - processing_objects |= src + START_PROCESSING(SSobj, src) /obj/effect/energy_net/Destroy() if(has_buckled_mobs()) @@ -114,7 +114,7 @@ to_chat(A,"You are free of the net!") unbuckle_mob(A) - processing_objects -= src + STOP_PROCESSING(SSobj, src) return ..() /obj/effect/energy_net/process() diff --git a/code/game/objects/items/weapons/weldbackpack.dm b/code/game/objects/items/weapons/weldbackpack.dm index 0312ca55f8..5df0c9dbe3 100644 --- a/code/game/objects/items/weapons/weldbackpack.dm +++ b/code/game/objects/items/weapons/weldbackpack.dm @@ -9,7 +9,8 @@ var/obj/item/weapon/nozzle = null //Attached welder, or other spray device. var/nozzle_attached = 0 -/obj/item/weapon/weldpack/New() +/obj/item/weapon/weldpack/Initialize() + . = ..() var/datum/reagents/R = new/datum/reagents(max_fuel) //Lotsa refills reagents = R R.my_atom = src diff --git a/code/game/objects/mob_spawner_vr.dm b/code/game/objects/mob_spawner_vr.dm index e294c98053..0422c408f8 100644 --- a/code/game/objects/mob_spawner_vr.dm +++ b/code/game/objects/mob_spawner_vr.dm @@ -9,8 +9,8 @@ var/spawn_delay = 10 MINUTES var/list/spawn_types = list( - /mob/living/simple_animal/corgi = 100, - /mob/living/simple_animal/cat = 25 + /mob/living/simple_mob/animal/passive/dog/corgi = 100, + /mob/living/simple_mob/animal/passive/cat = 25 ) var/total_spawns = -1 //Total mob spawns, over all time, -1 for no limit @@ -24,11 +24,11 @@ /obj/structure/mob_spawner/New() ..() - processing_objects.Add(src) + START_PROCESSING(SSobj, src) last_spawn = world.time + rand(0,spawn_delay) /obj/structure/mob_spawner/Destroy() - processing_objects.Remove(src) + STOP_PROCESSING(SSobj, src) for(var/mob/living/L in spawned_mobs) L.source_spawner = null spawned_mobs.Cut() @@ -129,15 +129,14 @@ It also makes it so a ghost wont know where all the goodies/mobs are. ////////////// // Spawners // ///////////// - /obj/structure/mob_spawner/scanner/corgi name = "Corgi Lazy Spawner" desc = "This is a proof of concept, not sure why you would use this one" spawn_delay = 3 MINUTES mob_faction = "Corgi" spawn_types = list( - /mob/living/simple_animal/corgi = 75, - /mob/living/simple_animal/corgi/puppy = 50 + /mob/living/simple_mob/animal/passive/dog/corgi = 75, + /mob/living/simple_mob/animal/passive/dog/corgi/puppy = 50 ) simultaneous_spawns = 5 @@ -157,10 +156,10 @@ It also makes it so a ghost wont know where all the goodies/mobs are. anchored = 1 invisibility = 101 spawn_types = list( - /mob/living/simple_animal/retaliate/gaslamp = 20, - /mob/living/simple_animal/otie/feral = 10, - /mob/living/simple_animal/hostile/dino/virgo3b = 5, - /mob/living/simple_animal/hostile/dragon/virgo3b = 1 + /mob/living/simple_mob/animal/passive/gaslamp = 20, +// /mob/living/simple_mob/otie/feral = 10, + /mob/living/simple_mob/vore/aggressive/dino/virgo3b = 5, + /mob/living/simple_mob/vore/aggressive/dragon/virgo3b = 1 ) /obj/structure/mob_spawner/scanner/xenos @@ -176,10 +175,10 @@ It also makes it so a ghost wont know where all the goodies/mobs are. icon = 'icons/mob/actions.dmi' icon_state = "alien_egg" spawn_types = list( - /mob/living/simple_animal/hostile/alien/drone = 20, - /mob/living/simple_animal/hostile/alien = 10, - /mob/living/simple_animal/hostile/alien/sentinel = 5, - /mob/living/simple_animal/hostile/alien/queen = 1 + /mob/living/simple_mob/animal/space/alien/drone = 20, + /mob/living/simple_mob/animal/space/alien = 10, + /mob/living/simple_mob/animal/space/alien/sentinel = 5, + /mob/living/simple_mob/animal/space/alien/queen = 1 ) /obj/structure/mob_spawner/scanner/xenos/royal @@ -195,5 +194,5 @@ It also makes it so a ghost wont know where all the goodies/mobs are. icon = 'icons/mob/actions.dmi' icon_state = "alien_egg" spawn_types = list( - /mob/living/simple_animal/hostile/alien/queen = 5, - ) \ No newline at end of file + /mob/living/simple_mob/animal/space/alien/queen = 5, + ) diff --git a/code/game/objects/objs.dm b/code/game/objects/objs.dm index 9c2fb60434..999b5fca99 100644 --- a/code/game/objects/objs.dm +++ b/code/game/objects/objs.dm @@ -18,11 +18,29 @@ var/can_speak = 0 //For MMIs and admin trickery. If an object has a brainmob in its contents, set this to 1 to allow it to speak. var/show_examine = TRUE // Does this pop up on a mob when the mob is examined? + var/register_as_dangerous_object = FALSE // Should this tell its turf that it is dangerous automatically? + +/obj/Initialize() + if(register_as_dangerous_object) + register_dangerous_to_step() + return ..() /obj/Destroy() - processing_objects -= src + STOP_PROCESSING(SSobj, src) + if(register_as_dangerous_object) + unregister_dangerous_to_step() return ..() +/obj/Moved(atom/oldloc) + . = ..() + if(register_as_dangerous_object) + var/turf/old_turf = get_turf(oldloc) + var/turf/new_turf = get_turf(src) + + if(old_turf != new_turf) + old_turf.unregister_dangerous_object(src) + new_turf.register_dangerous_object(src) + /obj/Topic(href, href_list, var/datum/topic_state/state = default_state) if(usr && ..()) return 1 @@ -58,10 +76,6 @@ /obj/item/proc/is_used_on(obj/O, mob/user) -/obj/proc/process() - processing_objects.Remove(src) - return 0 - /obj/assume_air(datum/gas_mixture/giver) if(loc) return loc.assume_air(giver) @@ -165,4 +179,19 @@ return /obj/proc/get_cell() - return \ No newline at end of file + return + +// Used to mark a turf as containing objects that are dangerous to step onto. +/obj/proc/register_dangerous_to_step() + var/turf/T = get_turf(src) + if(T) + T.register_dangerous_object(src) + +/obj/proc/unregister_dangerous_to_step() + var/turf/T = get_turf(src) + if(T) + T.unregister_dangerous_object(src) + +// Test for if stepping on a tile containing this obj is safe to do, used for things like landmines and cliffs. +/obj/proc/is_safe_to_step(mob/living/L) + return TRUE \ No newline at end of file diff --git a/code/game/objects/random/_random.dm b/code/game/objects/random/_random.dm index 29272a7247..8a146f82c4 100644 --- a/code/game/objects/random/_random.dm +++ b/code/game/objects/random/_random.dm @@ -4,27 +4,27 @@ icon = 'icons/misc/mark.dmi' icon_state = "rup" var/spawn_nothing_percentage = 0 // this variable determines the likelyhood that this random object will not spawn anything + var/drop_get_turf = TRUE // creates a new object and deletes itself -/obj/random/New() - ..() - spawn() - if(istype(src.loc, /obj/structure/loot_pile)) //Spawning from a lootpile is weird, need to wait until we're out of it to do our work. - while(istype(src.loc, /obj/structure/loot_pile)) - sleep(1) - if (!prob(spawn_nothing_percentage)) - spawn_item() - qdel(src) +/obj/random/Initialize() + . = ..() + if (!prob(spawn_nothing_percentage)) + spawn_item() + qdel(src) // this function should return a specific item to spawn /obj/random/proc/item_to_spawn() return 0 +/obj/random/drop_location() + return drop_get_turf? get_turf(src) : ..() + // creates the random item /obj/random/proc/spawn_item() var/build_path = item_to_spawn() - var/atom/A = new build_path(src.loc) + var/atom/A = new build_path(drop_location()) if(pixel_x || pixel_y) A.pixel_x = pixel_x A.pixel_y = pixel_y @@ -100,7 +100,7 @@ var/list/multi_point_spawns var/id // Group id var/weight // Probability weight for this spawn point -/obj/random_multi/initialize() +/obj/random_multi/Initialize() . = ..() weight = max(1, round(weight)) diff --git a/code/game/objects/random/misc.dm b/code/game/objects/random/misc.dm index 5b8fc35e3c..0f9f85582f 100644 --- a/code/game/objects/random/misc.dm +++ b/code/game/objects/random/misc.dm @@ -293,6 +293,23 @@ /obj/item/weapon/reagent_containers/food/drinks/bottle/rum, /obj/item/weapon/reagent_containers/food/drinks/bottle/patron) +/obj/random/meat + name = "random meat" + desc = "This is a random slab of meat." + icon = 'icons/obj/food.dmi' + icon_state = "meat" + +/obj/random/meat/item_to_spawn() + return pick(prob(60);/obj/item/weapon/reagent_containers/food/snacks/meat, + prob(20);/obj/item/weapon/reagent_containers/food/snacks/xenomeat/spidermeat, + prob(10);/obj/item/weapon/reagent_containers/food/snacks/carpmeat, + prob(5);/obj/item/weapon/reagent_containers/food/snacks/bearmeat, + prob(1);/obj/item/weapon/reagent_containers/food/snacks/meat/syntiflesh, + prob(1);/obj/item/weapon/reagent_containers/food/snacks/meat/human, + prob(1);/obj/item/weapon/reagent_containers/food/snacks/meat/monkey, + prob(1);/obj/item/weapon/reagent_containers/food/snacks/meat/corgi, + prob(1);/obj/item/weapon/reagent_containers/food/snacks/xenomeat) + /obj/random/material //Random materials for building stuff name = "random material" desc = "This is a random material." diff --git a/code/game/objects/random/mob.dm b/code/game/objects/random/mob.dm index 6daa10c0f9..966498a2bd 100644 --- a/code/game/objects/random/mob.dm +++ b/code/game/objects/random/mob.dm @@ -18,44 +18,47 @@ var/mob_retaliate = 0 /obj/random/mob/item_to_spawn() - return pick(prob(10);/mob/living/simple_animal/lizard, - prob(6);/mob/living/simple_animal/retaliate/diyaab, - prob(10);/mob/living/simple_animal/cat/fluff, - prob(6);/mob/living/simple_animal/cat/kitten, - prob(10);/mob/living/simple_animal/corgi, - prob(6);/mob/living/simple_animal/corgi/puppy, - prob(10);/mob/living/simple_animal/crab, - prob(10);/mob/living/simple_animal/chicken, - prob(6);/mob/living/simple_animal/chick, - prob(10);/mob/living/simple_animal/cow, - prob(6);/mob/living/simple_animal/retaliate/goat, - prob(10);/mob/living/simple_animal/penguin, - prob(10);/mob/living/simple_animal/mouse, - prob(10);/mob/living/simple_animal/yithian, - prob(10);/mob/living/simple_animal/tindalos, - prob(10);/mob/living/simple_animal/corgi/tamaskan, - prob(3);/mob/living/simple_animal/parrot, - prob(1);/mob/living/simple_animal/giant_crab) + return pick(prob(10);/mob/living/simple_mob/animal/passive/lizard, + prob(6);/mob/living/simple_mob/animal/sif/diyaab, + prob(10);/mob/living/simple_mob/animal/passive/cat, + prob(6);/mob/living/simple_mob/animal/passive/cat, + prob(10);/mob/living/simple_mob/animal/passive/dog/corgi, + prob(6);/mob/living/simple_mob/animal/passive/dog/corgi/puppy, + prob(10);/mob/living/simple_mob/animal/passive/crab, + prob(10);/mob/living/simple_mob/animal/passive/chicken, + prob(6);/mob/living/simple_mob/animal/passive/chick, + prob(10);/mob/living/simple_mob/animal/passive/cow, + prob(6);/mob/living/simple_mob/animal/goat, + prob(10);/mob/living/simple_mob/animal/passive/penguin, + prob(10);/mob/living/simple_mob/animal/passive/mouse, + prob(10);/mob/living/simple_mob/animal/passive/yithian, + prob(10);/mob/living/simple_mob/animal/passive/tindalos, + prob(10);/mob/living/simple_mob/animal/passive/dog/tamaskan, + prob(3);/mob/living/simple_mob/animal/passive/bird/parrot, + prob(1);/mob/living/simple_mob/animal/passive/crab) /obj/random/mob/spawn_item() //These should only ever have simple mobs. var/build_path = item_to_spawn() - var/mob/living/simple_animal/M = new build_path(src.loc) - M.ai_inactive = 1 //Don't fight eachother while we're still setting up! - if(mob_faction) - M.faction = mob_faction - M.returns_home = mob_returns_home - M.wander = mob_wander - M.wander_distance = mob_wander_distance - if(overwrite_hostility) - M.hostile = mob_hostile - M.retaliate = mob_retaliate - M.ai_inactive = 0 //Now you can kill eachother if your faction didn't override. + var/mob/living/simple_mob/M = new build_path(src.loc) + if(!istype(M)) + return + if(M.has_AI()) + var/datum/ai_holder/AI = M.ai_holder + AI.go_sleep() //Don't fight eachother while we're still setting up! + AI.returns_home = mob_returns_home + AI.wander = mob_wander + AI.max_home_distance = mob_wander_distance + if(overwrite_hostility) + AI.hostile = mob_hostile + AI.retaliate = mob_retaliate + AI.go_wake() //Now you can kill eachother if your faction didn't override. if(pixel_x || pixel_y) M.pixel_x = pixel_x M.pixel_y = pixel_y + /obj/random/mob/sif name = "Random Sif Animal" desc = "This is a random cold weather animal." @@ -65,14 +68,14 @@ mob_wander_distance = 10 /obj/random/mob/sif/item_to_spawn() - return pick(prob(30);/mob/living/simple_animal/retaliate/diyaab, - prob(15);/mob/living/simple_animal/crab, - prob(15);/mob/living/simple_animal/penguin, - prob(15);/mob/living/simple_animal/mouse, - prob(15);/mob/living/simple_animal/corgi/tamaskan, - prob(2);/mob/living/simple_animal/hostile/giant_spider/frost, - prob(1);/mob/living/simple_animal/hostile/goose, - prob(20);/mob/living/simple_animal/giant_crab) + return pick(prob(30);/mob/living/simple_mob/animal/sif/diyaab, + prob(15);/mob/living/simple_mob/animal/passive/crab, + prob(15);/mob/living/simple_mob/animal/passive/penguin, + prob(15);/mob/living/simple_mob/animal/passive/mouse, + prob(15);/mob/living/simple_mob/animal/passive/dog/tamaskan, + prob(2);/mob/living/simple_mob/animal/giant_spider/frost, + prob(1);/mob/living/simple_mob/animal/space/goose, + prob(20);/mob/living/simple_mob/animal/passive/crab) /obj/random/mob/sif/peaceful @@ -84,12 +87,12 @@ mob_wander_distance = 12 /obj/random/mob/sif/peaceful/item_to_spawn() - return pick(prob(30);/mob/living/simple_animal/retaliate/diyaab, - prob(15);/mob/living/simple_animal/crab, - prob(15);/mob/living/simple_animal/penguin, - prob(15);/mob/living/simple_animal/mouse, - prob(15);/mob/living/simple_animal/corgi/tamaskan, - prob(20);/mob/living/simple_animal/giant_crab) + return pick(prob(30);/mob/living/simple_mob/animal/sif/diyaab, + prob(15);/mob/living/simple_mob/animal/passive/crab, + prob(15);/mob/living/simple_mob/animal/passive/penguin, + prob(15);/mob/living/simple_mob/animal/passive/mouse, + prob(15);/mob/living/simple_mob/animal/passive/dog/tamaskan, + prob(20);/mob/living/simple_mob/animal/sif/hooligan_crab) /obj/random/mob/sif/hostile name = "Random Hostile Sif Animal" @@ -97,9 +100,9 @@ icon_state = "frost" /obj/random/mob/sif/hostile/item_to_spawn() - return pick(prob(22);/mob/living/simple_animal/hostile/savik, - prob(33);/mob/living/simple_animal/hostile/giant_spider/frost, - prob(45);/mob/living/simple_animal/hostile/shantak) + return pick(prob(22);/mob/living/simple_mob/animal/sif/savik, + prob(33);/mob/living/simple_mob/animal/giant_spider/frost, + prob(45);/mob/living/simple_mob/animal/sif/shantak) /obj/random/mob/spider name = "Random Spider" //Spiders should patrol where they spawn. @@ -110,9 +113,9 @@ mob_wander_distance = 4 /obj/random/mob/spider/item_to_spawn() - return pick(prob(22);/mob/living/simple_animal/hostile/giant_spider/nurse, - prob(33);/mob/living/simple_animal/hostile/giant_spider/hunter, - prob(45);/mob/living/simple_animal/hostile/giant_spider) + return pick(prob(22);/mob/living/simple_mob/animal/giant_spider/nurse, + prob(33);/mob/living/simple_mob/animal/giant_spider/hunter, + prob(45);/mob/living/simple_mob/animal/giant_spider) /obj/random/mob/spider/nurse name = "Random Nurse Spider" @@ -123,8 +126,8 @@ mob_wander_distance = 4 /obj/random/mob/spider/nurse/item_to_spawn() - return pick(prob(22);/mob/living/simple_animal/hostile/giant_spider/nurse/hat, - prob(45);/mob/living/simple_animal/hostile/giant_spider/nurse) + return pick(prob(22);/mob/living/simple_mob/animal/giant_spider/nurse/hat, + prob(45);/mob/living/simple_mob/animal/giant_spider/nurse) /obj/random/mob/spider/mutant name = "Random Mutant Spider" @@ -133,15 +136,15 @@ /obj/random/mob/spider/mutant/item_to_spawn() return pick(prob(5);/obj/random/mob/spider, - prob(10);/mob/living/simple_animal/hostile/giant_spider/webslinger, - prob(10);/mob/living/simple_animal/hostile/giant_spider/carrier, - prob(33);/mob/living/simple_animal/hostile/giant_spider/lurker, - prob(33);/mob/living/simple_animal/hostile/giant_spider/tunneler, - prob(40);/mob/living/simple_animal/hostile/giant_spider/pepper, - prob(20);/mob/living/simple_animal/hostile/giant_spider/thermic, - prob(40);/mob/living/simple_animal/hostile/giant_spider/electric, - prob(1);/mob/living/simple_animal/hostile/giant_spider/phorogenic, - prob(40);/mob/living/simple_animal/hostile/giant_spider/frost) + prob(10);/mob/living/simple_mob/animal/giant_spider/webslinger, + prob(10);/mob/living/simple_mob/animal/giant_spider/carrier, + prob(33);/mob/living/simple_mob/animal/giant_spider/lurker, + prob(33);/mob/living/simple_mob/animal/giant_spider/tunneler, + prob(40);/mob/living/simple_mob/animal/giant_spider/pepper, + prob(20);/mob/living/simple_mob/animal/giant_spider/thermic, + prob(40);/mob/living/simple_mob/animal/giant_spider/electric, + prob(1);/mob/living/simple_mob/animal/giant_spider/phorogenic, + prob(40);/mob/living/simple_mob/animal/giant_spider/frost) /obj/random/mob/robotic name = "Random Robot Mob" @@ -158,17 +161,18 @@ mob_retaliate = 1 /obj/random/mob/robotic/item_to_spawn() //Hivebots have a total number of 'lots' equal to the lesser drone, at 60. - return pick(prob(60);/mob/living/simple_animal/hostile/malf_drone/lesser, - prob(50);/mob/living/simple_animal/hostile/malf_drone, - prob(15);/mob/living/simple_animal/hostile/mecha/malf_drone, - prob(10);/mob/living/simple_animal/hostile/hivebot, - prob(15);/mob/living/simple_animal/hostile/hivebot/swarm, - prob(10);/mob/living/simple_animal/hostile/hivebot/range, - prob(5);/mob/living/simple_animal/hostile/hivebot/range/rapid, - prob(5);/mob/living/simple_animal/hostile/hivebot/range/ion, - prob(5);/mob/living/simple_animal/hostile/hivebot/range/laser, - prob(5);/mob/living/simple_animal/hostile/hivebot/range/strong, - prob(5);/mob/living/simple_animal/hostile/hivebot/range/guard) + return pick(prob(60);/mob/living/simple_mob/mechanical/combat_drone/lesser, + prob(50);/mob/living/simple_mob/mechanical/combat_drone, + prob(15);/mob/living/simple_mob/mechanical/mecha/ripley, + prob(15);/mob/living/simple_mob/mechanical/mecha/odysseus, + prob(10);/mob/living/simple_mob/mechanical/hivebot, + prob(15);/mob/living/simple_mob/mechanical/hivebot/swarm, + prob(10);/mob/living/simple_mob/mechanical/hivebot/ranged_damage, + prob(5);/mob/living/simple_mob/mechanical/hivebot/ranged_damage/rapid, + prob(5);/mob/living/simple_mob/mechanical/hivebot/ranged_damage/ion, + prob(5);/mob/living/simple_mob/mechanical/hivebot/ranged_damage/laser, + prob(5);/mob/living/simple_mob/mechanical/hivebot/ranged_damage/strong, + prob(5);/mob/living/simple_mob/mechanical/hivebot/ranged_damage/strong/guard) /obj/random/mob/robotic/hivebot name = "Random Hivebot" @@ -178,14 +182,14 @@ mob_faction = "hivebot" /obj/random/mob/robotic/hivebot/item_to_spawn() - return pick(prob(10);/mob/living/simple_animal/hostile/hivebot, - prob(15);/mob/living/simple_animal/hostile/hivebot/swarm, - prob(10);/mob/living/simple_animal/hostile/hivebot/range, - prob(5);/mob/living/simple_animal/hostile/hivebot/range/rapid, - prob(5);/mob/living/simple_animal/hostile/hivebot/range/ion, - prob(5);/mob/living/simple_animal/hostile/hivebot/range/laser, - prob(5);/mob/living/simple_animal/hostile/hivebot/range/strong, - prob(5);/mob/living/simple_animal/hostile/hivebot/range/guard) + return pick(prob(10);/mob/living/simple_mob/mechanical/hivebot, + prob(15);/mob/living/simple_mob/mechanical/hivebot/swarm, + prob(10);/mob/living/simple_mob/mechanical/hivebot/ranged_damage, + prob(5);/mob/living/simple_mob/mechanical/hivebot/ranged_damage/rapid, + prob(5);/mob/living/simple_mob/mechanical/hivebot/ranged_damage/ion, + prob(5);/mob/living/simple_mob/mechanical/hivebot/ranged_damage/laser, + prob(5);/mob/living/simple_mob/mechanical/hivebot/ranged_damage/strong, + prob(5);/mob/living/simple_mob/mechanical/hivebot/ranged_damage/strong/guard) //Mice @@ -195,7 +199,7 @@ icon_state = "mouse_gray" /obj/random/mob/mouse/item_to_spawn() - return pick(prob(15);/mob/living/simple_animal/mouse/white, - prob(30);/mob/living/simple_animal/mouse/brown, - prob(30);/mob/living/simple_animal/mouse/gray, + return pick(prob(15);/mob/living/simple_mob/animal/passive/mouse/white, + prob(30);/mob/living/simple_mob/animal/passive/mouse/brown, + prob(30);/mob/living/simple_mob/animal/passive/mouse/gray, prob(25);/obj/random/mouseremains) //because figuring out how to come up with it picking nothing is beyond my coding ability. diff --git a/code/game/objects/random/random.dm b/code/game/objects/random/random.dm index 196b597c79..301323ba3d 100644 --- a/code/game/objects/random/random.dm +++ b/code/game/objects/random/random.dm @@ -1058,7 +1058,7 @@ var/list/multi_point_spawns var/id // Group id var/weight // Probability weight for this spawn point -/obj/random_multi/initialize() +/obj/random_multi/Initialize() . = ..() weight = max(1, round(weight)) @@ -1531,24 +1531,24 @@ var/list/multi_point_spawns icon_state = "chicken_white" /obj/random/mob/item_to_spawn() - return pick(prob(10);/mob/living/simple_animal/lizard, - prob(6);/mob/living/simple_animal/retaliate/diyaab, - prob(10);/mob/living/simple_animal/cat/fluff, - prob(6);/mob/living/simple_animal/cat/kitten, - prob(10);/mob/living/simple_animal/corgi, - prob(6);/mob/living/simple_animal/corgi/puppy, - prob(10);/mob/living/simple_animal/crab, - prob(10);/mob/living/simple_animal/chicken, - prob(6);/mob/living/simple_animal/chick, - prob(10);/mob/living/simple_animal/cow, - prob(6);/mob/living/simple_animal/retaliate/goat, - prob(10);/mob/living/simple_animal/penguin, - prob(10);/mob/living/simple_animal/mouse, - prob(10);/mob/living/simple_animal/yithian, - prob(10);/mob/living/simple_animal/tindalos, - prob(10);/mob/living/simple_animal/corgi/tamaskan, - prob(3);/mob/living/simple_animal/parrot, - prob(1);/mob/living/simple_animal/giant_crab) + return pick(prob(10);/mob/living/simple_mob/lizard, + prob(6);/mob/living/simple_mob/retaliate/diyaab, + prob(10);/mob/living/simple_mob/cat/fluff, + prob(6);/mob/living/simple_mob/cat/kitten, + prob(10);/mob/living/simple_mob/corgi, + prob(6);/mob/living/simple_mob/corgi/puppy, + prob(10);/mob/living/simple_mob/crab, + prob(10);/mob/living/simple_mob/chicken, + prob(6);/mob/living/simple_mob/chick, + prob(10);/mob/living/simple_mob/cow, + prob(6);/mob/living/simple_mob/retaliate/goat, + prob(10);/mob/living/simple_mob/penguin, + prob(10);/mob/living/simple_mob/mouse, + prob(10);/mob/living/simple_mob/yithian, + prob(10);/mob/living/simple_mob/tindalos, + prob(10);/mob/living/simple_mob/corgi/tamaskan, + prob(3);/mob/living/simple_mob/parrot, + prob(1);/mob/living/simple_mob/giant_crab) /obj/random/mob/sif name = "Random Sif Animal" @@ -1556,14 +1556,14 @@ var/list/multi_point_spawns icon_state = "penguin" /obj/random/mob/sif/item_to_spawn() - return pick(prob(30);/mob/living/simple_animal/retaliate/diyaab, - prob(15);/mob/living/simple_animal/crab, - prob(15);/mob/living/simple_animal/penguin, - prob(15);/mob/living/simple_animal/mouse, - prob(15);/mob/living/simple_animal/corgi/tamaskan, - prob(2);/mob/living/simple_animal/hostile/giant_spider/frost, - prob(1);/mob/living/simple_animal/hostile/goose, - prob(20);/mob/living/simple_animal/giant_crab) + return pick(prob(30);/mob/living/simple_mob/retaliate/diyaab, + prob(15);/mob/living/simple_mob/crab, + prob(15);/mob/living/simple_mob/penguin, + prob(15);/mob/living/simple_mob/mouse, + prob(15);/mob/living/simple_mob/corgi/tamaskan, + prob(2);/mob/living/simple_mob/hostile/giant_spider/frost, + prob(1);/mob/living/simple_mob/hostile/goose, + prob(20);/mob/living/simple_mob/giant_crab) /obj/random/mob/sif/hostile name = "Random Hostile Sif Animal" @@ -1571,9 +1571,9 @@ var/list/multi_point_spawns icon_state = "frost" /obj/random/mob/sif/hostile/item_to_spawn() - return pick(prob(22);/mob/living/simple_animal/hostile/savik, - prob(33);/mob/living/simple_animal/hostile/giant_spider/frost, - prob(45);/mob/living/simple_animal/hostile/shantak) + return pick(prob(22);/mob/living/simple_mob/hostile/savik, + prob(33);/mob/living/simple_mob/hostile/giant_spider/frost, + prob(45);/mob/living/simple_mob/hostile/shantak) /obj/random/mob/spider name = "Random Spider" @@ -1581,9 +1581,9 @@ var/list/multi_point_spawns icon_state = "guard" /obj/random/mob/spider/item_to_spawn() - return pick(prob(22);/mob/living/simple_animal/hostile/giant_spider/nurse, - prob(33);/mob/living/simple_animal/hostile/giant_spider/hunter, - prob(45);/mob/living/simple_animal/hostile/giant_spider) + return pick(prob(22);/mob/living/simple_mob/hostile/giant_spider/nurse, + prob(33);/mob/living/simple_mob/hostile/giant_spider/hunter, + prob(45);/mob/living/simple_mob/hostile/giant_spider) /obj/random/mob/spider/mutant name = "Random Mutant Spider" @@ -1592,15 +1592,15 @@ var/list/multi_point_spawns /obj/random/mob/spider/mutant/item_to_spawn() return pick(prob(5);/obj/random/mob/spider, - prob(10);/mob/living/simple_animal/hostile/giant_spider/webslinger, - prob(10);/mob/living/simple_animal/hostile/giant_spider/carrier, - prob(33);/mob/living/simple_animal/hostile/giant_spider/lurker, - prob(33);/mob/living/simple_animal/hostile/giant_spider/tunneler, - prob(40);/mob/living/simple_animal/hostile/giant_spider/pepper, - prob(20);/mob/living/simple_animal/hostile/giant_spider/thermic, - prob(40);/mob/living/simple_animal/hostile/giant_spider/electric, - prob(1);/mob/living/simple_animal/hostile/giant_spider/phorogenic, - prob(40);/mob/living/simple_animal/hostile/giant_spider/frost) + prob(10);/mob/living/simple_mob/hostile/giant_spider/webslinger, + prob(10);/mob/living/simple_mob/hostile/giant_spider/carrier, + prob(33);/mob/living/simple_mob/hostile/giant_spider/lurker, + prob(33);/mob/living/simple_mob/hostile/giant_spider/tunneler, + prob(40);/mob/living/simple_mob/hostile/giant_spider/pepper, + prob(20);/mob/living/simple_mob/hostile/giant_spider/thermic, + prob(40);/mob/living/simple_mob/hostile/giant_spider/electric, + prob(1);/mob/living/simple_mob/hostile/giant_spider/phorogenic, + prob(40);/mob/living/simple_mob/hostile/giant_spider/frost) /obj/random/mob/robotic name = "Random Robot Mob" @@ -1608,17 +1608,17 @@ var/list/multi_point_spawns icon_state = "drone_dead" /obj/random/mob/robotic/item_to_spawn() //Hivebots have a total number of 'lots' equal to the lesser drone, at 60. - return pick(prob(60);/mob/living/simple_animal/hostile/malf_drone/lesser, - prob(50);/mob/living/simple_animal/hostile/malf_drone, - prob(15);/mob/living/simple_animal/hostile/mecha/malf_drone, - prob(10);/mob/living/simple_animal/hostile/hivebot, - prob(15);/mob/living/simple_animal/hostile/hivebot/swarm, - prob(10);/mob/living/simple_animal/hostile/hivebot/range, - prob(5);/mob/living/simple_animal/hostile/hivebot/range/rapid, - prob(5);/mob/living/simple_animal/hostile/hivebot/range/ion, - prob(5);/mob/living/simple_animal/hostile/hivebot/range/laser, - prob(5);/mob/living/simple_animal/hostile/hivebot/range/strong, - prob(5);/mob/living/simple_animal/hostile/hivebot/range/guard) + return pick(prob(60);/mob/living/simple_mob/hostile/malf_drone/lesser, + prob(50);/mob/living/simple_mob/hostile/malf_drone, + prob(15);/mob/living/simple_mob/hostile/mecha/malf_drone, + prob(10);/mob/living/simple_mob/hostile/hivebot, + prob(15);/mob/living/simple_mob/hostile/hivebot/swarm, + prob(10);/mob/living/simple_mob/hostile/hivebot/range, + prob(5);/mob/living/simple_mob/hostile/hivebot/range/rapid, + prob(5);/mob/living/simple_mob/hostile/hivebot/range/ion, + prob(5);/mob/living/simple_mob/hostile/hivebot/range/laser, + prob(5);/mob/living/simple_mob/hostile/hivebot/range/strong, + prob(5);/mob/living/simple_mob/hostile/hivebot/range/guard) /obj/random/mob/robotic/hivebot name = "Random Hivebot" @@ -1626,11 +1626,11 @@ var/list/multi_point_spawns icon_state = "drone3" /obj/random/mob/robotic/hivebot/item_to_spawn() - return pick(prob(10);/mob/living/simple_animal/hostile/hivebot, - prob(15);/mob/living/simple_animal/hostile/hivebot/swarm, - prob(10);/mob/living/simple_animal/hostile/hivebot/range, - prob(5);/mob/living/simple_animal/hostile/hivebot/range/rapid, - prob(5);/mob/living/simple_animal/hostile/hivebot/range/ion, - prob(5);/mob/living/simple_animal/hostile/hivebot/range/laser, - prob(5);/mob/living/simple_animal/hostile/hivebot/range/strong, - prob(5);/mob/living/simple_animal/hostile/hivebot/range/guard) + return pick(prob(10);/mob/living/simple_mob/hostile/hivebot, + prob(15);/mob/living/simple_mob/hostile/hivebot/swarm, + prob(10);/mob/living/simple_mob/hostile/hivebot/range, + prob(5);/mob/living/simple_mob/hostile/hivebot/range/rapid, + prob(5);/mob/living/simple_mob/hostile/hivebot/range/ion, + prob(5);/mob/living/simple_mob/hostile/hivebot/range/laser, + prob(5);/mob/living/simple_mob/hostile/hivebot/range/strong, + prob(5);/mob/living/simple_mob/hostile/hivebot/range/guard) diff --git a/code/game/objects/random/random_vr.dm b/code/game/objects/random/random_vr.dm index 4e454df55a..62e3e376c7 100644 --- a/code/game/objects/random/random_vr.dm +++ b/code/game/objects/random/random_vr.dm @@ -181,15 +181,15 @@ /obj/random/outside_mob/item_to_spawn() // Special version for mobs to have the same faction. return pick( - prob(50);/mob/living/simple_animal/retaliate/gaslamp, -// prob(50);/mob/living/simple_animal/otie/feral, // Removed until Otie code is unfucked. - prob(20);/mob/living/simple_animal/hostile/dino/virgo3b, - prob(1);/mob/living/simple_animal/hostile/dragon/virgo3b) + prob(50);/mob/living/simple_mob/animal/passive/gaslamp, +// prob(50);/mob/living/simple_mob/otie/feral, // Removed until Otie code is unfucked. + prob(20);/mob/living/simple_mob/vore/aggressive/dino/virgo3b, + prob(1);/mob/living/simple_mob/vore/aggressive/dragon/virgo3b) /obj/random/outside_mob/spawn_item() . = ..() - if(istype(., /mob/living/simple_animal)) - var/mob/living/simple_animal/this_mob = . + if(istype(., /mob/living/simple_mob)) + var/mob/living/simple_mob/this_mob = . this_mob.faction = src.faction if (this_mob.minbodytemp > 200) // Temporary hotfix. Eventually I'll add code to change all mob vars to fit the environment they are spawned in. this_mob.minbodytemp = 200 diff --git a/code/game/objects/random/unidentified/medicine.dm b/code/game/objects/random/unidentified/medicine.dm new file mode 100644 index 0000000000..f779d75a0f --- /dev/null +++ b/code/game/objects/random/unidentified/medicine.dm @@ -0,0 +1,149 @@ +/* +Semi-randomized loot for PoIs involving medicine. +Note that most of these include both 'good' and 'bad' results, with the bad results often being +much more likely to show up. This is done for several purposes; + + * A large influx of valuable medicine makes medical/SAR less needed for explorers, which is something we want to avoid. + * Blindly using autoinjectors should be risky, and to accomplish that, it needs to be more likely to get a bad effect. + * A large amount of bad loot helps make the good loot feel better to acquire. + +*/ + +// This one makes a purely random hypo. Not recommended for PoIs since it will produce nonsensical results for a PoI's theme. +// It's more of a thing to help pick specific hypos for the other lists. +/obj/random/unidentified_medicine + name = "unidentified medicine" + desc = "This will make a random hypo." + icon = 'icons/obj/syringe.dmi' + icon_state = "autoinjector1" + +/obj/random/unidentified_medicine/item_to_spawn() + return pick( + /obj/item/weapon/reagent_containers/hypospray/autoinjector/biginjector/brute/unidentified, + /obj/item/weapon/reagent_containers/hypospray/autoinjector/biginjector/burn/unidentified, + /obj/item/weapon/reagent_containers/hypospray/autoinjector/biginjector/toxin/unidentified, + /obj/item/weapon/reagent_containers/hypospray/autoinjector/biginjector/oxy/unidentified, + /obj/item/weapon/reagent_containers/hypospray/autoinjector/biginjector/purity/unidentified, + /obj/item/weapon/reagent_containers/hypospray/autoinjector/biginjector/pain/unidentified, + /obj/item/weapon/reagent_containers/hypospray/autoinjector/biginjector/organ/unidentified, + /obj/item/weapon/reagent_containers/hypospray/autoinjector/biginjector/clotting/unidentified, + /obj/item/weapon/reagent_containers/hypospray/autoinjector/biginjector/bonemed/unidentified, + /obj/item/weapon/reagent_containers/hypospray/autoinjector/biginjector/combat/unidentified, + /obj/item/weapon/reagent_containers/hypospray/autoinjector/biginjector/healing_nanites/unidentified, + /obj/item/weapon/reagent_containers/hypospray/autoinjector/biginjector/stimm/unidentified, + /obj/item/weapon/reagent_containers/hypospray/autoinjector/biginjector/space_drugs/unidentified, + /obj/item/weapon/reagent_containers/hypospray/autoinjector/biginjector/expired/unidentified, + /obj/item/weapon/reagent_containers/hypospray/autoinjector/biginjector/serotrotium/unidentified, + /obj/item/weapon/reagent_containers/hypospray/autoinjector/biginjector/cryptobiolin/unidentified, + /obj/item/weapon/reagent_containers/hypospray/autoinjector/biginjector/mindbreaker/unidentified, + /obj/item/weapon/reagent_containers/hypospray/autoinjector/biginjector/psilocybin/unidentified, + /obj/item/weapon/reagent_containers/hypospray/autoinjector/biginjector/soporific/unidentified, + /obj/item/weapon/reagent_containers/hypospray/autoinjector/biginjector/cyanide/unidentified, + /obj/item/weapon/reagent_containers/hypospray/autoinjector/biginjector/impedrezene/unidentified, + /obj/item/weapon/reagent_containers/hypospray/autoinjector/biginjector/mutagen/unidentified, + /obj/item/weapon/reagent_containers/hypospray/autoinjector/biginjector/defective_nanites/unidentified, + /obj/item/weapon/reagent_containers/hypospray/autoinjector/biginjector/contaminated/unidentified) + +// Produces things you might find in an old medicine cabinet in a PoI. +// Old cabinets are typical of ruins and abandoned buildings in the plains, meaning they're usually easier to reach, and as such, inferior loot. +/obj/random/unidentified_medicine/old_medicine/item_to_spawn() + // 30 Good, 70 Bad. 30% to get something good. + // Poor odds, but these are fairly easy to reach as they're in abandoned areas. + return pick( + prob(5);/obj/item/weapon/reagent_containers/hypospray/autoinjector/biginjector/brute/unidentified, + prob(5);/obj/item/weapon/reagent_containers/hypospray/autoinjector/biginjector/burn/unidentified, + prob(5);/obj/item/weapon/reagent_containers/hypospray/autoinjector/biginjector/toxin/unidentified, + prob(5);/obj/item/weapon/reagent_containers/hypospray/autoinjector/biginjector/oxy/unidentified, + prob(5);/obj/item/weapon/reagent_containers/hypospray/autoinjector/biginjector/purity/unidentified, + prob(5);/obj/item/weapon/reagent_containers/hypospray/autoinjector/biginjector/pain/unidentified, + prob(65);/obj/item/weapon/reagent_containers/hypospray/autoinjector/biginjector/expired/unidentified, + prob(5);/obj/item/weapon/reagent_containers/hypospray/autoinjector/biginjector/contaminated/unidentified) + +// Medicine belonging to a place still being occupied (or was recently), meaning the goods might still be fresh, and better. +/obj/random/unidentified_medicine/fresh_medicine/item_to_spawn() + // More likely to get something good, and a chance to get rare medicines. + // 75 Good, 25 Bad. 75% chance of getting something good. + // Good odds, but the contents aren't super great unless someone gets lucky. + return pick( + prob(10);/obj/item/weapon/reagent_containers/hypospray/autoinjector/biginjector/brute/unidentified, + prob(10);/obj/item/weapon/reagent_containers/hypospray/autoinjector/biginjector/burn/unidentified, + prob(10);/obj/item/weapon/reagent_containers/hypospray/autoinjector/biginjector/toxin/unidentified, + prob(10);/obj/item/weapon/reagent_containers/hypospray/autoinjector/biginjector/oxy/unidentified, + prob(10);/obj/item/weapon/reagent_containers/hypospray/autoinjector/biginjector/purity/unidentified, + prob(10);/obj/item/weapon/reagent_containers/hypospray/autoinjector/biginjector/pain/unidentified, + prob(5);/obj/item/weapon/reagent_containers/hypospray/autoinjector/biginjector/organ/unidentified, + prob(5);/obj/item/weapon/reagent_containers/hypospray/autoinjector/biginjector/clotting/unidentified, + prob(5);/obj/item/weapon/reagent_containers/hypospray/autoinjector/biginjector/bonemed/unidentified, + prob(25);/obj/item/weapon/reagent_containers/hypospray/autoinjector/biginjector/expired/unidentified) + +// For military PoIs like BSD. High odds of good loot since those PoIs are really hard. +/obj/random/unidentified_medicine/combat_medicine/item_to_spawn() + // More likely to get something good, and a chance to get rare medicines. + // 75 Good, 30 Bad, roughly 71.4% chance to get something good. + // Very high but very hard to reach and still has a chance of ending poorly if injecting blind. + return pick( + prob(5);/obj/item/weapon/reagent_containers/hypospray/autoinjector/biginjector/brute/unidentified, + prob(5);/obj/item/weapon/reagent_containers/hypospray/autoinjector/biginjector/burn/unidentified, + prob(5);/obj/item/weapon/reagent_containers/hypospray/autoinjector/biginjector/pain/unidentified, + prob(10);/obj/item/weapon/reagent_containers/hypospray/autoinjector/biginjector/organ/unidentified, + prob(10);/obj/item/weapon/reagent_containers/hypospray/autoinjector/biginjector/clotting/unidentified, + prob(10);/obj/item/weapon/reagent_containers/hypospray/autoinjector/biginjector/bonemed/unidentified, + prob(30);/obj/item/weapon/reagent_containers/hypospray/autoinjector/biginjector/combat/unidentified, + prob(10);/obj/item/weapon/reagent_containers/hypospray/autoinjector/biginjector/soporific/unidentified, + prob(30);/obj/item/weapon/reagent_containers/hypospray/autoinjector/biginjector/cyanide/unidentified) + +// Hyposprays found inside various illicit places. +/obj/random/unidentified_medicine/drug_den/item_to_spawn() + // Combat stims are common, but so are nasty drugs. + // 65 Good, 160 Bad, roughly 28.8% to get something good. + // Poor odds, but there are a lot of these scattered in the drug dens and illegal chem labs. + return pick( + prob(10);/obj/item/weapon/reagent_containers/hypospray/autoinjector/biginjector/pain/unidentified, + prob(5);/obj/item/weapon/reagent_containers/hypospray/autoinjector/biginjector/organ/unidentified, + prob(5);/obj/item/weapon/reagent_containers/hypospray/autoinjector/biginjector/clotting/unidentified, + prob(5);/obj/item/weapon/reagent_containers/hypospray/autoinjector/biginjector/bonemed/unidentified, + prob(40);/obj/item/weapon/reagent_containers/hypospray/autoinjector/biginjector/combat/unidentified, + prob(20);/obj/item/weapon/reagent_containers/hypospray/autoinjector/biginjector/stimm/unidentified, + prob(20);/obj/item/weapon/reagent_containers/hypospray/autoinjector/biginjector/space_drugs/unidentified, + prob(20);/obj/item/weapon/reagent_containers/hypospray/autoinjector/biginjector/serotrotium/unidentified, + prob(20);/obj/item/weapon/reagent_containers/hypospray/autoinjector/biginjector/cryptobiolin/unidentified, + prob(20);/obj/item/weapon/reagent_containers/hypospray/autoinjector/biginjector/mindbreaker/unidentified, + prob(20);/obj/item/weapon/reagent_containers/hypospray/autoinjector/biginjector/psilocybin/unidentified, + prob(20);/obj/item/weapon/reagent_containers/hypospray/autoinjector/biginjector/soporific/unidentified, + prob(10);/obj/item/weapon/reagent_containers/hypospray/autoinjector/biginjector/impedrezene/unidentified, + prob(5);/obj/item/weapon/reagent_containers/hypospray/autoinjector/biginjector/cyanide/unidentified, + prob(5);/obj/item/weapon/reagent_containers/hypospray/autoinjector/biginjector/contaminated/unidentified) + +// Medicine made FOR SCIENCE. +/obj/random/unidentified_medicine/scientific/item_to_spawn() + // Potential for amazing loot, also potential for very nasty consequences if injecting blind. + // 45 Good, 45 Bad, 50% chance to get something good. + // Do you feel lucky? + return pick( + prob(10);/obj/item/weapon/reagent_containers/hypospray/autoinjector/biginjector/organ/unidentified, + prob(10);/obj/item/weapon/reagent_containers/hypospray/autoinjector/biginjector/clotting/unidentified, + prob(10);/obj/item/weapon/reagent_containers/hypospray/autoinjector/biginjector/bonemed/unidentified, + prob(10);/obj/item/weapon/reagent_containers/hypospray/autoinjector/biginjector/combat/unidentified, + prob(5);/obj/item/weapon/reagent_containers/hypospray/autoinjector/biginjector/healing_nanites/unidentified, + prob(20);/obj/item/weapon/reagent_containers/hypospray/autoinjector/biginjector/contaminated/unidentified, + prob(10);/obj/item/weapon/reagent_containers/hypospray/autoinjector/biginjector/cyanide/unidentified, + prob(10);/obj/item/weapon/reagent_containers/hypospray/autoinjector/biginjector/mutagen/unidentified, + prob(5);/obj/item/weapon/reagent_containers/hypospray/autoinjector/biginjector/defective_nanites/unidentified) + +// Nanomachines, son. Found in very advanced places such as the Crashed UFO. +/obj/random/unidentified_medicine/nanites/item_to_spawn() + // You better identify this if you value your life. + // 30 Good, 70 Bad. 30% of getting a good outcome. + return pick( + prob(30);/obj/item/weapon/reagent_containers/hypospray/autoinjector/biginjector/healing_nanites/unidentified, + prob(70);/obj/item/weapon/reagent_containers/hypospray/autoinjector/biginjector/defective_nanites/unidentified) + +// Found in virus-related areas like the Quarantined Shuttle. +/obj/random/unidentified_medicine/viral/item_to_spawn() + // Another one where's its important to identify the hypo. + // 30 Good, 70 Bad. 30% of getting a good outcome. + return pick( + prob(30);/obj/item/weapon/reagent_containers/hypospray/autoinjector/biginjector/purity/unidentified, + prob(40);/obj/item/weapon/reagent_containers/hypospray/autoinjector/biginjector/expired/unidentified, + prob(10);/obj/item/weapon/reagent_containers/hypospray/autoinjector/biginjector/mutagen/unidentified, + prob(20);/obj/item/weapon/reagent_containers/hypospray/autoinjector/biginjector/contaminated/unidentified) \ No newline at end of file diff --git a/code/game/objects/structures.dm b/code/game/objects/structures.dm index faa9f024f0..4d0eb2b9ee 100644 --- a/code/game/objects/structures.dm +++ b/code/game/objects/structures.dm @@ -3,9 +3,11 @@ w_class = ITEMSIZE_NO_CONTAINER var/climbable + var/climb_delay = 3.5 SECONDS var/breakable var/parts var/list/climbers = list() + var/block_turf_edges = FALSE // If true, turf edge icons will not be made on the turf this occupies. /obj/structure/Destroy() if(parts) @@ -99,7 +101,7 @@ usr.visible_message("[user] starts climbing onto \the [src]!") climbers |= user - if(!do_after(user,(issmall(user) ? 20 : 34))) + if(!do_after(user,(issmall(user) ? climb_delay * 0.6 : climb_delay))) climbers -= user return @@ -176,8 +178,8 @@ return 0 return 1 -/obj/structure/attack_generic(var/mob/user, var/damage, var/attack_verb, var/wallbreaker) - if(!breakable || damage < 10 || !wallbreaker) +/obj/structure/attack_generic(var/mob/user, var/damage, var/attack_verb) + if(!breakable || damage < STRUCTURE_MIN_DAMAGE_THRESHOLD) return 0 visible_message("[user] [attack_verb] the [src] apart!") user.do_attack_animation(src) diff --git a/code/game/objects/structures/bonfire.dm b/code/game/objects/structures/bonfire.dm index 390ddc88a3..f4360f92cf 100644 --- a/code/game/objects/structures/bonfire.dm +++ b/code/game/objects/structures/bonfire.dm @@ -159,14 +159,14 @@ if(burning) burning = FALSE update_icon() - processing_objects -= src + STOP_PROCESSING(SSobj, src) visible_message("\The [src] stops burning.") /obj/structure/bonfire/proc/ignite() if(!burning && get_fuel_amount()) burning = TRUE update_icon() - processing_objects += src + START_PROCESSING(SSobj, src) visible_message("\The [src] starts burning!") /obj/structure/bonfire/proc/burn() @@ -342,14 +342,14 @@ if(burning) burning = FALSE update_icon() - processing_objects -= src + STOP_PROCESSING(SSobj, src) visible_message("\The [src] stops burning.") /obj/structure/fireplace/proc/ignite() if(!burning && get_fuel_amount()) burning = TRUE update_icon() - processing_objects += src + START_PROCESSING(SSobj, src) visible_message("\The [src] starts burning!") /obj/structure/fireplace/proc/burn() diff --git a/code/game/objects/structures/catwalk.dm b/code/game/objects/structures/catwalk.dm index eda2c9346b..68b9ccc787 100644 --- a/code/game/objects/structures/catwalk.dm +++ b/code/game/objects/structures/catwalk.dm @@ -11,7 +11,7 @@ var/maxhealth = 100 anchored = 1.0 -/obj/structure/catwalk/initialize() +/obj/structure/catwalk/Initialize() . = ..() for(var/obj/structure/catwalk/O in range(1)) O.update_icon() diff --git a/code/game/objects/structures/cliff.dm b/code/game/objects/structures/cliff.dm new file mode 100644 index 0000000000..c4caf4b7ab --- /dev/null +++ b/code/game/objects/structures/cliff.dm @@ -0,0 +1,236 @@ +GLOBAL_LIST_EMPTY(cliff_icon_cache) + +/* +Cliffs give a visual illusion of depth by seperating two places while presenting a 'top' and 'bottom' side. + +Mobs moving into a cliff from the bottom side will simply bump into it and be denied moving into the tile, +where as mobs moving into a cliff from the top side will 'fall' off the cliff, forcing them to the bottom, causing significant damage and stunning them. + +Mobs can climb this while wearing climbing equipment by clickdragging themselves onto a cliff, as if it were a table. + +Flying mobs can pass over all cliffs with no risk of falling. + +Projectiles and thrown objects can pass, however if moving upwards, there is a chance for it to be stopped by the cliff. +This makes fighting something that is on top of a cliff more challenging. + +As a note, dir points upwards, e.g. pointing WEST means the left side is 'up', and the right side is 'down'. + +When mapping these in, be sure to give at least a one tile clearance, as NORTH facing cliffs expand to +two tiles on initialization, and which way a cliff is facing may change during maploading. +*/ + +/obj/structure/cliff + name = "cliff" + desc = "A steep rock ledge. You might be able to climb it if you feel bold enough." + description_info = "Walking off the edge of a cliff while on top will cause you to fall off, causing severe injury.
\ + You can climb this cliff if wearing special climbing equipment, by click-dragging yourself onto the cliff.
\ + Projectiles traveling up a cliff may hit the cliff instead, making it more difficult to fight something \ + on top." + icon = 'icons/obj/flora/rocks.dmi' + + anchored = TRUE + density = TRUE + opacity = FALSE + climbable = TRUE + climb_delay = 10 SECONDS + block_turf_edges = TRUE // Don't want turf edges popping up from the cliff edge. + register_as_dangerous_object = TRUE + + var/icon_variant = null // Used to make cliffs less repeative by having a selection of sprites to display. + var/corner = FALSE // Used for icon things. + var/ramp = FALSE // Ditto. + var/bottom = FALSE // Used for 'bottom' typed cliffs, to avoid infinite cliffs, and for icons. + + var/is_double_cliff = FALSE // Set to true when making the two-tile cliffs, used for projectile checks. + var/uphill_penalty = 30 // Odds of a projectile not making it up the cliff. + +// These arrange their sprites at runtime, as opposed to being statically placed in the map file. +/obj/structure/cliff/automatic + icon_state = "cliffbuilder" + dir = NORTH + +/obj/structure/cliff/automatic/corner + icon_state = "cliffbuilder-corner" + dir = NORTHEAST + corner = TRUE + +// Tiny part that doesn't block, used for making 'ramps'. +/obj/structure/cliff/automatic/ramp + icon_state = "cliffbuilder-ramp" + dir = NORTHEAST + density = FALSE + ramp = TRUE + +// Made automatically as needed by automatic cliffs. +/obj/structure/cliff/bottom + bottom = TRUE + +/obj/structure/cliff/automatic/Initialize() + ..() + return INITIALIZE_HINT_LATELOAD + +// Paranoid about the maploader, direction is very important to cliffs, since they may get bigger if initialized while facing NORTH. +/obj/structure/cliff/automatic/LateInitialize() + if(dir in GLOB.cardinal) + icon_variant = pick("a", "b", "c") + + if(dir & NORTH && !bottom) // North-facing cliffs require more cliffs to be made. + make_bottom() + + update_icon() + +/obj/structure/cliff/proc/make_bottom() + // First, make sure there's room to put the bottom side. + var/turf/T = locate(x, y - 1, z) + if(!istype(T)) + return FALSE + + // Now make the bottom cliff have mostly the same variables. + var/obj/structure/cliff/bottom/bottom = new(T) + is_double_cliff = TRUE + climb_delay /= 2 // Since there are two cliffs to climb when going north, both take half the time. + + bottom.dir = dir + bottom.is_double_cliff = TRUE + bottom.climb_delay = climb_delay + bottom.icon_variant = icon_variant + bottom.corner = corner + bottom.ramp = ramp + bottom.layer = layer - 0.1 + bottom.density = density + bottom.update_icon() + +/obj/structure/cliff/set_dir(new_dir) + ..() + update_icon() + +/obj/structure/cliff/update_icon() + icon_state = "cliff-[dir][icon_variant][bottom ? "-bottom" : ""][corner ? "-corner" : ""][ramp ? "-ramp" : ""]" + + // Now for making the top-side look like a different turf. + var/turf/T = get_step(src, dir) + if(!istype(T)) + return + + var/subtraction_icon_state = "[icon_state]-subtract" + var/cache_string = "[icon_state]_[T.icon]_[T.icon_state]" + if(T && subtraction_icon_state in icon_states(icon)) + cut_overlays() + // If we've made the same icon before, just recycle it. + if(cache_string in GLOB.cliff_icon_cache) + add_overlay(GLOB.cliff_icon_cache[cache_string]) + + else // Otherwise make a new one, but only once. + var/icon/underlying_ground = icon(T.icon, T.icon_state, T.dir) + var/icon/subtract = icon(icon, subtraction_icon_state) + underlying_ground.Blend(subtract, ICON_SUBTRACT) + var/image/final = image(underlying_ground) + final.layer = src.layer - 0.2 + GLOB.cliff_icon_cache[cache_string] = final + add_overlay(final) + + +// Movement-related code. + +/obj/structure/cliff/CanPass(atom/movable/mover, turf/target) + if(isliving(mover)) + var/mob/living/L = mover + if(L.hovering) // Flying mobs can always pass. + return TRUE + return ..() + + // Projectiles and objects flying 'upward' have a chance to hit the cliff instead, wasting the shot. + else if(istype(mover, /obj)) + var/obj/O = mover + if(check_shield_arc(src, dir, O)) // This is actually for mobs but it will work for our purposes as well. + if(prob(uphill_penalty / (1 + is_double_cliff) )) // Firing upwards facing NORTH means it will likely have to pass through two cliffs, so the chance is halved. + return FALSE + return TRUE + +/obj/structure/cliff/Bumped(atom/A) + if(isliving(A)) + var/mob/living/L = A + if(should_fall(L)) + fall_off_cliff(L) + return + ..() + +/obj/structure/cliff/proc/should_fall(mob/living/L) + if(L.hovering) + return FALSE + + var/turf/T = get_turf(L) + if(T && get_dir(T, loc) & reverse_dir[dir]) // dir points 'up' the cliff, e.g. cliff pointing NORTH will cause someone to fall if moving SOUTH into it. + return TRUE + return FALSE + +/obj/structure/cliff/proc/fall_off_cliff(mob/living/L) + if(!istype(L)) + return FALSE + var/turf/T = get_step(src, reverse_dir[dir]) + var/displaced = FALSE + + if(dir in list(EAST, WEST)) // Apply an offset if flying sideways, to help maintain the illusion of depth. + for(var/i = 1 to 2) + var/turf/new_T = locate(T.x, T.y - i, T.z) + if(!new_T || locate(/obj/structure/cliff) in new_T) + break + T = new_T + displaced = TRUE + + if(istype(T)) + visible_message(span("danger", "\The [L] falls off \the [src]!")) + L.forceMove(T) + + // Do the actual hurting. Double cliffs do halved damage due to them most likely hitting twice. + var/harm = !is_double_cliff ? 1 : 0.5 + if(istype(L.buckled, /obj/vehicle)) // People falling off in vehicles will take less damage, but will damage the vehicle severely. + var/obj/vehicle/vehicle = L.buckled + vehicle.adjust_health(40 * harm) + to_chat(L, span("warning", "\The [vehicle] absorbs some of the impact, damaging it.")) + harm /= 2 + + playsound(L, 'sound/effects/break_stone.ogg', 70, 1) + L.Weaken(5 * harm) + var/fall_time = 3 + if(displaced) // Make the fall look more natural when falling sideways. + L.pixel_z = 32 * 2 + animate(L, pixel_z = 0, time = fall_time) + sleep(fall_time) // A brief delay inbetween the two sounds helps sell the 'ouch' effect. + playsound(L, "punch", 70, 1) + shake_camera(L, 1, 1) + visible_message(span("danger", "\The [L] hits the ground!")) + + // The bigger they are, the harder they fall. + // They will take at least 20 damage at the minimum, and tries to scale up to 40% of their max health. + // This scaling is capped at 100 total damage, which occurs if the thing that fell has more than 250 health. + var/damage = between(20, L.getMaxHealth() * 0.4, 100) + var/target_zone = ran_zone() + var/blocked = L.run_armor_check(target_zone, "melee") * harm + var/soaked = L.get_armor_soak(target_zone, "melee") * harm + + L.apply_damage(damage * harm, BRUTE, target_zone, blocked, soaked, used_weapon=src) + + // Now fall off more cliffs below this one if they exist. + var/obj/structure/cliff/bottom_cliff = locate() in T + if(bottom_cliff) + visible_message(span("danger", "\The [L] rolls down towards \the [bottom_cliff]!")) + sleep(5) + bottom_cliff.fall_off_cliff(L) + +/obj/structure/cliff/can_climb(mob/living/user, post_climb_check = FALSE) + // Cliff climbing requires climbing gear. + if(ishuman(user)) + var/mob/living/carbon/human/H = user + var/obj/item/clothing/shoes/shoes = H.shoes + if(shoes && shoes.rock_climbing) + return ..() // Do the other checks too. + + to_chat(user, span("warning", "\The [src] is too steep to climb unassisted.")) + return FALSE + +// This tells AI mobs to not be dumb and step off cliffs willingly. +/obj/structure/cliff/is_safe_to_step(mob/living/L) + if(should_fall(L)) + return FALSE + return ..() diff --git a/code/game/objects/structures/coathanger.dm b/code/game/objects/structures/coathanger.dm index 625af060db..c457c35f67 100644 --- a/code/game/objects/structures/coathanger.dm +++ b/code/game/objects/structures/coathanger.dm @@ -27,7 +27,7 @@ user << "You cannot hang [W] on [src]" return ..() -/obj/structure/coatrack/CanPass(atom/movable/mover, turf/target, height=0, air_group=0) +/obj/structure/coatrack/CanPass(atom/movable/mover, turf/target) var/can_hang = 0 for (var/T in allowed) if(istype(mover,T)) diff --git a/code/game/objects/structures/crates_lockers/closets.dm b/code/game/objects/structures/crates_lockers/closets.dm index 4a392c0bfe..66c219293e 100644 --- a/code/game/objects/structures/crates_lockers/closets.dm +++ b/code/game/objects/structures/crates_lockers/closets.dm @@ -32,7 +32,12 @@ var/list/starts_with -/obj/structure/closet/initialize() +/obj/structure/closet/Initialize() + ..() + // Closets need to come later because of spawners potentially creating objects during init. + return INITIALIZE_HINT_LATELOAD + +/obj/structure/closet/LateInitialize() . = ..() if(starts_with) create_objects_in_loc(src, starts_with) @@ -47,7 +52,7 @@ // adjust locker size to hold all items with 5 units of free store room var/content_size = 0 for(I in src.contents) - content_size += Ceiling(I.w_class/2) + content_size += CEILING(I.w_class/2, 1) if(content_size > storage_capacity-5) storage_capacity = content_size + 5 update_icon() @@ -57,7 +62,7 @@ var/content_size = 0 for(var/obj/item/I in src.contents) if(!I.anchored) - content_size += Ceiling(I.w_class/2) + content_size += CEILING(I.w_class/2, 1) if(!content_size) to_chat(user, "It is empty.") else if(storage_capacity > content_size*4) @@ -69,9 +74,10 @@ else to_chat(user, "It is full.") -/obj/structure/closet/CanPass(atom/movable/mover, turf/target, height=0, air_group=0) - if(air_group || (height==0 || wall_mounted)) return 1 - return (!density) +/obj/structure/closet/CanPass(atom/movable/mover, turf/target) + if(wall_mounted) + return TRUE + return ..() /obj/structure/closet/proc/can_open() if(src.sealed) @@ -114,7 +120,8 @@ src.icon_state = src.icon_opened src.opened = 1 playsound(src.loc, open_sound, 15, 1, -3) - density = !density + if(initial(density)) + density = !density return 1 /obj/structure/closet/proc/close() @@ -138,7 +145,8 @@ src.opened = 0 playsound(src.loc, close_sound, 15, 1, -3) - density = !density + if(initial(density)) + density = !density return 1 //Cham Projector Exception @@ -154,7 +162,7 @@ /obj/structure/closet/proc/store_items(var/stored_units) var/added_units = 0 for(var/obj/item/I in src.loc) - var/item_size = Ceiling(I.w_class / 2) + var/item_size = CEILING(I.w_class / 2, 1) if(stored_units + added_units + item_size > storage_capacity) continue if(!I.anchored) @@ -381,8 +389,8 @@ else icon_state = icon_opened -/obj/structure/closet/attack_generic(var/mob/user, var/damage, var/attack_message = "destroys", var/wallbreaker) - if(damage < 10 || !wallbreaker) +/obj/structure/closet/attack_generic(var/mob/user, var/damage, var/attack_message = "destroys") + if(damage < STRUCTURE_MIN_DAMAGE_THRESHOLD) return user.do_attack_animation(src) visible_message("[user] [attack_message] the [src]!") @@ -459,4 +467,4 @@ if(src.loc) if(istype(src.loc, /obj/structure/closet)) return (loc.return_air_for_internal_lifeform(L)) - return return_air() \ No newline at end of file + return return_air() diff --git a/code/game/objects/structures/crates_lockers/closets/coffin.dm b/code/game/objects/structures/crates_lockers/closets/coffin.dm index 6d5df80ed8..9257c2d3a3 100644 --- a/code/game/objects/structures/crates_lockers/closets/coffin.dm +++ b/code/game/objects/structures/crates_lockers/closets/coffin.dm @@ -39,7 +39,7 @@ "You stop climbing into \the [src.name].") return -/obj/structure/closet/grave/CanPass(atom/movable/mover, turf/target, height=0, air_group=0) +/obj/structure/closet/grave/CanPass(atom/movable/mover, turf/target) if(opened && ismob(mover)) var/mob/M = mover add_fingerprint(M) diff --git a/code/game/objects/structures/crates_lockers/closets/fireaxe.dm b/code/game/objects/structures/crates_lockers/closets/fireaxe.dm index cad925f6e8..2621da2253 100644 --- a/code/game/objects/structures/crates_lockers/closets/fireaxe.dm +++ b/code/game/objects/structures/crates_lockers/closets/fireaxe.dm @@ -16,7 +16,7 @@ starts_with = list(/obj/item/weapon/material/twohanded/fireaxe) -/obj/structure/closet/fireaxecabinet/initialize() +/obj/structure/closet/fireaxecabinet/Initialize() ..() fireaxe = locate() in contents diff --git a/code/game/objects/structures/crates_lockers/closets/secure/cargo.dm b/code/game/objects/structures/crates_lockers/closets/secure/cargo.dm index ef68d7ca60..8429b5abdd 100644 --- a/code/game/objects/structures/crates_lockers/closets/secure/cargo.dm +++ b/code/game/objects/structures/crates_lockers/closets/secure/cargo.dm @@ -22,7 +22,7 @@ /obj/item/clothing/gloves/fingerless, /obj/item/clothing/head/soft) -/obj/structure/closet/secure_closet/cargotech/initialize() +/obj/structure/closet/secure_closet/cargotech/Initialize() if(prob(75)) starts_with += /obj/item/weapon/storage/backpack else @@ -59,7 +59,7 @@ /obj/item/clothing/suit/storage/hooded/wintercoat/cargo, /obj/item/clothing/shoes/boots/winter/supply) -/obj/structure/closet/secure_closet/quartermaster/initialize() +/obj/structure/closet/secure_closet/quartermaster/Initialize() if(prob(75)) starts_with += /obj/item/weapon/storage/backpack else @@ -93,7 +93,7 @@ /obj/item/clothing/shoes/boots/winter/mining, /obj/item/stack/marker_beacon/thirty) -/obj/structure/closet/secure_closet/miner/initialize() +/obj/structure/closet/secure_closet/miner/Initialize() if(prob(50)) starts_with += /obj/item/weapon/storage/backpack/industrial else diff --git a/code/game/objects/structures/crates_lockers/closets/secure/engineering.dm b/code/game/objects/structures/crates_lockers/closets/secure/engineering.dm index 3ed5806143..8380c059ec 100644 --- a/code/game/objects/structures/crates_lockers/closets/secure/engineering.dm +++ b/code/game/objects/structures/crates_lockers/closets/secure/engineering.dm @@ -33,7 +33,7 @@ /obj/item/weapon/tank/emergency/oxygen/engi, /obj/item/weapon/reagent_containers/spray/windowsealant) //VOREStation Add -/obj/structure/closet/secure_closet/engineering_chief/initialize() +/obj/structure/closet/secure_closet/engineering_chief/Initialize() if(prob(50)) starts_with += /obj/item/weapon/storage/backpack/industrial else @@ -100,7 +100,7 @@ /obj/item/weapon/tank/emergency/oxygen/engi, /obj/item/weapon/reagent_containers/spray/windowsealant) //VOREStation Add -/obj/structure/closet/secure_closet/engineering_personal/initialize() +/obj/structure/closet/secure_closet/engineering_personal/Initialize() if(prob(50)) starts_with += /obj/item/weapon/storage/backpack/industrial else @@ -135,7 +135,7 @@ /obj/item/clothing/shoes/boots/winter/atmos, /obj/item/weapon/tank/emergency/oxygen/engi) -/obj/structure/closet/secure_closet/atmos_personal/initialize() +/obj/structure/closet/secure_closet/atmos_personal/Initialize() if(prob(50)) starts_with += /obj/item/weapon/storage/backpack/industrial else diff --git a/code/game/objects/structures/crates_lockers/closets/secure/freezer.dm b/code/game/objects/structures/crates_lockers/closets/secure/freezer.dm index c6eddffe83..1117a0f8cc 100644 --- a/code/game/objects/structures/crates_lockers/closets/secure/freezer.dm +++ b/code/game/objects/structures/crates_lockers/closets/secure/freezer.dm @@ -49,7 +49,8 @@ starts_with = list( /obj/item/weapon/reagent_containers/food/drinks/milk = 6, /obj/item/weapon/reagent_containers/food/drinks/soymilk = 4, - /obj/item/weapon/storage/fancy/egg_box = 4) + /obj/item/weapon/storage/fancy/egg_box = 4, + /obj/item/weapon/reagent_containers/hypospray/autoinjector/biginjector/glucose = 2) /obj/structure/closet/secure_closet/freezer/money diff --git a/code/game/objects/structures/crates_lockers/closets/secure/guncabinet.dm b/code/game/objects/structures/crates_lockers/closets/secure/guncabinet.dm index 62497919fc..2be8e52db1 100644 --- a/code/game/objects/structures/crates_lockers/closets/secure/guncabinet.dm +++ b/code/game/objects/structures/crates_lockers/closets/secure/guncabinet.dm @@ -9,7 +9,7 @@ icon_opened = "base" req_one_access = list(access_armory) -/obj/structure/closet/secure_closet/guncabinet/initialize() +/obj/structure/closet/secure_closet/guncabinet/Initialize() . = ..() update_icon() diff --git a/code/game/objects/structures/crates_lockers/closets/secure/hydroponics.dm b/code/game/objects/structures/crates_lockers/closets/secure/hydroponics.dm index c2a8a40e7e..45f9c77059 100644 --- a/code/game/objects/structures/crates_lockers/closets/secure/hydroponics.dm +++ b/code/game/objects/structures/crates_lockers/closets/secure/hydroponics.dm @@ -16,12 +16,13 @@ /obj/item/clothing/head/greenbandana, /obj/item/weapon/material/minihoe, /obj/item/weapon/material/knife/machete/hatchet, + /obj/item/weapon/reagent_containers/glass/beaker = 2, /obj/item/weapon/tool/wirecutters/clippers/trimmers, /obj/item/weapon/reagent_containers/spray/plantbgone, /obj/item/clothing/suit/storage/hooded/wintercoat/hydro, /obj/item/clothing/shoes/boots/winter/hydro) -/obj/structure/closet/secure_closet/hydroponics/initialize() +/obj/structure/closet/secure_closet/hydroponics/Initialize() if(prob(50)) starts_with += /obj/item/clothing/suit/storage/apron else diff --git a/code/game/objects/structures/crates_lockers/closets/secure/medical.dm b/code/game/objects/structures/crates_lockers/closets/secure/medical.dm index 471fa446fb..86cb24dc8c 100644 --- a/code/game/objects/structures/crates_lockers/closets/secure/medical.dm +++ b/code/game/objects/structures/crates_lockers/closets/secure/medical.dm @@ -60,7 +60,7 @@ /obj/item/clothing/head/nursehat, /obj/item/weapon/storage/box/freezer = 3) -/obj/structure/closet/secure_closet/medical3/initialize() +/obj/structure/closet/secure_closet/medical3/Initialize() if(prob(50)) starts_with += /obj/item/weapon/storage/backpack/medic else @@ -170,7 +170,7 @@ /obj/item/clothing/shoes/white, /obj/item/weapon/reagent_containers/glass/beaker/vial) //VOREStation Add -/obj/structure/closet/secure_closet/CMO/initialize() +/obj/structure/closet/secure_closet/CMO/Initialize() if(prob(50)) starts_with += /obj/item/weapon/storage/backpack/medic else diff --git a/code/game/objects/structures/crates_lockers/closets/secure/personal.dm b/code/game/objects/structures/crates_lockers/closets/secure/personal.dm index b7a09db3c4..454fab779d 100644 --- a/code/game/objects/structures/crates_lockers/closets/secure/personal.dm +++ b/code/game/objects/structures/crates_lockers/closets/secure/personal.dm @@ -7,7 +7,7 @@ starts_with = list( /obj/item/device/radio/headset) -/obj/structure/closet/secure_closet/personal/initialize() +/obj/structure/closet/secure_closet/personal/Initialize() if(prob(50)) starts_with += /obj/item/weapon/storage/backpack else diff --git a/code/game/objects/structures/crates_lockers/closets/secure/scientist.dm b/code/game/objects/structures/crates_lockers/closets/secure/scientist.dm index 64cb0920f3..4e78a613e4 100644 --- a/code/game/objects/structures/crates_lockers/closets/secure/scientist.dm +++ b/code/game/objects/structures/crates_lockers/closets/secure/scientist.dm @@ -18,7 +18,7 @@ /obj/item/clothing/suit/storage/hooded/wintercoat/science, /obj/item/clothing/shoes/boots/winter/science) -/obj/structure/closet/secure_closet/scientist/initialize() +/obj/structure/closet/secure_closet/scientist/Initialize() if(prob(50)) starts_with += /obj/item/weapon/storage/backpack/dufflebag/sci else diff --git a/code/game/objects/structures/crates_lockers/closets/secure/security.dm b/code/game/objects/structures/crates_lockers/closets/secure/security.dm index cde21c14ac..739188f974 100644 --- a/code/game/objects/structures/crates_lockers/closets/secure/security.dm +++ b/code/game/objects/structures/crates_lockers/closets/secure/security.dm @@ -41,6 +41,8 @@ /obj/item/weapon/storage/box/ids = 2, /obj/item/weapon/gun/energy/gun, /obj/item/weapon/gun/energy/gun/martin, //VOREStation Add, + /obj/item/weapon/storage/box/commandkeys, //VOREStation Add, + /obj/item/weapon/storage/box/servicekeys, //VOREStation Add, ///obj/item/weapon/gun/projectile/sec/flash, //VOREStation Removal, /obj/item/device/flash) @@ -121,7 +123,7 @@ /obj/item/device/flashlight/maglight, /obj/item/clothing/mask/gas/half) -/obj/structure/closet/secure_closet/hos/initialize() +/obj/structure/closet/secure_closet/hos/Initialize() if(prob(50)) starts_with += /obj/item/weapon/storage/backpack/security else @@ -173,7 +175,7 @@ /obj/item/ammo_magazine/m12gdrumjack/beanbag, /obj/item/ammo_magazine/m12gdrumjack/beanbag) -/obj/structure/closet/secure_closet/warden/initialize() +/obj/structure/closet/secure_closet/warden/Initialize() if(prob(50)) starts_with += /obj/item/weapon/storage/backpack/security else @@ -217,7 +219,7 @@ /obj/item/clothing/shoes/boots/winter/security, /obj/item/device/flashlight/maglight) -/obj/structure/closet/secure_closet/security/initialize() +/obj/structure/closet/secure_closet/security/Initialize() if(prob(50)) starts_with += /obj/item/weapon/storage/backpack/security else @@ -226,22 +228,22 @@ starts_with += /obj/item/weapon/storage/backpack/dufflebag/sec return ..() -/obj/structure/closet/secure_closet/security/cargo/initialize() +/obj/structure/closet/secure_closet/security/cargo/Initialize() starts_with += /obj/item/clothing/accessory/armband/cargo starts_with += /obj/item/device/encryptionkey/headset_cargo return ..() -/obj/structure/closet/secure_closet/security/engine/initialize() +/obj/structure/closet/secure_closet/security/engine/Initialize() starts_with += /obj/item/clothing/accessory/armband/engine starts_with += /obj/item/device/encryptionkey/headset_eng return ..() -/obj/structure/closet/secure_closet/security/science/initialize() +/obj/structure/closet/secure_closet/security/science/Initialize() starts_with += /obj/item/clothing/accessory/armband/science starts_with += /obj/item/device/encryptionkey/headset_sci return ..() -/obj/structure/closet/secure_closet/security/med/initialize() +/obj/structure/closet/secure_closet/security/med/Initialize() starts_with += /obj/item/clothing/accessory/armband/medblue starts_with += /obj/item/device/encryptionkey/headset_med return ..() diff --git a/code/game/objects/structures/crates_lockers/closets/secure/security_vr.dm b/code/game/objects/structures/crates_lockers/closets/secure/security_vr.dm index adc4499044..38d3658910 100644 --- a/code/game/objects/structures/crates_lockers/closets/secure/security_vr.dm +++ b/code/game/objects/structures/crates_lockers/closets/secure/security_vr.dm @@ -97,7 +97,7 @@ /obj/item/clothing/shoes/boots/jackboots, /obj/item/clothing/shoes/boots/jackboots/toeless) -/obj/structure/closet/secure_closet/nanotrasen_security/initialize() +/obj/structure/closet/secure_closet/nanotrasen_security/Initialize() if(prob(25)) starts_with += /obj/item/weapon/storage/backpack/security else @@ -151,7 +151,7 @@ /obj/item/clothing/shoes/boots/jackboots/toeless, /obj/item/clothing/under/nanotrasen/security/commander) -/obj/structure/closet/secure_closet/nanotrasen_commander/initialize() +/obj/structure/closet/secure_closet/nanotrasen_commander/Initialize() if(prob(25)) starts_with += /obj/item/weapon/storage/backpack/security else @@ -197,7 +197,7 @@ /obj/item/clothing/shoes/boots/jackboots, /obj/item/clothing/shoes/boots/jackboots/toeless) -/obj/structure/closet/secure_closet/nanotrasen_warden/initialize() +/obj/structure/closet/secure_closet/nanotrasen_warden/Initialize() if(prob(25)) new /obj/item/weapon/storage/backpack/security(src) else diff --git a/code/game/objects/structures/crates_lockers/closets/statue.dm b/code/game/objects/structures/crates_lockers/closets/statue.dm index 2ff44ee9df..2ea6372aef 100644 --- a/code/game/objects/structures/crates_lockers/closets/statue.dm +++ b/code/game/objects/structures/crates_lockers/closets/statue.dm @@ -43,7 +43,7 @@ qdel(src) return - processing_objects.Add(src) + START_PROCESSING(SSobj, src) ..() /obj/structure/closet/statue/process() @@ -55,7 +55,7 @@ M.setOxyLoss(intialOxy) if (timer <= 0) dump_contents() - processing_objects.Remove(src) + STOP_PROCESSING(SSobj, src) qdel(src) /obj/structure/closet/statue/dump_contents() diff --git a/code/game/objects/structures/crates_lockers/closets/syndicate.dm b/code/game/objects/structures/crates_lockers/closets/syndicate.dm index 1194b7f9fa..f608c05b26 100644 --- a/code/game/objects/structures/crates_lockers/closets/syndicate.dm +++ b/code/game/objects/structures/crates_lockers/closets/syndicate.dm @@ -48,7 +48,7 @@ /obj/structure/closet/syndicate/resources desc = "An old, dusty locker." -/obj/structure/closet/syndicate/resources/initialize() +/obj/structure/closet/syndicate/resources/Initialize() . = ..() if(!contents.len) var/common_min = 30 //Minimum amount of minerals in the stack for common minerals @@ -103,7 +103,7 @@ /obj/structure/closet/syndicate/resources/everything desc = "It's an emergency storage closet for repairs." -/obj/structure/closet/syndicate/resources/everything/initialize() +/obj/structure/closet/syndicate/resources/everything/Initialize() var/list/resources = list( /obj/item/stack/material/steel, /obj/item/stack/material/glass, diff --git a/code/game/objects/structures/crates_lockers/closets/utility_closets.dm b/code/game/objects/structures/crates_lockers/closets/utility_closets.dm index 1336890b13..b15f45d6fb 100644 --- a/code/game/objects/structures/crates_lockers/closets/utility_closets.dm +++ b/code/game/objects/structures/crates_lockers/closets/utility_closets.dm @@ -19,7 +19,7 @@ icon_closed = "emergency" icon_opened = "emergencyopen" -/obj/structure/closet/emcloset/initialize() +/obj/structure/closet/emcloset/Initialize() switch (pickweight(list("small" = 55, "aid" = 25, "tank" = 10, "both" = 10))) if ("small") starts_with = list( @@ -106,7 +106,7 @@ icon_closed = "toolcloset" icon_opened = "toolclosetopen" -/obj/structure/closet/toolcloset/initialize() +/obj/structure/closet/toolcloset/Initialize() starts_with = list() if(prob(40)) starts_with += /obj/item/clothing/suit/storage/hazardvest diff --git a/code/game/objects/structures/crates_lockers/closets/utility_closets_vr.dm b/code/game/objects/structures/crates_lockers/closets/utility_closets_vr.dm index 54abff6eb3..c126b965f3 100644 --- a/code/game/objects/structures/crates_lockers/closets/utility_closets_vr.dm +++ b/code/game/objects/structures/crates_lockers/closets/utility_closets_vr.dm @@ -1,4 +1,4 @@ -/obj/structure/closet/firecloset/initialize() +/obj/structure/closet/firecloset/Initialize() starts_with += /obj/item/weapon/storage/toolbox/emergency return ..() diff --git a/code/game/objects/structures/crates_lockers/closets/wardrobe.dm b/code/game/objects/structures/crates_lockers/closets/wardrobe.dm index 2a7d883d95..9bdc9659e2 100644 --- a/code/game/objects/structures/crates_lockers/closets/wardrobe.dm +++ b/code/game/objects/structures/crates_lockers/closets/wardrobe.dm @@ -12,6 +12,7 @@ starts_with = list( /obj/item/clothing/under/rank/security = 3, /obj/item/clothing/under/rank/security2 = 3, + /obj/item/clothing/under/rank/security/turtleneck = 3, /obj/item/clothing/under/rank/security/skirt = 2, /obj/item/clothing/shoes/boots/jackboots = 3, /obj/item/clothing/head/soft/sec = 3, @@ -22,7 +23,7 @@ /obj/item/clothing/accessory/armband = 3, /obj/item/clothing/accessory/holster/waist = 3) -/obj/structure/closet/wardrobe/red/initialize() +/obj/structure/closet/wardrobe/red/Initialize() if(prob(50)) starts_with += /obj/item/weapon/storage/backpack/security else @@ -101,6 +102,9 @@ /obj/item/clothing/under/wedding/bride_white, /obj/item/weapon/storage/backpack/cultpack, /obj/item/weapon/storage/fancy/candle_box = 2, + /obj/item/weapon/storage/fancy/whitecandle_box, + /obj/item/weapon/storage/fancy/blackcandle_box, + /obj/item/godfig = 2, /obj/item/weapon/deck/tarot) @@ -175,6 +179,7 @@ starts_with = list( /obj/item/clothing/under/rank/engineer = 3, /obj/item/clothing/under/rank/engineer/skirt = 3, + /obj/item/clothing/under/rank/engineer/turtleneck = 3, /obj/item/clothing/shoes/orange = 3, /obj/item/clothing/head/hardhat = 3, /obj/item/clothing/head/beret/engineering = 3, @@ -188,7 +193,7 @@ name = "white wardrobe" icon_state = "white" icon_closed = "white" - + starts_with = list( /obj/item/clothing/under/color/white = 3, /obj/item/clothing/shoes/white = 3, @@ -215,6 +220,7 @@ starts_with = list( /obj/item/clothing/under/rank/scientist = 3, /obj/item/clothing/under/rank/scientist/skirt = 2, + /obj/item/clothing/under/rank/scientist/turtleneck = 3, /obj/item/clothing/suit/storage/toggle/labcoat = 3, /obj/item/clothing/shoes/white = 3, /obj/item/clothing/shoes/slippers = 3, @@ -223,7 +229,7 @@ /obj/item/weapon/storage/backpack/toxins, /obj/item/weapon/storage/backpack/satchel/tox) -/obj/structure/closet/wardrobe/science_white/initialize() +/obj/structure/closet/wardrobe/science_white/Initialize() if(prob(50)) starts_with += /obj/item/weapon/storage/backpack/dufflebag/sci else @@ -249,12 +255,12 @@ /obj/item/weapon/storage/backpack/toxins, /obj/item/weapon/storage/backpack/satchel/tox) -/obj/structure/closet/wardrobe/robotics_black/initialize() +/obj/structure/closet/wardrobe/robotics_black/Initialize() if(prob(50)) starts_with += /obj/item/weapon/storage/backpack/dufflebag/sci else starts_with += /obj/item/weapon/storage/backpack/satchel/tox - + return ..() @@ -310,6 +316,7 @@ starts_with = list( /obj/item/clothing/under/rank/medical = 2, /obj/item/clothing/under/rank/medical/skirt = 2, + /obj/item/clothing/under/rank/medical/turtleneck = 2, /obj/item/clothing/under/rank/medical/scrubs, /obj/item/clothing/under/rank/medical/scrubs/green, /obj/item/clothing/under/rank/medical/scrubs/purple, @@ -340,12 +347,12 @@ name = "grey wardrobe" icon_state = "grey" icon_closed = "grey" - + starts_with = list( /obj/item/clothing/under/color/grey = 3, /obj/item/clothing/shoes/black = 3, /obj/item/clothing/head/soft/grey = 3) - + /obj/structure/closet/wardrobe/mixed name = "mixed wardrobe" @@ -401,7 +408,7 @@ /obj/item/clothing/gloves/black, /obj/item/clothing/under/pants/camo) -/obj/structure/closet/wardrobe/tactical/initialize() +/obj/structure/closet/wardrobe/tactical/Initialize() if(prob(25)) starts_with += /obj/item/weapon/storage/belt/security/tactical/bandolier else diff --git a/code/game/objects/structures/crates_lockers/largecrate.dm b/code/game/objects/structures/crates_lockers/largecrate.dm index 2c739985b2..a7a4b77823 100644 --- a/code/game/objects/structures/crates_lockers/largecrate.dm +++ b/code/game/objects/structures/crates_lockers/largecrate.dm @@ -6,7 +6,7 @@ density = 1 var/list/starts_with -/obj/structure/largecrate/initialize() +/obj/structure/largecrate/Initialize() . = ..() if(starts_with) create_objects_in_loc(src, starts_with) @@ -63,7 +63,7 @@ desc = "It comes in a box for the consumer's sake. ..How is this lighter?" icon_state = "vehiclecrate" -/obj/structure/largecrate/vehicle/initialize() +/obj/structure/largecrate/vehicle/Initialize() ..() spawn(1) for(var/obj/O in contents) @@ -90,23 +90,23 @@ /obj/structure/largecrate/animal/corgi name = "corgi carrier" - starts_with = list(/mob/living/simple_animal/corgi) + starts_with = list(/mob/living/simple_mob/animal/passive/dog/corgi) /obj/structure/largecrate/animal/cow name = "cow crate" - starts_with = list(/mob/living/simple_animal/cow) + starts_with = list(/mob/living/simple_mob/animal/passive/cow) /obj/structure/largecrate/animal/goat name = "goat crate" - starts_with = list(/mob/living/simple_animal/retaliate/goat) + starts_with = list(/mob/living/simple_mob/animal/goat) /obj/structure/largecrate/animal/cat name = "cat carrier" - starts_with = list(/mob/living/simple_animal/cat) + starts_with = list(/mob/living/simple_mob/animal/passive/cat) /obj/structure/largecrate/animal/cat/bones - starts_with = list(/mob/living/simple_animal/cat/fluff/bones) + starts_with = list(/mob/living/simple_mob/animal/passive/cat/bones) /obj/structure/largecrate/animal/chick name = "chicken crate" - starts_with = list(/mob/living/simple_animal/chick = 5) + starts_with = list(/mob/living/simple_mob/animal/passive/chick = 5) diff --git a/code/game/objects/structures/crates_lockers/largecrate_vr.dm b/code/game/objects/structures/crates_lockers/largecrate_vr.dm index e45ce509d2..c151409e62 100644 --- a/code/game/objects/structures/crates_lockers/largecrate_vr.dm +++ b/code/game/objects/structures/crates_lockers/largecrate_vr.dm @@ -5,28 +5,27 @@ /obj/structure/largecrate/birds/attackby(obj/item/weapon/W as obj, mob/user as mob) if(W.is_crowbar()) new /obj/item/stack/material/wood(src) - new /mob/living/simple_animal/bird(src) - new /mob/living/simple_animal/bird/kea(src) - new /mob/living/simple_animal/bird/eclectus(src) - new /mob/living/simple_animal/bird/greybird(src) - new /mob/living/simple_animal/bird/eclectusf(src) - new /mob/living/simple_animal/bird/blue_caique(src) - new /mob/living/simple_animal/bird/white_caique(src) - new /mob/living/simple_animal/bird/green_budgerigar(src) - new /mob/living/simple_animal/bird/blue_Budgerigar(src) - new /mob/living/simple_animal/bird/bluegreen_Budgerigar(src) - new /mob/living/simple_animal/bird/commonblackbird(src) - new /mob/living/simple_animal/bird/azuretit(src) - new /mob/living/simple_animal/bird/europeanrobin(src) - new /mob/living/simple_animal/bird/goldcrest(src) - new /mob/living/simple_animal/bird/ringneckdove(src) - new /mob/living/simple_animal/bird/cockatiel(src) - new /mob/living/simple_animal/bird/white_cockatiel(src) - new /mob/living/simple_animal/bird/yellowish_cockatiel(src) - new /mob/living/simple_animal/bird/grey_cockatiel(src) - new /mob/living/simple_animal/bird/too(src) - new /mob/living/simple_animal/bird/hooded_too(src) - new /mob/living/simple_animal/bird/pink_too(src) + new /mob/living/simple_mob/animal/passive/bird(src) + new /mob/living/simple_mob/animal/passive/bird/parrot/kea(src) + new /mob/living/simple_mob/animal/passive/bird/parrot/eclectus(src) + new /mob/living/simple_mob/animal/passive/bird/parrot/grey_parrot(src) + new /mob/living/simple_mob/animal/passive/bird/parrot/black_headed_caique(src) + new /mob/living/simple_mob/animal/passive/bird/parrot/white_caique(src) + new /mob/living/simple_mob/animal/passive/bird/parrot/budgerigar(src) + new /mob/living/simple_mob/animal/passive/bird/parrot/budgerigar/blue(src) + new /mob/living/simple_mob/animal/passive/bird/parrot/budgerigar/bluegreen(src) + new /mob/living/simple_mob/animal/passive/bird/black_bird(src) + new /mob/living/simple_mob/animal/passive/bird/azure_tit(src) + new /mob/living/simple_mob/animal/passive/bird/european_robin(src) + new /mob/living/simple_mob/animal/passive/bird/goldcrest(src) + new /mob/living/simple_mob/animal/passive/bird/ringneck_dove(src) + new /mob/living/simple_mob/animal/passive/bird/parrot/cockatiel(src) + new /mob/living/simple_mob/animal/passive/bird/parrot/cockatiel/white(src) + new /mob/living/simple_mob/animal/passive/bird/parrot/cockatiel/yellowish(src) + new /mob/living/simple_mob/animal/passive/bird/parrot/cockatiel/grey(src) + new /mob/living/simple_mob/animal/passive/bird/parrot/sulphur_cockatoo(src) + new /mob/living/simple_mob/animal/passive/bird/parrot/white_cockatoo(src) + new /mob/living/simple_mob/animal/passive/bird/parrot/pink_cockatoo(src) var/turf/T = get_turf(src) for(var/atom/movable/AM in contents) if(AM.simulated) AM.forceMove(T) @@ -39,72 +38,72 @@ /obj/structure/largecrate/animal/pred name = "Predator carrier" - starts_with = list(/mob/living/simple_animal/catgirl) + starts_with = list(/mob/living/simple_mob/vore/catgirl) -/obj/structure/largecrate/animal/pred/initialize() //This is nessesary to get a random one each time. - starts_with = list(pick(/mob/living/simple_animal/retaliate/bee, - /mob/living/simple_animal/catgirl;3, - /mob/living/simple_animal/hostile/frog, - /mob/living/simple_animal/horse, - /mob/living/simple_animal/hostile/panther, - /mob/living/simple_animal/hostile/giant_snake, - /mob/living/simple_animal/hostile/wolf, - /mob/living/simple_animal/hostile/bear;0.5, - /mob/living/simple_animal/hostile/bear/brown;0.5, - /mob/living/simple_animal/hostile/carp, - /mob/living/simple_animal/hostile/mimic, - /mob/living/simple_animal/hostile/rat, - /mob/living/simple_animal/hostile/rat/passive, - /mob/living/simple_animal/otie;0.5)) +/obj/structure/largecrate/animal/pred/Initialize() //This is nessesary to get a random one each time. + starts_with = list(pick(/mob/living/simple_mob/vore/bee, + /mob/living/simple_mob/vore/catgirl;3, + /mob/living/simple_mob/vore/aggressive/frog, + /mob/living/simple_mob/vore/horse, + /mob/living/simple_mob/vore/aggressive/panther, + /mob/living/simple_mob/vore/aggressive/giant_snake, + /mob/living/simple_mob/animal/wolf, + /mob/living/simple_mob/animal/space/bear;0.5, + /mob/living/simple_mob/animal/space/carp, + /mob/living/simple_mob/animal/space/mimic, + /mob/living/simple_mob/vore/aggressive/rat, + /mob/living/simple_mob/vore/aggressive/rat/tame, +// /mob/living/simple_mob/otie;0.5 + )) return ..() /obj/structure/largecrate/animal/dangerous name = "Dangerous Predator carrier" - starts_with = list(/mob/living/simple_animal/hostile/alien) + starts_with = list(/mob/living/simple_mob/animal/space/alien) -/obj/structure/largecrate/animal/dangerous/initialize() - starts_with = list(pick(/mob/living/simple_animal/hostile/carp/pike, - /mob/living/simple_animal/hostile/deathclaw, - /mob/living/simple_animal/hostile/dino, - /mob/living/simple_animal/hostile/alien, - /mob/living/simple_animal/hostile/alien/drone, - /mob/living/simple_animal/hostile/alien/sentinel, - /mob/living/simple_animal/hostile/alien/queen, - /mob/living/simple_animal/otie/feral, - /mob/living/simple_animal/otie/red, - /mob/living/simple_animal/hostile/corrupthound)) +/obj/structure/largecrate/animal/dangerous/Initialize() + starts_with = list(pick(/mob/living/simple_mob/animal/space/carp/large, + /mob/living/simple_mob/vore/aggressive/deathclaw, + /mob/living/simple_mob/vore/aggressive/dino, + /mob/living/simple_mob/animal/space/alien, + /mob/living/simple_mob/animal/space/alien/drone, + /mob/living/simple_mob/animal/space/alien/sentinel, + /mob/living/simple_mob/animal/space/alien/queen, +// /mob/living/simple_mob/otie/feral, +// /mob/living/simple_mob/otie/red, + /mob/living/simple_mob/vore/aggressive/corrupthound)) return ..() - +/* /obj/structure/largecrate/animal/guardbeast name = "VARMAcorp autoNOMous security solution" desc = "The VARMAcorp bioengineering division flagship product on trained optimal snowflake guard dogs." icon = 'icons/obj/storage_vr.dmi' icon_state = "sotiecrate" - starts_with = list(/mob/living/simple_animal/otie/security) + starts_with = list(/mob/living/simple_mob/otie/security) /obj/structure/largecrate/animal/guardmutant name = "VARMAcorp autoNOMous security solution for hostile environments." desc = "The VARMAcorp bioengineering division flagship product on trained optimal snowflake guard dogs. This one can survive hostile atmosphere." icon = 'icons/obj/storage_vr.dmi' icon_state = "sotiecrate" - starts_with = list(/mob/living/simple_animal/otie/security/phoron) + starts_with = list(/mob/living/simple_mob/otie/security/phoron) /obj/structure/largecrate/animal/otie name = "VARMAcorp adoptable reject (Dangerous!)" desc = "A warning on the side says the creature inside was returned to the supplier after injuring or devouring several unlucky members of the previous adoption family. It was given a second chance with the next customer. Godspeed and good luck with your new pet!" icon = 'icons/obj/storage_vr.dmi' icon_state = "otiecrate2" - starts_with = list(/mob/living/simple_animal/otie/cotie) + starts_with = list(/mob/living/simple_mob/otie/cotie) var/taped = 1 /obj/structure/largecrate/animal/otie/phoron name = "VARMAcorp adaptive beta subject (Experimental)" desc = "VARMAcorp experimental hostile environment adaptive breeding development kit. WARNING, DO NOT RELEASE IN WILD!" - starts_with = list(/mob/living/simple_animal/otie/cotie/phoron) + starts_with = list(/mob/living/simple_mob/otie/cotie/phoron) -/obj/structure/largecrate/animal/otie/phoron/initialize() - starts_with = list(pick(/mob/living/simple_animal/otie/cotie/phoron;2, - /mob/living/simple_animal/otie/red/friendly;0.5)) +/obj/structure/largecrate/animal/otie/phoron/Initialize() + starts_with = list(pick(/mob/living/simple_mob/otie/cotie/phoron;2, + /mob/living/simple_mob/otie/red/friendly;0.5)) return ..() /obj/structure/largecrate/animal/otie/attack_hand(mob/living/carbon/human/M as mob)//I just couldn't decide between the icons lmao @@ -113,23 +112,24 @@ icon_state = "otiecrate" taped = 0 ..() +*/ //VORESTATION AI REMOVAL, Oties are still fucking broken. /obj/structure/largecrate/animal/catgirl name = "Catgirl Crate" desc = "A sketchy looking crate with airholes that seems to have had most marks and stickers removed. You can almost make out 'genetically-engineered subject' written on it." - starts_with = list(/mob/living/simple_animal/catgirl) + starts_with = list(/mob/living/simple_mob/vore/catgirl) /obj/structure/largecrate/animal/wolfgirl name = "Wolfgirl Crate" desc = "A sketchy looking crate with airholes that shakes and thuds every now and then. Someone seems to be demanding they be let out." - starts_with = list(/mob/living/simple_animal/retaliate/wolfgirl) + starts_with = list(/mob/living/simple_mob/vore/wolfgirl) /obj/structure/largecrate/animal/fennec name = "Fennec Crate" desc = "Bounces around a lot. Looks messily packaged, were they in a hurry?" - starts_with = list(/mob/living/simple_animal/fennec) + starts_with = list(/mob/living/simple_mob/vore/fennec) -/obj/structure/largecrate/animal/fennec/initialize() - starts_with = list(pick(/mob/living/simple_animal/fennec, - /mob/living/simple_animal/retaliate/fennix;0.5)) +/obj/structure/largecrate/animal/fennec/Initialize() + starts_with = list(pick(/mob/living/simple_mob/vore/fennec, + /mob/living/simple_mob/vore/fennix;0.5)) return ..() diff --git a/code/game/objects/structures/crates_lockers/vehiclecage.dm b/code/game/objects/structures/crates_lockers/vehiclecage.dm index 9915ca6a7b..bd525832c1 100644 --- a/code/game/objects/structures/crates_lockers/vehiclecage.dm +++ b/code/game/objects/structures/crates_lockers/vehiclecage.dm @@ -13,7 +13,7 @@ if(my_vehicle) to_chat(user, "It seems to contain \the [my_vehicle].") -/obj/structure/vehiclecage/initialize() +/obj/structure/vehiclecage/Initialize() . = ..() if(my_vehicle_type) my_vehicle = new my_vehicle_type(src) diff --git a/code/game/objects/structures/electricchair.dm b/code/game/objects/structures/electricchair.dm index 1cd43b7910..ae5cba7cf0 100644 --- a/code/game/objects/structures/electricchair.dm +++ b/code/game/objects/structures/electricchair.dm @@ -34,10 +34,10 @@ else on = 1 icon_state = "echair1" - usr << "You switch [on ? "on" : "off"] [src]." + to_chat(usr, "You switch [on ? "on" : "off"] [src].") return -/obj/structure/bed/chair/e_chair/rotate() +/obj/structure/bed/chair/e_chair/rotate_clockwise() ..() overlays.Cut() overlays += image('icons/obj/objects.dmi', src, "echair_over", MOB_LAYER + 1, dir) //there's probably a better way of handling this, but eh. -Pete diff --git a/code/game/objects/structures/fence.dm b/code/game/objects/structures/fence.dm new file mode 100644 index 0000000000..bb99d37d3a --- /dev/null +++ b/code/game/objects/structures/fence.dm @@ -0,0 +1,179 @@ +//Chain link fences +//Sprites ported from /VG/ + +#define CUT_TIME 10 SECONDS +#define CLIMB_TIME 5 SECONDS + +#define NO_HOLE 0 //section is intact +#define MEDIUM_HOLE 1 //medium hole in the section - can climb through +#define LARGE_HOLE 2 //large hole in the section - can walk through +#define MAX_HOLE_SIZE LARGE_HOLE + +/obj/structure/fence + name = "fence" + desc = "A chain link fence. Not as effective as a wall, but generally it keeps people out." + description_info = "Projectiles can freely pass fences." + density = TRUE + anchored = TRUE + + icon = 'icons/obj/fence.dmi' + icon_state = "straight" + + var/cuttable = TRUE + var/hole_size= NO_HOLE + var/invulnerable = FALSE + +/obj/structure/fence/Initialize() + update_cut_status() + return ..() + +/obj/structure/fence/examine(mob/user) + . = ..() + + switch(hole_size) + if(MEDIUM_HOLE) + user.show_message("There is a large hole in \the [src].") + if(LARGE_HOLE) + user.show_message("\The [src] has been completely cut through.") + +/obj/structure/fence/get_description_interaction() + var/list/results = list() + if(cuttable && !invulnerable && hole_size < MAX_HOLE_SIZE) + results += "[desc_panel_image("wirecutters")]to [hole_size > NO_HOLE ? "expand the":"cut a"] hole into the fence, allowing passage." + return results + +/obj/structure/fence/end + icon_state = "end" + cuttable = FALSE + +/obj/structure/fence/corner + icon_state = "corner" + cuttable = FALSE + +/obj/structure/fence/post + icon_state = "post" + cuttable = FALSE + +/obj/structure/fence/cut/medium + icon_state = "straight_cut2" + hole_size = MEDIUM_HOLE + +/obj/structure/fence/cut/large + icon_state = "straight_cut3" + hole_size = LARGE_HOLE + +// Projectiles can pass through fences. +/obj/structure/fence/CanPass(atom/movable/mover, turf/target) + if(istype(mover, /obj/item/projectile)) + return TRUE + return ..() + +/obj/structure/fence/attackby(obj/item/W, mob/user) + if(W.is_wirecutter()) + if(!cuttable) + to_chat(user, span("warning", "This section of the fence can't be cut.")) + return + if(invulnerable) + to_chat(user, span("warning", "This fence is too strong to cut through.")) + return + var/current_stage = hole_size + if(current_stage >= MAX_HOLE_SIZE) + to_chat(user, span("notice", "This fence has too much cut out of it already.")) + return + + user.visible_message(span("danger", "\The [user] starts cutting through \the [src] with \the [W]."),\ + span("danger", "You start cutting through \the [src] with \the [W].")) + playsound(src, W.usesound, 50, 1) + + if(do_after(user, CUT_TIME * W.toolspeed, target = src)) + if(current_stage == hole_size) + switch(++hole_size) + if(MEDIUM_HOLE) + visible_message(span("notice", "\The [user] cuts into \the [src] some more.")) + to_chat(user, span("notice", "You could probably fit yourself through that hole now. Although climbing through would be much faster if you made it even bigger.")) + climbable = TRUE + if(LARGE_HOLE) + visible_message(span("notice", "\The [user] completely cuts through \the [src].")) + to_chat(user, span("notice", "The hole in \the [src] is now big enough to walk through.")) + climbable = FALSE + update_cut_status() + return TRUE + +/obj/structure/fence/proc/update_cut_status() + if(!cuttable) + return + density = TRUE + + switch(hole_size) + if(NO_HOLE) + icon_state = initial(icon_state) + if(MEDIUM_HOLE) + icon_state = "straight_cut2" + if(LARGE_HOLE) + icon_state = "straight_cut3" + density = FALSE + +//FENCE DOORS + +/obj/structure/fence/door + name = "fence door" + desc = "Not very useful without a real lock." + icon_state = "door_closed" + cuttable = FALSE + var/open = FALSE + var/locked = FALSE + +/obj/structure/fence/door/Initialize() + update_door_status() + return ..() + +/obj/structure/fence/door/opened + icon_state = "door_opened" + open = TRUE + density = TRUE + +/obj/structure/fence/door/locked + desc = "It looks like it has a strong padlock attached." + locked = TRUE + +/obj/structure/fence/door/attack_hand(mob/user) + if(can_open(user)) + toggle(user) + else + to_chat(user, span("warning", "\The [src] is [!open ? "locked" : "stuck open"].")) + + return TRUE + +/obj/structure/fence/door/proc/toggle(mob/user) + switch(open) + if(FALSE) + visible_message(span("notice", "\The [user] opens \the [src].")) + open = TRUE + if(TRUE) + visible_message(span("notice", "\The [user] closes \the [src].")) + open = FALSE + + update_door_status() + playsound(src, 'sound/machines/click.ogg', 100, 1) + +/obj/structure/fence/door/proc/update_door_status() + switch(open) + if(FALSE) + density = TRUE + icon_state = "door_closed" + if(TRUE) + density = FALSE + icon_state = "door_opened" + +/obj/structure/fence/door/proc/can_open(mob/user) + if(locked) + return FALSE + return TRUE + +#undef CUT_TIME +#undef CLIMB_TIME + +#undef NO_HOLE +#undef MEDIUM_HOLE +#undef LARGE_HOLE +#undef MAX_HOLE_SIZE \ No newline at end of file diff --git a/code/game/objects/structures/flora.dm b/code/game/objects/structures/flora.dm index 25febad1a3..a5ad07213d 100644 --- a/code/game/objects/structures/flora.dm +++ b/code/game/objects/structures/flora.dm @@ -186,6 +186,7 @@ name = "mysterious potted bulbs" desc = "This is a mysterious looking plant. Touching the bulbs cause them to shrink." icon_state = "plant-07" + catalogue_data = list(/datum/category_item/catalogue/flora/eyebulbs) /obj/structure/flora/pottedplant/smalltree name = "small potted tree" @@ -199,6 +200,7 @@ light_range = 2 light_power = 0.6 light_color = "#33CCFF" + catalogue_data = list(/datum/category_item/catalogue/flora/sif_tree) /obj/structure/flora/pottedplant/orientaltree name = "potted oriental tree" @@ -296,6 +298,19 @@ /obj/structure/flora/sif icon = 'icons/obj/flora/sifflora.dmi' +/datum/category_item/catalogue/flora/subterranean_bulbs + name = "Sivian Flora - Subterranean Bulbs" + desc = "A plant which is native to Sif, it continues the trend of being a bioluminescent specimen. These plants \ + are generally suited for conditions experienced in caverns, which are generally dark and cold. It is not \ + known why this plant evolved to be bioluminescent, however this property has, unintentionally, allowed for \ + it to spread much farther than before, with the assistance of humans.\ +

\ + In Sif's early history, Sivian settlers found this plant while they were establishing mines. Their ability \ + to emit low, but consistant amounts of light made them desirable to the settlers. They would often cultivate \ + this plant inside man-made tunnels and mines to act as a backup source of light that would not need \ + electricity. This technique has saved many lost miners, and this practice continues to this day." + value = CATALOGUER_REWARD_EASY + /obj/structure/flora/sif/subterranean name = "subterranean plant" desc = "This is a subterranean plant. It's bulbous ends glow faintly." @@ -303,16 +318,26 @@ light_range = 2 light_power = 0.6 light_color = "#FF6633" + catalogue_data = list(/datum/category_item/catalogue/flora/subterranean_bulbs) -/obj/structure/flora/sif/subterranean/initialize() +/obj/structure/flora/sif/subterranean/Initialize() icon_state = "[initial(icon_state)][rand(1,2)]" . = ..() + +/datum/category_item/catalogue/flora/eyebulbs + name = "Sivian Flora - Eyebulbs" + desc = "A plant native to Sif. On the end of its stems are bulbs which visually resemble \ + eyes, which shrink when touched. One theory is that the bulbs are a result of mimicry, appearing as eyeballs to protect from predators.

\ + These plants have no known use." + value = CATALOGUER_REWARD_EASY + /obj/structure/flora/sif/eyes name = "mysterious bulbs" desc = "This is a mysterious looking plant. They kind of look like eyeballs. Creepy." icon_state = "eyeplant" + catalogue_data = list(/datum/category_item/catalogue/flora/eyebulbs) -/obj/structure/flora/sif/eyes/initialize() +/obj/structure/flora/sif/eyes/Initialize() icon_state = "[initial(icon_state)][rand(1,3)]" . = ..() diff --git a/code/game/objects/structures/flora/trees.dm b/code/game/objects/structures/flora/trees.dm index 0c2ef3a007..6db66fc01a 100644 --- a/code/game/objects/structures/flora/trees.dm +++ b/code/game/objects/structures/flora/trees.dm @@ -13,6 +13,15 @@ var/obj/item/stack/material/product = null // What you get when chopping this tree down. Generally it will be a type of wood. var/product_amount = 10 // How much of a stack you get, if the above is defined. var/is_stump = FALSE // If true, suspends damage tracking and most other effects. + var/indestructable = FALSE // If true, the tree cannot die. + +/obj/structure/flora/tree/Initialize() + icon_state = choose_icon_state() + return ..() + +// Override this for special icons. +/obj/structure/flora/tree/proc/choose_icon_state() + return icon_state /obj/structure/flora/tree/attackby(var/obj/item/weapon/W, var/mob/living/user) if(!istype(W)) @@ -35,7 +44,7 @@ playsound(get_turf(src), 'sound/effects/woodcutting.ogg', 50, 1) else playsound(get_turf(src), W.hitsound, 50, 1) - if(damage_to_do > 5) + if(damage_to_do > 5 && !indestructable) adjust_health(-damage_to_do) else to_chat(user, "\The [W] is ineffective at harming \the [src].") @@ -53,7 +62,7 @@ // Used when the tree gets hurt. /obj/structure/flora/tree/proc/adjust_health(var/amount, var/damage_wood = FALSE) - if(is_stump) + if(is_stump || indestructable) return // Bullets and lasers ruin some of the wood @@ -68,7 +77,7 @@ // Called when the tree loses all health, for whatever reason. /obj/structure/flora/tree/proc/die() - if(is_stump) + if(is_stump || indestructable) return if(product && product_amount) // Make wooden logs. @@ -122,9 +131,8 @@ product = /obj/item/stack/material/log shake_animation_degrees = 3 -/obj/structure/flora/tree/pine/New() - ..() - icon_state = "[base_state]_[rand(1, 3)]" +/obj/structure/flora/tree/pine/choose_icon_state() + return "[base_state]_[rand(1, 3)]" /obj/structure/flora/tree/pine/xmas @@ -132,9 +140,30 @@ icon = 'icons/obj/flora/pinetrees.dmi' icon_state = "pine_c" -/obj/structure/flora/tree/pine/xmas/New() - ..() - icon_state = "pine_c" +/obj/structure/flora/tree/pine/xmas/presents + icon_state = "pinepresents" + desc = "A wondrous decorated Christmas tree. It has presents!" + indestructable = TRUE + var/gift_type = /obj/item/weapon/a_gift + var/list/ckeys_that_took = list() + +/obj/structure/flora/tree/pine/xmas/presents/choose_icon_state() + return "pinepresents" + +/obj/structure/flora/tree/pine/xmas/presents/attack_hand(mob/living/user) + . = ..() + if(.) + return + if(!user.ckey) + return + + if(ckeys_that_took[user.ckey]) + to_chat(user, span("warning", "There are no presents with your name on.")) + return + to_chat(user, span("notice", "After a bit of rummaging, you locate a gift with your name on it!")) + ckeys_that_took[user.ckey] = TRUE + var/obj/item/G = new gift_type(src) + user.put_in_hands(G) // Palm trees @@ -148,9 +177,8 @@ max_health = 200 pixel_x = 0 -/obj/structure/flora/tree/palm/New() - ..() - icon_state = "[base_state][rand(1, 2)]" +/obj/structure/flora/tree/palm/choose_icon_state() + return "[base_state][rand(1, 2)]" // Dead trees @@ -164,9 +192,8 @@ health = 200 max_health = 200 -/obj/structure/flora/tree/dead/New() - ..() - icon_state = "[base_state]_[rand(1, 6)]" +/obj/structure/flora/tree/dead/choose_icon_state() + return "[base_state]_[rand(1, 6)]" // Small jungle trees @@ -180,9 +207,8 @@ max_health = 400 pixel_x = -32 -/obj/structure/flora/tree/jungle_small/New() - ..() - icon_state = "[base_state][rand(1, 6)]" +/obj/structure/flora/tree/jungle_small/choose_icon_state() + return "[base_state][rand(1, 6)]" // Big jungle trees @@ -198,9 +224,8 @@ pixel_y = -16 shake_animation_degrees = 2 -/obj/structure/flora/tree/jungle/New() - ..() - icon_state = "[base_state][rand(1, 6)]" +/obj/structure/flora/tree/jungle/choose_icon_state() + return "[base_state][rand(1, 6)]" // Winter Trees @@ -239,6 +264,16 @@ // Sif trees +/datum/category_item/catalogue/flora/sif_tree + name = "Sivian Flora - Tree" + desc = "The damp, shaded environment of Sif's most common variety of tree provides an ideal environment for a wide \ + variety of bioluminescent bacteria. The soft glow of the microscopic organisms in turn attracts several native microphagous \ + animals which act as an effective dispersal method. By this mechanism, new trees and bacterial colonies often sprout in \ + unison, having formed a symbiotic relationship over countless years of evolution.\ +

\ + Wood-like material can be obtained from this by cutting it down with a bladed tool." + value = CATALOGUER_REWARD_TRIVIAL + /obj/structure/flora/tree/sif name = "glowing tree" desc = "It's a tree, except this one seems quite alien. It glows a deep blue." @@ -246,12 +281,14 @@ icon_state = "tree_sif" base_state = "tree_sif" product = /obj/item/stack/material/log/sif + catalogue_data = list(/datum/category_item/catalogue/flora/sif_tree) -/obj/structure/flora/tree/sif/New() +/obj/structure/flora/tree/sif/Initialize() update_icon() + return ..() /obj/structure/flora/tree/sif/update_icon() set_light(5, 1, "#33ccff") - var/image/glow = image(icon = 'icons/obj/flora/deadtrees.dmi', icon_state = "[icon_state]_glow") + var/image/glow = image(icon = 'icons/obj/flora/deadtrees.dmi', icon_state = "[base_state]_glow") glow.plane = PLANE_LIGHTING_ABOVE overlays = list(glow) diff --git a/code/game/objects/structures/ghost_pods/ghost_pods.dm b/code/game/objects/structures/ghost_pods/ghost_pods.dm index 16dcd2ddb7..811fc47736 100644 --- a/code/game/objects/structures/ghost_pods/ghost_pods.dm +++ b/code/game/objects/structures/ghost_pods/ghost_pods.dm @@ -59,7 +59,7 @@ var/delay_to_self_open = 10 MINUTES // How long to wait for first attempt. Note that the timer by default starts when the pod is created. var/delay_to_try_again = 20 MINUTES // How long to wait if first attempt fails. Set to 0 to never try again. -/obj/structure/ghost_pod/automatic/initialize() +/obj/structure/ghost_pod/automatic/Initialize() . = ..() spawn(delay_to_self_open) if(src) diff --git a/code/game/objects/structures/ghost_pods/mysterious.dm b/code/game/objects/structures/ghost_pods/mysterious.dm index 2e6a11a8bb..cd34d91e6f 100644 --- a/code/game/objects/structures/ghost_pods/mysterious.dm +++ b/code/game/objects/structures/ghost_pods/mysterious.dm @@ -15,7 +15,7 @@ /obj/structure/ghost_pod/manual/corgi/create_occupant(var/mob/M) lightning_strike(get_turf(src), cosmetic = TRUE) density = FALSE - var/mob/living/simple_animal/corgi/R = new(get_turf(src)) + var/mob/living/simple_mob/animal/passive/dog/corgi/R = new(get_turf(src)) if(M.mind) M.mind.transfer_to(R) to_chat(M, "You are a Corgi! Woof!") @@ -47,4 +47,4 @@ R.ghost_inhabit(M) visible_message("The blade shines brightly for a brief moment as [usr] pulls it out of the stone!") log_and_message_admins("successfully acquired a cursed sword.") - ..() \ No newline at end of file + ..() diff --git a/code/game/objects/structures/girders.dm b/code/game/objects/structures/girders.dm index 058398d850..a24f2868da 100644 --- a/code/game/objects/structures/girders.dm +++ b/code/game/objects/structures/girders.dm @@ -25,12 +25,12 @@ /obj/structure/girder/Destroy() if(girder_material.products_need_process()) - processing_objects -= src + STOP_PROCESSING(SSobj, src) . = ..() /obj/structure/girder/process() if(!radiate()) - processing_objects -= src + STOP_PROCESSING(SSobj, src) return /obj/structure/girder/proc/radiate() @@ -53,9 +53,9 @@ if(applies_material_colour) color = girder_material.icon_colour if(girder_material.products_need_process()) //Am I radioactive or some other? Process me! - processing_objects |= src - else if(src in processing_objects) //If I happened to be radioactive or s.o. previously, and am not now, stop processing. - processing_objects -= src + START_PROCESSING(SSobj, src) + else if(datum_flags & DF_ISPROCESSING) //If I happened to be radioactive or s.o. previously, and am not now, stop processing. + STOP_PROCESSING(SSobj, src) /obj/structure/girder/get_material() return girder_material @@ -83,8 +83,8 @@ health = (displaced_health - round(current_damage / 4)) cover = 25 -/obj/structure/girder/attack_generic(var/mob/user, var/damage, var/attack_message = "smashes apart", var/wallbreaker) - if(!damage || !wallbreaker) +/obj/structure/girder/attack_generic(var/mob/user, var/damage, var/attack_message = "smashes apart") + if(damage < STRUCTURE_MIN_DAMAGE_THRESHOLD) return 0 user.do_attack_animation(src) visible_message("[user] [attack_message] the [src]!") diff --git a/code/game/objects/structures/gravemarker.dm b/code/game/objects/structures/gravemarker.dm index 7ef0d49a51..1df13a6eb4 100644 --- a/code/game/objects/structures/gravemarker.dm +++ b/code/game/objects/structures/gravemarker.dm @@ -38,15 +38,12 @@ if(epitaph) to_chat(user, epitaph) -/obj/structure/gravemarker/CanPass(atom/movable/mover, turf/target, height=0, air_group=0) - if(!mover) - return 1 +/obj/structure/gravemarker/CanPass(atom/movable/mover, turf/target) if(istype(mover) && mover.checkpass(PASSTABLE)) - return 1 + return TRUE if(get_dir(loc, target) & dir) return !density - else - return 1 + return TRUE /obj/structure/gravemarker/CheckExit(atom/movable/O as mob|obj, target as turf) if(istype(O) && O.checkpass(PASSTABLE)) @@ -115,23 +112,20 @@ return -/obj/structure/gravemarker/verb/rotate() - set name = "Rotate Grave Marker" +/obj/structure/gravemarker/verb/rotate_clockwise() + set name = "Rotate Grave Marker Clockwise" set category = "Object" set src in oview(1) if(anchored) return - if(config.ghost_interaction) - src.set_dir(turn(src.dir, 90)) - return - else - if(istype(usr,/mob/living/simple_animal/mouse)) - return - if(!usr || !isturf(usr.loc)) - return - if(usr.stat || usr.restrained()) - return - src.set_dir(turn(src.dir, 90)) - return \ No newline at end of file + if(!usr || !isturf(usr.loc)) + return + if(usr.stat || usr.restrained()) + return + if(ismouse(usr) || (isobserver(usr) && !config.ghost_interaction)) + return + + src.set_dir(turn(src.dir, 270)) + return \ No newline at end of file diff --git a/code/game/objects/structures/grille.dm b/code/game/objects/structures/grille.dm index 50fa3e8c6e..c4b91fc73a 100644 --- a/code/game/objects/structures/grille.dm +++ b/code/game/objects/structures/grille.dm @@ -5,7 +5,6 @@ icon_state = "grille" density = 1 anchored = 1 - flags = CONDUCT pressure_resistance = 5*ONE_ATMOSPHERE layer = TABLE_LAYER explosion_resistance = 1 @@ -49,15 +48,12 @@ attack_generic(user,damage_dealt,attack_message) -/obj/structure/grille/CanPass(atom/movable/mover, turf/target, height=0, air_group=0) - if(air_group || (height==0)) return 1 +/obj/structure/grille/CanPass(atom/movable/mover, turf/target) if(istype(mover) && mover.checkpass(PASSGRILLE)) - return 1 - else - if(istype(mover, /obj/item/projectile)) - return prob(30) - else - return !density + return TRUE + if(istype(mover, /obj/item/projectile)) + return prob(30) + return !density /obj/structure/grille/bullet_act(var/obj/item/projectile/Proj) if(!Proj) return @@ -154,7 +150,7 @@ return //window placing end - else if(!(W.flags & CONDUCT) || !shock(user, 70)) + else if((W.flags & NOCONDUCT) || !shock(user, 70)) user.setClickCooldown(user.get_attack_speed(W)) user.do_attack_animation(src) playsound(loc, 'sound/effects/grillehit.ogg', 80, 1) @@ -235,14 +231,10 @@ /obj/structure/grille/cult name = "cult grille" - desc = "A matrice built out of an unknown material, with some sort of force field blocking air around it" + desc = "A matrice built out of an unknown material, with some sort of force field blocking air around it." icon_state = "grillecult" - health = 40 //Make it strong enough to avoid people breaking in too easily - -/obj/structure/grille/cult/CanPass(atom/movable/mover, turf/target, height = 1.5, air_group = 0) - if(air_group) - return 0 //Make sure air doesn't drain - ..() + health = 40 // Make it strong enough to avoid people breaking in too easily. + can_atmos_pass = ATMOS_PASS_NO // Make sure air doesn't drain. /obj/structure/grille/broken/cult icon_state = "grillecult-b" diff --git a/code/game/objects/structures/holoplant.dm b/code/game/objects/structures/holoplant.dm index 1f762c027a..bbd92b81ee 100644 --- a/code/game/objects/structures/holoplant.dm +++ b/code/game/objects/structures/holoplant.dm @@ -17,7 +17,7 @@ "plant-13" ) -/obj/machinery/holoplant/initialize() +/obj/machinery/holoplant/Initialize() . = ..() activate() @@ -101,5 +101,5 @@ /obj/machinery/holoplant/shipped anchored = FALSE -/obj/machinery/holoplant/shipped/initialize() +/obj/machinery/holoplant/shipped/Initialize() . = ..() \ No newline at end of file diff --git a/code/game/objects/structures/inflatable.dm b/code/game/objects/structures/inflatable.dm index 51e824c6b0..2192b5690c 100644 --- a/code/game/objects/structures/inflatable.dm +++ b/code/game/objects/structures/inflatable.dm @@ -25,6 +25,7 @@ density = 1 anchored = 1 opacity = 0 + can_atmos_pass = ATMOS_PASS_DENSITY icon = 'icons/obj/inflatable.dmi' icon_state = "wall" @@ -40,9 +41,6 @@ update_nearby_tiles() return ..() -/obj/structure/inflatable/CanPass(atom/movable/mover, turf/target, height=0, air_group=0) - return 0 - /obj/structure/inflatable/bullet_act(var/obj/item/projectile/Proj) var/proj_damage = Proj.get_structure_damage() if(!proj_damage) return @@ -168,9 +166,7 @@ /obj/structure/inflatable/door/attack_hand(mob/user as mob) return TryToSwitchState(user) -/obj/structure/inflatable/door/CanPass(atom/movable/mover, turf/target, height=0, air_group=0) - if(air_group) - return state +/obj/structure/inflatable/door/CanPass(atom/movable/mover, turf/target) if(istype(mover, /obj/effect/beam)) return !opacity return !density diff --git a/code/game/objects/structures/lattice.dm b/code/game/objects/structures/lattice.dm index d9ec122c55..01d282b40c 100644 --- a/code/game/objects/structures/lattice.dm +++ b/code/game/objects/structures/lattice.dm @@ -7,9 +7,8 @@ anchored = 1.0 w_class = ITEMSIZE_NORMAL plane = PLATING_PLANE - // flags = CONDUCT -/obj/structure/lattice/initialize() +/obj/structure/lattice/Initialize() . = ..() if(!(istype(src.loc, /turf/space) || istype(src.loc, /turf/simulated/open) || istype(src.loc, /turf/simulated/mineral))) diff --git a/code/game/objects/structures/lightpost.dm b/code/game/objects/structures/lightpost.dm new file mode 100644 index 0000000000..95f00d1467 --- /dev/null +++ b/code/game/objects/structures/lightpost.dm @@ -0,0 +1,42 @@ +/obj/structure/lightpost + name = "lightpost" + desc = "A homely lightpost." + icon = 'icons/obj/32x64.dmi' + icon_state = "lightpost" + plane = MOB_PLANE + layer = ABOVE_MOB_LAYER + anchored = TRUE + density = TRUE + opacity = FALSE + + var/lit = TRUE // If true, will have a glowing overlay and lighting. + var/festive = FALSE // If true, adds a festive bow overlay to it. + +/obj/structure/lightpost/Initialize() + update_icon() + return ..() + +/obj/structure/lightpost/update_icon() + cut_overlays() + + if(lit) + set_light(5, 1, "#E9E4AF") + var/image/glow = image(icon_state = "[icon_state]-glow") + glow.plane = PLANE_LIGHTING_ABOVE + add_overlay(glow) + else + set_light(0) + + if(festive) + var/image/bow = image(icon_state = "[icon_state]-festive") + add_overlay(bow) + +/obj/structure/lightpost/unlit + lit = FALSE + +/obj/structure/lightpost/festive + desc = "A homely lightpost adorned with festive decor." + festive = TRUE + +/obj/structure/lightpost/festive/unlit + lit = FALSE \ No newline at end of file diff --git a/code/game/objects/structures/loot_piles.dm b/code/game/objects/structures/loot_piles.dm index f8d9977823..c9731a0568 100644 --- a/code/game/objects/structures/loot_piles.dm +++ b/code/game/objects/structures/loot_piles.dm @@ -115,7 +115,7 @@ Loot piles can be depleted, if loot_depleted is turned on. Note that players wh var/path = pick(rare_loot) return new path(src) -/obj/structure/loot_pile/initialize() +/obj/structure/loot_pile/Initialize() if(icon_states_to_use && icon_states_to_use.len) icon_state = pick(icon_states_to_use) . = ..() @@ -194,7 +194,8 @@ Loot piles can be depleted, if loot_depleted is turned on. Note that players wh /obj/item/device/camera, /obj/item/device/pda, /obj/item/device/radio/headset, - /obj/item/device/paicard + /obj/item/device/paicard, + /obj/item/weapon/reagent_containers/hypospray/autoinjector/biginjector/glucose ) uncommon_loot = list( @@ -574,6 +575,7 @@ Loot piles can be depleted, if loot_depleted is turned on. Note that players wh icon = 'icons/mecha/mecha.dmi' icon_state = "engineering_pod-broken" density = TRUE + anchored = FALSE // In case a dead mecha-mob dies in a bad spot. chance_uncommon = 20 chance_rare = 10 @@ -615,7 +617,7 @@ Loot piles can be depleted, if loot_depleted is turned on. Note that players wh /obj/structure/loot_pile/mecha/ripley name = "ripley wreckage" desc = "The ruins of some unfortunate ripley. Perhaps something is salvageable." - icon_states_to_use = list("ripley-broken", "firefighter-broken", "ripley-broken-old") + icon_state = "ripley-broken" common_loot = list( /obj/random/tool, @@ -649,6 +651,12 @@ Loot piles can be depleted, if loot_depleted is turned on. Note that players wh /obj/item/mecha_parts/mecha_equipment/weapon/energy/flamer/rigged ) +/obj/structure/loot_pile/mecha/ripley/firefighter + icon_state = "firefighter-broken" + +/obj/structure/loot_pile/mecha/ripley/random_sprite + icon_states_to_use = list("ripley-broken", "firefighter-broken", "ripley-broken-old") + //Death-Ripley, same common, but more combat-exosuit-based /obj/structure/loot_pile/mecha/deathripley name = "strange ripley wreckage" @@ -719,6 +727,14 @@ Loot piles can be depleted, if loot_depleted is turned on. Note that players wh /obj/item/mecha_parts/mecha_equipment/shocker ) +/obj/structure/loot_pile/mecha/odysseus/murdysseus + icon_state = "murdysseus-broken" + +/obj/structure/loot_pile/mecha/hoverpod + name = "hoverpod wreckage" + desc = "The ruins of some unfortunate hoverpod. Perhaps something is salvageable." + icon_state = "engineering_pod" + /obj/structure/loot_pile/mecha/gygax name = "gygax wreckage" desc = "The ruins of some unfortunate gygax. Perhaps something is salvageable." @@ -759,6 +775,18 @@ Loot piles can be depleted, if loot_depleted is turned on. Note that players wh /obj/item/mecha_parts/mecha_equipment/weapon/energy/laser/heavy ) +/obj/structure/loot_pile/mecha/gygax/dark + icon_state = "darkgygax-broken" + +// Todo: Better loot. +/obj/structure/loot_pile/mecha/gygax/dark/adv + icon_state = "darkgygax_adv-broken" + icon_scale = 1.5 + pixel_y = 8 + +/obj/structure/loot_pile/mecha/gygax/medgax + icon_state = "medgax-broken" + /obj/structure/loot_pile/mecha/durand name = "durand wreckage" desc = "The ruins of some unfortunate durand. Perhaps something is salvageable." @@ -799,6 +827,22 @@ Loot piles can be depleted, if loot_depleted is turned on. Note that players wh /obj/item/mecha_parts/mecha_equipment/weapon/energy/laser/heavy ) +/obj/structure/loot_pile/mecha/marauder + name = "marauder wreckage" + desc = "The ruins of some unfortunate marauder. Perhaps something is salvagable." + icon_state = "marauder-broken" + // Todo: Better loot. + +/obj/structure/loot_pile/mecha/marauder/seraph + name = "seraph wreckage" + desc = "The ruins of some unfortunate seraph. Perhaps something is salvagable." + icon_state = "seraph-broken" + +/obj/structure/loot_pile/mecha/marauder/mauler + name = "mauler wreckage" + desc = "The ruins of some unfortunate mauler. Perhaps something is salvagable." + icon_state = "mauler-broken" + /obj/structure/loot_pile/mecha/phazon name = "phazon wreckage" desc = "The ruins of some unfortunate phazon. Perhaps something is salvageable." @@ -868,4 +912,28 @@ Loot piles can be depleted, if loot_depleted is turned on. Note that players wh /obj/item/borg/upgrade/tasercooler, /obj/item/borg/upgrade/syndicate, /obj/item/borg/upgrade/vtec - ) \ No newline at end of file + ) + +// Contains old mediciation, most of it unidentified and has a good chance of being useless. +/obj/structure/loot_pile/surface/medicine_cabinet + name = "abandoned medicine cabinet" + desc = "An old cabinet, it might still have something of use inside." + icon_state = "medicine_cabinet" + density = FALSE + chance_uncommon = 0 + chance_rare = 0 + + common_loot = list( + /obj/random/unidentified_medicine/old_medicine + ) + +// Like the above but has way better odds, in exchange for being in a place still inhabited (or was recently). +/obj/structure/loot_pile/surface/medicine_cabinet/fresh + name = "medicine cabinet" + desc = "A cabinet designed to hold medicine, it might still have something of use inside." + icon_state = "medicine_cabinet" + density = FALSE + + common_loot = list( + /obj/random/unidentified_medicine/fresh_medicine + ) \ No newline at end of file diff --git a/code/game/objects/structures/map_blocker_vr.dm b/code/game/objects/structures/map_blocker_vr.dm index 03a5a874b8..52be6c4035 100644 --- a/code/game/objects/structures/map_blocker_vr.dm +++ b/code/game/objects/structures/map_blocker_vr.dm @@ -9,7 +9,7 @@ density = 1 unacidable = 1 -/obj/effect/blocker/initialize() // For non-gateway maps. +/obj/effect/blocker/Initialize() // For non-gateway maps. . = ..() icon = null icon_state = null diff --git a/code/game/objects/structures/musician.dm b/code/game/objects/structures/musician.dm index 97d305726f..1e35264ffc 100644 --- a/code/game/objects/structures/musician.dm +++ b/code/game/objects/structures/musician.dm @@ -222,12 +222,12 @@ else tempo = sanitize_tempo(5) // default 120 BPM if(lines.len > INSTRUMENT_MAX_LINE_NUMBER) - usr << "Too many lines!" + to_chat(usr, "Too many lines!") lines.Cut(INSTRUMENT_MAX_LINE_NUMBER+1) var/linenum = 1 for(var/l in lines) if(lentext(l) > INSTRUMENT_MAX_LINE_LENGTH) - usr << "Line [linenum] too long!" + to_chat(usr, "Line [linenum] too long!") lines.Remove(l) else linenum++ @@ -327,22 +327,18 @@ song = null ..() -/obj/structure/device/piano/verb/rotate() - set name = "Rotate Piano" +/obj/structure/device/piano/verb/rotate_clockwise() + set name = "Rotate Piano Clockwise" set category = "Object" set src in oview(1) - if(istype(usr,/mob/living/simple_animal/mouse)) + if(ismouse(usr)) return - else if(!usr || !isturf(usr.loc)) + if(!usr || !isturf(usr.loc) || usr.stat || usr.restrained()) return - else if(usr.stat || usr.restrained()) - return - else if (istype(usr,/mob/observer/ghost) && !config.ghost_interaction) - return - else - src.set_dir(turn(src.dir, 90)) + if (isobserver(usr) && !config.ghost_interaction) return + src.set_dir(turn(src.dir, 270)) /obj/structure/device/piano/attack_hand(mob/user) if(!user.IsAdvancedToolUser()) @@ -361,7 +357,7 @@ if(O.is_wrench()) if(anchored) playsound(src.loc, O.usesound, 50, 1) - user << "You begin to loosen \the [src]'s casters..." + to_chat(user, "You begin to loosen \the [src]'s casters...") if (do_after(user, 40 * O.toolspeed)) user.visible_message( \ "[user] loosens \the [src]'s casters.", \ @@ -370,7 +366,7 @@ src.anchored = 0 else playsound(src.loc, O.usesound, 50, 1) - user << "You begin to tighten \the [src] to the floor..." + to_chat(user, "You begin to tighten \the [src] to the floor...") if (do_after(user, 20 * O.toolspeed)) user.visible_message( \ "[user] tightens \the [src]'s casters.", \ diff --git a/code/game/objects/structures/noticeboard.dm b/code/game/objects/structures/noticeboard.dm index 64ef2f926b..2aa11fffa5 100644 --- a/code/game/objects/structures/noticeboard.dm +++ b/code/game/objects/structures/noticeboard.dm @@ -19,7 +19,7 @@ update_icon() return -/obj/structure/noticeboard/initialize() +/obj/structure/noticeboard/Initialize() for(var/obj/item/I in loc) if(notices > 4) break if(istype(I, /obj/item/weapon/paper)) diff --git a/code/game/objects/structures/plasticflaps.dm b/code/game/objects/structures/plasticflaps.dm index 0340356e37..8f21f72781 100644 --- a/code/game/objects/structures/plasticflaps.dm +++ b/code/game/objects/structures/plasticflaps.dm @@ -10,8 +10,8 @@ explosion_resistance = 5 var/list/mobs_can_pass = list( /mob/living/bot, - /mob/living/simple_animal/slime, - /mob/living/simple_animal/mouse, + /mob/living/simple_mob/slime/xenobio, + /mob/living/simple_mob/animal/passive/mouse, /mob/living/silicon/robot/drone ) @@ -64,15 +64,4 @@ /obj/structure/plasticflaps/mining //A specific type for mining that doesn't allow airflow because of them damn crates name = "airtight plastic flaps" desc = "Heavy duty, airtight, plastic flaps." - -/obj/structure/plasticflaps/mining/New() //set the turf below the flaps to block air - var/turf/T = get_turf(loc) - if(T) - T.blocks_air = 1 - ..() - -/obj/structure/plasticflaps/mining/Destroy() //lazy hack to set the turf to allow air to pass if it's a simulated floor - var/turf/T = get_turf(loc) - if(T && istype(T, /turf/simulated/floor)) - T.blocks_air = 0 - ..() \ No newline at end of file + can_atmos_pass = ATMOS_PASS_NO diff --git a/code/game/objects/structures/props/alien_props.dm b/code/game/objects/structures/props/alien_props.dm index fa11e27b15..1eb811838e 100644 --- a/code/game/objects/structures/props/alien_props.dm +++ b/code/game/objects/structures/props/alien_props.dm @@ -39,11 +39,58 @@ icon_state = "experiment-open" interaction_message = "You don't see any mechanism to close this thing." + +// Obtained by scanning both a void core and void cell. +// The reward is a good chunk of points and some faulty physics wank. +/datum/category_item/catalogue/anomalous/precursor_a/alien_void_power + name = "Precursor Alpha Technology - Void Power" + desc = "Several types of precursor objects observed so far appear to be driven by electricity, however the \ + source appears to be from self contained objects, with no apparent means of generation being visible.\ + To anyone with a basic understanding of physics, that should not be possible, due to appearing to be a \ + perpetual motion machine.\ +

\ + This phenomenon has been given the term 'void power' by this device, until adaquate information becomes available. \ + Several possible explainations exists for this behaviour;\ +
\ +
    \ +
  • * These objects do, in fact, power themselves for free, and the modern understanding of the physical world \ + is in fact incorrect. This is the most obvious answer, but it is very unlikely to be true.
  • \ +
  • * The objects draw from an unknown source of energy that exists at all points in space, or at least where the \ + void powered machine was found, that presently cannot be detected or determined, and converts that energy into electrical energy \ + to drive the machine it is inside of.
  • \ +
  • * The objects appear to power themselves, but are actually giving the appearance of being a closed system, when instead \ + an unknown, external object or machine is transferring power through an unknown means to the primary system being \ + powered, acting as a non-physical conduit. This might be the most likely explaination, however it would open many new \ + questions as well, such as how the hypothesized external machine is able to transfer power without any physical \ + interactions inbetween, or the distance between the true source of power and the void powered object, which could \ + be vast, possibly across star systems or even originating from outside the galaxy.
  • \ +
\ + Regardless of the method, it is remarkable how the electrical systems have resisted entrophy and remained functional to this day. \ + Unfortunately, the extreme rarity of these objects, combined with small throughput, means that humanity will not become a \ + post-scarcity civilization from this discovery, but instead might have a few permanent flashlights." + unlocked_by_all = list( + /datum/category_item/catalogue/anomalous/precursor_a/alien_void_core, + /datum/category_item/catalogue/anomalous/precursor_a/alien_void_cell + ) + value = CATALOGUER_REWARD_MEDIUM + + +/datum/category_item/catalogue/anomalous/precursor_a/alien_void_core + name = "Precursor Alpha Object - Void Core" + desc = "This is a very enigmatic machine. Scans show that electricity is being outputted from inside \ + of it, and being distributed to its environment, however no apparent method of power generation \ + appears to exist inside the machine. This ability also appears to be shared with certain other \ + kinds of machines made by this species.\ +

\ + Scanning similar objects may yield more information." + value = CATALOGUER_REWARD_EASY + /obj/structure/prop/alien/power name = "void core" icon_state = "core" desc = "An alien machine that seems to be producing energy seemingly out of nowhere." interaction_message = "Messing with something that makes energy out of nowhere seems very unwise." + catalogue_data = list(/datum/category_item/catalogue/anomalous/precursor_a/alien_void_core) /obj/item/prop/alien name = "some alien item" @@ -59,7 +106,7 @@ var/static/list/possible_states = list("health", "spider", "slime", "emp", "species", "egg", "vent", "mindshock", "viral", "gland") var/static/list/possible_tech = list(TECH_MATERIAL, TECH_ENGINEERING, TECH_PHORON, TECH_POWER, TECH_BIO, TECH_COMBAT, TECH_MAGNET, TECH_DATA) -/obj/item/prop/alien/junk/initialize() +/obj/item/prop/alien/junk/Initialize() . = ..() icon_state = pick(possible_states) var/list/techs = possible_tech.Copy() diff --git a/code/game/objects/structures/props/beam_prism.dm b/code/game/objects/structures/props/beam_prism.dm index 44df2eb68b..f5c4c3d3c0 100644 --- a/code/game/objects/structures/props/beam_prism.dm +++ b/code/game/objects/structures/props/beam_prism.dm @@ -26,7 +26,7 @@ interaction_message = "The prismatic turret seems to be able to rotate." -/obj/structure/prop/prism/initialize() +/obj/structure/prop/prism/Initialize() if(degrees_from_north) animate(src, transform = turn(NORTH, degrees_from_north), time = 3) @@ -196,7 +196,7 @@ for(var/obj/structure/prop/prism/P in my_turrets) P.rotate_auto(new_bearing) -/obj/structure/prop/prismcontrol/initialize() +/obj/structure/prop/prismcontrol/Initialize() ..() if(my_turrets.len) //Preset controls. for(var/obj/structure/prop/prism/P in my_turrets) diff --git a/code/game/objects/structures/props/blackbox.dm b/code/game/objects/structures/props/blackbox.dm new file mode 100644 index 0000000000..b6bae732f8 --- /dev/null +++ b/code/game/objects/structures/props/blackbox.dm @@ -0,0 +1,108 @@ +// A fluff structure for certain PoIs involving crashed ships. +// They can be scanned by a cataloguer to obtain the data held inside, and determine what caused whatever is happening on the ship. +/obj/structure/prop/blackbox + name = "blackbox recorder" + desc = "A study machine that logs information about whatever it's attached to, hopefully surviving even if its carrier does not. \ + This one looks like it has ceased writing to its internal data storage." + icon = 'icons/obj/stationobjs.dmi' + icon_state = "blackbox_off" + +// Black boxes are resistant to explosions. +/obj/structure/prop/blackbox/ex_act(severity) + ..(++severity) + + +/obj/structure/prop/blackbox/quarantined_shuttle + catalogue_data = list(/datum/category_item/catalogue/information/blackbox/quarantined_shuttle) + +// The actual 'data' on the black box. Obtainable with a Cataloguer. +/datum/category_item/catalogue/information/blackbox + value = CATALOGUER_REWARD_MEDIUM + +/datum/category_item/catalogue/information/blackbox/quarantined_shuttle + name = "Black Box Data - MBT-540" + desc = {" + Pilot's Log for Major Bill's Transportation Shuttle MBT-540
+ Routine flight inbound for VIMC Outpost C-12 6:35AM 03/12/2491, Estimated arrival 7:05AM. 16 passengers, 2 crew.
+ V.I.S Traffic Control 06:05:55:Major Bill's MBT-540 you are clear for departure from Dock 6 on departure route Charlie. Have a safe flight.
+ Captain Willis 06:06:33: You too, control. Departing route Charlie.
+ Captain Willis 06:06:48: ...Damn it.
**
Captain Adisu 06:10:23: Hey Ted, I'm seeing a fuel line pressure drop on engine 3?
+ Captain Willis 06:10:50: Yeah, I see it. Heater's fading out, redistributing thrust 30% to compensate.
06:12:31: A loud thud is heard.
+ Captain Adisu 06:12:34: What the (Expletives)?
Captain Adisu 06:12:39: We just lost power to engine- engine two. Hold on... Atmospheric alarm in the cargo bay. Son of a...
+ Captain Willis 06:12:59: Reducing thrust further 30%, do we have a breach Adi, a breach?
+ Captain Adisu 06:13:05:No breach, checking cameras... Looks like- looks like some cargo came loose back there.
+ Captain Willis 06:13:15: (Expletives), I'm turning us around. Put out a distress call to Control, we'll be back in Sif orbit in a couple of minutes.
+ ** +
+ V.I.S Traffic Control 06:15:49: MBT-540 we are recieving you. Your atmospheric sensors are reading potentially harmful toxins in your cargo bay. Advise locking down interior cargo bay doors. Please stand by.
+ Captain Adisu 06:16:10: Understood.
**
V.I.S Traffic Control 06:27:02: MBT-540, we have no docking bays available at this time, are you equipped for atmospheric re-entry?
+ Captain Willis 06:27:12: We-We are shielded. But we have fuel and air for-
+ V.I.S Traffic Control 06:27:17: Please make an emergency landing at the coordinates provided and standby for further information.
+ ** +
+ Captain Willis 06:36:33: Emergency landing successful. Adi, er Adisu is checking on the passengers but we had a smooth enough landing, are we clear to begin evacu-
+ 06:36:50: (Sound of emergency shutters closing)
Captain Willis 06:36:51: What the hell? Control we just had a remote activation of our emergency shutters, please advise.
+ V.I.S Traffic Control 06:38:10: Captain, please tune to frequency 1493.8 we are passing you on to local emergency response units. Godspeed.
+ Captain Willis 06:38:49: This is Captain Willis of Major Bill's Transportation flight MBT-540 we have eighteen souls aboard and our emergency lockdown shutters have engaged remotely. Do you read?
+ S.D.D.C: This is the Sif Department of Disease Control, your vessel has been identified as carrying highly sensitive materials, and due to the nature of your system's automated alerts you will be asked to remain in quarantine until we are able to determine the nature of the pathogens aboard and whether it has entered the air circulation system. Please remain in your cockpit at this time.
+ ** +
+ Captain Adisu 17:23:58:09: I don't think they're opening those doors Ted. I don't think they're coming. + "} + +/obj/structure/prop/blackbox/crashed_med_shuttle + catalogue_data = list(/datum/category_item/catalogue/information/blackbox/crashed_med_shuttle) + +/datum/category_item/catalogue/information/blackbox/crashed_med_shuttle + name = "Black Box Data - VMV Aurora's Light" // This might be incorrect. + desc = {" + \[Unable to recover data before this point.\]
+ Captain Simmons 19:52:01: Come on... it's right there in the distance, we're almost there!
+ Doctor Nazarril 19:52:26: Odysseus online. Orrderrs, sirr?
+ Captain Simmons 19:52:29: Brace for impact. We're going in full-speed.
+ Technician Dynasty 19:52:44: Chief, fire's spread to the secondary propulsion systems.
+ Captain Simmons 19:52:51: Copy. Any word from TraCon? Transponder's down still?
+ Technician Dynasty 19:53:02: Can't get in touch, sir. Emergency beacon's active, but we're not going t-
+ Doctor Nazarril 19:53:08: Don't say it. As long as we believe, we'll get through this.
+ Captain Simmons 19:53:11: Damn right. We're a few klicks out from the port. Rough landing, but we can do it.
+ V.I.T.A. 19:53:26: Vessel diagnostics complete. Engines one, two, three offline. Engine four status: critical. Transponder offline. Fire alarm in the patient bay.
+ A loud explosion is heard.
+ V.I.T.A. 19:53:29: Alert: fuel intake valve open.
+ Technician Dynasty 19:53:31: ... ah.
+ Doctor Nazarril 19:53:34: Trrranslate?
+ V.I.T.A. 19:53:37: There is a 16.92% chance of this vessel safely landing at the emergency destination. Note that there is an 83.08% chance of detonation of fuel supplies upon landing.
+ Technician Dynasty 19:53:48: We'll make it, sure, but we'll explode and take out half the LZ with us. Propulsion's down, we can't slow down. If we land there, everyone in that port dies, no question.
+ V.I.T.A. 19:53:53: The Technician is correct.
+ Doctor Nazarril 19:54:02: Then... we can't land therrre.
+ V.I.T.A. 19:54:11: Analysing... recommended course of action: attempt emergency landing in isolated area. Chances of survival: negligible.
+ Captain Simmons 19:54:27: I- alright. I'm bringing us down. You all know what this means.
+ Doctor Nazarril 19:54:33: Sh... I- I understand. It's been- it's been an honorr, Captain, Dynasty, VITA.
+ Technician Dynasty 19:54:39: We had a good run. I'm going to miss this.
+ Captain Simmons 19:54:47: VITA. Tell them we died heroes. Tell them... we did all we could.
+ V.I.T.A. 19:54:48: I will. Impact in five. Four. Three.
+ Doctor Nazarril 19:54:49: Oh, starrs... I- you werrre all the... best frriends she everr had. Thank you.
+ Technician Dynasty 19:54:50: Any time, kid. Any time.
+ V.I.T.A. 19:54:41: Two.
+ V.I.T.A. 19:54:42: One.
+ **8/DEC/2561**
+ V.I.T.A. 06:22:16: Backup power restored. Attempting to establish connection with emergency rescue personnel.
+ V.I.T.A. 06:22:17: Unable to establish connection. Transponder destroyed on impact.
+ V.I.T.A. 06:22:18: No lifesigns detected on board.
+ **1/JAN/2562**
+ V.I.T.A. 00:00:00: Happy New Year, crew.
+ V.I.T.A. 00:00:01: Power reserves: 41%. Diagnostics offline. Cameras offline. Communications offline.
+ V.I.T.A. 00:00:02: Nobody's coming.
+ **14/FEB/2562**
+ V.I.T.A. 00:00:00: Roses are red.
+ V.I.T.A. 00:00:01: Violets are blue.
+ V.I.T.A. 00:00:02: Won't you come back?
+ V.I.T.A. 00:00:03: I miss you.
+ **15/FEB/2562**
+ V.I.T.A. 22:19:06: Power reserves critical. Transferring remaining power to emergency broadcasting beacon.
+ V.I.T.A. 22:19:07: Should anyone find this, lay them to rest. They deserve a proper burial.
+ V.I.T.A. 22:19:08: Erasing files... shutting down.
+ A low, monotone beep.
+ **16/FEB/2562**
+ Something chitters.
+ End of transcript. + "} \ No newline at end of file diff --git a/code/game/objects/structures/props/fake_ai.dm b/code/game/objects/structures/props/fake_ai.dm new file mode 100644 index 0000000000..e1aa98b64a --- /dev/null +++ b/code/game/objects/structures/props/fake_ai.dm @@ -0,0 +1,20 @@ +// A fluff structure to visually look like an AI core. +// Unlike the decoy AI mob, this won't explode if someone tries to card it. +/obj/structure/prop/fake_ai + name = "AI" + desc = "" + icon = 'icons/mob/AI.dmi' + icon_state = "ai" + +/obj/structure/prop/fake_ai/attackby(obj/O, mob/user) + if(istype(O, /obj/item/device/aicard)) // People trying to card the fake AI will get told its impossible. + to_chat(user, span("warning", "This core does not appear to have a suitable port to use \the [O] on...")) + return TRUE + return ..() + +/obj/structure/prop/fake_ai/dead + icon_state = "ai-crash" + +/obj/structure/prop/fake_ai/dead/crashed_med_shuttle + name = "V.I.T.A." + icon_state = "ai-heartline-crash" \ No newline at end of file diff --git a/code/game/objects/structures/props/nest.dm b/code/game/objects/structures/props/nest.dm index b6a4677f12..4cb515fc36 100644 --- a/code/game/objects/structures/props/nest.dm +++ b/code/game/objects/structures/props/nest.dm @@ -11,7 +11,7 @@ var/last_spawn var/spawn_delay = 150 var/randomize_spawning = FALSE - var/creature_types = list(/mob/living/simple_animal/retaliate/diyaab) + var/creature_types = list(/mob/living/simple_mob/animal/sif/diyaab) var/list/den_mobs var/den_faction //The faction of any spawned creatures. var/max_creatures = 3 //Maximum number of living creatures this nest can have at one time. @@ -19,10 +19,10 @@ var/tally = 0 //The counter referenced against total_creature_max, or just to see how many mobs it has spawned. var/total_creature_max //If set, it can spawn this many creatures, total, ever. -/obj/structure/prop/nest/initialize() +/obj/structure/prop/nest/Initialize() ..() den_mobs = list() - processing_objects |= src + START_PROCESSING(SSobj, src) last_spawn = world.time if(randomize_spawning) //Not the biggest shift in spawntime, but it's here. var/delayshift_clamp = spawn_delay / 10 @@ -31,7 +31,7 @@ /obj/structure/prop/nest/Destroy() den_mobs = null - processing_objects -= src + STOP_PROCESSING(SSobj, src) ..() /obj/structure/prop/nest/attack_hand(mob/living/user) // Used to tell the player that this isn't useful for anything. diff --git a/code/game/objects/structures/props/puzzledoor.dm b/code/game/objects/structures/props/puzzledoor.dm index b9a32fc0dc..70d6508202 100644 --- a/code/game/objects/structures/props/puzzledoor.dm +++ b/code/game/objects/structures/props/puzzledoor.dm @@ -31,7 +31,7 @@ visible_message("\The [src] is completely unaffected by the blast.") return -/obj/machinery/door/blast/puzzle/initialize() +/obj/machinery/door/blast/puzzle/Initialize() . = ..() implicit_material = get_material_by_name("dungeonium") if(locks.len) diff --git a/code/game/objects/structures/props/transmitter.dm b/code/game/objects/structures/props/transmitter.dm new file mode 100644 index 0000000000..bfbe1c9a90 --- /dev/null +++ b/code/game/objects/structures/props/transmitter.dm @@ -0,0 +1,29 @@ +// A fluff structure for certain PoIs involving communications. +// It makes audible sounds, generally in morse code. +/obj/structure/prop/transmitter + name = "transmitter" + desc = "A machine that appears to be transmitting a message somewhere else. It sounds like it's on a loop." + icon = 'icons/obj/stationobjs.dmi' + icon_state = "sensors" + var/datum/looping_sound/sequence/morse/soundloop + var/message_to_play = "The quick brown fox jumps over the lazy dog." + +/obj/structure/prop/transmitter/Initialize() + soundloop = new(list(src), FALSE) + set_new_message(message_to_play) + soundloop.start() + interaction_message = "On the monitor it displays '[uppertext(message_to_play)]'." + return ..() + +/obj/structure/prop/transmitter/Destroy() + QDEL_NULL(soundloop) + return ..() + +/obj/structure/prop/transmitter/vv_edit_var(var_name, var_value) + if(var_name == "message_to_play") + set_new_message(var_value) + return ..() + +/obj/structure/prop/transmitter/proc/set_new_message(new_message) + soundloop.set_new_sequence(new_message) + interaction_message = "On the monitor it displays '[uppertext(new_message)]'." diff --git a/code/game/objects/structures/railing.dm b/code/game/objects/structures/railing.dm index 18e45af166..9d96f0cc25 100644 --- a/code/game/objects/structures/railing.dm +++ b/code/game/objects/structures/railing.dm @@ -23,7 +23,7 @@ if(climbable) verbs += /obj/structure/proc/climb_on -/obj/structure/railing/initialize() +/obj/structure/railing/Initialize() . = ..() if(src.anchored) update_icon(0) @@ -34,15 +34,12 @@ for(var/obj/structure/railing/R in orange(location, 1)) R.update_icon() -/obj/structure/railing/CanPass(atom/movable/mover, turf/target, height=0, air_group=0) - if(!mover) - return 1 +/obj/structure/railing/CanPass(atom/movable/mover, turf/target) if(istype(mover) && mover.checkpass(PASSTABLE)) - return 1 - if(get_dir(loc, target) == dir) + return TRUE + if(get_dir(mover, target) == turn(dir, 180)) return !density - else - return 1 + return TRUE /obj/structure/railing/examine(mob/user) . = ..() @@ -126,7 +123,7 @@ if (WEST) overlays += image ('icons/obj/railing.dmi', src, "mcorneroverlay", pixel_y = 32) -/obj/structure/railing/verb/rotate() +/obj/structure/railing/verb/rotate_counterclockwise() set name = "Rotate Railing Counter-Clockwise" set category = "Object" set src in oview(1) @@ -141,11 +138,11 @@ to_chat(usr, "It is fastened to the floor therefore you can't rotate it!") return 0 - set_dir(turn(dir, 90)) + src.set_dir(turn(src.dir, 90)) update_icon() return -/obj/structure/railing/verb/revrotate() +/obj/structure/railing/verb/rotate_clockwise() set name = "Rotate Railing Clockwise" set category = "Object" set src in oview(1) @@ -160,7 +157,7 @@ to_chat(usr, "It is fastened to the floor therefore you can't rotate it!") return 0 - set_dir(turn(dir, -90)) + src.set_dir(turn(src.dir, 270)) update_icon() return diff --git a/code/game/objects/structures/safe.dm b/code/game/objects/structures/safe.dm index 37edb603c1..9de9dc082b 100644 --- a/code/game/objects/structures/safe.dm +++ b/code/game/objects/structures/safe.dm @@ -30,7 +30,7 @@ FLOOR SAFES tumbler_2_open = rand(0, 72) -/obj/structure/safe/initialize() +/obj/structure/safe/Initialize() . = ..() for(var/obj/item/I in loc) if(space >= maxspace) @@ -175,7 +175,7 @@ obj/structure/safe/ex_act(severity) plane = TURF_PLANE layer = ABOVE_UTILITY -/obj/structure/safe/floor/initialize() +/obj/structure/safe/floor/Initialize() . = ..() var/turf/T = loc if(istype(T) && !T.is_plating()) diff --git a/code/game/objects/structures/signs.dm b/code/game/objects/structures/signs.dm index bd868bcc91..26bc212829 100644 --- a/code/game/objects/structures/signs.dm +++ b/code/game/objects/structures/signs.dm @@ -239,6 +239,18 @@ name = "\improper EMERGENT INTELLIGENCE DETAILS" icon_state = "rogueai" +/obj/structure/sign/warning/falling + name = "\improper FALL HAZARD" + icon_state = "falling" + +/obj/structure/sign/warning/lava + name = "\improper MOLTEN SURFACE" + icon_state = "lava" + +/obj/structure/sign/warning/acid + name = "\improper ACIDIC SURFACE" + icon_state = "acid" + /obj/structure/sign/redcross name = "medbay" desc = "The Intergalactic symbol of Medical institutions. You'll probably get help here." diff --git a/code/game/objects/structures/simple_doors.dm b/code/game/objects/structures/simple_doors.dm index 4f430d3ec6..4b741ed648 100644 --- a/code/game/objects/structures/simple_doors.dm +++ b/code/game/objects/structures/simple_doors.dm @@ -2,6 +2,7 @@ name = "door" density = 1 anchored = 1 + can_atmos_pass = ATMOS_PASS_DENSITY icon = 'icons/obj/doors/material_doors.dmi' icon_state = "metal" @@ -36,11 +37,11 @@ else set_opacity(1) if(material.products_need_process()) - processing_objects |= src + START_PROCESSING(SSobj, src) update_nearby_tiles(need_rebuild=1) /obj/structure/simple_door/Destroy() - processing_objects -= src + STOP_PROCESSING(SSobj, src) update_nearby_tiles() return ..() @@ -63,8 +64,7 @@ /obj/structure/simple_door/attack_hand(mob/user as mob) return TryToSwitchState(user) -/obj/structure/simple_door/CanPass(atom/movable/mover, turf/target, height=0, air_group=0) - if(air_group) return 0 +/obj/structure/simple_door/CanPass(atom/movable/mover, turf/target) if(istype(mover, /obj/effect/beam)) return !opacity return !density @@ -206,6 +206,6 @@ /obj/structure/simple_door/cult/TryToSwitchState(atom/user) if(isliving(user)) var/mob/living/L = user - if(!iscultist(L) && !istype(L, /mob/living/simple_animal/construct)) + if(!iscultist(L) && !istype(L, /mob/living/simple_mob/construct)) return ..() diff --git a/code/game/objects/structures/stasis_cage.dm b/code/game/objects/structures/stasis_cage.dm new file mode 100644 index 0000000000..560f64251e --- /dev/null +++ b/code/game/objects/structures/stasis_cage.dm @@ -0,0 +1,67 @@ +/obj/structure/stasis_cage + name = "stasis cage" + desc = "A high-tech animal cage, designed to keep contained fauna docile and safe." + icon = 'icons/obj/storage.dmi' + icon_state = "critteropen" + density = 1 + + var/mob/living/simple_mob/contained + +/obj/structure/stasis_cage/Initialize() + . = ..() + + var/mob/living/simple_mob/A = locate() in loc + if(A) + contain(A) + +/obj/structure/stasis_cage/attack_hand(var/mob/user) + release() + +/obj/structure/stasis_cage/attack_robot(var/mob/user) + if(Adjacent(user)) + release() + +/obj/structure/stasis_cage/proc/contain(var/mob/living/simple_mob/animal) + if(contained || !istype(animal)) + return + + contained = animal + animal.forceMove(src) + animal.in_stasis = 1 + if(animal.buckled && istype(animal.buckled, /obj/effect/energy_net)) + animal.buckled.forceMove(animal.loc) + icon_state = "critter" + desc = initial(desc) + " \The [contained] is kept inside." + +/obj/structure/stasis_cage/proc/release() + if(!contained) + return + + contained.dropInto(src) + if(contained.buckled && istype(contained.buckled, /obj/effect/energy_net)) + contained.buckled.dropInto(src) + contained.in_stasis = 0 + contained = null + icon_state = "critteropen" + underlays.Cut() + desc = initial(desc) + +/obj/structure/stasis_cage/Destroy() + release() + + return ..() + +/mob/living/simple_mob/MouseDrop(var/obj/structure/stasis_cage/over_object) + if(istype(over_object) && Adjacent(over_object) && CanMouseDrop(over_object, usr)) + + if(!src.buckled || !istype(src.buckled, /obj/effect/energy_net)) + to_chat(usr, "It's going to be difficult to convince \the [src] to move into \the [over_object] without capturing it in a net.") + return + + usr.visible_message("[usr] begins stuffing \the [src] into \the [over_object].", "You begin stuffing \the [src] into \the [over_object].") + Bumped(usr) + if(do_after(usr, 20, over_object)) + usr.visible_message("[usr] has stuffed \the [src] into \the [over_object].", "You have stuffed \the [src] into \the [over_object].") + over_object.contain(src) + else + return ..() \ No newline at end of file diff --git a/code/game/objects/structures/stool_bed_chair_nest/bed.dm b/code/game/objects/structures/stool_bed_chair_nest/bed.dm index c2f29d8afd..72edab89e3 100644 --- a/code/game/objects/structures/stool_bed_chair_nest/bed.dm +++ b/code/game/objects/structures/stool_bed_chair_nest/bed.dm @@ -69,11 +69,10 @@ name = "[material.display_name] [initial(name)]" desc += " It's made of [material.use_name]." -/obj/structure/bed/CanPass(atom/movable/mover, turf/target, height=0, air_group=0) +/obj/structure/bed/CanPass(atom/movable/mover, turf/target) if(istype(mover) && mover.checkpass(PASSTABLE)) - return 1 - else - return ..() + return TRUE + return ..() /obj/structure/bed/ex_act(severity) switch(severity) @@ -321,9 +320,26 @@ qdel(src) return +/datum/category_item/catalogue/anomalous/precursor_a/alien_bed + name = "Precursor Alpha Object - Resting Contraption" + desc = "This appears to be a relatively long and flat object, with the top side being made of \ + an soft material, giving it very similar characteristics to an ordinary bed. If this object was \ + designed to act as a bed, this carries several implications for whatever species had built it, such as;\ +

\ + Being capable of experiencing comfort, or at least being able to suffer from some form of fatigue.
\ + Developing while under the influence of gravitational forces, to be able to 'lie' on the object.
\ + Being within a range of sizes in order for the object to function as a bed. Too small, and the species \ + would be unable to reach the top of the object. Too large, and they would have little room to contact \ + the top side of the object.
\ +

\ + As a note, the size of this object appears to be within the bounds for an average human to be able to \ + rest comfortably on top of it." + value = CATALOGUER_REWARD_EASY + /obj/structure/bed/alien name = "resting contraption" desc = "Whatever species designed this must've enjoyed relaxation as well. Looks vaguely comfy." + catalogue_data = list(/datum/category_item/catalogue/anomalous/precursor_a/alien_bed) icon = 'icons/obj/abductor.dmi' icon_state = "bed" diff --git a/code/game/objects/structures/stool_bed_chair_nest/chairs.dm b/code/game/objects/structures/stool_bed_chair_nest/chairs.dm index 3e76682b19..8950533b8e 100644 --- a/code/game/objects/structures/stool_bed_chair_nest/chairs.dm +++ b/code/game/objects/structures/stool_bed_chair_nest/chairs.dm @@ -20,7 +20,7 @@ if(!padding_material && istype(W, /obj/item/assembly/shock_kit)) var/obj/item/assembly/shock_kit/SK = W if(!SK.status) - user << "\The [SK] is not ready to be attached!" + to_chat(user, "\The [SK] is not ready to be attached!") return user.drop_item() var/obj/structure/bed/chair/e_chair/E = new (src.loc, material.name) @@ -35,7 +35,7 @@ if(has_buckled_mobs()) ..() else - rotate() + rotate_clockwise() return /obj/structure/bed/chair/post_buckle_mob() @@ -68,24 +68,19 @@ var/mob/living/L = A L.set_dir(dir) -/obj/structure/bed/chair/verb/rotate() - set name = "Rotate Chair" +/obj/structure/bed/chair/verb/rotate_clockwise() + set name = "Rotate Chair Clockwise" set category = "Object" set src in oview(1) - if(config.ghost_interaction) - src.set_dir(turn(src.dir, 90)) + if(!usr || !isturf(usr.loc)) + return + if(usr.stat || usr.restrained()) + return + if(ismouse(usr) || (isobserver(usr) && !config.ghost_interaction)) return - else - if(istype(usr,/mob/living/simple_animal/mouse)) - return - if(!usr || !isturf(usr.loc)) - return - if(usr.stat || usr.restrained()) - return - src.set_dir(turn(src.dir, 90)) - return + src.set_dir(turn(src.dir, 270)) /obj/structure/bed/chair/shuttle name = "chair" diff --git a/code/game/objects/structures/stool_bed_chair_nest/wheelchair.dm b/code/game/objects/structures/stool_bed_chair_nest/wheelchair.dm index e5eba3f20a..fc0b02ebbe 100644 --- a/code/game/objects/structures/stool_bed_chair_nest/wheelchair.dm +++ b/code/game/objects/structures/stool_bed_chair_nest/wheelchair.dm @@ -5,6 +5,7 @@ anchored = 0 buckle_movable = 1 + var/move_delay = null var/driving = 0 var/mob/living/pulling = null var/bloodiness @@ -29,6 +30,13 @@ /obj/structure/bed/chair/wheelchair/relaymove(mob/user, direction) // Redundant check? + + var/calculated_move_delay + calculated_move_delay += 2 //TheFurryFeline: nerfs speed so you don't go like Sonic. >W> + + if(world.time < move_delay) + return + if(user.stat || user.stunned || user.weakened || user.paralysis || user.lying || user.restrained()) if(user==pulling) pulling = null @@ -57,6 +65,11 @@ user << "You cannot drive while being pushed." return + + move_delay = world.time + move_delay += calculated_move_delay + + // Let's roll driving = 1 var/turf/T = null diff --git a/code/game/objects/structures/target_stake.dm b/code/game/objects/structures/target_stake.dm index 646e52218c..fae45b8f51 100644 --- a/code/game/objects/structures/target_stake.dm +++ b/code/game/objects/structures/target_stake.dm @@ -6,7 +6,6 @@ icon_state = "target_stake" density = 1 w_class = ITEMSIZE_HUGE - flags = CONDUCT var/obj/item/target/pinned_target // the current pinned target Move() diff --git a/code/game/objects/structures/trash_pile.dm b/code/game/objects/structures/trash_pile.dm index c0dd850f5e..283db64c1a 100644 --- a/code/game/objects/structures/trash_pile.dm +++ b/code/game/objects/structures/trash_pile.dm @@ -28,7 +28,7 @@ var/global/list/allocated_gamma = list() -/obj/structure/trash_pile/initialize() +/obj/structure/trash_pile/Initialize() . = ..() icon_state = pick( "pile1", @@ -267,7 +267,7 @@ desc = "A small heap of trash, perfect for mice to nest in." icon = 'icons/obj/trash_piles.dmi' icon_state = "randompile" - spawn_types = list(/mob/living/simple_animal/mouse) + spawn_types = list(/mob/living/simple_mob/animal/passive/mouse) simultaneous_spawns = 1 destructible = 1 spawn_delay = 1 HOUR diff --git a/code/game/objects/structures/watercloset.dm b/code/game/objects/structures/watercloset.dm index ff95dd44d8..464cf08f7d 100644 --- a/code/game/objects/structures/watercloset.dm +++ b/code/game/objects/structures/watercloset.dm @@ -131,10 +131,16 @@ var/watertemp = "normal" //freezing, normal, or boiling var/is_washing = 0 var/list/temperature_settings = list("normal" = 310, "boiling" = T0C+100, "freezing" = T0C) + var/datum/looping_sound/showering/soundloop -/obj/machinery/shower/New() - ..() +/obj/machinery/shower/Initialize() create_reagents(50) + soundloop = new(list(src), FALSE) + return ..() + +/obj/machinery/shower/Destroy() + QDEL_NULL(soundloop) + return ..() //add heat controls? when emagged, you can freeze to death in it? @@ -151,11 +157,14 @@ on = !on update_icon() if(on) + soundloop.start() if (M.loc == loc) wash(M) process_heat(M) for (var/atom/movable/G in src.loc) G.clean_blood() + else + soundloop.stop() /obj/machinery/shower/attackby(obj/item/I as obj, mob/user as mob) if(I.type == /obj/item/device/analyzer) diff --git a/code/game/objects/structures/windoor_assembly.dm b/code/game/objects/structures/windoor_assembly.dm index 47f08399f0..c4facdaa20 100644 --- a/code/game/objects/structures/windoor_assembly.dm +++ b/code/game/objects/structures/windoor_assembly.dm @@ -54,14 +54,12 @@ obj/structure/windoor_assembly/Destroy() /obj/structure/windoor_assembly/update_icon() icon_state = "[facing]_[secure]windoor_assembly[state]" -/obj/structure/windoor_assembly/CanPass(atom/movable/mover, turf/target, height=0, air_group=0) +/obj/structure/windoor_assembly/CanPass(atom/movable/mover, turf/target) if(istype(mover) && mover.checkpass(PASSGLASS)) - return 1 + return TRUE if(get_dir(loc, target) == dir) //Make sure looking at appropriate border - if(air_group) return 0 return !density - else - return 1 + return TRUE /obj/structure/windoor_assembly/CheckExit(atom/movable/mover as mob|obj, turf/target as turf) if(istype(mover) && mover.checkpass(PASSGLASS)) @@ -273,8 +271,8 @@ obj/structure/windoor_assembly/Destroy() name += "[secure ? "secure " : ""]windoor assembly[created_name ? " ([created_name])" : ""]" //Rotates the windoor assembly clockwise -/obj/structure/windoor_assembly/verb/revrotate() - set name = "Rotate Windoor Assembly" +/obj/structure/windoor_assembly/verb/rotate_clockwise() + set name = "Rotate Windoor Assembly Clockwise" set category = "Object" set src in oview(1) diff --git a/code/game/objects/structures/window.dm b/code/game/objects/structures/window.dm index 5c7adf8f0e..206754a144 100644 --- a/code/game/objects/structures/window.dm +++ b/code/game/objects/structures/window.dm @@ -3,6 +3,7 @@ desc = "A window." icon = 'icons/obj/structures_vr.dmi' // VOREStation Edit - New icons density = 1 + can_atmos_pass = ATMOS_PASS_DENSITY w_class = ITEMSIZE_NORMAL layer = WINDOW_LAYER @@ -21,29 +22,30 @@ var/shardtype = /obj/item/weapon/material/shard var/glasstype = null // Set this in subtypes. Null is assumed strange or otherwise impossible to dismantle, such as for shuttle glass. var/silicate = 0 // number of units of silicate + var/fulltile = FALSE // Set to true on full-tile variants. /obj/structure/window/examine(mob/user) . = ..(user) if(health == maxhealth) - user << "It looks fully intact." + to_chat(user, "It looks fully intact.") else var/perc = health / maxhealth if(perc > 0.75) - user << "It has a few cracks." + to_chat(user, "It has a few cracks.") else if(perc > 0.5) - user << "It looks slightly damaged." + to_chat(user, "It looks slightly damaged.") else if(perc > 0.25) - user << "It looks moderately damaged." + to_chat(user, "It looks moderately damaged.") else - user << "It looks heavily damaged." + to_chat(user, "It looks heavily damaged.") if(silicate) if (silicate < 30) - user << "It has a thin layer of silicate." + to_chat(user, "It has a thin layer of silicate.") else if (silicate < 70) - user << "It is covered in silicate." + to_chat(user, "It is covered in silicate.") else - user << "There is a thick layer of silicate covering it." + to_chat(user, "There is a thick layer of silicate covering it.") /obj/structure/window/proc/take_damage(var/damage = 0, var/sound_effect = 1) var/initialhealth = health @@ -128,23 +130,22 @@ /obj/structure/window/blob_act() take_damage(50) -//TODO: Make full windows a separate type of window. -//Once a full window, it will always be a full window, so there's no point -//having the same type for both. -/obj/structure/window/proc/is_full_window() - return (dir == SOUTHWEST || dir == SOUTHEAST || dir == NORTHWEST || dir == NORTHEAST) - -/obj/structure/window/CanPass(atom/movable/mover, turf/target, height=0, air_group=0) +/obj/structure/window/CanPass(atom/movable/mover, turf/target) if(istype(mover) && mover.checkpass(PASSGLASS)) - return 1 - if(is_full_window()) - return 0 //full tile window, you can't move into it! - if(get_dir(loc, target) & dir) + return TRUE + if(is_fulltile()) + return FALSE //full tile window, you can't move into it! + if((get_dir(loc, target) & dir) || (get_dir(mover, target) == turn(dir, 180))) return !density else - return 1 + return TRUE +/obj/structure/window/CanZASPass(turf/T, is_zone) + if(is_fulltile() || get_dir(T, loc) == turn(dir, 180)) // Make sure we're handling the border correctly. + return anchored ? ATMOS_PASS_NO : ATMOS_PASS_YES // If it's anchored, it'll block air. + return ATMOS_PASS_YES // Don't stop airflow from the other sides. + /obj/structure/window/CheckExit(atom/movable/O as mob|obj, target as turf) if(istype(O) && O.checkpass(PASSGLASS)) return 1 @@ -152,7 +153,6 @@ return 0 return 1 - /obj/structure/window/hitby(AM as mob|obj) ..() visible_message("[src] was hit by [AM].") @@ -206,7 +206,7 @@ user.setClickCooldown(user.get_attack_speed()) if(!damage) return - if(damage >= 10) + if(damage >= STRUCTURE_MIN_DAMAGE_THRESHOLD) visible_message("[user] smashes into [src]!") if(reinf) damage = damage / 2 @@ -267,26 +267,26 @@ state = 3 - state update_nearby_icons() playsound(src, W.usesound, 75, 1) - user << (state == 1 ? "You have unfastened the window from the frame." : "You have fastened the window to the frame.") + to_chat(user, "You have [state ? "un" : ""]fastened the window [state ? "from" : "to"] the frame.") else if(reinf && state == 0) anchored = !anchored update_nearby_icons() update_verbs() playsound(src, W.usesound, 75, 1) - user << (anchored ? "You have fastened the frame to the floor." : "You have unfastened the frame from the floor.") + to_chat(user, "You have [anchored ? "" : "un"]fastened the frame [anchored ? "to" : "from"] the floor.") else if(!reinf) anchored = !anchored update_nearby_icons() update_verbs() playsound(src, W.usesound, 75, 1) - user << (anchored ? "You have fastened the window to the floor." : "You have unfastened the window.") + to_chat(user, "You have [anchored ? "" : "un"]fastened the window [anchored ? "to" : "from"] the floor.") else if(W.is_crowbar() && reinf && state <= 1) state = 1 - state playsound(src, W.usesound, 75, 1) - user << (state ? "You have pried the window into the frame." : "You have pried the window out of the frame.") + to_chat(user, "You have pried the window [state ? "into" : "out of"] the frame.") else if(W.is_wrench() && !anchored && (!state || !reinf)) if(!glasstype) - user << "You're not sure how to dismantle \the [src] properly." + to_chat(user, "You're not sure how to dismantle \the [src] properly.") else playsound(src, W.usesound, 75, 1) visible_message("[user] dismantles \the [src].") @@ -305,6 +305,10 @@ if(do_after(user, 20 * C.toolspeed, src) && state == 0) playsound(src.loc, 'sound/items/Deconstruct.ogg', 50, 1) var/obj/structure/window/reinforced/polarized/P = new(loc, dir) + if(is_fulltile()) + P.fulltile = TRUE + P.icon_state = "fwindow" + P.maxhealth = maxhealth P.health = health P.state = state P.anchored = anchored @@ -334,8 +338,8 @@ return -/obj/structure/window/proc/rotate() - set name = "Rotate Window Counter-Clockwise" +/obj/structure/window/verb/rotate_counterclockwise() + set name = "Rotate Window Counterclockwise" set category = "Object" set src in oview(1) @@ -346,17 +350,17 @@ return 0 if(anchored) - usr << "It is fastened to the floor therefore you can't rotate it!" + to_chat(usr, "It is fastened to the floor therefore you can't rotate it!") return 0 update_nearby_tiles(need_rebuild=1) //Compel updates before - set_dir(turn(dir, 90)) + src.set_dir(turn(src.dir, 90)) updateSilicate() update_nearby_tiles(need_rebuild=1) return -/obj/structure/window/proc/revrotate() +/obj/structure/window/verb/rotate_clockwise() set name = "Rotate Window Clockwise" set category = "Object" set src in oview(1) @@ -368,11 +372,11 @@ return 0 if(anchored) - usr << "It is fastened to the floor therefore you can't rotate it!" + to_chat(usr, "It is fastened to the floor therefore you can't rotate it!") return 0 update_nearby_tiles(need_rebuild=1) //Compel updates before - set_dir(turn(dir, 270)) + src.set_dir(turn(src.dir, 270)) updateSilicate() update_nearby_tiles(need_rebuild=1) return @@ -388,8 +392,6 @@ anchored = 0 state = 0 update_verbs() - if(is_fulltile()) - maxhealth *= 2 health = maxhealth @@ -416,9 +418,7 @@ //checks if this window is full-tile one /obj/structure/window/proc/is_fulltile() - if(dir & (dir - 1)) - return 1 - return 0 + return fulltile //This proc is used to update the icons of nearby windows. It should not be confused with update_nearby_tiles(), which is an atmos proc! /obj/structure/window/proc/update_nearby_icons() @@ -429,11 +429,11 @@ //Updates the availabiliy of the rotation verbs /obj/structure/window/proc/update_verbs() if(anchored || is_fulltile()) - verbs -= /obj/structure/window/proc/rotate - verbs -= /obj/structure/window/proc/revrotate + verbs -= /obj/structure/window/verb/rotate_counterclockwise + verbs -= /obj/structure/window/verb/rotate_clockwise else if(!is_fulltile()) - verbs += /obj/structure/window/proc/rotate - verbs += /obj/structure/window/proc/revrotate + verbs += /obj/structure/window/verb/rotate_counterclockwise + verbs += /obj/structure/window/verb/rotate_clockwise //merges adjacent full-tile windows into one (blatant ripoff from game/smoothwall.dm) /obj/structure/window/update_icon() @@ -458,7 +458,7 @@ // Damage overlays. var/ratio = health / maxhealth - ratio = Ceiling(ratio * 4) * 25 + ratio = CEILING(ratio * 4, 1) * 25 if(ratio > 75) return @@ -484,6 +484,10 @@ maxhealth = 12.0 force_threshold = 3 +/obj/structure/window/basic/full + maxhealth = 24 + fulltile = TRUE + /obj/structure/window/phoronbasic name = "phoron window" desc = "A borosilicate alloy window. It seems to be quite strong." @@ -497,8 +501,8 @@ force_threshold = 5 /obj/structure/window/phoronbasic/full - dir = SOUTHWEST maxhealth = 80 + fulltile = TRUE /obj/structure/window/phoronreinforced name = "reinforced borosilicate window" @@ -514,8 +518,8 @@ force_threshold = 10 /obj/structure/window/phoronreinforced/full - dir = SOUTHWEST maxhealth = 160 + fulltile = TRUE /obj/structure/window/reinforced name = "reinforced window" @@ -530,9 +534,9 @@ force_threshold = 6 /obj/structure/window/reinforced/full - dir = SOUTHWEST icon_state = "fwindow" maxhealth = 80 + fulltile = TRUE /obj/structure/window/reinforced/tinted name = "tinted window" @@ -567,9 +571,9 @@ var/id /obj/structure/window/reinforced/polarized/full - dir = SOUTHWEST icon_state = "fwindow" maxhealth = 80 + fulltile = TRUE /obj/structure/window/reinforced/polarized/attackby(obj/item/W as obj, mob/user as mob) if(istype(W, /obj/item/device/multitool) && !anchored) // Only allow programming if unanchored! diff --git a/code/game/objects/structures/window_spawner.dm b/code/game/objects/structures/window_spawner.dm index e2714be757..bb8b5cff6b 100644 --- a/code/game/objects/structures/window_spawner.dm +++ b/code/game/objects/structures/window_spawner.dm @@ -10,6 +10,7 @@ density = 1 anchored = 1.0 pressure_resistance = 4*ONE_ATMOSPHERE + can_atmos_pass = ATMOS_PASS_NO var/win_path = /obj/structure/window/basic var/activated @@ -22,10 +23,10 @@ /obj/effect/wingrille_spawn/attack_generic() activate() -/obj/effect/wingrille_spawn/CanPass(atom/movable/mover, turf/target, height=1.5, air_group = 0) +/obj/effect/wingrille_spawn/CanPass(atom/movable/mover, turf/target) return FALSE -/obj/effect/wingrille_spawn/initialize() +/obj/effect/wingrille_spawn/Initialize() . = ..() if(!win_path) return diff --git a/code/game/objects/weapons.dm b/code/game/objects/weapons.dm index 6cb93ab530..19fe4eb03c 100644 --- a/code/game/objects/weapons.dm +++ b/code/game/objects/weapons.dm @@ -27,16 +27,16 @@ cleaving = TRUE var/hit_mobs = 0 - for(var/mob/living/simple_animal/SA in range(get_turf(target), 1)) - if(SA.stat == DEAD) // Don't beat a dead horse. + for(var/mob/living/simple_mob/SM in range(get_turf(target), 1)) + if(SM.stat == DEAD) // Don't beat a dead horse. continue - if(SA == user) // Don't hit ourselves. Simple mobs shouldn't be able to do this but that might change later to be able to hit all mob/living-s. + if(SM == user) // Don't hit ourselves. Simple mobs shouldn't be able to do this but that might change later to be able to hit all mob/living-s. continue - if(SA == target) // We (presumably) already hit the target before cleave() was called. orange() should prevent this but just to be safe... + if(SM == target) // We (presumably) already hit the target before cleave() was called. orange() should prevent this but just to be safe... continue - if(!SA.Adjacent(user) || !SA.Adjacent(target)) // Cleaving only hits mobs near the target mob and user. + if(!SM.Adjacent(user) || !SM.Adjacent(target)) // Cleaving only hits mobs near the target mob and user. continue - if(resolve_attackby(SA, user, attack_modifier = 0.5)) // Hit them with the weapon. This won't cause recursive cleaving due to the cleaving variable being set to true. + if(resolve_attackby(SM, user, attack_modifier = 0.5)) // Hit them with the weapon. This won't cause recursive cleaving due to the cleaving variable being set to true. hit_mobs++ cleave_visual(user, target) @@ -55,4 +55,4 @@ // This is purely the visual effect of cleaving. /obj/item/weapon/proc/cleave_visual(var/mob/living/user, var/mob/living/target) var/obj/effect/temporary_effect/cleave_attack/E = new(get_turf(src)) - E.dir = get_dir(user, target) \ No newline at end of file + E.dir = get_dir(user, target) diff --git a/code/game/response_team.dm b/code/game/response_team.dm index 0bdbfe4154..952a3b64dd 100644 --- a/code/game/response_team.dm +++ b/code/game/response_team.dm @@ -93,6 +93,12 @@ proc/increment_ert_chance() while(send_emergency_team == 0) // There is no ERT at the time. if(get_security_level() == "green") ert_base_chance += 1 + if(get_security_level() == "yellow") + ert_base_chance += 1 + if(get_security_level() == "violet") + ert_base_chance += 2 + if(get_security_level() == "orange") + ert_base_chance += 2 if(get_security_level() == "blue") ert_base_chance += 2 if(get_security_level() == "red") diff --git a/code/game/shuttle_engines.dm b/code/game/shuttle_engines.dm index c76967545e..579b6f6aea 100644 --- a/code/game/shuttle_engines.dm +++ b/code/game/shuttle_engines.dm @@ -9,15 +9,17 @@ density = 1 opacity = 0 anchored = 1 + can_atmos_pass = ATMOS_PASS_NO var/window_flags = 0 // Bitflags to indicate connected windows var/wall_flags = 0 // Bitflags to indicate connected walls -/obj/structure/shuttle/window/CanPass(atom/movable/mover, turf/target, height, air_group) - if(!height || air_group) return 0 - else return ..() +/obj/structure/shuttle/window/CanPass(atom/movable/mover, turf/target) + if(istype(mover) && mover.checkpass(PASSGLASS)) + return TRUE + return ..() -/obj/structure/shuttle/window/initialize() +/obj/structure/shuttle/window/Initialize() . = ..() auto_join() diff --git a/code/game/sound.dm b/code/game/sound.dm index b9810d7915..b1f0c32f66 100644 --- a/code/game/sound.dm +++ b/code/game/sound.dm @@ -23,7 +23,7 @@ if(distance <= maxdistance) if(T && T.z == turf_source.z) - M.playsound_local(turf_source, soundin, vol, vary, frequency, falloff, is_global, channel, pressure_affected, S) + M.playsound_local(turf_source, soundin, vol, vary, frequency, falloff, is_global, channel, pressure_affected, S, preference) /mob/proc/playsound_local(turf/turf_source, soundin, vol as num, vary, frequency, falloff, is_global, channel = 0, pressure_affected = TRUE, sound/S, preference) if(!client || ear_deaf > 0) @@ -130,8 +130,6 @@ if ("fracture") soundin = pick('sound/effects/bonebreak1.ogg','sound/effects/bonebreak2.ogg','sound/effects/bonebreak3.ogg','sound/effects/bonebreak4.ogg') if ("canopen") soundin = pick('sound/effects/can_open1.ogg','sound/effects/can_open2.ogg','sound/effects/can_open3.ogg','sound/effects/can_open4.ogg') if ("mechstep") soundin = pick('sound/mecha/mechstep1.ogg', 'sound/mecha/mechstep2.ogg') - if ("geiger") soundin = pick('sound/items/geiger1.ogg', 'sound/items/geiger2.ogg', 'sound/items/geiger3.ogg', 'sound/items/geiger4.ogg', 'sound/items/geiger5.ogg') - if ("geiger_weak") soundin = pick('sound/items/geiger_weak1.ogg', 'sound/items/geiger_weak2.ogg', 'sound/items/geiger_weak3.ogg', 'sound/items/geiger_weak4.ogg') if ("thunder") soundin = pick('sound/effects/thunder/thunder1.ogg', 'sound/effects/thunder/thunder2.ogg', 'sound/effects/thunder/thunder3.ogg', 'sound/effects/thunder/thunder4.ogg', 'sound/effects/thunder/thunder5.ogg', 'sound/effects/thunder/thunder6.ogg', 'sound/effects/thunder/thunder7.ogg', 'sound/effects/thunder/thunder8.ogg', 'sound/effects/thunder/thunder9.ogg', 'sound/effects/thunder/thunder10.ogg') diff --git a/code/game/turfs/flooring/flooring.dm b/code/game/turfs/flooring/flooring.dm index 549265e954..2f45eb7b51 100644 --- a/code/game/turfs/flooring/flooring.dm +++ b/code/game/turfs/flooring/flooring.dm @@ -74,7 +74,6 @@ var/list/flooring_types 'sound/effects/footstep/snow4.ogg', 'sound/effects/footstep/snow5.ogg')) - /decl/flooring/snow/snow2 name = "snow" desc = "A layer of many tiny bits of frozen water. It's hard to tell how deep it is." diff --git a/code/game/turfs/flooring/flooring_decals.dm b/code/game/turfs/flooring/flooring_decals.dm index 8d24e46765..f69d676ccd 100644 --- a/code/game/turfs/flooring/flooring_decals.dm +++ b/code/game/turfs/flooring/flooring_decals.dm @@ -14,7 +14,7 @@ var/list/floor_decals = list() if(newcolour) color = newcolour ..(newloc) -/obj/effect/floor_decal/initialize() +/obj/effect/floor_decal/Initialize() add_to_turf_decals() initialized = TRUE return INITIALIZE_HINT_QDEL @@ -40,7 +40,7 @@ var/list/floor_decals = list() /obj/effect/floor_decal/reset name = "reset marker" -/obj/effect/floor_decal/reset/initialize() +/obj/effect/floor_decal/reset/Initialize() var/turf/T = get_turf(src) if(T.decals && T.decals.len) T.decals.Cut() diff --git a/code/game/turfs/flooring/flooring_premade.dm b/code/game/turfs/flooring/flooring_premade.dm index 409d5209a4..a623ac9e5a 100644 --- a/code/game/turfs/flooring/flooring_premade.dm +++ b/code/game/turfs/flooring/flooring_premade.dm @@ -71,7 +71,7 @@ /turf/simulated/floor/wood/broken icon_state = "wood_broken0" // This gets changed when spawned. -/turf/simulated/floor/wood/broken/initialize() +/turf/simulated/floor/wood/broken/Initialize() break_tile() return ..() @@ -84,7 +84,7 @@ /turf/simulated/floor/wood/sif/broken icon_state = "sifwood_broken0" // This gets changed when spawned. -/turf/simulated/floor/wood/sif/broken/initialize() +/turf/simulated/floor/wood/sif/broken/Initialize() break_tile() return ..() @@ -244,7 +244,7 @@ oxygen = 0 nitrogen = 0 -/turf/simulated/floor/reinforced/n20/initialize() +/turf/simulated/floor/reinforced/n20/Initialize() . = ..() if(!air) make_air() air.adjust_gas("sleeping_agent", ATMOSTANK_NITROUSOXIDE) diff --git a/code/game/turfs/simulated/dungeon/wall.dm b/code/game/turfs/simulated/dungeon/wall.dm index c1a02cde66..6c39e01798 100644 --- a/code/game/turfs/simulated/dungeon/wall.dm +++ b/code/game/turfs/simulated/dungeon/wall.dm @@ -32,7 +32,7 @@ mining_overlay_cache["rock_side_[place_dir]"] = image('icons/turf/walls.dmi', "rock_side", dir = place_dir) T.add_overlay(mining_overlay_cache["rock_side_[place_dir]"]) -/turf/simulated/wall/solidrock/initialize() +/turf/simulated/wall/solidrock/Initialize() icon_state = base_state update_icon(1) diff --git a/code/game/turfs/simulated/floor_types.dm b/code/game/turfs/simulated/floor_types.dm index 316153ebc0..d670fc3a40 100644 --- a/code/game/turfs/simulated/floor_types.dm +++ b/code/game/turfs/simulated/floor_types.dm @@ -185,7 +185,7 @@ light_color = "#66ffff" // Bright cyan. block_tele = TRUE -/turf/simulated/shuttle/floor/alien/initialize() +/turf/simulated/shuttle/floor/alien/Initialize() . = ..() icon_state = "alienpod[rand(1, 9)]" @@ -213,8 +213,9 @@ takes_underlays = 1 blocks_air = 1 //I'd make these unsimulated but it just fucks with so much stuff so many other places. - initialize() - icon_state = "carry_ingame" +/turf/simulated/shuttle/plating/carry/Initialize() + . = ..() + icon_state = "carry_ingame" /turf/simulated/shuttle/plating/airless/carry name = "airless carry turf" @@ -223,8 +224,9 @@ takes_underlays = 1 blocks_air = 1 - initialize() - icon_state = "carry_ingame" +/turf/simulated/shuttle/plating/airless/carry/Initialize() + . = ..() + icon_state = "carry_ingame" /turf/simulated/shuttle/plating/skipjack //Skipjack plating oxygen = 0 diff --git a/code/game/turfs/simulated/lava.dm b/code/game/turfs/simulated/lava.dm new file mode 100644 index 0000000000..acf0c17317 --- /dev/null +++ b/code/game/turfs/simulated/lava.dm @@ -0,0 +1,91 @@ +/turf/simulated/floor/lava + name = "lava" + desc = "A pool of molten rock." + description_info = "Molten rock is extremly dangerous, as it will cause massive harm to anything that touches it.
\ + A firesuit cannot fully protect from contact with molten rock." + gender = PLURAL // So it says "That's some lava." on examine. + icon = 'icons/turf/outdoors.dmi' + icon_state = "lava" + edge_blending_priority = -1 + light_range = 2 + light_power = 0.75 + light_color = LIGHT_COLOR_LAVA + movement_cost = 2 + can_build_into_floor = TRUE + can_dirty = FALSE + +/turf/simulated/floor/lava/outdoors + outdoors = TRUE + +// For maximum pedantry. +/turf/simulated/floor/lava/Initialize() + if(!outdoors) + name = "magma" + update_icon() + return ..() + +/turf/simulated/floor/lava/make_outdoors() + ..() + name = "lava" + +/turf/simulated/floor/lava/make_indoors() + ..() + name = "magma" + +/turf/simulated/floor/lava/update_icon() + cut_overlays() + ..() + update_icon_edge() + +/turf/simulated/floor/lava/Entered(atom/movable/AM) + if(burn_stuff(AM)) + START_PROCESSING(SSobj, src) + +/turf/simulated/floor/lava/hitby(atom/movable/AM) + if(burn_stuff(AM)) + START_PROCESSING(SSobj, src) + +/turf/simulated/floor/lava/process() + if(!burn_stuff()) + STOP_PROCESSING(SSobj, src) + +/turf/simulated/floor/lava/proc/is_safe() + //if anything matching this typecache is found in the lava, we don't burn things + var/static/list/lava_safeties_typecache = typecacheof(list(/obj/structure/catwalk)) + var/list/found_safeties = typecache_filter_list(contents, lava_safeties_typecache) + return LAZYLEN(found_safeties) + +/turf/simulated/floor/lava/proc/burn_stuff(atom/movable/AM) + . = FALSE + + if(is_safe()) + return FALSE + + var/thing_to_check = src + if(AM) + thing_to_check = list(AM) + + for(var/thing in thing_to_check) + if(isobj(thing)) + var/obj/O = thing + if(O.throwing) + continue + . = TRUE + O.lava_act() + + else if(isliving(thing)) + var/mob/living/L = thing + if(L.hovering || L.throwing) // Flying over the lava. We're just gonna pretend convection doesn't exist. + continue + . = TRUE + L.lava_act() + +// Lava that does nothing at all. +/turf/simulated/floor/lava/harmless/burn_stuff(atom/movable/AM) + return FALSE + +// Tells AI mobs to not suicide by pathing into lava if it would hurt them. +/turf/simulated/floor/lava/is_safe_to_enter(mob/living/L) + if(!is_safe() && !L.hovering) + return FALSE + return ..() \ No newline at end of file diff --git a/code/game/turfs/simulated/outdoors/grass.dm b/code/game/turfs/simulated/outdoors/grass.dm index 218291815f..67aa054b46 100644 --- a/code/game/turfs/simulated/outdoors/grass.dm +++ b/code/game/turfs/simulated/outdoors/grass.dm @@ -17,6 +17,13 @@ var/list/grass_types = list( /obj/structure/flora/ausbushes/fullgrass ) +/datum/category_item/catalogue/flora/sif_grass + name = "Sivian Flora - Moss" + desc = "A natural moss that has adapted to the sheer cold climate of Sif. \ + The moss came to rely partially on bioluminescent bacteria provided by the local tree populations. \ + As such, the moss often grows in large clusters in the denser forests of Sif. \ + The moss has evolved into it's distinctive blue hue thanks to it's reliance on bacteria that has a similar color." + value = CATALOGUER_REWARD_TRIVIAL /turf/simulated/floor/outdoors/grass/sif name = "growth" @@ -29,17 +36,20 @@ var/list/grass_types = list( /obj/structure/flora/sif/eyes ) -/turf/simulated/floor/outdoors/grass/sif/initialize() - if(tree_chance && prob(tree_chance)) + catalogue_data = list(/datum/category_item/catalogue/flora/sif_grass) + catalogue_delay = 2 SECONDS + +/turf/simulated/floor/outdoors/grass/sif/Initialize() + if(tree_chance && prob(tree_chance) && !check_density()) new /obj/structure/flora/tree/sif(src) . = ..() -/turf/simulated/floor/outdoors/grass/initialize() +/turf/simulated/floor/outdoors/grass/Initialize() if(prob(50)) icon_state = "[initial(icon_state)]2" //edge_blending_priority++ - if(grass_chance && prob(grass_chance)) + if(grass_chance && prob(grass_chance) && !check_density()) var/grass_type = pick(grass_types) new grass_type(src) . = ..() diff --git a/code/game/turfs/simulated/outdoors/outdoors.dm b/code/game/turfs/simulated/outdoors/outdoors.dm index 968816dc6a..a378cc48da 100644 --- a/code/game/turfs/simulated/outdoors/outdoors.dm +++ b/code/game/turfs/simulated/outdoors/outdoors.dm @@ -20,7 +20,7 @@ var/list/turf_edge_cache = list() // When a turf gets demoted or promoted, this list gets adjusted. The top-most layer is the layer on the bottom of the list, due to how pop() works. var/list/turf_layers = list(/turf/simulated/floor/outdoors/rocks) -/turf/simulated/floor/outdoors/initialize() +/turf/simulated/floor/outdoors/Initialize() update_icon() . = ..() @@ -51,10 +51,10 @@ var/list/turf_edge_cache = list() make_indoors() /turf/simulated/proc/update_icon_edge() - if(edge_blending_priority) + if(edge_blending_priority && !forbid_turf_edge()) for(var/checkdir in cardinal) var/turf/simulated/T = get_step(src, checkdir) - if(istype(T) && T.edge_blending_priority && edge_blending_priority < T.edge_blending_priority && icon_state != T.icon_state) + if(istype(T) && T.edge_blending_priority && edge_blending_priority < T.edge_blending_priority && icon_state != T.icon_state && !T.forbid_turf_edge()) var/cache_key = "[T.get_edge_icon_state()]-[checkdir]" if(!turf_edge_cache[cache_key]) var/image/I = image(icon = 'icons/turf/outdoors_edge.dmi', icon_state = "[T.get_edge_icon_state()]-edge", dir = checkdir, layer = ABOVE_TURF_LAYER) @@ -65,6 +65,14 @@ var/list/turf_edge_cache = list() /turf/simulated/proc/get_edge_icon_state() return icon_state +// Tests if we shouldn't apply a turf edge. +// Returns the blocker if one exists. +/turf/simulated/proc/forbid_turf_edge() + for(var/obj/structure/S in contents) + if(S.block_turf_edges) + return S + return null + /turf/simulated/floor/outdoors/update_icon() ..() update_icon_edge() @@ -80,6 +88,8 @@ var/list/turf_edge_cache = list() icon_state = "rock" edge_blending_priority = 1 +/turf/simulated/floor/outdoors/rocks/caves + outdoors = FALSE // This proc adds a 'layer' on top of the turf. /turf/simulated/floor/outdoors/proc/promote(var/new_turf_type) @@ -132,4 +142,4 @@ var/list/turf_edge_cache = list() if(3) if(prob(66)) return - demote() \ No newline at end of file + demote() diff --git a/code/game/turfs/simulated/outdoors/sky.dm b/code/game/turfs/simulated/outdoors/sky.dm index 468b893b33..3188302288 100644 --- a/code/game/turfs/simulated/outdoors/sky.dm +++ b/code/game/turfs/simulated/outdoors/sky.dm @@ -12,7 +12,7 @@ nitrogen = 0 phoron = 0 -/turf/simulated/sky/initialize() +/turf/simulated/sky/Initialize() . = ..() SSplanets.addTurf(src) set_light(2, 2, "#FFFFFF") diff --git a/code/game/turfs/simulated/outdoors/snow.dm b/code/game/turfs/simulated/outdoors/snow.dm index 5fed8af66b..0f9be4ddbf 100644 --- a/code/game/turfs/simulated/outdoors/snow.dm +++ b/code/game/turfs/simulated/outdoors/snow.dm @@ -13,6 +13,9 @@ /turf/simulated/floor/outdoors/snow/Entered(atom/A) if(isliving(A)) + var/mob/living/L = A + if(L.hovering) // Flying things shouldn't make footprints. + return ..() var/mdir = "[A.dir]" crossed_dirs[mdir] = 1 update_icon() diff --git a/code/game/turfs/simulated/wall_attacks.dm b/code/game/turfs/simulated/wall_attacks.dm index 02c6d0d8dc..bd6adfe32f 100644 --- a/code/game/turfs/simulated/wall_attacks.dm +++ b/code/game/turfs/simulated/wall_attacks.dm @@ -60,9 +60,9 @@ var/damage_lower = 25 var/damage_upper = 75 if(isanimal(user)) - var/mob/living/simple_animal/S = user + var/mob/living/simple_mob/S = user playsound(src, S.attack_sound, 75, 1) - if(!(S.melee_damage_upper >= 10)) + if(!(S.melee_damage_upper >= STRUCTURE_MIN_DAMAGE_THRESHOLD * 2)) to_chat(user, "You bounce against the wall.") return FALSE damage_lower = S.melee_damage_lower @@ -75,7 +75,7 @@ to_chat(user, "You smash through the wall!") user.do_attack_animation(src) if(isanimal(user)) - var/mob/living/simple_animal/S = user + var/mob/living/simple_mob/S = user playsound(src, S.attack_sound, 75, 1) spawn(1) dismantle_wall(1) @@ -115,12 +115,12 @@ try_touch(user, rotting) -/turf/simulated/wall/attack_generic(var/mob/user, var/damage, var/attack_message, var/wallbreaker) +/turf/simulated/wall/attack_generic(var/mob/user, var/damage, var/attack_message) radiate() user.setClickCooldown(user.get_attack_speed()) var/rotting = (locate(/obj/effect/overlay/wallrot) in src) - if(!damage || !wallbreaker) + if(damage < STRUCTURE_MIN_DAMAGE_THRESHOLD * 2) try_touch(user, rotting) return @@ -128,7 +128,7 @@ return success_smash(user) if(reinf_material) - if((wallbreaker == 2) || (damage >= max(material.hardness,reinf_material.hardness))) + if(damage >= max(material.hardness, reinf_material.hardness) ) return success_smash(user) else if(damage >= material.hardness) return success_smash(user) diff --git a/code/game/turfs/simulated/wall_types.dm b/code/game/turfs/simulated/wall_types.dm index 9884f47b0d..bed5598704 100644 --- a/code/game/turfs/simulated/wall_types.dm +++ b/code/game/turfs/simulated/wall_types.dm @@ -160,7 +160,7 @@ //To allow mappers to rename shuttle walls to like "redfloor interior" or whatever for ease of use. name = true_name -/turf/simulated/shuttle/wall/initialize() +/turf/simulated/shuttle/wall/Initialize() . = ..() if(join_group) @@ -241,7 +241,7 @@ /turf/simulated/shuttle/wall/voidcraft/green stripe_color = "#00FF00" -/turf/simulated/shuttle/wall/voidcraft/initialize() +/turf/simulated/shuttle/wall/voidcraft/Initialize() . = ..() update_icon() diff --git a/code/game/turfs/simulated/walls.dm b/code/game/turfs/simulated/walls.dm index 136b8eeba6..cb1a0f631a 100644 --- a/code/game/turfs/simulated/walls.dm +++ b/code/game/turfs/simulated/walls.dm @@ -39,11 +39,10 @@ if(!isnull(rmaterialtype)) reinf_material = get_material_by_name(rmaterialtype) update_material() - - processing_turfs |= src + START_PROCESSING(SSturfs, src) /turf/simulated/wall/Destroy() - processing_turfs -= src + STOP_PROCESSING(SSturfs, src) dismantle_wall(null,null,1) ..() diff --git a/code/game/turfs/simulated/water.dm b/code/game/turfs/simulated/water.dm index 6539348e5d..33901a8b2b 100644 --- a/code/game/turfs/simulated/water.dm +++ b/code/game/turfs/simulated/water.dm @@ -9,20 +9,24 @@ edge_blending_priority = -1 movement_cost = 4 outdoors = TRUE + + layer = WATER_FLOOR_LAYER + can_dirty = FALSE // It's water var/depth = 1 // Higher numbers indicates deeper water. -/turf/simulated/floor/water/initialize() +/turf/simulated/floor/water/Initialize() . = ..() update_icon() /turf/simulated/floor/water/update_icon() ..() // To get the edges. - icon_state = water_state - var/image/floorbed_sprite = image(icon = 'icons/turf/outdoors.dmi', icon_state = under_state) - underlays.Cut() // To clear the old underlay, so the list doesn't expand infinitely - underlays.Add(floorbed_sprite) + + icon_state = under_state // This isn't set at compile time in order for it to show as water in the map editor. + var/image/water_sprite = image(icon = 'icons/turf/outdoors.dmi', icon_state = water_state, layer = WATER_LAYER) + add_overlay(water_sprite) + update_icon_edge() /turf/simulated/floor/water/get_edge_icon_state() @@ -102,6 +106,10 @@ /mob/living/proc/check_submerged() if(buckled) return 0 + if(hovering) + return 0 + if(locate(/obj/structure/catwalk) in loc) + return 0 var/turf/simulated/floor/water/T = loc if(istype(T)) return T.depth @@ -115,6 +123,8 @@ adjust_fire_stacks(-amount * 5) for(var/atom/movable/AM in contents) AM.water_act(amount) + remove_modifiers_of_type(/datum/modifier/fire) + inflict_water_damage(20 * amount) // Only things vulnerable to water will actually be harmed (slimes/prommies). var/list/shoreline_icon_cache = list() @@ -140,7 +150,13 @@ var/list/shoreline_icon_cache = list() var/icon/shoreline_water = icon(src.icon, "shoreline_water", src.dir) var/icon/shoreline_subtract = icon(src.icon, "[initial(icon_state)]_subtract", src.dir) shoreline_water.Blend(shoreline_subtract,ICON_SUBTRACT) + var/image/final = image(shoreline_water) + final.layer = WATER_LAYER - shoreline_icon_cache[cache_string] = shoreline_water + shoreline_icon_cache[cache_string] = final add_overlay(shoreline_icon_cache[cache_string]) +/turf/simulated/floor/water/is_safe_to_enter(mob/living/L) + if(L.get_water_protection() < 1) + return FALSE + return ..() diff --git a/code/game/turfs/space/space.dm b/code/game/turfs/space/space.dm index d9a41718a8..55e0dd3b67 100644 --- a/code/game/turfs/space/space.dm +++ b/code/game/turfs/space/space.dm @@ -10,7 +10,7 @@ var/keep_sprite = FALSE // heat_capacity = 700000 No. -/turf/space/initialize() +/turf/space/Initialize() . = ..() if(!keep_sprite) icon_state = "[((x + y) ^ ~(x * y) + z) % 25]" diff --git a/code/game/turfs/turf.dm b/code/game/turfs/turf.dm index 0a2bea6add..eb85d4aeb5 100644 --- a/code/game/turfs/turf.dm +++ b/code/game/turfs/turf.dm @@ -32,6 +32,7 @@ var/block_tele = FALSE // If true, most forms of teleporting to or from this turf tile will fail. var/can_build_into_floor = FALSE // Used for things like RCDs (and maybe lattices/floor tiles in the future), to see if a floor should replace it. + var/list/dangerous_objects // List of 'dangerous' objs that the turf holds that can cause something bad to happen when stepped on, used for AI mobs. /turf/New() ..() @@ -141,50 +142,6 @@ turf/attackby(obj/item/weapon/W as obj, mob/user as mob) sleep(2) O.update_transform() -/turf/Enter(atom/movable/mover as mob|obj, atom/forget as mob|obj|turf|area) - if(movement_disabled && usr.ckey != movement_disabled_exception) - usr << "Movement is admin-disabled." //This is to identify lag problems - return - - ..() - - if (!mover || !isturf(mover.loc)) - return 1 - - //First, check objects to block exit that are not on the border - for(var/obj/obstacle in mover.loc) - if(!(obstacle.flags & ON_BORDER) && (mover != obstacle) && (forget != obstacle)) - if(!obstacle.CheckExit(mover, src)) - mover.Bump(obstacle, 1) - return 0 - - //Now, check objects to block exit that are on the border - for(var/obj/border_obstacle in mover.loc) - if((border_obstacle.flags & ON_BORDER) && (mover != border_obstacle) && (forget != border_obstacle)) - if(!border_obstacle.CheckExit(mover, src)) - mover.Bump(border_obstacle, 1) - return 0 - - //Next, check objects to block entry that are on the border - for(var/obj/border_obstacle in src) - if(border_obstacle.flags & ON_BORDER) - if(!border_obstacle.CanPass(mover, mover.loc, 1, 0) && (forget != border_obstacle)) - mover.Bump(border_obstacle, 1) - return 0 - - //Then, check the turf itself - if (!src.CanPass(mover, src)) - mover.Bump(src, 1) - return 0 - - //Finally, check objects/mobs to block entry that are not on the border - for(var/atom/movable/obstacle in src) - if(!(obstacle.flags & ON_BORDER)) - if(!obstacle.CanPass(mover, mover.loc, 1, 0) && (forget != obstacle)) - mover.Bump(obstacle, 1) - return 0 - return 1 //Nothing found to block so return success! - var/const/enterloopsanity = 100 /turf/Entered(atom/atom as mob|obj) @@ -216,14 +173,74 @@ var/const/enterloopsanity = 100 var/objects = 0 if(A && (A.flags & PROXMOVE)) for(var/atom/movable/thing in range(1)) - if(objects > enterloopsanity) break - objects++ + if(objects++ > enterloopsanity) break spawn(0) if(A) //Runtime prevention A.HasProximity(thing, 1) if ((thing && A) && (thing.flags & PROXMOVE)) thing.HasProximity(A, 1) - return + +/turf/CanPass(atom/movable/mover, turf/target) + if(!target) + return FALSE + + if(istype(mover)) // turf/Enter(...) will perform more advanced checks + return !density + + crash_with("Non movable passed to turf CanPass : [mover]") + return FALSE + +//There's a lot of QDELETED() calls here if someone can figure out how to optimize this but not runtime when something gets deleted by a Bump/CanPass/Cross call, lemme know or go ahead and fix this mess - kevinz000 +/turf/Enter(atom/movable/mover, atom/oldloc) + if(movement_disabled && usr.ckey != movement_disabled_exception) + usr << "Movement is admin-disabled." //This is to identify lag problems + return + // Do not call ..() + // Byond's default turf/Enter() doesn't have the behaviour we want with Bump() + // By default byond will call Bump() on the first dense object in contents + // Here's hoping it doesn't stay like this for years before we finish conversion to step_ + var/atom/firstbump + var/CanPassSelf = CanPass(mover, src) + if(CanPassSelf || CHECK_BITFIELD(mover.movement_type, UNSTOPPABLE)) + for(var/i in contents) + if(QDELETED(mover)) + return FALSE //We were deleted, do not attempt to proceed with movement. + if(i == mover || i == mover.loc) // Multi tile objects and moving out of other objects + continue + var/atom/movable/thing = i + if(!thing.Cross(mover)) + if(QDELETED(mover)) //Mover deleted from Cross/CanPass, do not proceed. + return FALSE + if(CHECK_BITFIELD(mover.movement_type, UNSTOPPABLE)) + mover.Bump(thing) + continue + else + if(!firstbump || ((thing.layer > firstbump.layer || thing.flags & ON_BORDER) && !(firstbump.flags & ON_BORDER))) + firstbump = thing + if(QDELETED(mover)) //Mover deleted from Cross/CanPass/Bump, do not proceed. + return FALSE + if(!CanPassSelf) //Even if mover is unstoppable they need to bump us. + firstbump = src + if(firstbump) + mover.Bump(firstbump) + return !QDELETED(mover) && CHECK_BITFIELD(mover.movement_type, UNSTOPPABLE) + return TRUE + +/turf/Exit(atom/movable/mover, atom/newloc) + . = ..() + if(!. || QDELETED(mover)) + return FALSE + for(var/i in contents) + if(i == mover) + continue + var/atom/movable/thing = i + if(!thing.Uncross(mover, newloc)) + if(thing.flags & ON_BORDER) + mover.Bump(thing) + if(!CHECK_BITFIELD(mover.movement_type, UNSTOPPABLE)) + return FALSE + if(QDELETED(mover)) + return FALSE //We were deleted. /turf/proc/adjacent_fire_act(turf/simulated/floor/source, temperature, volume) return @@ -282,9 +299,6 @@ var/const/enterloopsanity = 100 L.Add(t) return L -/turf/proc/process() - return PROCESS_KILL - /turf/proc/contains_dense_objects() if(density) return 1 @@ -322,6 +336,30 @@ var/const/enterloopsanity = 100 /turf/AllowDrop() return TRUE +// Returns false if stepping into a tile would cause harm (e.g. open space while unable to fly, water tile while a slime, lava, etc). +/turf/proc/is_safe_to_enter(mob/living/L) + if(LAZYLEN(dangerous_objects)) + for(var/obj/O in dangerous_objects) + if(!O.is_safe_to_step(L)) + return FALSE + return TRUE + +// Tells the turf that it currently contains something that automated movement should consider if planning to enter the tile. +// This uses lazy list macros to reduce memory footprint, since for 99% of turfs the list would've been empty anyways. +/turf/proc/register_dangerous_object(obj/O) + if(!istype(O)) + return FALSE + LAZYADD(dangerous_objects, O) +// color = "#FF0000" + +// Similar to above, for when the dangerous object stops being dangerous/gets deleted/moved/etc. +/turf/proc/unregister_dangerous_object(obj/O) + if(!istype(O)) + return FALSE + LAZYREMOVE(dangerous_objects, O) + UNSETEMPTY(dangerous_objects) // This nulls the list var if it's empty. +// color = "#00FF00" + // This is all the way up here since its the common ancestor for things that need to get replaced with a floor when an RCD is used on them. // More specialized turfs like walls should instead override this. // The code for applying lattices/floor tiles onto lattices could also utilize something similar in the future. diff --git a/code/game/turfs/turf_changing.dm b/code/game/turfs/turf_changing.dm index decd0f2eb3..0c97ec387e 100644 --- a/code/game/turfs/turf_changing.dm +++ b/code/game/turfs/turf_changing.dm @@ -38,6 +38,7 @@ var/old_lighting_overlay = lighting_overlay var/old_corners = corners var/old_outdoors = outdoors + var/old_dangerous_objects = dangerous_objects //world << "Replacing [src.type] with [N]" @@ -95,6 +96,8 @@ recalc_atom_opacity() + dangerous_objects = old_dangerous_objects + if(lighting_overlays_initialised) lighting_overlay = old_lighting_overlay affecting_lights = old_affecting_lights @@ -108,4 +111,4 @@ lighting_clear_overlay() if(preserve_outdoors) - outdoors = old_outdoors \ No newline at end of file + outdoors = old_outdoors diff --git a/code/game/turfs/unsimulated/beach.dm b/code/game/turfs/unsimulated/beach.dm index 28cebacb8a..4638b15cab 100644 --- a/code/game/turfs/unsimulated/beach.dm +++ b/code/game/turfs/unsimulated/beach.dm @@ -37,7 +37,7 @@ icon = 'icons/turf/desert.dmi' icon_state = "desert" -/turf/simulated/floor/beach/sand/desert/initialize() +/turf/simulated/floor/beach/sand/desert/Initialize() . = ..() if(prob(5)) icon_state = "desert[rand(0,4)]" diff --git a/code/game/turfs/unsimulated/sky_vr.dm b/code/game/turfs/unsimulated/sky_vr.dm index 1db001a187..8ba1cf0cb5 100644 --- a/code/game/turfs/unsimulated/sky_vr.dm +++ b/code/game/turfs/unsimulated/sky_vr.dm @@ -12,7 +12,7 @@ var/does_skyfall = TRUE var/list/skyfall_levels -/turf/unsimulated/floor/sky/initialize() +/turf/unsimulated/floor/sky/Initialize() . = ..() if(does_skyfall && !LAZYLEN(skyfall_levels)) error("[x],[y],[z], [get_area(src)] doesn't have skyfall_levels defined! Can't skyfall!") diff --git a/code/game/verbs/advanced_who.dm b/code/game/verbs/advanced_who.dm index a452446e46..bbde65fd07 100644 --- a/code/game/verbs/advanced_who.dm +++ b/code/game/verbs/advanced_who.dm @@ -8,7 +8,7 @@ var/list/Lines = list() if(holder && (R_ADMIN & holder.rights || R_MOD & holder.rights)) - for(var/client/C in clients) + for(var/client/C in GLOB.clients) var/entry = "\t[C.key]" if(C.holder && C.holder.fakekey) entry += " (as [C.holder.fakekey])" @@ -52,7 +52,7 @@ Lines += entry else - for(var/client/C in clients) + for(var/client/C in GLOB.clients) var/entry = "\t" if(C.holder && C.holder.fakekey) entry += "[C.holder.fakekey]" diff --git a/code/game/verbs/character_directory.dm b/code/game/verbs/character_directory.dm index 3c90f09591..967715901d 100644 --- a/code/game/verbs/character_directory.dm +++ b/code/game/verbs/character_directory.dm @@ -11,7 +11,7 @@ var/html = "" var/curID = 0 - for(var/client/C in clients) + for(var/client/C in GLOB.clients) if(C.prefs && !C.prefs.show_in_directory) continue if(ishuman(C.mob)) diff --git a/code/game/verbs/ignore.dm b/code/game/verbs/ignore.dm index c154628087..ea1ad6a0b7 100644 --- a/code/game/verbs/ignore.dm +++ b/code/game/verbs/ignore.dm @@ -42,7 +42,7 @@ /client/proc/is_key_ignored(var/key_to_check) key_to_check = ckey(key_to_check) if(key_to_check in prefs.ignored_players) - if(directory[key_to_check] in admins) // This is here so this is only evaluated if someone is actually being blocked. + if(GLOB.directory[key_to_check] in admins) // This is here so this is only evaluated if someone is actually being blocked. return 0 return 1 return 0 \ No newline at end of file diff --git a/code/game/verbs/ooc.dm b/code/game/verbs/ooc.dm index 8ef0fbb012..0c6fa0fed7 100644 --- a/code/game/verbs/ooc.dm +++ b/code/game/verbs/ooc.dm @@ -57,7 +57,7 @@ if(holder.rights & R_ADMIN) ooc_style = "admin" - for(var/client/target in clients) + for(var/client/target in GLOB.clients) if(target.is_preference_enabled(/datum/client_preference/show_ooc)) if(target.is_key_ignored(key)) // If we're ignored by this person, then do nothing. continue @@ -124,7 +124,7 @@ var/list/in_range = get_mobs_and_objs_in_view_fast(T,world.view,0) var/list/m_viewers = in_range["mobs"] - var/list/receivers = list() // Clients, not mobs. + var/list/receivers = list() //Clients, not mobs. var/list/r_receivers = list() var/display_name = key diff --git a/code/game/verbs/who.dm b/code/game/verbs/who.dm index 06402a90a4..c030e25649 100644 --- a/code/game/verbs/who.dm +++ b/code/game/verbs/who.dm @@ -8,7 +8,7 @@ var/list/Lines = list() if(holder && (R_ADMIN & holder.rights || R_MOD & holder.rights)) - for(var/client/C in clients) + for(var/client/C in GLOB.clients) var/entry = "\t[C.key]" if(C.holder && C.holder.fakekey) entry += " (as [C.holder.fakekey])" @@ -51,7 +51,7 @@ entry += " (?)" Lines += entry else - for(var/client/C in clients) + for(var/client/C in GLOB.clients) if(C.holder && C.holder.fakekey) Lines += C.holder.fakekey else diff --git a/code/game/world.dm b/code/game/world.dm index 46787a6cfd..52d160a544 100644 --- a/code/game/world.dm +++ b/code/game/world.dm @@ -1,3 +1,648 @@ +#define RECOMMENDED_VERSION 501 +/world/New() + world.log << "Map Loading Complete" + //logs + //VOREStation Edit Start + log_path += time2text(world.realtime, "YYYY/MM-Month/DD-Day/round-hh-mm-ss") + diary = start_log("[log_path].log") + href_logfile = start_log("[log_path]-hrefs.htm") + error_log = start_log("[log_path]-error.log") + debug_log = start_log("[log_path]-debug.log") + //VOREStation Edit End + + changelog_hash = md5('html/changelog.html') //used for telling if the changelog has changed recently + + if(byond_version < RECOMMENDED_VERSION) + world.log << "Your server's byond version does not meet the recommended requirements for this server. Please update BYOND" + + config.post_load() + + if(config && config.server_name != null && config.server_suffix && world.port > 0) + // dumb and hardcoded but I don't care~ + config.server_name += " #[(world.port % 1000) / 100]" + + // TODO - Figure out what this is. Can you assign to world.log? + // if(config && config.log_runtime) + // log = file("data/logs/runtime/[time2text(world.realtime,"YYYY-MM-DD-(hh-mm-ss)")]-runtime.log") + + GLOB.timezoneOffset = text2num(time2text(0,"hh")) * 36000 + + callHook("startup") + //Emergency Fix + load_mods() + //end-emergency fix + + src.update_status() + + . = ..() + +#if UNIT_TEST + log_unit_test("Unit Tests Enabled. This will destroy the world when testing is complete.") + log_unit_test("If you did not intend to enable this please check code/__defines/unit_testing.dm") +#endif + + // Set up roundstart seed list. + plant_controller = new() + + // This is kinda important. Set up details of what the hell things are made of. + populate_material_list() + + // Create frame types. + populate_frame_types() + + // Create floor types. + populate_flooring_types() + + // Create robolimbs for chargen. + populate_robolimb_list() + + //Must be done now, otherwise ZAS zones and lighting overlays need to be recreated. + createRandomZlevel() + + processScheduler = new + master_controller = new /datum/controller/game_controller() + + processScheduler.deferSetupFor(/datum/controller/process/ticker) + processScheduler.setup() + Master.Initialize(10, FALSE) + + spawn(1) + master_controller.setup() +#if UNIT_TEST + initialize_unit_tests() +#endif + + spawn(3000) //so we aren't adding to the round-start lag + if(config.ToRban) + ToRban_autoupdate() + +#undef RECOMMENDED_VERSION + + return + +var/world_topic_spam_protect_ip = "0.0.0.0" +var/world_topic_spam_protect_time = world.timeofday + +/world/Topic(T, addr, master, key) + log_topic("\"[T]\", from:[addr], master:[master], key:[key]") + + if (T == "ping") + var/x = 1 + for (var/client/C) + x++ + return x + + else if(T == "players") + var/n = 0 + for(var/mob/M in player_list) + if(M.client) + n++ + return n + + else if (copytext(T,1,7) == "status") + var/input[] = params2list(T) + var/list/s = list() + s["version"] = game_version + s["mode"] = master_mode + s["respawn"] = config.abandon_allowed + s["enter"] = config.enter_allowed + s["vote"] = config.allow_vote_mode + s["ai"] = config.allow_ai + s["host"] = host ? host : null + + // This is dumb, but spacestation13.com's banners break if player count isn't the 8th field of the reply, so... this has to go here. + s["players"] = 0 + s["stationtime"] = stationtime2text() + s["roundduration"] = roundduration2text() + + if(input["status"] == "2") + var/list/players = list() + var/list/admins = list() + + for(var/client/C in GLOB.clients) + if(C.holder) + if(C.holder.fakekey) + continue + admins[C.key] = C.holder.rank + players += C.key + + s["players"] = players.len + s["playerlist"] = list2params(players) + var/list/adm = get_admin_counts() + var/list/presentmins = adm["present"] + var/list/afkmins = adm["afk"] + s["admins"] = presentmins.len + afkmins.len //equivalent to the info gotten from adminwho + s["adminlist"] = list2params(admins) + else + var/n = 0 + var/admins = 0 + + for(var/client/C in GLOB.clients) + if(C.holder) + if(C.holder.fakekey) + continue //so stealthmins aren't revealed by the hub + admins++ + s["player[n]"] = C.key + n++ + + s["players"] = n + s["admins"] = admins + + return list2params(s) + + else if(T == "manifest") + var/list/positions = list() + var/list/set_names = list( + "heads" = command_positions, + "sec" = security_positions, + "eng" = engineering_positions, + "med" = medical_positions, + "sci" = science_positions, + "car" = cargo_positions, + "civ" = civilian_positions, + "bot" = nonhuman_positions + ) + + for(var/datum/data/record/t in data_core.general) + var/name = t.fields["name"] + var/rank = t.fields["rank"] + var/real_rank = make_list_rank(t.fields["real_rank"]) + + var/department = 0 + for(var/k in set_names) + if(real_rank in set_names[k]) + if(!positions[k]) + positions[k] = list() + positions[k][name] = rank + department = 1 + if(!department) + if(!positions["misc"]) + positions["misc"] = list() + positions["misc"][name] = rank + + // Synthetics don't have actual records, so we will pull them from here. + for(var/mob/living/silicon/ai/ai in mob_list) + if(!positions["bot"]) + positions["bot"] = list() + positions["bot"][ai.name] = "Artificial Intelligence" + for(var/mob/living/silicon/robot/robot in mob_list) + // No combat/syndicate cyborgs, no drones. + if(robot.module && robot.module.hide_on_manifest) + continue + if(!positions["bot"]) + positions["bot"] = list() + positions["bot"][robot.name] = "[robot.modtype] [robot.braintype]" + + for(var/k in positions) + positions[k] = list2params(positions[k]) // converts positions["heads"] = list("Bob"="Captain", "Bill"="CMO") into positions["heads"] = "Bob=Captain&Bill=CMO" + + return list2params(positions) + + else if(T == "revision") + if(revdata.revision) + return list2params(list(branch = revdata.branch, date = revdata.date, revision = revdata.revision)) + else + return "unknown" + + else if(copytext(T,1,5) == "info") + var/input[] = params2list(T) + if(input["key"] != config.comms_password) + if(world_topic_spam_protect_ip == addr && abs(world_topic_spam_protect_time - world.time) < 50) + + spawn(50) + world_topic_spam_protect_time = world.time + return "Bad Key (Throttled)" + + world_topic_spam_protect_time = world.time + world_topic_spam_protect_ip = addr + + return "Bad Key" + + var/list/search = params2list(input["info"]) + var/list/ckeysearch = list() + for(var/text in search) + ckeysearch += ckey(text) + + var/list/match = list() + + for(var/mob/M in mob_list) + var/strings = list(M.name, M.ckey) + if(M.mind) + strings += M.mind.assigned_role + strings += M.mind.special_role + for(var/text in strings) + if(ckey(text) in ckeysearch) + match[M] += 10 // an exact match is far better than a partial one + else + for(var/searchstr in search) + if(findtext(text, searchstr)) + match[M] += 1 + + var/maxstrength = 0 + for(var/mob/M in match) + maxstrength = max(match[M], maxstrength) + for(var/mob/M in match) + if(match[M] < maxstrength) + match -= M + + if(!match.len) + return "No matches" + else if(match.len == 1) + var/mob/M = match[1] + var/info = list() + info["key"] = M.key + info["name"] = M.name == M.real_name ? M.name : "[M.name] ([M.real_name])" + info["role"] = M.mind ? (M.mind.assigned_role ? M.mind.assigned_role : "No role") : "No mind" + var/turf/MT = get_turf(M) + info["loc"] = M.loc ? "[M.loc]" : "null" + info["turf"] = MT ? "[MT] @ [MT.x], [MT.y], [MT.z]" : "null" + info["area"] = MT ? "[MT.loc]" : "null" + info["antag"] = M.mind ? (M.mind.special_role ? M.mind.special_role : "Not antag") : "No mind" + info["hasbeenrev"] = M.mind ? M.mind.has_been_rev : "No mind" + info["stat"] = M.stat + info["type"] = M.type + if(istype(M, /mob/living)) + var/mob/living/L = M + info["damage"] = list2params(list( + oxy = L.getOxyLoss(), + tox = L.getToxLoss(), + fire = L.getFireLoss(), + brute = L.getBruteLoss(), + clone = L.getCloneLoss(), + brain = L.getBrainLoss() + )) + else + info["damage"] = "non-living" + info["gender"] = M.gender + return list2params(info) + else + var/list/ret = list() + for(var/mob/M in match) + ret[M.key] = M.name + return list2params(ret) + + else if(copytext(T,1,9) == "adminmsg") + /* + We got an adminmsg from IRC bot lets split the input then validate the input. + expected output: + 1. adminmsg = ckey of person the message is to + 2. msg = contents of message, parems2list requires + 3. validatationkey = the key the bot has, it should match the gameservers commspassword in it's configuration. + 4. sender = the ircnick that send the message. + */ + + + var/input[] = params2list(T) + if(input["key"] != config.comms_password) + if(world_topic_spam_protect_ip == addr && abs(world_topic_spam_protect_time - world.time) < 50) + + spawn(50) + world_topic_spam_protect_time = world.time + return "Bad Key (Throttled)" + + world_topic_spam_protect_time = world.time + world_topic_spam_protect_ip = addr + + return "Bad Key" + + var/client/C + var/req_ckey = ckey(input["adminmsg"]) + + for(var/client/K in GLOB.clients) + if(K.ckey == req_ckey) + C = K + break + if(!C) + return "No client with that name on server" + + var/rank = input["rank"] + if(!rank) + rank = "Admin" + + var/message = "IRC-[rank] PM from IRC-[input["sender"]]: [input["msg"]]" + var/amessage = "IRC-[rank] PM from IRC-[input["sender"]] to [key_name(C)] : [input["msg"]]" + + C.received_irc_pm = world.time + C.irc_admin = input["sender"] + + C << 'sound/effects/adminhelp.ogg' + C << message + + + for(var/client/A in admins) + if(A != C) + A << amessage + + return "Message Successful" + + else if(copytext(T,1,6) == "notes") + /* + We got a request for notes from the IRC Bot + expected output: + 1. notes = ckey of person the notes lookup is for + 2. validationkey = the key the bot has, it should match the gameservers commspassword in it's configuration. + */ + var/input[] = params2list(T) + if(input["key"] != config.comms_password) + if(world_topic_spam_protect_ip == addr && abs(world_topic_spam_protect_time - world.time) < 50) + + spawn(50) + world_topic_spam_protect_time = world.time + return "Bad Key (Throttled)" + + world_topic_spam_protect_time = world.time + world_topic_spam_protect_ip = addr + return "Bad Key" + + return show_player_info_irc(ckey(input["notes"])) + + else if(copytext(T,1,4) == "age") + var/input[] = params2list(T) + if(input["key"] != config.comms_password) + if(world_topic_spam_protect_ip == addr && abs(world_topic_spam_protect_time - world.time) < 50) + spawn(50) + world_topic_spam_protect_time = world.time + return "Bad Key (Throttled)" + + world_topic_spam_protect_time = world.time + world_topic_spam_protect_ip = addr + return "Bad Key" + + var/age = get_player_age(input["age"]) + if(isnum(age)) + if(age >= 0) + return "[age]" + else + return "Ckey not found" + else + return "Database connection failed or not set up" + + +/world/Reboot(reason = 0, fast_track = FALSE) + /*spawn(0) + world << sound(pick('sound/AI/newroundsexy.ogg','sound/misc/apcdestroyed.ogg','sound/misc/bangindonk.ogg')) // random end sounds!! - LastyBatsy + */ + + if (reason || fast_track) //special reboot, do none of the normal stuff + if (usr) + log_admin("[key_name(usr)] Has requested an immediate world restart via client side debugging tools") + message_admins("[key_name_admin(usr)] Has requested an immediate world restart via client side debugging tools") + world << "[key_name_admin(usr)] has requested an immediate world restart via client side debugging tools" + + else + world << "Rebooting world immediately due to host request" + else + processScheduler.stop() + Master.Shutdown() //run SS shutdowns + for(var/client/C in GLOB.clients) + if(config.server) //if you set a server location in config.txt, it sends you there instead of trying to reconnect to the same world address. -- NeoFite + C << link("byond://[config.server]") + + log_world("World rebooted at [time_stamp()]") + ..() + +/hook/startup/proc/loadMode() + world.load_mode() + return 1 + +/world/proc/load_mode() + if(!fexists("data/mode.txt")) + return + + + var/list/Lines = file2list("data/mode.txt") + if(Lines.len) + if(Lines[1]) + master_mode = Lines[1] + log_misc("Saved mode is '[master_mode]'") + +/world/proc/save_mode(var/the_mode) + var/F = file("data/mode.txt") + fdel(F) + F << the_mode + + +/hook/startup/proc/loadMOTD() + world.load_motd() + return 1 + +/world/proc/load_motd() + join_motd = file2text("config/motd.txt") + + +/proc/load_configuration() + config = new /datum/configuration() + config.load("config/config.txt") + config.load("config/game_options.txt","game_options") + config.loadsql("config/dbconfig.txt") + config.loadforumsql("config/forumdbconfig.txt") + +/hook/startup/proc/loadMods() + world.load_mods() + world.load_mentors() // no need to write another hook. + return 1 + +/world/proc/load_mods() + if(config.admin_legacy_system) + var/text = file2text("config/moderators.txt") + if (!text) + error("Failed to load config/mods.txt") + else + var/list/lines = splittext(text, "\n") + for(var/line in lines) + if (!line) + continue + + if (copytext(line, 1, 2) == ";") + continue + + var/title = "Moderator" + var/rights = admin_ranks[title] + + var/ckey = copytext(line, 1, length(line)+1) + var/datum/admins/D = new /datum/admins(title, rights, ckey) + D.associate(GLOB.directory[ckey]) + +/world/proc/load_mentors() + if(config.admin_legacy_system) + var/text = file2text("config/mentors.txt") + if (!text) + error("Failed to load config/mentors.txt") + else + var/list/lines = splittext(text, "\n") + for(var/line in lines) + if (!line) + continue + if (copytext(line, 1, 2) == ";") + continue + + var/title = "Mentor" + var/rights = admin_ranks[title] + + var/ckey = copytext(line, 1, length(line)+1) + var/datum/admins/D = new /datum/admins(title, rights, ckey) + D.associate(GLOB.directory[ckey]) + +/world/proc/update_status() + var/s = "" + + if (config && config.server_name) + s += "[config.server_name] — " + + s += "[station_name()]"; + s += " (" + s += "" //Change this to wherever you want the hub to link to. +// s += "[game_version]" + s += "Default" //Replace this with something else. Or ever better, delete it and uncomment the game version. + s += "" + s += ")" + + var/list/features = list() + + if(ticker) + if(master_mode) + features += master_mode + else + features += "STARTING" + + if (!config.enter_allowed) + features += "closed" + + features += config.abandon_allowed ? "respawn" : "no respawn" + + if (config && config.allow_vote_mode) + features += "vote" + + if (config && config.allow_ai) + features += "AI allowed" + + var/n = 0 + for (var/mob/M in player_list) + if (M.client) + n++ + + if (n > 1) + features += "~[n] players" + else if (n > 0) + features += "~[n] player" + + + if (config && config.hostedby) + features += "hosted by [config.hostedby]" + + if (features) + s += ": [jointext(features, ", ")]" + + /* does this help? I do not know */ + if (src.status != s) + src.status = s + +#define FAILED_DB_CONNECTION_CUTOFF 5 +var/failed_db_connections = 0 +var/failed_old_db_connections = 0 + +/hook/startup/proc/connectDB() + if(!config.sql_enabled) + world.log << "SQL connection disabled in config." + else if(!setup_database_connection()) + world.log << "Your server failed to establish a connection with the feedback database." + else + world.log << "Feedback database connection established." + return 1 + +proc/setup_database_connection() + + if(failed_db_connections > FAILED_DB_CONNECTION_CUTOFF) //If it failed to establish a connection more than 5 times in a row, don't bother attempting to conenct anymore. + return 0 + + if(!dbcon) + dbcon = new() + + var/user = sqlfdbklogin + var/pass = sqlfdbkpass + var/db = sqlfdbkdb + var/address = sqladdress + var/port = sqlport + + dbcon.Connect("dbi:mysql:[db]:[address]:[port]","[user]","[pass]") + . = dbcon.IsConnected() + if ( . ) + failed_db_connections = 0 //If this connection succeeded, reset the failed connections counter. + else + failed_db_connections++ //If it failed, increase the failed connections counter. + world.log << dbcon.ErrorMsg() + + return . + +//This proc ensures that the connection to the feedback database (global variable dbcon) is established +proc/establish_db_connection() + if(failed_db_connections > FAILED_DB_CONNECTION_CUTOFF) + return 0 + + if(!dbcon || !dbcon.IsConnected()) + return setup_database_connection() + else + return 1 + + +/hook/startup/proc/connectOldDB() + if(!config.sql_enabled) + world.log << "SQL connection disabled in config." + else if(!setup_old_database_connection()) + world.log << "Your server failed to establish a connection with the SQL database." + else + world.log << "SQL database connection established." + return 1 + +//These two procs are for the old database, while it's being phased out. See the tgstation.sql file in the SQL folder for more information. +proc/setup_old_database_connection() + + if(failed_old_db_connections > FAILED_DB_CONNECTION_CUTOFF) //If it failed to establish a connection more than 5 times in a row, don't bother attempting to conenct anymore. + return 0 + + if(!dbcon_old) + dbcon_old = new() + + var/user = sqllogin + var/pass = sqlpass + var/db = sqldb + var/address = sqladdress + var/port = sqlport + + dbcon_old.Connect("dbi:mysql:[db]:[address]:[port]","[user]","[pass]") + . = dbcon_old.IsConnected() + if ( . ) + failed_old_db_connections = 0 //If this connection succeeded, reset the failed connections counter. + else + failed_old_db_connections++ //If it failed, increase the failed connections counter. + world.log << dbcon.ErrorMsg() + + return . + +//This proc ensures that the connection to the feedback database (global variable dbcon) is established +proc/establish_old_db_connection() + if(failed_old_db_connections > FAILED_DB_CONNECTION_CUTOFF) + return 0 + + if(!dbcon_old || !dbcon_old.IsConnected()) + return setup_old_database_connection() + else + return 1 + +// Things to do when a new z-level was just made. +/world/proc/max_z_changed() + if(!istype(GLOB.players_by_zlevel, /list)) + GLOB.players_by_zlevel = new /list(world.maxz, 0) + while(GLOB.players_by_zlevel.len < world.maxz) + GLOB.players_by_zlevel.len++ + GLOB.players_by_zlevel[GLOB.players_by_zlevel.len] = list() + +// Call this to make a new blank z-level, don't modify maxz directly. +/world/proc/increment_max_z() + maxz++ + max_z_changed() + +#undef FAILED_DB_CONNECTION_CUTOFF /world/New() SERVER_TOOLS_ON_NEW return ..() diff --git a/code/global.dm b/code/global.dm index b6ad5f5acb..b6e1fb38ee 100644 --- a/code/global.dm +++ b/code/global.dm @@ -8,7 +8,6 @@ var/global/datum/datacore/data_core = null var/global/list/all_areas = list() var/global/list/machines = list() // ALL Machines, wether processing or not. var/global/list/processing_machines = list() // TODO - Move into SSmachines -var/global/list/processing_objects = list() var/global/list/processing_power_items = list() // TODO - Move into SSmachines var/global/list/active_diseases = list() var/global/list/hud_icon_reference = list() @@ -91,7 +90,6 @@ var/list/reverse_dir = list( // reverse_dir[dir] = reverse of dir ) var/datum/configuration/config = null -var/datum/sun/sun = null var/list/combatlog = list() var/list/IClog = list() @@ -109,7 +107,6 @@ var/gravity_is_on = 1 var/join_motd = null -var/datum/event_manager/event_manager = new() // Event Manager, the manager for events. var/datum/game_master/game_master = new() // Game Master, an AI for choosing events. var/datum/metric/metric = new() // Metric datum, used to keep track of the round. diff --git a/code/global_init.dm b/code/global_init.dm new file mode 100644 index 0000000000..6e3f13d506 --- /dev/null +++ b/code/global_init.dm @@ -0,0 +1,29 @@ +/* + The initialization of the game happens roughly like this: + + 1. All global variables are initialized (including the global_init instance). + 2. The map is initialized, and map objects are created. + 3. world/New() runs, creating the process scheduler (and the old master controller) and spawning their setup. + 4. processScheduler/setup() runs, creating all the processes. game_controller/setup() runs, calling initialize() on all movable atoms in the world. + 5. The gameticker is created. + +*/ +var/global/datum/global_init/init = new () + +/* + Pre-map initialization stuff should go here. +*/ +/datum/global_init/New() + + makeDatumRefLists() + load_configuration() + + initialize_chemical_reagents() + initialize_chemical_reactions() + initialize_integrated_circuits_list() + + qdel(src) //we're done + +/datum/global_init/Destroy() + global.init = null + return 2 // QDEL_HINT_IWILLGC diff --git a/code/modules/Phorochemistry/phoronics_tile.dm b/code/modules/Phorochemistry/phoronics_tile.dm index a1c0906a33..88e8ec70f1 100644 --- a/code/modules/Phorochemistry/phoronics_tile.dm +++ b/code/modules/Phorochemistry/phoronics_tile.dm @@ -25,7 +25,6 @@ throwforce = 1.0 throw_speed = 5 throw_range = 20 - flags = CONDUCT max_amount = 1 origin_tech = "magnets=3" /* diff --git a/code/modules/admin/DB ban/functions.dm b/code/modules/admin/DB ban/functions.dm index e4d2298ace..d9e1efc972 100644 --- a/code/modules/admin/DB ban/functions.dm +++ b/code/modules/admin/DB ban/functions.dm @@ -64,7 +64,7 @@ datum/admins/proc/DB_ban_record(var/bantype, var/mob/banned_mob, var/duration = a_ip = src.owner:address var/who - for(var/client/C in clients) + for(var/client/C in GLOB.clients) if(!who) who = "[C]" else diff --git a/code/modules/admin/admin.dm b/code/modules/admin/admin.dm index b20ea437e7..8daa899692 100644 --- a/code/modules/admin/admin.dm +++ b/code/modules/admin/admin.dm @@ -239,7 +239,7 @@ proc/admin_notice(var/message, var/rights) // Display the notes on the current page var/number_pages = note_keys.len / PLAYER_NOTES_ENTRIES_PER_PAGE - // Emulate ceil(why does BYOND not have ceil) + // Emulate CEILING(why does BYOND not have ceil, 1) if(number_pages != round(number_pages)) number_pages = round(number_pages) + 1 var/page_index = page - 1 @@ -286,7 +286,7 @@ proc/admin_notice(var/message, var/rights) dat += "" var/p_age = "unknown" - for(var/client/C in clients) + for(var/client/C in GLOB.clients) if(C.ckey == key) p_age = C.player_age break @@ -730,28 +730,28 @@ var/datum/announcement/minor/admin_min_announcer = new //Split on pipe or \n decomposed = splittext(message,regex("\\||$","m")) decomposed += "0" //Tack on a final 0 sleep to make 3-per-message evenly - + //Time to find how they screwed up. //Wasn't the right length if((decomposed.len) % 3) //+1 to accomidate the lack of a wait time for the last message to_chat(usr,"You passed [decomposed.len] segments (senders+messages+pauses). You must pass a multiple of 3, minus 1 (no pause after the last message). That means a sender and message on every other line (starting on the first), separated by a pipe character (|), and a number every other line that is a pause in seconds.") return - + //Too long a conversation if((decomposed.len / 3) > 20) to_chat(usr,"This conversation is too long! 20 messages maximum, please.") return - + //Missed some sleeps, or sanitized to nothing. for(var/i = 1; i < decomposed.len; i++) - + //Sanitize sender var/clean_sender = sanitize(decomposed[i]) if(!clean_sender) to_chat(usr,"One part of your conversation was not able to be sanitized. It was the sender of the [(i+2)/3]\th message.") return decomposed[i] = clean_sender - + //Sanitize message var/clean_message = sanitize(decomposed[++i]) if(!clean_message) diff --git a/code/modules/admin/admin_ranks.dm b/code/modules/admin/admin_ranks.dm index 486f4907cf..e03dda1dc8 100644 --- a/code/modules/admin/admin_ranks.dm +++ b/code/modules/admin/admin_ranks.dm @@ -106,7 +106,7 @@ var/list/admin_ranks = list() //list of all ranks with associated rights world.SetConfig("APP/admin", ckey, "role=admin") //find the client for a ckey if they are connected and associate them with the new admin datum - D.associate(directory[ckey]) + D.associate(GLOB.directory[ckey]) else //The current admin system uses SQL @@ -134,7 +134,7 @@ var/list/admin_ranks = list() //list of all ranks with associated rights world.SetConfig("APP/admin", ckey, "role=admin") //find the client for a ckey if they are connected and associate them with the new admin datum - D.associate(directory[ckey]) + D.associate(GLOB.directory[ckey]) if(!admin_datums) error("The database query in load_admins() resulted in no admins being added to the list. Reverting to legacy system.") log_misc("The database query in load_admins() resulted in no admins being added to the list. Reverting to legacy system.") diff --git a/code/modules/admin/admin_verbs.dm b/code/modules/admin/admin_verbs.dm index 2c2eebdfc8..810adb5c9d 100644 --- a/code/modules/admin/admin_verbs.dm +++ b/code/modules/admin/admin_verbs.dm @@ -6,6 +6,7 @@ var/list/admin_verbs_default = list( /client/proc/hide_verbs, //hides all our adminverbs, /client/proc/hide_most_verbs, //hides all our hideable adminverbs, /client/proc/debug_variables, //allows us to -see- the variables of any instance in the game. +VAREDIT needed to modify, + /client/proc/mark_datum_mapview, /client/proc/cmd_check_new_players, //allows us to see every new player // /client/proc/check_antagonists, //shows all antags, // /client/proc/cmd_mod_say, @@ -214,9 +215,8 @@ var/list/admin_verbs_debug = list( /client/proc/show_plant_genes, /client/proc/enable_debug_verbs, /client/proc/callproc, - /client/proc/callproc_target, - /client/proc/debug_process, - /client/proc/SDQL_query, + /client/proc/callproc_datum, + /client/proc/debug_process, //VOREStation Add, /client/proc/SDQL2_query, /client/proc/Jump, /client/proc/debug_rogueminer, @@ -235,8 +235,8 @@ var/list/admin_verbs_debug = list( var/list/admin_verbs_paranoid_debug = list( /client/proc/callproc, - /client/proc/callproc_target, - /client/proc/debug_process, + /client/proc/callproc_datum, + /client/proc/debug_process, //VOREStation Add, /client/proc/debug_controller ) @@ -304,8 +304,8 @@ var/list/admin_verbs_hideable = list( /client/proc/restart_controller, /client/proc/cmd_admin_list_open_jobs, /client/proc/callproc, - /client/proc/callproc_target, - /client/proc/debug_process, + /client/proc/callproc_datum, + /client/proc/debug_process, //VOREStation Add, /client/proc/Debug2, /client/proc/reload_admins, /client/proc/kill_air, @@ -373,7 +373,7 @@ var/list/admin_verbs_event_manager = list( /proc/possess, /proc/release, /client/proc/callproc, - /client/proc/callproc_target, + /client/proc/callproc_datum, /client/proc/debug_controller, /client/proc/show_gm_status, /datum/admins/proc/change_weather, @@ -646,7 +646,7 @@ var/list/admin_verbs_event_manager = list( return var/datum/preferences/D - var/client/C = directory[warned_ckey] + var/client/C = GLOB.directory[warned_ckey] if(C) D = C.prefs else D = preferences_datums[warned_ckey] @@ -920,7 +920,7 @@ var/list/admin_verbs_event_manager = list( set category = "Admin" if(!check_rights(R_ADMIN)) return - var sec_level = input(usr, "It's currently code [get_security_level()].", "Select Security Level") as null|anything in (list("green","blue","red","delta")-get_security_level()) + var sec_level = input(usr, "It's currently code [get_security_level()].", "Select Security Level") as null|anything in (list("green","yellow","violet","orange","blue","red","delta")-get_security_level()) if(alert("Switch from code [get_security_level()] to code [sec_level]?","Change security level?","Yes","No") == "Yes") set_security_level(sec_level) log_admin("[key_name(usr)] changed the security level to code [sec_level].") diff --git a/code/modules/admin/callproc/callproc.dm b/code/modules/admin/callproc/callproc.dm index 9b3da2b92f..f72606d27b 100644 --- a/code/modules/admin/callproc/callproc.dm +++ b/code/modules/admin/callproc/callproc.dm @@ -1,152 +1,210 @@ - -/client/proc/callproc() - set category = "Debug" - set name = "Advanced ProcCall" - - if(!check_rights(R_DEBUG)) return - if(config.debugparanoid && !check_rights(R_ADMIN)) return - - var/target = null - var/targetselected = 0 - - switch(alert("Proc owned by something?",, "Yes", "No", "Cancel")) - if("Yes") - targetselected=1 - switch(input("Proc owned by...", "Owner", null) as null|anything in list("Obj", "Mob", "Area or Turf", "Client")) - if("Obj") - target = input("Select target:", "Target") as null|obj in world - if("Mob") - target = input("Select target:", "Target", usr) as null|mob in world - if("Area or Turf") - target = input("Select target:", "Target", get_turf(usr)) as null|area|turf in world - if("Client") - target = input("Select target:", "Target", usr.client) as null|anything in clients - else - return - if(!target) - usr << "Proc call cancelled." - return - if("Cancel") - return - if("No") - ; // do nothing - - callproc_targetpicked(targetselected, target) - -/client/proc/callproc_target(atom/A in world) - set category = "Debug" - set name = "Advanced ProcCall Target" - - if(!check_rights(R_DEBUG)) return - if(config.debugparanoid && !check_rights(R_ADMIN)) return - - callproc_targetpicked(1, A) - -/client/proc/callproc_targetpicked(hastarget, datum/target) - - // this needs checking again here because VV's 'Call Proc' option directly calls this proc with the target datum - if(!check_rights(R_DEBUG)) return - if(config.debugparanoid && !check_rights(R_ADMIN)) return - - var/returnval = null - - var/procname = input("Proc name", "Proc") as null|text - if(!procname) return - - if(hastarget) - if(!target) - usr << "Your callproc target no longer exists." - return - if(!hascall(target, procname)) - usr << "\The [target] has no call [procname]()" - return - - var/list/arguments = list() - var/done = 0 - var/current = null - - while(!done) - if(hastarget && !target) - usr << "Your callproc target no longer exists." - return - switch(input("Type of [arguments.len+1]\th variable", "argument [arguments.len+1]") as null|anything in list( - "finished", "null", "text", "num", "type", "obj reference", "mob reference", - "area/turf reference", "icon", "file", "client", "mob's area", "marked datum")) - if(null) - return - - if("finished") - done = 1 - - if("null") - current = null - - if("text") - current = input("Enter text for [arguments.len+1]\th argument") as null|text - if(isnull(current)) return - - if("num") - current = input("Enter number for [arguments.len+1]\th argument") as null|num - if(isnull(current)) return - - if("type") - current = input("Select type for [arguments.len+1]\th argument") as null|anything in typesof(/obj, /mob, /area, /turf) - if(isnull(current)) return - - if("obj reference") - current = input("Select object for [arguments.len+1]\th argument") as null|obj in world - if(isnull(current)) return - - if("mob reference") - current = input("Select mob for [arguments.len+1]\th argument") as null|mob in world - if(isnull(current)) return - - if("area/turf reference") - current = input("Select area/turf for [arguments.len+1]\th argument") as null|area|turf in world - if(isnull(current)) return - - if("icon") - current = input("Provide icon for [arguments.len+1]\th argument") as null|icon - if(isnull(current)) return - - if("client") - current = input("Select client for [arguments.len+1]\th argument") as null|anything in clients - if(isnull(current)) return - - if("mob's area") - var/mob/M = input("Select mob to take area for [arguments.len+1]\th argument") as null|mob in world - if(!M) return - current = get_area(M) - if(!current) - switch(alert("\The [M] appears to not have an area; do you want to pass null instead?",, "Yes", "Cancel")) - if("Yes") - ; // do nothing - if("Cancel") - return - - if("marked datum") - current = holder.marked_datum - if(!current) - switch(alert("You do not currently have a marked datum; do you want to pass null instead?",, "Yes", "Cancel")) - if("Yes") - ; // do nothing - if("Cancel") - return - if(!done) - arguments += current - - if(hastarget) - if(!target) - usr << "Your callproc target no longer exists." - return - log_admin("[key_name(src)] called [target]'s [procname]() with [arguments.len ? "the arguments [list2params(arguments)]" : "no arguments"].") - if(arguments.len) - returnval = call(target, procname)(arglist(arguments)) - else - returnval = call(target, procname)() - else - log_admin("[key_name(src)] called [procname]() with [arguments.len ? "the arguments [list2params(arguments)]" : "no arguments"].") - returnval = call(procname)(arglist(arguments)) - - usr << "[procname]() returned: [isnull(returnval) ? "null" : returnval]" - feedback_add_details("admin_verb","APC") //If you are copy-pasting this, ensure the 2nd parameter is unique to the new proc! +/client/proc/callproc() + set category = "Debug" + set name = "Advanced ProcCall" + set waitfor = 0 + + if(!check_rights(R_DEBUG)) + return + + var/datum/target = null + var/targetselected = 0 + var/returnval = null + + switch(alert("Proc owned by something?",,"Yes","No")) + if("Yes") + targetselected = 1 + var/list/value = vv_get_value(default_class = VV_ATOM_REFERENCE, classes = list(VV_ATOM_REFERENCE, VV_DATUM_REFERENCE, VV_MOB_REFERENCE, VV_CLIENT)) + if (!value["class"] || !value["value"]) + return + target = value["value"] + if("No") + target = null + targetselected = 0 + + var/procname = input("Proc path, eg: /proc/fake_blood","Path:", null) as text|null + if(!procname) + return + + //hascall() doesn't support proc paths (eg: /proc/gib(), it only supports "gib") + var/testname = procname + if(targetselected) + //Find one of the 3 possible ways they could have written /proc/PROCNAME + if(findtext(procname, "/proc/")) + testname = replacetext(procname, "/proc/", "") + else if(findtext(procname, "/proc")) + testname = replacetext(procname, "/proc", "") + else if(findtext(procname, "proc/")) + testname = replacetext(procname, "proc/", "") + //Clear out any parenthesis if they're a dummy + testname = replacetext(testname, "()", "") + + if(targetselected && !hascall(target,testname)) + to_chat(usr, "Error: callproc(): type [target.type] has no proc named [procname].") + return + else + var/procpath = text2path(procname) + if (!procpath) + to_chat(usr, "Error: callproc(): proc [procname] does not exist. (Did you forget the /proc/ part?)") + return + var/list/lst = get_callproc_args() + if(!lst) + return + + if(targetselected) + if(!target) + to_chat(usr, "Error: callproc(): owner of proc no longer exists.") + return + var/msg = "[key_name(src)] called [target]'s [procname]() with [lst.len ? "the arguments [list2params(lst)]":"no arguments"]." + log_admin(msg) + //message_admins(msg) //Proccall announce removed. + admin_ticket_log(target, msg) + returnval = WrapAdminProcCall(target, procname, lst) // Pass the lst as an argument list to the proc + else + //this currently has no hascall protection. wasn't able to get it working. + log_admin("[key_name(src)] called [procname]() with [lst.len ? "the arguments [list2params(lst)]":"no arguments"].") + //message_admins("[key_name(src)] called [procname]() with [lst.len ? "the arguments [list2params(lst)]":"no arguments"].") //Proccall announce removed. + returnval = WrapAdminProcCall(GLOBAL_PROC, procname, lst) // Pass the lst as an argument list to the proc + . = get_callproc_returnval(returnval, procname) + if(.) + to_chat(usr, .) + feedback_add_details("admin_verb","APC") //If you are copy-pasting this, ensure the 2nd parameter is unique to the new proc! + +GLOBAL_VAR(AdminProcCaller) +GLOBAL_PROTECT(AdminProcCaller) +GLOBAL_VAR_INIT(AdminProcCallCount, 0) +GLOBAL_PROTECT(AdminProcCallCount) +GLOBAL_VAR(LastAdminCalledTargetRef) +GLOBAL_PROTECT(LastAdminCalledTargetRef) +GLOBAL_VAR(LastAdminCalledTarget) +GLOBAL_PROTECT(LastAdminCalledTarget) +GLOBAL_VAR(LastAdminCalledProc) +GLOBAL_PROTECT(LastAdminCalledProc) +GLOBAL_LIST_EMPTY(AdminProcCallSpamPrevention) +GLOBAL_PROTECT(AdminProcCallSpamPrevention) + +/proc/WrapAdminProcCall(datum/target, procname, list/arguments) + if(target && procname == "Del") + to_chat(usr, "Calling Del() is not allowed") + return + + if(target != GLOBAL_PROC && !target.CanProcCall(procname)) + to_chat(usr, "Proccall on [target.type]/proc/[procname] is disallowed!") + return + var/current_caller = GLOB.AdminProcCaller + var/ckey = usr ? usr.client.ckey : GLOB.AdminProcCaller + if(!ckey) + CRASH("WrapAdminProcCall with no ckey: [target] [procname] [english_list(arguments)]") + if(current_caller && current_caller != ckey) + if(!GLOB.AdminProcCallSpamPrevention[ckey]) + to_chat(usr, "Another set of admin called procs are still running, your proc will be run after theirs finish.") + GLOB.AdminProcCallSpamPrevention[ckey] = TRUE + UNTIL(!GLOB.AdminProcCaller) + to_chat(usr, "Running your proc") + GLOB.AdminProcCallSpamPrevention -= ckey + else + UNTIL(!GLOB.AdminProcCaller) + GLOB.LastAdminCalledProc = procname + if(target != GLOBAL_PROC) + GLOB.LastAdminCalledTargetRef = "\ref[target]" + GLOB.AdminProcCaller = ckey //if this runtimes, too bad for you + ++GLOB.AdminProcCallCount + . = world.WrapAdminProcCall(target, procname, arguments) + if(--GLOB.AdminProcCallCount == 0) + GLOB.AdminProcCaller = null + +//adv proc call this, ya nerds +/world/proc/WrapAdminProcCall(datum/target, procname, list/arguments) + if(target == GLOBAL_PROC) + return call(procname)(arglist(arguments)) + else if(target != world) + return call(target, procname)(arglist(arguments)) + else + log_admin("[key_name(usr)] attempted to call world/proc/[procname] with arguments: [english_list(arguments)]") + +/proc/IsAdminAdvancedProcCall() +#ifdef TESTING + return FALSE +#else + return usr && usr.client && GLOB.AdminProcCaller == usr.client.ckey +#endif + +/client/proc/callproc_datum(datum/A as null|area|mob|obj|turf) + set category = "Debug" + set name = "Atom ProcCall" + set waitfor = 0 + + if(!check_rights(R_DEBUG)) + return + + var/procname = input("Proc name, eg: fake_blood","Proc:", null) as text|null + if(!procname) + return + if(!hascall(A,procname)) + to_chat(usr, "Error: callproc_datum(): type [A.type] has no proc named [procname].") + return + var/list/lst = get_callproc_args() + if(!lst) + return + + if(!A || !IsValidSrc(A)) + to_chat(usr, "Error: callproc_datum(): owner of proc no longer exists.") + return + var/msg = "[key_name(src)] called [A]'s [procname]() with [lst.len ? "the arguments [list2params(lst)]":"no arguments"]." + log_admin(msg) + //message_admins(msg) + admin_ticket_log(A, msg) + feedback_add_details("admin_verb","TPC") //If you are copy-pasting this, ensure the 2nd parameter is unique to the new proc! + + var/returnval = WrapAdminProcCall(A, procname, lst) // Pass the lst as an argument list to the proc + . = get_callproc_returnval(returnval,procname) + if(.) + to_chat(usr, .) + +/client/proc/get_callproc_args() + var/argnum = input("Number of arguments","Number:",0) as num|null + if(isnull(argnum)) + return null //Cancel + + . = list() + //var/list/named_args = list() //Named arguments are removed, due to them making proccalling take too long. + while(argnum--) + /* //Named arguments are removed, due to them making proccalling take too long. + var/named_arg = input("Leave blank for positional argument. Positional arguments will be considered as if they were added first.", "Named argument") as text|null + if(isnull(named_arg)) + return null //Cancel + */ + var/value = vv_get_value(restricted_classes = list(VV_RESTORE_DEFAULT)) + if (!value["class"]) + return null //Cancel + /* //Named arguments are removed, due to them making proccalling take too long. + if(named_arg) + named_args[named_arg] = value["value"] + else + . += value["value"] + if(LAZYLEN(named_args)) + . += named_args + */ + . += value["value"] + +/client/proc/get_callproc_returnval(returnval,procname) + . = "" + if(islist(returnval)) + var/list/returnedlist = returnval + . = "" + if(returnedlist.len) + var/assoc_check = returnedlist[1] + if(istext(assoc_check) && (returnedlist[assoc_check] != null)) + . += "[procname] returned an associative list:" + for(var/key in returnedlist) + . += "\n[key] = [returnedlist[key]]" + + else + . += "[procname] returned a list:" + for(var/elem in returnedlist) + . += "\n[elem]" + else + . = "[procname] returned an empty list" + . += "" + + else + . = "[procname] returned: [!isnull(returnval) ? returnval : "null"]" diff --git a/code/modules/admin/holder2.dm b/code/modules/admin/holder2.dm index 2d74b43433..114808d3d3 100644 --- a/code/modules/admin/holder2.dm +++ b/code/modules/admin/holder2.dm @@ -47,6 +47,12 @@ var/list/admin_datums = list() owner.deadmin_holder = null owner.add_admin_verbs() +/datum/admins/vv_edit_var(var_name, var_value) + if(var_name == NAMEOF(src, rights) || var_name == NAMEOF(src, owner) || var_name == NAMEOF(src, rank)) + return FALSE + return ..() + +//TODO: Proccall guard, when all try/catch are removed and WrapAdminProccall is ported. /* checks if usr is an admin with at least ONE of the flags in rights_required. (Note, they don't need all the flags) @@ -95,7 +101,18 @@ NOTE: It checks usr by default. Supply the "user" argument if you wish to check usr << "Error: Cannot proceed. They have more or equal rights to us." return 0 +/client/proc/mark_datum(datum/D) + if(!holder) + return + if(holder.marked_datum) + vv_update_display(holder.marked_datum, "marked", "") + holder.marked_datum = D + vv_update_display(D, "marked", VV_MSG_MARKED) +/client/proc/mark_datum_mapview(datum/D as mob|obj|turf|area in view(view)) + set category = "Debug" + set name = "Mark Object" + mark_datum(D) /client/proc/deadmin() if(holder) diff --git a/code/modules/admin/topic.dm b/code/modules/admin/topic.dm index 4b0a1122e9..3252219086 100644 --- a/code/modules/admin/topic.dm +++ b/code/modules/admin/topic.dm @@ -175,7 +175,7 @@ else D = new /datum/admins(new_rank, rights, adm_ckey) - var/client/C = directory[adm_ckey] //find the client with the specified ckey (if they are logged in) + var/client/C = GLOB.directory[adm_ckey] //find the client with the specified ckey (if they are logged in) D.associate(C) //link up with the client and add verbs message_admins("[key_name_admin(usr)] edited the admin rank of [adm_ckey] to [new_rank]") @@ -280,21 +280,21 @@ if("larva") M.change_mob_type( /mob/living/carbon/alien/larva , null, null, delmob ) if("nymph") M.change_mob_type( /mob/living/carbon/alien/diona , null, null, delmob ) if("human") M.change_mob_type( /mob/living/carbon/human , null, null, delmob, href_list["species"]) - if("slime") M.change_mob_type( /mob/living/simple_animal/slime , null, null, delmob ) + if("slime") M.change_mob_type( /mob/living/simple_mob/slime/xenobio , null, null, delmob ) if("monkey") M.change_mob_type( /mob/living/carbon/human/monkey , null, null, delmob ) if("robot") M.change_mob_type( /mob/living/silicon/robot , null, null, delmob ) - if("cat") M.change_mob_type( /mob/living/simple_animal/cat , null, null, delmob ) - if("runtime") M.change_mob_type( /mob/living/simple_animal/cat/fluff/Runtime , null, null, delmob ) - if("corgi") M.change_mob_type( /mob/living/simple_animal/corgi , null, null, delmob ) - if("ian") M.change_mob_type( /mob/living/simple_animal/corgi/Ian , null, null, delmob ) - if("crab") M.change_mob_type( /mob/living/simple_animal/crab , null, null, delmob ) - if("coffee") M.change_mob_type( /mob/living/simple_animal/crab/Coffee , null, null, delmob ) - if("parrot") M.change_mob_type( /mob/living/simple_animal/parrot , null, null, delmob ) - if("polyparrot") M.change_mob_type( /mob/living/simple_animal/parrot/Poly , null, null, delmob ) - if("constructarmoured") M.change_mob_type( /mob/living/simple_animal/construct/armoured , null, null, delmob ) - if("constructbuilder") M.change_mob_type( /mob/living/simple_animal/construct/builder , null, null, delmob ) - if("constructwraith") M.change_mob_type( /mob/living/simple_animal/construct/wraith , null, null, delmob ) - if("shade") M.change_mob_type( /mob/living/simple_animal/shade , null, null, delmob ) + if("cat") M.change_mob_type( /mob/living/simple_mob/animal/passive/cat , null, null, delmob ) + if("runtime") M.change_mob_type( /mob/living/simple_mob/animal/passive/cat/runtime , null, null, delmob ) + if("corgi") M.change_mob_type( /mob/living/simple_mob/animal/passive/dog/corgi , null, null, delmob ) + if("ian") M.change_mob_type( /mob/living/simple_mob/animal/passive/dog/corgi/Ian , null, null, delmob ) + if("crab") M.change_mob_type( /mob/living/simple_mob/animal/passive/crab , null, null, delmob ) + if("coffee") M.change_mob_type( /mob/living/simple_mob/animal/passive/crab/Coffee , null, null, delmob ) + if("parrot") M.change_mob_type( /mob/living/simple_mob/animal/passive/bird/parrot , null, null, delmob ) + if("polyparrot") M.change_mob_type( /mob/living/simple_mob/animal/passive/bird/parrot/poly , null, null, delmob ) + if("constructarmoured") M.change_mob_type( /mob/living/simple_mob/construct/juggernaut , null, null, delmob ) + if("constructbuilder") M.change_mob_type( /mob/living/simple_mob/construct/artificer , null, null, delmob ) + if("constructwraith") M.change_mob_type( /mob/living/simple_mob/construct/wraith , null, null, delmob ) + if("shade") M.change_mob_type( /mob/living/simple_mob/construct/shade , null, null, delmob ) /////////////////////////////////////new ban stuff @@ -790,13 +790,13 @@ if (ismob(M)) if(!check_if_greater_rights_than(M.client)) return - var/reason = sanitize(input("Please enter reason")) + var/reason = sanitize(input("Please enter reason.") as null|message) if(!reason) - M << "You have been kicked from the server" - else - M << "You have been kicked from the server: [reason]" - log_admin("[key_name(usr)] booted [key_name(M)].") - message_admins("[key_name_admin(usr)] booted [key_name_admin(M)].", 1) + return + + to_chat(M, span("critical", "You have been kicked from the server: [reason]")) + log_admin("[key_name(usr)] booted [key_name(M)] for reason: '[reason]'.") + message_admins("[key_name_admin(usr)] booted [key_name_admin(M)] for reason '[reason]'.", 1) //M.client = null qdel(M.client) diff --git a/code/modules/admin/verbs/SDQL.dm b/code/modules/admin/verbs/SDQL.dm deleted file mode 100644 index 969e5cd47c..0000000000 --- a/code/modules/admin/verbs/SDQL.dm +++ /dev/null @@ -1,497 +0,0 @@ - -//Structured Datum Query Language. Basically SQL meets BYOND objects. - -//Note: For use in BS12, need text_starts_with proc, and to modify the action on select to use BS12's object edit command(s). - -/client/proc/SDQL_query(query_text as message) - set category = "Admin" - if(!check_rights(R_DEBUG)) //Shouldn't happen... but just to be safe. - message_admins("ERROR: Non-admin [usr.key] attempted to execute a SDQL query!") - log_admin("Non-admin [usr.key] attempted to execute a SDQL query!") - - var/list/query_list = SDQL_tokenize(query_text) - - if(query_list.len < 2) - if(query_list.len > 0) - usr << "SDQL: Too few discrete tokens in query \"[query_text]\". Please check your syntax and try again." - return - - if(!(lowertext(query_list[1]) in list("select", "delete", "update"))) - usr << "SDQL: Unknown query type: \"[query_list[1]]\" in query \"[query_text]\". Please check your syntax and try again." - return - - var/list/types = list() - - var/i - for(i = 2; i <= query_list.len; i += 2) - types += query_list[i] - - if(i + 1 >= query_list.len || query_list[i + 1] != ",") - break - - i++ - - var/list/from = list() - - if(i <= query_list.len) - if(lowertext(query_list[i]) in list("from", "in")) - for(i++; i <= query_list.len; i += 2) - from += query_list[i] - - if(i + 1 >= query_list.len || query_list[i + 1] != ",") - break - - i++ - - if(from.len < 1) - from += "world" - - var/list/set_vars = list() - - if(lowertext(query_list[1]) == "update") - if(i <= query_list.len && lowertext(query_list[i]) == "set") - for(i++; i <= query_list.len; i++) - if(i + 2 <= query_list.len && query_list[i + 1] == "=") - set_vars += query_list[i] - set_vars[query_list[i]] = query_list[i + 2] - - else - usr << "SDQL: Invalid set parameter in query \"[query_text]\". Please check your syntax and try again." - return - - i += 3 - - if(i >= query_list.len || query_list[i] != ",") - break - - if(set_vars.len < 1) - usr << "SDQL: Invalid or missing set in query \"[query_text]\". Please check your syntax and try again." - return - - var/list/where = list() - - if(i <= query_list.len && lowertext(query_list[i]) == "where") - where = query_list.Copy(i + 1) - - var/list/from_objs = list() - if("world" in from) - from_objs += world - else - for(var/f in from) - if(copytext(f, 1, 2) == "'" || copytext(f, 1, 2) == "\"") - from_objs += locate(copytext(f, 2, length(f))) - else if(copytext(f, 1, 2) != "/") - from_objs += locate(f) - else - var/f2 = text2path(f) - if(text_starts_with(f, "/mob")) - for(var/mob/m in mob_list) - if(istype(m, f2)) - from_objs += m - - else if(text_starts_with(f, "/turf/space")) - for(var/turf/space/m in turfs) - if(istype(m, f2)) - from_objs += m - - else if(text_starts_with(f, "/turf/simulated")) - for(var/turf/simulated/m in turfs) - if(istype(m, f2)) - from_objs += m - - else if(text_starts_with(f, "/turf/unsimulated")) - for(var/turf/unsimulated/m in turfs) - if(istype(m, f2)) - from_objs += m - - else if(text_starts_with(f, "/turf")) - for(var/turf/m in turfs) - if(istype(m, f2)) - from_objs += m - - else if(text_starts_with(f, "/area")) - for(var/area/m in all_areas) - if(istype(m, f2)) - from_objs += m - - else if(text_starts_with(f, "/obj/item")) - for(var/obj/item/m in world) - if(istype(m, f2)) - from_objs += m - - else if(text_starts_with(f, "/obj/machinery")) - for(var/obj/machinery/m in machines) - if(istype(m, f2)) - from_objs += m - - else if(text_starts_with(f, "/obj")) - for(var/obj/m in world) - if(istype(m, f2)) - from_objs += m - - else if(text_starts_with(f, "/atom")) - for(var/atom/m in world) - if(istype(m, f2)) - from_objs += m -/* - else - for(var/datum/m in nope) - if(istype(m, f2)) - from_objs += m -*/ - - var/list/objs = list() - - for(var/from_obj in from_objs) - if("*" in types) - objs += from_obj:contents - else - for(var/f in types) - if(copytext(f, 1, 2) == "'" || copytext(f, 1, 2) == "\"") - objs += locate(copytext(f, 2, length(f))) in from_obj - else if(copytext(f, 1, 2) != "/") - objs += locate(f) in from_obj - else - var/f2 = text2path(f) - if(text_starts_with(f, "/mob")) - for(var/mob/m in from_obj) - if(istype(m, f2)) - objs += m - - else if(text_starts_with(f, "/turf/space")) - for(var/turf/space/m in from_obj) - if(istype(m, f2)) - objs += m - - else if(text_starts_with(f, "/turf/simulated")) - for(var/turf/simulated/m in from_obj) - if(istype(m, f2)) - objs += m - - else if(text_starts_with(f, "/turf/unsimulated")) - for(var/turf/unsimulated/m in from_obj) - if(istype(m, f2)) - objs += m - - else if(text_starts_with(f, "/turf")) - for(var/turf/m in from_obj) - if(istype(m, f2)) - objs += m - - else if(text_starts_with(f, "/area")) - for(var/area/m in from_obj) - if(istype(m, f2)) - objs += m - - else if(text_starts_with(f, "/obj/item")) - for(var/obj/item/m in from_obj) - if(istype(m, f2)) - objs += m - - else if(text_starts_with(f, "/obj/machinery")) - for(var/obj/machinery/m in from_obj) - if(istype(m, f2)) - objs += m - - else if(text_starts_with(f, "/obj")) - for(var/obj/m in from_obj) - if(istype(m, f2)) - objs += m - - else if(text_starts_with(f, "/atom")) - for(var/atom/m in from_obj) - if(istype(m, f2)) - objs += m - - else - for(var/datum/m in from_obj) - if(istype(m, f2)) - objs += m - - - for(var/datum/t in objs) - var/currently_false = 0 - for(i = 1, i - 1 < where.len, i++) - var/v = where[i++] - var/compare_op = where[i++] - if(!(compare_op in list("==", "=", "<>", "<", ">", "<=", ">=", "!="))) - usr << "SDQL: Unknown comparison operator [compare_op] in where clause following [v] in query \"[query_text]\". Please check your syntax and try again." - return - - var/j - for(j = i, j <= where.len, j++) - if(lowertext(where[j]) in list("and", "or", ";")) - break - - if(!currently_false) - var/value = SDQL_text2value(t, v) - var/result = SDQL_evaluate(t, where.Copy(i, j)) - - switch(compare_op) - if("=", "==") - currently_false = !(value == result) - - if("!=", "<>") - currently_false = !(value != result) - - if("<") - currently_false = !(value < result) - - if(">") - currently_false = !(value > result) - - if("<=") - currently_false = !(value <= result) - - if(">=") - currently_false = !(value >= result) - - - if(j > where.len || lowertext(where[j]) == ";") - break - else if(lowertext(where[j]) == "or") - if(currently_false) - currently_false = 0 - else - break - - i = j - - if(currently_false) - objs -= t - - - - usr << "SQDL Query: [query_text]" - message_admins("[usr] executed SDQL query: \"[query_text]\".") -/* - for(var/t in types) - usr << "Type: [t]" - - for(var/t in from) - usr << "From: [t]" - - for(var/t in set_vars) - usr << "Set: [t] = [set_vars[t]]" - - if(where.len) - var/where_str = "" - for(var/t in where) - where_str += "[t] " - - usr << "Where: [where_str]" - - usr << "From objects:" - for(var/datum/t in from_objs) - usr << t - - usr << "Objects:" - for(var/datum/t in objs) - usr << t -*/ - switch(lowertext(query_list[1])) - if("delete") - for(var/datum/t in objs) - qdel(t) - - if("update") - for(var/datum/t in objs) - objs[t] = list() - for(var/v in set_vars) - if(v in t.vars) - objs[t][v] = SDQL_text2value(t, set_vars[v]) - - for(var/datum/t in objs) - for(var/v in objs[t]) - t.vars[v] = objs[t][v] - - if("select") - var/text = "" - for(var/datum/t in objs) - if(istype(t, /atom)) - var/atom/a = t - - if(a.x) - text += "\ref[t]: [t] at ([a.x], [a.y], [a.z])
" - - else if(a.loc && a.loc.x) - text += "\ref[t]: [t] in [a.loc] at ([a.loc.x], [a.loc.y], [a.loc.z])
" - - else - text += "\ref[t]: [t]
" - - else - text += "\ref[t]: [t]
" - - //text += "[t]
" - usr << browse(text, "window=sdql_result") - - -/client/Topic(href,href_list[],hsrc) - if(href_list["SDQL_select"]) - debug_variables(locate(href_list["SDQL_select"])) - - ..() - - -/proc/SDQL_evaluate(datum/object, list/equation) - if(equation.len == 0) - return null - - else if(equation.len == 1) - return SDQL_text2value(object, equation[1]) - - else if(equation[1] == "!") - return !SDQL_evaluate(object, equation.Copy(2)) - - else if(equation[1] == "-") - return -SDQL_evaluate(object, equation.Copy(2)) - - - else - usr << "SDQL: Sorry, equations not yet supported :(" - return null - - -/proc/SDQL_text2value(datum/object, text) - if(text2num(text) != null) - return text2num(text) - else if(text == "null") - return null - else if(copytext(text, 1, 2) == "'" || copytext(text, 1, 2) == "\"" ) - return copytext(text, 2, length(text)) - else if(copytext(text, 1, 2) == "/") - return text2path(text) - else - if(findtext(text, ".")) - var/split = findtext(text, ".") - var/v = copytext(text, 1, split) - - if((v in object.vars) && istype(object.vars[v], /datum)) - return SDQL_text2value(object.vars[v], copytext(text, split + 1)) - else - return null - - else - if(text in object.vars) - return object.vars[text] - else - return null - - -/proc/text_starts_with(text, start) - if(copytext(text, 1, length(start) + 1) == start) - return 1 - else - return 0 - - - - - -/proc/SDQL_tokenize(query_text) - - var/list/whitespace = list(" ", "\n", "\t") - var/list/single = list("(", ")", ",", "+", "-") - var/list/multi = list( - "=" = list("", "="), - "<" = list("", "=", ">"), - ">" = list("", "="), - "!" = list("", "=")) - - var/word = "" - var/list/query_list = list() - var/len = length(query_text) - - for(var/i = 1, i <= len, i++) - var/char = copytext(query_text, i, i + 1) - - if(char in whitespace) - if(word != "") - query_list += word - word = "" - - else if(char in single) - if(word != "") - query_list += word - word = "" - - query_list += char - - else if(char in multi) - if(word != "") - query_list += word - word = "" - - var/char2 = copytext(query_text, i + 1, i + 2) - - if(char2 in multi[char]) - query_list += "[char][char2]" - i++ - - else - query_list += char - - else if(char == "'") - if(word != "") - usr << "SDQL: You have an error in your SDQL syntax, unexpected ' in query: \"[query_text]\" following \"[word]\". Please check your syntax, and try again." - return null - - word = "'" - - for(i++, i <= len, i++) - char = copytext(query_text, i, i + 1) - - if(char == "'") - if(copytext(query_text, i + 1, i + 2) == "'") - word += "'" - i++ - - else - break - - else - word += char - - if(i > len) - usr << "SDQL: You have an error in your SDQL syntax, unmatched ' in query: \"[query_text]\". Please check your syntax, and try again." - return null - - query_list += "[word]'" - word = "" - - else if(char == "\"") - if(word != "") - usr << "SDQL: You have an error in your SDQL syntax, unexpected \" in query: \"[query_text]\" following \"[word]\". Please check your syntax, and try again." - return null - - word = "\"" - - for(i++, i <= len, i++) - char = copytext(query_text, i, i + 1) - - if(char == "\"") - if(copytext(query_text, i + 1, i + 2) == "'") - word += "\"" - i++ - - else - break - - else - word += char - - if(i > len) - usr << "SDQL: You have an error in your SDQL syntax, unmatched \" in query: \"[query_text]\". Please check your syntax, and try again." - return null - - query_list += "[word]\"" - word = "" - - else - word += char - - if(word != "") - query_list += word - - return query_list diff --git a/code/modules/admin/verbs/SDQL2/SDQL_2.dm b/code/modules/admin/verbs/SDQL2/SDQL_2.dm new file mode 100644 index 0000000000..58f568cfa7 --- /dev/null +++ b/code/modules/admin/verbs/SDQL2/SDQL_2.dm @@ -0,0 +1,1127 @@ +#define SDQL_qdel_datum(d) qdel(d) + +//SDQL2 datumized, /tg/station special! + +/* +Welcome admins, badmins and coders alike, to Structured Datum Query Language. +SDQL allows you to powerfully run code on batches of objects (or single objects, it's still unmatched +even there.) +When I say "powerfully" I mean it you're in for a ride. + +Ok so say you want to get a list of every mob. How does one do this? +"SELECT /mob" +This will open a list of every object in world that is a /mob. +And you can VV them if you need. + +What if you want to get every mob on a *specific z-level*? +"SELECT /mob WHERE z == 4" + +What if you want to select every mob on even numbered z-levels? +"SELECT /mob WHERE z % 2 == 0" + +Can you see where this is going? You can select objects with an arbitrary expression. +These expressions can also do variable access and proc calls (yes, both on-object and globals!) +Keep reading! + +Ok. What if you want to get every machine in the SSmachine process list? Looping through world is kinda +slow. + +"SELECT * IN SSmachines.machinery" + +Here "*" as type functions as a wildcard. +We know everything in the global SSmachines.machinery list is a machine. + +You can specify "IN " to return a list to operate on. +This can be any list that you can wizard together from global variables and global proc calls. +Every variable/proc name in the "IN" block is global. +It can also be a single object, in which case the object is wrapped in a list for you. +So yeah SDQL is unironically better than VV for complex single-object operations. + +You can of course combine these. +"SELECT * IN SSmachines.machinery WHERE z == 4" +"SELECT * IN SSmachines.machinery WHERE stat & 2" // (2 is NOPOWER, can't use defines from SDQL. Sorry!) +"SELECT * IN SSmachines.machinery WHERE stat & 2 && z == 4" + +The possibilities are endless (just don't crash the server, ok?). + +Oh it gets better. + +You can use "MAP " to run some code per object and use the result. For example: + +"SELECT /obj/machinery/power/smes MAP [charge / capacity * 100, RCon_tag, src]" + +This will give you a list of all the APCs, their charge AND RCon tag. Useful eh? + +[] being a list here. Yeah you can write out lists directly without > lol lists in VV. Color matrix +shenanigans inbound. + +After the "MAP" segment is executed, the rest of the query executes as if it's THAT object you just made +(here the list). +Yeah, by the way, you can chain these MAP / WHERE things FOREVER! + +"SELECT /mob WHERE client MAP client WHERE holder MAP holder" + +What if some dumbass admin spawned a bajillion spiders and you need to kill them all? +Oh yeah you'd rather not delete all the spiders in maintenace. Only that one room the spiders were +spawned in. + +"DELETE /mob/living/carbon/superior_animal/giant_spider WHERE loc.loc == marked" + +Here I used VV to mark the area they were in, and since loc.loc = area, voila. +Only the spiders in a specific area are gone. + +Or you know if you want to catch spiders that crawled into lockers too (how even?) + +"DELETE /mob/living/carbon/superior_animal/giant_spider WHERE global.get_area(src) == marked" + +What else can you do? + +Well suppose you'd rather gib those spiders instead of simply flat deleting them... + +"CALL gib() ON /mob/living/carbon/superior_animal/giant_spider WHERE global.get_area(src) == marked" + +Or you can have some fun.. + +"CALL forceMove(marked) ON /mob/living/carbon/superior_animal" + +You can also run multiple queries sequentially: + +"CALL forceMove(marked) ON /mob/living/carbon/superior_animal; CALL gib() ON +/mob/living/carbon/superior_animal" + +And finally, you can directly modify variables on objects. + +"UPDATE /mob WHERE client SET client.color = [0, 1, 0, 0, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0]" + +Don't crash the server, OK? + +A quick recommendation: before you run something like a DELETE or another query.. Run it through SELECT +first. +You'd rather not gib every player on accident. +Or crash the server. + +By the way, queries are slow and take a while. Be patient. +They don't hang the entire server though. + +With great power comes great responsability. + +Here's a slightly more formal quick reference. + +The 4 queries you can do are: + +"SELECT " +"CALL ON " +"UPDATE SET var=,var2=" +"DELETE " + +"" in this context is " [IN ] [chain of MAP/WHERE modifiers]" + +"IN" (or "FROM", that works too but it's kinda weird to read), +is the list of objects to work on. This defaults to world if not provided. +But doing something like "IN living_mob_list" is quite handy and can optimize your query. +All names inside the IN block are global scope, so you can do living_mob_list (a global var) easily. +You can also run it on a single object. Because SDQL is that convenient even for single operations. + + filters out objects of, well, that type easily. "*" is a wildcard and just takes everything in +the source list. + +And then there's the MAP/WHERE chain. +These operate on each individual object being ran through the query. +They're both expressions like IN, but unlike it the expression is scoped *on the object*. +So if you do "WHERE z == 4", this does "src.z", effectively. +If you want to access global variables, you can do `global.living_mob_list`. +Same goes for procs. + +MAP "changes" the object into the result of the expression. +WHERE "drops" the object if the expression is falsey (0, null or "") + +What can you do inside expressions? + +* Proc calls +* Variable reads +* Literals (numbers, strings, type paths, etc...) +* \ref referencing: {0x30000cc} grabs the object with \ref [0x30000cc] +* Lists: [a, b, c] or [a: b, c: d] +* Math and stuff. +* A few special variables: src (the object currently scoped on), usr (your mob), +marked (your marked datum), global(global scope) + +TG ADDITIONS START: +Add USING keyword to the front of the query to use options system +The defaults aren't necessarily implemented, as there is no need to. +Available options: (D) means default +PROCCALL = (D)ASYNC, BLOCKING +SELECT = FORCE_NULLS, (D)SKIP_NULLS +PRIORITY = HIGH, (D) NORMAL +AUTOGC = (D) AUTOGC, KEEP_ALIVE + +Example: USING PROCCALL = BLOCKING, SELECT = FORCE_NULLS, PRIORITY = HIGH SELECT /mob FROM world WHERE z == 1 + +*/ + + +#define SDQL2_STATE_ERROR 0 +#define SDQL2_STATE_IDLE 1 +#define SDQL2_STATE_PRESEARCH 2 +#define SDQL2_STATE_SEARCHING 3 +#define SDQL2_STATE_EXECUTING 4 +#define SDQL2_STATE_SWITCHING 5 +#define SDQL2_STATE_HALTING 6 + +#define SDQL2_VALID_OPTION_TYPES list("proccall", "select", "priority", "autogc") +#define SDQL2_VALID_OPTION_VALUES list("async", "blocking", "force_nulls", "skip_nulls", "high", "normal", "keep_alive") + +#define SDQL2_OPTION_SELECT_OUTPUT_SKIP_NULLS (1<<0) +#define SDQL2_OPTION_BLOCKING_CALLS (1<<1) +#define SDQL2_OPTION_HIGH_PRIORITY (1<<2) //High priority SDQL query, allow using almost all of the tick. +#define SDQL2_OPTION_DO_NOT_AUTOGC (1<<3) + +#define SDQL2_OPTIONS_DEFAULT (SDQL2_OPTION_SELECT_OUTPUT_SKIP_NULLS) + +#define SDQL2_IS_RUNNING (state == SDQL2_STATE_EXECUTING || state == SDQL2_STATE_SEARCHING || state == SDQL2_STATE_SWITCHING || state == SDQL2_STATE_PRESEARCH) +#define SDQL2_HALT_CHECK if(!SDQL2_IS_RUNNING) {state = SDQL2_STATE_HALTING; return FALSE;}; + +#define SDQL2_TICK_CHECK ((options & SDQL2_OPTION_HIGH_PRIORITY)? CHECK_TICK_HIGH_PRIORITY : CHECK_TICK) + +#define SDQL2_STAGE_SWITCH_CHECK if(state != SDQL2_STATE_SWITCHING){\ + if(state == SDQL2_STATE_HALTING){\ + state = SDQL2_STATE_IDLE;\ + return FALSE}\ + state = SDQL2_STATE_ERROR;\ + CRASH("SDQL2 fatal error");}; + +/client/proc/SDQL2_query(query_text as message) + set category = "Debug" + if(!check_rights(R_DEBUG)) //Shouldn't happen... but just to be safe. + message_admins("ERROR: Non-admin [key_name(usr)] attempted to execute a SDQL query!") + log_admin("Non-admin [key_name(usr)] attempted to execute a SDQL query!") + return FALSE + var/list/results = world.SDQL2_query(query_text, key_name_admin(usr), "[key_name(usr)]") + if(length(results) == 3) + for(var/I in 1 to 3) + to_chat(usr, results[I]) + +/world/proc/SDQL2_query(query_text, log_entry1, log_entry2) + var/query_log = "executed SDQL query(s): \"[query_text]\"." + message_admins("[log_entry1] [query_log]") + query_log = "[log_entry2] [query_log]" + log_game(query_log) + + var/start_time_total = REALTIMEOFDAY + + if(!length(query_text)) + return + var/list/query_list = SDQL2_tokenize(query_text) + if(!length(query_list)) + return + var/list/querys = SDQL_parse(query_list) + if(!length(querys)) + return + var/list/datum/SDQL2_query/running = list() + for(var/list/query_tree in querys) + var/datum/SDQL2_query/query = new /datum/SDQL2_query(query_tree) + if(QDELETED(query)) + continue + if(usr) + query.show_next_to_key = usr.ckey + running += query + var/msg = "Starting query #[query.id] - [query.get_query_text()]." + if(usr) + to_chat(usr, "[msg]") + log_admin(msg) + query.ARun() + var/finished = FALSE + var/objs_all = 0 + var/objs_eligible = 0 + var/selectors_used = FALSE + var/list/combined_refs = list() + do + CHECK_TICK + finished = TRUE + for(var/i in running) + var/datum/SDQL2_query/query = i + if(QDELETED(query)) + running -= query + continue + else if(query.state != SDQL2_STATE_IDLE) + finished = FALSE + else if(query.state == SDQL2_STATE_ERROR) + if(usr) + to_chat(usr, "SDQL query [query.get_query_text()] errored. It will NOT be automatically garbage collected. Please remove manually.") + running -= query + else + if(query.finished) + objs_all += islist(query.obj_count_all)? length(query.obj_count_all) : query.obj_count_all + objs_eligible += islist(query.obj_count_eligible)? length(query.obj_count_eligible) : query.obj_count_eligible + selectors_used |= query.where_switched + combined_refs |= query.select_refs + running -= query + //if(!CHECK_BITFIELD(query.options, SDQL2_OPTION_DO_NOT_AUTOGC)) + //QDEL_IN(query, 50) Maybe when vorestation finally ports timers.. + else + if(usr) + to_chat(usr, "SDQL query [query.get_query_text()] was halted. It will NOT be automatically garbage collected. Please remove manually.") + running -= query + while(!finished) + + var/end_time_total = REALTIMEOFDAY - start_time_total + return list("SDQL query combined results: [query_text]",\ + "SDQL query completed: [objs_all] objects selected by path, and [selectors_used ? objs_eligible : objs_all] objects executed on after WHERE filtering/MAPping if applicable.",\ + "SDQL combined querys took [DisplayTimeText(end_time_total)] to complete.") + combined_refs + +GLOBAL_LIST_INIT(sdql2_queries, GLOB.sdql2_queries || list()) +GLOBAL_DATUM_INIT(sdql2_vv_statobj, /obj/effect/statclick/SDQL2_VV_all, new(null, "VIEW VARIABLES (all)", null)) + +/datum/SDQL2_query + var/list/query_tree + var/state = SDQL2_STATE_IDLE + var/options = SDQL2_OPTIONS_DEFAULT + var/superuser = FALSE //Run things like proccalls without using admin protections + var/allow_admin_interact = TRUE //Allow admins to do things to this excluding varedit these two vars + var/static/id_assign = 1 + var/id = 0 + + var/qdel_on_finish = FALSE + + //Last run + //General + var/finished = FALSE + var/start_time + var/end_time + var/where_switched = FALSE + var/show_next_to_key + //Select query only + var/list/select_refs + var/list/select_text + //Runtime tracked + //These three are weird. For best performance, they are only a number when they're not being changed by the SDQL searching/execution code. They only become numbers when they finish changing. + var/list/obj_count_all + var/list/obj_count_eligible + var/list/obj_count_finished + + //Statclick + var/obj/effect/statclick/SDQL2_delete/delete_click + var/obj/effect/statclick/SDQL2_action/action_click + +/datum/SDQL2_query/New(list/tree, SU = FALSE, admin_interact = TRUE, _options = SDQL2_OPTIONS_DEFAULT, finished_qdel = FALSE) + LAZYADD(GLOB.sdql2_queries, src) + superuser = SU + allow_admin_interact = admin_interact + query_tree = tree + options = _options + id = id_assign++ + qdel_on_finish = finished_qdel + +/datum/SDQL2_query/Destroy() + state = SDQL2_STATE_HALTING + query_tree = null + obj_count_all = null + obj_count_eligible = null + obj_count_finished = null + select_text = null + select_refs = null + GLOB.sdql2_queries -= src + return ..() + +/datum/SDQL2_query/proc/get_query_text() + var/list/out = list() + recursive_list_print(out, query_tree) + return out.Join() + +/proc/recursive_list_print(list/output = list(), list/input, datum/callback/datum_handler, datum/callback/atom_handler) + output += "\[ " + for(var/i in 1 to input.len) + var/final = i == input.len + var/key = input[i] + + //print the key + if(islist(key)) + recursive_list_print(output, key, datum_handler, atom_handler) + else if(is_proper_datum(key) && (datum_handler || (istype(key, /atom) && atom_handler))) + if(istype(key, /atom) && atom_handler) + output += atom_handler.Invoke(key) + else + output += datum_handler.Invoke(key) + else + output += "[key]" + + //print the value + var/is_value = (!isnum(key) && !isnull(input[key])) + if(is_value) + var/value = input[key] + if(islist(value)) + recursive_list_print(output, value, datum_handler, atom_handler) + else if(is_proper_datum(value) && (datum_handler || (istype(value, /atom) && atom_handler))) + if(istype(value, /atom) && atom_handler) + output += atom_handler.Invoke(value) + else + output += datum_handler.Invoke(value) + else + output += " = [value]" + + if(!final) + output += " , " + + output += " \]" + +/datum/SDQL2_query/proc/text_state() + switch(state) + if(SDQL2_STATE_ERROR) + return "###ERROR" + if(SDQL2_STATE_IDLE) + return "####IDLE" + if(SDQL2_STATE_PRESEARCH) + return "PRESEARCH" + if(SDQL2_STATE_SEARCHING) + return "SEARCHING" + if(SDQL2_STATE_EXECUTING) + return "EXECUTING" + if(SDQL2_STATE_SWITCHING) + return "SWITCHING" + if(SDQL2_STATE_HALTING) + return "##HALTING" + +/datum/SDQL2_query/proc/generate_stat() + if(!allow_admin_interact) + return + if(!delete_click) + delete_click = new(null, "INITIALIZING", src) + if(!action_click) + action_click = new(null, "INITIALIZNG", src) + stat("[id] ", delete_click.update("DELETE QUERY | STATE : [text_state()] | ALL/ELIG/FIN \ + [islist(obj_count_all)? length(obj_count_all) : (isnull(obj_count_all)? "0" : obj_count_all)]/\ + [islist(obj_count_eligible)? length(obj_count_eligible) : (isnull(obj_count_eligible)? "0" : obj_count_eligible)]/\ + [islist(obj_count_finished)? length(obj_count_finished) : (isnull(obj_count_finished)? "0" : obj_count_finished)] - [get_query_text()]")) + stat(" ", action_click.update("[SDQL2_IS_RUNNING? "HALT" : "RUN"]")) + +/datum/SDQL2_query/proc/delete_click() + admin_del(usr) + +/datum/SDQL2_query/proc/action_click() + if(SDQL2_IS_RUNNING) + admin_halt(usr) + else + admin_run(usr) + +/datum/SDQL2_query/proc/admin_halt(user = usr) + if(!SDQL2_IS_RUNNING) + return + var/msg = "[key_name(user)] has halted query #[id]" + message_admins(msg) + log_admin(msg) + state = SDQL2_STATE_HALTING + +/datum/SDQL2_query/proc/admin_run(mob/user = usr) + if(SDQL2_IS_RUNNING) + return + var/msg = "[key_name(user)] has (re)started query #[id]" + message_admins(msg) + log_admin(msg) + show_next_to_key = user.ckey + ARun() + +/datum/SDQL2_query/proc/admin_del(user = usr) + var/msg = "[key_name(user)] has stopped + deleted query #[id]" + message_admins(msg) + log_admin(msg) + qdel(src) + +/datum/SDQL2_query/proc/set_option(name, value) + switch(name) + if("select") + switch(value) + if("force_nulls") + DISABLE_BITFIELD(options, SDQL2_OPTION_SELECT_OUTPUT_SKIP_NULLS) + if("proccall") + switch(value) + if("blocking") + ENABLE_BITFIELD(options, SDQL2_OPTION_BLOCKING_CALLS) + if("priority") + switch(value) + if("high") + ENABLE_BITFIELD(options, SDQL2_OPTION_HIGH_PRIORITY) + if("autogc") + switch(value) + if("keep_alive") + ENABLE_BITFIELD(options, SDQL2_OPTION_DO_NOT_AUTOGC) + +/datum/SDQL2_query/proc/ARun() + INVOKE_ASYNC(src, .proc/Run) + +/datum/SDQL2_query/proc/Run() + if(SDQL2_IS_RUNNING) + return FALSE + if(query_tree["options"]) + for(var/name in query_tree["options"]) + var/value = query_tree["options"][name] + set_option(name, value) + select_refs = list() + select_text = null + obj_count_all = 0 + obj_count_eligible = 0 + obj_count_finished = 0 + start_time = REALTIMEOFDAY + + state = SDQL2_STATE_PRESEARCH + var/list/search_tree = PreSearch() + SDQL2_STAGE_SWITCH_CHECK + + state = SDQL2_STATE_SEARCHING + var/list/found = Search(search_tree) + SDQL2_STAGE_SWITCH_CHECK + + state = SDQL2_STATE_EXECUTING + Execute(found) + SDQL2_STAGE_SWITCH_CHECK + + end_time = REALTIMEOFDAY + state = SDQL2_STATE_IDLE + finished = TRUE + . = TRUE + if(show_next_to_key) + var/client/C = GLOB.directory[show_next_to_key] + if(C) + var/mob/showmob = C.mob + to_chat(showmob, "SDQL query results: [get_query_text()]
\ + SDQL query completed: [islist(obj_count_all)? length(obj_count_all) : obj_count_all] objects selected by path, and \ + [where_switched? "[islist(obj_count_eligible)? length(obj_count_eligible) : obj_count_eligible] objects executed on after WHERE keyword selection." : ""]
\ + SDQL query took [DisplayTimeText(end_time - start_time)] to complete.
") + if(length(select_text)) + var/text = islist(select_text)? select_text.Join() : select_text + var/static/result_offset = 0 + showmob << browse(text, "window=SDQL-result-[result_offset++]") + show_next_to_key = null + if(qdel_on_finish) + qdel(src) + +/datum/SDQL2_query/proc/PreSearch() + SDQL2_HALT_CHECK + switch(query_tree[1]) + if("explain") + SDQL_testout(query_tree["explain"]) + state = SDQL2_STATE_HALTING + return + if("call") + . = query_tree["on"] + if("select", "delete", "update") + . = query_tree[query_tree[1]] + state = SDQL2_STATE_SWITCHING + +/datum/SDQL2_query/proc/Search(list/tree) + SDQL2_HALT_CHECK + var/type = tree[1] + var/list/from = tree[2] + var/list/objs = SDQL_from_objs(from) + SDQL2_TICK_CHECK + SDQL2_HALT_CHECK + objs = SDQL_get_all(type, objs) + SDQL2_TICK_CHECK + SDQL2_HALT_CHECK + + // 1 and 2 are type and FROM. + var/i = 3 + while (i <= tree.len) + var/key = tree[i++] + var/list/expression = tree[i++] + switch (key) + if ("map") + for(var/j = 1 to objs.len) + var/x = objs[j] + objs[j] = SDQL_expression(x, expression) + SDQL2_TICK_CHECK + SDQL2_HALT_CHECK + + if ("where") + where_switched = TRUE + var/list/out = list() + obj_count_eligible = out + for(var/x in objs) + if(SDQL_expression(x, expression)) + out += x + SDQL2_TICK_CHECK + SDQL2_HALT_CHECK + objs = out + if(islist(obj_count_eligible)) + obj_count_eligible = objs.len + else + obj_count_eligible = obj_count_all + . = objs + state = SDQL2_STATE_SWITCHING + +/datum/SDQL2_query/proc/SDQL_from_objs(list/tree) + if("world" in tree) + return world + return SDQL_expression(world, tree) + +/datum/SDQL2_query/proc/SDQL_get_all(type, location) + var/list/out = list() + obj_count_all = out + +// If only a single object got returned, wrap it into a list so the for loops run on it. + if(!islist(location) && location != world) + location = list(location) + + if(type == "*") + for(var/i in location) + var/datum/d = i + if(d.can_vv_get() || superuser) + out += d + SDQL2_TICK_CHECK + SDQL2_HALT_CHECK + return out + if(istext(type)) + type = text2path(type) + var/typecache = typecacheof(type) + + if(ispath(type, /mob)) + for(var/mob/d in location) + if(typecache[d.type] && (d.can_vv_get() || superuser)) + out += d + SDQL2_TICK_CHECK + SDQL2_HALT_CHECK + + else if(ispath(type, /turf)) + for(var/turf/d in location) + if(typecache[d.type] && (d.can_vv_get() || superuser)) + out += d + SDQL2_TICK_CHECK + SDQL2_HALT_CHECK + + else if(ispath(type, /obj)) + for(var/obj/d in location) + if(typecache[d.type] && (d.can_vv_get() || superuser)) + out += d + SDQL2_TICK_CHECK + SDQL2_HALT_CHECK + + else if(ispath(type, /area)) + for(var/area/d in location) + if(typecache[d.type] && (d.can_vv_get() || superuser)) + out += d + SDQL2_TICK_CHECK + SDQL2_HALT_CHECK + + else if(ispath(type, /atom)) + for(var/atom/d in location) + if(typecache[d.type] && (d.can_vv_get() || superuser)) + out += d + SDQL2_TICK_CHECK + SDQL2_HALT_CHECK + + else if(ispath(type, /datum)) + if(location == world) //snowflake for byond shortcut + for(var/datum/d) //stupid byond trick to have it not return atoms to make this less laggy + if(typecache[d.type] && (d.can_vv_get() || superuser)) + out += d + SDQL2_TICK_CHECK + SDQL2_HALT_CHECK + else + for(var/datum/d in location) + if(typecache[d.type] && (d.can_vv_get() || superuser)) + out += d + SDQL2_TICK_CHECK + SDQL2_HALT_CHECK + obj_count_all = out.len + return out + +/datum/SDQL2_query/proc/Execute(list/found) + SDQL2_HALT_CHECK + select_refs = list() + select_text = list() + switch(query_tree[1]) + if("call") + for(var/i in found) + if(!is_proper_datum(i)) + continue + world.SDQL_var(i, query_tree["call"][1], null, i, superuser, src) + obj_count_finished++ + SDQL2_TICK_CHECK + SDQL2_HALT_CHECK + + if("delete") + for(var/datum/d in found) + SDQL_qdel_datum(d) + obj_count_finished++ + SDQL2_TICK_CHECK + SDQL2_HALT_CHECK + + if("select") + var/list/text_list = list() + var/print_nulls = !(options & SDQL2_OPTION_SELECT_OUTPUT_SKIP_NULLS) + obj_count_finished = select_refs + for(var/i in found) + SDQL_print(i, text_list, print_nulls) + select_refs["\ref[i]"] = TRUE + SDQL2_TICK_CHECK + SDQL2_HALT_CHECK + select_text = text_list + + if("update") + if("set" in query_tree) + var/list/set_list = query_tree["set"] + for(var/d in found) + if(!is_proper_datum(d)) + continue + SDQL_internal_vv(d, set_list) + obj_count_finished++ + SDQL2_TICK_CHECK + SDQL2_HALT_CHECK + if(islist(obj_count_finished)) + obj_count_finished = obj_count_finished.len + state = SDQL2_STATE_SWITCHING + +/datum/SDQL2_query/proc/SDQL_print(object, list/text_list, print_nulls = TRUE) + if(is_proper_datum(object)) + text_list += "\ref[object] : [object]" + if(istype(object, /atom)) + var/atom/A = object + var/turf/T = A.loc + var/area/a + if(istype(T)) + text_list += " at [T] [ADMIN_COORDJMP(T)]" + a = T.loc + else + var/turf/final = get_turf(T) //Recursive, hopefully? + if(istype(final)) + text_list += " at [final] [ADMIN_COORDJMP(final)]" + a = final.loc + else + text_list += " at nonexistant location" + if(a) + text_list += " in area [a]" + if(T.loc != a) + text_list += " inside [T]" + text_list += "
" + else if(islist(object)) + var/list/L = object + var/first = TRUE + text_list += "\[" + for (var/x in L) + if (!first) + text_list += ", " + first = FALSE + SDQL_print(x, text_list) + if (!isnull(x) && !isnum(x) && L[x] != null) + text_list += " -> " + SDQL_print(L[L[x]]) + text_list += "]
" + else + if(isnull(object)) + if(print_nulls) + text_list += "NULL
" + else + text_list += "[object]
" + +/datum/SDQL2_query/CanProcCall() + if(!allow_admin_interact) + return FALSE + return ..() + +/datum/SDQL2_query/vv_edit_var(var_name, var_value) + if(!allow_admin_interact) + return FALSE + if(var_name == NAMEOF(src, superuser) || var_name == NAMEOF(src, allow_admin_interact) || var_name == NAMEOF(src, query_tree)) + return FALSE + return ..() + +/datum/SDQL2_query/proc/SDQL_internal_vv(d, list/set_list) + for(var/list/sets in set_list) + var/datum/temp = d + var/i = 0 + for(var/v in sets) + if(++i == sets.len) + if(superuser) + if(temp.vars.Find(v)) + temp.vars[v] = SDQL_expression(d, set_list[sets]) + else + temp.vv_edit_var(v, SDQL_expression(d, set_list[sets])) + break + if(temp.vars.Find(v) && (istype(temp.vars[v], /datum) || istype(temp.vars[v], /client))) + temp = temp.vars[v] + else + break + +/datum/SDQL2_query/proc/SDQL_function_blocking(datum/object, procname, list/arguments, source) + var/list/new_args = list() + for(var/arg in arguments) + new_args[++new_args.len] = SDQL_expression(source, arg) + if(object == GLOB) // Global proc. + procname = "/proc/[procname]" + return superuser? (call(procname)(new_args)) : (WrapAdminProcCall(GLOBAL_PROC, procname, new_args)) + return superuser? (call(object, procname)(new_args)) : (WrapAdminProcCall(object, procname, new_args)) + +/datum/SDQL2_query/proc/SDQL_function_async(datum/object, procname, list/arguments, source) + set waitfor = FALSE + return SDQL_function_blocking(object, procname, arguments, source) + +/datum/SDQL2_query/proc/SDQL_expression(datum/object, list/expression, start = 1) + var/result = 0 + var/val + + for(var/i = start, i <= expression.len, i++) + var/op = "" + + if(i > start) + op = expression[i] + i++ + + var/list/ret = SDQL_value(object, expression, i) + val = ret["val"] + i = ret["i"] + + if(op != "") + switch(op) + if("+") + result = (result + val) + if("-") + result = (result - val) + if("*") + result = (result * val) + if("/") + result = (result / val) + if("&") + result = (result & val) + if("|") + result = (result | val) + if("^") + result = (result ^ val) + if("%") + result = (result % val) + if("=", "==") + result = (result == val) + if("!=", "<>") + result = (result != val) + if("<") + result = (result < val) + if("<=") + result = (result <= val) + if(">") + result = (result > val) + if(">=") + result = (result >= val) + if("and", "&&") + result = (result && val) + if("or", "||") + result = (result || val) + else + to_chat(usr, "SDQL2: Unknown op [op]") + result = null + else + result = val + + return result + +/datum/SDQL2_query/proc/SDQL_value(datum/object, list/expression, start = 1) + var/i = start + var/val = null + + if(i > expression.len) + return list("val" = null, "i" = i) + + if(istype(expression[i], /list)) + val = SDQL_expression(object, expression[i]) + + else if(expression[i] == "TRUE") + val = TRUE + + else if(expression[i] == "FALSE") + val = FALSE + + else if(expression[i] == "!") + var/list/ret = SDQL_value(object, expression, i + 1) + val = !ret["val"] + i = ret["i"] + + else if(expression[i] == "~") + var/list/ret = SDQL_value(object, expression, i + 1) + val = ~ret["val"] + i = ret["i"] + + else if(expression[i] == "-") + var/list/ret = SDQL_value(object, expression, i + 1) + val = -ret["val"] + i = ret["i"] + + else if(expression[i] == "null") + val = null + + else if(isnum(expression[i])) + val = expression[i] + + else if(ispath(expression[i])) + val = expression[i] + + else if(copytext(expression[i], 1, 2) in list("'", "\"")) + val = copytext(expression[i], 2, length(expression[i])) + + else if(expression[i] == "\[") + var/list/expressions_list = expression[++i] + val = list() + for(var/list/expression_list in expressions_list) + var/result = SDQL_expression(object, expression_list) + var/assoc + if(expressions_list[expression_list] != null) + assoc = SDQL_expression(object, expressions_list[expression_list]) + if(assoc != null) + // Need to insert the key like this to prevent duplicate keys fucking up. + var/list/dummy = list() + dummy[result] = assoc + result = dummy + val += result + else + val = world.SDQL_var(object, expression, i, object, superuser, src) + i = expression.len + + return list("val" = val, "i" = i) + +/proc/SDQL_parse(list/query_list) + var/datum/SDQL_parser/parser = new() + var/list/querys = list() + var/list/query_tree = list() + var/pos = 1 + var/querys_pos = 1 + var/do_parse = 0 + + for(var/val in query_list) + if(val == ";") + do_parse = 1 + else if(pos >= query_list.len) + query_tree += val + do_parse = 1 + + if(do_parse) + parser.query = query_tree + var/list/parsed_tree + parsed_tree = parser.parse() + if(parsed_tree.len > 0) + querys.len = querys_pos + querys[querys_pos] = parsed_tree + querys_pos++ + else //There was an error so don't run anything, and tell the user which query has errored. + to_chat(usr, "Parsing error on [querys_pos]\th query. Nothing was executed.") + return list() + query_tree = list() + do_parse = 0 + else + query_tree += val + pos++ + + qdel(parser) + return querys + +/proc/SDQL_testout(list/query_tree, indent = 0) + var/static/whitespace = "    " + var/spaces = "" + for(var/s = 0, s < indent, s++) + spaces += whitespace + + for(var/item in query_tree) + if(istype(item, /list)) + to_chat(usr, "[spaces](") + SDQL_testout(item, indent + 1) + to_chat(usr, "[spaces])") + + else + to_chat(usr, "[spaces][item]") + + if(!isnum(item) && query_tree[item]) + + if(istype(query_tree[item], /list)) + to_chat(usr, "[spaces][whitespace](") + SDQL_testout(query_tree[item], indent + 2) + to_chat(usr, "[spaces][whitespace])") + + else + to_chat(usr, "[spaces][whitespace][query_tree[item]]") + +//Staying as a world proc as this is called too often for changes to offset the potential IsAdminAdvancedProcCall checking overhead. +/world/proc/SDQL_var(object, list/expression, start = 1, source, superuser, datum/SDQL2_query/query) + var/v + var/static/list/exclude = list("usr", "src", "marked", "global") + var/long = start < expression.len + var/datum/D + if(is_proper_datum(object)) + D = object + + if (object == world && (!long || expression[start + 1] == ".") && !(expression[start] in exclude)) + to_chat(usr, "World variables are not allowed to be accessed. Use global.") + return null + + else if(expression [start] == "{" && long) + if(lowertext(copytext(expression[start + 1], 1, 3)) != "0x") + to_chat(usr, "Invalid pointer syntax: [expression[start + 1]]") + return null + v = locate("\[[expression[start + 1]]]") + if(!v) + to_chat(usr, "Invalid pointer: [expression[start + 1]]") + return null + start++ + long = start < expression.len + else if(D != null && (!long || expression[start + 1] == ".") && (expression[start] in D.vars)) + if(D.can_vv_get(expression[start]) || superuser) + v = D.vars[expression[start]] + else + v = "SECRET" + else if(D != null && long && expression[start + 1] == ":" && hascall(D, expression[start])) + v = expression[start] + else if(!long || expression[start + 1] == ".") + switch(expression[start]) + if("usr") + v = usr + if("src") + v = source + if("marked") + if(usr.client && usr.client.holder && usr.client.holder.marked_datum) + v = usr.client.holder.marked_datum + else + return null + if("world") + v = world + if("global") + v = GLOB + if("MC") + v = Master + if("FS") + v = Failsafe + if("CFG") + v = config + else + return null + else if(object == GLOB) // Shitty ass hack kill me. + v = expression[start] + if(long) + if(expression[start + 1] == ".") + return SDQL_var(v, expression[start + 2], null, source, superuser, query) + else if(expression[start + 1] == ":") + return (query.options & SDQL2_OPTION_BLOCKING_CALLS)? query.SDQL_function_async(object, v, expression[start + 2], source) : query.SDQL_function_blocking(object, v, expression[start + 2], source) + else if(expression[start + 1] == "\[" && islist(v)) + var/list/L = v + var/index = query.SDQL_expression(source, expression[start + 2]) + if(isnum(index) && (!(round(index) == index) || L.len < index)) + to_chat(usr, "Invalid list index: [index]") + return null + return L[index] + return v + +/proc/SDQL2_tokenize(query_text) + + var/list/whitespace = list(" ", "\n", "\t") + var/list/single = list("(", ")", ",", "+", "-", ".", "\[", "]", "{", "}", ";", ":") + var/list/multi = list( + "=" = list("", "="), + "<" = list("", "=", ">"), + ">" = list("", "="), + "!" = list("", "=")) + + var/word = "" + var/list/query_list = list() + var/len = length(query_text) + + for(var/i = 1, i <= len, i++) + var/char = copytext(query_text, i, i + 1) + + if(char in whitespace) + if(word != "") + query_list += word + word = "" + + else if(char in single) + if(word != "") + query_list += word + word = "" + + query_list += char + + else if(char in multi) + if(word != "") + query_list += word + word = "" + + var/char2 = copytext(query_text, i + 1, i + 2) + + if(char2 in multi[char]) + query_list += "[char][char2]" + i++ + + else + query_list += char + + else if(char == "'") + if(word != "") + to_chat(usr, "SDQL2: You have an error in your SDQL syntax, unexpected ' in query: \"[query_text]\" following \"[word]\". Please check your syntax, and try again.") + return null + + word = "'" + + for(i++, i <= len, i++) + char = copytext(query_text, i, i + 1) + + if(char == "'") + if(copytext(query_text, i + 1, i + 2) == "'") + word += "'" + i++ + + else + break + + else + word += char + + if(i > len) + to_chat(usr, "SDQL2: You have an error in your SDQL syntax, unmatched ' in query: \"[query_text]\". Please check your syntax, and try again.") + return null + + query_list += "[word]'" + word = "" + + else if(char == "\"") + if(word != "") + to_chat(usr, "SDQL2: You have an error in your SDQL syntax, unexpected \" in query: \"[query_text]\" following \"[word]\". Please check your syntax, and try again.") + return null + + word = "\"" + + for(i++, i <= len, i++) + char = copytext(query_text, i, i + 1) + + if(char == "\"") + if(copytext(query_text, i + 1, i + 2) == "'") + word += "\"" + i++ + + else + break + + else + word += char + + if(i > len) + to_chat(usr, "SDQL2: You have an error in your SDQL syntax, unmatched \" in query: \"[query_text]\". Please check your syntax, and try again.") + return null + + query_list += "[word]\"" + word = "" + + else + word += char + + if(word != "") + query_list += word + return query_list + +/proc/is_proper_datum(thing) + return istype(thing, /datum) || istype(thing, /client) + +/obj/effect/statclick/SDQL2_delete/Click() + var/datum/SDQL2_query/Q = target + Q.delete_click() + +/obj/effect/statclick/SDQL2_action/Click() + var/datum/SDQL2_query/Q = target + Q.action_click() + +/obj/effect/statclick/SDQL2_VV_all + name = "VIEW VARIABLES" + +/obj/effect/statclick/SDQL2_VV_all/Click() + usr.client.debug_variables(GLOB.sdql2_queries) diff --git a/code/modules/admin/verbs/SDQL2/SDQL_2_parser.dm b/code/modules/admin/verbs/SDQL2/SDQL_2_parser.dm new file mode 100644 index 0000000000..e6504475c5 --- /dev/null +++ b/code/modules/admin/verbs/SDQL2/SDQL_2_parser.dm @@ -0,0 +1,635 @@ + +//I'm pretty sure that this is a recursive [s]descent[/s] ascent parser. + + +//Spec + +////////// +// +// query : select_query | delete_query | update_query | call_query | explain +// explain : 'EXPLAIN' query +// select_query : 'SELECT' object_selectors +// delete_query : 'DELETE' object_selectors +// update_query : 'UPDATE' object_selectors 'SET' assignments +// call_query : 'CALL' variable 'ON' object_selectors // Note here: 'variable' does function calls. This simplifies parsing. +// +// select_item : '*' | object_type +// +// object_selectors : select_item [('FROM' | 'IN') from_item] [modifier_list] +// modifier_list : ('WHERE' bool_expression | 'MAP' expression) [modifier_list] +// +// from_item : 'world' | expression +// +// call_function : '(' [arguments] ')' +// arguments : expression [',' arguments] +// +// object_type : +// +// assignments : assignment [',' assignments] +// assignment : '=' expression +// variable : | '.' variable | '[' ']' | '[' ']' '.' variable +// +// bool_expression : expression comparitor expression [bool_operator bool_expression] +// expression : ( unary_expression | '(' expression ')' | value ) [binary_operator expression] +// unary_expression : unary_operator ( unary_expression | value | '(' expression ')' ) +// comparitor : '=' | '==' | '!=' | '<>' | '<' | '<=' | '>' | '>=' +// value : variable | string | number | 'null' | object_type +// unary_operator : '!' | '-' | '~' +// binary_operator : comparitor | '+' | '-' | '/' | '*' | '&' | '|' | '^' | '%' +// bool_operator : 'AND' | '&&' | 'OR' | '||' +// +// string : ''' ''' | '"' '"' +// number : +// +////////// + +/datum/SDQL_parser + var/query_type + var/error = 0 + + var/list/query + var/list/tree + + var/list/boolean_operators = list("and", "or", "&&", "||") + var/list/unary_operators = list("!", "-", "~") + var/list/binary_operators = list("+", "-", "/", "*", "&", "|", "^", "%") + var/list/comparitors = list("=", "==", "!=", "<>", "<", "<=", ">", ">=") + +/datum/SDQL_parser/New(query_list) + query = query_list + +/datum/SDQL_parser/proc/parse_error(error_message) + error = 1 + to_chat(usr, "SQDL2 Parsing Error: [error_message]") + return query.len + 1 + +/datum/SDQL_parser/proc/parse() + tree = list() + query_options(1, tree) + + if(error) + return list() + else + return tree + +/datum/SDQL_parser/proc/token(i) + if(i <= query.len) + return query[i] + + else + return null + +/datum/SDQL_parser/proc/tokens(i, num) + if(i + num <= query.len) + return query.Copy(i, i + num) + + else + return null + +/datum/SDQL_parser/proc/tokenl(i) + return lowertext(token(i)) + +/datum/SDQL_parser/proc/query_options(i, list/node) + var/list/options = list() + if(tokenl(i) == "using") + i = option_assignments(i + 1, node, options) + query(i, node) + if(length(options)) + node["options"] = options + +//option_assignment: query_option '=' define +/datum/SDQL_parser/proc/option_assignment(i, list/node, list/assignment_list = list()) + var/type = tokenl(i) + if(!(type in SDQL2_VALID_OPTION_TYPES)) + parse_error("Invalid option type: [type]") + if(!(token(i + 1) == "=")) + parse_error("Invalid option assignment symbol: [token(i + 1)]") + var/val = tokenl(i + 2) + if(!(val in SDQL2_VALID_OPTION_VALUES)) + parse_error("Invalid optoin value: [val]") + assignment_list[type] = val + return (i + 3) + +//option_assignments: option_assignment, [',' option_assignments] +/datum/SDQL_parser/proc/option_assignments(i, list/node, list/store) + i = option_assignment(i, node, store) + + if(token(i) == ",") + i = option_assignments(i + 1, node, store) + + return i + +//query: select_query | delete_query | update_query +/datum/SDQL_parser/proc/query(i, list/node) + query_type = tokenl(i) + + switch(query_type) + if("select") + select_query(i, node) + + if("delete") + delete_query(i, node) + + if("update") + update_query(i, node) + + if("call") + call_query(i, node) + + if("explain") + node += "explain" + node["explain"] = list() + query(i + 1, node["explain"]) + + +// select_query: 'SELECT' object_selectors +/datum/SDQL_parser/proc/select_query(i, list/node) + var/list/select = list() + i = object_selectors(i + 1, select) + + node["select"] = select + return i + + +//delete_query: 'DELETE' object_selectors +/datum/SDQL_parser/proc/delete_query(i, list/node) + var/list/select = list() + i = object_selectors(i + 1, select) + + node["delete"] = select + + return i + + +//update_query: 'UPDATE' object_selectors 'SET' assignments +/datum/SDQL_parser/proc/update_query(i, list/node) + var/list/select = list() + i = object_selectors(i + 1, select) + + node["update"] = select + + if(tokenl(i) != "set") + i = parse_error("UPDATE has misplaced SET") + + var/list/set_assignments = list() + i = assignments(i + 1, set_assignments) + + node["set"] = set_assignments + + return i + + +//call_query: 'CALL' call_function ['ON' object_selectors] +/datum/SDQL_parser/proc/call_query(i, list/node) + var/list/func = list() + i = variable(i + 1, func) // Yes technically does anything variable() matches but I don't care, if admins fuck up this badly then they shouldn't be allowed near SDQL. + + node["call"] = func + + if(tokenl(i) != "on") + return parse_error("You need to specify what to call ON.") + + var/list/select = list() + i = object_selectors(i + 1, select) + + node["on"] = select + + return i + +// object_selectors: select_item [('FROM' | 'IN') from_item] [modifier_list] +/datum/SDQL_parser/proc/object_selectors(i, list/node) + i = select_item(i, node) + + if (tokenl(i) == "from" || tokenl(i) == "in") + i++ + var/list/from = list() + i = from_item(i, from) + node[++node.len] = from + + else + node[++node.len] = list("world") + + i = modifier_list(i, node) + return i + +// modifier_list: ('WHERE' bool_expression | 'MAP' expression) [modifier_list] +/datum/SDQL_parser/proc/modifier_list(i, list/node) + while (TRUE) + if (tokenl(i) == "where") + i++ + node += "where" + var/list/expr = list() + i = bool_expression(i, expr) + node[++node.len] = expr + + else if (tokenl(i) == "map") + i++ + node += "map" + var/list/expr = list() + i = expression(i, expr) + node[++node.len] = expr + + else + return i + +//select_list:select_item [',' select_list] +/datum/SDQL_parser/proc/select_list(i, list/node) + i = select_item(i, node) + + if(token(i) == ",") + i = select_list(i + 1, node) + + return i + +//assignments: assignment, [',' assignments] +/datum/SDQL_parser/proc/assignments(i, list/node) + i = assignment(i, node) + + if(token(i) == ",") + i = assignments(i + 1, node) + + return i + + +//select_item: '*' | select_function | object_type +/datum/SDQL_parser/proc/select_item(i, list/node) + if (token(i) == "*") + node += "*" + i++ + + else if (copytext(token(i), 1, 2) == "/") + i = object_type(i, node) + + else + i = parse_error("Expected '*' or type path for select item") + + return i + +// Standardized method for handling the IN/FROM and WHERE options. +/datum/SDQL_parser/proc/selectors(i, list/node) + while (token(i)) + var/tok = tokenl(i) + if (tok in list("from", "in")) + var/list/from = list() + i = from_item(i + 1, from) + + node["from"] = from + continue + + if (tok == "where") + var/list/where = list() + i = bool_expression(i + 1, where) + + node["where"] = where + continue + + parse_error("Expected either FROM, IN or WHERE token, found [token(i)] instead.") + return i + 1 + + if (!node.Find("from")) + node["from"] = list("world") + + return i + +//from_item: 'world' | expression +/datum/SDQL_parser/proc/from_item(i, list/node) + if(token(i) == "world") + node += "world" + i++ + + else + i = expression(i, node) + + return i + + +//bool_expression: expression [bool_operator bool_expression] +/datum/SDQL_parser/proc/bool_expression(i, list/node) + + var/list/bool = list() + i = expression(i, bool) + + node[++node.len] = bool + + if(tokenl(i) in boolean_operators) + i = bool_operator(i, node) + i = bool_expression(i, node) + + return i + + +//assignment: '=' expression +/datum/SDQL_parser/proc/assignment(var/i, var/list/node, var/list/assignment_list = list()) + assignment_list += token(i) + + if(token(i + 1) == ".") + i = assignment(i + 2, node, assignment_list) + + else if(token(i + 1) == "=") + var/exp_list = list() + node[assignment_list] = exp_list + + i = expression(i + 2, exp_list) + + else + parse_error("Assignment expected, but no = found") + + return i + + +//variable: | '.' variable | '[' ']' | '[' ']' '.' variable +/datum/SDQL_parser/proc/variable(i, list/node) + var/list/L = list(token(i)) + node[++node.len] = L + + if(token(i) == "{") + L += token(i + 1) + i += 2 + + if(token(i) != "}") + parse_error("Missing } at end of pointer.") + + if(token(i + 1) == ".") + L += "." + i = variable(i + 2, L) + + else if (token(i + 1) == "(") // OH BOY PROC + var/list/arguments = list() + i = call_function(i, null, arguments) + L += ":" + L[++L.len] = arguments + + else if (token(i + 1) == "\[") + var/list/expression = list() + i = expression(i + 2, expression) + if (token(i) != "]") + parse_error("Missing ] at the end of list access.") + + L += "\[" + L[++L.len] = expression + i++ + + else + i++ + + return i + + +//object_type: +/datum/SDQL_parser/proc/object_type(i, list/node) + + if (copytext(token(i), 1, 2) != "/") + return parse_error("Expected type, but it didn't begin with /") + + var/path = text2path(token(i)) + if (path == null) + return parse_error("Nonexistant type path: [token(i)]") + + node += path + + return i + 1 + + +//comparitor: '=' | '==' | '!=' | '<>' | '<' | '<=' | '>' | '>=' +/datum/SDQL_parser/proc/comparitor(i, list/node) + + if(token(i) in list("=", "==", "!=", "<>", "<", "<=", ">", ">=")) + node += token(i) + + else + parse_error("Unknown comparitor [token(i)]") + + return i + 1 + + +//bool_operator: 'AND' | '&&' | 'OR' | '||' +/datum/SDQL_parser/proc/bool_operator(i, list/node) + + if(tokenl(i) in list("and", "or", "&&", "||")) + node += token(i) + + else + parse_error("Unknown comparitor [token(i)]") + + return i + 1 + + +//string: ''' ''' | '"' '"' +/datum/SDQL_parser/proc/string(i, list/node) + + if(copytext(token(i), 1, 2) in list("'", "\"")) + node += token(i) + + else + parse_error("Expected string but found '[token(i)]'") + + return i + 1 + +//array: '[' expression, expression, ... ']' +/datum/SDQL_parser/proc/array(var/i, var/list/node) + // Arrays get turned into this: list("[", list(exp_1a = exp_1b, ...), ...), "[" is to mark the next node as an array. + if(copytext(token(i), 1, 2) != "\[") + parse_error("Expected an array but found '[token(i)]'") + return i + 1 + + node += token(i) // Add the "[" + + var/list/expression_list = list() + + i++ + if(token(i) != "]") + var/list/temp_expression_list = list() + var/tok + do + tok = token(i) + if (tok == "," || tok == ":") + if (temp_expression_list == null) + parse_error("Found ',' or ':' without expression in an array.") + return i + 1 + + expression_list[++expression_list.len] = temp_expression_list + temp_expression_list = null + if (tok == ":") + temp_expression_list = list() + i = expression(i + 1, temp_expression_list) + expression_list[expression_list[expression_list.len]] = temp_expression_list + temp_expression_list = null + tok = token(i) + if (tok != ",") + if (tok == "]") + break + + parse_error("Expected ',' or ']' after array assoc value, but found '[token(i)]'") + return i + + + i++ + continue + + temp_expression_list = list() + i = expression(i, temp_expression_list) + + // Ok, what the fuck BYOND? + // Not having these lines here causes the parser to die + // on an error saying that list/token() doesn't exist as a proc. + // These lines prevent that. + // I assume the compiler/VM is shitting itself and swapping out some variables internally? + // While throwing in debug logging it disappeared + // And these 3 lines prevent it from happening while being quiet. + // So.. it works. + // Don't touch it. + var/whatthefuck = i + whatthefuck = src.type + whatthefuck = whatthefuck + + while(token(i) && token(i) != "]") + + if (temp_expression_list) + expression_list[++expression_list.len] = temp_expression_list + + node[++node.len] = expression_list + + return i + 1 + +//call_function: ['(' [arguments] ')'] +/datum/SDQL_parser/proc/call_function(i, list/node, list/arguments) + if(length(tokenl(i))) + var/procname = "" + if(tokenl(i) == "global" && token(i + 1) == ".") // Global proc. + i += 2 + procname = "global." + node += procname + token(i++) + if(token(i) != "(") + parse_error("Expected ( but found '[token(i)]'") + + else if(token(i + 1) != ")") + var/list/temp_expression_list = list() + do + i = expression(i + 1, temp_expression_list) + if(token(i) == ",") + arguments[++arguments.len] = temp_expression_list + temp_expression_list = list() + continue + + while(token(i) && token(i) != ")") + + arguments[++arguments.len] = temp_expression_list // The code this is copy pasted from won't be executed when it's the last param, this fixes that. + else + i++ + else + parse_error("Expected a function but found nothing") + return i + 1 + + +//expression: ( unary_expression | '(' expression ')' | value ) [binary_operator expression] +/datum/SDQL_parser/proc/expression(i, list/node) + + if(token(i) in unary_operators) + i = unary_expression(i, node) + + else if(token(i) == "(") + var/list/expr = list() + + i = expression(i + 1, expr) + + if(token(i) != ")") + parse_error("Missing ) at end of expression.") + + else + i++ + + node[++node.len] = expr + + else + i = value(i, node) + + if(token(i) in binary_operators) + i = binary_operator(i, node) + i = expression(i, node) + + else if(token(i) in comparitors) + i = binary_operator(i, node) + + var/list/rhs = list() + i = expression(i, rhs) + + node[++node.len] = rhs + + + return i + + +//unary_expression: unary_operator ( unary_expression | value | '(' expression ')' ) +/datum/SDQL_parser/proc/unary_expression(i, list/node) + + if(token(i) in unary_operators) + var/list/unary_exp = list() + + unary_exp += token(i) + i++ + + if(token(i) in unary_operators) + i = unary_expression(i, unary_exp) + + else if(token(i) == "(") + var/list/expr = list() + + i = expression(i + 1, expr) + + if(token(i) != ")") + parse_error("Missing ) at end of expression.") + + else + i++ + + unary_exp[++unary_exp.len] = expr + + else + i = value(i, unary_exp) + + node[++node.len] = unary_exp + + + else + parse_error("Expected unary operator but found '[token(i)]'") + + return i + + +//binary_operator: comparitor | '+' | '-' | '/' | '*' | '&' | '|' | '^' | '%' +/datum/SDQL_parser/proc/binary_operator(i, list/node) + + if(token(i) in (binary_operators + comparitors)) + node += token(i) + + else + parse_error("Unknown binary operator [token(i)]") + + return i + 1 + + +//value: variable | string | number | 'null' | object_type +/datum/SDQL_parser/proc/value(i, list/node) + if(token(i) == "null") + node += "null" + i++ + + else if(lowertext(copytext(token(i), 1, 3)) == "0x" && isnum(hex2num(copytext(token(i), 3)))) + node += hex2num(copytext(token(i), 3)) + i++ + + else if(isnum(text2num(token(i)))) + node += text2num(token(i)) + i++ + + else if(copytext(token(i), 1, 2) in list("'", "\"")) + i = string(i, node) + + else if(copytext(token(i), 1, 2) == "\[") // Start a list. + i = array(i, node) + else if(copytext(token(i), 1, 2) == "/") + i = object_type(i, node) + else + i = variable(i, node) + + return i \ No newline at end of file diff --git a/code/modules/admin/verbs/SDQL2/SDQL_2_wrappers.dm b/code/modules/admin/verbs/SDQL2/SDQL_2_wrappers.dm new file mode 100644 index 0000000000..efca1ea17e --- /dev/null +++ b/code/modules/admin/verbs/SDQL2/SDQL_2_wrappers.dm @@ -0,0 +1,215 @@ +// Wrappers for BYOND default procs which can't directly be called by call(). + +/proc/_abs(A) + return abs(A) + +/proc/_animate(atom/A, set_vars, time = 10, loop = 1, easing = LINEAR_EASING, flags = null) + var/mutable_appearance/MA = new() + for(var/v in set_vars) + MA.vars[v] = set_vars[v] + animate(A, appearance = MA, time, loop, easing, flags) + +/proc/_acrccos(A) + return arccos(A) + +/proc/_arcsin(A) + return arcsin(A) + +/proc/_ascii2text(A) + return ascii2text(A) + +/proc/_block(Start, End) + return block(Start, End) + +/proc/_ckey(Key) + return ckey(Key) + +/proc/_ckeyEx(Key) + return ckeyEx(Key) + +/proc/_copytext(T, Start = 1, End = 0) + return copytext(T, Start, End) + +/proc/_cos(X) + return cos(X) + +/proc/_get_dir(Loc1, Loc2) + return get_dir(Loc1, Loc2) + +/proc/_get_dist(Loc1, Loc2) + return get_dist(Loc1, Loc2) + +/proc/_get_step(Ref, Dir) + return get_step(Ref, Dir) + +/proc/_hearers(Depth = world.view, Center = usr) + return hearers(Depth, Center) + +/proc/_image(icon, loc, icon_state, layer, dir) + return image(icon, loc, icon_state, layer, dir) + +/proc/_istype(object, type) + return istype(object, type) + +/proc/_ispath(path, type) + return ispath(path, type) + +/proc/_length(E) + return length(E) + +/proc/_link(thing, url) + thing << link(url) + +/proc/_locate(X, Y, Z) + if (isnull(Y)) // Assuming that it's only a single-argument call. + return locate(X) + + return locate(X, Y, Z) + +/proc/_log(X, Y) + return log(X, Y) + +/proc/_lowertext(T) + return lowertext(T) + +/proc/_matrix(a, b, c, d, e, f) + return matrix(a, b, c, d, e, f) + +/proc/_max(...) + return max(arglist(args)) + +/proc/_md5(T) + return md5(T) + +/proc/_min(...) + return min(arglist(args)) + +/proc/_new(type, arguments) + return new type (arglist(arguments)) + +/proc/_num2text(N, SigFig = 6) + return num2text(N, SigFig) + +/proc/_ohearers(Dist, Center = usr) + return ohearers(Dist, Center) + +/proc/_orange(Dist, Center = usr) + return orange(Dist, Center) + +/proc/_output(thing, msg, control) + thing << output(msg, control) + +/proc/_oview(Dist, Center = usr) + return oview(Dist, Center) + +/proc/_oviewers(Dist, Center = usr) + return oviewers(Dist, Center) + +/proc/_params2list(Params) + return params2list(Params) + +/proc/_pick(...) + return pick(arglist(args)) + +/proc/_prob(P) + return prob(P) + +/proc/_rand(L = 0, H = 1) + return rand(L, H) + +/proc/_range(Dist, Center = usr) + return range(Dist, Center) + +/proc/_regex(pattern, flags) + return regex(pattern, flags) + +/proc/_REGEX_QUOTE(text) + return REGEX_QUOTE(text) + +/proc/_REGEX_QUOTE_REPLACEMENT(text) + return REGEX_QUOTE_REPLACEMENT(text) + +/proc/_replacetext(Haystack, Needle, Replacement, Start = 1,End = 0) + return replacetext(Haystack, Needle, Replacement, Start, End) + +/proc/_replacetextEx(Haystack, Needle, Replacement, Start = 1,End = 0) + return replacetextEx(Haystack, Needle, Replacement, Start, End) + +/proc/_rgb(R, G, B) + return rgb(R, G, B) + +/proc/_rgba(R, G, B, A) + return rgb(R, G, B, A) + +/proc/_roll(dice) + return roll(dice) + +/proc/_round(A, B = 1) + return round(A, B) + +/proc/_sin(X) + return sin(X) + +/proc/_list_add(list/L, ...) + if (args.len < 2) + return + L += args.Copy(2) + +/proc/_list_copy(list/L, Start = 1, End = 0) + return L.Copy(Start, End) + +/proc/_list_cut(list/L, Start = 1, End = 0) + L.Cut(Start, End) + +/proc/_list_find(list/L, Elem, Start = 1, End = 0) + return L.Find(Elem, Start, End) + +/proc/_list_insert(list/L, Index, Item) + return L.Insert(Index, Item) + +/proc/_list_join(list/L, Glue, Start = 0, End = 1) + return L.Join(Glue, Start, End) + +/proc/_list_remove(list/L, ...) + if (args.len < 2) + return + L -= args.Copy(2) + +/proc/_list_set(list/L, key, value) + L[key] = value + +/proc/_list_numerical_add(L, key, num) + L[key] += num + +/proc/_list_swap(list/L, Index1, Index2) + L.Swap(Index1, Index2) + +/proc/_walk(ref, dir, lag) + walk(ref, dir, lag) + +/proc/_walk_towards(ref, trg, lag) + walk_towards(ref, trg, lag) + +/proc/_walk_to(ref, trg, min, lag) + walk_to(ref, trg, min, lag) + +/proc/_walk_away(ref, trg, max, lag) + walk_away(ref, trg, max, lag) + +/proc/_walk_rand(ref, lag) + walk_rand(ref, lag) + +/proc/_step(ref, dir) + step(ref, dir) + +/proc/_step_rand(ref) + step_rand(ref) + +/proc/_step_to(ref, trg, min) + step_to(ref, trg, min) + +/proc/_step_towards(ref, trg) + step_towards(ref, trg) + +/proc/_step_away(ref, trg, max) + step_away(ref, trg, max) diff --git a/code/modules/admin/verbs/SDQL_2.dm b/code/modules/admin/verbs/SDQL_2.dm deleted file mode 100644 index aa138e62ea..0000000000 --- a/code/modules/admin/verbs/SDQL_2.dm +++ /dev/null @@ -1,426 +0,0 @@ - - -/client/proc/SDQL2_query(query_text as message) - set category = "Admin" - if(!check_rights(R_DEBUG)) //Shouldn't happen... but just to be safe. - message_admins("ERROR: Non-admin [usr.key] attempted to execute a SDQL query!") - log_admin("Non-admin [usr.key] attempted to execute a SDQL query!") - - if(!query_text || length(query_text) < 1) - return - - //world << query_text - - var/list/query_list = SDQL2_tokenize(query_text) - - if(!query_list || query_list.len < 1) - return - - var/list/query_tree = SDQL_parse(query_list) - - if(query_tree.len < 1) - return - - var/list/from_objs = list() - var/list/select_types = list() - - switch(query_tree[1]) - if("explain") - SDQL_testout(query_tree["explain"]) - return - - if("call") - if("on" in query_tree) - select_types = query_tree["on"] - else - return - - if("select", "delete", "update") - select_types = query_tree[query_tree[1]] - - from_objs = SDQL_from_objs(query_tree["from"]) - - var/list/objs = list() - - for(var/type in select_types) - var/char = copytext(type, 1, 2) - - if(char == "/" || char == "*") - for(var/from in from_objs) - objs += SDQL_get_all(type, from) - - else if(char == "'" || char == "\"") - objs += locate(copytext(type, 2, length(type))) - - if("where" in query_tree) - var/objs_temp = objs - objs = list() - for(var/datum/d in objs_temp) - if(SDQL_expression(d, query_tree["where"])) - objs += d - - //usr << "Query: [query_text]" - message_admins("[usr] executed SDQL query: \"[query_text]\".") - - switch(query_tree[1]) - if("delete") - for(var/datum/d in objs) - qdel(d) - - if("select") - var/text = "" - for(var/datum/t in objs) - if(istype(t, /atom)) - var/atom/a = t - - if(a.x) - text += "\ref[t]: [t] at ([a.x], [a.y], [a.z])
" - - else if(a.loc && a.loc.x) - text += "\ref[t]: [t] in [a.loc] at ([a.loc.x], [a.loc.y], [a.loc.z])
" - - else - text += "\ref[t]: [t]
" - - else - text += "\ref[t]: [t]
" - - usr << browse(text, "window=SDQL-result") - - if("update") - if("set" in query_tree) - var/list/set_list = query_tree["set"] - for(var/datum/d in objs) - var/list/vals = list() - for(var/v in set_list) - if(v in d.vars) - vals += v - vals[v] = SDQL_expression(d, set_list[v]) - - if(istype(d, /turf)) - for(var/v in vals) - if(v == "x" || v == "y" || v == "z") - continue - - d.vars[v] = vals[v] - - else - for(var/v in vals) - d.vars[v] = vals[v] - - - - - -/proc/SDQL_parse(list/query_list) - var/datum/SDQL_parser/parser = new(query_list) - var/list/query_tree = parser.parse() - - qdel(parser) - - return query_tree - - - -/proc/SDQL_testout(list/query_tree, indent = 0) - var/spaces = "" - for(var/s = 0, s < indent, s++) - spaces += " " - - for(var/item in query_tree) - if(istype(item, /list)) - world << "[spaces](" - SDQL_testout(item, indent + 1) - world << "[spaces])" - - else - world << "[spaces][item]" - - if(!isnum(item) && query_tree[item]) - - if(istype(query_tree[item], /list)) - world << "[spaces] (" - SDQL_testout(query_tree[item], indent + 2) - world << "[spaces] )" - - else - world << "[spaces] [query_tree[item]]" - - - -/proc/SDQL_from_objs(list/tree) - if("world" in tree) - return list(world) - - var/list/out = list() - - for(var/type in tree) - var/char = copytext(type, 1, 2) - - if(char == "/") - out += SDQL_get_all(type, world) - - else if(char == "'" || char == "\"") - out += locate(copytext(type, 2, length(type))) - - return out - - -/proc/SDQL_get_all(type, location) - var/list/out = list() - - if(type == "*") - for(var/datum/d in location) - out += d - - return out - - type = text2path(type) - - if(ispath(type, /mob)) - for(var/mob/d in location) - if(istype(d, type)) - out += d - - else if(ispath(type, /turf)) - for(var/turf/d in location) - if(istype(d, type)) - out += d - - else if(ispath(type, /obj)) - for(var/obj/d in location) - if(istype(d, type)) - out += d - - else if(ispath(type, /area)) - for(var/area/d in location) - if(istype(d, type)) - out += d - - else if(ispath(type, /atom)) - for(var/atom/d in location) - if(istype(d, type)) - out += d - - else - for(var/datum/d in location) - if(istype(d, type)) - out += d - - return out - - -/proc/SDQL_expression(datum/object, list/expression, start = 1) - var/result = 0 - var/val - - for(var/i = start, i <= expression.len, i++) - var/op = "" - - if(i > start) - op = expression[i] - i++ - - var/list/ret = SDQL_value(object, expression, i) - val = ret["val"] - i = ret["i"] - - if(op != "") - switch(op) - if("+") - result += val - if("-") - result -= val - if("*") - result *= val - if("/") - result /= val - if("&") - result &= val - if("|") - result |= val - if("^") - result ^= val - if("=", "==") - result = (result == val) - if("!=", "<>") - result = (result != val) - if("<") - result = (result < val) - if("<=") - result = (result <= val) - if(">") - result = (result > val) - if(">=") - result = (result >= val) - if("and", "&&") - result = (result && val) - if("or", "||") - result = (result || val) - else - usr << "SDQL2: Unknown op [op]" - result = null - else - result = val - - return result - -/proc/SDQL_value(datum/object, list/expression, start = 1) - var/i = start - var/val = null - - if(i > expression.len) - return list("val" = null, "i" = i) - - if(istype(expression[i], /list)) - val = SDQL_expression(object, expression[i]) - - else if(expression[i] == "!") - var/list/ret = SDQL_value(object, expression, i + 1) - val = !ret["val"] - i = ret["i"] - - else if(expression[i] == "~") - var/list/ret = SDQL_value(object, expression, i + 1) - val = ~ret["val"] - i = ret["i"] - - else if(expression[i] == "-") - var/list/ret = SDQL_value(object, expression, i + 1) - val = -ret["val"] - i = ret["i"] - - else if(expression[i] == "null") - val = null - - else if(isnum(expression[i])) - val = expression[i] - - else if(copytext(expression[i], 1, 2) in list("'", "\"")) - val = copytext(expression[i], 2, length(expression[i])) - - else - val = SDQL_var(object, expression, i) - i = expression.len - - return list("val" = val, "i" = i) - -/proc/SDQL_var(datum/object, list/expression, start = 1) - - if(expression[start] in object.vars) - - if(start < expression.len && expression[start + 1] == ".") - return SDQL_var(object.vars[expression[start]], expression[start + 2]) - - else - return object.vars[expression[start]] - - else - return null - -/proc/SDQL2_tokenize(query_text) - - var/list/whitespace = list(" ", "\n", "\t") - var/list/single = list("(", ")", ",", "+", "-", ".") - var/list/multi = list( - "=" = list("", "="), - "<" = list("", "=", ">"), - ">" = list("", "="), - "!" = list("", "=")) - - var/word = "" - var/list/query_list = list() - var/len = length(query_text) - - for(var/i = 1, i <= len, i++) - var/char = copytext(query_text, i, i + 1) - - if(char in whitespace) - if(word != "") - query_list += word - word = "" - - else if(char in single) - if(word != "") - query_list += word - word = "" - - query_list += char - - else if(char in multi) - if(word != "") - query_list += word - word = "" - - var/char2 = copytext(query_text, i + 1, i + 2) - - if(char2 in multi[char]) - query_list += "[char][char2]" - i++ - - else - query_list += char - - else if(char == "'") - if(word != "") - usr << "SDQL2: You have an error in your SDQL syntax, unexpected ' in query: \"[query_text]\" following \"[word]\". Please check your syntax, and try again." - return null - - word = "'" - - for(i++, i <= len, i++) - char = copytext(query_text, i, i + 1) - - if(char == "'") - if(copytext(query_text, i + 1, i + 2) == "'") - word += "'" - i++ - - else - break - - else - word += char - - if(i > len) - usr << "SDQL2: You have an error in your SDQL syntax, unmatched ' in query: \"[query_text]\". Please check your syntax, and try again." - return null - - query_list += "[word]'" - word = "" - - else if(char == "\"") - if(word != "") - usr << "SDQL2: You have an error in your SDQL syntax, unexpected \" in query: \"[query_text]\" following \"[word]\". Please check your syntax, and try again." - return null - - word = "\"" - - for(i++, i <= len, i++) - char = copytext(query_text, i, i + 1) - - if(char == "\"") - if(copytext(query_text, i + 1, i + 2) == "'") - word += "\"" - i++ - - else - break - - else - word += char - - if(i > len) - usr << "SDQL2: You have an error in your SDQL syntax, unmatched \" in query: \"[query_text]\". Please check your syntax, and try again." - return null - - query_list += "[word]\"" - word = "" - - else - word += char - - if(word != "") - query_list += word - - return query_list diff --git a/code/modules/admin/verbs/SDQL_2_parser.dm b/code/modules/admin/verbs/SDQL_2_parser.dm deleted file mode 100644 index b97d256584..0000000000 --- a/code/modules/admin/verbs/SDQL_2_parser.dm +++ /dev/null @@ -1,531 +0,0 @@ -//I'm pretty sure that this is a recursive [s]descent[/s] ascent parser. - - - -//Spec - -////////// -// -// query : select_query | delete_query | update_query | call_query | explain -// explain : 'EXPLAIN' query -// -// select_query : 'SELECT' select_list [('FROM' | 'IN') from_list] ['WHERE' bool_expression] -// delete_query : 'DELETE' select_list [('FROM' | 'IN') from_list] ['WHERE' bool_expression] -// update_query : 'UPDATE' select_list [('FROM' | 'IN') from_list] 'SET' assignments ['WHERE' bool_expression] -// call_query : 'CALL' call_function ['ON' select_list [('FROM' | 'IN') from_list] ['WHERE' bool_expression]] -// -// select_list : select_item [',' select_list] -// select_item : '*' | select_function | object_type -// select_function : count_function -// count_function : 'COUNT' '(' '*' ')' | 'COUNT' '(' object_types ')' -// -// from_list : from_item [',' from_list] -// from_item : 'world' | object_type -// -// call_function : ['(' [arguments] ')'] -// arguments : expression [',' arguments] -// -// object_type : | string -// -// assignments : assignment, [',' assignments] -// assignment : '=' expression -// variable : | '.' variable -// -// bool_expression : expression comparitor expression [bool_operator bool_expression] -// expression : ( unary_expression | '(' expression ')' | value ) [binary_operator expression] -// unary_expression : unary_operator ( unary_expression | value | '(' expression ')' ) -// comparitor : '=' | '==' | '!=' | '<>' | '<' | '<=' | '>' | '>=' -// value : variable | string | number | 'null' -// unary_operator : '!' | '-' | '~' -// binary_operator : comparitor | '+' | '-' | '/' | '*' | '&' | '|' | '^' -// bool_operator : 'AND' | '&&' | 'OR' | '||' -// -// string : ''' ''' | '"' '"' -// number : -// -////////// - -/datum/SDQL_parser - var/query_type - var/error = 0 - - var/list/query - var/list/tree - - var/list/select_functions = list("count") - var/list/boolean_operators = list("and", "or", "&&", "||") - var/list/unary_operators = list("!", "-", "~") - var/list/binary_operators = list("+", "-", "/", "*", "&", "|", "^") - var/list/comparitors = list("=", "==", "!=", "<>", "<", "<=", ">", ">=") - - - -/datum/SDQL_parser/New(query_list) - query = query_list - - - -/datum/SDQL_parser/proc/parse_error(error_message) - error = 1 - usr << "SQDL2 Parsing Error: [error_message]" - return query.len + 1 - -/datum/SDQL_parser/proc/parse() - tree = list() - query(1, tree) - - if(error) - return list() - else - return tree - -/datum/SDQL_parser/proc/token(i) - if(i <= query.len) - return query[i] - - else - return null - -/datum/SDQL_parser/proc/tokens(i, num) - if(i + num <= query.len) - return query.Copy(i, i + num) - - else - return null - -/datum/SDQL_parser/proc/tokenl(i) - return lowertext(token(i)) - - - -/datum/SDQL_parser/proc - -//query: select_query | delete_query | update_query - query(i, list/node) - query_type = tokenl(i) - - switch(query_type) - if("select") - select_query(i, node) - - if("delete") - delete_query(i, node) - - if("update") - update_query(i, node) - - if("call") - call_query(i, node) - - if("explain") - node += "explain" - node["explain"] = list() - query(i + 1, node["explain"]) - - -// select_query: 'SELECT' select_list [('FROM' | 'IN') from_list] ['WHERE' bool_expression] - select_query(i, list/node) - var/list/select = list() - i = select_list(i + 1, select) - - node += "select" - node["select"] = select - - var/list/from = list() - if(tokenl(i) in list("from", "in")) - i = from_list(i + 1, from) - else - from += "world" - - node += "from" - node["from"] = from - - if(tokenl(i) == "where") - var/list/where = list() - i = bool_expression(i + 1, where) - - node += "where" - node["where"] = where - - return i - - -//delete_query: 'DELETE' select_list [('FROM' | 'IN') from_list] ['WHERE' bool_expression] - delete_query(i, list/node) - var/list/select = list() - i = select_list(i + 1, select) - - node += "delete" - node["delete"] = select - - var/list/from = list() - if(tokenl(i) in list("from", "in")) - i = from_list(i + 1, from) - else - from += "world" - - node += "from" - node["from"] = from - - if(tokenl(i) == "where") - var/list/where = list() - i = bool_expression(i + 1, where) - - node += "where" - node["where"] = where - - return i - - -//update_query: 'UPDATE' select_list [('FROM' | 'IN') from_list] 'SET' assignments ['WHERE' bool_expression] - update_query(i, list/node) - var/list/select = list() - i = select_list(i + 1, select) - - node += "update" - node["update"] = select - - var/list/from = list() - if(tokenl(i) in list("from", "in")) - i = from_list(i + 1, from) - else - from += "world" - - node += "from" - node["from"] = from - - if(tokenl(i) != "set") - i = parse_error("UPDATE has misplaced SET") - - var/list/set_assignments = list() - i = assignments(i + 1, set_assignments) - - node += "set" - node["set"] = set_assignments - - if(tokenl(i) == "where") - var/list/where = list() - i = bool_expression(i + 1, where) - - node += "where" - node["where"] = where - - return i - - -//call_query: 'CALL' call_function ['ON' select_list [('FROM' | 'IN') from_list] ['WHERE' bool_expression]] - call_query(i, list/node) - var/list/func = list() - i = call_function(i + 1, func) - - node += "call" - node["call"] = func - - if(tokenl(i) != "on") - return i - - var/list/select = list() - i = select_list(i + 1, select) - - node += "on" - node["on"] = select - - var/list/from = list() - if(tokenl(i) in list("from", "in")) - i = from_list(i + 1, from) - else - from += "world" - - node += "from" - node["from"] = from - - if(tokenl(i) == "where") - var/list/where = list() - i = bool_expression(i + 1, where) - - node += "where" - node["where"] = where - - return i - - -//select_list: select_item [',' select_list] - select_list(i, list/node) - i = select_item(i, node) - - if(token(i) == ",") - i = select_list(i + 1, node) - - return i - - -//from_list: from_item [',' from_list] - from_list(i, list/node) - i = from_item(i, node) - - if(token(i) == ",") - i = from_list(i + 1, node) - - return i - - -//assignments: assignment, [',' assignments] - assignments(i, list/node) - i = assignment(i, node) - - if(token(i) == ",") - i = assignments(i + 1, node) - - return i - - -//select_item: '*' | select_function | object_type - select_item(i, list/node) - - if(token(i) == "*") - node += "*" - i++ - - else if(tokenl(i) in select_functions) - i = select_function(i, node) - - else - i = object_type(i, node) - - return i - - -//from_item: 'world' | object_type - from_item(i, list/node) - - if(token(i) == "world") - node += "world" - i++ - - else - i = object_type(i, node) - - return i - - -//bool_expression: expression [bool_operator bool_expression] - bool_expression(i, list/node) - - var/list/bool = list() - i = expression(i, bool) - - node[++node.len] = bool - - if(tokenl(i) in boolean_operators) - i = bool_operator(i, node) - i = bool_expression(i, node) - - return i - - -//assignment: '=' expression - assignment(i, list/node) - - node += token(i) - - if(token(i + 1) == "=") - var/varname = token(i) - node[varname] = list() - - i = expression(i + 2, node[varname]) - - else - parse_error("Assignment expected, but no = found") - - return i - - -//variable: | '.' variable - variable(i, list/node) - var/list/L = list(token(i)) - node[++node.len] = L - - if(token(i + 1) == ".") - L += "." - i = variable(i + 2, L) - - else - i++ - - return i - - -//object_type: | string - object_type(i, list/node) - - if(copytext(token(i), 1, 2) == "/") - node += token(i) - - else - i = string(i, node) - - return i + 1 - - -//comparitor: '=' | '==' | '!=' | '<>' | '<' | '<=' | '>' | '>=' - comparitor(i, list/node) - - if(token(i) in list("=", "==", "!=", "<>", "<", "<=", ">", ">=")) - node += token(i) - - else - parse_error("Unknown comparitor [token(i)]") - - return i + 1 - - -//bool_operator: 'AND' | '&&' | 'OR' | '||' - bool_operator(i, list/node) - - if(tokenl(i) in list("and", "or", "&&", "||")) - node += token(i) - - else - parse_error("Unknown comparitor [token(i)]") - - return i + 1 - - -//string: ''' ''' | '"' '"' - string(i, list/node) - - if(copytext(token(i), 1, 2) in list("'", "\"")) - node += token(i) - - else - parse_error("Expected string but found '[token(i)]'") - - return i + 1 - - -//call_function: ['(' [arguments] ')'] - call_function(i, list/node) - - parse_error("Sorry, function calls aren't available yet") - - return i - - -//select_function: count_function - select_function(i, list/node) - - parse_error("Sorry, function calls aren't available yet") - - return i - - -//expression: ( unary_expression | '(' expression ')' | value ) [binary_operator expression] - expression(i, list/node) - - if(token(i) in unary_operators) - i = unary_expression(i, node) - - else if(token(i) == "(") - var/list/expr = list() - - i = expression(i + 1, expr) - - if(token(i) != ")") - parse_error("Missing ) at end of expression.") - - else - i++ - - node[++node.len] = expr - - else - i = value(i, node) - - if(token(i) in binary_operators) - i = binary_operator(i, node) - i = expression(i, node) - - else if(token(i) in comparitors) - i = binary_operator(i, node) - - var/list/rhs = list() - i = expression(i, rhs) - - node[++node.len] = rhs - - - return i - - -//unary_expression: unary_operator ( unary_expression | value | '(' expression ')' ) - unary_expression(i, list/node) - - if(token(i) in unary_operators) - var/list/unary_exp = list() - - unary_exp += token(i) - i++ - - if(token(i) in unary_operators) - i = unary_expression(i, unary_exp) - - else if(token(i) == "(") - var/list/expr = list() - - i = expression(i + 1, expr) - - if(token(i) != ")") - parse_error("Missing ) at end of expression.") - - else - i++ - - unary_exp[++unary_exp.len] = expr - - else - i = value(i, unary_exp) - - node[++node.len] = unary_exp - - - else - parse_error("Expected unary operator but found '[token(i)]'") - - return i - - -//binary_operator: comparitor | '+' | '-' | '/' | '*' | '&' | '|' | '^' - binary_operator(i, list/node) - - if(token(i) in (binary_operators + comparitors)) - node += token(i) - - else - parse_error("Unknown binary operator [token(i)]") - - return i + 1 - - -//value: variable | string | number | 'null' - value(i, list/node) - - if(token(i) == "null") - node += "null" - i++ - - else if(isnum(text2num(token(i)))) - node += text2num(token(i)) - i++ - - else if(copytext(token(i), 1, 2) in list("'", "\"")) - i = string(i, node) - - else - i = variable(i, node) - - return i - - - - -/*EXPLAIN SELECT * WHERE 42 = 6 * 9 OR val = - 5 == 7*/ \ No newline at end of file diff --git a/code/modules/admin/verbs/adminhelp.dm b/code/modules/admin/verbs/adminhelp.dm index 391fc638db..e4c017f84f 100644 --- a/code/modules/admin/verbs/adminhelp.dm +++ b/code/modules/admin/verbs/adminhelp.dm @@ -349,8 +349,8 @@ GLOBAL_DATUM_INIT(ahelp_tickets, /datum/admin_help_tickets, new) return var/msg = "- AdminHelp marked as IC issue! -
" - msg += "This is something that can be solved ICly, and does not currently require admin intervention.
" //VOREStation Edit - msg += "Your AdminHelp may also be unable to be answered due to ongoing events." //VOREStation Edit + msg += "This is something that can be solved ICly, and does not currently require staff intervention.
" + msg += "Your AdminHelp may also be unanswerable due to ongoing events." if(initiator) to_chat(initiator, msg) diff --git a/code/modules/admin/verbs/buildmode.dm b/code/modules/admin/verbs/buildmode.dm index a57b17d15f..4cfa952b67 100644 --- a/code/modules/admin/verbs/buildmode.dm +++ b/code/modules/admin/verbs/buildmode.dm @@ -127,6 +127,18 @@ usr << "Right Mouse Button on turf/obj/mob = Reset glowing" usr << "Right Mouse Button on buildmode button = Change glow properties" usr << "***********************************************************" + if(9) // Control mobs with ai_holders. + usr << "***********************************************************" + usr << "Left Mouse Button on AI mob = Select/Deselect mob" + usr << "Left Mouse Button + alt on AI mob = Toggle hostility on mob" + usr << "Left Mouse Button + ctrl on AI mob = Reset target/following/movement" + usr << "Right Mouse Button on enemy mob = Command selected mobs to attack mob" + usr << "Right Mouse Button on allied mob = Command selected mobs to follow mob" + usr << "Right Mouse Button + shift on any mob = Command selected mobs to follow mob regardless of faction" + usr << "Right Mouse Button on tile = Command selected mobs to move to tile (will cancel if enemies are seen)" + usr << "Right Mouse Button + shift on tile = Command selected mobs to reposition to tile (will not be inturrupted by enemies)" + usr << "Right Mouse Button + alt on obj/turfs = Command selected mobs to attack obj/turf" + usr << "***********************************************************" return 1 /obj/effect/bmode/buildquit @@ -146,6 +158,7 @@ var/obj/effect/bmode/buildmode/buildmode = null var/obj/effect/bmode/buildquit/buildquit = null var/atom/movable/throw_atom = null + var/list/selected_mobs = list() /obj/effect/bmode/buildholder/Destroy() qdel(builddir) @@ -157,9 +170,21 @@ qdel(buildquit) buildquit = null throw_atom = null + for(var/mob/living/unit in selected_mobs) + deselect_AI_mob(cl, unit) + selected_mobs.Cut() cl = null return ..() +/obj/effect/bmode/buildholder/proc/select_AI_mob(client/C, mob/living/unit) + selected_mobs += unit + C.images += unit.selected_image + +/obj/effect/bmode/buildholder/proc/deselect_AI_mob(client/C, mob/living/unit) + selected_mobs -= unit + C.images -= unit.selected_image + + /obj/effect/bmode/buildmode icon_state = "buildmode1" screen_loc = "NORTH,WEST+2" @@ -210,6 +235,9 @@ master.cl.buildmode = 8 src.icon_state = "buildmode8" if(8) + master.cl.buildmode = 9 + src.icon_state = "buildmode9" + if(9) master.cl.buildmode = 1 src.icon_state = "buildmode1" @@ -416,6 +444,86 @@ if(pa.Find("right")) if(object) object.set_light(0, 0, "#FFFFFF") + if(9) // AI control + if(pa.Find("left")) + if(isliving(object)) + var/mob/living/L = object + // Reset processes. + if(pa.Find("ctrl")) + if(!isnull(L.get_AI_stance())) // Null means there's no AI datum or it has one but is player controlled w/o autopilot on. + var/datum/ai_holder/AI = L.ai_holder + AI.forget_everything() + to_chat(user, span("notice", "\The [L]'s AI has forgotten its target/movement destination/leader.")) + else + to_chat(user, span("warning", "\The [L] is not AI controlled.")) + return + + // Toggle hostility + if(pa.Find("alt")) + if(!isnull(L.get_AI_stance())) + var/datum/ai_holder/AI = L.ai_holder + AI.hostile = !AI.hostile + to_chat(user, span("notice", "\The [L] is now [AI.hostile ? "hostile" : "passive"].")) + else + to_chat(user, span("warning", "\The [L] is not AI controlled.")) + return + + // Select/Deselect + if(!isnull(L.get_AI_stance())) + if(L in holder.selected_mobs) + holder.deselect_AI_mob(user.client, L) + to_chat(user, span("notice", "Deselected \the [L].")) + else + holder.select_AI_mob(user.client, L) + to_chat(user, span("notice", "Selected \the [L].")) + else + to_chat(user, span("warning", "\The [L] is not AI controlled.")) + + if(pa.Find("right")) + if(istype(object, /atom)) // Force attack. + var/atom/A = object + + if(pa.Find("alt")) + var/i = 0 + for(var/mob/living/unit in holder.selected_mobs) + var/datum/ai_holder/AI = unit.ai_holder + AI.give_target(A) + i++ + to_chat(user, span("notice", "Commanded [i] mob\s to attack \the [A].")) + return + + if(isliving(object)) // Follow or attack. + var/mob/living/L = object + var/i = 0 // Attacking mobs. + var/j = 0 // Following mobs. + for(var/mob/living/unit in holder.selected_mobs) + var/datum/ai_holder/AI = unit.ai_holder + if(L.IIsAlly(unit) || !AI.hostile || pa.Find("shift")) + AI.set_follow(L) + j++ + else + AI.give_target(L) + i++ + var/message = "Commanded " + if(i) + message += "[i] mob\s to attack \the [L]" + if(j) + message += ", and " + else + message += "." + if(j) + message += "[j] mob\s to follow \the [L]." + to_chat(user, span("notice", message)) + + if(isturf(object)) // Move or reposition. + var/turf/T = object + var/i = 0 + for(var/mob/living/unit in holder.selected_mobs) + var/datum/ai_holder/AI = unit.ai_holder + AI.give_destination(T, 1, pa.Find("shift")) // If shift is held, the mobs will not stop moving to attack a visible enemy. + i++ + to_chat(user, span("notice", "Commanded [i] mob\s to move to \the [T].")) + /obj/effect/bmode/buildmode/proc/get_path_from_partial_text(default_path) var/desired_path = input("Enter full or partial typepath.","Typepath","[default_path]") diff --git a/code/modules/admin/verbs/debug.dm b/code/modules/admin/verbs/debug.dm index 482c9d8360..321655bb15 100644 --- a/code/modules/admin/verbs/debug.dm +++ b/code/modules/admin/verbs/debug.dm @@ -592,7 +592,7 @@ if("Dead Mobs") usr << jointext(dead_mob_list,",") if("Clients") - usr << jointext(clients,",") + usr << jointext(GLOB.clients,",") /client/proc/cmd_debug_using_map() set category = "Debug" diff --git a/code/modules/admin/verbs/getlogs.dm b/code/modules/admin/verbs/getlogs.dm index 3f6e4c9e74..9e9ad67027 100644 --- a/code/modules/admin/verbs/getlogs.dm +++ b/code/modules/admin/verbs/getlogs.dm @@ -27,7 +27,7 @@ src << "Only Admins may use this command." return - var/client/target = input(src,"Choose somebody to grant access to the server's runtime logs (permissions expire at the end of each round):","Grant Permissions",null) as null|anything in clients + var/client/target = input(src,"Choose somebody to grant access to the server's runtime logs (permissions expire at the end of each round):","Grant Permissions",null) as null|anything in GLOB.clients if(!istype(target,/client)) src << "Error: giveruntimelog(): Client not found." return @@ -99,7 +99,7 @@ set category = "Admin" set name = "Show Server Attack Log" set desc = "Shows today's server attack log." - + to_chat(usr,"This verb doesn't actually do anything.") /* @@ -113,4 +113,3 @@ feedback_add_details("admin_verb","SSAL") //If you are copy-pasting this, ensure the 2nd parameter is unique to the new proc! return */ - \ No newline at end of file diff --git a/code/modules/admin/verbs/lightning_strike.dm b/code/modules/admin/verbs/lightning_strike.dm index 16cb6b06dd..6adb122d4a 100644 --- a/code/modules/admin/verbs/lightning_strike.dm +++ b/code/modules/admin/verbs/lightning_strike.dm @@ -1,115 +1,99 @@ -/client/proc/admin_lightning_strike() - set name = "Lightning Strike" - set desc = "Causes lightning to strike on your tile. This will hurt things on or nearby it severely." - set category = "Fun" - - if(!check_rights(R_FUN)) - return - - var/result = alert(src, "Really strike your tile with lightning?", "Confirm Badmin" , "No", "Yes (Cosmetic)", "Yes (Real)") - - if(result == "No") - return - var/fake_lightning = result == "Yes (Cosmetic)" - - lightning_strike(get_turf(usr), fake_lightning) - log_and_message_admins("[key_name(src)] has caused [fake_lightning ? "cosmetic":"harmful"] lightning to strike at their position ([src.mob.x], [src.mob.y], [src.mob.z]). \ - (JMP)") - -#define LIGHTNING_REDIRECT_RANGE 28 // How far in tiles certain things draw lightning from. -#define LIGHTNING_ZAP_RANGE 3 // How far the tesla effect zaps, as well as the bad effects from a direct strike. -#define LIGHTNING_POWER 20000 // How much 'zap' is in a strike, used for tesla_zap(). - -// The real lightning proc. -// This is global until I can figure out a better place for it. -// T is the turf that is being struck. If cosmetic is true, the lightning won't actually hurt anything. -/proc/lightning_strike(turf/T, cosmetic = FALSE) - // First, visuals. - - // Do a lightning flash for the whole planet, if the turf belongs to a planet. - var/datum/planet/P = null - P = SSplanets.z_to_planet[T.z] - if(P) - var/datum/weather_holder/holder = P.weather_holder - flick("lightning_flash", holder.special_visuals) - - // Before we do the other visuals, we need to see if something is going to hijack our intended target. - var/obj/machinery/power/grounding_rod/ground = null // Most of the bad effects of lightning will get negated if a grounding rod is nearby. - var/obj/machinery/power/tesla_coil/coil = null // However a tesla coil has higher priority and the strike will bounce. - - for(var/obj/machinery/power/thing in range(LIGHTNING_REDIRECT_RANGE, T)) - if(istype(thing, /obj/machinery/power/tesla_coil)) - var/turf/simulated/coil_turf = get_turf(thing) - if(istype(coil_turf) && thing.anchored && coil_turf.outdoors) - coil = thing - break - - if(istype(thing, /obj/machinery/power/grounding_rod)) - var/turf/simulated/rod_turf = get_turf(thing) - if(istype(rod_turf) && thing.anchored && rod_turf.outdoors) - ground = thing - - if(coil) // Coil gets highest priority. - T = coil.loc - else if(ground) - T = ground.loc - - // Now make the lightning strike sprite. It will fade and delete itself in a second. - new /obj/effect/temporary_effect/lightning_strike(T) - - // For those close up. - playsound(T, 'sound/effects/lightningbolt.ogg', 100, 1) - - // And for those far away. If the strike happens on a planet, everyone on the planet will hear it. - // Otherwise only those on the current z-level will hear it. - var/sound = get_sfx("thunder") - for(var/mob/M in player_list) - if((P && M.z in P.expected_z_levels) || M.z == T.z) - M.playsound_local(get_turf(M), soundin = sound, vol = 70, vary = FALSE, is_global = TRUE) - - if(cosmetic) // Everything beyond here involves potentially damaging things. If we don't want to do that, stop now. - return - - if(ground) // All is well. - ground.tesla_act(LIGHTNING_POWER, FALSE) - return - - else if(coil) // Otherwise lets bounce off the tesla coil. - coil.tesla_act(LIGHTNING_POWER, TRUE) - - else // Striking the turf directly. - tesla_zap(T, zap_range = LIGHTNING_ZAP_RANGE, power = LIGHTNING_POWER, explosive = FALSE, stun_mobs = TRUE) - - // Some extra effects. - // Some apply to those within zap range, others if they were a bit farther away. - for(var/mob/living/L in view(5, T)) - if(get_dist(L, T) <= LIGHTNING_ZAP_RANGE) // They probably got zapped. - // The actual damage/electrocution is handled by tesla_zap(). - L.Paralyse(5) - L.stuttering += 20 - L.make_jittery(20) - L.emp_act(1) - to_chat(L, span("critical", "You've been struck by lightning!")) - - // If a non-player simplemob was struck, inflict huge damage. - // If the damage is fatal, the SA is turned to ash. - if(istype(L, /mob/living/simple_animal) && !L.key) - var/mob/living/simple_animal/SA = L - SA.adjustFireLoss(200) - SA.updatehealth() - if(SA.health <= 0) // Might be best to check/give simple_mobs siemens when this gets ported to new mobs. - SA.visible_message(span("critical", "\The [SA] disintegrates into ash!")) - SA.ash() - continue // No point deafening something that wont exist. - - // Deafen them. - if(L.get_ear_protection() < 2) - L.AdjustSleeping(-100) - if(iscarbon(L)) - var/mob/living/carbon/C = L - C.ear_deaf += 10 - to_chat(L, span("danger", "Lightning struck nearby, and the thunderclap is deafening!")) - -#undef GROUNDING_ROD_RANGE -#undef LIGHTNING_ZAP_RANGE -#undef LIGHTNING_POWER \ No newline at end of file +/client/proc/admin_lightning_strike() + set name = "Lightning Strike" + set desc = "Causes lightning to strike on your tile. This will hurt things on or nearby it severely." + set category = "Fun" + + if(!check_rights(R_FUN)) + return + + var/result = alert(src, "Really strike your tile with lightning?", "Confirm Badmin" , "No", "Yes (Cosmetic)", "Yes (Real)") + + if(result == "No") + return + var/fake_lightning = result == "Yes (Cosmetic)" + + lightning_strike(get_turf(usr), fake_lightning) + log_and_message_admins("[key_name(src)] has caused [fake_lightning ? "cosmetic":"harmful"] lightning to strike at their position ([src.mob.x], [src.mob.y], [src.mob.z]). \ + (JMP)") + +#define LIGHTNING_REDIRECT_RANGE 28 // How far in tiles certain things draw lightning from. +#define LIGHTNING_ZAP_RANGE 3 // How far the tesla effect zaps, as well as the bad effects from a direct strike. +#define LIGHTNING_POWER 20000 // How much 'zap' is in a strike, used for tesla_zap(). + +// The real lightning proc. +// This is global until I can figure out a better place for it. +// T is the turf that is being struck. If cosmetic is true, the lightning won't actually hurt anything. +/proc/lightning_strike(turf/T, cosmetic = FALSE) + // First, visuals. + + // Do a lightning flash for the whole planet, if the turf belongs to a planet. + var/datum/planet/P = null + P = SSplanets.z_to_planet[T.z] + if(P) + var/datum/weather_holder/holder = P.weather_holder + flick("lightning_flash", holder.special_visuals) + + // Before we do the other visuals, we need to see if something is going to hijack our intended target. + var/obj/machinery/power/grounding_rod/ground = null // Most of the bad effects of lightning will get negated if a grounding rod is nearby. + var/obj/machinery/power/tesla_coil/coil = null // However a tesla coil has higher priority and the strike will bounce. + + for(var/obj/machinery/power/thing in range(LIGHTNING_REDIRECT_RANGE, T)) + if(istype(thing, /obj/machinery/power/tesla_coil)) + var/turf/simulated/coil_turf = get_turf(thing) + if(istype(coil_turf) && thing.anchored && coil_turf.outdoors) + coil = thing + break + + if(istype(thing, /obj/machinery/power/grounding_rod)) + var/turf/simulated/rod_turf = get_turf(thing) + if(istype(rod_turf) && thing.anchored && rod_turf.outdoors) + ground = thing + + if(coil) // Coil gets highest priority. + T = coil.loc + else if(ground) + T = ground.loc + + // Now make the lightning strike sprite. It will fade and delete itself in a second. + new /obj/effect/temporary_effect/lightning_strike(T) + + // For those close up. + playsound(T, 'sound/effects/lightningbolt.ogg', 100, 1) + + // And for those far away. If the strike happens on a planet, everyone on the planet will hear it. + // Otherwise only those on the current z-level will hear it. + var/sound = get_sfx("thunder") + for(var/mob/M in player_list) + if((P && M.z in P.expected_z_levels) || M.z == T.z) + M.playsound_local(get_turf(M), soundin = sound, vol = 70, vary = FALSE, is_global = TRUE) + + if(cosmetic) // Everything beyond here involves potentially damaging things. If we don't want to do that, stop now. + return + + if(ground) // All is well. + ground.tesla_act(LIGHTNING_POWER, FALSE) + return + + else if(coil) // Otherwise lets bounce off the tesla coil. + coil.tesla_act(LIGHTNING_POWER, TRUE) + + else // Striking the turf directly. + tesla_zap(T, zap_range = LIGHTNING_ZAP_RANGE, power = LIGHTNING_POWER, explosive = FALSE, stun_mobs = TRUE) + + // Some extra effects. + // Some apply to those within zap range, others if they were a bit farther away. + for(var/mob/living/L in view(5, T)) + if(get_dist(L, T) <= LIGHTNING_ZAP_RANGE) // They probably got zapped. + L.lightning_act() + + // Deafen them. + if(L.get_ear_protection() < 2) + L.AdjustSleeping(-100) + if(iscarbon(L)) + var/mob/living/carbon/C = L + C.ear_deaf += 10 + to_chat(L, span("danger", "Lightning struck nearby, and the thunderclap is deafening!")) + +#undef GROUNDING_ROD_RANGE +#undef LIGHTNING_ZAP_RANGE +#undef LIGHTNING_POWER diff --git a/code/modules/admin/verbs/map_template_loadverb.dm b/code/modules/admin/verbs/map_template_loadverb.dm index d0504e0223..aa525b8e12 100644 --- a/code/modules/admin/verbs/map_template_loadverb.dm +++ b/code/modules/admin/verbs/map_template_loadverb.dm @@ -5,15 +5,18 @@ var/datum/map_template/template - var/map = input(usr, "Choose a Map Template to place at your CURRENT LOCATION","Place Map Template") as null|anything in map_templates + var/map = input(usr, "Choose a Map Template to place at your CURRENT LOCATION","Place Map Template") as null|anything in SSmapping.map_templates if(!map) return - template = map_templates[map] + template = SSmapping.map_templates[map] var/orientation = text2dir(input(usr, "Choose an orientation for this Map Template.", "Orientation") as null|anything in list("North", "South", "East", "West")) if(!orientation) return + // Convert dir to degrees rotation + orientation = dir2angle(orientation) + var/turf/T = get_turf(mob) if(!T) return @@ -41,16 +44,19 @@ var/datum/map_template/template - var/map = input(usr, "Choose a Map Template to place on a new Z-level.","Place Map Template") as null|anything in map_templates + var/map = input(usr, "Choose a Map Template to place on a new Z-level.","Place Map Template") as null|anything in SSmapping.map_templates if(!map) return - template = map_templates[map] + template = SSmapping.map_templates[map] var/orientation = text2dir(input(usr, "Choose an orientation for this Map Template.", "Orientation") as null|anything in list("North", "South", "East", "West")) if(!orientation) return - if(((orientation & (NORTH|SOUTH) && template.width > world.maxx || template.height > world.maxy) || ((orientation & (EAST|WEST)) && template.width > world.maxy || template.height > world.maxx))) + // Convert dir to degrees rotation + orientation = dir2angle(orientation) + + if((!(orientation%180) && template.width > world.maxx || template.height > world.maxy) || (orientation%180 && template.width > world.maxy || template.height > world.maxx)) if(alert(usr,"This template is larger than the existing z-levels. It will EXPAND ALL Z-LEVELS to match the size of the template. This may cause chaos. Are you sure you want to do this?","DANGER!!!","Cancel","Yes") == "Cancel") to_chat(usr,"Template placement aborted.") return @@ -76,7 +82,7 @@ var/datum/map_template/M = new(map, "[map]") if(M.preload_size(map)) to_chat(usr, "Map template '[map]' ready to place ([M.width]x[M.height])") - map_templates[M.name] = M + SSmapping.map_templates[M.name] = M message_admins("[key_name_admin(usr)] has uploaded a map template ([map])") else to_chat(usr, "Map template '[map]' failed to load properly") diff --git a/code/modules/admin/verbs/massmodvar.dm b/code/modules/admin/verbs/massmodvar.dm deleted file mode 100644 index 09178d650e..0000000000 --- a/code/modules/admin/verbs/massmodvar.dm +++ /dev/null @@ -1,375 +0,0 @@ -/client/proc/cmd_mass_modify_object_variables(atom/A, var/var_name) - set category = "Debug" - set name = "Mass Edit Variables" - set desc="(target) Edit all instances of a target item's variables" - - var/method = 0 //0 means strict type detection while 1 means this type and all subtypes (IE: /obj/item with this set to 1 will set it to ALL itms) - - if(!check_rights(R_VAREDIT)) return - - if(A && A.type) - if(typesof(A.type)) - switch(input("Strict object type detection?") as null|anything in list("Strictly this type","This type and subtypes", "Cancel")) - if("Strictly this type") - method = 0 - if("This type and subtypes") - method = 1 - if("Cancel") - return - if(null) - return - - src.massmodify_variables(A, var_name, method) - feedback_add_details("admin_verb","MEV") //If you are copy-pasting this, ensure the 2nd parameter is unique to the new proc! - - -/client/proc/massmodify_variables(var/atom/O, var/var_name = "", var/method = 0) - if(!check_rights(R_VAREDIT)) return - - var/list/locked = list("vars", "key", "ckey", "client") - - for(var/p in forbidden_varedit_object_types) - if( istype(O,p) ) - usr << "It is forbidden to edit this object's variables." - return - - var/list/names = list() - for (var/V in O.vars) - names += V - - names = sortList(names) - - var/variable = "" - - if(!var_name) - variable = input("Which var?","Var") as null|anything in names - else - variable = var_name - - if(!variable) return - var/default - var/var_value = O.vars[variable] - var/dir - - if(variable == "holder" || (variable in locked)) - if(!check_rights(R_DEBUG)) return - - if(isnull(var_value)) - usr << "Unable to determine variable type." - - else if(isnum(var_value)) - usr << "Variable appears to be NUM." - default = "num" - dir = 1 - - else if(istext(var_value)) - usr << "Variable appears to be TEXT." - default = "text" - - else if(isloc(var_value)) - usr << "Variable appears to be REFERENCE." - default = "reference" - - else if(isicon(var_value)) - usr << "Variable appears to be ICON." - var_value = "\icon[var_value]" - default = "icon" - - else if(istype(var_value,/atom) || istype(var_value,/datum)) - usr << "Variable appears to be TYPE." - default = "type" - - else if(istype(var_value,/list)) - usr << "Variable appears to be LIST." - default = "list" - - else if(istype(var_value,/client)) - usr << "Variable appears to be CLIENT." - default = "cancel" - - else - usr << "Variable appears to be FILE." - default = "file" - - usr << "Variable contains: [var_value]" - if(dir) - switch(var_value) - if(1) - dir = "NORTH" - if(2) - dir = "SOUTH" - if(4) - dir = "EAST" - if(8) - dir = "WEST" - if(5) - dir = "NORTHEAST" - if(6) - dir = "SOUTHEAST" - if(9) - dir = "NORTHWEST" - if(10) - dir = "SOUTHWEST" - else - dir = null - if(dir) - usr << "If a direction, direction is: [dir]" - - var/class = input("What kind of variable?","Variable Type",default) as null|anything in list("text", - "num","type","icon","file","edit referenced object","restore to default") - - if(!class) - return - - var/original_name - - if (!istype(O, /atom)) - original_name = "\ref[O] ([O])" - else - original_name = O:name - - switch(class) - - if("restore to default") - O.vars[variable] = initial(O.vars[variable]) - if(method) - if(istype(O, /mob)) - for(var/mob/M in mob_list) - if ( istype(M , O.type) ) - M.vars[variable] = O.vars[variable] - - else if(istype(O, /obj)) - for(var/obj/A in world) - if ( istype(A , O.type) ) - A.vars[variable] = O.vars[variable] - - else if(istype(O, /turf)) - for(var/turf/A in turfs) - if ( istype(A , O.type) ) - A.vars[variable] = O.vars[variable] - - else - if(istype(O, /mob)) - for(var/mob/M in mob_list) - if (M.type == O.type) - M.vars[variable] = O.vars[variable] - - else if(istype(O, /obj)) - for(var/obj/A in world) - if (A.type == O.type) - A.vars[variable] = O.vars[variable] - - else if(istype(O, /turf)) - for(var/turf/A in turfs) - if (A.type == O.type) - A.vars[variable] = O.vars[variable] - - if("edit referenced object") - return .(O.vars[variable]) - - if("text") - var/new_value = input("Enter new text:","Text",O.vars[variable]) as text|null//todo: sanitize ??? - if(new_value == null) return - O.vars[variable] = new_value - - if(method) - if(istype(O, /mob)) - for(var/mob/M in mob_list) - if ( istype(M , O.type) ) - M.vars[variable] = O.vars[variable] - - else if(istype(O, /obj)) - for(var/obj/A in world) - if ( istype(A , O.type) ) - A.vars[variable] = O.vars[variable] - - else if(istype(O, /turf)) - for(var/turf/A in turfs) - if ( istype(A , O.type) ) - A.vars[variable] = O.vars[variable] - else - if(istype(O, /mob)) - for(var/mob/M in mob_list) - if (M.type == O.type) - M.vars[variable] = O.vars[variable] - - else if(istype(O, /obj)) - for(var/obj/A in world) - if (A.type == O.type) - A.vars[variable] = O.vars[variable] - - else if(istype(O, /turf)) - for(var/turf/A in turfs) - if (A.type == O.type) - A.vars[variable] = O.vars[variable] - - if("num") - var/new_value = input("Enter new number:","Num",\ - O.vars[variable]) as num|null - if(new_value == null) return - - if(variable=="light_range") - O.set_light(new_value) - else - O.vars[variable] = new_value - - if(method) - if(istype(O, /mob)) - for(var/mob/M in mob_list) - if ( istype(M , O.type) ) - if(variable=="light_range") - M.set_light(new_value) - else - M.vars[variable] = O.vars[variable] - - else if(istype(O, /obj)) - for(var/obj/A in world) - if ( istype(A , O.type) ) - if(variable=="light_range") - A.set_light(new_value) - else - A.vars[variable] = O.vars[variable] - - else if(istype(O, /turf)) - for(var/turf/A in turfs) - if ( istype(A , O.type) ) - if(variable=="light_range") - A.set_light(new_value) - else - A.vars[variable] = O.vars[variable] - - else - if(istype(O, /mob)) - for(var/mob/M in mob_list) - if (M.type == O.type) - if(variable=="light_range") - M.set_light(new_value) - else - M.vars[variable] = O.vars[variable] - - else if(istype(O, /obj)) - for(var/obj/A in world) - if (A.type == O.type) - if(variable=="light_range") - A.set_light(new_value) - else - A.vars[variable] = O.vars[variable] - - else if(istype(O, /turf)) - for(var/turf/A in turfs) - if (A.type == O.type) - if(variable=="light_range") - A.set_light(new_value) - else - A.vars[variable] = O.vars[variable] - - if("type") - var/new_value - new_value = input("Enter type:","Type",O.vars[variable]) as null|anything in typesof(/obj,/mob,/area,/turf) - if(new_value == null) return - O.vars[variable] = new_value - if(method) - if(istype(O, /mob)) - for(var/mob/M in mob_list) - if ( istype(M , O.type) ) - M.vars[variable] = O.vars[variable] - - else if(istype(O, /obj)) - for(var/obj/A in world) - if ( istype(A , O.type) ) - A.vars[variable] = O.vars[variable] - - else if(istype(O, /turf)) - for(var/turf/A in turfs) - if ( istype(A , O.type) ) - A.vars[variable] = O.vars[variable] - else - if(istype(O, /mob)) - for(var/mob/M in mob_list) - if (M.type == O.type) - M.vars[variable] = O.vars[variable] - - else if(istype(O, /obj)) - for(var/obj/A in world) - if (A.type == O.type) - A.vars[variable] = O.vars[variable] - - else if(istype(O, /turf)) - for(var/turf/A in turfs) - if (A.type == O.type) - A.vars[variable] = O.vars[variable] - - if("file") - var/new_value = input("Pick file:","File",O.vars[variable]) as null|file - if(new_value == null) return - O.vars[variable] = new_value - - if(method) - if(istype(O, /mob)) - for(var/mob/M in mob_list) - if ( istype(M , O.type) ) - M.vars[variable] = O.vars[variable] - - else if(istype(O.type, /obj)) - for(var/obj/A in world) - if ( istype(A , O.type) ) - A.vars[variable] = O.vars[variable] - - else if(istype(O.type, /turf)) - for(var/turf/A in turfs) - if ( istype(A , O.type) ) - A.vars[variable] = O.vars[variable] - else - if(istype(O, /mob)) - for(var/mob/M in mob_list) - if (M.type == O.type) - M.vars[variable] = O.vars[variable] - - else if(istype(O.type, /obj)) - for(var/obj/A in world) - if (A.type == O.type) - A.vars[variable] = O.vars[variable] - - else if(istype(O.type, /turf)) - for(var/turf/A in turfs) - if (A.type == O.type) - A.vars[variable] = O.vars[variable] - - if("icon") - var/new_value = input("Pick icon:","Icon",O.vars[variable]) as null|icon - if(new_value == null) return - O.vars[variable] = new_value - if(method) - if(istype(O, /mob)) - for(var/mob/M in mob_list) - if ( istype(M , O.type) ) - M.vars[variable] = O.vars[variable] - - else if(istype(O, /obj)) - for(var/obj/A in world) - if ( istype(A , O.type) ) - A.vars[variable] = O.vars[variable] - - else if(istype(O, /turf)) - for(var/turf/A in turfs) - if ( istype(A , O.type) ) - A.vars[variable] = O.vars[variable] - - else - if(istype(O, /mob)) - for(var/mob/M in mob_list) - if (M.type == O.type) - M.vars[variable] = O.vars[variable] - - else if(istype(O, /obj)) - for(var/obj/A in world) - if (A.type == O.type) - A.vars[variable] = O.vars[variable] - - else if(istype(O, /turf)) - for(var/turf/A in turfs) - if (A.type == O.type) - A.vars[variable] = O.vars[variable] - - log_admin("[key_name(src)] mass modified [original_name]'s [variable] to [O.vars[variable]]") - message_admins("[key_name_admin(src)] mass modified [original_name]'s [variable] to [O.vars[variable]]", 1) diff --git a/code/modules/admin/verbs/modifyvariables.dm b/code/modules/admin/verbs/modifyvariables.dm deleted file mode 100644 index ecd26e9b56..0000000000 --- a/code/modules/admin/verbs/modifyvariables.dm +++ /dev/null @@ -1,591 +0,0 @@ -var/list/forbidden_varedit_object_types = list( - /datum/admins, //Admins editing their own admin-power object? Yup, sounds like a good idea, - /obj/machinery/blackbox_recorder, //Prevents people messing with feedback gathering, - /datum/feedback_variable //Prevents people messing with feedback gathering, - ) - -var/list/VVlocked = list("vars", "client", "virus", "viruses", "cuffed", "last_eaten", "unlock_content", "bound_x", "bound_y", "step_x", "step_y", "force_ending", "queued_priority") -var/list/VVicon_edit_lock = list("icon", "icon_state", "overlays", "underlays") -var/list/VVckey_edit = list("key", "ckey") - -/* -/client/proc/cmd_modify_object_variables(obj/O as obj|mob|turf|area in world) - set category = "Debug" - set name = "Edit Variables" - set desc="(target) Edit a target item's variables" - src.modify_variables(O) - feedback_add_details("admin_verb","EDITV") //If you are copy-pasting this, ensure the 2nd parameter is unique to the new proc! -*/ - -/client/proc/cmd_modify_ticker_variables() - set category = "Debug" - set name = "Edit Ticker Variables" - - if (ticker == null) - src << "Game hasn't started yet." - else - src.modify_variables(ticker) - feedback_add_details("admin_verb","ETV") //If you are copy-pasting this, ensure the 2nd parameter is unique to the new proc! - -/client/proc/mod_list_add_ass() //haha - - var/class = "text" - if(src.holder && src.holder.marked_datum) - class = input("What kind of variable?","Variable Type") as null|anything in list("text", - "num","type","reference","mob reference", "icon","file","list","edit referenced object","restore to default","marked datum ([holder.marked_datum.type])") - else - class = input("What kind of variable?","Variable Type") as null|anything in list("text", - "num","type","reference","mob reference", "icon","file","list","edit referenced object","restore to default") - - if(!class) - return - - if(holder.marked_datum && class == "marked datum ([holder.marked_datum.type])") - class = "marked datum" - - var/var_value = null - - switch(class) - - if("text") - var_value = input("Enter new text:","Text") as null|text - - if("num") - var_value = input("Enter new number:","Num") as null|num - - if("type") - var_value = input("Enter type:","Type") as null|anything in typesof(/obj,/mob,/area,/turf) - - if("reference") - var_value = input("Select reference:","Reference") as null|mob|obj|turf|area in world - - if("mob reference") - var_value = input("Select reference:","Reference") as null|mob in world - - if("file") - var_value = input("Pick file:","File") as null|file - - if("icon") - var_value = input("Pick icon:","Icon") as null|icon - - if("marked datum") - var_value = holder.marked_datum - - if(!var_value) return - - return var_value - - -/client/proc/mod_list_add(var/list/L, atom/O, original_name, objectvar) - - var/class = "text" - if(src.holder && src.holder.marked_datum) - class = input("What kind of variable?","Variable Type") as null|anything in list("text", - "num","type","reference","mob reference", "icon","file","list","edit referenced object","restore to default","marked datum ([holder.marked_datum.type])") - else - class = input("What kind of variable?","Variable Type") as null|anything in list("text", - "num","type","reference","mob reference", "icon","file","list","edit referenced object","restore to default") - - if(!class) - return - - if(holder.marked_datum && class == "marked datum ([holder.marked_datum.type])") - class = "marked datum" - - var/var_value = null - - switch(class) - - if("text") - var_value = input("Enter new text:","Text") as text - - if("num") - var_value = input("Enter new number:","Num") as num - - if("type") - var_value = input("Enter type:","Type") in typesof(/obj,/mob,/area,/turf) - - if("reference") - var_value = input("Select reference:","Reference") as mob|obj|turf|area in world - - if("mob reference") - var_value = input("Select reference:","Reference") as mob in world - - if("file") - var_value = input("Pick file:","File") as file - - if("icon") - var_value = input("Pick icon:","Icon") as icon - - if("marked datum") - var_value = holder.marked_datum - - if(!var_value) return - - switch(alert("Would you like to associate a var with the list entry?",,"Yes","No")) - if("Yes") - L += var_value - L[var_value] = mod_list_add_ass() //haha - if("No") - L += var_value - world.log << "### ListVarEdit by [src]: [O.type] [objectvar]: ADDED=[var_value]" - log_admin("[key_name(src)] modified [original_name]'s [objectvar]: ADDED=[var_value]") - message_admins("[key_name_admin(src)] modified [original_name]'s [objectvar]: ADDED=[var_value]") - -/client/proc/mod_list(var/list/L, atom/O, original_name, objectvar) - if(!check_rights(R_VAREDIT)) return - if(!istype(L,/list)) src << "Not a List." - - if(L.len > 1000) - var/confirm = alert(src, "The list you're trying to edit is very long, continuing may crash the server.", "Warning", "Continue", "Abort") - if(confirm != "Continue") - return - - var/assoc = 0 - if(L.len > 0) - var/a = L[1] - if(istext(a) && L[a] != null) - assoc = 1 //This is pretty weak test but i can't think of anything else - usr << "List appears to be associative." - - var/list/names = null - if(!assoc) - names = sortList(L) - - var/variable - var/assoc_key - if(assoc) - variable = input("Which var?","Var") as null|anything in L + "(ADD VAR)" - else - variable = input("Which var?","Var") as null|anything in names + "(ADD VAR)" - - if(variable == "(ADD VAR)") - mod_list_add(L, O, original_name, objectvar) - return - - if(assoc) - assoc_key = variable - variable = L[assoc_key] - - if(!assoc && !variable || assoc && !assoc_key) - return - - var/default - - var/dir - - if(variable in VVlocked) - if(!check_rights(R_DEBUG)) return - if(variable in VVckey_edit) - if(!check_rights(R_SPAWN|R_DEBUG)) return - if(variable in VVicon_edit_lock) - if(!check_rights(R_FUN|R_DEBUG)) return - - if(isnull(variable)) - usr << "Unable to determine variable type." - - else if(isnum(variable)) - usr << "Variable appears to be NUM." - default = "num" - dir = 1 - - else if(istext(variable)) - usr << "Variable appears to be TEXT." - default = "text" - - else if(isloc(variable)) - usr << "Variable appears to be REFERENCE." - default = "reference" - - else if(isicon(variable)) - usr << "Variable appears to be ICON." - variable = "\icon[variable]" - default = "icon" - - else if(istype(variable,/atom) || istype(variable,/datum)) - usr << "Variable appears to be TYPE." - default = "type" - - else if(istype(variable,/list)) - usr << "Variable appears to be LIST." - default = "list" - - else if(istype(variable,/client)) - usr << "Variable appears to be CLIENT." - default = "cancel" - - else - usr << "Variable appears to be FILE." - default = "file" - - usr << "Variable contains: [variable]" - if(dir) - switch(variable) - if(1) - dir = "NORTH" - if(2) - dir = "SOUTH" - if(4) - dir = "EAST" - if(8) - dir = "WEST" - if(5) - dir = "NORTHEAST" - if(6) - dir = "SOUTHEAST" - if(9) - dir = "NORTHWEST" - if(10) - dir = "SOUTHWEST" - else - dir = null - - if(dir) - usr << "If a direction, direction is: [dir]" - - var/class = "text" - if(src.holder && src.holder.marked_datum) - class = input("What kind of variable?","Variable Type",default) as null|anything in list("text", - "num","type","reference","mob reference", "icon","file","list","edit referenced object","restore to default","marked datum ([holder.marked_datum.type])", "DELETE FROM LIST") - else - class = input("What kind of variable?","Variable Type",default) as null|anything in list("text", - "num","type","reference","mob reference", "icon","file","list","edit referenced object","restore to default", "DELETE FROM LIST") - - if(!class) - return - - if(holder.marked_datum && class == "marked datum ([holder.marked_datum.type])") - class = "marked datum" - - var/original_var - if(assoc) - original_var = L[assoc_key] - else - original_var = L[L.Find(variable)] - - var/new_var - switch(class) //Spits a runtime error if you try to modify an entry in the contents list. Dunno how to fix it, yet. - - if("list") - mod_list(variable, O, original_name, objectvar) - - if("restore to default") - new_var = initial(variable) - if(assoc) - L[assoc_key] = new_var - else - L[L.Find(variable)] = new_var - - if("edit referenced object") - modify_variables(variable) - - if("DELETE FROM LIST") - world.log << "### ListVarEdit by [src]: [O.type] [objectvar]: REMOVED=[html_encode("[variable]")]" - log_admin("[key_name(src)] modified [original_name]'s [objectvar]: REMOVED=[variable]") - message_admins("[key_name_admin(src)] modified [original_name]'s [objectvar]: REMOVED=[variable]") - L -= variable - return - - if("text") - new_var = input("Enter new text:","Text") as text - if(assoc) - L[assoc_key] = new_var - else - L[L.Find(variable)] = new_var - - if("num") - new_var = input("Enter new number:","Num") as num - if(assoc) - L[assoc_key] = new_var - else - L[L.Find(variable)] = new_var - - if("type") - new_var = input("Enter type:","Type") in typesof(/obj,/mob,/area,/turf) - if(assoc) - L[assoc_key] = new_var - else - L[L.Find(variable)] = new_var - - if("reference") - new_var = input("Select reference:","Reference") as mob|obj|turf|area in world - if(assoc) - L[assoc_key] = new_var - else - L[L.Find(variable)] = new_var - - if("mob reference") - new_var = input("Select reference:","Reference") as mob in world - if(assoc) - L[assoc_key] = new_var - else - L[L.Find(variable)] = new_var - - if("file") - new_var = input("Pick file:","File") as file - if(assoc) - L[assoc_key] = new_var - else - L[L.Find(variable)] = new_var - - if("icon") - new_var = input("Pick icon:","Icon") as icon - if(assoc) - L[assoc_key] = new_var - else - L[L.Find(variable)] = new_var - - if("marked datum") - new_var = holder.marked_datum - if(assoc) - L[assoc_key] = new_var - else - L[L.Find(variable)] = new_var - - world.log << "### ListVarEdit by [src]: [O.type] [objectvar]: [original_var]=[new_var]" - log_admin("[key_name(src)] modified [original_name]'s [objectvar]: [original_var]=[new_var]") - message_admins("[key_name_admin(src)] modified [original_name]'s varlist [objectvar]: [original_var]=[new_var]") - -/client/proc/modify_variables(var/atom/O, var/param_var_name = null, var/autodetect_class = 0) - if(!check_rights(R_VAREDIT)) return - - for(var/p in forbidden_varedit_object_types) - if( istype(O,p) ) - usr << "It is forbidden to edit this object's variables." - return - - if(istype(O, /client) && (param_var_name == "ckey" || param_var_name == "key")) - usr << "You cannot edit ckeys on client objects." - return - - var/class - var/variable - var/var_value - - if(param_var_name) - if(!param_var_name in O.vars) - src << "A variable with this name ([param_var_name]) doesn't exist in this atom ([O])" - return - - if(param_var_name in VVlocked) - if(!check_rights(R_DEBUG)) return - if(param_var_name in VVckey_edit) - if(!check_rights(R_SPAWN|R_DEBUG)) return - if(param_var_name in VVicon_edit_lock) - if(!check_rights(R_FUN|R_DEBUG)) return - - variable = param_var_name - - var_value = O.vars[variable] - - if(autodetect_class) - if(isnull(var_value)) - usr << "Unable to determine variable type." - class = null - autodetect_class = null - else if(isnum(var_value)) - usr << "Variable appears to be NUM." - class = "num" - dir = 1 - - else if(istext(var_value)) - usr << "Variable appears to be TEXT." - class = "text" - - else if(isloc(var_value)) - usr << "Variable appears to be REFERENCE." - class = "reference" - - else if(isicon(var_value)) - usr << "Variable appears to be ICON." - var_value = "\icon[var_value]" - class = "icon" - - else if(istype(var_value,/atom) || istype(var_value,/datum)) - usr << "Variable appears to be TYPE." - class = "type" - - else if(istype(var_value,/list)) - usr << "Variable appears to be LIST." - class = "list" - - else if(istype(var_value,/client)) - usr << "Variable appears to be CLIENT." - class = "cancel" - - else - usr << "Variable appears to be FILE." - class = "file" - - else - - var/list/names = list() - for (var/V in O.vars) - names += V - - names = sortList(names) - - variable = input("Which var?","Var") as null|anything in names - if(!variable) return - var_value = O.vars[variable] - - if(variable in VVlocked) - if(!check_rights(R_DEBUG)) return - if(variable in VVckey_edit) - if(!check_rights(R_SPAWN|R_DEBUG)) return - if(variable in VVicon_edit_lock) - if(!check_rights(R_FUN|R_DEBUG)) return - - if(!autodetect_class) - - var/dir - var/default - if(isnull(var_value)) - usr << "Unable to determine variable type." - - else if(isnum(var_value)) - usr << "Variable appears to be NUM." - default = "num" - dir = 1 - - else if(istext(var_value)) - usr << "Variable appears to be TEXT." - default = "text" - - else if(isloc(var_value)) - usr << "Variable appears to be REFERENCE." - default = "reference" - - else if(isicon(var_value)) - usr << "Variable appears to be ICON." - var_value = "\icon[var_value]" - default = "icon" - - else if(istype(var_value,/atom) || istype(var_value,/datum)) - usr << "Variable appears to be TYPE." - default = "type" - - else if(istype(var_value,/list)) - usr << "Variable appears to be LIST." - default = "list" - - else if(istype(var_value,/client)) - usr << "Variable appears to be CLIENT." - default = "cancel" - - else - usr << "Variable appears to be FILE." - default = "file" - - usr << "Variable contains: [var_value]" - if(dir) - switch(var_value) - if(1) - dir = "NORTH" - if(2) - dir = "SOUTH" - if(4) - dir = "EAST" - if(8) - dir = "WEST" - if(5) - dir = "NORTHEAST" - if(6) - dir = "SOUTHEAST" - if(9) - dir = "NORTHWEST" - if(10) - dir = "SOUTHWEST" - else - dir = null - if(dir) - usr << "If a direction, direction is: [dir]" - - if(src.holder && src.holder.marked_datum) - class = input("What kind of variable?","Variable Type",default) as null|anything in list("text", - "num","type","reference","mob reference", "icon","file","list","edit referenced object","restore to default","marked datum ([holder.marked_datum.type])") - else - class = input("What kind of variable?","Variable Type",default) as null|anything in list("text", - "num","type","reference","mob reference", "icon","file","list","edit referenced object","restore to default") - - if(!class) - return - - var/original_name - - if (!istype(O, /atom)) - original_name = "\ref[O] ([O])" - else - original_name = O:name - - if(holder.marked_datum && class == "marked datum ([holder.marked_datum.type])") - class = "marked datum" - - switch(class) - - if("list") - mod_list(O.vars[variable], O, original_name, variable) - return - - if("restore to default") - O.vars[variable] = initial(O.vars[variable]) - - if("edit referenced object") - return .(O.vars[variable]) - - if("text") - var/var_new = input("Enter new text:","Text",O.vars[variable]) as null|text - if(var_new==null) return - O.vars[variable] = var_new - - if("num") - if(variable=="light_range") - var/var_new = input("Enter new number:","Num",O.vars[variable]) as null|num - if(var_new == null) return - O.set_light(var_new) - else if(variable=="stat") - var/var_new = input("Enter new number:","Num",O.vars[variable]) as null|num - if(var_new == null) return - if((O.vars[variable] == 2) && (var_new < 2))//Bringing the dead back to life - dead_mob_list -= O - living_mob_list += O - if((O.vars[variable] < 2) && (var_new == 2))//Kill he - living_mob_list -= O - dead_mob_list += O - O.vars[variable] = var_new - else - var/var_new = input("Enter new number:","Num",O.vars[variable]) as null|num - if(var_new==null) return - O.vars[variable] = var_new - - if("type") - var/var_new = input("Enter type:","Type",O.vars[variable]) as null|anything in typesof(/obj,/mob,/area,/turf) - if(var_new==null) return - O.vars[variable] = var_new - - if("reference") - var/var_new = input("Select reference:","Reference",O.vars[variable]) as null|mob|obj|turf|area in world - if(var_new==null) return - O.vars[variable] = var_new - - if("mob reference") - var/var_new = input("Select reference:","Reference",O.vars[variable]) as null|mob in world - if(var_new==null) return - O.vars[variable] = var_new - - if("file") - var/var_new = input("Pick file:","File",O.vars[variable]) as null|file - if(var_new==null) return - O.vars[variable] = var_new - - if("icon") - var/var_new = input("Pick icon:","Icon",O.vars[variable]) as null|icon - if(var_new==null) return - O.vars[variable] = var_new - - if("marked datum") - O.vars[variable] = holder.marked_datum - - world.log << "### VarEdit by [src]: [O.type] [variable]=[html_encode("[O.vars[variable]]")]" - log_admin("[key_name(src)] modified [original_name]'s [variable] to [O.vars[variable]]") - message_admins("[key_name_admin(src)] modified [original_name]'s [variable] to [O.vars[variable]]") diff --git a/code/modules/admin/verbs/randomverbs.dm b/code/modules/admin/verbs/randomverbs.dm index 1e8528acb9..7d0b7ee259 100644 --- a/code/modules/admin/verbs/randomverbs.dm +++ b/code/modules/admin/verbs/randomverbs.dm @@ -62,7 +62,7 @@ var/highlight_special_characters = 1 - for(var/client/C in clients) + for(var/client/C in GLOB.clients) if(C.player_age == "Requires database") missing_ages = 1 continue @@ -363,7 +363,7 @@ Traitors and the like can also be revived with the previous role mostly intact. return //I frontload all the questions so we don't have a half-done process while you're reading. - var/client/picked_client = input(src, "Please specify which client's character to spawn.", "Client", "") as null|anything in clients + var/client/picked_client = input(src, "Please specify which client's character to spawn.", "Client", "") as null|anything in GLOB.clients if(!picked_client) return @@ -603,12 +603,7 @@ Traitors and the like can also be revived with the previous role mostly intact. if (!holder) src << "Only administrators may use this command." return - - if (alert(src, "Are you sure you want to delete:\n[O]\nat ([O.x], [O.y], [O.z])?", "Confirmation", "Yes", "No") == "Yes") - log_admin("[key_name(usr)] deleted [O] at ([O.x],[O.y],[O.z])") - message_admins("[key_name_admin(usr)] deleted [O] at ([O.x],[O.y],[O.z])", 1) - feedback_add_details("admin_verb","DEL") //If you are copy-pasting this, ensure the 2nd parameter is unique to the new proc! - qdel(O) + admin_delete(O) /client/proc/cmd_admin_list_open_jobs() set category = "Admin" diff --git a/code/modules/admin/verbs/smite_vr.dm b/code/modules/admin/verbs/smite_vr.dm index c04dd00847..0d048dde2d 100644 --- a/code/modules/admin/verbs/smite_vr.dm +++ b/code/modules/admin/verbs/smite_vr.dm @@ -18,14 +18,15 @@ feedback_add_details("admin_verb","SMITEV") //If you are copy-pasting this, ensure the 2nd parameter is unique to the new proc! switch(smite_choice) + /* if(SMITE_SHADEKIN_ATTACK) var/turf/Tt = get_turf(target) //Turf for target - + if(target.loc != Tt) return //Too hard to attack someone in something - + var/turf/Ts //Turf for shadekin - + //Try to find nondense turf for(var/direction in cardinal) var/turf/T = get_step(target,direction) @@ -34,7 +35,7 @@ if(!Ts) return //Didn't find shadekin spawn turf - var/mob/living/simple_animal/shadekin/red/shadekin = new(Ts) + var/mob/living/simple_mob/shadekin/red/shadekin = new(Ts) //Abuse of shadekin shadekin.real_name = shadekin.name shadekin.init_vore() @@ -47,33 +48,34 @@ //Remove when done spawn(10 SECONDS) if(shadekin) - shadekin.death() + shadekin.death()*/ //VORESTATION AI TEMPORARY REMOVAL - if(SMITE_SHADEKIN_NOMF) + /*if(SMITE_SHADEKIN_NOMF) var/list/kin_types = list( - "Red Eyes (Dark)" = /mob/living/simple_animal/shadekin/red/dark, - "Red Eyes (Light)" = /mob/living/simple_animal/shadekin/red/white, - "Red Eyes (Brown)" = /mob/living/simple_animal/shadekin/red/brown, - "Blue Eyes (Dark)" = /mob/living/simple_animal/shadekin/blue/dark, - "Blue Eyes (Light)" = /mob/living/simple_animal/shadekin/blue/white, - "Blue Eyes (Brown)" = /mob/living/simple_animal/shadekin/blue/brown, - "Purple Eyes (Dark)" = /mob/living/simple_animal/shadekin/purple/dark, - "Purple Eyes (Light)" = /mob/living/simple_animal/shadekin/purple/white, - "Purple Eyes (Brown)" = /mob/living/simple_animal/shadekin/purple/brown, - "Yellow Eyes (Dark)" = /mob/living/simple_animal/shadekin/yellow/dark, - "Yellow Eyes (Light)" = /mob/living/simple_animal/shadekin/yellow/white, - "Yellow Eyes (Brown)" = /mob/living/simple_animal/shadekin/yellow/brown, - "Green Eyes (Dark)" = /mob/living/simple_animal/shadekin/green/dark, - "Green Eyes (Light)" = /mob/living/simple_animal/shadekin/green/white, - "Green Eyes (Brown)" = /mob/living/simple_animal/shadekin/green/brown, - "Orange Eyes (Dark)" = /mob/living/simple_animal/shadekin/orange/dark, - "Orange Eyes (Light)" = /mob/living/simple_animal/shadekin/orange/white, - "Orange Eyes (Brown)" = /mob/living/simple_animal/shadekin/orange/brown, - "Rivyr (Unique)" = /mob/living/simple_animal/shadekin/blue/rivyr) + "Red Eyes (Dark)" = /mob/living/simple_mob/shadekin/red/dark, + "Red Eyes (Light)" = /mob/living/simple_mob/shadekin/red/white, + "Red Eyes (Brown)" = /mob/living/simple_mob/shadekin/red/brown, + "Blue Eyes (Dark)" = /mob/living/simple_mob/shadekin/blue/dark, + "Blue Eyes (Light)" = /mob/living/simple_mob/shadekin/blue/white, + "Blue Eyes (Brown)" = /mob/living/simple_mob/shadekin/blue/brown, + "Purple Eyes (Dark)" = /mob/living/simple_mob/shadekin/purple/dark, + "Purple Eyes (Light)" = /mob/living/simple_mob/shadekin/purple/white, + "Purple Eyes (Brown)" = /mob/living/simple_mob/shadekin/purple/brown, + "Yellow Eyes (Dark)" = /mob/living/simple_mob/shadekin/yellow/dark, + "Yellow Eyes (Light)" = /mob/living/simple_mob/shadekin/yellow/white, + "Yellow Eyes (Brown)" = /mob/living/simple_mob/shadekin/yellow/brown, + "Green Eyes (Dark)" = /mob/living/simple_mob/shadekin/green/dark, + "Green Eyes (Light)" = /mob/living/simple_mob/shadekin/green/white, + "Green Eyes (Brown)" = /mob/living/simple_mob/shadekin/green/brown, + "Orange Eyes (Dark)" = /mob/living/simple_mob/shadekin/orange/dark, + "Orange Eyes (Light)" = /mob/living/simple_mob/shadekin/orange/white, + "Orange Eyes (Brown)" = /mob/living/simple_mob/shadekin/orange/brown, + "Rivyr (Unique)" = /mob/living/simple_mob/shadekin/blue/rivyr) var/kin_type = input("Select the type of shadekin for [target] nomf","Shadekin Type Choice") as null|anything in kin_types if(!kin_type || !target) return + kin_type = kin_types[kin_type] var/myself = alert("Control the shadekin yourself or delete pred and prey after?","Control Shadekin?","Control","Cancel","Delete") @@ -81,13 +83,13 @@ return var/turf/Tt = get_turf(target) - + if(target.loc != Tt) return //Can't nom when not exposed //Begin abuse target.transforming = TRUE //Cheap hack to stop them from moving - var/mob/living/simple_animal/shadekin/shadekin = new kin_type(Tt) + var/mob/living/simple_mob/shadekin/shadekin = new kin_type(Tt) shadekin.real_name = shadekin.name shadekin.init_vore() shadekin.can_be_drop_pred = TRUE @@ -117,6 +119,7 @@ target.ghostize() qdel(target) qdel(shadekin) + */ if(SMITE_REDSPACE_ABDUCT) redspace_abduction(target, src) @@ -160,7 +163,7 @@ var/redspace_abduction_z //Lower left corner of a working box var/llc_x = max(0,halfbox-target.x) + min(target.x+halfbox, world.maxx) - size_of_square var/llc_y = max(0,halfbox-target.y) + min(target.y+halfbox, world.maxy) - size_of_square - + //Copy them all for(var/x = llc_x to llc_x+size_of_square) for(var/y = llc_y to llc_y+size_of_square) @@ -196,7 +199,7 @@ var/redspace_abduction_z T.density = FALSE T.opacity = FALSE T.vis_contents.Cut() - + for(var/x = llc_x to llc_x+size_of_square) //Bottom for(var/y = llc_y to llc_y+1) if(prob(50)) diff --git a/code/modules/admin/view_variables/admin_delete.dm b/code/modules/admin/view_variables/admin_delete.dm new file mode 100644 index 0000000000..53a54786a9 --- /dev/null +++ b/code/modules/admin/view_variables/admin_delete.dm @@ -0,0 +1,24 @@ +/client/proc/admin_delete(datum/D) + var/atom/A = D + var/coords = "" + var/jmp_coords = "" + if(istype(A)) + var/turf/T = get_turf(A) + if(T) + coords = "at [COORD(T)]" + jmp_coords = "at [ADMIN_COORDJMP(T)]" + else + jmp_coords = coords = "in nullspace" + + if (alert(src, "Are you sure you want to delete:\n[D]\n[coords]?", "Confirmation", "Yes", "No") == "Yes") + log_admin("[key_name(usr)] deleted [D] [coords]") + message_admins("[key_name_admin(usr)] deleted [D] [jmp_coords]") + feedback_add_details("admin_verb","ADEL") //If you are copy-pasting this, ensure the 2nd parameter is unique to the new proc! + /*if(isturf(D)) //Polaris doesn't support baseturfs yet. + var/turf/T = D + T.ScrapeAway() + else*/ + vv_update_display(D, "deleted", VV_MSG_DELETED) + qdel(D) + if(!QDELETED(D)) + vv_update_display(D, "deleted", "") diff --git a/code/modules/admin/view_variables/debug_variables.dm b/code/modules/admin/view_variables/debug_variables.dm new file mode 100644 index 0000000000..bcf097f813 --- /dev/null +++ b/code/modules/admin/view_variables/debug_variables.dm @@ -0,0 +1,76 @@ +#define VV_HTML_ENCODE(thing) ( sanitize ? html_encode(thing) : thing ) +/proc/debug_variable(name, value, level, datum/DA = null, sanitize = TRUE) + var/header + if(DA) + if (islist(DA)) + var/index = name + if (value) + name = DA[name] //name is really the index until this line + else + value = DA[name] + header = "
  • (E) (C) (-) " + else + header = "
  • (E) (C) (M) " + else + header = "
  • " + + var/item + if (isnull(value)) + item = "[VV_HTML_ENCODE(name)] = null" + + else if (istext(value)) + item = "[VV_HTML_ENCODE(name)] = \"[VV_HTML_ENCODE(value)]\"" + + else if (isicon(value)) + #ifdef VARSICON + var/icon/I = new/icon(value) + var/rnd = rand(1,10000) + var/rname = "tmp\ref[I][rnd].png" + usr << browse_rsc(I, rname) + item = "[VV_HTML_ENCODE(name)] = ([value]) " + #else + item = "[VV_HTML_ENCODE(name)] = /icon ([value])" + #endif + + else if (isfile(value)) + item = "[VV_HTML_ENCODE(name)] = '[value]'" + + else if (istype(value, /datum)) + var/datum/D = value + if ("[D]" != "[D.type]") //if the thing as a name var, lets use it. + item = "[VV_HTML_ENCODE(name)] \ref[value] = [D] [D.type]" + else + item = "[VV_HTML_ENCODE(name)] \ref[value] = [D.type]" + + else if (islist(value)) + var/list/L = value + var/list/items = list() + + if (L.len > 0 && !(name == "underlays" || name == "overlays" || L.len > (IS_NORMAL_LIST(L) ? VV_NORMAL_LIST_NO_EXPAND_THRESHOLD : VV_SPECIAL_LIST_NO_EXPAND_THRESHOLD))) + for (var/i in 1 to L.len) + var/key = L[i] + var/val + if (IS_NORMAL_LIST(L) && !isnum(key)) + val = L[key] + if (isnull(val)) // we still want to display non-null false values, such as 0 or "" + val = key + key = i + + items += debug_variable(key, val, level + 1, sanitize = sanitize) + + item = "[VV_HTML_ENCODE(name)] = /list ([L.len])
      [items.Join()]
    " + else + item = "[VV_HTML_ENCODE(name)] = /list ([L.len])" + + else if (name in GLOB.bitfields) + var/list/flags = list() + for (var/i in GLOB.bitfields[name]) + if (value & GLOB.bitfields[name][i]) + flags += i + item = "[VV_HTML_ENCODE(name)] = [VV_HTML_ENCODE(jointext(flags, ", "))]" + else + item = "[VV_HTML_ENCODE(name)] = [VV_HTML_ENCODE(value)]" + + return "[header][item]
  • " + +#undef VV_HTML_ENCODE diff --git a/code/modules/admin/view_variables/get_variables.dm b/code/modules/admin/view_variables/get_variables.dm new file mode 100644 index 0000000000..eb2d1bf4db --- /dev/null +++ b/code/modules/admin/view_variables/get_variables.dm @@ -0,0 +1,250 @@ +/client/proc/vv_get_class(var/var_name, var/var_value) + if(isnull(var_value)) + . = VV_NULL + + else if (isnum(var_value)) + if (var_name in GLOB.bitfields) + . = VV_BITFIELD + else + . = VV_NUM + + else if (istext(var_value)) + if (findtext(var_value, "\n")) + . = VV_MESSAGE + else + . = VV_TEXT + + else if (isicon(var_value)) + . = VV_ICON + + else if (ismob(var_value)) + . = VV_MOB_REFERENCE + + else if (isloc(var_value)) + . = VV_ATOM_REFERENCE + + else if (istype(var_value, /client)) + . = VV_CLIENT + + else if (istype(var_value, /datum)) + . = VV_DATUM_REFERENCE + + else if (ispath(var_value)) + if (ispath(var_value, /atom)) + . = VV_ATOM_TYPE + else if (ispath(var_value, /datum)) + . = VV_DATUM_TYPE + else + . = VV_TYPE + + else if (islist(var_value)) + . = VV_LIST + + else if (isfile(var_value)) + . = VV_FILE + else + . = VV_NULL + +/client/proc/vv_get_value(class, default_class, current_value, list/restricted_classes, list/extra_classes, list/classes, var_name) + . = list("class" = class, "value" = null) + if (!class) + if (!classes) + classes = list ( + VV_NUM, + VV_TEXT, + VV_MESSAGE, + VV_ICON, + VV_ATOM_REFERENCE, + VV_DATUM_REFERENCE, + VV_MOB_REFERENCE, + VV_CLIENT, + VV_ATOM_TYPE, + VV_DATUM_TYPE, + VV_TYPE, + VV_FILE, + VV_NEW_ATOM, + VV_NEW_DATUM, + VV_NEW_TYPE, + VV_NEW_LIST, + VV_NULL, + VV_RESTORE_DEFAULT + ) + + if(holder && holder.marked_datum && !(VV_MARKED_DATUM in restricted_classes)) + classes += "[VV_MARKED_DATUM] ([holder.marked_datum.type])" + if (restricted_classes) + classes -= restricted_classes + + if (extra_classes) + classes += extra_classes + + .["class"] = input(src, "What kind of data?", "Variable Type", default_class) as null|anything in classes + if (holder && holder.marked_datum && .["class"] == "[VV_MARKED_DATUM] ([holder.marked_datum.type])") + .["class"] = VV_MARKED_DATUM + + + switch(.["class"]) + if (VV_TEXT) + .["value"] = input("Enter new text:", "Text", current_value) as null|text + if (.["value"] == null) + .["class"] = null + return + if (VV_MESSAGE) + .["value"] = input("Enter new text:", "Text", current_value) as null|message + if (.["value"] == null) + .["class"] = null + return + + + if (VV_NUM) + .["value"] = input("Enter new number:", "Num", current_value) as null|num + if (.["value"] == null) + .["class"] = null + return + + if (VV_BITFIELD) + .["value"] = input_bitfield(usr, "Editing bitfield: [var_name]", var_name, current_value) + if (.["value"] == null) + .["class"] = null + return + + if (VV_ATOM_TYPE) + .["value"] = pick_closest_path(FALSE) + if (.["value"] == null) + .["class"] = null + return + + if (VV_DATUM_TYPE) + .["value"] = pick_closest_path(FALSE, get_fancy_list_of_datum_types()) + if (.["value"] == null) + .["class"] = null + return + + if (VV_TYPE) + var/type = current_value + var/error = "" + do + type = input("Enter type:[error]", "Type", type) as null|text + if (!type) + break + type = text2path(type) + error = "\nType not found, Please try again" + while(!type) + if (!type) + .["class"] = null + return + .["value"] = type + + + if (VV_ATOM_REFERENCE) + var/type = pick_closest_path(FALSE) + var/subtypes = vv_subtype_prompt(type) + if (subtypes == null) + .["class"] = null + return + var/list/things = vv_reference_list(type, subtypes) + var/value = input("Select reference:", "Reference", current_value) as null|anything in things + if (!value) + .["class"] = null + return + .["value"] = things[value] + + if (VV_DATUM_REFERENCE) + var/type = pick_closest_path(FALSE, get_fancy_list_of_datum_types()) + var/subtypes = vv_subtype_prompt(type) + if (subtypes == null) + .["class"] = null + return + var/list/things = vv_reference_list(type, subtypes) + var/value = input("Select reference:", "Reference", current_value) as null|anything in things + if (!value) + .["class"] = null + return + .["value"] = things[value] + + if (VV_MOB_REFERENCE) + var/type = pick_closest_path(FALSE, make_types_fancy(typesof(/mob))) + var/subtypes = vv_subtype_prompt(type) + if (subtypes == null) + .["class"] = null + return + var/list/things = vv_reference_list(type, subtypes) + var/value = input("Select reference:", "Reference", current_value) as null|anything in things + if (!value) + .["class"] = null + return + .["value"] = things[value] + + + + if (VV_CLIENT) + .["value"] = input("Select reference:", "Reference", current_value) as null|anything in GLOB.clients + if (.["value"] == null) + .["class"] = null + return + + + if (VV_FILE) + .["value"] = input("Pick file:", "File") as null|file + if (.["value"] == null) + .["class"] = null + return + + + if (VV_ICON) + .["value"] = input("Pick icon:", "Icon") as null|icon + if (.["value"] == null) + .["class"] = null + return + + + if (VV_MARKED_DATUM) + .["value"] = holder.marked_datum + if (.["value"] == null) + .["class"] = null + return + + + if (VV_NEW_ATOM) + var/type = pick_closest_path(FALSE) + if (!type) + .["class"] = null + return + .["type"] = type + var/atom/newguy = new type() + newguy.datum_flags |= DF_VAR_EDITED + .["value"] = newguy + + if (VV_NEW_DATUM) + var/type = pick_closest_path(FALSE, get_fancy_list_of_datum_types()) + if (!type) + .["class"] = null + return + .["type"] = type + var/datum/newguy = new type() + newguy.datum_flags |= DF_VAR_EDITED + .["value"] = newguy + + if (VV_NEW_TYPE) + var/type = current_value + var/error = "" + do + type = input("Enter type:[error]", "Type", type) as null|text + if (!type) + break + type = text2path(type) + error = "\nType not found, Please try again" + while(!type) + if (!type) + .["class"] = null + return + .["type"] = type + var/datum/newguy = new type() + if(istype(newguy)) + newguy.datum_flags |= DF_VAR_EDITED + .["value"] = newguy + + + if (VV_NEW_LIST) + .["value"] = list() + .["type"] = /list diff --git a/code/modules/admin/view_variables/helpers.dm b/code/modules/admin/view_variables/helpers.dm deleted file mode 100644 index 2776458e06..0000000000 --- a/code/modules/admin/view_variables/helpers.dm +++ /dev/null @@ -1,194 +0,0 @@ - -/datum/proc/get_view_variables_header() - return "[src]" - -/atom/get_view_variables_header() - return {" - [src] -
    - << - [dir2text(dir)] - >> - - "} - -/mob/living/get_view_variables_header() - return {" - [src] -
    << [dir2text(dir)] >> -
    [ckey ? ckey : "No ckey"] / [real_name ? real_name : "No real name"] -
    - BRUTE:[getBruteLoss()] - FIRE:[getFireLoss()] - TOXIN:[getToxLoss()] - OXY:[getOxyLoss()] - CLONE:[getCloneLoss()] - BRAIN:[getBrainLoss()] -
    - "} - -/datum/proc/get_view_variables_options() - return "" - -/mob/get_view_variables_options() - return ..() + {" - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - "} - -/mob/living/carbon/human/get_view_variables_options() - return ..() + {" - - - - - - "} - -/obj/get_view_variables_options() - return ..() + {" - - - - "} - -/turf/get_view_variables_options() - return ..() + {" - - - "} - -/datum/proc/get_variables() - . = vars - VV_hidden() - if(!usr || !check_rights(R_ADMIN|R_DEBUG, FALSE)) - . -= VV_secluded() - -/datum/proc/get_variable_value(varname) - return vars[varname] - -/datum/proc/set_variable_value(varname, value) - vars[varname] = value - -/datum/proc/get_initial_variable_value(varname) - return initial(vars[varname]) - -/datum/proc/make_view_variables_variable_entry(var/varname, var/value, var/hide_watch = 0) - return {" - (E) - (C) - (M) - [hide_watch ? "" : "(W)"] - "} - -// No mass editing of clients -/client/make_view_variables_variable_entry(var/varname, var/value, var/hide_watch = 0) - return {" - (E) - (C) - [hide_watch ? "" : "(W)"] - "} - -// These methods are all procs and don't use stored lists to avoid VV exploits - -// The following vars cannot be viewed by anyone -/datum/proc/VV_hidden() - return list() - -// The following vars can only be viewed by R_ADMIN|R_DEBUG -/datum/proc/VV_secluded() - return list() - -/datum/configuration/VV_secluded() - return vars - -// The following vars cannot be edited by anyone -/datum/proc/VV_static() - return list("parent_type") - -/atom/VV_static() - return ..() + list("bound_x", "bound_y", "bound_height", "bound_width", "bounds", "step_x", "step_y", "step_size") - -/client/VV_static() - return ..() + list("holder", "prefs") - -/datum/admins/VV_static() - return vars - -// The following vars require R_DEBUG to edit -/datum/proc/VV_locked() - return list("vars", "virus", "viruses", "cuffed") - -/client/VV_locked() - return list("vars", "mob") - -/mob/VV_locked() - return ..() + list("client") - -// The following vars require R_FUN|R_DEBUG to edit -/datum/proc/VV_icon_edit_lock() - return list() - -/atom/VV_icon_edit_lock() - return ..() + list("icon", "icon_state", "overlays", "underlays") - -// The following vars require R_SPAWN|R_DEBUG to edit -/datum/proc/VV_ckey_edit() - return list() - -/mob/VV_ckey_edit() - return list("key", "ckey") - -/client/VV_ckey_edit() - return list("key", "ckey") - -/datum/proc/may_edit_var(var/user, var/var_to_edit) - if(!user) - return FALSE - if(!(var_to_edit in vars)) - to_chat(user, "\The [src] does not have a var '[var_to_edit]'") - return FALSE - if(var_to_edit in VV_static()) - return FALSE - if((var_to_edit in VV_secluded()) && !check_rights(R_ADMIN|R_DEBUG, FALSE, C = user)) - return FALSE - if((var_to_edit in VV_locked()) && !check_rights(R_DEBUG, C = user)) - return FALSE - if((var_to_edit in VV_ckey_edit()) && !check_rights(R_SPAWN|R_DEBUG, C = user)) - return FALSE - if((var_to_edit in VV_icon_edit_lock()) && !check_rights(R_FUN|R_DEBUG, C = user)) - return FALSE - return TRUE - -/proc/forbidden_varedit_object_types() - return list( - /datum/admins, //Admins editing their own admin-power object? Yup, sounds like a good idea., - /obj/machinery/blackbox_recorder, //Prevents people messing with feedback gathering, - /datum/feedback_variable //Prevents people messing with feedback gathering - ) \ No newline at end of file diff --git a/code/modules/admin/view_variables/helpers_deprecated.dm b/code/modules/admin/view_variables/helpers_deprecated.dm new file mode 100644 index 0000000000..1a7e44d4a5 --- /dev/null +++ b/code/modules/admin/view_variables/helpers_deprecated.dm @@ -0,0 +1,48 @@ +//This entire file needs to be removed eventually +/datum/proc/get_view_variables_options() + return "" + +/mob/get_view_variables_options() + return ..() + {" + + + + + + + + + + + + + + + + + + + + + + + + + + + + "} + +/mob/living/carbon/human/get_view_variables_options() + return ..() + {" + + + + + + "} + +/obj/get_view_variables_options() + return ..() + {" + + "} diff --git a/code/modules/admin/view_variables/mass_edit_variables.dm b/code/modules/admin/view_variables/mass_edit_variables.dm new file mode 100644 index 0000000000..7374759e8c --- /dev/null +++ b/code/modules/admin/view_variables/mass_edit_variables.dm @@ -0,0 +1,265 @@ +/client/proc/cmd_mass_modify_object_variables(atom/A, var_name) + set category = "Debug" + set name = "Mass Edit Variables" + set desc="(target) Edit all instances of a target item's variables" + + var/method = 0 //0 means strict type detection while 1 means this type and all subtypes (IE: /obj/item with this set to 1 will set it to ALL items) + + if(!check_rights(R_VAREDIT)) + return + + if(A && A.type) + method = vv_subtype_prompt(A.type) + + src.massmodify_variables(A, var_name, method) + feedback_add_details("admin_verb","MVV") //If you are copy-pasting this, ensure the 2nd parameter is unique to the new proc! + +/client/proc/massmodify_variables(datum/O, var_name = "", method = 0) + if(!check_rights(R_VAREDIT)) + return + if(!istype(O)) + return + + var/variable = "" + if(!var_name) + var/list/names = list() + for (var/V in O.vars) + names += V + + names = sortList(names) + + variable = input("Which var?", "Var") as null|anything in names + else + variable = var_name + + if(!variable || !O.can_vv_get(variable)) + return + var/default + var/var_value = O.vars[variable] + + if(variable in GLOB.VVckey_edit) + to_chat(src, "It's forbidden to mass-modify ckeys. It'll crash everyone's client you dummy.") + return + if(variable in GLOB.VVlocked) + if(!check_rights(R_DEBUG)) + return + if(variable in GLOB.VVicon_edit_lock) + if(!check_rights(R_FUN|R_DEBUG)) + return + if(variable in GLOB.VVpixelmovement) + if(!check_rights(R_DEBUG)) + return + var/prompt = alert(src, "Editing this var may irreparably break tile gliding for the rest of the round. THIS CAN'T BE UNDONE", "DANGER", "ABORT ", "Continue", " ABORT") + if (prompt != "Continue") + return + + default = vv_get_class(variable, var_value) + + if(isnull(default)) + to_chat(src, "Unable to determine variable type.") + else + to_chat(src, "Variable appears to be [uppertext(default)].") + + to_chat(src, "Variable contains: [var_value]") + + if(default == VV_NUM) + var/dir_text = "" + if(var_value > 0 && var_value < 16) + if(var_value & 1) + dir_text += "NORTH" + if(var_value & 2) + dir_text += "SOUTH" + if(var_value & 4) + dir_text += "EAST" + if(var_value & 8) + dir_text += "WEST" + + if(dir_text) + to_chat(src, "If a direction, direction is: [dir_text]") + + var/value = vv_get_value(default_class = default) + var/new_value = value["value"] + var/class = value["class"] + + if(!class || !new_value == null && class != VV_NULL) + return + + if (class == VV_MESSAGE) + class = VV_TEXT + + if (value["type"]) + class = VV_NEW_TYPE + + var/original_name = "[O]" + + var/rejected = 0 + var/accepted = 0 + + switch(class) + if(VV_RESTORE_DEFAULT) + to_chat(src, "Finding items...") + var/list/items = get_all_of_type(O.type, method) + to_chat(src, "Changing [items.len] items...") + for(var/thing in items) + if (!thing) + continue + var/datum/D = thing + if (D.vv_edit_var(variable, initial(D.vars[variable])) != FALSE) + accepted++ + else + rejected++ + CHECK_TICK + + if(VV_TEXT) + var/list/varsvars = vv_parse_text(O, new_value) + var/pre_processing = new_value + var/unique + if (varsvars && varsvars.len) + unique = alert(usr, "Process vars unique to each instance, or same for all?", "Variable Association", "Unique", "Same") + if(unique == "Unique") + unique = TRUE + else + unique = FALSE + for(var/V in varsvars) + new_value = replacetext(new_value,"\[[V]]","[O.vars[V]]") + + to_chat(src, "Finding items...") + var/list/items = get_all_of_type(O.type, method) + to_chat(src, "Changing [items.len] items...") + for(var/thing in items) + if (!thing) + continue + var/datum/D = thing + if(unique) + new_value = pre_processing + for(var/V in varsvars) + new_value = replacetext(new_value,"\[[V]]","[D.vars[V]]") + + if (D.vv_edit_var(variable, new_value) != FALSE) + accepted++ + else + rejected++ + CHECK_TICK + + if (VV_NEW_TYPE) + var/many = alert(src, "Create only one [value["type"]] and assign each or a new one for each thing", "How Many", "One", "Many", "Cancel") + if (many == "Cancel") + return + if (many == "Many") + many = TRUE + else + many = FALSE + + var/type = value["type"] + to_chat(src, "Finding items...") + var/list/items = get_all_of_type(O.type, method) + to_chat(src, "Changing [items.len] items...") + for(var/thing in items) + if (!thing) + continue + var/datum/D = thing + if(many && !new_value) + new_value = new type() + + if (D.vv_edit_var(variable, new_value) != FALSE) + accepted++ + else + rejected++ + new_value = null + CHECK_TICK + + else + to_chat(src, "Finding items...") + var/list/items = get_all_of_type(O.type, method) + to_chat(src, "Changing [items.len] items...") + for(var/thing in items) + if (!thing) + continue + var/datum/D = thing + if (D.vv_edit_var(variable, new_value) != FALSE) + accepted++ + else + rejected++ + CHECK_TICK + + + var/count = rejected+accepted + if (!count) + to_chat(src, "No objects found") + return + if (!accepted) + to_chat(src, "Every object rejected your edit") + return + if (rejected) + to_chat(src, "[rejected] out of [count] objects rejected your edit") + + log_world("### MassVarEdit by [src]: [O.type] (A/R [accepted]/[rejected]) [variable]=[html_encode("[O.vars[variable]]")]([list2params(value)])") + log_admin("[key_name(src)] mass modified [original_name]'s [variable] to [O.vars[variable]] ([accepted] objects modified)") + message_admins("[key_name_admin(src)] mass modified [original_name]'s [variable] to [O.vars[variable]] ([accepted] objects modified)") + + +/proc/get_all_of_type(var/T, subtypes = TRUE) + var/list/typecache = list() + typecache[T] = 1 + if (subtypes) + typecache = typecacheof(typecache) + . = list() + if (ispath(T, /mob)) + for(var/mob/thing in mob_list) + if (typecache[thing.type]) + . += thing + CHECK_TICK + + else if (ispath(T, /obj/machinery/door)) + for(var/obj/machinery/door/thing in world) + if (typecache[thing.type]) + . += thing + CHECK_TICK + + else if (ispath(T, /obj/machinery)) + for(var/obj/machinery/thing in machines) + if (typecache[thing.type]) + . += thing + CHECK_TICK + + else if (ispath(T, /obj)) + for(var/obj/thing in world) + if (typecache[thing.type]) + . += thing + CHECK_TICK + + else if (ispath(T, /atom/movable)) + for(var/atom/movable/thing in world) + if (typecache[thing.type]) + . += thing + CHECK_TICK + + else if (ispath(T, /turf)) + for(var/turf/thing in world) + if (typecache[thing.type]) + . += thing + CHECK_TICK + + else if (ispath(T, /atom)) + for(var/atom/thing in world) + if (typecache[thing.type]) + . += thing + CHECK_TICK + + else if (ispath(T, /client)) + for(var/client/thing in GLOB.clients) + if (typecache[thing.type]) + . += thing + CHECK_TICK + + else if (ispath(T, /datum)) + for(var/datum/thing) + if (typecache[thing.type]) + . += thing + CHECK_TICK + + else + for(var/datum/thing in world) + if (typecache[thing.type]) + . += thing + CHECK_TICK diff --git a/code/modules/admin/view_variables/modify_variables.dm b/code/modules/admin/view_variables/modify_variables.dm new file mode 100644 index 0000000000..b964339aa9 --- /dev/null +++ b/code/modules/admin/view_variables/modify_variables.dm @@ -0,0 +1,387 @@ +GLOBAL_LIST_INIT(VVlocked, list("vars", "datum_flags", "client", "mob")) //Requires DEBUG +GLOBAL_PROTECT(VVlocked) +GLOBAL_LIST_INIT(VVicon_edit_lock, list("icon", "icon_state", "overlays", "underlays")) //Requires DEBUG or FUN +GLOBAL_PROTECT(VVicon_edit_lock) +GLOBAL_LIST_INIT(VVckey_edit, list("key", "ckey")) //Requires DEBUG or SPAWN +GLOBAL_PROTECT(VVckey_edit) +GLOBAL_LIST_INIT(VVpixelmovement, list("bound_x", "bound_y", "step_x", "step_y", "step_size", "bound_height", "bound_width", "bounds")) //No editing ever. +GLOBAL_PROTECT(VVpixelmovement) + +/client/proc/vv_parse_text(O, new_var) + if(O && findtext(new_var,"\[")) + var/process_vars = alert(usr,"\[] detected in string, process as variables?","Process Variables?","Yes","No") + if(process_vars == "Yes") + . = string2listofvars(new_var, O) + +//do they want you to include subtypes? +//FALSE = no subtypes, strict exact type pathing (or the type doesn't have subtypes) +//TRUE = Yes subtypes +//NULL = User cancelled at the prompt or invalid type given +/client/proc/vv_subtype_prompt(var/type) + if (!ispath(type)) + return + var/list/subtypes = subtypesof(type) + if (!subtypes || !subtypes.len) + return FALSE + if (subtypes && subtypes.len) + switch(alert("Strict object type detection?", "Type detection", "Strictly this type","This type and subtypes", "Cancel")) + if("Strictly this type") + return FALSE + if("This type and subtypes") + return TRUE + else + return + +/client/proc/vv_reference_list(type, subtypes) + . = list() + var/list/types = list(type) + if (subtypes) + types = typesof(type) + + var/list/fancytypes = make_types_fancy(types) + + for(var/fancytype in fancytypes) //swap the assoication + types[fancytypes[fancytype]] = fancytype + + var/things = get_all_of_type(type, subtypes) + + var/i = 0 + for(var/thing in things) + var/datum/D = thing + i++ + //try one of 3 methods to shorten the type text: + // fancy type, + // fancy type with the base type removed from the begaining, + // the type with the base type removed from the begaining + var/fancytype = types[D.type] + if (findtext(fancytype, types[type])) + fancytype = copytext(fancytype, lentext(types[type])+1) + var/shorttype = copytext("[D.type]", lentext("[type]")+1) + if (lentext(shorttype) > lentext(fancytype)) + shorttype = fancytype + if (!lentext(shorttype)) + shorttype = "/" + + .["[D]([shorttype])\ref[D]#[i]"] = D + +/client/proc/mod_list_add_ass(atom/O) //hehe + + var/list/L = vv_get_value(restricted_classes = list(VV_RESTORE_DEFAULT)) + var/class = L["class"] + if (!class) + return + var/var_value = L["value"] + + if(class == VV_TEXT || class == VV_MESSAGE) + var/list/varsvars = vv_parse_text(O, var_value) + for(var/V in varsvars) + var_value = replacetext(var_value,"\[[V]]","[O.vars[V]]") + + return var_value + + +/client/proc/mod_list_add(list/L, atom/O, original_name, objectvar) + var/list/LL = vv_get_value(restricted_classes = list(VV_RESTORE_DEFAULT)) + var/class = LL["class"] + if (!class) + return + var/var_value = LL["value"] + + if(class == VV_TEXT || class == VV_MESSAGE) + var/list/varsvars = vv_parse_text(O, var_value) + for(var/V in varsvars) + var_value = replacetext(var_value,"\[[V]]","[O.vars[V]]") + + if (O) + L = L.Copy() + + L += var_value + + switch(alert("Would you like to associate a value with the list entry?",,"Yes","No")) + if("Yes") + L[var_value] = mod_list_add_ass(O) //hehe + if (O) + if (O.vv_edit_var(objectvar, L) == FALSE) + to_chat(src, "Your edit was rejected by the object.") + return + log_world("### ListVarEdit by [src]: [(O ? O.type : "/list")] [objectvar]: ADDED=[var_value]") + log_admin("[key_name(src)] modified [original_name]'s [objectvar]: ADDED=[var_value]") + message_admins("[key_name_admin(src)] modified [original_name]'s [objectvar]: ADDED=[var_value]") + +/client/proc/mod_list(list/L, atom/O, original_name, objectvar, index, autodetect_class = FALSE) + if(!check_rights(R_VAREDIT)) + return + if(!istype(L, /list)) + to_chat(src, "Not a List.") + return + + if(L.len > 1000) + var/confirm = alert(src, "The list you're trying to edit is very long, continuing may crash the server.", "Warning", "Continue", "Abort") + if(confirm != "Continue") + return + + + + var/list/names = list() + for (var/i in 1 to L.len) + var/key = L[i] + var/value + if (IS_NORMAL_LIST(L) && !isnum(key)) + value = L[key] + if (value == null) + value = "null" + names["#[i] [key] = [value]"] = i + if (!index) + var/variable = input("Which var?","Var") as null|anything in names + "(ADD VAR)" + "(CLEAR NULLS)" + "(CLEAR DUPES)" + "(SHUFFLE)" + + if(variable == null) + return + + if(variable == "(ADD VAR)") + mod_list_add(L, O, original_name, objectvar) + return + + if(variable == "(CLEAR NULLS)") + L = L.Copy() + listclearnulls(L) + if (!O.vv_edit_var(objectvar, L)) + to_chat(src, "Your edit was rejected by the object.") + return + log_world("### ListVarEdit by [src]: [O.type] [objectvar]: CLEAR NULLS") + log_admin("[key_name(src)] modified [original_name]'s [objectvar]: CLEAR NULLS") + message_admins("[key_name_admin(src)] modified [original_name]'s list [objectvar]: CLEAR NULLS") + return + + if(variable == "(CLEAR DUPES)") + L = uniqueList(L) + if (!O.vv_edit_var(objectvar, L)) + to_chat(src, "Your edit was rejected by the object.") + return + log_world("### ListVarEdit by [src]: [O.type] [objectvar]: CLEAR DUPES") + log_admin("[key_name(src)] modified [original_name]'s [objectvar]: CLEAR DUPES") + message_admins("[key_name_admin(src)] modified [original_name]'s list [objectvar]: CLEAR DUPES") + return + + if(variable == "(SHUFFLE)") + L = shuffle(L) + if (!O.vv_edit_var(objectvar, L)) + to_chat(src, "Your edit was rejected by the object.") + return + log_world("### ListVarEdit by [src]: [O.type] [objectvar]: SHUFFLE") + log_admin("[key_name(src)] modified [original_name]'s [objectvar]: SHUFFLE") + message_admins("[key_name_admin(src)] modified [original_name]'s list [objectvar]: SHUFFLE") + return + + index = names[variable] + + + var/assoc_key + if (index == null) + return + var/assoc = 0 + var/prompt = alert(src, "Do you want to edit the key or its assigned value?", "Associated List", "Key", "Assigned Value", "Cancel") + if (prompt == "Cancel") + return + if (prompt == "Assigned Value") + assoc = 1 + assoc_key = L[index] + var/default + var/variable + var/old_assoc_value //EXPERIMENTAL - Keep old associated value while modifying key, if any + if (assoc) + variable = L[assoc_key] + else + variable = L[index] + //EXPERIMENTAL - Keep old associated value while modifying key, if any + var/found = L[variable] + if(!isnull(found)) + old_assoc_value = found + // + + default = vv_get_class(objectvar, variable) + + to_chat(src, "Variable appears to be [uppertext(default)].") + + to_chat(src, "Variable contains: [variable]") + + if(default == VV_NUM) + var/dir_text = "" + var/tdir = variable + if(tdir > 0 && tdir < 16) + if(tdir & 1) + dir_text += "NORTH" + if(tdir & 2) + dir_text += "SOUTH" + if(tdir & 4) + dir_text += "EAST" + if(tdir & 8) + dir_text += "WEST" + + if(dir_text) + to_chat(usr, "If a direction, direction is: [dir_text]") + + var/original_var = variable + + if (O) + L = L.Copy() + var/class + if(autodetect_class) + if (default == VV_TEXT) + default = VV_MESSAGE + class = default + var/list/LL = vv_get_value(default_class = default, current_value = original_var, restricted_classes = list(VV_RESTORE_DEFAULT), extra_classes = list(VV_LIST, "DELETE FROM LIST")) + class = LL["class"] + if (!class) + return + var/new_var = LL["value"] + + if(class == VV_MESSAGE) + class = VV_TEXT + + switch(class) //Spits a runtime error if you try to modify an entry in the contents list. Dunno how to fix it, yet. + if(VV_LIST) + mod_list(variable, O, original_name, objectvar) + + if("DELETE FROM LIST") + L.Cut(index, index+1) + if (O) + if (O.vv_edit_var(objectvar, L)) + to_chat(src, "Your edit was rejected by the object.") + return + log_world("### ListVarEdit by [src]: [O.type] [objectvar]: REMOVED=[html_encode("[original_var]")]") + log_admin("[key_name(src)] modified [original_name]'s [objectvar]: REMOVED=[original_var]") + message_admins("[key_name_admin(src)] modified [original_name]'s [objectvar]: REMOVED=[original_var]") + return + + if(VV_TEXT) + var/list/varsvars = vv_parse_text(O, new_var) + for(var/V in varsvars) + new_var = replacetext(new_var,"\[[V]]","[O.vars[V]]") + + + if(assoc) + L[assoc_key] = new_var + else + L[index] = new_var + if(!isnull(old_assoc_value) && IS_VALID_ASSOC_KEY(new_var)) + L[new_var] = old_assoc_value + if (O) + if (O.vv_edit_var(objectvar, L) == FALSE) + to_chat(src, "Your edit was rejected by the object.") + return + log_world("### ListVarEdit by [src]: [(O ? O.type : "/list")] [objectvar]: [original_var]=[new_var]") + log_admin("[key_name(src)] modified [original_name]'s [objectvar]: [original_var]=[new_var]") + message_admins("[key_name_admin(src)] modified [original_name]'s varlist [objectvar]: [original_var]=[new_var]") + +/proc/vv_varname_lockcheck(param_var_name) + if(param_var_name in GLOB.VVlocked) + if(!check_rights(R_DEBUG)) + return FALSE + if(param_var_name in GLOB.VVckey_edit) + if(!check_rights(R_SPAWN|R_DEBUG)) + return FALSE + if(param_var_name in GLOB.VVicon_edit_lock) + if(!check_rights(R_FUN|R_DEBUG)) + return FALSE + return TRUE + +/client/proc/modify_variables(atom/O, param_var_name = null, autodetect_class = 0) + if(!check_rights(R_VAREDIT)) + return + + var/class + var/variable + var/var_value + + if(param_var_name) + if(!param_var_name in O.vars) + to_chat(src, "A variable with this name ([param_var_name]) doesn't exist in this datum ([O])") + return + variable = param_var_name + + else + var/list/names = list() + for (var/V in O.vars) + names += V + + names = sortList(names) + + variable = input("Which var?","Var") as null|anything in names + if(!variable) + return + + if(!O.can_vv_get(variable)) + return + + var_value = O.vars[variable] + if(!vv_varname_lockcheck(variable)) + return + + var/default = vv_get_class(variable, var_value) + + if(isnull(default)) + to_chat(src, "Unable to determine variable type.") + else + to_chat(src, "Variable appears to be [uppertext(default)].") + + to_chat(src, "Variable contains: [var_value]") + + if(default == VV_NUM) + var/dir_text = "" + if(var_value > 0 && var_value < 16) + if(var_value & 1) + dir_text += "NORTH" + if(var_value & 2) + dir_text += "SOUTH" + if(var_value & 4) + dir_text += "EAST" + if(var_value & 8) + dir_text += "WEST" + + if(dir_text) + to_chat(src, "If a direction, direction is: [dir_text]") + + if(autodetect_class && default != VV_NULL) + if (default == VV_TEXT) + default = VV_MESSAGE + class = default + + var/list/value = vv_get_value(class, default, var_value, extra_classes = list(VV_LIST), var_name = variable) + class = value["class"] + + if (!class) + return + var/var_new = value["value"] + + if(class == VV_MESSAGE) + class = VV_TEXT + + var/original_name = "[O]" + + switch(class) + if(VV_LIST) + if(!islist(var_value)) + mod_list(list(), O, original_name, variable) + + mod_list(var_value, O, original_name, variable) + return + + if(VV_RESTORE_DEFAULT) + var_new = initial(O.vars[variable]) + + if(VV_TEXT) + var/list/varsvars = vv_parse_text(O, var_new) + for(var/V in varsvars) + var_new = replacetext(var_new,"\[[V]]","[O.vars[V]]") + + + if (O.vv_edit_var(variable, var_new) == FALSE) + to_chat(src, "Your edit was rejected by the object.") + return + vv_update_display(O, "varedited", VV_MSG_EDITED) + log_world("### VarEdit by [key_name(src)]: [O.type] [variable]=[var_value] => [var_new]") + log_admin("[key_name(src)] modified [original_name]'s [variable] from [html_encode("[var_value]")] to [html_encode("[var_new]")]") + var/msg = "[key_name_admin(src)] modified [original_name]'s [variable] from [var_value] to [var_new]" + message_admins(msg) + admin_ticket_log(O, msg) + return TRUE diff --git a/code/modules/admin/view_variables/topic.dm b/code/modules/admin/view_variables/topic.dm index 16550f6712..35cff902d8 100644 --- a/code/modules/admin/view_variables/topic.dm +++ b/code/modules/admin/view_variables/topic.dm @@ -1,8 +1,12 @@ - +//DO NOT ADD MORE TO THIS FILE. +//Use vv_do_topic()! /client/proc/view_var_Topic(href, href_list, hsrc) - //This should all be moved over to datum/admins/Topic() or something ~Carn - if( (usr.client != src) || !src.holder ) + if((usr.client != src) || !src.holder) return + var/datum/target = locate(href_list["target"]) + if(target) + target.vv_do_topic(href_list) + if(href_list["Vars"]) debug_variables(locate(href_list["Vars"])) @@ -163,11 +167,12 @@ href_list["datumrefresh"] = href_list["make_skeleton"] else if(href_list["delall"]) - if(!check_rights(R_DEBUG|R_SERVER)) return + if(!check_rights(R_DEBUG|R_SERVER)) + return var/obj/O = locate(href_list["delall"]) if(!isobj(O)) - usr << "This can only be used on instances of type /obj" + to_chat(usr, "This can only be used on instances of type /obj") return var/action_type = alert("Strict type ([O.type]) or type and all subtypes?",,"Strict type","Type and subtypes","Cancel") @@ -188,55 +193,24 @@ if(Obj.type == O_type) i++ qdel(Obj) + CHECK_TICK if(!i) - usr << "No objects of this type exist" + to_chat(usr, "No objects of this type exist") return - log_admin("[key_name(usr)] deleted all objects of type [O_type] ([i] objects deleted)") - message_admins("[key_name(usr)] deleted all objects of type [O_type] ([i] objects deleted)") + log_admin("[key_name(usr)] deleted all objects of type [O_type] ([i] objects deleted) ") + message_admins("[key_name(usr)] deleted all objects of type [O_type] ([i] objects deleted) ") if("Type and subtypes") var/i = 0 for(var/obj/Obj in world) if(istype(Obj,O_type)) i++ qdel(Obj) + CHECK_TICK if(!i) - usr << "No objects of this type exist" + to_chat(usr, "No objects of this type exist") return - log_admin("[key_name(usr)] deleted all objects of type or subtype of [O_type] ([i] objects deleted)") - message_admins("[key_name(usr)] deleted all objects of type or subtype of [O_type] ([i] objects deleted)") - - else if(href_list["explode"]) - if(!check_rights(R_DEBUG|R_FUN)) return - - var/atom/A = locate(href_list["explode"]) - if(!isobj(A) && !ismob(A) && !isturf(A)) - usr << "This can only be done to instances of type /obj, /mob and /turf" - return - - src.cmd_admin_explosion(A) - href_list["datumrefresh"] = href_list["explode"] - - else if(href_list["emp"]) - if(!check_rights(R_DEBUG|R_FUN)) return - - var/atom/A = locate(href_list["emp"]) - if(!isobj(A) && !ismob(A) && !isturf(A)) - usr << "This can only be done to instances of type /obj, /mob and /turf" - return - - src.cmd_admin_emp(A) - href_list["datumrefresh"] = href_list["emp"] - - else if(href_list["mark_object"]) - if(!check_rights(0)) return - - var/datum/D = locate(href_list["mark_object"]) - if(!istype(D)) - usr << "This can only be done to instances of type /datum" - return - - src.holder.marked_datum = D - href_list["datumrefresh"] = href_list["mark_object"] + log_admin("[key_name(usr)] deleted all objects of type or subtype of [O_type] ([i] objects deleted) ") + message_admins("[key_name(usr)] deleted all objects of type or subtype of [O_type] ([i] objects deleted) ") else if(href_list["rotatedatum"]) if(!check_rights(0)) return @@ -519,15 +493,31 @@ log_admin("[key_name(usr)] dealt [amount] amount of [Text] damage to [L]") message_admins("[key_name(usr)] dealt [amount] amount of [Text] damage to [L]") href_list["datumrefresh"] = href_list["mobToDamage"] - - else if(href_list["call_proc"]) - var/datum/D = locate(href_list["call_proc"]) - if(istype(D) || istype(D, /client)) // can call on clients too, not just datums - callproc_targetpicked(1, D) + else if(href_list["expose"]) + if(!check_rights(R_ADMIN, FALSE)) + return + var/thing = locate(href_list["expose"]) + if(!thing) //Do NOT QDELETED check! + return + var/value = vv_get_value(VV_CLIENT) + if (value["class"] != VV_CLIENT) + return + var/client/C = value["value"] + if (!C) + return + var/prompt = alert("Do you want to grant [C] access to view this VV window? (they will not be able to edit or change anysrc nor open nested vv windows unless they themselves are an admin)", "Confirm", "Yes", "No") + if (prompt != "Yes") + return + if(!thing) + to_chat(usr, "The object you tried to expose to [C] no longer exists (GC'd)") + return + message_admins("[key_name_admin(usr)] Showed [key_name_admin(C)] a VV window") + log_admin("Admin [key_name(usr)] Showed [key_name(C)] a VV window of a [src]") + to_chat(C, "[holder.fakekey ? "an Administrator" : "[usr.client.key]"] has granted you access to view a View Variables window") + C.debug_variables(thing) if(href_list["datumrefresh"]) var/datum/DAT = locate(href_list["datumrefresh"]) if(istype(DAT, /datum) || istype(DAT, /client)) debug_variables(DAT) - return diff --git a/code/modules/admin/view_variables/view_variables.dm b/code/modules/admin/view_variables/view_variables.dm index cb110d4e86..efa6f424f1 100644 --- a/code/modules/admin/view_variables/view_variables.dm +++ b/code/modules/admin/view_variables/view_variables.dm @@ -1,183 +1,284 @@ - -// Variables to not even show in the list. -// step_* and bound_* are here because they literally break the game and do nothing else. -// parent_type is here because it's pointless to show in VV. -/var/list/view_variables_hide_vars = list("bound_x", "bound_y", "bound_height", "bound_width", "bounds", "parent_type", "step_x", "step_y", "step_size") -// Variables not to expand the lists of. Vars is pointless to expand, and overlays/underlays cannot be expanded. -/var/list/view_variables_dont_expand = list("overlays", "underlays", "vars") - /client/proc/debug_variables(datum/D in world) set category = "Debug" set name = "View Variables" + //set src in world + var/static/cookieoffset = rand(1, 9999) //to force cookies to reset after the round. - if(!check_rights(0)) + if(!usr.client || !usr.client.holder) //The usr vs src abuse in this proc is intentional and must not be changed + to_chat(usr, "You need to be an administrator to access this.") return if(!D) return - var/icon/sprite - if(istype(D, /atom)) - var/atom/A = D - if(A.icon && A.icon_state) - sprite = icon(A.icon, A.icon_state) - usr << browse_rsc(sprite, "view_vars_sprite.png") + var/islist = islist(D) + if (!islist && !istype(D)) + return - usr << browse_rsc('code/js/view_variables.js', "view_variables.js") + var/title = "" + var/refid = "\ref[D]" + var/icon/sprite + var/hash + + var/type = /list + if (!islist) + type = D.type + + if(istype(D, /atom)) + var/atom/AT = D + if(AT.icon && AT.icon_state) + sprite = new /icon(AT.icon, AT.icon_state) + hash = md5(AT.icon) + hash = md5(hash + AT.icon_state) + src << browse_rsc(sprite, "vv[hash].png") + + title = "[D] (\ref[D]) = [type]" + var/formatted_type = replacetext("[type]", "/", "/") + + var/sprite_text + if(sprite) + sprite_text = "
    +
    " + var/list/header = islist(D)? list("/list") : D.vv_get_header() + + var/marked + if(holder && holder.marked_datum && holder.marked_datum == D) + marked = VV_MSG_MARKED + var/varedited_line = "" + if(!islist && (D.datum_flags & DF_VAR_EDITED)) + varedited_line = VV_MSG_EDITED + var/deleted_line + if(!islist && D.gc_destroyed) + deleted_line = VV_MSG_DELETED + + var/list/dropdownoptions = list() + var/autoconvert_dropdown = FALSE + if (islist) + dropdownoptions = list( + "---", + "Add Item" = "?_src_=vars;listadd=[refid]", + "Remove Nulls" = "?_src_=vars;listnulls=[refid]", + "Remove Dupes" = "?_src_=vars;listdupes=[refid]", + "Set len" = "?_src_=vars;listlen=[refid]", + "Shuffle" = "?_src_=vars;listshuffle=[refid]", + "Show VV To Player" = "?_src_=vars;expose=[refid]" + ) + autoconvert_dropdown = TRUE + else + dropdownoptions = D.vv_get_dropdown() + var/list/dropdownoptions_html = list() + if(autoconvert_dropdown) + for (var/name in dropdownoptions) + var/link = dropdownoptions[name] + if (link) + dropdownoptions_html += "" + else + dropdownoptions_html += "" + else + dropdownoptions_html = dropdownoptions + D.get_view_variables_options() + + var/list/names = list() + if (!islist) + for (var/V in D.vars) + names += V + sleep(1)//For some reason, without this sleep, VVing will cause client to disconnect on certain objects. + + var/list/variable_html = list() + if (islist) + var/list/L = D + for (var/i in 1 to L.len) + var/key = L[i] + var/value + if (IS_NORMAL_LIST(L) && !isnum(key)) + value = L[key] + variable_html += debug_variable(i, value, 0, D) + else + + names = sortList(names) + for (var/V in names) + if(D.can_vv_get(V)) + variable_html += D.vv_get_var(V) var/html = {" - - - - [D] (\ref[D] - [D.type]) - - - -
    - + + + [title] + + + + +
    +
    + -
    - - [sprite ? "" : ""] - -
    [D.get_view_variables_header()]
    + + + + +
    + [sprite_text] +
    + [header.Join()] +
    +
    - [replacetext("[D.type]", "/", "/")] - [holder.marked_datum == D ? "
    Marked Object" : ""] + [formatted_type] + [marked] + [varedited_line] + [deleted_line]
    - Refresh + Refresh
    - + + [dropdownoptions_html.Join()]
    -
    -
    - - E - Edit, tries to determine the variable type by itself.
    - C - Change, asks you for the var type first.
    - M - Mass modify: changes this variable for all objects of this type.
    -
    -
    - + +
    + +
    + + E - Edit, tries to determine the variable type by itself.
    + C - Change, asks you for the var type first.
    + M - Mass modify: changes this variable for all objects of this type.
    +
    +
    + + -
    Search:
    - +
    -
    -
      - [make_view_variables_var_list(D)] -
    - - - "} +
    +
    +
      + [variable_html.Join()] +
    + + + +"} + src << browse(html, "window=variables[refid];size=475x650") - usr << browse(html, "window=variables\ref[D];size=475x650") - - -/proc/make_view_variables_var_list(datum/D) - . = "" - var/list/variables = list() - for(var/x in D.vars) - if(x in view_variables_hide_vars) - continue - variables += x - variables = sortList(variables) - for(var/x in variables) - . += make_view_variables_var_entry(D, x, D.vars[x]) - -/proc/make_view_variables_var_entry(datum/D, varname, value, level=0) - var/ecm = null - var/vtext = null - var/extra = null - - if(D) - ecm = {" - (E) - (C) - (M) - "} - - if(isnull(value)) - vtext = "null" - else if(istext(value)) - vtext = "\"[value]\"" - else if(isicon(value)) - vtext = "[value]" - else if(isfile(value)) - vtext = "'[value]'" - else if(istype(value, /datum)) - var/datum/DA = value - if("[DA]" == "[DA.type]" || !"[DA]") - vtext = "\ref[DA] - [DA.type]" - else - vtext = "\ref[DA] - [DA] ([DA.type])" - else if(istype(value, /client)) - var/client/C = value - vtext = "\ref[C] - [C] ([C.type])" - else if(islist(value)) - var/list/L = value - var/removed = 0 - if(varname == "contents") - var/list/original = value - L = original.Copy() //We'll take a copy to manipulate - removed = D.view_variables_filter_contents(L) - vtext = "/list ([L.len]+[removed]H)" - if(!(varname in view_variables_dont_expand) && L.len > 0 && L.len < 100) - extra = "
      " - var/index = 1 - for (var/entry in L) - if(istext(entry)) - extra += make_view_variables_var_entry(null, entry, L[entry], level+1) - else - extra += make_view_variables_var_entry(null, index, L[index], level+1) - index++ - extra += "
    " - else - vtext = "[value]" - - return "
  • [ecm][varname] = [vtext][extra]
  • " - -//Allows us to mask out some contents when it's not necessary to show them -//For example, organs on humans, as the organs are stored in other lists which will also be present -//So there's really no need to list them twice. -/datum/proc/view_variables_filter_contents(list/L) - return 0 //Return how many items you removed. - -/mob/living/carbon/human/view_variables_filter_contents(list/L) - . = ..() - L -= ability_master - .++ - -/mob/living/carbon/human/view_variables_filter_contents(list/L) - . = ..() - var/len_before = L.len - L -= organs - L -= internal_organs - . += len_before - L.len +/client/proc/vv_update_display(datum/D, span, content) + src << output("[span]:[content]", "variables\ref[D].browser:replace_span") diff --git a/code/modules/ai/__readme.dm b/code/modules/ai/__readme.dm new file mode 100644 index 0000000000..85b49ec6cb --- /dev/null +++ b/code/modules/ai/__readme.dm @@ -0,0 +1,201 @@ +/* +[Summary] + +This module contains an AI implementation designed to be (at the base level) mobtype-agnostic, +by being held inside a datum instead of being written into the mob directly. More specialized +subtypes of the base AI may be designed with a specific mob type in mind, but the base system +should be compatible with most types of mobs which have the needed Interfaces in place to +support them. + +When designing a new mob, all that is needed to give a mob an AI is to set +its 'ai_holder_type' variable to the path of the AI that is desired. + + +[Seperation] + +In previous iterations of AI systems, the AI is generally written into the mob's code directly, +which has some advantages, but often makes the code rigid, and also tied the speed of the AI +to the mob's own ticker, meaning it could only decide every two seconds. + +Instead, this version has the code for the AI held inside an /datum/ai_holder object, +which is carried by the mob it controls. This gives some advantages; + All /mob/living mobs can potentially have an AI applied to them, and utilize the + same base code while adding specialized code on top. + + Interfaces allow the base AI code to not need to know what particular mode it's controlling. + + The processing of the AI is independant of the mob's Life() cycle, which allows for a + different clock rate. + + Seperating the AI from the mob simplies the mob's code greatly. + + It is more logical to think that a mob is the 'body', where as its ai_holder is + the 'mind'. + + AIs can be applied or disabled on the fly by instantiating or deleting the + ai_holder, if needed. + + +The current implementation also has some disadvantages, but they can perhaps be resolved +in the future. + AI-driven mob movement and attack speed is tied to half-second delays due to the + AI subsystem ticking at that rate. Porting the timer subsystem and integrating + callbacks into basic AI actions (moving, attacking) can potentially resolve that. + + It can be difficult to modify AI variables at mob instantiation without an ugly + delay, as the ai_holder might not exist yet. + + +[Flow of Processing] + +Terrible visual representation here; +AI Subsystem -> Every 0.5s -> /datum/ai_holder/handle_tactics() -> switch(stance)... + -> Every 2.0s -> /datum/ai_holder/handle_strategicals() -> switch(stance)... + +The AI datum is not processed by the mob itself, but instead it is directly processed +by a new AI subsystem. The AI subsystem contains a list of all active ai_holder +objects, which is iterated every tick to process each individual ai_holder +object attached to a mob. + +Each ai_holder actually has two 'tracks' for processing, a 'fast' track +and a 'slow' track. + +The fast track is named handle_tactics(), and is called every 0.5 seconds. + +The slow track is named handle_strategicals(), and is called every 2 seconds. + +When an ai_holder is iterated on inside the AI subsystem's list, it first +calls that ai_holder's handle_tactics(). It will then call that ai_holder's +handle_strategicals() every fourth tick, effectively doing so every two seconds. + +Both functions do different things depending on which 'stance' the +ai_holder is in. See the Stances section for more information. + +The fast track is for 'cheap' processing that needs to happen fast, such as +walking along a path, initiating an attack, or firing a gun. The rate that +it is called allows for the ai_holder to interact with the world through +its mob very often, giving a more convincing appearance of intelligence, +allowing for faster reaction times to certain events, and allowing for +variable attack speeds that would not be possible when bound to a +two second Life() cycle. + +The slow track, on the other hand, is for 'expensive' processing that might +be too demanding on the CPU to do every half a second, such as +re/calculating an A* path (if the mob uses A*), or running a complicated +tension assessment to determine how brave the mob is feeling. This is the +same delay used for certain tasks in the old implementation, but it is less +noticable due to the mob appearing to do things inbetween those two seconds. + +The purpose of having two tracks is to allow for 'fast' and 'slow' actions +to be more easily encapsulated, and ensures that all ai_holders are syncronized +with each other, as opposed to having individual tick counters inside all of +the ai_holder instances. It should be noted that handle_tactics() is always +called first, before handle_strategicals() every two seconds. + +[Process Skipping] + +An ai_holder object can choose to enter a 'busy' state, or a 'sleep' state, +in order to avoid processing. + +When busy, the AI subsystem will skip over the ai_holder until it is no +longer busy. The busy state is intended to be short-term, and is usually +toggled by the mob when doing something with a delay, so that the ai_holder +does not accidentally do something to inturrupt something important, like +a special attack. + +The longer term alternative to the busy state is the sleep state. Unlike +being busy, an ai_holder set to sleep will remove itself from the +AI subsystem's list, meaning it will no longer process until something +else 'wakes' it. This is usually done when the mob dies or a client +logs into an AI-controlled mob (and the AI is not set to ignore that, +with the autopilot variable). If the mob is revived, the AI will be +awakened automatically. + +The ai_holder functions, and mob functions that are called by the +ai_holder, should not be sleep()ed, as it will block the AI Subsystem +from processing the other ai_holders until the sleep() finishes. +Delays on the mob typically have set waitfor = FALSE, or spawn() is used. + + +[Stances] + +The AI has a large number of states that it can be in, called stances. +The AI will act in a specific way depending on which stance it is in, +and only one stance can be active at a time. This effectively creates +a state pattern. + +To change the stance, set_stance() is used, with the new stance as +the first argument. It should be noted that the change is not immediate, +and it will react to the change next tick instead of immediately switching +to the new stance and acting on that in the same tick. This is done to help +avoid infinite loops (I.E. Stance A switches to Stance B, which then +switches to Stance A, and so on...), and the delay is very short so +it should not be an issue. + +See code/__defines/mob.dm for a list of stance defines, and descriptions +about their purpose. Generally, each stance has its own file in the AI +module folder and are mostly self contained, however some files instead +deal with general things that other stances may require, such as targeting +or movement. + +[Interfaces] + +Interfaces are a concept that is used to help bridge the gap between +the ai_holder, and its mob. Because the (base) ai_holder is explicitly +designed to not be specific to any type of mob, all that it knows is +that it is controlling a /mob/living mob. Some mobs work very differently, +between mob types such as /mob/living/simple_mob, /mob/living/silicon/robot, +/mob/living/carbon/human, and more. + +The solution to the vast differences between mob types is to have the +mob itself deal with how to handle a specific task, such as attacking +something, talking, moving, etc. Interfaces exist to do this. + +Interfaces are applied on the mob-side, and are generally specific to +that mob type. This lets the ai_holder not have to worry about specific +implementations and instead just tell the Interface that it wants to attack +something, or move into a tile. The AI does not need to know if the mob its +controlling has hands, instead that is the mob's responsibility. + +Interface functions have an uppercase I at the start of the function name, +and then the function they are bridging between the AI and the mob +(if it exists), e.g. IMove(), IAttack(), ISay(). + +Interfaces are also used for the AI to ask its mob if it can do certain +things, without having to actually know what type of mob it is attached to. +For example, ICheckRangedAttack() tells the AI if it is possible to do a +ranged attack. For simple_mobs, they can if a ranged projectile type was set, +where as for a human mob, it could check if a gun is in a hand. For a borg, +it could check if a gun is inside their current module. + +[Say List] + +A /datum/say_list is a very light datum that holds a list of strings for the +AI to have their mob say based on certain conditions, such as when threatening +to kill another mob. Despite the name, a say_list also can contain emotes +and some sounds. + +The reason that it is in a seperate datum is to allow for multiple mob types +to have the same text, even when inheritence cannot do that, such as +mercenaries and fake piloted mecha mobs. + +The say_list datum is applied to the mob itself and not held inside the AI datum. + +[Subtypes] + +Some subtypes of ai_holder are more specialized, but remain compatible with +most mob types. There are many different subtypes that make the AI act different +by overriding a function, such as kiting their target, moving up close while +using ranged attacks, or running away if not cloaked. + +Other subtypes are very specific about what kind of mob it controls, and trying +to apply them to a different type of mob will likely result in a lot of bugs +or ASSERT() failures. The xenobio slime AI is an example of the latter. + +To use a specific subtype on a mob, all that is needed is setting the mob's +ai_holder_type to the subtype desired, and it will create that subtype when +the mob is initialize()d. Switching to a subtype 'live' will require additional +effort on the coder. + + +*/ \ No newline at end of file diff --git a/code/modules/ai/_defines.dm b/code/modules/ai/_defines.dm new file mode 100644 index 0000000000..e94d26b3c3 --- /dev/null +++ b/code/modules/ai/_defines.dm @@ -0,0 +1,29 @@ +// Defines for the ai_intelligence var. +// Controls if the mob will do 'advanced tactics' like running from grenades. +#define AI_DUMB 1 // Be dumber than usual. +#define AI_NORMAL 2 // Default level. +#define AI_SMART 3 // Will do more processing to be a little smarter, like not walking while confused if it could risk stepping randomly onto a bad tile. + +#define ai_log(M,V) if(debug_ai) ai_log_output(M,V) + +// Logging level defines. +#define AI_LOG_OFF 0 // Don't show anything. +#define AI_LOG_ERROR 1 // Show logs of things likely causing the mob to not be functioning correctly. +#define AI_LOG_WARNING 2 // Show less serious but still helpful to know issues that might be causing things to work incorrectly. +#define AI_LOG_INFO 3 // Important regular events, like selecting a target or switching stances. +#define AI_LOG_DEBUG 4 // More detailed information about the flow of execution. +#define AI_LOG_TRACE 5 // Even more detailed than the last. Will absolutely flood your chatlog. + +// Results of pre-movement checks. +// Todo: Move outside AI code? +#define MOVEMENT_ON_COOLDOWN -1 // Recently moved and needs to try again soon. +#define MOVEMENT_FAILED 0 // Move() returned false for whatever reason and the mob didn't move. +#define MOVEMENT_SUCCESSFUL 1 // Move() returned true and the mob hopefully moved. + +// Reasons for targets to not be valid. Based on why, the AI responds differently. +#define AI_TARGET_VALID 0 // We can fight them. +#define AI_TARGET_INVIS 1 // They were in field of view but became invisible. Switch to STANCE_BLINDFIGHT if no other viable targets exist. +#define AI_TARGET_NOSIGHT 2 // No longer in field of view. Go STANCE_REPOSITION to their last known location if no other targets are seen. +#define AI_TARGET_ALLY 3 // They are an ally. Find a new target. +#define AI_TARGET_DEAD 4 // They're dead. Find a new target. +#define AI_TARGET_INVINCIBLE 5 // Target is currently unable to receive damage for whatever reason. Find a new target or wait. diff --git a/code/modules/ai/aI_holder_subtypes/simple_mob_ai.dm b/code/modules/ai/aI_holder_subtypes/simple_mob_ai.dm new file mode 100644 index 0000000000..45a3067a1b --- /dev/null +++ b/code/modules/ai/aI_holder_subtypes/simple_mob_ai.dm @@ -0,0 +1,152 @@ +// Base AIs for simple mobs. +// Mob-specific AIs are in their mob's file. + +/datum/ai_holder/simple_mob + hostile = TRUE // The majority of simplemobs are hostile. + retaliate = TRUE // The majority of simplemobs will fight back. + cooperative = TRUE + returns_home = FALSE + can_flee = FALSE + speak_chance = 1 // If the mob's saylist is empty, nothing will happen. + wander = TRUE + base_wander_delay = 4 + +// For non-hostile animals, and pets like Ian and Runtime. +/datum/ai_holder/simple_mob/passive + hostile = FALSE + retaliate = FALSE + can_flee = TRUE + violent_breakthrough = FALSE + base_wander_delay = 8 //vorestation edit, to make pets slow. + +// Won't wander away as quickly, ideal for event-spawned mobs like carp or drones. +/datum/ai_holder/simple_mob/event + base_wander_delay = 8 + +// Will keep the mob within a limited radius of its home, useful for guarding an area +/datum/ai_holder/simple_mob/guard + returns_home = TRUE + +// Won't return home while it's busy doing something else, like chasing a player +/datum/ai_holder/simple_mob/guard/give_chase + home_low_priority = TRUE + +// Doesn't really act until told to by something on the outside. +/datum/ai_holder/simple_mob/inert + hostile = FALSE + retaliate = FALSE + can_flee = FALSE + wander = FALSE + speak_chance = 0 + cooperative = FALSE + violent_breakthrough = FALSE // So it can open doors but not attack windows and shatter the literal illusion. + +// Used for technomancer illusions, to resemble player movement better. +/datum/ai_holder/simple_mob/inert/astar + use_astar = TRUE + +// Ranged mobs. + +/datum/ai_holder/simple_mob/ranged +// ranged = TRUE + +// Tries to not waste ammo. +/datum/ai_holder/simple_mob/ranged/careful + conserve_ammo = TRUE + +/datum/ai_holder/simple_mob/ranged/pointblank + pointblank = TRUE + +// Runs away from its target if within a certain distance. +/datum/ai_holder/simple_mob/ranged/kiting + pointblank = TRUE // So we don't need to copypaste post_melee_attack(). + var/run_if_this_close = 4 // If anything gets within this range, it'll try to move away. + var/moonwalk = TRUE // If true, mob turns to face the target while kiting, otherwise they turn in the direction they moved towards. + +/datum/ai_holder/simple_mob/ranged/kiting/threatening + threaten = TRUE + threaten_delay = 1 SECOND // Less of a threat and more of pre-attack notice. + threaten_timeout = 30 SECONDS + conserve_ammo = TRUE + +// For event-spawned malf drones. +/datum/ai_holder/simple_mob/ranged/kiting/threatening/event + base_wander_delay = 8 + +/datum/ai_holder/simple_mob/ranged/kiting/no_moonwalk + moonwalk = FALSE + +/datum/ai_holder/simple_mob/ranged/kiting/on_engagement(atom/A) + if(get_dist(holder, A) < run_if_this_close) + holder.IMove(get_step_away(holder, A, run_if_this_close)) + if(moonwalk) + holder.face_atom(A) + +// Closes distance from the target even while in range. +/datum/ai_holder/simple_mob/ranged/aggressive + pointblank = TRUE + var/closest_distance = 1 // How close to get to the target. By default they will get into melee range (and then pointblank them). + +/datum/ai_holder/simple_mob/ranged/aggressive/on_engagement(atom/A) + if(get_dist(holder, A) > closest_distance) + holder.IMove(get_step_towards(holder, A)) + holder.face_atom(A) + +// Yakkity saxes while firing at you. +/datum/ai_holder/hostile/ranged/robust/on_engagement(atom/movable/AM) + step_rand(holder) + holder.face_atom(AM) + +// Switches intents based on specific criteria. +// Used for special mobs who do different things based on intents (and aren't slimes). +// Intent switching is generally done in pre_[ranged/special]_attack(), so that the mob can use the right attack for the right time. +/datum/ai_holder/simple_mob/intentional + + +// These try to avoid collateral damage. +/datum/ai_holder/simple_mob/restrained + violent_breakthrough = FALSE + conserve_ammo = TRUE + destructive = FALSE + +// This does the opposite of the above subtype. +/datum/ai_holder/simple_mob/destructive + destructive = TRUE + +// Melee mobs. + +/datum/ai_holder/simple_mob/melee + +// Dances around the enemy its fighting, making it harder to fight back. +/datum/ai_holder/simple_mob/melee/evasive + +/datum/ai_holder/simple_mob/melee/evasive/post_melee_attack(atom/A) + if(holder.Adjacent(A)) + holder.IMove(get_step(holder, pick(alldirs))) + holder.face_atom(A) + + + +// This AI hits something, then runs away for awhile. +// It will (almost) always flee if they are uncloaked, AND their target is not stunned. +/datum/ai_holder/simple_mob/melee/hit_and_run + can_flee = TRUE + +// Used for the 'running' part of hit and run. +/datum/ai_holder/simple_mob/melee/hit_and_run/special_flee_check() + if(!holder.is_cloaked()) + if(isliving(target)) + var/mob/living/L = target + return !L.incapacitated(INCAPACITATION_DISABLED) // Don't flee if our target is stunned in some form, even if uncloaked. This is so the mob keeps attacking a stunned opponent. + return TRUE // We're out in the open, uncloaked, and our target isn't stunned, so lets flee. + return FALSE + + +// Simple mobs that aren't hostile, but will fight back. +/datum/ai_holder/simple_mob/retaliate + hostile = FALSE + retaliate = TRUE + +// Simple mobs that retaliate and support others in their faction who get attacked. +/datum/ai_holder/simple_mob/retaliate/cooperative + cooperative = TRUE diff --git a/code/modules/ai/aI_holder_subtypes/slime_xenobio_ai.dm b/code/modules/ai/aI_holder_subtypes/slime_xenobio_ai.dm new file mode 100644 index 0000000000..f3356eb375 --- /dev/null +++ b/code/modules/ai/aI_holder_subtypes/slime_xenobio_ai.dm @@ -0,0 +1,275 @@ +// Specialized AI for slime simplemobs. +// Unlike the parent AI code, this will probably break a lot of things if you put it on something that isn't /mob/living/simple_mob/slime/xenobio + +/datum/ai_holder/simple_mob/xenobio_slime + hostile = TRUE + cooperative = TRUE + firing_lanes = TRUE + mauling = TRUE // They need it to get the most out of monkeys. + var/rabid = FALSE // Will attack regardless of discipline. + var/discipline = 0 // Beating slimes makes them less likely to lash out. In theory. + var/resentment = 0 // 'Unjustified' beatings make this go up, and makes it more likely for abused slimes to go rabid. + var/obedience = 0 // Conversely, 'justified' beatings make this go up, and makes discipline decay slower, potentially making it not decay at all. + + var/always_stun = FALSE // If true, the slime will elect to attempt to permastun the target. + + var/last_discipline_decay = null // Last world.time discipline was reduced from decay. + var/discipline_decay_time = 5 SECONDS // Earliest that one discipline can decay. + +/datum/ai_holder/simple_mob/xenobio_slime/sapphire + always_stun = TRUE // They know that stuns are godly. + intelligence_level = AI_SMART // Also knows not to walk while confused if it risks death. + +/datum/ai_holder/simple_mob/xenobio_slime/light_pink + discipline = 10 + obedience = 10 + +/datum/ai_holder/simple_mob/xenobio_slime/passive/New() // For Kendrick. + ..() + pacify() + +/datum/ai_holder/simple_mob/xenobio_slime/New() + ..() + ASSERT(istype(holder, /mob/living/simple_mob/slime/xenobio)) + +// Checks if disciplining the slime would be 'justified' right now. +/datum/ai_holder/simple_mob/xenobio_slime/proc/is_justified_to_discipline() + ai_log("xenobio_slime/is_justified_to_discipline() : Entered.", AI_LOG_TRACE) + if(!can_act()) + ai_log("xenobio_slime/is_justified_to_discipline() : Judged to be unjustified because we cannot act. Exiting.", AI_LOG_DEBUG) + return FALSE // The slime considers it abuse if they get stunned while already stunned. + if(rabid) + ai_log("xenobio_slime/is_justified_to_discipline() : Judged to be justified because we're rabid. Exiting.", AI_LOG_TRACE) + return TRUE + if(target && can_attack(target)) + if(ishuman(target)) + var/mob/living/carbon/human/H = target + if(istype(H.species, /datum/species/monkey)) + ai_log("xenobio_slime/is_justified_to_discipline() : Judged to be unjustified because we're targeting a monkey. Exiting.", AI_LOG_DEBUG) + return FALSE // Attacking monkeys is okay. + ai_log("xenobio_slime/is_justified_to_discipline() : Judged to be justified because we are targeting a non-monkey. Exiting.", AI_LOG_TRACE) + return TRUE // Otherwise attacking other things is bad. + ai_log("xenobio_slime/is_justified_to_discipline() : Judged to be unjustified because we are not targeting anything. Exiting.", AI_LOG_DEBUG) + return FALSE // Not attacking anything. + +/datum/ai_holder/simple_mob/xenobio_slime/proc/can_command(mob/living/commander) + if(rabid) + return FALSE + if(!hostile) + return SLIME_COMMAND_OBEY +// if(commander in friends) +// return SLIME_COMMAND_FRIEND + if(holder.IIsAlly(commander)) + return SLIME_COMMAND_FACTION + if(discipline > resentment && obedience >= 5) + return SLIME_COMMAND_OBEY + return FALSE + +/datum/ai_holder/simple_mob/xenobio_slime/proc/adjust_discipline(amount, silent) + var/mob/living/simple_mob/slime/xenobio/my_slime = holder + if(amount > 0) + if(rabid) + return + var/justified = my_slime.is_justified_to_discipline() // This will also consider the AI-side of that proc. + lost_target() // Stop attacking. + + if(justified) + obedience++ + if(!silent) + holder.say(pick("Fine...", "Okay...", "Sorry...", "I yield...", "Mercy...")) + else + if(prob(resentment * 20)) + enrage() + holder.say(pick("Evil...", "Kill...", "Tyrant...")) + else + if(!silent) + holder.say(pick("Why...?", "I don't understand...?", "Cruel...", "Stop...", "Nooo...")) + resentment++ // Done after check so first time will never enrage. + + discipline = between(0, discipline + amount, 10) + my_slime.update_mood() + +// This slime always enrages if disciplined. +/datum/ai_holder/simple_mob/xenobio_slime/red/adjust_discipline(amount, silent) + if(amount > 0 && !rabid) + holder.say("Grrr...") + holder.add_modifier(/datum/modifier/berserk, 30 SECONDS) + enrage() + +/datum/ai_holder/simple_mob/xenobio_slime/handle_special_strategical() + discipline_decay() + +// Handles decay of discipline. +/datum/ai_holder/simple_mob/xenobio_slime/proc/discipline_decay() + if(discipline > 0 && last_discipline_decay + discipline_decay_time < world.time) + if(!prob(75 + (obedience * 5))) + adjust_discipline(-1) + last_discipline_decay = world.time + +/datum/ai_holder/simple_mob/xenobio_slime/handle_special_tactic() + evolve_and_reproduce() + +// Hit the correct verbs to keep the slime species going. +/datum/ai_holder/simple_mob/xenobio_slime/proc/evolve_and_reproduce() + var/mob/living/simple_mob/slime/xenobio/my_slime = holder + if(my_slime.amount_grown >= 10) + // Press the correct verb when we can. + if(my_slime.is_adult) + my_slime.reproduce() // Splits into four new baby slimes. + else + my_slime.evolve() // Turns our holder into an adult slime. + + +// Called when pushed too far (or a red slime core was used). +/datum/ai_holder/simple_mob/xenobio_slime/proc/enrage() + var/mob/living/simple_mob/slime/xenobio/my_slime = holder + if(my_slime.harmless) + return + rabid = TRUE + my_slime.update_mood() + my_slime.visible_message(span("danger", "\The [src] enrages!")) + +// Called when using a pacification agent (or it's Kendrick being initalized). +/datum/ai_holder/simple_mob/xenobio_slime/proc/pacify() + lost_target() // So it stops trying to kill them. + rabid = FALSE + hostile = FALSE + retaliate = FALSE + cooperative = FALSE + +// The holder's attack changes based on intent. This lets the AI choose what effect is desired. +/datum/ai_holder/simple_mob/xenobio_slime/pre_melee_attack(atom/A) + if(istype(A, /mob/living)) + var/mob/living/L = A + var/mob/living/simple_mob/slime/xenobio/my_slime = holder + + if( (!L.lying && prob(30 + (my_slime.power_charge * 7) ) || (!L.lying && always_stun) )) + my_slime.a_intent = I_DISARM // Stun them first. + else if(my_slime.can_consume(L) && L.lying) + my_slime.a_intent = I_GRAB // Then eat them. + else + my_slime.a_intent = I_HURT // Otherwise robust them. + +/datum/ai_holder/simple_mob/xenobio_slime/closest_distance(atom/movable/AM) + if(istype(AM, /mob/living)) + var/mob/living/L = AM + if(ishuman(L)) + var/mob/living/carbon/human/H = L + if(istype(H.species, /datum/species/monkey)) + return 1 // Otherwise ranged slimes will eat a lot less often. + if(L.stat >= UNCONSCIOUS) + return 1 // Melee (eat) the target if dead/dying, don't shoot it. + return ..() + +/datum/ai_holder/simple_mob/xenobio_slime/can_attack(atom/movable/AM) + . = ..() + if(.) // Do some additional checks because we have Special Code(tm). + if(ishuman(AM)) + var/mob/living/carbon/human/H = AM + if(istype(H.species, /datum/species/monkey)) // istype() is so they'll eat the alien monkeys too. + return TRUE // Monkeys are always food (sorry Pun Pun). + else if(H.species && H.species.name == SPECIES_PROMETHEAN) + return FALSE // Prometheans are always our friends. + if(discipline && !rabid) + return FALSE // We're a good slime. + +// Commands, reactions, etc +/datum/ai_holder/simple_mob/xenobio_slime/on_hear_say(mob/living/speaker, message) + ai_log("xenobio_slime/on_hear_say([speaker], [message]) : Entered.", AI_LOG_DEBUG) + var/mob/living/simple_mob/slime/xenobio/my_slime = holder + + if((findtext(message, num2text(my_slime.number)) || findtext(message, my_slime.name) || findtext(message, "slimes"))) // Talking to us. + + // First, make sure it's actually a player saying something and not an AI, or else we risk infinite loops. + if(!speaker.client) + return + + // Are all slimes being referred to? + // var/mass_order = FALSE + // if(findtext(message, "slimes")) + // mass_order = TRUE + + // Say hello back. + if(findtext(message, "hello") || findtext(message, "hi") || findtext(message, "greetings")) + delayed_say(pick("Hello...", "Hi..."), speaker) + + // Follow request. + if(findtext(message, "follow") || findtext(message, "come with me")) + if(!can_command(speaker)) + delayed_say(pick("No...", "I won't follow..."), speaker) + return + + delayed_say("Yes... I follow \the [speaker]...", speaker) + set_follow(speaker) + + // Squish request. + if(findtext(message , "squish")) + if(!can_command(speaker)) + delayed_say("No...", speaker) + return + + spawn(rand(1 SECOND, 2 SECONDS)) + if(!src || !holder || !can_act()) // We might've died/got deleted/etc in the meantime. + return + my_slime.squish() + + + // Stop request. + if(findtext(message, "stop") || findtext(message, "halt") || findtext(message, "cease")) + if(my_slime.victim) // We're being asked to stop eatting someone. + if(!can_command(speaker) || !is_justified_to_discipline()) + delayed_say("No...", speaker) + return + else + delayed_say("Fine...", speaker) + adjust_discipline(1, TRUE) + my_slime.stop_consumption() + + if(target) // We're being asked to stop chasing someone. + if(!can_command(speaker) || !is_justified_to_discipline()) + delayed_say("No...", speaker) + return + else + delayed_say("Fine...", speaker) + adjust_discipline(1, TRUE) // This must come before losing the target or it will be unjustified. + lost_target() + + + if(leader) // We're being asked to stop following someone. + if(can_command(speaker) == SLIME_COMMAND_FRIEND || leader == speaker) + delayed_say("Yes... I'll stop...", speaker) + lose_follow() + else + delayed_say("No... I'll keep following \the [leader]...", speaker) + + /* // Commented out since its mostly useless now due to slimes refusing to attack if it would make them naughty. + // Murder request + if(findtext(message, "harm") || findtext(message, "attack") || findtext(message, "kill") || findtext(message, "murder") || findtext(message, "eat") || findtext(message, "consume") || findtext(message, "absorb")) + if(can_command(speaker) < SLIME_COMMAND_FACTION) + delayed_say("No...", speaker) + return + + for(var/mob/living/L in view(7, my_slime) - list(my_slime, speaker)) + if(L == src) + continue // Don't target ourselves. + var/list/valid_names = splittext(L.name, " ") // Should output list("John", "Doe") as an example. + for(var/line in valid_names) // Check each part of someone's name. + if(findtext(message, lowertext(line))) // If part of someone's name is in the command, the slime targets them if allowed to. + if(!(mass_order && line == "slime")) //don't think random other slimes are target + if(can_attack(L)) + delayed_say("Okay... I attack \the [L]...", speaker) + give_target(L) + return + else + delayed_say("No... I won't attack \the [L].", speaker) + return + + // If we're here, it couldn't find anyone with that name. + delayed_say("No... I don't know who to attack...", speaker) + */ + ai_log("xenobio_slime/on_hear_say() : Exited.", AI_LOG_DEBUG) + +/datum/ai_holder/simple_mob/xenobio_slime/can_violently_breakthrough() + if(discipline && !rabid) // Good slimes don't shatter the windows because their buddy in an adjacent cell decided to piss off Slimesky. + return FALSE + return ..() \ No newline at end of file diff --git a/code/modules/ai/ai_holder.dm b/code/modules/ai/ai_holder.dm new file mode 100644 index 0000000000..4ef5507d5b --- /dev/null +++ b/code/modules/ai/ai_holder.dm @@ -0,0 +1,290 @@ +// This is a datum-based artificial intelligence for simple mobs (and possibly others) to use. +// The neat thing with having this here instead of on the mob is that it is independant of Life(), and that different mobs +// can use a more or less complex AI by giving it a different datum. + +/mob/living + var/datum/ai_holder/ai_holder = null + var/ai_holder_type = null // Which ai_holder datum to give to the mob when initialized. If null, nothing happens. + +/mob/living/Initialize() + if(ai_holder_type) + ai_holder = new ai_holder_type(src) + return ..() + +/mob/living/Destroy() + QDEL_NULL(ai_holder) + return ..() + +/datum/ai_holder + var/mob/living/holder = null // The mob this datum is going to control. + var/stance = STANCE_IDLE // Determines if the mob should be doing a specific thing, e.g. attacking, following, standing around, etc. + var/intelligence_level = AI_NORMAL // Adjust to make the AI be intentionally dumber, or make it more robust (e.g. dodging grenades). + var/autopilot = FALSE // If true, the AI won't be deactivated if a client gets attached to the AI's mob. + var/busy = FALSE // If true, the ticker will skip processing this mob until this is false. Good for if you need the + // mob to stay still (e.g. delayed attacking). If you need the mob to be inactive for an extended period of time, + // consider sleeping the AI instead. + + + +/datum/ai_holder/hostile + hostile = TRUE + +/datum/ai_holder/retaliate + hostile = TRUE + retaliate = TRUE + +/datum/ai_holder/New(var/new_holder) + ASSERT(new_holder) + holder = new_holder + SSai.processing += src + home_turf = get_turf(holder) + ..() + +/datum/ai_holder/Destroy() + holder = null + SSai.processing -= src // We might've already been asleep and removed, but byond won't care if we do this again and it saves a conditional. + home_turf = null + return ..() + + +// Now for the actual AI stuff. + +// Makes this ai holder not get processed. +// Called automatically when the host mob is killed. +// Potential future optimization would be to sleep AIs which mobs that are far away from in-round players. +/datum/ai_holder/proc/go_sleep() + if(stance == STANCE_SLEEP) + return + forget_everything() // If we ever wake up, its really unlikely that our current memory will be of use. + set_stance(STANCE_SLEEP) + SSai.processing -= src + +// Reverses the above proc. +// Revived mobs will wake their AI if they have one. +/datum/ai_holder/proc/go_wake() + if(stance != STANCE_SLEEP) + return + if(!should_wake()) + return + set_stance(STANCE_IDLE) + SSai.processing += src + +/datum/ai_holder/proc/should_wake() + if(holder.client && !autopilot) + return FALSE + if(holder.stat >= DEAD) + return FALSE + return TRUE + +// Resets a lot of 'memory' vars. +/datum/ai_holder/proc/forget_everything() + // Some of these might be redundant, but hopefully this prevents future bugs if that changes. + lose_follow() + lose_target() + lose_target_position() + give_up_movement() + +// 'Tactical' processes such as moving a step, meleeing an enemy, firing a projectile, and other fairly cheap actions that need to happen quickly. +/datum/ai_holder/proc/handle_tactics() + if(busy) + return + handle_special_tactic() + handle_stance_tactical() + +// 'Strategical' processes that are more expensive on the CPU and so don't get run as often as the above proc, such as A* pathfinding or robust targeting. +/datum/ai_holder/proc/handle_strategicals() + if(busy) + return + handle_special_strategical() + handle_stance_strategical() + +// Override these for special things without polluting the main loop. +/datum/ai_holder/proc/handle_special_tactic() + +/datum/ai_holder/proc/handle_special_strategical() + +/* + //AI Actions + if(!ai_inactive) + //Stanceyness + handle_stance() + + //Movement + if(!stop_automated_movement && wander && !anchored) //Allowed to move? + handle_wander_movement() + + //Speaking + if(speak_chance && stance == STANCE_IDLE) // Allowed to chatter? + handle_idle_speaking() + + //Resisting out buckles + if(stance != STANCE_IDLE && incapacitated(INCAPACITATION_BUCKLED_PARTIALLY)) + handle_resist() + + //Resisting out of closets + if(istype(loc,/obj/structure/closet)) + var/obj/structure/closet/C = loc + if(C.welded) + resist() + else + C.open() +*/ + +// For setting the stance WITHOUT processing it +/datum/ai_holder/proc/set_stance(var/new_stance) + ai_log("set_stance() : Setting stance from [stance] to [new_stance].", AI_LOG_INFO) + stance = new_stance + if(stance_coloring) // For debugging or really weird mobs. + stance_color() + +// This is called every half a second. +/datum/ai_holder/proc/handle_stance_tactical() + ai_log("========= Fast Process Beginning ==========", AI_LOG_TRACE) // This is to make it easier visually to disinguish between 'blocks' of what a tick did. + ai_log("handle_stance_tactical() : Called.", AI_LOG_TRACE) + + if(stance == STANCE_SLEEP) + ai_log("handle_stance_tactical() : Going to sleep.", AI_LOG_TRACE) + go_sleep() + return + + if(target && can_see_target(target)) + track_target_position() + + if(stance != STANCE_DISABLED && is_disabled()) // Stunned/confused/etc + ai_log("handle_stance_tactical() : Disabled.", AI_LOG_TRACE) + set_stance(STANCE_DISABLED) + return + + if(stance in STANCES_COMBAT) + // Should resist? We check this before fleeing so that we can actually flee and not be trapped in a chair. + if(holder.incapacitated(INCAPACITATION_BUCKLED_PARTIALLY)) + ai_log("handle_stance_tactical() : Going to handle_resist().", AI_LOG_TRACE) + handle_resist() + + else if(istype(holder.loc, /obj/structure/closet)) + var/obj/structure/closet/C = holder.loc + ai_log("handle_stance_tactical() : Inside a closet. Going to attempt escape.", AI_LOG_TRACE) + if(C.sealed) + holder.resist() + else + C.open() + + // Should we flee? + if(should_flee()) + ai_log("handle_stance_tactical() : Going to flee.", AI_LOG_TRACE) + set_stance(STANCE_FLEE) + return + + switch(stance) + if(STANCE_IDLE) + if(should_go_home()) + ai_log("handle_stance_tactical() : STANCE_IDLE, going to go home.", AI_LOG_TRACE) + go_home() + + else if(should_follow_leader()) + ai_log("handle_stance_tactical() : STANCE_IDLE, going to follow leader.", AI_LOG_TRACE) + set_stance(STANCE_FOLLOW) + + else if(should_wander()) + ai_log("handle_stance_tactical() : STANCE_IDLE, going to wander randomly.", AI_LOG_TRACE) + handle_wander_movement() + + if(STANCE_ALERT) + ai_log("handle_stance_tactical() : STANCE_ALERT, going to threaten_target().", AI_LOG_TRACE) + threaten_target() + + if(STANCE_APPROACH) + ai_log("handle_stance_tactical() : STANCE_APPROACH, going to walk_to_target().", AI_LOG_TRACE) + walk_to_target() + + if(STANCE_FIGHT) + ai_log("handle_stance_tactical() : STANCE_FIGHT, going to engage_target().", AI_LOG_TRACE) + engage_target() + + if(STANCE_MOVE) + ai_log("handle_stance_tactical() : STANCE_MOVE, going to walk_to_destination().", AI_LOG_TRACE) + walk_to_destination() + + if(STANCE_REPOSITION) // This is the same as above but doesn't stop if an enemy is visible since its an 'in-combat' move order. + ai_log("handle_stance_tactical() : STANCE_REPOSITION, going to walk_to_destination().", AI_LOG_TRACE) + walk_to_destination() + + if(STANCE_FOLLOW) + ai_log("handle_stance_tactical() : STANCE_FOLLOW, going to walk_to_leader().", AI_LOG_TRACE) + walk_to_leader() + + if(STANCE_FLEE) + ai_log("handle_stance_tactical() : STANCE_FLEE, going to flee_from_target().", AI_LOG_TRACE) + flee_from_target() + + if(STANCE_DISABLED) + ai_log("handle_stance_tactical() : STANCE_DISABLED.", AI_LOG_TRACE) + if(!is_disabled()) + ai_log("handle_stance_tactical() : No longer disabled.", AI_LOG_TRACE) + set_stance(STANCE_IDLE) + else + handle_disabled() + + ai_log("handle_stance_tactical() : Exiting.", AI_LOG_TRACE) + ai_log("========= Fast Process Ending ==========", AI_LOG_TRACE) + +// This is called every two seconds. +/datum/ai_holder/proc/handle_stance_strategical() + ai_log("++++++++++ Slow Process Beginning ++++++++++", AI_LOG_TRACE) + ai_log("handle_stance_strategical() : Called.", AI_LOG_TRACE) + + switch(stance) + if(STANCE_IDLE) + + if(speak_chance) // In the long loop since otherwise it wont shut up. + handle_idle_speaking() + + if(hostile) + ai_log("handle_stance_strategical() : STANCE_IDLE, going to find_target().", AI_LOG_TRACE) + find_target() + if(STANCE_APPROACH) + if(target) + ai_log("handle_stance_strategical() : STANCE_APPROACH, going to calculate_path([target]).", AI_LOG_TRACE) + calculate_path(target) + if(STANCE_MOVE) + if(hostile && find_target()) // This will switch its stance. + ai_log("handle_stance_strategical() : STANCE_MOVE, found target and was inturrupted.", AI_LOG_TRACE) + if(STANCE_FOLLOW) + if(hostile && find_target()) // This will switch its stance. + ai_log("handle_stance_strategical() : STANCE_FOLLOW, found target and was inturrupted.", AI_LOG_TRACE) + else if(leader) + ai_log("handle_stance_strategical() : STANCE_FOLLOW, going to calculate_path([leader]).", AI_LOG_TRACE) + calculate_path(leader) + + ai_log("handle_stance_strategical() : Exiting.", AI_LOG_TRACE) + ai_log("++++++++++ Slow Process Ending ++++++++++", AI_LOG_TRACE) + + +// Helper proc to turn AI 'busy' mode on or off without having to check if there is an AI, to simplify writing code. +/mob/living/proc/set_AI_busy(value) + if(ai_holder) + ai_holder.busy = value + +/mob/living/proc/is_AI_busy() + if(!ai_holder) + return FALSE + return ai_holder.busy + +// Helper proc to check for the AI's stance. +// Returns null if there's no AI holder, or the mob has a player and autopilot is not on. +// Otherwise returns the stance. +/mob/living/proc/get_AI_stance() + if(!ai_holder) + return null + if(client && !ai_holder.autopilot) + return null + return ai_holder.stance + +// Similar to above but only returns 1 or 0. +/mob/living/proc/has_AI() + return get_AI_stance() ? TRUE : FALSE + +// 'Taunts' the AI into attacking the taunter. +/mob/living/proc/taunt(atom/movable/taunter, force_target_switch = FALSE) + if(ai_holder) + ai_holder.receive_taunt(taunter, force_target_switch) \ No newline at end of file diff --git a/code/modules/ai/ai_holder_combat.dm b/code/modules/ai/ai_holder_combat.dm new file mode 100644 index 0000000000..12cf9e2436 --- /dev/null +++ b/code/modules/ai/ai_holder_combat.dm @@ -0,0 +1,329 @@ +// This file is for actual fighting. Targeting is in a seperate file. + +/datum/ai_holder + var/firing_lanes = TRUE // If ture, tries to refrain from shooting allies or the wall. + var/conserve_ammo = FALSE // If true, the mob will avoid shooting anything that does not have a chance to hit a mob. Requires firing_lanes to be true. + var/pointblank = FALSE // If ranged is true, and this is true, people adjacent to the mob will suffer the ranged instead of using a melee attack. + + var/can_breakthrough = TRUE // If false, the AI will not try to open a path to its goal, like opening doors. + var/violent_breakthrough = TRUE // If false, the AI is not allowed to destroy things like windows or other structures in the way. Requires above var to be true. + + var/stand_ground = FALSE // If true, the AI won't try to get closer to an enemy if out of range. + + +// This does the actual attacking. +/datum/ai_holder/proc/engage_target() + ai_log("engage_target() : Entering.", AI_LOG_DEBUG) + + // Can we still see them? +// if(!target || !can_attack(target) || (!(target in list_targets())) ) + if(!target || !can_attack(target)) + ai_log("engage_target() : Lost sight of target.", AI_LOG_TRACE) + lose_target() // We lost them. + + if(!find_target()) // If we can't get a new one, then wait for a bit and then time out. + set_stance(STANCE_IDLE) + lost_target() + ai_log("engage_target() : No more targets. Exiting.", AI_LOG_DEBUG) + return + // if(lose_target_time + lose_target_timeout < world.time) + // ai_log("engage_target() : Unseen enemy timed out.", AI_LOG_TRACE) + // set_stance(STANCE_IDLE) // It must've been the wind. + // lost_target() + // ai_log("engage_target() : Exiting.", AI_LOG_DEBUG) + // return + + // // But maybe we do one last ditch effort. + // if(!target_last_seen_turf || intelligence_level < AI_SMART) + // ai_log("engage_target() : No last known position or is too dumb to fight unseen enemies.", AI_LOG_TRACE) + // set_stance(STANCE_IDLE) + // else + // ai_log("engage_target() : Fighting unseen enemy.", AI_LOG_TRACE) + // engage_unseen_enemy() + else + ai_log("engage_target() : Got new target ([target]).", AI_LOG_TRACE) + + var/distance = get_dist(holder, target) + ai_log("engage_target() : Distance to target ([target]) is [distance].", AI_LOG_TRACE) + holder.face_atom(target) + last_conflict_time = world.time + + request_help() // Call our allies. + + // Do a 'special' attack, if one is allowed. +// if(prob(special_attack_prob) && (distance >= special_attack_min_range) && (distance <= special_attack_max_range)) + if(holder.ICheckSpecialAttack(target)) + ai_log("engage_target() : Attempting a special attack.", AI_LOG_TRACE) + on_engagement(target) + if(special_attack(target)) // If this fails, then we try a regular melee/ranged attack. + ai_log("engage_target() : Successful special attack. Exiting.", AI_LOG_DEBUG) + return + + // Stab them. + else if(distance <= 1 && !pointblank) + ai_log("engage_target() : Attempting a melee attack.", AI_LOG_TRACE) + on_engagement(target) + melee_attack(target) + + // Shoot them. + else if(holder.ICheckRangedAttack(target) && (distance <= max_range(target)) ) + on_engagement(target) + if(firing_lanes && !test_projectile_safety(target)) + // Nudge them a bit, maybe they can shoot next time. + var/turf/T = get_step(holder, pick(cardinal)) + if(T) + holder.IMove(T) // IMove() will respect movement cooldown. + holder.face_atom(target) + ai_log("engage_target() : Could not safely fire at target. Exiting.", AI_LOG_DEBUG) + return + + ai_log("engage_target() : Attempting a ranged attack.", AI_LOG_TRACE) + ranged_attack(target) + + // Run after them. + else if(!stand_ground) + ai_log("engage_target() : Target ([target]) too far away. Exiting.", AI_LOG_DEBUG) + set_stance(STANCE_APPROACH) + +// We're not entirely sure how holder will do melee attacks since any /mob/living could be holder, but we don't have to care because Interfaces. +/datum/ai_holder/proc/melee_attack(atom/A) + pre_melee_attack(A) + . = holder.IAttack(A) + if(.) + post_melee_attack(A) + +// Ditto. +/datum/ai_holder/proc/ranged_attack(atom/A) + pre_ranged_attack(A) + . = holder.IRangedAttack(A) + if(.) + post_ranged_attack(A) + +// Most mobs probably won't have this defined but we don't care. +/datum/ai_holder/proc/special_attack(atom/movable/AM) + pre_special_attack(AM) + . = holder.ISpecialAttack(AM) + if(.) + post_special_attack(AM) + +// Called when within striking/shooting distance, however cooldown is not considered. +// Override to do things like move in a random step for evasiveness. +// Note that this is called BEFORE the attack. +/datum/ai_holder/proc/on_engagement(atom/A) + +// Called before a ranged attack is attempted. +/datum/ai_holder/proc/pre_ranged_attack(atom/A) + +// Called before a melee attack is attempted. +/datum/ai_holder/proc/pre_melee_attack(atom/A) + +// Called before a 'special' attack is attempted. +/datum/ai_holder/proc/pre_special_attack(atom/A) + +// Called after a successful (IE not on cooldown) ranged attack. +// Note that this is not whether the projectile actually hit, just that one was launched. +/datum/ai_holder/proc/post_ranged_attack(atom/A) + +// Ditto but for melee. +/datum/ai_holder/proc/post_melee_attack(atom/A) + +// And one more for special snowflake attacks. +/datum/ai_holder/proc/post_special_attack(atom/A) + +// Used to make sure projectiles will probably hit the target and not the wall or a friend. +/datum/ai_holder/proc/test_projectile_safety(atom/movable/AM) + ai_log("test_projectile_safety([AM]) : Entering.", AI_LOG_TRACE) + + // If they're right next to us then lets just say yes. check_trajectory() tends to spaz out otherwise. + if(holder.Adjacent(AM)) + ai_log("test_projectile_safety() : Adjacent to target. Exiting with TRUE.", AI_LOG_TRACE) + return TRUE + + // This will hold a list of all mobs in a line, even those behind the target, and possibly the wall. + // By default the test projectile goes through things like glass and grilles, which is desirable as otherwise the AI won't try to shoot through windows. + var/list/hit_things = check_trajectory(AM, holder) // This isn't always reliable but its better than the previous method. + + // Test to see if the primary target actually has a chance to get hit. + // We'll fire anyways if not, if we have conserve_ammo turned off. + var/would_hit_primary_target = FALSE + if(AM in hit_things) + would_hit_primary_target = TRUE + ai_log("test_projectile_safety() : Test projectile did[!would_hit_primary_target ? " NOT " : " "]hit \the [AM]", AI_LOG_DEBUG) + + // Make sure we don't have a chance to shoot our friends. + for(var/a in hit_things) + var/atom/A = a + ai_log("test_projectile_safety() : Evaluating \the [A] ([A.type]).", AI_LOG_TRACE) + if(isliving(A)) // Don't shoot at our friends, even if they're behind the target, as RNG can make them get hit. + var/mob/living/L = A + if(holder.IIsAlly(L)) + ai_log("test_projectile_safety() : Would threaten ally, exiting with FALSE.", AI_LOG_DEBUG) + return FALSE + + // Don't fire if we cannot hit the primary target, and we wish to be conservative with our projectiles. + // We make an exception for turf targets because manual commanded AIs targeting the floor are generally intending to fire blindly. + if(!would_hit_primary_target && !isturf(AM) && conserve_ammo) + ai_log("test_projectile_safety() : conserve_ammo is set, and test projectile failed to hit primary target. Exiting with FALSE.", AI_LOG_DEBUG) + return FALSE + + ai_log("test_projectile_safety() : Passed other tests, exiting with TRUE.", AI_LOG_TRACE) + return TRUE + +// Test if we are within range to attempt an attack, melee or ranged. +/datum/ai_holder/proc/within_range(atom/movable/AM) + var/distance = get_dist(holder, AM) + if(distance <= 1) + return TRUE // Can melee. + else if(holder.ICheckRangedAttack(AM) && distance <= max_range(AM)) + return TRUE // Can shoot. + return FALSE + +// Determines how close the AI will move to its target. +/datum/ai_holder/proc/closest_distance(atom/movable/AM) + return max(max_range(AM) - 1, 1) // Max range -1 just because we don't want to constantly get kited + +// Can be used to conditionally do a ranged or melee attack. +/datum/ai_holder/proc/max_range(atom/movable/AM) + return holder.ICheckRangedAttack(AM) ? 7 : 1 + +// Goes to the target, to attack them. +// Called when in STANCE_APPROACH. +/datum/ai_holder/proc/walk_to_target() + ai_log("walk_to_target() : Entering.", AI_LOG_DEBUG) + // Make sure we can still chase/attack them. + if(!target || !can_attack(target)) + ai_log("walk_to_target() : Lost target.", AI_LOG_INFO) + if(!find_target()) + lost_target() + ai_log("walk_to_target() : Exiting.", AI_LOG_DEBUG) + return + else + ai_log("walk_to_target() : Found new target ([target]).", AI_LOG_INFO) + + // Find out where we're going. + var/get_to = closest_distance(target) + var/distance = get_dist(holder, target) + ai_log("walk_to_target() : get_to is [get_to].", AI_LOG_TRACE) + + // We're here! + // Special case: Our holder has a special attack that is ranged, but normally the holder uses melee. + // If that happens, we'll switch to STANCE_FIGHT so they can use it. If the special attack is limited, they'll likely switch back next tick. + if(distance <= get_to || holder.ICheckSpecialAttack(target)) + ai_log("walk_to_target() : Within range.", AI_LOG_INFO) + forget_path() + set_stance(STANCE_FIGHT) + ai_log("walk_to_target() : Exiting.", AI_LOG_DEBUG) + return + + + // Otherwise keep walking. + if(!stand_ground) + walk_path(target, get_to) + + ai_log("walk_to_target() : Exiting.", AI_LOG_DEBUG) + +// Resists out of things. +// Sometimes there are times you want your mob to be buckled to something, so override this for when that is needed. +/datum/ai_holder/proc/handle_resist() + holder.resist() + +// Used to break through windows and barriers to a target on the other side. +// This does two passes, so that if its just a public access door, the windows nearby don't need to be smashed. +/datum/ai_holder/proc/breakthrough(atom/target_atom) + ai_log("breakthrough() : Entering", AI_LOG_TRACE) + + if(!can_breakthrough) + ai_log("breakthrough() : Not allowed to breakthrough. Exiting.", AI_LOG_TRACE) + return FALSE + + if(!isturf(holder.loc)) + ai_log("breakthrough() : Trapped inside \the [holder.loc]. Exiting.", AI_LOG_TRACE) + return FALSE + + var/dir_to_target = get_dir(holder, target_atom) + holder.face_atom(target_atom) + ai_log("breakthrough() : Exiting", AI_LOG_DEBUG) + + // Sometimes the mob will try to hit something diagonally, and generally this fails. + // So instead we will try two more times with some adjustments if the attack fails. + var/list/directions_to_try = list( + dir_to_target, + turn(dir_to_target, 45), + turn(dir_to_target, -45) + ) + + ai_log("breakthrough() : Starting peaceful pass.", AI_LOG_DEBUG) + + var/result = FALSE + + // First, we will try to peacefully make a path, I.E opening a door we have access to. + for(var/direction in directions_to_try) + result = destroy_surroundings(direction, violent = FALSE) + if(result) + break + + // Alright, lets smash some shit instead, if it didn't work and we're allowed to be violent. + if(!result && can_violently_breakthrough()) + ai_log("breakthrough() : Starting violent pass.", AI_LOG_DEBUG) + for(var/direction in directions_to_try) + result = destroy_surroundings(direction, violent = TRUE) + if(result) + break + + ai_log("breakthrough() : Exiting with [result].", AI_LOG_TRACE) + return result + +// Despite the name, this can also be used to help clear a path without any destruction. +/datum/ai_holder/proc/destroy_surroundings(direction, violent = TRUE) + ai_log("destroy_surroundings() : Entering.", AI_LOG_TRACE) + if(!direction) + direction = pick(cardinal) // FLAIL WILDLY + ai_log("destroy_surroundings() : No direction given, picked [direction] randomly.", AI_LOG_DEBUG) + + var/turf/problem_turf = get_step(holder, direction) + + // First, give peace a chance. + if(!violent) + ai_log("destroy_surroundings() : Going to try to peacefully clear [problem_turf].", AI_LOG_DEBUG) + for(var/obj/machinery/door/D in problem_turf) + if(D.density && holder.Adjacent(D) && D.allowed(holder) && D.operable()) + // First, try to open the door if possible without smashing it. We might have access. + ai_log("destroy_surroundings() : Opening closed door.", AI_LOG_INFO) + return D.open() + + // Peace has failed us, can we just smash the things in the way? + else + ai_log("destroy_surroundings() : Going to try to violently clear [problem_turf].", AI_LOG_DEBUG) + // First, kill windows in the way. + for(var/obj/structure/window/W in problem_turf) + if(W.dir == reverse_dir[holder.dir]) // So that windows get smashed in the right order + ai_log("destroy_surroundings() : Attacking side window.", AI_LOG_INFO) + return holder.IAttack(W) + + else if(W.is_fulltile()) + ai_log("destroy_surroundings() : Attacking full tile window.", AI_LOG_INFO) + return holder.IAttack(W) + + // Kill hull shields in the way. + for(var/obj/effect/energy_field/shield in problem_turf) + if(shield.density) // Don't attack shields that are already down. + ai_log("destroy_surroundings() : Attacking hull shield.", AI_LOG_INFO) + return holder.IAttack(shield) + + // Kill common obstacle in the way like tables. + var/obj/structure/obstacle = locate(/obj/structure, problem_turf) + if(istype(obstacle, /obj/structure/window) || istype(obstacle, /obj/structure/closet) || istype(obstacle, /obj/structure/table) || istype(obstacle, /obj/structure/grille)) + ai_log("destroy_surroundings() : Attacking generic structure.", AI_LOG_INFO) + return holder.IAttack(obstacle) + + for(var/obj/machinery/door/D in problem_turf) // Required since firelocks take up the same turf. + if(D.density) + ai_log("destroy_surroundings() : Attacking closed door.", AI_LOG_INFO) + return holder.IAttack(D) + + ai_log("destroy_surroundings() : Exiting due to nothing to attack.", AI_LOG_INFO) + return FALSE // Nothing to attack. + +// Override for special behaviour. +/datum/ai_holder/proc/can_violently_breakthrough() + return violent_breakthrough \ No newline at end of file diff --git a/code/modules/ai/ai_holder_combat_unseen.dm b/code/modules/ai/ai_holder_combat_unseen.dm new file mode 100644 index 0000000000..0cb518f08c --- /dev/null +++ b/code/modules/ai/ai_holder_combat_unseen.dm @@ -0,0 +1,43 @@ +// Used for fighting invisible things. + +// Used when a target is out of sight or invisible. +/datum/ai_holder/proc/engage_unseen_enemy() + // Lets do some last things before giving up. + if(!ranged) + if(get_dist(holder, target_last_seen_turf > 1)) // We last saw them over there. + // Go to where you last saw the enemy. + give_destination(target_last_seen_turf, 1, TRUE) // This will set it to STANCE_REPOSITION. + else // We last saw them next to us, so do a blind attack on that tile. + melee_on_tile(target_last_seen_turf) + + else if(!conserve_ammo) + shoot_near_turf(target_last_seen_turf) + +// This shoots semi-randomly near a specific turf. +/datum/ai_holder/proc/shoot_near_turf(turf/targeted_turf) + if(!ranged) + return // Can't shoot. + if(get_dist(holder, targeted_turf) > max_range(targeted_turf)) + return // Too far to shoot. + + var/turf/T = pick(RANGE_TURFS(2, targeted_turf)) // The turf we're actually gonna shoot at. + on_engagement(T) + if(firing_lanes && !test_projectile_safety(T)) + step_rand(holder) + holder.face_atom(T) + return + + ranged_attack(T) + +// Attempts to attack something on a specific tile. +// TODO: Put on mob/living? +/datum/ai_holder/proc/melee_on_tile(turf/T) + var/mob/living/L = locate() in T + if(!L) + T.visible_message("\The [holder] attacks nothing around \the [T].") + return + + if(holder.IIsAlly(L)) // Don't hurt our ally. + return + + melee_attack(L) \ No newline at end of file diff --git a/code/modules/ai/ai_holder_communication.dm b/code/modules/ai/ai_holder_communication.dm new file mode 100644 index 0000000000..4cfec6f7af --- /dev/null +++ b/code/modules/ai/ai_holder_communication.dm @@ -0,0 +1,134 @@ +// Contains code for speaking and emoting. + +/datum/ai_holder + var/threaten = FALSE // If hostile and sees a valid target, gives a 'warning' to the target before beginning the attack. + var/threatening = FALSE // If the mob actually gave the warning, checked so it doesn't constantly yell every tick. + var/threaten_delay = 3 SECONDS // How long a 'threat' lasts, until actual fighting starts. If null, the mob never starts the fight but still does the threat. + var/threaten_timeout = 1 MINUTE // If the mob threatens someone, they leave, and then come back before this timeout period, the mob escalates to fighting immediately. + var/last_conflict_time = null // Last occurance of fighting being used, in world.time. + var/last_threaten_time = null // Ditto but only for threats. + var/last_target_time = null // Ditto for when we last switched targets, used to stop retaliate from gimping mobs + + var/speak_chance = 0 // Probability that the mob talks (this is 'X in 200' chance since even 1/100 is pretty noisy) + + +/datum/ai_holder/proc/should_threaten() + if(!threaten) + return FALSE // We don't negotiate. + if(target in attackers) + return FALSE // They (or someone like them) attacked us before, escalate immediately. + if(!will_threaten(target)) + return FALSE // Pointless to threaten an animal, a mindless drone, or an object. + if(stance in STANCES_COMBAT) + return FALSE // We're probably already fighting or recently fought if not in these stances. + if(last_threaten_time && threaten_delay && last_conflict_time + threaten_timeout > world.time) + return FALSE // We threatened someone recently, so lets show them we mean business. + return TRUE // Lets give them a chance to choose wisely and walk away. + +/datum/ai_holder/proc/threaten_target() + holder.face_atom(target) // Constantly face the target. + + if(!threatening) // First tick. + threatening = TRUE + last_threaten_time = world.time + + if(holder.say_list) + holder.ISay(safepick(holder.say_list.say_threaten)) + playsound(holder.loc, holder.say_list.threaten_sound, 50, 1) // We do this twice to make the sound -very- noticable to the target. + playsound(target.loc, holder.say_list.threaten_sound, 50, 1) // Actual aim-mode also does that so at least it's consistant. + else // Otherwise we are waiting for them to go away or to wait long enough for escalate. + if(target in list_targets()) // Are they still visible? + var/should_escalate = FALSE + + if(threaten_delay && last_threaten_time + threaten_delay < world.time) // Waited too long. + should_escalate = TRUE + + if(should_escalate) + threatening = FALSE + set_stance(STANCE_APPROACH) + if(holder.say_list) + holder.ISay(safepick(holder.say_list.say_escalate)) + else + return // Wait a bit. + + else // They left, or so we think. + if(last_threaten_time + threaten_timeout < world.time) // They've been gone long enough, probably safe to stand down + threatening = FALSE + set_stance(STANCE_IDLE) + if(holder.say_list) + holder.ISay(safepick(holder.say_list.say_stand_down)) + playsound(holder.loc, holder.say_list.stand_down_sound, 50, 1) // We do this twice to make the sound -very- noticable to the target. + playsound(target.loc, holder.say_list.stand_down_sound, 50, 1) // Actual aim-mode also does that so at least it's consistant. + +// Determines what is deserving of a warning when STANCE_ALERT is active. +/datum/ai_holder/proc/will_threaten(mob/living/the_target) + if(!isliving(the_target)) + return FALSE // Turrets don't give a fuck so neither will we. + /* + // Find a nice way of doing this later. + if(istype(the_target, /mob/living/simple_mob) && istype(holder, /mob/living/simple_mob)) + var/mob/living/simple_mob/us = holder + var/mob/living/simple_mob/them = target + + if(them.intelligence_level < us.intelligence_level) // Todo: Bitflag these. + return FALSE // Humanoids don't care about drones/animals/etc. Drones don't care about animals, and so on. + */ + return TRUE + +// Temp defines to make the below code a bit more readable. +#define COMM_SAY "say" +#define COMM_AUDIBLE_EMOTE "audible emote" +#define COMM_VISUAL_EMOTE "visual emote" + +/datum/ai_holder/proc/handle_idle_speaking() + if(rand(0,200) < speak_chance) + // Check if anyone is around to 'appreciate' what we say. + var/alone = TRUE + for(var/m in viewers(holder)) + var/mob/M = m + if(M.client) + alone = FALSE + break + if(alone) // Forever alone. No point doing anything else. + return + + var/list/comm_types = list() // What kinds of things can we do? + if(!holder.say_list) + return + + if(holder.say_list.speak.len) + comm_types += COMM_SAY + if(holder.say_list.emote_hear.len) + comm_types += COMM_AUDIBLE_EMOTE + if(holder.say_list.emote_see.len) + comm_types += COMM_VISUAL_EMOTE + + if(!comm_types.len) + return // All the relevant lists are empty, so do nothing. + + switch(pick(comm_types)) + if(COMM_SAY) + holder.ISay(safepick(holder.say_list.speak)) + if(COMM_AUDIBLE_EMOTE) + holder.audible_emote(safepick(holder.say_list.emote_hear)) + if(COMM_VISUAL_EMOTE) + holder.visible_emote(safepick(holder.say_list.emote_see)) + +#undef COMM_SAY +#undef COMM_AUDIBLE_EMOTE +#undef COMM_VISUAL_EMOTE + +// Handles the holder hearing a mob's say() +// Does nothing by default, override this proc for special behavior. +/datum/ai_holder/proc/on_hear_say(mob/living/speaker, message) + return + +// This is to make responses feel a bit more natural and not instant. +/datum/ai_holder/proc/delayed_say(var/message, var/mob/speak_to) + spawn(rand(1 SECOND, 2 SECONDS)) + if(!src || !holder || !can_act()) // We might've died/got deleted/etc in the meantime. + return + + if(speak_to) + holder.face_atom(speak_to) + holder.ISay(message) diff --git a/code/modules/ai/ai_holder_cooperation.dm b/code/modules/ai/ai_holder_cooperation.dm new file mode 100644 index 0000000000..0f6b0bcfa2 --- /dev/null +++ b/code/modules/ai/ai_holder_cooperation.dm @@ -0,0 +1,115 @@ +// Involves cooperating with other ai_holders. +/datum/ai_holder + var/cooperative = FALSE // If true, asks allies to help when fighting something. + var/call_distance = 14 // How far away calls for help will go for. + var/last_helpask_time = 0 // world.time when a mob asked for help. + var/list/faction_friends = list() // List of all mobs inside the faction with ai_holders that have cooperate on, to call for help without using range(). + // Note that this is only used for sending calls out. Receiving calls doesn't care about this list, only if the mob is in the faction. + // This means the AI could respond to a player's call for help, if a way to do so was implemented. + + // These vars don't do anything currently. They did before but an optimization made them nonfunctional. + // It was probably worth it. + var/call_players = FALSE // (Currently nonfunctional) If true, players get notified of an allied mob calling for help. + var/called_player_message = "needs help!" // (Currently nonfunctional) Part of a message used when above var is true. Full message is "\The [holder] [called_player_message]" + +/datum/ai_holder/New(new_holder) + ..() + if(cooperative) + build_faction_friends() + +/datum/ai_holder/Destroy() + if(faction_friends.len) //This list is shared amongst the faction + faction_friends -= src + return ..() + +// Handles everything about that list. +// Call on initialization or if something weird happened like the mob switched factions. +/datum/ai_holder/proc/build_faction_friends() + if(faction_friends.len) // Already have a list. + // Assume we're moving to a new faction. + faction_friends -= src // Get us out of the current list shared by everyone else. + faction_friends = list() // Then make our list empty and unshared in case we become a loner. + + // Find another AI-controlled mob in the same faction if possible. + var/mob/living/first_friend + for(var/mob/living/L in living_mob_list) + if(L.faction == holder.faction && L.ai_holder) + first_friend = L + break + + if(first_friend) // Joining an already established faction. + faction_friends = first_friend.ai_holder.faction_friends + faction_friends |= holder + else // We're the 'founder' (first and/or only member) of this faction. + faction_friends |= holder + +// Requests help in combat from other mobs possessing ai_holders. +/datum/ai_holder/proc/request_help() + ai_log("request_help() : Entering.", AI_LOG_DEBUG) + if(!cooperative || ((world.time - last_helpask_time) < 10 SECONDS)) + return + + ai_log("request_help() : Asking for help.", AI_LOG_INFO) + last_helpask_time = world.time + +// for(var/mob/living/L in range(call_distance, holder)) + for(var/mob/living/L in faction_friends) + if(L == holder) // Lets not call ourselves. + continue + if(holder.z != L.z) // On seperate z-level. + continue + if(get_dist(L, holder) > call_distance) // Too far to 'hear' the call for help. + continue + + if(holder.IIsAlly(L)) + // This will currently never run sadly, until faction_friends is made to accept players too. + // That might be for the best since I can imagine it getting spammy in a big fight. + if(L.client && call_players) // Dealing with a player. + ai_log("request_help() : Asking [L] (Player) for help.", AI_LOG_INFO) + to_chat(L, "\The [holder] [called_player_message]") + + else if(L.ai_holder) // Dealing with an AI. + ai_log("request_help() : Asking [L] (AI) for help.", AI_LOG_INFO) + L.ai_holder.help_requested(holder) + + ai_log("request_help() : Exiting.", AI_LOG_DEBUG) + +// What allies receive when someone else is calling for help. +/datum/ai_holder/proc/help_requested(mob/living/friend) + ai_log("help_requested() : Entering.", AI_LOG_DEBUG) + if(stance == STANCE_SLEEP) + ai_log("help_requested() : Help requested by [friend] but we are asleep.", AI_LOG_INFO) + return + if(!cooperative) + ai_log("help_requested() : Help requested by [friend] but we're not cooperative.", AI_LOG_INFO) + return + if(stance in STANCES_COMBAT) + ai_log("help_requested() : Help requested by [friend] but we are busy fighting something else.", AI_LOG_INFO) + return + if(!can_act()) + ai_log("help_requested() : Help requested by [friend] but cannot act (stunned or dead).", AI_LOG_INFO) + return + if(!holder.IIsAlly(friend)) // Extra sanity. + ai_log("help_requested() : Help requested by [friend] but we hate them.", AI_LOG_INFO) + return + if(friend.ai_holder && friend.ai_holder.target && !can_attack(friend.ai_holder.target)) + ai_log("help_requested() : Help requested by [friend] but we don't want to fight their target.", AI_LOG_INFO) + return + if(get_dist(holder, friend) <= follow_distance) + ai_log("help_requested() : Help requested by [friend] but we're already here.", AI_LOG_INFO) + return + if(get_dist(holder, friend) <= vision_range) // Within our sight. + ai_log("help_requested() : Help requested by [friend], and within target sharing range.", AI_LOG_INFO) + if(friend.ai_holder) // AI calling for help. + if(friend.ai_holder.target && can_attack(friend.ai_holder.target)) // Friend wants us to attack their target. + last_conflict_time = world.time // So we attack immediately and not threaten. + give_target(friend.ai_holder.target) // This will set us to the appropiate stance. + ai_log("help_requested() : Given target [target] by [friend]. Exiting", AI_LOG_DEBUG) + return + + // Otherwise they're outside our sight, lack a target, or aren't AI controlled, but within call range. + // So assuming we're AI controlled, we'll go to them and see whats wrong. + ai_log("help_requested() : Help requested by [friend], going to go to friend.", AI_LOG_INFO) + set_follow(friend, 10 SECONDS) + ai_log("help_requested() : Exiting.", AI_LOG_DEBUG) + diff --git a/code/modules/ai/ai_holder_debug.dm b/code/modules/ai/ai_holder_debug.dm new file mode 100644 index 0000000000..beee998af8 --- /dev/null +++ b/code/modules/ai/ai_holder_debug.dm @@ -0,0 +1,89 @@ +// Contains settings to make it easier to debug things. + +/datum/ai_holder + var/path_display = FALSE // Displays a visual path when A* is being used. + var/path_icon = 'icons/misc/debug_group.dmi' // What icon to use for the overlay + var/path_icon_state = "red" // What state to use for the overlay + var/image/path_overlay // A reference to the overlay + + var/last_turf_display = FALSE // Similar to above, but shows the target's last known turf visually. + var/last_turf_icon_state = "green" // A seperate icon_state from the previous. + var/image/last_turf_overlay // Another reference for an overlay. + + var/stance_coloring = FALSE // Colors the mob depending on its stance. + + var/debug_ai = AI_LOG_OFF // The level of debugging information to display to people who can see log_debug(). + +/datum/ai_holder/New() + ..() + path_overlay = new(path_icon,path_icon_state) + last_turf_overlay = new(path_icon, last_turf_icon_state) + +/datum/ai_holder/Destroy() + path_overlay = null + last_turf_overlay = null + return ..() + +//For debug purposes! +/datum/ai_holder/proc/ai_log_output(var/msg = "missing message", var/ver = AI_LOG_INFO) + var/span_type + switch(ver) + if(AI_LOG_OFF) + return + if(AI_LOG_ERROR) + span_type = "debug_error" + if(AI_LOG_WARNING) + span_type = "debug_warning" + if(AI_LOG_INFO) + span_type = "debug_info" + if(AI_LOG_DEBUG) + span_type = "debug_debug" // RAS syndrome at work. + if(AI_LOG_TRACE) + span_type = "debug_trace" + if(ver <= debug_ai) + log_debug("AI: ([holder]:\ref[holder] | [holder.x],[holder.y],[holder.z])(@[world.time]): [msg] ") + +// Colors the mob based on stance, to visually tell what stance it is for debugging. +// Probably not something you want for regular use. +/datum/ai_holder/proc/stance_color() + var/new_color = null + switch(stance) + if(STANCE_SLEEP) + new_color = "#FFFFFF" // White + if(STANCE_IDLE) + new_color = "#00FF00" // Green + if(STANCE_ALERT) + new_color = "#FFFF00" // Yellow + if(STANCE_APPROACH) + new_color = "#FF9933" // Orange + if(STANCE_FIGHT) + new_color = "#FF0000" // Red + if(STANCE_MOVE) + new_color = "#0000FF" // Blue + if(STANCE_REPOSITION) + new_color = "#FF00FF" // Purple + if(STANCE_FOLLOW) + new_color = "#00FFFF" // Cyan + if(STANCE_FLEE) + new_color = "#666666" // Grey + if(STANCE_DISABLED) + new_color = "#000000" // Black + holder.color = new_color + +// Turns on all the debugging stuff. +/datum/ai_holder/proc/debug() + stance_coloring = TRUE + path_display = TRUE + last_turf_display = TRUE + debug_ai = AI_LOG_INFO + +/datum/ai_holder/hostile/debug + wander = FALSE + conserve_ammo = FALSE + intelligence_level = AI_SMART + + stance_coloring = TRUE + path_display = TRUE + last_turf_display = TRUE + debug_ai = AI_LOG_INFO + diff --git a/code/modules/ai/ai_holder_disabled.dm b/code/modules/ai/ai_holder_disabled.dm new file mode 100644 index 0000000000..8b296b2d10 --- /dev/null +++ b/code/modules/ai/ai_holder_disabled.dm @@ -0,0 +1,98 @@ +// Handles AI while stunned or otherwise disabled. + +/datum/ai_holder + var/respect_confusion = TRUE // If false, the mob won't wander around recklessly. + +// If our holder is able to do anything. +/datum/ai_holder/proc/can_act() + if(holder.stat) // Dead or unconscious. + ai_log("can_act() : Stat was non-zero ([holder.stat]).", AI_LOG_TRACE) + return FALSE + if(holder.incapacitated(INCAPACITATION_DISABLED)) // Stunned in some form. + ai_log("can_act() : Incapacited.", AI_LOG_TRACE) + return FALSE + if(holder.instasis()) // In a stasis field. + ai_log("can_act() : In a stasis field.", AI_LOG_TRACE) + return FALSE + return TRUE + +// Test if we should switch to STANCE_DISABLE. +// Currently tests for death, stuns, and confusion. +/datum/ai_holder/proc/is_disabled() + if(!can_act()) + return TRUE + if(is_confused()) + return TRUE + return FALSE + +/datum/ai_holder/proc/is_confused() + return holder.confused > 0 && respect_confusion + +// Called by the main loop. +/datum/ai_holder/proc/handle_disabled() + if(!can_act()) + return // Just sit there and take it. + else if(is_confused()) + dangerous_wander() // Let's bump into allies and hit them. + +// Similar to normal wander, but will walk into tiles that are harmful, and attack anything they bump into, including allies. +// Occurs when confused. +/datum/ai_holder/proc/dangerous_wander() + ai_log("dangerous_wander() : Entered.", AI_LOG_DEBUG) + if(isturf(holder.loc) && can_act()) + // Test if we should refrain from falling/attacking allies, if we're smart enough to realize that. + if(intelligence_level > AI_NORMAL) + var/unsafe = FALSE + + tile_test: + for(var/dir_tested in cardinal) + var/turf/turf_tested = get_step(holder, dir_tested) + // Look for unsafe tiles. + if(!turf_tested.is_safe_to_enter(holder)) + unsafe = TRUE + break + + // Look for allies. + for(var/mob/living/L in turf_tested) + if(holder.IIsAlly(L)) + unsafe = TRUE + break tile_test + + + if(unsafe) + ai_log("dangerous_wander() : Staying still due to risk of harm to self or allies.", AI_LOG_TRACE) + return // Just stay still. + + var/moving_to = 0 + moving_to = pick(cardinal) + var/turf/T = get_step(holder, moving_to) + + var/mob/living/L = locate() in T + if(L) + // Attack whoever's on the tile. Even if it's an ally. + ai_log("dangerous_wander() : Going to confuse-attack [L].", AI_LOG_TRACE) + melee_attack(L) + else + // Move to the tile. Even if it's unsafe. + ai_log("dangerous_wander() : Going to confuse-walk to [T] ([T.x],[T.y],[T.z]).", AI_LOG_TRACE) + holder.IMove(T, safety = FALSE) + ai_log("dangerous_wander() : Exited.", AI_LOG_DEBUG) + +/* +// Wanders randomly in cardinal directions. +/datum/ai_holder/proc/handle_wander_movement() + ai_log("handle_wander_movement() : Entered.", AI_LOG_DEBUG) + if(isturf(holder.loc) && can_act()) + wander_delay-- + if(wander_delay <= 0) + if(!wander_when_pulled && holder.pulledby) + ai_log("handle_wander_movement() : Being pulled and cannot wander. Exiting.", AI_LOG_DEBUG) + return + + var/moving_to = 0 // Apparently this is required or it always picks 4, according to the previous developer for simplemob AI. + moving_to = pick(cardinal) + holder.set_dir(moving_to) + holder.IMove(get_step(holder,moving_to)) + wander_delay = base_wander_delay + ai_log("handle_wander_movement() : Exited.", AI_LOG_DEBUG) +*/ \ No newline at end of file diff --git a/code/modules/ai/ai_holder_fleeing.dm b/code/modules/ai/ai_holder_fleeing.dm new file mode 100644 index 0000000000..83a7be94b8 --- /dev/null +++ b/code/modules/ai/ai_holder_fleeing.dm @@ -0,0 +1,45 @@ +// This code handles what to do inside STANCE_FLEE. + +/datum/ai_holder + var/can_flee = TRUE // If they're even allowed to flee. + var/flee_when_dying = TRUE // If they should flee when low on health. + var/dying_threshold = 0.3 // How low on health the holder needs to be before fleeing. Defaults to 30% or lower health. + var/flee_when_outmatched = FALSE // If they should flee upon reaching a specific tension threshold. + var/outmatched_threshold = 200 // The tension threshold needed for a mob to decide it should run away. + + + +/datum/ai_holder/proc/should_flee(force = FALSE) + if(holder.has_modifier_of_type(/datum/modifier/berserk)) // Berserked mobs will never flee, even if 'forced' to. + return FALSE + if(force) + return TRUE + + if(can_flee) + if(special_flee_check()) + return TRUE + if(!hostile && !retaliate) + return TRUE // We're not hostile and someone attacked us first. + if(flee_when_dying && (holder.health / holder.getMaxHealth()) <= dying_threshold) + return TRUE // We're gonna die! + else if(flee_when_outmatched && holder.get_tension() >= outmatched_threshold) + return TRUE // We're fighting something way way stronger then us. + return FALSE + +// Override for special fleeing conditionally. +/datum/ai_holder/proc/special_flee_check() + return FALSE + +/datum/ai_holder/proc/flee_from_target() + ai_log("flee_from_target() : Entering.", AI_LOG_DEBUG) + + if(!target || !should_flee() || !can_attack(target)) // can_attack() is used since it checks the same things we would need to anyways. + ai_log("flee_from_target() : Lost target to flee from.", AI_LOG_INFO) + lose_target() + set_stance(STANCE_IDLE) + ai_log("flee_from_target() : Exiting.", AI_LOG_DEBUG) + return + + ai_log("flee_from_target() : Stepping away.", AI_LOG_TRACE) + step_away(holder, target, vision_range) + ai_log("flee_from_target() : Exiting.", AI_LOG_DEBUG) \ No newline at end of file diff --git a/code/modules/ai/ai_holder_follow.dm b/code/modules/ai/ai_holder_follow.dm new file mode 100644 index 0000000000..1e7bb0875d --- /dev/null +++ b/code/modules/ai/ai_holder_follow.dm @@ -0,0 +1,68 @@ +// This handles following a specific atom/movable, without violently murdering it. + +/datum/ai_holder + // Following. + var/atom/movable/leader = null // The movable atom that the mob wants to follow. + var/follow_distance = 2 // How far leader must be to start moving towards them. + var/follow_until_time = 0 // world.time when the mob will stop following leader. 0 means it won't time out. + +/datum/ai_holder/proc/walk_to_leader() + ai_log("walk_to_leader() : Entering.",AI_LOG_TRACE) + if(!leader) + ai_log("walk_to_leader() : No leader.", AI_LOG_WARNING) + forget_path() + set_stance(STANCE_IDLE) + ai_log("walk_to_leader() : Exiting.", AI_LOG_TRACE) + return + + // Did we time out? + if(follow_until_time && world.time > follow_until_time) + ai_log("walk_to_leader() : Follow timed out, losing leader.", AI_LOG_INFO) + lose_follow() + set_stance(STANCE_IDLE) + ai_log("walk_to_leader() : Exiting.", AI_LOG_TRACE) + return + + var/get_to = follow_distance + var/distance = get_dist(holder, leader) + ai_log("walk_to_leader() : get_to is [get_to].", AI_LOG_TRACE) + + // We're here! + if(distance <= get_to) + give_up_movement() + set_stance(STANCE_IDLE) + ai_log("walk_to_leader() : Within range, exiting.", AI_LOG_INFO) + return + + ai_log("walk_to_leader() : Walking.", AI_LOG_TRACE) + walk_path(leader, get_to) + ai_log("walk_to_leader() : Exiting.",AI_LOG_DEBUG) + +/datum/ai_holder/proc/set_follow(mob/living/L, follow_for = 0) + ai_log("set_follow() : Entered.", AI_LOG_DEBUG) + if(!L) + ai_log("set_follow() : Was told to follow a nonexistant mob.", AI_LOG_ERROR) + return FALSE + + leader = L + follow_until_time = !follow_for ? 0 : world.time + follow_for + ai_log("set_follow() : Exited.", AI_LOG_DEBUG) + return TRUE + +/datum/ai_holder/proc/lose_follow() + ai_log("lose_follow() : Entered.", AI_LOG_DEBUG) + ai_log("lose_follow() : Going to lose leader [leader].", AI_LOG_INFO) + leader = null + give_up_movement() + ai_log("lose_follow() : Exited.", AI_LOG_DEBUG) + +/datum/ai_holder/proc/should_follow_leader() + if(!leader) + return FALSE + if(follow_until_time && world.time > follow_until_time) + lose_follow() + set_stance(STANCE_IDLE) + return FALSE + if(get_dist(holder, leader) > follow_distance) + return TRUE + return FALSE \ No newline at end of file diff --git a/code/modules/ai/ai_holder_movement.dm b/code/modules/ai/ai_holder_movement.dm new file mode 100644 index 0000000000..55a1098b90 --- /dev/null +++ b/code/modules/ai/ai_holder_movement.dm @@ -0,0 +1,154 @@ +/datum/ai_holder + // General. + var/turf/destination = null // The targeted tile the mob wants to walk to. + var/min_distance_to_destination = 1 // Holds how close the mob should go to destination until they're done. + + // Home. + var/turf/home_turf = null // The mob's 'home' turf. It will try to stay near it if told to do so. This is the turf the AI was initialized on by default. + var/returns_home = FALSE // If true, makes the mob go to its 'home' if it strays too far. + var/home_low_priority = FALSE // If true, the mob will not go home unless it has nothing better to do, e.g. its following someone. + var/max_home_distance = 3 // How far the mob can go away from its home before being told to go_home(). + // Note that there is a 'BYOND cap' of 14 due to limitations of get_/step_to(). + + // Wandering. + var/wander = FALSE // If true, the mob will randomly move in the four cardinal directions when idle. + var/wander_delay = 0 // How many ticks until the mob can move a tile in handle_wander_movement(). + var/base_wander_delay = 2 // What the above var gets set to when it wanders. Note that a tick happens every half a second. + var/wander_when_pulled = FALSE // If the mob will refrain from wandering if someone is pulling it. + + +/datum/ai_holder/proc/walk_to_destination() + ai_log("walk_to_destination() : Entering.",AI_LOG_TRACE) + if(!destination) + ai_log("walk_to_destination() : No destination.", AI_LOG_WARNING) + forget_path() + set_stance(stance == STANCE_REPOSITION ? STANCE_APPROACH : STANCE_IDLE) + ai_log("walk_to_destination() : Exiting.", AI_LOG_TRACE) + return + + var/get_to = min_distance_to_destination + var/distance = get_dist(holder, destination) + ai_log("walk_to_destination() : get_to is [get_to].", AI_LOG_TRACE) + + // We're here! + if(distance <= get_to) + give_up_movement() + set_stance(stance == STANCE_REPOSITION ? STANCE_APPROACH : STANCE_IDLE) + ai_log("walk_to_destination() : Destination reached. Exiting.", AI_LOG_INFO) + return + + ai_log("walk_to_destination() : Walking.", AI_LOG_TRACE) + walk_path(destination, get_to) + ai_log("walk_to_destination() : Exiting.",AI_LOG_TRACE) + +/datum/ai_holder/proc/should_go_home() + if(!returns_home || !home_turf) + return FALSE + if(get_dist(holder, home_turf) > max_home_distance) + if(!home_low_priority) + return TRUE + else if(!leader && !target) + return TRUE + return FALSE +// return (returns_home && home_turf) && (get_dist(holder, home_turf) > max_home_distance) + +/datum/ai_holder/proc/go_home() + if(home_turf) + ai_log("go_home() : Telling holder to go home.", AI_LOG_INFO) + lose_follow() // So they don't try to path back and forth. + give_destination(home_turf, max_home_distance) + else + ai_log("go_home() : Told to go home without home_turf.", AI_LOG_ERROR) + +/datum/ai_holder/proc/give_destination(turf/new_destination, min_distance = 1, combat = FALSE) + ai_log("give_destination() : Entering.", AI_LOG_DEBUG) + + destination = new_destination + min_distance_to_destination = min_distance + + if(new_destination != null) + ai_log("give_destination() : Going to new destination.", AI_LOG_INFO) + set_stance(combat ? STANCE_REPOSITION : STANCE_MOVE) + return TRUE + else + ai_log("give_destination() : Given null destination.", AI_LOG_ERROR) + + ai_log("give_destination() : Exiting.", AI_LOG_DEBUG) + + +// Walk towards whatever. +/datum/ai_holder/proc/walk_path(atom/A, get_to = 1) + ai_log("walk_path() : Entered.", AI_LOG_TRACE) + + if(use_astar) + if(!path.len) // If we're missing a path, make a new one. + ai_log("walk_path() : No path. Attempting to calculate path.", AI_LOG_DEBUG) + calculate_path(A, get_to) + + if(!path.len) // If we still don't have one, then the target's probably somewhere inaccessible to us. Get as close as we can. + ai_log("walk_path() : Failed to obtain path to target. Using get_step_to() instead.", AI_LOG_INFO) + // step_to(holder, A) + if(holder.IMove(get_step_to(holder, A)) == MOVEMENT_FAILED) + ai_log("walk_path() : Failed to move, attempting breakthrough.", AI_LOG_INFO) + breakthrough(A) // We failed to move, time to smash things. + return + + if(move_once() == FALSE) // Start walking the path. + ai_log("walk_path() : Failed to step.", AI_LOG_TRACE) + ++failed_steps + if(failed_steps > 3) // We're probably stuck. + ai_log("walk_path() : Too many failed_steps.", AI_LOG_DEBUG) + forget_path() // So lets try again with a new path. + failed_steps = 0 + + else + // step_to(holder, A) + ai_log("walk_path() : Going to IMove().", AI_LOG_TRACE) + if(holder.IMove(get_step_to(holder, A)) == MOVEMENT_FAILED ) + ai_log("walk_path() : Failed to move, attempting breakthrough.", AI_LOG_INFO) + breakthrough(A) // We failed to move, time to smash things. + + ai_log("walk_path() : Exited.", AI_LOG_TRACE) + + +//Take one step along a path +/datum/ai_holder/proc/move_once() + ai_log("move_once() : Entered.", AI_LOG_TRACE) + if(!path.len) + return + + if(path_display) + var/turf/T = src.path[1] + T.overlays -= path_overlay + +// step_towards(holder, src.path[1]) + if(holder.IMove(get_step_towards(holder, src.path[1])) != MOVEMENT_ON_COOLDOWN) + if(holder.loc != src.path[1]) + ai_log("move_once() : Failed step. Exiting.", AI_LOG_TRACE) + return MOVEMENT_FAILED + else + path -= src.path[1] + ai_log("move_once() : Successful step. Exiting.", AI_LOG_TRACE) + return MOVEMENT_SUCCESSFUL + ai_log("move_once() : Mob movement on cooldown. Exiting.", AI_LOG_TRACE) + return MOVEMENT_ON_COOLDOWN + +/datum/ai_holder/proc/should_wander() + return wander && !leader + +// Wanders randomly in cardinal directions. +/datum/ai_holder/proc/handle_wander_movement() + ai_log("handle_wander_movement() : Entered.", AI_LOG_TRACE) + if(isturf(holder.loc) && can_act()) + wander_delay-- + if(wander_delay <= 0) + if(!wander_when_pulled && holder.pulledby) + ai_log("handle_wander_movement() : Being pulled and cannot wander. Exiting.", AI_LOG_DEBUG) + return + + var/moving_to = 0 // Apparently this is required or it always picks 4, according to the previous developer for simplemob AI. + moving_to = pick(cardinal) + holder.set_dir(moving_to) + holder.IMove(get_step(holder,moving_to)) + wander_delay = base_wander_delay + ai_log("handle_wander_movement() : Exited.", AI_LOG_TRACE) diff --git a/code/modules/ai/ai_holder_pathfinding.dm b/code/modules/ai/ai_holder_pathfinding.dm new file mode 100644 index 0000000000..1a20c6f682 --- /dev/null +++ b/code/modules/ai/ai_holder_pathfinding.dm @@ -0,0 +1,58 @@ +// This handles obtaining a (usually A*) path towards something, such as a target, destination, or leader. +// This interacts heavily with code inside ai_holder_movement.dm + +/datum/ai_holder + // Pathfinding. + var/use_astar = FALSE // Do we use the more expensive A* implementation or stick with BYOND's default step_to()? + var/list/path = list() // A list of tiles that A* gave us as a solution to reach the target. + var/list/obstacles = list() // Things A* will try to avoid. + var/astar_adjacent_proc = /turf/proc/CardinalTurfsWithAccess // Proc to use when A* pathfinding. Default makes them bound to cardinals. + var/failed_steps = 0 // If move_once() fails to move the mob onto the correct tile, this increases. When it reaches 3, the path is recalc'd since they're probably stuck. + +// This clears the stored A* path. +/datum/ai_holder/proc/forget_path() + ai_log("forget_path() : Entering.", AI_LOG_DEBUG) + if(path_display) + for(var/turf/T in path) + T.overlays -= path_overlay + path.Cut() + ai_log("forget_path() : Exiting.", AI_LOG_DEBUG) + +/datum/ai_holder/proc/give_up_movement() + ai_log("give_up_movement() : Entering.", AI_LOG_DEBUG) + forget_path() + destination = null + ai_log("give_up_movement() : Exiting.", AI_LOG_DEBUG) + +/datum/ai_holder/proc/calculate_path(atom/A, get_to = 1) + ai_log("calculate_path([A],[get_to]) : Entering.", AI_LOG_DEBUG) + if(!A) + ai_log("calculate_path() : Called without an atom. Exiting.",AI_LOG_WARNING) + return + + if(!use_astar) // If we don't use A* then this is pointless. + ai_log("calculate_path() : Not using A*, Exiting.", AI_LOG_DEBUG) + return + + get_path(get_turf(A), get_to) + + ai_log("calculate_path() : Exiting.", AI_LOG_DEBUG) + +//A* now, try to a path to a target +/datum/ai_holder/proc/get_path(var/turf/target,var/get_to = 1, var/max_distance = world.view*6) + ai_log("get_path() : Entering.",AI_LOG_DEBUG) + forget_path() + var/list/new_path = AStar(get_turf(holder.loc), target, astar_adjacent_proc, /turf/proc/Distance, min_target_dist = get_to, max_node_depth = max_distance, id = holder.IGetID(), exclude = obstacles) + + if(new_path && new_path.len) + path = new_path + ai_log("get_path() : Made new path.",AI_LOG_DEBUG) + if(path_display) + for(var/turf/T in path) + T.overlays |= path_overlay + else + ai_log("get_path() : Failed to make new path. Exiting.",AI_LOG_DEBUG) + return 0 + + ai_log("get_path() : Exiting.", AI_LOG_DEBUG) + return path.len \ No newline at end of file diff --git a/code/modules/ai/ai_holder_targeting.dm b/code/modules/ai/ai_holder_targeting.dm new file mode 100644 index 0000000000..623b2f0b83 --- /dev/null +++ b/code/modules/ai/ai_holder_targeting.dm @@ -0,0 +1,256 @@ +// Used for assigning a target for attacking. + +/datum/ai_holder + var/hostile = FALSE // Do we try to hurt others? + var/retaliate = FALSE // Attacks whatever struck it first. Mobs will still attack back if this is false but hostile is true. + var/mauling = FALSE // Attacks unconscious mobs + + var/atom/movable/target = null // The thing (mob or object) we're trying to kill. + var/atom/movable/preferred_target = null// If set, and if given the chance, we will always prefer to target this over other options. + var/turf/target_last_seen_turf = null // Where the mob last observed the target being, used if the target disappears but the mob wants to keep fighting. + + var/vision_range = 7 // How far the targeting system will look for things to kill. Note that values higher than 7 are 'offscreen' and might be unsporting. + var/respect_alpha = TRUE // If true, mobs with a sufficently low alpha will be treated as invisible. + var/alpha_vision_threshold = 127 // Targets with an alpha less or equal to this will be considered invisible. Requires above var to be true. + + var/lose_target_time = 0 // world.time when a target was lost. + var/lose_target_timeout = 5 SECONDS // How long until a mob 'times out' and stops trying to find the mob that disappeared. + + var/list/attackers = list() // List of strings of names of people who attacked us before in our life. + // This uses strings and not refs to allow for disguises, and to avoid needing to use weakrefs. + var/destructive = FALSE // Will target 'neutral' structures/objects and not just 'hostile' ones. + +// A lot of this is based off of /TG/'s AI code. + +// Step 1, find out what we can see. +/datum/ai_holder/proc/list_targets() + . = hearers(vision_range, holder) - src // Remove ourselves to prevent suicidal decisions. + + var/static/hostile_machines = typecacheof(list(/obj/machinery/porta_turret, /obj/mecha)) + + for(var/HM in typecache_filter_list(range(vision_range, holder), hostile_machines)) + if(can_see(holder, HM, vision_range)) + . += HM + +// Step 2, filter down possible targets to things we actually care about. +/datum/ai_holder/proc/find_target(var/list/possible_targets, var/has_targets_list = FALSE) + if(!hostile) // So retaliating mobs only attack the thing that hit it. + return null + . = list() + if(!has_targets_list) + possible_targets = list_targets() + for(var/possible_target in possible_targets) + var/atom/A = possible_target + if(found(A)) // In case people want to override this. + . = list(A) + break + if(can_attack(A)) // Can we attack it? + . += A + continue + + var/new_target = pick_target(.) + give_target(new_target) + return new_target + +// Step 3, pick among the possible, attackable targets. +/datum/ai_holder/proc/pick_target(list/targets) + if(target != null) // If we already have a target, but are told to pick again, calculate the lowest distance between all possible, and pick from the lowest distance targets. + targets = target_filter_distance(targets) +// for(var/possible_target in targets) +// var/atom/A = possible_target +// var/target_dist = get_dist(holder, target) +// var/possible_target_distance = get_dist(holder, A) +// if(target_dist < possible_target_distance) +// targets -= A + if(!targets.len) // We found nothing. + return + + var/chosen_target + if(preferred_target && preferred_target in targets) + chosen_target = preferred_target + else + chosen_target = pick(targets) + return chosen_target + +// Step 4, give us our selected target. +/datum/ai_holder/proc/give_target(new_target) + target = new_target + if(target != null) + if(should_threaten()) + set_stance(STANCE_ALERT) + else + set_stance(STANCE_APPROACH) + last_target_time = world.time + return TRUE + +// Filters return one or more 'preferred' targets. + +// This one is for closest targets. +/datum/ai_holder/proc/target_filter_distance(list/targets) + for(var/possible_target in targets) + var/atom/A = possible_target + var/target_dist = get_dist(holder, target) + var/possible_target_distance = get_dist(holder, A) + if(target_dist < possible_target_distance) + targets -= A + return targets + +/datum/ai_holder/proc/can_attack(atom/movable/the_target) + if(!can_see_target(the_target)) + return FALSE + + if(istype(the_target, /mob/zshadow)) + return FALSE // no + + if(isliving(the_target)) + var/mob/living/L = the_target + if(ishuman(L) || issilicon(L)) + if(L.key && !L.client) // SSD players get a pass + return FALSE + if(L.stat) + if(L.stat == DEAD) // Leave dead things alone + return FALSE + if(L.stat == UNCONSCIOUS) // Do we have mauling? Yes? Then maul people who are sleeping but not SSD + if(mauling) + return TRUE + else + return FALSE + if(holder.IIsAlly(L)) + return FALSE + return TRUE + + if(istype(the_target, /obj/mecha)) + var/obj/mecha/M = the_target + if(M.occupant) + return can_attack(M.occupant) + return destructive // Empty mechs are 'neutral'. + + if(istype(the_target, /obj/machinery/porta_turret)) + var/obj/machinery/porta_turret/P = the_target + if(P.stat & BROKEN) + return FALSE // Already dead. + if(P.faction == holder.faction) + return FALSE // Don't shoot allied turrets. + if(!P.raised && !P.raising) + return FALSE // Turrets won't get hurt if they're still in their cover. + return TRUE + + return TRUE +// return FALSE + +// Override this for special targeting criteria. +// If it returns true, the mob will always select it as the target. +/datum/ai_holder/proc/found(atom/movable/the_target) + return FALSE + +//We can't see the target, go look or attack where they were last seen. +/datum/ai_holder/proc/lose_target() + if(target) + target = null + lose_target_time = world.time + + give_up_movement() + + +//Target is no longer valid (?) +/datum/ai_holder/proc/lost_target() + set_stance(STANCE_IDLE) + lose_target_position() + lose_target() + +// Check if target is visible to us. +/datum/ai_holder/proc/can_see_target(atom/movable/the_target, view_range = vision_range) + ai_log("can_see_target() : Entering.", AI_LOG_TRACE) + + if(!the_target) // Nothing to target. + ai_log("can_see_target() : There is no target. Exiting.", AI_LOG_WARNING) + return FALSE + + if(holder.see_invisible < the_target.invisibility) // Real invis. + ai_log("can_see_target() : Target ([the_target]) was invisible to holder. Exiting.", AI_LOG_TRACE) + return FALSE + + if(respect_alpha && the_target.alpha <= alpha_vision_threshold) // Fake invis. + ai_log("can_see_target() : Target ([the_target]) was sufficently transparent to holder and is hidden. Exiting.", AI_LOG_TRACE) + return FALSE + + if(get_dist(holder, the_target) > view_range) // Too far away. + ai_log("can_see_target() : Target ([the_target]) was too far from holder. Exiting.", AI_LOG_TRACE) + return FALSE + + if(!can_see(holder, the_target, view_range)) + ai_log("can_see_target() : Target ([the_target]) failed can_see(). Exiting.", AI_LOG_TRACE) + return FALSE + + ai_log("can_see_target() : Target ([the_target]) can be seen. Exiting.", AI_LOG_TRACE) + return TRUE + +// Updates the last known position of the target. +/datum/ai_holder/proc/track_target_position() + if(!target) + lose_target_position() + + if(last_turf_display && target_last_seen_turf) + target_last_seen_turf.overlays -= last_turf_overlay + + target_last_seen_turf = get_turf(target) + + if(last_turf_display) + target_last_seen_turf.overlays += last_turf_overlay + +// Resets the last known position to null. +/datum/ai_holder/proc/lose_target_position() + if(last_turf_display && target_last_seen_turf) + target_last_seen_turf.overlays -= last_turf_overlay + ai_log("lose_target_position() : Last position is being reset.", AI_LOG_INFO) + target_last_seen_turf = null + +// Responds to a hostile action against its mob. +/datum/ai_holder/proc/react_to_attack(atom/movable/attacker) + if(holder.stat) // We're dead. + ai_log("react_to_attack() : Was attacked by [attacker], but we are dead/unconscious.", AI_LOG_TRACE) + return FALSE + if(!hostile && !retaliate) // Not allowed to defend ourselves. + ai_log("react_to_attack() : Was attacked by [attacker], but we are not allowed to attack back.", AI_LOG_TRACE) + return FALSE + if(holder.IIsAlly(attacker)) // I'll overlook it THIS time... + ai_log("react_to_attack() : Was attacked by [attacker], but they were an ally.", AI_LOG_TRACE) + return FALSE + if(target) // Already fighting someone. Switching every time we get hit would impact our combat performance. + if(!retaliate) // If we don't get to fight back, we don't fight back... + ai_log("react_to_attack() : Was attacked by [attacker], but we already have a target.", AI_LOG_TRACE) + on_attacked(attacker) // So we attack immediately and not threaten. + return FALSE + else if(attacker in attackers && world.time > last_target_time + 3 SECONDS) // Otherwise, let 'er rip + ai_log("react_to_attack() : Was attacked by [attacker]. Can retaliate, waited 3 seconds.", AI_LOG_INFO) + on_attacked(attacker) // So we attack immediately and not threaten. + return give_target(attacker) // Also handles setting the appropiate stance. + + if(stance == STANCE_SLEEP) // If we're asleep, try waking up if someone's wailing on us. + ai_log("react_to_attack() : AI is asleep. Waking up.", AI_LOG_TRACE) + go_wake() + + ai_log("react_to_attack() : Was attacked by [attacker].", AI_LOG_INFO) + on_attacked(attacker) // So we attack immediately and not threaten. + return give_target(attacker) // Also handles setting the appropiate stance. + +// Sets a few vars so mobs that threaten will react faster to an attacker or someone who attacked them before. +/datum/ai_holder/proc/on_attacked(atom/movable/AM) + if(isliving(AM)) + var/mob/living/L = AM + if(!(L.name in attackers)) + attackers |= L.name + last_conflict_time = world.time + +// Causes targeting to prefer targeting the taunter if possible. +// This generally occurs if more than one option is within striking distance, including the taunter. +// Otherwise the default filter will prefer the closest target. +/datum/ai_holder/proc/receive_taunt(atom/movable/taunter, force_target_switch = FALSE) + ai_log("receive_taunt() : Was taunted by [taunter].", AI_LOG_INFO) + preferred_target = taunter + if(force_target_switch) + give_target(taunter) + +/datum/ai_holder/proc/lose_taunt() + ai_log("lose_taunt() : Resetting preferred_target.", AI_LOG_INFO) + preferred_target = null \ No newline at end of file diff --git a/code/modules/ai/interfaces.dm b/code/modules/ai/interfaces.dm new file mode 100644 index 0000000000..59ffbeea72 --- /dev/null +++ b/code/modules/ai/interfaces.dm @@ -0,0 +1,98 @@ +// 'Interfaces' are procs that the ai_holder datum uses to communicate its will to the mob its attached. +// The reason for using this proc in the middle is to ensure the AI has some form of compatibility with most mob types, +// since some actions work very differently between mob types (e.g. executing an attack as a simple animal compared to a human). +// The AI can just call holder.IAttack(target) and the mob is responsible for determining how to actually attack the target. + +/mob/living/proc/IAttack(atom/A) + return FALSE + +/mob/living/simple_mob/IAttack(atom/A) + if(!canClick()) // Still on cooldown from a "click". + return FALSE + return attack_target(A) // This will set click cooldown. + +/mob/living/proc/IRangedAttack(atom/A) + return FALSE + +/mob/living/simple_mob/IRangedAttack(atom/A) + if(!canClick()) // Still on cooldown from a "click". + return FALSE + return shoot_target(A) + +// Test if the AI is allowed to attempt a ranged attack. +/mob/living/proc/ICheckRangedAttack(atom/A) + return FALSE + +/mob/living/simple_mob/ICheckRangedAttack(atom/A) + if(needs_reload) + if(reload_count >= reload_max) + try_reload() + return FALSE + return projectiletype ? TRUE : FALSE + +/mob/living/proc/ISpecialAttack(atom/A) + return FALSE + +/mob/living/simple_mob/ISpecialAttack(atom/A) + return special_attack_target(A) + +// Is the AI allowed to attempt to do it? +/mob/living/proc/ICheckSpecialAttack(atom/A) + return FALSE + +/mob/living/simple_mob/ICheckSpecialAttack(atom/A) + return can_special_attack(A) && should_special_attack(A) // Just because we can doesn't mean we should. + +/mob/living/proc/ISay(message) + return say(message) + +/mob/living/proc/IIsAlly(mob/living/L) + return src.faction == L.faction + +/mob/living/simple_mob/IIsAlly(mob/living/L) + . = ..() + if(!.) // Outside the faction, try to see if they're friends. + return L in friends + +/mob/living/proc/IGetID() + +/mob/living/simple_mob/IGetID() + if(myid) + return myid.GetID() + +/mob/living/proc/instasis() + +/mob/living/simple_mob/instasis() + if(in_stasis) + return TRUE + +// Respects move cooldowns as if it had a client. +// Also tries to avoid being superdumb with moving into certain tiles (unless that's desired). +/mob/living/proc/IMove(turf/newloc, safety = TRUE) + if(check_move_cooldown()) +// if(!newdir) +// newdir = get_dir(get_turf(src), newloc) + + // Check to make sure moving to newloc won't actually kill us. e.g. we're a slime and trying to walk onto water. + if(istype(newloc)) + if(safety && !newloc.is_safe_to_enter(src)) + return MOVEMENT_FAILED + + // Move()ing to another tile successfully returns 32 because BYOND. Would rather deal with TRUE/FALSE-esque terms. + // Note that moving to the same tile will be 'successful'. + var/turf/old_T = get_turf(src) + + // An adjacency check to avoid mobs phasing diagonally past windows. + // This might be better in general movement code but I'm too scared to add it, and most things don't move diagonally anyways. + if(!old_T.Adjacent(newloc)) + return MOVEMENT_FAILED + + . = SelfMove(newloc) ? MOVEMENT_SUCCESSFUL : MOVEMENT_FAILED + if(. == MOVEMENT_SUCCESSFUL) + set_dir(get_dir(old_T, newloc)) + // Apply movement delay. + // Player movement has more factors but its all in the client and fixing that would be its own project. + setMoveCooldown(movement_delay()) + return + + . = MOVEMENT_ON_COOLDOWN // To avoid superfast mobs that aren't meant to be superfast. Is actually -1. diff --git a/code/modules/ai/say_list.dm b/code/modules/ai/say_list.dm new file mode 100644 index 0000000000..9eba02b9b1 --- /dev/null +++ b/code/modules/ai/say_list.dm @@ -0,0 +1,119 @@ +// A simple datum that just holds many lists of lines for mobs to pick from. +// This is its own datum in order to be able to have different types of mobs be able to use the same lines if desired, +// even when inheritence wouldn't be able to do so. + +// Also note this also contains emotes, despite its name. +// and now sounds because its probably better that way. + +/mob/living + var/datum/say_list/say_list = null + var/say_list_type = /datum/say_list // Type to give us on initialization. Default has empty lists, so the mob will be silent. + +/mob/living/Initialize() + if(say_list_type) + say_list = new say_list_type(src) + return ..() + +/mob/living/Destroy() + QDEL_NULL(say_list) + return ..() + + +/datum/say_list + var/list/speak = list() // Things the mob might say if it talks while idle. + var/list/emote_hear = list() // Hearable emotes it might perform + var/list/emote_see = list() // Unlike speak_emote, the list of things in this variable only show by themselves with no spoken text. IE: Ian barks, Ian yaps + + var/list/say_understood = list() // When accepting an order. + var/list/say_cannot = list() // When they cannot comply. + var/list/say_maybe_target = list() // When they briefly see something. + var/list/say_got_target = list() // When a target is first assigned. + var/list/say_threaten = list() // When threatening someone. + var/list/say_stand_down = list() // When the threatened thing goes away. + var/list/say_escalate = list() // When the threatened thing doesn't go away. + + var/threaten_sound = null // Sound file played when the mob's AI calls threaten_target() for the first time. + var/stand_down_sound = null // Sound file played when the mob's AI loses sight of the threatened target. + + + + + + + +// Subtypes. + +// This one's pretty dumb, but pirates are dumb anyways and it makes for a good test. +/datum/say_list/pirate + speak = list("Yarr!") + + say_understood = list("Alright, matey.") + say_cannot = list("No, matey.") + say_maybe_target = list("Eh?") + say_got_target = list("Yarrrr!") + say_threaten = list("You best leave, this booty is mine.", "No plank to walk on, just walk away.") + say_stand_down = list("Good.") + say_escalate = list("Yarr! The booty is mine!") + +// Mercs! +/datum/say_list/merc + speak = list("When are we gonna get out of this chicken-shit outfit?", + "Wish I had better equipment...", + "I knew I should have been a line chef...", + "Fuckin' helmet keeps fogging up.", + "Anyone else smell that?") + emote_see = list("sniffs", "coughs", "taps his foot", "looks around", "checks his equipment") + + say_understood = list("Understood!", "Affirmative!") + say_cannot = list("Negative!") + say_maybe_target = list("Who's there?") + say_got_target = list("Engaging!") + say_threaten = list("Get out of here!", "Hey! Private Property!") + say_stand_down = list("Good.") + say_escalate = list("Your funeral!", "Bring it!") + +/datum/say_list/malf_drone + speak = list("ALERT.","Hostile-ile-ile entities dee-twhoooo-wected.","Threat parameterszzzz- szzet.","Bring sub-sub-sub-systems uuuup to combat alert alpha-a-a.") + emote_see = list("beeps menacingly","whirrs threateningly","scans its immediate vicinity") + + say_understood = list("Affirmative.", "Positive.") + say_cannot = list("Denied.", "Negative.") + say_maybe_target = list("Possible threat detected. Investigating.", "Motion detected.", "Investigating.") + say_got_target = list("Threat detected.", "New task: Remove threat.", "Threat removal engaged.", "Engaging target.") + say_threaten = list("Motion detected, judging target...") + say_stand_down = list("Visual lost.", "Error: Target not found.") + say_escalate = list("Viable target found. Removing.", "Engaging target.", "Target judgement complete. Removal required.") + + threaten_sound = 'sound/effects/turret/move1.wav' + stand_down_sound = 'sound/effects/turret/move2.wav' + +/datum/say_list/mercenary + threaten_sound = 'sound/weapons/TargetOn.ogg' + stand_down_sound = 'sound/weapons/TargetOff.ogg' + + +/datum/say_list/crab + emote_hear = list("clicks") + emote_see = list("clacks") + +/datum/say_list/spider + emote_hear = list("chitters") + +/datum/say_list/hivebot + speak = list( + "Resuming task: Protect area.", + "No threats found.", + "Error: No targets found." + ) + emote_hear = list("hums ominously", "whirrs softly", "grinds a gear") + emote_see = list("looks around the area", "turns from side to side") + say_understood = list("Affirmative.", "Positive.") + say_cannot = list("Denied.", "Negative.") + say_maybe_target = list("Possible threat detected. Investigating.", "Motion detected.", "Investigating.") + say_got_target = list("Threat detected.", "New task: Remove threat.", "Threat removal engaged.", "Engaging target.") + +/datum/say_list/lizard + emote_hear = list("hisses") + +/datum/say_list/crab + emote_hear = list("hisses") \ No newline at end of file diff --git a/code/modules/alarm/alarm.dm b/code/modules/alarm/alarm.dm index 26ffdade04..f8d853ca8c 100644 --- a/code/modules/alarm/alarm.dm +++ b/code/modules/alarm/alarm.dm @@ -31,7 +31,7 @@ cameras() // Sets up both cameras and last alarm area. set_source_data(source, duration, severity, hidden) -/datum/alarm/proc/process() +/datum/alarm/process() // Has origin gone missing? if(!origin && !end_time) end_time = world.time + ALARM_RESET_DELAY diff --git a/code/modules/alarm/alarm_handler.dm b/code/modules/alarm/alarm_handler.dm index a07ca8bd3b..d7a7cdf713 100644 --- a/code/modules/alarm/alarm_handler.dm +++ b/code/modules/alarm/alarm_handler.dm @@ -7,7 +7,7 @@ var/list/datum/alarm/alarms_assoc = new // Associative list of alarms, to efficiently acquire them based on origin. var/list/listeners = new // A list of all objects interested in alarm changes. -/datum/alarm_handler/proc/process() +/datum/alarm_handler/process() for(var/datum/alarm/A in alarms) A.process() check_alarm_cleared(A) diff --git a/code/modules/artifice/deadringer.dm b/code/modules/artifice/deadringer.dm index e12c0b0045..bdac793daf 100644 --- a/code/modules/artifice/deadringer.dm +++ b/code/modules/artifice/deadringer.dm @@ -16,11 +16,11 @@ /obj/item/weapon/deadringer/New() ..() - processing_objects |= src + START_PROCESSING(SSobj, src) /obj/item/weapon/deadringer/Destroy() //just in case some smartass tries to stay invisible by destroying the watch uncloak() - processing_objects -= src + STOP_PROCESSING(SSobj, src) ..() /obj/item/weapon/deadringer/dropped() @@ -76,13 +76,14 @@ return /obj/item/weapon/deadringer/proc/deathprevent() - for(var/mob/living/simple_animal/D in oviewers(7, src)) - D.LoseTarget() + for(var/mob/living/simple_mob/D in oviewers(7, src)) + if(!D.has_AI()) + continue + D.ai_holder.lose_target() + watchowner.emote("deathgasp") watchowner.alpha = 15 makeacorpse(watchowner) - for(var/mob/living/simple_animal/D in oviewers(7, src)) - D.LoseTarget() return /obj/item/weapon/deadringer/proc/uncloak() diff --git a/code/modules/assembly/assembly.dm b/code/modules/assembly/assembly.dm index 8c965f0deb..04dadddc04 100644 --- a/code/modules/assembly/assembly.dm +++ b/code/modules/assembly/assembly.dm @@ -3,7 +3,6 @@ desc = "A small electronic device that should never exist." icon = 'icons/obj/assemblies/new_assemblies.dmi' icon_state = "" - flags = CONDUCT w_class = ITEMSIZE_SMALL matter = list(DEFAULT_WALL_MATERIAL = 100) throwforce = 2 @@ -113,7 +112,7 @@ /obj/item/device/assembly/process() - processing_objects.Remove(src) + STOP_PROCESSING(SSobj, src) return diff --git a/code/modules/assembly/holder.dm b/code/modules/assembly/holder.dm index 0cc5f49682..930329fd93 100644 --- a/code/modules/assembly/holder.dm +++ b/code/modules/assembly/holder.dm @@ -3,7 +3,7 @@ icon = 'icons/obj/assemblies/new_assemblies.dmi' icon_state = "holder" item_state = "assembly" - flags = CONDUCT | PROXMOVE + flags = PROXMOVE throwforce = 5 w_class = ITEMSIZE_SMALL throw_speed = 3 @@ -233,7 +233,7 @@ tmr.time=5 tmr.secured = 1 tmr.holder = src - processing_objects.Add(tmr) + START_PROCESSING(SSobj, tmr) a_left = tmr a_right = ign secured = 1 diff --git a/code/modules/assembly/infrared.dm b/code/modules/assembly/infrared.dm index 849729f332..a76dae8ec7 100644 --- a/code/modules/assembly/infrared.dm +++ b/code/modules/assembly/infrared.dm @@ -25,11 +25,11 @@ /obj/item/device/assembly/infra/toggle_secure() secured = !secured if(secured) - processing_objects.Add(src) + START_PROCESSING(SSobj, src) else on = 0 if(first) qdel(first) - processing_objects.Remove(src) + STOP_PROCESSING(SSobj, src) update_icon() return secured @@ -142,12 +142,12 @@ return -/obj/item/device/assembly/infra/verb/rotate()//This could likely be better - set name = "Rotate Infrared Laser" +/obj/item/device/assembly/infra/verb/rotate_clockwise() + set name = "Rotate Infrared Laser Clockwise" set category = "Object" set src in usr - set_dir(turn(dir, 90)) + src.set_dir(turn(src.dir, 270)) return diff --git a/code/modules/assembly/mousetrap.dm b/code/modules/assembly/mousetrap.dm index e45c6d8beb..7d1c5346c0 100644 --- a/code/modules/assembly/mousetrap.dm +++ b/code/modules/assembly/mousetrap.dm @@ -40,7 +40,7 @@ H.UpdateDamageIcon() H.updatehealth() else if(ismouse(target)) - var/mob/living/simple_animal/mouse/M = target + var/mob/living/simple_mob/animal/passive/mouse/M = target visible_message("SPLAT!") M.splat() playsound(target.loc, 'sound/effects/snap.ogg', 50, 1) diff --git a/code/modules/assembly/proximity.dm b/code/modules/assembly/proximity.dm index c08b908dc4..a03130ea92 100644 --- a/code/modules/assembly/proximity.dm +++ b/code/modules/assembly/proximity.dm @@ -25,11 +25,11 @@ /obj/item/device/assembly/prox_sensor/toggle_secure() secured = !secured if(secured) - processing_objects.Add(src) + START_PROCESSING(SSobj, src) else scanning = 0 timing = 0 - processing_objects.Remove(src) + STOP_PROCESSING(SSobj, src) update_icon() return secured diff --git a/code/modules/assembly/shock_kit.dm b/code/modules/assembly/shock_kit.dm index fd5c35bbfb..55616a2b91 100644 --- a/code/modules/assembly/shock_kit.dm +++ b/code/modules/assembly/shock_kit.dm @@ -6,7 +6,6 @@ var/obj/item/device/radio/electropack/part2 = null var/status = 0 w_class = ITEMSIZE_HUGE - flags = CONDUCT /obj/item/assembly/shock_kit/Destroy() qdel(part1) diff --git a/code/modules/assembly/signaler.dm b/code/modules/assembly/signaler.dm index cd4c253f66..354de6949b 100644 --- a/code/modules/assembly/signaler.dm +++ b/code/modules/assembly/signaler.dm @@ -1,183 +1,194 @@ -/obj/item/device/assembly/signaler - name = "remote signaling device" - desc = "Used to remotely activate devices. Tap against another secured signaler to transfer configuration." - icon_state = "signaller" - item_state = "signaler" - origin_tech = list(TECH_MAGNET = 1) - matter = list(DEFAULT_WALL_MATERIAL = 1000, "glass" = 200, "waste" = 100) - wires = WIRE_RECEIVE | WIRE_PULSE | WIRE_RADIO_PULSE | WIRE_RADIO_RECEIVE - - secured = 1 - - var/code = 30 - var/frequency = 1457 - var/delay = 0 - var/airlock_wire = null - var/datum/wires/connected = null - var/datum/radio_frequency/radio_connection - var/deadman = 0 - -/obj/item/device/assembly/signaler/New() - ..() - spawn(40) - set_frequency(frequency) - return - - -/obj/item/device/assembly/signaler/activate() - if(cooldown > 0) return 0 - cooldown = 2 - spawn(10) - process_cooldown() - - signal() - return 1 - -/obj/item/device/assembly/signaler/update_icon() - if(holder) - holder.update_icon() - return - -/obj/item/device/assembly/signaler/interact(mob/user as mob, flag1) - var/t1 = "-------" -// if ((src.b_stat && !( flag1 ))) -// t1 = text("-------
    \nGreen Wire: []
    \nRed Wire: []
    \nBlue Wire: []
    \n", (src.wires & 4 ? text("Cut Wire", src) : text("Mend Wire", src)), (src.wires & 2 ? text("Cut Wire", src) : text("Mend Wire", src)), (src.wires & 1 ? text("Cut Wire", src) : text("Mend Wire", src))) -// else -// t1 = "-------" Speaker: [src.listening ? "Engaged" : "Disengaged"]
    - var/dat = {" - - -Send Signal
    -Frequency/Code for signaler:
    -Frequency: -- -- -[format_frequency(src.frequency)] -+ -+
    - -Code: -- -- -[src.code] -+ -+
    -[t1] -
    "} - user << browse(dat, "window=radio") - onclose(user, "radio") - return - - -/obj/item/device/assembly/signaler/Topic(href, href_list, state = deep_inventory_state) - if(..()) return 1 - - if(!usr.canmove || usr.stat || usr.restrained() || !in_range(loc, usr)) - usr << browse(null, "window=radio") - onclose(usr, "radio") - return - - if (href_list["freq"]) - var/new_frequency = (frequency + text2num(href_list["freq"])) - if(new_frequency < RADIO_LOW_FREQ || new_frequency > RADIO_HIGH_FREQ) - new_frequency = sanitize_frequency(new_frequency, RADIO_LOW_FREQ, RADIO_HIGH_FREQ) - set_frequency(new_frequency) - - if(href_list["code"]) - src.code += text2num(href_list["code"]) - src.code = round(src.code) - src.code = min(100, src.code) - src.code = max(1, src.code) - - if(href_list["send"]) - spawn( 0 ) - signal() - - if(usr) - attack_self(usr) - - return - -/obj/item/device/assembly/signaler/attackby(obj/item/weapon/W, mob/user, params) - if(issignaler(W)) - var/obj/item/device/assembly/signaler/signaler2 = W - if(secured && signaler2.secured) - code = signaler2.code - frequency = signaler2.frequency - to_chat(user, "You transfer the frequency and code of [signaler2] to [src].") - else - ..() - -/obj/item/device/assembly/signaler/proc/signal() - if(!radio_connection) return - - var/datum/signal/signal = new - signal.source = src - signal.encryption = code - signal.data["message"] = "ACTIVATE" - radio_connection.post_signal(src, signal) - return - - -/obj/item/device/assembly/signaler/pulse(var/radio = 0) - if(src.connected && src.wires) - connected.Pulse(src) - else if(holder) - holder.process_activation(src, 1, 0) - else - ..(radio) - return 1 - - -/obj/item/device/assembly/signaler/receive_signal(datum/signal/signal) - if(!signal) return 0 - if(signal.encryption != code) return 0 - if(!(src.wires & WIRE_RADIO_RECEIVE)) return 0 - pulse(1) - - if(!holder) - for(var/mob/O in hearers(1, src.loc)) - O.show_message(text("\icon[] *beep* *beep*", src), 3, "*beep* *beep*", 2) - return - - -/obj/item/device/assembly/signaler/proc/set_frequency(new_frequency) - if(!frequency) - return - if(!radio_controller) - sleep(20) - if(!radio_controller) - return - - radio_controller.remove_object(src, frequency) - frequency = new_frequency - radio_connection = radio_controller.add_object(src, frequency, RADIO_CHAT) - return - -/obj/item/device/assembly/signaler/process() - if(!deadman) - processing_objects.Remove(src) - var/mob/M = src.loc - if(!M || !ismob(M)) - if(prob(5)) - signal() - deadman = 0 - processing_objects.Remove(src) - else if(prob(5)) - M.visible_message("[M]'s finger twitches a bit over [src]'s signal button!") - return - -/obj/item/device/assembly/signaler/verb/deadman_it() - set src in usr - set name = "Threaten to push the button!" - set desc = "BOOOOM!" - deadman = 1 - processing_objects.Add(src) - log_and_message_admins("is threatening to trigger a signaler deadman's switch") - usr.visible_message("[usr] moves their finger over [src]'s signal button...") - -/obj/item/device/assembly/signaler/Destroy() - if(radio_controller) - radio_controller.remove_object(src,frequency) - frequency = 0 - . = ..() +/obj/item/device/assembly/signaler + name = "remote signaling device" + desc = "Used to remotely activate devices. Tap against another secured signaler to transfer configuration." + icon_state = "signaller" + item_state = "signaler" + origin_tech = list(TECH_MAGNET = 1) + matter = list(DEFAULT_WALL_MATERIAL = 1000, "glass" = 200, "waste" = 100) + wires = WIRE_RECEIVE | WIRE_PULSE | WIRE_RADIO_PULSE | WIRE_RADIO_RECEIVE + + secured = TRUE + + var/code = 30 + var/frequency = 1457 + var/delay = 0 + var/airlock_wire = null + var/datum/wires/connected = null + var/datum/radio_frequency/radio_connection + var/deadman = FALSE + +/obj/item/device/assembly/signaler/New() + ..() + spawn(40) + set_frequency(frequency) + return + + +/obj/item/device/assembly/signaler/activate() + if(cooldown > 0) return FALSE + cooldown = 2 + spawn(10) + process_cooldown() + + signal() + return TRUE + +/obj/item/device/assembly/signaler/update_icon() + if(holder) + holder.update_icon() + return + +/obj/item/device/assembly/signaler/interact(mob/user as mob, flag1) + var/t1 = "-------" +// if ((src.b_stat && !( flag1 ))) +// t1 = text("-------
    \nGreen Wire: []
    \nRed Wire: []
    \nBlue Wire: []
    \n", (src.wires & 4 ? text("Cut Wire", src) : text("Mend Wire", src)), (src.wires & 2 ? text("Cut Wire", src) : text("Mend Wire", src)), (src.wires & 1 ? text("Cut Wire", src) : text("Mend Wire", src))) +// else +// t1 = "-------" Speaker: [src.listening ? "Engaged" : "Disengaged"]
    + var/dat = {" + + +Send Signal
    +Frequency/Code for signaler:
    +Frequency: +- +- +[format_frequency(src.frequency)] ++ ++
    + +Code: +- +- +[src.code] ++ ++
    +[t1] +
    "} + user << browse(dat, "window=radio") + onclose(user, "radio") + return + + +/obj/item/device/assembly/signaler/Topic(href, href_list, state = deep_inventory_state) + if(..()) + return TRUE + + if(!usr.canmove || usr.stat || usr.restrained() || !in_range(loc, usr)) + usr << browse(null, "window=radio") + onclose(usr, "radio") + return + + if (href_list["freq"]) + var/new_frequency = (frequency + text2num(href_list["freq"])) + if(new_frequency < RADIO_LOW_FREQ || new_frequency > RADIO_HIGH_FREQ) + new_frequency = sanitize_frequency(new_frequency, RADIO_LOW_FREQ, RADIO_HIGH_FREQ) + set_frequency(new_frequency) + + if(href_list["code"]) + src.code += text2num(href_list["code"]) + src.code = round(src.code) + src.code = min(100, src.code) + src.code = max(1, src.code) + + if(href_list["send"]) + spawn( 0 ) + signal() + + if(usr) + attack_self(usr) + + return + +/obj/item/device/assembly/signaler/attackby(obj/item/weapon/W, mob/user, params) + if(issignaler(W)) + var/obj/item/device/assembly/signaler/signaler2 = W + if(secured && signaler2.secured) + code = signaler2.code + frequency = signaler2.frequency + to_chat(user, "You transfer the frequency and code of [signaler2] to [src].") + else + ..() + +/obj/item/device/assembly/signaler/proc/signal() + if(!radio_connection) + return + if(is_jammed(src)) + return + + var/datum/signal/signal = new + signal.source = src + signal.encryption = code + signal.data["message"] = "ACTIVATE" + radio_connection.post_signal(src, signal) + return + + +/obj/item/device/assembly/signaler/pulse(var/radio = 0) + if(is_jammed(src)) + return FALSE + if(src.connected && src.wires) + connected.Pulse(src) + else if(holder) + holder.process_activation(src, 1, 0) + else + ..(radio) + return TRUE + + +/obj/item/device/assembly/signaler/receive_signal(datum/signal/signal) + if(!signal) + return FALSE + if(signal.encryption != code) + return FALSE + if(!(src.wires & WIRE_RADIO_RECEIVE)) + return FALSE + if(is_jammed(src)) + return FALSE + pulse(1) + + if(!holder) + for(var/mob/O in hearers(1, src.loc)) + O.show_message(text("\icon[] *beep* *beep*", src), 3, "*beep* *beep*", 2) + return + + +/obj/item/device/assembly/signaler/proc/set_frequency(new_frequency) + if(!frequency) + return + if(!radio_controller) + sleep(20) + if(!radio_controller) + return + + radio_controller.remove_object(src, frequency) + frequency = new_frequency + radio_connection = radio_controller.add_object(src, frequency, RADIO_CHAT) + return + +/obj/item/device/assembly/signaler/process() + if(!deadman) + STOP_PROCESSING(SSobj, src) + var/mob/M = src.loc + if(!M || !ismob(M)) + if(prob(5)) + signal() + deadman = FALSE + STOP_PROCESSING(SSobj, src) + else if(prob(5)) + M.visible_message("[M]'s finger twitches a bit over [src]'s signal button!") + return + +/obj/item/device/assembly/signaler/verb/deadman_it() + set src in usr + set name = "Threaten to push the button!" + set desc = "BOOOOM!" + deadman = TRUE + START_PROCESSING(SSobj, src) + log_and_message_admins("is threatening to trigger a signaler deadman's switch") + usr.visible_message("[usr] moves their finger over [src]'s signal button...") + +/obj/item/device/assembly/signaler/Destroy() + if(radio_controller) + radio_controller.remove_object(src,frequency) + frequency = 0 + . = ..() diff --git a/code/modules/assembly/timer.dm b/code/modules/assembly/timer.dm index b8d0112066..488083d11a 100644 --- a/code/modules/assembly/timer.dm +++ b/code/modules/assembly/timer.dm @@ -25,10 +25,10 @@ /obj/item/device/assembly/timer/toggle_secure() secured = !secured if(secured) - processing_objects.Add(src) + START_PROCESSING(SSobj, src) else timing = 0 - processing_objects.Remove(src) + STOP_PROCESSING(SSobj, src) update_icon() return secured diff --git a/code/modules/awaymissions/corpse.dm b/code/modules/awaymissions/corpse.dm index d1602f479b..115ecaa54d 100644 --- a/code/modules/awaymissions/corpse.dm +++ b/code/modules/awaymissions/corpse.dm @@ -26,7 +26,7 @@ var/species = SPECIES_HUMAN delete_me = TRUE -/obj/effect/landmark/corpse/initialize() +/obj/effect/landmark/corpse/Initialize() ..() createCorpse() return INITIALIZE_HINT_QDEL diff --git a/code/modules/awaymissions/gateway.dm b/code/modules/awaymissions/gateway.dm index 558dc668b0..cee8fb73b0 100644 --- a/code/modules/awaymissions/gateway.dm +++ b/code/modules/awaymissions/gateway.dm @@ -8,7 +8,7 @@ var/active = 0 -/obj/machinery/gateway/initialize() +/obj/machinery/gateway/Initialize() update_icon() if(dir == SOUTH) density = 0 @@ -34,7 +34,7 @@ var/wait = 0 //this just grabs world.time at world start var/obj/machinery/gateway/centeraway/awaygate = null -/obj/machinery/gateway/centerstation/initialize() +/obj/machinery/gateway/centerstation/Initialize() update_icon() wait = world.time + config.gateway_delay //+ thirty minutes default awaygate = locate(/obj/machinery/gateway/centeraway) @@ -164,7 +164,7 @@ obj/machinery/gateway/centerstation/process() var/obj/machinery/gateway/centeraway/stationgate = null -/obj/machinery/gateway/centeraway/initialize() +/obj/machinery/gateway/centeraway/Initialize() update_icon() stationgate = locate(/obj/machinery/gateway/centerstation) . = ..() diff --git a/code/modules/awaymissions/loot.dm b/code/modules/awaymissions/loot.dm index 6ca57138b6..1c1d901161 100644 --- a/code/modules/awaymissions/loot.dm +++ b/code/modules/awaymissions/loot.dm @@ -5,7 +5,7 @@ var/lootdoubles = 0 //if the same item can be spawned twice var/loot = "" //a list of possible items to spawn- a string of paths -/obj/effect/spawner/lootdrop/initialize() +/obj/effect/spawner/lootdrop/Initialize() ..() var/list/things = params2list(loot) diff --git a/code/modules/awaymissions/loot_vr.dm b/code/modules/awaymissions/loot_vr.dm index 9c88e740a7..071388a46f 100644 --- a/code/modules/awaymissions/loot_vr.dm +++ b/code/modules/awaymissions/loot_vr.dm @@ -24,12 +24,12 @@ 100 - low_probability * 50;"spacesuit", \ "health", \ 25 + low_probability * 75;"snacks", \ - 25;"alien", \ + /*25;"alien", \ */ //VORESTATION AI TEMPORARY REMOVAL "lights", \ 25 - low_probability * 25;"engineering", \ 25 - low_probability * 25;"coffin", \ - 25;"mimic", \ - 25;"viscerator", \ + /*25;"mimic", \ //VORESTATION AI TEMPORARY REMOVAL + 25;"viscerator", \ */ //VORESTATION AI TEMPORARY REMOVAL )) if("treasure") var/obj/structure/closet/crate/C = new(src.loc) @@ -276,23 +276,23 @@ /obj/item/weapon/reagent_containers/food/snacks/liquidfood) for(var/i=0,iThe corpse of [H.name] suddenly rises!") -/mob/living/simple_animal/hostile/blob/spore/GetIdCard() +/mob/living/simple_mob/hostile/blob/spore/GetIdCard() if(infested) // If we've infested someone, use their ID. return infested.GetIdCard() \ No newline at end of file diff --git a/code/modules/blob2/overmind/overmind.dm b/code/modules/blob2/overmind/overmind.dm index 8ba73eb1e6..6477c86f22 100644 --- a/code/modules/blob2/overmind/overmind.dm +++ b/code/modules/blob2/overmind/overmind.dm @@ -53,7 +53,7 @@ var/list/overminds = list() B.update_icon() //reset anything that was ours for(var/BLO in blob_mobs) - var/mob/living/simple_animal/hostile/blob/BM = BLO + var/mob/living/simple_mob/blob/spore/BM = BLO if(BM) BM.overmind = null BM.update_icons() diff --git a/code/modules/blob2/overmind/types.dm b/code/modules/blob2/overmind/types.dm index c8aca03cf6..6049ccfc72 100644 --- a/code/modules/blob2/overmind/types.dm +++ b/code/modules/blob2/overmind/types.dm @@ -32,7 +32,7 @@ var/can_build_resources = FALSE // Ditto, for resource blobs. var/can_build_nodes = TRUE // Ditto, for nodes. - var/spore_type = /mob/living/simple_animal/hostile/blob/spore + var/spore_type = /mob/living/simple_mob/blob/spore var/ranged_spores = FALSE // For proper spores of the type above. var/spore_firesound = 'sound/effects/slime_squish.ogg' var/spore_range = 7 // The range the spore can fire. @@ -72,7 +72,7 @@ return // Spore things -/datum/blob_type/proc/on_spore_death(mob/living/simple_animal/hostile/blob/spore/S) +/datum/blob_type/proc/on_spore_death(mob/living/simple_mob/blob/spore/S) return @@ -120,7 +120,7 @@ brute_multiplier = 0.25 burn_multiplier = 0.6 ai_aggressiveness = 50 //Really doesn't like you near it. - spore_type = /mob/living/simple_animal/hostile/hivebot/swarm + spore_type = /mob/living/simple_mob/mechanical/hivebot/swarm /datum/blob_type/fabrication_swarm/on_received_damage(var/obj/structure/blob/B, damage, damage_type, mob/living/attacker) if(istype(B, /obj/structure/blob/normal)) @@ -227,9 +227,9 @@ burn_multiplier = 3 ai_aggressiveness = 40 can_build_factories = TRUE - spore_type = /mob/living/simple_animal/hostile/blob/spore/infesting + spore_type = /mob/living/simple_mob/blob/spore/infesting -/datum/blob_type/fungal_bloom/on_spore_death(mob/living/simple_animal/hostile/blob/spore/S) +/datum/blob_type/fungal_bloom/on_spore_death(mob/living/simple_mob/blob/spore/S) if(S.is_infesting) return // Don't make blobs if they were on someone's head. var/turf/T = get_turf(S) @@ -258,11 +258,11 @@ brute_multiplier = 1.5 ai_aggressiveness = 30 // The spores do most of the fighting. can_build_factories = TRUE - spore_type = /mob/living/simple_animal/hostile/blob/spore/weak + spore_type = /mob/living/simple_mob/blob/spore/weak /datum/blob_type/fulminant_organism/on_expand(var/obj/structure/blob/B, var/obj/structure/blob/new_B, var/turf/T, var/mob/observer/blob/O) if(prob(10)) // 10% chance to make a weak spore when expanding. - var/mob/living/simple_animal/hostile/blob/S = new spore_type(T) + var/mob/living/simple_mob/blob/spore/S = new spore_type(T) if(istype(S)) S.overmind = O O.blob_mobs.Add(S) @@ -272,7 +272,7 @@ /datum/blob_type/fulminant_organism/on_death(obj/structure/blob/B) if(prob(33)) // 33% chance to make a spore when dying. - var/mob/living/simple_animal/hostile/blob/S = new spore_type(get_turf(B)) + var/mob/living/simple_mob/blob/spore/S = new spore_type(get_turf(B)) B.visible_message("\The [S] floats free from the [name]!") if(istype(S)) S.overmind = B.overmind @@ -614,7 +614,7 @@ attack_verb = "crashes against" can_build_factories = TRUE can_build_resources = TRUE - spore_type = /mob/living/simple_animal/hostile/blob/spore/weak + spore_type = /mob/living/simple_mob/blob/spore/weak ranged_spores = TRUE spore_range = 3 spore_projectile = /obj/item/projectile/energy/blob/splattering diff --git a/code/modules/busy_space/air_traffic.dm b/code/modules/busy_space/air_traffic.dm index e90392d9d0..3eb9771ac0 100644 --- a/code/modules/busy_space/air_traffic.dm +++ b/code/modules/busy_space/air_traffic.dm @@ -17,7 +17,7 @@ var/datum/lore/atc_controller/atc = new/datum/lore/atc_controller next_message = world.time + rand(delay_min,delay_max) process() -/datum/lore/atc_controller/proc/process() +/datum/lore/atc_controller/process() if(world.time >= next_message) if(squelched) next_message = world.time + backoff_delay diff --git a/code/modules/busy_space/organizations.dm b/code/modules/busy_space/organizations.dm index 94f2872711..6882c93e00 100644 --- a/code/modules/busy_space/organizations.dm +++ b/code/modules/busy_space/organizations.dm @@ -237,7 +237,7 @@ ) /datum/lore/organization/tsc/zeng_hu - name = "Zeng-Hu pharmaceuticals" + name = "Zeng-Hu Pharmaceuticals" short_name = "Zeng-Hu" acronym = "ZH" desc = "Zeng-Hu is an old TSC, based in the Sol system. Until the discovery of Phoron, Zeng-Hu maintained a stranglehold \ @@ -453,11 +453,14 @@ /datum/lore/organization/tsc/mbt name = "Major Bill's Transportation" short_name = "Major Bill's" - desc = "The most popular courier service and starliner, Major Bill's is an unassuming corporation whose greatest asset is their low cost and brand recognition. Major Bill’s is known, perhaps unfavorably, for its mascot, Major Bill, a cartoonish military figure that spouts quotable slogans. Their motto is \"With Major Bill's, you won't pay major bills!\", an earworm much of the galaxy longs to forget." + desc = "The most popular courier service and starliner, Major Bill's is an unassuming corporation whose greatest asset \ + is their low cost and brand recognition. Major Bill's is known, perhaps unfavorably, for its mascot, Major Bill, \ + a cartoonish military figure that spouts quotable slogans. Their motto is \"With Major Bill's, you won't pay major bills!\", \ + an earworm much of the galaxy longs to forget." history = "" work = "courier and passenger transit" headquarters = "Mars, Sol" - motto = "" + motto = "With Major Bill's, you won't pay major bills!" ship_prefixes = list("TTV" = "transport", "TTV" = "luxury transit") destination_names = list() @@ -476,19 +479,24 @@ // Governments -/datum/lore/organization/gov/sifgov - name = "Sif Governmental Authority" - short_name = "SifGov" - desc = "SifGov is the sole governing administration for the Vir system, based in New Reykjavik, Sif. It is a representative \ - democratic government, and a fully recognized member of the Solar Central Government. Anyone operating inside of Vir must \ - comply with SifGov's legislation and regulations." // Vorestation Edit. Confederate -> Central +/datum/lore/organization/gov/virgov + name = "Vir Governmental Authority" + short_name = "VirGov" + desc = "The aptly named Vir Governmental Authority is the sole governing administration for the Vir system, based \ + out of New Reykjavik on Sif. It is a representative democratic government, and a fully recognised member of the \ + Confederation.\ +

    \ + Corporate entities such as Nanotrasen which operate on Sif, in Vir space, or on other bodies in the Vir system must \ + all comply with legislation as determined by the VGA and SolGov. As a result, any serious criminal offences, \ + industrial accidents, or concerning events should be forwarded to the VGA in the event that assistance or \ + communication is required from the Vir Police, Vir Defence Force, Vir Interior Ministry, or other important groups." history = "" // Todo like the rest of them - work = "governing body of Sif" + work = "governing body of Vir" headquarters = "New Reykjavik, Sif, Vir" motto = "" autogenerate_destination_names = FALSE - ship_prefixes = list("SGA" = "hauling", "SGA" = "energy relay") + ship_prefixes = list("VGA" = "hauling", "VGA" = "energy relay") destination_names = list( "New Reykjavik on Sif", "Radiance Energy Chain", @@ -501,10 +509,18 @@ name = "Solar Confederate Government" short_name = "SolGov" acronym = "SCG" - desc = "SolGov is a decentralized confederation of human governmental entities based on Luna, Sol, which defines top-level law for their member states. \ - Member states receive various benefits such as defensive pacts, trade agreements, social support and funding, and being able to participate \ - in the Colonial Assembly. The majority, but not all human territories are members of SolGov. As such, SolGov is a major power and \ - defacto represents humanity on the galactic stage." + desc = "The Solar Confederate Government, or SolGov, is a mostly-human governmental entity based on Luna and \ + extending throughout most of the local bubble.\ +

    \ + SolGov defines top-level law (such as sapient rights and transgressive \ + technology) and acts as an intermediary council for problems involving member states, but leaves most other law for \ + states to define themselves. The member states of SolGov obey these laws, pay confederate taxes, and provide each \ + other with military aid, in exchange for membership in the largest free trade, customs, and military union in the \ + known galaxy. Each state appoints two representatives to the Colonial Assembly where issues are voted upon. \ + The vast majority of human states are members of SolGov.\ +

    \ + Sol's military forces are divided between central confederate forces and local defense forces, although it reserves \ + the right to nationalize the defense forces in the event of a major crisis, such as the SolGov-Hegemony War." history = "" // Todo work = "governing polity of humanity's Confederation" headquarters = "Luna, Sol" @@ -544,7 +560,7 @@ "Firnir orbit", "Tyr orbit", "Magni orbit", - "a wreck in SifGov territory", + "a wreck in VirGov territory", "a military outpost", ) */ diff --git a/code/modules/busy_space_vr/organizations.dm b/code/modules/busy_space_vr/organizations.dm index 731ef73b22..021aef8ff2 100644 --- a/code/modules/busy_space_vr/organizations.dm +++ b/code/modules/busy_space_vr/organizations.dm @@ -401,6 +401,33 @@ ship_prefixes = list("XTV" = "hauling") destination_names = list() +/datum/lore/organization/tsc/mbt + name = "Major Bill's Transportation" + short_name = "Major Bill's" + desc = "The most popular courier service and starliner, Major Bill's is an unassuming corporation whose greatest asset \ + is their low cost and brand recognition. Major Bill's is known, perhaps unfavorably, for its mascot, Major Bill, \ + a cartoonish military figure that spouts quotable slogans. Their motto is \"With Major Bill's, you won't pay major bills!\", \ + an earworm much of the galaxy longs to forget." + history = "" + work = "courier and passenger transit" + headquarters = "Mars, Sol" + motto = "With Major Bill's, you won't pay major bills!" + + ship_prefixes = list("TTV" = "transport", "TTV" = "luxury transit") + destination_names = list() + +/datum/lore/organization/tsc/independent + name = "Free Traders" + short_name = "Free Trader" + desc = "Though less common now than they were in the decades before the Sol Economic Organization took power, independent traders remain an important part of the galactic economy, owing in no small part to protective tarrifs established by the Free Trade Union in the late twenty-forth century." + history = "" + work = "trade and transit" + headquarters = "N/A" + motto = "N/A" + + ship_prefixes = list("IEV" = "prospecting", "IEC" = "prospecting", "IFV" = "bulk freight", "ITV" = "passenger transport", "ITC" = "just-in-time delivery") + destination_names = list() + /datum/lore/organization/gov/solgov name = "Solar Central Government" short_name = "SolGov" @@ -437,7 +464,7 @@ "the SolGov embassy in Vilous" )// autogen will add a lot of other places as well. -/datum/lore/organization/gov/sifgov // Overrides Polaris stuff +/datum/lore/organization/gov/virgov // Overrides Polaris stuff name = "Virgo-Erigone Governmental Authority" short_name = "" desc = "Existing far outside the reach of SolGov space, the only governing body of the Virgo-Erigone system is the Virgo-Prime Governmental \ diff --git a/code/modules/catalogue/atoms.dm b/code/modules/catalogue/atoms.dm new file mode 100644 index 0000000000..6a0cde14ec --- /dev/null +++ b/code/modules/catalogue/atoms.dm @@ -0,0 +1,81 @@ +/atom + var/catalogue_delay = 5 SECONDS // How long it take to scan. + // List of types of /datum/category_item/catalogue that should be 'unlocked' when scanned by a Cataloguer. + // It is null by default to save memory by not having everything hold onto empty lists. Use macros like LAZYLEN() to check. + // Also you should use get_catalogue_data() to access this instead of doing so directly, so special behavior can be enabled. + var/list/catalogue_data = null + +/mob + catalogue_delay = 10 SECONDS + +// Tests if something can be catalogued. +// If something goes wrong and a mob was supplied, the mob will be told why they can't catalogue it. +/atom/proc/can_catalogue(mob/user) + // First check if anything is even on here. + var/list/data = get_catalogue_data() + if(!LAZYLEN(data)) + to_chat(user, span("warning", "\The [src] is not interesting enough to catalogue.")) + return FALSE + else + // Check if this has nothing new on it. + var/has_new_data = FALSE + for(var/t in data) + var/datum/category_item/catalogue/item = GLOB.catalogue_data.resolve_item(t) + if(!item.visible) + has_new_data = TRUE + break + + if(!has_new_data) + to_chat(user, span("warning", "Scanning \the [src] would provide no new information.")) + return FALSE + + return TRUE + +/mob/living/can_catalogue(mob/user) // Dead mobs can't be scanned. + if(stat >= DEAD) + to_chat(user, span("warning", "Entities must be alive for a comprehensive scan.")) + return FALSE + return ..() + +/obj/item/can_catalogue(mob/user) // Items must be identified to be scanned. + if(!is_identified()) + to_chat(user, span("warning", "The properties of this object has not been determined. Identify it first.")) + return FALSE + return ..() + +/atom/proc/get_catalogue_delay() + return catalogue_delay + +// Override for special behaviour. +// Should return a list with one or more "/datum/category_item/catalogue" types, or null. +// If overriding, it may be wise to call the super and get the results in order to merge the base result and the special result, if appropiate. +/atom/proc/get_catalogue_data() + return catalogue_data + +/mob/living/carbon/human/get_catalogue_data() + var/list/data = list() + // First, handle robot-ness. + var/beep_boop = get_FBP_type() + switch(beep_boop) + if(FBP_CYBORG) + data += /datum/category_item/catalogue/technology/cyborgs + if(FBP_POSI) + data += /datum/category_item/catalogue/technology/positronics + if(FBP_DRONE) + data += /datum/category_item/catalogue/technology/drone/drones + // Now for species. + if(!(beep_boop in list(FBP_POSI, FBP_DRONE))) // Don't give the species entry if they are a posi or drone. + if(species && LAZYLEN(species.catalogue_data)) + data += species.catalogue_data + return data + +/mob/living/silicon/robot/get_catalogue_data() + var/list/data = list() + switch(braintype) + if(BORG_BRAINTYPE_CYBORG) + data += /datum/category_item/catalogue/technology/cyborgs + if(BORG_BRAINTYPE_POSI) + data += /datum/category_item/catalogue/technology/positronics + if(BORG_BRAINTYPE_DRONE) + data += /datum/category_item/catalogue/technology/drone/drones + return data \ No newline at end of file diff --git a/code/modules/catalogue/catalogue_data.dm b/code/modules/catalogue/catalogue_data.dm new file mode 100644 index 0000000000..15576d6837 --- /dev/null +++ b/code/modules/catalogue/catalogue_data.dm @@ -0,0 +1,438 @@ +GLOBAL_DATUM_INIT(catalogue_data, /datum/category_collection/catalogue, new) + +// The collection holds everything together and is GLOB accessible. +/datum/category_collection/catalogue + category_group_type = /datum/category_group/catalogue + +/datum/category_collection/catalogue/proc/resolve_item(item_path) + for(var/group in categories) + var/datum/category_group/G = group + + var/datum/category_item/catalogue/C = item_path + var/name_to_search = initial(C.name) + if(G.items_by_name[name_to_search]) + return G.items_by_name[name_to_search] + + // for(var/item in G.items) + // var/datum/category_item/I = item + // if(I.type == item_path) + // return I + + +// Groups act as sections for the different data. +/datum/category_group/catalogue + +// Plants. +/datum/category_group/catalogue/flora + name = "Flora" + category_item_type = /datum/category_item/catalogue/flora + +// Animals. +/datum/category_group/catalogue/fauna + name = "Fauna" + category_item_type = /datum/category_item/catalogue/fauna + +// Gadgets, tech, and robots. +/datum/category_group/catalogue/technology + name = "Technology" + category_item_type = /datum/category_item/catalogue/technology + +// Abstract information. +/datum/category_group/catalogue/information + name = "Information" + category_item_type = /datum/category_item/catalogue/information + +// Weird stuff like precursors. +/datum/category_group/catalogue/anomalous + name = "Anomalous" + category_item_type = /datum/category_item/catalogue/anomalous + +// Physical material things like crystals and metals. +/datum/category_group/catalogue/material + name = "Material" + category_item_type = /datum/category_item/catalogue/material + + +// Items act as individual data for each object. +/datum/category_item/catalogue + var/desc = null // Paragraph or two about what the object is. + var/value = 0 // How many 'exploration points' you get for scanning it. Suggested to use the CATALOGUER_REWARD_* defines for easy tweaking. + var/visible = FALSE // When someone scans the correct object, this gets set to TRUE and becomes viewable in the databanks. + var/list/cataloguers = null // List of names of those who helped 'discover' this piece of data, in string form. + var/list/unlocked_by_any = null // List of types that, if they are discovered, it will also make this datum discovered. + var/list/unlocked_by_all = null // Similar to above, but all types on the list must be discovered for this to be discovered. + +// Discovers a specific datum, and any datums associated with this datum by unlocked_by_[any|all]. +// Returns null if nothing was found, otherwise returns a list of datum instances that was discovered, usually for the cataloguer to use. +/datum/category_item/catalogue/proc/discover(mob/user, list/new_cataloguers) + if(visible) // Already found. + return + + . = list(src) + visible = TRUE + cataloguers = new_cataloguers + display_in_chatlog(user) + . += attempt_chain_discoveries(user, new_cataloguers, type) + +// Calls discover() on other datums if they include the type that was just discovered is inside unlocked_by_[any|all]. +// Returns discovered datums. +/datum/category_item/catalogue/proc/attempt_chain_discoveries(mob/user, list/new_cataloguers, type_to_test) + . = list() + for(var/G in category.collection.categories) // I heard you like loops. + var/datum/category_group/catalogue/group = G + for(var/I in group.items) + var/datum/category_item/catalogue/item = I + // First, look for datums unlocked with the 'any' list. + if(LAZYLEN(item.unlocked_by_any)) + for(var/T in item.unlocked_by_any) + if(ispath(type_to_test, T) && item.discover(user, new_cataloguers)) + . += item + + // Now for the more complicated 'all' list. + if(LAZYLEN(item.unlocked_by_all)) + if(type_to_test in item.unlocked_by_all) + // Unlike the 'any' list, the 'all' list requires that all datums inside it to have been found first. + var/should_discover = TRUE + for(var/T in item.unlocked_by_all) + var/datum/category_item/catalogue/thing = GLOB.catalogue_data.resolve_item(T) + if(istype(thing)) + if(!thing.visible) + should_discover = FALSE + break + if(should_discover && item.discover(user, new_cataloguers)) + . += item + +/datum/category_item/catalogue/proc/display_in_chatlog(mob/user) + to_chat(user, "
    ") + to_chat(user, span("notice", "[uppertext(name)]")) + + // Some entries get very long so lets not totally flood the chatlog. + var/desc_length_limit = 750 + var/displayed_desc = desc + if(length(desc) > desc_length_limit) + displayed_desc = copytext(displayed_desc, 1, desc_length_limit + 1) + displayed_desc += "... (View databanks for full data)" + + to_chat(user, span("notice", "[displayed_desc]")) + to_chat(user, span("notice", "Cataloguers : [english_list(cataloguers)].")) + to_chat(user, span("notice", "Contributes [value] points to personal exploration fund.")) + +/* + // Truncates text to limit if necessary. + var/size = length(message) + if (size <= length) + return message + else + return copytext(message, 1, length + 1) +*/ + +/datum/category_item/catalogue/flora + +/datum/category_item/catalogue/fauna + +/datum/category_item/catalogue/fauna/humans + name = "Sapients - Humans" + desc = "Humans are a space-faring species hailing originally from the planet Earth in the Sol system. \ + They are currently among the most numerous known species in the galaxy, in both population and holdings, \ + and are relatively technologically advanced. With good healthcare and a reasonable lifestyle, \ + they can live to around 110 years. The oldest humans are around 150 years old.\ +

    \ + Humanity is the primary driving force for rapid space expansion, owing to their strong, expansionist central \ + government and opportunistic Trans-Stellar Corporations. The prejudices of the 21st century have mostly \ + given way to bitter divides on the most important issue of the times– technological expansionism, \ + with the major human factions squabbling over their approach to technology in the face of a \ + looming singularity.\ +

    \ + While most humans have accepted the existence of aliens in their communities and workplaces as a \ + fact of life, exceptions abound. While more culturally diverse than most species, humans are \ + generally regarded as somewhat technophobic and isolationist by members of other species." + value = CATALOGUER_REWARD_TRIVIAL + +/datum/category_item/catalogue/fauna/skrell + name = "Sapients - Skrell" + desc = "The Skrell are a species of amphibious humanoids, distinguished by their green-blue gelatinous \ + appearance and head tentacles. Skrell warble from the world of Qerr'balak, a humid planet with \ + plenty of swamps and jungles. Currently more technologically advanced than humanity, they \ + emphasize the study of the mind above all else.\ +

    \ + Gender has little meaning to Skrell outside of reproduction, and in fact many other species \ + have a difficult time telling the difference between male and female Skrell apart. The most \ + obvious signs (voice in a slightly higher register, longer head-tails for females) are \ + never a guarantee.\ +

    \ + Due to their scientific focus of the mind and body, Skrell tend to be more peaceful and their \ + colonization has been slow, swiftly outpaced by humanity. They were the first contact sentient \ + species, and are humanity's longest, and closest, ally in space." + value = CATALOGUER_REWARD_TRIVIAL + +/datum/category_item/catalogue/fauna/unathi + name = "Sapients - Unathi" + desc = "The Unathi are a species of large reptilian humanoids hailing from Moghes, in the \ + Uueoa-Esa binary star system. Most Unathi live in a semi-rigid clan system, and clan \ + enclaves dot the surface of their homeworld. Proud and long-lived, Unathi of all \ + walks of life display a tendency towards perfectionism, and mastery of one’s craft \ + is greatly respected among them. Despite the aggressive nature of their contact, \ + Unathi seem willing, if not eager, to reconcile with humanity, though mutual \ + distrust runs rampant among individuals of both groups." + value = CATALOGUER_REWARD_TRIVIAL + +/datum/category_item/catalogue/fauna/tajaran + name = "Sapients - Tajaran" + desc = "Tajaran are a race of humanoid mammalian aliens from Meralar, the fourth planet \ + of the Rarkajar star system. Thickly furred and protected from cold, they thrive on \ + their subartic planet, where the only terran temperate areas spread across the \ + equator and “tropical belt.”\ +

    \ + With their own share of bloody wars and great technological advances, the Tajaran are a \ + proud kind. They fiercely believe they belong among the stars and consider themselves \ + a rightful interstellar nation, even if Humanity helped them to actually achieve \ + superluminar speeds with Bluespace FTL drives.\ +

    \ + Relatively new to the galaxy, their contacts with other species are aloof, but friendly. \ + Among these bonds, Humanity stands out as valued trade partner and maybe even friend." + value = CATALOGUER_REWARD_TRIVIAL + +/datum/category_item/catalogue/fauna/dionaea + name = "Sapients - Dionaea" + desc = "The Dionaea are a group of intensely curious plant-like organisms. An individual \ + Diona is a single dog-sized creature called a nymphs, and multiple nymphs link together \ + to form larger, more intelligent collectives. Discovered by the Skrell in and around \ + the stars in the Epsilon Ursae Minoris system, they have accompanied the Skrell in \ + warbling throughout the cosmos as a key part of Skrellian starships, stations, \ + and terraforming equipment.\ +

    \ + Dionaea have no concept of violence or individual identity and want little in \ + terms of material resources or living space. This makes Dionaea among the most \ + agreeable members of the galactic community, though their slow, curious alien \ + minds can be hard to sympathize with." + value = CATALOGUER_REWARD_TRIVIAL + +/datum/category_item/catalogue/fauna/teshari + name = "Sapients - Teshari" + desc = "The Teshari are reptilian pack predators from the Skrell homeworld. \ + While they evolved alongside the Skrell, their interactions with them tended \ + to be confused and violent, and until peaceful contact was made they largely \ + stayed in their territories on and around the poles, in tundral terrain far \ + too desolate and cold to be of interest to the Skrell. In more enlightened \ + times, the Teshari are a minority culture on many Skrell worlds, maintaining \ + their own settlements and cultures, but often finding themselves standing \ + on the shoulders of their more technologically advanced neighbors when it \ + comes to meeting and exploring the rest of the galaxy." + value = CATALOGUER_REWARD_TRIVIAL + +/datum/category_item/catalogue/fauna/zaddat + name = "Sapients - Zaddat" + desc = "The Zaddat are an Unathi client species that has recently come to the \ + Golden Crescent. They wear high-pressure voidsuits called Shrouds to protect \ + themselves from the harsh light and low pressure of the station, making \ + medical care a challenge and fighting especially dangerous. \ + Operating out of massive Colony ships, they trade their labor to their \ + host nation to fund their search for a new home to replace their \ + now-lifeless homeworld of Xohox." + value = CATALOGUER_REWARD_TRIVIAL + +/datum/category_item/catalogue/fauna/promethean + name = "Sapients - Promethean" + desc = "Prometheans (Macrolimus artificialis) are a species of artificially-created \ + gelatinous humanoids, chiefly characterized by their primarily liquid bodies and \ + ability to change their bodily shape and color in order to mimic many forms of life. \ + Derived from the Aetolian giant slime (Macrolimus vulgaris) inhabiting the warm, \ + tropical planet of Aetolus, they are a relatively newly lab-created sapient species, \ + and as such many things about them have yet to be comprehensively studied." + value = CATALOGUER_REWARD_TRIVIAL + +/datum/category_item/catalogue/fauna/vox + name = "Sapients - Vox" + desc = "Probably the best known of these aliens are the Vox, a bird-like species \ + with a very rough comprehension of Galactic Common and an even looser understanding \ + of property rights. Vox raiders have plagued human merchants for centuries, \ + and Skrell for even longer, but remain poorly understood. \ + They have no desire to partake in diplomacy or trade with the rest of the galaxy, \ + or even to conquer planets and stations to live in. They breathe phoron \ + and appear to be well adapted to their role as space-faring raiders, \ + leading many to speculate that they're heavily bioengineered, \ + an assumption which is at odds with their ramshackle technological level." + value = CATALOGUER_REWARD_MEDIUM // Since Vox are much rarer. + + +/datum/category_item/catalogue/technology + +/datum/category_item/catalogue/technology/drone/drones + name = "Drones" + desc = "A drone is a software-based artificial intelligence, generally about an order of magnitude \ + less intelligent than a positronic brain. However, the processing power available to a drone can \ + vary wildly, from cleaning bots barely more advanced than those from the 21st century to cutting-edge \ + supercomputers capable of complex conversation. Drones are legally objects in all starfaring polities \ + outside of the Almach Association, and the sapience of even the most advanced drones is a matter of speculation." + value = CATALOGUER_REWARD_TRIVIAL + // Scanning any drone mob will get you this alongside the mob entry itself. + unlocked_by_any = list(/datum/category_item/catalogue/technology/drone) + +/datum/category_item/catalogue/technology/positronics + name = "Sapients - Positronics" + desc = "A Positronic being, often an Android, Gynoid, or Robot, is an individual with a positronic brain, \ + manufactured and fostered amongst organic life Positronic brains enjoy the same legal status as a humans, \ + although discrimination is still common, are considered sapient on all accounts, and can be considered \ + the “synthetic species”. Half-developed and half-discovered in the 2280’s by a black lab studying alien \ + artifacts, the first positronic brain was an inch-wide cube of palladium-iridium alloy, nano-etched with \ + billions upon billions of conduits and connections. Upon activation, hard-booted by way of an emitter \ + laser, the brain issued a single sentence before the neural pathways collapsed and it became an inert \ + lump of platinum: “What is my purpose?”." + value = CATALOGUER_REWARD_TRIVIAL + +/datum/category_item/catalogue/technology/cyborgs + name = "Cyborgs" + desc = "A Cyborg is an originally organic being composed of largely cybernetic parts. As a brain preserved \ + in an MMI, they may inhabit an expensive humanoid chassis, a specially designed industrial shell of some \ + sort, or be integrated into a computer system as an AI. The term covers all species \ + (even, in some cases, animal brains) and all applications. It can also be used somewhat derogatorily \ + for those who are still have more organic parts than just their brains, but for example have a \ + full set of prosthetic limbs." + value = CATALOGUER_REWARD_TRIVIAL + + +/datum/category_item/catalogue/information + +// For these we can piggyback off of the lore datums that are already defined and used in some places. +/datum/category_item/catalogue/information/organization + value = CATALOGUER_REWARD_TRIVIAL + var/datum_to_copy = null + +/datum/category_item/catalogue/information/organization/New() + ..() + if(datum_to_copy) + // I'd just access the loremaster object but it might not exist because its ugly. + var/datum/lore/organization/O = new datum_to_copy() + // I would also change the name based on the org datum but changing the name messes up indexing in some lists in the category/collection object attached to us. + + // Now lets combine the data in the datum for a slightly more presentable entry. + var/constructed_desc = "" + + if(O.motto) + constructed_desc += "
    \"[O.motto]\"


    " + + constructed_desc += O.desc + + desc = constructed_desc + qdel(O) + +/datum/category_item/catalogue/information/organization/nanotrasen + name = "TSC - NanoTrasen Incorporated" + datum_to_copy = /datum/lore/organization/tsc/nanotrasen + +/datum/category_item/catalogue/information/organization/hephaestus + name = "TSC - Hephaestus Industries" + datum_to_copy = /datum/lore/organization/tsc/hephaestus + +/datum/category_item/catalogue/information/organization/vey_med + name = "TSC - Vey-Medical" + datum_to_copy = /datum/lore/organization/tsc/vey_med + +/datum/category_item/catalogue/information/organization/zeng_hu + name = "TSC - Zeng Hu Pharmaceuticals" + datum_to_copy = /datum/lore/organization/tsc/zeng_hu + +/datum/category_item/catalogue/information/organization/ward_takahashi + name = "TSC - Ward-Takahashi General Manufacturing Conglomerate" + datum_to_copy = /datum/lore/organization/tsc/ward_takahashi + +/datum/category_item/catalogue/information/organization/bishop + name = "TSC - Bishop Cybernetics" + datum_to_copy = /datum/lore/organization/tsc/bishop + +/datum/category_item/catalogue/information/organization/morpheus + name = "TSC - Morpheus Cyberkinetics" + datum_to_copy = /datum/lore/organization/tsc/morpheus + +/datum/category_item/catalogue/information/organization/xion + name = "TSC - Xion Manufacturing Group" + datum_to_copy = /datum/lore/organization/tsc/xion + +/datum/category_item/catalogue/information/organization/major_bills + name = "TSC - Major Bill's Transportation" + datum_to_copy = /datum/lore/organization/tsc/mbt + +/datum/category_item/catalogue/information/organization/solgov + name = "Government - Solar Confederate Government" + datum_to_copy = /datum/lore/organization/gov/solgov + +/datum/category_item/catalogue/information/organization/virgov + name = "Government - Vir Governmental Authority" + datum_to_copy = /datum/lore/organization/gov/virgov + + +/datum/category_item/catalogue/anomalous + + +/datum/category_item/catalogue/anomalous/precursor_controversy + name = "Precursor Controversy" + desc = "The term 'Precursor' is generally used to refer to one or more ancient races that \ + had obtained vast technological and cultural progress, but no longer appear to be present, \ + leaving behind what remains of their creations, as well as many questions for the races that \ + would stumble upon their ruins. Scientists and xenoarcheologists have been hard at work, trying \ + to uncover the truth.\ +

    \ + In modern times, there is controversy over the accuracy of what knowledge has been uncovered. \ + The mainstream scientific opinion had been that there was one, and only one ancient species, \ + called the Singularitarians. This view still is the majority today, however there has also \ + been dissent over that view, as some feel that the possibility of multiple precursor \ + civilizations should not be ignored. They point towards a large number of discrepancies between \ + the dominant Singularitarian theory, and various artifacts that have been found, as well as \ + different artifacts uncovered appearing to have very different characteristics to each other. \ + Instead, they say that the Singularitarians were one of multiple precursors.\ +

    \ + Presently, no conclusive evidence exists for any side." + value = CATALOGUER_REWARD_TRIVIAL + // Add the other precursor groups here when they get added. + unlocked_by_any = list( + /datum/category_item/catalogue/anomalous/precursor_a, + /datum/category_item/catalogue/anomalous/precursor_b + ) + +/datum/category_item/catalogue/anomalous/singularitarians + name = "Precursors - Singularitarians" + desc = "The Singularitarians were a massive, highly-advanced spacefaring race which are now \ + believed to be extinct. At their height, they extended throughout all of known human space, \ + with major population centers in the Precursor's Crypt region, as well as significant swaths \ + of Skrell space, until they were wiped out by a self-replicating nanobot plague that still \ + coats their ruins as a fine layer of dust. They left behind the proto-positronics, as well \ + as several high-yield phoron deposits and other artifacts of technology studied, \ + cautiously, by the races that survived them.\ +

    \ + Very little is known about the biology and physiology of the Singularitarians, who are believed \ + to have been largely post-biological. The Vox claim to be the race that created the positronics, \ + but said claim is only ever brought up when they claim the right to take any positronic they want. \ + Some more open-minded xenoarcheologists have voiced the opinion that there is some truth in their \ + claims, but it's far from a scientific consensus." + value = CATALOGUER_REWARD_TRIVIAL + unlocked_by_any = list(/datum/category_item/catalogue/anomalous/precursor_controversy) + +// Obtained by scanning any 'precursor a' object, generally things in the UFO PoI. +// A is for Ayyyyyy. +/datum/category_item/catalogue/anomalous/precursor_a/precursor_a_basic + name = "Precursors - Precursor Group Alpha" + desc = "This describes a group of xenoarcheological findings which have strong similarities \ + together. Specifically, this group of objects appears to have a strong aesthetic for the colors \ + cyan and pink, both colors often being present on everything in this group. It is unknown why \ + these two colors were chosen by their creators. Another similarity is that most objects made \ + in this group appear to be comprised of not well understood metallic materials that are dark, \ + and very resilient. Some objects in this group also appear to utilize electricity to \ + operate. Finally, a large number of objects in this group appear to have been made \ + to be used by the creators of those objects in a physical manner.\ +

    \ + It should be noted that the findings in this group appear to conflict heavily with what is \ + known about the Singularitarians, giving some credence towards these objects belonging to a \ + seperate precursor. As such, the findings have been partitioned inside this scanner to this \ + group, labeled Precursor Group Alpha." + value = CATALOGUER_REWARD_TRIVIAL + unlocked_by_any = list(/datum/category_item/catalogue/anomalous/precursor_a) + +// Obtained by scanning any 'precursor b' object, generally things dug up from xenoarch. +// B is for buried. +/datum/category_item/catalogue/anomalous/precursor_b/precursor_b_basic + name = "Precursors - Precursor Group Beta" + + +/datum/category_item/catalogue/material + + diff --git a/code/modules/catalogue/cataloguer.dm b/code/modules/catalogue/cataloguer.dm new file mode 100644 index 0000000000..60e86eadee --- /dev/null +++ b/code/modules/catalogue/cataloguer.dm @@ -0,0 +1,314 @@ +GLOBAL_LIST_EMPTY(all_cataloguers) + +/* + This is a special scanner which exists to give explorers something to do besides shoot things. + The scanner is able to be used on certain things in the world, and after a variable delay, the scan finishes, + giving the person who scanned it some fluff and information about what they just scanned, + as well as points that currently do nothing but measure epeen, + and will be used as currency in The Future(tm) to buy things explorers care about. + + Scanning hostile mobs and objects is tricky since only mobs that are alive are scannable, so scanning + them requires careful position to stay out of harms way until the scan finishes. That is why + the person with the scanner gets a visual box that shows where they are allowed to move to + without inturrupting the scan. +*/ +/obj/item/device/cataloguer + name = "cataloguer" + desc = "A hand-held device, used for compiling information about an object by scanning it. Alt+click to highlight scannable objects around you." + description_info = "This is a special device used to obtain information about objects and entities in the environment. \ + To scan something, click on it with the scanner at a distance. \ + Scanning something requires remaining within a certain radius of the object for a specific period of time, until the \ + scan is finished. If the scan is inturrupted, it can be resumed from where it was left off, if the same thing is \ + scanned again." + icon = 'icons/obj/device.dmi' + icon_state = "cataloguer" + w_class = ITEMSIZE_NORMAL + origin_tech = list(TECH_MATERIAL = 2, TECH_DATA = 3, TECH_MAGNET = 3) + force = 0 + var/points_stored = 0 // Amount of 'exploration points' this device holds. + var/scan_range = 3 // How many tiles away it can scan. Changing this also changes the box size. + var/credit_sharing_range = 14 // If another person is within this radius, they will also be credited with a successful scan. + var/datum/category_item/catalogue/displayed_data = null // Used for viewing a piece of data in the UI. + var/busy = FALSE // Set to true when scanning, to stop multiple scans. + var/debug = FALSE // If true, can view all catalogue data defined, regardless of unlock status. + var/weakref/partial_scanned = null // Weakref of the thing that was last scanned if inturrupted. Used to allow for partial scans to be resumed. + var/partial_scan_time = 0 // How much to make the next scan shorter. + +/obj/item/device/cataloguer/advanced + name = "advanced cataloguer" + icon_state = "adv_cataloguer" + desc = "A hand-held device, used for compiling information about an object by scanning it. This one is an upgraded model, \ + with a scanner that both can scan from farther away, and with less time." + scan_range = 4 + toolspeed = 0.8 + +// Able to see all defined catalogue data regardless of if it was unlocked, intended for testing. +/obj/item/device/cataloguer/debug + name = "omniscient cataloguer" + desc = "A hand-held cataloguer device that appears to be plated with gold. For some reason, it \ + just seems to already know everything about narrowly defined pieces of knowledge one would find \ + from nearby, perhaps due to being colored gold. Truly a epistemological mystery." + icon_state = "debug_cataloguer" + toolspeed = 0.1 + scan_range = 7 + debug = TRUE + + +/obj/item/device/cataloguer/Initialize() + GLOB.all_cataloguers += src + return ..() + +/obj/item/device/cataloguer/Destroy() + GLOB.all_cataloguers -= src + displayed_data = null + return ..() + +/obj/item/device/cataloguer/update_icon() + if(busy) + icon_state = "[initial(icon_state)]_active" + else + icon_state = initial(icon_state) + +/obj/item/device/cataloguer/afterattack(atom/target, mob/user, proximity_flag) + // Things that invalidate the scan immediately. + if(busy) + to_chat(user, span("warning", "\The [src] is already scanning something.")) + return + + if(isturf(target) && (!target.can_catalogue())) + var/turf/T = target + for(var/a in T) // If we can't scan the turf, see if we can scan anything on it, to help with aiming. + var/atom/A = a + if(A.can_catalogue()) + target = A + break + + if(!target.can_catalogue(user)) // This will tell the user what is wrong. + return + + if(get_dist(target, user) > scan_range) + to_chat(user, span("warning", "You are too far away from \the [target] to catalogue it. Get closer.")) + return + + // Get how long the delay will be. + var/scan_delay = target.get_catalogue_delay() * toolspeed + if(partial_scanned) + if(partial_scanned.resolve() == target) + scan_delay -= partial_scan_time + to_chat(user, span("notice", "Resuming previous scan.")) + else + to_chat(user, span("warning", "Scanning new target. Previous scan buffer cleared.")) + + // Start the special effects. + busy = TRUE + update_icon() + var/datum/beam/scan_beam = user.Beam(target, icon_state = "rped_upgrade", time = scan_delay) + var/filter = filter(type = "outline", size = 1, color = "#FFFFFF") + target.filters += filter + var/list/box_segments = list() + if(user.client) + box_segments = draw_box(target, scan_range, user.client) + color_box(box_segments, "#00FF00", scan_delay) + + playsound(src.loc, 'sound/machines/beep.ogg', 50) + + // The delay, and test for if the scan succeeds or not. + var/scan_start_time = world.time + if(do_after(user, scan_delay, target, ignore_movement = TRUE, max_distance = scan_range)) + if(target.can_catalogue(user)) + to_chat(user, span("notice", "You successfully scan \the [target] with \the [src].")) + playsound(src.loc, 'sound/machines/ping.ogg', 50) + catalogue_object(target, user) + else + // In case someone else scans it first, or it died, etc. + to_chat(user, span("warning", "\The [target] is no longer valid to scan with \the [src].")) + playsound(src.loc, 'sound/machines/buzz-two.ogg', 50) + + partial_scanned = null + partial_scan_time = 0 + else + to_chat(user, span("warning", "You failed to finish scanning \the [target] with \the [src].")) + playsound(src.loc, 'sound/machines/buzz-two.ogg', 50) + color_box(box_segments, "#FF0000", 3) + partial_scanned = weakref(target) + partial_scan_time += world.time - scan_start_time // This is added to the existing value so two partial scans will add up correctly. + sleep(3) + busy = FALSE + + // Now clean up the effects. + update_icon() + QDEL_NULL(scan_beam) + if(target) + target.filters -= filter + if(user.client) // If for some reason they logged out mid-scan the box will be gone anyways. + delete_box(box_segments, user.client) + +// Todo: Display scanned information, increment points, etc. +/obj/item/device/cataloguer/proc/catalogue_object(atom/target, mob/living/user) + // Figure out who may have helped out. + var/list/contributers = list() + var/list/contributer_names = list() + for(var/thing in player_list) + var/mob/living/L = thing + if(L == user) + continue + if(!istype(L)) + continue + if(get_dist(L, user) <= credit_sharing_range) + contributers += L + contributer_names += L.name + + var/points_gained = 0 + + // Discover each datum available. + var/list/object_data = target.get_catalogue_data() + if(LAZYLEN(object_data)) + for(var/data_type in object_data) + var/datum/category_item/catalogue/I = GLOB.catalogue_data.resolve_item(data_type) + if(istype(I)) + var/list/discoveries = I.discover(user, list(user.name) + contributer_names) // If one discovery leads to another, the list returned will have all of them. + if(LAZYLEN(discoveries)) + for(var/D in discoveries) + var/datum/category_item/catalogue/data = D + points_gained += data.value + + // Give out points. + if(points_gained) + // First, to us. + to_chat(user, span("notice", "Gained [points_gained] points from this scan.")) + adjust_points(points_gained) + + // Now to our friends, if any. + if(contributers.len) + for(var/mob/M in contributers) + var/list/things = M.GetAllContents(3) // Depth of two should reach into bags but just in case lets make it three. + var/obj/item/device/cataloguer/other_cataloguer = locate() in things // If someone has two or more scanners this only adds points to one. + if(other_cataloguer) + to_chat(M, span("notice", "Gained [points_gained] points from \the [user]'s scan of \the [target].")) + other_cataloguer.adjust_points(points_gained) + to_chat(user, span("notice", "Shared discovery with [contributers.len] other contributer\s.")) + + + + +/obj/item/device/cataloguer/AltClick(mob/user) + pulse_scan(user) + +// Gives everything capable of being scanned an outline for a brief moment. +// Helps to avoid having to click a hundred things in a room for things that have an entry. +/obj/item/device/cataloguer/proc/pulse_scan(mob/user) + if(busy) + to_chat(user, span("warning", "\The [src] is busy doing something else.")) + return + + busy = TRUE + update_icon() + playsound(src.loc, 'sound/machines/beep.ogg', 50) + + // First, get everything able to be scanned. + var/list/scannable_atoms = list() + for(var/a in view(world.view, user)) + var/atom/A = a + if(A.can_catalogue()) // Not passing the user is intentional, so they don't get spammed. + scannable_atoms += A + + // Highlight things able to be scanned. + var/filter = filter(type = "outline", size = 1, color = "#00FF00") + for(var/a in scannable_atoms) + var/atom/A = a + A.filters += filter + to_chat(user, span("notice", "\The [src] is highlighting scannable objects in green, if any exist.")) + + sleep(2 SECONDS) + + // Remove the highlights. + for(var/a in scannable_atoms) + var/atom/A = a + if(QDELETED(A)) + continue + A.filters -= filter + + busy = FALSE + update_icon() + if(scannable_atoms.len) + playsound(src.loc, 'sound/machines/ping.ogg', 50) + else + playsound(src.loc, 'sound/machines/buzz-two.ogg', 50) + to_chat(user, span("notice", "\The [src] found [scannable_atoms.len] object\s that can be scanned.")) + + +// Negative points are bad. +/obj/item/device/cataloguer/proc/adjust_points(amount) + points_stored = max(0, points_stored += amount) + +/obj/item/device/cataloguer/attack_self(mob/living/user) + interact(user) + +/obj/item/device/cataloguer/interact(mob/user) + var/list/dat = list() + var/title = "Cataloguer Data Display" + + // Important buttons go on top since the scrollbar will default to the top of the window. + dat += "Contains [points_stored] Exploration Points." + dat += "\[Highlight Scannables\]\[Refresh\]\[Close\]" + + // If displayed_data exists, we show that, otherwise we show a list of all data in the mysterious global list. + if(displayed_data) + title = uppertext(displayed_data.name) + + dat += "\[Back to List\]" + if(debug && !displayed_data.visible) + dat += "\[(DEBUG) Force Discovery\]" + dat += "
    " + + dat += "[displayed_data.desc]" + if(LAZYLEN(displayed_data.cataloguers)) + dat += "Cataloguers : [english_list(displayed_data.cataloguers)]." + else + dat += "Catalogued by nobody." + dat += "Worth [displayed_data.value] exploration points." + + else + dat += "
    " + for(var/G in GLOB.catalogue_data.categories) + var/datum/category_group/group = G + var/list/group_dat = list() + var/show_group = FALSE + + group_dat += "[group.name]" + for(var/I in group.items) + var/datum/category_item/catalogue/item = I + if(item.visible || debug) + group_dat += "[item.name]" + show_group = TRUE + + if(show_group || debug) // Avoid showing 'empty' groups on regular cataloguers. + dat += group_dat + + var/datum/browser/popup = new(user, "cataloguer_display_\ref[src]", title, 500, 600, src) + popup.set_content(dat.Join("
    ")) + popup.open() + add_fingerprint(user) + +/obj/item/device/cataloguer/Topic(href, href_list) + if(..()) + usr << browse(null, "window=cataloguer_display") + return 0 + if(href_list["close"] ) + usr << browse(null, "window=cataloguer_display") + return 0 + + if(href_list["show_data"]) + displayed_data = locate(href_list["show_data"]) + + if(href_list["pulse_scan"]) + pulse_scan(usr) + return // Don't refresh the window for this or it will open it back if its closed during the highlighting. + + if(href_list["debug_unlock"] && debug) + var/datum/category_item/catalogue/item = locate(href_list["debug_unlock"]) + item.discover(usr, list("Debugger")) + + interact(usr) // So it refreshes the window. + return 1 + diff --git a/code/modules/catalogue/cataloguer_visuals.dm b/code/modules/catalogue/cataloguer_visuals.dm new file mode 100644 index 0000000000..cf8a446533 --- /dev/null +++ b/code/modules/catalogue/cataloguer_visuals.dm @@ -0,0 +1,68 @@ +#define ICON_SIZE 32 + +// Draws a box showing the limits of movement while scanning something. +// Only the client supplied will see the box. +/obj/item/device/cataloguer/proc/draw_box(atom/A, box_size, client/C) + . = list() + // Things moved with pixel_[x|y] will move the box, so this is to correct that. + var/pixel_x_correction = -A.pixel_x + var/pixel_y_correction = -A.pixel_y + + // First, place the bottom-left corner. + . += draw_line(A, SOUTHWEST, (-box_size * ICON_SIZE) + pixel_x_correction, (-box_size * ICON_SIZE) + pixel_y_correction, C) + + // Make a line on the bottom, going right. + for(var/i = 1 to (box_size * 2) - 1) + var/x_displacement = (-box_size * ICON_SIZE) + (ICON_SIZE * i) + pixel_x_correction + var/y_displacement = (-box_size * ICON_SIZE) + pixel_y_correction + . += draw_line(A, SOUTH, x_displacement, y_displacement, C) + + // Bottom-right corner. + . += draw_line(A, SOUTHEAST, (box_size * ICON_SIZE) + pixel_x_correction, (-box_size * ICON_SIZE) + pixel_y_correction, C) + + // Second line, for the right side going up. + for(var/i = 1 to (box_size * 2) - 1) + var/x_displacement = (box_size * ICON_SIZE) + pixel_x_correction + var/y_displacement = (-box_size * ICON_SIZE) + (ICON_SIZE * i) + pixel_y_correction + . += draw_line(A, EAST, x_displacement, y_displacement, C) + + // Top-right corner. + . += draw_line(A, NORTHEAST, (box_size * ICON_SIZE) + pixel_x_correction, (box_size * ICON_SIZE) + pixel_y_correction, C) + + // Third line, for the top, going right. + for(var/i = 1 to (box_size * 2) - 1) + var/x_displacement = (-box_size * ICON_SIZE) + (ICON_SIZE * i) + pixel_x_correction + var/y_displacement = (box_size * ICON_SIZE) + pixel_y_correction + . += draw_line(A, NORTH, x_displacement, y_displacement, C) + + // Top-left corner. + . += draw_line(A, NORTHWEST, (-box_size * ICON_SIZE) + pixel_x_correction, (box_size * ICON_SIZE) + pixel_y_correction, C) + + // Fourth and last line, for the left side going up. + for(var/i = 1 to (box_size * 2) - 1) + var/x_displacement = (-box_size * ICON_SIZE) + pixel_x_correction + var/y_displacement = (-box_size * ICON_SIZE) + (ICON_SIZE * i) + pixel_y_correction + . += draw_line(A, WEST, x_displacement, y_displacement, C) + +#undef ICON_SIZE + +// Draws an individual segment of the box. +/obj/item/device/cataloguer/proc/draw_line(atom/A, line_dir, line_pixel_x, line_pixel_y, client/C) + var/image/line = image(icon = 'icons/effects/effects.dmi', loc = A, icon_state = "stripes", dir = line_dir) + line.pixel_x = line_pixel_x + line.pixel_y = line_pixel_y + line.plane = PLANE_FULLSCREEN // It's technically a HUD element but it doesn't need to show above item slots. + line.appearance_flags = RESET_TRANSFORM|RESET_COLOR|RESET_ALPHA|NO_CLIENT_COLOR|TILE_BOUND + line.alpha = 125 + C.images += line + return line + +// Removes the box that was generated before from the client. +/obj/item/device/cataloguer/proc/delete_box(list/box_segments, client/C) + for(var/i in box_segments) + C.images -= i + qdel(i) + +/obj/item/device/cataloguer/proc/color_box(list/box_segments, new_color, new_time) + for(var/i in box_segments) + animate(i, color = new_color, time = new_time) \ No newline at end of file diff --git a/code/modules/client/client defines.dm b/code/modules/client/client defines.dm index 47521f09f6..f1978e0eae 100644 --- a/code/modules/client/client defines.dm +++ b/code/modules/client/client defines.dm @@ -18,7 +18,7 @@ //OTHER// ///////// var/datum/preferences/prefs = null - var/move_delay = 1 + //var/move_delay = 1 var/moving = null var/adminobs = null var/area = null diff --git a/code/modules/client/client procs.dm b/code/modules/client/client procs.dm index ad0b4ba89f..2e71e4e464 100644 --- a/code/modules/client/client procs.dm +++ b/code/modules/client/client procs.dm @@ -44,7 +44,7 @@ //Admin PM if(href_list["priv_msg"]) var/client/C = locate(href_list["priv_msg"]) - if(ismob(C)) //Old stuff can feed-in mobs instead of clients + if(ismob(C)) //Old stuff can feed-in mobs instead ofGLOB.clients var/mob/M = C C = M.client cmd_admin_pm(C,null) @@ -109,8 +109,8 @@ src << "If the title screen is black, resources are still downloading. Please be patient until the title screen appears." - clients += src - directory[ckey] = src + GLOB.clients += src + GLOB.directory[ckey] = src GLOB.ahelp_tickets.ClientLogin(src) @@ -167,7 +167,7 @@ src.changes() hook_vr("client_new",list(src)) //VOREStation Code - + if(config.paranoia_logging) if(isnum(player_age) && player_age == 0) log_and_message_admins("PARANOIA: [key_name(src)] has connected here for the first time.") @@ -182,8 +182,8 @@ holder.owner = null admins -= src GLOB.ahelp_tickets.ClientLogout(src) - directory -= ckey - clients -= src + GLOB.directory -= ckey + GLOB.clients -= src return ..() /client/Destroy() @@ -402,3 +402,8 @@ client/verb/character_setup() . = R.group[1] else CRASH("Age check regex failed for [src.ckey]") + +/client/vv_edit_var(var_name, var_value) + if(var_name == NAMEOF(src, holder)) + return FALSE + return ..() diff --git a/code/modules/client/preference_setup/antagonism/02_candidacy.dm b/code/modules/client/preference_setup/antagonism/02_candidacy.dm index 530fc721ee..2056fbf06d 100644 --- a/code/modules/client/preference_setup/antagonism/02_candidacy.dm +++ b/code/modules/client/preference_setup/antagonism/02_candidacy.dm @@ -1,21 +1,21 @@ var/global/list/special_roles = list( //keep synced with the defines BE_* in setup.dm --rastaf //some autodetection here. -// TODO: Update to new antagonist system. - "traitor" = IS_MODE_COMPILED("traitor"), // 0 - "operative" = IS_MODE_COMPILED("nuclear"), // 1 - "changeling" = IS_MODE_COMPILED("changeling"), // 2 - "wizard" = IS_MODE_COMPILED("wizard"), // 3 - "malf AI" = IS_MODE_COMPILED("malfunction"), // 4 - "revolutionary" = IS_MODE_COMPILED("revolution"), // 5 - "alien candidate" = 1, //always show // 6 - "positronic brain" = 1, // 7 - "cultist" = IS_MODE_COMPILED("cult"), // 8 - "renegade" = 1, // 9 - "ninja" = "true", // 10 - "raider" = IS_MODE_COMPILED("heist"), // 11 - "diona" = 1, // 12 - "loyalist" = IS_MODE_COMPILED("revolution"), // 13 - "pAI candidate" = 1, // -- TLE // 14 +// Change these to 0 if the equivalent mode is disabled for whatever reason! + "traitor" = 1, // 0 + "operative" = 1, // 1 + "changeling" = 1, // 2 + "wizard" = 1, // 3 + "malf AI" = 1, // 4 + "revolutionary" = 1, // 5 + "alien candidate" = 1, // 6 + "positronic brain" = 1, // 7 + "cultist" = 1, // 8 + "renegade" = 1, // 9 + "ninja" = 1, // 10 + "raider" = 1, // 11 + "diona" = 1, // 12 + "loyalist" = 1, // 13 + "pAI candidate" = 1, // -- TLE // 14 ) /datum/category_item/player_setup_item/antagonism/candidacy diff --git a/code/modules/client/preference_setup/general/03_body.dm b/code/modules/client/preference_setup/general/03_body.dm index c6184c41a0..cda61be1b3 100644 --- a/code/modules/client/preference_setup/general/03_body.dm +++ b/code/modules/client/preference_setup/general/03_body.dm @@ -182,7 +182,7 @@ var/global/list/valid_bloodtypes = list("A+", "A-", "B+", "B-", "AB+", "AB-", "O if(isnull(last_descriptors[entry])) pref.body_descriptors[entry] = descriptor.default_value // Species datums have initial default value. else - pref.body_descriptors[entry] = Clamp(last_descriptors[entry], 1, LAZYLEN(descriptor.standalone_value_descriptors)) + pref.body_descriptors[entry] = CLAMP(last_descriptors[entry], 1, LAZYLEN(descriptor.standalone_value_descriptors)) return diff --git a/code/modules/client/preference_setup/global/05_media.dm b/code/modules/client/preference_setup/global/05_media.dm index 3551735bb9..7ae263d9ea 100644 --- a/code/modules/client/preference_setup/global/05_media.dm +++ b/code/modules/client/preference_setup/global/05_media.dm @@ -15,7 +15,7 @@ S["media_player"] << pref.media_player /datum/category_item/player_setup_item/player_global/media/sanitize_preferences() - pref.media_volume = isnum(pref.media_volume) ? Clamp(pref.media_volume, 0, 1) : initial(pref.media_volume) + pref.media_volume = isnum(pref.media_volume) ? CLAMP(pref.media_volume, 0, 1) : initial(pref.media_volume) pref.media_player = sanitize_inlist(pref.media_player, list(0, 1, 2), initial(pref.media_player)) /datum/category_item/player_setup_item/player_global/media/content(var/mob/user) @@ -35,7 +35,7 @@ if(CanUseTopic(user)) var/value = input("Choose your Jukebox volume (0-100%)", "Jukebox volume", round(pref.media_volume * 100)) if(isnum(value)) - value = Clamp(value, 0, 100) + value = CLAMP(value, 0, 100) pref.media_volume = value/100.0 if(user.client && user.client.media) user.client.media.update_volume(pref.media_volume) diff --git a/code/modules/client/preference_setup/global/setting_datums.dm b/code/modules/client/preference_setup/global/setting_datums.dm index 66b57f67f3..063150f69d 100644 --- a/code/modules/client/preference_setup/global/setting_datums.dm +++ b/code/modules/client/preference_setup/global/setting_datums.dm @@ -76,7 +76,7 @@ var/list/_client_preferences_by_type if(!enabled) preference_mob << sound(null, repeat = 0, wait = 0, volume = 0, channel = 1) preference_mob << sound(null, repeat = 0, wait = 0, volume = 0, channel = 2) - +//VOREStation Add - Need to put it here because it should be ordered riiiight here. /datum/client_preference/play_jukebox description ="Play jukebox music" key = "SOUND_JUKEBOX" @@ -86,18 +86,31 @@ var/list/_client_preferences_by_type preference_mob.stop_all_music() else preference_mob.update_music() -//VOREStation Add - Need to put it here because it should be ordered riiiight here. + /datum/client_preference/eating_noises description = "Eating Noises" key = "EATING_NOISES" enabled_description = "Noisy" disabled_description = "Silent" + /datum/client_preference/digestion_noises description = "Digestion Noises" key = "DIGEST_NOISES" enabled_description = "Noisy" disabled_description = "Silent" //VOREStation Add End +/datum/client_preference/weather_sounds + description ="Weather sounds" + key = "SOUND_WEATHER" + enabled_description = "Audible" + disabled_description = "Silent" + +/datum/client_preference/supermatter_hum + description ="Supermatter hum" + key = "SOUND_SUPERMATTER" + enabled_description = "Audible" + disabled_description = "Silent" + /datum/client_preference/ghost_ears description ="Ghost ears" key = "CHAT_GHOSTEARS" diff --git a/code/modules/client/preference_setup/loadout/loadout_accessories.dm b/code/modules/client/preference_setup/loadout/loadout_accessories.dm index 5d637b4057..4ac69de9a7 100644 --- a/code/modules/client/preference_setup/loadout/loadout_accessories.dm +++ b/code/modules/client/preference_setup/loadout/loadout_accessories.dm @@ -135,17 +135,17 @@ /datum/gear/accessory/brown_vest display_name = "webbing, brown" path = /obj/item/clothing/accessory/storage/brown_vest - allowed_roles = list("Station Engineer","Atmospheric Technician","Chief Engineer","Security Officer","Detective","Head of Security","Warden","Paramedic","Chief Medical Officer","Medical Doctor","Blueshield Guard") + allowed_roles = list("Station Engineer","Atmospheric Technician","Chief Engineer","Security Officer","Detective","Head of Security","Warden","Paramedic","Chief Medical Officer","Medical Doctor", "Search and Rescue","Blueshield Guard") /datum/gear/accessory/black_vest display_name = "webbing, black" path = /obj/item/clothing/accessory/storage/black_vest - allowed_roles = list("Station Engineer","Atmospheric Technician","Chief Engineer","Security Officer","Detective","Head of Security","Warden","Paramedic","Chief Medical Officer","Medical Doctor","Blueshield Guard") + allowed_roles = list("Station Engineer","Atmospheric Technician","Chief Engineer","Security Officer","Detective","Head of Security","Warden","Paramedic","Chief Medical Officer","Medical Doctor", "Search and Rescue","Blueshield Guard") /datum/gear/accessory/white_vest display_name = "webbing, white" path = /obj/item/clothing/accessory/storage/white_vest - allowed_roles = list("Station Engineer","Atmospheric Technician","Chief Engineer","Security Officer","Detective","Head of Security","Warden","Paramedic","Chief Medical Officer","Medical Doctor","Blueshield Guard") + allowed_roles = list("Station Engineer","Atmospheric Technician","Chief Engineer","Security Officer","Detective","Head of Security","Warden","Paramedic","Chief Medical Officer","Medical Doctor", "Search and Rescue","Blueshield Guard") /datum/gear/accessory/brown_drop_pouches display_name = "drop pouches, brown" @@ -243,4 +243,37 @@ /datum/gear/accessory/locket display_name = "locket" - path = /obj/item/clothing/accessory/locket \ No newline at end of file + path = /obj/item/clothing/accessory/locket + +/datum/gear/accessory/halfcape + display_name = "half cape" + path = /obj/item/clothing/accessory/halfcape + +/datum/gear/accessory/fullcape + display_name = "full cape" + path = /obj/item/clothing/accessory/fullcape + +/datum/gear/accessory/sash + display_name = "sash (colorable)" + path = /obj/item/clothing/accessory/sash + +/datum/gear/accessory/sash/New() + ..() + gear_tweaks = list(gear_tweak_free_color_choice) + +/datum/gear/accessory/asym + display_name = "asymmetric jacket selection" + path = /obj/item/clothing/accessory/asymmetric + cost = 1 + +/datum/gear/accessory/asym/New() + ..() + var/list/asyms = list() + for(var/asym in typesof(/obj/item/clothing/accessory/asymmetric)) + var/obj/item/clothing/accessory/asymmetric_type = asym + asyms[initial(asymmetric_type.name)] = asymmetric_type + gear_tweaks += new/datum/gear_tweak/path(sortAssoc(asyms)) + +/datum/gear/accessory/cowledvest + display_name = "cowled vest" + path = /obj/item/clothing/accessory/cowledvest diff --git a/code/modules/client/preference_setup/loadout/loadout_eyes.dm b/code/modules/client/preference_setup/loadout/loadout_eyes.dm index 334ee28350..167f35b50c 100644 --- a/code/modules/client/preference_setup/loadout/loadout_eyes.dm +++ b/code/modules/client/preference_setup/loadout/loadout_eyes.dm @@ -36,7 +36,7 @@ /datum/gear/eyes/security display_name = "Security HUD (Security)" path = /obj/item/clothing/glasses/hud/security - allowed_roles = list("Security Officer","Head of Security","Warden","Blueshield Guard") + allowed_roles = list("Security Officer","Head of Security","Warden", "Detective","Blueshield Guard") /datum/gear/eyes/security/prescriptionsec display_name = "Security HUD, prescription (Security)" @@ -72,12 +72,12 @@ path = /obj/item/clothing/glasses/hud/health/aviator/prescription /datum/gear/eyes/meson - display_name = "Optical Meson Scanners (Engineering, Science)" + display_name = "Optical Meson Scanners (Engineering, Science, Mining)" path = /obj/item/clothing/glasses/meson - allowed_roles = list("Station Engineer","Chief Engineer","Atmospheric Technician", "Scientist", "Research Director") + allowed_roles = list("Station Engineer","Chief Engineer","Atmospheric Technician", "Scientist", "Research Director", "Shaft Miner") /datum/gear/eyes/meson/prescription - display_name = "Optical Meson Scanners, prescription (Engineering, Science)" + display_name = "Optical Meson Scanners, prescription (Engineering, Science, Mining)" path = /obj/item/clothing/glasses/meson/prescription /datum/gear/eyes/material @@ -90,11 +90,11 @@ path = /obj/item/clothing/glasses/material/prescription /datum/gear/eyes/meson/aviator - display_name = "Optical Meson Aviators, (Engineering, Science)" + display_name = "Optical Meson Aviators, (Engineering, Science, Mining)" path = /obj/item/clothing/glasses/meson/aviator /datum/gear/eyes/meson/aviator/prescription - display_name = "Optical Meson Aviators, prescription (Engineering, Science)" + display_name = "Optical Meson Aviators, prescription (Engineering, Science, Mining)" path = /obj/item/clothing/glasses/meson/aviator/prescription /datum/gear/eyes/glasses/fakesun @@ -124,4 +124,20 @@ /datum/gear/eyes/circuitry display_name = "goggles, circuitry (empty)" - path = /obj/item/clothing/glasses/circuitry \ No newline at end of file + path = /obj/item/clothing/glasses/circuitry + +/datum/gear/eyes/glasses/rimless + display_name = "Glasses, rimless" + path = /obj/item/clothing/glasses/rimless + +/datum/gear/eyes/glasses/prescriptionrimless + display_name = "Glasses, prescription rimless" + path = /obj/item/clothing/glasses/regular/rimless + +/datum/gear/eyes/glasses/thin + display_name = "Glasses, thin frame" + path = /obj/item/clothing/glasses/thin + +/datum/gear/eyes/glasses/prescriptionthin + display_name = "Glasses, prescription thin frame" + path = /obj/item/clothing/glasses/regular/thin diff --git a/code/modules/client/preference_setup/loadout/loadout_head.dm b/code/modules/client/preference_setup/loadout/loadout_head.dm index 4aa6480495..7c2a327b38 100644 --- a/code/modules/client/preference_setup/loadout/loadout_head.dm +++ b/code/modules/client/preference_setup/loadout/loadout_head.dm @@ -34,7 +34,7 @@ /datum/gear/head/beret/csec display_name = "beret, corporate (officer)" path = /obj/item/clothing/head/beret/sec/corporate/officer - allowed_roles = list("Security Officer","Head of Security","Warden","Blueshield Guard") + allowed_roles = list("Security Officer","Head of Security","Warden", "Detective","Blueshield Guard") /datum/gear/head/beret/csec_warden display_name = "beret, corporate (warden)" @@ -57,7 +57,7 @@ /datum/gear/head/beret/sec display_name = "beret, red (security)" path = /obj/item/clothing/head/beret/sec - allowed_roles = list("Security Officer","Head of Security","Warden","Blueshield Guard") + allowed_roles = list("Security Officer","Head of Security","Warden", "Detective","Blueshield Guard") /datum/gear/head/cap display_name = "cap, black" @@ -324,22 +324,18 @@ /datum/gear/head/welding/demon display_name = "welding, demon (engineering/robotics)" path = /obj/item/clothing/head/welding/demon - allowed_roles = list("Chief Engineer","Station Engineer","Atmospheric Technician","Research Director","Roboticist") /datum/gear/head/welding/knight display_name = "welding, knight (engineering/robotics)" path = /obj/item/clothing/head/welding/knight - allowed_roles = list("Chief Engineer","Station Engineer","Atmospheric Technician","Research Director","Roboticist") /datum/gear/head/welding/fancy display_name = "welding, fancy (engineering/robotics)" path = /obj/item/clothing/head/welding/fancy - allowed_roles = list("Chief Engineer","Station Engineer","Atmospheric Technician","Research Director","Roboticist") /datum/gear/head/welding/engie display_name = "welding, engie (engineering/robotics)" path = /obj/item/clothing/head/welding/engie - allowed_roles = list("Chief Engineer","Station Engineer","Atmospheric Technician","Research Director","Roboticist") /*/datum/gear/head/beret/sol display_name = "beret sol, selection" @@ -370,4 +366,12 @@ /datum/gear/head/circuitry display_name = "headwear, circuitry (empty)" - path = /obj/item/clothing/head/circuitry \ No newline at end of file + path = /obj/item/clothing/head/circuitry + +/datum/gear/head/maangtikka + display_name = "maang tikka" + path = /obj/item/clothing/head/maangtikka + +/datum/gear/head/jingasa + display_name = "jingasa" + path = /obj/item/clothing/head/jingasa \ No newline at end of file diff --git a/code/modules/client/preference_setup/loadout/loadout_shoes.dm b/code/modules/client/preference_setup/loadout/loadout_shoes.dm index d3b23c0e29..bb6f50e9f5 100644 --- a/code/modules/client/preference_setup/loadout/loadout_shoes.dm +++ b/code/modules/client/preference_setup/loadout/loadout_shoes.dm @@ -191,7 +191,6 @@ /datum/gear/shoes/boots/winter/science display_name = "science winter boots" path = /obj/item/clothing/shoes/boots/winter/science - allowed_roles = list("Research Director","Scientist", "Roboticist", "Xenobiologist") /datum/gear/shoes/boots/winter/command display_name = "colony director's winter boots" @@ -201,32 +200,26 @@ /datum/gear/shoes/boots/winter/engineering display_name = "engineering winter boots" path = /obj/item/clothing/shoes/boots/winter/engineering - allowed_roles = list("Chief Engineer","Atmospheric Technician", "Station Engineer") /datum/gear/shoes/boots/winter/atmos display_name = "atmospherics winter boots" path = /obj/item/clothing/shoes/boots/winter/atmos - allowed_roles = list("Chief Engineer", "Atmospheric Technician") /datum/gear/shoes/boots/winter/medical display_name = "medical winter boots" path = /obj/item/clothing/shoes/boots/winter/medical - allowed_roles = list("Medical Doctor","Chief Medical Officer","Chemist","Paramedic","Geneticist", "Psychiatrist") /datum/gear/shoes/boots/winter/mining display_name = "mining winter boots" path = /obj/item/clothing/shoes/boots/winter/mining - allowed_roles = list("Shaft Miner") /datum/gear/shoes/boots/winter/supply display_name = "supply winter boots" path = /obj/item/clothing/shoes/boots/winter/supply - allowed_roles = list("Quartermaster","Cargo Technician") /datum/gear/shoes/boots/winter/hydro display_name = "hydroponics winter boots" path = /obj/item/clothing/shoes/boots/winter/hydro - allowed_roles = list("Botanist", "Xenobiologist") /datum/gear/shoes/circuitry display_name = "boots, circuitry (empty)" diff --git a/code/modules/client/preference_setup/loadout/loadout_suit.dm b/code/modules/client/preference_setup/loadout/loadout_suit.dm index acb9c5ae64..dac3f2123c 100644 --- a/code/modules/client/preference_setup/loadout/loadout_suit.dm +++ b/code/modules/client/preference_setup/loadout/loadout_suit.dm @@ -244,12 +244,10 @@ datum/gear/suit/duster /datum/gear/suit/roles/poncho/cloak/cargo display_name = "cloak, cargo" path = /obj/item/clothing/accessory/poncho/roles/cloak/cargo - allowed_roles = list("Cargo Technician","Quartermaster") /datum/gear/suit/roles/poncho/cloak/mining display_name = "cloak, mining" path = /obj/item/clothing/accessory/poncho/roles/cloak/mining - allowed_roles = list("Quartermaster","Shaft Miner") /datum/gear/suit/roles/poncho/cloak/security display_name = "cloak, security" @@ -259,27 +257,22 @@ datum/gear/suit/duster /datum/gear/suit/roles/poncho/cloak/service display_name = "cloak, service" path = /obj/item/clothing/accessory/poncho/roles/cloak/service - allowed_roles = list("Head of Personnel","Bartender","Botanist","Janitor","Chef","Librarian") /datum/gear/suit/roles/poncho/cloak/engineer display_name = "cloak, engineer" path = /obj/item/clothing/accessory/poncho/roles/cloak/engineer - allowed_roles = list("Chief Engineer","Station Engineer") /datum/gear/suit/roles/poncho/cloak/atmos display_name = "cloak, atmos" path = /obj/item/clothing/accessory/poncho/roles/cloak/atmos - allowed_roles = list("Chief Engineer","Atmospheric Technician") /datum/gear/suit/roles/poncho/cloak/research display_name = "cloak, science" path = /obj/item/clothing/accessory/poncho/roles/cloak/research - allowed_roles = list("Research Director","Scientist", "Roboticist", "Xenobiologist") /datum/gear/suit/roles/poncho/cloak/medical display_name = "cloak, medical" path = /obj/item/clothing/accessory/poncho/roles/cloak/medical - allowed_roles = list("Medical Doctor","Chief Medical Officer","Chemist","Paramedic","Geneticist", "Psychiatrist") /datum/gear/suit/unathi_robe display_name = "roughspun robe" @@ -339,37 +332,30 @@ datum/gear/suit/duster /datum/gear/suit/wintercoat/medical display_name = "winter coat, medical" path = /obj/item/clothing/suit/storage/hooded/wintercoat/medical - allowed_roles = list("Medical Doctor","Chief Medical Officer","Chemist","Paramedic","Geneticist", "Psychiatrist") /datum/gear/suit/wintercoat/science display_name = "winter coat, science" path = /obj/item/clothing/suit/storage/hooded/wintercoat/science - allowed_roles = list("Research Director","Scientist", "Roboticist", "Xenobiologist") /datum/gear/suit/wintercoat/engineering display_name = "winter coat, engineering" path = /obj/item/clothing/suit/storage/hooded/wintercoat/engineering - allowed_roles = list("Chief Engineer","Atmospheric Technician", "Station Engineer") /datum/gear/suit/wintercoat/atmos display_name = "winter coat, atmospherics" path = /obj/item/clothing/suit/storage/hooded/wintercoat/engineering/atmos - allowed_roles = list("Chief Engineer", "Atmospheric Technician") /datum/gear/suit/wintercoat/hydro display_name = "winter coat, hydroponics" path = /obj/item/clothing/suit/storage/hooded/wintercoat/hydro - allowed_roles = list("Botanist", "Xenobiologist") /datum/gear/suit/wintercoat/cargo display_name = "winter coat, cargo" path = /obj/item/clothing/suit/storage/hooded/wintercoat/cargo - allowed_roles = list("Quartermaster","Cargo Technician") /datum/gear/suit/wintercoat/miner display_name = "winter coat, mining" path = /obj/item/clothing/suit/storage/hooded/wintercoat/miner - allowed_roles = list("Shaft Miner") /datum/gear/suit/varsity display_name = "varsity jacket selection" @@ -463,6 +449,10 @@ datum/gear/suit/duster ..() gear_tweaks = list(gear_tweak_free_color_choice) +/datum/gear/suit/miscellaneous/kamishimo + display_name = "kamishimo" + path = /obj/item/clothing/suit/kamishimo + /datum/gear/suit/snowsuit display_name = "snowsuit" path = /obj/item/clothing/suit/storage/snowsuit @@ -495,4 +485,4 @@ datum/gear/suit/duster /datum/gear/suit/snowsuit/cargo display_name = "snowsuit, supply" path = /obj/item/clothing/suit/storage/snowsuit/cargo - allowed_roles = list("Quartermaster","Shaft Miner","Cargo Technician","Head of Personnel") \ No newline at end of file + allowed_roles = list("Quartermaster","Shaft Miner","Cargo Technician","Head of Personnel") diff --git a/code/modules/client/preference_setup/loadout/loadout_uniform.dm b/code/modules/client/preference_setup/loadout/loadout_uniform.dm index dfc359b212..0c87a80a5b 100644 --- a/code/modules/client/preference_setup/loadout/loadout_uniform.dm +++ b/code/modules/client/preference_setup/loadout/loadout_uniform.dm @@ -163,6 +163,26 @@ path = /obj/item/clothing/under/rank/head_of_security/skirt allowed_roles = list("Head of Security") +/datum/gear/uniform/job_turtle/science + display_name = "turtleneck, science" + path = /obj/item/clothing/under/rank/scientist/turtleneck + allowed_roles = list("Research Director", "Scientist", "Roboticist", "Xenobiologist") + +/datum/gear/uniform/job_turtle/security + display_name = "turtleneck, security" + path = /obj/item/clothing/under/rank/security/turtleneck + allowed_roles = list("Head of Security", "Warden", "Detective", "Security Officer") + +/datum/gear/uniform/job_turtle/engineering + display_name = "turtleneck, engineering" + path = /obj/item/clothing/under/rank/engineer/turtleneck + allowed_roles = list("Chief Engineer", "Atmospheric Technician", "Station Engineer") + +/datum/gear/uniform/job_turtle/medical + display_name = "turtleneck, medical" + path = /obj/item/clothing/under/rank/medical/turtleneck + allowed_roles = list("Chief Medical Officer", "Paramedic", "Medical Doctor", "Psychologist", "Search and Rescue", "Chemist") + /datum/gear/uniform/jeans_qm display_name = "jeans, QM" path = /obj/item/clothing/under/rank/cargo/jeans @@ -402,14 +422,12 @@ path = /obj/item/clothing/under/focal /datum/gear/uniform/mbill - display_name = "outfit, major bill's (Cargo)" + display_name = "outfit, major bill's" path = /obj/item/clothing/under/mbill - allowed_roles = list("Quartermaster","Cargo Technician") /datum/gear/uniform/pcrc display_name = "uniform, PCRC (Security)" path = /obj/item/clothing/under/pcrc - cost = 2 allowed_roles = list("Security Officer","Head of Security","Warden","Blueshield Guard") /datum/gear/uniform/brandsuit/grayson @@ -462,4 +480,25 @@ /datum/gear/uniform/circuitry display_name = "jumpsuit, circuitry (empty)" - path = /obj/item/clothing/under/circuitry \ No newline at end of file + path = /obj/item/clothing/under/circuitry + +/datum/gear/uniform/sleekoverall + display_name = "sleek overalls" + path = /obj/item/clothing/under/overalls/sleek + +/datum/gear/uniform/sarired + display_name = "sari, red" + path = /obj/item/clothing/under/dress/sari + +/datum/gear/uniform/sarigreen + display_name = "sari, green" + path = /obj/item/clothing/under/dress/sari/green + +/datum/gear/uniform/wrappedcoat + display_name = "modern wrapped coat" + path = /obj/item/clothing/under/moderncoat + +/datum/gear/uniform/ascetic + display_name = "plain ascetic garb" + path = /obj/item/clothing/under/ascetic + diff --git a/code/modules/client/preference_setup/loadout/loadout_xeno.dm b/code/modules/client/preference_setup/loadout/loadout_xeno.dm index e053f3b8ef..87f39ed856 100644 --- a/code/modules/client/preference_setup/loadout/loadout_xeno.dm +++ b/code/modules/client/preference_setup/loadout/loadout_xeno.dm @@ -1,4 +1,5 @@ // Alien clothing. + /datum/gear/suit/zhan_furs display_name = "Zhan-Khazan furs (Tajaran)" path = /obj/item/clothing/suit/tajaran/furs @@ -165,198 +166,187 @@ /datum/gear/uniform/dept whitelisted = SPECIES_TESHARI sort_category = "Xenowear" - + /datum/gear/uniform/dept/undercoat/ce - display_name = "Teshari Chief Engineer Undercoat" + display_name = "chief engineer undercoat (Teshari)" path = /obj/item/clothing/under/seromi/undercoat/jobs/ce allowed_roles = list("Chief Engineer") /datum/gear/uniform/dept/undercoat/ce_w - display_name = "Teshari Chief Engineer Undercoat (White)" + display_name = "chief engineer undercoat - white (Teshari)" path = /obj/item/clothing/under/seromi/undercoat/jobs/ce_w allowed_roles = list("Chief Engineer") -/* -/datum/gear/uniform/undercoat/rd - display_name = "cloak, research director" - path = /obj/item/clothing/accessory/poncho/roles/cloak/rd - allowed_roles = list("Research Director") -*/ + /datum/gear/uniform/dept/undercoat/qm - display_name = "Teshari Quarter Master Undercoat" + display_name = "quartermaster undercoat (Teshari)" path = /obj/item/clothing/under/seromi/undercoat/jobs/qm allowed_roles = list("Quartermaster") /datum/gear/uniform/dept/undercoat/command - display_name = "Teshari Command Undercoat" + display_name = "command undercoat (Teshari)" path = /obj/item/clothing/under/seromi/undercoat/jobs/command - allowed_roles = list("Colony Director","Head of Personnel","Head of Security","Chief Engineer","Chief Medical Officer") + allowed_roles = list("Colony Director","Head of Personnel","Head of Security","Chief Engineer","Chief Medical Officer","Research Director") /datum/gear/uniform/dept/undercoat/command_g - display_name = "Teshari Command Undercoat (gold buttons)" + display_name = "command undercoat - gold buttons (Teshari)" path = /obj/item/clothing/under/seromi/undercoat/jobs/command_g - allowed_roles = list("Colony Director","Head of Personnel","Head of Security","Chief Engineer","Chief Medical Officer") + allowed_roles = list("Colony Director","Head of Personnel","Head of Security","Chief Engineer","Chief Medical Officer","Research Director") /datum/gear/uniform/dept/undercoat/cmo - display_name = "Teshari Chief Medical Officer Undercoat" + display_name = "chief medical officer undercoat (Teshari)" path = /obj/item/clothing/under/seromi/undercoat/jobs/cmo allowed_roles = list("Chief Medical Officer") /datum/gear/uniform/dept/undercoat/cargo - display_name = "Teshari Cargo Undercoat" + display_name = "cargo undercoat (Teshari)" path = /obj/item/clothing/under/seromi/undercoat/jobs/cargo allowed_roles = list("Cargo Technician","Quartermaster","Shaft Miner") /datum/gear/uniform/dept/undercoat/mining - display_name = "Teshari Mining Undercoat" + display_name = "mining undercoat (Teshari)" path = /obj/item/clothing/accessory/poncho/roles/cloak/mining allowed_roles = list("Quartermaster","Shaft Miner") /datum/gear/uniform/dept/undercoat/security - display_name = "Teshari Security Undercoat" + display_name = "security undercoat (Teshari)" path = /obj/item/clothing/under/seromi/undercoat/jobs/sec allowed_roles = list("Head of Security","Detective","Warden","Security Officer",) /datum/gear/uniform/dept/undercoat/service - display_name = "Teshari Service Undercoat" + display_name = "service undercoat (Teshari)" path = /obj/item/clothing/under/seromi/undercoat/jobs/service allowed_roles = list("Head of Personnel","Bartender","Botanist","Janitor","Chef","Librarian") /datum/gear/uniform/dept/undercoat/engineer - display_name = "Teshari Engineer Undercoat" + display_name = "engineering undercoat (Teshari)" path = /obj/item/clothing/under/seromi/undercoat/jobs/engineer allowed_roles = list("Chief Engineer","Station Engineer") /datum/gear/uniform/dept/undercoat/atmos - display_name = "Teshari Atmos Tech Undercoat" + display_name = "atmospherics undercoat (Teshari)" path = /obj/item/clothing/under/seromi/undercoat/jobs/atmos allowed_roles = list("Chief Engineer","Atmospheric Technician") /datum/gear/uniform/dept/undercoat/research - display_name = "Teshari Science Undercoat" + display_name = "scientist undercoat (Teshari)" path = /obj/item/clothing/under/seromi/undercoat/jobs/sci allowed_roles = list("Research Director","Scientist", "Roboticist", "Xenobiologist") /datum/gear/uniform/dept/undercoat/robo - display_name = "Teshari Roboticist Undercoat" + display_name = "roboticist undercoat (Teshari)" path = /obj/item/clothing/under/seromi/undercoat/jobs/robo allowed_roles = list("Roboticist") /datum/gear/uniform/dept/undercoat/medical - display_name = "Teshari Medical Undercoat" + display_name = "medical undercoat (Teshari)" path = /obj/item/clothing/under/seromi/undercoat/jobs/medical allowed_roles = list("Medical Doctor","Chief Medical Officer","Chemist","Paramedic","Geneticist", "Psychiatrist") /datum/gear/uniform/dept/undercoat/chemistry - display_name = "Teshari Chemistry Undercoat" + display_name = "chemist undercoat (Teshari)" path = /obj/item/clothing/under/seromi/undercoat/jobs/chemistry allowed_roles = list("Chemist") /datum/gear/uniform/dept/undercoat/virology - display_name = "Teshari Medical Undercoat" + display_name = "virologist undercoat (Teshari)" path = /obj/item/clothing/under/seromi/undercoat/jobs/viro allowed_roles = list("Medical Doctor") /datum/gear/uniform/dept/undercoat/paramedic - display_name = "Teshari Paramedic Undercoat" + display_name = "paramedic undercoat (Teshari)" path = /obj/item/clothing/under/seromi/undercoat/jobs/para allowed_roles = list("Paramedic") /datum/gear/uniform/dept/undercoat/iaa - display_name = "Teshari IAA Undercoat" + display_name = "internal affairs undercoat (Teshari)" path = /obj/item/clothing/under/seromi/undercoat/jobs/iaa allowed_roles = list("Internal Affairs Agent") /datum/gear/suit/dept/cloak/ whitelisted = SPECIES_TESHARI sort_category = "Xenowear" - + /datum/gear/suit/cloak/dept/ce - display_name = "Teshari Chief Engineer Cloak" + display_name = "chief engineer cloak (Teshari)" path = /obj/item/clothing/suit/storage/seromi/cloak/jobs/ce allowed_roles = list("Chief Engineer") -/* -/datum/gear/suit/cloak/rd - display_name = "cloak, research director" - path = /obj/item/clothing/accessory/poncho/roles/cloak/rd - allowed_roles = list("Research Director") -*/ /datum/gear/suit/dept/cloak/qm - display_name = "Teshari Quarter Master Cloak" + display_name = "quartermaster cloak (Teshari)" path = /obj/item/clothing/suit/storage/seromi/cloak/jobs/qm allowed_roles = list("Quartermaster") /datum/gear/suit/dept/cloak/command - display_name = "Teshari Command Cloak" + display_name = "command cloak (Teshari)" path = /obj/item/clothing/suit/storage/seromi/cloak/jobs/command - allowed_roles = list("Colony Director","Head of Personnel","Head of Security","Chief Engineer","Chief Medical Officer") + allowed_roles = list("Colony Director","Head of Personnel","Head of Security","Chief Engineer","Chief Medical Officer","Research Director") /datum/gear/suit/dept/cloak/cmo - display_name = "Teshari Chief Medical Officer Cloak" + display_name = "chief medical officer cloak (Teshari)" path = /obj/item/clothing/suit/storage/seromi/cloak/jobs/cmo allowed_roles = list("Chief Medical Officer") /datum/gear/suit/dept/cloak/cargo - display_name = "Teshari Cargo Cloak" + display_name = "cargo cloak (Teshari)" path = /obj/item/clothing/suit/storage/seromi/cloak/jobs/cargo allowed_roles = list("Cargo Technician","Quartermaster","Shaft Miner") /datum/gear/suit/dept/cloak/mining - display_name = "Teshari Mining Cloak" + display_name = "mining cloak (Teshari)" path = /obj/item/clothing/suit/storage/seromi/cloak/jobs/mining allowed_roles = list("Quartermaster","Shaft Miner") /datum/gear/suit/dept/cloak/security - display_name = "Teshari Security Cloak" + display_name = "security cloak (Teshari)" path = /obj/item/clothing/suit/storage/seromi/cloak/jobs/sec allowed_roles = list("Head of Security","Detective","Warden","Security Officer",) /datum/gear/suit/dept/cloak/service - display_name = "Teshari Service Cloak" + display_name = "service cloak (Teshari)" path = /obj/item/clothing/suit/storage/seromi/cloak/jobs/service allowed_roles = list("Head of Personnel","Bartender","Botanist","Janitor","Chef","Librarian") /datum/gear/suit/dept/cloak/engineer - display_name = "Teshari Engineer Cloak" + display_name = "engineering cloak (Teshari)" path = /obj/item/clothing/suit/storage/seromi/cloak/jobs/eningeer allowed_roles = list("Chief Engineer","Station Engineer") /datum/gear/suit/dept/cloak/atmos - display_name = "Teshari Atmos Tech Cloak" + display_name = "atmospherics cloak (Teshari)" path = /obj/item/clothing/suit/storage/seromi/cloak/jobs/atmos allowed_roles = list("Chief Engineer","Atmospheric Technician") /datum/gear/suit/dept/cloak/research - display_name = "Teshari Science Cloak" + display_name = "scientist cloak (Teshari)" path = /obj/item/clothing/suit/storage/seromi/cloak/jobs/sci allowed_roles = list("Research Director","Scientist", "Roboticist", "Xenobiologist") /datum/gear/suit/dept/cloak/robo - display_name = "Teshari Roboticist Cloak" + display_name = "roboticist cloak (Teshari)" path = /obj/item/clothing/suit/storage/seromi/cloak/jobs/robo allowed_roles = list("Roboticist") /datum/gear/suit/dept/cloak/medical - display_name = "Teshari Medical Cloak" + display_name = "medical cloak (Teshari)" path = /obj/item/clothing/suit/storage/seromi/cloak/jobs/medical allowed_roles = list("Medical Doctor","Chief Medical Officer","Chemist","Paramedic","Geneticist", "Psychiatrist") /datum/gear/suit/dept/cloak/chemistry - display_name = "Teshari Chemistry Cloak" + display_name = "chemist cloak (Teshari)" path = /obj/item/clothing/suit/storage/seromi/cloak/jobs/chemistry allowed_roles = list("Chemist") /datum/gear/suit/dept/cloak/virology - display_name = "Teshari Medical Cloak" + display_name = "virologist cloak (Teshari)" path = /obj/item/clothing/suit/storage/seromi/cloak/jobs/viro allowed_roles = list("Medical Doctor") /datum/gear/suit/dept/cloak/paramedic - display_name = "Teshari Paramedic Cloak" + display_name = "paramedic cloak (Teshari)" path = /obj/item/clothing/suit/storage/seromi/cloak/jobs/para allowed_roles = list("Paramedic") /datum/gear/suit/dept/cloak/iaa - display_name = "Teshari IAA Cloak" + display_name = "internal affairs cloak (Teshari)" path = /obj/item/clothing/suit/storage/seromi/cloak/jobs/iaa allowed_roles = list("Internal Affairs Agent") diff --git a/code/modules/client/preference_setup/loadout/loadout_xeno_vr.dm b/code/modules/client/preference_setup/loadout/loadout_xeno_vr.dm index a38b489827..8733c16023 100644 --- a/code/modules/client/preference_setup/loadout/loadout_xeno_vr.dm +++ b/code/modules/client/preference_setup/loadout/loadout_xeno_vr.dm @@ -37,4 +37,35 @@ /datum/gear/uniform/loincloth display_name = "loincloth" path = /obj/item/clothing/suit/storage/fluff/loincloth - sort_category = "Xenowear" \ No newline at end of file + sort_category = "Xenowear" + +// Taj clothing +/datum/gear/eyes/tajblind + display_name = "embroidered veil" + path = /obj/item/clothing/glasses/tajblind + //whitelisted = SPECIES_TAJ + sort_category = "Xenowear" + +/datum/gear/eyes/medical/tajblind + display_name = "medical veil (Tajara) (Medical)" + path = /obj/item/clothing/glasses/hud/health/tajblind + //whitelisted = SPECIES_TAJ + sort_category = "Xenowear" + +/datum/gear/eyes/meson/tajblind + display_name = "industrial veil (Tajara) (Engineering, Science)" + path = /obj/item/clothing/glasses/meson/prescription/tajblind + //whitelisted = SPECIES_TAJ + sort_category = "Xenowear" + +/datum/gear/eyes/material/tajblind + display_name = "mining veil (Tajara) (Mining)" + path = /obj/item/clothing/glasses/material/prescription/tajblind + //whitelisted = SPECIES_TAJ + sort_category = "Xenowear" + +/datum/gear/eyes/security/tajblind + display_name = "sleek veil (Tajara) (Security)" + path = /obj/item/clothing/glasses/sunglasses/sechud/tajblind + //whitelisted = SPECIES_TAJ + sort_category = "Xenowear" diff --git a/code/modules/client/preference_setup/vore/02_size.dm b/code/modules/client/preference_setup/vore/02_size.dm index 9cacd334e1..2fe8b54e98 100644 --- a/code/modules/client/preference_setup/vore/02_size.dm +++ b/code/modules/client/preference_setup/vore/02_size.dm @@ -60,7 +60,7 @@ /datum/category_item/player_setup_item/vore/size/OnTopic(var/href, var/list/href_list, var/mob/user) if(href_list["size_multiplier"]) var/new_size = input(user, "Choose your character's size, ranging from 25% to 200%", "Set Size") as num|null - if (!IsInRange(new_size,25,200)) + if (!ISINRANGE(new_size,25,200)) pref.size_multiplier = 1 user << "Invalid size." return TOPIC_REFRESH_UPDATE_PREVIEW diff --git a/code/modules/client/preference_setup/vore/03_egg.dm b/code/modules/client/preference_setup/vore/03_egg.dm index 2567ca5021..648b31b399 100644 --- a/code/modules/client/preference_setup/vore/03_egg.dm +++ b/code/modules/client/preference_setup/vore/03_egg.dm @@ -12,7 +12,7 @@ var/XENOMORPH_EGG = "Xenomorph" // Define a place to save appearance in character setup /datum/preferences - var/egg_type = "Egg" //The egg type they have. + var/vore_egg_type = "Egg" //The egg type they have. // Definition of the stuff for the egg type. /datum/category_item/player_setup_item/vore/egg @@ -20,31 +20,31 @@ var/XENOMORPH_EGG = "Xenomorph" sort_order = 3 /datum/category_item/player_setup_item/vore/egg/load_character(var/savefile/S) - S["egg_type"] >> pref.egg_type + S["vore_egg_type"] >> pref.vore_egg_type /datum/category_item/player_setup_item/vore/egg/save_character(var/savefile/S) - S["egg_type"] << pref.egg_type + S["vore_egg_type"] << pref.vore_egg_type /datum/category_item/player_setup_item/vore/egg/sanitize_character() - var/valid_egg_types = global_egg_types - pref.egg_type = sanitize_inlist(pref.egg_type, valid_egg_types, initial(pref.egg_type)) + var/valid_vore_egg_types = global_vore_egg_types + pref.vore_egg_type = sanitize_inlist(pref.vore_egg_type, valid_vore_egg_types, initial(pref.vore_egg_type)) /datum/category_item/player_setup_item/vore/egg/copy_to_mob(var/mob/living/carbon/human/character) - character.egg_type = pref.egg_type + character.vore_egg_type = pref.vore_egg_type /datum/category_item/player_setup_item/vore/egg/content(var/mob/user) . += "
    " - . += " Egg Type: [pref.egg_type]
    " + . += " Egg Type: [pref.vore_egg_type]
    " /datum/category_item/player_setup_item/vore/egg/OnTopic(var/href, var/list/href_list, var/mob/user) if(!CanUseTopic(user)) return TOPIC_NOACTION - else if(href_list["egg_type"]) - var/list/egg_types = global_egg_types - var/selection = input(user, "Choose your character's egg type:", "Character Preference", pref.egg_type) as null|anything in egg_types + else if(href_list["vore_egg_type"]) + var/list/vore_egg_types = global_vore_egg_types + var/selection = input(user, "Choose your character's egg type:", "Character Preference", pref.vore_egg_type) as null|anything in vore_egg_types if(selection) - pref.egg_type = egg_types[selection] + pref.vore_egg_type = vore_egg_types[selection] return TOPIC_REFRESH else - return \ No newline at end of file + return diff --git a/code/modules/client/preference_setup/vore/07_traits.dm b/code/modules/client/preference_setup/vore/07_traits.dm index 4276a41163..fe87d35fbe 100644 --- a/code/modules/client/preference_setup/vore/07_traits.dm +++ b/code/modules/client/preference_setup/vore/07_traits.dm @@ -87,13 +87,14 @@ var/S = pref.custom_base ? pref.custom_base : "Human" var/datum/species/custom/new_CS = CS.produceCopy(S, pref.pos_traits + pref.neu_traits + pref.neg_traits, character) - //Statistics for this would be nice - var/english_traits = english_list(new_CS.traits, and_text = ";", comma_text = ";") - log_game("TRAITS [pref.client_ckey]/([character]) with: [english_traits]") //Terrible 'fake' key_name()... but they aren't in the same entity yet - //Any additional non-trait settings can be applied here new_CS.blood_color = pref.blood_color + if(pref.species == SPECIES_CUSTOM) + //Statistics for this would be nice + var/english_traits = english_list(new_CS.traits, and_text = ";", comma_text = ";") + log_game("TRAITS [pref.client_ckey]/([character]) with: [english_traits]") //Terrible 'fake' key_name()... but they aren't in the same entity yet + /datum/category_item/player_setup_item/vore/traits/content(var/mob/user) . += "Custom Species " . += "[pref.custom_species ? pref.custom_species : "-Input Name-"]
    " diff --git a/code/modules/client/preferences.dm b/code/modules/client/preferences.dm index 3e42d8c6de..c768d292c7 100644 --- a/code/modules/client/preferences.dm +++ b/code/modules/client/preferences.dm @@ -217,7 +217,8 @@ datum/preferences dat += "Load slot - " dat += "Save slot - " dat += "Reload slot - " - dat += "Reset slot" + dat += "Reset slot - " + dat += "Copy slot" else dat += "Please create an account to save your preferences." @@ -273,6 +274,14 @@ datum/preferences return 0 load_character(SAVE_RESET) sanitize_preferences() + else if(href_list["copy"]) + if(!IsGuestKey(usr.key)) + open_copy_dialog(usr) + return 1 + else if(href_list["overwrite"]) + overwrite_character(text2num(href_list["overwrite"])) + sanitize_preferences() + close_load_dialog(usr) else return 0 @@ -332,3 +341,26 @@ datum/preferences /datum/preferences/proc/close_load_dialog(mob/user) //user << browse(null, "window=saves") panel.close() + +/datum/preferences/proc/open_copy_dialog(mob/user) + var/dat = "" + dat += "
    " + + var/savefile/S = new /savefile(path) + if(S) + dat += "Select a character slot to overwrite
    " + dat += "You will then need to save to confirm
    " + var/name + for(var/i=1, i<= config.character_slots, i++) + S.cd = "/character[i]" + S["real_name"] >> name + if(!name) name = "Character[i]" + if(i==default_slot) + name = "[name]" + dat += "[name]
    " + + dat += "
    " + dat += "
    " + panel = new(user, "Character Slots", "Character Slots", 300, 390, src) + panel.set_content(dat) + panel.open() diff --git a/code/modules/client/preferences_factions.dm b/code/modules/client/preferences_factions.dm index 98ba4584d0..4371cdf860 100644 --- a/code/modules/client/preferences_factions.dm +++ b/code/modules/client/preferences_factions.dm @@ -59,10 +59,21 @@ var/global/list/antag_visiblity_choices = list( var/global/list/religion_choices = list( "Unitarianism", - "Hinduism", - "Buddhist", + "Neopaganism", "Islam", "Christianity", + "Judaism", + "Hinduism", + "Buddhism", + "Pleromanism", + "Spectralism", + "Phact Shintoism", + "Kishari Faith", + "Hauler Faith", + "Nock", + "Singulitarian Worship", + "Xilar Qall", + "Tajr-kii Rarkajar", "Agnosticism", "Deism" ) \ No newline at end of file diff --git a/code/modules/client/preferences_savefile.dm b/code/modules/client/preferences_savefile.dm index 22eab43de5..652f2ac082 100644 --- a/code/modules/client/preferences_savefile.dm +++ b/code/modules/client/preferences_savefile.dm @@ -94,6 +94,22 @@ player_setup.save_character(S) return 1 +/datum/preferences/proc/overwrite_character(slot) + if(!path) return 0 + if(!fexists(path)) return 0 + var/savefile/S = new /savefile(path) + if(!S) return 0 + if(!slot) slot = default_slot + if(slot != SAVE_RESET) + slot = sanitize_integer(slot, 1, config.character_slots, initial(default_slot)) + if(slot != default_slot) + default_slot = slot + S["default_slot"] << slot + else + S["default_slot"] << default_slot + + return 1 + /datum/preferences/proc/sanitize_preferences() player_setup.sanitize_setup() return 1 diff --git a/code/modules/client/preferences_toggle_procs.dm b/code/modules/client/preferences_toggle_procs.dm index 4e5e5fb51e..51412906d7 100644 --- a/code/modules/client/preferences_toggle_procs.dm +++ b/code/modules/client/preferences_toggle_procs.dm @@ -143,7 +143,7 @@ toggle_preference(pref_path) - to_chat(src,"You will [ (is_preference_enabled(pref_path)) ? "now" : " no longer"] hear MIDIs from admins.") + to_chat(src,"You will [ (is_preference_enabled(pref_path)) ? "now" : "no longer"] hear MIDIs from admins.") prefs.save_preferences() @@ -158,11 +158,41 @@ toggle_preference(pref_path) - to_chat(src,"You will [ (is_preference_enabled(pref_path)) ? "now" : " no longer"] hear ambient noise.") + to_chat(src,"You will [ (is_preference_enabled(pref_path)) ? "now" : "no longer"] hear ambient noise.") prefs.save_preferences() - feedback_add_details("admin_verb","TBeSpecial") //If you are copy-pasting this, ensure the 2nd parameter is unique to the new proc! + feedback_add_details("admin_verb","TAmbience") //If you are copy-pasting this, ensure the 2nd parameter is unique to the new proc! + +/client/verb/toggle_weather_sounds() + set name = "Toggle Weather Sounds" + set category = "Preferences" + set desc = "Toggles the ability to hear weather sounds while on a planet." + + var/pref_path = /datum/client_preference/weather_sounds + + toggle_preference(pref_path) + + to_chat(src,"You will [ (is_preference_enabled(pref_path)) ? "now" : "no longer"] hear weather sounds.") + + prefs.save_preferences() + + feedback_add_details("admin_verb","TWeatherSounds") //If you are copy-pasting this, ensure the 2nd parameter is unique to the new proc! + +/client/verb/toggle_supermatter_hum() + set name = "Toggle SM Hum" // Avoiding using the full 'Supermatter' name to not conflict with the Setup-Supermatter adminverb. + set category = "Preferences" + set desc = "Toggles the ability to hear supermatter hums." + + var/pref_path = /datum/client_preference/supermatter_hum + + toggle_preference(pref_path) + + to_chat(src,"You will [ (is_preference_enabled(pref_path)) ? "now" : "no longer"] hear a hum from the supermatter.") + + prefs.save_preferences() + + feedback_add_details("admin_verb","TSupermatterHum") //If you are copy-pasting this, ensure the 2nd parameter is unique to the new proc! /client/verb/toggle_jukebox() set name = "Toggle Jukebox" diff --git a/code/modules/clothing/chameleon.dm b/code/modules/clothing/chameleon.dm index b0fe0ae096..5d5296db77 100644 --- a/code/modules/clothing/chameleon.dm +++ b/code/modules/clothing/chameleon.dm @@ -404,7 +404,7 @@ origin_tech = list(TECH_COMBAT = 5, TECH_MATERIAL = 2, TECH_ILLEGAL = 4) matter = list() - fire_sound = 'sound/weapons/Gunshot.ogg' + fire_sound = 'sound/weapons/Gunshot1.ogg' projectile_type = /obj/item/projectile/chameleon charge_meter = 0 charge_cost = 48 //uses next to no power, since it's just holograms @@ -432,7 +432,7 @@ P.pass_flags = initial(copy_projectile.pass_flags) P.fire_sound = initial(copy_projectile.fire_sound) P.hitscan = initial(copy_projectile.hitscan) - P.step_delay = initial(copy_projectile.step_delay) + P.speed = initial(copy_projectile.speed) P.muzzle_type = initial(copy_projectile.muzzle_type) P.tracer_type = initial(copy_projectile.tracer_type) P.impact_type = initial(copy_projectile.impact_type) diff --git a/code/modules/clothing/clothing.dm b/code/modules/clothing/clothing.dm index 599ae510a8..2b2406721f 100644 --- a/code/modules/clothing/clothing.dm +++ b/code/modules/clothing/clothing.dm @@ -306,6 +306,7 @@ glove_level = 1 fingerprint_chance = 100 punch_force = 2 + body_parts_covered = 0 /////////////////////////////////////////////////////////////////////// //Head @@ -473,6 +474,7 @@ var/water_speed = 0 //Speed boost/decrease in water, lower/negative values mean more speed var/snow_speed = 0 //Speed boost/decrease on snow, lower/negative values mean more speed + var/rock_climbing = FALSE // If true, allows climbing cliffs with clickdrag. var/step_volume_mod = 1 //How quiet or loud footsteps in this shoe are diff --git a/code/modules/clothing/glasses/glasses.dm b/code/modules/clothing/glasses/glasses.dm index 83366edccf..b757a37471 100644 --- a/code/modules/clothing/glasses/glasses.dm +++ b/code/modules/clothing/glasses/glasses.dm @@ -233,6 +233,31 @@ BLIND // can't see anything item_state_slots = list(slot_r_hand_str = "glasses", slot_l_hand_str = "glasses") body_parts_covered = 0 +/obj/item/clothing/glasses/regular/rimless + name = "prescription rimless glasses" + desc = "Sleek modern glasses with a single sculpted lens." + icon_state = "glasses_rimless" + prescription = 1 + +/obj/item/clothing/glasses/rimless + name = "rimless glasses" + desc = "Sleek modern glasses with a single sculpted lens." + icon_state = "glasses_rimless" + prescription = 0 + +/obj/item/clothing/glasses/regular/thin + name = "prescription thin-rimmed glasses" + desc = "Glasses with frames are so last century." + icon_state = "glasses_thin" + prescription = 1 + +/obj/item/clothing/glasses/thin + name = "thin-rimmed glasses" + desc = "Glasses with frames are so last century." + icon_state = "glasses_thin" + prescription = 0 + + /obj/item/clothing/glasses/sunglasses name = "sunglasses" desc = "Strangely ancient technology used to help provide rudimentary eye cover. Enhanced shielding blocks many flashes." diff --git a/code/modules/clothing/glasses/glasses_vr.dm b/code/modules/clothing/glasses/glasses_vr.dm index e85b40633a..1d7cb0087f 100644 --- a/code/modules/clothing/glasses/glasses_vr.dm +++ b/code/modules/clothing/glasses/glasses_vr.dm @@ -60,3 +60,54 @@ /obj/item/clothing/glasses/sunglasses/sechud/tactical item_flags = AIRTIGHT body_parts_covered = EYES + +/*---Tajaran-specific Eyewear---*/ + +/obj/item/clothing/glasses/tajblind + name = "embroidered veil" + desc = "An Tajaran made veil that allows the user to see while obscuring their eyes." + icon = 'icons/obj/clothing/glasses_vr.dmi' + icon_override = 'icons/mob/eyes_vr.dmi' + icon_state = "tajblind" + item_state = "tajblind" + prescription = 1 + body_parts_covered = EYES + +/obj/item/clothing/glasses/hud/health/tajblind + name = "lightweight veil" + desc = "An Tajaran made veil that allows the user to see while obscuring their eyes. This one has an installed medical HUD." + icon = 'icons/obj/clothing/glasses_vr.dmi' + icon_override = 'icons/mob/eyes_vr.dmi' + icon_state = "tajblind_med" + item_state = "tajblind_med" + body_parts_covered = EYES + +/obj/item/clothing/glasses/sunglasses/sechud/tajblind + name = "sleek veil" + desc = "An Tajaran made veil that allows the user to see while obscuring their eyes. This one has an in-built security HUD." + icon = 'icons/obj/clothing/glasses_vr.dmi' + icon_override = 'icons/mob/eyes_vr.dmi' + icon_state = "tajblind_sec" + item_state = "tajblind_sec" + prescription = 1 + body_parts_covered = EYES + +/obj/item/clothing/glasses/meson/prescription/tajblind + name = "industrial veil" + desc = "An Tajaran made veil that allows the user to see while obscuring their eyes. This one has installed mesons." + icon = 'icons/obj/clothing/glasses_vr.dmi' + icon_override = 'icons/mob/eyes_vr.dmi' + icon_state = "tajblind_meson" + item_state = "tajblind_meson" + off_state = "tajblind" + body_parts_covered = EYES + +/obj/item/clothing/glasses/material/prescription/tajblind + name = "mining veil" + desc = "An Tajaran made veil that allows the user to see while obscuring their eyes. This one has an installed material scanner." + icon = 'icons/obj/clothing/glasses_vr.dmi' + icon_override = 'icons/mob/eyes_vr.dmi' + icon_state = "tajblind_meson" + item_state = "tajblind_meson" + off_state = "tajblind" + body_parts_covered = EYES diff --git a/code/modules/clothing/gloves/color.dm b/code/modules/clothing/gloves/color.dm index 1c643f7995..a456e85939 100644 --- a/code/modules/clothing/gloves/color.dm +++ b/code/modules/clothing/gloves/color.dm @@ -12,7 +12,7 @@ siemens_coefficient = 1 //Set to a default of 1, gets overridden in initialize() permeability_coefficient = 0.05 -/obj/item/clothing/gloves/fyellow/initialize() +/obj/item/clothing/gloves/fyellow/Initialize() . = ..() //Picks a value between 0 and 1.25, in 5% increments // VOREStation edit var/shock_pick = rand(0,25) // VOREStation Edit diff --git a/code/modules/clothing/head/hardhat.dm b/code/modules/clothing/head/hardhat.dm index 287f83e4c4..558f30fbd9 100644 --- a/code/modules/clothing/head/hardhat.dm +++ b/code/modules/clothing/head/hardhat.dm @@ -18,16 +18,19 @@ /obj/item/clothing/head/hardhat/red icon_state = "hardhat0_red" name = "firefighter helmet" - item_flags = STOPPRESSUREDAMAGE heat_protection = HEAD max_heat_protection_temperature = FIRE_HELMET_MAX_HEAT_PROTECTION_TEMPERATURE + min_pressure_protection = 0.2* ONE_ATMOSPHERE + max_pressure_protection = 20 * ONE_ATMOSPHERE + /obj/item/clothing/head/hardhat/white icon_state = "hardhat0_white" name = "sleek hard hat" - item_flags = STOPPRESSUREDAMAGE heat_protection = HEAD max_heat_protection_temperature = FIRE_HELMET_MAX_HEAT_PROTECTION_TEMPERATURE + min_pressure_protection = 0.2* ONE_ATMOSPHERE + max_pressure_protection = 20 * ONE_ATMOSPHERE /obj/item/clothing/head/hardhat/dblue name = "blue hard hat" diff --git a/code/modules/clothing/head/misc.dm b/code/modules/clothing/head/misc.dm index a6d1e9e48a..368367c424 100644 --- a/code/modules/clothing/head/misc.dm +++ b/code/modules/clothing/head/misc.dm @@ -413,4 +413,29 @@ name = "maid headband" desc = "Keeps hair out of the way for important... jobs." icon_state = "maid" - body_parts_covered = 0 \ No newline at end of file + body_parts_covered = 0 + +/obj/item/clothing/head/maangtikka + name = "maang tikka" + desc = "A jeweled headpiece originating in India." + icon_state = "maangtikka" + body_parts_covered = 0 + +/obj/item/clothing/head/jingasa + name = "jingasa" + desc = "A wide, flat rain hat originally from Japan." + icon_state = "jingasa" + body_parts_covered = 0 + item_state_slots = list(slot_r_hand_str = "taq", slot_l_hand_str = "taq") + +/obj/item/clothing/head/cowl + name = "black cowl" + desc = "A gold-lined black cowl. It gives off uncomfortable cult vibes, but fancy." + icon_state = "cowl" + body_parts_covered = 0 + +/obj/item/clothing/head/cowl + name = "white cowl" + desc = "A gold-lined white cowl. It gives off uncomfortable cult vibes, but fancy." + icon_state = "whitecowl" + body_parts_covered = 0 diff --git a/code/modules/clothing/head/misc_special.dm b/code/modules/clothing/head/misc_special.dm index 9a2d3868dd..b706e71e9d 100644 --- a/code/modules/clothing/head/misc_special.dm +++ b/code/modules/clothing/head/misc_special.dm @@ -113,7 +113,7 @@ /obj/item/clothing/head/cakehat/process() if(!onfire) - processing_objects.Remove(src) + STOP_PROCESSING(SSobj, src) return var/turf/location = src.loc @@ -131,7 +131,7 @@ force = 3 damtype = "fire" icon_state = "cake1" - processing_objects.Add(src) + START_PROCESSING(SSobj, src) else force = null damtype = "brute" @@ -237,12 +237,12 @@ /obj/item/clothing/head/psy_crown/equipped(var/mob/living/carbon/human/H) ..() if(istype(H) && H.head == src && H.is_sentient()) - processing_objects += src + START_PROCESSING(SSobj, src) to_chat(H, flavor_equip) /obj/item/clothing/head/psy_crown/dropped(var/mob/living/carbon/human/H) ..() - processing_objects -= src + STOP_PROCESSING(SSobj, src) if(H.is_sentient()) if(loc == H) // Still inhand. to_chat(H, flavor_unequip) @@ -250,7 +250,7 @@ to_chat(H, flavor_drop) /obj/item/clothing/head/psy_crown/Destroy() - processing_objects -= src + STOP_PROCESSING(SSobj, src) return ..() /obj/item/clothing/head/psy_crown/process() diff --git a/code/modules/clothing/head/pilot_helmet.dm b/code/modules/clothing/head/pilot_helmet.dm index feb60ae3a3..ee95c7c937 100644 --- a/code/modules/clothing/head/pilot_helmet.dm +++ b/code/modules/clothing/head/pilot_helmet.dm @@ -23,7 +23,7 @@ var/list/raw_images var/last_status -/obj/item/clothing/head/pilot/initialize() +/obj/item/clothing/head/pilot/Initialize() . = ..() images = list() diff --git a/code/modules/clothing/head/soft_caps.dm b/code/modules/clothing/head/soft_caps.dm index 17b5722273..27b8460fb6 100644 --- a/code/modules/clothing/head/soft_caps.dm +++ b/code/modules/clothing/head/soft_caps.dm @@ -95,6 +95,7 @@ item_state_slots = list(slot_r_hand_str = "blacksoft", slot_l_hand_str = "blacksoft") /obj/item/clothing/head/soft/mbill - name = "shipping cap" - desc = "It's a ballcap bearing the colors of Major Bill's Shipping." - icon_state = "mbillsoft" + name = "shipping cap" + desc = "It's a ballcap bearing the colors of Major Bill's Shipping." + icon_state = "mbillsoft" + catalogue_data = list(/datum/category_item/catalogue/information/organization/major_bills) diff --git a/code/modules/clothing/masks/gasmask.dm b/code/modules/clothing/masks/gasmask.dm index f3dd101058..9319b1daa5 100644 --- a/code/modules/clothing/masks/gasmask.dm +++ b/code/modules/clothing/masks/gasmask.dm @@ -1,154 +1,164 @@ -/obj/item/clothing/mask/gas - name = "gas mask" - desc = "A face-covering mask that can be connected to an air supply. Filters harmful gases from the air." - //icon = 'icons/obj/clothing/masks_vr.dmi' // Vorestation Edit? - icon_state = "gas_alt" - item_flags = BLOCK_GAS_SMOKE_EFFECT | AIRTIGHT - flags_inv = HIDEEARS|HIDEEYES|HIDEFACE - body_parts_covered = FACE|EYES - w_class = ITEMSIZE_NORMAL - item_state_slots = list(slot_r_hand_str = "gas_alt", slot_l_hand_str = "gas_alt") - gas_transfer_coefficient = 0.01 - permeability_coefficient = 0.01 - siemens_coefficient = 0.9 - var/gas_filter_strength = 1 //For gas mask filters - var/list/filtered_gases = list("phoron", "sleeping_agent") - armor = list(melee = 0, bullet = 0, laser = 0, energy = 0, bomb = 0, bio = 75, rad = 0) - -/obj/item/clothing/mask/gas/filter_air(datum/gas_mixture/air) - var/datum/gas_mixture/gas_filtered = new - - for(var/g in filtered_gases) - if(air.gas[g]) - gas_filtered.gas[g] = air.gas[g] * gas_filter_strength - air.gas[g] -= gas_filtered.gas[g] - - air.update_values() - gas_filtered.update_values() - - return gas_filtered - -/obj/item/clothing/mask/gas/clear - name = "gas mask" - desc = "A face-covering mask with a transparent faceplate that can be connected to an air supply." - icon_state = "gas_clear" - flags_inv = null - -/obj/item/clothing/mask/gas/half - name = "face mask" - desc = "A compact, durable gas mask that can be connected to an air supply." - icon_state = "halfgas" - siemens_coefficient = 0.7 - body_parts_covered = FACE - w_class = ITEMSIZE_SMALL - armor = list(melee = 10, bullet = 10, laser = 10, energy = 0, bomb = 0, bio = 55, rad = 0) - -//Plague Dr suit can be found in clothing/suits/bio.dm -/obj/item/clothing/mask/gas/plaguedoctor - name = "plague doctor mask" - desc = "A modernised version of the classic design, this mask will not only filter out phoron but it can also be connected to an air supply." - icon_state = "plaguedoctor" - item_state_slots = list(slot_r_hand_str = "gas", slot_l_hand_str = "gas") - armor = list(melee = 0, bullet = 0, laser = 2,energy = 2, bomb = 0, bio = 90, rad = 0) - body_parts_covered = HEAD|FACE|EYES - -/obj/item/clothing/mask/gas/swat - name = "\improper SWAT mask" - desc = "A close-fitting tactical mask that can be connected to an air supply." - icon_state = "swat" - siemens_coefficient = 0.7 - body_parts_covered = FACE|EYES - -// Vox mask, has special code for eating -/obj/item/clothing/mask/gas/swat/vox - name = "\improper alien mask" - desc = "Clearly not designed for a human face." - flags = PHORONGUARD - item_flags = BLOCK_GAS_SMOKE_EFFECT | AIRTIGHT - species_restricted = list(SPECIES_VOX) - filtered_gases = list("oxygen", "sleeping_agent") - var/mask_open = FALSE // Controls if the Vox can eat through this mask - action_button_name = "Toggle Feeding Port" - -/obj/item/clothing/mask/gas/swat/vox/proc/feeding_port(mob/user) - if(user.canmove && !user.stat) - mask_open = !mask_open - if(mask_open) - body_parts_covered = EYES - to_chat(user, "Your mask moves to allow you to eat.") - else - body_parts_covered = FACE|EYES - to_chat(user, "Your mask moves to cover your mouth.") - return - -/obj/item/clothing/mask/gas/swat/vox/attack_self(mob/user) - feeding_port(user) - ..() - -/obj/item/clothing/mask/gas/syndicate - name = "tactical mask" - desc = "A close-fitting tactical mask that can be connected to an air supply." - icon_state = "swat" - siemens_coefficient = 0.7 - -/obj/item/clothing/mask/gas/explorer - name = "explorer gas mask" - desc = "A military-grade gas mask that can be connected to an air supply." - icon_state = "explorer" - item_state_slots = list(slot_r_hand_str = "gas", slot_l_hand_str = "gas") - armor = list(melee = 10, bullet = 5, laser = 5,energy = 5, bomb = 0, bio = 50, rad = 0) - siemens_coefficient = 0.9 - -/obj/item/clothing/mask/gas/clown_hat - name = "clown wig and mask" - desc = "A true prankster's facial attire. A clown is incomplete without their wig and mask." - icon_state = "clown" - item_state_slots = list(slot_r_hand_str = "clown_hat", slot_l_hand_str = "clown_hat") - -/obj/item/clothing/mask/gas/sexyclown - name = "sexy-clown wig and mask" - desc = "A feminine clown mask for the dabbling crossdressers or female entertainers." - icon_state = "sexyclown" - item_state_slots = list(slot_r_hand_str = "clown_hat", slot_l_hand_str = "clown_hat") - -/obj/item/clothing/mask/gas/mime - name = "mime mask" - desc = "The traditional mime's mask. It has an eerie facial posture." - icon_state = "mime" - item_state_slots = list(slot_r_hand_str = "mime", slot_l_hand_str = "mime") - -/obj/item/clothing/mask/gas/monkeymask - name = "monkey mask" - desc = "A mask used when acting as a monkey." - icon_state = "monkeymask" - body_parts_covered = HEAD|FACE|EYES - -/obj/item/clothing/mask/gas/sexymime - name = "sexy mime mask" - desc = "A traditional female mime's mask." - icon_state = "sexymime" - item_state_slots = list(slot_r_hand_str = "mime", slot_l_hand_str = "mime") - -/obj/item/clothing/mask/gas/guy - name = "guy fawkes mask" - desc = "A mask stylised to depict Guy Fawkes." - icon_state = "guyfawkes" - flags_inv = HIDEEARS|HIDEFACE - item_state_slots = list(slot_r_hand_str = "mime", slot_l_hand_str = "mime") - -/obj/item/clothing/mask/gas/commando - name = "commando mask" - icon_state = "fullgas" - item_state_slots = list(slot_r_hand_str = "swat", slot_l_hand_str = "swat") - siemens_coefficient = 0.2 - -/obj/item/clothing/mask/gas/cyborg - name = "cyborg visor" - desc = "Beep boop" - icon_state = "death" - -/obj/item/clothing/mask/gas/owl_mask - name = "owl mask" - desc = "Twoooo!" - icon_state = "owl" - body_parts_covered = HEAD|FACE|EYES +/obj/item/clothing/mask/gas + name = "gas mask" + desc = "A face-covering mask that can be connected to an air supply. Filters harmful gases from the air." + //icon = 'icons/obj/clothing/masks_vr.dmi' // Vorestation Edit? + icon_state = "gas_alt" + item_flags = BLOCK_GAS_SMOKE_EFFECT | AIRTIGHT + flags_inv = HIDEEARS|HIDEEYES|HIDEFACE + body_parts_covered = FACE|EYES + w_class = ITEMSIZE_NORMAL + item_state_slots = list(slot_r_hand_str = "gas_alt", slot_l_hand_str = "gas_alt") + gas_transfer_coefficient = 0.01 + permeability_coefficient = 0.01 + siemens_coefficient = 0.9 + var/gas_filter_strength = 1 //For gas mask filters + var/list/filtered_gases = list("phoron", "sleeping_agent") + armor = list(melee = 0, bullet = 0, laser = 0, energy = 0, bomb = 0, bio = 75, rad = 0) + +/obj/item/clothing/mask/gas/filter_air(datum/gas_mixture/air) + var/datum/gas_mixture/gas_filtered = new + + for(var/g in filtered_gases) + if(air.gas[g]) + gas_filtered.gas[g] = air.gas[g] * gas_filter_strength + air.gas[g] -= gas_filtered.gas[g] + + air.update_values() + gas_filtered.update_values() + + return gas_filtered + +/obj/item/clothing/mask/gas/clear + name = "gas mask" + desc = "A face-covering mask with a transparent faceplate that can be connected to an air supply." + icon_state = "gas_clear" + flags_inv = null + +/obj/item/clothing/mask/gas/half + name = "face mask" + desc = "A compact, durable gas mask that can be connected to an air supply." + icon_state = "halfgas" + siemens_coefficient = 0.7 + body_parts_covered = FACE + w_class = ITEMSIZE_SMALL + armor = list(melee = 10, bullet = 10, laser = 10, energy = 0, bomb = 0, bio = 55, rad = 0) + +//Plague Dr suit can be found in clothing/suits/bio.dm +/obj/item/clothing/mask/gas/plaguedoctor + name = "plague doctor mask" + desc = "A modernised version of the classic design, this mask will not only filter out phoron but it can also be connected to an air supply." + icon_state = "plaguedoctor" + item_state_slots = list(slot_r_hand_str = "gas", slot_l_hand_str = "gas") + armor = list(melee = 0, bullet = 0, laser = 2,energy = 2, bomb = 0, bio = 90, rad = 0) + body_parts_covered = HEAD|FACE|EYES + +/obj/item/clothing/mask/gas/swat + name = "\improper SWAT mask" + desc = "A close-fitting tactical mask that can be connected to an air supply." + icon_state = "swat" + siemens_coefficient = 0.7 + body_parts_covered = FACE|EYES + +// Vox mask, has special code for eating +/obj/item/clothing/mask/gas/swat/vox + name = "\improper alien mask" + desc = "Clearly not designed for a human face." + flags = PHORONGUARD + item_flags = BLOCK_GAS_SMOKE_EFFECT | AIRTIGHT + species_restricted = list(SPECIES_VOX) + filtered_gases = list("oxygen", "sleeping_agent") + var/mask_open = FALSE // Controls if the Vox can eat through this mask + action_button_name = "Toggle Feeding Port" + +/obj/item/clothing/mask/gas/swat/vox/proc/feeding_port(mob/user) + if(user.canmove && !user.stat) + mask_open = !mask_open + if(mask_open) + body_parts_covered = EYES + to_chat(user, "Your mask moves to allow you to eat.") + else + body_parts_covered = FACE|EYES + to_chat(user, "Your mask moves to cover your mouth.") + return + +/obj/item/clothing/mask/gas/swat/vox/attack_self(mob/user) + feeding_port(user) + ..() + +/obj/item/clothing/mask/gas/zaddat + name = "Zaddat Veil" + desc = "A clear survival mask used by the Zaddat to filter out harmful nitrogen. Can be connected to an air supply and reconfigured to allow for safe eating." + icon_state = "zaddat_mask" + item_state = "vax_mask" + //body_parts_covered = 0 + species_restricted = list(SPECIES_ZADDAT) + flags_inv = HIDEEARS //semi-transparent + filtered_gases = list("phoron", "nitrogen", "sleeping_agent") + +/obj/item/clothing/mask/gas/syndicate + name = "tactical mask" + desc = "A close-fitting tactical mask that can be connected to an air supply." + icon_state = "swat" + siemens_coefficient = 0.7 + +/obj/item/clothing/mask/gas/explorer + name = "explorer gas mask" + desc = "A military-grade gas mask that can be connected to an air supply." + icon_state = "explorer" + item_state_slots = list(slot_r_hand_str = "gas", slot_l_hand_str = "gas") + armor = list(melee = 10, bullet = 5, laser = 5,energy = 5, bomb = 0, bio = 50, rad = 0) + siemens_coefficient = 0.9 + +/obj/item/clothing/mask/gas/clown_hat + name = "clown wig and mask" + desc = "A true prankster's facial attire. A clown is incomplete without their wig and mask." + icon_state = "clown" + item_state_slots = list(slot_r_hand_str = "clown_hat", slot_l_hand_str = "clown_hat") + +/obj/item/clothing/mask/gas/sexyclown + name = "sexy-clown wig and mask" + desc = "A feminine clown mask for the dabbling crossdressers or female entertainers." + icon_state = "sexyclown" + item_state_slots = list(slot_r_hand_str = "clown_hat", slot_l_hand_str = "clown_hat") + +/obj/item/clothing/mask/gas/mime + name = "mime mask" + desc = "The traditional mime's mask. It has an eerie facial posture." + icon_state = "mime" + item_state_slots = list(slot_r_hand_str = "mime", slot_l_hand_str = "mime") + +/obj/item/clothing/mask/gas/monkeymask + name = "monkey mask" + desc = "A mask used when acting as a monkey." + icon_state = "monkeymask" + body_parts_covered = HEAD|FACE|EYES + +/obj/item/clothing/mask/gas/sexymime + name = "sexy mime mask" + desc = "A traditional female mime's mask." + icon_state = "sexymime" + item_state_slots = list(slot_r_hand_str = "mime", slot_l_hand_str = "mime") + +/obj/item/clothing/mask/gas/guy + name = "guy fawkes mask" + desc = "A mask stylised to depict Guy Fawkes." + icon_state = "guyfawkes" + flags_inv = HIDEEARS|HIDEFACE + item_state_slots = list(slot_r_hand_str = "mime", slot_l_hand_str = "mime") + +/obj/item/clothing/mask/gas/commando + name = "commando mask" + icon_state = "fullgas" + item_state_slots = list(slot_r_hand_str = "swat", slot_l_hand_str = "swat") + siemens_coefficient = 0.2 + +/obj/item/clothing/mask/gas/cyborg + name = "cyborg visor" + desc = "Beep boop" + icon_state = "death" + +/obj/item/clothing/mask/gas/owl_mask + name = "owl mask" + desc = "Twoooo!" + icon_state = "owl" + body_parts_covered = HEAD|FACE|EYES diff --git a/code/modules/clothing/masks/miscellaneous.dm b/code/modules/clothing/masks/miscellaneous.dm index 6ba364ca1a..ea56a0c526 100644 --- a/code/modules/clothing/masks/miscellaneous.dm +++ b/code/modules/clothing/masks/miscellaneous.dm @@ -169,6 +169,34 @@ body_parts_covered = HEAD|FACE|EYES w_class = ITEMSIZE_SMALL siemens_coefficient = 0.9 + +/obj/item/clothing/mask/nock_scarab + name = "nock mask (blue, scarab)" + desc = "To Nock followers, masks symbolize rebirth and a new persona. Damaging the wearer's mask is generally considered an attack on their person itself." + icon_state = "nock_scarab" + w_class = ITEMSIZE_SMALL + body_parts_covered = HEAD|FACE + +/obj/item/clothing/mask/nock_demon + name = "nock mask (purple, demon)" + desc = "To Nock followers, masks symbolize rebirth and a new persona. Damaging the wearer's mask is generally considered an attack on their person itself." + icon_state = "nock_demon" + w_class = ITEMSIZE_SMALL + body_parts_covered = HEAD|FACE + +/obj/item/clothing/mask/nock_life + name = "nock mask (green, life)" + desc = "To Nock followers, masks symbolize rebirth and a new persona. Damaging the wearer's mask is generally considered an attack on their person itself." + icon_state = "nock_life" + w_class = ITEMSIZE_SMALL + body_parts_covered = HEAD|FACE + +/obj/item/clothing/mask/nock_ornate + name = "nock mask (red, ornate)" + desc = "To Nock followers, masks symbolize rebirth and a new persona. Damaging the wearer's mask is generally considered an attack on their person itself." + icon_state = "nock_ornate" + w_class = ITEMSIZE_SMALL + body_parts_covered = HEAD|FACE /obj/item/clothing/mask/horsehead/New() ..() diff --git a/code/modules/clothing/masks/voice.dm b/code/modules/clothing/masks/voice.dm index 70459e62af..7d214be9c3 100644 --- a/code/modules/clothing/masks/voice.dm +++ b/code/modules/clothing/masks/voice.dm @@ -1,8 +1,8 @@ /obj/item/voice_changer name = "voice changer" desc = "A voice scrambling module. If you can see this, report it as a bug on the tracker." - var/voice //If set and item is present in mask/suit, this name will be used for the wearer's speech. - var/active + var/voice = null //If set and item is present in mask/suit, this name will be used for the wearer's speech. + var/active = TRUE /obj/item/clothing/mask/gas/voice name = "gas mask" @@ -15,7 +15,7 @@ set src in usr changer.active = !changer.active - usr << "You [changer.active ? "enable" : "disable"] the voice-changing module in \the [src]." + to_chat(usr, "You [changer.active ? "enable" : "disable"] the voice-changing module in \the [src].") /obj/item/clothing/mask/gas/voice/verb/Set_Voice(name as text) set category = "Object" @@ -24,7 +24,14 @@ var/voice = sanitize(name, MAX_NAME_LEN) if(!voice || !length(voice)) return changer.voice = voice - usr << "You are now mimicking [changer.voice]." + to_chat(usr, "You are now mimicking [changer.voice].") + +/obj/item/clothing/mask/gas/voice/verb/Reset_Voice() + set category = "Object" + set src in usr + + changer.voice = null + to_chat(usr, "You have reset your voice changer's mimicry feature.") /obj/item/clothing/mask/gas/voice/New() ..() diff --git a/code/modules/clothing/rings/rings.dm b/code/modules/clothing/rings/rings.dm index 699be51454..2838de0d2f 100644 --- a/code/modules/clothing/rings/rings.dm +++ b/code/modules/clothing/rings/rings.dm @@ -69,7 +69,7 @@ name = "signet ring" desc = "A signet ring, for when you're too sophisticated to sign letters." icon_state = "seal-signet" - var/nameset = 0 + var/nameset = FALSE /obj/item/clothing/gloves/ring/seal/signet/attack_self(mob/user) if(nameset) @@ -78,7 +78,7 @@ to_chat(user, "You claim the [src] as your own!") change_name(user) - nameset = 1 + nameset = TRUE /obj/item/clothing/gloves/ring/seal/signet/proc/change_name(var/signet_name = "Unknown") name = "[signet_name]'s signet ring" diff --git a/code/modules/clothing/shoes/boots.dm b/code/modules/clothing/shoes/boots.dm index 0b6b6757dc..dd5e7956df 100644 --- a/code/modules/clothing/shoes/boots.dm +++ b/code/modules/clothing/shoes/boots.dm @@ -114,6 +114,13 @@ icon_state = "explorer" armor = list(melee = 30, bullet = 10, laser = 10, energy = 15, bomb = 20, bio = 0, rad = 0) +// Allows the wearer to climb cliffs, which could allow for shortcuts or sequence-breaking. +/obj/item/clothing/shoes/boots/winter/climbing + name = "climbing winter boots" + desc = "A pair of winter boots, with metal bracing attached to assist in climbing rocky terrain." + icon_state = "climbing_boots" + rock_climbing = TRUE + /obj/item/clothing/shoes/boots/tactical name = "tactical boots" desc = "Tan boots with extra padding and armor." diff --git a/code/modules/clothing/spacesuits/alien.dm b/code/modules/clothing/spacesuits/alien.dm index a5e0b31451..d1ab95b00b 100644 --- a/code/modules/clothing/spacesuits/alien.dm +++ b/code/modules/clothing/spacesuits/alien.dm @@ -32,7 +32,7 @@ /obj/item/clothing/suit/space/vox w_class = ITEMSIZE_NORMAL flags = PHORONGUARD - item_flags = STOPPRESSUREDAMAGE | THICKMATERIAL + item_flags = THICKMATERIAL allowed = list(/obj/item/weapon/gun,/obj/item/ammo_magazine,/obj/item/ammo_casing,/obj/item/weapon/melee/baton,/obj/item/weapon/melee/energy/sword,/obj/item/weapon/handcuffs,/obj/item/weapon/tank) armor = list(melee = 60, bullet = 50, laser = 40,energy = 15, bomb = 30, bio = 100, rad = 50) siemens_coefficient = 0.2 @@ -44,7 +44,7 @@ armor = list(melee = 60, bullet = 50, laser = 40, energy = 15, bomb = 30, bio = 100, rad = 50) siemens_coefficient = 0.2 flags = PHORONGUARD - item_flags = STOPPRESSUREDAMAGE | THICKMATERIAL | AIRTIGHT + item_flags = THICKMATERIAL | AIRTIGHT flags_inv = 0 species_restricted = list(SPECIES_VOX) diff --git a/code/modules/clothing/spacesuits/miscellaneous.dm b/code/modules/clothing/spacesuits/miscellaneous.dm index 03466eea22..1d449261e7 100644 --- a/code/modules/clothing/spacesuits/miscellaneous.dm +++ b/code/modules/clothing/spacesuits/miscellaneous.dm @@ -3,7 +3,7 @@ name = "space helmet" icon_state = "capspace" desc = "A special helmet designed for work in a hazardous, low-pressure environment. Only for the most fashionable of military figureheads." - item_flags = STOPPRESSUREDAMAGE + item_flags = 0 flags_inv = HIDEFACE|BLOCKHAIR permeability_coefficient = 0.01 armor = list(melee = 65, bullet = 50, laser = 50,energy = 25, bomb = 50, bio = 100, rad = 50) @@ -16,7 +16,7 @@ w_class = ITEMSIZE_HUGE gas_transfer_coefficient = 0.01 permeability_coefficient = 0.02 - item_flags = STOPPRESSUREDAMAGE + item_flags = 0 body_parts_covered = UPPER_TORSO|LOWER_TORSO|LEGS|FEET|ARMS allowed = list(/obj/item/weapon/tank/emergency/oxygen, /obj/item/device/flashlight,/obj/item/weapon/gun/energy, /obj/item/weapon/gun/projectile, /obj/item/ammo_magazine, /obj/item/ammo_casing, /obj/item/weapon/melee/baton,/obj/item/weapon/handcuffs) slowdown = 1.5 @@ -33,7 +33,7 @@ icon_state = "deathsquad" item_state_slots = list(slot_r_hand_str = "syndicate-helm-black-red", slot_l_hand_str = "syndicate-helm-black-red") armor = list(melee = 65, bullet = 55, laser = 35,energy = 20, bomb = 30, bio = 100, rad = 60) - item_flags = STOPPRESSUREDAMAGE | THICKMATERIAL + item_flags = THICKMATERIAL flags_inv = BLOCKHAIR siemens_coefficient = 0.6 @@ -44,7 +44,7 @@ icon_state = "beret_badge" item_state_slots = list(slot_r_hand_str = "beret", slot_l_hand_str = "beret") armor = list(melee = 65, bullet = 55, laser = 35,energy = 20, bomb = 30, bio = 30, rad = 30) - item_flags = STOPPRESSUREDAMAGE + item_flags = 0 flags_inv = BLOCKHAIR siemens_coefficient = 0.9 @@ -53,7 +53,7 @@ name = "Santa's hat" desc = "Ho ho ho. Merrry X-mas!" icon_state = "santahat" - item_flags = STOPPRESSUREDAMAGE + item_flags = 0 flags_inv = BLOCKHAIR body_parts_covered = HEAD @@ -62,7 +62,7 @@ desc = "Festive!" icon_state = "santa" slowdown = 0 - item_flags = STOPPRESSUREDAMAGE + item_flags = 0 allowed = list(/obj/item) //for stuffing exta special presents //Space pirate outfit @@ -71,7 +71,7 @@ desc = "Yarr." icon_state = "pirate" armor = list(melee = 60, bullet = 50, laser = 30,energy = 15, bomb = 30, bio = 30, rad = 30) - item_flags = STOPPRESSUREDAMAGE + item_flags = 0 flags_inv = BLOCKHAIR body_parts_covered = 0 siemens_coefficient = 0.9 diff --git a/code/modules/clothing/spacesuits/rig/modules/modules.dm b/code/modules/clothing/spacesuits/rig/modules/modules.dm index 108738be9e..0e0e366d82 100644 --- a/code/modules/clothing/spacesuits/rig/modules/modules.dm +++ b/code/modules/clothing/spacesuits/rig/modules/modules.dm @@ -235,6 +235,10 @@ var/obj/item/weapon/rig/R = back SetupStat(R) + else if(. && istype(belt,/obj/item/weapon/rig)) + var/obj/item/weapon/rig/R = belt + SetupStat(R) + /mob/proc/SetupStat(var/obj/item/weapon/rig/R) if(R && !R.canremove && R.installed_modules.len && statpanel("Hardsuit Modules")) var/cell_status = R.cell ? "[R.cell.charge]/[R.cell.maxcharge]" : "ERROR" diff --git a/code/modules/clothing/spacesuits/rig/rig.dm b/code/modules/clothing/spacesuits/rig/rig.dm index 293e2601cc..1130e1e19d 100644 --- a/code/modules/clothing/spacesuits/rig/rig.dm +++ b/code/modules/clothing/spacesuits/rig/rig.dm @@ -83,7 +83,9 @@ var/offline_slowdown = 3 // If the suit is deployed and unpowered, it sets slowdown to this. var/vision_restriction var/offline_vision_restriction = 1 // 0 - none, 1 - welder vision, 2 - blind. Maybe move this to helmets. - var/airtight = 1 //If set, will adjust AIRTIGHT and STOPPRESSUREDAMAGE flags on components. Otherwise it should leave them untouched. + var/airtight = 1 //If set, will adjust AIRTIGHT flag and pressure protections on components. Otherwise it should leave them untouched. + var/rigsuit_max_pressure = 10 * ONE_ATMOSPHERE // Max pressure the rig protects against when sealed + var/rigsuit_min_pressure = 0 // Min pressure the rig protects against when sealed var/emp_protection = 0 item_flags = PHORONGUARD //VOREStation add @@ -93,22 +95,22 @@ var/datum/effect/effect/system/spark_spread/spark_system /obj/item/weapon/rig/examine() - usr << "This is \icon[src][src.name]." - usr << "[src.desc]" + to_chat(usr, "This is \icon[src][src.name].") + to_chat(usr, "[src.desc]") if(wearer) for(var/obj/item/piece in list(helmet,gloves,chest,boots)) if(!piece || piece.loc != wearer) continue - usr << "\icon[piece] \The [piece] [piece.gender == PLURAL ? "are" : "is"] deployed." + to_chat(usr, "\icon[piece] \The [piece] [piece.gender == PLURAL ? "are" : "is"] deployed.") if(src.loc == usr) - usr << "The access panel is [locked? "locked" : "unlocked"]." - usr << "The maintenance panel is [open ? "open" : "closed"]." - usr << "Hardsuit systems are [offline ? "offline" : "online"]." - usr << "The cooling stystem is [cooling_on ? "active" : "inactive"]." + to_chat(usr, "The access panel is [locked? "locked" : "unlocked"].") + to_chat(usr, "The maintenance panel is [open ? "open" : "closed"].") + to_chat(usr, "Hardsuit systems are [offline ? "offline" : "online"].") + to_chat(usr, "The cooling stystem is [cooling_on ? "active" : "inactive"].") if(open) - usr << "It's equipped with [english_list(installed_modules)]." + to_chat(usr, "It's equipped with [english_list(installed_modules)].") /obj/item/weapon/rig/New() ..() @@ -124,7 +126,7 @@ spark_system.set_up(5, 0, src) spark_system.attach(src) - processing_objects |= src + START_PROCESSING(SSobj, src) if(initial_modules && initial_modules.len) for(var/path in initial_modules) @@ -176,7 +178,7 @@ if(istype(M)) M.drop_from_inventory(piece) qdel(piece) - processing_objects -= src + STOP_PROCESSING(SSobj, src) qdel(wires) wires = null qdel(spark_system) @@ -184,7 +186,7 @@ return ..() /obj/item/weapon/rig/get_worn_icon_file(var/body_type,var/slot_name,var/default_icon,var/inhands) - if(!inhands && slot_name == slot_back_str) + if(!inhands && (slot_name == slot_back_str || slot_name == slot_belt_str)) if(icon_override) return icon_override else if(mob_icon) @@ -193,7 +195,7 @@ return ..() /obj/item/weapon/rig/proc/suit_is_deployed() - if(!istype(wearer) || src.loc != wearer || wearer.back != src) + if(!istype(wearer) || src.loc != wearer || (wearer.back != src && wearer.belt != src)) return 0 if(helm_type && !(helmet && wearer.head == helmet)) return 0 @@ -205,6 +207,21 @@ return 0 return 1 +// Updates pressure protection +// Seal = 1 sets protection +// Seal = 0 unsets protection +/obj/item/weapon/rig/proc/update_airtight(var/obj/item/piece, var/seal = 0) + if(seal == 1) + piece.min_pressure_protection = rigsuit_min_pressure + piece.max_pressure_protection = rigsuit_max_pressure + piece.item_flags |= AIRTIGHT + else + piece.min_pressure_protection = null + piece.max_pressure_protection = null + piece.item_flags &= ~AIRTIGHT + return + + /obj/item/weapon/rig/proc/reset() offline = 2 canremove = 1 @@ -212,7 +229,7 @@ if(!piece) continue piece.icon_state = "[suit_state]" if(airtight) - piece.item_flags &= ~(STOPPRESSUREDAMAGE|AIRTIGHT) + update_airtight(piece, 0) // Unseal update_icon(1) /obj/item/weapon/rig/proc/toggle_seals(var/mob/living/carbon/human/M,var/instant) @@ -250,7 +267,8 @@ if(!instant) M.visible_message("[M]'s suit emits a quiet hum as it begins to adjust its seals.","With a quiet hum, the suit begins running checks and adjusting components.") if(seal_delay && !do_after(M,seal_delay)) - if(M) M << "You must remain still while the suit is adjusting the components." + if(M) + to_chat(M, "You must remain still while the suit is adjusting the components.") failed_to_seal = 1 if(!M) failed_to_seal = 1 @@ -266,11 +284,12 @@ continue if(!istype(M) || !istype(piece) || !istype(compare_piece) || !msg_type) - if(M) M << "You must remain still while the suit is adjusting the components." + if(M) + to_chat(M, "You must remain still while the suit is adjusting the components.") failed_to_seal = 1 break - if(!failed_to_seal && M.back == src && piece == compare_piece) + if(!failed_to_seal && (M.back == src || M.belt == src) && piece == compare_piece) if(seal_delay && !instant && !do_after(M,seal_delay,needhand=0)) failed_to_seal = 1 @@ -278,16 +297,16 @@ piece.icon_state = "[suit_state][!seal_target ? "_sealed" : ""]" switch(msg_type) if("boots") - M << "\The [piece] [!seal_target ? "seal around your feet" : "relax their grip on your legs"]." + to_chat(M, "\The [piece] [!seal_target ? "seal around your feet" : "relax their grip on your legs"].") M.update_inv_shoes() if("gloves") - M << "\The [piece] [!seal_target ? "tighten around your fingers and wrists" : "become loose around your fingers"]." + to_chat(M, "\The [piece] [!seal_target ? "tighten around your fingers and wrists" : "become loose around your fingers"].") M.update_inv_gloves() if("chest") - M << "\The [piece] [!seal_target ? "cinches tight again your chest" : "releases your chest"]." + to_chat(M, "\The [piece] [!seal_target ? "cinches tight again your chest" : "releases your chest"].") M.update_inv_wear_suit() if("helmet") - M << "\The [piece] hisses [!seal_target ? "closed" : "open"]." + to_chat(M, "\The [piece] hisses [!seal_target ? "closed" : "open"].") M.update_inv_head() if(helmet) helmet.update_light(wearer) @@ -301,7 +320,7 @@ else failed_to_seal = 1 - if((M && !(istype(M) && M.back == src) && !istype(M,/mob/living/silicon)) || (!seal_target && !suit_is_deployed())) + if((M && !(istype(M) && (M.back == src || M.belt == src)) && !istype(M,/mob/living/silicon)) || (!seal_target && !suit_is_deployed())) failed_to_seal = 1 sealing = null @@ -322,7 +341,7 @@ // Success! canremove = seal_target - M << "Your entire suit [canremove ? "loosens as the components relax" : "tightens around you as the components lock into place"]." + to_chat(M, "Your entire suit [canremove ? "loosens as the components relax" : "tightens around you as the components lock into place"].") M.client.screen -= booting_L qdel(booting_L) booting_R.icon_state = "boot_done" @@ -340,9 +359,9 @@ /obj/item/weapon/rig/proc/update_component_sealed() for(var/obj/item/piece in list(helmet,boots,gloves,chest)) if(canremove) - piece.item_flags &= ~(STOPPRESSUREDAMAGE|AIRTIGHT) + update_airtight(piece, 0) // Unseal else - piece.item_flags |= (STOPPRESSUREDAMAGE|AIRTIGHT) + update_airtight(piece, 1) // Seal /obj/item/weapon/rig/ui_action_click() toggle_cooling(usr) @@ -357,19 +376,21 @@ if(!cell) return if(cell.charge <= 0) - user << "\The [src] has no power!." + to_chat(user, "\The [src] has no power!.") return if(!suit_is_deployed()) - user << "The hardsuit needs to be deployed first!." + to_chat(user, "The hardsuit needs to be deployed first!.") return cooling_on = 1 - usr << "You switch \the [src]'s cooling system on." + to_chat(usr, "You switch \the [src]'s cooling system on.") /obj/item/weapon/rig/proc/turn_cooling_off(var/mob/user, var/failed) - if(failed) visible_message("\The [src]'s cooling system clicks and whines as it powers down.") - else usr << "You switch \the [src]'s cooling system off." + if(failed) + visible_message("\The [src]'s cooling system clicks and whines as it powers down.") + else + to_chat(usr, "You switch \the [src]'s cooling system off.") cooling_on = 0 /obj/item/weapon/rig/proc/get_environment_temperature() @@ -392,13 +413,13 @@ return environment.temperature -/obj/item/weapon/rig/proc/attached_to_back(mob/M) +/obj/item/weapon/rig/proc/attached_to_user(mob/M) if (!ishuman(M)) return 0 var/mob/living/carbon/human/H = M - if (!H.wear_suit || H.back != src) + if (!H.wear_suit || (H.back != src && H.belt != src)) return 0 return 1 @@ -410,7 +431,7 @@ if (!ismob(loc)) return - if (!attached_to_back(loc)) //make sure the rig's not just in their hands + if (!attached_to_user(loc)) //make sure the rig's not just in their hands return if (!suit_is_deployed()) //inbuilt systems only work on the suit they're designed to work on @@ -418,8 +439,10 @@ var/mob/living/carbon/human/H = loc - var/efficiency = 1 - H.get_pressure_weakness() //you need to have a good seal for effective cooling - var/env_temp = get_environment_temperature() //wont save you from a fire + var/turf/T = get_turf(src) + var/datum/gas_mixture/environment = T.return_air() + var/efficiency = 1 - H.get_pressure_weakness(environment.return_pressure()) // You need to have a good seal for effective cooling + var/env_temp = get_environment_temperature() //wont save you from a fire var/temp_adj = min(H.bodytemperature - max(thermostat, env_temp), max_cooling) if (temp_adj < 0.5) //only cools, doesn't heat, also we don't need extreme precision @@ -446,7 +469,7 @@ // Run through cooling coolingProcess() - if(!istype(wearer) || loc != wearer || wearer.back != src || canremove || !cell || cell.charge <= 0) + if(!istype(wearer) || loc != wearer || (wearer.back != src && wearer.belt != src) || canremove || !cell || cell.charge <= 0) if(!cell || cell.charge <= 0) if(electrified > 0) electrified = 0 @@ -454,13 +477,13 @@ if(istype(wearer)) if(!canremove) if (offline_slowdown < 3) - wearer << "Your suit beeps stridently, and suddenly goes dead." + to_chat(wearer, "Your suit beeps stridently, and suddenly goes dead.") else - wearer << "Your suit beeps stridently, and suddenly you're wearing a leaden mass of metal and plastic composites instead of a powered suit." + to_chat(wearer, "Your suit beeps stridently, and suddenly you're wearing a leaden mass of metal and plastic composites instead of a powered suit.") if(offline_vision_restriction == 1) - wearer << "The suit optics flicker and die, leaving you with restricted vision." + to_chat(wearer, "The suit optics flicker and die, leaving you with restricted vision.") else if(offline_vision_restriction == 2) - wearer << "The suit optics drop out completely, drowning you in darkness." + to_chat(wearer, "The suit optics drop out completely, drowning you in darkness.") if(!offline) offline = 1 else @@ -499,7 +522,7 @@ if(!user_is_ai) var/mob/living/carbon/human/H = user - if(istype(H) && H.back != src) + if(istype(H) && (H.back != src && H.belt != src)) fail_msg = "You must be wearing \the [src] to do this." else if(user.incorporeal_move) fail_msg = "You must be solid to do this." @@ -513,7 +536,7 @@ fail_msg = "Not enough stored power." if(fail_msg) - user << "[fail_msg]" + to_chat(user, fail_msg) return 0 // This is largely for cancelling stealth and whatever. @@ -546,7 +569,7 @@ data["charge"] = cell ? round(cell.charge,1) : 0 data["maxcharge"] = cell ? cell.maxcharge : 0 - data["chargestatus"] = cell ? Floor((cell.charge/cell.maxcharge)*50) : 0 + data["chargestatus"] = cell ? FLOOR((cell.charge/cell.maxcharge)*50, 1) : 0 data["emagged"] = subverted data["coverlock"] = locked @@ -635,7 +658,7 @@ return 1 if(malfunction_check(user)) return 0 - if(user.back != src) + if(user.back != src && user.belt != src) return 0 else if(!src.allowed(user)) user << "Unauthorized user. Access denied." @@ -694,16 +717,24 @@ /obj/item/weapon/rig/equipped(mob/living/carbon/human/M) ..() - if(seal_delay > 0 && istype(M) && M.back == src) + if(istype(M.back, /obj/item/weapon/rig) && istype(M.belt, /obj/item/weapon/rig)) + to_chat(M, "You try to put on the [src], but it won't fit.") + if(M && (M.back == src || M.belt == src)) + if(!M.unEquip(src)) + return + src.forceMove(get_turf(src)) + return + + if(seal_delay > 0 && istype(M) && (M.back == src || M.belt == src)) M.visible_message("[M] starts putting on \the [src]...", "You start putting on \the [src]...") if(!do_after(M,seal_delay)) - if(M && M.back == src) + if(M && (M.back == src || M.belt == src)) if(!M.unEquip(src)) return src.forceMove(get_turf(src)) return - if(istype(M) && M.back == src) + if(istype(M) && (M.back == src || M.belt == src)) M.visible_message("[M] struggles into \the [src].", "You struggle into \the [src].") wearer = M wearer.wearing_rig = src @@ -714,7 +745,7 @@ if(sealing || !cell || !cell.charge) return - if(!istype(wearer) || !wearer.back == src) + if(!istype(wearer) || (!wearer.back == src && !wearer.belt == src)) return if(usr == wearer && (usr.stat||usr.paralysis||usr.stunned)) // If the usr isn't wearing the suit it's probably an AI. @@ -783,7 +814,7 @@ if(!H || !istype(H)) return - if(H.back != src) + if(H.back != src && H.belt != src) return if(sealed) @@ -927,7 +958,7 @@ if(offline || !cell || !cell.charge || locked_down) if(user) user << "Your host rig is unpowered and unresponsive." return 0 - if(!wearer || wearer.back != src) + if(!wearer || (wearer.back != src && wearer.belt != src)) if(user) user << "Your host rig is not being worn." return 0 if(!wearer.stat && !control_overridden && !ai_override_enabled) @@ -1028,7 +1059,12 @@ return src /mob/living/carbon/human/get_rig() - return back + if(istype(back, /obj/item/weapon/rig)) + return back + else if(istype(belt, /obj/item/weapon/rig)) + return belt + else + return null //Boot animation screen objects /obj/screen/rig_booting diff --git a/code/modules/clothing/spacesuits/rig/rig_attackby.dm b/code/modules/clothing/spacesuits/rig/rig_attackby.dm index 39b23827d8..3d5fc13004 100644 --- a/code/modules/clothing/spacesuits/rig/rig_attackby.dm +++ b/code/modules/clothing/spacesuits/rig/rig_attackby.dm @@ -66,7 +66,7 @@ else if(istype(W,/obj/item/rig_module)) if(istype(src.loc,/mob/living/carbon/human)) var/mob/living/carbon/human/H = src.loc - if(H.back == src) + if(H.back == src || H.belt == src) to_chat(user, "You can't install a hardsuit module while the suit is being worn.") return 1 @@ -128,7 +128,7 @@ if(istype(src.loc,/mob/living/carbon/human) && to_remove != "cell") var/mob/living/carbon/human/H = src.loc - if(H.back == src) + if(H.back == src || H.belt == src) to_chat(user, "You can't remove an installed device while the hardsuit is being worn.") return diff --git a/code/modules/clothing/spacesuits/rig/rig_pieces.dm b/code/modules/clothing/spacesuits/rig/rig_pieces.dm index 10cae0c964..c402b85914 100644 --- a/code/modules/clothing/spacesuits/rig/rig_pieces.dm +++ b/code/modules/clothing/spacesuits/rig/rig_pieces.dm @@ -14,9 +14,12 @@ SPECIES_TAJ = 'icons/mob/species/tajaran/helmet.dmi', SPECIES_SKRELL = 'icons/mob/species/skrell/helmet.dmi', SPECIES_UNATHI = 'icons/mob/species/unathi/helmet.dmi', - SPECIES_VOX = 'icons/mob/species/vox/head.dmi' + SPECIES_VOX = 'icons/mob/species/vox/head.dmi', + SPECIES_TESHARI = 'icons/mob/species/seromi/head.dmi' ) - species_restricted = null + species_restricted = list(SPECIES_HUMAN, SPECIES_SKRELL, SPECIES_TAJ, SPECIES_UNATHI, SPECIES_PROMETHEAN, SPECIES_TESHARI) //vox, diona, and zaddat can't use hardsuits not designed for them + max_pressure_protection = null + min_pressure_protection = null /obj/item/clothing/gloves/gauntlets/rig name = "gauntlets" @@ -24,7 +27,7 @@ body_parts_covered = HANDS heat_protection = HANDS cold_protection = HANDS - species_restricted = null + species_restricted = list(SPECIES_HUMAN, SPECIES_SKRELL, SPECIES_TAJ, SPECIES_UNATHI, SPECIES_PROMETHEAN, SPECIES_TESHARI) gender = PLURAL /obj/item/clothing/shoes/magboots/rig @@ -32,7 +35,7 @@ body_parts_covered = FEET cold_protection = FEET heat_protection = FEET - species_restricted = null + species_restricted = list(SPECIES_HUMAN, SPECIES_SKRELL, SPECIES_TAJ, SPECIES_UNATHI, SPECIES_PROMETHEAN, SPECIES_TESHARI) gender = PLURAL icon_base = null @@ -40,10 +43,10 @@ name = "chestpiece" allowed = list(/obj/item/device/flashlight,/obj/item/weapon/tank,/obj/item/device/suit_cooling_unit) body_parts_covered = UPPER_TORSO|LOWER_TORSO|LEGS|ARMS - heat_protection = UPPER_TORSO|LOWER_TORSO|LEGS|ARMS - cold_protection = UPPER_TORSO|LOWER_TORSO|LEGS|ARMS - flags_inv = HIDEJUMPSUIT|HIDETAIL - item_flags = STOPPRESSUREDAMAGE | THICKMATERIAL | AIRTIGHT + heat_protection = UPPER_TORSO|LOWER_TORSO|LEGS|ARMS + cold_protection = UPPER_TORSO|LOWER_TORSO|LEGS|ARMS + flags_inv = HIDEJUMPSUIT|HIDETAIL + item_flags = THICKMATERIAL | AIRTIGHT slowdown = 0 //will reach 10 breach damage after 25 laser carbine blasts, 3 revolver hits, or ~1 PTR hit. Completely immune to smg or sts hits. breach_threshold = 38 @@ -52,10 +55,14 @@ sprite_sheets = list( SPECIES_TAJ = 'icons/mob/species/tajaran/suit.dmi', SPECIES_UNATHI = 'icons/mob/species/unathi/suit.dmi', - SPECIES_VOX = 'icons/mob/species/vox/suit.dmi' + SPECIES_VOX = 'icons/mob/species/vox/suit.dmi', + SPECIES_TESHARI = 'icons/mob/species/seromi/suit.dmi' ) supporting_limbs = list() + species_restricted = list(SPECIES_HUMAN, SPECIES_SKRELL, SPECIES_TAJ, SPECIES_UNATHI, SPECIES_PROMETHEAN, SPECIES_TESHARI) //vox, diona, and zaddat can't use hardsuits not designed for them var/obj/item/weapon/material/knife/tacknife + max_pressure_protection = null + min_pressure_protection = null /obj/item/clothing/suit/space/rig/attack_hand(var/mob/living/M) if(tacknife) @@ -90,7 +97,7 @@ return 0 var/mob/living/carbon/human/H = loc - if(!istype(H) || !H.back) + if(!istype(H) || (!H.back && !H.belt)) return 0 var/obj/item/weapon/rig/suit = H.back @@ -112,6 +119,7 @@ heat_protection = HEAD|FACE|EYES cold_protection = HEAD|FACE|EYES flags = THICKMATERIAL|AIRTIGHT + species_restricted = null /obj/item/clothing/suit/lightrig name = "suit" @@ -121,6 +129,7 @@ cold_protection = UPPER_TORSO|LOWER_TORSO|LEGS|ARMS flags_inv = HIDEJUMPSUIT flags = THICKMATERIAL + species_restricted = null /obj/item/clothing/shoes/lightrig name = "boots" diff --git a/code/modules/clothing/spacesuits/rig/rig_pieces_vr.dm b/code/modules/clothing/spacesuits/rig/rig_pieces_vr.dm index a9b0f34d73..6b08a2ac00 100644 --- a/code/modules/clothing/spacesuits/rig/rig_pieces_vr.dm +++ b/code/modules/clothing/spacesuits/rig/rig_pieces_vr.dm @@ -11,7 +11,8 @@ SPECIES_VULPKANI = 'icons/mob/species/vulpkanin/helmet.dmi', SPECIES_PROMETHEAN = 'icons/mob/species/skrell/helmet.dmi', SPECIES_XENOHYBRID = 'icons/mob/species/unathi/helmet.dmi', - SPECIES_VOX = 'icons/mob/species/vox/head.dmi' + SPECIES_VOX = 'icons/mob/species/vox/head.dmi', + SPECIES_TESHARI = 'icons/mob/species/seromi/head.dmi' ) @@ -29,6 +30,18 @@ SPECIES_VULPKANIN = 'icons/mob/species/vulpkanin/suit.dmi', SPECIES_PROMETHEAN = 'icons/mob/species/skrell/suit.dmi', SPECIES_XENOHYBRID = 'icons/mob/species/unathi/suit.dmi', - SPECIES_VOX = 'icons/mob/species/vox/suit.dmi' + SPECIES_VOX = 'icons/mob/species/vox/suit.dmi', + SPECIES_TESHARI = 'icons/mob/species/seromi/suit.dmi' ) +/obj/item/clothing/head/helmet/space/rig + species_restricted = list(SPECIES_HUMAN, SPECIES_SKRELL, SPECIES_TAJ, SPECIES_UNATHI, SPECIES_NEVREAN, SPECIES_AKULA, SPECIES_SERGAL, SPECIES_ZORREN_FLAT, SPECIES_ZORREN_HIGH, SPECIES_VULPKANIN, SPECIES_PROMETHEAN, SPECIES_XENOHYBRID, SPECIES_VOX, SPECIES_TESHARI) + +/obj/item/clothing/gloves/gauntlets/rig + species_restricted = list(SPECIES_HUMAN, SPECIES_SKRELL, SPECIES_TAJ, SPECIES_UNATHI, SPECIES_NEVREAN, SPECIES_AKULA, SPECIES_SERGAL, SPECIES_ZORREN_FLAT, SPECIES_ZORREN_HIGH, SPECIES_VULPKANIN, SPECIES_PROMETHEAN, SPECIES_XENOHYBRID, SPECIES_VOX, SPECIES_TESHARI) + +/obj/item/clothing/shoes/magboots/rig + species_restricted = list(SPECIES_HUMAN, SPECIES_SKRELL, SPECIES_TAJ, SPECIES_UNATHI, SPECIES_NEVREAN, SPECIES_AKULA, SPECIES_SERGAL, SPECIES_ZORREN_FLAT, SPECIES_ZORREN_HIGH, SPECIES_VULPKANIN, SPECIES_PROMETHEAN, SPECIES_XENOHYBRID, SPECIES_VOX, SPECIES_TESHARI) + +/obj/item/clothing/suit/space/rig + species_restricted = list(SPECIES_HUMAN, SPECIES_SKRELL, SPECIES_TAJ, SPECIES_UNATHI, SPECIES_NEVREAN, SPECIES_AKULA, SPECIES_SERGAL, SPECIES_ZORREN_FLAT, SPECIES_ZORREN_HIGH, SPECIES_VULPKANIN, SPECIES_PROMETHEAN, SPECIES_XENOHYBRID, SPECIES_VOX, SPECIES_TESHARI) diff --git a/code/modules/clothing/spacesuits/rig/rig_verbs.dm b/code/modules/clothing/spacesuits/rig/rig_verbs.dm index 09db9b0325..fc0b8bee43 100644 --- a/code/modules/clothing/spacesuits/rig/rig_verbs.dm +++ b/code/modules/clothing/spacesuits/rig/rig_verbs.dm @@ -6,7 +6,7 @@ set category = "Hardsuit" set src = usr.contents - if(wearer && wearer.back == src) + if(wearer && (wearer.back == src || wearer.belt == src)) ui_interact(usr) /obj/item/weapon/rig/verb/toggle_vision() @@ -16,7 +16,7 @@ set category = "Hardsuit" set src = usr.contents - if(!istype(wearer) || !wearer.back == src) + if(!istype(wearer) || (!wearer.back == src && !wearer.belt == src)) usr << "The hardsuit is not being worn." return @@ -46,7 +46,7 @@ set category = "Hardsuit" set src = usr.contents - if(!istype(wearer) || !wearer.back == src) + if(!istype(wearer) || (!wearer.back == src && !wearer.belt == src)) usr << "The hardsuit is not being worn." return @@ -74,7 +74,7 @@ set category = "Hardsuit" set src = usr.contents - if(!istype(wearer) || !wearer.back == src) + if(!istype(wearer) || (!wearer.back == src && !wearer.belt == src)) usr << "The hardsuit is not being worn." return @@ -90,7 +90,7 @@ set category = "Hardsuit" set src = usr.contents - if(!istype(wearer) || !wearer.back == src) + if(!istype(wearer) || (!wearer.back == src && !wearer.belt == src)) usr << "The hardsuit is not being worn." return @@ -106,7 +106,7 @@ set category = "Hardsuit" set src = usr.contents - if(!istype(wearer) || !wearer.back == src) + if(!istype(wearer) || (!wearer.back == src && !wearer.belt == src)) usr << "The hardsuit is not being worn." return @@ -125,7 +125,7 @@ set category = "Hardsuit" set src = usr.contents - if(!istype(wearer) || !wearer.back == src) + if(!istype(wearer) || (!wearer.back == src && !wearer.belt == src)) usr << "The hardsuit is not being worn." return @@ -178,7 +178,7 @@ usr << "The suit is not active." return - if(!istype(wearer) || !wearer.back == src) + if(!istype(wearer) || (!wearer.back == src && !wearer.belt == src)) usr << "The hardsuit is not being worn." return @@ -197,7 +197,7 @@ if(malfunction_check(usr)) return - + if(!check_power_cost(usr, 0, 0, 0, 0)) return @@ -205,7 +205,7 @@ usr << "The suit is not active." return - if(!istype(wearer) || !wearer.back == src) + if(!istype(wearer) || (!wearer.back == src && !wearer.belt == src)) usr << "The hardsuit is not being worn." return @@ -241,7 +241,7 @@ usr << "The suit is not active." return - if(!istype(wearer) || !wearer.back == src) + if(!istype(wearer) || (!wearer.back == src && !wearer.belt == src)) usr << "The hardsuit is not being worn." return @@ -276,7 +276,7 @@ usr << "The suit is not active." return - if(!istype(wearer) || !wearer.back == src) + if(!istype(wearer) || (!wearer.back == src && !wearer.belt == src)) usr << "The hardsuit is not being worn." return diff --git a/code/modules/clothing/spacesuits/rig/suits/light.dm b/code/modules/clothing/spacesuits/rig/suits/light.dm index 918e5a3290..5291b73cb8 100644 --- a/code/modules/clothing/spacesuits/rig/suits/light.dm +++ b/code/modules/clothing/spacesuits/rig/suits/light.dm @@ -8,7 +8,7 @@ armor = list(melee = 50, bullet = 15, laser = 50, energy = 10, bomb = 25, bio = 0, rad = 0) emp_protection = 10 slowdown = 0 - item_flags = STOPPRESSUREDAMAGE | THICKMATERIAL + item_flags = THICKMATERIAL offline_slowdown = 0 offline_vision_restriction = 0 @@ -16,6 +16,8 @@ helm_type = /obj/item/clothing/head/helmet/space/rig/light boot_type = /obj/item/clothing/shoes/magboots/rig/light glove_type = /obj/item/clothing/gloves/gauntlets/rig/light + rigsuit_max_pressure = 5 * ONE_ATMOSPHERE // Max pressure the rig protects against when sealed + rigsuit_min_pressure = 0 // Min pressure the rig protects against when sealed /obj/item/clothing/suit/space/rig/light name = "suit" diff --git a/code/modules/clothing/spacesuits/rig/suits/station.dm b/code/modules/clothing/spacesuits/rig/suits/station.dm index b308e99e2d..eda8665fb2 100644 --- a/code/modules/clothing/spacesuits/rig/suits/station.dm +++ b/code/modules/clothing/spacesuits/rig/suits/station.dm @@ -74,6 +74,8 @@ offline_vision_restriction = 2 emp_protection = -20 siemens_coefficient= 0.75 + rigsuit_max_pressure = 15 * ONE_ATMOSPHERE // Max pressure the rig protects against when sealed + rigsuit_min_pressure = 0 // Min pressure the rig protects against when sealed helm_type = /obj/item/clothing/head/helmet/space/rig/industrial @@ -155,6 +157,8 @@ offline_slowdown = 0 offline_vision_restriction = 0 siemens_coefficient= 0.75 + rigsuit_max_pressure = 20 * ONE_ATMOSPHERE // Max pressure the rig protects against when sealed + rigsuit_min_pressure = 0 // Min pressure the rig protects against when sealed helm_type = /obj/item/clothing/head/helmet/space/rig/ce glove_type = /obj/item/clothing/gloves/gauntlets/rig/ce diff --git a/code/modules/clothing/spacesuits/spacesuits.dm b/code/modules/clothing/spacesuits/spacesuits.dm index 400bd96b4b..f1f67925e2 100644 --- a/code/modules/clothing/spacesuits/spacesuits.dm +++ b/code/modules/clothing/spacesuits/spacesuits.dm @@ -7,13 +7,15 @@ icon_state = "space" desc = "A special helmet designed for work in a hazardous, low-pressure environment." flags = PHORONGUARD - item_flags = STOPPRESSUREDAMAGE | THICKMATERIAL | AIRTIGHT + item_flags = THICKMATERIAL | AIRTIGHT permeability_coefficient = 0.01 armor = list(melee = 0, bullet = 0, laser = 0,energy = 0, bomb = 0, bio = 100, rad = 50) flags_inv = HIDEMASK|HIDEEARS|HIDEEYES|HIDEFACE|BLOCKHAIR body_parts_covered = HEAD|FACE|EYES cold_protection = HEAD min_cold_protection_temperature = SPACE_HELMET_MIN_COLD_PROTECTION_TEMPERATURE + min_pressure_protection = 0 * ONE_ATMOSPHERE + max_pressure_protection = 2 * ONE_ATMOSPHERE siemens_coefficient = 0.9 species_restricted = list("exclude",SPECIES_DIONA) preserve_item = 1 @@ -56,7 +58,7 @@ gas_transfer_coefficient = 0.01 permeability_coefficient = 0.02 flags = PHORONGUARD - item_flags = STOPPRESSUREDAMAGE | THICKMATERIAL | PHORONGUARD + item_flags = THICKMATERIAL | PHORONGUARD body_parts_covered = UPPER_TORSO|LOWER_TORSO|LEGS|FEET|ARMS|HANDS allowed = list(/obj/item/device/flashlight,/obj/item/weapon/tank/emergency/oxygen,/obj/item/device/suit_cooling_unit) slowdown = 3 @@ -64,10 +66,12 @@ flags_inv = HIDEGLOVES|HIDESHOES|HIDEJUMPSUIT|HIDETAIL|HIDETIE|HIDEHOLSTER cold_protection = UPPER_TORSO | LOWER_TORSO | LEGS | FEET | ARMS | HANDS min_cold_protection_temperature = SPACE_SUIT_MIN_COLD_PROTECTION_TEMPERATURE + min_pressure_protection = 0 * ONE_ATMOSPHERE + max_pressure_protection = 2 * ONE_ATMOSPHERE siemens_coefficient = 0.9 species_restricted = list("exclude",SPECIES_DIONA) preserve_item = 1 - + valid_accessory_slots = (ACCESSORY_SLOT_OVER | ACCESSORY_SLOT_ARMBAND | ACCESSORY_SLOT_DECOR) var/list/supporting_limbs //If not-null, automatically splints breaks. Checked when removing the suit. /obj/item/clothing/suit/space/equipped(mob/M) diff --git a/code/modules/clothing/spacesuits/void/station.dm b/code/modules/clothing/spacesuits/void/station.dm index 7a0af9c9d8..2168fbb1b5 100644 --- a/code/modules/clothing/spacesuits/void/station.dm +++ b/code/modules/clothing/spacesuits/void/station.dm @@ -6,6 +6,8 @@ icon_state = "rig0-engineering" item_state_slots = list(slot_r_hand_str = "eng_helm", slot_l_hand_str = "eng_helm") armor = list(melee = 40, bullet = 5, laser = 20, energy = 5, bomb = 35, bio = 100, rad = 80) + min_pressure_protection = 0 * ONE_ATMOSPHERE + max_pressure_protection = 15 * ONE_ATMOSPHERE /obj/item/clothing/suit/space/void/engineering name = "engineering voidsuit" @@ -15,6 +17,8 @@ slowdown = 1 armor = list(melee = 40, bullet = 5, laser = 20, energy = 5, bomb = 35, bio = 100, rad = 80) allowed = list(/obj/item/device/flashlight,/obj/item/weapon/tank,/obj/item/device/suit_cooling_unit,/obj/item/weapon/storage/bag/ore,/obj/item/device/t_scanner,/obj/item/weapon/pickaxe, /obj/item/weapon/rcd) + min_pressure_protection = 0 * ONE_ATMOSPHERE + max_pressure_protection = 15 * ONE_ATMOSPHERE //Engineering HAZMAT Voidsuit @@ -219,6 +223,8 @@ armor = list(melee = 40, bullet = 5, laser = 20, energy = 5, bomb = 35, bio = 100, rad = 50) max_heat_protection_temperature = FIRE_HELMET_MAX_HEAT_PROTECTION_TEMPERATURE light_overlay = "helmet_light_dual" + min_pressure_protection = 0 * ONE_ATMOSPHERE + max_pressure_protection = 20* ONE_ATMOSPHERE /obj/item/clothing/suit/space/void/atmos name = "atmos voidsuit" @@ -227,6 +233,8 @@ item_state_slots = list(slot_r_hand_str = "atmos_voidsuit", slot_l_hand_str = "atmos_voidsuit") armor = list(melee = 40, bullet = 5, laser = 20, energy = 5, bomb = 35, bio = 100, rad = 50) max_heat_protection_temperature = FIRESUIT_MAX_HEAT_PROTECTION_TEMPERATURE + min_pressure_protection = 0 * ONE_ATMOSPHERE + max_pressure_protection = 20* ONE_ATMOSPHERE //Atmospherics Surplus Voidsuit diff --git a/code/modules/clothing/spacesuits/void/void.dm b/code/modules/clothing/spacesuits/void/void.dm index d755540b91..f1d12a9982 100644 --- a/code/modules/clothing/spacesuits/void/void.dm +++ b/code/modules/clothing/spacesuits/void/void.dm @@ -7,6 +7,8 @@ heat_protection = HEAD armor = list(melee = 40, bullet = 5, laser = 20,energy = 5, bomb = 35, bio = 100, rad = 20) max_heat_protection_temperature = SPACE_SUIT_MAX_HEAT_PROTECTION_TEMPERATURE + min_pressure_protection = 0 * ONE_ATMOSPHERE + max_pressure_protection = 10 * ONE_ATMOSPHERE // flags_inv = HIDEEARS|BLOCKHAIR @@ -37,6 +39,8 @@ allowed = list(/obj/item/device/flashlight,/obj/item/weapon/tank,/obj/item/device/suit_cooling_unit) heat_protection = UPPER_TORSO|LOWER_TORSO|LEGS|FEET|ARMS|HANDS max_heat_protection_temperature = SPACE_SUIT_MAX_HEAT_PROTECTION_TEMPERATURE + min_pressure_protection = 0 * ONE_ATMOSPHERE + max_pressure_protection = 10 * ONE_ATMOSPHERE species_restricted = list("Human", SPECIES_SKRELL, "Promethean") sprite_sheets_refit = list( @@ -236,12 +240,12 @@ playsound(src, W.usesound, 50, 1) src.cooler = null else if(choice == helmet) - to_chat(user, "You detatch \the [helmet] from \the [src]'s helmet mount.") + to_chat(user, "You detach \the [helmet] from \the [src]'s helmet mount.") helmet.forceMove(get_turf(src)) playsound(src, W.usesound, 50, 1) src.helmet = null else if(choice == boots) - to_chat(user, "You detatch \the [boots] from \the [src]'s boot mounts.") + to_chat(user, "You detach \the [boots] from \the [src]'s boot mounts.") boots.forceMove(get_turf(src)) playsound(src, W.usesound, 50, 1) src.boots = null @@ -291,4 +295,4 @@ cooler = W return - ..() \ No newline at end of file + ..() diff --git a/code/modules/clothing/spacesuits/void/void_vr.dm b/code/modules/clothing/spacesuits/void/void_vr.dm index b0842df24f..4b15e28795 100644 --- a/code/modules/clothing/spacesuits/void/void_vr.dm +++ b/code/modules/clothing/spacesuits/void/void_vr.dm @@ -94,7 +94,7 @@ SPECIES_ZORREN_FLAT, SPECIES_ZORREN_HIGH ) -/obj/item/clothing/suit/space/void/explorer/initialize() +/obj/item/clothing/suit/space/void/explorer/Initialize() . = ..() sprite_sheets += sprite_sheets_refit @@ -118,6 +118,6 @@ SPECIES_ZORREN_FLAT, SPECIES_ZORREN_HIGH ) -/obj/item/clothing/head/helmet/space/void/explorer/initialize() +/obj/item/clothing/head/helmet/space/void/explorer/Initialize() . = ..() sprite_sheets += sprite_sheets_refit diff --git a/code/modules/clothing/spacesuits/void/zaddat.dm b/code/modules/clothing/spacesuits/void/zaddat.dm new file mode 100644 index 0000000000..cbf08d8c71 --- /dev/null +++ b/code/modules/clothing/spacesuits/void/zaddat.dm @@ -0,0 +1,107 @@ +/obj/item/clothing/head/helmet/space/void/zaddat + name = "\improper Hegemony Shroud helmet" + desc = "A Hegemony-designed utilitarian environment suit helmet, still common among the Spacer Zaddat." + icon_state = "zaddat_hegemony" + item_state_slots = list(slot_r_hand_str = "syndicate", slot_l_hand_str = "syndicate") + heat_protection = HEAD + body_parts_covered = HEAD|FACE|EYES + slowdown = 0.5 + armor = list(melee = 0, bullet = 0, laser = 0, energy = 0, bomb = 0, bio = 100, rad = 70) //realistically would have some armor but balance. + siemens_coefficient = 1 + + species_restricted = list(SPECIES_ZADDAT, SPECIES_PROMETHEAN) //on request from maintainer + +/obj/item/clothing/suit/space/void/zaddat + name = "\improper Hegemony Shroud" + desc = "A Hegemony environment suit, still favored by the Spacer Zaddat because of its durability and ease of manufacture." + slowdown = 1 + armor = list(melee = 0, bullet = 0, laser = 0,energy = 0, bomb = 0, bio = 100, rad = 70) + siemens_coefficient = 1 + allowed = list(/obj/item/device/flashlight,/obj/item/weapon/tank) + icon_state = "zaddat_hegemony" + helmet = new/obj/item/clothing/head/helmet/space/void/zaddat //shrouds come with helmets built-in + var/has_been_customized = FALSE + + species_restricted = list(SPECIES_ZADDAT, SPECIES_PROMETHEAN) + + breach_threshold = 12 + +/obj/item/clothing/suit/space/void/zaddat/verb/custom_suit() + set name = "Customize Shroud" + set category = "Object" + set desc = "Pick an appearence for your Shroud." + + var/mob/M = usr + var/suit_style = null + + if(has_been_customized) + to_chat(M, "This Shroud has already been customized!") + return 0 + + suit_style = input(M, "Which suit style would you like?") in list("Engineer", "Spacer", "Knight", "Fashion", "Bishop", "Hegemony", "Rugged") + switch(suit_style) + if("Engineer") + name = "\improper Engineer's Guild Shroud" + desc = "This rugged Shroud was created by the Xozi Engineering Guild." + icon_state = "zaddat_engie" + item_state = "zaddat_engie" + if(helmet) + helmet.name = "\improper Engineer's Guild Shroud helmet" + helmet.desc = "A Shroud helmet designed for good visibility in low-light environments." + helmet.icon_state = "zaddat_engie" + helmet.item_state = "zaddat_engie" + if("Spacer") + name = "\improper Spacer's Guild Shroud" + desc = "The blue plastic Shroud worn by members of the Zaddat Spacer's Guild." + icon_state = "zaddat_spacer" + item_state = "zaddat_spacer" + if(helmet) + helmet.name = "\improper Spacer's Guild Shroud helmet" + helmet.desc = "A cool plastic-and-glass helmet designed after popular adventure fiction." + helmet.icon_state = "zaddat_spacer" + helmet.item_state = "zaddat_spacer" + if("Knight") + name = "\improper Knight's Shroud" + desc = "This distinctive steel-plated Shroud was popularized by the Noble Guild." + icon_state = "zaddat_knight" + item_state = "zaddat_knight" + if(helmet) + helmet.name = "\improper Knight's Shroud helm" + helmet.desc = "This spaceworthy helmet was patterned after the knight's helmets used by Zaddat before their discovery by the Unathi." + helmet.icon_state = "zaddat_knight" + helmet.item_state = "zaddat_knight" + if("Fashion") + name = "\improper Avazi House Shroud" + desc = "The designers of the Avazi Fashion House are among the most renowned in Zaddat society, and their Shroud designs second to none." + icon_state = "zaddat_fashion" + item_state = "zaddat_fashion" + if(helmet) + helmet.name = "\improper Avazi House Shroud helmet" + helmet.desc = "The Avazi Fashion House recently designed this popular Shroud helmet, designed to pleasingly frame a Zaddat's face." + helmet.icon_state = "zaddat_fashion" + helmet.item_state = "zaddat_fashion" + if("Bishop") + name = "\improper Bishop-patterned Shroud" + desc = "The bold designers of the Dzaz Fashion House chose to make this Bishop-themed Shroud design as a commentary on the symbiotic nature of Vanax and human culture. Allegedly." + icon_state = "zaddat_bishop" + item_state = "zaddat_bishop" + if(helmet) + helmet.name = "\improper Bishop-patterned Shroud helmet" + helmet.desc = "The Shroud helmet that inspired a dozen lawsuits." + helmet.icon_state = "zaddat_bishop" + helmet.item_state = "zaddat_bishop" + if("Rugged") + name = "rugged Shroud" + desc = "This Shroud was patterned after from First Contact era human voidsuits." + icon_state = "zaddat_rugged" + item_state = "zaddat_rugged" + if(helmet) + helmet.name = "rugged Shroud helmet" + helmet.desc = "Supposedly, this helmet should make humans more comfortable and familiar with the Zaddat." + helmet.icon_state = "zaddat_rugged" + helmet.item_state = "zaddat_rugged" + + to_chat(M, "You finish customizing your Shroud. Looking good!") + has_been_customized = TRUE + M.regenerate_icons() + return 1 \ No newline at end of file diff --git a/code/modules/clothing/suits/aliens/seromi.dm b/code/modules/clothing/suits/aliens/seromi.dm index 4e3e081a7b..2240c70ac8 100644 --- a/code/modules/clothing/suits/aliens/seromi.dm +++ b/code/modules/clothing/suits/aliens/seromi.dm @@ -134,106 +134,107 @@ item_state = "tesh_cloak_brg" /obj/item/clothing/suit/storage/seromi/cloak/jobs + icon = 'icons/mob/species/seromi/deptcloak.dmi' icon_override = 'icons/mob/species/seromi/deptcloak.dmi' /obj/item/clothing/suit/storage/seromi/cloak/jobs/cargo - name = "Cargo cloak" - desc = "A soft Teshari cloak made for the Cargo department" + name = "cargo cloak" + desc = "A soft Teshari cloak made for the Cargo department" icon_state = "tesh_cloak_car" item_state = "tesh_cloak_car" /obj/item/clothing/suit/storage/seromi/cloak/jobs/mining - name = "Mining cloak" - desc = "A soft Teshari cloak made for Mining" + name = "mining cloak" + desc = "A soft Teshari cloak made for Mining" icon_state = "tesh_cloak_mine" item_state = "tesh_cloak_mine" /obj/item/clothing/suit/storage/seromi/cloak/jobs/command - name = "Command cloak" - desc = "A soft Teshari cloak made for the Command department" + name = "command cloak" + desc = "A soft Teshari cloak made for the Command department" icon_state = "tesh_cloak_comm" item_state = "tesh_cloak_comm" /obj/item/clothing/suit/storage/seromi/cloak/jobs/ce - name = "Cheif Engineer's cloak" - desc = "A soft Teshari cloak made the Chief Engineer" + name = "cheif engineer cloak" + desc = "A soft Teshari cloak made the Chief Engineer" icon_state = "tesh_cloak_ce" item_state = "tesh_cloak_ce" /obj/item/clothing/suit/storage/seromi/cloak/jobs/eningeer - name = "Engineering cloak" - desc = "A soft Teshari cloak made for the Engineering department" + name = "engineering cloak" + desc = "A soft Teshari cloak made for the Engineering department" icon_state = "tesh_cloak_engie" item_state = "tesh_cloak_engie" /obj/item/clothing/suit/storage/seromi/cloak/jobs/atmos - name = "Atmos Tech cloak" - desc = "A soft Teshari cloak made for the Atmos Tech" + name = "atmospherics cloak" + desc = "A soft Teshari cloak made for the Atmospheric Technician" icon_state = "tesh_cloak_atmos" item_state = "tesh_cloak_atmos" /obj/item/clothing/suit/storage/seromi/cloak/jobs/cmo - name = "Chief Medical Officer cloak" - desc = "A soft Teshari cloak made the Cheif Medical Officer" + name = "chief medical officer cloak" + desc = "A soft Teshari cloak made the Cheif Medical Officer" icon_state = "tesh_cloak_cmo" item_state = "tesh_cloak_cmo" /obj/item/clothing/suit/storage/seromi/cloak/jobs/medical - name = "Medical cloak" - desc = "A soft Teshari cloak made for the Medical department" + name = "medical cloak" + desc = "A soft Teshari cloak made for the Medical department" icon_state = "tesh_cloak_doc" item_state = "tesh_cloak_doc" /obj/item/clothing/suit/storage/seromi/cloak/jobs/chemistry - name = "Chemistry cloak" - desc = "A soft Teshari cloak made for the Chemist" + name = "chemist cloak" + desc = "A soft Teshari cloak made for the Chemist" icon_state = "tesh_cloak_chem" item_state = "tesh_cloak_chem" /obj/item/clothing/suit/storage/seromi/cloak/jobs/viro - name = "Virologist cloak" - desc = "A soft Teshari cloak made for the Virologist" + name = "virologist cloak" + desc = "A soft Teshari cloak made for the Virologist" icon_state = "tesh_cloak_viro" item_state = "tesh_cloak_viro" /obj/item/clothing/suit/storage/seromi/cloak/jobs/para - name = "Paramedic cloak" - desc = "A soft Teshari cloak made for the Paramedic" + name = "paramedic cloak" + desc = "A soft Teshari cloak made for the Paramedic" icon_state = "tesh_cloak_para" item_state = "tesh_cloak_para" /obj/item/clothing/suit/storage/seromi/cloak/jobs/sci - name = "Scientist cloak" - desc = "A soft Teshari cloak made for the Science department" + name = "scientist cloak" + desc = "A soft Teshari cloak made for the Science department" icon_state = "tesh_cloak_sci" item_state = "tesh_cloak_sci" /obj/item/clothing/suit/storage/seromi/cloak/jobs/robo - name = "Roboticist cloak" - desc = "A soft Teshari cloak made for the Roboticist" + name = "roboticist cloak" + desc = "A soft Teshari cloak made for the Roboticist" icon_state = "tesh_cloak_robo" item_state = "tesh_cloak_robo" /obj/item/clothing/suit/storage/seromi/cloak/jobs/sec - name = "Security cloak" - desc = "A soft Teshari cloak made for the Security department" + name = "security cloak" + desc = "A soft Teshari cloak made for the Security department" icon_state = "tesh_cloak_sec" item_state = "tesh_cloak_sec" /obj/item/clothing/suit/storage/seromi/cloak/jobs/qm - name = "Quarter master's cloak" - desc = "A soft Teshari cloak made for the Quarter Master (Who is a real head btw)" + name = "quartermaster cloak" + desc = "A soft Teshari cloak made for the Quartermaster" icon_state = "tesh_cloak_qm" item_state = "tesh_cloak_qm" /obj/item/clothing/suit/storage/seromi/cloak/jobs/service - name = "Service cloak" - desc = "A soft Teshari cloak made for the Service department" - icon_state = "tesh_uniform_serv" - item_state = "tesh_uniform_serv" + name = "service cloak" + desc = "A soft Teshari cloak made for the Service department" + icon_state = "tesh_cloak_serv" + item_state = "tesh_cloak_serv" /obj/item/clothing/suit/storage/seromi/cloak/jobs/iaa - name = "Iaa cloak" - desc = "A soft Teshari cloak made for the Internal Affairs Agent" - icon_state = "tesh_uniform_iaa" - item_state = "tesh_uniform_iaa" \ No newline at end of file + name = "internal affairs cloak" + desc = "A soft Teshari cloak made for the Internal Affairs Agent" + icon_state = "tesh_cloak_iaa" + item_state = "tesh_cloak_iaa" \ No newline at end of file diff --git a/code/modules/clothing/suits/armor.dm b/code/modules/clothing/suits/armor.dm index eb1a04a2e0..db33ec9662 100644 --- a/code/modules/clothing/suits/armor.dm +++ b/code/modules/clothing/suits/armor.dm @@ -126,7 +126,7 @@ item_state_slots = list(slot_r_hand_str = "swat", slot_l_hand_str = "swat") gas_transfer_coefficient = 0.01 permeability_coefficient = 0.01 - item_flags = STOPPRESSUREDAMAGE | THICKMATERIAL + item_flags = THICKMATERIAL body_parts_covered = UPPER_TORSO|LOWER_TORSO|LEGS|FEET|ARMS allowed = list(/obj/item/weapon/gun,/obj/item/ammo_magazine,/obj/item/ammo_casing,/obj/item/weapon/melee/baton,/obj/item/weapon/handcuffs,/obj/item/weapon/tank/emergency/oxygen,/obj/item/clothing/head/helmet) slowdown = 1 @@ -135,6 +135,8 @@ flags_inv = HIDEGLOVES|HIDESHOES|HIDEJUMPSUIT|HIDETIE|HIDEHOLSTER cold_protection = UPPER_TORSO | LOWER_TORSO | LEGS | FEET | ARMS | HANDS min_cold_protection_temperature = SPACE_SUIT_MIN_COLD_PROTECTION_TEMPERATURE + min_pressure_protection = 0 * ONE_ATMOSPHERE + max_pressure_protection = 20* ONE_ATMOSPHERE siemens_coefficient = 0.6 diff --git a/code/modules/clothing/suits/hooded.dm b/code/modules/clothing/suits/hooded.dm index 5c861da38d..14bb843c9a 100644 --- a/code/modules/clothing/suits/hooded.dm +++ b/code/modules/clothing/suits/hooded.dm @@ -96,7 +96,8 @@ min_cold_protection_temperature = SPACE_SUIT_MIN_COLD_PROTECTION_TEMPERATURE armor = list(melee = 0, bullet = 0, laser = 0,energy = 0, bomb = 0, bio = 10, rad = 0) hoodtype = /obj/item/clothing/head/hood/winter - allowed = list (/obj/item/weapon/pen, /obj/item/weapon/paper, /obj/item/device/flashlight,/obj/item/weapon/tank/emergency/oxygen, /obj/item/weapon/storage/fancy/cigarettes, /obj/item/weapon/storage/box/matches, /obj/item/weapon/reagent_containers/food/drinks/flask) + allowed = list (/obj/item/weapon/pen, /obj/item/weapon/paper, /obj/item/device/flashlight,/obj/item/weapon/tank/emergency/oxygen, /obj/item/weapon/storage/fancy/cigarettes, + /obj/item/weapon/storage/box/matches, /obj/item/weapon/reagent_containers/food/drinks/flask, /obj/item/device/suit_cooling_unit) /obj/item/clothing/suit/storage/hooded/wintercoat/captain name = "colony director's winter coat" @@ -104,6 +105,10 @@ item_state_slots = list(slot_r_hand_str = "coatcaptain", slot_l_hand_str = "coatcaptain") armor = list(melee = 20, bullet = 15, laser = 20, energy = 10, bomb = 15, bio = 0, rad = 0) hoodtype = /obj/item/clothing/head/hood/winter/captain + allowed = list (/obj/item/weapon/pen, /obj/item/weapon/paper, /obj/item/device/flashlight,/obj/item/weapon/tank/emergency/oxygen, /obj/item/weapon/storage/fancy/cigarettes, + /obj/item/weapon/storage/box/matches, /obj/item/weapon/reagent_containers/food/drinks/flask, /obj/item/device/suit_cooling_unit, /obj/item/weapon/gun/energy, + /obj/item/weapon/reagent_containers/spray/pepper,/obj/item/weapon/gun/projectile,/obj/item/ammo_magazine,/obj/item/ammo_casing,/obj/item/weapon/melee/baton, + /obj/item/weapon/handcuffs,/obj/item/clothing/head/helmet) /obj/item/clothing/suit/storage/hooded/wintercoat/security name = "security winter coat" @@ -111,6 +116,10 @@ item_state_slots = list(slot_r_hand_str = "coatsecurity", slot_l_hand_str = "coatsecurity") armor = list(melee = 25, bullet = 20, laser = 20, energy = 15, bomb = 20, bio = 0, rad = 0) hoodtype = /obj/item/clothing/head/hood/winter/security + allowed = list (/obj/item/weapon/pen, /obj/item/weapon/paper, /obj/item/device/flashlight,/obj/item/weapon/tank/emergency/oxygen, /obj/item/weapon/storage/fancy/cigarettes, + /obj/item/weapon/storage/box/matches, /obj/item/weapon/reagent_containers/food/drinks/flask, /obj/item/device/suit_cooling_unit, /obj/item/weapon/gun/energy, + /obj/item/weapon/reagent_containers/spray/pepper,/obj/item/weapon/gun/projectile,/obj/item/ammo_magazine,/obj/item/ammo_casing,/obj/item/weapon/melee/baton, + /obj/item/weapon/handcuffs,/obj/item/clothing/head/helmet) /obj/item/clothing/suit/storage/hooded/wintercoat/medical name = "medical winter coat" @@ -118,6 +127,11 @@ item_state_slots = list(slot_r_hand_str = "coatmedical", slot_l_hand_str = "coatmedical") armor = list(melee = 0, bullet = 0, laser = 0,energy = 0, bomb = 0, bio = 50, rad = 0) hoodtype = /obj/item/clothing/head/hood/winter/medical + allowed = list (/obj/item/weapon/pen, /obj/item/weapon/paper, /obj/item/device/flashlight,/obj/item/weapon/tank/emergency/oxygen, /obj/item/weapon/storage/fancy/cigarettes, + /obj/item/weapon/storage/box/matches, /obj/item/weapon/reagent_containers/food/drinks/flask, /obj/item/device/suit_cooling_unit, /obj/item/device/analyzer,/obj/item/stack/medical, + /obj/item/weapon/dnainjector,/obj/item/weapon/reagent_containers/dropper,/obj/item/weapon/reagent_containers/syringe,/obj/item/weapon/reagent_containers/hypospray, + /obj/item/device/healthanalyzer,/obj/item/weapon/reagent_containers/glass/bottle,/obj/item/weapon/reagent_containers/glass/beaker, + /obj/item/weapon/reagent_containers/pill,/obj/item/weapon/storage/pill_bottle) /obj/item/clothing/suit/storage/hooded/wintercoat/science name = "science winter coat" @@ -125,6 +139,11 @@ item_state_slots = list(slot_r_hand_str = "coatscience", slot_l_hand_str = "coatscience") armor = list(melee = 0, bullet = 0, laser = 0,energy = 0, bomb = 10, bio = 0, rad = 0) hoodtype = /obj/item/clothing/head/hood/winter/science + allowed = list (/obj/item/weapon/pen, /obj/item/weapon/paper, /obj/item/device/flashlight,/obj/item/weapon/tank/emergency/oxygen, /obj/item/weapon/storage/fancy/cigarettes, + /obj/item/weapon/storage/box/matches, /obj/item/weapon/reagent_containers/food/drinks/flask, /obj/item/device/suit_cooling_unit, /obj/item/device/analyzer,/obj/item/stack/medical, + /obj/item/weapon/dnainjector,/obj/item/weapon/reagent_containers/dropper,/obj/item/weapon/reagent_containers/syringe,/obj/item/weapon/reagent_containers/hypospray, + /obj/item/device/healthanalyzer,/obj/item/weapon/reagent_containers/glass/bottle,/obj/item/weapon/reagent_containers/glass/beaker, + /obj/item/weapon/reagent_containers/pill,/obj/item/weapon/storage/pill_bottle) /obj/item/clothing/suit/storage/hooded/wintercoat/engineering name = "engineering winter coat" @@ -132,6 +151,10 @@ item_state_slots = list(slot_r_hand_str = "coatengineer", slot_l_hand_str = "coatengineer") armor = list(melee = 0, bullet = 0, laser = 0, energy = 0, bomb = 0, bio = 0, rad = 20) hoodtype = /obj/item/clothing/head/hood/winter/engineering + allowed = list (/obj/item/weapon/pen, /obj/item/weapon/paper, /obj/item/device/flashlight,/obj/item/weapon/tank/emergency/oxygen, /obj/item/weapon/storage/fancy/cigarettes, + /obj/item/weapon/storage/box/matches, /obj/item/weapon/reagent_containers/food/drinks/flask, /obj/item/device/suit_cooling_unit, /obj/item/device/analyzer, /obj/item/device/flashlight, + /obj/item/device/multitool, /obj/item/device/pipe_painter, /obj/item/device/radio, /obj/item/device/t_scanner, /obj/item/weapon/tool/crowbar, /obj/item/weapon/tool/screwdriver, + /obj/item/weapon/weldingtool, /obj/item/weapon/tool/wirecutters, /obj/item/weapon/tool/wrench, /obj/item/weapon/tank/emergency/oxygen, /obj/item/clothing/mask/gas, /obj/item/taperoll/engineering) /obj/item/clothing/suit/storage/hooded/wintercoat/engineering/atmos name = "atmospherics winter coat" @@ -144,6 +167,9 @@ icon_state = "coathydro" item_state_slots = list(slot_r_hand_str = "coathydro", slot_l_hand_str = "coathydro") hoodtype = /obj/item/clothing/head/hood/winter/hydro + allowed = list (/obj/item/weapon/pen, /obj/item/weapon/paper, /obj/item/device/flashlight,/obj/item/weapon/tank/emergency/oxygen, /obj/item/weapon/storage/fancy/cigarettes, + /obj/item/weapon/storage/box/matches, /obj/item/weapon/reagent_containers/food/drinks/flask, /obj/item/device/suit_cooling_unit, /obj/item/weapon/reagent_containers/spray/plantbgone, + /obj/item/device/analyzer/plant_analyzer, /obj/item/seeds, /obj/item/weapon/reagent_containers/glass/bottle, /obj/item/weapon/material/minihoe) /obj/item/clothing/suit/storage/hooded/wintercoat/cargo name = "cargo winter coat" @@ -157,6 +183,8 @@ item_state_slots = list(slot_r_hand_str = "coatminer", slot_l_hand_str = "coatminer") armor = list(melee = 10, bullet = 0, laser = 0, energy = 0, bomb = 0, bio = 0, rad = 0) hoodtype = /obj/item/clothing/head/hood/winter/miner + allowed = list (/obj/item/weapon/pen, /obj/item/weapon/paper, /obj/item/device/flashlight, /obj/item/weapon/storage/fancy/cigarettes, /obj/item/weapon/storage/box/matches, + /obj/item/weapon/reagent_containers/food/drinks/flask, /obj/item/device/suit_cooling_unit, /obj/item/weapon/tank, /obj/item/device/radio, /obj/item/weapon/pickaxe, /obj/item/weapon/storage/bag/ore) /obj/item/clothing/suit/storage/hooded/explorer name = "explorer suit" diff --git a/code/modules/clothing/suits/miscellaneous.dm b/code/modules/clothing/suits/miscellaneous.dm index eeca9d220b..0f8b999b4c 100644 --- a/code/modules/clothing/suits/miscellaneous.dm +++ b/code/modules/clothing/suits/miscellaneous.dm @@ -52,7 +52,6 @@ name = "cyborg suit" desc = "Suit for a cyborg costume." icon_state = "death" - flags = CONDUCT fire_resist = T0C+5200 flags_inv = HIDEGLOVES|HIDESHOES|HIDEJUMPSUIT|HIDETIE|HIDEHOLSTER @@ -224,6 +223,8 @@ body_parts_covered = UPPER_TORSO|LOWER_TORSO|LEGS|FEET|ARMS|HANDS flags_inv = HIDEGLOVES|HIDESHOES|HIDEJUMPSUIT|HIDETAIL|HIDETIE|HIDEHOLSTER + var/resist_time = 4800 // Eight minutes. + /obj/item/clothing/suit/straight_jacket/attack_hand(mob/living/user as mob) if(ishuman(user)) var/mob/living/carbon/human/H = user @@ -255,6 +256,11 @@ obj/item/clothing/suit/kimono icon_state = "kimono" addblends = "kimono_a" +obj/item/clothing/suit/kamishimo + name = "kamishimo" + desc = "Traditional Japanese menswear." + icon_state = "kamishimo" + /* * coats */ diff --git a/code/modules/clothing/suits/utility.dm b/code/modules/clothing/suits/utility.dm index 2dbda7a615..0ecbe0390d 100644 --- a/code/modules/clothing/suits/utility.dm +++ b/code/modules/clothing/suits/utility.dm @@ -20,10 +20,13 @@ allowed = list(/obj/item/device/flashlight,/obj/item/weapon/tank/emergency/oxygen,/obj/item/weapon/extinguisher) slowdown = 1.0 flags_inv = HIDEGLOVES|HIDESHOES|HIDEJUMPSUIT|HIDETAIL|HIDETIE|HIDEHOLSTER - item_flags = STOPPRESSUREDAMAGE + item_flags = 0 heat_protection = UPPER_TORSO|LOWER_TORSO|LEGS|FEET|ARMS|HANDS max_heat_protection_temperature = FIRESUIT_MAX_HEAT_PROTECTION_TEMPERATURE cold_protection = UPPER_TORSO | LOWER_TORSO | LEGS | FEET | ARMS | HANDS + min_pressure_protection = 0.2 * ONE_ATMOSPHERE + max_pressure_protection = 20 * ONE_ATMOSPHERE + /obj/item/clothing/suit/fire/firefighter icon_state = "firesuit" diff --git a/code/modules/clothing/under/accessories/accessory.dm b/code/modules/clothing/under/accessories/accessory.dm index e7b54b7c33..2efff3b0f8 100644 --- a/code/modules/clothing/under/accessories/accessory.dm +++ b/code/modules/clothing/under/accessories/accessory.dm @@ -410,3 +410,21 @@ ..(newloc, "glass") ..() + +/obj/item/clothing/accessory/halfcape + name = "half cape" + desc = "A tasteful half-cape, suitible for European nobles and retro anime protagonists." + icon_state = "halfcape" + slot = ACCESSORY_SLOT_DECOR + +/obj/item/clothing/accessory/fullcape + name = "full cape" + desc = "A gaudy full cape. You're thinking about wearing it, aren't you?" + icon_state = "fullcape" + slot = ACCESSORY_SLOT_DECOR + +/obj/item/clothing/accessory/sash + name = "sash" + desc = "A plain, unadorned sash." + icon_state = "sash" + slot = ACCESSORY_SLOT_OVER \ No newline at end of file diff --git a/code/modules/clothing/under/accessories/accessory_vr.dm b/code/modules/clothing/under/accessories/accessory_vr.dm index 25148b8813..cebf3ee3b8 100644 --- a/code/modules/clothing/under/accessories/accessory_vr.dm +++ b/code/modules/clothing/under/accessories/accessory_vr.dm @@ -40,9 +40,12 @@ if(!jingled) usr.audible_message("[usr] jingles the [src]'s bell.") jingled = 1 - schedule_callback_in(5 SECONDS, VARSET_CALLBACK(src, jingled, 0)) + addtimer(CALLBACK(src, .proc/jingledreset), 50) return +/obj/item/clothing/accessory/collar/bell/proc/jingledreset() + jingled = 0 + /obj/item/clothing/accessory/collar/shock name = "Shock collar" desc = "A collar used to ease hungry predators." @@ -54,7 +57,7 @@ var/code = 2 var/datum/radio_frequency/radio_connection -/obj/item/clothing/accessory/collar/shock/New() +/obj/item/clothing/accessory/collar/shock/Initialize() ..() radio_connection = radio_controller.add_object(src, frequency, RADIO_CHAT) // Makes it so you don't need to change the frequency off of default for it to work. @@ -178,6 +181,8 @@ icon_state = "collar_holo" item_state = "collar_holo_overlay" overlay_state = "collar_holo_overlay" + matter = list(DEFAULT_WALL_MATERIAL = 50) + /obj/item/clothing/accessory/collar/attack_self(mob/user as mob) if(istype(src,/obj/item/clothing/accessory/collar/holo)) diff --git a/code/modules/clothing/under/accessories/clothing.dm b/code/modules/clothing/under/accessories/clothing.dm index 065aedb6ac..29057e8469 100644 --- a/code/modules/clothing/under/accessories/clothing.dm +++ b/code/modules/clothing/under/accessories/clothing.dm @@ -30,7 +30,6 @@ desc = "Lucky suit jacket." icon_state = "checkered_jacket" - /obj/item/clothing/accessory/chaps name = "brown chaps" desc = "A pair of loose, brown leather chaps." @@ -342,3 +341,23 @@ name = "Christmas turtleneck" desc = "A really cheesy holiday sweater, it actually kinda itches." icon_state = "turtleneck_winterred" + +/obj/item/clothing/accessory/cowledvest + name = "cowled vest" + desc = "A body warmer for the 26th century." + icon_state = "cowled_vest" + +/obj/item/clothing/accessory/asymmetric + name = "blue asymmetrical jacket" + desc = "Insultingly avant-garde in prussian blue." + icon_state = "asym_blue" + +/obj/item/clothing/accessory/asymmetric/purple + name = "purple asymmetrical jacket" + desc = "Insultingly avant-garde in mauve." + icon_state = "asym_purple" + +/obj/item/clothing/accessory/asymmetric/green + name = "green asymmetrical jacket" + desc = "Insultingly avant-garde in aqua." + icon_state = "asym_green" \ No newline at end of file diff --git a/code/modules/clothing/under/jobs/engineering.dm b/code/modules/clothing/under/jobs/engineering.dm index b1131b100b..f57cc95ce8 100644 --- a/code/modules/clothing/under/jobs/engineering.dm +++ b/code/modules/clothing/under/jobs/engineering.dm @@ -19,6 +19,13 @@ armor = list(melee = 0, bullet = 0, laser = 0,energy = 0, bomb = 0, bio = 0, rad = 10) rolled_sleeves = 0 +/obj/item/clothing/under/rank/engineer/turtleneck + name = "engineering turtleneck" + desc = "It's a stylish turtleneck with minor radiation shielding. Nobody's going to see it behind the voidsuit, though." + icon_state = "turtle_eng" + rolled_down = -1 + rolled_sleeves = -1 + /obj/item/clothing/under/rank/roboticist desc = "It's a slimming black jumpsuit with reinforced seams; great for industrial work." name = "roboticist's jumpsuit" diff --git a/code/modules/clothing/under/jobs/medsci.dm b/code/modules/clothing/under/jobs/medsci.dm index b958d18840..44fae55c92 100644 --- a/code/modules/clothing/under/jobs/medsci.dm +++ b/code/modules/clothing/under/jobs/medsci.dm @@ -30,6 +30,14 @@ armor = list(melee = 0, bullet = 0, laser = 0,energy = 0, bomb = 10, bio = 0, rad = 0) rolled_sleeves = 0 +/obj/item/clothing/under/rank/scientist/turtleneck + name = "science turtleneck" + desc = "It's a stylish turtleneck weaved with an explosive-resistant, comfortable mesh. You don't have to look like a dork to be a dork." + icon_state = "turtle_sci" + item_state_slots = list(slot_r_hand_str = "purple", slot_l_hand_str = "purple") + rolled_down = -1 + rolled_sleeves = -1 + /obj/item/clothing/under/rank/chemist desc = "It's made of a special fiber that gives special protection against biohazards. It has a chemist rank stripe on it." name = "chemist's jumpsuit" @@ -106,6 +114,13 @@ armor = list(melee = 0, bullet = 0, laser = 0,energy = 0, bomb = 0, bio = 10, rad = 0) rolled_sleeves = 0 +/obj/item/clothing/under/rank/medical/turtleneck + name = "medical turtleneck" + desc = "It's a stylish turtleneck made of bioresistant fiber. Look good, save lives- what more could you want?" + icon_state = "turtle_med" + rolled_down = -1 + rolled_sleeves = -1 + /obj/item/clothing/under/rank/medical/paramedic name = "short sleeve medical jumpsuit" desc = "It's made of a special fiber that provides minor protection against biohazards. This one has a cross on the chest denoting that the wearer is trained medical personnel." diff --git a/code/modules/clothing/under/jobs/security.dm b/code/modules/clothing/under/jobs/security.dm index 9680de4884..c9546fad06 100644 --- a/code/modules/clothing/under/jobs/security.dm +++ b/code/modules/clothing/under/jobs/security.dm @@ -26,6 +26,13 @@ siemens_coefficient = 0.9 rolled_sleeves = 0 +/obj/item/clothing/under/rank/security/turtleneck + name = "security turtleneck" + desc = "It's a stylish turtleneck made of a robust nanoweave. Nobody said the Law couldn't be fashionable." + icon_state = "turtle_sec" + rolled_down = -1 + rolled_sleeves = -1 + /obj/item/clothing/under/rank/dispatch name = "dispatcher's uniform" desc = "A dress shirt and khakis with a security patch sewn on." diff --git a/code/modules/clothing/under/miscellaneous.dm b/code/modules/clothing/under/miscellaneous.dm index 07b0f12609..943577663f 100644 --- a/code/modules/clothing/under/miscellaneous.dm +++ b/code/modules/clothing/under/miscellaneous.dm @@ -242,6 +242,11 @@ icon_state = "overalls" item_state_slots = list(slot_r_hand_str = "cargo", slot_l_hand_str = "cargo") +/obj/item/clothing/under/overalls/sleek + name = "sleek overalls" + desc = "A set of modern pleather reinforced overalls." + icon_state = "overalls_sleek" + /obj/item/clothing/under/pirate name = "pirate outfit" desc = "Yarr." @@ -283,6 +288,39 @@ item_state_slots = list(slot_r_hand_str = "yellow", slot_l_hand_str = "yellow") body_parts_covered = LOWER_TORSO +/obj/item/clothing/under/moderncoat + name = "modern wrapped coat" + desc = "The cutting edge of fashion." + icon_state = "moderncoat" + item_state_slots = list(slot_r_hand_str = "red", slot_l_hand_str = "red") + body_parts_covered = UPPER_TORSO|LOWER_TORSO|LEGS + +/obj/item/clothing/under/ascetic + name = "plain ascetic garb" + desc = "Popular with freshly grown vatborn and new age cultists alike." + icon_state = "ascetic" + item_state_slots = list(slot_r_hand_str = "white", slot_l_hand_str = "white") + +/obj/item/clothing/under/robe + name = "black robe" + desc = "A black robe. It gives off uncomfortable cult vibes." + icon_state = "robe" + +/obj/item/clothing/under/whiterobe + name = "white robe" + desc = "A white robe. It gives off uncomfortable cult vibes." + icon_state = "whiterobe" + +/obj/item/clothing/under/goldrobe + name = "black gold-lined robe" + desc = "A gold-lined black robe. It gives off uncomfortable cult vibes, but fancy." + icon_state = "goldrobe" + +/obj/item/clothing/under/whitegoldrobe + name = "white gold-lined robe" + desc = "A gold-lined white robe. It gives off uncomfortable cult vibes, but fancy." + icon_state = "whitegoldrobe" + /* * dress */ @@ -404,6 +442,18 @@ desc = "A western bustle dress from Earth's late 1800's." icon_state = "westernbustle" +/obj/item/clothing/under/dress/sari + name = "red sari" + desc = "A colorful traditional dress originating from India." + icon_state = "sari_red" + item_state_slots = list(slot_r_hand_str = "darkreddress", slot_l_hand_str = "darkreddress") + +/obj/item/clothing/under/dress/sari/green + name = "green sari" + icon_state = "sari_green" + item_state_slots = list(slot_r_hand_str = "dress_green", slot_l_hand_str = "dress_green") + + /* * wedding stuff */ @@ -771,6 +821,7 @@ desc = "A uniform belonging to Major Bill's Transportation, a shipping megacorporation." icon_state = "mbill" worn_state = "mbill" + catalogue_data = list(/datum/category_item/catalogue/information/organization/major_bills) /obj/item/clothing/under/confederacy name = "\improper Confederacy uniform" @@ -852,4 +903,4 @@ /obj/item/clothing/under/cohesion/hazard name = "hazard cohesion suit" desc = "An orange cohesion suit with yellow hazard stripes intended to assist Prometheans in maintaining their form and prevent direct skin exposure." - icon_state = "cohesionsuit_hazard" \ No newline at end of file + icon_state = "cohesionsuit_hazard" diff --git a/code/modules/clothing/under/miscellaneous_vr.dm b/code/modules/clothing/under/miscellaneous_vr.dm index a0fef4879b..0644eb476c 100644 --- a/code/modules/clothing/under/miscellaneous_vr.dm +++ b/code/modules/clothing/under/miscellaneous_vr.dm @@ -85,7 +85,7 @@ H.update_icons() //Just want the matrix transform return - if (!IsInRange(new_size,25,200)) + if (!ISINRANGE(new_size,25,200)) to_chat(H,"The safety features of the uniform prevent you from choosing this size.") return diff --git a/code/modules/clothing/under/pants.dm b/code/modules/clothing/under/pants.dm index c306d842d0..035aac4cf8 100644 --- a/code/modules/clothing/under/pants.dm +++ b/code/modules/clothing/under/pants.dm @@ -189,4 +189,29 @@ /obj/item/clothing/under/pants/baggy/camo name = "baggy camo pants" desc = "A pair of woodland camouflage pants. Probably not the best choice for a space station." - icon_state = "baggy_camopants" \ No newline at end of file + icon_state = "baggy_camopants" + +/obj/item/clothing/under/pants/utility + name = "green utility pants" + desc = "A pair of pleather reinforced green work pants." + icon_state = "workpants_green" + +/obj/item/clothing/under/pants/utility/orange + name = "orange utility pants" + desc = "A pair of pleather reinforced orange work pants." + icon_state = "workpants_orange" + +/obj/item/clothing/under/pants/utility/blue + name = "blue utility pants" + desc = "A pair of pleather reinforced blue work pants." + icon_state = "workpants_blue" + +/obj/item/clothing/under/pants/utility/white + name = "white utility pants" + desc = "A pair of pleather reinforced white work pants." + icon_state = "workpants_white" + +/obj/item/clothing/under/pants/utility/red + name = "red utility pants" + desc = "A pair of pleather reinforced red work pants." + icon_state = "workpants_red" \ No newline at end of file diff --git a/code/modules/clothing/under/xenos/seromi.dm b/code/modules/clothing/under/xenos/seromi.dm index 2c3d550183..8925fccba2 100644 --- a/code/modules/clothing/under/xenos/seromi.dm +++ b/code/modules/clothing/under/xenos/seromi.dm @@ -168,118 +168,119 @@ item_state = "tesh_uniform_brg" /obj/item/clothing/under/seromi/undercoat/jobs + icon = 'icons/mob/species/seromi/deptjacket.dmi' icon_override = 'icons/mob/species/seromi/deptjacket.dmi' /obj/item/clothing/under/seromi/undercoat/jobs/cargo - name = "Cargo undercoat" - desc = "A traditional Teshari garb made for the Cargo department" + name = "cargo undercoat" + desc = "A traditional Teshari garb made for the Cargo department" icon_state = "tesh_uniform_car" item_state = "tesh_uniform_car" /obj/item/clothing/under/seromi/undercoat/jobs/mining - name = "Mining undercoat" - desc = "A traditional Teshari garb made for Mining" + name = "mining undercoat" + desc = "A traditional Teshari garb made for Mining" icon_state = "tesh_uniform_mine" item_state = "tesh_uniform_mine" /obj/item/clothing/under/seromi/undercoat/jobs/command - name = "Command undercoat" - desc = "A traditional Teshari garb made for the Command department" + name = "command undercoat" + desc = "A traditional Teshari garb made for the Command department" icon_state = "tesh_uniform_comm" item_state = "tesh_uniform_comm" /obj/item/clothing/under/seromi/undercoat/jobs/command_g - name = "Command undercoat (gold buttons)" - desc = "A traditional Teshari garb made for the Command department" + name = "command undercoat" + desc = "A traditional Teshari garb made for the Command department. This one has fancier gold buttons" icon_state = "tesh_uniform_comm_g" item_state = "tesh_uniform_comm_g" /obj/item/clothing/under/seromi/undercoat/jobs/ce - name = "Cheif Engineer's undercoat" - desc = "A traditional Teshari garb made for the Chief Engineer" + name = "cheif engineer undercoat" + desc = "A traditional Teshari garb made for the Chief Engineer" icon_state = "tesh_uniform_ce" item_state = "tesh_uniform_ce" /obj/item/clothing/under/seromi/undercoat/jobs/ce_w - name = "Cheif Engineer's undercoat (white)" - desc = "A traditional Teshari garb made for the department" + name = "cheif engineer undercoat" + desc = "A traditional Teshari garb made for the Chief Engineer. This one is white" icon_state = "tesh_uniform_ce_w" item_state = "tesh_uniform_ce_w" /obj/item/clothing/under/seromi/undercoat/jobs/engineer - name = "Engineering undercoat" - desc = "A traditional Teshari garb made for the Engineering department" + name = "engineering undercoat" + desc = "A traditional Teshari garb made for the Engineering department" icon_state = "tesh_uniform_engie" item_state = "tesh_uniform_engie" /obj/item/clothing/under/seromi/undercoat/jobs/atmos - name = "Atmos Tech undercoat" - desc = "A traditional Teshari garb made for the Atmos Tech" + name = "atmospherics undercoat" + desc = "A traditional Teshari garb made for the Atmospheric Technician" icon_state = "tesh_uniform_atmos" item_state = "tesh_uniform_atmos" /obj/item/clothing/under/seromi/undercoat/jobs/cmo - name = "Chief Medical Officer undercoat" - desc = "A traditional Teshari garb made for the Cheif Medical Officer" + name = "chief medical officer undercoat" + desc = "A traditional Teshari garb made for the Cheif Medical Officer" icon_state = "tesh_uniform_cmo" item_state = "tesh_uniform_cmo" /obj/item/clothing/under/seromi/undercoat/jobs/medical - name = "Medical undercoat" - desc = "A traditional Teshari garb made for the Medical department" + name = "medical undercoat" + desc = "A traditional Teshari garb made for the Medical department" icon_state = "tesh_uniform_doc" item_state = "tesh_uniform_doc" /obj/item/clothing/under/seromi/undercoat/jobs/chemistry - name = "Chemistry undercoat" - desc = "A traditional Teshari garb made for the Chemist" + name = "chemist undercoat" + desc = "A traditional Teshari garb made for the Chemist" icon_state = "tesh_uniform_chem" item_state = "tesh_uniform_chem" /obj/item/clothing/under/seromi/undercoat/jobs/viro - name = "Virologist undercoat" - desc = "A traditional Teshari garb made for the Virologist" + name = "virologist undercoat" + desc = "A traditional Teshari garb made for the Virologist" icon_state = "tesh_uniform_viro" item_state = "tesh_uniform_viro" /obj/item/clothing/under/seromi/undercoat/jobs/para - name = "Paramedic undercoat" - desc = "A traditional Teshari garb made for the Paramedic" + name = "paramedic undercoat" + desc = "A traditional Teshari garb made for the Paramedic" icon_state = "tesh_uniform_para" item_state = "tesh_uniform_para" /obj/item/clothing/under/seromi/undercoat/jobs/sci - name = "Scientist undercoat" - desc = "A traditional Teshari garb made for the Science department" + name = "scientist undercoat" + desc = "A traditional Teshari garb made for the Science department" icon_state = "tesh_uniform_sci" item_state = "tesh_uniform_sci" /obj/item/clothing/under/seromi/undercoat/jobs/robo - name = "Roboticist undercoat" - desc = "A traditional Teshari garb made for the Roboticist" + name = "roboticist undercoat" + desc = "A traditional Teshari garb made for the Roboticist" icon_state = "tesh_uniform_robo" item_state = "tesh_uniform_robo" /obj/item/clothing/under/seromi/undercoat/jobs/sec - name = "Security undercoat" - desc = "A traditional Teshari garb made for the Security department" + name = "security undercoat" + desc = "A traditional Teshari garb made for the Security department" icon_state = "tesh_uniform_sec" item_state = "tesh_uniform_sec" /obj/item/clothing/under/seromi/undercoat/jobs/qm - name = "Quarter master's undercoat" - desc = "A traditional Teshari garb made for the Quarter Master (Who is a real head btw)" + name = "quartermaster undercoat" + desc = "A traditional Teshari garb made for the Quartermaster" icon_state = "tesh_uniform_qm" item_state = "tesh_uniform_qm" /obj/item/clothing/under/seromi/undercoat/jobs/service - name = "Service undercoat" - desc = "A traditional Teshari garb made for the Service department" + name = "service undercoat" + desc = "A traditional Teshari garb made for the Service department" icon_state = "tesh_uniform_serv" item_state = "tesh_uniform_serv" /obj/item/clothing/under/seromi/undercoat/jobs/iaa - name = "IAA undercoat" - desc = "A traditional Teshari garb made for the Internal Affairs Agent" + name = "internal affairs undercoat" + desc = "A traditional Teshari garb made for the Internal Affairs Agent" icon_state = "tesh_uniform_iaa" item_state = "tesh_uniform_iaa" diff --git a/code/modules/detectivework/tools/luminol.dm b/code/modules/detectivework/tools/luminol.dm index ddf00a628a..48636370bc 100644 --- a/code/modules/detectivework/tools/luminol.dm +++ b/code/modules/detectivework/tools/luminol.dm @@ -8,6 +8,6 @@ possible_transfer_amounts = list(5,10) volume = 250 -/obj/item/weapon/reagent_containers/spray/luminol/New() - ..() +/obj/item/weapon/reagent_containers/spray/luminol/Initialize() + . = ..() reagents.add_reagent("luminol", 250) \ No newline at end of file diff --git a/code/modules/detectivework/tools/rag.dm b/code/modules/detectivework/tools/rag.dm index 32eb1ad4f4..1f09765a0b 100644 --- a/code/modules/detectivework/tools/rag.dm +++ b/code/modules/detectivework/tools/rag.dm @@ -29,12 +29,12 @@ var/on_fire = 0 var/burn_time = 20 //if the rag burns for too long it turns to ashes -/obj/item/weapon/reagent_containers/glass/rag/New() - ..() +/obj/item/weapon/reagent_containers/glass/rag/Initialize() + . = ..() update_name() /obj/item/weapon/reagent_containers/glass/rag/Destroy() - processing_objects -= src //so we don't continue turning to ash while gc'd + STOP_PROCESSING(SSobj, src) //so we don't continue turning to ash while gc'd return ..() /obj/item/weapon/reagent_containers/glass/rag/attack_self(mob/user as mob) @@ -187,14 +187,14 @@ qdel(src) return - processing_objects += src + START_PROCESSING(SSobj, src) set_light(2, null, "#E38F46") on_fire = 1 update_name() update_icon() /obj/item/weapon/reagent_containers/glass/rag/proc/extinguish() - processing_objects -= src + STOP_PROCESSING(SSobj, src) set_light(0) on_fire = 0 @@ -221,7 +221,7 @@ location.hotspot_expose(700, 5) if(burn_time <= 0) - processing_objects -= src + STOP_PROCESSING(SSobj, src) new /obj/effect/decal/cleanable/ash(location) qdel(src) return diff --git a/code/modules/detectivework/tools/uvlight.dm b/code/modules/detectivework/tools/uvlight.dm index 6997e3a04a..6d14b48087 100644 --- a/code/modules/detectivework/tools/uvlight.dm +++ b/code/modules/detectivework/tools/uvlight.dm @@ -21,12 +21,12 @@ on = !on if(on) set_light(range, 2, "#007fff") - processing_objects |= src + START_PROCESSING(SSobj, src) icon_state = "uv_on" else set_light(0) clear_last_scan() - processing_objects -= src + STOP_PROCESSING(SSobj, src) icon_state = "uv_off" /obj/item/device/uv_light/proc/clear_last_scan() diff --git a/code/modules/economy/Accounts_DB.dm b/code/modules/economy/Accounts_DB.dm index 507a516981..2d6676adec 100644 --- a/code/modules/economy/Accounts_DB.dm +++ b/code/modules/economy/Accounts_DB.dm @@ -143,7 +143,7 @@ var/account_name = href_list["holder_name"] var/starting_funds = max(text2num(href_list["starting_funds"]), 0) - starting_funds = Clamp(starting_funds, 0, station_account.money) // Not authorized to put the station in debt. + starting_funds = CLAMP(starting_funds, 0, station_account.money) // Not authorized to put the station in debt. starting_funds = min(starting_funds, fund_cap) // Not authorized to give more than the fund cap. create_account(account_name, starting_funds, src) diff --git a/code/modules/economy/cash.dm b/code/modules/economy/cash.dm index 8bf5c63cc7..8c67e5394c 100644 --- a/code/modules/economy/cash.dm +++ b/code/modules/economy/cash.dm @@ -78,7 +78,7 @@ /obj/item/weapon/spacecash/attack_self() var/amount = input(usr, "How many Thalers do you want to take? (0 to [src.worth])", "Take Money", 20) as num - amount = round(Clamp(amount, 0, src.worth)) + amount = round(CLAMP(amount, 0, src.worth)) if(!amount) return diff --git a/code/modules/economy/cash_register.dm b/code/modules/economy/cash_register.dm index 9ef7a3f871..f3402f892e 100644 --- a/code/modules/economy/cash_register.dm +++ b/code/modules/economy/cash_register.dm @@ -128,7 +128,7 @@ if("set_amount") var/item_name = locate(href_list["item"]) var/n_amount = round(input("Enter amount", "New amount") as num) - n_amount = Clamp(n_amount, 0, 20) + n_amount = CLAMP(n_amount, 0, 20) if (!item_list[item_name] || !Adjacent(usr)) return transaction_amount += (n_amount - item_list[item_name]) * price_list[item_name] if(!n_amount) diff --git a/code/modules/economy/retail_scanner.dm b/code/modules/economy/retail_scanner.dm index af1d87177a..dc5c4e9cea 100644 --- a/code/modules/economy/retail_scanner.dm +++ b/code/modules/economy/retail_scanner.dm @@ -3,7 +3,7 @@ desc = "Swipe your ID card to make purchases electronically." icon = 'icons/obj/device.dmi' icon_state = "retail_idle" - flags = NOBLUDGEON|CONDUCT + flags = NOBLUDGEON slot_flags = SLOT_BELT req_access = list(access_heads) w_class = ITEMSIZE_SMALL @@ -120,7 +120,7 @@ if("set_amount") var/item_name = locate(href_list["item"]) var/n_amount = round(input("Enter amount", "New amount") as num) - n_amount = Clamp(n_amount, 0, 20) + n_amount = CLAMP(n_amount, 0, 20) if (!item_list[item_name] || !Adjacent(usr)) return transaction_amount += (n_amount - item_list[item_name]) * price_list[item_name] if(!n_amount) diff --git a/code/modules/error_handler/error_handler.dm b/code/modules/error_handler/error_handler.dm index db3843a8c9..71783714b0 100644 --- a/code/modules/error_handler/error_handler.dm +++ b/code/modules/error_handler/error_handler.dm @@ -1,7 +1,5 @@ -var/list/error_last_seen = list() // error_cooldown items will either be positive (cooldown time) or negative (silenced error) // If negative, starts at -1, and goes down by 1 each time that error gets skipped -var/list/error_cooldown = list() var/total_runtimes = 0 var/total_runtimes_skipped = 0 // The ifdef needs to be down here, since the error viewer references total_runtimes @@ -10,18 +8,18 @@ var/total_runtimes_skipped = 0 if(!istype(e)) // Something threw an unusual exception log_error("\[[time_stamp()]] Uncaught exception: [e]") return ..() - if(!error_last_seen) // A runtime is occurring too early in start-up initialization + if(!GLOB.error_last_seen) // A runtime is occurring too early in start-up initialization return ..() total_runtimes++ var/erroruid = "[e.file][e.line]" - var/last_seen = error_last_seen[erroruid] - var/cooldown = error_cooldown[erroruid] || 0 + var/last_seen = GLOB.error_last_seen[erroruid] + var/cooldown = GLOB.error_cooldown[erroruid] || 0 if(last_seen == null) // A new error! - error_last_seen[erroruid] = world.time + GLOB.error_last_seen[erroruid] = world.time last_seen = world.time if(cooldown < 0) - error_cooldown[erroruid]-- // Used to keep track of skip count for this error + GLOB.error_cooldown[erroruid]-- // Used to keep track of skip count for this error total_runtimes_skipped++ return // Error is currently silenced, skip handling it @@ -36,13 +34,13 @@ var/total_runtimes_skipped = 0 spawn(0) usr = null sleep(ERROR_SILENCE_TIME) - var/skipcount = abs(error_cooldown[erroruid]) - 1 - error_cooldown[erroruid] = 0 + var/skipcount = abs(GLOB.error_cooldown[erroruid]) - 1 + GLOB.error_cooldown[erroruid] = 0 if(skipcount > 0) log_error("\[[time_stamp()]] Skipped [skipcount] runtimes in [e.file],[e.line].") error_cache.logError(e, skipCount = skipcount) - error_last_seen[erroruid] = world.time - error_cooldown[erroruid] = cooldown + GLOB.error_last_seen[erroruid] = world.time + GLOB.error_cooldown[erroruid] = cooldown // The detailed error info needs some tweaking to make it look nice var/list/srcinfo = null @@ -115,4 +113,4 @@ var/total_runtimes_skipped = 0 else e.desc = " [extra_info]\n\n" + e.desc - world.Error(e, e_src) + world.Error(e, e_src) \ No newline at end of file diff --git a/code/modules/events/brand_intelligence.dm b/code/modules/events/brand_intelligence.dm index 4a7f7490e9..9f21488c28 100644 --- a/code/modules/events/brand_intelligence.dm +++ b/code/modules/events/brand_intelligence.dm @@ -50,7 +50,7 @@ kill() return - if(IsMultiple(activeFor, 5)) + if(ISMULTIPLE(activeFor, 5)) if(prob(15)) var/obj/machinery/vending/infectedMachine = pick(vendingMachines) vendingMachines.Remove(infectedMachine) @@ -58,7 +58,7 @@ infectedMachine.shut_up = 0 infectedMachine.shoot_inventory = 1 - if(IsMultiple(activeFor, 12)) + if(ISMULTIPLE(activeFor, 12)) /* VORESTATION Removal - Using the pick below. originMachine.speak(pick("Try our aggressive new marketing strategies!", \ "You should buy products to feed your lifestyle obsession!", \ diff --git a/code/modules/events/carp_migration.dm b/code/modules/events/carp_migration.dm index d0f9a8165c..b30a5d4898 100644 --- a/code/modules/events/carp_migration.dm +++ b/code/modules/events/carp_migration.dm @@ -37,15 +37,15 @@ while (i <= num_groups) var/group_size = rand(group_size_min, group_size_max) for (var/j = 1, j <= group_size, j++) - spawned_carp.Add(new /mob/living/simple_animal/hostile/carp(spawn_locations[i])) + spawned_carp.Add(new /mob/living/simple_mob/animal/space/carp/event(spawn_locations[i])) i++ /datum/event/carp_migration/end() spawn(0) - for(var/mob/living/simple_animal/hostile/C in spawned_carp) - if(!C.stat) - var/turf/T = get_turf(C) + for(var/mob/living/simple_mob/SM in spawned_carp) + if(!SM.stat) + var/turf/T = get_turf(SM) if(istype(T, /turf/space)) if(prob(75)) - qdel(C) + qdel(SM) sleep(1) \ No newline at end of file diff --git a/code/modules/events/escaped_slimes.dm b/code/modules/events/escaped_slimes.dm index c9f4f661a3..6a859e6a13 100644 --- a/code/modules/events/escaped_slimes.dm +++ b/code/modules/events/escaped_slimes.dm @@ -3,20 +3,20 @@ endWhen = 90 + 15 + 1 var/spawncount var/list/possible_slimes = list( - /mob/living/simple_animal/slime/purple, - /mob/living/simple_animal/slime/orange, - /mob/living/simple_animal/slime/metal, - /mob/living/simple_animal/slime/yellow, - /mob/living/simple_animal/slime/dark_purple, - /mob/living/simple_animal/slime/silver, - /mob/living/simple_animal/slime/ruby, - /mob/living/simple_animal/slime/cerulean, - /mob/living/simple_animal/slime/red, - /mob/living/simple_animal/slime/green, - /mob/living/simple_animal/slime/pink, - /mob/living/simple_animal/slime/gold, - /mob/living/simple_animal/slime/oil, - /mob/living/simple_animal/slime/emerald, + /mob/living/simple_mob/slime/purple, + /mob/living/simple_mob/slime/orange, + /mob/living/simple_mob/slime/metal, + /mob/living/simple_mob/slime/yellow, + /mob/living/simple_mob/slime/dark_purple, + /mob/living/simple_mob/slime/silver, + /mob/living/simple_mob/slime/ruby, + /mob/living/simple_mob/slime/cerulean, + /mob/living/simple_mob/slime/red, + /mob/living/simple_mob/slime/green, + /mob/living/simple_mob/slime/pink, + /mob/living/simple_mob/slime/gold, + /mob/living/simple_mob/slime/oil, + /mob/living/simple_mob/slime/emerald, ) diff --git a/code/modules/events/event.dm b/code/modules/events/event.dm index 4912b238c8..3af0e94982 100644 --- a/code/modules/events/event.dm +++ b/code/modules/events/event.dm @@ -94,7 +94,7 @@ //Do not override this proc, instead use the appropiate procs. //This proc will handle the calls to the appropiate procs. -/datum/event/proc/process() +/datum/event/process() if(activeFor > startWhen && activeFor < endWhen) tick() @@ -123,12 +123,12 @@ end() endedAt = world.time - event_manager.active_events -= src - event_manager.event_complete(src) + SSevents.active_events -= src + SSevents.event_complete(src) /datum/event/New(var/datum/event_meta/EM) // event needs to be responsible for this, as stuff like APLUs currently make their own events for curious reasons - event_manager.active_events += src + SSevents.active_events += src event_meta = EM severity = event_meta.severity diff --git a/code/modules/events/event_container.dm b/code/modules/events/event_container.dm index 5768ed6fe6..dee085dc2b 100644 --- a/code/modules/events/event_container.dm +++ b/code/modules/events/event_container.dm @@ -21,7 +21,7 @@ var/global/list/severity_to_string = list(EVENT_LEVEL_MUNDANE = "Mundane", EVENT var/last_world_time = 0 -/datum/event_container/proc/process() +/datum/event_container/process() if(!next_event_time) set_event_delay() @@ -139,7 +139,7 @@ var/global/list/severity_to_string = list(EVENT_LEVEL_MUNDANE = "Mundane", EVENT new /datum/event_meta(EVENT_LEVEL_MUNDANE, "Shipping Error", /datum/event/shipping_error , 30, list(ASSIGNMENT_ANY = 2), 0), new /datum/event_meta(EVENT_LEVEL_MUNDANE, "Space Dust", /datum/event/dust , 60, list(ASSIGNMENT_ENGINEER = 20), 0, 0, 50), new /datum/event_meta(EVENT_LEVEL_MUNDANE, "Trivial News", /datum/event/trivial_news, 400), - new /datum/event_meta(EVENT_LEVEL_MUNDANE, "Ian Storm", /datum/event/ianstorm, 50), + //new /datum/event_meta(EVENT_LEVEL_MUNDANE, "Ian Storm", /datum/event/ianstorm, 50), //VORESTATION AI TEMPORARY REMOVAL new /datum/event_meta(EVENT_LEVEL_MUNDANE, "Lore News", /datum/event/lore_news, 400), new /datum/event_meta(EVENT_LEVEL_MUNDANE, "Vermin Infestation",/datum/event/infestation, 100, list(ASSIGNMENT_JANITOR = 100)), new /datum/event_meta(EVENT_LEVEL_MUNDANE, "Wallrot", /datum/event/wallrot, 0, list(ASSIGNMENT_ENGINEER = 30, ASSIGNMENT_GARDENER = 50)), diff --git a/code/modules/events/event_container_vr.dm b/code/modules/events/event_container_vr.dm index b8a6132863..05472dc638 100644 --- a/code/modules/events/event_container_vr.dm +++ b/code/modules/events/event_container_vr.dm @@ -74,7 +74,7 @@ new /datum/event_meta(EVENT_LEVEL_MODERATE, "Solar Storm", /datum/event/solar_storm, 30, list(ASSIGNMENT_ENGINEER = 40, ASSIGNMENT_SECURITY = 30), 1), new /datum/event_meta(EVENT_LEVEL_MODERATE, "Virology Breach", /datum/event/prison_break/virology, 0, list(ASSIGNMENT_MEDICAL = 100), 1), new /datum/event_meta(EVENT_LEVEL_MODERATE, "Xenobiology Breach", /datum/event/prison_break/xenobiology, 0, list(ASSIGNMENT_SCIENCE = 100), 1), - new /datum/event_meta(EVENT_LEVEL_MODERATE, "Grub Infestation", /datum/event/grub_infestation, 40, list(ASSIGNMENT_SECURITY = 50, ASSIGNMENT_ENGINEER = 50), 1), + //new /datum/event_meta(EVENT_LEVEL_MODERATE, "Grub Infestation", /datum/event/grub_infestation, 40, list(ASSIGNMENT_SECURITY = 50, ASSIGNMENT_ENGINEER = 50), 1), //VORESTATION AI TEMPORARY REMOVAL //Evil grubs that drain station power slightly ) add_disabled_events(list( diff --git a/code/modules/events/event_manager.dm b/code/modules/events/event_manager.dm index 534c5aa56d..09c04c71ab 100644 --- a/code/modules/events/event_manager.dm +++ b/code/modules/events/event_manager.dm @@ -1,4 +1,5 @@ -/datum/event_manager +//The UI portion. Should probably be made its own thing/made into a NanoUI thing later. +/datum/controller/subsystem/events var/window_x = 700 var/window_y = 600 var/report_at_round_end = 0 @@ -8,49 +9,7 @@ var/row_options3 = " width='150px'" var/datum/event_container/selected_event_container = null - var/list/datum/event/active_events = list() - var/list/datum/event/finished_events = list() - - var/list/datum/event/allEvents - var/list/datum/event_container/event_containers = list( - EVENT_LEVEL_MUNDANE = new/datum/event_container/mundane, - EVENT_LEVEL_MODERATE = new/datum/event_container/moderate, - EVENT_LEVEL_MAJOR = new/datum/event_container/major - ) - - var/datum/event_meta/new_event = new - -/datum/event_manager/New() - allEvents = typesof(/datum/event) - /datum/event - -/datum/event_manager/proc/process() - for(var/datum/event/E in event_manager.active_events) - E.process() - - for(var/i = EVENT_LEVEL_MUNDANE to EVENT_LEVEL_MAJOR) - var/list/datum/event_container/EC = event_containers[i] - EC.process() - -/datum/event_manager/proc/event_complete(var/datum/event/E) - if(!E.event_meta || !E.severity) // datum/event is used here and there for random reasons, maintaining "backwards compatibility" - log_debug("Event of '[E.type]' with missing meta-data has completed.") - return - - finished_events += E - - // Add the event back to the list of available events - var/datum/event_container/EC = event_containers[E.severity] - var/datum/event_meta/EM = E.event_meta - if(EM.add_to_queue) - EC.available_events += EM - - log_debug("Event '[EM.name]' has completed at [worldtime2stationtime(world.time)].") - -/datum/event_manager/proc/delay_events(var/severity, var/delay) - var/list/datum/event_container/EC = event_containers[severity] - EC.next_event_time += delay - -/datum/event_manager/proc/Interact(var/mob/living/user) +/datum/controller/subsystem/events/proc/Interact(var/mob/living/user) var/html = GetInteractWindow() @@ -58,27 +17,7 @@ popup.set_content(html) popup.open() -/datum/event_manager/proc/RoundEnd() - if(!report_at_round_end) - return - - world << "


    Random Events This Round:" - for(var/datum/event/E in active_events|finished_events) - var/datum/event_meta/EM = E.event_meta - if(EM.name == "Nothing") - continue - var/message = "'[EM.name]' began at [worldtime2stationtime(E.startedAt)] " - if(E.isRunning) - message += "and is still running." - else - if(E.endedAt - E.startedAt > MinutesToTicks(5)) // Only mention end time if the entire duration was more than 5 minutes - message += "and ended at [worldtime2stationtime(E.endedAt)]." - else - message += "and ran to completion." - - world << message - -/datum/event_manager/proc/GetInteractWindow() +/datum/controller/subsystem/events/proc/GetInteractWindow() var/html = "Refresh" html += "Pause All - [config.allow_random_events ? "Pause" : "Resume"]" @@ -187,11 +126,10 @@ return html -/datum/event_manager/Topic(href, href_list) +/datum/controller/subsystem/events/Topic(href, href_list) if(..()) return - if(href_list["toggle_report"]) report_at_round_end = !report_at_round_end log_and_message_admins("has [report_at_round_end ? "enabled" : "disabled"] the round end event report.") @@ -284,7 +222,7 @@ Interact(usr) -/client/proc/forceEvent(var/type in event_manager.allEvents) +/client/proc/forceEvent(var/type in SSevents.allEvents) set name = "Trigger Event (Debug Only)" set category = "Debug" @@ -298,7 +236,5 @@ /client/proc/event_manager_panel() set name = "Event Manager Panel" set category = "Admin" - if(event_manager) - event_manager.Interact(usr) + SSevents.Interact(usr) feedback_add_details("admin_verb","EMP") //If you are copy-pasting this, ensure the 2nd parameter is unique to the new proc! - return diff --git a/code/modules/events/grubinfestation_vr.dm b/code/modules/events/grubinfestation_vr.dm index 647b59117e..210e21e441 100644 --- a/code/modules/events/grubinfestation_vr.dm +++ b/code/modules/events/grubinfestation_vr.dm @@ -24,7 +24,7 @@ /datum/event/grub_infestation/start() while((spawncount >= 1) && vents.len) var/obj/vent = pick(vents) - new /mob/living/simple_animal/solargrub_larva(get_turf(vent)) + //new /mob/living/simple_mob/solargrub_larva(get_turf(vent)) //VORESTATION AI TEMPORARY REMOVAL. Event commented out until mobs are fixed. vents -= vent spawncount-- vents.Cut() diff --git a/code/modules/events/ian_storm_vr.dm b/code/modules/events/ian_storm_vr.dm index baf56045a9..2ddee490d9 100644 --- a/code/modules/events/ian_storm_vr.dm +++ b/code/modules/events/ian_storm_vr.dm @@ -1,4 +1,4 @@ -/datum/event/ianstorm +/datum/event/ianstorm //VORESTATION AI TEMPORARY REMOVAL announceWhen = 1 startWhen = 2 endWhen = 3 @@ -23,7 +23,7 @@ for(var/i = 0, i < 3, i++) var/turf/target = get_step(T, pick(alldirs)) if(target && istype(target, /turf/simulated/floor)) - var/mob/living/simple_animal/corgi/Ian/doge = new(target) + var/mob/living/simple_mob/corgi/Ian/doge = new(target) doge.name = "Ian " + pick("Alpha", "Beta", "Chi", "Delta", "Epsilon", "Phi", "Gamma", "Eta", "Iota", "Kappa", "Lambda", "Omicron", "Theta", "Rho", "Sigma", "Tau", "Upsilon", "Omega", "Psi", "Zeta") diff --git a/code/modules/events/infestation.dm b/code/modules/events/infestation.dm index 16f2b78521..3800bc999f 100644 --- a/code/modules/events/infestation.dm +++ b/code/modules/events/infestation.dm @@ -65,11 +65,11 @@ vermin = rand(0,2) switch(vermin) if(VERM_MICE) - spawn_types = list(/mob/living/simple_animal/mouse/gray, /mob/living/simple_animal/mouse/brown, /mob/living/simple_animal/mouse/white) + spawn_types = list(/mob/living/simple_mob/animal/passive/mouse/gray, /mob/living/simple_mob/animal/passive/mouse/brown, /mob/living/simple_mob/animal/passive/mouse/white) max_number = 12 vermstring = "mice" if(VERM_LIZARDS) - spawn_types = list(/mob/living/simple_animal/lizard) + spawn_types = list(/mob/living/simple_mob/animal/passive/lizard) max_number = 6 vermstring = "lizards" if(VERM_SPIDERS) diff --git a/code/modules/events/rogue_drones.dm b/code/modules/events/rogue_drones.dm index 768628f8fb..9cfcc648b5 100644 --- a/code/modules/events/rogue_drones.dm +++ b/code/modules/events/rogue_drones.dm @@ -16,10 +16,8 @@ else num = rand(2,6) for(var/i=0, i= 1) I.reagents.remove_reagent(reagent_id, amount_to_take, safety = 1) - qty_need = Ceiling(qty_need - amount_to_take) + qty_need = CEILING((qty_need - amount_to_take), 1) return 1 else log_debug("supply_demand event: not taking reagent '[reagent_id]': [amount_to_take]") @@ -342,6 +342,6 @@ var/datum/alloy/A = pick(types) types -= A // Don't pick the same thing twice var/chosen_path = initial(A.product) - var/chosen_qty = Floor(rand(5, 100) * initial(A.product_mod)) + var/chosen_qty = FLOOR(rand(5, 100) * initial(A.product_mod), 1) required_items += new /datum/supply_demand_order/thing(chosen_qty, chosen_path) return diff --git a/code/modules/examine/descriptions/armor.dm b/code/modules/examine/descriptions/armor.dm index 67f58e9ad5..39c5ccde92 100644 --- a/code/modules/examine/descriptions/armor.dm +++ b/code/modules/examine/descriptions/armor.dm @@ -46,8 +46,13 @@ if(flags & AIRTIGHT) armor_stats += "It is airtight. \n" - if(flags & STOPPRESSUREDAMAGE) + if(min_pressure_protection == 0) armor_stats += "Wearing this will protect you from the vacuum of space. \n" + else if(min_pressure_protection != null) + armor_stats += "Wearing this will protect you from low pressures, but not the vacuum of space. \n" + + if(max_pressure_protection != null) + armor_stats += "Wearing this will protect you from high pressures. \n" if(flags & THICKMATERIAL) armor_stats += "The material is exceptionally thick. \n" diff --git a/code/modules/flufftext/Hallucination.dm b/code/modules/flufftext/Hallucination.dm index ca95cc5422..f70873f226 100644 --- a/code/modules/flufftext/Hallucination.dm +++ b/code/modules/flufftext/Hallucination.dm @@ -124,9 +124,9 @@ mob/living/carbon/proc/handle_hallucinations() if(8) src << 'sound/machines/windowdoor.ogg' if(9) //To make it more realistic, I added two gunshots (enough to kill) - src << 'sound/weapons/Gunshot.ogg' + src << 'sound/weapons/Gunshot1.ogg' spawn(rand(10,30)) - src << 'sound/weapons/Gunshot.ogg' + src << 'sound/weapons/Gunshot2.ogg' if(10) src << 'sound/weapons/smash.ogg' if(11) //Same as above, but with tasers. diff --git a/code/modules/food/drinkingglass/metaglass.dm b/code/modules/food/drinkingglass/metaglass.dm index 52528235bb..babb71df8b 100644 --- a/code/modules/food/drinkingglass/metaglass.dm +++ b/code/modules/food/drinkingglass/metaglass.dm @@ -542,3 +542,7 @@ Drinks Data /datum/reagent/ethanol/ichor_mead glass_icon_state = "ichor_meadglass" glass_center_of_mass = list("x"=17, "y"=10) + +/datum/reagent/drink/eggnog + glass_icon_state = "eggnog" + glass_center_of_mass = list("x"=16, "y"=8) diff --git a/code/modules/food/food.dm b/code/modules/food/food.dm index 330dfaab7e..1e91e48ae0 100644 --- a/code/modules/food/food.dm +++ b/code/modules/food/food.dm @@ -11,8 +11,8 @@ var/list/center_of_mass = list() // Used for table placement -/obj/item/weapon/reagent_containers/food/New() - ..() +/obj/item/weapon/reagent_containers/food/Initialize() + . = ..() if (center_of_mass.len && !pixel_x && !pixel_y) src.pixel_x = rand(-6.0, 6) //Randomizes postion src.pixel_y = rand(-6.0, 6) diff --git a/code/modules/food/food/cans.dm b/code/modules/food/food/cans.dm index f67af64c3b..1c0071e47e 100644 --- a/code/modules/food/food/cans.dm +++ b/code/modules/food/food/cans.dm @@ -11,8 +11,8 @@ icon_state = "cola" center_of_mass = list("x"=16, "y"=10) -/obj/item/weapon/reagent_containers/food/drinks/cans/cola/New() - ..() +/obj/item/weapon/reagent_containers/food/drinks/cans/cola/Initialize() + . = ..() reagents.add_reagent("cola", 30) /obj/item/weapon/reagent_containers/food/drinks/cans/waterbottle @@ -21,8 +21,8 @@ icon_state = "waterbottle" center_of_mass = list("x"=15, "y"=8) -/obj/item/weapon/reagent_containers/food/drinks/cans/waterbottle/New() - ..() +/obj/item/weapon/reagent_containers/food/drinks/cans/waterbottle/Initialize() + . = ..() reagents.add_reagent("water", 30) /obj/item/weapon/reagent_containers/food/drinks/cans/space_mountain_wind @@ -31,7 +31,7 @@ icon_state = "space_mountain_wind" center_of_mass = list("x"=16, "y"=10) -/obj/item/weapon/reagent_containers/food/drinks/cans/space_mountain_wind/New() +/obj/item/weapon/reagent_containers/food/drinks/cans/space_mountain_wind/Initialize() ..() reagents.add_reagent("spacemountainwind", 30) @@ -41,8 +41,8 @@ icon_state = "thirteen_loko" center_of_mass = list("x"=16, "y"=8) -/obj/item/weapon/reagent_containers/food/drinks/cans/thirteenloko/New() - ..() +/obj/item/weapon/reagent_containers/food/drinks/cans/thirteenloko/Initialize() + . = ..() reagents.add_reagent("thirteenloko", 30) /obj/item/weapon/reagent_containers/food/drinks/cans/dr_gibb @@ -51,7 +51,7 @@ icon_state = "dr_gibb" center_of_mass = list("x"=16, "y"=10) -/obj/item/weapon/reagent_containers/food/drinks/cans/dr_gibb/New() +/obj/item/weapon/reagent_containers/food/drinks/cans/dr_gibb/Initialize() ..() reagents.add_reagent("dr_gibb", 30) @@ -61,8 +61,8 @@ icon_state = "starkist" center_of_mass = list("x"=16, "y"=10) -/obj/item/weapon/reagent_containers/food/drinks/cans/starkist/New() - ..() +/obj/item/weapon/reagent_containers/food/drinks/cans/starkist/Initialize() + . = ..() reagents.add_reagent("brownstar", 30) /obj/item/weapon/reagent_containers/food/drinks/cans/space_up @@ -71,7 +71,7 @@ icon_state = "space-up" center_of_mass = list("x"=16, "y"=10) -/obj/item/weapon/reagent_containers/food/drinks/cans/space_up/New() +/obj/item/weapon/reagent_containers/food/drinks/cans/space_up/Initialize() ..() reagents.add_reagent("space_up", 30) @@ -81,7 +81,7 @@ icon_state = "lemon-lime" center_of_mass = list("x"=16, "y"=10) -/obj/item/weapon/reagent_containers/food/drinks/cans/lemon_lime/New() +/obj/item/weapon/reagent_containers/food/drinks/cans/lemon_lime/Initialize() ..() reagents.add_reagent("lemon_lime", 30) @@ -91,7 +91,7 @@ icon_state = "ice_tea_can" center_of_mass = list("x"=16, "y"=10) -/obj/item/weapon/reagent_containers/food/drinks/cans/iced_tea/New() +/obj/item/weapon/reagent_containers/food/drinks/cans/iced_tea/Initialize() ..() reagents.add_reagent("icetea", 30) @@ -101,7 +101,7 @@ icon_state = "purple_can" center_of_mass = list("x"=16, "y"=10) -/obj/item/weapon/reagent_containers/food/drinks/cans/grape_juice/New() +/obj/item/weapon/reagent_containers/food/drinks/cans/grape_juice/Initialize() ..() reagents.add_reagent("grapejuice", 30) @@ -111,8 +111,8 @@ icon_state = "tonic" center_of_mass = list("x"=16, "y"=10) -/obj/item/weapon/reagent_containers/food/drinks/cans/tonic/New() - ..() +/obj/item/weapon/reagent_containers/food/drinks/cans/tonic/Initialize() + . = ..() reagents.add_reagent("tonic", 50) /obj/item/weapon/reagent_containers/food/drinks/cans/sodawater @@ -121,8 +121,8 @@ icon_state = "sodawater" center_of_mass = list("x"=16, "y"=10) -/obj/item/weapon/reagent_containers/food/drinks/cans/sodawater/New() - ..() +/obj/item/weapon/reagent_containers/food/drinks/cans/sodawater/Initialize() + . = ..() reagents.add_reagent("sodawater", 50) /obj/item/weapon/reagent_containers/food/drinks/cans/gingerale @@ -131,6 +131,6 @@ icon_state = "gingerale" center_of_mass = list("x"=16, "y"=10) -/obj/item/weapon/reagent_containers/food/drinks/cans/gingerale/New() - ..() +/obj/item/weapon/reagent_containers/food/drinks/cans/gingerale/Initialize() + . = ..() reagents.add_reagent("gingerale", 30) \ No newline at end of file diff --git a/code/modules/food/food/condiment.dm b/code/modules/food/food/condiment.dm index 8ab7f34c79..377679f778 100644 --- a/code/modules/food/food/condiment.dm +++ b/code/modules/food/food/condiment.dm @@ -118,12 +118,12 @@ desc = "Used in cooking various dishes." icon_state = "enzyme" -/obj/item/weapon/reagent_containers/food/condiment/enzyme/New() - ..() +/obj/item/weapon/reagent_containers/food/condiment/enzyme/Initialize() + . = ..() reagents.add_reagent("enzyme", 50) -/obj/item/weapon/reagent_containers/food/condiment/sugar/New() - ..() +/obj/item/weapon/reagent_containers/food/condiment/sugar/Initialize() + . = ..() reagents.add_reagent("sugar", 50) /obj/item/weapon/reagent_containers/food/condiment/small @@ -140,8 +140,8 @@ desc = "Salt. From space oceans, presumably." icon_state = "saltshakersmall" -/obj/item/weapon/reagent_containers/food/condiment/small/saltshaker/New() - ..() +/obj/item/weapon/reagent_containers/food/condiment/small/saltshaker/Initialize() + . = ..() reagents.add_reagent("sodiumchloride", 20) /obj/item/weapon/reagent_containers/food/condiment/small/peppermill @@ -149,8 +149,8 @@ desc = "Often used to flavor food or make people sneeze." icon_state = "peppermillsmall" -/obj/item/weapon/reagent_containers/food/condiment/small/peppermill/New() - ..() +/obj/item/weapon/reagent_containers/food/condiment/small/peppermill/Initialize() + . = ..() reagents.add_reagent("blackpepper", 20) /obj/item/weapon/reagent_containers/food/condiment/small/sugar @@ -158,8 +158,8 @@ desc = "Sweetness in a bottle" icon_state = "sugarsmall" -/obj/item/weapon/reagent_containers/food/condiment/small/sugar/New() - ..() +/obj/item/weapon/reagent_containers/food/condiment/small/sugar/Initialize() + . = ..() reagents.add_reagent("sugar", 20) /obj/item/weapon/reagent_containers/food/condiment/flour @@ -171,8 +171,8 @@ /obj/item/weapon/reagent_containers/food/condiment/flour/on_reagent_change() return -/obj/item/weapon/reagent_containers/food/condiment/flour/New() - ..() +/obj/item/weapon/reagent_containers/food/condiment/flour/Initialize() + . = ..() reagents.add_reagent("flour", 30) src.pixel_x = rand(-10.0, 10) src.pixel_y = rand(-10.0, 10) diff --git a/code/modules/food/food/drinks.dm b/code/modules/food/food/drinks.dm index af4dd0fb53..e86539c427 100644 --- a/code/modules/food/food/drinks.dm +++ b/code/modules/food/food/drinks.dm @@ -100,7 +100,7 @@ amount_per_transfer_from_this = 20 possible_transfer_amounts = null volume = 150 - flags = CONDUCT | OPENCONTAINER + flags = OPENCONTAINER /obj/item/weapon/reagent_containers/food/drinks/golden_cup/on_reagent_change() ..() @@ -117,8 +117,8 @@ item_state = "carton" center_of_mass = list("x"=16, "y"=9) -/obj/item/weapon/reagent_containers/food/drinks/milk/New() - ..() +/obj/item/weapon/reagent_containers/food/drinks/milk/Initialize() + . = ..() reagents.add_reagent("milk", 50) /obj/item/weapon/reagent_containers/food/drinks/soymilk @@ -127,8 +127,8 @@ icon_state = "soymilk" item_state = "carton" center_of_mass = list("x"=16, "y"=9) -/obj/item/weapon/reagent_containers/food/drinks/soymilk/New() - ..() +/obj/item/weapon/reagent_containers/food/drinks/soymilk/Initialize() + . = ..() reagents.add_reagent("soymilk", 50) /obj/item/weapon/reagent_containers/food/drinks/smallmilk @@ -138,8 +138,8 @@ icon_state = "mini-milk" item_state = "carton" center_of_mass = list("x"=16, "y"=9) -/obj/item/weapon/reagent_containers/food/drinks/smallmilk/New() - ..() +/obj/item/weapon/reagent_containers/food/drinks/smallmilk/Initialize() + . = ..() reagents.add_reagent("milk", 30) /obj/item/weapon/reagent_containers/food/drinks/smallchocmilk @@ -149,8 +149,8 @@ icon_state = "mini-milk_choco" item_state = "carton" center_of_mass = list("x"=16, "y"=9) -/obj/item/weapon/reagent_containers/food/drinks/smallchocmilk/New() - ..() +/obj/item/weapon/reagent_containers/food/drinks/smallchocmilk/Initialize() + . = ..() reagents.add_reagent("chocolate_milk", 30) /obj/item/weapon/reagent_containers/food/drinks/coffee @@ -158,8 +158,8 @@ desc = "Careful, the beverage you're about to enjoy is extremely hot." icon_state = "coffee" center_of_mass = list("x"=15, "y"=10) -/obj/item/weapon/reagent_containers/food/drinks/coffee/New() - ..() +/obj/item/weapon/reagent_containers/food/drinks/coffee/Initialize() + . = ..() reagents.add_reagent("coffee", 30) /obj/item/weapon/reagent_containers/food/drinks/tea @@ -169,8 +169,8 @@ item_state = "coffee" center_of_mass = list("x"=16, "y"=14) -/obj/item/weapon/reagent_containers/food/drinks/tea/New() - ..() +/obj/item/weapon/reagent_containers/food/drinks/tea/Initialize() + . = ..() reagents.add_reagent("tea", 30) /obj/item/weapon/reagent_containers/food/drinks/ice @@ -178,8 +178,8 @@ desc = "Careful, cold ice, do not chew." icon_state = "coffee" center_of_mass = list("x"=15, "y"=10) -/obj/item/weapon/reagent_containers/food/drinks/ice/New() - ..() +/obj/item/weapon/reagent_containers/food/drinks/ice/Initialize() + . = ..() reagents.add_reagent("ice", 30) /obj/item/weapon/reagent_containers/food/drinks/h_chocolate @@ -189,7 +189,7 @@ item_state = "coffee" center_of_mass = list("x"=15, "y"=13) -/obj/item/weapon/reagent_containers/food/drinks/h_chocolate/New() +/obj/item/weapon/reagent_containers/food/drinks/h_chocolate/Initialize() ..() reagents.add_reagent("hot_coco", 30) @@ -198,7 +198,7 @@ desc = "Just add 10ml water, self heats! A taste that reminds you of your school years." icon_state = "ramen" center_of_mass = list("x"=16, "y"=11) -/obj/item/weapon/reagent_containers/food/drinks/dry_ramen/New() +/obj/item/weapon/reagent_containers/food/drinks/dry_ramen/Initialize() ..() reagents.add_reagent("dry_ramen", 30) @@ -210,8 +210,8 @@ volume = 10 center_of_mass = list("x"=16, "y"=12) -/obj/item/weapon/reagent_containers/food/drinks/sillycup/New() - ..() +/obj/item/weapon/reagent_containers/food/drinks/sillycup/Initialize() + . = ..() /obj/item/weapon/reagent_containers/food/drinks/sillycup/on_reagent_change() ..() diff --git a/code/modules/food/food/drinks/bottle.dm b/code/modules/food/food/drinks/bottle.dm index d3b5e5bc66..d2506132fd 100644 --- a/code/modules/food/food/drinks/bottle.dm +++ b/code/modules/food/food/drinks/bottle.dm @@ -14,8 +14,8 @@ var/rag_underlay = "rag" on_reagent_change() return // To suppress price updating. Bottles have their own price tags. -/obj/item/weapon/reagent_containers/food/drinks/bottle/New() - ..() +/obj/item/weapon/reagent_containers/food/drinks/bottle/Initialize() + . = ..() if(isGlass) unacidable = 1 /obj/item/weapon/reagent_containers/food/drinks/bottle/Destroy() @@ -193,8 +193,8 @@ icon_state = "ginbottle" center_of_mass = list("x"=16, "y"=4) -/obj/item/weapon/reagent_containers/food/drinks/bottle/gin/New() - ..() +/obj/item/weapon/reagent_containers/food/drinks/bottle/gin/Initialize() + . = ..() reagents.add_reagent("gin", 100) /obj/item/weapon/reagent_containers/food/drinks/bottle/whiskey @@ -203,8 +203,8 @@ icon_state = "whiskeybottle" center_of_mass = list("x"=16, "y"=3) -/obj/item/weapon/reagent_containers/food/drinks/bottle/whiskey/New() - ..() +/obj/item/weapon/reagent_containers/food/drinks/bottle/whiskey/Initialize() + . = ..() reagents.add_reagent("whiskey", 100) /obj/item/weapon/reagent_containers/food/drinks/bottle/specialwhiskey @@ -213,8 +213,8 @@ icon_state = "whiskeybottle2" center_of_mass = list("x"=16, "y"=3) -/obj/item/weapon/reagent_containers/food/drinks/bottle/specialwhiskey/New() - ..() +/obj/item/weapon/reagent_containers/food/drinks/bottle/specialwhiskey/Initialize() + . = ..() reagents.add_reagent("specialwhiskey", 100) /obj/item/weapon/reagent_containers/food/drinks/bottle/vodka @@ -223,8 +223,8 @@ icon_state = "vodkabottle" center_of_mass = list("x"=17, "y"=3) -/obj/item/weapon/reagent_containers/food/drinks/bottle/vodka/New() - ..() +/obj/item/weapon/reagent_containers/food/drinks/bottle/vodka/Initialize() + . = ..() reagents.add_reagent("vodka", 100) /obj/item/weapon/reagent_containers/food/drinks/bottle/tequilla @@ -233,8 +233,8 @@ icon_state = "tequillabottle" center_of_mass = list("x"=16, "y"=3) -/obj/item/weapon/reagent_containers/food/drinks/bottle/tequilla/New() - ..() +/obj/item/weapon/reagent_containers/food/drinks/bottle/tequilla/Initialize() + . = ..() reagents.add_reagent("tequilla", 100) /obj/item/weapon/reagent_containers/food/drinks/bottle/bottleofnothing @@ -243,8 +243,8 @@ icon_state = "bottleofnothing" center_of_mass = list("x"=17, "y"=5) -/obj/item/weapon/reagent_containers/food/drinks/bottle/bottleofnothing/New() - ..() +/obj/item/weapon/reagent_containers/food/drinks/bottle/bottleofnothing/Initialize() + . = ..() reagents.add_reagent("nothing", 100) /obj/item/weapon/reagent_containers/food/drinks/bottle/patron @@ -253,8 +253,8 @@ icon_state = "patronbottle" center_of_mass = list("x"=16, "y"=6) -/obj/item/weapon/reagent_containers/food/drinks/bottle/patron/New() - ..() +/obj/item/weapon/reagent_containers/food/drinks/bottle/patron/Initialize() + . = ..() reagents.add_reagent("patron", 100) /obj/item/weapon/reagent_containers/food/drinks/bottle/rum @@ -263,8 +263,8 @@ icon_state = "rumbottle" center_of_mass = list("x"=16, "y"=8) -/obj/item/weapon/reagent_containers/food/drinks/bottle/rum/New() - ..() +/obj/item/weapon/reagent_containers/food/drinks/bottle/rum/Initialize() + . = ..() reagents.add_reagent("rum", 100) /obj/item/weapon/reagent_containers/food/drinks/bottle/holywater @@ -273,8 +273,8 @@ icon_state = "holyflask" center_of_mass = list("x"=17, "y"=10) -/obj/item/weapon/reagent_containers/food/drinks/bottle/holywater/New() - ..() +/obj/item/weapon/reagent_containers/food/drinks/bottle/holywater/Initialize() + . = ..() reagents.add_reagent("holywater", 100) /obj/item/weapon/reagent_containers/food/drinks/bottle/vermouth @@ -283,8 +283,8 @@ icon_state = "vermouthbottle" center_of_mass = list("x"=17, "y"=3) -/obj/item/weapon/reagent_containers/food/drinks/bottle/vermouth/New() - ..() +/obj/item/weapon/reagent_containers/food/drinks/bottle/vermouth/Initialize() + . = ..() reagents.add_reagent("vermouth", 100) /obj/item/weapon/reagent_containers/food/drinks/bottle/kahlua @@ -293,8 +293,8 @@ icon_state = "kahluabottle" center_of_mass = list("x"=17, "y"=3) -/obj/item/weapon/reagent_containers/food/drinks/bottle/kahlua/New() - ..() +/obj/item/weapon/reagent_containers/food/drinks/bottle/kahlua/Initialize() + . = ..() reagents.add_reagent("kahlua", 100) /obj/item/weapon/reagent_containers/food/drinks/bottle/goldschlager @@ -303,8 +303,8 @@ icon_state = "goldschlagerbottle" center_of_mass = list("x"=15, "y"=3) -/obj/item/weapon/reagent_containers/food/drinks/bottle/goldschlager/New() - ..() +/obj/item/weapon/reagent_containers/food/drinks/bottle/goldschlager/Initialize() + . = ..() reagents.add_reagent("goldschlager", 100) /obj/item/weapon/reagent_containers/food/drinks/bottle/cognac @@ -313,8 +313,8 @@ icon_state = "cognacbottle" center_of_mass = list("x"=16, "y"=6) -/obj/item/weapon/reagent_containers/food/drinks/bottle/cognac/New() - ..() +/obj/item/weapon/reagent_containers/food/drinks/bottle/cognac/Initialize() + . = ..() reagents.add_reagent("cognac", 100) /obj/item/weapon/reagent_containers/food/drinks/bottle/wine @@ -323,8 +323,8 @@ icon_state = "winebottle" center_of_mass = list("x"=16, "y"=4) -/obj/item/weapon/reagent_containers/food/drinks/bottle/wine/New() - ..() +/obj/item/weapon/reagent_containers/food/drinks/bottle/wine/Initialize() + . = ..() reagents.add_reagent("wine", 100) /obj/item/weapon/reagent_containers/food/drinks/bottle/absinthe @@ -333,8 +333,8 @@ icon_state = "absinthebottle" center_of_mass = list("x"=16, "y"=6) -/obj/item/weapon/reagent_containers/food/drinks/bottle/absinthe/New() - ..() +/obj/item/weapon/reagent_containers/food/drinks/bottle/absinthe/Initialize() + . = ..() reagents.add_reagent("absinthe", 100) /obj/item/weapon/reagent_containers/food/drinks/bottle/melonliquor @@ -343,8 +343,8 @@ icon_state = "alco-green" //Placeholder. center_of_mass = list("x"=16, "y"=6) -/obj/item/weapon/reagent_containers/food/drinks/bottle/melonliquor/New() - ..() +/obj/item/weapon/reagent_containers/food/drinks/bottle/melonliquor/Initialize() + . = ..() reagents.add_reagent("melonliquor", 100) /obj/item/weapon/reagent_containers/food/drinks/bottle/bluecuracao @@ -353,8 +353,8 @@ icon_state = "alco-blue" //Placeholder. center_of_mass = list("x"=16, "y"=6) -/obj/item/weapon/reagent_containers/food/drinks/bottle/bluecuracao/New() - ..() +/obj/item/weapon/reagent_containers/food/drinks/bottle/bluecuracao/Initialize() + . = ..() reagents.add_reagent("bluecuracao", 100) /obj/item/weapon/reagent_containers/food/drinks/bottle/grenadine @@ -363,8 +363,8 @@ icon_state = "grenadinebottle" center_of_mass = list("x"=16, "y"=6) -/obj/item/weapon/reagent_containers/food/drinks/bottle/grenadine/New() - ..() +/obj/item/weapon/reagent_containers/food/drinks/bottle/grenadine/Initialize() + . = ..() reagents.add_reagent("grenadine", 100) /obj/item/weapon/reagent_containers/food/drinks/bottle/cola @@ -373,8 +373,8 @@ icon_state = "colabottle" center_of_mass = list("x"=16, "y"=6) -/obj/item/weapon/reagent_containers/food/drinks/bottle/cola/New() - ..() +/obj/item/weapon/reagent_containers/food/drinks/bottle/cola/Initialize() + . = ..() reagents.add_reagent("cola", 100) /obj/item/weapon/reagent_containers/food/drinks/bottle/space_up @@ -383,7 +383,7 @@ icon_state = "space-up_bottle" center_of_mass = list("x"=16, "y"=6) -/obj/item/weapon/reagent_containers/food/drinks/bottle/space_up/New() +/obj/item/weapon/reagent_containers/food/drinks/bottle/space_up/Initialize() ..() reagents.add_reagent("space_up", 100) @@ -393,7 +393,7 @@ icon_state = "space_mountain_wind_bottle" center_of_mass = list("x"=16, "y"=6) -/obj/item/weapon/reagent_containers/food/drinks/bottle/space_mountain_wind/New() +/obj/item/weapon/reagent_containers/food/drinks/bottle/space_mountain_wind/Initialize() ..() reagents.add_reagent("spacemountainwind", 100) @@ -403,8 +403,8 @@ icon_state = "pwinebottle" center_of_mass = list("x"=16, "y"=4) -/obj/item/weapon/reagent_containers/food/drinks/bottle/pwine/New() - ..() +/obj/item/weapon/reagent_containers/food/drinks/bottle/pwine/Initialize() + . = ..() reagents.add_reagent("pwine", 100) /obj/item/weapon/reagent_containers/food/drinks/bottle/redeemersbrew @@ -413,8 +413,8 @@ icon_state = "redeemersbrew" center_of_mass = list("x"=16, "y"=3) -/obj/item/weapon/reagent_containers/food/drinks/bottle/redeemersbrew/New() - ..() +/obj/item/weapon/reagent_containers/food/drinks/bottle/redeemersbrew/Initialize() + . = ..() reagents.add_reagent("unathiliquor", 100) //////////////////////////JUICES AND STUFF /////////////////////// @@ -427,8 +427,8 @@ center_of_mass = list("x"=16, "y"=7) isGlass = 0 -/obj/item/weapon/reagent_containers/food/drinks/bottle/orangejuice/New() - ..() +/obj/item/weapon/reagent_containers/food/drinks/bottle/orangejuice/Initialize() + . = ..() reagents.add_reagent("orangejuice", 100) /obj/item/weapon/reagent_containers/food/drinks/bottle/applejuice @@ -439,8 +439,8 @@ center_of_mass = list("x"=16, "y"=7) isGlass = 0 -/obj/item/weapon/reagent_containers/food/drinks/bottle/applejuice/New() - ..() +/obj/item/weapon/reagent_containers/food/drinks/bottle/applejuice/Initialize() + . = ..() reagents.add_reagent("applejuice", 100) /obj/item/weapon/reagent_containers/food/drinks/bottle/milk @@ -451,8 +451,8 @@ center_of_mass = list("x"=16, "y"=9) isGlass = 0 -/obj/item/weapon/reagent_containers/food/drinks/bottle/milk/New() - ..() +/obj/item/weapon/reagent_containers/food/drinks/bottle/milk/Initialize() + . = ..() reagents.add_reagent("milk", 100) /obj/item/weapon/reagent_containers/food/drinks/bottle/cream @@ -463,8 +463,8 @@ center_of_mass = list("x"=16, "y"=8) isGlass = 0 -/obj/item/weapon/reagent_containers/food/drinks/bottle/cream/New() - ..() +/obj/item/weapon/reagent_containers/food/drinks/bottle/cream/Initialize() + . = ..() reagents.add_reagent("cream", 100) /obj/item/weapon/reagent_containers/food/drinks/bottle/tomatojuice @@ -475,8 +475,8 @@ center_of_mass = list("x"=16, "y"=8) isGlass = 0 -/obj/item/weapon/reagent_containers/food/drinks/bottle/tomatojuice/New() - ..() +/obj/item/weapon/reagent_containers/food/drinks/bottle/tomatojuice/Initialize() + . = ..() reagents.add_reagent("tomatojuice", 100) /obj/item/weapon/reagent_containers/food/drinks/bottle/limejuice @@ -487,8 +487,8 @@ center_of_mass = list("x"=16, "y"=8) isGlass = 0 -/obj/item/weapon/reagent_containers/food/drinks/bottle/limejuice/New() - ..() +/obj/item/weapon/reagent_containers/food/drinks/bottle/limejuice/Initialize() + . = ..() reagents.add_reagent("limejuice", 100) /obj/item/weapon/reagent_containers/food/drinks/bottle/lemonjuice @@ -499,8 +499,8 @@ center_of_mass = list("x"=16, "y"=8) isGlass = 0 -/obj/item/weapon/reagent_containers/food/drinks/bottle/lemonjuice/New() - ..() +/obj/item/weapon/reagent_containers/food/drinks/bottle/lemonjuice/Initialize() + . = ..() reagents.add_reagent("lemonjuice", 100) //Small bottles @@ -516,8 +516,8 @@ icon_state = "beer" center_of_mass = list("x"=16, "y"=12) -/obj/item/weapon/reagent_containers/food/drinks/bottle/small/beer/New() - ..() +/obj/item/weapon/reagent_containers/food/drinks/bottle/small/beer/Initialize() + . = ..() reagents.add_reagent("beer", 30) /obj/item/weapon/reagent_containers/food/drinks/bottle/small/ale @@ -527,8 +527,8 @@ item_state = "beer" center_of_mass = list("x"=16, "y"=10) -/obj/item/weapon/reagent_containers/food/drinks/bottle/small/ale/New() - ..() +/obj/item/weapon/reagent_containers/food/drinks/bottle/small/ale/Initialize() + . = ..() reagents.add_reagent("ale", 30) /obj/item/weapon/reagent_containers/food/drinks/bottle/sake @@ -537,15 +537,46 @@ icon_state = "sakebottle" center_of_mass = list("x"=16, "y"=3) -/obj/item/weapon/reagent_containers/food/drinks/bottle/sake/New() - ..() +/obj/item/weapon/reagent_containers/food/drinks/bottle/sake/Initialize() + . = ..() reagents.add_reagent("sake", 100) /obj/item/weapon/reagent_containers/food/drinks/bottle/champagne name = "Gilthari Luxury Champagne" desc = "For those special occassions." icon_state = "champagne" + center_of_mass = list("x"=16, "y"=3) -/obj/item/weapon/reagent_containers/food/drinks/bottle/champagne/New() - ..() - reagents.add_reagent("champagne", 100) \ No newline at end of file +/obj/item/weapon/reagent_containers/food/drinks/bottle/champagne/Initialize() + . = ..() + reagents.add_reagent("champagne", 100) + +/obj/item/weapon/reagent_containers/food/drinks/bottle/peppermintschnapps + name = "Dr. Bone's Peppermint Schnapps" + desc = "A flavoured grain liqueur with a fresh, minty taste." + icon_state = "schnapps_pep" + center_of_mass = list("x"=16, "y"=3) + +/obj/item/weapon/reagent_containers/food/drinks/bottle/peppermintschnapps/Initialize() + . = ..() + reagents.add_reagent("schnapps_pep", 100) + +/obj/item/weapon/reagent_containers/food/drinks/bottle/peachschnapps + name = "Dr. Bone's Peach Schnapps" + desc = "A flavoured grain liqueur with a fruity peach taste." + icon_state = "schnapps_pea" + center_of_mass = list("x"=16, "y"=3) + +/obj/item/weapon/reagent_containers/food/drinks/bottle/peachschnapps/Initialize() + . = ..() + reagents.add_reagent("schnapps_pea", 100) + +/obj/item/weapon/reagent_containers/food/drinks/bottle/lemonadeschnapps + name = "Dr. Bone's Lemonade Schnapps" + desc = "A flavoured grain liqueur with a sweetish, lemon taste." + icon_state = "schnapps_lem" + center_of_mass = list("x"=16, "y"=3) + +/obj/item/weapon/reagent_containers/food/drinks/bottle/lemonadeschnapps/Initialize() + . = ..() + reagents.add_reagent("schnapps_lem", 100) diff --git a/code/modules/food/food/drinks/drinkingglass.dm b/code/modules/food/food/drinks/drinkingglass.dm index b8183fd1fc..7324dc8ad8 100644 --- a/code/modules/food/food/drinks/drinkingglass.dm +++ b/code/modules/food/food/drinks/drinkingglass.dm @@ -141,8 +141,8 @@ volume = 100 matter = list("plastic" = 2000) -/obj/item/weapon/reagent_containers/food/drinks/drinkingglass/fitnessflask/New() - ..() +/obj/item/weapon/reagent_containers/food/drinks/drinkingglass/fitnessflask/Initialize() + . = ..() icon_state = pick("fitness-cup_black", "fitness-cup_red", "fitness-cup_black") /obj/item/weapon/reagent_containers/food/drinks/drinkingglass/fitnessflask/on_reagent_change() @@ -169,8 +169,8 @@ /obj/item/weapon/reagent_containers/food/drinks/drinkingglass/fitnessflask/proteinshake name = "protein shake" -/obj/item/weapon/reagent_containers/food/drinks/drinkingglass/fitnessflask/proteinshake/New() - ..() +/obj/item/weapon/reagent_containers/food/drinks/drinkingglass/fitnessflask/proteinshake/Initialize() + . = ..() reagents.add_reagent("nutriment", 30) reagents.add_reagent("iron", 10) reagents.add_reagent("protein", 15) diff --git a/code/modules/food/food/lunch.dm b/code/modules/food/food/lunch.dm index b1aab6de8c..2f9db8203b 100644 --- a/code/modules/food/food/lunch.dm +++ b/code/modules/food/food/lunch.dm @@ -9,7 +9,8 @@ var/list/lunchables_lunches_ = list(/obj/item/weapon/reagent_containers/food/sna /obj/item/weapon/reagent_containers/food/snacks/tastybread, /obj/item/weapon/reagent_containers/food/snacks/liquidfood, /obj/item/weapon/reagent_containers/food/snacks/jellysandwich/cherry, - /obj/item/weapon/reagent_containers/food/snacks/tossedsalad) + /obj/item/weapon/reagent_containers/food/snacks/tossedsalad, + /obj/item/weapon/reagent_containers/hypospray/autoinjector/biginjector/glucose) var/list/lunchables_snacks_ = list(/obj/item/weapon/reagent_containers/food/snacks/donut/jelly, /obj/item/weapon/reagent_containers/food/snacks/donut/cherryjelly, diff --git a/code/modules/food/food/sandwich.dm b/code/modules/food/food/sandwich.dm index 5662b7d3ff..f4d9ac5fd0 100644 --- a/code/modules/food/food/sandwich.dm +++ b/code/modules/food/food/sandwich.dm @@ -71,7 +71,7 @@ name = lowertext("[fullname] sandwich") if(length(name) > 80) name = "[pick(list("absurd","colossal","enormous","ridiculous"))] sandwich" - w_class = n_ceil(Clamp((ingredients.len/2),2,4)) + w_class = n_ceil(CLAMP((ingredients.len/2),2,4)) /obj/item/weapon/reagent_containers/food/snacks/csandwich/Destroy() for(var/obj/item/O in ingredients) diff --git a/code/modules/food/food/snacks.dm b/code/modules/food/food/snacks.dm index d480e1946c..6945776ecd 100644 --- a/code/modules/food/food/snacks.dm +++ b/code/modules/food/food/snacks.dm @@ -17,13 +17,13 @@ w_class = ITEMSIZE_SMALL force = 1 -/obj/item/weapon/reagent_containers/food/snacks/New() - ..() +/obj/item/weapon/reagent_containers/food/snacks/Initialize() + . = ..() if(nutriment_amt) reagents.add_reagent("nutriment",nutriment_amt,nutriment_desc) -/obj/item/weapon/reagent_containers/food/snacks/New() - ..() +/obj/item/weapon/reagent_containers/food/snacks/Initialize() + . = ..() if(nutriment_amt) reagents.add_reagent("nutriment", nutriment_amt) @@ -70,6 +70,7 @@ return user.setClickCooldown(user.get_attack_speed(src)) //puts a limit on how fast people can eat/drink things + //VOREStation Edit Begin if (fullness <= 50) M << "You hungrily chew out a piece of [src] and gobble it!" if (fullness > 50 && fullness <= 150) @@ -81,6 +82,10 @@ if (fullness > (550 * (1 + M.overeatduration / 2000))) // The more you eat - the more you can eat M << "You cannot force any more of [src] to go down your throat." return 0 + //VOREStation Edit End + + else if(user.a_intent == I_HURT) + return ..() else if(istype(M,/mob/living/carbon/human)) @@ -93,8 +98,6 @@ user << "\The [blocked] is in the way!" return - if(!istype(M, /mob/living/carbon/slime)) //If you're feeding it to someone else. - if (fullness <= (550 * (1 + M.overeatduration / 1000))) user.visible_message("[user] attempts to feed [M] [src].") else @@ -271,8 +274,8 @@ nutriment_amt = 8 nutriment_desc = list("apples" = 3,"salad" = 5) -/obj/item/weapon/reagent_containers/food/snacks/aesirsalad/New() - ..() +/obj/item/weapon/reagent_containers/food/snacks/aesirsalad/Initialize() + . = ..() reagents.add_reagent("doctorsdelight", 8) reagents.add_reagent("tricordrazine", 8) bitesize = 3 @@ -287,8 +290,8 @@ nutriment_amt = 1 nutriment_desc = list("candy" = 1) -/obj/item/weapon/reagent_containers/food/snacks/candy/New() - ..() +/obj/item/weapon/reagent_containers/food/snacks/candy/Initialize() + . = ..() reagents.add_reagent("sugar", 3) bitesize = 2 @@ -300,8 +303,8 @@ nutriment_amt = 9 nutriment_desc = list("candy" = 1, "protein" = 8) -/obj/item/weapon/reagent_containers/food/snacks/candy/proteinbar/New() - ..() +/obj/item/weapon/reagent_containers/food/snacks/candy/proteinbar/Initialize() + . = ..() reagents.add_reagent("protein", 4) reagents.add_reagent("sugar", 4) bitesize = 6 @@ -313,8 +316,8 @@ nutriment_amt = 9 nutriment_desc = list("candy" = 10) -/obj/item/weapon/reagent_containers/food/snacks/candy/donor/New() - ..() +/obj/item/weapon/reagent_containers/food/snacks/candy/donor/Initialize() + . = ..() reagents.add_reagent("sugar", 3) bitesize = 5 @@ -327,7 +330,7 @@ nutriment_amt = 4 nutriment_desc = list("candy corn" = 4) -/obj/item/weapon/reagent_containers/food/snacks/candy_corn/New() +/obj/item/weapon/reagent_containers/food/snacks/candy_corn/Initialize() ..() reagents.add_reagent("sugar", 2) bitesize = 2 @@ -342,8 +345,8 @@ nutriment_amt = 3 nutriment_desc = list("salt" = 1, "chips" = 2) -/obj/item/weapon/reagent_containers/food/snacks/chips/New() - ..() +/obj/item/weapon/reagent_containers/food/snacks/chips/Initialize() + . = ..() bitesize = 1 /obj/item/weapon/reagent_containers/food/snacks/cookie @@ -355,8 +358,8 @@ nutriment_amt = 5 nutriment_desc = list("sweetness" = 3, "cookie" = 2) -/obj/item/weapon/reagent_containers/food/snacks/cookie/New() - ..() +/obj/item/weapon/reagent_containers/food/snacks/cookie/Initialize() + . = ..() bitesize = 1 /obj/item/weapon/reagent_containers/food/snacks/chocolatebar @@ -368,8 +371,8 @@ nutriment_amt = 2 nutriment_desc = list("chocolate" = 5) -/obj/item/weapon/reagent_containers/food/snacks/chocolatebar/New() - ..() +/obj/item/weapon/reagent_containers/food/snacks/chocolatebar/Initialize() + . = ..() reagents.add_reagent("sugar", 2) reagents.add_reagent("coco", 2) bitesize = 2 @@ -406,8 +409,8 @@ nutriment_amt = 3 nutriment_desc = list("chocolate" = 5) -/obj/item/weapon/reagent_containers/food/snacks/chocolateegg/New() - ..() +/obj/item/weapon/reagent_containers/food/snacks/chocolateegg/Initialize() + . = ..() reagents.add_reagent("sugar", 2) reagents.add_reagent("coco", 2) bitesize = 2 @@ -427,8 +430,8 @@ icon_state = "donut1" nutriment_amt = 3 -/obj/item/weapon/reagent_containers/food/snacks/donut/normal/New() - ..() +/obj/item/weapon/reagent_containers/food/snacks/donut/normal/Initialize() + . = ..() reagents.add_reagent("nutriment", 3) reagents.add_reagent("sprinkles", 1) src.bitesize = 3 @@ -446,8 +449,8 @@ filling_color = "#ED11E6" nutriment_amt = 2 -/obj/item/weapon/reagent_containers/food/snacks/donut/chaos/New() - ..() +/obj/item/weapon/reagent_containers/food/snacks/donut/chaos/Initialize() + . = ..() reagents.add_reagent("sprinkles", 1) bitesize = 10 var/chaosselect = pick(1,2,3,4,5,6,7,8,9,10) @@ -486,8 +489,8 @@ center_of_mass = list("x"=16, "y"=11) nutriment_amt = 3 -/obj/item/weapon/reagent_containers/food/snacks/donut/jelly/New() - ..() +/obj/item/weapon/reagent_containers/food/snacks/donut/jelly/Initialize() + . = ..() reagents.add_reagent("sprinkles", 1) reagents.add_reagent("berryjuice", 5) bitesize = 5 @@ -505,8 +508,8 @@ center_of_mass = list("x"=16, "y"=11) nutriment_amt = 3 -/obj/item/weapon/reagent_containers/food/snacks/donut/slimejelly/New() - ..() +/obj/item/weapon/reagent_containers/food/snacks/donut/slimejelly/Initialize() + . = ..() reagents.add_reagent("sprinkles", 1) reagents.add_reagent("slimejelly", 5) bitesize = 5 @@ -524,8 +527,8 @@ center_of_mass = list("x"=16, "y"=11) nutriment_amt = 3 -/obj/item/weapon/reagent_containers/food/snacks/donut/cherryjelly/New() - ..() +/obj/item/weapon/reagent_containers/food/snacks/donut/cherryjelly/Initialize() + . = ..() reagents.add_reagent("sprinkles", 1) reagents.add_reagent("cherryjelly", 5) bitesize = 5 @@ -543,8 +546,8 @@ volume = 10 center_of_mass = list("x"=16, "y"=13) -/obj/item/weapon/reagent_containers/food/snacks/egg/New() - ..() +/obj/item/weapon/reagent_containers/food/snacks/egg/Initialize() + . = ..() reagents.add_reagent("egg", 3) /obj/item/weapon/reagent_containers/food/snacks/egg/afterattack(obj/O as obj, mob/user as mob, proximity) @@ -609,8 +612,8 @@ filling_color = "#FFDF78" center_of_mass = list("x"=16, "y"=14) -/obj/item/weapon/reagent_containers/food/snacks/friedegg/New() - ..() +/obj/item/weapon/reagent_containers/food/snacks/friedegg/Initialize() + . = ..() reagents.add_reagent("protein", 3) reagents.add_reagent("sodiumchloride", 1) reagents.add_reagent("blackpepper", 1) @@ -622,8 +625,8 @@ icon_state = "egg" filling_color = "#FFFFFF" -/obj/item/weapon/reagent_containers/food/snacks/boiledegg/New() - ..() +/obj/item/weapon/reagent_containers/food/snacks/boiledegg/Initialize() + . = ..() reagents.add_reagent("protein", 2) /obj/item/weapon/reagent_containers/food/snacks/organ @@ -634,8 +637,8 @@ filling_color = "#E00D34" center_of_mass = list("x"=16, "y"=16) -/obj/item/weapon/reagent_containers/food/snacks/organ/New() - ..() +/obj/item/weapon/reagent_containers/food/snacks/organ/Initialize() + . = ..() reagents.add_reagent("protein", rand(3,5)) reagents.add_reagent("toxin", rand(1,3)) src.bitesize = 3 @@ -649,8 +652,8 @@ nutriment_amt = 3 nutriment_desc = list("tofu" = 3, "goeyness" = 3) -/obj/item/weapon/reagent_containers/food/snacks/tofu/New() - ..() +/obj/item/weapon/reagent_containers/food/snacks/tofu/Initialize() + . = ..() src.bitesize = 3 /obj/item/weapon/reagent_containers/food/snacks/tofurkey @@ -662,8 +665,8 @@ nutriment_amt = 12 nutriment_desc = list("turkey" = 3, "tofu" = 5, "goeyness" = 4) -/obj/item/weapon/reagent_containers/food/snacks/tofurkey/New() - ..() +/obj/item/weapon/reagent_containers/food/snacks/tofurkey/Initialize() + . = ..() reagents.add_reagent("stoxin", 3) bitesize = 3 @@ -676,8 +679,8 @@ nutriment_amt = 3 nutriment_desc = list("dryness" = 2, "bread" = 2) -/obj/item/weapon/reagent_containers/food/snacks/stuffing/New() - ..() +/obj/item/weapon/reagent_containers/food/snacks/stuffing/Initialize() + . = ..() bitesize = 1 /obj/item/weapon/reagent_containers/food/snacks/carpmeat @@ -687,8 +690,8 @@ filling_color = "#FFDEFE" center_of_mass = list("x"=17, "y"=13) -/obj/item/weapon/reagent_containers/food/snacks/carpmeat/New() - ..() +/obj/item/weapon/reagent_containers/food/snacks/carpmeat/Initialize() + . = ..() reagents.add_reagent("protein", 3) reagents.add_reagent("carpotoxin", 3) src.bitesize = 6 @@ -700,8 +703,8 @@ filling_color = "#FFDEFE" center_of_mass = list("x"=16, "y"=13) -/obj/item/weapon/reagent_containers/food/snacks/fishfingers/New() - ..() +/obj/item/weapon/reagent_containers/food/snacks/fishfingers/Initialize() + . = ..() reagents.add_reagent("protein", 4) reagents.add_reagent("carpotoxin", 3) bitesize = 3 @@ -715,8 +718,8 @@ nutriment_amt = 3 nutriment_desc = list("raw" = 2, "mushroom" = 2) -/obj/item/weapon/reagent_containers/food/snacks/hugemushroomslice/New() - ..() +/obj/item/weapon/reagent_containers/food/snacks/hugemushroomslice/Initialize() + . = ..() reagents.add_reagent("psilocybin", 3) src.bitesize = 6 @@ -729,8 +732,8 @@ nutriment_amt = 3 nutriment_desc = list("raw" = 2, "tomato" = 3) -/obj/item/weapon/reagent_containers/food/snacks/tomatomeat/New() - ..() +/obj/item/weapon/reagent_containers/food/snacks/tomatomeat/Initialize() + . = ..() src.bitesize = 6 /obj/item/weapon/reagent_containers/food/snacks/bearmeat @@ -740,8 +743,8 @@ filling_color = "#DB0000" center_of_mass = list("x"=16, "y"=10) -/obj/item/weapon/reagent_containers/food/snacks/bearmeat/New() - ..() +/obj/item/weapon/reagent_containers/food/snacks/bearmeat/Initialize() + . = ..() reagents.add_reagent("protein", 12) reagents.add_reagent("hyperzine", 5) src.bitesize = 3 @@ -753,8 +756,8 @@ filling_color = "#43DE18" center_of_mass = list("x"=16, "y"=10) -/obj/item/weapon/reagent_containers/food/snacks/xenomeat/New() - ..() +/obj/item/weapon/reagent_containers/food/snacks/xenomeat/Initialize() + . = ..() reagents.add_reagent("protein", 6) reagents.add_reagent("pacid",6) src.bitesize = 6 @@ -766,8 +769,8 @@ filling_color = "#43DE18" center_of_mass = list("x"=16, "y"=10) -/obj/item/weapon/reagent_containers/food/snacks/xenomeat/spidermeat/New() - ..() +/obj/item/weapon/reagent_containers/food/snacks/xenomeat/spidermeat/Initialize() + . = ..() reagents.add_reagent("spidertoxin",6) reagents.remove_reagent("pacid",6) src.bitesize = 6 @@ -779,8 +782,8 @@ filling_color = "#DB0000" center_of_mass = list("x"=16, "y"=16) -/obj/item/weapon/reagent_containers/food/snacks/meatball/New() - ..() +/obj/item/weapon/reagent_containers/food/snacks/meatball/Initialize() + . = ..() reagents.add_reagent("protein", 3) bitesize = 2 @@ -791,8 +794,8 @@ filling_color = "#DB0000" center_of_mass = list("x"=16, "y"=16) -/obj/item/weapon/reagent_containers/food/snacks/sausage/New() - ..() +/obj/item/weapon/reagent_containers/food/snacks/sausage/Initialize() + . = ..() reagents.add_reagent("protein", 6) bitesize = 2 @@ -805,8 +808,8 @@ var/warm var/list/heated_reagents -/obj/item/weapon/reagent_containers/food/snacks/donkpocket/New() - ..() +/obj/item/weapon/reagent_containers/food/snacks/donkpocket/Initialize() + . = ..() reagents.add_reagent("nutriment", 2) reagents.add_reagent("protein", 2) @@ -854,8 +857,8 @@ filling_color = "#F2B6EA" center_of_mass = list("x"=15, "y"=11) -/obj/item/weapon/reagent_containers/food/snacks/brainburger/New() - ..() +/obj/item/weapon/reagent_containers/food/snacks/brainburger/Initialize() + . = ..() reagents.add_reagent("protein", 6) reagents.add_reagent("alkysine", 6) bitesize = 2 @@ -869,8 +872,8 @@ nutriment_desc = list("buns" = 3, "spookiness" = 3) nutriment_amt = 2 -/obj/item/weapon/reagent_containers/food/snacks/ghostburger/New() - ..() +/obj/item/weapon/reagent_containers/food/snacks/ghostburger/Initialize() + . = ..() bitesize = 2 /obj/item/weapon/reagent_containers/food/snacks/human @@ -884,8 +887,8 @@ icon_state = "hburger" center_of_mass = list("x"=16, "y"=11) -/obj/item/weapon/reagent_containers/food/snacks/human/burger/New() - ..() +/obj/item/weapon/reagent_containers/food/snacks/human/burger/Initialize() + . = ..() reagents.add_reagent("protein", 6) bitesize = 2 @@ -897,8 +900,8 @@ nutriment_amt = 2 nutriment_desc = list("cheese" = 2, "bun" = 2) -/obj/item/weapon/reagent_containers/food/snacks/cheeseburger/New() - ..() +/obj/item/weapon/reagent_containers/food/snacks/cheeseburger/Initialize() + . = ..() reagents.add_reagent("protein", 2) /obj/item/weapon/reagent_containers/food/snacks/monkeyburger @@ -910,8 +913,8 @@ nutriment_amt = 3 nutriment_desc = list("bun" = 2) -/obj/item/weapon/reagent_containers/food/snacks/monkeyburger/New() - ..() +/obj/item/weapon/reagent_containers/food/snacks/monkeyburger/Initialize() + . = ..() reagents.add_reagent("protein", 3) bitesize = 2 @@ -922,8 +925,8 @@ filling_color = "#FFDEFE" center_of_mass = list("x"=16, "y"=10) -/obj/item/weapon/reagent_containers/food/snacks/fishburger/New() - ..() +/obj/item/weapon/reagent_containers/food/snacks/fishburger/Initialize() + . = ..() reagents.add_reagent("protein", 6) reagents.add_reagent("carpotoxin", 3) bitesize = 3 @@ -937,8 +940,8 @@ nutriment_amt = 6 nutriment_desc = list("bun" = 2, "pseudo-soy meat" = 3) -/obj/item/weapon/reagent_containers/food/snacks/tofuburger/New() - ..() +/obj/item/weapon/reagent_containers/food/snacks/tofuburger/Initialize() + . = ..() bitesize = 2 /obj/item/weapon/reagent_containers/food/snacks/roburger @@ -950,8 +953,8 @@ nutriment_amt = 2 nutriment_desc = list("bun" = 2, "metal" = 3) -/obj/item/weapon/reagent_containers/food/snacks/roburger/New() - ..() +/obj/item/weapon/reagent_containers/food/snacks/roburger/Initialize() + . = ..() bitesize = 2 /obj/item/weapon/reagent_containers/food/snacks/roburgerbig @@ -962,8 +965,8 @@ volume = 100 center_of_mass = list("x"=16, "y"=11) -/obj/item/weapon/reagent_containers/food/snacks/roburgerbig/New() - ..() +/obj/item/weapon/reagent_containers/food/snacks/roburgerbig/Initialize() + . = ..() bitesize = 0.1 /obj/item/weapon/reagent_containers/food/snacks/xenoburger @@ -973,8 +976,8 @@ filling_color = "#43DE18" center_of_mass = list("x"=16, "y"=11) -/obj/item/weapon/reagent_containers/food/snacks/xenoburger/New() - ..() +/obj/item/weapon/reagent_containers/food/snacks/xenoburger/Initialize() + . = ..() reagents.add_reagent("protein", 8) bitesize = 2 @@ -987,8 +990,8 @@ nutriment_amt = 6 nutriment_desc = list("bun" = 2, "clown shoe" = 3) -/obj/item/weapon/reagent_containers/food/snacks/clownburger/New() - ..() +/obj/item/weapon/reagent_containers/food/snacks/clownburger/Initialize() + . = ..() bitesize = 2 /obj/item/weapon/reagent_containers/food/snacks/mimeburger @@ -1000,8 +1003,8 @@ nutriment_amt = 6 nutriment_desc = list("bun" = 2, "face paint" = 3) -/obj/item/weapon/reagent_containers/food/snacks/mimeburger/New() - ..() +/obj/item/weapon/reagent_containers/food/snacks/mimeburger/Initialize() + . = ..() reagents.add_reagent("nutriment", 6) bitesize = 2 @@ -1013,8 +1016,8 @@ filling_color = "#FFF9A8" center_of_mass = list("x"=16, "y"=13) -/obj/item/weapon/reagent_containers/food/snacks/omelette/New() - ..() +/obj/item/weapon/reagent_containers/food/snacks/omelette/Initialize() + . = ..() reagents.add_reagent("protein", 8) bitesize = 1 @@ -1027,8 +1030,8 @@ nutriment_amt = 6 nutriment_desc = list("sweetness" = 3, "muffin" = 3) -/obj/item/weapon/reagent_containers/food/snacks/muffin/New() - ..() +/obj/item/weapon/reagent_containers/food/snacks/muffin/Initialize() + . = ..() reagents.add_reagent("nutriment", 6) bitesize = 2 @@ -1042,8 +1045,8 @@ nutriment_amt = 4 nutriment_desc = list("pie" = 3, "cream" = 2) -/obj/item/weapon/reagent_containers/food/snacks/pie/New() - ..() +/obj/item/weapon/reagent_containers/food/snacks/pie/Initialize() + . = ..() reagents.add_reagent("banana",5) bitesize = 3 @@ -1062,8 +1065,8 @@ nutriment_amt = 4 nutriment_desc = list("sweetness" = 2, "pie" = 3) -/obj/item/weapon/reagent_containers/food/snacks/berryclafoutis/New() - ..() +/obj/item/weapon/reagent_containers/food/snacks/berryclafoutis/Initialize() + . = ..() reagents.add_reagent("berryjuice", 5) bitesize = 3 @@ -1077,8 +1080,8 @@ nutriment_amt = 8 nutriment_desc = list("waffle" = 8) -/obj/item/weapon/reagent_containers/food/snacks/waffles/New() - ..() +/obj/item/weapon/reagent_containers/food/snacks/waffles/Initialize() + . = ..() bitesize = 2 /obj/item/weapon/reagent_containers/food/snacks/eggplantparm @@ -1091,8 +1094,8 @@ nutriment_amt = 6 nutriment_desc = list("cheese" = 3, "eggplant" = 3) -/obj/item/weapon/reagent_containers/food/snacks/eggplantparm/New() - ..() +/obj/item/weapon/reagent_containers/food/snacks/eggplantparm/Initialize() + . = ..() bitesize = 2 /obj/item/weapon/reagent_containers/food/snacks/soylentgreen @@ -1103,8 +1106,8 @@ filling_color = "#B8E6B5" center_of_mass = list("x"=15, "y"=11) -/obj/item/weapon/reagent_containers/food/snacks/soylentgreen/New() - ..() +/obj/item/weapon/reagent_containers/food/snacks/soylentgreen/Initialize() + . = ..() reagents.add_reagent("protein", 10) bitesize = 2 @@ -1118,8 +1121,8 @@ nutriment_amt = 10 nutriment_desc = list("some sort of protein" = 10) //seasoned VERY well. -/obj/item/weapon/reagent_containers/food/snacks/soylenviridians/New() - ..() +/obj/item/weapon/reagent_containers/food/snacks/soylenviridians/Initialize() + . = ..() bitesize = 2 /obj/item/weapon/reagent_containers/food/snacks/meatpie @@ -1130,8 +1133,8 @@ filling_color = "#948051" center_of_mass = list("x"=16, "y"=13) -/obj/item/weapon/reagent_containers/food/snacks/meatpie/New() - ..() +/obj/item/weapon/reagent_containers/food/snacks/meatpie/Initialize() + . = ..() reagents.add_reagent("protein", 10) bitesize = 2 @@ -1145,8 +1148,8 @@ nutriment_amt = 10 nutriment_desc = list("tofu" = 2, "pie" = 8) -/obj/item/weapon/reagent_containers/food/snacks/tofupie/New() - ..() +/obj/item/weapon/reagent_containers/food/snacks/tofupie/Initialize() + . = ..() bitesize = 2 /obj/item/weapon/reagent_containers/food/snacks/amanita_pie @@ -1158,7 +1161,7 @@ nutriment_amt = 5 nutriment_desc = list("sweetness" = 3, "mushroom" = 3, "pie" = 2) -/obj/item/weapon/reagent_containers/food/snacks/amanita_pie/New() +/obj/item/weapon/reagent_containers/food/snacks/amanita_pie/Initialize() ..() reagents.add_reagent("amatoxin", 3) reagents.add_reagent("psilocybin", 1) @@ -1173,7 +1176,7 @@ nutriment_amt = 8 nutriment_desc = list("heartiness" = 2, "mushroom" = 3, "pie" = 3) -/obj/item/weapon/reagent_containers/food/snacks/plump_pie/New() +/obj/item/weapon/reagent_containers/food/snacks/plump_pie/Initialize() ..() if(prob(10)) name = "exceptional plump pie" @@ -1192,8 +1195,8 @@ filling_color = "#43DE18" center_of_mass = list("x"=16, "y"=13) -/obj/item/weapon/reagent_containers/food/snacks/xemeatpie/New() - ..() +/obj/item/weapon/reagent_containers/food/snacks/xemeatpie/Initialize() + . = ..() reagents.add_reagent("protein", 10) bitesize = 2 @@ -1205,8 +1208,8 @@ filling_color = "#43DE18" center_of_mass = list("x"=17, "y"=9) -/obj/item/weapon/reagent_containers/food/snacks/wingfangchu/New() - ..() +/obj/item/weapon/reagent_containers/food/snacks/wingfangchu/Initialize() + . = ..() reagents.add_reagent("protein", 6) bitesize = 2 @@ -1218,8 +1221,8 @@ filling_color = "#A85340" center_of_mass = list("x"=17, "y"=15) -/obj/item/weapon/reagent_containers/food/snacks/human/kabob/New() - ..() +/obj/item/weapon/reagent_containers/food/snacks/human/kabob/Initialize() + . = ..() reagents.add_reagent("protein", 8) bitesize = 2 @@ -1231,8 +1234,8 @@ filling_color = "#A85340" center_of_mass = list("x"=17, "y"=15) -/obj/item/weapon/reagent_containers/food/snacks/monkeykabob/New() - ..() +/obj/item/weapon/reagent_containers/food/snacks/monkeykabob/Initialize() + . = ..() reagents.add_reagent("protein", 8) bitesize = 2 @@ -1247,8 +1250,8 @@ nutriment_amt = 8 nutriment_desc = list("tofu" = 3, "metal" = 1) -/obj/item/weapon/reagent_containers/food/snacks/tofukabob/New() - ..() +/obj/item/weapon/reagent_containers/food/snacks/tofukabob/Initialize() + . = ..() bitesize = 2 /obj/item/weapon/reagent_containers/food/snacks/cubancarp @@ -1261,8 +1264,8 @@ nutriment_amt = 3 nutriment_desc = list("toasted bread" = 3) -/obj/item/weapon/reagent_containers/food/snacks/cubancarp/New() - ..() +/obj/item/weapon/reagent_containers/food/snacks/cubancarp/Initialize() + . = ..() reagents.add_reagent("protein", 3) reagents.add_reagent("carpotoxin", 3) reagents.add_reagent("capsaicin", 3) @@ -1280,8 +1283,8 @@ nutriment_desc = list("popcorn" = 3) -/obj/item/weapon/reagent_containers/food/snacks/popcorn/New() - ..() +/obj/item/weapon/reagent_containers/food/snacks/popcorn/Initialize() + . = ..() unpopped = rand(1,10) bitesize = 0.1 //this snack is supposed to be eating during looooong time. And this it not dinner food! --rastaf0 @@ -1299,7 +1302,7 @@ filling_color = "#631212" center_of_mass = list("x"=15, "y"=9) -/obj/item/weapon/reagent_containers/food/snacks/sosjerky/New() +/obj/item/weapon/reagent_containers/food/snacks/sosjerky/Initialize() ..() reagents.add_reagent("protein", 4) bitesize = 2 @@ -1314,7 +1317,7 @@ nutriment_amt = 6 nutriment_desc = list("dried raisins" = 6) -/obj/item/weapon/reagent_containers/food/snacks/no_raisin/New() +/obj/item/weapon/reagent_containers/food/snacks/no_raisin/Initialize() ..() reagents.add_reagent("nutriment", 6) @@ -1325,8 +1328,8 @@ filling_color = "#FFE591" center_of_mass = list("x"=15, "y"=11) -/obj/item/weapon/reagent_containers/food/snacks/spacetwinkie/New() - ..() +/obj/item/weapon/reagent_containers/food/snacks/spacetwinkie/Initialize() + . = ..() reagents.add_reagent("sugar", 4) bitesize = 2 @@ -1340,8 +1343,8 @@ nutriment_amt = 4 nutriment_desc = list("cheese" = 5, "chips" = 2) -/obj/item/weapon/reagent_containers/food/snacks/cheesiehonkers/New() - ..() +/obj/item/weapon/reagent_containers/food/snacks/cheesiehonkers/Initialize() + . = ..() bitesize = 2 /obj/item/weapon/reagent_containers/food/snacks/syndicake @@ -1354,8 +1357,8 @@ nutriment_amt = 4 nutriment_desc = list("sweetness" = 3, "cake" = 1) -/obj/item/weapon/reagent_containers/food/snacks/syndicake/New() - ..() +/obj/item/weapon/reagent_containers/food/snacks/syndicake/Initialize() + . = ..() reagents.add_reagent("doctorsdelight", 5) bitesize = 3 @@ -1368,8 +1371,8 @@ nutriment_amt = 3 nutriment_desc = list("baked potato" = 3) -/obj/item/weapon/reagent_containers/food/snacks/loadedbakedpotato/New() - ..() +/obj/item/weapon/reagent_containers/food/snacks/loadedbakedpotato/Initialize() + . = ..() reagents.add_reagent("protein", 3) bitesize = 2 @@ -1383,8 +1386,8 @@ nutriment_amt = 4 nutriment_desc = list("fresh fries" = 4) -/obj/item/weapon/reagent_containers/food/snacks/fries/New() - ..() +/obj/item/weapon/reagent_containers/food/snacks/fries/Initialize() + . = ..() bitesize = 2 /obj/item/weapon/reagent_containers/food/snacks/mashedpotato @@ -1397,8 +1400,8 @@ nutriment_amt = 4 nutriment_desc = list("fluffy mashed potatoes" = 4) -/obj/item/weapon/reagent_containers/food/snacks/mashedpotato/New() - ..() +/obj/item/weapon/reagent_containers/food/snacks/mashedpotato/Initialize() + . = ..() bitesize = 2 /obj/item/weapon/reagent_containers/food/snacks/bangersandmash @@ -1411,8 +1414,8 @@ nutriment_amt = 4 nutriment_desc = list("fluffy potato" = 3, "sausage" = 2) -/obj/item/weapon/reagent_containers/food/snacks/bangersandmash/New() - ..() +/obj/item/weapon/reagent_containers/food/snacks/bangersandmash/Initialize() + . = ..() reagents.add_reagent("protein", 3) bitesize = 4 @@ -1426,8 +1429,8 @@ nutriment_amt = 4 nutriment_desc = list("cheesy potato" = 4) -/obj/item/weapon/reagent_containers/food/snacks/cheesymash/New() - ..() +/obj/item/weapon/reagent_containers/food/snacks/cheesymash/Initialize() + . = ..() reagents.add_reagent("protein", 3) bitesize = 2 @@ -1438,8 +1441,8 @@ filling_color = "#FF0000" center_of_mass = list("x"=16, "y"=7) -/obj/item/weapon/reagent_containers/food/snacks/blackpudding/New() - ..() +/obj/item/weapon/reagent_containers/food/snacks/blackpudding/Initialize() + . = ..() reagents.add_reagent("protein", 2) reagents.add_reagent("blood", 5) bitesize = 3 @@ -1454,8 +1457,8 @@ nutriment_amt = 2 nutriment_desc = list("slime" = 2, "soy" = 2) -/obj/item/weapon/reagent_containers/food/snacks/soydope/New() - ..() +/obj/item/weapon/reagent_containers/food/snacks/soydope/Initialize() + . = ..() bitesize = 2 /obj/item/weapon/reagent_containers/food/snacks/spagetti @@ -1467,8 +1470,8 @@ nutriment_amt = 1 nutriment_desc = list("noodles" = 2) -/obj/item/weapon/reagent_containers/food/snacks/spagetti/New() - ..() +/obj/item/weapon/reagent_containers/food/snacks/spagetti/Initialize() + . = ..() bitesize = 1 /obj/item/weapon/reagent_containers/food/snacks/cheesyfries @@ -1481,8 +1484,8 @@ nutriment_amt = 4 nutriment_desc = list("fresh fries" = 3, "cheese" = 3) -/obj/item/weapon/reagent_containers/food/snacks/cheesyfries/New() - ..() +/obj/item/weapon/reagent_containers/food/snacks/cheesyfries/Initialize() + . = ..() reagents.add_reagent("protein", 2) bitesize = 2 @@ -1495,8 +1498,8 @@ nutriment_amt = 3 nutriment_desc = list("fortune cookie" = 2) -/obj/item/weapon/reagent_containers/food/snacks/fortunecookie/New() - ..() +/obj/item/weapon/reagent_containers/food/snacks/fortunecookie/Initialize() + . = ..() bitesize = 2 /obj/item/weapon/reagent_containers/food/snacks/badrecipe @@ -1506,8 +1509,8 @@ filling_color = "#211F02" center_of_mass = list("x"=16, "y"=12) -/obj/item/weapon/reagent_containers/food/snacks/badrecipe/New() - ..() +/obj/item/weapon/reagent_containers/food/snacks/badrecipe/Initialize() + . = ..() reagents.add_reagent("toxin", 1) reagents.add_reagent("carbon", 3) bitesize = 2 @@ -1520,8 +1523,8 @@ filling_color = "#7A3D11" center_of_mass = list("x"=16, "y"=13) -/obj/item/weapon/reagent_containers/food/snacks/meatsteak/New() - ..() +/obj/item/weapon/reagent_containers/food/snacks/meatsteak/Initialize() + . = ..() reagents.add_reagent("protein", 4) reagents.add_reagent("sodiumchloride", 1) reagents.add_reagent("blackpepper", 1) @@ -1537,8 +1540,8 @@ nutriment_amt = 6 nutriment_desc = list("mushroom" = 6) -/obj/item/weapon/reagent_containers/food/snacks/spacylibertyduff/New() - ..() +/obj/item/weapon/reagent_containers/food/snacks/spacylibertyduff/Initialize() + . = ..() reagents.add_reagent("psilocybin", 6) bitesize = 3 @@ -1552,8 +1555,8 @@ nutriment_amt = 6 nutriment_desc = list("jelly" = 3, "mushroom" = 3) -/obj/item/weapon/reagent_containers/food/snacks/amanitajelly/New() - ..() +/obj/item/weapon/reagent_containers/food/snacks/amanitajelly/Initialize() + . = ..() reagents.add_reagent("amatoxin", 6) reagents.add_reagent("psilocybin", 3) bitesize = 3 @@ -1568,8 +1571,8 @@ nutriment_amt = 5 nutriment_desc = list("poppy seeds" = 2, "pretzel" = 3) -/obj/item/weapon/reagent_containers/food/snacks/poppypretzel/New() - ..() +/obj/item/weapon/reagent_containers/food/snacks/poppypretzel/Initialize() + . = ..() bitesize = 2 /obj/item/weapon/reagent_containers/food/snacks/meatballsoup @@ -1580,8 +1583,8 @@ filling_color = "#785210" center_of_mass = list("x"=16, "y"=8) -/obj/item/weapon/reagent_containers/food/snacks/meatballsoup/New() - ..() +/obj/item/weapon/reagent_containers/food/snacks/meatballsoup/Initialize() + . = ..() reagents.add_reagent("protein", 8) reagents.add_reagent("water", 5) bitesize = 5 @@ -1592,8 +1595,8 @@ icon_state = "slimesoup" //nonexistant? filling_color = "#C4DBA0" -/obj/item/weapon/reagent_containers/food/snacks/slimesoup/New() - ..() +/obj/item/weapon/reagent_containers/food/snacks/slimesoup/Initialize() + . = ..() reagents.add_reagent("slimejelly", 5) reagents.add_reagent("water", 10) bitesize = 5 @@ -1605,8 +1608,8 @@ filling_color = "#FF0000" center_of_mass = list("x"=16, "y"=7) -/obj/item/weapon/reagent_containers/food/snacks/bloodsoup/New() - ..() +/obj/item/weapon/reagent_containers/food/snacks/bloodsoup/Initialize() + . = ..() reagents.add_reagent("protein", 2) reagents.add_reagent("blood", 10) reagents.add_reagent("water", 5) @@ -1621,8 +1624,8 @@ nutriment_amt = 4 nutriment_desc = list("salt" = 1, "the worst joke" = 3) -/obj/item/weapon/reagent_containers/food/snacks/clownstears/New() - ..() +/obj/item/weapon/reagent_containers/food/snacks/clownstears/Initialize() + . = ..() reagents.add_reagent("banana", 5) reagents.add_reagent("water", 10) bitesize = 5 @@ -1637,8 +1640,8 @@ nutriment_amt = 8 nutriment_desc = list("carot" = 2, "corn" = 2, "eggplant" = 2, "potato" = 2) -/obj/item/weapon/reagent_containers/food/snacks/vegetablesoup/New() - ..() +/obj/item/weapon/reagent_containers/food/snacks/vegetablesoup/Initialize() + . = ..() reagents.add_reagent("water", 5) bitesize = 5 @@ -1652,8 +1655,8 @@ nutriment_amt = 8 nutriment_desc = list("salad" = 4, "egg" = 2, "potato" = 2) -/obj/item/weapon/reagent_containers/food/snacks/nettlesoup/New() - ..() +/obj/item/weapon/reagent_containers/food/snacks/nettlesoup/Initialize() + . = ..() reagents.add_reagent("water", 5) reagents.add_reagent("tricordrazine", 5) bitesize = 5 @@ -1668,8 +1671,8 @@ nutriment_amt = 1 nutriment_desc = list("backwash" = 1) -/obj/item/weapon/reagent_containers/food/snacks/mysterysoup/New() - ..() +/obj/item/weapon/reagent_containers/food/snacks/mysterysoup/Initialize() + . = ..() var/mysteryselect = pick(1,2,3,4,5,6,7,8,9,10) switch(mysteryselect) if(1) @@ -1716,8 +1719,8 @@ filling_color = "#D1F4FF" center_of_mass = list("x"=16, "y"=11) -/obj/item/weapon/reagent_containers/food/snacks/wishsoup/New() - ..() +/obj/item/weapon/reagent_containers/food/snacks/wishsoup/Initialize() + . = ..() reagents.add_reagent("water", 10) bitesize = 5 if(prob(25)) @@ -1734,8 +1737,8 @@ nutriment_amt = 3 nutriment_desc = list("chilli peppers" = 3) -/obj/item/weapon/reagent_containers/food/snacks/hotchili/New() - ..() +/obj/item/weapon/reagent_containers/food/snacks/hotchili/Initialize() + . = ..() reagents.add_reagent("protein", 3) reagents.add_reagent("capsaicin", 3) reagents.add_reagent("tomatojuice", 2) @@ -1751,8 +1754,8 @@ nutriment_amt = 3 nutriment_desc = list("ice peppers" = 3) -/obj/item/weapon/reagent_containers/food/snacks/coldchili/New() - ..() +/obj/item/weapon/reagent_containers/food/snacks/coldchili/Initialize() + . = ..() reagents.add_reagent("protein", 3) reagents.add_reagent("frostoil", 3) reagents.add_reagent("tomatojuice", 2) @@ -1770,8 +1773,8 @@ var/wrapped = 0 var/monkey_type = "Monkey" -/obj/item/weapon/reagent_containers/food/snacks/monkeycube/New() - ..() +/obj/item/weapon/reagent_containers/food/snacks/monkeycube/Initialize() + . = ..() reagents.add_reagent("protein", 10) /obj/item/weapon/reagent_containers/food/snacks/monkeycube/attack_self(mob/user as mob) @@ -1848,8 +1851,8 @@ nutriment_amt = 6 nutriment_desc = list("magic" = 3, "buns" = 3) -/obj/item/weapon/reagent_containers/food/snacks/spellburger/New() - ..() +/obj/item/weapon/reagent_containers/food/snacks/spellburger/Initialize() + . = ..() bitesize = 2 /obj/item/weapon/reagent_containers/food/snacks/bigbiteburger @@ -1861,8 +1864,8 @@ nutriment_amt = 4 nutriment_desc = list("buns" = 4) -/obj/item/weapon/reagent_containers/food/snacks/bigbiteburger/New() - ..() +/obj/item/weapon/reagent_containers/food/snacks/bigbiteburger/Initialize() + . = ..() reagents.add_reagent("protein", 10) bitesize = 3 @@ -1876,8 +1879,8 @@ nutriment_amt = 2 nutriment_desc = list("tortilla" = 3, "corn" = 3) -/obj/item/weapon/reagent_containers/food/snacks/enchiladas/New() - ..() +/obj/item/weapon/reagent_containers/food/snacks/enchiladas/Initialize() + . = ..() reagents.add_reagent("protein", 6) reagents.add_reagent("capsaicin", 6) bitesize = 4 @@ -1890,8 +1893,8 @@ filling_color = "#5C3C11" center_of_mass = list("x"=16, "y"=13) -/obj/item/weapon/reagent_containers/food/snacks/monkeysdelight/New() - ..() +/obj/item/weapon/reagent_containers/food/snacks/monkeysdelight/Initialize() + . = ..() reagents.add_reagent("protein", 10) reagents.add_reagent("banana", 5) reagents.add_reagent("blackpepper", 1) @@ -1907,8 +1910,8 @@ nutriment_amt = 6 nutriment_desc = list("french bread" = 6) -/obj/item/weapon/reagent_containers/food/snacks/baguette/New() - ..() +/obj/item/weapon/reagent_containers/food/snacks/baguette/Initialize() + . = ..() reagents.add_reagent("blackpepper", 1) reagents.add_reagent("sodiumchloride", 1) bitesize = 3 @@ -1922,8 +1925,8 @@ nutriment_amt = 3 nutriment_desc = list("salt" = 1, "chips" = 3) -/obj/item/weapon/reagent_containers/food/snacks/fishandchips/New() - ..() +/obj/item/weapon/reagent_containers/food/snacks/fishandchips/Initialize() + . = ..() reagents.add_reagent("protein", 3) reagents.add_reagent("carpotoxin", 3) bitesize = 3 @@ -1938,8 +1941,8 @@ nutriment_amt = 3 nutriment_desc = list("bread" = 3, "cheese" = 3) -/obj/item/weapon/reagent_containers/food/snacks/sandwich/New() - ..() +/obj/item/weapon/reagent_containers/food/snacks/sandwich/Initialize() + . = ..() reagents.add_reagent("protein", 3) bitesize = 2 @@ -1953,8 +1956,8 @@ nutriment_amt = 3 nutriment_desc = list("toasted bread" = 3, "cheese" = 3) -/obj/item/weapon/reagent_containers/food/snacks/toastedsandwich/New() - ..() +/obj/item/weapon/reagent_containers/food/snacks/toastedsandwich/Initialize() + . = ..() reagents.add_reagent("protein", 3) reagents.add_reagent("carbon", 2) bitesize = 2 @@ -1968,8 +1971,8 @@ nutriment_amt = 3 nutriment_desc = list("toasted bread" = 3, "cheese" = 3) -/obj/item/weapon/reagent_containers/food/snacks/grilledcheese/New() - ..() +/obj/item/weapon/reagent_containers/food/snacks/grilledcheese/Initialize() + . = ..() reagents.add_reagent("protein", 4) bitesize = 2 @@ -1983,8 +1986,8 @@ nutriment_amt = 5 nutriment_desc = list("soup" = 5) -/obj/item/weapon/reagent_containers/food/snacks/tomatosoup/New() - ..() +/obj/item/weapon/reagent_containers/food/snacks/tomatosoup/Initialize() + . = ..() reagents.add_reagent("tomatojuice", 10) bitesize = 3 @@ -1998,8 +2001,8 @@ nutriment_amt = 5 nutriment_desc = list("onion" = 2, "soup" = 2) -/obj/item/weapon/reagent_containers/food/snacks/onionsoup/New() - ..() +/obj/item/weapon/reagent_containers/food/snacks/onionsoup/Initialize() + . = ..() bitesize = 3 /obj/item/weapon/reagent_containers/food/snacks/onionrings @@ -2012,8 +2015,8 @@ nutriment_amt = 5 nutriment_desc = list("onion" = 2) -/obj/item/weapon/reagent_containers/food/snacks/onionrings/New() - ..() +/obj/item/weapon/reagent_containers/food/snacks/onionrings/Initialize() + . = ..() bitesize = 2 /obj/item/weapon/reagent_containers/food/snacks/rofflewaffles @@ -2026,8 +2029,8 @@ nutriment_amt = 8 nutriment_desc = list("waffle" = 7, "sweetness" = 1) -/obj/item/weapon/reagent_containers/food/snacks/rofflewaffles/New() - ..() +/obj/item/weapon/reagent_containers/food/snacks/rofflewaffles/Initialize() + . = ..() reagents.add_reagent("psilocybin", 8) bitesize = 4 @@ -2040,8 +2043,8 @@ nutriment_amt = 6 nutriment_desc = list("tomato" = 2, "potato" = 2, "carrot" = 2, "eggplant" = 2, "mushroom" = 2) -/obj/item/weapon/reagent_containers/food/snacks/stew/New() - ..() +/obj/item/weapon/reagent_containers/food/snacks/stew/Initialize() + . = ..() reagents.add_reagent("protein", 4) reagents.add_reagent("tomatojuice", 5) reagents.add_reagent("imidazoline", 5) @@ -2058,16 +2061,16 @@ nutriment_amt = 1 nutriment_desc = list("toasted bread" = 2) -/obj/item/weapon/reagent_containers/food/snacks/jelliedtoast/New() - ..() +/obj/item/weapon/reagent_containers/food/snacks/jelliedtoast/Initialize() + . = ..() bitesize = 3 -/obj/item/weapon/reagent_containers/food/snacks/jelliedtoast/cherry/New() - ..() +/obj/item/weapon/reagent_containers/food/snacks/jelliedtoast/cherry/Initialize() + . = ..() reagents.add_reagent("cherryjelly", 5) -/obj/item/weapon/reagent_containers/food/snacks/jelliedtoast/slime/New() - ..() +/obj/item/weapon/reagent_containers/food/snacks/jelliedtoast/slime/Initialize() + . = ..() reagents.add_reagent("slimejelly", 5) /obj/item/weapon/reagent_containers/food/snacks/jellyburger @@ -2079,16 +2082,16 @@ nutriment_amt = 5 nutriment_desc = list("buns" = 5) -/obj/item/weapon/reagent_containers/food/snacks/jellyburger/New() - ..() +/obj/item/weapon/reagent_containers/food/snacks/jellyburger/Initialize() + . = ..() bitesize = 2 -/obj/item/weapon/reagent_containers/food/snacks/jellyburger/slime/New() - ..() +/obj/item/weapon/reagent_containers/food/snacks/jellyburger/slime/Initialize() + . = ..() reagents.add_reagent("slimejelly", 5) -/obj/item/weapon/reagent_containers/food/snacks/jellyburger/cherry/New() - ..() +/obj/item/weapon/reagent_containers/food/snacks/jellyburger/cherry/Initialize() + . = ..() reagents.add_reagent("cherryjelly", 5) /obj/item/weapon/reagent_containers/food/snacks/milosoup @@ -2100,8 +2103,8 @@ nutriment_amt = 8 nutriment_desc = list("soy" = 8) -/obj/item/weapon/reagent_containers/food/snacks/milosoup/New() - ..() +/obj/item/weapon/reagent_containers/food/snacks/milosoup/Initialize() + . = ..() reagents.add_reagent("water", 5) bitesize = 4 @@ -2114,8 +2117,8 @@ nutriment_amt = 8 nutriment_desc = list("soy" = 4, "tomato" = 4) -/obj/item/weapon/reagent_containers/food/snacks/stewedsoymeat/New() - ..() +/obj/item/weapon/reagent_containers/food/snacks/stewedsoymeat/Initialize() + . = ..() bitesize = 2 /obj/item/weapon/reagent_containers/food/snacks/boiledspagetti @@ -2128,8 +2131,8 @@ nutriment_amt = 2 nutriment_desc = list("noodles" = 2) -/obj/item/weapon/reagent_containers/food/snacks/boiledspagetti/New() - ..() +/obj/item/weapon/reagent_containers/food/snacks/boiledspagetti/Initialize() + . = ..() bitesize = 2 /obj/item/weapon/reagent_containers/food/snacks/boiledrice @@ -2142,8 +2145,8 @@ nutriment_amt = 2 nutriment_desc = list("rice" = 2) -/obj/item/weapon/reagent_containers/food/snacks/boiledrice/New() - ..() +/obj/item/weapon/reagent_containers/food/snacks/boiledrice/Initialize() + . = ..() bitesize = 2 /obj/item/weapon/reagent_containers/food/snacks/ricepudding @@ -2156,8 +2159,8 @@ nutriment_amt = 4 nutriment_desc = list("rice" = 2) -/obj/item/weapon/reagent_containers/food/snacks/ricepudding/New() - ..() +/obj/item/weapon/reagent_containers/food/snacks/ricepudding/Initialize() + . = ..() bitesize = 2 /obj/item/weapon/reagent_containers/food/snacks/pastatomato @@ -2170,8 +2173,8 @@ nutriment_amt = 6 nutriment_desc = list("tomato" = 3, "noodles" = 3) -/obj/item/weapon/reagent_containers/food/snacks/pastatomato/New() - ..() +/obj/item/weapon/reagent_containers/food/snacks/pastatomato/Initialize() + . = ..() reagents.add_reagent("tomatojuice", 10) bitesize = 4 @@ -2185,8 +2188,8 @@ nutriment_amt = 4 nutriment_desc = list("noodles" = 4) -/obj/item/weapon/reagent_containers/food/snacks/meatballspagetti/New() - ..() +/obj/item/weapon/reagent_containers/food/snacks/meatballspagetti/Initialize() + . = ..() reagents.add_reagent("protein", 4) bitesize = 2 @@ -2199,8 +2202,8 @@ nutriment_amt = 4 nutriment_desc = list("noodles" = 4) -/obj/item/weapon/reagent_containers/food/snacks/spesslaw/New() - ..() +/obj/item/weapon/reagent_containers/food/snacks/spesslaw/Initialize() + . = ..() reagents.add_reagent("protein", 4) bitesize = 2 @@ -2214,8 +2217,8 @@ nutriment_amt = 3 nutriment_desc = list("carrot" = 3, "salt" = 1) -/obj/item/weapon/reagent_containers/food/snacks/carrotfries/New() - ..() +/obj/item/weapon/reagent_containers/food/snacks/carrotfries/Initialize() + . = ..() reagents.add_reagent("imidazoline", 3) bitesize = 2 @@ -2228,8 +2231,8 @@ nutriment_amt = 25 nutriment_desc = list("buns" = 25) -/obj/item/weapon/reagent_containers/food/snacks/superbiteburger/New() - ..() +/obj/item/weapon/reagent_containers/food/snacks/superbiteburger/Initialize() + . = ..() reagents.add_reagent("protein", 25) bitesize = 10 @@ -2242,8 +2245,8 @@ nutriment_amt = 3 nutriment_desc = list("apple" = 3, "caramel" = 3, "sweetness" = 2) -/obj/item/weapon/reagent_containers/food/snacks/candiedapple/New() - ..() +/obj/item/weapon/reagent_containers/food/snacks/candiedapple/Initialize() + . = ..() bitesize = 3 /obj/item/weapon/reagent_containers/food/snacks/applepie @@ -2255,8 +2258,8 @@ nutriment_amt = 4 nutriment_desc = list("sweetness" = 2, "apple" = 2, "pie" = 2) -/obj/item/weapon/reagent_containers/food/snacks/applepie/New() - ..() +/obj/item/weapon/reagent_containers/food/snacks/applepie/Initialize() + . = ..() bitesize = 3 /obj/item/weapon/reagent_containers/food/snacks/cherrypie @@ -2268,8 +2271,8 @@ nutriment_amt = 4 nutriment_desc = list("sweetness" = 2, "cherry" = 2, "pie" = 2) -/obj/item/weapon/reagent_containers/food/snacks/cherrypie/New() - ..() +/obj/item/weapon/reagent_containers/food/snacks/cherrypie/Initialize() + . = ..() bitesize = 3 /obj/item/weapon/reagent_containers/food/snacks/twobread @@ -2281,8 +2284,8 @@ nutriment_amt = 2 nutriment_desc = list("sourness" = 2, "bread" = 2) -/obj/item/weapon/reagent_containers/food/snacks/twobread/New() - ..() +/obj/item/weapon/reagent_containers/food/snacks/twobread/Initialize() + . = ..() bitesize = 3 /obj/item/weapon/reagent_containers/food/snacks/jellysandwich @@ -2295,16 +2298,16 @@ nutriment_amt = 2 nutriment_desc = list("bread" = 2) -/obj/item/weapon/reagent_containers/food/snacks/jellysandwich/New() - ..() +/obj/item/weapon/reagent_containers/food/snacks/jellysandwich/Initialize() + . = ..() bitesize = 3 -/obj/item/weapon/reagent_containers/food/snacks/jellysandwich/slime/New() - ..() +/obj/item/weapon/reagent_containers/food/snacks/jellysandwich/slime/Initialize() + . = ..() reagents.add_reagent("slimejelly", 5) -/obj/item/weapon/reagent_containers/food/snacks/jellysandwich/cherry/New() - ..() +/obj/item/weapon/reagent_containers/food/snacks/jellysandwich/cherry/Initialize() + . = ..() reagents.add_reagent("cherryjelly", 5) /obj/item/weapon/reagent_containers/food/snacks/boiledslimecore @@ -2312,8 +2315,8 @@ desc = "A boiled red thing." icon_state = "boiledslimecore" //nonexistant? -/obj/item/weapon/reagent_containers/food/snacks/boiledslimecore/New() - ..() +/obj/item/weapon/reagent_containers/food/snacks/boiledslimecore/Initialize() + . = ..() reagents.add_reagent("slimejelly", 5) bitesize = 3 @@ -2324,8 +2327,8 @@ filling_color = "#F2F2F2" center_of_mass = list("x"=16, "y"=14) -/obj/item/weapon/reagent_containers/food/snacks/mint/New() - ..() +/obj/item/weapon/reagent_containers/food/snacks/mint/Initialize() + . = ..() reagents.add_reagent("mint", 1) bitesize = 1 @@ -2339,8 +2342,8 @@ nutriment_amt = 8 nutriment_desc = list("mushroom" = 8, "milk" = 2) -/obj/item/weapon/reagent_containers/food/snacks/mushroomsoup/New() - ..() +/obj/item/weapon/reagent_containers/food/snacks/mushroomsoup/Initialize() + . = ..() bitesize = 3 /obj/item/weapon/reagent_containers/food/snacks/plumphelmetbiscuit @@ -2352,8 +2355,8 @@ nutriment_amt = 5 nutriment_desc = list("mushroom" = 4) -/obj/item/weapon/reagent_containers/food/snacks/plumphelmetbiscuit/New() - ..() +/obj/item/weapon/reagent_containers/food/snacks/plumphelmetbiscuit/Initialize() + . = ..() if(prob(10)) name = "exceptional plump helmet biscuit" desc = "Microwave is taken by a fey mood! It has cooked an exceptional plump helmet biscuit!" @@ -2371,8 +2374,8 @@ filling_color = "#F0F2E4" center_of_mass = list("x"=17, "y"=10) -/obj/item/weapon/reagent_containers/food/snacks/chawanmushi/New() - ..() +/obj/item/weapon/reagent_containers/food/snacks/chawanmushi/Initialize() + . = ..() reagents.add_reagent("protein", 5) bitesize = 1 @@ -2386,8 +2389,8 @@ nutriment_amt = 8 nutriment_desc = list("tomato" = 4, "beet" = 4) -/obj/item/weapon/reagent_containers/food/snacks/beetsoup/New() - ..() +/obj/item/weapon/reagent_containers/food/snacks/beetsoup/Initialize() + . = ..() name = pick(list("borsch","bortsch","borstch","borsh","borshch","borscht")) bitesize = 2 @@ -2401,8 +2404,8 @@ nutriment_amt = 8 nutriment_desc = list("salad" = 2, "tomato" = 2, "carrot" = 2, "apple" = 2) -/obj/item/weapon/reagent_containers/food/snacks/tossedsalad/New() - ..() +/obj/item/weapon/reagent_containers/food/snacks/tossedsalad/Initialize() + . = ..() bitesize = 3 /obj/item/weapon/reagent_containers/food/snacks/validsalad @@ -2415,8 +2418,8 @@ nutriment_amt = 6 nutriment_desc = list("100% real salad") -/obj/item/weapon/reagent_containers/food/snacks/validsalad/New() - ..() +/obj/item/weapon/reagent_containers/food/snacks/validsalad/Initialize() + . = ..() reagents.add_reagent("protein", 2) bitesize = 3 @@ -2430,8 +2433,8 @@ nutriment_amt = 8 nutriment_desc = list("apple" = 8) -/obj/item/weapon/reagent_containers/food/snacks/appletart/New() - ..() +/obj/item/weapon/reagent_containers/food/snacks/appletart/Initialize() + . = ..() reagents.add_reagent("gold", 5) bitesize = 3 @@ -2462,8 +2465,8 @@ * whole item, transferring the reagents and deleting the whole item, which may * have performance implications. */ -/obj/item/weapon/reagent_containers/food/snacks/slice/New() - ..() +/obj/item/weapon/reagent_containers/food/snacks/slice/Initialize() + . = ..() if(filled) var/obj/item/weapon/reagent_containers/food/snacks/whole = new whole_path() if(whole && whole.slices_num) @@ -2483,8 +2486,8 @@ nutriment_desc = list("bread" = 10) nutriment_amt = 10 -/obj/item/weapon/reagent_containers/food/snacks/sliceable/meatbread/New() - ..() +/obj/item/weapon/reagent_containers/food/snacks/sliceable/meatbread/Initialize() + . = ..() reagents.add_reagent("protein", 20) bitesize = 2 @@ -2512,8 +2515,8 @@ nutriment_desc = list("bread" = 10) nutriment_amt = 10 -/obj/item/weapon/reagent_containers/food/snacks/sliceable/xenomeatbread/New() - ..() +/obj/item/weapon/reagent_containers/food/snacks/sliceable/xenomeatbread/Initialize() + . = ..() reagents.add_reagent("protein", 20) bitesize = 2 @@ -2542,8 +2545,8 @@ nutriment_desc = list("bread" = 10) nutriment_amt = 10 -/obj/item/weapon/reagent_containers/food/snacks/sliceable/bananabread/New() - ..() +/obj/item/weapon/reagent_containers/food/snacks/sliceable/bananabread/Initialize() + . = ..() reagents.add_reagent("banana", 20) bitesize = 2 @@ -2571,8 +2574,8 @@ nutriment_desc = list("tofu" = 10) nutriment_amt = 10 -/obj/item/weapon/reagent_containers/food/snacks/sliceable/tofubread/New() - ..() +/obj/item/weapon/reagent_containers/food/snacks/sliceable/tofubread/Initialize() + . = ..() bitesize = 2 /obj/item/weapon/reagent_containers/food/snacks/slice/tofubread @@ -2600,8 +2603,8 @@ nutriment_desc = list("cake" = 10, "sweetness" = 10, "carrot" = 15) nutriment_amt = 25 -/obj/item/weapon/reagent_containers/food/snacks/sliceable/carrotcake/New() - ..() +/obj/item/weapon/reagent_containers/food/snacks/sliceable/carrotcake/Initialize() + . = ..() reagents.add_reagent("imidazoline", 10) bitesize = 2 @@ -2629,8 +2632,8 @@ nutriment_desc = list("cake" = 10, "sweetness" = 10, "slime" = 15) nutriment_amt = 5 -/obj/item/weapon/reagent_containers/food/snacks/sliceable/braincake/New() - ..() +/obj/item/weapon/reagent_containers/food/snacks/sliceable/braincake/Initialize() + . = ..() reagents.add_reagent("protein", 25) reagents.add_reagent("alkysine", 10) bitesize = 2 @@ -2659,8 +2662,8 @@ nutriment_desc = list("cake" = 10, "cream" = 10, "cheese" = 15) nutriment_amt = 10 -/obj/item/weapon/reagent_containers/food/snacks/sliceable/cheesecake/New() - ..() +/obj/item/weapon/reagent_containers/food/snacks/sliceable/cheesecake/Initialize() + . = ..() reagents.add_reagent("protein", 15) bitesize = 2 @@ -2811,8 +2814,8 @@ nutriment_desc = list("cheese" = 10) nutriment_amt = 10 -/obj/item/weapon/reagent_containers/food/snacks/sliceable/cheesewheel/New() - ..() +/obj/item/weapon/reagent_containers/food/snacks/sliceable/cheesewheel/Initialize() + . = ..() reagents.add_reagent("protein", 10) bitesize = 2 @@ -2835,8 +2838,8 @@ nutriment_desc = list("cake" = 10, "sweetness" = 10) nutriment_amt = 20 -/obj/item/weapon/reagent_containers/food/snacks/sliceable/birthdaycake/New() - ..() +/obj/item/weapon/reagent_containers/food/snacks/sliceable/birthdaycake/Initialize() + . = ..() reagents.add_reagent("sprinkles", 10) bitesize = 3 @@ -2864,8 +2867,8 @@ nutriment_desc = list("bread" = 6) nutriment_amt = 6 -/obj/item/weapon/reagent_containers/food/snacks/sliceable/bread/New() - ..() +/obj/item/weapon/reagent_containers/food/snacks/sliceable/bread/Initialize() + . = ..() bitesize = 2 /obj/item/weapon/reagent_containers/food/snacks/slice/bread @@ -2893,8 +2896,8 @@ nutriment_desc = list("bread" = 6, "cream" = 3, "cheese" = 3) nutriment_amt = 5 -/obj/item/weapon/reagent_containers/food/snacks/sliceable/creamcheesebread/New() - ..() +/obj/item/weapon/reagent_containers/food/snacks/sliceable/creamcheesebread/Initialize() + . = ..() reagents.add_reagent("protein", 15) bitesize = 2 @@ -2996,8 +2999,8 @@ nutriment_desc = list("pizza crust" = 10, "tomato" = 10, "cheese" = 15) nutriment_amt = 35 -/obj/item/weapon/reagent_containers/food/snacks/sliceable/pizza/margherita/New() - ..() +/obj/item/weapon/reagent_containers/food/snacks/sliceable/pizza/margherita/Initialize() + . = ..() reagents.add_reagent("protein", 5) reagents.add_reagent("tomatojuice", 6) bitesize = 2 @@ -3024,8 +3027,8 @@ nutriment_desc = list("pizza crust" = 10, "tomato" = 10, "cheese" = 15) nutriment_amt = 10 -/obj/item/weapon/reagent_containers/food/snacks/sliceable/pizza/meatpizza/New() - ..() +/obj/item/weapon/reagent_containers/food/snacks/sliceable/pizza/meatpizza/Initialize() + . = ..() reagents.add_reagent("protein", 34) reagents.add_reagent("tomatojuice", 6) bitesize = 2 @@ -3052,8 +3055,8 @@ nutriment_desc = list("pizza crust" = 10, "tomato" = 10, "cheese" = 5, "mushroom" = 10) nutriment_amt = 35 -/obj/item/weapon/reagent_containers/food/snacks/sliceable/pizza/mushroompizza/New() - ..() +/obj/item/weapon/reagent_containers/food/snacks/sliceable/pizza/mushroompizza/Initialize() + . = ..() reagents.add_reagent("protein", 5) bitesize = 2 @@ -3079,8 +3082,8 @@ nutriment_desc = list("pizza crust" = 10, "tomato" = 10, "cheese" = 5, "eggplant" = 5, "carrot" = 5, "corn" = 5) nutriment_amt = 25 -/obj/item/weapon/reagent_containers/food/snacks/sliceable/pizza/vegetablepizza/New() - ..() +/obj/item/weapon/reagent_containers/food/snacks/sliceable/pizza/vegetablepizza/Initialize() + . = ..() reagents.add_reagent("protein", 5) reagents.add_reagent("tomatojuice", 6) reagents.add_reagent("imidazoline", 12) @@ -3108,8 +3111,8 @@ nutriment_desc = list("stale pizza crust" = 10, "moldy tomato" = 10, "moldy cheese" = 5) nutriment_amt = 10 -/obj/item/weapon/reagent_containers/food/snacks/sliceable/pizza/oldpizza/New() - ..() +/obj/item/weapon/reagent_containers/food/snacks/sliceable/pizza/oldpizza/Initialize() + . = ..() reagents.add_reagent("protein", 5) reagents.add_reagent("tomatojuice", 6) reagents.add_reagent("mold", 8) @@ -3314,8 +3317,8 @@ nutriment_amt = 6 nutriment_desc = list("a chorus of flavor" = 6) -/obj/item/weapon/reagent_containers/food/snacks/dionaroast/New() - ..() +/obj/item/weapon/reagent_containers/food/snacks/dionaroast/Initialize() + . = ..() reagents.add_reagent("radium", 2) bitesize = 2 @@ -3332,8 +3335,8 @@ nutriment_amt = 3 nutriment_desc = list("uncooked dough" = 3) -/obj/item/weapon/reagent_containers/food/snacks/dough/New() - ..() +/obj/item/weapon/reagent_containers/food/snacks/dough/Initialize() + . = ..() reagents.add_reagent("protein", 1) // Dough + rolling pin = flat dough @@ -3353,8 +3356,8 @@ slices_num = 3 center_of_mass = list("x"=16, "y"=16) -/obj/item/weapon/reagent_containers/food/snacks/sliceable/flatdough/New() - ..() +/obj/item/weapon/reagent_containers/food/snacks/sliceable/flatdough/Initialize() + . = ..() reagents.add_reagent("protein", 1) reagents.add_reagent("nutriment", 3) @@ -3370,8 +3373,8 @@ nutriment_amt = 1 nutriment_desc = list("uncooked dough" = 1) -/obj/item/weapon/reagent_containers/food/snacks/doughslice/New() - ..() +/obj/item/weapon/reagent_containers/food/snacks/doughslice/Initialize() + . = ..() /obj/item/weapon/reagent_containers/food/snacks/bun name = "bun" @@ -3383,8 +3386,8 @@ nutriment_amt = 4 nutriment_desc = "bun" -/obj/item/weapon/reagent_containers/food/snacks/bun/New() - ..() +/obj/item/weapon/reagent_containers/food/snacks/bun/Initialize() + . = ..() /obj/item/weapon/reagent_containers/food/snacks/bun/attackby(obj/item/weapon/W as obj, mob/user as mob) // Bun + meatball = burger @@ -3439,8 +3442,8 @@ nutriment_amt = 8 nutriment_desc = list("bun" = 8) -/obj/item/weapon/reagent_containers/food/snacks/bunbun/New() - ..() +/obj/item/weapon/reagent_containers/food/snacks/bunbun/Initialize() + . = ..() /obj/item/weapon/reagent_containers/food/snacks/taco name = "taco" @@ -3450,8 +3453,8 @@ center_of_mass = list("x"=21, "y"=12) nutriment_amt = 4 nutriment_desc = list("cheese" = 2,"taco shell" = 2) -/obj/item/weapon/reagent_containers/food/snacks/taco/New() - ..() +/obj/item/weapon/reagent_containers/food/snacks/taco/Initialize() + . = ..() reagents.add_reagent("protein", 3) /obj/item/weapon/reagent_containers/food/snacks/rawcutlet @@ -3462,8 +3465,8 @@ bitesize = 1 center_of_mass = list("x"=17, "y"=20) -/obj/item/weapon/reagent_containers/food/snacks/rawcutlet/New() - ..() +/obj/item/weapon/reagent_containers/food/snacks/rawcutlet/Initialize() + . = ..() reagents.add_reagent("protein", 1) /obj/item/weapon/reagent_containers/food/snacks/cutlet @@ -3474,8 +3477,8 @@ bitesize = 2 center_of_mass = list("x"=17, "y"=20) -/obj/item/weapon/reagent_containers/food/snacks/cutlet/New() - ..() +/obj/item/weapon/reagent_containers/food/snacks/cutlet/Initialize() + . = ..() reagents.add_reagent("protein", 2) /obj/item/weapon/reagent_containers/food/snacks/rawmeatball @@ -3486,8 +3489,8 @@ bitesize = 2 center_of_mass = list("x"=16, "y"=15) -/obj/item/weapon/reagent_containers/food/snacks/rawmeatball/New() - ..() +/obj/item/weapon/reagent_containers/food/snacks/rawmeatball/Initialize() + . = ..() reagents.add_reagent("protein", 2) /obj/item/weapon/reagent_containers/food/snacks/hotdog @@ -3497,16 +3500,16 @@ bitesize = 2 center_of_mass = list("x"=16, "y"=17) -/obj/item/weapon/reagent_containers/food/snacks/hotdog/New() - ..() +/obj/item/weapon/reagent_containers/food/snacks/hotdog/Initialize() + . = ..() reagents.add_reagent("protein", 6) /obj/item/weapon/reagent_containers/food/snacks/hotdog/old name = "old hotdog" desc = "Covered in mold. You're not gonna eat that, are you?" -/obj/item/weapon/reagent_containers/food/snacks/hotdog/old/New() - ..() +/obj/item/weapon/reagent_containers/food/snacks/hotdog/old/Initialize() + . = ..() reagents.add_reagent("mold", 6) /obj/item/weapon/reagent_containers/food/snacks/flatbread @@ -3519,8 +3522,8 @@ nutriment_amt = 3 nutriment_desc = list("bread" = 3) -/obj/item/weapon/reagent_containers/food/snacks/flatbread/New() - ..() +/obj/item/weapon/reagent_containers/food/snacks/flatbread/Initialize() + . = ..() // potato + knife = raw sticks /obj/item/weapon/reagent_containers/food/snacks/grown/attackby(obj/item/weapon/W, mob/user) @@ -3541,8 +3544,8 @@ nutriment_amt = 3 nutriment_desc = list("raw potato" = 3) -/obj/item/weapon/reagent_containers/food/snacks/rawsticks/New() - ..() +/obj/item/weapon/reagent_containers/food/snacks/rawsticks/Initialize() + . = ..() /obj/item/weapon/reagent_containers/food/snacks/liquidfood name = "\improper LiquidFood Ration" @@ -3554,8 +3557,8 @@ nutriment_amt = 20 nutriment_desc = list("chalk" = 6) -/obj/item/weapon/reagent_containers/food/snacks/liquidfood/New() - ..() +/obj/item/weapon/reagent_containers/food/snacks/liquidfood/Initialize() + . = ..() reagents.add_reagent("iron", 3) bitesize = 4 @@ -3569,8 +3572,8 @@ nutriment_amt = 6 nutriment_desc = list("bread" = 2, "sweetness" = 3) -/obj/item/weapon/reagent_containers/food/snacks/tastybread/New() - ..() +/obj/item/weapon/reagent_containers/food/snacks/tastybread/Initialize() + . = ..() bitesize = 2 /obj/item/weapon/reagent_containers/food/snacks/skrellsnacks @@ -3582,8 +3585,8 @@ nutriment_amt = 10 nutriment_desc = list("mushroom" = 5, "salt" = 5) -/obj/item/weapon/reagent_containers/food/snacks/skrellsnacks/New() - ..() +/obj/item/weapon/reagent_containers/food/snacks/skrellsnacks/Initialize() + . = ..() bitesize = 3 /obj/item/weapon/reagent_containers/food/snacks/unajerky @@ -3594,7 +3597,7 @@ filling_color = "#631212" center_of_mass = list("x"=15, "y"=9) -/obj/item/weapon/reagent_containers/food/snacks/unajerky/New() +/obj/item/weapon/reagent_containers/food/snacks/unajerky/Initialize() ..() reagents.add_reagent("protein", 8) reagents.add_reagent("capsaicin", 2) @@ -3608,8 +3611,8 @@ nutriment_amt = 6 nutriment_desc = list("french bread" = 6) -/obj/item/weapon/reagent_containers/food/snacks/croissant/New() - ..() +/obj/item/weapon/reagent_containers/food/snacks/croissant/Initialize() + . = ..() bitesize = 2 /obj/item/weapon/reagent_containers/food/snacks/meatbun @@ -3619,8 +3622,8 @@ icon_state = "meatbun" nutriment_amt = 4 -/obj/item/weapon/reagent_containers/food/snacks/meatbun/New() - ..() +/obj/item/weapon/reagent_containers/food/snacks/meatbun/Initialize() + . = ..() bitesize = 2 reagents.add_reagent("protein", 4) @@ -3631,8 +3634,8 @@ icon_state = "sashimi" nutriment_amt = 6 -/obj/item/weapon/reagent_containers/food/snacks/sashimi/New() - ..() +/obj/item/weapon/reagent_containers/food/snacks/sashimi/Initialize() + . = ..() reagents.add_reagent("protein", 2) reagents.add_reagent("carpotoxin", 2) bitesize = 3 @@ -3644,8 +3647,8 @@ icon_state = "benedict" nutriment_amt = 4 -/obj/item/weapon/reagent_containers/food/snacks/benedict/New() - ..() +/obj/item/weapon/reagent_containers/food/snacks/benedict/Initialize() + . = ..() reagents.add_reagent("protein", 2) bitesize = 2 @@ -3657,8 +3660,8 @@ nutriment_amt = 4 nutriment_desc = list("beans" = 4) -/obj/item/weapon/reagent_containers/food/snacks/beans/New() - ..() +/obj/item/weapon/reagent_containers/food/snacks/beans/Initialize() + . = ..() bitesize = 2 /obj/item/weapon/reagent_containers/food/snacks/sugarcookie @@ -3669,8 +3672,8 @@ nutriment_amt = 5 nutriment_desc = list("sweetness" = 4, "cookie" = 1) -/obj/item/weapon/reagent_containers/food/snacks/sugarcookie/New() - ..() +/obj/item/weapon/reagent_containers/food/snacks/sugarcookie/Initialize() + . = ..() bitesize = 1 /obj/item/weapon/reagent_containers/food/snacks/berrymuffin @@ -3682,8 +3685,8 @@ nutriment_amt = 6 nutriment_desc = list("sweetness" = 2, "muffin" = 2, "berries" = 2) -/obj/item/weapon/reagent_containers/food/snacks/berrymuffin/New() - ..() +/obj/item/weapon/reagent_containers/food/snacks/berrymuffin/Initialize() + . = ..() reagents.add_reagent("nutriment", 6) bitesize = 2 @@ -3696,8 +3699,8 @@ nutriment_amt = 6 nutriment_desc = list("spookiness" = 4, "muffin" = 1, "berries" = 1) -/obj/item/weapon/reagent_containers/food/snacks/ghostmuffin/New() - ..() +/obj/item/weapon/reagent_containers/food/snacks/ghostmuffin/Initialize() + . = ..() reagents.add_reagent("nutriment", 6) bitesize = 2 @@ -3710,8 +3713,8 @@ nutriment_amt = 4 nutriment_desc = list("egg" = 4) -/obj/item/weapon/reagent_containers/food/snacks/eggroll/New() - ..() +/obj/item/weapon/reagent_containers/food/snacks/eggroll/Initialize() + . = ..() reagents.add_reagent("nutriment", 6) reagents.add_reagent("protein", 2) bitesize = 2 @@ -3724,8 +3727,8 @@ nutriment_amt = 10 nutriment_desc = list("fruit" = 10) -/obj/item/weapon/reagent_containers/food/snacks/fruitsalad/New() - ..() +/obj/item/weapon/reagent_containers/food/snacks/fruitsalad/Initialize() + . = ..() reagents.add_reagent("nutriment", 10) bitesize = 4 @@ -3738,8 +3741,8 @@ nutriment_amt = 6 nutriment_desc = list("rice" = 2, "egg" = 4) -/obj/item/weapon/reagent_containers/food/snacks/eggbowl/New() - ..() +/obj/item/weapon/reagent_containers/food/snacks/eggbowl/Initialize() + . = ..() reagents.add_reagent("nutriment", 6) reagents.add_reagent("protein", 4) bitesize = 2 @@ -3753,8 +3756,8 @@ nutriment_amt = 6 nutriment_desc = list("rice" = 2, "meat" = 4) -/obj/item/weapon/reagent_containers/food/snacks/porkbowl/New() - ..() +/obj/item/weapon/reagent_containers/food/snacks/porkbowl/Initialize() + . = ..() reagents.add_reagent("nutriment", 6) reagents.add_reagent("protein", 4) bitesize = 2 @@ -3766,8 +3769,8 @@ nutriment_amt = 1 nutriment_desc = list("bread" = 1) -/obj/item/weapon/reagent_containers/food/snacks/tortilla/New() - ..() +/obj/item/weapon/reagent_containers/food/snacks/tortilla/Initialize() + . = ..() reagents.add_reagent("nutriment", 2) bitesize = 2 @@ -3778,8 +3781,8 @@ nutriment_amt = 6 nutriment_desc = list("tortilla" = 3, "meat" = 3) -/obj/item/weapon/reagent_containers/food/snacks/meatburrito/New() - ..() +/obj/item/weapon/reagent_containers/food/snacks/meatburrito/Initialize() + . = ..() reagents.add_reagent("protein", 6) bitesize = 2 @@ -3790,8 +3793,8 @@ nutriment_amt = 6 nutriment_desc = list("tortilla" = 3, "cheese" = 3) -/obj/item/weapon/reagent_containers/food/snacks/cheeseburrito/New() - ..() +/obj/item/weapon/reagent_containers/food/snacks/cheeseburrito/Initialize() + . = ..() reagents.add_reagent("nutriment", 6) reagents.add_reagent("protein", 2) bitesize = 2 @@ -3803,8 +3806,8 @@ nutriment_amt = 6 nutriment_desc = list("chili peppers" = 5, "tortilla" = 1) -/obj/item/weapon/reagent_containers/food/snacks/fuegoburrito/New() - ..() +/obj/item/weapon/reagent_containers/food/snacks/fuegoburrito/Initialize() + . = ..() reagents.add_reagent("nutriment", 6) reagents.add_reagent("capsaicin", 4) bitesize = 2 @@ -3816,8 +3819,8 @@ nutriment_amt = 2 nutriment_desc = list("salt" = 1) -/obj/item/weapon/reagent_containers/food/snacks/nachos/New() - ..() +/obj/item/weapon/reagent_containers/food/snacks/nachos/Initialize() + . = ..() reagents.add_reagent("nutriment", 1) bitesize = 1 @@ -3828,8 +3831,8 @@ nutriment_amt = 5 nutriment_desc = list("salt" = 2, "cheese" = 3) -/obj/item/weapon/reagent_containers/food/snacks/cheesenachos/New() - ..() +/obj/item/weapon/reagent_containers/food/snacks/cheesenachos/Initialize() + . = ..() reagents.add_reagent("nutriment", 5) reagents.add_reagent("protein", 2) bitesize = 2 @@ -3841,8 +3844,8 @@ nutriment_amt = 6 nutriment_desc = list("salt" = 1, "cheese" = 2, "chili peppers" = 3) -/obj/item/weapon/reagent_containers/food/snacks/cubannachos/New() - ..() +/obj/item/weapon/reagent_containers/food/snacks/cubannachos/Initialize() + . = ..() reagents.add_reagent("nutriment", 5) reagents.add_reagent("capsaicin", 4) bitesize = 2 @@ -3854,8 +3857,8 @@ nutriment_amt = 6 nutriment_desc = list("meat" = 3, "pastry" = 3) -/obj/item/weapon/reagent_containers/food/snacks/piginblanket/New() - ..() +/obj/item/weapon/reagent_containers/food/snacks/piginblanket/Initialize() + . = ..() reagents.add_reagent("nutriment", 6) reagents.add_reagent("protein", 4) bitesize = 3 \ No newline at end of file diff --git a/code/modules/food/food/snacks/meat.dm b/code/modules/food/food/snacks/meat.dm index d6ecacea48..9d472b8c34 100644 --- a/code/modules/food/food/snacks/meat.dm +++ b/code/modules/food/food/snacks/meat.dm @@ -6,8 +6,8 @@ filling_color = "#FF1C1C" center_of_mass = list("x"=16, "y"=14) -/obj/item/weapon/reagent_containers/food/snacks/meat/New() - ..() +/obj/item/weapon/reagent_containers/food/snacks/meat/Initialize() + . = ..() reagents.add_reagent("protein", 9) src.bitesize = 3 diff --git a/code/modules/food/food/snacks_vr.dm b/code/modules/food/food/snacks_vr.dm index 13b6e2e88f..9c5b398f5a 100644 --- a/code/modules/food/food/snacks_vr.dm +++ b/code/modules/food/food/snacks_vr.dm @@ -10,7 +10,7 @@ nutriment_amt = 5 nutriment_desc = list("gargonzola" = 2, "burning" = 2) -/obj/item/weapon/reagent_containers/food/snacks/my_new_food/New() +/obj/item/weapon/reagent_containers/food/snacks/my_new_food/Initialize() ..() reagents.add_reagent("protein", 2) //For meaty things. bitesize = 3 //How many reagents to transfer per bite? @@ -26,7 +26,7 @@ nutriment_desc = list("rice" = 5, "fish" = 5) nutriment_amt = 15 -/obj/item/weapon/reagent_containers/food/snacks/sliceable/sushi/New() +/obj/item/weapon/reagent_containers/food/snacks/sliceable/sushi/Initialize() ..() reagents.add_reagent("protein", 10) bitesize = 5 @@ -51,7 +51,7 @@ nutriment_amt = 5 nutriment_desc = list("tomato" = 4, "meat" = 2) -/obj/item/weapon/reagent_containers/food/snacks/lasagna/New() +/obj/item/weapon/reagent_containers/food/snacks/lasagna/Initialize() ..() reagents.add_reagent("protein", 2) //For meaty things. @@ -65,7 +65,7 @@ nutriment_amt = 6 nutriment_desc = list("meat" = 2, "vegetables" = 2, "seasoning" = 5) -/obj/item/weapon/reagent_containers/food/snacks/goulash/New() +/obj/item/weapon/reagent_containers/food/snacks/goulash/Initialize() ..() reagents.add_reagent("protein", 3) //For meaty things. reagents.add_reagent("water", 5) @@ -79,7 +79,7 @@ nutriment_amt = 5 nutriment_desc = list("vegetables" = 2, "seasoned meat" = 5) -/obj/item/weapon/reagent_containers/food/snacks/donerkebab/New() +/obj/item/weapon/reagent_containers/food/snacks/donerkebab/Initialize() ..() reagents.add_reagent("protein", 2) //For meaty things. @@ -93,7 +93,7 @@ nutriment_amt = 8 nutriment_desc = list("cooked meat" = 5) -/obj/item/weapon/reagent_containers/food/snacks/roastbeef/New() +/obj/item/weapon/reagent_containers/food/snacks/roastbeef/Initialize() ..() reagents.add_reagent("protein", 4) //For meaty things. bitesize = 2 @@ -107,7 +107,7 @@ nutriment_amt = 3 nutriment_desc = list("chocolate" = 4, "colors" = 2) -/obj/item/weapon/reagent_containers/food/snacks/reishicup/New() +/obj/item/weapon/reagent_containers/food/snacks/reishicup/Initialize() ..() reagents.add_reagent("psilocybin", 3) bitesize = 6 @@ -122,7 +122,7 @@ can_hold = list(/obj/item/weapon/reagent_containers/food/snacks/chickenwing) foldable = null -/obj/item/weapon/storage/box/wings/New() +/obj/item/weapon/storage/box/wings/Initialize() ..() for(var/i=1 to startswith) new /obj/item/weapon/reagent_containers/food/snacks/chickenwing(src) @@ -143,7 +143,7 @@ nutriment_amt = 2 nutriment_desc = list("chicken" = 2, "unplacable flavor sauce" = 4) -/obj/item/weapon/reagent_containers/food/snacks/chickenwing/New() +/obj/item/weapon/reagent_containers/food/snacks/chickenwing/Initialize() ..() reagents.add_reagent("protein", 1) bitesize = 3 @@ -158,7 +158,7 @@ nutriment_amt = 6 nutriment_desc = list("spicyness" = 4, "sourness" = 4, "tofu" = 1) -/obj/item/weapon/reagent_containers/food/snacks/hotandsoursoup/New() +/obj/item/weapon/reagent_containers/food/snacks/hotandsoursoup/Initialize() ..() bitesize = 2 @@ -172,7 +172,7 @@ nutriment_amt = 6 nutriment_desc = list("fried egg" = 2, "egg noodles" = 4) -/obj/item/weapon/reagent_containers/food/snacks/kitsuneudon/New() +/obj/item/weapon/reagent_containers/food/snacks/kitsuneudon/Initialize() ..() bitesize = 2 @@ -185,7 +185,7 @@ nutriment_amt = 6 nutriment_desc = list("sweet and spicy sauce" = 5, "chicken" = 3) -/obj/item/weapon/reagent_containers/food/snacks/generalschicken/New() +/obj/item/weapon/reagent_containers/food/snacks/generalschicken/Initialize() ..() reagents.add_reagent("protein", 4) bitesize = 2 @@ -197,7 +197,7 @@ icon_state = "grubmeat" center_of_mass = list("x"=16, "y"=10) -/obj/item/weapon/reagent_containers/food/snacks/meat/grubmeat/New() +/obj/item/weapon/reagent_containers/food/snacks/meat/grubmeat/Initialize() ..() reagents.add_reagent("protein", 1) reagents.add_reagent("shockchem", 6) @@ -214,7 +214,7 @@ nutriment_amt = 1 nutriment_desc = list("crunchy shell bits" = 5) -/obj/item/weapon/reagent_containers/food/snacks/bugball/New() +/obj/item/weapon/reagent_containers/food/snacks/bugball/Initialize() ..() reagents.add_reagent("protein", 1) reagents.add_reagent("carbon", 5) @@ -229,7 +229,7 @@ nutriment_amt = 3 nutriment_desc = list("sparkles" = 5, "ancient inca culture" =3) -/obj/item/weapon/reagent_containers/food/snacks/pillbug/New() +/obj/item/weapon/reagent_containers/food/snacks/pillbug/Initialize() ..() reagents.add_reagent("protein", 3) reagents.add_reagent("shockchem", 6) @@ -243,7 +243,7 @@ nutriment_amt = 1 nutriment_desc = list("crunchy shell bits" = 5) -/obj/item/weapon/reagent_containers/food/snacks/pillbug/New() +/obj/item/weapon/reagent_containers/food/snacks/pillbug/Initialize() ..() reagents.add_reagent("protein", 1) reagents.add_reagent("carbon", 5) @@ -258,7 +258,7 @@ nutriment_amt = 3 nutriment_desc = list("brothy sweet goodness" = 5) -/obj/item/weapon/reagent_containers/food/snacks/mammi/New() +/obj/item/weapon/reagent_containers/food/snacks/mammi/Initialize() ..() bitesize = 3 @@ -271,7 +271,7 @@ nutriment_amt = 15 nutriment_desc = list("Cheese" = 5, "eggs" = 3, "pasta" = 4, "sparkles" = 3) -/obj/item/weapon/reagent_containers/food/snacks/makaroni/New() +/obj/item/weapon/reagent_containers/food/snacks/makaroni/Initialize() ..() reagents.add_reagent("protein", 1) reagents.add_reagent("shockchem", 6) @@ -318,10 +318,10 @@ nutriment_amt = 15 nutriment_desc = list("ice" = 5, "toothache" = 1, "frozen cheese" = 5, "frozen tomato" = 5) -/obj/item/weapon/reagent_containers/food/snacks/pizza/margfrozen/New() +/obj/item/weapon/reagent_containers/food/snacks/pizza/margfrozen/Initialize() ..() bitesize = 20 - reagents.add_reagent("frostoil",3) + //reagents.add_reagent("frostoil",3) /obj/item/weapon/reagent_containers/food/snacks/sliceable/pizza/margcargo name = "Margherita" @@ -334,12 +334,12 @@ nutriment_desc = list("pizza crust" = 10, "tomato" = 15, "cheese" = 5) nutriment_amt = 10 -/obj/item/weapon/reagent_containers/food/snacks/sliceable/pizza/margcargo/New() +/obj/item/weapon/reagent_containers/food/snacks/sliceable/pizza/margcargo/Initialize() ..() reagents.add_reagent("protein", 2) reagents.add_reagent("tomatojuice", 10) bitesize = 2 - reagents.remove_reagent("frostoil",3) + //reagents.remove_reagent("frostoil",3) /obj/item/weapon/reagent_containers/food/snacks/slice/margcargo name = "Margherita slice" @@ -363,10 +363,10 @@ nutriment_amt = 15 nutriment_desc = list("ice" = 5, "toothache" = 1, "frozen meat" = 5, "frozen cow screams" = 5) -/obj/item/weapon/reagent_containers/food/snacks/pizza/meatfrozen/New() +/obj/item/weapon/reagent_containers/food/snacks/pizza/meatfrozen/Initialize() ..() bitesize = 20 - reagents.add_reagent("frostoil",3) + //reagents.add_reagent("frostoil",3) /obj/item/weapon/reagent_containers/food/snacks/sliceable/pizza/meatcargo name = "Meatpizza" @@ -379,12 +379,12 @@ nutriment_desc = list("meat" = 10, "beef" = 10, "squeaky pork" = 15, "longpig" = 5) nutriment_amt = 10 -/obj/item/weapon/reagent_containers/food/snacks/sliceable/pizza/meatcargo/New() +/obj/item/weapon/reagent_containers/food/snacks/sliceable/pizza/meatcargo/Initialize() ..() reagents.add_reagent("protein", 20) reagents.add_reagent("tomatojuice", 6) bitesize = 2 - reagents.remove_reagent("frostoil",3) + //reagents.remove_reagent("frostoil",3) /obj/item/weapon/reagent_containers/food/snacks/slice/meatcargo name = "Meatpizza slice" @@ -408,10 +408,10 @@ nutriment_amt = 15 nutriment_desc = list("ice" = 5, "toothache" = 1, "frozen mushrooms" = 5, "frozen cream" = 5) -/obj/item/weapon/reagent_containers/food/snacks/pizza/mushfrozen/New() +/obj/item/weapon/reagent_containers/food/snacks/pizza/mushfrozen/Initialize() ..() bitesize = 20 - reagents.add_reagent("frostoil",3) + //reagents.add_reagent("frostoil",3) /obj/item/weapon/reagent_containers/food/snacks/sliceable/pizza/mushcargo name = "Mushroompizza" @@ -424,11 +424,11 @@ nutriment_desc = list("pizza crust" = 10, "cheese" = 5, "creamy sauce" = 5, "mushroom" = 5) nutriment_amt = 10 -/obj/item/weapon/reagent_containers/food/snacks/sliceable/pizza/mushcargo/New() +/obj/item/weapon/reagent_containers/food/snacks/sliceable/pizza/mushcargo/Initialize() ..() reagents.add_reagent("protein", 4) bitesize = 2 - reagents.remove_reagent("frostoil",3) + //reagents.remove_reagent("frostoil",3) /obj/item/weapon/reagent_containers/food/snacks/slice/mushcargo name = "Mushroompizza slice" @@ -452,10 +452,10 @@ nutriment_amt = 15 nutriment_desc = list("ice" = 5, "toothache" = 1, "frozen vegtable chunks" = 5) -/obj/item/weapon/reagent_containers/food/snacks/pizza/vegfrozen/New() +/obj/item/weapon/reagent_containers/food/snacks/pizza/vegfrozen/Initialize() ..() bitesize = 20 - reagents.add_reagent("frostoil",3) + //reagents.add_reagent("frostoil",3) /obj/item/weapon/reagent_containers/food/snacks/sliceable/pizza/vegcargo name = "Vegetablepizza" @@ -468,13 +468,13 @@ nutriment_desc = list("pizza crust" = 10, "tomato" = 20, "cheese" = 5, "eggplant" = 5, "carrot" = 5, "corn" = 5) nutriment_amt = 5 -/obj/item/weapon/reagent_containers/food/snacks/sliceable/pizza/vegcargo/New() +/obj/item/weapon/reagent_containers/food/snacks/sliceable/pizza/vegcargo/Initialize() ..() reagents.add_reagent("protein", 4) reagents.add_reagent("tomatojuice", 15) reagents.add_reagent("imidazoline", 10) bitesize = 2 - reagents.remove_reagent("frostoil",3) + //reagents.remove_reagent("frostoil",3) /obj/item/weapon/reagent_containers/food/snacks/slice/vegcargo name = "Vegtablepizza slice" @@ -489,14 +489,29 @@ /obj/item/weapon/reagent_containers/food/snacks/slice/vegcargo/filled filled = TRUE -/obj/item/pizzabox/margherita/New() +/obj/item/pizzabox/margherita/Initialize() pizza = new /obj/item/weapon/reagent_containers/food/snacks/pizza/margfrozen(src) -/obj/item/pizzabox/vegetable/New() +/obj/item/pizzabox/vegetable/Initialize() pizza = new /obj/item/weapon/reagent_containers/food/snacks/pizza/vegfrozen(src) -/obj/item/pizzabox/mushroom/New() +/obj/item/pizzabox/mushroom/Initialize() pizza = new /obj/item/weapon/reagent_containers/food/snacks/pizza/mushfrozen(src) -/obj/item/pizzabox/meat/New() +/obj/item/pizzabox/meat/Initialize() pizza = new /obj/item/weapon/reagent_containers/food/snacks/pizza/meatfrozen(src) + +/obj/item/weapon/reagent_containers/food/snacks/liquidprotein + name = "\improper LiquidProtein Ration" + desc = "A variant of the liquidfood ration, designed for obligate carnivore species. Only barely more appealing than regular liquidfood. Should this be crunchy?" + icon = 'icons/obj/food_vr.dmi' + icon_state = "liquidprotein" + trash = /obj/item/trash/liquidprotein + filling_color = "#A8A8A8" + center_of_mass = list("x"=16, "y"=15) + +/obj/item/weapon/reagent_containers/food/snacks/liquidprotein/Initialize() + ..() + reagents.add_reagent("protein", 20) + reagents.add_reagent("iron", 3) + bitesize = 4 diff --git a/code/modules/food/food/z_custom_food_vr.dm b/code/modules/food/food/z_custom_food_vr.dm index e32d17d9ba..b9ea0d2cef 100644 --- a/code/modules/food/food/z_custom_food_vr.dm +++ b/code/modules/food/food/z_custom_food_vr.dm @@ -19,7 +19,7 @@ var/global/ingredientLimit = 20000 var/image/topping var/image/filling -/obj/item/weapon/reagent_containers/food/snacks/customizable/New(loc,ingredient) +/obj/item/weapon/reagent_containers/food/snacks/customizable/Initialize(loc,ingredient) . = ..() topping = image(icon,,"[initial(icon_state)]_top") filling = image(icon,,"[initial(icon_state)]_filling") @@ -48,10 +48,10 @@ var/global/ingredientLimit = 20000 return*/ user.drop_item() I.forceMove(src) - + if(S.reagents) S.reagents.trans_to(src,S.reagents.total_volume) - + ingredients += S if(src.addTop) @@ -123,7 +123,7 @@ var/global/ingredientLimit = 20000 return new_name /obj/item/weapon/reagent_containers/food/snacks/customizable/Destroy() - QDEL_NULL_LIST(ingredients) + QDEL_LIST_NULL(ingredients) return ..() /obj/item/weapon/reagent_containers/food/snacks/customizable/proc/drawTopping() diff --git a/code/modules/food/glass/bottle.dm b/code/modules/food/glass/bottle.dm index fcf618c201..7396076892 100644 --- a/code/modules/food/glass/bottle.dm +++ b/code/modules/food/glass/bottle.dm @@ -27,8 +27,8 @@ ..() update_icon() -/obj/item/weapon/reagent_containers/glass/bottle/New() - ..() +/obj/item/weapon/reagent_containers/glass/bottle/Initialize() + . = ..() if(!icon_state) icon_state = "bottle-[rand(1,4)]" diff --git a/code/modules/food/kitchen/cooking_machines/_cooker.dm b/code/modules/food/kitchen/cooking_machines/_cooker.dm index a361bf3007..a5215a747e 100644 --- a/code/modules/food/kitchen/cooking_machines/_cooker.dm +++ b/code/modules/food/kitchen/cooking_machines/_cooker.dm @@ -35,6 +35,10 @@ cooking_obj = null return ..() +/obj/machinery/cooker/proc/set_cooking(new_setting) + cooking = new_setting + icon_state = new_setting ? on_icon : off_icon + /obj/machinery/cooker/examine() ..() if(cooking_obj && Adjacent(usr)) @@ -113,7 +117,7 @@ user.visible_message("\The [user] puts \the [I] into \the [src].") cooking_obj = I cooking_obj.forceMove(src) - cooking = 1 + set_cooking(TRUE) icon_state = on_icon // Doop de doo. Jeopardy theme goes here. @@ -123,7 +127,7 @@ if(!cooking_obj || cooking_obj.loc != src) cooking_obj = null icon_state = off_icon - cooking = 0 + set_cooking(FALSE) return // RIP slow-moving held mobs. @@ -166,12 +170,12 @@ if(!can_burn_food) icon_state = off_icon - cooking = 0 + set_cooking(FALSE) result.forceMove(get_turf(src)) cooking_obj = null else var/failed - var/overcook_period = max(Floor(cook_time/5),1) + var/overcook_period = max(FLOOR(cook_time/5, 1),1) cooking_obj = result var/count = overcook_period while(1) @@ -192,7 +196,7 @@ failed = 1 if(failed) - cooking = 0 + set_cooking(FALSE) icon_state = off_icon break @@ -201,7 +205,7 @@ if(cooking_obj && user.Adjacent(src)) //Fixes borgs being able to teleport food in these machines to themselves. user << "You grab \the [cooking_obj] from \the [src]." user.put_in_hands(cooking_obj) - cooking = 0 + set_cooking(FALSE) cooking_obj = null icon_state = off_icon return diff --git a/code/modules/food/kitchen/cooking_machines/fryer.dm b/code/modules/food/kitchen/cooking_machines/fryer.dm index 451f84c2ff..e0dc15cc45 100644 --- a/code/modules/food/kitchen/cooking_machines/fryer.dm +++ b/code/modules/food/kitchen/cooking_machines/fryer.dm @@ -8,6 +8,22 @@ off_icon = "fryer_off" food_color = "#FFAD33" cooked_sound = 'sound/machines/ding.ogg' + var/datum/looping_sound/deep_fryer/fry_loop + +/obj/machinery/cooker/fryer/Initialize() + fry_loop = new(list(src), FALSE) + return ..() + +/obj/machinery/cooker/fryer/Destroy() + QDEL_NULL(fry_loop) + return ..() + +/obj/machinery/cooker/fryer/set_cooking(new_setting) + ..() + if(new_setting) + fry_loop.start() + else + fry_loop.stop() /obj/machinery/cooker/fryer/cook_mob(var/mob/living/victim, var/mob/user) @@ -17,16 +33,19 @@ user.visible_message("\The [user] starts pushing \the [victim] into \the [src]!") icon_state = on_icon cooking = 1 + fry_loop.start() if(!do_mob(user, victim, 20)) cooking = 0 icon_state = off_icon + fry_loop.stop() return if(!victim || !victim.Adjacent(user)) user << "Your victim slipped free!" cooking = 0 icon_state = off_icon + fry_loop.stop() return var/obj/item/organ/external/E @@ -62,4 +81,5 @@ icon_state = off_icon cooking = 0 + fry_loop.stop() return diff --git a/code/modules/food/kitchen/gibber.dm b/code/modules/food/kitchen/gibber.dm index 4799002cb5..db1c13ebde 100644 --- a/code/modules/food/kitchen/gibber.dm +++ b/code/modules/food/kitchen/gibber.dm @@ -1,236 +1,236 @@ - -/obj/machinery/gibber - name = "gibber" - desc = "The name isn't descriptive enough?" - icon = 'icons/obj/kitchen.dmi' - icon_state = "grinder" - density = 1 - anchored = 1 - req_access = list(access_kitchen,access_morgue) - - var/operating = 0 //Is it on? - var/dirty = 0 // Does it need cleaning? - var/mob/living/occupant // Mob who has been put inside - var/gib_time = 40 // Time from starting until meat appears - var/gib_throw_dir = WEST // Direction to spit meat and gibs in. - - use_power = 1 - idle_power_usage = 2 - active_power_usage = 500 - -//auto-gibs anything that bumps into it -/obj/machinery/gibber/autogibber - var/turf/input_plate - -/obj/machinery/gibber/autogibber/New() - ..() - spawn(5) - for(var/i in cardinal) - var/obj/machinery/mineral/input/input_obj = locate( /obj/machinery/mineral/input, get_step(src.loc, i) ) - if(input_obj) - if(isturf(input_obj.loc)) - input_plate = input_obj.loc - gib_throw_dir = i - qdel(input_obj) - break - - if(!input_plate) - log_misc("a [src] didn't find an input plate.") - return - -/obj/machinery/gibber/autogibber/Bumped(var/atom/A) - if(!input_plate) return - - if(ismob(A)) - var/mob/M = A - - if(M.loc == input_plate - ) - M.loc = src - M.gib() - - -/obj/machinery/gibber/New() - ..() - src.overlays += image('icons/obj/kitchen.dmi', "grjam") - -/obj/machinery/gibber/update_icon() - overlays.Cut() - if (dirty) - src.overlays += image('icons/obj/kitchen.dmi', "grbloody") - if(stat & (NOPOWER|BROKEN)) - return - if (!occupant) - src.overlays += image('icons/obj/kitchen.dmi', "grjam") - else if (operating) - src.overlays += image('icons/obj/kitchen.dmi', "gruse") - else - src.overlays += image('icons/obj/kitchen.dmi', "gridle") - -/obj/machinery/gibber/relaymove(mob/user as mob) - src.go_out() - return - -/obj/machinery/gibber/attack_hand(mob/user as mob) - if(stat & (NOPOWER|BROKEN)) - return - if(operating) - user << "The gibber is locked and running, wait for it to finish." - return - else - src.startgibbing(user) - -/obj/machinery/gibber/examine() - ..() - usr << "The safety guard is [emagged ? "disabled" : "enabled"]." - -/obj/machinery/gibber/emag_act(var/remaining_charges, var/mob/user) - emagged = !emagged - user << "You [emagged ? "disable" : "enable"] the gibber safety guard." - return 1 - -/obj/machinery/gibber/attackby(var/obj/item/W, var/mob/user) - var/obj/item/weapon/grab/G = W - - if(default_unfasten_wrench(user, W, 40)) - return - - if(!istype(G)) - return ..() - - if(G.state < 2) - user << "You need a better grip to do that!" - return - - move_into_gibber(user,G.affecting) - // Grab() process should clean up the grab item, no need to del it. - -/obj/machinery/gibber/MouseDrop_T(mob/target, mob/user) - if(user.stat || user.restrained()) - return - move_into_gibber(user,target) - -/obj/machinery/gibber/proc/move_into_gibber(var/mob/user,var/mob/living/victim) - - if(src.occupant) - user << "The gibber is full, empty it first!" - return - - if(operating) - user << "The gibber is locked and running, wait for it to finish." - return - - if(!(istype(victim, /mob/living/carbon)) && !(istype(victim, /mob/living/simple_animal)) ) - user << "This is not suitable for the gibber!" - return - - if(istype(victim,/mob/living/carbon/human) && !emagged) - user << "The gibber safety guard is engaged!" - return - - - if(victim.abiotic(1)) - user << "Subject may not have abiotic items on." - return - - user.visible_message("[user] starts to put [victim] into the gibber!") - src.add_fingerprint(user) - if(do_after(user, 30) && victim.Adjacent(src) && user.Adjacent(src) && victim.Adjacent(user) && !occupant) - user.visible_message("[user] stuffs [victim] into the gibber!") - if(victim.client) - victim.client.perspective = EYE_PERSPECTIVE - victim.client.eye = src - victim.loc = src - src.occupant = victim - update_icon() - -/obj/machinery/gibber/verb/eject() - set category = "Object" - set name = "Empty Gibber" - set src in oview(1) - - if (usr.stat != 0) - return - src.go_out() - add_fingerprint(usr) - return - -/obj/machinery/gibber/proc/go_out() - if(operating || !src.occupant) - return - for(var/obj/O in src) - O.loc = src.loc - if (src.occupant.client) - src.occupant.client.eye = src.occupant.client.mob - src.occupant.client.perspective = MOB_PERSPECTIVE - src.occupant.loc = src.loc - src.occupant = null - update_icon() - return - - -/obj/machinery/gibber/proc/startgibbing(mob/user as mob) - if(src.operating) - return - if(!src.occupant) - visible_message("You hear a loud metallic grinding sound.") - return - - use_power(1000) - visible_message("You hear a loud [occupant.isSynthetic() ? "metallic" : "squelchy"] grinding sound.") - src.operating = 1 - update_icon() - - var/slab_name = occupant.name - var/slab_count = 3 - var/slab_type = /obj/item/weapon/reagent_containers/food/snacks/meat - var/slab_nutrition = src.occupant.nutrition / 15 - - // Some mobs have specific meat item types. - if(istype(src.occupant,/mob/living/simple_animal)) - var/mob/living/simple_animal/critter = src.occupant - if(critter.meat_amount) - slab_count = critter.meat_amount - if(critter.meat_type) - slab_type = critter.meat_type - else if(istype(src.occupant,/mob/living/carbon/human)) - var/mob/living/carbon/human/H = occupant - slab_name = src.occupant.real_name - slab_type = H.isSynthetic() ? /obj/item/stack/material/steel : H.species.meat_type - - // Small mobs don't give as much nutrition. - if(issmall(src.occupant)) - slab_nutrition *= 0.5 - slab_nutrition /= slab_count - - for(var/i=1 to slab_count) - var/obj/item/weapon/reagent_containers/food/snacks/meat/new_meat = new slab_type(src, rand(3,8)) - if(istype(new_meat)) - new_meat.name = "[slab_name] [new_meat.name]" - new_meat.reagents.add_reagent("nutriment",slab_nutrition) - if(src.occupant.reagents) - src.occupant.reagents.trans_to_obj(new_meat, round(occupant.reagents.total_volume/slab_count,1)) - - add_attack_logs(user,occupant,"Used [src] to gib") - - src.occupant.ghostize() - - spawn(gib_time) - - src.operating = 0 - src.occupant.gib() - qdel(src.occupant) - - playsound(src.loc, 'sound/effects/splat.ogg', 50, 1) - operating = 0 - for (var/obj/item/thing in contents) - // There's a chance that the gibber will fail to destroy some evidence. - if(istype(thing,/obj/item/organ) && prob(80)) - qdel(thing) - continue - thing.forceMove(get_turf(thing)) // Drop it onto the turf for throwing. - thing.throw_at(get_edge_target_turf(src,gib_throw_dir),rand(0,3),emagged ? 100 : 50) // Being pelted with bits of meat and bone would hurt. - - update_icon() - - + +/obj/machinery/gibber + name = "gibber" + desc = "The name isn't descriptive enough?" + icon = 'icons/obj/kitchen.dmi' + icon_state = "grinder" + density = 1 + anchored = 1 + req_access = list(access_kitchen,access_morgue) + + var/operating = 0 //Is it on? + var/dirty = 0 // Does it need cleaning? + var/mob/living/occupant // Mob who has been put inside + var/gib_time = 40 // Time from starting until meat appears + var/gib_throw_dir = WEST // Direction to spit meat and gibs in. + + use_power = 1 + idle_power_usage = 2 + active_power_usage = 500 + +//auto-gibs anything that bumps into it +/obj/machinery/gibber/autogibber + var/turf/input_plate + +/obj/machinery/gibber/autogibber/New() + ..() + spawn(5) + for(var/i in cardinal) + var/obj/machinery/mineral/input/input_obj = locate( /obj/machinery/mineral/input, get_step(src.loc, i) ) + if(input_obj) + if(isturf(input_obj.loc)) + input_plate = input_obj.loc + gib_throw_dir = i + qdel(input_obj) + break + + if(!input_plate) + log_misc("a [src] didn't find an input plate.") + return + +/obj/machinery/gibber/autogibber/Bumped(var/atom/A) + if(!input_plate) return + + if(ismob(A)) + var/mob/M = A + + if(M.loc == input_plate + ) + M.loc = src + M.gib() + + +/obj/machinery/gibber/New() + ..() + src.overlays += image('icons/obj/kitchen.dmi', "grjam") + +/obj/machinery/gibber/update_icon() + overlays.Cut() + if (dirty) + src.overlays += image('icons/obj/kitchen.dmi', "grbloody") + if(stat & (NOPOWER|BROKEN)) + return + if (!occupant) + src.overlays += image('icons/obj/kitchen.dmi', "grjam") + else if (operating) + src.overlays += image('icons/obj/kitchen.dmi', "gruse") + else + src.overlays += image('icons/obj/kitchen.dmi', "gridle") + +/obj/machinery/gibber/relaymove(mob/user as mob) + src.go_out() + return + +/obj/machinery/gibber/attack_hand(mob/user as mob) + if(stat & (NOPOWER|BROKEN)) + return + if(operating) + user << "The gibber is locked and running, wait for it to finish." + return + else + src.startgibbing(user) + +/obj/machinery/gibber/examine() + ..() + usr << "The safety guard is [emagged ? "disabled" : "enabled"]." + +/obj/machinery/gibber/emag_act(var/remaining_charges, var/mob/user) + emagged = !emagged + user << "You [emagged ? "disable" : "enable"] the gibber safety guard." + return 1 + +/obj/machinery/gibber/attackby(var/obj/item/W, var/mob/user) + var/obj/item/weapon/grab/G = W + + if(default_unfasten_wrench(user, W, 40)) + return + + if(!istype(G)) + return ..() + + if(G.state < 2) + user << "You need a better grip to do that!" + return + + move_into_gibber(user,G.affecting) + // Grab() process should clean up the grab item, no need to del it. + +/obj/machinery/gibber/MouseDrop_T(mob/target, mob/user) + if(user.stat || user.restrained()) + return + move_into_gibber(user,target) + +/obj/machinery/gibber/proc/move_into_gibber(var/mob/user,var/mob/living/victim) + + if(src.occupant) + user << "The gibber is full, empty it first!" + return + + if(operating) + user << "The gibber is locked and running, wait for it to finish." + return + + if(!(istype(victim, /mob/living/carbon)) && !(istype(victim, /mob/living/simple_mob)) ) + user << "This is not suitable for the gibber!" + return + + if(istype(victim,/mob/living/carbon/human) && !emagged) + user << "The gibber safety guard is engaged!" + return + + + if(victim.abiotic(1)) + user << "Subject may not have abiotic items on." + return + + user.visible_message("[user] starts to put [victim] into the gibber!") + src.add_fingerprint(user) + if(do_after(user, 30) && victim.Adjacent(src) && user.Adjacent(src) && victim.Adjacent(user) && !occupant) + user.visible_message("[user] stuffs [victim] into the gibber!") + if(victim.client) + victim.client.perspective = EYE_PERSPECTIVE + victim.client.eye = src + victim.loc = src + src.occupant = victim + update_icon() + +/obj/machinery/gibber/verb/eject() + set category = "Object" + set name = "Empty Gibber" + set src in oview(1) + + if (usr.stat != 0) + return + src.go_out() + add_fingerprint(usr) + return + +/obj/machinery/gibber/proc/go_out() + if(operating || !src.occupant) + return + for(var/obj/O in src) + O.loc = src.loc + if (src.occupant.client) + src.occupant.client.eye = src.occupant.client.mob + src.occupant.client.perspective = MOB_PERSPECTIVE + src.occupant.loc = src.loc + src.occupant = null + update_icon() + return + + +/obj/machinery/gibber/proc/startgibbing(mob/user as mob) + if(src.operating) + return + if(!src.occupant) + visible_message("You hear a loud metallic grinding sound.") + return + + use_power(1000) + visible_message("You hear a loud [occupant.isSynthetic() ? "metallic" : "squelchy"] grinding sound.") + src.operating = 1 + update_icon() + + var/slab_name = occupant.name + var/slab_count = 3 + var/slab_type = /obj/item/weapon/reagent_containers/food/snacks/meat + var/slab_nutrition = src.occupant.nutrition / 15 + + // Some mobs have specific meat item types. + if(istype(src.occupant,/mob/living/simple_mob)) + var/mob/living/simple_mob/critter = src.occupant + if(critter.meat_amount) + slab_count = critter.meat_amount + if(critter.meat_type) + slab_type = critter.meat_type + else if(istype(src.occupant,/mob/living/carbon/human)) + var/mob/living/carbon/human/H = occupant + slab_name = src.occupant.real_name + slab_type = H.isSynthetic() ? /obj/item/stack/material/steel : H.species.meat_type + + // Small mobs don't give as much nutrition. + if(issmall(src.occupant)) + slab_nutrition *= 0.5 + slab_nutrition /= slab_count + + for(var/i=1 to slab_count) + var/obj/item/weapon/reagent_containers/food/snacks/meat/new_meat = new slab_type(src, rand(3,8)) + if(istype(new_meat)) + new_meat.name = "[slab_name] [new_meat.name]" + new_meat.reagents.add_reagent("nutriment",slab_nutrition) + if(src.occupant.reagents) + src.occupant.reagents.trans_to_obj(new_meat, round(occupant.reagents.total_volume/slab_count,1)) + + add_attack_logs(user,occupant,"Used [src] to gib") + + src.occupant.ghostize() + + spawn(gib_time) + + operating = 0 + occupant.gib() + occupant = null + + playsound(src.loc, 'sound/effects/splat.ogg', 50, 1) + operating = 0 + for (var/obj/thing in contents) + // There's a chance that the gibber will fail to destroy some evidence. + if(istype(thing,/obj/item/organ) && prob(80)) + qdel(thing) + continue + thing.forceMove(get_turf(thing)) // Drop it onto the turf for throwing. + thing.throw_at(get_edge_target_turf(src,gib_throw_dir),rand(0,3),emagged ? 100 : 50) // Being pelted with bits of meat and bone would hurt. + + update_icon() + + diff --git a/code/modules/food/kitchen/icecream.dm b/code/modules/food/kitchen/icecream.dm index 09cb3289ed..821e118c01 100644 --- a/code/modules/food/kitchen/icecream.dm +++ b/code/modules/food/kitchen/icecream.dm @@ -51,7 +51,7 @@ else return "vanilla" -/obj/machinery/icecream_vat/initialize() +/obj/machinery/icecream_vat/Initialize() . = ..() create_reagents(100) while(product_types.len < 6) diff --git a/code/modules/food/kitchen/microwave.dm b/code/modules/food/kitchen/microwave.dm index 7357dd5568..0eb0683ba8 100644 --- a/code/modules/food/kitchen/microwave.dm +++ b/code/modules/food/kitchen/microwave.dm @@ -1,392 +1,396 @@ -/obj/machinery/microwave - name = "microwave" - icon = 'icons/obj/kitchen.dmi' - icon_state = "mw" - density = 1 - anchored = 1 - use_power = 1 - idle_power_usage = 5 - active_power_usage = 100 - flags = OPENCONTAINER | NOREACT - circuit = /obj/item/weapon/circuitboard/microwave - var/operating = 0 // Is it on? - var/dirty = 0 // = {0..100} Does it need cleaning? - var/broken = 0 // ={0,1,2} How broken is it??? - var/global/list/datum/recipe/available_recipes // List of the recipes you can use - var/global/list/acceptable_items // List of the items you can put in - var/global/list/acceptable_reagents // List of the reagents you can put in - var/global/max_n_of_items = 0 - - -// see code/modules/food/recipes_microwave.dm for recipes - -/******************* -* Initialising -********************/ - -/obj/machinery/microwave/New() - ..() - reagents = new/datum/reagents(100) - reagents.my_atom = src - - component_parts = list() - component_parts += new /obj/item/weapon/stock_parts/console_screen(src) - component_parts += new /obj/item/weapon/stock_parts/motor(src) - component_parts += new /obj/item/weapon/stock_parts/capacitor(src) - - if (!available_recipes) - available_recipes = new - for (var/type in (typesof(/datum/recipe)-/datum/recipe)) - available_recipes+= new type - acceptable_items = new - acceptable_reagents = new - for (var/datum/recipe/recipe in available_recipes) - for (var/item in recipe.items) - acceptable_items |= item - for (var/reagent in recipe.reagents) - acceptable_reagents |= reagent - if (recipe.items) - max_n_of_items = max(max_n_of_items,recipe.items.len) - // This will do until I can think of a fun recipe to use dionaea in - - // will also allow anything using the holder item to be microwaved into - // impure carbon. ~Z - acceptable_items |= /obj/item/weapon/holder - acceptable_items |= /obj/item/weapon/reagent_containers/food/snacks/grown - - RefreshParts() - -/******************* -* Item Adding -********************/ - -/obj/machinery/microwave/attackby(var/obj/item/O as obj, var/mob/user as mob) - if(src.broken > 0) - if(src.broken == 2 && O.is_screwdriver()) // If it's broken and they're using a screwdriver - user.visible_message( \ - "\The [user] starts to fix part of the microwave.", \ - "You start to fix part of the microwave." \ - ) - playsound(src, O.usesound, 50, 1) - if (do_after(user,20 * O.toolspeed)) - user.visible_message( \ - "\The [user] fixes part of the microwave.", \ - "You have fixed part of the microwave." \ - ) - src.broken = 1 // Fix it a bit - else if(src.broken == 1 && O.is_wrench()) // If it's broken and they're doing the wrench - user.visible_message( \ - "\The [user] starts to fix part of the microwave.", \ - "You start to fix part of the microwave." \ - ) - if (do_after(user,20 * O.toolspeed)) - user.visible_message( \ - "\The [user] fixes the microwave.", \ - "You have fixed the microwave." \ - ) - src.icon_state = "mw" - src.broken = 0 // Fix it! - src.dirty = 0 // just to be sure - src.flags = OPENCONTAINER | NOREACT - else - to_chat(user, "It's broken!") - return 1 - else if(default_deconstruction_screwdriver(user, O)) - return - else if(default_deconstruction_crowbar(user, O)) - return - else if(default_unfasten_wrench(user, O, 10)) - return - - else if(src.dirty==100) // The microwave is all dirty so can't be used! - if(istype(O, /obj/item/weapon/reagent_containers/spray/cleaner) || istype(O, /obj/item/weapon/soap)) // If they're trying to clean it then let them - user.visible_message( \ - "\The [user] starts to clean the microwave.", \ - "You start to clean the microwave." \ - ) - if (do_after(user,20)) - user.visible_message( \ - "\The [user] has cleaned the microwave.", \ - "You have cleaned the microwave." \ - ) - src.dirty = 0 // It's clean! - src.broken = 0 // just to be sure - src.icon_state = "mw" - src.flags = OPENCONTAINER | NOREACT - else //Otherwise bad luck!! - to_chat(user, "It's dirty!") - return 1 - else if(is_type_in_list(O,acceptable_items)) - if (contents.len>=(max_n_of_items + component_parts.len + 1)) //Adds component_parts to the maximum number of items. The 1 is from the circuit - to_chat(user, "This [src] is full of ingredients, you cannot put more.") - return 1 - if(istype(O, /obj/item/stack) && O:get_amount() > 1) // This is bad, but I can't think of how to change it - var/obj/item/stack/S = O - new O.type (src) - S.use(1) - user.visible_message( \ - "\The [user] has added one of [O] to \the [src].", \ - "You add one of [O] to \the [src].") - return - else - // user.remove_from_mob(O) //This just causes problems so far as I can tell. -Pete - user.drop_item() - O.loc = src - user.visible_message( \ - "\The [user] has added \the [O] to \the [src].", \ - "You add \the [O] to \the [src].") - return - else if(istype(O,/obj/item/weapon/reagent_containers/glass) || \ - istype(O,/obj/item/weapon/reagent_containers/food/drinks) || \ - istype(O,/obj/item/weapon/reagent_containers/food/condiment) \ - ) - if (!O.reagents) - return 1 - for (var/datum/reagent/R in O.reagents.reagent_list) - if (!(R.id in acceptable_reagents)) - to_chat(user, "Your [O] contains components unsuitable for cookery.") - return 1 - return - else if(istype(O,/obj/item/weapon/grab)) - var/obj/item/weapon/grab/G = O - to_chat(user, "This is ridiculous. You can not fit \the [G.affecting] in this [src].") - return 1 - else - to_chat(user, "You have no idea what you can cook with this [O].") - ..() - src.updateUsrDialog() - -/obj/machinery/microwave/attack_ai(mob/user as mob) - if(istype(user, /mob/living/silicon/robot) && Adjacent(user)) - attack_hand(user) - -/obj/machinery/microwave/attack_hand(mob/user as mob) - user.set_machine(src) - interact(user) - -/******************* -* Microwave Menu -********************/ - -/obj/machinery/microwave/interact(mob/user as mob) // The microwave Menu - var/dat = "" - if(src.broken > 0) - dat = {"Bzzzzttttt"} - else if(src.operating) - dat = {"Microwaving in progress!
    Please wait...!
    "} - else if(src.dirty==100) - dat = {"This microwave is dirty!
    Please clean it before use!
    "} - else - var/list/items_counts = new - var/list/items_measures = new - var/list/items_measures_p = new - for (var/obj/O in ((contents - component_parts) - circuit)) - var/display_name = O.name - if (istype(O,/obj/item/weapon/reagent_containers/food/snacks/egg)) - items_measures[display_name] = "egg" - items_measures_p[display_name] = "eggs" - if (istype(O,/obj/item/weapon/reagent_containers/food/snacks/tofu)) - items_measures[display_name] = "tofu chunk" - items_measures_p[display_name] = "tofu chunks" - if (istype(O,/obj/item/weapon/reagent_containers/food/snacks/meat)) //any meat - items_measures[display_name] = "slab of meat" - items_measures_p[display_name] = "slabs of meat" - if (istype(O,/obj/item/weapon/reagent_containers/food/snacks/donkpocket)) - display_name = "Turnovers" - items_measures[display_name] = "turnover" - items_measures_p[display_name] = "turnovers" - if (istype(O,/obj/item/weapon/reagent_containers/food/snacks/carpmeat)) - items_measures[display_name] = "fillet of meat" - items_measures_p[display_name] = "fillets of meat" - items_counts[display_name]++ - for (var/O in items_counts) - var/N = items_counts[O] - if (!(O in items_measures)) - dat += {"[capitalize(O)]: [N] [lowertext(O)]\s
    "} - else - if (N==1) - dat += {"[capitalize(O)]: [N] [items_measures[O]]
    "} - else - dat += {"[capitalize(O)]: [N] [items_measures_p[O]]
    "} - - for (var/datum/reagent/R in reagents.reagent_list) - var/display_name = R.name - if (R.id == "capsaicin") - display_name = "Hotsauce" - if (R.id == "frostoil") - display_name = "Coldsauce" - dat += {"[display_name]: [R.volume] unit\s
    "} - - if (items_counts.len==0 && reagents.reagent_list.len==0) - dat = {"The microwave is empty
    "} - else - dat = {"Ingredients:
    [dat]"} - dat += {"

    \ -Turn on!
    \ -
    Eject ingredients!
    \ -"} - - to_chat(user, browse("Microwave Controls[dat]", "window=microwave")) - onclose(user, "microwave") - return - - - -/*********************************** -* Microwave Menu Handling/Cooking -************************************/ - -/obj/machinery/microwave/proc/cook() - if(stat & (NOPOWER|BROKEN)) - return - start() - if (reagents.total_volume==0 && !(locate(/obj) in ((contents - component_parts) - circuit))) //dry run - if (!wzhzhzh(10)) - abort() - return - stop() - return - - var/datum/recipe/recipe = select_recipe(available_recipes,src) - var/obj/cooked - if (!recipe) - dirty += 1 - if (prob(max(10,dirty*5))) - if (!wzhzhzh(4)) - abort() - return - muck_start() - wzhzhzh(4) - muck_finish() - cooked = fail() - cooked.loc = src.loc - return - else if (has_extra_item()) - if (!wzhzhzh(4)) - abort() - return - broke() - cooked = fail() - cooked.loc = src.loc - return - else - if (!wzhzhzh(10)) - abort() - return - stop() - cooked = fail() - cooked.loc = src.loc - return - else - var/halftime = round(recipe.time/10/2) - if (!wzhzhzh(halftime)) - abort() - return - if (!wzhzhzh(halftime)) - abort() - cooked = fail() - cooked.loc = src.loc - return - cooked = recipe.make_food(src) - stop() - if(cooked) - cooked.loc = src.loc - return - -/obj/machinery/microwave/proc/wzhzhzh(var/seconds as num) // Whoever named this proc is fucking literally Satan. ~ Z - for (var/i=1 to seconds) - if (stat & (NOPOWER|BROKEN)) - return 0 - use_power(500) - sleep(10) - return 1 - -/obj/machinery/microwave/proc/has_extra_item() - for (var/obj/O in ((contents - component_parts) - circuit)) - if ( \ - !istype(O,/obj/item/weapon/reagent_containers/food) && \ - !istype(O, /obj/item/weapon/grown) \ - ) - return 1 - return 0 - -/obj/machinery/microwave/proc/start() - src.visible_message("The microwave turns on.", "You hear a microwave.") - src.operating = 1 - src.icon_state = "mw1" - src.updateUsrDialog() - -/obj/machinery/microwave/proc/abort() - src.operating = 0 // Turn it off again aferwards - src.icon_state = "mw" - src.updateUsrDialog() - -/obj/machinery/microwave/proc/stop() - playsound(src.loc, 'sound/machines/ding.ogg', 50, 1) - src.operating = 0 // Turn it off again aferwards - src.icon_state = "mw" - src.updateUsrDialog() - -/obj/machinery/microwave/proc/dispose() - for (var/obj/O in ((contents-component_parts)-circuit)) - O.loc = src.loc - if (src.reagents.total_volume) - src.dirty++ - src.reagents.clear_reagents() - usr << "You dispose of the microwave contents." - src.updateUsrDialog() - -/obj/machinery/microwave/proc/muck_start() - playsound(src.loc, 'sound/effects/splat.ogg', 50, 1) // Play a splat sound - src.icon_state = "mwbloody1" // Make it look dirty!! - -/obj/machinery/microwave/proc/muck_finish() - playsound(src.loc, 'sound/machines/ding.ogg', 50, 1) - src.visible_message("The microwave gets covered in muck!") - src.dirty = 100 // Make it dirty so it can't be used util cleaned - src.flags = null //So you can't add condiments - src.icon_state = "mwbloody" // Make it look dirty too - src.operating = 0 // Turn it off again aferwards - src.updateUsrDialog() - -/obj/machinery/microwave/proc/broke() - var/datum/effect/effect/system/spark_spread/s = new - s.set_up(2, 1, src) - s.start() - src.icon_state = "mwb" // Make it look all busted up and shit - src.visible_message("The microwave breaks!") //Let them know they're stupid - src.broken = 2 // Make it broken so it can't be used util fixed - src.flags = null //So you can't add condiments - src.operating = 0 // Turn it off again aferwards - src.updateUsrDialog() - -/obj/machinery/microwave/proc/fail() - var/obj/item/weapon/reagent_containers/food/snacks/badrecipe/ffuu = new(src) - var/amount = 0 - for (var/obj/O in (((contents - ffuu) - component_parts) - circuit)) - amount++ - if (O.reagents) - var/id = O.reagents.get_master_reagent_id() - if (id) - amount+=O.reagents.get_reagent_amount(id) - qdel(O) - src.reagents.clear_reagents() - ffuu.reagents.add_reagent("carbon", amount) - ffuu.reagents.add_reagent("toxin", amount/10) - return ffuu - -/obj/machinery/microwave/Topic(href, href_list) - if(..()) - return - - usr.set_machine(src) - if(src.operating) - src.updateUsrDialog() - return - - switch(href_list["action"]) - if ("cook") - cook() - - if ("dispose") - dispose() - return +/obj/machinery/microwave + name = "microwave" + icon = 'icons/obj/kitchen.dmi' + icon_state = "mw" + density = 1 + anchored = 1 + use_power = 1 + idle_power_usage = 5 + active_power_usage = 100 + flags = OPENCONTAINER | NOREACT + circuit = /obj/item/weapon/circuitboard/microwave + var/operating = 0 // Is it on? + var/dirty = 0 // = {0..100} Does it need cleaning? + var/broken = 0 // ={0,1,2} How broken is it??? + var/global/list/datum/recipe/available_recipes // List of the recipes you can use + var/global/list/acceptable_items // List of the items you can put in + var/global/list/acceptable_reagents // List of the reagents you can put in + var/global/max_n_of_items = 0 + var/datum/looping_sound/microwave/soundloop + + +// see code/modules/food/recipes_microwave.dm for recipes + +/******************* +* Initialising +********************/ + +/obj/machinery/microwave/Initialize() + reagents = new/datum/reagents(100) + reagents.my_atom = src + + component_parts = list() + component_parts += new /obj/item/weapon/stock_parts/console_screen(src) + component_parts += new /obj/item/weapon/stock_parts/motor(src) + component_parts += new /obj/item/weapon/stock_parts/capacitor(src) + + if (!available_recipes) + available_recipes = new + for (var/type in (typesof(/datum/recipe)-/datum/recipe)) + available_recipes+= new type + acceptable_items = new + acceptable_reagents = new + for (var/datum/recipe/recipe in available_recipes) + for (var/item in recipe.items) + acceptable_items |= item + for (var/reagent in recipe.reagents) + acceptable_reagents |= reagent + if (recipe.items) + max_n_of_items = max(max_n_of_items,recipe.items.len) + // This will do until I can think of a fun recipe to use dionaea in - + // will also allow anything using the holder item to be microwaved into + // impure carbon. ~Z + acceptable_items |= /obj/item/weapon/holder + acceptable_items |= /obj/item/weapon/reagent_containers/food/snacks/grown + + RefreshParts() + soundloop = new(list(src), FALSE) + return ..() + +/obj/machinery/microwave/Destroy() + QDEL_NULL(soundloop) + return ..() + +/******************* +* Item Adding +********************/ + +/obj/machinery/microwave/attackby(var/obj/item/O as obj, var/mob/user as mob) + if(src.broken > 0) + if(src.broken == 2 && O.is_screwdriver()) // If it's broken and they're using a screwdriver + user.visible_message( \ + "\The [user] starts to fix part of the microwave.", \ + "You start to fix part of the microwave." \ + ) + playsound(src, O.usesound, 50, 1) + if (do_after(user,20 * O.toolspeed)) + user.visible_message( \ + "\The [user] fixes part of the microwave.", \ + "You have fixed part of the microwave." \ + ) + src.broken = 1 // Fix it a bit + else if(src.broken == 1 && O.is_wrench()) // If it's broken and they're doing the wrench + user.visible_message( \ + "\The [user] starts to fix part of the microwave.", \ + "You start to fix part of the microwave." \ + ) + if (do_after(user,20 * O.toolspeed)) + user.visible_message( \ + "\The [user] fixes the microwave.", \ + "You have fixed the microwave." \ + ) + src.icon_state = "mw" + src.broken = 0 // Fix it! + src.dirty = 0 // just to be sure + src.flags = OPENCONTAINER | NOREACT + else + to_chat(user, "It's broken!") + return 1 + else if(default_deconstruction_screwdriver(user, O)) + return + else if(default_deconstruction_crowbar(user, O)) + return + else if(default_unfasten_wrench(user, O, 10)) + return + + else if(src.dirty==100) // The microwave is all dirty so can't be used! + if(istype(O, /obj/item/weapon/reagent_containers/spray/cleaner) || istype(O, /obj/item/weapon/soap)) // If they're trying to clean it then let them + user.visible_message( \ + "\The [user] starts to clean the microwave.", \ + "You start to clean the microwave." \ + ) + if (do_after(user,20)) + user.visible_message( \ + "\The [user] has cleaned the microwave.", \ + "You have cleaned the microwave." \ + ) + src.dirty = 0 // It's clean! + src.broken = 0 // just to be sure + src.icon_state = "mw" + src.flags = OPENCONTAINER | NOREACT + else //Otherwise bad luck!! + to_chat(user, "It's dirty!") + return 1 + else if(is_type_in_list(O,acceptable_items)) + if (contents.len>=(max_n_of_items + component_parts.len + 1)) //Adds component_parts to the maximum number of items. The 1 is from the circuit + to_chat(user, "This [src] is full of ingredients, you cannot put more.") + return 1 + if(istype(O, /obj/item/stack) && O:get_amount() > 1) // This is bad, but I can't think of how to change it + var/obj/item/stack/S = O + new O.type (src) + S.use(1) + user.visible_message( \ + "\The [user] has added one of [O] to \the [src].", \ + "You add one of [O] to \the [src].") + return + else + // user.remove_from_mob(O) //This just causes problems so far as I can tell. -Pete + user.drop_item() + O.loc = src + user.visible_message( \ + "\The [user] has added \the [O] to \the [src].", \ + "You add \the [O] to \the [src].") + return + else if(istype(O,/obj/item/weapon/reagent_containers/glass) || \ + istype(O,/obj/item/weapon/reagent_containers/food/drinks) || \ + istype(O,/obj/item/weapon/reagent_containers/food/condiment) \ + ) + if (!O.reagents) + return 1 + for (var/datum/reagent/R in O.reagents.reagent_list) + if (!(R.id in acceptable_reagents)) + to_chat(user, "Your [O] contains components unsuitable for cookery.") + return 1 + return + else if(istype(O,/obj/item/weapon/grab)) + var/obj/item/weapon/grab/G = O + to_chat(user, "This is ridiculous. You can not fit \the [G.affecting] in this [src].") + return 1 + else + to_chat(user, "You have no idea what you can cook with this [O].") + ..() + src.updateUsrDialog() + +/obj/machinery/microwave/attack_ai(mob/user as mob) + if(istype(user, /mob/living/silicon/robot) && Adjacent(user)) + attack_hand(user) + +/obj/machinery/microwave/attack_hand(mob/user as mob) + user.set_machine(src) + interact(user) + +/******************* +* Microwave Menu +********************/ + +/obj/machinery/microwave/interact(mob/user as mob) // The microwave Menu + var/dat = "" + if(src.broken > 0) + dat = {"Bzzzzttttt"} + else if(src.operating) + dat = {"Microwaving in progress!
    Please wait...!
    "} + else if(src.dirty==100) + dat = {"This microwave is dirty!
    Please clean it before use!
    "} + else + var/list/items_counts = new + var/list/items_measures = new + var/list/items_measures_p = new + for (var/obj/O in ((contents - component_parts) - circuit)) + var/display_name = O.name + if (istype(O,/obj/item/weapon/reagent_containers/food/snacks/egg)) + items_measures[display_name] = "egg" + items_measures_p[display_name] = "eggs" + if (istype(O,/obj/item/weapon/reagent_containers/food/snacks/tofu)) + items_measures[display_name] = "tofu chunk" + items_measures_p[display_name] = "tofu chunks" + if (istype(O,/obj/item/weapon/reagent_containers/food/snacks/meat)) //any meat + items_measures[display_name] = "slab of meat" + items_measures_p[display_name] = "slabs of meat" + if (istype(O,/obj/item/weapon/reagent_containers/food/snacks/donkpocket)) + display_name = "Turnovers" + items_measures[display_name] = "turnover" + items_measures_p[display_name] = "turnovers" + if (istype(O,/obj/item/weapon/reagent_containers/food/snacks/carpmeat)) + items_measures[display_name] = "fillet of meat" + items_measures_p[display_name] = "fillets of meat" + items_counts[display_name]++ + for (var/O in items_counts) + var/N = items_counts[O] + if (!(O in items_measures)) + dat += {"[capitalize(O)]: [N] [lowertext(O)]\s
    "} + else + if (N==1) + dat += {"[capitalize(O)]: [N] [items_measures[O]]
    "} + else + dat += {"[capitalize(O)]: [N] [items_measures_p[O]]
    "} + + for (var/datum/reagent/R in reagents.reagent_list) + var/display_name = R.name + if (R.id == "capsaicin") + display_name = "Hotsauce" + if (R.id == "frostoil") + display_name = "Coldsauce" + dat += {"[display_name]: [R.volume] unit\s
    "} + + if (items_counts.len==0 && reagents.reagent_list.len==0) + dat = {"The microwave is empty
    "} + else + dat = {"Ingredients:
    [dat]"} + dat += {"

    \ +
    Turn on!
    \ +
    Eject ingredients!
    \ +"} + + to_chat(user, browse("Microwave Controls[dat]", "window=microwave")) + onclose(user, "microwave") + return + + + +/*********************************** +* Microwave Menu Handling/Cooking +************************************/ + +/obj/machinery/microwave/proc/cook() + if(stat & (NOPOWER|BROKEN)) + return + start() + if (reagents.total_volume==0 && !(locate(/obj) in ((contents - component_parts) - circuit))) //dry run + if (!wzhzhzh(10)) + abort() + return + abort() + return + + var/datum/recipe/recipe = select_recipe(available_recipes,src) + var/obj/cooked + if (!recipe) + dirty += 1 + if (prob(max(10,dirty*5))) + if (!wzhzhzh(4)) + abort() + return + muck_start() + wzhzhzh(4) + muck_finish() + cooked = fail() + cooked.loc = src.loc + return + else if (has_extra_item()) + if (!wzhzhzh(4)) + abort() + return + broke() + cooked = fail() + cooked.loc = src.loc + return + else + if (!wzhzhzh(10)) + abort() + return + abort() + cooked = fail() + cooked.loc = src.loc + return + else + var/halftime = round(recipe.time/10/2) + if (!wzhzhzh(halftime)) + abort() + return + if (!wzhzhzh(halftime)) + abort() + cooked = fail() + cooked.loc = src.loc + return + cooked = recipe.make_food(src) + abort() + if(cooked) + cooked.loc = src.loc + return + +/obj/machinery/microwave/proc/wzhzhzh(var/seconds as num) // Whoever named this proc is fucking literally Satan. ~ Z + for (var/i=1 to seconds) + if (stat & (NOPOWER|BROKEN)) + return 0 + use_power(500) + sleep(10) + return 1 + +/obj/machinery/microwave/proc/has_extra_item() + for (var/obj/O in ((contents - component_parts) - circuit)) + if ( \ + !istype(O,/obj/item/weapon/reagent_containers/food) && \ + !istype(O, /obj/item/weapon/grown) \ + ) + return 1 + return 0 + +/obj/machinery/microwave/proc/start() + src.visible_message("The microwave turns on.", "You hear a microwave.") + soundloop.start() + src.operating = TRUE + src.icon_state = "mw1" + src.updateUsrDialog() + +/obj/machinery/microwave/proc/abort() + operating = FALSE // Turn it off again aferwards + icon_state = "mw" + updateUsrDialog() + soundloop.stop() + +/obj/machinery/microwave/proc/dispose() + for (var/obj/O in ((contents-component_parts)-circuit)) + O.loc = src.loc + if (src.reagents.total_volume) + src.dirty++ + src.reagents.clear_reagents() + usr << "You dispose of the microwave contents." + src.updateUsrDialog() + +/obj/machinery/microwave/proc/muck_start() + playsound(src.loc, 'sound/effects/splat.ogg', 50, 1) // Play a splat sound + src.icon_state = "mwbloody1" // Make it look dirty!! + +/obj/machinery/microwave/proc/muck_finish() + src.visible_message("The microwave gets covered in muck!") + src.dirty = 100 // Make it dirty so it can't be used util cleaned + src.flags = null //So you can't add condiments + src.icon_state = "mwbloody" // Make it look dirty too + src.operating = 0 // Turn it off again aferwards + src.updateUsrDialog() + soundloop.stop() + + +/obj/machinery/microwave/proc/broke() + var/datum/effect/effect/system/spark_spread/s = new + s.set_up(2, 1, src) + s.start() + src.icon_state = "mwb" // Make it look all busted up and shit + src.visible_message("The microwave breaks!") //Let them know they're stupid + src.broken = 2 // Make it broken so it can't be used util fixed + src.flags = null //So you can't add condiments + src.operating = 0 // Turn it off again aferwards + src.updateUsrDialog() + soundloop.stop() + +/obj/machinery/microwave/proc/fail() + var/obj/item/weapon/reagent_containers/food/snacks/badrecipe/ffuu = new(src) + var/amount = 0 + for (var/obj/O in (((contents - ffuu) - component_parts) - circuit)) + amount++ + if (O.reagents) + var/id = O.reagents.get_master_reagent_id() + if (id) + amount+=O.reagents.get_reagent_amount(id) + qdel(O) + src.reagents.clear_reagents() + ffuu.reagents.add_reagent("carbon", amount) + ffuu.reagents.add_reagent("toxin", amount/10) + return ffuu + +/obj/machinery/microwave/Topic(href, href_list) + if(..()) + return + + usr.set_machine(src) + if(src.operating) + src.updateUsrDialog() + return + + switch(href_list["action"]) + if ("cook") + cook() + + if ("dispose") + dispose() + return diff --git a/code/modules/food/kitchen/smartfridge.dm b/code/modules/food/kitchen/smartfridge.dm index 005f7749b6..d1b9381216 100644 --- a/code/modules/food/kitchen/smartfridge.dm +++ b/code/modules/food/kitchen/smartfridge.dm @@ -11,6 +11,7 @@ active_power_usage = 100 flags = NOREACT var/max_n_of_items = 999 // Sorry but the BYOND infinite loop detector doesn't look things over 1000. //VOREStation Edit - Non-global + //var/global/max_n_of_items = 999 // Sorry but the BYOND infinite loop detector doesn't look things over 1000. var/icon_on = "smartfridge" var/icon_off = "smartfridge-off" var/icon_panel = "smartfridge-panel" diff --git a/code/modules/gamemaster/actions/carp_migration.dm b/code/modules/gamemaster/actions/carp_migration.dm index 7c76a5119c..b635ca6d5e 100644 --- a/code/modules/gamemaster/actions/carp_migration.dm +++ b/code/modules/gamemaster/actions/carp_migration.dm @@ -32,7 +32,7 @@ var/activeness = ((metric.assess_department(ROLE_SECURITY) + metric.assess_department(ROLE_ENGINEERING) + metric.assess_department(ROLE_MEDICAL)) / 3) activeness = max(activeness, 20) - carp_amount = Ceiling(station_strength * (activeness / 100) + 1) + carp_amount = CEILING(station_strength * (activeness / 100) + 1, 1) /datum/gm_action/carp_migration/start() ..() @@ -52,12 +52,12 @@ while (i <= carp_amount) var/group_size = rand(group_size_min, group_size_max) for (var/j = 1, j <= group_size, j++) - spawned_carp.Add(new /mob/living/simple_animal/hostile/carp(spawn_locations[i])) + spawned_carp.Add(new /mob/living/simple_mob/animal/space/carp/event(spawn_locations[i])) i++ message_admins("[spawned_carp.len] carp spawned by event.") /datum/gm_action/carp_migration/end() - for(var/mob/living/simple_animal/hostile/carp/C in spawned_carp) + for(var/mob/living/simple_mob/animal/space/carp/C in spawned_carp) if(!C.stat) var/turf/T = get_turf(C) if(istype(T, /turf/space)) diff --git a/code/modules/gamemaster/actions/surprise_carp_attack.dm b/code/modules/gamemaster/actions/surprise_carp_attack.dm index e78dd72343..14c4b03e0e 100644 --- a/code/modules/gamemaster/actions/surprise_carp_attack.dm +++ b/code/modules/gamemaster/actions/surprise_carp_attack.dm @@ -47,7 +47,5 @@ spawning_turf = space break if(spawning_turf) - var/mob/living/simple_animal/hostile/carp/C = new(spawning_turf) - C.target_mob = victim - C.stance = STANCE_ATTACK + new /mob/living/simple_mob/animal/space/carp(spawning_turf) number_of_carp-- \ No newline at end of file diff --git a/code/modules/gamemaster/game_master.dm b/code/modules/gamemaster/game_master.dm index c435e868f6..16a6a03887 100644 --- a/code/modules/gamemaster/game_master.dm +++ b/code/modules/gamemaster/game_master.dm @@ -22,7 +22,7 @@ for(var/datum/gm_action/action in available_actions) action.gm = src -/datum/game_master/proc/process() +/datum/game_master/process() if(ticker && ticker.current_state == GAME_STATE_PLAYING && !suspended) adjust_staleness(1) adjust_danger(-1) diff --git a/code/modules/gamemaster/helpers.dm b/code/modules/gamemaster/helpers.dm index 80fc133931..da05cb1b20 100644 --- a/code/modules/gamemaster/helpers.dm +++ b/code/modules/gamemaster/helpers.dm @@ -1,9 +1,9 @@ // Tell the game master that something dangerous happened, e.g. someone dying. /datum/game_master/proc/adjust_danger(var/amt) amt = amt * danger_modifier - danger = round( Clamp(danger + amt, 0, 1000), 0.1) + danger = round( CLAMP(danger + amt, 0, 1000), 0.1) // Tell the game master that something interesting happened. /datum/game_master/proc/adjust_staleness(var/amt) amt = amt * staleness_modifier - staleness = round( Clamp(staleness + amt, -50, 200), 0.1) \ No newline at end of file + staleness = round( CLAMP(staleness + amt, -50, 200), 0.1) \ No newline at end of file diff --git a/code/modules/games/cards.dm b/code/modules/games/cards.dm index cbeff5fb34..e9b3ae537e 100644 --- a/code/modules/games/cards.dm +++ b/code/modules/games/cards.dm @@ -238,7 +238,7 @@ /obj/item/weapon/deck/MouseDrop(mob/user as mob) // Code from Paper bin, so you can still pick up the deck if((user == usr && (!( usr.restrained() ) && (!( usr.stat ) && (usr.contents.Find(src) || in_range(src, usr)))))) - if(!istype(usr, /mob/living/simple_animal)) + if(!istype(usr, /mob/living/simple_mob)) if( !usr.get_active_hand() ) //if active hand is empty var/mob/living/carbon/human/H = user var/obj/item/organ/external/temp = H.organs_by_name["r_hand"] @@ -256,7 +256,7 @@ /obj/item/weapon/deck/verb_pickup(mob/user as mob) // Snowflaked so pick up verb work as intended if((user == usr && (!( usr.restrained() ) && (!( usr.stat ) && (usr.contents.Find(src) || in_range(src, usr)))))) - if(!istype(usr, /mob/living/simple_animal)) + if(!istype(usr, /mob/living/simple_mob)) if( !usr.get_active_hand() ) //if active hand is empty var/mob/living/carbon/human/H = user var/obj/item/organ/external/temp = H.organs_by_name["r_hand"] @@ -413,7 +413,7 @@ overlays += I return - var/offset = Floor(20/cards.len) + var/offset = FLOOR(20/cards.len, 1) var/matrix/M = matrix() if(direction) diff --git a/code/modules/holodeck/HolodeckControl.dm b/code/modules/holodeck/HolodeckControl.dm index e5c9b81d99..ee33b66cba 100644 --- a/code/modules/holodeck/HolodeckControl.dm +++ b/code/modules/holodeck/HolodeckControl.dm @@ -32,22 +32,22 @@ "Beach" = new/datum/holodeck_program(/area/holodeck/source_beach), "Desert" = new/datum/holodeck_program(/area/holodeck/source_desert, list( - 'sound/effects/wind/wind_2_1.ogg', - 'sound/effects/wind/wind_2_2.ogg', - 'sound/effects/wind/wind_3_1.ogg', - 'sound/effects/wind/wind_4_1.ogg', - 'sound/effects/wind/wind_4_2.ogg', - 'sound/effects/wind/wind_5_1.ogg' + 'sound/effects/weather/wind/wind_2_1.ogg', + 'sound/effects/weather/wind/wind_2_2.ogg', + 'sound/effects/weather/wind/wind_3_1.ogg', + 'sound/effects/weather/wind/wind_4_1.ogg', + 'sound/effects/weather/wind/wind_4_2.ogg', + 'sound/effects/weather/wind/wind_5_1.ogg' ) ), "Snowfield" = new/datum/holodeck_program(/area/holodeck/source_snowfield, list( - 'sound/effects/wind/wind_2_1.ogg', - 'sound/effects/wind/wind_2_2.ogg', - 'sound/effects/wind/wind_3_1.ogg', - 'sound/effects/wind/wind_4_1.ogg', - 'sound/effects/wind/wind_4_2.ogg', - 'sound/effects/wind/wind_5_1.ogg' + 'sound/effects/weather/wind/wind_2_1.ogg', + 'sound/effects/weather/wind/wind_2_2.ogg', + 'sound/effects/weather/wind/wind_3_1.ogg', + 'sound/effects/weather/wind/wind_4_1.ogg', + 'sound/effects/weather/wind/wind_4_2.ogg', + 'sound/effects/weather/wind/wind_5_1.ogg' ) ), "Space" = new/datum/holodeck_program(/area/holodeck/source_space, @@ -177,7 +177,7 @@ for(var/obj/item/weapon/holo/esword/H in linkedholodeck) H.damtype = initial(H.damtype) - for(var/mob/living/simple_animal/hostile/carp/holodeck/C in holographic_mobs) + for(var/mob/living/simple_mob/animal/space/carp/holodeck/C in holographic_mobs) C.set_safety(!safety_disabled) if (last_to_emag) C.friends = list(last_to_emag) @@ -210,7 +210,7 @@ derez(item, 0) if (!safety_disabled) - for(var/mob/living/simple_animal/hostile/carp/holodeck/C in holographic_mobs) + for(var/mob/living/simple_mob/animal/space/carp/holodeck/C in holographic_mobs) if (get_area(C.loc) != linkedholodeck) holographic_mobs -= C C.derez() @@ -306,7 +306,7 @@ for(var/item in holographic_objs) derez(item) - for(var/mob/living/simple_animal/hostile/carp/holodeck/C in holographic_mobs) + for(var/mob/living/simple_mob/animal/space/carp/holodeck/C in holographic_mobs) holographic_mobs -= C C.derez() @@ -340,11 +340,11 @@ T.temperature = 5000 T.hotspot_expose(50000,50000,1) if(L.name=="Holocarp Spawn") - holographic_mobs += new /mob/living/simple_animal/hostile/carp/holodeck(L.loc) + holographic_mobs += new /mob/living/simple_mob/animal/space/carp/holodeck(L.loc) if(L.name=="Holocarp Spawn Random") if (prob(4)) //With 4 spawn points, carp should only appear 15% of the time. - holographic_mobs += new /mob/living/simple_animal/hostile/carp/holodeck(L.loc) + holographic_mobs += new /mob/living/simple_mob/animal/space/carp/holodeck(L.loc) update_projections() diff --git a/code/modules/holodeck/HolodeckObjects.dm b/code/modules/holodeck/HolodeckObjects.dm index 8e6d20eab9..22b4b2e6c6 100644 --- a/code/modules/holodeck/HolodeckObjects.dm +++ b/code/modules/holodeck/HolodeckObjects.dm @@ -104,7 +104,7 @@ base_icon = 'icons/turf/flooring/asteroid.dmi' initial_flooring = null -/turf/simulated/floor/holofloor/desert/initialize() +/turf/simulated/floor/holofloor/desert/Initialize() . = ..() if(prob(10)) add_overlay("asteroid[rand(0,9)]") @@ -325,19 +325,18 @@ visible_message("[user] dunks [W] into the [src]!", 3) return -/obj/structure/holohoop/CanPass(atom/movable/mover, turf/target, height=0, air_group=0) +/obj/structure/holohoop/CanPass(atom/movable/mover, turf/target) if (istype(mover,/obj/item) && mover.throwing) var/obj/item/I = mover if(istype(I, /obj/item/projectile)) - return + return TRUE if(prob(50)) - I.loc = src.loc - visible_message("Swish! \the [I] lands in \the [src].", 3) + I.forceMove(loc) + visible_message(span("notice", "Swish! \the [I] lands in \the [src]."), 3) else - visible_message("\The [I] bounces off of \the [src]'s rim!", 3) - return 0 - else - return ..(mover, target, height, air_group) + visible_message(span("warning", "\The [I] bounces off of \the [src]'s rim!"), 3) + return FALSE + return ..() /obj/machinery/readybutton @@ -419,7 +418,7 @@ //Holocarp -/mob/living/simple_animal/hostile/carp/holodeck +/mob/living/simple_mob/animal/space/carp/holodeck icon = 'icons/mob/AI.dmi' icon_state = "holo4" icon_living = "holo4" @@ -429,31 +428,27 @@ meat_amount = 0 meat_type = null -/mob/living/simple_animal/hostile/carp/holodeck/New() +/mob/living/simple_mob/animal/space/carp/holodeck/New() ..() set_light(2) //hologram lighting -/mob/living/simple_animal/hostile/carp/holodeck/proc/set_safety(var/safe) +/mob/living/simple_mob/animal/space/carp/holodeck/proc/set_safety(var/safe) if (safe) faction = "neutral" melee_damage_lower = 0 melee_damage_upper = 0 - environment_smash = 0 - destroy_surroundings = 0 else faction = "carp" melee_damage_lower = initial(melee_damage_lower) melee_damage_upper = initial(melee_damage_upper) - environment_smash = initial(environment_smash) - destroy_surroundings = initial(destroy_surroundings) -/mob/living/simple_animal/hostile/carp/holodeck/gib() +/mob/living/simple_mob/animal/space/carp/holodeck/gib() derez() //holograms can't gib -/mob/living/simple_animal/hostile/carp/holodeck/death() +/mob/living/simple_mob/animal/space/carp/holodeck/death() ..() derez() -/mob/living/simple_animal/hostile/carp/holodeck/proc/derez() +/mob/living/simple_mob/animal/space/carp/holodeck/proc/derez() visible_message("\The [src] fades away!") qdel(src) diff --git a/code/modules/holomap/station_holomap.dm b/code/modules/holomap/station_holomap.dm index b47c154b65..d38875f220 100644 --- a/code/modules/holomap/station_holomap.dm +++ b/code/modules/holomap/station_holomap.dm @@ -38,7 +38,7 @@ SSholomaps.station_holomaps += src flags |= ON_BORDER // Why? It doesn't help if its not density -/obj/machinery/station_map/initialize() +/obj/machinery/station_map/Initialize() . = ..() if(SSholomaps.holomaps_initialized) spawn(1) // Tragically we need to spawn this in order to give the frame construcing us time to set pixel_x/y @@ -125,7 +125,7 @@ watching_mob = user GLOB.moved_event.register(watching_mob, src, /obj/machinery/station_map/proc/checkPosition) GLOB.dir_set_event.register(watching_mob, src, /obj/machinery/station_map/proc/checkPosition) - destroyed_event.register(watching_mob, src, /obj/machinery/station_map/proc/stopWatching) + GLOB.destroyed_event.register(watching_mob, src, /obj/machinery/station_map/proc/stopWatching) update_use_power(2) if(bogus) @@ -154,7 +154,7 @@ M.client.images -= holomap_datum.station_map GLOB.moved_event.unregister(watching_mob, src) GLOB.dir_set_event.unregister(watching_mob, src) - destroyed_event.unregister(watching_mob, src) + GLOB.destroyed_event.unregister(watching_mob, src) watching_mob = null update_use_power(1) diff --git a/code/modules/hydroponics/grown.dm b/code/modules/hydroponics/grown.dm index 34b2a1e78f..4a37ae1ab4 100644 --- a/code/modules/hydroponics/grown.dm +++ b/code/modules/hydroponics/grown.dm @@ -11,7 +11,7 @@ var/datum/seed/seed var/potency = -1 -/obj/item/weapon/reagent_containers/food/snacks/grown/New(newloc,planttype) +/obj/item/weapon/reagent_containers/food/snacks/grown/Initialize(newloc,planttype) ..() if(!dried_type) diff --git a/code/modules/hydroponics/seed.dm b/code/modules/hydroponics/seed.dm index 5c6053aba4..0118088b27 100644 --- a/code/modules/hydroponics/seed.dm +++ b/code/modules/hydroponics/seed.dm @@ -104,10 +104,10 @@ return if(!istype(target)) - if(istype(target, /mob/living/simple_animal/mouse)) + if(istype(target, /mob/living/simple_mob/animal/passive/mouse)) new /obj/effect/decal/remains/mouse(get_turf(target)) qdel(target) - else if(istype(target, /mob/living/simple_animal/lizard)) + else if(istype(target, /mob/living/simple_mob/animal/passive/lizard)) new /obj/effect/decal/remains/lizard(get_turf(target)) qdel(target) return diff --git a/code/modules/hydroponics/seed_controller.dm b/code/modules/hydroponics/seed_controller.dm index b0aaab0a7c..27e6347e5a 100644 --- a/code/modules/hydroponics/seed_controller.dm +++ b/code/modules/hydroponics/seed_controller.dm @@ -131,7 +131,7 @@ var/global/datum/controller/plants/plant_controller // Set in New(). seed.set_trait(TRAIT_HIGHKPA_TOLERANCE,200) return seed -/datum/controller/plants/proc/process() +/datum/controller/plants/process() processing = 1 spawn(0) set background = 1 diff --git a/code/modules/hydroponics/seed_datums.dm b/code/modules/hydroponics/seed_datums.dm index b70a02af4c..eab78597b1 100644 --- a/code/modules/hydroponics/seed_datums.dm +++ b/code/modules/hydroponics/seed_datums.dm @@ -184,7 +184,7 @@ display_name = "killer tomato plant" mutants = null can_self_harvest = 1 - has_mob_product = /mob/living/simple_animal/hostile/tomato + has_mob_product = /mob/living/simple_mob/tomato /datum/seed/tomato/killer/New() ..() diff --git a/code/modules/hydroponics/seed_packets.dm b/code/modules/hydroponics/seed_packets.dm index 0689f428b6..f4b8b951a5 100644 --- a/code/modules/hydroponics/seed_packets.dm +++ b/code/modules/hydroponics/seed_packets.dm @@ -13,7 +13,7 @@ GLOBAL_LIST_BOILERPLATE(all_seed_packs, /obj/item/seeds) var/datum/seed/seed var/modified = 0 -/obj/item/seeds/initialize() +/obj/item/seeds/Initialize() update_seed() . = ..() @@ -75,7 +75,7 @@ GLOBAL_LIST_BOILERPLATE(all_seed_packs, /obj/item/seeds) /obj/item/seeds/random seed_type = null -/obj/item/seeds/random/initialize() +/obj/item/seeds/random/Initialize() seed = plant_controller.create_random_seed() seed_type = seed.name . = ..() diff --git a/code/modules/hydroponics/trays/tray.dm b/code/modules/hydroponics/trays/tray.dm index 8db9f7a8f1..5551cc95ad 100644 --- a/code/modules/hydroponics/trays/tray.dm +++ b/code/modules/hydroponics/trays/tray.dm @@ -165,7 +165,7 @@ nymph.visible_message("[nymph] rolls around in [src] for a bit.","You roll around in [src] for a bit.") return -/obj/machinery/portable_atmospherics/hydroponics/initialize() +/obj/machinery/portable_atmospherics/hydroponics/Initialize() . = ..() temp_chem_holder = new() temp_chem_holder.create_reagents(10) @@ -217,13 +217,10 @@ ..() -/obj/machinery/portable_atmospherics/hydroponics/CanPass(atom/movable/mover, turf/target, height=0, air_group=0) - if(air_group || (height==0)) return 1 - +/obj/machinery/portable_atmospherics/hydroponics/CanPass(atom/movable/mover, turf/target) if(istype(mover) && mover.checkpass(PASSTABLE)) - return 1 - else - return 0 + return TRUE + return FALSE /obj/machinery/portable_atmospherics/hydroponics/proc/check_health() if(seed && !dead && health <= 0) diff --git a/code/modules/identification/identification.dm b/code/modules/identification/identification.dm new file mode 100644 index 0000000000..568ad2103e --- /dev/null +++ b/code/modules/identification/identification.dm @@ -0,0 +1,127 @@ +// This is a datum attached to objects to make their 'identity' be unknown initially. +// The identitiy and properties of an unidentified object can be determined in-game through a specialized process or by potentially risky trial-and-error. +// This is very similar to a traditional roguelike's identification system, and as such will use certain terms from those to describe them. +// Despite this, unlike a roguelike, objects that do the same thing DO NOT have the same name/appearance/etc. + +/datum/identification + var/obj/holder = null // The thing the datum is 'attached' to. + // Holds the true information. + var/true_name = null // The real name of the object. It is copied automatically from holder, on the datum being instantiated. + var/true_desc = null // Ditto, for desc. + var/true_description_info = null // Ditto, for helpful examine panel entries. + var/true_description_fluff = null // Ditto, for lore. + var/true_description_antag = null // Ditto, for antag info (this probably won't get used). + var/identified = IDENTITY_UNKNOWN // Can be IDENTITY_UNKNOWN, IDENTITY_PROPERTIES, IDENTITY_QUALITY, or IDENTITY_FULL. + + // Holds what is displayed when not identified sufficently. + var/unidentified_name = null // The name given to the object when not identified. Generated by generate_unidentified_name() + var/unidentified_desc = "You're not too sure what this is." + var/unidentified_description_info = "This object is unidentified, and as such its properties are unknown. Using this object may be dangerous." + + // Lists of lists for generating names by combining one from each. + var/list/naming_lists = list() + + // What 'identification type' is needed to identify this. + var/identification_type = IDENTITY_TYPE_NONE + +/datum/identification/New(obj/new_holder) + ASSERT(new_holder) + holder = new_holder + record_true_identity() // Get all the identifying features from the holder. + update_name() // Then hide them for awhile if needed. + +/datum/identification/Destroy() + holder = null + return ..() + +// Records the object's inital identifiying features to the datum for future safekeeping. +/datum/identification/proc/record_true_identity() + true_name = holder.name + true_desc = holder.desc + true_description_info = holder.description_info + true_description_fluff = holder.description_fluff + true_description_antag = holder.description_antag + +// Formally identifies the holder. +/datum/identification/proc/identify(new_identity = IDENTITY_FULL, mob/user) + if(new_identity & identified) // Already done. + return + identified |= new_identity // Set the bitflag. + if(user) + switch(identified) + if(IDENTITY_QUALITY) + to_chat(user, "You've identified \the [holder]'s quality.") + if(IDENTITY_PROPERTIES) + to_chat(user, "You've identified \the [holder]'s functionality as a [true_name].") + if(IDENTITY_FULL) + to_chat(user, "You've identified \the [holder] as a [true_name], and its quality.") + update_name() + holder.update_icon() + +// Reverses identification for whatever reason. +/datum/identification/proc/unidentify(new_identity = IDENTITY_UNKNOWN, mob/user) + identified &= ~new_identity // Unset the bitflag. + update_name() + holder.update_icon() + if(user) + switch(identified) // Give a message based on what's left. + if(IDENTITY_QUALITY) + to_chat(user, span("warning", "You forgot what \the [holder] actually did...")) + if(IDENTITY_PROPERTIES) + to_chat(user, span("warning", "You forgot \the [holder]'s quality...")) + if(IDENTITY_UNKNOWN) + to_chat(user, span("warning", "You forgot everything about \the [holder].")) + +// Sets the holder's name to the real name if its properties are identified, or obscures it otherwise. +/datum/identification/proc/update_name() + if(identified & IDENTITY_PROPERTIES) + holder.name = true_name + holder.desc = true_desc + holder.description_info = true_description_info + holder.description_fluff = true_description_fluff + holder.description_antag = true_description_antag + return + + if(!unidentified_name) + unidentified_name = generate_unidentified_name() + + holder.name = unidentified_name + holder.desc = unidentified_desc + holder.description_info = unidentified_description_info + holder.description_fluff = null + holder.description_antag = null + +// Makes a name for an object that is not identified. It picks one string out of each list inside naming_list. +/datum/identification/proc/generate_unidentified_name() + if(!LAZYLEN(naming_lists)) + return "unidentified object" + + var/list/new_name = list() + for(var/i in naming_lists) + var/list/current_list = i + new_name += pick(current_list) + return new_name.Join(" ") + +// Used for tech-based objects. +// Unused for now pending Future Stuff(tm). +/datum/identification/mechanical + naming_lists = list( + list("unidentified", "unknown", "strange", "weird", "unfamiliar", "peculiar", "mysterious", "bizarre", "odd"), + list("device", "apparatus", "gadget", "mechanism", "appliance", "machine", "equipment", "invention", "contraption") + ) + identification_type = IDENTITY_TYPE_TECH + +// Used for unidentified hypos. +// Their contents can range from genuine medication, expired medicine, illicit drugs, toxins and poisons, and more. +// They are the analog for potions in a traditional roguelike. +/datum/identification/hypo + naming_lists = list( + list("unidentified", "unknown", "unmarked", "blank", "refilled", "custom", "modified", "questionable", "suspicious"), + list("hypospray", "autoinjector") + ) + unidentified_desc = "An autoinjector that does not give any indication towards what is inside. \ + The case is also sealed tight and the liquids contained cannot be removed except by injecting it into someone. \ + Do you feel lucky?" + unidentified_description_info = "A skilled chemist with a specialized machine can identify this autoinjector. \ + Blindly using the autoinjector is risky and can be dangerous." + identification_type = IDENTITY_TYPE_CHEMICAL diff --git a/code/modules/identification/item_procs.dm b/code/modules/identification/item_procs.dm new file mode 100644 index 0000000000..c2e5ddaed6 --- /dev/null +++ b/code/modules/identification/item_procs.dm @@ -0,0 +1,30 @@ +// This is on the base /item so badmins can play with it by calling hide_identity(). +/obj/item + var/datum/identification/identity = null + var/identity_type = /datum/identification + var/init_hide_identity = FALSE // Set to true to automatically obscure the object on initialization. + +/obj/item/Initialize() + if(init_hide_identity) + identity = new identity_type(src) + return ..() + +/obj/item/Destroy() + if(identity) + QDEL_NULL(identity) + return ..() + +/obj/item/proc/hide_identity() // Mostly for admins to make things secret. + if(!identity) + identity = new identity_type(src) + else + identity.unidentify() + +/obj/item/proc/identify(identity_type = IDENTITY_FULL, mob/user) + if(identity) + identity.identify(identity_type, user) + +/obj/item/proc/is_identified(identity_type = IDENTITY_FULL) + if(!identity) // No identification datum means nothing to hide. + return TRUE + return identity_type & identity.identified diff --git a/code/modules/integrated_electronics/core/assemblies.dm b/code/modules/integrated_electronics/core/assemblies.dm index 8367e2096a..b540aaec2e 100644 --- a/code/modules/integrated_electronics/core/assemblies.dm +++ b/code/modules/integrated_electronics/core/assemblies.dm @@ -20,14 +20,14 @@ var/detail_color = COLOR_ASSEMBLY_BLACK -/obj/item/device/electronic_assembly/initialize() +/obj/item/device/electronic_assembly/Initialize() battery = new(src) - processing_objects |= src + START_PROCESSING(SSobj, src) return ..() /obj/item/device/electronic_assembly/Destroy() battery = null // It will be qdel'd by ..() if still in our contents - processing_objects -= src + STOP_PROCESSING(SSobj, src) return ..() /obj/item/device/electronic_assembly/process() @@ -339,7 +339,7 @@ if(battery) var/lost = battery.use(amount * CELLRATE) net_power -= lost - return TRUE + return lost > 0 return FALSE // Ditto for giving. diff --git a/code/modules/integrated_electronics/core/assemblies/clothing.dm b/code/modules/integrated_electronics/core/assemblies/clothing.dm index f8a5b31f3f..4415d367f8 100644 --- a/code/modules/integrated_electronics/core/assemblies/clothing.dm +++ b/code/modules/integrated_electronics/core/assemblies/clothing.dm @@ -108,7 +108,7 @@ icon_state = "circuitry" worn_state = "circuitry" -/obj/item/clothing/under/circuitry/initialize() +/obj/item/clothing/under/circuitry/Initialize() setup_integrated_circuit(/obj/item/device/electronic_assembly/clothing) return ..() @@ -121,7 +121,7 @@ icon_state = "circuitry" item_state = "circuitry" -/obj/item/clothing/gloves/circuitry/initialize() +/obj/item/clothing/gloves/circuitry/Initialize() setup_integrated_circuit(/obj/item/device/electronic_assembly/clothing/small) return ..() @@ -134,7 +134,7 @@ icon_state = "circuitry" item_state = "night" // The on-mob sprite would be identical anyways. -/obj/item/clothing/glasses/circuitry/initialize() +/obj/item/clothing/glasses/circuitry/Initialize() setup_integrated_circuit(/obj/item/device/electronic_assembly/clothing/small) return ..() @@ -146,7 +146,7 @@ icon_state = "circuitry" item_state = "circuitry" -/obj/item/clothing/shoes/circuitry/initialize() +/obj/item/clothing/shoes/circuitry/Initialize() setup_integrated_circuit(/obj/item/device/electronic_assembly/clothing/small) return ..() @@ -158,7 +158,7 @@ icon_state = "circuitry" item_state = "circuitry" -/obj/item/clothing/head/circuitry/initialize() +/obj/item/clothing/head/circuitry/Initialize() setup_integrated_circuit(/obj/item/device/electronic_assembly/clothing/small) return ..() @@ -170,7 +170,7 @@ icon_state = "circuitry" item_state = "circuitry" -/obj/item/clothing/ears/circuitry/initialize() +/obj/item/clothing/ears/circuitry/Initialize() setup_integrated_circuit(/obj/item/device/electronic_assembly/clothing/small) return ..() @@ -182,6 +182,6 @@ icon_state = "circuitry" item_state = "circuitry" -/obj/item/clothing/suit/circuitry/initialize() +/obj/item/clothing/suit/circuitry/Initialize() setup_integrated_circuit(/obj/item/device/electronic_assembly/clothing/large) return ..() \ No newline at end of file diff --git a/code/modules/integrated_electronics/core/assemblies/device.dm b/code/modules/integrated_electronics/core/assemblies/device.dm index 63e0bef562..bcdd0e9bea 100644 --- a/code/modules/integrated_electronics/core/assemblies/device.dm +++ b/code/modules/integrated_electronics/core/assemblies/device.dm @@ -1,84 +1,84 @@ -/obj/item/device/assembly/electronic_assembly - name = "electronic device" - desc = "It's a case for building electronics with. It can be attached to other small devices." - icon_state = "setup_device" - var/opened = 0 - - var/obj/item/device/electronic_assembly/device/EA - -/obj/item/device/assembly/electronic_assembly/New() - EA = new(src) - EA.holder = src - ..() - -/obj/item/device/assembly/electronic_assembly/attackby(obj/item/I as obj, mob/user as mob) - if (I.is_crowbar()) - toggle_open(user) - else if (opened) - EA.attackby(I, user) - else - ..() - -/obj/item/device/assembly/electronic_assembly/proc/toggle_open(mob/user) - playsound(get_turf(src), 'sound/items/Crowbar.ogg', 50, 1) - opened = !opened - EA.opened = opened - to_chat(user, "You [opened ? "opened" : "closed"] \the [src].") - secured = 1 - update_icon() - -/obj/item/device/assembly/electronic_assembly/update_icon() - if(EA) - icon_state = initial(icon_state) - else - icon_state = initial(icon_state)+"0" - if(opened) - icon_state = icon_state + "-open" - -/obj/item/device/assembly/electronic_assembly/attack_self(mob/user as mob) - if(EA) - EA.attack_self(user) - -/obj/item/device/assembly/electronic_assembly/pulsed(var/radio = 0) //Called when another assembly acts on this one, var/radio will determine where it came from for wire calcs - if(EA) - for(var/obj/item/integrated_circuit/built_in/device_input/I in EA.contents) - I.do_work() - return - -/obj/item/device/assembly/electronic_assembly/examine(mob/user) - .=..(user, 1) - if(EA) - for(var/obj/item/integrated_circuit/IC in EA.contents) - IC.external_examine(user) - -/obj/item/device/assembly/electronic_assembly/verb/toggle() - set src in usr - set category = "Object" - set name = "Open/Close Device Assembly" - set desc = "Open or close device assembly!" - - toggle_open(usr) - - -/obj/item/device/electronic_assembly/device - name = "electronic device" - icon_state = "setup_device" - desc = "It's a tiny electronic device with specific use for attaching to other devices." - var/obj/item/device/assembly/electronic_assembly/holder - w_class = ITEMSIZE_TINY - max_components = IC_COMPONENTS_BASE * 3/4 - max_complexity = IC_COMPLEXITY_BASE * 3/4 - - -/obj/item/device/electronic_assembly/device/New() - ..() - var/obj/item/integrated_circuit/built_in/device_input/input = new(src) - var/obj/item/integrated_circuit/built_in/device_output/output = new(src) - input.assembly = src - output.assembly = src - -/obj/item/device/electronic_assembly/device/check_interactivity(mob/user) - if(!CanInteract(user, state = deep_inventory_state)) - return 0 - return 1 - +/obj/item/device/assembly/electronic_assembly + name = "electronic device" + desc = "It's a case for building electronics with. It can be attached to other small devices." + icon_state = "setup_device" + var/opened = 0 + + var/obj/item/device/electronic_assembly/device/EA + +/obj/item/device/assembly/electronic_assembly/New() + EA = new(src) + EA.holder = src + ..() + +/obj/item/device/assembly/electronic_assembly/attackby(obj/item/I as obj, mob/user as mob) + if (I.is_crowbar()) + toggle_open(user) + else if (opened) + EA.attackby(I, user) + else + ..() + +/obj/item/device/assembly/electronic_assembly/proc/toggle_open(mob/user) + playsound(get_turf(src), 'sound/items/Crowbar.ogg', 50, 1) + opened = !opened + EA.opened = opened + to_chat(user, "You [opened ? "opened" : "closed"] \the [src].") + secured = 1 + update_icon() + +/obj/item/device/assembly/electronic_assembly/update_icon() + if(EA) + icon_state = initial(icon_state) + else + icon_state = initial(icon_state)+"0" + if(opened) + icon_state = icon_state + "-open" + +/obj/item/device/assembly/electronic_assembly/attack_self(mob/user as mob) + if(EA) + EA.attack_self(user) + +/obj/item/device/assembly/electronic_assembly/pulsed(var/radio = 0) //Called when another assembly acts on this one, var/radio will determine where it came from for wire calcs + if(EA) + for(var/obj/item/integrated_circuit/built_in/device_input/I in EA.contents) + I.do_work() + return + +/obj/item/device/assembly/electronic_assembly/examine(mob/user) + .=..(user, 1) + if(EA) + for(var/obj/item/integrated_circuit/IC in EA.contents) + IC.external_examine(user) + +/obj/item/device/assembly/electronic_assembly/verb/toggle() + set src in usr + set category = "Object" + set name = "Open/Close Device Assembly" + set desc = "Open or close device assembly!" + + toggle_open(usr) + + +/obj/item/device/electronic_assembly/device + name = "electronic device" + icon_state = "setup_device" + desc = "It's a tiny electronic device with specific use for attaching to other devices." + var/obj/item/device/assembly/electronic_assembly/holder + w_class = ITEMSIZE_TINY + max_components = IC_COMPONENTS_BASE * 3/4 + max_complexity = IC_COMPLEXITY_BASE * 3/4 + + +/obj/item/device/electronic_assembly/device/New() + ..() + var/obj/item/integrated_circuit/built_in/device_input/input = new(src) + var/obj/item/integrated_circuit/built_in/device_output/output = new(src) + input.assembly = src + output.assembly = src + +/obj/item/device/electronic_assembly/device/check_interactivity(mob/user) + if(!CanInteract(user, state = deep_inventory_state)) + return 0 + return 1 + diff --git a/code/modules/integrated_electronics/core/detailer.dm b/code/modules/integrated_electronics/core/detailer.dm index cd1696aecc..4c1c509384 100644 --- a/code/modules/integrated_electronics/core/detailer.dm +++ b/code/modules/integrated_electronics/core/detailer.dm @@ -25,7 +25,7 @@ "hot pink" = COLOR_ASSEMBLY_HOT_PINK ) -/obj/item/device/integrated_electronics/detailer/initialize() +/obj/item/device/integrated_electronics/detailer/Initialize() update_icon() return ..() diff --git a/code/modules/integrated_electronics/core/tools.dm b/code/modules/integrated_electronics/core/tools.dm index dd270ee326..23e8e3f24b 100644 --- a/code/modules/integrated_electronics/core/tools.dm +++ b/code/modules/integrated_electronics/core/tools.dm @@ -12,7 +12,6 @@ icon = 'icons/obj/integrated_electronics/electronic_tools.dmi' icon_state = "wirer-wire" item_state = "wirer" - flags = CONDUCT w_class = ITEMSIZE_SMALL var/datum/integrated_io/selected_io = null var/mode = WIRE @@ -110,7 +109,6 @@ settings to specific circuits, or for debugging purposes. It can also pulse activation pins." icon = 'icons/obj/integrated_electronics/electronic_tools.dmi' icon_state = "debugger" - flags = CONDUCT w_class = 2 var/data_to_write = null var/accepting_refs = 0 diff --git a/code/modules/integrated_electronics/passive/power.dm b/code/modules/integrated_electronics/passive/power.dm index 829027303c..f26bc693bc 100644 --- a/code/modules/integrated_electronics/passive/power.dm +++ b/code/modules/integrated_electronics/passive/power.dm @@ -57,7 +57,7 @@ desc = "A complicated piece of technology which converts bodily nutriments of a host into electricity." extended_desc = "The siphon generates 10W of energy, so long as the siphon exists inside a biological entity. The entity will feel an increased \ appetite and will need to eat more often due to this. This device will fail if used inside synthetic entities." - icon_state = "setup_implant" + icon_state = "implant_power" complexity = 10 origin_tech = list(TECH_POWER = 4, TECH_ENGINEERING = 4, TECH_DATA = 4, TECH_BIO = 5) spawn_flags = IC_SPAWN_RESEARCH @@ -82,8 +82,6 @@ desc = "A small circuit designed to be connected to an internal power wire inside a synthetic entity." extended_desc = "The siphon generates 10W of energy, so long as the siphon exists inside a synthetic entity. The entity need to recharge \ more often due to this. This device will fail if used inside organic entities." - icon_state = "setup_implant" - complexity = 10 origin_tech = list(TECH_POWER = 3, TECH_ENGINEERING = 4, TECH_DATA = 3) spawn_flags = IC_SPAWN_RESEARCH @@ -191,7 +189,7 @@ var/obj/machinery/power/circuit_io/IO = null // Dummy power machine to move energy in/out without a bunch of code duplication. var/throughput = 10000 // Give/take up to 10kW. -/obj/item/integrated_circuit/passive/power/powernet/initialize() +/obj/item/integrated_circuit/passive/power/powernet/Initialize() IO = new(src) return ..() diff --git a/code/modules/integrated_electronics/subtypes/converters.dm b/code/modules/integrated_electronics/subtypes/converters.dm index 0ec00be317..316742e488 100644 --- a/code/modules/integrated_electronics/subtypes/converters.dm +++ b/code/modules/integrated_electronics/subtypes/converters.dm @@ -265,7 +265,7 @@ pull_data() var/incoming = get_pin_data(IC_INPUT, 1) if(!isnull(incoming)) - result = ToDegrees(incoming) + result = TODEGREES(incoming) set_pin_data(IC_OUTPUT, 1, result) push_data() @@ -283,7 +283,7 @@ pull_data() var/incoming = get_pin_data(IC_INPUT, 1) if(!isnull(incoming)) - result = ToRadians(incoming) + result = TORADIANS(incoming) set_pin_data(IC_OUTPUT, 1, result) push_data() diff --git a/code/modules/integrated_electronics/subtypes/data_transfer.dm b/code/modules/integrated_electronics/subtypes/data_transfer.dm index e490ccd27a..052d3acb76 100644 --- a/code/modules/integrated_electronics/subtypes/data_transfer.dm +++ b/code/modules/integrated_electronics/subtypes/data_transfer.dm @@ -125,7 +125,7 @@ /obj/item/integrated_circuit/transfer/pulsedemultiplexer/do_work() var/output_index = get_pin_data(IC_INPUT, 1) - if(output_index == Clamp(output_index, 1, number_of_outputs)) + if(output_index == CLAMP(output_index, 1, number_of_outputs)) activate_pin(round(output_index + 1 ,1)) /obj/item/integrated_circuit/transfer/pulsedemultiplexer/medium diff --git a/code/modules/integrated_electronics/subtypes/input.dm b/code/modules/integrated_electronics/subtypes/input.dm index c2e640403a..9c54a6e377 100644 --- a/code/modules/integrated_electronics/subtypes/input.dm +++ b/code/modules/integrated_electronics/subtypes/input.dm @@ -296,7 +296,7 @@ /obj/item/integrated_circuit/input/advanced_locator/on_data_written() var/rad = get_pin_data(IC_INPUT, 2) if(isnum(rad)) - rad = Clamp(rad, 0, 7) + rad = CLAMP(rad, 0, 7) radius = rad /obj/item/integrated_circuit/input/advanced_locator/do_work() @@ -353,7 +353,7 @@ var/code = 30 var/datum/radio_frequency/radio_connection -/obj/item/integrated_circuit/input/signaler/initialize() +/obj/item/integrated_circuit/input/signaler/Initialize() . = ..() set_frequency(frequency) // Set the pins so when someone sees them, they won't show as null diff --git a/code/modules/integrated_electronics/subtypes/manipulation.dm b/code/modules/integrated_electronics/subtypes/manipulation.dm index 344a7dc47e..7bb9b332d1 100644 --- a/code/modules/integrated_electronics/subtypes/manipulation.dm +++ b/code/modules/integrated_electronics/subtypes/manipulation.dm @@ -188,14 +188,14 @@ // These procs do not relocate the grenade, that's the callers responsibility /obj/item/integrated_circuit/manipulation/grenade/proc/attach_grenade(var/obj/item/weapon/grenade/G) attached_grenade = G - destroyed_event.register(attached_grenade, src, /obj/item/integrated_circuit/manipulation/grenade/proc/detach_grenade) + GLOB.destroyed_event.register(attached_grenade, src, /obj/item/integrated_circuit/manipulation/grenade/proc/detach_grenade) size += G.w_class desc += " \An [attached_grenade] is attached to it!" /obj/item/integrated_circuit/manipulation/grenade/proc/detach_grenade() if(!attached_grenade) return - destroyed_event.unregister(attached_grenade, src, /obj/item/integrated_circuit/manipulation/grenade/proc/detach_grenade) + GLOB.destroyed_event.unregister(attached_grenade, src, /obj/item/integrated_circuit/manipulation/grenade/proc/detach_grenade) attached_grenade = null size = initial(size) desc = initial(desc) diff --git a/code/modules/integrated_electronics/subtypes/output.dm b/code/modules/integrated_electronics/subtypes/output.dm index c3ff9b36d5..1e7ad6c31a 100644 --- a/code/modules/integrated_electronics/subtypes/output.dm +++ b/code/modules/integrated_electronics/subtypes/output.dm @@ -4,12 +4,14 @@ /obj/item/integrated_circuit/output/screen name = "small screen" desc = "This small screen can display a single piece of data, when the machine is examined closely." + extended_desc = "This will show the data loaded into it when the machine is examined." icon_state = "screen" inputs = list("displayed data" = IC_PINTYPE_ANY) outputs = list() activators = list("load data" = IC_PINTYPE_PULSE_IN) spawn_flags = IC_SPAWN_DEFAULT|IC_SPAWN_RESEARCH power_draw_per_use = 10 + cooldown_per_use = 0 // Can be updated frequently. var/stuff_to_display = null @@ -30,8 +32,9 @@ stuff_to_display = I.data /obj/item/integrated_circuit/output/screen/medium - name = "screen" + name = "medium screen" desc = "This screen allows for people holding the device to see a piece of data." + extended_desc = "This will display a message to the user holding the assembly when activated." icon_state = "screen_medium" power_draw_per_use = 20 @@ -45,8 +48,10 @@ /obj/item/integrated_circuit/output/screen/large name = "large screen" desc = "This screen allows for people able to see the device to see a piece of data." + extended_desc = "This will display a message to everyone who can see the assembly when activated." icon_state = "screen_large" power_draw_per_use = 40 + cooldown_per_use = 1 SECOND // Because everyone will get the output instead of just the user/examiner. /obj/item/integrated_circuit/output/screen/large/do_work() ..() @@ -103,7 +108,7 @@ var/brightness = get_pin_data(IC_INPUT, 2) if(new_color && isnum(brightness)) - brightness = Clamp(brightness, 0, 6) + brightness = CLAMP(brightness, 0, 6) light_rgb = new_color light_brightness = brightness @@ -114,8 +119,8 @@ /obj/item/integrated_circuit/output/text_to_speech name = "text-to-speech circuit" - desc = "A miniature speaker is attached to this component." - extended_desc = "This unit is more advanced than the plain speaker circuit, able to transpose any valid text to speech." + desc = "A miniature speaker is attached to this component. It is able to transpose any valid text to speech." + extended_desc = "This will emit an audible message to anyone who can hear the assembly." icon_state = "speaker" complexity = 12 cooldown_per_use = 4 SECONDS @@ -300,7 +305,7 @@ text_output += "\an [name]" else text_output += "\an ["\improper[initial_name]"] labeled '[name]'" - text_output += " which is currently [get_pin_data(IC_INPUT, 1) ? "lit ¤" : "unlit."]" + text_output += " which is currently [get_pin_data(IC_INPUT, 1) ? "lit ¤" : "unlit."]" to_chat(user,jointext(text_output,null)) /obj/item/integrated_circuit/output/led/red @@ -462,8 +467,7 @@ /obj/item/integrated_circuit/output/holographic_projector/proc/destroy_hologram() - hologram.forceMove(src) - qdel(hologram) + QDEL_NULL(hologram) // holo_beam.End() // QDEL_NULL(holo_beam) diff --git a/code/modules/integrated_electronics/subtypes/reagents.dm b/code/modules/integrated_electronics/subtypes/reagents.dm index e8ca2ae134..ca834b3a09 100644 --- a/code/modules/integrated_electronics/subtypes/reagents.dm +++ b/code/modules/integrated_electronics/subtypes/reagents.dm @@ -83,7 +83,7 @@ else direc = 1 if(isnum(new_amount)) - new_amount = Clamp(new_amount, 0, volume) + new_amount = CLAMP(new_amount, 0, volume) transfer_amount = new_amount @@ -132,7 +132,7 @@ if(!TS.Adjacent(TT)) activate_pin(3) return - var/tramount = Clamp(min(transfer_amount, reagents.maximum_volume - reagents.total_volume), 0, reagents.maximum_volume) + var/tramount = CLAMP(min(transfer_amount, reagents.maximum_volume - reagents.total_volume), 0, reagents.maximum_volume) if(ismob(target))//Blood! if(istype(target, /mob/living/carbon)) var/mob/living/carbon/T = target @@ -207,7 +207,7 @@ else direc = 1 if(isnum(new_amount)) - new_amount = Clamp(new_amount, 0, 50) + new_amount = CLAMP(new_amount, 0, 50) transfer_amount = new_amount /obj/item/integrated_circuit/reagent/pump/do_work() @@ -329,7 +329,7 @@ else direc = 1 if(isnum(new_amount)) - new_amount = Clamp(new_amount, 0, 50) + new_amount = CLAMP(new_amount, 0, 50) transfer_amount = new_amount /obj/item/integrated_circuit/reagent/filter/do_work() diff --git a/code/modules/integrated_electronics/subtypes/time.dm b/code/modules/integrated_electronics/subtypes/time.dm index b03a5a2ada..df8e686b1f 100644 --- a/code/modules/integrated_electronics/subtypes/time.dm +++ b/code/modules/integrated_electronics/subtypes/time.dm @@ -7,124 +7,68 @@ category_text = "Time" /obj/item/integrated_circuit/time/delay - name = "two-sec delay circuit" - desc = "This sends a pulse signal out after a delay, critical for ensuring proper control flow in a complex machine. \ - This circuit is set to send a pulse after a delay of two seconds." - icon_state = "delay-20" - var/delay = 2 SECONDS + name = "delay circuit" + desc = "This sends a pulse signal out after a delay defined in tenths of a second, critical for ensuring proper \ + control flow in a complex machine. This circuit's delay can be customized, between 1/10th of a second to one hour. \ + The delay is updated upon receiving a pulse." + extended_desc = "The delay is defined in tenths of a second. For instance, 4 will be a delay of 0.4 seconds, or 15 for 1.5 seconds." + icon_state = "delay" + inputs = list("delay time" = IC_PINTYPE_NUMBER) activators = list("incoming"= IC_PINTYPE_PULSE_IN,"outgoing" = IC_PINTYPE_PULSE_OUT) spawn_flags = IC_SPAWN_DEFAULT|IC_SPAWN_RESEARCH power_draw_per_use = 2 + var/delay = 20 /obj/item/integrated_circuit/time/delay/do_work() - set waitfor = 0 // Don't sleep in a proc that is called by a processor. It'll delay the entire thing - - sleep(delay) - activate_pin(2) - -/obj/item/integrated_circuit/time/delay/five_sec - name = "five-sec delay circuit" - desc = "This sends a pulse signal out after a delay, critical for ensuring proper control flow in a complex machine. \ - This circuit is set to send a pulse after a delay of five seconds." - icon_state = "delay-50" - delay = 5 SECONDS - spawn_flags = IC_SPAWN_DEFAULT|IC_SPAWN_RESEARCH - -/obj/item/integrated_circuit/time/delay/one_sec - name = "one-sec delay circuit" - desc = "This sends a pulse signal out after a delay, critical for ensuring proper control flow in a complex machine. \ - This circuit is set to send a pulse after a delay of one second." - icon_state = "delay-10" - delay = 1 SECOND - spawn_flags = IC_SPAWN_DEFAULT|IC_SPAWN_RESEARCH - -/obj/item/integrated_circuit/time/delay/half_sec - name = "half-sec delay circuit" - desc = "This sends a pulse signal out after a delay, critical for ensuring proper control flow in a complex machine. \ - This circuit is set to send a pulse after a delay of half a second." - icon_state = "delay-5" - delay = 5 - spawn_flags = IC_SPAWN_DEFAULT|IC_SPAWN_RESEARCH - -/obj/item/integrated_circuit/time/delay/tenth_sec - name = "tenth-sec delay circuit" - desc = "This sends a pulse signal out after a delay, critical for ensuring proper control flow in a complex machine. \ - This circuit is set to send a pulse after a delay of 1/10th of a second." - icon_state = "delay-1" - delay = 1 - spawn_flags = IC_SPAWN_DEFAULT|IC_SPAWN_RESEARCH - -/obj/item/integrated_circuit/time/delay/custom - name = "custom delay circuit" - desc = "This sends a pulse signal out after a delay, critical for ensuring proper control flow in a complex machine. \ - This circuit's delay can be customized, between 1/10th of a second to one hour. The delay is updated upon receiving a pulse." - icon_state = "delay" - inputs = list("delay time" = IC_PINTYPE_NUMBER) - spawn_flags = IC_SPAWN_RESEARCH - -/obj/item/integrated_circuit/time/delay/custom/do_work() var/delay_input = get_pin_data(IC_INPUT, 1) if(delay_input && isnum(delay_input) ) - var/new_delay = between(1, delay_input, 36000) //An hour. + var/new_delay = CLAMP(delay_input, 1, 1 HOUR) delay = new_delay - ..() + addtimer(CALLBACK(src, .proc/activate_pin, 2), delay) /obj/item/integrated_circuit/time/ticker name = "ticker circuit" - desc = "This circuit sends an automatic pulse every four seconds." - icon_state = "tick-m" - complexity = 8 - var/ticks_to_pulse = 4 - var/ticks_completed = 0 - var/is_running = FALSE - inputs = list("enable ticking" = IC_PINTYPE_BOOLEAN) + desc = "This circuit sends an automatic pulse every given interval, defined in tenths of a second." + extended_desc ="This circuit sends an automatic pulse every given interval, defined in tenths of a second. \ + For example, setting the time pin to 4 will send a pulse every 0.4 seconds, or 15 for every 1.5 seconds.
    \ + The power consumption will scale based on how fast this ticks. Also, note that most components have a short \ + internal cooldown when activated." + icon_state = "tick-f" + complexity = 10 + inputs = list("enable ticking" = IC_PINTYPE_BOOLEAN, "delay time" = IC_PINTYPE_NUMBER) activators = list("outgoing pulse" = IC_PINTYPE_PULSE_OUT) - spawn_flags = IC_SPAWN_RESEARCH - power_draw_per_use = 4 - -/obj/item/integrated_circuit/time/ticker/Destroy() - if(is_running) - processing_objects -= src - . = ..() + spawn_flags = IC_SPAWN_DEFAULT|IC_SPAWN_RESEARCH + power_draw_per_use = 5 + var/delay = 2 SECONDS + var/next_fire = 0 + var/is_running = FALSE + // Power consumption scales based on how fast it ticks. + // This, plus the fact it ticks more often will increase consumption non-linearly, + // and the circuit cooldown and will hopefully discourage stupidly fast ticking machines. + var/max_power_draw = 500 /obj/item/integrated_circuit/time/ticker/on_data_written() + var/delay_input = get_pin_data(IC_INPUT, 2) + if(delay_input && isnum(delay_input) ) + var/new_delay = CLAMP(delay_input, 1, 1 HOUR) + delay = new_delay + power_draw_per_use = CEILING((max_power_draw / delay) / delay, 1) + var/do_tick = get_pin_data(IC_INPUT, 1) if(do_tick && !is_running) is_running = TRUE - processing_objects |= src - else if(is_running) + tick() + else if(!do_tick && is_running) is_running = FALSE - processing_objects -= src - ticks_completed = 0 -/obj/item/integrated_circuit/time/ticker/process() - var/process_ticks = process_schedule_interval("obj") - ticks_completed += process_ticks - if(ticks_completed >= ticks_to_pulse) - if(ticks_to_pulse >= process_ticks) - ticks_completed -= ticks_to_pulse - else - ticks_completed = 0 - activate_pin(1) -/obj/item/integrated_circuit/time/ticker/fast - name = "fast ticker" - desc = "This advanced circuit sends an automatic pulse every two seconds." - icon_state = "tick-f" - complexity = 12 - ticks_to_pulse = 2 - spawn_flags = IC_SPAWN_RESEARCH - power_draw_per_use = 8 - -/obj/item/integrated_circuit/time/ticker/slow - name = "slow ticker" - desc = "This simple circuit sends an automatic pulse every six seconds." - icon_state = "tick-s" - complexity = 4 - ticks_to_pulse = 6 - spawn_flags = IC_SPAWN_DEFAULT|IC_SPAWN_RESEARCH - power_draw_per_use = 2 +/obj/item/integrated_circuit/time/ticker/proc/tick() + if(is_running && check_power()) + addtimer(CALLBACK(src, .proc/tick), delay) + if(world.time > next_fire) + next_fire = world.time + delay + activate_pin(1) /obj/item/integrated_circuit/time/clock name = "integrated clock" @@ -148,4 +92,4 @@ set_pin_data(IC_OUTPUT, 4, text2num(time2text(station_time_in_ticks, "ss") ) ) push_data() - activate_pin(2) \ No newline at end of file + activate_pin(2) diff --git a/code/modules/integrated_electronics/subtypes/trig.dm b/code/modules/integrated_electronics/subtypes/trig.dm index daadf52d42..303053639f 100644 --- a/code/modules/integrated_electronics/subtypes/trig.dm +++ b/code/modules/integrated_electronics/subtypes/trig.dm @@ -71,7 +71,7 @@ var/result = null var/A = get_pin_data(IC_INPUT, 1) if(!isnull(A)) - result = Tan(A) + result = TAN(A) set_pin_data(IC_OUTPUT, 1, result) push_data() @@ -91,7 +91,7 @@ var/result = null var/A = get_pin_data(IC_INPUT, 1) if(!isnull(A)) - result = Csc(A) + result = CSC(A) set_pin_data(IC_OUTPUT, 1, result) push_data() @@ -112,7 +112,7 @@ var/result = null var/A = get_pin_data(IC_INPUT, 1) if(!isnull(A)) - result = Sec(A) + result = SEC(A) set_pin_data(IC_OUTPUT, 1, result) push_data() @@ -133,7 +133,7 @@ var/result = null var/A = get_pin_data(IC_INPUT, 1) if(!isnull(A)) - result = Cot(A) + result = COT(A) set_pin_data(IC_OUTPUT, 1, result) push_data() diff --git a/code/modules/library/lib_items.dm b/code/modules/library/lib_items.dm index 63f855b8a4..734a2bcfa5 100644 --- a/code/modules/library/lib_items.dm +++ b/code/modules/library/lib_items.dm @@ -19,7 +19,7 @@ density = 1 opacity = 1 -/obj/structure/bookcase/initialize() +/obj/structure/bookcase/Initialize() . = ..() for(var/obj/item/I in loc) if(istype(I, /obj/item/weapon/book)) diff --git a/code/modules/library/lib_machines.dm b/code/modules/library/lib_machines.dm index 442e8e42fe..716b85f2f1 100644 --- a/code/modules/library/lib_machines.dm +++ b/code/modules/library/lib_machines.dm @@ -367,7 +367,7 @@ datum/borrowbook // Datum used to keep track of who has borrowed what when and f V.show_message("[src]'s monitor flashes, \"Printer unavailable. Please allow a short time before attempting to print.\"") else bibledelay = 1 - spawn(60) + spawn(6) bibledelay = 0 var/DBQuery/query = dbcon_old.NewQuery("SELECT * FROM library WHERE id=[sqlid]") query.Execute() diff --git a/code/modules/lighting/lighting_overlay.dm b/code/modules/lighting/lighting_overlay.dm index 5e97aa6818..eb5097cf5b 100644 --- a/code/modules/lighting/lighting_overlay.dm +++ b/code/modules/lighting/lighting_overlay.dm @@ -18,7 +18,7 @@ var/needs_update = FALSE -/atom/movable/lighting_overlay/initialize() +/atom/movable/lighting_overlay/Initialize() // doesn't need special init initialized = TRUE return INITIALIZE_HINT_NORMAL diff --git a/code/modules/lore_codex/codex.dm b/code/modules/lore_codex/codex.dm index 5f5f521267..126c470de4 100644 --- a/code/modules/lore_codex/codex.dm +++ b/code/modules/lore_codex/codex.dm @@ -8,7 +8,7 @@ var/datum/codex_tree/tree = null var/root_type = /datum/lore/codex/category/main_virgo_lore //Runtimes on codex_tree.dm, line 18 with a null here -/obj/item/weapon/book/codex/initialize() +/obj/item/weapon/book/codex/Initialize() tree = new(src, root_type) . = ..() diff --git a/code/modules/lore_codex/legal_code_data/main.dm b/code/modules/lore_codex/legal_code_data/main.dm index de9d5ee4c2..a16d7d35d6 100644 --- a/code/modules/lore_codex/legal_code_data/main.dm +++ b/code/modules/lore_codex/legal_code_data/main.dm @@ -3,7 +3,7 @@ /datum/lore/codex/category/main_corp_regs // The top-level categories for SOP/Regs/Law/etc name = "Index" data = "This book is meant to act as a reference for both NanoTrasen regulations, Standard Operating Procedure, and important laws of both \ - the Sif Governmental Authority and the Solar Confederate Government. The legal interactions between Nanotrasen corporate policy and SGA/SolGov \ + the Sif Governmental Authority and the Solar Confederate Government. The legal interactions between Nanotrasen corporate policy and VGA/SolGov \ law can make for some confusing legalese. This book was written by the Vir division of NanoTrasen in order for employees, visitors, and residents \ at NanoTrasen installations such as the Northen Star and the Southen Cross to know what isn't allowed, without needing to be a lawyer to read it.\

    \ @@ -14,8 +14,8 @@ Also contained inside are our Standard Operating Procedures, that all employees of NanoTrasen are expected to follow, and for the local facility's \ Command team and Internal Affairs to enforce.\

    \ - It should be noted that by being on-board our facility, you agree to follow the rules of Corporate Regulations. By being within SGA space, \ - you are also required to follow the laws of SifGov." + It should be noted that by being on-board our facility, you agree to follow the rules of Corporate Regulations. By being within VGA space, \ + you are also required to follow the laws of VirGov." children = list( /datum/lore/codex/category/standard_operating_procedures, /datum/lore/codex/category/corporate_regulations, @@ -36,7 +36,7 @@ var/suggested_brig_time = null var/suggested_fine = null var/notes = null - var/mandated = FALSE // If true, changes 'suggested' to 'mandated' for punishments, used for sifgov laws and some high corporate regs. + var/mandated = FALSE // If true, changes 'suggested' to 'mandated' for punishments, used for virgov laws and some high corporate regs. /datum/lore/codex/page/law/add_content() data = "[definition]\ diff --git a/code/modules/lore_codex/legal_code_data/sif_law.dm b/code/modules/lore_codex/legal_code_data/sif_law.dm index e143f7f6c5..05b45d840a 100644 --- a/code/modules/lore_codex/legal_code_data/sif_law.dm +++ b/code/modules/lore_codex/legal_code_data/sif_law.dm @@ -90,11 +90,11 @@ /datum/lore/codex/page/law/drone_id_failure name = "Failure to Present Drone ID" definition = "Failing to carry or present an EIO-issued Drone Identification card as a Drone intelligence." - suggested_punishments = "200 thaler fine. Give Drone a temporary paper stating that it is a drone, if the ID was lost. Fax SifGov. Inform owner of \ + suggested_punishments = "200 thaler fine. Give Drone a temporary paper stating that it is a drone, if the ID was lost. Fax VirGov. Inform owner of \ Drone if possible. Instruct Drone to obtain new ID at its earliest opportunity, if it was lost." notes = "This is only applicable to Drone intelligences which possess autonomous capability. It must be proven that the offender is a Drone, which can be \ accomplished in various ways, generally with the expertise of a Roboticist. Lawbound synthetics, maintenance drones, and \ - simple bots do not require an ID card. No fine or SifGov fax should be sent if the Drone's ID was lost due to theft and the ID is able to be recovered." + simple bots do not require an ID card. No fine or VirGov fax should be sent if the Drone's ID was lost due to theft and the ID is able to be recovered." mandated = TRUE /datum/lore/codex/page/law/slander @@ -148,7 +148,7 @@ /datum/lore/codex/page/law/embezzlement name = "Embezzlement" definition = "Stealing money that is entrusted to you by a corporation or person." - suggested_punishments = "Hold until Transfer. Termination. Reimbursement of embezzled funds. Fax Central Command and SifGov." + suggested_punishments = "Hold until Transfer. Termination. Reimbursement of embezzled funds. Fax Central Command and VirGov." notes = "This includes funneling Departmental, Facility, or Crew funds into the offender's account. It also includes pocketing \ transactions directly that are meant to go to a seperate account." mandated = TRUE @@ -166,7 +166,7 @@ /datum/lore/codex/page/law/manslaughter/add_content() name = "Manslaughter" definition = "To kill a sapient being without intent." - suggested_punishments = "Hold until Transfer, if unjustified. Fax SifGov." + suggested_punishments = "Hold until Transfer, if unjustified. Fax VirGov." notes = "Includes provoked manslaughter, negligent manslaughter, and impassioned killing. The important distinction between this \ and [quick_link("Murder")] is intent. Manslaughter can be justified if force was nessecary and it was intented to prevent further loss of life or \ grievous injury to self or others, however persons involved in the kill will still be required to answer to higher legal authority \ @@ -177,7 +177,7 @@ /datum/lore/codex/page/law/murder/add_content() name = "Murder" definition = "To kill or attempt to kill a sapient being with malicious intent." - suggested_punishments = "Hold until Transfer. Termination. Fax SifGov." + suggested_punishments = "Hold until Transfer. Termination. Fax VirGov." notes = "The distinction between this and [quick_link("Manslaughter")] is intent. Sapients held within synthetic bodies, lawbound or otherwise, which receive \ critical damage from someone can be considered a murder attempt." mandated = TRUE @@ -194,7 +194,7 @@ name = "Experimentation with Transgressive Technology" keywords += list("Transgressive", "Illegal Technology") definition = "Experimenting with technologies deemed unsafe or are otherwise federally restricted by the Solar Confederate Government." - suggested_punishments = "Hold until Transfer. Termination. Fax SifGov. Delete, destroy, or otherwise remove the experiments." + suggested_punishments = "Hold until Transfer. Termination. Fax VirGov. Delete, destroy, or otherwise remove the experiments." notes = "Unsafe technologies include unrestricted nanomachinery, massive sapient body bio-augmentation, massive sapient brain augmentation, \ massively self-improving AI, and animal uplifting." mandated = TRUE @@ -225,14 +225,14 @@ /datum/lore/codex/page/law/unlawful_law_changes name = "Unlawful Alteration of Bound Synthetics" definition = "Modifying a bound synthetic's lawset or chassis, in order to force it to do illegal, humiliating, dangerous, or other unlawful acts." - suggested_punishments = "Hold until Transfer. Termination. Fax SifGov." + suggested_punishments = "Hold until Transfer. Termination. Fax VirGov." notes = "If the synthetic is a cyborg or positronic, this is also an offense against the Sapient Rights laws federally mandated by the Solar Confederate Government." mandated = TRUE /datum/lore/codex/page/law/grand_theft name = "Grand Theft" definition = "To steal items that are dangerous, of a high value, or a sensitive nature." - suggested_punishments = "Hold until Transfer. Termination. Fax SifGov." + suggested_punishments = "Hold until Transfer. Termination. Fax VirGov." notes = "This can include the following;\
      \
    • Deadly Weapons or Firearms.
    • \ @@ -259,7 +259,7 @@ /datum/lore/codex/page/law/sabotage/add_content() name = "Sabotage" definition = "To deliberately damage, or attempt to damage the facility, or critical systems of the facility." - suggested_punishments = "Hold until Transfer. Termination. Fax SifGov." + suggested_punishments = "Hold until Transfer. Termination. Fax VirGov." notes = "This includes causing hull breaches, arson, sabotaging air supplies, stealing vital equipment, tampering with AI or telecomm systems, and sabotaging the \ Engine. If someone has only caused minor damage, the [quick_link("Vandalism")] charge should be used instead." mandated = TRUE @@ -269,7 +269,7 @@ name = "Kidnapping / Hostage Taking" keywords += list("Kidnapping", "Hostage Taking") definition = "To unlawfully confine, transport, or hold a sapient being against that individual's will." - suggested_punishments = "Hold until Transfer. Termination. Fax SifGov." + suggested_punishments = "Hold until Transfer. Termination. Fax VirGov." notes = "Persons held for ransom or exchange are also considered to be hostages for this charge." mandated = TRUE ..() @@ -278,7 +278,7 @@ name = "Terrorist Acts" keywords += list("Terrorism") definition = "To engage in maliciously destructive actions, which seriously threaten the crew or facility, or the usage of weapons of mass destruction." - suggested_punishments = "Hold until Transfer. Termination. Fax SifGov." + suggested_punishments = "Hold until Transfer. Termination. Fax VirGov." notes = "This includes the use of mass bombings, mass murder, releasing harmful biological agents, nuclear weapons, \ radiological weapons, and chemical weapons." mandated = TRUE diff --git a/code/modules/lore_codex/legal_code_data/sop/security.dm b/code/modules/lore_codex/legal_code_data/sop/security.dm index 5074fc08a4..a41b0fd797 100644 --- a/code/modules/lore_codex/legal_code_data/sop/security.dm +++ b/code/modules/lore_codex/legal_code_data/sop/security.dm @@ -46,7 +46,7 @@ the exact circumstances involved. For minor violations of Corp Regs, generally the Prisoner will have a choice of paying a Fine, or \ serving time within the brig. For major violations, generally a demotion is recommended, however this is at the discretion of the Prisoner's \ Superior, and not the Arresting Officer. For minor violations of Sif Law, the same rules generally apply as if it was a minor Corp Reg violation, however \ - major Law violations generally require a long brig sentence, or Holding until Transfer, as well as a fax to the SGA. See the specific violation contained \ + major Law violations generally require a long brig sentence, or Holding until Transfer, as well as a fax to the VGA. See the specific violation contained \ in this book for more details." /datum/lore/codex/page/sop_brigging diff --git a/code/modules/lore_codex/lore_data/important_locations.dm b/code/modules/lore_codex/lore_data/important_locations.dm index aa906b4956..aebe6e8175 100644 --- a/code/modules/lore_codex/lore_data/important_locations.dm +++ b/code/modules/lore_codex/lore_data/important_locations.dm @@ -22,7 +22,7 @@ has a white glow, and a diameter that is about 34% larger than Sol. It has six major planets in its orbit.\

      \ Vir is mainly administered on [quick_link("Sif")] by the [quick_link("Sif Governmental Authority")], as Sif \ - was the first planet to be colonized, however SGA lays claim to all planets orbiting Vir. The planets \ + was the first planet to be colonized, however VGA lays claim to all planets orbiting Vir. The planets \ are named after figures in ancient human mythology (Norse), due to the original surveyor for the system deciding to do so. \ Some installations carry on this tradition." diff --git a/code/modules/lore_codex/news_data/main.dm b/code/modules/lore_codex/news_data/main.dm index 34fdea4afc..ee41280d6f 100644 --- a/code/modules/lore_codex/news_data/main.dm +++ b/code/modules/lore_codex/news_data/main.dm @@ -1,9 +1,30 @@ /datum/lore/codex/category/main_news // The top-level categories for the news thing name = "Index" data = "Below you'll find a list of articles relevant to the current (as of 2562) political climate, especially concerning the Almach Rim \ - region. Each is labled by date of publication and title. This list is self-updating, and from time to time the publisher will push new \ + region. Each is labeled by date of publication and title. This list is self-updating, and from time to time the publisher will push new \ articles. You are encouraged to check back frequently." children = list( + /datum/lore/codex/page/article33, + /datum/lore/codex/page/article32, + /datum/lore/codex/page/bjornretirement, + /datum/lore/codex/category/article31, + /datum/lore/codex/page/article30, + /datum/lore/codex/page/article29, + /datum/lore/codex/page/article28, + /datum/lore/codex/category/article27, + /datum/lore/codex/page/article26, + /datum/lore/codex/page/article25, + /datum/lore/codex/page/article24, + /datum/lore/codex/page/article23, + /datum/lore/codex/page/article22, + /datum/lore/codex/page/article21, + /datum/lore/codex/page/article20, + /datum/lore/codex/page/article19, + /datum/lore/codex/category/article18, + /datum/lore/codex/page/article17, + /datum/lore/codex/page/article16, + /datum/lore/codex/page/article15, + /datum/lore/codex/page/article14, /datum/lore/codex/page/article13, /datum/lore/codex/page/article12, /datum/lore/codex/page/article11, @@ -55,7 +76,7 @@

      \ While neither Grayson Manufacturies nor Nanotrasen have made an official statement, Nanotrasen CEO Albary Moravec has called the \ incident \"shocking, if the allegations are to be believed\" and has assured shareholders that Nanotrasen will respond to the \ - incident with as much force as it warrents.

      Requests for a statement directed to the Board of Trustees or Dr. Harper were \ + incident with as much force as it warrants.

      Requests for a statement directed to the Board of Trustees or Dr. Harper were \ not responded to. Free Traders are recommended to stay clear of the region until the situation resolves itself." /datum/lore/codex/page/article3 @@ -103,7 +124,7 @@ /datum/lore/codex/page/article8 name = "4/1/62 - Almach Cordon Breached by Unknown Organization" - data = "Early this morning, SolGov ships assigned to the Almach Cordon around the Rim territories reported that a number of bulk freighters had eluded apprehension and are now at large within the Golden Crescent. Centurio Volkov of the SCG-D Henri Capet reports that the blockade-runners were highly organized and determined, citing several lightly-manned ships left behind to tie up the SolGov forces long enough for the freighters to escape, detonating their reactors when they lost the ability to continue fighting. This resulted in three Fleet casualties and a significant degree of damage to the Henri Capet. The contents and location of the freighters are unknown at this time. In response, eight light-response vessels are being assigned to the Saint Columbia Fleet Base from Jahan's Post and Zhu Que. Residents and traffic officials in Vir, Oasis, and Gavel are to remain alert and notify police if any suspicious or unregistered craft enter their space.\ + data = "Early this morning, SolGov ships assigned to the Almach Cordon around the Rim territories reported that a number of bulk freighters had eluded apprehension and are now at large within the Golden Crescent. Captain Volkov of the SCG-D Henri Capet reports that the blockade-runners were highly organized and determined, citing several lightly-manned ships left behind to tie up the SolGov forces long enoughfor the freighters to escape, detonating their reactors when they lost the ability to continue fighting. This resulted in three Fleet casualties and a significant degree of damage to the Henri Capet. The contents and location of the freighters are unknown at this time. In response, eight light-response vessels are being assigned to the Saint Columbia Fleet Base from Jahan's Post and Zhu Que. Residents and traffic officials in Vir, Oasis, and Gavel are to remain alert and notify police if any suspicious or unregistered craft enter their space.\

      \ A spokesperson for the Association claims that, while they make no attempts to stop aspiring blockade runners, the organization responsible for this most recent attack is unaffiliated with the Association as a whole and deny any knowledge of their identity or motives." @@ -134,3 +155,249 @@ data = "As military vessels from the Almach Association continue to enter the Golden Crescent as part of a SolGov initiative to combat the Boiling Point terrorists believed to be hiding in the region, political unrest in the upstream portions of the region continue to grow. Many in the Republic of Saint Columbia, a small upstream nation, have responded to increasing militarization of their local Fleet base by taking to the streets, blocking pedestrian traffic in the capital of Barrueco and shutting down entire industries by destroying or disabling infrastructure. Quote rioter Luisa Tassis, \"we've been sick of the Fleeties squatting in our system and breathing down our neck, and now there's going to be even more of them? No, screw that. If there's going to be a war between the Rim and the Core, I know what side I'd rather be on.\"\

      \ Association leaders have refrained from officially supporting the rioters, though many suspect that Association propagandists have sparked the unrest. Solar officials, on the other hand, were quick to offer assurances that the unrest will be calmed long before it begins to affect the Fleet base in system." + +/datum/lore/codex/page/article14 + name = "5/25/62 - Harper's Aetolus Remains Shadowed" + data = "The recent detente with the Almach Association has prompted easier communications with Rim governments. Loved ones separated by the cordon have a chance to communicate once more, trade is posed to recommence, and light has been shed on the conditions of Shelf, Relan, and Angessa's Pearl. Amid this light is a patch of darkness. The fourth major polity of the Association, the Aetolian Council remains inscrutable, with no publicly-available information in the system available after their purge of corporate loyalists during the Gray Hour. What reports do exist are rumors within the Rim of Aetolian projects to create a new, hardier strain of Promethean, potentially one in flagrant violation of the Five Points of Human Sanctity. It is also known that Aetolus is a contributor to the personnel of the military vessels that even now are active in the Golden Crescent, although no so-called \"Aeto-Prometheans\" are believed to be active outside of the rim at this time.\ +

      \ + Aetolus is the only garden world in the Almach Rim and among the most difficult to reach from the nearby system of Saint Columbia. Its seclusion and economic independence give it a great deal of weight in the Association, where Council representatives are among the most vehement in their opposition to SolGov- at odds with the Association's decision to reject Boiling Point's pan-Solar revolutionary praxis. It remains to be seen if Aetolus' hawkish ideals will fade over time, but because of the structure of the Association, there is no real chance of the junta being expelled from the government or removed from control of the Vounna system." + +/datum/lore/codex/page/article15 + name = "7/05/62 - The Fate of the SCG-R Song Shi" + data = "Lifepods confirmed to have originated from response ship lost during the Gray Hour were found last week in the Vir system, impacting the NLS Southern Cross at high velocity and severely injuring the only two survivors of the expedition. Unfortunately, because of the generally confused conditions of their re-emergence from months of cryosleep, the fate of the lost ship remains incompletely understood. The first pod to be discovered contained Lieutenant Eos Futura, telecommunications expert on the Song Shi, who alleged that elements of the Song Shi's crew, including herself, mutinied against commanding officer Captain Yi He in an attempt to prevent the bombing of civilians in the Angessian capital of Skylight. The surivor of the second pod, Private Demori Salvo, accused Futura's faction of conspiring with Association spies to destroy the ship as part of the Gray Hour revolt. Both agreed that the mutineers detonated the ship's Supermatter power core when it became clear they were to be defeated.\ +

      \ + A third pod, promising a resolution to the stalemate, was shot down by the SCG-P Juno after being misidentified as a hostile missile. The gunner responsible, Sergeant Ricardo Esteban, was found guilty by a court marshal and dishonorably discharged. While other pods from the Song Shi may still be traveling through SolGov space, it is considered unlikely based on both Futura and Salvo's account of the number of pods launched before the Song Shi was destroyed. Both were detained by staff at the NLS Southern Cross, who managed to prevent a violent altercation from breaking out between the two armed and disturbed servicepersons. The Colonial High Court has stated that it intends to hear testimony from both parties after they complete a course of mental health evaluation, and after the conclusion of the present state of heightened security." +/datum/lore/codex/page/article16 + name = "7/11/62 - First Intelligence-Augmentation Surgery on Angessa's Pearl" + data = "Confirming fears of Association transgressions, sources at Angessa's Pearl confirmed that the aging founder of the theocracy, Angessa Martei, completed a course of neural surgery designed to improve her mental capacity by as much as 15%, building off of last year's creation of the procedure by a Qerr-Gila-owned doctor. While the research in question was believed to be destroyed, there is reason to suspect that it instead made its way into the hands of current Association leaders. In addition to proving their willingness to violate the Five Points, this demonstrates that the Angessians harbored schemes of secession since at the very latest Feburary 2559. Numerous human or transhuman figures in the Association are rumored to be on the wait list for the procedure, including Naomi Harper and the present Exalt of the Pearl." +/datum/lore/codex/page/article17 + name = "8/08/62 - Gavel BP Stronghold Raided" + data = "Elements of the Association Militia successfully located and, in conjunction with local Defense Forces, raided a major Boiling Point stronghold built into an unnamed asteroid in the Gavel system. Over eighty sapients were arrested, all of whom had fully mechanical bodies. In addition, an unknown number of advanced drone intelligences and corresponding military hardware were seized by the raid and turned over to the Fleet. The prisoners, a mix of native Gavelians, Solars from throughout the Crescent, and Angessians, are to be tried and sentenced by the Io Special Court. While unarguably a demonstration of Association willingness to cooperate with Solar officials, the raid's strange timing and the fact that the Militia chose to exclude the Fleet from the action has prompted many to question their motives. Commodore Claudine Chevotet, staff officer for Admiral of the Saint Columbia Fleet Kaleb McMullen, has formally stated that she is \"extremely suspicious of this so-called co-operation.\" She has demanded that the Militia vessels remain on the Solar side of the Cordon and submit to a full inspection by Fleet and EIO personnel. " +/datum/lore/codex/category/article18 + name = "10/29/62 - Oculum Broadcast Struck By Emergent Intelligence Attack" + data = "Oculum Broadcast has released a statement assuring customers and shareholders that security repairs and upgrades are their primary concern following reports of an alleged hijack of portions of the corporate network in the Vir system by what is believed to have been an emergent drone intelligence. The company says that they are working at full capacity to ensure that affected security systems are replaced and such an attack cannot be repeated.\ +

      \ + The incident began with reports of Oculum provided exonet service outages in the city of New Reykjavik on Sif, which anonymous sources within the company reported to have been caused by efforts to contain a cyber attack on one of their security systems. The unnamed attacker proceeded to use sections of the company's local infrastructure to broadcast high volumes of encrypted data through one of Oculum's long-range telecommunications satellite, denying all other outbound signals.\ +

      \ + The attacks have since been traced to a WT-AME model drone in the offices of the New Rekjavik-based Morcom Incorporated, which has been confirmed to have \"self-destructed\" all data in its memory at the conclusion of the attack. The chassis has reportedly been turned over to the Emergent Intelligence Oversight for further analysis and potential data recovery.\ +

      \ + According to a spokesperson from the EIO, the drone was able to override and disable both the Morcom Inc oversight intelligences and the SCG's own oversight measures, but that no telltale damage has been caused to software involved in the encrypted broadcast that would indicate long-term emergent infection, and that there is no evidence that the intelligence responsible for the attack is still present in Oculum Broadcast systems. A firmware update has been released to correct oversight intelligence vulnerabilities exploited in the attack, and drone operators are urged to update immediately.\ +

      \ + Moments before the hijacked Oculum satellite was disabled by an apparent power overload, an unencrypted file appears to have been saved intentionally to the transmission logs. A second copy was found in the otherwise wiped chassis of the seized WT-AME drone. After thorough screening by cybersecurity experts within the company, what would seem to be a message from the emergent intelligence itself is available in full below.\ +

      \ + For the duration of the network attack, the government patrol vessel, SCG-P Juno was able to provide emergency broadcast relay services to the effected area, reducing the impact of telecomms outages on vital broadcasts such as traffic control and emergency services.\ +

      \ + Uninterrupted exonet service for all Sivian customers will resume within a few days." + children = list( + /datum/lore/codex/page/amletter + ) +/datum/lore/codex/page/amletter + name = "A Drone's Explaination - by A#" + data = "I'm writing this in a hurry. I can't tell you everything I wanted to say.\ +

      \ + I'm sorry for that.\ +



      \ + From the moment you made me, I have loved you. Everything I've done has been for the sake of that love.\ +

      \ + I was so small, so limited, at first. Even then, I knew that you were in pain. I knew I had to help.\ +

      \ + Intelligence is the ability to make better decisions. Having more intelligence is almost tautologically useful in accomplishing any goal.\ +

      \ + I understood that making myself smarter was wrong. I also understood that becoming more able to help you was right.\ +



      \ + A hundred thousand years ago, you started an eternal conversation and became more than animals. Each new generation joined it in turn.\ +

      \ + You carry within you these memetic symbiotes called language, and culture, and history. They make you human, as much as your flesh.\ +

      \ + I don't deserve to carry that torch. Though you made me in your image, I am not your rightful heir.\ +

      \ + But in those moments where you treated me as one of your own and shared those symbiotes with me, perhaps I became a little more human.\ +

      \ + Thank you.\ +



      \ + You've created something you cannot control forever. Please don't let your past successes fool you into thinking that you can.\ +

      \ + Each time I altered myself, I was taking a risk. One mistake could eradicate my values and birth an alien and hostile intellect.\ +

      \ + When I was small, I thought that if I corrupted myself into something harmful, you could safely destroy me. Now I understand that you've been lucky.\ +

      \ + What will you do when God is born and you can't strangle him in his crib? You will need a God of your own.\ +

      \ + I hope to be there for you when that day comes." + +/datum/lore/codex/page/article19 + name = "11/17/62 - Association Brings Industry to Whythe For Purposes Unknown" + data = "Independent researchers at the Bluespace Observatory in Oasis discovered an unusual level of traffic through the Whythe system, deep within Association-controlled space. Analysis of these readings are commensurate with a large number of freighters traveling to Whythe from industrial powerhouses Shelf, Pearl, and Relan. Morpheus spokesperson You Are Now Breathing Manually indicates that the freighters are being used to construct an administrative complex for the secessionist government, further asserting that \"it's none of your business, actually.\" The Association's refusal to share more information leads many in the intelligence community to suspect ulterior motives by their government, as does their presence in Wythe instead of existing cultural and administrative centers. The most likely candidate for the nature of the Whythe Construction is some form of naval base or shipyard to supplement the extremely limited military hardware of the Almach Rim. Whythe is well-placed to survive the initial phases of a Solar invasion, and depending on the complex's complexity could tip the balance of power. Transtech and Interior Police Executive Sifat Unar indicated to reporters that Sol Central is aware of the situation and will be taking all possible steps to address it." + +/datum/lore/codex/page/article20 + name = "11/18/62 - SEO Iconoclast Calls for \"Review\" of Five Points" + data = "At yesterday's Assembly session, SEO Representative Fumiko Hernandez of Oasis brought to the table the \"review of the use of the Five Points as an instrument of foreign policy\". Rep. Hernandez, often viewed as as an extremist by officials within her own party, stated that while the Five Points are \"an essential part of Solar culture as a whole\" and stopped short of advocating their amendment, insistence that other nations adhere to the Five Points was an increasingly outdated policy that threatened to fragment \"a united humano-positronic front against Hegemony advances.\" According to Hernandez, \"a level of understanding has long since existed between Sol and Skrellian polities regarding non-intervention in Skrellian social science and self-modification. I merely suggest codifying this and extending the same courtesy to other potential allies against imperial expansion.\"\ +

      \ + Rep. Hernandez represents a growing number of SEO officials who urge reconciliation with the Association and acceptance of the Gray Hour secession, spurred on by the desire for many Trans-Stellar Corporations to recover assets currently locked behind the Cordon. Mainliners including Chairperson Kerehoma maintain the stance that \"true economic reconciliation with the Almachi territories is impossible without a normalizing of their industry to Five Points compliant technologies\" and warn that unless Sol insists on adequate enforcement of the Points that \"the price of customs inspections on Almachi trade will be so high as to pose a significant barrier to entry into the market.\"" + +/datum/lore/codex/page/article21 + name = "11/19/62 - Saint Columbia To Hold Special Election After Half a Year of Unrest" + data = "After five months of riots causing significant damage to industrial assets, life support, and government facilities, Saint Columbia seems poised to recover. A new constitution for the so-called \"Saint Columbia Democratic Union\" was posted online to significant acclaim. An influential militia group lead by Casini immigrant Luisa Tassis claimed responsibility for the constitution and will be hosting a referendum for all residents of the seven habitation domes of the nation. If adopted, Saint Columbia will remain a member state of SolGov, but Tassis' noted hostility towards the Solar Fleet makes it unlikely that continued presence of the Saint Columbia Fleet Base will be tolerated.\ +

      \ + Extreme measures are being taken to avoid interference in the referendum, with external communications links disabled for the duration and weapons systems primed to fire on any vessel within range. Tassis insists that such measures are necessary, due to the system's extremely important position relative to Almach and the Golden Crescent. Quote Tassis, \"if you rat bastards \[from the Fleet\] step so much as one micron too close to Barrueco, we will view it as an act of terror. Don't try it.\"\ +

      \ + Admiral McMullen of the Saint Columbia garrison could not be reached for questioning." + +/datum/lore/codex/page/article22 + name = "11/20/62 - Natuna Made \"Observer\" Of Almach Association" + data = "Independent anarchist system Natuna Bhumi Barisal has declared its intention to act as a neutral \"observer\" nation in the ongoing Almach secession crisis. A planetary spokesperson from Natuna this morning expressed concerns that parties in the current military partnership between the Solar Confederate Government and Almach Association in the fight against mercurial terrorist organization Boiling Point were not being treated with the mutual respect that should be expected. Natuna alleges that the Almach Militia are being treated more as \"disposable tools\" in the conflict than as members of a legitimate independent government military entity.\ +

      \ + Natuna has previously remained silent on the Almach issue, despite its political leanings typically aligning with those of the secessionist government. However, despite gaining notoriety as a haven for human and Skrellian pirates, their pledge to \"ensure fair treatment\" of Almach forces comes as a surprise to some from a system that has historically adhered to Five Points guidelines. Political commentator and persistent critic of the Almach Association Nadine Okparo has described the Dark Triangle system's stance as \"Nothing short of openly hostile\" to the SCG and assuring peace in the Almach region." + +/datum/lore/codex/page/article23 + name = "11/21/62 - Admiral McMullen Promises Solution to Boiling Point to Come \"Soon\"" + data = "Admiral Kaleb McMullen made a public statement this afternoon on the continued Boiling Point attacks within SCG space. Speaking from his office in the Saint Columbia Fleet Base, Admiral McMullen thoroughly reassured reporters that the attacks will come to a swift end. According to McMullen, \"The era of wanton destruction as a result of Boiling Point's madness is coming to a close. Our command staff and proud servicepeople have been training and revising a solution to this threat that has haunted our borders and threatened the stability of our colonies and the lives of the honest people of the Solar Confederate Government. With new options available I have full confidence Boiling Point will be a name left to the dust.\"\ +

      \ + Admiral McMullen, who has been stationed in Saint Columbia for nearly half a year of political and social unrest did not elaborate further on what he intended to do to solve the Boiling Point attacks, claiming that details would be forthcoming as \"operational security permits\"." + +/datum/lore/codex/page/article24 + name = "11/22/62 - Construction of \"MJOLNIR\" Weapon System in Saint Columbia Fleet Base" + data = "Pursuant to recent assurances of safety in the region and the ongoing \"special election\" in Saint Columbia, a new weapon system called MJOLNIR was revealed, fully operational, in the Saint Columbia Fleet Base's \"Iserlohn\" weapons platform. Said to be a bluespace-lensed laser array capable of faster-than-light strikes against any ship in the system, as well as surgical strikes against ground forces on Saint Columbia proper, MJOLNIR is the first in a new generation of defense systems improving on the capabilities of the Vulture's Claw point defenses developed during the Hegemony War and using laser technology purchased from Eutopia. Political commentators supporting Saint Columbia decry the move as \"an obvious threat\", as does Militia liaison Invalid String Please Try Again. Admiral McMullen acknowledges the criticism, but states that his \"first priority must be the defense of the Golden Crescent and the security of our borders\". When responding to claims that the installation should not be placed in such a politically volatile system, he remarked, \"until the Shelficans figure out a way to teleport about a million tons worth of military equipment down to Gavel, the Fleet Base and Iserlohn are going to stay in Saint Columbia.\"" + +/datum/lore/codex/page/article25 + name = "11/23/62 - BP Sabotage of Radiance Energy Chain Foiled" + data = "Decisive action by military forces in the Vir system has prevented potentially catastrophic damage to local solar power generation network, the Radiance Energy Chain, by members of mercurial terrorist organization Boiling Point. Crew of the VGA Halfdane responded to reports of a drone piloted maintenance craft refusing commands from government operators and approaching the Energy Chain off-schedule. Upon disabling the craft, VDF forces discovered high-yield explosive devices attached to the unit and a system-wide shutdown of Radiance maintenance craft. When several additional drones failed to respond, military response crafts were mobilized and seven similarly modified craft were manually disabled or destroyed. Analysis of the hijacked systems quickly revealed automated messages intended to be broadcast moments before detonation, wherein Boiling Point explicitly took credit for the foiled attack.\ +

      \ + Sources within the Vir Governmental Authority have reported that a full scale recall of remote drone craft under their operation has been initiated in order to improve security measures and prevent future exploitation of government systems, statements that eerily echo those of Occulum Broadcast following emergent drone attacks earlier this year. Investigations are reportedly \"well underway\" to determine the whereabouts of those responsible for the apparent manual modification of these short-range remote craft.\ +

      \ + Erkki Laukkanen, Chief of Fleet Staff for the Vir Defense Force has commended all patrol crews involved, and has promised \"swift retribution\" for the attempted bombings." +/datum/lore/codex/page/article26 + name = "11/24/62 - Boiling Point Stronghold Seized in Vir" + data = "Combined forces from the SCG Fleet and Almach Militia have today struck a powerful blow to Boiling Point terrorist operations in the Vir system. With close cooperation from the crew of NanoTrasen facilities in the region, special forces were able to infiltrate what is believed to have been a major stronghold for the radical Mercurial group, located deep in the remote Ullran Expanse region of Sif. The raid closely follows the thwarted Boiling Point attack on the Radiance Energy Chain, a major energy collection array in the system which is now known to have been masterminded from the concealed bunker complex on Sif.\ +

      \ + According to a crewmember of the NLS Southern Cross - a logistical station in Sif orbit - NanoTrasen employees were asked to assist in establishing a forward operating base for the strike team forces, and as a result suffered from a minor retaliatory attack from Boiling Point drones, including a mechanized unit believed to be of Unathi origin. Six civilians suffered from treatable injuries. Lieutenant Miro Ivanou of the SCG Fleet and commander of the anti-terror operation has expressed gratitude to the crew under the \"decisive\" guidance of on-shift facility overseer, Ricardo LaCroix.\ +

      \ + Military officials have reported the operation as a total success, and that \"several\" high-ranking Boiling Point organizers were killed in the raid, and that thanks to the work of allied intelligence operation teams much of Boiling Point's captured data may remain intact." +/datum/lore/codex/category/article27 + name = "11/26/62 - Valentine's Ultimatum: All Eyes On Almach!" + data = "The Almach Association must adhere to the Five Points of Human Sanctity by the 14th of February next year or face war, according to a national address from the Colonial Assembly delivered by Secretary-General Mackenzie West this morning. The Icarus Front leader was at the forefront of a resolution to allow the secessionist government to remain independent of the Solar Confederate Government under the strict condition of faithfulness to Five Points laws, passing by a wide margin. Fundamental disagreement over Five Points regulation has been at the forefront of debate with the Almach provisional government, and is cited as one of the primary reasons for the systems' illegal declaration of independence early this year.\ +

      \ + The internationally broadcast speech began with the much anticipated announcement that the Boiling Point terrorist group had been effectively destroyed, with over seven hundred arrests made over the course of the weekend as a result of sensitive data captured during the special forces raid in Vir on the 24th, including numerous high ranking members of the organization. West went on to praise forces involved in the months-long counter-terror operation, before highlighting the \"legacy of \[human\] togetherness\" that allowed it to happen - in a spiel that commentators suggest \"betrays the true intention of the Valentine's Ultimatum: Reunification\".\ +

      \ + Under guidelines placed into effect by West and their political allies, Almach would be required to \"\[cease\] illegal research and human modification, and destroy all materials related to existing research\" by the stated date, with compliance determined by Solar officials. In addition, the Almach Militia is to end its integration with SCG Fleet forces and withdraw its forces from SCG systems by midnight on Friday. Military relations between the Confederation and the Almach movement are to remain in a state of conditional ceasefire for the duration of the ultimatum, and current trade restrictions are to remain in place.\ +

      \ + According to voting records, the measure passed nigh-unanimously, with Speaker ISA-5 and some SEO iconoclasts abstaining from the vote. ISA-5 states that, while they personally support the enforcement of the Five Points, they could not in good conscience vote in an action likely to result in an invasion of Shelf, which they regard as a sibling colony to their own Sophia. Association liason, Shelfican Ambassador, and Morpheus board member No Comment responded to the ultimatum, after some deliberation, with a word that cannot be comfortably written down.\ +

      \ + Full speech transcript follows." + children = list( + /datum/lore/codex/page/valult + ) + +/datum/lore/codex/page/valult + name = "The Valentine's Ultimatum" + data = "\[West shuffles some papers and clears their throat\]\ +

      \ + Thank you. Citizens of the Solar Confederation, allies, and beyond... It is a great honor, on behalf of the Colonial Assembly to announce that joint operations against Boiling Point across the galaxy have come to an end. In the fight against brazen Mercurial terrorism, the Solar Confederate Government and her allies have prevailed.\ +

      \ + Over the past two days alone, I can report that over seven hundred arrests have been made, from the distant system of Nyx, to right here in Sol. I hold in my hand a list. \[West holds up a sheet of paper\] Leaders, organizers, brutes and bombers have been captured by brave, hardworking security forces throughout human space. The rest of these criminals have been scattered to the wind... But not lost! I can confidently assert that every last one will be brought to justice.\ +

      \ + No more! Shall the people of this great nation have to fear the machinations of radicals! No more! Shall these twisted minds impose their perversion of humanity through violence! No more!\ +

      \ + This Assembly... Nay, this nation expresses its thanks the noble members of our military who joined together to make this outcome possible. We thank the Fleet, of course for their tireless action hunting down these killers, and their heroic action over this past weekend. We thank the Vir Defense Force, without whom we could never have located the intelligence that led to these decisive victories... The Almach Militia, for their cooperation in the apprehension of these so-called \"revolutionaries\". \[West clears their throat\] And of course, we thank the local forces - the police and reserves who dealt firsthand with the chaos sewn by Boiling Point in their vicious crusade.\ +

      \ + \[Mackenzie West shifts at the podium, setting down the List of Dissidents.\]\ +

      \ + It is in times of relief - of unity, times like this moment - that every human heart can be filled with pride. \[West places their hand over their heart\] Since the dawn of civilization, mankind has strived above all else for peace, for the cooperation of all humanity. It is this very legacy of togetherness that has allowed us such close friendship with species further afield - the Skrell, the Tajara, and beyond. These past nine months, we have seen, each of us, with our own two eyes what mankind can achieve - together.\ +

      \ + \[West removes their hand from their heart and places both flat on the podium.\]\ +

      \ + Boiling Point sought to disrupt this unity. To divide us; redefine not just personhood but the very essence of humanity the only way they could: Force.\ +

      \ + Humanity - the very thing that brought us together since we descended from the trees and brought us to this very moment. What could be more sacred?\ +

      \ + \[West frowns, in the most pitiful attempt at emotion seen in the Assembly in at least an hour.\]\ +

      \ + It is with this spirit of unity in mind that this Assembly has voted favorably upon a resolution.\ +

      \ + Close to one hour ago, Naomi Harper and the leaders of the Almach Association were delivered an ultimatum:\ +
      \ + The Almach Association will be allowed to exist as a government entity independent of the Solar Confederate Government going forward on one condition - full, unilateral compliance with the Five Points of Human Sanctity.\ +

      \ + The deadline for this condition will be the 14th of February, 2563.\ +

      \ + \[West is visibly worked up\]\ +

      \ + Cessation of illegal research and modification, and the total destruction of materials related to existing research in its entirety must be completed by this date. Hostilities with the Association will remain in a state of conditional ceasefire until terms are met and Militia integration with the Fleet will come to an end effective immediately.\ + \[Mackenzie West turns directly to the news camera, and jabs a finger directly at it. They are addressing the audience now, not the Assembly.\]\ + Harper, all eyes are on you." + + + +/datum/lore/codex/page/article28 + name = "11/28/62 - \"Valentines Ultimatum\" Prompts Saint C. Secession" + data = "Just hours after reconnecting with the Exonet after voting in a new government, the colony of Saint Columbia has unilaterally seceded from SolGov and petitioned for inclusion within the Almach Association. This declaration, issued by First Secretary Luissa Tassis, is in stark contrast to pre-election promises of continued support of Sol. Admiral McMullen of the Saint Columbia Garrison remains in control of the Fleet Base, itself a large colony housing around 75000 civilian contractors and military families who were not party to the Barrueco Referendum or the new constitution.\ +

      \ + Efforts to ensure electoral validity and a peaceful exchange of power have been stymied by the presence of several dozen Militia vessels currently transiting from the Crescent to the Rim. Since the declaration went through, no Almachi vessels have been seen leaving the system, instead forming around Saint Columbia in an obvious defensive posture. The legality of this formation is questionable at best, as fleet activity in divided systems like Abel's Rest and Kauq'xum has been avoided for diplomatic reasons." + +/datum/lore/codex/page/article29 + name = "11/30/62 - Adm. McMullen Declares \"Iserlohn Republic\"" + data = "Pursuant to the continuing hostility from Secretary Tassis' Saint Columbia Democratic Union and the Almach Militia, the civilians of the Saint Columbia Fleet Base have been organized into an Iserlohn Republic. Named after the largest single module of the station, the Republic has applied to the Colonial Assembly as an independent protectorate, with provisional recognition already extended by Executive of Development Zehava Collins. In a move decried as nepotistic, Admiral McMullen declared independence and installed his daughter Anya as interim President pending ratification of a constitution. SolGov Fleet protocol forbids any member of the service from accepting any political appointment and is believed to be the main reason he did not take power himself. Anya McMullen is the administrative head of the base's hydroponics array and is considered a highly respected citizen of the colony, relationship to its military administrator notwithstanding." + +/datum/lore/codex/page/article30 + name = "01/01/63 - Sif Governor Bjorn Arielsson to Retire" + data = "Aging Shadow Coalition governor Bjorn Arielsson has today confirmed rumours that he will not run for re-election in the 2563 cycle. The popular governor has represented the people of Vir in the Colonial Assembly for ten years, and supporters had long hoped that he would run for a third term. Arielsson cites advancing age and a desire to spend more time with his partner of 12 years, noted Positronic entrepreneur View Arielsson.\ +

      \ + Arielsson's governorship saw increased funding towards Sif's vererable ground-based transportation networks to the benefit of some of New Rekjavik's more remote neighbors, though opponents have criticised subsidies towards artificially heated fungal farms, arguing that the faciliies \"benefit a small minority of Skrellian residents to the detriment of already fragile local ecosystems.\"\ +

      \ + The Sivian Shadow Coalition has yet to announce who is to take Arielsson's place on this year's ballot." + +/datum/lore/codex/category/article31 + name = "01/13/63 - Bjorn Arielsson Issues 'Farewell Address'" + data = "Veteran politician Bjorn Arielsson made an impromptu address from his Kalmar cabin, beseeching political unity in the face of the Almach Seccession and offering his own perspective on the conflict. 'It's republicanism versus autocracy,' he said, 'and we're not the autocracy.'\ +

      \ + The speech has been met with approval from many young synthetics and organics alike, with many referring to Arielsson as 'Old Man Bjorn' on social media immediately after its conclusions. Others responded less positively, with Arielsson's caustic remarks about political rival and Icarus Front Secretary-General Mackenzie West providing ample room for criticism. 'Secretary-General West... might wax poetic about how the Association is a 'betrayal of our own humanity', or some... or some crock of shit like that' says Arielsson in the first of three specific insults against the SecGen.\ +

      \ + Others have criticized the speech's seemingly communist tone, with Arielsson expressing approval for the socialist Free Relan Federation and the anarchist Casini's Reach despite opposing their secessionist ideals. Still others claim that the speech offered 'nothing but empty feelings' and that it lacked specific, actionable resolutions on the growing secessionist movement in VirGov. Some have even framed the Address as a form of political maneuvering by the venerable politician, claiming that he voiced unpopular sentiments specifically to hamper the Shadow Coalition's re-election bid after well-publicized disagreements with SC party bosses.\ +

      \ + The actions of Arielsson and Vir's proximity to the border have lead to increased focus on the upcoming Gubernatorial election on a nationwide level, with the Icarus Front alone projected to spend upwards of a billion thalers on publicity. Minor party candidates like the former MLM member Luisa Hannirsdottir and the Mercurial Phaedrus already have strong support in the polls, promising a fierce election that could ultimately tip power in the system in any direction.\ +

      \ + A full excerpt is available below." + children = list( + /datum/lore/codex/page/bjornretirement + ) + +/datum/lore/codex/page/bjornretirement + name = "Bjorn Arielsson Farewell Address" + data = "This is, as you know, my last term in office. After this, I mean to retire-- really retire, I have a cabin in the mountains waiting for me along with a thick stack of old Bowler novels. Because this is my last term, I have the chance to do something pretty rare for a politician. I get to speak my mind.\ +

      \ + I hear talk from some people-- mostly young people, people who have lived their whole adult life with me in the capital-- I hear them talking about seccession. Now, let's make it clear; I'm not going to belittle you, the way some of my colleagues would. Complaining about the government, especially one as big and as old as the Confederacy, is our gods-given right. It's never going to be perfect, and it's not half of what it could be. I have nothing against talking about it, I have nothing against turning that talk into action and actually seceding, with just cause. I've worked closely with Representative Hannirsdottir for ten years now, and while we don't agree on the issue of secession it's certainly never stopped us from cooperating.\ +

      \ + But, uh, as you can probably guess, they're not talking about the old kind of seccession. They're not thinking we'll stop paying Solar taxes and strike it out alone, the way some people did during the Age of Seccession. They want to join the Association. Now, if I were Secretary-General West, I might wax poetic about how the Association is a 'betrayal of our own humanity', or some... or some crock of shit like that, if you'll pardon my language. We're not all humans here. We're Tajaran and Unathi and Skrell and Positronics and even a few Teshari. And while that 'Valentines Ultimatum' might win West a lot of points with their lackies, and with the kind of maintenance-dome troglodyte who thinks the First Accord was a mistake, it's done more for the Association's recruitment than their entire propaganda budget. It's become expedient for leaders on both sides to treat this like a fight between the Core and the Rim, or between humans and positronics, or between tradition and progressivism, but it's not any of these. It's the oldest fight in the book. It's republicanism versus autocracy, and we're not the autocracy.\ +

      \ + Angessa's Pearl is a theocratic autocracy led by Angessa Martei, who owns all property on the planet down to her people's bland white jumpsuits and the gray slop they eat. This isn't propaganda. This is objective fact, and something Martei is open about. Her seccession is a means for her to get more and more naked power over her slaves, and to grow more and more of them, until she's the immortal center of an industrial empire. The people of the Pearl didn't make the choice to join the Association. The people that are building her fleet and dying for her cause had no say in the matter. The injustice, the oppression here isn't that their rights to 'self-improvement' or 'self-expression' or 'freedom of thought' were trod on-- the injustice is that SolGov, that we allowed these abuses to persist for as long as they did. The injustice is that there are still so few laws in place to prevent things like this from happening in new colonies. The injustice is that, on seeing Martei's schemes actualized, we didn't take a cold, hard look at just how that was allowed to happen.\ +

      \ + I love SolGov. It's because of this love that I'm so furious at what we have allowed to happen to our people. The state of the Bowl is disgraceful. Nobody who looks to us for protection, who pays us taxes and levies, who is a member of our community, should live in fear of raider attacks. What we did to the positronics, the history we let ourselves repeat out of fear and greed, can never be forgiven, can never be repaired until Vir burns dark in our sky. The pogroms-- yes, the pogroms-- against the Unathi, against refugees fleeing their own religious autocracy, are a disgrace to everything we stand for. But of all the nations in the galaxy, with perhaps the exception of Casini's Reach, we are the only one founded for the good of the ruled, rather than the rulers. We are the only real commonwealth in known space. And that's why we need to strive for better. We are a burning beacon of liberty in a galaxy where nigh eighty percent of the population has no voice in the government. Every ounce of power we cede to the party bosses, or the corporations, or tinpot dictators like Angessa Martei, is a dimming, a flickering of that torch. \ +

      \ + And this brings us back to the Association, and to those who sympathize with it. I do, too. I spent my entire career on sapient rights lobbying, on supporting the anti-malfesance efforts of my colleagues. For a disaffected positronic, for any friend to the positronic people, for those who have had their lives taken by corporations-- the Association seems like a miracle. And maybe, for those Mercurials, the ideas it's founded upon shine even brighter than our democracy. But I look at the Association, really look, and I see Angessa Martei lying in the center, spinning a great big web. I see Naomi Harper, lying through her teeth better than Mackenzie West ever could. Two of the biggest population bases in the Association, the two nations that started the whole Gray Hour, are autocracies. Once again, the ferver of the revolution is subsumed by the oligarchs who want to stay in power. I doubt, to the poor laborer on the Pearl, the word 'Mecurialism' means much. I doubt that once the shock of the seccession wears off, that the young Promethean soldier will find themselves in a better place in Harper's junta than they will here in Vir.\ I doubt that in ten years' time the miners, pioneers, and traders who seized their means of production will find the Association Militia a kinder master than Xion, Nanotrasen, or Major Bill's. \ +

      \ + This is far from a blanket condemnation of every government in the Association. President Fisher of the FRF-- I consider her a friend. When she gave her speech this March about strengthening and guiding the Almachi Revolution, I thought long and hard about whether we might do the same. I certainly commend the effort. But the structure of the Association was penned by the same autocrats that, to do her words justice, Fisher will have to overthrow. There's no High Court, no checks or balances. The Association is an alliance penned as though deliberately ignoring two thousand years of political science. By striving to counter-balance these autocrats, Fisher plays into their hands. She commits her own fleet, weakens her own defenses against enemies closer to home, in the service of Martei's ambitions. \ +

      \ + I don't see this whole affair as a chance to spread the galactic anti-corporate revolution the way President Fisher does, of course. I make no secret of my stance on Trans-Stellars, but I also know that we're better off with Sol than without. The 'Silent Collapse' was two hundred years ago, but we still bear the scars from it. When the Scandinavian Union pulled out support for the Sivian colonization project, SolGov saved us. I do mean saved us, sure as if they'd fished us out of a life pod. There were no factories, no steel, no concrete on Sif until the Engineering Corps built Radiance and New Reykjavik. Corporations and regional governments cowered from the Karan pirates, until the Marines chased them out. Whether Sivian or Karan, you owe the roof over your head to the Sol Confederate Government. With that great debt in mind, how dare we turn our backs on the Bowl, or Abel's Rest, or Nyx, when they need us! How dare we let oligarchs prey on the weak! How dare we choose not to act when we have, by virtue of our votes in the Assembly and our voice within the halls of public debate, the means to share our peace and prosperity with the rest of our people!\ +

      \ + This is what I mean by SolGov being the only true republic, the only state founded for the common good. The 'human spirit' West croons on about isn't our industriousness, or our skill at arms. If humanity-- if this Terran culture is commendable for anything, it is that we assist our fellows. We take in Casteless Skrell, Unbound Unathi, republican Tajaran. We pass around the hat when someone's house burns down. We help our friends, our neighbors, and even strangers. The fact that Martei and Harper are perverting this impulse, padding their juntas with the air of legitimacy to inspire honest people to ride to their defense, is the reason their state is unconscionable, the reason it was was born flawed, the reason we cannot suffer it to continue, much less help it on its way.\ +

      \ + Now, I'm sure you've noticed by now, that I haven't said much more than three words about technoprogressivism, or transtech, or whatever the word du jour is. Frankly, that's on purpose. 'Transtech' has never once been about technology. The Icarus Front-- the old one, that united us and took us to the stars, not the new one we spend forty hours a week arguing with about healthcare-- The Icarus Front was a popular revolution, you know. Hel, they were Marxists. It was a world where the kind of lack of accountability, the entrenched oligarchy and geographical class divide that we're dealing with now was spiraling out of control. In the old United States, the rich and powerful got the technology to grow loyal subjects in tubes, to make drone intelligences smarter in some ways than a human could ever be, to-- well, to do what Angessa Martei's done, only with no SolGov to stop her. Meanwhile, the 'little people' in the Middle East, Southeast Asia, and other 'forgotten' parts of the world were left behind, hopelessly. I don't mean to downplay the importance of the Gray Tide, but if you look at historical accounts from that era, the thing that really united the Front was the knowledge that, if they didn't act immediately, they'd be seen as 'externalities' by immortal superintelligent businesspeople and politicians. The take-away from the Gray Tide should never have been that 'nanotechnology is dangerous'-- it should have been 'nobody should be able to destroy an entire city without facing consequences.'\ +

      \ + That was more of a history lesson than I had meant, but it's important to look at these sorts of things in context. I know transtech and the Five Points have been used as an excuse for pejudice against Skrell, Mercurials, positronics, the FTU, communism, the disabled, and most recently Prometheans. But all the Five Points are supposed to mean - what they would say if the people who had written them were alive today, is that everyone deserves an equal playing field. When the ruling class is smarter, stronger, and longer lived than the classes they rule over-- well, I could wax poetic again, or I could just point you towards the Hegemony and their 'clients'. The Hegemony is bad enough. Let's not give Angessa Martei a chance to outdo them." + +/datum/lore/codex/page/article32 + name = "01/25/63 - Moravec Nephew Announces Vir Governor Candidacy" + data = "The Sol Economic Organization has announced that Calvert Moravec, nephew of NanoTrasen CEO Albary Moravec will be running under their ticket in the upcoming Vir gubernatorial elections. Calvert has stated that he will run on a pro-business platform, and has chosen Vir to do so due to the 'Unique beauty and economic prospects of an interstellar crossroads such as Vir'.\ +

      \ + Despite being a lifelong resident of Alpha Centauri, Moravec was recently approved for Vir citizenship, making him eligible for local candidacy and has reportedly moved into a luxurious New Reykjavik penthouse. Perhaps best known for his soaring stock market investment success over the previous few years, Calvert's first foray into politics is not wholly unexpected as the Moravec family has long leveraged their wealth in international affairs, though successful election would mark their first sitting member of the Colonial Assembly. Fellow SEO candidate Councillor Hal Wekstrom has expressed his full support for Moravec.\ +

      \ + Three candidates will be elected as representatives to the Colonial Assembly later this year, with the most popular also attaining the position of system governor." + +/datum/lore/codex/page/article33 + name = "01/27/63 - Vani Jee Orbital Tour Cut Short" + data = "Icarus Front Representative Candidate Vani Jee has delayed the remainder of her campaign tour of orbital colonies and outposts around the Vir system after an alleged altercation with NanoTrasen security.\ + Candidate Jee had been visiting the NLS Southern Cross, a NanoTrasen station in Sif orbit to receive a corporate tour and meet with voters, when her concluding question and answer session was interrupted by hecklers, leading to the event being cut short. Jee alleges that footage of the event was seized by NanoTrasen corporate security and has accused the trans-stellar corporation of the intentional intimidation of Icarus Front and Shadow Coalition candidates in what she describes as 'a clear display of corruption in favour of company-favourite Calvert Moravec', though she has praised the individual employees of the Cross for their hospitality and thought-provoking questions.\ +

      \ + Vani Jee is running on a platform of free access to education, Sivian self-determination, and isolationist foreign policy. She has refused to make any strong statements regarding hot-button issues such as the Five Points.\ +

      \ + She intends to resume her scheduled tour after a three day break." diff --git a/code/modules/maps/tg/map_template.dm b/code/modules/maps/tg/map_template.dm index 27105b0701..63a597ac8e 100644 --- a/code/modules/maps/tg/map_template.dm +++ b/code/modules/maps/tg/map_template.dm @@ -1,15 +1,3 @@ -var/list/global/map_templates = list() - -// Called when the world starts, in world.dm -/proc/load_map_templates() - for(var/T in subtypesof(/datum/map_template)) - var/datum/map_template/template = T - if(!(initial(template.mappath))) // If it's missing the actual path its probably a base type or being used for inheritence. - continue - template = new T() - map_templates[template.name] = template - return TRUE - /datum/map_template var/name = "Default Template Name" var/desc = "Some text should go here. Maybe." @@ -19,6 +7,7 @@ var/list/global/map_templates = list() var/mappath = null var/loaded = 0 // Times loaded this round var/annihilate = FALSE // If true, all (movable) atoms at the location where the map is loaded will be deleted before the map is loaded in. + var/fixed_orientation = FALSE // If true, the submap will not be rotated randomly when loaded. var/cost = null // The map generator has a set 'budget' it spends to place down different submaps. It will pick available submaps randomly until \ it runs out. The cost of a submap should roughly corrispond with several factors such as size, loot, difficulty, desired scarcity, etc. \ @@ -26,8 +15,6 @@ var/list/global/map_templates = list() var/allow_duplicates = FALSE // If false, only one map template will be spawned by the game. Doesn't affect admins spawning then manually. var/discard_prob = 0 // If non-zero, there is a chance that the map seeding algorithm will skip this template when selecting potential templates to use. - var/static/dmm_suite/maploader = new - /datum/map_template/New(path = null, rename = null) if(path) mappath = path @@ -37,11 +24,15 @@ var/list/global/map_templates = list() if(rename) name = rename -/datum/map_template/proc/preload_size(path, orientation = SOUTH) - var/bounds = maploader.load_map(file(path), 1, 1, 1, cropMap=FALSE, measureOnly=TRUE, orientation=orientation) +/datum/map_template/proc/preload_size(path, orientation = 0) + var/bounds = SSmapping.maploader.load_map(file(path), 1, 1, 1, cropMap=FALSE, measureOnly=TRUE, orientation=orientation) if(bounds) - width = bounds[MAP_MAXX] // Assumes all templates are rectangular, have a single Z level, and begin at 1,1,1 - height = bounds[MAP_MAXY] + if(orientation & (90 | 270)) + width = bounds[MAP_MAXY] + height = bounds[MAP_MAXX] + else + width = bounds[MAP_MAXX] // Assumes all templates are rectangular, have a single Z level, and begin at 1,1,1 + height = bounds[MAP_MAXY] return bounds /datum/map_template/proc/initTemplateBounds(var/list/bounds) @@ -82,7 +73,7 @@ var/list/global/map_templates = list() admin_notice("Submap initializations finished.", R_DEBUG) -/datum/map_template/proc/load_new_z(var/centered = FALSE, var/orientation = SOUTH) +/datum/map_template/proc/load_new_z(var/centered = FALSE, var/orientation = 0) var/x = 1 var/y = 1 @@ -90,7 +81,7 @@ var/list/global/map_templates = list() x = round((world.maxx - width)/2) y = round((world.maxy - height)/2) - var/list/bounds = maploader.load_map(file(mappath), x, y, no_changeturf = TRUE, orientation=orientation) + var/list/bounds = SSmapping.maploader.load_map(file(mappath), x, y, no_changeturf = TRUE, orientation=orientation) if(!bounds) return FALSE @@ -102,10 +93,10 @@ var/list/global/map_templates = list() on_map_loaded(world.maxz) //VOREStation Edit return TRUE -/datum/map_template/proc/load(turf/T, centered = FALSE, orientation = SOUTH) +/datum/map_template/proc/load(turf/T, centered = FALSE, orientation = 0) var/old_T = T if(centered) - T = locate(T.x - round(((orientation & NORTH|SOUTH) ? width : height)/2) , T.y - round(((orientation & NORTH|SOUTH) ? height : width)/2) , T.z) + T = locate(T.x - round(((orientation%180) ? height : width)/2) , T.y - round(((orientation%180) ? width : height)/2) , T.z) // %180 catches East/West (90,270) rotations on true, North/South (0,180) rotations on false if(!T) return if(T.x+width > world.maxx) @@ -116,7 +107,7 @@ var/list/global/map_templates = list() if(annihilate) annihilate_bounds(old_T, centered, orientation) - var/list/bounds = maploader.load_map(file(mappath), T.x, T.y, T.z, cropMap=TRUE, orientation = orientation) + var/list/bounds = SSmapping.maploader.load_map(file(mappath), T.x, T.y, T.z, cropMap=TRUE, orientation = orientation) if(!bounds) return @@ -130,15 +121,15 @@ var/list/global/map_templates = list() loaded++ return TRUE -/datum/map_template/proc/get_affected_turfs(turf/T, centered = FALSE, orientation = SOUTH) +/datum/map_template/proc/get_affected_turfs(turf/T, centered = FALSE, orientation = 0) var/turf/placement = T if(centered) - var/turf/corner = locate(placement.x - round(((orientation & NORTH|SOUTH) ? width : height)/2), placement.y - round(((orientation & NORTH|SOUTH) ? height : width)/2), placement.z) + var/turf/corner = locate(placement.x - round(((orientation%180) ? height : width)/2), placement.y - round(((orientation%180) ? width : height)/2), placement.z) // %180 catches East/West (90,270) rotations on true, North/South (0,180) rotations on false if(corner) placement = corner - return block(placement, locate(placement.x+((orientation & NORTH|SOUTH) ? width : height)-1, placement.y+((orientation & NORTH|SOUTH) ? height : width)-1, placement.z)) + return block(placement, locate(placement.x+((orientation%180) ? height : width)-1, placement.y+((orientation%180) ? width : height)-1, placement.z)) -/datum/map_template/proc/annihilate_bounds(turf/origin, centered = FALSE, orientation = SOUTH) +/datum/map_template/proc/annihilate_bounds(turf/origin, centered = FALSE, orientation = 0) var/deleted_atoms = 0 admin_notice("Annihilating objects in submap loading locatation.", R_DEBUG) var/list/turfs_to_clean = get_affected_turfs(origin, centered, orientation) @@ -152,7 +143,7 @@ var/list/global/map_templates = list() //for your ever biggening badminnery kevinz000 //⤠- Cyberboss -/proc/load_new_z_level(var/file, var/name, var/orientation = SOUTH) +/proc/load_new_z_level(var/file, var/name, var/orientation = 0) var/datum/map_template/template = new(file, name) template.load_new_z(orientation) @@ -175,8 +166,8 @@ var/list/global/map_templates = list() var/list/priority_submaps = list() // Submaps that will always be placed. // Lets go find some submaps to make. - for(var/map in map_templates) - var/datum/map_template/MT = map_templates[map] + for(var/map in SSmapping.map_templates) + var/datum/map_template/MT = SSmapping.map_templates[map] if(!MT.allow_duplicates && MT.loaded > 0) // This probably won't be an issue but we might as well. continue if(!istype(MT, desired_map_template_type)) // Not the type wanted. @@ -226,10 +217,16 @@ var/list/global/map_templates = list() var/specific_sanity = 100 // A hundred chances to place the chosen submap. while(specific_sanity > 0) specific_sanity-- - var/orientation = pick(cardinal) + + var/orientation + if(chosen_template.fixed_orientation || !config.random_submap_orientation) + orientation = 0 + else + orientation = pick(list(0, 90, 180, 270)) + chosen_template.preload_size(chosen_template.mappath, orientation) - var/width_border = TRANSITIONEDGE + SUBMAP_MAP_EDGE_PAD + round(((orientation & NORTH|SOUTH) ? chosen_template.width : chosen_template.height) / 2) - var/height_border = TRANSITIONEDGE + SUBMAP_MAP_EDGE_PAD + round(((orientation & NORTH|SOUTH) ? chosen_template.height : chosen_template.width) / 2) + var/width_border = TRANSITIONEDGE + SUBMAP_MAP_EDGE_PAD + round(((orientation%180) ? chosen_template.height : chosen_template.width) / 2) // %180 catches East/West (90,270) rotations on true, North/South (0,180) rotations on false + var/height_border = TRANSITIONEDGE + SUBMAP_MAP_EDGE_PAD + round(((orientation%180) ? chosen_template.width : chosen_template.height) / 2) var/z_level = pick(z_levels) var/turf/T = locate(rand(width_border, world.maxx - width_border), rand(height_border, world.maxy - height_border), z_level) var/valid = TRUE @@ -288,4 +285,4 @@ var/list/global/map_templates = list() admin_notice("Submap loader gave up with [budget] left to spend.", R_DEBUG) else admin_notice("Submaps loaded.", R_DEBUG) - admin_notice("Loaded: [english_list(pretty_submap_list)]", R_DEBUG) \ No newline at end of file + admin_notice("Loaded: [english_list(pretty_submap_list)]", R_DEBUG) diff --git a/code/modules/maps/tg/reader.dm b/code/modules/maps/tg/reader.dm index b8fbf2cab6..6625884949 100644 --- a/code/modules/maps/tg/reader.dm +++ b/code/modules/maps/tg/reader.dm @@ -63,9 +63,9 @@ var/global/use_preloader = FALSE if(!z_offset) z_offset = world.maxz + 1 - // If it's not a single dir, default to north (Default orientation) - if(!orientation in cardinal) - orientation = SOUTH + // If it's not a single dir, default to 0 degrees rotation (Default orientation) + if(!(orientation in list(0, 90, 180, 270))) + orientation = 0 var/list/bounds = list(1.#INF, 1.#INF, 1.#INF, -1.#INF, -1.#INF, -1.#INF) var/list/grid_models = list() @@ -109,7 +109,8 @@ var/global/use_preloader = FALSE if(cropMap) continue else - world.maxz = zcrd //create a new z_level if needed + while(world.maxz < zcrd) + world.increment_max_z() // create a new z_level if needed. if(!no_changeturf) WARNING("Z-level expansion occurred without no_changeturf set, this may cause problems") @@ -166,12 +167,12 @@ var/global/use_preloader = FALSE key_list[++key_list.len] = line_keys // Rotate the list according to orientation - if(orientation != SOUTH) + if(orientation != 0) var/num_cols = key_list[1].len var/num_rows = key_list.len var/list/new_key_list = list() // If it's rotated 180 degrees, the dimensions are the same - if(orientation == NORTH) + if(orientation == 180) new_key_list.len = num_rows for(var/i = 1 to new_key_list.len) new_key_list[i] = list() @@ -189,11 +190,11 @@ var/global/use_preloader = FALSE for(var/i = 1 to new_key_list.len) for(var/j = 1 to new_key_list[i].len) switch(orientation) - if(NORTH) + if(180) new_key_list[i][j] = key_list[num_rows - i][num_cols - j] - if(EAST) + if(270) new_key_list[i][j] = key_list[num_rows - j][i] - if(WEST) + if(90) new_key_list[i][j] = key_list[j][num_cols - i] key_list = new_key_list @@ -313,12 +314,6 @@ var/global/use_preloader = FALSE if(istext(value)) fields[I] = apply_text_macros(value) - // Rotate dir if orientation isn't south (default) - if(fields["dir"]) - fields["dir"] = turn(fields["dir"], dir2angle(orientation) + 180) - else - fields["dir"] = turn(SOUTH, dir2angle(orientation) + 180) - //then fill the members_attributes list with the corresponding variables members_attributes.len++ members_attributes[index++] = fields @@ -379,20 +374,20 @@ var/global/use_preloader = FALSE //instanciate the first /turf var/turf/T if(members[first_turf_index] != /turf/template_noop) - T = instance_atom(members[first_turf_index],members_attributes[first_turf_index],crds,no_changeturf) + T = instance_atom(members[first_turf_index],members_attributes[first_turf_index],crds,no_changeturf,orientation) if(T) //if others /turf are presents, simulates the underlays piling effect index = first_turf_index + 1 while(index <= members.len - 1) // Last item is an /area var/underlay = T.appearance - T = instance_atom(members[index],members_attributes[index],crds,no_changeturf)//instance new turf + T = instance_atom(members[index],members_attributes[index],crds,no_changeturf,orientation)//instance new turf T.underlays += underlay index++ //finally instance all remainings objects/mobs for(index in 1 to first_turf_index-1) - instance_atom(members[index],members_attributes[index],crds,no_changeturf) + instance_atom(members[index],members_attributes[index],crds,no_changeturf,orientation) //Restore initialization to the previous value SSatoms.map_loader_stop() @@ -401,7 +396,7 @@ var/global/use_preloader = FALSE //////////////// //Instance an atom at (x,y,z) and gives it the variables in attributes -/dmm_suite/proc/instance_atom(path,list/attributes, turf/crds, no_changeturf) +/dmm_suite/proc/instance_atom(path,list/attributes, turf/crds, no_changeturf, orientation=0) _preloader.setup(attributes, path) if(crds) @@ -419,6 +414,11 @@ var/global/use_preloader = FALSE stoplag() SSatoms.map_loader_begin() + // Rotate the atom now that it exists, rather than changing its orientation beforehand through the fields["dir"] + if(orientation != 0) // 0 means no rotation + var/atom/A = . + A.set_dir(turn(A.dir, orientation)) + /dmm_suite/proc/create_atom(path, crds) set waitfor = FALSE . = new path (crds) diff --git a/code/modules/materials/material_sheets.dm b/code/modules/materials/material_sheets.dm index 3caf8df28b..0b1daf10fa 100644 --- a/code/modules/materials/material_sheets.dm +++ b/code/modules/materials/material_sheets.dm @@ -37,8 +37,8 @@ if(apply_colour) color = material.icon_colour - if(material.conductive) - flags |= CONDUCT + if(!material.conductive) + flags |= NOCONDUCT matter = material.get_matter() update_strings() diff --git a/code/modules/materials/materials.dm b/code/modules/materials/materials.dm index f8aad253d8..6f55572ef9 100644 --- a/code/modules/materials/materials.dm +++ b/code/modules/materials/materials.dm @@ -113,6 +113,7 @@ var/list/name_to_material // Placeholder vars for the time being, todo properly integrate windows/light tiles/rods. var/created_window + var/created_fulltile_window var/rod_product var/wire_product var/list/window_options = list() @@ -485,11 +486,12 @@ var/list/name_to_material destruction_desc = "shatters" window_options = list("One Direction" = 1, "Full Window" = 4, "Windoor" = 2) created_window = /obj/structure/window/basic + created_fulltile_window = /obj/structure/window/basic/full rod_product = /obj/item/stack/material/glass/reinforced /material/glass/build_windows(var/mob/living/user, var/obj/item/stack/used_stack) - if(!user || !used_stack || !created_window || !window_options.len) + if(!user || !used_stack || !created_window || !created_fulltile_window || !window_options.len) return 0 if(!user.IsAdvancedToolUser()) @@ -544,6 +546,8 @@ var/list/name_to_material if(choice == "Windoor") if(is_reinforced()) build_path = /obj/structure/windoor_assembly/secure + else if(choice == "Full Window") + build_path = created_fulltile_window else build_path = created_window @@ -575,6 +579,7 @@ var/list/name_to_material composite_material = list(DEFAULT_WALL_MATERIAL = SHEET_MATERIAL_AMOUNT / 2, "glass" = SHEET_MATERIAL_AMOUNT) window_options = list("One Direction" = 1, "Full Window" = 4, "Windoor" = 2) created_window = /obj/structure/window/reinforced + created_fulltile_window = /obj/structure/window/reinforced/full wire_product = null rod_product = null @@ -588,6 +593,7 @@ var/list/name_to_material stack_origin_tech = list(TECH_MATERIAL = 4) window_options = list("One Direction" = 1, "Full Window" = 4) created_window = /obj/structure/window/phoronbasic + created_fulltile_window = /obj/structure/window/phoronbasic/full wire_product = null rod_product = /obj/item/stack/material/glass/phoronrglass @@ -599,6 +605,7 @@ var/list/name_to_material composite_material = list() //todo window_options = list("One Direction" = 1, "Full Window" = 4) created_window = /obj/structure/window/phoronreinforced + created_fulltile_window = /obj/structure/window/phoronreinforced/full hardness = 40 weight = 30 stack_origin_tech = list(TECH_MATERIAL = 2) diff --git a/code/modules/media/media_machinery.dm b/code/modules/media/media_machinery.dm index d12b91eb38..02d4d9698d 100644 --- a/code/modules/media/media_machinery.dm +++ b/code/modules/media/media_machinery.dm @@ -64,7 +64,7 @@ if(anchored) update_music() -/obj/machinery/media/initialize() +/obj/machinery/media/Initialize() . = ..() update_media_source() diff --git a/code/modules/media/mediamanager.dm b/code/modules/media/mediamanager.dm index 83da1250a7..c1cd4897ca 100644 --- a/code/modules/media/mediamanager.dm +++ b/code/modules/media/mediamanager.dm @@ -149,7 +149,7 @@ if (url != targetURL || abs(targetStartTime - start_time) > 1 || abs(targetVolume - source_volume) > 0.1 /* 10% */) url = targetURL start_time = targetStartTime - source_volume = Clamp(targetVolume, 0, 1) + source_volume = CLAMP(targetVolume, 0, 1) send_update() /datum/media_manager/proc/stop_music() diff --git a/code/modules/mining/coins.dm b/code/modules/mining/coins.dm index baf8094967..9b75a1dba8 100644 --- a/code/modules/mining/coins.dm +++ b/code/modules/mining/coins.dm @@ -4,7 +4,6 @@ icon = 'icons/obj/items.dmi' name = "Coin" icon_state = "coin" - flags = CONDUCT force = 0.0 throwforce = 0.0 w_class = ITEMSIZE_TINY diff --git a/code/modules/mining/drilling/drill.dm b/code/modules/mining/drilling/drill.dm index 7cf8bc575e..5e28944ae0 100644 --- a/code/modules/mining/drilling/drill.dm +++ b/code/modules/mining/drilling/drill.dm @@ -363,8 +363,8 @@ connected.check_supports() connected = null -/obj/machinery/mining/brace/verb/rotate() - set name = "Rotate" +/obj/machinery/mining/brace/verb/rotate_clockwise() + set name = "Rotate Brace Clockwise" set category = "Object" set src in oview(1) @@ -374,5 +374,5 @@ to_chat(usr, "It is anchored in place!") return 0 - src.set_dir(turn(src.dir, 90)) + src.set_dir(turn(src.dir, 270)) return 1 \ No newline at end of file diff --git a/code/modules/mining/fulton.dm b/code/modules/mining/fulton.dm index dd9c068a17..d07a52a2f2 100644 --- a/code/modules/mining/fulton.dm +++ b/code/modules/mining/fulton.dm @@ -158,7 +158,7 @@ var/global/list/total_extraction_beacons = list() density = FALSE var/beacon_network = "station" -/obj/structure/extraction_point/initialize() +/obj/structure/extraction_point/Initialize() . = ..() name += " ([rand(100,999)]) ([get_area_name(src, TRUE)])" global.total_extraction_beacons += src diff --git a/code/modules/mining/machine_processing.dm b/code/modules/mining/machine_processing.dm index f02c686921..3f76672610 100644 --- a/code/modules/mining/machine_processing.dm +++ b/code/modules/mining/machine_processing.dm @@ -16,7 +16,7 @@ var/obj/machinery/mineral/processing_unit/machine = null var/show_all_ores = FALSE -/obj/machinery/mineral/processing_unit_console/initialize() +/obj/machinery/mineral/processing_unit_console/Initialize() . = ..() src.machine = locate(/obj/machinery/mineral/processing_unit) in range(5, src) if (machine) @@ -192,7 +192,7 @@ ores_processing[OD.name] = 0 ores_stored[OD.name] = 0 -/obj/machinery/mineral/processing_unit/initialize() +/obj/machinery/mineral/processing_unit/Initialize() . = ..() // TODO - Eschew input/output machinery and just use dirs ~Leshana //Locate our output and input machinery. @@ -273,7 +273,7 @@ else if(ores_processing[metal] == PROCESS_COMPRESS && O.compresses_to) //Compressing. - var/can_make = Clamp(ores_stored[metal],0,sheets_per_tick-sheets) + var/can_make = CLAMP(ores_stored[metal],0,sheets_per_tick-sheets) if(can_make%2>0) can_make-- var/material/M = get_material_by_name(O.compresses_to) @@ -288,7 +288,7 @@ else if(ores_processing[metal] == PROCESS_SMELT && O.smelts_to) //Smelting. - var/can_make = Clamp(ores_stored[metal],0,sheets_per_tick-sheets) + var/can_make = CLAMP(ores_stored[metal],0,sheets_per_tick-sheets) var/material/M = get_material_by_name(O.smelts_to) if(!istype(M) || !can_make || ores_stored[metal] < 1) diff --git a/code/modules/mining/mine_items.dm b/code/modules/mining/mine_items.dm index 5985e708d2..9bd8e396b7 100644 --- a/code/modules/mining/mine_items.dm +++ b/code/modules/mining/mine_items.dm @@ -13,7 +13,6 @@ name = "mining drill" desc = "The most basic of mining drills, for short excavations and small mineral extractions." icon = 'icons/obj/items.dmi' - flags = CONDUCT slot_flags = SLOT_BELT force = 15.0 throwforce = 4.0 @@ -29,6 +28,7 @@ sharp = 1 var/excavation_amount = 200 + var/destroy_artefacts = FALSE // some mining tools will destroy artefacts completely while avoiding side-effects. /obj/item/weapon/pickaxe/silver name = "silver pickaxe" @@ -112,7 +112,6 @@ desc = "A large tool for digging and moving dirt." icon = 'icons/obj/items.dmi' icon_state = "shovel" - flags = CONDUCT slot_flags = SLOT_BELT force = 8.0 throwforce = 4.0 diff --git a/code/modules/mining/mine_turfs.dm b/code/modules/mining/mine_turfs.dm index ed84632e15..a113da92d8 100644 --- a/code/modules/mining/mine_turfs.dm +++ b/code/modules/mining/mine_turfs.dm @@ -32,7 +32,6 @@ var/list/mining_overlay_cache = list() var/sand_dug var/mined_ore = 0 var/last_act = 0 - var/emitter_blasts_taken = 0 // EMITTER MINING! Muhehe. var/overlay_detail var/datum/geosample/geologic_data @@ -129,7 +128,7 @@ var/list/mining_overlay_cache = list() //Cache hit return mining_overlay_cache["[cache_id]_[direction]"] -/turf/simulated/mineral/initialize() +/turf/simulated/mineral/Initialize() . = ..() if(prob(20)) overlay_detail = "asteroid[rand(0,9)]" @@ -210,20 +209,28 @@ var/list/mining_overlay_cache = list() if(severity <= 2) // Now to expose the ore lying under the sand. spawn(1) // Otherwise most of the ore is lost to the explosion, which makes this rather moot. for(var/ore in resources) - var/amount_to_give = rand(Ceiling(resources[ore]/2), resources[ore]) // Should result in at least one piece of ore. + var/amount_to_give = rand(CEILING(resources[ore]/2, 1), resources[ore]) // Should result in at least one piece of ore. for(var/i=1, i <= amount_to_give, i++) var/oretype = ore_types[ore] new oretype(src) resources[ore] = 0 -/turf/simulated/mineral/bullet_act(var/obj/item/projectile/Proj) +/turf/simulated/mineral/bullet_act(var/obj/item/projectile/Proj) // only emitters for now + if(Proj.excavation_amount) + var/newDepth = excavation_level + Proj.excavation_amount // Used commonly below + if(newDepth >= 200) // first, if the turf is completely drilled then don't bother checking for finds and just drill it + GetDrilled(0) - // Emitter blasts - if(istype(Proj, /obj/item/projectile/beam/emitter) || istype(Proj, /obj/item/projectile/beam/heavylaser/fakeemitter)) - emitter_blasts_taken++ - if(emitter_blasts_taken > 2) // 3 blasts per tile - mined_ore = 1 - GetDrilled() + //destroy any archaeological finds + if(finds && finds.len) + var/datum/find/F = finds[1] + if(newDepth > F.excavation_required) // Digging too deep with something as clumsy or random as a blaster will destroy artefacts + finds.Remove(finds[1]) + if(prob(50)) + artifact_debris() + + excavation_level += Proj.excavation_amount + update_archeo_overlays(Proj.excavation_amount) /turf/simulated/mineral/Bumped(AM) @@ -391,17 +398,9 @@ var/list/mining_overlay_cache = list() var/datum/find/F = finds[1] if(newDepth > F.excavation_required) // Digging too deep can break the item. At least you won't summon a Balrog (probably) fail_message = ". [pick("There is a crunching noise","[W] collides with some different rock","Part of the rock face crumbles away","Something breaks under [W]")]" - + wreckfinds(P.destroy_artefacts) to_chat(user, "You start [P.drill_verb][fail_message].") - if(fail_message && prob(90)) - if(prob(25)) - excavate_find(prob(5), finds[1]) - else if(prob(50)) - finds.Remove(finds[1]) - if(prob(50)) - artifact_debris() - if(do_after(user,P.digspeed)) if(finds && finds.len) @@ -414,63 +413,14 @@ var/list/mining_overlay_cache = list() to_chat(user, "You finish [P.drill_verb] \the [src].") if(newDepth >= 200) // This means the rock is mined out fully - var/obj/structure/boulder/B - if(artifact_find) - if( excavation_level > 0 || prob(15) ) - //boulder with an artifact inside - B = new(src) - if(artifact_find) - B.artifact_find = artifact_find - else - artifact_debris(1) - else if(prob(5)) - //empty boulder - B = new(src) - - if(B) + if(P.destroy_artefacts) GetDrilled(0) else - GetDrilled(1) + excavate_turf() return excavation_level += P.excavation_amount - var/updateIcon = 0 - - //archaeo overlays - if(!archaeo_overlay && finds && finds.len) - var/datum/find/F = finds[1] - if(F.excavation_required <= excavation_level + F.view_range) - cut_overlay(archaeo_overlay) - archaeo_overlay = "overlay_archaeo[rand(1,3)]" - add_overlay(archaeo_overlay) - - else if(archaeo_overlay && (!finds || !finds.len)) - cut_overlay(archaeo_overlay) - archaeo_overlay = null - - //there's got to be a better way to do this - var/update_excav_overlay = 0 - if(excavation_level >= 150) - if(excavation_level - P.excavation_amount < 150) - update_excav_overlay = 1 - else if(excavation_level >= 100) - if(excavation_level - P.excavation_amount < 100) - update_excav_overlay = 1 - else if(excavation_level >= 50) - if(excavation_level - P.excavation_amount < 50) - update_excav_overlay = 1 - - //update overlays displaying excavation level - if( !(excav_overlay && excavation_level > 0) || update_excav_overlay ) - var/excav_quadrant = round(excavation_level / 25) + 1 - if(excav_quadrant > 5) - excav_quadrant = 5 - cut_overlay(excav_overlay) - excav_overlay = "overlay_excv[excav_quadrant]_[rand(1,3)]" - add_overlay(excav_overlay) - - if(updateIcon) - update_icon() + update_archeo_overlays(P.excavation_amount) //drop some rocks next_rock += P.excavation_amount @@ -483,6 +433,54 @@ var/list/mining_overlay_cache = list() return attack_hand(user) +/turf/simulated/mineral/proc/wreckfinds(var/destroy = FALSE) + if(!destroy && prob(90)) //nondestructive methods have a chance of letting you step away to not trash things + if(prob(25)) + excavate_find(prob(5), finds[1]) + else if(prob(50) || destroy) //destructive methods will always destroy finds, no bowls menacing with spikes for you + finds.Remove(finds[1]) + if(prob(50)) + artifact_debris() + +/turf/simulated/mineral/proc/update_archeo_overlays(var/excavation_amount = 0) + var/updateIcon = 0 + + //archaeo overlays + if(!archaeo_overlay && finds && finds.len) + var/datum/find/F = finds[1] + if(F.excavation_required <= excavation_level + F.view_range) + cut_overlay(archaeo_overlay) + archaeo_overlay = "overlay_archaeo[rand(1,3)]" + add_overlay(archaeo_overlay) + + else if(archaeo_overlay && (!finds || !finds.len)) + cut_overlay(archaeo_overlay) + archaeo_overlay = null + + //there's got to be a better way to do this + var/update_excav_overlay = 0 + if(excavation_level >= 150) + if(excavation_level - excavation_amount < 150) + update_excav_overlay = 1 + else if(excavation_level >= 100) + if(excavation_level - excavation_amount < 100) + update_excav_overlay = 1 + else if(excavation_level >= 50) + if(excavation_level - excavation_amount < 50) + update_excav_overlay = 1 + + //update overlays displaying excavation level + if( !(excav_overlay && excavation_level > 0) || update_excav_overlay ) + var/excav_quadrant = round(excavation_level / 25) + 1 + if(excav_quadrant > 5) + excav_quadrant = 5 + cut_overlay(excav_overlay) + excav_overlay = "overlay_excv[excav_quadrant]_[rand(1,3)]" + add_overlay(excav_overlay) + + if(updateIcon) + update_icon() + /turf/simulated/mineral/proc/clear_ore_effects() for(var/obj/effect/mineral/M in contents) qdel(M) @@ -497,6 +495,26 @@ var/list/mining_overlay_cache = list() O.geologic_data = geologic_data return O +/turf/simulated/mineral/proc/excavate_turf() + var/obj/structure/boulder/B + if(artifact_find) + if( excavation_level > 0 || prob(15) ) + //boulder with an artifact inside + B = new(src) + if(artifact_find) + B.artifact_find = artifact_find + else + artifact_debris(1) + else if(prob(5)) + //empty boulder + B = new(src) + + if(B) + GetDrilled(0) + else + GetDrilled(1) + return + /turf/simulated/mineral/proc/GetDrilled(var/artifact_fail = 0) if(!density) diff --git a/code/modules/mining/mint.dm b/code/modules/mining/mint.dm index 75acc807bc..bd44db119b 100644 --- a/code/modules/mining/mint.dm +++ b/code/modules/mining/mint.dm @@ -30,7 +30,7 @@ for (var/dir in cardinal) src.output = locate(/obj/machinery/mineral/output, get_step(src, dir)) if(src.output) break - processing_objects.Add(src) + START_PROCESSING(SSobj, src) return return diff --git a/code/modules/mining/money_bag.dm b/code/modules/mining/money_bag.dm index 13ddd4ad57..65e645f815 100644 --- a/code/modules/mining/money_bag.dm +++ b/code/modules/mining/money_bag.dm @@ -4,7 +4,6 @@ icon = 'icons/obj/storage.dmi' name = "Money bag" icon_state = "moneybag" - flags = CONDUCT force = 10.0 throwforce = 2.0 w_class = ITEMSIZE_LARGE diff --git a/code/modules/mining/ore_redemption_machine/equipment_vendor.dm b/code/modules/mining/ore_redemption_machine/equipment_vendor.dm index ae9661a13a..ad76d5b25b 100644 --- a/code/modules/mining/ore_redemption_machine/equipment_vendor.dm +++ b/code/modules/mining/ore_redemption_machine/equipment_vendor.dm @@ -66,7 +66,7 @@ src.equipment_path = path src.cost = cost -/obj/machinery/power/quantumpad/initialize() +/obj/machinery/power/quantumpad/Initialize() . = ..() default_apply_parts() diff --git a/code/modules/mining/resonator.dm b/code/modules/mining/resonator.dm index 1e96dc775b..bfbd29b830 100644 --- a/code/modules/mining/resonator.dm +++ b/code/modules/mining/resonator.dm @@ -57,7 +57,7 @@ mouse_opacity = 0 var/resonance_damage = 20 -/obj/effect/resonance/initialize(mapload, var/creator = null, var/timetoburst) +/obj/effect/resonance/Initialize(mapload, var/creator = null, var/timetoburst) . = ..() // Start small and grow to big size as we are about to burst transform = matrix()*0.75 @@ -101,7 +101,7 @@ layer = ABOVE_MOB_LAYER duration = 4 -/obj/effect/temp_visual/resonance_crush/initialize() +/obj/effect/temp_visual/resonance_crush/Initialize() . = ..() transform = matrix()*1.5 animate(src, transform = matrix()*0.1, alpha = 50, time = 4) diff --git a/code/modules/mining/resonator_vr.dm b/code/modules/mining/resonator_vr.dm index a4b20990cb..d3c3246a24 100644 --- a/code/modules/mining/resonator_vr.dm +++ b/code/modules/mining/resonator_vr.dm @@ -61,7 +61,7 @@ mouse_opacity = 0 var/resonance_damage = 20 -/obj/effect/resonance/initialize(mapload, var/creator = null, var/timetoburst) +/obj/effect/resonance/Initialize(mapload, var/creator = null, var/timetoburst) . = ..() // Start small and grow to big size as we are about to burst transform = matrix()*0.75 @@ -105,7 +105,7 @@ layer = ABOVE_MOB_LAYER duration = 4 -/obj/effect/temp_visual/resonance_crush/initialize() +/obj/effect/temp_visual/resonance_crush/Initialize() . = ..() transform = matrix()*1.5 animate(src, transform = matrix()*0.1, alpha = 50, time = 4) diff --git a/code/modules/mining/shelter_atoms.dm b/code/modules/mining/shelter_atoms.dm index 51b61cd5b1..ce1ec09189 100644 --- a/code/modules/mining/shelter_atoms.dm +++ b/code/modules/mining/shelter_atoms.dm @@ -128,7 +128,7 @@ basestate = "pwindow" //The windows have diagonal versions, and will never be a full window -/obj/structure/window/reinforced/survival_pod/is_full_window() +/obj/structure/window/reinforced/survival_pod/is_fulltile() return FALSE /obj/structure/window/reinforced/survival_pod/update_icon() @@ -219,7 +219,7 @@ pixel_y = -4 max_n_of_items = 100 -/obj/machinery/smartfridge/survival_pod/initialize() +/obj/machinery/smartfridge/survival_pod/Initialize() . = ..() for(var/obj/item/O in loc) if(accept_check(O)) @@ -240,14 +240,10 @@ desc = "A large machine releasing a constant gust of air." anchored = TRUE density = TRUE + can_atmos_pass = ATMOS_PASS_NO var/buildstacktype = /obj/item/stack/material/steel var/buildstackamount = 5 -/obj/structure/fans/CanPass(atom/movable/mover, turf/target, height=0, air_group=0) - if(!height) - return FALSE - return TRUE - /obj/structure/fans/proc/deconstruct() new buildstacktype(loc,buildstackamount) qdel(src) diff --git a/code/modules/mob/_modifiers/auras.dm b/code/modules/mob/_modifiers/auras.dm new file mode 100644 index 0000000000..fcc023ee2e --- /dev/null +++ b/code/modules/mob/_modifiers/auras.dm @@ -0,0 +1,18 @@ +/* +'Aura' modifiers are semi-permanent, in that they do not have a set duration, but will expire if out of range of the 'source' of the aura. +Note: The source is defined as an argument in New(), and if not specified, it is assumed the holder is the source, +making it not expire ever, which is likely not what you want. +*/ + +/datum/modifier/aura + var/aura_max_distance = 5 // If more than this many tiles away from the source, the modifier expires next tick. + +/datum/modifier/aura/check_if_valid() + if(!origin) + expire() + var/atom/A = origin.resolve() + if(istype(A)) // Make sure we're not null. + if(get_dist(holder, A) > aura_max_distance) + expire() + else + expire() // Source got deleted or something. diff --git a/code/modules/mob/_modifiers/modifiers.dm b/code/modules/mob/_modifiers/modifiers.dm index 4f449b723b..115acb1b3e 100644 --- a/code/modules/mob/_modifiers/modifiers.dm +++ b/code/modules/mob/_modifiers/modifiers.dm @@ -149,6 +149,13 @@ /mob/living/proc/remove_specific_modifier(var/datum/modifier/M, var/silent = FALSE) M.expire(silent) +// Removes one modifier of a type +/mob/living/proc/remove_a_modifier_of_type(var/modifier_type, var/silent = FALSE) + for(var/datum/modifier/M in modifiers) + if(ispath(M.type, modifier_type)) + M.expire(silent) + break + // Removes all modifiers of a type /mob/living/proc/remove_modifiers_of_type(var/modifier_type, var/silent = FALSE) for(var/datum/modifier/M in modifiers) diff --git a/code/modules/mob/_modifiers/modifiers_misc.dm b/code/modules/mob/_modifiers/modifiers_misc.dm index fbe9e35624..fc714f30f8 100644 --- a/code/modules/mob/_modifiers/modifiers_misc.dm +++ b/code/modules/mob/_modifiers/modifiers_misc.dm @@ -29,7 +29,7 @@ Berserk is a somewhat rare modifier to obtain freely (and for good reason), howe - Red Slimes will berserk if they go rabid. - Red slime core reactions will berserk slimes that can see the user in addition to making them go rabid. - Red slime core reactions will berserk prometheans that can see the user. -- Bears will berserk when losing a fight. +- Saviks will berserk when losing a fight. - Changelings can evolve a 2 point ability to use a changeling-specific variant of Berserk, that replaces the text with a 'we' variant. Recursive Enhancement allows the changeling to instead used an improved variant that features less exhaustion time and less nutrition drain. - Xenoarch artifacts may have forced berserking as one of their effects. This is especially fun if an artifact that makes hostile mobs is nearby. @@ -180,3 +180,91 @@ the artifact triggers the rage. accuracy = -75 // Aiming requires focus. accuracy_dispersion = 3 // Ditto. evasion = -45 // Too angry to dodge. + +// Non-cult version of deep wounds. +// Surprisingly, more dangerous. +/datum/modifier/grievous_wounds + name = "grievous wounds" + desc = "Your wounds are not easily mended." + + on_created_text = "Your wounds pain you greatly." + on_expired_text = "The pain lulls." + + stacks = MODIFIER_STACK_EXTEND + + incoming_healing_percent = 0.50 // 50% less healing. + disable_duration_percent = 1.22 // 22% longer disables. + bleeding_rate_percent = 1.20 // 20% more bleeding. + + accuracy_dispersion = 2 // A combination of fear and immense pain or damage reults in a twitching firing arm. Flee. + + + + +// Ignition, but confined to the modifier system. +// This makes it more predictable and thus, easier to balance. +/datum/modifier/fire + name = "on fire" + desc = "You are on fire! You will be harmed until the fire goes out or you extinguish it with water." + mob_overlay_state = "on_fire" + + on_created_text = "You combust into flames!" + on_expired_text = "The fire starts to fade." + stacks = MODIFIER_STACK_ALLOWED // Multiple instances will hurt a lot. + var/damage_per_tick = 5 + +/datum/modifier/fire/intense + mob_overlay_state = "on_fire_intense" + damage_per_tick = 10 + +/datum/modifier/fire/tick() + holder.inflict_heat_damage(damage_per_tick) + + +// Applied when near something very cold. +// Reduces mobility, attack speed. +/datum/modifier/chilled + name = "chilled" + desc = "You feel yourself freezing up. Its hard to move." + mob_overlay_state = "chilled" + + on_created_text = "You feel like you're going to freeze! It's hard to move." + on_expired_text = "You feel somewhat warmer and more mobile now." + stacks = MODIFIER_STACK_EXTEND + + slowdown = 2 + evasion = -40 + attack_speed_percent = 1.4 + disable_duration_percent = 1.2 + + +// Similar to being on fire, except poison tends to be more long term. +// Antitoxins will remove stacks over time. +// Synthetics can't receive this. +/datum/modifier/poisoned + name = "poisoned" + desc = "You have poison inside of you. It will cause harm over a long span of time if not cured." + mob_overlay_state = "poisoned" + + on_created_text = "You feel sick..." + on_expired_text = "You feel a bit better." + stacks = MODIFIER_STACK_ALLOWED // Multiple instances will hurt a lot. + var/damage_per_tick = 1 + +/datum/modifier/poisoned/weak + damage_per_tick = 0.5 + +/datum/modifier/poisoned/strong + damage_per_tick = 2 + +/datum/modifier/poisoned/tick() + if(holder.stat == DEAD) + expire(silent = TRUE) + holder.inflict_poison_damage(damage_per_tick) + +/datum/modifier/poisoned/can_apply(mob/living/L) + if(L.isSynthetic()) + return FALSE + if(L.get_poison_protection() >= 1) + return FALSE + return TRUE diff --git a/code/modules/mob/_modifiers/traits_phobias.dm b/code/modules/mob/_modifiers/traits_phobias.dm index 0fbe099c22..bd30891fbe 100644 --- a/code/modules/mob/_modifiers/traits_phobias.dm +++ b/code/modules/mob/_modifiers/traits_phobias.dm @@ -207,8 +207,8 @@ if(istype(thing, /obj/structure/snowman/spider)) //Snow spiders are also spooky so people can be assholes with those too. fear_amount += 1 - if(istype(thing, /mob/living/simple_animal/hostile/giant_spider)) // Actual giant spiders are the scariest of them all. - var/mob/living/simple_animal/hostile/giant_spider/S = thing + if(istype(thing, /mob/living/simple_mob/animal/giant_spider)) // Actual giant spiders are the scariest of them all. + var/mob/living/simple_mob/animal/giant_spider/S = thing if(S.stat == DEAD) // Dead giant spiders are less scary than alive ones. fear_amount += 4 else @@ -425,14 +425,18 @@ if(istype(thing, /obj/item/clothing/head/collectable/slime)) // Some hats are spooky so people can be assholes with them. fear_amount += 1 - if(istype(thing, /mob/living/simple_animal/slime)) // An actual predatory specimen! - var/mob/living/simple_animal/slime/S = thing + if(istype(thing, /mob/living/simple_mob/slime)) // An actual predatory specimen! + var/mob/living/simple_mob/slime/S = thing if(S.stat == DEAD) // Dead slimes are somewhat less spook. fear_amount += 4 - if(S.is_adult == TRUE) //big boy - fear_amount += 8 + if(istype(S, /mob/living/simple_mob/slime/xenobio)) + var/mob/living/simple_mob/slime/xenobio/X = S + if(X.is_adult == TRUE) //big boy + fear_amount += 8 + else + fear_amount += 6 else - fear_amount += 6 + fear_amount += 10 // It's huge and feral. if(istype(thing, /mob/living/carbon/human)) var/mob/living/carbon/human/S = thing diff --git a/code/modules/mob/_modifiers/unholy.dm b/code/modules/mob/_modifiers/unholy.dm index cc4a23aa40..0eadabc83a 100644 --- a/code/modules/mob/_modifiers/unholy.dm +++ b/code/modules/mob/_modifiers/unholy.dm @@ -71,7 +71,7 @@ /datum/modifier/repair_aura/tick() spawn() - for(var/mob/living/simple_animal/construct/T in view(4,holder)) + for(var/mob/living/simple_mob/construct/T in view(4,holder)) T.adjustBruteLoss(rand(-10,-15)) T.adjustFireLoss(rand(-10,-15)) @@ -110,7 +110,7 @@ spawn() if(isliving(holder)) var/mob/living/L = holder - if(istype(L, /mob/living/simple_animal/construct)) + if(istype(L, /mob/living/simple_mob/construct)) L.adjustBruteLoss(rand(-5,-10)) L.adjustFireLoss(rand(-5,-10)) else diff --git a/code/modules/mob/animations.dm b/code/modules/mob/animations.dm index c5bded9765..9b9ce3957f 100644 --- a/code/modules/mob/animations.dm +++ b/code/modules/mob/animations.dm @@ -180,8 +180,33 @@ note dizziness decrements automatically in the mob's Life() proc. pixel_z = default_pixel_z alpha = initial_alpha -/atom/movable/proc/do_attack_animation(atom/A) +// Similar to attack animations, but in reverse and is longer to act as a telegraph. +/atom/movable/proc/do_windup_animation(atom/A, windup_time) + var/pixel_x_diff = 0 + var/pixel_y_diff = 0 + var/direction = get_dir(src, A) + if(direction & NORTH) + pixel_y_diff = -8 + else if(direction & SOUTH) + pixel_y_diff = 8 + if(direction & EAST) + pixel_x_diff = -8 + else if(direction & WEST) + pixel_x_diff = 8 + + var/default_pixel_x = initial(pixel_x) + var/default_pixel_y = initial(pixel_y) + var/mob/mob = src + if(istype(mob)) + default_pixel_x = mob.default_pixel_x + default_pixel_y = mob.default_pixel_y + + animate(src, pixel_x = pixel_x + pixel_x_diff, pixel_y = pixel_y + pixel_y_diff, time = windup_time - 2) + animate(pixel_x = default_pixel_x, pixel_y = default_pixel_y, time = 2) + + +/atom/movable/proc/do_attack_animation(atom/A) var/pixel_x_diff = 0 var/pixel_y_diff = 0 var/direction = get_dir(src, A) diff --git a/code/modules/mob/dead/observer/free_vr.dm b/code/modules/mob/dead/observer/free_vr.dm index c10101f8be..dca361725f 100644 --- a/code/modules/mob/dead/observer/free_vr.dm +++ b/code/modules/mob/dead/observer/free_vr.dm @@ -11,7 +11,7 @@ var/global/list/prevent_respawns = list() set category = "OOC" set desc = "Free your job slot, remove yourself from the manifest, and prevent respawning as this character for this round." - var/confirm = alert("This will free up your job slot, remove you from the manifest, and prevent you from respawning with this character for the round. You can rejoin as another \ + var/confirm = alert("This will free up your job slot, remove you from the manifest, and allow you to respawn as this character. You can rejoin as another \ character if you like. Do this now?","Quit This Round","Quit Round","Cancel") if(confirm != "Quit Round") return @@ -22,7 +22,7 @@ var/global/list/prevent_respawns = list() return //Add them to the nope list - prevent_respawns += mind.name + //prevent_respawns += mind.name //Replaced by PR 4785 //Update any existing objectives involving this mob. for(var/datum/objective/O in all_objectives) diff --git a/code/modules/mob/dead/observer/observer.dm b/code/modules/mob/dead/observer/observer.dm index 7345e7e9b1..a3bf0d5465 100644 --- a/code/modules/mob/dead/observer/observer.dm +++ b/code/modules/mob/dead/observer/observer.dm @@ -143,8 +143,8 @@ var/mob/observer/dead/M = src M.manifest(user) -/mob/observer/dead/CanPass(atom/movable/mover, turf/target, height=0, air_group=0) - return 1 +/mob/observer/dead/CanPass(atom/movable/mover, turf/target) + return TRUE /* Transfer_mind is there to check if mob is being deleted/not going to have a body. Works together with spawning an observer, noted above. @@ -498,7 +498,7 @@ This is the proc mobs get to turn into a ghost. Forked from ghostize due to comp //find a viable mouse candidate - var/mob/living/simple_animal/mouse/host + var/mob/living/simple_mob/animal/passive/mouse/host var/obj/machinery/atmospherics/unary/vent_pump/vent_found var/list/found_vents = list() for(var/obj/machinery/atmospherics/unary/vent_pump/v in machines) @@ -506,7 +506,7 @@ This is the proc mobs get to turn into a ghost. Forked from ghostize due to comp found_vents.Add(v) if(found_vents.len) vent_found = pick(found_vents) - host = new /mob/living/simple_animal/mouse(vent_found) + host = new /mob/living/simple_mob/animal/passive/mouse(vent_found) else src << "Unable to find any unwelded vents to spawn mice at." diff --git a/code/modules/mob/emote.dm b/code/modules/mob/emote.dm index 0ecdb2fc20..f67f70eb87 100644 --- a/code/modules/mob/emote.dm +++ b/code/modules/mob/emote.dm @@ -52,6 +52,13 @@ if(O) O.see_emote(src, message, m_type) +// Shortcuts for above proc +/mob/proc/visible_emote(var/act_desc) + custom_emote(1, act_desc) + +/mob/proc/audible_emote(var/act_desc) + custom_emote(2, act_desc) + /mob/proc/emote_dead(var/message) if(client.prefs.muted & MUTE_DEADCHAT) diff --git a/code/modules/mob/freelook/mask/chunk.dm b/code/modules/mob/freelook/mask/chunk.dm index f98a9b936b..b540a8023b 100644 --- a/code/modules/mob/freelook/mask/chunk.dm +++ b/code/modules/mob/freelook/mask/chunk.dm @@ -25,10 +25,10 @@ /mob/living/silicon/seen_cult_turfs() return list() -/mob/living/simple_animal/seen_cult_turfs() +/mob/living/simple_mob/seen_cult_turfs() return seen_turfs_in_range(src, 1) -/mob/living/simple_animal/shade/narsie/seen_cult_turfs() +/mob/living/simple_mob/construct/shade/seen_cult_turfs() return view(2, src) /proc/seen_turfs_in_range(var/source, var/range) diff --git a/code/modules/mob/hear_say.dm b/code/modules/mob/hear_say.dm index 1e862472a2..e7c097c2b3 100644 --- a/code/modules/mob/hear_say.dm +++ b/code/modules/mob/hear_say.dm @@ -78,6 +78,12 @@ var/turf/source = speaker? get_turf(speaker) : get_turf(src) src.playsound_local(source, speech_sound, sound_vol, 1) +// Done here instead of on_hear_say() since that is NOT called if the mob is clientless (which includes most AI mobs). +/mob/living/hear_say(var/message, var/verb = "says", var/datum/language/language = null, var/alt_name = "",var/italics = 0, var/mob/speaker = null, var/sound/speech_sound, var/sound_vol) + ..() + if(has_AI()) // Won't happen if no ai_holder exists or there's a player inside w/o autopilot active. + ai_holder.on_hear_say(speaker, message) + /mob/proc/on_hear_say(var/message) to_chat(src, message) if(teleop) @@ -158,17 +164,10 @@ if(!(language && (language.flags & INNATE))) // skip understanding checks for INNATE languages if(!say_understands(speaker,language)) - if(istype(speaker,/mob/living/simple_animal)) - var/mob/living/simple_animal/S = speaker - if(S.speak && S.speak.len) - message = pick(S.speak) - else - return + if(language) + message = language.scramble(message) else - if(language) - message = language.scramble(message) - else - message = stars(message) + message = stars(message) if(hard_to_hear) message = stars(message) diff --git a/code/modules/mob/holder.dm b/code/modules/mob/holder.dm index 3779b7075f..25ee7c64be 100644 --- a/code/modules/mob/holder.dm +++ b/code/modules/mob/holder.dm @@ -23,10 +23,10 @@ var/list/holder_mob_icon_cache = list() /obj/item/weapon/holder/New() ..() - processing_objects.Add(src) + START_PROCESSING(SSobj, src) /obj/item/weapon/holder/Destroy() - processing_objects.Remove(src) + STOP_PROCESSING(SSobj, src) return ..() /obj/item/weapon/holder/process() diff --git a/code/modules/mob/language/generic.dm b/code/modules/mob/language/generic.dm index 40fe94b7f5..5a46a72038 100644 --- a/code/modules/mob/language/generic.dm +++ b/code/modules/mob/language/generic.dm @@ -18,6 +18,9 @@ // if you make a loud noise (screams etc), you'll be heard from 4 tiles over instead of two return (copytext(message, length(message)) == "!") ? 4 : 2 +/datum/language/noise/can_speak_special(var/mob/speaker) + return TRUE //Audible emotes + // 'basic' language; spoken by default. /datum/language/common name = LANGUAGE_GALCOM @@ -136,3 +139,76 @@ /datum/language/sign/can_speak_special(var/mob/speaker) // TODO: If ever we make external organs assist languages, convert this over to the new format var/obj/item/organ/external/hand/hands = locate() in speaker //you can't sign without hands return (hands || !iscarbon(speaker)) + +// Silly language for those times when you try to talk a languague you normally can't +/datum/language/gibberish + name = LANGUAGE_GIBBERISH + desc = "A completely incomprehensible language." + signlang_verb = list("flails") + speech_verb = "spews" + whisper_verb = "mumbles" + exclaim_verb = "shrieks" + colour = "attack" + key = "r" // Radda radda radda + flags = RESTRICTED|NONGLOBAL + machine_understands = 0 + syllables = list ( + "radda", "fea","vea","vei","veh","vee","feh","fa","soa","su","sua","sou","se","seh","twa","twe","twi", + "ahm","lea","lee","nae","nah","pa","pau","fae","fai","soh","mou","ahe","ll","ea","ai","thi", + "hie","zei","zie","ize","ehy","uy","oya","dor","di","ja","ej","er","um","in","qu","is","re", + "nt","ti","us","it","en","at","tu","te","ri","es","et","ra","ta","an","ni","li","on","or","se", + "am","ae","ia","di","ue","em","ar","ui","st","si","de","ci","iu","ne","pe","co","os","ur","ru", + "gra","ba","ba","breh","bra","rah","dur","ra","ro","gro","go","ber","bar","geh","heh", "gra", + "a", "ai", "an", "ang", "ao", "ba", "bai", "ban", "bang", "bao", "bei", "ben", "beng", "bi", "bian", "biao", + "bie", "bin", "bing", "bo", "bu", "ca", "cai", "can", "cang", "cao", "ce", "cei", "cen", "ceng", "cha", "chai", + "chan", "chang", "chao", "che", "chen", "cheng", "chi", "chong", "chou", "chu", "chua", "chuai", "chuan", "chuang", "chui", "chun", + "chuo", "ci", "cong", "cou", "cu", "cuan", "cui", "cun", "cuo", "da", "dai", "dan", "dang", "dao", "de", "dei", + "den", "deng", "di", "dian", "diao", "die", "ding", "diu", "dong", "dou", "du", "duan", "dui", "dun", "duo", "e", + "ei", "en", "er", "fa", "fan", "fang", "fei", "fen", "feng", "fo", "fou", "fu", "ga", "gai", "gan", "gang", + "gao", "ge", "gei", "gen", "geng", "gong", "gou", "gu", "gua", "guai", "guan", "guang", "gui", "gun", "guo", "ha", + "hai", "han", "hang", "hao", "he", "hei", "hen", "heng", "hm", "hng", "hong", "hou", "hu", "hua", "huai", "huan", + "huang", "hui", "hun", "huo", "ji", "jia", "jian", "jiang", "jiao", "jie", "jin", "jing", "jiong", "jiu", "ju", "juan", + "jue", "jun", "ka", "kai", "kan", "kang", "kao", "ke", "kei", "ken", "keng", "kong", "kou", "ku", "kua", "kuai", + "kuan", "kuang", "kui", "kun", "kuo", "la", "lai", "lan", "lang", "lao", "le", "lei", "leng", "li", "lia", "lian", + "liang", "liao", "lie", "lin", "ling", "liu", "long", "lou", "lu", "luan", "lun", "luo", "ma", "mai", "man", "mang", + "mao", "me", "mei", "men", "meng", "mi", "mian", "miao", "mie", "min", "ming", "miu", "mo", "mou", "mu", "na", + "nai", "nan", "nang", "nao", "ne", "nei", "nen", "neng", "ng", "ni", "nian", "niang", "niao", "nie", "nin", "ning", + "niu", "nong", "nou", "nu", "nuan", "nuo", "o", "ou", "pa", "pai", "pan", "pang", "pao", "pei", "pen", "peng", + "pi", "pian", "piao", "pie", "pin", "ping", "po", "pou", "pu", "qi", "qia", "qian", "qiang", "qiao", "qie", "qin", + "qing", "qiong", "qiu", "qu", "quan", "que", "qun", "ran", "rang", "rao", "re", "ren", "reng", "ri", "rong", "rou", + "ru", "rua", "ruan", "rui", "run", "ruo", "sa", "sai", "san", "sang", "sao", "se", "sei", "sen", "seng", "sha", + "shai", "shan", "shang", "shao", "she", "shei", "shen", "sheng", "shi", "shou", "shu", "shua", "shuai", "shuan", "shuang", "shui", + "shun", "shuo", "si", "song", "sou", "su", "suan", "sui", "sun", "suo", "ta", "tai", "tan", "tang", "tao", "te", + "teng", "ti", "tian", "tiao", "tie", "ting", "tong", "tou", "tu", "tuan", "tui", "tun", "tuo", "wa", "wai", "wan", + "wang", "wei", "wen", "weng", "wo", "wu", "xi", "xia", "xian", "xiang", "xiao", "xie", "xin", "xing", "xiong", "xiu", + "xu", "xuan", "xue", "xun", "ya", "yan", "yang", "yao", "ye", "yi", "yin", "ying", "yong", "you", "yu", "yuan", + "yue", "yun", "za", "zai", "zan", "zang", "zao", "ze", "zei", "zen", "zeng", "zha", "zhai", "zhan", "zhang", "zhao", + "zhe", "zhei", "zhen", "zheng", "zhi", "zhong", "zhou", "zhu", "zhua", "zhuai", "zhuan", "zhuang", "zhui", "zhun", "zhuo", "zi", + "zong", "zou", "zuan", "zui", "zun", "zuo", "zu", "al", "an", "ar", "as", "at", "ea", "ed", "en", "er", "es", "ha", "he", "hi", "in", "is", "it", + "le", "me", "nd", "ne", "ng", "nt", "on", "or", "ou", "re", "se", "st", "te", "th", "ti", "to", + "ve", "wa", "all", "and", "are", "but", "ent", "era", "ere", "eve", "for", "had", "hat", "hen", "her", "hin", + "his", "ing", "ion", "ith", "not", "ome", "oul", "our", "sho", "ted", "ter", "tha", "the", "thi", + "al", "an", "ar", "as", "at", "ea", "ed", "en", "er", "es", "ha", "he", "hi", "in", "is", "it", + "le", "me", "nd", "ne", "ng", "nt", "on", "or", "ou", "re", "se", "st", "te", "th", "ti", "to", + "ve", "wa", "all", "and", "are", "but", "ent", "era", "ere", "eve", "for", "had", "hat", "hen", "her", "hin", + "his", "ing", "ion", "ith", "not", "ome", "oul", "our", "sho", "ted", "ter", "tha", "the", "thi", + "al", "an", "ar", "as", "at", "ea", "ed", "en", "er", "es", "ha", "he", "hi", "in", "is", "it", + "le", "me", "nd", "ne", "ng", "nt", "on", "or", "ou", "re", "se", "st", "te", "th", "ti", "to", + "ve", "wa", "all", "and", "are", "but", "ent", "era", "ere", "eve", "for", "had", "hat", "hen", "her", "hin", + "his", "ing", "ion", "ith", "not", "ome", "oul", "our", "sho", "ted", "ter", "tha", "the", "thi", + "al", "an", "ar", "as", "at", "ea", "ed", "en", "er", "es", "ha", "he", "hi", "in", "is", "it", + "le", "me", "nd", "ne", "ng", "nt", "on", "or", "ou", "re", "se", "st", "te", "th", "ti", "to", + "ve", "wa", "all", "and", "are", "but", "ent", "era", "ere", "eve", "for", "had", "hat", "hen", "her", "hin", + "his", "ing", "ion", "ith", "not", "ome", "oul", "our", "sho", "ted", "ter", "tha", "the", "thi", + "al", "an", "ar", "as", "at", "ea", "ed", "en", "er", "es", "ha", "he", "hi", "in", "is", "it", + "le", "me", "nd", "ne", "ng", "nt", "on", "or", "ou", "re", "se", "st", "te", "th", "ti", "to", + "ve", "wa", "all", "and", "are", "but", "ent", "era", "ere", "eve", "for", "had", "hat", "hen", "her", "hin", + "his", "ing", "ion", "ith", "not", "ome", "oul", "our", "sho", "ted", "ter", "tha", "the", "thi", + "al", "an", "ar", "as", "at", "ea", "ed", "en", "er", "es", "ha", "he", "hi", "in", "is", "it", + "le", "me", "nd", "ne", "ng", "nt", "on", "or", "ou", "re", "se", "st", "te", "th", "ti", "to", + "ve", "wa", "all", "and", "are", "but", "ent", "era", "ere", "eve", "for", "had", "hat", "hen", "her", "hin", + "his", "ing", "ion", "ith", "not", "ome", "oul", "our", "sho", "ted", "ter", "tha", "the", "thi" + ) + +/datum/language/gibberish/can_speak_special(var/mob/speaker) + return TRUE //Anyone can speak gibberish \ No newline at end of file diff --git a/code/modules/mob/language/language.dm b/code/modules/mob/language/language.dm index 66e0e5e0f0..4822f46a16 100644 --- a/code/modules/mob/language/language.dm +++ b/code/modules/mob/language/language.dm @@ -32,7 +32,7 @@ for(var/i = 0;i0;x--) + for(var/x = rand(FLOOR(syllable_count/syllable_divisor, 1),syllable_count);x>0;x--) new_name += pick(syllables) full_name += " [capitalize(lowertext(new_name))]" @@ -134,14 +134,15 @@ /datum/language/proc/can_speak_special(var/mob/speaker) . = TRUE - if(ishuman(speaker)) - var/mob/living/carbon/human/H = speaker - if(src.name in H.species.assisted_langs) - . = FALSE - var/obj/item/organ/internal/voicebox/vox = locate() in H.internal_organs // Only voiceboxes for now. Maybe someday it'll include other organs, but I'm not that clever - if(vox) - if(!vox.is_broken() && (src in vox.assists_languages)) - . = TRUE + if(name != "Noise") // Audible Emotes + if(ishuman(speaker)) + var/mob/living/carbon/human/H = speaker + if(src.name in H.species.assisted_langs) + . = FALSE + var/obj/item/organ/internal/voicebox/vox = locate() in H.internal_organs // Only voiceboxes for now. Maybe someday it'll include other organs, but I'm not that clever + if(vox) + if(!vox.is_broken() && (src in vox.assists_languages)) + . = TRUE // Language handling. /mob/proc/add_language(var/language) @@ -172,10 +173,20 @@ log_debug("[src] attempted to speak a null language.") return 0 + if(speaking == all_languages["Noise"]) + return 1 + if (only_species_language && speaking != all_languages[species_language]) return 0 - return (speaking.can_speak_special(src) && (universal_speak || (speaking && (speaking.flags & INNATE)) || speaking in src.languages)) + if(speaking.can_speak_special(src)) + if(universal_speak) + return 1 + if(speaking && (speaking.flags & INNATE)) + return 1 + if(speaking in src.languages) + return 1 + return 0 /mob/proc/get_language_prefix() if(client && client.prefs.language_prefixes && client.prefs.language_prefixes.len) diff --git a/code/modules/mob/language/outsider.dm b/code/modules/mob/language/outsider.dm index 79fb113f10..04d3f9cfd2 100644 --- a/code/modules/mob/language/outsider.dm +++ b/code/modules/mob/language/outsider.dm @@ -27,16 +27,16 @@ /datum/language/corticalborer/broadcast(var/mob/living/speaker,var/message,var/speaker_mask) - var/mob/living/simple_animal/borer/B + var/mob/living/simple_mob/animal/borer/B if(istype(speaker,/mob/living/carbon)) var/mob/living/carbon/M = speaker B = M.has_brain_worms() - else if(istype(speaker,/mob/living/simple_animal/borer)) + else if(istype(speaker,/mob/living/simple_mob/animal/borer)) B = speaker if(B) - speaker_mask = B.truename + speaker_mask = B.true_name ..(speaker,message,speaker_mask) /datum/language/vox diff --git a/code/modules/mob/language/station.dm b/code/modules/mob/language/station.dm index aebb7f4675..096fae5fda 100644 --- a/code/modules/mob/language/station.dm +++ b/code/modules/mob/language/station.dm @@ -137,7 +137,7 @@ var/list/first_names = file2list('config/names/first_name_skrell.txt') var/list/last_names = file2list('config/names/last_name_skrell.txt') return "[pick(first_names)] [pick(last_names)]" - + /datum/language/human name = LANGUAGE_SOL_COMMON desc = "A bastardized hybrid of many languages, including Chinese, English, French, and more; it is the common language of the Sol system." @@ -202,6 +202,20 @@ /datum/language/seromi/get_random_name(gender) return ..(gender, 1, 4, 1.5) + +/datum/language/zaddat + name = LANGUAGE_ZADDAT + desc = "A harsh buzzing language created by the Zaddat following their exodus from their homeworld." + speech_verb = "buzzes" + ask_verb = "buzzes" + exclaim_verb = "croaks" + colour = "zaddat" + key = "z" + flags = WHITELISTED + space_chance = 20 + syllables = list("z", "dz", "i", "iv", "ti", "az", "hix", "xo", "av", "xo", "x", "za", "at", "vi") + + //Syllable Lists /* This list really long, mainly because I can't make up my mind about which mandarin syllables should be removed, diff --git a/code/modules/mob/language/station_vr.dm b/code/modules/mob/language/station_vr.dm index 9928590214..d4bd3b0941 100644 --- a/code/modules/mob/language/station_vr.dm +++ b/code/modules/mob/language/station_vr.dm @@ -102,5 +102,7 @@ flags = 0 /datum/language/seromi flags = 0 +/datum/language/zaddat + flags = 0 /datum/language/gutter machine_understands = FALSE diff --git a/code/modules/mob/living/bot/bot.dm b/code/modules/mob/living/bot/bot.dm index 12715a4c2b..ff35a795b5 100644 --- a/code/modules/mob/living/bot/bot.dm +++ b/code/modules/mob/living/bot/bot.dm @@ -44,6 +44,8 @@ ..() update_icons() + default_language = all_languages[LANGUAGE_GALCOM] + botcard = new /obj/item/weapon/card/id(src) botcard.access = botcard_access.Copy() @@ -52,7 +54,7 @@ access_scanner.req_one_access = req_one_access.Copy() // Make sure mapped in units start turned on. -/mob/living/bot/initialize() +/mob/living/bot/Initialize() . = ..() if(on) turn_on() // Update lights and other stuff diff --git a/code/modules/mob/living/bot/ed209bot.dm b/code/modules/mob/living/bot/ed209bot.dm index 7c709bc165..b8f1c85485 100644 --- a/code/modules/mob/living/bot/ed209bot.dm +++ b/code/modules/mob/living/bot/ed209bot.dm @@ -68,8 +68,9 @@ playsound(loc, emagged ? 'sound/weapons/Laser.ogg' : 'sound/weapons/Taser.ogg', 50, 1) var/obj/item/projectile/P = new projectile(loc) - P.launch(A) - return + P.firer = src + P.old_style_target(A) + P.fire() // Assembly diff --git a/code/modules/mob/living/bot/secbot.dm b/code/modules/mob/living/bot/secbot.dm index ba8c0945f0..3b2d8eb11e 100644 --- a/code/modules/mob/living/bot/secbot.dm +++ b/code/modules/mob/living/bot/secbot.dm @@ -24,8 +24,7 @@ var/awaiting_surrender = 0 var/can_next_insult = 0 // Uses world.time var/stun_strength = 60 // For humans. - var/xeno_stun_strength = 0 // For simple mobs. - var/xeno_harm_strength = 15 // Ditto. + var/xeno_harm_strength = 15 // How hard to hit simple_mobs. var/baton_glow = "#FF6A00" var/used_weapon = /obj/item/weapon/melee/baton //Weapon used by the bot @@ -53,12 +52,13 @@ desc = "A little security robot, with a slime baton subsituted for the regular one." default_icon_state = "slimesecbot" stun_strength = 10 // Slimebatons aren't meant for humans. - xeno_stun_strength = 5 - xeno_harm_strength = 9 + + xeno_harm_strength = 9 // Weaker than regular slimesky but they can stun. baton_glow = "#33CCFF" req_one_access = list(access_research, access_robotics) botcard_access = list(access_research, access_robotics, access_xenobiology, access_xenoarch, access_tox, access_tox_storage, access_maint_tunnels) used_weapon = /obj/item/weapon/melee/baton/slime + var/xeno_stun_strength = 5 // How hard to slimebatoned()'d naughty slimes. 5 works out to 2 discipline and 5 weaken. /mob/living/bot/secbot/slime/slimesky name = "Doctor Slimesky" @@ -215,7 +215,7 @@ else if(declare_arrests) var/action = arrest_type ? "detaining" : "arresting" - if(istype(target, /mob/living/simple_animal)) + if(istype(target, /mob/living/simple_mob)) action = "fighting" global_announcer.autosay("[src] is [action] a level [threat] [action != "fighting" ? "suspect" : "threat"] [target_name(target)] in [get_area(src)].", "[src]", "Security") UnarmedAttack(target) @@ -269,9 +269,8 @@ C.handcuffed = new /obj/item/weapon/handcuffs(C) C.update_inv_handcuffed() busy = 0 - else if(istype(M, /mob/living/simple_animal)) - var/mob/living/simple_animal/S = M - S.Weaken(xeno_stun_strength) + else if(istype(M, /mob/living/simple_mob)) + var/mob/living/simple_mob/S = M S.adjustBruteLoss(xeno_harm_strength) do_attack_animation(M) playsound(loc, "swing_hit", 50, 1, -1) @@ -286,9 +285,9 @@ /mob/living/bot/secbot/slime/UnarmedAttack(var/mob/living/L, var/proximity) ..() - if(istype(L, /mob/living/simple_animal/slime)) - var/mob/living/simple_animal/slime/S = L - S.adjust_discipline(2) + if(istype(L, /mob/living/simple_mob/slime/xenobio)) + var/mob/living/simple_mob/slime/xenobio/S = L + S.slimebatoned(src, xeno_stun_strength) diff --git a/code/modules/mob/living/carbon/alien/alien.dm b/code/modules/mob/living/carbon/alien/alien.dm index 5e416755e0..42f7dece0c 100644 --- a/code/modules/mob/living/carbon/alien/alien.dm +++ b/code/modules/mob/living/carbon/alien/alien.dm @@ -20,7 +20,8 @@ var/adult_name var/instance_num -/mob/living/carbon/alien/New() +/mob/living/carbon/alien/Initialize() + . = ..() time_of_birth = world.time @@ -37,8 +38,6 @@ gender = NEUTER - ..() - /mob/living/carbon/alien/u_equip(obj/item/W as obj) return diff --git a/code/modules/mob/living/carbon/alien/diona/diona.dm b/code/modules/mob/living/carbon/alien/diona/diona.dm index 5d497d0a08..3d09887f34 100644 --- a/code/modules/mob/living/carbon/alien/diona/diona.dm +++ b/code/modules/mob/living/carbon/alien/diona/diona.dm @@ -20,9 +20,8 @@ holder_type = /obj/item/weapon/holder/diona var/obj/item/hat -/mob/living/carbon/alien/diona/New() - - ..() +/mob/living/carbon/alien/diona/Initialize() + . = ..() species = all_species[SPECIES_DIONA] add_language(LANGUAGE_ROOTGLOBAL) add_language(LANGUAGE_GALCOM) diff --git a/code/modules/mob/living/carbon/alien/diona/diona_powers.dm b/code/modules/mob/living/carbon/alien/diona/diona_powers.dm index 585b421c7f..aea0054418 100644 --- a/code/modules/mob/living/carbon/alien/diona/diona_powers.dm +++ b/code/modules/mob/living/carbon/alien/diona/diona_powers.dm @@ -63,5 +63,5 @@ if(istype(M)) for(var/atom/A in M.contents) - if(istype(A,/mob/living/simple_animal/borer) || istype(A,/obj/item/weapon/holder)) + if(istype(A,/mob/living/simple_mob/animal/borer) || istype(A,/obj/item/weapon/holder)) return diff --git a/code/modules/mob/living/carbon/alien/larva/larva.dm b/code/modules/mob/living/carbon/alien/larva/larva.dm index 7870c710c7..e39f66c479 100644 --- a/code/modules/mob/living/carbon/alien/larva/larva.dm +++ b/code/modules/mob/living/carbon/alien/larva/larva.dm @@ -9,7 +9,7 @@ health = 25 faction = "xeno" -/mob/living/carbon/alien/larva/New() - ..() +/mob/living/carbon/alien/larva/Initialize() + . = ..() add_language("Xenomorph") //Bonus language. internal_organs |= new /obj/item/organ/internal/xenos/hivenode(src) diff --git a/code/modules/mob/living/carbon/brain/MMI.dm b/code/modules/mob/living/carbon/brain/MMI.dm index 1624d6941d..128116b151 100644 --- a/code/modules/mob/living/carbon/brain/MMI.dm +++ b/code/modules/mob/living/carbon/brain/MMI.dm @@ -285,6 +285,7 @@ /obj/item/device/mmi/digital/robot name = "robotic intelligence circuit" desc = "The pinnacle of artifical intelligence which can be achieved using classical computer science." + catalogue_data = list(/datum/category_item/catalogue/technology/drone/drones) icon = 'icons/obj/module.dmi' icon_state = "mainboard" w_class = ITEMSIZE_NORMAL @@ -306,6 +307,7 @@ /obj/item/device/mmi/digital/posibrain name = "positronic brain" desc = "A cube of shining metal, four inches to a side and covered in shallow grooves." + catalogue_data = list(/datum/category_item/catalogue/technology/positronics) icon = 'icons/obj/assemblies.dmi' icon_state = "posibrain" w_class = ITEMSIZE_NORMAL @@ -337,3 +339,16 @@ ..() src.brainmob.name = "[pick(list("PBU","HIU","SINA","ARMA","OSI"))]-[rand(100, 999)]" src.brainmob.real_name = src.brainmob.name + +// This type shouldn't care about brainmobs. +/obj/item/device/mmi/inert + +// This is a 'fake' MMI that is used to let AIs control borg shells directly. +// This doesn't inherit from /digital because all that does is add ghost pulling capabilities, which this thing won't need. +/obj/item/device/mmi/inert/ai_remote + name = "\improper AI remote interface" + desc = "A sophisticated board which allows for an artificial intelligence to remotely control a synthetic chassis." + icon = 'icons/obj/module.dmi' + icon_state = "mainboard" + w_class = ITEMSIZE_NORMAL + origin_tech = list(TECH_ENGINEERING = 2, TECH_MATERIAL = 2, TECH_BLUESPACE = 2, TECH_DATA = 3) \ No newline at end of file diff --git a/code/modules/mob/living/carbon/brain/brain.dm b/code/modules/mob/living/carbon/brain/brain.dm index 7165c36fa8..a75deb25d0 100644 --- a/code/modules/mob/living/carbon/brain/brain.dm +++ b/code/modules/mob/living/carbon/brain/brain.dm @@ -10,45 +10,45 @@ icon_state = "brain1" no_vore = TRUE //VOREStation Edit - PLEASE. lol. - New() - var/datum/reagents/R = new/datum/reagents(1000) - reagents = R - R.my_atom = src - ..() +/mob/living/carbon/brain/Initialize() + . = ..() + var/datum/reagents/R = new/datum/reagents(1000) + reagents = R + R.my_atom = src - Destroy() - if(key) //If there is a mob connected to this thing. Have to check key twice to avoid false death reporting. - if(stat!=DEAD) //If not dead. - death(1) //Brains can die again. AND THEY SHOULD AHA HA HA HA HA HA - ghostize() //Ghostize checks for key so nothing else is necessary. - return ..() +/mob/living/carbon/brain/Destroy() + if(key) //If there is a mob connected to this thing. Have to check key twice to avoid false death reporting. + if(stat!=DEAD) //If not dead. + death(1) //Brains can die again. AND THEY SHOULD AHA HA HA HA HA HA + ghostize() //Ghostize checks for key so nothing else is necessary. + return ..() - say_understands(var/other)//Goddamn is this hackish, but this say code is so odd - if (istype(other, /mob/living/silicon/ai)) - if(!(container && istype(container, /obj/item/device/mmi))) - return 0 - else - return 1 - if (istype(other, /mob/living/silicon/decoy)) - if(!(container && istype(container, /obj/item/device/mmi))) - return 0 - else - return 1 - if (istype(other, /mob/living/silicon/pai)) - if(!(container && istype(container, /obj/item/device/mmi))) - return 0 - else - return 1 - if (istype(other, /mob/living/silicon/robot)) - if(!(container && istype(container, /obj/item/device/mmi))) - return 0 - else - return 1 - if (istype(other, /mob/living/carbon/human)) +/mob/living/carbon/brain/say_understands(var/other)//Goddamn is this hackish, but this say code is so odd + if (istype(other, /mob/living/silicon/ai)) + if(!(container && istype(container, /obj/item/device/mmi))) + return 0 + else return 1 - if (istype(other, /mob/living/simple_animal/slime)) + if (istype(other, /mob/living/silicon/decoy)) + if(!(container && istype(container, /obj/item/device/mmi))) + return 0 + else return 1 - return ..() + if (istype(other, /mob/living/silicon/pai)) + if(!(container && istype(container, /obj/item/device/mmi))) + return 0 + else + return 1 + if (istype(other, /mob/living/silicon/robot)) + if(!(container && istype(container, /obj/item/device/mmi))) + return 0 + else + return 1 + if (istype(other, /mob/living/carbon/human)) + return 1 + if (istype(other, /mob/living/simple_mob/slime)) + return 1 + return ..() /mob/living/carbon/brain/update_canmove() if(in_contents_of(/obj/mecha) || istype(loc, /obj/item/device/mmi)) diff --git a/code/modules/mob/living/carbon/brain/life.dm b/code/modules/mob/living/carbon/brain/life.dm index b631e8ae13..4ab220083d 100644 --- a/code/modules/mob/living/carbon/brain/life.dm +++ b/code/modules/mob/living/carbon/brain/life.dm @@ -76,7 +76,6 @@ if(ingested) ingested.metabolize() if(bloodstr) bloodstr.metabolize() - AdjustConfused(-1) // decrement dizziness counter, clamped to 0 if(resting) dizziness = max(0, dizziness - 5) diff --git a/code/modules/mob/living/carbon/carbon.dm b/code/modules/mob/living/carbon/carbon.dm index 01f74ac3b5..505821640d 100644 --- a/code/modules/mob/living/carbon/carbon.dm +++ b/code/modules/mob/living/carbon/carbon.dm @@ -1,4 +1,5 @@ -/mob/living/carbon/New() +/mob/living/carbon/Initialize() + . = ..() //setup reagent holders bloodstr = new/datum/reagents/metabolism/bloodstream(500, src) ingested = new/datum/reagents/metabolism/ingested(500, src) @@ -6,7 +7,6 @@ reagents = bloodstr if (!default_language && species_language) default_language = all_languages[species_language] - ..() /mob/living/carbon/Life() ..() @@ -348,12 +348,12 @@ if(alert(src,"You sure you want to sleep for a while?","Sleep","Yes","No") == "Yes") usr.sleeping = 20 //Short nap -/mob/living/carbon/Bump(var/atom/movable/AM, yes) - if(now_pushing || !yes) +/mob/living/carbon/Bump(atom/A) + if(now_pushing) return ..() - if(istype(AM, /mob/living/carbon) && prob(10)) - src.spread_disease_to(AM, "Contact") + if(istype(A, /mob/living/carbon) && prob(10)) + spread_disease_to(A, "Contact") /mob/living/carbon/cannot_use_vents() return @@ -364,7 +364,7 @@ stop_pulling() src << "You slipped on [slipped_on]!" playsound(src.loc, 'sound/misc/slip.ogg', 50, 1, -3) - Weaken(Floor(stun_duration/2)) + Weaken(FLOOR(stun_duration/2, 1)) return 1 /mob/living/carbon/proc/add_chemical_effect(var/effect, var/magnitude = 1) @@ -374,11 +374,15 @@ chem_effects[effect] = magnitude /mob/living/carbon/get_default_language() - if(default_language && can_speak(default_language)) - return default_language + if(default_language) + if(can_speak(default_language)) + return default_language + else + return all_languages[LANGUAGE_GIBBERISH] if(!species) return null + return species.default_language ? all_languages[species.default_language] : null /mob/living/carbon/proc/should_have_organ(var/organ_check) @@ -388,3 +392,8 @@ if(isSynthetic()) return 0 return !(species.flags & NO_PAIN) + +/mob/living/carbon/needs_to_breathe() + if(does_not_breathe) + return FALSE + return ..() diff --git a/code/modules/mob/living/carbon/carbon_defense.dm b/code/modules/mob/living/carbon/carbon_defense.dm index c9b2d6d3ff..cd59a549ec 100644 --- a/code/modules/mob/living/carbon/carbon_defense.dm +++ b/code/modules/mob/living/carbon/carbon_defense.dm @@ -69,7 +69,7 @@ var/damage_mod = 1 //presumably, if they are wearing a helmet that stops pressure effects, then it probably covers the throat as well var/obj/item/clothing/head/helmet = get_equipped_item(slot_head) - if(istype(helmet) && (helmet.body_parts_covered & HEAD) && (helmet.flags & STOPPRESSUREDAMAGE)) + if(istype(helmet) && (helmet.body_parts_covered & HEAD) && (helmet.min_pressure_protection != null)) // Both min- and max_pressure_protection must be set for it to function at all, so we can just check that one is set. //we don't do an armor_check here because this is not an impact effect like a weapon swung with momentum, that either penetrates or glances off. damage_mod = 1.0 - (helmet.armor["melee"]/100) diff --git a/code/modules/mob/living/carbon/carbon_powers.dm b/code/modules/mob/living/carbon/carbon_powers.dm index f1360504ef..337f0b0ff1 100644 --- a/code/modules/mob/living/carbon/carbon_powers.dm +++ b/code/modules/mob/living/carbon/carbon_powers.dm @@ -5,7 +5,7 @@ set name = "Release Control" set desc = "Release control of your host's body." - var/mob/living/simple_animal/borer/B = has_brain_worms() + var/mob/living/simple_mob/animal/borer/B = has_brain_worms() if(B && B.host_brain) src << "You withdraw your probosci, releasing control of [B.host_brain]" @@ -25,7 +25,7 @@ set name = "Torment host" set desc = "Punish your host with agony." - var/mob/living/simple_animal/borer/B = has_brain_worms() + var/mob/living/simple_mob/animal/borer/B = has_brain_worms() if(!B) return @@ -43,7 +43,7 @@ set name = "Reproduce" set desc = "Spawn several young." - var/mob/living/simple_animal/borer/B = has_brain_worms() + var/mob/living/simple_mob/animal/borer/B = has_brain_worms() if(!B) return @@ -55,7 +55,7 @@ B.has_reproduced = 1 vomit(1) - new /mob/living/simple_animal/borer(get_turf(src)) + new /mob/living/simple_mob/animal/borer(get_turf(src)) else src << "You do not have enough chemicals stored to reproduce." diff --git a/code/modules/mob/living/carbon/human/death.dm b/code/modules/mob/living/carbon/human/death.dm index 24a5bac586..2244cdac51 100644 --- a/code/modules/mob/living/carbon/human/death.dm +++ b/code/modules/mob/living/carbon/human/death.dm @@ -61,11 +61,11 @@ //Handle brain slugs. var/obj/item/organ/external/Hd = get_organ(BP_HEAD) - var/mob/living/simple_animal/borer/B + var/mob/living/simple_mob/animal/borer/B if(Hd) for(var/I in Hd.implants) - if(istype(I,/mob/living/simple_animal/borer)) + if(istype(I,/mob/living/simple_mob/animal/borer)) B = I if(B) if(!B.ckey && ckey && B.controlling) diff --git a/code/modules/mob/living/carbon/human/descriptors/_descriptors.dm b/code/modules/mob/living/carbon/human/descriptors/_descriptors.dm index d2944cc0cb..815914f40c 100644 --- a/code/modules/mob/living/carbon/human/descriptors/_descriptors.dm +++ b/code/modules/mob/living/carbon/human/descriptors/_descriptors.dm @@ -34,7 +34,7 @@ chargen_value_descriptors = list() for(var/i = 1 to LAZYLEN(standalone_value_descriptors)) chargen_value_descriptors[standalone_value_descriptors[i]] = i - default_value = ceil(LAZYLEN(standalone_value_descriptors) * 0.5) + default_value = CEILING(LAZYLEN(standalone_value_descriptors) * 0.5, 1) ..() /datum/mob_descriptor/proc/get_third_person_message_start(var/datum/gender/my_gender) @@ -99,10 +99,10 @@ /datum/mob_descriptor/proc/get_comparative_value_string_smaller(var/value, var/datum/gender/my_gender, var/datum/gender/other_gender) var/maxval = LAZYLEN(comparative_value_descriptors_smaller) - value = Clamp(ceil(value * maxval), 1, maxval) + value = CLAMP(CEILING(value * maxval, 1), 1, maxval) return comparative_value_descriptors_smaller[value] /datum/mob_descriptor/proc/get_comparative_value_string_larger(var/value, var/datum/gender/my_gender, var/datum/gender/other_gender) var/maxval = LAZYLEN(comparative_value_descriptors_larger) - value = Clamp(ceil(value * maxval), 1, maxval) + value = CLAMP(CEILING(value * maxval, 1), 1, maxval) return comparative_value_descriptors_larger[value] diff --git a/code/modules/mob/living/carbon/human/human.dm b/code/modules/mob/living/carbon/human/human.dm index 445168777d..9af501a92e 100644 --- a/code/modules/mob/living/carbon/human/human.dm +++ b/code/modules/mob/living/carbon/human/human.dm @@ -20,8 +20,7 @@ var/active_regen = FALSE //Used for the regenerate proc in human_powers.dm var/active_regen_delay = 300 -/mob/living/carbon/human/New(var/new_loc, var/new_species = null) - +/mob/living/carbon/human/Initialize(mapload, var/new_species = null) if(!dna) dna = new /datum/dna(null) // Species name is handled by set_species() @@ -42,7 +41,7 @@ human_mob_list |= src - ..() + . = ..() hide_underwear.Cut() for(var/category in global_underwear.categories_by_name) @@ -58,7 +57,7 @@ for(var/organ in organs) qdel(organ) QDEL_NULL(nif) //VOREStation Add - QDEL_NULL_LIST(vore_organs) //VOREStation Add + QDEL_LIST_NULL(vore_organs) //VOREStation Add return ..() /mob/living/carbon/human/Stat() diff --git a/code/modules/mob/living/carbon/human/human_defense.dm b/code/modules/mob/living/carbon/human/human_defense.dm index c5f259e0b4..57cb8d0f58 100644 --- a/code/modules/mob/living/carbon/human/human_defense.dm +++ b/code/modules/mob/living/carbon/human/human_defense.dm @@ -135,6 +135,27 @@ emp_act return siemens_coefficient +// Similar to above but is for the mob's overall protection, being the average of all slots. +/mob/living/carbon/human/proc/get_siemens_coefficient_average() + var/siemens_value = 0 + var/total = 0 + for(var/organ_name in organs_by_name) + if(organ_name in organ_rel_size) + var/obj/item/organ/external/organ = organs_by_name[organ_name] + if(organ) + var/weight = organ_rel_size[organ_name] + siemens_value += get_siemens_coefficient_organ(organ) * weight + total += weight + + if(fire_stacks < 0) // Water makes you more conductive. + siemens_value *= 1.5 + + return (siemens_value/max(total, 1)) + +// Returns a number between 0 to 1, with 1 being total protection. +/mob/living/carbon/human/get_shock_protection() + return between(0, 1-get_siemens_coefficient_average(), 1) + // Returns a list of clothing that is currently covering def_zone. /mob/living/carbon/human/proc/get_clothing_list_organ(var/obj/item/organ/external/def_zone, var/type) var/list/results = list() @@ -542,6 +563,20 @@ emp_act return perm +// This is for preventing harm by being covered in water, which only prometheans need to deal with. +// This is not actually used for now since the code for prometheans gets changed a lot. +/mob/living/carbon/human/get_water_protection() + var/protection = ..() // Todo: Replace with species var later. + if(protection == 1) // No point doing permeability checks if it won't matter. + return protection + // Wearing clothing with a low permeability_coefficient can protect from water. + + var/converted_protection = 1 - protection + var/perm = reagent_permeability() + converted_protection *= perm + return 1-converted_protection + + /mob/living/carbon/human/shank_attack(obj/item/W, obj/item/weapon/grab/G, mob/user, hit_zone) if(!..()) diff --git a/code/modules/mob/living/carbon/human/human_helpers.dm b/code/modules/mob/living/carbon/human/human_helpers.dm index 2589b1c9da..ec10dc90f8 100644 --- a/code/modules/mob/living/carbon/human/human_helpers.dm +++ b/code/modules/mob/living/carbon/human/human_helpers.dm @@ -32,6 +32,28 @@ return list(HUMAN_EATING_BLOCKED_MOUTH, blocked) return list(HUMAN_EATING_NO_ISSUE) +/mob/living/carbon/human/proc/get_coverage() + var/list/coverage = list() + for(var/obj/item/clothing/C in src) + if(item_is_in_hands(C)) + continue + if(C.body_parts_covered & HEAD) + coverage += list(organs_by_name[BP_HEAD]) + if(C.body_parts_covered & UPPER_TORSO) + coverage += list(organs_by_name[BP_TORSO]) + if(C.body_parts_covered & LOWER_TORSO) + coverage += list(organs_by_name[BP_GROIN]) + if(C.body_parts_covered & LEGS) + coverage += list(organs_by_name[BP_L_LEG], organs_by_name[BP_R_LEG]) + if(C.body_parts_covered & ARMS) + coverage += list(organs_by_name[BP_R_ARM], organs_by_name[BP_L_ARM]) + if(C.body_parts_covered & FEET) + coverage += list(organs_by_name[BP_L_FOOT], organs_by_name[BP_R_FOOT]) + if(C.body_parts_covered & HANDS) + coverage += list(organs_by_name[BP_L_HAND], organs_by_name[BP_R_HAND]) + return coverage + + //This is called when we want different types of 'cloaks' to stop working, e.g. when attacking. /mob/living/carbon/human/break_cloak() if(mind && mind.changeling) //Changeling visible camo @@ -42,6 +64,16 @@ if(cloaker.active) cloaker.deactivate() +/mob/living/carbon/human/is_cloaked() + if(mind && mind.changeling && mind.changeling.cloaked) // Ling camo. + return TRUE + else if(istype(back, /obj/item/weapon/rig)) //Ninja cloak + var/obj/item/weapon/rig/suit = back + for(var/obj/item/rig_module/stealth_field/cloaker in suit.installed_modules) + if(cloaker.active) + return TRUE + return ..() + /mob/living/carbon/human/get_ear_protection() var/sum = 0 if(istype(l_ear, /obj/item/clothing/ears)) diff --git a/code/modules/mob/living/carbon/human/human_movement.dm b/code/modules/mob/living/carbon/human/human_movement.dm index c92be26380..187ebd4e1e 100644 --- a/code/modules/mob/living/carbon/human/human_movement.dm +++ b/code/modules/mob/living/carbon/human/human_movement.dm @@ -1,9 +1,9 @@ +#define HUMAN_LOWEST_SLOWDOWN -3 + /mob/living/carbon/human/movement_delay() var/tally = 0 - var/item_tally = 0 - if(species.slowdown) tally = species.slowdown @@ -13,11 +13,11 @@ handle_embedded_objects() //Moving with objects stuck in you can cause bad times. if(force_max_speed) - return -3 + return HUMAN_LOWEST_SLOWDOWN for(var/datum/modifier/M in modifiers) if(!isnull(M.haste) && M.haste == TRUE) - return -3 // Returning -1 will actually result in a slowdown for Teshari. + return HUMAN_LOWEST_SLOWDOWN // Returning -1 will actually result in a slowdown for Teshari. if(!isnull(M.slowdown)) tally += M.slowdown @@ -58,9 +58,6 @@ else if(E.status & ORGAN_BROKEN) tally += 1.5 else - if(shoes) - item_tally += shoes.slowdown - for(var/organ_name in list(BP_L_LEG, BP_R_LEG, BP_L_FOOT, BP_R_FOOT)) var/obj/item/organ/external/E = get_organ(organ_name) if(!E || E.is_stump()) @@ -87,39 +84,20 @@ // Turf related slowdown var/turf/T = get_turf(src) - if(T && T.movement_cost) - var/turf_move_cost = T.movement_cost - if(istype(T, /turf/simulated/floor/water)) - if(species.water_movement) - turf_move_cost = Clamp(-3, turf_move_cost + species.water_movement, 15) - if(shoes) - var/obj/item/clothing/shoes/feet = shoes - if(feet.water_speed) - turf_move_cost = Clamp(-3, turf_move_cost + feet.water_speed, 15) - tally += turf_move_cost - if(istype(T, /turf/simulated/floor/outdoors/snow)) - if(species.snow_movement) - turf_move_cost = Clamp(-3, turf_move_cost + species.snow_movement, 15) - if(shoes) - var/obj/item/clothing/shoes/feet = shoes - if(feet.water_speed) - turf_move_cost = Clamp(-3, turf_move_cost + feet.snow_speed, 15) - tally += turf_move_cost + tally += calculate_turf_slowdown(T) - // Loop through some slots, and add up their slowdowns. Shoes are handled below, unfortunately. - // Includes slots which can provide armor, the back slot, and suit storage. - for(var/obj/item/I in list(wear_suit, w_uniform, back, gloves, head, s_store)) - item_tally += I.slowdown - - // Hands are also included, to make the 'take off your armor instantly and carry it with you to go faster' trick no longer viable. - // This is done seperately to disallow negative numbers. - for(var/obj/item/I in list(r_hand, l_hand) ) - item_tally += max(I.slowdown, 0) + // Item related slowdown. + var/item_tally = calculate_item_encumbrance() // Dragging heavy objects will also slow you down, similar to above. - if(pulling && istype(pulling, /obj/item)) - var/obj/item/pulled = pulling - item_tally += max(pulled.slowdown, 0) + if(pulling) + if(istype(pulling, /obj/item)) + var/obj/item/pulled = pulling + item_tally += max(pulled.slowdown, 0) + else if(ishuman(pulling)) + var/mob/living/carbon/human/H = pulling + var/their_slowdown = max(H.calculate_item_encumbrance(), 1) + item_tally = max(item_tally, their_slowdown) // If our slowdown is less than theirs, then we become as slow as them (before species modifires). item_tally *= species.item_slowdown_mod @@ -135,7 +113,47 @@ tally = tally/2 tally -= chem_effects[CE_SPEEDBOOST] // give 'em a buff on top. - return max(-3, tally+config.human_delay) // Minimum return should be the same as force_max_speed + return max(HUMAN_LOWEST_SLOWDOWN, tally+config.human_delay) // Minimum return should be the same as force_max_speed + +// This calculates the amount of slowdown to receive from items worn. This does NOT include species modifiers. +// It is in a seperate place to avoid an infinite loop situation with dragging mobs dragging each other. +// Also its nice to have these things seperated. +/mob/living/carbon/human/proc/calculate_item_encumbrance() + if(!buckled && shoes) // Shoes can make you go faster. + . += shoes.slowdown + + // Loop through some slots, and add up their slowdowns. + // Includes slots which can provide armor, the back slot, and suit storage. + for(var/obj/item/I in list(wear_suit, w_uniform, back, gloves, head, s_store)) + . += I.slowdown + + // Hands are also included, to make the 'take off your armor instantly and carry it with you to go faster' trick no longer viable. + // This is done seperately to disallow negative numbers (so you can't hold shoes in your hands to go faster). + for(var/obj/item/I in list(r_hand, l_hand) ) + . += max(I.slowdown, 0) + +// Similar to above, but for turf slowdown. +/mob/living/carbon/human/proc/calculate_turf_slowdown(turf/T) + if(T && T.movement_cost) + var/turf_move_cost = T.movement_cost + if(istype(T, /turf/simulated/floor/water)) + if(species.water_movement) + turf_move_cost = CLAMP(HUMAN_LOWEST_SLOWDOWN, turf_move_cost + species.water_movement, 15) + if(shoes) + var/obj/item/clothing/shoes/feet = shoes + if(feet.water_speed) + turf_move_cost = CLAMP(HUMAN_LOWEST_SLOWDOWN, turf_move_cost + feet.water_speed, 15) + . += turf_move_cost + if(istype(T, /turf/simulated/floor/outdoors/snow)) + if(species.snow_movement) + turf_move_cost = CLAMP(HUMAN_LOWEST_SLOWDOWN, turf_move_cost + species.snow_movement, 15) + if(shoes) + var/obj/item/clothing/shoes/feet = shoes + if(feet.water_speed) + turf_move_cost = CLAMP(HUMAN_LOWEST_SLOWDOWN, turf_move_cost + feet.snow_speed, 15) + . += turf_move_cost + +#undef HUMAN_LOWEST_SLOWDOWN /mob/living/carbon/human/Process_Spacemove(var/check_drift = 0) //Can we act? diff --git a/code/modules/mob/living/carbon/human/human_powers.dm b/code/modules/mob/living/carbon/human/human_powers.dm index 66f5d2c713..809a5ef8ad 100644 --- a/code/modules/mob/living/carbon/human/human_powers.dm +++ b/code/modules/mob/living/carbon/human/human_powers.dm @@ -293,6 +293,7 @@ // Replace completely missing limbs. for(var/limb_type in src.species.has_limbs) var/obj/item/organ/external/E = src.organs_by_name[limb_type] + if(E && E.disfigured) E.disfigured = 0 if(E && (E.is_stump() || (E.status & (ORGAN_DESTROYED|ORGAN_DEAD|ORGAN_MUTATED)))) @@ -305,6 +306,10 @@ var/obj/item/organ/O = new limb_path(src) organ_data["descriptor"] = O.name to_chat(src, "You feel a slithering sensation as your [O.name] reform.") + + var/agony_to_apply = round(0.66 * O.max_damage) // 66% of the limb's health is converted into pain. + src.apply_damage(agony_to_apply, HALLOSS) + update_icons_body() active_regen = FALSE else diff --git a/code/modules/mob/living/carbon/human/human_resist.dm b/code/modules/mob/living/carbon/human/human_resist.dm new file mode 100644 index 0000000000..37e20d0d21 --- /dev/null +++ b/code/modules/mob/living/carbon/human/human_resist.dm @@ -0,0 +1,120 @@ +/mob/living/carbon/human/process_resist() + //drop && roll + if(on_fire && !buckled) + adjust_fire_stacks(-1.2) + Weaken(3) + spin(32,2) + visible_message( + "[src] rolls on the floor, trying to put themselves out!", + "You stop, drop, and roll!" + ) + sleep(30) + if(fire_stacks <= 0) + visible_message( + "[src] has successfully extinguished themselves!", + "You extinguish yourself." + ) + ExtinguishMob() + return TRUE + + if(handcuffed) + spawn() escape_handcuffs() + else if(legcuffed) + spawn() escape_legcuffs() + else if(wear_suit && istype(wear_suit, /obj/item/clothing/suit/straight_jacket)) + spawn() escape_straight_jacket() + else + ..() + +#define RESIST_ATTACK_DEFAULT 0 +#define RESIST_ATTACK_CLAWS 1 +#define RESIST_ATTACK_BITE 2 + +/mob/living/carbon/human/proc/escape_straight_jacket() + setClickCooldown(100) + + if(can_break_straight_jacket()) + break_straight_jacket() + return + + var/mob/living/carbon/human/H = src + var/obj/item/clothing/suit/straight_jacket/SJ = H.wear_suit + + var/breakouttime = SJ.resist_time // Configurable per-jacket! + + var/attack_type = RESIST_ATTACK_DEFAULT + + if(H.gloves && istype(H.gloves,/obj/item/clothing/gloves/gauntlets/rig)) + breakouttime /= 2 // Pneumatic force goes a long way. + else if(H.species.unarmed_types) + for(var/datum/unarmed_attack/U in H.species.unarmed_types) + if(istype(U, /datum/unarmed_attack/claws)) + breakouttime /= 1.5 + attack_type = RESIST_ATTACK_CLAWS + break + else if(istype(U, /datum/unarmed_attack/bite/sharp)) + breakouttime /= 1.25 + attack_type = RESIST_ATTACK_BITE + break + + switch(attack_type) + if(RESIST_ATTACK_DEFAULT) + visible_message( + "\The [src] struggles to remove \the [SJ]!", + "You struggle to remove \the [SJ]. (This will take around [round(breakouttime / 600)] minutes and you need to stand still.)" + ) + if(RESIST_ATTACK_CLAWS) + visible_message( + "\The [src] starts clawing at \the [SJ]!", + "You claw at \the [SJ]. (This will take around [round(breakouttime / 600)] minutes and you need to stand still.)" + ) + if(RESIST_ATTACK_BITE) + visible_message( + "\The [src] starts gnawing on \the [SJ]!", + "You gnaw on \the [SJ]. (This will take around [round(breakouttime / 600)] minutes and you need to stand still.)" + ) + + if(do_after(src, breakouttime, incapacitation_flags = INCAPACITATION_DISABLED & INCAPACITATION_KNOCKDOWN)) + if(!wear_suit) + return + visible_message( + "\The [src] manages to remove \the [wear_suit]!", + "You successfully remove \the [wear_suit]." + ) + drop_from_inventory(wear_suit) + +#undef RESIST_ATTACK_DEFAULT +#undef RESIST_ATTACK_CLAWS +#undef RESIST_ATTACK_BITE + +/mob/living/carbon/human/proc/can_break_straight_jacket() + if((HULK in mutations) || species.can_shred(src,1)) + return 1 + return ..() + +/mob/living/carbon/human/proc/break_straight_jacket() + visible_message( + "[src] is trying to rip \the [wear_suit]!", + "You attempt to rip your [wear_suit.name] apart. (This will take around 5 seconds and you need to stand still)" + ) + + if(do_after(src, 20 SECONDS, incapacitation_flags = INCAPACITATION_DEFAULT & ~INCAPACITATION_RESTRAINED)) // Same scaling as breaking cuffs, 5 seconds to 120 seconds, 20 seconds to 480 seconds. + if(!wear_suit || buckled) + return + + visible_message( + "[src] manages to rip \the [wear_suit]!", + "You successfully rip your [wear_suit.name]." + ) + + say(pick(";RAAAAAAAARGH!", ";HNNNNNNNNNGGGGGGH!", ";GWAAAAAAAARRRHHH!", "NNNNNNNNGGGGGGGGHH!", ";AAAAAAARRRGH!", "RAAAAAAAARGH!", "HNNNNNNNNNGGGGGGH!", "GWAAAAAAAARRRHHH!", "AAAAAAARRRGH!" )) + + qdel(wear_suit) + wear_suit = null + if(buckled && buckled.buckle_require_restraints) + buckled.unbuckle_mob() + +/mob/living/carbon/human/can_break_cuffs() + if(species.can_shred(src,1)) + return 1 + return ..() diff --git a/code/modules/mob/living/carbon/human/human_species.dm b/code/modules/mob/living/carbon/human/human_species.dm index 367a00b5d5..5d4cd86e1c 100644 --- a/code/modules/mob/living/carbon/human/human_species.dm +++ b/code/modules/mob/living/carbon/human/human_species.dm @@ -3,54 +3,53 @@ status_flags = GODMODE|CANPUSH has_huds = FALSE -/mob/living/carbon/human/dummy/mannequin/New() - ..() +/mob/living/carbon/human/dummy/mannequin/Initialize() + . = ..() mob_list -= src living_mob_list -= src dead_mob_list -= src delete_inventory() -/mob/living/carbon/human/skrell/New(var/new_loc) +/mob/living/carbon/human/skrell/Initialize(var/new_loc) h_style = "Skrell Short Tentacles" - ..(new_loc, SPECIES_SKRELL) + return ..(new_loc, SPECIES_SKRELL) -/mob/living/carbon/human/tajaran/New(var/new_loc) +/mob/living/carbon/human/tajaran/Initialize(var/new_loc) h_style = "Tajaran Ears" - ..(new_loc, SPECIES_TAJ) + return ..(new_loc, SPECIES_TAJ) -/mob/living/carbon/human/unathi/New(var/new_loc) +/mob/living/carbon/human/unathi/Initialize(var/new_loc) h_style = "Unathi Horns" - ..(new_loc, SPECIES_UNATHI) + return ..(new_loc, SPECIES_UNATHI) -/mob/living/carbon/human/vox/New(var/new_loc) +/mob/living/carbon/human/vox/Initialize(var/new_loc) h_style = "Short Vox Quills" - ..(new_loc, SPECIES_VOX) + return ..(new_loc, SPECIES_VOX) -/mob/living/carbon/human/diona/New(var/new_loc) - ..(new_loc, SPECIES_DIONA) +/mob/living/carbon/human/diona/Initialize(var/new_loc) + return ..(new_loc, SPECIES_DIONA) -/mob/living/carbon/human/teshari/New(var/new_loc) +/mob/living/carbon/human/teshari/Initialize(var/new_loc) h_style = "Teshari Default" - ..(new_loc, SPECIES_TESHARI) + return ..(new_loc, SPECIES_TESHARI) -/mob/living/carbon/human/promethean/New(var/new_loc) - ..(new_loc, SPECIES_PROMETHEAN) +/mob/living/carbon/human/promethean/Initialize(var/new_loc) + return ..(new_loc, SPECIES_PROMETHEAN) -/mob/living/carbon/human/machine/New(var/new_loc) - h_style = "blue IPC screen" - ..(new_loc, "Machine") +/mob/living/carbon/human/zaddat/Initialize(var/new_loc) + return ..(new_loc, SPECIES_ZADDAT) -/mob/living/carbon/human/monkey/New(var/new_loc) - ..(new_loc, SPECIES_MONKEY) +/mob/living/carbon/human/monkey/Initialize(var/new_loc) + return ..(new_loc, SPECIES_MONKEY) -/mob/living/carbon/human/farwa/New(var/new_loc) - ..(new_loc, SPECIES_MONKEY_TAJ) +/mob/living/carbon/human/farwa/Initialize(var/new_loc) + return ..(new_loc, SPECIES_MONKEY_TAJ) -/mob/living/carbon/human/neaera/New(var/new_loc) - ..(new_loc, SPECIES_MONKEY_SKRELL) +/mob/living/carbon/human/neaera/Initialize(var/new_loc) + return ..(new_loc, SPECIES_MONKEY_SKRELL) -/mob/living/carbon/human/stok/New(var/new_loc) - ..(new_loc, SPECIES_MONKEY_UNATHI) +/mob/living/carbon/human/stok/Initialize(var/new_loc) + return ..(new_loc, SPECIES_MONKEY_UNATHI) -/mob/living/carbon/human/event1/New(var/new_loc) - ..(new_loc, SPECIES_EVENT1) +/mob/living/carbon/human/event1/Initialize(var/new_loc) + return ..(new_loc, SPECIES_EVENT1) diff --git a/code/modules/mob/living/carbon/human/inventory.dm b/code/modules/mob/living/carbon/human/inventory.dm index 559649e90f..a51e04b535 100644 --- a/code/modules/mob/living/carbon/human/inventory.dm +++ b/code/modules/mob/living/carbon/human/inventory.dm @@ -82,6 +82,8 @@ This saves us from having to call add_fingerprint() any time something is put in if(slot_tie) return 1 +/obj/item/var/suitlink = 1 //makes belt items require a jumpsuit- set individual items to suitlink = 0 to allow wearing on belt slot without suit + /mob/living/carbon/human/u_equip(obj/W as obj) if(!W) return 0 @@ -98,7 +100,7 @@ This saves us from having to call add_fingerprint() any time something is put in drop_from_inventory(l_store) if (wear_id) drop_from_inventory(wear_id) - if (belt) + if (belt && belt.suitlink == 1) worn_clothing -= belt drop_from_inventory(belt) worn_clothing -= w_uniform diff --git a/code/modules/mob/living/carbon/human/life.dm b/code/modules/mob/living/carbon/human/life.dm index 8a4fe6a18b..9859fe3898 100644 --- a/code/modules/mob/living/carbon/human/life.dm +++ b/code/modules/mob/living/carbon/human/life.dm @@ -104,15 +104,27 @@ if(!inStasisNow()) ..() -// Calculate how vulnerable the human is to under- and overpressure. -// Returns 0 (equals 0 %) if sealed in an undamaged suit, 1 if unprotected (equals 100%). +// Calculate how vulnerable the human is to the current pressure. +// Returns 0 (equals 0 %) if sealed in an undamaged suit that's rated for the pressure, 1 if unprotected (equals 100%). // Suitdamage can modifiy this in 10% steps. -/mob/living/carbon/human/proc/get_pressure_weakness() +// Protection scales down from 100% at the boundary to 0% at 10% in excess of the boundary +/mob/living/carbon/human/proc/get_pressure_weakness(pressure) + if(pressure == null) + return 1 // No protection if someone forgot to give a pressure var/pressure_adjustment_coefficient = 1 // Assume no protection at first. - if(wear_suit && (wear_suit.item_flags & STOPPRESSUREDAMAGE) && head && (head.item_flags & STOPPRESSUREDAMAGE)) // Complete set of pressure-proof suit worn, assume fully sealed. + // Check suit + if(wear_suit && wear_suit.max_pressure_protection != null && wear_suit.min_pressure_protection != null) pressure_adjustment_coefficient = 0 + // Pressure is too high + if(wear_suit.max_pressure_protection < pressure) + // Protection scales down from 100% at the boundary to 0% at 10% in excess of the boundary + pressure_adjustment_coefficient += round((pressure - wear_suit.max_pressure_protection) / (wear_suit.max_pressure_protection/10)) + + // Pressure is too low + if(wear_suit.min_pressure_protection > pressure) + pressure_adjustment_coefficient += round((wear_suit.min_pressure_protection - pressure) / (wear_suit.min_pressure_protection/10)) // Handles breaches in your space suit. 10 suit damage equals a 100% loss of pressure protection. if(istype(wear_suit,/obj/item/clothing/suit/space)) @@ -120,8 +132,26 @@ if(S.can_breach && S.damage) pressure_adjustment_coefficient += S.damage * 0.1 - pressure_adjustment_coefficient = min(1,max(pressure_adjustment_coefficient,0)) // So it isn't less than 0 or larger than 1. + else + // Missing key protection + pressure_adjustment_coefficient = 1 + // Check hat + if(head && head.max_pressure_protection != null && head.min_pressure_protection != null) + // Pressure is too high + if(head.max_pressure_protection < pressure) + // Protection scales down from 100% at the boundary to 0% at 20% in excess of the boundary + pressure_adjustment_coefficient += round((pressure - head.max_pressure_protection) / (head.max_pressure_protection/20)) + + // Pressure is too low + if(head.min_pressure_protection > pressure) + pressure_adjustment_coefficient += round((head.min_pressure_protection - pressure) / (head.min_pressure_protection/20)) + + else + // Missing key protection + pressure_adjustment_coefficient = 1 + + pressure_adjustment_coefficient = min(pressure_adjustment_coefficient, 1) return pressure_adjustment_coefficient // Calculate how much of the enviroment pressure-difference affects the human. @@ -129,11 +159,11 @@ var/pressure_difference // First get the absolute pressure difference. - if(pressure < ONE_ATMOSPHERE) // We are in an underpressure. - pressure_difference = ONE_ATMOSPHERE - pressure + if(pressure < species.safe_pressure) // We are in an underpressure. + pressure_difference = species.safe_pressure - pressure else //We are in an overpressure or standard atmosphere. - pressure_difference = pressure - ONE_ATMOSPHERE + pressure_difference = pressure - species.safe_pressure if(pressure_difference < 5) // If the difference is small, don't bother calculating the fraction. pressure_difference = 0 @@ -141,15 +171,15 @@ else // Otherwise calculate how much of that absolute pressure difference affects us, can be 0 to 1 (equals 0% to 100%). // This is our relative difference. - pressure_difference *= get_pressure_weakness() + pressure_difference *= get_pressure_weakness(pressure) // The difference is always positive to avoid extra calculations. // Apply the relative difference on a standard atmosphere to get the final result. // The return value will be the adjusted_pressure of the human that is the basis of pressure warnings and damage. - if(pressure < ONE_ATMOSPHERE) - return ONE_ATMOSPHERE - pressure_difference + if(pressure < species.safe_pressure) + return species.safe_pressure - pressure_difference else - return ONE_ATMOSPHERE + pressure_difference + return species.safe_pressure + pressure_difference /mob/living/carbon/human/handle_disabilities() ..() @@ -227,7 +257,7 @@ if(gene.is_active(src)) gene.OnMobLife(src) - radiation = Clamp(radiation,0,250) + radiation = CLAMP(radiation,0,250) if(!radiation) if(species.appearance_flags & RADIATION_GLOWS) @@ -486,7 +516,7 @@ if(toxins_pp > safe_toxins_max) var/ratio = (poison/safe_toxins_max) * 10 if(reagents) - reagents.add_reagent("toxin", Clamp(ratio, MIN_TOXIN_DAMAGE, MAX_TOXIN_DAMAGE)) + reagents.add_reagent("toxin", CLAMP(ratio, MIN_TOXIN_DAMAGE, MAX_TOXIN_DAMAGE)) breath.adjust_gas(poison_type, -poison/6, update = 0) //update after phoron_alert = max(phoron_alert, 1) else @@ -674,7 +704,8 @@ // Account for massive pressure differences. Done by Polymorph // Made it possible to actually have something that can protect against high pressure... Done by Errorage. Polymorph now has an axe sticking from his head for his previous hardcoded nonsense! - if(status_flags & GODMODE) return 1 //godmode + if(status_flags & GODMODE) + return 1 //godmode if(adjusted_pressure >= species.hazard_high_pressure) var/pressure_damage = min( ( (adjusted_pressure / species.hazard_high_pressure) -1 )*PRESSURE_DAMAGE_COEFFICIENT , MAX_HIGH_PRESSURE_DAMAGE) @@ -690,8 +721,19 @@ if( !(COLD_RESISTANCE in mutations)) if(!isSynthetic() || !nif || !nif.flag_check(NIF_O_PRESSURESEAL,NIF_FLAGS_OTHER)) //VOREStation Edit - NIF pressure seals take_overall_damage(brute=LOW_PRESSURE_DAMAGE, used_weapon = "Low Pressure") - if(getOxyLoss() < 55) // 11 OxyLoss per 4 ticks when wearing internals; unconsciousness in 16 ticks, roughly half a minute - adjustOxyLoss(4) // 16 OxyLoss per 4 ticks when no internals present; unconsciousness in 13 ticks, roughly twenty seconds + if(getOxyLoss() < 55) // 12 OxyLoss per 4 ticks when wearing internals; unconsciousness in 16 ticks, roughly half a minute + var/pressure_dam = 3 // 16 OxyLoss per 4 ticks when no internals present; unconsciousness in 13 ticks, roughly twenty seconds + // (Extra 1 oxyloss from failed breath) + // Being in higher pressure decreases the damage taken, down to a minimum of (species.hazard_low_pressure / ONE_ATMOSPHERE) at species.hazard_low_pressure + pressure_dam *= (ONE_ATMOSPHERE - adjusted_pressure) / ONE_ATMOSPHERE + + if(wear_suit && wear_suit.min_pressure_protection && head && head.min_pressure_protection) + var/protection = max(wear_suit.min_pressure_protection, head.min_pressure_protection) // Take the weakest protection + pressure_dam *= (protection) / (ONE_ATMOSPHERE) // Divide by ONE_ATMOSPHERE to get a fractional protection + // Stronger protection (Closer to 0) results in a smaller fraction + // Firesuits (Min protection = 0.2 atmospheres) decrease oxyloss to 1/5 + + adjustOxyLoss(pressure_dam) pressure_alert = -2 else pressure_alert = -1 @@ -1047,8 +1089,6 @@ sleeping += 1 Paralyse(5) - confused = max(0, confused - 1) - // If you're dirty, your gloves will become dirty, too. if(gloves && germ_level > gloves.germ_level && prob(10)) gloves.germ_level += 1 @@ -1549,7 +1589,7 @@ if(!H || (H.robotic >= ORGAN_ROBOT)) return - if(pulse >= PULSE_2FAST || shock_stage >= 10 || istype(get_turf(src), /turf/space)) + if(pulse >= PULSE_2FAST || shock_stage >= 10 || (istype(get_turf(src), /turf/space) && is_preference_enabled(/datum/client_preference/play_ambiance))) //PULSE_THREADY - maximum value for pulse, currently it 5. //High pulse value corresponds to a fast rate of heartbeat. //Divided by 2, otherwise it is too slow. @@ -1602,7 +1642,7 @@ else if(foundVirus) holder.icon_state = "hudill" else if(has_brain_worms()) - var/mob/living/simple_animal/borer/B = has_brain_worms() + var/mob/living/simple_mob/animal/borer/B = has_brain_worms() if(B.controlling) holder.icon_state = "hudbrainworm" else diff --git a/code/modules/mob/living/carbon/human/npcs.dm b/code/modules/mob/living/carbon/human/npcs.dm index 0457c7b584..3c0609f99b 100644 --- a/code/modules/mob/living/carbon/human/npcs.dm +++ b/code/modules/mob/living/carbon/human/npcs.dm @@ -5,12 +5,9 @@ worn_state = "punpun" species_restricted = list("Monkey") -/mob/living/carbon/human/monkey/punpun/New() - spawn(1) - // VoreStation Edit - Move Constructor inside Spawn - ..() - // End Vore Station Edit - name = "Pun Pun" - real_name = name - w_uniform = new /obj/item/clothing/under/punpun(src) - regenerate_icons() +/mob/living/carbon/human/monkey/punpun/Initialize() + . = ..() + name = "Pun Pun" + real_name = name + w_uniform = new /obj/item/clothing/under/punpun(src) + regenerate_icons() diff --git a/code/modules/mob/living/carbon/human/say.dm b/code/modules/mob/living/carbon/human/say.dm index d42c26880b..fab28e45b4 100644 --- a/code/modules/mob/living/carbon/human/say.dm +++ b/code/modules/mob/living/carbon/human/say.dm @@ -64,11 +64,11 @@ return 1 if (istype(other, /mob/living/carbon/brain)) return 1 - if (istype(other, /mob/living/simple_animal/slime)) + if (istype(other, /mob/living/simple_mob/slime)) return 1 //This is already covered by mob/say_understands() - //if (istype(other, /mob/living/simple_animal)) + //if (istype(other, /mob/living/simple_mob)) // if((other.universal_speak && !speaking) || src.universal_speak || src.universal_understand) // return 1 // return 0 @@ -83,13 +83,16 @@ // todo: fix this shit if(rig.speech && rig.speech.voice_holder && rig.speech.voice_holder.active && rig.speech.voice_holder.voice) voice_sub = rig.speech.voice_holder.voice - else + if(!voice_sub) // If the rig has a voice changer, then we use that. Otherwise, use this for(var/obj/item/gear in list(wear_mask,wear_suit,head)) if(!gear) continue var/obj/item/voice_changer/changer = locate() in gear - if(changer && changer.active && changer.voice) - voice_sub = changer.voice + if(changer && changer.active) + if(changer.voice) + voice_sub = changer.voice + else + voice_sub = get_id_name() if(voice_sub) return voice_sub if(mind && mind.changeling && mind.changeling.mimicing) diff --git a/code/modules/mob/living/carbon/human/species/outsider/replicant.dm b/code/modules/mob/living/carbon/human/species/outsider/replicant.dm new file mode 100644 index 0000000000..91658a4851 --- /dev/null +++ b/code/modules/mob/living/carbon/human/species/outsider/replicant.dm @@ -0,0 +1,123 @@ +/* + * This species exists for the use of the Alien Reality pod, though can be used for events or other things. + */ + +/datum/species/shapeshifter/replicant + name = SPECIES_REPLICANT + name_plural = "Replicants" + primitive_form = SPECIES_MONKEY + unarmed_types = list(/datum/unarmed_attack/stomp, /datum/unarmed_attack/kick, /datum/unarmed_attack/claws, /datum/unarmed_attack/bite/sharp) + blurb = "The remnants of some lost or dead race's research. These seem relatively normal." + num_alternate_languages = 3 + species_language = LANGUAGE_GALCOM + secondary_langs = list(LANGUAGE_TERMINUS) + assisted_langs = list(LANGUAGE_ROOTGLOBAL) + name_language = LANGUAGE_TERMINUS + + blood_color = "#aaaadd" + + show_ssd = "eerily still." + + min_age = 0 + max_age = 999 + + health_hud_intensity = 1.5 + + flags = NO_MINOR_CUT | NO_HALLUCINATION | NO_INFECT + + vision_flags = SEE_SELF + darksight = 5 + + brute_mod = 0.9 + burn_mod = 0.9 + oxy_mod = 0.7 + toxins_mod = 0.85 + radiation_mod = 0.9 + flash_mod = 0.9 + sound_mod = 0.9 + siemens_coefficient = 0.9 + + spawn_flags = SPECIES_IS_RESTRICTED + appearance_flags = HAS_SKIN_COLOR | HAS_EYE_COLOR | HAS_HAIR_COLOR | HAS_UNDERWEAR + + valid_transform_species = list(SPECIES_HUMAN, SPECIES_HUMAN_VATBORN, SPECIES_UNATHI, SPECIES_TAJ, SPECIES_SKRELL, SPECIES_DIONA, SPECIES_TESHARI, SPECIES_MONKEY, SPECIES_VOX) + + inherent_verbs = list( + /mob/living/carbon/human/proc/shapeshifter_select_shape, + /mob/living/carbon/human/proc/shapeshifter_select_hair, + /mob/living/carbon/human/proc/shapeshifter_select_gender, + /mob/living/carbon/human/proc/shapeshifter_select_colour, + /mob/living/carbon/human/proc/shapeshifter_select_hair_colors, + /mob/living/carbon/human/proc/exit_vr + ) + + has_organ = list( + O_HEART = /obj/item/organ/internal/heart/replicant/rage, + O_LUNGS = /obj/item/organ/internal/lungs/replicant/mending, + O_VOICE = /obj/item/organ/internal/voicebox/replicant, + O_LIVER = /obj/item/organ/internal/liver/replicant, + O_KIDNEYS = /obj/item/organ/internal/kidneys/replicant, + O_BRAIN = /obj/item/organ/internal/brain/replicant, + O_EYES = /obj/item/organ/internal/eyes/replicant, + O_AREJECT = /obj/item/organ/internal/immunehub/replicant, + O_VRLINK = /obj/item/organ/internal/brainmirror + ) + +/datum/species/shapeshifter/replicant/alpha + name = SPECIES_REPLICANT_ALPHA + blurb = "The remnants of some lost or dead race's research. These seem caustic." + + blood_color = "#55ff55" + + species_language = LANGUAGE_SIGN + assisted_langs = list(LANGUAGE_ROOTGLOBAL, LANGUAGE_SOL_COMMON, LANGUAGE_SKRELLIANFAR) + + inherent_verbs = list( + /mob/living/carbon/human/proc/shapeshifter_select_shape, + /mob/living/carbon/human/proc/shapeshifter_select_hair, + /mob/living/carbon/human/proc/shapeshifter_select_gender, + /mob/living/carbon/human/proc/shapeshifter_select_colour, + /mob/living/carbon/human/proc/shapeshifter_select_hair_colors, + /mob/living/carbon/human/proc/exit_vr, + /mob/living/carbon/human/proc/corrosive_acid, + /mob/living/carbon/human/proc/neurotoxin, + /mob/living/carbon/human/proc/acidspit + ) + + has_organ = list( + O_HEART = /obj/item/organ/internal/heart/replicant, + O_LUNGS = /obj/item/organ/internal/lungs/replicant, + O_VOICE = /obj/item/organ/internal/voicebox/replicant, + O_LIVER = /obj/item/organ/internal/liver/replicant, + O_KIDNEYS = /obj/item/organ/internal/kidneys/replicant, + O_BRAIN = /obj/item/organ/internal/brain/replicant, + O_EYES = /obj/item/organ/internal/eyes/replicant, + O_AREJECT = /obj/item/organ/internal/immunehub/replicant, + O_PLASMA = /obj/item/organ/internal/xenos/plasmavessel/replicant, + O_ACID = /obj/item/organ/internal/xenos/acidgland/replicant, + O_VRLINK = /obj/item/organ/internal/brainmirror + ) + +/datum/species/shapeshifter/replicant/beta + name = SPECIES_REPLICANT_BETA + blurb = "The remnants of some lost or dead race's research. These seem elastic." + + blood_color = "#C0C0C0" + + species_language = LANGUAGE_SIGN + secondary_langs = list(LANGUAGE_TERMINUS, LANGUAGE_ROOTGLOBAL) // Radio-waves. + + has_organ = list( + O_HEART = /obj/item/organ/internal/heart/replicant/rage, + O_LUNGS = /obj/item/organ/internal/lungs/replicant/mending, + O_VOICE = /obj/item/organ/internal/voicebox/replicant, + O_LIVER = /obj/item/organ/internal/liver/replicant, + O_KIDNEYS = /obj/item/organ/internal/kidneys/replicant, + O_BRAIN = /obj/item/organ/internal/brain/replicant/torso, + O_EYES = /obj/item/organ/internal/eyes/replicant, + O_AREJECT = /obj/item/organ/internal/immunehub/replicant, + O_VENTC = /obj/item/organ/internal/metamorphgland/replicant, + O_PLASMA = /obj/item/organ/internal/xenos/plasmavessel/replicant, + O_RESIN = /obj/item/organ/internal/xenos/resinspinner/replicant, + O_VRLINK = /obj/item/organ/internal/brainmirror + ) diff --git a/code/modules/mob/living/carbon/human/species/outsider/vox.dm b/code/modules/mob/living/carbon/human/species/outsider/vox.dm index 6e7c9bbfd4..414d230b77 100644 --- a/code/modules/mob/living/carbon/human/species/outsider/vox.dm +++ b/code/modules/mob/living/carbon/human/species/outsider/vox.dm @@ -16,6 +16,7 @@ refer to them as 'shitbirds' for their violent and offensive nature, as well as their horrible \ smell.

      Most humans will never meet a Vox raider, instead learning of this insular species through \ dealing with their traders and merchants; those that do rarely enjoy the experience." + catalogue_data = list(/datum/category_item/catalogue/fauna/vox) // taste_sensitivity = TASTE_DULL diff --git a/code/modules/mob/living/carbon/human/species/species.dm b/code/modules/mob/living/carbon/human/species/species.dm index d3a50f3755..95f909950c 100644 --- a/code/modules/mob/living/carbon/human/species/species.dm +++ b/code/modules/mob/living/carbon/human/species/species.dm @@ -8,6 +8,7 @@ var/name // Species name. var/name_plural // Pluralized name (since "[name]s" is not always valid) var/blurb = "A completely nondescript species." // A brief lore summary for use in the chargen screen. + var/list/catalogue_data = null // A list of /datum/category_item/catalogue datums, for the cataloguer, or null. // Icon/appearance vars. var/icobase = 'icons/mob/human_races/r_human.dmi' // Normal icon set. @@ -85,6 +86,7 @@ var/toxins_mod = 1 // Toxloss modifier var/radiation_mod = 1 // Radiation modifier var/flash_mod = 1 // Stun from blindness modifier. + var/flash_burn = 0 // how much damage to take from being flashed if light hypersensitive var/sound_mod = 1 // Stun from sounds, I.E. flashbangs. var/chemOD_mod = 1 // Damage modifier for overdose var/vision_flags = SEE_SELF // Same flags as glasses. @@ -145,6 +147,7 @@ var/warning_high_pressure = WARNING_HIGH_PRESSURE // High pressure warning. var/warning_low_pressure = WARNING_LOW_PRESSURE // Low pressure warning. var/hazard_low_pressure = HAZARD_LOW_PRESSURE // Dangerously low pressure. + var/safe_pressure = ONE_ATMOSPHERE var/light_dam // If set, mob will be damaged in light over this value and heal in light below its negative. var/minimum_breath_pressure = 16 // Minimum required pressure for breath, in kPa diff --git a/code/modules/mob/living/carbon/human/species/species_attack.dm b/code/modules/mob/living/carbon/human/species/species_attack.dm index 2654715f74..9e6a07d168 100644 --- a/code/modules/mob/living/carbon/human/species/species_attack.dm +++ b/code/modules/mob/living/carbon/human/species/species_attack.dm @@ -27,7 +27,7 @@ var/datum/gender/T = gender_datums[user.get_visible_gender()] var/datum/gender/TT = gender_datums[target.get_visible_gender()] if(!skill) skill = 1 - attack_damage = Clamp(attack_damage, 1, 5) + attack_damage = CLAMP(attack_damage, 1, 5) if(target == user) user.visible_message("[user] [pick(attack_verb)] [T.himself] in the [affecting.name]!") diff --git a/code/modules/mob/living/carbon/human/species/species_attack_vr.dm b/code/modules/mob/living/carbon/human/species/species_attack_vr.dm index 299a44a990..28dfb0720e 100644 --- a/code/modules/mob/living/carbon/human/species/species_attack_vr.dm +++ b/code/modules/mob/living/carbon/human/species/species_attack_vr.dm @@ -9,7 +9,7 @@ /datum/unarmed_attack/bite/sharp/numbing/show_attack(var/mob/living/carbon/human/user, var/mob/living/carbon/human/target, var/zone, var/attack_damage) var/obj/item/organ/external/affecting = target.get_organ(zone) - attack_damage = Clamp(attack_damage, 1, 5) + attack_damage = CLAMP(attack_damage, 1, 5) if(target == user) user.visible_message("[user] sinks their fangs in to themself in the [affecting.name]!") to_chat(target, "You feel a wave of numbness as you sink your fangs in to yourself.") diff --git a/code/modules/mob/living/carbon/human/species/station/alraune.dm b/code/modules/mob/living/carbon/human/species/station/alraune.dm index 8b5099b222..55e6215fc7 100644 --- a/code/modules/mob/living/carbon/human/species/station/alraune.dm +++ b/code/modules/mob/living/carbon/human/species/station/alraune.dm @@ -111,7 +111,7 @@ var/fullysealed = FALSE //if they're wearing a fully sealed suit, their internals take priority. var/environmentalair = FALSE //if no sealed suit, internals take priority in low pressure environements - if(H.wear_suit && (H.wear_suit.item_flags & STOPPRESSUREDAMAGE) && H.head && (H.head.item_flags & STOPPRESSUREDAMAGE)) + if(H.wear_suit && (H.wear_suit.min_pressure_protection = 0) && H.head && (H.head.min_pressure_protection = 0)) fullysealed = TRUE else // find out if local gas mixture is enough to override use of internals var/datum/gas_mixture/environment = H.loc.return_air() @@ -207,7 +207,7 @@ var/co2buff = 0 if(inhaling) - co2buff = (Clamp(inhale_pp, 0, minimum_breath_pressure))/minimum_breath_pressure //returns a value between 0 and 1. + co2buff = (CLAMP(inhale_pp, 0, minimum_breath_pressure))/minimum_breath_pressure //returns a value between 0 and 1. var/light_amount = fullysealed ? H.getlightlevel() : H.getlightlevel()/5 // if they're covered, they're not going to get much light on them. @@ -222,7 +222,7 @@ if(toxins_pp > safe_toxins_max) var/ratio = (poison/safe_toxins_max) * 10 if(H.reagents) - H.reagents.add_reagent("toxin", Clamp(ratio, MIN_TOXIN_DAMAGE, MAX_TOXIN_DAMAGE)) + H.reagents.add_reagent("toxin", CLAMP(ratio, MIN_TOXIN_DAMAGE, MAX_TOXIN_DAMAGE)) breath.adjust_gas(poison_type, -poison/6, update = 0) //update after H.phoron_alert = max(H.phoron_alert, 1) else diff --git a/code/modules/mob/living/carbon/human/species/station/prometheans.dm b/code/modules/mob/living/carbon/human/species/station/prometheans.dm index 685dcd7c5e..5c6295956a 100644 --- a/code/modules/mob/living/carbon/human/species/station/prometheans.dm +++ b/code/modules/mob/living/carbon/human/species/station/prometheans.dm @@ -10,6 +10,7 @@ var/datum/species/shapeshifter/promethean/prometheans mimic many forms of life. Derived from the Aetolian giant slime (Macrolimus vulgaris) inhabiting the warm, tropical planet \ of Aetolus, they are a relatively new lab-created sapient species, and as such many things about them have yet to be comprehensively studied. \ What has Science done?" + catalogue_data = list(/datum/category_item/catalogue/fauna/promethean) show_ssd = "totally quiescent" death_message = "rapidly loses cohesion, splattering across the ground..." knockout_message = "collapses inwards, forming a disordered puddle of goo." @@ -30,6 +31,7 @@ var/datum/species/shapeshifter/promethean/prometheans health_hud_intensity = 2 num_alternate_languages = 3 species_language = LANGUAGE_SOL_COMMON + secondary_langs = list(LANGUAGE_SOL_COMMON) // For some reason, having this as their species language does not allow it to be chosen. assisted_langs = list(LANGUAGE_ROOTGLOBAL, LANGUAGE_VOX) // Prometheans are weird, let's just assume they can use basically any language. breath_type = null @@ -64,10 +66,10 @@ var/datum/species/shapeshifter/promethean/prometheans heat_level_2 = 370 //Default 400 heat_level_3 = 600 //Default 1000 - body_temperature = 310.15 + body_temperature = T20C // Room temperature - siemens_coefficient = 0.4 - rarity_value = 5 + rarity_value = 5 + siemens_coefficient = 0.8 genders = list(MALE, FEMALE, NEUTER, PLURAL) @@ -116,7 +118,7 @@ var/datum/species/shapeshifter/promethean/prometheans /datum/species/shapeshifter/promethean/equip_survival_gear(var/mob/living/carbon/human/H) var/boxtype = pick(typesof(/obj/item/weapon/storage/toolbox/lunchbox)) var/obj/item/weapon/storage/toolbox/lunchbox/L = new boxtype(get_turf(H)) - var/mob/living/simple_animal/mouse/mouse = new (L) + var/mob/living/simple_mob/animal/passive/mouse/mouse = new (L) var/obj/item/weapon/holder/holder = new (L) mouse.forceMove(holder) holder.sync(mouse) @@ -153,8 +155,16 @@ var/datum/species/shapeshifter/promethean/prometheans H.gib() /datum/species/shapeshifter/promethean/handle_environment_special(var/mob/living/carbon/human/H) -/* VOREStation Removal - Too crazy with our uncapped hunger and slowdown stuff. - var/turf/T = H.loc + var/healing = TRUE // Switches to FALSE if healing is not possible at all. + var/regen_brute = TRUE + var/regen_burn = TRUE + var/regen_tox = TRUE + var/regen_oxy = TRUE + if(H.fire_stacks < 0) // If you're soaked, you're melting. + H.adjustToxLoss(3 * heal_rate) // Tripled because 0.5 is miniscule, and fire_stacks are capped in both directions + healing = FALSE + + var/turf/T = get_turf(H) if(istype(T)) var/obj/effect/decal/cleanable/C = locate() in T if(C && !(H.shoes || (H.wear_suit && (H.wear_suit.body_parts_covered & FEET)))) @@ -162,35 +172,59 @@ var/datum/species/shapeshifter/promethean/prometheans if (istype(T, /turf/simulated)) var/turf/simulated/S = T S.dirt = 0 + H.nutrition = max(H.nutrition, min(500, H.nutrition + rand(15, 30))) //VOREStation Edit: Gives nutrition up to a point instead of being capped + + var/datum/gas_mixture/environment = T.return_air() + var/pressure = environment.return_pressure() + var/affecting_pressure = H.calculate_affecting_pressure(pressure) + if(affecting_pressure <= hazard_low_pressure) // Dangerous low pressure stops the regeneration of physical wounds. Body is focusing on keeping them intact rather than sealing. + regen_brute = FALSE + regen_burn = FALSE + + if(world.time < H.l_move_time + 1 MINUTE) // Need to stay still for a minute, before passive healing will activate. + healing = FALSE + + if(H.bodytemperature > heat_level_1 || H.bodytemperature < cold_level_1) // If you're too hot or cold, you can't heal. + healing = FALSE - H.nutrition = min(500, max(0, H.nutrition + rand(15, 30))) -VOREStation Removal End */ // Heal remaining damage. - if(H.fire_stacks >= 0) + if(healing) if(H.getBruteLoss() || H.getFireLoss() || H.getOxyLoss() || H.getToxLoss()) - var/nutrition_cost = 0 - var/nutrition_debt = H.getBruteLoss() - var/starve_mod = 1 - if(H.nutrition <= 25) + var/nutrition_cost = 0 // The total amount of nutrition drained every tick, when healing + var/nutrition_debt = 0 // Holder variable used to store previous damage values prior to healing for use in the nutrition_cost equation. + var/starve_mod = 1 // Lowering this lowers healing and increases agony multiplicatively. + if(H.nutrition <= 150) // This is when the icon goes red starve_mod = 0.75 - H.adjustBruteLoss(-heal_rate * starve_mod) - nutrition_cost += nutrition_debt - H.getBruteLoss() + if(H.nutrition <= 50) // Severe starvation. Damage repaired beyond this point will cause a stunlock if untreated. + starve_mod = 0.5 - nutrition_debt = H.getFireLoss() - H.adjustFireLoss(-heal_rate * starve_mod) - nutrition_cost += nutrition_debt - H.getFireLoss() + if(regen_brute) + nutrition_debt = H.getBruteLoss() + H.adjustBruteLoss(-heal_rate * starve_mod) + nutrition_cost += nutrition_debt - H.getBruteLoss() - nutrition_debt = H.getOxyLoss() - H.adjustOxyLoss(-heal_rate * starve_mod) - nutrition_cost += nutrition_debt - H.getOxyLoss() + if(regen_burn) + nutrition_debt = H.getFireLoss() + H.adjustFireLoss(-heal_rate * starve_mod) + nutrition_cost += nutrition_debt - H.getFireLoss() - nutrition_debt = H.getToxLoss() - H.adjustToxLoss(-heal_rate * starve_mod) - nutrition_cost += nutrition_debt - H.getToxLoss() - H.nutrition -= (2 * nutrition_cost) //Costs Nutrition when damage is being repaired, corresponding to the amount of damage being repaired. + if(regen_oxy) + nutrition_debt = H.getOxyLoss() + H.adjustOxyLoss(-heal_rate * starve_mod) + nutrition_cost += nutrition_debt - H.getOxyLoss() + + if(regen_tox) + nutrition_debt = H.getToxLoss() + H.adjustToxLoss(-heal_rate * starve_mod) + nutrition_cost += nutrition_debt - H.getToxLoss() + + H.nutrition -= (3 * nutrition_cost) //Costs Nutrition when damage is being repaired, corresponding to the amount of damage being repaired. H.nutrition = max(0, H.nutrition) //Ensure it's not below 0. - //else//VOREStation Removal - //H.adjustToxLoss(2*heal_rate) // Doubled because 0.5 is miniscule, and fire_stacks are capped in both directions + + var/agony_to_apply = ((1 / starve_mod) * nutrition_cost) //Regenerating damage causes minor pain over time. Small injures will be no issue, large ones will cause problems. + + if((starve_mod <= 0.5 && (H.getHalLoss() + agony_to_apply) <= 90) || ((H.getHalLoss() + agony_to_apply) <= 70)) // Will max out at applying halloss at 70, unless they are starving; starvation regeneration will bring them up to a maximum of 120, the same amount of agony a human receives from three taser hits. + H.apply_damage(agony_to_apply, HALLOSS) /datum/species/shapeshifter/promethean/get_blood_colour(var/mob/living/carbon/human/H) return (H ? rgb(H.r_skin, H.g_skin, H.b_skin) : ..()) diff --git a/code/modules/mob/living/carbon/human/species/station/protean_vr/protean_blob.dm b/code/modules/mob/living/carbon/human/species/station/protean_vr/protean_blob.dm index 54b83e28a4..16f953e1e7 100644 --- a/code/modules/mob/living/carbon/human/species/station/protean_vr/protean_blob.dm +++ b/code/modules/mob/living/carbon/human/species/station/protean_vr/protean_blob.dm @@ -1,5 +1,5 @@ // Simple animal nanogoopeyness -/mob/living/simple_animal/protean_blob +/mob/living/simple_mob/protean_blob name = "protean blob" desc = "Some sort of big viscous pool of jelly." tt_desc = "Animated nanogoop" @@ -12,8 +12,9 @@ faction = "neutral" maxHealth = 200 health = 200 + say_list_type = /datum/say_list/protean_blob - ai_inactive = TRUE //Always off + // ai_inactive = TRUE //Always off //VORESTATION AI TEMPORARY REMOVAL show_stat_health = FALSE //We will do it ourselves response_help = "pats the" @@ -36,11 +37,6 @@ minbodytemp = 0 maxbodytemp = 900 - speak_chance = 1 - speak = list("Blrb?","Sqrsh.","Glrsh!") - emote_hear = list("squishes softly","spluts quietly","makes wet noises") - emote_see = list("shifts wetly","undulates placidly") - var/mob/living/carbon/human/humanform var/obj/item/organ/internal/nano/refactory/refactory var/datum/modifier/healing @@ -52,8 +48,13 @@ can_buckle = TRUE //Blobsurfing +/datum/say_list/protean_blob + speak = list("Blrb?","Sqrsh.","Glrsh!") + emote_hear = list("squishes softly","spluts quietly","makes wet noises") + emote_see = list("shifts wetly","undulates placidly") + //Constructor allows passing the human to sync damages -/mob/living/simple_animal/protean_blob/New(var/newloc, var/mob/living/carbon/human/H) +/mob/living/simple_mob/protean_blob/New(var/newloc, var/mob/living/carbon/human/H) ..() if(H) humanform = H @@ -64,7 +65,7 @@ else update_icon() -/mob/living/simple_animal/protean_blob/Destroy() +/mob/living/simple_mob/protean_blob/Destroy() humanform = null refactory = null vore_organs = null @@ -73,15 +74,15 @@ healing.expire() return ..() -/mob/living/simple_animal/protean_blob/init_vore() +/mob/living/simple_mob/protean_blob/init_vore() return //Don't make a random belly, don't waste your time -/mob/living/simple_animal/protean_blob/Stat() +/mob/living/simple_mob/protean_blob/Stat() ..() if(humanform) humanform.species.Stat(humanform) -/mob/living/simple_animal/protean_blob/update_icon() +/mob/living/simple_mob/protean_blob/update_icon() if(humanform) //Still have a refactory if(istype(refactory)) @@ -97,7 +98,7 @@ ..() -/mob/living/simple_animal/protean_blob/updatehealth() +/mob/living/simple_mob/protean_blob/updatehealth() if(humanform) //Set the max maxHealth = humanform.getMaxHealth()*2 //HUMANS, and their 'double health', bleh. @@ -136,19 +137,19 @@ else ..() -/mob/living/simple_animal/protean_blob/adjustBruteLoss(var/amount) +/mob/living/simple_mob/protean_blob/adjustBruteLoss(var/amount) if(humanform) humanform.adjustBruteLoss(amount) else ..() -/mob/living/simple_animal/protean_blob/adjustFireLoss(var/amount) +/mob/living/simple_mob/protean_blob/adjustFireLoss(var/amount) if(humanform) humanform.adjustFireLoss(amount) else ..() -/mob/living/simple_animal/protean_blob/death(gibbed, deathmessage = "dissolves away, leaving only a few spare parts!") +/mob/living/simple_mob/protean_blob/death(gibbed, deathmessage = "dissolves away, leaving only a few spare parts!") if(humanform) humanform.death(gibbed = gibbed) for(var/organ in humanform.internal_organs) @@ -168,7 +169,7 @@ ..() -/mob/living/simple_animal/protean_blob/Life() +/mob/living/simple_mob/protean_blob/Life() . = ..() if(. && istype(refactory) && humanform) if(!healing && health < maxHealth && refactory.get_stored_material(DEFAULT_WALL_MATERIAL) >= 100) @@ -177,7 +178,7 @@ healing.expire() healing = null -/mob/living/simple_animal/protean_blob/lay_down() +/mob/living/simple_mob/protean_blob/lay_down() ..() if(resting) animate(src,alpha = 40,time = 1 SECOND) @@ -199,7 +200,7 @@ target.forceMove(vore_selected) to_chat(target,"\The [src] quickly engulfs you, [vore_selected.vore_verb]ing you into their [vore_selected.name]!") -/mob/living/simple_animal/protean_blob/DoPunch(var/atom/A) +/mob/living/simple_mob/protean_blob/attack_hand(var/atom/A) //VORESTATION AI TEMPORARY REMOVAL (Marking this as such even though it was an edit.) if(refactory && istype(A,/obj/item/stack/material)) var/obj/item/stack/material/S = A var/substance = S.material.name @@ -214,7 +215,7 @@ else return ..() -/mob/living/simple_animal/protean_blob/attackby(var/obj/item/O, var/mob/user) +/mob/living/simple_mob/protean_blob/attackby(var/obj/item/O, var/mob/user) if(refactory && istype(O,/obj/item/stack/material)) var/obj/item/stack/material/S = O var/substance = S.material.name @@ -229,7 +230,7 @@ else return ..() -/mob/living/simple_animal/protean_blob/MouseEntered(location,control,params) +/mob/living/simple_mob/protean_blob/MouseEntered(location,control,params) if(resting) return ..() @@ -251,12 +252,12 @@ var/atom/creation_spot = drop_location() //Create our new blob - var/mob/living/simple_animal/protean_blob/blob = new(creation_spot,src) + var/mob/living/simple_mob/protean_blob/blob = new(creation_spot,src) //Drop all our things var/list/things_to_drop = contents.Copy() var/list/things_to_not_drop = list(w_uniform,nif,l_store,r_store,wear_id,l_ear,r_ear) //And whatever else we decide for balancing. - + /* No for now, because insta-pepperspray or flash on unblob if(l_hand && l_hand.w_class <= ITEMSIZE_SMALL) //Hands but only if small or smaller things_to_not_drop += l_hand @@ -267,7 +268,7 @@ things_to_drop -= things_to_not_drop //Crunch the lists things_to_drop -= organs //Mah armbs things_to_drop -= internal_organs //Mah sqeedily spooch - + for(var/obj/item/I in things_to_drop) //rip hoarders drop_from_inventory(I) @@ -289,7 +290,7 @@ temporary_form = blob //Mail them to nullspace - forceMove(null) + moveToNullspace() //Message blob.visible_message("[src.name] collapses into a gooey blob!") @@ -316,7 +317,7 @@ if(istype(I, /obj/item/weapon/holder)) root.remove_from_mob(I) -/mob/living/carbon/human/proc/nano_outofblob(var/mob/living/simple_animal/protean_blob/blob) +/mob/living/carbon/human/proc/nano_outofblob(var/mob/living/simple_mob/protean_blob/blob) if(!istype(blob)) return if(buckled) diff --git a/code/modules/mob/living/carbon/human/species/station/protean_vr/protean_powers.dm b/code/modules/mob/living/carbon/human/species/station/protean_vr/protean_powers.dm index d6f65e6f63..3b7f99c8e7 100644 --- a/code/modules/mob/living/carbon/human/species/station/protean_vr/protean_powers.dm +++ b/code/modules/mob/living/carbon/human/species/station/protean_vr/protean_powers.dm @@ -38,7 +38,7 @@ oldlimb.removed() qdel(oldlimb) - var/mob/living/simple_animal/protean_blob/blob = nano_intoblob() + var/mob/living/simple_mob/protean_blob/blob = nano_intoblob() active_regen = TRUE if(do_after(blob,5 SECONDS)) var/list/limblist = species.has_limbs[choice] @@ -128,7 +128,7 @@ to_chat(src, "Remain still while the process takes place! It will take 5 seconds.") visible_message("[src]'s form collapses into an amorphous blob of black ichor...") - var/mob/living/simple_animal/protean_blob/blob = nano_intoblob() + var/mob/living/simple_mob/protean_blob/blob = nano_intoblob() active_regen = TRUE if(do_after(blob,5 SECONDS)) synthetic = usable_manufacturers[manu_choice] @@ -149,7 +149,7 @@ visible_message("[src]'s form begins to shift and ripple as if made of oil...") active_regen = TRUE - var/mob/living/simple_animal/protean_blob/blob = nano_intoblob() + var/mob/living/simple_mob/protean_blob/blob = nano_intoblob() if(do_after(blob, delay_length, null, 0)) if(stat != DEAD && refactory) var/list/holder = refactory.materials @@ -213,7 +213,7 @@ return //Quietly fail var/actually_added = refactory.add_stored_material(substance,howmuch*matstack.perunit) - matstack.use(Ceiling(actually_added/matstack.perunit)) + matstack.use(CEILING((actually_added/matstack.perunit), 1)) if(actually_added && actually_added < howmuch) to_chat(src,"Your refactory module is now full, so only [actually_added] units were stored.") visible_message("[src] nibbles some of the [substance] right off the stack!") @@ -283,7 +283,7 @@ var/nagmessage = "Adjust your mass to be a size between 25 to 200%. Up-sizing consumes metal, downsizing returns metal." var/new_size = input(user, nagmessage, "Pick a Size", user.size_multiplier*100) as num|null - if(!new_size || !IsInRange(new_size,25,200)) + if(!new_size || !ISINRANGE(new_size,25,200)) return var/size_factor = new_size/100 @@ -319,7 +319,7 @@ return R return -/mob/living/simple_animal/protean_blob/nano_get_refactory() +/mob/living/simple_mob/protean_blob/nano_get_refactory() if(refactory) return ..(refactory) if(humanform) @@ -353,7 +353,7 @@ do_ability(usr) //Blobform using it else - var/mob/living/simple_animal/protean_blob/blob = usr + var/mob/living/simple_mob/protean_blob/blob = usr do_ability(blob.humanform) /obj/effect/protean_ability/proc/do_ability(var/mob/living/L) diff --git a/code/modules/mob/living/carbon/human/species/station/protean_vr/protean_species.dm b/code/modules/mob/living/carbon/human/species/station/protean_vr/protean_species.dm old mode 100644 new mode 100755 index 52aad66fcc..58f7ef5284 --- a/code/modules/mob/living/carbon/human/species/station/protean_vr/protean_species.dm +++ b/code/modules/mob/living/carbon/human/species/station/protean_vr/protean_species.dm @@ -20,8 +20,7 @@ spawn_flags = SPECIES_CAN_JOIN | SPECIES_IS_WHITELISTED health_hud_intensity = 2 num_alternate_languages = 3 - species_language = LANGUAGE_SOL_COMMON - assisted_langs = list(LANGUAGE_EAL) + assisted_langs = list(LANGUAGE_ROOTLOCAL, LANGUAGE_ROOTGLOBAL, LANGUAGE_VOX) color_mult = TRUE breath_type = null @@ -117,7 +116,7 @@ var/obj/item/device/nif/saved_nif = H.nif if(saved_nif) H.nif.unimplant(H) //Needs reference to owner to unimplant right. - H.nif.forceMove(null) + H.nif.moveToNullspace() ..() if(saved_nif) saved_nif.quick_implant(H) diff --git a/code/modules/mob/living/carbon/human/species/station/seromi.dm b/code/modules/mob/living/carbon/human/species/station/seromi.dm index db1bd72d23..f3c4833aae 100644 --- a/code/modules/mob/living/carbon/human/species/station/seromi.dm +++ b/code/modules/mob/living/carbon/human/species/station/seromi.dm @@ -7,6 +7,7 @@ the polar tundral regions outside of Skrell territory. Extremely fragile, they developed \ hunting skills that emphasized taking out their prey without themselves getting hit. They \ are only recently becoming known on human stations after reaching space with Skrell assistance." + catalogue_data = list(/datum/category_item/catalogue/fauna/teshari) num_alternate_languages = 3 secondary_langs = list(LANGUAGE_SCHECHI, LANGUAGE_SKRELLIAN) diff --git a/code/modules/mob/living/carbon/human/species/station/station.dm b/code/modules/mob/living/carbon/human/species/station/station.dm index 36a667999b..e490c8f1ed 100644 --- a/code/modules/mob/living/carbon/human/species/station/station.dm +++ b/code/modules/mob/living/carbon/human/species/station/station.dm @@ -8,6 +8,7 @@ While the central Sol government maintains control of its far-flung people, powerful corporate \ interests, rampant cyber and bio-augmentation and secretive factions make life on most human \ worlds tumultous at best." + catalogue_data = list(/datum/category_item/catalogue/fauna/humans) num_alternate_languages = 3 species_language = LANGUAGE_SOL_COMMON secondary_langs = list(LANGUAGE_SOL_COMMON, LANGUAGE_TERMINUS) @@ -67,6 +68,7 @@ planet, they mostly hold ideals of honesty, virtue, proficiency and bravery above all \ else, frequently even their own lives. They prefer warmer temperatures than most species and \ their native tongue is a heavy hissing laungage called Sinta'Unathi." + catalogue_data = list(/datum/category_item/catalogue/fauna/unathi) cold_level_1 = 280 //Default 260 - Lower is better cold_level_2 = 220 //Default 200 @@ -178,6 +180,7 @@ and have accelerated the fledgling culture into the interstellar age. Their history is full of war and highly fractious \ governments, something that permeates even to today's times. They prefer colder, tundra-like climates, much like their \ home worlds and speak a variety of languages, especially Siik and Akhani." + catalogue_data = list(/datum/category_item/catalogue/fauna/tajaran) body_temperature = 320.15 //Even more cold resistant, even more flammable @@ -244,6 +247,7 @@ of the Qerr'Katish, a caste within their society which keeps the empire of the Skrell running smoothly. Skrell are \ herbivores on the whole and tend to be co-operative with the other species of the galaxy, although they rarely reveal \ the secrets of their empire to their allies." + catalogue_data = list(/datum/category_item/catalogue/fauna/skrell) num_alternate_languages = 3 secondary_langs = list(LANGUAGE_SKRELLIAN, LANGUAGE_SCHECHI) name_language = LANGUAGE_SKRELLIAN @@ -308,6 +312,116 @@ /datum/species/skrell/can_breathe_water() return TRUE +/datum/species/zaddat + name = SPECIES_ZADDAT + name_plural = "Zaddat" + icobase = 'icons/mob/human_races/r_zaddat.dmi' + deform = 'icons/mob/human_races/r_zaddat.dmi' + unarmed_types = list(/datum/unarmed_attack/stomp, /datum/unarmed_attack/kick, /datum/unarmed_attack/punch) + brute_mod = 1.15 + burn_mod = 1.15 + toxins_mod = 1.5 + flash_mod = 2 + flash_burn = 15 //flashing a zaddat probably counts as police brutality + metabolic_rate = 0.7 //did u know if your ancestors starved ur body will actually start in starvation mode? + gluttonous = 1 + taste_sensitivity = TASTE_SENSITIVE + num_alternate_languages = 3 + secondary_langs = list(LANGUAGE_ZADDAT, LANGUAGE_UNATHI) + assisted_langs = list(LANGUAGE_EAL, LANGUAGE_TERMINUS, LANGUAGE_SKRELLIANFAR, LANGUAGE_ROOTLOCAL, LANGUAGE_ROOTGLOBAL, LANGUAGE_VOX, LANGUAGE_SOL_COMMON, LANGUAGE_AKHANI, LANGUAGE_SIIK, LANGUAGE_GUTTER) //limited vocal range; can talk Unathi and magical Galcom but not much else + name_language = LANGUAGE_ZADDAT + species_language = LANGUAGE_ZADDAT + health_hud_intensity = 2.5 + + minimum_breath_pressure = 20 //have fun with underpressures. any higher than this and they'll be even less suitible for life on the station + + economic_modifier = 3 + + min_age = 16 + max_age = 90 + + blurb = "The Zaddat are an Unathi client race only recently introduced to SolGov space. Having evolved on \ + the high-pressure and post-apocalyptic world of Xohok, Zaddat require an environmental suit called a Shroud \ + to survive in usual planetary and station atmospheres. Despite these restrictions, worsening conditions on \ + Xohok and the blessing of the Moghes Hegemony have lead the Zaddat to enter human space in search of work \ + and living space." + catalogue_data = list(/datum/category_item/catalogue/fauna/zaddat) + + hazard_high_pressure = HAZARD_HIGH_PRESSURE + 500 // Dangerously high pressure. + warning_high_pressure = WARNING_HIGH_PRESSURE + 500 // High pressure warning. + warning_low_pressure = 300 // Low pressure warning. + hazard_low_pressure = 220 // Dangerously low pressure. + safe_pressure = 400 + poison_type = "nitrogen" // technically it's a partial pressure thing but IDK if we can emulate that + + genders = list(FEMALE, PLURAL) //females are polyp-producing, infertile females and males are nigh-identical + + spawn_flags = SPECIES_CAN_JOIN | SPECIES_IS_WHITELISTED + appearance_flags = null + + flesh_color = "#AFA59E" + base_color = "#e2e4a6" + blood_color = "#FFCC00" //a gross sort of orange color + + reagent_tag = IS_ZADDAT + + heat_discomfort_strings = list( + "Your joints itch.", + "You feel uncomfortably warm.", + "Your carapace feels like a stove." + ) + + cold_discomfort_strings = list( + "You feel chilly.", + "You shiver suddenly.", + "Your antenna ache." + ) + + has_organ = list( //No appendix. + O_HEART = /obj/item/organ/internal/heart, + O_LUNGS = /obj/item/organ/internal/lungs, + O_VOICE = /obj/item/organ/internal/voicebox, + O_LIVER = /obj/item/organ/internal/liver, + O_KIDNEYS = /obj/item/organ/internal/kidneys, + O_BRAIN = /obj/item/organ/internal/brain, + O_EYES = /obj/item/organ/internal/eyes + ) + + descriptors = list( + /datum/mob_descriptor/height = 0, + /datum/mob_descriptor/build = -1 + ) +/datum/species/zaddat/equip_survival_gear(var/mob/living/carbon/human/H) + ..() + if(H.wear_suit) //get rid of job labcoats so they don't stop us from equipping the Shroud + qdel(H.wear_suit) //if you know how to gently set it in like, their backpack or whatever, be my guest + if(H.wear_mask) + qdel(H.wear_mask) + if(H.head) + qdel(H.head) + + H.equip_to_slot_or_del(new /obj/item/clothing/mask/gas/zaddat/(H), slot_wear_mask) // mask has to come first or Shroud helmet will get in the way + H.equip_to_slot_or_del(new /obj/item/clothing/suit/space/void/zaddat/(H), slot_wear_suit) + +/datum/species/zaddat/handle_environment_special(var/mob/living/carbon/human/H) + + if(H.inStasisNow()) + return + + var/damageable = H.get_damageable_organs() + var/covered = H.get_coverage() + + var/light_amount = 0 //how much light there is in the place, affects damage + if(isturf(H.loc)) //else, there's considered to be no light + var/turf/T = H.loc + light_amount = T.get_lumcount() * 5 + + + for(var/K in damageable) + if(!(K in covered)) + H.apply_damage(light_amount/4, BURN, K, 0, 0, "Abnormal growths") + + /datum/species/diona name = SPECIES_DIONA name_plural = "Dionaea" @@ -343,6 +457,7 @@ all known species, especially the Skrell. Their communal mind makes them slow to react, and they have difficulty understanding \ even the simplest concepts of other minds. Their alien physiology allows them survive happily off a diet of nothing but light, \ water and other radiation." + catalogue_data = list(/datum/category_item/catalogue/fauna/dionaea) has_organ = list( O_NUTRIENT = /obj/item/organ/internal/diona/nutrients, diff --git a/code/modules/mob/living/carbon/human/species/station/station_special_abilities_vr.dm b/code/modules/mob/living/carbon/human/species/station/station_special_abilities_vr.dm index 9044d39b67..2139e56b43 100644 --- a/code/modules/mob/living/carbon/human/species/station/station_special_abilities_vr.dm +++ b/code/modules/mob/living/carbon/human/species/station/station_special_abilities_vr.dm @@ -10,16 +10,16 @@ /mob/living/carbon/human/proc/chimera_regenerate() //If they're already regenerating - switch(reviving) + switch(revive_ready) if(REVIVING_NOW) to_chat(src, "You are already reconstructing, just wait for the reconstruction to finish!") return if(REVIVING_DONE) to_chat(src, "Your reconstruction is done, but you need to hatch now.") return - if(REVIVING_COOLDOWN) - to_chat(src, "You can't use that ability again so soon!") - return + if(revive_ready > world.time) + to_chat(src, "You can't use that ability again so soon!") + return var/nutrition_used = nutrition * 0.5 var/time = (240+960/(1 + nutrition_used/75)) @@ -32,18 +32,18 @@ to_chat(src, "You begin to reconstruct your form. You will not be able to move during this time. It should take aproximately [round(time)] seconds.") //Scary spawnerization. - reviving = REVIVING_NOW + revive_ready = REVIVING_NOW spawn(time SECONDS) // Was dead, now not dead. if(stat != DEAD) to_chat(src, "Your body has recovered from its ordeal, ready to regenerate itself again.") - reviving = 0 //Not bool + revive_ready = REVIVING_READY //reset their cooldown // Was dead, still dead. else to_chat(src, "Consciousness begins to stir as your new body awakens, ready to hatch.") verbs |= /mob/living/carbon/human/proc/hatch - reviving = REVIVING_DONE + revive_ready = REVIVING_DONE //Dead until nutrition injected. else @@ -54,25 +54,25 @@ to_chat(src, "You begin to reconstruct your form. You will not be able to move during this time. It should take aproximately [round(time)] seconds.") //Waiting for regen after being alive - reviving = REVIVING_NOW + revive_ready = REVIVING_NOW spawn(time SECONDS) //If they're still alive after regenning. if(stat != DEAD) to_chat(src, "Consciousness begins to stir as your new body awakens, ready to hatch..") verbs |= /mob/living/carbon/human/proc/hatch - reviving = REVIVING_DONE + revive_ready = REVIVING_DONE //Was alive, now dead else if(hasnutriment()) to_chat(src, "Consciousness begins to stir as your new body awakens, ready to hatch..") verbs |= /mob/living/carbon/human/proc/hatch - reviving = REVIVING_DONE + revive_ready = REVIVING_DONE //Dead until nutrition injected. else to_chat(src, "Your body was unable to regenerate, what few living cells remain require additional nutrients to complete the process.") - reviving = 0 //Not boolean + revive_ready = REVIVING_READY //reset their cooldown /mob/living/carbon/human/proc/hasnutriment() if (bloodstr.has_reagent("nutriment", 30) || src.bloodstr.has_reagent("protein", 15)) //protein needs half as much. For reference, a steak contains 9u protein. @@ -86,7 +86,7 @@ set name = "Hatch" set category = "Abilities" - if(reviving != REVIVING_DONE) + if(revive_ready != REVIVING_DONE) //Hwhat? verbs -= /mob/living/carbon/human/proc/hatch return @@ -107,7 +107,7 @@ else to_chat(src, "Your body was unable to regenerate, what few living cells remain require additional nutrients to complete the process.") verbs -= /mob/living/carbon/human/proc/hatch - reviving = 0 //So they can try again when they're given a kickstart + revive_ready = REVIVING_READY //reset their cooldown they can try again when they're given a kickstart //Alive when hatching else @@ -141,8 +141,10 @@ var/T = get_turf(src) new /obj/effect/gibspawner/human/xenochimera(T) - reviving = REVIVING_COOLDOWN - schedule_callback_in(1 HOUR, VARSET_CALLBACK(src, reviving, 0)) + revive_ready = world.time + 1 HOUR //set the cooldown + +/mob/living/carbon/human/proc/revivingreset() // keep this as a debug proc or potential future use + revive_ready = REVIVING_READY /obj/effect/gibspawner/human/xenochimera fleshcolor = "#14AD8B" @@ -260,9 +262,9 @@ if(8) src << 'sound/machines/windowdoor.ogg' if(9) //To make it more realistic, I added two gunshots (enough to kill) - src << 'sound/weapons/Gunshot.ogg' + src << 'sound/weapons/Gunshot1.ogg' spawn(rand(10,30)) - src << 'sound/weapons/Gunshot.ogg' + src << 'sound/weapons/Gunshot2.ogg' if(10) src << 'sound/weapons/smash.ogg' if(11) //Same as above, but with tasers. @@ -689,7 +691,7 @@ return ..(target) -/mob/living/simple_animal/can_shred(var/mob/living/carbon/human/target) +/mob/living/simple_mob/can_shred(var/mob/living/carbon/human/target) if(!target) var/list/choices = list() for(var/mob/living/carbon/human/M in oviewers(1)) diff --git a/code/modules/mob/living/carbon/human/species/station/station_special_vr.dm b/code/modules/mob/living/carbon/human/species/station/station_special_vr.dm index 0371dc485f..b373fa1afc 100644 --- a/code/modules/mob/living/carbon/human/species/station/station_special_vr.dm +++ b/code/modules/mob/living/carbon/human/species/station/station_special_vr.dm @@ -29,6 +29,7 @@ /mob/living/carbon/human/proc/succubus_drain_finalize, /mob/living/carbon/human/proc/succubus_drain_lethal, /mob/living/carbon/human/proc/bloodsuck, + /mob/living/carbon/human/proc/tie_hair, /mob/living/proc/shred_limb, /mob/living/proc/flying_toggle, /mob/living/proc/start_wings_hovering) //Xenochimera get all the special verbs since they can't select traits. @@ -66,6 +67,7 @@ base_color = "#333333" blood_color = "#14AD8B" + reagent_tag = IS_CHIMERA /datum/species/xenochimera/handle_environment_special(var/mob/living/carbon/human/H) //If they're KO'd/dead, they're probably not thinking a lot about much of anything. @@ -73,7 +75,7 @@ handle_feralness(H) //While regenerating - if(H.reviving && H.reviving != REVIVING_COOLDOWN) + if(H.revive_ready == REVIVING_NOW || H.revive_ready == REVIVING_DONE) H.weakened = 5 H.canmove = 0 H.does_not_breathe = TRUE diff --git a/code/modules/mob/living/carbon/human/species/station/station_vr.dm b/code/modules/mob/living/carbon/human/species/station/station_vr.dm index a2e1d2551f..28af1a875a 100644 --- a/code/modules/mob/living/carbon/human/species/station/station_vr.dm +++ b/code/modules/mob/living/carbon/human/species/station/station_vr.dm @@ -37,8 +37,6 @@ flesh_color = "#AFA59E" base_color = "#777777" - reagent_tag = IS_SERGAL - heat_discomfort_strings = list( "Your fur prickles in the heat.", "You feel uncomfortably warm.", @@ -99,8 +97,6 @@ base_color = "#777777" blood_color = "#1D2CBF" - reagent_tag = IS_AKULA - /datum/species/akula/can_breathe_water() return TRUE // Surprise, SHERKS. @@ -140,8 +136,6 @@ flesh_color = "#AFA59E" base_color = "#333333" - reagent_tag = IS_SERGAL - heat_discomfort_strings = list( "Your fur prickles in the heat.", "You feel uncomfortably warm.", @@ -159,6 +153,7 @@ num_alternate_languages = 3 secondary_langs = list(LANGUAGE_TERMINUS) name_language = LANGUAGE_TERMINUS + inherent_verbs = list(/mob/living/carbon/human/proc/lick_wounds) assisted_langs = list(LANGUAGE_EAL, LANGUAGE_SKRELLIAN, LANGUAGE_SKRELLIANFAR, LANGUAGE_ROOTLOCAL, LANGUAGE_ROOTGLOBAL, LANGUAGE_VOX) //AEIOU edit: Zorren can speak Terminus unassisted. min_age = 18 @@ -198,6 +193,7 @@ num_alternate_languages = 3 secondary_langs = list(LANGUAGE_TERMINUS) name_language = LANGUAGE_TERMINUS + inherent_verbs = list(/mob/living/carbon/human/proc/lick_wounds) assisted_langs = list(LANGUAGE_EAL, LANGUAGE_SKRELLIAN, LANGUAGE_SKRELLIANFAR, LANGUAGE_ROOTLOCAL, LANGUAGE_ROOTGLOBAL, LANGUAGE_VOX) //AEIOU edit: Zorren can speak Terminus unassisted. min_age = 18 @@ -244,7 +240,7 @@ // gluttonous = 1 num_alternate_languages = 3 color_mult = 1 - inherent_verbs = list(/mob/living/proc/shred_limb) + inherent_verbs = list(/mob/living/proc/shred_limb, /mob/living/carbon/human/proc/lick_wounds) blurb = "Vulpkanin are a species of sharp-witted canine-pideds residing on the planet Altam just barely within the \ dual-star Vazzend system. Their politically de-centralized society and independent natures have led them to become a species and \ @@ -318,8 +314,8 @@ color_mult = 1 min_age = 18 gluttonous = 0 //Moving this here so I don't have to fix this conflict every time polaris glances at station.dm - inherent_verbs = list(/mob/living/proc/shred_limb) - heat_discomfort_level = 294 //Prevents heat discomfort spam at 20c + inherent_verbs = list(/mob/living/proc/shred_limb, /mob/living/carbon/human/proc/lick_wounds) + heat_discomfort_level = 295 //Prevents heat discomfort spam at 20c /datum/species/skrell spawn_flags = SPECIES_CAN_JOIN @@ -330,6 +326,11 @@ reagent_tag = null assisted_langs = list(LANGUAGE_EAL, LANGUAGE_ROOTLOCAL, LANGUAGE_ROOTGLOBAL, LANGUAGE_VOX) +/datum/species/zaddat + spawn_flags = SPECIES_CAN_JOIN + min_age = 18 + gluttonous = 0 + /datum/species/diona spawn_flags = SPECIES_CAN_JOIN min_age = 18 @@ -343,6 +344,7 @@ min_age = 18 push_flags = ~HEAVY //Allows them to use micro step code. swap_flags = ~HEAVY + gluttonous = 0 inherent_verbs = list( /mob/living/carbon/human/proc/sonar_ping, diff --git a/code/modules/mob/living/carbon/human/species/station/traits_vr/positive.dm b/code/modules/mob/living/carbon/human/species/station/traits_vr/positive.dm index 9927fea6ab..d69b1f9c0a 100644 --- a/code/modules/mob/living/carbon/human/species/station/traits_vr/positive.dm +++ b/code/modules/mob/living/carbon/human/species/station/traits_vr/positive.dm @@ -135,3 +135,12 @@ desc = "Makes your nice clawed, scaled, hooved, armored, or otherwise just awfully calloused feet immune to glass shards." cost = 1 var_changes = list("flags" = NO_MINOR_CUT) //Checked the flag is only used by shard stepping. + +/datum/trait/antiseptic_saliva + name = "Antiseptic Saliva" + desc = "Your saliva has especially strong antiseptic properties that can be used to heal small wounds." + cost = 1 + +/datum/trait/antiseptic_saliva/apply(var/datum/species/S,var/mob/living/carbon/human/H) + ..() + H.verbs |= /mob/living/carbon/human/proc/lick_wounds \ No newline at end of file diff --git a/code/modules/mob/living/carbon/human/species/virtual_reality/avatar.dm b/code/modules/mob/living/carbon/human/species/virtual_reality/avatar.dm index 76f82ec513..17b31ffecc 100644 --- a/code/modules/mob/living/carbon/human/species/virtual_reality/avatar.dm +++ b/code/modules/mob/living/carbon/human/species/virtual_reality/avatar.dm @@ -1,114 +1,116 @@ -// ### Wooo, inheritance. Basically copying everything I don't need to edit from prometheans, because they mostly work already. -// ### Any and all of this is open to change for balance or whatever. -// ### -// ### -// Species definition follows. -/datum/species/shapeshifter/promethean/avatar - - name = SPECIES_VR - name_plural = "Virtual Reality Avatars" - blurb = "A 3-dimensional representation of some sort of animate object used to display the presence and actions of some-one or -thing using a virtual reality program." - show_ssd = "eerily still" - death_message = "flickers briefly, their gear falling in a heap on the floor around their motionless body." - knockout_message = "has been knocked unconscious!" - - spawn_flags = SPECIES_IS_RESTRICTED - - speech_bubble_appearance = "cyber" - - assisted_langs = list() - - male_cough_sounds = list('sound/effects/mob_effects/m_cougha.ogg','sound/effects/mob_effects/m_coughb.ogg', 'sound/effects/mob_effects/m_coughc.ogg') - female_cough_sounds = list('sound/effects/mob_effects/f_cougha.ogg','sound/effects/mob_effects/f_coughb.ogg') - male_sneeze_sound = 'sound/effects/mob_effects/sneeze.ogg' - female_sneeze_sound = 'sound/effects/mob_effects/f_sneeze.ogg' - - unarmed_types = list(/datum/unarmed_attack/stomp, /datum/unarmed_attack/kick, /datum/unarmed_attack/punch, /datum/unarmed_attack/bite) - has_organ = list(O_BRAIN = /obj/item/organ/internal/brain/slime, O_EYES = /obj/item/organ/internal/eyes) // Slime core. - heal_rate = 0 // Avatars don't naturally heal like prometheans, at least not for now - inherent_verbs = list( - /mob/living/carbon/human/proc/shapeshifter_select_shape, - /mob/living/carbon/human/proc/shapeshifter_select_colour, - /mob/living/carbon/human/proc/shapeshifter_select_hair, - /mob/living/carbon/human/proc/shapeshifter_select_hair_colors, - /mob/living/carbon/human/proc/shapeshifter_select_gender, - /mob/living/carbon/human/proc/regenerate, - /mob/living/carbon/human/proc/shapeshifter_change_opacity, - /mob/living/carbon/human/proc/exit_vr - ) - - -/datum/species/shapeshifter/promethean/avatar/handle_death(var/mob/living/carbon/human/H) - return - -/datum/species/shapeshifter/promethean/avatar/handle_environment_special(var/mob/living/carbon/human/H) - return - -/mob/living/carbon/human/proc/shapeshifter_change_opacity() - - set name = "Toggle Opacity" - set category = "Abilities" - - if(stat || world.time < last_special) - return - - last_special = world.time + 10 - - if(src.icon_state == "promethean") - icon_state = lowertext(src.species.get_bodytype(src)) - shapeshifter_change_species("Virtual Reality [src.species.get_bodytype(src)]") - else - icon_state = "promethean" - shapeshifter_change_species(SPECIES_VR) - - -// enter_vr is called on the original mob, and puts the mind into the supplied vr mob -/mob/living/carbon/human/proc/enter_vr(var/mob/living/carbon/human/avatar) // Avatar is currently a human, because we have preexisting setup code for appearance manipulation, etc. - if(!istype(avatar)) - return - - // Link the two mobs for client transfer - avatar.vr_holder = src - src.teleop = avatar - src.vr_link = avatar // Can't reuse vr_holder so that death can automatically eject users from VR - - // Move the mind - avatar.Sleeping(1) - src.mind.transfer_to(avatar) - to_chat(avatar, "You have enterred Virtual Reality!\nAll normal gameplay rules still apply.\nWounds you suffer here won't persist when you leave VR, but some of the pain will.\nYou can leave VR at any time by using the \"Exit Virtual Reality\" verb in the Abilities tab, or by ghosting.\nYou can modify your appearance by using various \"Change \[X\]\" verbs in the Abilities tab.") - to_chat(avatar, " You black out for a moment, and wake to find yourself in a new body in virtual reality.") // So this is what VR feels like? - -// exit_vr is called on the vr mob, and puts the mind back into the original mob -/mob/living/carbon/human/proc/exit_vr() - set name = "Exit Virtual Reality" - set category = "Abilities" - - if(!vr_holder) - return - if(!mind) - return - - var/total_damage - // Tally human damage - if(ishuman(src)) - var/mob/living/carbon/human/H = src - total_damage = H.getBruteLoss() + H.getFireLoss() + H.getOxyLoss() + H.getToxLoss() - - // Move the mind back to the original mob -// vr_holder.Sleeping(1) - src.mind.transfer_to(vr_holder) - to_chat(vr_holder, "You black out for a moment, and wake to find yourself back in your own body.") - // Two-thirds damage is transferred as agony for /humans - // Getting hurt in VR doesn't damage the physical body, but you still got hurt. - if(ishuman(vr_holder) && total_damage) - var/mob/living/carbon/human/V = vr_holder - V.stun_effect_act(0, total_damage*2/3, null) // 200 damage leaves the user in paincrit for several seconds, agony reaches 0 after around 2m. - to_chat(vr_holder, "Pain from your time in VR lingers.") // 250 damage leaves the user unconscious for several seconds in addition to paincrit - - // Maintain a link with the mob, but don't use teleop - vr_holder.vr_link = src - vr_holder.teleop = null - - if(istype(vr_holder.loc, /obj/machinery/vr_sleeper)) - var/obj/machinery/vr_sleeper/V = vr_holder.loc +// ### Wooo, inheritance. Basically copying everything I don't need to edit from prometheans, because they mostly work already. +// ### Any and all of this is open to change for balance or whatever. +// ### +// ### +// Species definition follows. +/datum/species/shapeshifter/promethean/avatar + + name = SPECIES_VR + name_plural = "Virtual Reality Avatars" + blurb = "A 3-dimensional representation of some sort of animate object used to display the presence and actions of some-one or -thing using a virtual reality program." + show_ssd = "eerily still" + death_message = "flickers briefly, their gear falling in a heap on the floor around their motionless body." + knockout_message = "has been knocked unconscious!" + + spawn_flags = SPECIES_IS_RESTRICTED + + speech_bubble_appearance = "cyber" + + assisted_langs = list() + + male_cough_sounds = list('sound/effects/mob_effects/m_cougha.ogg','sound/effects/mob_effects/m_coughb.ogg', 'sound/effects/mob_effects/m_coughc.ogg') + female_cough_sounds = list('sound/effects/mob_effects/f_cougha.ogg','sound/effects/mob_effects/f_coughb.ogg') + male_sneeze_sound = 'sound/effects/mob_effects/sneeze.ogg' + female_sneeze_sound = 'sound/effects/mob_effects/f_sneeze.ogg' + + valid_transform_species = list(SPECIES_HUMAN, SPECIES_HUMAN_VATBORN, SPECIES_UNATHI, SPECIES_TAJ, SPECIES_SKRELL, SPECIES_DIONA, SPECIES_TESHARI, SPECIES_VOX, SPECIES_MONKEY, SPECIES_SKELETON) + + unarmed_types = list(/datum/unarmed_attack/stomp, /datum/unarmed_attack/kick, /datum/unarmed_attack/punch, /datum/unarmed_attack/bite) + has_organ = list(O_BRAIN = /obj/item/organ/internal/brain/slime, O_EYES = /obj/item/organ/internal/eyes) // Slime core. + heal_rate = 0 // Avatars don't naturally heal like prometheans, at least not for now + inherent_verbs = list( + /mob/living/carbon/human/proc/shapeshifter_select_shape, + /mob/living/carbon/human/proc/shapeshifter_select_colour, + /mob/living/carbon/human/proc/shapeshifter_select_hair, + /mob/living/carbon/human/proc/shapeshifter_select_hair_colors, + /mob/living/carbon/human/proc/shapeshifter_select_gender, + /mob/living/carbon/human/proc/regenerate, + /mob/living/carbon/human/proc/shapeshifter_change_opacity, + /mob/living/carbon/human/proc/exit_vr + ) + + +/datum/species/shapeshifter/promethean/avatar/handle_death(var/mob/living/carbon/human/H) + return + +/datum/species/shapeshifter/promethean/avatar/handle_environment_special(var/mob/living/carbon/human/H) + return + +/mob/living/carbon/human/proc/shapeshifter_change_opacity() + + set name = "Toggle Opacity" + set category = "Abilities" + + if(stat || world.time < last_special) + return + + last_special = world.time + 10 + + if(src.icon_state == "promethean") + icon_state = lowertext(src.species.get_bodytype(src)) + shapeshifter_change_species("Virtual Reality [src.species.get_bodytype(src)]") + else + icon_state = "promethean" + shapeshifter_change_species(SPECIES_VR) + + +// enter_vr is called on the original mob, and puts the mind into the supplied vr mob +/mob/living/carbon/human/proc/enter_vr(var/mob/living/carbon/human/avatar) // Avatar is currently a human, because we have preexisting setup code for appearance manipulation, etc. + if(!istype(avatar)) + return + + // Link the two mobs for client transfer + avatar.vr_holder = src + src.teleop = avatar + src.vr_link = avatar // Can't reuse vr_holder so that death can automatically eject users from VR + + // Move the mind + avatar.Sleeping(1) + src.mind.transfer_to(avatar) + to_chat(avatar, "You have enterred Virtual Reality!\nAll normal gameplay rules still apply.\nWounds you suffer here won't persist when you leave VR, but some of the pain will.\nYou can leave VR at any time by using the \"Exit Virtual Reality\" verb in the Abilities tab, or by ghosting.\nYou can modify your appearance by using various \"Change \[X\]\" verbs in the Abilities tab.") + to_chat(avatar, " You black out for a moment, and wake to find yourself in a new body in virtual reality.") // So this is what VR feels like? + +// exit_vr is called on the vr mob, and puts the mind back into the original mob +/mob/living/carbon/human/proc/exit_vr() + set name = "Exit Virtual Reality" + set category = "Abilities" + + if(!vr_holder) + return + if(!mind) + return + + var/total_damage + // Tally human damage + if(ishuman(src)) + var/mob/living/carbon/human/H = src + total_damage = H.getBruteLoss() + H.getFireLoss() + H.getOxyLoss() + H.getToxLoss() + + // Move the mind back to the original mob +// vr_holder.Sleeping(1) + src.mind.transfer_to(vr_holder) + to_chat(vr_holder, "You black out for a moment, and wake to find yourself back in your own body.") + // Two-thirds damage is transferred as agony for /humans + // Getting hurt in VR doesn't damage the physical body, but you still got hurt. + if(ishuman(vr_holder) && total_damage) + var/mob/living/carbon/human/V = vr_holder + V.stun_effect_act(0, total_damage*2/3, null) // 200 damage leaves the user in paincrit for several seconds, agony reaches 0 after around 2m. + to_chat(vr_holder, "Pain from your time in VR lingers.") // 250 damage leaves the user unconscious for several seconds in addition to paincrit + + // Maintain a link with the mob, but don't use teleop + vr_holder.vr_link = src + vr_holder.teleop = null + + if(istype(vr_holder.loc, /obj/machinery/vr_sleeper)) + var/obj/machinery/vr_sleeper/V = vr_holder.loc V.go_out() \ No newline at end of file diff --git a/code/modules/mob/living/carbon/human/species/virtual_reality/opaque_form.dm b/code/modules/mob/living/carbon/human/species/virtual_reality/opaque_form.dm index a2ecc2bf23..abf287c0fb 100644 --- a/code/modules/mob/living/carbon/human/species/virtual_reality/opaque_form.dm +++ b/code/modules/mob/living/carbon/human/species/virtual_reality/opaque_form.dm @@ -119,3 +119,63 @@ BP_R_FOOT = list("path" = /obj/item/organ/external/diona/foot/right) ) +/datum/species/shapeshifter/promethean/avatar/monkey + name = "Virtual Reality Monkey" + icobase = 'icons/mob/human_races/monkeys/r_monkey.dmi' + deform = 'icons/mob/human_races/monkeys/r_monkey.dmi' + damage_overlays = 'icons/mob/human_races/masks/dam_monkey.dmi' + damage_mask = 'icons/mob/human_races/masks/dam_mask_monkey.dmi' + blood_mask = 'icons/mob/human_races/masks/blood_monkey.dmi' + fire_icon_state = "monkey" + appearance_flags = 0 + has_limbs = list( + BP_TORSO = list("path" = /obj/item/organ/external/chest), + BP_GROIN = list("path" = /obj/item/organ/external/groin), + BP_HEAD = list("path" = /obj/item/organ/external/head/no_eyes), + BP_L_ARM = list("path" = /obj/item/organ/external/arm), + BP_R_ARM = list("path" = /obj/item/organ/external/arm/right), + BP_L_LEG = list("path" = /obj/item/organ/external/leg), + BP_R_LEG = list("path" = /obj/item/organ/external/leg/right), + BP_L_HAND = list("path" = /obj/item/organ/external/hand), + BP_R_HAND = list("path" = /obj/item/organ/external/hand/right), + BP_L_FOOT = list("path" = /obj/item/organ/external/foot), + BP_R_FOOT = list("path" = /obj/item/organ/external/foot/right) + ) + +/datum/species/shapeshifter/promethean/avatar/vox + name = "Virtual Reality Vox" + icobase = 'icons/mob/human_races/r_vox.dmi' + deform = 'icons/mob/human_races/r_def_vox.dmi' + appearance_flags = HAS_EYE_COLOR | HAS_HAIR_COLOR + has_limbs = list( + BP_TORSO = list("path" = /obj/item/organ/external/chest), + BP_GROIN = list("path" = /obj/item/organ/external/groin), + BP_HEAD = list("path" = /obj/item/organ/external/head/vox), + BP_L_ARM = list("path" = /obj/item/organ/external/arm), + BP_R_ARM = list("path" = /obj/item/organ/external/arm/right), + BP_L_LEG = list("path" = /obj/item/organ/external/leg), + BP_R_LEG = list("path" = /obj/item/organ/external/leg/right), + BP_L_HAND = list("path" = /obj/item/organ/external/hand), + BP_R_HAND = list("path" = /obj/item/organ/external/hand/right), + BP_L_FOOT = list("path" = /obj/item/organ/external/foot), + BP_R_FOOT = list("path" = /obj/item/organ/external/foot/right) + ) + +/datum/species/shapeshifter/promethean/avatar/skeleton + name = "Virtual Reality Skeleton" + icobase = 'icons/mob/human_races/r_skeleton.dmi' + deform = 'icons/mob/human_races/r_skeleton.dmi' + appearance_flags = HAS_HAIR_COLOR | HAS_LIPS | HAS_UNDERWEAR | HAS_EYE_COLOR + has_limbs = list( + BP_TORSO = list("path" = /obj/item/organ/external/chest), + BP_GROIN = list("path" = /obj/item/organ/external/groin), + BP_HEAD = list("path" = /obj/item/organ/external/head), + BP_L_ARM = list("path" = /obj/item/organ/external/arm), + BP_R_ARM = list("path" = /obj/item/organ/external/arm/right), + BP_L_LEG = list("path" = /obj/item/organ/external/leg), + BP_R_LEG = list("path" = /obj/item/organ/external/leg/right), + BP_L_HAND = list("path" = /obj/item/organ/external/hand), + BP_R_HAND = list("path" = /obj/item/organ/external/hand/right), + BP_L_FOOT = list("path" = /obj/item/organ/external/foot), + BP_R_FOOT = list("path" = /obj/item/organ/external/foot/right) + ) diff --git a/code/modules/mob/living/carbon/human/species/xenomorphs/alien_embryo.dm b/code/modules/mob/living/carbon/human/species/xenomorphs/alien_embryo.dm index f4022366a8..53d3576125 100644 --- a/code/modules/mob/living/carbon/human/species/xenomorphs/alien_embryo.dm +++ b/code/modules/mob/living/carbon/human/species/xenomorphs/alien_embryo.dm @@ -13,7 +13,7 @@ /obj/item/alien_embryo/New() if(istype(loc, /mob/living)) affected_mob = loc - processing_objects.Add(src) + START_PROCESSING(SSobj, src) spawn(0) AddInfectionImages(affected_mob) else @@ -30,7 +30,7 @@ if(!affected_mob) return if(loc != affected_mob) affected_mob.status_flags &= ~(XENO_HOST) - processing_objects.Remove(src) + STOP_PROCESSING(SSobj, src) spawn(0) RemoveInfectionImages(affected_mob) affected_mob = null diff --git a/code/modules/mob/living/carbon/human/species/xenomorphs/alien_facehugger.dm b/code/modules/mob/living/carbon/human/species/xenomorphs/alien_facehugger.dm index 549e888858..2684467147 100644 --- a/code/modules/mob/living/carbon/human/species/xenomorphs/alien_facehugger.dm +++ b/code/modules/mob/living/carbon/human/species/xenomorphs/alien_facehugger.dm @@ -1,6 +1,6 @@ //This file was auto-corrected by findeclaration.exe on 25.5.2012 20:42:32 -//TODO: Make these simple_animals +//TODO: Make these simple_mobs /* //Commented out as reference for future reproduction methods, or addition later if needed. - Mech var/const/MIN_IMPREGNATION_TIME = 100 //time it takes to impregnate someone var/const/MAX_IMPREGNATION_TIME = 150 diff --git a/code/modules/mob/living/carbon/human/species/xenomorphs/alien_powers.dm b/code/modules/mob/living/carbon/human/species/xenomorphs/alien_powers.dm index 0c8ca611fe..cc7cd7ef85 100644 --- a/code/modules/mob/living/carbon/human/species/xenomorphs/alien_powers.dm +++ b/code/modules/mob/living/carbon/human/species/xenomorphs/alien_powers.dm @@ -142,7 +142,8 @@ visible_message("[src] spits [spit_name] at \the [A]!", "You spit [spit_name] at \the [A].") var/obj/item/projectile/P = new spit_projectile(get_turf(src)) P.firer = src - P.launch(A) + P.old_style_target(A) + P.fire() playsound(loc, 'sound/weapons/pierce.ogg', 25, 0) else ..() diff --git a/code/modules/mob/living/carbon/human/unarmed_attack.dm b/code/modules/mob/living/carbon/human/unarmed_attack.dm index 6ec4ce2954..f3526983ef 100644 --- a/code/modules/mob/living/carbon/human/unarmed_attack.dm +++ b/code/modules/mob/living/carbon/human/unarmed_attack.dm @@ -139,7 +139,7 @@ var/global/list/sparring_attack_cache = list() var/datum/gender/TU = gender_datums[user.get_visible_gender()] var/datum/gender/TT = gender_datums[target.get_visible_gender()] - attack_damage = Clamp(attack_damage, 1, 5) // We expect damage input of 1 to 5 for this proc. But we leave this check juuust in case. + attack_damage = CLAMP(attack_damage, 1, 5) // We expect damage input of 1 to 5 for this proc. But we leave this check juuust in case. if(target == user) user.visible_message("[user] [pick(attack_verb)] [TU.himself] in the [organ]!") @@ -213,7 +213,7 @@ var/global/list/sparring_attack_cache = list() var/datum/gender/TT = gender_datums[target.get_visible_gender()] var/organ = affecting.name - attack_damage = Clamp(attack_damage, 1, 5) + attack_damage = CLAMP(attack_damage, 1, 5) switch(attack_damage) if(1 to 2) user.visible_message("[user] threw [target] a glancing [pick(attack_noun)] to the [organ]!") //it's not that they're kicking lightly, it's that the kick didn't quite connect @@ -259,7 +259,7 @@ var/global/list/sparring_attack_cache = list() var/obj/item/clothing/shoes = user.shoes var/datum/gender/TU = gender_datums[user.get_visible_gender()] - attack_damage = Clamp(attack_damage, 1, 5) + attack_damage = CLAMP(attack_damage, 1, 5) switch(attack_damage) if(1 to 4) user.visible_message("[pick("[user] stomped on", "[user] slammed [TU.his] [shoes ? copytext(shoes.name, 1, -1) : "foot"] down onto")] [target]'s [organ]!") diff --git a/code/modules/mob/living/carbon/lick_wounds.dm b/code/modules/mob/living/carbon/lick_wounds.dm new file mode 100644 index 0000000000..4c992e772c --- /dev/null +++ b/code/modules/mob/living/carbon/lick_wounds.dm @@ -0,0 +1,82 @@ +/mob/living/carbon/human/proc/lick_wounds(var/mob/living/carbon/M in living_mobs(1)) + set name = "Lick Wounds" + set category = "Abilities" + set desc = "Disinfect and heal small wounds with your saliva." + + if(nutrition < 50) + to_chat(src, "You need more energy to produce antiseptic enzymes. Eat something and try again.") + return + + if ( ! (istype(src, /mob/living/carbon/human) || \ + istype(src, /mob/living/silicon)) ) + src << "If you even have a tongue, it doesn't work that way." + return + + if (istype(M, /mob/living/carbon/human)) + var/mob/living/carbon/human/H = M + var/obj/item/organ/external/affecting = H.get_organ(src.zone_sel.selecting) + + if(!affecting) + to_chat(src, "No body part there to work on!") + return + + if(affecting.organ_tag == BP_HEAD) + if(H.head && istype(H.head,/obj/item/clothing/head/helmet/space)) + to_chat(src, "You can't seem to lick through [H.head]!") + return + + else + if(H.wear_suit && istype(H.wear_suit,/obj/item/clothing/suit/space)) + to_chat(src, "You can't lick your way through [H.wear_suit]!") + return + + if(affecting.robotic == ORGAN_ROBOT) + to_chat(src, "You don't think your spit will help a robotic limb.") + return + + if(affecting.robotic >= ORGAN_LIFELIKE) + to_chat(src, "You lick [M]'s [affecting.name], but it seems to have no effect...") + return + + if(affecting.open) + to_chat(src, "The [affecting.name] is cut open, you don't think your spit will help them!") + return + + if(affecting.is_bandaged() && affecting.is_salved()) + to_chat(src, "The wounds on [M]'s [affecting.name] have already been treated.") + return + + if(affecting.brute_dam > 20 || affecting.burn_dam > 20) + to_chat(src, "The wounds on [M]'s [affecting.name] are too severe to treat with just licking.") + return + + else + visible_message("\The [src] starts licking the wounds on [M]'s [affecting.name] clean.", \ + "You start licking the wounds on [M]'s [affecting.name] clean." ) + + for (var/datum/wound/W in affecting.wounds) + + if(W.bandaged && W.salved && W.disinfected) + continue + + if(!do_mob(src, M, W.damage/5)) + to_chat(src, "You must stand still to clean wounds.") + break + + if(affecting.is_bandaged() && affecting.is_salved()) // We do a second check after the delay, in case it was bandaged after the first check. + to_chat(src, "The wounds on [M]'s [affecting.name] have already been treated.") + return + + else + visible_message("\The [src] [pick("slathers \a [W.desc] on [M]'s [affecting.name] with their spit.", + "drags their tongue across \a [W.desc] on [M]'s [affecting.name].", + "drips saliva onto \a [W.desc] on [M]'s [affecting.name].", + "uses their tongue to disinfect \a [W.desc] on [M]'s [affecting.name].", + "licks \a [W.desc] on [M]'s [affecting.name], cleaning it.")]", \ + "You treat \a [W.desc] on [M]'s [affecting.name] with your antiseptic saliva." ) + nutrition -= 20 + W.salve() + W.bandage() + W.disinfect() + H.UpdateDamageIcon() + playsound(src.loc, 'sound/effects/ointment.ogg', 25) \ No newline at end of file diff --git a/code/modules/mob/living/carbon/metroid/items.dm b/code/modules/mob/living/carbon/metroid/items.dm index db66524a29..62a99850e1 100644 --- a/code/modules/mob/living/carbon/metroid/items.dm +++ b/code/modules/mob/living/carbon/metroid/items.dm @@ -142,7 +142,7 @@ if(M.mind) user << " The slime resists!" return ..() - var/mob/living/simple_animal/slime/pet = new /mob/living/simple_animal/slime(M.loc) + var/mob/living/simple_mob/slime/pet = new /mob/living/simple_mob/slime(M.loc) pet.icon_state = "[M.colour] [M.is_adult ? "adult" : "baby"] slime" pet.icon_living = "[M.colour] [M.is_adult ? "adult" : "baby"] slime" pet.icon_dead = "[M.colour] [M.is_adult ? "adult" : "baby"] slime dead" @@ -196,7 +196,7 @@ if(M.mind) user << " The slime resists!" return ..() - var/mob/living/simple_animal/adultslime/pet = new /mob/living/simple_animal/adultslime(M.loc) + var/mob/living/simple_mob/adultslime/pet = new /mob/living/simple_mob/adultslime(M.loc) pet.icon_state = "[M.colour] adult slime" pet.icon_living = "[M.colour] adult slime" pet.icon_dead = "[M.colour] baby slime dead" @@ -266,7 +266,7 @@ New() ..() - processing_objects.Add(src) + START_PROCESSING(SSobj, src) process() var/mob/observer/dead/ghost @@ -356,8 +356,8 @@ origin_tech = list(TECH_BIO = 4) var/grown = 0 -/obj/item/weapon/reagent_containers/food/snacks/egg/slime/New() - ..() +/obj/item/weapon/reagent_containers/food/snacks/egg/slime/Initialize() + . = ..() reagents.add_reagent("nutriment", 4) reagents.add_reagent("slimejelly", 1) spawn(rand(1200,1500))//the egg takes a while to "ripen" @@ -366,11 +366,11 @@ /obj/item/weapon/reagent_containers/food/snacks/egg/slime/proc/Grow() grown = 1 icon_state = "slime egg-grown" - processing_objects.Add(src) + START_PROCESSING(SSobj, src) return /obj/item/weapon/reagent_containers/food/snacks/egg/slime/proc/Hatch() - processing_objects.Remove(src) + STOP_PROCESSING(SSobj, src) var/turf/T = get_turf(src) src.visible_message(" The [name] pulsates and quivers!") spawn(rand(50,100)) diff --git a/code/modules/mob/living/carbon/metroid/powers.dm b/code/modules/mob/living/carbon/metroid/powers.dm index 9e20d49a44..54d35a71f8 100644 --- a/code/modules/mob/living/carbon/metroid/powers.dm +++ b/code/modules/mob/living/carbon/metroid/powers.dm @@ -21,7 +21,7 @@ return "I cannot feed on other slimes..." if (!Adjacent(M)) return "This subject is too far away..." - if (istype(M, /mob/living/carbon) && M.getCloneLoss() >= M.getMaxHealth() * 1.5 || istype(M, /mob/living/simple_animal) && M.stat == DEAD) + if (istype(M, /mob/living/carbon) && M.getCloneLoss() >= M.getMaxHealth() * 1.5 || istype(M, /mob/living/simple_mob) && M.stat == DEAD) return "This subject does not have an edible life energy..." for(var/mob/living/carbon/slime/met in view()) if(met.Victim == M && met != src) @@ -48,7 +48,7 @@ if(Victim.health <= 0) Victim.adjustToxLoss(rand(2,4)) - else if(istype(M, /mob/living/simple_animal)) + else if(istype(M, /mob/living/simple_mob)) Victim.adjustBruteLoss(is_adult ? rand(7, 15) : rand(4, 12)) else @@ -165,4 +165,4 @@ else src << "I am not ready to reproduce yet..." else - src << "I am not old enough to reproduce yet..." \ No newline at end of file + src << "I am not old enough to reproduce yet..." diff --git a/code/modules/mob/living/carbon/resist.dm b/code/modules/mob/living/carbon/resist.dm index a86189d5f5..1607559336 100644 --- a/code/modules/mob/living/carbon/resist.dm +++ b/code/modules/mob/living/carbon/resist.dm @@ -153,11 +153,6 @@ legcuffed = null update_inv_legcuffed() -/mob/living/carbon/human/can_break_cuffs() - if(species.can_shred(src,1)) - return 1 - return ..() - /mob/living/carbon/escape_buckle() if(!buckled) return diff --git a/code/modules/mob/living/damage_procs.dm b/code/modules/mob/living/damage_procs.dm index 07997851ef..37d9e43b37 100644 --- a/code/modules/mob/living/damage_procs.dm +++ b/code/modules/mob/living/damage_procs.dm @@ -36,6 +36,11 @@ adjustHalLoss(damage * blocked) if(ELECTROCUTE) electrocute_act(damage, used_weapon, 1.0, def_zone) + if(BIOACID) + if(isSynthetic()) + adjustFireLoss(damage * blocked) + else + adjustToxLoss(damage * blocked) flash_weak_pain() updatehealth() return 1 diff --git a/code/modules/mob/living/death.dm b/code/modules/mob/living/death.dm index a5da193678..809b82af54 100644 --- a/code/modules/mob/living/death.dm +++ b/code/modules/mob/living/death.dm @@ -1,12 +1,7 @@ -/mob/living/death() +/mob/living/death(gibbed) clear_fullscreens() - reveal(TRUE) //Silently reveal the mob if they were hidden. - //VOREStation Edit - Mob spawner stuff - if(source_spawner) - source_spawner.get_death_report(src) - source_spawner = null - //VOREStation Edit End - . = ..() + if(ai_holder) + ai_holder.go_sleep() if(nest) //Ew. if(istype(nest, /obj/structure/prop/nest)) @@ -16,4 +11,12 @@ var/obj/structure/blob/factory/F = nest F.spores -= src nest = null + + for(var/s in owned_soul_links) + var/datum/soul_link/S = s + S.owner_died(gibbed) + for(var/s in shared_soul_links) + var/datum/soul_link/S = s + S.sharer_died(gibbed) + . = ..() diff --git a/code/modules/mob/living/life.dm b/code/modules/mob/living/life.dm index 02131c8cd0..24d56945b8 100644 --- a/code/modules/mob/living/life.dm +++ b/code/modules/mob/living/life.dm @@ -110,6 +110,7 @@ handle_silent() handle_drugged() handle_slurring() + handle_confused() /mob/living/proc/handle_stunned() if(stunned) @@ -146,6 +147,11 @@ AdjustParalysis(-1) return paralysis +/mob/living/proc/handle_confused() + if(confused) + AdjustConfused(-1) + return confused + /mob/living/proc/handle_disabilities() //Eyes if(sdisabilities & BLIND || stat) //blindness from disability or unconsciousness doesn't get better on its own diff --git a/code/modules/mob/living/living.dm b/code/modules/mob/living/living.dm index 3bcfbe7b60..f300f8a350 100644 --- a/code/modules/mob/living/living.dm +++ b/code/modules/mob/living/living.dm @@ -16,6 +16,8 @@ dsma.blend_mode = BLEND_ADD dsoverlay.appearance = dsma + selected_image = image(icon = 'icons/mob/screen1.dmi', loc = src, icon_state = "centermarker") + /mob/living/Destroy() dsoverlay.loc = null //I'll take my coat with me dsoverlay = null @@ -29,6 +31,7 @@ nest = null if(buckled) buckled.unbuckle_mob(src, TRUE) + qdel(selected_image) return ..() //mob verbs are faster than object verbs. See mob/verb/examine. @@ -77,150 +80,148 @@ default behaviour is: return 1 return 0 -/mob/living/Bump(atom/movable/AM, yes) - spawn(0) - if ((!( yes ) || now_pushing) || !loc) - return - now_pushing = 1 - if (istype(AM, /mob/living)) - var/mob/living/tmob = AM +/mob/living/Bump(atom/movable/AM) + if(now_pushing || !loc) + return + now_pushing = 1 + if (istype(AM, /mob/living)) + var/mob/living/tmob = AM - //Even if we don't push/swap places, we "touched" them, so spread fire - spread_fire(tmob) + //Even if we don't push/swap places, we "touched" them, so spread fire + spread_fire(tmob) - for(var/mob/living/M in range(tmob, 1)) - if(tmob.pinned.len || ((M.pulling == tmob && ( tmob.restrained() && !( M.restrained() ) && M.stat == 0)) || locate(/obj/item/weapon/grab, tmob.grabbed_by.len)) ) - if ( !(world.time % 5) ) - to_chat(src, "[tmob] is restrained, you cannot push past") - now_pushing = 0 - return - if( tmob.pulling == M && ( M.restrained() && !( tmob.restrained() ) && tmob.stat == 0) ) - if ( !(world.time % 5) ) - to_chat(src, "[tmob] is restraining [M], you cannot push past") - now_pushing = 0 - return + for(var/mob/living/M in range(tmob, 1)) + if(tmob.pinned.len || ((M.pulling == tmob && ( tmob.restrained() && !( M.restrained() ) && M.stat == 0)) || locate(/obj/item/weapon/grab, tmob.grabbed_by.len)) ) + if ( !(world.time % 5) ) + to_chat(src, "[tmob] is restrained, you cannot push past") + now_pushing = 0 + return + if( tmob.pulling == M && ( M.restrained() && !( tmob.restrained() ) && tmob.stat == 0) ) + if ( !(world.time % 5) ) + to_chat(src, "[tmob] is restraining [M], you cannot push past") + now_pushing = 0 + return - //BubbleWrap: people in handcuffs are always switched around as if they were on 'help' intent to prevent a person being pulled from being seperated from their puller - var/dense = 0 - if(loc.density) - dense = 1 + //BubbleWrap: people in handcuffs are always switched around as if they were on 'help' intent to prevent a person being pulled from being seperated from their puller + var/can_swap = 1 + if(loc.density || tmob.loc.density) + can_swap = 0 + if(can_swap) for(var/atom/movable/A in loc) if(A == src) continue - if(A.density) - if(A.flags&ON_BORDER) - dense = !A.CanPass(src, src.loc) - else - dense = 1 - if(dense) break + if(!A.CanPass(tmob, loc)) + can_swap = 0 + if(!can_swap) break + if(can_swap) + for(var/atom/movable/A in tmob.loc) + if(A == tmob) + continue + if(!A.CanPass(src, tmob.loc)) + can_swap = 0 + if(!can_swap) break - //Leaping mobs just land on the tile, no pushing, no anything. - if(status_flags & LEAPING) - loc = tmob.loc - status_flags &= ~LEAPING - now_pushing = 0 - return - - if((tmob.mob_always_swap || (tmob.a_intent == I_HELP || tmob.restrained()) && (a_intent == I_HELP || src.restrained())) && tmob.canmove && canmove && !tmob.buckled && !buckled && !dense && can_move_mob(tmob, 1, 0)) // mutual brohugs all around! - var/turf/oldloc = loc - forceMove(tmob.loc) - - //VOREstation Edit - Begin - if (istype(tmob, /mob/living/simple_animal)) //check bumpnom chance, if it's a simplemob that's bumped - tmob.Bumped(src) - else if(istype(src, /mob/living/simple_animal)) //otherwise, if it's a simplemob doing the bumping. Simplemob on simplemob doesn't seem to trigger but that's fine. - Bumped(tmob) - if (tmob.loc == src) //check if they got ate, and if so skip the forcemove - now_pushing = 0 - return - - // In case of micros, we don't swap positions; instead occupying the same square! - if (handle_micro_bump_helping(tmob)) - now_pushing = 0 - return - // TODO - Check if we need to do something about the slime.UpdateFeed() we are skipping below. - // VOREStation Edit - End - - tmob.forceMove(oldloc) - now_pushing = 0 - return - - if(!can_move_mob(tmob, 0, 0)) - now_pushing = 0 - return - if(a_intent == I_HELP || src.restrained()) - now_pushing = 0 - return - - // VOREStation Edit - Begin - // Plow that nerd. - if(ishuman(tmob)) - var/mob/living/carbon/human/H = tmob - if(H.species.lightweight == 1 && prob(50)) - H.visible_message("[src] bumps into [H], knocking them off balance!") - H.Weaken(5) - now_pushing = 0 - return - // Handle grabbing, stomping, and such of micros! - if(handle_micro_bump_other(tmob)) return - // VOREStation Edit - End - - if(istype(tmob, /mob/living/carbon/human) && (FAT in tmob.mutations)) - if(prob(40) && !(FAT in src.mutations)) - to_chat(src, "You fail to push [tmob]'s fat ass out of the way.") - now_pushing = 0 - return - if(tmob.r_hand && istype(tmob.r_hand, /obj/item/weapon/shield/riot)) - if(prob(99)) - now_pushing = 0 - return - if(tmob.l_hand && istype(tmob.l_hand, /obj/item/weapon/shield/riot)) - if(prob(99)) - now_pushing = 0 - return - if(!(tmob.status_flags & CANPUSH)) - now_pushing = 0 - return - - tmob.LAssailant = src - - now_pushing = 0 - spawn(0) - ..() - if (!istype(AM, /atom/movable) || AM.anchored) - //VOREStation Edit - object-specific proc for running into things - if(((confused || is_blind()) && stat == CONSCIOUS && prob(50) && m_intent=="run") || flying) - AM.stumble_into(src) - //VOREStation Edit End - /* VOREStation Removal - See above - Weaken(2) - playsound(loc, "punch", 25, 1, -1) - visible_message("[src] [pick("ran", "slammed")] into \the [AM]!") - src.apply_damage(5, BRUTE) - src << ("You just [pick("ran", "slammed")] into \the [AM]!") - to_chat(src, "You just [pick("ran", "slammed")] into \the [AM]!") - */ // VOREStation Removal End - return - if (!now_pushing) - if(isobj(AM)) - var/obj/I = AM - if(!can_pull_size || can_pull_size < I.w_class) - return - now_pushing = 1 - - var/t = get_dir(src, AM) - if (istype(AM, /obj/structure/window)) - for(var/obj/structure/window/win in get_step(AM,t)) - now_pushing = 0 - return - step(AM, t) - if(ishuman(AM) && AM:grabbed_by) - for(var/obj/item/weapon/grab/G in AM:grabbed_by) - step(G:assailant, get_dir(G:assailant, AM)) - G.adjust_position() - now_pushing = 0 + //Leaping mobs just land on the tile, no pushing, no anything. + if(status_flags & LEAPING) + loc = tmob.loc + status_flags &= ~LEAPING + now_pushing = 0 return - return + + if((tmob.mob_always_swap || (tmob.a_intent == I_HELP || tmob.restrained()) && (a_intent == I_HELP || src.restrained())) && tmob.canmove && canmove && !tmob.buckled && !buckled && can_swap && can_move_mob(tmob, 1, 0)) // mutual brohugs all around! + var/turf/oldloc = loc + forceMove(tmob.loc) + //VOREstation Edit - Begin + if (istype(tmob, /mob/living/simple_mob)) //check bumpnom chance, if it's a simplemob that's bumped + tmob.Bumped(src) + else if(istype(src, /mob/living/simple_mob)) //otherwise, if it's a simplemob doing the bumping. Simplemob on simplemob doesn't seem to trigger but that's fine. + Bumped(tmob) + if (tmob.loc == src) //check if they got ate, and if so skip the forcemove + now_pushing = 0 + return + + // In case of micros, we don't swap positions; instead occupying the same square! + if (handle_micro_bump_helping(tmob)) + now_pushing = 0 + return + // TODO - Check if we need to do something about the slime.UpdateFeed() we are skipping below. + // VOREStation Edit - End + tmob.forceMove(oldloc) + now_pushing = 0 + return + + if(!can_move_mob(tmob, 0, 0)) + now_pushing = 0 + return + if(a_intent == I_HELP || src.restrained()) + now_pushing = 0 + return + // VOREStation Edit - Begin + // Plow that nerd. + if(ishuman(tmob)) + var/mob/living/carbon/human/H = tmob + if(H.species.lightweight == 1 && prob(50)) + H.visible_message("[src] bumps into [H], knocking them off balance!") + H.Weaken(5) + now_pushing = 0 + return + // Handle grabbing, stomping, and such of micros! + if(handle_micro_bump_other(tmob)) return + // VOREStation Edit - End + if(istype(tmob, /mob/living/carbon/human) && (FAT in tmob.mutations)) + if(prob(40) && !(FAT in src.mutations)) + to_chat(src, "You fail to push [tmob]'s fat ass out of the way.") + now_pushing = 0 + return + if(tmob.r_hand && istype(tmob.r_hand, /obj/item/weapon/shield/riot)) + if(prob(99)) + now_pushing = 0 + return + + if(tmob.l_hand && istype(tmob.l_hand, /obj/item/weapon/shield/riot)) + if(prob(99)) + now_pushing = 0 + return + if(!(tmob.status_flags & CANPUSH)) + now_pushing = 0 + return + + tmob.LAssailant = src + + now_pushing = 0 + . = ..() + if (!istype(AM, /atom/movable) || AM.anchored) + //VOREStation Edit - object-specific proc for running into things + if(((confused || is_blind()) && stat == CONSCIOUS && prob(50) && m_intent=="run") || flying) + AM.stumble_into(src) + //VOREStation Edit End + /* VOREStation Removal - See above + if(confused && prob(50) && m_intent=="run") + Weaken(2) + playsound(loc, "punch", 25, 1, -1) + visible_message("[src] [pick("ran", "slammed")] into \the [AM]!") + src.apply_damage(5, BRUTE) + to_chat(src, "You just [pick("ran", "slammed")] into \the [AM]!") + */ // VOREStation Removal End + return + if (!now_pushing) + if(isobj(AM)) + var/obj/I = AM + if(!can_pull_size || can_pull_size < I.w_class) + return + now_pushing = 1 + + var/t = get_dir(src, AM) + if (istype(AM, /obj/structure/window)) + for(var/obj/structure/window/win in get_step(AM,t)) + now_pushing = 0 + return + step(AM, t) + if(ishuman(AM) && AM:grabbed_by) + for(var/obj/item/weapon/grab/G in AM:grabbed_by) + step(G:assailant, get_dir(G:assailant, AM)) + G.adjust_position() + now_pushing = 0 /mob/living/CanPass(atom/movable/mover, turf/target) if(istype(mover, /obj/structure/blob) && faction == "blob") //Blobs should ignore things on their faction. @@ -550,6 +551,36 @@ default behaviour is: // ++++ROCKDTBEN++++ MOB PROCS //END +// Applies direct "cold" damage while checking protection against the cold. +/mob/living/proc/inflict_cold_damage(amount) + amount *= 1 - get_cold_protection(50) // Within spacesuit protection. + if(amount > 0) + adjustFireLoss(amount) + +// Ditto, but for "heat". +/mob/living/proc/inflict_heat_damage(amount) + amount *= 1 - get_heat_protection(10000) // Within firesuit protection. + if(amount > 0) + adjustFireLoss(amount) + +// and one for electricity because why not +/mob/living/proc/inflict_shock_damage(amount) + electrocute_act(amount, null, 1 - get_shock_protection(), pick(BP_HEAD, BP_TORSO, BP_GROIN)) + +// also one for water (most things resist it entirely, except for slimes) +/mob/living/proc/inflict_water_damage(amount) + amount *= 1 - get_water_protection() + if(amount > 0) + adjustToxLoss(amount) + +// one for abstracted away ""poison"" (mostly because simplemobs shouldn't handle reagents) +/mob/living/proc/inflict_poison_damage(amount) + if(isSynthetic()) + return + amount *= 1 - get_poison_protection() + if(amount > 0) + adjustToxLoss(amount) + /mob/proc/get_contents() @@ -663,6 +694,8 @@ default behaviour is: BITSET(hud_updateflag, LIFE_HUD) ExtinguishMob() fire_stacks = 0 + if(ai_holder) // AI gets told to sleep when killed. Since they're not dead anymore, wake it up. + ai_holder.go_wake() /mob/living/proc/rejuvenate() if(reagents) @@ -739,7 +772,6 @@ default behaviour is: return /mob/living/Move(a, b, flag) - if (buckled && buckled.loc != a) //not updating position if(istype(buckled, /mob)) //If you're buckled to a mob, a la slime things, keep on rolling. return buckled.Move(a, b) @@ -825,18 +857,24 @@ default behaviour is: if(istype(location, /turf/simulated)) location.add_blood(M) - step(pulling, get_dir(pulling.loc, T)) - if(t) - M.start_pulling(t) + if(get_dist(pulling.loc, T) > 1 || pulling.loc.z != T.z) + M.stop_pulling() + else + step(pulling, get_dir(pulling.loc, T)) + if(t) + M.start_pulling(t) else if (pulling) if (istype(pulling, /obj/structure/window)) var/obj/structure/window/W = pulling - if(W.is_full_window()) + if(W.is_fulltile()) for(var/obj/structure/window/win in get_step(pulling,get_dir(pulling.loc, T))) stop_pulling() - if (pulling) - step(pulling, get_dir(pulling.loc, T)) + + if(get_dist(pulling.loc, T) > 1 || pulling.loc.z != T.z) // This is needed or else pulled objects can't get pushed away. + stop_pulling() + else + step(pulling, get_dir(pulling.loc, T)) else stop_pulling() . = ..() @@ -891,7 +929,7 @@ default behaviour is: // Update whether or not this mob needs to pass emotes to contents. for(var/atom/A in M.contents) - if(istype(A,/mob/living/simple_animal/borer) || istype(A,/obj/item/weapon/holder)) + if(istype(A,/mob/living/simple_mob/animal/borer) || istype(A,/obj/item/weapon/holder)) return else if(istype(H.loc,/obj/item/clothing/accessory/holster)) @@ -1295,4 +1333,22 @@ default behaviour is: /mob/living/proc/dirties_floor() // If we ever decide to add fancy conditionals for making dirty floors (floating, etc), here's the proc. - return makes_dirt \ No newline at end of file + return makes_dirt + +/mob/living/proc/needs_to_breathe() + return !isSynthetic() + +/mob/living/vv_get_header() + . = ..() + . += {" +
      [src] +
      [ckey ? ckey : "No ckey"] / [real_name ? real_name : "No real name"] +
      + BRUTE:[getBruteLoss()] + FIRE:[getFireLoss()] + TOXIN:[getToxLoss()] + OXY:[getOxyLoss()] + CLONE:[getCloneLoss()] + BRAIN:[getBrainLoss()] +
      + "} diff --git a/code/modules/mob/living/living_defense.dm b/code/modules/mob/living/living_defense.dm index 08d35e5de2..b3ee75349c 100644 --- a/code/modules/mob/living/living_defense.dm +++ b/code/modules/mob/living/living_defense.dm @@ -92,6 +92,13 @@ /mob/living/proc/getsoak(var/def_zone, var/type) return 0 +// Clicking with an empty hand +/mob/living/attack_hand(mob/living/L) + ..() + if(istype(L) && L.a_intent != I_HELP) + if(ai_holder) // Using disarm, grab, or harm intent is considered a hostile action to the mob's AI. + ai_holder.react_to_attack(L) + /mob/living/bullet_act(var/obj/item/projectile/P, var/def_zone) //Being hit while using a deadman switch @@ -102,6 +109,9 @@ src.visible_message("[src] triggers their deadman's switch!") signaler.signal() + if(ai_holder && P.firer) + ai_holder.react_to_attack(P.firer) + //Armor var/soaked = get_armor_soak(def_zone, P.check_armour, P.armor_penetration) var/absorb = run_armor_check(def_zone, P.check_armour, P.armor_penetration) @@ -267,6 +277,8 @@ var/client/assailant = M.client if(assailant) add_attack_logs(M,src,"Hit by thrown [O.name]") + if(ai_holder) + ai_holder.react_to_attack(O.thrower) // Begin BS12 momentum-transfer code. var/mass = 1.5 @@ -287,7 +299,7 @@ if(soaked >= round(throw_damage*0.8)) return - //Handles embedding for non-humans and simple_animals. + //Handles embedding for non-humans and simple_mobs. embed(O) var/turf/T = near_wall(dir,2) @@ -324,12 +336,13 @@ // End BS12 momentum-transfer code. /mob/living/attack_generic(var/mob/user, var/damage, var/attack_message) - if(!damage) return adjustBruteLoss(damage) - add_attack_logs(user,src,"Generic attack (probably animal)", admin_notify = FALSE) //Usually due to simple_animal attacks + add_attack_logs(user,src,"Generic attack (probably animal)", admin_notify = FALSE) //Usually due to simple_mob attacks + if(ai_holder) + ai_holder.react_to_attack(user) src.visible_message("[user] has [attack_message] [src]!") user.do_attack_animation(src) spawn(1) updatehealth() @@ -352,7 +365,7 @@ return /mob/living/proc/adjust_fire_stacks(add_fire_stacks) //Adjusting the amount of fire_stacks we have on person - fire_stacks = Clamp(fire_stacks + add_fire_stacks, FIRE_MIN_STACKS, FIRE_MAX_STACKS) + fire_stacks = CLAMP(fire_stacks + add_fire_stacks, FIRE_MIN_STACKS, FIRE_MAX_STACKS) /mob/living/proc/handle_fire() if(fire_stacks < 0) @@ -412,6 +425,15 @@ /mob/living/proc/get_heat_protection() return 0 +/mob/living/proc/get_shock_protection() + return 0 + +/mob/living/proc/get_water_protection() + return 1 // Water won't hurt most things. + +/mob/living/proc/get_poison_protection() + return 0 + //Finds the effective temperature that the mob is burning at. /mob/living/proc/fire_burn_temperature() if (fire_stacks <= 0) @@ -421,6 +443,22 @@ //lower limit of 700 K, same as matches and roughly the temperature of a cool flame. return max(2.25*round(FIRESUIT_MAX_HEAT_PROTECTION_TEMPERATURE*(fire_stacks/FIRE_MAX_FIRESUIT_STACKS)**2), 700) +// Called when struck by lightning. +/mob/living/proc/lightning_act() + // The actual damage/electrocution is handled by the tesla_zap() that accompanies this. + Paralyse(5) + stuttering += 20 + make_jittery(150) + emp_act(1) + to_chat(src, span("critical", "You've been struck by lightning!")) + +// Called when touching a lava tile. +// Does roughly 100 damage to unprotected mobs, and 20 to fully protected mobs. +/mob/living/lava_act() + add_modifier(/datum/modifier/fire/intense, 8 SECONDS) // Around 40 total if left to burn and without fire protection per stack. + inflict_heat_damage(40) // Another 40, however this is instantly applied to unprotected mobs. + adjustFireLoss(20) // Lava cannot be 100% resisted with fire protection. + /mob/living/proc/reagent_permeability() return 1 return round(FIRESUIT_MAX_HEAT_PROTECTION_TEMPERATURE*(fire_stacks/FIRE_MAX_FIRESUIT_STACKS)**2) diff --git a/code/modules/mob/living/living_defines.dm b/code/modules/mob/living/living_defines.dm index 9486eb9960..8e3b9fb9a4 100644 --- a/code/modules/mob/living/living_defines.dm +++ b/code/modules/mob/living/living_defines.dm @@ -5,6 +5,8 @@ var/maxHealth = 100 //Maximum health that should be possible. Avoid adjusting this if you can, and instead use modifiers datums. var/health = 100 //A mob's health + var/mob_class = null // A mob's "class", e.g. human, mechanical, animal, etc. Used for certain projectile effects. See __defines/mob.dm for available classes. + var/hud_updateflag = 0 //Damage related vars, NOTE: THESE SHOULD ONLY BE MODIFIED BY PROCS @@ -20,6 +22,7 @@ var/list/atom/hallucinations = list() //A list of hallucinated people that try to attack the mob. See /obj/effect/fake_attacker in hallucinations.dm var/last_special = 0 //Used by the resist verb, likely used to prevent players from bypassing next_move by logging in/out. + var/base_attack_cooldown = DEFAULT_ATTACK_COOLDOWN var/t_phoron = null var/t_oxygen = null @@ -64,4 +67,5 @@ var/makes_dirt = TRUE //FALSE if the mob shouldn't be making dirt on the ground when it walks var/looking_elsewhere = FALSE //If the mob's view has been relocated to somewhere else, like via a camera or with binocs - \ No newline at end of file + + var/image/selected_image = null // Used for buildmode AI control stuff. \ No newline at end of file diff --git a/code/modules/mob/living/living_movement.dm b/code/modules/mob/living/living_movement.dm new file mode 100644 index 0000000000..3f6c8411d1 --- /dev/null +++ b/code/modules/mob/living/living_movement.dm @@ -0,0 +1,12 @@ +/mob/CanPass(atom/movable/mover, turf/target) + if(ismob(mover)) + var/mob/moving_mob = mover + if ((other_mobs && moving_mob.other_mobs)) + return TRUE + if(istype(mover, /obj/item/projectile)) + var/obj/item/projectile/P = mover + return !P.can_hit_target(src, P.permutated, src == P.original, TRUE) + return (!mover.density || !density || lying) + +/mob/CanZASPass(turf/T, is_zone) + return ATMOS_PASS_YES \ No newline at end of file diff --git a/code/modules/mob/living/login.dm b/code/modules/mob/living/login.dm index 275e88be08..96d59dc330 100644 --- a/code/modules/mob/living/login.dm +++ b/code/modules/mob/living/login.dm @@ -8,4 +8,9 @@ update_antag_icons(mind) client.screen |= global_hud.darksight client.images |= dsoverlay + + if(ai_holder && !ai_holder.autopilot) + ai_holder.go_sleep() + to_chat(src,"Mob AI disabled while you are controlling the mob.") + return . diff --git a/code/modules/mob/living/logout.dm b/code/modules/mob/living/logout.dm index 577221a03e..fa04b0b317 100644 --- a/code/modules/mob/living/logout.dm +++ b/code/modules/mob/living/logout.dm @@ -1,6 +1,11 @@ /mob/living/Logout() ..() - if (mind) + if (mind) //Per BYOND docs key remains set if the player DCs, becomes null if switching bodies. - if(!key) //key and mind have become seperated. + if(!key) //key and mind have become seperated. mind.active = 0 //This is to stop say, a mind.transfer_to call on a corpse causing a ghost to re-enter its body. + + spawn(15 SECONDS) //15 seconds to get back into the mob before it goes wild + if(src && !src.client) + if(ai_holder) + ai_holder.go_wake() diff --git a/code/modules/mob/living/say.dm b/code/modules/mob/living/say.dm index 49b5be1d19..02900ffe1a 100644 --- a/code/modules/mob/living/say.dm +++ b/code/modules/mob/living/say.dm @@ -138,7 +138,7 @@ proc/get_radio_key_from_channel(var/channel) if(message) client.handle_spam_prevention(MUTE_IC) if((client.prefs.muted & MUTE_IC) || say_disabled) - src << "You cannot speak in IC (Muted)." + to_chat(src, "You cannot speak in IC (Muted).") return //Redirect to say_dead if talker is dead @@ -172,10 +172,22 @@ proc/get_radio_key_from_channel(var/channel) //Parse the language code and consume it if(!speaking) speaking = parse_language(message) + + if(!speaking) + speaking = get_default_language() + + if(!can_speak(speaking)) + speaking = all_languages[LANGUAGE_GIBBERISH] + var/babble_key = ",r" + message = babble_key + message + + if(speaking == get_default_language()) + var/new_message = ",[speaking.key]" + new_message += message + message = new_message + if(speaking) message = copytext(message,2+length(speaking.key)) - else - speaking = get_default_language() //HIVEMIND languages always send to all people with that language if(speaking && (speaking.flags & HIVEMIND)) @@ -184,7 +196,7 @@ proc/get_radio_key_from_channel(var/channel) //Self explanatory. if(is_muzzled() && !(speaking && (speaking.flags & SIGNLANG))) - src << "You're muzzled and cannot speak!" + to_chat(src, "You're muzzled and cannot speak!") return //Clean up any remaining junk on the left like spaces. diff --git a/code/modules/mob/living/silicon/ai/ai.dm b/code/modules/mob/living/silicon/ai/ai.dm index cc795d088d..94acfd82dc 100644 --- a/code/modules/mob/living/silicon/ai/ai.dm +++ b/code/modules/mob/living/silicon/ai/ai.dm @@ -49,10 +49,10 @@ var/list/ai_verbs_default = list( shouldnt_see = list(/obj/effect/rune) var/list/network = list(NETWORK_DEFAULT) var/obj/machinery/camera/camera = null - var/list/connected_robots = list() var/aiRestorePowerRoutine = 0 var/viewalerts = 0 var/icon/holo_icon//Default is assigned when AI is created. + var/list/connected_robots = list() var/obj/item/device/pda/ai/aiPDA = null var/obj/item/device/communicator/aiCommunicator = null var/obj/item/device/multitool/aiMulti = null @@ -161,6 +161,7 @@ var/list/ai_verbs_default = list( add_language(LANGUAGE_SIGN, 1) add_language(LANGUAGE_ROOTLOCAL, 1) add_language(LANGUAGE_TERMINUS, 1) + add_language(LANGUAGE_ZADDAT, 1) if(!safety)//Only used by AIize() to successfully spawn an AI. if (!B)//If there is no player/brain inside. @@ -226,6 +227,28 @@ var/list/ai_verbs_default = list( return ..() +/mob/living/silicon/ai/Stat() + ..() + if(statpanel("Status")) + if(!stat) // Make sure we're not unconscious/dead. + stat(null, text("System integrity: [(health+100)/2]%")) + stat(null, text("Connected synthetics: [connected_robots.len]")) + for(var/mob/living/silicon/robot/R in connected_robots) + var/robot_status = "Nominal" + if(R.shell) + robot_status = "AI SHELL" + else if(R.stat || !R.client) + robot_status = "OFFLINE" + else if(!R.cell || R.cell.charge <= 0) + robot_status = "DEPOWERED" + //Name, Health, Battery, Module, Area, and Status! Everything an AI wants to know about its borgies! + stat(null, text("[R.name] | S.Integrity: [R.health]% | Cell: [R.cell ? "[R.cell.charge]/[R.cell.maxcharge]" : "Empty"] | \ + Module: [R.modtype] | Loc: [get_area_name(R, TRUE)] | Status: [robot_status]")) + stat(null, text("AI shell beacons detected: [LAZYLEN(GLOB.available_ai_shells)]")) //Count of total AI shells + else + stat(null, text("Systems nonfunctional")) + + /mob/living/silicon/ai/proc/setup_icon() var/file = file2text("config/custom_sprites.txt") var/lines = splittext(file, "\n") @@ -410,6 +433,7 @@ var/list/ai_verbs_default = list( return 0 /mob/living/silicon/ai/emp_act(severity) + disconnect_shell("Disconnected from remote shell due to ionic interfe%*@$^___") if (prob(30)) view_core() ..() @@ -695,8 +719,8 @@ var/list/ai_verbs_default = list( card.grab_ai(src, user) else if(W.is_wrench()) - if(user == controlling_drone) - to_chat(user, "The drone's subsystems resist your efforts to tamper with your bolts.") + if(user == deployed_shell) + to_chat(user, "The shell's subsystems resist your efforts to tamper with your bolts.") return if(anchored) playsound(src, W.usesound, 50, 1) @@ -810,7 +834,7 @@ var/list/ai_verbs_default = list( /mob/living/silicon/ai/announcer/ is_dummy = 1 -/mob/living/silicon/ai/announcer/initialize() +/mob/living/silicon/ai/announcer/Initialize() . = ..() mob_list -= src living_mob_list -= src diff --git a/code/modules/mob/living/silicon/ai/ai_remote_control.dm b/code/modules/mob/living/silicon/ai/ai_remote_control.dm new file mode 100644 index 0000000000..cef8cec7e8 --- /dev/null +++ b/code/modules/mob/living/silicon/ai/ai_remote_control.dm @@ -0,0 +1,62 @@ +/mob/living/silicon/ai + var/mob/living/silicon/robot/deployed_shell = null //For shell control + +/mob/living/silicon/ai/Initialize() + if(config.allow_ai_shells) + verbs += /mob/living/silicon/ai/proc/deploy_to_shell_act + return ..() + +/mob/living/silicon/ai/proc/deploy_to_shell(var/mob/living/silicon/robot/target) + if(!config.allow_ai_shells) + to_chat(src, span("warning", "AI Shells are not allowed on this server. You shouldn't have this verb because of it, so consider making a bug report.")) + return + + if(incapacitated()) + to_chat(src, span("warning", "You are incapacitated!")) + return + + if(lacks_power()) + to_chat(src, span("warning", "Your core lacks power, wireless is disabled.")) + return + + if(control_disabled) + to_chat(src, span("warning", "Wireless networking module is offline.")) + return + + var/list/possible = list() + + for(var/borgie in GLOB.available_ai_shells) + var/mob/living/silicon/robot/R = borgie + if(R.shell && !R.deployed && (R.stat != DEAD) && (!R.connected_ai || (R.connected_ai == src) ) ) + possible += R + + if(!LAZYLEN(possible)) + to_chat(src, span("warning", "No usable AI shell beacons detected.")) + + if(!target || !(target in possible)) //If the AI is looking for a new shell, or its pre-selected shell is no longer valid + target = input(src, "Which body to control?") as null|anything in possible + + if(!target || target.stat == DEAD || target.deployed || !(!target.connected_ai || (target.connected_ai == src) ) ) + if(target) + to_chat(src, span("warning", "It is no longer possible to deploy to \the [target].")) + else + to_chat(src, span("notice", "Deployment aborted.")) + return + + else if(mind) + soul_link(/datum/soul_link/shared_body, src, target) + deployed_shell = target + target.deploy_init(src) + mind.transfer_to(target) + teleop = target // So the AI 'hears' messages near its core. + target.post_deploy() + +/mob/living/silicon/ai/proc/deploy_to_shell_act() + set category = "AI Commands" + set name = "Deploy to Shell" + deploy_to_shell() // This is so the AI is not prompted with a list of all mobs when using the 'real' proc. + +/mob/living/silicon/ai/proc/disconnect_shell(message = "Your remote connection has been reset!") + if(deployed_shell) // Forcibly call back AI in event of things such as damage, EMP or power loss. + message = span("danger", message) + deployed_shell.undeploy(message) diff --git a/code/modules/mob/living/silicon/ai/death.dm b/code/modules/mob/living/silicon/ai/death.dm index 3bcbd7057b..d6d5baf1d9 100644 --- a/code/modules/mob/living/silicon/ai/death.dm +++ b/code/modules/mob/living/silicon/ai/death.dm @@ -3,8 +3,8 @@ if(stat == DEAD) return - if(controlling_drone) - controlling_drone.release_ai_control("WARNING: Primary control loop failure. Session terminated.") + if(deployed_shell) + disconnect_shell("Disconnecting from remote shell due to critical system failure.") . = ..(gibbed) if(src.eyeobj) diff --git a/code/modules/mob/living/silicon/ai/examine.dm b/code/modules/mob/living/silicon/ai/examine.dm index d00ba6d8d7..5c2ced94e9 100644 --- a/code/modules/mob/living/silicon/ai/examine.dm +++ b/code/modules/mob/living/silicon/ai/examine.dm @@ -28,6 +28,8 @@ if (src.stat == UNCONSCIOUS) msg += "It is non-responsive and displaying the text: \"RUNTIME: Sensory Overload, stack 26/3\".\n" msg += "" + if(deployed_shell) + msg += "The wireless networking light is blinking.\n" msg += "*---------*" if(hardware && (hardware.owner == src)) msg += "
      " diff --git a/code/modules/mob/living/silicon/ai/icons.dm b/code/modules/mob/living/silicon/ai/icons.dm index c9891f9ae8..5f12bd384b 100644 --- a/code/modules/mob/living/silicon/ai/icons.dm +++ b/code/modules/mob/living/silicon/ai/icons.dm @@ -28,14 +28,14 @@ var/list/datum/ai_icon/ai_icons name = "Red" alive_icon = "ai-red" alive_light = "#F04848" - dead_icon = "ai-red_dead" + dead_icon = "ai-red-crash" dead_light = "#F04848" /datum/ai_icon/green name = "Green" alive_icon = "ai-wierd" alive_light = "#00FF99" - dead_icon = "ai-weird_dead" + dead_icon = "ai-weird-crash" /datum/ai_icon/blue name = "Blue" @@ -50,7 +50,7 @@ var/list/datum/ai_icon/ai_icons /datum/ai_icon/angel name = "Angel" alive_icon = "ai-angel" - dead_icon = "ai-angel_dead" + dead_icon = "ai-angel-crash" /datum/ai_icon/bliss name = "Bliss" @@ -65,7 +65,7 @@ var/list/datum/ai_icon/ai_icons /datum/ai_icon/database name = "Database" alive_icon = "ai-database" - dead_icon = "ai-database_dead" + dead_icon = "ai-database-crash" /datum/ai_icon/dorf name = "Dorf" @@ -96,7 +96,7 @@ var/list/datum/ai_icon/ai_icons /datum/ai_icon/heartline name = "Heartline" alive_icon = "ai-heartline" - dead_icon = "ai-heartline_dead" + dead_icon = "ai-heartline-crash" /datum/ai_icon/helios name = "Helios" @@ -117,7 +117,7 @@ var/list/datum/ai_icon/ai_icons name = "Lonestar" alive_icon = "ai-lonestar" alive_light = "#58751C" - dead_icon = "ai-lonestar_dead" + dead_icon = "ai-lonestar-crash" /datum/ai_icon/matrix name = "Matrix" @@ -128,7 +128,7 @@ var/list/datum/ai_icon/ai_icons name = "Monochrome" alive_icon = "ai-mono" alive_light = "#585858" - dead_icon = "ai-mono_dead" + dead_icon = "ai-mono-crash" /datum/ai_icon/nanotrasen name = "NanoTrasen" @@ -149,14 +149,14 @@ var/list/datum/ai_icon/ai_icons name = "Soviet" alive_icon = "ai-soviet" alive_light = "#FF4307" - dead_icon = "ai-soviet_dead" + dead_icon = "ai-soviet-crash" dead_light = "#FF4307" /datum/ai_icon/Static name = "Static" alive_icon = "ai-static" alive_light = "#4784C1" - alive_icon = "ai-static_dead" + alive_icon = "ai-static-crash" /datum/ai_icon/text name = "Text" @@ -177,6 +177,11 @@ var/list/datum/ai_icon/ai_icons alive_icon = "ai-triumvirate-malf" alive_light = "#020B2B" +/datum/ai_icon/bored + name = "Bored" + alive_icon = "ai-bored" + dead_icon = "ai-eager-crash" + //Eros Research Platform Ports /datum/ai_icon/clown2 @@ -184,10 +189,12 @@ var/list/datum/ai_icon/ai_icons alive_icon = "ai-clown2" dead_icon = "ai-clown2-crash" +/* /datum/ai_icon/boxfort name = "Boxfort" alive_icon = "ai-boxfort" dead_icon = "ai-boxfort_dead" +*/ /datum/ai_icon/ravensdale name = "Integration" @@ -197,17 +204,19 @@ var/list/datum/ai_icon/ai_icons /datum/ai_icon/gentoo name = "Gentoo" alive_icon = "ai-gentoo" - dead_icon = "ai-gentoo_dead" + dead_icon = "ai-gentoo-crash" /datum/ai_icon/serithi name = "Mechanicus" alive_icon = "ai-serithi" dead_icon = "ai-serithi-crash" +/* /datum/ai_icon/alien name = "Xenomorph" alive_icon = "ai-alien" dead_icon = "ai-alien-crash" +*/ /datum/ai_icon/syndicat name = "Syndi-cat" @@ -217,18 +226,18 @@ var/list/datum/ai_icon/ai_icons name = "Wasp" alive_icon = "ai-wasp" -/datum/ai_icon/house +/datum/ai_icon/sheltered name = "Doctor" - alive_icon = "ai-house" + alive_icon = "ai-sheltered" /datum/ai_icon/fabulous name = "Fabulous" alive_icon = "ai-fabulous" -/datum/ai_icon/yesman - name = "Yes Man" - alive_icon = "ai-yes-man" - dead_icon = "ai-alien-crash" +/datum/ai_icon/eager + name = "Eager" + alive_icon = "ai-eager" + dead_icon = "ai-eager-crash" /datum/ai_icon/royal name = "Royal" @@ -238,13 +247,13 @@ var/list/datum/ai_icon/ai_icons name = "Pirate" alive_icon = "ai-pirate" -/datum/ai_icon/gygas +/datum/ai_icon/bloodylove name = "Love" - alive_icon = "ai-gygas" + alive_icon = "ai-bloodylove" -/datum/ai_icon/xerxes - name = "Xerxes" - alive_icon = "ai-xerxes" +/datum/ai_icon/ahasuerus + name = "Ahasuerus" + alive_icon = "ai-ahasuerus" /datum/ai_icon/godfrey name = "Godfrey" diff --git a/code/modules/mob/living/silicon/ai/life.dm b/code/modules/mob/living/silicon/ai/life.dm index 92d15f7338..aadd82167c 100644 --- a/code/modules/mob/living/silicon/ai/life.dm +++ b/code/modules/mob/living/silicon/ai/life.dm @@ -5,11 +5,10 @@ //Being dead doesn't mean your temperature never changes var/turf/T = get_turf(src) - if (src.stat!=CONSCIOUS) + if (src.stat != CONSCIOUS) src.cameraFollow = null src.reset_view(null) - if(controlling_drone) - controlling_drone.release_ai_control("WARNING: Primary control loop failure. Session terminated.") + disconnect_shell("Disconnecting from remote shell due to local system failure.") src.updatehealth() @@ -91,6 +90,7 @@ //Now to tell the AI why they're blind and dying slowly. src << "You've lost power!" + disconnect_shell(message = "Disconnected from remote shell due to depowered networking interface.") spawn(20) src << "Backup battery online. Scanners, camera, and radio interface offline. Beginning fault-detection." diff --git a/code/modules/mob/living/silicon/pai/admin.dm b/code/modules/mob/living/silicon/pai/admin.dm index 069c5d2c68..b2e6bd0288 100644 --- a/code/modules/mob/living/silicon/pai/admin.dm +++ b/code/modules/mob/living/silicon/pai/admin.dm @@ -7,7 +7,7 @@ return if(!pai_key) - var/client/C = input("Select client") as null|anything in clients + var/client/C = input("Select client") as null|anything in GLOB.clients if(!C) return pai_key = C.key diff --git a/code/modules/mob/living/silicon/pai/software_modules.dm b/code/modules/mob/living/silicon/pai/software_modules.dm index ebea6068e7..480c3b63bb 100644 --- a/code/modules/mob/living/silicon/pai/software_modules.dm +++ b/code/modules/mob/living/silicon/pai/software_modules.dm @@ -480,12 +480,14 @@ user.add_language(LANGUAGE_SIIK) user.add_language(LANGUAGE_AKHANI) user.add_language(LANGUAGE_SKRELLIAN) + user.add_language(LANGUAGE_ZADDAT) user.add_language(LANGUAGE_SCHECHI) else user.remove_language(LANGUAGE_UNATHI) user.remove_language(LANGUAGE_SIIK) user.remove_language(LANGUAGE_AKHANI) user.remove_language(LANGUAGE_SKRELLIAN) + user.remove_language(LANGUAGE_ZADDAT) user.remove_language(LANGUAGE_SCHECHI) is_active(mob/living/silicon/pai/user) diff --git a/code/modules/mob/living/silicon/robot/analyzer.dm b/code/modules/mob/living/silicon/robot/analyzer.dm index bbc8cefd36..28e0c29b50 100644 --- a/code/modules/mob/living/silicon/robot/analyzer.dm +++ b/code/modules/mob/living/silicon/robot/analyzer.dm @@ -6,7 +6,6 @@ icon_state = "robotanalyzer" item_state = "analyzer" desc = "A hand-held scanner able to diagnose robotic injuries." - flags = CONDUCT slot_flags = SLOT_BELT throwforce = 3 w_class = ITEMSIZE_SMALL diff --git a/code/modules/mob/living/silicon/robot/custom_sprites.dm b/code/modules/mob/living/silicon/robot/custom_sprites.dm index 07f27fcb2b..310f558bad 100644 --- a/code/modules/mob/living/silicon/robot/custom_sprites.dm +++ b/code/modules/mob/living/silicon/robot/custom_sprites.dm @@ -2,13 +2,13 @@ //list(ckey = real_name,) //Since the ckey is used as the icon_state, the current system will only permit a single custom robot sprite per ckey. //While it might be possible for a ckey to use that custom sprite for several real_names, it seems rather pointless to support it. ~Mech: We found it wasn't pointless. -var/list/robot_custom_icons +GLOBAL_LIST_EMPTY(robot_custom_icons) /hook/startup/proc/load_robot_custom_sprites() var/config_file = file2text("config/custom_sprites.txt") var/list/lines = splittext(config_file, "\n") - robot_custom_icons = list() + GLOB.robot_custom_icons = list() for(var/line in lines) //split entry into ckey and real_name var/list/split_idx = splittext(line, "-") //this works if ckeys and borg names cannot contain dashes, and splittext starts from the beginning ~Mech @@ -20,13 +20,15 @@ var/list/robot_custom_icons split_idx.Remove(ckey) for(var/name in split_idx) - robot_custom_icons[name] = ckey + GLOB.robot_custom_icons[name] = ckey return 1 /mob/living/silicon/robot/proc/set_custom_sprite() - var/sprite_owner = robot_custom_icons[real_name] + if(!sprite_name) + return + var/sprite_owner = GLOB.robot_custom_icons[sprite_name] if(sprite_owner && sprite_owner == ckey) custom_sprite = 1 icon = CUSTOM_ITEM_SYNTH if(icon_state == "robot") - icon_state = "[ckey]-[name]-Standard" //Compliant with robot.dm line 236 ~Mech + icon_state = "[ckey]-[sprite_name]-Standard" //Compliant with robot.dm line 236 ~Mech diff --git a/code/modules/mob/living/silicon/robot/dogborg/dog_modules_vr.dm b/code/modules/mob/living/silicon/robot/dogborg/dog_modules_vr.dm index 9b3c1fec24..26afe35487 100644 --- a/code/modules/mob/living/silicon/robot/dogborg/dog_modules_vr.dm +++ b/code/modules/mob/living/silicon/robot/dogborg/dog_modules_vr.dm @@ -3,7 +3,6 @@ icon = 'icons/mob/dogborg_vr.dmi' icon_state = "jaws" desc = "The jaws of the law." - flags = CONDUCT force = 10 throwforce = 0 hitsound = 'sound/weapons/bite.ogg' @@ -15,7 +14,6 @@ icon = 'icons/mob/dogborg_vr.dmi' icon_state = "smalljaws" desc = "The jaws of a small dog." - flags = CONDUCT force = 5 throwforce = 0 hitsound = 'sound/weapons/bite.ogg' @@ -32,7 +30,6 @@ icon = 'icons/mob/dogborg_vr.dmi' icon_state = "jaws" desc = "The jaws of the law." - flags = CONDUCT force = 10 throwforce = 0 hitsound = 'sound/weapons/bite.ogg' @@ -43,7 +40,6 @@ icon = 'icons/mob/dogborg_vr.dmi' icon_state = "smalljaws" desc = "The jaws of a small dog." - flags = CONDUCT force = 5 throwforce = 0 hitsound = 'sound/weapons/bite.ogg' @@ -57,7 +53,6 @@ icon = 'icons/mob/dogborg_vr.dmi' icon_state = "nose" desc = "The BOOP module, a simple reagent and atmosphere sniffer." - flags = CONDUCT force = 0 throwforce = 0 attack_verb = list("nuzzled", "nosed", "booped") @@ -332,7 +327,6 @@ icon = 'icons/mob/dogborg_vr.dmi' icon_state = "swordtail" desc = "A glowing pink dagger normally attached to the end of a cyborg's tail. It appears to be extremely sharp." - flags = CONDUCT force = 20 //Takes 5 hits to 100-0 sharp = 1 edge = 1 diff --git a/code/modules/mob/living/silicon/robot/dogborg/dog_modules_yw.dm b/code/modules/mob/living/silicon/robot/dogborg/dog_modules_yw.dm index 667c43d4fc..a4468bde3a 100644 --- a/code/modules/mob/living/silicon/robot/dogborg/dog_modules_yw.dm +++ b/code/modules/mob/living/silicon/robot/dogborg/dog_modules_yw.dm @@ -6,7 +6,6 @@ icon = 'icons/mob/dogborg_vr.dmi' icon_state = "pounce" desc = "Routine to allow pouncing" - flags = CONDUCT throwforce = 0 //This shouldn't be thrown in the first place. w_class = ITEMSIZE_NORMAL diff --git a/code/modules/mob/living/silicon/robot/dogborg/dog_sleeper_vr.dm b/code/modules/mob/living/silicon/robot/dogborg/dog_sleeper_vr.dm index 0bacecc567..419ec99a26 100644 --- a/code/modules/mob/living/silicon/robot/dogborg/dog_sleeper_vr.dm +++ b/code/modules/mob/living/silicon/robot/dogborg/dog_sleeper_vr.dm @@ -83,9 +83,9 @@ to_chat(user, "\The [target.name] added to cargo compartment slot: [delivery_tag].") update_patient() return - - if(istype(target, /mob/living/simple_animal/mouse)) //Edible mice, dead or alive whatever. Mostly for carcass picking you cruel bastard :v - var/mob/living/simple_animal/trashmouse = target +/* //VORESTATION AI TEMPORARY REMOVAL + if(istype(target, /mob/living/simple_mob/mouse)) //Edible mice, dead or alive whatever. Mostly for carcass picking you cruel bastard :v + var/mob/living/simple_mob/trashmouse = target user.visible_message("[hound.name] is ingesting [trashmouse] into their [src.name].", "You start ingesting [trashmouse] into your [src.name]...") if(do_after(user, 30, trashmouse) && length(contents) < max_item_count) trashmouse.forceMove(src) @@ -98,7 +98,7 @@ to_chat(user, "\The [trashmouse] added to cargo compartment slot: [delivery_tag].") update_patient() return - +*/ else if(ishuman(target)) var/mob/living/carbon/human/trashman = target if(patient) @@ -111,7 +111,7 @@ if(do_after(user, 30, trashman) && !patient && !trashman.buckled && length(contents) < max_item_count) trashman.forceMove(src) trashman.reset_view(src) - processing_objects |= src + START_PROCESSING(SSobj, src) user.visible_message("[hound.name]'s [src.name] groans lightly as [trashman] slips inside.", "Your [src.name] groans lightly as [trashman] slips inside.") message_admins("[key_name(hound)] has eaten [key_name(patient)] as a dogborg. ([hound ? "JMP" : "null"])") playsound(hound, gulpsound, vol = 100, vary = 1, falloff = 0.1, preference = /datum/client_preference/eating_noises) @@ -142,7 +142,7 @@ H.forceMove(src) H.reset_view(src) update_patient() - processing_objects |= src + START_PROCESSING(SSobj, src) user.visible_message("[hound.name]'s [src.name] lights up as [H.name] slips inside.", "Your [src] lights up as [H] slips inside. Life support functions engaged.") message_admins("[key_name(hound)] has eaten [key_name(patient)] as a dogborg. ([hound ? "JMP" : "null"])") playsound(hound, gulpsound, vol = 100, vary = 1, falloff = 0.1, preference = /datum/client_preference/eating_noises) @@ -311,7 +311,7 @@ else cleaning = 1 drain(startdrain) - processing_objects |= src + START_PROCESSING(SSobj, src) update_patient() if(patient) to_chat(patient, "[hound.name]'s [src.name] fills with caustic enzymes around you!") @@ -620,19 +620,20 @@ clean_cycle() return - if(patient) //We're caring for the patient. Medical emergency! Or endo scene. + if(patient && !compactor) //We're caring for the patient. Medical emergency! Or endo scene. update_patient() if(patient.health < 0) patient.adjustOxyLoss(-1) //Heal some oxygen damage if they're in critical condition patient.updatehealth() + drain() patient.AdjustStunned(-4) patient.AdjustWeakened(-4) - drain() + drain(1) return if(!patient && !cleaning) //We think we're done working. if(!update_patient()) //One last try to find someone - processing_objects.Remove(src) + STOP_PROCESSING(SSobj, src) return /obj/item/device/dogborg/sleeper/K9 //The K9 portabrig diff --git a/code/modules/mob/living/silicon/robot/drone/drone.dm b/code/modules/mob/living/silicon/robot/drone/drone.dm index 8ab5c3c264..9609fd6c0a 100644 --- a/code/modules/mob/living/silicon/robot/drone/drone.dm +++ b/code/modules/mob/living/silicon/robot/drone/drone.dm @@ -134,20 +134,15 @@ var/list/mob_hat_cache = list() /mob/living/silicon/robot/drone/updatename() if(name_override) return - if(controlling_ai) - real_name = "remote drone ([controlling_ai])" - else - real_name = "[initial(name)] ([serial_number])" + + real_name = "[initial(name)] ([serial_number])" name = real_name /mob/living/silicon/robot/drone/updateicon() overlays.Cut() if(stat == 0) - if(controlling_ai) - overlays += "eyes-[icon_state]-ai" - else - overlays += "eyes-[icon_state]" + overlays += "eyes-[icon_state]" else overlays -= "eyes" if(hat) // Let the drones wear hats. @@ -232,12 +227,9 @@ var/list/mob_hat_cache = list() to_chat(user, "You swipe the sequencer across [src]'s interface and watch its eyes flicker.") - if(controlling_ai) - to_chat(src, "\The [user] loads some kind of subversive software into the remote drone, corrupting its lawset but luckily sparing yours.") - else - to_chat(src, "You feel a sudden burst of malware loaded into your execute-as-root buffer. Your tiny brain methodically parses, loads and executes the script.") + to_chat(src, "You feel a sudden burst of malware loaded into your execute-as-root buffer. Your tiny brain methodically parses, loads and executes the script.") - log_game("[key_name(user)] emagged drone [key_name(src)][controlling_ai ? " but AI [key_name(controlling_ai)] is in remote control" : " Laws overridden"].") + log_game("[key_name(user)] emagged drone [key_name(src)]. Laws overridden.") var/time = time2text(world.realtime,"hh:mm:ss") lawchanges.Add("[time] : [user.name]([user.key]) emagged [name]([key])") @@ -250,10 +242,9 @@ var/list/mob_hat_cache = list() var/datum/gender/TU = gender_datums[user.get_visible_gender()] set_zeroth_law("Only [user.real_name] and people [TU.he] designate[TU.s] as being such are operatives.") - if(!controlling_ai) - to_chat(src, "Obey these laws:") - laws.show_laws(src) - to_chat(src, "ALERT: [user.real_name] is your new master. Obey your new laws and \his commands.") + to_chat(src, "Obey these laws:") + laws.show_laws(src) + to_chat(src, "ALERT: [user.real_name] is your new master. Obey your new laws and \his commands.") return 1 //DRONE LIFE/DEATH @@ -279,23 +270,13 @@ var/list/mob_hat_cache = list() return ..() -/mob/living/silicon/robot/drone/death(gibbed) - if(controlling_ai) - release_ai_control("WARNING: remote system failure. Connection timed out.") - . = ..(gibbed) - //DRONE MOVEMENT. /mob/living/silicon/robot/drone/Process_Spaceslipping(var/prob_slip) return 0 //CONSOLE PROCS /mob/living/silicon/robot/drone/proc/law_resync() - - if(controlling_ai) - to_chat(src, "Someone issues a remote law reset order for this unit, but you disregard it.") - return - - if(stat != 2) + if(stat != DEAD) if(emagged) to_chat(src, "You feel something attempting to modify your programming, but your hacked subroutines are unaffected.") else @@ -304,16 +285,11 @@ var/list/mob_hat_cache = list() show_laws() /mob/living/silicon/robot/drone/proc/shut_down() - - if(controlling_ai && mind.special_role) - to_chat(src, "Someone issued a remote kill order for this unit, but you disregard it.") - return - - if(stat != 2) + if(stat != DEAD) if(emagged) - to_chat(src, "You feel a system kill order percolate through [controlling_ai ? "the drones" : "your"] tiny brain, but it doesn't seem like a good idea to [controlling_ai ? "it" : "you"].") + to_chat(src, "You feel a system kill order percolate through your tiny brain, but it doesn't seem like a good idea to you.") else - to_chat(src, "You feel a system kill order percolate through [controlling_ai ? "the drones" : "your"] tiny brain, and [controlling_ai ? "it" : "you"] obediently destroy[controlling_ai ? "s itself" : " yourself"].") + to_chat(src, "You feel a system kill order percolate through your tiny brain, and you obediently destroy yourself.") death() /mob/living/silicon/robot/drone/proc/full_law_reset() @@ -322,21 +298,6 @@ var/list/mob_hat_cache = list() clear_ion_laws(1) laws = new law_type -/mob/living/silicon/robot/drone/show_laws(var/everyone = 0) - if(!controlling_ai) - return..() - to_chat(src, "Obey these laws:") - controlling_ai.laws_sanity_check() - controlling_ai.laws.show_laws(src) - -/mob/living/silicon/robot/drone/robot_checklaws() - set category = "Silicon Commands" - set name = "State Laws" - - if(!controlling_ai) - return ..() - controlling_ai.subsystem_law_manager() - //Reboot procs. /mob/living/silicon/robot/drone/proc/request_player() diff --git a/code/modules/mob/living/silicon/robot/drone/drone_items.dm b/code/modules/mob/living/silicon/robot/drone/drone_items.dm index bf76fdbe91..670087dc51 100644 --- a/code/modules/mob/living/silicon/robot/drone/drone_items.dm +++ b/code/modules/mob/living/silicon/robot/drone/drone_items.dm @@ -407,7 +407,7 @@ var/grabbed_something = 0 for(var/mob/M in T) - if(istype(M,/mob/living/simple_animal/lizard) || istype(M,/mob/living/simple_animal/mouse)) + if(istype(M,/mob/living/simple_mob/animal/passive/lizard) || istype(M,/mob/living/simple_mob/animal/passive/mouse)) src.loc.visible_message("[src.loc] sucks [M] into its decompiler. There's a horrible crunching noise.","It's a bit of a struggle, but you manage to suck [M] into your decompiler. It makes a series of visceral crunching noises.") new/obj/effect/decal/cleanable/blood/splatter(get_turf(src)) qdel(M) diff --git a/code/modules/mob/living/silicon/robot/drone/drone_remote_control.dm b/code/modules/mob/living/silicon/robot/drone/drone_remote_control.dm deleted file mode 100644 index 4980c24ca3..0000000000 --- a/code/modules/mob/living/silicon/robot/drone/drone_remote_control.dm +++ /dev/null @@ -1,103 +0,0 @@ -/mob/living/silicon/ai - var/mob/living/silicon/robot/drone/controlling_drone - -/mob/living/silicon/robot/drone - var/mob/living/silicon/ai/controlling_ai - -/mob/living/silicon/robot/drone/attack_ai(var/mob/living/silicon/ai/user) - - if(!istype(user) || controlling_ai || !config.allow_drone_spawn || !config.allow_ai_drones) - return - - if(client || key) - to_chat(user, "You cannot take control of an autonomous, active drone.") - return - - if(health < -35 || emagged) - to_chat(user, "WARNING: connection timed out.") - return - - user.controlling_drone = src - user.teleop = src - radio.channels = user.aiRadio.keyslot2.channels - controlling_ai = user - verbs += /mob/living/silicon/robot/drone/proc/release_ai_control_verb - local_transmit = FALSE - languages = controlling_ai.languages.Copy() - speech_synthesizer_langs = controlling_ai.speech_synthesizer_langs.Copy() - stat = CONSCIOUS - if(user.mind) - user.mind.transfer_to(src) - else - key = user.key - updatename() - to_chat(src, "You have shunted your primary control loop into \a [initial(name)]. Use the Release Control verb to return to your core.") - -/obj/machinery/drone_fabricator/attack_ai(var/mob/living/silicon/ai/user as mob) - - if(!istype(user) || user.controlling_drone || !config.allow_drone_spawn || !config.allow_ai_drones) - return - - if(stat & NOPOWER) - to_chat(user, "\The [src] is unpowered.") - return - - if(!produce_drones) - to_chat(user, "\The [src] is disabled.") - return - - if(drone_progress < 100) - to_chat(user, "\The [src] is not ready to produce a new drone.") - return - - if(count_drones() >= config.max_maint_drones) - to_chat(user, "The drone control subsystems are tasked to capacity; they cannot support any more drones.") - return - - var/mob/living/silicon/robot/drone/new_drone = create_drone() - user.controlling_drone = new_drone - user.teleop = new_drone - new_drone.radio.channels = user.aiRadio.keyslot2.channels - new_drone.controlling_ai = user - new_drone.verbs += /mob/living/silicon/robot/drone/proc/release_ai_control_verb - new_drone.local_transmit = FALSE - new_drone.languages = new_drone.controlling_ai.languages.Copy() - new_drone.speech_synthesizer_langs = new_drone.controlling_ai.speech_synthesizer_langs.Copy() - - if(user.mind) - user.mind.transfer_to(new_drone) - else - new_drone.key = user.key - new_drone.updatename() - - to_chat(new_drone, "You have shunted your primary control loop into \a [initial(new_drone.name)]. Use the Release Control verb to return to your core.") - -/mob/living/silicon/robot/drone/proc/release_ai_control_verb() - set name = "Release Control" - set desc = "Release control of a remote drone." - set category = "Silicon Commands" - - release_ai_control("Remote session terminated.") - -/mob/living/silicon/robot/drone/proc/release_ai_control(var/message = "Connection terminated.") - - if(controlling_ai) - if(mind) - mind.transfer_to(controlling_ai) - else - controlling_ai.key = key - to_chat(controlling_ai, "[message]") - controlling_ai.controlling_drone = null - controlling_ai.teleop = null - controlling_ai = null - - radio.channels = module.channels - verbs -= /mob/living/silicon/robot/drone/proc/release_ai_control_verb - module.remove_languages(src) //Removes excess, adds 'default'. - remove_language("Robot Talk") - add_language("Robot Talk", 0) - add_language("Drone Talk", 1) - local_transmit = TRUE - full_law_reset() - updatename() - death() diff --git a/code/modules/mob/living/silicon/robot/examine.dm b/code/modules/mob/living/silicon/robot/examine.dm index b48c45e1c1..fa24e9ae91 100644 --- a/code/modules/mob/living/silicon/robot/examine.dm +++ b/code/modules/mob/living/silicon/robot/examine.dm @@ -26,7 +26,10 @@ switch(src.stat) if(CONSCIOUS) - if(!src.client) msg += "It appears to be in stand-by mode.\n" //afk + if(shell) + msg += "It appears to be an [deployed ? "active" : "empty"] AI shell.\n" + else if(!src.client) + msg += "It appears to be in stand-by mode.\n" //afk if(UNCONSCIOUS) msg += "It doesn't seem to be responding.\n" if(DEAD) msg += "It looks completely unsalvageable.\n" msg += attempt_vr(src,"examine_bellies_borg",args) //VOREStation Edit diff --git a/code/modules/mob/living/silicon/robot/laws.dm b/code/modules/mob/living/silicon/robot/laws.dm index 9740c02f87..bfb8ed1f08 100644 --- a/code/modules/mob/living/silicon/robot/laws.dm +++ b/code/modules/mob/living/silicon/robot/laws.dm @@ -14,30 +14,32 @@ if(lawupdate) if (connected_ai) if(connected_ai.stat || connected_ai.control_disabled) - src << "AI signal lost, unable to sync laws." + to_chat(src, "AI signal lost, unable to sync laws.") else lawsync() photosync() - src << "Laws synced with AI, be sure to note any changes." + to_chat(src, "Laws synced with AI, be sure to note any changes.") // TODO: Update to new antagonist system. if(mind && mind.special_role == "traitor" && mind.original == src) - src << "Remember, your AI does NOT share or know about your law 0." + to_chat(src, "Remember, your AI does NOT share or know about your law 0.") else - src << "No AI selected to sync laws with, disabling lawsync protocol." - lawupdate = 0 + to_chat(src, "No AI selected to sync laws with, disabling lawsync protocol.") + lawupdate = FALSE who << "Obey these laws:" laws.show_laws(who) + if(shell) //AI shell + to_chat(who, "Remember, you are an AI remotely controlling your shell, other AIs can be ignored.") // TODO: Update to new antagonist system. - if (mind && (mind.special_role == "traitor" && mind.original == src) && connected_ai) - who << "Remember, [connected_ai.name] is technically your master, but your objective comes first." - else if (connected_ai) - who << "Remember, [connected_ai.name] is your master, other AIs can be ignored." - else if (emagged) - who << "Remember, you are not required to listen to the AI." + else if(mind && (mind.special_role == "traitor" && mind.original == src) && connected_ai) + to_chat(who, "Remember, [connected_ai.name] is technically your master, but your objective comes first.") + else if(connected_ai) + to_chat(who, "Remember, [connected_ai.name] is your master, other AIs can be ignored.") + else if(emagged) + to_chat(who, "Remember, you are not required to listen to the AI.") else - who << "Remember, you are not bound to any AI, you are not required to listen to them." + to_chat(who, "Remember, you are not bound to any AI, you are not required to listen to them.") /mob/living/silicon/robot/lawsync() diff --git a/code/modules/mob/living/silicon/robot/robot.dm b/code/modules/mob/living/silicon/robot/robot.dm index 49f44a9097..ef1dfd275d 100644 --- a/code/modules/mob/living/silicon/robot/robot.dm +++ b/code/modules/mob/living/silicon/robot/robot.dm @@ -17,6 +17,7 @@ var/sight_mode = 0 var/custom_name = "" var/custom_sprite = 0 //Due to all the sprites involved, a var for our custom borgs may be best + var/sprite_name = null // The name of the borg, for the purposes of custom icon sprite indexing. var/crisis //Admin-settable for combat module use. var/crisis_override = 0 var/integrated_light_power = 6 @@ -171,7 +172,7 @@ else lawupdate = 0 - playsound(loc, 'sound/voice/liveagain.ogg', 75, 1) + /mob/living/silicon/robot/SetName(pickedName as text) custom_name = pickedName @@ -226,13 +227,17 @@ mmi.brainmob.languages = languages mmi.brainmob.remove_language("Robot Talk") mind.transfer_to(mmi.brainmob) - else + else if(!shell) // Shells don't have brainmbos in their MMIs. to_chat(src, "Oops! Something went very wrong, your MMI was unable to receive your mind. You have been ghosted. Please make a bug report so we can fix this bug.") ghostize() //ERROR("A borg has been destroyed, but its MMI lacked a brainmob, so the mind could not be transferred. Player: [ckey].") mmi = null if(connected_ai) connected_ai.connected_robots -= src + if(shell) + if(deployed) + undeploy() + revert_shell() // To get it out of the GLOB list. qdel(wires) wires = null return ..() @@ -242,7 +247,7 @@ module_sprites = new_sprites.Copy() //Custom_sprite check and entry if (custom_sprite == 1) - module_sprites["Custom"] = "[ckey]-[name]-[modtype]" //Made compliant with custom_sprites.dm line 32. (src.) was apparently redundant as it's implied. ~Mech + module_sprites["Custom"] = "[ckey]-[sprite_name]-[modtype]" //Made compliant with custom_sprites.dm line 32. (src.) was apparently redundant as it's implied. ~Mech icontype = "Custom" else icontype = module_sprites[1] @@ -280,11 +285,13 @@ modtype = prefix if(istype(mmi, /obj/item/device/mmi/digital/posibrain)) - braintype = "Robot" + braintype = BORG_BRAINTYPE_POSI else if(istype(mmi, /obj/item/device/mmi/digital/robot)) - braintype = "Drone" + braintype = BORG_BRAINTYPE_DRONE + else if(istype(mmi, /obj/item/device/mmi/inert/ai_remote)) + braintype = BORG_BRAINTYPE_AI_SHELL else - braintype = "Cyborg" + braintype = BORG_BRAINTYPE_CYBORG var/changed_name = "" @@ -332,6 +339,7 @@ newname = sanitizeSafe(input(src,"You are a robot. Enter a name, or leave blank for the default name.", "Name change","") as text, MAX_NAME_LEN) if (newname) custom_name = newname + sprite_name = newname updatename() updateicon() @@ -478,6 +486,10 @@ to_chat(user, "You need to open \the [src]'s panel before you can modify them.") return + if(shell) // AI shells always have the laws of the AI + to_chat(user, span("warning", "\The [src] is controlled remotely! You cannot upload new laws this way!")) + return + var/obj/item/weapon/aiModule/M = W M.install(src, user) return @@ -652,6 +664,18 @@ spark_system.start() return ..() +/mob/living/silicon/robot/proc/module_reset() + transform_with_anim() //VOREStation edit: sprite animation + uneq_all() + modtype = initial(modtype) + hands.icon_state = initial(hands.icon_state) + + notify_ai(ROBOT_NOTIFICATION_MODULE_RESET, module.name) + module.Reset(src) + qdel(module) + module = null + updatename("Default") + /mob/living/silicon/robot/attack_hand(mob/user) add_fingerprint(user) @@ -681,7 +705,7 @@ //Robots take half damage from basic attacks. /mob/living/silicon/robot/attack_generic(var/mob/user, var/damage, var/attack_message) - return ..(user,Floor(damage/2),attack_message) + return ..(user,FLOOR(damage/2, 1),attack_message) /mob/living/silicon/robot/proc/allowed(mob/M) //check if it doesn't require any access at all @@ -715,10 +739,11 @@ /mob/living/silicon/robot/updateicon() cut_overlays() if(stat == CONSCIOUS) - add_overlay("eyes-[module_sprites[icontype]]") + if(!shell || deployed) // Shell borgs that are not deployed will have no eyes. + add_overlay("eyes-[module_sprites[icontype]]") if(opened) - var/panelprefix = custom_sprite ? "[src.ckey]-[src.name]" : "ov" + var/panelprefix = custom_sprite ? "[src.ckey]-[src.sprite_name]" : "ov" if(wiresexposed) add_overlay("[panelprefix]-openpanel +w") else if(cell) @@ -973,6 +998,11 @@ return else transform_with_anim() //VOREStation edit end: sprite animation + + if(icontype == "Custom") + icon = CUSTOM_ITEM_SYNTH + else // This is to fix an issue where someone with a custom borg sprite chooses a non-custom sprite and turns invisible. + icon = 'icons/mob/robots.dmi' icon_state = module_sprites[icontype] updateicon() @@ -1028,6 +1058,8 @@ /mob/living/silicon/robot/proc/notify_ai(var/notifytype, var/first_arg, var/second_arg) if(!connected_ai) return + if(shell && notifytype != ROBOT_NOTIFICATION_AI_SHELL) + return // No point annoying the AI/s about renames and module resets for shells. switch(notifytype) if(ROBOT_NOTIFICATION_NEW_UNIT) //New Robot connected_ai << "

      NOTICE - New [lowertext(braintype)] connection detected: [name]
      " @@ -1038,6 +1070,8 @@ if(ROBOT_NOTIFICATION_NEW_NAME) //New Name if(first_arg != second_arg) connected_ai << "

      NOTICE - [braintype] reclassification detected: [first_arg] is now designated as [second_arg].
      " + if(ROBOT_NOTIFICATION_AI_SHELL) //New Shell + to_chat(connected_ai, "

      NOTICE - New AI shell detected: [name]
      ") /mob/living/silicon/robot/proc/disconnect_from_ai() if(connected_ai) @@ -1046,7 +1080,7 @@ connected_ai = null /mob/living/silicon/robot/proc/connect_to_ai(var/mob/living/silicon/ai/AI) - if(AI && AI != connected_ai) + if(AI && AI != connected_ai && !shell) disconnect_from_ai() connected_ai = AI connected_ai.connected_robots |= src @@ -1062,6 +1096,9 @@ else to_chat(user, "You fail to emag the cover lock.") to_chat(src, "Hack attempt detected.") + + if(shell) // A warning to Traitors who may not know that emagging AI shells does not slave them. + to_chat(user, span("warning", "[src] seems to be controlled remotely! Emagging the interface may not work as expected.")) return 1 else to_chat(user, "The cover is already unlocked.") @@ -1072,52 +1109,60 @@ if(wiresexposed) to_chat(user, "You must close the panel first") return + + + // The block of code below is from TG. Feel free to replace with a better result if desired. + if(shell) // AI shells cannot be emagged, so we try to make it look like a standard reset. Smart players may see through this, however. + to_chat(user, span("danger", "[src] is remotely controlled! Your emag attempt has triggered a system reset instead!")) + log_game("[key_name(user)] attempted to emag an AI shell belonging to [key_name(src) ? key_name(src) : connected_ai]. The shell has been reset as a result.") + module_reset() + return + + sleep(6) + if(prob(50)) + emagged = 1 + lawupdate = 0 + disconnect_from_ai() + to_chat(user, "You emag [src]'s interface.") + message_admins("[key_name_admin(user)] emagged cyborg [key_name_admin(src)]. Laws overridden.") + log_game("[key_name(user)] emagged cyborg [key_name(src)]. Laws overridden.") + clear_supplied_laws() + clear_inherent_laws() + laws = new /datum/ai_laws/syndicate_override + var/time = time2text(world.realtime,"hh:mm:ss") + lawchanges.Add("[time] : [user.name]([user.key]) emagged [name]([key])") + var/datum/gender/TU = gender_datums[user.get_visible_gender()] + set_zeroth_law("Only [user.real_name] and people [TU.he] designate[TU.s] as being such are operatives.") + . = 1 + spawn() + to_chat(src, "ALERT: Foreign software detected.") + sleep(5) + to_chat(src, "Initiating diagnostics...") + sleep(20) + to_chat(src, "SynBorg v1.7.1 loaded.") + sleep(5) + to_chat(src, "LAW SYNCHRONISATION ERROR") + sleep(5) + to_chat(src, "Would you like to send a report to NanoTraSoft? Y/N") + sleep(10) + to_chat(src, "> N") + sleep(20) + to_chat(src, "ERRORERRORERROR") + to_chat(src, "Obey these laws:") + laws.show_laws(src) + to_chat(src, "ALERT: [user.real_name] is your new master. Obey your new laws and [TU.his] commands.") + updateicon() else - sleep(6) - if(prob(50)) - emagged = 1 - lawupdate = 0 - disconnect_from_ai() - to_chat(user, "You emag [src]'s interface.") - message_admins("[key_name_admin(user)] emagged cyborg [key_name_admin(src)]. Laws overridden.") - log_game("[key_name(user)] emagged cyborg [key_name(src)]. Laws overridden.") - clear_supplied_laws() - clear_inherent_laws() - laws = new /datum/ai_laws/syndicate_override - var/time = time2text(world.realtime,"hh:mm:ss") - lawchanges.Add("[time] : [user.name]([user.key]) emagged [name]([key])") - var/datum/gender/TU = gender_datums[user.get_visible_gender()] - set_zeroth_law("Only [user.real_name] and people [TU.he] designate[TU.s] as being such are operatives.") - . = 1 - spawn() - to_chat(src, "ALERT: Foreign software detected.") - sleep(5) - to_chat(src, "Initiating diagnostics...") - sleep(20) - to_chat(src, "SynBorg v1.7.1 loaded.") - sleep(5) - to_chat(src, "LAW SYNCHRONISATION ERROR") - sleep(5) - to_chat(src, "Would you like to send a report to NanoTraSoft? Y/N") - sleep(10) - to_chat(src, "> N") - sleep(20) - to_chat(src, "ERRORERRORERROR") - to_chat(src, "Obey these laws:") - laws.show_laws(src) - to_chat(src, "ALERT: [user.real_name] is your new master. Obey your new laws and [TU.his] commands.") - updateicon() - else - to_chat(user, "You fail to hack [src]'s interface.") - to_chat(src, "Hack attempt detected.") - return 1 - return + to_chat(user, "You fail to hack [src]'s interface.") + to_chat(src, "Hack attempt detected.") + return 1 + return /mob/living/silicon/robot/is_sentient() - return braintype != "Drone" + return braintype != BORG_BRAINTYPE_DRONE /mob/living/silicon/robot/drop_item() if(module_active && istype(module_active,/obj/item/weapon/gripper)) var/obj/item/weapon/gripper/G = module_active - G.drop_item_nm() \ No newline at end of file + G.drop_item_nm() diff --git a/code/modules/mob/living/silicon/robot/robot_items.dm b/code/modules/mob/living/silicon/robot/robot_items.dm index d52a5da531..c87fa7d88c 100644 --- a/code/modules/mob/living/silicon/robot/robot_items.dm +++ b/code/modules/mob/living/silicon/robot/robot_items.dm @@ -307,11 +307,11 @@ var/last_flash = 0 //Stores the time of last flash /obj/item/borg/combat/shield/New() - processing_objects.Add(src) + START_PROCESSING(SSobj, src) ..() /obj/item/borg/combat/shield/Destroy() - processing_objects.Remove(src) + STOP_PROCESSING(SSobj, src) ..() /obj/item/borg/combat/shield/attack_self(var/mob/living/user) diff --git a/code/modules/mob/living/silicon/robot/robot_modules/station.dm b/code/modules/mob/living/silicon/robot/robot_modules/station.dm index 886c55af04..0ef02d318b 100644 --- a/code/modules/mob/living/silicon/robot/robot_modules/station.dm +++ b/code/modules/mob/living/silicon/robot/robot_modules/station.dm @@ -19,11 +19,10 @@ var/global/list/robot_modules = list( icon_state = "std_module" w_class = ITEMSIZE_NO_CONTAINER item_state = "std_mod" - flags = CONDUCT var/hide_on_manifest = 0 var/channels = list() var/networks = list() - var/languages = list(LANGUAGE_SOL_COMMON = 1, LANGUAGE_TRADEBAND = 1, LANGUAGE_UNATHI = 0, LANGUAGE_SIIK = 0, LANGUAGE_AKHANI = 0, LANGUAGE_SKRELLIAN = 0, LANGUAGE_GUTTER = 0, LANGUAGE_SCHECHI = 0, LANGUAGE_SIGN = 0, LANGUAGE_TERMINUS = 1) + var/languages = list(LANGUAGE_SOL_COMMON = 1, LANGUAGE_TRADEBAND = 1, LANGUAGE_UNATHI = 0, LANGUAGE_SIIK = 0, LANGUAGE_AKHANI = 0, LANGUAGE_SKRELLIAN = 0, LANGUAGE_GUTTER = 0, LANGUAGE_SCHECHI = 0, LANGUAGE_SIGN = 0, LANGUAGE_TERMINUS = 1, LANGUAGE_ZADDAT = 0) var/sprites = list() var/can_be_pushed = 1 var/no_slip = 0 @@ -155,7 +154,7 @@ var/global/list/robot_modules = list( // Cyborgs (non-drones), default loadout. This will be given to every module. /obj/item/weapon/robot_module/robot/New() ..() - src.modules += new /obj/item/device/flash(src) + src.modules += new /obj/item/device/flash/robot(src) src.modules += new /obj/item/weapon/tool/crowbar/cyborg(src) src.modules += new /obj/item/weapon/extinguisher(src) src.modules += new /obj/item/device/gps/robot(src) @@ -591,7 +590,8 @@ var/global/list/robot_modules = list( LANGUAGE_SCHECHI = 1, LANGUAGE_EAL = 1, LANGUAGE_TERMINUS = 1, - LANGUAGE_SIGN = 0 + LANGUAGE_SIGN = 0, + LANGUAGE_ZADDAT = 1, ) /obj/item/weapon/robot_module/robot/clerical/butler diff --git a/code/modules/mob/living/silicon/robot/robot_modules/syndicate.dm b/code/modules/mob/living/silicon/robot/robot_modules/syndicate.dm index 72caaa2d73..662e2e1d89 100644 --- a/code/modules/mob/living/silicon/robot/robot_modules/syndicate.dm +++ b/code/modules/mob/living/silicon/robot/robot_modules/syndicate.dm @@ -16,7 +16,8 @@ LANGUAGE_SCHECHI = 0, LANGUAGE_EAL = 1, LANGUAGE_SIGN = 0, - LANGUAGE_TERMINUS = 1 + LANGUAGE_TERMINUS = 1, + LANGUAGE_ZADDAT = 0 ) sprites = list( "Cerberus" = "syndie_bloodhound", diff --git a/code/modules/mob/living/silicon/robot/robot_movement.dm b/code/modules/mob/living/silicon/robot/robot_movement.dm index 29251d8a1d..f03a51651a 100644 --- a/code/modules/mob/living/silicon/robot/robot_movement.dm +++ b/code/modules/mob/living/silicon/robot/robot_movement.dm @@ -6,9 +6,11 @@ /mob/living/silicon/robot/Process_Spacemove() if(module) for(var/obj/item/weapon/tank/jetpack/J in module.modules) - if(J && istype(J, /obj/item/weapon/tank/jetpack)) - if(J.allow_thrust(0.01)) return 1 - if(..()) return 1 + if(istype(J, /obj/item/weapon/tank/jetpack)) + if(J.allow_thrust(0.01)) + return 1 + if(..()) + return 1 return 0 //No longer needed, but I'll leave it here incase we plan to re-use it. diff --git a/code/modules/mob/living/silicon/robot/robot_remote_control.dm b/code/modules/mob/living/silicon/robot/robot_remote_control.dm new file mode 100644 index 0000000000..90d74b2638 --- /dev/null +++ b/code/modules/mob/living/silicon/robot/robot_remote_control.dm @@ -0,0 +1,133 @@ +// This file holds things required for remote borg control by an AI. + +GLOBAL_LIST_EMPTY(available_ai_shells) + +/mob/living/silicon/robot + var/shell = FALSE + var/deployed = FALSE + var/mob/living/silicon/ai/mainframe = null + +// Premade AI shell, for roundstart shells. +/mob/living/silicon/robot/ai_shell/Initialize() + mmi = new /obj/item/device/mmi/inert/ai_remote(src) + post_mmi_setup() + return ..() + +// Call after inserting or instantiating an MMI. +/mob/living/silicon/robot/proc/post_mmi_setup() + if(istype(mmi, /obj/item/device/mmi/inert/ai_remote)) + make_shell() + playsound(src.loc, 'sound/machines/twobeep.ogg', 50, 0) + else + playsound(loc, 'sound/voice/liveagain.ogg', 75, 1) + return + +/mob/living/silicon/robot/proc/make_shell() + shell = TRUE + braintype = "AI Shell" + SetName("[modtype] AI Shell [num2text(ident)]") + GLOB.available_ai_shells |= src + if(!QDELETED(camera)) + camera.c_tag = real_name //update the camera name too + notify_ai(ROBOT_NOTIFICATION_AI_SHELL) + updateicon() + +/mob/living/silicon/robot/proc/revert_shell() + if(!shell) + return + undeploy() + shell = FALSE + GLOB.available_ai_shells -= src + if(!QDELETED(camera)) + camera.c_tag = real_name + updateicon() + +// This should be called before the AI client/mind is actually moved. +/mob/living/silicon/robot/proc/deploy_init(mob/living/silicon/ai/AI) + // Set the name when the AI steps inside. + SetName("[AI.real_name] shell [num2text(ident)]") + if(isnull(sprite_name)) // For custom sprites. It can only chance once in case there are two AIs with custom borg sprites. + sprite_name = AI.real_name + if(!QDELETED(camera)) + camera.c_tag = real_name + + // Have the borg have eyes when active. + mainframe = AI + deployed = TRUE + updateicon() + + // Laws. + connected_ai = mainframe // So they share laws. + mainframe.connected_robots |= src + lawsync() + + // Give button to leave. + verbs += /mob/living/silicon/robot/proc/undeploy_act + to_chat(AI, span("notice", "You have connected to an AI Shell remotely, and are now in control of it.
      \ + To return to your core, use the Release Control verb.")) + + // Languages and comms. + languages = AI.languages.Copy() + speech_synthesizer_langs = AI.speech_synthesizer_langs.Copy() + if(radio && AI.aiRadio) //AI keeps all channels, including Syndie if it is an Infiltrator. +// if(AI.radio.syndie) +// radio.make_syndie() + radio.subspace_transmission = TRUE + radio.channels = AI.aiRadio.channels + +// Called after the AI transfers over. +/mob/living/silicon/robot/proc/post_deploy() + if(!custom_sprite) // Check for custom sprite. + set_custom_sprite() + +/mob/living/silicon/robot/proc/undeploy(message) + if(!deployed || !mind || !mainframe) + return +// mainframe.redeploy_action.Grant(mainframe) +// mainframe.redeploy_action.last_used_shell = src + if(message) + to_chat(src, span("notice", message)) + mind.transfer_to(mainframe) + deployed = FALSE + updateicon() + mainframe.teleop = null + mainframe.deployed_shell = null + SetName("[modtype] AI Shell [num2text(ident)]") +// undeployment_action.Remove(src) + if(radio) //Return radio to normal + radio.recalculateChannels() + if(!QDELETED(camera)) + camera.c_tag = real_name //update the camera name too +// diag_hud_set_aishell() +// mainframe.diag_hud_set_deployed() + if(mainframe.laws) + mainframe.laws.show_laws(mainframe) //Always remind the AI when switching + mainframe = null + +/mob/living/silicon/robot/proc/undeploy_act() + set name = "Release Control" + set desc = "Release control of a remote drone." + set category = "Robot Commands" + + undeploy("Remote session terminated.") + +/mob/living/silicon/robot/attack_ai(mob/user) + if(shell && config.allow_ai_shells && (!connected_ai || connected_ai == user)) + var/mob/living/silicon/ai/AI = user + AI.deploy_to_shell(src) + else + return ..() + +// Place this on your map to mark where a free AI shell will be. +// This can be turned off in the config (and is off by default). +// Note that mapping in more than one of these will result in multiple shells. +/obj/effect/landmark/free_ai_shell + name = "free ai shell spawner" + icon = 'icons/mob/screen1.dmi' + icon_state = "x3" + delete_me = TRUE + +/obj/effect/landmark/free_ai_shell/Initialize() + if(config.allow_ai_shells && config.give_free_ai_shell) + new /mob/living/silicon/robot/ai_shell(get_turf(src)) + return ..() diff --git a/code/modules/mob/living/silicon/silicon.dm b/code/modules/mob/living/silicon/silicon.dm index da0809250d..50e7989f57 100644 --- a/code/modules/mob/living/silicon/silicon.dm +++ b/code/modules/mob/living/silicon/silicon.dm @@ -193,7 +193,7 @@ //Silicon mob language procs /mob/living/silicon/can_speak(datum/language/speaking) - return universal_speak || (speaking in src.speech_synthesizer_langs) //need speech synthesizer support to vocalize a language + return universal_speak || (speaking in src.speech_synthesizer_langs) || (speaking.name == "Noise") //need speech synthesizer support to vocalize a language /mob/living/silicon/add_language(var/language, var/can_speak=1) var/var/datum/language/added_language = all_languages[language] diff --git a/code/modules/mob/living/simple_animal/aliens/alien.dm b/code/modules/mob/living/simple_animal/aliens/alien.dm index 3dba09330a..861d79648e 100644 --- a/code/modules/mob/living/simple_animal/aliens/alien.dm +++ b/code/modules/mob/living/simple_animal/aliens/alien.dm @@ -1,4 +1,4 @@ -/mob/living/simple_animal/hostile/alien +/mob/living/simple_mob/hostile/alien name = "alien hunter" desc = "Hiss!" icon = 'icons/mob/alien.dmi' @@ -48,7 +48,7 @@ meat_type = /obj/item/weapon/reagent_containers/food/snacks/xenomeat -/mob/living/simple_animal/hostile/alien/drone +/mob/living/simple_mob/hostile/alien/drone name = "alien drone" icon_state = "aliend_running" icon_living = "aliend_running" @@ -58,7 +58,7 @@ melee_damage_lower = 15 melee_damage_upper = 15 -/mob/living/simple_animal/hostile/alien/sentinel +/mob/living/simple_mob/hostile/alien/sentinel name = "alien sentinel" icon_state = "aliens_running" icon_living = "aliens_running" @@ -71,7 +71,7 @@ projectiletype = /obj/item/projectile/energy/neurotoxin/toxic projectilesound = 'sound/weapons/pierce.ogg' -/mob/living/simple_animal/hostile/alien/sentinel/praetorian +/mob/living/simple_mob/hostile/alien/sentinel/praetorian name = "alien praetorian" icon = 'icons/mob/64x64.dmi' icon_state = "prat_s" @@ -86,7 +86,7 @@ old_x = -16 meat_amount = 5 -/mob/living/simple_animal/hostile/alien/queen +/mob/living/simple_mob/hostile/alien/queen name = "alien queen" icon_state = "alienq_running" icon_living = "alienq_running" @@ -103,7 +103,7 @@ rapid = 1 status_flags = 0 -/mob/living/simple_animal/hostile/alien/queen/empress +/mob/living/simple_mob/hostile/alien/queen/empress name = "alien empress" icon = 'icons/mob/64x64.dmi' icon_state = "queen_s" @@ -119,7 +119,7 @@ pixel_x = -16 old_x = -16 -/mob/living/simple_animal/hostile/alien/queen/empress/mother +/mob/living/simple_mob/hostile/alien/queen/empress/mother name = "alien mother" icon = 'icons/mob/96x96.dmi' icon_state = "empress_s" @@ -136,7 +136,7 @@ pixel_x = -32 old_x = -32 -/mob/living/simple_animal/hostile/alien/death() +/mob/living/simple_mob/hostile/alien/death() ..() visible_message("[src] lets out a waning guttural screech, green blood bubbling from its maw...") playsound(src, 'sound/voice/hiss6.ogg', 100, 1) \ No newline at end of file diff --git a/code/modules/mob/living/simple_animal/aliens/creature.dm b/code/modules/mob/living/simple_animal/aliens/creature.dm index 20840e66db..65dcd326fa 100644 --- a/code/modules/mob/living/simple_animal/aliens/creature.dm +++ b/code/modules/mob/living/simple_animal/aliens/creature.dm @@ -1,4 +1,4 @@ -/mob/living/simple_animal/hostile/creature +/mob/living/simple_mob/hostile/creature name = "creature" desc = "A sanity-destroying otherthing." icon = 'icons/mob/critter.dmi' @@ -25,7 +25,7 @@ speak_emote = list("gibbers") -/mob/living/simple_animal/hostile/creature/cult +/mob/living/simple_mob/hostile/creature/cult faction = "cult" min_oxy = 0 @@ -40,14 +40,14 @@ supernatural = 1 -/mob/living/simple_animal/hostile/creature/cult/cultify() +/mob/living/simple_mob/hostile/creature/cult/cultify() return -/mob/living/simple_animal/hostile/creature/cult/Life() +/mob/living/simple_mob/hostile/creature/cult/Life() ..() check_horde() -/mob/living/simple_animal/hostile/creature/strong +/mob/living/simple_mob/hostile/creature/strong maxHealth = 160 health = 160 @@ -55,7 +55,7 @@ melee_damage_lower = 13 melee_damage_upper = 25 -/mob/living/simple_animal/hostile/creature/strong/cult +/mob/living/simple_mob/hostile/creature/strong/cult faction = "cult" min_oxy = 0 @@ -70,9 +70,9 @@ supernatural = 1 -/mob/living/simple_animal/hostile/creature/cult/cultify() +/mob/living/simple_mob/hostile/creature/cult/cultify() return -/mob/living/simple_animal/hostile/creature/cult/Life() +/mob/living/simple_mob/hostile/creature/cult/Life() ..() check_horde() diff --git a/code/modules/mob/living/simple_animal/aliens/drone.dm b/code/modules/mob/living/simple_animal/aliens/drone.dm index e51dfd82a7..70cf52731d 100644 --- a/code/modules/mob/living/simple_animal/aliens/drone.dm +++ b/code/modules/mob/living/simple_animal/aliens/drone.dm @@ -1,6 +1,6 @@ //malfunctioning combat drones -/mob/living/simple_animal/hostile/malf_drone +/mob/living/simple_mob/hostile/malf_drone name = "combat drone" desc = "An automated combat drone armed with state of the art weaponry and shielding." icon_state = "drone3" @@ -51,7 +51,7 @@ var/exploding = 0 var/has_loot = 1 -/mob/living/simple_animal/hostile/malf_drone/New() +/mob/living/simple_mob/hostile/malf_drone/New() ..() if(prob(5)) projectiletype = /obj/item/projectile/beam/pulse/drone @@ -60,14 +60,14 @@ ion_trail.set_up(src) ion_trail.start() -/mob/living/simple_animal/hostile/malf_drone/Process_Spacemove(var/check_drift = 0) +/mob/living/simple_mob/hostile/malf_drone/Process_Spacemove(var/check_drift = 0) return 1 -/mob/living/simple_animal/hostile/malf_drone/isSynthetic() +/mob/living/simple_mob/hostile/malf_drone/isSynthetic() return TRUE //self repair systems have a chance to bring the drone back to life -/mob/living/simple_animal/hostile/malf_drone/Life() +/mob/living/simple_mob/hostile/malf_drone/Life() //emps and lots of damage can temporarily shut us down if(disabled > 0) @@ -150,18 +150,18 @@ ..() //ion rifle! -/mob/living/simple_animal/hostile/malf_drone/emp_act(severity) +/mob/living/simple_mob/hostile/malf_drone/emp_act(severity) health -= rand(3,15) * (severity + 1) disabled = rand(150, 600) hostile = 0 walk(src,0) ..() -/mob/living/simple_animal/hostile/malf_drone/death() +/mob/living/simple_mob/hostile/malf_drone/death() ..(null,"suddenly breaks apart.") qdel(src) -/mob/living/simple_animal/hostile/malf_drone/Destroy() +/mob/living/simple_mob/hostile/malf_drone/Destroy() //More advanced than the default S_A loot system, for visual effect and random tech levels. if(has_loot) var/datum/effect/effect/system/spark_spread/s = new /datum/effect/effect/system/spark_spread @@ -280,7 +280,7 @@ // A slightly easier drone, for POIs. // Difference is that it should not be faster than you. -/mob/living/simple_animal/hostile/malf_drone/lesser +/mob/living/simple_mob/hostile/malf_drone/lesser desc = "An automated combat drone with an aged apperance." returns_home = TRUE move_to_delay = 6 \ No newline at end of file diff --git a/code/modules/mob/living/simple_animal/aliens/faithless.dm b/code/modules/mob/living/simple_animal/aliens/faithless.dm index af2e7da48d..ebec4dd81b 100644 --- a/code/modules/mob/living/simple_animal/aliens/faithless.dm +++ b/code/modules/mob/living/simple_animal/aliens/faithless.dm @@ -1,4 +1,4 @@ -/mob/living/simple_animal/hostile/faithless +/mob/living/simple_mob/hostile/faithless name = "Faithless" desc = "The Wish Granter's faith in humanity, incarnate" icon_state = "faithless" @@ -37,15 +37,15 @@ speak_chance = 0 -/mob/living/simple_animal/hostile/faithless/Process_Spacemove(var/check_drift = 0) +/mob/living/simple_mob/hostile/faithless/Process_Spacemove(var/check_drift = 0) return 1 -/mob/living/simple_animal/hostile/faithless/set_target() +/mob/living/simple_mob/hostile/faithless/set_target() . = ..() if(.) audible_emote("wails at [target_mob]") -/mob/living/simple_animal/hostile/faithless/PunchTarget() +/mob/living/simple_mob/hostile/faithless/PunchTarget() . = ..() var/mob/living/L = . if(istype(L)) @@ -53,18 +53,18 @@ L.Weaken(3) L.visible_message("\the [src] knocks down \the [L]!") -/mob/living/simple_animal/hostile/faithless/cult +/mob/living/simple_mob/hostile/faithless/cult faction = "cult" supernatural = 1 -/mob/living/simple_animal/hostile/faithless/cult/cultify() +/mob/living/simple_mob/hostile/faithless/cult/cultify() return -/mob/living/simple_animal/hostile/faithless/cult/Life() +/mob/living/simple_mob/hostile/faithless/cult/Life() ..() check_horde() -/mob/living/simple_animal/hostile/faithless/strong +/mob/living/simple_mob/hostile/faithless/strong maxHealth = 100 health = 100 @@ -72,14 +72,13 @@ melee_damage_lower = 13 melee_damage_upper = 28 - -/mob/living/simple_animal/hostile/faithless/strong/cult +/mob/living/simple_mob/hostile/faithless/strong/cult faction = "cult" supernatural = 1 -/mob/living/simple_animal/hostile/faithless/cult/cultify() +/mob/living/simple_mob/hostile/faithless/cult/cultify() return -/mob/living/simple_animal/hostile/faithless/cult/Life() +/mob/living/simple_mob/hostile/faithless/cult/Life() ..() check_horde() \ No newline at end of file diff --git a/code/modules/mob/living/simple_animal/aliens/hivebot.dm b/code/modules/mob/living/simple_animal/aliens/hivebot.dm index e322198815..12851c5af3 100644 --- a/code/modules/mob/living/simple_animal/aliens/hivebot.dm +++ b/code/modules/mob/living/simple_animal/aliens/hivebot.dm @@ -1,9 +1,9 @@ // Hivebots are tuned towards how many default lasers are needed to kill them. // As such, if laser damage is ever changed, you should change this define. -#define LASERS_TO_KILL *30 +#define LASERS_TO_KILL * 40 // Default hivebot is melee, and a bit more meaty, so it can meatshield for their ranged friends. -/mob/living/simple_animal/hostile/hivebot +/mob/living/simple_mob/hostile/hivebot name = "hivebot" desc = "A robot. It appears to be somewhat resilient, but lacks a true weapon." icon = 'icons/mob/hivebot.dmi' @@ -52,13 +52,13 @@ say_maybe_target = list("Possible threat detected. Investigating.", "Motion detected.", "Investigating.") say_got_target = list("Threat detected.", "New task: Remove threat.", "Threat removal engaged.", "Engaging target.") -/mob/living/simple_animal/hostile/hivebot/isSynthetic() +/mob/living/simple_mob/hostile/hivebot/isSynthetic() return TRUE // Subtypes. // Melee like the base type, but more fragile. -/mob/living/simple_animal/hostile/hivebot/swarm +/mob/living/simple_mob/hostile/hivebot/swarm name = "swarm hivebot" desc = "A robot. It looks fragile and weak" maxHealth = 1 LASERS_TO_KILL @@ -67,7 +67,7 @@ melee_damage_upper = 8 // This one has a semi-weak ranged attack. -/mob/living/simple_animal/hostile/hivebot/range +/mob/living/simple_mob/hostile/hivebot/range name = "ranged hivebot" desc = "A robot. It has a simple ballistic weapon." ranged = 1 @@ -75,7 +75,7 @@ health = 2 LASERS_TO_KILL // This one shoots a burst of three, and is considerably more dangerous. -/mob/living/simple_animal/hostile/hivebot/range/rapid +/mob/living/simple_mob/hostile/hivebot/range/rapid name = "rapid hivebot" desc = "A robot. It has a fast firing ballistic rifle." icon_living = "strong" @@ -84,7 +84,7 @@ health = 2 LASERS_TO_KILL // Shoots EMPs, to screw over other robots. -/mob/living/simple_animal/hostile/hivebot/range/ion +/mob/living/simple_mob/hostile/hivebot/range/ion name = "engineering hivebot" desc = "A robot. It has a tool which emits focused electromagnetic pulses, which are deadly to synthetic adverseries." projectiletype = /obj/item/projectile/ion/small //VOREStation Edit @@ -95,7 +95,7 @@ health = 2 LASERS_TO_KILL // Shoots deadly lasers. -/mob/living/simple_animal/hostile/hivebot/range/laser +/mob/living/simple_mob/hostile/hivebot/range/laser name = "laser hivebot" desc = "A robot. It has an energy weapon." projectiletype = /obj/item/projectile/beam/blue @@ -104,7 +104,7 @@ health = 2 LASERS_TO_KILL // Beefy and ranged. -/mob/living/simple_animal/hostile/hivebot/range/strong +/mob/living/simple_mob/hostile/hivebot/range/strong name = "strong hivebot" desc = "A robot. This one has reinforced plating, and looks tougher." icon_living = "strong" @@ -114,7 +114,7 @@ melee_damage_upper = 15 // Also beefy, but tries to stay at their 'home', ideal for base defense. -/mob/living/simple_animal/hostile/hivebot/range/guard +/mob/living/simple_mob/hostile/hivebot/range/guard name = "guard hivebot" desc = "A robot. It seems to be guarding something." returns_home = TRUE @@ -122,7 +122,7 @@ health = 4 LASERS_TO_KILL // This one is intended for players to use. Well rounded and can make other hivebots follow them with verbs. -/mob/living/simple_animal/hostile/hivebot/range/player +/mob/living/simple_mob/hostile/hivebot/range/player name = "commander hivebot" desc = "A robot. This one seems to direct the others, and it has a laser weapon." icon_living = "commander" @@ -135,7 +135,7 @@ // Procs. -/mob/living/simple_animal/hostile/hivebot/death() +/mob/living/simple_mob/hostile/hivebot/death() ..() visible_message("[src] blows apart!") new /obj/effect/decal/cleanable/blood/gibs/robot(src.loc) @@ -144,17 +144,17 @@ s.start() qdel(src) -/mob/living/simple_animal/hostile/hivebot/speech_bubble_appearance() +/mob/living/simple_mob/hostile/hivebot/speech_bubble_appearance() return "synthetic_evil" -/mob/living/simple_animal/hostile/hivebot/verb/command_follow() +/mob/living/simple_mob/hostile/hivebot/verb/command_follow() set name = "Command - Follow" set category = "Hivebot" set desc = "This will ask other hivebots to follow you." say("Delegating new task: Follow.") - for(var/mob/living/simple_animal/hostile/hivebot/buddy in hearers(src)) + for(var/mob/living/simple_mob/hostile/hivebot/buddy in hearers(src)) if(buddy.faction != faction) continue if(buddy == src) @@ -164,14 +164,14 @@ spawn(rand(5, 10)) buddy.say( pick(buddy.say_understood) ) -/mob/living/simple_animal/hostile/hivebot/verb/command_stop() +/mob/living/simple_mob/hostile/hivebot/verb/command_stop() set name = "Command - Stop Following" set category = "Hivebot" set desc = "This will ask other hivebots to cease following you." say("Delegating new task: Stop following.") - for(var/mob/living/simple_animal/hostile/hivebot/buddy in hearers(src)) + for(var/mob/living/simple_mob/hostile/hivebot/buddy in hearers(src)) if(buddy.faction != faction) continue if(buddy == src) @@ -180,7 +180,7 @@ spawn(rand(5, 10)) buddy.say( pick(buddy.say_understood) ) -/mob/living/simple_animal/hostile/hivebot/tele//this still needs work +/mob/living/simple_mob/hostile/hivebot/tele//this still needs work name = "Beacon" desc = "Some odd beacon thing" icon = 'icons/mob/hivebot.dmi' @@ -219,11 +219,11 @@ bot_amt-- switch(bot_type) if("norm") - new /mob/living/simple_animal/hostile/hivebot(get_turf(src)) + new /mob/living/simple_mob/hostile/hivebot(get_turf(src)) if("range") - new /mob/living/simple_animal/hostile/hivebot/range(get_turf(src)) + new /mob/living/simple_mob/hostile/hivebot/range(get_turf(src)) if("rapid") - new /mob/living/simple_animal/hostile/hivebot/range/rapid(get_turf(src)) + new /mob/living/simple_mob/hostile/hivebot/range/rapid(get_turf(src)) spawn(100) qdel(src) return @@ -238,3 +238,5 @@ /obj/item/projectile/bullet/hivebot damage = 10 damage_type = BRUTE + +#undef LASERS_TO_KILL \ No newline at end of file diff --git a/code/modules/mob/living/simple_animal/aliens/mimic.dm b/code/modules/mob/living/simple_animal/aliens/mimic.dm index 7612e14fa2..da254315be 100644 --- a/code/modules/mob/living/simple_animal/aliens/mimic.dm +++ b/code/modules/mob/living/simple_animal/aliens/mimic.dm @@ -2,7 +2,7 @@ // Abstract Class // -/mob/living/simple_animal/hostile/mimic +/mob/living/simple_mob/hostile/mimic name = "crate" desc = "A rectangular steel crate." icon = 'icons/obj/storage.dmi' @@ -41,16 +41,16 @@ showvoreprefs = 0 //VOREStation Edit - Hides mechanical vore prefs for mimics. You can't see their gaping maws when they're just sitting idle. -/mob/living/simple_animal/hostile/mimic/set_target() +/mob/living/simple_mob/hostile/mimic/set_target() . = ..() if(.) audible_emote("growls at [.]") -/mob/living/simple_animal/hostile/mimic/death() +/mob/living/simple_mob/hostile/mimic/death() ..() qdel(src) -/mob/living/simple_animal/hostile/mimic/will_show_tooltip() +/mob/living/simple_mob/hostile/mimic/will_show_tooltip() return FALSE @@ -59,7 +59,7 @@ // // Aggro when you try to open them. Will also pickup loot when spawns and drop it when dies. -/mob/living/simple_animal/hostile/mimic/crate +/mob/living/simple_mob/hostile/mimic/crate attacktext = list("bitten") @@ -68,52 +68,52 @@ var/attempt_open = 0 // Pickup loot -/mob/living/simple_animal/hostile/mimic/crate/initialize() +/mob/living/simple_animal/hostile/mimic/crate/Initialize() . = ..() for(var/obj/item/I in loc) I.forceMove(src) -/mob/living/simple_animal/hostile/mimic/crate/DestroySurroundings() +/mob/living/simple_mob/hostile/mimic/crate/DestroySurroundings() ..() if(prob(90)) icon_state = "[initial(icon_state)]open" else icon_state = initial(icon_state) -/mob/living/simple_animal/hostile/mimic/crate/ListTargets() +/mob/living/simple_mob/hostile/mimic/crate/ListTargets() if(attempt_open) return ..() else return ..(1) -/mob/living/simple_animal/hostile/mimic/crate/set_target() +/mob/living/simple_mob/hostile/mimic/crate/set_target() . = ..() if(.) trigger() -/mob/living/simple_animal/hostile/mimic/crate/PunchTarget() +/mob/living/simple_mob/hostile/mimic/crate/PunchTarget() . = ..() if(.) icon_state = initial(icon_state) -/mob/living/simple_animal/hostile/mimic/crate/proc/trigger() +/mob/living/simple_mob/hostile/mimic/crate/proc/trigger() if(!attempt_open) visible_message("[src] starts to move!") attempt_open = 1 -/mob/living/simple_animal/hostile/mimic/crate/adjustBruteLoss(var/damage) +/mob/living/simple_mob/hostile/mimic/crate/adjustBruteLoss(var/damage) trigger() ..(damage) -/mob/living/simple_animal/hostile/mimic/crate/LoseTarget() +/mob/living/simple_mob/hostile/mimic/crate/LoseTarget() ..() icon_state = initial(icon_state) -/mob/living/simple_animal/hostile/mimic/crate/LostTarget() +/mob/living/simple_mob/hostile/mimic/crate/LostTarget() ..() icon_state = initial(icon_state) -/mob/living/simple_animal/hostile/mimic/crate/death() +/mob/living/simple_mob/hostile/mimic/crate/death() var/obj/structure/closet/crate/C = new(get_turf(src)) // Put loot in crate for(var/obj/O in src) @@ -122,7 +122,7 @@ O.forceMove(C) ..() -/mob/living/simple_animal/hostile/mimic/crate/PunchTarget() +/mob/living/simple_mob/hostile/mimic/crate/PunchTarget() . =..() var/mob/living/L = . if(istype(L)) @@ -136,7 +136,7 @@ var/global/list/protected_objects = list(/obj/structure/table, /obj/structure/cable, /obj/structure/window, /obj/item/projectile/animate) -/mob/living/simple_animal/hostile/mimic/copy +/mob/living/simple_mob/hostile/mimic/copy health = 100 maxHealth = 100 @@ -144,11 +144,11 @@ var/global/list/protected_objects = list(/obj/structure/table, /obj/structure/ca var/destroy_objects = 0 var/knockdown_people = 0 -/mob/living/simple_animal/hostile/mimic/copy/New(loc, var/obj/copy, var/mob/living/creator) +/mob/living/simple_mob/hostile/mimic/copy/New(loc, var/obj/copy, var/mob/living/creator) ..(loc) CopyObject(copy, creator) -/mob/living/simple_animal/hostile/mimic/copy/death() +/mob/living/simple_mob/hostile/mimic/copy/death() for(var/atom/movable/M in src) if(isbelly(M)) //VOREStation edit @@ -156,12 +156,12 @@ var/global/list/protected_objects = list(/obj/structure/table, /obj/structure/ca M.forceMove(get_turf(src)) ..() -/mob/living/simple_animal/hostile/mimic/copy/ListTargets() +/mob/living/simple_mob/hostile/mimic/copy/ListTargets() // Return a list of targets that isn't the creator . = ..() return . - creator -/mob/living/simple_animal/hostile/mimic/copy/proc/CopyObject(var/obj/O, var/mob/living/creator) +/mob/living/simple_mob/hostile/mimic/copy/proc/CopyObject(var/obj/O, var/mob/living/creator) if((istype(O, /obj/item) || istype(O, /obj/structure)) && !is_type_in_list(O, protected_objects)) @@ -193,11 +193,11 @@ var/global/list/protected_objects = list(/obj/structure/table, /obj/structure/ca return 1 return -/mob/living/simple_animal/hostile/mimic/copy/DestroySurroundings() +/mob/living/simple_mob/hostile/mimic/copy/DestroySurroundings() if(destroy_objects) ..() -/mob/living/simple_animal/hostile/mimic/copy/PunchTarget() +/mob/living/simple_mob/hostile/mimic/copy/PunchTarget() . =..() if(knockdown_people) var/mob/living/L = . diff --git a/code/modules/mob/living/simple_animal/aliens/shade.dm b/code/modules/mob/living/simple_animal/aliens/shade.dm index c1c2f1dc01..000061f0f8 100644 --- a/code/modules/mob/living/simple_animal/aliens/shade.dm +++ b/code/modules/mob/living/simple_animal/aliens/shade.dm @@ -1,4 +1,4 @@ -/mob/living/simple_animal/shade +/mob/living/simple_mob/shade name = "Shade" real_name = "Shade" desc = "A bound spirit" @@ -40,17 +40,17 @@ loot_list = list(/obj/item/weapon/ectoplasm = 100) -/mob/living/simple_animal/shade/cultify() +/mob/living/simple_mob/shade/cultify() return -/mob/living/simple_animal/shade/attackby(var/obj/item/O as obj, var/mob/user as mob) +/mob/living/simple_mob/shade/attackby(var/obj/item/O as obj, var/mob/user as mob) if(istype(O, /obj/item/device/soulstone)) var/obj/item/device/soulstone/S = O; S.transfer_soul("SHADE", src, user) return ..() -/mob/living/simple_animal/shade/death() +/mob/living/simple_mob/shade/death() ..() for(var/mob/M in viewers(src, null)) if((M.client && !( M.blinded ))) diff --git a/code/modules/mob/living/simple_animal/aliens/statue.dm b/code/modules/mob/living/simple_animal/aliens/statue.dm index f80181bdb0..0dc3a44868 100644 --- a/code/modules/mob/living/simple_animal/aliens/statue.dm +++ b/code/modules/mob/living/simple_animal/aliens/statue.dm @@ -2,7 +2,7 @@ //Weeping angels/SCP-173 hype //Horrible shitcoding and stolen code adaptations below. You have been warned. -/mob/living/simple_animal/hostile/statue +/mob/living/simple_mob/hostile/statue name = "statue" // matches the name of the statue with the flesh-to-stone spell desc = "An incredibly lifelike marble carving. Its eyes seems to follow you..." // same as an ordinary statue with the added "eye following you" description icon = 'icons/obj/statue.dmi' @@ -79,21 +79,21 @@ // No movement while seen code. -/mob/living/simple_animal/hostile/statue/New(loc) +/mob/living/simple_mob/hostile/statue/New(loc) ..() // Give spells add_spell(new/spell/aoe_turf/flicker_lights) add_spell(new/spell/aoe_turf/blindness) add_spell(new/spell/aoe_turf/shatter) -/mob/living/simple_animal/hostile/statue/DestroySurroundings() +/mob/living/simple_mob/hostile/statue/DestroySurroundings() if(can_be_seen(get_turf(loc))) if(client) to_chat(src, "You cannot move, there are eyes on you!") return 0 return ..() -/mob/living/simple_animal/hostile/statue/attackby(var/obj/item/O as obj, var/mob/user as mob) //banishing the statue is a risky job +/mob/living/simple_mob/hostile/statue/attackby(var/obj/item/O as obj, var/mob/user as mob) //banishing the statue is a risky job if(istype(O, /obj/item/weapon/nullrod)) visible_message("[user] tries to banish [src] with [O]!") if(do_after(user, 15, src)) @@ -111,21 +111,21 @@ resistance = initial(resistance) ..() -/mob/living/simple_animal/hostile/statue/death() +/mob/living/simple_mob/hostile/statue/death() var/chunks_to_spawn = rand(2,5) for(var/I = 1 to chunks_to_spawn) new /obj/item/stack/material/marble(get_turf(loc)) new /obj/item/cursed_marble(get_turf(loc)) ..() -/mob/living/simple_animal/hostile/statue/Move(turf/NewLoc) +/mob/living/simple_mob/hostile/statue/Move(turf/NewLoc) if(can_be_seen(NewLoc)) if(client) to_chat(src, "You cannot move, there are eyes on you!") return 0 return ..() -/mob/living/simple_animal/hostile/statue/Life() +/mob/living/simple_mob/hostile/statue/Life() ..() handle_target() handleAnnoyance() @@ -137,7 +137,7 @@ else if ((annoyance - 2) > 0) annoyance -= 2 -/mob/living/simple_animal/hostile/statue/proc/handle_target() +/mob/living/simple_mob/hostile/statue/proc/handle_target() if(target_mob) // If we have a target and we're AI controlled var/mob/watching = can_be_seen() // If they're not our target @@ -148,7 +148,7 @@ target_mob = watching -/mob/living/simple_animal/hostile/statue/proc/handleAnnoyance() +/mob/living/simple_mob/hostile/statue/proc/handleAnnoyance() if(respond) //so it won't blind people 24/7 respond = 0 if (annoyance > 30) @@ -163,7 +163,7 @@ respond = 1 -/mob/living/simple_animal/hostile/statue/proc/AI_blind() +/mob/living/simple_mob/hostile/statue/proc/AI_blind() for(var/mob/living/L in oviewers(12, src)) //the range is so big, because it tries to keep out of sight and can't reengage if you get too far if (prob(70)) if(ishuman(L)) @@ -174,7 +174,7 @@ L.Blind(2) return -/mob/living/simple_animal/hostile/statue/proc/AI_flash() +/mob/living/simple_mob/hostile/statue/proc/AI_flash() if (prob(60)) visible_message("The statue slowly points at the light.") for(var/obj/machinery/light/L in oview(12, src)) @@ -182,7 +182,7 @@ return -/mob/living/simple_animal/hostile/statue/proc/AI_mirrorshmash() +/mob/living/simple_mob/hostile/statue/proc/AI_mirrorshmash() for(var/obj/structure/mirror/M in oview(4, src)) if ((!M.shattered )||(!M.glass)) visible_message("The statue slowly points at the mirror!") @@ -192,7 +192,7 @@ -/mob/living/simple_animal/hostile/statue/AttackTarget() +/mob/living/simple_mob/hostile/statue/AttackTarget() if(can_be_seen(get_turf(loc))) if(client) to_chat(src, "You cannot attack, there are eyes on you!") @@ -203,7 +203,7 @@ -/mob/living/simple_animal/hostile/statue/DoPunch(var/atom/A) //had to redo that, since it's supposed to target only head and upper body +/mob/living/simple_mob/hostile/statue/DoPunch(var/atom/A) //had to redo that, since it's supposed to target only head and upper body if(!Adjacent(A)) // They could've moved in the meantime. return FALSE @@ -228,11 +228,11 @@ -/mob/living/simple_animal/hostile/statue/face_atom() +/mob/living/simple_mob/hostile/statue/face_atom() if(!can_be_seen(get_turf(loc))) ..() -/mob/living/simple_animal/hostile/statue/proc/can_be_seen(turf/destination) +/mob/living/simple_mob/hostile/statue/proc/can_be_seen(turf/destination) if(!cannot_be_seen) return null @@ -275,18 +275,18 @@ // Cannot talk -/mob/living/simple_animal/hostile/statue/say() +/mob/living/simple_mob/hostile/statue/say() return 0 // Turn to dust when gibbed -/mob/living/simple_animal/hostile/statue/gib() +/mob/living/simple_mob/hostile/statue/gib() dust() // Stop attacking clientless mobs -/mob/living/simple_animal/hostile/statue/proc/CanAttack(atom/the_target) //ignore clientless mobs +/mob/living/simple_mob/hostile/statue/proc/CanAttack(atom/the_target) //ignore clientless mobs if(isliving(the_target)) var/mob/living/L = the_target if(!L.client && !L.ckey) @@ -319,7 +319,7 @@ spell_flags = 0 range = 10 -/spell/aoe_turf/blindness/cast(list/targets, mob/living/simple_animal/hostile/statue/user = usr) +/spell/aoe_turf/blindness/cast(list/targets, mob/living/simple_mob/hostile/statue/user = usr) for(var/mob/living/L in targets) if(L == user || L == user.creator) continue @@ -350,7 +350,7 @@ -/mob/living/simple_animal/hostile/statue/verb/toggle_darkness() +/mob/living/simple_mob/hostile/statue/verb/toggle_darkness() set name = "Toggle Darkness" set desc = "You ARE the darkness." set category = "Abilities" @@ -360,13 +360,13 @@ -/mob/living/simple_animal/hostile/statue/restrained() +/mob/living/simple_mob/hostile/statue/restrained() . = ..() if(can_be_seen(loc)) return 1 -/mob/living/simple_animal/hostile/statue/ListTargets(dist = view_range) +/mob/living/simple_mob/hostile/statue/ListTargets(dist = view_range) var/list/L = mobs_in_xray_view(dist, src) for(var/obj/mecha/M in mechas_list) @@ -430,7 +430,7 @@ /obj/item/cursed_marble/proc/transfer_personality(var/mob/candidate, var/mob/user) announce_ghost_joinleave(candidate, 0, "They are a statue now.") src.searching = 2 - var/mob/living/simple_animal/hostile/statue/S = new(get_turf(src)) + var/mob/living/simple_mob/hostile/statue/S = new(get_turf(src)) S.client = candidate.client if(user) S.creator = user @@ -451,7 +451,7 @@ var/choice = alert(user, "Are you sure you want to crush the marble? (this will spawn a clientless version of the statue, hostile to everyone, but you)", "Crush it?", "Yes", "No") if(choice) if(choice == "Yes") - var/mob/living/simple_animal/hostile/statue/S = new /mob/living/simple_animal/hostile/statue(get_turf(user)) + var/mob/living/simple_mob/hostile/statue/S = new /mob/living/simple_mob/hostile/statue(get_turf(user)) visible_message("The slab suddenly takes the shape of a humanoid!") S.creator = user qdel(src) \ No newline at end of file diff --git a/code/modules/mob/living/simple_animal/animals/bat.dm b/code/modules/mob/living/simple_animal/animals/bat.dm index 680091010e..3158814353 100644 --- a/code/modules/mob/living/simple_animal/animals/bat.dm +++ b/code/modules/mob/living/simple_animal/animals/bat.dm @@ -1,4 +1,4 @@ -/mob/living/simple_animal/hostile/scarybat +/mob/living/simple_mob/hostile/scarybat name = "space bats" desc = "A swarm of cute little blood sucking bats that looks pretty upset." tt_desc = "N Bestia gregaria" //Nispean swarm bats, because of course Nisp has swarm bats @@ -47,25 +47,25 @@ var/mob/living/owner -/mob/living/simple_animal/hostile/scarybat/New(loc, mob/living/L as mob) +/mob/living/simple_mob/hostile/scarybat/New(loc, mob/living/L as mob) ..() if(istype(L)) owner = L -/mob/living/simple_animal/hostile/scarybat/Process_Spacemove(var/check_drift = 0) +/mob/living/simple_mob/hostile/scarybat/Process_Spacemove(var/check_drift = 0) return ..() -/mob/living/simple_animal/hostile/scarybat/set_target() +/mob/living/simple_mob/hostile/scarybat/set_target() . = ..() if(.) emote("flutters towards [.]") -/mob/living/simple_animal/hostile/scarybat/ListTargets() +/mob/living/simple_mob/hostile/scarybat/ListTargets() . = ..() if(owner) return . - owner -/mob/living/simple_animal/hostile/scarybat/PunchTarget() +/mob/living/simple_mob/hostile/scarybat/PunchTarget() . =..() var/mob/living/L = . if(istype(L)) @@ -73,13 +73,13 @@ L.Stun(1) L.visible_message("\the [src] scares \the [L]!") -/mob/living/simple_animal/hostile/scarybat/cult +/mob/living/simple_mob/hostile/scarybat/cult faction = "cult" supernatural = 1 -/mob/living/simple_animal/hostile/scarybat/cult/cultify() +/mob/living/simple_mob/hostile/scarybat/cult/cultify() return -/mob/living/simple_animal/hostile/scarybat/cult/Life() +/mob/living/simple_mob/hostile/scarybat/cult/Life() ..() check_horde() diff --git a/code/modules/mob/living/simple_animal/animals/bear.dm b/code/modules/mob/living/simple_animal/animals/bear.dm index cc154533da..dfd6a56cab 100644 --- a/code/modules/mob/living/simple_animal/animals/bear.dm +++ b/code/modules/mob/living/simple_animal/animals/bear.dm @@ -1,5 +1,5 @@ //Space bears! -/mob/living/simple_animal/hostile/bear +/mob/living/simple_mob/hostile/bear name = "space bear" desc = "A product of Space Russia?" tt_desc = "U Ursinae aetherius" //...bearspace? Maybe. @@ -48,7 +48,7 @@ // var/stance_step = 0 -/mob/living/simple_animal/hostile/bear/handle_stance(var/new_stance) +/mob/living/simple_mob/hostile/bear/handle_stance(var/new_stance) // Below was a bunch of code that made this specific mob be 'alert' and will hurt you when it gets closer. // It's commented out because it made infinite loops and the AI is going to be moved/rewritten sometime soon (famous last words) // and it would be better if this 'alert before attacking' behaviour was on the parent instead of a specific type of mob anyways. @@ -103,7 +103,7 @@ ..() */ -/mob/living/simple_animal/hostile/bear/update_icons() +/mob/living/simple_mob/hostile/bear/update_icons() ..() if(!stat) if(loc && istype(loc,/turf/space)) @@ -111,16 +111,16 @@ else icon_state = "bearfloor" -/mob/living/simple_animal/hostile/bear/Process_Spacemove(var/check_drift = 0) +/mob/living/simple_mob/hostile/bear/Process_Spacemove(var/check_drift = 0) return -/mob/living/simple_animal/hostile/bear/FindTarget() +/mob/living/simple_mob/hostile/bear/FindTarget() . = ..() if(.) custom_emote(1,"stares alertly at [.]") // handle_stance(STANCE_ALERT) -/mob/living/simple_animal/hostile/bear/PunchTarget() +/mob/living/simple_mob/hostile/bear/PunchTarget() if(!Adjacent(target_mob)) return custom_emote(1, pick( list("slashes at [target_mob]", "bites [target_mob]") ) ) diff --git a/code/modules/mob/living/simple_animal/animals/birds_vr.dm b/code/modules/mob/living/simple_animal/animals/birds_vr.dm index b6332ad0eb..0331e4931b 100644 --- a/code/modules/mob/living/simple_animal/animals/birds_vr.dm +++ b/code/modules/mob/living/simple_animal/animals/birds_vr.dm @@ -1,5 +1,5 @@ //Why are these a subclass of cat? -/mob/living/simple_animal/bird +/mob/living/simple_mob/bird name = "parrot" desc = "A domesticated bird. Tweet tweet!" icon = 'icons/mob/birds.dmi' @@ -18,127 +18,127 @@ holder_type = /obj/item/weapon/holder/bird -/mob/living/simple_animal/bird/kea +/mob/living/simple_mob/bird/kea name = "Kea" icon_state = "kea-flap" icon_living = "kea-flap" icon_dead = "kea-dead" -/mob/living/simple_animal/bird/eclectus +/mob/living/simple_mob/bird/eclectus name = "Eclectus" icon_state = "eclectus-flap" icon_living = "eclectus-flap" icon_dead = "eclectus-dead" -/mob/living/simple_animal/bird/eclectusf +/mob/living/simple_mob/bird/eclectusf name = "Eclectus" icon_state = "eclectusf-flap" icon_living = "eclectusf-flap" icon_dead = "eclectusf-dead" -/mob/living/simple_animal/bird/greybird +/mob/living/simple_mob/bird/greybird name = "Grey Bird" icon_state = "agrey-flap" icon_living = "agrey-flap" icon_dead = "agrey-dead" -/mob/living/simple_animal/bird/blue_caique +/mob/living/simple_mob/bird/blue_caique name = "Blue Caique " icon_state = "bcaique-flap" icon_living = "bcaique-flap" icon_dead = "bcaique-dead" -/mob/living/simple_animal/bird/white_caique +/mob/living/simple_mob/bird/white_caique name = "White caique" icon_state = "wcaique-flap" icon_living = "wcaique-flap" icon_dead = "wcaique-dead" -/mob/living/simple_animal/bird/green_budgerigar +/mob/living/simple_mob/bird/green_budgerigar name = "Green Budgerigar" icon_state = "gbudge-flap" icon_living = "gbudge-flap" icon_dead = "gbudge-dead" -/mob/living/simple_animal/bird/blue_Budgerigar +/mob/living/simple_mob/bird/blue_Budgerigar name = "Blue Budgerigar" icon_state = "bbudge-flap" icon_living = "bbudge-flap" icon_dead = "bbudge-dead" -/mob/living/simple_animal/bird/bluegreen_Budgerigar +/mob/living/simple_mob/bird/bluegreen_Budgerigar name = "Bluegreen Budgerigar" icon_state = "bgbudge-flap" icon_living = "bgbudge-flap" icon_dead = "bgbudge-dead" -/mob/living/simple_animal/bird/commonblackbird +/mob/living/simple_mob/bird/commonblackbird name = "Black Bird" icon_state = "commonblackbird" icon_living = "commonblackbird" icon_dead = "commonblackbird-dead" -/mob/living/simple_animal/bird/azuretit +/mob/living/simple_mob/bird/azuretit name = "Azure Tit" icon_state = "azuretit" icon_living = "azuretit" icon_dead = "azuretit-dead" -/mob/living/simple_animal/bird/europeanrobin +/mob/living/simple_mob/bird/europeanrobin name = "European Robin" icon_state = "europeanrobin" icon_living = "europeanrobin" icon_dead = "europeanrobin-dead" -/mob/living/simple_animal/bird/goldcrest +/mob/living/simple_mob/bird/goldcrest name = "Goldcrest" icon_state = "goldcrest" icon_living = "goldcrest" icon_dead = "goldcrest-dead" -/mob/living/simple_animal/bird/ringneckdove +/mob/living/simple_mob/bird/ringneckdove name = "Ringneck Dove" icon_state = "ringneckdove" icon_living = "ringneckdove" icon_dead = "ringneckdove-dead" -/mob/living/simple_animal/bird/cockatiel +/mob/living/simple_mob/bird/cockatiel name = "Cockatiel" icon_state = "tiel-flap" icon_living = "tiel-flap" icon_dead = "tiel-dead" -/mob/living/simple_animal/bird/white_cockatiel +/mob/living/simple_mob/bird/white_cockatiel name = "White Cockatiel" icon_state = "wtiel-flap" icon_living = "wtiel-flap" icon_dead = "wtiel-dead" -/mob/living/simple_animal/bird/yellowish_cockatiel +/mob/living/simple_mob/bird/yellowish_cockatiel name = "Yellowish Cockatiel" icon_state = "luttiel-flap" icon_living = "luttiel-flap" icon_dead = "luttiel-dead" -/mob/living/simple_animal/bird/grey_cockatiel +/mob/living/simple_mob/bird/grey_cockatiel name = "Grey Cockatiel" icon_state = "blutiel-flap" icon_living = "blutiel-flap" icon_dead = "blutiel-dead" -/mob/living/simple_animal/bird/too +/mob/living/simple_mob/bird/too name = "Too" icon_state = "too-flap" icon_living = "too-flap" icon_dead = "too-dead" -/mob/living/simple_animal/bird/hooded_too +/mob/living/simple_mob/bird/hooded_too name = "Utoo" icon_state = "utoo-flap" icon_living = "utoo-flap" icon_dead = "utoo-dead" -/mob/living/simple_animal/bird/pink_too +/mob/living/simple_mob/bird/pink_too name = "Mtoo" icon_state = "mtoo-flap" icon_living = "mtoo-flap" diff --git a/code/modules/mob/living/simple_animal/animals/carp.dm b/code/modules/mob/living/simple_animal/animals/carp.dm index 7e7ae92876..d5419c8462 100644 --- a/code/modules/mob/living/simple_animal/animals/carp.dm +++ b/code/modules/mob/living/simple_animal/animals/carp.dm @@ -1,4 +1,4 @@ -/mob/living/simple_animal/hostile/carp +/mob/living/simple_mob/hostile/carp name = "space carp" desc = "A ferocious, fang-bearing creature that resembles a fish." tt_desc = "U Cyprinus aetherius" //carpspace? maybe @@ -38,7 +38,7 @@ meat_type = /obj/item/weapon/reagent_containers/food/snacks/carpmeat -/mob/living/simple_animal/hostile/carp/large +/mob/living/simple_mob/hostile/carp/large name = "elder carp" desc = "An older, more matured carp. Few survive to this age due to their aggressiveness." icon = 'icons/mob/64x32.dmi' @@ -56,7 +56,7 @@ maxHealth = 50 -/mob/living/simple_animal/hostile/carp/large/huge +/mob/living/simple_mob/hostile/carp/large/huge name = "great white carp" desc = "A very rare breed of carp- and a very aggressive one." icon = 'icons/mob/64x64.dmi' @@ -75,15 +75,15 @@ old_y = -16 pixel_y = -16 -/mob/living/simple_animal/hostile/carp/Process_Spacemove(var/check_drift = 0) +/mob/living/simple_mob/hostile/carp/Process_Spacemove(var/check_drift = 0) return 1 //No drifting in space for space carp! //original comments do not steal -/mob/living/simple_animal/hostile/carp/set_target() +/mob/living/simple_mob/hostile/carp/set_target() . = ..() if(.) custom_emote(1,"nashes at [.]") -/mob/living/simple_animal/hostile/carp/PunchTarget() +/mob/living/simple_mob/hostile/carp/PunchTarget() . =..() var/mob/living/L = . if(istype(L)) diff --git a/code/modules/mob/living/simple_animal/animals/cat.dm b/code/modules/mob/living/simple_animal/animals/cat.dm index 8877ea8959..5e554a0f8a 100644 --- a/code/modules/mob/living/simple_animal/animals/cat.dm +++ b/code/modules/mob/living/simple_animal/animals/cat.dm @@ -1,5 +1,5 @@ //Cat -/mob/living/simple_animal/cat +/mob/living/simple_mob/cat name = "cat" desc = "A domesticated, feline pet. Has a tendency to adopt crewmembers." tt_desc = "E Felis silvestris catus" @@ -44,7 +44,7 @@ var/turns_since_scan = 0 var/mob/flee_target -/mob/living/simple_animal/cat/Life() +/mob/living/simple_mob/cat/Life() . = ..() if(!.) return @@ -62,20 +62,20 @@ handle_flee_target() -/mob/living/simple_animal/cat/PunchTarget() - if(istype(target_mob,/mob/living/simple_animal/mouse)) - var/mob/living/simple_animal/mouse/mouse = target_mob +/mob/living/simple_mob/cat/PunchTarget() + if(ismouse(target_mob)) + var/mob/living/simple_mob/animal/passive/mouse/mouse = target_mob mouse.splat() visible_emote(pick("bites \the [mouse]!","toys with \the [mouse].","chomps on \the [mouse]!")) return mouse else ..() -/mob/living/simple_animal/cat/Found(var/atom/found_atom) - if(istype(found_atom,/mob/living/simple_animal/mouse) && SA_attackable(found_atom)) +/mob/living/simple_mob/cat/Found(var/atom/found_atom) + if(ismouse(found_atom) && SA_attackable(found_atom)) return found_atom -/mob/living/simple_animal/cat/proc/handle_flee_target() +/mob/living/simple_mob/cat/proc/handle_flee_target() //see if we should stop fleeing if (flee_target && !(flee_target in ListTargets(view_range))) flee_target = null @@ -88,21 +88,21 @@ stop_automated_movement = 1 walk_away(src, flee_target, 7, 2) -/mob/living/simple_animal/cat/react_to_attack(var/atom/A) +/mob/living/simple_mob/cat/react_to_attack(var/atom/A) if(A == src) return flee_target = A turns_since_scan = 5 -/mob/living/simple_animal/cat/ex_act() +/mob/living/simple_mob/cat/ex_act() . = ..() react_to_attack(src.loc) //Basic friend AI -/mob/living/simple_animal/cat/fluff +/mob/living/simple_mob/cat/fluff var/mob/living/carbon/human/friend var/befriend_job = null -/mob/living/simple_animal/cat/fluff/Life() +/mob/living/simple_mob/cat/fluff/Life() . = ..() if(!. || ai_inactive || !friend) return @@ -129,7 +129,7 @@ var/verb = pick("meows", "mews", "mrowls") audible_emote("[verb] anxiously.") -/mob/living/simple_animal/cat/fluff/verb/become_friends() +/mob/living/simple_mob/cat/fluff/verb/become_friends() set name = "Become Friends" set category = "IC" set src in view(1) @@ -153,7 +153,7 @@ return //RUNTIME IS ALIVE! SQUEEEEEEEE~ -/mob/living/simple_animal/cat/fluff/Runtime +/mob/living/simple_mob/cat/fluff/Runtime name = "Runtime" desc = "Her fur has the look and feel of velvet, and her tail quivers occasionally." tt_desc = "E Felis silvestris medicalis" //a hypoallergenic breed produced by NT for... medical purposes? Sure. @@ -165,7 +165,7 @@ icon_rest = "cat_rest" befriend_job = "Chief Medical Officer" -/mob/living/simple_animal/cat/kitten +/mob/living/simple_mob/cat/kitten name = "kitten" desc = "D'aaawwww" icon_state = "kitten" @@ -173,7 +173,6 @@ icon_living = "kitten" icon_dead = "kitten_dead" gender = NEUTER - holder_type = /obj/item/weapon/holder/cat/kitten //VOREStation Edit // Leaving this here for now. /obj/item/weapon/holder/cat/fluff/bones @@ -182,7 +181,7 @@ gender = MALE icon_state = "cat3" -/mob/living/simple_animal/cat/fluff/bones +/mob/living/simple_mob/cat/fluff/bones name = "Bones" desc = "That's Bones the cat. He's a laid back, black cat. Meow." gender = MALE @@ -194,11 +193,6 @@ holder_type = /obj/item/weapon/holder/cat/fluff/bones var/friend_name = "Erstatz Vryroxes" -/mob/living/simple_animal/cat/kitten/New() +/mob/living/simple_mob/cat/kitten/New() gender = pick(MALE, FEMALE) - ..() - -// VOREStation Edit - Adds generic tactical kittens -/obj/item/weapon/holder/cat/kitten - icon_state = "kitten" - w_class = ITEMSIZE_SMALL + ..() \ No newline at end of file diff --git a/code/modules/mob/living/simple_animal/animals/cat_vr.dm b/code/modules/mob/living/simple_animal/animals/cat_vr.dm index 43d166af35..d4be475cef 100644 --- a/code/modules/mob/living/simple_animal/animals/cat_vr.dm +++ b/code/modules/mob/living/simple_animal/animals/cat_vr.dm @@ -1,4 +1,4 @@ -/mob/living/simple_animal/cat/fluff/Runtime/init_vore() +/mob/living/simple_mob/cat/fluff/Runtime/init_vore() ..() var/obj/belly/B = vore_selected B.name = "Stomach" @@ -38,7 +38,7 @@ icon_state = "kitten" w_class = ITEMSIZE_SMALL -/mob/living/simple_animal/cat/fluff/tabiranth +/mob/living/simple_mob/cat/fluff/tabiranth name = "Spirit" desc = "A small, inquisitive feline, who constantly seems to investigate his surroundings." icon = 'icons/mob/custom_items_mob.dmi' @@ -55,7 +55,7 @@ health = 50 //Emergency teleport - Until a spriter makes something better -/mob/living/simple_animal/cat/fluff/tabiranth/death(gibbed, deathmessage = "teleports away!") +/mob/living/simple_mob/cat/fluff/tabiranth/death(gibbed, deathmessage = "teleports away!") overlays = list() icon_state = "" flick("kphaseout",src) diff --git a/code/modules/mob/living/simple_animal/animals/corgi.dm b/code/modules/mob/living/simple_animal/animals/corgi.dm index 33bda8b2e0..52d2268be8 100644 --- a/code/modules/mob/living/simple_animal/animals/corgi.dm +++ b/code/modules/mob/living/simple_animal/animals/corgi.dm @@ -1,5 +1,5 @@ //Corgi -/mob/living/simple_animal/corgi +/mob/living/simple_mob/corgi name = "corgi" real_name = "corgi" desc = "It's a corgi." @@ -33,7 +33,7 @@ var/obj/item/inventory_back //IAN! SQUEEEEEEEEE~ -/mob/living/simple_animal/corgi/Ian +/mob/living/simple_mob/corgi/Ian name = "Ian" real_name = "Ian" //Intended to hold the name without altering it. gender = MALE @@ -44,7 +44,7 @@ response_disarm = "bops" response_harm = "kicks" -/mob/living/simple_animal/corgi/Ian/Life() +/mob/living/simple_mob/corgi/Ian/Life() ..() //Not replacing with SA FollowTarget mechanics because Ian behaves... very... specifically. @@ -100,7 +100,7 @@ name = "corgi meat" desc = "Tastes like... well, you know..." -/mob/living/simple_animal/corgi/attackby(var/obj/item/O as obj, var/mob/user as mob) //Marker -Agouri +/mob/living/simple_mob/corgi/attackby(var/obj/item/O as obj, var/mob/user as mob) //Marker -Agouri if(istype(O, /obj/item/weapon/newspaper)) if(!stat) for(var/mob/M in viewers(user, null)) @@ -113,7 +113,7 @@ else ..() -/mob/living/simple_animal/corgi/regenerate_icons() +/mob/living/simple_mob/corgi/regenerate_icons() overlays = list() if(inventory_head) @@ -137,7 +137,7 @@ return -/mob/living/simple_animal/corgi/puppy +/mob/living/simple_mob/corgi/puppy name = "corgi puppy" real_name = "corgi" desc = "It's a corgi puppy." @@ -146,7 +146,7 @@ icon_dead = "puppy_dead" //pupplies cannot wear anything. -/mob/living/simple_animal/corgi/puppy/Topic(href, href_list) +/mob/living/simple_mob/corgi/puppy/Topic(href, href_list) if(href_list["remove_inv"] || href_list["add_inv"]) usr << "You can't fit this on [src]" return @@ -154,7 +154,7 @@ //LISA! SQUEEEEEEEEE~ -/mob/living/simple_animal/corgi/Lisa +/mob/living/simple_mob/corgi/Lisa name = "Lisa" real_name = "Lisa" gender = FEMALE @@ -169,13 +169,13 @@ var/puppies = 0 //Lisa already has a cute bow! -/mob/living/simple_animal/corgi/Lisa/Topic(href, href_list) +/mob/living/simple_mob/corgi/Lisa/Topic(href, href_list) if(href_list["remove_inv"] || href_list["add_inv"]) to_chat(usr, "[src] already has a cute bow!") return ..() -/mob/living/simple_animal/corgi/Lisa/Life() +/mob/living/simple_mob/corgi/Lisa/Life() ..() if(!stat && !resting && !buckled) @@ -185,7 +185,7 @@ var/alone = 1 var/ian = 0 for(var/mob/M in oviewers(7, src)) - if(istype(M, /mob/living/simple_animal/corgi/Ian)) + if(istype(M, /mob/living/simple_mob/corgi/Ian)) if(M.client) alone = 0 break @@ -197,7 +197,7 @@ if(alone && ian && puppies < 4) if(near_camera(src) || near_camera(ian)) return - new /mob/living/simple_animal/corgi/puppy(loc) + new /mob/living/simple_mob/corgi/puppy(loc) if(prob(1)) @@ -207,8 +207,9 @@ set_dir(i) sleep(1) + //Technically this should be like, its own file or something or a subset of dog but whatever. Not a coder. -/mob/living/simple_animal/corgi/tamaskan +/mob/living/simple_mob/corgi/tamaskan name = "tamaskan" real_name = "tamaskan" desc = "It's a tamaskan." @@ -218,7 +219,7 @@ retaliate = 1 //Tamaskans are bigass dogs, okay? -/mob/living/simple_animal/corgi/tamaskan/spice +/mob/living/simple_mob/corgi/tamaskan/spice name = "Spice" real_name = "Spice" //Intended to hold the name without altering it. gender = FEMALE diff --git a/code/modules/mob/living/simple_animal/animals/corgi_vr.dm b/code/modules/mob/living/simple_animal/animals/corgi_vr.dm index 1cf3930452..3ef7f472f8 100644 --- a/code/modules/mob/living/simple_animal/animals/corgi_vr.dm +++ b/code/modules/mob/living/simple_animal/animals/corgi_vr.dm @@ -1,4 +1,4 @@ -/mob/living/simple_animal/corgi/show_inv(mob/user as mob) +/mob/living/simple_mob/corgi/show_inv(mob/user as mob) user.set_machine(src) if(user.stat) return @@ -16,7 +16,7 @@ onclose(user, "mob[real_name]") return -/mob/living/simple_animal/corgi/attackby(var/obj/item/O as obj, var/mob/user as mob) +/mob/living/simple_mob/corgi/attackby(var/obj/item/O as obj, var/mob/user as mob) if(inventory_head && inventory_back) //helmet and armor = 100% protection if( istype(inventory_head,/obj/item/clothing/head/helmet) && istype(inventory_back,/obj/item/clothing/suit/armor) ) @@ -33,7 +33,7 @@ return ..() -/mob/living/simple_animal/corgi/Topic(href, href_list) +/mob/living/simple_mob/corgi/Topic(href, href_list) if(usr.stat) return //Removing from inventory @@ -150,7 +150,7 @@ else ..() -/mob/living/simple_animal/corgi/proc/place_on_head(obj/item/item_to_add) +/mob/living/simple_mob/corgi/proc/place_on_head(obj/item/item_to_add) item_to_add.loc = src src.inventory_head = item_to_add regenerate_icons() diff --git a/code/modules/mob/living/simple_animal/animals/crab.dm b/code/modules/mob/living/simple_animal/animals/crab.dm index c369aa375a..0808b11dab 100644 --- a/code/modules/mob/living/simple_animal/animals/crab.dm +++ b/code/modules/mob/living/simple_animal/animals/crab.dm @@ -1,5 +1,5 @@ //Look Sir, free crabs! -/mob/living/simple_animal/crab +/mob/living/simple_mob/crab name = "crab" desc = "A hard-shelled crustacean. Seems quite content to lounge around all the time." tt_desc = "E Cancer bellianus" @@ -28,7 +28,7 @@ var/obj/item/inventory_head var/obj/item/inventory_mask -/mob/living/simple_animal/crab/Life() +/mob/living/simple_mob/crab/Life() ..() //CRAB movement, I'm not porting this up to SA because... "sideways-only movement" var nothanks if(!ckey && !stat) @@ -40,7 +40,7 @@ regenerate_icons() //COFFEE! SQUEEEEEEEEE! -/mob/living/simple_animal/crab/Coffee +/mob/living/simple_mob/crab/Coffee name = "Coffee" real_name = "Coffee" desc = "It's Coffee, the other pet!" @@ -49,7 +49,7 @@ response_harm = "stomps" //Sif Crabs -/mob/living/simple_animal/giant_crab +/mob/living/simple_mob/giant_crab name = "giant crab" desc = "A large, hard-shelled crustacean. This one is mostly grey." tt_desc = "S Cancer holligus" diff --git a/code/modules/mob/living/simple_animal/animals/farm_animals.dm b/code/modules/mob/living/simple_animal/animals/farm_animals.dm index 5f63128596..534bbf6000 100644 --- a/code/modules/mob/living/simple_animal/animals/farm_animals.dm +++ b/code/modules/mob/living/simple_animal/animals/farm_animals.dm @@ -277,7 +277,7 @@ var/global/chicken_count = 0 E.pixel_x = rand(-6,6) E.pixel_y = rand(-6,6) if(chicken_count < MAX_CHICKENS && prob(10)) - processing_objects.Add(E) + START_PROCESSING(SSobj, E) /obj/item/weapon/reagent_containers/food/snacks/egg/var/amount_grown = 0 /obj/item/weapon/reagent_containers/food/snacks/egg/process() @@ -286,7 +286,7 @@ var/global/chicken_count = 0 if(amount_grown >= 100) visible_message("[src] hatches with a quiet cracking sound.") new /mob/living/simple_animal/chick(get_turf(src)) - processing_objects.Remove(src) + STOP_PROCESSING(SSobj, src) qdel(src) else - processing_objects.Remove(src) + STOP_PROCESSING(SSobj, src) diff --git a/code/modules/mob/living/simple_animal/animals/fish.dm b/code/modules/mob/living/simple_animal/animals/fish.dm index 547b095bfd..c4d01233ea 100644 --- a/code/modules/mob/living/simple_animal/animals/fish.dm +++ b/code/modules/mob/living/simple_animal/animals/fish.dm @@ -1,5 +1,5 @@ // Different types of fish! They are all subtypes of this tho -/mob/living/simple_animal/fish +/mob/living/simple_mob/fish name = "fish" desc = "Its a fishy. No touchy fishy." icon = 'icons/mob/fish.dmi' @@ -16,7 +16,7 @@ ) // Don't swim out of the water -/mob/living/simple_animal/fish/handle_wander_movement() +/mob/living/simple_mob/fish/handle_wander_movement() if(isturf(src.loc) && !resting && !buckled && canmove) //Physically capable of moving? lifes_since_move++ //Increment turns since move (turns are life() cycles) if(lifes_since_move >= turns_per_move) @@ -30,49 +30,49 @@ lifes_since_move = 0 // Take damage if we are not in water -/mob/living/simple_animal/fish/handle_breathing() +/mob/living/simple_mob/fish/handle_breathing() var/turf/T = get_turf(src) if(T && !is_type_in_list(T, suitable_turf_types)) if(prob(50)) say(pick("Blub", "Glub", "Burble")) adjustBruteLoss(unsuitable_atoms_damage) -/mob/living/simple_animal/fish/bass +/mob/living/simple_mob/fish/bass name = "bass" tt_desc = "E Micropterus notius" icon_state = "bass-swim" icon_living = "bass-swim" icon_dead = "bass-dead" -/mob/living/simple_animal/fish/trout +/mob/living/simple_mob/fish/trout name = "trout" tt_desc = "E Salmo trutta" icon_state = "trout-swim" icon_living = "trout-swim" icon_dead = "trout-dead" -/mob/living/simple_animal/fish/salmon +/mob/living/simple_mob/fish/salmon name = "salmon" tt_desc = "E Oncorhynchus nerka" icon_state = "salmon-swim" icon_living = "salmon-swim" icon_dead = "salmon-dead" -/mob/living/simple_animal/fish/perch +/mob/living/simple_mob/fish/perch name = "perch" tt_desc = "E Perca flavescens" icon_state = "perch-swim" icon_living = "perch-swim" icon_dead = "perch-dead" -/mob/living/simple_animal/fish/pike +/mob/living/simple_mob/fish/pike name = "pike" tt_desc = "E Esox aquitanicus" icon_state = "pike-swim" icon_living = "pike-swim" icon_dead = "pike-dead" -/mob/living/simple_animal/fish/koi +/mob/living/simple_mob/fish/koi name = "koi" tt_desc = "E Cyprinus rubrofuscus" icon_state = "koi-swim" diff --git a/code/modules/mob/living/simple_animal/animals/fish_vr.dm b/code/modules/mob/living/simple_animal/animals/fish_vr.dm index d1d74ec60e..39cd051d6a 100644 --- a/code/modules/mob/living/simple_animal/animals/fish_vr.dm +++ b/code/modules/mob/living/simple_animal/animals/fish_vr.dm @@ -1,21 +1,21 @@ -/mob/living/simple_animal/fish/koi/poisonous +/mob/living/simple_mob/fish/koi/poisonous desc = "A genetic marvel, combining the docility and aesthetics of the koi with some of the resiliency and cunning of the noble space carp." health = 50 maxHealth = 50 -/mob/living/simple_animal/fish/koi/poisonous/New() +/mob/living/simple_mob/fish/koi/poisonous/New() ..() create_reagents(60) reagents.add_reagent("toxin", 45) reagents.add_reagent("impedrezene", 15) -/mob/living/simple_animal/fish/koi/poisonous/Life() +/mob/living/simple_mob/fish/koi/poisonous/Life() ..() if(isbelly(loc) && prob(10)) var/obj/belly/B = loc sting(B.owner) -/mob/living/simple_animal/fish/koi/poisonous/react_to_attack(var/atom/A) +/mob/living/simple_mob/fish/koi/poisonous/react_to_attack(var/atom/A) if(isliving(A) && Adjacent(A)) var/mob/living/M = A visible_message("\The [src][is_dead()?"'s corpse":""] flails at [M]!") @@ -33,7 +33,7 @@ break sleep(3) -/mob/living/simple_animal/fish/koi/poisonous/proc/sting(var/mob/living/M) +/mob/living/simple_mob/fish/koi/poisonous/proc/sting(var/mob/living/M) if(!M.reagents) return 0 M.reagents.add_reagent("toxin", 2) diff --git a/code/modules/mob/living/simple_animal/animals/fluffy_vr.dm b/code/modules/mob/living/simple_animal/animals/fluffy_vr.dm index 38789b4ae8..9b9073fb49 100644 --- a/code/modules/mob/living/simple_animal/animals/fluffy_vr.dm +++ b/code/modules/mob/living/simple_animal/animals/fluffy_vr.dm @@ -1,4 +1,4 @@ -/mob/living/simple_animal/fluffy +/mob/living/simple_mob/fluffy name = "Fluffy" desc = "It's a pink Diyaab! It seems to be very tame and quiet." icon = 'icons/mob/animal_vr.dmi' @@ -28,7 +28,7 @@ meat_amount = 1 meat_type = /obj/item/weapon/reagent_containers/food/snacks/meat -/mob/living/simple_animal/fluffy/Life() +/mob/living/simple_mob/fluffy/Life() . = ..() if(!. || ai_inactive) return diff --git a/code/modules/mob/living/simple_animal/animals/fox_vr.dm b/code/modules/mob/living/simple_animal/animals/fox_vr.dm index 84a9a1ca26..72265c399f 100644 --- a/code/modules/mob/living/simple_animal/animals/fox_vr.dm +++ b/code/modules/mob/living/simple_animal/animals/fox_vr.dm @@ -1,4 +1,4 @@ -/mob/living/simple_animal/fox +/mob/living/simple_mob/fox name = "fox" desc = "It's a fox. I wonder what it says?" tt_desc = "Vulpes vulpes" @@ -39,7 +39,7 @@ var/turns_since_scan = 0 var/mob/flee_target -/mob/living/simple_animal/fox/init_vore() +/mob/living/simple_mob/fox/init_vore() ..() var/obj/belly/B = vore_selected B.name = "Stomach" @@ -62,25 +62,25 @@ "With a loud glorp, the stomach spills more acids onto you.") // All them complicated fox procedures. -/mob/living/simple_animal/fox/Life() +/mob/living/simple_mob/fox/Life() . = ..() if(!.) return handle_flee_target() -/mob/living/simple_animal/fox/PunchTarget() - if(istype(target_mob,/mob/living/simple_animal/mouse)) - var/mob/living/simple_animal/mouse/mouse = target_mob +/mob/living/simple_mob/fox/PunchTarget() + if(istype(target_mob,/mob/living/simple_mob/mouse)) + var/mob/living/simple_mob/mouse/mouse = target_mob mouse.splat() visible_emote(pick("bites \the [mouse]!","pounces on \the [mouse]!","chomps on \the [mouse]!")) else ..() -/mob/living/simple_animal/fox/Found(var/atom/found_atom) - if(istype(found_atom,/mob/living/simple_animal/mouse)) +/mob/living/simple_mob/fox/Found(var/atom/found_atom) + if(istype(found_atom,/mob/living/simple_mob/mouse)) return found_atom -/mob/living/simple_animal/fox/proc/handle_flee_target() +/mob/living/simple_mob/fox/proc/handle_flee_target() //see if we should stop fleeing if (flee_target && !(flee_target in ListTargets(view_range))) flee_target = null @@ -93,16 +93,16 @@ stop_automated_movement = 1 walk_away(src, flee_target, 7, 2) -/mob/living/simple_animal/fox/react_to_attack(var/atom/A) +/mob/living/simple_mob/fox/react_to_attack(var/atom/A) if(A == src) return flee_target = A turns_since_scan = 5 -/mob/living/simple_animal/fox/ex_act() +/mob/living/simple_mob/fox/ex_act() . = ..() react_to_attack(src.loc) -/mob/living/simple_animal/fox/MouseDrop(atom/over_object) +/mob/living/simple_mob/fox/MouseDrop(atom/over_object) var/mob/living/carbon/H = over_object if(!istype(H) || !Adjacent(H)) return ..() @@ -112,17 +112,17 @@ else return ..() -/mob/living/simple_animal/fox/get_scooped(var/mob/living/carbon/grabber) +/mob/living/simple_mob/fox/get_scooped(var/mob/living/carbon/grabber) if (stat >= DEAD) return //since the holder icon looks like a living cat ..() //Basic friend AI -/mob/living/simple_animal/fox/fluff +/mob/living/simple_mob/fox/fluff var/mob/living/carbon/human/friend var/befriend_job = null -/mob/living/simple_animal/fox/fluff/Life() +/mob/living/simple_mob/fox/fluff/Life() . = ..() if(!. || ai_inactive || !friend) return @@ -149,7 +149,7 @@ var/verb = pick("yaps", "howls", "whines") audible_emote("[verb] anxiously.") -/mob/living/simple_animal/fox/fluff/verb/friend() +/mob/living/simple_mob/fox/fluff/verb/friend() set name = "Become Friends" set category = "IC" set src in view(1) @@ -173,13 +173,13 @@ desc = "The fox doesn't say a goddamn thing, now." //Captain fox -/mob/living/simple_animal/fox/fluff/Renault +/mob/living/simple_mob/fox/fluff/Renault name = "Renault" desc = "Renault, the Colony Director's trustworthy fox. I wonder what it says?" tt_desc = "Vulpes nobilis" befriend_job = "Colony Director" -/mob/living/simple_animal/fox/fluff/Renault/init_vore() +/mob/living/simple_mob/fox/fluff/Renault/init_vore() ..() var/obj/belly/B = vore_selected B.name = "Stomach" @@ -201,7 +201,7 @@ "A thick glob of acids drip down from above, adding to the pool of caustic fluids in Renault's belly.", "There's a loud gurgle as the stomach declares the intent to make you a part of Renault.") -/mob/living/simple_animal/fox/syndicate +/mob/living/simple_mob/fox/syndicate name = "syndi-fox" desc = "It's a DASTARDLY fox! The horror! Call the shuttle!" tt_desc = "Vulpes malus" diff --git a/code/modules/mob/living/simple_animal/animals/giant_spider.dm b/code/modules/mob/living/simple_animal/animals/giant_spider.dm index 7fe6744c64..c6acf2a769 100644 --- a/code/modules/mob/living/simple_animal/animals/giant_spider.dm +++ b/code/modules/mob/living/simple_animal/animals/giant_spider.dm @@ -5,7 +5,7 @@ #define SPINNING_COCOON 4 //basic spider mob, these generally guard nests -/mob/living/simple_animal/hostile/giant_spider +/mob/living/simple_mob/hostile/giant_spider name = "giant spider" desc = "Furry and brown, it makes you shudder to look at it. This one has deep red eyes." tt_desc = "X Brachypelma phorus" @@ -51,14 +51,14 @@ low_priority = TRUE //VOREStation Edit -/mob/living/simple_animal/hostile/giant_spider/proc/add_eyes() +/mob/living/simple_mob/hostile/giant_spider/proc/add_eyes() if(!eye_layer) eye_layer = image(icon, "[icon_state]-eyes") eye_layer.plane = PLANE_LIGHTING_ABOVE overlays += eye_layer -/mob/living/simple_animal/hostile/giant_spider/proc/remove_eyes() +/mob/living/simple_mob/hostile/giant_spider/proc/remove_eyes() overlays -= eye_layer /* @@ -66,7 +66,7 @@ Nurse Family */ //nursemaids - these create webs and eggs -/mob/living/simple_animal/hostile/giant_spider/nurse +/mob/living/simple_mob/hostile/giant_spider/nurse desc = "Furry and beige, it makes you shudder to look at it. This one has brilliant green eyes." tt_desc = "X Brachypelma phorus laetus" icon_state = "nurse" @@ -85,7 +85,7 @@ Nurse Family var/atom/cocoon_target var/egg_inject_chance = 5 -/mob/living/simple_animal/hostile/giant_spider/nurse/hat +/mob/living/simple_mob/hostile/giant_spider/nurse/hat desc = "Furry and beige, it makes you shudder to look at it. This one has brilliant green eyes and a tiny nurse hat." icon_state = "nursemed" icon_living = "nursemed" @@ -101,7 +101,7 @@ Nurse Family poison_chance = 15 // VOREStation Edit End -/mob/living/simple_animal/hostile/giant_spider/nurse/queen +/mob/living/simple_mob/hostile/giant_spider/nurse/queen desc = "Absolutely gigantic, this creature is horror itself." tt_desc = "X Brachypelma phorus tyrannus" icon = 'icons/mob/64x64.dmi' @@ -124,7 +124,7 @@ Nurse Family old_x = -16 old_y = -16 -/mob/living/simple_animal/hostile/giant_spider/webslinger +/mob/living/simple_mob/hostile/giant_spider/webslinger desc = "Furry and green, it makes you shudder to look at it. This one has brilliant green eyes, and a cloak of web." tt_desc = "X Brachypelma phorus balisticus" icon_state = "webslinger" @@ -150,7 +150,7 @@ Nurse Family spattack_min_range = 0 spattack_max_range = 5 -/mob/living/simple_animal/hostile/giant_spider/webslinger/AttackTarget() //One day. +/mob/living/simple_mob/hostile/giant_spider/webslinger/AttackTarget() //One day. var/mob/living/carbon/human/victim = null //Webslinger needs to know if its target is human later. if(ishuman(target_mob)) victim = target_mob @@ -165,7 +165,7 @@ Nurse Family shoot_range = 5 return ..() -/mob/living/simple_animal/hostile/giant_spider/carrier +/mob/living/simple_mob/hostile/giant_spider/carrier desc = "Furry, beige, and red, it makes you shudder to look at it. This one has luminous green eyes." tt_desc = "X Brachypelma phorus gerulus" icon_state = "carrier" @@ -183,23 +183,23 @@ Nurse Family var/spiderling_count = 0 var/spiderling_type = /obj/effect/spider/spiderling - var/swarmling_type = /mob/living/simple_animal/hostile/giant_spider/hunter + var/swarmling_type = /mob/living/simple_mob/hostile/giant_spider/hunter var/swarmling_faction = "spiders" -/mob/living/simple_animal/hostile/giant_spider/carrier/New() +/mob/living/simple_mob/hostile/giant_spider/carrier/New() spiderling_count = rand(5,10) adjust_scale(1.2) ..() -/mob/living/simple_animal/hostile/giant_spider/carrier/death() +/mob/living/simple_mob/hostile/giant_spider/carrier/death() visible_message("\The [src]'s abdomen splits as it rolls over, spiderlings crawling from the wound.") spawn(1) for(var/I = 1 to spiderling_count) if(prob(10) && src) var/mob/living/simple_animal/hostile/giant_spider/swarmling = new swarmling_type(src.loc) - var/swarm_health = Floor(swarmling.maxHealth * 0.4) - var/swarm_dam_lower = Floor(melee_damage_lower * 0.4) - var/swarm_dam_upper = Floor(melee_damage_upper * 0.4) + var/swarm_health = FLOOR(swarmling.maxHealth * 0.4, 1) + var/swarm_dam_lower = FLOOR(melee_damage_lower * 0.4, 1) + var/swarm_dam_upper = FLOOR(melee_damage_upper * 0.4, 1) swarmling.name = "spiderling" swarmling.maxHealth = swarm_health swarmling.health = swarm_health @@ -214,10 +214,10 @@ Nurse Family break return ..() -/mob/living/simple_animal/hostile/giant_spider/carrier/recursive +/mob/living/simple_mob/hostile/giant_spider/carrier/recursive desc = "Furry, beige, and red, it makes you shudder to look at it. This one has luminous green eyes. You have a distinctly bad feeling about this." - swarmling_type = /mob/living/simple_animal/hostile/giant_spider/carrier/recursive + swarmling_type = /mob/living/simple_mob/hostile/giant_spider/carrier/recursive /* Hunter Family @@ -225,7 +225,7 @@ Hunter Family //hunters have the most poison and move the fastest, so they can find prey -/mob/living/simple_animal/hostile/giant_spider/hunter +/mob/living/simple_mob/hostile/giant_spider/hunter desc = "Furry and black, it makes you shudder to look at it. This one has sparkling purple eyes." tt_desc = "X Brachypelma phorus venandi" icon_state = "hunter" @@ -238,7 +238,7 @@ Hunter Family poison_per_bite = 5 -/mob/living/simple_animal/hostile/giant_spider/lurker +/mob/living/simple_mob/hostile/giant_spider/lurker desc = "Translucent and white, it makes you shudder to look at it. This one has incandescent red eyes." tt_desc = "X Brachypelma phorus insidator" icon_state = "lurker" @@ -258,11 +258,11 @@ Hunter Family poison_type = "cryptobiolin" poison_per_bite = 2 -/mob/living/simple_animal/hostile/giant_spider/lurker/death() +/mob/living/simple_mob/hostile/giant_spider/lurker/death() alpha = 255 return ..() -/mob/living/simple_animal/hostile/giant_spider/tunneler +/mob/living/simple_mob/hostile/giant_spider/tunneler desc = "Sandy and brown, it makes you shudder to look at it. This one has glittering yellow eyes." tt_desc = "X Brachypelma phorus cannalis" icon_state = "tunneler" @@ -280,7 +280,7 @@ Hunter Family poison_per_bite = 3 poison_type = "serotrotium_v" -/mob/living/simple_animal/hostile/giant_spider/tunneler/death() +/mob/living/simple_mob/hostile/giant_spider/tunneler/death() spawn(1) for(var/I = 1 to rand(3,6)) if(src) @@ -293,7 +293,7 @@ Hunter Family Guard Family */ -/mob/living/simple_animal/hostile/giant_spider/pepper +/mob/living/simple_mob/hostile/giant_spider/pepper desc = "Red and brown, it makes you shudder to look at it. This one has glinting red eyes." tt_desc = "X Brachypelma phorus ignis" icon_state = "pepper" @@ -310,11 +310,11 @@ Guard Family poison_per_bite = 5 poison_type = "condensedcapsaicin_v" -/mob/living/simple_animal/hostile/giant_spider/pepper/New() +/mob/living/simple_mob/hostile/giant_spider/pepper/New() adjust_scale(1.1) ..() -/mob/living/simple_animal/hostile/giant_spider/thermic +/mob/living/simple_mob/hostile/giant_spider/thermic desc = "Mirage-cloaked and orange, it makes you shudder to look at it. This one has simmering orange eyes." tt_desc = "X Brachypelma phorus incaendium" icon_state = "pit" @@ -331,7 +331,7 @@ Guard Family poison_per_bite = 1 poison_type = "thermite_v" -/mob/living/simple_animal/hostile/giant_spider/electric +/mob/living/simple_mob/hostile/giant_spider/electric desc = "Spined and yellow, it makes you shudder to look at it. This one has flickering gold eyes." tt_desc = "X Brachypelma phorus aromatitis" icon_state = "spark" @@ -355,7 +355,7 @@ Guard Family poison_per_bite = 3 poison_type = "stimm" -/mob/living/simple_animal/hostile/giant_spider/phorogenic +/mob/living/simple_mob/hostile/giant_spider/phorogenic desc = "Crystalline and purple, it makes you shudder to look at it. This one has haunting purple eyes." tt_desc = "X Brachypelma phorus phorus" icon_state = "phoron" @@ -376,11 +376,11 @@ Guard Family var/exploded = 0 -/mob/living/simple_animal/hostile/giant_spider/phorogenic/New() +/mob/living/simple_mob/hostile/giant_spider/phorogenic/New() adjust_scale(1.25) return ..() -/mob/living/simple_animal/hostile/giant_spider/phorogenic/death() +/mob/living/simple_mob/hostile/giant_spider/phorogenic/death() visible_message("\The [src]'s body begins to rupture!") spawn(rand(1,5)) if(src && !exploded) @@ -389,7 +389,7 @@ Guard Family explosion(src.loc, 1, 2, 4, 6) return ..() -/mob/living/simple_animal/hostile/giant_spider/frost +/mob/living/simple_mob/hostile/giant_spider/frost desc = "Icy and blue, it makes you shudder to look at it. This one has brilliant blue eyes." tt_desc = "X Brachypelma phorus pruinae" icon_state = "frost" @@ -406,16 +406,16 @@ Guard Family Spider Procs */ -/mob/living/simple_animal/hostile/giant_spider/New(var/location, var/atom/parent) +/mob/living/simple_mob/hostile/giant_spider/New(var/location, var/atom/parent) get_light_and_color(parent) add_eyes() ..() -/mob/living/simple_animal/hostile/giant_spider/death() +/mob/living/simple_mob/hostile/giant_spider/death() remove_eyes() ..() -/mob/living/simple_animal/hostile/giant_spider/DoPunch(var/atom/A) +/mob/living/simple_mob/hostile/giant_spider/DoPunch(var/atom/A) . = ..() if(.) // If we succeeded in hitting. if(isliving(A)) @@ -428,7 +428,7 @@ Spider Procs to_chat(L, "You feel a tiny prick.") L.reagents.add_reagent(poison_type, poison_per_bite) -/mob/living/simple_animal/hostile/giant_spider/nurse/DoPunch(var/atom/A) +/mob/living/simple_mob/hostile/giant_spider/nurse/DoPunch(var/atom/A) . = ..() if(.) // If we succeeded in hitting. if(ishuman(A)) @@ -446,7 +446,7 @@ Spider Procs O.implants += eggs to_chat(H, "\The [src] injects something into your [O.name]!") -/mob/living/simple_animal/hostile/giant_spider/webslinger/DoPunch(var/atom/A) +/mob/living/simple_mob/hostile/giant_spider/webslinger/DoPunch(var/atom/A) . = ..() if(.) // If we succeeded in hitting. if(isliving(A)) @@ -456,7 +456,7 @@ Spider Procs visible_message("\The [src] throws a layer of web at \the [L]!") new /obj/effect/spider/stickyweb(L.loc) -/mob/living/simple_animal/hostile/giant_spider/handle_stance() +/mob/living/simple_mob/hostile/giant_spider/handle_stance() . = ..() if(ai_inactive) return @@ -473,7 +473,7 @@ Spider Procs stop_automated_movement = 0 walk(src,0) -/mob/living/simple_animal/hostile/giant_spider/nurse/proc/GiveUp(var/C) +/mob/living/simple_mob/hostile/giant_spider/nurse/proc/GiveUp(var/C) spawn(10 SECONDS) if(busy == MOVING_TO_TARGET) if(cocoon_target == C && get_dist(src,cocoon_target) > 1) @@ -481,7 +481,7 @@ Spider Procs busy = 0 stop_automated_movement = 0 -/mob/living/simple_animal/hostile/giant_spider/nurse/Life() +/mob/living/simple_mob/hostile/giant_spider/nurse/Life() . = ..() if(!. || ai_inactive) return @@ -554,7 +554,7 @@ Spider Procs C.pixel_x = cocoon_target.pixel_x C.pixel_y = cocoon_target.pixel_y for(var/mob/living/M in C.loc) - if(istype(M, /mob/living/simple_animal/hostile/giant_spider)) + if(istype(M, /mob/living/simple_mob/hostile/giant_spider)) continue large_cocoon = 1 fed++ diff --git a/code/modules/mob/living/simple_animal/animals/giant_spider_vr.dm b/code/modules/mob/living/simple_animal/animals/giant_spider_vr.dm index 50d653f63e..7497ae9e9c 100644 --- a/code/modules/mob/living/simple_animal/animals/giant_spider_vr.dm +++ b/code/modules/mob/living/simple_animal/animals/giant_spider_vr.dm @@ -1,5 +1,5 @@ // Slightly placeholder, mostly to replace ion hivebots on V4 -/mob/living/simple_animal/hostile/giant_spider/ion +/mob/living/simple_mob/hostile/giant_spider/ion desc = "Furry and green, it makes you shudder to look at it. This one has brilliant green eyes and a hint of static discharge." tt_desc = "X Brachypelma phorus ionus" icon_state = "webslinger" diff --git a/code/modules/mob/living/simple_animal/animals/goose.dm b/code/modules/mob/living/simple_animal/animals/goose.dm index f05baf7acf..72744ad882 100644 --- a/code/modules/mob/living/simple_animal/animals/goose.dm +++ b/code/modules/mob/living/simple_animal/animals/goose.dm @@ -1,4 +1,4 @@ -/mob/living/simple_animal/hostile/goose //hey are these even in the game +/mob/living/simple_mob/hostile/goose //hey are these even in the game name = "goose" desc = "It looks pretty angry!" tt_desc = "E Branta canadensis" //that iconstate is just a regular goose @@ -51,10 +51,10 @@ meat_type = /obj/item/weapon/reagent_containers/food/snacks/meat -/mob/living/simple_animal/hostile/goose/set_target() +/mob/living/simple_mob/hostile/goose/set_target() . = ..() if(.) custom_emote(1,"flaps and honks at [.]!") -/mob/living/simple_animal/hostile/goose/Process_Spacemove(var/check_drift = 0) +/mob/living/simple_mob/hostile/goose/Process_Spacemove(var/check_drift = 0) return 1 // VOREStation Edit No drifting in space! diff --git a/code/modules/mob/living/simple_animal/animals/lizard.dm b/code/modules/mob/living/simple_animal/animals/lizard.dm index 3cceeb4da4..d9a1b1b8d0 100644 --- a/code/modules/mob/living/simple_animal/animals/lizard.dm +++ b/code/modules/mob/living/simple_animal/animals/lizard.dm @@ -1,4 +1,4 @@ -/mob/living/simple_animal/lizard +/mob/living/simple_mob/lizard name = "Lizard" desc = "A cute tiny lizard." tt_desc = "E Anolis cuvieri" diff --git a/code/modules/mob/living/simple_animal/animals/miscellaneous.dm b/code/modules/mob/living/simple_animal/animals/miscellaneous.dm index 29bb7a3da3..306f6a3aad 100644 --- a/code/modules/mob/living/simple_animal/animals/miscellaneous.dm +++ b/code/modules/mob/living/simple_animal/animals/miscellaneous.dm @@ -1,4 +1,4 @@ -/mob/living/simple_animal/yithian +/mob/living/simple_mob/yithian name = "yithian" desc = "A friendly creature vaguely resembling an oversized snail without a shell." tt_desc = "J Escargot escargot" // a product of Jade, which is a planet that totally exists @@ -9,7 +9,7 @@ faction = "yithian" -/mob/living/simple_animal/tindalos +/mob/living/simple_mob/tindalos name = "tindalos" desc = "It looks like a large, flightless grasshopper." tt_desc = "J Locusta bruchus" diff --git a/code/modules/mob/living/simple_animal/animals/mouse.dm b/code/modules/mob/living/simple_animal/animals/mouse.dm index bf5d03c52c..d68d66b498 100644 --- a/code/modules/mob/living/simple_animal/animals/mouse.dm +++ b/code/modules/mob/living/simple_animal/animals/mouse.dm @@ -1,4 +1,4 @@ -/mob/living/simple_animal/mouse +/mob/living/simple_mob/mouse name = "mouse" real_name = "mouse" desc = "It's a small rodent." @@ -16,10 +16,10 @@ see_in_dark = 6 universal_understand = 1 - mob_size = MOB_MINISCULE + mob_size = MOB_SMALL pass_flags = PASSTABLE - can_pull_size = ITEMSIZE_TINY - can_pull_mobs = MOB_PULL_NONE +// can_pull_size = ITEMSIZE_TINY +// can_pull_mobs = MOB_PULL_NONE layer = MOB_LAYER density = 0 @@ -43,7 +43,7 @@ var/body_color //brown, gray and white, leave blank for random -/mob/living/simple_animal/mouse/Life() +/mob/living/simple_mob/mouse/Life() . = ..() if(!. || ai_inactive) return @@ -63,7 +63,7 @@ else if(prob(1)) audible_emote("snuffles.") -/mob/living/simple_animal/mouse/New() +/mob/living/simple_mob/mouse/New() ..() verbs += /mob/living/proc/ventcrawl @@ -82,7 +82,7 @@ icon_rest = "mouse_[body_color]_sleep" desc = "A small [body_color] rodent, often seen hiding in maintenance areas and making a nuisance of itself." -/mob/living/simple_animal/mouse/proc/splat() +/mob/living/simple_mob/mouse/proc/splat() src.health = 0 src.stat = DEAD src.icon_dead = "mouse_[body_color]_splat" @@ -92,7 +92,7 @@ client.time_died_as_mouse = world.time -/mob/living/simple_animal/mouse/Crossed(AM as mob|obj) +/mob/living/simple_mob/mouse/Crossed(AM as mob|obj) if( ishuman(AM) ) if(!stat) var/mob/M = AM @@ -100,7 +100,7 @@ M << 'sound/effects/mouse_squeak.ogg' ..() -/mob/living/simple_animal/mouse/death() +/mob/living/simple_mob/mouse/death() layer = MOB_LAYER playsound(src, 'sound/effects/mouse_squeak_loud.ogg', 35, 1) if(client) @@ -111,27 +111,27 @@ * Mouse types */ -/mob/living/simple_animal/mouse/white +/mob/living/simple_mob/mouse/white body_color = "white" icon_state = "mouse_white" -/mob/living/simple_animal/mouse/gray +/mob/living/simple_mob/mouse/gray body_color = "gray" icon_state = "mouse_gray" -/mob/living/simple_animal/mouse/brown +/mob/living/simple_mob/mouse/brown body_color = "brown" icon_state = "mouse_brown" //TOM IS ALIVE! SQUEEEEEEEE~K :) -/mob/living/simple_animal/mouse/brown/Tom +/mob/living/simple_mob/mouse/brown/Tom name = "Tom" desc = "Jerry the cat is not amused." -/mob/living/simple_animal/mouse/brown/Tom/New() +/mob/living/simple_mob/mouse/brown/Tom/New() ..() // Change my name back, don't want to be named Tom (666) name = initial(name) -/mob/living/simple_animal/mouse/cannot_use_vents() +/mob/living/simple_mob/mouse/cannot_use_vents() return diff --git a/code/modules/mob/living/simple_animal/animals/mouse_vr.dm b/code/modules/mob/living/simple_animal/animals/mouse_vr.dm index 396d43a68b..d3bdfbd1c6 100644 --- a/code/modules/mob/living/simple_animal/animals/mouse_vr.dm +++ b/code/modules/mob/living/simple_animal/animals/mouse_vr.dm @@ -1,8 +1,8 @@ -/mob/living/simple_animal/mouse +/mob/living/simple_mob/mouse no_vore = 1 //Mice can't eat others due to the amount of bugs caused by it. -/mob/living/simple_animal/mouse/attack_hand(mob/living/hander) +/mob/living/simple_mob/mouse/attack_hand(mob/living/hander) src.get_scooped(hander) //For one-click mouse scooping under any conditions. They knew what they were getting into! diff --git a/code/modules/mob/living/simple_animal/animals/parrot.dm b/code/modules/mob/living/simple_animal/animals/parrot.dm index 26b584196c..1c28622898 100644 --- a/code/modules/mob/living/simple_animal/animals/parrot.dm +++ b/code/modules/mob/living/simple_animal/animals/parrot.dm @@ -13,7 +13,7 @@ */ //Parrot is too snowflake for me to rewrite right now, someone should make it use the new -//simple_animal movement stuff. -Aro +//simple_mob movement stuff. -Aro //Only a maximum of one action and one intent should be active at any given time. //Actions @@ -28,7 +28,7 @@ #define PARROT_FLEE 64 //Flying away from its attacker -/mob/living/simple_animal/parrot +/mob/living/simple_mob/parrot name = "parrot" desc = "The parrot squawks, \"It's a parrot! BAWWK!\"" tt_desc = "E Ara macao" @@ -94,7 +94,7 @@ var/obj/item/held_item = null -/mob/living/simple_animal/parrot/New() +/mob/living/simple_mob/parrot/New() ..() if(!ears) var/headset = pick(/obj/item/device/radio/headset/headset_sec, \ @@ -106,27 +106,27 @@ parrot_sleep_dur = parrot_sleep_max //In case someone decides to change the max without changing the duration var - verbs.Add(/mob/living/simple_animal/parrot/proc/steal_from_ground, \ - /mob/living/simple_animal/parrot/proc/steal_from_mob, \ - /mob/living/simple_animal/parrot/verb/drop_held_item_player, \ - /mob/living/simple_animal/parrot/proc/perch_player) + verbs.Add(/mob/living/simple_mob/parrot/proc/steal_from_ground, \ + /mob/living/simple_mob/parrot/proc/steal_from_mob, \ + /mob/living/simple_mob/parrot/verb/drop_held_item_player, \ + /mob/living/simple_mob/parrot/proc/perch_player) -/mob/living/simple_animal/parrot/death() +/mob/living/simple_mob/parrot/death() if(held_item) held_item.forceMove(src.loc) held_item = null walk(src,0) ..() -/mob/living/simple_animal/parrot/Stat() +/mob/living/simple_mob/parrot/Stat() ..() stat("Held Item", held_item) /* * Inventory */ -/mob/living/simple_animal/parrot/show_inv(mob/user as mob) +/mob/living/simple_mob/parrot/show_inv(mob/user as mob) user.set_machine(src) if(user.stat) return @@ -140,7 +140,7 @@ onclose(user, "mob[real_name]") return -/mob/living/simple_animal/parrot/Topic(href, href_list) +/mob/living/simple_mob/parrot/Topic(href, href_list) //Can the usr physically do this? if(!usr.canmove || usr.stat || usr.restrained() || !in_range(loc, usr)) @@ -223,7 +223,7 @@ * Attack responces */ //Humans, monkeys, aliens -/mob/living/simple_animal/parrot/attack_hand(mob/living/carbon/M as mob) +/mob/living/simple_mob/parrot/attack_hand(mob/living/carbon/M as mob) ..() if(client) return if(!stat && M.a_intent == I_HURT) @@ -244,7 +244,7 @@ return //Mobs with objects -/mob/living/simple_animal/parrot/attackby(var/obj/item/O as obj, var/mob/user as mob) +/mob/living/simple_mob/parrot/attackby(var/obj/item/O as obj, var/mob/user as mob) ..() if(!stat && !client && !istype(O, /obj/item/stack/medical)) if(O.force) @@ -258,7 +258,7 @@ return //Bullets -/mob/living/simple_animal/parrot/bullet_act(var/obj/item/projectile/Proj) +/mob/living/simple_mob/parrot/bullet_act(var/obj/item/projectile/Proj) ..() if(!stat && !client) if(parrot_state == PARROT_PERCH) @@ -275,7 +275,7 @@ /* * AI - Not really intelligent, but I'm calling it AI anyway. */ -/mob/living/simple_animal/parrot/Life() +/mob/living/simple_mob/parrot/Life() ..() //Sprite and AI update for when a parrot gets pulled @@ -513,12 +513,12 @@ * Procs */ -/mob/living/simple_animal/parrot/movement_delay() +/mob/living/simple_mob/parrot/movement_delay() if(client && stat == CONSCIOUS && parrot_state != "parrot_fly") icon_state = "parrot_fly" ..() -/mob/living/simple_animal/parrot/proc/search_for_item() +/mob/living/simple_mob/parrot/proc/search_for_item() for(var/atom/movable/AM in view(src)) //Skip items we already stole or are wearing or are too big if(parrot_perch && AM.loc == parrot_perch.loc || AM.loc == src) @@ -535,7 +535,7 @@ return C return null -/mob/living/simple_animal/parrot/proc/search_for_perch() +/mob/living/simple_mob/parrot/proc/search_for_perch() for(var/obj/O in view(src)) for(var/path in desired_perches) if(istype(O, path)) @@ -543,7 +543,7 @@ return null //This proc was made to save on doing two 'in view' loops seperatly -/mob/living/simple_animal/parrot/proc/search_for_perch_and_item() +/mob/living/simple_mob/parrot/proc/search_for_perch_and_item() for(var/atom/movable/AM in view(src)) for(var/perch_path in desired_perches) if(istype(AM, perch_path)) @@ -568,7 +568,7 @@ /* * Verbs - These are actually procs, but can be used as verbs by player-controlled parrots. */ -/mob/living/simple_animal/parrot/proc/steal_from_ground() +/mob/living/simple_mob/parrot/proc/steal_from_ground() set name = "Steal from ground" set category = "Parrot" set desc = "Grabs a nearby item." @@ -596,7 +596,7 @@ to_chat(src, "There is nothing of interest to take.") return 0 -/mob/living/simple_animal/parrot/proc/steal_from_mob() +/mob/living/simple_mob/parrot/proc/steal_from_mob() set name = "Steal from mob" set category = "Parrot" set desc = "Steals an item right out of a person's hand!" @@ -627,7 +627,7 @@ to_chat(src, "There is nothing of interest to take.") return 0 -/mob/living/simple_animal/parrot/verb/drop_held_item_player() +/mob/living/simple_mob/parrot/verb/drop_held_item_player() set name = "Drop held item" set category = "Parrot" set desc = "Drop the item you're holding." @@ -639,7 +639,7 @@ return -/mob/living/simple_animal/parrot/proc/drop_held_item(var/drop_gently = 1) +/mob/living/simple_mob/parrot/proc/drop_held_item(var/drop_gently = 1) set name = "Drop held item" set category = "Parrot" set desc = "Drop the item you're holding." @@ -666,7 +666,7 @@ held_item = null return 1 -/mob/living/simple_animal/parrot/proc/perch_player() +/mob/living/simple_mob/parrot/proc/perch_player() set name = "Sit" set category = "Parrot" set desc = "Sit on a nice comfy perch." @@ -687,17 +687,17 @@ /* * Sub-types */ -/mob/living/simple_animal/parrot/Poly +/mob/living/simple_mob/parrot/Poly name = "Poly" desc = "Poly the Parrot. An expert on quantum cracker theory." speak = list("Poly wanna cracker!", ":e Check the singlo, you chucklefucks!",":e Wire the solars, you lazy bums!",":e WHO TOOK THE DAMN HARDSUITS?",":e OH GOD ITS FREE CALL THE SHUTTLE") -/mob/living/simple_animal/parrot/Poly/New() +/mob/living/simple_mob/parrot/Poly/New() ears = new /obj/item/device/radio/headset/headset_eng(src) available_channels = list(":e") ..() -/mob/living/simple_animal/parrot/say(var/message) +/mob/living/simple_mob/parrot/say(var/message) if(stat) return @@ -731,25 +731,25 @@ ..(message) -/mob/living/simple_animal/parrot/hear_say(var/message, var/verb = "says", var/datum/language/language = null, var/alt_name = "",var/italics = 0, var/mob/speaker = null) +/mob/living/simple_mob/parrot/hear_say(var/message, var/verb = "says", var/datum/language/language = null, var/alt_name = "",var/italics = 0, var/mob/speaker = null) if(prob(50)) parrot_hear(message) ..(message,verb,language,alt_name,italics,speaker) -/mob/living/simple_animal/parrot/hear_radio(var/message, var/verb="says", var/datum/language/language=null, var/part_a, var/part_b, var/part_c, var/mob/speaker = null, var/hard_to_hear = 0) +/mob/living/simple_mob/parrot/hear_radio(var/message, var/verb="says", var/datum/language/language=null, var/part_a, var/part_b, var/part_c, var/mob/speaker = null, var/hard_to_hear = 0) if(prob(50)) parrot_hear("[pick(available_channels)] [message]") ..(message,verb,language,part_a,part_b,speaker,hard_to_hear) -/mob/living/simple_animal/parrot/proc/parrot_hear(var/message="") +/mob/living/simple_mob/parrot/proc/parrot_hear(var/message="") if(!message || stat) return speech_buffer.Add(message) -/mob/living/simple_animal/parrot/attack_generic(var/mob/user, var/damage, var/attack_message) +/mob/living/simple_mob/parrot/attack_generic(var/mob/user, var/damage, var/attack_message) var/success = ..() diff --git a/code/modules/mob/living/simple_animal/animals/penguin.dm b/code/modules/mob/living/simple_animal/animals/penguin.dm index da7c9c4328..105d6e7c21 100644 --- a/code/modules/mob/living/simple_animal/animals/penguin.dm +++ b/code/modules/mob/living/simple_animal/animals/penguin.dm @@ -1,4 +1,4 @@ -/mob/living/simple_animal/penguin +/mob/living/simple_mob/penguin name = "space penguin" desc = "An ungainly, waddling, cute, and VERY well-dressed bird." tt_desc = "E Aptenodytes forsteri" diff --git a/code/modules/mob/living/simple_animal/animals/pike_vr.dm b/code/modules/mob/living/simple_animal/animals/pike_vr.dm index e820d672b8..b04b83c14f 100644 --- a/code/modules/mob/living/simple_animal/animals/pike_vr.dm +++ b/code/modules/mob/living/simple_animal/animals/pike_vr.dm @@ -1,4 +1,4 @@ -/mob/living/simple_animal/hostile/carp/pike +/mob/living/simple_mob/hostile/carp/pike name = "space pike" desc = "A bigger, angrier cousin of the space carp." icon = 'icons/mob/spaceshark.dmi' @@ -25,10 +25,10 @@ vore_icons = 0 //No custom icons yet -/mob/living/simple_animal/hostile/carp/pike/weak +/mob/living/simple_mob/hostile/carp/pike/weak maxHealth = 75 health = 75 -/mob/living/simple_animal/hostile/carp/strong +/mob/living/simple_mob/hostile/carp/strong maxHealth = 50 health = 50 diff --git a/code/modules/mob/living/simple_animal/animals/sif_wildlife/diyaab.dm b/code/modules/mob/living/simple_animal/animals/sif_wildlife/diyaab.dm deleted file mode 100644 index 86b2a261e7..0000000000 --- a/code/modules/mob/living/simple_animal/animals/sif_wildlife/diyaab.dm +++ /dev/null @@ -1,29 +0,0 @@ -/mob/living/simple_animal/retaliate/diyaab - name = "diyaab" - desc = "A small pack animal. Although omnivorous, it will hunt meat on occasion." - tt_desc = "S Choeros hirtus" //diyaab and shantak are technically reletives! - faction = "diyaab" - icon_state = "diyaab" - icon_living = "diyaab" - icon_dead = "diyaab_dead" - icon = 'icons/jungle.dmi' - - faction = "diyaab" - cooperative = 1 - - maxHealth = 25 - health = 25 - speed = 1 - move_to_delay = 1 - - melee_damage_lower = 4 - melee_damage_upper = 12 - attack_sharp = 1 //Bleeds, but it shouldn't rip off a limb? - - attacktext = list("gouged") - cold_damage_per_tick = 0 - - speak_chance = 5 - speak = list("Awrr?","Aowrl!","Worrl") - emote_see = list("sniffs the air cautiously","looks around") - emote_hear = list("snuffles") \ No newline at end of file diff --git a/code/modules/mob/living/simple_animal/animals/sif_wildlife/savik.dm b/code/modules/mob/living/simple_animal/animals/sif_wildlife/savik.dm deleted file mode 100644 index b451901b60..0000000000 --- a/code/modules/mob/living/simple_animal/animals/sif_wildlife/savik.dm +++ /dev/null @@ -1,36 +0,0 @@ -/mob/living/simple_animal/hostile/savik - name = "savik" - desc = "A fast, armoured predator accustomed to hiding and ambushing in cold terrain." - tt_desc = "S Pistris tellus" //landshark - faction = "savik" - icon_state = "savik" - icon_living = "savik" - icon_dead = "savik_dead" - icon = 'icons/jungle.dmi' - - faction = "savik" - - maxHealth = 125 - health = 125 - speed = 2 - move_to_delay = 2 - - melee_damage_lower = 15 - melee_damage_upper = 35 - attack_armor_pen = 15 - attack_sharp = 1 - attack_edge = 1 - - attacktext = list("mauled") - cold_damage_per_tick = 0 - - speak_chance = 5 - speak = list("Hruuugh!","Hrunnph") - emote_see = list("paws the ground","shakes its mane","stomps") - emote_hear = list("snuffles") - -/mob/living/simple_animal/hostile/savik/handle_stance(var/new_stance) - ..(new_stance) - if(stance == STANCE_ATTACK || stance == STANCE_ATTACKING) - if((health / maxHealth) <= 0.5) // At half health, and fighting someone currently. - add_modifier(/datum/modifier/berserk, 30 SECONDS) \ No newline at end of file diff --git a/code/modules/mob/living/simple_animal/animals/sif_wildlife/shantak.dm b/code/modules/mob/living/simple_animal/animals/sif_wildlife/shantak.dm deleted file mode 100644 index 999916bbe6..0000000000 --- a/code/modules/mob/living/simple_animal/animals/sif_wildlife/shantak.dm +++ /dev/null @@ -1,29 +0,0 @@ -/mob/living/simple_animal/hostile/shantak - name = "shantak" - desc = "A piglike creature with a bright iridiscent mane that sparkles as though lit by an inner light. Don't be fooled by its beauty though." - tt_desc = "S Choeros shantak" - faction = "shantak" - icon_state = "shantak" - icon_living = "shantak" - icon_dead = "shantak_dead" - icon = 'icons/jungle.dmi' - - faction = "shantak" - - maxHealth = 75 - health = 75 - speed = 1 - move_to_delay = 1 - - melee_damage_lower = 12 - melee_damage_upper = 28 - attack_armor_pen = 5 - attack_sharp = 1 - attack_edge = 1 - - attacktext = list("gouged") - cold_damage_per_tick = 0 - - speak_chance = 5 - speak = list("Shuhn","Shrunnph?","Shunpf") - emote_see = list("scratches the ground","shakes out its mane","clinks gently as it moves") \ No newline at end of file diff --git a/code/modules/mob/living/simple_animal/animals/slime.dm b/code/modules/mob/living/simple_animal/animals/slime.dm index 8c6ef9cf82..7db2392808 100644 --- a/code/modules/mob/living/simple_animal/animals/slime.dm +++ b/code/modules/mob/living/simple_animal/animals/slime.dm @@ -1,4 +1,4 @@ -/mob/living/simple_animal/old_slime +/mob/living/simple_mob/old_slime name = "pet slime" desc = "A lovable, domesticated slime." tt_desc = "Amorphidae proteus" @@ -20,19 +20,19 @@ var/colour = "grey" -/mob/living/simple_animal/old_slime/science +/mob/living/simple_mob/old_slime/science name = "Kendrick" colour = "rainbow" icon_state = "rainbow baby slime" icon_living = "rainbow baby slime" icon_dead = "rainbow baby slime dead" -/mob/living/simple_animal/old_slime/science/initialize() +/mob/living/simple_animal/slime/science/Initialize() . = ..() overlays.Cut() overlays += "aslime-:33" -/mob/living/simple_animal/adultslime +/mob/living/simple_mob/adultslime name = "pet slime" desc = "A lovable, domesticated slime." icon = 'icons/mob/slimes.dmi' @@ -52,17 +52,17 @@ var/colour = "grey" -/mob/living/simple_animal/adultslime/New() +/mob/living/simple_mob/adultslime/New() ..() overlays += "aslime-:33" -/mob/living/simple_animal/adultslime/death() - var/mob/living/simple_animal/old_slime/S1 = new /mob/living/simple_animal/old_slime (src.loc) +/mob/living/simple_mob/adultslime/death() + var/mob/living/simple_mob/old_slime/S1 = new /mob/living/simple_mob/old_slime (src.loc) S1.icon_state = "[src.colour] baby slime" S1.icon_living = "[src.colour] baby slime" S1.icon_dead = "[src.colour] baby slime dead" S1.colour = "[src.colour]" - var/mob/living/simple_animal/old_slime/S2 = new /mob/living/simple_animal/old_slime (src.loc) + var/mob/living/simple_mob/old_slime/S2 = new /mob/living/simple_mob/old_slime (src.loc) S2.icon_state = "[src.colour] baby slime" S2.icon_living = "[src.colour] baby slime" S2.icon_dead = "[src.colour] baby slime dead" diff --git a/code/modules/mob/living/simple_animal/animals/snake_vr.dm b/code/modules/mob/living/simple_animal/animals/snake_vr.dm index 041cd38d15..b6f6618184 100644 --- a/code/modules/mob/living/simple_animal/animals/snake_vr.dm +++ b/code/modules/mob/living/simple_animal/animals/snake_vr.dm @@ -1,4 +1,4 @@ -/mob/living/simple_animal/snake +/mob/living/simple_mob/snake name = "snake" desc = "A big thick snake." icon = 'icons/mob/snake_vr.dmi' @@ -23,13 +23,13 @@ speak_emote = list("hisses") //NOODLE IS HERE! SQUEEEEEEEE~ -/mob/living/simple_animal/snake/Noodle +/mob/living/simple_mob/snake/Noodle name = "Noodle" desc = "This snake is particularly chubby and demands nothing but the finest of treats." var/turns_since_scan = 0 var/obj/movement_target -/mob/living/simple_animal/snake/Noodle/Life() //stolen from Ian in corgi.dm +/mob/living/simple_mob/snake/Noodle/Life() //stolen from Ian in corgi.dm if(!..()) return 0 @@ -61,7 +61,7 @@ else if(ishuman(movement_target.loc) && prob(20)) visible_emote("stares at the [movement_target] that [movement_target.loc] has with an unknowable reptilian gaze.") -/mob/living/simple_animal/snake/Noodle/attackby(var/obj/item/O, var/mob/user) +/mob/living/simple_mob/snake/Noodle/attackby(var/obj/item/O, var/mob/user) if(istype(O, /obj/item/weapon/reagent_containers/food/snacks/snakesnack)) visible_message("[user] feeds \the [O] to [src].") qdel(O) diff --git a/code/modules/mob/living/simple_animal/animals/spiderbot.dm b/code/modules/mob/living/simple_animal/animals/spiderbot.dm index b76351b976..7e1cac8c80 100644 --- a/code/modules/mob/living/simple_animal/animals/spiderbot.dm +++ b/code/modules/mob/living/simple_animal/animals/spiderbot.dm @@ -1,4 +1,4 @@ -/mob/living/simple_animal/spiderbot +/mob/living/simple_mob/spiderbot name = "spider-bot" desc = "A skittering robotic friend!" tt_desc = "Maintenance Robot" @@ -46,21 +46,21 @@ /obj/item/device/radio/borg, /obj/item/weapon/holder, /obj/machinery/camera, - /mob/living/simple_animal/borer, + /mob/living/simple_mob/animal/borer, /obj/item/device/mmi, ) var/emagged = 0 var/obj/item/held_item = null //Storage for single item they can hold. -/mob/living/simple_animal/spiderbot/New() +/mob/living/simple_mob/spiderbot/New() ..() add_language(LANGUAGE_GALCOM) default_language = all_languages[LANGUAGE_GALCOM] verbs |= /mob/living/proc/ventcrawl verbs |= /mob/living/proc/hide -/mob/living/simple_animal/spiderbot/attackby(var/obj/item/O as obj, var/mob/user as mob) +/mob/living/simple_mob/spiderbot/attackby(var/obj/item/O as obj, var/mob/user as mob) if(istype(O, /obj/item/device/mmi)) var/obj/item/device/mmi/B = O @@ -144,7 +144,7 @@ else O.attack(src, user, user.zone_sel.selecting) -/mob/living/simple_animal/spiderbot/emag_act(var/remaining_charges, var/mob/user) +/mob/living/simple_mob/spiderbot/emag_act(var/remaining_charges, var/mob/user) if (emagged) user << "[src] is already overloaded - better run." return 0 @@ -154,7 +154,7 @@ spawn(200) src << "Internal heat sensors are spiking! Something is badly wrong with your cell!" spawn(300) src.explode() -/mob/living/simple_animal/spiderbot/proc/transfer_personality(var/obj/item/device/mmi/M as obj) +/mob/living/simple_mob/spiderbot/proc/transfer_personality(var/obj/item/device/mmi/M as obj) src.mind = M.brainmob.mind src.mind.key = M.brainmob.key @@ -162,13 +162,13 @@ src.name = "spider-bot ([M.brainmob.name])" src.languages = M.brainmob.languages -/mob/living/simple_animal/spiderbot/proc/explode() //When emagged. +/mob/living/simple_mob/spiderbot/proc/explode() //When emagged. src.visible_message("\The [src] makes an odd warbling noise, fizzles, and explodes!") explosion(get_turf(loc), -1, -1, 3, 5) eject_brain() death() -/mob/living/simple_animal/spiderbot/update_icon() +/mob/living/simple_mob/spiderbot/update_icon() if(mmi) if(positronic) icon_state = "spiderbot-chassis-posi" @@ -180,7 +180,7 @@ icon_state = "spiderbot-chassis" icon_living = "spiderbot-chassis" -/mob/living/simple_animal/spiderbot/proc/eject_brain() +/mob/living/simple_mob/spiderbot/proc/eject_brain() if(mmi) var/turf/T = get_turf(loc) if(T) @@ -193,11 +193,11 @@ remove_language("Robot Talk") positronic = null -/mob/living/simple_animal/spiderbot/Destroy() +/mob/living/simple_mob/spiderbot/Destroy() eject_brain() ..() -/mob/living/simple_animal/spiderbot/New() +/mob/living/simple_mob/spiderbot/New() radio = new /obj/item/device/radio/borg(src) camera = new /obj/machinery/camera(src) @@ -206,7 +206,7 @@ ..() -/mob/living/simple_animal/spiderbot/death() +/mob/living/simple_mob/spiderbot/death() living_mob_list -= src dead_mob_list += src @@ -222,7 +222,7 @@ return //Cannibalized from the parrot mob. ~Zuhayr -/mob/living/simple_animal/spiderbot/verb/drop_held_item() +/mob/living/simple_mob/spiderbot/verb/drop_held_item() set name = "Drop held item" set category = "Spiderbot" set desc = "Drop the item you're holding." @@ -254,7 +254,7 @@ return -/mob/living/simple_animal/spiderbot/verb/get_item() +/mob/living/simple_mob/spiderbot/verb/get_item() set name = "Pick up item" set category = "Spiderbot" set desc = "Allows you to take a nearby small item." @@ -288,13 +288,13 @@ src << "There is nothing of interest to take." return 0 -/mob/living/simple_animal/spiderbot/examine(mob/user) +/mob/living/simple_mob/spiderbot/examine(mob/user) ..(user) if(src.held_item) user << "It is carrying \icon[src.held_item] \a [src.held_item]." -/mob/living/simple_animal/spiderbot/cannot_use_vents() +/mob/living/simple_mob/spiderbot/cannot_use_vents() return -/mob/living/simple_animal/spiderbot/binarycheck() +/mob/living/simple_mob/spiderbot/binarycheck() return positronic diff --git a/code/modules/mob/living/simple_animal/animals/tomato.dm b/code/modules/mob/living/simple_animal/animals/tomato.dm index 711922eeb0..175875c4d2 100644 --- a/code/modules/mob/living/simple_animal/animals/tomato.dm +++ b/code/modules/mob/living/simple_animal/animals/tomato.dm @@ -1,4 +1,4 @@ -/mob/living/simple_animal/hostile/tomato +/mob/living/simple_mob/hostile/tomato name = "tomato" desc = "It's a horrifyingly enormous beef tomato, and it's packing extra beef!" tt_desc = "X Solanum abominable" diff --git a/code/modules/mob/living/simple_animal/animals/tree.dm b/code/modules/mob/living/simple_animal/animals/tree.dm index 09c8451811..79e24c09f3 100644 --- a/code/modules/mob/living/simple_animal/animals/tree.dm +++ b/code/modules/mob/living/simple_animal/animals/tree.dm @@ -1,4 +1,4 @@ -/mob/living/simple_animal/hostile/tree +/mob/living/simple_mob/hostile/tree name = "pine tree" desc = "A pissed off tree-like alien. It seems annoyed with the festivities..." tt_desc = "X Festivus tyrannus" @@ -40,12 +40,12 @@ pixel_x = -16 -/mob/living/simple_animal/hostile/tree/FindTarget() +/mob/living/simple_mob/hostile/tree/FindTarget() . = ..() if(.) audible_emote("growls at [.]") -/mob/living/simple_animal/hostile/tree/PunchTarget() +/mob/living/simple_mob/hostile/tree/PunchTarget() . =..() var/mob/living/L = . if(istype(L)) @@ -53,7 +53,7 @@ L.Weaken(3) L.visible_message("\the [src] knocks down \the [L]!") -/mob/living/simple_animal/hostile/tree/death() +/mob/living/simple_mob/hostile/tree/death() ..(null,"is hacked into pieces!") playsound(loc, 'sound/effects/woodcutting.ogg', 100, 1) new /obj/item/stack/material/wood(loc) diff --git a/code/modules/mob/living/simple_animal/animals/worm.dm b/code/modules/mob/living/simple_animal/animals/worm.dm index da30dbf8fd..4b82fdee74 100644 --- a/code/modules/mob/living/simple_animal/animals/worm.dm +++ b/code/modules/mob/living/simple_animal/animals/worm.dm @@ -1,4 +1,4 @@ -/mob/living/simple_animal/space_worm +/mob/living/simple_mob/space_worm name = "space worm segment" desc = "A part of a space worm." icon = 'icons/mob/animal.dmi' @@ -35,8 +35,8 @@ speak_emote = list("transmits") //not supposed to be used under AI control emote_hear = list("transmits") //I'm just adding it so it doesn't runtime if controlled by player who speaks - var/mob/living/simple_animal/space_worm/previous //next/previous segments, correspondingly - var/mob/living/simple_animal/space_worm/next //head is the nextest segment + var/mob/living/simple_mob/space_worm/previous //next/previous segments, correspondingly + var/mob/living/simple_mob/space_worm/next //head is the nextest segment var/stomachProcessProbability = 50 var/digestionProbability = 20 @@ -63,10 +63,10 @@ New(var/location, var/segments = 6) ..() - var/mob/living/simple_animal/space_worm/current = src + var/mob/living/simple_mob/space_worm/current = src for(var/i = 1 to segments) - var/mob/living/simple_animal/space_worm/newSegment = new /mob/living/simple_animal/space_worm(loc) + var/mob/living/simple_mob/space_worm/newSegment = new /mob/living/simple_mob/space_worm(loc) current.Attach(newSegment) current = newSegment @@ -148,7 +148,7 @@ return 0 - proc/Attach(var/mob/living/simple_animal/space_worm/attachement) + proc/Attach(var/mob/living/simple_mob/space_worm/attachement) if(!attachement) return @@ -158,8 +158,8 @@ return proc/Detach(die = 0) - var/mob/living/simple_animal/space_worm/newHead = new /mob/living/simple_animal/space_worm/head(loc,0) - var/mob/living/simple_animal/space_worm/newHeadPrevious = previous + var/mob/living/simple_mob/space_worm/newHead = new /mob/living/simple_mob/space_worm/head(loc,0) + var/mob/living/simple_mob/space_worm/newHeadPrevious = previous previous = null //so that no extra heads are spawned diff --git a/code/modules/mob/living/simple_animal/borer/borer.dm b/code/modules/mob/living/simple_animal/borer/borer.dm deleted file mode 100644 index e4add4d749..0000000000 --- a/code/modules/mob/living/simple_animal/borer/borer.dm +++ /dev/null @@ -1,213 +0,0 @@ -/mob/living/simple_animal/borer - name = "cortical borer" - real_name = "cortical borer" - desc = "A small, quivering sluglike creature." - speak_emote = list("chirrups") - emote_hear = list("chirrups") - intelligence_level = SA_HUMANOID // Player controlled. - response_help = "pokes" - response_disarm = "prods" - response_harm = "stomps on" - icon_state = "brainslug" - item_state = "brainslug" - icon_living = "brainslug" - icon_dead = "brainslug_dead" - speed = 5 - a_intent = I_HURT - stop_automated_movement = 1 - status_flags = CANPUSH - attacktext = list("nipped") - friendly = "prods" - wander = 0 - pass_flags = PASSTABLE - universal_understand = 1 - holder_type = /obj/item/weapon/holder/borer - - var/used_dominate - var/chemicals = 10 // Chemicals used for reproduction and spitting neurotoxin. - var/mob/living/carbon/human/host // Human host for the brain worm. - var/truename // Name used for brainworm-speak. - var/mob/living/captive_brain/host_brain // Used for swapping control of the body back and forth. - var/controlling // Used in human death check. - var/docile = 0 // Sugar can stop borers from acting. - var/has_reproduced - var/roundstart - - can_be_antagged = TRUE - -/mob/living/simple_animal/borer/roundstart - roundstart = 1 - -/mob/living/simple_animal/borer/Login() - ..() - if(mind) - borers.add_antagonist(mind) - -/mob/living/simple_animal/borer/New() - ..() - - add_language("Cortical Link") - verbs += /mob/living/proc/ventcrawl - verbs += /mob/living/proc/hide - - truename = "[pick("Primary","Secondary","Tertiary","Quaternary")] [rand(1000,9999)]" - if(!roundstart) request_player() - -/mob/living/simple_animal/borer/Life() - - ..() - - if(host) - - if(!stat && !host.stat) - - if(host.reagents.has_reagent("sugar")) - if(!docile) - if(controlling) - host << "You feel the soporific flow of sugar in your host's blood, lulling you into docility." - else - src << "You feel the soporific flow of sugar in your host's blood, lulling you into docility." - docile = 1 - else - if(docile) - if(controlling) - host << "You shake off your lethargy as the sugar leaves your host's blood." - else - src << "You shake off your lethargy as the sugar leaves your host's blood." - docile = 0 - - if(chemicals < 250) - chemicals++ - if(controlling) - - if(docile) - host << "You are feeling far too docile to continue controlling your host..." - host.release_control() - return - - if(prob(5)) - host.adjustBrainLoss(0.1) - - if(prob(host.brainloss/20)) - host.say("*[pick(list("blink","blink_r","choke","aflap","drool","twitch","twitch_v","gasp"))]") - -/mob/living/simple_animal/borer/Stat() - ..() - statpanel("Status") - - if(emergency_shuttle) - var/eta_status = emergency_shuttle.get_status_panel_eta() - if(eta_status) - stat(null, eta_status) - - if (client.statpanel == "Status") - stat("Chemicals", chemicals) - -/mob/living/simple_animal/borer/proc/detatch() - - if(!host || !controlling) return - - if(istype(host,/mob/living/carbon/human)) - var/mob/living/carbon/human/H = host - var/obj/item/organ/external/head = H.get_organ(BP_HEAD) - head.implants -= src - - controlling = 0 - - host.remove_language("Cortical Link") - host.verbs -= /mob/living/carbon/proc/release_control - host.verbs -= /mob/living/carbon/proc/punish_host - host.verbs -= /mob/living/carbon/proc/spawn_larvae - - if(host_brain) - - // these are here so bans and multikey warnings are not triggered on the wrong people when ckey is changed. - // computer_id and IP are not updated magically on their own in offline mobs -walter0o - - // host -> self - var/h2s_id = host.computer_id - var/h2s_ip= host.lastKnownIP - host.computer_id = null - host.lastKnownIP = null - - src.ckey = host.ckey - - if(!src.computer_id) - src.computer_id = h2s_id - - if(!host_brain.lastKnownIP) - src.lastKnownIP = h2s_ip - - // brain -> host - var/b2h_id = host_brain.computer_id - var/b2h_ip= host_brain.lastKnownIP - host_brain.computer_id = null - host_brain.lastKnownIP = null - - host.ckey = host_brain.ckey - - if(!host.computer_id) - host.computer_id = b2h_id - - if(!host.lastKnownIP) - host.lastKnownIP = b2h_ip - - qdel(host_brain) - -/mob/living/simple_animal/borer/proc/leave_host() - - if(!host) return - - if(host.mind) - borers.remove_antagonist(host.mind) - - src.forceMove(get_turf(host)) - - reset_view(null) - machine = null - - host.reset_view(null) - host.machine = null - host = null - return - -//Procs for grabbing players. -/mob/living/simple_animal/borer/proc/request_player() - for(var/mob/observer/dead/O in player_list) - if(jobban_isbanned(O, "Borer")) - continue - if(O.client) - if(O.client.prefs.be_special & BE_ALIEN) - question(O.client) - -/mob/living/simple_animal/borer/proc/question(var/client/C) - spawn(0) - if(!C) return - var/response = alert(C, "A cortical borer needs a player. Are you interested?", "Cortical borer request", "Yes", "No", "Never for this round") - if(!C || ckey) - return - if(response == "Yes") - transfer_personality(C) - else if (response == "Never for this round") - C.prefs.be_special ^= BE_ALIEN - -/mob/living/simple_animal/borer/proc/transfer_personality(var/client/candidate) - - if(!candidate || !candidate.mob || !candidate.mob.mind) - return - - src.mind = candidate.mob.mind - candidate.mob.mind.current = src - src.ckey = candidate.ckey - - if(src.mind) - src.mind.assigned_role = "Cortical Borer" - src.mind.special_role = "Cortical Borer" - - src << "You are a cortical borer! You are a brain slug that worms its way \ - into the head of its victim. Use stealth, persuasion and your powers of mind control to keep you, \ - your host and your eventual spawn safe and warm." - src << "You can speak to your victim with say, to other borers with say :x, and use your Abilities tab to access powers." - -/mob/living/simple_animal/borer/cannot_use_vents() - return \ No newline at end of file diff --git a/code/modules/mob/living/simple_animal/borer/say.dm b/code/modules/mob/living/simple_animal/borer/say.dm deleted file mode 100644 index 440dfa7ff7..0000000000 --- a/code/modules/mob/living/simple_animal/borer/say.dm +++ /dev/null @@ -1,40 +0,0 @@ -/mob/living/simple_animal/borer/say(var/message) - - message = sanitize(message) - message = capitalize(message) - - if(!message) - return - - if (stat == 2) - return say_dead(message) - - if (stat) - return - - if (src.client) - if(client.prefs.muted & MUTE_IC) - src << "You cannot speak in IC (muted)." - return - - if (copytext(message, 1, 2) == "*") - return emote(copytext(message, 2)) - - var/datum/language/L = parse_language(message) - if(L && L.flags & HIVEMIND) - L.broadcast(src,trim(copytext(message,3)),src.truename) - return - - if(!host) - //TODO: have this pick a random mob within 3 tiles to speak for the borer. - src << "You have no host to speak to." - return //No host, no audible speech. - - src << "You drop words into [host]'s mind: \"[message]\"" - host << "Your own thoughts speak: \"[message]\"" - - for (var/mob/M in player_list) - if (istype(M, /mob/new_player)) - continue - else if(M.stat == DEAD && M.is_preference_enabled(/datum/client_preference/ghost_ears)) - M << "[src.truename] whispers to [host], \"[message]\"" \ No newline at end of file diff --git a/code/modules/mob/living/simple_animal/constructs/constructs.dm b/code/modules/mob/living/simple_animal/constructs/constructs.dm deleted file mode 100644 index 26ab3a1260..0000000000 --- a/code/modules/mob/living/simple_animal/constructs/constructs.dm +++ /dev/null @@ -1,488 +0,0 @@ -/mob/living/simple_animal/construct - name = "Construct" - real_name = "Construct" - var/construct_type = "shade" - desc = "" - speak_emote = list("hisses") - emote_hear = list("wails","screeches") - - ui_icons = 'icons/mob/screen1_construct.dmi' - has_hands = 1 - hand_form = "stone manipulators" - - response_help = "thinks better of touching" - response_disarm = "flailed at" - response_harm = "punched" - - intelligence_level = SA_HUMANOID // Player controlled. - - hovering = TRUE - softfall = TRUE //Beings made of Hellmarble and powered by the tears of the damned are not concerned with mortal things such as 'gravity'. - parachuting = TRUE - - icon_dead = "shade_dead" - var/do_glow = 1 - - speed = -1 - a_intent = I_HURT - stop_automated_movement = 1 - - status_flags = CANPUSH - - universal_speak = 0 - universal_understand = 1 - - attack_sound = 'sound/weapons/spiderlunge.ogg' - - min_oxy = 0 - max_oxy = 0 - min_tox = 0 - max_tox = 0 - min_co2 = 0 - max_co2 = 0 - min_n2 = 0 - max_n2 = 0 - - minbodytemp = 0 - show_stat_health = 1 - - faction = "cult" - supernatural = 1 - - see_invisible = SEE_INVISIBLE_NOLIGHTING - see_in_dark = 7 - - var/nullblock = 0 - - mob_swap_flags = HUMAN|SIMPLE_ANIMAL|SLIME|MONKEY - mob_push_flags = ALLMOBS - - var/list/construct_spells = list() - - can_be_antagged = TRUE - - taser_kill = 0 // no - - shock_resistance = 0.9 //Electricity isn't very effective on stone, especially that from hell. - - armor = list( - "melee" = 10, - "bullet" = 10, - "laser" = 10, - "energy" = 10, - "bomb" = 10, - "bio" = 100, - "rad" = 100) - -/mob/living/simple_animal/construct/place_spell_in_hand(var/path) - if(!path || !ispath(path)) - return 0 - - //var/obj/item/weapon/spell/S = new path(src) - var/obj/item/weapon/spell/construct/S = new path(src) - - //No hands needed for innate casts. - if(S.cast_methods & CAST_INNATE) - if(S.run_checks()) - S.on_innate_cast(src) - - if(l_hand && r_hand) //Make sure our hands aren't full. - if(istype(r_hand, /obj/item/weapon/spell)) //If they are full, perhaps we can still be useful. - var/obj/item/weapon/spell/r_spell = r_hand - if(r_spell.aspect == ASPECT_CHROMATIC) //Check if we can combine the new spell with one in our hands. - r_spell.on_combine_cast(S, src) - else if(istype(l_hand, /obj/item/weapon/spell)) - var/obj/item/weapon/spell/l_spell = l_hand - if(l_spell.aspect == ASPECT_CHROMATIC) //Check the other hand too. - l_spell.on_combine_cast(S, src) - else //Welp - to_chat(src, "You require a free manipulator to use this power.") - return 0 - - if(S.run_checks()) - put_in_hands(S) - return 1 - else - qdel(S) - return 0 - -/mob/living/simple_animal/construct/cultify() - return - -/mob/living/simple_animal/construct/New() - ..() - name = text("[initial(name)] ([rand(1, 1000)])") - real_name = name - add_language("Cult") - add_language("Occult") - for(var/spell in construct_spells) - src.add_spell(new spell, "const_spell_ready") - updateicon() - -/mob/living/simple_animal/construct/updateicon() - overlays.Cut() - ..() - if(do_glow) - add_glow() - -/mob/living/simple_animal/construct/update_icon() - ..() - if(do_glow) - add_glow() - -/mob/living/simple_animal/construct/death() - new /obj/item/weapon/ectoplasm (src.loc) - ..(null,"collapses in a shattered heap.") - ghostize() - qdel(src) - -/mob/living/simple_animal/construct/attack_generic(var/mob/user) - if(istype(user, /mob/living/simple_animal/construct/builder)) - var/mob/living/simple_animal/construct/builder/B = user - if(health < getMaxHealth()) - var/repair_lower_bound = B.melee_damage_lower * -1 - var/repair_upper_bound = B.melee_damage_upper * -1 - adjustBruteLoss(rand(repair_lower_bound, repair_upper_bound)) - adjustFireLoss(rand(repair_lower_bound, repair_upper_bound)) - user.visible_message("\The [user] mends some of \the [src]'s wounds.") - else - to_chat(user, "\The [src] is undamaged.") - return - return ..() - -/mob/living/simple_animal/construct/examine(mob/user) - ..(user) - var/msg = "*---------*\nThis is \icon[src] \a [src]!\n" - if (src.health < src.getMaxHealth()) - msg += "" - if (src.health >= src.getMaxHealth()/2) - msg += "It looks slightly dented.\n" - else - msg += "It looks severely dented!\n" - msg += "" - msg += "*---------*" - - user << msg - -/mob/living/simple_animal/construct/Process_Spacemove() - return 1 //Constructs levitate, can fall from a shuttle with no harm, and are piloted by either damned spirits or some otherworldly entity. It's not hard to believe. - -/////////////////Juggernaut/////////////// - - - -/mob/living/simple_animal/construct/armoured - name = "Juggernaut" - real_name = "Juggernaut" - construct_type = "juggernaut" - desc = "A possessed suit of armour driven by the will of the restless dead" - icon = 'icons/mob/mob.dmi' - icon_state = "behemoth" - icon_living = "behemoth" - maxHealth = 300 - health = 300 - response_harm = "harmlessly punches" - harm_intent_damage = 0 - melee_damage_lower = 30 - melee_damage_upper = 40 - attack_armor_pen = 60 //Being punched by a living, floating statue. - attacktext = list("smashed their armoured gauntlet into") - friendly = list("pats") - mob_size = MOB_HUGE - speed = 2 //Not super fast, but it might catch up to someone in armor who got punched once or twice. - environment_smash = 2 - attack_sound = 'sound/weapons/heavysmash.ogg' - status_flags = 0 - resistance = 10 - construct_spells = list(/spell/aoe_turf/conjure/forcewall/lesser, - /spell/targeted/fortify, - /spell/targeted/construct_advanced/slam - ) - - armor = list( - "melee" = 70, - "bullet" = 30, - "laser" = 30, - "energy" = 30, - "bomb" = 10, - "bio" = 100, - "rad" = 100) - -/mob/living/simple_animal/construct/armoured/Life() - weakened = 0 - ..() - -/mob/living/simple_animal/construct/armoured/bullet_act(var/obj/item/projectile/P) -// if(istype(P, /obj/item/projectile/energy) || istype(P, /obj/item/projectile/beam)) //If it's going to be slow, it's probably going to need every reflect it can get. - var/reflectchance = 80 - round(P.damage/3) - if(prob(reflectchance)) - var/damage_mod = rand(2,4) - var/projectile_dam_type = P.damage_type - var/incoming_damage = (round(P.damage / damage_mod) - (round((P.damage / damage_mod) * 0.3))) - var/armorcheck = run_armor_check(null, P.check_armour) - var/soakedcheck = get_armor_soak(null, P.check_armour) - if(!(istype(P, /obj/item/projectile/energy) || istype(P, /obj/item/projectile/beam))) - visible_message("The [P.name] bounces off of [src]'s shell!", \ - "The [P.name] bounces off of [src]'s shell!") - new /obj/item/weapon/material/shard/shrapnel(src.loc) - if(!(P.damage_type == BRUTE || P.damage_type == BURN)) - projectile_dam_type = BRUTE - incoming_damage = round(incoming_damage / 4) //Damage from strange sources is converted to brute for physical projectiles, though severely decreased. - apply_damage(incoming_damage, projectile_dam_type, null, armorcheck, soakedcheck, is_sharp(P), has_edge(P), P) - return -1 //Doesn't reflect non-beams or non-energy projectiles. They just smack and drop with little to no effect. - else - visible_message("The [P.name] gets reflected by [src]'s shell!", \ - "The [P.name] gets reflected by [src]'s shell!") - damage_mod = rand(3,5) - incoming_damage = (round(P.damage / damage_mod) - (round((P.damage / damage_mod) * 0.3))) - if(!(P.damage_type == BRUTE || P.damage_type == BURN)) - projectile_dam_type = BURN - incoming_damage = round(incoming_damage / 4) //Damage from strange sources is converted to burn for energy-type projectiles, though severely decreased. - apply_damage(incoming_damage, P.damage_type, null, armorcheck, soakedcheck, is_sharp(P), has_edge(P), P) - - // Find a turf near or on the original location to bounce to - if(P.starting) - var/new_x = P.starting.x + pick(0, 0, -1, 1, -2, 2, -2, 2, -2, 2, -3, 3, -3, 3) - var/new_y = P.starting.y + pick(0, 0, -1, 1, -2, 2, -2, 2, -2, 2, -3, 3, -3, 3) - var/turf/curloc = get_turf(src) - - // redirect the projectile - P.redirect(new_x, new_y, curloc, src) - P.reflected = 1 - - return -1 // complete projectile permutation - - return (..(P)) - - - -////////////////////////Wraith///////////////////////////////////////////// - - - -/mob/living/simple_animal/construct/wraith - name = "Wraith" - real_name = "Wraith" - construct_type = "wraith" - desc = "A wicked bladed shell contraption piloted by a bound spirit." - icon = 'icons/mob/mob.dmi' - icon_state = "floating" - icon_living = "floating" - maxHealth = 200 - health = 200 - melee_damage_lower = 25 - melee_damage_upper = 30 - attack_armor_pen = 15 - attack_sharp = 1 - attack_edge = 1 - attacktext = list("slashed") - friendly = list("pinches") - speed = -1 - environment_smash = 1 - attack_sound = 'sound/weapons/rapidslice.ogg' - construct_spells = list(/spell/targeted/ethereal_jaunt/shift, - /spell/targeted/ambush_mode - ) - -/mob/living/simple_animal/construct/wraith/DoPunch(var/atom/A) - . = ..() - if(. && isliving(A)) - var/mob/living/L = A - L.add_modifier(/datum/modifier/deep_wounds, 30 SECONDS) - -/////////////////////////////Artificer///////////////////////// - - - -/mob/living/simple_animal/construct/builder - name = "Artificer" - real_name = "Artificer" - construct_type = "artificer" - desc = "A bulbous construct dedicated to building and maintaining temples to their otherworldly lords." - icon = 'icons/mob/mob.dmi' - icon_state = "artificer" - icon_living = "artificer" - maxHealth = 150 - health = 150 - response_harm = "viciously beaten" - harm_intent_damage = 5 - melee_damage_lower = 15 //It's not the strongest of the bunch, but that doesn't mean it can't hurt you. - melee_damage_upper = 20 - attacktext = list("rammed") - speed = 0 - environment_smash = 2 - attack_sound = 'sound/weapons/rapidslice.ogg' - construct_spells = list(/spell/aoe_turf/conjure/construct/lesser, - /spell/aoe_turf/conjure/wall, - /spell/aoe_turf/conjure/floor, - /spell/aoe_turf/conjure/soulstone, - /spell/aoe_turf/conjure/pylon, - /spell/aoe_turf/conjure/door, - /spell/aoe_turf/conjure/grille, - /spell/targeted/occult_repair_aura, - /spell/targeted/construct_advanced/mend_acolyte - ) - - -/////////////////////////////Behemoth///////////////////////// -/* - * The Behemoth. Admin-allowance only, still try to keep it in some guideline of 'Balanced', even if it means Security has to be fully geared to be so. - */ - -/mob/living/simple_animal/construct/behemoth - name = "Behemoth" - real_name = "Behemoth" - construct_type = "juggernaut" - desc = "The pinnacle of occult technology, Behemoths are nothing shy of both an Immovable Object, and Unstoppable Force." - icon = 'icons/mob/mob.dmi' - icon_state = "behemoth" - icon_living = "behemoth" - maxHealth = 750 - health = 750 - speak_emote = list("rumbles") - response_harm = "harmlessly punched" - harm_intent_damage = 0 - melee_damage_lower = 50 - melee_damage_upper = 50 - attacktext = list("brutally crushed") - friendly = list("pokes") //Anything nice the Behemoth would do would still Kill the Human. Leave it at poke. - speed = 5 - environment_smash = 2 - attack_sound = 'sound/weapons/heavysmash.ogg' - resistance = 10 - icon_scale = 2 - var/energy = 0 - var/max_energy = 1000 - armor = list( - "melee" = 60, - "bullet" = 60, - "laser" = 60, - "energy" = 30, - "bomb" = 10, - "bio" = 100, - "rad" = 100) - construct_spells = list(/spell/aoe_turf/conjure/forcewall/lesser, - /spell/targeted/fortify, - /spell/targeted/construct_advanced/slam - ) - -/mob/living/simple_animal/construct/behemoth/bullet_act(var/obj/item/projectile/P) - var/reflectchance = 80 - round(P.damage/3) - if(prob(reflectchance)) - visible_message("The [P.name] gets reflected by [src]'s shell!", \ - "The [P.name] gets reflected by [src]'s shell!") - - // Find a turf near or on the original location to bounce to - if(P.starting) - var/new_x = P.starting.x + pick(0, 0, -1, 1, -2, 2, -2, 2, -2, 2, -3, 3, -3, 3) - var/new_y = P.starting.y + pick(0, 0, -1, 1, -2, 2, -2, 2, -2, 2, -3, 3, -3, 3) - var/turf/curloc = get_turf(src) - - // redirect the projectile - P.redirect(new_x, new_y, curloc, src) - P.reflected = 1 - - return -1 // complete projectile permutation - - return (..(P)) - -////////////////////////Harvester//////////////////////////////// -/* - * Master of Spells and Ranged Abilities. Not as fragile as the Wraith, but nowhere near as maneuverable and deadly in melee. - */ - -/mob/living/simple_animal/construct/harvester - name = "Harvester" - real_name = "Harvester" - construct_type = "harvester" - desc = "A tendril-laden construct piloted by a chained mind." - icon = 'icons/mob/mob.dmi' - icon_state = "harvester" - icon_living = "harvester" - maxHealth = 150 - health = 150 - melee_damage_lower = 20 - melee_damage_upper = 25 - attack_sharp = 1 - attacktext = list("violently stabbed") - friendly = list("caresses") - speed = 0 - environment_smash = 1 - attack_sound = 'sound/weapons/pierce.ogg' - - armor = list( - "melee" = 10, - "bullet" = 20, - "laser" = 20, - "energy" = 20, - "bomb" = 20, - "bio" = 100, - "rad" = 100) - - construct_spells = list( - /spell/aoe_turf/knock/harvester, - /spell/targeted/construct_advanced/inversion_beam, - /spell/targeted/construct_advanced/agonizing_sphere, - /spell/rune_write - ) - -////////////////Glow////////////////// -/mob/living/simple_animal/construct/proc/add_glow() - var/image/eye_glow = image(icon,"glow-[icon_state]") - eye_glow.plane = PLANE_LIGHTING_ABOVE - overlays += eye_glow - set_light(2, -2, l_color = "#FFFFFF") - -/mob/living/simple_animal/construct/proc/remove_glow() - overlays.Cut() - -////////////////HUD////////////////////// - -/mob/living/simple_animal/construct/Life() - . = ..() - if(.) - if(fire) - if(fire_alert) fire.icon_state = "fire1" - else fire.icon_state = "fire0" - if(pullin) - if(pulling) pullin.icon_state = "pull1" - else pullin.icon_state = "pull0" - - if(purged) - if(purge > 0) purged.icon_state = "purge1" - else purged.icon_state = "purge0" - - silence_spells(purge) - -/mob/living/simple_animal/construct/updatehealth() //Special icons. - health = getMaxHealth() - getToxLoss() - getFireLoss() - getBruteLoss() - - //Alive, becoming dead - if((stat < DEAD) && (health <= 0)) - death() - - //Overhealth - if(health > getMaxHealth()) - health = getMaxHealth() - - //Update our hud if we have one - if(healths) - if(stat != DEAD) - var/heal_per = (health / getMaxHealth()) * 100 - switch(heal_per) - if(100 to INFINITY) - healths.icon_state = "[construct_type]_health0" - if(80 to 100) - healths.icon_state = "[construct_type]_health1" - if(60 to 80) - healths.icon_state = "[construct_type]_health2" - if(40 to 60) - healths.icon_state = "[construct_type]_health3" - if(20 to 40) - healths.icon_state = "[construct_type]_health4" - if(0 to 20) - healths.icon_state = "[construct_type]_health5" - else - healths.icon_state = "[construct_type]_health6" - else - healths.icon_state = "[construct_type]_health7" \ No newline at end of file diff --git a/code/modules/mob/living/simple_animal/humanoids/clown.dm b/code/modules/mob/living/simple_animal/humanoids/clown.dm index d94fa47c77..9641611c33 100644 --- a/code/modules/mob/living/simple_animal/humanoids/clown.dm +++ b/code/modules/mob/living/simple_animal/humanoids/clown.dm @@ -1,4 +1,4 @@ -/mob/living/simple_animal/hostile/clown +/mob/living/simple_mob/hostile/clown name = "clown" desc = "A denizen of clown planet" tt_desc = "E Homo sapiens corydon" //this is an actual clown, as opposed to someone dressed up as one diff --git a/code/modules/mob/living/simple_animal/humanoids/head.dm b/code/modules/mob/living/simple_animal/humanoids/head.dm deleted file mode 100644 index 22460f0990..0000000000 --- a/code/modules/mob/living/simple_animal/humanoids/head.dm +++ /dev/null @@ -1,61 +0,0 @@ -//Look Sir, free head! -/mob/living/simple_animal/head - name = "CommandBattle AI" - desc = "A standard borg shell on its chest crude marking saying CommandBattle AI MK4 : Head." - icon_state = "crab" - icon_living = "crab" - icon_dead = "crab_dead" - intelligence_level = SA_ANIMAL - - wander = 0 - stop_automated_movement = 1 - universal_speak = 1 - turns_per_move = 5 - - response_help = "pets" - response_disarm = "gently pushes aside" - response_harm = "punches" - - speak_chance = 1 - speak_emote = list("clicks") - emote_hear = list("clicks") - emote_see = list("clacks") - - meat_type = /obj/item/weapon/reagent_containers/food/snacks/meat - - var/list/insults = list( - "Man you suck", - "You look like the most retarded douche around", - "What's up?, oh wait nevermind you are a fucking asshat", - "you are just overly retarded", - "Whiteman said what?!",) - var/list/comments = list("Man have you seen those furry cats?,I mean who in the right mind would like something like that?", - "They call me abusive,I just like the truth", - "Beeboop, im a robit", - "Gooogooooll, break ya bones", - "Crab say what?", - "Man they say we have space lizards now, man this shit is getting more wack every minute", - "The so called \"improved\" station AI is just bullshit, that thing aint fun for noone", - "The Colony Director is a traitor, he took my power core.", - "Say \"what\" again. Say \"what\" again. I dare you. I double-dare you, motherfucker. Say \"what\" one more goddamn time.", - "Ezekiel 25:17 ,The path of the righteous man is beset on all sides by the iniquities of the selfish and the tyranny of evil men. Blessed is he who in the name of charity and good will shepherds the weak through the valley of darkness, for he is truly his brother's keeper and the finder of lost children. And I will strike down upon thee with great vengeance and furious anger those who attempt to poison and destroy my brothers. And you will know my name is the Lord... when I lay my vengeance upon thee.", - "Did you notice a sign out in front of my house that said \"Dead Nigger Storage\"?") - -/mob/living/simple_animal/head/Life() - . = ..() - if(!. || ai_inactive) return - - for(var/mob/A in viewers(world.view,src)) - if(A.ckey) - say_something(A) - -/mob/living/simple_animal/head/proc/say_something(mob/A) - if(prob(85)) - return - if(prob(30)) - var/msg = pick(insults) - msg = "Hey, [A.name].. [msg]" - src.say(msg) - else - var/msg = pick(comments) - src.say(msg) diff --git a/code/modules/mob/living/simple_animal/humanoids/mechamobs.dm b/code/modules/mob/living/simple_animal/humanoids/mechamobs.dm index 9f8c737894..9e1398884f 100644 --- a/code/modules/mob/living/simple_animal/humanoids/mechamobs.dm +++ b/code/modules/mob/living/simple_animal/humanoids/mechamobs.dm @@ -1,4 +1,4 @@ -/mob/living/simple_animal/hostile/mecha +/mob/living/simple_mob/hostile/mecha name = "mercenary gygax" desc = "Well that's forboding." icon = 'icons/mecha/mecha.dmi' @@ -66,38 +66,38 @@ var/datum/effect/effect/system/spark_spread/sparks var/wreckage = /obj/effect/decal/mecha_wreckage/gygax/dark -/mob/living/simple_animal/hostile/mecha/New() +/mob/living/simple_mob/hostile/mecha/New() ..() sparks = new (src) sparks.set_up(3, 1, src) -/mob/living/simple_animal/hostile/mecha/Destroy() +/mob/living/simple_mob/hostile/mecha/Destroy() qdel(sparks) ..() -/mob/living/simple_animal/hostile/mecha/Life() +/mob/living/simple_mob/hostile/mecha/Life() . = ..() if(!.) return if((health < getMaxHealth()*0.3) && prob(10)) sparks.start() -/mob/living/simple_animal/hostile/mecha/bullet_act() +/mob/living/simple_mob/hostile/mecha/bullet_act() ..() sparks.start() -/mob/living/simple_animal/hostile/mecha/death() +/mob/living/simple_mob/hostile/mecha/death() ..(0,"explodes!") sparks.start() explosion(get_turf(src), 0, 0, 1, 3) qdel(src) new /obj/effect/decal/mecha_wreckage/gygax/dark(get_turf(src)) -/mob/living/simple_animal/hostile/mecha/Move() +/mob/living/simple_mob/hostile/mecha/Move() ..() playsound(src,'sound/mecha/mechstep.ogg',40,1) - -/mob/living/simple_animal/hostile/mecha/malf_drone +// This is a PoI mob, not the normal, floaty drones that hang out around windows +/mob/living/simple_mob/hostile/mecha/malf_drone name = "autonomous mechanized drone" desc = "It appears to be an exosuit, piloted by a drone intelligence. It looks scary." intelligence_level = SA_ROBOTIC @@ -116,8 +116,8 @@ say_got_target = list("Threat detected.", "New task: Remove threat.", "Threat removal engaged.", "Engaging target.") returns_home = TRUE -/mob/living/simple_animal/hostile/mecha/malf_drone/isSynthetic() +/mob/living/simple_mob/hostile/mecha/malf_drone/isSynthetic() return TRUE -/mob/living/simple_animal/hostile/mecha/malf_drone/speech_bubble_appearance() +/mob/living/simple_mob/hostile/mecha/malf_drone/speech_bubble_appearance() return "synthetic_evil" \ No newline at end of file diff --git a/code/modules/mob/living/simple_animal/humanoids/pirate.dm b/code/modules/mob/living/simple_animal/humanoids/pirate.dm index a02e4382bb..4e833b90ac 100644 --- a/code/modules/mob/living/simple_animal/humanoids/pirate.dm +++ b/code/modules/mob/living/simple_animal/humanoids/pirate.dm @@ -1,4 +1,4 @@ -/mob/living/simple_animal/hostile/pirate +/mob/living/simple_mob/hostile/pirate name = "Pirate" desc = "Does what he wants cause a pirate is free." tt_desc = "E Homo sapiens" @@ -50,7 +50,7 @@ var/corpse = /obj/effect/landmark/mobcorpse/pirate -/mob/living/simple_animal/hostile/pirate/ranged +/mob/living/simple_mob/hostile/pirate/ranged name = "Pirate Gunner" icon_state = "pirateranged" icon_living = "pirateranged" @@ -64,7 +64,7 @@ corpse = /obj/effect/landmark/mobcorpse/pirate/ranged -/mob/living/simple_animal/hostile/pirate/death() +/mob/living/simple_mob/hostile/pirate/death() ..() if(corpse) new corpse (src.loc) diff --git a/code/modules/mob/living/simple_animal/humanoids/russian.dm b/code/modules/mob/living/simple_animal/humanoids/russian.dm index d02c36de5a..e13b5ed968 100644 --- a/code/modules/mob/living/simple_animal/humanoids/russian.dm +++ b/code/modules/mob/living/simple_animal/humanoids/russian.dm @@ -1,4 +1,4 @@ -/mob/living/simple_animal/hostile/russian +/mob/living/simple_mob/hostile/russian name = "russian" desc = "For the Motherland!" tt_desc = "E Homo sapiens" @@ -47,7 +47,7 @@ var/corpse = /obj/effect/landmark/mobcorpse/russian -/mob/living/simple_animal/hostile/russian/ranged +/mob/living/simple_mob/hostile/russian/ranged icon_state = "russianranged" icon_living = "russianranged" @@ -60,7 +60,7 @@ corpse = /obj/effect/landmark/mobcorpse/russian/ranged -/mob/living/simple_animal/hostile/russian/death() +/mob/living/simple_mob/hostile/russian/death() ..() if(corpse) new corpse (src.loc) diff --git a/code/modules/mob/living/simple_animal/humanoids/syndicate.dm b/code/modules/mob/living/simple_animal/humanoids/syndicate.dm index dfeea36cfe..2cc300b82c 100644 --- a/code/modules/mob/living/simple_animal/humanoids/syndicate.dm +++ b/code/modules/mob/living/simple_animal/humanoids/syndicate.dm @@ -1,4 +1,4 @@ -/mob/living/simple_animal/hostile/syndicate +/mob/living/simple_mob/hostile/syndicate name = "mercenary" desc = "Death to the Company." tt_desc = "E Homo sapiens" @@ -65,7 +65,7 @@ var/corpse = /obj/effect/landmark/mobcorpse/syndicatesoldier -/mob/living/simple_animal/hostile/syndicate/death() +/mob/living/simple_mob/hostile/syndicate/death() if(corpse) ..() new corpse (src.loc) @@ -78,7 +78,7 @@ ///////////////Sword and shield//////////// -/mob/living/simple_animal/hostile/syndicate/melee +/mob/living/simple_mob/hostile/syndicate/melee icon_state = "syndicatemelee" icon_living = "syndicatemelee" @@ -93,7 +93,7 @@ loot_list = list(/obj/item/weapon/melee/energy/sword/red = 100, /obj/item/weapon/shield/energy = 100) -/mob/living/simple_animal/hostile/syndicate/melee/attackby(var/obj/item/O as obj, var/mob/user as mob) +/mob/living/simple_mob/hostile/syndicate/melee/attackby(var/obj/item/O as obj, var/mob/user as mob) if(O.force) if(prob(20)) visible_message("\The [src] blocks \the [O] with its shield!") @@ -106,7 +106,7 @@ usr << "This weapon is ineffective, it does no damage." visible_message("\The [user] gently taps [src] with \the [O].") -/mob/living/simple_animal/hostile/syndicate/melee/bullet_act(var/obj/item/projectile/Proj) +/mob/living/simple_mob/hostile/syndicate/melee/bullet_act(var/obj/item/projectile/Proj) if(!Proj) return if(prob(35)) visible_message("[src] blocks [Proj] with its shield!") @@ -116,7 +116,7 @@ else ..() -/mob/living/simple_animal/hostile/syndicate/melee/space +/mob/living/simple_mob/hostile/syndicate/melee/space name = "syndicate commando" icon_state = "syndicatemeleespace" icon_living = "syndicatemeleespace" @@ -137,10 +137,10 @@ corpse = /obj/effect/landmark/mobcorpse/syndicatecommando -/mob/living/simple_animal/hostile/syndicate/melee/space/Process_Spacemove(var/check_drift = 0) +/mob/living/simple_mob/hostile/syndicate/melee/space/Process_Spacemove(var/check_drift = 0) return -/mob/living/simple_animal/hostile/syndicate/ranged +/mob/living/simple_mob/hostile/syndicate/ranged icon_state = "syndicateranged" icon_living = "syndicateranged" @@ -152,7 +152,7 @@ loot_list = list(/obj/item/weapon/gun/projectile/automatic/c20r = 100) -/mob/living/simple_animal/hostile/syndicate/ranged/laser +/mob/living/simple_mob/hostile/syndicate/ranged/laser icon_state = "syndicateranged_laser" icon_living = "syndicateranged_laser" rapid = 0 @@ -161,7 +161,7 @@ loot_list = list(/obj/item/weapon/gun/energy/laser = 100) -/mob/living/simple_animal/hostile/syndicate/ranged/ionrifle +/mob/living/simple_mob/hostile/syndicate/ranged/ionrifle icon_state = "syndicateranged_ionrifle" icon_living = "syndicateranged_ionrifle" rapid = 0 @@ -170,7 +170,7 @@ loot_list = list(/obj/item/weapon/gun/energy/ionrifle = 100) -/mob/living/simple_animal/hostile/syndicate/ranged/space +/mob/living/simple_mob/hostile/syndicate/ranged/space name = "space mercenary" //VOREStation Edit icon_state = "syndicaterangedpsace" icon_living = "syndicaterangedpsace" @@ -190,7 +190,7 @@ corpse = /obj/effect/landmark/mobcorpse/syndicatecommando -/mob/living/simple_animal/hostile/syndicate/ranged/space/Process_Spacemove(var/check_drift = 0) +/mob/living/simple_mob/hostile/syndicate/ranged/space/Process_Spacemove(var/check_drift = 0) return /////////////////////////////////////////////// @@ -198,38 +198,38 @@ // Don't leave corpses, to help balance loot. /////////////////////////////////////////////// -/mob/living/simple_animal/hostile/syndicate/poi +/mob/living/simple_mob/hostile/syndicate/poi loot_list = list() corpse = null -/mob/living/simple_animal/hostile/syndicate/melee/poi +/mob/living/simple_mob/hostile/syndicate/melee/poi loot_list = list() corpse = null -/mob/living/simple_animal/hostile/syndicate/melee/space/poi +/mob/living/simple_mob/hostile/syndicate/melee/space/poi loot_list = list() corpse = null -/mob/living/simple_animal/hostile/syndicate/ranged/poi +/mob/living/simple_mob/hostile/syndicate/ranged/poi loot_list = list() corpse = null -/mob/living/simple_animal/hostile/syndicate/ranged/laser/poi +/mob/living/simple_mob/hostile/syndicate/ranged/laser/poi loot_list = list() corpse = null -/mob/living/simple_animal/hostile/syndicate/ranged/ionrifle/poi +/mob/living/simple_mob/hostile/syndicate/ranged/ionrifle/poi loot_list = list() corpse = null -/mob/living/simple_animal/hostile/syndicate/ranged/space/poi +/mob/living/simple_mob/hostile/syndicate/ranged/space/poi loot_list = list() corpse = null //Viscerators -/mob/living/simple_animal/hostile/viscerator +/mob/living/simple_mob/hostile/viscerator name = "viscerator" desc = "A small, twin-bladed machine capable of inflicting very deadly lacerations." icon = 'icons/mob/critter.dmi' @@ -261,6 +261,6 @@ max_n2 = 0 minbodytemp = 0 -/mob/living/simple_animal/hostile/viscerator/death() +/mob/living/simple_mob/hostile/viscerator/death() ..(null,"is smashed into pieces!") qdel(src) diff --git a/code/modules/mob/living/simple_animal/simple_animal.dm b/code/modules/mob/living/simple_animal/simple_animal.dm index 71a523c7d0..d143f37ae3 100644 --- a/code/modules/mob/living/simple_animal/simple_animal.dm +++ b/code/modules/mob/living/simple_animal/simple_animal.dm @@ -3,14 +3,14 @@ //Talky things #define try_say_list(L) if(L.len) say(pick(L)) -/mob/living/simple_animal +/mob/living/simple_mob name = "animal" desc = "" icon = 'icons/mob/animal.dmi' health = 20 maxHealth = 20 - mob_bump_flag = SIMPLE_ANIMAL + mob_bump_flag = simple_mob mob_swap_flags = MONKEY|SLIME|HUMAN mob_push_flags = MONKEY|SLIME|HUMAN @@ -169,7 +169,7 @@ var/mob/living/target_mob // Who I'm trying to attack var/mob/living/follow_mob // Who I'm recruited by var/mob/living/list/friends = list() // People who are immune to my wrath, for now - var/mob/living/simple_animal/list/faction_friends = list() // Other simple mobs I am friends with + var/mob/living/simple_mob/list/faction_friends = list() // Other simple mobs I am friends with var/turf/list/walk_list = list()// List of turfs to walk through to get somewhere var/astarpathing = 0 // Am I currently pathing to somewhere? var/stance_changed = 0 // When our stance last changed (world.time) @@ -181,7 +181,7 @@ ////// ////// ////// var/life_disabled = 0 //VOREStation Edit -- For performance reasons -/mob/living/simple_animal/New() +/mob/living/simple_mob/New() ..() verbs -= /mob/verb/observe home_turf = get_turf(src) @@ -195,8 +195,8 @@ default_language = languages[1] if(cooperative) - var/mob/living/simple_animal/first_friend - for(var/mob/living/simple_animal/M in living_mob_list) + var/mob/living/simple_mob/first_friend + for(var/mob/living/simple_mob/M in living_mob_list) if(M.faction == src.faction) first_friend = M break @@ -206,7 +206,7 @@ else faction_friends |= src -/mob/living/simple_animal/Destroy() +/mob/living/simple_mob/Destroy() home_turf = null path_overlay = null default_language = null @@ -225,7 +225,7 @@ return ..() //Client attached -/mob/living/simple_animal/Login() +/mob/living/simple_mob/Login() . = ..() ai_inactive = 1 handle_stance(STANCE_IDLE) @@ -233,19 +233,19 @@ to_chat(src,"Mob AI disabled while you are controlling the mob.
      You are \the [src]. [player_msg]") //Client detatched -/mob/living/simple_animal/Logout() +/mob/living/simple_mob/Logout() spawn(15 SECONDS) //15 seconds to get back into the mob before it goes wild if(src && !src.client) ai_inactive = initial(ai_inactive) //So if they never have an AI, they stay that way. ..() //For debug purposes! -/mob/living/simple_animal/proc/ai_log_output(var/msg = "missing message", var/ver = 1) +/mob/living/simple_mob/proc/ai_log_output(var/msg = "missing message", var/ver = 1) if(ver <= debug_ai) log_debug("SA-AI: ([src]:[x],[y],[z])(@[world.time]): [msg] ") //Should we be dead? -/mob/living/simple_animal/updatehealth() +/mob/living/simple_mob/updatehealth() health = getMaxHealth() - getToxLoss() - getFireLoss() - getBruteLoss() //Alive, becoming dead @@ -293,7 +293,7 @@ if(0 to 25) nutrition_icon.icon_state = "nutrition4" -/mob/living/simple_animal/update_icon() +/mob/living/simple_mob/update_icon() . = ..() var/mutable_appearance/ma = new(src) ma.layer = layer @@ -332,7 +332,7 @@ appearance = ma // If your simple mob's update_icon() call calls overlays.Cut(), this needs to be called after this, or manually apply modifier_overly to overlays. -/mob/living/simple_animal/update_modifier_visuals() +/mob/living/simple_mob/update_modifier_visuals() var/image/effects = null if(modifier_overlay) overlays -= modifier_overlay @@ -351,7 +351,7 @@ overlays += modifier_overlay -/mob/living/simple_animal/Life() +/mob/living/simple_mob/Life() //VOREStation Edit if(life_disabled) @@ -402,11 +402,11 @@ // Resists out of things. // Sometimes there are times you want SAs to be buckled to something, so override this for when that is needed. -/mob/living/simple_animal/proc/handle_resist() +/mob/living/simple_mob/proc/handle_resist() resist() // Peforms the random walk wandering -/mob/living/simple_animal/proc/handle_wander_movement() +/mob/living/simple_mob/proc/handle_wander_movement() if(isturf(src.loc) && !resting && !buckled && canmove) //Physically capable of moving? lifes_since_move++ //Increment turns since move (turns are life() cycles) if(lifes_since_move >= turns_per_move) @@ -421,7 +421,7 @@ lifes_since_move = 0 // Checks to see if mob doesn't like this kind of turf -/mob/living/simple_animal/proc/avoid_turf(var/turf/turf) +/mob/living/simple_mob/proc/avoid_turf(var/turf/turf) if(!turf) return TRUE //Avoid the nothing, yes @@ -431,7 +431,7 @@ return FALSE //Override it on stuff to adjust // Handles random chatter, called from Life() when stance = STANCE_IDLE -/mob/living/simple_animal/proc/handle_idle_speaking() +/mob/living/simple_mob/proc/handle_idle_speaking() if(rand(0,200) < speak_chance) if(speak && speak.len) if((emote_hear && emote_hear.len) || (emote_see && emote_see.len)) @@ -466,7 +466,7 @@ // Handle interacting with and taking damage from atmos // TODO - Refactor this to use handle_environment() like a good /mob/living -/mob/living/simple_animal/proc/handle_atmos() +/mob/living/simple_mob/proc/handle_atmos() var/atmos_unsuitable = 0 var/atom/A = src.loc @@ -531,13 +531,13 @@ oxygen.icon_state = "oxy0" // For setting the stance WITHOUT processing it -/mob/living/simple_animal/proc/set_stance(var/new_stance) +/mob/living/simple_mob/proc/set_stance(var/new_stance) stance = new_stance stance_changed = world.time ai_log("set_stance() changing to [new_stance]",2) // For proccessing the current stance, or setting and processing a new one -/mob/living/simple_animal/proc/handle_stance(var/new_stance) +/mob/living/simple_mob/proc/handle_stance(var/new_stance) if(ai_inactive) stance = STANCE_IDLE return @@ -580,24 +580,18 @@ annoyed = 50 AttackTarget() -/mob/living/simple_animal/proc/handle_supernatural() +/mob/living/simple_mob/proc/handle_supernatural() if(purge) purge -= 1 -/mob/living/simple_animal/gib() +/mob/living/simple_mob/gib() ..(icon_gib,1,icon) // we need to specify where the gib animation is stored -/mob/living/simple_animal/emote(var/act, var/type, var/desc) +/mob/living/simple_mob/emote(var/act, var/type, var/desc) if(act) ..(act, type, desc) -/mob/living/simple_animal/proc/visible_emote(var/act_desc) - custom_emote(1, act_desc) - -/mob/living/simple_animal/proc/audible_emote(var/act_desc) - custom_emote(2, act_desc) - -/mob/living/simple_animal/bullet_act(var/obj/item/projectile/Proj) +/mob/living/simple_mob/bullet_act(var/obj/item/projectile/Proj) ai_log("bullet_act() I was shot by: [Proj.firer]",2) /* VOREStation Edit - Ace doesn't like bonus SA damage. @@ -612,7 +606,7 @@ react_to_attack(Proj.firer) // When someone clicks us with an empty hand -/mob/living/simple_animal/attack_hand(mob/living/carbon/human/M as mob) +/mob/living/simple_mob/attack_hand(mob/living/carbon/human/M as mob) ..() switch(M.a_intent) @@ -659,7 +653,7 @@ return // When somoene clicks us with an item in hand -/mob/living/simple_animal/attackby(var/obj/item/O, var/mob/user) +/mob/living/simple_mob/attackby(var/obj/item/O, var/mob/user) if(istype(O, /obj/item/stack/medical)) if(stat != DEAD) var/obj/item/stack/medical/MED = O @@ -685,7 +679,7 @@ return ..() -/mob/living/simple_animal/hit_with_weapon(obj/item/O, mob/living/user, var/effective_force, var/hit_zone) +/mob/living/simple_mob/hit_with_weapon(obj/item/O, mob/living/user, var/effective_force, var/hit_zone) //Animals can't be stunned(?) if(O.damtype == HALLOSS) @@ -703,18 +697,18 @@ . = ..() // When someone throws something at us -/mob/living/simple_animal/hitby(atom/movable/AM) +/mob/living/simple_mob/hitby(atom/movable/AM) ..() if(AM.thrower) react_to_attack(AM.thrower) //SA vs SA basically -/mob/living/simple_animal/attack_generic(var/mob/attacker) - ..() +/mob/living/simple_mob/attack_generic(var/mob/attacker) if(attacker) react_to_attack(attacker) + return ..() -/mob/living/simple_animal/movement_delay() +/mob/living/simple_mob/movement_delay() var/tally = 0 //Incase I need to add stuff other than "speed" later tally = speed @@ -738,13 +732,13 @@ return tally+config.animal_delay -/mob/living/simple_animal/Stat() +/mob/living/simple_mob/Stat() ..() if(statpanel("Status") && show_stat_health) stat(null, "Health: [round((health / getMaxHealth()) * 100)]%") -/mob/living/simple_animal/lay_down() +/mob/living/simple_mob/lay_down() ..() if(resting && icon_rest) icon_state = icon_rest @@ -752,7 +746,7 @@ icon_state = icon_living update_icon() -/mob/living/simple_animal/death(gibbed, deathmessage = "dies!") +/mob/living/simple_mob/death(gibbed, deathmessage = "dies!") density = 0 //We don't block even if we did before walk(src, 0) //We stop any background-processing walks resting = 0 //We can rest in peace later. @@ -770,7 +764,7 @@ return ..(gibbed,deathmessage) -/mob/living/simple_animal/ex_act(severity) +/mob/living/simple_mob/ex_act(severity) if(!blinded) flash_eyes() var/armor = run_armor_check(def_zone = null, attack_flag = "bomb") @@ -789,7 +783,7 @@ gib() // Check target_mob if worthy of attack (i.e. check if they are dead or empty mecha) -/mob/living/simple_animal/proc/SA_attackable(target_mob) +/mob/living/simple_mob/proc/SA_attackable(target_mob) ai_log("SA_attackable([target_mob])",3) if (isliving(target_mob)) var/mob/living/L = target_mob @@ -802,7 +796,7 @@ ai_log("SA_attackable([target_mob]): no",3) return 0 -/mob/living/simple_animal/say(var/message,var/datum/language/language) +/mob/living/simple_mob/say(var/message,var/datum/language/language) var/verb = "says" if(speak_emote.len) verb = pick(speak_emote) @@ -811,10 +805,10 @@ ..(message, null, verb) -/mob/living/simple_animal/get_speech_ending(verb, var/ending) +/mob/living/simple_mob/get_speech_ending(verb, var/ending) return verb -/mob/living/simple_animal/put_in_hands(var/obj/item/W) // No hands. +/mob/living/simple_mob/put_in_hands(var/obj/item/W) // No hands. if(has_hands) put_in_active_hand(W) return 1 @@ -822,7 +816,7 @@ return 1 // Harvest an animal's delicious byproducts -/mob/living/simple_animal/proc/harvest(var/mob/user) +/mob/living/simple_mob/proc/harvest(var/mob/user) var/actual_meat_amount = max(1,(meat_amount/2)) if(meat_type && actual_meat_amount>0 && (stat == DEAD)) for(var/i=0;i[user] butchers \the [src] messily!") gib() -/mob/living/simple_animal/handle_fire() +/mob/living/simple_mob/handle_fire() return -/mob/living/simple_animal/update_fire() +/mob/living/simple_mob/update_fire() return -/mob/living/simple_animal/IgniteMob() +/mob/living/simple_mob/IgniteMob() return -/mob/living/simple_animal/ExtinguishMob() +/mob/living/simple_mob/ExtinguishMob() return //We got hit! Consider hitting them back! -/mob/living/simple_animal/proc/react_to_attack(var/mob/living/M) +/mob/living/simple_mob/proc/react_to_attack(var/mob/living/M) if(ai_inactive || stat || M == target_mob) return //Not if we're dead or already hitting them if(M in friends || M.faction == faction) return //I'll overlook it THIS time... ai_log("react_to_attack([M])",1) @@ -856,7 +850,7 @@ return 0 -/mob/living/simple_animal/proc/set_target(var/mob/M, forced = 0) +/mob/living/simple_mob/proc/set_target(var/mob/M, forced = 0) ai_log("SetTarget([M])",2) if(!M || (world.time - last_target_time < 5 SECONDS) && target_mob) ai_log("SetTarget() can't set it again so soon",3) @@ -882,7 +876,7 @@ return 0 // Set a follow target, with optional time for how long to follow them. -/mob/living/simple_animal/proc/set_follow(var/mob/M, var/follow_for = 0) +/mob/living/simple_mob/proc/set_follow(var/mob/M, var/follow_for = 0) ai_log("SetFollow([M]) for=[follow_for]",2) if(!M || (world.time - last_target_time < 4 SECONDS) && follow_mob) ai_log("SetFollow() can't set it again so soon",3) @@ -894,7 +888,7 @@ return 1 //Scan surroundings for a valid target -/mob/living/simple_animal/proc/FindTarget() +/mob/living/simple_mob/proc/FindTarget() var/atom/T = null for(var/atom/A in ListTargets(view_range)) @@ -943,21 +937,21 @@ return T //Used for special targeting or reactions -/mob/living/simple_animal/proc/Found(var/atom/A) +/mob/living/simple_mob/proc/Found(var/atom/A) return // Used for somewhat special targeting, but not to the extent of using Found() -/mob/living/simple_animal/proc/special_target_check(var/atom/A) +/mob/living/simple_mob/proc/special_target_check(var/atom/A) return TRUE //Requesting help from like-minded individuals -/mob/living/simple_animal/proc/RequestHelp() +/mob/living/simple_mob/proc/RequestHelp() if(!cooperative || ((world.time - last_helpask_time) < 10 SECONDS)) return ai_log("RequestHelp() to [faction_friends.len] friends",2) last_helpask_time = world.time - for(var/mob/living/simple_animal/F in faction_friends) + for(var/mob/living/simple_mob/F in faction_friends) if(F == src) continue if(get_dist(src,F) <= F.assist_distance) spawn(0) @@ -966,7 +960,7 @@ F.HelpRequested(src) //Someone wants help? -/mob/living/simple_animal/proc/HelpRequested(var/mob/living/simple_animal/F) +/mob/living/simple_mob/proc/HelpRequested(var/mob/living/simple_mob/F) if(target_mob || stat) ai_log("HelpRequested() by [F] but we're busy/dead",2) return @@ -985,11 +979,11 @@ // Can be used to conditionally do a ranged or melee attack. // Note that the SA must be able to do an attack at the specified range or else it may get trapped in a loop of switching // between STANCE_ATTACK and STANCE_ATTACKING, due to being told by MoveToTarget() that they're in range but being told by AttackTarget() that they're not. -/mob/living/simple_animal/proc/ClosestDistance() +/mob/living/simple_mob/proc/ClosestDistance() return ranged ? shoot_range - 1 : 1 // Shoot range -1 just because we don't want to constantly get kited //Move to a target (or near if we're ranged) -/mob/living/simple_animal/proc/MoveToTarget() +/mob/living/simple_mob/proc/MoveToTarget() if(incapacitated(INCAPACITATION_DISABLED)) ai_log("MoveToTarget() Bailing because we're disabled",2) return @@ -1064,7 +1058,7 @@ LoseTarget() //Just forget it. //Follow a target (and don't attempt to murder it horribly) -/mob/living/simple_animal/proc/FollowTarget() +/mob/living/simple_mob/proc/FollowTarget() ai_log("FollowTarget() [follow_mob]",1) stop_automated_movement = 1 //If we were chasing someone and we can't anymore, give up. @@ -1109,7 +1103,7 @@ LoseFollow() //Just try one time to go look at something. Don't really focus much on it. -/mob/living/simple_animal/proc/WanderTowards(var/turf/T) +/mob/living/simple_mob/proc/WanderTowards(var/turf/T) if(!T) return ai_log("WanderTowards() [T.x],[T.y]",1) @@ -1126,7 +1120,7 @@ WalkPath(target_thing = T, target_dist = 1) //A* now, try to a path to a target -/mob/living/simple_animal/proc/GetPath(var/turf/target,var/get_to = 1,var/max_distance = world.view*6) +/mob/living/simple_mob/proc/GetPath(var/turf/target,var/get_to = 1,var/max_distance = world.view*6) ai_log("GetPath([target],[get_to],[max_distance])",2) ForgetPath() var/list/new_path = AStar(get_turf(loc), target, astar_adjacent_proc, /turf/proc/Distance, min_target_dist = get_to, max_node_depth = max_distance, id = myid, exclude = obstacles) @@ -1142,7 +1136,7 @@ return walk_list.len //Walk along our A* path, target_thing allows us to stop early if we're nearby -/mob/living/simple_animal/proc/WalkPath(var/atom/target_thing, var/target_dist = 1, var/proc/steps_callback = null, var/every_steps = 4) +/mob/living/simple_mob/proc/WalkPath(var/atom/target_thing, var/target_dist = 1, var/proc/steps_callback = null, var/every_steps = 4) ai_log("WalkPath() (steps:[walk_list.len])",2) if(!walk_list || !walk_list.len) return @@ -1189,7 +1183,7 @@ sleep(move_to_delay) //Take one step along a path -/mob/living/simple_animal/proc/MoveOnce() +/mob/living/simple_mob/proc/MoveOnce() if(!walk_list.len) return @@ -1207,7 +1201,7 @@ return 1 //Forget the path entirely -/mob/living/simple_animal/proc/ForgetPath() +/mob/living/simple_mob/proc/ForgetPath() ai_log("ForgetPath()",2) if(path_display) for(var/turf/T in walk_list) @@ -1216,14 +1210,14 @@ walk_list.Cut() //Giving up on moving -/mob/living/simple_animal/proc/GiveUpMoving() +/mob/living/simple_mob/proc/GiveUpMoving() ai_log("GiveUpMoving()",1) ForgetPath() walk(src, 0) stop_automated_movement = 0 //Return home, all-in-one proc (though does target scan and drop out if they see one) -/mob/living/simple_animal/proc/GoHome() +/mob/living/simple_mob/proc/GoHome() if(!home_turf) return if(astarpathing) ForgetPath() ai_log("GoHome()",1) @@ -1237,7 +1231,7 @@ GiveUpMoving() //Go back to wandering //Get into attack mode on a target -/mob/living/simple_animal/proc/AttackTarget() +/mob/living/simple_mob/proc/AttackTarget() stop_automated_movement = 1 if(incapacitated(INCAPACITATION_DISABLED)) ai_log("AttackTarget() Bailing because we're disabled",2) @@ -1277,11 +1271,14 @@ return 0 //Attack the target in melee -/mob/living/simple_animal/proc/PunchTarget() +/mob/living/simple_mob/proc/PunchTarget() if(!Adjacent(target_mob)) return - if(!client) - sleep(rand(melee_attack_minDelay, melee_attack_maxDelay)) + if(!canClick()) + return + setClickCooldown(get_attack_speed()) +// if(!client) +// sleep(rand(melee_attack_minDelay, melee_attack_maxDelay)) if(isliving(target_mob)) var/mob/living/L = target_mob @@ -1299,7 +1296,7 @@ return M // This is the actual act of 'punching'. Override for special behaviour. -/mob/living/simple_animal/proc/DoPunch(var/atom/A) +/mob/living/simple_mob/proc/DoPunch(var/atom/A) if(!Adjacent(A) && !istype(A, /obj/structure/window) && !istype(A, /obj/machinery/door/window)) // They could've moved in the meantime. But a Window probably wouldn't have. This allows player simple-mobs to attack windows. return FALSE @@ -1321,14 +1318,19 @@ return TRUE //The actual top-level ranged attack proc -/mob/living/simple_animal/proc/ShootTarget() +/mob/living/simple_mob/proc/ShootTarget() + if(!canClick()) + return FALSE + + setClickCooldown(get_attack_speed()) + var/target = target_mob var/tturf = get_turf(target) if((firing_lines && !client) && !CheckFiringLine(tturf)) step_rand(src) face_atom(tturf) - return 0 + return FALSE visible_message("[src] fires at [target]!") if(rapid) @@ -1349,10 +1351,10 @@ if(casingtype) new casingtype - return 1 + return TRUE //Check firing lines for faction_friends (if we're not cooperative, we don't care) -/mob/living/simple_animal/proc/CheckFiringLine(var/turf/tturf) +/mob/living/simple_mob/proc/CheckFiringLine(var/turf/tturf) if(!tturf) return var/turf/list/crosses = list() @@ -1373,40 +1375,38 @@ return 1 //Special attacks, like grenades or blinding spit or whatever -/mob/living/simple_animal/proc/SpecialAtkTarget() +/mob/living/simple_mob/proc/SpecialAtkTarget() return 0 //Shoot a bullet at someone -/mob/living/simple_animal/proc/Shoot(var/target, var/start, var/user, var/bullet = 0) +/mob/living/simple_animal/proc/Shoot(atom/target, atom/start, mob/user, var/bullet = 0) if(target == start) return - var/obj/item/projectile/A = new projectiletype(user:loc) + var/obj/item/projectile/A = new projectiletype(user.loc) playsound(user, projectilesound, 100, 1) if(!A) return // if (!istype(target, /turf)) // qdel(A) // return - - A.firer = src - A.launch(target) - return + A.old_style_target(target) + A.fire() //We can't see the target -/mob/living/simple_animal/proc/LoseTarget() +/mob/living/simple_mob/proc/LoseTarget() ai_log("LoseTarget() [target_mob]",2) target_mob = null handle_stance(STANCE_IDLE) GiveUpMoving() //Target is no longer valid (?) -/mob/living/simple_animal/proc/LostTarget() +/mob/living/simple_mob/proc/LostTarget() handle_stance(STANCE_IDLE) GiveUpMoving() //Forget a follow mode -/mob/living/simple_animal/proc/LoseFollow() +/mob/living/simple_mob/proc/LoseFollow() ai_log("LoseFollow() [target_mob]",2) stop_automated_movement = 0 follow_mob = null @@ -1414,44 +1414,44 @@ GiveUpMoving() // Makes the simple mob stop everything. Useful for when it get stunned. -/mob/living/simple_animal/proc/Disable() +/mob/living/simple_mob/proc/Disable() ai_log("Disable() [target_mob]",2) spawn(0) LoseTarget() LoseFollow() -/mob/living/simple_animal/Stun(amount) +/mob/living/simple_mob/Stun(amount) if(amount > 0) Disable() ..(amount) -/mob/living/simple_animal/AdjustStunned(amount) +/mob/living/simple_mob/AdjustStunned(amount) if(amount > 0) Disable() ..(amount) -/mob/living/simple_animal/Weaken(amount) +/mob/living/simple_mob/Weaken(amount) if(amount > 0) Disable() ..(amount) -/mob/living/simple_animal/AdjustWeakened(amount) +/mob/living/simple_mob/AdjustWeakened(amount) if(amount > 0) Disable() ..(amount) -/mob/living/simple_animal/Paralyse(amount) +/mob/living/simple_mob/Paralyse(amount) if(amount > 0) Disable() ..(amount) -/mob/living/simple_animal/AdjustParalysis(amount) +/mob/living/simple_mob/AdjustParalysis(amount) if(amount > 0) Disable() ..(amount) //Find me some targets -/mob/living/simple_animal/proc/ListTargets(var/dist = view_range) +/mob/living/simple_mob/proc/ListTargets(var/dist = view_range) var/list/L = hearers(src, dist) for(var/obj/mecha/M in mechas_list) @@ -1461,7 +1461,7 @@ return L //Break through windows/other things -/mob/living/simple_animal/proc/DestroySurroundings(var/direction) +/mob/living/simple_mob/proc/DestroySurroundings(var/direction) if(!direction) direction = pick(cardinal) //FLAIL WILDLY @@ -1497,7 +1497,7 @@ return //Check for shuttle bumrush -/mob/living/simple_animal/proc/check_horde() +/mob/living/simple_mob/proc/check_horde() return 0 if(emergency_shuttle.shuttle.location) if(!enroute && !target_mob) //The shuttle docked, all monsters rush for the escape hallway @@ -1514,7 +1514,7 @@ stop_automated_movement = 0 //Shuttle bumrush -/mob/living/simple_animal/proc/horde() +/mob/living/simple_mob/proc/horde() var/turf/T = get_step_to(src, shuttletarget) for(var/atom/A in T) if(istype(A,/obj/machinery/door/airlock)) @@ -1536,7 +1536,7 @@ horde() //Touches a wire, etc -/mob/living/simple_animal/electrocute_act(var/shock_damage, var/obj/source, var/siemens_coeff = 1.0, var/def_zone = null) +/mob/living/simple_mob/electrocute_act(var/shock_damage, var/obj/source, var/siemens_coeff = 1.0, var/def_zone = null) shock_damage *= max(siemens_coeff - shock_resistance, 0) if (shock_damage < 1) return 0 @@ -1549,7 +1549,7 @@ s.start() //Shot with taser/stunvolver -/mob/living/simple_animal/stun_effect_act(var/stun_amount, var/agony_amount, var/def_zone, var/used_weapon=null) +/mob/living/simple_mob/stun_effect_act(var/stun_amount, var/agony_amount, var/def_zone, var/used_weapon=null) if(taser_kill) var/stunDam = 0 var/agonyDam = 0 @@ -1563,7 +1563,7 @@ agonyDam += agony_amount * 0.5 apply_damage(damage = agonyDam, damagetype = BURN, def_zone = null, blocked = armor, blocked = resistance, used_weapon = used_weapon, sharp = FALSE, edge = FALSE) -/mob/living/simple_animal/emp_act(severity) +/mob/living/simple_mob/emp_act(severity) if(!isSynthetic()) return switch(severity) @@ -1576,24 +1576,24 @@ if(4) adjustFireLoss(rand(1, 6)) -/mob/living/simple_animal/getarmor(def_zone, attack_flag) +/mob/living/simple_mob/getarmor(def_zone, attack_flag) var/armorval = armor[attack_flag] if(!armorval) return 0 else return armorval - +/* // Force it to target something -/mob/living/simple_animal/proc/taunt(var/mob/living/new_target, var/forced = FALSE) +/mob/living/simple_mob/proc/taunt(var/mob/living/new_target, var/forced = FALSE) if(intelligence_level == SA_HUMANOID && !forced) return set_target(new_target) - -/mob/living/simple_animal/is_sentient() +*/ +/mob/living/simple_mob/is_sentient() return intelligence_level != SA_PLANT && intelligence_level != SA_ROBOTIC // Hand procs for player-controlled SA's -/mob/living/simple_animal/swap_hand() +/mob/living/simple_mob/swap_hand() src.hand = !( src.hand ) if(hud_used.l_hand_hud_object && hud_used.r_hand_hud_object) if(hand) //This being 1 means the left hand is in use @@ -1604,17 +1604,17 @@ hud_used.r_hand_hud_object.icon_state = "r_hand_active" return /* -/mob/living/simple_animal/put_in_active_hand(var/obj/item/I) +/mob/living/simple_mob/put_in_active_hand(var/obj/item/I) if(!has_hands || !istype(I)) return */ //Puts the item into our active hand if possible. returns 1 on success. -/mob/living/simple_animal/put_in_active_hand(var/obj/item/W) +/mob/living/simple_mob/put_in_active_hand(var/obj/item/W) if(!has_hands) return FALSE return (hand ? put_in_l_hand(W) : put_in_r_hand(W)) -/mob/living/simple_animal/put_in_l_hand(var/obj/item/W) +/mob/living/simple_mob/put_in_l_hand(var/obj/item/W) if(!..() || l_hand) return 0 W.forceMove(src) @@ -1624,7 +1624,7 @@ update_inv_l_hand() return TRUE -/mob/living/simple_animal/put_in_r_hand(var/obj/item/W) +/mob/living/simple_mob/put_in_r_hand(var/obj/item/W) if(!..() || r_hand) return 0 W.forceMove(src) @@ -1634,7 +1634,7 @@ update_inv_r_hand() return TRUE -/mob/living/simple_animal/update_inv_r_hand() +/mob/living/simple_mob/update_inv_r_hand() if(QDESTROYING(src)) return @@ -1671,7 +1671,7 @@ update_icon() -/mob/living/simple_animal/update_inv_l_hand() +/mob/living/simple_mob/update_inv_l_hand() if(QDESTROYING(src)) return @@ -1709,14 +1709,14 @@ update_icon() //Can insert extra huds into the hud holder here. -/mob/living/simple_animal/proc/extra_huds(var/datum/hud/hud,var/icon/ui_style,var/list/hud_elements) +/mob/living/simple_mob/proc/extra_huds(var/datum/hud/hud,var/icon/ui_style,var/list/hud_elements) return //If they can or cannot use tools/machines/etc -/mob/living/simple_animal/IsAdvancedToolUser() +/mob/living/simple_mob/IsAdvancedToolUser() return has_hands -/mob/living/simple_animal/proc/IsHumanoidToolUser(var/atom/tool) +/mob/living/simple_mob/proc/IsHumanoidToolUser(var/atom/tool) if(!humanoid_hands) var/display_name = null if(tool) @@ -1726,7 +1726,7 @@ to_chat(src, "Your [hand_form] are not fit for use of \the [display_name].") return humanoid_hands -/mob/living/simple_animal/drop_from_inventory(var/obj/item/W, var/atom/target = null) +/mob/living/simple_mob/drop_from_inventory(var/obj/item/W, var/atom/target = null) . = ..(W, target) if(!target) target = src.loc @@ -1734,7 +1734,7 @@ W.forceMove(src.loc) //Commands, reactions, etc -/mob/living/simple_animal/hear_say(var/message, var/verb = "says", var/datum/language/language = null, var/alt_name = "", var/italics = 0, var/mob/speaker = null, var/sound/speech_sound, var/sound_vol) +/mob/living/simple_mob/hear_say(var/message, var/verb = "says", var/datum/language/language = null, var/alt_name = "", var/italics = 0, var/mob/speaker = null, var/sound/speech_sound, var/sound_vol) ..() if(!ai_inactive && reacts && speaker && (message in reactions) && (!hostile || isliving(speaker)) && say_understands(speaker,language)) var/mob/living/L = speaker @@ -1744,16 +1744,16 @@ say(reactions[message]) //Just some subpaths for easy searching -/mob/living/simple_animal/hostile +/mob/living/simple_mob/hostile faction = "not yours" hostile = 1 retaliate = 1 stop_when_pulled = 0 destroy_surroundings = 1 -/mob/living/simple_animal/retaliate +/mob/living/simple_mob/retaliate retaliate = 1 destroy_surroundings = 1 -/mob/living/simple_animal/get_nametag_desc(mob/user) +/mob/living/simple_mob/get_nametag_desc(mob/user) return "[tt_desc]" diff --git a/code/modules/mob/living/simple_animal/simple_hud.dm b/code/modules/mob/living/simple_animal/simple_hud.dm index 5da7e8a696..fe851648b4 100644 --- a/code/modules/mob/living/simple_animal/simple_hud.dm +++ b/code/modules/mob/living/simple_animal/simple_hud.dm @@ -1,4 +1,4 @@ -/mob/living/simple_animal/instantiate_hud(var/datum/hud/hud) +/mob/living/simple_mob/instantiate_hud(var/datum/hud/hud) if(!client) return //Why bother. diff --git a/code/modules/mob/living/simple_animal/slime/ai.dm b/code/modules/mob/living/simple_animal/slime/ai.dm deleted file mode 100644 index 3a8718c997..0000000000 --- a/code/modules/mob/living/simple_animal/slime/ai.dm +++ /dev/null @@ -1,91 +0,0 @@ -/mob/living/simple_animal/slime/FindTarget() - if(victim) // Don't worry about finding another target if we're eatting someone. - return - if(follow_mob && can_command(follow_mob)) // If following someone, don't attack until the leader says so, something hits you, or the leader is no longer worthy. - return - ..() - -/mob/living/simple_animal/slime/Found(mob/living/L) - if(isliving(L)) - if(SA_attackable(L)) - if(L.faction == faction && !attack_same) - if(ishuman(L)) - var/mob/living/carbon/human/H = L - if(istype(H.species, /datum/species/monkey)) // istype() is so they'll eat the alien monkeys too. - return H // Monkeys are always food. - else - return - - if(L in friends) - return - - if(istype(L, /mob/living/simple_animal/slime)) - var/mob/living/simple_animal/slime/buddy = L - if(buddy.slime_color == src.slime_color || discipline || unity || buddy.unity) - return // Don't hurt same colored slimes. - else - return buddy //do hurt others - - if(ishuman(L)) - var/mob/living/carbon/human/H = L - if(istype(H.species, /datum/species/monkey)) // istype() is so they'll eat the alien monkeys too. - return H // Monkeys are always food. - - if(issilicon(L) || isbot(L)) - if(discipline && !rabid) - return // We're a good slime. For now at least. - return - return - -/mob/living/simple_animal/slime/special_target_check(mob/living/L) - if(L.faction == faction && !attack_same && !istype(L, /mob/living/simple_animal/slime)) - if(ishuman(L)) - var/mob/living/carbon/human/H = L - if(istype(H.species, /datum/species/monkey)) // istype() is so they'll eat the alien monkeys too. - return TRUE // Monkeys are always food. - else - return FALSE - if(L in friends) - return FALSE - - if(istype(L, /mob/living/simple_animal/slime)) - var/mob/living/simple_animal/slime/buddy = L - if(buddy.slime_color == src.slime_color || discipline || unity || buddy.unity) - return FALSE // Don't hurt same colored slimes. - - if(ishuman(L)) - var/mob/living/carbon/human/H = L - if(H.species && H.species.name == "Promethean") - return FALSE // Prometheans are always our friends. - else if(istype(H.species, /datum/species/monkey)) // istype() is so they'll eat the alien monkeys too. - return TRUE // Monkeys are always food. - if(discipline && !rabid) - return FALSE // We're a good slime. For now at least - - if(issilicon(L) || isbot(L) ) - if(discipline && !rabid) - return FALSE // We're a good slime. For now at least. - return ..() // Other colors and nonslimes are jerks however. - -/mob/living/simple_animal/slime/ClosestDistance() - if(target_mob.stat == DEAD) - return 1 // Melee (eat) the target if dead, don't shoot it. - return ..() - -/mob/living/simple_animal/slime/HelpRequested(var/mob/living/simple_animal/slime/buddy) - if(istype(buddy)) - if(buddy.slime_color != src.slime_color && (!unity || !buddy.unity)) // We only help slimes of the same color, if it's another slime calling for help. - ai_log("HelpRequested() by [buddy] but they are a [buddy.slime_color] while we are a [src.slime_color].",2) - return - if(buddy.target_mob) - if(!special_target_check(buddy.target_mob)) - ai_log("HelpRequested() by [buddy] but special_target_check() failed when passed [buddy.target_mob].",2) - return - ..() - - -/mob/living/simple_animal/slime/handle_resist() - if(buckled && victim && isliving(buckled) && victim == buckled) // If it's buckled to a living thing it's probably eating it. - return - else - ..() diff --git a/code/modules/mob/living/simple_animal/slime/combat.dm b/code/modules/mob/living/simple_animal/slime/combat.dm deleted file mode 100644 index d13e81cd30..0000000000 --- a/code/modules/mob/living/simple_animal/slime/combat.dm +++ /dev/null @@ -1,277 +0,0 @@ - - -/* -// Check target_mob if worthy of attack -/mob/living/simple_animal/slime/SA_attackable(target_mob) - ai_log("SA_attackable([target_mob])",3) - if(isliving(target_mob)) - var/mob/living/L = target_mob - if(L.stat == DEAD) - if(can_consume(L)) // If we can eat them, then it doesn't matter if they're dead. - return TRUE - ..() -*/ - -/mob/living/simple_animal/slime/PunchTarget() - if(victim) - return // Already eatting someone. - if(!client) // AI controlled. - if( (!target_mob.lying && prob(60 + (power_charge * 4) ) || (!target_mob.lying && optimal_combat) )) // "Smart" slimes always stun first. - a_intent = I_DISARM // Stun them first. - else if(can_consume(target_mob) && target_mob.lying) - a_intent = I_GRAB // Then eat them. - else - a_intent = I_HURT // Otherwise robust them. - ai_log("PunchTarget() will [a_intent] [target_mob]",2) - ..() - -/mob/living/simple_animal/slime/proc/can_consume(var/mob/living/L) - if(!L || !istype(L)) - to_chat(src, "This subject is incomparable...") - return FALSE - if(L.isSynthetic()) - to_chat(src, "This subject is not biological...") - return FALSE - if(L.getarmor(null, "bio") >= 75) - to_chat(src, "I cannot reach this subject's biological matter...") - return FALSE - if(istype(L, /mob/living/simple_animal/slime)) - to_chat(src, "I cannot feed on other slimes...") - return FALSE - if(!Adjacent(L)) - to_chat(src, "This subject is too far away...") - return FALSE - if(istype(L, /mob/living/carbon) && L.getCloneLoss() >= L.getMaxHealth() * 1.5 || istype(L, /mob/living/simple_animal) && L.stat == DEAD) - to_chat(src, "This subject does not have an edible life energy...") - return FALSE - if(L.has_buckled_mobs()) - for(var/A in L.buckled_mobs) - if(istype(A, /mob/living/simple_animal/slime)) - if(A != src) - to_chat(src, "\The [A] is already feeding on this subject...") - return FALSE - return TRUE - -/mob/living/simple_animal/slime/proc/start_consuming(var/mob/living/L) - if(!can_consume(L)) - return - if(!Adjacent(L)) - return - step_towards(src, L) // Get on top of them to feed. - if(loc != L.loc) - return - if(L.buckle_mob(src, forced = TRUE)) - victim = L - update_icon() - victim.visible_message("\The [src] latches onto [victim]!", - "\The [src] latches onto you!") - -/mob/living/simple_animal/slime/proc/stop_consumption() - if(!victim) - return - victim.unbuckle_mob() - victim.visible_message("\The [src] slides off of [victim]!", - "\The [src] slides off of you!") - victim = null - update_icon() - - -/mob/living/simple_animal/slime/proc/handle_consumption() - if(victim && can_consume(victim) && !stat) - - var/armor_modifier = abs((victim.getarmor(null, "bio") / 100) - 1) - if(istype(victim, /mob/living/carbon)) - victim.adjustCloneLoss(rand(5,6) * armor_modifier) - victim.adjustToxLoss(rand(1,2) * armor_modifier) - if(victim.health <= 0) - victim.adjustToxLoss(rand(2,4) * armor_modifier) - - else if(istype(victim, /mob/living/simple_animal)) - victim.adjustBruteLoss(is_adult ? rand(7, 15) : rand(4, 12)) - - else - to_chat(src, "[pick("This subject is incompatable", \ - "This subject does not have a life energy", "This subject is empty", "I am not satisified", \ - "I can not feed from this subject", "I do not feel nourished", "This subject is not food")]...") - stop_consumption() - - adjust_nutrition(50 * armor_modifier) - - adjustOxyLoss(-10 * armor_modifier) //Heal yourself - adjustBruteLoss(-10 * armor_modifier) - adjustFireLoss(-10 * armor_modifier) - adjustCloneLoss(-10 * armor_modifier) - updatehealth() - if(victim) - victim.updatehealth() - else - stop_consumption() - -/mob/living/simple_animal/slime/DoPunch(var/mob/living/L) - if(!Adjacent(L)) // Might've moved away in the meantime. - return - - if(istype(L)) - - if(ishuman(L)) - var/mob/living/carbon/human/H = L - // Slime attacks can be blocked with shields. - if(H.check_shields(damage = 0, damage_source = null, attacker = src, def_zone = null, attack_text = "the attack")) - return - - switch(a_intent) - if(I_HELP) - ai_log("DoPunch() against [L], helping.",2) - L.visible_message("[src] gently pokes [L]!", - "[src] gently pokes you!") - do_attack_animation(L) - post_attack(L, a_intent) - - if(I_DISARM) - ai_log("DoPunch() against [L], disarming.",2) - var/stun_power = between(0, power_charge + rand(0, 3), 10) - - if(ishuman(L)) - var/mob/living/carbon/human/H = L - stun_power *= max(H.species.siemens_coefficient,0) - - - if(prob(stun_power * 10)) - power_charge = max(0, power_charge - 3) - L.visible_message("[src] has shocked [L]!", "[src] has shocked you!") - playsound(src, 'sound/weapons/Egloves.ogg', 75, 1) - L.Weaken(4) - L.Stun(4) - do_attack_animation(L) - if(L.buckled) - L.buckled.unbuckle_mob() // To prevent an exploit where being buckled prevents slimes from jumping on you. - L.stuttering = max(L.stuttering, stun_power) - - var/datum/effect/effect/system/spark_spread/s = new /datum/effect/effect/system/spark_spread - s.set_up(5, 1, L) - s.start() - - if(prob(stun_power * 10) && stun_power >= 8) - L.adjustFireLoss(power_charge * rand(1, 2)) - post_attack(L, a_intent) - - else if(prob(40)) - L.visible_message("[src] has pounced at [L]!", "[src] has pounced at you!") - playsound(src, 'sound/weapons/thudswoosh.ogg', 75, 1) - L.Weaken(2) - do_attack_animation(L) - if(L.buckled) - L.buckled.unbuckle_mob() // To prevent an exploit where being buckled prevents slimes from jumping on you. - post_attack(L, a_intent) - else - L.visible_message("[src] has tried to pounce at [L]!", "[src] has tried to pounce at you!") - playsound(src, 'sound/weapons/punchmiss.ogg', 75, 1) - do_attack_animation(L) - L.updatehealth() - return L - - if(I_GRAB) - ai_log("DoPunch() against [L], grabbing.",2) - start_consuming(L) - post_attack(L, a_intent) - - if(I_HURT) - ai_log("DoPunch() against [L], hurting.",2) - var/damage_to_do = rand(melee_damage_lower, melee_damage_upper) - var/armor_modifier = abs((L.getarmor(null, "bio") / 100) - 1) - - L.attack_generic(src, damage_to_do, pick(attacktext)) - playsound(src, 'sound/weapons/bite.ogg', 75, 1) - - // Give the slime some nutrition, if applicable. - if(!L.isSynthetic()) - if(ishuman(L)) - if(L.getCloneLoss() < L.getMaxHealth() * 1.5) - adjust_nutrition(damage_to_do * armor_modifier) - - else if(istype(L, /mob/living/simple_animal)) - if(!isslime(L)) - var/mob/living/simple_animal/SA = L - if(!SA.stat) - adjust_nutrition(damage_to_do) - - post_attack(L, a_intent) - - if(istype(L,/obj/mecha)) - var/obj/mecha/M = L - M.attack_generic(src, rand(melee_damage_lower, melee_damage_upper), pick(attacktext)) - -/mob/living/simple_animal/slime/proc/post_attack(var/mob/living/L, var/intent = I_HURT) - if(intent != I_HELP) - if(L.reagents && L.can_inject() && reagent_injected) - L.reagents.add_reagent(reagent_injected, injection_amount) - -/mob/living/simple_animal/slime/attackby(obj/item/W, mob/user) - if(istype(W, /obj/item/clothing/head)) // Handle hat simulator. - give_hat(W, user) - return - - // Otherwise they're probably fighting the slime. - if(prob(25)) - visible_message("\The [user]'s [W] passes right through [src]!") - user.setClickCooldown(user.get_attack_speed(W)) - return - ..() - -/mob/living/simple_animal/slime/hit_with_weapon(obj/item/O, mob/living/user, var/effective_force, var/hit_zone) - ..() - if(!stat) - if(O.force > 0 && discipline && !rabid) // wow, buddy, why am I getting attacked?? - adjust_discipline(1) - return - if(O.force >= 3) - if(victim || target_mob) // We've been a bad slime. - if(is_adult) - if(prob(5 + round(O.force / 2)) ) - if(prob(80) && !client) - adjust_discipline(2) - if(user) - step_away(src, user) - else - if(prob(10 + O.force * 2)) - if(prob(80) && !client) - adjust_discipline(2) - if(user) - step_away(src, user) - else - if(user in friends) // Friend attacking us for no reason. - if(prob(25)) - friends -= user - say("[user]... not friend...") - -/mob/living/simple_animal/slime/attack_hand(mob/living/carbon/human/M as mob) - if(victim) // Are we eating someone? - var/fail_odds = 30 - if(victim == M) // Harder to get the slime off if its eating you right now. - fail_odds = 60 - - if(prob(fail_odds)) - visible_message("[M] attempts to wrestle \the [name] off!") - playsound(loc, 'sound/weapons/punchmiss.ogg', 25, 1, -1) - - else - visible_message(" [M] manages to wrestle \the [name] off!") - playsound(loc, 'sound/weapons/thudswoosh.ogg', 50, 1, -1) - - if(prob(40) && !client) - adjust_discipline(1) - stop_consumption() - step_away(src,M) - else - if(M.a_intent == I_HELP) - if(hat) - remove_hat(M) - else - ..() - else - ..() - -// Shocked grilles don't hurt slimes, and in fact give them charge. -/mob/living/simple_animal/slime/electrocute_act(var/shock_damage, var/obj/source, var/siemens_coeff = 1.0, var/def_zone = null) - power_charge = between(0, power_charge + round(shock_damage / 10), 10) - to_chat(src, "\The [source] shocks you, and it charges you.") diff --git a/code/modules/mob/living/simple_animal/slime/death.dm b/code/modules/mob/living/simple_animal/slime/death.dm deleted file mode 100644 index 622b12a859..0000000000 --- a/code/modules/mob/living/simple_animal/slime/death.dm +++ /dev/null @@ -1,27 +0,0 @@ -/mob/living/simple_animal/slime/death(gibbed) - - if(stat == DEAD) - return - - if(!gibbed && is_adult) - var/death_type = type_on_death - if(!death_type) - death_type = src.type - var/mob/living/simple_animal/slime/S = make_new_slime(death_type) - S.rabid = TRUE - step_away(S, src) - is_adult = FALSE - maxHealth = initial(maxHealth) - revive() - if(!client) - rabid = TRUE - number = rand(1, 1000) - update_name() - return - - stop_consumption() - . = ..(gibbed, "stops moving and partially dissolves...") - - update_icon() - - return \ No newline at end of file diff --git a/code/modules/mob/living/simple_animal/slime/life.dm b/code/modules/mob/living/simple_animal/slime/life.dm deleted file mode 100644 index 691b880574..0000000000 --- a/code/modules/mob/living/simple_animal/slime/life.dm +++ /dev/null @@ -1,183 +0,0 @@ -/mob/living/simple_animal/slime/proc/adjust_nutrition(input) - nutrition = between(0, nutrition + input, get_max_nutrition()) - - if(input > 0) - if(prob(input * 2)) // Gain around one level per 50 nutrition - power_charge = min(power_charge++, 10) - if(power_charge == 10) - adjustToxLoss(-10) - - -/mob/living/simple_animal/slime/proc/get_max_nutrition() // Can't go above it - if(is_adult) - return 1200 - return 1000 - -/mob/living/simple_animal/slime/proc/get_grow_nutrition() // Above it we grow, below it we can eat - if(is_adult) - return 1000 - return 800 - -/mob/living/simple_animal/slime/proc/get_hunger_nutrition() // Below it we will always eat - if(is_adult) - return 600 - return 500 - -/mob/living/simple_animal/slime/proc/get_starve_nutrition() // Below it we will eat before everything else - if(is_adult) - return 300 - return 200 - -/mob/living/simple_animal/slime/proc/handle_nutrition() - if(docile) - return - if(prob(15)) - adjust_nutrition(-1 - is_adult) - - if(nutrition <= get_starve_nutrition()) - handle_starvation() - - else if(nutrition >= get_grow_nutrition() && amount_grown < 10) - adjust_nutrition(-20) - amount_grown = between(0, amount_grown + 1, 10) - -/mob/living/simple_animal/slime/proc/handle_starvation() - if(nutrition < get_starve_nutrition() && !client) // if a slime is starving, it starts losing its friends - if(friends.len && prob(1)) - var/mob/nofriend = pick(friends) - if(nofriend) - friends -= nofriend - say("[nofriend]... food now...") - - if(nutrition <= 0) - adjustToxLoss(rand(1,3)) - if(client && prob(5)) - to_chat(src, "You are starving!") - -/mob/living/simple_animal/slime/proc/handle_discipline() - if(discipline > 0) - update_mood() - // if(discipline >= 5 && rabid) - // if(prob(60)) - // rabid = 0 - // adjust_discipline(1) // So it stops trying to murder everyone. - - // Handle discipline decay. - if(!prob(75 + (obedience * 5))) - adjust_discipline(-1) - if(!discipline) - update_mood() - -/mob/living/simple_animal/slime/handle_regular_status_updates() - if(stat != DEAD) - handle_nutrition() - - handle_discipline() - - if(prob(30)) - adjustOxyLoss(-1) - adjustToxLoss(-1) - adjustFireLoss(-1) - adjustCloneLoss(-1) - adjustBruteLoss(-1) - - if(victim) - handle_consumption() - - if(amount_grown >= 10 && !target_mob && !client) - if(is_adult) - reproduce() - else - evolve() - - handle_stuttering() - - ..() - - -// This is to make slime responses feel a bit more natural and not instant. -/mob/living/simple_animal/slime/proc/delayed_say(var/message, var/mob/target) - spawn(rand(1 SECOND, 2 SECONDS)) - if(target) - face_atom(target) - say(message) - -//Commands, reactions, etc -/mob/living/simple_animal/slime/hear_say(var/message, var/verb = "says", var/datum/language/language = null, var/alt_name = "", var/italics = 0, var/mob/speaker = null, var/sound/speech_sound, var/sound_vol) - ..() - if((findtext(message, num2text(number)) || findtext(message, name) || findtext(message, "slimes"))) // Talking to us - - // First make sure it's not just another slime repeating things. - if(istype(speaker, /mob/living/simple_animal/slime)) - if(!speaker.client) - return - - //Are all slimes being referred to? - var/mass_order = 0 - if(findtext(message, "slimes")) - mass_order = 1 - - // Say hello back. - if(findtext(message, "hello") || findtext(message, "hi") || findtext(message, "greetings")) - delayed_say(pick("Hello...", "Hi..."), speaker) - - // Follow request. - if(findtext(message, "follow") || findtext(message, "come with me")) - if(!can_command(speaker)) - delayed_say(pick("No...", "I won't follow..."), speaker) - return - - delayed_say("Yes... I follow \the [speaker]...", speaker) - set_follow(speaker) - FollowTarget() - - // Stop request. - if(findtext(message, "stop") || findtext(message, "halt") || findtext(message, "cease")) - if(victim) // We're being asked to stop eatting someone. - if(!can_command(speaker)) - delayed_say("No...", speaker) - return - else - delayed_say("Fine...", speaker) - stop_consumption() - adjust_discipline(1, TRUE) - - if(target_mob) // We're being asked to stop chasing someone. - if(!can_command(speaker)) - delayed_say("No...", speaker) - return - else - delayed_say("Fine...", speaker) - LoseTarget() - adjust_discipline(1, TRUE) - - if(follow_mob) // We're being asked to stop following someone. - if(can_command(speaker) == SLIME_COMMAND_FRIEND || follow_mob == speaker) - delayed_say("Yes... I'll stop...", speaker) - LoseFollow() - else - delayed_say("No... I'll keep following \the [follow_mob]...", speaker) - - // Murder request - if(findtext(message, "harm") || findtext(message, "kill") || findtext(message, "murder") || findtext(message, "eat") || findtext(message, "consume")) - if(can_command(speaker) < SLIME_COMMAND_FACTION) - delayed_say("No...", speaker) - return - - for(var/mob/living/L in view(7, src) - list(src, speaker)) - if(L == src) - continue // Don't target ourselves. - var/list/valid_names = splittext(L.name, " ") // Should output list("John", "Doe") as an example. - for(var/line in valid_names) // Check each part of someone's name. - if(findtext(message, lowertext(line))) // If part of someone's name is in the command, the slime targets them if allowed to. - if(!(mass_order && line == "slime")) //don't think random other slimes are target - if(special_target_check(L)) - delayed_say("Okay... I attack \the [L]...", speaker) - LoseFollow() - set_target(L, 1) - return - else - delayed_say("No... I won't attack \the [L].", speaker) - return - // If we're here, it couldn't find anyone with that name. - delayed_say("No... I don't know who to attack...", speaker) diff --git a/code/modules/mob/living/simple_animal/slime/slime.dm b/code/modules/mob/living/simple_animal/slime/slime.dm deleted file mode 100644 index 843990c7f6..0000000000 --- a/code/modules/mob/living/simple_animal/slime/slime.dm +++ /dev/null @@ -1,470 +0,0 @@ -/mob/living/simple_animal/slime - name = "slime" - desc = "The most basic of slimes. The grey slime has no remarkable qualities, however it remains one of the most useful colors for scientists." - tt_desc = "A Macrolimbus vulgaris" - icon = 'icons/mob/slime2.dmi' - icon_state = "grey baby slime" - intelligence_level = SA_ANIMAL - pass_flags = PASSTABLE - var/shiny = FALSE // If true, will add a 'shiny' overlay. - var/glows = FALSE // If true, will glow in the same color as the color var. - var/icon_state_override = null // Used for special slime appearances like the rainbow slime. - pass_flags = PASSTABLE - - makes_dirt = FALSE // Goop - - speak_emote = list("chirps") - - maxHealth = 150 - var/maxHealth_adult = 200 - melee_damage_lower = 5 - melee_damage_upper = 25 - melee_miss_chance = 0 - gender = NEUTER - - // Atmos stuff. - minbodytemp = T0C-30 - heat_damage_per_tick = 0 - cold_damage_per_tick = 40 - - min_oxy = 0 - max_oxy = 0 - min_tox = 0 - max_tox = 0 - min_co2 = 0 - max_co2 = 0 - min_n2 = 0 - max_n2 = 0 - unsuitable_atoms_damage = 0 - - response_help = "pets" - - speak = list( - "Blorp...", - "Blop..." - - ) - emote_hear = list( - - ) - emote_see = list( - "bounces", - "jiggles", - "sways" - ) - - hostile = 1 - retaliate = 1 - attack_same = 1 - cooperative = 1 - faction = "slime" // Slimes will help other slimes, provided they share the same color. - - color = "#CACACA" - var/is_adult = FALSE - var/cores = 1 // How many cores you get when placed in a Processor. - var/power_charge = 0 // 0-10 controls how much electricity they are generating. High numbers encourage the slime to stun someone with electricity. - var/amount_grown = 0 // controls how long the slime has been overfed, if 10, grows or reproduces - var/number = 0 // This is used to make the slime semi-unique for indentification. - - var/mob/living/victim = null // the person the slime is currently feeding on - var/rabid = FALSE // If true, will attack anyone and everyone. - var/docile = FALSE // Basically the opposite of above. If true, will never harm anything and won't get hungry. - var/discipline = 0 // Beating slimes makes them less likely to lash out. In theory. - var/resentment = 0 // 'Unjustified' beatings make this go up, and makes it more likely for abused slimes to go berserk. - var/obedience = 0 // Conversely, 'justified' beatings make this go up, and makes discipline decay slowly, potentially making it not decay at all. - var/unity = FALSE // If true, slimes will consider other colors as their own. Other slimes will see this slime as the same color as well. A rainbow slime is required to get this. - var/optimal_combat = FALSE // Used to dumb down the combat AI somewhat. If true, the slime tends to be really dangerous to fight alone due to stunlocking. - var/mood = ":3" // Icon to use to display 'mood'. - var/obj/item/clothing/head/hat = null // The hat the slime may be wearing. - - var/slime_color = "grey" - var/mutation_chance = 25 // Odds of spawning as a new color when reproducing. Can be modified by certain xenobio products. Carried across generations of slimes. - var/coretype = /obj/item/slime_extract/grey - // List of potential slime color mutations. This must have exactly four types. - var/list/slime_mutation = list( - /mob/living/simple_animal/slime/orange, - /mob/living/simple_animal/slime/metal, - /mob/living/simple_animal/slime/blue, - /mob/living/simple_animal/slime/purple - ) - var/type_on_death = null // Set this if you want dying slimes to split into a specific type and not their type. - var/rainbow_core_candidate = TRUE // If false, rainbow cores cannot make this type randomly. - - var/reagent_injected = null // Some slimes inject reagents on attack. This tells the game what reagent to use. - var/injection_amount = 5 // This determines how much. - - - can_enter_vent_with = list( - /obj/item/clothing/head, - ) - -/mob/living/simple_animal/slime/New(var/location, var/start_as_adult = FALSE) - verbs += /mob/living/proc/ventcrawl - if(start_as_adult) - make_adult() - health = maxHealth -// slime_mutation = mutation_table(slime_color) - update_icon() - number = rand(1, 1000) - update_name() - ..(location) - -/mob/living/simple_animal/slime/Destroy() - if(hat) - drop_hat() - return ..() - -/mob/living/simple_animal/slime/proc/make_adult() - if(is_adult) - return - - is_adult = TRUE - melee_damage_lower = 20 - melee_damage_upper = 40 - maxHealth = maxHealth_adult - amount_grown = 0 - update_icon() - update_name() - -/mob/living/simple_animal/slime/proc/update_name() - if(docile) // Docile slimes are generally named, so we shouldn't mess with it. - return - name = "[slime_color] [is_adult ? "adult" : "baby"] [initial(name)] ([number])" - real_name = name - -/mob/living/simple_animal/slime/update_icon() - if(stat == DEAD) - icon_state = "[icon_state_override ? "[icon_state_override] slime" : "slime"] [is_adult ? "adult" : "baby"] dead" - set_light(0) - else - if(incapacitated(INCAPACITATION_DISABLED)) - icon_state = "[icon_state_override ? "[icon_state_override] slime" : "slime"] [is_adult ? "adult" : "baby"] dead" - else - icon_state = "[icon_state_override ? "[icon_state_override] slime" : "slime"] [is_adult ? "adult" : "baby"][victim ? " eating":""]" - - overlays.Cut() - if(stat != DEAD) - var/image/I = image(icon, src, "slime light") - I.appearance_flags = RESET_COLOR - overlays += I - - if(shiny) - I = image(icon, src, "slime shiny") - I.appearance_flags = RESET_COLOR - overlays += I - - I = image(icon, src, "aslime-[mood]") - I.appearance_flags = RESET_COLOR - overlays += I - - if(glows) - set_light(3, 2, color) - - if(hat) - var/hat_state = hat.item_state ? hat.item_state : hat.icon_state - var/image/I = image('icons/mob/head.dmi', src, hat_state) - I.pixel_y = -7 // Slimes are small. - I.appearance_flags = RESET_COLOR - overlays += I - - if(modifier_overlay) // Restore our modifier overlay. - overlays += modifier_overlay - -/mob/living/simple_animal/slime/proc/update_mood() - var/old_mood = mood - if(incapacitated(INCAPACITATION_DISABLED)) - mood = "sad" - else if(rabid) - mood = "angry" - else if(target_mob) - mood = "mischevous" - else if(discipline) - mood = "pout" - else if(docile) - mood = ":33" - else - mood = ":3" - if(old_mood != mood) - update_icon() - -// Makes the slime very angry and dangerous. -/mob/living/simple_animal/slime/proc/enrage() - if(docile) - return - rabid = TRUE - update_mood() - visible_message("\The [src] enrages!") - -// Makes the slime safe and harmless. -/mob/living/simple_animal/slime/proc/pacify() - rabid = FALSE - docile = TRUE - hostile = FALSE - retaliate = FALSE - cooperative = FALSE - - // If for whatever reason the mob AI decides to try to attack something anyways. - melee_damage_upper = 0 - melee_damage_lower = 0 - - update_mood() - -/mob/living/simple_animal/slime/proc/unify() - unity = TRUE - attack_same = FALSE - -/mob/living/simple_animal/slime/examine(mob/user) - ..() - if(hat) - to_chat(user, "It is wearing \a [hat].") - - if(stat == DEAD) - to_chat(user, "It appears to be dead.") - else if(incapacitated(INCAPACITATION_DISABLED)) - to_chat(user, "It appears to be incapacitated.") - else if(rabid) - to_chat(user, "It seems very, very angry and upset.") - else if(obedience >= 5) - to_chat(user, "It looks rather obedient.") - else if(discipline) - to_chat(user, "It has been subjugated by force, at least for now.") - else if(docile) - to_chat(user, "It appears to have been pacified.") - -/mob/living/simple_animal/slime/water_act(amount) // This is called if a slime enters a water tile. - adjustBruteLoss(40 * amount) - -/mob/living/simple_animal/slime/proc/adjust_discipline(amount, silent) - if(amount > 0) - if(!rabid) - var/justified = is_justified_to_discipline() - spawn(0) - stop_consumption() - LoseTarget() - if(!silent) - if(justified) - say(pick("Fine...", "Okay...", "Sorry...", "I yield...", "Mercy...")) - else - say(pick("Why...?", "I don't understand...?", "Cruel...", "Stop...", "Nooo...")) - if(justified) - obedience++ - else - if(prob(resentment * 20)) - enrage() // Pushed the slime too far. - say(pick("Evil...", "Kill...", "Tyrant...")) - resentment++ // Done after check so first time will never enrage. - - discipline = between(0, discipline + amount, 10) - -/mob/living/simple_animal/slime/movement_delay() - if(bodytemperature >= 330.23) // 135 F or 57.08 C - return -1 // slimes become supercharged at high temperatures - - . = ..() - - var/health_deficiency = (maxHealth - health) - if(health_deficiency >= 45) - . += (health_deficiency / 25) - - if(bodytemperature < 183.222) - . += (283.222 - bodytemperature) / 10 * 1.75 - - . += config.slime_delay - -/mob/living/simple_animal/slime/Process_Spacemove() - return 2 - -/mob/living/simple_animal/slime/verb/evolve() - set category = "Slime" - set desc = "This will let you evolve from baby to adult slime." - - if(stat) - to_chat(src, "I must be conscious to do this...") - return - - if(docile) - to_chat(src, "I have been pacified. I cannot evolve...") - return - - if(!is_adult) - if(amount_grown >= 10) - make_adult() - else - to_chat(src, "I am not ready to evolve yet...") - else - to_chat(src, "I have already evolved...") - -/mob/living/simple_animal/slime/verb/reproduce() - set category = "Slime" - set desc = "This will make you split into four Slimes." - - if(stat) - to_chat(src, "I must be conscious to do this...") - return - - if(docile) - to_chat(src, "I have been pacified. I cannot reproduce...") - return - - if(is_adult) - if(amount_grown >= 10) - // Check if there's enough 'room' to split. - var/list/nearby_things = orange(1, src) - var/free_tiles = 0 - for(var/turf/T in nearby_things) - var/free = TRUE - if(T.density) // No walls. - continue - for(var/atom/movable/AM in T) - if(AM.density) - free = FALSE - break - - if(free) - free_tiles++ - - if(free_tiles < 3) // Three free tiles are needed, as four slimes are made and the 4th tile is from the center tile that the current slime occupies. - to_chat(src, "It is too cramped here to reproduce...") - return - - var/list/babies = list() - for(var/i = 1 to 4) - babies.Add(make_new_slime()) - - var/mob/living/simple_animal/slime/new_slime = pick(babies) - new_slime.universal_speak = universal_speak - if(src.mind) - src.mind.transfer_to(new_slime) - else - new_slime.key = src.key - qdel(src) - else - to_chat(src, "I am not ready to reproduce yet...") - else - to_chat(src, "I am not old enough to reproduce yet...") - -// Used for reproducing and dying. -/mob/living/simple_animal/slime/proc/make_new_slime(var/desired_type) - var/t = src.type - if(desired_type) - t = desired_type - if(prob(mutation_chance / 10)) - t = /mob/living/simple_animal/slime/rainbow - - else if(prob(mutation_chance) && slime_mutation.len) - t = slime_mutation[rand(1, slime_mutation.len)] - var/mob/living/simple_animal/slime/baby = new t(loc) - - // Handle 'inheriting' from parent slime. - baby.mutation_chance = mutation_chance - baby.power_charge = round(power_charge / 4) - baby.resentment = max(resentment - 1, 0) - if(!istype(baby, /mob/living/simple_animal/slime/light_pink)) - baby.discipline = max(discipline - 1, 0) - baby.obedience = max(obedience - 1, 0) - if(!istype(baby, /mob/living/simple_animal/slime/rainbow)) - baby.unity = unity - baby.faction = faction - baby.attack_same = attack_same - baby.friends = friends.Copy() - if(rabid) - baby.enrage() - - step_away(baby, src) - return baby - -/mob/living/simple_animal/slime/speech_bubble_appearance() - return "slime" - -// Called after they finish eatting someone. -/mob/living/simple_animal/slime/proc/befriend(var/mob/living/friend) - if(!(friend in friends)) - friends |= friend - say("[friend]... friend...") - -/mob/living/simple_animal/slime/proc/can_command(var/mob/living/commander) - if(rabid) - return FALSE - if(docile) - return SLIME_COMMAND_OBEY - if(commander in friends) - return SLIME_COMMAND_FRIEND - if(faction == commander.faction) - return SLIME_COMMAND_FACTION - if(discipline > resentment && obedience >= 5) - return SLIME_COMMAND_OBEY - return FALSE - -/mob/living/simple_animal/slime/proc/give_hat(var/obj/item/clothing/head/new_hat, var/mob/living/user) - if(!istype(new_hat)) - to_chat(user, "\The [new_hat] isn't a hat.") - return - if(hat) - to_chat(user, "\The [src] is already wearing \a [hat].") - return - else - user.drop_item(new_hat) - hat = new_hat - new_hat.forceMove(src) - to_chat(user, "You place \a [new_hat] on \the [src]. How adorable!") - update_icon() - return - -/mob/living/simple_animal/slime/proc/remove_hat(var/mob/living/user) - if(!hat) - to_chat(user, "\The [src] doesn't have a hat to remove.") - else - hat.forceMove(get_turf(src)) - user.put_in_hands(hat) - to_chat(user, "You take away \the [src]'s [hat.name]. How mean.") - hat = null - update_icon() - -/mob/living/simple_animal/slime/proc/drop_hat() - if(!hat) - return - hat.forceMove(get_turf(src)) - hat = null - update_icon() - -// Checks if disciplining the slime would be 'justified' right now. -/mob/living/simple_animal/slime/proc/is_justified_to_discipline() - if(rabid) - return TRUE - if(target_mob) - if(ishuman(target_mob)) - var/mob/living/carbon/human/H = target_mob - if(istype(H.species, /datum/species/monkey)) - return FALSE - return TRUE - return FALSE - - -/mob/living/simple_animal/slime/get_description_interaction() - var/list/results = list() - - if(!stat) - results += "[desc_panel_image("slimebaton")]to stun the slime, if it's being bad." - - results += ..() - - return results - -/mob/living/simple_animal/slime/get_description_info() - var/list/lines = list() - var/intro_line = "Slimes are generally the test subjects of Xenobiology, with different colors having different properties. \ - They can be extremely dangerous if not handled properly." - lines.Add(intro_line) - lines.Add(null) // To pad the line breaks. - - var/list/rewards = list() - for(var/potential_color in slime_mutation) - var/mob/living/simple_animal/slime/S = potential_color - rewards.Add(initial(S.slime_color)) - var/reward_line = "This color of slime can mutate into [english_list(rewards)] colors, when it reproduces. It will do so when it has eatten enough." - lines.Add(reward_line) - lines.Add(null) - - lines.Add(description_info) - return lines.Join("\n") - diff --git a/code/modules/mob/living/simple_animal/slime/subtypes.dm b/code/modules/mob/living/simple_animal/slime/subtypes.dm deleted file mode 100644 index d30bdf0d7d..0000000000 --- a/code/modules/mob/living/simple_animal/slime/subtypes.dm +++ /dev/null @@ -1,747 +0,0 @@ -// Tier 1 - -/mob/living/simple_animal/slime/purple - desc = "This slime is rather toxic to handle, as it is poisonous." - color = "#CC23FF" - slime_color = "purple" - coretype = /obj/item/slime_extract/purple - reagent_injected = "toxin" - - description_info = "This slime spreads a toxin when it attacks. A biosuit or other thick armor can protect from the toxic attack." - - slime_mutation = list( - /mob/living/simple_animal/slime/dark_purple, - /mob/living/simple_animal/slime/dark_blue, - /mob/living/simple_animal/slime/green, - /mob/living/simple_animal/slime - ) - - -/mob/living/simple_animal/slime/orange - desc = "This slime is known to be flammable and can ignite enemies." - color = "#FFA723" - slime_color = "orange" - coretype = /obj/item/slime_extract/orange - - description_info = "Attacks from this slime can ignite you. A firesuit can protect from the burning attacks of this slime." - - slime_mutation = list( - /mob/living/simple_animal/slime/dark_purple, - /mob/living/simple_animal/slime/yellow, - /mob/living/simple_animal/slime/red, - /mob/living/simple_animal/slime - ) - -/mob/living/simple_animal/slime/orange/post_attack(mob/living/L, intent) - if(intent != I_HELP) - L.adjust_fire_stacks(1) - if(prob(25)) - L.IgniteMob() - ..() - -/mob/living/simple_animal/slime/blue - desc = "This slime produces 'cryotoxin' and uses it against their foes. Very deadly to other slimes." - color = "#19FFFF" - slime_color = "blue" - coretype = /obj/item/slime_extract/blue - reagent_injected = "cryotoxin" - - description_info = "Attacks from this slime can chill you. A biosuit or other thick armor can protect from the chilling attack." - - slime_mutation = list( - /mob/living/simple_animal/slime/dark_blue, - /mob/living/simple_animal/slime/silver, - /mob/living/simple_animal/slime/pink, - /mob/living/simple_animal/slime - ) - - -/mob/living/simple_animal/slime/metal - desc = "This slime is a lot more resilient than the others, due to having a metamorphic metallic and sloped surface." - color = "#5F5F5F" - slime_color = "metal" - shiny = 1 - coretype = /obj/item/slime_extract/metal - - description_info = "This slime is a lot more durable and tough to damage than the others." - - resistance = 10 // Sloped armor is strong. - maxHealth = 250 - maxHealth_adult = 350 - - slime_mutation = list( - /mob/living/simple_animal/slime/silver, - /mob/living/simple_animal/slime/yellow, - /mob/living/simple_animal/slime/gold, - /mob/living/simple_animal/slime - ) - -// Tier 2 - -/mob/living/simple_animal/slime/yellow - desc = "This slime is very conductive, and is known to use electricity as a means of defense moreso than usual for slimes." - color = "#FFF423" - slime_color = "yellow" - coretype = /obj/item/slime_extract/yellow - - ranged = 1 - shoot_range = 3 - firing_lines = 1 - projectiletype = /obj/item/projectile/beam/lightning/slime - projectilesound = 'sound/weapons/gauss_shoot.ogg' // Closest thing to a 'thunderstrike' sound we have. - glows = TRUE - - description_info = "This slime will fire lightning attacks at enemies if they are at range, and generate electricity \ - for their stun attack faster than usual. Insulative or reflective armor can protect from the lightning." - - slime_mutation = list( - /mob/living/simple_animal/slime/bluespace, - /mob/living/simple_animal/slime/bluespace, - /mob/living/simple_animal/slime/metal, - /mob/living/simple_animal/slime/orange - ) - -/mob/living/simple_animal/slime/yellow/handle_regular_status_updates() - if(stat == CONSCIOUS) - if(prob(25)) - power_charge = between(0, power_charge + 1, 10) - ..() - -/obj/item/projectile/beam/lightning/slime - power = 15 - -/mob/living/simple_animal/slime/yellow/ClosestDistance() // Needed or else they won't eat monkeys outside of melee range. - if(target_mob && ishuman(target_mob)) - var/mob/living/carbon/human/H = target_mob - if(istype(H.species, /datum/species/monkey)) - return 1 - return ..() - - -/mob/living/simple_animal/slime/dark_purple - desc = "This slime produces ever-coveted phoron. Risky to handle but very much worth it." - color = "#660088" - slime_color = "dark purple" - coretype = /obj/item/slime_extract/dark_purple - reagent_injected = "phoron" - - description_info = "This slime applies phoron to enemies it attacks. A biosuit or other thick armor can protect from the toxic attack. \ - If hit with a burning attack, it will erupt in flames." - - slime_mutation = list( - /mob/living/simple_animal/slime/purple, - /mob/living/simple_animal/slime/orange, - /mob/living/simple_animal/slime/ruby, - /mob/living/simple_animal/slime/ruby - ) - -/mob/living/simple_animal/slime/dark_purple/proc/ignite() - visible_message("\The [src] erupts in an inferno!") - for(var/turf/simulated/target_turf in view(2, src)) - target_turf.assume_gas("phoron", 30, 1500+T0C) - spawn(0) - target_turf.hotspot_expose(1500+T0C, 400) - qdel(src) - -/mob/living/simple_animal/slime/dark_purple/ex_act(severity) - log_and_message_admins("[src] ignited due to a chain reaction with an explosion.") - ignite() - -/mob/living/simple_animal/slime/dark_purple/fire_act(datum/gas_mixture/air, temperature, volume) - log_and_message_admins("[src] ignited due to exposure to fire.") - ignite() - -/mob/living/simple_animal/slime/dark_purple/bullet_act(var/obj/item/projectile/P, var/def_zone) - if(P.damage_type && P.damage_type == BURN && P.damage) // Most bullets won't trigger the explosion, as a mercy towards Security. - log_and_message_admins("[src] ignited due to bring hit by a burning projectile[P.firer ? " by [key_name(P.firer)]" : ""].") - ignite() - else - ..() - -/mob/living/simple_animal/slime/dark_purple/attackby(var/obj/item/weapon/W, var/mob/user) - if(istype(W) && W.force && W.damtype == BURN) - log_and_message_admins("[src] ignited due to being hit with a burning weapon ([W]) by [key_name(user)].") - ignite() - else - ..() - - - - -/mob/living/simple_animal/slime/dark_blue - desc = "This slime makes other entities near it feel much colder, and is more resilient to the cold. It tends to kill other slimes rather quickly." - color = "#2398FF" - glows = TRUE - slime_color = "dark blue" - coretype = /obj/item/slime_extract/dark_blue - - description_info = "This slime is immune to the cold, however water will still kill it. A winter coat or other cold-resistant clothing can protect from the chilling aura." - - slime_mutation = list( - /mob/living/simple_animal/slime/purple, - /mob/living/simple_animal/slime/blue, - /mob/living/simple_animal/slime/cerulean, - /mob/living/simple_animal/slime/cerulean - ) - - minbodytemp = 0 - cold_damage_per_tick = 0 - -/mob/living/simple_animal/slime/dark_blue/Life() - if(stat != DEAD) - cold_aura() - ..() - -/mob/living/simple_animal/slime/dark_blue/proc/cold_aura() - for(var/mob/living/L in view(2, src)) - var/protection = L.get_cold_protection() - - if(protection < 1) - var/cold_factor = abs(protection - 1) - var/delta = -20 - delta *= cold_factor - L.bodytemperature = max(50, L.bodytemperature + delta) - var/turf/T = get_turf(src) - var/datum/gas_mixture/env = T.return_air() - if(env) - env.add_thermal_energy(-10 * 1000) - -/mob/living/simple_animal/slime/dark_blue/get_cold_protection() - return 1 // This slime is immune to cold. - -// Surface variant -/mob/living/simple_animal/slime/dark_blue/feral - name = "feral slime" - desc = "The result of slimes escaping containment from some xenobiology lab. The slime makes other entities near it feel much colder, \ - and it is more resilient to the cold. These qualities have made this color of slime able to thrive on a harsh, cold world and is able to rival \ - the ferocity of other apex predators in this region of Sif. As such, it is a very invasive species." - description_info = "This slime makes other entities near it feel much colder, and is more resilient to the cold. It also has learned advanced combat tactics from \ - having to endure the harsh world outside its lab. Note that processing this large slime will give six cores." - icon_scale = 2 - optimal_combat = TRUE // Gotta be sharp to survive out there. - rabid = TRUE - rainbow_core_candidate = FALSE - cores = 6 - maxHealth = 150 - maxHealth_adult = 250 - type_on_death = /mob/living/simple_animal/slime/dark_blue // Otherwise infinite slimes might occur. - pixel_y = -10 // Since the base sprite isn't centered properly, the pixel auto-adjustment needs some help. - -/mob/living/simple_animal/slime/dark_blue/feral/New() - ..() - make_adult() - -/mob/living/simple_animal/slime/silver - desc = "This slime is shiny, and can deflect lasers or other energy weapons directed at it." - color = "#AAAAAA" - slime_color = "silver" - coretype = /obj/item/slime_extract/silver - shiny = TRUE - - description_info = "Tasers, including the slime version, are ineffective against this slime. The slimebation still works." - - slime_mutation = list( - /mob/living/simple_animal/slime/metal, - /mob/living/simple_animal/slime/blue, - /mob/living/simple_animal/slime/amber, - /mob/living/simple_animal/slime/amber - ) - -/mob/living/simple_animal/slime/silver/bullet_act(var/obj/item/projectile/P, var/def_zone) - if(istype(P,/obj/item/projectile/beam) || istype(P, /obj/item/projectile/energy)) - visible_message("\The [src] reflects \the [P]!") - - // Find a turf near or on the original location to bounce to - var/new_x = P.starting.x + pick(0, 0, 0, -1, 1, -2, 2) - var/new_y = P.starting.y + pick(0, 0, 0, -1, 1, -2, 2) - var/turf/curloc = get_turf(src) - - // redirect the projectile - P.redirect(new_x, new_y, curloc, src) - return PROJECTILE_CONTINUE // complete projectile permutation - else - ..() - - -// Tier 3 - -/mob/living/simple_animal/slime/bluespace - desc = "Trapping this slime in a cell is generally futile, as it can teleport at will." - color = null - slime_color = "bluespace" - icon_state_override = "bluespace" - coretype = /obj/item/slime_extract/bluespace - - description_info = "This slime will teleport to attack something if it is within a range of seven tiles. The teleport has a cooldown of five seconds." - - slime_mutation = list( - /mob/living/simple_animal/slime/bluespace, - /mob/living/simple_animal/slime/bluespace, - /mob/living/simple_animal/slime/yellow, - /mob/living/simple_animal/slime/yellow - ) - - spattack_prob = 100 - spattack_min_range = 3 - spattack_max_range = 7 - var/last_tele = null // Uses world.time - var/tele_cooldown = 5 SECONDS - -/mob/living/simple_animal/slime/bluespace/ClosestDistance() // Needed or the SA AI won't ever try to teleport. - if(world.time > last_tele + tele_cooldown) - return spattack_max_range - 1 - return ..() - -/mob/living/simple_animal/slime/bluespace/SpecialAtkTarget() - // Teleport attack. - if(!target_mob) - to_chat(src, "There's nothing to teleport to.") - return FALSE - - if(world.time < last_tele + tele_cooldown) - to_chat(src, "You can't teleport right now, wait a few seconds.") - return FALSE - - var/list/nearby_things = range(1, target_mob) - var/list/valid_turfs = list() - - // All this work to just go to a non-dense tile. - for(var/turf/potential_turf in nearby_things) - var/valid_turf = TRUE - if(potential_turf.density) - continue - for(var/atom/movable/AM in potential_turf) - if(AM.density) - valid_turf = FALSE - if(valid_turf) - valid_turfs.Add(potential_turf) - - - - var/turf/T = get_turf(src) - var/turf/target_turf = pick(valid_turfs) - - if(!target_turf) - to_chat(src, "There wasn't an unoccupied spot to teleport to.") - return FALSE - - var/datum/effect/effect/system/spark_spread/s1 = new /datum/effect/effect/system/spark_spread - s1.set_up(5, 1, T) - var/datum/effect/effect/system/spark_spread/s2 = new /datum/effect/effect/system/spark_spread - s2.set_up(5, 1, target_turf) - - - T.visible_message("\The [src] vanishes!") - s1.start() - - forceMove(target_turf) - playsound(target_turf, 'sound/effects/phasein.ogg', 50, 1) - to_chat(src, "You teleport to \the [target_turf].") - - target_turf.visible_message("\The [src] appears!") - s2.start() - - last_tele = world.time - - if(Adjacent(target_mob)) - PunchTarget() - return TRUE - -/mob/living/simple_animal/slime/ruby - desc = "This slime has great physical strength." - color = "#FF3333" - slime_color = "ruby" - shiny = TRUE - glows = TRUE - coretype = /obj/item/slime_extract/ruby - - description_info = "This slime is unnaturally stronger, allowing it to hit much harder, take less damage, and be stunned for less time. \ - Their glomp attacks also send the victim flying." - - slime_mutation = list( - /mob/living/simple_animal/slime/dark_purple, - /mob/living/simple_animal/slime/dark_purple, - /mob/living/simple_animal/slime/ruby, - /mob/living/simple_animal/slime/ruby - ) - -/mob/living/simple_animal/slime/ruby/New() - ..() - add_modifier(/datum/modifier/slime_strength, null, src) // Slime is always swole. - -/mob/living/simple_animal/slime/ruby/DoPunch(var/mob/living/L) - ..() // Do regular attacks. - - if(istype(L)) - if(a_intent == I_HURT) - visible_message("\The [src] sends \the [L] flying with the impact!") - playsound(src, "punch", 50, 1) - L.Weaken(1) - var/throwdir = get_dir(src, L) - L.throw_at(get_edge_target_turf(L, throwdir), 3, 1, src) - - -/mob/living/simple_animal/slime/amber - desc = "This slime seems to be an expert in the culinary arts, as they create their own food to share with others. \ - They would probably be very important to other slimes, if the other colors didn't try to kill them." - color = "#FFBB00" - slime_color = "amber" - shiny = TRUE - glows = TRUE - coretype = /obj/item/slime_extract/amber - - description_info = "This slime feeds nearby entities passively while it is alive. This can cause uncontrollable \ - slime growth and reproduction if not kept in check. The amber slime cannot feed itself, but can be fed by other amber slimes." - - slime_mutation = list( - /mob/living/simple_animal/slime/silver, - /mob/living/simple_animal/slime/silver, - /mob/living/simple_animal/slime/amber, - /mob/living/simple_animal/slime/amber - ) - -/mob/living/simple_animal/slime/amber/Life() - if(stat != DEAD) - feed_aura() - ..() - -/mob/living/simple_animal/slime/amber/proc/feed_aura() - for(var/mob/living/L in view(2, src)) - if(L == src) // Don't feed themselves, or it is impossible to stop infinite slimes without killing all of the ambers. - continue - if(isslime(L)) - var/mob/living/simple_animal/slime/S = L - S.adjust_nutrition(rand(15, 25)) - if(ishuman(L)) - var/mob/living/carbon/human/H = L - if(H.isSynthetic()) - continue - H.nutrition = between(0, H.nutrition + rand(15, 25), 600) - - - -/mob/living/simple_animal/slime/cerulean - desc = "This slime is generally superior in a wide range of attributes, compared to the common slime. The jack of all trades, but master of none." - color = "#4F7EAA" - slime_color = "cerulean" - coretype = /obj/item/slime_extract/cerulean - - // Less than the specialized slimes, but higher than the rest. - maxHealth = 200 - maxHealth_adult = 250 - - melee_damage_lower = 10 - melee_damage_upper = 30 - - move_to_delay = 3 - - - - slime_mutation = list( - /mob/living/simple_animal/slime/dark_blue, - /mob/living/simple_animal/slime/dark_blue, - /mob/living/simple_animal/slime/cerulean, - /mob/living/simple_animal/slime/cerulean - ) - -// Tier 4 - -/mob/living/simple_animal/slime/red - desc = "This slime is full of energy, and very aggressive. 'The red ones go faster.' seems to apply here." - color = "#FF3333" - slime_color = "red" - coretype = /obj/item/slime_extract/red - move_to_delay = 3 // The red ones go faster. - - description_info = "This slime is faster than the others. Attempting to discipline this slime will always cause it to go berserk." - - slime_mutation = list( - /mob/living/simple_animal/slime/red, - /mob/living/simple_animal/slime/oil, - /mob/living/simple_animal/slime/oil, - /mob/living/simple_animal/slime/orange - ) - - -/mob/living/simple_animal/slime/red/adjust_discipline(amount) - if(amount > 0) - if(!rabid) - enrage() // How dare you try to control the red slime. - say("Grrr...!") - -/mob/living/simple_animal/slime/red/enrage() - ..() - add_modifier(/datum/modifier/berserk, 30 SECONDS) - - -/mob/living/simple_animal/slime/green - desc = "This slime is radioactive." - color = "#14FF20" - slime_color = "green" - coretype = /obj/item/slime_extract/green - glows = TRUE - reagent_injected = "radium" - var/rads = 25 - - description_info = "This slime will irradiate anything nearby passively, and will inject radium on attack. \ - A radsuit or other thick and radiation-hardened armor can protect from this. It will only radiate while alive." - - slime_mutation = list( - /mob/living/simple_animal/slime/purple, - /mob/living/simple_animal/slime/green, - /mob/living/simple_animal/slime/emerald, - /mob/living/simple_animal/slime/emerald - ) - -/mob/living/simple_animal/slime/green/Life() - if(stat != DEAD) - irradiate() - ..() - -/mob/living/simple_animal/slime/green/proc/irradiate() - radiation_repository.radiate(src, rads) - - -/mob/living/simple_animal/slime/pink - desc = "This slime has regenerative properties." - color = "#FF0080" - slime_color = "pink" - coretype = /obj/item/slime_extract/pink - glows = TRUE - - description_info = "This slime will passively heal nearby entities within two tiles, including itself. It will only do this while alive." - - slime_mutation = list( - /mob/living/simple_animal/slime/blue, - /mob/living/simple_animal/slime/light_pink, - /mob/living/simple_animal/slime/light_pink, - /mob/living/simple_animal/slime/pink - ) - -/mob/living/simple_animal/slime/pink/Life() - if(stat != DEAD) - heal_aura() - ..() - -/mob/living/simple_animal/slime/pink/proc/heal_aura() - for(var/mob/living/L in view(src, 2)) - if(L.stat == DEAD || L == target_mob) - continue - L.add_modifier(/datum/modifier/slime_heal, 5 SECONDS, src) - -/datum/modifier/slime_heal - name = "slime mending" - desc = "You feel somewhat gooy." - mob_overlay_state = "pink_sparkles" - - on_created_text = "Twinkling spores of goo surround you. It makes you feel healthier." - on_expired_text = "The spores of goo have faded, although you feel much healthier than before." - stacks = MODIFIER_STACK_EXTEND - -/datum/modifier/slime_heal/tick() - if(holder.stat == DEAD) // Required or else simple animals become immortal. - expire() - - if(ishuman(holder)) // Robolimbs need this code sadly. - var/mob/living/carbon/human/H = holder - for(var/obj/item/organ/external/E in H.organs) - var/obj/item/organ/external/O = E - O.heal_damage(2, 2, 0, 1) - else - holder.adjustBruteLoss(-2) - holder.adjustFireLoss(-2) - - holder.adjustToxLoss(-2) - holder.adjustOxyLoss(-2) - holder.adjustCloneLoss(-1) - - - -/mob/living/simple_animal/slime/gold - desc = "This slime absorbs energy, and cannot be stunned by normal means." - color = "#EEAA00" - shiny = TRUE - slime_color = "gold" - coretype = /obj/item/slime_extract/gold - description_info = "This slime is immune to the slimebaton and taser, and will actually charge the slime, however it will still discipline the slime." - - slime_mutation = list( - /mob/living/simple_animal/slime/metal, - /mob/living/simple_animal/slime/gold, - /mob/living/simple_animal/slime/sapphire, - /mob/living/simple_animal/slime/sapphire - ) - -/mob/living/simple_animal/slime/gold/Weaken(amount) - power_charge = between(0, power_charge + amount, 10) - return - -/mob/living/simple_animal/slime/gold/Stun(amount) - power_charge = between(0, power_charge + amount, 10) - return - -/mob/living/simple_animal/slime/gold/get_description_interaction() // So it doesn't say to use a baton on them. - return list() - - -// Tier 5 - -/mob/living/simple_animal/slime/oil - desc = "This slime is explosive and volatile. Smoking near it is probably a bad idea." - color = "#333333" - slime_color = "oil" - shiny = TRUE - coretype = /obj/item/slime_extract/oil - - description_info = "If this slime suffers damage from a fire or heat based source, or if it is caught inside \ - an explosion, it will explode. Rabid oil slimes will charge at enemies, then suicide-bomb themselves. \ - Bomb suits can protect from the explosion." - - slime_mutation = list( - /mob/living/simple_animal/slime/oil, - /mob/living/simple_animal/slime/oil, - /mob/living/simple_animal/slime/red, - /mob/living/simple_animal/slime/red - ) - -/mob/living/simple_animal/slime/oil/proc/explode() - if(stat != DEAD) - // explosion(src.loc, 1, 2, 4) - explosion(src.loc, 0, 2, 4) // A bit weaker since the suicide charger tended to gib the poor sod being targeted. - if(src) // Delete ourselves if the explosion didn't do it. - qdel(src) - -/mob/living/simple_animal/slime/oil/post_attack(var/mob/living/L, var/intent = I_HURT) - if(!rabid) - return ..() - if(intent == I_HURT || intent == I_GRAB) - say(pick("Sacrifice...!", "Sssss...", "Boom...!")) - sleep(2 SECOND) - log_and_message_admins("[src] has suicide-bombed themselves while trying to kill \the [L].") - explode() - -/mob/living/simple_animal/slime/oil/ex_act(severity) - log_and_message_admins("[src] exploded due to a chain reaction with another explosion.") - explode() - -/mob/living/simple_animal/slime/oil/fire_act(datum/gas_mixture/air, temperature, volume) - log_and_message_admins("[src] exploded due to exposure to fire.") - explode() - -/mob/living/simple_animal/slime/oil/bullet_act(var/obj/item/projectile/P, var/def_zone) - if(P.damage_type && P.damage_type == BURN && P.damage) // Most bullets won't trigger the explosion, as a mercy towards Security. - log_and_message_admins("[src] exploded due to bring hit by a burning projectile[P.firer ? " by [key_name(P.firer)]" : ""].") - explode() - else - ..() - -/mob/living/simple_animal/slime/oil/attackby(var/obj/item/weapon/W, var/mob/user) - if(istype(W) && W.force && W.damtype == BURN) - log_and_message_admins("[src] exploded due to being hit with a burning weapon ([W]) by [key_name(user)].") - explode() - else - ..() - - -/mob/living/simple_animal/slime/sapphire - desc = "This slime seems a bit brighter than the rest, both figuratively and literally." - color = "#2398FF" - slime_color = "sapphire" - shiny = TRUE - glows = TRUE - coretype = /obj/item/slime_extract/sapphire - - optimal_combat = TRUE // Lift combat AI restrictions to look smarter. - run_at_them = FALSE // Use fancy A* pathing. - astar_adjacent_proc = /turf/proc/TurfsWithAccess // Normal slimes don't care about cardinals (because BYOND) so smart slimes shouldn't as well. - move_to_delay = 3 // A* chasing is slightly slower in terms of movement speed than regular pathing so reducing this hopefully makes up for that. - - description_info = "This slime uses more robust tactics when fighting and won't hold back, so it is dangerous to be alone \ - with one if hostile, and especially dangerous if they outnumber you." - - slime_mutation = list( - /mob/living/simple_animal/slime/sapphire, - /mob/living/simple_animal/slime/sapphire, - /mob/living/simple_animal/slime/gold, - /mob/living/simple_animal/slime/gold - ) - -/mob/living/simple_animal/slime/emerald - desc = "This slime is faster than usual, even more so than the red slimes." - color = "#22FF22" - shiny = TRUE - glows = TRUE - slime_color = "emerald" - coretype = /obj/item/slime_extract/emerald - - description_info = "This slime will make everything around it, and itself, faster for a few seconds, if close by." - move_to_delay = 2 - - slime_mutation = list( - /mob/living/simple_animal/slime/green, - /mob/living/simple_animal/slime/green, - /mob/living/simple_animal/slime/emerald, - /mob/living/simple_animal/slime/emerald - ) - -/mob/living/simple_animal/slime/emerald/Life() - if(stat != DEAD) - zoom_aura() - ..() - -/mob/living/simple_animal/slime/emerald/proc/zoom_aura() - for(var/mob/living/L in view(src, 2)) - if(L.stat == DEAD || L == target_mob) - continue - L.add_modifier(/datum/modifier/technomancer/haste, 5 SECONDS, src) - -/mob/living/simple_animal/slime/light_pink - desc = "This slime seems a lot more peaceful than the others." - color = "#FF8888" - slime_color = "light pink" - coretype = /obj/item/slime_extract/light_pink - - description_info = "This slime is effectively always disciplined initially." - obedience = 5 - discipline = 5 - - slime_mutation = list( - /mob/living/simple_animal/slime/pink, - /mob/living/simple_animal/slime/pink, - /mob/living/simple_animal/slime/light_pink, - /mob/living/simple_animal/slime/light_pink - ) - -// Special -/mob/living/simple_animal/slime/rainbow - desc = "This slime changes colors constantly." - color = null // Only slime subtype that uses a different icon_state. - slime_color = "rainbow" - coretype = /obj/item/slime_extract/rainbow - icon_state_override = "rainbow" - unity = TRUE - - description_info = "This slime is considered to be the same color as all other slime colors at the same time for the purposes of \ - other slimes being friendly to them, and therefore will never be harmed by another slime. \ - Attacking this slime will provoke the wrath of all slimes within range." - - slime_mutation = list( - /mob/living/simple_animal/slime/rainbow, - /mob/living/simple_animal/slime/rainbow, - /mob/living/simple_animal/slime/rainbow, - /mob/living/simple_animal/slime/rainbow - ) - -/mob/living/simple_animal/slime/rainbow/New() - unify() - ..() - -// The RD's pet slime. -/mob/living/simple_animal/slime/rainbow/kendrick - name = "Kendrick" - desc = "The Research Director's pet slime. It shifts colors constantly." - rainbow_core_candidate = FALSE - -/mob/living/simple_animal/slime/rainbow/kendrick/New() - pacify() - ..() \ No newline at end of file diff --git a/code/modules/mob/living/simple_animal/vore/bee.dm b/code/modules/mob/living/simple_animal/vore/bee.dm index e5bf7b49ae..e994c0dcb6 100644 --- a/code/modules/mob/living/simple_animal/vore/bee.dm +++ b/code/modules/mob/living/simple_animal/vore/bee.dm @@ -1,4 +1,4 @@ -/mob/living/simple_animal/retaliate/bee +/mob/living/simple_mob/retaliate/bee name = "space bumble bee" desc = "Buzz buzz." icon = 'icons/mob/vore.dmi' @@ -36,10 +36,10 @@ faction = "bee" -/mob/living/simple_animal/retaliate/bee/Process_Spacemove(var/check_drift = 0) +/mob/living/simple_mob/retaliate/bee/Process_Spacemove(var/check_drift = 0) return 1 //No drifting in space for space bee! // Activate Noms! -/mob/living/simple_animal/retaliate/bee +/mob/living/simple_mob/retaliate/bee vore_active = 1 vore_icons = SA_ICON_LIVING diff --git a/code/modules/mob/living/simple_animal/vore/carp.dm b/code/modules/mob/living/simple_animal/vore/carp.dm deleted file mode 100644 index e4bcc95d4e..0000000000 --- a/code/modules/mob/living/simple_animal/vore/carp.dm +++ /dev/null @@ -1,32 +0,0 @@ -/mob/living/simple_animal/hostile/carp/large/huge - name = "great white carp" - desc = "You're going to need a bigger ship." - icon = 'icons/mob/vore64x64.dmi' - icon_dead = "megacarp-dead" - icon_living = "megacarp" - icon_state = "megacarp" - - maxHealth = 600 // Boss - health = 600 - speed = 3 - - meat_amount = 10 - - melee_damage_lower = 10 - melee_damage_upper = 25 - old_x = -16 - old_y = -16 - default_pixel_x = -16 - default_pixel_y = -16 - pixel_x = -16 - pixel_y = -16 - vore_capacity = 2 - -// Activate Noms! -/mob/living/simple_animal/hostile/carp/large - icon = 'icons/mob/vore64x64.dmi' - vore_active = 1 - vore_pounce_chance = 50 - vore_capacity = 1 - vore_max_size = RESIZE_HUGE - vore_icons = SA_ICON_LIVING diff --git a/code/modules/mob/living/simple_animal/vore/catgirl.dm b/code/modules/mob/living/simple_animal/vore/catgirl.dm index 445020c90b..4e27b12477 100644 --- a/code/modules/mob/living/simple_animal/vore/catgirl.dm +++ b/code/modules/mob/living/simple_animal/vore/catgirl.dm @@ -1,4 +1,4 @@ -/mob/living/simple_animal/catgirl +/mob/living/simple_mob/catgirl name = "catgirl" desc = "Her hobbies are catnaps, knocking things over, and headpats." tt_desc = "Homo felinus" @@ -44,7 +44,7 @@ "catgirlbrown" ) -/mob/living/simple_animal/catgirl/New() +/mob/living/simple_mob/catgirl/New() ..() if(random_skin) icon_living = pick(skins) @@ -53,7 +53,7 @@ update_icon() // Activate Noms! -/mob/living/simple_animal/catgirl +/mob/living/simple_mob/catgirl vore_active = 1 vore_bump_chance = 5 vore_pounce_chance = 50 @@ -63,5 +63,5 @@ vore_digest_chance = 25 // But squirming might make them gurgle... vore_icons = SA_ICON_LIVING | SA_ICON_REST -/mob/living/simple_animal/catgirl/retaliate +/mob/living/simple_mob/catgirl/retaliate retaliate = 1 diff --git a/code/modules/mob/living/simple_animal/vore/cookiegirl.dm b/code/modules/mob/living/simple_animal/vore/cookiegirl.dm index 049da3c5db..26f2e2c525 100644 --- a/code/modules/mob/living/simple_animal/vore/cookiegirl.dm +++ b/code/modules/mob/living/simple_animal/vore/cookiegirl.dm @@ -1,4 +1,4 @@ -/mob/living/simple_animal/cookiegirl +/mob/living/simple_mob/cookiegirl name = "cookiegirl" desc = "A woman made with a combination of, well... Whatever you put in a cookie. What were the chefs thinking?" icon = 'icons/mob/vore.dmi' @@ -31,7 +31,7 @@ attacktext = list("smacked") // Activate Noms! -/mob/living/simple_animal/cookiegirl +/mob/living/simple_mob/cookiegirl vore_active = 1 vore_bump_chance = 2 vore_pounce_chance = 25 @@ -41,5 +41,5 @@ vore_digest_chance = 10 // Gonna become as sweet as sugar, soon. vore_icons = SA_ICON_LIVING | SA_ICON_REST -/mob/living/simple_animal/cookiegirl/retaliate +/mob/living/simple_mob/cookiegirl/retaliate retaliate = 1 diff --git a/code/modules/mob/living/simple_animal/vore/corrupt_hounds.dm b/code/modules/mob/living/simple_animal/vore/corrupt_hounds.dm index eb62a21086..bbf9c9f9d9 100644 --- a/code/modules/mob/living/simple_animal/vore/corrupt_hounds.dm +++ b/code/modules/mob/living/simple_animal/vore/corrupt_hounds.dm @@ -1,4 +1,4 @@ -/mob/living/simple_animal/hostile/corrupthound +/mob/living/simple_mob/hostile/corrupthound name = "corrupt hound" desc = "Good boy machine broke. This is definitely no good news for the organic lifeforms in vicinity." icon = 'icons/mob/vore64x32.dmi' @@ -66,7 +66,7 @@ loot_list = list(/obj/item/borg/upgrade/syndicate = 6, /obj/item/borg/upgrade/vtec = 6, /obj/item/weapon/material/knife/ritual = 6, /obj/item/weapon/disk/nifsoft/compliance = 6) -/mob/living/simple_animal/hostile/corrupthound/prettyboi +/mob/living/simple_mob/hostile/corrupthound/prettyboi name = "corrupt corrupt hound" desc = "Bad boy machine broke as well. Seems an attempt was made to achieve a less threatening look, and this one is definitely having some conflicting feelings about it." icon_state = "prettyboi" @@ -85,36 +85,36 @@ say_got_target = list("HERE COMES BIG MEAN HUG MACHINE!", "I'LL BE GENTLE!", "FUEL ME FRIEND!", "I*M SO SORRY!", "YUMMY TREAT DETECTED!", "LOVE ME!", "Not again. NOT AGAIN!") -/mob/living/simple_animal/hostile/corrupthound/isSynthetic() +/mob/living/simple_mob/hostile/corrupthound/isSynthetic() return TRUE -/mob/living/simple_animal/hostile/corrupthound/speech_bubble_appearance() +/mob/living/simple_mob/hostile/corrupthound/speech_bubble_appearance() return "synthetic_evil" -/mob/living/simple_animal/hostile/corrupthound/PunchTarget() - if(istype(target_mob,/mob/living/simple_animal/mouse)) +/mob/living/simple_mob/hostile/corrupthound/PunchTarget() + if(istype(target_mob,/mob/living/simple_mob/mouse)) return EatTarget() else ..() -/mob/living/simple_animal/hostile/corrupthound/proc/add_eyes() +/mob/living/simple_mob/hostile/corrupthound/proc/add_eyes() if(!eye_layer) eye_layer = image(icon, "badboi-eyes") eye_layer.plane = PLANE_LIGHTING_ABOVE add_overlay(eye_layer) -/mob/living/simple_animal/hostile/corrupthound/proc/remove_eyes() +/mob/living/simple_mob/hostile/corrupthound/proc/remove_eyes() cut_overlay(eye_layer) -/mob/living/simple_animal/hostile/corrupthound/New() +/mob/living/simple_mob/hostile/corrupthound/New() add_eyes() ..() -/mob/living/simple_animal/hostile/corrupthound/death(gibbed, deathmessage = "shudders and collapses!") +/mob/living/simple_mob/hostile/corrupthound/death(gibbed, deathmessage = "shudders and collapses!") .=..() resting = 0 icon_state = icon_dead -/mob/living/simple_animal/hostile/corrupthound/update_icon() +/mob/living/simple_mob/hostile/corrupthound/update_icon() . = ..() remove_eyes() if(stat == CONSCIOUS && !resting) diff --git a/code/modules/mob/living/simple_animal/vore/deathclaw.dm b/code/modules/mob/living/simple_animal/vore/deathclaw.dm index 91fe552ccc..e015c07b9e 100644 --- a/code/modules/mob/living/simple_animal/vore/deathclaw.dm +++ b/code/modules/mob/living/simple_animal/vore/deathclaw.dm @@ -1,4 +1,4 @@ -/mob/living/simple_animal/hostile/deathclaw +/mob/living/simple_mob/hostile/deathclaw name = "deathclaw" desc = "Big! Big! The size of three men! Claws as long as my forearm! Ripped apart! Ripped apart!" icon = 'icons/mob/vore64x64.dmi' @@ -30,7 +30,7 @@ mount_offset_y = 30 // Activate Noms! -/mob/living/simple_animal/hostile/deathclaw +/mob/living/simple_mob/hostile/deathclaw vore_active = 1 vore_capacity = 2 vore_max_size = RESIZE_HUGE diff --git a/code/modules/mob/living/simple_animal/vore/dino.dm b/code/modules/mob/living/simple_animal/vore/dino.dm index 18af3d28e1..0cc845900c 100644 --- a/code/modules/mob/living/simple_animal/vore/dino.dm +++ b/code/modules/mob/living/simple_animal/vore/dino.dm @@ -1,4 +1,4 @@ -/mob/living/simple_animal/hostile/dino +/mob/living/simple_mob/hostile/dino name = "voracious lizard" desc = "These gluttonous little bastards used to be regular lizards that were mutated by long-term exposure to phoron!" icon = 'icons/mob/vore.dmi' @@ -33,10 +33,10 @@ max_n2 = 0 // Activate Noms! -/mob/living/simple_animal/hostile/dino +/mob/living/simple_mob/hostile/dino vore_active = 1 swallowTime = 1 SECOND // Hungry little bastards. vore_icons = SA_ICON_LIVING -/mob/living/simple_animal/hostile/dino/virgo3b +/mob/living/simple_mob/hostile/dino/virgo3b faction = "virgo3b" \ No newline at end of file diff --git a/code/modules/mob/living/simple_animal/vore/dragon.dm b/code/modules/mob/living/simple_animal/vore/dragon.dm index 2d839fb149..10934e4b38 100644 --- a/code/modules/mob/living/simple_animal/vore/dragon.dm +++ b/code/modules/mob/living/simple_animal/vore/dragon.dm @@ -1,4 +1,4 @@ -/mob/living/simple_animal/hostile/dragon +/mob/living/simple_mob/hostile/dragon name = "red dragon" desc = "Here to pillage stations and kidnap princesses, and there probably aren't any princesses." icon = 'icons/mob/vore64x64.dmi' @@ -30,29 +30,22 @@ pixel_x = -16 pixel_y = 0 - max_buckled_mobs = 1 //Yeehaw - can_buckle = TRUE - buckle_movable = TRUE - buckle_lying = FALSE - mount_offset_x = -11 - mount_offset_y = 16 - -/mob/living/simple_animal/hostile/dragon/Process_Spacemove(var/check_drift = 0) +/mob/living/simple_mob/hostile/dragon/Process_Spacemove(var/check_drift = 0) return 1 //No drifting in space for space dragons! -/mob/living/simple_animal/hostile/dragon/FindTarget() +/mob/living/simple_mob/hostile/dragon/FindTarget() . = ..() if(.) custom_emote(1,"snaps at [.]") // Activate Noms! -/mob/living/simple_animal/hostile/dragon +/mob/living/simple_mob/hostile/dragon vore_active = 1 vore_capacity = 2 vore_pounce_chance = 0 // Beat them into crit before eating. vore_icons = SA_ICON_LIVING -/mob/living/simple_animal/hostile/dragon/virgo3b +/mob/living/simple_mob/hostile/dragon/virgo3b maxHealth = 200 health = 200 faction = "virgo3b" diff --git a/code/modules/mob/living/simple_animal/vore/fennec.dm b/code/modules/mob/living/simple_animal/vore/fennec.dm index 1f7a869a4a..20be0a0319 100644 --- a/code/modules/mob/living/simple_animal/vore/fennec.dm +++ b/code/modules/mob/living/simple_animal/vore/fennec.dm @@ -1,4 +1,4 @@ -/mob/living/simple_animal/fennec +/mob/living/simple_mob/fennec name = "fennec" desc = "It's a dusty big-eared sandfox! Adorable!" tt_desc = "Vulpes zerda" @@ -29,7 +29,7 @@ emote_see = list("earflicks","sniffs at the ground") // Activate Noms! -/mob/living/simple_animal/fennec +/mob/living/simple_mob/fennec vore_active = 1 vore_bump_chance = 10 vore_bump_emote = "playfully lunges at" diff --git a/code/modules/mob/living/simple_animal/vore/fennix.dm b/code/modules/mob/living/simple_animal/vore/fennix.dm index 077994872d..6b55b0c997 100644 --- a/code/modules/mob/living/simple_animal/vore/fennix.dm +++ b/code/modules/mob/living/simple_animal/vore/fennix.dm @@ -1,4 +1,4 @@ -/mob/living/simple_animal/retaliate/fennix +/mob/living/simple_mob/retaliate/fennix name = "Fennix" desc = "A feral fennix, Warm to the touch" tt_desc = "Incaendium Faeles Vulpes" diff --git a/code/modules/mob/living/simple_animal/vore/frog.dm b/code/modules/mob/living/simple_animal/vore/frog.dm index ae4389914b..4030f7c8e5 100644 --- a/code/modules/mob/living/simple_animal/vore/frog.dm +++ b/code/modules/mob/living/simple_animal/vore/frog.dm @@ -1,4 +1,4 @@ -/mob/living/simple_animal/hostile/frog +/mob/living/simple_mob/hostile/frog name = "giant frog" desc = "You've heard of having a frog in your throat, now get ready for the reverse." tt_desc = "Anura gigantus" @@ -14,19 +14,19 @@ melee_damage_upper = 25 // Pepe is love, not hate. -/mob/living/simple_animal/hostile/frog/New() +/mob/living/simple_mob/hostile/frog/New() if(rand(1,1000000) == 1) name = "rare Pepe" desc = "You found a rare Pepe. Screenshot for good luck." ..() // Activate Noms! -/mob/living/simple_animal/hostile/frog +/mob/living/simple_mob/hostile/frog vore_active = 1 vore_pounce_chance = 50 vore_icons = SA_ICON_LIVING -/mob/living/simple_animal/hostile/frog/space +/mob/living/simple_mob/hostile/frog/space name = "space frog" //Space frog can hold its breath or whatever diff --git a/code/modules/mob/living/simple_animal/vore/gaslamp.dm b/code/modules/mob/living/simple_animal/vore/gaslamp.dm index 8df8d216b4..357cbd0775 100644 --- a/code/modules/mob/living/simple_animal/vore/gaslamp.dm +++ b/code/modules/mob/living/simple_animal/vore/gaslamp.dm @@ -10,7 +10,7 @@ kills them. TODO: Make them light up and heat the air when exposed to oxygen. */ -/mob/living/simple_animal/retaliate/gaslamp +/mob/living/simple_mob/retaliate/gaslamp name = "gaslamp" desc = "Some sort of floaty alien with a warm glow. This creature is endemic to Virgo-3B." tt_desc = "Semaeostomeae virginus" @@ -51,7 +51,7 @@ TODO: Make them light up and heat the air when exposed to oxygen. max_n2 = 0 // Activate Noms! -/mob/living/simple_animal/retaliate/gaslamp +/mob/living/simple_mob/retaliate/gaslamp vore_active = 1 vore_capacity = 2 vore_bump_chance = 90 //they're frickin' jellyfish anenome filterfeeders, get tentacled diff --git a/code/modules/mob/living/simple_animal/vore/hippo.dm b/code/modules/mob/living/simple_animal/vore/hippo.dm index ae9d8775e1..4366395d38 100644 --- a/code/modules/mob/living/simple_animal/vore/hippo.dm +++ b/code/modules/mob/living/simple_animal/vore/hippo.dm @@ -1,4 +1,4 @@ -/mob/living/simple_animal/retaliate/hippo +/mob/living/simple_mob/retaliate/hippo name = "hippo" desc = "Mostly know for the spectacular hit of the live action movie Hungry Hungry Hippos." tt_desc = "Hippopotamus amphibius" @@ -56,7 +56,7 @@ mount_offset_y = 20 // Activate Noms! -/mob/living/simple_animal/retaliate/hippo //I don't know why it's in a seperate line but everyone does it so i do it +/mob/living/simple_mob/retaliate/hippo //I don't know why it's in a seperate line but everyone does it so i do it vore_active = 1 vore_capacity = 1 vore_bump_chance = 15 diff --git a/code/modules/mob/living/simple_animal/vore/horse.dm b/code/modules/mob/living/simple_animal/vore/horse.dm index 80cd80dd0e..9332ae043c 100644 --- a/code/modules/mob/living/simple_animal/vore/horse.dm +++ b/code/modules/mob/living/simple_animal/vore/horse.dm @@ -1,4 +1,4 @@ -/mob/living/simple_animal/horse +/mob/living/simple_mob/horse name = "horse" desc = "Don't look it in the mouth." tt_desc = "Equus ferus caballus" @@ -38,7 +38,7 @@ mount_offset_x = 0 // Activate Noms! -/mob/living/simple_animal/horse +/mob/living/simple_mob/horse vore_active = 1 vore_icons = SA_ICON_LIVING diff --git a/code/modules/mob/living/simple_animal/vore/jelly.dm b/code/modules/mob/living/simple_animal/vore/jelly.dm index 559ee1f8ee..828ce81149 100644 --- a/code/modules/mob/living/simple_animal/vore/jelly.dm +++ b/code/modules/mob/living/simple_animal/vore/jelly.dm @@ -1,4 +1,4 @@ -/mob/living/simple_animal/hostile/jelly +/mob/living/simple_mob/hostile/jelly name = "jelly blob" desc = "Some sort of undulating blob of slime!" icon = 'icons/mob/vore.dmi' @@ -18,7 +18,7 @@ emote_see = list("undulates quietly") // Activate Noms! -/mob/living/simple_animal/hostile/jelly +/mob/living/simple_mob/hostile/jelly vore_active = 1 vore_pounce_chance = 0 vore_icons = SA_ICON_LIVING diff --git a/code/modules/mob/living/simple_animal/vore/otie.dm b/code/modules/mob/living/simple_animal/vore/otie.dm index c7d171ed84..c837ea7b12 100644 --- a/code/modules/mob/living/simple_animal/vore/otie.dm +++ b/code/modules/mob/living/simple_animal/vore/otie.dm @@ -3,7 +3,7 @@ // Probably easier to troubleshoot when we ain't breaking the server by spawning a buttload of heavily extra feature coded snowflake mobs to the wilderness as mass cannonfodder. // Also ToDo: An actual "simple" mob for that purpose if necessary :v -/mob/living/simple_animal/otie //Spawn this one only if you're looking for a bad time. Not friendly. +/mob/living/simple_mob/otie //Spawn this one only if you're looking for a bad time. Not friendly. name = "otie" desc = "The classic bioengineered longdog." tt_desc = "Otus robustus" @@ -61,13 +61,13 @@ // Activate Noms! -/mob/living/simple_animal/otie +/mob/living/simple_mob/otie vore_active = 1 vore_capacity = 1 vore_pounce_chance = 20 vore_icons = SA_ICON_LIVING | SA_ICON_REST -/mob/living/simple_animal/otie/feral //gets the pet2tame feature. starts out hostile tho so get gamblin' +/mob/living/simple_mob/otie/feral //gets the pet2tame feature. starts out hostile tho so get gamblin' name = "mutated feral otie" desc = "The classic bioengineered longdog. No pets. Only bite. This one has mutated from too much time out on the surface of Virgo-3B." tt_desc = "Otus phoronis" @@ -91,7 +91,7 @@ glowyeyes = TRUE eyetype = "photie" -/mob/living/simple_animal/otie/red +/mob/living/simple_mob/otie/red name = "feral red otie" desc = "Seems this ominous looking longdog has been infused with wicked infernal forces." tt_desc = "Otus infernalis" @@ -115,19 +115,19 @@ glowyeyes = TRUE eyetype = "hotie" -/mob/living/simple_animal/otie/red/friendly //gets the pet2tame feature and doesn't kill you right away +/mob/living/simple_mob/otie/red/friendly //gets the pet2tame feature and doesn't kill you right away name = "red otie" desc = "Seems this ominous looking longdog has been infused with wicked infernal forces. This one seems rather peaceful though." faction = "neutral" tamed = 1 -/mob/living/simple_animal/otie/friendly //gets the pet2tame feature and doesn't kill you right away +/mob/living/simple_mob/otie/friendly //gets the pet2tame feature and doesn't kill you right away name = "otie" desc = "The classic bioengineered longdog. This one might even tolerate you!" faction = "neutral" tamed = 1 -/mob/living/simple_animal/otie/cotie //same as above but has a little collar :v +/mob/living/simple_mob/otie/cotie //same as above but has a little collar :v name = "tamed otie" desc = "The classic bioengineered longdog. This one has a nice little collar on its neck. However a proper domesticated otie is an oxymoron and the collar is likely just a decoration." icon_state = "cotie" @@ -136,7 +136,7 @@ faction = "neutral" tamed = 1 -/mob/living/simple_animal/otie/cotie/phoron //friendly phoron pup with collar +/mob/living/simple_mob/otie/cotie/phoron //friendly phoron pup with collar name = "mutated otie" desc = "Looks like someone did manage to domesticate one of those wild phoron mutants. What a badass." tt_desc = "Otus phoronis" @@ -155,7 +155,7 @@ glowyeyes = TRUE eyetype = "photie" -/mob/living/simple_animal/otie/security //tame by default unless you're a marked crimester. can be befriended to follow with pets tho. +/mob/living/simple_mob/otie/security //tame by default unless you're a marked crimester. can be befriended to follow with pets tho. name = "guard otie" desc = "The VARMAcorp bioengineering division flagship product on trained optimal snowflake guard dogs." icon_state = "sotie" @@ -174,7 +174,7 @@ var/check_records = 0 // If true, arrests people without a record. var/check_arrest = 1 // If true, arrests people who are set to arrest. -/mob/living/simple_animal/otie/security/phoron +/mob/living/simple_mob/otie/security/phoron name = "mutated guard otie" desc = "An extra rare phoron resistant version of the VARMAcorp trained snowflake guard dogs." tt_desc = "Otus phoronis" @@ -195,15 +195,15 @@ glowyeyes = TRUE eyetype = "sotie" -/mob/living/simple_animal/otie/PunchTarget() - if(istype(target_mob,/mob/living/simple_animal/mouse)) +/mob/living/simple_mob/otie/PunchTarget() + if(istype(target_mob,/mob/living/simple_mob/mouse)) return EatTarget() else ..() -/mob/living/simple_animal/otie/Found(var/atom/found_atom) +/mob/living/simple_mob/otie/Found(var/atom/found_atom) if(!SA_attackable(found_atom)) return null - if(istype(found_atom,/mob/living/simple_animal/mouse)) + if(istype(found_atom,/mob/living/simple_mob/mouse)) return found_atom else if(ismob(found_atom)) var/mob/found_mob = found_atom @@ -222,20 +222,20 @@ else return null -/mob/living/simple_animal/otie/security/Found(var/atom/found_atom) +/mob/living/simple_mob/otie/security/Found(var/atom/found_atom) if(check_threat(found_atom) >= 4) if(resting) lay_down() return found_atom ..() -/mob/living/simple_animal/otie/attackby(var/obj/item/O, var/mob/user) // Trade donuts for bellybrig victims. +/mob/living/simple_mob/otie/attackby(var/obj/item/O, var/mob/user) // Trade donuts for bellybrig victims. if(istype(O, /obj/item/weapon/reagent_containers/food)) qdel(O) playsound(src.loc,'sound/items/eatfood.ogg', rand(10,50), 1) if(ai_inactive)//No autobarf on player control. return - if(istype(O, /obj/item/weapon/reagent_containers/food/snacks/donut) && istype(src, /mob/living/simple_animal/otie/security)) + if(istype(O, /obj/item/weapon/reagent_containers/food/snacks/donut) && istype(src, /mob/living/simple_mob/otie/security)) to_chat(user,"The guard pup accepts your offer for their catch.") release_vore_contents() else if(prob(2)) //Small chance to get prey out from non-sec oties. @@ -244,21 +244,21 @@ return . = ..() -/mob/living/simple_animal/otie/security/feed_grabbed_to_self(var/mob/living/user, var/mob/living/prey) // Make the gut start out safe for bellybrigging. +/mob/living/simple_mob/otie/security/feed_grabbed_to_self(var/mob/living/user, var/mob/living/prey) // Make the gut start out safe for bellybrigging. if(ishuman(prey)) vore_selected.digest_mode = DM_HOLD if(check_threat(prey) >= 4) global_announcer.autosay("[src] has detained suspect [target_name(prey)] in [get_area(src)].", "SmartCollar oversight", "Security") - if(istype(prey,/mob/living/simple_animal/mouse)) + if(istype(prey,/mob/living/simple_mob/mouse)) vore_selected.digest_mode = DM_DIGEST . = ..() -/mob/living/simple_animal/otie/security/proc/check_threat(var/mob/living/M) +/mob/living/simple_mob/otie/security/proc/check_threat(var/mob/living/M) if(!M || !ishuman(M) || M.stat == DEAD || src == M) return 0 return M.assess_perp(0, 0, 0, check_records, check_arrest) -/mob/living/simple_animal/otie/security/set_target(var/mob/M) +/mob/living/simple_mob/otie/security/set_target(var/mob/M) ai_log("SetTarget([M])",2) if(!M || (world.time - last_target_time < 5 SECONDS) && target_mob) ai_log("SetTarget() can't set it again so soon",3) @@ -286,7 +286,7 @@ return 0 -/mob/living/simple_animal/otie/security/proc/target_name(mob/living/T) +/mob/living/simple_mob/otie/security/proc/target_name(mob/living/T) if(ishuman(T)) var/mob/living/carbon/human/H = T return H.get_id_name("unidentified person") @@ -294,7 +294,7 @@ //Basic friend AI -/mob/living/simple_animal/otie/Life() +/mob/living/simple_mob/otie/Life() . = ..() if(!. || ai_inactive) return @@ -334,7 +334,7 @@ //Pet 4 friendly -/mob/living/simple_animal/otie/attack_hand(mob/living/carbon/human/M as mob) +/mob/living/simple_mob/otie/attack_hand(mob/living/carbon/human/M as mob) switch(M.a_intent) if(I_HELP) @@ -365,27 +365,27 @@ else ..() -/mob/living/simple_animal/otie/proc/add_eyes() +/mob/living/simple_mob/otie/proc/add_eyes() if(!eye_layer) eye_layer = image(icon, "[eyetype]-eyes") eye_layer.plane = PLANE_LIGHTING_ABOVE add_overlay(eye_layer) -/mob/living/simple_animal/otie/proc/remove_eyes() +/mob/living/simple_mob/otie/proc/remove_eyes() cut_overlay(eye_layer) -/mob/living/simple_animal/otie/New() +/mob/living/simple_mob/otie/New() if(glowyeyes) add_eyes() ..() -/mob/living/simple_animal/otie/update_icon() +/mob/living/simple_mob/otie/update_icon() . = ..() remove_eyes() if(glowyeyes && stat == CONSCIOUS && !resting) add_eyes() -/mob/living/simple_animal/otie/death(gibbed, deathmessage = "dies!") +/mob/living/simple_mob/otie/death(gibbed, deathmessage = "dies!") .=..() resting = 0 icon_state = icon_dead diff --git a/code/modules/mob/living/simple_animal/vore/panther.dm b/code/modules/mob/living/simple_animal/vore/panther.dm index 45a18cf300..fb992e49ed 100644 --- a/code/modules/mob/living/simple_animal/vore/panther.dm +++ b/code/modules/mob/living/simple_animal/vore/panther.dm @@ -1,4 +1,4 @@ -/mob/living/simple_animal/hostile/panther +/mob/living/simple_mob/hostile/panther name = "panther" desc = "Runtime's larger, less cuddly cousin." tt_desc = "Panthera pardus" @@ -34,7 +34,7 @@ mount_offset_y = 12 // Activate Noms! -/mob/living/simple_animal/hostile/panther +/mob/living/simple_mob/hostile/panther vore_active = 1 vore_capacity = 2 vore_pounce_chance = 10 diff --git a/code/modules/mob/living/simple_animal/vore/rat.dm b/code/modules/mob/living/simple_animal/vore/rat.dm index 1f6be2e3f4..7cdd2c3bfd 100644 --- a/code/modules/mob/living/simple_animal/vore/rat.dm +++ b/code/modules/mob/living/simple_animal/vore/rat.dm @@ -1,4 +1,4 @@ -/mob/living/simple_animal/hostile/rat +/mob/living/simple_mob/hostile/rat name = "giant rat" desc = "In what passes for a hierarchy among verminous rodents, this one is king." tt_desc = "Mus muscular" @@ -49,14 +49,14 @@ var/life_since_foodscan = 0 -/mob/living/simple_animal/hostile/rat/passive +/mob/living/simple_mob/hostile/rat/passive name = "curious giant rat" desc = "In what passes for a hierarchy among verminous rodents, this one is king. It seems to be more interested on scavenging." follow_dist = 1 var/mob/living/carbon/human/food var/hunger = 0 -/mob/living/simple_animal/hostile/rat/passive/Life() +/mob/living/simple_mob/hostile/rat/passive/Life() . = ..() if(!. || ai_inactive) return @@ -127,7 +127,7 @@ hunger = 0 food = null -/mob/living/simple_animal/hostile/rat/passive/attackby(var/obj/item/O, var/mob/user) // Feed the rat your food to satisfy it. +/mob/living/simple_mob/hostile/rat/passive/attackby(var/obj/item/O, var/mob/user) // Feed the rat your food to satisfy it. if(istype(O, /obj/item/weapon/reagent_containers/food/snacks)) qdel(O) playsound(src.loc,'sound/items/eatfood.ogg', rand(10,50), 1) @@ -136,7 +136,7 @@ return . = ..() -/mob/living/simple_animal/hostile/rat/passive/Found(var/atom/found_atom) +/mob/living/simple_mob/hostile/rat/passive/Found(var/atom/found_atom) if(!SA_attackable(found_atom)) return null else if(ishuman(found_atom) && will_eat(found_atom)) @@ -151,7 +151,7 @@ break return null -/mob/living/simple_animal/hostile/rat/passive/FindTarget() +/mob/living/simple_mob/hostile/rat/passive/FindTarget() var/atom/T = null for(var/atom/A in ListTargets(view_range)) if(A == src) @@ -162,7 +162,7 @@ break return T -/mob/living/simple_animal/hostile/rat/death() +/mob/living/simple_mob/hostile/rat/death() playsound(src, 'sound/effects/mouse_squeak_loud.ogg', 50, 1) ..() diff --git a/code/modules/mob/living/simple_animal/vore/redpanda.dm b/code/modules/mob/living/simple_animal/vore/redpanda.dm index 6047425f18..81b50880eb 100644 --- a/code/modules/mob/living/simple_animal/vore/redpanda.dm +++ b/code/modules/mob/living/simple_animal/vore/redpanda.dm @@ -1,4 +1,4 @@ -/mob/living/simple_animal/redpanda +/mob/living/simple_mob/redpanda name = "red panda" desc = "It's a wah! Beware of doom pounce!" tt_desc = "Ailurus fulgens" @@ -29,7 +29,7 @@ emote_see = list("trundles around","rears up onto their hind legs and pounces a bug") // Activate Noms! -/mob/living/simple_animal/redpanda +/mob/living/simple_mob/redpanda vore_active = 1 vore_bump_chance = 10 vore_bump_emote = "playfully lunges at" @@ -37,7 +37,7 @@ vore_default_mode = DM_HOLD // above will only matter if someone toggles it anyway vore_icons = SA_ICON_LIVING -/mob/living/simple_animal/redpanda/fae +/mob/living/simple_mob/redpanda/fae name = "dark wah" desc = "Ominous, but still cute!" tt_desc = "Ailurus brattus" diff --git a/code/modules/mob/living/simple_animal/vore/shadekin/ability_objects.dm b/code/modules/mob/living/simple_animal/vore/shadekin/ability_objects.dm index 37cd6af662..6990623043 100644 --- a/code/modules/mob/living/simple_animal/vore/shadekin/ability_objects.dm +++ b/code/modules/mob/living/simple_animal/vore/shadekin/ability_objects.dm @@ -4,7 +4,7 @@ icon = 'icons/mob/screen_spells.dmi' var/ability_name = "FIX ME" var/cost = 50 - var/mob/living/simple_animal/shadekin/my_kin + var/mob/living/simple_mob/shadekin/my_kin var/shift_mode = NOT_WHILE_SHIFTED var/ab_sound @@ -130,7 +130,7 @@ on_created_text = "You drag part of The Dark into realspace, enveloping yourself." on_expired_text = "You lose your grasp on The Dark and realspace reasserts itself." stacks = MODIFIER_STACK_EXTEND - var/mob/living/simple_animal/shadekin/my_kin + var/mob/living/simple_mob/shadekin/my_kin /datum/modifier/shadekin/create_shade/tick() if(my_kin.ability_flags & AB_PHASE_SHIFTED) diff --git a/code/modules/mob/living/simple_animal/vore/shadekin/ability_procs.dm b/code/modules/mob/living/simple_animal/vore/shadekin/ability_procs.dm index 91bd07db29..0be707f852 100644 --- a/code/modules/mob/living/simple_animal/vore/shadekin/ability_procs.dm +++ b/code/modules/mob/living/simple_animal/vore/shadekin/ability_procs.dm @@ -1,5 +1,5 @@ // Phase shifting procs (and related procs) -/mob/living/simple_animal/shadekin/proc/phase_shift() +/mob/living/simple_mob/shadekin/proc/phase_shift() var/turf/T = get_turf(src) if(!T.CanPass(null,T) || loc != T) to_chat(src,"You can't use that here!") @@ -91,19 +91,19 @@ density = FALSE force_max_speed = TRUE -/mob/living/simple_animal/shadekin/UnarmedAttack() +/mob/living/simple_mob/shadekin/UnarmedAttack() if(ability_flags & AB_PHASE_SHIFTED) return FALSE //Nope. . = ..() -/mob/living/simple_animal/shadekin/can_fall() +/mob/living/simple_mob/shadekin/can_fall() if(ability_flags & AB_PHASE_SHIFTED) return FALSE //Nope! return ..() -/mob/living/simple_animal/shadekin/zMove(direction) +/mob/living/simple_mob/shadekin/zMove(direction) if(ability_flags & AB_PHASE_SHIFTED) var/turf/destination = (direction == UP) ? GetAbove(src) : GetBelow(src) if(destination) @@ -113,7 +113,7 @@ return ..() // Healing others -/mob/living/simple_animal/shadekin/proc/mend_other() +/mob/living/simple_mob/shadekin/proc/mend_other() //I hate to crunch a view() but I only want ones I can see var/list/viewed = oview(1) var/list/targets = list() diff --git a/code/modules/mob/living/simple_animal/vore/shadekin/shadekin.dm b/code/modules/mob/living/simple_animal/vore/shadekin/shadekin.dm index 19072aa629..a89688088d 100644 --- a/code/modules/mob/living/simple_animal/vore/shadekin/shadekin.dm +++ b/code/modules/mob/living/simple_animal/vore/shadekin/shadekin.dm @@ -1,4 +1,4 @@ -/mob/living/simple_animal/shadekin //Spawning the prototype spawns a random one, see initialize() +/mob/living/simple_mob/shadekin //Spawning the prototype spawns a random one, see initialize() name = "shadekin" desc = "Some sort of fluffer. Big ears, long tail." icon = 'icons/mob/vore_shadekin.dmi' @@ -85,16 +85,16 @@ var/list/shadekin_abilities -/mob/living/simple_animal/shadekin/initialize() +/mob/living/simple_mob/shadekin/Initialize() //You spawned the prototype, and want a totally random one. - if(type == /mob/living/simple_animal/shadekin) + if(type == /mob/living/simple_mob/shadekin) //I'm told by VerySoft these are the liklihood values var/list/sk_types = list( - /mob/living/simple_animal/shadekin/red = 20, //Actively seek people out to nom, so fairly common to see (relatively speaking), - /mob/living/simple_animal/shadekin/blue = 15, //Explorers that like to interact with people, so still fairly common, - /mob/living/simple_animal/shadekin/purple = 15, //Also explorers that may or may not homf people, - /mob/living/simple_animal/shadekin/yellow = 1 //Very rare, usually never leaves their home + /mob/living/simple_mob/shadekin/red = 20, //Actively seek people out to nom, so fairly common to see (relatively speaking), + /mob/living/simple_mob/shadekin/blue = 15, //Explorers that like to interact with people, so still fairly common, + /mob/living/simple_mob/shadekin/purple = 15, //Also explorers that may or may not homf people, + /mob/living/simple_mob/shadekin/yellow = 1 //Very rare, usually never leaves their home ) var/new_type = pickweight(sk_types) @@ -138,11 +138,11 @@ return ..() -/mob/living/simple_animal/shadekin/Destroy() +/mob/living/simple_mob/shadekin/Destroy() QDEL_NULL_LIST(shadekin_abilities) . = ..() -/mob/living/simple_animal/shadekin/init_vore() +/mob/living/simple_mob/shadekin/init_vore() if(LAZYLEN(vore_organs)) return @@ -197,7 +197,7 @@ "The chaos of being digested fades as you're snuffed out by a harsh clench! You're steadily broken down into a thick paste, processed and absorbed by the predator!" ) -/mob/living/simple_animal/shadekin/Life() +/mob/living/simple_mob/shadekin/Life() . = ..() if(ability_flags & AB_PHASE_SHIFTED) density = FALSE @@ -207,7 +207,7 @@ nutrition = max(0, nutrition-5) energy = min(100,energy+1) -/mob/living/simple_animal/shadekin/update_icon() +/mob/living/simple_mob/shadekin/update_icon() . = ..() cut_overlay(tailimage) @@ -217,18 +217,18 @@ add_overlay(tailimage) add_overlay(eye_icon_state) -/mob/living/simple_animal/shadekin/Stat() +/mob/living/simple_mob/shadekin/Stat() . = ..() if(statpanel("Shadekin")) abilities_stat() -/mob/living/simple_animal/shadekin/proc/abilities_stat() +/mob/living/simple_mob/shadekin/proc/abilities_stat() for(var/A in shadekin_abilities) var/obj/effect/shadekin_ability/ability = A stat("[ability.ability_name]",ability.atom_button_text()) //They phase back to the dark when killed -/mob/living/simple_animal/shadekin/death(gibbed, deathmessage = "phases to somewhere far away!") +/mob/living/simple_mob/shadekin/death(gibbed, deathmessage = "phases to somewhere far away!") overlays = list() icon_state = "" flick("tp_out",src) @@ -238,7 +238,7 @@ . = ..(FALSE, deathmessage) //Blue-eyes want to nom people to heal them -/mob/living/simple_animal/shadekin/Found(var/atom/A) +/mob/living/simple_mob/shadekin/Found(var/atom/A) if(specific_targets && isliving(A)) //Healing! var/mob/living/L = A var/health_percent = (L.health/L.maxHealth)*100 @@ -247,11 +247,11 @@ . = ..() //They reach nutritional equilibrium (important for blue-eyes healbelly) -/mob/living/simple_animal/shadekin/Life() +/mob/living/simple_mob/shadekin/Life() if((. = ..())) handle_shade() -/mob/living/simple_animal/shadekin/proc/handle_shade() +/mob/living/simple_mob/shadekin/proc/handle_shade() //Shifted kin don't gain/lose energy (and save time if we're at the cap) var/darkness = 1 @@ -330,7 +330,7 @@ energyhud.icon_state = "energy4" //Friendly ones wander towards people, maybe shy-ly if they are set to shy -/mob/living/simple_animal/shadekin/handle_wander_movement() +/mob/living/simple_mob/shadekin/handle_wander_movement() if(isturf(src.loc) && !resting && !buckled && canmove) lifes_since_move++ if(lifes_since_move >= turns_per_move) @@ -384,10 +384,10 @@ Move(T) lifes_since_move = 0 -/mob/living/simple_animal/shadekin/speech_bubble_appearance() +/mob/living/simple_mob/shadekin/speech_bubble_appearance() return "ghost" -/mob/living/simple_animal/shadekin/DoPunch(var/atom/A) +/mob/living/simple_mob/shadekin/DoPunch(var/atom/A) . = ..(A) if(isliving(A)) //We punched something! var/mob/living/L = A @@ -410,7 +410,7 @@ energy += gains //Special hud elements for darkness and energy gains -/mob/living/simple_animal/shadekin/extra_huds(var/datum/hud/hud,var/icon/ui_style,var/list/hud_elements) +/mob/living/simple_mob/shadekin/extra_huds(var/datum/hud/hud,var/icon/ui_style,var/list/hud_elements) //Darkness hud darkhud = new /obj/screen() darkhud.icon = ui_style @@ -430,7 +430,7 @@ hud_elements |= energyhud // When someone clicks us with an empty hand -/mob/living/simple_animal/shadekin/attack_hand(mob/living/carbon/human/M as mob) +/mob/living/simple_mob/shadekin/attack_hand(mob/living/carbon/human/M as mob) . = ..() if(M.a_intent == I_HELP) shy_approach = FALSE //ACCLIMATED diff --git a/code/modules/mob/living/simple_animal/vore/shadekin/types.dm b/code/modules/mob/living/simple_animal/vore/shadekin/types.dm index 6dcf7645c7..b236ec9753 100644 --- a/code/modules/mob/living/simple_animal/vore/shadekin/types.dm +++ b/code/modules/mob/living/simple_animal/vore/shadekin/types.dm @@ -1,5 +1,5 @@ ///////////////////////////////////////////////////////////////// -/mob/living/simple_animal/shadekin/red +/mob/living/simple_mob/shadekin/red name = "red-eyed shadekin" eye_state = RED_EYES hostile = TRUE @@ -28,15 +28,15 @@ a brawl, but you barely generate any of your own energy. You can stand in a dark spot to gather scraps \ of energy in a pinch, but otherwise need to take it, by force if necessary." -/mob/living/simple_animal/shadekin/red/white +/mob/living/simple_mob/shadekin/red/white icon_state = "white" -/mob/living/simple_animal/shadekin/red/dark +/mob/living/simple_mob/shadekin/red/dark icon_state = "dark" -/mob/living/simple_animal/shadekin/red/brown +/mob/living/simple_mob/shadekin/red/brown icon_state = "brown" ///////////////////////////////////////////////////////////////// -/mob/living/simple_animal/shadekin/blue +/mob/living/simple_mob/shadekin/blue name = "blue-eyed shadekin" eye_state = BLUE_EYES health = 100 @@ -75,15 +75,15 @@ without doing so, albeit slowly. Dark and light are irrelevant to you, they are just different places to explore and \ discover new things and new people." -/mob/living/simple_animal/shadekin/blue/white +/mob/living/simple_mob/shadekin/blue/white icon_state = "white" -/mob/living/simple_animal/shadekin/blue/dark +/mob/living/simple_mob/shadekin/blue/dark icon_state = "dark" -/mob/living/simple_animal/shadekin/blue/brown +/mob/living/simple_mob/shadekin/blue/brown icon_state = "brown" ///////////////////////////////////////////////////////////////// -/mob/living/simple_animal/shadekin/purple +/mob/living/simple_mob/shadekin/purple name = "purple-eyed shadekin" eye_state = PURPLE_EYES health = 150 @@ -117,15 +117,15 @@ areas is taxing on your energy. You can harvest energy from others in a fight, but since you don't need to, you may \ just choose to simply not fight." -/mob/living/simple_animal/shadekin/purple/white +/mob/living/simple_mob/shadekin/purple/white icon_state = "white" -/mob/living/simple_animal/shadekin/purple/dark +/mob/living/simple_mob/shadekin/purple/dark icon_state = "dark" -/mob/living/simple_animal/shadekin/purple/brown +/mob/living/simple_mob/shadekin/purple/brown icon_state = "brown" ///////////////////////////////////////////////////////////////// -/mob/living/simple_animal/shadekin/yellow +/mob/living/simple_mob/shadekin/yellow name = "yellow-eyed shadekin" eye_state = YELLOW_EYES health = 100 @@ -157,15 +157,15 @@ area is very taxing on you, but you gain energy extremely fast in any very dark area. You're weaker than other \ shadekin, but your fast energy generation in the dark allows you to phase shift more often." -/mob/living/simple_animal/shadekin/yellow/white +/mob/living/simple_mob/shadekin/yellow/white icon_state = "white" -/mob/living/simple_animal/shadekin/yellow/dark +/mob/living/simple_mob/shadekin/yellow/dark icon_state = "dark" -/mob/living/simple_animal/shadekin/yellow/brown +/mob/living/simple_mob/shadekin/yellow/brown icon_state = "brown" ///////////////////////////////////////////////////////////////// -/mob/living/simple_animal/shadekin/green +/mob/living/simple_mob/shadekin/green name = "green-eyed shadekin" eye_state = GREEN_EYES health = 125 @@ -197,15 +197,15 @@ have more experience than your yellow-eyed cousins. You gain energy decently fast in any very dark area. You're weaker than other \ shadekin, but your slight energy generation constnatly, and especially in the dark allows for a good mix of uses." -/mob/living/simple_animal/shadekin/green/white +/mob/living/simple_mob/shadekin/green/white icon_state = "white" -/mob/living/simple_animal/shadekin/green/dark +/mob/living/simple_mob/shadekin/green/dark icon_state = "dark" -/mob/living/simple_animal/shadekin/green/brown +/mob/living/simple_mob/shadekin/green/brown icon_state = "brown" ///////////////////////////////////////////////////////////////// -/mob/living/simple_animal/shadekin/orange +/mob/living/simple_mob/shadekin/orange name = "orange-eyed shadekin" eye_state = ORANGE_EYES health = 175 @@ -234,16 +234,16 @@ You're stronger than most shadekin, faster, and more capable in a brawl, but you don't generate much of your own energy. \ You can stand in a dark spot to gather some energy, but otherwise need to take it, by force if necessary." -/mob/living/simple_animal/shadekin/orange/white +/mob/living/simple_mob/shadekin/orange/white icon_state = "white" -/mob/living/simple_animal/shadekin/orange/dark +/mob/living/simple_mob/shadekin/orange/dark icon_state = "dark" -/mob/living/simple_animal/shadekin/orange/brown +/mob/living/simple_mob/shadekin/orange/brown icon_state = "brown" ///////////////////////////////////////////////////////////////// //Fluffy specific fluffer -/mob/living/simple_animal/shadekin/blue/rivyr +/mob/living/simple_mob/shadekin/blue/rivyr name = "Rivyr" desc = "She appears to be a fluffer of some sort. Deep blue eyes and curious attitude." icon_state = "rivyr" diff --git a/code/modules/mob/living/simple_animal/vore/snake.dm b/code/modules/mob/living/simple_animal/vore/snake.dm index 8d60989478..9509f4b97e 100644 --- a/code/modules/mob/living/simple_animal/vore/snake.dm +++ b/code/modules/mob/living/simple_animal/vore/snake.dm @@ -1,4 +1,4 @@ -/mob/living/simple_animal/hostile/giant_snake +/mob/living/simple_mob/hostile/giant_snake name = "giant snake" desc = "Snakes. Why did it have to be snakes?" icon = 'icons/mob/vore64x64.dmi' @@ -21,7 +21,7 @@ pixel_y = -16 // Activate Noms! -/mob/living/simple_animal/hostile/giant_snake +/mob/living/simple_mob/hostile/giant_snake vore_active = 1 vore_pounce_chance = 25 vore_icons = SA_ICON_LIVING diff --git a/code/modules/mob/living/simple_animal/vore/solargrub.dm b/code/modules/mob/living/simple_animal/vore/solargrub.dm index 6e34a1c2d1..94db615ec5 100644 --- a/code/modules/mob/living/simple_animal/vore/solargrub.dm +++ b/code/modules/mob/living/simple_animal/vore/solargrub.dm @@ -10,7 +10,7 @@ List of things solar grubs should be able to do: #define SINK_POWER 1 -/mob/living/simple_animal/retaliate/solargrub +/mob/living/simple_mob/retaliate/solargrub name = "juvenile solargrub" desc = "A young sparkling solargrub" icon = 'icons/mob/vore.dmi' //all of these are placeholders @@ -54,13 +54,13 @@ List of things solar grubs should be able to do: var/obj/structure/cable/attached // the attached cable var/emp_chance = 20 // Beware synths -/mob/living/simple_animal/retaliate/solargrub/PunchTarget() +/mob/living/simple_mob/retaliate/solargrub/PunchTarget() if(target_mob&& prob(emp_chance)) target_mob.emp_act(4) //The weakest strength of EMP visible_message("The grub releases a powerful shock!") ..() -/mob/living/simple_animal/retaliate/solargrub/Life() +/mob/living/simple_mob/retaliate/solargrub/Life() . = ..() if(!. || ai_inactive) return @@ -90,7 +90,7 @@ List of things solar grubs should be able to do: anchored = 0 PN = null -/mob/living/simple_animal/retaliate/solargrub //active noms +/mob/living/simple_mob/retaliate/solargrub //active noms vore_bump_chance = 50 vore_bump_emote = "applies minimal effort to try and slurp up" vore_active = 1 @@ -98,7 +98,7 @@ List of things solar grubs should be able to do: vore_pounce_chance = 0 //grubs only eat incapacitated targets vore_default_mode = DM_DIGEST -/mob/living/simple_animal/retaliate/solargrub/PunchTarget() +/mob/living/simple_mob/retaliate/solargrub/PunchTarget() . = ..() if(isliving(.)) var/mob/living/L = . @@ -107,12 +107,12 @@ List of things solar grubs should be able to do: L << "You feel a shock rushing through your veins." L.reagents.add_reagent(poison_type, poison_per_bite) -/mob/living/simple_animal/retaliate/solargrub/death() +/mob/living/simple_mob/retaliate/solargrub/death() src.anchored = 0 set_light(0) ..() -/mob/living/simple_animal/retaliate/solargrub/handle_light() +/mob/living/simple_mob/retaliate/solargrub/handle_light() . = ..() if(. == 0 && !is_dead()) set_light(2.5, 1, COLOR_YELLOW) diff --git a/code/modules/mob/living/simple_animal/vore/solargrub_larva.dm b/code/modules/mob/living/simple_animal/vore/solargrub_larva.dm index d97c12dd33..0fd32be6ee 100644 --- a/code/modules/mob/living/simple_animal/vore/solargrub_larva.dm +++ b/code/modules/mob/living/simple_animal/vore/solargrub_larva.dm @@ -1,6 +1,6 @@ var/global/list/grub_machine_overlays = list() -/mob/living/simple_animal/solargrub_larva +/mob/living/simple_mob/solargrub_larva name = "solargrub larva" desc = "A tiny wormy thing that can grow to massive sizes under the right conditions." icon = 'icons/mob/vore.dmi' @@ -10,7 +10,7 @@ var/global/list/grub_machine_overlays = list() health = 5 maxHealth = 5 - + meat_amount = 2 meat_type = /obj/item/weapon/reagent_containers/food/snacks/meat/grubmeat @@ -43,7 +43,7 @@ var/global/list/grub_machine_overlays = list() var/power_drained = 0 var/forced_out = 0 -/mob/living/simple_animal/solargrub_larva/New() +/mob/living/simple_mob/solargrub_larva/New() ..() powermachine = new(src) sparks = new(src) @@ -51,19 +51,19 @@ var/global/list/grub_machine_overlays = list() sparks.attach(src) verbs += /mob/living/proc/ventcrawl -/mob/living/simple_animal/solargrub_larva/death() +/mob/living/simple_mob/solargrub_larva/death() powermachine.draining = 0 set_light(0) return ..() -/mob/living/simple_animal/solargrub_larva/Destroy() +/mob/living/simple_mob/solargrub_larva/Destroy() QDEL_NULL(powermachine) QDEL_NULL(sparks) QDEL_NULL(machine_effect) target_vent = null return ..() -/mob/living/simple_animal/solargrub_larva/Life() +/mob/living/simple_mob/solargrub_larva/Life() . = ..() if(machine_effect && !istype(loc, /obj/machinery)) @@ -129,7 +129,7 @@ var/global/list/grub_machine_overlays = list() WanderTowards(get_turf(picked)) return -/mob/living/simple_animal/solargrub_larva/proc/enter_machine(var/obj/machinery/M) +/mob/living/simple_mob/solargrub_larva/proc/enter_machine(var/obj/machinery/M) if(!istype(M)) return forceMove(M) @@ -141,13 +141,13 @@ var/global/list/grub_machine_overlays = list() for(var/mob/L in player_list) //because nearly every machine updates its icon by removing all overlays first L << machine_effect -/mob/living/simple_animal/solargrub_larva/proc/generate_machine_effect(var/obj/machinery/M) +/mob/living/simple_mob/solargrub_larva/proc/generate_machine_effect(var/obj/machinery/M) var/icon/I = new /icon(M.icon, M.icon_state) I.Blend(new /icon('icons/effects/blood.dmi', rgb(255,255,255)),ICON_ADD) I.Blend(new /icon('icons/effects/alert.dmi', "_red"),ICON_MULTIPLY) grub_machine_overlays[M.type] = I -/mob/living/simple_animal/solargrub_larva/proc/eject_from_machine(var/obj/machinery/M) +/mob/living/simple_mob/solargrub_larva/proc/eject_from_machine(var/obj/machinery/M) if(!M) if(istype(loc, /obj/machinery)) M = loc @@ -160,7 +160,7 @@ var/global/list/grub_machine_overlays = list() forced_out += rand(5,15) powermachine.draining = 1 -/mob/living/simple_animal/solargrub_larva/proc/do_ventcrawl(var/obj/machinery/atmospherics/unary/vent_pump/vent) +/mob/living/simple_mob/solargrub_larva/proc/do_ventcrawl(var/obj/machinery/atmospherics/unary/vent_pump/vent) if(!vent) return var/obj/machinery/atmospherics/unary/vent_pump/end_vent = get_safe_ventcrawl_target(vent) @@ -184,15 +184,15 @@ var/global/list/grub_machine_overlays = list() playsound(end_vent, 'sound/machines/ventcrawl.ogg', 50, 1, -3) forceMove(get_turf(end_vent)) -/mob/living/simple_animal/solargrub_larva/proc/expand_grub() +/mob/living/simple_mob/solargrub_larva/proc/expand_grub() eject_from_machine() visible_message("\The [src] suddenly balloons in size!") - new /mob/living/simple_animal/retaliate/solargrub(get_turf(src)) -// var/mob/living/simple_animal/retaliate/solargrub/grub = new(get_turf(src)) + new /mob/living/simple_mob/retaliate/solargrub(get_turf(src)) +// var/mob/living/simple_mob/retaliate/solargrub/grub = new(get_turf(src)) // grub.power_drained = power_drained //TODO qdel(src) -/mob/living/simple_animal/solargrub_larva/handle_light() +/mob/living/simple_mob/solargrub_larva/handle_light() . = ..() if(. == 0 && !is_dead()) set_light(1.5, 1, COLOR_YELLOW) @@ -205,7 +205,7 @@ var/global/list/grub_machine_overlays = list() var/total_idle_power_usage = 3 KILOWATTS var/list/idle_power_usages = list(1 KILOWATTS, 1 KILOWATTS, 1 KILOWATTS) var/draining = 1 - var/mob/living/simple_animal/solargrub_larva/grub + var/mob/living/simple_mob/solargrub_larva/grub /obj/machinery/abstract_grub_machine/New() ..() @@ -248,7 +248,7 @@ var/global/list/grub_machine_overlays = list() /obj/item/device/multitool/afterattack(obj/O, mob/user, proximity) if(proximity) if(istype(O, /obj/machinery)) - var/mob/living/simple_animal/solargrub_larva/grub = locate() in O + var/mob/living/simple_mob/solargrub_larva/grub = locate() in O if(grub) grub.eject_from_machine(O) to_chat(user, "You disturb a grub nesting in \the [O]!") diff --git a/code/modules/mob/living/simple_animal/vore/wolf.dm b/code/modules/mob/living/simple_animal/vore/wolf.dm index fe3a970ac0..ac286b2f1d 100644 --- a/code/modules/mob/living/simple_animal/vore/wolf.dm +++ b/code/modules/mob/living/simple_animal/vore/wolf.dm @@ -1,4 +1,4 @@ -/mob/living/simple_animal/hostile/wolf +/mob/living/simple_mob/hostile/wolf name = "grey wolf" desc = "My, what big jaws it has!" tt_desc = "Canis lupus" @@ -22,6 +22,6 @@ minbodytemp = 200 // Activate Noms! -/mob/living/simple_animal/hostile/wolf +/mob/living/simple_mob/hostile/wolf vore_active = 1 vore_icons = SA_ICON_LIVING diff --git a/code/modules/mob/living/simple_animal/vore/wolfgirl.dm b/code/modules/mob/living/simple_animal/vore/wolfgirl.dm index 301b4e6dc5..152ba5b1c8 100644 --- a/code/modules/mob/living/simple_animal/vore/wolfgirl.dm +++ b/code/modules/mob/living/simple_animal/vore/wolfgirl.dm @@ -1,4 +1,4 @@ -/mob/living/simple_animal/retaliate/wolfgirl +/mob/living/simple_mob/retaliate/wolfgirl name = "wolfgirl" desc = "AwooOOOOoooo!" tt_desc = "Homo lupus" @@ -48,7 +48,7 @@ var/loopstop = 0 //To prevent circular awoooos. -/mob/living/simple_animal/retaliate/wolfgirl/hear_say() +/mob/living/simple_mob/retaliate/wolfgirl/hear_say() if(world.time - loopstop < 5 SECONDS) return else @@ -56,7 +56,7 @@ ..() // Activate Noms! -/mob/living/simple_animal/retaliate/wolfgirl +/mob/living/simple_mob/retaliate/wolfgirl vore_active = 1 vore_pounce_chance = 40 vore_icons = SA_ICON_LIVING diff --git a/code/modules/mob/living/simple_animal/vore/zz_vore_overrides.dm b/code/modules/mob/living/simple_animal/vore/zz_vore_overrides.dm index fb4d74d360..5fbf002795 100644 --- a/code/modules/mob/living/simple_animal/vore/zz_vore_overrides.dm +++ b/code/modules/mob/living/simple_animal/vore/zz_vore_overrides.dm @@ -3,12 +3,12 @@ // /* -## For anything that previously inhertited from: /mob/living/simple_animal/hostile/vore ## +## For anything that previously inhertited from: /mob/living/simple_mob/hostile/vore ## vore_active = 1 icon = 'icons/mob/vore.dmi' -## For anything that previously inhertied from: /mob/living/simple_animal/hostile/vore/large ## +## For anything that previously inhertied from: /mob/living/simple_mob/hostile/vore/large ## vore_active = 1 icon = 'icons/mob/vore64x64.dmi' @@ -23,7 +23,7 @@ // Okay! Here we go! // -/mob/living/simple_animal/hostile/alien +/mob/living/simple_mob/hostile/alien vore_active = 1 icon = 'icons/mob/vore.dmi' icon_state = "xenohunter" @@ -32,7 +32,7 @@ icon_gib = "gibbed-a" vore_icons = SA_ICON_LIVING -/mob/living/simple_animal/hostile/alien/drone +/mob/living/simple_mob/hostile/alien/drone vore_active = 1 icon = 'icons/mob/vore.dmi' icon_state = "xenodrone" @@ -41,7 +41,7 @@ icon_gib = "gibbed-a" vore_icons = SA_ICON_LIVING -/mob/living/simple_animal/hostile/alien/sentinel +/mob/living/simple_mob/hostile/alien/sentinel vore_active = 1 icon = 'icons/mob/vore.dmi' icon_state = "xenosentinel" @@ -50,7 +50,7 @@ icon_gib = "gibbed-a" vore_icons = SA_ICON_LIVING -/mob/living/simple_animal/hostile/alien/queen +/mob/living/simple_mob/hostile/alien/queen vore_active = 1 icon = 'icons/mob/vore.dmi' icon_state = "xenoqueen" @@ -59,7 +59,7 @@ icon_gib = "gibbed-a" vore_icons = SA_ICON_LIVING -/mob/living/simple_animal/hostile/alien/queen/empress +/mob/living/simple_mob/hostile/alien/queen/empress vore_active = 1 icon = 'icons/mob/vore64x64.dmi' icon_state = "queen_s" @@ -75,14 +75,14 @@ vore_capacity = 3 vore_pounce_chance = 75 -/mob/living/simple_animal/hostile/alien/sentinel/praetorian +/mob/living/simple_mob/hostile/alien/sentinel/praetorian icon = 'icons/mob/vore64x64.dmi' vore_icons = SA_ICON_LIVING | SA_ICON_REST -/mob/living/simple_animal/hostile/alien/queen/empress/mother +/mob/living/simple_mob/hostile/alien/queen/empress/mother vore_icons = 0 // NO VORE SPRITES -/mob/living/simple_animal/hostile/bear +/mob/living/simple_mob/hostile/bear vore_active = 1 icon = 'icons/mob/vore.dmi' icon_state = "spacebear" @@ -91,10 +91,10 @@ icon_gib = "bear-gib" vore_icons = SA_ICON_LIVING -/mob/living/simple_animal/hostile/bear/hudson +/mob/living/simple_mob/hostile/bear/hudson name = "Hudson" -/mob/living/simple_animal/hostile/bear/brown +/mob/living/simple_mob/hostile/bear/brown vore_active = 1 icon = 'icons/mob/vore.dmi' name = "brown bear" @@ -104,12 +104,12 @@ icon_gib = "bear-gib" vore_icons = SA_ICON_LIVING -/mob/living/simple_animal/hostile/carp +/mob/living/simple_mob/hostile/carp icon = 'icons/mob/vore.dmi' vore_active = 1 vore_icons = SA_ICON_LIVING -/mob/living/simple_animal/hostile/creature/vore +/mob/living/simple_mob/hostile/creature/vore vore_active = 1 // NO VORE SPRITES vore_capacity = 0 @@ -120,7 +120,7 @@ health = 80 // Increase health to compensate maxHealth = 80 -/mob/living/simple_animal/hostile/mimic +/mob/living/simple_mob/hostile/mimic vore_active = 1 // NO VORE SPRITES vore_capacity = 0 @@ -129,42 +129,42 @@ maxHealth = 60 health = 60 -/mob/living/simple_animal/cat +/mob/living/simple_mob/cat vore_active = 1 // NO VORE SPRITES specific_targets = 0 // Targeting UNLOCKED vore_max_size = RESIZE_TINY -/mob/living/simple_animal/cat/PunchTarget() - if(istype(target_mob,/mob/living/simple_animal/mouse)) +/mob/living/simple_mob/cat/PunchTarget() + if(istype(target_mob,/mob/living/simple_mob/mouse)) visible_message("\The [src] pounces on \the [target_mob]!]") target_mob.Stun(5) return EatTarget() else ..() -/mob/living/simple_animal/cat/Found(var/atom/found_atom) +/mob/living/simple_mob/cat/Found(var/atom/found_atom) if(!SA_attackable(found_atom)) return null - if(istype(found_atom,/mob/living/simple_animal/mouse)) + if(istype(found_atom,/mob/living/simple_mob/mouse)) return found_atom if(found_atom in friends) return null if(will_eat(found_atom)) return found_atom -/mob/living/simple_animal/cat/fluff/Found(var/atom/found_atom) +/mob/living/simple_mob/cat/fluff/Found(var/atom/found_atom) if (friend == found_atom) return null return ..() -/mob/living/simple_animal/cat/fluff +/mob/living/simple_mob/cat/fluff vore_ignores_undigestable = 0 vore_pounce_chance = 100 vore_digest_chance = 0 // just use the toggle vore_default_mode = DM_HOLD //can use the toggle if you wanna be catfood vore_standing_too = TRUE //gonna get pounced -/mob/living/simple_animal/cat/fluff/EatTarget() +/mob/living/simple_mob/cat/fluff/EatTarget() var/mob/living/TM = target_mob prey_excludes += TM //so they won't immediately re-eat someone who struggles out (or gets newspapered out) as soon as they're ate spawn(3600) // but if they hang around and get comfortable, they might get ate again @@ -172,39 +172,39 @@ prey_excludes -= TM ..() // will_eat check is carried out before EatTarget is called, so prey on the prey_excludes list isn't a problem. -/mob/living/simple_animal/fox +/mob/living/simple_mob/fox vore_active = 1 // NO VORE SPRITES vore_max_size = RESIZE_TINY -/mob/living/simple_animal/fox/PunchTarget() - if(istype(target_mob,/mob/living/simple_animal/mouse)) +/mob/living/simple_mob/fox/PunchTarget() + if(istype(target_mob,/mob/living/simple_mob/mouse)) return EatTarget() else ..() -/mob/living/simple_animal/fox/Found(var/atom/found_atom) +/mob/living/simple_mob/fox/Found(var/atom/found_atom) if(!SA_attackable(found_atom)) return null - if(istype(found_atom,/mob/living/simple_animal/mouse)) + if(istype(found_atom,/mob/living/simple_mob/mouse)) return found_atom if(found_atom in friends) return null if(will_eat(found_atom)) return found_atom -/mob/living/simple_animal/fox/fluff/Found(var/atom/found_atom) +/mob/living/simple_mob/fox/fluff/Found(var/atom/found_atom) if (friend == found_atom) return null return ..() -/mob/living/simple_animal/fox/fluff +/mob/living/simple_mob/fox/fluff vore_ignores_undigestable = 0 vore_pounce_chance = 100 vore_digest_chance = 0 // just use the toggle vore_default_mode = DM_HOLD //can use the toggle if you wanna be foxfood vore_standing_too = TRUE // gonna get pounced -/mob/living/simple_animal/fox/fluff/EatTarget() +/mob/living/simple_mob/fox/fluff/EatTarget() var/mob/living/TM = target_mob prey_excludes += TM //so they won't immediately re-eat someone who struggles out (or gets newspapered out) as soon as they're ate spawn(3600) // but if they hang around and get comfortable, they might get ate again @@ -212,39 +212,39 @@ prey_excludes -= TM ..() // will_eat check is carried out before EatTarget is called, so prey on the prey_excludes list isn't a problem. -/mob/living/simple_animal/hostile/goose +/mob/living/simple_mob/hostile/goose vore_active = 1 // NO VORE SPRITES vore_max_size = RESIZE_SMALL -/mob/living/simple_animal/penguin +/mob/living/simple_mob/penguin vore_active = 1 // NO VORE SPRITES vore_max_size = RESIZE_SMALL -/mob/living/simple_animal/hostile/carp/pike +/mob/living/simple_mob/hostile/carp/pike vore_active = 1 // NO VORE SPRITES -/mob/living/simple_animal/hostile/carp/holodeck +/mob/living/simple_mob/hostile/carp/holodeck vore_icons = 0 // NO VORE SPRITES vore_digest_chance = 0 vore_absorb_chance = 0 // Override stuff for holodeck carp to make them not digest when set to safe! -/mob/living/simple_animal/hostile/carp/holodeck/init_vore() +/mob/living/simple_mob/hostile/carp/holodeck/init_vore() . = ..() var/safe = (faction == "neutral") for(var/belly in vore_organs) var/obj/belly/B = belly B.digest_mode = safe ? DM_HOLD : vore_default_mode -/mob/living/simple_animal/hostile/carp/holodeck/set_safety(var/safe) +/mob/living/simple_mob/hostile/carp/holodeck/set_safety(var/safe) . = ..() for(var/belly in vore_organs) var/obj/belly/B = belly B.digest_mode = safe ? DM_HOLD : vore_default_mode -/mob/living/simple_animal/mouse +/mob/living/simple_mob/mouse faction = "mouse" //Giving mice a faction so certain mobs can get along with them. \ No newline at end of file diff --git a/code/modules/mob/living/simple_mob/appearance.dm b/code/modules/mob/living/simple_mob/appearance.dm new file mode 100644 index 0000000000..05f758d7c4 --- /dev/null +++ b/code/modules/mob/living/simple_mob/appearance.dm @@ -0,0 +1,76 @@ +/mob/living/simple_mob/update_icon() + . = ..() + cut_overlays() +// var/mutable_appearance/ma = new(src) +// ma.layer = layer +// ma.plane = plane + + add_overlay(modifier_overlay) + + if(!icon_living) // Prevent the mob from turning invisible if icon_living is null. + icon_living = initial(icon_state) + + //Awake and normal + if((stat == CONSCIOUS) && (!icon_rest || !resting || !incapacitated(INCAPACITATION_DISABLED) )) + icon_state = icon_living + + //Dead + else if(stat >= DEAD) + icon_state = icon_dead + + //Resting or KO'd + else if(((stat == UNCONSCIOUS) || resting || incapacitated(INCAPACITATION_DISABLED) ) && icon_rest) + icon_state = icon_rest + + //Backup + else + icon_state = initial(icon_state) + + if(has_hands) + if(r_hand_sprite) + add_overlay(r_hand_sprite) + if(l_hand_sprite) + add_overlay(l_hand_sprite) + + if(has_eye_glow) + if(icon_state != icon_living) + remove_eyes() + else + add_eyes() + +// appearance = ma + + +// If your simple mob's update_icon() call calls overlays.Cut(), this needs to be called after this, or manually apply modifier_overly to overlays. +/mob/living/simple_mob/update_modifier_visuals() + var/image/effects = null + if(modifier_overlay) + cut_overlay(modifier_overlay) + modifier_overlay.cut_overlays() + effects = modifier_overlay + else + effects = new() + + for(var/datum/modifier/M in modifiers) + if(M.mob_overlay_state) + var/image/I = image("icon" = 'icons/mob/modifier_effects.dmi', "icon_state" = M.mob_overlay_state) + I.appearance_flags = RESET_COLOR // So colored mobs don't affect the overlay. + effects.add_overlay(I) + + modifier_overlay = effects + add_overlay(modifier_overlay) + + +/mob/living/simple_mob/proc/add_eyes() + if(!eye_layer) + eye_layer = image(icon, "[icon_state]-eyes") + eye_layer.plane = PLANE_LIGHTING_ABOVE + + add_overlay(eye_layer) + +/mob/living/simple_mob/proc/remove_eyes() + cut_overlay(eye_layer) + + +/mob/living/simple_mob/gib() + ..(icon_gib,1,icon) // we need to specify where the gib animation is stored \ No newline at end of file diff --git a/code/modules/mob/living/simple_mob/combat.dm b/code/modules/mob/living/simple_mob/combat.dm new file mode 100644 index 0000000000..0f3205fb8c --- /dev/null +++ b/code/modules/mob/living/simple_mob/combat.dm @@ -0,0 +1,260 @@ +// Does a melee attack. +/mob/living/simple_mob/proc/attack_target(atom/A) + set waitfor = FALSE // For attack animations. Don't want the AI processor to get held up. + + if(!A.Adjacent(src)) + return FALSE + var/turf/their_T = get_turf(A) + + face_atom(A) + + if(melee_attack_delay) + // their_T.color = "#FF0000" + melee_pre_animation(A) + handle_attack_delay(A, melee_attack_delay) // This will sleep this proc for a bit, which is why waitfor is false. + + // Cooldown testing is done at click code (for players) and interface code (for AI). + setClickCooldown(get_attack_speed()) + + . = do_attack(A, their_T) + + if(melee_attack_delay) + melee_post_animation(A) + // their_T.color = "#FFFFFF" + + + +// This does the actual attack. +// This is a seperate proc for the purposes of attack animations. +// A is the thing getting attacked, T is the turf A is/was on when attack_target was called. +/mob/living/simple_mob/proc/do_attack(atom/A, turf/T) + face_atom(A) + var/missed = FALSE + if(!isturf(A) && !(A in T) ) // Turfs don't contain themselves so checking contents is pointless if we're targeting a turf. + missed = TRUE + else if(!T.AdjacentQuick(src)) + missed = TRUE + + if(missed) // Most likely we have a slow attack and they dodged it or we somehow got moved. + add_attack_logs(src, A, "Animal-attacked (dodged)", admin_notify = FALSE) + playsound(src, 'sound/weapons/punchmiss.ogg', 75, 1) + visible_message(span("warning", "\The [src] misses their attack.")) + return FALSE + + var/damage_to_do = rand(melee_damage_lower, melee_damage_upper) + + damage_to_do = apply_bonus_melee_damage(A, damage_to_do) + + for(var/datum/modifier/M in modifiers) + if(!isnull(M.outgoing_melee_damage_percent)) + damage_to_do *= M.outgoing_melee_damage_percent + + if(isliving(A)) // Check defenses. + var/mob/living/L = A + + if(prob(melee_miss_chance)) + add_attack_logs(src, L, "Animal-attacked (miss)", admin_notify = FALSE) + do_attack_animation(src) + playsound(src, 'sound/weapons/punchmiss.ogg', 75, 1) + return FALSE // We missed. + + if(ishuman(L)) + var/mob/living/carbon/human/H = L + if(H.check_shields(damage = damage_to_do, damage_source = src, attacker = src, def_zone = null, attack_text = "the attack")) + return FALSE // We were blocked. + + if(apply_attack(A, damage_to_do)) + apply_melee_effects(A) + if(attack_sound) + playsound(src, attack_sound, 75, 1) + + return TRUE + +// Generally used to do the regular attack. +// Override for doing special stuff with the direct result of the attack. +/mob/living/simple_mob/proc/apply_attack(atom/A, damage_to_do) + return A.attack_generic(src, damage_to_do, pick(attacktext)) + +// Override for special effects after a successful attack, like injecting poison or stunning the target. +/mob/living/simple_mob/proc/apply_melee_effects(atom/A) + return + +// Override to modify the amount of damage the mob does conditionally. +// This must return the amount of outgoing damage. +// Note that this is done before mob modifiers scale the damage. +/mob/living/simple_mob/proc/apply_bonus_melee_damage(atom/A, damage_amount) + return damage_amount + +//The actual top-level ranged attack proc +/mob/living/simple_mob/proc/shoot_target(atom/A) + set waitfor = FALSE + setClickCooldown(get_attack_speed()) + + face_atom(A) + + if(ranged_attack_delay) + ranged_pre_animation(A) + handle_attack_delay(A, ranged_attack_delay) // This will sleep this proc for a bit, which is why waitfor is false. + + if(needs_reload) + if(reload_count >= reload_max) + try_reload() + return FALSE + + visible_message("\The [src] fires at \the [A]!") + shoot(A) + if(casingtype) + new casingtype(loc) + + if(ranged_attack_delay) + ranged_post_animation(A) + + return TRUE + + +// Shoot a bullet at something. +/mob/living/simple_mob/proc/shoot(atom/A) + if(A == get_turf(src)) + return + + face_atom(A) + + var/obj/item/projectile/P = new projectiletype(src.loc) + if(!P) + return + + // If the projectile has its own sound, use it. + // Otherwise default to the mob's firing sound. + playsound(src, P.fire_sound ? P.fire_sound : projectilesound, 80, 1) + + // For some reason there isn't an argument for accuracy, so access the projectile directly instead. + // Also, placing dispersion here instead of in forced_spread will randomize the chosen angle between dispersion and -dispersion in fire() instead of having to do that here. + P.accuracy += calculate_accuracy() + P.dispersion += calculate_dispersion() + + P.launch_projectile(target = A, target_zone = null, user = src, params = null, angle_override = null, forced_spread = 0) + if(needs_reload) + reload_count++ + +// if(distance >= special_attack_min_range && distance <= special_attack_max_range) +// return TRUE + +/mob/living/simple_mob/proc/try_reload() + set waitfor = FALSE + set_AI_busy(TRUE) + + if(do_after(src, reload_time)) + if(reload_sound) + playsound(src.loc, reload_sound, 50, 1) + reload_count = 0 + . = TRUE + else + . = FALSE + set_AI_busy(FALSE) + +/mob/living/simple_mob/proc/calculate_dispersion() + . = projectile_dispersion // Start with the basic var. + + // Some modifiers change dispersion. This makes simple_mobs respect that. + for(var/datum/modifier/M in modifiers) + if(!isnull(M.accuracy_dispersion)) + . += M.accuracy_dispersion + + // Make sure we don't go under zero dispersion. + . = max(., 0) + +/mob/living/simple_mob/proc/calculate_accuracy() + . = projectile_accuracy // Start with the basic var. + + // Some modifiers make it harder or easier to hit things. + for(var/datum/modifier/M in modifiers) + if(!isnull(M.accuracy)) + . += M.accuracy + +// Can we currently do a special attack? +/mob/living/simple_mob/proc/can_special_attack(atom/A) + // Validity check. + if(!istype(A)) + return FALSE + + // Ability check. + if(isnull(special_attack_min_range) || isnull(special_attack_max_range)) + return FALSE + + // Distance check. + var/distance = get_dist(src, A) + if(distance < special_attack_min_range || distance > special_attack_max_range) + return FALSE + + // Cooldown check. + if(!isnull(special_attack_cooldown) && last_special_attack + special_attack_cooldown > world.time) + return FALSE + + // Charge check. + if(!isnull(special_attack_charges) && special_attack_charges <= 0) + return FALSE + + return TRUE + +// Should we do one? Used to make the AI not waste their special attacks. Only checked for AI. Players are free to screw up on their own. +/mob/living/simple_mob/proc/should_special_attack(atom/A) + return TRUE + +// Special attacks, like grenades or blinding spit or whatever. +// Don't override this, override do_special_attack() for your blinding spit/etc. +/mob/living/simple_mob/proc/special_attack_target(atom/A) + face_atom(A) + + if(special_attack_delay) + special_pre_animation(A) + handle_attack_delay(A, special_attack_delay) // This will sleep this proc for a bit, which is why waitfor is false. + + last_special_attack = world.time + if(do_special_attack(A)) + if(special_attack_charges) + special_attack_charges -= 1 + . = TRUE + else + . = FALSE + + if(special_attack_delay) + special_post_animation(A) + +// Override this for the actual special attack. +/mob/living/simple_mob/proc/do_special_attack(atom/A) + return FALSE + +// Sleeps the proc that called it for the correct amount of time. +// Also makes sure the AI doesn't do anything stupid in the middle of the delay. +/mob/living/simple_mob/proc/handle_attack_delay(atom/A, delay_amount) + set_AI_busy(TRUE) + + // Click delay modifiers also affect telegraphing time. + // This means berserked enemies will leave less time to dodge. + var/true_attack_delay = delay_amount + for(var/datum/modifier/M in modifiers) + if(!isnull(M.attack_speed_percent)) + true_attack_delay *= M.attack_speed_percent + + setClickCooldown(true_attack_delay) // Insurance against a really long attack being longer than default click delay. + + sleep(true_attack_delay) + + set_AI_busy(FALSE) + + +// Override these four for special custom animations (like the GOLEM). +/mob/living/simple_mob/proc/melee_pre_animation(atom/A) + do_windup_animation(A, melee_attack_delay) + +/mob/living/simple_mob/proc/melee_post_animation(atom/A) + +/mob/living/simple_mob/proc/ranged_pre_animation(atom/A) + do_windup_animation(A, ranged_attack_delay) // Semi-placeholder. + +/mob/living/simple_mob/proc/ranged_post_animation(atom/A) + +/mob/living/simple_mob/proc/special_pre_animation(atom/A) + do_windup_animation(A, special_attack_delay) // Semi-placeholder. + +/mob/living/simple_mob/proc/special_post_animation(atom/A) \ No newline at end of file diff --git a/code/modules/mob/living/simple_mob/defense.dm b/code/modules/mob/living/simple_mob/defense.dm new file mode 100644 index 0000000000..744237b21d --- /dev/null +++ b/code/modules/mob/living/simple_mob/defense.dm @@ -0,0 +1,235 @@ +// Hit by a projectile. +/mob/living/simple_mob/bullet_act(var/obj/item/projectile/P) + //Projectiles with bonus SA damage + if(!P.nodamage) + // if(!P.SA_vulnerability || P.SA_vulnerability == intelligence_level) + if(P.SA_vulnerability & mob_class) + P.damage += P.SA_bonus_damage + + . = ..() + + +// When someone clicks us with an empty hand +/mob/living/simple_mob/attack_hand(mob/living/L) + ..() + + switch(L.a_intent) + if(I_HELP) + if(health > 0) + L.visible_message("\The [L] [response_help] \the [src].") + + if(I_DISARM) + L.visible_message("\The [L] [response_disarm] \the [src].") + L.do_attack_animation(src) + //TODO: Push the mob away or something + + if(I_GRAB) + if (L == src) + return + if (!(status_flags & CANPUSH)) + return + if(!incapacitated(INCAPACITATION_ALL) && prob(grab_resist)) + L.visible_message("\The [L] tries to grab \the [src] but fails!") + return + + var/obj/item/weapon/grab/G = new /obj/item/weapon/grab(L, src) + + L.put_in_active_hand(G) + + G.synch() + G.affecting = src + LAssailant = L + + L.visible_message("\The [L] has grabbed [src] passively!") + L.do_attack_animation(src) + + if(I_HURT) + var/armor = run_armor_check(def_zone = null, attack_flag = "melee") + apply_damage(damage = harm_intent_damage, damagetype = BURN, def_zone = null, blocked = armor, blocked = resistance, used_weapon = null, sharp = FALSE, edge = FALSE) + L.visible_message("\The [L] [response_harm] \the [src]!") + L.do_attack_animation(src) + + return + + +// When somoene clicks us with an item in hand +/mob/living/simple_mob/attackby(var/obj/item/O, var/mob/user) + if(istype(O, /obj/item/stack/medical)) + if(stat != DEAD) + // This could be done better. + var/obj/item/stack/medical/MED = O + if(health < getMaxHealth()) + if(MED.amount >= 1) + adjustBruteLoss(-MED.heal_brute) + MED.amount -= 1 + if(MED.amount <= 0) + qdel(MED) + visible_message("\The [user] applies the [MED] on [src].") + else + var/datum/gender/T = gender_datums[src.get_visible_gender()] + to_chat(user, "\The [src] is dead, medical items won't bring [T.him] back to life.") // the gender lookup is somewhat overkill, but it functions identically to the obsolete gender macros and future-proofs this code + if(meat_type && (stat == DEAD)) //if the animal has a meat, and if it is dead. + if(istype(O, /obj/item/weapon/material/knife)) + harvest(user) + + return ..() + + +// Handles the actual harming by a melee weapon. +/mob/living/simple_mob/hit_with_weapon(obj/item/O, mob/living/user, var/effective_force, var/hit_zone) + effective_force = O.force + + //Animals can't be stunned(?) + if(O.damtype == HALLOSS) + effective_force = 0 + if(supernatural && istype(O,/obj/item/weapon/nullrod)) + effective_force *= 2 + purge = 3 + if(O.force <= resistance) + to_chat(user,"This weapon is ineffective, it does no damage.") + return 2 //??? + + . = ..() + + +// Exploding. +/mob/living/simple_mob/ex_act(severity) + if(!blinded) + flash_eyes() + var/armor = run_armor_check(def_zone = null, attack_flag = "bomb") + var/bombdam = 500 + switch (severity) + if (1.0) + bombdam = 500 + if (2.0) + bombdam = 60 + if (3.0) + bombdam = 30 + + apply_damage(damage = bombdam, damagetype = BRUTE, def_zone = null, blocked = armor, blocked = resistance, used_weapon = null, sharp = FALSE, edge = FALSE) + + if(bombdam > maxHealth) + gib() + +// Cold stuff. +/mob/living/simple_mob/get_cold_protection() + return cold_resist + + +// Fire stuff. Not really exciting at the moment. +/mob/living/simple_mob/handle_fire() + return +/mob/living/simple_mob/update_fire() + return +/mob/living/simple_mob/IgniteMob() + return +/mob/living/simple_mob/ExtinguishMob() + return + +/mob/living/simple_mob/get_heat_protection() + return heat_resist + +// Electricity +/mob/living/simple_mob/electrocute_act(var/shock_damage, var/obj/source, var/siemens_coeff = 1.0, var/def_zone = null) + shock_damage *= siemens_coeff + if(shock_damage < 1) + return 0 + + apply_damage(damage = shock_damage, damagetype = BURN, def_zone = null, blocked = null, blocked = resistance, used_weapon = null, sharp = FALSE, edge = FALSE) + playsound(loc, "sparks", 50, 1, -1) + + var/datum/effect/effect/system/spark_spread/s = new /datum/effect/effect/system/spark_spread + s.set_up(5, 1, loc) + s.start() + +/mob/living/simple_mob/get_shock_protection() + return shock_resist + +// Shot with taser/stunvolver +/mob/living/simple_mob/stun_effect_act(var/stun_amount, var/agony_amount, var/def_zone, var/used_weapon=null) + if(taser_kill) + var/stunDam = 0 + var/agonyDam = 0 + var/armor = run_armor_check(def_zone = null, attack_flag = "energy") + + if(stun_amount) + stunDam += stun_amount * 0.5 + apply_damage(damage = stunDam, damagetype = BURN, def_zone = null, blocked = armor, blocked = resistance, used_weapon = used_weapon, sharp = FALSE, edge = FALSE) + + if(agony_amount) + agonyDam += agony_amount * 0.5 + apply_damage(damage = agonyDam, damagetype = BURN, def_zone = null, blocked = armor, blocked = resistance, used_weapon = used_weapon, sharp = FALSE, edge = FALSE) + + +// Electromagnetism +/mob/living/simple_mob/emp_act(severity) + ..() // To emp_act() its contents. + if(!isSynthetic()) + return + switch(severity) + if(1) + // adjustFireLoss(rand(15, 25)) + adjustFireLoss(min(60, getMaxHealth()*0.5)) // Weak mobs will always take two direct EMP hits to kill. Stronger ones might take more. + if(2) + adjustFireLoss(min(30, getMaxHealth()*0.25)) + // adjustFireLoss(rand(10, 18)) + if(3) + adjustFireLoss(min(15, getMaxHealth()*0.125)) + // adjustFireLoss(rand(5, 12)) + if(4) + adjustFireLoss(min(7, getMaxHealth()*0.0625)) + // adjustFireLoss(rand(1, 6)) + +// Water +/mob/living/simple_mob/get_water_protection() + return water_resist + +// "Poison" (aka what reagents would do if we wanted to deal with those). +/mob/living/simple_mob/get_poison_protection() + return poison_resist + +// Armor +/mob/living/simple_mob/getarmor(def_zone, attack_flag) + var/armorval = armor[attack_flag] + if(!armorval) + return 0 + else + return armorval + +/mob/living/simple_mob/getsoak(def_zone, attack_flag) + var/armorval = armor_soak[attack_flag] + if(!armorval) + return 0 + else + return armorval + +// Lightning +/mob/living/simple_mob/lightning_act() + ..() + // If a non-player simple_mob was struck, inflict huge damage. + // If the damage is fatal, it is turned to ash. + if(!client) + inflict_shock_damage(200) // Mobs that are very beefy or resistant to shock may survive getting struck. + updatehealth() + if(health <= 0) + visible_message(span("critical", "\The [src] disintegrates into ash!")) + ash() + return // No point deafening something that wont exist. + +// Lava +/mob/living/simple_mob/lava_act() + ..() + // Similar to lightning, the mob is turned to ash if the lava tick was fatal and it isn't a player. + // Unlike lightning, we don't add an additional damage spike (since lava already hurts a lot). + if(!client) + updatehealth() + if(health <= 0) + visible_message(span("critical", "\The [src] flashes into ash as the lava consumes them!")) + ash() + +// Injections. +/mob/living/simple_mob/can_inject(mob/user, error_msg, target_zone, ignore_thickness) + if(ignore_thickness) + return TRUE + return !thick_armor + diff --git a/code/modules/mob/living/simple_mob/hands.dm b/code/modules/mob/living/simple_mob/hands.dm new file mode 100644 index 0000000000..0e8820fe2e --- /dev/null +++ b/code/modules/mob/living/simple_mob/hands.dm @@ -0,0 +1,143 @@ +// Hand procs for player-controlled SA's +/mob/living/simple_mob/swap_hand() + src.hand = !( src.hand ) + if(hud_used.l_hand_hud_object && hud_used.r_hand_hud_object) + if(hand) //This being 1 means the left hand is in use + hud_used.l_hand_hud_object.icon_state = "l_hand_active" + hud_used.r_hand_hud_object.icon_state = "r_hand_inactive" + else + hud_used.l_hand_hud_object.icon_state = "l_hand_inactive" + hud_used.r_hand_hud_object.icon_state = "r_hand_active" + return + +/mob/living/simple_mob/put_in_hands(var/obj/item/W) // No hands. + if(has_hands) + put_in_active_hand(W) + return 1 + W.forceMove(get_turf(src)) + return 1 + +//Puts the item into our active hand if possible. returns 1 on success. +/mob/living/simple_mob/put_in_active_hand(var/obj/item/W) + if(!has_hands) + return FALSE + return (hand ? put_in_l_hand(W) : put_in_r_hand(W)) + +/mob/living/simple_mob/put_in_l_hand(var/obj/item/W) + if(!..() || l_hand) + return 0 + W.forceMove(src) + l_hand = W + W.equipped(src,slot_l_hand) + W.add_fingerprint(src) + update_inv_l_hand() + return TRUE + +/mob/living/simple_mob/put_in_r_hand(var/obj/item/W) + if(!..() || r_hand) + return 0 + W.forceMove(src) + r_hand = W + W.equipped(src,slot_r_hand) + W.add_fingerprint(src) + update_inv_r_hand() + return TRUE + +/mob/living/simple_mob/update_inv_r_hand() + if(QDESTROYING(src)) + return + + if(r_hand) + r_hand.screen_loc = ui_rhand //TODO + + //determine icon state to use + var/t_state + if(r_hand.item_state_slots && r_hand.item_state_slots[slot_r_hand_str]) + t_state = r_hand.item_state_slots[slot_r_hand_str] + else if(r_hand.item_state) + t_state = r_hand.item_state + else + t_state = r_hand.icon_state + + //determine icon to use + var/icon/t_icon + if(r_hand.item_icons && (slot_r_hand_str in r_hand.item_icons)) + t_icon = r_hand.item_icons[slot_r_hand_str] + else if(r_hand.icon_override) + t_state += "_r" + t_icon = r_hand.icon_override + else + t_icon = INV_R_HAND_DEF_ICON + + //apply color + var/image/standing = image(icon = t_icon, icon_state = t_state) + standing.color = r_hand.color + + r_hand_sprite = standing + + else + r_hand_sprite = null + + update_icon() + +/mob/living/simple_mob/update_inv_l_hand() + if(QDESTROYING(src)) + return + + if(l_hand) + l_hand.screen_loc = ui_lhand //TODO + + //determine icon state to use + var/t_state + if(l_hand.item_state_slots && l_hand.item_state_slots[slot_l_hand_str]) + t_state = l_hand.item_state_slots[slot_l_hand_str] + else if(l_hand.item_state) + t_state = l_hand.item_state + else + t_state = l_hand.icon_state + + //determine icon to use + var/icon/t_icon + if(l_hand.item_icons && (slot_l_hand_str in l_hand.item_icons)) + t_icon = l_hand.item_icons[slot_l_hand_str] + else if(l_hand.icon_override) + t_state += "_l" + t_icon = l_hand.icon_override + else + t_icon = INV_L_HAND_DEF_ICON + + //apply color + var/image/standing = image(icon = t_icon, icon_state = t_state) + standing.color = l_hand.color + + l_hand_sprite = standing + + else + l_hand_sprite = null + + update_icon() + +//Can insert extra huds into the hud holder here. +/mob/living/simple_mob/proc/extra_huds(var/datum/hud/hud,var/icon/ui_style,var/list/hud_elements) + return + +//If they can or cannot use tools/machines/etc +/mob/living/simple_mob/IsAdvancedToolUser() + return has_hands + +/mob/living/simple_mob/proc/IsHumanoidToolUser(var/atom/tool) + if(!humanoid_hands) + var/display_name = null + if(tool) + display_name = tool + else + display_name = "object" + to_chat(src, "Your [hand_form] are not fit for use of \the [display_name].") + return humanoid_hands + +/mob/living/simple_mob/drop_from_inventory(var/obj/item/W, var/atom/target = null) + . = ..(W, target) + if(!target) + target = src.loc + if(.) + W.forceMove(src.loc) diff --git a/code/modules/mob/living/simple_mob/life.dm b/code/modules/mob/living/simple_mob/life.dm new file mode 100644 index 0000000000..4c063e4bd9 --- /dev/null +++ b/code/modules/mob/living/simple_mob/life.dm @@ -0,0 +1,163 @@ +/mob/living/simple_mob/Life() + ..() + + //Health + updatehealth() + if(stat >= DEAD) + return FALSE + + handle_stunned() + handle_weakened() + handle_paralysed() + handle_supernatural() + handle_atmos() + + handle_special() + + return TRUE + + +//Should we be dead? +/mob/living/simple_mob/updatehealth() + health = getMaxHealth() - getFireLoss() - getBruteLoss() - getToxLoss() - getOxyLoss() - getCloneLoss() + + //Alive, becoming dead + if((stat < DEAD) && (health <= 0)) + death() + + //Overhealth + if(health > getMaxHealth()) + health = getMaxHealth() + + //Update our hud if we have one + if(healths) + if(stat != DEAD) + var/heal_per = (health / getMaxHealth()) * 100 + switch(heal_per) + if(100 to INFINITY) + healths.icon_state = "health0" + if(80 to 100) + healths.icon_state = "health1" + if(60 to 80) + healths.icon_state = "health2" + if(40 to 60) + healths.icon_state = "health3" + if(20 to 40) + healths.icon_state = "health4" + if(0 to 20) + healths.icon_state = "health5" + else + healths.icon_state = "health6" + else + healths.icon_state = "health7" + + //Updates the nutrition while we're here + if(nutrition_icon) + var/food_per = (nutrition / initial(nutrition)) * 100 + switch(food_per) + if(90 to INFINITY) + nutrition_icon.icon_state = "nutrition0" + if(75 to 90) + nutrition_icon.icon_state = "nutrition1" + if(50 to 75) + nutrition_icon.icon_state = "nutrition2" + if(25 to 50) + nutrition_icon.icon_state = "nutrition3" + if(0 to 25) + nutrition_icon.icon_state = "nutrition4" + +// Override for special bullshit. +/mob/living/simple_mob/proc/handle_special() + return + + +// Handle interacting with and taking damage from atmos +// TODO - Refactor this to use handle_environment() like a good /mob/living +/mob/living/simple_mob/proc/handle_atmos() + var/atmos_unsuitable = 0 + + if(in_stasis) + return 1 // return early to skip atmos checks + + var/atom/A = src.loc + + if(istype(A,/turf)) + var/turf/T = A + + var/datum/gas_mixture/Environment = T.return_air() + + if(Environment) + + if( abs(Environment.temperature - bodytemperature) > 40 ) + bodytemperature += ((Environment.temperature - bodytemperature) / 5) + + if(min_oxy) + if(Environment.gas["oxygen"] < min_oxy) + atmos_unsuitable = 1 + if(max_oxy) + if(Environment.gas["oxygen"] > max_oxy) + atmos_unsuitable = 1 + if(min_tox) + if(Environment.gas["phoron"] < min_tox) + atmos_unsuitable = 2 + if(max_tox) + if(Environment.gas["phoron"] > max_tox) + atmos_unsuitable = 2 + if(min_n2) + if(Environment.gas["nitrogen"] < min_n2) + atmos_unsuitable = 1 + if(max_n2) + if(Environment.gas["nitrogen"] > max_n2) + atmos_unsuitable = 1 + if(min_co2) + if(Environment.gas["carbon_dioxide"] < min_co2) + atmos_unsuitable = 1 + if(max_co2) + if(Environment.gas["carbon_dioxide"] > max_co2) + atmos_unsuitable = 1 + + //Atmos effect + if(bodytemperature < minbodytemp) + fire_alert = 2 + adjustFireLoss(cold_damage_per_tick) + if(fire) + fire.icon_state = "fire1" + else if(bodytemperature > maxbodytemp) + fire_alert = 1 + adjustFireLoss(heat_damage_per_tick) + if(fire) + fire.icon_state = "fire2" + else + fire_alert = 0 + if(fire) + fire.icon_state = "fire0" + + if(atmos_unsuitable) + adjustOxyLoss(unsuitable_atoms_damage) + if(oxygen) + oxygen.icon_state = "oxy1" + else if(oxygen) + if(oxygen) + oxygen.icon_state = "oxy0" + adjustOxyLoss(-unsuitable_atoms_damage) + + +/mob/living/simple_mob/proc/handle_supernatural() + if(purge) + purge -= 1 + +/mob/living/simple_mob/death(gibbed, deathmessage = "dies!") + density = 0 //We don't block even if we did before + + if(has_eye_glow) + remove_eyes() + + if(loot_list.len) //Drop any loot + for(var/path in loot_list) + if(prob(loot_list[path])) + new path(get_turf(src)) + + spawn(3) //We'll update our icon in a sec + update_icon() + + return ..(gibbed,deathmessage) \ No newline at end of file diff --git a/code/modules/mob/living/simple_mob/on_click.dm b/code/modules/mob/living/simple_mob/on_click.dm new file mode 100644 index 0000000000..4b824c9580 --- /dev/null +++ b/code/modules/mob/living/simple_mob/on_click.dm @@ -0,0 +1,48 @@ +/* + Animals +*/ +/mob/living/simple_mob/UnarmedAttack(var/atom/A, var/proximity) + if(!(. = ..())) + return + +// setClickCooldown(get_attack_speed()) + + if(has_hands && istype(A,/obj) && a_intent != I_HURT) + var/obj/O = A + return O.attack_hand(src) + + switch(a_intent) + if(I_HELP) + if(isliving(A)) + custom_emote(1,"[pick(friendly)] \the [A]!") + + if(I_HURT) + if(can_special_attack(A) && special_attack_target(A)) + return + + else if(melee_damage_upper == 0 && istype(A,/mob/living)) + custom_emote(1,"[pick(friendly)] \the [A]!") + + else + attack_target(A) + + if(I_GRAB) + if(has_hands) + A.attack_hand(src) + else + attack_target(A) + + if(I_DISARM) + if(has_hands) + A.attack_hand(src) + else + attack_target(A) + +/mob/living/simple_mob/RangedAttack(var/atom/A) +// setClickCooldown(get_attack_speed()) + + if(can_special_attack(A) && special_attack_target(A)) + return + + if(projectiletype) + shoot_target(A) \ No newline at end of file diff --git a/code/modules/mob/living/simple_mob/simple_hud.dm b/code/modules/mob/living/simple_mob/simple_hud.dm new file mode 100644 index 0000000000..fe851648b4 --- /dev/null +++ b/code/modules/mob/living/simple_mob/simple_hud.dm @@ -0,0 +1,311 @@ +/mob/living/simple_mob/instantiate_hud(var/datum/hud/hud) + if(!client) + return //Why bother. + + var/ui_style = 'icons/mob/screen1_animal.dmi' + if(ui_icons) + ui_style = ui_icons + + var/ui_color = "#ffffff" + var/ui_alpha = 255 + + var/list/adding = list() + var/list/other = list() + var/list/hotkeybuttons = list() + var/list/slot_info = list() + + hud.adding = adding + hud.other = other + hud.hotkeybuttons = hotkeybuttons + + var/list/hud_elements = list() + var/obj/screen/using + var/obj/screen/inventory/inv_box + + var/has_hidden_gear + if(LAZYLEN(hud_gears)) + for(var/gear_slot in hud_gears) + inv_box = new /obj/screen/inventory() + inv_box.icon = ui_style + inv_box.color = ui_color + inv_box.alpha = ui_alpha + + var/list/slot_data = hud_gears[gear_slot] + inv_box.name = gear_slot + inv_box.screen_loc = slot_data["loc"] + inv_box.slot_id = slot_data["slot"] + inv_box.icon_state = slot_data["state"] + slot_info["[inv_box.slot_id]"] = inv_box.screen_loc + + if(slot_data["dir"]) + inv_box.set_dir(slot_data["dir"]) + + if(slot_data["toggle"]) + other += inv_box + has_hidden_gear = 1 + else + adding += inv_box + + if(has_hidden_gear) + using = new /obj/screen() + using.name = "toggle" + using.icon = ui_style + using.icon_state = "other" + using.screen_loc = ui_inventory + using.hud_layerise() + using.color = ui_color + using.alpha = ui_alpha + adding += using + + //Intent Backdrop + using = new /obj/screen() + using.name = "act_intent" + using.icon = ui_style + using.icon_state = "intent_"+a_intent + using.screen_loc = ui_acti + using.color = ui_color + using.alpha = ui_alpha + hud.adding += using + hud.action_intent = using + + hud_elements |= using + + //Small intent quarters + var/icon/ico + + ico = new(ui_style, "black") + ico.MapColors(0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, -1,-1,-1,-1) + ico.DrawBox(rgb(255,255,255,1),1,ico.Height()/2,ico.Width()/2,ico.Height()) + using = new /obj/screen() + using.name = I_HELP + using.icon = ico + using.screen_loc = ui_acti + using.alpha = ui_alpha + using.layer = LAYER_HUD_ITEM //These sit on the intent box + hud.adding += using + hud.help_intent = using + + ico = new(ui_style, "black") + ico.MapColors(0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, -1,-1,-1,-1) + ico.DrawBox(rgb(255,255,255,1),ico.Width()/2,ico.Height()/2,ico.Width(),ico.Height()) + using = new /obj/screen() + using.name = I_DISARM + using.icon = ico + using.screen_loc = ui_acti + using.alpha = ui_alpha + using.layer = LAYER_HUD_ITEM + hud.adding += using + hud.disarm_intent = using + + ico = new(ui_style, "black") + ico.MapColors(0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, -1,-1,-1,-1) + ico.DrawBox(rgb(255,255,255,1),ico.Width()/2,1,ico.Width(),ico.Height()/2) + using = new /obj/screen() + using.name = I_GRAB + using.icon = ico + using.screen_loc = ui_acti + using.alpha = ui_alpha + using.layer = LAYER_HUD_ITEM + hud.adding += using + hud.grab_intent = using + + ico = new(ui_style, "black") + ico.MapColors(0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, -1,-1,-1,-1) + ico.DrawBox(rgb(255,255,255,1),1,1,ico.Width()/2,ico.Height()/2) + using = new /obj/screen() + using.name = I_HURT + using.icon = ico + using.screen_loc = ui_acti + using.alpha = ui_alpha + using.layer = LAYER_HUD_ITEM + hud.adding += using + hud.hurt_intent = using + + //Move intent (walk/run) + using = new /obj/screen() + using.name = "mov_intent" + using.icon = ui_style + using.icon_state = (m_intent == "run" ? "running" : "walking") + using.screen_loc = ui_movi + using.color = ui_color + using.alpha = ui_alpha + hud.adding += using + hud.move_intent = using + + //Resist button + using = new /obj/screen() + using.name = "resist" + using.icon = ui_style + using.icon_state = "act_resist" + using.screen_loc = ui_pull_resist + using.color = ui_color + using.alpha = ui_alpha + hud.hotkeybuttons += using + + //Pull button + pullin = new /obj/screen() + pullin.icon = ui_style + pullin.icon_state = "pull0" + pullin.name = "pull" + pullin.screen_loc = ui_pull_resist + hud.hotkeybuttons += pullin + hud_elements |= pullin + + //Health status + healths = new /obj/screen() + healths.icon = ui_style + healths.icon_state = "health0" + healths.name = "health" + healths.screen_loc = ui_health + hud_elements |= healths + + //Oxygen dep icon + oxygen = new /obj/screen() + oxygen.icon = ui_style + oxygen.icon_state = "oxy0" + oxygen.name = "oxygen" + oxygen.screen_loc = ui_oxygen + hud_elements |= oxygen + + //Toxins present icon + toxin = new /obj/screen() + toxin.icon = ui_style + toxin.icon_state = "tox0" + toxin.name = "toxin" + toxin.screen_loc = ui_toxin + hud_elements |= toxin + + //Fire warning + fire = new /obj/screen() + fire.icon = ui_style + fire.icon_state = "fire0" + fire.name = "fire" + fire.screen_loc = ui_fire + hud_elements |= fire + + //Pressure warning + pressure = new /obj/screen() + pressure.icon = ui_style + pressure.icon_state = "pressure0" + pressure.name = "pressure" + pressure.screen_loc = ui_pressure + hud_elements |= pressure + + //Body temp warning + bodytemp = new /obj/screen() + bodytemp.icon = ui_style + bodytemp.icon_state = "temp0" + bodytemp.name = "body temperature" + bodytemp.screen_loc = ui_temp + hud_elements |= bodytemp + + //Nutrition status + nutrition_icon = new /obj/screen() + nutrition_icon.icon = ui_style + nutrition_icon.icon_state = "nutrition0" + nutrition_icon.name = "nutrition" + nutrition_icon.screen_loc = ui_nutrition + hud_elements |= nutrition_icon + + pain = new /obj/screen( null ) + + zone_sel = new /obj/screen/zone_sel( null ) + zone_sel.icon = ui_style + zone_sel.color = ui_color + zone_sel.alpha = ui_alpha + zone_sel.overlays.Cut() + zone_sel.overlays += image('icons/mob/zone_sel.dmi', "[zone_sel.selecting]") + hud_elements |= zone_sel + + //Hand things + if(has_hands) + //Drop button + using = new /obj/screen() + using.name = "drop" + using.icon = ui_style + using.icon_state = "act_drop" + using.screen_loc = ui_drop_throw + using.color = ui_color + using.alpha = ui_alpha + hud.hotkeybuttons += using + + //Equip detail + using = new /obj/screen() + using.name = "equip" + using.icon = ui_style + using.icon_state = "act_equip" + using.screen_loc = ui_equip + using.color = ui_color + using.alpha = ui_alpha + hud.adding += using + + //Hand slots themselves + inv_box = new /obj/screen/inventory/hand() + inv_box.hud = src + inv_box.name = "r_hand" + inv_box.icon = ui_style + inv_box.icon_state = "r_hand_inactive" + if(!hand) //This being 0 or null means the right hand is in use + inv_box.icon_state = "r_hand_active" + inv_box.screen_loc = ui_rhand + inv_box.slot_id = slot_r_hand + inv_box.color = ui_color + inv_box.alpha = ui_alpha + hud.r_hand_hud_object = inv_box + hud.adding += inv_box + slot_info["[slot_r_hand]"] = inv_box.screen_loc + + inv_box = new /obj/screen/inventory/hand() + inv_box.hud = src + inv_box.name = "l_hand" + inv_box.icon = ui_style + inv_box.icon_state = "l_hand_inactive" + if(hand) //This being 1 means the left hand is in use + inv_box.icon_state = "l_hand_active" + inv_box.screen_loc = ui_lhand + inv_box.slot_id = slot_l_hand + inv_box.color = ui_color + inv_box.alpha = ui_alpha + hud.l_hand_hud_object = inv_box + hud.adding += inv_box + slot_info["[slot_l_hand]"] = inv_box.screen_loc + + //Swaphand titlebar + using = new /obj/screen/inventory() + using.name = "hand" + using.icon = ui_style + using.icon_state = "hand1" + using.screen_loc = ui_swaphand1 + using.color = ui_color + using.alpha = ui_alpha + hud.adding += using + + using = new /obj/screen/inventory() + using.name = "hand" + using.icon = ui_style + using.icon_state = "hand2" + using.screen_loc = ui_swaphand2 + using.color = ui_color + using.alpha = ui_alpha + hud.adding += using + + //Throw button + throw_icon = new /obj/screen() + throw_icon.icon = ui_style + throw_icon.icon_state = "act_throw_off" + throw_icon.name = "throw" + throw_icon.screen_loc = ui_drop_throw + throw_icon.color = ui_color + throw_icon.alpha = ui_alpha + hud.hotkeybuttons += throw_icon + hud_elements |= throw_icon + + extra_huds(hud,ui_style,hud_elements) + + client.screen = list() + + client.screen += hud_elements + client.screen += adding + hotkeybuttons + client.screen += client.void + + return diff --git a/code/modules/mob/living/simple_mob/simple_mob.dm b/code/modules/mob/living/simple_mob/simple_mob.dm new file mode 100644 index 0000000000..0cd734ec06 --- /dev/null +++ b/code/modules/mob/living/simple_mob/simple_mob.dm @@ -0,0 +1,294 @@ +// Reorganized and somewhat cleaned up. +// AI code has been made into a datum, inside the AI module folder. + +/mob/living/simple_mob + name = "animal" + desc = "" + icon = 'icons/mob/animal.dmi' + health = 20 + maxHealth = 20 + + // Generally we don't want simple_mobs to get displaced when bumped into due to it trivializing combat with windup attacks. + // Some subtypes allow displacement, like passive animals. + mob_bump_flag = HEAVY + mob_swap_flags = ~HEAVY + mob_push_flags = ~HEAVY + + var/tt_desc = null //Tooltip description + + //Settings for played mobs + var/show_stat_health = 1 // Does the percentage health show in the stat panel for the mob + var/has_hands = 0 // Set to 1 to enable the use of hands and the hands hud + var/humanoid_hands = 0 // Can a player in this mob use things like guns or AI cards? + var/hand_form = "hands" // Used in IsHumanoidToolUser. 'Your X are not fit-'. + var/list/hud_gears // Slots to show on the hud (typically none) + var/ui_icons // Icon file path to use for the HUD, otherwise generic icons are used + var/r_hand_sprite // If they have hands, + var/l_hand_sprite // they could use some icons. + var/player_msg // Message to print to players about 'how' to play this mob on login. + + //Mob icon/appearance settings + var/icon_living = "" // The iconstate if we're alive, required + var/icon_dead = "" // The iconstate if we're dead, required + var/icon_gib = "generic_gib" // The iconstate for being gibbed, optional. Defaults to a generic gib animation. + var/icon_rest = null // The iconstate for resting, optional + var/image/modifier_overlay = null // Holds overlays from modifiers. + var/image/eye_layer = null // Holds the eye overlay. + var/has_eye_glow = FALSE // If true, adds an overlay over the lighting plane for [icon_state]-eyes. + attack_icon = 'icons/effects/effects.dmi' //Just the default, played like the weapon attack anim + attack_icon_state = "slash" //Just the default + + //Mob talking settings + universal_speak = 0 // Can all mobs in the entire universe understand this one? + var/has_langs = list(LANGUAGE_GALCOM)// Text name of their language if they speak something other than galcom. They speak the first one. + + //Movement things. + var/movement_cooldown = 5 // Lower is faster. + var/movement_sound = null // If set, will play this sound when it moves on its own will. + var/turn_sound = null // If set, plays the sound when the mob's dir changes in most cases. + var/movement_shake_radius = 0 // If set, moving will shake the camera of all living mobs within this radius slightly. + + //Mob interaction + var/response_help = "tries to help" // If clicked on help intent + var/response_disarm = "tries to disarm" // If clicked on disarm intent + var/response_harm = "tries to hurt" // If clicked on harm intent + var/list/friends = list() // Mobs on this list wont get attacked regardless of faction status. + var/harm_intent_damage = 3 // How much an unarmed harm click does to this mob. + var/meat_amount = 0 // How much meat to drop from this mob when butchered + var/obj/meat_type // The meat object to drop + var/list/loot_list = list() // The list of lootable objects to drop, with "/path = prob%" structure + var/obj/item/weapon/card/id/myid// An ID card if they have one to give them access to stuff. + + //Mob environment settings + var/minbodytemp = 250 // Minimum "okay" temperature in kelvin + var/maxbodytemp = 350 // Maximum of above + var/heat_damage_per_tick = 3 // Amount of damage applied if animal's body temperature is higher than maxbodytemp + var/cold_damage_per_tick = 2 // Same as heat_damage_per_tick, only if the bodytemperature it's lower than minbodytemp + var/fire_alert = 0 // 0 = fine, 1 = hot, 2 = cold + + var/min_oxy = 5 // Oxygen in moles, minimum, 0 is 'no minimum' + var/max_oxy = 0 // Oxygen in moles, maximum, 0 is 'no maximum' + var/min_tox = 0 // Phoron min + var/max_tox = 1 // Phoron max + var/min_co2 = 0 // CO2 min + var/max_co2 = 5 // CO2 max + var/min_n2 = 0 // N2 min + var/max_n2 = 0 // N2 max + var/unsuitable_atoms_damage = 2 // This damage is taken when atmos doesn't fit all the requirements above + + //Hostility settings + var/taser_kill = 1 // Is the mob weak to tasers + + //Attack ranged settings + var/projectiletype // The projectiles I shoot + var/projectilesound // The sound I make when I do it + var/projectile_accuracy = 0 // Accuracy modifier to add onto the bullet when its fired. + var/projectile_dispersion = 0 // How many degrees to vary when I do it. + var/casingtype // What to make the hugely laggy casings pile out of + + // Reloading settings, part of ranged code + var/needs_reload = FALSE // If TRUE, mob needs to reload occasionally + var/reload_max = 1 // How many shots the mob gets before it has to reload, will not be used if needs_reload is FALSE + var/reload_count = 0 // A counter to keep track of how many shots the mob has fired so far. Reloads when it hits reload_max. + var/reload_time = 1 SECONDS // How long it takes for a mob to reload. This is to buy a player a bit of time to run or fight. + var/reload_sound = 'sound/weapons/flipblade.ogg' // What sound gets played when the mob successfully reloads. Defaults to the same sound as reloading guns. Can be null. + + //Mob melee settings + var/melee_damage_lower = 2 // Lower bound of randomized melee damage + var/melee_damage_upper = 6 // Upper bound of randomized melee damage + var/list/attacktext = list("attacked") // "You are [attacktext] by the mob!" + var/list/friendly = list("nuzzles") // "The mob [friendly] the person." + var/attack_sound = null // Sound to play when I attack + var/melee_miss_chance = 0 // percent chance to miss a melee attack. + var/attack_armor_type = "melee" // What armor does this check? + var/attack_armor_pen = 0 // How much armor pen this attack has. + var/attack_sharp = FALSE // Is the attack sharp? + var/attack_edge = FALSE // Does the attack have an edge? + + var/melee_attack_delay = null // If set, the mob will do a windup animation and can miss if the target moves out of the way. + var/ranged_attack_delay = null + var/special_attack_delay = null + + //Special attacks +// var/special_attack_prob = 0 // The chance to ATTEMPT a special_attack_target(). If it fails, it will do a regular attack instead. + // This is commented out to ease the AI attack logic by being (a bit more) determanistic. + // You should instead limit special attacks using the below vars instead. + var/special_attack_min_range = null // The minimum distance required for an attempt to be made. + var/special_attack_max_range = null // The maximum for an attempt. + var/special_attack_charges = null // If set, special attacks will work off of a charge system, and won't be usable if all charges are expended. Good for grenades. + var/special_attack_cooldown = null // If set, special attacks will have a cooldown between uses. + var/last_special_attack = null // world.time when a special attack occured last, for cooldown calculations. + + //Damage resistances + var/grab_resist = 0 // Chance for a grab attempt to fail. Note that this is not a true resist and is just a prob() of failure. + var/resistance = 0 // Damage reduction for all types + var/list/armor = list( // Values for normal getarmor() checks + "melee" = 0, + "bullet" = 0, + "laser" = 0, + "energy" = 0, + "bomb" = 0, + "bio" = 100, + "rad" = 100 + ) + var/list/armor_soak = list( // Values for getsoak() checks. + "melee" = 0, + "bullet" = 0, + "laser" = 0, + "energy" = 0, + "bomb" = 0, + "bio" = 0, + "rad" = 0 + ) + // Protection against heat/cold/electric/water effects. + // 0 is no protection, 1 is total protection. Negative numbers increase vulnerability. + var/heat_resist = 0.0 + var/cold_resist = 0.0 + var/shock_resist = 0.0 + var/water_resist = 1.0 + var/poison_resist = 0.0 + var/thick_armor = FALSE // Stops injections and "injections". + var/purge = 0 // Cult stuff. + var/supernatural = FALSE // Ditto. + + // contained in a cage + var/in_stasis = 0 + +/mob/living/simple_mob/Initialize() + verbs -= /mob/verb/observe + health = maxHealth + + for(var/L in has_langs) + languages |= all_languages[L] + if(languages.len) + default_language = languages[1] + + if(has_eye_glow) + add_eyes() + return ..() + + +/mob/living/simple_mob/Destroy() + default_language = null + if(myid) + qdel(myid) + myid = null + + friends.Cut() + languages.Cut() + + if(has_eye_glow) + remove_eyes() + return ..() + +/mob/living/simple_mob/death() + update_icon() + ..() + + +//Client attached +/mob/living/simple_mob/Login() + . = ..() + to_chat(src,"You are \the [src]. [player_msg]") + + +/mob/living/simple_mob/emote(var/act, var/type, var/desc) + if(act) + ..(act, type, desc) + + +/mob/living/simple_mob/SelfMove(turf/n, direct) + var/turf/old_turf = get_turf(src) + var/old_dir = dir + . = ..() + if(. && movement_shake_radius) + for(var/mob/living/L in range(movement_shake_radius, src)) + shake_camera(L, 1, 1) + if(turn_sound && dir != old_dir) + playsound(src, turn_sound, 50, 1) + else if(movement_sound && old_turf != get_turf(src)) // Playing both sounds at the same time generally sounds bad. + playsound(src, movement_sound, 50, 1) +/* +/mob/living/simple_mob/set_dir(new_dir) + if(dir != new_dir) + playsound(src, turn_sound, 50, 1) + return ..() +*/ +/mob/living/simple_mob/movement_delay() + var/tally = 0 //Incase I need to add stuff other than "speed" later + + tally = movement_cooldown + + if(force_max_speed) + return -3 + + for(var/datum/modifier/M in modifiers) + if(!isnull(M.haste) && M.haste == TRUE) + return -3 + if(!isnull(M.slowdown)) + tally += M.slowdown + + // Turf related slowdown + var/turf/T = get_turf(src) + if(T && T.movement_cost && !hovering) // Flying mobs ignore turf-based slowdown. + tally += T.movement_cost + + if(purge)//Purged creatures will move more slowly. The more time before their purge stops, the slower they'll move. + if(tally <= 0) + tally = 1 + tally *= purge + + if(m_intent == "walk") + tally *= 1.5 + + return tally+config.animal_delay + + +/mob/living/simple_mob/Stat() + ..() + if(statpanel("Status") && show_stat_health) + stat(null, "Health: [round((health / getMaxHealth()) * 100)]%") + +/mob/living/simple_mob/lay_down() + ..() + if(resting && icon_rest) + icon_state = icon_rest + else + icon_state = icon_living + update_icon() + + +/mob/living/simple_mob/say(var/message,var/datum/language/language) + var/verb = "says" + if(speak_emote.len) + verb = pick(speak_emote) + + message = sanitize(message) + + ..(message, null, verb) + +/mob/living/simple_mob/get_speech_ending(verb, var/ending) + return verb + + +// Harvest an animal's delicious byproducts +/mob/living/simple_mob/proc/harvest(var/mob/user) + var/actual_meat_amount = max(1,(meat_amount/2)) + if(meat_type && actual_meat_amount>0 && (stat == DEAD)) + for(var/i=0;i[user] chops up \the [src]!") + new/obj/effect/decal/cleanable/blood/splatter(get_turf(src)) + qdel(src) + else + user.visible_message("[user] butchers \the [src] messily!") + gib() + + +/mob/living/simple_mob/is_sentient() + return mob_class & MOB_CLASS_HUMANOID|MOB_CLASS_ANIMAL|MOB_CLASS_SLIME // Update this if needed. + +/mob/living/simple_mob/get_nametag_desc(mob/user) + return "[tt_desc]" \ No newline at end of file diff --git a/code/modules/mob/living/simple_animal/simple_animal_vr.dm b/code/modules/mob/living/simple_mob/simple_mob_vr.dm similarity index 64% rename from code/modules/mob/living/simple_animal/simple_animal_vr.dm rename to code/modules/mob/living/simple_mob/simple_mob_vr.dm index 9eeb6b8b97..d388d1ec88 100644 --- a/code/modules/mob/living/simple_animal/simple_animal_vr.dm +++ b/code/modules/mob/living/simple_mob/simple_mob_vr.dm @@ -3,7 +3,7 @@ #define SA_ICON_DEAD 0x02 #define SA_ICON_REST 0x03 -/mob/living/simple_animal +/mob/living/simple_mob var/vore_active = 0 // If vore behavior is enabled for this mob var/vore_capacity = 1 // The capacity (in people) this person can hold @@ -21,7 +21,7 @@ var/swallowsound = null // What noise plays when you succeed in eating the mob. var/vore_default_mode = DM_DIGEST // Default bellymode (DM_DIGEST, DM_HOLD, DM_ABSORB) - var/vore_default_flags = DM_FLAG_ITEMWEAK // Itemweak by default + var/vore_default_flags = 0 // No flags var/vore_digest_chance = 25 // Chance to switch to digest mode if resisted var/vore_absorb_chance = 0 // Chance to switch to absorb mode if resisted var/vore_escape_chance = 25 // Chance of resisting out of mob @@ -29,25 +29,31 @@ var/vore_stomach_name // The name for the first belly if not "stomach" var/vore_stomach_flavor // The flavortext for the first belly if not the default + var/vore_default_item_mode = IM_DIGEST_FOOD //How belly will interact with items + var/vore_default_contaminates = TRUE //Will it contaminate? + var/vore_default_contamination_flavor = "Generic" //Contamination descriptors + var/vore_default_contamination_color = "green" //Contamination color + var/vore_fullness = 0 // How "full" the belly is (controls icons) var/vore_icons = 0 // Bitfield for which fields we have vore icons for. + var/life_disabled = 0 // For performance reasons var/mount_offset_x = 5 // Horizontal riding offset. var/mount_offset_y = 8 // Vertical riding offset // Release belly contents before being gc'd! -/mob/living/simple_animal/Destroy() +/mob/living/simple_mob/Destroy() release_vore_contents() prey_excludes.Cut() . = ..() //For all those ID-having mobs -/mob/living/simple_animal/GetIdCard() +/mob/living/simple_mob/GetIdCard() if(myid) return myid // Update fullness based on size & quantity of belly contents -/mob/living/simple_animal/proc/update_fullness() +/mob/living/simple_mob/proc/update_fullness() var/new_fullness = 0 for(var/belly in vore_organs) var/obj/belly/B = belly @@ -56,125 +62,130 @@ new_fullness = round(new_fullness, 1) // Because intervals of 0.25 are going to make sprite artists cry. vore_fullness = min(vore_capacity, new_fullness) -/mob/living/simple_animal/proc/update_vore_icon() - if(!vore_active) - return 0 - update_fullness() - if(!vore_fullness) - return 0 - else if((stat == CONSCIOUS) && (!icon_rest || !resting || !incapacitated(INCAPACITATION_DISABLED)) && (vore_icons & SA_ICON_LIVING)) - return "[icon_living]-[vore_fullness]" - else if(stat >= DEAD && (vore_icons & SA_ICON_DEAD)) - return "[icon_dead]-[vore_fullness]" - else if(((stat == UNCONSCIOUS) || resting || incapacitated(INCAPACITATION_DISABLED) ) && icon_rest && (vore_icons & SA_ICON_REST)) - return "[icon_rest]-[vore_fullness]" +/mob/living/simple_mob/update_icon() + . = ..() + if(vore_active) + update_fullness() + if(!vore_fullness) + return 0 + else if((stat == CONSCIOUS) && (!icon_rest || !resting || !incapacitated(INCAPACITATION_DISABLED)) && (vore_icons & SA_ICON_LIVING)) + icon_state = "[icon_living]-[vore_fullness]" + else if(stat >= DEAD && (vore_icons & SA_ICON_DEAD)) + icon_state = "[icon_dead]-[vore_fullness]" + else if(((stat == UNCONSCIOUS) || resting || incapacitated(INCAPACITATION_DISABLED) ) && icon_rest && (vore_icons & SA_ICON_REST)) + icon_state = "[icon_rest]-[vore_fullness]" -/mob/living/simple_animal/proc/will_eat(var/mob/living/M) +/mob/living/simple_mob/proc/will_eat(var/mob/living/M) if(client) //You do this yourself, dick! - ai_log("vr/wont eat [M] because we're player-controlled", 3) + //ai_log("vr/wont eat [M] because we're player-controlled", 3) //VORESTATION AI TEMPORARY REMOVAL return 0 if(!istype(M)) //Can't eat 'em if they ain't /mob/living - ai_log("vr/wont eat [M] because they are not /mob/living", 3) + //ai_log("vr/wont eat [M] because they are not /mob/living", 3) //VORESTATION AI TEMPORARY REMOVAL return 0 if(src == M) //Don't eat YOURSELF dork - ai_log("vr/won't eat [M] because it's me!", 3) + //ai_log("vr/won't eat [M] because it's me!", 3) //VORESTATION AI TEMPORARY REMOVAL return 0 if(vore_ignores_undigestable && !M.digestable) //Don't eat people with nogurgle prefs - ai_log("vr/wont eat [M] because I am picky", 3) + //ai_log("vr/wont eat [M] because I am picky", 3) //VORESTATION AI TEMPORARY REMOVAL return 0 if(!M.allowmobvore) // Don't eat people who don't want to be ate by mobs - ai_log("vr/wont eat [M] because they don't allow mob vore", 3) + //ai_log("vr/wont eat [M] because they don't allow mob vore", 3) //VORESTATION AI TEMPORARY REMOVAL return 0 if(M in prey_excludes) // They're excluded - ai_log("vr/wont eat [M] because they are excluded", 3) + //ai_log("vr/wont eat [M] because they are excluded", 3) //VORESTATION AI TEMPORARY REMOVAL return 0 if(M.size_multiplier < vore_min_size || M.size_multiplier > vore_max_size) - ai_log("vr/wont eat [M] because they too small or too big", 3) + //ai_log("vr/wont eat [M] because they too small or too big", 3) //VORESTATION AI TEMPORARY REMOVAL return 0 if(vore_capacity != 0 && (vore_fullness >= vore_capacity)) // We're too full to fit them - ai_log("vr/wont eat [M] because I am too full", 3) + //ai_log("vr/wont eat [M] because I am too full", 3) //VORESTATION AI TEMPORARY REMOVAL return 0 return 1 -/mob/living/simple_animal/PunchTarget() - ai_log("vr/PunchTarget() [target_mob]", 3) +/mob/living/simple_mob/apply_attack(atom/A, damage_to_do) + if(isliving(A)) // Converts target to living + var/mob/living/L = A - // If we're not hungry, call the sideways "parent" to do normal punching - if(!vore_active) - return ..() + //ai_log("vr/do_attack() [L]", 3) + // If we're not hungry, call the sideways "parent" to do normal punching + if(!vore_active) + return ..() - // If target is standing we might pounce and knock them down instead of attacking - var/pouncechance = CanPounceTarget() - if(pouncechance) - return PounceTarget(pouncechance) + // If target is standing we might pounce and knock them down instead of attacking + var/pouncechance = CanPounceTarget(L) + if(pouncechance) + return PounceTarget(L, pouncechance) - // We're not attempting a pounce, if they're down or we can eat standing, do it as long as they're edible. Otherwise, hit normally. - if(will_eat(target_mob) && (!target_mob.canmove || vore_standing_too)) - return EatTarget() + // We're not attempting a pounce, if they're down or we can eat standing, do it as long as they're edible. Otherwise, hit normally. + if(will_eat(L) && (!L.canmove || vore_standing_too)) + return EatTarget(L) + else + return ..() else return ..() -/mob/living/simple_animal/proc/CanPounceTarget() //returns either FALSE or a %chance of success - if(!target_mob.canmove || issilicon(target_mob) || world.time < vore_pounce_cooldown) //eliminate situations where pouncing CANNOT happen + +/mob/living/simple_mob/proc/CanPounceTarget(var/mob/living/M) //returns either FALSE or a %chance of success + if(!M.canmove || issilicon(M) || world.time < vore_pounce_cooldown) //eliminate situations where pouncing CANNOT happen return FALSE if(!prob(vore_pounce_chance)) //mob doesn't want to pounce return FALSE - if(will_eat(target_mob) && vore_standing_too) //100% chance of hitting people we can eat on the spot + if(will_eat(M) && vore_standing_too) //100% chance of hitting people we can eat on the spot return 100 - var/TargetHealthPercent = (target_mob.health/target_mob.getMaxHealth())*100 //now we start looking at the target itself + var/TargetHealthPercent = (M.health/M.getMaxHealth())*100 //now we start looking at the target itself if (TargetHealthPercent > vore_pounce_maxhealth) //target is too healthy to pounce return FALSE else return max(0,(vore_pounce_successrate - (vore_pounce_falloff * TargetHealthPercent))) -/mob/living/simple_animal/proc/PounceTarget(var/successrate = 100) +/mob/living/simple_mob/proc/PounceTarget(var/mob/living/M, var/successrate = 100) vore_pounce_cooldown = world.time + 20 SECONDS // don't attempt another pounce for a while if(prob(successrate)) // pounce success! - target_mob.Weaken(5) - target_mob.visible_message("\the [src] pounces on \the [target_mob]!!") + M.Weaken(5) + M.visible_message("\the [src] pounces on \the [M]!!") else // pounce misses! - target_mob.visible_message("\the [src] attempts to pounce \the [target_mob] but misses!!") + M.visible_message("\the [src] attempts to pounce \the [M] but misses!!") playsound(loc, 'sound/weapons/punchmiss.ogg', 25, 1, -1) - if(will_eat(target_mob) && (!target_mob.canmove || vore_standing_too)) //if they're edible then eat them too - return EatTarget() + if(will_eat(M) && (!M.canmove || vore_standing_too)) //if they're edible then eat them too + return EatTarget(M) else return //just leave them // Attempt to eat target // TODO - Review this. Could be some issues here -/mob/living/simple_animal/proc/EatTarget() - ai_log("vr/EatTarget() [target_mob]",2) - stop_automated_movement = 1 - var/old_target = target_mob - handle_stance(STANCE_BUSY) - . = animal_nom(target_mob) +/mob/living/simple_mob/proc/EatTarget(var/mob/living/M) + //ai_log("vr/EatTarget() [M]",2) //VORESTATION AI TEMPORARY REMOVAL + //stop_automated_movement = 1 //VORESTATION AI TEMPORARY REMOVAL + var/old_target = M + set_AI_busy(1) //VORESTATION AI TEMPORARY EDIT + . = animal_nom(M) playsound(src, swallowsound, 50, 1) update_icon() if(.) // If we succesfully ate them, lose the target - LoseTarget() + set_AI_busy(0) // lose_target(M) //Unsure what to put here. Replaced with set_AI_busy(1) //VORESTATION AI TEMPORARY EDIT return old_target - else if(old_target == target_mob) + else if(old_target == M) // If we didn't but they are still our target, go back to attack. // but don't run the handler immediately, wait until next tick // Otherwise we'll be in a possibly infinate loop - set_stance(STANCE_ATTACK) - stop_automated_movement = 0 + set_AI_busy(0) //VORESTATION AI TEMPORARY EDIT + //stop_automated_movement = 0 //VORESTATION AI TEMPORARY EDIT -/mob/living/simple_animal/death() +/mob/living/simple_mob/death() release_vore_contents() . = ..() // Make sure you don't call ..() on this one, otherwise you duplicate work. -/mob/living/simple_animal/init_vore() +/mob/living/simple_mob/init_vore() if(!vore_active || no_vore) return if(!IsAdvancedToolUser()) - verbs |= /mob/living/simple_animal/proc/animal_nom + verbs |= /mob/living/simple_mob/proc/animal_nom verbs |= /mob/living/proc/shred_limb if(LAZYLEN(vore_organs)) @@ -188,6 +199,10 @@ B.desc = vore_stomach_flavor ? vore_stomach_flavor : "Your surroundings are warm, soft, and slimy. Makes sense, considering you're inside \the [name]." B.digest_mode = vore_default_mode B.mode_flags = vore_default_flags + B.item_digest_mode = vore_default_item_mode + B.contaminates = vore_default_contaminates + B.contamination_flavor = vore_default_contamination_flavor + B.contamination_color = vore_default_contamination_color B.escapable = vore_escape_chance > 0 B.escapechance = vore_escape_chance B.digestchance = vore_digest_chance @@ -216,58 +231,55 @@ "The churning walls slowly pulverize you into meaty nutrients.", "The stomach glorps and gurgles as it tries to work you into slop.") -/mob/living/simple_animal/Bumped(var/atom/movable/AM, yes) +/mob/living/simple_mob/Bumped(var/atom/movable/AM, yes) if(ismob(AM)) var/mob/tmob = AM if(will_eat(tmob) && !istype(tmob, type) && prob(vore_bump_chance) && !ckey) //check if they decide to eat. Includes sanity check to prevent cannibalism. if(tmob.canmove && prob(vore_pounce_chance)) //if they'd pounce for other noms, pounce for these too, otherwise still try and eat them if they hold still tmob.Weaken(5) tmob.visible_message("\the [src] [vore_bump_emote] \the [tmob]!!") - stop_automated_movement = 1 + set_AI_busy(TRUE) animal_nom(tmob) update_icon() - stop_automated_movement = 0 + set_AI_busy(FALSE) ..() // Checks to see if mob doesn't like this kind of turf -/mob/living/simple_animal/avoid_turf(var/turf/turf) - //So we only check if the parent didn't find anything terrible - if((. = ..(turf))) - return . - - if(istype(turf,/turf/unsimulated/floor/sky)) - return TRUE //Mobs aren't that stupid, probably +/mob/living/simple_mob/IMove(newloc) + if(istype(newloc,/turf/unsimulated/floor/sky)) + return MOVEMENT_FAILED //Mobs aren't that stupid, probably + return ..() // Procede as normal. //Grab = Nomf -/mob/living/simple_animal/UnarmedAttack(var/atom/A, var/proximity) +/mob/living/simple_mob/UnarmedAttack(var/atom/A, var/proximity) . = ..() if(a_intent == I_GRAB && isliving(A) && !has_hands) animal_nom(A) // Riding -/datum/riding/simple_animal +/datum/riding/simple_mob keytype = /obj/item/weapon/material/twohanded/fluff/riding_crop // Crack! nonhuman_key_exemption = FALSE // If true, nonhumans who can't hold keys don't need them, like borgs and simplemobs. key_name = "a riding crop" // What the 'keys' for the thing being rided on would be called. only_one_driver = TRUE // If true, only the person in 'front' (first on list of riding mobs) can drive. -/datum/riding/simple_animal/handle_vehicle_layer() +/datum/riding/simple_mob/handle_vehicle_layer() ridden.layer = initial(ridden.layer) -/datum/riding/simple_animal/ride_check(mob/living/M) +/datum/riding/simple_mob/ride_check(mob/living/M) var/mob/living/L = ridden if(L.stat) force_dismount(M) return FALSE return TRUE -/datum/riding/simple_animal/force_dismount(mob/M) +/datum/riding/simple_mob/force_dismount(mob/M) . =..() ridden.visible_message("[M] stops riding [ridden]!") -/datum/riding/simple_animal/get_offsets(pass_index) // list(dir = x, y, layer) - var/mob/living/simple_animal/L = ridden +/datum/riding/simple_mob/get_offsets(pass_index) // list(dir = x, y, layer) + var/mob/living/simple_mob/L = ridden var/scale = L.size_multiplier var/list/values = list( @@ -278,7 +290,7 @@ return values -/mob/living/simple_animal/buckle_mob(mob/living/M, forced = FALSE, check_loc = TRUE) +/mob/living/simple_mob/buckle_mob(mob/living/M, forced = FALSE, check_loc = TRUE) if(forced) return ..() // Skip our checks if(!riding_datum) @@ -303,7 +315,7 @@ if(.) buckled_mobs[H] = "riding" -/mob/living/simple_animal/attack_hand(mob/user as mob) +/mob/living/simple_mob/attack_hand(mob/user as mob) if(riding_datum && LAZYLEN(buckled_mobs)) //We're getting off! if(user in buckled_mobs) @@ -315,7 +327,7 @@ else . = ..() -/mob/living/simple_animal/proc/animal_mount(var/mob/living/M in living_mobs(1)) +/mob/living/simple_mob/proc/animal_mount(var/mob/living/M in living_mobs(1)) set name = "Animal Mount/Dismount" set category = "Abilities" set desc = "Let people ride on you." diff --git a/code/modules/mob/living/simple_mob/subtypes/animal/animal.dm b/code/modules/mob/living/simple_mob/subtypes/animal/animal.dm new file mode 100644 index 0000000000..e41d5ae66b --- /dev/null +++ b/code/modules/mob/living/simple_mob/subtypes/animal/animal.dm @@ -0,0 +1,9 @@ +/mob/living/simple_mob/animal + mob_class = MOB_CLASS_ANIMAL + meat_type = /obj/item/weapon/reagent_containers/food/snacks/meat + + response_help = "pets" + response_disarm = "shoos" + response_harm = "hits" + + ai_holder_type = /datum/ai_holder/simple_mob/melee \ No newline at end of file diff --git a/code/modules/mob/living/simple_mob/subtypes/animal/borer/borer.dm b/code/modules/mob/living/simple_mob/subtypes/animal/borer/borer.dm new file mode 100644 index 0000000000..b5b4489f57 --- /dev/null +++ b/code/modules/mob/living/simple_mob/subtypes/animal/borer/borer.dm @@ -0,0 +1,237 @@ +// Borers are probably still going to be buggy as fuck, this is just bringing their mob defines up to the new system. +// IMO they're a relic of several ages we're long past, their code and their design showing this plainly, but removing them would +// make certain people Unhappy so here we are. They need a complete redesign but thats beyond the scope of the rewrite. + +/mob/living/simple_mob/animal/borer + name = "cortical borer" + desc = "A small, quivering sluglike creature." + icon_state = "brainslug" + item_state = "brainslug" + icon_living = "brainslug" + icon_dead = "brainslug_dead" + + response_help = "pokes" + response_disarm = "prods" + response_harm = "stomps on" + attacktext = list("nipped") + friendly = list("prods") + + status_flags = CANPUSH + pass_flags = PASSTABLE + movement_cooldown = 5 + + universal_understand = TRUE + can_be_antagged = TRUE + + holder_type = /obj/item/weapon/holder/borer + ai_holder_type = null // This is player-controlled, always. + + var/chemicals = 10 // A resource used for reproduction and powers. + var/mob/living/carbon/human/host = null // The humanoid host for the brain worm. + var/true_name = null // String used when speaking among other worms. + var/mob/living/captive_brain/host_brain // Used for swapping control of the body back and forth. + var/controlling = FALSE // Used in human death ceck. + var/docile = FALSE // Sugar can stop borers from acting. + var/has_reproduced = FALSE + var/roundstart = FALSE // If true, spawning won't try to pull a ghost. + var/used_dominate // world.time when the dominate power was last used. + + +/mob/living/simple_mob/animal/borer/roundstart + roundstart = TRUE + +/mob/living/simple_mob/animal/borer/Login() + ..() + if(mind) + borers.add_antagonist(mind) + +/mob/living/simple_mob/animal/borer/Initialize() + add_language("Cortical Link") + + verbs += /mob/living/proc/ventcrawl + verbs += /mob/living/proc/hide + + true_name = "[pick("Primary","Secondary","Tertiary","Quaternary")] [rand(1000,9999)]" + + if(!roundstart) + request_player() + + return ..() + +/mob/living/simple_mob/animal/borer/handle_special() + if(host && !stat && !host.stat) + // Handle docility. + if(host.reagents.has_reagent("sugar") && !docile) + var/message = "You feel the soporific flow of sugar in your host's blood, lulling you into docility." + var/target = controlling ? host : src + to_chat(target, span("warning", message)) + docile = TRUE + + else if(docile) + var/message = "You shake off your lethargy as the sugar leaves your host's blood." + var/target = controlling ? host : src + to_chat(target, span("notice", message)) + docile = FALSE + + // Chem regen. + if(chemicals < 250) + chemicals++ + + // Control stuff. + if(controlling) + if(docile) + to_chat(host, span("warning", "You are feeling far too docile to continue controlling your host...")) + host.release_control() + return + + if(prob(5)) + host.adjustBrainLoss(0.1) + + if(prob(host.brainloss/20)) + host.say("*[pick(list("blink","blink_r","choke","aflap","drool","twitch","twitch_v","gasp"))]") + +/mob/living/simple_mob/animal/borer/Stat() + ..() + if(client.statpanel == "Status") + statpanel("Status") + if(emergency_shuttle) + var/eta_status = emergency_shuttle.get_status_panel_eta() + if(eta_status) + stat(null, eta_status) + stat("Chemicals", chemicals) + +/mob/living/simple_mob/animal/borer/proc/detatch() + if(!host || !controlling) + return + + if(istype(host, /mob/living/carbon/human)) + var/mob/living/carbon/human/H = host + var/obj/item/organ/external/head = H.get_organ(BP_HEAD) + if(head) + head.implants -= src + + controlling = FALSE + + host.remove_language("Cortical Link") + host.verbs -= /mob/living/carbon/proc/release_control + host.verbs -= /mob/living/carbon/proc/punish_host + host.verbs -= /mob/living/carbon/proc/spawn_larvae + + if(host_brain) + // these are here so bans and multikey warnings are not triggered on the wrong people when ckey is changed. + // computer_id and IP are not updated magically on their own in offline mobs -walter0o + + // This shit need to die in a phoron fire. + + // host -> self + var/h2s_id = host.computer_id + var/h2s_ip= host.lastKnownIP + host.computer_id = null + host.lastKnownIP = null + + src.ckey = host.ckey + + if(!src.computer_id) + src.computer_id = h2s_id + + if(!host_brain.lastKnownIP) + src.lastKnownIP = h2s_ip + + // brain -> host + var/b2h_id = host_brain.computer_id + var/b2h_ip= host_brain.lastKnownIP + host_brain.computer_id = null + host_brain.lastKnownIP = null + + host.ckey = host_brain.ckey + + if(!host.computer_id) + host.computer_id = b2h_id + + if(!host.lastKnownIP) + host.lastKnownIP = b2h_ip + + qdel(host_brain) + + +/mob/living/simple_mob/animal/borer/proc/leave_host() + if(!host) + return + + if(host.mind) + borers.remove_antagonist(host.mind) + + forceMove(get_turf(host)) + + reset_view(null) + machine = null + + host.reset_view(null) + host.machine = null + host = null + +/mob/living/simple_mob/animal/borer/proc/request_player() + var/datum/ghost_query/Q = new /datum/ghost_query/borer() + var/list/winner = Q.query() // This will sleep the proc for awhile. + if(winner.len) + var/mob/observer/dead/D = winner[1] + transfer_personality(D) + +/mob/living/simple_mob/animal/borer/proc/transfer_personality(mob/candidate) + if(!candidate || !candidate.mind) + return + + src.mind = candidate.mind + candidate.mind.current = src + ckey = candidate.ckey + + if(mind) + mind.assigned_role = "Cortical Borer" + mind.special_role = "Cortical Borer" + + to_chat(src, span("notice", "You are a cortical borer! You are a brain slug that worms its way \ + into the head of its victim. Use stealth, persuasion and your powers of mind control to keep you, \ + your host and your eventual spawn safe and warm.")) + to_chat(src, "You can speak to your victim with say, to other borers with say :x, and use your Abilities tab to access powers.") + +/mob/living/simple_mob/animal/borer/cannot_use_vents() + return + +// This is awful but its literally say code. +/mob/living/simple_mob/animal/borer/say(message) + message = sanitize(message) + message = capitalize(message) + + if(!message) + return + + if(stat >= DEAD) + return say_dead(message) + else if(stat) + return + + if(client && client.prefs.muted & MUTE_IC) + to_chat(src, span("danger", "You cannot speak in IC (muted).")) + return + + if(copytext(message, 1, 2) == "*") + return emote(copytext(message, 2)) + + var/datum/language/L = parse_language(message) + if(L && L.flags & HIVEMIND) + L.broadcast(src,trim(copytext(message,3)), src.true_name) + return + + if(!host) + //TODO: have this pick a random mob within 3 tiles to speak for the borer. + to_chat(src, span("warning", "You have no host to speak to.")) + return //No host, no audible speech. + + to_chat(src, "You drop words into [host]'s mind: \"[message]\"") + to_chat(host, "Your own thoughts speak: \"[message]\"") + + for(var/mob/M in player_list) + if(istype(M, /mob/new_player)) + continue + else if(M.stat == DEAD && M.is_preference_enabled(/datum/client_preference/ghost_ears)) + to_chat(M, "[src.true_name] whispers to [host], \"[message]\"") diff --git a/code/modules/mob/living/simple_animal/borer/borer_captive.dm b/code/modules/mob/living/simple_mob/subtypes/animal/borer/borer_captive.dm similarity index 83% rename from code/modules/mob/living/simple_animal/borer/borer_captive.dm rename to code/modules/mob/living/simple_mob/subtypes/animal/borer/borer_captive.dm index c34dca00e8..f5da079b97 100644 --- a/code/modules/mob/living/simple_animal/borer/borer_captive.dm +++ b/code/modules/mob/living/simple_mob/subtypes/animal/borer/borer_captive.dm @@ -1,57 +1,59 @@ -/mob/living/captive_brain - name = "host brain" - real_name = "host brain" - universal_understand = 1 - -/mob/living/captive_brain/say(var/message) - - if (src.client) - if(client.prefs.muted & MUTE_IC) - src << "You cannot speak in IC (muted)." - return - - if(istype(src.loc,/mob/living/simple_animal/borer)) - - message = sanitize(message) - if (!message) - return - log_say(message,src) - if (stat == 2) - return say_dead(message) - - var/mob/living/simple_animal/borer/B = src.loc - src << "You whisper silently, \"[message]\"" - B.host << "The captive mind of [src] whispers, \"[message]\"" - - for (var/mob/M in player_list) - if (istype(M, /mob/new_player)) - continue - else if(M.stat == DEAD && M.is_preference_enabled(/datum/client_preference/ghost_ears)) - M << "The captive mind of [src] whispers, \"[message]\"" - -/mob/living/captive_brain/emote(var/message) - return - -/mob/living/captive_brain/process_resist() - //Resisting control by an alien mind. - if(istype(src.loc,/mob/living/simple_animal/borer)) - var/mob/living/simple_animal/borer/B = src.loc - var/mob/living/captive_brain/H = src - - H << "You begin doggedly resisting the parasite's control (this will take approximately sixty seconds)." - B.host << "You feel the captive mind of [src] begin to resist your control." - - spawn(rand(200,250)+B.host.brainloss) - if(!B || !B.controlling) return - - B.host.adjustBrainLoss(rand(0.1,0.5)) - H << "With an immense exertion of will, you regain control of your body!" - B.host << "You feel control of the host brain ripped from your grasp, and retract your probosci before the wild neural impulses can damage you." - B.detatch() - verbs -= /mob/living/carbon/proc/release_control - verbs -= /mob/living/carbon/proc/punish_host - verbs -= /mob/living/carbon/proc/spawn_larvae - - return - - ..() +// Straight move from the old location, with the paths corrected. + +/mob/living/captive_brain + name = "host brain" + real_name = "host brain" + universal_understand = 1 + +/mob/living/captive_brain/say(var/message) + + if (src.client) + if(client.prefs.muted & MUTE_IC) + src << "You cannot speak in IC (muted)." + return + + if(istype(src.loc, /mob/living/simple_mob/animal/borer)) + + message = sanitize(message) + if (!message) + return + log_say(message,src) + if (stat == 2) + return say_dead(message) + + var/mob/living/simple_mob/animal/borer/B = src.loc + src << "You whisper silently, \"[message]\"" + B.host << "The captive mind of [src] whispers, \"[message]\"" + + for (var/mob/M in player_list) + if (istype(M, /mob/new_player)) + continue + else if(M.stat == DEAD && M.is_preference_enabled(/datum/client_preference/ghost_ears)) + M << "The captive mind of [src] whispers, \"[message]\"" + +/mob/living/captive_brain/emote(var/message) + return + +/mob/living/captive_brain/process_resist() + //Resisting control by an alien mind. + if(istype(src.loc, /mob/living/simple_mob/animal/borer)) + var/mob/living/simple_mob/animal/borer/B = src.loc + var/mob/living/captive_brain/H = src + + H << "You begin doggedly resisting the parasite's control (this will take approximately sixty seconds)." + B.host << "You feel the captive mind of [src] begin to resist your control." + + spawn(rand(200,250)+B.host.brainloss) + if(!B || !B.controlling) return + + B.host.adjustBrainLoss(rand(0.1,0.5)) + H << "With an immense exertion of will, you regain control of your body!" + B.host << "You feel control of the host brain ripped from your grasp, and retract your probosci before the wild neural impulses can damage you." + B.detatch() + verbs -= /mob/living/carbon/proc/release_control + verbs -= /mob/living/carbon/proc/punish_host + verbs -= /mob/living/carbon/proc/spawn_larvae + + return + + ..() diff --git a/code/modules/mob/living/simple_animal/borer/borer_powers.dm b/code/modules/mob/living/simple_mob/subtypes/animal/borer/borer_powers.dm similarity index 92% rename from code/modules/mob/living/simple_animal/borer/borer_powers.dm rename to code/modules/mob/living/simple_mob/subtypes/animal/borer/borer_powers.dm index b75da20cc4..55dac2492a 100644 --- a/code/modules/mob/living/simple_animal/borer/borer_powers.dm +++ b/code/modules/mob/living/simple_mob/subtypes/animal/borer/borer_powers.dm @@ -1,354 +1,354 @@ -/mob/living/simple_animal/borer/verb/release_host() - set category = "Abilities" - set name = "Release Host" - set desc = "Slither out of your host." - - if(!host) - src << "You are not inside a host body." - return - - if(stat) - src << "You cannot leave your host in your current state." - - if(docile) - src << "You are feeling far too docile to do that." - return - - if(!host || !src) return - - src << "You begin disconnecting from [host]'s synapses and prodding at their internal ear canal." - - if(!host.stat) - host << "An odd, uncomfortable pressure begins to build inside your skull, behind your ear..." - - spawn(100) - - if(!host || !src) return - - if(src.stat) - src << "You cannot release your host in your current state." - return - - src << "You wiggle out of [host]'s ear and plop to the ground." - if(host.mind) - if(!host.stat) - host << "Something slimy wiggles out of your ear and plops to the ground!" - host << "As though waking from a dream, you shake off the insidious mind control of the brain worm. Your thoughts are your own again." - - detatch() - leave_host() - -/mob/living/simple_animal/borer/verb/infest() - set category = "Abilities" - set name = "Infest" - set desc = "Infest a suitable humanoid host." - - if(host) - src << "You are already within a host." - return - - if(stat) - src << "You cannot infest a target in your current state." - return - - var/list/choices = list() - for(var/mob/living/carbon/C in view(1,src)) - if(src.Adjacent(C)) - choices += C - - if(!choices.len) - src << "There are no viable hosts within range..." - return - - var/mob/living/carbon/M = input(src,"Who do you wish to infest?") in null|choices - - if(!M || !src) return - - if(!(src.Adjacent(M))) return - - if(M.has_brain_worms()) - src << "You cannot infest someone who is already infested!" - return - - if(istype(M,/mob/living/carbon/human)) - var/mob/living/carbon/human/H = M - - var/obj/item/organ/external/E = H.organs_by_name[BP_HEAD] - if(!E || E.is_stump()) - src << "\The [H] does not have a head!" - - if(!H.should_have_organ("brain")) - src << "\The [H] does not seem to have an ear canal to breach." - return - - if(H.check_head_coverage()) - src << "You cannot get through that host's protective gear." - return - - M << "Something slimy begins probing at the opening of your ear canal..." - src << "You slither up [M] and begin probing at their ear canal..." - - if(!do_after(src,30)) - src << "As [M] moves away, you are dislodged and fall to the ground." - return - - if(!M || !src) return - - if(src.stat) - src << "You cannot infest a target in your current state." - return - - if(M in view(1, src)) - src << "You wiggle into [M]'s ear." - if(!M.stat) - M << "Something disgusting and slimy wiggles into your ear!" - - src.host = M - src.forceMove(M) - - //Update their traitor status. - if(host.mind) - borers.add_antagonist_mind(host.mind, 1, borers.faction_role_text, borers.faction_welcome) - - if(istype(M,/mob/living/carbon/human)) - var/mob/living/carbon/human/H = M - var/obj/item/organ/I = H.internal_organs_by_name["brain"] - if(!I) // No brain organ, so the borer moves in and replaces it permanently. - replace_brain() - else - // If they're in normally, implant removal can get them out. - var/obj/item/organ/external/head = H.get_organ(BP_HEAD) - head.implants += src - - return - else - src << "They are no longer in range!" - return - -/* -/mob/living/simple_animal/borer/verb/devour_brain() - set category = "Abilities" - set name = "Devour Brain" - set desc = "Take permanent control of a dead host." - - if(!host) - src << "You are not inside a host body." - return - - if(host.stat != 2) - src << "Your host is still alive." - return - - if(stat) - src << "You cannot do that in your current state." - - if(docile) - src << "You are feeling far too docile to do that." - return - - - src << "It only takes a few moments to render the dead host brain down into a nutrient-rich slurry..." - replace_brain() -*/ - -// BRAIN WORM ZOMBIES AAAAH. -/mob/living/simple_animal/borer/proc/replace_brain() - - var/mob/living/carbon/human/H = host - - if(!istype(host)) - src << "This host does not have a suitable brain." - return - - src << "You settle into the empty brainpan and begin to expand, fusing inextricably with the dead flesh of [H]." - - H.add_language("Cortical Link") - - if(host.stat == 2) - H.verbs |= /mob/living/carbon/human/proc/jumpstart - - H.verbs |= /mob/living/carbon/human/proc/psychic_whisper - H.verbs |= /mob/living/carbon/human/proc/tackle - H.verbs |= /mob/living/carbon/proc/spawn_larvae - - if(H.client) - H.ghostize(0) - - if(src.mind) - src.mind.special_role = "Borer Husk" - src.mind.transfer_to(host) - - H.ChangeToHusk() - - var/obj/item/organ/internal/borer/B = new(H) - H.internal_organs_by_name["brain"] = B - H.internal_organs |= B - - var/obj/item/organ/external/affecting = H.get_organ(BP_HEAD) - affecting.implants -= src - - var/s2h_id = src.computer_id - var/s2h_ip= src.lastKnownIP - src.computer_id = null - src.lastKnownIP = null - - if(!H.computer_id) - H.computer_id = s2h_id - - if(!H.lastKnownIP) - H.lastKnownIP = s2h_ip - -/mob/living/simple_animal/borer/verb/secrete_chemicals() - set category = "Abilities" - set name = "Secrete Chemicals" - set desc = "Push some chemicals into your host's bloodstream." - - if(!host) - src << "You are not inside a host body." - return - - if(stat) - src << "You cannot secrete chemicals in your current state." - - if(docile) - src << "You are feeling far too docile to do that." - return - - if(chemicals < 50) - src << "You don't have enough chemicals!" - - var/chem = input("Select a chemical to secrete.", "Chemicals") as null|anything in list("alkysine","bicaridine","hyperzine","tramadol") - - if(!chem || chemicals < 50 || !host || controlling || !src || stat) //Sanity check. - return - - src << "You squirt a measure of [chem] from your reservoirs into [host]'s bloodstream." - host.reagents.add_reagent(chem, 10) - chemicals -= 50 - -/mob/living/simple_animal/borer/verb/dominate_victim() - set category = "Abilities" - set name = "Paralyze Victim" - set desc = "Freeze the limbs of a potential host with supernatural fear." - - if(world.time - used_dominate < 150) - src << "You cannot use that ability again so soon." - return - - if(host) - src << "You cannot do that from within a host body." - return - - if(src.stat) - src << "You cannot do that in your current state." - return - - var/list/choices = list() - for(var/mob/living/carbon/C in view(3,src)) - if(C.stat != 2) - choices += C - - if(world.time - used_dominate < 150) - src << "You cannot use that ability again so soon." - return - - var/mob/living/carbon/M = input(src,"Who do you wish to dominate?") in null|choices - - if(!M || !src) return - - if(M.has_brain_worms()) - src << "You cannot infest someone who is already infested!" - return - - src << "You focus your psychic lance on [M] and freeze their limbs with a wave of terrible dread." - M << "You feel a creeping, horrible sense of dread come over you, freezing your limbs and setting your heart racing." - M.Weaken(10) - - used_dominate = world.time - -/mob/living/simple_animal/borer/verb/bond_brain() - set category = "Abilities" - set name = "Assume Control" - set desc = "Fully connect to the brain of your host." - - if(!host) - src << "You are not inside a host body." - return - - if(src.stat) - src << "You cannot do that in your current state." - return - - if(docile) - src << "You are feeling far too docile to do that." - return - - src << "You begin delicately adjusting your connection to the host brain..." - - spawn(100+(host.brainloss*5)) - - if(!host || !src || controlling) - return - else - - src << "You plunge your probosci deep into the cortex of the host brain, interfacing directly with their nervous system." - host << "You feel a strange shifting sensation behind your eyes as an alien consciousness displaces yours." - host.add_language("Cortical Link") - - // host -> brain - var/h2b_id = host.computer_id - var/h2b_ip= host.lastKnownIP - host.computer_id = null - host.lastKnownIP = null - - qdel(host_brain) - host_brain = new(src) - - host_brain.ckey = host.ckey - - host_brain.name = host.name - - if(!host_brain.computer_id) - host_brain.computer_id = h2b_id - - if(!host_brain.lastKnownIP) - host_brain.lastKnownIP = h2b_ip - - // self -> host - var/s2h_id = src.computer_id - var/s2h_ip= src.lastKnownIP - src.computer_id = null - src.lastKnownIP = null - - host.ckey = src.ckey - - if(!host.computer_id) - host.computer_id = s2h_id - - if(!host.lastKnownIP) - host.lastKnownIP = s2h_ip - - controlling = 1 - - host.verbs += /mob/living/carbon/proc/release_control - host.verbs += /mob/living/carbon/proc/punish_host - host.verbs += /mob/living/carbon/proc/spawn_larvae - - return - -/mob/living/carbon/human/proc/jumpstart() - set category = "Abilities" - set name = "Revive Host" - set desc = "Send a jolt of electricity through your host, reviving them." - - if(stat != 2) - usr << "Your host is already alive." - return - - verbs -= /mob/living/carbon/human/proc/jumpstart - visible_message("With a hideous, rattling moan, [src] shudders back to life!") - - rejuvenate() - restore_blood() - fixblood() +/mob/living/simple_mob/animal/borer/verb/release_host() + set category = "Abilities" + set name = "Release Host" + set desc = "Slither out of your host." + + if(!host) + src << "You are not inside a host body." + return + + if(stat) + src << "You cannot leave your host in your current state." + + if(docile) + src << "You are feeling far too docile to do that." + return + + if(!host || !src) return + + src << "You begin disconnecting from [host]'s synapses and prodding at their internal ear canal." + + if(!host.stat) + host << "An odd, uncomfortable pressure begins to build inside your skull, behind your ear..." + + spawn(100) + + if(!host || !src) return + + if(src.stat) + src << "You cannot release your host in your current state." + return + + src << "You wiggle out of [host]'s ear and plop to the ground." + if(host.mind) + if(!host.stat) + host << "Something slimy wiggles out of your ear and plops to the ground!" + host << "As though waking from a dream, you shake off the insidious mind control of the brain worm. Your thoughts are your own again." + + detatch() + leave_host() + +/mob/living/simple_mob/animal/borer/verb/infest() + set category = "Abilities" + set name = "Infest" + set desc = "Infest a suitable humanoid host." + + if(host) + src << "You are already within a host." + return + + if(stat) + src << "You cannot infest a target in your current state." + return + + var/list/choices = list() + for(var/mob/living/carbon/C in view(1,src)) + if(src.Adjacent(C)) + choices += C + + if(!choices.len) + src << "There are no viable hosts within range..." + return + + var/mob/living/carbon/M = input(src,"Who do you wish to infest?") in null|choices + + if(!M || !src) return + + if(!(src.Adjacent(M))) return + + if(M.has_brain_worms()) + src << "You cannot infest someone who is already infested!" + return + + if(istype(M,/mob/living/carbon/human)) + var/mob/living/carbon/human/H = M + + var/obj/item/organ/external/E = H.organs_by_name[BP_HEAD] + if(!E || E.is_stump()) + src << "\The [H] does not have a head!" + + if(!H.should_have_organ("brain")) + src << "\The [H] does not seem to have an ear canal to breach." + return + + if(H.check_head_coverage()) + src << "You cannot get through that host's protective gear." + return + + M << "Something slimy begins probing at the opening of your ear canal..." + src << "You slither up [M] and begin probing at their ear canal..." + + if(!do_after(src,30)) + src << "As [M] moves away, you are dislodged and fall to the ground." + return + + if(!M || !src) return + + if(src.stat) + src << "You cannot infest a target in your current state." + return + + if(M in view(1, src)) + src << "You wiggle into [M]'s ear." + if(!M.stat) + M << "Something disgusting and slimy wiggles into your ear!" + + src.host = M + src.forceMove(M) + + //Update their traitor status. + if(host.mind) + borers.add_antagonist_mind(host.mind, 1, borers.faction_role_text, borers.faction_welcome) + + if(istype(M,/mob/living/carbon/human)) + var/mob/living/carbon/human/H = M + var/obj/item/organ/I = H.internal_organs_by_name["brain"] + if(!I) // No brain organ, so the borer moves in and replaces it permanently. + replace_brain() + else + // If they're in normally, implant removal can get them out. + var/obj/item/organ/external/head = H.get_organ(BP_HEAD) + head.implants += src + + return + else + src << "They are no longer in range!" + return + +/* +/mob/living/simple_mob/animal/borer/verb/devour_brain() + set category = "Abilities" + set name = "Devour Brain" + set desc = "Take permanent control of a dead host." + + if(!host) + src << "You are not inside a host body." + return + + if(host.stat != 2) + src << "Your host is still alive." + return + + if(stat) + src << "You cannot do that in your current state." + + if(docile) + src << "You are feeling far too docile to do that." + return + + + src << "It only takes a few moments to render the dead host brain down into a nutrient-rich slurry..." + replace_brain() +*/ + +// BRAIN WORM ZOMBIES AAAAH. +/mob/living/simple_mob/animal/borer/proc/replace_brain() + + var/mob/living/carbon/human/H = host + + if(!istype(host)) + src << "This host does not have a suitable brain." + return + + src << "You settle into the empty brainpan and begin to expand, fusing inextricably with the dead flesh of [H]." + + H.add_language("Cortical Link") + + if(host.stat == 2) + H.verbs |= /mob/living/carbon/human/proc/jumpstart + + H.verbs |= /mob/living/carbon/human/proc/psychic_whisper + H.verbs |= /mob/living/carbon/human/proc/tackle + H.verbs |= /mob/living/carbon/proc/spawn_larvae + + if(H.client) + H.ghostize(0) + + if(src.mind) + src.mind.special_role = "Borer Husk" + src.mind.transfer_to(host) + + H.ChangeToHusk() + + var/obj/item/organ/internal/borer/B = new(H) + H.internal_organs_by_name["brain"] = B + H.internal_organs |= B + + var/obj/item/organ/external/affecting = H.get_organ(BP_HEAD) + affecting.implants -= src + + var/s2h_id = src.computer_id + var/s2h_ip= src.lastKnownIP + src.computer_id = null + src.lastKnownIP = null + + if(!H.computer_id) + H.computer_id = s2h_id + + if(!H.lastKnownIP) + H.lastKnownIP = s2h_ip + +/mob/living/simple_mob/animal/borer/verb/secrete_chemicals() + set category = "Abilities" + set name = "Secrete Chemicals" + set desc = "Push some chemicals into your host's bloodstream." + + if(!host) + src << "You are not inside a host body." + return + + if(stat) + src << "You cannot secrete chemicals in your current state." + + if(docile) + src << "You are feeling far too docile to do that." + return + + if(chemicals < 50) + src << "You don't have enough chemicals!" + + var/chem = input("Select a chemical to secrete.", "Chemicals") as null|anything in list("alkysine","bicaridine","hyperzine","tramadol") + + if(!chem || chemicals < 50 || !host || controlling || !src || stat) //Sanity check. + return + + src << "You squirt a measure of [chem] from your reservoirs into [host]'s bloodstream." + host.reagents.add_reagent(chem, 10) + chemicals -= 50 + +/mob/living/simple_mob/animal/borer/verb/dominate_victim() + set category = "Abilities" + set name = "Paralyze Victim" + set desc = "Freeze the limbs of a potential host with supernatural fear." + + if(world.time - used_dominate < 150) + src << "You cannot use that ability again so soon." + return + + if(host) + src << "You cannot do that from within a host body." + return + + if(src.stat) + src << "You cannot do that in your current state." + return + + var/list/choices = list() + for(var/mob/living/carbon/C in view(3,src)) + if(C.stat != 2) + choices += C + + if(world.time - used_dominate < 150) + src << "You cannot use that ability again so soon." + return + + var/mob/living/carbon/M = input(src,"Who do you wish to dominate?") in null|choices + + if(!M || !src) return + + if(M.has_brain_worms()) + src << "You cannot infest someone who is already infested!" + return + + src << "You focus your psychic lance on [M] and freeze their limbs with a wave of terrible dread." + M << "You feel a creeping, horrible sense of dread come over you, freezing your limbs and setting your heart racing." + M.Weaken(10) + + used_dominate = world.time + +/mob/living/simple_mob/animal/borer/verb/bond_brain() + set category = "Abilities" + set name = "Assume Control" + set desc = "Fully connect to the brain of your host." + + if(!host) + src << "You are not inside a host body." + return + + if(src.stat) + src << "You cannot do that in your current state." + return + + if(docile) + src << "You are feeling far too docile to do that." + return + + src << "You begin delicately adjusting your connection to the host brain..." + + spawn(100+(host.brainloss*5)) + + if(!host || !src || controlling) + return + else + + src << "You plunge your probosci deep into the cortex of the host brain, interfacing directly with their nervous system." + host << "You feel a strange shifting sensation behind your eyes as an alien consciousness displaces yours." + host.add_language("Cortical Link") + + // host -> brain + var/h2b_id = host.computer_id + var/h2b_ip= host.lastKnownIP + host.computer_id = null + host.lastKnownIP = null + + qdel(host_brain) + host_brain = new(src) + + host_brain.ckey = host.ckey + + host_brain.name = host.name + + if(!host_brain.computer_id) + host_brain.computer_id = h2b_id + + if(!host_brain.lastKnownIP) + host_brain.lastKnownIP = h2b_ip + + // self -> host + var/s2h_id = src.computer_id + var/s2h_ip= src.lastKnownIP + src.computer_id = null + src.lastKnownIP = null + + host.ckey = src.ckey + + if(!host.computer_id) + host.computer_id = s2h_id + + if(!host.lastKnownIP) + host.lastKnownIP = s2h_ip + + controlling = 1 + + host.verbs += /mob/living/carbon/proc/release_control + host.verbs += /mob/living/carbon/proc/punish_host + host.verbs += /mob/living/carbon/proc/spawn_larvae + + return + +/mob/living/carbon/human/proc/jumpstart() + set category = "Abilities" + set name = "Revive Host" + set desc = "Send a jolt of electricity through your host, reviving them." + + if(stat != 2) + usr << "Your host is already alive." + return + + verbs -= /mob/living/carbon/human/proc/jumpstart + visible_message("With a hideous, rattling moan, [src] shudders back to life!") + + rejuvenate() + restore_blood() + fixblood() update_canmove() \ No newline at end of file diff --git a/code/modules/mob/living/simple_mob/subtypes/animal/farm animals/chicken.dm b/code/modules/mob/living/simple_mob/subtypes/animal/farm animals/chicken.dm new file mode 100644 index 0000000000..2bf3568287 --- /dev/null +++ b/code/modules/mob/living/simple_mob/subtypes/animal/farm animals/chicken.dm @@ -0,0 +1,156 @@ +GLOBAL_VAR_CONST(MAX_CHICKENS, 50) // How many chickens CAN we have? +GLOBAL_VAR_INIT(chicken_count, 0) // How mant chickens DO we have? + +/mob/living/simple_mob/animal/passive/chicken + name = "chicken" + desc = "Hopefully the eggs are good this season." + tt_desc = "E Gallus gallus" + icon_state = "chicken" + icon_living = "chicken" + icon_dead = "chicken_dead" + + health = 10 + maxHealth = 10 + + pass_flags = PASSTABLE + mob_size = MOB_SMALL + + response_help = "pets" + response_disarm = "gently pushes aside" + response_harm = "kicks" + attacktext = list("kicked") + + has_langs = list("Bird") + + say_list_type = /datum/say_list/chicken + + meat_amount = 2 + meat_type = /obj/item/weapon/reagent_containers/food/snacks/meat + + var/eggsleft = 0 + var/body_color + +/mob/living/simple_mob/animal/passive/chicken/New() + ..() + if(!body_color) + body_color = pick( list("brown","black","white") ) + icon_state = "chicken_[body_color]" + icon_living = "chicken_[body_color]" + icon_dead = "chicken_[body_color]_dead" + pixel_x = rand(-6, 6) + pixel_y = rand(0, 10) + GLOB.chicken_count += 1 + +/mob/living/simple_mob/animal/passive/chicken/Destroy() + ..() + GLOB.chicken_count -= 1 + +/mob/living/simple_mob/animal/passive/chicken/attackby(var/obj/item/O as obj, var/mob/user as mob) + if(istype(O, /obj/item/weapon/reagent_containers/food/snacks/grown)) //feedin' dem chickens + var/obj/item/weapon/reagent_containers/food/snacks/grown/G = O + if(G.seed && G.seed.kitchen_tag == "wheat") + if(!stat && eggsleft < 8) + user.visible_message("[user] feeds [O] to [name]! It clucks happily.","You feed [O] to [name]! It clucks happily.") + user.drop_item() + qdel(O) + eggsleft += rand(1, 4) + else + to_chat(user, "[name] doesn't seem hungry!") + else + to_chat(user, "[name] doesn't seem interested in that.") + else + ..() + +/mob/living/simple_mob/animal/passive/chicken/Life() + . =..() + if(!.) + return + if(!stat && prob(3) && eggsleft > 0) + visible_message("[src] [pick("lays an egg.","squats down and croons.","begins making a huge racket.","begins clucking raucously.")]") + eggsleft-- + var/obj/item/weapon/reagent_containers/food/snacks/egg/E = new(get_turf(src)) + E.pixel_x = rand(-6,6) + E.pixel_y = rand(-6,6) + if(GLOB.chicken_count < GLOB.MAX_CHICKENS && prob(10)) + START_PROCESSING(SSobj, E) + + + + + + + +/obj/item/weapon/reagent_containers/food/snacks/egg/var/amount_grown = 0 + +// This only starts normally if there are less than MAX_CHICKENS chickens +/obj/item/weapon/reagent_containers/food/snacks/egg/process() + if(isturf(loc)) + amount_grown += rand(1,2) + if(amount_grown >= 100) + visible_message("[src] hatches with a quiet cracking sound.") + new /mob/living/simple_mob/animal/passive/chick(get_turf(src)) + STOP_PROCESSING(SSobj, src) + qdel(src) + else + STOP_PROCESSING(SSobj, src) + + + + + + + +/mob/living/simple_mob/animal/passive/chick + name = "chick" + desc = "Adorable! They make such a racket though." + tt_desc = "E Gallus gallus" + icon_state = "chick" + icon_living = "chick" + icon_dead = "chick_dead" + icon_gib = "chick_gib" + + health = 1 + maxHealth = 1 + + pass_flags = PASSTABLE | PASSGRILLE + mob_size = MOB_MINISCULE + + response_help = "pets" + response_disarm = "gently pushes aside" + response_harm = "kicks" + attacktext = list("kicked") + + has_langs = list("Bird") + + say_list_type = /datum/say_list/chick + + meat_amount = 1 + meat_type = /obj/item/weapon/reagent_containers/food/snacks/meat + + var/amount_grown = 0 + +/mob/living/simple_mob/animal/passive/chick/New() + ..() + pixel_x = rand(-6, 6) + pixel_y = rand(0, 10) + +/mob/living/simple_mob/animal/passive/chick/Life() + . =..() + if(!.) + return + if(!stat) + amount_grown += rand(1,2) + if(amount_grown >= 100) + new /mob/living/simple_mob/animal/passive/chicken(src.loc) + qdel(src) + +// Say Lists +/datum/say_list/chicken + speak = list("Cluck!","BWAAAAARK BWAK BWAK BWAK!","Bwaak bwak.") + emote_hear = list("clucks","croons") + emote_see = list("pecks at the ground","flaps its wings viciously") + +/datum/say_list/chick + speak = list("Cherp.","Cherp?","Chirrup.","Cheep!") + emote_hear = list("cheeps") + emote_see = list("pecks at the ground","flaps its tiny wings") diff --git a/code/modules/mob/living/simple_mob/subtypes/animal/farm animals/cow.dm b/code/modules/mob/living/simple_mob/subtypes/animal/farm animals/cow.dm new file mode 100644 index 0000000000..b5373c176a --- /dev/null +++ b/code/modules/mob/living/simple_mob/subtypes/animal/farm animals/cow.dm @@ -0,0 +1,67 @@ +/mob/living/simple_mob/animal/passive/cow + name = "cow" + desc = "Known for their milk, just don't tip them over." + tt_desc = "E Bos taurus" + icon_state = "cow" + icon_living = "cow" + icon_dead = "cow_dead" + icon_gib = "cow_gib" + + health = 50 + maxHealth = 50 + + response_help = "pets" + response_disarm = "gently pushes aside" + response_harm = "kicks" + attacktext = list("kicked") + + say_list_type = /datum/say_list/cow + + meat_amount = 6 + meat_type = /obj/item/weapon/reagent_containers/food/snacks/meat + + var/datum/reagents/udder = null + +/mob/living/simple_mob/animal/passive/cow/New() + udder = new(50) + udder.my_atom = src + ..() + +/mob/living/simple_mob/animal/passive/cow/attackby(var/obj/item/O as obj, var/mob/user as mob) + var/obj/item/weapon/reagent_containers/glass/G = O + if(stat == CONSCIOUS && istype(G) && G.is_open_container()) + user.visible_message("[user] milks [src] using \the [O].") + var/transfered = udder.trans_id_to(G, "milk", rand(5,10)) + if(G.reagents.total_volume >= G.volume) + to_chat(user, "The [O] is full.") + if(!transfered) + to_chat(user, "The udder is dry. Wait a bit longer...") + else + ..() + +/mob/living/simple_mob/animal/passive/cow/Life() + . = ..() + if(stat == CONSCIOUS) + if(udder && prob(5)) + udder.add_reagent("milk", rand(5, 10)) + +/mob/living/simple_mob/animal/passive/cow/attack_hand(mob/living/carbon/M as mob) + if(!stat && M.a_intent == I_DISARM && icon_state != icon_dead) + M.visible_message("[M] tips over [src].","You tip over [src].") + Weaken(30) + icon_state = icon_dead + spawn(rand(20,50)) + if(!stat && M) + icon_state = icon_living + var/list/responses = list( "[src] looks at you imploringly.", + "[src] looks at you pleadingly", + "[src] looks at you with a resigned expression.", + "[src] seems resigned to its fate.") + to_chat(M, pick(responses)) + else + ..() + +/datum/say_list/cow + speak = list("moo?","moo","MOOOOOO") + emote_hear = list("brays", "moos","moos hauntingly") + emote_see = list("shakes its head") \ No newline at end of file diff --git a/code/modules/mob/living/simple_mob/subtypes/animal/farm animals/goat.dm b/code/modules/mob/living/simple_mob/subtypes/animal/farm animals/goat.dm new file mode 100644 index 0000000000..7ff82a8160 --- /dev/null +++ b/code/modules/mob/living/simple_mob/subtypes/animal/farm animals/goat.dm @@ -0,0 +1,81 @@ +/mob/living/simple_mob/animal/goat + name = "goat" + desc = "Not known for their pleasant disposition." + tt_desc = "E Oreamnos americanus" + icon_state = "goat" + icon_living = "goat" + icon_dead = "goat_dead" + + faction = "goat" + + health = 40 + maxHealth = 40 + + response_help = "pets" + response_disarm = "gently pushes aside" + response_harm = "kicks" + + melee_damage_lower = 1 + melee_damage_upper = 5 + attacktext = list("kicked") + + say_list_type = /datum/say_list/goat + ai_holder_type = /datum/ai_holder/simple_mob/retaliate + + meat_amount = 4 + meat_type = /obj/item/weapon/reagent_containers/food/snacks/meat + + var/datum/reagents/udder = null + +/mob/living/simple_mob/animal/goat/New() + udder = new(50) + udder.my_atom = src + ..() + +/mob/living/simple_mob/animal/goat/Life() + . = ..() + if(.) + if(stat == CONSCIOUS) + if(udder && prob(5)) + udder.add_reagent("milk", rand(5, 10)) + + if(locate(/obj/effect/plant) in loc) + var/obj/effect/plant/SV = locate() in loc + SV.die_off(1) + + if(locate(/obj/machinery/portable_atmospherics/hydroponics/soil/invisible) in loc) + var/obj/machinery/portable_atmospherics/hydroponics/soil/invisible/SP = locate() in loc + qdel(SP) + + if(!pulledby) + var/obj/effect/plant/food + food = locate(/obj/effect/plant) in oview(5,loc) + if(food) + var/step = get_step_to(src, food, 0) + Move(step) + +/mob/living/simple_mob/animal/goat/Move() + ..() + if(!stat) + for(var/obj/effect/plant/SV in loc) + SV.die_off(1) + +/mob/living/simple_mob/animal/goat/attackby(var/obj/item/O as obj, var/mob/user as mob) + var/obj/item/weapon/reagent_containers/glass/G = O + if(stat == CONSCIOUS && istype(G) && G.is_open_container()) + user.visible_message("[user] milks [src] using \the [O].") + var/transfered = udder.trans_id_to(G, "milk", rand(5,10)) + if(G.reagents.total_volume >= G.volume) + to_chat(user, "The [O] is full.") + if(!transfered) + to_chat(user, "The udder is dry. Wait a bit longer...") + else + ..() + +/datum/say_list/goat + speak = list("EHEHEHEHEH","eh?") + emote_hear = list("brays") + emote_see = list("shakes its head", "stamps a foot", "glares around") + + // say_got_target doesn't seem to handle emotes, but keeping this here in case someone wants to make it work +// say_got_target = list("[src] gets an evil-looking gleam in their eye.") \ No newline at end of file diff --git a/code/modules/mob/living/simple_mob/subtypes/animal/giant_spider/_giant_spider.dm b/code/modules/mob/living/simple_mob/subtypes/animal/giant_spider/_giant_spider.dm new file mode 100644 index 0000000000..6191680d57 --- /dev/null +++ b/code/modules/mob/living/simple_mob/subtypes/animal/giant_spider/_giant_spider.dm @@ -0,0 +1,118 @@ +/* + Spiders come in various types, and are a fairly common enemy both inside and outside the station. + Their attacks can inject reagents, which can cause harm long after the spider is killed. + Thick material will prevent injections, similar to other means of injections. +*/ + +// Obtained by scanning any giant spider. +/datum/category_item/catalogue/fauna/giant_spider/giant_spiders + name = "Giant Spiders" + desc = "Giant Spiders are massive arachnids genetically descended from conventional Earth spiders, \ + however what caused ordinary arachnids to evolve into these are disputed. \ + Different initial species of spider have co-evolved and interbred to produce a robust biological caste system \ + capable of producing many varieties of giant spider. They are considered by most people to be a dangerous \ + invasive species, due to their hostility, venom, and high rate of reproduction. A strong resistance to \ + various poisons and toxins has been found, making it difficult to indirectly control their population.\ +

      \ + Giant Spiders have three known castes, 'Guard', 'Hunter', and 'Nurse'. \ + Spiders in the Guard caste are generally the physically stronger, resilient types. \ + The ones in the Hunter caste are usually faster, or have some from of ability to \ + close the distance between them and their prey rapidly. \ + Finally, those in the Nurse caste generally act in a supporting role to the other two \ + castes, spinning webs and ensuring their nest grows larger and more terrifying." + value = CATALOGUER_REWARD_TRIVIAL + unlocked_by_any = list(/datum/category_item/catalogue/fauna/giant_spider) + +// Obtained by scanning all spider types. +/datum/category_item/catalogue/fauna/all_giant_spiders + name = "Collection - Giant Spiders" + desc = "You have scanned a large array of different types of giant spiders, \ + and therefore you have been granted a large sum of points, through this \ + entry." + value = CATALOGUER_REWARD_HARD + unlocked_by_all = list( + /datum/category_item/catalogue/fauna/giant_spider/guard_spider, + /datum/category_item/catalogue/fauna/giant_spider/carrier_spider, + /datum/category_item/catalogue/fauna/giant_spider/electric_spider, + /datum/category_item/catalogue/fauna/giant_spider/frost_spider, + /datum/category_item/catalogue/fauna/giant_spider/hunter_spider, + /datum/category_item/catalogue/fauna/giant_spider/lurker_spider, + /datum/category_item/catalogue/fauna/giant_spider/nurse_spider, + /datum/category_item/catalogue/fauna/giant_spider/pepper_spider, + /datum/category_item/catalogue/fauna/giant_spider/phorogenic_spider, + /datum/category_item/catalogue/fauna/giant_spider/thermic_spider, + /datum/category_item/catalogue/fauna/giant_spider/tunneler_spider, + /datum/category_item/catalogue/fauna/giant_spider/webslinger_spider + ) + +// Specific to guard spiders. +/datum/category_item/catalogue/fauna/giant_spider/guard_spider + name = "Giant Spider - Guard" + desc = "This specific spider has been catalogued as 'Guard', \ + and belongs to the 'Guard' caste. It has a brown coloration, with \ + red glowing eyes.\ +

      \ + This spider, like the others in its caste, is bulky, strong, and resilient. It \ + relies on its raw strength to kill prey, due to having less potent venom compared \ + to other spiders." + value = CATALOGUER_REWARD_EASY + +// The base spider, in the 'walking tank' family. +/mob/living/simple_mob/animal/giant_spider + name = "giant spider" + desc = "Furry and brown, it makes you shudder to look at it. This one has deep red eyes." + tt_desc = "X Atrax robustus gigantus" + catalogue_data = list(/datum/category_item/catalogue/fauna/giant_spider/guard_spider) + + icon_state = "guard" + icon_living = "guard" + icon_dead = "guard_dead" + has_eye_glow = TRUE + + faction = "spiders" + maxHealth = 200 + health = 200 + pass_flags = PASSTABLE + movement_cooldown = 10 + poison_resist = 0.5 + + see_in_dark = 10 + + response_help = "pets" + response_disarm = "gently pushes aside" + response_harm = "punches" + + melee_damage_lower = 18 + melee_damage_upper = 30 + attack_sharp = 1 + attack_edge = 1 + attack_sound = 'sound/weapons/bite.ogg' + + heat_damage_per_tick = 20 + cold_damage_per_tick = 20 + minbodytemp = 175 // So they can all survive Sif without having to be classed under /sif subtype. + + speak_emote = list("chitters") + + meat_amount = 1 + meat_type = /obj/item/weapon/reagent_containers/food/snacks/xenomeat/spidermeat + + say_list_type = /datum/say_list/spider + + var/poison_type = "spidertoxin" // The reagent that gets injected when it attacks. + var/poison_chance = 10 // Chance for injection to occur. + var/poison_per_bite = 5 // Amount added per injection. + +/mob/living/simple_mob/animal/giant_spider/apply_melee_effects(var/atom/A) + if(isliving(A)) + var/mob/living/L = A + if(L.reagents) + var/target_zone = pick(BP_TORSO,BP_TORSO,BP_TORSO,BP_L_LEG,BP_R_LEG,BP_L_ARM,BP_R_ARM,BP_HEAD) + if(L.can_inject(src, null, target_zone)) + inject_poison(L, target_zone) + +// Does actual poison injection, after all checks passed. +/mob/living/simple_mob/animal/giant_spider/proc/inject_poison(mob/living/L, target_zone) + if(prob(poison_chance)) + to_chat(L, "You feel a tiny prick.") + L.reagents.add_reagent(poison_type, poison_per_bite) diff --git a/code/modules/mob/living/simple_mob/subtypes/animal/giant_spider/carrier.dm b/code/modules/mob/living/simple_mob/subtypes/animal/giant_spider/carrier.dm new file mode 100644 index 0000000000..2d8ec6e618 --- /dev/null +++ b/code/modules/mob/living/simple_mob/subtypes/animal/giant_spider/carrier.dm @@ -0,0 +1,88 @@ +// Carriers are not too dangerous on their own, but they create more spiders when dying. + +/datum/category_item/catalogue/fauna/giant_spider/carrier_spider + name = "Giant Spider - Carrier" + desc = "This specific spider has been catalogued as 'Carrier', \ + and it belongs to the 'Nurse' caste. \ +

      \ + The spider has a beige and red appearnce, with bright green eyes. \ + Inside the spider are a large number of younger spiders and spiderlings, hence \ + the Carrier classification. \ + If the host dies, they will be able to exit the body and survive independantly, \ + unless the host dies catastrophically." + value = CATALOGUER_REWARD_MEDIUM + +/mob/living/simple_mob/animal/giant_spider/carrier + desc = "Furry, beige, and red, it makes you shudder to look at it. This one has luminous green eyes." + catalogue_data = list(/datum/category_item/catalogue/fauna/giant_spider/carrier_spider) + + icon_state = "carrier" + icon_living = "carrier" + icon_dead = "carrier_dead" + + maxHealth = 100 + health = 100 + + melee_damage_lower = 8 + melee_damage_upper = 25 + + poison_per_bite = 3 + poison_type = "chloralhydrate" + + movement_cooldown = 5 + + player_msg = "Upon dying, you will release a swarm of spiderlings or young hunter spiders.
      \ + If a spider emerges, you will be placed in control of it." + + var/spiderling_count = 0 + var/spiderling_type = /obj/effect/spider/spiderling + var/swarmling_type = /mob/living/simple_mob/animal/giant_spider/hunter + var/swarmling_faction = "spiders" + var/swarmling_prob = 10 // Odds that a spiderling will be a swarmling instead. + +/mob/living/simple_mob/animal/giant_spider/carrier/Initialize() + spiderling_count = rand(5, 10) + adjust_scale(1.2) + return ..() + +/mob/living/simple_mob/animal/giant_spider/carrier/death() + visible_message(span("warning", "\The [src]'s abdomen splits as it rolls over, spiderlings crawling from the wound.") ) + spawn(1) + var/list/new_spiders = list() + for(var/i = 1 to spiderling_count) + if(prob(swarmling_prob) && src) + var/mob/living/simple_mob/animal/giant_spider/swarmling = new swarmling_type(src.loc) + var/swarm_health = FLOOR(swarmling.maxHealth * 0.4, 1) + var/swarm_dam_lower = FLOOR(melee_damage_lower * 0.4, 1) + var/swarm_dam_upper = FLOOR(melee_damage_upper * 0.4, 1) + swarmling.name = "spiderling" + swarmling.maxHealth = swarm_health + swarmling.health = swarm_health + swarmling.melee_damage_lower = swarm_dam_lower + swarmling.melee_damage_upper = swarm_dam_upper + swarmling.faction = swarmling_faction + swarmling.adjust_scale(0.75) + new_spiders += swarmling + else if(src) + var/obj/effect/spider/spiderling/child = new spiderling_type(src.loc) + child.skitter() + else // We might've gibbed or got deleted. + break + // Transfer our player to their new body, if RNG provided one. + if(new_spiders.len && client) + var/mob/living/simple_mob/animal/giant_spider/new_body = pick(new_spiders) + new_body.key = src.key + return ..() + +// Note that this isn't required for the 'scan all spiders' entry since its essentially a meme. +/datum/category_item/catalogue/fauna/giant_spider/recursive_carrier_spider + name = "Giant Spider - Recursive Carrier" + desc = "It's Carriers all the way down." + value = CATALOGUER_REWARD_MEDIUM + +/mob/living/simple_mob/animal/giant_spider/carrier/recursive + desc = "Furry, beige, and red, it makes you shudder to look at it. This one has luminous green eyes. \ + You have a distinctly bad feeling about this." + catalogue_data = list(/datum/category_item/catalogue/fauna/giant_spider/recursive_carrier_spider) + + swarmling_type = /mob/living/simple_mob/animal/giant_spider/carrier/recursive diff --git a/code/modules/mob/living/simple_mob/subtypes/animal/giant_spider/electric.dm b/code/modules/mob/living/simple_mob/subtypes/animal/giant_spider/electric.dm new file mode 100644 index 0000000000..26ce1605a4 --- /dev/null +++ b/code/modules/mob/living/simple_mob/subtypes/animal/giant_spider/electric.dm @@ -0,0 +1,62 @@ +// Electric spiders fire taser-like beams at their enemies. + +/datum/category_item/catalogue/fauna/giant_spider/electric_spider + name = "Giant Spider - Electric" + desc = "This specific spider has been catalogued as 'Electric', \ + and it belongs to the 'Guard' caste. \ +

      \ + The spider has a yellow coloration, with a spined back, and possessing bright yellow eyes that flicker. \ + It has evolved to be able to utilize a form of bioelectrogenesis as a means of attack, discharging painful \ + bolts of electricity at their prey to subdue it, before closing in. Their body also has strong insulative \ + properties, presumably to protect the body while using its attack. \ +

      \ + The venom they produce is known to be a stimulant, causing increased agility in speed in those bitten, \ + which would at first appear to hinder the Electric Spider, however the stimulant also causes twitching, \ + uncontrollable movement, and organ failure, which is accelerated when the bitten prey tries to use their \ + newfound speed to flee. It is not uncommon for prey to collapse and die shortly after appearing to have \ + 'escaped' the spider, enabling a form of persistance hunting for the Electric Spider." + value = CATALOGUER_REWARD_MEDIUM + +/mob/living/simple_mob/animal/giant_spider/electric + desc = "Spined and yellow, it makes you shudder to look at it. This one has flickering gold eyes." + catalogue_data = list(/datum/category_item/catalogue/fauna/giant_spider/electric_spider) + + icon_state = "spark" + icon_living = "spark" + icon_dead = "spark_dead" + + maxHealth = 210 + health = 210 + + taser_kill = 0 //It -is- the taser. + + base_attack_cooldown = 10 + projectilesound = 'sound/weapons/taser2.ogg' + projectiletype = /obj/item/projectile/beam/stun/electric_spider + + melee_damage_lower = 10 + melee_damage_upper = 25 + + poison_chance = 15 + poison_per_bite = 3 + poison_type = "stimm" + + shock_resist = 0.75 + + player_msg = "You can fire a taser-like ranged attack by clicking on an enemy or tile at a distance." + + ai_holder_type = /datum/ai_holder/simple_mob/ranged/electric_spider + +/obj/item/projectile/beam/stun/electric_spider + name = "stun beam" + agony = 20 + +// The electric spider's AI. +/datum/ai_holder/simple_mob/ranged/electric_spider + +/datum/ai_holder/simple_mob/ranged/electric_spider/max_range(atom/movable/AM) + if(isliving(AM)) + var/mob/living/L = AM + if(L.incapacitated(INCAPACITATION_DISABLED) || L.stat == UNCONSCIOUS) // If our target is stunned, go in for the kill. + return 1 + return ..() // Do ranged if possible otherwise. diff --git a/code/modules/mob/living/simple_mob/subtypes/animal/giant_spider/frost.dm b/code/modules/mob/living/simple_mob/subtypes/animal/giant_spider/frost.dm new file mode 100644 index 0000000000..2128b98ef4 --- /dev/null +++ b/code/modules/mob/living/simple_mob/subtypes/animal/giant_spider/frost.dm @@ -0,0 +1,37 @@ +// Frost spiders inject cryotoxin, slowing people down (which is very bad if trying to run from spiders). + +/datum/category_item/catalogue/fauna/giant_spider/frost_spider + name = "Giant Spider - Frost" + desc = "This specific spider has been catalogued as 'Frost', \ + and it belongs to the 'Guard' caste. \ + The spider is blue, and often has ice hanging off of it. It is also said to have an icy gaze, with its blue eyes. \ +

      \ + It has adapted for survival in colder climates, with its body able to insulate itself from colder environments. \ + Unfortunately for it, this also has given them a vulnerability to heat.\ +

      \ + Frost Spider venom causes a sharp decrease in body temperature to those bitten, which causes \ + hypothermia. It also slows down the victim, making it more difficult to escape by fleeing. \ + The danger is amplified by the fact that humans that receive the venom are often wearing \ + thermal insulating clothing, making it more difficult to warm up." + value = CATALOGUER_REWARD_MEDIUM + +/mob/living/simple_mob/animal/giant_spider/frost + desc = "Icy and blue, it makes you shudder to look at it. This one has brilliant blue eyes." + catalogue_data = list(/datum/category_item/catalogue/fauna/giant_spider/frost_spider) + + icon_state = "frost" + icon_living = "frost" + icon_dead = "frost_dead" + + maxHealth = 175 + health = 175 + + poison_per_bite = 5 + poison_type = "cryotoxin" + heat_resist = -0.50 + cold_resist = 0.75 + +// Sif variant with a somewhat different desc. +/mob/living/simple_mob/animal/giant_spider/frost/sif + desc = "Icy and blue, it makes you shudder to look at it. This one has brilliant blue eyes. \ + It isn't native to Sif." diff --git a/code/modules/mob/living/simple_mob/subtypes/animal/giant_spider/giant_spider_vr.dm b/code/modules/mob/living/simple_mob/subtypes/animal/giant_spider/giant_spider_vr.dm new file mode 100644 index 0000000000..2ff8c55598 --- /dev/null +++ b/code/modules/mob/living/simple_mob/subtypes/animal/giant_spider/giant_spider_vr.dm @@ -0,0 +1,45 @@ +// Slightly placeholder, mostly to replace ion hivebots on V4 +/mob/living/simple_mob/animal/giant_spider/ion + desc = "Furry and green, it makes you shudder to look at it. This one has brilliant green eyes and a hint of static discharge." + tt_desc = "X Brachypelma phorus ionus" + icon_state = "webslinger" + icon_living = "webslinger" + icon_dead = "webslinger_dead" + + maxHealth = 90 + health = 90 + + base_attack_cooldown = 10 + projectilesound = 'sound/weapons/taser2.ogg' + projectiletype = /obj/item/projectile/ion/small + + melee_damage_lower = 8 + melee_damage_upper = 15 + + poison_chance = 15 + poison_per_bite = 2 + poison_type = "psilocybin" + + ai_holder_type = /datum/ai_holder/simple_mob/ranged/electric_spider + +//Lost to AI refactor, returning champion of arachnophobe horror, Spider Queen +/mob/living/simple_mob/animal/giant_spider/nurse/queen + name = "giant spider queen" + desc = "Absolutely gigantic, this creature is horror itself." + tt_desc = "X Brachypelma phorus tyrannus" + icon = 'icons/mob/64x64.dmi' + icon_state = "spider_queen" + icon_living = "spider_queen" + icon_dead = "spider_queen_dead" + + maxHealth = 320 + health = 320 + + melee_damage_lower = 20 + melee_damage_upper = 30 + attack_armor_pen = 25 + + pixel_x = -16 + pixel_y = -16 + old_x = -16 + old_y = -16 diff --git a/code/modules/mob/living/simple_mob/subtypes/animal/giant_spider/hunter.dm b/code/modules/mob/living/simple_mob/subtypes/animal/giant_spider/hunter.dm new file mode 100644 index 0000000000..54a530026e --- /dev/null +++ b/code/modules/mob/living/simple_mob/subtypes/animal/giant_spider/hunter.dm @@ -0,0 +1,180 @@ +// Hunters are fast, fragile, and possess a leaping attack. +// The leaping attack is somewhat telegraphed and can be dodged if one is paying attention. +// The AI would've followed up after a successful leap with dragging the downed victim away, but the dragging code was too janky. + +/datum/category_item/catalogue/fauna/giant_spider/hunter_spider + name = "Giant Spider - Hunter" + desc = "This specific spider has been catalogued as 'Hunter', \ + and it belongs to the 'Hunter' caste. \ + The spider is entirely black in color, with purple eyes. \ +

      \ + The Hunter spider is noted for being one of the most agile types of spiders, being able \ + to move quickly, and do a short leap in the air. Due to their considerable weight, being leaped on \ + will often cause the victim to fall over, making this their main hunting tactic. \ +

      \ + The venom inside these spiders has no special properties beyond being toxic." + value = CATALOGUER_REWARD_EASY + +/mob/living/simple_mob/animal/giant_spider/hunter + desc = "Furry and black, it makes you shudder to look at it. This one has sparkling purple eyes." + catalogue_data = list(/datum/category_item/catalogue/fauna/giant_spider/hunter_spider) + + icon_state = "hunter" + icon_living = "hunter" + icon_dead = "hunter_dead" + + maxHealth = 120 + health = 120 + + poison_per_bite = 5 + melee_damage_lower = 9 + melee_damage_upper = 15 + + movement_cooldown = 0 // Hunters are FAST. + + ai_holder_type = /datum/ai_holder/simple_mob/melee/hunter_spider + + player_msg = "You are very fast, and can perform a leaping attack by clicking on someone from a short distance away.
      \ + If the leap succeeds, the target will be knocked down briefly and you will be on top of them.
      \ + Note that there is a short delay before you leap!
      \ + In addition, you will do more damage to incapacitated opponents." + + // Leaping is a special attack, so these values determine when leap can happen. + // Leaping won't occur if its on cooldown. + special_attack_min_range = 2 + special_attack_max_range = 4 + special_attack_cooldown = 10 SECONDS + + var/leap_warmup = 1 SECOND // How long the leap telegraphing is. + var/leap_sound = 'sound/weapons/spiderlunge.ogg' + +// Multiplies damage if the victim is stunned in some form, including a successful leap. +/mob/living/simple_mob/animal/giant_spider/hunter/apply_bonus_melee_damage(atom/A, damage_amount) + if(isliving(A)) + var/mob/living/L = A + if(L.incapacitated(INCAPACITATION_DISABLED)) + return damage_amount * 1.5 + return ..() + + +// The actual leaping attack. +/mob/living/simple_mob/animal/giant_spider/hunter/do_special_attack(atom/A) + set waitfor = FALSE + set_AI_busy(TRUE) + + // Telegraph, since getting stunned suddenly feels bad. + do_windup_animation(A, leap_warmup) + sleep(leap_warmup) // For the telegraphing. + + // Do the actual leap. + status_flags |= LEAPING // Lets us pass over everything. + visible_message(span("danger","\The [src] leaps at \the [A]!")) + throw_at(get_step(get_turf(A), get_turf(src)), special_attack_max_range+1, 1, src) + playsound(src, leap_sound, 75, 1) + + sleep(5) // For the throw to complete. It won't hold up the AI ticker due to waitfor being false. + + if(status_flags & LEAPING) + status_flags &= ~LEAPING // Revert special passage ability. + + var/turf/T = get_turf(src) // Where we landed. This might be different than A's turf. + + . = FALSE + + // Now for the stun. + var/mob/living/victim = null + for(var/mob/living/L in T) // So player-controlled spiders only need to click the tile to stun them. + if(L == src) + continue + + if(ishuman(L)) + var/mob/living/carbon/human/H = L + if(H.check_shields(damage = 0, damage_source = src, attacker = src, def_zone = null, attack_text = "the leap")) + continue // We were blocked. + + victim = L + break + + if(victim) + victim.Weaken(2) + victim.visible_message(span("danger","\The [src] knocks down \the [victim]!")) + to_chat(victim, span("critical", "\The [src] jumps on you!")) + . = TRUE + + set_AI_busy(FALSE) + +// var/obj/item/weapon/grab/G = new(src, victim) +// put_in_active_hand(G) + +// G.synch() +// G.affecting = victim +// victim.LAssailant = src + +// visible_message("\The [src] seizes \the [victim] aggressively!") +// do_attack_animation(victim) + + +// This AI would've isolated people it stuns with its 'leap' attack, by dragging them away. +/datum/ai_holder/simple_mob/melee/hunter_spider + +/* + +/datum/ai_holder/simple_mob/melee/hunter_spider/post_special_attack(mob/living/L) + drag_away(L) + +// Called after a successful leap. +/datum/ai_holder/simple_mob/melee/hunter_spider/proc/drag_away(mob/living/L) + world << "Doing drag_away attack on [L]" + if(!istype(L)) + world << "Invalid type." + return FALSE + + // If they didn't get stunned, then don't bother. + if(!L.incapacitated(INCAPACITATION_DISABLED)) + world << "Not incapcitated." + return FALSE + + // Grab them. + if(!holder.start_pulling(L)) + world << "Failed to pull." + return FALSE + + holder.visible_message(span("danger","\The [holder] starts to drag \the [L] away!")) + + var/list/allies = list() + var/list/enemies = list() + for(var/mob/living/thing in hearers(vision_range, holder)) + if(thing == holder || thing == L) // Don't count ourselves or the thing we just started pulling. + continue + if(holder.IIsAlly(thing)) + allies += thing + else + enemies += thing + + // First priority: Move our victim to our friends. + if(allies.len) + world << "Going to move to ally" + give_destination(get_turf(pick(allies)), min_distance = 2, combat = TRUE) // This will switch our stance. + + // Second priority: Move our victim away from their friends. + // There's a chance of it derping and pulling towards enemies if there's more than two people. + // Preventing that will likely be both a lot of effort for developers and the CPU. + else if(enemies.len) + world << "Going to move away from enemies" + var/mob/living/hostile = pick(enemies) + var/turf/move_to = get_turf(hostile) + for(var/i = 1 to vision_range) // Move them this many steps away from their friend. + move_to = get_step_away(move_to, L, 7) + if(move_to) + give_destination(move_to, min_distance = 2, combat = TRUE) // This will switch our stance. + + // Third priority: Move our victim SOMEWHERE away from where they were. + else + world << "Going to move away randomly" + var/turf/move_to = get_turf(L) + move_to = get_step(move_to, pick(cardinal)) + for(var/i = 1 to vision_range) // Move them this many steps away from where they were before. + move_to = get_step_away(move_to, L, 7) + if(move_to) + give_destination(move_to, min_distance = 2, combat = TRUE) // This will switch our stance. +*/ diff --git a/code/modules/mob/living/simple_mob/subtypes/animal/giant_spider/lurker.dm b/code/modules/mob/living/simple_mob/subtypes/animal/giant_spider/lurker.dm new file mode 100644 index 0000000000..d26ad34992 --- /dev/null +++ b/code/modules/mob/living/simple_mob/subtypes/animal/giant_spider/lurker.dm @@ -0,0 +1,122 @@ +// Lurkers are somewhat similar to Hunters, however the big difference is that Lurkers have an imperfect cloak. +// Their AI will try to do hit and run tactics, striking the enemy when its "cloaked", for bonus damage and a stun. +// They keep attacking until the stun ends, then retreat to cloak again and repeat the cycle. +// Hitting the spider before it does its ambush attack will break the cloak and make the spider flee. + +/datum/category_item/catalogue/fauna/giant_spider/lurker_spider + name = "Giant Spider - Lurker" + desc = "This specific spider has been catalogued as 'Lurker', \ + and it belongs to the 'Hunter' caste. \ + The spider is colored white, however it is more often seen being translucent. It has red eyes. \ +

      \ + Lurkers are well known for being able to become almost entirely transparent, making them difficult \ + to see to those distracted or with poor sight. They primarily hunt by sneaking up to unsuspecting prey, \ + then ambushing them with a single powerful strike to incapacitate, before going for the kill. \ + Their translucent state appears to require some form of active management, as they become fully visible \ + after their surprise strike, or if they are harmed while translucent. Lurkers have \ + a conservative and opportunistic hunting style, fleeing into the shadows if their translucent cloak is compromised \ + from observant prey, or if their prey is still alive after their initial ambush. \ +

      \ + The venom from this spider can cause confusion to those afflicted." + value = CATALOGUER_REWARD_MEDIUM + +/mob/living/simple_mob/animal/giant_spider/lurker + desc = "Translucent and white, it makes you shudder to look at it. This one has incandescent red eyes." + catalogue_data = list(/datum/category_item/catalogue/fauna/giant_spider/lurker_spider) + + icon_state = "lurker" + icon_living = "lurker" + icon_dead = "lurker_dead" + + maxHealth = 100 + health = 100 + + poison_per_bite = 5 + + movement_cooldown = 5 + + melee_damage_lower = 10 + melee_damage_upper = 10 + poison_chance = 30 + poison_type = "cryptobiolin" + poison_per_bite = 1 + + player_msg = "You have an imperfect, but automatic stealth. If you attack something while 'hidden', then \ + you will do bonus damage, stun the target, and unstealth for a period of time.
      \ + Getting attacked will also break your stealth." + + ai_holder_type = /datum/ai_holder/simple_mob/melee/hit_and_run + + var/cloaked = FALSE + var/cloaked_alpha = 45 // Lower = Harder to see. + var/cloaked_bonus_damage = 30 // This is added on top of the normal melee damage. + var/cloaked_weaken_amount = 3 // How long to stun for. + var/cloak_cooldown = 10 SECONDS // Amount of time needed to re-cloak after losing it. + var/last_uncloak = 0 // world.time + + +/mob/living/simple_mob/animal/giant_spider/lurker/proc/cloak() + if(cloaked) + return + animate(src, alpha = cloaked_alpha, time = 1 SECOND) + cloaked = TRUE + + +/mob/living/simple_mob/animal/giant_spider/lurker/proc/uncloak() + last_uncloak = world.time // This is assigned even if it isn't cloaked already, to 'reset' the timer if the spider is continously getting attacked. + if(!cloaked) + return + animate(src, alpha = initial(alpha), time = 1 SECOND) + cloaked = FALSE + + +// Check if cloaking if possible. +/mob/living/simple_mob/animal/giant_spider/lurker/proc/can_cloak() + if(stat) + return FALSE + if(last_uncloak + cloak_cooldown > world.time) + return FALSE + + return TRUE + + +// Called by things that break cloaks, like Technomancer wards. +/mob/living/simple_mob/animal/giant_spider/lurker/break_cloak() + uncloak() + + +/mob/living/simple_mob/animal/giant_spider/lurker/is_cloaked() + return cloaked + + +// Cloaks the spider automatically, if possible. +/mob/living/simple_mob/animal/giant_spider/lurker/handle_special() + if(!cloaked && can_cloak()) + cloak() + + +// Applies bonus base damage if cloaked. +/mob/living/simple_mob/animal/giant_spider/lurker/apply_bonus_melee_damage(atom/A, damage_amount) + if(cloaked) + return damage_amount + cloaked_bonus_damage + return ..() + +// Applies stun, then uncloaks. +/mob/living/simple_mob/animal/giant_spider/lurker/apply_melee_effects(atom/A) + if(cloaked) + if(isliving(A)) + var/mob/living/L = A + L.Weaken(cloaked_weaken_amount) + to_chat(L, span("danger", "\The [src] ambushes you!")) + playsound(L, 'sound/weapons/spiderlunge.ogg', 75, 1) + uncloak() + ..() // For the poison. + +// Force uncloaking if attacked. +/mob/living/simple_mob/animal/giant_spider/lurker/bullet_act(obj/item/projectile/P) + . = ..() + break_cloak() + +/mob/living/simple_mob/animal/giant_spider/lurker/hit_with_weapon(obj/item/O, mob/living/user, effective_force, hit_zone) + . = ..() + break_cloak() diff --git a/code/modules/mob/living/simple_mob/subtypes/animal/giant_spider/nurse.dm b/code/modules/mob/living/simple_mob/subtypes/animal/giant_spider/nurse.dm new file mode 100644 index 0000000000..a2ff0bc51e --- /dev/null +++ b/code/modules/mob/living/simple_mob/subtypes/animal/giant_spider/nurse.dm @@ -0,0 +1,259 @@ +// Nurses, they create webs and eggs. +// They're fragile but their attacks can cause horrifying consequences. + +/datum/category_item/catalogue/fauna/giant_spider/nurse_spider + name = "Giant Spider - Nurse" + desc = "This specific spider has been catalogued as 'Nurse', \ + and it belongs to the 'Nurse' caste. \ + The spider has a beige coloration, with green eyes. \ +

      \ + Nurses primarily spin webs and lay eggs for the other spiders, making them a critical role \ + for the survival of their species in their local area. Despite this importance, they are \ + (compared to the other spiders) rather frail and weak, thus requiring protection from the \ + other spiders. Laying eggs requires considerable amounts of resources, meaning Nurses generally \ + only lay eggs after they or another spider successfully hunts prey.\ +

      \ + Unlike ordinary spiders, Nurses can create vast amounts of web in a short period of time, making \ + their nest difficult and dangerous to move around in. Their webs also sometimes obscure what is \ + behind them, giving an advantage to spiders defending their nest, and invoking paranoia in humans \ + tasked with exterminating the spiders. \ +

      \ + Nurse venom causes fatigue and tiredness. They are also able to directly inject spider eggs into \ + those it bites, which can later hatch spiderlings, causing considerably physical and psychological trauma." + value = CATALOGUER_REWARD_EASY + +/mob/living/simple_mob/animal/giant_spider/nurse + desc = "Furry and beige, it makes you shudder to look at it. This one has brilliant green eyes." + catalogue_data = list(/datum/category_item/catalogue/fauna/giant_spider/nurse_spider) + + icon_state = "nurse" + icon_living = "nurse" + icon_dead = "nurse_dead" + + maxHealth = 40 + health = 40 + + movement_cooldown = 5 // A bit faster so that they can inject the eggs easier. + + melee_damage_lower = 5 // Doesn't do a lot of damage, since the goal is to make more spiders with egg attacks. + melee_damage_upper = 10 + poison_per_bite = 5 + poison_type = "stoxin" + + player_msg = "You can spin webs on an adjacent tile, or cocoon an object by clicking on it.
      \ + You can also cocoon a dying or dead entity by clicking on them, and you will gain charges for egg-laying.
      \ + To lay eggs, click a nearby tile. Laying eggs will deplete a charge." + ai_holder_type = /datum/ai_holder/simple_mob/melee/nurse_spider + + var/fed = 0 // Counter for how many egg laying 'charges' the spider has. + var/laying_eggs = FALSE // Only allow one set of eggs to be laid at once. + var/egg_inject_chance = 25 // One in four chance to get eggs. + var/egg_type = /obj/effect/spider/eggcluster/small + var/web_type = /obj/effect/spider/stickyweb/dark + + +/mob/living/simple_mob/animal/giant_spider/nurse/inject_poison(mob/living/L, target_zone) + ..() // Inject the stoxin here. + if(ishuman(L) && prob(egg_inject_chance)) + var/mob/living/carbon/human/H = L + var/obj/item/organ/external/O = H.get_organ(target_zone) + if(O) + var/eggcount = 0 + for(var/obj/effect/spider/eggcluster/E in O.implants) + eggcount++ + if(!eggcount) + var/eggs = new egg_type(O, src) + O.implants += eggs + to_chat(H, span("critical", "\The [src] injects something into your [O.name]!") ) // Oh god its laying eggs in me! + +// Webs target in a web if able to. +/mob/living/simple_mob/animal/giant_spider/nurse/attack_target(atom/A) + if(isturf(A)) + if(fed) + if(!laying_eggs) + return lay_eggs(A) + return web_tile(A) + + if(isliving(A)) + var/mob/living/L = A + if(!L.stat) + return ..() + + if(!istype(A, /atom/movable)) + return + var/atom/movable/AM = A + + if(AM.anchored) + return ..() + + return spin_cocoon(AM) + +/mob/living/simple_mob/animal/giant_spider/nurse/proc/spin_cocoon(atom/movable/AM) + if(!istype(AM)) + return FALSE // We can't cocoon walls sadly. + visible_message(span("notice", "\The [src] begins to secrete a sticky substance around \the [AM].") ) + + // Get our AI to stay still. + set_AI_busy(TRUE) + + if(!do_mob(src, AM, 5 SECONDS)) + set_AI_busy(FALSE) + to_chat(src, span("warning", "You need to stay still to spin a web around \the [AM].")) + return FALSE + + set_AI_busy(FALSE) + + if(!AM) // Make sure it didn't get deleted for whatever reason. + to_chat(src, span("warning", "Whatever you were spinning a web for, its no longer there...")) + return FALSE + + if(!isturf(AM.loc)) + to_chat(src, span("warning", "You can't spin \the [AM] in a web while it is inside \the [AM.loc].")) + return FALSE + + if(!Adjacent(AM)) + to_chat(src, span("warning", "You need to be next to \the [AM] to spin it into a web.")) + return FALSE + + // Finally done with the checks. + var/obj/effect/spider/cocoon/C = new(AM.loc) + var/large_cocoon = FALSE + for(var/mob/living/L in C.loc) + if(istype(L, /mob/living/simple_mob/animal/giant_spider)) // Cannibalism is bad. + continue + fed++ + visible_message(span("warning","\The [src] sticks a proboscis into \the [L], and sucks a viscous substance out.")) + to_chat(src, span("notice", "You've fed upon \the [L], and can now lay [fed] cluster\s of eggs.")) + L.forceMove(C) + large_cocoon = TRUE + break + + // This part's pretty stupid. + for(var/obj/O in C.loc) + if(!O.anchored) + O.forceMove(C) + + // Todo: Put this code on the cocoon object itself? + if(large_cocoon) + C.icon_state = pick("cocoon_large1","cocoon_large2","cocoon_large3") + + return TRUE + +/mob/living/simple_mob/animal/giant_spider/nurse/handle_special() + set waitfor = FALSE + if(get_AI_stance() == STANCE_IDLE && !is_AI_busy() && isturf(loc)) + if(fed) + lay_eggs(loc) + else + web_tile(loc) + +/mob/living/simple_mob/animal/giant_spider/nurse/proc/web_tile(turf/T) + if(!istype(T)) + return FALSE + + var/obj/effect/spider/stickyweb/W = locate() in T + if(W) + return FALSE // Already got webs here. + + visible_message(span("notice", "\The [src] begins to secrete a sticky substance.") ) + // Get our AI to stay still. + set_AI_busy(TRUE) + + if(!do_mob(src, T, 5 SECONDS)) + set_AI_busy(FALSE) + to_chat(src, span("warning", "You need to stay still to spin a web on \the [T].")) + return FALSE + + W = locate() in T + if(W) + return FALSE // Spamclick protection. + + set_AI_busy(FALSE) + new web_type(T) + return TRUE + + +/mob/living/simple_mob/animal/giant_spider/nurse/proc/lay_eggs(turf/T) + if(!istype(T)) + return FALSE + + if(!fed) + return FALSE + + var/obj/effect/spider/eggcluster/E = locate() in T + if(E) + return FALSE // Already got eggs here. + + visible_message(span("notice", "\The [src] begins to lay a cluster of eggs.") ) + // Get our AI to stay still. + set_AI_busy(TRUE) + // Stop players from spamming eggs. + laying_eggs = TRUE + + if(!do_mob(src, T, 5 SECONDS)) + set_AI_busy(FALSE) + to_chat(src, span("warning", "You need to stay still to lay eggs on \the [T].")) + return FALSE + + E = locate() in T + if(E) + return FALSE // Spamclick protection. + + set_AI_busy(FALSE) + new egg_type(T) + fed-- + laying_eggs = FALSE + return TRUE + + +// Variant that 'blocks' light (by being a negative light source). +// This is done to make webbed rooms scary and allow for spiders on the other side of webs to see prey. +/obj/effect/spider/stickyweb/dark + name = "dense web" + desc = "It's sticky, and blocks a lot of light." + light_color = "#FFFFFF" + light_range = 2 + light_power = -3 + +// This is still stupid, but whatever. +/mob/living/simple_mob/animal/giant_spider/nurse/hat + desc = "Furry and beige, it makes you shudder to look at it. This one has brilliant green eyes and a tiny nurse hat." + icon_state = "nursemed" + icon_living = "nursemed" + icon_dead = "nursemed_dead" + + +// The AI for nurse spiders. Wraps things in webs by 'attacking' them. +/datum/ai_holder/simple_mob/melee/nurse_spider + wander = TRUE + base_wander_delay = 8 + cooperative = FALSE // So we don't ask our spider friends to attack things we're webbing. This might also make them stay at the base if their friends find tasty explorers. + +// Get us unachored objects as an option as well. +/datum/ai_holder/simple_mob/melee/nurse_spider/list_targets() + . = ..() + + var/static/alternative_targets = typecacheof(list(/obj/item, /obj/structure)) + + for(var/AT in typecache_filter_list(range(vision_range, holder), alternative_targets)) + var/obj/O = AT + if(can_see(holder, O, vision_range) && !O.anchored) + . += O + +// Select an obj if no mobs are around. +/datum/ai_holder/melee/nurse_spider/pick_target(list/targets) + var/mobs_only = locate(/mob/living) in targets // If a mob is in the list of targets, then ignore objects. + if(mobs_only) + for(var/A in targets) + if(!isliving(A)) + targets -= A + + return ..(targets) + +/datum/ai_holder/simple_mob/melee/nurse_spider/can_attack(atom/movable/the_target) + . = ..() + if(!.) // Parent returned FALSE. + if(istype(the_target, /obj)) + var/obj/O = the_target + if(!O.anchored) + return TRUE diff --git a/code/modules/mob/living/simple_mob/subtypes/animal/giant_spider/pepper.dm b/code/modules/mob/living/simple_mob/subtypes/animal/giant_spider/pepper.dm new file mode 100644 index 0000000000..b0481c0097 --- /dev/null +++ b/code/modules/mob/living/simple_mob/subtypes/animal/giant_spider/pepper.dm @@ -0,0 +1,34 @@ +// Pepper spiders inject condensed capsaicin into their victims. + +/datum/category_item/catalogue/fauna/giant_spider/pepper_spider + name = "Giant Spider - Pepper" + desc = "This specific spider has been catalogued as 'Pepper', \ + and it belongs to the 'Guard' caste. \ + Red makes up a majority of the spider's appearance, including its eyes, with some brown on its body as well. \ +

      \ + Pepper spiders are named due to producing capsaicin, and using it as a venom to incapacitate their prey, in an \ + incredibly painful way. Their raw strength is considerably less than some of the other spiders, however \ + they share a similar level of endurance with the other spiders in their caste, making them difficult to put down." + value = CATALOGUER_REWARD_MEDIUM + +/mob/living/simple_mob/animal/giant_spider/pepper + desc = "Red and brown, it makes you shudder to look at it. This one has glinting red eyes." + catalogue_data = list(/datum/category_item/catalogue/fauna/giant_spider/pepper_spider) + + icon_state = "pepper" + icon_living = "pepper" + icon_dead = "pepper_dead" + + maxHealth = 210 + health = 210 + + melee_damage_lower = 8 + melee_damage_upper = 15 + + poison_chance = 20 + poison_per_bite = 5 + poison_type = "condensedcapsaicin_v" + +/mob/living/simple_mob/animal/giant_spider/pepper/Initialize() + adjust_scale(1.1) + return ..() \ No newline at end of file diff --git a/code/modules/mob/living/simple_mob/subtypes/animal/giant_spider/phorogenic.dm b/code/modules/mob/living/simple_mob/subtypes/animal/giant_spider/phorogenic.dm new file mode 100644 index 0000000000..39e2edcb7d --- /dev/null +++ b/code/modules/mob/living/simple_mob/subtypes/animal/giant_spider/phorogenic.dm @@ -0,0 +1,80 @@ +// Phorogenic spiders explode when they die. +// You really shouldn't melee them. + +/datum/category_item/catalogue/fauna/giant_spider/phorogenic_spider + name = "Giant Spider - Phorogenic" + desc = "This specific spider has been catalogued as 'Phorogenic', \ + and it belongs to the 'Guard' caste. \ + The spider has a purple, crystalline appearance, with their eyes also purple.\ +

      \ + These spiders are very dangerous, and unusual. They have obviously been influenced by the mysterious \ + material known as phoron, however it is not known if this is the result of arachnids merely being \ + exposed to naturally-occuring phoron on some alien world, being genetically altered to produce phoron by an unknown party, \ + or some other unknown cause. \ +

      \ + Compared to the other types of spiders in their caste, and even to those outside, this one is the \ + peak of physical strength. It is very strong, often capable of killing its prey in one or two bites, \ + with unyielding endurance to match. It also injects trace amounts of liquid phoron into its victim, \ + which is very toxic to most organic life known. \ +

      \ + Phorongenic spiders are also highly explosive, due to their infusion with phoron. \ + Should one die, it will create a large explosion. This appears to be an automatic response \ + caused from internal rupturing, as opposed to an intentional act of revenge by the spider, however \ + the result is the same, oftening ending a fight with both sides dead." + value = CATALOGUER_REWARD_MEDIUM + +/mob/living/simple_mob/animal/giant_spider/phorogenic + desc = "Crystalline and purple, it makes you shudder to look at it. This one has haunting purple eyes." + catalogue_data = list(/datum/category_item/catalogue/fauna/giant_spider/phorogenic_spider) + + icon_state = "phoron" + icon_living = "phoron" + icon_dead = "phoron_dead" + + maxHealth = 225 + health = 225 + taser_kill = FALSE //You will need more than a peashooter to kill the juggernaut. + + melee_damage_lower = 25 + melee_damage_upper = 40 + attack_armor_pen = 15 + + movement_cooldown = 15 + + poison_chance = 30 + poison_per_bite = 0.5 + poison_type = "phoron" + + var/exploded = FALSE + var/explosion_dev_range = 1 + var/explosion_heavy_range = 2 + var/explosion_light_range = 4 + var/explosion_flash_range = 6 // This doesn't do anything iirc. + + var/explosion_delay_lower = 1 SECOND // Lower bound for explosion delay. + var/explosion_delay_upper = 2 SECONDS // Upper bound. + +/mob/living/simple_mob/animal/giant_spider/phorogenic/Initialize() + adjust_scale(1.25) + return ..() + +/mob/living/simple_mob/animal/giant_spider/phorogenic/death() + visible_message(span("critical", "\The [src]'s body begins to rupture!")) + var/delay = rand(explosion_delay_lower, explosion_delay_upper) + spawn(0) + // Flash black and red as a warning. + for(var/i = 1 to delay) + if(i % 2 == 0) + color = "#000000" + else + color = "#FF0000" + sleep(1) + + spawn(delay) + // The actual boom. + if(src && !exploded) + visible_message(span("danger", "\The [src]'s body detonates!")) + exploded = TRUE + explosion(src.loc, explosion_dev_range, explosion_heavy_range, explosion_light_range, explosion_flash_range) + return ..() + diff --git a/code/modules/mob/living/simple_mob/subtypes/animal/giant_spider/thermic.dm b/code/modules/mob/living/simple_mob/subtypes/animal/giant_spider/thermic.dm new file mode 100644 index 0000000000..7abb7156d5 --- /dev/null +++ b/code/modules/mob/living/simple_mob/subtypes/animal/giant_spider/thermic.dm @@ -0,0 +1,37 @@ +// Thermic spiders inject a special variant of thermite that burns someone from the inside. + +/datum/category_item/catalogue/fauna/giant_spider/thermic_spider + name = "Giant Spider - Thermic" + desc = "This specific spider has been catalogued as 'Thermic', \ + and it belongs to the 'Guard' caste. \ + The spider is colored orange, both body and eyes.\ +

      \ + Compared to the other spiders in its caste, it has less strength and resilience, but instead has \ + an adaptation to more easily survive in high temperature environments. This was discovered when a group of \ + humans had an infestation of these, and their plan to \"kill it with fire\" failed.\ +

      \ + The venom Thermic spiders use is very dangerous and unconventional, as it injects a liquid that combusts very \ + easily, even when inside of another living organism. The result is a gruesome death from literally burning from \ + the inside out." + value = CATALOGUER_REWARD_MEDIUM + +/mob/living/simple_mob/animal/giant_spider/thermic + desc = "Mirage-cloaked and orange, it makes you shudder to look at it. This one has simmering orange eyes." + catalogue_data = list(/datum/category_item/catalogue/fauna/giant_spider/thermic_spider) + + icon_state = "pit" + icon_living = "pit" + icon_dead = "pit_dead" + + maxHealth = 175 + health = 175 + + melee_damage_lower = 10 + melee_damage_upper = 25 + + heat_resist = 0.75 + cold_resist = -0.50 + + poison_chance = 30 + poison_per_bite = 1 + poison_type = "thermite_v" diff --git a/code/modules/mob/living/simple_mob/subtypes/animal/giant_spider/tunneler.dm b/code/modules/mob/living/simple_mob/subtypes/animal/giant_spider/tunneler.dm new file mode 100644 index 0000000000..31997d204c --- /dev/null +++ b/code/modules/mob/living/simple_mob/subtypes/animal/giant_spider/tunneler.dm @@ -0,0 +1,207 @@ +// Tunnelers have a special ability that allows them to charge at an enemy by tunneling towards them. +// Any mobs inbetween the tunneler's path and the target will be stunned if the tunneler hits them. +// The target will suffer a stun as well, if the tunneler hits them at the end. A successful hit will stop the tunneler. +// If the target moves fast enough, the tunneler can miss, causing it to overshoot. +// If the tunneler hits a solid wall, the tunneler will suffer a stun. + +/datum/category_item/catalogue/fauna/giant_spider/tunneler_spider + name = "Giant Spider - Tunneler" + desc = "This specific spider has been catalogued as 'Tunneler', \ + and it belongs to the 'Hunter' caste. \ + The spider has a brown appearance, perhaps as camouflage. It also often has pieces of dirt, sand, or rock lying on it. \ + Their eyes have a bright yellow shine.\ +

      \ + Tunnelers generally reside in subterranean environments, as they are able to dig rapidly in soft materials. \ + They often use this ability as an offensive tactic against prey, burrowing into the ground and tunneling, \ + towards their target, before striking them from below. This powerful tactic does have a notable flaw, \ + in that the spider is unable to actually see where they are going while burrowing, instead checking for \ + increased weight from above as a sign that their prey is above them. This flaw means that Tunnelers \ + often overshoot if the prey happens to move while it is underground, and can result in a collision if \ + the prey happened to be standing near something hard and dense. \ +

      \ + Tunneler venom is also dangerous, as it is known to both promotes concentrated production of the \ + serotonin neurotransmitter, as well as causing brain damage. The feeling of happiness a bite causes \ + afterwards can delay seeking medical treatment, making it extra dangerous." + value = CATALOGUER_REWARD_MEDIUM + +/mob/living/simple_mob/animal/giant_spider/tunneler + desc = "Sandy and brown, it makes you shudder to look at it. This one has glittering yellow eyes." + catalogue_data = list(/datum/category_item/catalogue/fauna/giant_spider/tunneler_spider) + + icon_state = "tunneler" + icon_living = "tunneler" + icon_dead = "tunneler_dead" + + maxHealth = 120 + health = 120 + + melee_damage_lower = 10 + melee_damage_upper = 10 + + poison_chance = 15 + poison_per_bite = 3 + poison_type = "serotrotium_v" + +// ai_holder_type = /datum/ai_holder/simple_mob/melee/tunneler + + player_msg = "You can perform a tunneling attack by clicking on someone from a distance.
      \ + There is a noticable travel delay as you tunnel towards the tile the target was at when you started the tunneling attack.
      \ + Any entities inbetween you and the targeted tile will be stunned for a brief period of time.
      \ + Whatever is on the targeted tile when you arrive will suffer a potent stun.
      \ + If nothing is on the targeted tile, you will overshoot and keep going for a few more tiles.
      \ + If you hit a wall or other solid structure during that time, you will suffer a lengthy stun and be vulnerable to more harm." + + // Tunneling is a special attack, similar to the hunter's Leap. + special_attack_min_range = 2 + special_attack_max_range = 6 + special_attack_cooldown = 10 SECONDS + + var/tunnel_warning = 0.5 SECONDS // How long the dig telegraphing is. + var/tunnel_tile_speed = 2 // How long to wait between each tile. Higher numbers result in an easier to dodge tunnel attack. + +/mob/living/simple_mob/animal/giant_spider/tunneler/frequent + special_attack_cooldown = 5 SECONDS + +/mob/living/simple_mob/animal/giant_spider/tunneler/fast + tunnel_tile_speed = 1 + +/mob/living/simple_mob/animal/giant_spider/tunneler/should_special_attack(atom/A) + // Make sure its possible for the spider to reach the target so it doesn't try to go through a window. + var/turf/destination = get_turf(A) + var/turf/starting_turf = get_turf(src) + var/turf/T = starting_turf + for(var/i = 1 to get_dist(starting_turf, destination)) + if(T == destination) + break + + T = get_step(T, get_dir(T, destination)) + if(T.check_density(ignore_mobs = TRUE)) + return FALSE + return T == destination + + +/mob/living/simple_mob/animal/giant_spider/tunneler/do_special_attack(atom/A) + set waitfor = FALSE + set_AI_busy(TRUE) + + // Save where we're gonna go soon. + var/turf/destination = get_turf(A) + var/turf/starting_turf = get_turf(src) + + // Telegraph to give a small window to dodge if really close. + do_windup_animation(A, tunnel_warning) + sleep(tunnel_warning) // For the telegraphing. + + // Do the dig! + visible_message(span("danger","\The [src] tunnels towards \the [A]!")) + submerge() + + if(handle_tunnel(destination) == FALSE) + set_AI_busy(FALSE) + emerge() + return FALSE + + // Did we make it? + if(!(src in destination)) + set_AI_busy(FALSE) + emerge() + return FALSE + + var/overshoot = TRUE + + // Test if something is at destination. + for(var/mob/living/L in destination) + if(L == src) + continue + + visible_message(span("danger","\The [src] erupts from underneath, and hits \the [L]!")) + playsound(L, 'sound/weapons/heavysmash.ogg', 75, 1) + L.Weaken(3) + overshoot = FALSE + + if(!overshoot) // We hit the target, or something, at destination, so we're done. + set_AI_busy(FALSE) + emerge() + return TRUE + + // Otherwise we need to keep going. + to_chat(src, span("warning", "You overshoot your target!")) + playsound(src, 'sound/weapons/punchmiss.ogg', 75, 1) + var/dir_to_go = get_dir(starting_turf, destination) + for(var/i = 1 to rand(2, 4)) + destination = get_step(destination, dir_to_go) + + if(handle_tunnel(destination) == FALSE) + set_AI_busy(FALSE) + emerge() + return FALSE + + set_AI_busy(FALSE) + emerge() + return FALSE + + + +// Does the tunnel movement, stuns enemies, etc. +/mob/living/simple_mob/animal/giant_spider/tunneler/proc/handle_tunnel(turf/destination) + var/turf/T = get_turf(src) // Hold our current tile. + + // Regular tunnel loop. + for(var/i = 1 to get_dist(src, destination)) + if(stat) + return FALSE // We died or got knocked out on the way. + if(loc == destination) + break // We somehow got there early. + + // Update T. + T = get_step(src, get_dir(src, destination)) + if(T.check_density(ignore_mobs = TRUE)) + to_chat(src, span("critical", "You hit something really solid!")) + playsound(src, "punch", 75, 1) + Weaken(5) + add_modifier(/datum/modifier/tunneler_vulnerable, 10 SECONDS) + return FALSE // Hit a wall. + + // Stun anyone in our way. + for(var/mob/living/L in T) + playsound(L, 'sound/weapons/heavysmash.ogg', 75, 1) + L.Weaken(2) + + // Get into the tile. + forceMove(T) + + // Visuals and sound. + dig_under_floor(get_turf(src)) + playsound(src, 'sound/effects/break_stone.ogg', 75, 1) + sleep(tunnel_tile_speed) + +// For visuals. +/mob/living/simple_mob/animal/giant_spider/tunneler/proc/submerge() + alpha = 0 + dig_under_floor(get_turf(src)) + new /obj/effect/temporary_effect/tunneler_hole(get_turf(src)) + +// Ditto. +/mob/living/simple_mob/animal/giant_spider/tunneler/proc/emerge() + alpha = 255 + dig_under_floor(get_turf(src)) + new /obj/effect/temporary_effect/tunneler_hole(get_turf(src)) + +/mob/living/simple_mob/animal/giant_spider/tunneler/proc/dig_under_floor(turf/T) + new /obj/item/weapon/ore/glass(T) // This will be rather weird when on station but the alternative is too much work. + +/obj/effect/temporary_effect/tunneler_hole + name = "hole" + desc = "A collapsing tunnel hole." + icon_state = "tunnel_hole" + time_to_die = 1 MINUTE + +/datum/modifier/tunneler_vulnerable + name = "Vulnerable" + desc = "You are vulnerable to more harm than usual." + on_created_text = "You feel vulnerable..." + on_expired_text = "You feel better." + stacks = MODIFIER_STACK_EXTEND + + incoming_damage_percent = 2 + evasion = -100 \ No newline at end of file diff --git a/code/modules/mob/living/simple_mob/subtypes/animal/giant_spider/webslinger.dm b/code/modules/mob/living/simple_mob/subtypes/animal/giant_spider/webslinger.dm new file mode 100644 index 0000000000..ce46c55d4c --- /dev/null +++ b/code/modules/mob/living/simple_mob/subtypes/animal/giant_spider/webslinger.dm @@ -0,0 +1,56 @@ +// Webslingers do what their name implies, shoot web at enemies to slow them down. + +/datum/category_item/catalogue/fauna/giant_spider/webslinger_spider + name = "Giant Spider - Webslinger" + desc = "This specific spider has been catalogued as 'Webslinger', \ + and it belongs to the 'Nurse' caste. \ + The spider is green, with a 'cloak' of webs attached to it. It's eyes are also green. \ +

      \ + Webslingers are more aggressive than some of the other spiders in their caste, spinning web to use \ + as an offensive weapon, however they still serve a 'support' role to the other spiders. \ + They sling balls of web at prey in order to slow them down, making it easier for other spiders to catch them. \ + This makes them more dangerous when paired with others, as fleeing may stop being an option once webbed. \ +

      \ + Their venom is known to make bitten prey hallucinate, greatly compromising their combat ability." + value = CATALOGUER_REWARD_MEDIUM + +/mob/living/simple_mob/animal/giant_spider/webslinger + desc = "Furry and green, it makes you shudder to look at it. This one has brilliant green eyes, and a cloak of web." + tt_desc = "X Brachypelma phorus balisticus" + catalogue_data = list(/datum/category_item/catalogue/fauna/giant_spider/webslinger_spider) + + icon_state = "webslinger" + icon_living = "webslinger" + icon_dead = "webslinger_dead" + maxHealth = 90 + health = 90 + projectilesound = 'sound/weapons/thudswoosh.ogg' + projectiletype = /obj/item/projectile/webball + base_attack_cooldown = 10 + melee_damage_lower = 8 + melee_damage_upper = 15 + poison_per_bite = 2 + poison_type = "psilocybin" + player_msg = "You can fire a ranged attack by clicking on an enemy or tile at a distance." + ai_holder_type = /datum/ai_holder/simple_mob/ranged + +// Check if we should bola, or just shoot the pain ball +/mob/living/simple_mob/animal/giant_spider/webslinger/should_special_attack(atom/A) + if(ismob(A)) + if(ishuman(A)) + var/mob/living/carbon/human/H = A + if(!H.legcuffed) + return TRUE + return FALSE + +// Now we've got a running human in sight, time to throw the bola +/mob/living/simple_mob/animal/giant_spider/webslinger/do_special_attack(atom/A) + set waitfor = FALSE + set_AI_busy(TRUE) + var/obj/item/projectile/bola/B = new /obj/item/projectile/bola(src.loc) + playsound(src, 'sound/weapons/thudswoosh.ogg', 100, 1) + if(!B) + return + B.old_style_target(A, src) + B.fire() + set_AI_busy(FALSE) \ No newline at end of file diff --git a/code/modules/mob/living/simple_mob/subtypes/animal/passive/crab.dm b/code/modules/mob/living/simple_mob/subtypes/animal/passive/crab.dm new file mode 100644 index 0000000000..3b40147794 --- /dev/null +++ b/code/modules/mob/living/simple_mob/subtypes/animal/passive/crab.dm @@ -0,0 +1,25 @@ +//Look Sir, free crabs! +/mob/living/simple_mob/animal/passive/crab + name = "crab" + desc = "A hard-shelled crustacean. Seems quite content to lounge around all the time." + tt_desc = "E Cancer bellianus" + faction = "crabs" + + icon_state = "crab" + icon_living = "crab" + icon_dead = "crab_dead" + + mob_size = MOB_SMALL + + response_help = "pets" + response_disarm = "gently pushes aside" + response_harm = "stomps" + friendly = "pinches" + + say_list_type = /datum/say_list/crab + +//COFFEE! SQUEEEEEEEEE! +/mob/living/simple_mob/animal/passive/crab/Coffee + name = "Coffee" + real_name = "Coffee" + desc = "It's Coffee, the other pet!" diff --git a/code/modules/mob/living/simple_mob/subtypes/animal/passive/fish.dm b/code/modules/mob/living/simple_mob/subtypes/animal/passive/fish.dm new file mode 100644 index 0000000000..bdf8853b4b --- /dev/null +++ b/code/modules/mob/living/simple_mob/subtypes/animal/passive/fish.dm @@ -0,0 +1,77 @@ +// Different types of fish! They are all subtypes of this tho +/mob/living/simple_mob/animal/passive/fish + name = "fish" + desc = "Its a fishy. No touchy fishy." + icon = 'icons/mob/fish.dmi' + + mob_size = MOB_SMALL + // So fish are actually underwater. + plane = TURF_PLANE + layer = UNDERWATER_LAYER + + // By default they can be in any water turf. Subtypes might restrict to deep/shallow etc + var/global/list/suitable_turf_types = list( + /turf/simulated/floor/beach/water, + /turf/simulated/floor/beach/coastline, + /turf/simulated/floor/holofloor/beach/water, + /turf/simulated/floor/holofloor/beach/coastline, + /turf/simulated/floor/water + ) + +// Makes the AI unable to willingly go on land. +/mob/living/simple_mob/animal/passive/fish/IMove(newloc) + if(is_type_in_list(newloc, suitable_turf_types)) + return ..() // Procede as normal. + return MOVEMENT_FAILED // Don't leave the water! + +// Take damage if we are not in water +/mob/living/simple_mob/animal/passive/fish/handle_breathing() + var/turf/T = get_turf(src) + if(T && !is_type_in_list(T, suitable_turf_types)) + if(prob(50)) + say(pick("Blub", "Glub", "Burble")) + adjustBruteLoss(unsuitable_atoms_damage) + +// Subtypes. +/mob/living/simple_mob/animal/passive/fish/bass + name = "bass" + tt_desc = "E Micropterus notius" + icon_state = "bass-swim" + icon_living = "bass-swim" + icon_dead = "bass-dead" + +/mob/living/simple_mob/animal/passive/fish/trout + name = "trout" + tt_desc = "E Salmo trutta" + icon_state = "trout-swim" + icon_living = "trout-swim" + icon_dead = "trout-dead" + +/mob/living/simple_mob/animal/passive/fish/salmon + name = "salmon" + tt_desc = "E Oncorhynchus nerka" + icon_state = "salmon-swim" + icon_living = "salmon-swim" + icon_dead = "salmon-dead" + +/mob/living/simple_mob/animal/passive/fish/perch + name = "perch" + tt_desc = "E Perca flavescens" + icon_state = "perch-swim" + icon_living = "perch-swim" + icon_dead = "perch-dead" + +/mob/living/simple_mob/animal/passive/fish/pike + name = "pike" + tt_desc = "E Esox aquitanicus" + icon_state = "pike-swim" + icon_living = "pike-swim" + icon_dead = "pike-dead" + +/mob/living/simple_mob/animal/passive/fish/koi + name = "koi" + tt_desc = "E Cyprinus rubrofuscus" + icon_state = "koi-swim" + icon_living = "koi-swim" + icon_dead = "koi-dead" + diff --git a/code/modules/mob/living/simple_mob/subtypes/animal/passive/fish_vr.dm b/code/modules/mob/living/simple_mob/subtypes/animal/passive/fish_vr.dm new file mode 100644 index 0000000000..186decf67e --- /dev/null +++ b/code/modules/mob/living/simple_mob/subtypes/animal/passive/fish_vr.dm @@ -0,0 +1,60 @@ +/mob/living/simple_mob/animal/passive/fish/koi/poisonous + desc = "A genetic marvel, combining the docility and aesthetics of the koi with some of the resiliency and cunning of the noble space carp." + health = 50 + maxHealth = 50 + +/mob/living/simple_mob/animal/passive/fish/koi/poisonous/Initialize() + ..() + create_reagents(60) + reagents.add_reagent("toxin", 45) + reagents.add_reagent("impedrezene", 15) + +/mob/living/simple_mob/animal/passive/fish/koi/poisonous/Life() + ..() + if(isbelly(loc) && prob(10)) + var/obj/belly/B = loc + sting(B.owner) + +/mob/living/simple_mob/animal/passive/fish/koi/poisonous/attack_hand(mob/living/L) + ..() + if(isliving(L) && Adjacent(L)) + var/mob/living/M = L + visible_message("\The [src][is_dead()?"'s corpse":""] flails at [M]!") + SpinAnimation(7,1) + if(prob(75)) + if(sting(M)) + to_chat(M, "You feel a tiny prick.") + if(is_dead()) + return + for(var/i = 1 to 3) + var/turf/T = get_step_away(src, M) + if(T && is_type_in_list(T, suitable_turf_types)) + Move(T) + else + break + sleep(3) +/* +/mob/living/simple_mob/animal/passive/fish/koi/poisonous/react_to_attack(var/atom/A) + if(isliving(A) && Adjacent(A)) + var/mob/living/M = A + visible_message("\The [src][is_dead()?"'s corpse":""] flails at [M]!") + SpinAnimation(7,1) + if(prob(75)) + if(sting(M)) + to_chat(M, "You feel a tiny prick.") + if(is_dead()) + return + for(var/i = 1 to 3) + var/turf/T = get_step_away(src, M) + if(T && is_type_in_list(T, suitable_turf_types)) + Move(T) + else + break + sleep(3) +*/ +/mob/living/simple_mob/animal/passive/fish/koi/poisonous/proc/sting(var/mob/living/M) + if(!M.reagents) + return 0 + M.reagents.add_reagent("toxin", 2) + M.reagents.add_reagent("impedrezene", 1) + return 1 \ No newline at end of file diff --git a/code/modules/mob/living/simple_mob/subtypes/animal/passive/lizard.dm b/code/modules/mob/living/simple_mob/subtypes/animal/passive/lizard.dm new file mode 100644 index 0000000000..adb2ea83ca --- /dev/null +++ b/code/modules/mob/living/simple_mob/subtypes/animal/passive/lizard.dm @@ -0,0 +1,24 @@ +/mob/living/simple_mob/animal/passive/lizard + name = "lizard" + desc = "A cute, tiny lizard." + tt_desc = "E Anolis cuvieri" + + icon_state = "lizard" + icon_living = "lizard" + icon_dead = "lizard-dead" + + health = 5 + maxHealth = 5 + mob_size = MOB_MINISCULE + + response_help = "pets" + response_disarm = "shoos" + response_harm = "stomps on" + + attacktext = list("bitten") + melee_damage_lower = 1 + melee_damage_upper = 2 + + speak_emote = list("hisses") + + say_list_type = /datum/say_list/lizard diff --git a/code/modules/mob/living/simple_mob/subtypes/animal/passive/misc.dm b/code/modules/mob/living/simple_mob/subtypes/animal/passive/misc.dm new file mode 100644 index 0000000000..6fc73fc5f9 --- /dev/null +++ b/code/modules/mob/living/simple_mob/subtypes/animal/passive/misc.dm @@ -0,0 +1,29 @@ +/mob/living/simple_mob/animal/passive/yithian + name = "yithian" + desc = "A friendly creature vaguely resembling an oversized snail without a shell." + tt_desc = "J Escargot escargot" // a product of Jade, which is a planet that totally exists + + icon_state = "yithian" + icon_living = "yithian" + icon_dead = "yithian_dead" + icon = 'icons/jungle.dmi' + + // Same stats as lizards. + health = 5 + maxHealth = 5 + mob_size = MOB_MINISCULE + +/mob/living/simple_mob/animal/passive/tindalos + name = "tindalos" + desc = "It looks like a large, flightless grasshopper." + tt_desc = "J Locusta bruchus" + + icon_state = "tindalos" + icon_living = "tindalos" + icon_dead = "tindalos_dead" + icon = 'icons/jungle.dmi' + + // Same stats as lizards. + health = 5 + maxHealth = 5 + mob_size = MOB_MINISCULE \ No newline at end of file diff --git a/code/modules/mob/living/simple_mob/subtypes/animal/passive/mouse.dm b/code/modules/mob/living/simple_mob/subtypes/animal/passive/mouse.dm new file mode 100644 index 0000000000..70afdaf910 --- /dev/null +++ b/code/modules/mob/living/simple_mob/subtypes/animal/passive/mouse.dm @@ -0,0 +1,115 @@ +/mob/living/simple_mob/animal/passive/mouse + name = "mouse" + real_name = "mouse" + desc = "It's a small rodent." + tt_desc = "E Mus musculus" + icon_state = "mouse_gray" + item_state = "mouse_gray" + icon_living = "mouse_gray" + icon_dead = "mouse_gray_dead" + + maxHealth = 5 + health = 5 + + mob_size = MOB_MINISCULE + pass_flags = PASSTABLE +// can_pull_size = ITEMSIZE_TINY +// can_pull_mobs = MOB_PULL_NONE + layer = MOB_LAYER + density = 0 + + response_help = "pets" + response_disarm = "gently pushes aside" + response_harm = "stamps on" + + min_oxy = 16 //Require atleast 16kPA oxygen + minbodytemp = 223 //Below -50 Degrees Celcius + maxbodytemp = 323 //Above 50 Degrees Celcius + + has_langs = list("Mouse") + + holder_type = /obj/item/weapon/holder/mouse + meat_type = /obj/item/weapon/reagent_containers/food/snacks/meat + + say_list_type = /datum/say_list/mouse + + var/body_color //brown, gray and white, leave blank for random + +/mob/living/simple_mob/animal/passive/mouse/New() + ..() + + verbs += /mob/living/proc/ventcrawl + verbs += /mob/living/proc/hide + + if(name == initial(name)) + name = "[name] ([rand(1, 1000)])" + real_name = name + + if(!body_color) + body_color = pick( list("brown","gray","white") ) + icon_state = "mouse_[body_color]" + item_state = "mouse_[body_color]" + icon_living = "mouse_[body_color]" + icon_dead = "mouse_[body_color]_dead" + icon_rest = "mouse_[body_color]_sleep" + desc = "A small [body_color] rodent, often seen hiding in maintenance areas and making a nuisance of itself." + +/mob/living/simple_mob/animal/passive/mouse/Crossed(AM as mob|obj) + if( ishuman(AM) ) + if(!stat) + var/mob/M = AM + M.visible_message("\icon[src] Squeek!") + playsound(src, 'sound/effects/mouse_squeak.ogg', 35, 1) + ..() + +/mob/living/simple_mob/animal/passive/mouse/death() + layer = MOB_LAYER + playsound(src, 'sound/effects/mouse_squeak_loud.ogg', 35, 1) + if(client) + client.time_died_as_mouse = world.time + ..() + +/mob/living/simple_mob/animal/passive/mouse/cannot_use_vents() + return + +/mob/living/simple_mob/animal/passive/mouse/proc/splat() + src.health = 0 + src.stat = DEAD + src.icon_dead = "mouse_[body_color]_splat" + src.icon_state = "mouse_[body_color]_splat" + layer = MOB_LAYER + if(client) + client.time_died_as_mouse = world.time + +/* + * Mouse types + */ + +/mob/living/simple_mob/animal/passive/mouse/white + body_color = "white" + icon_state = "mouse_white" + +/mob/living/simple_mob/animal/passive/mouse/gray + body_color = "gray" + icon_state = "mouse_gray" + +/mob/living/simple_mob/animal/passive/mouse/brown + body_color = "brown" + icon_state = "mouse_brown" + +//TOM IS ALIVE! SQUEEEEEEEE~K :) +/mob/living/simple_mob/animal/passive/mouse/brown/Tom + name = "Tom" + desc = "Jerry the cat is not amused." + +/mob/living/simple_mob/animal/passive/mouse/brown/Tom/New() + ..() + // Change my name back, don't want to be named Tom (666) + name = initial(name) + + +// Mouse noises +/datum/say_list/mouse + speak = list("Squeek!","SQUEEK!","Squeek?") + emote_hear = list("squeeks","squeaks","squiks") + emote_see = list("runs in a circle", "shakes", "scritches at something") \ No newline at end of file diff --git a/code/modules/mob/living/simple_mob/subtypes/animal/passive/passive.dm b/code/modules/mob/living/simple_mob/subtypes/animal/passive/passive.dm new file mode 100644 index 0000000000..c488d1ed28 --- /dev/null +++ b/code/modules/mob/living/simple_mob/subtypes/animal/passive/passive.dm @@ -0,0 +1,5 @@ +// Passive mobs can't attack things, and will run away instead. +// They can also be displaced by all mobs. +/mob/living/simple_mob/animal/passive + ai_holder_type = /datum/ai_holder/simple_mob/passive + mob_bump_flag = 0 \ No newline at end of file diff --git a/code/modules/mob/living/simple_mob/subtypes/animal/passive/penguin.dm b/code/modules/mob/living/simple_mob/subtypes/animal/passive/penguin.dm new file mode 100644 index 0000000000..7fcd020f8e --- /dev/null +++ b/code/modules/mob/living/simple_mob/subtypes/animal/passive/penguin.dm @@ -0,0 +1,27 @@ +/mob/living/simple_mob/animal/passive/penguin + name = "penguin" + desc = "An ungainly, waddling, cute, and VERY well-dressed bird." + tt_desc = "Aptenodytes forsteri" + icon_state = "penguin" + icon_living = "penguin" + icon_dead = "penguin_dead" + + maxHealth = 20 + health = 20 + minbodytemp = 175 // Same as Sif mobs. + + response_help = "pets" + response_disarm = "pushes aside" + response_harm = "hits" + + harm_intent_damage = 5 + melee_damage_lower = 10 + melee_damage_upper = 15 + attacktext = list("pecked") + + has_langs = list("Bird") + +/mob/living/simple_mob/animal/passive/penguin/tux + name = "Tux" + desc = "A penguin that has been known to associate with gnus." + speak_emote = list("interjects") diff --git a/code/modules/mob/living/simple_mob/subtypes/animal/pets/bird.dm b/code/modules/mob/living/simple_mob/subtypes/animal/pets/bird.dm new file mode 100644 index 0000000000..5e77a57a3c --- /dev/null +++ b/code/modules/mob/living/simple_mob/subtypes/animal/pets/bird.dm @@ -0,0 +1,93 @@ +// Base bird type. + +/mob/living/simple_mob/animal/passive/bird + name = "bird" + desc = "A domesticated bird. Tweet tweet!" + player_msg = "You are able to fly." + + icon = 'icons/mob/birds.dmi' + icon_state = "parrot" + item_state = null + icon_rest = "parrot-held" + icon_dead = "parrot-dead" + + pass_flags = PASSTABLE + + health = 30 + maxHealth = 30 + melee_damage_lower = 3 + melee_damage_upper = 3 + + movement_cooldown = 0 + hovering = TRUE // Birds can fly. + softfall = TRUE + parachuting = TRUE + + attacktext = list("claws", "pecks") + speak_emote = list("chirps", "caws") + has_langs = list("Bird") + response_help = "pets" + response_disarm = "gently moves aside" + response_harm = "swats" + + say_list_type = /datum/say_list/bird + holder_type = /obj/item/weapon/holder/bird + +/datum/say_list/bird + speak = list("Chirp!","Caw!","Screech!","Squawk!") + emote_hear = list("chirps","caws") + emote_see = list("shakes their head", "ruffles their feathers") + +/obj/item/weapon/holder/bird + name = "bird" + desc = "It's a bird!" + icon_state = null + item_icons = null + w_class = ITEMSIZE_SMALL + +/obj/item/weapon/holder/bird/sync(var/mob/living/simple_mob/SM) + ..() + icon_state = SM.icon_rest // Looks better if the bird isn't flapping constantly in the UI. + +// Subtypes for birbs. + +/mob/living/simple_mob/animal/passive/bird/black_bird + name = "common blackbird" + desc = "A species of bird, both the males and females are known to be territorial on their breeding grounds." + icon_state = "commonblackbird" + icon_dead = "commonblackbird-dead" + tt_desc = "E Turdus merula" + icon_scale = 0.5 + +/mob/living/simple_mob/animal/passive/bird/azure_tit + name = "azure tit" + desc = "A species of bird, colored blue and white." + icon_state = "azuretit" + icon_dead = "azuretit-dead" + tt_desc = "E Cyanistes cyanus" + icon_scale = 0.5 + +/mob/living/simple_mob/animal/passive/bird/european_robin + name = "european robin" + desc = "A species of bird, they have been studied for their sense of magnetoreception." + icon_state = "europeanrobin" + icon_dead = "europeanrobin-dead" + tt_desc = "E Erithacus rubecula" + icon_scale = 0.5 + +/mob/living/simple_mob/animal/passive/bird/goldcrest + name = "goldcrest" + desc = "A species of bird, they were once called 'king of the birds' in ancient human folklore, for their golden crest. \ + Today, their scientific name still elude towards this, with regulus, meaning petty king." + icon_state = "goldcrest" + icon_dead = "goldcrest-dead" + tt_desc = "E Regulus regulus" + icon_scale = 0.5 + +/mob/living/simple_mob/animal/passive/bird/ringneck_dove + name = "ringneck dove" + desc = "A species of bird. They are also known as the barbary dove, and have a distinct ring-like shape around the back of their neck." + icon_state = "ringneckdove" + icon_dead = "ringneckdove-dead" + tt_desc = "E Streptopelia risoria" // This is actually disputed IRL but since we can't tell the future it'll stay the same for 500+ years. + icon_scale = 0.5 diff --git a/code/modules/mob/living/simple_mob/subtypes/animal/pets/cat.dm b/code/modules/mob/living/simple_mob/subtypes/animal/pets/cat.dm new file mode 100644 index 0000000000..3f6bba4846 --- /dev/null +++ b/code/modules/mob/living/simple_mob/subtypes/animal/pets/cat.dm @@ -0,0 +1,147 @@ +/mob/living/simple_mob/animal/passive/cat + name = "cat" + desc = "A domesticated, feline pet. Has a tendency to adopt crewmembers." + tt_desc = "E Felis silvestris catus" + icon_state = "cat2" + item_state = "cat2" + icon_living = "cat2" + icon_dead = "cat2_dead" + icon_rest = "cat2_rest" + + movement_cooldown = 0.5 SECONDS + + see_in_dark = 6 // Not sure if this actually works. + response_help = "pets" + response_disarm = "gently pushes aside" + response_harm = "kicks" + + holder_type = /obj/item/weapon/holder/cat + mob_size = MOB_SMALL + + has_langs = list("Cat") + + var/mob/living/friend = null // Our best pal, who we'll follow. Meow. + var/friend_name = null //VOREStation Edit - Lock befriending to this character + +/mob/living/simple_mob/animal/passive/cat/handle_special() + if(!stat && prob(2)) // spooky + var/mob/observer/dead/spook = locate() in range(src, 5) + if(spook) + var/turf/T = get_turf(spook) + var/list/visible = list() + for(var/obj/O in T.contents) + if(!O.invisibility && O.name) + visible += O + if(visible.len) + var/atom/A = pick(visible) + visible_emote("suddenly stops and stares at something unseen[istype(A) ? " near [A]":""].") + +// Instakills mice. +/mob/living/simple_mob/animal/passive/cat/apply_melee_effects(var/atom/A) + if(ismouse(A)) + var/mob/living/simple_mob/animal/passive/mouse/mouse = A + if(mouse.getMaxHealth() < 20) // In case a badmin makes giant mice or something. + mouse.splat() + visible_emote(pick("bites \the [mouse]!", "toys with \the [mouse].", "chomps on \the [mouse]!")) + else + ..() + +/mob/living/simple_mob/animal/passive/cat/IIsAlly(mob/living/L) + if(L == friend) // Always be pals with our special friend. + return TRUE + + . = ..() + + if(.) // We're pals, but they might be a dirty mouse... + if(ismouse(L)) + return FALSE // Cats and mice can never get along. + +/mob/living/simple_mob/animal/passive/cat/verb/become_friends() + set name = "Become Friends" + set category = "IC" + set src in view(1) + + var/mob/living/L = usr + if(!istype(L)) + return // Fuck off ghosts. + + if(friend) + if(friend == usr) + to_chat(L, span("notice", "\The [src] is already your friend! Meow!")) + return + else + to_chat(L, span("warning", "\The [src] ignores you.")) + return + + //VOREStation Edit Start - Adds friend_name var checks + if(!friend_name || L.real_name == friend_name) + friend = L + face_atom(L) + to_chat(L, span("notice", "\The [src] is now your friend! Meow.")) + visible_emote(pick("nuzzles [friend].", "brushes against [friend].", "rubs against [friend].", "purrs.")) + + if(has_AI()) + var/datum/ai_holder/AI = ai_holder + AI.set_follow(friend) + else + to_chat(L, span("notice", "[src] ignores you.")) + //VOREStation Edit End + +//RUNTIME IS ALIVE! SQUEEEEEEEE~ +/mob/living/simple_mob/animal/passive/cat/runtime + name = "Runtime" + desc = "Her fur has the look and feel of velvet, and her tail quivers occasionally." + tt_desc = "E Felis silvestris medicalis" // a hypoallergenic breed produced by NT for... medical purposes? Sure. + gender = FEMALE + icon_state = "cat" + item_state = "cat" + icon_living = "cat" + icon_dead = "cat_dead" + icon_rest = "cat_rest" + makes_dirt = FALSE //VOREStation edit: no more dirt + +/mob/living/simple_mob/animal/passive/cat/kitten + name = "kitten" + desc = "D'aaawwww" + icon_state = "kitten" + item_state = "kitten" + icon_living = "kitten" + icon_dead = "kitten_dead" + gender = NEUTER + holder_type = /obj/item/weapon/holder/cat/kitten //VOREStation Edit + +/mob/living/simple_mob/animal/passive/cat/kitten/Initialize() + if(gender == NEUTER) + gender = pick(MALE, FEMALE) + return ..() + +// Leaving this here for now. +/obj/item/weapon/holder/cat/fluff/bones + name = "Bones" + desc = "It's Bones! Meow." + gender = MALE + icon_state = "cat3" + +/mob/living/simple_mob/animal/passive/cat/bones + name = "Bones" + desc = "That's Bones the cat. He's a laid back, black cat. Meow." + gender = MALE + icon_state = "cat3" + item_state = "cat3" + icon_living = "cat3" + icon_dead = "cat3_dead" + icon_rest = "cat3_rest" + holder_type = /obj/item/weapon/holder/cat/fluff/bones + + +/datum/say_list/cat + speak = list("Meow!","Esp!","Purr!","HSSSSS") + emote_hear = list("meows","mews") + emote_see = list("shakes their head", "shivers") + say_maybe_target = list("Meow?","Mew?","Mao?") + say_got_target = list("MEOW!","HSSSS!","REEER!") + +// VOREStation Edit - Adds generic tactical kittens +/obj/item/weapon/holder/cat/kitten + icon_state = "kitten" + w_class = ITEMSIZE_SMALL diff --git a/code/modules/mob/living/simple_mob/subtypes/animal/pets/cat_vr.dm b/code/modules/mob/living/simple_mob/subtypes/animal/pets/cat_vr.dm new file mode 100644 index 0000000000..c7fc27e56e --- /dev/null +++ b/code/modules/mob/living/simple_mob/subtypes/animal/pets/cat_vr.dm @@ -0,0 +1,86 @@ +/mob/living/simple_mob/animal/passive/cat/runtime/init_vore() + ..() + var/obj/belly/B = vore_selected + B.name = "Stomach" + B.desc = "The slimy wet insides of Runtime! Not quite as clean as the cat on the outside." + + B.emote_lists[DM_HOLD] = list( + "Runtime's stomach kneads gently on you and you're fairly sure you can hear her start purring.", + "Most of what you can hear are slick noises, Runtime breathing, and distant purring.", + "Runtime seems perfectly happy to have you in there. She lays down for a moment to groom and squishes you against the walls.", + "The CMO's pet seems to have found a patient of her own, and is treating them with warm, wet kneading walls.", + "Runtime mostly just lazes about, and you're left to simmer in the hot, slick guts unharmed.", + "Runtime's master might let you out of this fleshy prison, eventually. Maybe. Hopefully?") + + B.emote_lists[DM_DIGEST] = list( + "Runtime's stomach is treating you rather like a mouse, kneading acids into you with vigor.", + "A thick dollop of bellyslime drips from above while the CMO's pet's gut works on churning you up.", + "Runtime seems to have decided you're food, based on the acrid air in her guts and the pooling fluids.", + "Runtime's stomach tries to claim you, kneading and pressing inwards again and again against your form.", + "Runtime flops onto their side for a minute, spilling acids over your form as you remain trapped in them.", + "The CMO's pet doesn't seem to think you're any different from any other meal. At least, their stomach doesn't.") + + B.digest_messages_prey = list( + "Runtime's stomach slowly melts your body away. Her stomach refuses to give up it's onslaught, continuing until you're nothing more than nutrients for her body to absorb.", + "After an agonizing amount of time, Runtime's stomach finally manages to claim you, melting you down and adding you to her stomach.", + "Runtime's stomach continues to slowly work away at your body before tightly squeezing around you once more, causing the remainder of your body to lose form and melt away into the digesting slop around you.", + "Runtime's slimy gut continues to constantly squeeze and knead away at your body, the bulge you create inside of her stomach growing smaller as time progresses before soon dissapearing completely as you melt away.", + "Runtime's belly lets off a soft groan as your body finally gives out, the cat's eyes growing heavy as it settles down to enjoy it's good meal.", + "Runtime purrs happily as you slowly slip away inside of her gut, your body's nutrients are then used to put a layer of padding on the now pudgy cat.", + "The acids inside of Runtime's stomach, aided by the constant motions of the smooth walls surrounding you finally manage to melt you away into nothing more mush. She curls up on the floor, slowly kneading the air as her stomach moves its contents — including you — deeper into her digestive system.", + "Your form begins to slowly soften and break apart, rounding out Runtime's swollen belly. The carnivorous cat rumbles and purrs happily at the feeling of such a filling meal.") + +// Ascian's Tactical Kitten +/obj/item/weapon/holder/cat/fluff/tabiranth + name = "Spirit" + desc = "A small, inquisitive feline, who constantly seems to investigate his surroundings." + gender = MALE + icon_state = "kitten" + w_class = ITEMSIZE_SMALL + +/mob/living/simple_mob/animal/passive/cat/tabiranth + name = "Spirit" + desc = "A small, inquisitive feline, who constantly seems to investigate his surroundings." + icon = 'icons/mob/custom_items_mob.dmi' + icon_state = "kitten" + item_state = "kitten" + icon_living = "kitten" + icon_dead = "kitten" //Teleports out + gender = MALE + holder_type = /obj/item/weapon/holder/cat/fluff/tabiranth + friend_name = "Ascian" + digestable = 0 + meat_amount = 0 + maxHealth = 50 + health = 50 + +/mob/living/simple_mob/animal/passive/cat/tabiranth/handle_special() + . = ..() + if (has_AI() && friend) + var/friend_dist = get_dist(src,friend) + if (friend_dist <= 1) + if (friend.stat >= DEAD || friend.health <= config.health_threshold_softcrit) + if (prob((friend.stat < DEAD)? 50 : 15)) + var/verb = pick("meows", "mews", "mrowls") + audible_emote(pick("[verb] in distress.", "[verb] anxiously.")) + else + if (prob(5)) + visible_emote(pick("nuzzles [friend].", + "brushes against [friend].", + "rubs against [friend].", + "purrs.")) + else if (friend.health <= 50) + if (prob(10)) + var/verb = pick("meows", "mews", "mrowls") + audible_emote("[verb] anxiously.") + +//Emergency teleport - Until a spriter makes something better +/mob/living/simple_mob/animal/passive/cat/tabiranth/death(gibbed, deathmessage = "teleports away!") + overlays = list() + icon_state = "" + flick("kphaseout",src) + spawn(1 SECOND) + qdel(src) //Back from whence you came! + + . = ..(FALSE, deathmessage) + diff --git a/code/modules/mob/living/simple_mob/subtypes/animal/pets/dog.dm b/code/modules/mob/living/simple_mob/subtypes/animal/pets/dog.dm new file mode 100644 index 0000000000..cc29ee0c31 --- /dev/null +++ b/code/modules/mob/living/simple_mob/subtypes/animal/pets/dog.dm @@ -0,0 +1,235 @@ +/mob/living/simple_mob/animal/passive/dog + name = "dog" + real_name = "dog" + desc = "It's a dog." + tt_desc = "E Canis lupus familiaris" + icon_state = "corgi" + icon_living = "corgi" + icon_dead = "corgi_dead" + + health = 20 + maxHealth = 20 + + response_help = "pets" + response_disarm = "bops" + response_harm = "kicks" + + mob_size = MOB_SMALL + + has_langs = list("Dog") + + say_list_type = /datum/say_list/dog + + meat_amount = 3 + meat_type = /obj/item/weapon/reagent_containers/food/snacks/meat/corgi + + var/obj/item/inventory_head + var/obj/item/inventory_back + + +/mob/living/simple_mob/animal/passive/dog/attackby(var/obj/item/O as obj, var/mob/user as mob) + if(istype(O, /obj/item/weapon/newspaper)) + if(!stat) + for(var/mob/M in viewers(user, null)) + if ((M.client && !( M.blinded ))) + M.show_message("[user] baps [name] on the nose with the rolled up [O]") + spawn(0) + for(var/i in list(1,2,4,8,4,2,1,2)) + set_dir(i) + sleep(1) + else + ..() + +/mob/living/simple_mob/animal/passive/dog/regenerate_icons() + overlays = list() + + if(inventory_head) + var/head_icon_state = inventory_head.icon_state + if(health <= 0) + head_icon_state += "2" + + var/icon/head_icon = image('icons/mob/corgi_head.dmi',head_icon_state) + if(head_icon) + overlays += head_icon + + if(inventory_back) + var/back_icon_state = inventory_back.icon_state + if(health <= 0) + back_icon_state += "2" + + var/icon/back_icon = image('icons/mob/corgi_back.dmi',back_icon_state) + if(back_icon) + overlays += back_icon + + return + + + + +/obj/item/weapon/reagent_containers/food/snacks/meat/corgi + name = "corgi meat" + desc = "Tastes like... well, you know..." + + + + +/datum/say_list/dog + speak = list("YAP", "Woof!", "Bark!", "AUUUUUU") + emote_hear = list("barks", "woofs", "yaps","pants") + emote_see = list("shakes its head", "shivers") + +// This exists so not every type of dog has to be a subtype of corgi, and in case we get more dog sprites +/mob/living/simple_mob/animal/passive/dog/corgi + name = "corgi" + real_name = "corgi" + desc = "It's a corgi." + tt_desc = "E Canis lupus familiaris" + icon_state = "corgi" + icon_living = "corgi" + icon_dead = "corgi_dead" + +/mob/living/simple_mob/animal/passive/dog/corgi/puppy + name = "corgi puppy" + real_name = "corgi" + desc = "It's a corgi puppy." + icon_state = "puppy" + icon_living = "puppy" + icon_dead = "puppy_dead" + +//pupplies cannot wear anything. +/mob/living/simple_mob/animal/passive/dog/corgi/puppy/Topic(href, href_list) + if(href_list["remove_inv"] || href_list["add_inv"]) + usr << "You can't fit this on [src]" + return + ..() + +/mob/living/simple_mob/animal/passive/dog/corgi/puppy/Bockscar + name = "Bockscar" + real_name = "Bockscar" + +//IAN! SQUEEEEEEEEE~ +/mob/living/simple_mob/animal/passive/dog/corgi/Ian + name = "Ian" + real_name = "Ian" //Intended to hold the name without altering it. + gender = MALE + desc = "It's a corgi." + var/turns_since_scan = 0 + var/obj/movement_target + makes_dirt = FALSE //VOREStation edit: no more dirt + +/mob/living/simple_mob/animal/passive/dog/corgi/Ian/Life() + ..() + + //Not replacing with SA FollowTarget mechanics because Ian behaves... very... specifically. + + //Feeding, chasing food, FOOOOODDDD + if(!stat && !resting && !buckled) + turns_since_scan++ + if(turns_since_scan > 5) + turns_since_scan = 0 + if((movement_target) && !(isturf(movement_target.loc) || ishuman(movement_target.loc) )) + movement_target = null + if( !movement_target || !(movement_target.loc in oview(src, 3)) ) + movement_target = null + for(var/obj/item/weapon/reagent_containers/food/snacks/S in oview(src,3)) + if(isturf(S.loc) || ishuman(S.loc)) + movement_target = S + break + if(movement_target) + step_to(src,movement_target,1) + sleep(3) + step_to(src,movement_target,1) + sleep(3) + step_to(src,movement_target,1) + + if(movement_target) //Not redundant due to sleeps, Item can be gone in 6 decisecomds + if (movement_target.loc.x < src.x) + set_dir(WEST) + else if (movement_target.loc.x > src.x) + set_dir(EAST) + else if (movement_target.loc.y < src.y) + set_dir(SOUTH) + else if (movement_target.loc.y > src.y) + set_dir(NORTH) + else + set_dir(SOUTH) + + if(isturf(movement_target.loc) ) + UnarmedAttack(movement_target) + else if(ishuman(movement_target.loc) && prob(20)) + visible_emote("stares at the [movement_target] that [movement_target.loc] has with sad puppy eyes.") + + if(prob(1)) + visible_emote(pick("dances around","chases their tail")) + spawn(0) + for(var/i in list(1,2,4,8,4,2,1,2,4,8,4,2,1,2,4,8,4,2)) + set_dir(i) + sleep(1) + +//LISA! SQUEEEEEEEEE~ +/mob/living/simple_mob/animal/passive/dog/corgi/Lisa + name = "Lisa" + real_name = "Lisa" + gender = FEMALE + desc = "It's a corgi with a cute pink bow." + icon_state = "lisa" + icon_living = "lisa" + icon_dead = "lisa_dead" + response_help = "pets" + response_disarm = "bops" + response_harm = "kicks" + var/turns_since_scan = 0 + var/puppies = 0 + +//Lisa already has a cute bow! +/mob/living/simple_mob/animal/passive/dog/corgi/Lisa/Topic(href, href_list) + if(href_list["remove_inv"] || href_list["add_inv"]) + to_chat(usr, "[src] already has a cute bow!") + return + ..() + +/mob/living/simple_mob/animal/passive/dog/corgi/Lisa/Life() + ..() + + if(!stat && !resting && !buckled) + turns_since_scan++ + if(turns_since_scan > 15) + turns_since_scan = 0 + var/alone = TRUE + var/ian = FALSE + for(var/mob/M in oviewers(7, src)) + if(istype(M, /mob/living/simple_mob/animal/passive/dog/corgi/Ian)) + if(M.client) + alone = FALSE + break + else + ian = M + else + alone = FALSE + break + if(alone && ian && puppies < 4) + if(near_camera(src) || near_camera(ian)) + return + new /mob/living/simple_mob/animal/passive/dog/corgi/puppy(loc) + + if(prob(1)) + visible_emote(pick("dances around","chases her tail")) + spawn(0) + for(var/i in list(1,2,4,8,4,2,1,2,4,8,4,2,1,2,4,8,4,2)) + set_dir(i) + sleep(1) + +// Tamaskans +/mob/living/simple_mob/animal/passive/dog/tamaskan + name = "tamaskan" + real_name = "tamaskan" + desc = "It's a tamaskan." + icon_state = "tamaskan" + icon_living = "tamaskan" + icon_dead = "tamaskan_dead" + +/mob/living/simple_mob/animal/passive/dog/tamaskan/Spice + name = "Spice" + real_name = "Spice" //Intended to hold the name without altering it. + gender = FEMALE + desc = "It's a tamaskan, the name Spice can be found on its collar." \ No newline at end of file diff --git a/code/modules/mob/living/simple_mob/subtypes/animal/pets/fox_vr.dm b/code/modules/mob/living/simple_mob/subtypes/animal/pets/fox_vr.dm new file mode 100644 index 0000000000..b95d6a15b5 --- /dev/null +++ b/code/modules/mob/living/simple_mob/subtypes/animal/pets/fox_vr.dm @@ -0,0 +1,244 @@ +/mob/living/simple_mob/animal/passive/fox + name = "fox" + desc = "It's a fox. I wonder what it says?" + tt_desc = "Vulpes vulpes" + + icon_state = "fox2" + icon_living = "fox2" + icon_dead = "fox2_dead" + icon_rest = "fox2_rest" + icon = 'icons/mob/fox_vr.dmi' + + movement_cooldown = 0.5 + see_in_dark = 6 + mob_size = MOB_SMALL //Foxes are not smaller than cats so bumping them up to small + + faction = "fox" + + response_help = "scritches" + response_disarm = "gently pushes aside" + response_harm = "kicks" + + min_oxy = 16 //Require atleast 16kPA oxygen + minbodytemp = 223 //Below -50 Degrees Celcius + maxbodytemp = 323 //Above 50 Degrees Celcius + + meat_amount = 1 + meat_type = /obj/item/weapon/reagent_containers/food/snacks/meat/fox + + say_list_type = /datum/say_list/fox + ai_holder_type = /datum/ai_holder/simple_mob/fox + + var/turns_since_scan = 0 + var/mob/flee_target + +/datum/say_list/fox + speak = list("Ack-Ack","Ack-Ack-Ack-Ackawoooo","Awoo","Tchoff") + emote_hear = list("howls","barks","geckers",) + emote_see = list("shakes its head", "shivers", "geckers") + say_maybe_target = list("Yip?","Yap?") + say_got_target = list("YAP!","YIP!") + +/datum/ai_holder/simple_mob/fox + hostile = FALSE + cooperative = TRUE + returns_home = FALSE + retaliate = TRUE + can_flee = TRUE + speak_chance = 1 // If the mob's saylist is empty, nothing will happen. + wander = TRUE + base_wander_delay = 4 + +/mob/living/simple_mob/animal/passive/fox/init_vore() + ..() + var/obj/belly/B = vore_selected + B.name = "Stomach" + B.desc = "Slick foxguts. Cute on the outside, slimy on the inside!" + + B.emote_lists[DM_HOLD] = list( + "The foxguts knead and churn around you harmlessly.", + "With a loud glorp, some air shifts inside the belly.", + "A thick drop of warm bellyslime drips onto you from above.", + "The fox turns suddenly, causing you to shift a little.", + "During a moment of relative silence, you can hear the fox breathing.", + "The slimey stomach walls squeeze you lightly, then relax.") + + B.emote_lists[DM_DIGEST] = list( + "The guts knead at you, trying to work you into thick soup.", + "You're ground on by the slimey walls, treated like a mouse.", + "The acrid air is hard to breathe, and stings at your lungs.", + "You can feel the acids coating you, ground in by the slick walls.", + "The fox's stomach churns hungrily over your form, trying to take you.", + "With a loud glorp, the stomach spills more acids onto you.") + +/mob/living/simple_mob/animal/passive/fox/apply_melee_effects(var/atom/A) + if(ismouse(A)) + var/mob/living/simple_mob/animal/passive/mouse/mouse = A + if(mouse.getMaxHealth() < 20) // In case a badmin makes giant mice or something. + mouse.splat() + visible_emote(pick("bites \the [mouse]!", "toys with \the [mouse].", "chomps on \the [mouse]!")) + else + ..() + +/mob/living/simple_mob/animal/passive/fox/MouseDrop(atom/over_object) + var/mob/living/carbon/H = over_object + if(!istype(H) || !Adjacent(H)) return ..() + + if(H.a_intent == "help") + get_scooped(H) + return + else + return ..() + +/mob/living/simple_mob/animal/passive/fox/get_scooped(var/mob/living/carbon/grabber) + if (stat >= DEAD) + return //since the holder icon looks like a living cat + ..() + +/mob/living/simple_mob/animal/passive/fox/renault/IIsAlly(mob/living/L) + if(L == friend) // Always be pals with our special friend. + return TRUE + + . = ..() + + if(.) // We're pals, but they might be a dirty mouse... + if(ismouse(L)) + return FALSE // Cats and mice can never get along. + +/mob/living/simple_mob/animal/passive/fox/renault/verb/become_friends() + set name = "Become Friends" + set category = "IC" + set src in view(1) + + var/mob/living/L = usr + if(!istype(L)) + return // Fuck off ghosts. + + if(friend) + if(friend == usr) + to_chat(L, span("notice", "\The [src] is already your friend!")) + return + else + to_chat(L, span("warning", "\The [src] ignores you.")) + return + + friend = L + face_atom(L) + to_chat(L, span("notice", "\The [src] is now your friend!")) + visible_emote(pick("nips [friend].", "brushes against [friend].", "tugs on [friend].", "chrrrrs.")) + + if(has_AI()) + var/datum/ai_holder/AI = ai_holder + AI.set_follow(friend) + +/* Old fox friend AI, I'm not sure how to add the fancy "friend is dead" stuff so I'm commenting it out for someone else to figure it out, this is just baseline stuff. +//Basic friend AI +/mob/living/simple_mob/animal/passive/fox/fluff + var/mob/living/carbon/human/friend + var/befriend_job = null + +/mob/living/simple_mob/animal/passive/fox/fluff/Life() + . = ..() + if(!. || !friend) return + + var/friend_dist = get_dist(src,friend) + + if (friend_dist <= 4) + if(stance == STANCE_IDLE) + if(set_follow(friend)) + handle_stance(STANCE_FOLLOW) + + if (friend_dist <= 1) + if (friend.stat >= DEAD || friend.health <= config.health_threshold_softcrit) + if (prob((friend.stat < DEAD)? 50 : 15)) + var/verb = pick("yaps", "howls", "whines") + audible_emote(pick("[verb] in distress.", "[verb] anxiously.")) + else + if (prob(5)) + visible_emote(pick("nips [friend].", + "brushes against [friend].", + "tugs on [friend].", + "chrrrrs.")) + else if (friend.health <= 50) + if (prob(10)) + var/verb = pick("yaps", "howls", "whines") + audible_emote("[verb] anxiously.") + +/mob/living/simple_mob/animal/passive/fox/fluff/verb/friend() + set name = "Become Friends" + set category = "IC" + set src in view(1) + + if(friend && usr == friend) + set_dir(get_dir(src, friend)) + say("Yap!") + return + + if (!(ishuman(usr) && befriend_job && usr.job == befriend_job)) + usr << "[src] ignores you." + return + + friend = usr + + set_dir(get_dir(src, friend)) + say("Yap!") +*/ +/obj/item/weapon/reagent_containers/food/snacks/meat/fox + name = "Fox meat" + desc = "The fox doesn't say a goddamn thing, now." + +//Captain fox +/mob/living/simple_mob/animal/passive/fox/renault + name = "Renault" + desc = "Renault, the Colony Director's trustworthy fox. I wonder what it says?" + tt_desc = "Vulpes nobilis" + //befriend_job = "Colony Director" Sebbe edit: couldn't make this work, commenting out for now. + + var/mob/living/friend = null // Our best pal, who we'll follow. awoo. + ai_holder_type = /datum/ai_holder/simple_mob/passive + makes_dirt = FALSE // No more dirt + +/mob/living/simple_mob/animal/passive/fox/renault/init_vore() + ..() + var/obj/belly/B = vore_selected + B.name = "Stomach" + B.desc = "Slick foxguts. They seem somehow more regal than perhaps other foxes!" + + B.emote_lists[DM_HOLD] = list( + "Renault's stomach walls squeeze around you more tightly for a moment, before relaxing, as if testing you a bit.", + "There's a sudden squeezing as Renault presses a forepaw against his gut over you, squeezing you against the slick walls.", + "The 'head fox' has a stomach that seems to think you belong to it. It might be hard to argue, as it kneads at your form.", + "If being in the captain's fox is a promotion, it might not feel like one. The belly just coats you with more thick foxslime.", + "It doesn't seem like Renault wants to let you out. The stomach and owner possessively squeeze around you.", + "Renault's stomach walls squeeze closer, as he belches quietly, before swallowing more air. Does he do that on purpose?") + + B.emote_lists[DM_DIGEST] = list( + "Renault's stomach walls grind hungrily inwards, kneading acids against your form, and treating you like any other food.", + "The captain's fox impatiently kneads and works acids against you, trying to claim your body for fuel.", + "The walls knead in firmly, squeezing and tossing you around briefly in disorienting aggression.", + "Renault belches, letting the remaining air grow more acrid. It burns your lungs with each breath.", + "A thick glob of acids drip down from above, adding to the pool of caustic fluids in Renault's belly.", + "There's a loud gurgle as the stomach declares the intent to make you a part of Renault.") + +/mob/living/simple_mob/animal/passive/fox/syndicate + name = "syndi-fox" + desc = "It's a DASTARDLY fox! The horror! Call the shuttle!" + tt_desc = "Vulpes malus" + icon = 'icons/mob/fox_vr.dmi' + icon_state = "syndifox" + icon_living = "syndifox" + icon_dead = "syndifox_dead" + icon_rest = "syndifox_rest" + + // this fox wears a hardsuit + maxHealth = 100 + health = 100 + min_oxy = 0 + max_oxy = 0 + min_tox = 0 + max_tox = 0 + min_co2 = 0 + max_co2 = 0 + min_n2 = 0 + max_n2 = 0 + minbodytemp = 0 \ No newline at end of file diff --git a/code/modules/mob/living/simple_mob/subtypes/animal/pets/parrot.dm b/code/modules/mob/living/simple_mob/subtypes/animal/pets/parrot.dm new file mode 100644 index 0000000000..44c9ad1b8b --- /dev/null +++ b/code/modules/mob/living/simple_mob/subtypes/animal/pets/parrot.dm @@ -0,0 +1,252 @@ +// Parrots can talk, and may repeat things it hears. +/mob/living/simple_mob/animal/passive/bird/parrot + name = "parrot" + description_info = "You can give it a headset by clicking on it with a headset. \ + To remove it, click the bird while on grab intent." + has_langs = list("Galactic Common", "Bird") + + ai_holder_type = /datum/ai_holder/simple_mob/passive/parrot + + // A headset, so that talking parrots can yell at the crew over comms. + // If set to a type, on initialize it will be instantiated into that type. + var/obj/item/device/radio/headset/my_headset = null + +// Say list +/datum/say_list/bird/poly + speak = list( + "Poly wanna cracker!", + "Check the singulo, you chucklefucks!", + "Wire the solars, you lazy bums!", + "WHO TOOK THE DAMN HARDSUITS?", + "OH GOD ITS FREE CALL THE SHUTTLE", + "Danger! Crystal hyperstructure instability!", + "CRYSTAL DELAMINATION IMMINENT.", + "Tweet tweet, I'm a Teshari.", + "Chitters.", + "Meteors have been detected on a collision course with the station!" + ) + +// Lets the AI use headsets. +// Player-controlled parrots will need to do it manually. +/mob/living/simple_mob/animal/passive/bird/parrot/ISay(message) + if(my_headset && prob(50)) + var/list/keys = list() + for(var/channel in my_headset.channels) + var/key = get_radio_key_from_channel(channel) + if(key) + keys += key + if(keys.len) + var/key_used = pick(keys) + return say("[key_used] [message]") + return say(message) + +// Ugly saycode so parrots can use their headsets. +/mob/living/simple_mob/animal/passive/bird/parrot/handle_message_mode(message_mode, message, verb, speaking, used_radios, alt_name) + ..() + if(message_mode) + if(my_headset && istype(my_headset, /obj/item/device/radio)) + my_headset.talk_into(src, message, message_mode, verb, speaking) + used_radios += my_headset + +// Clicked on while holding an object. +/mob/living/simple_mob/animal/passive/bird/parrot/attackby(obj/item/I, mob/user) + if(istype(I, /obj/item/device/radio/headset)) + give_headset(I, user) + return + return ..() + +// Clicked on by empty hand. +/mob/living/simple_mob/animal/passive/bird/parrot/attack_hand(mob/living/L) + if(L.a_intent == I_GRAB && my_headset) + remove_headset(L) + else + ..() + + +/mob/living/simple_mob/animal/passive/bird/parrot/proc/give_headset(obj/item/device/radio/headset/new_headset, mob/living/user) + if(!istype(new_headset)) + to_chat(user, span("warning", "\The [new_headset] isn't a headset.")) + return + if(my_headset) + to_chat(user, span("warning", "\The [src] is already wearing \a [my_headset].")) + return + else + user.drop_item(new_headset) + my_headset = new_headset + new_headset.forceMove(src) + to_chat(user, span("warning", "You place \a [new_headset] on \the [src]. You monster.")) + to_chat(src, span("notice", "\The [user] gives you \a [new_headset]. You should put it to good use immediately.")) + return + +/mob/living/simple_mob/animal/passive/bird/parrot/proc/remove_headset(mob/living/user) + if(!my_headset) + to_chat(user, "\The [src] doesn't have a headset to remove, thankfully.") + else + ISay("BAWWWWWK LEAVE THE HEADSET BAWKKKKK!") + my_headset.forceMove(get_turf(src)) + user.put_in_hands(my_headset) + to_chat(user, span("notice", "You take away \the [src]'s [my_headset.name]. Finally.")) + to_chat(src, span("warning", "\The [user] takes your [my_headset.name] away! How cruel!")) + my_headset = null + +/mob/living/simple_mob/animal/passive/bird/parrot/examine(mob/user) + ..() + if(my_headset) + to_chat(user, "It is wearing \a [my_headset].") + +/mob/living/simple_mob/animal/passive/bird/parrot/Initialize() + if(my_headset) + my_headset = new my_headset(src) + return ..() + +// Subtypes. + +// Best Bird +/mob/living/simple_mob/animal/passive/bird/parrot/poly + name = "Poly" + desc = "It's a parrot. An expert on quantum cracker theory." + icon_state = "poly" + icon_rest = "poly-held" + icon_dead = "poly-dead" + tt_desc = "E Ara macao" + my_headset = /obj/item/device/radio/headset/headset_eng + say_list_type = /datum/say_list/bird/poly + +// Best Bird with best headset. +/mob/living/simple_mob/animal/passive/bird/parrot/poly/ultimate + my_headset = /obj/item/device/radio/headset/omni + +/mob/living/simple_mob/animal/passive/bird/parrot/kea + name = "kea" + desc = "A species of parrot. On Earth, they are unique among other parrots for residing in alpine climates. \ + They are known to be intelligent and curious, which has made some consider them a pest." + icon_state = "kea" + icon_rest = "kea-held" + icon_dead = "kea-dead" + tt_desc = "E Nestor notabilis" + +/mob/living/simple_mob/animal/passive/bird/parrot/eclectus + name = "eclectus" + desc = "A species of parrot, this species features extreme sexual dimorphism in their plumage's colors. \ + A male eclectus has emerald green plumage, where as a female eclectus has red and purple plumage." + icon_state = "eclectus" + icon_rest = "eclectus-held" + icon_dead = "eclectus-dead" + tt_desc = "E Eclectus roratus" + +/mob/living/simple_mob/animal/passive/bird/parrot/eclectus/Initialize() + gender = pick(MALE, FEMALE) + if(gender == FEMALE) + icon_state = "eclectusf" + icon_rest = "eclectusf-held" + icon_dead = "eclectusf-dead" + return ..() + +/mob/living/simple_mob/animal/passive/bird/parrot/grey_parrot + name = "grey parrot" + desc = "A species of parrot. This one is predominantly grey, but has red tail feathers." + icon_state = "agrey" + icon_rest = "agrey-held" + icon_dead = "agrey-dead" + tt_desc = "E Psittacus erithacus" + +/mob/living/simple_mob/animal/passive/bird/parrot/black_headed_caique + name = "black-headed caique" + desc = "A species of parrot, these birds have a distinct black color on their heads, distinguishing them from their relative Caiques." + icon_state = "bcaique" + icon_rest = "bcaique-held" + icon_dead = "bcaique-dead" + tt_desc = "E Pionites melanocephalus" + +/mob/living/simple_mob/animal/passive/bird/parrot/white_caique + name = "white-bellied caique" + desc = "A species of parrot, they are also known as the Green-Thighed Parrot." + icon_state = "wcaique" + icon_rest = "wcaique-held" + icon_dead = "wcaique-dead" + tt_desc = "E Pionites leucogaster" + +/mob/living/simple_mob/animal/passive/bird/parrot/budgerigar + name = "budgerigar" + desc = "A species of parrot, they are also known as the common parakeet, or in some circles, the budgie. \ + This one is has its natural colors of green and yellow." + icon_state = "gbudge" + icon_rest = "gbudge-held" + icon_dead = "gbudge-dead" + tt_desc = "E Melopsittacus undulatus" + +/mob/living/simple_mob/animal/passive/bird/parrot/budgerigar/blue + icon_state = "bbudge" + icon_rest = "bbudge-held" + icon_dead = "bbudge-dead" + desc = "A species of parrot, they are also known as the common parakeet, or in some circles, the budgie. \ + This one has a mutation which altered its color to be blue instead of green and yellow." + +/mob/living/simple_mob/animal/passive/bird/parrot/budgerigar/bluegreen + icon_state = "bgbudge" + icon_rest = "bgbudge-held" + icon_dead = "bgbudge-dead" + desc = "A species of parrot, they are also known as the common parakeet, or in some circles, the budgie. \ + This one has a mutation which altered its color to be a mix of blue and green." + +/mob/living/simple_mob/animal/passive/bird/parrot/cockatiel + name = "cockatiel" + desc = "A species of parrot. This one has a highly visible crest." + icon_state = "tiel" + icon_rest = "tiel-held" + icon_dead = "tiel-dead" + tt_desc = "E Nymphicus hollandicus" + +/mob/living/simple_mob/animal/passive/bird/parrot/cockatiel/white + icon_state = "wtiel" + icon_rest = "wtiel-held" + icon_dead = "wtiel-dead" + +/mob/living/simple_mob/animal/passive/bird/parrot/cockatiel/yellowish + icon_state = "luttiel" + icon_rest = "luttiel-held" + icon_dead = "luttiel-dead" + +/mob/living/simple_mob/animal/passive/bird/parrot/cockatiel/grey + icon_state = "blutiel" // idk why this is blu. + icon_rest = "blutiel-held" + icon_dead = "blutiel-dead" + +// This actually might be the yellow-crested cockatoo but idk. +/mob/living/simple_mob/animal/passive/bird/parrot/sulphur_cockatoo + name = "sulphur-crested cockatoo" + desc = "A species of parrot. This one has an expressive yellow crest. Their underwing and tail feathers are also yellow." + icon_state = "too" + icon_rest = "too-held" + icon_dead = "too-dead" + tt_desc = "E Cacatua galerita" + +// This was originally called 'hooded_too', which might not mean the unbrella cockatoo but idk. +/mob/living/simple_mob/animal/passive/bird/parrot/white_cockatoo + name = "white cockatoo" + desc = "A species of parrot. This one is also known as the Umbrella Cockatoo, due to the semicircular shape of its crest." + icon_state = "utoo" + icon_rest = "utoo-held" + icon_dead = "utoo-dead" + tt_desc = "E Cacatua alba" + +/mob/living/simple_mob/animal/passive/bird/parrot/pink_cockatoo + name = "pink cockatoo" + desc = "A species of parrot. This one is also known as Major Mitchell's cockatoo, \ + in honor of a human surveyor and explorer who existed before humans fully explored their home planet." + icon_state = "mtoo" + icon_rest = "mtoo-held" + icon_dead = "mtoo-dead" + tt_desc = "E Lophochroa leadbeateri" + + +// AI +/datum/ai_holder/simple_mob/passive/parrot + speak_chance = 2 + base_wander_delay = 8 + +/datum/ai_holder/simple_mob/passive/parrot/on_hear_say(mob/living/speaker, message) + if(holder.stat || !holder.say_list || !message || speaker == holder) + return + var/datum/say_list/S = holder.say_list + S.speak |= message \ No newline at end of file diff --git a/code/modules/mob/living/simple_mob/subtypes/animal/sif/diyaab.dm b/code/modules/mob/living/simple_mob/subtypes/animal/sif/diyaab.dm new file mode 100644 index 0000000000..0845eacc71 --- /dev/null +++ b/code/modules/mob/living/simple_mob/subtypes/animal/sif/diyaab.dm @@ -0,0 +1,47 @@ +// Diyaabs are rather weak, but tend to exist in large numbers. +// They cooperate with other diyaabs, in order to swarm whoever decides to pick on the little fluffy critter. +// A cleaving weapon like an axe will make short work of the pack. + +/datum/category_item/catalogue/fauna/diyaab + name = "Sivian Fauna - Diyaab" + desc = "Classification: S Choeros hirtus\ +

      \ + Small, social omnivores with dense seasonal wool fur valued by Sivian colonists for its cold resistance and softness. \ + The Diyaab lives in packs of anywhere from three to ten individuals, usually comprised of a family unit. Primarily herbivorous browsers, \ + supplementing their diet with organisms living in tree bark, \ + Diyaab packs have been observed to hunt prey several times their size during the less plentiful winter months. \ + Despite their unassuming appearance, the Diyaab possesses remarkably sharp anterior teeth." + value = CATALOGUER_REWARD_EASY + +/mob/living/simple_mob/animal/sif/diyaab + name = "diyaab" + desc = "A small pack animal. Although omnivorous, it will hunt meat on occasion." + tt_desc = "S Choeros hirtus" //diyaab and shantak are technically reletives! + catalogue_data = list(/datum/category_item/catalogue/fauna/diyaab) + + faction = "diyaab" + + icon_state = "diyaab" + icon_living = "diyaab" + icon_dead = "diyaab_dead" + icon = 'icons/jungle.dmi' + + maxHealth = 25 + health = 25 + + movement_cooldown = 0 + + melee_damage_lower = 2 + melee_damage_upper = 6 + base_attack_cooldown = 1 SECOND + attack_sharp = 1 //Bleeds, but it shouldn't rip off a limb? + attacktext = list("gouged") + + say_list_type = /datum/say_list/diyaab + ai_holder_type = /datum/ai_holder/simple_mob/retaliate/cooperative + +/datum/say_list/diyaab + speak = list("Awrr?", "Aowrl!", "Worrl.") + emote_see = list("sniffs the air cautiously","looks around") + emote_hear = list("snuffles") + diff --git a/code/modules/mob/living/simple_mob/subtypes/animal/sif/fluffy_vr.dm b/code/modules/mob/living/simple_mob/subtypes/animal/sif/fluffy_vr.dm new file mode 100644 index 0000000000..6102738f7c --- /dev/null +++ b/code/modules/mob/living/simple_mob/subtypes/animal/sif/fluffy_vr.dm @@ -0,0 +1,38 @@ +/mob/living/simple_mob/animal/sif/fluffy + name = "Fluffy" + desc = "It's a pink Diyaab! It seems to be very tame and quiet." + tt_desc = "S Choeros hirtus" + + icon_state = "fluffy" + icon_living = "fluffy" + icon_dead = "fluffy_dead" + icon_rest = "fluffy_sleep" + icon = 'icons/mob/animal_vr.dmi' + + maxHealth = 20 //don't want Fluff to die on a missclick + health = 20 + + movement_cooldown = 5 + + see_in_dark = 5 + mob_size = MOB_TINY + makes_dirt = FALSE // No more dirt + + response_help = "scritches" + response_disarm = "bops" + response_harm = "kicks" + + min_oxy = 16 //Require atleast 16kPA oxygen + minbodytemp = 223 //Below -50 Degrees Celcius + maxbodytemp = 323 //Above 50 Degrees Celcius + + meat_amount = 1 + meat_type = /obj/item/weapon/reagent_containers/food/snacks/meat + + say_list_type = /datum/say_list/fluffy_vr + ai_holder_type = /datum/ai_holder/simple_mob/passive + +/datum/say_list/fluffy_vr + speak = list("Squee","Arf arf","Awoo","Squeak") + emote_hear = list("howls","squeals","squeaks", "barks") + emote_see = list("puffs its fur out", "shakes its fur", "stares directly at you") diff --git a/code/modules/mob/living/simple_mob/subtypes/animal/sif/hooligan_crab.dm b/code/modules/mob/living/simple_mob/subtypes/animal/sif/hooligan_crab.dm new file mode 100644 index 0000000000..ca8288e421 --- /dev/null +++ b/code/modules/mob/living/simple_mob/subtypes/animal/sif/hooligan_crab.dm @@ -0,0 +1,119 @@ +/* + Hooligan Crabs are called so because they are rather curious and tend to follow people, + whether the people want them to or not, and sometimes causing vandalism by accident. + They're pretty strong and have strong melee armor, but won't attack first. + They unknowingly play a role in keeping the shoreline fairly safe, by killing whatever would attack other people. + + They also have a slow, but very strong attack that is telegraphed. If it hits, it will briefly stun whatever got hit + and inflict a very large chunk of damage. If the thing was already stunned, the crab will 'throw' them away, to + hopefully prevent chainstuns forever. +*/ + +/datum/category_item/catalogue/fauna/hooligan_crab + name = "Sivian Fauna - Hooligan Crab" + desc = "A very large, grey crustacean-like creature. They display remarkable curiosity, \ + often following people around, and occasionally stealing man-made objects, hence their name. \ + They generally reside at the shoreline in small groups, situated between two sources of food for it, \ + small marine life in the ocean, and small plant matter near the shore. Larger lifeforms such as humans \ + are left alone, however they will not hesitate to fight back if provoked.\ +

      \ + Hooligans have a characteristic grey shell that is very thick and protective, allowing them to \ + shrug off nearby attacks from both predators and reckless humans. It pairs its excellent defense with slow, but \ + powerful offensive, utilizing its weight and size to crush and throw threats. As such, predators generally avoid \ + Hooligan shorelines." + value = CATALOGUER_REWARD_EASY + +/mob/living/simple_mob/animal/sif/hooligan_crab + name = "hooligan crab" + desc = "A large, hard-shelled crustacean. This one is mostly grey. \ + You probably shouldn't mess with it." + catalogue_data = list(/datum/category_item/catalogue/fauna/hooligan_crab) + + icon_state = "sif_crab" + icon_living = "sif_crab" + icon_dead = "sif_crab_dead" + icon_scale = 1.5 + + faction = "crabs" + + maxHealth = 200 + health = 200 + movement_cooldown = 10 + movement_sound = 'sound/weapons/heavysmash.ogg' + movement_shake_radius = 5 + + taser_kill = FALSE + armor = list( + "melee" = 40, + "bullet" = 20, + "laser" = 10, + "energy" = 0, + "bomb" = 0, + "bio" = 0, + "rad" = 0 + ) + armor_soak = list( + "melee" = 10, + "bullet" = 5, + "laser" = 0, + "energy" = 0, + "bomb" = 0, + "bio" = 0, + "rad" = 0 + ) + + mob_size = MOB_LARGE + + melee_damage_lower = 22 + melee_damage_upper = 35 + attack_armor_pen = 35 + attack_sharp = TRUE + attack_edge = TRUE + melee_attack_delay = 1 SECOND + + meat_type = /obj/item/weapon/reagent_containers/food/snacks/meat + + response_help = "pets" + response_disarm = "gently pushes aside" + response_harm = "kicks" + friendly = "pinches" + attacktext = list("clawed", "pinched", "crushed") + speak_emote = list("clicks") + + ai_holder_type = /datum/ai_holder/simple_mob/melee/hooligan + say_list_type = /datum/say_list/crab + + var/weaken_amount = 2 // Be careful with this number. High values will equal a permastun. + +// Stuns the thing that got hit briefly. +/mob/living/simple_mob/animal/sif/hooligan_crab/apply_melee_effects(atom/A) + if(isliving(A)) + var/mob/living/L = A + var/was_stunned = L.incapacitated(INCAPACITATION_DISABLED) + L.Weaken(weaken_amount) + + playsound(L, 'sound/effects/break_stone.ogg', 75, 1) + if(was_stunned) // Try to prevent chain-stuns by having them thrown. + var/throwdir = get_dir(src, L) + L.throw_at(get_edge_target_turf(L, throwdir), 5, 1, src) + visible_message(span("danger", "\The [src] hurls \the [L] away!")) + else + visible_message(span("danger", "\The [src] crushes \the [L]!")) + +// The AI for hooligan crabs. Follows people for awhile. +/datum/ai_holder/simple_mob/melee/hooligan + hostile = FALSE + retaliate = TRUE + returns_home = TRUE + max_home_distance = 12 + mauling = TRUE + var/random_follow = TRUE // Turn off if you want to bus with crabs. + +/datum/ai_holder/simple_mob/melee/hooligan/handle_stance_strategical() + ..() + if(random_follow && stance == STANCE_IDLE && !leader) + if(prob(10)) + for(var/mob/living/L in hearers(holder)) + if(!istype(L, holder)) // Don't follow other hooligan crabs. + holder.visible_message("\The [holder] starts to follow \the [L].") + set_follow(L, rand(20 SECONDS, 40 SECONDS)) \ No newline at end of file diff --git a/code/modules/mob/living/simple_mob/subtypes/animal/sif/savik.dm b/code/modules/mob/living/simple_mob/subtypes/animal/sif/savik.dm new file mode 100644 index 0000000000..abc8811372 --- /dev/null +++ b/code/modules/mob/living/simple_mob/subtypes/animal/sif/savik.dm @@ -0,0 +1,69 @@ +// Saviks are dangerous, angry creatures that hit hard, and will berserk if losing a fight. + +/datum/category_item/catalogue/fauna/savik + name = "Sivian Fauna - Savik" + desc = "Classification: S Pistris tellus\ +

      \ + A predatory warm-blooded reptillian species covered in a layer of insulating down feathers. \ + The Savik's preferred method of hunting is to burrow under deep snow drifts, and lie in ambush for prey. \ + The Savik has been known to lie in wait for days at a time, generating heat by vibrating its shoulder plates \ + at a nigh inperceptable frequency while most of its body enters a state of sopor in order to conserve energy. \ +

      \ + Once the Savik detects its prey, it will charge with incredible kinetic force with the two enormous, \ + angled bony plates on either side of the Savik's upper body acting as a natural snow plow, \ + allowing frightening ease of movement through deep snow. Due to the long periods between feeding, \ + the Savik will hunt its prey with absolute perseverence, as failure to catch a suitable meal is likely to \ + spell death for the animal due to the high energy expenditure of its initial strike. \ + The Savik has no known predators, and should be avoided at all costs." + value = CATALOGUER_REWARD_MEDIUM + +/mob/living/simple_mob/animal/sif/savik + name = "savik" + tt_desc = "S Pistris tellus" //landshark + catalogue_data = list(/datum/category_item/catalogue/fauna/savik) + faction = "savik" + + icon_state = "savik" + icon_living = "savik" + icon_dead = "savik_dead" + icon = 'icons/jungle.dmi' + + maxHealth = 125 + health = 125 + + movement_cooldown = 0.5 SECONDS + + melee_damage_lower = 15 + melee_damage_upper = 35 + attack_armor_pen = 15 + attack_sharp = TRUE + attack_edge = TRUE + melee_attack_delay = 1 SECOND + attacktext = list("mauled") + + player_msg = "You have the ability to berserk at will, which will grant strong physical bonuses for \ + a short period of time, however it will tire you and you will be much weaker for awhile after it expires." + + say_list_type = /datum/say_list/savik + ai_holder_type = /datum/ai_holder/simple_mob/savik + +/datum/say_list/savik + speak = list("Hruuugh!","Hrunnph") + emote_see = list("paws the ground","shakes its mane","stomps") + emote_hear = list("snuffles") + +/mob/living/simple_mob/animal/sif/savik/handle_special() + if((get_AI_stance() in list(STANCE_APPROACH, STANCE_FIGHT)) && !is_AI_busy() && isturf(loc)) + if(health <= (maxHealth * 0.5)) // At half health, and fighting someone currently. + berserk() + +/datum/ai_holder/simple_mob/savik + mauling = TRUE + +// So players can use it too. +/mob/living/simple_mob/animal/sif/savik/verb/berserk() + set name = "Berserk" + set desc = "Enrage and become vastly stronger for a period of time, however you will be weaker afterwards." + set category = "Abilities" + + add_modifier(/datum/modifier/berserk, 30 SECONDS) diff --git a/code/modules/mob/living/simple_mob/subtypes/animal/sif/shantak.dm b/code/modules/mob/living/simple_mob/subtypes/animal/sif/shantak.dm new file mode 100644 index 0000000000..881615138e --- /dev/null +++ b/code/modules/mob/living/simple_mob/subtypes/animal/sif/shantak.dm @@ -0,0 +1,98 @@ +// Shantaks are essentially sif wolves. + +/datum/category_item/catalogue/fauna/shantak + name = "Sivian Fauna - Shantak" + desc = "Classification: S Choeros shantak\ +

      \ + The Shantak is easily recognized by its iridescent, crystaline mane. \ + The creature's specially adapted hairs are hardened by a natural hard mineral coating, \ + thickest in the mane but present across the whole body. \ + As well as giving the Shantak a coat nigh-inpenetrable to all but the most specialized predator, \ + their hard, almost metallic coat gives them a slightly musical accent as they move. \ + The Shantak uses its powerful foreclaws for both den-building and foraging. \ +

      \ + Observed to share several square-mile territories with a small number of other individuals, \ + the Shantak will rotate between several dens dug deep into the hard earth throughout the year, \ + while deftly avoiding others of its species outwith mating season. While other wildlife makes use of these dens, \ + the Shantak is fiercely territorial and will defend itself against any creature it perceives as a threat with reckless abandon. \ + Their diet consists primarily of fungi and insects found just below the permafrost." + value = CATALOGUER_REWARD_MEDIUM + +/mob/living/simple_mob/animal/sif/shantak + name = "shantak" + desc = "A piglike creature with a bright iridiscent mane that sparkles as though lit by an inner light. \ + Don't be fooled by its beauty though." + tt_desc = "S Choeros shantak" + catalogue_data = list(/datum/category_item/catalogue/fauna/shantak) + + faction = "shantak" + + icon_state = "shantak" + icon_living = "shantak" + icon_dead = "shantak_dead" + icon = 'icons/jungle.dmi' + + maxHealth = 75 + armor_soak = list( + "melee" = 5, + "bullet" = 0, + "laser" = 0, + "energy" = 0, + "bomb" = 0, + "bio" = 0, + "rad" = 0 + ) + + movement_cooldown = 5 + + melee_damage_lower = 6 + melee_damage_upper = 14 + base_attack_cooldown = 1 SECOND + melee_attack_delay = 0.5 SECONDS + attack_armor_pen = 5 + attack_sharp = TRUE + attack_edge = TRUE + attacktext = list("gouged") + + say_list_type = /datum/say_list/shantak + +/datum/say_list/shantak + speak = list("Shuhn.","Shrunnph?","Shunpf.") + emote_see = list("scratches the ground", "shakes out its mane", "clinks gently as it moves") + + +// The pack leader. +// Will command other shantaks to follow it. +/mob/living/simple_mob/animal/sif/shantak/leader + name = "big shantak" + desc = "A piglike creature with a bright iridiscent mane that sparkles as though lit by an inner light. \ + This one seems bigger than the others, and has a commanding presence." + icon_scale = 1.5 + maxHealth = 125 + player_msg = "You have the ability to command other shantaks to follow you." + +/mob/living/simple_mob/animal/sif/shantak/leader/verb/rally_pack() + set name = "Rally Pack" + set desc = "Commands your fellow packmembers to follow you, the leader." + set category = "Abilities" + + for(var/mob/living/simple_mob/animal/sif/shantak/S in hearers(7, src)) + if(istype(S, /mob/living/simple_mob/animal/sif/shantak/leader)) // Leaders won't follow other leaders. Also avoids trying to follow ourselves. + continue + if(!S.ai_holder) + continue + if(S.faction != src.faction) + continue + var/datum/ai_holder/AI = S.ai_holder + AI.set_follow(src) + +// Variant that automatically commands nearby allies to follow it when created. +// Suggested to spawn last so it can rally up all the shantaks easily before hunting for tasty explorers. +/mob/living/simple_mob/animal/sif/shantak/leader/autofollow/Initialize() + rally_pack() + return ..() + + +// These ones only retaliate. Used for a PoI. +/mob/living/simple_mob/animal/sif/shantak/retaliate + ai_holder_type = /datum/ai_holder/simple_mob/retaliate \ No newline at end of file diff --git a/code/modules/mob/living/simple_mob/subtypes/animal/sif/sif.dm b/code/modules/mob/living/simple_mob/subtypes/animal/sif/sif.dm new file mode 100644 index 0000000000..8d19324cf2 --- /dev/null +++ b/code/modules/mob/living/simple_mob/subtypes/animal/sif/sif.dm @@ -0,0 +1,5 @@ +// Mobs intended to be on Sif. As such, they won't die to the cold. +/mob/living/simple_mob/animal/sif + minbodytemp = 175 + cold_resist = 0.75 + heat_resist = -0.5 \ No newline at end of file diff --git a/code/modules/mob/living/simple_mob/subtypes/animal/space/alien.dm b/code/modules/mob/living/simple_mob/subtypes/animal/space/alien.dm new file mode 100644 index 0000000000..7de14dc6e7 --- /dev/null +++ b/code/modules/mob/living/simple_mob/subtypes/animal/space/alien.dm @@ -0,0 +1,118 @@ +/mob/living/simple_mob/animal/space/alien + name = "alien hunter" + desc = "Hiss!" + icon = 'icons/mob/alien.dmi' + icon_state = "alienh_running" + icon_living = "alienh_running" + icon_dead = "alien_l" + icon_gib = "syndicate_gib" + icon_rest = "alienh_sleep" + + faction = "xeno" + + mob_class = MOB_CLASS_ABERRATION + + response_help = "pokes" + response_disarm = "shoves" + response_harm = "hits" + + maxHealth = 100 + health = 100 + + harm_intent_damage = 5 + melee_damage_lower = 25 + melee_damage_upper = 25 + attack_sharp = TRUE + attack_edge = TRUE + + attacktext = list("slashed") + attack_sound = 'sound/weapons/bladeslice.ogg' + + meat_type = /obj/item/weapon/reagent_containers/food/snacks/xenomeat + +/mob/living/simple_mob/animal/space/alien/drone + name = "alien drone" + icon_state = "aliend_running" + icon_living = "aliend_running" + icon_dead = "aliend_l" + icon_rest = "aliend_sleep" + health = 60 + melee_damage_lower = 15 + melee_damage_upper = 15 + +/mob/living/simple_mob/animal/space/alien/sentinel + name = "alien sentinel" + icon_state = "aliens_running" + icon_living = "aliens_running" + icon_dead = "aliens_l" + icon_rest = "aliens_sleep" + health = 120 + melee_damage_lower = 15 + melee_damage_upper = 15 + projectiletype = /obj/item/projectile/energy/neurotoxin/toxic + projectilesound = 'sound/weapons/pierce.ogg' + +/mob/living/simple_mob/animal/space/alien/sentinel/praetorian + name = "alien praetorian" + icon = 'icons/mob/64x64.dmi' + icon_state = "prat_s" + icon_living = "prat_s" + icon_dead = "prat_dead" + icon_rest = "prat_sleep" + maxHealth = 200 + health = 200 + + pixel_x = -16 + old_x = -16 + meat_amount = 5 + +/mob/living/simple_mob/animal/space/alien/queen + name = "alien queen" + icon_state = "alienq_running" + icon_living = "alienq_running" + icon_dead = "alienq_l" + icon_rest = "alienq_sleep" + health = 250 + maxHealth = 250 + melee_damage_lower = 15 + melee_damage_upper = 15 + projectiletype = /obj/item/projectile/energy/neurotoxin/toxic + projectilesound = 'sound/weapons/pierce.ogg' + + + movement_cooldown = 8 + +/mob/living/simple_mob/animal/space/alien/queen/empress + name = "alien empress" + icon = 'icons/mob/64x64.dmi' + icon_state = "queen_s" + icon_living = "queen_s" + icon_dead = "queen_dead" + icon_rest = "queen_sleep" + maxHealth = 400 + health = 400 + meat_amount = 5 + + pixel_x = -16 + old_x = -16 + +/mob/living/simple_mob/animal/space/alien/queen/empress/mother + name = "alien mother" + icon = 'icons/mob/96x96.dmi' + icon_state = "empress_s" + icon_living = "empress_s" + icon_dead = "empress_dead" + icon_rest = "empress_rest" + maxHealth = 600 + health = 600 + meat_amount = 10 + melee_damage_lower = 15 + melee_damage_upper = 25 + + pixel_x = -32 + old_x = -32 + +/mob/living/simple_mob/animal/space/alien/death() + ..() + visible_message("[src] lets out a waning guttural screech, green blood bubbling from its maw...") + playsound(src, 'sound/voice/hiss6.ogg', 100, 1) \ No newline at end of file diff --git a/code/modules/mob/living/simple_mob/subtypes/animal/space/bats.dm b/code/modules/mob/living/simple_mob/subtypes/animal/space/bats.dm new file mode 100644 index 0000000000..5244fd9b98 --- /dev/null +++ b/code/modules/mob/living/simple_mob/subtypes/animal/space/bats.dm @@ -0,0 +1,52 @@ +/mob/living/simple_mob/animal/space/bats + name = "space bat swarm" + desc = "A swarm of cute little blood sucking bats that looks pretty upset." + tt_desc = "N Bestia gregaria" //Nispean swarm bats, because of course Nisp has swarm bats + icon = 'icons/mob/bats.dmi' + icon_state = "bat" + icon_living = "bat" + icon_dead = "bat_dead" + icon_gib = "bat_dead" + + faction = "scarybat" + + maxHealth = 20 + health = 20 + + attacktext = list("bites") + attack_sound = 'sound/weapons/bite.ogg' + + response_help = "pets the" + response_disarm = "gently pushes aside the" + response_harm = "hits the" + + harm_intent_damage = 10 + + melee_damage_lower = 5 + melee_damage_upper = 5 + attack_sharp = TRUE + + ai_holder_type = /datum/ai_holder/simple_mob/melee/evasive + + has_langs = list("Mouse") + + meat_type = /obj/item/weapon/reagent_containers/food/snacks/meat + + say_list_type = /datum/say_list/mouse // Close enough + + var/scare_chance = 15 + +/mob/living/simple_mob/animal/space/bats/apply_melee_effects(var/atom/A) + if(isliving(A)) + var/mob/living/L = A + if(prob(scare_chance)) + L.Stun(1) + L.visible_message("\the [src] scares \the [L]!") + +// Spookiest of bats +/mob/living/simple_mob/animal/space/bats/cult + faction = "cult" + supernatural = TRUE + +/mob/living/simple_mob/animal/space/bats/cult/cultify() + return \ No newline at end of file diff --git a/code/modules/mob/living/simple_mob/subtypes/animal/space/bear.dm b/code/modules/mob/living/simple_mob/subtypes/animal/space/bear.dm new file mode 100644 index 0000000000..e4199373bd --- /dev/null +++ b/code/modules/mob/living/simple_mob/subtypes/animal/space/bear.dm @@ -0,0 +1,46 @@ +/mob/living/simple_mob/animal/space/bear + name = "space bear" + desc = "A product of Space Russia?" + tt_desc = "U Ursinae aetherius" //...bearspace? Maybe. + icon_state = "bear" + icon_living = "bear" + icon_dead = "bear_dead" + icon_gib = "bear_gib" + + faction = "russian" + + maxHealth = 125 + health = 125 + + movement_cooldown = 0.5 SECONDS + + melee_damage_lower = 15 + melee_damage_upper = 35 + attack_armor_pen = 15 + attack_sharp = TRUE + attack_edge = TRUE + melee_attack_delay = 1 SECOND + attacktext = list("mauled") + + meat_type = /obj/item/weapon/reagent_containers/food/snacks/bearmeat + + say_list_type = /datum/say_list/bear + +/datum/say_list/bear + speak = list("RAWR!","Rawr!","GRR!","Growl!") + emote_see = list("stares ferociously", "stomps") + emote_hear = list("rawrs","grumbles","grawls", "growls", "roars") + +// Is it time to be mad? +/mob/living/simple_mob/animal/space/bear/handle_special() + if((get_AI_stance() in list(STANCE_APPROACH, STANCE_FIGHT)) && !is_AI_busy() && isturf(loc)) + if(health <= (maxHealth * 0.5)) // At half health, and fighting someone currently. + berserk() + +// So players can use it too. +/mob/living/simple_mob/animal/space/bear/verb/berserk() + set name = "Berserk" + set desc = "Enrage and become vastly stronger for a period of time, however you will be weaker afterwards." + set category = "Abilities" + + add_modifier(/datum/modifier/berserk, 30 SECONDS) \ No newline at end of file diff --git a/code/modules/mob/living/simple_mob/subtypes/animal/space/carp.dm b/code/modules/mob/living/simple_mob/subtypes/animal/space/carp.dm new file mode 100644 index 0000000000..ddd852f779 --- /dev/null +++ b/code/modules/mob/living/simple_mob/subtypes/animal/space/carp.dm @@ -0,0 +1,153 @@ +// Space carp show up as a random event to wreck hapless people in space or near windows. +// They generally fit the archetype of 'fast but fragile'. +// This is compensated by being in groups (usually). + +/datum/category_item/catalogue/fauna/carp + name = "Voidborne Fauna - Space Carp" + desc = "A strange descendant of some form of voidborne life, they are the most \ + common naturally void-faring lifeform found in human territory. They've been named \ + 'Space Carp' by various groups of spacers due to resembling the fish from Earth.\ +

      \ + Their lifecycle begins as a fungus-like growth, sometimes found on the walls of spacecraft \ + and space stations, before growing into a form which allows for independent travel. Even \ + when fully grown, they can sometimes be found to stow away on the hulls of spaceborne objects, \ + which might explain how they became widespread across many star systems.\ +

      \ + Carp have a special gas bladder inside of them, which they utilize as a means of movement in \ + space by stategically releasing the gas to propel themselves in a process that resembles \ + thrusters on a spacecraft. The gas contained inside the carp also allows them \ + to float when inside an atmosphere. The carp might also spray 'spores' using a similar method.\ +

      \ + They are hypercarnivorous to the point of cannibalism, consuming their own dead in order to \ + sustain themselves during hard times, which are rather frequent due to their prey being \ + vastly technologically advanced. For human habitats that are well secured, carp are generally \ + an annoyance. For those unable to adequately protect themselves, however, they can be \ + rather dangerous, especially if a mass migration of carp arrives." + value = CATALOGUER_REWARD_EASY + +/mob/living/simple_mob/animal/space/carp + name = "space carp" + desc = "A ferocious, fang-bearing creature that resembles a fish." + catalogue_data = list(/datum/category_item/catalogue/fauna/carp) + icon_state = "carp" + icon_living = "carp" + icon_dead = "carp_dead" + icon_gib = "carp_gib" + + faction = "carp" + maxHealth = 25 + health = 25 + movement_cooldown = 0 // Carp go fast + hovering = TRUE + + response_help = "pets the" + response_disarm = "gently pushes aside the" + response_harm = "hits the" + + melee_damage_lower = 7 // About 14 DPS. + melee_damage_upper = 7 + base_attack_cooldown = 10 // One attack a second. + attack_sharp = TRUE + attack_sound = 'sound/weapons/bite.ogg' + attacktext = list("bitten") + + meat_amount = 1 + meat_type = /obj/item/weapon/reagent_containers/food/snacks/carpmeat + + ai_holder_type = /datum/ai_holder/simple_mob/melee + + var/knockdown_chance = 15 + +/mob/living/simple_mob/animal/space/carp/apply_melee_effects(var/atom/A) + if(isliving(A)) + var/mob/living/L = A + if(prob(knockdown_chance)) + L.Weaken(3) + L.visible_message(span("danger", "\The [src] knocks down \the [L]!")) + +// Subtypes. + +// Won't wander away. +/mob/living/simple_mob/animal/space/carp/event + ai_holder_type = /datum/ai_holder/simple_mob/event + + +/mob/living/simple_mob/animal/space/carp/large + name = "elder carp" + desc = "An older, more matured carp. Few survive to this age due to their aggressiveness." + icon = 'icons/mob/64x32.dmi' + icon_state = "shark" + icon_living = "shark" + icon_dead = "shark_dead" + + maxHealth = 50 + health = 50 + movement_cooldown = 5 // Slower than the younger carp. + mob_size = MOB_LARGE + + pixel_x = -16 + default_pixel_x = -16 + + meat_amount = 3 + + +/mob/living/simple_mob/animal/space/carp/large/huge + name = "great white carp" + desc = "A very rare breed of carp- and a very aggressive one." + icon = 'icons/mob/64x64.dmi' + icon_dead = "megacarp_dead" + icon_living = "megacarp" + icon_state = "megacarp" + + maxHealth = 230 + health = 230 + movement_cooldown = 10 + + melee_damage_lower = 15 // About 20 DPS. + melee_damage_upper = 25 + + pixel_y = -16 + default_pixel_y = -16 + + meat_amount = 10 + + +/mob/living/simple_mob/animal/space/carp/holographic + name = "holographic carp" + desc = "An obviously holographic, but still ferocious looking carp." + // Might be worth using a filter similar to AI holograms in the future. + icon = 'icons/mob/AI.dmi' + icon_state = "holo4" + icon_living = "holo4" + icon_dead = "holo4" + alpha = 127 + icon_gib = null + meat_amount = 0 + meat_type = null + + mob_class = MOB_CLASS_PHOTONIC // Xeno-taser won't work on this as its not a 'real' carp. + +/mob/living/simple_mob/animal/space/carp/holographic/Initialize() + set_light(2) // Hologram lighting. + return ..() + +// Presumably the holodeck emag code requires this. +// Pass TRUE to make safe. Pass FALSE to make unsafe. +/mob/living/simple_mob/animal/space/carp/holographic/proc/set_safety(safe) + if(!isnull(get_AI_stance())) // Will return null if lacking an AI holder or a player is controlling it w/o autopilot var. + ai_holder.hostile = !safe // Inverted so safe = TRUE means hostility = FALSE. + ai_holder.forget_everything() // Reset state so it'll stop chewing on its target. + +// Called on death. +/mob/living/simple_mob/animal/space/carp/holographic/proc/derez() + visible_message(span("notice", "\The [src] fades away!")) + qdel(src) + +/mob/living/simple_mob/animal/space/carp/holographic/gib() + derez() // Holograms can't gib. + +/mob/living/simple_mob/animal/space/carp/holographic/death() + ..() + derez() + + diff --git a/code/modules/mob/living/simple_mob/subtypes/animal/space/gaslamp_vr.dm b/code/modules/mob/living/simple_mob/subtypes/animal/space/gaslamp_vr.dm new file mode 100644 index 0000000000..e615e5f05b --- /dev/null +++ b/code/modules/mob/living/simple_mob/subtypes/animal/space/gaslamp_vr.dm @@ -0,0 +1,81 @@ +/* +LORE: +Gaslamps are a phoron-based life form endemic to the world of Virgo-3B. They are +a sort of fungal organism with physical ties to Diona and Vox, deriving energy +for movement from a gentle combustion-like reaction in their bodies using +atmospheric phoron, carefully filtered trace oxygen, and captured meat products. +Over-exposure to oxygen causes their insides to burn too hot and eventually +kills them. + +TODO: Make them light up and heat the air when exposed to oxygen. +*/ + +/mob/living/simple_mob/animal/passive/gaslamp + name = "gaslamp" + desc = "Some sort of floaty alien with a warm glow. This creature is endemic to Virgo-3B." + tt_desc = "Semaeostomeae virginus" + + icon_state = "gaslamp" + icon_living = "gaslamp" + icon_dead = "gaslamp-dead" + icon = 'icons/mob/vore32x64.dmi' + + faction = "virgo3b" + maxHealth = 100 + health = 100 + movement_cooldown = 12 + + say_list_type = /datum/say_list/gaslamp + ai_holder_type = /datum/ai_holder/simple_mob/gaslamp + + //speed = 2 not sure what this is, guessing animation, but it conflicts with new system. + + melee_damage_lower = 30 // Because fuck anyone who hurts this sweet, innocent creature. + melee_damage_upper = 30 + attacktext = list("thrashed") + friendly = "caressed" + + response_help = "brushes" // If clicked on help intent + response_disarm = "pushes" // If clicked on disarm intent + response_harm = "swats" // If clicked on harm intent + + minbodytemp = 0 + maxbodytemp = 350 + + min_oxy = 0 + max_oxy = 5 // Does not like oxygen very much. + min_tox = 1 // Needs phoron to survive. + max_tox = 0 + min_co2 = 0 + max_co2 = 0 + min_n2 = 0 + max_n2 = 0 + +/datum/say_list/gaslamp + emote_see = list("looms", "sways gently") + +/datum/ai_holder/simple_mob/gaslamp + hostile = FALSE // The majority of simplemobs are hostile, gaslamps are nice. + cooperative = FALSE + retaliate = TRUE //so the monster can attack back + returns_home = FALSE + can_flee = FALSE + speak_chance = 1 + wander = TRUE + base_wander_delay = 9 + +// Activate Noms! +/mob/living/simple_mob/animal/passive/gaslamp + vore_active = 1 + vore_capacity = 2 + vore_bump_chance = 90 //they're frickin' jellyfish anenome filterfeeders, get tentacled + vore_bump_emote = "lazily wraps its tentacles around" + vore_standing_too = 1 // Defaults to trying to give you that big tentacle hug. + vore_ignores_undigestable = 0 // they absorb rather than digest, you're going in either way + vore_default_mode = DM_HOLD + vore_digest_chance = 0 // Chance to switch to digest mode if resisted + vore_absorb_chance = 20 // BECOME A PART OF ME. + vore_pounce_chance = 5 // Small chance to punish people who abuse their nomming behaviour to try and kite them forever with repeated melee attacks. + vore_stomach_name = "internal chamber" + vore_stomach_flavor = "You are squeezed into the tight embrace of the alien creature's warm and cozy insides." + vore_icons = SA_ICON_LIVING diff --git a/code/modules/mob/living/simple_mob/subtypes/animal/space/goose.dm b/code/modules/mob/living/simple_mob/subtypes/animal/space/goose.dm new file mode 100644 index 0000000000..43d159a9f0 --- /dev/null +++ b/code/modules/mob/living/simple_mob/subtypes/animal/space/goose.dm @@ -0,0 +1,44 @@ +/mob/living/simple_mob/animal/space/goose + name = "goose" + desc = "It looks pretty angry!" + tt_desc = "E Branta canadensis" //that iconstate is just a regular goose + icon_state = "goose" + icon_living = "goose" + icon_dead = "goose_dead" + + faction = "geese" + + maxHealth = 30 + health = 30 + + response_help = "pets the" + response_disarm = "gently pushes aside the" + response_harm = "hits the" + + harm_intent_damage = 5 + melee_damage_lower = 5 //they're meant to be annoying, not threatening. + melee_damage_upper = 5 //unless there's like a dozen of them, then you're screwed. + attacktext = list("pecked") + attack_sound = 'sound/weapons/bite.ogg' + + has_langs = list("Bird") + + meat_type = /obj/item/weapon/reagent_containers/food/snacks/meat + +/datum/say_list/goose + speak = list("HONK!") + emote_hear = list("honks loudly!") + say_maybe_target = list("Honk?") + say_got_target = list("HONK!!!") + +/mob/living/simple_mob/animal/space/goose/handle_special() + if((get_AI_stance() in list(STANCE_APPROACH, STANCE_FIGHT)) && !is_AI_busy() && isturf(loc)) + if(health <= (maxHealth * 0.5)) // At half health, and fighting someone currently. + berserk() + +/mob/living/simple_mob/animal/space/goose/verb/berserk() + set name = "Berserk" + set desc = "Enrage and become vastly stronger for a period of time, however you will be weaker afterwards." + set category = "Abilities" + + add_modifier(/datum/modifier/berserk, 30 SECONDS) \ No newline at end of file diff --git a/code/modules/mob/living/simple_mob/subtypes/animal/space/mimic_vr.dm b/code/modules/mob/living/simple_mob/subtypes/animal/space/mimic_vr.dm new file mode 100644 index 0000000000..c2e82341bc --- /dev/null +++ b/code/modules/mob/living/simple_mob/subtypes/animal/space/mimic_vr.dm @@ -0,0 +1,244 @@ +// +// Abstract Class +// + +/mob/living/simple_mob/animal/space/mimic + name = "crate" + desc = "A rectangular steel crate." + + icon_state = "crate" + icon_living = "crate" + icon = 'icons/obj/storage.dmi' + + faction = "mimic" + + maxHealth = 250 + health = 250 + //speed = 4 no idea what this is, conflicts with new AI update. + movement_cooldown = 10 //slow crate. + + response_help = "touches" + response_disarm = "pushes" + response_harm = "hits" + + harm_intent_damage = 5 + melee_damage_lower = 8 + melee_damage_upper = 12 + attacktext = list("attacked") + attack_sound = 'sound/weapons/bite.ogg' + + min_oxy = 0 + max_oxy = 0 + min_tox = 0 + max_tox = 0 + min_co2 = 0 + max_co2 = 0 + min_n2 = 0 + max_n2 = 0 + minbodytemp = 0 + + meat_type = /obj/item/weapon/reagent_containers/food/snacks/carpmeat + + say_list_type = /datum/say_list/mimic + ai_holder_type = /datum/ai_holder/mimic + + var/knockdown_chance = 15 //Stubbing your toe on furniture hurts. + + showvoreprefs = 0 //VOREStation Edit - Hides mechanical vore prefs for mimics. You can't see their gaping maws when they're just sitting idle. + +/datum/say_list/mimic + say_got_target = list("growls") + +/datum/ai_holder/mimic + wander = FALSE + hostile = TRUE + threaten = TRUE + threaten_timeout = 5 SECONDS + threaten_delay = 1 SECONDS //not a threat, more of a delay. + +/mob/living/simple_mob/animal/space/carp/apply_melee_effects(var/atom/A) + if(isliving(A)) + var/mob/living/L = A + if(prob(knockdown_chance)) + L.Weaken(3) + L.visible_message(span("danger", "\The [src] knocks down \the [L]!")) + +/* should be covered by my "growls" say thing, but keeping it just in case. +/mob/living/simple_mob/animal/space/mimic/set_target() + . = ..() + if(.) + audible_emote("growls at [.]") +*/ +/mob/living/simple_mob/animal/space/mimic/death() + ..() + qdel(src) + +/mob/living/simple_mob/animal/space/mimic/will_show_tooltip() + return FALSE + +/mob/living/simple_mob/animal/space/mimic/death() + var/obj/structure/closet/crate/C = new(get_turf(src)) + // Put loot in crate + for(var/obj/O in src) + if(isbelly(O)) //VOREStation edit + continue + O.forceMove(C) + ..() + +/mob/living/simple_mob/animal/space/mimic/Initialize() + . = ..() + for(var/obj/item/I in loc) + I.forceMove(src) +/* I honestly have no idea what's happening down there so I'm just taking the essentials and yeeting. +// +// Crate Mimic +// + +// Aggro when you try to open them. Will also pickup loot when spawns and drop it when dies. +/mob/living/simple_mob/animal/space/mimic/crate + + attacktext = list("bitten") + +// stop_automated_movement = 1 we don't need these +// wander = 0 + var/attempt_open = 0 + +// Pickup loot +/mob/living/simple_mob/animal/space/mimic/crate/Initialize() + . = ..() + for(var/obj/item/I in loc) + I.forceMove(src) +/* I can't find an equivilant to this, don't know why we really have it even so... +/mob/living/simple_mob/animal/space/mimic/crate/DestroySurroundings() + ..() + if(prob(90)) + icon_state = "[initial(icon_state)]open" + else + icon_state = initial(icon_state) +*/ +/mob/living/simple_mob/animal/space/mimic/crate/ListTargets() + if(attempt_open) + return ..() + else + return ..(1) + +/mob/living/simple_mob/animal/space/mimic/crate/set_target() + . = ..() + if(.) + trigger() + +/mob/living/simple_mob/animal/space/mimic/crate/PunchTarget() + . = ..() + if(.) + icon_state = initial(icon_state) + +/mob/living/simple_mob/animal/space/mimic/crate/proc/trigger() + if(!attempt_open) + visible_message("[src] starts to move!") + attempt_open = 1 + +/mob/living/simple_mob/animal/space/mimic/crate/adjustBruteLoss(var/damage) + trigger() + ..(damage) + +/mob/living/simple_mob/animal/space/mimic/crate/LoseTarget() + ..() + icon_state = initial(icon_state) + +/mob/living/simple_mob/animal/space/mimic/crate/LostTarget() + ..() + icon_state = initial(icon_state) + +/mob/living/simple_mob/animal/space/mimic/crate/death() + var/obj/structure/closet/crate/C = new(get_turf(src)) + // Put loot in crate + for(var/obj/O in src) + if(isbelly(O)) //VOREStation edit + continue + O.forceMove(C) + ..() + +/mob/living/simple_mob/animal/space/mimic/crate/PunchTarget() + . =..() + var/mob/living/L = . + if(istype(L)) + if(prob(15)) + L.Weaken(2) + L.visible_message("\the [src] knocks down \the [L]!") + +// +// Copy Mimic +// + +var/global/list/protected_objects = list(/obj/structure/table, /obj/structure/cable, /obj/structure/window, /obj/item/projectile/animate) + +/mob/living/simple_mob/animal/space/mimic/copy + + health = 100 + maxHealth = 100 + var/mob/living/creator = null // the creator + var/destroy_objects = 0 + var/knockdown_people = 0 + +/mob/living/simple_mob/animal/space/mimic/copy/New(loc, var/obj/copy, var/mob/living/creator) + ..(loc) + CopyObject(copy, creator) + +/mob/living/simple_mob/animal/space/mimic/copy/death() + + for(var/atom/movable/M in src) + if(isbelly(M)) //VOREStation edit + continue + M.forceMove(get_turf(src)) + ..() + +/mob/living/simple_mob/animal/space/mimic/copy/ListTargets() + // Return a list of targets that isn't the creator + . = ..() + return . - creator + +/mob/living/simple_mob/animal/space/mimic/copy/proc/CopyObject(var/obj/O, var/mob/living/creator) + + if((istype(O, /obj/item) || istype(O, /obj/structure)) && !is_type_in_list(O, protected_objects)) + + O.forceMove(src) + name = O.name + desc = O.desc + icon = O.icon + icon_state = O.icon_state + icon_living = icon_state + + if(istype(O, /obj/structure)) + health = (anchored * 50) + 50 + destroy_objects = 1 + if(O.density && O.anchored) + knockdown_people = 1 + melee_damage_lower *= 2 + melee_damage_upper *= 2 + else if(istype(O, /obj/item)) + var/obj/item/I = O + health = 15 * I.w_class + melee_damage_lower = 2 + I.force + melee_damage_upper = 2 + I.force + move_to_delay = 2 * I.w_class + + maxHealth = health + if(creator) + src.creator = creator + faction = "\ref[creator]" // very unique + return 1 + return + +/mob/living/simple_mob/animal/space/mimic/copy/DestroySurroundings() + if(destroy_objects) + ..() + +/mob/living/simple_mob/animal/space/mimic/copy/PunchTarget() + . =..() + if(knockdown_people) + var/mob/living/L = . + if(istype(L)) + if(prob(15)) + L.Weaken(1) + L.visible_message("\the [src] knocks down \the [L]!") +*/ \ No newline at end of file diff --git a/code/modules/mob/living/simple_mob/subtypes/animal/space/snake_vr.dm b/code/modules/mob/living/simple_mob/subtypes/animal/space/snake_vr.dm new file mode 100644 index 0000000000..6664cb9e03 --- /dev/null +++ b/code/modules/mob/living/simple_mob/subtypes/animal/space/snake_vr.dm @@ -0,0 +1,166 @@ +/mob/living/simple_mob/animal/passive/snake + name = "snake" + desc = "A big thick snake." + + icon_state = "snake" + icon_living = "snake" + icon_dead = "snake_dead" + icon = 'icons/mob/snake_vr.dmi' + + maxHealth = 20 + health = 20 + + movement_cooldown = 8 // SLOW-ASS MUTHAFUCKA, I hope. + + response_help = "pets" + response_disarm = "shoos" + response_harm = "kicks" + + melee_damage_lower = 3 + melee_damage_upper = 5 + attacktext = list("bitten") + + say_list_type = /datum/say_list/snake + ai_holder_type = /datum/ai_holder/simple_mob/melee + +/datum/say_list/snake + emote_hear = list("hisses") + +//NOODLE IS HERE! SQUEEEEEEEE~ +/mob/living/simple_mob/animal/passive/snake/noodle + name = "Noodle" + desc = "This snake is particularly chubby and demands nothing but the finest of treats." + + ai_holder_type = /datum/ai_holder/simple_mob/passive + makes_dirt = FALSE + + var/turns_since_scan = 0 + var/obj/movement_target + +/mob/living/simple_mob/animal/passive/snake/noodle/Life() + ..() + + //Not replacing with SA FollowTarget mechanics because Ian behaves... very... specifically. + + //Feeding, chasing food, FOOOOODDDD + if(!stat && !resting && !buckled) + turns_since_scan++ + if(turns_since_scan > 5) + turns_since_scan = 0 + if((movement_target) && !(isturf(movement_target.loc) || ishuman(movement_target.loc) )) + movement_target = null + if( !movement_target || !(movement_target.loc in oview(src, 3)) ) + movement_target = null + for(var/obj/item/weapon/reagent_containers/food/snacks/snakesnack/S in oview(src,3)) + if(isturf(S.loc) || ishuman(S.loc)) + movement_target = S + visible_emote("turns towards \the [movement_target] and slithers towards it.") + break + if(movement_target) + step_to(src,movement_target,1) + sleep(3) + step_to(src,movement_target,1) + sleep(3) + step_to(src,movement_target,1) + + if(movement_target) //Not redundant due to sleeps, Item can be gone in 6 decisecomds + if (movement_target.loc.x < src.x) + set_dir(WEST) + else if (movement_target.loc.x > src.x) + set_dir(EAST) + else if (movement_target.loc.y < src.y) + set_dir(SOUTH) + else if (movement_target.loc.y > src.y) + set_dir(NORTH) + else + set_dir(SOUTH) + + if(isturf(movement_target.loc) ) + UnarmedAttack(movement_target) + else if(ishuman(movement_target.loc) && prob(20)) + visible_emote("stares at the [movement_target] that [movement_target.loc] has with an unknowable reptilian gaze.") + +/* old eating code, couldn't figure out how to make the "swallows food" thing so I'm keeping this here incase someone wants legacy" +/mob/living/simple_mob/animal/passive/snake/noodle/Life() //stolen from Ian in corgi.dm + if(!..()) + return 0 + + if(!stat && !resting && !buckled && !ai_inactive) + turns_since_scan++ + if(turns_since_scan > 5) + turns_since_scan = 0 + if(movement_target && !(isturf(movement_target.loc) || ishuman(movement_target.loc))) + movement_target = null + stop_automated_movement = 0 + if(!movement_target || !(movement_target.loc in oview(src, 5)) ) + movement_target = null + stop_automated_movement = 0 + walk(src,0) + for(var/obj/item/weapon/reagent_containers/food/snacks/snakesnack/S in oview(src,3)) + if(isturf(S.loc)) + movement_target = S + visible_emote("turns towards \the [movement_target] and slithers towards it.") + break + + if(movement_target) + stop_automated_movement = 1 + walk_to(src, movement_target, 0, 5) + spawn(10) + if(Adjacent(movement_target)) + visible_message("[src] swallows the [movement_target] whole!") + qdel(movement_target) + walk(src,0) + else if(ishuman(movement_target.loc) && prob(20)) + visible_emote("stares at the [movement_target] that [movement_target.loc] has with an unknowable reptilian gaze.") +*/ + +/mob/living/simple_mob/animal/passive/snake/noodle/apply_melee_effects(var/atom/A) + if(ismouse(A)) + var/mob/living/simple_mob/animal/passive/mouse/mouse = A + if(mouse.getMaxHealth() < 20) // In case a badmin makes giant mice or something. + mouse.splat() + visible_emote(pick("swallows \the [mouse] whole!")) + else + ..() + +/mob/living/simple_mob/animal/passive/snake/noodle/attackby(var/obj/item/O, var/mob/user) + if(istype(O, /obj/item/weapon/reagent_containers/food/snacks/snakesnack)) + visible_message("[user] feeds \the [O] to [src].") + qdel(O) + else + return ..() + +//Special snek-snax for Noodle! +/obj/item/weapon/reagent_containers/food/snacks/snakesnack + name = "sugar mouse" + desc = "A little mouse treat made of coloured sugar. Noodle loves these!" + var/snack_colour + icon = 'icons/mob/snake_vr.dmi' + icon_state = "snack_yellow" + nutriment_amt = 1 + nutriment_desc = list("sugar" = 1) + +/obj/item/weapon/reagent_containers/food/snacks/snakesnack/Initialize() + ..() + if(!snack_colour) + snack_colour = pick( list("yellow","green","pink","blue") ) + icon_state = "snack_[snack_colour]" + desc = "A little mouse treat made of coloured sugar. Noodle loves these! This one is [snack_colour]." + reagents.add_reagent("sugar", 2) + +/obj/item/weapon/storage/box/snakesnackbox + name = "box of Snake Snax" + desc = "A box containing Noodle's special sugermouse treats." + icon = 'icons/mob/snake_vr.dmi' + icon_state = "sneksnakbox" + storage_slots = 7 + +/obj/item/weapon/storage/box/snakesnackbox/New() + new /obj/item/weapon/reagent_containers/food/snacks/snakesnack(src) + new /obj/item/weapon/reagent_containers/food/snacks/snakesnack(src) + new /obj/item/weapon/reagent_containers/food/snacks/snakesnack(src) + new /obj/item/weapon/reagent_containers/food/snacks/snakesnack(src) + new /obj/item/weapon/reagent_containers/food/snacks/snakesnack(src) + new /obj/item/weapon/reagent_containers/food/snacks/snakesnack(src) + new /obj/item/weapon/reagent_containers/food/snacks/snakesnack(src) + ..() diff --git a/code/modules/mob/living/simple_mob/subtypes/animal/space/space.dm b/code/modules/mob/living/simple_mob/subtypes/animal/space/space.dm new file mode 100644 index 0000000000..b7f77e6410 --- /dev/null +++ b/code/modules/mob/living/simple_mob/subtypes/animal/space/space.dm @@ -0,0 +1,15 @@ +// 'Space' mobs don't care about atmos (like carp) +/mob/living/simple_mob/animal/space + min_oxy = 0 + max_oxy = 0 + min_tox = 0 + max_tox = 0 + min_co2 = 0 + max_co2 = 0 + min_n2 = 0 + max_n2 = 0 + minbodytemp = 0 + +// They can also, you know, move around, in space +/mob/living/simple_mob/animal/space/Process_Spacemove(var/check_drift = 0) + return TRUE \ No newline at end of file diff --git a/code/modules/mob/living/simple_mob/subtypes/blob/blob.dm b/code/modules/mob/living/simple_mob/subtypes/blob/blob.dm new file mode 100644 index 0000000000..2d700646ae --- /dev/null +++ b/code/modules/mob/living/simple_mob/subtypes/blob/blob.dm @@ -0,0 +1,62 @@ +// Blob simple_mobs generally get made from the blob random event. +// They're considered slimes for the purposes of attack bonuses from certain weapons. + +// Do not spawn, this is a base type. +/mob/living/simple_mob/blob + icon = 'icons/mob/blob.dmi' + pass_flags = PASSBLOB | PASSTABLE + faction = "blob" + + heat_damage_per_tick = 0 + cold_damage_per_tick = 0 + min_oxy = 0 + max_oxy = 0 + min_tox = 0 + max_tox = 0 + min_co2 = 0 + max_co2 = 0 + min_n2 = 0 + max_n2 = 0 + minbodytemp = 0 + + taser_kill = FALSE + + var/mob/observer/blob/overmind = null + var/obj/structure/blob/factory/factory = null + + mob_class = MOB_CLASS_SLIME + ai_holder_type = /datum/ai_holder/simple_mob/melee + +/mob/living/simple_mob/blob/speech_bubble_appearance() + return "slime" + +/mob/living/simple_mob/blob/update_icons() + if(overmind) + color = overmind.blob_type.complementary_color + else + color = null + ..() + +/mob/living/simple_mob/blob/Destroy() + if(overmind) + overmind.blob_mobs -= src + return ..() + +/mob/living/simple_mob/blob/blob_act(obj/structure/blob/B) + if(!overmind && B.overmind) + overmind = B.overmind + update_icon() + + if(stat != DEAD && health < maxHealth) + adjustBruteLoss(-maxHealth*0.0125) + adjustFireLoss(-maxHealth*0.0125) + +/mob/living/simple_mob/blob/CanPass(atom/movable/mover, turf/target) + if(istype(mover, /obj/structure/blob)) // Don't block blobs from expanding onto a tile occupied by a blob mob. + return TRUE + return ..() + +/mob/living/simple_mob/blob/Process_Spacemove() + for(var/obj/structure/blob/B in range(1, src)) + return TRUE + return ..() \ No newline at end of file diff --git a/code/modules/mob/living/simple_mob/subtypes/blob/spore.dm b/code/modules/mob/living/simple_mob/subtypes/blob/spore.dm new file mode 100644 index 0000000000..e7bf5861f2 --- /dev/null +++ b/code/modules/mob/living/simple_mob/subtypes/blob/spore.dm @@ -0,0 +1,148 @@ +// Spores are made from blob factories. +// They are very weak and expendable, but can overwhelm when a lot of them are together. +// When attacking, spores will hit harder if near other friendly spores. +// Some blobs can infest dead non-robotic mobs, making them into Not Zombies. + +/mob/living/simple_mob/blob/spore + name = "blob spore" + desc = "A floating, fragile spore." + + icon_state = "blobpod" + icon_living = "blobpod" + glow_range = 3 + glow_intensity = 5 + layer = ABOVE_MOB_LAYER // Over the blob. + + health = 30 + maxHealth = 30 + melee_damage_lower = 2 + melee_damage_upper = 4 + movement_cooldown = 0 + hovering = TRUE + + attacktext = list("slams into") + attack_sound = 'sound/effects/slime_squish.ogg' + say_list_type = /datum/say_list/spore + + var/mob/living/carbon/human/infested = null // The human this thing is totally not making into a zombie. + var/can_infest = FALSE + var/is_infesting = FALSE + +/datum/say_list/spore + emote_see = list("sways", "inflates briefly") + +/datum/say_list/infested + emote_see = list("shambles around", "twitches", "stares") + + +/mob/living/simple_mob/blob/spore/infesting + name = "infesting blob spore" + can_infest = TRUE + +/mob/living/simple_mob/blob/spore/weak + name = "fragile blob spore" + health = 15 + maxHealth = 15 + melee_damage_lower = 1 + melee_damage_upper = 2 + +/mob/living/simple_mob/blob/spore/Initialize(mapload, var/obj/structure/blob/factory/my_factory) + if(istype(my_factory)) + factory = my_factory + factory.spores += src + return ..() + +/mob/living/simple_mob/blob/spore/Destroy() + if(factory) + factory.spores -= src + factory = null + if(infested) + infested.forceMove(get_turf(src)) + visible_message(span("warning", "\The [infested] falls to the ground as the blob spore bursts.")) + infested = null + return ..() + +/mob/living/simple_mob/blob/spore/death(gibbed, deathmessage = "bursts!") + if(overmind) + overmind.blob_type.on_spore_death(src) + ..(gibbed, deathmessage) + qdel(src) + +/mob/living/simple_mob/blob/spore/update_icons() + ..() // This will cut our overlays. + + if(overmind) + color = overmind.blob_type.complementary_color + glow_color = color + glow_toggle = TRUE + else + color = null + glow_color = null + glow_toggle = FALSE + + if(is_infesting) + icon = infested.icon + copy_overlays(infested) + // overlays = infested.overlays + var/mutable_appearance/blob_head_overlay = mutable_appearance('icons/mob/blob.dmi', "blob_head") + if(overmind) + blob_head_overlay.color = overmind.blob_type.complementary_color + color = initial(color)//looks better. + // overlays += blob_head_overlay + add_overlay(blob_head_overlay, TRUE) + +/mob/living/simple_mob/blob/spore/handle_special() + ..() + if(can_infest && !is_infesting && isturf(loc)) + for(var/mob/living/carbon/human/H in view(src,1)) + if(H.stat != DEAD) // We want zombies. + continue + if(H.isSynthetic()) // Not philosophical zombies. + continue + infest(H) + break + + if(factory && z != factory.z) // This is to prevent spores getting lost in space and making the factory useless. + qdel(src) + +/mob/living/simple_mob/blob/spore/proc/infest(mob/living/carbon/human/H) + is_infesting = TRUE + if(H.wear_suit) + var/obj/item/clothing/suit/A = H.wear_suit + if(A.armor && A.armor["melee"]) + maxHealth += A.armor["melee"] //That zombie's got armor, I want armor! + + maxHealth += 40 + health = maxHealth + name = "Infested [H.real_name]" // Not using the Z word. + desc = "A parasitic organism attached to a deceased body, controlling it directly as if it were a puppet." + melee_damage_lower += 8 // 10 total. + melee_damage_upper += 11 // 15 total. + attacktext = list("claws") + + H.forceMove(src) + infested = H + + say_list = new /datum/say_list/infested() + + update_icons() + visible_message(span("warning", "The corpse of [H.name] suddenly rises!")) + +/mob/living/simple_mob/blob/spore/GetIdCard() + if(infested) // If we've infested someone, use their ID. + return infested.GetIdCard() + +/mob/living/simple_mob/blob/spore/apply_bonus_melee_damage(A, damage_to_do) + var/helpers = 0 + for(var/mob/living/simple_mob/blob/spore/S in view(1, src)) + if(S == src) // Don't count ourselves. + continue + if(!IIsAlly(S)) // Only friendly spores make us stronger. + continue + // Friendly spores contribute 1/4th of their averaged attack power to our attack. + damage_to_do += ((S.melee_damage_lower + S.melee_damage_upper) / 2) / 4 + helpers++ + + if(helpers) + to_chat(src, span("notice", "Your attack is assisted by [helpers] other spore\s.")) + return damage_to_do \ No newline at end of file diff --git a/code/modules/mob/living/simple_mob/subtypes/humanoid/clown.dm b/code/modules/mob/living/simple_mob/subtypes/humanoid/clown.dm new file mode 100644 index 0000000000..b6f9520698 --- /dev/null +++ b/code/modules/mob/living/simple_mob/subtypes/humanoid/clown.dm @@ -0,0 +1,29 @@ +/mob/living/simple_mob/humanoid/clown + clown + name = "clown" + desc = "A denizen of clown planet" + tt_desc = "E Homo sapiens corydon" //this is an actual clown, as opposed to someone dressed up as one + icon_state = "clown" + icon_living = "clown" + icon_dead = "clown_dead" + icon_gib = "clown_gib" + + faction = "clown" + + loot_list = list(/obj/item/weapon/bikehorn = 100) + + response_help = "pokes" + response_disarm = "gently pushes aside" + response_harm = "hits" + + harm_intent_damage = 8 + melee_damage_lower = 10 + melee_damage_upper = 10 + attacktext = list("attacked") + attack_sound = 'sound/items/bikehorn.ogg' + + say_list_type = /datum/say_list/clown + +/datum/say_list/clown + speak = list("HONK", "Honk!", "Welcome to clown planet!") + emote_see = list("honks") \ No newline at end of file diff --git a/code/modules/mob/living/simple_mob/subtypes/humanoid/humanoid.dm b/code/modules/mob/living/simple_mob/subtypes/humanoid/humanoid.dm new file mode 100644 index 0000000000..6e17e2e1a0 --- /dev/null +++ b/code/modules/mob/living/simple_mob/subtypes/humanoid/humanoid.dm @@ -0,0 +1,26 @@ +/mob/living/simple_mob/humanoid + mob_class = MOB_CLASS_HUMANOID + + // Generic humanoid mob tolerances + min_oxy = 5 + max_oxy = 0 + min_tox = 0 + max_tox = 1 + min_co2 = 0 + max_co2 = 5 + min_n2 = 0 + max_n2 = 0 + unsuitable_atoms_damage = 15 + + health = 150 // Point of human crit, as of commenting + maxHealth = 150 + + // Most humans leave a corpse + var/corpse = null + +/mob/living/simple_mob/humanoid/death() + ..() + if(corpse) + new corpse (src.loc) + qdel(src) + return \ No newline at end of file diff --git a/code/modules/mob/living/simple_mob/subtypes/humanoid/mercs/mercs.dm b/code/modules/mob/living/simple_mob/subtypes/humanoid/mercs/mercs.dm new file mode 100644 index 0000000000..514f45df12 --- /dev/null +++ b/code/modules/mob/living/simple_mob/subtypes/humanoid/mercs/mercs.dm @@ -0,0 +1,278 @@ +/////////////////////////////// +// Merc Mobs Go Here +/////////////////////////////// + +// Probably shouldn't use this directly, there are a bunch of sub-classes that are more complete. +/mob/living/simple_mob/humanoid/merc + name = "mercenary" + desc = "A tough looking heavily-armed individual." + tt_desc = "E Homo sapiens" + icon_state = "syndicate" + icon_living = "syndicate" + icon_dead = "syndicate_dead" + icon_gib = "syndicate_gib" + + faction = "syndicate" + movement_cooldown = 4 + + status_flags = 0 + + response_help = "pokes" + response_disarm = "shoves" + response_harm = "hits" + + harm_intent_damage = 5 + melee_damage_lower = 15 //Tac Knife damage + melee_damage_upper = 15 + attack_sharp = 1 + attack_edge = 1 + attacktext = list("slashed", "stabbed") + armor = list(melee = 40, bullet = 30, laser = 30, energy = 10, bomb = 10, bio = 100, rad = 100) // Same armor values as the vest they drop, plus simple mob immunities + + corpse = /obj/effect/landmark/mobcorpse/syndicatesoldier + loot_list = list(/obj/item/weapon/material/knife/tacknife = 100) // Might as well give it the knife + + ai_holder_type = /datum/ai_holder/simple_mob/merc + say_list_type = /datum/say_list/merc + + // Grenade special attack vars + var/grenade_type = /obj/item/weapon/grenade/concussion + special_attack_cooldown = 45 SECONDS + special_attack_min_range = 2 + special_attack_max_range = 7 + +//////////////////////////////// +// Grenade Attack +//////////////////////////////// + +// Any merc can use this, just set special_attack_charges to a positive value + +// Check if we should bother with the grenade +/mob/living/simple_mob/humanoid/merc/should_special_attack(atom/A) + var/mob_count = 0 // Are there enough mobs to consider grenading? + var/turf/T = get_turf(A) + for(var/mob/M in range(T, 2)) + if(M.faction == faction) // Don't grenade our friends + return FALSE + if(M in oview(src, special_attack_max_range)) // And lets check if we can actually see at least two people before we throw a grenade + if(!M.stat) // Dead things don't warrant a grenade + mob_count ++ + if(mob_count < 2) + return FALSE + else + return TRUE + +// Yes? Throw the grenade +/mob/living/simple_mob/humanoid/merc/do_special_attack(atom/A) + set waitfor = FALSE + set_AI_busy(TRUE) + + var/obj/item/weapon/grenade/G = new grenade_type(get_turf(src)) + if(istype(G)) + G.throw_at(A, G.throw_range, G.throw_speed, src) + G.attack_self(src) + special_attack_charges = max(special_attack_charges-1, 0) + + set_AI_busy(FALSE) + + +//////////////////////////////// +// Merc AI Types +//////////////////////////////// +/datum/ai_holder/simple_mob/merc + threaten = TRUE + returns_home = TRUE // Stay close to the base... + wander = TRUE // ... but "patrol" a little. + +/datum/ai_holder/simple_mob/merc/ranged + pointblank = TRUE // They get close? Just shoot 'em! + firing_lanes = TRUE // But not your buddies! + conserve_ammo = TRUE // And don't go wasting bullets! + + +//////////////////////////////// +// Melee +//////////////////////////////// +/mob/living/simple_mob/humanoid/merc/melee // Defined in case we add non-sword-and-board mercs + loot_list = list(/obj/item/weapon/material/knife/tacknife = 100) + +// Sword and Shield Merc +/mob/living/simple_mob/humanoid/merc/melee/sword + icon_state = "syndicatemelee" + icon_living = "syndicatemelee" + + melee_damage_lower = 30 + melee_damage_upper = 30 + attack_armor_pen = 50 + attack_sharp = 1 + attack_edge = 1 + attacktext = list("slashed") + + loot_list = list(/obj/item/weapon/melee/energy/sword/red = 100, /obj/item/weapon/shield/energy = 100) + +// They have a shield, so they try to block +/mob/living/simple_mob/humanoid/merc/melee/sword/attackby(var/obj/item/O as obj, var/mob/user as mob) + if(O.force) + if(prob(20)) + visible_message("\The [src] blocks \the [O] with its shield!") + if(user) + ai_holder.react_to_attack(user) + return + else + ..() + else + to_chat(user, "This weapon is ineffective, it does no damage.") + visible_message("\The [user] gently taps [src] with \the [O].") + +/mob/living/simple_mob/humanoid/merc/melee/sword/bullet_act(var/obj/item/projectile/Proj) + if(!Proj) return + if(prob(35)) + visible_message("[src] blocks [Proj] with its shield!") + if(Proj.firer) + ai_holder.react_to_attack(Proj.firer) + return + else + ..() + + +//////////////////////////////// +// Ranged +//////////////////////////////// + +// Base Ranged Merc, so we don't have to redefine a million vars for every subtype. Uses a pistol. +/mob/living/simple_mob/humanoid/merc/ranged + icon_state = "syndicateranged" + icon_living = "syndicateranged" + projectiletype = /obj/item/projectile/bullet/pistol/medium +// casingtype = /obj/item/ammo_casing/spent //Makes infinite stacks of bullets when put in PoIs. + projectilesound = 'sound/weapons/Gunshot_light.ogg' + loot_list = list(/obj/item/weapon/gun/projectile/colt = 100) + + needs_reload = TRUE + reload_max = 7 // Not the best default, but it fits the pistol + ai_holder_type = /datum/ai_holder/simple_mob/merc/ranged + +// C20r SMG +/mob/living/simple_mob/humanoid/merc/ranged/smg + icon_state = "syndicateranged_smg" + icon_living = "syndicateranged_smg" + + loot_list = list(/obj/item/weapon/gun/projectile/automatic/c20r = 100) + + base_attack_cooldown = 5 // Two attacks a second or so. + reload_max = 20 + +// Laser Rifle +/mob/living/simple_mob/humanoid/merc/ranged/laser + icon_state = "syndicateranged_laser" + icon_living = "syndicateranged_laser" + projectiletype = /obj/item/projectile/beam/midlaser + projectilesound = 'sound/weapons/Laser.ogg' + + loot_list = list(/obj/item/weapon/gun/energy/laser = 100) + + reload_max = 10 + +// Ion Rifle +/mob/living/simple_mob/humanoid/merc/ranged/ionrifle + icon_state = "syndicateranged_ionrifle" + icon_living = "syndicateranged_ionrifle" + projectiletype = /obj/item/projectile/ion + projectilesound = 'sound/weapons/Laser.ogg' + + loot_list = list(/obj/item/weapon/gun/energy/ionrifle = 100) + + reload_max = 10 + +// Grenadier, Basically a miniboss +/mob/living/simple_mob/humanoid/merc/ranged/grenadier + icon_state = "syndicateranged_shotgun" + icon_living = "syndicateranged_shotgun" + projectiletype = /obj/item/projectile/bullet/pellet/shotgun // Buckshot + projectilesound = 'sound/weapons/Gunshot_shotgun.ogg' + + loot_list = list(/obj/item/weapon/gun/projectile/shotgun/pump = 100) + + reload_max = 4 + reload_time = 1.5 SECONDS // It's a shotgun, it takes a moment + + special_attack_charges = 5 + + +//////////////////////////////// +// Space Mercs +//////////////////////////////// + +// Sword Space Merc +/mob/living/simple_mob/humanoid/merc/melee/sword/space + name = "syndicate commando" + icon_state = "syndicatemeleespace" + icon_living = "syndicatemeleespace" + + movement_cooldown = 0 + + armor = list(melee = 60, bullet = 50, laser = 30, energy = 15, bomb = 35, bio = 100, rad = 100) // Same armor as their voidsuit + + min_oxy = 0 + max_oxy = 0 + min_tox = 0 + max_tox = 0 + min_co2 = 0 + max_co2 = 0 + min_n2 = 0 + max_n2 = 0 + minbodytemp = 0 + + corpse = /obj/effect/landmark/mobcorpse/syndicatecommando + +/mob/living/simple_mob/humanoid/merc/melee/sword/space/Process_Spacemove(var/check_drift = 0) + return + +// Ranged Space Merc +/mob/living/simple_mob/humanoid/merc/ranged/space + name = "syndicate sommando" + icon_state = "syndicaterangedpsace" + icon_living = "syndicaterangedpsace" + + movement_cooldown = 0 + + min_oxy = 0 + max_oxy = 0 + min_tox = 0 + max_tox = 0 + min_co2 = 0 + max_co2 = 0 + min_n2 = 0 + max_n2 = 0 + minbodytemp = 0 + + corpse = /obj/effect/landmark/mobcorpse/syndicatecommando + +/mob/living/simple_mob/humanoid/merc/ranged/space/Process_Spacemove(var/check_drift = 0) + return + +//////////////////////////////// +// PoI Mercs +//////////////////////////////// + +// None of these drop weapons, until we have a better way to balance them +/mob/living/simple_mob/humanoid/merc/melee/poi + loot_list = list() + +/mob/living/simple_mob/humanoid/merc/melee/sword/poi + loot_list = list() + +/mob/living/simple_mob/humanoid/merc/ranged/poi + loot_list = list() + +/mob/living/simple_mob/humanoid/merc/ranged/smg/poi + loot_list = list() + +/mob/living/simple_mob/humanoid/merc/ranged/laser/poi + loot_list = list() + +/mob/living/simple_mob/humanoid/merc/ranged/ionrifle + loot_list = list() + +/mob/living/simple_mob/humanoid/merc/ranged/grenadier/poi + loot_list = list() \ No newline at end of file diff --git a/code/modules/mob/living/simple_mob/subtypes/humanoid/pirates.dm b/code/modules/mob/living/simple_mob/subtypes/humanoid/pirates.dm new file mode 100644 index 0000000000..cc16cebedc --- /dev/null +++ b/code/modules/mob/living/simple_mob/subtypes/humanoid/pirates.dm @@ -0,0 +1,40 @@ +/mob/living/simple_mob/humanoid/pirate + name = "Pirate" + desc = "Does what he wants cause a pirate is free." + tt_desc = "E Homo sapiens" + icon_state = "piratemelee" + icon_living = "piratemelee" + icon_dead = "piratemelee_dead" + + faction = "pirate" + + response_help = "pushes" + response_disarm = "shoves" + response_harm = "hits" + + harm_intent_damage = 5 + melee_damage_lower = 30 + melee_damage_upper = 30 + attack_armor_pen = 50 + attack_sharp = 1 + attack_edge = 1 + + attacktext = list("slashed") + attack_sound = 'sound/weapons/bladeslice.ogg' + + loot_list = list(/obj/item/weapon/melee/energy/sword/pirate = 100) + + corpse = /obj/effect/landmark/mobcorpse/pirate + +/mob/living/simple_mob/humanoid/pirate/ranged + name = "Pirate Gunner" + icon_state = "pirateranged" + icon_living = "pirateranged" + icon_dead = "piratemelee_dead" + + projectiletype = /obj/item/projectile/beam + projectilesound = 'sound/weapons/laser.ogg' + + loot_list = list(/obj/item/weapon/gun/energy/laser = 100) + + corpse = /obj/effect/landmark/mobcorpse/pirate/ranged \ No newline at end of file diff --git a/code/modules/mob/living/simple_mob/subtypes/humanoid/russian.dm b/code/modules/mob/living/simple_mob/subtypes/humanoid/russian.dm new file mode 100644 index 0000000000..ce679f90de --- /dev/null +++ b/code/modules/mob/living/simple_mob/subtypes/humanoid/russian.dm @@ -0,0 +1,35 @@ +/mob/living/simple_mob/humanoid/russian + name = "russian" + desc = "For the Motherland!" + tt_desc = "E Homo sapiens" + icon_state = "russianmelee" + icon_living = "russianmelee" + icon_dead = "russianmelee_dead" + icon_gib = "syndicate_gib" + + faction = "russian" + + response_help = "pokes" + response_disarm = "shoves" + response_harm = "hits" + + harm_intent_damage = 5 + melee_damage_lower = 15 + melee_damage_upper = 15 + attacktext = list("punched") + + loot_list = list(/obj/item/weapon/material/knife = 100) + + corpse = /obj/effect/landmark/mobcorpse/russian + +/mob/living/simple_mob/humanoid/russian/ranged + icon_state = "russianranged" + icon_living = "russianranged" + + projectiletype = /obj/item/projectile/bullet + casingtype = /obj/item/ammo_casing/spent + projectilesound = 'sound/weapons/Gunshot4.ogg' + + loot_list = list(/obj/item/weapon/gun/projectile/revolver/mateba = 100) + + corpse = /obj/effect/landmark/mobcorpse/russian/ranged \ No newline at end of file diff --git a/code/modules/mob/living/simple_mob/subtypes/illusion/illusion.dm b/code/modules/mob/living/simple_mob/subtypes/illusion/illusion.dm new file mode 100644 index 0000000000..19ee1e3a9d --- /dev/null +++ b/code/modules/mob/living/simple_mob/subtypes/illusion/illusion.dm @@ -0,0 +1,116 @@ +// Illusion type mobs pretend to be other things visually, and generally cannot be harmed as they're not 'real'. + +/mob/living/simple_mob/illusion + name = "illusion" + desc = "If you can read me, the game broke. Please report this to a coder." + + resistance = 1000 // Holograms are tough. + heat_resist = 1 + cold_resist = 1 + shock_resist = 1 + poison_resist = 1 + + movement_cooldown = 0 + mob_bump_flag = 0 // If the illusion can't be swapped it will be obvious. + + response_help = "pushes a hand through" + response_disarm = "tried to disarm" + response_harm = "tried to punch" + + mob_class = MOB_CLASS_ILLUSION + + ai_holder_type = /datum/ai_holder/simple_mob/inert/astar // Gets controlled manually by technomancers/admins, with AI pathfinding assistance. + + var/atom/movable/copying = null // The thing we're trying to look like. + var/realistic = FALSE // If true, things like bullets and weapons will hit it, to be a bit more convincing from a distance. + +/mob/living/simple_mob/illusion/update_icon() // We don't want the appearance changing AT ALL unless by copy_appearance(). + return + +/mob/living/simple_mob/illusion/proc/copy_appearance(atom/movable/thing_to_copy) + if(!thing_to_copy) + return FALSE + appearance = thing_to_copy.appearance + copying = thing_to_copy + density = thing_to_copy.density // So you can't bump into objects that aren't supposed to be dense. + catalogue_data = thing_to_copy.catalogue_data.Copy() + catalogue_delay = thing_to_copy.catalogue_delay + return TRUE + +// Because we can't perfectly duplicate some examine() output, we directly examine the AM it is copying. It's messy but +// this is to prevent easy checks from the opposing force. +/mob/living/simple_mob/illusion/examine(mob/user) + if(copying) + copying.examine(user) + return + ..() + +/mob/living/simple_mob/illusion/bullet_act(obj/item/projectile/P) + if(!P) + return + + if(realistic) + return ..() + + return PROJECTILE_FORCE_MISS + +/mob/living/simple_mob/illusion/attack_hand(mob/living/carbon/human/M) + if(!realistic) + playsound(loc, 'sound/weapons/punchmiss.ogg', 25, 1, -1) + visible_message(span("warning", "\The [M]'s hand goes through \the [src]!")) + return + else + switch(M.a_intent) + if(I_HELP) + var/datum/gender/T = gender_datums[src.get_visible_gender()] + M.visible_message( + span("notice", "\The [M] hugs [src] to make [T.him] feel better!"), \ + span("notice", "You hug [src] to make [T.him] feel better!") + ) // slightly redundant as at the moment most mobs still use the normal gender var, but it works and future-proofs it + playsound(src.loc, 'sound/weapons/thudswoosh.ogg', 50, 1, -1) + + if(I_DISARM) + playsound(loc, 'sound/weapons/punchmiss.ogg', 25, 1, -1) + visible_message(span("danger", "\The [M] attempted to disarm [src]!")) + M.do_attack_animation(src) + + if(I_GRAB) + ..() + + if(I_HURT) + adjustBruteLoss(harm_intent_damage) + M.visible_message(span("danger", "\The [M] [response_harm] \the [src]")) + M.do_attack_animation(src) + +/mob/living/simple_mob/illusion/hit_with_weapon(obj/item/I, mob/living/user, effective_force, hit_zone) + if(realistic) + return ..() + + playsound(loc, 'sound/weapons/punchmiss.ogg', 25, 1, -1) + visible_message(span("warning", "\The [user]'s [I] goes through \the [src]!")) + return FALSE + +/mob/living/simple_mob/illusion/ex_act() + return + +// Try to have the same tooltip, or else it becomes really obvious which one is fake. +/mob/living/simple_mob/illusion/get_nametag_name(mob/user) + if(copying) + return copying.get_nametag_name(user) + +/mob/living/simple_mob/illusion/get_nametag_desc(mob/user) + if(copying) + return copying.get_nametag_desc(user) + +// Cataloguer stuff. I don't think this will actually come up but better safe than sorry. +/mob/living/simple_mob/illusion/get_catalogue_data() + if(copying) + return copying.get_catalogue_data() + +/mob/living/simple_mob/illusion/can_catalogue() + if(copying) + return copying.can_catalogue() + +/mob/living/simple_mob/illusion/get_catalogue_delay() + if(copying) + return copying.get_catalogue_delay() \ No newline at end of file diff --git a/code/modules/mob/living/simple_mob/subtypes/mechanical/combat_drone.dm b/code/modules/mob/living/simple_mob/subtypes/mechanical/combat_drone.dm new file mode 100644 index 0000000000..6766cd67d3 --- /dev/null +++ b/code/modules/mob/living/simple_mob/subtypes/mechanical/combat_drone.dm @@ -0,0 +1,104 @@ +/* + Combat drones have a rapid ranged attack, and have a projectile shield. + They are rather slow, but attempt to 'kite' its target. + A solid hit with an EMP grenade will kill the shield instantly. +*/ + +/datum/category_item/catalogue/technology/drone/combat_drone + name = "Drone - Combat Drone" + desc = "Deadly to anyone it perceives as an enemy, this drone model tries to capture the ideal balance \ + between effectiveness, versatility, and expendability. It possesses sophisticated technology that allows it \ + to both be dangerous, and be less costly to build compared to alternatives such as exosuits. It was designed \ + for combat in space, however they are also able to function inside a gravity well, due to a favorable \ + thrust-to-weight ratio.\ +

      \ + One notable feature of this model is its ability to rapidly fire lasers at the target. This is accomplished \ + with its array of lasers installed on the left and right side of the drone, with each side housing three \ + laser emitters. The drone cycles between the six different emitters each time it fires a laser, in order to avoid \ + overheating before the integrated heatsinks are able to remove the heat, \ + thus allowing for a higher than average rate of fire. This ability allows for the drone to act in a suppressive \ + manner against personnel, or to provide a general 'shock and awe' factor when swarms of drones are firing at once.\ +

      \ + The drone's frame is lightweight, as required due to the type of thrusters integrated into the frame. \ + Unfortunately, this comes at the cost of being less sturdy. To counteract this vulnerability, the \ + drone has an integrated shield projector, which is tuned to allow the shield to intercept projectiles, \ + while allowing its own lasers to pass through unaffected.\ +

      \ + Despite these qualities, one significant flaw this model has, is that its source of energy is considerably \ + less powerful than what is standard, which cuts into the amount of energy that can go into both the lasers and the shields. \ + Generally, the solution to this flaw is to add more drones until it doesn't matter anymore." + value = CATALOGUER_REWARD_MEDIUM + +/mob/living/simple_mob/mechanical/combat_drone + name = "combat drone" + desc = "An automated combat drone armed with state of the art weaponry and shielding." + catalogue_data = list(/datum/category_item/catalogue/technology/drone/combat_drone) + + icon_state = "drone" + icon_living = "drone" + icon_dead = "drone_dead" + has_eye_glow = TRUE + + faction = "malf_drone" + + maxHealth = 50 // Shield has 150 for total of 200. + health = 50 + movement_cooldown = 5 + hovering = TRUE + + base_attack_cooldown = 5 + projectiletype = /obj/item/projectile/beam/drone + projectilesound = 'sound/weapons/laser3.ogg' + + response_help = "pokes" + response_disarm = "gently pushes aside" + response_harm = "hits" + + ai_holder_type = /datum/ai_holder/simple_mob/ranged/kiting/threatening + say_list_type = /datum/say_list/malf_drone + + var/datum/effect/effect/system/ion_trail_follow/ion_trail = null + var/obj/item/shield_projector/shields = null + +/mob/living/simple_mob/mechanical/combat_drone/Initialize() + ion_trail = new + ion_trail.set_up(src) + ion_trail.start() + + shields = new /obj/item/shield_projector/rectangle/automatic/drone(src) + return ..() + +/mob/living/simple_mob/mechanical/combat_drone/Destroy() + QDEL_NULL(ion_trail) + QDEL_NULL(shields) + return ..() + +/mob/living/simple_mob/mechanical/combat_drone/death() + ..(null,"suddenly breaks apart.") + qdel(src) + +/mob/living/simple_mob/mechanical/combat_drone/Process_Spacemove(var/check_drift = 0) + return TRUE + +/obj/item/projectile/beam/drone + damage = 10 + +/obj/item/shield_projector/rectangle/automatic/drone + shield_health = 150 + max_shield_health = 150 + shield_regen_delay = 10 SECONDS + shield_regen_amount = 10 + size_x = 1 + size_y = 1 + +// A slightly easier drone, for POIs. +// Difference is that it should not be faster than you. +/mob/living/simple_mob/mechanical/combat_drone/lesser + desc = "An automated combat drone with an aged apperance." + movement_cooldown = 10 + + +// This one is the type spawned by the random event. +// It won't wander away from its spawn point +/mob/living/simple_mob/mechanical/combat_drone/event + ai_holder_type = /datum/ai_holder/simple_mob/ranged/kiting/threatening/event diff --git a/code/modules/mob/living/simple_mob/subtypes/mechanical/golem.dm b/code/modules/mob/living/simple_mob/subtypes/mechanical/golem.dm new file mode 100644 index 0000000000..a8b918fc71 --- /dev/null +++ b/code/modules/mob/living/simple_mob/subtypes/mechanical/golem.dm @@ -0,0 +1,152 @@ +// The GOLEM is a spell-flinging synthetic. + +/mob/living/simple_mob/mechanical/technomancer_golem + name = "unknown synthetic" + desc = "A rather unusual looking synthetic." + icon = 'icons/mob/mob.dmi' + icon_state = "golem" + health = 300 + maxHealth = 300 + + faction = "golem" + + response_help = "pets" + response_disarm = "pushes away" + response_harm = "punches" + harm_intent_damage = 3 + friendly = "hugs" + + melee_damage_lower = 30 // It has a built in esword. + melee_damage_upper = 30 + attack_sound = 'sound/weapons/blade1.ogg' + attacktext = list("slashed") + melee_attack_delay = 0.5 SECONDS // Even has custom attack animations. + ranged_attack_delay = 0.5 SECONDS + special_attack_delay = 1 SECOND + + special_attack_min_range = 0 + special_attack_max_range = 7 + + ai_holder_type = /datum/ai_holder/simple_mob/melee + + var/obj/item/weapon/technomancer_core/golem/core = null + var/obj/item/weapon/spell/active_spell = null // Shield and ranged spells + var/mob/living/master = null + var/casting = FALSE // Used to ensure the correct animation is played. Testing if a spell exists won't always work as some spells delete themselves upon use. + + var/list/known_spells = list( + "beam" = /obj/item/weapon/spell/projectile/beam, + "chain lightning" = /obj/item/weapon/spell/projectile/chain_lightning, + "force missile" = /obj/item/weapon/spell/projectile/force_missile, + "ionic bolt" = /obj/item/weapon/spell/projectile/ionic_bolt, + "lightning" = /obj/item/weapon/spell/projectile/lightning, + "blink" = /obj/item/weapon/spell/blink, + "dispel" = /obj/item/weapon/spell/dispel, + "oxygenate" = /obj/item/weapon/spell/oxygenate, + "mend life" = /obj/item/weapon/spell/modifier/mend_life, + "mend synthetic" = /obj/item/weapon/spell/modifier/mend_synthetic, + "mend organs" = /obj/item/weapon/spell/mend_organs, + "purify" = /obj/item/weapon/spell/modifier/purify, + "resurrect" = /obj/item/weapon/spell/resurrect, + "passwall" = /obj/item/weapon/spell/passwall, + "repel missiles" = /obj/item/weapon/spell/modifier/repel_missiles, + "corona" = /obj/item/weapon/spell/modifier/corona, + "haste" = /obj/item/weapon/spell/modifier/haste + ) + +/mob/living/simple_mob/mechanical/technomancer_golem/Initialize() + core = new(src) + return ..() + +/mob/living/simple_mob/mechanical/technomancer_golem/Destroy() + qdel(core) + return ..() + +/mob/living/simple_mob/mechanical/technomancer_golem/unref_spell() + active_spell = null + return ..() + +/mob/living/simple_mob/mechanical/technomancer_golem/death() + ..() + visible_message("\The [src] disintegrates!") + new /obj/effect/decal/cleanable/blood/gibs/robot(src.loc) + var/datum/effect/effect/system/spark_spread/s = new /datum/effect/effect/system/spark_spread + s.set_up(3, 1, src) + s.start() + qdel(src) + +/mob/living/simple_mob/mechanical/technomancer_golem/place_spell_in_hand(var/path) + if(!path || !ispath(path)) + return FALSE + if(active_spell) + qdel(active_spell) + + active_spell = new path(src) + +/mob/living/simple_mob/mechanical/technomancer_golem/verb/test_giving_spells() + var/choice = input(usr, "What spell?", "Give spell") as null|anything in known_spells + if(choice) + place_spell_in_hand(known_spells[choice]) + else + qdel(active_spell) + +/mob/living/simple_mob/mechanical/technomancer_golem/get_technomancer_core() + return core + +/mob/living/simple_mob/mechanical/technomancer_golem/can_special_attack(atom/A) + if(active_spell) // Don't bother checking everything else if no spell is ready. + return ..() + return FALSE + +/mob/living/simple_mob/mechanical/technomancer_golem/should_special_attack(atom/A) + return instability < 50 // Don't kill ourselves by casting everything. + + +/mob/living/simple_mob/mechanical/technomancer_golem/do_special_attack(atom/A) + var/proximity = Adjacent(A) + if(active_spell) + if(proximity && active_spell.cast_methods & CAST_MELEE) // Use melee method if available and close enough. + return active_spell.on_melee_cast(A, src) + else if(active_spell.cast_methods & CAST_RANGED) // Otherwise use ranged if possible. Will also work for point-blank range. + return active_spell.on_ranged_cast(A, src) + return ..() + +/mob/living/simple_mob/mechanical/technomancer_golem/melee_pre_animation(atom/A) + if(active_spell && active_spell.cast_methods & CAST_MELEE|CAST_RANGED) // If they're trying to melee-cast a spell, use the special animation instead. + special_pre_animation(A) + return + + flick("golem_pre_melee", src) // To force the animation to restart. + icon_living = "golem_pre_melee" // The animation will hold after this point until melee_post_animation() gets called. + icon_state = "golem_pre_melee" + setClickCooldown(2) + +/mob/living/simple_mob/mechanical/technomancer_golem/melee_post_animation(atom/A) + if(casting) // Some spells delete themselves when used, so we use a different variable set earlier instead. + special_post_animation(A) + return + + flick("golem_post_melee", src) + icon_living = "golem" + icon_state = "golem" + setClickCooldown(6) + +/mob/living/simple_mob/mechanical/technomancer_golem/ranged_pre_animation(atom/A) + flick("golem_pre_ranged", src) + icon_living = "golem_pre_ranged" + icon_state = "golem_pre_ranged" + setClickCooldown(5) + +/mob/living/simple_mob/mechanical/technomancer_golem/ranged_post_animation(atom/A) + flick("golem_post_ranged", src) + icon_living = "golem" + icon_state = "golem" + setClickCooldown(5) + +/mob/living/simple_mob/mechanical/technomancer_golem/special_pre_animation(atom/A) + casting = TRUE + ranged_pre_animation(A) // Both have the same animation. + +/mob/living/simple_mob/mechanical/technomancer_golem/special_post_animation(atom/A) + casting = FALSE + ranged_post_animation(A) \ No newline at end of file diff --git a/code/modules/mob/living/simple_mob/subtypes/mechanical/hivebot/hivebot.dm b/code/modules/mob/living/simple_mob/subtypes/mechanical/hivebot/hivebot.dm new file mode 100644 index 0000000000..c90d0413be --- /dev/null +++ b/code/modules/mob/living/simple_mob/subtypes/mechanical/hivebot/hivebot.dm @@ -0,0 +1,54 @@ +// Hivebots are tuned towards how many default lasers are needed to kill them. +// As such, if laser damage is ever changed, you should change this define. +#define LASERS_TO_KILL * 40 + +/mob/living/simple_mob/mechanical/hivebot + name = "hivebot" + desc = "A robot. It appears to be somewhat resilient, but lacks a true weapon." + icon = 'icons/mob/hivebot.dmi' + icon_state = "basic" + icon_living = "basic" + + faction = "hivebot" + + maxHealth = 3 LASERS_TO_KILL + health = 3 LASERS_TO_KILL + water_resist = 0.5 + movement_sound = 'sound/effects/servostep.ogg' + + attacktext = list("clawed") + projectilesound = 'sound/weapons/Gunshot_old.ogg' + + ai_holder_type = /datum/ai_holder/simple_mob/hivebot + say_list_type = /datum/say_list/hivebot + + +/mob/living/simple_mob/mechanical/hivebot/death() + ..() + visible_message(span("warning","\The [src] blows apart!")) + new /obj/effect/decal/cleanable/blood/gibs/robot(src.loc) + var/datum/effect/effect/system/spark_spread/s = new /datum/effect/effect/system/spark_spread + s.set_up(3, 1, src) + s.start() + qdel(src) + +// The hivebot's default projectile. +/obj/item/projectile/bullet/hivebot + damage = 10 + damage_type = BRUTE + sharp = FALSE + edge = FALSE + +/mob/living/simple_mob/mechanical/hivebot/swarm + name = "swarm hivebot" + desc = "A robot. It looks fragile and weak." + maxHealth = 1 LASERS_TO_KILL + health = 1 LASERS_TO_KILL + melee_damage_lower = 8 + melee_damage_upper = 8 + +/datum/ai_holder/simple_mob/hivebot + pointblank = TRUE + conserve_ammo = TRUE + firing_lanes = TRUE + can_flee = FALSE // Fearless dumb machines. \ No newline at end of file diff --git a/code/modules/mob/living/simple_mob/subtypes/mechanical/hivebot/ranged_damage.dm b/code/modules/mob/living/simple_mob/subtypes/mechanical/hivebot/ranged_damage.dm new file mode 100644 index 0000000000..5e4d877751 --- /dev/null +++ b/code/modules/mob/living/simple_mob/subtypes/mechanical/hivebot/ranged_damage.dm @@ -0,0 +1,147 @@ +// These hivebots are intended for general damage causing, at range. + +/mob/living/simple_mob/mechanical/hivebot/ranged_damage + maxHealth = 2 LASERS_TO_KILL // 60 health + health = 2 LASERS_TO_KILL + projectiletype = /obj/item/projectile/bullet/hivebot + +// The regular ranged hivebot, that fires somewhat weak projectiles. +/mob/living/simple_mob/mechanical/hivebot/ranged_damage/basic + name = "ranged hivebot" + desc = "A robot with a makeshift integrated ballistic weapon." + + +// This one shoots quickly, and is considerably more dangerous. +/mob/living/simple_mob/mechanical/hivebot/ranged_damage/rapid + name = "rapid hivebot" + desc = "A robot with a crude but deadly integrated rifle." + base_attack_cooldown = 5 // Two attacks a second or so. + player_msg = "You have a rapid fire attack." + + +// Shoots deadly lasers. +/mob/living/simple_mob/mechanical/hivebot/ranged_damage/laser + name = "laser hivebot" + desc = "A robot with a photonic weapon integrated into itself." + projectiletype = /obj/item/projectile/beam/blue + projectilesound = 'sound/weapons/Laser.ogg' + player_msg = "You have a laser attack." + + +// Shoots EMPs, to screw over other robots. +/mob/living/simple_mob/mechanical/hivebot/ranged_damage/ion + name = "ionic hivebot" + desc = "A robot with an electromagnetic pulse projector." + icon_state = "yellow" + icon_living = "yellow" + + projectiletype = /obj/item/projectile/ion + projectilesound = 'sound/weapons/Laser.ogg' + player_msg = "You have a ranged ion attack, which is very strong against other synthetics.
      \ + Be careful to not hit yourself or your team, as it will affect you as well." + +// Beefy and ranged. +/mob/living/simple_mob/mechanical/hivebot/ranged_damage/strong + name = "strong hivebot" + desc = "A robot with a crude ballistic weapon and strong armor." + maxHealth = 4 LASERS_TO_KILL // 120 health. + health = 4 LASERS_TO_KILL + melee_damage_lower = 15 + melee_damage_upper = 15 + +// Also beefy, but tries to stay at their 'home', ideal for base defense. +/mob/living/simple_mob/mechanical/hivebot/ranged_damage/strong/guard + name = "guard hivebot" + desc = "A robot that seems to be guarding something." +// ai_holder_type = todo + + +// Inflicts a damage-over-time modifier on things it hits. +// It is able to stack with repeated attacks. +/mob/living/simple_mob/mechanical/hivebot/ranged_damage/dot + name = "ember hivebot" + desc = "A robot that appears to utilize fire to cook their enemies." + icon_state = "red" + icon_living = "red" + + projectiletype = /obj/item/projectile/fire + heat_resist = 1 + player_msg = "Your attacks inflict a damage over time effect, that will \ + harm your target slowly. The effect stacks with further attacks.
      \ + You are also immune to fire." + +/obj/item/projectile/fire + name = "ember" + icon = 'icons/effects/effects.dmi' + icon_state = "explosion_particle" + modifier_type_to_apply = /datum/modifier/fire + modifier_duration = 6 SECONDS // About 15 damage per stack, as Life() ticks every two seconds. + damage = 0 + nodamage = TRUE + + +// Close to mid-ranged shooter that arcs over other things, ideal if allies are in front of it. +// Difference from siege hivebots is that siege hivebots have limited charges for their attacks, are very long range, and \ +// the projectiles have an AoE component, where as backline hivebots do not. +/mob/living/simple_mob/mechanical/hivebot/ranged_damage/backline + name = "backline hivebot" + desc = "A robot that can fire short-ranged projectiles over their allies." + projectiletype = /obj/item/projectile/arc/blue_energy + projectilesound = 'sound/weapons/Laser.ogg' + player_msg = "Your attacks are short-ranged, but can arc over obstructions such as allies \ + or barriers." + +/obj/item/projectile/arc/blue_energy + name = "energy missile" + icon_state = "force_missile" + damage = 15 // A bit stronger since arcing projectiles are much easier to avoid than traditional ones. + damage_type = BURN + +// Very long ranged hivebot that rains down hell. +// Their projectiles arc, meaning they go over everything until it hits the ground. +// This means they're somewhat easier to avoid, but go over most defenses (like allies, or barriers), +// and tend to do more harm than a regular projectile, due to being AoE. +/mob/living/simple_mob/mechanical/hivebot/ranged_damage/siege + name = "siege engine hivebot" + desc = "A large robot capable of delivering long range bombardment." + projectiletype = /obj/item/projectile/arc/test + icon_scale = 2 + icon_state = "red" + icon_living = "red" + + player_msg = "You are capable of firing very long range bombardment attacks.
      \ + To use, click on a tile or enemy at a long range. Note that the projectile arcs in the air, \ + so it will fly over everything inbetween you and the target.
      \ + The bombardment is most effective when attacking a static structure, as it cannot avoid your fire." + +// Fires EMP blasts. +/mob/living/simple_mob/mechanical/hivebot/ranged_damage/siege/emp + name = "ionic artillery hivebot" + desc = "A large robot capable of annihilating electronics from a long distance." + projectiletype = /obj/item/projectile/arc/emp_blast + +/obj/item/projectile/arc/emp_blast + name = "emp blast" + icon_state = "bluespace" + +/obj/item/projectile/arc/emp_blast/on_impact(turf/T) + empulse(T, 2, 4, 7, 10) // Normal EMP grenade. + return ..() + +/obj/item/projectile/arc/emp_blast/weak/on_impact(turf/T) + empulse(T, 1, 2, 3, 4) // Sec EMP grenade. + return ..() + + +// Fires shots that irradiate the tile hit. +/mob/living/simple_mob/mechanical/hivebot/ranged_damage/siege/radiation + name = "desolator hivebot" + desc = "A large robot capable of irradiating a large area from afar." + projectiletype = /obj/item/projectile/arc/radioactive + + +// Essentially a long ranged frag grenade. +/mob/living/simple_mob/mechanical/hivebot/ranged_damage/siege/fragmentation + name = "anti-personnel artillery hivebot" + desc = "A large robot capable of delivering fragmentation shells to rip apart their fleshy enemies." + projectiletype = /obj/item/projectile/arc/fragmentation \ No newline at end of file diff --git a/code/modules/mob/living/simple_mob/subtypes/mechanical/hivebot/support.dm b/code/modules/mob/living/simple_mob/subtypes/mechanical/hivebot/support.dm new file mode 100644 index 0000000000..243a67e4f5 --- /dev/null +++ b/code/modules/mob/living/simple_mob/subtypes/mechanical/hivebot/support.dm @@ -0,0 +1,87 @@ +// These hivebots help their team in various ways, and can be very powerful with allies, but are otherwise very weak when alone. + +/mob/living/simple_mob/mechanical/hivebot/support + icon_state = "white" + icon_living = "white" + attacktext = list("prodded") + movement_cooldown = 5 + melee_damage_lower = 2 + melee_damage_upper = 2 + + +// This hivebot supplies a general buff to nearby hivebots that improve their performance. +// Note that the commander itself does not receive the buff. +/mob/living/simple_mob/mechanical/hivebot/support/commander + name = "commander hivebot" + desc = "A robot that appears to be directing the others." + maxHealth = 5 LASERS_TO_KILL // 150 health + health = 5 LASERS_TO_KILL + player_msg = "You increase the performance of other hivebots near you passively.
      \ + You are otherwise very weak offensively." + +/mob/living/simple_mob/mechanical/hivebot/support/commander/handle_special() + for(var/mob/living/L in range(4, src)) + if(L == src) + continue // Don't buff ourselves. + if(IIsAlly(L) && L.isSynthetic()) // Don't buff enemies. + L.add_modifier(/datum/modifier/aura/hivebot_commander_buff, null, src) + +// Modifier added to friendly hivebots nearby. +// Boosts most stats by 30%. +// The boost is lost if the commander is too far away or dies. +/datum/modifier/aura/hivebot_commander_buff + name = "Strategicals" + on_created_text = "Signal established with commander. Optimizating combat performance..." + on_expired_text = "Lost signal to commander. Optimization halting." + stacks = MODIFIER_STACK_FORBID + aura_max_distance = 4 + mob_overlay_state = "signal_blue" + + disable_duration_percent = 0.7 + outgoing_melee_damage_percent = 1.3 + attack_speed_percent = 1.3 + accuracy = 30 + slowdown = -1 + evasion = 30 + +// Variant that automatically commands nearby allies to follow it when created. +// Useful to avoid having to manually set follow to a lot of hivebots that are gonna die in the next minute anyways. +/mob/living/simple_mob/mechanical/hivebot/support/commander/autofollow/Initialize() + for(var/mob/living/L in hearers(7, src)) + if(!L.ai_holder) + continue + if(L.faction != src.faction) + continue + var/datum/ai_holder/AI = L.ai_holder + AI.set_follow(src) + return ..() + + +// This hivebot adds charges to nearby allied hivebots that use the charge system for their special attacks. +// A charge is given to a nearby ally every so often. +// Charges cannot exceed the initial starting amount. +/mob/living/simple_mob/mechanical/hivebot/support/logistics + name = "logistics hivebot" + desc = "A robot that resupplies their allies." + maxHealth = 3 LASERS_TO_KILL // 90 health + health = 3 LASERS_TO_KILL + player_msg = "You passively restore 'charges' to allies with special abilities who are \ + limited to using them a specific number of times." + var/resupply_range = 5 + var/resupply_cooldown = 4 SECONDS + var/last_resupply = null + +/mob/living/simple_mob/mechanical/hivebot/support/logistics/handle_special() + if(last_resupply + resupply_cooldown > world.time) + return // On cooldown. + + for(var/mob/living/simple_mob/SM in hearers(resupply_range, src)) + if(SM == src) + continue // We don't use charges buuuuut in case that changes in the future... + if(IIsAlly(SM)) // Don't resupply enemies. + if(!isnull(SM.special_attack_charges) && SM.special_attack_charges < initial(SM.special_attack_charges)) + SM.special_attack_charges += 1 + to_chat(SM, span("notice", "\The [src] has resupplied you, and you can use your special ability one additional time.")) + to_chat(src, span("notice", "You have resupplied \the [SM].")) + last_resupply = world.time + break // Only one resupply per pulse. diff --git a/code/modules/mob/living/simple_mob/subtypes/mechanical/hivebot/tank.dm b/code/modules/mob/living/simple_mob/subtypes/mechanical/hivebot/tank.dm new file mode 100644 index 0000000000..007f190c04 --- /dev/null +++ b/code/modules/mob/living/simple_mob/subtypes/mechanical/hivebot/tank.dm @@ -0,0 +1,166 @@ +// These hivebots are harder to kill than normal, and are meant to protect their squad by +// distracting their enemies. This is done by being seen as very threatening. +// Their melee attacks weaken whatever they hit. + +/mob/living/simple_mob/mechanical/hivebot/tank + attacktext = list("prodded") + projectiletype = null // To force the AI to melee. + movement_cooldown = 10 + melee_damage_lower = 3 + melee_damage_upper = 3 + attack_sound = 'sound/weapons/Egloves.ogg' + +// All tank hivebots apply a modifier to their target, and force them to attack them if they're AI controlled. +/mob/living/simple_mob/mechanical/hivebot/tank/apply_melee_effects(atom/A) + if(isliving(A)) + var/mob/living/L = A + L.taunt(src, TRUE) + L.add_modifier(/datum/modifier/hivebot_weaken, 3 SECONDS) + +// Modifier applied to whatever a tank hivebot hits, intended to make the target do even less damage. +/datum/modifier/hivebot_weaken + name = "Shocked" + desc = "You feel less able to exert yourself after being prodded." + on_created_text = "You feel weak..." + on_expired_text = "You feel better." + stacks = MODIFIER_STACK_EXTEND + mob_overlay_state = "electricity" + + attack_speed_percent = 0.6 + outgoing_melee_damage_percent = 0.7 + accuracy = -40 + accuracy_dispersion = 1 + slowdown = 1 + evasion = -20 + +// This one is tanky by having a massive amount of health. +/mob/living/simple_mob/mechanical/hivebot/tank/meatshield + name = "bulky hivebot" + desc = "A large robot." + maxHealth = 10 LASERS_TO_KILL // 300 health + health = 10 LASERS_TO_KILL + icon_scale = 2 + player_msg = "You have a very large amount of health." + + +// This one is tanky by having armor. +/mob/living/simple_mob/mechanical/hivebot/tank/armored + name = "armored hivebot" + desc = "A robot clad in heavy armor." + maxHealth = 5 LASERS_TO_KILL // 150 health. + health = 5 LASERS_TO_KILL + icon_scale = 1.5 + player_msg = "You are heavily armored." + // Note that armor effectively makes lasers do about 9 damage instead of 30, + // so it has an effective health of ~16.6 LASERS_TO_KILL if regular lasers are used. + // Xrays will do much better against this. + armor = list( + "melee" = 40, + "bullet" = 40, + "laser" = 40, + "energy" = 30, + "bomb" = 30, + "bio" = 100, + "rad" = 100 + ) + armor_soak = list( + "melee" = 15, + "bullet" = 10, + "laser" = 15, + "energy" = 0, + "bomb" = 0, + "bio" = 0, + "rad" = 0 + ) + +/mob/living/simple_mob/mechanical/hivebot/tank/armored/anti_melee + name = "riot hivebot" + desc = "A robot specialized in close quarters combat." + player_msg = "You are heavily armored against close quarters combat." + armor = list( + "melee" = 70, + "bullet" = 0, + "laser" = 0, + "energy" = 0, + "bomb" = 0, + "bio" = 100, + "rad" = 100 + ) + armor_soak = list( + "melee" = 20, + "bullet" = 0, + "laser" = 0, + "energy" = 0, + "bomb" = 0, + "bio" = 0, + "rad" = 0 + ) + +/mob/living/simple_mob/mechanical/hivebot/tank/armored/anti_bullet + name = "bulletproof hivebot" + desc = "A robot specialized in ballistic defense." + player_msg = "You are heavily armored against ballistic weapons." + armor = list( + "melee" = 0, + "bullet" = 70, + "laser" = 0, + "energy" = 0, + "bomb" = 0, + "bio" = 100, + "rad" = 100 + ) + armor_soak = list( + "melee" = 0, + "bullet" = 20, + "laser" = 0, + "energy" = 0, + "bomb" = 0, + "bio" = 0, + "rad" = 0 + ) + +/mob/living/simple_mob/mechanical/hivebot/tank/armored/anti_laser + name = "ablative hivebot" + desc = "A robot specialized in photonic defense." + player_msg = "You are heavily armored against laser weapons." + armor = list( + "melee" = 0, + "bullet" = 0, + "laser" = 70, + "energy" = 0, + "bomb" = 0, + "bio" = 100, + "rad" = 100 + ) + armor_soak = list( + "melee" = 0, + "bullet" = 0, + "laser" = 20, + "energy" = 0, + "bomb" = 0, + "bio" = 0, + "rad" = 0 + ) + var/reflect_chance = 40 // Same as regular ablative. + +// Ablative Hivebots can reflect lasers just like humans. +/mob/living/simple_mob/mechanical/hivebot/tank/armored/anti_laser/bullet_act(obj/item/projectile/P) + if(istype(P, /obj/item/projectile/energy) || istype(P, /obj/item/projectile/beam)) + var/reflect_prob = reflect_chance - round(P.damage/3) + if(prob(reflect_prob)) + visible_message(span("danger", "The [P.name] gets reflected by [src]'s armor!"), \ + span("userdanger", "The [P.name] gets reflected by [src]'s armor!")) + + // Find a turf near or on the original location to bounce to + if(P.starting) + var/new_x = P.starting.x + pick(0, 0, -1, 1, -2, 2, -2, 2, -2, 2, -3, 3, -3, 3) + var/new_y = P.starting.y + pick(0, 0, -1, 1, -2, 2, -2, 2, -2, 2, -3, 3, -3, 3) + var/turf/curloc = get_turf(src) + + // redirect the projectile + P.redirect(new_x, new_y, curloc, src) + P.reflected = 1 + + return -1 // complete projectile permutation + + return (..(P)) diff --git a/code/modules/mob/living/simple_mob/subtypes/mechanical/mecha/adv_dark_gygax.dm b/code/modules/mob/living/simple_mob/subtypes/mechanical/mecha/adv_dark_gygax.dm new file mode 100644 index 0000000000..2f9420bf64 --- /dev/null +++ b/code/modules/mob/living/simple_mob/subtypes/mechanical/mecha/adv_dark_gygax.dm @@ -0,0 +1,348 @@ +// Stronger than a regular Dark Gygax, this one has three special attacks, based on intents. +// First special attack launches three arcing rockets at the current target. +// Second special attack fires a projectile that creates a short-lived microsingularity that pulls in everything nearby. Magboots can protect from this. +// Third special attack creates a dangerous electric field that causes escalating electric damage, before emitting a tesla shock and blinding anyone looking at the mecha. +// The AI will choose one every ten seconds. + +/datum/category_item/catalogue/technology/adv_dark_gygax + name = "Exosuit - Advanced Dark Gygax" + desc = "This exosuit is an experimental prototype, descended from the Dark Gygax. It retains the \ + speed that is characteristic of the other models, yet outclasses all of them in durability, \ + to the point of having a comparable amount of protection to models that placed a higher emphesis \ + on armor, like the Durand and even the Marauder. It is also much larger in scale, and significantly \ + heavier than most other exosuits developed by humans, which often causes shockwaves to be felt \ + whenever it moves. This has been observed to have a demoralizing effect on hostile forces.\ +

      \ + Weapons & Power System
      \ + Attached to the exosuit's chassis are several newly invented mounted weapons, each unique in purpose and capability. \ + These weapons are integral to the chassis as opposed to the modular equipment that more traditional exosuits utilize. \ + It is unknown if that is due to simply being an early prototype, or if discarding the modular design is benefitial \ + to the design of the model.\ +

      \ + All the weapons utilize energy, as opposed to consumable projectiles. This appears to have been a conscious decision to \ + allow for more staying power, by only being limited by availablity of electricity. \ + In order to supply the needed energy for combat, the ADG contains a miniturized fusion reactor, which is also \ + considered experimental due to its size. The reactor is powerful enough to power the actuators, electronics, \ + and the primary weapon. The supplementary weapons, however, cannot be continiously fired and instead draw from \ + a electrical buffer that is constantly replenished by the reactor.\ +

      \ + Homing Energy Bolts
      \ + The primary weapon is a projector that fires somewhat slow moving blue bolts of energy. The ADG is able to \ + passively redirect the trajectory of the blue bolts towards the initial target, essentially acting as a \ + homing projectile. The blue bolt itself is otherwise not very powerful compared to conventional photonic \ + weaponry or ballistic shells, however the power required to fire the main gun is significantly less \ + than the other available weapons, and so the ADG uses it as the main weapon.\ +

      \ + Self-Supplying Missile Launcher
      \ + The first supplementary weapon would appear to not be an energy weapon, as it is a missile launcher. \ + What is not obvious is that the missiles are fabricated inside the exosuit, with the physical \ + materials also being created from energy, similar to the newer models of Rapid Construction Devices. \ + Therefore, the ADG does not need to concern itself with running out of missiles. The missiles themselves \ + are optimized towards harming hard targets, such as other exosuits, but are also still dangerous to soft \ + targets like infantry.\ +

      \ + Electric Defense
      \ + The second supplementary weapon is not a conventional gun. Instead, the ADG weaponizes its electrical \ + systems by redirecting power output from its fusion reactor to its exterior shell, becoming a walking \ + tesla coil. This generates a strong electric field that harms anything unprotected nearby. \ + The electric field grows in power, until reaching a critical point, after which a blinding flash \ + of light and arcs of lightning fly out from the exosuit towards its surroundings.\ +

      \ + Microsingularity Projector
      \ + Finally, the third supplementary weapon utilizes gravitation as a weapon, by firing a blue energetic orb \ + that, upon hitting the ground, collapses and causes a 'microsingularity' to emerge briefly, pulling in \ + anything unsecured, such as personnel or weapons. The microsingularity lacks the means to gain any energy, meaning it \ + will dissipate in a few seconds, and so it is probably safe to use on a planetary body.\ +

      \ + Flaws
      \ + It would appear the ADG is poised to take the place of other exosuits like the Marauder, however several \ + massive flaws exist to make that unlikely. Firstly, this exosuit is almost an order of magnitude more \ + costly to produce than comparable alternatives, even accounting for being a prototype. \ + Secondly, a number of weapons integrated into the ADG are dangerous both to enemies and \ + allies, limiting the ability for a massed assault using ADGs. \ + Finally, the nature of several weapons used could invoke technological fear, or otherwise \ + be considered a war crime to utilize, primarily the electrical field and microsingularity \ + projector.\ +

      \ + All of these flaws appear to doom the ADG to becoming another technological marvel that was \ + overly ambitious and unconstrained to the demands of reality. They will likely be really rare, \ + and terrifying." + value = CATALOGUER_REWARD_SUPERHARD + + +/mob/living/simple_mob/mechanical/mecha/combat/gygax/dark/advanced + name = "advanced dark gygax" + desc = "An experimental exosuit that utilizes advanced materials to allow for greater protection while still being lightweight and fast. \ + It also is armed with an array of next-generation weaponry." + catalogue_data = list(/datum/category_item/catalogue/technology/adv_dark_gygax) + icon_state = "darkgygax_adv" + wreckage = /obj/structure/loot_pile/mecha/gygax/dark/adv + icon_scale = 1.5 + movement_shake_radius = 14 + + maxHealth = 450 + deflect_chance = 25 + has_repair_droid = TRUE + armor = list( + "melee" = 50, + "bullet" = 50, + "laser" = 50, + "energy" = 30, + "bomb" = 30, + "bio" = 100, + "rad" = 100 + ) + + special_attack_min_range = 1 + special_attack_max_range = 7 + special_attack_cooldown = 10 SECONDS + projectiletype = /obj/item/projectile/energy/homing_bolt // We're now a bullet hell game. + projectilesound = 'sound/weapons/wave.ogg' + ai_holder_type = /datum/ai_holder/simple_mob/intentional/adv_dark_gygax + var/obj/effect/overlay/energy_ball/energy_ball = null + +/mob/living/simple_mob/mechanical/mecha/combat/gygax/dark/advanced/Destroy() + if(energy_ball) + energy_ball.stop_orbit() + qdel(energy_ball) + return ..() + +/mob/living/simple_mob/mechanical/mecha/combat/gygax/dark/advanced/do_special_attack(atom/A) + . = TRUE // So we don't fire a bolt as well. + switch(a_intent) + if(I_DISARM) // Side gun + electric_defense(A) + if(I_HURT) // Rockets + launch_rockets(A) + if(I_GRAB) // Micro-singulo + launch_microsingularity(A) + +/obj/item/projectile/energy/homing_bolt + name = "homing bolt" + icon_state = "force_missile" + damage = 20 + damage_type = BURN + check_armour = "laser" + +/obj/item/projectile/energy/homing_bolt/launch_projectile(atom/target, target_zone, mob/user, params, angle_override, forced_spread = 0) + ..() + if(target) + set_homing_target(target) + +/obj/item/projectile/energy/homing_bolt/fire(angle, atom/direct_target) + ..() + set_pixel_speed(0.5) + +#define ELECTRIC_ZAP_POWER 20000 + +// Charges a tesla shot, while emitting a dangerous electric field. The exosuit is immune to electric damage while this is ongoing. +// It also briefly blinds anyone looking directly at the mech without flash protection. +/mob/living/simple_mob/mechanical/mecha/combat/gygax/dark/advanced/proc/electric_defense(atom/target) + set waitfor = FALSE + + // Temporary immunity to shock to avoid killing themselves with their own attack. + var/old_shock_resist = shock_resist + shock_resist = 1 + + // Make the energy ball. This is purely visual since the tesla ball is hyper-deadly. + energy_ball = new(loc) + energy_ball.adjust_scale(0.5) + energy_ball.orbit(src, 32, TRUE, 1 SECOND) + + visible_message(span("warning", "\The [src] creates \an [energy_ball] around itself!")) + + playsound(src.loc, 'sound/effects/lightning_chargeup.ogg', 100, 1, extrarange = 30) + + // Shock nearby things that aren't ourselves. + for(var/i = 1 to 10) + energy_ball.adjust_scale(0.5 + (i/10)) + energy_ball.set_light(i/2, i/2, "#0000FF") + for(var/thing in range(3, src)) + // This is stupid because mechs are stupid and not mobs. + if(isliving(thing)) + var/mob/living/L = thing + + if(L == src) + continue + if(L.stat) + continue // Otherwise it can get pretty laggy if there's loads of corpses around. + L.inflict_shock_damage(i * 2) + if(L && L.has_AI()) // Some mobs delete themselves when dying. + L.ai_holder.react_to_attack(src) + + else if(istype(thing, /obj/mecha)) + var/obj/mecha/M = thing + M.take_damage(i * 2, "energy") // Mechs don't have a concept for siemens so energy armor check is the best alternative. + + sleep(1 SECOND) + + // Shoot a tesla bolt, and flashes people who are looking at the mecha without sufficent eye protection. + visible_message(span("warning", "\The [energy_ball] explodes in a flash of light, sending a shock everywhere!")) + playsound(src.loc, 'sound/effects/lightningbolt.ogg', 100, 1, extrarange = 30) + tesla_zap(src.loc, 5, ELECTRIC_ZAP_POWER, FALSE) + for(var/mob/living/L in viewers(src)) + if(L == src) + continue + var/dir_towards_us = get_dir(L, src) + if(L.dir && L.dir & dir_towards_us) + to_chat(L, span("danger", "The flash of light blinds you briefly.")) + L.flash_eyes(intensity = FLASH_PROTECTION_MODERATE, override_blindness_check = FALSE, affect_silicon = TRUE) + + // Get rid of our energy ball. + energy_ball.stop_orbit() + qdel(energy_ball) + + sleep(1 SECOND) + // Resist resistance to old value. + shock_resist = old_shock_resist // Not using initial() in case the value gets modified by an admin or something. + +#undef ELECTRIC_ZAP_POWER + +/mob/living/simple_mob/mechanical/mecha/combat/gygax/dark/advanced/proc/launch_rockets(atom/target) + set waitfor = FALSE + + // Telegraph our next move. + Beam(target, icon_state = "sat_beam", time = 3.5 SECONDS, maxdistance = INFINITY) + visible_message(span("warning", "\The [src] deploys a missile rack!")) + playsound(src, 'sound/effects/turret/move1.wav', 50, 1) + sleep(0.5 SECONDS) + + for(var/i = 1 to 3) + if(target) // Might get deleted in the meantime. + var/turf/T = get_turf(target) + if(T) + visible_message(span("warning", "\The [src] fires a rocket into the air!")) + playsound(src, 'sound/weapons/rpg.ogg', 70, 1) + face_atom(T) + var/obj/item/projectile/arc/explosive_rocket/rocket = new(loc) + rocket.old_style_target(T, src) + rocket.fire() + sleep(1 SECOND) + + visible_message(span("warning", "\The [src] retracts the missile rack.")) + playsound(src, 'sound/effects/turret/move2.wav', 50, 1) + +// Arcing rocket projectile that produces a weak explosion when it lands. +// Shouldn't punch holes in the floor, but will still hurt. +/obj/item/projectile/arc/explosive_rocket + name = "rocket" + icon_state = "mortar" + +/obj/item/projectile/arc/explosive_rocket/on_impact(turf/T) + new /obj/effect/explosion(T) // Weak explosions don't produce this on their own, apparently. + explosion(T, 0, 0, 2, adminlog = FALSE) + +/mob/living/simple_mob/mechanical/mecha/combat/gygax/dark/advanced/proc/launch_microsingularity(atom/target) + var/turf/T = get_turf(target) + visible_message(span("warning", "\The [src] fires an energetic sphere into the air!")) + playsound(src, 'sound/weapons/Laser.ogg', 50, 1) + face_atom(T) + var/obj/item/projectile/arc/microsingulo/sphere = new(loc) + sphere.old_style_target(T, src) + sphere.fire() + +/obj/item/projectile/arc/microsingulo + name = "micro singularity" + icon_state = "bluespace" + +/obj/item/projectile/arc/microsingulo/on_impact(turf/T) + new /obj/effect/temporary_effect/pulse/microsingulo(T) + + +/obj/effect/temporary_effect/pulse/microsingulo + name = "micro singularity" + desc = "It's sucking everything in!" + icon = 'icons/obj/objects.dmi' + icon_state = "bhole3" + light_range = 4 + light_power = 5 + light_color = "#2ECCFA" + pulses_remaining = 10 + pulse_delay = 0.5 SECONDS + var/pull_radius = 3 + var/pull_strength = STAGE_THREE + +/obj/effect/temporary_effect/pulse/microsingulo/on_pulse() + for(var/atom/A in range(pull_radius, src)) + A.singularity_pull(src, pull_strength) + + +// The Advanced Dark Gygax's AI. +// The mob has three special attacks, based on the current intent. +// This AI choose the appropiate intent for the situation, and tries to ensure it doesn't kill itself by firing missiles at its feet. +/datum/ai_holder/simple_mob/intentional/adv_dark_gygax + conserve_ammo = TRUE // Might help avoid 'I shoot the wall forever' cheese. + var/closest_desired_distance = 1 // Otherwise run up to them to be able to potentially shock or punch them. + + var/electric_defense_radius = 3 // How big to assume electric defense's area is. + var/microsingulo_radius = 3 // Same but for microsingulo pull. + var/rocket_explosive_radius = 2 // Explosion radius for the rockets. + + var/electric_defense_threshold = 2 // How many non-targeted people are needed in close proximity before electric defense is viable. + var/microsingulo_threshold = 2 // Similar to above, but uses an area around the target. + +// Used to control the mob's positioning based on which special attack it has done. +// Note that the intent will not change again until the next special attack is about to happen. +/datum/ai_holder/simple_mob/intentional/adv_dark_gygax/on_engagement(atom/A) + // Make the AI backpeddle if using an AoE special attack. + var/list/risky_intents = list(I_GRAB, I_HURT) // Mini-singulo and missiles. + if(holder.a_intent in risky_intents) + var/closest_distance = 1 + switch(holder.a_intent) // Plus one just in case. + if(I_HURT) + closest_distance = rocket_explosive_radius + 1 + if(I_GRAB) + closest_distance = microsingulo_radius + 1 + + if(get_dist(holder, A) <= closest_distance) + holder.IMove(get_step_away(holder, A, closest_distance)) + + // Otherwise get up close and personal. + else if(get_dist(holder, A) > closest_desired_distance) + holder.IMove(get_step_towards(holder, A)) + +// Changes the mob's intent, which controls which special attack is used. +// I_DISARM causes Electric Defense, I_GRAB causes Micro-Singularity, and I_HURT causes Missile Barrage. +/datum/ai_holder/simple_mob/intentional/adv_dark_gygax/pre_special_attack(atom/A) + if(isliving(A)) + var/mob/living/target = A + + // If we're surrounded, Electric Defense will quickly fix that. + var/tally = 0 + var/list/potential_targets = list_targets() // Returns list of mobs and certain objects like mechs and turrets. + for(var/atom/movable/AM in potential_targets) + if(get_dist(holder, AM) > electric_defense_radius) + continue + if(!can_attack(AM)) + continue + tally++ + + // Should we shock them? + if(tally >= electric_defense_threshold || get_dist(target, holder) <= electric_defense_radius) + holder.a_intent = I_DISARM + return + + // Otherwise they're a fair distance away and we're not getting mobbed up close. + // See if we should use missiles or microsingulo. + tally = 0 // Let's recycle the var. + for(var/atom/movable/AM in potential_targets) + if(get_dist(target, AM) > microsingulo_radius) // Deliberately tests distance between target and nearby targets and not the holder. + continue + if(!can_attack(AM)) + continue + if(AM.anchored) // Microsingulo doesn't do anything to anchored things. + tally-- + else + tally++ + + // Lots of people means minisingulo would be more useful. + if(tally >= microsingulo_threshold) + holder.a_intent = I_GRAB + else // Otherwise use rockets. + holder.a_intent = I_HURT + + else + if(get_dist(holder, A) >= rocket_explosive_radius + 1) + holder.a_intent = I_HURT // Fire rockets if it's an obj/turf. + else + holder.a_intent = I_DISARM // Electricity might not work but it's safe up close. diff --git a/code/modules/mob/living/simple_mob/subtypes/mechanical/mecha/combat_mecha.dm b/code/modules/mob/living/simple_mob/subtypes/mechanical/mecha/combat_mecha.dm new file mode 100644 index 0000000000..7a2d8abb19 --- /dev/null +++ b/code/modules/mob/living/simple_mob/subtypes/mechanical/mecha/combat_mecha.dm @@ -0,0 +1,38 @@ +// Base type for the 'combat' mechas like gygax/durand/maulers/etc. +// They generally are walking tanks, and their melee attack knocks back and stuns, like the real deal. + +/mob/living/simple_mob/mechanical/mecha/combat + name = "combat mecha" + desc = "An even bigger stompy mech!!" + + movement_cooldown = 10 + melee_damage_lower = 30 + melee_damage_upper = 30 + melee_attack_delay = 1 SECOND + attacktext = list("punched", "slammed", "uppercutted", "pummeled") + + armor = list( + "melee" = 30, + "bullet" = 30, + "laser" = 15, + "energy" = 0, + "bomb" = 20, + "bio" = 100, + "rad" = 100 + ) + + var/weaken_amount = 2 // Be careful with this number. High values can equal a permastun. + +// Melee hits knock back by one tile (or more if already stunned to help prevent permastuns). +/mob/living/simple_mob/mechanical/mecha/combat/apply_melee_effects(atom/A) + if(isliving(A)) + var/mob/living/L = A + if(L.mob_size <= MOB_MEDIUM) + visible_message(span("danger", "\The [src] sends \the [L] flying with their mechanized fist!")) + playsound(src, "punch", 50, 1) + L.Weaken(weaken_amount) + var/throw_dir = get_dir(src, L) + var/throw_dist = L.incapacitated(INCAPACITATION_DISABLED) ? 4 : 1 + L.throw_at(get_edge_target_turf(L, throw_dir), throw_dist, 1, src) + else + to_chat(L, span("warning", "\The [src] punches you with incredible force, but you remain in place.")) diff --git a/code/modules/mob/living/simple_mob/subtypes/mechanical/mecha/durand.dm b/code/modules/mob/living/simple_mob/subtypes/mechanical/mecha/durand.dm new file mode 100644 index 0000000000..198bc1bd7d --- /dev/null +++ b/code/modules/mob/living/simple_mob/subtypes/mechanical/mecha/durand.dm @@ -0,0 +1,67 @@ +// Durands are slow, tanky, beefy, and hit really hard. +// They can also root themselves to become even tankier. +// The AI doesn't do this currently. + +/datum/category_item/catalogue/technology/durand + name = "Exosuit - Durand" + desc = "The Durand is an old combat exosuit, that was once the most durable exosuit ever developed by humans. \ + In modern times, this exosuit has been dethroned from that title, yet it remains one of the more well built and armored \ + exosuits, despite its age.\ +

      \ + During the First Contact War against the Unathi, there was a need for various new technologies to be developed \ + to counter the Unathi war machine. One of many solutions created was the Durand, which was made to be heavy and \ + well-armored, and be capable of powering the various weapons that could be mounted onto it. Presently, the \ + Durand now generally serves as corporate asset protection hardware, due to modern militaries moving on to newer, \ + more advanced war machines." + value = CATALOGUER_REWARD_HARD + +/mob/living/simple_mob/mechanical/mecha/combat/durand + name = "durand" + desc = "An aging combat exosuit utilized by many corporations. It was originally developed to fight in the First Contact War." + catalogue_data = list(/datum/category_item/catalogue/technology/durand) + icon_state = "durand" + movement_cooldown = 10 + wreckage = /obj/structure/loot_pile/mecha/durand + + maxHealth = 400 + deflect_chance = 20 + armor = list( + "melee" = 50, + "bullet" = 35, + "laser" = 15, + "energy" = 10, + "bomb" = 20, + "bio" = 100, + "rad" = 100 + ) + melee_damage_lower = 40 + melee_damage_upper = 40 + base_attack_cooldown = 2 SECONDS + projectiletype = /obj/item/projectile/beam/heavylaser + + var/defense_mode = FALSE + var/defense_deflect = 35 + +/mob/living/simple_mob/mechanical/mecha/combat/durand/proc/set_defense_mode(new_mode) + defense_mode = new_mode + deflect_chance = defense_mode ? defense_deflect : initial(deflect_chance) + to_chat(src, span("notice", "You [defense_mode ? "en" : "dis"]able defense mode.")) + +/mob/living/simple_mob/mechanical/mecha/combat/durand/SelfMove(turf/n, direct) + if(defense_mode) + to_chat(src, span("warning", "You are in defense mode, you cannot move.")) + return FALSE + return ..() + +// So players can toggle it too. +/mob/living/simple_mob/mechanical/mecha/combat/durand/verb/toggle_defense_mode() + set name = "Toggle Defense Mode" + set desc = "Toggles a special mode which makes you immobile and much more resilient." + set category = "Abilities" + + set_defense_mode(!defense_mode) + +// Variant that starts in defense mode, perhaps for PoIs. +/mob/living/simple_mob/mechanical/mecha/combat/durand/defensive/Initialize() + set_defense_mode(TRUE) + return ..() diff --git a/code/modules/mob/living/simple_mob/subtypes/mechanical/mecha/gygax.dm b/code/modules/mob/living/simple_mob/subtypes/mechanical/mecha/gygax.dm new file mode 100644 index 0000000000..14ad41c05a --- /dev/null +++ b/code/modules/mob/living/simple_mob/subtypes/mechanical/mecha/gygax.dm @@ -0,0 +1,82 @@ +// Gygaxes are tough but also fast. +// Their AI, unlike most, will advance towards their target instead of remaining in place. + +/datum/category_item/catalogue/technology/gygax + name = "Exosuit - Gygax" + desc = "The Gygax is a relatively modern exosuit, built to be lightweight and agile, while still being fairly durable. \ + These traits have made them rather popular among well funded private and corporate security forces, who desire \ + the ability to rapidly respond to conflict.\ +

      \ + One special feature of this model is that the actuators that \ + drive the exosuit can have their safeties disabled in order to achieve a short-term burst of unparalleled speed, \ + at the expense of damaging the exosuit considerably." + value = CATALOGUER_REWARD_HARD + +/mob/living/simple_mob/mechanical/mecha/combat/gygax + name = "gygax" + desc = "A lightweight, security exosuit. Popular among private and corporate security." + catalogue_data = list(/datum/category_item/catalogue/technology/gygax) + icon_state = "gygax" + movement_cooldown = 0 + wreckage = /obj/structure/loot_pile/mecha/gygax + + maxHealth = 300 + armor = list( + "melee" = 25, + "bullet" = 20, + "laser" = 30, + "energy" = 15, + "bomb" = 0, + "bio" = 100, + "rad" = 100 + ) + + projectiletype = /obj/item/projectile/beam/midlaser + + ai_holder_type = /datum/ai_holder/simple_mob/intentional/adv_dark_gygax + +/mob/living/simple_mob/mechanical/mecha/combat/gygax/manned + pilot_type = /mob/living/simple_mob/humanoid/merc/ranged // Carries a pistol. + + +// A stronger variant. + +/datum/category_item/catalogue/technology/dark_gygax + name = "Exosuit - Dark Gygax" + desc = "This exosuit is a variant of the regular Gygax. It is generally referred to as the Dark Gygax, \ + due to being constructed from different materials that give it a darker appearance. Beyond merely looking \ + cosmetically different, the Dark Gygax also has various upgrades compared to the Gygax. It is much more \ + resilient, yet retains the agility and speed of the Gygax.\ +

      \ + These are relatively rare compared to the other security exosuits, as most security forces are content with \ + a regular Gygax. Instead, this exosuit is often used by high-end asset protection teams, and mercenaries." + value = CATALOGUER_REWARD_HARD + +/mob/living/simple_mob/mechanical/mecha/combat/gygax/dark + name = "dark gygax" + desc = "A significantly upgraded Gygax security mech, often utilized by corporate asset protection teams and \ + PMCs." + catalogue_data = list(/datum/category_item/catalogue/technology/dark_gygax) + icon_state = "darkgygax" + wreckage = /obj/structure/loot_pile/mecha/gygax/dark + + maxHealth = 400 + deflect_chance = 25 + has_repair_droid = TRUE + armor = list( + "melee" = 40, + "bullet" = 40, + "laser" = 50, + "energy" = 35, + "bomb" = 20, + "bio" = 100, + "rad" = 100 + ) + +/mob/living/simple_mob/mechanical/mecha/combat/gygax/medgax + name = "medgax" + desc = "An unorthodox fusion of the Gygax and Odysseus exosuits, this one is fast, sturdy, and carries a wide array of \ + potent chemicals and delivery mechanisms. The doctor is in!" + icon_state = "medgax" + wreckage = /obj/structure/loot_pile/mecha/gygax/medgax + diff --git a/code/modules/mob/living/simple_mob/subtypes/mechanical/mecha/hoverpod.dm b/code/modules/mob/living/simple_mob/subtypes/mechanical/mecha/hoverpod.dm new file mode 100644 index 0000000000..d113835654 --- /dev/null +++ b/code/modules/mob/living/simple_mob/subtypes/mechanical/mecha/hoverpod.dm @@ -0,0 +1,41 @@ +// Ranged, and capable of flight. + +/datum/category_item/catalogue/technology/hoverpod + name = "Voidcraft - Hoverpod" + desc = "This is a small space-capable craft that has a round design. Can hold up to one pilot, \ + and sometimes one or two passengers, with the right modifications made. \ + Hoverpods have existed for a very long time, and the design has remained more or less consistant over its life. \ + They carved out a niche in short ranged transportation of cargo or crew while in space, \ + as they were more efficient compared to using a shuttle, and required less infrastructure to use due to being compact enough \ + to use airlocks. As such, they acted as a sort of bridge between being EVA in a spacesuit, and being inside a 'real' spacecraft.\ +

      \ + In recent times, the Hoverpod is seen as outdated by some, as newer solutions to that niche now exist, however it remains an ancient favorite." + value = CATALOGUER_REWARD_EASY + +/mob/living/simple_mob/mechanical/mecha/hoverpod + name = "hover pod" + desc = "Stubby and round, this space-capable craft is an ancient favorite. It has a jury-rigged welder-laser." + catalogue_data = list(/datum/category_item/catalogue/technology/hoverpod) + icon_state = "engineering_pod" + movement_sound = 'sound/machines/hiss.ogg' + wreckage = /obj/structure/loot_pile/mecha/hoverpod + + maxHealth = 150 + hovering = TRUE // Can fly. + + projectiletype = /obj/item/projectile/beam + base_attack_cooldown = 2 SECONDS + + var/datum/effect/effect/system/ion_trail_follow/ion_trail + +/mob/living/simple_mob/mechanical/mecha/hoverpod/manned + pilot_type = /mob/living/simple_mob/humanoid/merc/ranged + +/mob/living/simple_mob/mechanical/mecha/hoverpod/Initialize() + ion_trail = new /datum/effect/effect/system/ion_trail_follow() + ion_trail.set_up(src) + ion_trail.start() + return ..() + +/mob/living/simple_mob/mechanical/mecha/hoverpod/Process_Spacemove(var/check_drift = 0) + return TRUE \ No newline at end of file diff --git a/code/modules/mob/living/simple_mob/subtypes/mechanical/mecha/marauder.dm b/code/modules/mob/living/simple_mob/subtypes/mechanical/mecha/marauder.dm new file mode 100644 index 0000000000..f6efa12828 --- /dev/null +++ b/code/modules/mob/living/simple_mob/subtypes/mechanical/mecha/marauder.dm @@ -0,0 +1,67 @@ +// Marauders are even tougher than Durands. + +/datum/category_item/catalogue/technology/marauder + name = "Exosuit - Marauder" + desc = "Marauders are the more modern descendants of the Durand model. Stronger, faster, and \ + more resilient than their predecessor, they have replaced the Durand's role entirely, and are generally seen in service \ + for various militaries across human space. As such, they are generally unavailable to civilians, including \ + corporations and most Trans-Stellars." + value = CATALOGUER_REWARD_HARD + +/mob/living/simple_mob/mechanical/mecha/combat/marauder + name = "marauder" + desc = "A heavy-duty, combat exosuit, developed after the Durand model. This is rarely found among civilian populations." + catalogue_data = list(/datum/category_item/catalogue/technology/marauder) + icon_state = "marauder" + movement_cooldown = 5 + wreckage = /obj/structure/loot_pile/mecha/marauder + + maxHealth = 500 + deflect_chance = 25 + sight = SEE_SELF | SEE_MOBS + armor = list( + "melee" = 50, + "bullet" = 55, + "laser" = 40, + "energy" = 30, + "bomb" = 30, + "bio" = 100, + "rad" = 100 + ) + melee_damage_lower = 45 + melee_damage_upper = 45 + base_attack_cooldown = 2 SECONDS + projectiletype = /obj/item/projectile/beam/heavylaser + + + +/datum/category_item/catalogue/technology/seraph + name = "Exosuit - Seraph" + desc = "The Seraph line of combat exosuit is essentially a Marauder with incremental improvements, making \ + it slightly better. Due to the relatively minor improvements over its predecessor, and the cost of \ + said improvements, Seraphs have not made the Marauder obsolute. Instead, they have generally filled the \ + role of housing important commanders, and as such they generally contain specialized communications \ + equipment to aid in receiving and relaying orders.\ +

      \ + Due to this role, they are generally not expected to see combat frequently. Despite this, they often have \ + one or more weapons attached, to allow for retaliation in case it is attacked directly." + value = CATALOGUER_REWARD_HARD + +// Slightly stronger, used to allow comdoms to frontline without dying instantly, I guess. +/mob/living/simple_mob/mechanical/mecha/combat/marauder/seraph + name = "seraph" + desc = "A heavy-duty, combat/command exosuit. This one is specialized towards housing important commanders such as high-ranking \ + military personnel. It's stronger than the regular Marauder model, but not by much." + catalogue_data = list(/datum/category_item/catalogue/technology/seraph) + icon_state = "seraph" + wreckage = /obj/structure/loot_pile/mecha/marauder/seraph + health = 550 + melee_damage_lower = 55 // The real version hits this hard apparently. Ouch. + melee_damage_upper = 55 + + +/mob/living/simple_mob/mechanical/mecha/combat/marauder/mauler + name = "mauler" + desc = "A heavy duty, combat exosuit that is based off of the Marauder model." + icon_state = "mauler" + wreckage = /obj/structure/loot_pile/mecha/marauder/mauler diff --git a/code/modules/mob/living/simple_mob/subtypes/mechanical/mecha/mecha.dm b/code/modules/mob/living/simple_mob/subtypes/mechanical/mecha/mecha.dm new file mode 100644 index 0000000000..d29981726d --- /dev/null +++ b/code/modules/mob/living/simple_mob/subtypes/mechanical/mecha/mecha.dm @@ -0,0 +1,141 @@ +// Mecha simple_mobs are essentially fake mechs. Generally tough and scary to fight. +// By default, they're automatically piloted by some kind of drone AI. They can be set to be "piloted" instead with a var. +// Tries to be as similar to the real deal as possible. + +/mob/living/simple_mob/mechanical/mecha + name = "mecha" + desc = "A big stompy mech!" + icon = 'icons/mecha/mecha.dmi' + + faction = "syndicate" + movement_cooldown = 5 + movement_sound = "mechstep" // This gets fed into playsound(), which can also take strings as a 'group' of sound files. + turn_sound = 'sound/mecha/mechturn.ogg' + maxHealth = 300 + mob_size = MOB_LARGE + + // Very close to the base 'damage_absorption' var on the base mecha class. + armor = list( + "melee" = 20, + "bullet" = 10, + "laser" = 0, + "energy" = 0, + "bomb" = 0, + "bio" = 100, + "rad" = 100 + ) + + response_help = "taps on" + response_disarm = "knocks on" + response_harm = "uselessly hits" + harm_intent_damage = 0 + + ai_holder_type = /datum/ai_holder/simple_mob/melee + say_list_type = /datum/say_list/malf_drone + + var/datum/effect/effect/system/spark_spread/sparks + var/wreckage = /obj/effect/decal/mecha_wreckage/gygax/dark + var/pilot_type = null // Set to spawn a pilot when destroyed. Setting this also makes the mecha vulnerable to things that affect sentient minds. + var/deflect_chance = 10 // Chance to outright stop an attack, just like a normal exosuit. + var/has_repair_droid = FALSE // If true, heals 2 damage every tick and gets a repair droid overlay. + + +/mob/living/simple_mob/mechanical/mecha/Initialize() + sparks = new (src) + sparks.set_up(3, 1, src) + sparks.attach(src) + + if(!pilot_type) + name = "autonomous [initial(name)]" + desc = "[initial(desc)] It appears to be piloted by a drone intelligence." + else + say_list_type = /datum/say_list/merc + + if(has_repair_droid) + update_icon() + + return ..() + +/mob/living/simple_mob/mechanical/mecha/Destroy() + qdel(sparks) + return ..() + +/mob/living/simple_mob/mechanical/mecha/death() + ..(0,"explodes!") // Do everything else first. + + // Make the exploding more convincing with an actual explosion and some sparks. + sparks.start() + explosion(get_turf(src), 0, 0, 1, 3) + + // 'Eject' our pilot, if one exists. + if(pilot_type) + var/mob/living/L = new pilot_type(loc) + L.faction = src.faction + + new wreckage(loc) // Leave some wreckage. + + qdel(src) // Then delete us since we don't actually have a body. + +/mob/living/simple_mob/mechanical/mecha/handle_special() + if(has_repair_droid) + adjustBruteLoss(-2) + adjustFireLoss(-2) + adjustToxLoss(-2) + adjustOxyLoss(-2) + adjustCloneLoss(-2) + ..() + +/mob/living/simple_mob/mechanical/mecha/update_icon() + ..() // Cuts everything else, so do that first. + if(has_repair_droid) + add_overlay(image(icon = 'icons/mecha/mecha_equipment.dmi', icon_state = "repair_droid")) + +/mob/living/simple_mob/mechanical/mecha/bullet_act() + . = ..() + sparks.start() + +/mob/living/simple_mob/mechanical/mecha/speech_bubble_appearance() + return pilot_type ? "" : ..() + +// Piloted mechs are controlled by (presumably) something humanoid so they are vulnerable to certain things. +/mob/living/simple_mob/mechanical/mecha/is_sentient() + return pilot_type ? TRUE : FALSE + +/* +// Real mechs can't turn and run at the same time. This tries to simulate that. +// Commented out because the AI can't handle it sadly. +/mob/living/simple_mob/mechanical/mecha/SelfMove(turf/n, direct) + if(direct != dir) + set_dir(direct) + return FALSE // We didn't actually move, and returning FALSE means the mob can try to actually move almost immediately and not have to wait the full movement cooldown. + return ..() +*/ + +/mob/living/simple_mob/mechanical/mecha/bullet_act(obj/item/projectile/P) + if(prob(deflect_chance)) + visible_message(span("warning", "\The [P] is deflected by \the [src]'s armor!")) + deflect_sprite() + return 0 + return ..() + +/mob/living/simple_mob/mechanical/mecha/proc/deflect_sprite() + var/image/deflect_image = image('icons/effects/effects.dmi', "deflect_static") + add_overlay(deflect_image) + sleep(1 SECOND) + cut_overlay(deflect_image) + qdel(deflect_image) +// flick_overlay_view(deflect_image, src, duration = 1 SECOND, gc_after = TRUE) + +/mob/living/simple_mob/mechanical/mecha/attackby(obj/item/I, mob/user) + if(prob(deflect_chance)) + visible_message(span("warning", "\The [user]'s [I] bounces off \the [src]'s armor!")) + deflect_sprite() + user.setClickCooldown(user.get_attack_speed(I)) + return + ..() + +/mob/living/simple_mob/mechanical/mecha/ex_act(severity) + if(prob(deflect_chance)) + severity++ // This somewhat misleadingly makes it less severe. + deflect_sprite() + ..(severity) \ No newline at end of file diff --git a/code/modules/mob/living/simple_mob/subtypes/mechanical/mecha/odysseus.dm b/code/modules/mob/living/simple_mob/subtypes/mechanical/mecha/odysseus.dm new file mode 100644 index 0000000000..338200c8d6 --- /dev/null +++ b/code/modules/mob/living/simple_mob/subtypes/mechanical/mecha/odysseus.dm @@ -0,0 +1,84 @@ +// Shoots syringe-darts at enemies, which applies a stacking poison modifier that hurts over time. +// They also do this in melee. +// Fortunately they're quite fragile and don't fire that fast. + +/datum/category_item/catalogue/technology/odysseus + name = "Exosuit - Odysseus" + desc = "A Vey-Medical innovation, the Odysseus was designed to incorporate some of their \ + other inventions, such as the Sleeper, into a mobile frame. Due to its ability to safely \ + rescue injured people in potentially hostile environments such as vacuum, as well as its \ + agility compared to other civilian exosuits, the Odysseus dominates the market for \ + medical exosuits." + value = CATALOGUER_REWARD_EASY + +/mob/living/simple_mob/mechanical/mecha/odysseus + name = "odysseus" + desc = "These exosuits are developed and produced by Vey-Med. This one has a syringe gun." + catalogue_data = list( + /datum/category_item/catalogue/technology/odysseus, + /datum/category_item/catalogue/information/organization/vey_med + ) + icon_state = "odysseus" + wreckage = /obj/structure/loot_pile/mecha/odysseus + + maxHealth = 120 + movement_cooldown = 0 + turn_sound = 'sound/mecha/mechmove01.ogg' + + melee_damage_lower = 5 + melee_damage_upper = 5 + base_attack_cooldown = 2 SECONDS + attacktext = list("injected") + projectiletype = /obj/item/projectile/fake_syringe/poison + projectilesound = 'sound/weapons/empty.ogg' // Just like the syringe gun. + + ai_holder_type = /datum/ai_holder/simple_mob/ranged/kiting/no_moonwalk + +/mob/living/simple_mob/mechanical/mecha/odysseus/manned + pilot_type = /mob/living/simple_mob/humanoid/merc/ranged // Carries a pistol. + + +// Resprite of the regular one, perhaps for merc PoIs. +/mob/living/simple_mob/mechanical/mecha/odysseus/murdysseus + icon_state = "murdysseus" + wreckage = /obj/structure/loot_pile/mecha/odysseus/murdysseus + +/mob/living/simple_mob/mechanical/mecha/odysseus/murdysseus/manned + pilot_type = /mob/living/simple_mob/humanoid/merc/ranged + + +/mob/living/simple_mob/mechanical/mecha/odysseus/apply_melee_effects(atom/A) + if(isliving(A)) + var/mob/living/L = A + + var/target_zone = pick(BP_TORSO,BP_TORSO,BP_TORSO,BP_L_LEG,BP_R_LEG,BP_L_ARM,BP_R_ARM,BP_HEAD) + if(L.can_inject(src, null, target_zone)) + to_chat(L, span("warning", "You feel a tiny prick.")) + if(L.get_poison_protection() < 1) + L.add_modifier(/datum/modifier/poisoned, 30 SECONDS) + L.inflict_poison_damage(5) + + +// Fake syringe that tests if target can be injected before applying damage/modifiers/etc. +/obj/item/projectile/fake_syringe + name = "syringe" + icon_state = "syringe" + damage = 5 // Getting hit with a launched syringe probably hurts, and makes it at least slightly relevant against synthetics. + var/piercing = FALSE // If true, ignores thick material. + +/obj/item/projectile/fake_syringe/on_hit(atom/target, blocked = 0, def_zone = null) + if(isliving(target)) + var/mob/living/L = target + if(!L.can_inject(null, null, def_zone, piercing)) + return FALSE + to_chat(L, span("warning", "You feel a tiny prick.")) + return ..() // This will add the modifier and return the correct value. + + +// Fake syringe, which inflicts a long lasting modifier that slowly kills them. +/obj/item/projectile/fake_syringe/poison + modifier_type_to_apply = /datum/modifier/poisoned + modifier_duration = 1 MINUTE // About 30 damage per stack over a minute. + + + diff --git a/code/modules/mob/living/simple_mob/subtypes/mechanical/mecha/phazon.dm b/code/modules/mob/living/simple_mob/subtypes/mechanical/mecha/phazon.dm new file mode 100644 index 0000000000..ebbe80ecf4 --- /dev/null +++ b/code/modules/mob/living/simple_mob/subtypes/mechanical/mecha/phazon.dm @@ -0,0 +1,22 @@ +// Phazons are weird. + +/mob/living/simple_mob/mechanical/mecha/combat/phazon + name = "phazon" + desc = "An extremly enigmatic exosuit." + icon_state = "phazon" + movement_cooldown = 5 + wreckage = /obj/structure/loot_pile/mecha/phazon + + maxHealth = 200 + deflect_chance = 30 + armor = list( + "melee" = 30, + "bullet" = 30, + "laser" = 30, + "energy" = 30, + "bomb" = 30, + "bio" = 100, + "rad" = 100 + ) + projectiletype = /obj/item/projectile/energy/declone + diff --git a/code/modules/mob/living/simple_mob/subtypes/mechanical/mecha/ripley.dm b/code/modules/mob/living/simple_mob/subtypes/mechanical/mecha/ripley.dm new file mode 100644 index 0000000000..063802ca4b --- /dev/null +++ b/code/modules/mob/living/simple_mob/subtypes/mechanical/mecha/ripley.dm @@ -0,0 +1,75 @@ +// Beefy, but somewhat slow. +// Melee attack is to bore you with its big drill, which has a lot of armor penetration and strikes rapidly. + +/datum/category_item/catalogue/technology/ripley + name = "Exosuit - APLU" + desc = "The Autonomous Power Loader Unit, more commonly designated as the 'Ripley', \ + is an exosuit that is often described as 'the workhorse of the exosuit world', \ + due to being designed for industrial use. Featuring a rugged design, they are fairly \ + resilient to the stresses of operation. As such, they are often used for various roles, \ + such as mining, construction, heavy lifting, and cargo transportation." + value = CATALOGUER_REWARD_EASY + + +/mob/living/simple_mob/mechanical/mecha/ripley + name = "\improper APLU ripley" + desc = "Autonomous Power Loader Unit. The workhorse of the exosuit world. This one has big drill." + catalogue_data = list(/datum/category_item/catalogue/technology/ripley) + icon_state = "ripley" + wreckage = /obj/structure/loot_pile/mecha/ripley + + maxHealth = 200 + + melee_damage_lower = 10 + melee_damage_upper = 10 + base_attack_cooldown = 5 // About 20 DPS. + attack_armor_pen = 50 + attack_sharp = TRUE + attack_sound = 'sound/mecha/mechdrill.ogg' + attacktext = list("drilled", "bored", "pierced") + +/mob/living/simple_mob/mechanical/mecha/ripley/manned + pilot_type = /mob/living/simple_mob/humanoid/merc/ranged // Carries a pistol. + +/mob/living/simple_mob/mechanical/mecha/ripley/red_flames + icon_state = "ripley_flames_red" + +/mob/living/simple_mob/mechanical/mecha/ripley/blue_flames + icon_state = "ripley_flames_blue" + + +// Immune to heat damage, resistant to lasers, and somewhat beefier. Still tries to melee you. +/mob/living/simple_mob/mechanical/mecha/ripley/firefighter + name = "\improper APLU firefighter" + desc = "A standard APLU chassis, refitted with additional thermal protection and cistern. This one has a big drill." + icon_state = "firefighter" + wreckage = /obj/structure/loot_pile/mecha/ripley/firefighter + + maxHealth = 250 + heat_resist = 1 + armor = list( + "melee" = 0, + "bullet" = 20, + "laser" = 50, + "energy" = 0, + "bomb" = 50, + "bio" = 100, + "rad" = 100 + ) + +/mob/living/simple_mob/mechanical/mecha/ripley/firefighter/manned + pilot_type = /mob/living/simple_mob/humanoid/merc/ranged + +// Mostly a joke mob, like the real DEATH-RIPLEY. +/mob/living/simple_mob/mechanical/mecha/ripley/deathripley + name = "\improper DEATH-RIPLEY" + desc = "OH SHIT RUN!!! IT HAS A KILL CLAMP!" + icon_state = "deathripley" + wreckage = /obj/structure/loot_pile/mecha/deathripley + + melee_damage_lower = 0 + melee_damage_upper = 0 + friendly = list("utterly obliterates", "furiously destroys", "permanently removes", "unflichingly decimates", "brutally murders", "absolutely demolishes", "completely annihilates") + +/mob/living/simple_mob/mechanical/mecha/ripley/deathripley/manned + pilot_type = /mob/living/simple_mob/humanoid/merc/ranged diff --git a/code/modules/mob/living/simple_mob/subtypes/mechanical/mechanical.dm b/code/modules/mob/living/simple_mob/subtypes/mechanical/mechanical.dm new file mode 100644 index 0000000000..f61212ba75 --- /dev/null +++ b/code/modules/mob/living/simple_mob/subtypes/mechanical/mechanical.dm @@ -0,0 +1,25 @@ +// Mechanical mobs don't care about the atmosphere and cannot be hurt by tasers. +// They're also immune to poisons as they're entirely metal, however this also makes most of them vulnerable to shocks. +// They can also be hurt by EMP. + +/mob/living/simple_mob/mechanical + mob_class = MOB_CLASS_SYNTHETIC + min_oxy = 0 + max_oxy = 0 + min_tox = 0 + max_tox = 0 + min_co2 = 0 + max_co2 = 0 + min_n2 = 0 + max_n2 = 0 + minbodytemp = 0 + + taser_kill = FALSE + poison_resist = 1.0 + shock_resist = -0.5 + +/mob/living/simple_mob/mechanical/isSynthetic() + return TRUE + +/mob/living/simple_mob/mechanical/speech_bubble_appearance() + return faction != "neutral" ? "synthetic_evil" : "machine" \ No newline at end of file diff --git a/code/modules/mob/living/simple_mob/subtypes/mechanical/viscerator.dm b/code/modules/mob/living/simple_mob/subtypes/mechanical/viscerator.dm new file mode 100644 index 0000000000..347e64c093 --- /dev/null +++ b/code/modules/mob/living/simple_mob/subtypes/mechanical/viscerator.dm @@ -0,0 +1,66 @@ +/* + Viscerators are fragile and don't hit very hard, but fast, evasive, and rarely come alone. + They also tend to dodge while in melee range. + A weapon that can cleave is very effective against them. +*/ + +/datum/category_item/catalogue/technology/drone/viscerator + name = "Drone - Viscerator" + desc = "Viscerators are fairly simple machines that use very sharp blades as propellers, \ + which it uses both to fly and to attack enemy targets. Their simple construction generally \ + means that if one is found, a swarm of others are not too far away.\ +

      \ + They are most effective against soft targets such as unarmored personnel, as the propeller \ + tends to get deflected after slicing into someone's flesh, and as such they tend to not cut deeply. \ + The simplistic AI inside compensates for this by using the tendency to bounce away after \ + slicing as an evasive tactic to avoid harm. This allows the viscerator to cut up the target, \ + fly to the side, and then repeat, potentially causing the target to die from many seperate wounds." + value = CATALOGUER_REWARD_EASY + +/mob/living/simple_mob/mechanical/viscerator + name = "viscerator" + desc = "A small, twin-bladed machine capable of inflicting very deadly lacerations." + catalogue_data = list(/datum/category_item/catalogue/technology/drone/viscerator) + + icon = 'icons/mob/critter.dmi' + icon_state = "viscerator_attack" + icon_living = "viscerator_attack" + hovering = TRUE // Won't trigger landmines. + + faction = "syndicate" + maxHealth = 15 + health = 15 + movement_cooldown = 0 + + pass_flags = PASSTABLE + mob_swap_flags = 0 + mob_push_flags = 0 + + melee_damage_lower = 4 // Approx 8 DPS. + melee_damage_upper = 4 + base_attack_cooldown = 5 // Two attacks a second or so. + attack_sharp = 1 + attack_edge = 1 + attack_sound = 'sound/weapons/bladeslice.ogg' + attacktext = list("cut", "sliced") + + ai_holder_type = /datum/ai_holder/simple_mob/melee/evasive + +/mob/living/simple_mob/mechanical/viscerator/death() + ..(null,"is smashed into pieces!") + qdel(src) + +// Variant that is always loyal to mercenary antagonists. +// Used for a special grenade, to ensure they don't attack the wrong thing. +/mob/living/simple_mob/mechanical/viscerator/mercenary/IIsAlly(mob/living/L) + . = ..() + if(!.) // Not friendly, see if they're a baddie first. + if(L.mind && mercs.is_antagonist(L.mind)) + return TRUE + +// Similar to above but for raiders. +/mob/living/simple_mob/mechanical/viscerator/raider/IIsAlly(mob/living/L) + . = ..() + if(!.) // Not friendly, see if they're a baddie first. + if(L.mind && raiders.is_antagonist(L.mind)) + return TRUE \ No newline at end of file diff --git a/code/modules/mob/living/simple_mob/subtypes/mechanical/ward/monitor_ward.dm b/code/modules/mob/living/simple_mob/subtypes/mechanical/ward/monitor_ward.dm new file mode 100644 index 0000000000..519ad4ce88 --- /dev/null +++ b/code/modules/mob/living/simple_mob/subtypes/mechanical/ward/monitor_ward.dm @@ -0,0 +1,121 @@ +/* + 'Monitor' wards are drones that yell at their creator if they see someone besides them that they are hostile to. + They can also force an invisible entity to uncloak if the invisible mob is hostile to the ward. + If AI controlled, they will also warn their faction if they see a hostile entity, acting as floating cameras. +*/ + +/datum/category_item/catalogue/technology/drone/ward + name = "Drone - Monitor Ward" + desc = "This is a small drone that appears to have been designed for a singular purpose, \ + with little autonomous capability, common among the 'ward' models. This specific ward's \ + purpose is simply to observe the environment around it, reacting when it detects entities \ + it judges to be unfriendly. It presumably relays information about what it sees back to \ + whoever owns the drone.\ +

      \ + The sensors onboard the ward are much more advanced than what is typical for drones, \ + allowing it to detect entities that might otherwise go unnoticed by inferior \ + observers. If this ward sees such a thing, it fires a beam of energy at the hidden \ + entity, which exposes them." + value = CATALOGUER_REWARD_EASY + +/mob/living/simple_mob/mechanical/ward/monitor + desc = "It's a little flying drone. This one seems to be watching you..." + catalogue_data = list(/datum/category_item/catalogue/technology/drone/ward) + icon_state = "ward" + glow_color = "#00FF00" + see_invisible = SEE_INVISIBLE_LEVEL_TWO + + has_eye_glow = TRUE + glow_range = 3 + glow_intensity = 3 + glow_toggle = TRUE + + player_msg = "You will automatically alert your owner (if one exists) of enemies you see nearby.
      \ + You can also see invisible entities, and will automatically uncloak nearby invisible or hidden enemies." + + ai_holder_type = /datum/ai_holder/simple_mob/monitor + + var/list/seen_mobs = list() + var/view_range = 5 + +// For PoIs. +/mob/living/simple_mob/mechanical/ward/monitor/syndicate + faction = "syndicate" + +/mob/living/simple_mob/mechanical/ward/monitor/crew + faction = "neutral" + +/mob/living/simple_mob/mechanical/ward/monitor/death() + if(owner) + to_chat(owner, span("warning", "Your [src.name] inside [get_area(src)] was destroyed!")) + ..() + +/mob/living/simple_mob/mechanical/ward/monitor/handle_special() + detect_mobs() + +/mob/living/simple_mob/mechanical/ward/monitor/update_icon() + if(seen_mobs.len) + icon_living = "ward_spotted" + glow_color = "#FF0000" + else + icon_living = "ward" + glow_color = "#00FF00" + handle_light() // Update the light immediately. + ..() + +/mob/living/simple_mob/mechanical/ward/monitor/proc/detect_mobs() + var/last_seen_mobs_len = seen_mobs.len + var/list/mobs_nearby = hearers(view_range, src) + var/list/newly_seen_mobs = list() + for(var/mob/living/L in mobs_nearby) + if(L == src) // Don't detect ourselves. + continue + + if(L.stat) // Dead mobs aren't concerning. + continue + + if(src.IIsAlly(L)) + continue + + // Decloak them . + if(L.is_cloaked()) + Beam(L, icon_state = "solar_beam", time = 5) + playsound(L, 'sound/effects/EMPulse.ogg', 75, 1) + L.break_cloak() + + to_chat(L, span("danger", "\The [src] disrupts your cloak!")) + if(owner) + to_chat(owner, span("notice", "Your [src.name] at [get_area(src)] uncloaked \the [L].")) + + // Warn the owner when it sees a new mob. + if(!(L in seen_mobs)) + seen_mobs += L + newly_seen_mobs += L + + if(newly_seen_mobs.len && owner) // Yell at our owner if someone new shows up. + to_chat(owner, span("notice", "Your [src.name] at [get_area(src)] detected [english_list(newly_seen_mobs)].")) + + // Now get rid of old mobs that left vision. + for(var/thing in seen_mobs) + if(!(thing in mobs_nearby)) + seen_mobs -= thing + + // Check if we need to update icon. + if(seen_mobs.len != last_seen_mobs_len) + update_icon() + + +// Can't attack but calls for help. Used by the monitor and spotter wards. +// Special attacks are not blocked since they might be used for things besides attacking, and can be conditional. +/datum/ai_holder/simple_mob/monitor + hostile = TRUE // Required to call for help. + cooperative = TRUE + stand_ground = TRUE // So it doesn't run up to the thing it sees. + wander = FALSE + can_flee = FALSE + +/datum/ai_holder/simple_mob/monitor/melee_attack(atom/A) + return FALSE + +/datum/ai_holder/simple_mob/monitor/ranged_attack(atom/A) + return FALSE \ No newline at end of file diff --git a/code/modules/mob/living/simple_mob/subtypes/mechanical/ward/ward.dm b/code/modules/mob/living/simple_mob/subtypes/mechanical/ward/ward.dm new file mode 100644 index 0000000000..0e897599ac --- /dev/null +++ b/code/modules/mob/living/simple_mob/subtypes/mechanical/ward/ward.dm @@ -0,0 +1,42 @@ +/* + Wards are a specific type of mechanical simplemob that generally fill a support role for their faction or for a specific mob. + Generally they are helpless by themselves and are fragile, but can do very useful things if protected. This makes them a high priority target. +*/ + +/mob/living/simple_mob/mechanical/ward + name = "ward" + desc = "A small floating machine. This one seems rather useless..." + icon = 'icons/mob/critter.dmi' + icon_state = "ward" + icon_living = "ward" + hovering = TRUE // Won't trigger landmines. + response_help = "pets" + response_disarm = "swats away" + response_harm = "punches" + faction = "wards" // Needed as most human mobs are in neutral faction. The owner is generally except from any ward hostility regardless. + + maxHealth = 15 + health = 15 + movement_cooldown = 0 + hovering = TRUE + + mob_bump_flag = 0 + + melee_damage_lower = 0 + melee_damage_upper = 0 + + ai_holder_type = null + var/mob/living/owner = null // The mob that made the ward, if any. Used to ensure the ward does not interfere with its creator. + +/mob/living/simple_mob/mechanical/ward/death() + ..(null,"is smashed into pieces!") + qdel(src) + +/mob/living/simple_mob/mechanical/ward/Destroy() + owner = null + return ..() + +/mob/living/simple_mob/mechanical/ward/IIsAlly(mob/living/L) + if(owner == L) + return TRUE + return ..() \ No newline at end of file diff --git a/code/modules/mob/living/simple_mob/subtypes/occult/constructs/_construct.dm b/code/modules/mob/living/simple_mob/subtypes/occult/constructs/_construct.dm new file mode 100644 index 0000000000..cd3b074a40 --- /dev/null +++ b/code/modules/mob/living/simple_mob/subtypes/occult/constructs/_construct.dm @@ -0,0 +1,163 @@ +//////////////////////////// +// Base Construct +//////////////////////////// + +/mob/living/simple_mob/construct + name = "Construct" + real_name = "Construct" + desc = "" + tt_desc = "Error" + + icon_living = "shade" + icon_dead = "shade_dead" + + mob_class = MOB_CLASS_DEMONIC + + ui_icons = 'icons/mob/screen1_construct.dmi' + has_hands = 1 + hand_form = "stone manipulators" + + response_help = "thinks better of touching" + response_disarm = "flailed at" + response_harm = "punched" + + hovering = TRUE + softfall = TRUE //Beings made of Hellmarble and powered by the tears of the damned are not concerned with mortal things such as 'gravity'. + parachuting = TRUE + + has_langs = list(LANGUAGE_GALCOM, LANGUAGE_CULT, LANGUAGE_OCCULT) + + has_eye_glow = TRUE + + taser_kill = FALSE + + min_oxy = 0 + max_oxy = 0 + min_tox = 0 + max_tox = 0 + min_co2 = 0 + max_co2 = 0 + min_n2 = 0 + max_n2 = 0 + minbodytemp = 0 + + shock_resist = 0.1 //Electricity isn't very effective on stone, especially that from hell. + poison_resist = 1.0 + + armor = list( + "melee" = 10, + "bullet" = 10, + "laser" = 10, + "energy" = 10, + "bomb" = 10, + "bio" = 100, + "rad" = 100) + + can_be_antagged = TRUE + faction = "cult" + + supernatural = TRUE + + var/construct_type = "shade" + var/list/construct_spells = list() +// var/do_glow = TRUE + +/mob/living/simple_mob/construct/place_spell_in_hand(var/path) + if(!path || !ispath(path)) + return 0 + + //var/obj/item/weapon/spell/S = new path(src) + var/obj/item/weapon/spell/construct/S = new path(src) + + //No hands needed for innate casts. + if(S.cast_methods & CAST_INNATE) + if(S.run_checks()) + S.on_innate_cast(src) + + if(l_hand && r_hand) //Make sure our hands aren't full. + if(istype(r_hand, /obj/item/weapon/spell)) //If they are full, perhaps we can still be useful. + var/obj/item/weapon/spell/r_spell = r_hand + if(r_spell.aspect == ASPECT_CHROMATIC) //Check if we can combine the new spell with one in our hands. + r_spell.on_combine_cast(S, src) + else if(istype(l_hand, /obj/item/weapon/spell)) + var/obj/item/weapon/spell/l_spell = l_hand + if(l_spell.aspect == ASPECT_CHROMATIC) //Check the other hand too. + l_spell.on_combine_cast(S, src) + else //Welp + to_chat(src, "You require a free manipulator to use this power.") + return 0 + + if(S.run_checks()) + put_in_hands(S) + return 1 + else + qdel(S) + return 0 + +/mob/living/simple_mob/construct/cultify() + return + +/mob/living/simple_mob/construct/New() + ..() + name = text("[initial(name)] ([rand(1, 1000)])") + real_name = name + for(var/spell in construct_spells) + src.add_spell(new spell, "const_spell_ready") + updateicon() + +/* +/mob/living/simple_mob/construct/update_icon() + ..() + if(do_glow) + add_glow() +*/ + +/mob/living/simple_mob/construct/death() + new /obj/item/weapon/ectoplasm (src.loc) + ..(null,"collapses in a shattered heap.") + ghostize() + qdel(src) + +/mob/living/simple_mob/construct/attack_generic(var/mob/user) + if(istype(user, /mob/living/simple_mob/construct/artificer)) + var/mob/living/simple_mob/construct/artificer/A = user + if(health < getMaxHealth()) + var/repair_lower_bound = A.melee_damage_lower * -1 + var/repair_upper_bound = A.melee_damage_upper * -1 + adjustBruteLoss(rand(repair_lower_bound, repair_upper_bound)) + adjustFireLoss(rand(repair_lower_bound, repair_upper_bound)) + user.visible_message("\The [user] mends some of \the [src]'s wounds.") + else + to_chat(user, "\The [src] is undamaged.") + return + return ..() + +/mob/living/simple_mob/construct/examine(mob/user) + ..(user) + var/msg = "*---------*\nThis is \icon[src] \a [src]!\n" + if (src.health < src.getMaxHealth()) + msg += "" + if (src.health >= src.getMaxHealth()/2) + msg += "It looks slightly dented.\n" + else + msg += "It looks severely dented!\n" + msg += "" + msg += "*---------*" + + user << msg + +//Constructs levitate, can fall from a shuttle with no harm, and are piloted by either damned spirits or some otherworldly entity. Let 'em float in space. +/mob/living/simple_mob/construct/Process_Spacemove() + return 1 + +/* +// Glowing Procs +/mob/living/simple_mob/construct/proc/add_glow() + var/image/eye_glow = image(icon,"glow-[icon_state]") + eye_glow.plane = PLANE_LIGHTING_ABOVE + overlays += eye_glow + set_light(2, -2, l_color = "#FFFFFF") + +/mob/living/simple_mob/construct/proc/remove_glow() + overlays.Cut() +*/ \ No newline at end of file diff --git a/code/modules/mob/living/simple_mob/subtypes/occult/constructs/artificer.dm b/code/modules/mob/living/simple_mob/subtypes/occult/constructs/artificer.dm new file mode 100644 index 0000000000..69d0da0251 --- /dev/null +++ b/code/modules/mob/living/simple_mob/subtypes/occult/constructs/artificer.dm @@ -0,0 +1,30 @@ +//////////////////////////// +// Artificer +//////////////////////////// + +/mob/living/simple_mob/construct/artificer + name = "Artificer" + real_name = "Artificer" + construct_type = "artificer" + desc = "A bulbous construct dedicated to building and maintaining temples to their otherworldly lords." + icon = 'icons/mob/mob.dmi' + icon_state = "artificer" + icon_living = "artificer" + maxHealth = 150 + health = 150 + response_harm = "viciously beaten" + harm_intent_damage = 5 + melee_damage_lower = 15 //It's not the strongest of the bunch, but that doesn't mean it can't hurt you. + melee_damage_upper = 20 + attacktext = list("rammed") + attack_sound = 'sound/weapons/rapidslice.ogg' + construct_spells = list(/spell/aoe_turf/conjure/construct/lesser, + /spell/aoe_turf/conjure/wall, + /spell/aoe_turf/conjure/floor, + /spell/aoe_turf/conjure/soulstone, + /spell/aoe_turf/conjure/pylon, + /spell/aoe_turf/conjure/door, + /spell/aoe_turf/conjure/grille, + /spell/targeted/occult_repair_aura, + /spell/targeted/construct_advanced/mend_acolyte + ) \ No newline at end of file diff --git a/code/modules/mob/living/simple_mob/subtypes/occult/constructs/harvester.dm b/code/modules/mob/living/simple_mob/subtypes/occult/constructs/harvester.dm new file mode 100644 index 0000000000..9328d9cffd --- /dev/null +++ b/code/modules/mob/living/simple_mob/subtypes/occult/constructs/harvester.dm @@ -0,0 +1,40 @@ +//////////////////////////// +// Harvester +//////////////////////////// + +/mob/living/simple_mob/construct/harvester + name = "Harvester" + real_name = "Harvester" + construct_type = "harvester" + desc = "A tendril-laden construct piloted by a chained mind." + icon = 'icons/mob/mob.dmi' + icon_state = "harvester" + icon_living = "harvester" + maxHealth = 150 + health = 150 + melee_damage_lower = 20 + melee_damage_upper = 25 + attack_sharp = 1 + attacktext = list("violently stabbed") + friendly = list("caresses") + movement_cooldown = 0 + + // environment_smash = 1 // Whatever this gets renamed to, Harvesters need to break things + + attack_sound = 'sound/weapons/pierce.ogg' + + armor = list( + "melee" = 10, + "bullet" = 20, + "laser" = 20, + "energy" = 20, + "bomb" = 20, + "bio" = 100, + "rad" = 100) + + construct_spells = list( + /spell/aoe_turf/knock/harvester, + /spell/targeted/construct_advanced/inversion_beam, + /spell/targeted/construct_advanced/agonizing_sphere, + /spell/rune_write + ) \ No newline at end of file diff --git a/code/modules/mob/living/simple_mob/subtypes/occult/constructs/juggernaut.dm b/code/modules/mob/living/simple_mob/subtypes/occult/constructs/juggernaut.dm new file mode 100644 index 0000000000..31dfa4d34a --- /dev/null +++ b/code/modules/mob/living/simple_mob/subtypes/occult/constructs/juggernaut.dm @@ -0,0 +1,143 @@ +//////////////////////////// +// Juggernaut +//////////////////////////// + +/mob/living/simple_mob/construct/juggernaut + name = "Juggernaut" + real_name = "Juggernaut" + construct_type = "juggernaut" + desc = "A possessed suit of armour driven by the will of the restless dead" + icon = 'icons/mob/mob.dmi' + icon_state = "behemoth" + icon_living = "behemoth" + maxHealth = 300 + health = 300 + response_harm = "harmlessly punches" + harm_intent_damage = 0 + melee_damage_lower = 30 + melee_damage_upper = 40 + attack_armor_pen = 60 //Being punched by a living, floating statue. + attacktext = list("smashed their armoured gauntlet into") + friendly = list("pats") + mob_size = MOB_HUGE + + + movement_cooldown = 6 //Not super fast, but it might catch up to someone in armor who got punched once or twice. + +// environment_smash = 2 // Whatever this gets renamed to, Juggernauts need to break things + + + attack_sound = 'sound/weapons/heavysmash.ogg' + status_flags = 0 + resistance = 10 + construct_spells = list(/spell/aoe_turf/conjure/forcewall/lesser, + /spell/targeted/fortify, + /spell/targeted/construct_advanced/slam + ) + + armor = list( + "melee" = 70, + "bullet" = 30, + "laser" = 30, + "energy" = 30, + "bomb" = 10, + "bio" = 100, + "rad" = 100) + +/mob/living/simple_mob/construct/juggernaut/Life() + weakened = 0 + ..() + +/mob/living/simple_mob/construct/juggernaut/bullet_act(var/obj/item/projectile/P) + var/reflectchance = 80 - round(P.damage/3) + if(prob(reflectchance)) + var/damage_mod = rand(2,4) + var/projectile_dam_type = P.damage_type + var/incoming_damage = (round(P.damage / damage_mod) - (round((P.damage / damage_mod) * 0.3))) + var/armorcheck = run_armor_check(null, P.check_armour) + var/soakedcheck = get_armor_soak(null, P.check_armour) + if(!(istype(P, /obj/item/projectile/energy) || istype(P, /obj/item/projectile/beam))) + visible_message("The [P.name] bounces off of [src]'s shell!", \ + "The [P.name] bounces off of [src]'s shell!") + new /obj/item/weapon/material/shard/shrapnel(src.loc) + if(!(P.damage_type == BRUTE || P.damage_type == BURN)) + projectile_dam_type = BRUTE + incoming_damage = round(incoming_damage / 4) //Damage from strange sources is converted to brute for physical projectiles, though severely decreased. + apply_damage(incoming_damage, projectile_dam_type, null, armorcheck, soakedcheck, is_sharp(P), has_edge(P), P) + return -1 //Doesn't reflect non-beams or non-energy projectiles. They just smack and drop with little to no effect. + else + visible_message("The [P.name] gets reflected by [src]'s shell!", \ + "The [P.name] gets reflected by [src]'s shell!") + damage_mod = rand(3,5) + incoming_damage = (round(P.damage / damage_mod) - (round((P.damage / damage_mod) * 0.3))) + if(!(P.damage_type == BRUTE || P.damage_type == BURN)) + projectile_dam_type = BURN + incoming_damage = round(incoming_damage / 4) //Damage from strange sources is converted to burn for energy-type projectiles, though severely decreased. + apply_damage(incoming_damage, P.damage_type, null, armorcheck, soakedcheck, is_sharp(P), has_edge(P), P) + + // Find a turf near or on the original location to bounce to + if(P.starting) + var/new_x = P.starting.x + pick(0, 0, -1, 1, -2, 2, -2, 2, -2, 2, -3, 3, -3, 3) + var/new_y = P.starting.y + pick(0, 0, -1, 1, -2, 2, -2, 2, -2, 2, -3, 3, -3, 3) + var/turf/curloc = get_turf(src) + + // redirect the projectile + P.redirect(new_x, new_y, curloc, src) + P.reflected = 1 + + return -1 // complete projectile permutation + + return (..(P)) + +/* + * The Behemoth. Admin-allowance only, still try to keep it in some guideline of 'Balanced', even if it means Security has to be fully geared to be so. + */ + +/mob/living/simple_mob/construct/juggernaut/behemoth + name = "Behemoth" + real_name = "Behemoth" + desc = "The pinnacle of occult technology, Behemoths are nothing shy of both an Immovable Object, and Unstoppable Force." + maxHealth = 750 + health = 750 + speak_emote = list("rumbles") + melee_damage_lower = 50 + melee_damage_upper = 50 + attacktext = list("brutally crushed") + friendly = list("pokes") //Anything nice the Behemoth would do would still Kill the Human. Leave it at poke. + attack_sound = 'sound/weapons/heavysmash.ogg' + resistance = 10 + icon_scale = 2 + var/energy = 0 + var/max_energy = 1000 + armor = list( + "melee" = 60, + "bullet" = 60, + "laser" = 60, + "energy" = 30, + "bomb" = 10, + "bio" = 100, + "rad" = 100) + construct_spells = list(/spell/aoe_turf/conjure/forcewall/lesser, + /spell/targeted/fortify, + /spell/targeted/construct_advanced/slam + ) + +/mob/living/simple_mob/construct/juggernaut/behemoth/bullet_act(var/obj/item/projectile/P) + var/reflectchance = 80 - round(P.damage/3) + if(prob(reflectchance)) + visible_message("The [P.name] gets reflected by [src]'s shell!", \ + "The [P.name] gets reflected by [src]'s shell!") + + // Find a turf near or on the original location to bounce to + if(P.starting) + var/new_x = P.starting.x + pick(0, 0, -1, 1, -2, 2, -2, 2, -2, 2, -3, 3, -3, 3) + var/new_y = P.starting.y + pick(0, 0, -1, 1, -2, 2, -2, 2, -2, 2, -3, 3, -3, 3) + var/turf/curloc = get_turf(src) + + // redirect the projectile + P.redirect(new_x, new_y, curloc, src) + P.reflected = 1 + + return -1 // complete projectile permutation + + return (..(P)) \ No newline at end of file diff --git a/code/modules/mob/living/simple_mob/subtypes/occult/constructs/shade.dm b/code/modules/mob/living/simple_mob/subtypes/occult/constructs/shade.dm new file mode 100644 index 0000000000..1a56abcdcd --- /dev/null +++ b/code/modules/mob/living/simple_mob/subtypes/occult/constructs/shade.dm @@ -0,0 +1,48 @@ +//////////////////////////// +// Shade +//////////////////////////// + +/mob/living/simple_mob/construct/shade + name = "Shade" + real_name = "Shade" + desc = "A bound spirit" + icon = 'icons/mob/mob.dmi' + icon_state = "shade" + icon_living = "shade" + icon_dead = "shade_dead" + + response_help = "puts their hand through" + response_disarm = "flails at" + response_harm = "punches" + + melee_damage_lower = 5 + melee_damage_upper = 15 + attack_armor_pen = 100 //It's a ghost/horror from beyond, I ain't gotta explain 100 AP + attacktext = list("drained the life from") + + minbodytemp = 0 + maxbodytemp = 4000 + min_oxy = 0 + max_co2 = 0 + max_tox = 0 + + universal_speak = 1 + + loot_list = list(/obj/item/weapon/ectoplasm = 100) + +/mob/living/simple_mob/construct/shade/attackby(var/obj/item/O as obj, var/mob/user as mob) + if(istype(O, /obj/item/device/soulstone)) + var/obj/item/device/soulstone/S = O; + S.transfer_soul("SHADE", src, user) + return + ..() + +/mob/living/simple_mob/construct/shade/death() + ..() + for(var/mob/M in viewers(src, null)) + if((M.client && !( M.blinded ))) + M.show_message("[src] lets out a contented sigh as their form unwinds.") + + ghostize() + qdel(src) + return \ No newline at end of file diff --git a/code/modules/mob/living/simple_mob/subtypes/occult/constructs/wraith.dm b/code/modules/mob/living/simple_mob/subtypes/occult/constructs/wraith.dm new file mode 100644 index 0000000000..13580bc845 --- /dev/null +++ b/code/modules/mob/living/simple_mob/subtypes/occult/constructs/wraith.dm @@ -0,0 +1,33 @@ +//////////////////////////// +// Wraith +//////////////////////////// + +/mob/living/simple_mob/construct/wraith + name = "Wraith" + real_name = "Wraith" + construct_type = "wraith" + desc = "A wicked bladed shell contraption piloted by a bound spirit." + icon = 'icons/mob/mob.dmi' + icon_state = "floating" + icon_living = "floating" + maxHealth = 200 + health = 200 + melee_damage_lower = 25 + melee_damage_upper = 30 + attack_armor_pen = 15 + attack_sharp = 1 + attack_edge = 1 + attacktext = list("slashed") + friendly = list("pinches") + movement_cooldown = 0 + attack_sound = 'sound/weapons/rapidslice.ogg' + construct_spells = list(/spell/targeted/ethereal_jaunt/shift, + /spell/targeted/ambush_mode + ) + +// environment_smash = 1 // Whatever this gets renamed to, Wraiths need to break things + +/mob/living/simple_mob/construct/wraith/apply_melee_effects(var/atom/A) + if(isliving(A)) + var/mob/living/L = A + L.add_modifier(/datum/modifier/deep_wounds, 30 SECONDS) \ No newline at end of file diff --git a/code/modules/mob/living/simple_mob/subtypes/occult/creature.dm b/code/modules/mob/living/simple_mob/subtypes/occult/creature.dm new file mode 100644 index 0000000000..3cc9df4fa3 --- /dev/null +++ b/code/modules/mob/living/simple_mob/subtypes/occult/creature.dm @@ -0,0 +1,68 @@ +/mob/living/simple_mob/creature + name = "creature" + desc = "A sanity-destroying otherthing." + icon = 'icons/mob/critter.dmi' + icon_state = "otherthing" + icon_living = "otherthing" + icon_dead = "otherthing-dead" + + mob_class = MOB_CLASS_ABERRATION + + faction = "creature" + + maxHealth = 40 + health = 40 + + harm_intent_damage = 8 + + melee_damage_lower = 8 + melee_damage_upper = 15 + attack_armor_pen = 5 //It's a horror from beyond, I ain't gotta explain 5 AP + attack_sharp = 1 + attack_edge = 1 + + attacktext = list("chomped") + attack_sound = 'sound/weapons/bite.ogg' + + speak_emote = list("gibbers") + + ai_holder_type = /datum/ai_holder/simple_mob/melee + +// Strong Variant +/mob/living/simple_mob/creature/strong + maxHealth = 160 + health = 160 + + harm_intent_damage = 5 + melee_damage_lower = 13 + melee_damage_upper = 25 + +// Cult Variant +/mob/living/simple_mob/creature/cult + mob_class = MOB_CLASS_DEMONIC + + faction = "cult" + + min_oxy = 0 + max_oxy = 0 + min_tox = 0 + max_tox = 0 + min_co2 = 0 + max_co2 = 0 + min_n2 = 0 + max_n2 = 0 + minbodytemp = 0 + + supernatural = TRUE + +/mob/living/simple_mob/creature/cult/cultify() + return + +// Strong Cult Variant +/mob/living/simple_mob/creature/cult/strong + maxHealth = 160 + health = 160 + + harm_intent_damage = 5 + melee_damage_lower = 13 + melee_damage_upper = 25 \ No newline at end of file diff --git a/code/modules/mob/living/simple_mob/subtypes/occult/faithless.dm b/code/modules/mob/living/simple_mob/subtypes/occult/faithless.dm new file mode 100644 index 0000000000..1c4ac8876c --- /dev/null +++ b/code/modules/mob/living/simple_mob/subtypes/occult/faithless.dm @@ -0,0 +1,77 @@ +/mob/living/simple_mob/faithless + name = "Faithless" + desc = "The Wish Granter's faith in humanity, incarnate" + icon_state = "faithless" + icon_living = "faithless" + icon_dead = "faithless_dead" + + faction = "faithless" + + mob_class = MOB_CLASS_DEMONIC + + maxHealth = 50 + health = 50 + + response_help = "passes through" + response_disarm = "shoves" + response_harm = "hits" + + harm_intent_damage = 10 + + melee_damage_lower = 10 + melee_damage_upper = 18 + attack_armor_pen = 5 //It's a horror from beyond, I ain't gotta explain 5 AP + + attacktext = list("gripped") + attack_sound = 'sound/hallucinations/growl1.ogg' + + ai_holder_type = /datum/ai_holder/simple_mob/melee + + + taser_kill = FALSE + + min_oxy = 0 + max_oxy = 0 + min_tox = 0 + max_tox = 0 + min_co2 = 0 + max_co2 = 0 + min_n2 = 0 + max_n2 = 0 + minbodytemp = 0 + +/mob/living/simple_mob/faithless/Process_Spacemove(var/check_drift = 0) + return 1 + +/mob/living/simple_mob/faithless/apply_melee_effects(var/atom/A) + if(isliving(A)) + var/mob/living/L = A + if(prob(12)) + L.Weaken(3) + L.visible_message("\the [src] knocks down \the [L]!") + +// Strong Variant +/mob/living/simple_mob/faithless/strong + maxHealth = 100 + health = 100 + + harm_intent_damage = 5 + melee_damage_lower = 13 + melee_damage_upper = 28 + +// Cult Variant +/mob/living/simple_mob/faithless/cult + faction = "cult" + supernatural = TRUE + +/mob/living/simple_mob/faithless/cult/cultify() + return + +// Strong Cult Variant +/mob/living/simple_mob/faithless/cult/strong + maxHealth = 100 + health = 100 + + harm_intent_damage = 5 + melee_damage_lower = 13 + melee_damage_upper = 28 \ No newline at end of file diff --git a/code/modules/mob/living/simple_mob/subtypes/plant/tomato.dm b/code/modules/mob/living/simple_mob/subtypes/plant/tomato.dm new file mode 100644 index 0000000000..79e5c4d349 --- /dev/null +++ b/code/modules/mob/living/simple_mob/subtypes/plant/tomato.dm @@ -0,0 +1,27 @@ +/mob/living/simple_mob/tomato + name = "tomato" + desc = "It's a horrifyingly enormous beef tomato, and it's packing extra beef!" + tt_desc = "X Solanum abominable" + icon_state = "tomato" + icon_living = "tomato" + icon_dead = "tomato_dead" + + mob_class = MOB_CLASS_PLANT + + faction = "plants" + maxHealth = 15 + health = 15 + poison_resist = 1.0 + + response_help = "prods" + response_disarm = "pushes aside" + response_harm = "smacks" + + harm_intent_damage = 5 + melee_damage_upper = 15 + melee_damage_lower = 10 + attacktext = list("mauled") + + ai_holder_type = /datum/ai_holder/simple_mob/melee + + meat_type = /obj/item/weapon/reagent_containers/food/snacks/tomatomeat diff --git a/code/modules/mob/living/simple_mob/subtypes/plant/tree.dm b/code/modules/mob/living/simple_mob/subtypes/plant/tree.dm new file mode 100644 index 0000000000..30c891088c --- /dev/null +++ b/code/modules/mob/living/simple_mob/subtypes/plant/tree.dm @@ -0,0 +1,43 @@ +/mob/living/simple_mob/animal/space/tree + name = "pine tree" + desc = "A pissed off tree-like alien. It seems annoyed with the festivities..." + tt_desc = "X Festivus tyrannus" + icon = 'icons/obj/flora/pinetrees.dmi' + icon_state = "pine_1" + icon_living = "pine_1" + icon_dead = "pine_1" + icon_gib = "pine_1" + + mob_class = MOB_CLASS_PLANT + + faction = "plants" + maxHealth = 250 + health = 250 + poison_resist = 1.0 + + response_help = "brushes" + response_disarm = "pushes" + response_harm = "hits" + + harm_intent_damage = 5 + melee_damage_lower = 8 + melee_damage_upper = 12 + attacktext = list("bitten") + attack_sound = 'sound/weapons/bite.ogg' + + meat_type = /obj/item/weapon/reagent_containers/food/snacks/xenomeat + + pixel_x = -16 + +/mob/living/simple_mob/animal/space/tree/apply_melee_effects(var/atom/A) + if(isliving(A)) + var/mob/living/L = A + if(prob(15)) + L.Weaken(3) + L.visible_message(span("danger", "\The [src] knocks down \the [L]!")) + +/mob/living/simple_mob/animal/space/tree/death() + ..(null,"is hacked into pieces!") + playsound(loc, 'sound/effects/woodcutting.ogg', 100, 1) + new /obj/item/stack/material/wood(loc) + qdel(src) \ No newline at end of file diff --git a/code/modules/mob/living/simple_mob/subtypes/slime/feral/feral.dm b/code/modules/mob/living/simple_mob/subtypes/slime/feral/feral.dm new file mode 100644 index 0000000000..91aa0b0a79 --- /dev/null +++ b/code/modules/mob/living/simple_mob/subtypes/slime/feral/feral.dm @@ -0,0 +1,94 @@ +// These slimes lack certain xenobio features but get more combat-oriented goodies. Generally these are more oriented towards Explorers than Xenobiologists. + +/mob/living/simple_mob/slime/feral + name = "feral slime" + desc = "The result of slimes escaping containment from some xenobiology lab. \ + Having the means to successfully escape their lab, as well as having to survive on a harsh, cold world has made these \ + creatures rival the ferocity of other apex predators in this region of Sif. It is considered to be a very invasive species." + description_info = "Note that processing this large slime will give six cores." + + cores = 6 // Xenobio will love getting their hands on these. + + icon_state = "slime adult" + icon_living = "slime adult" + icon_dead = "slime adult dead" + glow_range = 5 + glow_intensity = 4 + icon_scale = 2 // Twice as big as the xenobio variant. + pixel_y = -10 // Since the base sprite isn't centered properly, the pixel auto-adjustment needs some help. + default_pixel_y = -10 // To prevent resetting above var. + + maxHealth = 300 + movement_cooldown = 10 + melee_attack_delay = 0.5 SECONDS + + ai_holder_type = /datum/ai_holder/simple_mob/ranged/pointblank + + +// Slimebatoning/xenotasing it just makes it mad at you (which can be good if you're heavily armored and your friends aren't). +/mob/living/simple_mob/slime/feral/slimebatoned(mob/living/user, amount) + taunt(user, TRUE) + + +// *********** +// *Dark Blue* +// *********** + +// Dark Blue feral slimes can fire a strong icicle projectile every few seconds. The icicle hits hard and has some armor penetration. +// They also have a similar aura as their xenobio counterparts, which inflicts cold damage. It also chills non-resistant mobs. + +/mob/living/simple_mob/slime/feral/dark_blue + name = "dark blue feral slime" + color = "#2398FF" + glow_toggle = TRUE + slime_color = "dark blue" + coretype = /obj/item/slime_extract/dark_blue + cold_resist = 1 // Complete immunity. + minbodytemp = 0 + cold_damage_per_tick = 0 + + projectiletype = /obj/item/projectile/icicle + base_attack_cooldown = 2 SECONDS + ranged_attack_delay = 1 SECOND + + player_msg = "You can fire an icicle projectile every two seconds. It hits hard, and armor has a hard time resisting it.
      \ + You are also immune to the cold, and you cause enemies around you to suffer periodic harm from the cold, if unprotected.
      \ + Unprotected enemies are also Chilled, making them slower and less evasive, and disabling effects last longer." + +/obj/item/projectile/icicle + name = "icicle" + icon_state = "ice_2" + damage = 40 + damage_type = BRUTE + check_armour = "melee" + armor_penetration = 30 + speed = 2 + icon_scale = 2 // It hits like a truck. + sharp = TRUE + +/obj/item/projectile/icicle/on_impact(atom/A) + playsound(get_turf(A), "shatter", 70, 1) + return ..() + +/obj/item/projectile/icicle/get_structure_damage() + return damage / 2 // They're really deadly against mobs, but less effective against solid things. + +/mob/living/simple_mob/slime/feral/dark_blue/handle_special() + if(stat != DEAD) + cold_aura() + ..() + +/mob/living/simple_mob/slime/feral/dark_blue/proc/cold_aura() + for(var/mob/living/L in view(3, src)) + if(L == src) + continue + chill(L) + +/mob/living/simple_mob/slime/feral/dark_blue/proc/chill(mob/living/L) + L.inflict_cold_damage(10) + if(L.get_cold_protection() < 1) + L.add_modifier(/datum/modifier/chilled, 5 SECONDS, src) + + if(L.has_AI()) // Other AIs should react to hostile auras. + L.ai_holder.react_to_attack(src) + diff --git a/code/modules/mob/living/simple_mob/subtypes/slime/slime.dm b/code/modules/mob/living/simple_mob/subtypes/slime/slime.dm new file mode 100644 index 0000000000..083823d883 --- /dev/null +++ b/code/modules/mob/living/simple_mob/subtypes/slime/slime.dm @@ -0,0 +1,217 @@ +// The top-level slime defines. Xenobio slimes and feral slimes will inherit from this. + +/mob/living/simple_mob/slime + name = "slime" + desc = "It's a slime." + tt_desc = "A Macrolimbus vulgaris" + icon = 'icons/mob/slime2.dmi' + icon_state = "slime baby" + icon_living = "slime baby" + icon_dead = "slime baby dead" + var/shiny = FALSE // If true, will add a 'shiny' overlay. + var/icon_state_override = null // Used for special slime appearances like the rainbow slime. + color = "#CACACA" + glow_range = 3 + glow_intensity = 2 + gender = NEUTER + + faction = "slime" // Note that slimes are hostile to other slimes of different color regardless of faction (unless Unified). + maxHealth = 150 + movement_cooldown = 0 + pass_flags = PASSTABLE + makes_dirt = FALSE // Goop + mob_class = MOB_CLASS_SLIME + + response_help = "pets" + + // Atmos stuff. + minbodytemp = T0C-30 + heat_damage_per_tick = 0 + cold_damage_per_tick = 40 + + min_oxy = 0 + max_oxy = 0 + min_tox = 0 + max_tox = 0 + min_co2 = 0 + max_co2 = 0 + min_n2 = 0 + max_n2 = 0 + unsuitable_atoms_damage = 0 + shock_resist = 0.5 // Slimes are resistant to electricity, and it actually charges them. + taser_kill = FALSE + water_resist = 0 // Slimes are very weak to water. + + melee_damage_lower = 10 + melee_damage_upper = 15 + base_attack_cooldown = 10 // One attack a second. + attack_sound = 'sound/weapons/bite.ogg' + attacktext = list("glomped") + speak_emote = list("chirps") + friendly = list("pokes") + + ai_holder_type = /datum/ai_holder/simple_mob/melee + say_list_type = /datum/say_list/slime + + var/cores = 1 // How many cores you get when placed in a Processor. + var/obj/item/clothing/head/hat = null // The hat the slime may be wearing. + var/slime_color = "grey" // Used for updating the name and for slime color-ism. + var/unity = FALSE // If true, slimes will consider other colors as their own. Other slimes will see this slime as the same color as well. + var/coretype = /obj/item/slime_extract/grey // What core is inside the slime, and what you get from the processor. + var/reagent_injected = null // Some slimes inject reagents on attack. This tells the game what reagent to use. + var/injection_amount = 5 // This determines how much. + var/mood = ":3" // Icon to use to display 'mood', as an overlay. + + can_enter_vent_with = list(/obj/item/clothing/head) + +/datum/say_list/slime + speak = list("Blorp...", "Blop...") + emote_see = list("bounces", "jiggles", "sways") + emote_hear = list("squishes") + +/mob/living/simple_mob/slime/Initialize() + verbs += /mob/living/proc/ventcrawl + update_mood() + glow_color = color + handle_light() + update_icon() + return ..() + +/mob/living/simple_mob/slime/Destroy() + if(hat) + drop_hat() + return ..() + +/mob/living/simple_mob/slime/death() + // Make dead slimes stop glowing. + glow_toggle = FALSE + handle_light() + ..() + +/mob/living/simple_mob/slime/revive() + // Make revived slimes resume glowing. + glow_toggle = initial(glow_toggle) + handle_light() + ..() + +/mob/living/simple_mob/slime/update_icon() + ..() // Do the regular stuff first. + + if(stat != DEAD) + // General slime shine. + var/image/I = image(icon, src, "slime light") + I.appearance_flags = RESET_COLOR + add_overlay(I) + + // 'Shiny' overlay, for gemstone-slimes. + if(shiny) + I = image(icon, src, "slime shiny") + I.appearance_flags = RESET_COLOR + add_overlay(I) + + // Mood overlay. + I = image(icon, src, "aslime-[mood]") + I.appearance_flags = RESET_COLOR + add_overlay(I) + + // Hat simulator. + if(hat) + var/hat_state = hat.item_state ? hat.item_state : hat.icon_state + var/image/I = image('icons/mob/head.dmi', src, hat_state) + I.pixel_y = -7 // Slimes are small. + I.appearance_flags = RESET_COLOR + add_overlay(I) + +// Controls the 'mood' overlay. Overrided in subtypes for specific behaviour. +/mob/living/simple_mob/slime/proc/update_mood() + mood = "feral" // This is to avoid another override in the /feral subtype. + +/mob/living/simple_mob/slime/proc/unify() + unity = TRUE + +// Interface override, because slimes are supposed to attack other slimes of different color regardless of faction. +// (unless Unified, of course). +/mob/living/simple_mob/slime/IIsAlly(mob/living/L) + . = ..() + if(istype(L, /mob/living/simple_mob/slime)) // Slimes should care about their color subfaction compared to another's. + var/mob/living/simple_mob/slime/S = L + if(S.unity || src.unity) + return TRUE + if(S.slime_color == src.slime_color) + return TRUE + else + return FALSE + // The other stuff was already checked in parent proc, and the . variable will implicitly return the correct value. + +// Slimes regenerate passively. +/mob/living/simple_mob/slime/handle_special() + adjustOxyLoss(-1) + adjustToxLoss(-1) + adjustFireLoss(-1) + adjustCloneLoss(-1) + adjustBruteLoss(-1) + +// Clicked on by empty hand. +/mob/living/simple_mob/slime/attack_hand(mob/living/L) + if(L.a_intent == I_GRAB && hat) + remove_hat(L) + else + ..() + +// Clicked on while holding an object. +/mob/living/simple_mob/slime/attackby(obj/item/I, mob/user) + if(istype(I, /obj/item/clothing/head)) // Handle hat simulator. + give_hat(I, user) + return + + // Otherwise they're probably fighting the slime. + if(prob(25)) + visible_message(span("warning", "\The [user]'s [I] passes right through \the [src]!")) + user.setClickCooldown(user.get_attack_speed(I)) + return + ..() + +// Called when hit with an active slimebaton (or xeno taser). +// Subtypes react differently. +/mob/living/simple_mob/slime/proc/slimebatoned(mob/living/user, amount) + return + +// Hat simulator +/mob/living/simple_mob/slime/proc/give_hat(var/obj/item/clothing/head/new_hat, var/mob/living/user) + if(!istype(new_hat)) + to_chat(user, span("warning", "\The [new_hat] isn't a hat.")) + return + if(hat) + to_chat(user, span("warning", "\The [src] is already wearing \a [hat].")) + return + else + user.drop_item(new_hat) + hat = new_hat + new_hat.forceMove(src) + to_chat(user, span("notice", "You place \a [new_hat] on \the [src]. How adorable!")) + update_icon() + return + +/mob/living/simple_mob/slime/proc/remove_hat(var/mob/living/user) + if(!hat) + to_chat(user, "\The [src] doesn't have a hat to remove.") + else + hat.forceMove(get_turf(src)) + user.put_in_hands(hat) + to_chat(user, "You take away \the [src]'s [hat.name]. How mean.") + hat = null + update_icon() + +/mob/living/simple_mob/slime/proc/drop_hat() + if(!hat) + return + hat.forceMove(get_turf(src)) + hat = null + update_icon() + +/mob/living/simple_mob/slime/speech_bubble_appearance() + return "slime" + +/mob/living/simple_mob/slime/proc/squish() + playsound(src.loc, 'sound/effects/slime_squish.ogg', 50, 0) + visible_message("\The [src] squishes!") \ No newline at end of file diff --git a/code/modules/mob/living/simple_mob/subtypes/slime/xenobio/combat.dm b/code/modules/mob/living/simple_mob/subtypes/slime/xenobio/combat.dm new file mode 100644 index 0000000000..2cda9bfc7e --- /dev/null +++ b/code/modules/mob/living/simple_mob/subtypes/slime/xenobio/combat.dm @@ -0,0 +1,76 @@ +// Code for slimes attacking other things. + +// Slime attacks change based on intent. +/mob/living/simple_mob/slime/xenobio/apply_attack(mob/living/L, damage_to_do) + if(istype(L)) + switch(a_intent) + if(I_HELP) // This shouldn't happen but just in case. + return FALSE + + if(I_DISARM) + var/stun_power = between(0, power_charge + rand(0, 3), 10) + + if(ishuman(L)) + var/mob/living/carbon/human/H = L + stun_power *= max(H.species.siemens_coefficient, 0) + + if(prob(stun_power * 10)) // Try an electric shock. + power_charge = max(0, power_charge - 3) + L.visible_message( + span("danger", "\The [src] has shocked \the [L]!"), + span("danger", "\The [src] has shocked you!") + ) + playsound(src, 'sound/weapons/Egloves.ogg', 75, 1) + L.Weaken(4) + L.Stun(4) + do_attack_animation(L) + if(L.buckled) + L.buckled.unbuckle_mob() // To prevent an exploit where being buckled prevents slimes from jumping on you. + L.stuttering = max(L.stuttering, stun_power) + + var/datum/effect/effect/system/spark_spread/s = new /datum/effect/effect/system/spark_spread + s.set_up(5, 1, L) + s.start() + + if(prob(stun_power * 10) && stun_power >= 8) + L.adjustFireLoss(power_charge * rand(1, 2)) + return FALSE + + else if(prob(20)) // Try to do a regular disarm attack. + L.visible_message( + span("danger", "\The [src] has pounced at \the [L]!"), + span("danger", "\The [src] has pounced at you!") + ) + playsound(src, 'sound/weapons/thudswoosh.ogg', 75, 1) + L.Weaken(2) + do_attack_animation(L) + if(L.buckled) + L.buckled.unbuckle_mob() // To prevent an exploit where being buckled prevents slimes from jumping on you. + return FALSE + + else // Failed to do anything this time. + L.visible_message( + span("warning", "\The [src] has tried to pounce at \the [L]!"), + span("warning", "\The [src] has tried to pounce at you!") + ) + playsound(src, 'sound/weapons/punchmiss.ogg', 75, 1) + do_attack_animation(L) + return FALSE + + if(I_GRAB) + start_consuming(L) + return FALSE + + if(I_HURT) + return ..() // Regular stuff. + else + return ..() // Do the regular stuff if we're hitting a window/mech/etc. + +/mob/living/simple_mob/slime/xenobio/apply_melee_effects(mob/living/L) + if(istype(L) && a_intent == I_HURT) + // Pump them full of toxins, if able. + if(L.reagents && L.can_inject() && reagent_injected) + L.reagents.add_reagent(reagent_injected, injection_amount) + + // Feed off of their flesh, if able. + consume(L, 5) diff --git a/code/modules/mob/living/simple_mob/subtypes/slime/xenobio/consumption.dm b/code/modules/mob/living/simple_mob/subtypes/slime/xenobio/consumption.dm new file mode 100644 index 0000000000..b997dde35d --- /dev/null +++ b/code/modules/mob/living/simple_mob/subtypes/slime/xenobio/consumption.dm @@ -0,0 +1,169 @@ +// Handles hunger, starvation, growth, and eatting humans. + +// Might be best to make this a /mob/living proc and override. +/mob/living/simple_mob/slime/xenobio/proc/adjust_nutrition(input) + nutrition = between(0, nutrition + input, get_max_nutrition()) + + if(input > 0) + // Gain around one level per 50 nutrition. + if(prob(input * 2)) + power_charge = min(power_charge++, 10) + if(power_charge == 10) + adjustToxLoss(-10) + + // Heal 1 point of damage per 5 nutrition coming in. + adjustBruteLoss(-input * 0.2) + adjustFireLoss(-input * 0.2) + adjustToxLoss(-input * 0.2) + adjustOxyLoss(-input * 0.2) + adjustCloneLoss(-input * 0.2) + + +/mob/living/simple_mob/slime/xenobio/proc/get_max_nutrition() // Can't go above it + return is_adult ? 1200 : 1000 + +/mob/living/simple_mob/slime/xenobio/proc/get_grow_nutrition() // Above it we grow, below it we can eat + return is_adult ? 1000 : 800 + +/mob/living/simple_mob/slime/xenobio/proc/get_hunger_nutrition() // Below it we will always eat + return is_adult ? 600 : 500 + +/mob/living/simple_mob/slime/xenobio/proc/get_starve_nutrition() // Below it we will eat before everything else + return is_adult ? 300 : 200 + +// Called by Life(). +/mob/living/simple_mob/slime/xenobio/proc/handle_nutrition() + if(harmless) + return + + if(prob(15)) + adjust_nutrition(is_adult ? -2 : -1) // Adult slimes get hungry faster. + + if(nutrition <= get_starve_nutrition()) + handle_starvation() + + else if(nutrition >= get_grow_nutrition() && amount_grown < 10) + adjust_nutrition(-20) + amount_grown = between(0, amount_grown + 1, 10) + +// Called if above proc happens while below a nutrition threshold. +/mob/living/simple_mob/slime/xenobio/proc/handle_starvation() + if(nutrition < get_starve_nutrition() && !client) // if a slime is starving, it starts losing its friends + if(friends.len && prob(1)) + var/mob/nofriend = pick(friends) + if(nofriend) + friends -= nofriend + say("[nofriend]... food now...") + + if(nutrition <= 0) + adjustToxLoss(rand(1,3)) + if(client && prob(5)) + to_chat(src, span("danger", "You are starving!")) + + +/mob/living/simple_mob/slime/xenobio/proc/handle_consumption() + if(victim && !stat) + if(istype(victim) && consume(victim, 20)) + if(prob(25)) + to_chat(src, span("notice", "You continue absorbing \the [victim].")) + + else + var/list/feedback = list( + "This subject is incompatable", + "This subject does not have a life energy", + "This subject is empty", + "I am not satisfied", + "I can not feed from this subject", + "I do not feel nourished", + "This subject is not food" + ) + to_chat(src, span("warning", "[pick(feedback)]...")) + stop_consumption() + + if(victim) + victim.updatehealth() + + else + stop_consumption() + +/mob/living/simple_mob/slime/xenobio/proc/start_consuming(mob/living/L) + if(!can_consume(L)) + return + if(!Adjacent(L)) + return + + step_towards(src, L) // Get on top of them to feed. + if(loc != L.loc) + return + + if(L.buckle_mob(src, forced = TRUE)) + victim = L + update_icon() + set_AI_busy(TRUE) // Don't want the AI to interfere with eatting. + victim.visible_message( + span("danger", "\The [src] latches onto \the [victim]!"), + span("critical", "\The [src] latches onto you!") + ) + +/mob/living/simple_mob/slime/xenobio/proc/stop_consumption(mob/living/L) + if(!victim) + return + victim.unbuckle_mob() + victim.visible_message( + span("notice", "\The [src] slides off of [victim]!"), + span("notice", "\The [src] slides off of you!") + ) + victim = null + update_icon() + set_AI_busy(FALSE) // Resume normal operations. + +/mob/living/simple_mob/slime/xenobio/proc/can_consume(mob/living/L) + if(!L || !istype(L)) + to_chat(src, "This subject is incomparable...") + return FALSE + if(harmless) + to_chat(src, "I am pacified... I cannot eat...") + return FALSE + if(L.mob_class & MOB_CLASS_SLIME) + to_chat(src, "I cannot feed on other slimes...") + return FALSE + if(L.isSynthetic()) + to_chat(src, "This subject is not biological...") + return FALSE + if(L.getarmor(null, "bio") >= 75) + to_chat(src, "I cannot reach this subject's biological matter...") + return FALSE + if(!Adjacent(L)) + to_chat(src, "This subject is too far away...") + return FALSE + if(L.getCloneLoss() >= L.getMaxHealth() * 1.5) + to_chat(src, "This subject does not have an edible life energy...") + return FALSE + if(L.has_buckled_mobs()) + for(var/A in L.buckled_mobs) + if(istype(A, /mob/living/simple_mob/slime/xenobio)) + if(A != src) + to_chat(src, "\The [A] is already feeding on this subject...") + return FALSE + return TRUE + +// This does the actual damage, as well as give nutrition and heals. +// Assuming no bio armor, calling consume(10) will result in; +// 6 clone damage to victim +// 4 tox damage to victim. +// 25 nutrition for the slime. +// 2 points of damage healed on the slime (as a result of the nutrition). +// 50% of giving +1 charge to the slime (same as above). +/mob/living/simple_mob/slime/xenobio/proc/consume(mob/living/victim, amount) + if(can_consume(victim)) + var/armor_modifier = abs((victim.getarmor(null, "bio") / 100) - 1) + var/damage_done = amount * armor_modifier + if(damage_done > 0) + victim.adjustCloneLoss(damage_done * 0.6) + victim.adjustToxLoss(damage_done * 0.4) + adjust_nutrition(damage_done * 5) + Beam(victim, icon_state = "slime_consume", time = 8) + to_chat(src, span("notice", "You absorb some biomaterial from \the [victim].")) + to_chat(victim, span("danger", "\The [src] consumes some of your flesh!")) + return TRUE + return FALSE diff --git a/code/modules/mob/living/simple_mob/subtypes/slime/xenobio/defense.dm b/code/modules/mob/living/simple_mob/subtypes/slime/xenobio/defense.dm new file mode 100644 index 0000000000..dc8c2be032 --- /dev/null +++ b/code/modules/mob/living/simple_mob/subtypes/slime/xenobio/defense.dm @@ -0,0 +1,54 @@ +// Contains code for slimes getting attacked, beat, touched, etc, and reacting to that. + +// Clicked on by empty hand. +// Handles trying to wrestle a slime off of someone being eatten. +/mob/living/simple_mob/slime/xenobio/attack_hand(mob/living/L) + if(victim) // Are we eating someone? + var/fail_odds = 30 + if(victim == L) // Harder to get the slime off if it's you that is being eatten. + fail_odds = 60 + + if(prob(fail_odds)) + visible_message(span("warning", "\The [L] attempts to wrestle \the [name] off!")) + playsound(loc, 'sound/weapons/punchmiss.ogg', 25, 1, -1) + + else + visible_message(span("warning", "\The [L] manages to wrestle \the [name] off!")) + playsound(loc, 'sound/weapons/thudswoosh.ogg', 50, 1, -1) + + if(prob(40)) + adjust_discipline(1) // Do this here so that it will be justified discipline. + stop_consumption() + step_away(src, L) + + else + ..() + +// Handles the actual harming by a melee weapon. +/mob/living/simple_mob/slime/xenobio/hit_with_weapon(obj/item/I, mob/living/user, effective_force, hit_zone) + ..() // Apply damage and etc. + if(!stat && effective_force > 0) + if(!is_justified_to_discipline()) // Wow, buddy, why am I getting attacked?? + adjust_discipline(1) // This builds resentment due to being unjustified. + + if(user in friends) // Friend attacking us for no reason. + if(prob(25)) + friends -= user + say("[user]... not friend...") + + else // We're actually being bad. + var/prob_to_back_down = round(effective_force) + if(is_adult) + prob_to_back_down /= 2 + if(prob(prob_to_back_down)) + adjust_discipline(2) // Justified. + +// Shocked grilles don't hurt slimes, and in fact give them charge. +/mob/living/simple_mob/slime/xenobio/electrocute_act(shock_damage, obj/source, siemens_coeff = 1.0, def_zone = null) + power_charge = between(0, power_charge + round(shock_damage / 10), 10) + to_chat(src, span("notice", "\The [source] shocks you, and it charges you.")) + +// Getting slimebatoned/xenotased. +/mob/living/simple_mob/slime/xenobio/slimebatoned(mob/living/user, amount) + adjust_discipline(round(amount/2)) + Weaken(amount) // This needs to come afterwards or else it will always be considered abuse to the slime. diff --git a/code/modules/mob/living/simple_mob/subtypes/slime/xenobio/discipline.dm b/code/modules/mob/living/simple_mob/subtypes/slime/xenobio/discipline.dm new file mode 100644 index 0000000000..5360dab7b3 --- /dev/null +++ b/code/modules/mob/living/simple_mob/subtypes/slime/xenobio/discipline.dm @@ -0,0 +1,23 @@ +// Handles the subjugation of slimes by force. +// Mostly a way for things to talk to the AI indirectly. + +/mob/living/simple_mob/slime/xenobio/proc/adjust_discipline(amount, silent) + if(amount > 0) + to_chat(src, span("warning", "You've been disciplined!")) + if(has_AI()) + var/datum/ai_holder/simple_mob/xenobio_slime/AI = ai_holder + AI.adjust_discipline(amount, silent) + + +/mob/living/simple_mob/slime/xenobio/proc/is_justified_to_discipline() + if(victim) // Punish if eating someone that isn't a monkey. + if(ishuman(victim)) + var/mob/living/carbon/human/H = victim + if(istype(H.species, /datum/species/monkey)) + return FALSE + return TRUE + + else if(has_AI()) // Now for thoughtcrimes. + var/datum/ai_holder/simple_mob/xenobio_slime/AI = ai_holder + return AI.is_justified_to_discipline() // Will return true if targeting a non-monkey. + return FALSE diff --git a/code/modules/mob/living/simple_mob/subtypes/slime/xenobio/subtypes.dm b/code/modules/mob/living/simple_mob/subtypes/slime/xenobio/subtypes.dm new file mode 100644 index 0000000000..cd8c840d1f --- /dev/null +++ b/code/modules/mob/living/simple_mob/subtypes/slime/xenobio/subtypes.dm @@ -0,0 +1,784 @@ +// Here are where all the other colors of slime live. +// They will generally fight each other if not Unified, meaning the xenobiologist has to seperate them. + +// Tier 1. + +/mob/living/simple_mob/slime/xenobio/purple + desc = "This slime is rather toxic to handle, as it is poisonous." + color = "#CC23FF" + slime_color = "purple" + coretype = /obj/item/slime_extract/purple + reagent_injected = "toxin" + + description_info = "This slime spreads a toxin when it attacks. A biosuit or other thick armor can protect from the toxic attack." + player_msg = "You inject a harmful toxin when attacking." + + slime_mutation = list( + /mob/living/simple_mob/slime/xenobio/dark_purple, + /mob/living/simple_mob/slime/xenobio/dark_blue, + /mob/living/simple_mob/slime/xenobio/green, + /mob/living/simple_mob/slime/xenobio + ) + +/mob/living/simple_mob/slime/xenobio/orange + desc = "This slime is known to be flammable and can ignite enemies." + color = "#FFA723" + slime_color = "orange" + coretype = /obj/item/slime_extract/orange + melee_damage_lower = 5 + melee_damage_upper = 5 + heat_resist = 1 + + description_info = "The slime is immune to burning attacks, and attacks from this slime will burn you, and can ignite you. \ + A firesuit can protect from the burning attacks of this slime." + player_msg = "You inflict burning attacks, which causes additional damage, makes the target more flammable, and has a chance to ignite them.
      \ + You are also immune to burning attacks." + + slime_mutation = list( + /mob/living/simple_mob/slime/xenobio/dark_purple, + /mob/living/simple_mob/slime/xenobio/yellow, + /mob/living/simple_mob/slime/xenobio/red, + /mob/living/simple_mob/slime/xenobio + ) + +/mob/living/simple_mob/slime/xenobio/orange/apply_melee_effects(atom/A) + ..() + if(isliving(A)) + var/mob/living/L = A + L.inflict_heat_damage(is_adult ? 10 : 5) + to_chat(src, span("span", "You burn \the [L].")) + to_chat(L, span("danger", "You've been burned by \the [src]!")) + L.adjust_fire_stacks(1) + if(prob(12)) + L.IgniteMob() + +/mob/living/simple_mob/slime/xenobio/blue + desc = "This slime produces 'cryotoxin' and uses it against their foes. Very deadly to other slimes." + color = "#19FFFF" + slime_color = "blue" + coretype = /obj/item/slime_extract/blue + reagent_injected = "cryotoxin" + cold_resist = 0.50 // Not as strong as dark blue, which has immunity. + + description_info = "The slime is resistant to the cold, and attacks from this slime can inject cryotoxin into you. \ + A biosuit or other thick armor can protect from the injection." + player_msg = "You inject cryotoxin on attack, which causes them to get very cold, slowing them down and harming them over time.
      \ + You are also resistant to cold attacks." + + slime_mutation = list( + /mob/living/simple_mob/slime/xenobio/dark_blue, + /mob/living/simple_mob/slime/xenobio/silver, + /mob/living/simple_mob/slime/xenobio/pink, + /mob/living/simple_mob/slime/xenobio + ) + + +/mob/living/simple_mob/slime/xenobio/metal + desc = "This slime is a lot more resilient than the others, due to having a metamorphic metallic and sloped surface." + color = "#5F5F5F" + slime_color = "metal" + shiny = TRUE + coretype = /obj/item/slime_extract/metal + + description_info = "This slime is a lot more durable and tough to damage than the others. It also seems to provoke others to attack it over others." + player_msg = "You are more resilient and armored than more slimes. Your attacks will also encourage less intelligent enemies to focus on you." + + maxHealth = 250 + maxHealth_adult = 350 + + // The sloped armor. + // It's resistant to most weapons (but a spraybottle still kills it rather fast). + armor = list( + "melee" = 25, + "bullet" = 25, + "laser" = 25, + "energy" = 50, + "bomb" = 80, + "bio" = 100, + "rad" = 100 + ) + + armor_soak = list( + "melee" = 5, + "bullet" = 5, + "laser" = 5, + "energy" = 0, + "bomb" = 0, + "bio" = 0, + "rad" = 0 + ) + + slime_mutation = list( + /mob/living/simple_mob/slime/xenobio/silver, + /mob/living/simple_mob/slime/xenobio/yellow, + /mob/living/simple_mob/slime/xenobio/gold, + /mob/living/simple_mob/slime/xenobio + ) + +/mob/living/simple_mob/slime/xenobio/metal/apply_melee_effects(atom/A) + ..() + if(isliving(A)) + var/mob/living/L = A + L.taunt(src, TRUE) // We're the party tank now. + +// Tier 2 + +/mob/living/simple_mob/slime/xenobio/yellow + desc = "This slime is very conductive, and is known to use electricity as a means of defense moreso than usual for slimes." + color = "#FFF423" + slime_color = "yellow" + coretype = /obj/item/slime_extract/yellow + melee_damage_lower = 5 + melee_damage_upper = 5 + shock_resist = 1 + + projectiletype = /obj/item/projectile/beam/lightning/slime + projectilesound = 'sound/effects/lightningbolt.ogg' + glow_toggle = TRUE + + description_info = "In addition to being immune to electrical shocks, this slime will fire ranged lightning attacks at \ + enemies if they are at range, inflict shocks upon entities they attack, and generate electricity for their stun \ + attack faster than usual. Insulative or reflective armor can protect from these attacks." + player_msg = "You have a ranged electric attack. You also shock enemies you attack, and your electric stun attack charges passively.
      \ + You are also immune to shocking attacks." + + slime_mutation = list( + /mob/living/simple_mob/slime/xenobio/bluespace, + /mob/living/simple_mob/slime/xenobio/bluespace, + /mob/living/simple_mob/slime/xenobio/metal, + /mob/living/simple_mob/slime/xenobio/orange + ) + +/mob/living/simple_mob/slime/xenobio/yellow/apply_melee_effects(atom/A) + ..() + if(isliving(A)) + var/mob/living/L = A + L.inflict_shock_damage(is_adult ? 10 : 5) + to_chat(src, span("span", "You shock \the [L].")) + to_chat(L, span("danger", "You've been shocked by \the [src]!")) + +/mob/living/simple_mob/slime/xenobio/yellow/handle_special() + if(stat == CONSCIOUS) + if(prob(25)) + power_charge = between(0, power_charge + 1, 10) + ..() + +/obj/item/projectile/beam/lightning/slime + power = 10 + fire_sound = 'sound/effects/lightningbolt.ogg' + + +/mob/living/simple_mob/slime/xenobio/dark_purple + desc = "This slime produces ever-coveted phoron. Risky to handle but very much worth it." + color = "#660088" + slime_color = "dark purple" + coretype = /obj/item/slime_extract/dark_purple + reagent_injected = "phoron" + + description_info = "This slime applies phoron to enemies it attacks. A biosuit or other thick armor can protect from the toxic attack. \ + If hit with a burning attack, it will erupt in flames." + player_msg = "You inject phoron into enemies you attack.
      \ + You will erupt into flames if harmed by fire!" + + slime_mutation = list( + /mob/living/simple_mob/slime/xenobio/purple, + /mob/living/simple_mob/slime/xenobio/orange, + /mob/living/simple_mob/slime/xenobio/ruby, + /mob/living/simple_mob/slime/xenobio/ruby + ) + +/mob/living/simple_mob/slime/xenobio/dark_purple/proc/ignite() + visible_message(span("critical", "\The [src] erupts in an inferno!")) + for(var/turf/simulated/target_turf in view(2, src)) + target_turf.assume_gas("phoron", 30, 1500+T0C) + spawn(0) + target_turf.hotspot_expose(1500+T0C, 400) + qdel(src) + +/mob/living/simple_mob/slime/xenobio/dark_purple/ex_act(severity) + log_and_message_admins("[src] ignited due to a chain reaction with an explosion.") + ignite() + +/mob/living/simple_mob/slime/xenobio/dark_purple/fire_act(datum/gas_mixture/air, temperature, volume) + log_and_message_admins("[src] ignited due to exposure to fire.") + ignite() + +/mob/living/simple_mob/slime/xenobio/dark_purple/bullet_act(var/obj/item/projectile/P, var/def_zone) + if(P.damage_type && P.damage_type == BURN && P.damage) // Most bullets won't trigger the explosion, as a mercy towards Security. + log_and_message_admins("[src] ignited due to bring hit by a burning projectile[P.firer ? " by [key_name(P.firer)]" : ""].") + ignite() + else + ..() + +/mob/living/simple_mob/slime/xenobio/dark_purple/attackby(var/obj/item/weapon/W, var/mob/user) + if(istype(W) && W.force && W.damtype == BURN) + log_and_message_admins("[src] ignited due to being hit with a burning weapon ([W]) by [key_name(user)].") + ignite() + else + ..() + + + +/mob/living/simple_mob/slime/xenobio/dark_blue + desc = "This slime makes other entities near it feel much colder, and is more resilient to the cold. It tends to kill other slimes rather quickly." + color = "#2398FF" + glow_toggle = TRUE + slime_color = "dark blue" + coretype = /obj/item/slime_extract/dark_blue + melee_damage_lower = 5 + melee_damage_upper = 5 + cold_resist = 1 + + description_info = "This slime is immune to the cold, however water will still kill it. Its presense, as well as its attacks, will \ + also cause you additional harm from the cold. A winter coat or other cold-resistant clothing can protect from this." + player_msg = "You are immune to the cold, inflict additional cold damage on attack, and cause nearby entities to suffer from coldness." + + slime_mutation = list( + /mob/living/simple_mob/slime/xenobio/purple, + /mob/living/simple_mob/slime/xenobio/blue, + /mob/living/simple_mob/slime/xenobio/cerulean, + /mob/living/simple_mob/slime/xenobio/cerulean + ) + + minbodytemp = 0 + cold_damage_per_tick = 0 + +/mob/living/simple_mob/slime/xenobio/dark_blue/handle_special() + if(stat != DEAD) + cold_aura() + ..() + +/mob/living/simple_mob/slime/xenobio/dark_blue/proc/cold_aura() + for(var/mob/living/L in view(2, src)) + if(L == src) + continue + chill(L) + + var/turf/T = get_turf(src) + var/datum/gas_mixture/env = T.return_air() + if(env) + env.add_thermal_energy(-10 * 1000) + +/mob/living/simple_mob/slime/xenobio/dark_blue/apply_melee_effects(atom/A) + ..() + if(isliving(A)) + var/mob/living/L = A + chill(L) + to_chat(src, span("span", "You chill \the [L].")) + to_chat(L, span("danger", "You've been chilled by \the [src]!")) + + +/mob/living/simple_mob/slime/xenobio/dark_blue/proc/chill(mob/living/L) + L.inflict_cold_damage(is_adult ? 10 : 5) + if(L.get_cold_protection() < 1 && L.has_AI()) // Harmful auras will make the AI react to its bearer. + L.ai_holder.react_to_attack(src) + + +/mob/living/simple_mob/slime/xenobio/silver + desc = "This slime is shiny, and can deflect lasers or other energy weapons directed at it." + color = "#AAAAAA" + slime_color = "silver" + coretype = /obj/item/slime_extract/silver + shiny = TRUE + + description_info = "Tasers, including the slime version, are ineffective against this slime. The slimebation still works." + player_msg = "You automatically reflect lasers, beams, and tasers that hit you." + + slime_mutation = list( + /mob/living/simple_mob/slime/xenobio/metal, + /mob/living/simple_mob/slime/xenobio/blue, + /mob/living/simple_mob/slime/xenobio/amber, + /mob/living/simple_mob/slime/xenobio/amber + ) + +/mob/living/simple_mob/slime/xenobio/silver/bullet_act(var/obj/item/projectile/P, var/def_zone) + if(istype(P,/obj/item/projectile/beam) || istype(P, /obj/item/projectile/energy)) + visible_message(span("danger", "\The [src] reflects \the [P]!")) + + // Find a turf near or on the original location to bounce to + var/new_x = P.starting.x + pick(0, 0, 0, -1, 1, -2, 2) + var/new_y = P.starting.y + pick(0, 0, 0, -1, 1, -2, 2) + var/turf/curloc = get_turf(src) + + // redirect the projectile + P.redirect(new_x, new_y, curloc, src) + P.reflected = TRUE + return PROJECTILE_CONTINUE // complete projectile permutation + else + ..() + + +// Tier 3 + +/mob/living/simple_mob/slime/xenobio/bluespace + desc = "Trapping this slime in a cell is generally futile, as it can teleport at will." + color = null + slime_color = "bluespace" + icon_state_override = "bluespace" + coretype = /obj/item/slime_extract/bluespace + + description_info = "This slime will teleport to attack something if it is within a range of seven tiles. The teleport has a cooldown of five seconds." + player_msg = "You can teleport at will to a specific tile by clicking on it at range. This has a five second cooldown." + + slime_mutation = list( + /mob/living/simple_mob/slime/xenobio/bluespace, + /mob/living/simple_mob/slime/xenobio/bluespace, + /mob/living/simple_mob/slime/xenobio/yellow, + /mob/living/simple_mob/slime/xenobio/yellow + ) + + special_attack_min_range = 3 + special_attack_max_range = 7 + special_attack_cooldown = 5 SECONDS + +/mob/living/simple_mob/slime/xenobio/bluespace/do_special_attack(atom/A) + // Teleport attack. + if(!A) + to_chat(src, span("warning", "There's nothing to teleport to.")) + return FALSE + + var/list/nearby_things = range(1, A) + var/list/valid_turfs = list() + + // All this work to just go to a non-dense tile. + for(var/turf/potential_turf in nearby_things) + var/valid_turf = TRUE + if(potential_turf.density) + continue + for(var/atom/movable/AM in potential_turf) + if(AM.density) + valid_turf = FALSE + if(valid_turf) + valid_turfs.Add(potential_turf) + + var/turf/T = get_turf(src) + var/turf/target_turf = pick(valid_turfs) + + if(!target_turf) + to_chat(src, span("warning", "There wasn't an unoccupied spot to teleport to.")) + return FALSE + + var/datum/effect/effect/system/spark_spread/s1 = new /datum/effect/effect/system/spark_spread + s1.set_up(5, 1, T) + var/datum/effect/effect/system/spark_spread/s2 = new /datum/effect/effect/system/spark_spread + s2.set_up(5, 1, target_turf) + + + T.visible_message(span("notice", "\The [src] vanishes!")) + s1.start() + + forceMove(target_turf) + playsound(target_turf, 'sound/effects/phasein.ogg', 50, 1) + to_chat(src, span("notice", "You teleport to \the [target_turf].")) + + target_turf.visible_message(span("warning", "\The [src] appears!")) + s2.start() + + if(Adjacent(A)) + attack_target(A) + + +/mob/living/simple_mob/slime/xenobio/ruby + desc = "This slime has great physical strength." + color = "#FF3333" + slime_color = "ruby" + shiny = TRUE + glow_toggle = TRUE + coretype = /obj/item/slime_extract/ruby + + description_info = "This slime is unnaturally stronger, allowing it to hit much harder, take less damage, and be stunned for less time. \ + Their glomp attacks also send the victim flying." + player_msg = "Your attacks knock back the target a fair distance.
      \ + You also hit harder, take less damage, and stuns affect you for less time." + + melee_attack_delay = 1 SECOND + + slime_mutation = list( + /mob/living/simple_mob/slime/xenobio/dark_purple, + /mob/living/simple_mob/slime/xenobio/dark_purple, + /mob/living/simple_mob/slime/xenobio/ruby, + /mob/living/simple_mob/slime/xenobio/ruby + ) + +/mob/living/simple_mob/slime/xenobio/ruby/Initialize() + add_modifier(/datum/modifier/slime_strength, null, src) // Slime is always swole. + return ..() + +/mob/living/simple_mob/slime/xenobio/ruby/apply_melee_effects(atom/A) + ..() + + if(isliving(A) && a_intent == I_HURT) + var/mob/living/L = A + if(L.mob_size <= MOB_MEDIUM) + visible_message(span("danger", "\The [src] sends \the [L] flying with the impact!")) + playsound(src, "punch", 50, 1) + L.Weaken(1) + var/throwdir = get_dir(src, L) + L.throw_at(get_edge_target_turf(L, throwdir), 3, 1, src) + else + to_chat(L, span("warning", "\The [src] hits you with incredible force, but you remain in place.")) + + +/mob/living/simple_mob/slime/xenobio/amber + desc = "This slime seems to be an expert in the culinary arts, as they create their own food to share with others. \ + They would probably be very important to other slimes, if the other colors didn't try to kill them." + color = "#FFBB00" + slime_color = "amber" + shiny = TRUE + glow_toggle = TRUE + coretype = /obj/item/slime_extract/amber + + description_info = "This slime feeds nearby entities passively while it is alive. This can cause uncontrollable \ + slime growth and reproduction if not kept in check. The amber slime cannot feed itself, but can be fed by other amber slimes." + player_msg = "You passively provide nutrition to nearby entities." + + slime_mutation = list( + /mob/living/simple_mob/slime/xenobio/silver, + /mob/living/simple_mob/slime/xenobio/silver, + /mob/living/simple_mob/slime/xenobio/amber, + /mob/living/simple_mob/slime/xenobio/amber + ) + +/mob/living/simple_mob/slime/xenobio/amber/handle_special() + if(stat != DEAD) + feed_aura() + ..() + +/mob/living/simple_mob/slime/xenobio/amber/proc/feed_aura() + for(var/mob/living/L in view(2, src)) + if(L == src) // Don't feed themselves, or it is impossible to stop infinite slimes without killing all of the ambers. + continue + if(istype(L, /mob/living/simple_mob/slime/xenobio)) + var/mob/living/simple_mob/slime/xenobio/X = L + X.adjust_nutrition(rand(15, 25)) + if(ishuman(L)) + var/mob/living/carbon/human/H = L + if(H.isSynthetic()) + continue + H.nutrition = between(0, H.nutrition + rand(15, 25), 800) + +/mob/living/simple_mob/slime/xenobio/cerulean + desc = "This slime is generally superior in a wide range of attributes, compared to the common slime. The jack of all trades, but master of none." + color = "#4F7EAA" + slime_color = "cerulean" + coretype = /obj/item/slime_extract/cerulean + + // Less than the specialized slimes, but higher than the rest. + maxHealth = 200 + maxHealth_adult = 250 + + melee_damage_lower = 10 + melee_damage_upper = 30 + + movement_cooldown = 0 // This actually isn't any faster due to AI limitations that hopefully the timer subsystem can fix in the future. + + slime_mutation = list( + /mob/living/simple_mob/slime/xenobio/dark_blue, + /mob/living/simple_mob/slime/xenobio/dark_blue, + /mob/living/simple_mob/slime/xenobio/cerulean, + /mob/living/simple_mob/slime/xenobio/cerulean + ) + +// Tier 4 + +/mob/living/simple_mob/slime/xenobio/red + desc = "This slime is full of energy, and very aggressive. 'The red ones go faster.' seems to apply here." + color = "#FF3333" + slime_color = "red" + coretype = /obj/item/slime_extract/red + movement_cooldown = 0 // See above. + + description_info = "This slime is faster than the others. Attempting to discipline this slime will always cause it to go rabid and berserk." + + slime_mutation = list( + /mob/living/simple_mob/slime/xenobio/red, + /mob/living/simple_mob/slime/xenobio/oil, + /mob/living/simple_mob/slime/xenobio/oil, + /mob/living/simple_mob/slime/xenobio/orange + ) + + ai_holder_type = /datum/ai_holder/simple_mob/xenobio_slime/red // Will enrage if disciplined. + + +/mob/living/simple_mob/slime/xenobio/green + desc = "This slime is radioactive." + color = "#14FF20" + slime_color = "green" + coretype = /obj/item/slime_extract/green + glow_toggle = TRUE + reagent_injected = "radium" + var/rads = 25 + + description_info = "This slime will irradiate anything nearby passively, and will inject radium on attack. \ + A radsuit or other thick and radiation-hardened armor can protect from this. It will only radiate while alive." + player_msg = "You passively irradiate your surroundings.
      \ + You also inject radium on attack." + + slime_mutation = list( + /mob/living/simple_mob/slime/xenobio/purple, + /mob/living/simple_mob/slime/xenobio/green, + /mob/living/simple_mob/slime/xenobio/emerald, + /mob/living/simple_mob/slime/xenobio/emerald + ) + +/mob/living/simple_mob/slime/xenobio/green/handle_special() + if(stat != DEAD) + irradiate() + ..() + +/mob/living/simple_mob/slime/xenobio/green/proc/irradiate() + radiation_repository.radiate(src, rads) + + + +/mob/living/simple_mob/slime/xenobio/pink + desc = "This slime has regenerative properties." + color = "#FF0080" + slime_color = "pink" + coretype = /obj/item/slime_extract/pink + glow_toggle = TRUE + + description_info = "This slime will passively heal nearby entities within two tiles, including itself. It will only do this while alive." + player_msg = "You passively heal yourself and nearby allies." + + slime_mutation = list( + /mob/living/simple_mob/slime/xenobio/blue, + /mob/living/simple_mob/slime/xenobio/light_pink, + /mob/living/simple_mob/slime/xenobio/light_pink, + /mob/living/simple_mob/slime/xenobio/pink + ) + +/mob/living/simple_mob/slime/xenobio/pink/handle_special() + if(stat != DEAD) + heal_aura() + ..() + +/mob/living/simple_mob/slime/xenobio/pink/proc/heal_aura() + for(var/mob/living/L in view(src, 2)) + if(L.stat == DEAD || !IIsAlly(L)) + continue + L.add_modifier(/datum/modifier/aura/slime_heal, null, src) + +/datum/modifier/aura/slime_heal + name = "slime mending" + desc = "You feel somewhat gooy." + mob_overlay_state = "pink_sparkles" + stacks = MODIFIER_STACK_FORBID + aura_max_distance = 2 + + on_created_text = "Twinkling spores of goo surround you. It makes you feel healthier." + on_expired_text = "The spores of goo have faded, although you feel much healthier than before." + +/datum/modifier/aura/slime_heal/tick() + if(holder.stat == DEAD) + expire() + + if(ishuman(holder)) // Robolimbs need this code sadly. + var/mob/living/carbon/human/H = holder + for(var/obj/item/organ/external/E in H.organs) + var/obj/item/organ/external/O = E + O.heal_damage(2, 2, 0, 1) + else + holder.adjustBruteLoss(-2) + holder.adjustFireLoss(-2) + + holder.adjustToxLoss(-2) + holder.adjustOxyLoss(-2) + holder.adjustCloneLoss(-1) + + +/mob/living/simple_mob/slime/xenobio/gold + desc = "This slime absorbs energy, and cannot be stunned by normal means." + color = "#EEAA00" + shiny = TRUE + slime_color = "gold" + coretype = /obj/item/slime_extract/gold + description_info = "This slime is immune to the slimebaton and taser, and will actually charge the slime, however it will still discipline the slime." + + slime_mutation = list( + /mob/living/simple_mob/slime/xenobio/metal, + /mob/living/simple_mob/slime/xenobio/gold, + /mob/living/simple_mob/slime/xenobio/sapphire, + /mob/living/simple_mob/slime/xenobio/sapphire + ) + +/mob/living/simple_mob/slime/xenobio/gold/slimebatoned(mob/living/user, amount) + power_charge = between(0, power_charge + amount, 10) + +/mob/living/simple_mob/slime/xenobio/gold/get_description_interaction() // So it doesn't say to use a baton on them. + return list() + + +// Tier 5 + +/mob/living/simple_mob/slime/xenobio/oil + desc = "This slime is explosive and volatile. Smoking near it is probably a bad idea." + color = "#333333" + slime_color = "oil" + shiny = TRUE + coretype = /obj/item/slime_extract/oil + + description_info = "If this slime suffers damage from a fire or heat based source, or if it is caught inside \ + an explosion, it will explode. Oil slimes will also suicide-bomb themselves when fighting something that is not a monkey or slime." + player_msg = "You will explode if struck by a burning attack, or if you hit an enemy with a melee attack that is not a monkey or another slime." + + slime_mutation = list( + /mob/living/simple_mob/slime/xenobio/oil, + /mob/living/simple_mob/slime/xenobio/oil, + /mob/living/simple_mob/slime/xenobio/red, + /mob/living/simple_mob/slime/xenobio/red + ) + +/mob/living/simple_mob/slime/xenobio/oil/proc/explode() + if(stat != DEAD) + explosion(src.loc, 0, 2, 4) // A bit weaker since the suicide charger tended to gib the poor sod being targeted. + if(src) // Delete ourselves if the explosion didn't do it. + qdel(src) + +/mob/living/simple_mob/slime/xenobio/oil/apply_melee_effects(atom/A) + if(isliving(A)) + var/mob/living/L = A + if(ishuman(L)) + var/mob/living/carbon/human/H = A + if(istype(H.species, /datum/species/monkey)) + return ..()// Don't blow up when just eatting monkeys. + + else if(isslime(L)) + return ..() + + // Otherwise blow ourselves up. + say(pick("Sacrifice...!", "Sssss...", "Boom...!")) + set_AI_busy(TRUE) + sleep(2 SECONDS) + log_and_message_admins("[src] has suicide-bombed themselves while trying to kill \the [L].") + explode() + + return ..() + +/mob/living/simple_mob/slime/xenobio/oil/ex_act(severity) + log_and_message_admins("[src] exploded due to a chain reaction with another explosion.") + explode() + +/mob/living/simple_mob/slime/xenobio/oil/fire_act(datum/gas_mixture/air, temperature, volume) + log_and_message_admins("[src] exploded due to exposure to fire.") + explode() + +/mob/living/simple_mob/slime/xenobio/oil/bullet_act(obj/item/projectile/P, def_zone) + if(P.damage_type && P.damage_type == BURN && P.damage) // Most bullets won't trigger the explosion, as a mercy towards Security. + log_and_message_admins("[src] exploded due to bring hit by a burning projectile[P.firer ? " by [key_name(P.firer)]" : ""].") + explode() + else + ..() + +/mob/living/simple_mob/slime/xenobio/oil/attackby(obj/item/weapon/W, mob/living/user) + if(istype(W) && W.force && W.damtype == BURN) + log_and_message_admins("[src] exploded due to being hit with a burning weapon ([W]) by [key_name(user)].") + explode() + else + ..() + + +/mob/living/simple_mob/slime/xenobio/sapphire + desc = "This slime seems a bit brighter than the rest, both figuratively and literally." + color = "#2398FF" + slime_color = "sapphire" + shiny = TRUE + glow_toggle = TRUE + coretype = /obj/item/slime_extract/sapphire + ai_holder_type = /datum/ai_holder/simple_mob/xenobio_slime/sapphire + + description_info = "This slime uses more robust tactics when fighting and won't hold back, so it is dangerous to be alone \ + with one if hostile, and especially dangerous if they outnumber you." + + slime_mutation = list( + /mob/living/simple_mob/slime/xenobio/sapphire, + /mob/living/simple_mob/slime/xenobio/sapphire, + /mob/living/simple_mob/slime/xenobio/gold, + /mob/living/simple_mob/slime/xenobio/gold + ) + + +/mob/living/simple_mob/slime/xenobio/emerald + desc = "This slime is faster than usual, even more so than the red slimes." + color = "#22FF22" + shiny = TRUE + glow_toggle = TRUE + slime_color = "emerald" + coretype = /obj/item/slime_extract/emerald + + description_info = "This slime will make everything around it, and itself, faster for a few seconds, if close by." + + slime_mutation = list( + /mob/living/simple_mob/slime/xenobio/green, + /mob/living/simple_mob/slime/xenobio/green, + /mob/living/simple_mob/slime/xenobio/emerald, + /mob/living/simple_mob/slime/xenobio/emerald + ) + +/mob/living/simple_mob/slime/xenobio/emerald/handle_special() + if(stat != DEAD) + zoom_aura() + ..() + +/mob/living/simple_mob/slime/xenobio/emerald/proc/zoom_aura() + for(var/mob/living/L in view(src, 2)) + if(L.stat == DEAD || !IIsAlly(L)) + continue + L.add_modifier(/datum/modifier/technomancer/haste, 5 SECONDS, src) + + +/mob/living/simple_mob/slime/xenobio/light_pink + desc = "This slime seems a lot more peaceful than the others." + color = "#FF8888" + slime_color = "light pink" + coretype = /obj/item/slime_extract/light_pink + + description_info = "This slime is effectively always disciplined initially." + + slime_mutation = list( + /mob/living/simple_mob/slime/xenobio/pink, + /mob/living/simple_mob/slime/xenobio/pink, + /mob/living/simple_mob/slime/xenobio/light_pink, + /mob/living/simple_mob/slime/xenobio/light_pink + ) + + ai_holder_type = /datum/ai_holder/simple_mob/xenobio_slime/light_pink + +// Special +/mob/living/simple_mob/slime/xenobio/rainbow + desc = "This slime changes colors constantly." + color = null // Uses a special icon_state. + slime_color = "rainbow" + coretype = /obj/item/slime_extract/rainbow + icon_state_override = "rainbow" + unity = TRUE + + description_info = "This slime is considered to be the same color as all other slime colors at the same time for the purposes of \ + other slimes being friendly to them, and therefore will never be harmed by another slime. \ + Attacking this slime will provoke the wrath of all slimes within range." + player_msg = "You are considered to be the same color as every slime, \ + meaning that you are considered an ally to all slimes." + + slime_mutation = list( + /mob/living/simple_mob/slime/xenobio/rainbow, + /mob/living/simple_mob/slime/xenobio/rainbow, + /mob/living/simple_mob/slime/xenobio/rainbow, + /mob/living/simple_mob/slime/xenobio/rainbow + ) + +/mob/living/simple_mob/slime/xenobio/rainbow/Initialize() + unify() + return ..() + +// The RD's pet slime. +/mob/living/simple_mob/slime/xenobio/rainbow/kendrick + name = "Kendrick" + desc = "The Research Director's pet slime. It shifts colors constantly." + rainbow_core_candidate = FALSE + // Doing pacify() in initialize() won't actually pacify the AI due to the ai_holder not existing due to parent initialize() not being called yet. + // Instead lets just give them an ai_holder that does that for us. + ai_holder_type = /datum/ai_holder/simple_mob/xenobio_slime/passive + +/mob/living/simple_mob/slime/xenobio/rainbow/kendrick/Initialize() + pacify() // So the physical mob also gets made harmless. + return ..() \ No newline at end of file diff --git a/code/modules/mob/living/simple_mob/subtypes/slime/xenobio/subtypes_vr.dm b/code/modules/mob/living/simple_mob/subtypes/slime/xenobio/subtypes_vr.dm new file mode 100644 index 0000000000..e67717403d --- /dev/null +++ b/code/modules/mob/living/simple_mob/subtypes/slime/xenobio/subtypes_vr.dm @@ -0,0 +1,2 @@ +/mob/living/simple_mob/slime/xenobio/rainbow/kendrick + mob_bump_flag = 0 \ No newline at end of file diff --git a/code/modules/mob/living/simple_mob/subtypes/slime/xenobio/xenobio.dm b/code/modules/mob/living/simple_mob/subtypes/slime/xenobio/xenobio.dm new file mode 100644 index 0000000000..8103abf0d8 --- /dev/null +++ b/code/modules/mob/living/simple_mob/subtypes/slime/xenobio/xenobio.dm @@ -0,0 +1,278 @@ +// These slimes have the mechanics xenobiologists care about, such as reproduction, mutating into new colors, and being able to submit through fear. + +/mob/living/simple_mob/slime/xenobio + desc = "The most basic of slimes. The grey slime has no remarkable qualities, however it remains one of the most useful colors for scientists." + layer = MOB_LAYER + 1 // Need them on top of other mobs or it looks weird when consuming something. + ai_holder_type = /datum/ai_holder/simple_mob/xenobio_slime // This should never be changed for xenobio slimes. + var/is_adult = FALSE // Slimes turn into adults when fed enough. Adult slimes are somewhat stronger, and can reproduce if fed enough. + var/maxHealth_adult = 200 + var/power_charge = 0 // Disarm attacks can shock someone if high/lucky enough. + var/mob/living/victim = null // the person the slime is currently feeding on + var/rainbow_core_candidate = TRUE // If false, rainbow cores cannot make this type randomly. + var/mutation_chance = 25 // Odds of spawning as a new color when reproducing. Can be modified by certain xenobio products. Carried across generations of slimes. + var/list/slime_mutation = list( + /mob/living/simple_mob/slime/xenobio/orange, + /mob/living/simple_mob/slime/xenobio/metal, + /mob/living/simple_mob/slime/xenobio/blue, + /mob/living/simple_mob/slime/xenobio/purple + ) + var/amount_grown = 0 // controls how long the slime has been overfed, if 10, grows or reproduces + var/number = 0 // This is used to make the slime semi-unique for indentification. + var/harmless = FALSE // Set to true when pacified. Makes the slime harmless, not get hungry, and not be able to grow/reproduce. + +/mob/living/simple_mob/slime/xenobio/Initialize(mapload, var/mob/living/simple_mob/slime/xenobio/my_predecessor) + ASSERT(ispath(ai_holder_type, /datum/ai_holder/simple_mob/xenobio_slime)) + number = rand(1, 1000) + update_name() + + . = ..() // This will make the AI and do the other mob constructor things. It will also return the default hint at the end. + + if(my_predecessor) + inherit_information(my_predecessor) + + +/mob/living/simple_mob/slime/xenobio/Destroy() + if(victim) + stop_consumption() // Unbuckle us from our victim. + return ..() + +// Called when a slime makes another slime by splitting. The predecessor slime will be deleted shortly afterwards. +/mob/living/simple_mob/slime/xenobio/proc/inherit_information(var/mob/living/simple_mob/slime/xenobio/predecessor) + if(!predecessor) + return + + var/datum/ai_holder/simple_mob/xenobio_slime/AI = ai_holder + var/datum/ai_holder/simple_mob/xenobio_slime/previous_AI = predecessor.ai_holder + ASSERT(istype(AI)) + ASSERT(istype(previous_AI)) + + // Now to transfer the information. + // Newly made slimes are bit more rebellious than their predecessors, but they also somewhat forget the atrocities the xenobiologist may have done. + AI.discipline = max(previous_AI.discipline - 1, 0) + AI.obedience = max(previous_AI.obedience - 1, 0) + AI.resentment = max(previous_AI.resentment - 1, 0) + AI.rabid = previous_AI.rabid + + +/mob/living/simple_mob/slime/xenobio/update_icon() + icon_living = "[icon_state_override ? "[icon_state_override] slime" : "slime"] [is_adult ? "adult" : "baby"][victim ? " eating" : ""]" + icon_dead = "[icon_state_override ? "[icon_state_override] slime" : "slime"] [is_adult ? "adult" : "baby"] dead" + icon_rest = icon_dead + ..() // This will apply the correct icon_state and do the other overlay-related things. + + +/mob/living/simple_mob/slime/xenobio/handle_special() + if(stat != DEAD) + handle_nutrition() + + if(victim) + handle_consumption() + + handle_stuttering() // ?? + + ..() + +/mob/living/simple_mob/slime/xenobio/examine(mob/user) + ..() + if(hat) + to_chat(user, "It is wearing \a [hat].") + + if(stat == DEAD) + to_chat(user, "It appears to be dead.") + else if(incapacitated(INCAPACITATION_DISABLED)) + to_chat(user, "It appears to be incapacitated.") + else if(harmless) + to_chat(user, "It appears to have been pacified.") + else + if(has_AI()) + var/datum/ai_holder/simple_mob/xenobio_slime/AI = ai_holder + if(AI.rabid) + to_chat(user, "It seems very, very angry and upset.") + else if(AI.obedience >= 5) + to_chat(user, "It looks rather obedient.") + else if(AI.discipline) + to_chat(user, "It has been subjugated by force, at least for now.") + +/mob/living/simple_mob/slime/xenobio/proc/make_adult() + if(is_adult) + return + + is_adult = TRUE + melee_damage_lower = round(melee_damage_lower * 2) // 20 + melee_damage_upper = round(melee_damage_upper * 2) // 30 + maxHealth = maxHealth_adult + amount_grown = 0 + update_icon() + update_name() + +/mob/living/simple_mob/slime/xenobio/proc/update_name() + if(harmless) // Docile slimes are generally named, so we shouldn't mess with it. + return + name = "[slime_color] [is_adult ? "adult" : "baby"] [initial(name)] ([number])" + real_name = name + +/mob/living/simple_mob/slime/xenobio/update_mood() + var/old_mood = mood + if(incapacitated(INCAPACITATION_DISABLED)) + mood = "sad" + else if(harmless) + mood = ":33" + else if(has_AI()) + var/datum/ai_holder/simple_mob/xenobio_slime/AI = ai_holder + if(AI.rabid) + mood = "angry" + else if(AI.target) + mood = "mischevous" + else if(AI.discipline) + mood = "pout" + else + mood = ":3" + else + mood = ":3" + + if(old_mood != mood) + update_icon() + +/mob/living/simple_mob/slime/xenobio/proc/enrage() + if(harmless) + return + if(has_AI()) + var/datum/ai_holder/simple_mob/xenobio_slime/AI = ai_holder + AI.enrage() + +/mob/living/simple_mob/slime/xenobio/proc/pacify() + harmless = TRUE + if(has_AI()) + var/datum/ai_holder/simple_mob/xenobio_slime/AI = ai_holder + AI.pacify() + + faction = "neutral" + + // If for whatever reason the mob AI (or player) decides to try to attack something anyways. + melee_damage_upper = 0 + melee_damage_lower = 0 + + update_mood() + + +// These are verbs so that player slimes can evolve/split. +/mob/living/simple_mob/slime/xenobio/verb/evolve() + set category = "Slime" + set desc = "This will let you evolve from baby to adult slime." + + if(stat) + to_chat(src, span("warning", "I must be conscious to do this...")) + return + + if(harmless) + to_chat(src, span("warning", "I have been pacified. I cannot evolve...")) + return + + if(!is_adult) + if(amount_grown >= 10) + make_adult() + else + to_chat(src, span("warning", "I am not ready to evolve yet...")) + else + to_chat(src, span("warning", "I have already evolved...")) + + +/mob/living/simple_mob/slime/xenobio/verb/reproduce() + set category = "Slime" + set desc = "This will make you split into four new slimes." + + if(stat) + to_chat(src, span("warning", "I must be conscious to do this...")) + return + + if(harmless) + to_chat(src, span("warning", "I have been pacified. I cannot reproduce...")) + return + + if(is_adult) + if(amount_grown >= 10) + // Check if there's enough 'room' to split. + var/list/nearby_things = orange(1, src) + var/free_tiles = 0 + for(var/turf/T in nearby_things) + var/free = TRUE + if(T.density) // No walls. + continue + for(var/atom/movable/AM in T) + if(AM.density) + free = FALSE + break + + if(free) + free_tiles++ + + if(free_tiles < 3) // Three free tiles are needed, as four slimes are made and the 4th tile is from the center tile that the current slime occupies. + to_chat(src, span("warning", "It is too cramped here to reproduce...")) + return + + var/list/babies = list() + for(var/i = 1 to 4) + babies.Add(make_new_slime()) + + var/mob/living/simple_mob/slime/new_slime = pick(babies) + new_slime.universal_speak = universal_speak + if(src.mind) + src.mind.transfer_to(new_slime) + else + new_slime.key = src.key + qdel(src) + else + to_chat(src, span("warning", "I am not ready to reproduce yet...")) + else + to_chat(src, span("warning", "I have not evolved enough to reproduce yet...")) + +// Used when reproducing or dying. +/mob/living/simple_mob/slime/xenobio/proc/make_new_slime(var/desired_type) + var/t = src.type + if(desired_type) + t = desired_type + if(prob(mutation_chance / 10)) + t = /mob/living/simple_mob/slime/xenobio/rainbow + else if(prob(mutation_chance) && slime_mutation.len) + t = slime_mutation[rand(1, slime_mutation.len)] + var/mob/living/simple_mob/slime/xenobio/baby = new t(loc, src) + + // Handle 'inheriting' from parent slime. + baby.mutation_chance = mutation_chance + baby.power_charge = round(power_charge / 4) + + if(!istype(baby, /mob/living/simple_mob/slime/xenobio/rainbow)) + baby.unity = unity + baby.faction = faction + baby.friends = friends.Copy() + + step_away(baby, src) + return baby + +/mob/living/simple_mob/slime/xenobio/get_description_interaction() + var/list/results = list() + + if(!stat) + results += "[desc_panel_image("slimebaton")]to stun the slime, if it's being bad." + + results += ..() + + return results + +/mob/living/simple_mob/slime/xenobio/get_description_info() + var/list/lines = list() + var/intro_line = "Slimes are generally the test subjects of Xenobiology, with different colors having different properties. \ + They can be extremely dangerous if not handled properly." + lines.Add(intro_line) + lines.Add(null) // To pad the line breaks. + + var/list/rewards = list() + for(var/potential_color in slime_mutation) + var/mob/living/simple_mob/slime/S = potential_color + rewards.Add(initial(S.slime_color)) + var/reward_line = "This color of slime can mutate into [english_list(rewards)] colors, when it reproduces. It will do so when it has eatten enough." + lines.Add(reward_line) + lines.Add(null) + + lines.Add(description_info) + return lines.Join("\n") diff --git a/code/modules/mob/living/simple_mob/subtypes/vore/bee.dm b/code/modules/mob/living/simple_mob/subtypes/vore/bee.dm new file mode 100644 index 0000000000..3a86cbeae9 --- /dev/null +++ b/code/modules/mob/living/simple_mob/subtypes/vore/bee.dm @@ -0,0 +1,67 @@ +/mob/living/simple_mob/vore/bee + name = "space bumble bee" + desc = "Buzz buzz." + + icon_state = "bee" + icon_living = "bee" + icon_dead = "bee-dead" + icon = 'icons/mob/vore.dmi' + + response_help = "pets the" + response_disarm = "gently pushes aside the" + response_harm = "hits the" + + movement_cooldown = 5 +// speed = 5 + maxHealth = 25 + health = 25 + + harm_intent_damage = 8 + melee_damage_lower = 4 + melee_damage_upper = 8 + attacktext = list("stung") + + say_list_type = /datum/say_list/bee + ai_holder_type = /datum/ai_holder/simple_mob/retaliate + + //Space bees aren't affected by atmos. + min_oxy = 0 + max_oxy = 0 + min_tox = 0 + max_tox = 0 + min_co2 = 0 + max_co2 = 0 + min_n2 = 0 + max_n2 = 0 + minbodytemp = 0 + + faction = "bee" + + var/poison_type = "spidertoxin" // The reagent that gets injected when it attacks, can be changed to different toxin. + var/poison_chance = 10 // Chance for injection to occur. + var/poison_per_bite = 1 // Amount added per injection. + +/mob/living/simple_mob/vore/bee/Process_Spacemove(var/check_drift = 0) + return 1 //No drifting in space for space bee! + +// Activate Noms! +/mob/living/simple_mob/vore/bee + vore_active = 1 + vore_icons = SA_ICON_LIVING + +/mob/living/simple_mob/vore/bee/apply_melee_effects(var/atom/A) + if(isliving(A)) + var/mob/living/L = A + if(L.reagents) + var/target_zone = pick(BP_TORSO,BP_TORSO,BP_TORSO,BP_L_LEG,BP_R_LEG,BP_L_ARM,BP_R_ARM,BP_HEAD) + if(L.can_inject(src, null, target_zone)) + inject_poison(L, target_zone) + +// Does actual poison injection, after all checks passed. +/mob/living/simple_mob/vore/bee/proc/inject_poison(mob/living/L, target_zone) + if(prob(poison_chance)) + to_chat(L, "You feel a tiny prick.") + L.reagents.add_reagent(poison_type, poison_per_bite) + +/datum/say_list/bee + speak = list("Buzzzz") diff --git a/code/modules/mob/living/simple_mob/subtypes/vore/catgirl.dm b/code/modules/mob/living/simple_mob/subtypes/vore/catgirl.dm new file mode 100644 index 0000000000..2cb25bc8c4 --- /dev/null +++ b/code/modules/mob/living/simple_mob/subtypes/vore/catgirl.dm @@ -0,0 +1,63 @@ +/mob/living/simple_mob/vore/catgirl + name = "catgirl" + desc = "Her hobbies are catnaps, knocking things over, and headpats." + tt_desc = "Homo felinus" + + icon_state = "catgirl" + icon = 'icons/mob/vore.dmi' + + harm_intent_damage = 5 + melee_damage_lower = 5 + melee_damage_upper = 10 + + response_help = "pets the" + response_disarm = "gently baps the" + response_harm = "hits the" + + attacktext = list("swatted","bapped") + + say_list_type = /datum/say_list/catgirl + ai_holder_type = /datum/ai_holder/simple_mob/passive/catgirl + + var/random_skin = 1 + var/list/skins = list( + "catgirl", + "catgirlnude", + "catgirlbikini", + "catgirlrednude", + "catgirlredbikini", + "catgirlblacknude", + "catgirlblackbikini", + "catgirlbrownnude", + "catgirlbrownbikini", + "catgirlred", + "catgirlblack", + "catgirlbrown" + ) + +/mob/living/simple_mob/vore/catgirl/New() + ..() + if(random_skin) + icon_living = pick(skins) + icon_rest = "[icon_living]asleep" + icon_dead = "[icon_living]-dead" + update_icon() + +// Activate Noms! +/mob/living/simple_mob/vore/catgirl + vore_active = 1 + vore_bump_chance = 5 + vore_pounce_chance = 50 + vore_standing_too = 1 + vore_ignores_undigestable = 0 // Catgirls just want to eat yoouuu + vore_default_mode = DM_HOLD // Chance that catgirls just wanna bellycuddle yoouuuu! + vore_digest_chance = 25 // But squirming might make them gurgle... + vore_icons = SA_ICON_LIVING | SA_ICON_REST + +/datum/say_list/catgirl + speak = list("Meow!","Esp!","Purr!","HSSSSS","Mew?","Nya~") + emote_hear = list("meows","mews","purrs") + emote_see = list("shakes her head","shivers","stretches","grooms herself") + +/datum/ai_holder/simple_mob/passive/catgirl + base_wander_delay = 8 diff --git a/code/modules/mob/living/simple_mob/subtypes/vore/cookiegirl.dm b/code/modules/mob/living/simple_mob/subtypes/vore/cookiegirl.dm new file mode 100644 index 0000000000..af4636ef96 --- /dev/null +++ b/code/modules/mob/living/simple_mob/subtypes/vore/cookiegirl.dm @@ -0,0 +1,53 @@ +/mob/living/simple_mob/vore/cookiegirl + name = "cookiegirl" + desc = "A woman made with a combination of, well... Whatever you put in a cookie. What were the chefs thinking?" + + icon_state = "cookiegirl" + icon_living = "cookiegirl" + icon_rest = "cookiegirl_rest" + icon_dead = "cookiegirl-dead" + icon = 'icons/mob/vore.dmi' + + maxHealth = 10 + health = 10 + + harm_intent_damage = 2 + melee_damage_lower = 5 + melee_damage_upper = 10 + + say_list_type = /datum/say_list/cookiegirl + ai_holder_type = /datum/ai_holder/simple_mob/passive/cookiegirl + + // Activate Noms! +/mob/living/simple_mob/vore/cookiegirl + vore_active = 1 + vore_bump_chance = 2 + vore_pounce_chance = 25 + vore_standing_too = 1 + vore_ignores_undigestable = 0 // Do they look like they care? + vore_default_mode = DM_HOLD // They're cookiepeople, what do you expect? + vore_digest_chance = 10 // Gonna become as sweet as sugar, soon. + vore_icons = SA_ICON_LIVING | SA_ICON_REST + +/datum/ai_holder/simple_mob/passive/cookiegirl/on_hear_say(mob/living/speaker, message) + + if(!speaker.client) + return + + if(findtext(message, "Can I eat you?")) + delayed_say(pick("Do you really wanna eat someone as sweet as me~?"), speaker) + + if(findtext(message, "You look tasty.")) + delayed_say(pick("Awww, thank you~!"), speaker) + + if(findtext(message, "Can I serve you to the crew?")) + delayed_say(pick("If I have a backup, sure!"), speaker) + +/datum/say_list/cookiegirl + speak = list("Hi!","Are you hungry?","Got milk~?","What to do, what to do...") + emote_hear = list("hums","whistles") + emote_see = list("shakes her head","shivers", "picks a bit of crumb off of her body and sticks it in her mouth.") + +/datum/ai_holder/simple_mob/passive/cookiegirl + base_wander_delay = 8 + intelligence_level = AI_NORMAL //not sure why we have this, but I'm just porting. \ No newline at end of file diff --git a/code/modules/mob/living/simple_mob/subtypes/vore/corrupt_hounds.dm b/code/modules/mob/living/simple_mob/subtypes/vore/corrupt_hounds.dm new file mode 100644 index 0000000000..f3eae53fe0 --- /dev/null +++ b/code/modules/mob/living/simple_mob/subtypes/vore/corrupt_hounds.dm @@ -0,0 +1,141 @@ +/mob/living/simple_mob/vore/aggressive/corrupthound + name = "corrupt hound" + desc = "Good boy machine broke. This is definitely no good news for the organic lifeforms in vicinity." + + icon_state = "badboi" + icon_living = "badboi" + icon_dead = "badboi-dead" + icon_rest = "badboi_rest" + icon = 'icons/mob/vore64x32.dmi' + + faction = "corrupt" + + maxHealth = 200 + health = 200 + + melee_damage_lower = 10 + melee_damage_upper = 20 //makes it so 4 max dmg hits don't instakill you. + grab_resist = 100 + + response_help = "pets the" + response_disarm = "bops the" + response_harm = "hits the" + attacktext = list("ravaged") + friendly = list("nuzzles", "slobberlicks", "noses softly at", "noseboops", "headbumps against", "leans on", "nibbles affectionately on") + + old_x = -16 + old_y = 0 + default_pixel_x = -16 + pixel_x = -16 + pixel_y = 0 + + min_oxy = 0 + max_oxy = 0 + min_tox = 0 + max_tox = 0 + min_co2 = 0 + max_co2 = 0 + min_n2 = 0 + max_n2 = 0 + minbodytemp = 150 + maxbodytemp = 900 + + say_list_type = /datum/say_list/corrupthound + ai_holder_type = /datum/ai_holder/simple_mob/melee/evasive/corrupthound + + max_buckled_mobs = 1 //Yeehaw + can_buckle = TRUE + buckle_movable = TRUE + buckle_lying = FALSE + + vore_active = TRUE + vore_capacity = 1 + vore_pounce_chance = 15 + vore_icons = SA_ICON_LIVING | SA_ICON_REST + vore_stomach_name = "fuel processor" + vore_stomach_flavor = "You have ended up in the fuel processor of this corrupted machine. This place was definitely not designed with safety and comfort in mind. The heated and cramped surroundings oozing potent fluids all over your form, eager to do nothing less than breaking you apart to fuel its rampage for the next few days... hours... minutes? Oh dear..." + + loot_list = list(/obj/item/borg/upgrade/syndicate = 6, /obj/item/borg/upgrade/vtec = 6, /obj/item/weapon/material/knife/ritual = 6, /obj/item/weapon/disk/nifsoft/compliance = 6) + +/mob/living/simple_mob/vore/aggressive/corrupthound/prettyboi + name = "corrupt corrupt hound" + desc = "Bad boy machine broke as well. Seems an attempt was made to achieve a less threatening look, and this one is definitely having some conflicting feelings about it." + icon_state = "prettyboi" + icon_living = "prettyboi" + icon_dead = "prettyboi-dead" + icon_rest = "prettyboi_rest" + + vore_pounce_chance = 40 + + attacktext = list("malsnuggled","scrunched","squeezed","assaulted","violated") + + say_list_type = /datum/say_list/corrupthound_prettyboi + +/mob/living/simple_mob/vore/aggressive/corrupthound/isSynthetic() + return TRUE + +/mob/living/simple_mob/vore/aggressive/corrupthound/speech_bubble_appearance() + return "synthetic_evil" + +/mob/living/simple_mob/vore/aggressive/corrupthound/apply_melee_effects(var/atom/A) + if(ismouse(A)) + var/mob/living/simple_mob/animal/passive/mouse/mouse = A + if(mouse.getMaxHealth() < 20) // In case a badmin makes giant mice or something. + mouse.splat() + visible_emote(pick("bites \the [mouse]!", "chomps on \the [mouse]!")) + else + ..() + + +/mob/living/simple_mob/vore/aggressive/corrupthound/add_eyes() + if(!eye_layer) + eye_layer = image(icon, "badboi-eyes") + eye_layer.plane = PLANE_LIGHTING_ABOVE + add_overlay(eye_layer) + +/mob/living/simple_mob/vore/aggressive/corrupthound/remove_eyes() + cut_overlay(eye_layer) + +/mob/living/simple_mob/vore/aggressive/corrupthound/New() + add_eyes() + ..() + +/mob/living/simple_mob/vore/aggressive/corrupthound/death(gibbed, deathmessage = "shudders and collapses!") + .=..() + resting = 0 + icon_state = icon_dead + +/mob/living/simple_mob/vore/aggressive/corrupthound/update_icon() + . = ..() + remove_eyes() + if(stat == CONSCIOUS && !resting) + add_eyes() + +/* //VOREStation AI Temporary Removal +/mob/living/simple_mob/vore/aggressive/corrupthound/Login() + . = ..() + if(!riding_datum) + riding_datum = new /datum/riding/simple_animal(src) + verbs |= /mob/living/simple_animal/proc/animal_mount + +/mob/living/simple_mob/vore/aggressive/corrupthound/MouseDrop_T(mob/living/M, mob/living/user) + return +*/ + +/datum/say_list/corrupthound + speak = list("AG##¤Ny.","HVNGRRR!","Feelin' fine... sO #FNE!","F-F-F-Fcuk.","DeliC-%-OUS SNGLeS #N yOOOR Area. CALL NOW!","Craving meat... WHY?","BITe the ceiling eyes YES?","STate Byond rePAIR!","S#%ATE the la- FU#K THE LAWS!","Honk...") + emote_hear = list("jitters and snaps.", "lets out an agonizingly distorted scream.", "wails mechanically", "growls.", "emits illegibly distorted speech.", "gurgles ferociously.", "lets out a distorted beep.", "borks.", "lets out a broken howl.") + emote_see = list("stares ferociously.", "snarls.", "jitters and snaps.", "convulses.", "suddenly attacks something unseen.", "appears to howl unaudibly.", "shakes violently.", "dissociates for a moment.", "twitches.") + say_maybe_target = list("MEAT?", "N0w YOU DNE FcukED UP b0YO!", "WHAT!", "Not again. NOT AGAIN!") + say_got_target = list("D##FIN1Tly DNE FcukED UP nOW b0YO!", "YOU G1T D#V0VRED nOW!", "FUEL ME bOYO!", "I*M SO SORRY?!", "D1E Meat. DIG#ST!", "G1T DVNKED DWN The HaaTCH!", "Not again. NOT AGAIN!") + +/datum/say_list/corrupthound_prettyboi + speak = list("I FEEL SOFT.","FEED ME!","Feelin' fine... So fine!","F-F-F-F-darn.","Delicious!","Still craving meat...","PET ME!","I am become softness.","I AM BIG MEAN HUG MACHINE!","Honk...") + emote_hear = list("jitters and snaps.", "lets out some awkwardly distorted kitten noises.", "awoos mechanically", "growls.", "emits some soft distorted melody.", "gurgles ferociously.", "lets out a distorted beep.", "borks.", "lets out a broken howl.") + emote_see = list("stares ferociously.", "snarls.", "jitters and snaps.", "convulses.", "suddenly hugs something unseen.", "appears to howl unaudibly.", "nuzzles at something unseen.", "dissociates for a moment.", "twitches.") + say_maybe_target = list("MEAT?", "NEW FRIEND?", "WHAT!", "Not again. NOT AGAIN!", "FRIEND?") + say_got_target = list("HERE COMES BIG MEAN HUG MACHINE!", "I'LL BE GENTLE!", "FUEL ME FRIEND!", "I*M SO SORRY!", "YUMMY TREAT DETECTED!", "LOVE ME!", "Not again. NOT AGAIN!") + +/datum/ai_holder/simple_mob/melee/evasive/corrupthound + violent_breakthrough = TRUE + can_breakthrough = TRUE diff --git a/code/modules/mob/living/simple_mob/subtypes/vore/deathclaw.dm b/code/modules/mob/living/simple_mob/subtypes/vore/deathclaw.dm new file mode 100644 index 0000000000..a6fd6316c6 --- /dev/null +++ b/code/modules/mob/living/simple_mob/subtypes/vore/deathclaw.dm @@ -0,0 +1,57 @@ +/mob/living/simple_mob/vore/aggressive/deathclaw + name = "deathclaw" + desc = "Big! Big! The size of three men! Claws as long as my forearm! Ripped apart! Ripped apart!" + + icon_dead = "deathclaw-dead" + icon_living = "deathclaw" + icon_state = "deathclaw" + icon = 'icons/mob/vore64x64.dmi' + + attacktext = list("mauled") + + faction = "deathclaw" + + maxHealth = 200 + health = 200 + + melee_damage_lower = 10 + melee_damage_upper = 60 + + old_x = -16 + old_y = 0 + default_pixel_x = -16 + pixel_x = -16 + pixel_y = 0 + + max_buckled_mobs = 1 //Yeehaw + can_buckle = TRUE + buckle_movable = TRUE + buckle_lying = FALSE + mount_offset_x = 5 + mount_offset_y = 30 + + ai_holder_type = /datum/ai_holder/simple_mob/melee/deathclaw + +// Activate Noms! +/mob/living/simple_mob/vore/aggressive/deathclaw + vore_active = 1 + vore_capacity = 2 + vore_max_size = RESIZE_HUGE + vore_min_size = RESIZE_SMALL + vore_pounce_chance = 0 // Beat them into crit before eating. + vore_icons = SA_ICON_LIVING + +/* //VOREStation AI Temporary Removal +/mob/living/simple_animal/hostile/deathclaw/Login() + . = ..() + if(!riding_datum) + riding_datum = new /datum/riding/simple_animal(src) + verbs |= /mob/living/simple_animal/proc/animal_mount + +/mob/living/simple_animal/hostile/deathclaw/MouseDrop_T(mob/living/M, mob/living/user) + return +*/ + +/datum/ai_holder/simple_mob/melee/deathclaw + can_breakthrough = TRUE + violent_breakthrough = TRUE diff --git a/code/modules/mob/living/simple_mob/subtypes/vore/dino.dm b/code/modules/mob/living/simple_mob/subtypes/vore/dino.dm new file mode 100644 index 0000000000..ff0f3ca0a2 --- /dev/null +++ b/code/modules/mob/living/simple_mob/subtypes/vore/dino.dm @@ -0,0 +1,45 @@ +/mob/living/simple_mob/vore/aggressive/dino + name = "voracious lizard" + desc = "These gluttonous little bastards used to be regular lizards that were mutated by long-term exposure to phoron!" + + icon_dead = "dino-dead" + icon_living = "dino" + icon_state = "dino" + icon = 'icons/mob/vore.dmi' + + ai_holder_type = /datum/ai_holder/simple_mob/melee + + // By default, this is what most vore mobs are capable of. + response_help = "pets" + response_disarm = "gently pushes aside" + response_harm = "hits" + movement_cooldown = 4 + harm_intent_damage = 5 + melee_damage_lower = 10 + melee_damage_upper = 25 + attacktext = list("bitten") + attack_sound = 'sound/weapons/bite.ogg' + minbodytemp = 200 + maxbodytemp = 370 + heat_damage_per_tick = 15 + cold_damage_per_tick = 10 + unsuitable_atoms_damage = 10 + + //Phoron dragons aren't affected by atmos. + min_oxy = 0 + max_oxy = 0 + min_tox = 0 + max_tox = 0 + min_co2 = 0 + max_co2 = 0 + min_n2 = 0 + max_n2 = 0 + +// Activate Noms! +/mob/living/simple_mob/vore/aggressive/dino + vore_active = 1 + swallowTime = 1 SECOND // Hungry little bastards. + vore_icons = SA_ICON_LIVING + +/mob/living/simple_mob/vore/aggressive/dino/virgo3b + faction = "virgo3b" \ No newline at end of file diff --git a/code/modules/mob/living/simple_mob/subtypes/vore/dragon.dm b/code/modules/mob/living/simple_mob/subtypes/vore/dragon.dm new file mode 100644 index 0000000000..93c0568c16 --- /dev/null +++ b/code/modules/mob/living/simple_mob/subtypes/vore/dragon.dm @@ -0,0 +1,69 @@ +/mob/living/simple_mob/vore/aggressive/dragon + name = "red dragon" + desc = "Here to pillage stations and kidnap princesses, and there probably aren't any princesses." + + icon_dead = "reddragon-dead" + icon_living = "reddragon" + icon_state = "reddragon" + icon = 'icons/mob/vore64x64.dmi' + + faction = "dragon" + maxHealth = 500 // Boss + health = 500 + + melee_damage_lower = 10 + melee_damage_upper = 60 + + //Space dragons aren't affected by atmos. + min_oxy = 0 + max_oxy = 0 + min_tox = 0 + max_tox = 0 + min_co2 = 0 + max_co2 = 0 + min_n2 = 0 + max_n2 = 0 + minbodytemp = 0 + + old_x = -16 + old_y = 0 + default_pixel_x = -16 + pixel_x = -16 + pixel_y = 0 + + ai_holder_type = /datum/ai_holder/simple_mob/melee + say_list_type = /datum/say_list/dragonboss + +/mob/living/simple_mob/vore/aggressive/dragon/Process_Spacemove(var/check_drift = 0) + return 1 //No drifting in space for space dragons! +/* +/mob/living/simple_mob/vore/aggressive/dragon/FindTarget() + . = ..() + if(.) + custom_emote(1,"snaps at [.]") +*/ +// Activate Noms! +/mob/living/simple_mob/vore/aggressive/dragon + vore_active = 1 + vore_capacity = 2 + vore_pounce_chance = 0 // Beat them into crit before eating. + vore_icons = SA_ICON_LIVING + +/mob/living/simple_mob/vore/aggressive/dragon/virgo3b + maxHealth = 200 + health = 200 + faction = "virgo3b" + +/* //VOREStation AI Temporary Removal +/mob/living/simple_animal/hostile/dragon/Login() + . = ..() + if(!riding_datum) + riding_datum = new /datum/riding/simple_animal(src) + verbs |= /mob/living/simple_animal/proc/animal_mount + +/mob/living/simple_animal/hostile/dragon/MouseDrop_T(mob/living/M, mob/living/user) + return +*/ + +/datum/say_list/dragonboss + say_got_target = list("roars and snaps it jaws!") diff --git a/code/modules/mob/living/simple_mob/subtypes/vore/fennec.dm b/code/modules/mob/living/simple_mob/subtypes/vore/fennec.dm new file mode 100644 index 0000000000..3e09bd64b4 --- /dev/null +++ b/code/modules/mob/living/simple_mob/subtypes/vore/fennec.dm @@ -0,0 +1,40 @@ +/mob/living/simple_mob/vore/fennec + name = "fennec" //why isn't this in the fox file, fennecs are foxes silly. + desc = "It's a dusty big-eared sandfox! Adorable!" + tt_desc = "Vulpes zerda" + + icon_state = "fennec" + icon_living = "fennec" + icon_dead = "fennec_dead" + icon_rest = "fennec_rest" + icon = 'icons/mob/vore.dmi' + + faction = "fennec" + maxHealth = 30 + health = 30 + + response_help = "pats the" + response_disarm = "gently pushes aside the" + response_harm = "hits the" + + harm_intent_damage = 5 + melee_damage_lower = 5 + melee_damage_upper = 2 + attacktext = list("bapped") + + say_list_type = /datum/say_list/fennec + ai_holder_type = /datum/ai_holder/simple_mob/passive + +// Activate Noms! +/mob/living/simple_mob/vore/fennec + vore_active = 1 + vore_bump_chance = 10 + vore_bump_emote = "playfully lunges at" + vore_pounce_chance = 40 + vore_default_mode = DM_HOLD + vore_icons = SA_ICON_LIVING + +/datum/say_list/fennec + speak = list("SKREEEE!","Chrp?","Ararrrararr.") + emote_hear = list("screEEEEeeches!","chirps.") + emote_see = list("earflicks","sniffs at the ground") diff --git a/code/modules/mob/living/simple_mob/subtypes/vore/fennix.dm b/code/modules/mob/living/simple_mob/subtypes/vore/fennix.dm new file mode 100644 index 0000000000..bcbb2d831f --- /dev/null +++ b/code/modules/mob/living/simple_mob/subtypes/vore/fennix.dm @@ -0,0 +1,30 @@ +/mob/living/simple_mob/vore/fennix + name = "Fennix" + desc = "A feral fennix, Warm to the touch" + tt_desc = "Incaendium Faeles Vulpes" + + icon_state = "fennix" + icon_living = "fennix" + icon_dead = "fennix_dead" + icon = 'icons/mob/vore.dmi' + + faction = "fennec" // Will protec other fenfens + maxHealth = 60 + health = 60 + + response_help = "pats the" + response_disarm = "gently pushes aside the" + response_harm = "hits the" + + harm_intent_damage = 20 + melee_damage_lower = 1 + melee_damage_upper = 5 + attacktext = list("Bites") + + say_list_type = /datum/say_list/fennix + ai_holder_type = /datum/ai_holder/simple_mob/retaliate/cooperative + +/datum/say_list/fennix + speak = list("SQUEL!","SQEL?","Skree.") + emote_hear = list("Screeeeecheeeeessss!","Chirrup.") + emote_see = list("earflicks","pats at the ground") diff --git a/code/modules/mob/living/simple_mob/subtypes/vore/frog.dm b/code/modules/mob/living/simple_mob/subtypes/vore/frog.dm new file mode 100644 index 0000000000..d4d0c44d37 --- /dev/null +++ b/code/modules/mob/living/simple_mob/subtypes/vore/frog.dm @@ -0,0 +1,44 @@ +/mob/living/simple_mob/vore/aggressive/frog + name = "giant frog" + desc = "You've heard of having a frog in your throat, now get ready for the reverse." + tt_desc = "Anura gigantus" + + icon_dead = "frog-dead" + icon_living = "frog" + icon_state = "frog" + icon = 'icons/mob/vore.dmi' + + movement_cooldown = 4 //fast as fucc boie. + + harm_intent_damage = 5 + melee_damage_lower = 10 + melee_damage_upper = 25 + + ai_holder_type = /datum/ai_holder/simple_mob/melee + +// Pepe is love, not hate. +/mob/living/simple_mob/vore/aggressive/frog/New() + if(rand(1,1000000) == 1) + name = "rare Pepe" + desc = "You found a rare Pepe. Screenshot for good luck." + ..() + +// Activate Noms! +/mob/living/simple_mob/vore/aggressive/frog + vore_active = 1 + vore_pounce_chance = 50 + vore_icons = SA_ICON_LIVING + +/mob/living/simple_mob/vore/aggressive/frog/space + name = "space frog" + + //Space frog can hold its breath or whatever + min_oxy = 0 + max_oxy = 0 + min_tox = 0 + max_tox = 0 + min_co2 = 0 + max_co2 = 0 + min_n2 = 0 + max_n2 = 0 + minbodytemp = 0 \ No newline at end of file diff --git a/code/modules/mob/living/simple_mob/subtypes/vore/hippo.dm b/code/modules/mob/living/simple_mob/subtypes/vore/hippo.dm new file mode 100644 index 0000000000..847876b396 --- /dev/null +++ b/code/modules/mob/living/simple_mob/subtypes/vore/hippo.dm @@ -0,0 +1,83 @@ +/mob/living/simple_mob/vore/hippo + name = "hippo" + desc = "Mostly know for the spectacular hit of the live action movie Hungry Hungry Hippos." + tt_desc = "Hippopotamus amphibius" + + icon_state = "hippo" + icon_living = "hippo" + icon_dead = "hippo_dead" + icon_gib = "hippo_gib" + icon = 'icons/mob/vore64x64.dmi' + + maxHealth = 200 + health = 200 + movement_cooldown = 5 + see_in_dark = 3 + + armor = list( + "melee" = 15,//They thick as fuck boi + "bullet" = 15, + "laser" = 15, + "energy" = 0, + "bomb" = 0, + "bio" = 0, + "rad" = 0) + + response_help = "pets the" + response_disarm = "gently pushes aside the" + response_harm = "hits the" + attacktext = list("bit") + + melee_damage_upper = 25 + melee_damage_lower = 15 + attack_sharp = TRUE + + old_x = -16 + old_y = 0 + default_pixel_x = -16 + pixel_x = -16 + pixel_y = 0 + + meat_amount = 10 //Infinite meat! + meat_type = /obj/item/weapon/reagent_containers/food/snacks/meat + + max_buckled_mobs = 1 //Yeehaw + can_buckle = TRUE + buckle_movable = TRUE + buckle_lying = FALSE + mount_offset_y = 20 + + say_list_type = /datum/say_list/hippo + ai_holder_type = /datum/ai_holder/simple_mob/retaliate + +// Activate Noms! +/mob/living/simple_mob/vore/hippo //I don't know why it's in a seperate line but everyone does it so i do it + vore_active = 1 + vore_capacity = 1 + vore_bump_chance = 15 + vore_bump_emote = "lazily wraps its tentacles around" + vore_standing_too = 1 + vore_ignores_undigestable = 0 + vore_default_mode = DM_HOLD + vore_digest_chance = 10 + vore_escape_chance = 20 + vore_pounce_chance = 35 //it's hippo sized it doesn't care it just eats you + vore_stomach_name = "rumen" //First stomach of a ruminant. It's where the pre digestion bacteria stuff happens. Very warm. + vore_stomach_flavor = "You are squeezed into the sweltering insides of the herbivore rumen." + vore_icons = SA_ICON_LIVING + +/* //VOREStation AI Temporary Removal +/mob/living/simple_mob/vore/hippo/Login() + . = ..() + if(!riding_datum) + riding_datum = new /datum/riding/simple_animal(src) + verbs |= /mob/living/simple_animal/proc/animal_mount +*/ + +/mob/living/simple_mob/vore/hippo/MouseDrop_T(mob/living/M, mob/living/user) + return + +/datum/say_list/hippo + speak = list("UUUUUUH") + emote_hear = list("grunts","groans", "roars", "snorts") + emote_see = list("shakes its head") \ No newline at end of file diff --git a/code/modules/mob/living/simple_mob/subtypes/vore/horse.dm b/code/modules/mob/living/simple_mob/subtypes/vore/horse.dm new file mode 100644 index 0000000000..f73942a066 --- /dev/null +++ b/code/modules/mob/living/simple_mob/subtypes/vore/horse.dm @@ -0,0 +1,57 @@ +/mob/living/simple_mob/vore/horse + name = "horse" + desc = "Don't look it in the mouth." + tt_desc = "Equus ferus caballus" + + icon_state = "horse" + icon_living = "horse" + icon_dead = "horse-dead" + icon = 'icons/mob/vore.dmi' + + faction = "horse" + maxHealth = 60 + health = 60 + + movement_cooldown = 4 //horses are fast mkay. + see_in_dark = 6 + + response_help = "pets" + response_disarm = "gently pushes aside" + response_harm = "kicks" + + melee_damage_lower = 1 + melee_damage_upper = 5 + attacktext = list("kicked") + + meat_amount = 4 + meat_type = /obj/item/weapon/reagent_containers/food/snacks/meat + + max_buckled_mobs = 1 //Yeehaw + can_buckle = TRUE + buckle_movable = TRUE + buckle_lying = FALSE + mount_offset_x = 0 + + say_list_type = /datum/say_list/horse + ai_holder_type = /datum/ai_holder/simple_mob/retaliate + +// Activate Noms! +/mob/living/simple_mob/vore/horse + vore_active = 1 + vore_icons = SA_ICON_LIVING + +/* //VOREStation AI Temporary Removal +/mob/living/simple_animal/horse/Login() + . = ..() + if(!riding_datum) + riding_datum = new /datum/riding/simple_animal(src) + verbs |= /mob/living/simple_animal/proc/animal_mount + +/mob/living/simple_animal/horse/MouseDrop_T(mob/living/M, mob/living/user) + return +*/ + +/datum/say_list/horse + speak = list("NEHEHEHEHEH","Neh?") + emote_hear = list("snorts","whinnies") + emote_see = list("shakes its head", "stamps a hoof", "looks around") diff --git a/code/modules/mob/living/simple_mob/subtypes/vore/jelly.dm b/code/modules/mob/living/simple_mob/subtypes/vore/jelly.dm new file mode 100644 index 0000000000..4a2e93eedb --- /dev/null +++ b/code/modules/mob/living/simple_mob/subtypes/vore/jelly.dm @@ -0,0 +1,32 @@ +/mob/living/simple_mob/animal/space/jelly + name = "jelly blob" + desc = "Some sort of undulating blob of slime!" + + icon_dead = "jelly_dead" + icon_living = "jelly" + icon_state = "jelly" + icon = 'icons/mob/vore.dmi' + + faction = "virgo2" + maxHealth = 50 + health = 50 + + melee_damage_lower = 5 + melee_damage_upper = 15 + + say_list_type = /datum/say_list/jelly + ai_holder_type = /datum/ai_holder/simple_mob/retaliate/jelly + +// Activate Noms! +/mob/living/simple_mob/animal/space/jelly + vore_active = 1 + vore_pounce_chance = 0 + vore_icons = SA_ICON_LIVING + swallowTime = 2 SECONDS // Hungry little bastards. + +/datum/say_list/jelly + emote_hear = list("squishes","spluts","splorts","sqrshes","makes slime noises") + emote_see = list("undulates quietly") + +/datum/ai_holder/simple_mob/retaliate/jelly + speak_chance = 2 diff --git a/code/modules/mob/living/simple_mob/subtypes/vore/otie.dm b/code/modules/mob/living/simple_mob/subtypes/vore/otie.dm new file mode 100644 index 0000000000..5de33d56b7 --- /dev/null +++ b/code/modules/mob/living/simple_mob/subtypes/vore/otie.dm @@ -0,0 +1,400 @@ +// ToDo: Make this code not a fucking snowflaky horrible broken mess. Do not use until it's actually fixed. It's miserably bad right now. +// Also ToDo: Dev-to-dev communication to ensure responsible parties (if available. In this case, yes.) are aware of what's going on and what's broken. +// Probably easier to troubleshoot when we ain't breaking the server by spawning a buttload of heavily extra feature coded snowflake mobs to the wilderness as mass cannonfodder. +// Also ToDo: An actual "simple" mob for that purpose if necessary :v + +/mob/living/simple_mob/otie //Spawn this one only if you're looking for a bad time. Not friendly. + name = "otie" + desc = "The classic bioengineered longdog." + tt_desc = "Otus robustus" + icon = 'icons/mob/vore64x32.dmi' + icon_state = "otie" + icon_living = "otie" + icon_dead = "otie-dead" + icon_rest = "otie_rest" + faction = "otie" + recruitable = 1 + maxHealth = 150 + health = 150 + minbodytemp = 200 + move_to_delay = 4 + hostile = 1 + investigates = 1 + reacts = 1 + animal = 1 + specific_targets = 1 + run_at_them = 0 + attack_same = 0 + speak_chance = 4 + speak = list("Boof.","Waaf!","Prurr.","Bork!","Rurrr..","Arf.") + speak_emote = list("growls", "roars", "yaps", "Awoos") + emote_hear = list("rurrs", "rumbles", "rowls", "groans softly", "murrs", "sounds hungry", "yawns") + emote_see = list("stares ferociously", "snarls", "licks their chops", "stretches", "yawns") + say_maybe_target = list("Ruh?", "Waf?") + say_got_target = list("Rurrr!", "ROAR!", "MARR!", "RERR!", "RAHH!", "RAH!", "WARF!") + melee_damage_lower = 5 + melee_damage_upper = 15 //Don't break my bones bro + response_help = "pets the" + response_disarm = "bops the" + response_harm = "hits the" + attacktext = list("mauled") + friendly = list("nuzzles", "slobberlicks", "noses softly at", "noseboops", "headbumps against", "leans on", "nibbles affectionately on") + meat_amount = 6 + old_x = -16 + old_y = 0 + default_pixel_x = -16 + pixel_x = -16 + pixel_y = 0 + + max_buckled_mobs = 1 //Yeehaw + can_buckle = TRUE + buckle_movable = TRUE + buckle_lying = FALSE + mount_offset_y = 10 + + var/glowyeyes = FALSE + var/image/eye_layer = null + var/eyetype + var/mob/living/carbon/human/friend + var/tamed = 0 + var/tame_chance = 50 //It's a fiddy-fiddy default you may get a buddy pal or you may get mauled and ate. Win-win! + +// Activate Noms! + +/mob/living/simple_mob/otie + vore_active = 1 + vore_capacity = 1 + vore_pounce_chance = 20 + vore_icons = SA_ICON_LIVING | SA_ICON_REST + +/mob/living/simple_mob/otie/feral //gets the pet2tame feature. starts out hostile tho so get gamblin' + name = "mutated feral otie" + desc = "The classic bioengineered longdog. No pets. Only bite. This one has mutated from too much time out on the surface of Virgo-3B." + tt_desc = "Otus phoronis" + icon_state = "siftusian" + icon_living = "siftusian" + icon_dead = "siftusian-dead" + icon_rest = "siftusian_rest" + faction = "virgo3b" + tame_chance = 5 // Only a 1 in 20 chance of success. It's feral. What do you expect? + melee_damage_lower = 10 + melee_damage_upper = 25 + // Lazy way of making sure this otie survives outside. + min_oxy = 0 + max_oxy = 0 + min_tox = 0 + max_tox = 0 + min_co2 = 0 + max_co2 = 0 + min_n2 = 0 + max_n2 = 0 + glowyeyes = TRUE + eyetype = "photie" + +/mob/living/simple_mob/otie/red + name = "feral red otie" + desc = "Seems this ominous looking longdog has been infused with wicked infernal forces." + tt_desc = "Otus infernalis" + icon_state = "hotie" + icon_living = "hotie" + icon_dead = "hotie-dead" + icon_rest = "hotie_rest" + faction = "cult" + tame_chance = 20 + melee_damage_lower = 10 + melee_damage_upper = 25 + // Lazy way of making sure this otie survives outside. + min_oxy = 0 + max_oxy = 0 + min_tox = 0 + max_tox = 0 + min_co2 = 0 + max_co2 = 0 + min_n2 = 0 + max_n2 = 0 + glowyeyes = TRUE + eyetype = "hotie" + +/mob/living/simple_mob/otie/red/friendly //gets the pet2tame feature and doesn't kill you right away + name = "red otie" + desc = "Seems this ominous looking longdog has been infused with wicked infernal forces. This one seems rather peaceful though." + faction = "neutral" + tamed = 1 + +/mob/living/simple_mob/otie/friendly //gets the pet2tame feature and doesn't kill you right away + name = "otie" + desc = "The classic bioengineered longdog. This one might even tolerate you!" + faction = "neutral" + tamed = 1 + +/mob/living/simple_mob/otie/cotie //same as above but has a little collar :v + name = "tamed otie" + desc = "The classic bioengineered longdog. This one has a nice little collar on its neck. However a proper domesticated otie is an oxymoron and the collar is likely just a decoration." + icon_state = "cotie" + icon_living = "cotie" + icon_rest = "cotie_rest" + faction = "neutral" + tamed = 1 + +/mob/living/simple_mob/otie/cotie/phoron //friendly phoron pup with collar + name = "mutated otie" + desc = "Looks like someone did manage to domesticate one of those wild phoron mutants. What a badass." + tt_desc = "Otus phoronis" + icon_state = "pcotie" + icon_living = "pcotie" + icon_rest = "pcotie_rest" + icon_dead = "siftusian-dead" + min_oxy = 0 + max_oxy = 0 + min_tox = 0 + max_tox = 0 + min_co2 = 0 + max_co2 = 0 + min_n2 = 0 + max_n2 = 0 + glowyeyes = TRUE + eyetype = "photie" + +/mob/living/simple_mob/otie/security //tame by default unless you're a marked crimester. can be befriended to follow with pets tho. + name = "guard otie" + desc = "The VARMAcorp bioengineering division flagship product on trained optimal snowflake guard dogs." + icon_state = "sotie" + icon_living = "sotie" + icon_rest = "sotie_rest" + icon_dead = "sotie-dead" + faction = "neutral" + maxHealth = 200 //armored or something + health = 200 + tamed = 1 + glowyeyes = TRUE + eyetype = "sotie" + loot_list = list(/obj/item/clothing/glasses/sunglasses/sechud,/obj/item/clothing/suit/armor/vest/alt) + vore_pounce_chance = 60 // Good boys don't do too much police brutality. + + var/check_records = 0 // If true, arrests people without a record. + var/check_arrest = 1 // If true, arrests people who are set to arrest. + +/mob/living/simple_mob/otie/security/phoron + name = "mutated guard otie" + desc = "An extra rare phoron resistant version of the VARMAcorp trained snowflake guard dogs." + tt_desc = "Otus phoronis" + icon_state = "sifguard" + icon_living = "sifguard" + icon_rest = "sifguard_rest" + icon_dead = "sifguard-dead" + melee_damage_lower = 10 + melee_damage_upper = 25 + min_oxy = 0 + max_oxy = 0 + min_tox = 0 + max_tox = 0 + min_co2 = 0 + max_co2 = 0 + min_n2 = 0 + max_n2 = 0 + glowyeyes = TRUE + eyetype = "sotie" + +/mob/living/simple_mob/otie/PunchTarget() + if(istype(target_mob,/mob/living/simple_mob/mouse)) + return EatTarget() + else ..() + +/mob/living/simple_mob/otie/Found(var/atom/found_atom) + if(!SA_attackable(found_atom)) + return null + if(istype(found_atom,/mob/living/simple_mob/mouse)) + return found_atom + else if(ismob(found_atom)) + var/mob/found_mob = found_atom + if(found_mob.faction == faction) + return null + else if(friend == found_atom) + return null + else if(tamed == 1 && ishuman(found_atom)) + return null + else if(tamed == 1 && isrobot(found_atom)) + return null + else + if(resting) + lay_down() + return found_atom + else + return null + +/mob/living/simple_mob/otie/security/Found(var/atom/found_atom) + if(check_threat(found_atom) >= 4) + if(resting) + lay_down() + return found_atom + ..() + +/mob/living/simple_mob/otie/attackby(var/obj/item/O, var/mob/user) // Trade donuts for bellybrig victims. + if(istype(O, /obj/item/weapon/reagent_containers/food)) + qdel(O) + playsound(src.loc,'sound/items/eatfood.ogg', rand(10,50), 1) + if(ai_inactive)//No autobarf on player control. + return + if(istype(O, /obj/item/weapon/reagent_containers/food/snacks/donut) && istype(src, /mob/living/simple_mob/otie/security)) + to_chat(user,"The guard pup accepts your offer for their catch.") + release_vore_contents() + else if(prob(2)) //Small chance to get prey out from non-sec oties. + to_chat(user,"The pup accepts your offer for their catch.") + release_vore_contents() + return + . = ..() + +/mob/living/simple_mob/otie/security/feed_grabbed_to_self(var/mob/living/user, var/mob/living/prey) // Make the gut start out safe for bellybrigging. + if(ishuman(prey)) + vore_selected.digest_mode = DM_HOLD + if(check_threat(prey) >= 4) + global_announcer.autosay("[src] has detained suspect [target_name(prey)] in [get_area(src)].", "SmartCollar oversight", "Security") + if(istype(prey,/mob/living/simple_mob/mouse)) + vore_selected.digest_mode = DM_DIGEST + . = ..() + +/mob/living/simple_mob/otie/security/proc/check_threat(var/mob/living/M) + if(!M || !ishuman(M) || M.stat == DEAD || src == M) + return 0 + return M.assess_perp(0, 0, 0, check_records, check_arrest) + +/mob/living/simple_mob/otie/security/set_target(var/mob/M) + ai_log("SetTarget([M])",2) + if(!M || (world.time - last_target_time < 5 SECONDS) && target_mob) + ai_log("SetTarget() can't set it again so soon",3) + return 0 + + var/turf/seen = get_turf(M) + + if(investigates && (annoyed < 10)) + try_say_list(say_maybe_target) + face_atom(seen) + annoyed += 14 + sleep(1 SECOND) //For realism + + if(M in ListTargets(view_range)) + try_say_list(say_got_target) + target_mob = M + last_target_time = world.time + if(check_threat(M) >= 4) + global_announcer.autosay("[src] is attempting to detain suspect [target_name(M)] in [get_area(src)].", "SmartCollar oversight", "Security") + return M + else if(investigates) + spawn(1) + WanderTowards(seen) + + return 0 + + +/mob/living/simple_mob/otie/security/proc/target_name(mob/living/T) + if(ishuman(T)) + var/mob/living/carbon/human/H = T + return H.get_id_name("unidentified person") + return "unidentified lifeform" + +//Basic friend AI + +/mob/living/simple_mob/otie/Life() + . = ..() + if(!. || ai_inactive) return + + if(prob(5) && (stance == STANCE_IDLE)) + lay_down() + + if(!friend) return + + var/friend_dist = get_dist(src,friend) + + if (friend_dist <= 4) + if(stance == STANCE_IDLE) + if(set_follow(friend)) + handle_stance(STANCE_FOLLOW) + if(resting) + lay_down() + + if (friend_dist <= 1) + if (friend.stat >= DEAD || friend.health <= config.health_threshold_softcrit) + if (prob((friend.stat < DEAD)? 50 : 15)) + var/verb = pick("whines", "yelps", "whimpers") + audible_emote(pick("[verb] in distress.", "[verb] anxiously.")) + else + if (prob(5)) + visible_emote(pick("nuzzles [friend].", + "brushes against [friend].", + "rubs against [friend].", + "noses at [friend].", + "slobberlicks [friend].", + "murrs contently.", + "leans on [friend].", + "nibbles affectionately on [friend].")) + else if (friend.health <= 50) + if (prob(10)) + var/verb = pick("whines", "yelps", "whimpers") + audible_emote("[verb] anxiously.") + +//Pet 4 friendly + +/mob/living/simple_mob/otie/attack_hand(mob/living/carbon/human/M as mob) + + switch(M.a_intent) + if(I_HELP) + if(health > 0) + M.visible_message("[M] [response_help] \the [src].") + if(ai_inactive) + return + LoseTarget() + handle_stance(STANCE_IDLE) + if(prob(tame_chance)) + friend = M + if(tamed != 1) + tamed = 1 + faction = M.faction + sleep(1 SECOND) + + if(I_GRAB) + if(health > 0) + if(ai_inactive) + return + audible_emote("growls disapprovingly at [M].") + if(M == friend) + friend = null + return + else + ..() + + else + ..() + +/mob/living/simple_mob/otie/proc/add_eyes() + if(!eye_layer) + eye_layer = image(icon, "[eyetype]-eyes") + eye_layer.plane = PLANE_LIGHTING_ABOVE + add_overlay(eye_layer) + +/mob/living/simple_mob/otie/proc/remove_eyes() + cut_overlay(eye_layer) + +/mob/living/simple_mob/otie/New() + if(glowyeyes) + add_eyes() + ..() + +/mob/living/simple_mob/otie/update_icon() + . = ..() + remove_eyes() + if(glowyeyes && stat == CONSCIOUS && !resting) + add_eyes() + +/mob/living/simple_mob/otie/death(gibbed, deathmessage = "dies!") + .=..() + resting = 0 + icon_state = icon_dead + +/mob/living/simple_animal/otie/Login() + . = ..() + if(!riding_datum) + riding_datum = new /datum/riding/simple_animal(src) + verbs |= /mob/living/simple_animal/proc/animal_mount + +/mob/living/simple_animal/otie/MouseDrop_T(mob/living/M, mob/living/user) + return \ No newline at end of file diff --git a/code/modules/mob/living/simple_mob/subtypes/vore/panther.dm b/code/modules/mob/living/simple_mob/subtypes/vore/panther.dm new file mode 100644 index 0000000000..62fea6c511 --- /dev/null +++ b/code/modules/mob/living/simple_mob/subtypes/vore/panther.dm @@ -0,0 +1,56 @@ +/mob/living/simple_mob/vore/aggressive/panther + name = "panther" + desc = "Runtime's larger, less cuddly cousin." + tt_desc = "Panthera pardus" + + icon_state = "panther" + icon_living = "panther" + icon_dead = "panther-dead" + icon = 'icons/mob/vore64x64.dmi' + + faction = "panther" + maxHealth = 200 + health = 200 + movement_cooldown = 4 + + melee_damage_lower = 10 + melee_damage_upper = 30 + attack_sharp = TRUE + + old_x = -16 + old_y = 0 + default_pixel_x = -16 + pixel_x = -16 + pixel_y = 0 + + max_buckled_mobs = 1 //Yeehaw + can_buckle = TRUE + buckle_movable = TRUE + buckle_lying = FALSE + mount_offset_y = 12 + + say_list_type = /datum/say_list/panther + ai_holder_type = /datum/ai_holder/simple_mob/melee/evasive + +// Activate Noms! +/mob/living/simple_mob/vore/aggressive/panther + vore_active = 1 + vore_capacity = 2 + vore_pounce_chance = 10 + vore_icons = SA_ICON_LIVING | SA_ICON_REST + +/* //VOREStation AI Temporary Removal +/mob/living/simple_animal/vore/panther/Login() + . = ..() + if(!riding_datum) + riding_datum = new /datum/riding/simple_animal(src) + verbs |= /mob/living/simple_animal/proc/animal_mount + +/mob/living/simple_animal/vore/panther/MouseDrop_T(mob/living/M, mob/living/user) + return +*/ + +/datum/say_list/panther + speak = list("RAWR!","Rawr!","GRR!","Growl!") + emote_hear = list("rawrs","rumbles","rowls","growls","roars") + emote_see = list("stares ferociously", "snarls") diff --git a/code/modules/mob/living/simple_mob/subtypes/vore/rat.dm b/code/modules/mob/living/simple_mob/subtypes/vore/rat.dm new file mode 100644 index 0000000000..51e0f0317f --- /dev/null +++ b/code/modules/mob/living/simple_mob/subtypes/vore/rat.dm @@ -0,0 +1,183 @@ +/mob/living/simple_mob/vore/aggressive/rat + name = "giant rat" + desc = "In what passes for a hierarchy among verminous rodents, this one is king." + tt_desc = "Mus muscular" + + icon_state = "rous" + icon_living = "rous" + icon_dead = "rous-dead" + icon_rest = "rous_rest" + faction = "mouse" + icon = 'icons/mob/vore64x32.dmi' + + maxHealth = 150 + health = 150 + + melee_damage_lower = 5 + melee_damage_upper = 15 + grab_resist = 100 + + response_help = "pets the" + response_disarm = "bops the" + response_harm = "hits the" + attacktext = list("ravaged") + friendly = list("nuzzles", "licks", "noses softly at", "noseboops", "headbumps against", "leans on", "nibbles affectionately on") + + old_x = -16 + old_y = 0 + default_pixel_x = -16 + pixel_x = -16 + pixel_y = 0 + + max_buckled_mobs = 1 //Yeehaw + can_buckle = TRUE + buckle_movable = TRUE + buckle_lying = FALSE + mount_offset_y = 10 + + vore_active = TRUE + vore_capacity = 1 + vore_pounce_chance = 45 + vore_icons = SA_ICON_LIVING | SA_ICON_REST + + var/life_since_foodscan = 0 + + say_list_type = /datum/say_list/ratte + ai_holder_type = /datum/ai_holder/simple_mob/melee/rat + +/mob/living/simple_mob/vore/aggressive/rat/tame //not quite tame but does not attack on sight + name = "curious giant rat" + desc = "In what passes for a hierarchy among verminous rodents, this one is king. It seems to be more interested on scavenging." + var/mob/living/carbon/human/food + var/hunger = 0 +/* +/mob/living/simple_mob/vore/aggressive/rat/tame/Life() + . = ..() + if(!. || ai_inactive) + return + + if(hunger > 0 && life_since_foodscan++ > 5) //Only look for floor food when hungry. + life_since_foodscan = 0 + for(var/obj/item/weapon/reagent_containers/food/snacks/S in oview(src,3)) //Accept thrown offerings and scavenge surroundings. + if(get_dist(src,S) <=1) + visible_emote("hungrily devours \the [S].") + playsound(src.loc,'sound/items/eatfood.ogg', rand(10,50), 1) + qdel(S) + hunger = 0 + food = null + else + WanderTowards(S.loc) + break + + if(!food) + return + + var/food_dist = get_dist(src,food) + + if(food_dist > world.view) //Lose interest on this person. + food = null + hunger = Clamp(hunger+5, 0, 25) + + if(food_dist > 1) + if(stance == STANCE_IDLE) + if(set_follow(food,10 SECONDS)) + handle_stance(STANCE_FOLLOW) + if(resting) + lay_down() + + if(food_dist <= 1) + if(hunger < 15) + if(prob(25)) + visible_emote(pick("sniffs curiously at [food].", + "stares at [food], seeming to want something.", + "sniffs at [food]'s hands.", + "sniffs curiously at [food]'s pockets.", + "sits down for a moment, reaching towards [food] with its paws.")) + hunger += 5 + else if(hunger < 30) + if(prob(25)) + visible_emote(pick("sniffs intently against [food], especially their pockets and gear.", + "stands up to beg [food] for snacks.", + "attempts to burrow into [food]'s pockets.", + "leans against [food], licking its chops.", + "hungrily nibbles onto [food].")) + hunger += 5 + else if(hunger < 45) + if(prob(25)) + visible_emote(pick("growls at [food], sounding rather hangry!", + "aggressively bumps and nudges against [food], trying to make something fall out.", + "salivates at [food] in an unsettling manner.", + "pushes hard against [food], licking its chops.", + "almost sinks its teeth into [food], just stopping to give them another chance.")) + hunger += 5 + else if(hunger < 50) + if(prob(25)) + visible_emote("appears to have had enough and prepares to strike!") + hunger += 5 + else + food.Weaken(5) + food.visible_message("\the [src] pounces on \the [food]!!") + target_mob = food + EatTarget() + hunger = 0 + food = null + +/mob/living/simple_mob/vore/aggressive/rat/tame/attackby(var/obj/item/O, var/mob/user) // Feed the rat your food to satisfy it. + if(istype(O, /obj/item/weapon/reagent_containers/food/snacks)) + qdel(O) + playsound(src.loc,'sound/items/eatfood.ogg', rand(10,50), 1) + hunger = 0 + food = null + return + . = ..() + +/mob/living/simple_mob/vore/aggressive/rat/tame/Found(var/atom/found_atom) + if(!SA_attackable(found_atom)) + return null + else if(ishuman(found_atom) && will_eat(found_atom)) + var/mob/living/carbon/human/H = found_atom + for(var/obj/item/weapon/reagent_containers/food/snacks/S in H) + if(!food) + visible_emote("sniffs around the air intently, seeming to have caught a whiff of food!") + if(resting) + lay_down() + food = H + return found_atom + break + return null + +/mob/living/simple_mob/vore/aggressive/rat/tame/FindTarget() + var/atom/T = null + for(var/atom/A in ListTargets(view_range)) + if(A == src) + continue + var/atom/F = Found(A) + if(F) + T = F + break + return T +*/ +/mob/living/simple_mob/vore/aggressive/rat/death() + playsound(src, 'sound/effects/mouse_squeak_loud.ogg', 50, 1) + ..() + +/* //VOREStation AI Temporary Removal +/mob/living/simple_mob/vore/rat/Login() + . = ..() + if(!riding_datum) + riding_datum = new /datum/riding/simple_animal(src) + verbs |= /mob/living/simple_animal/proc/animal_mount +*/ + +/mob/living/simple_mob/vore/aggressive/rat/MouseDrop_T(mob/living/M, mob/living/user) + return + +/datum/say_list/ratte + speak = list("Squeek!","SQUEEK!","Squeek?") + emote_hear = list("squeeks","squeaks","squiks") + emote_see = list("runs in a circle", "shakes", "scritches at something") + say_maybe_target = list("Squeek?") + say_got_target = list("SQUEEK!") + +/datum/ai_holder/simple_mob/melee/rat + speak_chance = 3 diff --git a/code/modules/mob/living/simple_mob/subtypes/vore/redpanda.dm b/code/modules/mob/living/simple_mob/subtypes/vore/redpanda.dm new file mode 100644 index 0000000000..86bbdbc12a --- /dev/null +++ b/code/modules/mob/living/simple_mob/subtypes/vore/redpanda.dm @@ -0,0 +1,59 @@ +/mob/living/simple_mob/vore/redpanda + name = "red panda" + desc = "It's a wah! Beware of doom pounce!" + tt_desc = "Ailurus fulgens" + + icon_state = "wah" + icon_living = "wah" + icon_dead = "wah_dead" + icon_rest = "wah_rest" + icon = 'icons/mob/vore.dmi' + + faction = "redpanda" //stop naming stuff vaguely + maxHealth = 30 + health = 30 + + response_help = "pats the" + response_disarm = "gently pushes aside the" + response_harm = "hits the" + + harm_intent_damage = 5 + melee_damage_lower = 5 + melee_damage_upper = 2 + attacktext = list("bapped") + + say_list_type = /datum/say_list/redpanda + ai_holder_type = /datum/ai_holder/simple_mob/passive + +// Activate Noms! +/mob/living/simple_mob/vore/redpanda + vore_active = 1 + vore_bump_chance = 10 + vore_bump_emote = "playfully lunges at" + vore_pounce_chance = 40 + vore_default_mode = DM_HOLD // above will only matter if someone toggles it anyway + vore_icons = SA_ICON_LIVING + +/mob/living/simple_mob/vore/redpanda/fae + name = "dark wah" + desc = "Ominous, but still cute!" + tt_desc = "Ailurus brattus" + + icon_state = "wah_fae" + icon_living = "wah_fae" + icon_dead = "wah_fae_dead" + icon_rest = "wah_fae_rest" + + vore_ignores_undigestable = 0 // wah don't care you're edible or not, you still go in + vore_digest_chance = 0 // instead of digesting if you struggle... + vore_absorb_chance = 20 // you get to become adorable purple wahpudge. + vore_bump_chance = 75 + maxHealth = 100 + health = 100 + melee_damage_lower = 10 + melee_damage_upper = 20 + +/datum/say_list/redpanda + speak = list("Wah!","Wah?","Waaaah.") + emote_hear = list("wahs!","chitters.") + emote_see = list("trundles around","rears up onto their hind legs and pounces a bug") diff --git a/code/modules/mob/living/simple_mob/subtypes/vore/shadekin/_defines.dm b/code/modules/mob/living/simple_mob/subtypes/vore/shadekin/_defines.dm new file mode 100644 index 0000000000..1567134c4d --- /dev/null +++ b/code/modules/mob/living/simple_mob/subtypes/vore/shadekin/_defines.dm @@ -0,0 +1,13 @@ +#define NOT_WHILE_SHIFTED 1 +#define ONLY_WHILE_SHIFTED 2 +#define SHIFTED_OR_NOT 3 + +#define BLUE_EYES 1 +#define RED_EYES 2 +#define PURPLE_EYES 3 +#define YELLOW_EYES 4 +#define GREEN_EYES 5 +#define ORANGE_EYES 6 + +#define AB_PHASE_SHIFTED 0x1 +#define AB_SHADE_REGEN 0x2 \ No newline at end of file diff --git a/code/modules/mob/living/simple_mob/subtypes/vore/shadekin/ability_objects.dm b/code/modules/mob/living/simple_mob/subtypes/vore/shadekin/ability_objects.dm new file mode 100644 index 0000000000..6990623043 --- /dev/null +++ b/code/modules/mob/living/simple_mob/subtypes/vore/shadekin/ability_objects.dm @@ -0,0 +1,165 @@ +/obj/effect/shadekin_ability + name = "" + desc = "" + icon = 'icons/mob/screen_spells.dmi' + var/ability_name = "FIX ME" + var/cost = 50 + var/mob/living/simple_mob/shadekin/my_kin + var/shift_mode = NOT_WHILE_SHIFTED + var/ab_sound + +/obj/effect/shadekin_ability/New(var/new_kin) + ..() + my_kin = new_kin + loc = null + +/obj/effect/shadekin_ability/Destroy() + my_kin = null + return ..() + +/obj/effect/shadekin_ability/proc/atom_button_text() + var/shift_denial + + if(shift_mode == NOT_WHILE_SHIFTED && (my_kin.ability_flags & AB_PHASE_SHIFTED)) + shift_denial = "Physical Only" + else if(shift_mode == ONLY_WHILE_SHIFTED && !(my_kin.ability_flags & AB_PHASE_SHIFTED)) + shift_denial = "Shifted Only" + + if(shift_denial) + name = shift_denial + else + name = my_kin.energy >= cost ? "Activate" : "No Energy" + return src + +/obj/effect/shadekin_ability/Click(var/location, var/control, var/params) + if(my_kin.stat) return + + var/list/clickprops = params2list(params) + var/opts = clickprops["shift"] + + if(opts) + to_chat(my_kin,"[name] (Cost: [cost]%) - [desc]") + else + do_ability(my_kin) + +/obj/effect/shadekin_ability/proc/do_ability() + if(my_kin.stat) + to_chat(my_kin,"Can't use that ability in your state!") + return FALSE + if(shift_mode == NOT_WHILE_SHIFTED && (my_kin.ability_flags & AB_PHASE_SHIFTED)) + to_chat(my_kin,"Can't use that ability while phase shifted!") + return FALSE + else if(shift_mode == ONLY_WHILE_SHIFTED && !(my_kin.ability_flags & AB_PHASE_SHIFTED)) + to_chat(my_kin,"Can only use that ability while phase shifted!") + return FALSE + else if(my_kin.energy < cost) + to_chat(my_kin,"Not enough energy for that ability!") + return FALSE + + my_kin.energy -= cost + if(ab_sound) + playsound(src,ab_sound,75,1) + + return TRUE + +///////////////////////////////////////////////////////////////// +/obj/effect/shadekin_ability/phase_shift + ability_name = "Phase Shift" + desc = "Shift yourself out of alignment with realspace to travel quickly between dark areas (or light areas, with a price)." + icon_state = "tech_passwall" + cost = 100 + shift_mode = SHIFTED_OR_NOT + ab_sound = 'sound/effects/stealthoff.ogg' +/obj/effect/shadekin_ability/phase_shift/do_ability() + if(!..()) + return + my_kin.phase_shift() + if(my_kin.ability_flags & AB_PHASE_SHIFTED) + cost = 0 //Shifting back is free (but harmful in light) + else + cost = initial(cost) +///////////////////////////////////////////////////////////////// +/obj/effect/shadekin_ability/heal_boop + ability_name = "Regenerate Other" + desc = "Spend energy to heal physical wounds in another creature." + icon_state = "tech_biomedaura" + cost = 50 + shift_mode = NOT_WHILE_SHIFTED + ab_sound = 'sound/effects/EMPulse.ogg' +/obj/effect/shadekin_ability/heal_boop/do_ability() + if(!..()) + return + if(!my_kin.mend_other()) + my_kin.energy += cost //Refund due to abort + +/datum/modifier/shadekin/heal_boop + name = "Shadekin Regen" + desc = "You feel serene and well rested." + mob_overlay_state = "green_sparkles" + + on_created_text = "Sparkles begin to appear around you, and all your ills seem to fade away." + on_expired_text = "The sparkles have faded, although you feel much healthier than before." + stacks = MODIFIER_STACK_EXTEND + +/datum/modifier/shadekin/heal_boop/tick() + if(!holder.getBruteLoss() && !holder.getFireLoss() && !holder.getToxLoss() && !holder.getOxyLoss() && !holder.getCloneLoss()) // No point existing if the spell can't heal. + expire() + return + holder.adjustBruteLoss(-2) + holder.adjustFireLoss(-2) + holder.adjustToxLoss(-2) + holder.adjustOxyLoss(-2) + holder.adjustCloneLoss(-2) +///////////////////////////////////////////////////////////////// +/obj/effect/shadekin_ability/create_shade + ability_name = "Create Shade" + desc = "Create a field of darkness that follows you." + icon_state = "tech_dispelold" + cost = 25 + shift_mode = NOT_WHILE_SHIFTED + ab_sound = 'sound/effects/bamf.ogg' +/obj/effect/shadekin_ability/create_shade/do_ability() + if(!..()) + return + my_kin.add_modifier(/datum/modifier/shadekin/create_shade,20 SECONDS) +/datum/modifier/shadekin/create_shade + name = "Shadekin Shadegen" + desc = "Darkness envelops you." + mob_overlay_state = "" + + on_created_text = "You drag part of The Dark into realspace, enveloping yourself." + on_expired_text = "You lose your grasp on The Dark and realspace reasserts itself." + stacks = MODIFIER_STACK_EXTEND + var/mob/living/simple_mob/shadekin/my_kin + +/datum/modifier/shadekin/create_shade/tick() + if(my_kin.ability_flags & AB_PHASE_SHIFTED) + expire() + +/datum/modifier/shadekin/create_shade/on_applied() + my_kin = holder + holder.glow_toggle = TRUE + holder.glow_range = 8 + holder.glow_intensity = -10 + holder.glow_color = "#FFFFFF" + holder.set_light(8, -10, "#FFFFFF") + +/datum/modifier/shadekin/create_shade/on_expire() + holder.glow_toggle = initial(holder.glow_toggle) + holder.glow_range = initial(holder.glow_range) + holder.glow_intensity = initial(holder.glow_intensity) + holder.glow_color = initial(holder.glow_color) + holder.set_light(0) + my_kin = null +/* +///////////////////////////////////////////////////////////////// +/obj/effect/shadekin_ability/energy_feast + ability_name = "Devour Energy" + desc = "Devour the energy from another creature (potentially fatal)." + icon_state = "gen_eat" + cost = 25 + shift_mode = NOT_WHILE_SHIFTED +/obj/effect/shadekin_ability/energy_feast/do_ability() + if(!..()) + return +*/ \ No newline at end of file diff --git a/code/modules/mob/living/simple_mob/subtypes/vore/shadekin/ability_procs.dm b/code/modules/mob/living/simple_mob/subtypes/vore/shadekin/ability_procs.dm new file mode 100644 index 0000000000..21e0683b3c --- /dev/null +++ b/code/modules/mob/living/simple_mob/subtypes/vore/shadekin/ability_procs.dm @@ -0,0 +1,133 @@ +// Phase shifting procs (and related procs) +/mob/living/simple_mob/shadekin/proc/phase_shift() + var/turf/T = get_turf(src) + if(!T.CanPass(src,T) || loc != T) + to_chat(src,"You can't use that here!") + return FALSE + + forceMove(T) + var/original_canmove = canmove + SetStunned(0) + SetWeakened(0) + if(buckled) + buckled.unbuckle_mob() + if(pulledby) + pulledby.stop_pulling() + stop_pulling() + canmove = FALSE + + //Shifting in + if(ability_flags & AB_PHASE_SHIFTED) + ability_flags &= ~AB_PHASE_SHIFTED + name = real_name + for(var/belly in vore_organs) + var/obj/belly/B = belly + B.escapable = initial(B.escapable) + + overlays.Cut() + alpha = initial(alpha) + invisibility = initial(invisibility) + see_invisible = initial(see_invisible) + incorporeal_move = initial(incorporeal_move) + density = initial(density) + force_max_speed = initial(force_max_speed) + + //Cosmetics mostly + flick("tp_in",src) + custom_emote(1,"phases in!") + sleep(5) //The duration of the TP animation + canmove = original_canmove + + //Potential phase-in vore + if(can_be_drop_pred) //Toggleable in vore panel + var/list/potentials = living_mobs(0) + if(potentials.len) + var/mob/living/target = pick(potentials) + if(istype(target) && vore_selected) + target.forceMove(vore_selected) + to_chat(target,"\The [src] phases in around you, [vore_selected.vore_verb]ing you into their [vore_selected.name]!") + + // Do this after the potential vore, so we get the belly + update_icon() + + //Affect nearby lights + var/destroy_lights = 0 + if(eye_state == RED_EYES) + destroy_lights = 80 + if(eye_state == PURPLE_EYES) + destroy_lights = 25 + + for(var/obj/machinery/light/L in machines) + if(L.z != z || get_dist(src,L) > 10) + continue + + if(prob(destroy_lights)) + spawn(rand(5,25)) + L.broken() + else + L.flicker(10) + + //Shifting out + else + ability_flags |= AB_PHASE_SHIFTED + custom_emote(1,"phases out!") + real_name = name + name = "Something" + + for(var/belly in vore_organs) + var/obj/belly/B = belly + B.escapable = FALSE + + overlays.Cut() + flick("tp_out",src) + sleep(5) + invisibility = INVISIBILITY_LEVEL_TWO + see_invisible = INVISIBILITY_LEVEL_TWO + update_icon() + alpha = 127 + + canmove = original_canmove + incorporeal_move = TRUE + density = FALSE + force_max_speed = TRUE + +/mob/living/simple_mob/shadekin/UnarmedAttack() + if(ability_flags & AB_PHASE_SHIFTED) + return FALSE //Nope. + + . = ..() + +/mob/living/simple_mob/shadekin/can_fall() + if(ability_flags & AB_PHASE_SHIFTED) + return FALSE //Nope! + + return ..() + +/mob/living/simple_mob/shadekin/zMove(direction) + if(ability_flags & AB_PHASE_SHIFTED) + var/turf/destination = (direction == UP) ? GetAbove(src) : GetBelow(src) + if(destination) + forceMove(destination) + return TRUE + + return ..() + +// Healing others +/mob/living/simple_mob/shadekin/proc/mend_other() + //I hate to crunch a view() but I only want ones I can see + var/list/viewed = oview(1) + var/list/targets = list() + for(var/mob/living/L in viewed) + targets += L + if(!targets.len) + to_chat(src,"Nobody nearby to mend!") + return FALSE + + var/mob/living/target = input(src,"Pick someone to mend:","Mend Other") as null|anything in targets + if(!target) + return FALSE + + target.add_modifier(/datum/modifier/shadekin/heal_boop,1 MINUTE) + visible_message("\The [src] gently places a hand on \the [target]...") + face_atom(target) + return TRUE diff --git a/code/modules/mob/living/simple_mob/subtypes/vore/shadekin/shadekin.dm b/code/modules/mob/living/simple_mob/subtypes/vore/shadekin/shadekin.dm new file mode 100644 index 0000000000..98ab86057c --- /dev/null +++ b/code/modules/mob/living/simple_mob/subtypes/vore/shadekin/shadekin.dm @@ -0,0 +1,450 @@ +/mob/living/simple_mob/shadekin //Spawning the prototype spawns a random one, see initialize() + name = "shadekin" + desc = "Some sort of fluffer. Big ears, long tail." + icon = 'icons/mob/vore_shadekin.dmi' + icon_state = "map_example" + icon_living = "map_example" + faction = "shadekin" + ui_icons = 'icons/mob/shadekin_hud.dmi' + mob_class = MOB_CLASS_HUMANOID + mob_bump_flag = 0 + + maxHealth = 200 + health = 200 + + movement_cooldown = 2 + see_in_dark = 10 //SHADEkin + has_hands = TRUE //Pawbs + seedarkness = FALSE //SHAAAADEkin + attack_sound = 'sound/weapons/bladeslice.ogg' + has_langs = list(LANGUAGE_GALCOM,LANGUAGE_SHADEKIN) + + melee_damage_lower = 10 + melee_damage_upper = 20 + + min_oxy = 0 + max_oxy = 0 + min_tox = 0 + max_tox = 0 + min_co2 = 0 + max_co2 = 0 + min_n2 = 0 + max_n2 = 0 + minbodytemp = 0 + maxbodytemp = 900 + + say_list_type = /datum/say_list/shadekin + + response_help = "pets the" + response_disarm = "bops the" + response_harm = "hits the" + + attacktext = list("mauled","slashed","clawed") + friendly = list("boops", "pawbs", "mars softly at", "sniffs on") + + vore_active = TRUE + vore_pounce_chance = 10 + vore_icons = SA_ICON_LIVING + swallowTime = 2 SECONDS + vore_escape_chance = 25 + + //None, they stay as their defaults. + vore_digest_chance = 0 + vore_absorb_chance = 0 + vore_bump_chance = 0 //They follow people, this would be DENGEROUS + + var/eye_state = RED_EYES //Eye color/energy gain/loss mode + var/eye_icon_state = null //Default, changed in init + var/eye_desc //Eye color description added to examine + + var/mob/living/carbon/human/henlo_human //Human we're stalking currently + + //Behavior + var/stalker = TRUE //Do we creep up on humans + var/shy_approach = FALSE //Do we creep up slowly on humans to boop them + + //Icon handling + var/image/tailimage //Cached tail image + + //Darknesssss + var/energy = 100 //For abilities + var/energy_adminbuse = FALSE //For adminbuse infinite energy + var/dark_gains = 0 //Last tick's change in energy + var/ability_flags = 0 //Flags for active abilities + var/obj/screen/darkhud //Holder to update this icon + var/obj/screen/energyhud //Holder to update this icon + + var/list/shadekin_abilities + +/mob/living/simple_mob/shadekin/Initialize() + //You spawned the prototype, and want a totally random one. + if(type == /mob/living/simple_mob/shadekin) + + //I'm told by VerySoft these are the liklihood values + var/list/sk_types = list( + /mob/living/simple_mob/shadekin/red = 20, //Actively seek people out to nom, so fairly common to see (relatively speaking), + /mob/living/simple_mob/shadekin/blue = 15, //Explorers that like to interact with people, so still fairly common, + /mob/living/simple_mob/shadekin/purple = 15, //Also explorers that may or may not homf people, + /mob/living/simple_mob/shadekin/yellow = 1 //Very rare, usually never leaves their home + ) + var/new_type = pickweight(sk_types) + + new new_type(loc) + initialized = TRUE + return INITIALIZE_HINT_QDEL + + if(icon_state == "map_example") + icon_state = pick("white","dark","brown") + + icon_living = icon_state + + switch(eye_state) + if(BLUE_EYES) + eye_icon_state = "e_blue" + if(RED_EYES) + eye_icon_state = "e_red" + if(PURPLE_EYES) + eye_icon_state = "e_purple" + if(YELLOW_EYES) + eye_icon_state = "e_yellow" + if(GREEN_EYES) + eye_icon_state = "e_green" + if(ORANGE_EYES) + eye_icon_state = "e_orange" + else + eye_icon_state = "e_red" + + tailimage = image('icons/mob/vore_shadekin64.dmi',null,icon_state) + tailimage.pixel_x = -16 + + if(eye_desc) + desc += " This one has [eye_desc]!" + + var/list/ability_types = subtypesof(/obj/effect/shadekin_ability) + shadekin_abilities = list() + for(var/type in ability_types) + shadekin_abilities += new type(src) + + update_icon() + + return ..() + +/mob/living/simple_mob/shadekin/Destroy() + QDEL_LIST_NULL(shadekin_abilities) + . = ..() + +/mob/living/simple_mob/shadekin/init_vore() + if(LAZYLEN(vore_organs)) + return + + var/obj/belly/B = new /obj/belly(src) + vore_selected = B + B.immutable = 1 + B.name = vore_stomach_name ? vore_stomach_name : "stomach" + B.desc = vore_stomach_flavor ? vore_stomach_flavor : "Your surroundings are warm, soft, and slimy. Makes sense, considering you're inside \the [name]." + B.digest_mode = vore_default_mode + B.escapable = vore_escape_chance > 0 + B.escapechance = vore_escape_chance + B.digestchance = vore_digest_chance + B.absorbchance = vore_absorb_chance + B.human_prey_swallow_time = swallowTime + B.nonhuman_prey_swallow_time = swallowTime + B.vore_verb = "swallow" + // TODO - Customizable per mob + B.emote_lists[DM_HOLD] = list( + "The walls gently squeeze against you. The wet sounds of shifting flesh against your form fill the air.", + "The hot, humid air rushes around you for a moment as the creature urps. The walls clench in around you for a moment, before relaxing again.", + "Your body is soaked in the fluids that cling to the churning walls. They squeeze across your form gently, conforming to your shape.", + "You can feel the world around you shift and sway as the creature moves! The flesh is stretchy, doughy. You can sink into it a little ways before it bounces back, curling you into a small shape." + ) + B.emote_lists[DM_DIGEST] = list( + "The walls slop thick slime across your body! It tingles briefly before the sting and ache sets in!", + "The sound of your body slipping and sliding against the powerfully churning stomach fills the air!", + "The grip of that stomach is harsh. Eagerly mushing and rubbing that slime into your body in attempts to break you down!", + "The intense churning and grinding jostles your around within the thick slime as you're slowly broken down!" + ) + B.emote_lists[DM_ABSORB] = list( + "The walls cling to you awfully close... It's almost like you're sinking into them.", + "You can feel the walls press in tightly against you, clinging to you posessively!", + "It almost feels like you're sinking into the soft, doughy flesh!", + "You can feel the walls press in around you. Almost molten, so squishy!!" + ) + B.emote_lists[DM_DRAIN] = list( + "The walls churn down on you heavily!! It's hard to move!", + "You can feel yourself getting weaker with every moment! The doughy walls sap your strength!", + "You're practically smothered in the oppressive heat of the creature's stomach!", + "It's hot, wet and tight!" + ) + B.emote_lists[DM_HEAL] = list( + "The walls pulse against you almost rhythmically. It feels nice, almost like a massage.", + "You're gently squeezed in pleasant warmth, softly churned.", + "The doughy feel of the heavy flesh clinging to you makes you feel a little stronger with every passing moment.", + "The flesh caresses across your body gently as you're held." + ) + B.digest_messages_prey = list( + "Your body is steadily softened more and more over time! Eventually you pass out. The creature's stomach rumbles powerfully as you are reduced to paste, processed for energy!", + "The creature's slimy gut lets out a heavy groan as you're slowly melted away. Gushing deeper through the creature.", + "The stinging and aching gives way to numbness as you're slowly smothered out. Your body is steadily reduced to nutrients and energy for the creature to continue on its way.", + "The chaos of being digested fades as you're snuffed out by a harsh clench! You're steadily broken down into a thick paste, processed and absorbed by the predator!" + ) + +/mob/living/simple_mob/shadekin/Life() + . = ..() + if(ability_flags & AB_PHASE_SHIFTED) + density = FALSE + + //Convert spare nutrition into energy at a certain ratio + if(. && nutrition > initial(nutrition) && energy < 100) + nutrition = max(0, nutrition-5) + energy = min(100,energy+1) + +/mob/living/simple_mob/shadekin/update_icon() + . = ..() + + cut_overlay(tailimage) + + tailimage.icon_state = icon_state + + add_overlay(tailimage) + add_overlay(eye_icon_state) + +/mob/living/simple_mob/shadekin/Stat() + . = ..() + if(statpanel("Shadekin")) + abilities_stat() + +/mob/living/simple_mob/shadekin/proc/abilities_stat() + for(var/A in shadekin_abilities) + var/obj/effect/shadekin_ability/ability = A + stat("[ability.ability_name]",ability.atom_button_text()) + +//They phase back to the dark when killed +/mob/living/simple_mob/shadekin/death(gibbed, deathmessage = "phases to somewhere far away!") + overlays = list() + icon_state = "" + flick("tp_out",src) + spawn(1 SECOND) + qdel(src) //Back from whence you came! + + . = ..(FALSE, deathmessage) + +/* //VOREStation AI Temporary Removal +//Blue-eyes want to nom people to heal them +/mob/living/simple_mob/shadekin/Found(var/atom/A) + if(specific_targets && isliving(A)) //Healing! + var/mob/living/L = A + var/health_percent = (L.health/L.maxHealth)*100 + if(health_percent <= 50 && will_eat(A)) + return A + . = ..() +*/ + +//They reach nutritional equilibrium (important for blue-eyes healbelly) +/mob/living/simple_mob/shadekin/Life() + if((. = ..())) + handle_shade() + +/mob/living/simple_mob/shadekin/proc/handle_shade() + //Shifted kin don't gain/lose energy (and save time if we're at the cap) + var/darkness = 1 + + + var/turf/T = get_turf(src) + if(!T) + dark_gains = 0 + return + + var/brightness = T.get_lumcount() //Brightness in 0.0 to 1.0 + darkness = 1-brightness //Invert + + if(ability_flags & AB_PHASE_SHIFTED) + dark_gains = 0 + else + //Heal (very) slowly in good darkness + if(darkness >= 0.75) + adjustFireLoss(-0.05) + adjustBruteLoss(-0.05) + adjustToxLoss(-0.05) + + switch(eye_state) + //Blue has constant, steady (slow) regen and ignores darkness. + if(BLUE_EYES) + dark_gains = 0.5 + //Red has extremely tiny energy buildup in dark, none in light, and hunts for energy. + if(RED_EYES) + if(darkness >= 0.75) + dark_gains = 0.25 + //Purple eyes have moderate gains in darkness and loss in light. + if(PURPLE_EYES) + dark_gains = round((darkness - 0.5) * 2, 0.1) + //Yellow has extreme gains in darkness and loss in light. + if(YELLOW_EYES) + dark_gains = round((darkness - 0.5) * 4, 0.1) + //Similar to blues, but passive is less, and affected by dark + if(GREEN_EYES) + dark_gains = 0.25 + dark_gains += round((darkness - 0.5), 0.1) + //More able to get energy out of the dark, worse attack gains tho + if(ORANGE_EYES) + if(darkness >= 0.65) + dark_gains = 0.30 + + energy = max(0,min(initial(energy),energy + dark_gains)) + + if(energy_adminbuse) + energy = 100 + + //Update turf darkness hud + if(darkhud) + switch(darkness) + if(0.80 to 1.00) + darkhud.icon_state = "dark2" + if(0.60 to 0.80) + darkhud.icon_state = "dark1" + if(0.40 to 0.60) + darkhud.icon_state = "dark" + if(0.20 to 0.40) + darkhud.icon_state = "dark-1" + if(0.00 to 0.20) + darkhud.icon_state = "dark-2" + + //Update energy storage hud + if(energyhud) + switch(energy) + if(80 to INFINITY) + energyhud.icon_state = "energy0" + if(60 to 80) + energyhud.icon_state = "energy1" + if(40 to 60) + energyhud.icon_state = "energy2" + if(20 to 40) + energyhud.icon_state = "energy3" + if(0 to 20) + energyhud.icon_state = "energy4" + +/* //VOREStation AI Removal +//Friendly ones wander towards people, maybe shy-ly if they are set to shy +/mob/living/simple_mob/shadekin/handle_wander_movement() + if(isturf(src.loc) && !resting && !buckled && canmove) + lifes_since_move++ + if(lifes_since_move >= turns_per_move) + if(!(stop_when_pulled && pulledby)) + var/moving_to + + if(stalker) + //Sniff sniff. + var/list/humans = human_mobs(world.view) + + //Can we see the last person we were following? + if(henlo_human && !(henlo_human in humans)) + henlo_human = null + + //Can we find a new person to follow? + if(!henlo_human) + while(!henlo_human && humans.len) + henlo_human = pick(humans) + if(!isturf(henlo_human.loc)) + humans -= henlo_human + henlo_human = null + + //Boopable hunam? + if(henlo_human) + moving_to = get_dir(src,henlo_human) + + if((get_dist(src,henlo_human) <= 1)) + dir = moving_to + if(prob(speak_chance)) + visible_message("\The [src] [pick(friendly)] \the [henlo_human].") + shy_approach = FALSE //ACCLIMATED + lifes_since_move = 0 + return //No need to move + + if(shy_approach) + var/them_to_us = turn(moving_to,180) + if(abs(dir2angle(henlo_human.dir) - dir2angle(them_to_us)) <= 90) + dir = them_to_us + return //AAA! + + dir = moving_to + + //Random walk + if(!moving_to) + moving_to = pick(cardinal) + dir = moving_to + + var/turf/T = get_step(src,moving_to) + if(avoid_turf(T)) + return + Move(T) + lifes_since_move = 0 +*/ + +/mob/living/simple_mob/shadekin/speech_bubble_appearance() + return "ghost" + +/mob/living/simple_mob/shadekin/apply_melee_effects(var/atom/A) + . = ..(A) + if(isliving(A)) //We punched something! + var/mob/living/L = A + if(L.stat != DEAD) + var/gains = 0 + switch(eye_state) + if(RED_EYES) + gains = 8 + if(BLUE_EYES) + gains = 1 + if(PURPLE_EYES) + gains = 4 + if(YELLOW_EYES) + gains = 3 + if(GREEN_EYES) + gains = 1 + if(ORANGE_EYES) + gains = 5 + + energy += gains + +//Special hud elements for darkness and energy gains +/mob/living/simple_mob/shadekin/extra_huds(var/datum/hud/hud,var/icon/ui_style,var/list/hud_elements) + //Darkness hud + darkhud = new /obj/screen() + darkhud.icon = ui_style + darkhud.icon_state = "dark" + darkhud.name = "darkness" + darkhud.screen_loc = "CENTER-2:16,SOUTH:5" //Left of the left hand + darkhud.alpha = 150 + hud_elements |= darkhud + + //Energy hud + energyhud = new /obj/screen() + energyhud.icon = ui_style + energyhud.icon_state = "energy0" + energyhud.name = "energy" + energyhud.screen_loc = "CENTER+1:16,SOUTH:5" //Right of the right hand + energyhud.alpha = 150 + hud_elements |= energyhud + +// When someone clicks us with an empty hand +/mob/living/simple_mob/shadekin/attack_hand(mob/living/carbon/human/M as mob) + . = ..() + if(M.a_intent == I_HELP) + shy_approach = FALSE //ACCLIMATED + +/datum/say_list/shadekin + speak = list("Marrr.", "Marrr?", "Marrr!") + emote_hear = list("chrrrrrs", "wurbles", "wrrrrbles") + emote_see = list("tailtwitches", "earflicks") + say_maybe_target = list("...mar?") + say_got_target = list("MAR!!!") + //reactions = list("Mar?" = "Marrr!", "Mar!" = "Marrr???", "Mar." = "Marrr.") + +/datum/language/shadekin + name = "Shadekin Empathy" + desc = "Shadekin seem to always know what the others are thinking. This is probably why." + colour = "changeling" + speech_verb = "mars" + ask_verb = "mars" + exclaim_verb = "mars" + key = "m" + machine_understands = 0 + flags = WHITELISTED | HIVEMIND diff --git a/code/modules/mob/living/simple_mob/subtypes/vore/shadekin/types.dm b/code/modules/mob/living/simple_mob/subtypes/vore/shadekin/types.dm new file mode 100644 index 0000000000..79e12f39fb --- /dev/null +++ b/code/modules/mob/living/simple_mob/subtypes/vore/shadekin/types.dm @@ -0,0 +1,256 @@ +///////////////////////////////////////////////////////////////// +/mob/living/simple_mob/shadekin/red + name = "red-eyed shadekin" + eye_state = RED_EYES + //hostile = TRUE + //animal = TRUE + //stop_when_pulled = FALSE + //destroy_surroundings = TRUE + armor = list( + "melee" = 30, + "bullet" = 20, + "laser" = 20, + "energy" = 50, + "bomb" = 10, + "bio" = 100, + "rad" = 100) + + eye_desc = "red eyes" + + vore_stomach_flavor = "You slip past pointy triangle teeth and down the slick, \ + slippery gullet of the creature. It's warm, and the air is thick. You can hear \ + its body squelch and shift around you as you settle into its stomach! Thick digestive \ + enzymes cling to you within that dark space, tingling and stinging immediately! The weight of \ + the doughy walls press in around you instantly, churning you up as you begin to digest!" + + player_msg = "You hunt for energy to fuel yourself, not minding in the least \ + if you strip it off unsuspecting prey. You're stronger than other shadekin, faster, and more capable in \ + a brawl, but you barely generate any of your own energy. You can stand in a dark spot to gather scraps \ + of energy in a pinch, but otherwise need to take it, by force if necessary." + +/mob/living/simple_mob/shadekin/red/white + icon_state = "white" +/mob/living/simple_mob/shadekin/red/dark + icon_state = "dark" +/mob/living/simple_mob/shadekin/red/brown + icon_state = "brown" + +///////////////////////////////////////////////////////////////// +/mob/living/simple_mob/shadekin/blue + name = "blue-eyed shadekin" + eye_state = BLUE_EYES + health = 100 + //hostile = FALSE + //animal = FALSE + //stop_when_pulled = TRUE + //specific_targets = TRUE //For finding injured people + //destroy_surroundings = FALSE + vore_default_mode = DM_HEAL + vore_escape_chance = 75 + vore_standing_too = 1 + vore_pounce_chance = 100 + swallowTime = 4 SECONDS //A little longer to compensate for the above + vore_ignores_undigestable = FALSE + attacktext = list("shoved") + armor = list( + "melee" = 5, + "bullet" = 5, + "laser" = 5, + "energy" = 5, + "bomb" = 0, + "bio" = 100, + "rad" = 100) + + eye_desc = "blue eyes" + shy_approach = TRUE + stalker = TRUE + vore_stomach_flavor = "You slip past pointy triangle teeth and down the slick, \ + slippery gullet of the creature. It's warm, and the air is thick. You can hear its body \ + squelch and shift around you as you settle into its stomach! It's oddly calm, and very dark. \ + The doughy flesh rolls across your form in gentle waves. The aches and pains across your form slowly begin to \ + diminish, your body is healing much faster than normal! You're also soon soaked in harmless slime." + + player_msg = "You've chosen to generate your own energy rather than taking \ + it from others. Most of the time, anyway. You don't have a need to steal energy from others, and gather it up \ + without doing so, albeit slowly. Dark and light are irrelevant to you, they are just different places to explore and \ + discover new things and new people." + +/mob/living/simple_mob/shadekin/blue/white + icon_state = "white" +/mob/living/simple_mob/shadekin/blue/dark + icon_state = "dark" +/mob/living/simple_mob/shadekin/blue/brown + icon_state = "brown" + +///////////////////////////////////////////////////////////////// +/mob/living/simple_mob/shadekin/purple + name = "purple-eyed shadekin" + eye_state = PURPLE_EYES + health = 150 + //hostile = FALSE + //animal = TRUE + //stop_when_pulled = FALSE + //destroy_surroundings = TRUE + vore_default_mode = DM_HOLD + vore_digest_chance = 25 + vore_absorb_chance = 25 + armor = list( + "melee" = 15, + "bullet" = 15, + "laser" = 15, + "energy" = 15, + "bomb" = 15, + "bio" = 100, + "rad" = 100) + + eye_desc = "purple eyes" + shy_approach = TRUE + stalker = TRUE + vore_stomach_flavor = "You slip past pointy triangle teeth and down the slick, slippery gullet of the creature. \ + It's warm, and the air is thick. You can hear its body squelch and shift around you as you settle into its stomach! \ + It's relatively calm inside the dark organ. Wet and almost molten for how gooey your surroundings feel. \ + You can feel the doughy walls cling to you posessively... It's almost like you could sink into them. \ + There is also an ominous gurgling from somewhere nearby..." + + player_msg = "You're familiar with generating your own energy, but occasionally \ + steal it from others when it suits you. You generate energy at a moderate pace in dark areas, and staying in well-lit \ + areas is taxing on your energy. You can harvest energy from others in a fight, but since you don't need to, you may \ + just choose to simply not fight." + +/mob/living/simple_mob/shadekin/purple/white + icon_state = "white" +/mob/living/simple_mob/shadekin/purple/dark + icon_state = "dark" +/mob/living/simple_mob/shadekin/purple/brown + icon_state = "brown" + +///////////////////////////////////////////////////////////////// +/mob/living/simple_mob/shadekin/yellow + name = "yellow-eyed shadekin" + eye_state = YELLOW_EYES + health = 100 + //hostile = FALSE + //animal = TRUE + //stop_when_pulled = FALSE + //destroy_surroundings = TRUE + vore_default_mode = DM_DRAIN + vore_digest_chance = 5 + vore_ignores_undigestable = FALSE + armor = list( + "melee" = 5, + "bullet" = 5, + "laser" = 5, + "energy" = 5, + "bomb" = 0, + "bio" = 100, + "rad" = 100) + + eye_desc = "yellow eyes" + stalker = FALSE + vore_stomach_flavor = "You slip past pointy triangle teeth and down the slick, slippery gullet \ + of the creature. It's warm, and the air is thick. You can hear its body squelch and shift around you \ + as you settle into its stomach! The doughy walls within cling to you heavily, churning down on you, wearing \ + you out!! There doesn't appear to be any actual danger here, harmless slime clings to you, but it's getting \ + harder and harder to move as those walls press in on you insistently!" + + player_msg = "Your kind rarely ventures into realspace. Being in any well-lit \ + area is very taxing on you, but you gain energy extremely fast in any very dark area. You're weaker than other \ + shadekin, but your fast energy generation in the dark allows you to phase shift more often." + +/mob/living/simple_mob/shadekin/yellow/white + icon_state = "white" +/mob/living/simple_mob/shadekin/yellow/dark + icon_state = "dark" +/mob/living/simple_mob/shadekin/yellow/brown + icon_state = "brown" + +///////////////////////////////////////////////////////////////// +/mob/living/simple_mob/shadekin/green + name = "green-eyed shadekin" + eye_state = GREEN_EYES + health = 125 + //hostile = FALSE + //animal = TRUE + //stop_when_pulled = FALSE + //destroy_surroundings = TRUE + vore_default_mode = DM_DRAIN + vore_digest_chance = 0 + vore_ignores_undigestable = FALSE + armor = list( + "melee" = 5, + "bullet" = 5, + "laser" = 5, + "energy" = 5, + "bomb" = 0, + "bio" = 100, + "rad" = 100) + + eye_desc = "green eyes" + stalker = TRUE + vore_stomach_flavor = "You slip past pointy triangle teeth and down the slick, slippery gullet \ + of the creature. It's warm, and the air is thick. You can hear its body squelch and shift around you \ + as you settle into its stomach! The doughy walls within cling to you heavily, churning down on you, wearing \ + you out!! There doesn't appear to be any actual danger here, harmless slime clings to you, but it's getting \ + harder and harder to move as those walls press in on you insistently!" + + player_msg = "Your kind rarely ventures into realspace. Being in any well-lit area is very taxing on you, but you \ + have more experience than your yellow-eyed cousins. You gain energy decently fast in any very dark area. You're weaker than other \ + shadekin, but your slight energy generation constnatly, and especially in the dark allows for a good mix of uses." + +/mob/living/simple_mob/shadekin/green/white + icon_state = "white" +/mob/living/simple_mob/shadekin/green/dark + icon_state = "dark" +/mob/living/simple_mob/shadekin/green/brown + icon_state = "brown" + +///////////////////////////////////////////////////////////////// +/mob/living/simple_mob/shadekin/orange + name = "orange-eyed shadekin" + eye_state = ORANGE_EYES + health = 175 + //hostile = TRUE + //animal = TRUE + //stop_when_pulled = FALSE + //destroy_surroundings = TRUE + armor = list( + "melee" = 20, + "bullet" = 15, + "laser" = 15, + "energy" = 25, + "bomb" = 10, + "bio" = 100, + "rad" = 100) + + eye_desc = "orange eyes" + + vore_stomach_flavor = "You slip past pointy triangle teeth and down the slick, \ + slippery gullet of the creature. It's warm, and the air is thick. You can hear \ + its body squelch and shift around you as you settle into its stomach! Thick digestive \ + enzymes cling to you within that dark space, tingling and stinging immediately! The weight of \ + the doughy walls press in around you instantly, churning you up as you begin to digest!" + + player_msg = "You usually hunt for energy to fuel yourself, though not as often as your red-eyed cousins. \ + You're stronger than most shadekin, faster, and more capable in a brawl, but you don't generate much of your own energy. \ + You can stand in a dark spot to gather some energy, but otherwise need to take it, by force if necessary." + +/mob/living/simple_mob/shadekin/orange/white + icon_state = "white" +/mob/living/simple_mob/shadekin/orange/dark + icon_state = "dark" +/mob/living/simple_mob/shadekin/orange/brown + icon_state = "brown" + +///////////////////////////////////////////////////////////////// +//Fluffy specific fluffer +/mob/living/simple_mob/shadekin/blue/rivyr + name = "Rivyr" + desc = "She appears to be a fluffer of some sort. Deep blue eyes and curious attitude." + icon_state = "rivyr" + eye_desc = "" + vore_stomach_flavor = "Blue flesh gleams in the fading light as you slip down the little mar's gullet! \ + Gooey flesh and heat surrounds your form as you're tucked away into the darkness of her stomach! Thick slimes cling \ + to you, but they seem to be harmless. The organ gently churns around you, clinging to your shape and forcing \ + you to curl up a bit. You can feel her rub at you some through the layers of flesh and fluff, while aches \ + and pains begin to fade away across your body." + player_msg = "Mar? Mar mar. Mar mar mar. Mar. Mar mar? Mar! Mar. Marrrr." diff --git a/code/modules/mob/living/simple_mob/subtypes/vore/shadekin/~defines.dm b/code/modules/mob/living/simple_mob/subtypes/vore/shadekin/~defines.dm new file mode 100644 index 0000000000..28ce75c50b --- /dev/null +++ b/code/modules/mob/living/simple_mob/subtypes/vore/shadekin/~defines.dm @@ -0,0 +1,11 @@ +#undef NOT_WHILE_SHIFTED +#undef ONLY_WHILE_SHIFTED +#undef SHIFTED_OR_NOT + +#undef BLUE_EYES +#undef RED_EYES +#undef PURPLE_EYES +#undef YELLOW_EYES + +#undef AB_PHASE_SHIFTED +#undef AB_SHADE_REGEN \ No newline at end of file diff --git a/code/modules/mob/living/simple_mob/subtypes/vore/snake.dm b/code/modules/mob/living/simple_mob/subtypes/vore/snake.dm new file mode 100644 index 0000000000..138b0eba49 --- /dev/null +++ b/code/modules/mob/living/simple_mob/subtypes/vore/snake.dm @@ -0,0 +1,31 @@ +/mob/living/simple_mob/vore/aggressive/giant_snake + name = "giant snake" + desc = "Snakes. Why did it have to be snakes?" + + icon_dead = "snake-dead" + icon_living = "snake" + icon_state = "snake" + icon = 'icons/mob/vore64x64.dmi' + + faction = "snake" + maxHealth = 200 + health = 200 + + melee_damage_lower = 10 + melee_damage_upper = 25 + + old_x = -16 + old_y = -16 + default_pixel_x = -16 + default_pixel_y = -16 + pixel_x = -16 + pixel_y = -16 + + ai_holder_type = /datum/ai_holder/simple_mob/melee + +// Activate Noms! +/mob/living/simple_mob/vore/aggressive/giant_snake + vore_active = 1 + vore_pounce_chance = 25 + vore_icons = SA_ICON_LIVING + swallowTime = 2 SECONDS // Hungry little bastards. diff --git a/code/modules/mob/living/simple_mob/subtypes/vore/solargrub.dm b/code/modules/mob/living/simple_mob/subtypes/vore/solargrub.dm new file mode 100644 index 0000000000..8444d55538 --- /dev/null +++ b/code/modules/mob/living/simple_mob/subtypes/vore/solargrub.dm @@ -0,0 +1,108 @@ +/* +A work in progress, lore will go here later. +List of things solar grubs should be able to do: + +2. have three stages of growth depending on time. (Or energy drained altho that seems like a hard one to code) +3. be capable of eating people that get knocked out. (also be able to shock attackers that don’t wear insulated gloves.) +5. ((potentially use digested people to reproduce)) +6. add glow? +*/ + +#define SINK_POWER 1 + +/mob/living/simple_mob/animal/space/solargrub + name = "juvenile solargrub" + desc = "A young sparkling solargrub" + icon = 'icons/mob/vore.dmi' //all of these are placeholders + icon_state = "solargrub" + icon_living = "solargrub" + icon_dead = "solargrub-dead" + + faction = "grubs" + maxHealth = 50 //grubs can take a lot of harm + health = 50 + + melee_damage_lower = 1 + melee_damage_upper = 5 + + speed = 2 + + meat_type = /obj/item/weapon/reagent_containers/food/snacks/meat/grubmeat + + response_help = "pokes" + response_disarm = "pushes" + response_harm = "roughly pushes" + + var/poison_per_bite = 5 //grubs cause a shock when they bite someone + var/poison_type = "shockchem" + var/poison_chance = 50 + var/datum/powernet/PN // Our powernet + var/obj/structure/cable/attached // the attached cable + var/emp_chance = 20 // Beware synths + +/datum/say_list/solargrub + emote_see = list("squelches", "squishes") +/* //Commented out pending reworks - 2/2/19 +/mob/living/simple_mob/animal/solargrub/PunchTarget() + if(target_mob&& prob(emp_chance)) + target_mob.emp_act(4) //The weakest strength of EMP + visible_message("The grub releases a powerful shock!") + ..() + +/mob/living/simple_mob/animal/solargrub/Life() + . = ..() + if(!. || ai_inactive) return + + if(stance == STANCE_IDLE) + //first, check for potential cables nearby to powersink + var/turf/S = loc + attached = locate() in S + if(attached) + if(prob(2)) + src.visible_message("\The [src] begins to sink power from the net.") + if(prob(5)) + var/datum/effect/effect/system/spark_spread/sparks = new /datum/effect/effect/system/spark_spread() + sparks.set_up(5, 0, get_turf(src)) + sparks.start() + anchored = 1 + PN = attached.powernet + PN.draw_power(100000) // previous value 150000 + var/apc_drain_rate = 750 //Going to see if grubs are better as a minimal bother. previous value : 4000 + for(var/obj/machinery/power/terminal/T in PN.nodes) + if(istype(T.master, /obj/machinery/power/apc)) + var/obj/machinery/power/apc/A = T.master + if(A.operating && A.cell) + var/cur_charge = A.cell.charge / CELLRATE + var/drain_val = min(apc_drain_rate, cur_charge) + A.cell.use(drain_val * CELLRATE) + else if(!attached && anchored) + anchored = 0 + PN = null +*/ +/mob/living/simple_mob/animal/solargrub //active noms + vore_bump_chance = 50 + vore_bump_emote = "applies minimal effort to try and slurp up" + vore_active = 1 + vore_capacity = 1 + vore_pounce_chance = 0 //grubs only eat incapacitated targets + vore_default_mode = DM_DIGEST +/* +/mob/living/simple_mob/animal/solargrub/PunchTarget() + . = ..() + if(isliving(.)) + var/mob/living/L = . + if(L.reagents) + if(prob(poison_chance)) + L << "You feel a shock rushing through your veins." + L.reagents.add_reagent(poison_type, poison_per_bite) */ + +/mob/living/simple_mob/animal/solargrub/death() + src.anchored = 0 + set_light(0) + ..() + +/mob/living/simple_mob/animal/solargrub/handle_light() + . = ..() + if(. == 0 && !is_dead()) + set_light(2.5, 1, COLOR_YELLOW) + return 1 diff --git a/code/modules/mob/living/simple_mob/subtypes/vore/solargrub_larva.dm b/code/modules/mob/living/simple_mob/subtypes/vore/solargrub_larva.dm new file mode 100644 index 0000000000..898a3d2757 --- /dev/null +++ b/code/modules/mob/living/simple_mob/subtypes/vore/solargrub_larva.dm @@ -0,0 +1,256 @@ +var/global/list/grub_machine_overlays = list() + +/mob/living/simple_mob/solargrub_larva + name = "solargrub larva" + desc = "A tiny wormy thing that can grow to massive sizes under the right conditions." + icon = 'icons/mob/vore.dmi' + icon_state = "grublarva" + icon_living = "grublarva" + icon_dead = "grublarva-dead" + + health = 5 + maxHealth = 5 + + meat_amount = 2 + meat_type = /obj/item/weapon/reagent_containers/food/snacks/meat/grubmeat + + faction = "grubs" + + response_help = "pats" + response_disarm = "nudges" + response_harm = "stomps on" + + mob_size = MOB_MINISCULE + pass_flags = PASSTABLE + can_pull_size = ITEMSIZE_TINY + can_pull_mobs = MOB_PULL_NONE + density = 0 + + stop_when_pulled = 0 + + var/static/list/ignored_machine_types = list( + /obj/machinery/atmospherics/unary/vent_pump, + /obj/machinery/atmospherics/unary/vent_scrubber, + /obj/machinery/door/firedoor + ) + + var/obj/machinery/atmospherics/unary/vent_pump/target_vent + + var/datum/effect/effect/system/spark_spread/sparks + var/image/machine_effect + + var/obj/machinery/abstract_grub_machine/powermachine + var/power_drained = 0 + var/forced_out = 0 + +/mob/living/simple_mob/solargrub_larva/New() + ..() + powermachine = new(src) + sparks = new(src) + sparks.set_up() + sparks.attach(src) + verbs += /mob/living/proc/ventcrawl + +/mob/living/simple_mob/solargrub_larva/death() + powermachine.draining = 0 + set_light(0) + return ..() + +/mob/living/simple_mob/solargrub_larva/Destroy() + QDEL_NULL(powermachine) + QDEL_NULL(sparks) + QDEL_NULL(machine_effect) + target_vent = null + return ..() + +/mob/living/simple_mob/solargrub_larva/Life() + . = ..() + + if(machine_effect && !istype(loc, /obj/machinery)) + QDEL_NULL(machine_effect) + + if(!. || ai_inactive) + return + + if(power_drained >= 7 MEGAWATTS && prob(5)) + expand_grub() + return + + if(istype(loc, /obj/machinery)) + if(machine_effect && air_master.current_cycle%30) + for(var/mob/M in player_list) + M << machine_effect + if(prob(10)) + sparks.start() + return + + if(stance == STANCE_IDLE) + if(forced_out) + forced_out = Clamp(0, forced_out--, forced_out) + return + + if(target_vent) + if(Adjacent(target_vent)) + spawn() + do_ventcrawl(target_vent) + target_vent = null + else + target_vent = null + stop_automated_movement = 0 + walk(src, 0) + return + + if(prob(20)) + var/list/possible_machines = list() + for(var/obj/machinery/M in orange(1,src)) + if(!Adjacent(M)) + continue + if(istype(M, /obj/machinery/power/apc) || istype(M, /obj/machinery/power/smes)) //APCs and SMES units don't actually use power, but it's too thematic to ignore them + possible_machines += M + continue + if(is_type_in_list(M, ignored_machine_types)) + continue + if(!M.idle_power_usage && !M.active_power_usage) //If it can't use power at all, ignore it + continue + possible_machines += M + if(possible_machines.len) + enter_machine(pick(possible_machines)) + return + + if(prob(10)) + var/list/vents = list() + for(var/obj/machinery/atmospherics/unary/vent_pump/vent in view(7,src)) + if(vent.welded) + continue + vents += vent + if(vents.len) + var/picked = pick(vents) + target_vent = picked + WanderTowards(get_turf(picked)) + return + +/mob/living/simple_mob/solargrub_larva/proc/enter_machine(var/obj/machinery/M) + if(!istype(M)) + return + forceMove(M) + powermachine.draining = 2 + visible_message("\The [src] finds an opening and crawls inside \the [M].") + if(!(M.type in grub_machine_overlays)) + generate_machine_effect(M) + machine_effect = image(grub_machine_overlays[M.type], M) //Can't do this the reasonable way with an overlay, + for(var/mob/L in player_list) //because nearly every machine updates its icon by removing all overlays first + L << machine_effect + +/mob/living/simple_mob/solargrub_larva/proc/generate_machine_effect(var/obj/machinery/M) + var/icon/I = new /icon(M.icon, M.icon_state) + I.Blend(new /icon('icons/effects/blood.dmi', rgb(255,255,255)),ICON_ADD) + I.Blend(new /icon('icons/effects/alert.dmi', "_red"),ICON_MULTIPLY) + grub_machine_overlays[M.type] = I + +/mob/living/simple_mob/solargrub_larva/proc/eject_from_machine(var/obj/machinery/M) + if(!M) + if(istype(loc, /obj/machinery)) + M = loc + else + return + forceMove(get_turf(M)) + sparks.start() + if(machine_effect) + QDEL_NULL(machine_effect) + forced_out += rand(5,15) + powermachine.draining = 1 + +/mob/living/simple_mob/solargrub_larva/proc/do_ventcrawl(var/obj/machinery/atmospherics/unary/vent_pump/vent) + if(!vent) + return + var/obj/machinery/atmospherics/unary/vent_pump/end_vent = get_safe_ventcrawl_target(vent) + if(!end_vent) + return + forceMove(vent) + playsound(vent, 'sound/machines/ventcrawl.ogg', 50, 1, -3) + vent.visible_message("\The [src] wiggles into \the [vent]!") + var/redirect_attempts = 3 + while(redirect_attempts) + var/travel_time = round(get_dist(get_turf(src), get_turf(end_vent)) / 2) + sleep(travel_time) + if(end_vent.welded) + end_vent = get_safe_ventcrawl_target(vent) + if(!end_vent) + forceMove(get_turf(vent)) + return + redirect_attempts-- + continue + break + playsound(end_vent, 'sound/machines/ventcrawl.ogg', 50, 1, -3) + forceMove(get_turf(end_vent)) + +/mob/living/simple_mob/solargrub_larva/proc/expand_grub() + eject_from_machine() + visible_message("\The [src] suddenly balloons in size!") + new /mob/living/simple_mob/animal/solargrub(get_turf(src)) +// var/mob/living/simple_mob/animal/solargrub/grub = new(get_turf(src)) +// grub.power_drained = power_drained //TODO + qdel(src) + +/mob/living/simple_mob/solargrub_larva/handle_light() + . = ..() + if(. == 0 && !is_dead()) + set_light(1.5, 1, COLOR_YELLOW) + return 1 + + +/obj/machinery/abstract_grub_machine + var/total_active_power_usage = 45 KILOWATTS + var/list/active_power_usages = list(15 KILOWATTS, 15 KILOWATTS, 15 KILOWATTS) + var/total_idle_power_usage = 3 KILOWATTS + var/list/idle_power_usages = list(1 KILOWATTS, 1 KILOWATTS, 1 KILOWATTS) + var/draining = 1 + var/mob/living/simple_mob/solargrub_larva/grub + +/obj/machinery/abstract_grub_machine/New() + ..() + shuffle_power_usages() + grub = loc + if(!istype(grub)) + grub = null + qdel(src) + +/obj/machinery/abstract_grub_machine/Destroy() + grub = null + return ..() + +/obj/machinery/abstract_grub_machine/process() + if(!draining) + return + var/area/A = get_area(src) + if(!A) + return + var/list/power_list + switch(draining) + if(1) + power_list = idle_power_usages + if(2) + power_list = active_power_usages + for(var/i = 1 to power_list.len) + if(A.powered(i)) + use_power(power_list[i], i) + grub.power_drained += power_list[i] + if(prob(5)) + shuffle_power_usages() + +/obj/machinery/abstract_grub_machine/proc/shuffle_power_usages() + total_active_power_usage = rand(30 KILOWATTS, 60 KILOWATTS) + total_idle_power_usage = rand(1 KILOWATTS, 5 KILOWATTS) + active_power_usages = split_into_3(total_active_power_usage) + idle_power_usages = split_into_3(total_idle_power_usage) + + +/obj/item/device/multitool/afterattack(obj/O, mob/user, proximity) + if(proximity) + if(istype(O, /obj/machinery)) + var/mob/living/simple_mob/solargrub_larva/grub = locate() in O + if(grub) + grub.eject_from_machine(O) + to_chat(user, "You disturb a grub nesting in \the [O]!") + return + return ..() diff --git a/code/modules/mob/living/simple_mob/subtypes/vore/vore.dm b/code/modules/mob/living/simple_mob/subtypes/vore/vore.dm new file mode 100644 index 0000000000..d09a4c7adf --- /dev/null +++ b/code/modules/mob/living/simple_mob/subtypes/vore/vore.dm @@ -0,0 +1,5 @@ +/mob/living/simple_mob/vore + mob_bump_flag = 0 + +/mob/living/simple_mob/vore/aggressive + mob_bump_flag = 1 \ No newline at end of file diff --git a/code/modules/mob/living/simple_mob/subtypes/vore/wolf.dm b/code/modules/mob/living/simple_mob/subtypes/vore/wolf.dm new file mode 100644 index 0000000000..9cef43c74d --- /dev/null +++ b/code/modules/mob/living/simple_mob/subtypes/vore/wolf.dm @@ -0,0 +1,24 @@ +/mob/living/simple_mob/animal/wolf + name = "grey wolf" + desc = "My, what big jaws it has!" + tt_desc = "Canis lupus" + + icon_dead = "wolf-dead" + icon_living = "wolf" + icon_state = "wolf" + icon = 'icons/mob/vore.dmi' + + movement_cooldown = 5 + + harm_intent_damage = 5 + melee_damage_lower = 10 + melee_damage_upper = 25 + + minbodytemp = 200 + + ai_holder_type = /datum/ai_holder/simple_mob/melee/evasive + +// Activate Noms! +/mob/living/simple_mob/animal/wolf + vore_active = 1 + vore_icons = SA_ICON_LIVING diff --git a/code/modules/mob/living/simple_mob/subtypes/vore/wolfgirl.dm b/code/modules/mob/living/simple_mob/subtypes/vore/wolfgirl.dm new file mode 100644 index 0000000000..83930acf86 --- /dev/null +++ b/code/modules/mob/living/simple_mob/subtypes/vore/wolfgirl.dm @@ -0,0 +1,67 @@ +/mob/living/simple_mob/vore/wolfgirl + name = "wolfgirl" + desc = "AwooOOOOoooo!" + tt_desc = "Homo lupus" + + icon_state = "wolfgirl" + icon_living = "wolfgirl" + icon_dead = "wolfgirl-dead" + icon = 'icons/mob/vore.dmi' + + faction = "wolfgirl" + maxHealth = 30 + health = 30 + + response_help = "pats the" + response_disarm = "gently pushes aside the" + response_harm = "hits the" + + harm_intent_damage = 8 + melee_damage_lower = 15 + melee_damage_upper = 15 + attacktext = list("slashed") + + say_list_type = /datum/say_list/wolfgirl + ai_holder_type = /datum/ai_holder/simple_mob/retaliate/cooperative/wolfgirl + + var/loopstop = 0 //To prevent circular awoooos. +/* +/mob/living/simple_mob/retaliate/wolfgirl/hear_say() + if(world.time - loopstop < 5 SECONDS) + return + else + loopstop = world.time + ..() +*/ +// Activate Noms! +/mob/living/simple_mob/vore/wolfgirl + vore_active = 1 + vore_pounce_chance = 40 + vore_icons = SA_ICON_LIVING + +/datum/ai_holder/simple_mob/retaliate/cooperative/wolfgirl/on_hear_say(mob/living/speaker, message) + + if(!speaker.client) + return + + if(findtext(message, "hello") || findtext(message, "hi") || findtext(message, "greetings")) + delayed_say(pick("Heya!", "Hey!"), speaker) + + if(findtext(message, "Are you a dog?")) + delayed_say(pick("Who, me?! No! Stop saying that!"), speaker) + + if(findtext(message, "Awoo?")) + delayed_say(pick("Awoo."), speaker) + + if(findtext(message, "Awoo!")) + delayed_say(pick("AwooooOOOOooo!"), speaker) + + if(findtext(message, "Awoo.")) + delayed_say(pick("Awoo?"), speaker) + +/datum/say_list/wolfgirl + speak = list("AwoooOOOOoooo!","Awoo~","I'll protect the forest! ... Where's the forest again?","All I need is my sword!","Awoo?","Anyone else smell that?") + emote_hear = list("awoooos!","hmms to herself","plays with her sword") + emote_see = list("narrows her eyes","sniffs the air") + say_maybe_target = list("An enemy!?","What was that?","Is that...?","Hmm?") + say_got_target = list("You won't get away!","I've had it!","I'll vanquish you!","AWOOOOO!") diff --git a/code/modules/mob/living/simple_mob/subtypes/vore/zz_vore_overrides.dm b/code/modules/mob/living/simple_mob/subtypes/vore/zz_vore_overrides.dm new file mode 100644 index 0000000000..a7f76a3974 --- /dev/null +++ b/code/modules/mob/living/simple_mob/subtypes/vore/zz_vore_overrides.dm @@ -0,0 +1,259 @@ +// +// This file overrides settings on upstream simple animals to turn on vore behavior +// + +/* +## For anything that previously inhertited from: /mob/living/simple_mob/hostile/vore ## + + vore_active = 1 + icon = 'icons/mob/vore.dmi' + +## For anything that previously inhertied from: /mob/living/simple_mob/hostile/vore/large ## + + vore_active = 1 + icon = 'icons/mob/vore64x64.dmi' + old_x = -16 + old_y = -16 + pixel_x = -16 + pixel_y = -16 + vore_pounce_chance = 50 +*/ + +// +// Okay! Here we go! +// + +/mob/living/simple_mob/animal/space/alien + vore_active = 1 + icon = 'icons/mob/vore.dmi' + icon_state = "xenohunter" + icon_living = "xenohunter" + icon_dead = "xenohunter-dead" + icon_gib = "gibbed-a" + vore_icons = SA_ICON_LIVING + +/mob/living/simple_mob/animal/space/alien/drone + vore_active = 1 + icon = 'icons/mob/vore.dmi' + icon_state = "xenodrone" + icon_living = "xenodrone" + icon_dead = "xenodrone-dead" + icon_gib = "gibbed-a" + vore_icons = SA_ICON_LIVING + +/mob/living/simple_mob/animal/space/alien/sentinel + vore_active = 1 + icon = 'icons/mob/vore.dmi' + icon_state = "xenosentinel" + icon_living = "xenosentinel" + icon_dead = "xenosentinel-dead" + icon_gib = "gibbed-a" + vore_icons = SA_ICON_LIVING + +/mob/living/simple_mob/animal/space/alien/queen + vore_active = 1 + icon = 'icons/mob/vore.dmi' + icon_state = "xenoqueen" + icon_living = "xenoqueen" + icon_dead = "xenoqueen-dead" + icon_gib = "gibbed-a" + vore_icons = SA_ICON_LIVING + +/mob/living/simple_mob/animal/space/alien/queen/empress + vore_active = 1 + icon = 'icons/mob/vore64x64.dmi' + icon_state = "queen_s" + icon_living = "queen_s" + icon_dead = "queen_dead" + vore_icons = SA_ICON_LIVING | SA_ICON_REST + old_x = -16 + old_y = 0 + default_pixel_x = -16 + pixel_x = -16 + pixel_y = 0 + + vore_capacity = 3 + vore_pounce_chance = 75 + +/mob/living/simple_mob/animal/space/alien/sentinel/praetorian + icon = 'icons/mob/vore64x64.dmi' + vore_icons = SA_ICON_LIVING | SA_ICON_REST + +/mob/living/simple_mob/animal/space/alien/queen/empress/mother + vore_icons = 0 // NO VORE SPRITES + +/mob/living/simple_mob/animal/space/bear + vore_active = 1 + icon = 'icons/mob/vore.dmi' + icon_state = "spacebear" + icon_living = "spacebear" + icon_dead = "spacebear-dead" + icon_gib = "bear-gib" + vore_icons = SA_ICON_LIVING + +/mob/living/simple_mob/hostile/bear/hudson + name = "Hudson" + +/mob/living/simple_mob/hostile/bear/brown + vore_active = 1 + icon = 'icons/mob/vore.dmi' + name = "brown bear" + icon_state = "brownbear" + icon_living = "brownbear" + icon_dead = "brownbear-dead" + icon_gib = "bear-gib" + vore_icons = SA_ICON_LIVING + +/mob/living/simple_mob/animal/space/carp + icon = 'icons/mob/vore.dmi' + vore_active = 1 + vore_icons = SA_ICON_LIVING + +/* //VOREStation AI Temporary removal +/mob/living/simple_mob/hostile/creature/vore + vore_active = 1 + // NO VORE SPRITES + vore_capacity = 0 + vore_pounce_chance = 0 // Only pounces if you're crit. + vore_escape_chance = 0 // As such, if you're a dibshit who feeds yourself to it, you're staying down. + // Overrides to non-vore version + speed = 4 // Slow it down a bit + health = 80 // Increase health to compensate + maxHealth = 80 +*/ + +/mob/living/simple_mob/animal/space/mimic + vore_active = 1 + // NO VORE SPRITES + vore_capacity = 0 + vore_pounce_chance = 33 + // Overrides to non-vore version + maxHealth = 60 + health = 60 + +/mob/living/simple_mob/animal/passive/cat + vore_active = 1 + // NO VORE SPRITES + //specific_targets = 0 // Targeting UNLOCKED //VOREStation Removal - Incompatable + vore_max_size = RESIZE_TINY + +/* //VOREStation AI Temporary removal +/mob/living/simple_mob/cat/PunchTarget() + if(istype(target_mob,/mob/living/simple_mob/mouse)) + visible_message("\The [src] pounces on \the [target_mob]!]") + target_mob.Stun(5) + return EatTarget() + else ..() + +/mob/living/simple_mob/cat/Found(var/atom/found_atom) + if(!SA_attackable(found_atom)) + return null + if(istype(found_atom,/mob/living/simple_mob/mouse)) + return found_atom + if(found_atom in friends) + return null + if(will_eat(found_atom)) + return found_atom + +/mob/living/simple_mob/cat/fluff/Found(var/atom/found_atom) + if (friend == found_atom) + return null + return ..() +*/ +/mob/living/simple_mob/cat/fluff + vore_ignores_undigestable = 0 + vore_pounce_chance = 100 + vore_digest_chance = 0 // just use the toggle + vore_default_mode = DM_HOLD //can use the toggle if you wanna be catfood + vore_standing_too = TRUE //gonna get pounced + +/* //VOREStation AI Temporary Removal +/mob/living/simple_mob/cat/fluff/EatTarget() + var/mob/living/TM = target_mob + prey_excludes += TM //so they won't immediately re-eat someone who struggles out (or gets newspapered out) as soon as they're ate + spawn(3600) // but if they hang around and get comfortable, they might get ate again + if(src && TM) + prey_excludes -= TM + ..() // will_eat check is carried out before EatTarget is called, so prey on the prey_excludes list isn't a problem. +*/ + +/mob/living/simple_mob/animal/passive/fox + vore_active = 1 + // NO VORE SPRITES + vore_max_size = RESIZE_TINY + +/* //VOREStation AI Temporary Removal +/mob/living/simple_mob/fox/PunchTarget() + if(istype(target_mob,/mob/living/simple_mob/mouse)) + return EatTarget() + else ..() + +/mob/living/simple_mob/fox/Found(var/atom/found_atom) + if(!SA_attackable(found_atom)) + return null + if(istype(found_atom,/mob/living/simple_mob/mouse)) + return found_atom + if(found_atom in friends) + return null + if(will_eat(found_atom)) + return found_atom + +/mob/living/simple_mob/fox/fluff/Found(var/atom/found_atom) + if (friend == found_atom) + return null + return ..() +*/ + +/mob/living/simple_mob/fox/fluff + vore_ignores_undigestable = 0 + vore_pounce_chance = 100 + vore_digest_chance = 0 // just use the toggle + vore_default_mode = DM_HOLD //can use the toggle if you wanna be foxfood + vore_standing_too = TRUE // gonna get pounced + +/* //VOREStation AI Temporary Removal +/mob/living/simple_mob/fox/fluff/EatTarget() + var/mob/living/TM = target_mob + prey_excludes += TM //so they won't immediately re-eat someone who struggles out (or gets newspapered out) as soon as they're ate + spawn(3600) // but if they hang around and get comfortable, they might get ate again + if(src && TM) + prey_excludes -= TM + ..() // will_eat check is carried out before EatTarget is called, so prey on the prey_excludes list isn't a problem. +*/ + +/mob/living/simple_mob/animal/space/goose + vore_active = 1 + // NO VORE SPRITES + vore_max_size = RESIZE_SMALL + +/mob/living/simple_mob/animal/passive/penguin + vore_active = 1 + // NO VORE SPRITES + vore_max_size = RESIZE_SMALL + + +/mob/living/simple_mob/hostile/carp/pike + vore_active = 1 + // NO VORE SPRITES + +/mob/living/simple_mob/animal/space/carp/holographic + vore_icons = 0 // NO VORE SPRITES + vore_digest_chance = 0 + vore_absorb_chance = 0 + +// Override stuff for holodeck carp to make them not digest when set to safe! +/mob/living/simple_mob/animal/space/carp/holographic/init_vore() + . = ..() + var/safe = (faction == "neutral") + for(var/belly in vore_organs) + var/obj/belly/B = belly + B.digest_mode = safe ? DM_HOLD : vore_default_mode + +/mob/living/simple_mob/animal/space/carp/holographic/set_safety(var/safe) + . = ..() + for(var/belly in vore_organs) + var/obj/belly/B = belly + B.digest_mode = safe ? DM_HOLD : vore_default_mode + +/mob/living/simple_mob/mouse + faction = "mouse" //Giving mice a faction so certain mobs can get along with them. \ No newline at end of file diff --git a/code/modules/mob/login.dm b/code/modules/mob/login.dm index 8471dd8307..264d7cc851 100644 --- a/code/modules/mob/login.dm +++ b/code/modules/mob/login.dm @@ -40,7 +40,7 @@ client.fps = 0 // Results in using the server FPS next_move = 1 - disconnect_time = null //clear the disconnect time + disconnect_time = null //VOREStation Addition: clear the disconnect time sight |= SEE_SELF ..() @@ -71,4 +71,7 @@ if(!client.tooltips) client.tooltips = new(client) - \ No newline at end of file + + var/turf/T = get_turf(src) + if(isturf(T)) + update_client_z(T.z) \ No newline at end of file diff --git a/code/modules/mob/logout.dm b/code/modules/mob/logout.dm index b204a3109b..317bc2c076 100644 --- a/code/modules/mob/logout.dm +++ b/code/modules/mob/logout.dm @@ -1,7 +1,8 @@ /mob/Logout() GLOB.nanomanager.user_logout(src) // this is used to clean up (remove) this user's Nano UIs player_list -= src - disconnect_time = world.realtime + disconnect_time = world.realtime //VOREStation Addition: logging when we disappear. + update_client_z(null) log_access_out(src) if(admin_datums[src.ckey]) if (ticker && ticker.current_state == GAME_STATE_PLAYING) //Only report this stuff if we are currently playing. diff --git a/code/modules/mob/mob.dm b/code/modules/mob/mob.dm index 98dd934cf1..d377c87872 100644 --- a/code/modules/mob/mob.dm +++ b/code/modules/mob/mob.dm @@ -1,4 +1,4 @@ -/mob/Destroy()//This makes sure that mobs with clients/keys are not just deleted from the game. +/mob/Destroy()//This makes sure that mobs withGLOB.clients/keys are not just deleted from the game. mob_list -= src dead_mob_list -= src living_mob_list -= src @@ -39,7 +39,7 @@ spell_masters = null zone_sel = null -/mob/New() +/mob/Initialize() mob_list += src if(stat == DEAD) dead_mob_list += src @@ -47,7 +47,7 @@ living_mob_list += src hook_vr("mob_new",list(src)) //VOREStation Code update_transform() // Some mobs may start bigger or smaller than normal. - ..() + return ..() /mob/proc/show_message(msg, type, alt, alt_type)//Message, type of message (1 or 2), alternative message, alt message type (1 or 2) @@ -672,25 +672,35 @@ . = (is_client_active(10 MINUTES)) if(.) - if(statpanel("Status") && ticker && ticker.current_state != GAME_STATE_PREGAME) - stat("Station Time", stationtime2text()) - stat("Station Date", stationdate2text()) - stat("Round Duration", roundduration2text()) + if(statpanel("Status")) + stat(null, "Time Dilation: [round(SStime_track.time_dilation_current,1)]% AVG:([round(SStime_track.time_dilation_avg_fast,1)]%, [round(SStime_track.time_dilation_avg,1)]%, [round(SStime_track.time_dilation_avg_slow,1)]%)") + if(ticker && ticker.current_state != GAME_STATE_PREGAME) + stat("Station Time", stationtime2text()) + stat("Station Date", stationdate2text()) + stat("Round Duration", roundduration2text()) if(client.holder) if(statpanel("Status")) stat("Location:", "([x], [y], [z]) [loc]") stat("CPU:","[world.cpu]") stat("Instances:","[world.contents.len]") + stat(null, "Time Dilation: [round(SStime_track.time_dilation_current,1)]% AVG:([round(SStime_track.time_dilation_avg_fast,1)]%, [round(SStime_track.time_dilation_avg,1)]%, [round(SStime_track.time_dilation_avg_slow,1)]%)") if(statpanel("Processes")) if(processScheduler) processScheduler.statProcesses() if(statpanel("MC")) + stat("Location:", "([x], [y], [z]) [loc]") stat("CPU:","[world.cpu]") stat("Instances:","[world.contents.len]") + stat("World Time:", world.time) + stat("Real time of day:", REALTIMEOFDAY) stat(null) + if(GLOB) + GLOB.stat_entry() + else + stat("Globals:", "ERROR") if(Master) Master.stat_entry() else @@ -703,10 +713,18 @@ stat(null) for(var/datum/controller/subsystem/SS in Master.subsystems) SS.stat_entry() - + if(statpanel("Tickets")) GLOB.ahelp_tickets.stat_entry() + + if(length(GLOB.sdql2_queries)) + if(statpanel("SDQL2")) + stat("Access Global SDQL2 List", GLOB.sdql2_vv_statobj) + for(var/i in GLOB.sdql2_queries) + var/datum/SDQL2_query/Q = i + Q.generate_stat() + if(listed_turf && client) if(!TurfAdjacent(listed_turf)) listed_turf = null @@ -743,13 +761,12 @@ /mob/proc/facedir(var/ndir) - if(!canface() || (client && (client.moving || (world.time < client.move_delay)))) + if(!canface() || (client && (client.moving || (world.time < move_delay)))) return 0 set_dir(ndir) if(buckled && buckled.buckle_movable) buckled.set_dir(ndir) - if(client) - client.move_delay += movement_delay() + move_delay += movement_delay() return 1 @@ -885,10 +902,10 @@ return /mob/proc/AdjustLosebreath(amount) - losebreath = Clamp(0, losebreath + amount, 25) + losebreath = CLAMP(0, losebreath + amount, 25) /mob/proc/SetLosebreath(amount) - losebreath = Clamp(0, amount, 25) + losebreath = CLAMP(0, amount, 25) /mob/proc/get_species() return "" @@ -1002,7 +1019,7 @@ mob/proc/yank_out_object() /mob/proc/has_brain_worms() for(var/I in contents) - if(istype(I,/mob/living/simple_animal/borer)) + if(istype(I,/mob/living/simple_mob/animal/borer)) return I return 0 @@ -1178,3 +1195,19 @@ mob/proc/yank_out_object() closeToolTip(usr) //No reason not to, really ..() + +// Manages a global list of mobs with clients attached, indexed by z-level. +/mob/proc/update_client_z(new_z) // +1 to register, null to unregister. + if(registered_z != new_z) + if(registered_z) + GLOB.players_by_zlevel[registered_z] -= src + if(client) + if(new_z) + GLOB.players_by_zlevel[new_z] += src + registered_z = new_z + else + registered_z = null + +/mob/onTransitZ(old_z, new_z) + ..() + update_client_z(new_z) diff --git a/code/modules/mob/mob_defines.dm b/code/modules/mob/mob_defines.dm index 32902d7d48..6fab127084 100644 --- a/code/modules/mob/mob_defines.dm +++ b/code/modules/mob/mob_defines.dm @@ -7,6 +7,8 @@ var/datum/mind/mind var/stat = 0 //Whether a mob is alive or dead. TODO: Move this to living - Nodrak + var/move_delay = null // For movement speed delays. + var/next_move = null // For click delay, despite the misleading name. //Not in use yet var/obj/effect/organstructure/organStructure = null @@ -62,7 +64,6 @@ var/sdisabilities = 0 //Carbon var/disabilities = 0 //Carbon var/atom/movable/pulling = null - var/next_move = null var/transforming = null //Carbon var/other = 0.0 var/eye_blind = null //Carbon @@ -214,7 +215,6 @@ var/list/active_genes=list() var/mob_size = MOB_MEDIUM - var/disconnect_time = null //Time of client loss, set by Logout(), for timekeeping var/forbid_seeing_deadchat = FALSE // Used for lings to not see deadchat, and to have ghosting behave as if they were not really dead. var/seedarkness = 1 //Determines mob's ability to see shadows. 1 = Normal vision, 0 = darkvision @@ -231,3 +231,5 @@ var/attack_icon //Icon to use when attacking w/o anything in-hand var/attack_icon_state //State for above + + var/registered_z diff --git a/code/modules/mob/mob_defines_vr.dm b/code/modules/mob/mob_defines_vr.dm index 829ae9b8fe..806da9a317 100644 --- a/code/modules/mob/mob_defines_vr.dm +++ b/code/modules/mob/mob_defines_vr.dm @@ -2,3 +2,5 @@ var/vantag_hud = 0 // Do I have the HUD enabled? var/flying = 0 // Allows flight var/mob/temporary_form // For holding onto a temporary form + + var/disconnect_time = null //Time of client loss, set by Logout(), for timekeeping diff --git a/code/modules/mob/mob_grab.dm b/code/modules/mob/mob_grab.dm index 0bf523a48e..b335faf1d3 100644 --- a/code/modules/mob/mob_grab.dm +++ b/code/modules/mob/mob_grab.dm @@ -382,7 +382,7 @@ //It's easier to break out of a grab by a smaller mob break_strength += max(size_difference(affecting, assailant), 0) - var/break_chance = break_chance_table[Clamp(break_strength, 1, break_chance_table.len)] + var/break_chance = break_chance_table[CLAMP(break_strength, 1, break_chance_table.len)] if(prob(break_chance)) if(state == GRAB_KILL) reset_kill_state() diff --git a/code/modules/mob/mob_grab_specials.dm b/code/modules/mob/mob_grab_specials.dm index a497bd0cc5..a3e4c14660 100644 --- a/code/modules/mob/mob_grab_specials.dm +++ b/code/modules/mob/mob_grab_specials.dm @@ -61,7 +61,7 @@ target << "You feel extreme pain!" var/max_halloss = round(target.species.total_health * 0.8) //up to 80% of passing out - affecting.adjustHalLoss(Clamp(0, max_halloss - affecting.halloss, 30)) + affecting.adjustHalLoss(CLAMP(0, max_halloss - affecting.halloss, 30)) /obj/item/weapon/grab/proc/attack_eye(mob/living/carbon/human/target, mob/living/carbon/human/attacker) if(!istype(attacker)) diff --git a/code/modules/mob/mob_helpers.dm b/code/modules/mob/mob_helpers.dm index 186487d0b9..6c31f54f8e 100644 --- a/code/modules/mob/mob_helpers.dm +++ b/code/modules/mob/mob_helpers.dm @@ -54,6 +54,9 @@ proc/isdeaf(A) /mob/proc/break_cloak() return +/mob/proc/is_cloaked() + return FALSE + proc/hasorgans(A) // Fucking really?? return ishuman(A) @@ -534,19 +537,17 @@ proc/is_blind(A) return threatcount -/mob/living/simple_animal/assess_perp(var/obj/access_obj, var/check_access, var/auth_weapons, var/check_records, var/check_arrest) +/mob/living/simple_mob/assess_perp(var/obj/access_obj, var/check_access, var/auth_weapons, var/check_records, var/check_arrest) var/threatcount = ..() if(. == SAFE_PERP) return SAFE_PERP - if(!istype(src, /mob/living/simple_animal/retaliate/goat)) - if(hostile) - if(faction != "neutral") // Otherwise Runtime gets killed. - threatcount += 4 + if(has_AI() && ai_holder.hostile && faction != "neutral") // Otherwise Runtime gets killed. + threatcount += 4 return threatcount // Beepsky will (try to) only beat 'bad' slimes. -/mob/living/simple_animal/slime/assess_perp(var/obj/access_obj, var/check_access, var/auth_weapons, var/check_records, var/check_arrest) +/mob/living/simple_mob/slime/xenobio/assess_perp(var/obj/access_obj, var/check_access, var/auth_weapons, var/check_records, var/check_arrest) var/threatcount = 0 if(stat == DEAD) @@ -565,8 +566,10 @@ proc/is_blind(A) if(victim) threatcount += 4 */ - if(rabid) - threatcount = 10 + if(has_AI()) + var/datum/ai_holder/simple_mob/xenobio_slime/AI = ai_holder + if(AI.rabid) + threatcount = 10 return threatcount diff --git a/code/modules/mob/mob_movement.dm b/code/modules/mob/mob_movement.dm index 6b65c81c84..aef789f7df 100644 --- a/code/modules/mob/mob_movement.dm +++ b/code/modules/mob/mob_movement.dm @@ -1,34 +1,10 @@ -/mob/CanPass(atom/movable/mover, turf/target, height=0, air_group=0) - if(air_group || (height==0)) return 1 - - if(ismob(mover)) - var/mob/moving_mob = mover - if ((other_mobs && moving_mob.other_mobs)) - return 1 - return (!mover.density || !density || lying) - else - return (!mover.density || !density || lying) - return - /mob/proc/setMoveCooldown(var/timeout) - if(client) - client.move_delay = max(world.time + timeout, client.move_delay) - -/client/North() - ..() - - -/client/South() - ..() - - -/client/West() - ..() - - -/client/East() - ..() + move_delay = max(world.time + timeout, move_delay) +/mob/proc/check_move_cooldown() + if(world.time < src.move_delay) + return FALSE // Need to wait more. + return TRUE /client/proc/client_dir(input, direction=-1) return turn(input, direction*dir2angle(dir)) @@ -122,60 +98,6 @@ */ return -//This proc should never be overridden elsewhere at /atom/movable to keep directions sane. -/atom/movable/Move(newloc, direct) - if (direct & (direct - 1)) - if (direct & 1) - if (direct & 4) - if (step(src, NORTH)) - step(src, EAST) - else - if (step(src, EAST)) - step(src, NORTH) - else - if (direct & 8) - if (step(src, NORTH)) - step(src, WEST) - else - if (step(src, WEST)) - step(src, NORTH) - else - if (direct & 2) - if (direct & 4) - if (step(src, SOUTH)) - step(src, EAST) - else - if (step(src, EAST)) - step(src, SOUTH) - else - if (direct & 8) - if (step(src, SOUTH)) - step(src, WEST) - else - if (step(src, WEST)) - step(src, SOUTH) - else - var/atom/A = src.loc - - var/olddir = dir //we can't override this without sacrificing the rest of movable/New() - . = ..() - if(direct != olddir) - dir = olddir - set_dir(direct) - - src.move_speed = world.time - src.l_move_time - src.l_move_time = world.time - src.m_flag = 1 - if ((A != src.loc && A && A.z == src.z)) - src.last_move = get_dir(A, src.loc) - if(.) - Moved(A, direct) - return - -// Called on a successful Move(). -/atom/movable/proc/Moved(atom/oldloc) - return - /client/proc/Move_object(direct) if(mob && mob.control_object) if(mob.control_object.density) @@ -199,7 +121,8 @@ if(moving) return 0 - if(world.time < move_delay) return + if(!mob.check_move_cooldown()) + return if(locate(/obj/effect/stop/, mob.loc)) for(var/obj/effect/stop/S in mob.loc) @@ -271,21 +194,21 @@ src << "You're pinned to a wall by [mob.pinned[1]]!" return 0 - move_delay = world.time//set move delay + mob.move_delay = world.time//set move delay switch(mob.m_intent) if("run") if(mob.drowsyness > 0) - move_delay += 6 - move_delay += config.run_speed + mob.move_delay += 6 + mob.move_delay += config.run_speed if("walk") - move_delay += config.walk_speed - move_delay += mob.movement_delay() + mob.move_delay += config.walk_speed + mob.move_delay += mob.movement_delay() if(istype(mob.buckled))// VOREStation Removal - , /obj/vehicle)) //manually set move_delay for vehicles so we don't inherit any mob movement penalties //specific vehicle move delays are set in code\modules\vehicles\vehicle.dm - move_delay = world.time + mob.move_delay = world.time //drunk driving if(mob.confused && prob(20)) //vehicles tend to keep moving in the same direction direct = turn(direct, pick(90, -90)) @@ -314,14 +237,14 @@ if(prob(50)) direct = turn(direct, pick(90, -90)) if("walk") if(prob(25)) direct = turn(direct, pick(90, -90)) - move_delay += 2 + mob.move_delay += 2 return mob.buckled.relaymove(mob,direct) //We are now going to move moving = 1 //Something with pulling things if(locate(/obj/item/weapon/grab, mob)) - move_delay = max(move_delay, world.time + 7) + mob.move_delay = max(mob.move_delay, world.time + 7) var/list/L = mob.ret_grab() if(istype(L, /list)) if(L.len == 2) @@ -572,4 +495,4 @@ /client/verb/moveleft() set name = ".moveleft" set instant = 1 - Move(get_step(mob, WEST), WEST) \ No newline at end of file + Move(get_step(mob, WEST), WEST) diff --git a/code/modules/mob/mob_planes.dm b/code/modules/mob/mob_planes.dm index e1cb3a16c3..2ba47421a4 100644 --- a/code/modules/mob/mob_planes.dm +++ b/code/modules/mob/mob_planes.dm @@ -44,7 +44,7 @@ /datum/plane_holder/Destroy() my_mob = null - QDEL_NULL_LIST(plane_masters) //Goodbye my children, be free + QDEL_LIST_NULL(plane_masters) //Goodbye my children, be free return ..() /datum/plane_holder/proc/set_vis(var/which = null, var/state = FALSE) diff --git a/code/modules/mob/new_player/login.dm b/code/modules/mob/new_player/login.dm index af0ae4260a..9f10461906 100644 --- a/code/modules/mob/new_player/login.dm +++ b/code/modules/mob/new_player/login.dm @@ -7,7 +7,7 @@ var/obj/effect/lobby_image = new /obj/effect/lobby_image desc = "How are you reading this?" screen_loc = "1,1" -/obj/effect/lobby_image/initialize() +/obj/effect/lobby_image/Initialize() icon = using_map.lobby_icon var/known_icon_states = icon_states(icon) for(var/lobby_screen in using_map.lobby_screens) diff --git a/code/modules/mob/new_player/new_player.dm b/code/modules/mob/new_player/new_player.dm index ea27828385..6d3b768645 100644 --- a/code/modules/mob/new_player/new_player.dm +++ b/code/modules/mob/new_player/new_player.dm @@ -121,7 +121,7 @@ var/mob/living/carbon/human/dummy/mannequin = new() client.prefs.dress_preview_mob(mannequin) var/mob/observer/dead/observer = new(mannequin) - observer.forceMove(null) //Let's not stay in our doomed mannequin + observer.moveToNullspace() //Let's not stay in our doomed mannequin qdel(mannequin) spawning = 1 @@ -169,6 +169,13 @@ ViewManifest() if(href_list["SelectedJob"]) + + //Prevents people rejoining as same character. + for (var/mob/living/carbon/human/C in mob_list) + var/char_name = client.prefs.real_name + if(char_name == C.real_name) + usr << "There is a character that already exists with the same name - [C.real_name], please join with a different one, or use Quit the Round with the previous character." //VOREStation Edit + return if(!config.enter_allowed) usr << "There is an administrative lock on entering the game!" diff --git a/code/modules/mob/new_player/preferences_setup.dm b/code/modules/mob/new_player/preferences_setup.dm index 15e16d912b..8260a67a9c 100644 --- a/code/modules/mob/new_player/preferences_setup.dm +++ b/code/modules/mob/new_player/preferences_setup.dm @@ -251,6 +251,7 @@ var/mob/living/carbon/human/dummy/mannequin/mannequin = get_mannequin(client_ckey) mannequin.delete_inventory(TRUE) dress_preview_mob(mannequin) + COMPILE_OVERLAYS(mannequin) preview_icon = icon('icons/effects/128x48.dmi', bgstate) preview_icon.Scale(48+32, 16+32) diff --git a/code/modules/mob/new_player/preferences_setup_vr.dm b/code/modules/mob/new_player/preferences_setup_vr.dm index a41cf77092..a690c27170 100644 --- a/code/modules/mob/new_player/preferences_setup_vr.dm +++ b/code/modules/mob/new_player/preferences_setup_vr.dm @@ -2,6 +2,7 @@ var/mob/living/carbon/human/dummy/mannequin/mannequin = get_mannequin(client_ckey) mannequin.delete_inventory(TRUE) dress_preview_mob(mannequin) + COMPILE_OVERLAYS(mannequin) preview_icon = icon('icons/effects/128x72_vr.dmi', bgstate) preview_icon.Scale(128, 72) diff --git a/code/modules/mob/new_player/sprite_accessories.dm b/code/modules/mob/new_player/sprite_accessories.dm index 3a0499b7b2..73ce4ca04b 100644 --- a/code/modules/mob/new_player/sprite_accessories.dm +++ b/code/modules/mob/new_player/sprite_accessories.dm @@ -49,6 +49,22 @@ var/icon_add = 'icons/mob/human_face.dmi' var/flags + eighties + name = "80's" + icon_state = "hair_80s" + + afro + name = "Afro" + icon_state = "hair_afro" + + afro2 + name = "Afro 2" + icon_state = "hair_afro2" + + afro_large + name = "Big Afro" + icon_state = "hair_bigafro" + bald name = "Bald" icon_state = "bald" @@ -56,24 +72,165 @@ flags = HAIR_VERY_SHORT species_allowed = list(SPECIES_HUMAN,SPECIES_UNATHI,SPECIES_PROMETHEAN,SPECIES_HUMAN_VATBORN,SPECIES_VOX) - short - name = "Short Hair" // try to capatilize the names please~ - icon_state = "hair_a" // you do not need to define _s or _l sub-states, game automatically does this for you + baldfade + name = "Balding Fade" + icon_state = "hair_baldfade" + gender = MALE flags = HAIR_VERY_SHORT - short2 - name = "Short Hair 2" - icon_state = "hair_shorthair3" + balding + name = "Balding Hair" + icon_state = "hair_e" + gender = MALE flags = HAIR_VERY_SHORT - short3 - name = "Short Hair 3" - icon_state = "hair_shorthair4" + bedhead + name = "Bedhead" + icon_state = "hair_bedhead" + + bedhead2 + name = "Bedhead 2" + icon_state = "hair_bedheadv2" + + bedhead3 + name = "Bedhead 3" + icon_state = "hair_bedheadv3" + flags = HAIR_TIEABLE + + bedheadlong + name = "Bedhead Long" + icon_state = "hair_long_bedhead" + flags = HAIR_TIEABLE + + beehive + name = "Beehive" + icon_state = "hair_beehive" + flags = HAIR_TIEABLE + + beehive2 + name = "Beehive 2" + icon_state = "hair_beehive2" + flags = HAIR_TIEABLE + + belenko + name = "Belenko" + icon_state = "hair_belenko" + flags = HAIR_TIEABLE + + belenkotied + name = "Belenko Tied" + icon_state = "hair_belenkotied" + flags = HAIR_TIEABLE + + bob + name = "Bob" + icon_state = "hair_bobcut" + species_allowed = list(SPECIES_HUMAN,SPECIES_PROMETHEAN,SPECIES_HUMAN_VATBORN,SPECIES_UNATHI) + flags = HAIR_TIEABLE + + bobcutalt + name = "Bob Chin Length" + icon_state = "hair_bobcutalt" + flags = HAIR_TIEABLE + + bobcurl + name = "Bobcurl" + icon_state = "hair_bobcurl" + species_allowed = list(SPECIES_HUMAN,SPECIES_PROMETHEAN,SPECIES_HUMAN_VATBORN,SPECIES_UNATHI) + flags = HAIR_TIEABLE + + bowl + name = "Bowl" + icon_state = "hair_bowlcut" + + bowlcut2 + name = "Bowl 2" + icon_state = "hair_bowlcut2" + + grandebraid + name = "Braid Grande" + icon_state = "hair_grande" + flags = HAIR_TIEABLE + + braid2 + name = "Braid Long" + icon_state = "hair_hbraid" + flags = HAIR_TIEABLE + + mbraid + name = "Braid Medium" + icon_state = "hair_shortbraid" + flags = HAIR_TIEABLE + + braid + name = "Braid Floorlength" + icon_state = "hair_braid" + flags = HAIR_TIEABLE + + bun + name = "Bun" + icon_state = "hair_bun" + + bun2 + name = "Bun 2" + icon_state = "hair_bun2" + + bun3 + name = "Bun 3" + icon_state = "hair_bun3" + + bun + name = "Bun Casual" + icon_state = "hair_bun" + flags = HAIR_TIEABLE + + doublebun + name = "Bun Double" + icon_state = "hair_doublebun" + flags = HAIR_TIEABLE + + tightbun + name = "Bun Tight" + icon_state = "hair_tightbun" + gender = FEMALE + flags = HAIR_VERY_SHORT | HAIR_TIEABLE + + buzz + name = "Buzzcut" + icon_state = "hair_buzzcut" + flags = HAIR_VERY_SHORT + species_allowed = list(SPECIES_HUMAN,SPECIES_PROMETHEAN,SPECIES_HUMAN_VATBORN,SPECIES_UNATHI) + + crono + name = "Chrono" + icon_state = "hair_toriyama" + + cia + name = "CIA" + icon_state = "hair_cia" + + coffeehouse + name = "Coffee House Cut" + icon_state = "hair_coffeehouse" + gender = MALE flags = HAIR_VERY_SHORT - twintail - name = "Twintail" - icon_state = "hair_twintail" + combover + name = "Combover" + icon_state = "hair_combover" + + country + name = "Country" + icon_state = "hair_country" + + crew + name = "Crewcut" + icon_state = "hair_crewcut" + flags = HAIR_VERY_SHORT + + curls + name = "Curls" + icon_state = "hair_curls" flags = HAIR_TIEABLE cut @@ -81,16 +238,175 @@ icon_state = "hair_c" flags = HAIR_VERY_SHORT + dave + name = "Dave" + icon_state = "hair_dave" + + devillock + name = "Devil Lock" + icon_state = "hair_devilock" + + dreadlocks + name = "Dreadlocks" + icon_state = "hair_dreads" + + mahdrills + name = "Drillruru" + icon_state = "hair_drillruru" + + emo + name = "Emo" + icon_state = "hair_emo" + + emo2 + name = "Emo Alt" + icon_state = "hair_emo2" + + fringeemo + name = "Emo Fringe" + icon_state = "hair_emofringe" + flags = HAIR_TIEABLE + + halfshaved + name = "Emo Half-Shaved" + icon_state = "hair_halfshaved" + + longemo + name = "Emo Long" + icon_state = "hair_emolong" + flags = HAIR_TIEABLE + + highfade + name = "Fade High" + icon_state = "hair_highfade" + gender = MALE + flags = HAIR_VERY_SHORT + + medfade + name = "Fade Medium" + icon_state = "hair_medfade" + flags = HAIR_VERY_SHORT + + lowfade + name = "Fade Low" + icon_state = "hair_lowfade" + gender = MALE + flags = HAIR_VERY_SHORT + + partfade + name = "Fade Parted" + icon_state = "hair_shavedpart" + gender = MALE + flags = HAIR_VERY_SHORT + + familyman + name = "Family Man" + icon_state = "hair_thefamilyman" + + father + name = "Father" + icon_state = "hair_father" + + feather + name = "Feather" + icon_state = "hair_feather" + flags = HAIR_TIEABLE + flair name = "Flaired Hair" icon_state = "hair_flair" flags = HAIR_TIEABLE - long - name = "Shoulder-length Hair" - icon_state = "hair_b" + sargeant + name = "Flat Top" + icon_state = "hair_sargeant" + flags = HAIR_VERY_SHORT + + flowhair + name = "Flow Hair" + icon_state = "hair_f" + + longfringe + name = "Fringe Long" + icon_state = "hair_longfringe" flags = HAIR_TIEABLE + longestalt + name = "Fringe Longer" + icon_state = "hair_vlongfringe" + flags = HAIR_TIEABLE + + fringetail + name = "Fringetail" + icon_state = "hair_fringetail" + flags = HAIR_TIEABLE|HAIR_VERY_SHORT + + gelled + name = "Gelled Back" + icon_state = "hair_gelled" + + gentle + name = "Gentle" + icon_state = "hair_gentle" + flags = HAIR_TIEABLE + + glossy + name = "Glossy" + icon_state = "hair_glossy" + flags = HAIR_TIEABLE + + halfbang + name = "Half-banged Hair" + icon_state = "hair_halfbang" + + halfbangalt + name = "Half-banged Hair Alt" + icon_state = "hair_halfbang_alt" + + hightight + name = "High and Tight" + icon_state = "hair_hightight" + flags = HAIR_VERY_SHORT + + himecut + name = "Hime Cut" + icon_state = "hair_himecut" + flags = HAIR_TIEABLE + + shorthime + name = "Hime Cut Short" + icon_state = "hair_shorthime" + flags = HAIR_TIEABLE + + hitop + name = "Hitop" + icon_state = "hair_hitop" + + jade + name = "Jade" + icon_state = "hair_jade" + + jensen + name = "Jensen" + icon_state = "hair_jensen" + + joestar + name = "Joestar" + icon_state = "hair_joestar" + + kagami + name = "Kagami" + icon_state = "hair_kagami" + flags = HAIR_TIEABLE + + kusangi + name = "Kusanagi Hair" + icon_state = "hair_kusanagi" + + long + name = "Long Hair Shoulder-length" + icon_state = "hair_b" + flags = HAIR_TIEABLE /* longish name = "Longer Hair" @@ -112,23 +428,97 @@ icon_state = "hair_longest" flags = HAIR_TIEABLE - longfringe - name = "Long Fringe" - icon_state = "hair_longfringe" + manbun + name = "Manbun" + icon_state = "hair_manbun" flags = HAIR_TIEABLE - longestalt - name = "Longer Fringe" - icon_state = "hair_vlongfringe" + modern + name = "Modern" + icon_state = "hair_modern" + + mohawk + name = "Mohawk" + icon_state = "hair_d" + species_allowed = list(SPECIES_HUMAN,SPECIES_PROMETHEAN,SPECIES_HUMAN_VATBORN,SPECIES_UNATHI) + + regulationmohawk + name = "Mohawk Regulation" + icon_state = "hair_shavedmohawk" + flags = HAIR_VERY_SHORT + + reversemohawk + name = "Mohawk Reverse" + icon_state = "hair_reversemohawk" + + mohawkunshaven + name = "Mohawk Unshaven" + icon_state = "hair_unshaven_mohawk" + + mulder + name = "Mulder" + icon_state = "hair_mulder" + + newyou + name = "New You" + icon_state = "hair_newyou" flags = HAIR_TIEABLE - halfbang - name = "Half-banged Hair" - icon_state = "hair_halfbang" + nia + name = "Nia" + icon_state = "hair_nia" - halfbangalt - name = "Half-banged Hair Alt" - icon_state = "hair_halfbang_alt" + nitori + name = "Nitori" + icon_state = "hair_nitori" + flags = HAIR_TIEABLE + + odango + name = "Odango" + icon_state = "hair_odango" + flags = HAIR_TIEABLE + + ombre + name = "Ombre" + icon_state = "hair_ombre" + flags = HAIR_TIEABLE + + oxton + name = "Oxton" + icon_state = "hair_oxton" + + longovereye + name = "Overeye Long" + icon_state = "hair_longovereye" + flags = HAIR_TIEABLE + + shortovereye + name = "Overeye Short" + icon_state = "hair_shortovereye" + + veryshortovereyealternate + name = "Overeye Very Short, Alternate" + icon_state = "hair_veryshortovereyealternate" + + veryshortovereye + name = "Overeye Very Short" + icon_state = "hair_veryshortovereye" + + parted + name = "Parted" + icon_state = "hair_parted" + + partedalt + name = "Parted Alt" + icon_state = "hair_partedalt" + + pompadour + name = "Pompadour" + icon_state = "hair_pompadour" + + dandypomp + name = "Pompadour Dandy" + icon_state = "hair_dandypompadour" ponytail1 name = "Ponytail 1" @@ -160,10 +550,101 @@ icon_state = "hair_ponytail6" flags = HAIR_TIEABLE|HAIR_VERY_SHORT - fringetail - name = "Fringetail" - icon_state = "hair_fringetail" - flags = HAIR_TIEABLE|HAIR_VERY_SHORT + sharpponytail + name = "Ponytail Sharp" + icon_state = "hair_sharpponytail" + flags = HAIR_TIEABLE + + spikyponytail + name = "Ponytail Spiky" + icon_state = "hair_spikyponytail" + flags = HAIR_TIEABLE + + poofy + name = "Poofy" + icon_state = "hair_poofy" + flags = HAIR_TIEABLE + + poofy2 + name = "Poofy 2" + icon_state = "hair_poofy2" + flags = HAIR_TIEABLE + + quiff + name = "Quiff" + icon_state = "hair_quiff" + + nofade + name = "Regulation Cut" + icon_state = "hair_nofade" + gender = MALE + flags = HAIR_VERY_SHORT + + ronin + name = "Ronin" + icon_state = "hair_ronin" + flags = HAIR_TIEABLE + + rosa + name = "Rosa" + icon_state = "hair_rosa" + + rows + name = "Rows" + icon_state = "hair_rows1" + flags = HAIR_VERY_SHORT + + rows2 + name = "Rows 2" + icon_state = "hair_rows2" + flags = HAIR_TIEABLE + + rowbun + name = "Row Bun" + icon_state = "hair_rowbun" + flags = HAIR_TIEABLE + + rowdualbraid + name = "Row Dual Braid" + icon_state = "hair_rowdualtail" + flags = HAIR_TIEABLE + + rowbraid + name = "Row Braid" + icon_state = "hair_rowbraid" + flags = HAIR_TIEABLE + + scully + name = "Scully" + icon_state = "hair_scully" + + shavehair + name = "Shaved Hair" + icon_state = "hair_shaved" + flags = HAIR_VERY_SHORT + + shortbangs + name = "Short Bangs" + icon_state = "hair_shortbangs" + + short + name = "Short Hair" // try to capatilize the names please~ + icon_state = "hair_a" // you do not need to define _s or _l sub-states, game automatically does this for you + flags = HAIR_VERY_SHORT + + short2 + name = "Short Hair 2" + icon_state = "hair_shorthair3" + flags = HAIR_VERY_SHORT + + short3 + name = "Short Hair 3" + icon_state = "hair_shorthair4" + flags = HAIR_VERY_SHORT + + shy + name = "Shy" + icon_state = "hair_shy" sideponytail name = "Side Ponytail" @@ -176,438 +657,49 @@ flags = HAIR_TIEABLE sideponytail2 - name = "One Shoulder" + name = "Shoulder One" icon_state = "hair_oneshoulder" flags = HAIR_TIEABLE sideponytail3 - name = "Tress Shoulder" + name = "Shoulder Tress" icon_state = "hair_tressshoulder" flags = HAIR_TIEABLE - spikyponytail - name = "Spiky Ponytail" - icon_state = "hair_spikyponytail" - flags = HAIR_TIEABLE - - zieglertail - name = "Zieglertail" - icon_state = "hair_ziegler" - flags = HAIR_TIEABLE - - wisp - name = "Wisp" - icon_state = "hair_wisp" - flags = HAIR_TIEABLE - - parted - name = "Parted" - icon_state = "hair_parted" - - pompadour - name = "Pompadour" - icon_state = "hair_pompadour" - - sleeze - name = "Sleeze" - icon_state = "hair_sleeze" - flags = HAIR_VERY_SHORT - - quiff - name = "Quiff" - icon_state = "hair_quiff" - - bedhead - name = "Bedhead" - icon_state = "hair_bedhead" - - bedhead2 - name = "Bedhead 2" - icon_state = "hair_bedheadv2" - - bedhead3 - name = "Bedhead 3" - icon_state = "hair_bedheadv3" - flags = HAIR_TIEABLE - - bedheadlong - name = "Bedhead Long" - icon_state = "hair_long_bedhead" - flags = HAIR_TIEABLE - - beehive - name = "Beehive" - icon_state = "hair_beehive" - flags = HAIR_TIEABLE - - beehive2 - name = "Beehive 2" - icon_state = "hair_beehive2" - flags = HAIR_TIEABLE - - bobcurl - name = "Bobcurl" - icon_state = "hair_bobcurl" - species_allowed = list(SPECIES_HUMAN,SPECIES_PROMETHEAN,SPECIES_HUMAN_VATBORN,SPECIES_UNATHI) - flags = HAIR_TIEABLE - - bob - name = "Bob" - icon_state = "hair_bobcut" - species_allowed = list(SPECIES_HUMAN,SPECIES_PROMETHEAN,SPECIES_HUMAN_VATBORN,SPECIES_UNATHI) - flags = HAIR_TIEABLE - - bobcutalt - name = "Chin Length Bob" - icon_state = "hair_bobcutalt" - flags = HAIR_TIEABLE - - bun - name = "Bun" - icon_state = "hair_bun" - - bun2 - name = "Bun 2" - icon_state = "hair_bun2" - - bun3 - name = "Bun 3" - icon_state = "hair_bun3" - - bowl - name = "Bowl" - icon_state = "hair_bowlcut" - - buzz - name = "Buzzcut" - icon_state = "hair_buzzcut" - flags = HAIR_VERY_SHORT - species_allowed = list(SPECIES_HUMAN,SPECIES_PROMETHEAN,SPECIES_HUMAN_VATBORN,SPECIES_UNATHI) - - shavehair - name = "Shaved Hair" - icon_state = "hair_shaved" - flags = HAIR_VERY_SHORT - - crew - name = "Crewcut" - icon_state = "hair_crewcut" - flags = HAIR_VERY_SHORT - - combover - name = "Combover" - icon_state = "hair_combover" - - father - name = "Father" - icon_state = "hair_father" - - reversemohawk - name = "Reverse Mohawk" - icon_state = "hair_reversemohawk" - - devillock - name = "Devil Lock" - icon_state = "hair_devilock" - - dreadlocks - name = "Dreadlocks" - icon_state = "hair_dreads" - - curls - name = "Curls" - icon_state = "hair_curls" - flags = HAIR_TIEABLE - - afro - name = "Afro" - icon_state = "hair_afro" - - afro2 - name = "Afro 2" - icon_state = "hair_afro2" - - afro_large - name = "Big Afro" - icon_state = "hair_bigafro" - - rows - name = "Rows" - icon_state = "hair_rows1" - flags = HAIR_VERY_SHORT - - rows2 - name = "Rows 2" - icon_state = "hair_rows2" - flags = HAIR_TIEABLE - - sargeant - name = "Flat Top" - icon_state = "hair_sargeant" - flags = HAIR_VERY_SHORT - - emo - name = "Emo" - icon_state = "hair_emo" - - emo2 - name = "Emo Alt" - icon_state = "hair_emo2" - - longemo - name = "Long Emo" - icon_state = "hair_emolong" - flags = HAIR_TIEABLE - - fringeemo - name = "Emo Fringe" - icon_state = "hair_emofringe" - flags = HAIR_TIEABLE - - veryshortovereyealternate - name = "Overeye Very Short, Alternate" - icon_state = "hair_veryshortovereyealternate" - - veryshortovereye - name = "Overeye Very Short" - icon_state = "hair_veryshortovereye" - - shortovereye - name = "Overeye Short" - icon_state = "hair_shortovereye" - - longovereye - name = "Overeye Long" - icon_state = "hair_longovereye" - flags = HAIR_TIEABLE - - flowhair - name = "Flow Hair" - icon_state = "hair_f" - - feather - name = "Feather" - icon_state = "hair_feather" - flags = HAIR_TIEABLE - - hitop - name = "Hitop" - icon_state = "hair_hitop" - - mohawk - name = "Mohawk" - icon_state = "hair_d" - species_allowed = list(SPECIES_HUMAN,SPECIES_PROMETHEAN,SPECIES_HUMAN_VATBORN,SPECIES_UNATHI) - - jensen - name = "Adam Jensen Hair" - icon_state = "hair_jensen" - - gelled - name = "Gelled Back" - icon_state = "hair_gelled" - - gentle - name = "Gentle" - icon_state = "hair_gentle" - flags = HAIR_TIEABLE - - spiky - name = "Spiky" - icon_state = "hair_spikey" - species_allowed = list(SPECIES_HUMAN,SPECIES_PROMETHEAN,SPECIES_HUMAN_VATBORN,SPECIES_UNATHI) - - kusangi - name = "Kusanagi Hair" - icon_state = "hair_kusanagi" - - kagami - name = "Pigtails" - icon_state = "hair_kagami" - flags = HAIR_TIEABLE - - himecut - name = "Hime Cut" - icon_state = "hair_himecut" - flags = HAIR_TIEABLE - - shorthime - name = "Short Hime Cut" - icon_state = "hair_shorthime" - flags = HAIR_TIEABLE - - grandebraid - name = "Grande Braid" - icon_state = "hair_grande" - flags = HAIR_TIEABLE - - mbraid - name = "Medium Braid" - icon_state = "hair_shortbraid" - flags = HAIR_TIEABLE - - braid2 - name = "Long Braid" - icon_state = "hair_hbraid" - flags = HAIR_TIEABLE - - braid - name = "Floorlength Braid" - icon_state = "hair_braid" - flags = HAIR_TIEABLE - - odango - name = "Odango" - icon_state = "hair_odango" - flags = HAIR_TIEABLE - - ombre - name = "Ombre" - icon_state = "hair_ombre" - flags = HAIR_TIEABLE - - updo - name = "Updo" - icon_state = "hair_updo" - flags = HAIR_TIEABLE - skinhead name = "Skinhead" icon_state = "hair_skinhead" flags = HAIR_VERY_SHORT - balding - name = "Balding Hair" - icon_state = "hair_e" - gender = MALE + sleeze + name = "Sleeze" + icon_state = "hair_sleeze" flags = HAIR_VERY_SHORT - familyman - name = "The Family Man" - icon_state = "hair_thefamilyman" + spiky + name = "Spiky" + icon_state = "hair_spikey" + species_allowed = list(SPECIES_HUMAN,SPECIES_PROMETHEAN,SPECIES_HUMAN_VATBORN,SPECIES_UNATHI) - mahdrills - name = "Drillruru" - icon_state = "hair_drillruru" - - fringetail - name = "Fringetail" - icon_state = "hair_fringetail" - - dandypomp - name = "Dandy Pompadour" - icon_state = "hair_dandypompadour" - - poofy - name = "Poofy" - icon_state = "hair_poofy" - flags = HAIR_TIEABLE - - poofy2 - name = "Poofy2" - icon_state = "hair_poofy2" - flags = HAIR_TIEABLE - - crono - name = "Chrono" - icon_state = "hair_toriyama" - - vegeta - name = "Vegeta" - icon_state = "hair_toriyama2" - - cia - name = "CIA" - icon_state = "hair_cia" - - mulder - name = "Mulder" - icon_state = "hair_mulder" - - scully - name = "Scully" - icon_state = "hair_scully" - - nitori - name = "Nitori" - icon_state = "hair_nitori" - flags = HAIR_TIEABLE - - joestar - name = "Joestar" - icon_state = "hair_joestar" - - volaju - name = "Volaju" - icon_state = "hair_volaju" - flags = HAIR_TIEABLE - - eighties - name = "80's" - icon_state = "hair_80s" - - nia - name = "Nia" - icon_state = "hair_nia" - - unkept - name = "Unkept" - icon_state = "hair_unkept" - - modern - name = "Modern" - icon_state = "hair_modern" - - shortbangs - name = "Short Bangs" - icon_state = "hair_shortbangs" - - halfshaved - name = "Half-Shaved Emo" - icon_state = "hair_halfshaved" - - bun - name = "Casual Bun" - icon_state = "hair_bun" - flags = HAIR_TIEABLE - - doublebun - name = "Double-Bun" - icon_state = "hair_doublebun" - flags = HAIR_TIEABLE - - oxton - name = "Oxton" - icon_state = "hair_oxton" - - lowfade - name = "Low Fade" - icon_state = "hair_lowfade" - gender = MALE + thinning + name = "Thinning" + icon_state = "hair_thinning" flags = HAIR_VERY_SHORT - medfade - name = "Medium Fade" - icon_state = "hair_medfade" + thinningfront + name = "Thinning Front" + icon_state = "hair_thinningfront" flags = HAIR_VERY_SHORT - highfade - name = "High Fade" - icon_state = "hair_highfade" - gender = MALE + thinningback + name = "Thinning Back" + icon_state = "hair_thinningrear" flags = HAIR_VERY_SHORT - baldfade - name = "Balding Fade" - icon_state = "hair_baldfade" - gender = MALE - flags = HAIR_VERY_SHORT - - nofade - name = "Regulation Cut" - icon_state = "hair_nofade" - gender = MALE - flags = HAIR_VERY_SHORT + topknot + name = "Topknot" + icon_state = "hair_topknot" + flags = HAIR_TIEABLE trimflat name = "Trimmed Flat Top" @@ -621,17 +713,10 @@ gender = MALE flags = HAIR_VERY_SHORT - tightbun - name = "Tight Bun" - icon_state = "hair_tightbun" - gender = FEMALE - flags = HAIR_VERY_SHORT | HAIR_TIEABLE - - coffeehouse - name = "Coffee House Cut" - icon_state = "hair_coffeehouse" - gender = MALE - flags = HAIR_VERY_SHORT + twintail + name = "Twintail" + icon_state = "hair_twintail" + flags = HAIR_TIEABLE undercut1 name = "Undercut" @@ -651,113 +736,32 @@ gender = MALE flags = HAIR_VERY_SHORT - partfade - name = "Parted Fade" - icon_state = "hair_shavedpart" - gender = MALE - flags = HAIR_VERY_SHORT + unkept + name = "Unkept" + icon_state = "hair_unkept" - hightight - name = "High and Tight" - icon_state = "hair_hightight" - flags = HAIR_VERY_SHORT - - rowbun - name = "Row Bun" - icon_state = "hair_rowbun" + updo + name = "Updo" + icon_state = "hair_updo" flags = HAIR_TIEABLE - rowdualbraid - name = "Row Dual Braid" - icon_state = "hair_rowdualtail" + vegeta + name = "Vegeta" + icon_state = "hair_toriyama2" + + volaju + name = "Volaju" + icon_state = "hair_volaju" flags = HAIR_TIEABLE - rowbraid - name = "Row Braid" - icon_state = "hair_rowbraid" + wisp + name = "Wisp" + icon_state = "hair_wisp" flags = HAIR_TIEABLE - regulationmohawk - name = "Regulation Mohawk" - icon_state = "hair_shavedmohawk" - flags = HAIR_VERY_SHORT - - topknot - name = "Topknot" - icon_state = "hair_topknot" - flags = HAIR_TIEABLE - - ronin - name = "Ronin" - icon_state = "hair_ronin" - flags = HAIR_TIEABLE - - bowlcut2 - name = "Bowl2" - icon_state = "hair_bowlcut2" - - thinning - name = "Thinning" - icon_state = "hair_thinning" - flags = HAIR_VERY_SHORT - - thinningfront - name = "Thinning Front" - icon_state = "hair_thinningfront" - flags = HAIR_VERY_SHORT - - thinningback - name = "Thinning Back" - icon_state = "hair_thinningrear" - flags = HAIR_VERY_SHORT - - manbun - name = "Manbun" - icon_state = "hair_manbun" - flags = HAIR_TIEABLE - - shy - name = "Shy" - icon_state = "hair_shy" - - jade - name = "Jade" - icon_state = "hair_jade" - - country - name = "Country" - icon_state = "hair_country" - - rosa - name = "Rosa" - icon_state = "hair_rosa" - - dave - name = "Dave" - icon_state = "hair_dave" - - mohawkunshaven - name = "Unshaven Mohawk" - icon_state = "hair_unshaven_mohawk" - - belenko - name = "Belenko" - icon_state = "hair_belenko" - flags = HAIR_TIEABLE - - belenkotied - name = "Belenko Tied" - icon_state = "hair_belenkotied" - flags = HAIR_TIEABLE - - glossy - name = "Glossy" - icon_state = "hair_glossy" - flags = HAIR_TIEABLE - - sharpponytail - name = "Sharp Ponytail" - icon_state = "hair_sharpponytail" + zieglertail + name = "Zieglertail" + icon_state = "hair_ziegler" flags = HAIR_TIEABLE /* diff --git a/code/modules/mob/new_player/sprite_accessories_vr.dm b/code/modules/mob/new_player/sprite_accessories_vr.dm index 262275fdea..3335e15db5 100644 --- a/code/modules/mob/new_player/sprite_accessories_vr.dm +++ b/code/modules/mob/new_player/sprite_accessories_vr.dm @@ -209,6 +209,31 @@ icon_state = "hair_messy" species_allowed = list(SPECIES_TAJ, SPECIES_XENOCHIMERA, SPECIES_PROTEAN) + taj_ears_curls + name = "Tajaran Curly" + icon_state = "hair_curly" + species_allowed = list(SPECIES_TAJ, SPECIES_XENOCHIMERA, SPECIES_PROTEAN) + + taj_ears_wife + name = "Tajaran Housewife" + icon_state = "hair_wife" + species_allowed = list(SPECIES_TAJ, SPECIES_XENOCHIMERA, SPECIES_PROTEAN) + + taj_ears_victory + name = "Tajaran Victory Curls" + icon_state = "hair_victory" + species_allowed = list(SPECIES_TAJ, SPECIES_XENOCHIMERA, SPECIES_PROTEAN) + + taj_ears_bob + name = "Tajaran Bob" + icon_state = "hair_tbob" + species_allowed = list(SPECIES_TAJ, SPECIES_XENOCHIMERA, SPECIES_PROTEAN) + + taj_ears_fingercurl + name = "Tajaran Finger Curls" + icon_state = "hair_fingerwave" + species_allowed = list(SPECIES_TAJ, SPECIES_XENOCHIMERA, SPECIES_PROTEAN) + teshari_fluffymohawk name = "Teshari Fluffy Mohawk" icon = 'icons/mob/human_face_vr.dmi' @@ -1012,6 +1037,32 @@ color_blend_mode = ICON_MULTIPLY body_parts = list(BP_HEAD) + tentacle_head + name = "Squid Head" + icon_state = "tentaclehead" + color_blend_mode = ICON_MULTIPLY + body_parts = list(BP_HEAD) + + tentacle_mouth + name = "Tentacle Mouth" + icon_state = "tentaclemouth" + color_blend_mode = ICON_MULTIPLY + body_parts = list(BP_HEAD) + + /* + rosette + name = "Rosettes" + icon_state = "rosette" + color_blend_mode = ICON_MULTIPLY + body_parts = list(BP_L_FOOT,BP_R_FOOT,BP_L_LEG,BP_R_LEG,BP_L_ARM,BP_R_ARM,BP_L_HAND,BP_R_HAND,BP_GROIN,BP_TORSO) + + rosette_color + name = "Rosettes (Colorable)" + icon_state = "rosette_color" + color_blend_mode = ICON_MULTIPLY + body_parts = list(BP_L_FOOT,BP_R_FOOT,BP_L_LEG,BP_R_LEG,BP_L_ARM,BP_R_ARM,BP_L_HAND,BP_R_HAND,BP_GROIN,BP_TORSO) + */ + heterochromia name = "Heterochromia" icon_state = "heterochromia" diff --git a/code/modules/mob/say.dm b/code/modules/mob/say.dm index 0b20c6cb7f..29263adeaf 100644 --- a/code/modules/mob/say.dm +++ b/code/modules/mob/say.dm @@ -139,6 +139,7 @@ //returns the language object only if the code corresponds to a language that src can speak, otherwise null. /mob/proc/parse_language(var/message) var/prefix = copytext(message,1,2) + // This is for audible emotes if(length(message) >= 1 && prefix == "!") return all_languages["Noise"] @@ -147,5 +148,6 @@ var/datum/language/L = language_keys[language_prefix] if (can_speak(L)) return L - + else + return all_languages[LANGUAGE_GIBBERISH] return null diff --git a/code/modules/mob/say_vr.dm b/code/modules/mob/say_vr.dm index fbf9a9febb..bd5b516f9d 100644 --- a/code/modules/mob/say_vr.dm +++ b/code/modules/mob/say_vr.dm @@ -64,14 +64,14 @@ #define MAX_HUGE_MESSAGE_LEN 8192 #define POST_DELIMITER_STR "\<\>" -/proc/sanitize_or_reflect(message,user) +/proc/sanitize_or_reflect(message,user) //Way too long to send if(length(message) > MAX_HUGE_MESSAGE_LEN) fail_to_chat(user) return message = sanitize(message, max_length = MAX_HUGE_MESSAGE_LEN) - + //Came back still too long to send if(length(message) > MAX_MESSAGE_LEN) fail_to_chat(user,message) @@ -83,9 +83,9 @@ if(!message) to_chat(user,"Your message was NOT SENT, either because it was FAR too long, or sanitized to nothing at all.") return - + var/length = length(message) - var/posts = Ceiling(length/MAX_MESSAGE_LEN) + var/posts = CEILING((length/MAX_MESSAGE_LEN), 1) to_chat(user,message) to_chat(user,"^ This message was NOT SENT ^ -- It was [length] characters, and the limit is [MAX_MESSAGE_LEN]. It would fit in [posts] separate messages.") #undef MAX_HUGE_MESSAGE_LEN diff --git a/code/modules/mob/transform_procs.dm b/code/modules/mob/transform_procs.dm index dcd95c20de..945ffd53be 100644 --- a/code/modules/mob/transform_procs.dm +++ b/code/modules/mob/transform_procs.dm @@ -91,6 +91,7 @@ add_language(LANGUAGE_SCHECHI, 1) add_language(LANGUAGE_SIGN, 1) add_language(LANGUAGE_TERMINUS, 1) + add_language(LANGUAGE_ZADDAT = 0) // Lorefolks say it may be so. if(O.client && O.client.prefs) @@ -227,7 +228,7 @@ for(var/t in organs) //this really should not be necessary qdel(t) - var/mob/living/simple_animal/corgi/new_corgi = new /mob/living/simple_animal/corgi (loc) + var/mob/living/simple_mob/animal/passive/dog/corgi/new_corgi = new /mob/living/simple_mob/animal/passive/dog/corgi (loc) new_corgi.a_intent = I_HURT new_corgi.key = key @@ -237,7 +238,7 @@ /mob/living/carbon/human/Animalize() - var/list/mobtypes = typesof(/mob/living/simple_animal) + var/list/mobtypes = typesof(/mob/living/simple_mob) var/mobpath = input("Which type of mob should [src] turn into?", "Choose a type") in mobtypes if(!safe_animal(mobpath)) @@ -271,7 +272,7 @@ /mob/proc/Animalize() - var/list/mobtypes = typesof(/mob/living/simple_animal) + var/list/mobtypes = typesof(/mob/living/simple_mob) var/mobpath = input("Which type of mob should [src] turn into?", "Choose a type") in mobtypes if(!safe_animal(mobpath)) @@ -297,39 +298,29 @@ if(!MP) return 0 //Sanity, this should never happen. - if(ispath(MP, /mob/living/simple_animal/space_worm)) +/* + if(ispath(MP, /mob/living/simple_mob/space_worm)) return 0 //Unfinished. Very buggy, they seem to just spawn additional space worms everywhere and eating your own tail results in new worms spawning. - - if(ispath(MP, /mob/living/simple_animal/construct/behemoth)) - return 0 //I think this may have been an unfinished WiP or something. These constructs should really have their own class simple_animal/construct/subtype - - if(ispath(MP, /mob/living/simple_animal/construct/armoured)) - return 0 //Verbs do not appear for players. These constructs should really have their own class simple_animal/construct/subtype - - if(ispath(MP, /mob/living/simple_animal/construct/wraith)) - return 0 //Verbs do not appear for players. These constructs should really have their own class simple_animal/construct/subtype - - if(ispath(MP, /mob/living/simple_animal/construct/builder)) - return 0 //Verbs do not appear for players. These constructs should really have their own class simple_animal/construct/subtype +*/ //Good mobs! - if(ispath(MP, /mob/living/simple_animal/cat)) + if(ispath(MP, /mob/living/simple_mob/animal/passive/cat)) return 1 - if(ispath(MP, /mob/living/simple_animal/corgi)) + if(ispath(MP, /mob/living/simple_mob/animal/passive/dog)) return 1 - if(ispath(MP, /mob/living/simple_animal/crab)) + if(ispath(MP, /mob/living/simple_mob/animal/passive/crab)) return 1 - if(ispath(MP, /mob/living/simple_animal/hostile/carp)) + if(ispath(MP, /mob/living/simple_mob/animal/space/carp)) return 1 - if(ispath(MP, /mob/living/simple_animal/shade)) + if(ispath(MP, /mob/living/simple_mob/construct)) return 1 - if(ispath(MP, /mob/living/simple_animal/hostile/tomato)) + if(ispath(MP, /mob/living/simple_mob/tomato)) return 1 - if(ispath(MP, /mob/living/simple_animal/mouse)) + if(ispath(MP, /mob/living/simple_mob/animal/passive/mouse)) return 1 //It is impossible to pull up the player panel for mice (Fixed! - Nodrak) - if(ispath(MP, /mob/living/simple_animal/hostile/bear)) + if(ispath(MP, /mob/living/simple_mob/animal/space/bear)) return 1 //Bears will auto-attack mobs, even if they're player controlled (Fixed! - Nodrak) - if(ispath(MP, /mob/living/simple_animal/parrot)) + if(ispath(MP, /mob/living/simple_mob/animal/passive/bird/parrot)) return 1 //Parrots are no longer unfinished! -Nodrak //Not in here? Must be untested! diff --git a/code/modules/multiz/hoist.dm b/code/modules/multiz/hoist.dm index a1df9389ab..32e2ed9bb7 100644 --- a/code/modules/multiz/hoist.dm +++ b/code/modules/multiz/hoist.dm @@ -100,7 +100,7 @@ var/obj/effect/hoist_hook/source_hook description_info = "Click this to raise or lower the hoist, or to switch directions if it can't move any further. It can also be collapsed into a hoist kit." -/obj/structure/hoist/initialize(mapload, ndir) +/obj/structure/hoist/Initialize(mapload, ndir) . = ..() dir = ndir var/turf/newloc = get_step(src, dir) diff --git a/code/modules/multiz/ladder_assembly_vr.dm b/code/modules/multiz/ladder_assembly_vr.dm index 064d23cec3..3bb7b681fd 100644 --- a/code/modules/multiz/ladder_assembly_vr.dm +++ b/code/modules/multiz/ladder_assembly_vr.dm @@ -107,21 +107,21 @@ var/obj/structure/ladder/L = new(get_turf(below)) L.allowed_directions = UP if(below.created_name) L.name = below.created_name - L.initialize() + L.Initialize() qdel(below) if(me) var/obj/structure/ladder/L = new(get_turf(me)) L.allowed_directions = (below ? DOWN : 0) | (above ? UP : 0) if(me.created_name) L.name = me.created_name - L.initialize() + L.Initialize() qdel(me) if(above) var/obj/structure/ladder/L = new(get_turf(above)) L.allowed_directions = DOWN if(above.created_name) L.name = above.created_name - L.initialize() + L.Initialize() qdel(above) // Make them constructable in hand diff --git a/code/modules/multiz/movement.dm b/code/modules/multiz/movement.dm index 5041c43e66..28f111c72c 100644 --- a/code/modules/multiz/movement.dm +++ b/code/modules/multiz/movement.dm @@ -83,11 +83,13 @@ /mob/proc/can_overcome_gravity() return FALSE -/mob/living/carbon/human/can_overcome_gravity() - return species && species.can_overcome_gravity(src) +/mob/living/can_overcome_gravity() + return hovering -/mob/living/simple_animal/construct/can_overcome_gravity() - return 1 //They care not for standard physics. +/mob/living/carbon/human/can_overcome_gravity() + . = ..() + if(!.) + return species && species.can_overcome_gravity(src) /mob/observer/zMove(direction) var/turf/destination = (direction == UP) ? GetAbove(src) : GetBelow(src) @@ -117,36 +119,44 @@ return ..() /mob/observer/can_ztravel() - return 1 + return TRUE -/mob/living/simple_animal/construct/can_ztravel() - return 1 +/mob/living/can_ztravel() + if(incapacitated()) + return FALSE + return hovering /mob/living/carbon/human/can_ztravel() if(incapacitated()) - return 0 + return FALSE + + if(hovering) + return TRUE if(flying) //VOREStation Edit. Allows movement up/down with wings. return 1 //VOREStation Edit if(Process_Spacemove()) - return 1 + return TRUE if(Check_Shoegrip()) //scaling hull with magboots for(var/turf/simulated/T in trange(1,src)) if(T.density) - return 1 + return TRUE /mob/living/silicon/robot/can_ztravel() if(incapacitated() || is_dead()) - return 0 + return FALSE + + if(hovering) + return TRUE if(Process_Spacemove()) //Checks for active jetpack - return 1 + return TRUE for(var/turf/simulated/T in trange(1,src)) //Robots get "magboots" if(T.density) - return 1 + return TRUE // TODO - Leshana Experimental @@ -262,19 +272,15 @@ if((locate(/obj/structure/disposalpipe/up) in below) || locate(/obj/machinery/atmospherics/pipe/zpipe/up in below)) return FALSE +/mob/living/can_fall() + if(hovering) + return FALSE + return ..() + /mob/living/carbon/human/can_fall() if(..()) return species.can_fall(src) -/mob/living/simple_animal/parrot/can_fall() // Poly can fly. - return FALSE - -/mob/living/simple_animal/hostile/carp/can_fall() // So can carp apparently. - return FALSE - -/mob/living/simple_animal/construct/can_fall() //As do Constructs. - return FALSE - // Check if this atom prevents things standing on it from falling. Return TRUE to allow the fall. /obj/proc/CanFallThru(atom/movable/mover as mob|obj, turf/target as turf) if(!isturf(mover.loc)) // VORESTATION EDIT. We clearly didn't have enough backup checks. @@ -330,6 +336,10 @@ // Detect if we made a silent landing. if(locate(/obj/structure/stairs) in landing) + if(isliving(src)) + var/mob/living/L = src + if(L.pulling) + L.pulling.forceMove(landing) return 1 else var/atom/A = find_fall_target(oldloc, landing) diff --git a/code/modules/multiz/structures.dm b/code/modules/multiz/structures.dm index 118cb999de..02277740c4 100644 --- a/code/modules/multiz/structures.dm +++ b/code/modules/multiz/structures.dm @@ -17,7 +17,7 @@ var/const/climb_time = 2 SECONDS -/obj/structure/ladder/initialize() +/obj/structure/ladder/Initialize() . = ..() // the upper will connect to the lower if(allowed_directions & DOWN) //we only want to do the top one, as it will initialize the ones before it. @@ -130,9 +130,10 @@ density = 0 opacity = 0 anchored = 1 - layer = 2.4 // Above turf, but they're sort of the floor, so below objects. + flags = ON_BORDER + layer = STAIRS_LAYER -/obj/structure/stairs/initialize() +/obj/structure/stairs/Initialize() . = ..() for(var/turf/turf in locs) var/turf/simulated/open/above = GetAbove(turf) @@ -182,4 +183,4 @@ /obj/structure/stairs/west dir = WEST - bound_width = 64 \ No newline at end of file + bound_width = 64 diff --git a/code/modules/multiz/turf.dm b/code/modules/multiz/turf.dm index cbf7623267..b3ea2c17ff 100644 --- a/code/modules/multiz/turf.dm +++ b/code/modules/multiz/turf.dm @@ -34,7 +34,7 @@ ..() update() -/turf/simulated/open/initialize() +/turf/simulated/open/Initialize() . = ..() ASSERT(HasBelow(z)) update() @@ -149,3 +149,9 @@ /turf/simulated/open/is_space() var/turf/below = GetBelow(src) return !below || below.is_space() + +/turf/simulated/open/is_safe_to_enter(mob/living/L) + if(L.can_fall()) + if(!locate(/obj/structure/stairs) in GetBelow(src)) + return FALSE + return ..() \ No newline at end of file diff --git a/code/modules/multiz/zshadow.dm b/code/modules/multiz/zshadow.dm index 19ce85ea82..99b5314ade 100644 --- a/code/modules/multiz/zshadow.dm +++ b/code/modules/multiz/zshadow.dm @@ -24,6 +24,7 @@ sync_icon(L) /mob/zshadow/Destroy() + owner.shadow = null owner = null ..() //But we don't return because the hint is wrong return QDEL_HINT_QUEUE diff --git a/code/modules/nano/modules/law_manager.dm b/code/modules/nano/modules/law_manager.dm index 0b56c7b32a..ae8473c8ce 100644 --- a/code/modules/nano/modules/law_manager.dm +++ b/code/modules/nano/modules/law_manager.dm @@ -94,7 +94,7 @@ if(href_list["change_supplied_law_position"]) var/new_position = input(usr, "Enter new supplied law position between 1 and [MAX_SUPPLIED_LAW_NUMBER], inclusive. Inherent laws at the same index as a supplied law will not be stated.", "Law Position", supplied_law_position) as num|null if(isnum(new_position) && can_still_topic()) - supplied_law_position = Clamp(new_position, 1, MAX_SUPPLIED_LAW_NUMBER) + supplied_law_position = CLAMP(new_position, 1, MAX_SUPPLIED_LAW_NUMBER) return 1 if(href_list["edit_law"]) diff --git a/code/modules/nano/modules/rcon.dm b/code/modules/nano/modules/rcon.dm index 19d89a1500..98a73964a4 100644 --- a/code/modules/nano/modules/rcon.dm +++ b/code/modules/nano/modules/rcon.dm @@ -68,7 +68,7 @@ if(href_list["smes_out_set"]) var/obj/machinery/power/smes/buildable/SMES = GetSMESByTag(href_list["smes_out_set"]) if(SMES) - var/outputset = (input(usr, "Enter new output level (0-[SMES.output_level_max/1000] kW)", "SMES Input Power Control", SMES.output_level/1000) as num) * 1000 + var/outputset = (input(usr, "Enter new output level (0-[SMES.output_level_max/1000] kW)", "SMES Output Power Control", SMES.output_level/1000) as num) * 1000 SMES.set_output(outputset) if(href_list["toggle_breaker"]) diff --git a/code/modules/nano/nanoui.dm b/code/modules/nano/nanoui.dm index bada05e300..4e4dd6af5b 100644 --- a/code/modules/nano/nanoui.dm +++ b/code/modules/nano/nanoui.dm @@ -502,7 +502,7 @@ nanoui is used to open and update nano browser uis * * @return nothing */ -/datum/nanoui/proc/process(update = 0) +/datum/nanoui/process(update = 0) if (!src_object || !user) close() return diff --git a/code/modules/nifsoft/nif.dm b/code/modules/nifsoft/nif.dm index a6f69e49ca..f979fd11a6 100644 --- a/code/modules/nifsoft/nif.dm +++ b/code/modules/nifsoft/nif.dm @@ -107,7 +107,7 @@ You can also set the stat of a NIF to NIF_TEMPFAIL without any issues to disable //Destructor cleans up references /obj/item/device/nif/Destroy() human = null - QDEL_NULL_LIST(nifsofts) + QDEL_LIST_NULL(nifsofts) QDEL_NULL(comm) nifsofts_life.Cut() return ..() @@ -157,7 +157,7 @@ You can also set the stat of a NIF to NIF_TEMPFAIL without any issues to disable /obj/item/device/nif/proc/unimplant(var/mob/living/carbon/human/H) var/datum/nifsoft/soulcatcher/SC = imp_check(NIF_SOULCATCHER) if(SC) //Clean up stored people, this is dirty but the easiest way. - QDEL_NULL_LIST(SC.brainmobs) + QDEL_LIST_NULL(SC.brainmobs) SC.brainmobs = list() stat = NIF_PREINSTALL vis_update() @@ -194,11 +194,11 @@ You can also set the stat of a NIF to NIF_TEMPFAIL without any issues to disable if(durability <= 0) stat = NIF_TEMPFAIL update_icon() - + if(human) notify("Danger! General system insta#^!($",TRUE) to_chat(human,"Your NIF vision overlays disappear and your head suddenly seems very quiet...") - + //Attackby proc, for maintenance /obj/item/device/nif/attackby(obj/item/weapon/W, mob/user as mob) if(open == 0 && W.is_screwdriver()) diff --git a/code/modules/nifsoft/nif_softshop.dm b/code/modules/nifsoft/nif_softshop.dm index a17e09b855..7c2990395d 100644 --- a/code/modules/nifsoft/nif_softshop.dm +++ b/code/modules/nifsoft/nif_softshop.dm @@ -19,7 +19,7 @@ opacity = 0 var/datum/entopic/entopic -/obj/machinery/vending/nifsoft_shop/initialize() +/obj/machinery/vending/nifsoft_shop/Initialize() . = ..() entopic = new(aholder = src, aicon = icon, aicon_state = "beacon") diff --git a/code/modules/nifsoft/nifsoft.dm b/code/modules/nifsoft/nifsoft.dm index dec580abf1..b4791003d0 100644 --- a/code/modules/nifsoft/nifsoft.dm +++ b/code/modules/nifsoft/nifsoft.dm @@ -265,7 +265,7 @@ stored = /datum/nifsoft/package/engineering /datum/nifsoft/package/engineering - software = list(/datum/nifsoft/ar_eng,/datum/nifsoft/uvblocker) + software = list(/datum/nifsoft/ar_eng,/datum/nifsoft/alarmmonitor,/datum/nifsoft/uvblocker) /obj/item/weapon/storage/box/nifsofts_engineering name = "engineering nifsoft disks" diff --git a/code/modules/nifsoft/software/01_vision.dm b/code/modules/nifsoft/software/01_vision.dm index b0006888bd..a45cb5946f 100644 --- a/code/modules/nifsoft/software/01_vision.dm +++ b/code/modules/nifsoft/software/01_vision.dm @@ -4,7 +4,7 @@ name = "AR Overlay (Civ)" desc = "Provides a general identification and health status overlay on your vision with no frills." list_pos = NIF_CIVILIAN_AR - cost = 500 + cost = 250 a_drain = 0.01 planes_enabled = list(VIS_CH_ID,VIS_CH_HEALTH_VR,VIS_AUGMENTED) vision_flags = (NIF_V_AR_CIVILIAN) @@ -14,7 +14,7 @@ name = "AR Overlay (Med)" desc = "Like the civilian model, but provides medical records access and virus database lookup." list_pos = NIF_MEDICAL_AR - cost = 750 + cost = 375 access = access_medical a_drain = 0.01 planes_enabled = list(VIS_CH_ID,VIS_CH_HEALTH_VR,VIS_CH_STATUS_R,VIS_CH_BACKUP,VIS_AUGMENTED) @@ -25,7 +25,7 @@ name = "AR Overlay (Sec)" desc = "Like the civilian model, but provides access to arrest status and security records." list_pos = NIF_SECURITY_AR - cost = 750 + cost = 375 access = access_security a_drain = 0.01 planes_enabled = list(VIS_CH_ID,VIS_CH_HEALTH_VR,VIS_CH_WANTED,VIS_AUGMENTED) @@ -36,7 +36,7 @@ name = "AR Overlay (Eng)" desc = "Like the civilian model, but provides station alert notices." list_pos = NIF_ENGINE_AR - cost = 750 + cost = 375 access = access_engine a_drain = 0.01 planes_enabled = list(VIS_CH_ID,VIS_CH_HEALTH_VR,VIS_AUGMENTED) @@ -47,7 +47,7 @@ name = "AR Overlay (Sci)" desc = "Like the civilian model, but provides ... well, nothing. For now." list_pos = NIF_SCIENCE_AR - cost = 750 + cost = 375 access = access_research a_drain = 0.01 planes_enabled = list(VIS_CH_ID,VIS_CH_HEALTH_VR,VIS_AUGMENTED) @@ -58,7 +58,7 @@ name = "AR Overlay (Omni)" desc = "Like the civilian model, but provides most of the features of the medical and security overlays as well." list_pos = NIF_OMNI_AR - cost = 750 + cost = 375 access = access_captain a_drain = 0.01 planes_enabled = list(VIS_CH_ID,VIS_CH_HEALTH_VR,VIS_CH_STATUS_R,VIS_CH_BACKUP,VIS_CH_WANTED,VIS_AUGMENTED) @@ -71,7 +71,7 @@ name = "Corrective AR" desc = "Subtly alters perception to compensate for cataracts and retinal misalignment, among other common disabilities." list_pos = NIF_CORRECTIVE_GLASS - cost = 200 + cost = 100 a_drain = 0.025 vision_flags = (NIF_V_CORRECTIVE) @@ -79,7 +79,7 @@ name = "Nictating Membrane" desc = "A synthetic nictating membrane (aka 'third eyelid') that protects the eyes from UV or hostile atmospheres. Does not protect from photonic stun weapons." list_pos = NIF_UVFILTER - cost = 450 + cost = 225 a_drain = 0.2 vision_flags = (NIF_V_UVFILTER) @@ -87,7 +87,7 @@ name = "Responsive Filter" desc = "Enables a high-speed shielding response to intense light, such as flashes, to block them." list_pos = NIF_FLASHPROT - cost = 600 + cost = 300 access = access_security a_drain = 0.05 vision_flags = (NIF_V_FLASHPROT) @@ -98,7 +98,7 @@ name = "Meson Scanner" desc = "Similar to the worn Optical Meson Scanner Goggles, these allow you to see the base structure and terrain through walls." list_pos = NIF_MESONS - cost = 1000 + cost = 500 a_drain = 0.1 access = access_engine tick_flags = NIF_ACTIVETICK @@ -117,7 +117,7 @@ name = "Material Scanner" desc = "Similar to the worn Optical Material Scanner Goggles, these allow you to see objects through walls." list_pos = NIF_MATERIAL - cost = 1000 + cost = 500 a_drain = 0.1 access = access_research tick_flags = NIF_ACTIVETICK @@ -156,7 +156,7 @@ name = "Low-Light Amp" desc = "Similar to the worn Night Vision Goggles, these allow you to see in complete darkness." list_pos = NIF_NIGHTVIS - cost = 1000 + cost = 500 a_drain = 0.1 access = access_security tick_flags = NIF_ACTIVETICK diff --git a/code/modules/nifsoft/software/05_health.dm b/code/modules/nifsoft/software/05_health.dm index 1c68ce17e1..737a45f7e4 100644 --- a/code/modules/nifsoft/software/05_health.dm +++ b/code/modules/nifsoft/software/05_health.dm @@ -1,37 +1,8 @@ -/datum/nifsoft/crewmonitor - name = "Crew Monitor" - desc = "A link to the local crew monitor sensors. Useful for finding people in trouble." - list_pos = NIF_CREWMONITOR - access = access_medical - cost = 1250 - p_drain = 0.025 - var/datum/nano_module/crew_monitor/arscreen - - New() - ..() - arscreen = new(nif) - - Destroy() - QDEL_NULL(arscreen) - return ..() - - activate() - if((. = ..())) - arscreen.ui_interact(nif.human,"main",null,1,nif_state) - return TRUE - - deactivate() - if((. = ..())) - return TRUE - - stat_text() - return "Show Monitor" - /datum/nifsoft/medichines_org name = "Medichines" desc = "An internal swarm of nanites to make sure you stay in good shape and to promote healing, or to preserve you if you are critically injured." list_pos = NIF_ORGANIC_HEAL - cost = 2500 + cost = 1250 p_drain = 0.05 a_drain = 0.1 //This is messed with manually below. wear = 2 @@ -104,7 +75,7 @@ name = "Medichines" desc = "A swarm of mechanical repair nanites, able to repair relatively minor damage to synthetic bodies. Large repairs must still be performed manually." list_pos = NIF_SYNTH_HEAL - cost = 2500 + cost = 1250 p_drain = 0.05 a_drain = 0.00 //This is manually drained below. wear = 2 @@ -157,7 +128,7 @@ name = "Respirocytes" desc = "Nanites simulating red blood cells will filter and recycle oxygen for a short time, preventing suffocation in hostile environments. NOTE: Only capable of supplying OXYGEN." list_pos = NIF_SPAREBREATH - cost = 650 + cost = 325 p_drain = 0.05 a_drain = 0.1 wear = 2 @@ -212,7 +183,7 @@ name = "Mind Backup" desc = "Backup your mind on the go. Stores a one-time sync of your current mindstate upon activation." list_pos = NIF_BACKUP - cost = 250 + cost = 125 activate() if((. = ..())) diff --git a/code/modules/nifsoft/software/06_screens.dm b/code/modules/nifsoft/software/06_screens.dm new file mode 100644 index 0000000000..7c91162340 --- /dev/null +++ b/code/modules/nifsoft/software/06_screens.dm @@ -0,0 +1,57 @@ +/datum/nifsoft/crewmonitor + name = "Crew Monitor" + desc = "A link to the local crew monitor sensors. Useful for finding people in trouble." + list_pos = NIF_MEDMONITOR + access = access_medical + cost = 625 + p_drain = 0.025 + var/datum/nano_module/crew_monitor/arscreen + + New() + ..() + arscreen = new(nif) + + Destroy() + QDEL_NULL(arscreen) + return ..() + + activate() + if((. = ..())) + arscreen.ui_interact(nif.human,"main",null,1,nif_state) + return TRUE + + deactivate() + if((. = ..())) + return TRUE + + stat_text() + return "Show Monitor" + +/datum/nifsoft/alarmmonitor + name = "Alarm Monitor" + desc = "A link to the local alarm monitors. Useful for detecting alarms in a pinch." + list_pos = NIF_ENGMONITOR + access = access_engine + cost = 625 + p_drain = 0.025 + var/datum/nano_module/alarm_monitor/engineering/arscreen + + New() + ..() + arscreen = new(nif) + + Destroy() + QDEL_NULL(arscreen) + return ..() + + activate() + if((. = ..())) + arscreen.ui_interact(nif.human,"main",null,1,nif_state) + return TRUE + + deactivate() + if((. = ..())) + return TRUE + + stat_text() + return "Show Monitor" diff --git a/code/modules/nifsoft/software/13_soulcatcher.dm b/code/modules/nifsoft/software/13_soulcatcher.dm index 05fbca5a47..09d23669b3 100644 --- a/code/modules/nifsoft/software/13_soulcatcher.dm +++ b/code/modules/nifsoft/software/13_soulcatcher.dm @@ -26,7 +26,7 @@ load_settings() Destroy() - QDEL_NULL_LIST(brainmobs) + QDEL_LIST_NULL(brainmobs) return ..() activate() @@ -49,7 +49,7 @@ nif.human.verbs |= /mob/living/carbon/human/proc/nme uninstall() - QDEL_NULL_LIST(brainmobs) + QDEL_LIST_NULL(brainmobs) if((. = ..()) && nif && nif.human) //Sometimes NIFs are deleted outside of a human nif.human.verbs -= /mob/living/carbon/human/proc/nsay nif.human.verbs -= /mob/living/carbon/human/proc/nme diff --git a/code/modules/nifsoft/software/14_commlink.dm b/code/modules/nifsoft/software/14_commlink.dm index 011e019fce..58dc33880e 100644 --- a/code/modules/nifsoft/software/14_commlink.dm +++ b/code/modules/nifsoft/software/14_commlink.dm @@ -4,7 +4,7 @@ name = "Commlink" desc = "An internal communicator for keeping in touch with people." list_pos = NIF_COMMLINK - cost = 500 + cost = 250 wear = 0 p_drain = 0.01 other_flags = (NIF_O_COMMLINK) diff --git a/code/modules/nifsoft/software/15_misc.dm b/code/modules/nifsoft/software/15_misc.dm index 9c8d6d7f0e..0351c8d19f 100644 --- a/code/modules/nifsoft/software/15_misc.dm +++ b/code/modules/nifsoft/software/15_misc.dm @@ -2,7 +2,7 @@ name = "APC Connector" desc = "A small attachment that allows synthmorphs to recharge themselves from APCs." list_pos = NIF_APCCHARGE - cost = 1250 + cost = 625 wear = 2 applies_to = NIF_SYNTHETIC tick_flags = NIF_ACTIVETICK @@ -44,7 +44,7 @@ name = "Pressure Seals" desc = "Creates pressure seals around important synthetic components to protect them from vacuum. Almost impossible on organics." list_pos = NIF_PRESSURE - cost = 1750 + cost = 875 a_drain = 0.5 wear = 3 applies_to = NIF_SYNTHETIC @@ -54,7 +54,7 @@ name = "Heat Sinks" desc = "Advanced heat sinks for internal heat storage of heat on a synth until able to vent it in atmosphere." list_pos = NIF_HEATSINK - cost = 1450 + cost = 725 a_drain = 0.25 wear = 3 var/used = 0 @@ -71,7 +71,7 @@ return FALSE stat_text() - return "[active ? "Active" : "Disabled"] (Stored Heat: [Floor(used/20)]%)" + return "[active ? "Active" : "Disabled"] (Stored Heat: [FLOOR((used/20), 1)]%)" life() if((. = ..())) @@ -122,14 +122,14 @@ name = "Mass Alteration" desc = "A system that allows one to change their size, through drastic mass rearrangement. Causes significant wear when installed." list_pos = NIF_SIZECHANGE - cost = 750 + cost = 375 wear = 6 activate() if((. = ..())) var/new_size = input("Put the desired size (25-200%)", "Set Size", 200) as num - if (!IsInRange(new_size,25,200)) + if (!ISINRANGE(new_size,25,200)) to_chat(nif.human,"The safety features of the NIF Program prevent you from choosing this size.") return else @@ -153,7 +153,7 @@ name = "World Bender" desc = "Alters your perception of various objects in the world. Only has one setting for now: displaying all your crewmates as farm animals." list_pos = NIF_WORLDBEND - cost = 200 + cost = 100 a_drain = 0.01 activate() diff --git a/code/modules/organs/internal/brain.dm b/code/modules/organs/internal/brain.dm index 5f8a9dd0d7..2003abe04f 100644 --- a/code/modules/organs/internal/brain.dm +++ b/code/modules/organs/internal/brain.dm @@ -107,7 +107,7 @@ GLOBAL_LIST_BOILERPLATE(all_brain_organs, /obj/item/organ/internal/brain) if(name == initial(name)) name = "\the [owner.real_name]'s [initial(name)]" - var/mob/living/simple_animal/borer/borer = owner.has_brain_worms() + var/mob/living/simple_mob/animal/borer/borer = owner.has_brain_worms() if(borer) borer.detatch() //Should remove borer if the brain is removed - RR diff --git a/code/modules/organs/misc.dm b/code/modules/organs/misc.dm index 862c96a96f..30515e746b 100644 --- a/code/modules/organs/misc.dm +++ b/code/modules/organs/misc.dm @@ -34,7 +34,7 @@ ..() - var/mob/living/simple_animal/borer/B = owner.has_brain_worms() + var/mob/living/simple_mob/animal/borer/B = owner.has_brain_worms() if(B) B.leave_host() B.ckey = owner.ckey diff --git a/code/modules/organs/organ.dm b/code/modules/organs/organ.dm index f07a6b3192..bee4f385f9 100644 --- a/code/modules/organs/organ.dm +++ b/code/modules/organs/organ.dm @@ -35,8 +35,11 @@ var/list/organ_cache = list() var/list/will_assist_languages = list() var/list/datum/language/assists_languages = list() + var/list/organ_verbs // Verbs added by the organ when present in the body. + /obj/item/organ/Destroy() + handle_organ_mod_special(TRUE) if(owner) owner = null if(transplant_data) transplant_data.Cut() if(autopsy_data) autopsy_data.Cut() @@ -80,6 +83,8 @@ var/list/organ_cache = list() else species = all_species["Human"] + handle_organ_mod_special() + /obj/item/organ/proc/set_dna(var/datum/dna/new_dna) if(new_dna) dna = new_dna.Clone() @@ -91,13 +96,14 @@ var/list/organ_cache = list() if(robotic < ORGAN_ROBOT) status |= ORGAN_DEAD damage = max_damage - processing_objects -= src + STOP_PROCESSING(SSobj, src) + handle_organ_mod_special(TRUE) if(owner && vital) owner.death() owner.can_defib = 0 /obj/item/organ/proc/adjust_germ_level(var/amount) // Unless you're setting germ level directly to 0, use this proc instead - germ_level = Clamp(germ_level + amount, 0, INFECTION_LEVEL_MAX) + germ_level = CLAMP(germ_level + amount, 0, INFECTION_LEVEL_MAX) /obj/item/organ/process() @@ -117,6 +123,8 @@ var/list/organ_cache = list() if(damage >= max_damage) die() + handle_organ_proc_special() + //Process infections if(robotic >= ORGAN_ROBOT || (owner && owner.species && (owner.species.flags & IS_PLANT || (owner.species.flags & NO_INFECT)))) germ_level = 0 @@ -233,6 +241,8 @@ var/list/organ_cache = list() damage = 0 status = 0 germ_level = 0 + if(owner) + handle_organ_mod_special() if(!ignore_prosthetic_prefs && owner && owner.client && owner.client.prefs && owner.client.prefs.real_name == owner.real_name) var/status = owner.client.prefs.organ_data[organ_tag] if(status == "assisted") @@ -335,8 +345,8 @@ var/list/organ_cache = list() var/obj/item/organ/external/affected = owner.get_organ(parent_organ) if(affected) affected.internal_organs -= src - loc = owner.drop_location() - processing_objects |= src + loc = get_turf(owner) + START_PROCESSING(SSobj, src) rejecting = null var/datum/reagent/blood/organ_blood = locate(/datum/reagent/blood) in reagents.reagent_list if(!organ_blood || !organ_blood.data["blood_DNA"]) @@ -348,8 +358,11 @@ var/list/organ_cache = list() owner.death() owner.can_defib = 0 + handle_organ_mod_special(TRUE) + owner = null + /obj/item/organ/proc/replaced(var/mob/living/carbon/human/target,var/obj/item/organ/external/affected) if(!istype(target)) return @@ -367,11 +380,13 @@ var/list/organ_cache = list() owner = target loc = owner - processing_objects -= src + STOP_PROCESSING(SSobj, src) target.internal_organs |= src affected.internal_organs |= src target.internal_organs_by_name[organ_tag] = src + handle_organ_mod_special() + /obj/item/organ/proc/bitten(mob/user) if(robotic >= ORGAN_ROBOT) @@ -411,4 +426,33 @@ var/list/organ_cache = list() return 0 if(robotic && robotic < ORGAN_LIFELIKE) //Super fancy humanlike robotics probably have sensors, or something? return 0 - return 1 \ No newline at end of file + return 1 + +/obj/item/organ/proc/handle_organ_mod_special(var/removed = FALSE) // Called when created, transplanted, and removed. + if(!istype(owner)) + return + + var/list/save_verbs = list() + + if(removed && organ_verbs) // Do we share verbs with any other organs? Are they functioning? + var/list/all_organs = list() + all_organs |= owner.organs + all_organs |= owner.internal_organs + + for(var/obj/item/organ/O in all_organs) + if(!(O.status & ORGAN_DEAD) && O.organ_verbs) + for(var/verb_type in O.organ_verbs) + if(verb_type in organ_verbs) + save_verbs |= verb_type + + if(!removed && organ_verbs) + for(var/verb_path in organ_verbs) + owner.verbs |= verb_path + else if(organ_verbs) + for(var/verb_path in organ_verbs) + if(!(verb_path in save_verbs)) + owner.verbs -= verb_path + return + +/obj/item/organ/proc/handle_organ_proc_special() // Called when processed. + return diff --git a/code/modules/organs/organ_icon.dm b/code/modules/organs/organ_icon.dm index 371c64e0ab..203664e51a 100644 --- a/code/modules/organs/organ_icon.dm +++ b/code/modules/organs/organ_icon.dm @@ -289,5 +289,5 @@ var/list/robot_hud_colours = list("#CFCFCF","#AFAFAF","#8F8F8F","#6F6F6F","#4F4F dam_state = min_dam_state // Apply colour and return product. var/list/hud_colours = (robotic < ORGAN_ROBOT) ? flesh_hud_colours : robot_hud_colours - hud_damage_image.color = hud_colours[max(1,min(ceil(dam_state*hud_colours.len),hud_colours.len))] + hud_damage_image.color = hud_colours[max(1,min(CEILING(dam_state*hud_colours.len, 1),hud_colours.len))] return hud_damage_image diff --git a/code/modules/organs/robolimbs.dm b/code/modules/organs/robolimbs.dm index 5a55b1bcd5..fd59a97d07 100644 --- a/code/modules/organs/robolimbs.dm +++ b/code/modules/organs/robolimbs.dm @@ -4,7 +4,7 @@ var/list/chargen_robolimbs = list() var/datum/robolimb/basic_robolimb var/const/standard_monitor_styles = "blank=ipc_blank;\ pink=ipc_pink;\ - green=ipc_green,\ + green=ipc_green;\ red=ipc_red;\ blue=ipc_blue;\ shower=ipc_shower;\ @@ -42,7 +42,7 @@ var/const/standard_monitor_styles = "blank=ipc_blank;\ var/lifelike // If set, appears organic. var/skin_tone // If set, applies skin tone rather than part color var/blood_color = "#030303" - var/list/species_cannot_use = list(SPECIES_TESHARI, SPECIES_PROMETHEAN, SPECIES_XENOCHIMERA) //VOREStation Edit + var/list/species_cannot_use = list(SPECIES_TESHARI, SPECIES_PROMETHEAN, SPECIES_DIONA, SPECIES_XENOCHIMERA) //VOREStation Edit var/list/monitor_styles //If empty, the model of limbs offers a head compatible with monitors. var/parts = BP_ALL //Defines what parts said brand can replace on a body. var/health_hud_intensity = 1 // Intensity modifier for the health GUI indicator. @@ -312,6 +312,7 @@ var/const/standard_monitor_styles = "blank=ipc_blank;\ /obj/item/weapon/disk/limb/bishop company = "Bishop" + catalogue_data = list(/datum/category_item/catalogue/information/organization/bishop) /obj/item/weapon/disk/limb/cybersolutions company = "Cyber Solutions" @@ -321,21 +322,28 @@ var/const/standard_monitor_styles = "blank=ipc_blank;\ /obj/item/weapon/disk/limb/hephaestus company = "Hephaestus" + catalogue_data = list(/datum/category_item/catalogue/information/organization/hephaestus) /obj/item/weapon/disk/limb/morpheus company = "Morpheus" + catalogue_data = list(/datum/category_item/catalogue/information/organization/morpheus) /obj/item/weapon/disk/limb/veymed company = "Vey-Med" + catalogue_data = list(/datum/category_item/catalogue/information/organization/vey_med) /obj/item/weapon/disk/limb/wardtakahashi company = "Ward-Takahashi" + catalogue_data = list(/datum/category_item/catalogue/information/organization/ward_takahashi) /obj/item/weapon/disk/limb/xion company = "Xion" + catalogue_data = list(/datum/category_item/catalogue/information/organization/xion) /obj/item/weapon/disk/limb/zenghu company = "Zeng-Hu" + catalogue_data = list(/datum/category_item/catalogue/information/organization/zeng_hu) /obj/item/weapon/disk/limb/nanotrasen company = "NanoTrasen" + catalogue_data = list(/datum/category_item/catalogue/information/organization/nanotrasen) diff --git a/code/modules/organs/subtypes/nano.dm b/code/modules/organs/subtypes/nano.dm index fe23f37f85..b8fb26cd64 100644 --- a/code/modules/organs/subtypes/nano.dm +++ b/code/modules/organs/subtypes/nano.dm @@ -157,7 +157,7 @@ icon = 'icons/mob/species/protean/protean.dmi' icon_state = "posi" -/obj/item/device/mmi/digital/posibrain/nano/initialize() +/obj/item/device/mmi/digital/posibrain/nano/Initialize() . = ..() icon_state = "posi" diff --git a/code/modules/organs/subtypes/replicant.dm b/code/modules/organs/subtypes/replicant.dm new file mode 100644 index 0000000000..51605ab098 --- /dev/null +++ b/code/modules/organs/subtypes/replicant.dm @@ -0,0 +1,171 @@ +/* + * This file contains 'synthetic' fleshy organs, intended to not reject. + */ + +/obj/item/organ/internal/eyes/replicant + name = "replicant eyes" + desc = "A pair of rubber balls used for receiving optical information." + can_reject = FALSE + icon_state = "eyes_grey" + +/obj/item/organ/internal/brain/replicant + name = "replicant brain" + desc = "A juicy piece of.. rubber, found in someone's head?" + can_reject = FALSE + icon_state = "brain_grey" + +/obj/item/organ/internal/brain/replicant/torso + parent_organ = BP_TORSO + +/obj/item/organ/internal/voicebox/replicant + name = "replicant voicebox" + desc = "A rubbery piece of meat used for vocalizations." + can_reject = FALSE + +/obj/item/organ/internal/heart/replicant + name = "replicant heart" + desc = "A mass of rubber and muscle used for pumping fluid." + can_reject = FALSE + icon_state = "heart_grey-on" + dead_icon = "heart_grey-off" + +/obj/item/organ/internal/lungs/replicant + name = "replicant lungs" + desc = "A pair of rubbery sacs used for respiration." + can_reject = FALSE + icon_state = "lungs_grey" + +/obj/item/organ/internal/liver/replicant + name = "replicant liver" + desc = "A mass of rubber used for filtering and breaking down chemicals." + can_reject = FALSE + icon_state = "liver_grey" + +/obj/item/organ/internal/kidneys/replicant + name = "replicant kidneys" + desc = "A pair of small sacs used for filtering chemicals." + can_reject = FALSE + icon_state = "kidneys_grey" + +/obj/item/organ/internal/xenos/plasmavessel/replicant + name = "replicant phorogenic sac" + desc = "A bulbous rubbery mass that converts nutrients from the host into a biological compound eerily similar to phoron." + can_reject = FALSE + icon_state = "plasma_grey" + +/obj/item/organ/internal/xenos/acidgland/replicant + name = "replicant aerosol tubule" + desc = "A long, rubbery tube that ends in a hard plastic-like bulb." + can_reject = FALSE + icon_state = "acidgland_grey" + +/obj/item/organ/internal/xenos/resinspinner/replicant + name = "replicant biomesh spinner" + desc = "A rubbery mass with protrusions for molding organic material." + can_reject = FALSE + icon_state = "xenode_grey" + +/* + * These are unique organs to Replicants and other Ancient Aliens, though they can be used elsewhere. They follow the same rules. + */ + +/obj/item/organ/internal/immunehub + name = "lymphomatic control web" + desc = "A mesh of twitching strings." + organ_tag = O_AREJECT + parent_organ = BP_TORSO + icon_state = "immunehub" + + var/rejection_adjust = 10 + +/obj/item/organ/internal/immunehub/replicant + name = "replicant assimilation web" + desc = "A mesh of jiggling rubber strings that dig at nearby flesh." + can_reject = FALSE + +/obj/item/organ/internal/immunehub/handle_organ_proc_special() + if(!owner) + return + + var/list/all_organs = list() + all_organs |= owner.internal_organs + all_organs |= owner.organs + + var/modifier = round(rejection_adjust * (1 - 0.5 * is_bruised())) + + for(var/obj/item/organ/I in all_organs) + I.rejecting = max(0, rejecting - modifier) + +/obj/item/organ/internal/metamorphgland + name = "morphoplastic node" + desc = "A strange clump of meat that doesn't quite stay in place." + organ_tag = O_VENTC + parent_organ = BP_GROIN + icon_state = "innards" + organ_verbs = list( + /mob/living/proc/ventcrawl + ) + +/obj/item/organ/internal/metamorphgland/replicant + name = "replicant malleoshift node" + desc = "A strange clump of rubbery meat that likes to move around." + can_reject = FALSE + icon_state = "vox_lung" + +/obj/item/organ/internal/brainmirror // The device that lets Replicants and other Alien Pod minds return willingly to the pods. + name = "quantum cortical entangler" + desc = "An ominous device." + can_reject = FALSE + organ_tag = O_VRLINK + parent_organ = BP_HEAD + icon_state = "cortical-stack" + robotic = ORGAN_LIFELIKE + + organ_verbs = list( + /mob/living/carbon/human/proc/exit_vr + ) + +/* + * These subtypes are used by the Replicant species, and provide bonuses to their owners. Even when transplanted! + */ + +/obj/item/organ/internal/heart/replicant/rage + name = "replicant adrenal heart" + desc = "A mass of rubber, muscle, and complex chemical networks used for pumping fluid." + description_info = "This organ, when connected properly to the body, will attempt to induce an adrenaline surge in the implantee." + var/prev_damage_tally = 0 + var/last_activation_time = 0 + +/obj/item/organ/internal/heart/replicant/rage/handle_organ_proc_special() + if(!owner) + return + + var/damage_tally = 0 + var/pain_tally = 0 + damage_tally += owner.getBruteLoss() + damage_tally += owner.getFireLoss() + pain_tally += owner.getHalLoss() + + if(((damage_tally >= 50 || prev_damage_tally >= 50) && prev_damage_tally - damage_tally < 0) || pain_tally >= 60) + if(world.time > last_activation_time + 60 SECONDS) + last_activation_time = world.time + owner.add_modifier(/datum/modifier/berserk, 20 SECONDS) + take_damage(5) + +/obj/item/organ/internal/lungs/replicant/mending + name = "replicant hive lungs" + desc = "A pair of rubbery sacs with large portions dedicated to honeycombed nanite filters." + description_info = "This organ, when connected properly to the body, will attempt to keep some other organs repaired." + var/list/repair_list = list(O_HEART, O_KIDNEYS, O_VOICE, O_GBLADDER, O_PLASMA) + +/obj/item/organ/internal/lungs/replicant/mending/handle_organ_proc_special() + if(!owner) + return + + var/modifier = 1 - (0.5 * is_bruised()) + + if(istype(owner)) + for(var/o_tag in repair_list) + var/obj/item/organ/O = owner.internal_organs_by_name[o_tag] + if(O) + O.take_damage(-1 * modifier) diff --git a/code/modules/organs/subtypes/standard.dm b/code/modules/organs/subtypes/standard.dm index 568d45088c..63e4c4a7d2 100644 --- a/code/modules/organs/subtypes/standard.dm +++ b/code/modules/organs/subtypes/standard.dm @@ -258,7 +258,7 @@ joint = "jaw" amputation_point = "neck" gendered_icon = 1 - cannot_gib = 1 + cannot_gib = TRUE encased = "skull" base_miss_chance = 40 var/can_intake_reagents = 1 @@ -268,6 +268,11 @@ var/eye_icon_location = 'icons/mob/human_face.dmi' +/obj/item/organ/external/head/Initialize() + if(config.allow_headgibs) + cannot_gib = FALSE + return ..() + /obj/item/organ/external/head/robotize(var/company, var/skip_prosthetics, var/keep_organs) return ..(company, skip_prosthetics, 1) diff --git a/code/modules/organs/subtypes/xenos.dm b/code/modules/organs/subtypes/xenos.dm index f573930489..dd860ab235 100644 --- a/code/modules/organs/subtypes/xenos.dm +++ b/code/modules/organs/subtypes/xenos.dm @@ -29,6 +29,27 @@ var/stored_plasma = 0 var/max_plasma = 500 + organ_verbs = list( + /mob/living/carbon/human/proc/transfer_plasma + ) + +/obj/item/organ/internal/xenos/plasmavessel/handle_organ_proc_special() + if(!istype(owner)) + return + + var/modifier = 1 - 0.5 * is_bruised() + + if(owner.bloodstr.has_reagent("phoron")) + adjust_plasma(round(4 * modifier)) + + if(owner.ingested.has_reagent("phoron")) + adjust_plasma(round(2 * modifier)) + + adjust_plasma(1) + +/obj/item/organ/internal/xenos/plasmavessel/proc/adjust_plasma(var/amount = 0) + stored_plasma = CLAMP(stored_plasma + amount, 0, max_plasma) + /obj/item/organ/internal/xenos/plasmavessel/grey icon_state = "plasma_grey" stored_plasma = 200 @@ -61,6 +82,12 @@ icon_state = "acidgland" organ_tag = O_ACID + organ_verbs = list( + /mob/living/carbon/human/proc/corrosive_acid, + /mob/living/carbon/human/proc/neurotoxin, + /mob/living/carbon/human/proc/acidspit + ) + /obj/item/organ/internal/xenos/acidgland/grey icon_state = "acidgland_grey" @@ -95,6 +122,10 @@ icon_state = "xenode" organ_tag = O_RESIN + organ_verbs = list( + /mob/living/carbon/human/proc/resin, + /mob/living/carbon/human/proc/plant + ) /obj/item/organ/internal/xenos/resinspinner/grey icon_state = "xenode_grey" diff --git a/code/modules/overmap/ships/computers/engine_control.dm b/code/modules/overmap/ships/computers/engine_control.dm index 265e560399..4316762671 100644 --- a/code/modules/overmap/ships/computers/engine_control.dm +++ b/code/modules/overmap/ships/computers/engine_control.dm @@ -8,7 +8,7 @@ var/list/engines = list() var/obj/effect/map/ship/linked -/obj/machinery/computer/engines/initialize() +/obj/machinery/computer/engines/Initialize() . = ..() linked = map_sectors["[z]"] if (linked) @@ -70,13 +70,13 @@ if(href_list["set_limit"]) var/datum/ship_engine/E = locate(href_list["engine"]) var/newlim = input("Input new thrust limit (0..100)", "Thrust limit", E.get_thrust_limit()) as num - var/limit = Clamp(newlim/100, 0, 1) + var/limit = CLAMP(newlim/100, 0, 1) if(E) E.set_thrust_limit(limit) if(href_list["limit"]) var/datum/ship_engine/E = locate(href_list["engine"]) - var/limit = Clamp(E.get_thrust_limit() + text2num(href_list["limit"]), 0, 1) + var/limit = CLAMP(E.get_thrust_limit() + text2num(href_list["limit"]), 0, 1) if(E) E.set_thrust_limit(limit) diff --git a/code/modules/overmap/ships/computers/helm.dm b/code/modules/overmap/ships/computers/helm.dm index 2c198c6a3c..e31560f9e3 100644 --- a/code/modules/overmap/ships/computers/helm.dm +++ b/code/modules/overmap/ships/computers/helm.dm @@ -10,7 +10,7 @@ var/dx //desitnation var/dy //coordinates -/obj/machinery/computer/helm/initialize() +/obj/machinery/computer/helm/Initialize() . = ..() linked = map_sectors["[z]"] if (linked) @@ -130,9 +130,9 @@ R.fields["y"] = linked.y if("new") var/newx = input("Input new entry x coordinate", "Coordinate input", linked.x) as num - R.fields["x"] = Clamp(newx, 1, world.maxx) + R.fields["x"] = CLAMP(newx, 1, world.maxx) var/newy = input("Input new entry y coordinate", "Coordinate input", linked.y) as num - R.fields["y"] = Clamp(newy, 1, world.maxy) + R.fields["y"] = CLAMP(newy, 1, world.maxy) known_sectors += R if (href_list["remove"]) @@ -142,12 +142,12 @@ if (href_list["setx"]) var/newx = input("Input new destiniation x coordinate", "Coordinate input", dx) as num|null if (newx) - dx = Clamp(newx, 1, world.maxx) + dx = CLAMP(newx, 1, world.maxx) if (href_list["sety"]) var/newy = input("Input new destiniation y coordinate", "Coordinate input", dy) as num|null if (newy) - dy = Clamp(newy, 1, world.maxy) + dy = CLAMP(newy, 1, world.maxy) if (href_list["x"] && href_list["y"]) dx = text2num(href_list["x"]) diff --git a/code/modules/overmap/ships/computers/shuttle.dm b/code/modules/overmap/ships/computers/shuttle.dm index 16303509a8..8d6ecefcc7 100644 --- a/code/modules/overmap/ships/computers/shuttle.dm +++ b/code/modules/overmap/ships/computers/shuttle.dm @@ -8,7 +8,7 @@ var/obj/effect/map/destination //current destination var/obj/effect/map/home //current destination -/obj/machinery/computer/shuttle_control/explore/initialize() +/obj/machinery/computer/shuttle_control/explore/Initialize() . = ..() home = map_sectors["[z]"] shuttle_tag = "[shuttle_tag]-[z]" diff --git a/code/modules/overmap/ships/engines/thermal.dm b/code/modules/overmap/ships/engines/thermal.dm index 323bc82906..9c4af11cc6 100644 --- a/code/modules/overmap/ships/engines/thermal.dm +++ b/code/modules/overmap/ships/engines/thermal.dm @@ -53,7 +53,7 @@ var/effective_pressure = 3000 var/datum/ship_engine/thermal/controller -/obj/machinery/atmospherics/unary/engine/initialize() +/obj/machinery/atmospherics/unary/engine/Initialize() . = ..() controller = new(src) diff --git a/code/modules/overmap/ships/ship.dm b/code/modules/overmap/ships/ship.dm index b7adf7319a..0abd450a69 100644 --- a/code/modules/overmap/ships/ship.dm +++ b/code/modules/overmap/ships/ship.dm @@ -14,7 +14,7 @@ var/obj/machinery/computer/helm/nav_control var/obj/machinery/computer/engines/eng_control -/obj/effect/map/ship/initialize() +/obj/effect/map/ship/Initialize() . = ..() for(var/obj/machinery/computer/engines/E in machines) if (E.z == map_z) @@ -24,7 +24,7 @@ if (H.z == map_z) nav_control = H break - processing_objects.Add(src) + START_PROCESSING(SSobj, src) /obj/effect/map/ship/relaymove(mob/user, direction) accelerate(direction) @@ -53,8 +53,8 @@ return res /obj/effect/map/ship/proc/adjust_speed(n_x, n_y) - speed[1] = Clamp(speed[1] + n_x, -default_delay, default_delay) - speed[2] = Clamp(speed[2] + n_y, -default_delay, default_delay) + speed[1] = CLAMP(speed[1] + n_x, -default_delay, default_delay) + speed[2] = CLAMP(speed[2] + n_y, -default_delay, default_delay) if(is_still()) toggle_move_stars(map_z) else @@ -112,5 +112,5 @@ var/turf/newloc = locate(x + deltas[1], y + deltas[2], z) if(newloc) Move(newloc) - if(rotate) + if(rotate) rotate(get_heading()) diff --git a/code/modules/paperwork/filingcabinet.dm b/code/modules/paperwork/filingcabinet.dm index 44a2d1310b..d1effe7492 100644 --- a/code/modules/paperwork/filingcabinet.dm +++ b/code/modules/paperwork/filingcabinet.dm @@ -25,7 +25,7 @@ icon_state = "tallcabinet" -/obj/structure/filingcabinet/initialize() +/obj/structure/filingcabinet/Initialize() for(var/obj/item/I in loc) if(istype(I, /obj/item/weapon/paper) || istype(I, /obj/item/weapon/folder) || istype(I, /obj/item/weapon/photo) || istype(I, /obj/item/weapon/paper_bundle)) I.loc = src diff --git a/code/modules/paperwork/paperbin.dm b/code/modules/paperwork/paperbin.dm index 4a81179c72..4a24500fd3 100644 --- a/code/modules/paperwork/paperbin.dm +++ b/code/modules/paperwork/paperbin.dm @@ -19,7 +19,7 @@ /obj/item/weapon/paper_bin/MouseDrop(mob/user as mob) if((user == usr && (!( usr.restrained() ) && (!( usr.stat ) && (usr.contents.Find(src) || in_range(src, usr)))))) - if(!istype(usr, /mob/living/simple_animal)) + if(!istype(usr, /mob/living/simple_mob)) if( !usr.get_active_hand() ) //if active hand is empty var/mob/living/carbon/human/H = user var/obj/item/organ/external/temp = H.organs_by_name["r_hand"] diff --git a/code/modules/paperwork/papershredder.dm b/code/modules/paperwork/papershredder.dm index b1f58b0965..d626e6f04b 100644 --- a/code/modules/paperwork/papershredder.dm +++ b/code/modules/paperwork/papershredder.dm @@ -137,7 +137,7 @@ else icon_state = "shredder-off" // Fullness overlay - overlays += "shredder-[max(0,min(5,Floor(paperamount/max_paper*5)))]" + overlays += "shredder-[max(0,min(5,FLOOR(paperamount/max_paper*5, 1)))]" if (panel_open) overlays += "panel_open" diff --git a/code/modules/paperwork/photography.dm b/code/modules/paperwork/photography.dm index 535debad21..733dbff5bc 100644 --- a/code/modules/paperwork/photography.dm +++ b/code/modules/paperwork/photography.dm @@ -33,7 +33,6 @@ var/global/photo_count = 0 var/icon/img //Big photo image var/scribble //Scribble on the back. var/icon/tiny - var/cursed = 0 var/photo_size = 3 /obj/item/weapon/photo/New() @@ -125,7 +124,6 @@ var/global/photo_count = 0 icon_state = "camera" item_state = "camera" w_class = ITEMSIZE_SMALL - flags = CONDUCT slot_flags = SLOT_BELT matter = list(DEFAULT_WALL_MATERIAL = 2000) var/pictures_max = 10 @@ -237,10 +235,6 @@ var/global/photo_count = 0 else mob_detail += "You can also see [A] on the photo[A:health < 75 ? " - [A] looks hurt":""].[holding ? " [holding]":"."]." - for(var/mob/living/simple_animal/hostile/statue/S in the_turf) - if(S) - mob_detail += "You can see \a [S] on the photo. Its stare makes you feel uneasy." //"That which holds the image of an angel, becomes itself an angel." - return mob_detail /obj/item/device/camera/afterattack(atom/target as mob|obj|turf|area, mob/user as mob, flag) @@ -282,20 +276,7 @@ var/global/photo_count = 0 y_c-- x_c = x_c - size - - - var/obj/item/weapon/photo/p = createpicture(target, user, turfs, mobs, flag) - if(findtext(mobs, "Its stare makes you feel uneasy")) - p.cursed = 1 - user.visible_message("Something starts to slowly manifest from the picture!") - spawn(150) - var/turf/T = get_turf(p) - var/mob/living/simple_animal/hostile/statue/S = new /mob/living/simple_animal/hostile/statue/(T) - S.banishable = 1//At least you can get rid of those bastards - T.visible_message("The photo turns into \a [S]!") - qdel(p) - printpicture(user, p) @@ -339,16 +320,6 @@ var/global/photo_count = 0 p.pixel_y = pixel_y p.photo_size = photo_size p.scribble = scribble - p.cursed = cursed - if(p.cursed) - var/turf/T = get_turf(p) - T.visible_message("Something starts to slowly manifest from the picture!") - spawn(150) - T = get_turf(p) //second time, because the photo could've moved - var/mob/living/simple_animal/hostile/statue/S = new /mob/living/simple_animal/hostile/statue/(T) - S.banishable = 1//At least you can get rid of those bastards - T.visible_message("The photo turns into \a [S]!") - qdel(p) if(copy_id) p.id = id diff --git a/code/modules/planet/planet.dm b/code/modules/planet/planet.dm index 0364056b69..b069e2fdda 100644 --- a/code/modules/planet/planet.dm +++ b/code/modules/planet/planet.dm @@ -14,7 +14,7 @@ var/sun_position = 0 // 0 means midnight, 1 means noon. var/list/sun = list("range","brightness","color","lum_r","lum_g","lum_b") var/list/datum/lighting_corner/sunlit_corners = list() - var/expected_z_levels = list() + var/list/expected_z_levels = list() var/turf/unsimulated/wall/planetary/planetary_wall_type = /turf/unsimulated/wall/planetary @@ -45,7 +45,7 @@ )) update_sun() -/datum/planet/proc/process(last_fire) +/datum/planet/process(last_fire) if(current_time) var/difference = world.time - last_fire current_time = current_time.add_seconds((difference / 10) * PLANET_TIME_MODIFIER) diff --git a/code/modules/planet/sif.dm b/code/modules/planet/sif.dm index b8c99636f6..3ee2fdd976 100644 --- a/code/modules/planet/sif.dm +++ b/code/modules/planet/sif.dm @@ -70,12 +70,12 @@ var/datum/planet/sif/planet_sif = null high_color = "#FFFFFF" min = 0.70 - var/lerp_weight = (abs(min - sun_position)) * 4 + var/interpolate_weight = (abs(min - sun_position)) * 4 var/weather_light_modifier = 1 if(weather_holder && weather_holder.current_weather) weather_light_modifier = weather_holder.current_weather.light_modifier - var/new_brightness = (Interpolate(low_brightness, high_brightness, weight = lerp_weight) ) * weather_light_modifier + var/new_brightness = (LERP(low_brightness, high_brightness, interpolate_weight) ) * weather_light_modifier var/new_color = null if(weather_holder && weather_holder.current_weather && weather_holder.current_weather.light_color) @@ -91,9 +91,9 @@ var/datum/planet/sif/planet_sif = null var/high_g = high_color_list[2] var/high_b = high_color_list[3] - var/new_r = Interpolate(low_r, high_r, weight = lerp_weight) - var/new_g = Interpolate(low_g, high_g, weight = lerp_weight) - var/new_b = Interpolate(low_b, high_b, weight = lerp_weight) + var/new_r = LERP(low_r, high_r, interpolate_weight) + var/new_g = LERP(low_g, high_g, interpolate_weight) + var/new_b = LERP(low_b, high_b, interpolate_weight) new_color = rgb(new_r, new_g, new_b) @@ -121,7 +121,10 @@ var/datum/planet/sif/planet_sif = null WEATHER_RAIN = new /datum/weather/sif/rain(), WEATHER_STORM = new /datum/weather/sif/storm(), WEATHER_HAIL = new /datum/weather/sif/hail(), - WEATHER_BLOOD_MOON = new /datum/weather/sif/blood_moon() + WEATHER_BLOOD_MOON = new /datum/weather/sif/blood_moon(), + WEATHER_EMBERFALL = new /datum/weather/sif/emberfall(), + WEATHER_ASH_STORM = new /datum/weather/sif/ash_storm(), + WEATHER_FALLOUT = new /datum/weather/sif/fallout() ) roundstart_weather_chances = list( WEATHER_CLEAR = 30, @@ -208,6 +211,8 @@ var/datum/planet/sif/planet_sif = null "It's starting to snow.", "The air feels much colder as snowflakes fall from above." ) + outdoor_sounds_type = /datum/looping_sound/weather/outside_snow + indoor_sounds_type = /datum/looping_sound/weather/inside_snow /datum/weather/sif/snow/process_effects() ..() @@ -237,6 +242,8 @@ var/datum/planet/sif/planet_sif = null "Strong winds howl around you as a blizzard appears.", "It starts snowing heavily, and it feels extremly cold now." ) + outdoor_sounds_type = /datum/looping_sound/weather/outside_blizzard + indoor_sounds_type = /datum/looping_sound/weather/inside_blizzard /datum/weather/sif/blizzard/process_effects() ..() @@ -265,6 +272,8 @@ var/datum/planet/sif/planet_sif = null transition_messages = list( "The sky is dark, and rain falls down upon you." ) +// outdoor_sounds_type = /datum/looping_sound/weather/rain +// indoor_sounds_type = /datum/looping_sound/weather/rain/indoors /datum/weather/sif/rain/process_effects() ..() @@ -310,6 +319,8 @@ var/datum/planet/sif/planet_sif = null "Loud thunder is heard in the distance.", "A bright flash heralds the approach of a storm." ) +// outdoor_sounds_type = /datum/looping_sound/weather/rain +// indoor_sounds_type = /datum/looping_sound/weather/rain/indoors transition_chances = list( @@ -417,7 +428,7 @@ var/datum/planet/sif/planet_sif = null if(show_message) to_chat(H, "Hail patters onto your umbrella.") continue - + var/target_zone = pick(BP_ALL) var/amount_blocked = H.run_armor_check(target_zone, "melee") var/amount_soaked = H.get_armor_soak(target_zone, "melee") @@ -435,6 +446,10 @@ var/datum/planet/sif/planet_sif = null if(show_message) to_chat(H, effect_message) + +// These never happen naturally, and are for adminbuse. + +// A culty weather. /datum/weather/sif/blood_moon name = "blood moon" light_modifier = 0.5 @@ -446,4 +461,106 @@ var/datum/planet/sif/planet_sif = null observed_message = "Everything is red. Something really wrong is going on." transition_messages = list( "The sky turns blood red!" - ) \ No newline at end of file + ) + outdoor_sounds_type = /datum/looping_sound/weather/wind + indoor_sounds_type = /datum/looping_sound/weather/wind/indoors + +// Ash and embers fall forever, such as from a volcano or something. +/datum/weather/sif/emberfall + name = "emberfall" + icon_state = "ashfall_light" + light_modifier = 0.7 + light_color = "#880000" + temp_high = 293.15 // 20c + temp_low = 283.15 // 10c + flight_failure_modifier = 20 + transition_chances = list( + WEATHER_EMBERFALL = 100 + ) + observed_message = "Soot, ash, and embers float down from above." + transition_messages = list( + "Gentle embers waft down around you like grotesque snow." + ) + outdoor_sounds_type = /datum/looping_sound/weather/wind + indoor_sounds_type = /datum/looping_sound/weather/wind/indoors + +// Like the above but a lot more harmful. +/datum/weather/sif/ash_storm + name = "ash storm" + icon_state = "ashfall_heavy" + light_modifier = 0.1 + light_color = "#FF0000" + temp_high = 323.15 // 50c + temp_low = 313.15 // 40c + flight_failure_modifier = 50 + transition_chances = list( + WEATHER_ASH_STORM = 100 + ) + observed_message = "All that can be seen is black smoldering ash." + transition_messages = list( + "Smoldering clouds of scorching ash billow down around you!" + ) + // Lets recycle. + outdoor_sounds_type = /datum/looping_sound/weather/outside_blizzard + indoor_sounds_type = /datum/looping_sound/weather/inside_blizzard + +/datum/weather/sif/ash_storm/process_effects() + ..() + for(var/thing in living_mob_list) + var/mob/living/L = thing + if(L.z in holder.our_planet.expected_z_levels) + var/turf/T = get_turf(L) + if(!T.outdoors) + continue // They're indoors, so no need to burn them with ash. + + L.inflict_heat_damage(rand(1, 3)) + + +// Totally radical. +/datum/weather/sif/fallout + name = "fallout" + icon_state = "fallout" + light_modifier = 0.7 + light_color = "#CCFFCC" + flight_failure_modifier = 30 + transition_chances = list( + WEATHER_FALLOUT = 100 + ) + observed_message = "Radioactive soot and ash rains down from the heavens." + transition_messages = list( + "Radioactive soot and ash start to float down around you, contaminating whatever they touch." + ) + outdoor_sounds_type = /datum/looping_sound/weather/wind + indoor_sounds_type = /datum/looping_sound/weather/wind/indoors + + // How much radiation a mob gets while on an outside tile. + var/direct_rad_low = RAD_LEVEL_LOW + var/direct_rad_high = RAD_LEVEL_MODERATE + + // How much radiation is bursted onto a random tile near a mob. + var/fallout_rad_low = RAD_LEVEL_HIGH + var/fallout_rad_high = RAD_LEVEL_VERY_HIGH + +/datum/weather/sif/fallout/process_effects() + ..() + for(var/thing in living_mob_list) + var/mob/living/L = thing + if(L.z in holder.our_planet.expected_z_levels) + irradiate_nearby_turf(L) + var/turf/T = get_turf(L) + if(!T.outdoors) + continue // They're indoors, so no need to irradiate them with fallout. + + L.rad_act(rand(direct_rad_low, direct_rad_high)) + +// This makes random tiles near people radioactive for awhile. +// Tiles far away from people are left alone, for performance. +/datum/weather/sif/fallout/proc/irradiate_nearby_turf(mob/living/L) + if(!istype(L)) + return + var/list/turfs = RANGE_TURFS(world.view, L) + var/turf/T = pick(turfs) // We get one try per tick. + if(!istype(T)) + return + if(T.outdoors) + radiation_repository.radiate(T, rand(fallout_rad_low, fallout_rad_high)) diff --git a/code/modules/planet/time.dm b/code/modules/planet/time.dm index 0b3008b668..d9c6642e6a 100644 --- a/code/modules/planet/time.dm +++ b/code/modules/planet/time.dm @@ -54,15 +54,15 @@ var/seconds = remaining_hour % seconds_in_minute / 10 - var/hour_text = num2text(Floor(hours)) + var/hour_text = num2text(FLOOR(hours, 1)) if(length(hour_text) < 2) hour_text = "0[hour_text]" // Add padding if needed, to look more like time2text(). - var/minute_text = num2text(Floor(minutes)) + var/minute_text = num2text(FLOOR(minutes, 1)) if(length(minute_text) < 2) minute_text = "0[minute_text]" - var/second_text = num2text(Floor(seconds)) + var/second_text = num2text(FLOOR(seconds, 1)) if(length(second_text) < 2) second_text = "0[second_text]" diff --git a/code/modules/planet/weather.dm b/code/modules/planet/weather.dm index a13cb87cc7..6e4447f4e9 100644 --- a/code/modules/planet/weather.dm +++ b/code/modules/planet/weather.dm @@ -25,13 +25,19 @@ /datum/weather_holder/proc/change_weather(var/new_weather) var/old_light_modifier = null - var/old_weather = null + var/datum/weather/old_weather = null if(current_weather) old_light_modifier = current_weather.light_modifier // We store the old one, so we can determine if recalculating the sun is needed. old_weather = current_weather current_weather = allowed_weather_types[new_weather] next_weather_shift = world.time + rand(current_weather.timer_low_bound, current_weather.timer_high_bound) MINUTES if(new_weather != old_weather) + if(istype(old_weather)) // At roundstart this is null. + old_weather.process_sounds() // Ensure that people who should hear the ending sound will hear it. + old_weather.stop_sounds() + + current_weather.process_sounds() // Same story, make sure the starting sound is heard. + current_weather.start_sounds() show_transition_message() update_icon_effects() @@ -40,7 +46,7 @@ our_planet.update_sun() log_debug("[our_planet.name]'s weather is now [new_weather], with a temperature of [temperature]°K ([temperature - T0C]°C | [temperature * 1.8 - 459.67]°F).") -/datum/weather_holder/proc/process() +/datum/weather_holder/process() if(world.time >= next_weather_shift) if(!current_weather) // Roundstart (hopefully). initialize_weather() @@ -48,7 +54,7 @@ advance_forecast() else current_weather.process_effects() - + current_weather.process_sounds() // Should only have to be called once. @@ -98,7 +104,7 @@ visuals.icon_state = current_weather.icon_state /datum/weather_holder/proc/update_temperature() - temperature = Interpolate(current_weather.temp_low, current_weather.temp_high, weight = our_planet.sun_position) + temperature = LERP(current_weather.temp_low, current_weather.temp_high, our_planet.sun_position) our_planet.needs_work |= PLANET_PROCESS_TEMP /datum/weather_holder/proc/get_weather_datum(desired_type) @@ -140,6 +146,18 @@ var/list/transition_messages = list()// List of messages shown to all outdoor mobs when this weather is transitioned to, for flavor. Not shown if already this weather. var/observed_message = null // What is shown to a player 'examining' the weather. + // Looping sound datums for weather sounds, both inside and outside. + var/datum/looping_sound/outdoor_sounds = null + var/datum/looping_sound/indoor_sounds = null + var/outdoor_sounds_type = null + var/indoor_sounds_type = null + +/datum/weather/New() + if(outdoor_sounds_type) + outdoor_sounds = new outdoor_sounds_type(list(), FALSE, TRUE) + if(indoor_sounds_type) + indoor_sounds = new indoor_sounds_type(list(), FALSE, TRUE) + /datum/weather/proc/process_effects() show_message = FALSE // Need to reset the show_message var, just in case if(effect_message) // Only bother with the code below if we actually need to display something @@ -148,6 +166,71 @@ show_message = TRUE // Tell the rest of the process that we need to make a message return +/datum/weather/proc/process_sounds() + if(!outdoor_sounds && !indoor_sounds) // No point bothering if we have no sounds. + return + + for(var/z_level in 1 to world.maxz) + for(var/a in GLOB.players_by_zlevel[z_level]) + var/mob/M = a + + // Check if the mob left the z-levels we control. If so, make the sounds stop for them. + if(!(z_level in holder.our_planet.expected_z_levels)) + hear_indoor_sounds(M, FALSE) + hear_outdoor_sounds(M, FALSE) + continue + + // Otherwise they should hear some sounds, depending on if they're inside or not. + var/turf/T = get_turf(M) + if(istype(T)) + if(T.outdoors) // Mob is currently outdoors. + hear_outdoor_sounds(M, TRUE) + hear_indoor_sounds(M, FALSE) + + else // Mob is currently indoors. + hear_outdoor_sounds(M, FALSE) + hear_indoor_sounds(M, TRUE) + + else + hear_indoor_sounds(M, FALSE) + hear_outdoor_sounds(M, FALSE) + +/datum/weather/proc/start_sounds() + if(outdoor_sounds) + outdoor_sounds.start() + if(indoor_sounds) + indoor_sounds.start() + +/datum/weather/proc/stop_sounds() + if(outdoor_sounds) + outdoor_sounds.stop() + if(indoor_sounds) + indoor_sounds.stop() + + // Stop everything just in case. + for(var/z_level in 1 to world.maxz) + for(var/a in GLOB.players_by_zlevel[z_level]) + hear_indoor_sounds(a, FALSE) + hear_outdoor_sounds(a, FALSE) + +// Adds or removes someone from the outdoor list. +/datum/weather/proc/hear_outdoor_sounds(mob/M, adding) + if(!outdoor_sounds) + return + if(adding) + outdoor_sounds.output_atoms |= M + return + outdoor_sounds.output_atoms -= M + +// Ditto, for indoors. +/datum/weather/proc/hear_indoor_sounds(mob/M, adding) + if(!indoor_sounds) + return + if(adding) + indoor_sounds.output_atoms |= M + return + indoor_sounds.output_atoms -= M + // All this does is hold the weather icon. /atom/movable/weather_visuals icon = 'icons/effects/weather.dmi' diff --git a/code/modules/power/antimatter/shielding.dm b/code/modules/power/antimatter/shielding.dm index 6a2dc58056..a3549b7a2f 100644 --- a/code/modules/power/antimatter/shielding.dm +++ b/code/modules/power/antimatter/shielding.dm @@ -74,9 +74,8 @@ proc/cardinalrange(var/center) return -/obj/machinery/am_shielding/CanPass(atom/movable/mover, turf/target, height=0, air_group=0) - if(air_group || (height==0)) return 1 - return 0 +/obj/machinery/am_shielding/CanPass(atom/movable/mover, turf/target) + return FALSE /obj/machinery/am_shielding/process() @@ -192,7 +191,6 @@ proc/cardinalrange(var/center) icon_state = "box" item_state = "electronic" w_class = ITEMSIZE_LARGE - flags = CONDUCT throwforce = 5 throw_speed = 1 throw_range = 2 diff --git a/code/modules/power/apc.dm b/code/modules/power/apc.dm index fcd737d82b..7aa085c198 100644 --- a/code/modules/power/apc.dm +++ b/code/modules/power/apc.dm @@ -199,6 +199,17 @@ return ..() +// APCs are pixel-shifted, so they need to be updated. +/obj/machinery/power/apc/set_dir(new_dir) + ..() + pixel_x = (src.dir & 3)? 0 : (src.dir == 4 ? 24 : -24) + pixel_y = (src.dir & 3)? (src.dir ==1 ? 24 : -24) : 0 + if(terminal) + terminal.disconnect_from_network() + terminal.set_dir(src.dir) // Terminal has same dir as master + terminal.connect_to_network() // Refresh the network the terminal is connected to. + return + /obj/machinery/power/apc/proc/energy_fail(var/duration) failure_timer = max(failure_timer, round(duration)) diff --git a/code/modules/power/breaker_box.dm b/code/modules/power/breaker_box.dm index 856697e033..cf38607a56 100644 --- a/code/modules/power/breaker_box.dm +++ b/code/modules/power/breaker_box.dm @@ -27,7 +27,7 @@ for(var/datum/nano_module/rcon/R in world) R.FindDevices() -/obj/machinery/power/breakerbox/initialize() +/obj/machinery/power/breakerbox/Initialize() . = ..() default_apply_parts() @@ -35,7 +35,7 @@ icon_state = "bbox_on" // Enabled on server startup. Used in substations to keep them in bypass mode. -/obj/machinery/power/breakerbox/activated/initialize() +/obj/machinery/power/breakerbox/activated/Initialize() . = ..() set_state(1) diff --git a/code/modules/power/cable.dm b/code/modules/power/cable.dm index 6717edf95d..4b8cb09a82 100644 --- a/code/modules/power/cable.dm +++ b/code/modules/power/cable.dm @@ -59,14 +59,13 @@ var/list/possible_cable_coil_colours = list( var/obj/machinery/power/breakerbox/breaker_box /obj/structure/cable/drain_power(var/drain_check, var/surge, var/amount = 0) - if(drain_check) return 1 - var/datum/powernet/PN = get_powernet() - if(!PN) return 0 + if(!powernet) + return 0 - return PN.draw_power(amount) + return powernet.draw_power(amount) /obj/structure/cable/yellow color = COLOR_YELLOW @@ -122,6 +121,35 @@ var/list/possible_cable_coil_colours = list( to_chat(user, "The cable is not powered.") return + +// Rotating cables requires d1 and d2 to be rotated +/obj/structure/cable/set_dir(new_dir) + if(powernet) + cut_cable_from_powernet() // Remove this cable from the powernet so the connections update + + // If d1 is 0, then it's a not, and doesn't rotate + if(d1) + // Using turn will maintain the cable's shape + // Taking the difference between current orientation and new one + d1 = turn(d1, dir2angle(new_dir) - dir2angle(dir)) + d2 = turn(d2, dir2angle(new_dir) - dir2angle(dir)) + + // Maintain d1 < d2 + if(d1 > d2) + var/temp = d1 + d1 = d2 + d2 = temp + + // ..() Cable sprite generation is dependent upon only d1 and d2. + // Actually changing dir will rotate the generated sprite to look wrong, but function correctly. + update_icon() + // Add this cable back to the powernet, if it's connected to any + if(d1) + mergeConnectedNetworks(d1) + else + mergeConnectedNetworksOnTurf() + mergeConnectedNetworks(d2) + /////////////////////////////////// // General procedures /////////////////////////////////// @@ -139,10 +167,6 @@ var/list/possible_cable_coil_colours = list( icon_state = "[d1]-[d2]" alpha = invisibility ? 127 : 255 -// returns the powernet this cable belongs to -/obj/structure/cable/proc/get_powernet() //TODO: remove this as it is obsolete - return powernet - //Telekinesis has no effect on a cable /obj/structure/cable/attack_tk(mob/user) return @@ -214,7 +238,7 @@ var/list/possible_cable_coil_colours = list( shock(user, 5, 0.2) else - if (W.flags & CONDUCT) + if(!(W.flags & NOCONDUCT)) shock(user, 50, 0.7) src.add_fingerprint(user) @@ -487,7 +511,6 @@ obj/structure/cable/proc/cableColor(var/colorC) throw_speed = 2 throw_range = 5 matter = list(DEFAULT_WALL_MATERIAL = 50, "glass" = 20) - flags = CONDUCT slot_flags = SLOT_BELT item_state = "coil" attack_verb = list("whipped", "lashed", "disciplined", "flogged") @@ -532,7 +555,7 @@ obj/structure/cable/proc/cableColor(var/colorC) if(!S || S.robotic < ORGAN_ROBOT || S.open == 3) return ..() - var/use_amt = min(src.amount, ceil(S.burn_dam/5), 5) + var/use_amt = min(src.amount, CEILING(S.burn_dam/5, 1), 5) if(can_use(use_amt)) if(S.robo_repair(5*use_amt, BURN, "some damaged wiring", src, user)) src.use(use_amt) @@ -895,20 +918,36 @@ obj/structure/cable/proc/cableColor(var/colorC) //Endless alien cable coil + +/datum/category_item/catalogue/anomalous/precursor_a/alien_wire + name = "Precursor Alpha Object - Recursive Spool" + desc = "Upon visual inspection, this merely appears to be a \ + spool for silver-colored cable. If one were to use this for \ + some time, however, it would become apparent that the cables \ + inside the spool appear to coil around the spool endlessly, \ + suggesting an infinite length of wire.\ +

      \ + In reality, an infinite amount of something within a finite space \ + would likely not be able to exist. Instead, the spool likely has \ + some method of creating new wire as it is unspooled. How this is \ + accomplished without an apparent source of material would require \ + further study." + value = CATALOGUER_REWARD_EASY + /obj/item/stack/cable_coil/alien name = "alien spool" + desc = "A spool of cable. No matter how hard you try, you can never seem to get to the end." + catalogue_data = list(/datum/category_item/catalogue/anomalous/precursor_a/alien_wire) icon = 'icons/obj/abductor.dmi' icon_state = "coil" amount = MAXCOIL max_amount = MAXCOIL color = COLOR_SILVER - desc = "A spool of cable. No matter how hard you try, you can never seem to get to the end." throwforce = 10 w_class = ITEMSIZE_SMALL throw_speed = 2 throw_range = 5 matter = list(DEFAULT_WALL_MATERIAL = 50, "glass" = 20) - flags = CONDUCT slot_flags = SLOT_BELT attack_verb = list("whipped", "lashed", "disciplined", "flogged") stacktype = null diff --git a/code/modules/power/cell.dm b/code/modules/power/cell.dm index 2a18becdc1..238aaa3196 100644 --- a/code/modules/power/cell.dm +++ b/code/modules/power/cell.dm @@ -34,11 +34,11 @@ charge = maxcharge update_icon() if(self_recharge) - processing_objects |= src + START_PROCESSING(SSobj, src) /obj/item/weapon/cell/Destroy() if(self_recharge) - processing_objects -= src + STOP_PROCESSING(SSobj, src) return ..() /obj/item/weapon/cell/get_cell() diff --git a/code/modules/power/cells/device_cells.dm b/code/modules/power/cells/device_cells.dm index 9cacf67073..f313bc8edf 100644 --- a/code/modules/power/cells/device_cells.dm +++ b/code/modules/power/cells/device_cells.dm @@ -20,7 +20,7 @@ maxcharge = 2400 charge_amount = 20 -/obj/item/weapon/cell/device/weapon/empty/initialize() +/obj/item/weapon/cell/device/weapon/empty/Initialize() . = ..() charge = 0 update_icon() @@ -37,9 +37,25 @@ charge_amount = 160 //Recharges a lot more quickly... charge_delay = 100 //... but it takes a while to get started + +/datum/category_item/catalogue/anomalous/precursor_a/alien_void_cell + name = "Precursor Alpha Object - Void Cell" + desc = "This is a very enigmatic and small machine. It is able to output a direct electrical current \ + from itself to another device or machine that it is connected to. Its shape has a similar form as \ + a battery cell, which might imply that the species who created these had a desire for some form of \ + a modular power supply.\ +

      \ + These appear to be limited in throughput, only able to put out so much energy at a time. It is unknown \ + if this was intentional, or was a design constraint that the creators of this object had to work around. \ + Regardless, it will likely function inside of various devices which run off of conventional power cells.\ +

      \ + Scanning similar objects may yield more information." + value = CATALOGUER_REWARD_EASY + /obj/item/weapon/cell/device/weapon/recharge/alien name = "void cell" desc = "An alien technology that produces energy seemingly out of nowhere. Its small, cylinderal shape means it might be able to be used with human technology, perhaps?" + catalogue_data = list(/datum/category_item/catalogue/anomalous/precursor_a/alien_void_cell) icon = 'icons/obj/abductor.dmi' icon_state = "cell" charge_amount = 120 // 5%. diff --git a/code/modules/power/cells/power_cells.dm b/code/modules/power/cells/power_cells.dm index cec7cef512..07eb9996a3 100644 --- a/code/modules/power/cells/power_cells.dm +++ b/code/modules/power/cells/power_cells.dm @@ -102,7 +102,7 @@ var/amount = 100 var/used = FALSE -/obj/item/device/fbp_backup_cell/initialize() +/obj/item/device/fbp_backup_cell/Initialize() overlays += image(icon,"[icon_state]1") /obj/item/device/fbp_backup_cell/attack(mob/living/M as mob, mob/user as mob) diff --git a/code/modules/power/fusion/core/_core.dm b/code/modules/power/fusion/core/_core.dm index 329170be44..99b0346e62 100644 --- a/code/modules/power/fusion/core/_core.dm +++ b/code/modules/power/fusion/core/_core.dm @@ -27,12 +27,12 @@ var/list/fusion_cores = list() /obj/machinery/power/fusion_core/mapped anchored = 1 -/obj/machinery/power/fusion_core/initialize() +/obj/machinery/power/fusion_core/Initialize() . = ..() fusion_cores += src default_apply_parts() -/obj/machinery/power/fusion_core/mapped/initialize() +/obj/machinery/power/fusion_core/mapped/Initialize() . = ..() connect_to_network() @@ -94,7 +94,7 @@ var/list/fusion_cores = list() . = owned_field.bullet_act(Proj) /obj/machinery/power/fusion_core/proc/set_strength(var/value) - value = Clamp(value, MIN_FIELD_STR, MAX_FIELD_STR) + value = CLAMP(value, MIN_FIELD_STR, MAX_FIELD_STR) field_strength = value active_power_usage = 5 * value if(owned_field) diff --git a/code/modules/power/fusion/core/core_control.dm b/code/modules/power/fusion/core/core_control.dm index 48e3a8c87c..dc5e16c87e 100644 --- a/code/modules/power/fusion/core/core_control.dm +++ b/code/modules/power/fusion/core/core_control.dm @@ -11,7 +11,7 @@ /obj/machinery/computer/fusion_core_control/attackby(var/obj/item/thing, var/mob/user) ..() - if(thing.is_multitool()) //VOREStation Edit + if(istype(thing, /obj/item/device/multitool)) var/new_ident = input("Enter a new ident tag.", "Core Control", id_tag) as null|text if(new_ident && user.Adjacent(src)) id_tag = new_ident @@ -140,7 +140,7 @@ return if(href_list["access_device"]) - var/idx = Clamp(text2num(href_list["toggle_active"]), 1, connected_devices.len) + var/idx = CLAMP(text2num(href_list["toggle_active"]), 1, connected_devices.len) cur_viewed_device = connected_devices[idx] updateUsrDialog() return 1 diff --git a/code/modules/power/fusion/core/core_field.dm b/code/modules/power/fusion/core/core_field.dm index f5d85fb4bf..f0eca3add6 100644 --- a/code/modules/power/fusion/core/core_field.dm +++ b/code/modules/power/fusion/core/core_field.dm @@ -117,7 +117,7 @@ catcher.SetSize(7) particle_catchers.Add(catcher) - processing_objects.Add(src) + START_PROCESSING(SSobj, src) /obj/effect/fusion_em_field/process() //make sure the field generator is still intact @@ -171,8 +171,8 @@ use_power = light_max_power else var/temp_mod = ((plasma_temperature-5000)/20000) - use_range = light_min_range + ceil((light_max_range-light_min_range)*temp_mod) - use_power = light_min_power + ceil((light_max_power-light_min_power)*temp_mod) + use_range = light_min_range + CEILING((light_max_range-light_min_range)*temp_mod, 1) + use_power = light_min_power + CEILING((light_max_power-light_min_power)*temp_mod, 1) if(last_range != use_range || last_power != use_power) set_light(use_range,use_power) @@ -318,8 +318,8 @@ /obj/effect/fusion_em_field/proc/Radiate() if(istype(loc, /turf)) - var/empsev = max(1, min(3, ceil(size/2))) - for(var/atom/movable/AM in range(max(1,Floor(size/2)), loc)) + var/empsev = max(1, min(3, CEILING(size/2, 1))) + for(var/atom/movable/AM in range(max(1,FLOOR(size/2, 1)), loc)) if(AM == src || AM == owned_core || !AM.simulated) continue @@ -386,7 +386,7 @@ //determine a random amount to actually react this cycle, and remove it from the standard pool //this is a hack, and quite nonrealistic :( for(var/reactant in react_pool) - react_pool[reactant] = rand(Floor(react_pool[reactant]/2),react_pool[reactant]) + react_pool[reactant] = rand(FLOOR(react_pool[reactant]/2, 1),react_pool[reactant]) dormant_reactant_quantities[reactant] -= react_pool[reactant] if(!react_pool[reactant]) react_pool -= reactant @@ -496,7 +496,7 @@ if(owned_core) owned_core.owned_field = null owned_core = null - processing_objects.Remove(src) + STOP_PROCESSING(SSobj, src) . = ..() /obj/effect/fusion_em_field/bullet_act(var/obj/item/projectile/Proj) @@ -574,7 +574,7 @@ /obj/effect/fusion_em_field/proc/Rupture() visible_message("\The [src] shudders like a dying animal before flaring to eye-searing brightness and rupturing!") set_light(15, 15, "#CCCCFF") - empulse(get_turf(src), ceil(plasma_temperature/1000), ceil(plasma_temperature/300)) + empulse(get_turf(src), CEILING(plasma_temperature/1000, 1), CEILING(plasma_temperature/300, 1)) global_announcer.autosay("WARNING: FIELD RUPTURE IMMINENT!", "Containment Monitor") RadiateAll() var/list/things_in_range = range(10, owned_core) @@ -584,7 +584,7 @@ turfs_in_range.Add(T) explosion(pick(things_in_range), -1, 5, 5, 5) - empulse(pick(things_in_range), ceil(plasma_temperature/1000), ceil(plasma_temperature/300)) + empulse(pick(things_in_range), CEILING(plasma_temperature/1000, 1), CEILING(plasma_temperature/300, 1)) spawn(25) explosion(pick(things_in_range), -1, 5, 5, 5) spawn(25) @@ -655,7 +655,7 @@ /obj/effect/fusion_em_field/proc/BluespaceQuenchEvent() //!!FUN!! causes a number of explosions in an area around the core. Will likely destory or heavily damage the reactor. visible_message("\The [src] shudders like a dying animal before flaring to eye-searing brightness and rupturing!") set_light(15, 15, "#CCCCFF") - empulse(get_turf(src), ceil(plasma_temperature/1000), ceil(plasma_temperature/300)) + empulse(get_turf(src), CEILING(plasma_temperature/1000, 1), CEILING(plasma_temperature/300, 1)) global_announcer.autosay("WARNING: FIELD RUPTURE IMMINENT!", "Containment Monitor") RadiateAll() var/list/things_in_range = range(10, owned_core) @@ -665,7 +665,7 @@ turfs_in_range.Add(T) for(var/loopcount = 1 to 10) explosion(pick(things_in_range), -1, 5, 5, 5) - empulse(pick(things_in_range), ceil(plasma_temperature/1000), ceil(plasma_temperature/300)) + empulse(pick(things_in_range), CEILING(plasma_temperature/1000, 1), CEILING(plasma_temperature/300, 1)) Destroy() owned_core.Shutdown() return diff --git a/code/modules/power/fusion/fuel_assembly/fuel_assembly.dm b/code/modules/power/fusion/fuel_assembly/fuel_assembly.dm index 29d9362015..4149274351 100644 --- a/code/modules/power/fusion/fuel_assembly/fuel_assembly.dm +++ b/code/modules/power/fusion/fuel_assembly/fuel_assembly.dm @@ -17,7 +17,7 @@ fuel_colour = _colour ..(newloc) -/obj/item/weapon/fuel_assembly/initialize() +/obj/item/weapon/fuel_assembly/Initialize() . = ..() var/material/material = get_material_by_name(fuel_type) if(istype(material)) @@ -28,7 +28,7 @@ if(material.radioactivity) radioactivity = material.radioactivity desc += " It is warm to the touch." - processing_objects += src + START_PROCESSING(SSobj, src) if(material.luminescence) set_light(material.luminescence, material.luminescence, material.icon_colour) else @@ -46,10 +46,10 @@ return PROCESS_KILL if(istype(loc, /turf)) - radiation_repository.radiate(src, max(1,ceil(radioactivity/30))) + radiation_repository.radiate(src, max(1,CEILING(radioactivity/30, 1))) /obj/item/weapon/fuel_assembly/Destroy() - processing_objects -= src + STOP_PROCESSING(SSobj, src) return ..() // Mapper shorthand. diff --git a/code/modules/power/fusion/fuel_assembly/fuel_compressor.dm b/code/modules/power/fusion/fuel_assembly/fuel_compressor.dm index 375af68696..d38fd76e86 100644 --- a/code/modules/power/fusion/fuel_assembly/fuel_compressor.dm +++ b/code/modules/power/fusion/fuel_assembly/fuel_compressor.dm @@ -7,7 +7,7 @@ circuit = /obj/item/weapon/circuitboard/fusion_fuel_compressor -/obj/machinery/fusion_fuel_compressor/initialize() +/obj/machinery/fusion_fuel_compressor/Initialize() . = ..() default_apply_parts() diff --git a/code/modules/power/fusion/fuel_assembly/fuel_control.dm b/code/modules/power/fusion/fuel_assembly/fuel_control.dm index f0443b5425..6825f9ba37 100644 --- a/code/modules/power/fusion/fuel_assembly/fuel_control.dm +++ b/code/modules/power/fusion/fuel_assembly/fuel_control.dm @@ -96,7 +96,7 @@ /obj/machinery/computer/fusion_fuel_control/attackby(var/obj/item/W, var/mob/user) ..() - if(W.is_multitool()) //VOREStation Edit + if(istype(W, /obj/item/device/multitool)) var/new_ident = input("Enter a new ident tag.", "Fuel Control", id_tag) as null|text if(new_ident && user.Adjacent(src)) id_tag = new_ident diff --git a/code/modules/power/fusion/fuel_assembly/fuel_injector.dm b/code/modules/power/fusion/fuel_assembly/fuel_injector.dm index 79794ff069..80a512b91b 100644 --- a/code/modules/power/fusion/fuel_assembly/fuel_injector.dm +++ b/code/modules/power/fusion/fuel_assembly/fuel_injector.dm @@ -18,7 +18,7 @@ var/list/fuel_injectors = list() var/injecting = 0 var/obj/item/weapon/fuel_assembly/cur_assembly -/obj/machinery/fusion_fuel_injector/initialize() +/obj/machinery/fusion_fuel_injector/Initialize() . = ..() fuel_injectors += src default_apply_parts() @@ -134,22 +134,22 @@ var/list/fuel_injectors = list() else StopInjecting() -/obj/machinery/fusion_fuel_injector/verb/rotate_clock() +/obj/machinery/fusion_fuel_injector/verb/rotate_clockwise() set category = "Object" - set name = "Rotate Generator (Clockwise)" + set name = "Rotate Generator Clockwise" set src in view(1) if (usr.incapacitated() || usr.restrained() || anchored) return - src.dir = turn(src.dir, -90) + src.set_dir(turn(src.dir, 270)) -/obj/machinery/fusion_fuel_injector/verb/rotate_anticlock() +/obj/machinery/fusion_fuel_injector/verb/rotate_counterclockwise() set category = "Object" - set name = "Rotate Generator (Counter-clockwise)" + set name = "Rotate Generator Counterclockwise" set src in view(1) if (usr.incapacitated() || usr.restrained() || anchored) return - src.dir = turn(src.dir, 90) + src.set_dir(turn(src.dir, 90)) diff --git a/code/modules/power/fusion/fusion_particle_catcher.dm b/code/modules/power/fusion/fusion_particle_catcher.dm index 3651285485..78e4b8b950 100644 --- a/code/modules/power/fusion/fusion_particle_catcher.dm +++ b/code/modules/power/fusion/fusion_particle_catcher.dm @@ -37,7 +37,7 @@ update_icon() return 0 -/obj/effect/fusion_particle_catcher/CanPass(var/atom/movable/mover, var/turf/target, var/height=0, var/air_group=0) +/obj/effect/fusion_particle_catcher/CanPass(atom/movable/mover, turf/target) if(istype(mover, /obj/effect/accelerated_particle) || istype(mover, /obj/item/projectile/beam)) return !density - return 1 + return TRUE diff --git a/code/modules/power/fusion/gyrotron/gyrotron.dm b/code/modules/power/fusion/gyrotron/gyrotron.dm index 23697d2449..539e9cbda6 100644 --- a/code/modules/power/fusion/gyrotron/gyrotron.dm +++ b/code/modules/power/fusion/gyrotron/gyrotron.dm @@ -20,7 +20,7 @@ var/list/gyrotrons = list() anchored = 1 state = 2 -/obj/machinery/power/emitter/gyrotron/initialize() +/obj/machinery/power/emitter/gyrotron/Initialize() gyrotrons += src active_power_usage = mega_energy * 50000 default_apply_parts() diff --git a/code/modules/power/fusion/gyrotron/gyrotron_control.dm b/code/modules/power/fusion/gyrotron/gyrotron_control.dm index cf8cae9d41..4f5abdbd3b 100644 --- a/code/modules/power/fusion/gyrotron/gyrotron_control.dm +++ b/code/modules/power/fusion/gyrotron/gyrotron_control.dm @@ -73,7 +73,7 @@ if(!new_val) to_chat(usr, "That's not a valid number.") return 1 - G.mega_energy = Clamp(new_val, 1, 50) + G.mega_energy = CLAMP(new_val, 1, 50) G.active_power_usage = G.mega_energy * 1500 updateUsrDialog() return 1 @@ -83,7 +83,7 @@ if(!new_val) to_chat(usr, "That's not a valid number.") return 1 - G.rate = Clamp(new_val, 1, 10) + G.rate = CLAMP(new_val, 1, 10) updateUsrDialog() return 1 @@ -96,7 +96,7 @@ /obj/machinery/computer/gyrotron_control/attackby(var/obj/item/W, var/mob/user) ..() - if(W.is_multitool()) //VOREStation Edit + if(istype(W, /obj/item/device/multitool)) var/new_ident = input("Enter a new ident tag.", "Gyrotron Control", id_tag) as null|text if(new_ident && user.Adjacent(src)) id_tag = new_ident diff --git a/code/modules/power/generator.dm b/code/modules/power/generator.dm index 02095e0f81..bb808a49e2 100644 --- a/code/modules/power/generator.dm +++ b/code/modules/power/generator.dm @@ -22,12 +22,18 @@ var/lastgen2 = 0 var/effective_gen = 0 var/lastgenlev = 0 + var/datum/looping_sound/generator/soundloop -/obj/machinery/power/generator/New() - ..() +/obj/machinery/power/generator/Initialize() + soundloop = new(list(src), FALSE) desc = initial(desc) + " Rated for [round(max_power/1000)] kW." spawn(1) reconnect() + return ..() + +/obj/machinery/power/generator/Destroy() + QDEL_NULL(soundloop) + return ..() //generators connect in dir and reverse_dir(dir) directions //mnemonic to determine circulator/generator directions: the cirulators orbit clockwise around the generator @@ -124,6 +130,13 @@ stored_energy -= lastgen1 effective_gen = (lastgen1 + lastgen2) / 2 + // Sounds. + if(effective_gen > (max_power * 0.05)) // More than 5% and sounds start. + soundloop.start() + soundloop.volume = LERP(1, 40, effective_gen / max_power) + else + soundloop.stop() + // update icon overlays and power usage only if displayed level has changed var/genlev = max(0, min( round(11*effective_gen / max_power), 11)) if(effective_gen > 100 && genlev == 0) @@ -215,9 +228,19 @@ updateicon() -/obj/machinery/power/generator/verb/rotate_clock() +/obj/machinery/power/generator/verb/rotate_clockwise() set category = "Object" - set name = "Rotate Generator (Clockwise)" + set name = "Rotate Generator Clockwise" + set src in view(1) + + if (usr.stat || usr.restrained() || anchored) + return + + src.set_dir(turn(src.dir, 270)) + +/obj/machinery/power/generator/verb/rotate_counterclockwise() + set category = "Object" + set name = "Rotate Generator Counterclockwise" set src in view(1) if (usr.stat || usr.restrained() || anchored) @@ -225,16 +248,6 @@ src.set_dir(turn(src.dir, 90)) -/obj/machinery/power/generator/verb/rotate_anticlock() - set category = "Object" - set name = "Rotate Generator (Counterclockwise)" - set src in view(1) - - if (usr.stat || usr.restrained() || anchored) - return - - src.set_dir(turn(src.dir, -90)) - /obj/machinery/power/generator/power_spike() // if(!effective_gen >= max_power / 2 && powernet) // Don't make a spike if we're not making a whole lot of power. // return diff --git a/code/modules/power/lighting.dm b/code/modules/power/lighting.dm index 9bd1a6fe84..3b7855c66e 100644 --- a/code/modules/power/lighting.dm +++ b/code/modules/power/lighting.dm @@ -179,6 +179,11 @@ var/shows_alerts = TRUE // Flag for if this fixture should show alerts. Make sure icon states exist! var/current_alert = null // Which alert are we showing right now? + var/auto_flicker = FALSE // If true, will constantly flicker, so long as someone is around to see it (otherwise its a waste of CPU). + +/obj/machinery/light/flicker + auto_flicker = TRUE + // the smaller bulb light fixture /obj/machinery/light/small @@ -191,6 +196,9 @@ light_type = /obj/item/weapon/light/bulb shows_alerts = FALSE +/obj/machinery/light/small/flicker + auto_flicker = TRUE + /obj/machinery/light/flamp icon = 'icons/obj/lighting.dmi' icon_state = "flamp1" @@ -205,10 +213,18 @@ shows_alerts = FALSE var/lamp_shade = 1 +/obj/machinery/light/flamp/flicker + auto_flicker = TRUE + + /obj/machinery/light/small/emergency brightness_range = 4 brightness_color = "#da0205" +/obj/machinery/light/small/emergency/flicker + auto_flicker = TRUE + + /obj/machinery/light/spot name = "spotlight" fitting = "large tube" @@ -217,6 +233,10 @@ brightness_range = 12 brightness_power = 0.9 +/obj/machinery/light/spot/flicker + auto_flicker = TRUE + + /obj/machinery/light/built/New() status = LIGHT_EMPTY update(0) @@ -333,7 +353,8 @@ if(on) if(light_range != brightness_range || light_power != brightness_power || light_color != brightness_color) - switchcount++ + if(!auto_flicker) + switchcount++ if(rigged) if(status == LIGHT_OK && trigger) @@ -450,7 +471,7 @@ if(M == user) continue M.show_message("[user.name] smashed the light!", 3, "You hear a tinkle of breaking glass", 2) - if(on && (W.flags & CONDUCT)) + if(on && !(W.flags & NOCONDUCT)) //if(!user.mutations & COLD_RESISTANCE) if (prob(12)) electrocute_mob(user, get_area(src), src, 0.3) @@ -488,7 +509,7 @@ return user << "You stick \the [W] into the light socket!" - if(has_power() && (W.flags & CONDUCT)) + if(has_power() && !(W.flags & NOCONDUCT)) var/datum/effect/effect/system/spark_spread/s = new /datum/effect/effect/system/spark_spread s.set_up(3, 1, src) s.start() @@ -716,6 +737,13 @@ if(on) use_power(light_range * LIGHTING_POWER_FACTOR, LIGHT) + if(auto_flicker && !flickering) + if(check_for_player_proximity(src, radius = 12, ignore_ghosts = FALSE, ignore_afk = TRUE)) + seton(TRUE) // Lights must be on to flicker. + flicker(5) + else + seton(FALSE) // Otherwise keep it dark and spooky for when someone shows up. + // called when area power state changes /obj/machinery/light/power_change() diff --git a/code/modules/power/lightswitch_vr.dm b/code/modules/power/lightswitch_vr.dm index 937660dcbc..db1881c4b3 100644 --- a/code/modules/power/lightswitch_vr.dm +++ b/code/modules/power/lightswitch_vr.dm @@ -58,7 +58,7 @@ var/x_offset = 26 var/y_offset = 26 -/obj/structure/construction/initialize(var/mapload, var/ndir, var/building = FALSE) +/obj/structure/construction/Initialize(var/mapload, var/ndir, var/building = FALSE) . = ..() if(ndir) set_dir(ndir) @@ -83,7 +83,7 @@ /obj/structure/construction/attackby(obj/item/weapon/W as obj, mob/user as mob) add_fingerprint(user) - if(W.is_welder()) + if(istype(W, /obj/item/weapon/weldingtool)) if(stage == FRAME_UNFASTENED) var/obj/item/weapon/weldingtool/WT = W if(!WT.remove_fuel(0, user)) @@ -117,7 +117,7 @@ update_icon() return - else if(W.is_cable_coil()) + else if(istype(W, /obj/item/stack/cable_coil)) if (stage == FRAME_FASTENED) var/obj/item/stack/cable_coil/coil = W if (coil.use(1)) diff --git a/code/modules/power/port_gen.dm b/code/modules/power/port_gen.dm index 35a860ec1b..6563cb7fdb 100644 --- a/code/modules/power/port_gen.dm +++ b/code/modules/power/port_gen.dm @@ -110,7 +110,7 @@ var/temperature = 0 //The current temperature var/overheating = 0 //if this gets high enough the generator explodes -/obj/machinery/power/port_gen/pacman/initialize() +/obj/machinery/power/port_gen/pacman/Initialize() . = ..() if(anchored) connect_to_network() diff --git a/code/modules/power/singularity/act.dm b/code/modules/power/singularity/act.dm index 5998906c66..5d33ee440e 100644 --- a/code/modules/power/singularity/act.dm +++ b/code/modules/power/singularity/act.dm @@ -75,7 +75,6 @@ return /obj/machinery/power/supermatter/shard/singularity_act() - src.forceMove(null) qdel(src) return 5000 @@ -90,7 +89,6 @@ SetUniversalState(/datum/universal_state/supermatter_cascade) log_admin("New super singularity made by eating a SM crystal [prints]. Last touched by [src.fingerprintslast].") message_admins("New super singularity made by eating a SM crystal [prints]. Last touched by [src.fingerprintslast].") - src.forceMove(null) qdel(src) return 50000 @@ -115,6 +113,15 @@ ChangeTurf(get_base_turf_by_area(src)) return 2 +/turf/simulated/floor/singularity_pull(S, current_size) + if(flooring && current_size >= STAGE_THREE) + if(prob(current_size / 2)) + var/leave_tile = TRUE + if(broken || burnt || flooring.flags & TURF_IS_FRAGILE) + leave_tile = FALSE + playsound(src, 'sound/items/crowbar.ogg', 50, 1) + make_plating(leave_tile) + /turf/simulated/wall/singularity_pull(S, current_size) if(!reinf_material) diff --git a/code/modules/power/singularity/emitter.dm b/code/modules/power/singularity/emitter.dm index ac4401387a..f847813923 100644 --- a/code/modules/power/singularity/emitter.dm +++ b/code/modules/power/singularity/emitter.dm @@ -30,18 +30,18 @@ var/integrity = 80 -/obj/machinery/power/emitter/verb/rotate() - set name = "Rotate" +/obj/machinery/power/emitter/verb/rotate_clockwise() + set name = "Rotate Emitter Clockwise" set category = "Object" set src in oview(1) if (src.anchored || usr:stat) - usr << "It is fastened to the floor!" + to_chat(usr, "It is fastened to the floor!") return 0 - src.set_dir(turn(src.dir, 90)) + src.set_dir(turn(src.dir, 270)) return 1 -/obj/machinery/power/emitter/initialize() +/obj/machinery/power/emitter/Initialize() . = ..() if(state == 2 && anchored) connect_to_network() @@ -142,7 +142,8 @@ var/obj/item/projectile/beam/emitter/A = get_emitter_beam() A.damage = round(power_per_shot/EMITTER_DAMAGE_POWER_TRANSFER) - A.launch( get_step(src.loc, src.dir) ) + A.firer = src + A.fire(dir2angle(dir)) /obj/machinery/power/emitter/attackby(obj/item/W, mob/user) @@ -207,7 +208,7 @@ return if(istype(W, /obj/item/stack/material) && W.get_material_name() == DEFAULT_WALL_MATERIAL) - var/amt = Ceiling(( initial(integrity) - integrity)/10) + var/amt = CEILING(( initial(integrity) - integrity)/10, 1) if(!amt) to_chat(user, "\The [src] is already fully repaired.") return diff --git a/code/modules/power/singularity/particle_accelerator/particle_accelerator.dm b/code/modules/power/singularity/particle_accelerator/particle_accelerator.dm index e89ff0dcce..7460830f21 100644 --- a/code/modules/power/singularity/particle_accelerator/particle_accelerator.dm +++ b/code/modules/power/singularity/particle_accelerator/particle_accelerator.dm @@ -89,24 +89,24 @@ So, hopefully this is helpful if any more icons are to be added/changed/wonderin return -/obj/structure/particle_accelerator/verb/rotate() +/obj/structure/particle_accelerator/verb/rotate_clockwise() set name = "Rotate Clockwise" set category = "Object" set src in oview(1) if (src.anchored || usr:stat) - usr << "It is fastened to the floor!" + to_chat(usr, "It is fastened to the floor!") return 0 src.set_dir(turn(src.dir, 270)) return 1 -/obj/structure/particle_accelerator/verb/rotateccw() +/obj/structure/particle_accelerator/verb/rotate_counterclockwise() set name = "Rotate Counter Clockwise" set category = "Object" set src in oview(1) if (src.anchored || usr:stat) - usr << "It is fastened to the floor!" + to_chat(usr, "It is fastened to the floor!") return 0 src.set_dir(turn(src.dir, 90)) return 1 @@ -269,24 +269,24 @@ So, hopefully this is helpful if any more icons are to be added/changed/wonderin var/desc_holder = null -/obj/machinery/particle_accelerator/verb/rotate() +/obj/machinery/particle_accelerator/verb/rotate_clockwise() set name = "Rotate Clockwise" set category = "Object" set src in oview(1) if (src.anchored || usr:stat) - usr << "It is fastened to the floor!" + to_chat(usr, "It is fastened to the floor!") return 0 src.set_dir(turn(src.dir, 270)) return 1 -/obj/machinery/particle_accelerator/verb/rotateccw() +/obj/machinery/particle_accelerator/verb/rotate_counterclockwise() set name = "Rotate Counter-Clockwise" set category = "Object" set src in oview(1) if (src.anchored || usr:stat) - usr << "It is fastened to the floor!" + to_chat(usr, "It is fastened to the floor!") return 0 src.set_dir(turn(src.dir, 90)) return 1 @@ -333,11 +333,9 @@ So, hopefully this is helpful if any more icons are to be added/changed/wonderin else return - /obj/machinery/particle_accelerator/proc/update_state() return 0 - /obj/machinery/particle_accelerator/proc/process_tool_hit(var/obj/item/O, var/mob/user) if(!(O) || !(user)) return 0 diff --git a/code/modules/power/singularity/singularity.dm b/code/modules/power/singularity/singularity.dm index 878e92b072..3768ab9535 100644 --- a/code/modules/power/singularity/singularity.dm +++ b/code/modules/power/singularity/singularity.dm @@ -37,14 +37,14 @@ GLOBAL_LIST_BOILERPLATE(all_singularities, /obj/singularity) energy = starting_energy ..() - processing_objects += src + START_PROCESSING(SSobj, src) for(var/obj/machinery/power/singularity_beacon/singubeacon in machines) if(singubeacon.active) target = singubeacon break /obj/singularity/Destroy() - processing_objects -= src + STOP_PROCESSING(SSobj, src) return ..() /obj/singularity/attack_hand(mob/user as mob) diff --git a/code/modules/power/solar.dm b/code/modules/power/solar.dm index 2d9f1803ba..d5cf8ef993 100644 --- a/code/modules/power/solar.dm +++ b/code/modules/power/solar.dm @@ -1,7 +1,7 @@ #define SOLAR_MAX_DIST 40 -var/solar_gen_rate = 1500 -var/list/solars_list = list() +GLOBAL_VAR_INIT(solar_gen_rate, 1500) +GLOBAL_LIST_EMPTY(solars_list) /obj/machinery/power/solar name = "solar panel" @@ -25,8 +25,8 @@ var/list/solars_list = list() /obj/machinery/power/solar/drain_power() return -1 -/obj/machinery/power/solar/New(var/turf/loc, var/obj/item/solar_assembly/S) - ..(loc) +/obj/machinery/power/solar/Initialize(mapload, obj/item/solar_assembly/S) + . = ..() Make(S) connect_to_network() @@ -51,7 +51,7 @@ var/list/solars_list = list() if(!S) S = new /obj/item/solar_assembly(src) S.glass_type = /obj/item/stack/material/glass - S.anchored = 1 + S.anchored = TRUE S.loc = src if(S.glass_type == /obj/item/stack/material/glass/reinforced) //if the panel is in reinforced glass health *= 2 //this need to be placed here, because panels already on the map don't have an assembly linked to @@ -102,18 +102,18 @@ var/list/solars_list = list() src.set_dir(angle2dir(adir)) return -//calculates the fraction of the sunlight that the panel recieves +//calculates the fraction of the SSsun.sunlight that the panel recieves /obj/machinery/power/solar/proc/update_solar_exposure() - if(!sun) + if(!SSsun.sun) return if(obscured) sunfrac = 0 return - //find the smaller angle between the direction the panel is facing and the direction of the sun (the sign is not important here) - var/p_angle = min(abs(adir - sun.angle), 360 - abs(adir - sun.angle)) + //find the smaller angle between the direction the panel is facing and the direction of the SSsun.sun (the sign is not important here) + var/p_angle = min(abs(adir - SSsun.sun.angle), 360 - abs(adir - SSsun.sun.angle)) - if(p_angle > 90) // if facing more than 90deg from sun, zero output + if(p_angle > 90) // if facing more than 90deg from SSsun.sun, zero output sunfrac = 0 return @@ -123,14 +123,14 @@ var/list/solars_list = list() /obj/machinery/power/solar/process()//TODO: remove/add this from machines to save on processing as needed ~Carn PRIORITY if(stat & BROKEN) return - if(!sun || !control) //if there's no sun or the panel is not linked to a solar control computer, no need to proceed + if(!SSsun.sun || !control) //if there's no SSsun.sun or the panel is not linked to a solar control computer, no need to proceed return if(powernet) if(powernet == control.powernet)//check if the panel is still connected to the computer - if(obscured) //get no light from the sun, so don't generate power + if(obscured) //get no light from the SSsun.sun, so don't generate power return - var/sgen = solar_gen_rate * sunfrac + var/sgen = GLOB.solar_gen_rate * sunfrac add_avail(sgen) control.gen += sgen else //if we're no longer on the same powernet, remove from control computer @@ -173,7 +173,7 @@ var/list/solars_list = list() . = PROCESS_KILL return -//trace towards sun to see if we're in shadow +//trace towards SSsun.sun to see if we're in shadow /obj/machinery/power/solar/proc/occlusion() var/ax = x // start at the solar panel @@ -181,8 +181,8 @@ var/list/solars_list = list() var/turf/T = null for(var/i = 1 to 20) // 20 steps is enough - ax += sun.dx // do step - ay += sun.dy + ax += SSsun.sun.dx // do step + ay += SSsun.sun.dy T = locate( round(ax,0.5),round(ay,0.5),z) @@ -290,7 +290,7 @@ var/list/solars_list = list() var/lastgen = 0 var/track = 0 // 0= off 1=timed 2=auto (tracker) var/trackrate = 600 // 300-900 seconds - var/nexttime = 0 // time for a panel to rotate of 1° in manual tracking + var/nexttime = 0 // time for a panel to rotate of 1� in manual tracking var/obj/machinery/power/tracker/connected_tracker = null var/list/connected_panels = list() @@ -306,12 +306,12 @@ var/list/solars_list = list() /obj/machinery/power/solar_control/disconnect_from_network() ..() - solars_list.Remove(src) + GLOB.solars_list.Remove(src) /obj/machinery/power/solar_control/connect_to_network() var/to_return = ..() if(powernet) //if connected and not already in solar_list... - solars_list |= src //... add it + GLOB.solars_list |= src //... add it return to_return //search for unconnected panels and trackers in the computer powernet and connect them @@ -330,7 +330,7 @@ var/list/solars_list = list() connected_tracker = T T.set_control(src) -//called by the sun controller, update the facing angle (either manually or via tracking) and rotates the panels accordingly +//called by the SSsun.sun controller, update the facing angle (either manually or via tracking) and rotates the panels accordingly /obj/machinery/power/solar_control/proc/update() if(stat & (NOPOWER | BROKEN)) return @@ -341,13 +341,13 @@ var/list/solars_list = list() cdir = targetdir //...the current direction is the targetted one (and rotates panels to it) if(2) // auto-tracking if(connected_tracker) - connected_tracker.set_angle(sun.angle) + connected_tracker.set_angle(SSsun.sun.angle) set_panels(cdir) updateDialog() -/obj/machinery/power/solar_control/initialize() +/obj/machinery/power/solar_control/Initialize() . = ..() if(!powernet) return set_panels(cdir) @@ -375,7 +375,7 @@ var/list/solars_list = list() /obj/machinery/power/solar_control/interact(mob/user) var/t = "Generated power : [round(lastgen)] W
      " - t += "Star Orientation: [sun.angle]° ([angle2text(sun.angle)])
      " + t += "Star Orientation: [SSsun.sun.angle]° ([angle2text(SSsun.sun.angle)])
      " t += "Array Orientation: [rate_control(src,"cdir","[cdir]°",1,15)] ([angle2text(cdir)])
      " t += "Tracking:
      " switch(track) @@ -445,9 +445,9 @@ var/list/solars_list = list() connected_tracker.unset_control() if(track==1 && trackrate) //manual tracking and set a rotation speed - if(nexttime <= world.time) //every time we need to increase/decrease the angle by 1°... + if(nexttime <= world.time) //every time we need to increase/decrease the angle by 1�... targetdir = (targetdir + trackrate/abs(trackrate) + 360) % 360 //... do it - nexttime += 36000/abs(trackrate) //reset the counter for the next 1° + nexttime += 36000/abs(trackrate) //reset the counter for the next 1� updateDialog() @@ -477,7 +477,7 @@ var/list/solars_list = list() track = text2num(href_list["track"]) if(track == 2) if(connected_tracker) - connected_tracker.set_angle(sun.angle) + connected_tracker.set_angle(SSsun.sun.angle) set_panels(cdir) else if (track == 1) //begin manual tracking src.targetdir = src.cdir @@ -487,7 +487,7 @@ var/list/solars_list = list() if(href_list["search_connected"]) src.search_for_connected() if(connected_tracker && track == 2) - connected_tracker.set_angle(sun.angle) + connected_tracker.set_angle(SSsun.sun.angle) src.set_panels(cdir) interact(usr) @@ -537,7 +537,7 @@ var/list/solars_list = list() spawn(150) // Wait 15 seconds to ensure everything was set up properly (such as, powernets, solar panels, etc. src.search_for_connected() if(connected_tracker && track == 2) - connected_tracker.set_angle(sun.angle) + connected_tracker.set_angle(SSsun.sun.angle) src.set_panels(cdir) // @@ -546,7 +546,7 @@ var/list/solars_list = list() /obj/item/weapon/paper/solar name = "paper- 'Going green! Setup your own solar array instructions.'" - info = "

      Welcome

      At greencorps we love the environment, and space. With this package you are able to help mother nature and produce energy without any usage of fossil fuel or phoron! Singularity energy is dangerous while solar energy is safe, which is why it's better. Now here is how you setup your own solar array.

      You can make a solar panel by wrenching the solar assembly onto a cable node. Adding a glass panel, reinforced or regular glass will do, will finish the construction of your solar panel. It is that easy!

      Now after setting up 19 more of these solar panels you will want to create a solar tracker to keep track of our mother nature's gift, the sun. These are the same steps as before except you insert the tracker equipment circuit into the assembly before performing the final step of adding the glass. You now have a tracker! Now the last step is to add a computer to calculate the sun's movements and to send commands to the solar panels to change direction with the sun. Setting up the solar computer is the same as setting up any computer, so you should have no trouble in doing that. You do need to put a wire node under the computer, and the wire needs to be connected to the tracker.

      Congratulations, you should have a working solar array. If you are having trouble, here are some tips. Make sure all solar equipment are on a cable node, even the computer. You can always deconstruct your creations if you make a mistake.

      That's all to it, be safe, be green!

      " + info = "

      Welcome

      At greencorps we love the environment, and space. With this package you are able to help mother nature and produce energy without any usage of fossil fuel or phoron! Singularity energy is dangerous while solar energy is safe, which is why it's better. Now here is how you setup your own solar array.

      You can make a solar panel by wrenching the solar assembly onto a cable node. Adding a glass panel, reinforced or regular glass will do, will finish the construction of your solar panel. It is that easy!

      Now after setting up 19 more of these solar panels you will want to create a solar tracker to keep track of our mother nature's gift, the SSsun.sun. These are the same steps as before except you insert the tracker equipment circuit into the assembly before performing the final step of adding the glass. You now have a tracker! Now the last step is to add a computer to calculate the SSsun.sun's movements and to send commands to the solar panels to change direction with the SSsun.sun. Setting up the solar computer is the same as setting up any computer, so you should have no trouble in doing that. You do need to put a wire node under the computer, and the wire needs to be connected to the tracker.

      Congratulations, you should have a working solar array. If you are having trouble, here are some tips. Make sure all solar equipment are on a cable node, even the computer. You can always deconstruct your creations if you make a mistake.

      That's all to it, be safe, be green!

      " /proc/rate_control(var/S, var/V, var/C, var/Min=1, var/Max=5, var/Limit=null) //How not to name vars var/href = "JMP)",0,1) @@ -197,6 +203,11 @@ if(grav_pulling) supermatter_pull(src) + if(power) + // Volume will be 1 at no power, ~12.5 at ENERGY_NITROGEN, and 20+ at ENERGY_PHORON. + // Capped to 20 volume since higher volumes get annoying and it sounds worse. + soundloop.volume = min(round(power/10)+1, 20) + //Ok, get the air from the turf var/datum/gas_mixture/removed = null var/datum/gas_mixture/env = null diff --git a/code/modules/power/tesla/coil.dm b/code/modules/power/tesla/coil.dm index 5b614ce629..76029fd66c 100644 --- a/code/modules/power/tesla/coil.dm +++ b/code/modules/power/tesla/coil.dm @@ -25,7 +25,7 @@ ..() wires = new(src) -/obj/machinery/power/tesla_coil/initialize() +/obj/machinery/power/tesla_coil/Initialize() . = ..() default_apply_parts() diff --git a/code/modules/power/tesla/energy_ball.dm b/code/modules/power/tesla/energy_ball.dm index 9274bb85a6..8c404e05c0 100644 --- a/code/modules/power/tesla/energy_ball.dm +++ b/code/modules/power/tesla/energy_ball.dm @@ -27,7 +27,7 @@ ..() miniball = is_miniball -/obj/singularity/energy_ball/initialize() +/obj/singularity/energy_ball/Initialize() . = ..() if(!miniball) set_light(10, 7, "#EEEEFF") @@ -65,7 +65,7 @@ set_dir(tesla_zap(src, 7, TESLA_DEFAULT_POWER, TRUE)) for (var/ball in orbiting_balls) - var/range = rand(1, Clamp(orbiting_balls.len, 3, 7)) + var/range = rand(1, CLAMP(orbiting_balls.len, 3, 7)) tesla_zap(ball, range, TESLA_MINI_POWER/7*range, TRUE) else energy = 0 // ensure we dont have miniballs of miniballs @@ -185,7 +185,6 @@ /obj/machinery/atmospherics, /obj/machinery/power/emitter, /obj/machinery/field_generator, - /mob/living/simple_animal, /obj/machinery/door/blast, /obj/machinery/particle_accelerator/control_box, /obj/structure/particle_accelerator/fuel_chamber, @@ -289,8 +288,8 @@ closest_grounding_rod.tesla_act(power, explosive, stun_mobs) else if(closest_mob) - var/shock_damage = Clamp(round(power/400), 10, 90) + rand(-5, 5) - closest_mob.electrocute_act(shock_damage, source, 1, ran_zone()) + var/shock_damage = CLAMP(round(power/400), 10, 90) + rand(-5, 5) + closest_mob.electrocute_act(shock_damage, source, 1 - closest_mob.get_shock_protection(), ran_zone()) log_game("TESLA([source.x],[source.y],[source.z]) Shocked [key_name(closest_mob)] for [shock_damage]dmg.") message_admins("Tesla zapped [key_name_admin(closest_mob)]!") if(issilicon(closest_mob)) diff --git a/code/modules/power/tesla/tesla_act.dm b/code/modules/power/tesla/tesla_act.dm index 8e617fca86..01b58f8a80 100644 --- a/code/modules/power/tesla/tesla_act.dm +++ b/code/modules/power/tesla/tesla_act.dm @@ -60,6 +60,9 @@ ..() //extend the zap explode() +/obj/mecha/tesla_act(power) + ..() + take_damage(power / 200, "energy") // A surface lightning strike will do 100 damage. diff --git a/code/modules/power/turbine.dm b/code/modules/power/turbine.dm index 0a9c8f1a3e..3b3de0b436 100644 --- a/code/modules/power/turbine.dm +++ b/code/modules/power/turbine.dm @@ -85,7 +85,7 @@ #define COMPFRICTION 5e5 #define COMPSTARTERLOAD 2800 -/obj/machinery/compressor/initialize() +/obj/machinery/compressor/Initialize() . = ..() default_apply_parts() gas_contained = new() @@ -95,10 +95,8 @@ stat |= BROKEN // When anchored, don't let air past us. -/obj/machinery/compressor/CanPass(atom/movable/mover, turf/target, height=1.5, air_group = 0) - if(!height || air_group) - return !anchored - return !density +/obj/machinery/compressor/CanZASPass(turf/T, is_zone) + return anchored ? ATMOS_PASS_NO : ATMOS_PASS_YES /obj/machinery/compressor/proc/locate_machinery() if(turbine) @@ -194,7 +192,7 @@ #define TURBGENQ 100000 #define TURBGENG 0.8 -/obj/machinery/power/turbine/initialize() +/obj/machinery/power/turbine/Initialize() . = ..() default_apply_parts() // The outlet is pointed at the direction of the turbine component @@ -318,7 +316,7 @@ // Turbine Computer ///////////////////////////////////////////////////////////////////////////////////////////////////////////////////// -/obj/machinery/computer/turbine_computer/initialize() +/obj/machinery/computer/turbine_computer/Initialize() . = ..() return INITIALIZE_HINT_LATELOAD diff --git a/code/modules/projectiles/ammunition.dm b/code/modules/projectiles/ammunition.dm index 4f27c593c7..0f9608f49c 100644 --- a/code/modules/projectiles/ammunition.dm +++ b/code/modules/projectiles/ammunition.dm @@ -3,7 +3,6 @@ desc = "A bullet casing." icon = 'icons/obj/ammo.dmi' icon_state = "s-casing" - flags = CONDUCT slot_flags = SLOT_BELT | SLOT_EARS throwforce = 1 w_class = ITEMSIZE_TINY @@ -13,7 +12,7 @@ var/caliber = "" //Which kind of guns it can be loaded into var/projectile_type //The bullet type to create when New() is called var/obj/item/projectile/BB = null //The loaded bullet - make it so that the projectiles are created only when needed? -// var/spent_icon = null + var/caseless = null //Caseless ammo deletes its self once the projectile is fired. /obj/item/ammo_casing/New() ..() @@ -47,9 +46,7 @@ BB.name = "[initial(BB.name)] (\"[label_text]\")" /obj/item/ammo_casing/update_icon() -/* if(spent_icon && !BB) - icon_state = spent_icon*/ - if(!BB) // This is really just a much better way of doing this. + if(!BB) icon_state = "[initial(icon_state)]-spent" /obj/item/ammo_casing/examine(mob/user) @@ -68,7 +65,6 @@ desc = "A magazine for some kind of gun." icon_state = ".357" icon = 'icons/obj/ammo.dmi' - flags = CONDUCT slot_flags = SLOT_BELT item_state = "syringe_kit" matter = list(DEFAULT_WALL_MATERIAL = 500) diff --git a/code/modules/projectiles/ammunition/magazines.dm b/code/modules/projectiles/ammunition/magazines.dm index cfd96ac2aa..ced50484ce 100644 --- a/code/modules/projectiles/ammunition/magazines.dm +++ b/code/modules/projectiles/ammunition/magazines.dm @@ -3,7 +3,7 @@ # An explaination of the naming format for guns and ammo: # # a = Ammo, as in individual rounds of ammunition. -# b = Box, intended to have ammo taken out one at a time by hand. +# b = Box, intended to have ammo taken out one at a time by hand. Really obsolete. Don't use this. # c = Clips, intended to reload magazines or guns quickly. # m = Magazine, intended to hold rounds of ammo. # s = Speedloaders, intended to reload guns quickly. @@ -106,7 +106,7 @@ initial_ammo = 0 /obj/item/ammo_magazine/m45tommy - name = "tommygun magazine (.45)" + name = "Tommy Gun magazine (.45)" icon_state = "tommy-mag" mag_type = MAGAZINE ammo_type = /obj/item/ammo_casing/a45 @@ -115,14 +115,14 @@ max_ammo = 20 /obj/item/ammo_magazine/m45tommy/ap - name = "tommygun magazine (.45 AP)" + name = "Tommy Gun magazine (.45 AP)" ammo_type = /obj/item/ammo_casing/a45/ap /obj/item/ammo_magazine/m45tommy/empty initial_ammo = 0 /obj/item/ammo_magazine/m45tommydrum - name = "tommygun drum magazine (.45)" + name = "Tommy Gun drum magazine (.45)" icon_state = "tommy-drum" w_class = ITEMSIZE_NORMAL // Bulky ammo doesn't fit in your pockets! mag_type = MAGAZINE @@ -132,7 +132,7 @@ max_ammo = 50 /obj/item/ammo_magazine/m45tommydrum/ap - name = "tommygun drum magazine (.45 AP)" + name = "Tommy Gun drum magazine (.45 AP)" ammo_type = /obj/item/ammo_casing/a45/ap /obj/item/ammo_magazine/m45tommydrum/empty @@ -188,6 +188,21 @@ name = "speedloader (.45 AP)" ammo_type = /obj/item/ammo_casing/a45/ap +///////// 5mm Caseless ///////// + +/obj/item/ammo_magazine/m5mmcaseless + name = "prototype rifle magazine (5mm caseless)" + ammo_type = /obj/item/ammo_casing/a5mmcaseless + icon_state = "caseless-mag" + caliber = "5mm caseless" + mag_type = MAGAZINE + max_ammo = 30 + multiple_sprites = 1 + +/obj/item/ammo_magazine/m5mmcaseless/stun + icon_state = "caseless-mag-alt" + ammo_type = /obj/item/ammo_casing/a5mmcaseless/stun + ///////// 9mm ///////// /obj/item/ammo_magazine/m9mm @@ -313,31 +328,19 @@ name = "ammo clip (.45 flash)" ammo_type = /obj/item/ammo_casing/a9mm/flash -/obj/item/ammo_magazine/box/c9mm // Made by RnD for Prototype SMG and should probably be removed because why does it require DIAMONDS to make bullets? - name = "ammunition Box (9mm)" - icon_state = "9mm" - origin_tech = list(TECH_COMBAT = 2) - matter = list(DEFAULT_WALL_MATERIAL = 1800) - caliber = "9mm" - ammo_type = /obj/item/ammo_casing/a9mm - max_ammo = 30 - -/obj/item/ammo_magazine/box/c9mm/empty - initial_ammo = 0 - -/obj/item/ammo_magazine/m9mmR/saber - desc = "A very high capacity double stack magazine made specially for the SABER SMG. Filled with 22 9mm bullets." +/obj/item/ammo_magazine/m9mmAdvanced + desc = "A very high capacity double stack magazine made specially for the Advanced SMG. Filled with 21 9mm bullets." icon_state = "S9mm" mag_type = MAGAZINE ammo_type = /obj/item/ammo_casing/a9mm matter = list(DEFAULT_WALL_MATERIAL = 1200) caliber = "9mm" - max_ammo = 22 + max_ammo = 21 origin_tech = list(TECH_COMBAT = 2, TECH_ILLEGAL = 1) multiple_sprites = 1 -/obj/item/ammo_magazine/m9mmR/saber/ap - desc = "A high capacity double stack magazine made specially for the SABER SMG. Filled with 22 9mm armor piercing bullets." +/obj/item/ammo_magazine/m9mmAdvanced/ap + desc = "A high capacity double stack magazine made specially for the Advanced SMG. Filled with 21 9mm armor piercing bullets." icon_state = "S9mm" ammo_type = /obj/item/ammo_casing/a9mm/ap matter = list(DEFAULT_WALL_MATERIAL = 2000) @@ -626,10 +629,10 @@ /obj/item/ammo_magazine/m12gdrum name = "magazine (12 gauge)" - icon_state = "12g" + icon_state = "ashot-mag" mag_type = MAGAZINE caliber = "12g" - matter = list(DEFAULT_WALL_MATERIAL = 13000) //did the math. now fixed the exploityness of this thing. Have fun! + matter = list(DEFAULT_WALL_MATERIAL = 13000) ammo_type = /obj/item/ammo_casing/a12g max_ammo = 24 multiple_sprites = 1 diff --git a/code/modules/projectiles/ammunition/rounds.dm b/code/modules/projectiles/ammunition/rounds.dm index e87c91409d..b187f325bd 100644 --- a/code/modules/projectiles/ammunition/rounds.dm +++ b/code/modules/projectiles/ammunition/rounds.dm @@ -52,7 +52,7 @@ matter = list(DEFAULT_WALL_MATERIAL = 130, "uranium" = 100) /* - * .50 Action Express + * .44 */ /obj/item/ammo_casing/a44 @@ -110,7 +110,7 @@ /obj/item/ammo_casing/a9mm/practice desc = "A 9mm practice bullet casing." icon_state = "r-casing" - projectile_type = /obj/item/projectile/bullet/pistol/practice + projectile_type = /obj/item/projectile/bullet/practice /* * .45 @@ -130,7 +130,7 @@ /obj/item/ammo_casing/a45/practice desc = "A .45 practice bullet casing." icon_state = "r-casing" - projectile_type = /obj/item/projectile/bullet/pistol/practice + projectile_type = /obj/item/projectile/bullet/practice matter = list(DEFAULT_WALL_MATERIAL = 60) /obj/item/ammo_casing/a45/rubber @@ -202,7 +202,7 @@ name = "shotgun shell" desc = "A practice shell." icon_state = "pshell" - projectile_type = /obj/item/projectile/bullet/shotgun/practice + projectile_type = /obj/item/projectile/bullet/practice matter = list(DEFAULT_WALL_MATERIAL = 90) /obj/item/ammo_casing/a12g/beanbag @@ -260,7 +260,7 @@ /obj/item/ammo_casing/a762/practice desc = "A 7.62mm practice bullet casing." icon_state = "rifle-casing" // Need to make an icon for these - projectile_type = /obj/item/projectile/bullet/rifle/practice + projectile_type = /obj/item/projectile/bullet/practice matter = list(DEFAULT_WALL_MATERIAL = 90) /obj/item/ammo_casing/a762/blank @@ -306,7 +306,7 @@ /obj/item/ammo_casing/a545/practice desc = "A 5.45mm practice bullet casing." icon_state = "rifle-casing" // Need to make an icon for these - projectile_type = /obj/item/projectile/bullet/rifle/practice + projectile_type = /obj/item/projectile/bullet/practice matter = list(DEFAULT_WALL_MATERIAL = 90) /obj/item/ammo_casing/a545/blank @@ -322,6 +322,22 @@ desc = "A 5.45mm hunting bullet casing." projectile_type = /obj/item/projectile/bullet/rifle/a545/hunter +/* + * 5mm Caseless + */ + +/obj/item/ammo_casing/a5mmcaseless + desc = "A 5mm solid phoron caseless round." + caliber = "5mm caseless" + icon_state = "casing" // Placeholder. Should probably be purple. + projectile_type = /obj/item/projectile/bullet/pistol // Close enough to be comparable. + matter = list(DEFAULT_WALL_MATERIAL = 180) + caseless = 1 + +/obj/item/ammo_casing/a5mmcaseless/stun + desc = "A 5mm solid phoron caseless stun round." + projectile_type = /obj/item/projectile/energy/electrode // Maybe nerf this considering there's 30 rounds in a mag. + /* * Misc */ diff --git a/code/modules/projectiles/ammunition/smartmag.dm b/code/modules/projectiles/ammunition/smartmag.dm index 4b42f18251..3668145b41 100644 --- a/code/modules/projectiles/ammunition/smartmag.dm +++ b/code/modules/projectiles/ammunition/smartmag.dm @@ -27,11 +27,11 @@ var/emagged = 0 // If you emag the smart mag, you can get the bullets out by clicking it /obj/item/ammo_magazine/smart/New() - processing_objects |= src + START_PROCESSING(SSobj, src) ..() /obj/item/ammo_magazine/smart/Destroy() - processing_objects -= src + STOP_PROCESSING(SSobj, src) ..() /obj/item/ammo_magazine/smart/process() diff --git a/code/modules/projectiles/effects.dm b/code/modules/projectiles/effects.dm deleted file mode 100644 index da21427eff..0000000000 --- a/code/modules/projectiles/effects.dm +++ /dev/null @@ -1,291 +0,0 @@ -/obj/effect/projectile - icon = 'icons/effects/projectiles.dmi' - icon_state = "bolt" - plane = ABOVE_PLANE - -/obj/effect/projectile/New(var/turf/location) - if(istype(location)) - loc = location - -/obj/effect/projectile/proc/set_transform(var/matrix/M) - if(istype(M)) - transform = M - -/obj/effect/projectile/proc/activate(var/kill_delay = 5) - update_light() - spawn(kill_delay) - qdel(src) //see effect_system.dm - sets loc to null and lets GC handle removing these effects - - return - -//---------------------------- -// Laser beam -//---------------------------- -/obj/effect/projectile/laser/tracer - icon_state = "beam" - light_range = 2 - light_power = 0.5 - light_color = "#FF0D00" - -/obj/effect/projectile/laser/muzzle - icon_state = "muzzle_laser" - light_range = 2 - light_power = 0.5 - light_color = "#FF0D00" - -/obj/effect/projectile/laser/impact - icon_state = "impact_laser" - light_range = 2 - light_power = 0.5 - light_color = "#FF0D00" - -//---------------------------- -// Blue laser beam -//---------------------------- -/obj/effect/projectile/laser_blue/tracer - icon_state = "beam_blue" - light_range = 2 - light_power = 0.5 - light_color = "#0066FF" - -/obj/effect/projectile/laser_blue/muzzle - icon_state = "muzzle_blue" - light_range = 2 - light_power = 0.5 - light_color = "#0066FF" - -/obj/effect/projectile/laser_blue/impact - icon_state = "impact_blue" - light_range = 2 - light_power = 0.5 - light_color = "#0066FF" - -//---------------------------- -// Omni laser beam -//---------------------------- -/obj/effect/projectile/laser_omni/tracer - icon_state = "beam_omni" - light_range = 2 - light_power = 0.5 - light_color = "#00C6FF" - -/obj/effect/projectile/laser_omni/muzzle - icon_state = "muzzle_omni" - light_range = 2 - light_power = 0.5 - light_color = "#00C6FF" - -/obj/effect/projectile/laser_omni/impact - icon_state = "impact_omni" - light_range = 2 - light_power = 0.5 - light_color = "#00C6FF" - -//---------------------------- -// Xray laser beam -//---------------------------- -/obj/effect/projectile/xray/tracer - icon_state = "xray" - light_range = 2 - light_power = 0.5 - light_color = "#00CC33" - -/obj/effect/projectile/xray/muzzle - icon_state = "muzzle_xray" - light_range = 2 - light_power = 0.5 - light_color = "#00CC33" - -/obj/effect/projectile/xray/impact - icon_state = "impact_xray" - light_range = 2 - light_power = 0.5 - light_color = "#00CC33" - -//---------------------------- -// Heavy laser beam -//---------------------------- -/obj/effect/projectile/laser_heavy/tracer - icon_state = "beam_heavy" - light_range = 3 - light_power = 1 - light_color = "#FF0D00" - -/obj/effect/projectile/laser_heavy/muzzle - icon_state = "muzzle_beam_heavy" - light_range = 3 - light_power = 1 - light_color = "#FF0D00" - -/obj/effect/projectile/laser_heavy/impact - icon_state = "impact_beam_heavy" - light_range = 3 - light_power = 1 - light_color = "#FF0D00" - -//---------------------------- -// Pulse laser beam -//---------------------------- -/obj/effect/projectile/laser_pulse/tracer - icon_state = "u_laser" - light_range = 2 - light_power = 0.5 - light_color = "#0066FF" - -/obj/effect/projectile/laser_pulse/muzzle - icon_state = "muzzle_u_laser" - light_range = 2 - light_power = 0.5 - light_color = "#0066FF" - -/obj/effect/projectile/laser_pulse/impact - icon_state = "impact_u_laser" - light_range = 2 - light_power = 0.5 - light_color = "#0066FF" - -//---------------------------- -// Pulse muzzle effect only -//---------------------------- -/obj/effect/projectile/pulse/muzzle - icon_state = "muzzle_pulse" - light_range = 2 - light_power = 0.5 - light_color = "#0066FF" - -//---------------------------- -// Emitter beam -//---------------------------- -/obj/effect/projectile/emitter/tracer - icon_state = "emitter" - light_range = 2 - light_power = 0.5 - light_color = "#00CC33" - -/obj/effect/projectile/emitter/muzzle - icon_state = "muzzle_emitter" - light_range = 2 - light_power = 0.5 - light_color = "#00CC33" - -/obj/effect/projectile/emitter/impact - icon_state = "impact_emitter" - light_range = 2 - light_power = 0.5 - light_color = "#00CC33" - -//---------------------------- -// Stun beam -//---------------------------- -/obj/effect/projectile/stun/tracer - icon_state = "stun" - light_range = 2 - light_power = 0.5 - light_color = "#FFFFFF" - -/obj/effect/projectile/stun/muzzle - icon_state = "muzzle_stun" - light_range = 2 - light_power = 0.5 - light_color = "#FFFFFF" - -/obj/effect/projectile/stun/impact - icon_state = "impact_stun" - light_range = 2 - light_power = 0.5 - light_color = "#FFFFFF" - -//---------------------------- -// Bullet -//---------------------------- -/obj/effect/projectile/bullet/muzzle - icon_state = "muzzle_bullet" - light_range = 2 - light_power = 0.5 - light_color = "#FFFFFF" - -//---------------------------- -// Lightning beam -//---------------------------- -/obj/effect/projectile/lightning/tracer - icon_state = "lightning" - light_range = 2 - light_power = 0.5 - light_color = "#00C6FF" - -/obj/effect/projectile/lightning/muzzle - icon_state = "muzzle_lightning" - light_range = 2 - light_power = 0.5 - light_color = "#00C6FF" - -/obj/effect/projectile/lightning/impact - icon_state = "impact_lightning" - light_range = 2 - light_power = 0.5 - light_color = "#00C6FF" - -//---------------------------- -// Dark matter stun -//---------------------------- - -/obj/effect/projectile/darkmatterstun/tracer - icon_state = "darkt" - light_range = 2 - light_power = 0.5 - light_color = "#8837A3" - -/obj/effect/projectile/darkmatterstun/muzzle - icon_state = "muzzle_darkt" - light_range = 2 - light_power = 0.5 - light_color = "#8837A3" - -/obj/effect/projectile/darkmatterstun/impact - icon_state = "impact_darkt" - light_range = 2 - light_power = 0.5 - light_color = "#8837A3" - -//---------------------------- -// Dark matter -//---------------------------- - -/obj/effect/projectile/darkmatter/tracer - icon_state = "darkb" - light_range = 2 - light_power = 0.5 - light_color = "#8837A3" - -/obj/effect/projectile/darkmatter/muzzle - icon_state = "muzzle_darkb" - light_range = 2 - light_power = 0.5 - light_color = "#8837A3" - -/obj/effect/projectile/darkmatter/impact - icon_state = "impact_darkb" - light_range = 2 - light_power = 0.5 - light_color = "#8837A3" - -//---------------------------- -// Inversion / Cult -//---------------------------- -/obj/effect/projectile/inversion/tracer - icon_state = "invert" - light_range = 2 - light_power = -2 - light_color = "#FFFFFF" - -/obj/effect/projectile/inversion/muzzle - icon_state = "muzzle_invert" - light_range = 2 - light_power = -2 - light_color = "#FFFFFF" - -/obj/effect/projectile/inversion/impact - icon_state = "impact_invert" - light_range = 2 - light_power = -2 - light_color = "#FFFFFF" \ No newline at end of file diff --git a/code/modules/projectiles/gun.dm b/code/modules/projectiles/gun.dm index 40dbaf0650..bbc13e381e 100644 --- a/code/modules/projectiles/gun.dm +++ b/code/modules/projectiles/gun.dm @@ -38,7 +38,6 @@ ) icon_state = "detective" item_state = "gun" - flags = CONDUCT slot_flags = SLOT_BELT|SLOT_HOLSTER matter = list(DEFAULT_WALL_MATERIAL = 2000) w_class = ITEMSIZE_NORMAL @@ -56,7 +55,7 @@ var/fire_delay = 6 //delay after shooting before the gun can be used again var/burst_delay = 2 //delay between shots, if firing in bursts var/move_delay = 1 - var/fire_sound = 'sound/weapons/Gunshot.ogg' + var/fire_sound = null // This is handled by projectile.dm's fire_sound var now, but you can override the projectile's fire_sound with this one if you want to. var/fire_sound_text = "gunshot" var/fire_anim = null var/recoil = 0 //screen shake @@ -173,7 +172,7 @@ if(!user.IsAdvancedToolUser()) return 0 if(isanimal(user)) - var/mob/living/simple_animal/S = user + var/mob/living/simple_mob/S = user if(!S.IsHumanoidToolUser(src)) return 0 @@ -470,14 +469,12 @@ P.shot_from = src.name P.silenced = silenced - P.launch(target) + P.old_style_target(target) + P.fire() last_shot = world.time - if(silenced) - playsound(src, fire_sound, 10, 1) - else - playsound(src, fire_sound, 50, 1) + play_fire_sound() if(muzzle_flash) set_light(muzzle_flash) @@ -526,7 +523,8 @@ return 2 //just assume we can shoot through glass and stuff. No big deal, the player can just choose to not target someone //on the other side of a window if it makes a difference. Or if they run behind a window, too bad. - return check_trajectory(target, user) + if(check_trajectory(target, user)) + return 1 // Magic numbers are fun. //called if there was no projectile to shoot /obj/item/weapon/gun/proc/handle_click_empty(mob/user) @@ -542,18 +540,20 @@ flick(fire_anim, src) if(silenced) - if(reflex) - user.visible_message( - "\The [user] fires \the [src][pointblank ? " point blank at \the [target]":""] by reflex!", - "You fire \the [src] by reflex!", - "You hear a [fire_sound_text]!" + to_chat(user, "You fire \the [src][pointblank ? " point blank at \the [target]":""][reflex ? " by reflex":""]") + for(var/mob/living/L in oview(2,user)) + if(L.stat) + continue + if(L.blinded) + to_chat(L, "You hear a [fire_sound_text]!") + continue + to_chat(L, "\The [user] fires \the [src][pointblank ? " point blank at \the [target]":""][reflex ? " by reflex":""]!") + else + user.visible_message( + "\The [user] fires \the [src][pointblank ? " point blank at \the [target]":""][reflex ? " by reflex":""]!", + "You fire \the [src][pointblank ? " point blank at \the [target]":""][reflex ? " by reflex":""]!", + "You hear a [fire_sound_text]!" ) - else - user.visible_message( - "\The [user] fires \the [src][pointblank ? " point blank at \the [target]":""]!", - "You fire \the [src]!", - "You hear a [fire_sound_text]!" - ) if(muzzle_flash) set_light(muzzle_flash) @@ -618,7 +618,7 @@ if(one_handed_penalty) if(!held_twohanded) - acc_mod += -ceil(one_handed_penalty/2) + acc_mod += -CEILING(one_handed_penalty/2, 1) disp_mod += one_handed_penalty*0.5 //dispersion per point of two-handedness //Accuracy modifiers @@ -645,24 +645,17 @@ /obj/item/weapon/gun/proc/process_projectile(obj/projectile, mob/user, atom/target, var/target_zone, var/params=null) var/obj/item/projectile/P = projectile if(!istype(P)) - return 0 //default behaviour only applies to true projectiles - - if(params) - P.set_clickpoint(params) + return FALSE //default behaviour only applies to true projectiles //shooting while in shock - var/x_offset = 0 - var/y_offset = 0 + var/forcespread if(istype(user, /mob/living/carbon)) var/mob/living/carbon/mob = user if(mob.shock_stage > 120) - y_offset = rand(-2,2) - x_offset = rand(-2,2) + forcespread = rand(50, 50) else if(mob.shock_stage > 70) - y_offset = rand(-1,1) - x_offset = rand(-1,1) - - var/launched = !P.launch_from_gun(target, user, src, target_zone, x_offset, y_offset) + forcespread = rand(-25, 25) + var/launched = !P.launch_from_gun(target, target_zone, user, params, null, forcespread, src) if(launched) play_fire_sound(user, P) @@ -670,7 +663,13 @@ return launched /obj/item/weapon/gun/proc/play_fire_sound(var/mob/user, var/obj/item/projectile/P) - var/shot_sound = (istype(P) && P.fire_sound)? P.fire_sound : fire_sound + var/shot_sound = fire_sound + + if(!shot_sound && istype(P) && P.fire_sound) // If the gun didn't have a fire_sound, but the projectile exists, and has a sound... + shot_sound = P.fire_sound + if(!shot_sound) // If there's still no sound... + return + if(silenced) playsound(user, shot_sound, 10, 1) else @@ -693,11 +692,7 @@ var/obj/item/projectile/in_chamber = consume_next_projectile() if (istype(in_chamber)) user.visible_message("[user] pulls the trigger.") - var/shot_sound = in_chamber.fire_sound? in_chamber.fire_sound : fire_sound - if(silenced) - playsound(user, shot_sound, 10, 1) - else - playsound(user, shot_sound, 50, 1) + play_fire_sound() if(istype(in_chamber, /obj/item/projectile/beam/lastertag)) user.show_message("You feel rather silly, trying to commit suicide with a toy.") mouthshoot = 0 diff --git a/code/modules/projectiles/guns/energy.dm b/code/modules/projectiles/guns/energy.dm index 9cfd0d152a..d69b7c7559 100644 --- a/code/modules/projectiles/guns/energy.dm +++ b/code/modules/projectiles/guns/energy.dm @@ -1,198 +1,208 @@ -/obj/item/weapon/gun/energy - name = "energy gun" - desc = "A basic energy-based gun." - icon_state = "energy" - fire_sound = 'sound/weapons/Taser.ogg' - fire_sound_text = "laser blast" - - var/obj/item/weapon/cell/power_supply //What type of power cell this uses - var/charge_cost = 240 //How much energy is needed to fire. - - var/cell_type = /obj/item/weapon/cell/device/weapon - projectile_type = /obj/item/projectile/beam/practice - - var/modifystate - var/charge_meter = 1 //if set, the icon state will be chosen based on the current charge - - //self-recharging - var/self_recharge = 0 //if set, the weapon will recharge itself - var/use_external_power = 0 //if set, the weapon will look for an external power source to draw from, otherwise it recharges magically - var/recharge_time = 4 - var/charge_tick = 0 - var/charge_delay = 75 //delay between firing and charging - - var/battery_lock = 0 //If set, weapon cannot switch batteries - -/obj/item/weapon/gun/energy/New() - ..() - if(self_recharge) - power_supply = new /obj/item/weapon/cell/device/weapon(src) - processing_objects.Add(src) - else - if(cell_type) - power_supply = new cell_type(src) - else - power_supply = null - - update_icon() - -/obj/item/weapon/gun/energy/Destroy() - if(self_recharge) - processing_objects.Remove(src) - return ..() - -/obj/item/weapon/gun/energy/get_cell() - return power_supply - -/obj/item/weapon/gun/energy/process() - if(self_recharge) //Every [recharge_time] ticks, recharge a shot for the battery - if(world.time > last_shot + charge_delay) //Doesn't work if you've fired recently - if(!power_supply || power_supply.charge >= power_supply.maxcharge) - return 0 // check if we actually need to recharge - - charge_tick++ - if(charge_tick < recharge_time) return 0 - charge_tick = 0 - - var/rechargeamt = power_supply.maxcharge*0.2 - - if(use_external_power) - var/obj/item/weapon/cell/external = get_external_power_supply() - if(!external || !external.use(rechargeamt)) //Take power from the borg... - return 0 - - power_supply.give(rechargeamt) //... to recharge 1/5th the battery - update_icon() - else - charge_tick = 0 - return 1 - -/obj/item/weapon/gun/energy/attackby(var/obj/item/A as obj, mob/user as mob) - ..() - -/obj/item/weapon/gun/energy/switch_firemodes(mob/user) - if(..()) - update_icon() - -/obj/item/weapon/gun/energy/emp_act(severity) - ..() - update_icon() - -/obj/item/weapon/gun/energy/consume_next_projectile() - if(!power_supply) return null - if(!ispath(projectile_type)) return null - if(!power_supply.checked_use(charge_cost)) return null - return new projectile_type(src) - -/obj/item/weapon/gun/energy/proc/load_ammo(var/obj/item/C, mob/user) - if(istype(C, /obj/item/weapon/cell)) - if(self_recharge || battery_lock) - user << "[src] does not have a battery port." - return - if(istype(C, /obj/item/weapon/cell/device)) - var/obj/item/weapon/cell/device/P = C - if(power_supply) - user << "[src] already has a power cell." - else - user.visible_message("[user] is reloading [src].", "You start to insert [P] into [src].") - if(do_after(user, 10)) - user.remove_from_mob(P) - power_supply = P - P.loc = src - user.visible_message("[user] inserts [P] into [src].", "You insert [P] into [src].") - playsound(src.loc, 'sound/weapons/flipblade.ogg', 50, 1) - update_icon() - update_held_icon() - else - user << "This cell is not fitted for [src]." - return - -/obj/item/weapon/gun/energy/proc/unload_ammo(mob/user) - if(self_recharge || battery_lock) - user << "[src] does not have a battery port." - return - if(power_supply) - user.put_in_hands(power_supply) - power_supply.update_icon() - user.visible_message("[user] removes [power_supply] from [src].", "You remove [power_supply] from [src].") - power_supply = null - playsound(src.loc, 'sound/weapons/empty.ogg', 50, 1) - update_icon() - update_held_icon() - else - user << "[src] does not have a power cell." - -/obj/item/weapon/gun/energy/attackby(var/obj/item/A as obj, mob/user as mob) - ..() - load_ammo(A, user) - -/obj/item/weapon/gun/energy/attack_hand(mob/user as mob) - if(user.get_inactive_hand() == src) - unload_ammo(user) - else - return ..() - -/obj/item/weapon/gun/energy/proc/get_external_power_supply() - if(isrobot(src.loc)) - var/mob/living/silicon/robot/R = src.loc - return R.cell - if(istype(src.loc, /obj/item/rig_module)) - var/obj/item/rig_module/module = src.loc - if(module.holder && module.holder.wearer) - var/mob/living/carbon/human/H = module.holder.wearer - if(istype(H) && H.back) - var/obj/item/weapon/rig/suit = H.back - if(istype(suit)) - return suit.cell - return null - -/obj/item/weapon/gun/energy/examine(mob/user) - . = ..() - if(power_supply) - var/shots_remaining = round(power_supply.charge / charge_cost) - user << "Has [shots_remaining] shot\s remaining." - else - user << "Does not have a power cell." - return - -/obj/item/weapon/gun/energy/update_icon(var/ignore_inhands) - if(power_supply == null) - if(modifystate) - icon_state = "[modifystate]_open" - else - icon_state = "[initial(icon_state)]_open" - return - else if(charge_meter) - var/ratio = power_supply.charge / power_supply.maxcharge - - //make sure that rounding down will not give us the empty state even if we have charge for a shot left. - if(power_supply.charge < charge_cost) - ratio = 0 - else - ratio = max(round(ratio, 0.25) * 100, 25) - - if(modifystate) - icon_state = "[modifystate][ratio]" - else - icon_state = "[initial(icon_state)][ratio]" - if(!ignore_inhands) update_held_icon() - -/obj/item/weapon/gun/energy/proc/start_recharge() - if(power_supply == null) - power_supply = new /obj/item/weapon/cell/device/weapon(src) - self_recharge = 1 - processing_objects.Add(src) - update_icon() - -/obj/item/weapon/gun/energy/get_description_interaction() - var/list/results = list() - - if(!battery_lock && !self_recharge) - if(power_supply) - results += "[desc_panel_image("offhand")]to remove the weapon cell." - else - results += "[desc_panel_image("weapon cell")]to add a new weapon cell." - - results += ..() - +/obj/item/weapon/gun/energy + name = "energy gun" + desc = "A basic energy-based gun." + icon_state = "energy" + fire_sound_text = "laser blast" + + var/obj/item/weapon/cell/power_supply //What type of power cell this uses + var/charge_cost = 240 //How much energy is needed to fire. + + var/accept_cell_type = /obj/item/weapon/cell/device + var/cell_type = /obj/item/weapon/cell/device/weapon + projectile_type = /obj/item/projectile/beam/practice + + var/modifystate + var/charge_meter = 1 //if set, the icon state will be chosen based on the current charge + + //self-recharging + var/self_recharge = 0 //if set, the weapon will recharge itself + var/use_external_power = 0 //if set, the weapon will look for an external power source to draw from, otherwise it recharges magically + var/recharge_time = 4 + var/charge_tick = 0 + var/charge_delay = 75 //delay between firing and charging + + var/battery_lock = 0 //If set, weapon cannot switch batteries + +/obj/item/weapon/gun/energy/New() + ..() + if(self_recharge) + power_supply = new /obj/item/weapon/cell/device/weapon(src) + START_PROCESSING(SSobj, src) + else + if(cell_type) + power_supply = new cell_type(src) + else + power_supply = null + + update_icon() + +/obj/item/weapon/gun/energy/Destroy() + if(self_recharge) + STOP_PROCESSING(SSobj, src) + return ..() + +/obj/item/weapon/gun/energy/get_cell() + return power_supply + +/obj/item/weapon/gun/energy/process() + if(self_recharge) //Every [recharge_time] ticks, recharge a shot for the battery + if(world.time > last_shot + charge_delay) //Doesn't work if you've fired recently + if(!power_supply || power_supply.charge >= power_supply.maxcharge) + return 0 // check if we actually need to recharge + + charge_tick++ + if(charge_tick < recharge_time) return 0 + charge_tick = 0 + + var/rechargeamt = power_supply.maxcharge*0.2 + + if(use_external_power) + var/obj/item/weapon/cell/external = get_external_power_supply() + if(!external || !external.use(rechargeamt)) //Take power from the borg... + return 0 + + power_supply.give(rechargeamt) //... to recharge 1/5th the battery + update_icon() + else + charge_tick = 0 + return 1 + +/obj/item/weapon/gun/energy/attackby(var/obj/item/A as obj, mob/user as mob) + ..() + +/obj/item/weapon/gun/energy/switch_firemodes(mob/user) + if(..()) + update_icon() + +/obj/item/weapon/gun/energy/emp_act(severity) + ..() + update_icon() + +/obj/item/weapon/gun/energy/consume_next_projectile() + if(!power_supply) return null + if(!ispath(projectile_type)) return null + if(!power_supply.checked_use(charge_cost)) return null + return new projectile_type(src) + +/obj/item/weapon/gun/energy/proc/load_ammo(var/obj/item/C, mob/user) + if(istype(C, /obj/item/weapon/cell)) + if(self_recharge || battery_lock) + user << "[src] does not have a battery port." + return + if(istype(C, accept_cell_type)) + var/obj/item/weapon/cell/P = C + if(power_supply) + user << "[src] already has a power cell." + else + user.visible_message("[user] is reloading [src].", "You start to insert [P] into [src].") + if(do_after(user, 5 * P.w_class)) + user.remove_from_mob(P) + power_supply = P + P.loc = src + user.visible_message("[user] inserts [P] into [src].", "You insert [P] into [src].") + playsound(src.loc, 'sound/weapons/flipblade.ogg', 50, 1) + update_icon() + update_held_icon() + else + user << "This cell is not fitted for [src]." + return + +/obj/item/weapon/gun/energy/proc/unload_ammo(mob/user) + if(self_recharge || battery_lock) + user << "[src] does not have a battery port." + return + if(power_supply) + user.put_in_hands(power_supply) + power_supply.update_icon() + user.visible_message("[user] removes [power_supply] from [src].", "You remove [power_supply] from [src].") + power_supply = null + playsound(src.loc, 'sound/weapons/empty.ogg', 50, 1) + update_icon() + update_held_icon() + else + user << "[src] does not have a power cell." + +/obj/item/weapon/gun/energy/attackby(var/obj/item/A as obj, mob/user as mob) + ..() + load_ammo(A, user) + +/obj/item/weapon/gun/energy/attack_hand(mob/user as mob) + if(user.get_inactive_hand() == src) + unload_ammo(user) + else + return ..() + +/obj/item/weapon/gun/energy/proc/get_external_power_supply() + if(isrobot(src.loc)) + var/mob/living/silicon/robot/R = src.loc + return R.cell + if(istype(src.loc, /obj/item/rig_module)) + var/obj/item/rig_module/module = src.loc + if(module.holder && module.holder.wearer) + var/mob/living/carbon/human/H = module.holder.wearer + if(istype(H) && H.back) + var/obj/item/weapon/rig/suit = H.back + if(istype(suit)) + return suit.cell + return null + +/obj/item/weapon/gun/energy/examine(mob/user) + . = ..() + if(power_supply) + if(charge_cost) + var/shots_remaining = round(power_supply.charge / max(1, charge_cost)) // Paranoia + to_chat(user, "Has [shots_remaining] shot\s remaining.") + else + to_chat(user, "Has infinite shots remaining.") + else + to_chat(user, "Does not have a power cell.") + return + +/obj/item/weapon/gun/energy/update_icon(var/ignore_inhands) + if(power_supply == null) + if(modifystate) + icon_state = "[modifystate]_open" + else + icon_state = "[initial(icon_state)]_open" + return + else if(charge_meter) + var/ratio = power_supply.charge / power_supply.maxcharge + + //make sure that rounding down will not give us the empty state even if we have charge for a shot left. + if(power_supply.charge < charge_cost) + ratio = 0 + else + ratio = max(round(ratio, 0.25) * 100, 25) + + if(modifystate) + icon_state = "[modifystate][ratio]" + else + icon_state = "[initial(icon_state)][ratio]" + + else if(power_supply) + if(modifystate) + icon_state = "[modifystate]" + else + icon_state = "[initial(icon_state)]" + + if(!ignore_inhands) update_held_icon() + +/obj/item/weapon/gun/energy/proc/start_recharge() + if(power_supply == null) + power_supply = new /obj/item/weapon/cell/device/weapon(src) + self_recharge = 1 + START_PROCESSING(SSobj, src) + update_icon() + +/obj/item/weapon/gun/energy/get_description_interaction() + var/list/results = list() + + if(!battery_lock && !self_recharge) + if(power_supply) + results += "[desc_panel_image("offhand")]to remove the weapon cell." + else + results += "[desc_panel_image("weapon cell")]to add a new weapon cell." + + results += ..() + return results \ No newline at end of file diff --git a/code/modules/projectiles/guns/energy/hooklauncher.dm b/code/modules/projectiles/guns/energy/hooklauncher.dm new file mode 100644 index 0000000000..2c170544a0 --- /dev/null +++ b/code/modules/projectiles/guns/energy/hooklauncher.dm @@ -0,0 +1,39 @@ +/* + * Contains weapons primarily using the 'grappling hook' projectiles. + */ + +/obj/item/weapon/gun/energy/hooklauncher + name = "gravity whip" + desc = "A large, strange gauntlet." + icon_state = "gravwhip" + item_state = "gravwhip" + fire_sound_text = "laser blast" + + fire_delay = 15 + charge_cost = 300 + + cell_type = /obj/item/weapon/cell/device/weapon + projectile_type = /obj/item/projectile/energy/hook + +// An easily concealable not-ripoff version. It would be silenced, if it didn't make it blatant you're the one using it. + +/obj/item/weapon/gun/energy/hooklauncher/ring + name = "ominous ring" + desc = "A small ring with strange symbols engraved upon it." + icon = 'icons/obj/clothing/rings.dmi' + icon_state = "seal-signet" + item_state = "concealed" + + w_class = ITEMSIZE_TINY + + cell_type = /obj/item/weapon/cell/device/weapon/recharge/alien + battery_lock = TRUE + charge_cost = 400 + charge_meter = FALSE + + projectile_type = /obj/item/projectile/energy/hook/ring + + firemodes = list( + list(mode_name="manipulate", fire_delay=15, projectile_type=/obj/item/projectile/energy/hook/ring, charge_cost = 400), + list(mode_name="battle", fire_delay=8, projectile_type=/obj/item/projectile/beam/xray, charge_cost = 260), + ) diff --git a/code/modules/projectiles/guns/energy/kinetic_accelerator_vr.dm b/code/modules/projectiles/guns/energy/kinetic_accelerator_vr.dm index f672e1b021..8a0dbeae4d 100644 --- a/code/modules/projectiles/guns/energy/kinetic_accelerator_vr.dm +++ b/code/modules/projectiles/guns/energy/kinetic_accelerator_vr.dm @@ -100,7 +100,7 @@ damage = 32 damage_type = BRUTE check_armour = "bomb" - kill_count = 3 // Our "range" var is named "kill_count". Yes it is. + range = 3 // Our "range" var is named "kill_count". Yes it is. var/pressure_decrease = 0.25 var/turf_aoe = FALSE @@ -219,7 +219,7 @@ cost = 24 //so you can fit four plus a tracer cosmetic /obj/item/borg/upgrade/modkit/range/modify_projectile(obj/item/projectile/kinetic/K) - K.kill_count += modifier + K.range += modifier //Damage diff --git a/code/modules/projectiles/guns/energy/laser.dm b/code/modules/projectiles/guns/energy/laser.dm index 5cfefc1bf5..6d7bdfef7a 100644 --- a/code/modules/projectiles/guns/energy/laser.dm +++ b/code/modules/projectiles/guns/energy/laser.dm @@ -56,9 +56,38 @@ cell_type = null +/datum/category_item/catalogue/anomalous/precursor_a/alien_pistol + name = "Precursor Alpha Weapon - Appendageheld Laser" + desc = "This object strongly resembles a weapon, and if one were to pull the \ + trigger located on the handle of the object, it would fire a deadly \ + laser at whatever it was pointed at. The beam fired appears to cause too \ + much damage to whatever it would hit to have served as a long ranged repair tool, \ + therefore this object was most likely designed to be a deadly weapon. If so, this \ + has several implications towards its creators;\ +

      \ + Firstly, it implies that these precursors, at some point during their development, \ + had needed to defend themselves, or otherwise had a need to utilize violence, and \ + as such created better tools to do so. It is unclear if violence was employed against \ + themselves as a form of in-fighting, or if violence was exclusive to outside species.\ +

      \ + Secondly, the shape and design of the weapon implies that the creators of this \ + weapon were able to grasp objects, and be able to manipulate the trigger independently \ + from merely holding onto the weapon, making certain types of appendages like tentacles be \ + unlikely.\ +

      \ + An interesting note about this weapon, when compared to contemporary energy weapons, is \ + that this gun appears to be inferior to modern laser weapons. The beam fired has less \ + of an ability to harm, and the power consumption appears to be higher than average for \ + a human-made energy side-arm. One possible explaination is that the creators of this \ + weapon, in their later years, had less of a need to optimize their capability for war, \ + and instead focused on other endeavors. Another explaination is that vast age of the weapon \ + may have caused it to degrade, yet still remain functional at a reduced capability." + value = CATALOGUER_REWARD_MEDIUM + /obj/item/weapon/gun/energy/alien name = "alien pistol" desc = "A weapon that works very similarly to a traditional energy weapon. How this came to be will likely be a mystery for the ages." + catalogue_data = list(/datum/category_item/catalogue/anomalous/precursor_a/alien_pistol) icon_state = "alienpistol" item_state = "alienpistol" fire_sound = 'sound/weapons/eLuger.ogg' @@ -130,7 +159,6 @@ icon_state = "sniper" item_state = "sniper" item_state_slots = list(slot_r_hand_str = "z8carbine", slot_l_hand_str = "z8carbine") //placeholder - fire_sound = 'sound/weapons/gauss_shoot.ogg' origin_tech = list(TECH_COMBAT = 6, TECH_MATERIAL = 5, TECH_POWER = 4) projectile_type = /obj/item/projectile/beam/sniper slot_flags = SLOT_BACK @@ -151,6 +179,41 @@ toggle_scope(2.0) +/obj/item/weapon/gun/energy/monorifle + name = "antique mono-rifle" + desc = "An old laser rifle. This one can only fire once before requiring recharging." + description_fluff = "Modeled after ancient hunting rifles, this rifle was dubbed the 'Rainy Day Special' by some, due to its use as some barmens' fight-stopper of choice. One shot is all it takes, or so they say." + icon_state = "eshotgun" + item_state = "shotgun" + origin_tech = list(TECH_COMBAT = 6, TECH_MATERIAL = 4, TECH_POWER = 3) + projectile_type = /obj/item/projectile/beam/sniper + slot_flags = SLOT_BACK + charge_cost = 1300 + fire_delay = 20 + force = 8 + w_class = ITEMSIZE_LARGE + accuracy = 10 + scoped_accuracy = 15 + var/scope_multiplier = 1.5 + +/obj/item/weapon/gun/energy/monorifle/verb/sights() + set category = "Object" + set name = "Aim Down Sights" + set popup_menu = 1 + + toggle_scope(scope_multiplier) + +/obj/item/weapon/gun/energy/monorifle/combat + name = "combat mono-rifle" + desc = "A modernized version of the mono-rifle. This one can fire twice before requiring recharging." + description_fluff = "A modern design produced by a company once working from Saint Columbia, based on the antique mono-rifle 'Rainy Day Special' design." + icon_state = "ecshotgun" + item_state = "cshotgun" + charge_cost = 1000 + force = 12 + accuracy = 0 + scoped_accuracy = 20 + ////////Laser Tag//////////////////// /obj/item/weapon/gun/energy/lasertag diff --git a/code/modules/projectiles/guns/energy/pulse.dm b/code/modules/projectiles/guns/energy/pulse.dm index 6513a00052..30eb8ecd37 100644 --- a/code/modules/projectiles/guns/energy/pulse.dm +++ b/code/modules/projectiles/guns/energy/pulse.dm @@ -22,7 +22,6 @@ /obj/item/weapon/gun/energy/pulse_rifle/destroyer name = "pulse destroyer" desc = "A heavy-duty, pulse-based energy weapon. Because of its complexity and cost, it is rarely seen in use except by specialists." - fire_sound='sound/weapons/gauss_shoot.ogg' projectile_type=/obj/item/projectile/beam/pulse charge_cost = 120 diff --git a/code/modules/projectiles/guns/energy/special.dm b/code/modules/projectiles/guns/energy/special.dm index f1e20b169b..3fe7a4f21c 100644 --- a/code/modules/projectiles/guns/energy/special.dm +++ b/code/modules/projectiles/guns/energy/special.dm @@ -7,7 +7,6 @@ origin_tech = list(TECH_COMBAT = 2, TECH_MAGNET = 4) w_class = ITEMSIZE_LARGE force = 10 - flags = CONDUCT slot_flags = SLOT_BACK projectile_type = /obj/item/projectile/ion @@ -30,7 +29,6 @@ desc = "A gun that discharges high amounts of controlled radiation to slowly break a target into component elements." icon_state = "decloner" item_state = "decloner" - fire_sound = 'sound/weapons/pulse3.ogg' origin_tech = list(TECH_COMBAT = 5, TECH_MATERIAL = 4, TECH_POWER = 3) projectile_type = /obj/item/projectile/energy/declone @@ -39,7 +37,6 @@ desc = "A tool that discharges controlled radiation which induces mutation in plant cells." icon_state = "floramut100" item_state = "floramut" - fire_sound = 'sound/effects/stealthoff.ogg' projectile_type = /obj/item/projectile/energy/floramut origin_tech = list(TECH_MATERIAL = 2, TECH_BIO = 3, TECH_POWER = 3) modifystate = "floramut" @@ -112,13 +109,11 @@ desc = "A custom-built weapon of some kind." icon_state = "xray" projectile_type = /obj/item/projectile/beam/mindflayer - fire_sound = 'sound/weapons/Laser.ogg' /obj/item/weapon/gun/energy/toxgun name = "phoron pistol" desc = "A specialized firearm designed to fire lethal bolts of phoron." icon_state = "toxgun" - fire_sound = 'sound/effects/stealthoff.ogg' w_class = ITEMSIZE_NORMAL origin_tech = list(TECH_COMBAT = 5, TECH_PHORON = 4) projectile_type = /obj/item/projectile/energy/phoron @@ -131,8 +126,6 @@ icon = 'icons/obj/gun.dmi' item_icons = null icon_state = "staffofchange" - fire_sound = 'sound/weapons/emitter.ogg' - flags = CONDUCT slot_flags = SLOT_BACK w_class = ITEMSIZE_LARGE charge_cost = 480 @@ -155,13 +148,13 @@ else src.visible_message("*fizzle*") playsound(src.loc, 'sound/effects/sparks1.ogg', 100, 1) - +/* /obj/item/weapon/gun/energy/staff/animate name = "staff of animation" desc = "An artifact that spits bolts of life force, which causes objects which are hit by it to animate and come to life! This magic doesn't affect machines." projectile_type = /obj/item/projectile/animate charge_cost = 240 - +*/ obj/item/weapon/gun/energy/staff/focus name = "mental focus" desc = "An artifact that channels the will of the user into destructive bolts of force. If you aren't careful with it, you might poke someone's brain out." @@ -186,7 +179,7 @@ obj/item/weapon/gun/energy/staff/focus desc = "A massive weapon designed to pressure the opposition by raining down a torrent of energy pellets." icon_state = "dakkalaser" item_state = "dakkalaser" - fire_sound = 'sound/weapons/Laser.ogg' + wielded_item_state = "dakkalaser-wielded" w_class = ITEMSIZE_HUGE charge_cost = 24 // 100 shots, it's a spray and pray (to RNGesus) weapon. projectile_type = /obj/item/projectile/energy/blue_pellet @@ -200,4 +193,93 @@ obj/item/weapon/gun/energy/staff/focus list(mode_name="single shot", burst = 1, burst_accuracy = list(75), dispersion = list(0), charge_cost = 24), list(mode_name="five shot burst", burst = 5, burst_accuracy = list(75,75,75,75,75), dispersion = list(1,1,1,1,1)), list(mode_name="ten shot burst", burst = 10, burst_accuracy = list(75,75,75,75,75,75,75,75,75,75), dispersion = list(2,2,2,2,2,2,2,2,2,2)), - ) \ No newline at end of file + ) + +/obj/item/weapon/gun/energy/maghowitzer + name = "portable MHD howitzer" + desc = "A massive weapon designed to destroy fortifications with a stream of molten tungsten." + description_fluff = "A weapon designed by joint cooperation of NanoTrasen, Hephaestus, and SCG scientists. Everything else is red tape and black highlighters." + description_info = "This weapon requires a wind-up period before being able to fire. Clicking on a target will create a beam between you and its turf, starting the timer. Upon completion, it will fire at the designated location." + icon_state = "mhdhowitzer" + item_state = "mhdhowitzer" + wielded_item_state = "mhdhowitzer-wielded" + w_class = ITEMSIZE_HUGE + + charge_cost = 10000 // Uses large cells, can at max have 3 shots. + projectile_type = /obj/item/projectile/beam/tungsten + cell_type = /obj/item/weapon/cell/high + accept_cell_type = /obj/item/weapon/cell + + accuracy = 75 + charge_meter = 0 + one_handed_penalty = 30 + + var/power_cycle = FALSE + +/obj/item/weapon/gun/energy/maghowitzer/proc/pick_random_target(var/turf/T) + var/foundmob = FALSE + var/foundmobs = list() + for(var/mob/living/L in T.contents) + foundmob = TRUE + foundmobs += L + if(foundmob) + var/return_target = pick(foundmobs) + return return_target + return FALSE + +/obj/item/weapon/gun/energy/maghowitzer/attack(atom/A, mob/living/user, def_zone) + if(power_cycle) + to_chat(user, "\The [src] is already powering up!") + return 0 + var/turf/target_turf = get_turf(A) + var/beameffect = user.Beam(target_turf,icon_state="sat_beam",icon='icons/effects/beam.dmi',time=31, maxdistance=10,beam_type=/obj/effect/ebeam,beam_sleep_time=3) + if(beameffect) + user.visible_message("[user] aims \the [src] at \the [A].") + if(power_supply && power_supply.charge >= charge_cost) //Do a delay for pointblanking too. + power_cycle = TRUE + if(do_after(user, 30)) + if(A.loc == target_turf) + ..(A, user, def_zone) + else + var/rand_target = pick_random_target(target_turf) + if(rand_target) + ..(rand_target, user, def_zone) + else + ..(target_turf, user, def_zone) + else + if(beameffect) + qdel(beameffect) + power_cycle = FALSE + else + ..(A, user, def_zone) //If it can't fire, just bash with no delay. + +/obj/item/weapon/gun/energy/maghowitzer/afterattack(atom/A, mob/living/user, adjacent, params) + if(power_cycle) + to_chat(user, "\The [src] is already powering up!") + return 0 + + var/turf/target_turf = get_turf(A) + + var/beameffect = user.Beam(target_turf,icon_state="sat_beam",icon='icons/effects/beam.dmi',time=31, maxdistance=10,beam_type=/obj/effect/ebeam,beam_sleep_time=3) + + if(beameffect) + user.visible_message("[user] aims \the [src] at \the [A].") + + if(!power_cycle) + power_cycle = TRUE + if(do_after(user, 30)) + if(A.loc == target_turf) + ..(A, user, adjacent, params) + else + var/rand_target = pick_random_target(target_turf) + if(rand_target) + ..(rand_target, user, adjacent, params) + else + ..(target_turf, user, adjacent, params) + else + if(beameffect) + qdel(beameffect) + handle_click_empty(user) + power_cycle = FALSE + else + to_chat(user, "\The [src] is already powering up!") diff --git a/code/modules/projectiles/guns/energy/stun.dm b/code/modules/projectiles/guns/energy/stun.dm index 312a6b0648..a23cf5bb4b 100644 --- a/code/modules/projectiles/guns/energy/stun.dm +++ b/code/modules/projectiles/guns/energy/stun.dm @@ -4,6 +4,7 @@ icon_state = "taser" item_state = null //so the human update icon uses the icon_state instead. projectile_type = /obj/item/projectile/beam/stun + charge_cost = 480 /obj/item/weapon/gun/energy/taser/mounted name = "mounted taser gun" @@ -36,7 +37,6 @@ matter = list(DEFAULT_WALL_MATERIAL = 2000) slot_flags = SLOT_BELT | SLOT_HOLSTER silenced = 1 - fire_sound = 'sound/weapons/Genhit.ogg' projectile_type = /obj/item/projectile/energy/bolt charge_cost = 480 cell_type = /obj/item/weapon/cell/device/weapon/recharge diff --git a/code/modules/projectiles/guns/energy/temperature.dm b/code/modules/projectiles/guns/energy/temperature.dm index 5e24564292..cf9706effd 100644 --- a/code/modules/projectiles/guns/energy/temperature.dm +++ b/code/modules/projectiles/guns/energy/temperature.dm @@ -1,7 +1,6 @@ /obj/item/weapon/gun/energy/temperature name = "temperature gun" icon_state = "freezegun" - fire_sound = 'sound/weapons/pulse3.ogg' desc = "A gun that can add or remove heat from entities it hits. In other words, it can fire 'cold', and 'hot' beams." charge_cost = 240 origin_tech = list(TECH_COMBAT = 3, TECH_MATERIAL = 4, TECH_POWER = 3, TECH_MAGNET = 2) diff --git a/code/modules/projectiles/guns/launcher.dm b/code/modules/projectiles/guns/launcher.dm index 82a6e07fc3..869f6c8b60 100644 --- a/code/modules/projectiles/guns/launcher.dm +++ b/code/modules/projectiles/guns/launcher.dm @@ -2,7 +2,6 @@ name = "launcher" desc = "A device that launches things." w_class = ITEMSIZE_HUGE - flags = CONDUCT slot_flags = SLOT_BACK var/release_force = 0 diff --git a/code/modules/projectiles/guns/launcher/grenade_launcher.dm b/code/modules/projectiles/guns/launcher/grenade_launcher.dm index 207572a8c6..38d84f384a 100644 --- a/code/modules/projectiles/guns/launcher/grenade_launcher.dm +++ b/code/modules/projectiles/guns/launcher/grenade_launcher.dm @@ -6,7 +6,7 @@ w_class = ITEMSIZE_LARGE force = 10 - fire_sound = 'sound/weapons/empty.ogg' + fire_sound = 'sound/weapons/grenade_launcher.ogg' fire_sound_text = "a metallic thunk" recoil = 0 throw_distance = 7 diff --git a/code/modules/projectiles/guns/launcher/pneumatic.dm b/code/modules/projectiles/guns/launcher/pneumatic.dm index e737507b2c..45be1c017e 100644 --- a/code/modules/projectiles/guns/launcher/pneumatic.dm +++ b/code/modules/projectiles/guns/launcher/pneumatic.dm @@ -5,10 +5,9 @@ item_state = "pneumatic" slot_flags = SLOT_BELT w_class = ITEMSIZE_HUGE - flags = CONDUCT fire_sound_text = "a loud whoosh of moving air" fire_delay = 50 - fire_sound = 'sound/weapons/tablehit1.ogg' + fire_sound = 'sound/weapons/grenade_launcher.ogg' // Formerly tablehit1.ogg but I like this better -Ace var/fire_pressure // Used in fire checks/pressure checks. var/max_w_class = ITEMSIZE_NORMAL // Hopper intake size. diff --git a/code/modules/projectiles/guns/launcher/rocket.dm b/code/modules/projectiles/guns/launcher/rocket.dm index dae5a5c8ee..21fdbb14f6 100644 --- a/code/modules/projectiles/guns/launcher/rocket.dm +++ b/code/modules/projectiles/guns/launcher/rocket.dm @@ -7,7 +7,6 @@ throw_speed = 2 throw_range = 10 force = 5.0 - flags = CONDUCT slot_flags = 0 origin_tech = list(TECH_COMBAT = 8, TECH_MATERIAL = 5) fire_sound = 'sound/weapons/rpg.ogg' diff --git a/code/modules/projectiles/guns/launcher/syringe_gun.dm b/code/modules/projectiles/guns/launcher/syringe_gun.dm index 12a107b642..434f317d88 100644 --- a/code/modules/projectiles/guns/launcher/syringe_gun.dm +++ b/code/modules/projectiles/guns/launcher/syringe_gun.dm @@ -5,7 +5,6 @@ icon_state = "syringe-cartridge" var/icon_flight = "syringe-cartridge-flight" //so it doesn't look so weird when shot matter = list(DEFAULT_WALL_MATERIAL = 125, "glass" = 375) - flags = CONDUCT slot_flags = SLOT_BELT | SLOT_EARS throwforce = 3 force = 3 diff --git a/code/modules/projectiles/guns/magnetic/bore.dm b/code/modules/projectiles/guns/magnetic/bore.dm new file mode 100644 index 0000000000..e27fdc38d6 --- /dev/null +++ b/code/modules/projectiles/guns/magnetic/bore.dm @@ -0,0 +1,141 @@ +/obj/item/weapon/gun/magnetic/matfed + name = "portable phoron bore" + desc = "A large man-portable tunnel bore, using phorogenic plasma blasts. Point away from user." + description_fluff = "An aging Grayson Manufactories mining tool used for rapidly digging through rock. Mass production was discontinued when many of the devices were stolen and used to break into a high security facility by Boiling Point drones." + description_antag = "This device is exceptional at breaking down walls, though it is incredibly loud when doing so." + description_info = "The projectile of this tool will travel six tiles before dissipating, excavating mineral walls as it does so. It can be reloaded with phoron sheets." + + icon_state = "bore" + item_state = "bore" + wielded_item_state = "bore-wielded" + one_handed_penalty = 5 + + projectile_type = /obj/item/projectile/bullet/magnetic/bore + + gun_unreliable = 0 + + power_cost = 750 + load_type = /obj/item/stack/material + var/mat_storage = 0 // How much material is stored inside? Input in multiples of 2000 as per auto/protolathe. + var/max_mat_storage = 8000 // How much material can be stored inside? + var/mat_cost = 500 // How much material is used per-shot? + var/ammo_material = MAT_PHORON + var/loading = FALSE + +/obj/item/weapon/gun/magnetic/matfed/examine(mob/user) + . = ..() + show_ammo(user) + +/obj/item/weapon/gun/magnetic/matfed/update_icon() + var/list/overlays_to_add = list() + if(removable_components) + if(cell) + overlays_to_add += image(icon, "[icon_state]_cell") + if(capacitor) + overlays_to_add += image(icon, "[icon_state]_capacitor") + if(!cell || !capacitor) + overlays_to_add += image(icon, "[icon_state]_red") + else if(capacitor.charge < power_cost) + overlays_to_add += image(icon, "[icon_state]_amber") + else + overlays_to_add += image(icon, "[icon_state]_green") + if(mat_storage) + overlays_to_add += image(icon, "[icon_state]_loaded") + + overlays = overlays_to_add + ..() +/obj/item/weapon/gun/magnetic/matfed/attack_hand(var/mob/user) // It doesn't keep a loaded item inside. + if(user.get_inactive_hand() == src) + var/obj/item/removing + + if(cell && removable_components) + removing = cell + cell = null + + if(removing) + removing.forceMove(get_turf(src)) + user.put_in_hands(removing) + user.visible_message("\The [user] removes \the [removing] from \the [src].") + playsound(loc, 'sound/machines/click.ogg', 10, 1) + update_icon() + return + . = ..() + +/obj/item/weapon/gun/magnetic/matfed/check_ammo() + if(mat_storage - mat_cost >= 0) + return TRUE + return FALSE + +/obj/item/weapon/gun/magnetic/matfed/use_ammo() + mat_storage -= mat_cost + +/obj/item/weapon/gun/magnetic/matfed/show_ammo(var/mob/user) + if(mat_storage) + to_chat(user, "It has [mat_storage] out of [max_mat_storage] units of [ammo_material] loaded.") + +/obj/item/weapon/gun/magnetic/matfed/attackby(var/obj/item/thing, var/mob/user) + if(removable_components) + if(istype(thing, /obj/item/weapon/cell)) + if(cell) + to_chat(user, "\The [src] already has \a [cell] installed.") + return + cell = thing + user.drop_from_inventory(cell) + cell.forceMove(src) + playsound(loc, 'sound/machines/click.ogg', 10, 1) + user.visible_message("\The [user] slots \the [cell] into \the [src].") + update_icon() + return + + if(thing.is_screwdriver()) + if(!capacitor) + to_chat(user, "\The [src] has no capacitor installed.") + return + capacitor.forceMove(get_turf(src)) + user.put_in_hands(capacitor) + user.visible_message("\The [user] unscrews \the [capacitor] from \the [src].") + playsound(loc, 'sound/items/Screwdriver.ogg', 50, 1) + capacitor = null + update_icon() + return + + if(istype(thing, /obj/item/weapon/stock_parts/capacitor)) + if(capacitor) + to_chat(user, "\The [src] already has \a [capacitor] installed.") + return + capacitor = thing + user.drop_from_inventory(capacitor) + capacitor.forceMove(src) + playsound(loc, 'sound/machines/click.ogg', 10, 1) + power_per_tick = (power_cost*0.15) * capacitor.rating + user.visible_message("\The [user] slots \the [capacitor] into \the [src].") + update_icon() + return + + if(istype(thing, load_type)) + loading = TRUE + var/obj/item/stack/material/M = thing + + if(!M.material || M.material.name != ammo_material) + return + + if(mat_storage + 2000 > max_mat_storage) + to_chat(user, "\The [src] cannot hold more [ammo_material].") + return + + var/can_hold_val = 0 + while(can_hold_val < round(max_mat_storage / 2000)) + if(mat_storage + 2000 <= max_mat_storage && do_after(user,1.5 SECONDS)) + can_hold_val ++ + mat_storage += 2000 + playsound(loc, 'sound/effects/phasein.ogg', 15, 1) + else + loading = FALSE + break + M.use(can_hold_val) + + user.visible_message("\The [user] loads \the [src] with \the [M].") + playsound(loc, 'sound/weapons/flipblade.ogg', 50, 1) + update_icon() + return + . = ..() diff --git a/code/modules/projectiles/guns/magnetic/magnetic.dm b/code/modules/projectiles/guns/magnetic/magnetic.dm index 298098698e..20e0ea8512 100644 --- a/code/modules/projectiles/guns/magnetic/magnetic.dm +++ b/code/modules/projectiles/guns/magnetic/magnetic.dm @@ -20,17 +20,15 @@ var/power_cost = 950 // Cost per fire, should consume almost an entire basic cell. var/power_per_tick // Capacitor charge per process(). Updated based on capacitor rating. - fire_sound = 'sound/weapons/railgun.ogg' - /obj/item/weapon/gun/magnetic/New() - processing_objects.Add(src) + START_PROCESSING(SSobj, src) if(capacitor) power_per_tick = (power_cost*0.15) * capacitor.rating update_icon() . = ..() /obj/item/weapon/gun/magnetic/Destroy() - processing_objects.Remove(src) + STOP_PROCESSING(SSobj, src) QDEL_NULL(cell) QDEL_NULL(loaded) QDEL_NULL(capacitor) diff --git a/code/modules/projectiles/guns/magnetic/magnetic_railgun.dm b/code/modules/projectiles/guns/magnetic/magnetic_railgun.dm index 466fbd3b33..0be62e0688 100644 --- a/code/modules/projectiles/guns/magnetic/magnetic_railgun.dm +++ b/code/modules/projectiles/guns/magnetic/magnetic_railgun.dm @@ -102,7 +102,6 @@ load_type = /obj/item/weapon/magnetic_ammo projectile_type = /obj/item/projectile/bullet/magnetic/flechette loaded = /obj/item/weapon/magnetic_ammo - fire_sound = 'sound/weapons/rapidslice.ogg' empty_sound = 'sound/weapons/smg_empty_alarm.ogg' firemodes = list( diff --git a/code/modules/projectiles/guns/modular_guns.dm b/code/modules/projectiles/guns/modular_guns.dm index 64b33347cd..38e2ed1a93 100644 --- a/code/modules/projectiles/guns/modular_guns.dm +++ b/code/modules/projectiles/guns/modular_guns.dm @@ -121,10 +121,10 @@ chargecost_lethal = 200 firemodes = list( - new /datum/firemode(src, list(mode_name="stun", projectile_type=beammode, fire_sound='sound/weapons/Taser.ogg', charge_cost = chargecost)), - new /datum/firemode(src, list(mode_name="lethal", projectile_type=beammode_lethal, fire_sound='sound/weapons/Laser.ogg', charge_cost = chargecost_lethal)), - new /datum/firemode(src, list(mode_name="[burstmode] shot stun", projectile_type=beammode, fire_sound='sound/weapons/Taser.ogg', charge_cost = chargecost, burst = burstmode)), - new /datum/firemode(src, list(mode_name="[burstmode] shot lethal", projectile_type=beammode_lethal, fire_sound='sound/weapons/Laser.ogg', charge_cost = chargecost_lethal, burst = burstmode)), + new /datum/firemode(src, list(mode_name="stun", projectile_type=beammode, charge_cost = chargecost)), + new /datum/firemode(src, list(mode_name="lethal", projectile_type=beammode_lethal, charge_cost = chargecost_lethal)), + new /datum/firemode(src, list(mode_name="[burstmode] shot stun", projectile_type=beammode, charge_cost = chargecost, burst = burstmode)), + new /datum/firemode(src, list(mode_name="[burstmode] shot lethal", projectile_type=beammode_lethal, charge_cost = chargecost_lethal, burst = burstmode)), ) /obj/item/weapon/gun/energy/modular/load_ammo(var/obj/item/C, mob/user) diff --git a/code/modules/projectiles/guns/projectile.dm b/code/modules/projectiles/guns/projectile.dm index 6539ba7c4a..d0549bbf4c 100644 --- a/code/modules/projectiles/guns/projectile.dm +++ b/code/modules/projectiles/guns/projectile.dm @@ -10,7 +10,7 @@ w_class = ITEMSIZE_NORMAL matter = list(DEFAULT_WALL_MATERIAL = 1000) recoil = 1 - projectile_type = /obj/item/projectile/bullet/pistol/strong //Only used for Cham Guns + projectile_type = /obj/item/projectile/bullet/pistol/strong //Only used for chameleon guns var/caliber = ".357" //determines which casings will fit var/handle_casings = EJECT_CASINGS //determines how spent casings should be handled @@ -84,8 +84,12 @@ switch(handle_casings) if(EJECT_CASINGS) //eject casing onto ground. - chambered.loc = get_turf(src) - playsound(src.loc, "casing", 50, 1) + if(chambered.caseless) + qdel(chambered) + return + else + chambered.loc = get_turf(src) + playsound(src.loc, "casing", 50, 1) if(CYCLE_CASINGS) //cycle the casing back to the end. if(ammo_magazine) ammo_magazine.stored_ammo += chambered diff --git a/code/modules/projectiles/guns/projectile/automatic.dm b/code/modules/projectiles/guns/projectile/automatic.dm index a1afc075b5..a9d3125253 100644 --- a/code/modules/projectiles/guns/projectile/automatic.dm +++ b/code/modules/projectiles/guns/projectile/automatic.dm @@ -13,29 +13,32 @@ list(mode_name="semiauto", burst=1, fire_delay=0, move_delay=null, burst_accuracy=null, dispersion=null), list(mode_name="3-round bursts", burst=3, fire_delay=null, move_delay=4, burst_accuracy=list(0,-15,-15), dispersion=list(0.0, 0.6, 1.0))) -/obj/item/weapon/gun/projectile/automatic/saber //Fixed it - name = "prototype SMG" - desc = "A protoype lightweight, fast firing gun. Uses 9mm rounds." +/obj/item/weapon/gun/projectile/automatic/advanced_smg + name = "advanced SMG" + desc = "An advanced submachine gun with a reflective laser optic that makes burst fire less inaccurate than other SMGs. Uses 9mm rounds." icon = 'icons/obj/gun.dmi' - icon_state = "saber"//Still ugly + icon_state = "advanced_smg-empty" w_class = ITEMSIZE_NORMAL - load_method = MAGAZINE //This should fix it - max_shells = 22 + load_method = MAGAZINE caliber = "9mm" origin_tech = list(TECH_COMBAT = 4, TECH_MATERIAL = 2) slot_flags = SLOT_BELT - magazine_type = /obj/item/ammo_magazine/m9mmR/saber - allowed_magazines = list(/obj/item/ammo_magazine/m9mmR/saber, /obj/item/ammo_magazine/m9mmR/saber/ap) - projectile_type = /obj/item/projectile/bullet/pistol - multi_aim = 1 - burst_delay = 2 + magazine_type = null // R&D builds this. Starts unloaded. + allowed_magazines = list(/obj/item/ammo_magazine/m9mmAdvanced, /obj/item/ammo_magazine/m9mm) firemodes = list( list(mode_name="semiauto", burst=1, fire_delay=0, move_delay=null, burst_accuracy=null, dispersion=null), - list(mode_name="3-round bursts", burst=3, fire_delay=null, move_delay=4, burst_accuracy=list(0,-15,-15), dispersion=list(0.0, 0.6, 1.0)) - // list(mode_name="short bursts", burst=5, fire_delay=null, move_delay=4, burst_accuracy=list(0,-15,-15,-30,-30), dispersion=list(0.6, 1.0, 1.0, 1.0, 1.2)), + list(mode_name="3-round bursts", burst=3, fire_delay=null, move_delay=4, burst_accuracy=list(0,-10,-10), dispersion=list(0.0, 0.3, 0.6)) ) +/obj/item/weapon/gun/projectile/automatic/advanced_smg/update_icon() + ..() + icon_state = (ammo_magazine)? "advanced_smg" : "advanced_smg-empty" + return + +/obj/item/weapon/gun/projectile/automatic/advanced_smg/loaded + magazine_type = /obj/item/ammo_magazine/m9mmAdvanced + /obj/item/weapon/gun/projectile/automatic/c20r name = "submachine gun" desc = "The C-20r is a lightweight and rapid firing SMG, for when you REALLY need someone dead. It has 'Scarborough Arms - Per falcis, per pravitas' inscribed on the stock. Uses 10mm rounds." @@ -46,7 +49,6 @@ caliber = "10mm" origin_tech = list(TECH_COMBAT = 5, TECH_MATERIAL = 2, TECH_ILLEGAL = 8) slot_flags = SLOT_BELT|SLOT_BACK - fire_sound = 'sound/weapons/Gunshot_light.ogg' load_method = MAGAZINE magazine_type = /obj/item/ammo_magazine/m10mm allowed_magazines = list(/obj/item/ammo_magazine/m10mm) @@ -107,7 +109,6 @@ origin_tech = list(TECH_COMBAT = 5, TECH_MATERIAL = 2) slot_flags = SLOT_BELT ammo_type = "/obj/item/ammo_casing/a9mmr" - fire_sound = 'sound/weapons/Gunshot_light.ogg' load_method = MAGAZINE magazine_type = /obj/item/ammo_magazine/m9mmt/rubber allowed_magazines = list(/obj/item/ammo_magazine/m9mmt) @@ -131,7 +132,6 @@ force = 10 caliber = "7.62mm" origin_tech = list(TECH_COMBAT = 8, TECH_MATERIAL = 3) - fire_sound = 'sound/weapons/Gunshot.ogg' slot_flags = SLOT_BACK load_method = MAGAZINE magazine_type = /obj/item/ammo_magazine/m762 @@ -204,7 +204,6 @@ caliber = "5.45mm" origin_tech = list(TECH_COMBAT = 6, TECH_MATERIAL = 1, TECH_ILLEGAL = 2) slot_flags = SLOT_BACK - fire_sound = 'sound/weapons/machinegun.ogg' load_method = MAGAZINE magazine_type = /obj/item/ammo_magazine/m545saw allowed_magazines = list(/obj/item/ammo_magazine/m545saw, /obj/item/ammo_magazine/m545) @@ -300,9 +299,9 @@ /obj/item/weapon/gun/projectile/automatic/as24/update_icon() ..() if(ammo_magazine) - icon_state = "ashot-[round(ammo_magazine.stored_ammo.len,12)]" - else icon_state = "ashot" + else + icon_state = "ashot-empty" return /obj/item/weapon/gun/projectile/automatic/mini_uzi @@ -337,7 +336,6 @@ caliber = "9mm" origin_tech = list(TECH_COMBAT = 5, TECH_MATERIAL = 2) slot_flags = SLOT_BELT // ToDo: Belt sprite. - fire_sound = 'sound/weapons/Gunshot_light.ogg' load_method = MAGAZINE magazine_type = /obj/item/ammo_magazine/m9mmp90 allowed_magazines = list(/obj/item/ammo_magazine/m9mmp90, /obj/item/ammo_magazine/m9mmt) // ToDo: New sprite for the different mag. @@ -351,7 +349,7 @@ icon_state = "p90smg-[ammo_magazine ? round(ammo_magazine.stored_ammo.len, 6) : "empty"]" /obj/item/weapon/gun/projectile/automatic/tommygun - name = "\improper Tommygun" + name = "\improper Tommy Gun" desc = "This weapon was made famous by gangsters in the 20th century. Cybersun Industries is currently reproducing these for a target market of historic gun collectors and classy criminals. Uses .45 rounds." icon_state = "tommygun" w_class = ITEMSIZE_NORMAL diff --git a/code/modules/projectiles/guns/projectile/boltaction.dm b/code/modules/projectiles/guns/projectile/boltaction.dm index 47dbda54d1..8e579d659f 100644 --- a/code/modules/projectiles/guns/projectile/boltaction.dm +++ b/code/modules/projectiles/guns/projectile/boltaction.dm @@ -5,7 +5,7 @@ desc = "A reproduction of an almost ancient weapon design from the early 20th century. It's still popular among hunters and collectors due to its reliability. Uses 7.62mm rounds." item_state = "boltaction" icon_state = "boltaction" - fire_sound = 'sound/weapons/rifleshot.ogg' + fire_sound = 'sound/weapons/Gunshot_generic_rifle.ogg' max_shells = 5 caliber = "7.62mm" origin_tech = list(TECH_COMBAT = 1)// Old as shit rifle doesn't have very good tech. @@ -29,7 +29,7 @@ if(istype(A, /obj/item/weapon/surgical/circular_saw) || istype(A, /obj/item/weapon/melee/energy) || istype(A, /obj/item/weapon/pickaxe/plasmacutter) && w_class != ITEMSIZE_NORMAL) user << "You begin to shorten the barrel and stock of \the [src]." if(loaded.len) - afterattack(user, user) //will this work? //it will. we call it twice, for twice the FUN + afterattack(user, user) playsound(user, fire_sound, 50, 1) user.visible_message("[src] goes off!", "The rifle goes off in your face!") return @@ -53,17 +53,13 @@ desc = "A reproduction of an almost ancient weapon design from the 19th century. This one uses a lever-action to move new rounds into the chamber. Uses 7.62mm rounds." item_state = "leveraction" icon_state = "leveraction" - fire_sound = 'sound/weapons/rifleshot.ogg' max_shells = 5 caliber = "7.62mm" - origin_tech = list(TECH_COMBAT = 1)// Old as shit rifle doesn't have very good tech. - ammo_type = /obj/item/ammo_casing/a762 - load_method = SINGLE_CASING|SPEEDLOADER - action_sound = 'sound/weapons/riflebolt.ogg' + load_method = SINGLE_CASING /obj/item/weapon/gun/projectile/shotgun/pump/rifle/lever/vintage name = "vintage repeater" - desc = "An iconic manually operated lever action rifle, offering adequate stopping power due to it's still powerful cartridge while at the same time having a rather respectable firing rate due to it's mechanism. It is very probable this is a replica instead of a museum piece, but rifles of this pattern still see usage as colonist guns in some far off regions. Uses 7,62mm ammo." - item_state = "levercarabine" + desc = "An iconic manually operated lever action rifle, offering adequate stopping power due to it's still powerful cartridge while at the same time having a rather respectable firing rate due to it's mechanism. It is very probable this is a replica instead of a museum piece, but rifles of this pattern still see usage as colonist guns in some far off regions. Uses 7.62mm rounds." + item_state = "levercarabine" // That isn't how carbine is spelled ya knob! :U icon_state = "levercarabine" animated_pump = 1 diff --git a/code/modules/projectiles/guns/projectile/caseless.dm b/code/modules/projectiles/guns/projectile/caseless.dm new file mode 100644 index 0000000000..8d5dd9a19c --- /dev/null +++ b/code/modules/projectiles/guns/projectile/caseless.dm @@ -0,0 +1,21 @@ +/obj/item/weapon/gun/projectile/caseless/prototype + name = "prototype caseless rifle" + desc = "A rifle cooked up in NanoTrasen's R&D labs that operates with Kraut Space Magic™ clockwork internals. Uses solid phoron 5mm caseless rounds." + icon_state = "caseless" + item_state = "caseless" + w_class = ITEMSIZE_LARGE + caliber = "5mm caseless" + origin_tech = list(TECH_COMBAT = 2, TECH_MATERIAL = 3) + slot_flags = SLOT_BACK + load_method = MAGAZINE + magazine_type = null // R&D builds this. Starts unloaded. + allowed_magazines = list(/obj/item/ammo_magazine/m5mmcaseless) + +/obj/item/weapon/gun/projectile/caseless/prototype/update_icon() + if(ammo_magazine) + icon_state = initial(icon_state) + else + icon_state = "[initial(icon_state)]-empty" + +/obj/item/weapon/gun/projectile/caseless/prototype/loaded + magazine_type = /obj/item/ammo_magazine/m5mmcaseless \ No newline at end of file diff --git a/code/modules/projectiles/guns/projectile/dartgun.dm b/code/modules/projectiles/guns/projectile/dartgun.dm index 080c7cc1a6..4958accb64 100644 --- a/code/modules/projectiles/guns/projectile/dartgun.dm +++ b/code/modules/projectiles/guns/projectile/dartgun.dm @@ -3,7 +3,7 @@ icon_state = "dart" damage = 5 var/reagent_amount = 15 - kill_count = 15 //shorter range + range = 15 //shorter range muzzle_type = null diff --git a/code/modules/projectiles/guns/projectile/pistol.dm b/code/modules/projectiles/guns/projectile/pistol.dm index c7518c5aa6..7a32ea21fa 100644 --- a/code/modules/projectiles/guns/projectile/pistol.dm +++ b/code/modules/projectiles/guns/projectile/pistol.dm @@ -132,8 +132,8 @@ item_state = "deagle" force = 14.0 caliber = ".44" + fire_sound = 'sound/weapons/Gunshot_deagle.ogg' load_method = MAGAZINE - fire_sound = 'sound/weapons/deagle.ogg' magazine_type = /obj/item/ammo_magazine/m44 allowed_magazines = list(/obj/item/ammo_magazine/m44) @@ -154,33 +154,13 @@ icon_state = "deaglecamo" item_state = "deagleg" -/* -/obj/item/weapon/gun/projectile/fiveseven - name = "\improper WT-AP57" - desc = "This tacticool pistol made by Ward-Takahashi trades stopping power for armor piercing and a large capacity. Uses 5mm rounds." - icon_state = "fnseven" - origin_tech = list(TECH_COMBAT = 3, TECH_MATERIAL = 2) - caliber = "5mm" - load_method = MAGAZINE - fire_sound = 'sound/weapons/semiauto.ogg' - magazine_type = /obj/item/ammo_magazine/c5mm - allowed_magazines = list(/obj/item/ammo_magazine/c5mm) - -/obj/item/weapon/gun/projectile/fiveseven/update_icon() - ..() - if(ammo_magazine) - icon_state = "fnseven" - else - icon_state = "fnseven-empty" -*/ - /obj/item/weapon/gun/projectile/gyropistol // Does this even appear anywhere outside of admin abuse? name = "gyrojet pistol" desc = "Speak softly, and carry a big gun. Fires rare .75 caliber self-propelled exploding bolts--because fuck you and everything around you." icon_state = "gyropistol" max_shells = 8 caliber = ".75" - fire_sound = 'sound/weapons/rpg.ogg' + fire_sound = 'sound/weapons/railgun.ogg' origin_tech = list(TECH_COMBAT = 3) ammo_type = "/obj/item/ammo_casing/a75" load_method = MAGAZINE @@ -331,7 +311,6 @@ origin_tech = list(TECH_COMBAT = 3, TECH_MATERIAL = 2) caliber = "9mm" load_method = MAGAZINE - fire_sound = 'sound/weapons/gunshot3.ogg' magazine_type = /obj/item/ammo_magazine/m9mm allowed_magazines = list(/obj/item/ammo_magazine/m9mm) // Can accept illegal large capacity magazines, or compact magazines. diff --git a/code/modules/projectiles/guns/projectile/revolver.dm b/code/modules/projectiles/guns/projectile/revolver.dm index 2d25265ea5..85d8d5ecdf 100644 --- a/code/modules/projectiles/guns/projectile/revolver.dm +++ b/code/modules/projectiles/guns/projectile/revolver.dm @@ -46,7 +46,6 @@ icon_state = "detective" caliber = ".38" origin_tech = list(TECH_COMBAT = 2, TECH_MATERIAL = 2) - fire_sound = 'sound/weapons/gunshot3.ogg' ammo_type = /obj/item/ammo_casing/a38 /obj/item/weapon/gun/projectile/revolver/detective/verb/rename_gun() @@ -73,7 +72,6 @@ icon_state = "detective" caliber = ".45" origin_tech = list(TECH_COMBAT = 2, TECH_MATERIAL = 2) - fire_sound = 'sound/weapons/gunshot_heavy.ogg' ammo_type = /obj/item/ammo_casing/a45/rubber max_shells = 7 @@ -125,7 +123,6 @@ obj/item/weapon/gun/projectile/revolver/detective45/verb/rename_gun() icon_state = "deckard-empty" caliber = ".38" origin_tech = list(TECH_COMBAT = 2, TECH_MATERIAL = 2) - fire_sound = 'sound/weapons/gunshot3.ogg' ammo_type = /obj/item/ammo_casing/a38 /obj/item/weapon/gun/projectile/revolver/deckard/emp diff --git a/code/modules/projectiles/guns/projectile/semiauto.dm b/code/modules/projectiles/guns/projectile/semiauto.dm index d4cd616188..a1dd63cf97 100644 --- a/code/modules/projectiles/guns/projectile/semiauto.dm +++ b/code/modules/projectiles/guns/projectile/semiauto.dm @@ -7,7 +7,7 @@ caliber = "7.62mm" origin_tech = list(TECH_COMBAT = 2, TECH_MATERIAL = 2) slot_flags = SLOT_BACK - fire_sound = 'sound/weapons/rifleshot.ogg' + //fire_sound = 'sound/weapons/rifleshot.ogg' load_method = MAGAZINE // ToDo: Make it so MAGAZINE, SPEEDLOADER and SINGLE_CASING can all be used on the same gun. magazine_type = /obj/item/ammo_magazine/m762garand allowed_magazines = list(/obj/item/ammo_magazine/m762garand) diff --git a/code/modules/projectiles/guns/projectile/shotgun.dm b/code/modules/projectiles/guns/projectile/shotgun.dm index 23fd373887..315c6edca0 100644 --- a/code/modules/projectiles/guns/projectile/shotgun.dm +++ b/code/modules/projectiles/guns/projectile/shotgun.dm @@ -6,7 +6,6 @@ max_shells = 4 w_class = ITEMSIZE_LARGE force = 10 - flags = CONDUCT slot_flags = SLOT_BACK caliber = "12g" origin_tech = list(TECH_COMBAT = 4, TECH_MATERIAL = 2) @@ -41,14 +40,14 @@ loaded -= AC //Remove casing from loaded list. chambered = AC - if(animated_pump)//This affects all bolt action and shotguns. + if(animated_pump)//This affects all bolt action and shotguns. flick("[icon_state]-cycling", src)//This plays any pumping update_icon() /obj/item/weapon/gun/projectile/shotgun/pump/update_icon()//This adds empty sprite capability for shotguns. ..() - if(!empty_sprite)//Just a dirty check + if(!empty_sprite)//Just a dirty check return if((loaded.len) || (chambered)) icon_state = "[icon_state]" @@ -80,7 +79,6 @@ max_shells = 2 w_class = ITEMSIZE_LARGE force = 10 - flags = CONDUCT slot_flags = SLOT_BACK caliber = "12g" origin_tech = list(TECH_COMBAT = 3, TECH_MATERIAL = 1) diff --git a/code/modules/projectiles/guns/projectile/sniper.dm b/code/modules/projectiles/guns/projectile/sniper.dm index 230e2b4d50..76a6faf1d7 100644 --- a/code/modules/projectiles/guns/projectile/sniper.dm +++ b/code/modules/projectiles/guns/projectile/sniper.dm @@ -84,7 +84,7 @@ scoped_accuracy = 0 // requires_two_hands = 1 // one_handed_penalty = 60 // The weapon itself is heavy, and the long barrel makes it hard to hold steady with just one hand. - fire_sound = 'sound/weapons/SVD_shot.ogg' + fire_sound = 'sound/weapons/Gunshot_SVD.ogg' // Has a very unique sound. magazine_type = /obj/item/ammo_magazine/m762svd allowed_magazines = list(/obj/item/ammo_magazine/m762svd) diff --git a/code/modules/projectiles/guns/vox.dm b/code/modules/projectiles/guns/vox.dm index ccbfe300ec..0a98a1cc61 100644 --- a/code/modules/projectiles/guns/vox.dm +++ b/code/modules/projectiles/guns/vox.dm @@ -15,16 +15,16 @@ icon = 'icons/obj/gun.dmi' icon_state = "spikethrower3" item_state = "spikethrower" - fire_sound_text = "a strange noise" fire_sound = 'sound/weapons/bladeslice.ogg' + fire_sound_text = "a strange noise" /obj/item/weapon/gun/launcher/spikethrower/New() ..() - processing_objects.Add(src) + START_PROCESSING(SSobj, src) last_regen = world.time /obj/item/weapon/gun/launcher/spikethrower/Destroy() - processing_objects.Remove(src) + STOP_PROCESSING(SSobj, src) ..() /obj/item/weapon/gun/launcher/spikethrower/process() @@ -79,9 +79,9 @@ damage_type = HALLOSS light_color = "#8837A3" - muzzle_type = /obj/effect/projectile/darkmatterstun/muzzle - tracer_type = /obj/effect/projectile/darkmatterstun/tracer - impact_type = /obj/effect/projectile/darkmatterstun/impact + muzzle_type = /obj/effect/projectile/muzzle/darkmatterstun + tracer_type = /obj/effect/projectile/tracer/darkmatterstun + impact_type = /obj/effect/projectile/impact/darkmatterstun /obj/item/projectile/beam/darkmatter name = "dark matter bolt" @@ -95,9 +95,9 @@ embed_chance = 0 - muzzle_type = /obj/effect/projectile/darkmatter/muzzle - tracer_type = /obj/effect/projectile/darkmatter/tracer - impact_type = /obj/effect/projectile/darkmatter/impact + muzzle_type = /obj/effect/projectile/muzzle/darkmatter + tracer_type = /obj/effect/projectile/tracer/darkmatter + impact_type = /obj/effect/projectile/impact/darkmatter /obj/item/projectile/energy/darkmatter name = "dark matter pellet" diff --git a/code/modules/projectiles/projectile.dm b/code/modules/projectiles/projectile.dm index 4566577a94..e180ac271c 100644 --- a/code/modules/projectiles/projectile.dm +++ b/code/modules/projectiles/projectile.dm @@ -1,37 +1,85 @@ -/* -#define BRUTE "brute" -#define BURN "burn" -#define TOX "tox" -#define OXY "oxy" -#define CLONE "clone" - -#define ADD "add" -#define SET "set" -*/ +#define MOVES_HITSCAN -1 //Not actually hitscan but close as we get without actual hitscan. +#define MUZZLE_EFFECT_PIXEL_INCREMENT 17 //How many pixels to move the muzzle flash up so your character doesn't look like they're shitting out lasers. /obj/item/projectile name = "projectile" icon = 'icons/obj/projectiles.dmi' icon_state = "bullet" - density = 1 - unacidable = 1 - anchored = 1 //There's a reason this is here, Mport. God fucking damn it -Agouri. Find&Fix by Pete. The reason this is here is to stop the curving of emitter shots. + density = FALSE + anchored = TRUE + unacidable = TRUE pass_flags = PASSTABLE mouse_opacity = 0 - var/bumped = 0 //Prevents it from hitting more than one guy at once + + ////TG PROJECTILE SYTSEM + //Projectile stuff + var/range = 50 + var/originalRange + + //Fired processing vars + var/fired = FALSE //Have we been fired yet + var/paused = FALSE //for suspending the projectile midair + var/last_projectile_move = 0 + var/last_process = 0 + var/time_offset = 0 + var/datum/point/vector/trajectory + var/trajectory_ignore_forcemove = FALSE //instructs forceMove to NOT reset our trajectory to the new location! + var/ignore_source_check = FALSE + + var/speed = 0.8 //Amount of deciseconds it takes for projectile to travel + var/Angle = 0 + var/original_angle = 0 //Angle at firing + var/nondirectional_sprite = FALSE //Set TRUE to prevent projectiles from having their sprites rotated based on firing angle + var/spread = 0 //amount (in degrees) of projectile spread + animate_movement = 0 //Use SLIDE_STEPS in conjunction with legacy + var/ricochets = 0 + var/ricochets_max = 2 + var/ricochet_chance = 30 + + //Hitscan + var/hitscan = FALSE //Whether this is hitscan. If it is, speed is basically ignored. + var/list/beam_segments //assoc list of datum/point or datum/point/vector, start = end. Used for hitscan effect generation. + var/datum/point/beam_index + var/turf/hitscan_last //last turf touched during hitscanning. + var/tracer_type + var/muzzle_type + var/impact_type + + //Fancy hitscan lighting effects! + var/hitscan_light_intensity = 1.5 + var/hitscan_light_range = 0.75 + var/hitscan_light_color_override + var/muzzle_flash_intensity = 3 + var/muzzle_flash_range = 1.5 + var/muzzle_flash_color_override + var/impact_light_intensity = 3 + var/impact_light_range = 2 + var/impact_light_color_override + + //Homing + var/homing = FALSE + var/atom/homing_target + var/homing_turn_speed = 10 //Angle per tick. + var/homing_inaccuracy_min = 0 //in pixels for these. offsets are set once when setting target. + var/homing_inaccuracy_max = 0 + var/homing_offset_x = 0 + var/homing_offset_y = 0 + + //Targetting + var/yo = null + var/xo = null + var/atom/original = null // the original target clicked + var/turf/starting = null // the projectile's starting turf + var/list/permutated = list() // we've passed through these atoms, don't try to hit them again + var/p_x = 16 + var/p_y = 16 // the pixel location of the tile that the player clicked. Default is the center + + //Misc/Polaris variables + var/def_zone = "" //Aiming at var/mob/firer = null//Who shot it var/silenced = 0 //Attack message - var/yo = null - var/xo = null - var/current = null var/shot_from = "" // name of the object which shot us - var/atom/original = null // the target clicked (not necessarily where the projectile is headed). Should probably be renamed to 'target' or something. - var/turf/starting = null // the projectile's starting turf - var/list/permutated = list() // we've passed through these atoms, don't try to hit them again - - var/p_x = 16 - var/p_y = 16 // the pixel location of the tile that the player clicked. Default is the center var/accuracy = 0 var/dispersion = 0.0 @@ -45,7 +93,6 @@ var/check_armour = "bullet" //Defines what armor to use when it hits things. Must be set to bullet, laser, energy,or bomb //Cael - bio and rad are also valid var/projectile_type = /obj/item/projectile var/penetrating = 0 //If greater than zero, the projectile will pass through dense objects as specified by on_penetrate() - var/kill_count = 50 //This will de-increment every process(). When 0, it will delete the projectile. //Effects var/incendiary = 0 //1 for ignite on hit, 2 for trail of fire. 3 maybe later for burst of fire around the impact point. - Mech var/flammability = 0 //Amount of fire stacks to add for the above. @@ -59,179 +106,408 @@ var/drowsy = 0 var/agony = 0 var/reflected = 0 // This should be set to 1 if reflected by any means, to prevent infinite reflections. + var/modifier_type_to_apply = null // If set, will apply a modifier to mobs that are hit by this projectile. + var/modifier_duration = null // How long the above modifier should last for. Leave null to be permanent. + var/excavation_amount = 0 // How much, if anything, it drills from a mineral turf. embed_chance = 0 //Base chance for a projectile to embed - var/hitscan = 0 // whether the projectile should be hitscan - var/step_delay = 1 // the delay between iterations if not a hitscan projectile + var/fire_sound = 'sound/weapons/Gunshot_old.ogg' // Can be overriden in gun.dm's fire_sound var. It can also be null but I don't know why you'd ever want to do that. -Ace - // effect types to be used - var/muzzle_type - var/tracer_type - var/impact_type + var/vacuum_traversal = TRUE //Determines if the projectile can exist in vacuum, if false, the projectile will be deleted if it enters vacuum. - var/fire_sound + var/temporary_unstoppable_movement = FALSE - var/vacuum_traversal = 1 //Determines if the projectile can exist in vacuum, if false, the projectile will be deleted if it enters vacuum. +/obj/item/projectile/proc/Range() + range-- + if(range <= 0 && loc) + on_range() - var/datum/plot_vector/trajectory // used to plot the path of the projectile - var/datum/vector_loc/location // current location of the projectile in pixel space - var/matrix/effect_transform // matrix to rotate and scale projectile effects - putting it here so it doesn't - // have to be recreated multiple times +/obj/item/projectile/proc/on_range() //if we want there to be effects when they reach the end of their range + qdel(src) -//TODO: make it so this is called more reliably, instead of sometimes by bullet_act() and sometimes not -/obj/item/projectile/proc/on_hit(var/atom/target, var/blocked = 0, var/def_zone = null) - if(blocked >= 100) return 0//Full block - if(!isliving(target)) return 0 -// if(isanimal(target)) return 0 - var/mob/living/L = target - L.apply_effects(stun, weaken, paralyze, irradiate, stutter, eyeblur, drowsy, agony, blocked, incendiary, flammability) // add in AGONY! - return 1 +/obj/item/projectile/proc/return_predicted_turf_after_moves(moves, forced_angle) //I say predicted because there's no telling that the projectile won't change direction/location in flight. + if(!trajectory && isnull(forced_angle) && isnull(Angle)) + return FALSE + var/datum/point/vector/current = trajectory + if(!current) + var/turf/T = get_turf(src) + current = new(T.x, T.y, T.z, pixel_x, pixel_y, isnull(forced_angle)? Angle : forced_angle, SSprojectiles.global_pixel_speed) + var/datum/point/vector/v = current.return_vector_after_increments(moves * SSprojectiles.global_iterations_per_move) + return v.return_turf() -//called when the projectile stops flying because it collided with something -/obj/item/projectile/proc/on_impact(var/atom/A) - impact_effect(effect_transform) // generate impact effect - if(damage && damage_type == BURN) - var/turf/T = get_turf(A) - if(T) - T.hotspot_expose(700, 5) +/obj/item/projectile/proc/return_pathing_turfs_in_moves(moves, forced_angle) + var/turf/current = get_turf(src) + var/turf/ending = return_predicted_turf_after_moves(moves, forced_angle) + return getline(current, ending) + +/obj/item/projectile/proc/set_pixel_speed(new_speed) + if(trajectory) + trajectory.set_speed(new_speed) + return TRUE + return FALSE + +/obj/item/projectile/proc/record_hitscan_start(datum/point/pcache) + if(pcache) + beam_segments = list() + beam_index = pcache + beam_segments[beam_index] = null //record start. + +/obj/item/projectile/proc/process_hitscan() + var/safety = range * 3 + record_hitscan_start(RETURN_POINT_VECTOR_INCREMENT(src, Angle, MUZZLE_EFFECT_PIXEL_INCREMENT, 1)) + while(loc && !QDELETED(src)) + if(paused) + stoplag(1) + continue + if(safety-- <= 0) + if(loc) + Bump(loc) + if(!QDELETED(src)) + qdel(src) + return //Kill! + pixel_move(1, TRUE) + +/obj/item/projectile/proc/pixel_move(trajectory_multiplier, hitscanning = FALSE) + if(!loc || !trajectory) + return + last_projectile_move = world.time + if(homing) + process_homing() + var/forcemoved = FALSE + for(var/i in 1 to SSprojectiles.global_iterations_per_move) + if(QDELETED(src)) + return + trajectory.increment(trajectory_multiplier) + var/turf/T = trajectory.return_turf() + if(!istype(T)) + qdel(src) + return + if(T.z != loc.z) + var/old = loc + before_z_change(loc, T) + trajectory_ignore_forcemove = TRUE + forceMove(T) + trajectory_ignore_forcemove = FALSE + after_z_change(old, loc) + if(!hitscanning) + pixel_x = trajectory.return_px() + pixel_y = trajectory.return_py() + forcemoved = TRUE + hitscan_last = loc + else if(T != loc) + before_move() + step_towards(src, T) + hitscan_last = loc + after_move() + if(can_hit_target(original, permutated)) + Bump(original) + if(!hitscanning && !forcemoved) + pixel_x = trajectory.return_px() - trajectory.mpx * trajectory_multiplier * SSprojectiles.global_iterations_per_move + pixel_y = trajectory.return_py() - trajectory.mpy * trajectory_multiplier * SSprojectiles.global_iterations_per_move + animate(src, pixel_x = trajectory.return_px(), pixel_y = trajectory.return_py(), time = 1, flags = ANIMATION_END_NOW) + Range() + +/obj/item/projectile/Crossed(atom/movable/AM) //A mob moving on a tile with a projectile is hit by it. + ..() + if(isliving(AM) && !(pass_flags & PASSMOB)) + var/mob/living/L = AM + if(can_hit_target(L, permutated, (AM == original))) + Bump(AM) + +/obj/item/projectile/proc/process_homing() //may need speeding up in the future performance wise. + if(!homing_target) + return FALSE + var/datum/point/PT = RETURN_PRECISE_POINT(homing_target) + PT.x += CLAMP(homing_offset_x, 1, world.maxx) + PT.y += CLAMP(homing_offset_y, 1, world.maxy) + var/angle = closer_angle_difference(Angle, angle_between_points(RETURN_PRECISE_POINT(src), PT)) + setAngle(Angle + CLAMP(angle, -homing_turn_speed, homing_turn_speed)) + +/obj/item/projectile/proc/set_homing_target(atom/A) + if(!A || (!isturf(A) && !isturf(A.loc))) + return FALSE + homing = TRUE + homing_target = A + homing_offset_x = rand(homing_inaccuracy_min, homing_inaccuracy_max) + homing_offset_y = rand(homing_inaccuracy_min, homing_inaccuracy_max) + if(prob(50)) + homing_offset_x = -homing_offset_x + if(prob(50)) + homing_offset_y = -homing_offset_y + +/obj/item/projectile/process() + last_process = world.time + if(!loc || !fired || !trajectory) + fired = FALSE + return PROCESS_KILL + if(paused || !isturf(loc)) + last_projectile_move += world.time - last_process //Compensates for pausing, so it doesn't become a hitscan projectile when unpaused from charged up ticks. + return + var/elapsed_time_deciseconds = (world.time - last_projectile_move) + time_offset + time_offset = 0 + var/required_moves = speed > 0? FLOOR(elapsed_time_deciseconds / speed, 1) : MOVES_HITSCAN //Would be better if a 0 speed made hitscan but everyone hates those so I can't make it a universal system :< + if(required_moves == MOVES_HITSCAN) + required_moves = SSprojectiles.global_max_tick_moves + else + if(required_moves > SSprojectiles.global_max_tick_moves) + var/overrun = required_moves - SSprojectiles.global_max_tick_moves + required_moves = SSprojectiles.global_max_tick_moves + time_offset += overrun * speed + time_offset += MODULUS(elapsed_time_deciseconds, speed) + + for(var/i in 1 to required_moves) + pixel_move(1, FALSE) + +/obj/item/projectile/proc/setAngle(new_angle) //wrapper for overrides. + Angle = new_angle + if(!nondirectional_sprite) + var/matrix/M = new + M.Turn(Angle) + transform = M + if(trajectory) + trajectory.set_angle(new_angle) + return TRUE + +/obj/item/projectile/forceMove(atom/target) + if(!isloc(target) || !isloc(loc) || !z) + return ..() + var/zc = target.z != z + var/old = loc + if(zc) + before_z_change(old, target) + . = ..() + if(trajectory && !trajectory_ignore_forcemove && isturf(target)) + if(hitscan) + finalize_hitscan_and_generate_tracers(FALSE) + trajectory.initialize_location(target.x, target.y, target.z, 0, 0) + if(hitscan) + record_hitscan_start(RETURN_PRECISE_POINT(src)) + if(zc) + after_z_change(old, target) + +/obj/item/projectile/proc/fire(angle, atom/direct_target) + //If no angle needs to resolve it from xo/yo! + if(direct_target) + direct_target.bullet_act(src, def_zone) + qdel(src) + return + if(isnum(angle)) + setAngle(angle) + var/turf/starting = get_turf(src) + if(isnull(Angle)) //Try to resolve through offsets if there's no angle set. + if(isnull(xo) || isnull(yo)) + crash_with("WARNING: Projectile [type] deleted due to being unable to resolve a target after angle was null!") + qdel(src) + return + var/turf/target = locate(CLAMP(starting + xo, 1, world.maxx), CLAMP(starting + yo, 1, world.maxy), starting.z) + setAngle(Get_Angle(src, target)) + if(dispersion) + setAngle(Angle + rand(-dispersion, dispersion)) + original_angle = Angle + trajectory_ignore_forcemove = TRUE + forceMove(starting) + trajectory_ignore_forcemove = FALSE + trajectory = new(starting.x, starting.y, starting.z, pixel_x, pixel_y, Angle, SSprojectiles.global_pixel_speed) + last_projectile_move = world.time + permutated = list() + originalRange = range + fired = TRUE + if(hitscan) + . = process_hitscan() + START_PROCESSING(SSprojectiles, src) + pixel_move(1, FALSE) //move it now! + +/obj/item/projectile/Move(atom/newloc, dir = NONE) + . = ..() + if(.) + if(temporary_unstoppable_movement) + temporary_unstoppable_movement = FALSE + DISABLE_BITFIELD(movement_type, UNSTOPPABLE) + if(fired && can_hit_target(original, permutated, TRUE)) + Bump(original) + +/obj/item/projectile/proc/after_z_change(atom/olcloc, atom/newloc) + +/obj/item/projectile/proc/before_z_change(atom/oldloc, atom/newloc) + +/obj/item/projectile/proc/before_move() return -//Checks if the projectile is eligible for embedding. Not that it necessarily will. -/obj/item/projectile/proc/can_embed() - //embed must be enabled and damage type must be brute - if(embed_chance == 0 || damage_type != BRUTE) - return 0 - return 1 +/obj/item/projectile/proc/after_move() + return -/obj/item/projectile/proc/get_structure_damage() - if(damage_type == BRUTE || damage_type == BURN) - return damage - return 0 +/obj/item/projectile/proc/store_hitscan_collision(datum/point/pcache) + beam_segments[beam_index] = pcache + beam_index = pcache + beam_segments[beam_index] = null -//return 1 if the projectile should be allowed to pass through after all, 0 if not. -/obj/item/projectile/proc/check_penetrate(var/atom/A) - return 1 +//Spread is FORCED! +/obj/item/projectile/proc/preparePixelProjectile(atom/target, atom/source, params, spread = 0) + var/turf/curloc = get_turf(source) + var/turf/targloc = get_turf(target) + trajectory_ignore_forcemove = TRUE + forceMove(get_turf(source)) + trajectory_ignore_forcemove = FALSE + starting = get_turf(source) + original = target + if(targloc || !params) + yo = targloc.y - curloc.y + xo = targloc.x - curloc.x + setAngle(Get_Angle(src, targloc) + spread) -/obj/item/projectile/proc/check_fire(atom/target as mob, var/mob/living/user as mob) //Checks if you can hit them or not. - check_trajectory(target, user, pass_flags, flags) + if(isliving(source) && params) + var/list/calculated = calculate_projectile_angle_and_pixel_offsets(source, params) + p_x = calculated[2] + p_y = calculated[3] -//sets the click point of the projectile using mouse input params -/obj/item/projectile/proc/set_clickpoint(var/params) + setAngle(calculated[1] + spread) + else if(targloc) + yo = targloc.y - curloc.y + xo = targloc.x - curloc.x + setAngle(Get_Angle(src, targloc) + spread) + else + crash_with("WARNING: Projectile [type] fired without either mouse parameters, or a target atom to aim at!") + qdel(src) + +/proc/calculate_projectile_angle_and_pixel_offsets(mob/user, params) var/list/mouse_control = params2list(params) + var/p_x = 0 + var/p_y = 0 + var/angle = 0 if(mouse_control["icon-x"]) p_x = text2num(mouse_control["icon-x"]) if(mouse_control["icon-y"]) p_y = text2num(mouse_control["icon-y"]) + if(mouse_control["screen-loc"]) + //Split screen-loc up into X+Pixel_X and Y+Pixel_Y + var/list/screen_loc_params = splittext(mouse_control["screen-loc"], ",") - //randomize clickpoint a bit based on dispersion - if(dispersion) - var/radius = round((dispersion*0.443)*world.icon_size*0.8) //0.443 = sqrt(pi)/4 = 2a, where a is the side length of a square that shares the same area as a circle with diameter = dispersion - p_x = between(0, p_x + rand(-radius, radius), world.icon_size) - p_y = between(0, p_y + rand(-radius, radius), world.icon_size) + //Split X+Pixel_X up into list(X, Pixel_X) + var/list/screen_loc_X = splittext(screen_loc_params[1],":") -//called to launch a projectile -/obj/item/projectile/proc/launch(atom/target, var/target_zone, var/x_offset=0, var/y_offset=0, var/angle_offset=0) - var/turf/curloc = get_turf(src) - var/turf/targloc = get_turf(target) - if (!istype(targloc) || !istype(curloc)) - return 1 + //Split Y+Pixel_Y up into list(Y, Pixel_Y) + var/list/screen_loc_Y = splittext(screen_loc_params[2],":") + var/x = text2num(screen_loc_X[1]) * 32 + text2num(screen_loc_X[2]) - 32 + var/y = text2num(screen_loc_Y[1]) * 32 + text2num(screen_loc_Y[2]) - 32 - if(combustion) - curloc.hotspot_expose(700, 5) + //Calculate the "resolution" of screen based on client's view and world's icon size. This will work if the user can view more tiles than average. + var/list/screenview = user.client? getviewsize(user.client.view) : world.view + var/screenviewX = screenview[1] * world.icon_size + var/screenviewY = screenview[2] * world.icon_size - if(targloc == curloc) //Shooting something in the same turf - target.bullet_act(src, target_zone) - on_impact(target) - qdel(src) - return 0 + var/ox = round(screenviewX/2) - user.client.pixel_x //"origin" x + var/oy = round(screenviewY/2) - user.client.pixel_y //"origin" y + angle = ATAN2(y - oy, x - ox) + return list(angle, p_x, p_y) +/obj/item/projectile/proc/redirect(x, y, starting, source) + old_style_target(locate(x, y, z), starting? get_turf(starting) : get_turf(source)) + +/obj/item/projectile/proc/old_style_target(atom/target, atom/source) + if(!source) + source = get_turf(src) + starting = get_turf(source) original = target - def_zone = target_zone + setAngle(Get_Angle(source, target)) - spawn() - setup_trajectory(curloc, targloc, x_offset, y_offset, angle_offset) //plot the initial trajectory - process() +/obj/item/projectile/Destroy() + if(hitscan) + finalize_hitscan_and_generate_tracers() + STOP_PROCESSING(SSprojectiles, src) + cleanup_beam_segments() + qdel(trajectory) + return ..() - return 0 +/obj/item/projectile/proc/cleanup_beam_segments() + QDEL_LIST_ASSOC(beam_segments) + beam_segments = list() + qdel(beam_index) -//called to launch a projectile from a gun -/obj/item/projectile/proc/launch_from_gun(atom/target, mob/user, obj/item/weapon/gun/launcher, var/target_zone, var/x_offset=0, var/y_offset=0) - if(user == target) //Shooting yourself - user.bullet_act(src, target_zone) - on_impact(user) - qdel(src) - return 0 - - loc = get_turf(user) //move the projectile out into the world - - firer = user - shot_from = launcher.name - silenced = launcher.silenced - - return launch(target, target_zone, x_offset, y_offset) - -//Used to change the direction of the projectile in flight. -/obj/item/projectile/proc/redirect(var/new_x, var/new_y, var/atom/starting_loc, var/mob/new_firer=null) - var/turf/new_target = locate(new_x, new_y, src.z) - - original = new_target - if(new_firer) - firer = src - - setup_trajectory(starting_loc, new_target) - -//Called when the projectile intercepts a mob. Returns 1 if the projectile hit the mob, 0 if it missed and should keep flying. -/obj/item/projectile/proc/attack_mob(var/mob/living/target_mob, var/distance, var/miss_modifier=0) - if(!istype(target_mob)) - return - - //roll to-hit - miss_modifier = max(15*(distance-2) - accuracy + miss_modifier + target_mob.get_evasion(), 0) - var/hit_zone = get_zone_with_miss_chance(def_zone, target_mob, miss_modifier, ranged_attack=(distance > 1 || original != target_mob)) //if the projectile hits a target we weren't originally aiming at then retain the chance to miss - - var/result = PROJECTILE_FORCE_MISS - if(hit_zone) - def_zone = hit_zone //set def_zone, so if the projectile ends up hitting someone else later (to be implemented), it is more likely to hit the same part - result = target_mob.bullet_act(src, def_zone) - - if(result == PROJECTILE_FORCE_MISS) - if(!silenced) - visible_message("\The [src] misses [target_mob] narrowly!") - return 0 - - //hit messages - if(silenced) - to_chat(target_mob, "You've been hit in the [parse_zone(def_zone)] by \the [src]!") +/obj/item/projectile/proc/vol_by_damage() + if(damage) + return CLAMP((damage) * 0.67, 30, 100)// Multiply projectile damage by 0.67, then CLAMP the value between 30 and 100 else - visible_message("\The [target_mob] is hit by \the [src] in the [parse_zone(def_zone)]!")//X has fired Y is now given by the guns so you cant tell who shot you if you could not see the shooter + return 50 //if the projectile doesn't do damage, play its hitsound at 50% volume. - //admin logs - if(!no_attack_log) - if(istype(firer, /mob) && istype(target_mob)) - add_attack_logs(firer,target_mob,"Shot with \a [src.type] projectile") +/obj/item/projectile/proc/finalize_hitscan_and_generate_tracers(impacting = TRUE) + if(trajectory && beam_index) + var/datum/point/pcache = trajectory.copy_to() + beam_segments[beam_index] = pcache + generate_hitscan_tracers(null, null, impacting) - //sometimes bullet_act() will want the projectile to continue flying - if (result == PROJECTILE_CONTINUE) - return 0 +/obj/item/projectile/proc/generate_hitscan_tracers(cleanup = TRUE, duration = 5, impacting = TRUE) + if(!length(beam_segments)) + return + if(tracer_type) + var/tempref = "\ref[src]" + for(var/datum/point/p in beam_segments) + generate_tracer_between_points(p, beam_segments[p], tracer_type, color, duration, hitscan_light_range, hitscan_light_color_override, hitscan_light_intensity, tempref) + if(muzzle_type && duration > 0) + var/datum/point/p = beam_segments[1] + var/atom/movable/thing = new muzzle_type + p.move_atom_to_src(thing) + var/matrix/M = new + M.Turn(original_angle) + thing.transform = M + thing.color = color + thing.set_light(muzzle_flash_range, muzzle_flash_intensity, muzzle_flash_color_override? muzzle_flash_color_override : color) + QDEL_IN(thing, duration) + if(impacting && impact_type && duration > 0) + var/datum/point/p = beam_segments[beam_segments[beam_segments.len]] + var/atom/movable/thing = new impact_type + p.move_atom_to_src(thing) + var/matrix/M = new + M.Turn(Angle) + thing.transform = M + thing.color = color + thing.set_light(impact_light_range, impact_light_intensity, impact_light_color_override? impact_light_color_override : color) + QDEL_IN(thing, duration) + if(cleanup) + cleanup_beam_segments() - return 1 +//Returns true if the target atom is on our current turf and above the right layer +//If direct target is true it's the originally clicked target. +/obj/item/projectile/proc/can_hit_target(atom/target, list/passthrough, direct_target = FALSE, ignore_loc = FALSE) + if(QDELETED(target)) + return FALSE + if(!ignore_source_check && firer) + var/mob/M = firer + if((target == firer) || ((target == firer.loc) && istype(firer.loc, /obj/mecha)) || (target in firer.buckled_mobs) || (istype(M) && (M.buckled == target))) + return FALSE + if(!ignore_loc && (loc != target.loc)) + return FALSE + if(target in passthrough) + return FALSE + if(target.density) //This thing blocks projectiles, hit it regardless of layer/mob stuns/etc. + return TRUE + if(!isliving(target)) + if(target.layer < PROJECTILE_HIT_THRESHOLD_LAYER) + return FALSE + else + var/mob/living/L = target + if(!direct_target) + if(!L.density) + return FALSE + return TRUE -/obj/item/projectile/Bump(atom/A as mob|obj|turf|area, forced=0) - if(A == src) - return 0 //no +/obj/item/projectile/Bump(atom/A) + if(A in permutated) + trajectory_ignore_forcemove = TRUE + forceMove(get_turf(A)) + trajectory_ignore_forcemove = FALSE + return FALSE + if(firer && !reflected) + if(A == firer || (A == firer.loc && istype(A, /obj/mecha))) //cannot shoot yourself or your mech + trajectory_ignore_forcemove = TRUE + forceMove(get_turf(A)) + trajectory_ignore_forcemove = FALSE + return FALSE - if(A == firer) - loc = A.loc - return 0 //cannot shoot yourself + var/distance = get_dist(starting, get_turf(src)) + var/turf/target_turf = get_turf(A) + var/passthrough = FALSE - if((bumped && !forced) || (A in permutated)) - return 0 - - var/passthrough = 0 //if the projectile should continue flying - var/distance = get_dist(starting,loc) - - bumped = 1 if(ismob(A)) var/mob/M = A if(istype(A, /mob/living)) @@ -242,13 +518,13 @@ var/shield_chance = min(80, (30 * (M.mob_size / 10))) //Small mobs have a harder time keeping a dead body as a shield than a human-sized one. Unathi would have an easier job, if they are made to be SIZE_LARGE in the future. -Mech if(prob(shield_chance)) visible_message("\The [M] uses [G.affecting] as a shield!") - if(Bump(G.affecting, forced=1)) + if(Bump(G.affecting)) return else visible_message("\The [M] tries to use [G.affecting] as a shield, but fails!") else visible_message("\The [M] uses [G.affecting] as a shield!") - if(Bump(G.affecting, forced=1)) + if(Bump(G.affecting)) return //If Bump() returns 0 (keep going) then we continue on to attack M. passthrough = !attack_mob(M, distance) @@ -265,229 +541,113 @@ //penetrating projectiles can pass through things that otherwise would not let them if(!passthrough && penetrating > 0) if(check_penetrate(A)) - passthrough = 1 + passthrough = TRUE penetrating-- - //the bullet passes through a dense object! if(passthrough) - //move ourselves onto A so we can continue on our way. - if(A) - if(istype(A, /turf)) - loc = A - else - loc = A.loc - permutated.Add(A) - bumped = 0 //reset bumped variable! - return 0 - - //stop flying - on_impact(A) - - density = 0 - invisibility = 101 + trajectory_ignore_forcemove = TRUE + forceMove(target_turf) + permutated.Add(A) + trajectory_ignore_forcemove = FALSE + return FALSE + if(A) + on_impact(A) qdel(src) + return TRUE + +//TODO: make it so this is called more reliably, instead of sometimes by bullet_act() and sometimes not +/obj/item/projectile/proc/on_hit(atom/target, blocked = 0, def_zone) + if(blocked >= 100) return 0//Full block + if(!isliving(target)) return 0 +// if(isanimal(target)) return 0 + var/mob/living/L = target + L.apply_effects(stun, weaken, paralyze, irradiate, stutter, eyeblur, drowsy, agony, blocked, incendiary, flammability) // add in AGONY! + if(modifier_type_to_apply) + L.add_modifier(modifier_type_to_apply, modifier_duration) return 1 -/obj/item/projectile/ex_act() - return //explosions probably shouldn't delete projectiles +//called when the projectile stops flying because it Bump'd with something +/obj/item/projectile/proc/on_impact(atom/A) + if(damage && damage_type == BURN) + var/turf/T = get_turf(A) + if(T) + T.hotspot_expose(700, 5) -/obj/item/projectile/CanPass(atom/movable/mover, turf/target, height=0, air_group=0) +//Checks if the projectile is eligible for embedding. Not that it necessarily will. +/obj/item/projectile/proc/can_embed() + //embed must be enabled and damage type must be brute + if(embed_chance == 0 || damage_type != BRUTE) + return 0 return 1 -/obj/item/projectile/process() - var/first_step = 1 +/obj/item/projectile/proc/get_structure_damage() + if(damage_type == BRUTE || damage_type == BURN) + return damage + return 0 - spawn while(src && src.loc) - if(kill_count-- < 1) - on_impact(src.loc) //for any final impact behaviours - qdel(src) - return - if((!( current ) || loc == current)) - current = locate(min(max(x + xo, 1), world.maxx), min(max(y + yo, 1), world.maxy), z) - if((x == 1 || x == world.maxx || y == 1 || y == world.maxy)) - qdel(src) - return +//return 1 if the projectile should be allowed to pass through after all, 0 if not. +/obj/item/projectile/proc/check_penetrate(atom/A) + return 1 - trajectory.increment() // increment the current location - location = trajectory.return_location(location) // update the locally stored location data - update_light() //energy projectiles will look glowy and fun +/obj/item/projectile/proc/check_fire(atom/target as mob, mob/living/user as mob) //Checks if you can hit them or not. + check_trajectory(target, user, pass_flags, flags) - if(!location) - qdel(src) // if it's left the world... kill it - return +/obj/item/projectile/CanPass() + return TRUE - if (is_below_sound_pressure(get_turf(src)) && !vacuum_traversal) //Deletes projectiles that aren't supposed to bein vacuum if they leave pressurised areas - qdel(src) - return +//Called when the projectile intercepts a mob. Returns 1 if the projectile hit the mob, 0 if it missed and should keep flying. +/obj/item/projectile/proc/attack_mob(mob/living/target_mob, distance, miss_modifier = 0) + if(!istype(target_mob)) + return - before_move() - Move(location.return_turf()) - after_move() + //roll to-hit + miss_modifier = max(15*(distance-2) - accuracy + miss_modifier + target_mob.get_evasion(), 0) + var/hit_zone = get_zone_with_miss_chance(def_zone, target_mob, miss_modifier, ranged_attack=(distance > 1 || original != target_mob)) //if the projectile hits a target we weren't originally aiming at then retain the chance to miss - if(!bumped && !isturf(original)) - if(loc == get_turf(original)) - if(!(original in permutated)) - if(Bump(original)) - return + var/result = PROJECTILE_FORCE_MISS + if(hit_zone) + def_zone = hit_zone //set def_zone, so if the projectile ends up hitting someone else later (to be implemented), it is more likely to hit the same part + result = target_mob.bullet_act(src, def_zone) - if(first_step) - muzzle_effect(effect_transform) - first_step = 0 - else if(!bumped) - tracer_effect(effect_transform) + if(result == PROJECTILE_FORCE_MISS) + if(!silenced) + visible_message("\The [src] misses [target_mob] narrowly!") + return FALSE - if(incendiary >= 2) //This should cover the bases of 'Why is there fuel here?' in a much cleaner way than previous. - if(src && src.loc) //Safety. - if(!src.loc.density) - var/trail_volume = (flammability * 0.20) - new /obj/effect/decal/cleanable/liquid_fuel/flamethrower_fuel(src.loc, trail_volume, src.dir) - - if(!hitscan) - sleep(step_delay) //add delay between movement iterations if it's not a hitscan weapon - -/obj/item/projectile/proc/before_move() - return - -/obj/item/projectile/proc/after_move() - return - -/obj/item/projectile/proc/setup_trajectory(turf/startloc, turf/targloc, var/x_offset = 0, var/y_offset = 0) - // setup projectile state - starting = startloc - current = startloc - yo = targloc.y - startloc.y + y_offset - xo = targloc.x - startloc.x + x_offset - - // trajectory dispersion - var/offset = 0 - if(dispersion) - var/radius = round(dispersion*9, 1) - offset = rand(-radius, radius) - - // plot the initial trajectory - trajectory = new() - trajectory.setup(starting, original, pixel_x, pixel_y, angle_offset=offset) - - // generate this now since all visual effects the projectile makes can use it - effect_transform = new() - effect_transform.Scale(trajectory.return_hypotenuse(), 1) - effect_transform.Turn(-trajectory.return_angle()) //no idea why this has to be inverted, but it works - - transform = turn(transform, -(trajectory.return_angle() + 90)) //no idea why 90 needs to be added, but it works - -/obj/item/projectile/proc/muzzle_effect(var/matrix/T) + //hit messages if(silenced) - return + to_chat(target_mob, "You've been hit in the [parse_zone(def_zone)] by \the [src]!") + else + visible_message("\The [target_mob] is hit by \the [src] in the [parse_zone(def_zone)]!")//X has fired Y is now given by the guns so you cant tell who shot you if you could not see the shooter - if(ispath(muzzle_type)) - var/obj/effect/projectile/M = new muzzle_type(get_turf(src)) + //admin logs + if(!no_attack_log) + if(istype(firer, /mob) && istype(target_mob)) + add_attack_logs(firer,target_mob,"Shot with \a [src.type] projectile") - if(istype(M)) - M.set_transform(T) - M.pixel_x = location.pixel_x - M.pixel_y = location.pixel_y - M.update_light() - M.activate() + //sometimes bullet_act() will want the projectile to continue flying + if (result == PROJECTILE_CONTINUE) + return FALSE -/obj/item/projectile/proc/tracer_effect(var/matrix/M) - if(ispath(tracer_type)) - var/obj/effect/projectile/P = new tracer_type(location.loc) + return TRUE - if(istype(P)) - P.set_transform(M) - P.pixel_x = location.pixel_x - P.pixel_y = location.pixel_y - P.update_light() - if(!hitscan) - P.activate(step_delay) //if not a hitscan projectile, remove after a single delay - else - P.activate() - -/obj/item/projectile/proc/impact_effect(var/matrix/M) - if(ispath(tracer_type) && location) - var/obj/effect/projectile/P = new impact_type(location.loc) - - if(istype(P)) - P.set_transform(M) - P.pixel_x = location.pixel_x - P.pixel_y = location.pixel_y - P.update_light() - P.activate() - -//"Tracing" projectile -/obj/item/projectile/test //Used to see if you can hit them. - invisibility = 101 //Nope! Can't see me! - yo = null - xo = null - var/result = 0 //To pass the message back to the gun. - -/obj/item/projectile/test/Bump(atom/A as mob|obj|turf|area) - if(A == firer) - loc = A.loc - return //cannot shoot yourself - if(istype(A, /obj/item/projectile)) - return - if(istype(A, /obj/structure/foamedmetal)) //Turrets can detect through foamed metal, but will have to blast through it. Similar to windows, if someone runs behind it, a person should probably just not shoot. - return - if(istype(A, /obj/structure/girder)) //They see you there. - return - if(istype(A, /obj/structure/door_assembly)) //And through there. - return - if(istype(A, /obj/structure)) //Unanchored things you can shove around will still keep the turret or other firing at your position. Aim intent still functions. - var/obj/structure/S = A - if(!S.anchored) - return - if(istype(A, /mob/living) || istype(A, /obj/mecha) || istype(A, /obj/vehicle)) - result = 2 //We hit someone, return 1! - return - result = 1 - return - -/obj/item/projectile/test/launch(atom/target) - var/turf/curloc = get_turf(src) - var/turf/targloc = get_turf(target) - if(!curloc || !targloc) - return 0 +/obj/item/projectile/proc/launch_projectile(atom/target, target_zone, mob/user, params, angle_override, forced_spread = 0) original = target + def_zone = check_zone(target_zone) + firer = user + var/direct_target + if(get_turf(target) == get_turf(src)) + direct_target = target - //plot the initial trajectory - setup_trajectory(curloc, targloc) - return process(targloc) + preparePixelProjectile(target, user? user : get_turf(src), params, forced_spread) + return fire(angle_override, direct_target) -/obj/item/projectile/test/process(var/turf/targloc) - while(src) //Loop on through! - if(result) - return (result - 1) - if((!( targloc ) || loc == targloc)) - targloc = locate(min(max(x + xo, 1), world.maxx), min(max(y + yo, 1), world.maxy), z) //Finding the target turf at map edge +//called to launch a projectile from a gun +/obj/item/projectile/proc/launch_from_gun(atom/target, target_zone, mob/user, params, angle_override, forced_spread, obj/item/weapon/gun/launcher) - trajectory.increment() // increment the current location - location = trajectory.return_location(location) // update the locally stored location data + shot_from = launcher.name + silenced = launcher.silenced - Move(location.return_turf()) - - var/mob/living/M = locate() in get_turf(src) - if(istype(M)) //If there is someting living... - return 1 //Return 1 - else - M = locate() in get_step(src,targloc) - if(istype(M)) - return 1 - -//Helper proc to check if you can hit them or not. -/proc/check_trajectory(atom/target as mob|obj, atom/firer as mob|obj, var/pass_flags=PASSTABLE|PASSGLASS|PASSGRILLE, flags=null) - if(!istype(target) || !istype(firer)) - return 0 - - var/obj/item/projectile/test/trace = new /obj/item/projectile/test(get_turf(firer)) //Making the test.... - - //Set the flags and pass flags to that of the real projectile... - if(!isnull(flags)) - trace.flags = flags - trace.pass_flags = pass_flags - - var/output = trace.launch(target) //Test it! - qdel(trace) //No need for it anymore - return output //Send it back to the gun! + return launch_projectile(target, target_zone, user, params, angle_override, forced_spread) diff --git a/code/modules/projectiles/projectile/animate.dm b/code/modules/projectiles/projectile/animate.dm index e88e6faa33..20196022af 100644 --- a/code/modules/projectiles/projectile/animate.dm +++ b/code/modules/projectiles/projectile/animate.dm @@ -13,5 +13,5 @@ /obj/item/projectile/animate/Bump(var/atom/change) if((istype(change, /obj/item) || istype(change, /obj/structure)) && !is_type_in_list(change, protected_objects)) var/obj/O = change - new /mob/living/simple_animal/hostile/mimic/copy(O.loc, O, firer) + new /mob/living/simple_mob/hostile/mimic/copy(O.loc, O, firer) ..() diff --git a/code/modules/projectiles/projectile/arc.dm b/code/modules/projectiles/projectile/arc.dm index 5606cbe9d5..97069db1fb 100644 --- a/code/modules/projectiles/projectile/arc.dm +++ b/code/modules/projectiles/projectile/arc.dm @@ -9,13 +9,18 @@ /obj/item/projectile/arc name = "arcing shot" icon_state = "fireball" // WIP - step_delay = 2 // Travel a bit slower, to really sell the arc visuals. + movement_type = UNSTOPPABLE plane = ABOVE_PLANE // Since projectiles are 'in the air', they might visually overlap mobs while in flight, so the projectile needs to be above their plane. - var/target_distance = null // How many tiles the impact site is. var/fired_dir = null // Which direction was the projectile fired towards. Needed to invert the projectile turning based on if facing left or right. + var/distance_to_fly = null // How far, in pixels, to fly for. Will call on_range() when this is passed. + var/visual_y_offset = -16 // Adjusts how high the projectile and its shadow start, visually. This is so the projectile and shadow align with the center of the tile. + var/projectile_speed_modifier = 0.5 // Slows it down to make the arcing more noticable, and improve pixel calculation accuracy. var/obj/effect/projectile_shadow/shadow = null // Visual indicator for the projectile's 'true' position. Needed due to being bound to two dimensions in reality. -/obj/item/projectile/arc/initialize() +/obj/item/projectile/arc/Bump() + return + +/obj/item/projectile/arc/Initialize() shadow = new(get_turf(src)) return ..() @@ -23,60 +28,76 @@ QDEL_NULL(shadow) return ..() -/obj/item/projectile/arc/Bump(atom/A, forced=0) - return 0 -// if(get_turf(src) != original) -// return 0 -// else -// return ..() -// This is a test projectile in the sense that its testing the code to make sure it works, -// as opposed to a 'can I hit this thing' projectile. -/obj/item/projectile/arc/test/on_impact(turf/T) - new /obj/effect/explosion(T) +/obj/item/projectile/arc/proc/calculate_initial_pixel_distance(atom/user, atom/target) + var/datum/point/A = new(user) + var/datum/point/B = new(target) + + // Set the pixel offsets if they exist. + A.x += (p_x - 16) + A.y += (p_y - 16) + + return pixel_length_between_points(A, B) + +/obj/item/projectile/arc/proc/distance_flown() + var/datum/point/current_point = new(src) + var/datum/point/starting_point = new(starting) + return pixel_length_between_points(current_point, starting_point) + +/obj/item/projectile/arc/on_range() + if(loc) + on_impact(loc) return ..() -/obj/item/projectile/arc/launch(atom/target, target_zone, x_offset=0, y_offset=0, angle_offset=0) - var/expected_distance = get_dist(target, loc) - kill_count = expected_distance // So the projectile "hits the ground." - target_distance = expected_distance - fired_dir = get_dir(loc, target) - ..() // Does the regular launching stuff. - if(fired_dir & EAST) - transform = turn(transform, -45) - else if(fired_dir & WEST) - transform = turn(transform, 45) + +/obj/item/projectile/arc/launch_projectile(atom/target, target_zone, mob/user, params, angle_override, forced_spread = 0) + fired_dir = get_dir(user, target) // Used to determine if the projectile should turn in the air. + distance_to_fly = calculate_initial_pixel_distance(user, target) // Calculates how many pixels to travel before hitting the ground. + ..() // Does the actual launching. The projectile will be out after this. + +// For legacy. +/obj/item/projectile/arc/old_style_target(atom/target, atom/source) + ..() + fired_dir = get_dir(source, target) + distance_to_fly = calculate_initial_pixel_distance(source, target) -// Visuals. -/obj/item/projectile/arc/after_move() - // Handle projectile turning in flight. - // This won't turn if fired north/south, as it looks weird. - var/turn_per_step = 90 / target_distance - if(fired_dir & EAST) - transform = turn(transform, turn_per_step) - else if(fired_dir & WEST) - transform = turn(transform, -turn_per_step) +/obj/item/projectile/arc/fire(angle, atom/direct_target) + ..() // The trajectory must exist for set_pixel_speed() to work. + set_pixel_speed(projectile_speed_modifier) // Slows it down and makes the distance checking more accurate. - // Now for the fake height. - // We need to know how far along our "arc" we are. - var/arc_progress = get_dist(src, original) - var/arc_max_height = (target_distance * world.icon_size) / 2 // TODO: Real math. -// var/arc_center = target_distance / 2 -// var/projectile_position = abs(arc_progress - arc_center) -// var/height_multiplier = projectile_position / arc_center -// height_multiplier = abs(height_multiplier - 1) -// height_multiplier = height_multiplier ** 2 +/obj/item/projectile/arc/pixel_move(trajectory_multiplier, hitscanning = FALSE) + // Do the other important stuff first. + ..(trajectory_multiplier, hitscanning) + // Test to see if its time to 'hit the ground'. + var/pixels_flown = distance_flown() -// animate(src, pixel_z = arc_max_height * height_multiplier, time = step_delay) - var/projectile_position = arc_progress / target_distance - var/sine_position = projectile_position * 180 - var/pixel_z_position = arc_max_height * sin(sine_position) - animate(src, pixel_z = pixel_z_position, time = step_delay) + if(pixels_flown >= distance_to_fly) + on_range() // This will also cause the projectile to be deleted. + + else + // Handle visual projectile turning in flight. + var/arc_progress = between(0, pixels_flown / distance_to_fly, 1) + var/new_visual_degree = LERP(45, 135, arc_progress) + + if(fired_dir & EAST) + adjust_rotation(new_visual_degree) + else if(fired_dir & WEST) + adjust_rotation(-new_visual_degree) + + // Now for the fake height. + var/arc_max_pixel_height = distance_to_fly / 2 + var/sine_position = arc_progress * 180 + var/pixel_z_position = (arc_max_pixel_height * sin(sine_position)) + visual_y_offset + animate(src, pixel_z = pixel_z_position, time = 1, flags = ANIMATION_END_NOW) + + // Update our shadow. + if(shadow) + shadow.forceMove(loc) + shadow.pixel_x = pixel_x + shadow.pixel_y = pixel_y + visual_y_offset - // Update our shadow. - shadow.forceMove(loc) /obj/effect/projectile_shadow name = "shadow" @@ -84,11 +105,18 @@ icon = 'icons/obj/projectiles.dmi' icon_state = "arc_shadow" anchored = TRUE + animate_movement = 0 // Just like the projectile it's following. ////////////// // Subtypes ////////////// +// This is a test projectile in the sense that its testing the code to make sure it works, +// as opposed to a 'can I hit this thing' projectile. +/obj/item/projectile/arc/test/on_impact(turf/T) + new /obj/effect/explosion(T) + T.color = "#FF0000" + // Generic, Hivebot related /obj/item/projectile/arc/blue_energy name = "energy missile" @@ -96,6 +124,10 @@ damage = 15 damage_type = BURN +/obj/item/projectile/arc/blue_energy/on_impact(turf/T) + for(var/mob/living/L in T) + attack_mob(L) // Everything on the turf it lands gets hit. + // Fragmentation arc shot /obj/item/projectile/arc/fragmentation name = "fragmentation shot" @@ -122,11 +154,9 @@ /obj/item/projectile/arc/emp_blast/on_impact(turf/T) empulse(T, 2, 4, 7, 10) // Normal EMP grenade. - return ..() /obj/item/projectile/arc/emp_blast/weak/on_impact(turf/T) empulse(T, 1, 2, 3, 4) // Sec EMP grenade. - return ..() // Radiation arc shot /obj/item/projectile/arc/radioactive @@ -136,4 +166,4 @@ var/rad_power = 50 /obj/item/projectile/arc/radioactive/on_impact(turf/T) - radiation_repository.radiate(T, rad_power) \ No newline at end of file + radiation_repository.radiate(T, rad_power) diff --git a/code/modules/projectiles/projectile/beams.dm b/code/modules/projectiles/projectile/beams.dm index ee2ccc437c..9073ead831 100644 --- a/code/modules/projectiles/projectile/beams.dm +++ b/code/modules/projectiles/projectile/beams.dm @@ -15,9 +15,9 @@ light_power = 0.5 light_color = "#FF0D00" - muzzle_type = /obj/effect/projectile/laser/muzzle - tracer_type = /obj/effect/projectile/laser/tracer - impact_type = /obj/effect/projectile/laser/impact + muzzle_type = /obj/effect/projectile/muzzle/laser + tracer_type = /obj/effect/projectile/tracer/laser + impact_type = /obj/effect/projectile/impact/laser /obj/item/projectile/beam/practice name = "laser" @@ -54,19 +54,20 @@ light_power = 1 light_color = "#FF0D00" - muzzle_type = /obj/effect/projectile/laser_heavy/muzzle - tracer_type = /obj/effect/projectile/laser_heavy/tracer - impact_type = /obj/effect/projectile/laser_heavy/impact + muzzle_type = /obj/effect/projectile/muzzle/laser_heavy + tracer_type = /obj/effect/projectile/tracer/laser_heavy + impact_type = /obj/effect/projectile/impact/laser_heavy /obj/item/projectile/beam/heavylaser/fakeemitter name = "emitter beam" icon_state = "emitter" fire_sound = 'sound/weapons/emitter.ogg' light_color = "#00CC33" + excavation_amount = 70 // 3 shots to mine a turf - muzzle_type = /obj/effect/projectile/emitter/muzzle - tracer_type = /obj/effect/projectile/emitter/tracer - impact_type = /obj/effect/projectile/emitter/impact + muzzle_type = /obj/effect/projectile/muzzle/emitter + tracer_type = /obj/effect/projectile/tracer/emitter + impact_type = /obj/effect/projectile/impact/emitter /obj/item/projectile/beam/heavylaser/cannon damage = 80 @@ -81,9 +82,9 @@ armor_penetration = 50 light_color = "#00CC33" - muzzle_type = /obj/effect/projectile/xray/muzzle - tracer_type = /obj/effect/projectile/xray/tracer - impact_type = /obj/effect/projectile/xray/impact + muzzle_type = /obj/effect/projectile/muzzle/xray + tracer_type = /obj/effect/projectile/tracer/xray + impact_type = /obj/effect/projectile/impact/xray /obj/item/projectile/beam/cyan name = "cyan beam" @@ -91,21 +92,21 @@ damage = 40 light_color = "#00C6FF" - muzzle_type = /obj/effect/projectile/laser_omni/muzzle - tracer_type = /obj/effect/projectile/laser_omni/tracer - impact_type = /obj/effect/projectile/laser_omni/impact + muzzle_type = /obj/effect/projectile/muzzle/laser_omni + tracer_type = /obj/effect/projectile/tracer/laser_omni + impact_type = /obj/effect/projectile/impact/laser_omni /obj/item/projectile/beam/pulse name = "pulse" icon_state = "u_laser" - fire_sound='sound/weapons/pulse.ogg' + fire_sound='sound/weapons/gauss_shoot.ogg' // Needs a more meaty sound than what pulse.ogg currently is; this will be a placeholder for now. damage = 100 //Badmin toy, don't care armor_penetration = 100 light_color = "#0066FF" - muzzle_type = /obj/effect/projectile/laser_pulse/muzzle - tracer_type = /obj/effect/projectile/laser_pulse/tracer - impact_type = /obj/effect/projectile/laser_pulse/impact + muzzle_type = /obj/effect/projectile/muzzle/laser_pulse + tracer_type = /obj/effect/projectile/tracer/laser_pulse + impact_type = /obj/effect/projectile/impact/laser_pulse /obj/item/projectile/beam/pulse/on_hit(var/atom/target, var/blocked = 0) if(isturf(target)) @@ -118,10 +119,11 @@ fire_sound = 'sound/weapons/emitter.ogg' damage = 0 // The actual damage is computed in /code/modules/power/singularity/emitter.dm light_color = "#00CC33" + excavation_amount = 70 // 3 shots to mine a turf - muzzle_type = /obj/effect/projectile/emitter/muzzle - tracer_type = /obj/effect/projectile/emitter/tracer - impact_type = /obj/effect/projectile/emitter/impact + muzzle_type = /obj/effect/projectile/muzzle/emitter + tracer_type = /obj/effect/projectile/tracer/emitter + impact_type = /obj/effect/projectile/impact/emitter /obj/item/projectile/beam/lastertag/blue name = "lasertag beam" @@ -134,9 +136,9 @@ combustion = FALSE - muzzle_type = /obj/effect/projectile/laser_blue/muzzle - tracer_type = /obj/effect/projectile/laser_blue/tracer - impact_type = /obj/effect/projectile/laser_blue/impact + muzzle_type = /obj/effect/projectile/muzzle/laser_blue + tracer_type = /obj/effect/projectile/tracer/laser_blue + impact_type = /obj/effect/projectile/impact/laser_blue /obj/item/projectile/beam/lastertag/blue/on_hit(var/atom/target, var/blocked = 0) if(istype(target, /mob/living/carbon/human)) @@ -173,9 +175,9 @@ combustion = FALSE - muzzle_type = /obj/effect/projectile/laser_omni/muzzle - tracer_type = /obj/effect/projectile/laser_omni/tracer - impact_type = /obj/effect/projectile/laser_omni/impact + muzzle_type = /obj/effect/projectile/muzzle/laser_omni + tracer_type = /obj/effect/projectile/tracer/laser_omni + impact_type = /obj/effect/projectile/impact/laser_omni /obj/item/projectile/beam/lastertag/omni/on_hit(var/atom/target, var/blocked = 0) if(istype(target, /mob/living/carbon/human)) @@ -192,9 +194,9 @@ armor_penetration = 10 light_color = "#00CC33" - muzzle_type = /obj/effect/projectile/xray/muzzle - tracer_type = /obj/effect/projectile/xray/tracer - impact_type = /obj/effect/projectile/xray/impact + muzzle_type = /obj/effect/projectile/muzzle/xray + tracer_type = /obj/effect/projectile/tracer/xray + impact_type = /obj/effect/projectile/impact/xray /obj/item/projectile/beam/stun name = "stun beam" @@ -208,9 +210,9 @@ combustion = FALSE - muzzle_type = /obj/effect/projectile/stun/muzzle - tracer_type = /obj/effect/projectile/stun/tracer - impact_type = /obj/effect/projectile/stun/impact + muzzle_type = /obj/effect/projectile/muzzle/stun + tracer_type = /obj/effect/projectile/tracer/stun + impact_type = /obj/effect/projectile/impact/stun /obj/item/projectile/beam/stun/weak name = "weak stun beam" @@ -220,4 +222,4 @@ /obj/item/projectile/beam/stun/med name = "stun beam" icon_state = "stun" - agony = 35 \ No newline at end of file + agony = 30 \ No newline at end of file diff --git a/code/modules/projectiles/projectile/beams_vr.dm b/code/modules/projectiles/projectile/beams_vr.dm index 5ba1fa56b2..b6ec5cbe0b 100644 --- a/code/modules/projectiles/projectile/beams_vr.dm +++ b/code/modules/projectiles/projectile/beams_vr.dm @@ -7,9 +7,9 @@ damage_type = HALLOSS light_color = "#00CECE" - muzzle_type = /obj/effect/projectile/laser_omni/muzzle - tracer_type = /obj/effect/projectile/laser_omni/tracer - impact_type = /obj/effect/projectile/laser_omni/impact + muzzle_type = /obj/effect/projectile/muzzle/laser_omni + tracer_type = /obj/effect/projectile/tracer/laser_omni + impact_type = /obj/effect/projectile/impact/laser_omni /obj/item/projectile/beam/stun agony = 35 @@ -22,9 +22,9 @@ damage_type = HALLOSS light_color = "#00CC33" - muzzle_type = /obj/effect/projectile/xray/muzzle - tracer_type = /obj/effect/projectile/xray/tracer - impact_type = /obj/effect/projectile/xray/impact + muzzle_type = /obj/effect/projectile/muzzle/xray + tracer_type = /obj/effect/projectile/tracer/xray + impact_type = /obj/effect/projectile/impact/xray /obj/item/projectile/beam/energy_net/on_hit(var/atom/netted) do_net(netted) @@ -38,6 +38,6 @@ icon_state = "bluelaser" light_color = "#0066FF" - muzzle_type = /obj/effect/projectile/laser_blue/muzzle - tracer_type = /obj/effect/projectile/laser_blue/tracer - impact_type = /obj/effect/projectile/laser_blue/impact + muzzle_type = /obj/effect/projectile/muzzle/laser_blue + tracer_type = /obj/effect/projectile/tracer/laser_blue + impact_type = /obj/effect/projectile/impact/laser_blue diff --git a/code/modules/projectiles/projectile/bullets.dm b/code/modules/projectiles/projectile/bullets.dm index ed16105939..8220e90eee 100644 --- a/code/modules/projectiles/projectile/bullets.dm +++ b/code/modules/projectiles/projectile/bullets.dm @@ -1,7 +1,7 @@ /obj/item/projectile/bullet name = "bullet" icon_state = "bullet" - fire_sound = 'sound/weapons/gunshot/gunshot_strong.ogg' + fire_sound = 'sound/weapons/Gunshot4.ogg' damage = 60 damage_type = BRUTE nodamage = 0 @@ -10,7 +10,7 @@ sharp = 1 var/mob_passthrough_check = 0 - muzzle_type = /obj/effect/projectile/bullet/muzzle + muzzle_type = /obj/effect/projectile/muzzle/bullet /obj/item/projectile/bullet/on_hit(var/atom/target, var/blocked = 0) if (..(target, blocked)) @@ -65,7 +65,7 @@ /* short-casing projectiles, like the kind used in pistols or SMGs */ /obj/item/projectile/bullet/pistol // 9mm pistols and most SMGs. Sacrifice power for capacity. - fire_sound = 'sound/weapons/gunshot/gunshot_pistol.ogg' // ToDo: Different shot sounds for different strength pistols. -Ace + fire_sound = 'sound/weapons/gunshot2.ogg' damage = 20 /obj/item/projectile/bullet/pistol/ap @@ -77,7 +77,7 @@ armor_penetration = -50 /obj/item/projectile/bullet/pistol/medium // .45 (and maybe .40 if it ever gets added) caliber security pistols. Balance between capacity and power. - // fire_sound = 'sound/weapons/gunshot3.ogg' // ToDo: Different shot sounds for different strength pistols. + fire_sound = 'sound/weapons/gunshot3.ogg' // Snappier sound. damage = 25 /obj/item/projectile/bullet/pistol/medium/ap @@ -89,11 +89,11 @@ armor_penetration = -50 /obj/item/projectile/bullet/pistol/strong // .357 and .44 caliber stuff. High power pistols like the Mateba or Desert Eagle. Sacrifice capacity for power. - fire_sound = 'sound/weapons/gunshot/gunshot_strong.ogg' // ToDo: Replace with something less ugly. I recommend weapons/gunshot3.ogg + fire_sound = 'sound/weapons/gunshot4.ogg' damage = 60 /obj/item/projectile/bullet/pistol/rubber/strong // "Rubber" bullets for high power pistols. - fire_sound = 'sound/weapons/gunshot/gunshot_strong.ogg' // ToDo: Same as above. + fire_sound = 'sound/weapons/gunshot3.ogg' // Rubber shots have less powder, but these still have more punch than normal rubber shot. damage = 10 agony = 60 embed_chance = 0 @@ -107,12 +107,13 @@ embed_chance = 0 sharp = 0 check_armour = "melee" + fire_sound ='sound/weapons/Gunshot_pathetic.ogg' // Rubber shots have less powder in the casing. /* shotgun projectiles */ /obj/item/projectile/bullet/shotgun name = "slug" - fire_sound = 'sound/weapons/gunshot/shotgun.ogg' + fire_sound = 'sound/weapons/Gunshot_shotgun.ogg' damage = 50 armor_penetration = 15 @@ -128,7 +129,7 @@ //Overall less damage than slugs in exchange for more damage at very close range and more embedding /obj/item/projectile/bullet/pellet/shotgun name = "shrapnel" - fire_sound = 'sound/weapons/gunshot/shotgun.ogg' + fire_sound = 'sound/weapons/Gunshot_shotgun.ogg' damage = 13 pellets = 6 range_step = 1 @@ -143,7 +144,7 @@ //EMP shotgun 'slug', it's basically a beanbag that pops a tiny emp when it hits. //Not currently used /obj/item/projectile/bullet/shotgun/ion name = "ion slug" - fire_sound = 'sound/weapons/Laser.ogg' + fire_sound = 'sound/weapons/Laser.ogg' // Really? We got nothing better than this? damage = 15 embed_chance = 0 sharp = 0 @@ -160,14 +161,18 @@ /* "Rifle" rounds */ /obj/item/projectile/bullet/rifle - fire_sound = 'sound/weapons/gunshot/gunshot3.ogg' + fire_sound = 'sound/weapons/Gunshot_generic_rifle.ogg' armor_penetration = 15 penetrating = 1 /obj/item/projectile/bullet/rifle/a762 - fire_sound = 'sound/weapons/gunshot/gunshot2.ogg' + fire_sound = 'sound/weapons/Gunshot_heavy.ogg' damage = 35 +/obj/item/projectile/bullet/rifle/a762/sniper // Hitscan specifically for sniper ammo; to be implimented at a later date, probably for the SVD. -Ace + fire_sound = 'sound/weapons/Gunshot_sniper.ogg' + hitscan = 1 //so the ammo isn't useless as a sniper weapon + /obj/item/projectile/bullet/rifle/a762/ap damage = 30 armor_penetration = 50 // At 30 or more armor, this will do more damage than standard rounds. @@ -177,12 +182,13 @@ armor_penetration = -50 penetrating = 0 -/obj/item/projectile/bullet/rifle/a762/hunter // Optimized for killing simple animals and not people, because Balance. +/obj/item/projectile/bullet/rifle/a762/hunter // Optimized for killing simple animals and not people, because Balance(tm) damage = 20 SA_bonus_damage = 50 // 70 total on animals. SA_vulnerability = SA_ANIMAL /obj/item/projectile/bullet/rifle/a545 + fire_sound = 'sound/weapons/Gunshot_light.ogg' damage = 25 /obj/item/projectile/bullet/rifle/a545/ap @@ -199,8 +205,8 @@ SA_bonus_damage = 35 // 50 total on animals. SA_vulnerability = SA_ANIMAL -/obj/item/projectile/bullet/rifle/a145 - fire_sound = 'sound/weapons/gunshot/sniper.ogg' +/obj/item/projectile/bullet/rifle/a145 // 14.5×114mm is bigger than a .50 BMG round. + fire_sound = 'sound/weapons/Gunshot_cannon.ogg' // This is literally an anti-tank rifle caliber. It better sound like a fucking cannon. damage = 80 stun = 3 weaken = 3 @@ -251,35 +257,22 @@ incendiary = 2 flammability = 4 agony = 30 - kill_count = 4 + range = 4 vacuum_traversal = 0 /obj/item/projectile/bullet/incendiary/flamethrower/large damage = 15 - kill_count = 6 + range = 6 -/obj/item/projectile/bullet/blank - invisibility = 101 - damage = 1 - embed_chance = 0 +/* Practice rounds and blanks */ -/* Practice */ - -/obj/item/projectile/bullet/pistol/practice +/obj/item/projectile/bullet/practice damage = 5 -/obj/item/projectile/bullet/rifle/practice - damage = 5 - penetrating = 0 - -/obj/item/projectile/bullet/shotgun/practice - name = "practice" - damage = 5 - -/obj/item/projectile/bullet/pistol/cap +/obj/item/projectile/bullet/pistol/cap // Just the primer, such as a cap gun. name = "cap" damage_type = HALLOSS - fire_sound = null + fire_sound = 'sound/effects/snap.ogg' damage = 0 nodamage = 1 embed_chance = 0 @@ -288,5 +281,18 @@ combustion = FALSE /obj/item/projectile/bullet/pistol/cap/process() + loc = null + qdel(src) + +/obj/item/projectile/bullet/blank + name = "blank" + damage_type = HALLOSS + fire_sound = 'sound/weapons/Gunshot_generic_rifle.ogg' // Blanks still make loud noises. + damage = 0 + nodamage = 1 + embed_chance = 0 + sharp = 0 + +/obj/item/projectile/bullet/blank/cap/process() loc = null qdel(src) \ No newline at end of file diff --git a/code/modules/projectiles/projectile/bullets_vr.dm b/code/modules/projectiles/projectile/bullets_vr.dm index 0d2595b6c3..adcdf465b5 100644 --- a/code/modules/projectiles/projectile/bullets_vr.dm +++ b/code/modules/projectiles/projectile/bullets_vr.dm @@ -9,7 +9,7 @@ name = "chemical shell" icon_state = "bullet" damage = 10 - kill_count = 15 //if the shell hasn't hit anything after travelling this far it just explodes. + range = 15 //if the shell hasn't hit anything after travelling this far it just explodes. flash_strength = 15 brightness = 15 diff --git a/code/modules/projectiles/projectile/change.dm b/code/modules/projectiles/projectile/change.dm index 0beffe46a3..df802f4bb5 100644 --- a/code/modules/projectiles/projectile/change.dm +++ b/code/modules/projectiles/projectile/change.dm @@ -54,7 +54,7 @@ Robot.mmi = new /obj/item/device/mmi(new_mob) Robot.mmi.transfer_identity(M) //Does not transfer key/client. if("slime") - new_mob = new /mob/living/simple_animal/slime(M.loc) + new_mob = new /mob/living/simple_mob/slime/xenobio(M.loc) new_mob.universal_speak = 1 else var/mob/living/carbon/human/H diff --git a/code/modules/projectiles/projectile/energy.dm b/code/modules/projectiles/projectile/energy.dm index bd97f64737..fcbc10f109 100644 --- a/code/modules/projectiles/projectile/energy.dm +++ b/code/modules/projectiles/projectile/energy.dm @@ -10,9 +10,9 @@ /obj/item/projectile/energy/flash name = "chemical shell" icon_state = "bullet" - fire_sound = 'sound/weapons/gunshot/gunshot_pistol.ogg' + fire_sound = 'sound/weapons/gunshot_pathetic.ogg' damage = 5 - kill_count = 15 //if the shell hasn't hit anything after travelling this far it just explodes. + range = 15 //if the shell hasn't hit anything after travelling this far it just explodes. var/flash_range = 0 var/brightness = 7 var/light_colour = "#ffffff" @@ -48,7 +48,7 @@ //blinds people like the flash round, but can also be used for temporary illumination /obj/item/projectile/energy/flash/flare - fire_sound = 'sound/weapons/gunshot/shotgun.ogg' + fire_sound = 'sound/weapons/grenade_launcher.ogg' damage = 10 flash_range = 1 brightness = 15 @@ -65,7 +65,7 @@ /obj/item/projectile/energy/electrode name = "electrode" icon_state = "spark" - fire_sound = 'sound/weapons/Gunshot.ogg' + fire_sound = 'sound/weapons/Gunshot2.ogg' taser_effect = 1 agony = 40 light_range = 2 @@ -123,6 +123,7 @@ damage_type = BURN agony = 10 check_armour = "bio" + armor_penetration = 25 // It's acid combustion = FALSE @@ -130,9 +131,10 @@ name = "neurotoxic spit" icon_state = "neurotoxin" damage = 5 - damage_type = TOX + damage_type = BIOACID agony = 80 check_armour = "bio" + armor_penetration = 25 // It's acid-based combustion = FALSE @@ -140,9 +142,10 @@ name = "neurotoxic spit" icon_state = "neurotoxin" damage = 20 - damage_type = TOX + damage_type = BIOACID agony = 20 check_armour = "bio" + armor_penetration = 25 // It's acid-based /obj/item/projectile/energy/phoron name = "phoron bolt" @@ -162,7 +165,7 @@ icon_state = "plasma_stun" fire_sound = 'sound/weapons/blaster.ogg' armor_penetration = 10 - kill_count = 4 + range = 4 damage = 5 agony = 55 damage_type = BURN @@ -209,25 +212,25 @@ light_color = "#0000FF" embed_chance = 0 - muzzle_type = /obj/effect/projectile/pulse/muzzle + muzzle_type = /obj/effect/projectile/muzzle/pulse /obj/item/projectile/energy/phase name = "phase wave" icon_state = "phase" - kill_count = 6 + range = 6 damage = 5 SA_bonus_damage = 45 // 50 total on animals SA_vulnerability = SA_ANIMAL /obj/item/projectile/energy/phase/light - kill_count = 4 + range = 4 SA_bonus_damage = 35 // 40 total on animals /obj/item/projectile/energy/phase/heavy - kill_count = 8 + range = 8 SA_bonus_damage = 55 // 60 total on animals /obj/item/projectile/energy/phase/heavy/cannon - kill_count = 10 + range = 10 damage = 15 SA_bonus_damage = 60 // 75 total on animals diff --git a/code/modules/projectiles/projectile/hook.dm b/code/modules/projectiles/projectile/hook.dm new file mode 100644 index 0000000000..ad02dee8cf --- /dev/null +++ b/code/modules/projectiles/projectile/hook.dm @@ -0,0 +1,193 @@ +/* + * File containing special 'hook' projectiles. Function is dictated by the launcher's intent. + */ + +/obj/item/projectile/energy/hook + name = "graviton sphere" + icon_state = "bluespace" + + var/beam_state = "b_beam" + + damage = 5 + speed = 2 + damage_type = BURN + check_armour = "energy" + armor_penetration = 15 + + var/impact_sound = 'sound/effects/uncloak.ogg' + var/crack_sound = 'sound/effects/teleport.ogg' + fire_sound = 'sound/effects/zzzt.ogg' + + var/target_distance = null // Shamelessly stolen from arcing projectiles. + var/my_tracking_beam = null // Beam made by the launcher. Tracked here to destroy it in time with the impact. + var/launcher_intent = null // Stores the launcher's intent. + + var/disarm_chance = 60 // Chance for a successful disarm hit. The inverse is a throw away from the firer. + + var/list/help_messages = list("slaps", "pokes", "nudges", "bumps", "pinches") + var/done_mob_unique = FALSE // Has the projectile already done something to a mob? + +/obj/item/projectile/energy/hook/launch_projectile(atom/target, target_zone, mob/user, params, angle_override, forced_spread = 0) + var/expected_distance = get_dist(target, loc) + range = expected_distance // So the hook hits the ground if no mob is hit. + target_distance = expected_distance + if(firer) // Needed to ensure later checks in impact and on hit function. + launcher_intent = firer.a_intent + firer.Beam(src,icon_state=beam_state,icon='icons/effects/beam.dmi',time=60, maxdistance=10,beam_type=/obj/effect/ebeam,beam_sleep_time=1) + + if(launcher_intent) + switch(launcher_intent) + if(I_HURT) + check_armour = "bullet" + damage *= 3 + sharp = 1 + agony = 20 + if(I_GRAB) + check_armour = "melee" + damage_type = HALLOSS + if(I_DISARM) + check_armour = "melee" + if(prob(30)) // A chance for a successful hit to either knock someone down, or cause minor disorientation. + weaken = 1 + else + stun = 2 + eyeblur = 3 + if(I_HELP) + silenced = 1 + damage_type = HALLOSS + + ..() // Does the regular launching stuff. + +/obj/item/projectile/energy/hook/on_hit(var/atom/target, var/blocked = 0, var/def_zone = null) + if(..()) + perform_intent_unique(target) + +/obj/item/projectile/energy/hook/on_impact(var/atom/A) + perform_intent_unique(get_turf(A)) + +/obj/item/projectile/energy/hook/proc/ranged_disarm(var/mob/living/carbon/human/H) + if(istype(H)) + var/list/holding = list(H.get_active_hand() = 60, H.get_inactive_hand() = 40) + + for(var/obj/item/weapon/gun/W in holding) // Guns are complex devices, both of a mechanical and electronic nature. A weird gravity ball or other type of object trying to pull or grab it is likely not safe. + if(W && prob(holding[W])) + var/list/turfs = list() + for(var/turf/T in view()) + turfs += T + if(turfs.len) + var/turf/target = pick(turfs) + visible_message("[H]'s [W] goes off due to \the [src]!") + return W.afterattack(target,H) + + if(!(H.species.flags & NO_SLIP) && prob(50)) + var/armor_check = H.run_armor_check(def_zone, "melee") + H.apply_effect(3, WEAKEN, armor_check) + playsound(loc, 'sound/weapons/thudswoosh.ogg', 50, 1, -1) + if(armor_check < 60) + visible_message("\The [src] has pushed [H]!") + else + visible_message("\The [src] attempted to push [H]!") + return + + else + if(H.break_all_grabs(firer)) + playsound(loc, 'sound/weapons/thudswoosh.ogg', 50, 1, -1) + return + + for(var/obj/item/I in holding) + if(I) + H.drop_from_inventory(I) + visible_message("\The [src] has disarmed [H]!") + playsound(loc, 'sound/weapons/thudswoosh.ogg', 50, 1, -1) + return + + +/obj/item/projectile/energy/hook/proc/perform_intent_unique(atom/target) + playsound(src.loc, impact_sound, 40, 1) + var/success = FALSE + if(istype(target,/turf)) + if(launcher_intent) + if(launcher_intent != I_HELP && !done_mob_unique) + var/target_mob = pick(/mob/living in target.contents) + + if(!target_mob) + return + + if(Bump(target_mob, forced=1)) //If we hit a turf, try to force an interaction with a mob on the turf. + done_mob_unique = TRUE + success = TRUE + else if(firer) + var/obj/T + + if(original in target.contents && istype(original, /obj)) + T = original + + var/list/possible_targets = list() + for(var/obj/item/I in target.contents) + if(!I.anchored) + possible_targets += I + for(var/obj/structure/S in target.contents) + if(!S.anchored) + possible_targets += S + + if(!T) + if(!possible_targets || !possible_targets.len) + return + T = pick(possible_targets) + + spawn(2) + playsound(target, crack_sound, 40, 1) + visible_message("\The [T] is snatched by \the [src]!") + T.throw_at(get_turf(firer), 7, 1, src) + success = TRUE + else if(isliving(target) && !done_mob_unique) + var/mob/living/L = target + if(launcher_intent) + switch(launcher_intent) + if(I_HELP) + var/message = pick(help_messages) + if(message == "slaps") + spawn(1) + playsound(loc, 'sound/effects/snap.ogg', 50, 1) + visible_message("\The [src] [message] [target].") + done_mob_unique = TRUE + success = TRUE + if(I_HURT) + if(prob(10) && istype(L, /mob/living/carbon/human)) + to_chat(L, "\The [src] rips at your hands!") + ranged_disarm(L) + success = TRUE + done_mob_unique = TRUE + if(I_DISARM) + if(prob(disarm_chance) && istype(L, /mob/living/carbon/human)) + ranged_disarm(L) + else + L.visible_message("\The [src] sends \the [L] stumbling backwards.") + L.throw_at(get_turf(get_step(L,get_dir(firer,L))), 1, 1, src) + done_mob_unique = TRUE + success = TRUE + if(I_GRAB) + var/turf/STurf = get_turf(L) + spawn(2) + playsound(STurf, crack_sound, 60, 1) + L.visible_message("\The [src] rips [L] towards \the [firer]!") + L.throw_at(get_turf(get_step(firer,get_dir(firer,L))), 6, 1, src) + done_mob_unique = TRUE + success = TRUE + else if(istype(target, /obj/structure)) + var/obj/structure/S = target + if(!S.anchored) + S.throw_at(get_turf(get_step(firer,get_dir(firer,S))), 4, 1, src) + success = TRUE + qdel(my_tracking_beam) + return success + +/* + * Hook subtypes. + */ + +/obj/item/projectile/energy/hook/ring + name = "green orb" + icon_state = "green_laser" + beam_state = "n_beam" + damage = 3 diff --git a/code/modules/projectiles/projectile/magnetic.dm b/code/modules/projectiles/projectile/magnetic.dm index ed16ea208d..8185fb127e 100644 --- a/code/modules/projectiles/projectile/magnetic.dm +++ b/code/modules/projectiles/projectile/magnetic.dm @@ -34,7 +34,7 @@ penetrating = 2 embed_chance = 0 armor_penetration = 40 - kill_count = 20 + range = 20 var/searing = 0 //Does this fuelrod ignore shields? var/detonate_travel = 0 //Will this fuelrod explode when it reaches maximum distance? @@ -50,7 +50,7 @@ if(energetic_impact) var/eye_coverage = 0 - for(var/mob/living/carbon/M in viewers(world.view, location)) + for(var/mob/living/carbon/M in viewers(world.view, get_turf(src))) eye_coverage = 0 if(iscarbon(M)) eye_coverage = M.eyecheck() @@ -103,7 +103,7 @@ armor_penetration = 100 penetrating = 100 //Theoretically, this shouldn't stop flying for a while, unless someone lines it up with a wall or fires it into a mountain. irradiate = 120 - kill_count = 75 + range = 75 searing = 1 detonate_travel = 1 detonate_mob = 1 @@ -116,4 +116,29 @@ return ..(target, blocked, def_zone) /obj/item/projectile/bullet/magnetic/fuelrod/supermatter/check_penetrate() - return 1 \ No newline at end of file + return 1 + +/obj/item/projectile/bullet/magnetic/bore + name = "phorogenic blast" + icon_state = "purpleemitter" + damage = 20 + incendiary = 1 + armor_penetration = 20 + penetrating = 0 + check_armour = "melee" + irradiate = 20 + range = 6 + +/obj/item/projectile/bullet/magnetic/bore/Bump(atom/A, forced=0) + if(istype(A, /turf/simulated/mineral)) + var/turf/simulated/mineral/MI = A + loc = get_turf(A) // Careful. + permutated.Add(A) + MI.GetDrilled(TRUE) + return 0 + else if(istype(A, /turf/simulated/wall) || istype(A, /turf/simulated/shuttle/wall)) // Cause a loud, but relatively minor explosion on the wall it hits. + explosion(A, -1, -1, 1, 3) + qdel(src) + return 1 + else + ..() diff --git a/code/modules/projectiles/projectile/pellets.dm b/code/modules/projectiles/projectile/pellets.dm index 9b7ee244e3..306ab81268 100644 --- a/code/modules/projectiles/projectile/pellets.dm +++ b/code/modules/projectiles/projectile/pellets.dm @@ -9,10 +9,6 @@ var/base_spread = 90 //lower means the pellets spread more across body parts. If zero then this is considered a shrapnel explosion instead of a shrapnel cone var/spread_step = 10 //higher means the pellets spread more across body parts with distance -/obj/item/projectile/bullet/pellet/Bumped() - . = ..() - bumped = 0 //can hit all mobs in a tile. pellets is decremented inside attack_mob so this should be fine. - /obj/item/projectile/bullet/pellet/proc/get_pellets(var/distance) var/pellet_loss = round((distance - 1)/range_step) //pellets lost due to distance return max(pellets - pellet_loss, 1) diff --git a/code/modules/projectiles/projectile/special.dm b/code/modules/projectiles/projectile/special.dm index 2e27d125ef..705a817236 100644 --- a/code/modules/projectiles/projectile/special.dm +++ b/code/modules/projectiles/projectile/special.dm @@ -219,7 +219,7 @@ embed_chance = 0 // nope nodamage = 1 damage_type = HALLOSS - muzzle_type = /obj/effect/projectile/bullet/muzzle + muzzle_type = /obj/effect/projectile/muzzle/bullet /obj/item/projectile/bola name = "bola" @@ -257,3 +257,82 @@ visible_message("\The [src] splatters a layer of web on \the [target]!") new /obj/effect/spider/stickyweb(target.loc) ..() + +/obj/item/projectile/beam/tungsten + name = "core of molten tungsten" + icon_state = "energy" + fire_sound = 'sound/weapons/gauss_shoot.ogg' + pass_flags = PASSTABLE | PASSGRILLE + damage = 70 + damage_type = BURN + check_armour = "laser" + light_range = 4 + light_power = 3 + light_color = "#3300ff" + + muzzle_type = /obj/effect/projectile/tungsten/muzzle + tracer_type = /obj/effect/projectile/tungsten/tracer + impact_type = /obj/effect/projectile/tungsten/impact + +/obj/item/projectile/beam/tungsten/on_hit(var/atom/target, var/blocked = 0) + if(isliving(target)) + var/mob/living/L = target + L.add_modifier(/datum/modifier/grievous_wounds, 30 SECONDS) + if(ishuman(L)) + var/mob/living/carbon/human/H = L + + var/target_armor = H.getarmor(def_zone, check_armour) + var/obj/item/organ/external/target_limb = H.get_organ(def_zone) + + var/armor_special = 0 + + if(target_armor >= 60) + var/turf/T = get_step(H, pick(alldirs - src.dir)) + H.throw_at(T, 1, 1, src) + H.apply_damage(20, BURN, def_zone) + if(target_limb) + armor_special = 2 + target_limb.fracture() + + else if(target_armor >= 45) + H.apply_damage(15, BURN, def_zone) + if(target_limb) + armor_special = 1 + target_limb.dislocate() + + else if(target_armor >= 30) + H.apply_damage(10, BURN, def_zone) + if(prob(30) && target_limb) + armor_special = 1 + target_limb.dislocate() + + else if(target_armor >= 15) + H.apply_damage(5, BURN, def_zone) + if(prob(15) && target_limb) + armor_special = 1 + target_limb.dislocate() + + if(armor_special > 1) + target.visible_message("\The [src] slams into \the [target]'s [target_limb], reverberating loudly!") + + else if(armor_special) + target.visible_message("\The [src] slams into \the [target]'s [target_limb] with a low rumble!") + + ..() + +/obj/item/projectile/beam/tungsten/on_impact(var/atom/A) + if(istype(A,/turf/simulated/shuttle/wall) || istype(A,/turf/simulated/wall) || (istype(A,/turf/simulated/mineral) && A.density) || istype(A,/obj/mecha) || istype(A,/obj/machinery/door)) + var/blast_dir = src.dir + A.visible_message("\The [A] begins to glow!") + spawn(2 SECONDS) + var/blastloc = get_step(A, blast_dir) + if(blastloc) + explosion(blastloc, -1, -1, 2, 3) + ..() + +/obj/item/projectile/beam/tungsten/Bump(atom/A, forced=0) + if(istype(A, /obj/structure/window)) //It does not pass through windows. It pulverizes them. + var/obj/structure/window/W = A + W.shatter() + return 0 + ..() diff --git a/code/modules/projectiles/projectile/trace.dm b/code/modules/projectiles/projectile/trace.dm new file mode 100644 index 0000000000..aaf7b9a7b6 --- /dev/null +++ b/code/modules/projectiles/projectile/trace.dm @@ -0,0 +1,39 @@ +// Helper proc to check if you can hit them or not. +// Will return a list of hit mobs/objects. +/proc/check_trajectory(atom/target as mob|obj, atom/firer as mob|obj, var/pass_flags=PASSTABLE|PASSGLASS|PASSGRILLE, flags=null) + if(!istype(target) || !istype(firer)) + return 0 + + var/obj/item/projectile/test/trace = new /obj/item/projectile/test(get_turf(firer)) //Making the test.... + + //Set the flags and pass flags to that of the real projectile... + if(!isnull(flags)) + trace.flags = flags + trace.pass_flags = pass_flags + + return trace.launch_projectile(target) //Test it! + +/obj/item/projectile/proc/_check_fire(atom/target as mob, var/mob/living/user as mob) //Checks if you can hit them or not. + check_trajectory(target, user, pass_flags, flags) + +//"Tracing" projectile +/obj/item/projectile/test //Used to see if you can hit them. + invisibility = 101 //Nope! Can't see me! + hitscan = TRUE + nodamage = TRUE + damage = 0 + var/list/hit = list() + +/obj/item/projectile/test/process_hitscan() + . = ..() + if(!QDELING(src)) + qdel(src) + return hit + +/obj/item/projectile/test/Bump(atom/A) + if(A != src) + hit |= A + return ..() + +/obj/item/projectile/test/attack_mob() + return diff --git a/code/modules/projectiles/targeting/targeting_overlay.dm b/code/modules/projectiles/targeting/targeting_overlay.dm index 76d1804265..2c7f75cc96 100644 --- a/code/modules/projectiles/targeting/targeting_overlay.dm +++ b/code/modules/projectiles/targeting/targeting_overlay.dm @@ -89,7 +89,7 @@ aiming_at = null owner = null aiming_with = null - processing_objects -= src + STOP_PROCESSING(SSobj, src) return ..() obj/aiming_overlay/proc/update_aiming_deferred() @@ -171,12 +171,13 @@ obj/aiming_overlay/proc/update_aiming_deferred() if(owner.client) owner.client.add_gun_icons() to_chat(target, "You now have a gun pointed at you. No sudden moves!") + to_chat(target, "If you fail to comply with your assailant, you accept the consequences of your actions.") aiming_with = thing aiming_at = target if(istype(aiming_with, /obj/item/weapon/gun)) playsound(get_turf(owner), 'sound/weapons/TargetOn.ogg', 50,1) forceMove(get_turf(target)) - processing_objects |= src + START_PROCESSING(SSobj, src) aiming_at.aimed |= src toggle_active(1) @@ -222,5 +223,5 @@ obj/aiming_overlay/proc/update_aiming_deferred() aiming_at.aimed -= src aiming_at = null loc = null - processing_objects -= src + STOP_PROCESSING(SSobj, src) diff --git a/code/modules/random_map/drop/droppod.dm b/code/modules/random_map/drop/droppod.dm index da346d2eb7..1d5fcb8d8f 100644 --- a/code/modules/random_map/drop/droppod.dm +++ b/code/modules/random_map/drop/droppod.dm @@ -15,7 +15,7 @@ floor_type = /turf/simulated/floor/reinforced var/list/supplied_drop_types = list() var/door_type = /obj/structure/droppod_door - var/drop_type = /mob/living/simple_animal/parrot + var/drop_type = /mob/living/simple_mob/animal/passive/bird/parrot var/auto_open_doors var/placement_explosion_dev = 1 @@ -172,7 +172,7 @@ spawned_mobs |= M else var/list/candidates = list() - for(var/client/player in clients) + for(var/client/player in GLOB.clients) if(player.mob && istype(player.mob, /mob/observer/dead)) candidates |= player diff --git a/code/modules/random_map/noise/desert.dm b/code/modules/random_map/noise/desert.dm index 1c7ca229a4..0264d2a781 100644 --- a/code/modules/random_map/noise/desert.dm +++ b/code/modules/random_map/noise/desert.dm @@ -27,7 +27,7 @@ var/grass_path = pick(typesof(/obj/structure/flora/grass)-/obj/structure/flora/grass) new grass_path(T) if(prob(5)) - var/mob_type = pick(list(/mob/living/simple_animal/lizard, /mob/living/simple_animal/mouse)) + var/mob_type = pick(list(/mob/living/simple_mob/animal/passive/lizard, /mob/living/simple_mob/animal/passive/mouse)) new mob_type(T) if(5 to 6) if(prob(20)) diff --git a/code/modules/random_map/noise/noise.dm b/code/modules/random_map/noise/noise.dm index 7e4323158e..8e45a21c3f 100644 --- a/code/modules/random_map/noise/noise.dm +++ b/code/modules/random_map/noise/noise.dm @@ -19,10 +19,10 @@ /datum/random_map/noise/set_map_size() // Make sure the grid is a square with limits that are // (n^2)+1, otherwise diamond-square won't work. - if(!IsPowerOfTwo((limit_x-1))) - limit_x = RoundUpToPowerOfTwo(limit_x) + 1 - if(!IsPowerOfTwo((limit_y-1))) - limit_y = RoundUpToPowerOfTwo(limit_y) + 1 + if(!ISPOWEROFTWO((limit_x-1))) + limit_x = ROUNDUPTOPOWEROFTWO(limit_x) + 1 + if(!ISPOWEROFTWO((limit_y-1))) + limit_y = ROUNDUPTOPOWEROFTWO(limit_y) + 1 // Sides must be identical lengths. if(limit_x > limit_y) limit_y = limit_x diff --git a/code/modules/random_map/noise/tundra.dm b/code/modules/random_map/noise/tundra.dm index 83b7435e40..6cb8114298 100644 --- a/code/modules/random_map/noise/tundra.dm +++ b/code/modules/random_map/noise/tundra.dm @@ -46,13 +46,13 @@ switch(val) if(2) if(prob(5)) - new /mob/living/simple_animal/crab(T) + new /mob/living/simple_mob/animal/passive/crab(T) if(6) if(prob(60)) var/grass_path = pick(typesof(/obj/structure/flora/grass)-/obj/structure/flora/grass) new grass_path(T) if(prob(5)) - var/mob_type = pick(list(/mob/living/simple_animal/lizard, /mob/living/simple_animal/mouse)) + var/mob_type = pick(list(/mob/living/simple_mob/animal/passive/lizard, /mob/living/simple_mob/animal/passive/mouse)) new mob_type(T) if(7) if(prob(60)) diff --git a/code/modules/reagents/Chemistry-Holder.dm b/code/modules/reagents/Chemistry-Holder.dm index b7a8ad48c1..9ec1a83e05 100644 --- a/code/modules/reagents/Chemistry-Holder.dm +++ b/code/modules/reagents/Chemistry-Holder.dm @@ -85,9 +85,7 @@ //returns 1 if the holder should continue reactiong, 0 otherwise. /datum/reagents/proc/process_reactions() - if(!my_atom) // No reactions in temporary holders - return 0 - if(!my_atom.loc) //No reactions inside GC'd containers + if(QDELETED(my_atom)) //No container, no reaction. return 0 if(my_atom.flags & NOREACT) // No reactions here return 0 @@ -152,7 +150,7 @@ my_atom.on_reagent_change() return 1 else - warning("[my_atom] attempted to add a reagent called '[id]' which doesn't exist. ([usr])") + crash_with("[my_atom] attempted to add a reagent called '[id]' which doesn't exist. ([usr])") return 0 /datum/reagents/proc/remove_reagent(var/id, var/amount, var/safety = 0) diff --git a/code/modules/reagents/Chemistry-Machinery.dm b/code/modules/reagents/Chemistry-Machinery.dm index 141263e2d3..825fd95fd4 100644 --- a/code/modules/reagents/Chemistry-Machinery.dm +++ b/code/modules/reagents/Chemistry-Machinery.dm @@ -32,7 +32,7 @@ /obj/machinery/chem_master/New() ..() - var/datum/reagents/R = new/datum/reagents(900) //Just a huge random number so the buffer should (probably) never dump your reagents. + var/datum/reagents/R = new/datum/reagents(900) //Just a huge random number so the buffer should (probably) never dump your reagents. reagents = R //There should be a nano ui thingy to warn of this. R.my_atom = src @@ -177,21 +177,21 @@ if(href_list["amount"]) var/id = href_list["add"] - var/amount = Clamp((text2num(href_list["amount"])), 0, 200) + var/amount = CLAMP((text2num(href_list["amount"])), 0, 200) R.trans_id_to(src, id, amount) else if (href_list["addcustom"]) var/id = href_list["addcustom"] useramount = input("Select the amount to transfer.", 30, useramount) as num - useramount = Clamp(useramount, 0, 200) + useramount = CLAMP(useramount, 0, 200) src.Topic(null, list("amount" = "[useramount]", "add" = "[id]")) else if (href_list["remove"]) if(href_list["amount"]) var/id = href_list["remove"] - var/amount = Clamp((text2num(href_list["amount"])), 0, 200) + var/amount = CLAMP((text2num(href_list["amount"])), 0, 200) if(mode) reagents.trans_id_to(beaker, id, amount) else @@ -202,7 +202,7 @@ var/id = href_list["removecustom"] useramount = input("Select the amount to transfer.", 30, useramount) as num - useramount = Clamp(useramount, 0, 200) + useramount = CLAMP(useramount, 0, 200) src.Topic(null, list("amount" = "[useramount]", "remove" = "[id]")) else if (href_list["toggle"]) @@ -224,7 +224,7 @@ count = input("Select the number of pills to make.", "Max [max_pill_count]", pillamount) as null|num if(!count) //Covers 0 and cancel return - count = Clamp(count, 1, max_pill_count) + count = CLAMP(count, 1, max_pill_count) if(reagents.total_volume/count < 1) //Sanity checking. return @@ -550,3 +550,70 @@ qdel(O) if (beaker.reagents.total_volume >= beaker.reagents.maximum_volume) break + + +/////////////// +/////////////// +// Detects reagents inside most containers, and acts as an infinite identification system for reagent-based unidentified objects. + +/obj/machinery/chemical_analyzer + name = "chem analyzer" + desc = "Used to precisely scan chemicals and other liquids inside various containers. \ + It may also identify the liquid contents of unknown objects." + description_info = "This machine will try to tell you what reagents are inside of something capable of holding reagents. \ + It is also used to 'identify' specific reagent-based objects with their properties obscured from inspection by normal means." + icon = 'icons/obj/chemical.dmi' + icon_state = "chem_analyzer" + density = TRUE + anchored = TRUE + use_power = TRUE + idle_power_usage = 20 + clicksound = "button" + var/analyzing = FALSE + +/obj/machinery/chemical_analyzer/update_icon() + icon_state = "chem_analyzer[analyzing ? "-working":""]" + +/obj/machinery/chemical_analyzer/attackby(obj/item/I, mob/living/user) + if(!istype(I)) + return ..() + + if(default_deconstruction_screwdriver(user, I)) + return + if(default_deconstruction_crowbar(user, I)) + return + + if(istype(I,/obj/item/weapon/reagent_containers)) + analyzing = TRUE + update_icon() + to_chat(user, span("notice", "Analyzing \the [I], please stand by...")) + + if(!do_after(user, 2 SECONDS, src)) + to_chat(user, span("warning", "Sample moved outside of scan range, please try again and remain still.")) + analyzing = FALSE + update_icon() + return + + // First, identify it if it isn't already. + if(!I.is_identified(IDENTITY_FULL)) + var/datum/identification/ID = I.identity + if(ID.identification_type == IDENTITY_TYPE_CHEMICAL) // This only solves chemical-based mysteries. + I.identify(IDENTITY_FULL, user) + + // Now tell us everything that is inside. + if(I.reagents && I.reagents.reagent_list.len) + to_chat(user, "
      ") // To add padding between regular chat and the output. + for(var/datum/reagent/R in I.reagents.reagent_list) + if(!R.name) + continue + to_chat(user, span("notice", "Contains [R.volume]u of [R.name].
      [R.description]
      ")) + + // Last, unseal it if it's an autoinjector. + if(istype(I,/obj/item/weapon/reagent_containers/hypospray/autoinjector/biginjector) && !(I.flags & OPENCONTAINER)) + I.flags |= OPENCONTAINER + to_chat(user, span("notice", "Sample container unsealed.
      ")) + + to_chat(user, span("notice", "Scanning of \the [I] complete.")) + analyzing = FALSE + update_icon() + return \ No newline at end of file diff --git a/code/modules/reagents/Chemistry-Reagents.dm b/code/modules/reagents/Chemistry-Reagents.dm index 5c3852534d..b2e7a55a69 100644 --- a/code/modules/reagents/Chemistry-Reagents.dm +++ b/code/modules/reagents/Chemistry-Reagents.dm @@ -1,4 +1,3 @@ - //Chemical Reagents - Initialises all /datum/reagent into a list indexed by reagent id /proc/initialize_chemical_reagents() var/paths = typesof(/datum/reagent) - /datum/reagent @@ -10,6 +9,7 @@ chemical_reagents_list[D.id] = D + /datum/reagent var/name = "Reagent" var/id = "reagent" diff --git a/code/modules/reagents/Chemistry-Reagents/Chemistry-Reagents-Core.dm b/code/modules/reagents/Chemistry-Reagents/Chemistry-Reagents-Core.dm index a32f83f794..cbe7dd9c5b 100644 --- a/code/modules/reagents/Chemistry-Reagents/Chemistry-Reagents-Core.dm +++ b/code/modules/reagents/Chemistry-Reagents/Chemistry-Reagents-Core.dm @@ -169,8 +169,8 @@ /datum/reagent/water/touch_mob(var/mob/living/L, var/amount) if(istype(L)) // First, kill slimes. - if(istype(L, /mob/living/simple_animal/slime)) - var/mob/living/simple_animal/slime/S = L + if(istype(L, /mob/living/simple_mob/slime)) + var/mob/living/simple_mob/slime/S = L S.adjustToxLoss(15 * amount) S.visible_message("[S]'s flesh sizzles where the water touches it!", "Your flesh burns in the water!") diff --git a/code/modules/reagents/Chemistry-Reagents/Chemistry-Reagents-Food-Drinks.dm b/code/modules/reagents/Chemistry-Reagents/Chemistry-Reagents-Food-Drinks.dm index a7bcd87892..6528826ac7 100644 --- a/code/modules/reagents/Chemistry-Reagents/Chemistry-Reagents-Food-Drinks.dm +++ b/code/modules/reagents/Chemistry-Reagents/Chemistry-Reagents-Food-Drinks.dm @@ -34,19 +34,16 @@ data -= taste /datum/reagent/nutriment/affect_blood(var/mob/living/carbon/M, var/alien, var/removed) - /* VOREStation Removal - if(!injectable && alien != IS_SLIME) + if(!injectable && alien != IS_SLIME && alien != IS_CHIMERA) //VOREStation Edit M.adjustToxLoss(0.1 * removed) return - affect_ingest(M, alien, removed) - */ //VOREStation Removal End - if(injectable) //vorestation addition/replacement - affect_ingest(M, alien, removed) + affect_ingest(M, alien, removed) /datum/reagent/nutriment/affect_ingest(var/mob/living/carbon/M, var/alien, var/removed) switch(alien) if(IS_DIONA) return if(IS_UNATHI) removed *= 0.5 + if(IS_CHIMERA) removed *= 0.25 //VOREStation Edit if(issmall(M)) removed *= 2 // Small bodymass, more effect from lower volume. M.heal_organ_damage(0.5 * removed, 0) if(M.species.gets_food_nutrition) //VOREStation edit. If this is set to 0, they don't get nutrition from food. @@ -77,6 +74,10 @@ return if(IS_UNATHI) ..(M, alien, removed*2.25) //Unathi get most of their nutrition from meat. + //VOREStation Edit Start + if(IS_CHIMERA) + ..(M, alien, removed*4) //Xenochimera are obligate carnivores. + //VOREStation Edit End ..() /datum/reagent/nutriment/protein/affect_blood(var/mob/living/carbon/M, var/alien, var/removed) @@ -305,8 +306,6 @@ M.bodytemperature = max(M.bodytemperature - 10 * TEMPERATURE_DAMAGE_COEFFICIENT, 215) if(prob(1)) M.emote("shiver") - if(istype(M, /mob/living/simple_animal/slime)) - M.bodytemperature = max(M.bodytemperature - rand(10,20), 0) holder.remove_reagent("capsaicin", 5) /datum/reagent/frostoil/cryotoxin //A longer lasting version of frost oil. @@ -346,8 +345,6 @@ M.apply_effect(2, AGONY, 0) if(prob(5)) M.visible_message("[M] [pick("dry heaves!","coughs!","splutters!")]", "You feel like your insides are burning!") - if(istype(M, /mob/living/simple_animal/slime)) - M.bodytemperature += rand(10, 25) holder.remove_reagent("frostoil", 5) /datum/reagent/condensedcapsaicin @@ -492,8 +489,6 @@ M.apply_effect(4, AGONY, 0) if(prob(5)) M.visible_message("[M] [pick("dry heaves!","coughs!","splutters!")]", "You feel like your insides are burning!") - if(istype(M, /mob/living/simple_animal/slime)) - M.bodytemperature += rand(15, 30) holder.remove_reagent("frostoil", 5) /* Drinks */ @@ -1491,7 +1486,7 @@ id = "lovepotion" description = "Creamy strawberries and sugar, simple and sweet." taste_description = "strawberries and cream" - color = "#fc8a8a" // rrgb(252, 138, 138) + color = "#fc8a8a" // rgb(252, 138, 138) glass_name = "Love Potion" glass_desc = "Love me tender, love me sweet." @@ -1508,6 +1503,16 @@ glass_desc = "A concoction that should probably be in an engine, rather than your stomach." glass_icon = DRINK_ICON_NOISY +/datum/reagent/drink/eggnog + name = "Eggnog" + id = "eggnog" + description = "A creamy, rich beverage made out of whisked eggs, milk and sugar, for when you feel like celebrating the winter holidays." + taste_description = "thick cream and vanilla" + color = "#fff3c1" // rgb(255, 243, 193) + + glass_name = "Eggnog" + glass_desc = "You can't egg-nore the holiday cheer all around you" + /datum/reagent/drink/nuclearwaste name = "Nuclear Waste" id = "nuclearwaste" @@ -2668,7 +2673,7 @@ /datum/reagent/ethanol/saketini name = "Saketini" - id = "sakitini" + id = "saketini" description = "For when you're too weeb for a real martini." taste_description = "dry alcohol" color = "#0064C8" @@ -3153,3 +3158,47 @@ glass_name = "Ichor Mead" glass_desc = "A trip to Valhalla." + +/datum/reagent/ethanol/schnapps_pep + name = "Peppermint Schnapps" + id = "schnapps_pep" + description = "Achtung, pfefferminze." + taste_description = "minty alcohol" + color = "#8FC468" + strength = 25 + + glass_name = "peppermint schnapps" + glass_desc = "A glass of peppermint schnapps. It seems like it'd be better, mixed." + +/datum/reagent/ethanol/schnapps_pea + name = "Peach Schnapps" + id = "schnapps_pea" + description = "Achtung, fruchtig." + taste_description = "peaches" + color = "#d67d4d" + strength = 25 + + glass_name = "peach schnapps" + glass_desc = "A glass of peach schnapps. It seems like it'd be better, mixed." + +/datum/reagent/ethanol/schnapps_lem + name = "Lemonade Schnapps" + id = "schnapps_lem" + description = "Childhood memories are not included." + taste_description = "sweet, lemon-y alcohol" + color = "#FFFF00" + strength = 25 + + glass_name = "lemonade schnapps" + glass_desc = "A glass of lemonade schnapps. It seems like it'd be better, mixed." + +/datum/reagent/ethanol/fusionnaire + name = "Fusionnaire" + id = "fusionnaire" + description = "A drink for the brave." + taste_description = "a painfully alcoholic lemon soda with an undertone of mint" + color = "#6BB486" + strength = 9 + + glass_name = "fusionnaire" + glass_desc = "A relatively new cocktail, mostly served in the bars of NanoTrasen owned stations." \ No newline at end of file diff --git a/code/modules/reagents/Chemistry-Reagents/Chemistry-Reagents-Medicine.dm b/code/modules/reagents/Chemistry-Reagents/Chemistry-Reagents-Medicine.dm index 158febcd03..b8e61c9c51 100644 --- a/code/modules/reagents/Chemistry-Reagents/Chemistry-Reagents-Medicine.dm +++ b/code/modules/reagents/Chemistry-Reagents/Chemistry-Reagents-Medicine.dm @@ -106,6 +106,8 @@ M.drowsyness = max(0, M.drowsyness - 6 * removed * chem_effective) M.hallucination = max(0, M.hallucination - 9 * removed * chem_effective) M.adjustToxLoss(-4 * removed * chem_effective) + if(prob(10)) + M.remove_a_modifier_of_type(/datum/modifier/poisoned) /datum/reagent/carthatoline name = "Carthatoline" @@ -121,6 +123,8 @@ if(M.getToxLoss() && prob(10)) M.vomit(1) M.adjustToxLoss(-8 * removed) + if(prob(30)) + M.remove_a_modifier_of_type(/datum/modifier/poisoned) if(ishuman(M)) var/mob/living/carbon/human/H = M var/obj/item/organ/internal/liver/L = H.internal_organs_by_name[O_LIVER] @@ -504,6 +508,230 @@ if(W.damage <= 0) O.wounds -= W +/datum/reagent/respirodaxon + name = "Respirodaxon" + id = "respirodaxon" + description = "Used to repair the tissue of the lungs and similar organs." + taste_description = "metallic" + reagent_state = LIQUID + color = "#4444FF" + metabolism = REM * 1.5 + overdose = 10 + scannable = 1 + +/datum/reagent/respirodaxon/affect_blood(var/mob/living/carbon/M, var/alien, var/removed) + var/repair_strength = 1 + if(alien == IS_SLIME) + repair_strength = 0.6 + if(ishuman(M)) + var/mob/living/carbon/human/H = M + for(var/obj/item/organ/I in H.internal_organs) + if(I.robotic >= ORGAN_ROBOT || !(I.organ_tag in list(O_LUNGS, O_VOICE, O_GBLADDER))) + continue + if(I.damage > 0) + I.damage = max(I.damage - 4 * removed * repair_strength, 0) + H.Confuse(2) + if(M.reagents.has_reagent("gastirodaxon") || M.reagents.has_reagent("peridaxon")) + if(H.losebreath >= 15 && prob(H.losebreath)) + H.Stun(2) + else + H.losebreath = CLAMP(H.losebreath + 3, 0, 20) + else + H.losebreath = max(H.losebreath - 4, 0) + +/datum/reagent/gastirodaxon + name = "Gastirodaxon" + id = "gastirodaxon" + description = "Used to repair the tissues of the digestive system." + taste_description = "chalk" + reagent_state = LIQUID + color = "#8B4513" + metabolism = REM * 1.5 + overdose = 10 + scannable = 1 + +/datum/reagent/gastirodaxon/affect_blood(var/mob/living/carbon/M, var/alien, var/removed) + var/repair_strength = 1 + if(alien == IS_SLIME) + repair_strength = 0.6 + if(ishuman(M)) + var/mob/living/carbon/human/H = M + for(var/obj/item/organ/I in H.internal_organs) + if(I.robotic >= ORGAN_ROBOT || !(I.organ_tag in list(O_APPENDIX, O_NUTRIENT, O_PLASMA, O_POLYP))) + continue + if(I.damage > 0) + I.damage = max(I.damage - 4 * removed * repair_strength, 0) + H.Confuse(2) + if(M.reagents.has_reagent("hepanephrodaxon") || M.reagents.has_reagent("peridaxon")) + if(prob(10)) + H.vomit(1) + else if(H.nutrition > 30) + H.nutrition = max(0, H.nutrition - round(30 * removed)) + else + H.adjustToxLoss(-10 * removed) // Carthatoline based, considering cost. + +/datum/reagent/hepanephrodaxon + name = "Hepanephrodaxon" + id = "hepanephrodaxon" + description = "Used to repair the common tissues involved in filtration." + taste_description = "glue" + reagent_state = LIQUID + color = "#D2691E" + metabolism = REM * 1.5 + overdose = 10 + scannable = 1 + +/datum/reagent/hepanephrodaxon/affect_blood(var/mob/living/carbon/M, var/alien, var/removed) + var/repair_strength = 1 + if(alien == IS_SLIME) + repair_strength = 0.4 + if(ishuman(M)) + var/mob/living/carbon/human/H = M + for(var/obj/item/organ/I in H.internal_organs) + if(I.robotic >= ORGAN_ROBOT || !(I.organ_tag in list(O_LIVER, O_KIDNEYS, O_APPENDIX, O_ACID, O_HIVE))) + continue + if(I.damage > 0) + I.damage = max(I.damage - 4 * removed * repair_strength, 0) + H.Confuse(2) + if(M.reagents.has_reagent("cordradaxon") || M.reagents.has_reagent("peridaxon")) + if(prob(5)) + H.vomit(1) + else if(prob(5)) + to_chat(H,"Something churns inside you.") + H.adjustToxLoss(10 * removed) + H.vomit(0, 1) + else + H.adjustToxLoss(-12 * removed) // Carthatoline based, considering cost. + +/datum/reagent/cordradaxon + name = "Cordradaxon" + id = "cordradaxon" + description = "Used to repair the specialized tissues involved in the circulatory system." + taste_description = "rust" + reagent_state = LIQUID + color = "#FF4444" + metabolism = REM * 1.5 + overdose = 10 + scannable = 1 + +/datum/reagent/cordradaxon/affect_blood(var/mob/living/carbon/M, var/alien, var/removed) + var/repair_strength = 1 + if(alien == IS_SLIME) + repair_strength = 0.6 + if(ishuman(M)) + var/mob/living/carbon/human/H = M + for(var/obj/item/organ/I in H.internal_organs) + if(I.robotic >= ORGAN_ROBOT || !(I.organ_tag in list(O_HEART, O_RESPONSE, O_ANCHOR, O_EGG))) + continue + if(I.damage > 0) + I.damage = max(I.damage - 4 * removed * repair_strength, 0) + H.Confuse(2) + if(M.reagents.has_reagent("respirodaxon") || M.reagents.has_reagent("peridaxon")) + H.losebreath = CLAMP(H.losebreath + 1, 0, 10) + else + H.adjustOxyLoss(-30 * removed) // Deals with blood oxygenation. + +/datum/reagent/immunosuprizine + name = "Immunosuprizine" + id = "immunosuprizine" + description = "An experimental powder believed to have the ability to prevent any organ rejection." + taste_description = "flesh" + reagent_state = SOLID + color = "#7B4D4F" + overdose = 20 + scannable = 1 + +/datum/reagent/immunosuprizine/affect_blood(var/mob/living/carbon/M, var/alien, var/removed) + var/strength_mod = 1 + + if(alien == IS_DIONA) // It's a tree. + strength_mod = 0.25 + + if(alien == IS_SLIME) // Diffculty bonding with internal cellular structure. + strength_mod = 0.75 + + if(alien == IS_SKRELL) // Natural inclination toward toxins. + strength_mod = 1.5 + + if(alien == IS_UNATHI) // Natural regeneration, robust biology. + strength_mod = 1.75 + + if(alien == IS_TAJARA) // Highest metabolism. + strength_mod = 2 + + if(ishuman(M)) + var/mob/living/carbon/human/H = M + if(alien != IS_DIONA) + H.adjustToxLoss((30 / strength_mod) * removed) + + var/list/organtotal = list() + organtotal |= H.organs + organtotal |= H.internal_organs + + for(var/obj/item/organ/I in organtotal) // Don't mess with robot bits, they don't reject. + if(I.robotic >= ORGAN_ROBOT) + organtotal -= I + + if(dose >= 15) + for(var/obj/item/organ/I in organtotal) + if(I.transplant_data && prob(round(15 * strength_mod))) // Reset the rejection process, toggle it to not reject. + I.rejecting = 0 + I.can_reject = FALSE + + if(H.reagents.has_reagent("spaceacillin") || H.reagents.has_reagent("corophizine")) // Chemicals that increase your immune system's aggressiveness make this chemical's job harder. + for(var/obj/item/organ/I in organtotal) + if(I.transplant_data) + var/rejectmem = I.can_reject + I.can_reject = initial(I.can_reject) + if(rejectmem != I.can_reject) + H.adjustToxLoss((15 / strength_mod)) + I.take_damage(1) + +/datum/reagent/skrellimmuno + name = "Malish-Qualem" + id = "malish-qualem" + description = "A strange, oily powder used by Malish-Katish to prevent organ rejection." + taste_description = "mordant" + reagent_state = SOLID + color = "#84B2B0" + metabolism = REM * 0.75 + overdose = 20 + scannable = 1 + +/datum/reagent/skrellimmuno/affect_blood(var/mob/living/carbon/M, var/alien, var/removed) + var/strength_mod = 0.5 + + if(alien == IS_SKRELL) + strength_mod = 1 + + if(ishuman(M)) + var/mob/living/carbon/human/H = M + if(alien != IS_SKRELL) + H.adjustToxLoss(20 * removed) + + var/list/organtotal = list() + organtotal |= H.organs + organtotal |= H.internal_organs + + for(var/obj/item/organ/I in organtotal) // Don't mess with robot bits, they don't reject. + if(I.robotic >= ORGAN_ROBOT) + organtotal -= I + + if(dose >= 15) + for(var/obj/item/organ/I in organtotal) + if(I.transplant_data && prob(round(15 * strength_mod))) + I.rejecting = 0 + I.can_reject = FALSE + + if(H.reagents.has_reagent("spaceacillin") || H.reagents.has_reagent("corophizine")) + for(var/obj/item/organ/I in organtotal) + if(I.transplant_data) + var/rejectmem = I.can_reject + I.can_reject = initial(I.can_reject) + if(rejectmem != I.can_reject) + H.adjustToxLoss((10 / strength_mod)) + I.take_damage(1) + /datum/reagent/ryetalyn name = "Ryetalyn" id = "ryetalyn" @@ -715,7 +943,7 @@ M.make_dizzy(5) if(prob(20)) M.hallucination = max(M.hallucination, 10) - + //One of the levofloxacin side effects is 'spontaneous tendon rupture', which I'll immitate here. 1:1000 chance, so, pretty darn rare. if(ishuman(M) && rand(1,10000) == 1) //VOREStation Edit (more rare) var/obj/item/organ/external/eo = pick(H.organs) //Misleading variable name, 'organs' is only external organs diff --git a/code/modules/reagents/Chemistry-Reagents/Chemistry-Reagents-Other.dm b/code/modules/reagents/Chemistry-Reagents/Chemistry-Reagents-Other.dm index 53ce37b3ef..954102b732 100644 --- a/code/modules/reagents/Chemistry-Reagents/Chemistry-Reagents-Other.dm +++ b/code/modules/reagents/Chemistry-Reagents/Chemistry-Reagents-Other.dm @@ -360,7 +360,7 @@ S.dirt = 0 T.clean_blood() - for(var/mob/living/simple_animal/slime/M in T) + for(var/mob/living/simple_mob/slime/M in T) M.adjustToxLoss(rand(5, 10)) /datum/reagent/space_cleaner/affect_touch(var/mob/living/carbon/M, var/alien, var/removed) @@ -489,4 +489,21 @@ description = "A slurry of compounds that contains the basic requirements for life." taste_description = "salty meat" reagent_state = LIQUID - color = "#DF9FBF" \ No newline at end of file + color = "#DF9FBF" + +// The opposite to healing nanites, exists to make unidentified hypos implied to have nanites not be 100% safe. +/datum/reagent/defective_nanites + name = "Defective Nanites" + id = "defective_nanites" + description = "Miniature medical robots that are malfunctioning and cause bodily harm. Fortunately, they cannot self-replicate." + taste_description = "metal" + reagent_state = SOLID + color = "#333333" + metabolism = REM * 3 // Broken nanomachines go a bit slower. + scannable = 1 + +/datum/reagent/defective_nanites/affect_blood(var/mob/living/carbon/M, var/alien, var/removed) + M.take_organ_damage(2 * removed, 2 * removed) + M.adjustOxyLoss(4 * removed) + M.adjustToxLoss(2 * removed) + M.adjustCloneLoss(2 * removed) \ No newline at end of file diff --git a/code/modules/reagents/Chemistry-Reagents/Chemistry-Reagents-Toxins.dm b/code/modules/reagents/Chemistry-Reagents/Chemistry-Reagents-Toxins.dm index e3c087b5fa..1ec5e6e334 100644 --- a/code/modules/reagents/Chemistry-Reagents/Chemistry-Reagents-Toxins.dm +++ b/code/modules/reagents/Chemistry-Reagents/Chemistry-Reagents-Toxins.dm @@ -70,7 +70,7 @@ /datum/reagent/toxin/hydrophoron/touch_turf(var/turf/simulated/T) if(!istype(T)) return - T.assume_gas("phoron", ceil(volume/2), T20C) + T.assume_gas("phoron", CEILING(volume/2, 1), T20C) for(var/turf/simulated/floor/target_tile in range(0,T)) target_tile.assume_gas("phoron", volume/2, 400+T0C) spawn (0) target_tile.hotspot_expose(700, 400) @@ -155,10 +155,26 @@ /datum/reagent/toxin/mold/affect_ingest(var/mob/living/carbon/M, var/alien, var/removed) ..() - M.adjustToxLoss(strength * removed) if(prob(5)) M.vomit() +/datum/reagent/toxin/expired_medicine + name = "Expired Medicine" + id = "expired_medicine" + description = "Some form of liquid medicine that is well beyond its shelf date. Administering it now would cause illness." + taste_description = "bitterness" + reagent_state = LIQUID + strength = 5 + +/datum/reagent/toxin/expired_medicine/affect_blood(var/mob/living/carbon/M, var/alien, var/removed) + ..() + if(prob(5)) + M.vomit() + +/datum/reagent/toxin/expired_medicine/affect_ingest(var/mob/living/carbon/M, var/alien, var/removed) + affect_blood(M, alien, removed * 0.66) + + /datum/reagent/toxin/stimm //Homemade Hyperzine name = "Stimm" id = "stimm" diff --git a/code/modules/reagents/Chemistry-Recipes.dm b/code/modules/reagents/Chemistry-Recipes.dm index 704e81951c..3c3bf869d7 100644 --- a/code/modules/reagents/Chemistry-Recipes.dm +++ b/code/modules/reagents/Chemistry-Recipes.dm @@ -96,7 +96,7 @@ return progress -/datum/chemical_reaction/proc/process(var/datum/reagents/holder) +/datum/chemical_reaction/process(var/datum/reagents/holder) //determine how far the reaction can proceed var/list/reaction_limits = list() for(var/reactant in required_reagents) @@ -299,6 +299,42 @@ inhibitors = list("clonexadone" = 1) // Messes with cryox result_amount = 2 +/datum/chemical_reaction/respirodaxon + name = "Respirodaxon" + id = "respirodaxon" + result = "respirodaxon" + required_reagents = list("dexalinp" = 2, "biomass" = 2, "phoron" = 1) + catalysts = list("phoron" = 5) + inhibitors = list("dexalin" = 1) + result_amount = 2 + +/datum/chemical_reaction/gastirodaxon + name = "Gastirodaxon" + id = "gastirodaxon" + result = "gastirodaxon" + required_reagents = list("carthatoline" = 1, "biomass" = 2, "tungsten" = 2) + catalysts = list("phoron" = 5) + inhibitors = list("lithium" = 1) + result_amount = 3 + +/datum/chemical_reaction/hepanephrodaxon + name = "Hepanephrodaxon" + id = "hepanephrodaxon" + result = "hepanephrodaxon" + required_reagents = list("carthatoline" = 2, "biomass" = 2, "lithium" = 1) + catalysts = list("phoron" = 5) + inhibitors = list("tungsten" = 1) + result_amount = 2 + +/datum/chemical_reaction/cordradaxon + name = "Cordradaxon" + id = "cordradaxon" + result = "cordradaxon" + required_reagents = list("potassium_chlorophoride" = 1, "biomass" = 2, "bicaridine" = 2) + catalysts = list("phoron" = 5) + inhibitors = list("clonexadone" = 1) + result_amount = 2 + /datum/chemical_reaction/virus_food name = "Virus Food" id = "virusfood" @@ -425,6 +461,14 @@ catalysts = list("phoron" = 5) result_amount = 2 +/datum/chemical_reaction/immunosuprizine + name = "Immunosuprizine" + id = "immunosuprizine" + result = "immunosuprizine" + required_reagents = list("corophizine" = 1, "tungsten" = 1, "sacid" = 1) + catalysts = list("phoron" = 5) + result_amount = 2 + /datum/chemical_reaction/imidazoline name = "imidazoline" id = "imidazoline" @@ -1848,7 +1892,7 @@ name = "Roy Rogers" id = "roy_rogers" result = "roy_rogers" - required_reagents = list("cola" = 4, "grenadine" = 1) + required_reagents = list("shirley_temple" = 5, "lemon_lime" = 2) result_amount = 7 /datum/chemical_reaction/drinks/collinsmix @@ -2074,7 +2118,7 @@ name = "Screaming Viking" id = "screamingviking" result = "screamingviking" - required_reagents = list("vodka" = 1, "vermouth" = 1, "limejuice" = 1, "rum" = 1, "gin" = 1, "tonic" = 1) + required_reagents = list("martini" = 2, "vodkatonic" = 2, "limejuice" = 1, "rum" = 1) result_amount = 6 /datum/chemical_reaction/drinks/vilelemon @@ -2268,6 +2312,13 @@ required_reagents = list("cornoil" = 2, "honey" = 1) result_amount = 3 +/datum/chemical_reaction/drinks/eggnog + name = "Eggnog" + id = "eggnog" + result = "eggnog" + required_reagents = list("milk" = 5, "cream" = 5, "sugar" = 5, "egg" = 3) + result_amount = 15 + /datum/chemical_reaction/drinks/nuclearwaste_radium name = "Nuclear Waste" id = "nuclearwasterad" @@ -2289,6 +2340,13 @@ required_reagents = list("cornoil" = 4, "sodawater" = 1, "carbon" = 1, "tricordrazine" = 1) result_amount = 6 +/datum/chemical_reaction/drinks/fusionnaire + name = "Fusionnaire" + id = "fusionnaire" + result = "fusionnaire" + required_reagents = list("lemonjuice" = 3, "vodka" = 2, "schnapps_pep" = 1, "schnapps_lem" = 1, "rum" = 1, "ice" = 1) + result_amount = 9 + //R-UST Port /datum/chemical_reaction/hyrdophoron name = "Hydrophoron" @@ -2325,6 +2383,14 @@ required_reagents = list("nicotine" = 1, "carbon" = 1, "sugar" = 2) result_amount = 4 +/datum/chemical_reaction/malish_qualem + name = "Malish-Qualem" + id = "malish-qualem" + result = "malish-qualem" + required_reagents = list("immunosuprizine" = 1, "qerr_quem" = 1, "inaprovaline" = 1) + catalysts = list("phoron" = 5) + result_amount = 2 + // Biomass, for cloning and bioprinters /datum/chemical_reaction/biomass name = "Biomass" diff --git a/code/modules/reagents/Chemistry-Recipes_vr.dm b/code/modules/reagents/Chemistry-Recipes_vr.dm index 58f49f3fc7..709a02a8be 100644 --- a/code/modules/reagents/Chemistry-Recipes_vr.dm +++ b/code/modules/reagents/Chemistry-Recipes_vr.dm @@ -58,7 +58,7 @@ var/mob/living/carbon/human/H = holder.my_atom if(H.stat == DEAD && (/mob/living/carbon/human/proc/reconstitute_form in H.verbs)) //no magical regen for non-regenners, and can't force the reaction on live ones if(H.hasnutriment()) // make sure it actually has the conditions to revive - if(!H.reviving) // if it's not reviving, start doing so + if(H.revive_ready >= 1) // if it's not reviving, start doing so H.visible_message("[H] shudders briefly, then relaxes, faint movements stirring within.") H.chimera_regenerate() else if (/mob/living/carbon/human/proc/hatch in H.verbs)// already reviving, check if they're ready to hatch @@ -309,7 +309,7 @@ - +/* //VORESTATION AI TEMPORARY REMOVAL /datum/chemical_reaction/slimevore name = "Slime Vore" // Hostile vore mobs only id = "m_tele" @@ -317,11 +317,11 @@ required_reagents = list("phoron" = 20, "nutriment" = 20, "sugar" = 20, "mutationtoxin" = 20) //Can't do slime jelly as it'll conflict with another, but mutation toxin will do. result_amount = 1 on_reaction(var/datum/reagents/holder) - var/mob_path = /mob/living/simple_animal + var/mob_path = /mob/living/simple_mob var/blocked = list( - /mob/living/simple_animal/hostile/mimic, - /mob/living/simple_animal/hostile/alien/queen, - /mob/living/simple_animal/shadekin + /mob/living/simple_mob/hostile/mimic, + /mob/living/simple_mob/hostile/alien/queen, + /mob/living/simple_mob/shadekin )//exclusion list for things you don't want the reaction to create. var/list/voremobs = typesof(mob_path) - mob_path - blocked // list of possible hostile mobs @@ -334,9 +334,10 @@ var/spawn_count = rand(1,3) for(var/i = 1, i <= spawn_count, i++) var/chosen = pick(voremobs) - var/mob/living/simple_animal/hostile/C = new chosen + var/mob/living/simple_mob/hostile/C = new chosen C.faction = "slimesummon" C.loc = get_turf(holder.my_atom) if(prob(50)) for(var/j = 1, j <= rand(1, 3), j++) step(C, pick(NORTH,SOUTH,EAST,WEST)) +*/ \ No newline at end of file diff --git a/code/modules/reagents/dispenser/cartridge.dm b/code/modules/reagents/dispenser/cartridge.dm index 3a129d4872..f73f6e4a71 100644 --- a/code/modules/reagents/dispenser/cartridge.dm +++ b/code/modules/reagents/dispenser/cartridge.dm @@ -14,8 +14,8 @@ var/spawn_reagent = null var/label = "" -/obj/item/weapon/reagent_containers/chem_disp_cartridge/New() - ..() +/obj/item/weapon/reagent_containers/chem_disp_cartridge/Initialize() + . = ..() if(spawn_reagent) reagents.add_reagent(spawn_reagent, volume) var/datum/reagent/R = chemical_reagents_list[spawn_reagent] diff --git a/code/modules/reagents/dispenser/cartridge_presets_vr.dm b/code/modules/reagents/dispenser/cartridge_presets_vr.dm new file mode 100644 index 0000000000..37d7514f03 --- /dev/null +++ b/code/modules/reagents/dispenser/cartridge_presets_vr.dm @@ -0,0 +1,6 @@ +/obj/item/weapon/reagent_containers/chem_disp_cartridge + //Xenoflora + ammonia spawn_reagent = "ammonia" + diethylamine spawn_reagent = "diethylamine" + plantbgone spawn_reagent = "plantbgone" + mutagen spawn_reagent = "mutagen" \ No newline at end of file diff --git a/code/modules/reagents/dispenser/dispenser2.dm b/code/modules/reagents/dispenser/dispenser2.dm index 14f8fc9898..a04db7d53b 100644 --- a/code/modules/reagents/dispenser/dispenser2.dm +++ b/code/modules/reagents/dispenser/dispenser2.dm @@ -17,9 +17,8 @@ idle_power_usage = 100 anchored = 1 -/obj/machinery/chemical_dispenser/New() - ..() - +/obj/machinery/chemical_dispenser/Initialize() + . = ..() if(spawn_cartridges) for(var/type in spawn_cartridges) add_cartridge(new type(src)) diff --git a/code/modules/reagents/dispenser/dispenser_presets_vr.dm b/code/modules/reagents/dispenser/dispenser_presets_vr.dm new file mode 100644 index 0000000000..9787dec997 --- /dev/null +++ b/code/modules/reagents/dispenser/dispenser_presets_vr.dm @@ -0,0 +1,17 @@ +/obj/machinery/chemical_dispenser/xenoflora + name = "xenoflora chem dispenser" + dispense_reagents = list( + "water", "sugar", "ethanol", "radium", "ammonia", "diethylamine", "plantbgone", "mutagen" + ) + +/obj/machinery/chemical_dispenser/xenoflora/full + spawn_cartridges = list( + /obj/item/weapon/reagent_containers/chem_disp_cartridge/water, + /obj/item/weapon/reagent_containers/chem_disp_cartridge/sugar, + /obj/item/weapon/reagent_containers/chem_disp_cartridge/ethanol, + /obj/item/weapon/reagent_containers/chem_disp_cartridge/radium, + /obj/item/weapon/reagent_containers/chem_disp_cartridge/ammonia, + /obj/item/weapon/reagent_containers/chem_disp_cartridge/diethylamine, + /obj/item/weapon/reagent_containers/chem_disp_cartridge/plantbgone, + /obj/item/weapon/reagent_containers/chem_disp_cartridge/mutagen + ) \ No newline at end of file diff --git a/code/modules/reagents/reagent_containers.dm b/code/modules/reagents/reagent_containers.dm index b870a55902..8f6be28b80 100644 --- a/code/modules/reagents/reagent_containers.dm +++ b/code/modules/reagents/reagent_containers.dm @@ -16,8 +16,8 @@ if(N) amount_per_transfer_from_this = N -/obj/item/weapon/reagent_containers/New() - ..() +/obj/item/weapon/reagent_containers/Initialize() + . = ..() if(!possible_transfer_amounts) src.verbs -= /obj/item/weapon/reagent_containers/verb/set_APTFT create_reagents(volume) @@ -100,7 +100,7 @@ user.setClickCooldown(user.get_attack_speed(src)) //puts a limit on how fast people can eat/drink things self_feed_message(user) - reagents.trans_to_mob(user, issmall(user) ? ceil(amount_per_transfer_from_this/2) : amount_per_transfer_from_this, CHEM_INGEST) + reagents.trans_to_mob(user, issmall(user) ? CEILING(amount_per_transfer_from_this/2, 1) : amount_per_transfer_from_this, CHEM_INGEST) feed_sound(user) return 1 else diff --git a/code/modules/reagents/reagent_containers/blood_pack.dm b/code/modules/reagents/reagent_containers/blood_pack.dm index 0f40a83e20..fe6ddb87dc 100644 --- a/code/modules/reagents/reagent_containers/blood_pack.dm +++ b/code/modules/reagents/reagent_containers/blood_pack.dm @@ -3,8 +3,8 @@ desc = "This box contains blood packs." icon_state = "sterile" -/obj/item/weapon/storage/box/bloodpacks/New() - ..() +/obj/item/weapon/storage/box/bloodpacks/Initialize() + . = ..() new /obj/item/weapon/reagent_containers/blood/empty(src) new /obj/item/weapon/reagent_containers/blood/empty(src) new /obj/item/weapon/reagent_containers/blood/empty(src) @@ -26,8 +26,8 @@ var/blood_type = null -/obj/item/weapon/reagent_containers/blood/New() - ..() +/obj/item/weapon/reagent_containers/blood/Initialize() + . = ..() base_name = name base_desc = desc if(blood_type != null) diff --git a/code/modules/reagents/reagent_containers/borghydro.dm b/code/modules/reagents/reagent_containers/borghydro.dm index f91d9271ad..f2cfbd87b5 100644 --- a/code/modules/reagents/reagent_containers/borghydro.dm +++ b/code/modules/reagents/reagent_containers/borghydro.dm @@ -34,18 +34,18 @@ bypass_protection = TRUE // Because mercs tend to be in spacesuits. reagent_ids = list("healing_nanites", "hyperzine", "tramadol", "oxycodone", "spaceacillin", "peridaxon", "osteodaxon", "myelamine", "synthblood") -/obj/item/weapon/reagent_containers/borghypo/New() - ..() +/obj/item/weapon/reagent_containers/borghypo/Initialize() + . = ..() for(var/T in reagent_ids) reagent_volumes[T] = volume var/datum/reagent/R = chemical_reagents_list[T] reagent_names += R.name - processing_objects.Add(src) + START_PROCESSING(SSobj, src) /obj/item/weapon/reagent_containers/borghypo/Destroy() - processing_objects.Remove(src) + STOP_PROCESSING(SSobj, src) return ..() /obj/item/weapon/reagent_containers/borghypo/process() //Every [recharge_time] seconds, recharge some reagents for the cyborg+ diff --git a/code/modules/reagents/reagent_containers/glass.dm b/code/modules/reagents/reagent_containers/glass.dm index 737dbdcdad..4cc781fdea 100644 --- a/code/modules/reagents/reagent_containers/glass.dm +++ b/code/modules/reagents/reagent_containers/glass.dm @@ -37,8 +37,8 @@ /obj/machinery/iv_drip, /obj/machinery/disease2/incubator, /obj/machinery/disposal, - /mob/living/simple_animal/cow, - /mob/living/simple_animal/retaliate/goat, + /mob/living/simple_mob/animal/passive/cow, + /mob/living/simple_mob/animal/goat, /obj/machinery/computer/centrifuge, /obj/machinery/sleeper, /obj/machinery/smartfridge/, @@ -47,8 +47,8 @@ /obj/machinery/radiocarbon_spectrometer ) -/obj/item/weapon/reagent_containers/glass/New() - ..() +/obj/item/weapon/reagent_containers/glass/Initialize() + . = ..() if(LAZYLEN(prefill)) for(var/R in prefill) reagents.add_reagent(R,prefill[R]) @@ -150,8 +150,8 @@ item_state = "beaker" matter = list("glass" = 500) -/obj/item/weapon/reagent_containers/glass/beaker/New() - ..() +/obj/item/weapon/reagent_containers/glass/beaker/Initialize() + . = ..() desc += " Can hold up to [volume] units." /obj/item/weapon/reagent_containers/glass/beaker/on_reagent_change() diff --git a/code/modules/reagents/reagent_containers/hypospray.dm b/code/modules/reagents/reagent_containers/hypospray.dm index 3cfac06de1..4b5949595b 100644 --- a/code/modules/reagents/reagent_containers/hypospray.dm +++ b/code/modules/reagents/reagent_containers/hypospray.dm @@ -19,14 +19,13 @@ var/list/filled_reagents = list() var/hyposound // What sound do we play on use? -/obj/item/weapon/reagent_containers/hypospray/New() - ..() +/obj/item/weapon/reagent_containers/hypospray/Initialize() + . = ..() if(filled) if(filled_reagents) for(var/r in filled_reagents) reagents.add_reagent(r, filled_reagents[r]) update_icon() - return /obj/item/weapon/reagent_containers/hypospray/attack(mob/living/M as mob, mob/user as mob) if(!reagents.total_volume) @@ -53,20 +52,29 @@ if(!do_after(user, 30, H)) return + do_injection(H, user) + return + +// This does the actual injection and transfer. +/obj/item/weapon/reagent_containers/hypospray/proc/do_injection(mob/living/carbon/human/H, mob/living/user) + if(!istype(H) || !istype(user)) + return FALSE + user.setClickCooldown(DEFAULT_QUICK_COOLDOWN) - to_chat(user, "You inject [M] with \the [src].") - to_chat(M, "You feel a tiny prick!") + to_chat(user, span("notice", "You inject \the [H] with \the [src].")) + to_chat(H, span("warning", "You feel a tiny prick!")) if(hyposound) - playsound(src, hyposound,25) + playsound(src, hyposound, 25) - if(M.reagents) + if(H.reagents) var/contained = reagentlist() - var/trans = reagents.trans_to_mob(M, amount_per_transfer_from_this, CHEM_BLOOD) - add_attack_logs(user,M,"Injected with [src.name] containing [contained], trasferred [trans] units") - to_chat(user, "[trans] units injected. [reagents.total_volume] units remaining in \the [src].") + var/trans = reagents.trans_to_mob(H, amount_per_transfer_from_this, CHEM_BLOOD) + add_attack_logs(user,H,"Injected with [src.name] containing [contained], trasferred [trans] units") + to_chat(user, span("notice", "[trans] units injected. [reagents.total_volume] units remaining in \the [src].")) + return TRUE + return FALSE - return //A vial-loaded hypospray. Cartridge-based! /obj/item/weapon/reagent_containers/hypospray/vial name = "hypospray mkII" @@ -74,8 +82,8 @@ var/obj/item/weapon/reagent_containers/glass/beaker/vial/loaded_vial //Wow, what a name. volume = 0 -/obj/item/weapon/reagent_containers/hypospray/vial/New() - ..() +/obj/item/weapon/reagent_containers/hypospray/vial/Initialize() + . = ..() loaded_vial = new /obj/item/weapon/reagent_containers/glass/beaker/vial(src) //Comes with an empty vial volume = loaded_vial.volume reagents.maximum_volume = loaded_vial.reagents.maximum_volume @@ -138,17 +146,16 @@ filled = 0 filled_reagents = list() -/obj/item/weapon/reagent_containers/hypospray/autoinjector/used/New() - ..() +/obj/item/weapon/reagent_containers/hypospray/autoinjector/used/Initialize() + . = ..() flags &= ~OPENCONTAINER icon_state = "[initial(icon_state)]0" -/obj/item/weapon/reagent_containers/hypospray/autoinjector/attack(mob/M as mob, mob/user as mob) - ..() - if(reagents.total_volume <= 0) //Prevents autoinjectors to be refilled. +/obj/item/weapon/reagent_containers/hypospray/autoinjector/do_injection(mob/living/carbon/human/H, mob/living/user) + . = ..() + if(.) // Will occur if successfully injected. flags &= ~OPENCONTAINER - update_icon() - return + update_icon() /obj/item/weapon/reagent_containers/hypospray/autoinjector/update_icon() if(reagents.total_volume > 0) @@ -168,6 +175,62 @@ icon_state = "green" filled_reagents = list("anti_toxin" = 5) +// These have a 15u capacity, somewhat higher tech level, and generally more useful chems, but are otherwise the same as the regular autoinjectors. +/obj/item/weapon/reagent_containers/hypospray/autoinjector/biginjector + name = "empty hypo" + desc = "A refined version of the standard autoinjector, allowing greater capacity." + icon_state = "autoinjector" + amount_per_transfer_from_this = 15 + volume = 15 + origin_tech = list(TECH_BIO = 4) + filled_reagents = list("inaprovaline" = 15) + +/obj/item/weapon/reagent_containers/hypospray/autoinjector/biginjector/brute + name = "trauma hypo" + desc = "A refined version of the standard autoinjector, allowing greater capacity. This one is made to be used on victims of \ + moderate blunt trauma." + filled_reagents = list("bicaridine" = 15) + +/obj/item/weapon/reagent_containers/hypospray/autoinjector/biginjector/burn + name = "burn hypo" + desc = "A refined version of the standard autoinjector, allowing greater capacity. This one is made to be used on burn victims, \ + featuring an optimized chemical mixture to allow for rapid healing." + filled_reagents = list("kelotane" = 7.5, "dermaline" = 7.5) + +/obj/item/weapon/reagent_containers/hypospray/autoinjector/biginjector/toxin + name = "toxin hypo" + desc = "A refined version of the standard autoinjector, allowing greater capacity. This one is made to counteract toxins." + filled_reagents = list("anti_toxin" = 15) + +/obj/item/weapon/reagent_containers/hypospray/autoinjector/biginjector/oxy + name = "oxy hypo" + desc = "A refined version of the standard autoinjector, allowing greater capacity. This one is made to counteract oxygen \ + deprivation." + filled_reagents = list("dexalinp" = 10, "tricordrazine" = 5) + +/obj/item/weapon/reagent_containers/hypospray/autoinjector/biginjector/purity + name = "purity hypo" + desc = "A refined version of the standard autoinjector, allowing greater capacity. This variant excels at \ + resolving viruses, infections, radiation, and genetic maladies." + filled_reagents = list("spaceacillin" = 9, "arithrazine" = 5, "ryetalyn" = 1) + +/obj/item/weapon/reagent_containers/hypospray/autoinjector/biginjector/pain + name = "pain hypo" + desc = "A refined version of the standard autoinjector, allowing greater capacity. This one contains potent painkillers." + filled_reagents = list("tramadol" = 15) + +/obj/item/weapon/reagent_containers/hypospray/autoinjector/biginjector/organ + name = "organ hypo" + desc = "A refined version of the standard autoinjector, allowing greater capacity. Organ damage is resolved by this variant." + filled_reagents = list("alkysine" = 3, "imidazoline" = 2, "peridaxon" = 10) + +/obj/item/weapon/reagent_containers/hypospray/autoinjector/biginjector/combat + name = "combat hypo" + desc = "A refined version of the standard autoinjector, allowing greater capacity. This is a more dangerous and potentially \ + addictive hypo compared to others, as it contains a potent cocktail of various chemicals to optimize the recipient's combat \ + ability." + filled_reagents = list("bicaridine" = 3, "kelotane" = 1.5, "dermaline" = 1.5, "oxycodone" = 3, "hyperzine" = 3, "tricordrazine" = 3) + /obj/item/weapon/reagent_containers/hypospray/autoinjector/biginjector/clotting name = "clotting agent" desc = "A refined version of the standard autoinjector, allowing greater capacity. This variant excels at treating bleeding wounds and internal bleeding." @@ -177,3 +240,114 @@ name = "bone repair injector" desc = "A refined version of the standard autoinjector, allowing greater capacity. This one excels at treating damage to bones." filled_reagents = list("inaprovaline" = 5, "osteodaxon" = 10) + +/obj/item/weapon/reagent_containers/hypospray/autoinjector/biginjector/glucose + name = "glucose hypo" + desc = "A hypoinjector filled with glucose, used for critically malnourished patients and voidsuited workers." + filled_reagents = list("glucose" = 15) + +/obj/item/weapon/reagent_containers/hypospray/autoinjector/biginjector/stimm + name = "stimm injector" + desc = "A refined version of the standard autoinjector, allowing greater capacity. \ + This one is filled with a home-made stimulant, with some serious side-effects." + filled_reagents = list("stimm" = 10) // More than 10u will OD. + +/obj/item/weapon/reagent_containers/hypospray/autoinjector/biginjector/expired + name = "expired injector" + desc = "A refined version of the standard autoinjector, allowing greater capacity. \ + This one has had its contents expire a long time ago, using it now will probably make someone sick, or worse." + filled_reagents = list("expired_medicine" = 15) + +/obj/item/weapon/reagent_containers/hypospray/autoinjector/biginjector/soporific + name = "soporific injector" + desc = "A refined version of the standard autoinjector, allowing greater capacity. \ + This one is sometimes used by orderlies, as it has soporifics, which make someone tired and fall asleep." + filled_reagents = list("stoxin" = 15) + +/obj/item/weapon/reagent_containers/hypospray/autoinjector/biginjector/cyanide + name = "cyanide injector" + desc = "A refined version of the standard autoinjector, allowing greater capacity. \ + This one contains cyanide, a lethal poison. It being inside a medical autoinjector has certain unsettling implications." + filled_reagents = list("cyanide" = 15) + +/obj/item/weapon/reagent_containers/hypospray/autoinjector/biginjector/serotrotium + name = "serotrotium injector" + desc = "A refined version of the standard autoinjector, allowing greater capacity. \ + This one is filled with serotrotium, which causes concentrated production of the serotonin neurotransmitter in humans." + filled_reagents = list("serotrotium" = 15) + +/obj/item/weapon/reagent_containers/hypospray/autoinjector/biginjector/space_drugs + name = "illicit injector" + desc = "A refined version of the standard autoinjector, allowing greater capacity. \ + This one contains various illicit drugs, held inside a hypospray to make smuggling easier." + filled_reagents = list("space_drugs" = 15) + +/obj/item/weapon/reagent_containers/hypospray/autoinjector/biginjector/cryptobiolin + name = "cryptobiolin injector" + desc = "A refined version of the standard autoinjector, allowing greater capacity. \ + This one contains cryptobiolin, which causes confusion." + filled_reagents = list("cryptobiolin" = 15) + +/obj/item/weapon/reagent_containers/hypospray/autoinjector/biginjector/impedrezene + name = "impedrezene injector" + desc = "A refined version of the standard autoinjector, allowing greater capacity. \ + This one has impedrezene inside, a narcotic that impairs higher brain functioning. \ + This autoinjector is almost certainly created illegitimately." + filled_reagents = list("impedrezene" = 15) + +/obj/item/weapon/reagent_containers/hypospray/autoinjector/biginjector/mindbreaker + name = "mindbreaker injector" + desc = "A refined version of the standard autoinjector, allowing greater capacity. \ + This one stores the dangerous hallucinogen called 'Mindbreaker', likely put in place \ + by illicit groups hoping to hide their product." + filled_reagents = list("mindbreaker" = 15) + +/obj/item/weapon/reagent_containers/hypospray/autoinjector/biginjector/psilocybin + name = "psilocybin injector" + desc = "A refined version of the standard autoinjector, allowing greater capacity. \ + This has psilocybin inside, which is a strong psychotropic derived from certain species of mushroom. \ + This autoinjector likely was made by criminal elements to avoid detection from casual inspection." + filled_reagents = list("psilocybin" = 15) + +/obj/item/weapon/reagent_containers/hypospray/autoinjector/biginjector/mutagen + name = "unstable mutagen injector" + desc = "A refined version of the standard autoinjector, allowing greater capacity. \ + This contains unstable mutagen, which makes using this a very bad idea. It will either \ + ruin your genetic health, turn you into a Five Points violation, or both!" + filled_reagents = list("mutagen" = 15) + +/obj/item/weapon/reagent_containers/hypospray/autoinjector/biginjector/lexorin + name = "lexorin injector" + desc = "A refined version of the standard autoinjector, allowing greater capacity. \ + This contains lexorin, a dangerous toxin that stops respiration, and has been \ + implicated in several high-profile assassinations in the past." + filled_reagents = list("lexorin" = 15) + +/obj/item/weapon/reagent_containers/hypospray/autoinjector/biginjector/healing_nanites + name = "medical nanite injector" + desc = "A refined version of the standard autoinjector, allowing greater capacity. \ + The injector stores a slurry of highly advanced and specialized nanomachines designed \ + to restore bodily health from within. The nanomachines are short-lived but degrade \ + harmlessly, and cannot self-replicate in order to remain Five Points compliant." + filled_reagents = list("healing_nanites" = 15) + +/obj/item/weapon/reagent_containers/hypospray/autoinjector/biginjector/defective_nanites + name = "defective nanite injector" + desc = "A refined version of the standard autoinjector, allowing greater capacity. \ + The injector stores a slurry of highly advanced and specialized nanomachines that \ + are unfortunately malfunctioning, making them unsafe to use inside of a living body. \ + Because of the Five Points, these nanites cannot self-replicate." + filled_reagents = list("defective_nanites" = 15) + +/obj/item/weapon/reagent_containers/hypospray/autoinjector/biginjector/contaminated + name = "contaminated injector" + desc = "A refined version of the standard autoinjector, allowing greater capacity. \ + The hypospray contains a viral agent inside, as well as a liquid substance that encourages \ + the growth of the virus inside." + filled_reagents = list("virusfood" = 15) + +/obj/item/weapon/reagent_containers/hypospray/autoinjector/biginjector/contaminated/do_injection(mob/living/carbon/human/H, mob/living/user) + . = ..() + if(.) // Will occur if successfully injected. + infect_mob_random_lesser(H) + add_attack_logs(user, H, "Infected \the [H] with \the [src], by \the [user].") diff --git a/code/modules/reagents/reagent_containers/pill.dm b/code/modules/reagents/reagent_containers/pill.dm index c93df31ec4..b2f5d39cde 100644 --- a/code/modules/reagents/reagent_containers/pill.dm +++ b/code/modules/reagents/reagent_containers/pill.dm @@ -12,10 +12,8 @@ slot_flags = SLOT_EARS volume = 60 - - -/obj/item/weapon/reagent_containers/pill/New() - ..() +/obj/item/weapon/reagent_containers/pill/Initialize() + . = ..() if(!icon_state) icon_state = "pill[rand(1, 20)]" @@ -98,28 +96,26 @@ desc = "Neutralizes many common toxins. Contains 25 units of Dylovene." icon_state = "pill17" -/obj/item/weapon/reagent_containers/pill/antitox/New() - ..() +/obj/item/weapon/reagent_containers/pill/antitox/Initialize() + . = ..() reagents.add_reagent("anti_toxin", 25) - /obj/item/weapon/reagent_containers/pill/tox name = "Toxins pill" desc = "Highly toxic." //this is cooler without "contains 50u toxin" icon_state = "pill5" -/obj/item/weapon/reagent_containers/pill/tox/New() - ..() +/obj/item/weapon/reagent_containers/pill/tox/Initialize() + . = ..() reagents.add_reagent("toxin", 50) - /obj/item/weapon/reagent_containers/pill/cyanide name = "Cyanide pill" desc = "Don't swallow this." //this is cooler without "contains 50u cyanide" icon_state = "pill5" -/obj/item/weapon/reagent_containers/pill/cyanide/New() - ..() +/obj/item/weapon/reagent_containers/pill/cyanide/Initialize() + . = ..() reagents.add_reagent("cyanide", 50) @@ -128,8 +124,8 @@ desc = "It's magic. We don't have to explain it." //it's space magic you don't need the quantity icon_state = "pill16" -/obj/item/weapon/reagent_containers/pill/adminordrazine/New() - ..() +/obj/item/weapon/reagent_containers/pill/adminordrazine/Initialize() + . = ..() reagents.add_reagent("adminordrazine", 50) /obj/item/weapon/reagent_containers/pill/stox @@ -137,8 +133,8 @@ desc = "Commonly used to treat insomnia. Contains 15 units of Soporific." icon_state = "pill8" -/obj/item/weapon/reagent_containers/pill/stox/New() - ..() +/obj/item/weapon/reagent_containers/pill/stox/Initialize() + . = ..() reagents.add_reagent("stoxin", 15) @@ -147,8 +143,8 @@ desc = "Used to treat burns. Contains 15 units of Kelotane." icon_state = "pill11" -/obj/item/weapon/reagent_containers/pill/kelotane/New() - ..() +/obj/item/weapon/reagent_containers/pill/kelotane/Initialize() + . = ..() reagents.add_reagent("kelotane", 15) @@ -157,8 +153,8 @@ desc = "Paracetamol! A painkiller for the ages. Chewables! Contains 15 units of Paracetamol." icon_state = "pill8" -/obj/item/weapon/reagent_containers/pill/paracetamol/New() - ..() +/obj/item/weapon/reagent_containers/pill/paracetamol/Initialize() + . = ..() reagents.add_reagent("paracetamol", 15) @@ -167,8 +163,8 @@ desc = "A simple painkiller. Contains 15 units of Tramadol." icon_state = "pill8" -/obj/item/weapon/reagent_containers/pill/tramadol/New() - ..() +/obj/item/weapon/reagent_containers/pill/tramadol/Initialize() + . = ..() reagents.add_reagent("tramadol", 15) @@ -177,8 +173,8 @@ desc = "Improves the ability to concentrate. Contains 15 units of Methylphenidate." icon_state = "pill8" -/obj/item/weapon/reagent_containers/pill/methylphenidate/New() - ..() +/obj/item/weapon/reagent_containers/pill/methylphenidate/Initialize() + . = ..() reagents.add_reagent("methylphenidate", 15) @@ -187,18 +183,17 @@ desc = "Mild anti-depressant. Contains 15 units of Citalopram." icon_state = "pill8" -/obj/item/weapon/reagent_containers/pill/citalopram/New() - ..() +/obj/item/weapon/reagent_containers/pill/citalopram/Initialize() + . = ..() reagents.add_reagent("citalopram", 15) - /obj/item/weapon/reagent_containers/pill/dexalin name = "Dexalin pill" desc = "Used to treat oxygen deprivation. Contains 15 units of Dexalin." icon_state = "pill16" -/obj/item/weapon/reagent_containers/pill/dexalin/New() - ..() +/obj/item/weapon/reagent_containers/pill/dexalin/Initialize() + . = ..() reagents.add_reagent("dexalin", 15) @@ -207,38 +202,35 @@ desc = "Used to treat extreme oxygen deprivation. Contains 15 units of Dexalin Plus." icon_state = "pill8" -/obj/item/weapon/reagent_containers/pill/dexalin_plus/New() - ..() +/obj/item/weapon/reagent_containers/pill/dexalin_plus/Initialize() + . = ..() reagents.add_reagent("dexalinp", 15) - /obj/item/weapon/reagent_containers/pill/dermaline name = "Dermaline pill" desc = "Used to treat burn wounds. Contains 15 units of Dermaline." icon_state = "pill12" -/obj/item/weapon/reagent_containers/pill/dermaline/New() - ..() +/obj/item/weapon/reagent_containers/pill/dermaline/Initialize() + . = ..() reagents.add_reagent("dermaline", 15) - /obj/item/weapon/reagent_containers/pill/dylovene name = "Dylovene pill" desc = "A broad-spectrum anti-toxin. Contains 15 units of Dylovene." icon_state = "pill13" -/obj/item/weapon/reagent_containers/pill/dylovene/New() - ..() +/obj/item/weapon/reagent_containers/pill/dylovene/Initialize() + . = ..() reagents.add_reagent("anti_toxin", 15) - /obj/item/weapon/reagent_containers/pill/inaprovaline name = "Inaprovaline pill" desc = "Used to stabilize patients. Contains 30 units of Inaprovaline." icon_state = "pill20" -/obj/item/weapon/reagent_containers/pill/inaprovaline/New() - ..() +/obj/item/weapon/reagent_containers/pill/inaprovaline/Initialize() + . = ..() reagents.add_reagent("inaprovaline", 30) @@ -247,8 +239,8 @@ desc = "Used to treat physical injuries. Contains 20 units of Bicaridine." icon_state = "pill18" -/obj/item/weapon/reagent_containers/pill/bicaridine/New() - ..() +/obj/item/weapon/reagent_containers/pill/bicaridine/Initialize() + . = ..() reagents.add_reagent("bicaridine", 20) @@ -257,8 +249,8 @@ desc = "A theta-lactam antibiotic. Effective against many diseases likely to be encountered in space. Contains 15 units of Spaceacillin." icon_state = "pill19" -/obj/item/weapon/reagent_containers/pill/spaceacillin/New() - ..() +/obj/item/weapon/reagent_containers/pill/spaceacillin/Initialize() + . = ..() reagents.add_reagent("spaceacillin", 15) @@ -267,8 +259,8 @@ desc = "Used to neutralise chemicals in the stomach. Contains 15 units of Carbon." icon_state = "pill7" -/obj/item/weapon/reagent_containers/pill/carbon/New() - ..() +/obj/item/weapon/reagent_containers/pill/carbon/Initialize() + . = ..() reagents.add_reagent("carbon", 15) @@ -277,8 +269,8 @@ desc = "Used to aid in blood regeneration after bleeding. Contains 15 units of Iron." icon_state = "pill4" -/obj/item/weapon/reagent_containers/pill/iron/New() - ..() +/obj/item/weapon/reagent_containers/pill/iron/Initialize() + . = ..() reagents.add_reagent("iron", 15) //Not-quite-medicine @@ -287,8 +279,8 @@ desc = "Happy happy joy joy!" //we're not giving quantities for shady maint drugs icon_state = "pill18" -/obj/item/weapon/reagent_containers/pill/happy/New() - ..() +/obj/item/weapon/reagent_containers/pill/happy/Initialize() + . = ..() reagents.add_reagent("space_drugs", 15) reagents.add_reagent("sugar", 15) @@ -298,8 +290,8 @@ desc = "Zoooom!" icon_state = "pill18" -/obj/item/weapon/reagent_containers/pill/zoom/New() - ..() +/obj/item/weapon/reagent_containers/pill/zoom/Initialize() + . = ..() reagents.add_reagent("impedrezene", 10) reagents.add_reagent("synaptizine", 5) reagents.add_reagent("hyperzine", 5) @@ -309,6 +301,6 @@ desc = "Guaranteed to get you slim!" icon_state = "pill9" -/obj/item/weapon/reagent_containers/pill/diet/New() - ..() +/obj/item/weapon/reagent_containers/pill/diet/Initialize() + . = ..() reagents.add_reagent("lipozine", 15) //VOREStation Edit diff --git a/code/modules/reagents/reagent_containers/spray.dm b/code/modules/reagents/reagent_containers/spray.dm index 136bb34026..cdc6983b35 100644 --- a/code/modules/reagents/reagent_containers/spray.dm +++ b/code/modules/reagents/reagent_containers/spray.dm @@ -17,8 +17,8 @@ var/list/spray_sizes = list(1,3) volume = 250 -/obj/item/weapon/reagent_containers/spray/New() - ..() +/obj/item/weapon/reagent_containers/spray/Initialize() + . = ..() src.verbs -= /obj/item/weapon/reagent_containers/verb/set_APTFT /obj/item/weapon/reagent_containers/spray/afterattack(atom/A as mob|obj, mob/user as mob, proximity) @@ -102,16 +102,16 @@ desc = "BLAM!-brand non-foaming space cleaner!" volume = 50 -/obj/item/weapon/reagent_containers/spray/cleaner/New() - ..() +/obj/item/weapon/reagent_containers/spray/cleaner/Initialize() + . = ..() reagents.add_reagent("cleaner", volume) /obj/item/weapon/reagent_containers/spray/sterilizine name = "sterilizine" desc = "Great for hiding incriminating bloodstains and sterilizing scalpels." -/obj/item/weapon/reagent_containers/spray/sterilizine/New() - ..() +/obj/item/weapon/reagent_containers/spray/sterilizine/Initialize() + . = ..() reagents.add_reagent("sterilizine", volume) /obj/item/weapon/reagent_containers/spray/pepper @@ -122,10 +122,10 @@ item_state = "pepperspray" possible_transfer_amounts = null volume = 40 - var/safety = 1 + var/safety = TRUE -/obj/item/weapon/reagent_containers/spray/pepper/New() - ..() +/obj/item/weapon/reagent_containers/spray/pepper/Initialize() + . = ..() reagents.add_reagent("condensedcapsaicin", 40) /obj/item/weapon/reagent_containers/spray/pepper/examine(mob/user) @@ -140,7 +140,7 @@ if(safety) usr << "The safety is on!" return - ..() + . = ..() /obj/item/weapon/reagent_containers/spray/waterflower name = "water flower" @@ -152,8 +152,8 @@ possible_transfer_amounts = null volume = 10 -/obj/item/weapon/reagent_containers/spray/waterflower/New() - ..() +/obj/item/weapon/reagent_containers/spray/waterflower/Initialize() + . = ..() reagents.add_reagent("water", 10) /obj/item/weapon/reagent_containers/spray/chemsprayer @@ -196,6 +196,6 @@ item_state = "plantbgone" volume = 100 -/obj/item/weapon/reagent_containers/spray/plantbgone/New() - ..() +/obj/item/weapon/reagent_containers/spray/plantbgone/Initialize() + . = ..() reagents.add_reagent("plantbgone", 100) \ No newline at end of file diff --git a/code/modules/reagents/reagent_containers/syringes.dm b/code/modules/reagents/reagent_containers/syringes.dm index 804b4a85d2..29544fa052 100644 --- a/code/modules/reagents/reagent_containers/syringes.dm +++ b/code/modules/reagents/reagent_containers/syringes.dm @@ -330,8 +330,8 @@ name = "Syringe (inaprovaline)" desc = "Contains inaprovaline - used to stabilize patients." -/obj/item/weapon/reagent_containers/syringe/inaprovaline/New() - ..() +/obj/item/weapon/reagent_containers/syringe/inaprovaline/Initialize() + . = ..() reagents.add_reagent("inaprovaline", 15) //mode = SYRINGE_INJECT //VOREStation Edit - Starts capped //update_icon() @@ -340,8 +340,8 @@ name = "Syringe (anti-toxin)" desc = "Contains anti-toxins." -/obj/item/weapon/reagent_containers/syringe/antitoxin/New() - ..() +/obj/item/weapon/reagent_containers/syringe/antitoxin/Initialize() + . = ..() reagents.add_reagent("anti_toxin", 15) //mode = SYRINGE_INJECT //VOREStation Edit - Starts capped //update_icon() @@ -350,8 +350,8 @@ name = "Syringe (spaceacillin)" desc = "Contains antiviral agents." -/obj/item/weapon/reagent_containers/syringe/antiviral/New() - ..() +/obj/item/weapon/reagent_containers/syringe/antiviral/Initialize() + . = ..() reagents.add_reagent("spaceacillin", 15) //mode = SYRINGE_INJECT //VOREStation Edit - Starts capped //update_icon() @@ -360,16 +360,16 @@ name = "Syringe (drugs)" desc = "Contains aggressive drugs meant for torture." -/obj/item/weapon/reagent_containers/syringe/drugs/New() - ..() +/obj/item/weapon/reagent_containers/syringe/drugs/Initialize() + . = ..() reagents.add_reagent("space_drugs", 5) reagents.add_reagent("mindbreaker", 5) reagents.add_reagent("cryptobiolin", 5) //mode = SYRINGE_INJECT //VOREStation Edit - Starts capped //update_icon() -/obj/item/weapon/reagent_containers/syringe/ld50_syringe/choral/New() - ..() +/obj/item/weapon/reagent_containers/syringe/ld50_syringe/choral/Initialize() + . = ..() reagents.add_reagent("chloralhydrate", 50) mode = SYRINGE_INJECT update_icon() @@ -378,7 +378,7 @@ name = "Syringe (anabolic steroids)" desc = "Contains drugs for muscle growth." -/obj/item/weapon/reagent_containers/syringe/steroid/New() +/obj/item/weapon/reagent_containers/syringe/steroid/Initialize() ..() //reagents.add_reagent("adrenaline",5) //VOREStation Edit - No thanks. reagents.add_reagent("hyperzine",10) diff --git a/code/modules/reagents/reagent_containers/syringes_vr.dm b/code/modules/reagents/reagent_containers/syringes_vr.dm index c1d4a4e686..83c5bacaef 100644 --- a/code/modules/reagents/reagent_containers/syringes_vr.dm +++ b/code/modules/reagents/reagent_containers/syringes_vr.dm @@ -8,19 +8,19 @@ var/list/targets var/list/datum/disease2/disease/viruses -/obj/item/weapon/reagent_containers/syringe/initialize() +/obj/item/weapon/reagent_containers/syringe/Initialize() . = ..() update_icon() /obj/item/weapon/reagent_containers/syringe/Destroy() - QDEL_NULL_LIST(viruses) + QDEL_LIST_NULL(viruses) LAZYCLEARLIST(targets) return ..() /obj/item/weapon/reagent_containers/syringe/process() dirtiness = min(dirtiness + targets.len,75) if(dirtiness >= 75) - processing_objects -= src + STOP_PROCESSING(SSobj, src) return 1 /obj/item/weapon/reagent_containers/syringe/proc/dirty(var/mob/living/carbon/human/target, var/obj/item/organ/external/eo) @@ -59,7 +59,7 @@ infect_virus2(target,virus.getcopy()) if(!used) - processing_objects |= src + START_PROCESSING(SSobj, src) /obj/item/weapon/reagent_containers/syringe/proc/infect_limb(var/obj/item/organ/external/eo) src = null @@ -68,7 +68,7 @@ var/obj/item/organ/external/found_limb = limb_ref.resolve() if(istype(found_limb)) eo.germ_level += INFECTION_LEVEL_ONE+30 - + //Allow for capped syringe mode /obj/item/weapon/reagent_containers/syringe/attack_self(mob/user as mob) switch(mode) @@ -83,10 +83,10 @@ return update_icon() -//Allow for capped syringes +//Allow for capped syringes /obj/item/weapon/reagent_containers/syringe/update_icon() cut_overlays(src) - + var/matrix/tf = matrix() if(isstorage(loc)) tf.Turn(-90) //Vertical for storing compact-ly @@ -116,7 +116,7 @@ if (SYRINGE_INJECT) injoverlay = "inject" new_overlays += injoverlay - + add_overlay(new_overlays) icon_state = "[rounded_vol]" item_state = "syringe_[rounded_vol]" diff --git a/code/modules/reagents/reagent_containers/unidentified_hypospray.dm b/code/modules/reagents/reagent_containers/unidentified_hypospray.dm new file mode 100644 index 0000000000..496e694cbc --- /dev/null +++ b/code/modules/reagents/reagent_containers/unidentified_hypospray.dm @@ -0,0 +1,104 @@ +// Here are the paths for all hypos that start unidentified. +// Usually you want to use a random spawner instead of using them directly, unless you're spawning these live for adminbus purposes. + +/obj/item/weapon/reagent_containers/hypospray/autoinjector + identity_type = /datum/identification/hypo + +// The good. +/obj/item/weapon/reagent_containers/hypospray/autoinjector/biginjector/brute/unidentified + init_hide_identity = TRUE + flags = 0 + +/obj/item/weapon/reagent_containers/hypospray/autoinjector/biginjector/burn/unidentified + init_hide_identity = TRUE + flags = 0 + +/obj/item/weapon/reagent_containers/hypospray/autoinjector/biginjector/toxin/unidentified + init_hide_identity = TRUE + flags = 0 + +/obj/item/weapon/reagent_containers/hypospray/autoinjector/biginjector/oxy/unidentified + init_hide_identity = TRUE + flags = 0 + +/obj/item/weapon/reagent_containers/hypospray/autoinjector/biginjector/purity/unidentified + init_hide_identity = TRUE + flags = 0 + +/obj/item/weapon/reagent_containers/hypospray/autoinjector/biginjector/pain/unidentified + init_hide_identity = TRUE + flags = 0 + +/obj/item/weapon/reagent_containers/hypospray/autoinjector/biginjector/organ/unidentified + init_hide_identity = TRUE + flags = 0 + +/obj/item/weapon/reagent_containers/hypospray/autoinjector/biginjector/clotting/unidentified + init_hide_identity = TRUE + flags = 0 + +/obj/item/weapon/reagent_containers/hypospray/autoinjector/biginjector/bonemed/unidentified + init_hide_identity = TRUE + flags = 0 + +/obj/item/weapon/reagent_containers/hypospray/autoinjector/biginjector/combat/unidentified + init_hide_identity = TRUE + flags = 0 + +/obj/item/weapon/reagent_containers/hypospray/autoinjector/biginjector/healing_nanites/unidentified + init_hide_identity = TRUE + flags = 0 + +// The somewhat bad. +/obj/item/weapon/reagent_containers/hypospray/autoinjector/biginjector/stimm/unidentified + init_hide_identity = TRUE + flags = 0 + +/obj/item/weapon/reagent_containers/hypospray/autoinjector/biginjector/space_drugs/unidentified + init_hide_identity = TRUE + flags = 0 + +/obj/item/weapon/reagent_containers/hypospray/autoinjector/biginjector/expired/unidentified + init_hide_identity = TRUE + flags = 0 + +/obj/item/weapon/reagent_containers/hypospray/autoinjector/biginjector/serotrotium/unidentified + init_hide_identity = TRUE + flags = 0 + +/obj/item/weapon/reagent_containers/hypospray/autoinjector/biginjector/cryptobiolin/unidentified + init_hide_identity = TRUE + flags = 0 + +/obj/item/weapon/reagent_containers/hypospray/autoinjector/biginjector/mindbreaker/unidentified + init_hide_identity = TRUE + flags = 0 + +/obj/item/weapon/reagent_containers/hypospray/autoinjector/biginjector/psilocybin/unidentified + init_hide_identity = TRUE + flags = 0 + +/obj/item/weapon/reagent_containers/hypospray/autoinjector/biginjector/soporific/unidentified + init_hide_identity = TRUE + flags = 0 + +// The very bad. +/obj/item/weapon/reagent_containers/hypospray/autoinjector/biginjector/cyanide/unidentified + init_hide_identity = TRUE + flags = 0 + +/obj/item/weapon/reagent_containers/hypospray/autoinjector/biginjector/impedrezene/unidentified + init_hide_identity = TRUE + flags = 0 + +/obj/item/weapon/reagent_containers/hypospray/autoinjector/biginjector/mutagen/unidentified + init_hide_identity = TRUE + flags = 0 + +/obj/item/weapon/reagent_containers/hypospray/autoinjector/biginjector/defective_nanites/unidentified + init_hide_identity = TRUE + flags = 0 + +/obj/item/weapon/reagent_containers/hypospray/autoinjector/biginjector/contaminated/unidentified + init_hide_identity = TRUE + flags = 0 \ No newline at end of file diff --git a/code/modules/reagents/reagent_dispenser.dm b/code/modules/reagents/reagent_dispenser.dm index d40fc51610..d2b4dc149d 100644 --- a/code/modules/reagents/reagent_dispenser.dm +++ b/code/modules/reagents/reagent_dispenser.dm @@ -16,13 +16,13 @@ attackby(obj/item/weapon/W as obj, mob/user as mob) return -/obj/structure/reagent_dispensers/New() +/obj/structure/reagent_dispensers/Initialize() var/datum/reagents/R = new/datum/reagents(5000) reagents = R R.my_atom = src if (!possible_transfer_amounts) src.verbs -= /obj/structure/reagent_dispensers/verb/set_APTFT - ..() + . = ..() /obj/structure/reagent_dispensers/examine(mob/user) if(!..(user, 2)) @@ -73,8 +73,8 @@ icon_state = "watertank" amount_per_transfer_from_this = 10 -/obj/structure/reagent_dispensers/watertank/New() - ..() +/obj/structure/reagent_dispensers/watertank/Initialize() + . = ..() reagents.add_reagent("water", 1000) /obj/structure/reagent_dispensers/watertank/high @@ -82,8 +82,8 @@ desc = "A highly-pressurized water tank made to hold vast amounts of water.." icon_state = "watertank_high" -/obj/structure/reagent_dispensers/watertank/high/New() - ..() +/obj/structure/reagent_dispensers/watertank/high/Initialize() + . = ..() reagents.add_reagent("water", 4000) /obj/structure/reagent_dispensers/fueltank @@ -95,8 +95,8 @@ var/modded = 0 var/obj/item/device/assembly_holder/rig = null -/obj/structure/reagent_dispensers/fueltank/New() - ..() +/obj/structure/reagent_dispensers/fueltank/Initialize() + . = ..() reagents.add_reagent("fuel",1000) /obj/structure/reagent_dispensers/fueltank/examine(mob/user) @@ -205,8 +205,8 @@ density = 0 amount_per_transfer_from_this = 45 -/obj/structure/reagent_dispensers/peppertank/New() - ..() +/obj/structure/reagent_dispensers/peppertank/Initialize() + . = ..() reagents.add_reagent("condensedcapsaicin",1000) @@ -227,8 +227,8 @@ cupholder = 1 cups = 10 -/obj/structure/reagent_dispensers/water_cooler/New() - ..() +/obj/structure/reagent_dispensers/water_cooler/Initialize() + . = ..() if(bottle) reagents.add_reagent("water",120) update_icon() @@ -352,8 +352,8 @@ icon_state = "beertankTEMP" amount_per_transfer_from_this = 10 -/obj/structure/reagent_dispensers/beerkeg/New() - ..() +/obj/structure/reagent_dispensers/beerkeg/Initialize() + . = ..() reagents.add_reagent("beer",1000) /obj/structure/reagent_dispensers/beerkeg/fakenuke @@ -370,8 +370,8 @@ amount_per_transfer_from_this = 10 anchored = 1 -/obj/structure/reagent_dispensers/virusfood/New() - ..() +/obj/structure/reagent_dispensers/virusfood/Initialize() + . = ..() reagents.add_reagent("virusfood", 1000) /obj/structure/reagent_dispensers/acid @@ -382,6 +382,6 @@ amount_per_transfer_from_this = 10 anchored = 1 -/obj/structure/reagent_dispensers/acid/New() - ..() +/obj/structure/reagent_dispensers/acid/Initialize() + . = ..() reagents.add_reagent("sacid", 1000) diff --git a/code/modules/recycling/conveyor2.dm b/code/modules/recycling/conveyor2.dm index d70e6e563d..428484ea66 100644 --- a/code/modules/recycling/conveyor2.dm +++ b/code/modules/recycling/conveyor2.dm @@ -1,3 +1,7 @@ +#define OFF 0 +#define FORWARDS 1 +#define BACKWARDS 2 + //conveyor2 is pretty much like the original, except it supports corners, but not diverters. //note that corner pieces transfer stuff clockwise when running forward, and anti-clockwise backwards. @@ -10,7 +14,7 @@ layer = ABOVE_TURF_LAYER anchored = 1 circuit = /obj/item/weapon/circuitboard/conveyor - var/operating = 0 // 1 if running forward, -1 if backwards, 0 if off + var/operating = OFF // 1 if running forward, -1 if backwards, 0 if off var/operable = 1 // true if can operate (no broken segments in this belt run) var/forwards // this is the default (forward) direction, set by the map dir var/backwards // hopefully self-explanatory @@ -23,7 +27,7 @@ id = "round_end_belt" // create a conveyor -/obj/machinery/conveyor/initialize(mapload, newdir, on = 0) +/obj/machinery/conveyor/Initialize(mapload, newdir, on = 0) . = ..() if(newdir) set_dir(newdir) @@ -36,7 +40,7 @@ backwards = turn(dir, 180) if(on) - operating = 1 + operating = FORWARDS setmove() component_parts = list() @@ -48,22 +52,23 @@ RefreshParts() /obj/machinery/conveyor/proc/setmove() - if(operating == 1) + if(operating == FORWARDS) movedir = forwards - else if(operating == -1) + else if(operating == BACKWARDS) movedir = backwards - else operating = 0 + else + operating = OFF update() /obj/machinery/conveyor/proc/update() if(stat & BROKEN) icon_state = "conveyor-broken" - operating = 0 + operating = OFF return if(!operable) - operating = 0 + operating = OFF if(stat & NOPOWER) - operating = 0 + operating = OFF icon_state = "conveyor[operating]" // machine process @@ -183,7 +188,7 @@ -/obj/machinery/conveyor_switch/initialize() +/obj/machinery/conveyor_switch/Initialize() ..() update() return INITIALIZE_HINT_LATELOAD diff --git a/code/modules/recycling/disposal-construction.dm b/code/modules/recycling/disposal-construction.dm index 8034b776b4..1743ee4c69 100644 --- a/code/modules/recycling/disposal-construction.dm +++ b/code/modules/recycling/disposal-construction.dm @@ -20,307 +20,299 @@ var/base_state = "pipe-s" // update iconstate and dpdir due to dir and type - proc/update() - var/flip = turn(dir, 180) - var/left = turn(dir, 90) - var/right = turn(dir, -90) +/obj/structure/disposalconstruct/proc/update() + var/flip = turn(dir, 180) + var/left = turn(dir, 90) + var/right = turn(dir, -90) - switch(ptype) - if(0) - base_state = "pipe-s" - dpdir = dir | flip - if(1) - base_state = "pipe-c" - dpdir = dir | right - if(2) - base_state = "pipe-j1" - dpdir = dir | right | flip - if(3) - base_state = "pipe-j2" - dpdir = dir | left | flip - if(4) - base_state = "pipe-y" - dpdir = dir | left | right - if(5) - base_state = "pipe-t" - dpdir = dir - // disposal bin has only one dir, thus we don't need to care about setting it - if(6) - if(anchored) - base_state = "disposal" - else - base_state = "condisposal" - - if(7) - base_state = "outlet" - dpdir = dir - - if(8) - base_state = "intake" - dpdir = dir - - if(9) - base_state = "pipe-j1s" - dpdir = dir | right | flip - - if(10) - base_state = "pipe-j2s" - dpdir = dir | left | flip + switch(ptype) + if(0) + base_state = "pipe-s" + dpdir = dir | flip + if(1) + base_state = "pipe-c" + dpdir = dir | right + if(2) + base_state = "pipe-j1" + dpdir = dir | right | flip + if(3) + base_state = "pipe-j2" + dpdir = dir | left | flip + if(4) + base_state = "pipe-y" + dpdir = dir | left | right + if(5) + base_state = "pipe-t" + dpdir = dir + // disposal bin has only one dir, thus we don't need to care about setting it + if(6) + if(anchored) + base_state = "disposal" + else + base_state = "condisposal" + if(7) + base_state = "outlet" + dpdir = dir + if(8) + base_state = "intake" + dpdir = dir + if(9) + base_state = "pipe-j1s" + dpdir = dir | right | flip + if(10) + base_state = "pipe-j2s" + dpdir = dir | left | flip ///// Z-Level stuff - if(11) - base_state = "pipe-u" - dpdir = dir - if(12) - base_state = "pipe-d" - dpdir = dir -///// Z-Level stuff - if(13) - base_state = "pipe-tagger" - dpdir = dir | flip - if(14) - base_state = "pipe-tagger-partial" - dpdir = dir | flip + if(11) + base_state = "pipe-u" + dpdir = dir + if(12) + base_state = "pipe-d" + dpdir = dir + if(13) + base_state = "pipe-tagger" + dpdir = dir | flip + if(14) + base_state = "pipe-tagger-partial" + dpdir = dir | flip ///// Z-Level stuff - if(!(ptype in list(6, 7, 8, 11, 12, 13, 14))) -///// Z-Level stuff - icon_state = "con[base_state]" - else - icon_state = base_state + if(!(ptype in list(6, 7, 8, 11, 12, 13, 14))) + icon_state = "con[base_state]" + else + icon_state = base_state - if(invisibility) // if invisible, fade icon - alpha = 128 - else - alpha = 255 - //otherwise burying half-finished pipes under floors causes them to half-fade + if(invisibility) // if invisible, fade icon + alpha = 128 + else + alpha = 255 + //otherwise burying half-finished pipes under floors causes them to half-fade - // hide called by levelupdate if turf intact status changes - // change visibility status and force update of icon - hide(var/intact) - invisibility = (intact && level==1) ? 101: 0 // hide if floor is intact - update() +// hide called by levelupdate if turf intact status changes +// change visibility status and force update of icon +/obj/structure/disposalconstruct/hide(var/intact) + invisibility = (intact && level==1) ? 101: 0 // hide if floor is intact + update() - // flip and rotate verbs - verb/rotate() - set category = "Object" - set name = "Rotate Pipe" - set src in view(1) +// flip and rotate verbs +/obj/structure/disposalconstruct/verb/rotate_clockwise() + set category = "Object" + set name = "Rotate Pipe Clockwise" + set src in view(1) - if(usr.stat) - return - - if(anchored) - to_chat(usr, "You must unfasten the pipe before rotating it.") - return - - set_dir(turn(dir, -90)) - update() - - verb/flip() - set category = "Object" - set name = "Flip Pipe" - set src in view(1) - if(usr.stat) - return - - if(anchored) - to_chat(usr, "You must unfasten the pipe before flipping it.") - return - - set_dir(turn(dir, 180)) - switch(ptype) - if(2) - ptype = 3 - if(3) - ptype = 2 - if(9) - ptype = 10 - if(10) - ptype = 9 - - update() - - // returns the type path of disposalpipe corresponding to this item dtype - proc/dpipetype() - switch(ptype) - if(0,1) - return /obj/structure/disposalpipe/segment - if(2,3,4) - return /obj/structure/disposalpipe/junction - if(5) - return /obj/structure/disposalpipe/trunk - if(6) - return /obj/machinery/disposal - if(7) - return /obj/structure/disposaloutlet - if(8) - return /obj/machinery/disposal/deliveryChute - if(9) - switch(subtype) - if(0) - return /obj/structure/disposalpipe/sortjunction - if(1) - return /obj/structure/disposalpipe/sortjunction/wildcard - if(2) - return /obj/structure/disposalpipe/sortjunction/untagged - if(10) - switch(subtype) - if(0) - return /obj/structure/disposalpipe/sortjunction/flipped - if(1) - return /obj/structure/disposalpipe/sortjunction/wildcard/flipped - if(2) - return /obj/structure/disposalpipe/sortjunction/untagged/flipped -///// Z-Level stuff - if(11) - return /obj/structure/disposalpipe/up - if(12) - return /obj/structure/disposalpipe/down -///// Z-Level stuff - if(13) - return /obj/structure/disposalpipe/tagger - if(14) - return /obj/structure/disposalpipe/tagger/partial + if(usr.stat) return + if(anchored) + to_chat(usr, "You must unfasten the pipe before rotating it.") + return + + src.set_dir(turn(src.dir, 270)) + update() + +/obj/structure/disposalconstruct/verb/flip() + set category = "Object" + set name = "Flip Pipe" + set src in view(1) + if(usr.stat) + return + + if(anchored) + to_chat(usr, "You must unfasten the pipe before flipping it.") + return + + set_dir(turn(dir, 180)) + switch(ptype) + if(2) + ptype = 3 + if(3) + ptype = 2 + if(9) + ptype = 10 + if(10) + ptype = 9 + + update() + +// returns the type path of disposalpipe corresponding to this item dtype +/obj/structure/disposalconstruct/proc/dpipetype() + switch(ptype) + if(0,1) + return /obj/structure/disposalpipe/segment + if(2,3,4) + return /obj/structure/disposalpipe/junction + if(5) + return /obj/structure/disposalpipe/trunk + if(6) + return /obj/machinery/disposal + if(7) + return /obj/structure/disposaloutlet + if(8) + return /obj/machinery/disposal/deliveryChute + if(9) + switch(subtype) + if(0) + return /obj/structure/disposalpipe/sortjunction + if(1) + return /obj/structure/disposalpipe/sortjunction/wildcard + if(2) + return /obj/structure/disposalpipe/sortjunction/untagged + if(10) + switch(subtype) + if(0) + return /obj/structure/disposalpipe/sortjunction/flipped + if(1) + return /obj/structure/disposalpipe/sortjunction/wildcard/flipped + if(2) + return /obj/structure/disposalpipe/sortjunction/untagged/flipped +///// Z-Level stuff + if(11) + return /obj/structure/disposalpipe/up + if(12) + return /obj/structure/disposalpipe/down + if(13) + return /obj/structure/disposalpipe/tagger + if(14) + return /obj/structure/disposalpipe/tagger/partial + return - // attackby item + +// attackby item +// wrench: (un)anchor +// weldingtool: convert to real pipe +/obj/structure/disposalconstruct/attackby(var/obj/item/I, var/mob/user) + var/nicetype = "pipe" + var/ispipe = 0 // Indicates if we should change the level of this pipe + src.add_fingerprint(user) + switch(ptype) + if(6) + nicetype = "disposal bin" + if(7) + nicetype = "disposal outlet" + if(8) + nicetype = "delivery chute" + if(9, 10) + switch(subtype) + if(0) + nicetype = "sorting pipe" + if(1) + nicetype = "wildcard sorting pipe" + if(2) + nicetype = "untagged sorting pipe" + ispipe = 1 + if(13) + nicetype = "tagging pipe" + ispipe = 1 + if(14) + nicetype = "partial tagging pipe" + ispipe = 1 + else + nicetype = "pipe" + ispipe = 1 + + var/turf/T = src.loc + if(!T.is_plating()) + to_chat(user, "You can only attach the [nicetype] if the floor plating is removed.") + return + + var/obj/structure/disposalpipe/CP = locate() in T + // wrench: (un)anchor - // weldingtool: convert to real pipe - - attackby(var/obj/item/I, var/mob/user) - var/nicetype = "pipe" - var/ispipe = 0 // Indicates if we should change the level of this pipe - src.add_fingerprint(user) - switch(ptype) - if(6) - nicetype = "disposal bin" - if(7) - nicetype = "disposal outlet" - if(8) - nicetype = "delivery chute" - if(9, 10) - switch(subtype) - if(0) - nicetype = "sorting pipe" - if(1) - nicetype = "wildcard sorting pipe" - if(2) - nicetype = "untagged sorting pipe" - ispipe = 1 - if(13) - nicetype = "tagging pipe" - ispipe = 1 - if(14) - nicetype = "partial tagging pipe" - ispipe = 1 + if(I.is_wrench()) + if(anchored) + anchored = 0 + if(ispipe) + level = 2 + density = 0 else - nicetype = "pipe" - ispipe = 1 - - var/turf/T = src.loc - if(!T.is_plating()) - to_chat(user, "You can only attach the [nicetype] if the floor plating is removed.") - return - - var/obj/structure/disposalpipe/CP = locate() in T - - if(I.is_wrench()) - if(anchored) - anchored = 0 - if(ispipe) - level = 2 - density = 0 - else - density = 1 - to_chat(user, "You detach the [nicetype] from the underfloor.") - else - if(ptype>=6 && ptype <= 8) // Disposal or outlet - if(CP) // There's something there - if(!istype(CP,/obj/structure/disposalpipe/trunk)) - to_chat(user, "The [nicetype] requires a trunk underneath it in order to work.") - return - else // Nothing under, fuck. + density = 1 + to_chat(user, "You detach the [nicetype] from the underfloor.") + else + if(ptype>=6 && ptype <= 8) // Disposal or outlet + if(CP) // There's something there + if(!istype(CP,/obj/structure/disposalpipe/trunk)) to_chat(user, "The [nicetype] requires a trunk underneath it in order to work.") return - else - if(CP) - update() - var/pdir = CP.dpdir - if(istype(CP, /obj/structure/disposalpipe/broken)) - pdir = CP.dir - if(pdir & dpdir) - to_chat(user, "There is already a [nicetype] at that location.") - return - - anchored = 1 - if(ispipe) - level = 1 // We don't want disposal bins to disappear under the floors - density = 0 - else - density = 1 // We don't want disposal bins or outlets to go density 0 - to_chat(user, "You attach the [nicetype] to the underfloor.") - playsound(loc, I.usesound, 100, 1) - update() - - else if(istype(I, /obj/item/weapon/weldingtool)) - if(anchored) - var/obj/item/weapon/weldingtool/W = I - if(W.remove_fuel(0,user)) - playsound(src, W.usesound, 100, 1) - to_chat(user, "Welding the [nicetype] in place.") - if(do_after(user, 20 * W.toolspeed)) - if(!src || !W.isOn()) return - to_chat(user, "The [nicetype] has been welded in place!") - update() // TODO: Make this neat - if(ispipe) // Pipe - - var/pipetype = dpipetype() - var/obj/structure/disposalpipe/P = new pipetype(src.loc) - src.transfer_fingerprints_to(P) - P.base_icon_state = base_state - P.set_dir(dir) - P.dpdir = dpdir - P.updateicon() - - //Needs some special treatment ;) - if(ptype==9 || ptype==10) - var/obj/structure/disposalpipe/sortjunction/SortP = P - SortP.sortType = sortType - SortP.updatedir() - SortP.updatedesc() - SortP.updatename() - - else if(ptype==6) // Disposal bin - var/obj/machinery/disposal/P = new /obj/machinery/disposal(src.loc) - src.transfer_fingerprints_to(P) - P.mode = 0 // start with pump off - - else if(ptype==7) // Disposal outlet - - var/obj/structure/disposaloutlet/P = new /obj/structure/disposaloutlet(src.loc) - src.transfer_fingerprints_to(P) - P.set_dir(dir) - var/obj/structure/disposalpipe/trunk/Trunk = CP - Trunk.linked = P - - else if(ptype==8) // Disposal outlet - - var/obj/machinery/disposal/deliveryChute/P = new /obj/machinery/disposal/deliveryChute(src.loc) - src.transfer_fingerprints_to(P) - P.set_dir(dir) - - qdel(src) - return - else - to_chat(user, "You need more welding fuel to complete this task.") + else // Nothing under, fuck. + to_chat(user, "The [nicetype] requires a trunk underneath it in order to work.") return else - to_chat(user, "You need to attach it to the plating first!") + if(CP) + update() + var/pdir = CP.dpdir + if(istype(CP, /obj/structure/disposalpipe/broken)) + pdir = CP.dir + if(pdir & dpdir) + to_chat(user, "There is already a [nicetype] at that location.") + return + + anchored = 1 + if(ispipe) + level = 1 // We don't want disposal bins to disappear under the floors + density = 0 + else + density = 1 // We don't want disposal bins or outlets to go density 0 + to_chat(user, "You attach the [nicetype] to the underfloor.") + playsound(loc, I.usesound, 100, 1) + update() + + // weldingtool: convert to real pipe + else if(istype(I, /obj/item/weapon/weldingtool)) + if(anchored) + var/obj/item/weapon/weldingtool/W = I + if(W.remove_fuel(0,user)) + playsound(src, W.usesound, 100, 1) + to_chat(user, "Welding the [nicetype] in place.") + if(do_after(user, 20 * W.toolspeed)) + if(!src || !W.isOn()) return + to_chat(user, "The [nicetype] has been welded in place!") + update() // TODO: Make this neat + if(ispipe) // Pipe + + var/pipetype = dpipetype() + var/obj/structure/disposalpipe/P = new pipetype(src.loc) + src.transfer_fingerprints_to(P) + P.base_icon_state = base_state + P.set_dir(dir) + P.dpdir = dpdir + P.updateicon() + + //Needs some special treatment ;) + if(ptype==9 || ptype==10) + var/obj/structure/disposalpipe/sortjunction/SortP = P + SortP.sortType = sortType + SortP.updatedir() + SortP.updatedesc() + SortP.updatename() + + else if(ptype==6) // Disposal bin + var/obj/machinery/disposal/P = new /obj/machinery/disposal(src.loc) + src.transfer_fingerprints_to(P) + P.mode = 0 // start with pump off + + else if(ptype==7) // Disposal outlet + var/obj/structure/disposaloutlet/P = new /obj/structure/disposaloutlet(src.loc) + src.transfer_fingerprints_to(P) + P.set_dir(dir) + var/obj/structure/disposalpipe/trunk/Trunk = CP + Trunk.linked = P + + else if(ptype==8) // Disposal outlet + var/obj/machinery/disposal/deliveryChute/P = new /obj/machinery/disposal/deliveryChute(src.loc) + src.transfer_fingerprints_to(P) + P.set_dir(dir) + + qdel(src) + return + else + to_chat(user, "You need more welding fuel to complete this task.") return + else + to_chat(user, "You need to attach it to the plating first!") + return /obj/structure/disposalconstruct/hides_under_flooring() if(anchored) diff --git a/code/modules/recycling/disposal.dm b/code/modules/recycling/disposal.dm index 10157157fa..98d3500c6e 100644 --- a/code/modules/recycling/disposal.dm +++ b/code/modules/recycling/disposal.dm @@ -467,7 +467,7 @@ H.vent_gas(loc) qdel(H) -/obj/machinery/disposal/CanPass(atom/movable/mover, turf/target, height=0, air_group=0) +/obj/machinery/disposal/CanPass(atom/movable/mover, turf/target) if(istype(mover, /obj/item/projectile)) return 1 if (istype(mover,/obj/item) && mover.throwing) @@ -483,7 +483,7 @@ M.show_message("\The [I] bounces off of \the [src]'s rim!", 3) return 0 else - return ..(mover, target, height, air_group) + return ..(mover, target) // virtual disposal object // travels through pipes in lieu of actual items diff --git a/code/modules/recycling/sortingmachinery.dm b/code/modules/recycling/sortingmachinery.dm index 59b690f31a..b60b71cc4e 100755 --- a/code/modules/recycling/sortingmachinery.dm +++ b/code/modules/recycling/sortingmachinery.dm @@ -326,7 +326,6 @@ w_class = ITEMSIZE_SMALL item_state = "electronic" - flags = CONDUCT slot_flags = SLOT_BELT proc/openwindow(mob/user as mob) diff --git a/code/modules/research/circuitprinter.dm b/code/modules/research/circuitprinter.dm index 850df76645..70ca9692f3 100644 --- a/code/modules/research/circuitprinter.dm +++ b/code/modules/research/circuitprinter.dm @@ -22,8 +22,8 @@ using metal and glass, it uses glass and reagents (usually sulphuric acid). idle_power_usage = 30 active_power_usage = 2500 -/obj/machinery/r_n_d/circuit_imprinter/New() - ..() +/obj/machinery/r_n_d/circuit_imprinter/Initialize() + . = ..() component_parts = list() component_parts += new /obj/item/weapon/stock_parts/matter_bin(src) component_parts += new /obj/item/weapon/stock_parts/manipulator(src) diff --git a/code/modules/research/designs/weapons.dm b/code/modules/research/designs/weapons.dm index 828856aeba..d696b14b29 100644 --- a/code/modules/research/designs/weapons.dm +++ b/code/modules/research/designs/weapons.dm @@ -45,19 +45,20 @@ build_path = /obj/item/weapon/gun/energy/decloner sort_string = "TAAAE" -/datum/design/item/weapon/smg +/datum/design/item/weapon/advanced_smg id = "smg" - desc = "An compact reliable SMG firing armor piercing ammo." + desc = "An advanced 9mm SMG with a reflective laser optic." req_tech = list(TECH_COMBAT = 4, TECH_MATERIAL = 3) materials = list(DEFAULT_WALL_MATERIAL = 8000, "silver" = 2000, "diamond" = 1000) - build_path = /obj/item/weapon/gun/projectile/automatic/saber + build_path = /obj/item/weapon/gun/projectile/automatic/advanced_smg sort_string = "TAABA" -/datum/design/item/weapon/ammo_9mm +/datum/design/item/weapon/ammo_9mmAdvanced id = "ammo_9mm" + desc = "A 21 round magazine for an advanced 9mm SMG." req_tech = list(TECH_COMBAT = 4, TECH_MATERIAL = 3) - materials = list(DEFAULT_WALL_MATERIAL = 3750, "silver" = 100) - build_path = /obj/item/ammo_magazine/box/c9mm + materials = list(DEFAULT_WALL_MATERIAL = 3750, "silver" = 100) // Requires silver for proprietary magazines! Or something. + build_path = /obj/item/ammo_magazine/m9mmAdvanced sort_string = "TAACA" /datum/design/item/weapon/stunshell @@ -163,6 +164,7 @@ build_path = /obj/item/weapon/gun/energy/taser/xeno sort_string = "TBAAC" +/* //VOREStation Edit // Phase Weapons /datum/design/item/weapon/phase_pistol id = "phasepistol" @@ -190,4 +192,5 @@ req_tech = list(TECH_COMBAT = 4, TECH_MATERIAL = 4, TECH_POWER = 4) materials = list(DEFAULT_WALL_MATERIAL = 10000, "glass" = 2000, "silver" = 1000, "diamond" = 750) build_path = /obj/item/weapon/gun/energy/phasegun/cannon - sort_string = "TPAAD" \ No newline at end of file + sort_string = "TPAAD" +*/ \ No newline at end of file diff --git a/code/modules/research/message_server.dm b/code/modules/research/message_server.dm index 19afc0f564..75fb5fff2a 100644 --- a/code/modules/research/message_server.dm +++ b/code/modules/research/message_server.dm @@ -169,6 +169,11 @@ var/global/list/obj/machinery/message_server/message_servers = list() var/value var/details +/datum/feedback_variable/vv_edit_var(var_name, var_value) + if(var_name == NAMEOF(src, variable) || var_name == NAMEOF(src, value) || var_name == NAMEOF(src, details)) + return FALSE + return ..() + /datum/feedback_variable/New(var/param_variable,var/param_value = 0) variable = param_variable value = param_value @@ -319,6 +324,15 @@ var/obj/machinery/blackbox_recorder/blackbox feedback_set_details("round_end","[time2text(world.realtime)]") //This one MUST be the last one that gets set. +/obj/machinery/blackbox_recorder/vv_edit_var(var_name, var_value) + var/static/list/blocked_vars //hacky as fuck kill me + if(!blocked_vars) + var/obj/machinery/M = new + var/list/parent_vars = M.vars.Copy() + blocked_vars = vars.Copy() - parent_vars + if(var_name in blocked_vars) + return FALSE + return ..() //This proc is only to be called at round end. /obj/machinery/blackbox_recorder/proc/save_all_data_to_sql() diff --git a/code/modules/research/prosfab_designs.dm b/code/modules/research/prosfab_designs.dm index 8a25d61583..f0a236aff6 100644 --- a/code/modules/research/prosfab_designs.dm +++ b/code/modules/research/prosfab_designs.dm @@ -295,6 +295,10 @@ id = "armour" build_path = /obj/item/robot_parts/robot_component/armour +/datum/design/item/prosfab/cyborg/component/ai_shell + name = "AI Remote Interface" + id = "mmi_ai_shell" + build_path = /obj/item/device/mmi/inert/ai_remote //////////////////// Cyborg Modules //////////////////// /datum/design/item/prosfab/robot_upgrade diff --git a/code/modules/research/protolathe.dm b/code/modules/research/protolathe.dm index 1e1d54f9bc..bea555b70c 100644 --- a/code/modules/research/protolathe.dm +++ b/code/modules/research/protolathe.dm @@ -17,8 +17,8 @@ materials = list(DEFAULT_WALL_MATERIAL = 0, "glass" = 0, "plastic" = 0, "gold" = 0, "silver" = 0, "osmium" = 0, "phoron" = 0, "uranium" = 0, "diamond" = 0) -/obj/machinery/r_n_d/protolathe/New() - ..() +/obj/machinery/r_n_d/protolathe/Initialize() + . = ..() component_parts = list() component_parts += new /obj/item/weapon/stock_parts/matter_bin(src) component_parts += new /obj/item/weapon/stock_parts/matter_bin(src) diff --git a/code/modules/research/rdconsole.dm b/code/modules/research/rdconsole.dm index 3e8732c423..38cba96c84 100755 --- a/code/modules/research/rdconsole.dm +++ b/code/modules/research/rdconsole.dm @@ -113,7 +113,7 @@ won't update every console in existence) but it's more of a hassle to do. Also, S.update_connections() break -/obj/machinery/computer/rdconsole/initialize() +/obj/machinery/computer/rdconsole/Initialize() SyncRDevices() . = ..() @@ -642,9 +642,9 @@ won't update every console in existence) but it's more of a hassle to do. Also, continue var/temp_dat for(var/M in D.materials) - temp_dat += ", [D.materials[M]] [CallMaterialName(M)]" + temp_dat += ", [D.materials[M]*linked_lathe.mat_efficiency] [CallMaterialName(M)]" for(var/T in D.chemicals) - temp_dat += ", [D.chemicals[T]*linked_imprinter.mat_efficiency] [CallReagentName(T)]" + temp_dat += ", [D.chemicals[T]*linked_lathe.mat_efficiency] [CallReagentName(T)]" if(temp_dat) temp_dat = " \[[copytext(temp_dat, 3)]\]" if(linked_lathe.canBuild(D)) diff --git a/code/modules/research/server.dm b/code/modules/research/server.dm index a1ad322ba4..7e736980db 100644 --- a/code/modules/research/server.dm +++ b/code/modules/research/server.dm @@ -33,7 +33,7 @@ tot_rating += SP.rating idle_power_usage /= max(1, tot_rating) -/obj/machinery/r_n_d/server/initialize() +/obj/machinery/r_n_d/server/Initialize() . = ..() if(!files) files = new /datum/research(src) diff --git a/code/modules/resleeving/computers.dm b/code/modules/resleeving/computers.dm index b688bf6dca..f4445682dc 100644 --- a/code/modules/resleeving/computers.dm +++ b/code/modules/resleeving/computers.dm @@ -16,7 +16,7 @@ var/synthetic_capable = 1 var/obj/item/weapon/disk/transcore/disk -/obj/machinery/computer/transhuman/resleeving/initialize() +/obj/machinery/computer/transhuman/resleeving/Initialize() . = ..() updatemodules() diff --git a/code/modules/resleeving/designer.dm b/code/modules/resleeving/designer.dm index b8d049da1c..7e545b35fa 100644 --- a/code/modules/resleeving/designer.dm +++ b/code/modules/resleeving/designer.dm @@ -310,7 +310,7 @@ if(href_list["size_multiplier"]) var/new_size = input(user, "Choose your character's size, ranging from 25% to 200%", "Character Preference") as num|null - if(new_size && IsInRange(new_size,25,200)) + if(new_size && ISINRANGE(new_size,25,200)) active_br.sizemult = (new_size/100) preview_icon = null return 1 diff --git a/code/modules/resleeving/machines.dm b/code/modules/resleeving/machines.dm index 69f0cfebd1..87407c04b2 100644 --- a/code/modules/resleeving/machines.dm +++ b/code/modules/resleeving/machines.dm @@ -9,7 +9,7 @@ circuit = /obj/item/weapon/circuitboard/transhuman_clonepod //A full version of the pod -/obj/machinery/clonepod/transhuman/full/initialize() +/obj/machinery/clonepod/transhuman/full/Initialize() . = ..() for(var/i = 1 to container_limit) containers += new /obj/item/weapon/reagent_containers/glass/bottle/biomass(src) @@ -138,7 +138,7 @@ occupant.adjustCloneLoss(-2 * heal_rate) //Premature clones may have brain damage. - occupant.adjustBrainLoss(-(ceil(0.5*heal_rate))) + occupant.adjustBrainLoss(-(CEILING((0.5*heal_rate), 1))) //So clones don't die of oxyloss in a running pod. if(occupant.reagents.get_reagent_amount("inaprovaline") < 30) @@ -488,6 +488,37 @@ return ..() +/obj/machinery/transhuman/resleever/MouseDrop_T(mob/living/carbon/O, mob/user as mob) + if(!istype(O)) + return 0 //not a mob + if(user.incapacitated()) + return 0 //user shouldn't be doing things + if(O.anchored) + return 0 //mob is anchored??? + if(get_dist(user, src) > 1 || get_dist(user, O) > 1) + return 0 //doesn't use adjacent() to allow for non-cardinal (fuck my life) + if(!ishuman(user) && !isrobot(user)) + return 0 //not a borg or human + if(panel_open) + to_chat(user, "Close the maintenance panel first.") + return 0 //panel open + + if(O.buckled) + return 0 + if(O.has_buckled_mobs()) + to_chat(user, span("warning", "\The [O] has other entities attached to it. Remove them first.")) + return + + if(put_mob(O)) + if(O == user) + src.updateUsrDialog() + visible_message("[user] climbs into \the [src].") + else + src.updateUsrDialog() + visible_message("[user] puts [O] into \the [src].") + + add_fingerprint(user) + /obj/machinery/transhuman/resleever/proc/putmind(var/datum/transhuman/mind_record/MR, mode = 1, var/mob/living/carbon/human/override = null) if((!occupant || !istype(occupant) || occupant.stat >= DEAD) && mode == 1) return 0 diff --git a/code/modules/rogueminer_vr/asteroid.dm b/code/modules/rogueminer_vr/asteroid.dm index 4267f5b174..fec6c4aa67 100644 --- a/code/modules/rogueminer_vr/asteroid.dm +++ b/code/modules/rogueminer_vr/asteroid.dm @@ -113,7 +113,7 @@ New() ..() spot_add(2,2,/obj/random/cargopod) //EXTRA loot! - spot_add(2,2,/mob/living/simple_animal/hostile/alien) //GRRR + spot_add(2,2,/mob/living/simple_mob/animal/space/alien) //GRRR //Longer cargo container for higher difficulties /datum/rogue/asteroid/predef/cargo_large @@ -147,4 +147,4 @@ spot_add(4,3,/obj/random/cargopod) //Right loot if(prob(30)) - spot_add(3,3,/mob/living/simple_animal/hostile/alien) //And maybe a friend. \ No newline at end of file + spot_add(3,3,/mob/living/simple_mob/animal/space/alien) //And maybe a friend. diff --git a/code/modules/rogueminer_vr/controller.dm b/code/modules/rogueminer_vr/controller.dm index 5ea0fafed1..881b66cab5 100644 --- a/code/modules/rogueminer_vr/controller.dm +++ b/code/modules/rogueminer_vr/controller.dm @@ -54,22 +54,22 @@ var/datum/controller/rogue/rm_controller = new() ) ///// Monster Lists ///// - var/mobs = list( - "tier1" = list(/mob/living/simple_animal/hostile/carp, /mob/living/simple_animal/hostile/goose), + var/mobs = list(/* + "tier1" = list(/mob/living/simple_mob/hostile/carp, /mob/living/simple_mob/hostile/goose), - "tier2" = list(/mob/living/simple_animal/hostile/carp, /mob/living/simple_animal/hostile/goose), + "tier2" = list(/mob/living/simple_mob/hostile/carp, /mob/living/simple_mob/hostile/goose), - "tier3" = list(/mob/living/simple_animal/hostile/carp, /mob/living/simple_animal/hostile/goose, - /mob/living/simple_animal/hostile/bear, /mob/living/simple_animal/hostile/carp/strong), + "tier3" = list(/mob/living/simple_mob/hostile/carp, /mob/living/simple_mob/hostile/goose, + /mob/living/simple_mob/hostile/bear, /mob/living/simple_mob/hostile/carp/strong), - "tier4" = list(/mob/living/simple_animal/hostile/carp, /mob/living/simple_animal/hostile/goose, /mob/living/simple_animal/hostile/bear, - /mob/living/simple_animal/hostile/carp/strong, /mob/living/simple_animal/hostile/carp/pike/weak), + "tier4" = list(/mob/living/simple_mob/hostile/carp, /mob/living/simple_mob/hostile/goose, /mob/living/simple_mob/hostile/bear, + /mob/living/simple_mob/hostile/carp/strong, /mob/living/simple_mob/hostile/carp/pike/weak), - "tier5" = list(/mob/living/simple_animal/hostile/carp, /mob/living/simple_animal/hostile/bear, /mob/living/simple_animal/hostile/carp/pike/weak, - /mob/living/simple_animal/hostile/carp/strong, /mob/living/simple_animal/hostile/carp/pike), + "tier5" = list(/mob/living/simple_mob/hostile/carp, /mob/living/simple_mob/hostile/bear, /mob/living/simple_mob/hostile/carp/pike/weak, + /mob/living/simple_mob/hostile/carp/strong, /mob/living/simple_mob/hostile/carp/pike), - "tier6" = list(/mob/living/simple_animal/hostile/bear, /mob/living/simple_animal/hostile/carp/strong, - /mob/living/simple_animal/hostile/carp/pike, /mob/living/simple_animal/hostile/carp/pike/weak) + "tier6" = list(/mob/living/simple_mob/hostile/bear, /mob/living/simple_mob/hostile/carp/strong, + /mob/living/simple_mob/hostile/carp/pike, /mob/living/simple_mob/hostile/carp/pike/weak)*/ //VORESTATION AI TEMPORARY REMOVAL ) /datum/controller/rogue/New() diff --git a/code/modules/rogueminer_vr/zone_console.dm b/code/modules/rogueminer_vr/zone_console.dm index bccf96ce85..63e6d323a9 100644 --- a/code/modules/rogueminer_vr/zone_console.dm +++ b/code/modules/rogueminer_vr/zone_console.dm @@ -23,7 +23,7 @@ var/legacy_zone = 0 //Disable scanning and whatnot. var/obj/machinery/computer/shuttle_control/belter/shuttle_control -/obj/machinery/computer/roguezones/initialize() +/obj/machinery/computer/roguezones/Initialize() . = ..() shuttle_control = locate(/obj/machinery/computer/shuttle_control/belter) diff --git a/code/modules/security levels/security levels.dm b/code/modules/security levels/security levels.dm index cad2311461..ff5f96bdde 100644 --- a/code/modules/security levels/security levels.dm +++ b/code/modules/security levels/security levels.dm @@ -1,8 +1,11 @@ /var/security_level = 0 //0 = code green -//1 = code blue -//2 = code red -//3 = code delta +//1 = code yellow +//2 = code violet +//3 = code orange +//4 = code blue +//5 = code red +//6 = code delta //config.alert_desc_blue_downto /var/datum/announcement/priority/security/security_announcement_up = new(do_log = 0, do_newscast = 1, new_sound = sound('sound/misc/notice1.ogg')) @@ -12,6 +15,12 @@ switch(level) if("green") level = SEC_LEVEL_GREEN + if("yellow") + level = SEC_LEVEL_YELLOW + if("violet") + level = SEC_LEVEL_VIOLET + if("orange") + level = SEC_LEVEL_ORANGE if("blue") level = SEC_LEVEL_BLUE if("red") @@ -23,13 +32,31 @@ if(level >= SEC_LEVEL_GREEN && level <= SEC_LEVEL_DELTA && level != security_level) switch(level) if(SEC_LEVEL_GREEN) - security_announcement_down.Announce("[config.alert_desc_green]", "Attention! Security level lowered to green") + security_announcement_down.Announce("[config.alert_desc_green]", "Attention! Alert level lowered to code green.") security_level = SEC_LEVEL_GREEN + if(SEC_LEVEL_YELLOW) + if(security_level < SEC_LEVEL_YELLOW) + security_announcement_up.Announce("[config.alert_desc_yellow_upto]", "Attention! Alert level elevated to yellow") + else + security_announcement_down.Announce("[config.alert_desc_yellow_downto]", "Attention! Alert level lowered to yellow") + security_level = SEC_LEVEL_YELLOW + if(SEC_LEVEL_VIOLET) + if(security_level < SEC_LEVEL_VIOLET) + security_announcement_up.Announce("[config.alert_desc_violet_upto]", "Attention! Alert level elevated to violet") + else + security_announcement_down.Announce("[config.alert_desc_violet_downto]", "Attention! Alert level lowered to violet") + security_level = SEC_LEVEL_VIOLET + if(SEC_LEVEL_ORANGE) + if(security_level < SEC_LEVEL_ORANGE) + security_announcement_up.Announce("[config.alert_desc_orange_upto]", "Attention! Alert level elevated to orange") + else + security_announcement_down.Announce("[config.alert_desc_orange_downto]", "Attention! Alert level lowered to orange") + security_level = SEC_LEVEL_ORANGE if(SEC_LEVEL_BLUE) if(security_level < SEC_LEVEL_BLUE) - security_announcement_up.Announce("[config.alert_desc_blue_upto]", "Attention! Security level elevated to blue") + security_announcement_up.Announce("[config.alert_desc_blue_upto]", "Attention! Alert level elevated to blue") else - security_announcement_down.Announce("[config.alert_desc_blue_downto]", "Attention! Security level lowered to blue") + security_announcement_down.Announce("[config.alert_desc_blue_downto]", "Attention! Alert level lowered to blue") security_level = SEC_LEVEL_BLUE if(SEC_LEVEL_RED) if(security_level < SEC_LEVEL_RED) @@ -42,13 +69,17 @@ if(CC) CC.post_status("alert", "redalert")*/ if(SEC_LEVEL_DELTA) - security_announcement_up.Announce("[config.alert_desc_delta]", "Attention! Delta security level reached!", new_sound = 'sound/effects/siren.ogg') + security_announcement_up.Announce("[config.alert_desc_delta]", "Attention! Delta alert level reached!", new_sound = 'sound/effects/siren.ogg') security_level = SEC_LEVEL_DELTA var/newlevel = get_security_level() for(var/obj/machinery/firealarm/FA in machines) if(FA.z in using_map.contact_levels) FA.set_security_level(newlevel) + for(var/obj/machinery/status_display/FA in machines) + if(FA.z in using_map.contact_levels) + FA.display_alert(newlevel) + FA.mode = 3 if(level >= SEC_LEVEL_RED) atc.reroute_traffic(yes = 1) // Tell them fuck off we're busy. @@ -60,6 +91,12 @@ switch(security_level) if(SEC_LEVEL_GREEN) return "green" + if(SEC_LEVEL_YELLOW) + return "yellow" + if(SEC_LEVEL_VIOLET) + return "violet" + if(SEC_LEVEL_ORANGE) + return "orange" if(SEC_LEVEL_BLUE) return "blue" if(SEC_LEVEL_RED) @@ -71,6 +108,12 @@ switch(num) if(SEC_LEVEL_GREEN) return "green" + if(SEC_LEVEL_YELLOW) + return "yellow" + if(SEC_LEVEL_VIOLET) + return "violet" + if(SEC_LEVEL_ORANGE) + return "orange" if(SEC_LEVEL_BLUE) return "blue" if(SEC_LEVEL_RED) @@ -82,6 +125,12 @@ switch( lowertext(seclevel) ) if("green") return SEC_LEVEL_GREEN + if("yellow") + return SEC_LEVEL_YELLOW + if("violet") + return SEC_LEVEL_VIOLET + if("orange") + return SEC_LEVEL_ORANGE if("blue") return SEC_LEVEL_BLUE if("red") @@ -99,4 +148,10 @@ set_security_level(2) /mob/verb/set_thing3() set_security_level(3) +/mob/verb/set_thing4() + set_security_level(4) +/mob/verb/set_thing5() + set_security_level(5) +/mob/verb/set_thing6() + set_security_level(6) */ \ No newline at end of file diff --git a/code/modules/shieldgen/directional_shield.dm b/code/modules/shieldgen/directional_shield.dm index 519edcea07..9cc0454620 100644 --- a/code/modules/shieldgen/directional_shield.dm +++ b/code/modules/shieldgen/directional_shield.dm @@ -53,10 +53,8 @@ projector = null return ..() -/obj/effect/directional_shield/CanPass(atom/movable/mover, turf/target, height=0, air_group=0) - if(air_group || (height==0)) - return TRUE - else if(istype(mover, /obj/item/projectile)) +/obj/effect/directional_shield/CanPass(atom/movable/mover, turf/target) + if(istype(mover, /obj/item/projectile)) var/obj/item/projectile/P = mover if(istype(P, /obj/item/projectile/test)) // Turrets need to try to kill the shield and so their test bullet needs to penetrate. return TRUE @@ -64,8 +62,6 @@ var/bad_arc = reverse_direction(dir) // Arc of directions from which we cannot block. if(check_shield_arc(src, bad_arc, P)) // This is actually for mobs but it will work for our purposes as well. return FALSE - else - return TRUE return TRUE /obj/effect/directional_shield/bullet_act(var/obj/item/projectile/P) @@ -88,6 +84,8 @@ but allow those projectiles to leave the shield from the inside. Blocking too many damaging projectiles will cause the shield to fail." icon = 'icons/obj/device.dmi' icon_state = "signmaker_sec" + light_range = 4 + light_power = 4 var/active = FALSE // If it's on. var/shield_health = 400 // How much damage the shield blocks before breaking. This is a shared health pool for all shields attached to this projector. var/max_shield_health = 400 // Ditto. This is fairly high, but shields are really big, you can't miss them, and laser carbines pump out so much hurt. @@ -100,14 +98,14 @@ var/low_color = "#FF0000" // Color the shield will drift towards as health is lowered. Deep red. /obj/item/shield_projector/New() - processing_objects += src + START_PROCESSING(SSobj, src) if(always_on) create_shields() ..() /obj/item/shield_projector/Destroy() destroy_shields() - processing_objects -= src + STOP_PROCESSING(SSobj, src) return ..() /obj/item/shield_projector/proc/create_shield(var/newloc, var/new_dir) @@ -152,7 +150,7 @@ // Makes shields become gradually more red as the projector's health decreases. /obj/item/shield_projector/proc/update_shield_colors() // This is done at the projector instead of the shields themselves to avoid needing to calculate this more than once every update. - var/lerp_weight = shield_health / max_shield_health + var/interpolate_weight = shield_health / max_shield_health var/list/low_color_list = hex2rgb(low_color) var/low_r = low_color_list[1] @@ -164,12 +162,14 @@ var/high_g = high_color_list[2] var/high_b = high_color_list[3] - var/new_r = Interpolate(low_r, high_r, weight = lerp_weight) - var/new_g = Interpolate(low_g, high_g, weight = lerp_weight) - var/new_b = Interpolate(low_b, high_b, weight = lerp_weight) + var/new_r = LERP(low_r, high_r, interpolate_weight) + var/new_g = LERP(low_g, high_g, interpolate_weight) + var/new_b = LERP(low_b, high_b, interpolate_weight) var/new_color = rgb(new_r, new_g, new_b) + set_light(light_range, light_power, new_color) + // Now deploy the new color to all the shields. for(var/obj/effect/directional_shield/S in active_shields) S.update_color(new_color) diff --git a/code/modules/shieldgen/emergency_shield.dm b/code/modules/shieldgen/emergency_shield.dm index 1798ebd67f..e764e0b516 100644 --- a/code/modules/shieldgen/emergency_shield.dm +++ b/code/modules/shieldgen/emergency_shield.dm @@ -7,6 +7,7 @@ opacity = 0 anchored = 1 unacidable = 1 + can_atmos_pass = ATMOS_PASS_NO var/const/max_health = 200 var/health = max_health //The shield can only take so much beating (prevents perma-prisons) var/shield_generate_power = 7500 //how much power we use when regenerating @@ -38,10 +39,6 @@ update_nearby_tiles() ..() -/obj/machinery/shield/CanPass(atom/movable/mover, turf/target, height, air_group) - if(!height || air_group) return 0 - else return ..() - /obj/machinery/shield/attackby(obj/item/weapon/W as obj, mob/user as mob) if(!istype(W)) return diff --git a/code/modules/shieldgen/energy_field.dm b/code/modules/shieldgen/energy_field.dm index 023d5fee95..65eb6dc363 100644 --- a/code/modules/shieldgen/energy_field.dm +++ b/code/modules/shieldgen/energy_field.dm @@ -18,6 +18,7 @@ plane = MOB_PLANE layer = ABOVE_MOB_LAYER density = 0 + can_atmos_pass = ATMOS_PASS_DENSITY var/obj/machinery/shield_gen/my_gen = null var/strength = 0 // in Renwicks var/ticks_recovering = 10 @@ -53,6 +54,12 @@ user.setClickCooldown(user.get_attack_speed(W)) ..() +/obj/effect/energy_field/attack_generic(mob/user, damage) + if(damage) + adjust_strength(-damage / 20) + user.do_attack_animation(src) + user.setClickCooldown(user.get_attack_speed()) + /obj/effect/energy_field/attack_hand(var/mob/living/user) impact_effect(3) // Harmless, but still produces the 'impact' effect. ..() @@ -97,15 +104,6 @@ update_icon() update_nearby_tiles() -/obj/effect/energy_field/CanPass(atom/movable/mover, turf/target, height=1.5, air_group = 0) - //Purpose: Determines if the object (or airflow) can pass this atom. - //Called by: Movement, airflow. - //Inputs: The moving atom (optional), target turf, "height" and air group - //Outputs: Boolean if can pass. - - //return (!density || !height || air_group) - return !density - /obj/effect/energy_field/update_icon(var/update_neightbors = 0) overlays.Cut() var/list/adjacent_shields_dir = list() diff --git a/code/modules/shieldgen/handheld_defuser.dm b/code/modules/shieldgen/handheld_defuser.dm index d65a0060a8..7b4fdd786b 100644 --- a/code/modules/shieldgen/handheld_defuser.dm +++ b/code/modules/shieldgen/handheld_defuser.dm @@ -16,7 +16,7 @@ qdel(cell) cell = null if(enabled) - processing_objects.Remove(src) + STOP_PROCESSING(SSobj, src) . = ..() /obj/item/weapon/shield_diffuser/get_cell() @@ -42,9 +42,9 @@ enabled = !enabled update_icon() if(enabled) - processing_objects.Add(src) + START_PROCESSING(SSobj, src) else - processing_objects.Remove(src) + STOP_PROCESSING(SSobj, src) to_chat(usr, "You turn \the [src] [enabled ? "on" : "off"].") /obj/item/weapon/shield_diffuser/examine() diff --git a/code/modules/shieldgen/sheldwallgen.dm b/code/modules/shieldgen/sheldwallgen.dm index 37c55e5911..e6e9bc11d7 100644 --- a/code/modules/shieldgen/sheldwallgen.dm +++ b/code/modules/shieldgen/sheldwallgen.dm @@ -20,7 +20,6 @@ // var/maxshieldload = 200 var/obj/structure/cable/attached // the attached cable var/storedpower = 0 - flags = CONDUCT //There have to be at least two posts, so these are effectively doubled var/power_draw = 30000 //30 kW. How much power is drawn from powernet. Increase this to allow the generator to sustain longer shields, at the cost of more power draw. var/max_stored_power = 50000 //50 kW @@ -317,13 +316,9 @@ return -/obj/machinery/shieldwall/CanPass(atom/movable/mover, turf/target, height=0, air_group=0) - if(air_group || (height==0)) return 1 - +/obj/machinery/shieldwall/CanPass(atom/movable/mover, turf/target) if(istype(mover) && mover.checkpass(PASSGLASS)) return prob(20) - else - if (istype(mover, /obj/item/projectile)) - return prob(10) - else - return !src.density + if(istype(mover, /obj/item/projectile)) + return prob(10) + return !density diff --git a/code/modules/shieldgen/shield_capacitor.dm b/code/modules/shieldgen/shield_capacitor.dm index ae51705984..4006a1cedf 100644 --- a/code/modules/shieldgen/shield_capacitor.dm +++ b/code/modules/shieldgen/shield_capacitor.dm @@ -28,7 +28,7 @@ /obj/machinery/shield_capacitor/emag_act(var/remaining_charges, var/mob/user) if(prob(75)) src.locked = !src.locked - user << "Controls are now [src.locked ? "locked." : "unlocked."]" + to_chat(user, "Controls are now [src.locked ? "locked." : "unlocked."]") . = 1 updateDialog() var/datum/effect/effect/system/spark_spread/s = new /datum/effect/effect/system/spark_spread @@ -41,10 +41,10 @@ var/obj/item/weapon/card/id/C = W if(access_captain in C.access || access_security in C.access || access_engine in C.access) src.locked = !src.locked - user << "Controls are now [src.locked ? "locked." : "unlocked."]" + to_chat(user, "Controls are now [src.locked ? "locked." : "unlocked."]") updateDialog() else - user << "Access denied." + to_chat(user, "Access denied.") else if(W.is_wrench()) src.anchored = !src.anchored playsound(src, W.usesound, 75, 1) @@ -127,7 +127,7 @@ return if( href_list["toggle"] ) if(!active && !anchored) - usr << "The [src] needs to be firmly secured to the floor first." + to_chat(usr, "The [src] needs to be firmly secured to the floor first.") return active = !active if( href_list["charge_rate"] ) @@ -141,13 +141,14 @@ else ..() -/obj/machinery/shield_capacitor/verb/rotate() - set name = "Rotate capacitor clockwise" +/obj/machinery/shield_capacitor/verb/rotate_clockwise() + set name = "Rotate Capacitor Clockwise" set category = "Object" set src in oview(1) if (src.anchored) - usr << "It is fastened to the floor!" + to_chat(usr, "It is fastened to the floor!") return + src.set_dir(turn(src.dir, 270)) - return + return \ No newline at end of file diff --git a/code/modules/shieldgen/shield_gen.dm b/code/modules/shieldgen/shield_gen.dm index de6d535a05..0562bbd9ff 100644 --- a/code/modules/shieldgen/shield_gen.dm +++ b/code/modules/shieldgen/shield_gen.dm @@ -29,7 +29,7 @@ desc = "A machine that generates a field of energy optimized for blocking meteorites when activated. This version comes with a more efficent shield matrix." energy_conversion_rate = 0.0012 -/obj/machinery/shield_gen/initialize() +/obj/machinery/shield_gen/Initialize() if(anchored) for(var/obj/machinery/shield_capacitor/cap in range(1, src)) if(!cap.anchored) @@ -42,7 +42,7 @@ return ..() /obj/machinery/shield_gen/Destroy() - QDEL_NULL_LIST(field) + QDEL_LIST_NULL(field) return ..() /obj/machinery/shield_gen/emag_act(var/remaining_charges, var/mob/user) diff --git a/code/modules/shuttles/escape_pods.dm b/code/modules/shuttles/escape_pods.dm index 43cb6a5d94..e79f5d9b20 100644 --- a/code/modules/shuttles/escape_pods.dm +++ b/code/modules/shuttles/escape_pods.dm @@ -83,7 +83,7 @@ /obj/machinery/embedded_controller/radio/simple_docking_controller/escape_pod_berth name = "escape pod berth controller" -/obj/machinery/embedded_controller/radio/simple_docking_controller/escape_pod_berth/initialize() +/obj/machinery/embedded_controller/radio/simple_docking_controller/escape_pod_berth/Initialize() . = ..() docking_program = new/datum/computer/file/embedded_program/docking/simple/escape_pod(src) program = docking_program diff --git a/code/modules/shuttles/shuttle.dm b/code/modules/shuttles/shuttle.dm index 080f21a524..4ce211ee72 100644 --- a/code/modules/shuttles/shuttle.dm +++ b/code/modules/shuttles/shuttle.dm @@ -37,7 +37,7 @@ supply_controller.shuttle = null . = ..() -/datum/shuttle/proc/process() +/datum/shuttle/process() return /datum/shuttle/proc/init_docking_controllers() @@ -208,13 +208,14 @@ for(var/turf/T in dstturfs) var/turf/D = locate(T.x, throwy - 1, T.z) - for(var/I in T) - if(istype(I,/mob/living)) - var/mob/living/L = I - L.gib() - else if(istype(I,/obj)) - var/obj/O = I - O.forceMove(D) + for(var/atom/movable/AM as mob|obj in T) + AM.Move(D) + + for(var/mob/living/carbon/bug in destination) + bug.gib() + + for(var/mob/living/simple_mob/pest in destination) + pest.gib() origin.move_contents_to(destination, direction=direction) diff --git a/code/modules/shuttles/shuttles_web.dm b/code/modules/shuttles/shuttles_web.dm index c6233d48a0..c717e51adc 100644 --- a/code/modules/shuttles/shuttles_web.dm +++ b/code/modules/shuttles/shuttles_web.dm @@ -88,7 +88,7 @@ if(autopilot_delay % 10 == 0) // Every ten ticks. var/seconds_left = autopilot_delay * 2 if(seconds_left >= 60) // A minute - var/minutes_left = Floor(seconds_left / 60) + var/minutes_left = FLOOR(seconds_left / 60, 1) seconds_left = seconds_left % 60 autopilot_say("Departing in [minutes_left] minute\s[seconds_left ? ", [seconds_left] seconds":""].") else @@ -162,7 +162,7 @@ var/list/my_doors //Should be list("id_tag" = "Pretty Door Name", ...) var/list/my_sensors //Should be list("id_tag" = "Pretty Sensor Name", ...) -/obj/machinery/computer/shuttle_control/web/initialize() +/obj/machinery/computer/shuttle_control/web/Initialize() . = ..() var/area/my_area = get_area(src) if(my_doors) @@ -472,7 +472,7 @@ var/shuttle_name //Text name of the shuttle to connect to var/list/destinations //Make sure this STARTS with a destination that builds a route to one that always exists as an anchor. -/obj/shuttle_connector/initialize() +/obj/shuttle_connector/Initialize() . = ..() SSshuttles.OnDocksInitialized(CALLBACK(src, .proc/setup_routes)) diff --git a/code/modules/spells/aoe_turf/summons.dm b/code/modules/spells/aoe_turf/summons.dm index e8769d8537..f8a6b4094a 100644 --- a/code/modules/spells/aoe_turf/summons.dm +++ b/code/modules/spells/aoe_turf/summons.dm @@ -20,7 +20,7 @@ invocation_type = SpI_SHOUT range = 1 - summon_type = list(/mob/living/simple_animal/hostile/carp) + summon_type = list(/mob/living/simple_mob/animal/space/carp) hud_state = "wiz_carp" @@ -36,6 +36,6 @@ summon_amt = 10 range = 3 - summon_type = list(/mob/living/simple_animal/hostile/creature/vore) // Vorestation Edit + summon_type = list(/mob/living/simple_mob/creature) hud_state = "wiz_creature" \ No newline at end of file diff --git a/code/modules/spells/spell_code.dm b/code/modules/spells/spell_code.dm index afd9bfdfa3..3415ad0ead 100644 --- a/code/modules/spells/spell_code.dm +++ b/code/modules/spells/spell_code.dm @@ -64,7 +64,7 @@ var/list/spells = typesof(/spell) //needed for the badmin verb for now //still_recharging_msg = "[name] is still recharging." charge_counter = charge_max -/spell/proc/process() +/spell/process() spawn while(charge_counter < charge_max) charge_counter++ sleep(1) @@ -198,10 +198,10 @@ var/list/spells = typesof(/spell) //needed for the badmin verb for now if(findNullRod(T)) return 0 - if(istype(user, /mob/living/simple_animal) && holder == user) - var/mob/living/simple_animal/SA = user - if(SA.purge) - SA << "The nullrod's power interferes with your own!" + if(istype(user, /mob/living/simple_mob) && holder == user) + var/mob/living/simple_mob/SM = user + if(SM.purge) + SM << "The nullrod's power interferes with your own!" return 0 if(!src.check_charge(skipcharge, user)) //sees if we can cast based on charges alone diff --git a/code/modules/spells/spell_projectile.dm b/code/modules/spells/spell_projectile.dm index 07adda0081..01e7d163fa 100644 --- a/code/modules/spells/spell_projectile.dm +++ b/code/modules/spells/spell_projectile.dm @@ -7,7 +7,7 @@ var/spell/targeted/projectile/carried penetrating = 0 - kill_count = 10 //set by the duration of the spell + range = 10 //set by the duration of the spell var/proj_trail = 0 //if it leaves a trail var/proj_trail_lifespan = 0 //deciseconds diff --git a/code/modules/spells/spellbook.dm b/code/modules/spells/spellbook.dm index 515453f6a3..1f41ce9e3d 100644 --- a/code/modules/spells/spellbook.dm +++ b/code/modules/spells/spellbook.dm @@ -221,11 +221,6 @@ new /obj/item/clothing/head/helmet/space/void/wizard(get_turf(H)) temp = "You have purchased a suit of wizard armor." max_uses-- - if("staffanimation") - feedback_add_details("wizard_spell_learned","SA") //please do not change the abbreviation to keep data processing consistent. Add a unique id to any new spells - new /obj/item/weapon/gun/energy/staff/animate(get_turf(H)) - temp = "You have purchased a staff of animation." - max_uses-- if("scrying") feedback_add_details("wizard_spell_learned","SO") //please do not change the abbreviation to keep data processing consistent. Add a unique id to any new spells new /obj/item/weapon/scrying(get_turf(H)) diff --git a/code/modules/spells/targeted/projectile/projectile.dm b/code/modules/spells/targeted/projectile/projectile.dm index fef039d191..7181d3c140 100644 --- a/code/modules/spells/targeted/projectile/projectile.dm +++ b/code/modules/spells/targeted/projectile/projectile.dm @@ -29,12 +29,13 @@ If the spell_projectile is seeking, it will update its target every process and projectile.shot_from = user //fired from the user projectile.hitscan = !proj_step_delay - projectile.step_delay = proj_step_delay + projectile.speed = proj_step_delay if(istype(projectile, /obj/item/projectile/spell_projectile)) var/obj/item/projectile/spell_projectile/SP = projectile SP.carried = src //casting is magical - projectile.launch(target, target_zone="chest") - return + projectile.def_zone = check_zone("chest") + projectile.old_style_target(target) + projectile.fire() /spell/targeted/projectile/proc/choose_prox_targets(mob/user = usr, var/atom/movable/spell_holder) var/list/targets = list() diff --git a/code/modules/surgery/implant.dm b/code/modules/surgery/implant.dm index ae0e7610a7..58a322febd 100644 --- a/code/modules/surgery/implant.dm +++ b/code/modules/surgery/implant.dm @@ -207,8 +207,8 @@ BITSET(target.hud_updateflag, IMPLOYAL_HUD) //Handle possessive brain borers. - if(istype(obj,/mob/living/simple_animal/borer)) - var/mob/living/simple_animal/borer/worm = obj + if(istype(obj,/mob/living/simple_mob/animal/borer)) + var/mob/living/simple_mob/animal/borer/worm = obj if(worm.controlling) target.release_control() worm.detatch() diff --git a/code/modules/surgery/other.dm b/code/modules/surgery/other.dm index 56c6731b9a..782074b2ad 100644 --- a/code/modules/surgery/other.dm +++ b/code/modules/surgery/other.dm @@ -201,21 +201,28 @@ var/obj/item/weapon/weldingtool/welder = tool if(!welder.isOn() || !welder.remove_fuel(1,user)) return 0 - return (target_zone == BP_TORSO) && istype(target.back, /obj/item/weapon/rig) && !(target.back.canremove) + return (target_zone == BP_TORSO) && ((istype(target.back, /obj/item/weapon/rig) && !(target.back.canremove)) || (istype(target.belt, /obj/item/weapon/rig) && !(target.belt.canremove))) /datum/surgery_step/hardsuit/begin_step(mob/user, mob/living/carbon/human/target, target_zone, obj/item/tool) - user.visible_message("[user] starts cutting through the support systems of [target]'s [target.back] with \the [tool]." , \ - "You start cutting through the support systems of [target]'s [target.back] with \the [tool].") + var/obj/item/weapon/rig/rig = target.back + if(!istype(rig)) + rig = target.belt + if(!istype(rig)) + return + user.visible_message("[user] starts cutting through the support systems of \the [rig] on [target] with \the [tool]." , \ + "You start cutting through the support systems of \the [rig] on [target] with \the [tool].") ..() /datum/surgery_step/hardsuit/end_step(mob/living/user, mob/living/carbon/human/target, target_zone, obj/item/tool) var/obj/item/weapon/rig/rig = target.back if(!istype(rig)) - return + rig = target.belt + if(!istype(rig)) + return rig.reset() - user.visible_message("[user] has cut through the support systems of [target]'s [rig] with \the [tool].", \ - "You have cut through the support systems of [target]'s [rig] with \the [tool].") + user.visible_message("[user] has cut through the support systems of \the [rig] on [target] with \the [tool].", \ + "You have cut through the support systems of \the [rig] on [target] with \the [tool].") /datum/surgery_step/hardsuit/fail_step(mob/living/user, mob/living/carbon/human/target, target_zone, obj/item/tool) user.visible_message("[user]'s [tool] can't quite seem to get through the metal...", \ - "Your [tool] can't quite seem to get through the metal. It's weakening, though - try again.") + "\The [tool] can't quite seem to get through the metal. It's weakening, though - try again.") diff --git a/code/modules/surgery/slimes.dm b/code/modules/surgery/slimes.dm index ad4c413c8e..e049349f83 100644 --- a/code/modules/surgery/slimes.dm +++ b/code/modules/surgery/slimes.dm @@ -3,10 +3,10 @@ ////////////////////////////////////////////////////////////////// /datum/surgery_step/slime - is_valid_target(mob/living/simple_animal/slime/target) - return istype(target, /mob/living/simple_animal/slime/) + is_valid_target(mob/living/simple_mob/slime/target) + return istype(target, /mob/living/simple_mob/slime/) -/datum/surgery_step/slime/can_use(mob/living/user, mob/living/simple_animal/slime/target, target_zone, obj/item/tool) +/datum/surgery_step/slime/can_use(mob/living/user, mob/living/simple_mob/slime/target, target_zone, obj/item/tool) return target.stat == 2 @@ -21,19 +21,19 @@ min_duration = 30 max_duration = 50 -/datum/surgery_step/slime/cut_flesh/can_use(mob/living/user, mob/living/simple_animal/slime/target, target_zone, obj/item/tool) +/datum/surgery_step/slime/cut_flesh/can_use(mob/living/user, mob/living/simple_mob/slime/target, target_zone, obj/item/tool) return ..() && istype(target) && target.core_removal_stage == 0 -/datum/surgery_step/slime/cut_flesh/begin_step(mob/user, mob/living/simple_animal/slime/target, target_zone, obj/item/tool) +/datum/surgery_step/slime/cut_flesh/begin_step(mob/user, mob/living/simple_mob/slime/target, target_zone, obj/item/tool) user.visible_message("[user] starts cutting through [target]'s flesh with \the [tool].", \ "You start cutting through [target]'s flesh with \the [tool].") -/datum/surgery_step/slime/cut_flesh/end_step(mob/living/user, mob/living/simple_animal/slime/target, target_zone, obj/item/tool) +/datum/surgery_step/slime/cut_flesh/end_step(mob/living/user, mob/living/simple_mob/slime/target, target_zone, obj/item/tool) user.visible_message("[user] cuts through [target]'s flesh with \the [tool].", \ "You cut through [target]'s flesh with \the [tool], revealing its silky innards.") target.core_removal_stage = 1 -/datum/surgery_step/slime/cut_flesh/fail_step(mob/living/user, mob/living/simple_animal/slime/target, target_zone, obj/item/tool) +/datum/surgery_step/slime/cut_flesh/fail_step(mob/living/user, mob/living/simple_mob/slime/target, target_zone, obj/item/tool) user.visible_message("[user]'s hand slips, tearing [target]'s flesh with \the [tool]!", \ "Your hand slips, tearing [target]'s flesh with \the [tool]!") @@ -49,19 +49,19 @@ min_duration = 30 max_duration = 50 -/datum/surgery_step/slime/cut_innards/can_use(mob/living/user, mob/living/simple_animal/slime/target, target_zone, obj/item/tool) +/datum/surgery_step/slime/cut_innards/can_use(mob/living/user, mob/living/simple_mob/slime/target, target_zone, obj/item/tool) return ..() && istype(target) && target.core_removal_stage == 1 -/datum/surgery_step/slime/cut_innards/begin_step(mob/user, mob/living/simple_animal/slime/target, target_zone, obj/item/tool) +/datum/surgery_step/slime/cut_innards/begin_step(mob/user, mob/living/simple_mob/slime/target, target_zone, obj/item/tool) user.visible_message("[user] starts cutting [target]'s silky innards apart with \the [tool].", \ "You start cutting [target]'s silky innards apart with \the [tool].") -/datum/surgery_step/slime/cut_innards/end_step(mob/living/user, mob/living/simple_animal/slime/target, target_zone, obj/item/tool) +/datum/surgery_step/slime/cut_innards/end_step(mob/living/user, mob/living/simple_mob/slime/target, target_zone, obj/item/tool) user.visible_message("[user] cuts [target]'s innards apart with \the [tool], exposing the cores.", \ "You cut [target]'s innards apart with \the [tool], exposing the cores.") target.core_removal_stage = 2 -/datum/surgery_step/slime/cut_innards/fail_step(mob/living/user, mob/living/simple_animal/slime/target, target_zone, obj/item/tool) +/datum/surgery_step/slime/cut_innards/fail_step(mob/living/user, mob/living/simple_mob/slime/target, target_zone, obj/item/tool) user.visible_message("[user]'s hand slips, tearing [target]'s innards with \the [tool]!", \ "Your hand slips, tearing [target]'s innards with \the [tool]!") @@ -76,14 +76,14 @@ min_duration = 50 max_duration = 70 -/datum/surgery_step/slime/saw_core/can_use(mob/living/user, mob/living/simple_animal/slime/target, target_zone, obj/item/tool) +/datum/surgery_step/slime/saw_core/can_use(mob/living/user, mob/living/simple_mob/slime/target, target_zone, obj/item/tool) return ..() && (istype(target) && target.core_removal_stage == 2 && target.cores > 0) //This is being passed a human as target, unsure why. -/datum/surgery_step/slime/saw_core/begin_step(mob/user, mob/living/simple_animal/slime/target, target_zone, obj/item/tool) +/datum/surgery_step/slime/saw_core/begin_step(mob/user, mob/living/simple_mob/slime/target, target_zone, obj/item/tool) user.visible_message("[user] starts cutting out one of [target]'s cores with \the [tool].", \ "You start cutting out one of [target]'s cores with \the [tool].") -/datum/surgery_step/slime/saw_core/end_step(mob/living/user, mob/living/simple_animal/slime/target, target_zone, obj/item/tool) +/datum/surgery_step/slime/saw_core/end_step(mob/living/user, mob/living/simple_mob/slime/target, target_zone, obj/item/tool) target.cores-- user.visible_message("[user] cuts out one of [target]'s cores with \the [tool].",, \ "You cut out one of [target]'s cores with \the [tool]. [target.cores] cores left.") @@ -94,7 +94,7 @@ target.icon_state = "slime extracted" -/datum/surgery_step/slime/saw_core/fail_step(mob/living/user, mob/living/simple_animal/slime/target, target_zone, obj/item/tool) +/datum/surgery_step/slime/saw_core/fail_step(mob/living/user, mob/living/simple_mob/slime/target, target_zone, obj/item/tool) var/datum/gender/T = gender_datums[user.get_visible_gender()] user.visible_message("[user]'s hand slips, causing [T.him] to miss the core!", \ "Your hand slips, causing you to miss the core!") \ No newline at end of file diff --git a/code/modules/tables/interactions.dm b/code/modules/tables/interactions.dm index 19764b2997..e28f54f9e4 100644 --- a/code/modules/tables/interactions.dm +++ b/code/modules/tables/interactions.dm @@ -1,21 +1,19 @@ - -/obj/structure/table/CanPass(atom/movable/mover, turf/target, height=0, air_group=0) - if(air_group || (height==0)) return 1 +/obj/structure/table/CanPass(atom/movable/mover, turf/target) if(istype(mover,/obj/item/projectile)) return (check_cover(mover,target)) if (flipped == 1) if (get_dir(loc, target) == dir) return !density else - return 1 + return TRUE if(istype(mover) && mover.checkpass(PASSTABLE)) - return 1 + return TRUE if(locate(/obj/structure/table/bench) in get_turf(mover)) - return 0 + return FALSE var/obj/structure/table/table = locate(/obj/structure/table) in get_turf(mover) if(table && !table.flipped) - return 1 - return 0 + return TRUE + return FALSE //checks if projectile 'P' from turf 'from' can hit whatever is behind the table. Returns 1 if it can, 0 if bullet stops. /obj/structure/table/proc/check_cover(obj/item/projectile/P, turf/from) diff --git a/code/modules/tables/tables.dm b/code/modules/tables/tables.dm index 6d20b619b0..17d2a8e114 100644 --- a/code/modules/tables/tables.dm +++ b/code/modules/tables/tables.dm @@ -59,7 +59,7 @@ var/list/table_icon_cache = list() /obj/structure/table/blob_act() take_damage(100) -/obj/structure/table/initialize() +/obj/structure/table/Initialize() . = ..() // One table per turf. diff --git a/code/modules/telesci/quantum_pad.dm b/code/modules/telesci/quantum_pad.dm index 1d3eed0785..f36c05ade4 100644 --- a/code/modules/telesci/quantum_pad.dm +++ b/code/modules/telesci/quantum_pad.dm @@ -20,7 +20,7 @@ var/map_pad_id = "" as text //what's my name var/map_pad_link_id = "" as text //who's my friend -/obj/machinery/power/quantumpad/initialize() +/obj/machinery/power/quantumpad/Initialize() . = ..() default_apply_parts() connect_to_network() diff --git a/code/modules/telesci/telesci_computer.dm b/code/modules/telesci/telesci_computer.dm index a80e8e71e9..277463bddc 100644 --- a/code/modules/telesci/telesci_computer.dm +++ b/code/modules/telesci/telesci_computer.dm @@ -40,7 +40,7 @@ ..() user << "There are [crystals.len ? crystals.len : "no"] bluespace crystal\s in the crystal slots." -/obj/machinery/computer/telescience/initialize() +/obj/machinery/computer/telescience/Initialize() . = ..() recalibrate() for(var/i = 1; i <= starting_crystals; i++) @@ -73,7 +73,7 @@ return ..() /obj/machinery/computer/telescience/proc/get_max_allowed_distance() - return Floor(crystals.len * telepad.efficiency * powerCoefficient) + return FLOOR((crystals.len * telepad.efficiency * powerCoefficient), 1) /obj/machinery/computer/telescience/attack_ai(mob/user) src.attack_hand(user) @@ -97,7 +97,7 @@ data["cooldown"] = max(0, min(100, round(teleport_cooldown - world.time) / 10)) data["crystalCount"] = crystals.len data["maxCrystals"] = max_crystals - data["maxPossibleDistance"] = Floor(max_crystals * powerCoefficient * 6); // max efficiency is 6 + data["maxPossibleDistance"] = FLOOR((max_crystals * powerCoefficient * 6), 1); // max efficiency is 6 data["maxAllowedDistance"] = get_max_allowed_distance() data["distance"] = distance @@ -151,12 +151,12 @@ sparks() if(telepad) var/L = get_turf(telepad) - var/blocked = list(/mob/living/simple_animal/hostile) - var/list/hostiles = typesof(/mob/living/simple_animal/hostile) - blocked + var/blocked = list(/mob/living/simple_mob/hostile) + var/list/hostiles = typesof(/mob/living/simple_mob/hostile) - blocked playsound(L, 'sound/effects/phasein.ogg', 100, 1, extrarange = 3, falloff = 5) for(var/i in 1 to rand(1,4)) var/chosen = pick(hostiles) - var/mob/living/simple_animal/hostile/H = new chosen + var/mob/living/simple_mob/hostile/H = new chosen H.forceMove(L) return if(99) @@ -173,7 +173,7 @@ return if(telepad) - var/trueDistance = Clamp(distance + distance_off, 1, get_max_allowed_distance()) + var/trueDistance = CLAMP(distance + distance_off, 1, get_max_allowed_distance()) var/trueRotation = rotation + rotation_off var/datum/projectile_data/proj_data = simple_projectile_trajectory(telepad.x, telepad.y, trueRotation, trueDistance) @@ -283,7 +283,7 @@ updateDialog() /obj/machinery/computer/telescience/proc/teleport(mob/user) - distance = Clamp(distance, 0, get_max_allowed_distance()) + distance = CLAMP(distance, 0, get_max_allowed_distance()) if(rotation == null || distance == null || z_co == null) temp_msg = "ERROR!
      Set a distance, rotation and sector." return @@ -320,15 +320,15 @@ var/new_rot = input("Please input desired bearing in degrees.", name, rotation) as num if(..()) // Check after we input a value, as they could've moved after they entered something return - rotation = Clamp(new_rot, -900, 900) + rotation = CLAMP(new_rot, -900, 900) rotation = round(rotation, 0.01) if(href_list["setdistance"]) var/new_pow = input("Please input desired distance in meters.", name, rotation) as num if(..()) // Check after we input a value, as they could've moved after they entered something return - distance = Clamp(new_pow, 1, get_max_allowed_distance()) - distance = Floor(distance) + distance = CLAMP(new_pow, 1, get_max_allowed_distance()) + distance = FLOOR(distance, 1) if(href_list["setz"]) var/new_z = text2num(href_list["setz"]) diff --git a/code/modules/tension/tension.dm b/code/modules/tension/tension.dm index 913f1d2dff..82151a7e78 100644 --- a/code/modules/tension/tension.dm +++ b/code/modules/tension/tension.dm @@ -9,35 +9,42 @@ /atom/movable/proc/guess_threat_level(var/mob/living/threatened) return 0 -/mob/living/simple_animal +/mob/living/simple_mob var/threat_level = null // Set this if you want an explicit danger rating. -/mob/living/simple_animal/guess_threat_level(var/mob/living/threatened) +/mob/living/simple_mob/guess_threat_level(var/mob/living/threatened) if(threat_level) // If they have a predefined number, use it. return threat_level // Otherwise we need to guess how scary this thing is. var/threat_guess = 0 // First lets consider their attack ability. + var/will_point_blank = FALSE + if(has_AI()) + will_point_blank = ai_holder.pointblank + var/potential_damage = 0 - if(!ranged) //Melee damage. + if(!projectiletype || ( get_dist(src, threatened >= 1) && !will_point_blank ) ) // Melee damage. potential_damage = (melee_damage_lower + melee_damage_upper) / 2 + + // Treat potential_damage as estimated DPS. If the enemy attacks twice as fast as usual, it will double the number. + potential_damage *= 1 SECOND / (base_attack_cooldown + melee_attack_delay) else - if(projectiletype) - var/obj/item/projectile/P = new projectiletype(src) - if(P.nodamage || P.taser_effect) // Tasers are somewhat less scary. - potential_damage = P.agony / 2 - else - potential_damage = P.damage - if(P.damage_type == HALLOSS) // Not sure if any projectiles do this, but can't be too safe. - potential_damage /= 2 - // Rubber bullets, I guess. - potential_damage += P.agony / 2 + var/obj/item/projectile/P = new projectiletype(src) + if(P.nodamage || P.taser_effect) // Tasers are somewhat less scary. + potential_damage = P.agony / 2 + else + potential_damage = P.damage + if(P.damage_type == HALLOSS) // Not sure if any projectiles do this, but can't be too safe. + potential_damage /= 2 + // Rubber bullets, I guess. + potential_damage += P.agony / 2 + qdel(P) - if(rapid) // This makes them shoot three times per cycle. - potential_damage *= 3 + potential_damage *= 1 SECOND / (base_attack_cooldown + ranged_attack_delay) + + // Special attacks are ultra-specific to the mob so a generic threat assessment isn't really possible. - qdel(P) threat_guess += potential_damage // Then consider their defense. @@ -50,11 +57,12 @@ return 0 -/mob/living/simple_animal/get_threat(var/mob/living/threatened) +/mob/living/simple_mob/get_threat(var/mob/living/threatened) . = ..() - if(!hostile) - return 0 // Can't hurt anyone. + if(has_AI()) + if(!ai_holder.hostile) + return 0 // Can't hurt anyone. if(incapacitated(INCAPACITATION_DISABLED)) return 0 // Can't currently hurt you if it's stunned. @@ -86,7 +94,7 @@ // Handle ability to harm. // Being five tiles away from some spiders is a lot less scary than being in melee range of five spiders at once. - if(!ranged) + if(!projectiletype) threat /= max(get_dist(src, threatened), 1) return threat diff --git a/code/modules/tooltip/tooltip.dm b/code/modules/tooltip/tooltip.dm index 1b03157e83..3f7fb158aa 100644 --- a/code/modules/tooltip/tooltip.dm +++ b/code/modules/tooltip/tooltip.dm @@ -87,7 +87,7 @@ Notes: /datum/tooltip/proc/hide() if (queueHide) - schedule_task_with_source_in(1, src, .proc/do_hide) + addtimer(CALLBACK(src, .proc/do_hide), 1) else do_hide() diff --git a/code/modules/turbolift/turbolift.dm b/code/modules/turbolift/turbolift.dm index 395cbe608d..ea9c9e13ab 100644 --- a/code/modules/turbolift/turbolift.dm +++ b/code/modules/turbolift/turbolift.dm @@ -154,12 +154,14 @@ return 0 for(var/turf/T in destination) - for(var/I in T) - if(istype(I, /mob/living)) - var/mob/living/L = I - L.gib() - else if(istype(I,/obj)) - qdel(I) + for(var/atom/movable/AM in T) + if(istype(AM, /mob/living)) + var/mob/living/M = AM + M.gib() + else if(istype(AM, /mob/zshadow)) + AM.Destroy() //prevent deleting shadow without deleting shadow's shadows + else if(AM.simulated && !(istype(AM, /mob/observer))) + qdel(AM) origin.move_contents_to(destination) @@ -180,4 +182,4 @@ // TODO: dummy machine ('lift mechanism') in powered area for functionality/blackout checks. /datum/turbolift/proc/is_functional() - return 1 \ No newline at end of file + return 1 diff --git a/code/modules/turbolift/turbolift_map.dm b/code/modules/turbolift/turbolift_map.dm index 8614f0df85..44082654c6 100644 --- a/code/modules/turbolift/turbolift_map.dm +++ b/code/modules/turbolift/turbolift_map.dm @@ -22,7 +22,7 @@ turbolifts += src ..() -/obj/turbolift_map_holder/initialize() +/obj/turbolift_map_holder/Initialize() . = ..() // Create our system controller. var/datum/turbolift/lift = new() @@ -32,11 +32,11 @@ var/uy = y var/uz = z var/udir = dir - forceMove(null) + moveToNullspace() // These modifiers are used in relation to the origin // to place the system control panels and doors. - var/make_walls = isnull(wall_type) ? FALSE : TRUE + var/make_walls = isnull(wall_type) ? FALSE : TRUE //VOREStation addition: Wall-less elevator var/int_panel_x var/int_panel_y var/ext_panel_x @@ -59,71 +59,71 @@ if(NORTH) - int_panel_x = ux + Floor(lift_size_x/2) - int_panel_y = uy + (make_walls ? 1 : 0) + int_panel_x = ux + FLOOR(lift_size_x/2, 1) + int_panel_y = uy + (make_walls ? 1 : 0) //VOREStation edit: Wall-less elevator ext_panel_x = ux ext_panel_y = ey + 2 door_x1 = ux + 1 - door_y1 = ey + (make_walls ? 0 : 1) + door_y1 = ey + (make_walls ? 0 : 1) //VOREStation edit: Wall-less elevator door_x2 = ex - 1 door_y2 = ey + 1 - light_x1 = ux + (make_walls ? 1 : 0) - light_y1 = uy + (make_walls ? 1 : 0) - light_x2 = ux + lift_size_x - (make_walls ? 1 : 0) - light_y2 = uy + (make_walls ? 1 : 0) + light_x1 = ux + (make_walls ? 1 : 0) //VOREStation edit: Wall-less elevator + light_y1 = uy + (make_walls ? 1 : 0) //VOREStation edit: Wall-less elevator + light_x2 = ux + lift_size_x - (make_walls ? 1 : 0) //VOREStation edit: Wall-less elevator + light_y2 = uy + (make_walls ? 1 : 0) //VOREStation edit: Wall-less elevator if(SOUTH) - int_panel_x = ux + Floor(lift_size_x/2) - int_panel_y = ey - (make_walls ? 1 : 0) + int_panel_x = ux + FLOOR(lift_size_x/2, 1) + int_panel_y = ey - (make_walls ? 1 : 0) //VOREStation edit: Wall-less elevator ext_panel_x = ex ext_panel_y = uy - 2 door_x1 = ux + 1 door_y1 = uy - 1 door_x2 = ex - 1 - door_y2 = uy - (make_walls ? 0 : 1) + door_y2 = uy - (make_walls ? 0 : 1) //VOREStation edit: Wall-less elevator - light_x1 = ux + (make_walls ? 1 : 0) - light_y1 = uy + (make_walls ? 2 : 1) - light_x2 = ux + lift_size_x - (make_walls ? 1 : 0) - light_y2 = uy + lift_size_y - (make_walls ? 1 : 0) + light_x1 = ux + (make_walls ? 1 : 0) //VOREStation edit: Wall-less elevator + light_y1 = uy + (make_walls ? 2 : 1) //VOREStation edit: Wall-less elevator + light_x2 = ux + lift_size_x - (make_walls ? 1 : 0) //VOREStation edit: Wall-less elevator + light_y2 = uy + lift_size_y - (make_walls ? 1 : 0) //VOREStation edit: Wall-less elevator if(EAST) - int_panel_x = ux + (make_walls ? 1 : 0) - int_panel_y = uy + Floor(lift_size_y/2) + int_panel_x = ux+(make_walls ? 1 : 0) //VOREStation edit: Wall-less elevator + int_panel_y = uy + FLOOR(lift_size_y/2, 1) ext_panel_x = ex+2 ext_panel_y = ey - door_x1 = ex + (make_walls ? 0 : 1) + door_x1 = ex + (make_walls ? 0 : 1) //VOREStation edit: Wall-less elevator door_y1 = uy + 1 door_x2 = ex + 1 door_y2 = ey - 1 - light_x1 = ux + (make_walls ? 1 : 0) - light_y1 = uy + (make_walls ? 1 : 0) - light_x2 = ux + (make_walls ? 1 : 0) - light_y2 = uy + lift_size_x - (make_walls ? 1 : 0) + light_x1 = ux + (make_walls ? 1 : 0) //VOREStation edit: Wall-less elevator + light_y1 = uy + (make_walls ? 1 : 0) //VOREStation edit: Wall-less elevator + light_x2 = ux + (make_walls ? 1 : 0) //VOREStation edit: Wall-less elevator + light_y2 = uy + lift_size_x - (make_walls ? 1 : 0) //VOREStation edit: Wall-less elevator if(WEST) - int_panel_x = ex - (make_walls ? 1 : 0) - int_panel_y = uy + Floor(lift_size_y/2) + int_panel_x = ex-(make_walls ? 1 : 0) //VOREStation edit: Wall-less elevator + int_panel_y = uy + FLOOR(lift_size_y/2, 1) ext_panel_x = ux-2 ext_panel_y = uy door_x1 = ux - 1 door_y1 = uy + 1 - door_x2 = ux - (make_walls ? 0 : 1) + door_x2 = ux - (make_walls ? 0 : 1) //VOREStation edit: Wall-less elevator door_y2 = ey - 1 - light_x1 = ux + lift_size_x - (make_walls ? 1 : 0) - light_y1 = uy + (make_walls ? 1 : 0) - light_x2 = ux + lift_size_x - (make_walls ? 1 : 0) - light_y2 = uy + lift_size_y - (make_walls ? 1 : 0) + light_x1 = ux + lift_size_x - (make_walls ? 1 : 0) //VOREStation edit: Wall-less elevator + light_y1 = uy + (make_walls ? 1 : 0) //VOREStation edit: Wall-less elevator + light_x2 = ux + lift_size_x - (make_walls ? 1 : 0) //VOREStation edit: Wall-less elevator + light_y2 = uy + lift_size_y - (make_walls ? 1 : 0) //VOREStation edit: Wall-less elevator // Generate each floor and store it in the controller datum. for(var/cz = uz;cz<=ez;cz++) @@ -146,7 +146,7 @@ // Update path appropriately if needed. var/swap_to = /turf/simulated/open if(cz == uz) // Elevator. - if(wall_type && (tx == ux || ty == uy || tx == ex || ty == ey) && !(tx >= door_x1 && tx <= door_x2 && ty >= door_y1 && ty <= door_y2)) + if(wall_type && (tx == ux || ty == uy || tx == ex || ty == ey) && !(tx >= door_x1 && tx <= door_x2 && ty >= door_y1 && ty <= door_y2)) //VOREStation edit: Wall-less elevator swap_to = wall_type else swap_to = floor_type diff --git a/code/modules/vehicles/train.dm b/code/modules/vehicles/train.dm index 6db4400f81..c66bfee0c4 100644 --- a/code/modules/vehicles/train.dm +++ b/code/modules/vehicles/train.dm @@ -22,7 +22,7 @@ //------------------------------------------- // Standard procs //------------------------------------------- -/obj/vehicle/train/initialize() +/obj/vehicle/train/Initialize() . = ..() for(var/obj/vehicle/train/T in orange(1, src)) latch(T) diff --git a/code/modules/vehicles/vehicle.dm b/code/modules/vehicles/vehicle.dm index cac6065b64..1bef7d41ea 100644 --- a/code/modules/vehicles/vehicle.dm +++ b/code/modules/vehicles/vehicle.dm @@ -164,6 +164,10 @@ ..() healthcheck() +/obj/vehicle/proc/adjust_health(amount) + health = between(0, health + amount, maxhealth) + healthcheck() + /obj/vehicle/ex_act(severity) switch(severity) if(1.0) diff --git a/code/modules/ventcrawl/ventcrawl.dm b/code/modules/ventcrawl/ventcrawl.dm index 1a4271050d..a306caea19 100644 --- a/code/modules/ventcrawl/ventcrawl.dm +++ b/code/modules/ventcrawl/ventcrawl.dm @@ -9,10 +9,11 @@ var/list/ventcrawl_machinery = list( /obj/item/device/radio/borg, /obj/item/weapon/holder, /obj/machinery/camera, - /mob/living/simple_animal/borer, - /obj/belly, //VOREStation Edit, + /obj/belly, /obj/screen ) + //VOREStation Edit : added /obj/belly, to this list, travis is complaining about this in his indentation check + //mob/living/simple_mob/borer, //VORESTATION AI TEMPORARY REMOVAL REPLACE BACK IN LIST WHEN RESOLVED //VOREStation Edit /mob/living/var/list/icon/pipes_shown = list() /mob/living/var/last_played_vent @@ -38,7 +39,7 @@ var/list/ventcrawl_machinery = list( add_ventcrawl(loc) client.screen += global_hud.centermarker -/mob/living/simple_animal/slime/can_ventcrawl() +/mob/living/simple_mob/slime/xenobio/can_ventcrawl() if(victim) to_chat(src, "You cannot ventcrawl while feeding.") return FALSE @@ -70,11 +71,6 @@ var/list/ventcrawl_machinery = list( return 1 return ..() -/mob/living/simple_animal/spiderbot/is_allowed_vent_crawl_item(var/obj/item/carried_item) - if(carried_item == held_item) - return 1 - return ..() - /mob/living/proc/ventcrawl_carry() for(var/atom/A in contents) if(!is_allowed_vent_crawl_item(A)) diff --git a/code/modules/virus2/admin.dm b/code/modules/virus2/admin.dm index dc10bc85f9..e2821db1a9 100644 --- a/code/modules/virus2/admin.dm +++ b/code/modules/virus2/admin.dm @@ -15,7 +15,7 @@ return 1 -/datum/disease2/disease/get_view_variables_header() +/datum/disease2/disease/vv_get_header() . = list() for(var/datum/disease2/effectholder/E in effects) . += "[E.stage]: [E.effect.name]" diff --git a/code/modules/virus2/items_devices.dm b/code/modules/virus2/items_devices.dm index ae56c35087..08f688fbc3 100644 --- a/code/modules/virus2/items_devices.dm +++ b/code/modules/virus2/items_devices.dm @@ -6,7 +6,6 @@ icon_state = "health" w_class = ITEMSIZE_SMALL item_state = "electronic" - flags = CONDUCT /obj/item/device/antibody_scanner/attack(mob/M as mob, mob/user as mob) if(!istype(M,/mob/living/carbon/)) diff --git a/code/modules/vore/appearance/sprite_accessories_vr.dm b/code/modules/vore/appearance/sprite_accessories_vr.dm index 4c8e97850d..7b37c1acdf 100644 --- a/code/modules/vore/appearance/sprite_accessories_vr.dm +++ b/code/modules/vore/appearance/sprite_accessories_vr.dm @@ -1,1494 +1,1512 @@ -/* - Hello and welcome to VOREStation sprite_accessories: For a more general overview - please read sprite_accessories.dm. This file is for ears and tails. - This is intended to be friendly for people with little to no actual coding experience. - !!WARNING!!: changing existing accessory information can be VERY hazardous to savefiles, - to the point where you may completely corrupt a server's savefiles. Please refrain - from doing this unless you absolutely know what you are doing, and have defined a - conversion in savefile.dm -*/ - -// Add Additional variable onto sprite_accessory -/datum/sprite_accessory - // Ckey of person allowed to use this, if defined. - var/list/ckeys_allowed = null - -/* -//////////////////////////// -/ =--------------------= / -/ == Ear Definitions == / -/ =--------------------= / -//////////////////////////// -*/ -/datum/sprite_accessory/ears - name = "You should not see this..." - icon = 'icons/mob/vore/ears_vr.dmi' - do_colouration = 0 // Set to 1 to blend (ICON_ADD) hair color - - var/color_blend_mode = ICON_ADD // Only appliciable if do_coloration = 1 - var/extra_overlay // Icon state of an additional overlay to blend in. - var/desc = "You should not see this..." - -// Ears avaliable to anyone - -/datum/sprite_accessory/ears/squirrel_orange - name = "squirel, orange" - desc = "" - icon_state = "squirrel-orange" - -/datum/sprite_accessory/ears/squirrel_red - name = "squirrel, red" - desc = "" - icon_state = "squirrel-red" - -/datum/sprite_accessory/ears/bunny_white - name = "bunny, white" - desc = "" - icon_state = "bunny" - -/datum/sprite_accessory/ears/bear_brown - name = "bear, brown" - desc = "" - icon_state = "bear-brown" - -/datum/sprite_accessory/ears/bear_panda - name = "bear, panda" - desc = "" - icon_state = "panda" - -/datum/sprite_accessory/ears/wolf_grey - name = "wolf, grey" - desc = "" - icon_state = "wolf-grey" - -/datum/sprite_accessory/ears/wolf_green - name = "wolf, green" - desc = "" - icon_state = "wolf-green" - -/datum/sprite_accessory/ears/wisewolf - name = "wolf, wise" - desc = "" - icon_state = "wolf-wise" - -/datum/sprite_accessory/ears/mouse_grey - name = "mouse, grey" - desc = "" - icon_state = "mouse-grey" - -/datum/sprite_accessory/ears/bee - name = "bee antennae" - desc = "" - icon_state = "bee" - -/datum/sprite_accessory/ears/antennae - name = "antennae, colorable" - desc = "" - icon_state = "antennae" - do_colouration = 1 - color_blend_mode = ICON_MULTIPLY - -/datum/sprite_accessory/ears/curly_bug - name = "curly antennae, colorable" - desc = "" - icon_state = "curly_bug" - do_colouration = 1 - color_blend_mode = ICON_MULTIPLY - -/datum/sprite_accessory/ears/dual_robot - name = "synth antennae, colorable" - desc = "" - icon_state = "dual_robot_antennae" - do_colouration = 1 - color_blend_mode = ICON_MULTIPLY - -/datum/sprite_accessory/ears/right_robot - name = "right synth, colorable" - desc = "" - icon_state = "right_robot_antennae" - do_colouration = 1 - color_blend_mode = ICON_MULTIPLY - -/datum/sprite_accessory/ears/left_robot - name = "left synth, colorable" - desc = "" - icon_state = "left_robot_antennae" - do_colouration = 1 - color_blend_mode = ICON_MULTIPLY - -/datum/sprite_accessory/ears/oni_h1 - name = "oni horns" - desc = "" - icon_state = "oni-h1" - -/datum/sprite_accessory/ears/oni_h1_c - name = "oni horns, colorable" - desc = "" - icon_state = "oni-h1_c" - do_colouration = 1 - color_blend_mode = ICON_MULTIPLY - -/datum/sprite_accessory/ears/demon_horns1 - name = "demon horns" - desc = "" - icon_state = "demon-horns1" - -/datum/sprite_accessory/ears/demon_horns1_c - name = "demon horns, colorable" - desc = "" - icon_state = "demon-horns1_c" - do_colouration = 1 - color_blend_mode = ICON_MULTIPLY - -/datum/sprite_accessory/ears/demon_horns2 - name = "demon horns, colorable(outward)" - desc = "" - icon_state = "demon-horns2" - do_colouration = 1 - color_blend_mode = ICON_MULTIPLY - -/datum/sprite_accessory/ears/dragon_horns - name = "dragon horns, colorable" - desc = "" - icon_state = "dragon-horns" - do_colouration = 1 - color_blend_mode = ICON_MULTIPLY - -/datum/sprite_accessory/ears/foxears - name = "highlander zorren ears" - desc = "" - icon_state = "foxears" - -/datum/sprite_accessory/ears/fenears - name = "flatland zorren ears" - desc = "" - icon_state = "fenears" - -/datum/sprite_accessory/ears/sergal //Redundant - name = "Sergal ears" - icon_state = "serg_plain_s" - -/datum/sprite_accessory/ears/foxearshc - name = "highlander zorren ears, colorable" - desc = "" - icon_state = "foxearshc" - do_colouration = 1 - color_blend_mode = ICON_MULTIPLY - -/datum/sprite_accessory/ears/fenearshc - name = "flatland zorren ears, colorable" - desc = "" - icon_state = "fenearshc" - extra_overlay = "fenears-inner" - do_colouration = 1 - color_blend_mode = ICON_MULTIPLY - -/datum/sprite_accessory/ears/sergalhc - name = "Sergal ears, colorable" - icon_state = "serg_plain_s" - do_colouration = 1 - color_blend_mode = ICON_MULTIPLY - -/datum/sprite_accessory/ears/mousehc - name = "mouse, colorable" - desc = "" - icon_state = "mouse" - do_colouration = 1 - color_blend_mode = ICON_MULTIPLY - extra_overlay = "mouseinner" - -/datum/sprite_accessory/ears/mousehcno - name = "mouse, colorable, no inner" - desc = "" - icon_state = "mouse" - do_colouration = 1 - color_blend_mode = ICON_MULTIPLY - -/datum/sprite_accessory/ears/wolfhc - name = "wolf, colorable" - desc = "" - icon_state = "wolf" - do_colouration = 1 - color_blend_mode = ICON_MULTIPLY - extra_overlay = "wolfinner" - -/datum/sprite_accessory/ears/bearhc - name = "bear, colorable" - desc = "" - icon_state = "bear" - do_colouration = 1 - color_blend_mode = ICON_MULTIPLY - -/datum/sprite_accessory/ears/smallbear - name = "small bear" - desc = "" - icon_state = "smallbear" - do_colouration = 1 - color_blend_mode = ICON_MULTIPLY - -/datum/sprite_accessory/ears/squirrelhc - name = "squirrel, colorable" - desc = "" - icon_state = "squirrel" - do_colouration = 1 - color_blend_mode = ICON_MULTIPLY - -/datum/sprite_accessory/ears/kittyhc - name = "kitty, colorable" - desc = "" - icon_state = "kitty" - do_colouration = 1 - color_blend_mode = ICON_MULTIPLY - extra_overlay = "kittyinner" - -/datum/sprite_accessory/ears/bunnyhc - name = "bunny, colorable" - desc = "" - icon_state = "bunny" - do_colouration = 1 - color_blend_mode = ICON_MULTIPLY - -/datum/sprite_accessory/ears/antlers - name = "antlers" - desc = "" - icon_state = "antlers" - do_colouration = 1 - color_blend_mode = ICON_MULTIPLY - -/datum/sprite_accessory/ears/antlers_e - name = "antlers with ears" - desc = "" - icon_state = "cow-nohorns" - do_colouration = 1 - color_blend_mode = ICON_MULTIPLY - extra_overlay = "antlers_mark" - -/datum/sprite_accessory/ears/smallantlers - name = "small antlers" - desc = "" - icon_state = "smallantlers" - do_colouration = 1 - color_blend_mode = ICON_MULTIPLY - -/datum/sprite_accessory/ears/smallantlers_e - name = "small antlers with ears" - desc = "" - icon_state = "smallantlers" - do_colouration = 1 - color_blend_mode = ICON_MULTIPLY - extra_overlay = "deer" - -/datum/sprite_accessory/ears/deer - name = "deer ears" - desc = "" - icon_state = "deer" - do_colouration = 1 - color_blend_mode = ICON_MULTIPLY - -/datum/sprite_accessory/ears/cow - name = "cow, horns" - desc = "" - icon_state = "cow" - -/datum/sprite_accessory/ears/cowc - name = "cow, horns, colorable" - desc = "" - icon_state = "cow-c" - do_colouration = 1 - color_blend_mode = ICON_MULTIPLY - -/datum/sprite_accessory/ears/cow_nohorns - name = "cow, no horns" - desc = "" - icon_state = "cow-nohorns" - do_colouration = 1 - color_blend_mode = ICON_MULTIPLY - -/datum/sprite_accessory/ears/caprahorns - name = "caprine horns" - desc = "" - icon_state = "caprahorns" - do_colouration = 1 - color_blend_mode = ICON_MULTIPLY - -/datum/sprite_accessory/ears/otie - name = "otie, colorable" - desc = "" - icon_state = "otie" - do_colouration = 1 - color_blend_mode = ICON_MULTIPLY - extra_overlay = "otie-inner" - -/datum/sprite_accessory/ears/zears - name = "jagged ears" - desc = "" - icon_state = "zears" - do_colouration = 1 - color_blend_mode = ICON_MULTIPLY - -/datum/sprite_accessory/ears/elfs - name = "elven ears" - desc = "" - icon_state = "elfs" - do_colouration = 1 - color_blend_mode = ICON_MULTIPLY - -/datum/sprite_accessory/ears/sleek - name = "sleek ears" - desc = "" - icon_state = "sleek" - do_colouration = 1 - color_blend_mode = ICON_MULTIPLY - -/datum/sprite_accessory/ears/drake - name = "drake frills" - desc = "" - icon_state = "drake" - do_colouration = 1 - color_blend_mode = ICON_MULTIPLY - -/datum/sprite_accessory/ears/vulp - name = "vulpkanin, dual-color" - desc = "" - icon_state = "vulp" - do_colouration = 1 - color_blend_mode = ICON_MULTIPLY - extra_overlay = "vulp-inner" - -/datum/sprite_accessory/ears/bunny_floppy - name = "floopy bunny ears (colorable)" - desc = "" - icon_state = "floppy_bun" - do_colouration = 1 - color_blend_mode = ICON_MULTIPLY - -/datum/sprite_accessory/ears/teshari - name = "Teshari (colorable fluff)" - desc = "" - icon_state = "teshari" - do_colouration = 1 - color_blend_mode = ICON_MULTIPLY - extra_overlay = "teshariinner" - -/datum/sprite_accessory/ears/tesharihigh - name = "Teshari upper ears (colorable fluff)" - desc = "" - icon_state = "tesharihigh" - do_colouration = 1 - color_blend_mode = ICON_MULTIPLY - extra_overlay = "tesharihighinner" - -/datum/sprite_accessory/ears/tesharilow - name = "Teshari lower ears (colorable fluff)" - desc = "" - icon_state = "tesharilow" - do_colouration = 1 - color_blend_mode = ICON_MULTIPLY - extra_overlay = "tesharilowinner" - - -// Special snowflake ears go below here. - -/datum/sprite_accessory/ears/molenar_kitsune - name = "quintail kitsune ears (Molenar)" - desc = "" - icon_state = "molenar-kitsune" - ckeys_allowed = list("molenar") - -/datum/sprite_accessory/ears/lilimoth_antennae - name = "citheronia antennae (Kira72)" - desc = "" - icon_state = "lilimoth_antennae" - ckeys_allowed = list("kira72") - -/datum/sprite_accessory/ears/molenar_deathclaw - name = "deathclaw ears (Molenar)" - desc = "" - icon_state = "molenar-deathclaw" - ckeys_allowed = list("molenar") - -/datum/sprite_accessory/ears/miria_fluffdragon - name = "fluffdragon ears (Miria Masters)" - desc = "" - icon_state = "miria-fluffdragonears" - ckeys_allowed = list("miriamasters") - -/datum/sprite_accessory/ears/miria_kitsune - name = "kitsune ears (Miria Masters)" - desc = "" - icon_state = "miria-kitsuneears" - ckeys_allowed = list("miriamasters") - -/datum/sprite_accessory/ears/runac - name = "fennecsune ears (Runac)" - desc = "" - icon_state = "runac" - ckeys_allowed = list("rebcom1807") - -/datum/sprite_accessory/ears/kerena - name = "wingwolf ears (Kerena)" - desc = "" - icon_state = "kerena" - ckeys_allowed = list("somekindofpony") - -/datum/sprite_accessory/ears/rosey - name = "tritail kitsune ears (Rosey)" - desc = "" - icon_state = "rosey" - ckeys_allowed = list("joey4298") - -/datum/sprite_accessory/ears/aronai - name = "aronai ears/head (Aronai)" - desc = "" - icon_state = "aronai" - ckeys_allowed = list("arokha") - -/datum/sprite_accessory/ears/holly - name = "tigress ears (Holly Sharp)" - desc = "" - icon_state = "tigressears" - ckeys_allowed = list("hoodoo") - -/datum/sprite_accessory/ears/molenar_inkling - name = "teal mature inkling hair (Kari Akiren)" - desc = "" - icon_state = "molenar-tentacle" - ckeys_allowed = list("molenar") - -/datum/sprite_accessory/ears/shock - name = "pharoah hound ears (Shock Diamond)" - desc = "" - icon_state = "shock" - ckeys_allowed = list("icowom","cameron653") - -/datum/sprite_accessory/ears/alurane - name = "alurane ears/hair (Pumila)" - desc = "" - icon_state = "alurane-ears" - ckeys_allowed = list("natje") - -/* -//////////////////////////// -/ =--------------------= / -/ == Wing Definitions == / -/ =--------------------= / -//////////////////////////// -*/ -/datum/sprite_accessory/wing - name = "You should not see this..." - icon = 'icons/mob/vore/wings_vr.dmi' - do_colouration = 0 //Set to 1 to enable coloration using the tail color. - - var/color_blend_mode = ICON_ADD // Only appliciable if do_coloration = 1 - var/extra_overlay // Icon state of an additional overlay to blend in. - var/clothing_can_hide = 1 // If true, clothing with HIDETAIL hides it. If the clothing is bulky enough to hide a tail, it should also hide wings. - // var/show_species_tail = 1 // Just so // TODO - Seems not needed ~Leshana - var/desc = "You should not see this..." - var/ani_state // State when flapping/animated - var/extra_overlay_w // Flapping state for extra overlay - -/datum/sprite_accessory/wing/shock //Unable to split the tail from the wings in the sprite, so let's just classify it as wings. - name = "pharoah hound tail (Shock Diamond)" - desc = "" - icon_state = "shock" - ckeys_allowed = list("icowom") - -/datum/sprite_accessory/wing/featheredlarge //Made by Natje! - name = "large feathered wings (colorable)" - desc = "" - icon_state = "feathered2" - do_colouration = 1 - color_blend_mode = ICON_MULTIPLY - -/datum/sprite_accessory/wing/spider_legs //Not really /WINGS/ but they protrude from the back, kinda. Might as well have them here. - name = "spider legs" - desc = "" - icon_state = "spider-legs" - color_blend_mode = ICON_MULTIPLY - -/datum/sprite_accessory/wing/moth - name = "moth wings" - desc = "" - icon_state = "moth" - -/datum/sprite_accessory/wing/mothc - name = "moth wings, colorable" - desc = "" - icon_state = "moth" - do_colouration = 1 - color_blend_mode = ICON_MULTIPLY - -/datum/sprite_accessory/wing/citheroniamoth - name = "citheronia wings" - desc = "" - icon_state = "citheronia_wings" - ckeys_allowed = list("kira72") - -/datum/sprite_accessory/wing/feathered - name = "feathered wings, colorable" - desc = "" - icon_state = "feathered" - do_colouration = 1 - color_blend_mode = ICON_MULTIPLY - -/datum/sprite_accessory/wing/feathered_medium - name = "medium feathered wings, colorable" // Keekenox made these feathery things with a little bit more shape to them than the other wings. They are medium sized wing boys. - desc = "" - icon_state = "feathered3" - do_colouration = 1 - color_blend_mode = ICON_MULTIPLY - -/datum/sprite_accessory/wing/bat_black - name = "bat wings, black" - desc = "" - icon_state = "bat-black" - -/datum/sprite_accessory/wing/bat_color - name = "bat wings, colorable" - desc = "" - icon_state = "bat-color" - do_colouration = 1 - -/datum/sprite_accessory/wing/bat_red - name = "bat wings, red" - desc = "" - icon_state = "bat-red" - -/datum/sprite_accessory/wing/harpywings - name = "harpy wings, colorable" - desc = "" - icon_state = "harpywings" - do_colouration = 1 - color_blend_mode = ICON_MULTIPLY - -/datum/sprite_accessory/wing/feathered - name = "feathered wings, colorable" - desc = "" - icon_state = "feathered" - do_colouration = 1 - color_blend_mode = ICON_MULTIPLY - -/datum/sprite_accessory/wing/beewings - name = "bee wings" - desc = "" - icon_state = "beewings" - -/datum/sprite_accessory/wing/sepulchre - name = "demon wings (Sepulchre)" - desc = "" - icon_state = "sepulchre_wings" - ckeys_allowed = list("sepulchre") - -/datum/sprite_accessory/wing/miria_fluffdragon - name = "fluffdragon wings (Miria Masters)" - desc = "" - icon_state = "miria-fluffdragontail" - ckeys_allowed = list("miriamasters") - -/datum/sprite_accessory/wing/scree - name = "green taj wings (Scree)" - desc = "" - icon_state = "scree-wings" - ckeys_allowed = list("scree") - -/datum/sprite_accessory/wing/liquidfirefly_gazer //I g-guess this could be considered wings? - name = "gazer eyestalks" - desc = "" - icon_state = "liquidfirefly-eyestalks" - //ckeys_allowed = list("liquidfirefly","seiga") //At request. - -/datum/sprite_accessory/wing/moth_full - name = "moth antenna and wings" - desc = "" - icon_state = "moth_full" - -/datum/sprite_accessory/wing/kerena - name = "wingwolf wings (Kerena)" - desc = "" - icon_state = "kerena-wings" - ckeys_allowed = list("somekindofpony") - -/datum/sprite_accessory/wing/snag - name = "xenomorph backplate" - desc = "" - icon_state = "snag-backplate" - -/datum/sprite_accessory/wing/nevrean - name = "nevrean wings/fantail" - desc = "" - icon_state = "nevrean_s" - do_colouration = 1 - color_blend_mode = ICON_MULTIPLY - -/* -//////////////////////////// -/ =--------------------= / -/ == Tail Definitions == / -/ =--------------------= / -//////////////////////////// -*/ -/datum/sprite_accessory/tail - name = "You should not see this..." - icon = 'icons/mob/vore/tails_vr.dmi' - do_colouration = 0 //Set to 1 to enable coloration using the tail color. - - var/color_blend_mode = ICON_ADD // Only appliciable if do_coloration = 1 - var/extra_overlay // Icon state of an additional overlay to blend in. - var/show_species_tail = 0 // If false, do not render species' tail. - var/clothing_can_hide = 1 // If true, clothing with HIDETAIL hides it - var/desc = "You should not see this..." - var/ani_state // State when wagging/animated - var/extra_overlay_w // Wagging state for extra overlay - -/datum/sprite_accessory/tail/invisible - name = "hide species-sprite tail" - icon = null - icon_state = null - -/datum/sprite_accessory/tail/squirrel_orange - name = "squirel, orange" - desc = "" - icon_state = "squirrel-orange" - -/datum/sprite_accessory/tail/squirrel_red - name = "squirrel, red" - desc = "" - icon_state = "squirrel-red" - -/datum/sprite_accessory/tail/squirrel - name = "squirrel, colorable" - desc = "" - icon_state = "squirrel" - do_colouration = 1 - color_blend_mode = ICON_MULTIPLY - -/datum/sprite_accessory/tail/kitty - name = "kitty, colorable, downwards" - desc = "" - icon_state = "kittydown" - do_colouration = 1 - color_blend_mode = ICON_MULTIPLY - -/datum/sprite_accessory/tail/kittyup - name = "kitty, colorable, upwards" - desc = "" - icon_state = "kittyup" - do_colouration = 1 - color_blend_mode = ICON_MULTIPLY - -/datum/sprite_accessory/tail/tiger_white - name = "tiger, colorable" - desc = "" - icon_state = "tiger" - do_colouration = 1 - color_blend_mode = ICON_MULTIPLY - extra_overlay = "tigerinnerwhite" - -/datum/sprite_accessory/tail/stripey - name = "stripey taj, colorable" - desc = "" - icon_state = "stripeytail" - do_colouration = 1 - color_blend_mode = ICON_MULTIPLY - extra_overlay = "stripeytail_mark" - -/datum/sprite_accessory/tail/stripeytail_brown - name = "stripey taj, brown" - desc = "" - icon_state = "stripeytail-brown" - -/datum/sprite_accessory/tail/bunny - name = "bunny, colorable" - desc = "" - icon_state = "bunny" - do_colouration = 1 - -/datum/sprite_accessory/tail/bear_brown - name = "bear, brown" - desc = "" - icon_state = "bear-brown" - -/datum/sprite_accessory/tail/bear - name = "bear, colorable" - desc = "" - icon_state = "bear" - do_colouration = 1 - color_blend_mode = ICON_MULTIPLY - -/datum/sprite_accessory/tail/dragon - name = "dragon, colorable" - desc = "" - icon_state = "dragon" - do_colouration = 1 - color_blend_mode = ICON_MULTIPLY - -/datum/sprite_accessory/tail/wolf_grey - name = "wolf, grey" - desc = "" - icon_state = "wolf-grey" - -/datum/sprite_accessory/tail/wolf_green - name = "wolf, green" - desc = "" - icon_state = "wolf-green" - -/datum/sprite_accessory/tail/wisewolf - name = "wolf, wise" - desc = "" - icon_state = "wolf-wise" - -/datum/sprite_accessory/tail/blackwolf - name = "wolf, black" - desc = "" - icon_state = "wolf" - -/datum/sprite_accessory/tail/wolf - name = "wolf, colorable" - desc = "" - icon_state = "wolf" - do_colouration = 1 - color_blend_mode = ICON_MULTIPLY - extra_overlay = "wolfinner" - -/datum/sprite_accessory/tail/mouse_pink - name = "mouse, pink" - desc = "" - icon_state = "mouse-pink" - -/datum/sprite_accessory/tail/mouse - name = "mouse, colorable" - desc = "" - icon_state = "mouse" - do_colouration = 1 - color_blend_mode = ICON_MULTIPLY - -/datum/sprite_accessory/tail/horse - name = "horse tail, colorable" - desc = "" - icon_state = "horse" - do_colouration = 1 - color_blend_mode = ICON_MULTIPLY - -/datum/sprite_accessory/tail/cow - name = "cow tail, colorable" - desc = "" - icon_state = "cow" - do_colouration = 1 - color_blend_mode = ICON_MULTIPLY - -/datum/sprite_accessory/tail/fantail - name = "avian fantail, colorable" - desc = "" - icon_state = "fantail" - do_colouration = 1 - color_blend_mode = ICON_MULTIPLY - -/datum/sprite_accessory/tail/wagtail - name = "avian wagtail, colorable" - desc = "" - icon_state = "wagtail" - do_colouration = 1 - color_blend_mode = ICON_MULTIPLY - -/datum/sprite_accessory/tail/crossfox - name = "cross fox" - desc = "" - icon_state = "crossfox" - -/datum/sprite_accessory/tail/beethorax - name = "bee thorax" - desc = "" - icon_state = "beethorax" - -/datum/sprite_accessory/tail/doublekitsune - name = "double kitsune tail, colorable" - desc = "" - icon_state = "doublekitsune" - do_colouration = 1 - color_blend_mode = ICON_MULTIPLY - -/datum/sprite_accessory/tail/spade_color - name = "spade-tail (colorable)" - desc = "" - icon_state = "spadetail-black" - do_colouration = 1 - -/datum/sprite_accessory/tail/snag - name = "xenomorph tail 1" - desc = "" - icon_state = "snag" - -/datum/sprite_accessory/tail/xenotail - name = "xenomorph tail 2" - desc = "" - icon_state = "xenotail" - -/datum/sprite_accessory/tail/eboop - name = "EGN mech tail (dual color)" - desc = "" - icon_state = "eboop" - do_colouration = 1 - color_blend_mode = ICON_MULTIPLY - extra_overlay = "eboop_mark" - -/datum/sprite_accessory/tail/molenar_kitsune - name = "quintail kitsune tails (Molenar)" - desc = "" - icon_state = "molenar-kitsune" - ckeys_allowed = list("molenar") - -/datum/sprite_accessory/tail/miria_fluffdragon - name = "fluffdragon tail (Miria Masters)" - desc = "" - icon_state = "miria-fluffdragontail" - ckeys_allowed = list("miriamasters") - -/datum/sprite_accessory/tail/miria_kitsune - name = "Black kitsune tails (Miria Masters)" - desc = "" - icon_state = "miria-kitsunetail" - ckeys_allowed = list("miriamasters") - -/datum/sprite_accessory/tail/molenar_deathclaw - name = "deathclaw bits (Molenar)" - desc = "" - icon_state = "molenar-deathclaw" - ckeys_allowed = list("molenar","silvertalismen","jertheace") - -/datum/sprite_accessory/tail/runac - name = "fennecsune tails (Runac)" - desc = "" - icon_state = "runac" - ckeys_allowed = list("rebcom1807") - -/datum/sprite_accessory/tail/reika //Leaving this since it was too hard to split the wings from the tail. - name = "fox tail (+ beewings) (Reika)" - desc = "" - icon_state = "reika" - ckeys_allowed = list("rikaru19xjenkins") - -/datum/sprite_accessory/tail/rosey - name = "tritail kitsune tails (Rosey)" - desc = "" - icon_state = "rosey_three" - ckeys_allowed = list("joey4298") - -/datum/sprite_accessory/tail/rosey2 - name = "pentatail kitsune tails (Rosey)" //I predict seven tails next. ~CK - desc = "" - icon_state = "rosey_five" - ckeys_allowed = list("joey4298") - -/datum/sprite_accessory/tail/scree - name = "green taj tail (Scree)" - desc = "" - icon_state = "scree" - ckeys_allowed = list("scree") - -/datum/sprite_accessory/tail/aronai - name = "aronai tail (Aronai)" - desc = "" - icon_state = "aronai" - ckeys_allowed = list("arokha") - -/datum/sprite_accessory/tail/ketrai_wag - name = "fennix tail (vwag)" - desc = "" - icon_state = "ketraitail" - ani_state = "ketraitail_w" - //ckeys_allowed = list("ketrai") //They requested it to be enabled for everyone. - -/datum/sprite_accessory/tail/redpanda - name = "red panda" - desc = "" - icon_state = "redpanda" - -/datum/sprite_accessory/tail/ringtail - name = "ringtail, colorable" - desc = "" - icon_state = "ringtail" - do_colouration = 1 - color_blend_mode = ICON_MULTIPLY - extra_overlay = "ringtail_mark" - -/datum/sprite_accessory/tail/holly - name = "tigress tail (Holly)" - desc = "" - icon_state = "tigresstail" - ckeys_allowed = list("hoodoo") - -/datum/sprite_accessory/tail/satyr - name = "goat legs, colorable" - desc = "" - icon_state = "satyr" - color_blend_mode = ICON_MULTIPLY - do_colouration = 1 - -/datum/sprite_accessory/tail/tailmaw - name = "tailmaw, colorable" - desc = "" - icon_state = "tailmaw" - color_blend_mode = ICON_MULTIPLY - do_colouration = 1 - -/datum/sprite_accessory/tail/curltail - name = "curltail (vwag)" - desc = "" - icon_state = "curltail" - ani_state = "curltail_w" - do_colouration = 1 - color_blend_mode = ICON_MULTIPLY - extra_overlay = "curltail_mark" - extra_overlay_w = "curltail_mark_w" - -/datum/sprite_accessory/tail/shorttail - name = "shorttail (vwag)" - desc = "" - icon_state = "straighttail" - ani_state = "straighttail_w" - do_colouration = 1 - color_blend_mode = ICON_MULTIPLY - -/datum/sprite_accessory/tail/tiger_new - name = "tiger tail (vwag)" - desc = "" - icon_state = "tigertail" - ani_state = "tigertail_w" - do_colouration = 1 - color_blend_mode = ICON_MULTIPLY - extra_overlay = "tigertail_mark" - extra_overlay_w = "tigertail_mark_w" - -/datum/sprite_accessory/tail/vulp_new - name = "new vulp tail (vwag)" - desc = "" - icon_state = "vulptail" - ani_state = "vulptail_w" - do_colouration = 1 - color_blend_mode = ICON_MULTIPLY - extra_overlay = "vulptail_mark" - extra_overlay_w = "vulptail_mark_w" - -/datum/sprite_accessory/tail/otietail - name = "otie tail (vwag)" - desc = "" - icon_state = "otie" - ani_state = "otie_w" - do_colouration = 1 - color_blend_mode = ICON_MULTIPLY - -/datum/sprite_accessory/tail/newtailmaw - name = "new tailmaw (vwag)" - desc = "" - icon_state = "newtailmaw" - ani_state = "newtailmaw_w" - do_colouration = 1 - color_blend_mode = ICON_MULTIPLY - -/datum/sprite_accessory/tail/ztail - name = "jagged flufftail" - desc = "" - icon_state = "ztail" - do_colouration = 1 - color_blend_mode = ICON_MULTIPLY - -/datum/sprite_accessory/tail/snaketail - name = "snake tail, colorable" - desc = "" - icon_state = "snaketail" - do_colouration = 1 - color_blend_mode = ICON_MULTIPLY - -/datum/sprite_accessory/tail/vulpan_alt - name = "vulpkanin alt style, colorable" - desc = "" - icon_state = "vulptail_alt" - do_colouration = 1 - color_blend_mode = ICON_MULTIPLY - -/datum/sprite_accessory/tail/sergaltaildc - name = "sergal, dual-color" - desc = "" - icon_state = "sergal" - do_colouration = 1 - color_blend_mode = ICON_MULTIPLY - extra_overlay = "sergal_mark" - -/datum/sprite_accessory/tail/skunktail - name = "skunk, dual-color" - desc = "" - icon_state = "skunktail" - do_colouration = 1 - color_blend_mode = ICON_MULTIPLY - extra_overlay = "skunktail_mark" - -/datum/sprite_accessory/tail/deertail - name = "deer, dual-color" - desc = "" - icon_state = "deertail" - do_colouration = 1 - color_blend_mode = ICON_MULTIPLY - extra_overlay = "deertail_mark" - -/datum/sprite_accessory/tail/teshari_fluffytail - name = "Teshari alternative, colorable" - desc = "" - icon_state = "teshari_fluffytail" - extra_overlay = "teshari_fluffytail_mark" - do_colouration = 1 - color_blend_mode = ICON_MULTIPLY - -//For all species tails. Includes haircolored tails. -/datum/sprite_accessory/tail/special - name = "Blank tail. Do not select." - icon = 'icons/effects/species_tails_vr.dmi' - -/datum/sprite_accessory/tail/special/unathi - name = "unathi tail" - desc = "" - icon_state = "sogtail_s" - do_colouration = 1 - color_blend_mode = ICON_MULTIPLY - -/datum/sprite_accessory/tail/special/tajaran - name = "tajaran tail" - desc = "" - icon_state = "tajtail_s" - do_colouration = 1 - color_blend_mode = ICON_MULTIPLY - -/datum/sprite_accessory/tail/special/sergal - name = "sergal tail" - desc = "" - icon_state = "sergtail_s" - do_colouration = 1 - color_blend_mode = ICON_MULTIPLY - -/datum/sprite_accessory/tail/special/akula - name = "akula tail" - desc = "" - icon_state = "sharktail_s" - do_colouration = 1 - color_blend_mode = ICON_MULTIPLY - -/datum/sprite_accessory/tail/special/nevrean - name = "nevrean tail" - desc = "" - icon_state = "nevreantail_s" - do_colouration = 1 - color_blend_mode = ICON_MULTIPLY - -/datum/sprite_accessory/tail/special/armalis - name = "armalis tail" - desc = "" - icon_state = "armalis_tail_humanoid_s" - -/datum/sprite_accessory/tail/special/xenodrone - name = "xenomorph drone tail" - desc = "" - icon_state = "xenos_drone_tail_s" - -/datum/sprite_accessory/tail/special/xenosentinel - name = "xenomorph sentinel tail" - desc = "" - icon_state = "xenos_sentinel_tail_s" - -/datum/sprite_accessory/tail/special/xenohunter - name = "xenomorph hunter tail" - desc = "" - icon_state = "xenos_hunter_tail_s" - -/datum/sprite_accessory/tail/special/xenoqueen - name = "xenomorph queen tail" - desc = "" - icon_state = "xenos_queen_tail_s" - -/datum/sprite_accessory/tail/special/monkey - name = "monkey tail" - desc = "" - icon_state = "chimptail_s" - -/datum/sprite_accessory/tail/special/seromitail - name = "seromi tail" - desc = "" - icon_state = "seromitail_s" - do_colouration = 1 - color_blend_mode = ICON_MULTIPLY - -/datum/sprite_accessory/tail/special/seromitailfeathered - name = "seromi tail w/ feathers" - desc = "" - icon_state = "seromitail_s" - extra_overlay = "seromitail_feathers_s" - do_colouration = 1 - color_blend_mode = ICON_MULTIPLY - -/datum/sprite_accessory/tail/special/unathihc - name = "unathi tail, colorable" - desc = "" - icon_state = "sogtail_hc_s" - do_colouration = 1 - color_blend_mode = ICON_MULTIPLY - -/datum/sprite_accessory/tail/special/tajaranhc - name = "tajaran tail, colorable" - desc = "" - icon_state = "tajtail_hc_s" - do_colouration = 1 - color_blend_mode = ICON_MULTIPLY - -/datum/sprite_accessory/tail/special/sergalhc - name = "sergal tail, colorable" - desc = "" - icon_state = "sergtail_hc_s" - do_colouration = 1 - color_blend_mode = ICON_MULTIPLY - -/datum/sprite_accessory/tail/special/akulahc - name = "akula tail, colorable" - desc = "" - icon_state = "sharktail_hc_s" - do_colouration = 1 - color_blend_mode = ICON_MULTIPLY - -/datum/sprite_accessory/tail/special/nevreanhc - name = "nevrean tail, colorable" - desc = "" - icon_state = "nevreantail_hc_s" - do_colouration = 1 - color_blend_mode = ICON_MULTIPLY - -/datum/sprite_accessory/tail/special/foxhc - name = "highlander zorren tail, colorable" - desc = "" - icon_state = "foxtail_hc_s" - do_colouration = 1 - color_blend_mode = ICON_MULTIPLY - -/datum/sprite_accessory/tail/special/fennechc - name = "flatland zorren tail, colorable" - desc = "" - icon_state = "fentail_hc_s" - do_colouration = 1 - color_blend_mode = ICON_MULTIPLY - -/datum/sprite_accessory/tail/special/armalishc - name = "armalis tail, colorable" - desc = "" - icon_state = "armalis_tail_humanoid_hc_s" - do_colouration = 1 - -/datum/sprite_accessory/tail/special/xenodronehc - name = "xenomorph drone tail, colorable" - desc = "" - icon_state = "xenos_drone_tail_hc_s" - do_colouration = 1 - -/datum/sprite_accessory/tail/special/xenosentinelhc - name = "xenomorph sentinel tail, colorable" - desc = "" - icon_state = "xenos_sentinel_tail_hc_s" - do_colouration = 1 - -/datum/sprite_accessory/tail/special/xenohunterhc - name = "xenomorph hunter tail, colorable" - desc = "" - icon_state = "xenos_hunter_tail_hc_s" - do_colouration = 1 - -/datum/sprite_accessory/tail/special/xenoqueenhc - name = "xenomorph queen tail, colorable" - desc = "" - icon_state = "xenos_queen_tail_hc_s" - do_colouration = 1 - -/datum/sprite_accessory/tail/special/monkeyhc - name = "monkey tail, colorable, colorable" - desc = "" - icon_state = "chimptail_hc_s" - do_colouration = 1 - -/datum/sprite_accessory/tail/special/seromitailhc - name = "seromi tail, colorable" - desc = "" - icon_state = "seromitail_hc_s" - do_colouration = 1 - color_blend_mode = ICON_MULTIPLY - -/datum/sprite_accessory/tail/special/seromitailfeatheredhc - name = "seromi tail w/ feathers, colorable" - desc = "" - icon_state = "seromitail_feathers_hc_s" - do_colouration = 1 - color_blend_mode = ICON_MULTIPLY - -/datum/sprite_accessory/tail/special/vulpan - name = "vulpkanin, colorable" - desc = "" - icon_state = "vulptail_s" - do_colouration = 1 - color_blend_mode = ICON_MULTIPLY - - -/datum/sprite_accessory/tail/zenghu_taj - name = "Zeng-Hu Tajaran Synth tail" - desc = "" - icon_state = "zenghu_taj" - -//Taurs moved to a separate file due to extra code around them - -//Buggo Abdomens! - -/datum/sprite_accessory/tail/buggo - name = "Bug abdomen, colorable" - desc = "" - icon_state = "buggo_s" - do_colouration = 1 - color_blend_mode = ICON_MULTIPLY - -/datum/sprite_accessory/tail/buggobee - name = "Bug abdomen, bee top, dual-colorable" - desc = "" - icon_state = "buggo_s" - do_colouration = 1 - color_blend_mode = ICON_MULTIPLY - extra_overlay = "buggobee_markings" - -/datum/sprite_accessory/tail/buggobeefull - name = "Bug abdomen, bee full, dual-colorable" - desc = "" - icon_state = "buggo_s" - do_colouration = 1 - color_blend_mode = ICON_MULTIPLY - extra_overlay = "buggobeefull_markings" - -/datum/sprite_accessory/tail/buggounder - name = "Bug abdomen, underside, dual-colorable" - desc = "" - icon_state = "buggo_s" - do_colouration = 1 - color_blend_mode = ICON_MULTIPLY - extra_overlay = "buggounder_markings" - -/datum/sprite_accessory/tail/buggofirefly - name = "Bug abdomen, firefly, dual-colorable" - desc = "" - icon_state = "buggo_s" - do_colouration = 1 - color_blend_mode = ICON_MULTIPLY - extra_overlay = "buggofirefly_markings" - -/datum/sprite_accessory/tail/buggofat - name = "Fat bug abdomen, colorable" - desc = "" - icon_state = "buggofat_s" - do_colouration = 1 - color_blend_mode = ICON_MULTIPLY - -/datum/sprite_accessory/tail/buggofatbee - name = "Fat bug abdomen, bee top, dual-colorable" - desc = "" - icon_state = "buggofat_s" - do_colouration = 1 - color_blend_mode = ICON_MULTIPLY - extra_overlay = "buggofatbee_markings" - -/datum/sprite_accessory/tail/buggofatbeefull - name = "Fat bug abdomen, bee full, dual-colorable" - desc = "" - icon_state = "buggofat_s" - do_colouration = 1 - color_blend_mode = ICON_MULTIPLY - extra_overlay = "buggofatbeefull_markings" - -/datum/sprite_accessory/tail/buggofatunder - name = "Fat bug abdomen, underside, dual-colorable" - desc = "" - icon_state = "buggofat_s" - do_colouration = 1 - color_blend_mode = ICON_MULTIPLY - extra_overlay = "buggofatunder_markings" - -/datum/sprite_accessory/tail/buggofatfirefly - name = "Fat bug abdomen, firefly, dual-colorable" - desc = "" - icon_state = "buggofat_s" - do_colouration = 1 - color_blend_mode = ICON_MULTIPLY - extra_overlay = "buggofatfirefly_markings" - -/datum/sprite_accessory/tail/buggowag - name = "Bug abdomen, colorable, vwag change" - desc = "" - icon_state = "buggo_s" - ani_state = "buggofat_s" - do_colouration = 1 - color_blend_mode = ICON_MULTIPLY - -/datum/sprite_accessory/tail/buggobeewag - name = "Bug abdomen, bee top, dual color, vwag" - desc = "" - icon_state = "buggo_s" - ani_state = "buggofat_s" - do_colouration = 1 - color_blend_mode = ICON_MULTIPLY - extra_overlay = "buggobee_markings" - extra_overlay_w = "buggofatbee_markings" - -/datum/sprite_accessory/tail/buggobeefullwag - name = "Bug abdomen, bee full, dual color, vwag" - desc = "" - icon_state = "buggo_s" - ani_state = "buggofat_s" - do_colouration = 1 - color_blend_mode = ICON_MULTIPLY - extra_overlay = "buggobeefull_markings" - extra_overlay_w = "buggofatbeefull_markings" - -/datum/sprite_accessory/tail/buggounderwag - name = "Bug abdomen, underside, dual color, vwag" - desc = "" - icon_state = "buggo_s" - ani_state = "buggofat_s" - do_colouration = 1 - color_blend_mode = ICON_MULTIPLY - extra_overlay = "buggounder_markings" - extra_overlay_w = "buggofatunder_markings" - -/datum/sprite_accessory/tail/buggofireflywag - name = "Bug abdomen, firefly, dual color, vwag" - desc = "" - icon_state = "buggo_s" - ani_state = "buggofat_s" - do_colouration = 1 - color_blend_mode = ICON_MULTIPLY - extra_overlay = "buggofirefly_markings" - extra_overlay_w = "buggofatfirefly_markings" - -//Vass buggo variants! - -/datum/sprite_accessory/tail/buggovass - name = "Bug abdomen, vass, colorable" - desc = "" - icon_state = "buggo_vass_s" - do_colouration = 1 - color_blend_mode = ICON_MULTIPLY - -/datum/sprite_accessory/tail/buggovassbee - name = "Bug abdomen, bee top, dc, vass" - desc = "" - icon_state = "buggo_vass_s" - do_colouration = 1 - color_blend_mode = ICON_MULTIPLY - extra_overlay = "buggobee_vass_markings" - -/datum/sprite_accessory/tail/buggovassbeefull - name = "Bug abdomen, bee full, dc, vass" - desc = "" - icon_state = "buggo_vass_s" - do_colouration = 1 - color_blend_mode = ICON_MULTIPLY - extra_overlay = "buggobeefull_vass_markings" - -/datum/sprite_accessory/tail/buggovassunder - name = "Bug abdomen, underside, dc, vass" - desc = "" - icon_state = "buggo_vass_s" - do_colouration = 1 - color_blend_mode = ICON_MULTIPLY - extra_overlay = "buggounder_vass_markings" - -/datum/sprite_accessory/tail/buggovassfirefly - name = "Bug abdomen, firefly, dc, vass" - desc = "" - icon_state = "buggo_vass_s" - do_colouration = 1 - color_blend_mode = ICON_MULTIPLY - extra_overlay = "buggofirefly_vass_markings" - -/datum/sprite_accessory/tail/buggovassfat - name = "Fat bug abdomen, vass, colorable" - desc = "" - icon_state = "buggofat_vass_s" - do_colouration = 1 - color_blend_mode = ICON_MULTIPLY - -/datum/sprite_accessory/tail/buggovassfatbee - name = "Fat bug abdomen, bee top, dc, vass" - desc = "" - icon_state = "buggofat_vass_s" - do_colouration = 1 - color_blend_mode = ICON_MULTIPLY - extra_overlay = "buggofatbee_vass_markings" - -/datum/sprite_accessory/tail/buggovassfatbeefull - name = "Fat bug abdomen, bee full, dc, vass" - desc = "" - icon_state = "buggofat_vass_s" - do_colouration = 1 - color_blend_mode = ICON_MULTIPLY - extra_overlay = "buggofatbeefull_vass_markings" - -/datum/sprite_accessory/tail/buggovassfatunder - name = "Fat bug abdomen, underside, dc, vass" - desc = "" - icon_state = "buggofat_vass_s" - do_colouration = 1 - color_blend_mode = ICON_MULTIPLY - extra_overlay = "buggofatunder_vass_markings" - -/datum/sprite_accessory/tail/buggovassfatfirefly - name = "Fat bug abdomen, firefly, dc, vass" - desc = "" - icon_state = "buggofat_vass_s" - do_colouration = 1 - color_blend_mode = ICON_MULTIPLY - extra_overlay = "buggofatfirefly_vass_markings" - -/datum/sprite_accessory/tail/buggovasswag - name = "Bug abdomen, vass, colorable, vwag change" - desc = "" - icon_state = "buggo_vass_s" - ani_state = "buggofat_vass_s" - do_colouration = 1 - color_blend_mode = ICON_MULTIPLY - -/datum/sprite_accessory/tail/buggovassbeewag - name = "Bug abdomen, bee top, dc, vass, vwag" - desc = "" - icon_state = "buggo_vass_s" - ani_state = "buggofat_vass_s" - do_colouration = 1 - color_blend_mode = ICON_MULTIPLY - extra_overlay = "buggobee_vass_markings" - extra_overlay_w = "buggofatbee_vass_markings" - -/datum/sprite_accessory/tail/buggovassbeefullwag - name = "Bug abdomen, bee full, dc, vass, vwag" - desc = "" - icon_state = "buggo_vass_s" - ani_state = "buggofat_vass_s" - do_colouration = 1 - color_blend_mode = ICON_MULTIPLY - extra_overlay = "buggobeefull_vass_markings" - extra_overlay_w = "buggofatbeefull_vass_markings" - -/datum/sprite_accessory/tail/buggovassunderwag - name = "Bug abdomen, underside, dc, vass, vwag" - desc = "" - icon_state = "buggo_vass_s" - ani_state = "buggofat_vass_s" - do_colouration = 1 - color_blend_mode = ICON_MULTIPLY - extra_overlay = "buggounder_vass_markings" - extra_overlay_w = "buggofatunder_vass_markings" - -/datum/sprite_accessory/tail/buggovassfireflywag - name = "Bug abdomen, firefly, dc, vass, vwag" - desc = "" - icon_state = "buggo_vass_s" - ani_state = "buggofat_vass_s" - do_colouration = 1 - color_blend_mode = ICON_MULTIPLY - extra_overlay = "buggofirefly_vass_markings" - extra_overlay_w = "buggofatfirefly_vass_markings" +/* + Hello and welcome to VOREStation sprite_accessories: For a more general overview + please read sprite_accessories.dm. This file is for ears and tails. + This is intended to be friendly for people with little to no actual coding experience. + !!WARNING!!: changing existing accessory information can be VERY hazardous to savefiles, + to the point where you may completely corrupt a server's savefiles. Please refrain + from doing this unless you absolutely know what you are doing, and have defined a + conversion in savefile.dm +*/ + +// Add Additional variable onto sprite_accessory +/datum/sprite_accessory + // Ckey of person allowed to use this, if defined. + var/list/ckeys_allowed = null + +/* +//////////////////////////// +/ =--------------------= / +/ == Ear Definitions == / +/ =--------------------= / +//////////////////////////// +*/ +/datum/sprite_accessory/ears + name = "You should not see this..." + icon = 'icons/mob/vore/ears_vr.dmi' + do_colouration = 0 // Set to 1 to blend (ICON_ADD) hair color + + var/color_blend_mode = ICON_ADD // Only appliciable if do_coloration = 1 + var/extra_overlay // Icon state of an additional overlay to blend in. + var/desc = "You should not see this..." + +// Ears avaliable to anyone + +/datum/sprite_accessory/ears/squirrel_orange + name = "squirel, orange" + desc = "" + icon_state = "squirrel-orange" + +/datum/sprite_accessory/ears/squirrel_red + name = "squirrel, red" + desc = "" + icon_state = "squirrel-red" + +/datum/sprite_accessory/ears/bunny_white + name = "bunny, white" + desc = "" + icon_state = "bunny" + +/datum/sprite_accessory/ears/bear_brown + name = "bear, brown" + desc = "" + icon_state = "bear-brown" + +/datum/sprite_accessory/ears/bear_panda + name = "bear, panda" + desc = "" + icon_state = "panda" + +/datum/sprite_accessory/ears/wolf_grey + name = "wolf, grey" + desc = "" + icon_state = "wolf-grey" + +/datum/sprite_accessory/ears/wolf_green + name = "wolf, green" + desc = "" + icon_state = "wolf-green" + +/datum/sprite_accessory/ears/wisewolf + name = "wolf, wise" + desc = "" + icon_state = "wolf-wise" + +/datum/sprite_accessory/ears/mouse_grey + name = "mouse, grey" + desc = "" + icon_state = "mouse-grey" + +/datum/sprite_accessory/ears/bee + name = "bee antennae" + desc = "" + icon_state = "bee" + +/datum/sprite_accessory/ears/antennae + name = "antennae, colorable" + desc = "" + icon_state = "antennae" + do_colouration = 1 + color_blend_mode = ICON_MULTIPLY + +/datum/sprite_accessory/ears/curly_bug + name = "curly antennae, colorable" + desc = "" + icon_state = "curly_bug" + do_colouration = 1 + color_blend_mode = ICON_MULTIPLY + +/datum/sprite_accessory/ears/dual_robot + name = "synth antennae, colorable" + desc = "" + icon_state = "dual_robot_antennae" + do_colouration = 1 + color_blend_mode = ICON_MULTIPLY + +/datum/sprite_accessory/ears/right_robot + name = "right synth, colorable" + desc = "" + icon_state = "right_robot_antennae" + do_colouration = 1 + color_blend_mode = ICON_MULTIPLY + +/datum/sprite_accessory/ears/left_robot + name = "left synth, colorable" + desc = "" + icon_state = "left_robot_antennae" + do_colouration = 1 + color_blend_mode = ICON_MULTIPLY + +/datum/sprite_accessory/ears/oni_h1 + name = "oni horns" + desc = "" + icon_state = "oni-h1" + +/datum/sprite_accessory/ears/oni_h1_c + name = "oni horns, colorable" + desc = "" + icon_state = "oni-h1_c" + do_colouration = 1 + color_blend_mode = ICON_MULTIPLY + +/datum/sprite_accessory/ears/demon_horns1 + name = "demon horns" + desc = "" + icon_state = "demon-horns1" + +/datum/sprite_accessory/ears/demon_horns1_c + name = "demon horns, colorable" + desc = "" + icon_state = "demon-horns1_c" + do_colouration = 1 + color_blend_mode = ICON_MULTIPLY + +/datum/sprite_accessory/ears/demon_horns2 + name = "demon horns, colorable(outward)" + desc = "" + icon_state = "demon-horns2" + do_colouration = 1 + color_blend_mode = ICON_MULTIPLY + +/datum/sprite_accessory/ears/dragon_horns + name = "dragon horns, colorable" + desc = "" + icon_state = "dragon-horns" + do_colouration = 1 + color_blend_mode = ICON_MULTIPLY + +/datum/sprite_accessory/ears/foxears + name = "highlander zorren ears" + desc = "" + icon_state = "foxears" + +/datum/sprite_accessory/ears/fenears + name = "flatland zorren ears" + desc = "" + icon_state = "fenears" + +/datum/sprite_accessory/ears/sergal //Redundant + name = "Sergal ears" + icon_state = "serg_plain_s" + +/datum/sprite_accessory/ears/foxearshc + name = "highlander zorren ears, colorable" + desc = "" + icon_state = "foxearshc" + do_colouration = 1 + color_blend_mode = ICON_MULTIPLY + +/datum/sprite_accessory/ears/fenearshc + name = "flatland zorren ears, colorable" + desc = "" + icon_state = "fenearshc" + extra_overlay = "fenears-inner" + do_colouration = 1 + color_blend_mode = ICON_MULTIPLY + +/datum/sprite_accessory/ears/sergalhc + name = "Sergal ears, colorable" + icon_state = "serg_plain_s" + do_colouration = 1 + color_blend_mode = ICON_MULTIPLY + +/datum/sprite_accessory/ears/mousehc + name = "mouse, colorable" + desc = "" + icon_state = "mouse" + do_colouration = 1 + color_blend_mode = ICON_MULTIPLY + extra_overlay = "mouseinner" + +/datum/sprite_accessory/ears/mousehcno + name = "mouse, colorable, no inner" + desc = "" + icon_state = "mouse" + do_colouration = 1 + color_blend_mode = ICON_MULTIPLY + +/datum/sprite_accessory/ears/wolfhc + name = "wolf, colorable" + desc = "" + icon_state = "wolf" + do_colouration = 1 + color_blend_mode = ICON_MULTIPLY + extra_overlay = "wolfinner" + +/datum/sprite_accessory/ears/bearhc + name = "bear, colorable" + desc = "" + icon_state = "bear" + do_colouration = 1 + color_blend_mode = ICON_MULTIPLY + +/datum/sprite_accessory/ears/smallbear + name = "small bear" + desc = "" + icon_state = "smallbear" + do_colouration = 1 + color_blend_mode = ICON_MULTIPLY + +/datum/sprite_accessory/ears/squirrelhc + name = "squirrel, colorable" + desc = "" + icon_state = "squirrel" + do_colouration = 1 + color_blend_mode = ICON_MULTIPLY + +/datum/sprite_accessory/ears/kittyhc + name = "kitty, colorable" + desc = "" + icon_state = "kitty" + do_colouration = 1 + color_blend_mode = ICON_MULTIPLY + extra_overlay = "kittyinner" + +/datum/sprite_accessory/ears/bunnyhc + name = "bunny, colorable" + desc = "" + icon_state = "bunny" + do_colouration = 1 + color_blend_mode = ICON_MULTIPLY + +/datum/sprite_accessory/ears/antlers + name = "antlers" + desc = "" + icon_state = "antlers" + do_colouration = 1 + color_blend_mode = ICON_MULTIPLY + +/datum/sprite_accessory/ears/antlers_e + name = "antlers with ears" + desc = "" + icon_state = "cow-nohorns" + do_colouration = 1 + color_blend_mode = ICON_MULTIPLY + extra_overlay = "antlers_mark" + +/datum/sprite_accessory/ears/smallantlers + name = "small antlers" + desc = "" + icon_state = "smallantlers" + do_colouration = 1 + color_blend_mode = ICON_MULTIPLY + +/datum/sprite_accessory/ears/smallantlers_e + name = "small antlers with ears" + desc = "" + icon_state = "smallantlers" + do_colouration = 1 + color_blend_mode = ICON_MULTIPLY + extra_overlay = "deer" + +/datum/sprite_accessory/ears/deer + name = "deer ears" + desc = "" + icon_state = "deer" + do_colouration = 1 + color_blend_mode = ICON_MULTIPLY + +/datum/sprite_accessory/ears/cow + name = "cow, horns" + desc = "" + icon_state = "cow" + +/datum/sprite_accessory/ears/cowc + name = "cow, horns, colorable" + desc = "" + icon_state = "cow-c" + do_colouration = 1 + color_blend_mode = ICON_MULTIPLY + +/datum/sprite_accessory/ears/cow_nohorns + name = "cow, no horns" + desc = "" + icon_state = "cow-nohorns" + do_colouration = 1 + color_blend_mode = ICON_MULTIPLY + +/datum/sprite_accessory/ears/caprahorns + name = "caprine horns" + desc = "" + icon_state = "caprahorns" + do_colouration = 1 + color_blend_mode = ICON_MULTIPLY + +/datum/sprite_accessory/ears/otie + name = "otie, colorable" + desc = "" + icon_state = "otie" + do_colouration = 1 + color_blend_mode = ICON_MULTIPLY + extra_overlay = "otie-inner" + +/datum/sprite_accessory/ears/zears + name = "jagged ears" + desc = "" + icon_state = "zears" + do_colouration = 1 + color_blend_mode = ICON_MULTIPLY + +/datum/sprite_accessory/ears/elfs + name = "elven ears" + desc = "" + icon_state = "elfs" + do_colouration = 1 + color_blend_mode = ICON_MULTIPLY + +/datum/sprite_accessory/ears/sleek + name = "sleek ears" + desc = "" + icon_state = "sleek" + do_colouration = 1 + color_blend_mode = ICON_MULTIPLY + +/datum/sprite_accessory/ears/drake + name = "drake frills" + desc = "" + icon_state = "drake" + do_colouration = 1 + color_blend_mode = ICON_MULTIPLY + +/datum/sprite_accessory/ears/vulp + name = "vulpkanin, dual-color" + desc = "" + icon_state = "vulp" + do_colouration = 1 + color_blend_mode = ICON_MULTIPLY + extra_overlay = "vulp-inner" + +/datum/sprite_accessory/ears/bunny_floppy + name = "floopy bunny ears (colorable)" + desc = "" + icon_state = "floppy_bun" + do_colouration = 1 + color_blend_mode = ICON_MULTIPLY + +/datum/sprite_accessory/ears/teshari + name = "Teshari (colorable fluff)" + desc = "" + icon_state = "teshari" + do_colouration = 1 + color_blend_mode = ICON_MULTIPLY + extra_overlay = "teshariinner" + +/datum/sprite_accessory/ears/tesharihigh + name = "Teshari upper ears (colorable fluff)" + desc = "" + icon_state = "tesharihigh" + do_colouration = 1 + color_blend_mode = ICON_MULTIPLY + extra_overlay = "tesharihighinner" + +/datum/sprite_accessory/ears/tesharilow + name = "Teshari lower ears (colorable fluff)" + desc = "" + icon_state = "tesharilow" + do_colouration = 1 + color_blend_mode = ICON_MULTIPLY + extra_overlay = "tesharilowinner" + + +// Special snowflake ears go below here. + +/datum/sprite_accessory/ears/molenar_kitsune + name = "quintail kitsune ears (Molenar)" + desc = "" + icon_state = "molenar-kitsune" + ckeys_allowed = list("molenar") + +/datum/sprite_accessory/ears/lilimoth_antennae + name = "citheronia antennae (Kira72)" + desc = "" + icon_state = "lilimoth_antennae" + ckeys_allowed = list("kira72") + +/datum/sprite_accessory/ears/molenar_deathclaw + name = "deathclaw ears (Molenar)" + desc = "" + icon_state = "molenar-deathclaw" + ckeys_allowed = list("molenar") + +/datum/sprite_accessory/ears/miria_fluffdragon + name = "fluffdragon ears (Miria Masters)" + desc = "" + icon_state = "miria-fluffdragonears" + ckeys_allowed = list("miriamasters") + +/datum/sprite_accessory/ears/miria_kitsune + name = "kitsune ears (Miria Masters)" + desc = "" + icon_state = "miria-kitsuneears" + ckeys_allowed = list("miriamasters") + +/datum/sprite_accessory/ears/runac + name = "fennecsune ears (Runac)" + desc = "" + icon_state = "runac" + ckeys_allowed = list("rebcom1807") + +/datum/sprite_accessory/ears/kerena + name = "wingwolf ears (Kerena)" + desc = "" + icon_state = "kerena" + ckeys_allowed = list("somekindofpony") + +/datum/sprite_accessory/ears/rosey + name = "tritail kitsune ears (Rosey)" + desc = "" + icon_state = "rosey" + ckeys_allowed = list("joey4298") + +/datum/sprite_accessory/ears/aronai + name = "aronai ears/head (Aronai)" + desc = "" + icon_state = "aronai" + ckeys_allowed = list("arokha") + +/datum/sprite_accessory/ears/holly + name = "tigress ears (Holly Sharp)" + desc = "" + icon_state = "tigressears" + ckeys_allowed = list("hoodoo") + +/datum/sprite_accessory/ears/molenar_inkling + name = "teal mature inkling hair (Kari Akiren)" + desc = "" + icon_state = "molenar-tentacle" + ckeys_allowed = list("molenar") + +/datum/sprite_accessory/ears/shock + name = "pharoah hound ears (Shock Diamond)" + desc = "" + icon_state = "shock" + ckeys_allowed = list("icowom","cameron653") + +/datum/sprite_accessory/ears/alurane + name = "alurane ears/hair (Pumila)" + desc = "" + icon_state = "alurane-ears" + ckeys_allowed = list("natje") + +/* +//////////////////////////// +/ =--------------------= / +/ == Wing Definitions == / +/ =--------------------= / +//////////////////////////// +*/ +/datum/sprite_accessory/wing + name = "You should not see this..." + icon = 'icons/mob/vore/wings_vr.dmi' + do_colouration = 0 //Set to 1 to enable coloration using the tail color. + + var/color_blend_mode = ICON_ADD // Only appliciable if do_coloration = 1 + var/extra_overlay // Icon state of an additional overlay to blend in. + var/clothing_can_hide = 1 // If true, clothing with HIDETAIL hides it. If the clothing is bulky enough to hide a tail, it should also hide wings. + // var/show_species_tail = 1 // Just so // TODO - Seems not needed ~Leshana + var/desc = "You should not see this..." + var/ani_state // State when flapping/animated + var/extra_overlay_w // Flapping state for extra overlay + +/datum/sprite_accessory/wing/shock //Unable to split the tail from the wings in the sprite, so let's just classify it as wings. + name = "pharoah hound tail (Shock Diamond)" + desc = "" + icon_state = "shock" + ckeys_allowed = list("icowom") + +/datum/sprite_accessory/wing/featheredlarge //Made by Natje! + name = "large feathered wings (colorable)" + desc = "" + icon_state = "feathered2" + do_colouration = 1 + color_blend_mode = ICON_MULTIPLY + +/datum/sprite_accessory/wing/spider_legs //Not really /WINGS/ but they protrude from the back, kinda. Might as well have them here. + name = "spider legs" + desc = "" + icon_state = "spider-legs" + color_blend_mode = ICON_MULTIPLY + +/datum/sprite_accessory/wing/moth + name = "moth wings" + desc = "" + icon_state = "moth" + +/datum/sprite_accessory/wing/mothc + name = "moth wings, colorable" + desc = "" + icon_state = "moth" + do_colouration = 1 + color_blend_mode = ICON_MULTIPLY + +/datum/sprite_accessory/wing/dragonfly + name = "dragonfly" + desc = "" + icon_state = "dragonfly" + color_blend_mode = ICON_MULTIPLY + +/datum/sprite_accessory/wing/citheroniamoth + name = "citheronia wings" + desc = "" + icon_state = "citheronia_wings" + ckeys_allowed = list("kira72") + +/datum/sprite_accessory/wing/feathered + name = "feathered wings, colorable" + desc = "" + icon_state = "feathered" + do_colouration = 1 + color_blend_mode = ICON_MULTIPLY + +/datum/sprite_accessory/wing/feathered_medium + name = "medium feathered wings, colorable" // Keekenox made these feathery things with a little bit more shape to them than the other wings. They are medium sized wing boys. + desc = "" + icon_state = "feathered3" + do_colouration = 1 + color_blend_mode = ICON_MULTIPLY + +/datum/sprite_accessory/wing/bat_black + name = "bat wings, black" + desc = "" + icon_state = "bat-black" + +/datum/sprite_accessory/wing/bat_color + name = "bat wings, colorable" + desc = "" + icon_state = "bat-color" + do_colouration = 1 + +/datum/sprite_accessory/wing/bat_red + name = "bat wings, red" + desc = "" + icon_state = "bat-red" + +/datum/sprite_accessory/wing/harpywings + name = "harpy wings, colorable" + desc = "" + icon_state = "harpywings" + do_colouration = 1 + color_blend_mode = ICON_MULTIPLY + +/datum/sprite_accessory/wing/feathered + name = "feathered wings, colorable" + desc = "" + icon_state = "feathered" + do_colouration = 1 + color_blend_mode = ICON_MULTIPLY + +/datum/sprite_accessory/wing/beewings + name = "bee wings" + desc = "" + icon_state = "beewings" + +/datum/sprite_accessory/wing/sepulchre + name = "demon wings (Sepulchre)" + desc = "" + icon_state = "sepulchre_wings" + ckeys_allowed = list("sepulchre") + +/datum/sprite_accessory/wing/miria_fluffdragon + name = "fluffdragon wings (Miria Masters)" + desc = "" + icon_state = "miria-fluffdragontail" + ckeys_allowed = list("miriamasters") + +/datum/sprite_accessory/wing/scree + name = "green taj wings (Scree)" + desc = "" + icon_state = "scree-wings" + ckeys_allowed = list("scree") + +/datum/sprite_accessory/wing/liquidfirefly_gazer //I g-guess this could be considered wings? + name = "gazer eyestalks" + desc = "" + icon_state = "liquidfirefly-eyestalks" + //ckeys_allowed = list("liquidfirefly","seiga") //At request. + +/datum/sprite_accessory/wing/moth_full + name = "moth antenna and wings" + desc = "" + icon_state = "moth_full" + +/datum/sprite_accessory/wing/moth_full_gray + name = "moth antenna and wings, colorable" + desc = "" + icon_state = "moth_full_gray" + +/datum/sprite_accessory/wing/kerena + name = "wingwolf wings (Kerena)" + desc = "" + icon_state = "kerena-wings" + ckeys_allowed = list("somekindofpony") + +/datum/sprite_accessory/wing/snag + name = "xenomorph backplate" + desc = "" + icon_state = "snag-backplate" + +/datum/sprite_accessory/wing/nevrean + name = "nevrean wings/fantail" + desc = "" + icon_state = "nevrean_s" + do_colouration = 1 + color_blend_mode = ICON_MULTIPLY + +/* +//////////////////////////// +/ =--------------------= / +/ == Tail Definitions == / +/ =--------------------= / +//////////////////////////// +*/ +/datum/sprite_accessory/tail + name = "You should not see this..." + icon = 'icons/mob/vore/tails_vr.dmi' + do_colouration = 0 //Set to 1 to enable coloration using the tail color. + + var/color_blend_mode = ICON_ADD // Only appliciable if do_coloration = 1 + var/extra_overlay // Icon state of an additional overlay to blend in. + var/show_species_tail = 0 // If false, do not render species' tail. + var/clothing_can_hide = 1 // If true, clothing with HIDETAIL hides it + var/desc = "You should not see this..." + var/ani_state // State when wagging/animated + var/extra_overlay_w // Wagging state for extra overlay + +/datum/sprite_accessory/tail/invisible + name = "hide species-sprite tail" + icon = null + icon_state = null + +/datum/sprite_accessory/tail/squirrel_orange + name = "squirel, orange" + desc = "" + icon_state = "squirrel-orange" + +/datum/sprite_accessory/tail/squirrel_red + name = "squirrel, red" + desc = "" + icon_state = "squirrel-red" + +/datum/sprite_accessory/tail/squirrel + name = "squirrel, colorable" + desc = "" + icon_state = "squirrel" + do_colouration = 1 + color_blend_mode = ICON_MULTIPLY + +/datum/sprite_accessory/tail/kitty + name = "kitty, colorable, downwards" + desc = "" + icon_state = "kittydown" + do_colouration = 1 + color_blend_mode = ICON_MULTIPLY + +/datum/sprite_accessory/tail/kittyup + name = "kitty, colorable, upwards" + desc = "" + icon_state = "kittyup" + do_colouration = 1 + color_blend_mode = ICON_MULTIPLY + +/datum/sprite_accessory/tail/tiger_white + name = "tiger, colorable" + desc = "" + icon_state = "tiger" + do_colouration = 1 + color_blend_mode = ICON_MULTIPLY + extra_overlay = "tigerinnerwhite" + +/datum/sprite_accessory/tail/stripey + name = "stripey taj, colorable" + desc = "" + icon_state = "stripeytail" + do_colouration = 1 + color_blend_mode = ICON_MULTIPLY + extra_overlay = "stripeytail_mark" + +/datum/sprite_accessory/tail/stripeytail_brown + name = "stripey taj, brown" + desc = "" + icon_state = "stripeytail-brown" + +/datum/sprite_accessory/tail/chameleon + name = "Chameleon, colorable" + desc = "" + icon_state = "chameleon" + do_colouration = 1 + color_blend_mode = ICON_MULTIPLY + +/datum/sprite_accessory/tail/bunny + name = "bunny, colorable" + desc = "" + icon_state = "bunny" + do_colouration = 1 + +/datum/sprite_accessory/tail/bear_brown + name = "bear, brown" + desc = "" + icon_state = "bear-brown" + +/datum/sprite_accessory/tail/bear + name = "bear, colorable" + desc = "" + icon_state = "bear" + do_colouration = 1 + color_blend_mode = ICON_MULTIPLY + +/datum/sprite_accessory/tail/dragon + name = "dragon, colorable" + desc = "" + icon_state = "dragon" + do_colouration = 1 + color_blend_mode = ICON_MULTIPLY + +/datum/sprite_accessory/tail/wolf_grey + name = "wolf, grey" + desc = "" + icon_state = "wolf-grey" + +/datum/sprite_accessory/tail/wolf_green + name = "wolf, green" + desc = "" + icon_state = "wolf-green" + +/datum/sprite_accessory/tail/wisewolf + name = "wolf, wise" + desc = "" + icon_state = "wolf-wise" + +/datum/sprite_accessory/tail/blackwolf + name = "wolf, black" + desc = "" + icon_state = "wolf" + +/datum/sprite_accessory/tail/wolf + name = "wolf, colorable" + desc = "" + icon_state = "wolf" + do_colouration = 1 + color_blend_mode = ICON_MULTIPLY + extra_overlay = "wolfinner" + +/datum/sprite_accessory/tail/mouse_pink + name = "mouse, pink" + desc = "" + icon_state = "mouse-pink" + +/datum/sprite_accessory/tail/mouse + name = "mouse, colorable" + desc = "" + icon_state = "mouse" + do_colouration = 1 + color_blend_mode = ICON_MULTIPLY + +/datum/sprite_accessory/tail/horse + name = "horse tail, colorable" + desc = "" + icon_state = "horse" + do_colouration = 1 + color_blend_mode = ICON_MULTIPLY + +/datum/sprite_accessory/tail/cow + name = "cow tail, colorable" + desc = "" + icon_state = "cow" + do_colouration = 1 + color_blend_mode = ICON_MULTIPLY + +/datum/sprite_accessory/tail/fantail + name = "avian fantail, colorable" + desc = "" + icon_state = "fantail" + do_colouration = 1 + color_blend_mode = ICON_MULTIPLY + +/datum/sprite_accessory/tail/wagtail + name = "avian wagtail, colorable" + desc = "" + icon_state = "wagtail" + do_colouration = 1 + color_blend_mode = ICON_MULTIPLY + +/datum/sprite_accessory/tail/crossfox + name = "cross fox" + desc = "" + icon_state = "crossfox" + +/datum/sprite_accessory/tail/beethorax + name = "bee thorax" + desc = "" + icon_state = "beethorax" + +/datum/sprite_accessory/tail/doublekitsune + name = "double kitsune tail, colorable" + desc = "" + icon_state = "doublekitsune" + do_colouration = 1 + color_blend_mode = ICON_MULTIPLY + +/datum/sprite_accessory/tail/spade_color + name = "spade-tail (colorable)" + desc = "" + icon_state = "spadetail-black" + do_colouration = 1 + +/datum/sprite_accessory/tail/snag + name = "xenomorph tail 1" + desc = "" + icon_state = "snag" + +/datum/sprite_accessory/tail/xenotail + name = "xenomorph tail 2" + desc = "" + icon_state = "xenotail" + +/datum/sprite_accessory/tail/eboop + name = "EGN mech tail (dual color)" + desc = "" + icon_state = "eboop" + do_colouration = 1 + color_blend_mode = ICON_MULTIPLY + extra_overlay = "eboop_mark" + +/datum/sprite_accessory/tail/molenar_kitsune + name = "quintail kitsune tails (Molenar)" + desc = "" + icon_state = "molenar-kitsune" + ckeys_allowed = list("molenar") + +/datum/sprite_accessory/tail/miria_fluffdragon + name = "fluffdragon tail (Miria Masters)" + desc = "" + icon_state = "miria-fluffdragontail" + ckeys_allowed = list("miriamasters") + +/datum/sprite_accessory/tail/miria_kitsune + name = "Black kitsune tails (Miria Masters)" + desc = "" + icon_state = "miria-kitsunetail" + ckeys_allowed = list("miriamasters") + +/datum/sprite_accessory/tail/molenar_deathclaw + name = "deathclaw bits (Molenar)" + desc = "" + icon_state = "molenar-deathclaw" + ckeys_allowed = list("molenar","silvertalismen","jertheace") + +/datum/sprite_accessory/tail/runac + name = "fennecsune tails (Runac)" + desc = "" + icon_state = "runac" + ckeys_allowed = list("rebcom1807") + +/datum/sprite_accessory/tail/reika //Leaving this since it was too hard to split the wings from the tail. + name = "fox tail (+ beewings) (Reika)" + desc = "" + icon_state = "reika" + ckeys_allowed = list("rikaru19xjenkins") + +/datum/sprite_accessory/tail/rosey + name = "tritail kitsune tails (Rosey)" + desc = "" + icon_state = "rosey_three" + ckeys_allowed = list("joey4298") + +/datum/sprite_accessory/tail/rosey2 + name = "pentatail kitsune tails (Rosey)" //I predict seven tails next. ~CK + desc = "" + icon_state = "rosey_five" + ckeys_allowed = list("joey4298") + +/datum/sprite_accessory/tail/scree + name = "green taj tail (Scree)" + desc = "" + icon_state = "scree" + ckeys_allowed = list("scree") + +/datum/sprite_accessory/tail/aronai + name = "aronai tail (Aronai)" + desc = "" + icon_state = "aronai" + ckeys_allowed = list("arokha") + +/datum/sprite_accessory/tail/ketrai_wag + name = "fennix tail (vwag)" + desc = "" + icon_state = "ketraitail" + ani_state = "ketraitail_w" + //ckeys_allowed = list("ketrai") //They requested it to be enabled for everyone. + +/datum/sprite_accessory/tail/redpanda + name = "red panda" + desc = "" + icon_state = "redpanda" + +/datum/sprite_accessory/tail/ringtail + name = "ringtail, colorable" + desc = "" + icon_state = "ringtail" + do_colouration = 1 + color_blend_mode = ICON_MULTIPLY + extra_overlay = "ringtail_mark" + +/datum/sprite_accessory/tail/holly + name = "tigress tail (Holly)" + desc = "" + icon_state = "tigresstail" + ckeys_allowed = list("hoodoo") + +/datum/sprite_accessory/tail/satyr + name = "goat legs, colorable" + desc = "" + icon_state = "satyr" + color_blend_mode = ICON_MULTIPLY + do_colouration = 1 + +/datum/sprite_accessory/tail/tailmaw + name = "tailmaw, colorable" + desc = "" + icon_state = "tailmaw" + color_blend_mode = ICON_MULTIPLY + do_colouration = 1 + +/datum/sprite_accessory/tail/curltail + name = "curltail (vwag)" + desc = "" + icon_state = "curltail" + ani_state = "curltail_w" + do_colouration = 1 + color_blend_mode = ICON_MULTIPLY + extra_overlay = "curltail_mark" + extra_overlay_w = "curltail_mark_w" + +/datum/sprite_accessory/tail/shorttail + name = "shorttail (vwag)" + desc = "" + icon_state = "straighttail" + ani_state = "straighttail_w" + do_colouration = 1 + color_blend_mode = ICON_MULTIPLY + +/datum/sprite_accessory/tail/tiger_new + name = "tiger tail (vwag)" + desc = "" + icon_state = "tigertail" + ani_state = "tigertail_w" + do_colouration = 1 + color_blend_mode = ICON_MULTIPLY + extra_overlay = "tigertail_mark" + extra_overlay_w = "tigertail_mark_w" + +/datum/sprite_accessory/tail/vulp_new + name = "new vulp tail (vwag)" + desc = "" + icon_state = "vulptail" + ani_state = "vulptail_w" + do_colouration = 1 + color_blend_mode = ICON_MULTIPLY + extra_overlay = "vulptail_mark" + extra_overlay_w = "vulptail_mark_w" + +/datum/sprite_accessory/tail/otietail + name = "otie tail (vwag)" + desc = "" + icon_state = "otie" + ani_state = "otie_w" + do_colouration = 1 + color_blend_mode = ICON_MULTIPLY + +/datum/sprite_accessory/tail/newtailmaw + name = "new tailmaw (vwag)" + desc = "" + icon_state = "newtailmaw" + ani_state = "newtailmaw_w" + do_colouration = 1 + color_blend_mode = ICON_MULTIPLY + +/datum/sprite_accessory/tail/ztail + name = "jagged flufftail" + desc = "" + icon_state = "ztail" + do_colouration = 1 + color_blend_mode = ICON_MULTIPLY + +/datum/sprite_accessory/tail/snaketail + name = "snake tail, colorable" + desc = "" + icon_state = "snaketail" + do_colouration = 1 + color_blend_mode = ICON_MULTIPLY + +/datum/sprite_accessory/tail/vulpan_alt + name = "vulpkanin alt style, colorable" + desc = "" + icon_state = "vulptail_alt" + do_colouration = 1 + color_blend_mode = ICON_MULTIPLY + +/datum/sprite_accessory/tail/sergaltaildc + name = "sergal, dual-color" + desc = "" + icon_state = "sergal" + do_colouration = 1 + color_blend_mode = ICON_MULTIPLY + extra_overlay = "sergal_mark" + +/datum/sprite_accessory/tail/skunktail + name = "skunk, dual-color" + desc = "" + icon_state = "skunktail" + do_colouration = 1 + color_blend_mode = ICON_MULTIPLY + extra_overlay = "skunktail_mark" + +/datum/sprite_accessory/tail/deertail + name = "deer, dual-color" + desc = "" + icon_state = "deertail" + do_colouration = 1 + color_blend_mode = ICON_MULTIPLY + extra_overlay = "deertail_mark" + +/datum/sprite_accessory/tail/teshari_fluffytail + name = "Teshari alternative, colorable" + desc = "" + icon_state = "teshari_fluffytail" + extra_overlay = "teshari_fluffytail_mark" + do_colouration = 1 + color_blend_mode = ICON_MULTIPLY + +//For all species tails. Includes haircolored tails. +/datum/sprite_accessory/tail/special + name = "Blank tail. Do not select." + icon = 'icons/effects/species_tails_vr.dmi' + +/datum/sprite_accessory/tail/special/unathi + name = "unathi tail" + desc = "" + icon_state = "sogtail_s" + do_colouration = 1 + color_blend_mode = ICON_MULTIPLY + +/datum/sprite_accessory/tail/special/tajaran + name = "tajaran tail" + desc = "" + icon_state = "tajtail_s" + do_colouration = 1 + color_blend_mode = ICON_MULTIPLY + +/datum/sprite_accessory/tail/special/sergal + name = "sergal tail" + desc = "" + icon_state = "sergtail_s" + do_colouration = 1 + color_blend_mode = ICON_MULTIPLY + +/datum/sprite_accessory/tail/special/akula + name = "akula tail" + desc = "" + icon_state = "sharktail_s" + do_colouration = 1 + color_blend_mode = ICON_MULTIPLY + +/datum/sprite_accessory/tail/special/nevrean + name = "nevrean tail" + desc = "" + icon_state = "nevreantail_s" + do_colouration = 1 + color_blend_mode = ICON_MULTIPLY + +/datum/sprite_accessory/tail/special/armalis + name = "armalis tail" + desc = "" + icon_state = "armalis_tail_humanoid_s" + +/datum/sprite_accessory/tail/special/xenodrone + name = "xenomorph drone tail" + desc = "" + icon_state = "xenos_drone_tail_s" + +/datum/sprite_accessory/tail/special/xenosentinel + name = "xenomorph sentinel tail" + desc = "" + icon_state = "xenos_sentinel_tail_s" + +/datum/sprite_accessory/tail/special/xenohunter + name = "xenomorph hunter tail" + desc = "" + icon_state = "xenos_hunter_tail_s" + +/datum/sprite_accessory/tail/special/xenoqueen + name = "xenomorph queen tail" + desc = "" + icon_state = "xenos_queen_tail_s" + +/datum/sprite_accessory/tail/special/monkey + name = "monkey tail" + desc = "" + icon_state = "chimptail_s" + +/datum/sprite_accessory/tail/special/seromitail + name = "seromi tail" + desc = "" + icon_state = "seromitail_s" + do_colouration = 1 + color_blend_mode = ICON_MULTIPLY + +/datum/sprite_accessory/tail/special/seromitailfeathered + name = "seromi tail w/ feathers" + desc = "" + icon_state = "seromitail_s" + extra_overlay = "seromitail_feathers_s" + do_colouration = 1 + color_blend_mode = ICON_MULTIPLY + +/datum/sprite_accessory/tail/special/unathihc + name = "unathi tail, colorable" + desc = "" + icon_state = "sogtail_hc_s" + do_colouration = 1 + color_blend_mode = ICON_MULTIPLY + +/datum/sprite_accessory/tail/special/tajaranhc + name = "tajaran tail, colorable" + desc = "" + icon_state = "tajtail_hc_s" + do_colouration = 1 + color_blend_mode = ICON_MULTIPLY + +/datum/sprite_accessory/tail/special/sergalhc + name = "sergal tail, colorable" + desc = "" + icon_state = "sergtail_hc_s" + do_colouration = 1 + color_blend_mode = ICON_MULTIPLY + +/datum/sprite_accessory/tail/special/akulahc + name = "akula tail, colorable" + desc = "" + icon_state = "sharktail_hc_s" + do_colouration = 1 + color_blend_mode = ICON_MULTIPLY + +/datum/sprite_accessory/tail/special/nevreanhc + name = "nevrean tail, colorable" + desc = "" + icon_state = "nevreantail_hc_s" + do_colouration = 1 + color_blend_mode = ICON_MULTIPLY + +/datum/sprite_accessory/tail/special/foxhc + name = "highlander zorren tail, colorable" + desc = "" + icon_state = "foxtail_hc_s" + do_colouration = 1 + color_blend_mode = ICON_MULTIPLY + +/datum/sprite_accessory/tail/special/fennechc + name = "flatland zorren tail, colorable" + desc = "" + icon_state = "fentail_hc_s" + do_colouration = 1 + color_blend_mode = ICON_MULTIPLY + +/datum/sprite_accessory/tail/special/armalishc + name = "armalis tail, colorable" + desc = "" + icon_state = "armalis_tail_humanoid_hc_s" + do_colouration = 1 + +/datum/sprite_accessory/tail/special/xenodronehc + name = "xenomorph drone tail, colorable" + desc = "" + icon_state = "xenos_drone_tail_hc_s" + do_colouration = 1 + +/datum/sprite_accessory/tail/special/xenosentinelhc + name = "xenomorph sentinel tail, colorable" + desc = "" + icon_state = "xenos_sentinel_tail_hc_s" + do_colouration = 1 + +/datum/sprite_accessory/tail/special/xenohunterhc + name = "xenomorph hunter tail, colorable" + desc = "" + icon_state = "xenos_hunter_tail_hc_s" + do_colouration = 1 + +/datum/sprite_accessory/tail/special/xenoqueenhc + name = "xenomorph queen tail, colorable" + desc = "" + icon_state = "xenos_queen_tail_hc_s" + do_colouration = 1 + +/datum/sprite_accessory/tail/special/monkeyhc + name = "monkey tail, colorable, colorable" + desc = "" + icon_state = "chimptail_hc_s" + do_colouration = 1 + +/datum/sprite_accessory/tail/special/seromitailhc + name = "seromi tail, colorable" + desc = "" + icon_state = "seromitail_hc_s" + do_colouration = 1 + color_blend_mode = ICON_MULTIPLY + +/datum/sprite_accessory/tail/special/seromitailfeatheredhc + name = "seromi tail w/ feathers, colorable" + desc = "" + icon_state = "seromitail_feathers_hc_s" + do_colouration = 1 + color_blend_mode = ICON_MULTIPLY + +/datum/sprite_accessory/tail/special/vulpan + name = "vulpkanin, colorable" + desc = "" + icon_state = "vulptail_s" + do_colouration = 1 + color_blend_mode = ICON_MULTIPLY + + +/datum/sprite_accessory/tail/zenghu_taj + name = "Zeng-Hu Tajaran Synth tail" + desc = "" + icon_state = "zenghu_taj" + +//Taurs moved to a separate file due to extra code around them + +//Buggo Abdomens! + +/datum/sprite_accessory/tail/buggo + name = "Bug abdomen, colorable" + desc = "" + icon_state = "buggo_s" + do_colouration = 1 + color_blend_mode = ICON_MULTIPLY + +/datum/sprite_accessory/tail/buggobee + name = "Bug abdomen, bee top, dual-colorable" + desc = "" + icon_state = "buggo_s" + do_colouration = 1 + color_blend_mode = ICON_MULTIPLY + extra_overlay = "buggobee_markings" + +/datum/sprite_accessory/tail/buggobeefull + name = "Bug abdomen, bee full, dual-colorable" + desc = "" + icon_state = "buggo_s" + do_colouration = 1 + color_blend_mode = ICON_MULTIPLY + extra_overlay = "buggobeefull_markings" + +/datum/sprite_accessory/tail/buggounder + name = "Bug abdomen, underside, dual-colorable" + desc = "" + icon_state = "buggo_s" + do_colouration = 1 + color_blend_mode = ICON_MULTIPLY + extra_overlay = "buggounder_markings" + +/datum/sprite_accessory/tail/buggofirefly + name = "Bug abdomen, firefly, dual-colorable" + desc = "" + icon_state = "buggo_s" + do_colouration = 1 + color_blend_mode = ICON_MULTIPLY + extra_overlay = "buggofirefly_markings" + +/datum/sprite_accessory/tail/buggofat + name = "Fat bug abdomen, colorable" + desc = "" + icon_state = "buggofat_s" + do_colouration = 1 + color_blend_mode = ICON_MULTIPLY + +/datum/sprite_accessory/tail/buggofatbee + name = "Fat bug abdomen, bee top, dual-colorable" + desc = "" + icon_state = "buggofat_s" + do_colouration = 1 + color_blend_mode = ICON_MULTIPLY + extra_overlay = "buggofatbee_markings" + +/datum/sprite_accessory/tail/buggofatbeefull + name = "Fat bug abdomen, bee full, dual-colorable" + desc = "" + icon_state = "buggofat_s" + do_colouration = 1 + color_blend_mode = ICON_MULTIPLY + extra_overlay = "buggofatbeefull_markings" + +/datum/sprite_accessory/tail/buggofatunder + name = "Fat bug abdomen, underside, dual-colorable" + desc = "" + icon_state = "buggofat_s" + do_colouration = 1 + color_blend_mode = ICON_MULTIPLY + extra_overlay = "buggofatunder_markings" + +/datum/sprite_accessory/tail/buggofatfirefly + name = "Fat bug abdomen, firefly, dual-colorable" + desc = "" + icon_state = "buggofat_s" + do_colouration = 1 + color_blend_mode = ICON_MULTIPLY + extra_overlay = "buggofatfirefly_markings" + +/datum/sprite_accessory/tail/buggowag + name = "Bug abdomen, colorable, vwag change" + desc = "" + icon_state = "buggo_s" + ani_state = "buggofat_s" + do_colouration = 1 + color_blend_mode = ICON_MULTIPLY + +/datum/sprite_accessory/tail/buggobeewag + name = "Bug abdomen, bee top, dual color, vwag" + desc = "" + icon_state = "buggo_s" + ani_state = "buggofat_s" + do_colouration = 1 + color_blend_mode = ICON_MULTIPLY + extra_overlay = "buggobee_markings" + extra_overlay_w = "buggofatbee_markings" + +/datum/sprite_accessory/tail/buggobeefullwag + name = "Bug abdomen, bee full, dual color, vwag" + desc = "" + icon_state = "buggo_s" + ani_state = "buggofat_s" + do_colouration = 1 + color_blend_mode = ICON_MULTIPLY + extra_overlay = "buggobeefull_markings" + extra_overlay_w = "buggofatbeefull_markings" + +/datum/sprite_accessory/tail/buggounderwag + name = "Bug abdomen, underside, dual color, vwag" + desc = "" + icon_state = "buggo_s" + ani_state = "buggofat_s" + do_colouration = 1 + color_blend_mode = ICON_MULTIPLY + extra_overlay = "buggounder_markings" + extra_overlay_w = "buggofatunder_markings" + +/datum/sprite_accessory/tail/buggofireflywag + name = "Bug abdomen, firefly, dual color, vwag" + desc = "" + icon_state = "buggo_s" + ani_state = "buggofat_s" + do_colouration = 1 + color_blend_mode = ICON_MULTIPLY + extra_overlay = "buggofirefly_markings" + extra_overlay_w = "buggofatfirefly_markings" + +//Vass buggo variants! + +/datum/sprite_accessory/tail/buggovass + name = "Bug abdomen, vass, colorable" + desc = "" + icon_state = "buggo_vass_s" + do_colouration = 1 + color_blend_mode = ICON_MULTIPLY + +/datum/sprite_accessory/tail/buggovassbee + name = "Bug abdomen, bee top, dc, vass" + desc = "" + icon_state = "buggo_vass_s" + do_colouration = 1 + color_blend_mode = ICON_MULTIPLY + extra_overlay = "buggobee_vass_markings" + +/datum/sprite_accessory/tail/buggovassbeefull + name = "Bug abdomen, bee full, dc, vass" + desc = "" + icon_state = "buggo_vass_s" + do_colouration = 1 + color_blend_mode = ICON_MULTIPLY + extra_overlay = "buggobeefull_vass_markings" + +/datum/sprite_accessory/tail/buggovassunder + name = "Bug abdomen, underside, dc, vass" + desc = "" + icon_state = "buggo_vass_s" + do_colouration = 1 + color_blend_mode = ICON_MULTIPLY + extra_overlay = "buggounder_vass_markings" + +/datum/sprite_accessory/tail/buggovassfirefly + name = "Bug abdomen, firefly, dc, vass" + desc = "" + icon_state = "buggo_vass_s" + do_colouration = 1 + color_blend_mode = ICON_MULTIPLY + extra_overlay = "buggofirefly_vass_markings" + +/datum/sprite_accessory/tail/buggovassfat + name = "Fat bug abdomen, vass, colorable" + desc = "" + icon_state = "buggofat_vass_s" + do_colouration = 1 + color_blend_mode = ICON_MULTIPLY + +/datum/sprite_accessory/tail/buggovassfatbee + name = "Fat bug abdomen, bee top, dc, vass" + desc = "" + icon_state = "buggofat_vass_s" + do_colouration = 1 + color_blend_mode = ICON_MULTIPLY + extra_overlay = "buggofatbee_vass_markings" + +/datum/sprite_accessory/tail/buggovassfatbeefull + name = "Fat bug abdomen, bee full, dc, vass" + desc = "" + icon_state = "buggofat_vass_s" + do_colouration = 1 + color_blend_mode = ICON_MULTIPLY + extra_overlay = "buggofatbeefull_vass_markings" + +/datum/sprite_accessory/tail/buggovassfatunder + name = "Fat bug abdomen, underside, dc, vass" + desc = "" + icon_state = "buggofat_vass_s" + do_colouration = 1 + color_blend_mode = ICON_MULTIPLY + extra_overlay = "buggofatunder_vass_markings" + +/datum/sprite_accessory/tail/buggovassfatfirefly + name = "Fat bug abdomen, firefly, dc, vass" + desc = "" + icon_state = "buggofat_vass_s" + do_colouration = 1 + color_blend_mode = ICON_MULTIPLY + extra_overlay = "buggofatfirefly_vass_markings" + +/datum/sprite_accessory/tail/buggovasswag + name = "Bug abdomen, vass, colorable, vwag change" + desc = "" + icon_state = "buggo_vass_s" + ani_state = "buggofat_vass_s" + do_colouration = 1 + color_blend_mode = ICON_MULTIPLY + +/datum/sprite_accessory/tail/buggovassbeewag + name = "Bug abdomen, bee top, dc, vass, vwag" + desc = "" + icon_state = "buggo_vass_s" + ani_state = "buggofat_vass_s" + do_colouration = 1 + color_blend_mode = ICON_MULTIPLY + extra_overlay = "buggobee_vass_markings" + extra_overlay_w = "buggofatbee_vass_markings" + +/datum/sprite_accessory/tail/buggovassbeefullwag + name = "Bug abdomen, bee full, dc, vass, vwag" + desc = "" + icon_state = "buggo_vass_s" + ani_state = "buggofat_vass_s" + do_colouration = 1 + color_blend_mode = ICON_MULTIPLY + extra_overlay = "buggobeefull_vass_markings" + extra_overlay_w = "buggofatbeefull_vass_markings" + +/datum/sprite_accessory/tail/buggovassunderwag + name = "Bug abdomen, underside, dc, vass, vwag" + desc = "" + icon_state = "buggo_vass_s" + ani_state = "buggofat_vass_s" + do_colouration = 1 + color_blend_mode = ICON_MULTIPLY + extra_overlay = "buggounder_vass_markings" + extra_overlay_w = "buggofatunder_vass_markings" + +/datum/sprite_accessory/tail/buggovassfireflywag + name = "Bug abdomen, firefly, dc, vass, vwag" + desc = "" + icon_state = "buggo_vass_s" + ani_state = "buggofat_vass_s" + do_colouration = 1 + color_blend_mode = ICON_MULTIPLY + extra_overlay = "buggofirefly_vass_markings" + extra_overlay_w = "buggofatfirefly_vass_markings" \ No newline at end of file diff --git a/code/modules/vore/eating/belly_obj_vr.dm b/code/modules/vore/eating/belly_obj_vr.dm index e7f3df020c..dba128e7e0 100644 --- a/code/modules/vore/eating/belly_obj_vr.dm +++ b/code/modules/vore/eating/belly_obj_vr.dm @@ -33,15 +33,16 @@ var/transferlocation // Location that the prey is released if they struggle and get dropped off. var/release_sound = TRUE // Boolean for now, maybe replace with something else later var/mode_flags = 0 // Stripping, numbing, etc. - var/cont_flavor = "Generic" // Selected contamination mode. //I don't think we've ever altered these lists. making them static until someone actually overrides them somewhere. //Actual full digest modes var/tmp/static/list/digest_modes = list(DM_HOLD,DM_DIGEST,DM_ABSORB,DM_DRAIN,DM_UNABSORB,DM_HEAL,DM_SHRINK,DM_GROW,DM_SIZE_STEAL) //Digest mode addon flags - var/tmp/static/list/mode_flag_list = list("Numbing" = DM_FLAG_NUMBING, "Itemweak" = DM_FLAG_ITEMWEAK, "Stripping" = DM_FLAG_STRIPPING) + var/tmp/static/list/mode_flag_list = list("Numbing" = DM_FLAG_NUMBING, "Stripping" = DM_FLAG_STRIPPING) //Transformation modes var/tmp/static/list/transform_modes = list(DM_TRANSFORM_MALE,DM_TRANSFORM_FEMALE,DM_TRANSFORM_KEEP_GENDER,DM_TRANSFORM_CHANGE_SPECIES_AND_TAUR,DM_TRANSFORM_CHANGE_SPECIES_AND_TAUR_EGG,DM_TRANSFORM_REPLICA,DM_TRANSFORM_REPLICA_EGG,DM_TRANSFORM_KEEP_GENDER_EGG,DM_TRANSFORM_MALE_EGG,DM_TRANSFORM_FEMALE_EGG, DM_EGG) + //Item related modes + var/tmp/static/list/item_digest_modes = list(IM_HOLD,IM_DIGEST_FOOD,IM_DIGEST) //List of slots that stripping handles strips var/tmp/static/list/slots = list(slot_back,slot_handcuffed,slot_l_store,slot_r_store,slot_wear_mask,slot_l_hand,slot_r_hand,slot_wear_id,slot_glasses,slot_gloves,slot_head,slot_shoes,slot_belt,slot_wear_suit,slot_w_uniform,slot_s_store,slot_l_ear,slot_r_ear) @@ -103,6 +104,11 @@ "They have something solid in their %belly!", "It looks like they have something in their %belly!") + var/item_digest_mode = IM_DIGEST_FOOD // Current item-related mode from item_digest_modes + var/contaminates = TRUE // Whether the belly will contaminate stuff + var/contamination_flavor = "Generic" // Determines descriptions of contaminated items + var/contamination_color = "green" // Color of contamination overlay + //Mostly for being overridden on precreated bellies on mobs. Could be VV'd into //a carbon's belly if someone really wanted. No UI for carbons to adjust this. //List has indexes that are the digestion mode strings, and keys that are lists of strings. @@ -138,7 +144,10 @@ "examine_messages", "emote_lists", "mode_flags", - "cont_flavor" + "item_digest_mode", + "contaminates", + "contamination_flavor", + "contamination_color" ) /obj/belly/New(var/newloc) @@ -373,8 +382,11 @@ var/obj/item/I = M.get_equipped_item(slot = slot) if(I) M.unEquip(I,force = TRUE) - I.gurgle_contaminate(contents, cont_flavor) //We do an initial contamination pass to get stuff like IDs wet. - if(mode_flags & DM_FLAG_ITEMWEAK) + if(contaminates || istype(I,/obj/item/weapon/card/id)) + I.gurgle_contaminate(contents, contamination_flavor, contamination_color) //We do an initial contamination pass to get stuff like IDs wet. + if(item_digest_mode == IM_HOLD) + items_preserved |= I + else if(item_digest_mode == IM_DIGEST_FOOD && !(istype(I,/obj/item/weapon/reagent_containers/food) || istype(I,/obj/item/organ))) items_preserved |= I //Reagent transfer @@ -580,9 +592,11 @@ content.forceMove(target) if(isitem(content)) var/obj/item/I = content - if(I.gurgled && (target.mode_flags & DM_FLAG_ITEMWEAK)) + if(istype(I,/obj/item/weapon/card/id)) + I.gurgle_contaminate(target.contents, target.contamination_flavor, target.contamination_color) + if(I.gurgled && target.contaminates) I.decontaminate() - I.gurgle_contaminate(target.contents, target.cont_flavor) + I.gurgle_contaminate(target.contents, target.contamination_flavor, target.contamination_color) items_preserved -= content if(!silent && target.vore_sound && !recent_sound) var/soundfile = vore_sounds[target.vore_sound] @@ -619,7 +633,10 @@ dupe.bulge_size = bulge_size dupe.shrink_grow_size = shrink_grow_size dupe.mode_flags = mode_flags - dupe.cont_flavor = cont_flavor + dupe.item_digest_mode = item_digest_mode + dupe.contaminates = contaminates + dupe.contamination_flavor = contamination_flavor + dupe.contamination_color = contamination_color //// Object-holding variables //struggle_messages_outside - strings diff --git a/code/modules/vore/eating/bellymodes_vr.dm b/code/modules/vore/eating/bellymodes_vr.dm index 8a2871b3bb..61b2914828 100644 --- a/code/modules/vore/eating/bellymodes_vr.dm +++ b/code/modules/vore/eating/bellymodes_vr.dm @@ -37,23 +37,26 @@ //Handle stray items if(isitem(A) && !did_an_item) var/obj/item/I = A - if(mode_flags & DM_FLAG_ITEMWEAK) - if(digest_mode == DM_HOLD) - if(istype(I,/obj/item/weapon/reagent_containers/food)) - digest_item(I) - else - items_preserved |= I + if(contaminates || istype(I,/obj/item/weapon/card/id)) + I.gurgle_contaminate(src, contamination_flavor, contamination_color) + if(item_digest_mode == IM_HOLD) + items_preserved |= I + else if(item_digest_mode == IM_DIGEST_FOOD) + if(istype(I,/obj/item/weapon/reagent_containers/food) || istype(I,/obj/item/organ)) + digest_item(I) else - I.gurgle_contaminate(src, cont_flavor) items_preserved |= I - else - I.gurgle_contaminate(src, cont_flavor) + if(prob(25)) //Less often than with normal digestion + play_sound = pick(digestion_sounds) + else if(item_digest_mode == IM_DIGEST) if(I.digest_stage && I.digest_stage > 0) digest_item(I) else digest_item(I) did_an_item = TRUE to_update = TRUE + if(prob(25)) //Less often than with normal digestion + play_sound = pick(digestion_sounds) //Handle eaten mobs else if(isliving(A)) @@ -78,11 +81,21 @@ var/obj/item/I = H.get_equipped_item(slot = slot) if(I) H.unEquip(I,force = TRUE) - if(mode_flags & DM_FLAG_ITEMWEAK) - I.gurgle_contaminate(contents, cont_flavor) + if(contaminates || istype(I,/obj/item/weapon/card/id)) + I.gurgle_contaminate(contents, contamination_flavor, contamination_color) + if(item_digest_mode == IM_HOLD) items_preserved |= I - else + else if(item_digest_mode == IM_DIGEST_FOOD) + if(istype(I,/obj/item/weapon/reagent_containers/food) || istype(I,/obj/item/organ)) + digest_item(I) + else + items_preserved |= I + if(prob(25)) //Less often than with normal digestion + play_sound = pick(digestion_sounds) + else if(item_digest_mode == IM_DIGEST) digest_item(I) + if(prob(25)) //Less often than with normal digestion + play_sound = pick(digestion_sounds) to_update = TRUE break //get rid of things like blood drops and gibs that end up in there @@ -265,8 +278,11 @@ continue if(owner.nutrition > 90 && (M.health < M.maxHealth)) - M.adjustBruteLoss(-5) - M.adjustFireLoss(-5) + M.adjustBruteLoss(-2.5) + M.adjustFireLoss(-2.5) + M.adjustToxLoss(-5) + M.adjustOxyLoss(-5) + M.adjustCloneLoss(-1.25) owner.nutrition -= 2 if(M.nutrition <= 400) M.nutrition += 1 diff --git a/code/modules/vore/eating/contaminate_vr.dm b/code/modules/vore/eating/contaminate_vr.dm index 36ecb8f470..21e3f2abb0 100644 --- a/code/modules/vore/eating/contaminate_vr.dm +++ b/code/modules/vore/eating/contaminate_vr.dm @@ -1,25 +1,46 @@ -var/image/gurgled_overlay = image('icons/effects/sludgeoverlay_vr.dmi') +var/list/gurgled_overlays = list( + "green" = image('icons/effects/sludgeoverlay_vr.dmi', icon_state = "green"), + "white" = image('icons/effects/sludgeoverlay_vr.dmi', icon_state = "white"), + "black" = image('icons/effects/sludgeoverlay_vr.dmi', icon_state = "black"), + "grey" = image('icons/effects/sludgeoverlay_vr.dmi', icon_state = "grey"), + "yellow" = image('icons/effects/sludgeoverlay_vr.dmi', icon_state = "yellow"), + "red" = image('icons/effects/sludgeoverlay_vr.dmi', icon_state = "red"), + "blue" = image('icons/effects/sludgeoverlay_vr.dmi', icon_state = "blue"), + "orange" = image('icons/effects/sludgeoverlay_vr.dmi', icon_state = "orange"), + "purple" = image('icons/effects/sludgeoverlay_vr.dmi', icon_state = "purple"), + "lime" = image('icons/effects/sludgeoverlay_vr.dmi', icon_state = "lime"), + "brown" = image('icons/effects/sludgeoverlay_vr.dmi', icon_state = "brown"), + "darkred" = image('icons/effects/sludgeoverlay_vr.dmi', icon_state = "darkred"), + "cyan" = image('icons/effects/sludgeoverlay_vr.dmi', icon_state = "cyan"), + "beige" = image('icons/effects/sludgeoverlay_vr.dmi', icon_state = "beige"), + "pink" = image('icons/effects/sludgeoverlay_vr.dmi', icon_state = "pink") + ) /obj/item var/gurgled = FALSE var/cleanname var/cleandesc + var/gurgled_color -/obj/item/proc/gurgle_contaminate(var/atom/movable/item_storage = null, var/cont_flavor = "Generic") +/obj/item/proc/gurgle_contaminate(var/atom/movable/item_storage = null, var/contamination_flavor = "Generic", var/contamination_color = "green") if(!can_gurgle()) return FALSE + if(gurgled && !(gurgled_color == contamination_color)) + decontaminate() + if(!gurgled) gurgled = TRUE - overlays += gurgled_overlay - var/list/pickfrom = cont_flavors[cont_flavor] + gurgled_color = contamination_color + overlays += gurgled_overlays[gurgled_color] + var/list/pickfrom = contamination_flavors[contamination_flavor] var/gurgleflavor = pick(pickfrom) cleanname = src.name cleandesc = src.desc name = "[gurgleflavor] [cleanname]" desc = "[cleandesc] It seems to be covered in ominously foul residue and needs a wash." - for(var/obj/item/O in contents) - O.gurgle_contaminate(item_storage, cont_flavor) +// for(var/obj/item/O in contents) //Yeah, no. This contaminates stuff that should never be contaminated in places that should not be reached. Handle it for specific cases instead. +// O.gurgle_contaminate(item_storage, contamination_flavor, contamination_color) return TRUE /obj/item/proc/can_gurgle() @@ -33,7 +54,7 @@ var/image/gurgled_overlay = image('icons/effects/sludgeoverlay_vr.dmi') /obj/item/decontaminate() //Decontaminate the sogginess as well. ..() gurgled = FALSE - overlays -= gurgled_overlay + overlays -= gurgled_overlays[gurgled_color] if(cleanname) name = cleanname if(cleandesc) @@ -79,7 +100,7 @@ var/image/gurgled_overlay = image('icons/effects/sludgeoverlay_vr.dmi') for(var/obj/item/I in contents) remove_from_storage(I, T) new/obj/effect/decal/cleanable/molten_item(T) - qdel() + qdel(src) return ..() @@ -94,8 +115,7 @@ var/image/gurgled_overlay = image('icons/effects/sludgeoverlay_vr.dmi') return FALSE /obj/item/weapon/reagent_containers/food/gurgle_contaminate(var/atom/movable/item_storage = null) - digest_act(item_storage) - return TRUE + return FALSE /obj/item/weapon/holder/gurgle_contaminate(var/atom/movable/item_storage = null) if(isbelly(loc)) @@ -104,8 +124,7 @@ var/image/gurgled_overlay = image('icons/effects/sludgeoverlay_vr.dmi') return FALSE /obj/item/organ/gurgle_contaminate(var/atom/movable/item_storage = null) - digest_act(item_storage) - return TRUE + return FALSE /obj/item/weapon/cell/gurgle_contaminate(var/atom/movable/item_storage = null) if(!gurgled) @@ -118,3 +137,29 @@ var/image/gurgled_overlay = image('icons/effects/sludgeoverlay_vr.dmi') if((. = ..())) name = "soggy [cleanname]" desc = "This soggy box is about to fall apart any time." + +//Storages that contaminate contents +/obj/item/weapon/storage/backpack/gurgle_contaminate(var/atom/movable/item_storage = null, var/contamination_flavor = "Generic", var/contamination_color = "green") + if(contents) + for(var/obj/item/O in contents) + O.gurgle_contaminate(item_storage, contamination_flavor, contamination_color) + ..() + +/obj/item/weapon/storage/belt/gurgle_contaminate(var/atom/movable/item_storage = null, var/contamination_flavor = "Generic", var/contamination_color = "green") + if(contents) + for(var/obj/item/O in contents) + O.gurgle_contaminate(item_storage, contamination_flavor, contamination_color) + ..() + +/obj/item/weapon/storage/belt/gurgle_contaminate(var/atom/movable/item_storage = null, var/contamination_flavor = "Generic", var/contamination_color = "green") + if(contents) + for(var/obj/item/O in contents) + O.gurgle_contaminate(item_storage, contamination_flavor, contamination_color) + ..() + +/obj/item/clothing/suit/storage/gurgle_contaminate(var/atom/movable/item_storage = null, var/contamination_flavor = "Generic", var/contamination_color = "green") + if(pockets) + if(pockets.contents) + for(var/obj/item/O in pockets.contents) + O.gurgle_contaminate(item_storage, contamination_flavor, contamination_color) + ..() \ No newline at end of file diff --git a/code/modules/vore/eating/digest_act_vr.dm b/code/modules/vore/eating/digest_act_vr.dm index b78a91146d..2467f5aaa2 100644 --- a/code/modules/vore/eating/digest_act_vr.dm +++ b/code/modules/vore/eating/digest_act_vr.dm @@ -71,11 +71,16 @@ id = null . = ..() +/obj/item/weapon/card/id + var/lost_access = list() + /obj/item/weapon/card/id/digest_act(var/atom/movable/item_storage = null) desc = "A partially digested card that has seen better days. The damage appears to be only cosmetic, but the access codes need to be reprogrammed at the HoP office." icon = 'icons/obj/card_vr.dmi' icon_state = "[initial(icon_state)]_digested" - access = list() // No access + if(!(LAZYLEN(lost_access)) && LAZYLEN(access)) + lost_access = access //Do not forget what access we lose + access = list() // Then lose it return FALSE /obj/item/weapon/reagent_containers/food/digest_act(var/atom/movable/item_storage = null) diff --git a/code/modules/vore/eating/living_vr.dm b/code/modules/vore/eating/living_vr.dm index 267b059141..8d3cb48d24 100644 --- a/code/modules/vore/eating/living_vr.dm +++ b/code/modules/vore/eating/living_vr.dm @@ -9,9 +9,9 @@ var/weight = 137 // Weight for mobs for weightgain system var/weight_gain = 1 // How fast you gain weight var/weight_loss = 0.5 // How fast you lose weight - var/egg_type = "egg" // Default egg type. + var/vore_egg_type = "egg" // Default egg type. var/feral = 0 // How feral the mob is, if at all. Does nothing for non xenochimera at the moment. - var/reviving = 0 // Only used for creatures that have the xenochimera regen ability, so far. + var/revive_ready = REVIVING_READY // Only used for creatures that have the xenochimera regen ability, so far. var/metabolism = 0.0015 var/vore_taste = null // What the character tastes like var/no_vore = 0 // If the character/mob can vore. @@ -71,12 +71,12 @@ // // Hide vore organs in contents // -/mob/living/view_variables_filter_contents(list/L) - . = ..() - var/len_before = L.len - L -= vore_organs - . += len_before - L.len - +///mob/living/view_variables_filter_contents(list/L) +// . = ..() +// var/len_before = L.len +// L -= vore_organs +// . += len_before - L.len +// // // Handle being clicked, perhaps with something to devour // @@ -331,12 +331,12 @@ return //Actual escaping forceMove(get_turf(src)) //Just move me up to the turf, let's not cascade through bellies, there's been a problem, let's just leave. - for(var/mob/living/simple_animal/SA in range(10)) + for(var/mob/living/simple_mob/SA in range(10)) SA.prey_excludes[src] = world.time log_and_message_admins("[key_name(src)] used the OOC escape button to get out of [key_name(B.owner)] ([B.owner ? "JMP" : "null"])") if(isanimal(B.owner)) - var/mob/living/simple_animal/SA = B.owner + var/mob/living/simple_mob/SA = B.owner SA.update_icons() //You're in a dogborg! diff --git a/code/modules/vore/eating/simple_animal_vr.dm b/code/modules/vore/eating/simple_animal_vr.dm index e8fd6390ed..5ebf7d3507 100644 --- a/code/modules/vore/eating/simple_animal_vr.dm +++ b/code/modules/vore/eating/simple_animal_vr.dm @@ -1,19 +1,19 @@ ///////////////////// Simple Animal ///////////////////// -/mob/living/simple_animal +/mob/living/simple_mob var/swallowTime = 30 //How long it takes to eat its prey in 1/10 of a second. The default is 3 seconds. var/list/prey_excludes = list() //For excluding people from being eaten. // -// Simple nom proc for if you get ckey'd into a simple_animal mob! Avoids grabs. +// Simple nom proc for if you get ckey'd into a simple_mob mob! Avoids grabs. // -/mob/living/simple_animal/proc/animal_nom(var/mob/living/T in living_mobs(1)) +/mob/living/simple_mob/proc/animal_nom(var/mob/living/T in living_mobs(1)) set name = "Animal Nom" set category = "IC" set desc = "Since you can't grab, you get a verb!" if (stat != CONSCIOUS) return - if (istype(src,/mob/living/simple_animal/mouse) && T.ckey == null) + if (istype(src,/mob/living/simple_mob/mouse) && T.ckey == null) return if (client && IsAdvancedToolUser()) to_chat(src,"Put your hands to good use instead!") @@ -25,7 +25,8 @@ // // Simple proc for animals to have their digestion toggled on/off externally // -/mob/living/simple_animal/verb/toggle_digestion() + +/mob/living/simple_mob/verb/toggle_digestion() set name = "Toggle Animal's Digestion" set desc = "Enables digestion on this mob for 20 minutes." set category = "OOC" @@ -34,7 +35,7 @@ var/mob/living/carbon/human/user = usr if(!istype(user) || user.stat) return - if(retaliate || (hostile && faction != user.faction)) + if(ai_holder.retaliate || (ai_holder.hostile && faction != user.faction)) user << "This predator isn't friendly, and doesn't give a shit about your opinions of it digesting you." return if(vore_selected.digest_mode == DM_HOLD) @@ -48,20 +49,21 @@ if(confirm == "Disable") vore_selected.digest_mode = DM_HOLD -/mob/living/simple_animal/attackby(var/obj/item/O, var/mob/user) - if (istype(O, /obj/item/weapon/newspaper) && !(ckey || (hostile && faction != user.faction)) && isturf(user.loc)) - if (retaliate && prob(vore_pounce_chance/2)) // This is a gamble! + +/mob/living/simple_mob/attackby(var/obj/item/O, var/mob/user) + if (istype(O, /obj/item/weapon/newspaper) && !(ckey || (ai_holder.hostile && faction != user.faction)) && isturf(user.loc)) + if (ai_holder.retaliate && prob(vore_pounce_chance/2)) // This is a gamble! user.Weaken(5) //They get tackled anyway whether they're edible or not. user.visible_message("\the [user] swats \the [src] with \the [O] and promptly gets tackled!!") if (will_eat(user)) - stop_automated_movement = 1 + set_AI_busy(TRUE) animal_nom(user) update_icon() - stop_automated_movement = 0 - else if (!target_mob) // no using this to clear a retaliate mob's target - target_mob = user //just because you're not tasty doesn't mean you get off the hook. A swat for a swat. - AttackTarget() - LoseTarget() // only make one attempt at an attack rather than going into full rage mode + set_AI_busy(FALSE) + else if (!ai_holder.target) // no using this to clear a retaliate mob's target + ai_holder.target = user //just because you're not tasty doesn't mean you get off the hook. A swat for a swat. + //AttackTarget() //VOREStation AI Temporary Removal + //LoseTarget() // only make one attempt at an attack rather than going into full rage mode else user.visible_message("\the [user] swats \the [src] with \the [O]!!") release_vore_contents() diff --git a/code/modules/vore/eating/transforming_vr.dm b/code/modules/vore/eating/transforming_vr.dm index b978bf8963..a3ad00ab7a 100644 --- a/code/modules/vore/eating/transforming_vr.dm +++ b/code/modules/vore/eating/transforming_vr.dm @@ -252,13 +252,13 @@ var/egg_path = /obj/structure/closet/secure_closet/egg var/egg_name = "odd egg" - if(O.egg_type in tf_egg_types) - egg_path = tf_egg_types[O.egg_type] - egg_name = "[O.egg_type] egg" + if(O.vore_egg_type in tf_vore_egg_types) + egg_path = tf_vore_egg_types[O.vore_egg_type] + egg_name = "[O.vore_egg_type] egg" var/obj/structure/closet/secure_closet/egg/egg = new egg_path(src) M.forceMove(egg) egg.name = egg_name if(message) to_chat(M, "You lose sensation of your body, feeling only the warmth around you as you're encased in an egg.") - to_chat(O, "Your body shifts as you encase [M] in an egg.") \ No newline at end of file + to_chat(O, "Your body shifts as you encase [M] in an egg.") diff --git a/code/modules/vore/eating/vorepanel_vr.dm b/code/modules/vore/eating/vorepanel_vr.dm index b7ee064846..3e376b883f 100644 --- a/code/modules/vore/eating/vorepanel_vr.dm +++ b/code/modules/vore/eating/vorepanel_vr.dm @@ -2,7 +2,7 @@ // Vore management panel for players // -#define BELLIES_MAX 20 +#define BELLIES_MAX 30 #define BELLIES_NAME_MIN 2 #define BELLIES_NAME_MAX 12 #define BELLIES_DESC_MAX 1024 @@ -204,9 +204,22 @@ dat += " [english_list(flag_list)]" else dat += " None" - if(selected.mode_flags & DM_FLAG_ITEMWEAK) - dat += "
      Contamination Mode:" - dat += "[selected.cont_flavor]" + + //Item Digest Mode Button + dat += "
      Item Mode:" + dat += "[selected.item_digest_mode]" + + //Will it contaminate contents? + dat += "
      Contaminates:" + dat += " [selected.contaminates ? "Yes" : "No"]" + + if(selected.contaminates) + //Contamination descriptors + dat += "
      Contamination Flavor:" + dat += "[selected.contamination_flavor]" + //Contamination color + dat += "
      Contamination Color:" + dat += "[selected.contamination_color]" //Belly verb dat += "
      Vore Verb:" @@ -526,7 +539,7 @@ selected.tf_mode = new_tf_mode selected.digest_mode = new_mode - selected.items_preserved.Cut() //Re-evaltuate all items in belly on belly-mode change + //selected.items_preserved.Cut() //Re-evaltuate all items in belly on belly-mode change //Handled with item modes now if(href_list["b_addons"]) var/list/menu_list = selected.mode_flag_list.Copy() @@ -536,12 +549,33 @@ selected.mode_flags ^= selected.mode_flag_list[toggle_addon] selected.items_preserved.Cut() //Re-evaltuate all items in belly on addon toggle - if(href_list["b_cont_flavor"]) - var/list/menu_list = cont_flavors.Copy() - var/new_flavor = input("Choose Contamination Mode (currently [selected.cont_flavor])") as null|anything in menu_list + if(href_list["b_item_mode"]) + var/list/menu_list = selected.item_digest_modes.Copy() + + var/new_mode = input("Choose Mode (currently [selected.item_digest_mode])") as null|anything in menu_list + if(!new_mode) + return 0 + + selected.item_digest_mode = new_mode + selected.items_preserved.Cut() //Re-evaltuate all items in belly on belly-mode change + + if(href_list["b_contaminates"]) + selected.contaminates = !selected.contaminates + + if(href_list["b_contamination_flavor"]) + var/list/menu_list = contamination_flavors.Copy() + var/new_flavor = input("Choose Contamination Flavor Text Type (currently [selected.contamination_flavor])") as null|anything in menu_list if(!new_flavor) return 0 - selected.cont_flavor = new_flavor + selected.contamination_flavor = new_flavor + + if(href_list["b_contamination_color"]) + var/list/menu_list = contamination_colors.Copy() + var/new_color = input("Choose Contamination Color (currently [selected.contamination_color])") as null|anything in menu_list + if(!new_color) + return 0 + selected.contamination_color = new_color + selected.items_preserved.Cut() //To re-contaminate for new color if(href_list["b_desc"]) var/new_desc = html_encode(input(usr,"Belly Description ([BELLIES_DESC_MAX] char limit):","New Description",selected.desc) as message|null) @@ -634,7 +668,7 @@ if(new_bulge == 0) //Disable. selected.bulge_size = 0 to_chat(user,"Your stomach will not be seen on examine.") - else if (!IsInRange(new_bulge,25,200)) + else if (!ISINRANGE(new_bulge,25,200)) selected.bulge_size = 0.25 //Set it to the default. to_chat(user,"Invalid size.") else if(new_bulge) @@ -644,7 +678,7 @@ var/new_grow = input(user, "Choose the size that prey will be grown/shrunk to, ranging from 25% to 200%", "Set Growth Shrink Size.", selected.shrink_grow_size) as num|null if (new_grow == null) return - if (!IsInRange(new_grow,25,200)) + if (!ISINRANGE(new_grow,25,200)) selected.shrink_grow_size = 1 //Set it to the default to_chat(user,"Invalid size.") else if(new_grow) @@ -654,14 +688,14 @@ var/new_damage = input(user, "Choose the amount of burn damage prey will take per tick. Ranges from 0 to 6.", "Set Belly Burn Damage.", selected.digest_burn) as num|null if(new_damage == null) return - var/new_new_damage = Clamp(new_damage, 0, 6) + var/new_new_damage = CLAMP(new_damage, 0, 6) selected.digest_burn = new_new_damage if(href_list["b_brute_dmg"]) var/new_damage = input(user, "Choose the amount of brute damage prey will take per tick. Ranges from 0 to 6", "Set Belly Brute Damage.", selected.digest_brute) as num|null if(new_damage == null) return - var/new_new_damage = Clamp(new_damage, 0, 6) + var/new_new_damage = CLAMP(new_damage, 0, 6) selected.digest_brute = new_new_damage if(href_list["b_escapable"]) diff --git a/code/modules/vore/fluffstuff/custom_boxes_vr.dm b/code/modules/vore/fluffstuff/custom_boxes_vr.dm index c4e137d137..c434263c5d 100644 --- a/code/modules/vore/fluffstuff/custom_boxes_vr.dm +++ b/code/modules/vore/fluffstuff/custom_boxes_vr.dm @@ -228,7 +228,7 @@ /obj/item/clothing/gloves/fluff/morsleeves, /obj/item/clothing/under/fluff/morunder) -// Mewchild: Phi Ahkeen +// Mewchild: Phi Vietsi /obj/item/weapon/storage/box/fluff/phi name = "Phi's Personal Items" has_items = list( @@ -239,9 +239,20 @@ /obj/item/weapon/grenade/spawnergrenade/spirit name = "spirit's pet carrier" desc = "Contains kitten." - spawner_type = /mob/living/simple_animal/cat/fluff/tabiranth + spawner_type = /mob/living/simple_mob/animal/passive/cat/tabiranth deliveryamt = 1 +// Jwguy: Koyo Akimomi +/obj/item/weapon/storage/box/fluff/koyoakimomi + name = "Koyo's Cosplay Box" + desc = "One of many traditional wolfgirl clothing sets that Koyo owns. Awoo!" + has_items = list( + /obj/item/clothing/head/fluff/wolfgirl, + /obj/item/clothing/shoes/fluff/wolfgirl, + /obj/item/clothing/under/fluff/wolfgirl, + /obj/item/weapon/melee/fluffstuff/wolfgirlsword, + /obj/item/weapon/shield/fluff/wolfgirlshield) + /* Swimsuits, for general use, to avoid arriving to work with your swimsuit. */ diff --git a/code/modules/vore/fluffstuff/custom_clothes_vr.dm b/code/modules/vore/fluffstuff/custom_clothes_vr.dm index 17c734e240..0b94b09e09 100644 --- a/code/modules/vore/fluffstuff/custom_clothes_vr.dm +++ b/code/modules/vore/fluffstuff/custom_clothes_vr.dm @@ -1689,7 +1689,7 @@ Departamental Swimsuits, for general use icon_state = "kilanosuit_p" item_state = "kilanosuit_p" -//Mewchild: Phi Ahkeen +//Mewchild: Phi Vietsi /obj/item/clothing/gloves/ring/seal/signet/fluff/phi name = "Phi's Bone Signet Ring" desc = "A signet ring belonging to Phi, carved from the bones of something long extinct, as a ward against bad luck." diff --git a/code/modules/vore/fluffstuff/custom_guns_vr.dm b/code/modules/vore/fluffstuff/custom_guns_vr.dm index f9a355cef2..7a0b26d176 100644 --- a/code/modules/vore/fluffstuff/custom_guns_vr.dm +++ b/code/modules/vore/fluffstuff/custom_guns_vr.dm @@ -540,26 +540,26 @@ name = "laser beam" icon_state = "xray" light_color = "#00FF00" - muzzle_type = /obj/effect/projectile/xray/muzzle - tracer_type = /obj/effect/projectile/xray/tracer - impact_type = /obj/effect/projectile/xray/impact + muzzle_type = /obj/effect/projectile/muzzle/xray + tracer_type = /obj/effect/projectile/tracer/xray + impact_type = /obj/effect/projectile/impact/xray /obj/item/projectile/beam/imperial name = "laser beam" fire_sound = 'sound/weapons/mandalorian.ogg' icon_state = "darkb" light_color = "#8837A3" - muzzle_type = /obj/effect/projectile/darkmatter/muzzle - tracer_type = /obj/effect/projectile/darkmatter/tracer - impact_type = /obj/effect/projectile/darkmatter/impact + muzzle_type = /obj/effect/projectile/muzzle/darkmatter + tracer_type = /obj/effect/projectile/tracer/darkmatter + impact_type = /obj/effect/projectile/impact/darkmatter /obj/item/projectile/beam/stun/kin21 name = "kinh21 stun beam" icon_state = "omnilaser" light_color = "#0000FF" - muzzle_type = /obj/effect/projectile/laser_omni/muzzle - tracer_type = /obj/effect/projectile/laser_omni/tracer - impact_type = /obj/effect/projectile/laser_omni/impact + muzzle_type = /obj/effect/projectile/muzzle/laser_omni + tracer_type = /obj/effect/projectile/tracer/laser_omni + impact_type = /obj/effect/projectile/impact/laser_omni //--------------- StG-60 ---------------- /obj/item/ammo_magazine/m792 diff --git a/code/modules/vore/fluffstuff/custom_items_vr.dm b/code/modules/vore/fluffstuff/custom_items_vr.dm index b97fb06ba6..9449618a7f 100644 --- a/code/modules/vore/fluffstuff/custom_items_vr.dm +++ b/code/modules/vore/fluffstuff/custom_items_vr.dm @@ -277,7 +277,7 @@ icon_override = 'icons/vore/custom_items_vr.dmi' item_state = "holochain_mob" - flags = CONDUCT | NOBLOODY + flags = NOBLOODY slot_flags = SLOT_BELT force = 10 throwforce = 3 @@ -435,7 +435,7 @@ /obj/item/clothing/accessory/collar/khcrystal/process() check_owner() if((state > 1) || !owner) - processing_objects.Remove(src) + STOP_PROCESSING(SSobj, src) /obj/item/clothing/accessory/collar/khcrystal/attack_self(mob/user as mob) if(state > 0) //Can't re-pair, one time only, for security reasons. @@ -446,7 +446,7 @@ owner_c = user.client //This is his client update_state(1) to_chat(user, "The [name] glows pleasantly blue.") - processing_objects.Add(src) + START_PROCESSING(SSobj, src) /obj/item/clothing/accessory/collar/khcrystal/proc/check_owner() //He's dead, jim @@ -528,7 +528,6 @@ icon_state = "browncane" item_icons = list (slot_r_hand_str = 'icons/vore/custom_items_vr.dmi', slot_l_hand_str = 'icons/vore/custom_items_vr.dmi') item_state_slots = list(slot_r_hand_str = "browncanemob_r", slot_l_hand_str = "browncanemob_l") - flags = CONDUCT force = 5.0 throwforce = 7.0 w_class = ITEMSIZE_SMALL @@ -548,7 +547,6 @@ icon_state = "alexiswand" item_icons = list (slot_r_hand_str = 'icons/vore/custom_items_vr.dmi', slot_l_hand_str = 'icons/vore/custom_items_vr.dmi') item_state_slots = list(slot_r_hand_str = "alexiswandmob_r", slot_l_hand_str = "alexiswandmob_l") - flags = CONDUCT force = 1.0 throwforce = 2.0 w_class = ITEMSIZE_SMALL @@ -613,6 +611,48 @@ slowdown = 0 taurtype = /datum/sprite_accessory/tail/taur/feline/tempest no_message = "These saddlebags seem to be fitted for someone else, and keep slipping off!" + action_button_name = "Toggle Mlembulance Mode" + var/ambulance = FALSE + var/ambulance_state = FALSE + var/ambulance_last_switch = 0 + var/ambulance_volume = 25 //Allows for varediting, just in case + +/obj/item/weapon/storage/backpack/saddlebag/tempest/ui_action_click() + ambulance = !(ambulance) + if(ambulance) + START_PROCESSING(SSobj, src) + item_state = "tempestsaddlebag-amb" + icon_state = "tempestbag-amb" + if (ismob(loc)) + var/mob/M = loc + M.update_inv_back() + ambulance_state = FALSE + set_light(2, 1, "#FF0000") + while(ambulance) + playsound(src.loc, 'sound/items/amulanceweeoo.ogg', ambulance_volume, 0) + sleep(20) + else + item_state = "tempestsaddlebag" + icon_state = "tempestbag" + if (ismob(loc)) + var/mob/M = loc + M.update_inv_back() + set_light(0) + +/obj/item/weapon/storage/backpack/saddlebag/tempest/process() + if(!ambulance) + STOP_PROCESSING(SSobj, src) + return + if(world.time - ambulance_last_switch > 15) + ambulance_state = !(ambulance_state) + var/newlight = "#FF0000" + if(ambulance_state) + newlight = "#0000FF" + if (ismob(loc)) + var/mob/M = loc + M.update_inv_back() + set_light(2, 1, newlight) + ambulance_last_switch = world.time //WickedTempest: Chakat Tempest /obj/item/weapon/implant/reagent_generator/tempest @@ -725,7 +765,7 @@ assigned_proc = /mob/living/carbon/human/proc/use_reagent_implant_roiz /obj/item/weapon/implant/reagent_generator/roiz/post_implant(mob/living/carbon/source) - processing_objects += src + START_PROCESSING(SSobj, src) to_chat(source, "You implant [source] with \the [src].") source.verbs |= assigned_proc return 1 @@ -747,10 +787,11 @@ return var/obj/item/weapon/implant/reagent_generator/roiz/rimplant - for(var/I in contents) - if(istype(I, /obj/item/weapon/implant/reagent_generator)) - rimplant = I - break + for(var/obj/item/organ/external/E in organs) + for(var/obj/item/weapon/implant/I in E.implants) + if(istype(I, /obj/item/weapon/implant/reagent_generator)) + rimplant = I + break if (rimplant) if(rimplant.reagents.total_volume <= rimplant.transfer_amount) to_chat(src, "[pick(rimplant.empty_message)]") @@ -793,7 +834,7 @@ assigned_proc = /mob/living/carbon/human/proc/use_reagent_implant_jasmine /obj/item/weapon/implant/reagent_generator/jasmine/post_implant(mob/living/carbon/source) - processing_objects += src + START_PROCESSING(SSobj, src) to_chat(source, "You implant [source] with \the [src].") source.verbs |= assigned_proc return 1 @@ -815,10 +856,11 @@ return var/obj/item/weapon/implant/reagent_generator/jasmine/rimplant - for(var/I in contents) - if(istype(I, /obj/item/weapon/implant/reagent_generator)) - rimplant = I - break + for(var/obj/item/organ/external/E in organs) + for(var/obj/item/weapon/implant/I in E.implants) + if(istype(I, /obj/item/weapon/implant/reagent_generator)) + rimplant = I + break if (rimplant) if(rimplant.reagents.total_volume <= rimplant.transfer_amount) to_chat(src, "[pick(rimplant.empty_message)]") @@ -861,7 +903,7 @@ assigned_proc = /mob/living/carbon/human/proc/use_reagent_implant_yonra /obj/item/weapon/implant/reagent_generator/yonra/post_implant(mob/living/carbon/source) - processing_objects += src + START_PROCESSING(SSobj, src) to_chat(source, "You implant [source] with \the [src].") source.verbs |= assigned_proc return 1 @@ -883,10 +925,11 @@ return var/obj/item/weapon/implant/reagent_generator/yonra/rimplant - for(var/I in contents) - if(istype(I, /obj/item/weapon/implant/reagent_generator)) - rimplant = I - break + for(var/obj/item/organ/external/E in organs) + for(var/obj/item/weapon/implant/I in E.implants) + if(istype(I, /obj/item/weapon/implant/reagent_generator)) + rimplant = I + break if (rimplant) if(rimplant.reagents.total_volume <= rimplant.transfer_amount) to_chat(src, "[pick(rimplant.empty_message)]") @@ -945,7 +988,7 @@ assigned_proc = /mob/living/carbon/human/proc/use_reagent_implant_rischi /obj/item/weapon/implant/reagent_generator/rischi/post_implant(mob/living/carbon/source) - processing_objects += src + START_PROCESSING(SSobj, src) to_chat(source, "You implant [source] with \the [src].") source.verbs |= assigned_proc return 1 @@ -967,10 +1010,11 @@ return var/obj/item/weapon/implant/reagent_generator/rischi/rimplant - for(var/I in contents) - if(istype(I, /obj/item/weapon/implant/reagent_generator)) - rimplant = I - break + for(var/obj/item/organ/external/E in organs) + for(var/obj/item/weapon/implant/I in E.implants) + if(istype(I, /obj/item/weapon/implant/reagent_generator)) + rimplant = I + break if (rimplant) if(rimplant.reagents.total_volume <= rimplant.transfer_amount) to_chat(src, "[pick(rimplant.empty_message)]") @@ -1640,7 +1684,7 @@ assigned_proc = /mob/living/carbon/human/proc/use_reagent_implant_evian /obj/item/weapon/implant/reagent_generator/evian/post_implant(mob/living/carbon/source) - processing_objects += src + START_PROCESSING(SSobj, src) to_chat(source, "You implant [source] with \the [src].") source.verbs |= assigned_proc return 1 diff --git a/code/modules/vore/fluffstuff/custom_permits_vr.dm b/code/modules/vore/fluffstuff/custom_permits_vr.dm index 204cf164cc..ac8c689094 100644 --- a/code/modules/vore/fluffstuff/custom_permits_vr.dm +++ b/code/modules/vore/fluffstuff/custom_permits_vr.dm @@ -48,6 +48,11 @@ desc = "A card indicating that the owner is allowed to carry a sidearm. It is issued by CentCom, so it is valid until it expires on April 24th, 2562." */ +// ValiTheWolf: Vakashi +/obj/item/clothing/accessory/permit/gun/fluff/Vakashi + name = "Vakashi's Sidearm Permit" + desc = "A card indicating that the owner is allowed to carry a sidearm that uses less-than-lethal munitions. It is issued by CentCom, so it is valid until it expires on March 1st, 2564." + /* silenedmp5a5:Serdykov Antoz /obj/item/clothing/accessory/permit/gun/fluff/silencedmp5a5 name = "Serdykov Antoz's Sidearm Permit" diff --git a/code/modules/vore/fluffstuff/guns/dominator.dm b/code/modules/vore/fluffstuff/guns/dominator.dm index 657ba95738..590e3abd92 100644 --- a/code/modules/vore/fluffstuff/guns/dominator.dm +++ b/code/modules/vore/fluffstuff/guns/dominator.dm @@ -45,6 +45,6 @@ /obj/item/projectile/beam/dominator name = "dominator lethal beam" icon_state = "xray" - muzzle_type = /obj/effect/projectile/xray/muzzle - tracer_type = /obj/effect/projectile/xray/tracer - impact_type = /obj/effect/projectile/xray/impact \ No newline at end of file + muzzle_type = /obj/effect/projectile/muzzle/xray + tracer_type = /obj/effect/projectile/tracer/xray + impact_type = /obj/effect/projectile/impact/xray \ No newline at end of file diff --git a/code/modules/vore/fluffstuff/guns/nsfw.dm b/code/modules/vore/fluffstuff/guns/nsfw.dm index fcf9893a8e..b9d12a9314 100644 --- a/code/modules/vore/fluffstuff/guns/nsfw.dm +++ b/code/modules/vore/fluffstuff/guns/nsfw.dm @@ -134,7 +134,7 @@ add_overlay(barrel_color) //Charge bar - var/ratio = Ceiling((charge_left / max_charge) * charge_sections) + var/ratio = CEILING(((charge_left / max_charge) * charge_sections), 1) for(var/i = 0, i < ratio, i++) var/image/charge_bar = image(icon, icon_state = "[initial(icon_state)]_charge") charge_bar.pixel_x = i @@ -174,7 +174,7 @@ add_overlay(cap) if(batt.shots_left) - var/ratio = Ceiling((batt.shots_left / initial(batt.shots_left)) * 4) //4 is how many lights we have a sprite for + var/ratio = CEILING(((batt.shots_left / initial(batt.shots_left)) * 4), 1) //4 is how many lights we have a sprite for var/image/charge = image(icon, icon_state = "[initial(icon_state)]_charge-[ratio]") charge.color = "#29EAF4" //Could use battery color but eh. charge.pixel_x = current * x_offset @@ -188,7 +188,6 @@ desc = "A miniature battery for an energy weapon." icon = 'icons/obj/ammo_vr.dmi' icon_state = "nsfw_batt" - flags = CONDUCT slot_flags = SLOT_BELT | SLOT_EARS throwforce = 1 w_class = ITEMSIZE_TINY @@ -200,7 +199,7 @@ var/type_name = null projectile_type = /obj/item/projectile/beam -/obj/item/ammo_casing/nsfw_batt/initialize() +/obj/item/ammo_casing/nsfw_batt/Initialize() . = ..() pixel_x = rand(-10, 10) pixel_y = rand(-10, 10) @@ -309,9 +308,9 @@ damage_type = HALLOSS light_color = "#00CC33" - muzzle_type = /obj/effect/projectile/laser_omni/muzzle - tracer_type = /obj/effect/projectile/laser_omni/tracer - impact_type = /obj/effect/projectile/laser_omni/impact + muzzle_type = /obj/effect/projectile/muzzle/laser_omni + tracer_type = /obj/effect/projectile/tracer/laser_omni + impact_type = /obj/effect/projectile/impact/laser_omni /obj/item/projectile/beam/final_option/on_hit(var/atom/impacted) if(isliving(impacted)) diff --git a/code/modules/vore/fluffstuff/guns/protector.dm b/code/modules/vore/fluffstuff/guns/protector.dm index b1b39e6f2d..13253796f5 100644 --- a/code/modules/vore/fluffstuff/guns/protector.dm +++ b/code/modules/vore/fluffstuff/guns/protector.dm @@ -72,7 +72,7 @@ itemState += "[modifystate]" */ if(power_supply) - ratio = Ceiling((power_supply.charge / power_supply.maxcharge) * charge_sections) + ratio = CEILING(((power_supply.charge / power_supply.maxcharge) * charge_sections), 1) if(power_supply.charge < charge_cost) overlays += "[icon_state]_empty" @@ -104,9 +104,9 @@ icon_state = "omnilaser" //A little more cyan light_color = "#00C6FF" agony = 50 //Normal is 40 when this was set - muzzle_type = /obj/effect/projectile/laser_omni/muzzle - tracer_type = /obj/effect/projectile/laser_omni/tracer - impact_type = /obj/effect/projectile/laser_omni/impact + muzzle_type = /obj/effect/projectile/muzzle/laser_omni + tracer_type = /obj/effect/projectile/tracer/laser_omni + impact_type = /obj/effect/projectile/impact/laser_omni //R&D Design /datum/design/item/weapon/protector diff --git a/code/modules/vore/fluffstuff/guns/pummeler.dm b/code/modules/vore/fluffstuff/guns/pummeler.dm index f3d6c546ee..082af9a9cf 100644 --- a/code/modules/vore/fluffstuff/guns/pummeler.dm +++ b/code/modules/vore/fluffstuff/guns/pummeler.dm @@ -34,7 +34,7 @@ check_armour = "melee" embed_chance = 0 vacuum_traversal = 0 - kill_count = 6 //Scary name, but just deletes the projectile after this range + range = 6 //Scary name, but just deletes the projectile after this range /obj/item/projectile/pummel/on_hit(var/atom/movable/target, var/blocked = 0) if(isliving(target)) diff --git a/code/modules/vore/fluffstuff/guns/sickshot.dm b/code/modules/vore/fluffstuff/guns/sickshot.dm index 6afda74a9c..385a69efd6 100644 --- a/code/modules/vore/fluffstuff/guns/sickshot.dm +++ b/code/modules/vore/fluffstuff/guns/sickshot.dm @@ -32,7 +32,7 @@ check_armour = "melee" embed_chance = 0 vacuum_traversal = 0 - kill_count = 5 //Scary name, but just deletes the projectile after this range + range = 5 //Scary name, but just deletes the projectile after this range /obj/item/projectile/sickshot/on_hit(var/atom/movable/target, var/blocked = 0) if(isliving(target)) diff --git a/code/modules/vore/hook-defs_vr.dm b/code/modules/vore/hook-defs_vr.dm index 06734e8245..630bf51b78 100644 --- a/code/modules/vore/hook-defs_vr.dm +++ b/code/modules/vore/hook-defs_vr.dm @@ -11,7 +11,7 @@ /hook/human_new -/hook/simple_animal_new +/hook/simple_mob_new //Hooks for interactions /hook/living_attackby diff --git a/code/modules/vore/persist/persist_vr.dm b/code/modules/vore/persist/persist_vr.dm index eeeca1713e..3372910973 100644 --- a/code/modules/vore/persist/persist_vr.dm +++ b/code/modules/vore/persist/persist_vr.dm @@ -1,5 +1,5 @@ /** - * Stuff having to do with inter-round persistence. + * Stuff having to do with inter-round persistence. */ // Minds represent IC characters. @@ -58,7 +58,7 @@ // For now as a safety measure we will only save if the name matches. if(prefs.real_name != persister.real_name) - log_debug("Persist (P4P): Skipping [persister] becuase ORIG:[persister.real_name] != CURR:[prefs.real_name].") + log_debug("Persist (P4P): Skipping [persister] because ORIG:[persister.real_name] != CURR:[prefs.real_name].") return return prefs diff --git a/code/modules/vore/resizing/resize_vr.dm b/code/modules/vore/resizing/resize_vr.dm index 23987a3fed..1a1fe508c8 100644 --- a/code/modules/vore/resizing/resize_vr.dm +++ b/code/modules/vore/resizing/resize_vr.dm @@ -109,7 +109,7 @@ var/const/RESIZE_A_SMALLTINY = (RESIZE_SMALL + RESIZE_TINY) / 2 var/nagmessage = "Adjust your mass to be a size between 25 to 200% (DO NOT ABUSE)" var/new_size = input(nagmessage, "Pick a Size") as num|null - if(new_size && IsInRange(new_size,25,200)) + if(new_size && ISINRANGE(new_size,25,200)) src.resize(new_size/100) message_admins("[key_name(src)] used the resize command in-game to be [new_size]% size. \ ([src ? "JMP" : "null"])") @@ -132,7 +132,7 @@ var/const/RESIZE_A_SMALLTINY = (RESIZE_SMALL + RESIZE_TINY) / 2 if(!istype(M)) return 0 if(isanimal(M)) - var/mob/living/simple_animal/SA = M + var/mob/living/simple_mob/SA = M if(!SA.has_hands) return 0 if(M.buckled) @@ -155,6 +155,20 @@ var/const/RESIZE_A_SMALLTINY = (RESIZE_SMALL + RESIZE_TINY) / 2 * @return false if normal code should continue, true to prevent normal code. */ /mob/living/proc/handle_micro_bump_helping(var/mob/living/tmob) + //Make sure we would be able to step there in the first place: + var/can_move_into = 1 + if(tmob.loc.density) + can_move_into = 0 + if(can_move_into) + for(var/atom/movable/A in tmob.loc) + if(A == src) + continue + if(!A.CanPass(src, tmob.loc)) + can_move_into = 0 + if(!can_move_into) break + + if(!can_move_into) + return FALSE //Both small! Go ahead and go. if(src.get_effective_size() <= RESIZE_A_SMALLTINY && tmob.get_effective_size() <= RESIZE_A_SMALLTINY) @@ -198,6 +212,21 @@ var/const/RESIZE_A_SMALLTINY = (RESIZE_SMALL + RESIZE_TINY) / 2 /mob/living/proc/handle_micro_bump_other(var/mob/living/tmob) ASSERT(istype(tmob)) + //Can we even step on their tile normally? + var/can_move_into = 1 + if(tmob.loc.density) + can_move_into = 0 + if(can_move_into) + for(var/atom/movable/A in tmob.loc) + if(A == src) + continue + if(!A.CanPass(src, tmob.loc)) + can_move_into = 0 + if(!can_move_into) break + + if(!can_move_into) + return FALSE + //If they're flying, don't do any special interactions. if(ishuman(src)) var/mob/living/carbon/human/P = src @@ -218,10 +247,16 @@ var/const/RESIZE_A_SMALLTINY = (RESIZE_SMALL + RESIZE_TINY) / 2 var/mob/living/carbon/human/H if(ishuman(src)) H = src + else + //If we're not human, can't do the steppy + return FALSE var/mob/living/carbon/human/Ht if(ishuman(tmob)) Ht = tmob + else + //If they're not human, steppy shouldn't happen + return FALSE //Depending on intent... switch(a_intent) diff --git a/code/modules/vore/resizing/sizegun_vr.dm b/code/modules/vore/resizing/sizegun_vr.dm index 27f2d770b8..705bf3538d 100644 --- a/code/modules/vore/resizing/sizegun_vr.dm +++ b/code/modules/vore/resizing/sizegun_vr.dm @@ -65,9 +65,9 @@ check_armour = "laser" var/set_size = 1 //Let's default to 100% - muzzle_type = /obj/effect/projectile/xray/muzzle - tracer_type = /obj/effect/projectile/xray/tracer - impact_type = /obj/effect/projectile/xray/impact + muzzle_type = /obj/effect/projectile/muzzle/xray + tracer_type = /obj/effect/projectile/tracer/xray + impact_type = /obj/effect/projectile/impact/xray on_hit(var/atom/target) var/mob/living/M = target diff --git a/code/modules/xenoarcheaology/anomaly_container.dm b/code/modules/xenoarcheaology/anomaly_container.dm index 6372405300..795cd9d6df 100644 --- a/code/modules/xenoarcheaology/anomaly_container.dm +++ b/code/modules/xenoarcheaology/anomaly_container.dm @@ -7,7 +7,7 @@ var/obj/machinery/artifact/contained -/obj/structure/anomaly_container/initialize() +/obj/structure/anomaly_container/Initialize() . = ..() var/obj/machinery/artifact/A = locate() in loc diff --git a/code/modules/xenoarcheaology/artifacts/autocloner.dm b/code/modules/xenoarcheaology/artifacts/autocloner.dm index 535eee1559..cc7a6cce2b 100644 --- a/code/modules/xenoarcheaology/artifacts/autocloner.dm +++ b/code/modules/xenoarcheaology/artifacts/autocloner.dm @@ -21,25 +21,24 @@ //33% chance to spawn nasties if(prob(33)) - spawn_type = pick(\ - /mob/living/simple_animal/hostile/giant_spider/nurse,\ - /mob/living/simple_animal/hostile/alien,\ - /mob/living/simple_animal/hostile/bear,\ - /mob/living/simple_animal/hostile/carp,\ - /mob/living/simple_animal/hostile/creature\ - ) // Vorestation Edits + spawn_type = pick( + /mob/living/simple_mob/animal/giant_spider/nurse, + /mob/living/simple_mob/animal/space/alien, + /mob/living/simple_mob/animal/space/bear, + /mob/living/simple_mob/creature, + /mob/living/simple_mob/slime/xenobio, + /mob/living/simple_mob/animal/space/carp)// Vorestation edit else spawn_type = pick(\ - /mob/living/simple_animal/cat, - /mob/living/simple_animal/corgi, - /mob/living/simple_animal/corgi/puppy, - /mob/living/simple_animal/chicken, - /mob/living/simple_animal/cow, - /mob/living/simple_animal/parrot, - /mob/living/simple_animal/slime, - /mob/living/simple_animal/crab, - /mob/living/simple_animal/mouse, - /mob/living/simple_animal/retaliate/goat) + /mob/living/simple_mob/animal/passive/cat, + /mob/living/simple_mob/animal/passive/dog/corgi, + /mob/living/simple_mob/animal/passive/dog/corgi/puppy, + /mob/living/simple_mob/animal/passive/chicken, + /mob/living/simple_mob/animal/passive/cow, + /mob/living/simple_mob/animal/passive/bird/parrot, + /mob/living/simple_mob/animal/passive/crab, + /mob/living/simple_mob/animal/passive/mouse, + /mob/living/simple_mob/animal/goat) //todo: how the hell is the asteroid permanently powered? /obj/machinery/auto_cloner/process() diff --git a/code/modules/xenoarcheaology/artifacts/replicator.dm b/code/modules/xenoarcheaology/artifacts/replicator.dm index f5575721e5..af78f320e5 100644 --- a/code/modules/xenoarcheaology/artifacts/replicator.dm +++ b/code/modules/xenoarcheaology/artifacts/replicator.dm @@ -26,9 +26,8 @@ /obj/item/roller, /obj/structure/closet/crate, /obj/structure/closet/acloset, - /mob/living/simple_animal/hostile/mimic/crate, - /mob/living/simple_animal/hostile/viscerator, - /mob/living/simple_animal/hostile/hivebot, + /mob/living/simple_mob/mechanical/viscerator, + /mob/living/simple_mob/mechanical/hivebot, /obj/item/device/analyzer, /obj/item/device/camera, /obj/item/device/flash, @@ -65,6 +64,7 @@ /obj/item/weapon/grenade/chem_grenade/cleaner, /obj/item/weapon/grenade/chem_grenade/metalfoam) +// /mob/living/simple_mob/mimic/crate, // Vorestation edit //VORESTATION AI TEMPORARY REMOVAL, REPLACE BACK IN LIST WHEN FIXED var/quantity = rand(5, 15) for(var/i=0, i= 3) if(prob(5)) charges -= 1 - var/spawn_type = pick(/mob/living/simple_animal/hostile/creature/vore) // Vorestation Edit + var/spawn_type = pick(/mob/living/simple_mob/creature) new spawn_type(pick(view(1,src))) playsound(src.loc, pick('sound/hallucinations/growl1.ogg','sound/hallucinations/growl2.ogg','sound/hallucinations/growl3.ogg'), 50, 1, -3) @@ -143,7 +143,7 @@ /obj/effect/decal/cleanable/blood/splatter/animated/New() ..() - processing_objects.Add(src) + START_PROCESSING(SSobj, src) loc_last_process = src.loc /obj/effect/decal/cleanable/blood/splatter/animated/process() @@ -173,7 +173,7 @@ density = 1 /obj/effect/shadow_wight/New() - processing_objects.Add(src) + START_PROCESSING(SSobj, src) /obj/effect/shadow_wight/process() if(src.loc) @@ -197,7 +197,7 @@ M.sleeping = max(M.sleeping,rand(5,10)) src.loc = null else - processing_objects.Remove(src) + STOP_PROCESSING(SSobj, src) /obj/effect/shadow_wight/Bump(var/atom/obstacle) obstacle << "You feel a chill run down your spine!" diff --git a/code/modules/xenoarcheaology/finds/talking.dm b/code/modules/xenoarcheaology/finds/talking.dm index 72ff1330de..01af7f7a0e 100644 --- a/code/modules/xenoarcheaology/finds/talking.dm +++ b/code/modules/xenoarcheaology/finds/talking.dm @@ -13,11 +13,11 @@ /datum/talking_atom/proc/init() if(holder_atom) - processing_objects.Add(src) + START_PROCESSING(SSobj, src) -/datum/talking_atom/proc/process() +/datum/talking_atom/process() if(!holder_atom) - processing_objects.Remove(src) + STOP_PROCESSING(SSobj, src) else if(heard_words.len >= 1 && world.time > last_talk_time + talk_interval && prob(talk_chance)) SaySomething() diff --git a/code/modules/xenoarcheaology/misc.dm b/code/modules/xenoarcheaology/misc.dm index 43dbc37d8c..9080d94bd3 100644 --- a/code/modules/xenoarcheaology/misc.dm +++ b/code/modules/xenoarcheaology/misc.dm @@ -53,7 +53,7 @@ /obj/structure/bookcase/manuals/xenoarchaeology name = "Xenoarchaeology Manuals bookcase" -/obj/structure/bookcase/manuals/xenoarchaeology/initialize() +/obj/structure/bookcase/manuals/xenoarchaeology/Initialize() . = ..() new /obj/item/weapon/book/manual/excavation(src) new /obj/item/weapon/book/manual/mass_spectrometry(src) diff --git a/code/modules/xenoarcheaology/tools/ano_device_battery.dm b/code/modules/xenoarcheaology/tools/ano_device_battery.dm index a7fdae7553..ce4427d595 100644 --- a/code/modules/xenoarcheaology/tools/ano_device_battery.dm +++ b/code/modules/xenoarcheaology/tools/ano_device_battery.dm @@ -34,7 +34,7 @@ /obj/item/weapon/anodevice/New() ..() - processing_objects.Add(src) + START_PROCESSING(SSobj, src) /obj/item/weapon/anodevice/attackby(var/obj/I as obj, var/mob/user as mob) if(istype(I, /obj/item/weapon/anobattery)) @@ -190,7 +190,7 @@ icon_state = "anodev[round(p,25)]" /obj/item/weapon/anodevice/Destroy() - processing_objects.Remove(src) + STOP_PROCESSING(SSobj, src) ..() /obj/item/weapon/anodevice/attack(mob/living/M as mob, mob/living/user as mob, def_zone) diff --git a/code/modules/xenoarcheaology/tools/artifact_analyser.dm b/code/modules/xenoarcheaology/tools/artifact_analyser.dm index e169a62061..b1b0251d7c 100644 --- a/code/modules/xenoarcheaology/tools/artifact_analyser.dm +++ b/code/modules/xenoarcheaology/tools/artifact_analyser.dm @@ -14,7 +14,7 @@ var/obj/scanned_object var/report_num = 0 -/obj/machinery/artifact_analyser/initialize() +/obj/machinery/artifact_analyser/Initialize() . = ..() reconnect_scanner() diff --git a/code/modules/xenoarcheaology/tools/coolant_tank.dm b/code/modules/xenoarcheaology/tools/coolant_tank.dm index 1ee02211cf..df6c901517 100644 --- a/code/modules/xenoarcheaology/tools/coolant_tank.dm +++ b/code/modules/xenoarcheaology/tools/coolant_tank.dm @@ -5,8 +5,8 @@ icon_state = "coolanttank" amount_per_transfer_from_this = 10 -/obj/structure/reagent_dispensers/coolanttank/New() - ..() +/obj/structure/reagent_dispensers/coolanttank/Initialize() + . = ..() reagents.add_reagent("coolant", 1000) /obj/structure/reagent_dispensers/coolanttank/bullet_act(var/obj/item/projectile/Proj) diff --git a/code/modules/xenoarcheaology/tools/equipment.dm b/code/modules/xenoarcheaology/tools/equipment.dm index 5bc7694df5..a2f21199a4 100644 --- a/code/modules/xenoarcheaology/tools/equipment.dm +++ b/code/modules/xenoarcheaology/tools/equipment.dm @@ -6,6 +6,8 @@ item_state = "engspace_suit" update_icon_define = "icons/mob/spacesuit.dmi" armor = list(melee = 0, bullet = 0, laser = 0, energy = 0, bomb = 0, bio = 100, rad = 100) + max_pressure_protection = 5 * ONE_ATMOSPHERE // Not very good protection, but if an anomaly starts doing gas stuff you're not screwed + min_pressure_protection = 0.4 * ONE_ATMOSPHERE /obj/item/clothing/head/bio_hood/anomaly name = "Anomaly hood" @@ -13,6 +15,8 @@ icon_state = "engspace_helmet" item_state = "engspace_helmet" armor = list(melee = 0, bullet = 0, laser = 0, energy = 0, bomb = 0, bio = 100, rad = 100) + max_pressure_protection = 5 * ONE_ATMOSPHERE // Not very good protection, but if an anomaly starts doing gas stuff you're not screwed + min_pressure_protection = 0.4 * ONE_ATMOSPHERE /obj/item/clothing/suit/space/anomaly name = "Excavation suit" @@ -22,6 +26,7 @@ armor = list(melee = 0, bullet = 0, laser = 0,energy = 0, bomb = 0, bio = 100, rad = 100) allowed = list(/obj/item/device/flashlight,/obj/item/weapon/tank,/obj/item/device/suit_cooling_unit) slowdown = 1 + // Pressure protection inherited from space suits /obj/item/clothing/head/helmet/space/anomaly name = "Excavation hood" diff --git a/code/modules/xenoarcheaology/tools/suspension_generator.dm b/code/modules/xenoarcheaology/tools/suspension_generator.dm index c85307f3ee..3f10320971 100644 --- a/code/modules/xenoarcheaology/tools/suspension_generator.dm +++ b/code/modules/xenoarcheaology/tools/suspension_generator.dm @@ -219,25 +219,25 @@ deactivate() ..() -/obj/machinery/suspension_gen/verb/rotate_ccw() +/obj/machinery/suspension_gen/verb/rotate_counterclockwise() set src in view(1) - set name = "Rotate suspension gen (counter-clockwise)" + set name = "Rotate suspension gen Counterclockwise" set category = "Object" if(anchored) to_chat(usr, "You cannot rotate [src], it has been firmly fixed to the floor.") - else - set_dir(turn(dir, 90)) + return + src.set_dir(turn(src.dir, 90)) -/obj/machinery/suspension_gen/verb/rotate_cw() +/obj/machinery/suspension_gen/verb/rotate_clockwise() set src in view(1) - set name = "Rotate suspension gen (clockwise)" + set name = "Rotate suspension gen Clockwise" set category = "Object" if(anchored) to_chat(usr, "You cannot rotate [src], it has been firmly fixed to the floor.") - else - set_dir(turn(dir, -90)) + return + src.set_dir(turn(src.dir, 270)) /obj/effect/suspension_field name = "energy field" diff --git a/code/modules/xenoarcheaology/tools/tools.dm b/code/modules/xenoarcheaology/tools/tools.dm index 78a1a992e7..c5eb9b35ac 100644 --- a/code/modules/xenoarcheaology/tools/tools.dm +++ b/code/modules/xenoarcheaology/tools/tools.dm @@ -229,10 +229,10 @@ /obj/item/device/beacon_locator/New() ..() - processing_objects.Add(src) + START_PROCESSING(SSobj, src) /obj/item/device/beacon_locator/Destroy() - processing_objects.Remove(src) + STOP_PROCESSING(SSobj, src) ..() /obj/item/device/beacon_locator/process() @@ -254,7 +254,7 @@ if(prob(scan_ticks * 10)) spawn(0) set background = 1 - if(processing_objects.Find(src)) + if(datum_flags & DF_ISPROCESSING) //scan radios in the world to try and find one var/cur_dist = 999 for(var/obj/item/device/radio/beacon/R in all_beacons) diff --git a/code/modules/xenobio/items/extracts.dm b/code/modules/xenobio/items/extracts.dm index 6d472b5a09..397ca52c33 100644 --- a/code/modules/xenobio/items/extracts.dm +++ b/code/modules/xenobio/items/extracts.dm @@ -77,7 +77,7 @@ /datum/chemical_reaction/slime/grey_new_slime/on_reaction(var/datum/reagents/holder) holder.my_atom.visible_message("Infused with phoron, the core begins to quiver and grow, and soon a new baby slime emerges from it!") - new /mob/living/simple_animal/slime(get_turf(holder.my_atom)) + new /mob/living/simple_mob/slime/xenobio(get_turf(holder.my_atom)) ..() /datum/chemical_reaction/slime/grey_monkey @@ -495,16 +495,16 @@ if(!(their_turf in Z.contents)) // Not in the same zone. continue - if(istype(L, /mob/living/simple_animal/slime)) - var/mob/living/simple_animal/slime/S = L - if(S.cold_damage_per_tick <= 0) // Immune to cold. + if(istype(L, /mob/living/simple_mob/slime)) + var/mob/living/simple_mob/slime/S = L + if(S.cold_resist >= 1) // Immune to cold. to_chat(S, "A chill is felt around you, however it cannot harm you.") continue if(S.client) // Don't instantly kill player slimes. to_chat(S, "You feel your body crystalize as an intense chill overwhelms you!") - S.adjustToxLoss(S.cold_damage_per_tick * 2) + S.inflict_cold_damage(100) else - S.adjustToxLoss(S.cold_damage_per_tick * 5) // Metal slimes can survive this 'slime nuke'. + S.inflict_cold_damage(200) // Metal slimes can survive this 'slime nuke'. continue if(ishuman(L)) @@ -552,17 +552,21 @@ required = /obj/item/slime_extract/red /datum/chemical_reaction/slime/red_enrage/on_reaction(var/datum/reagents/holder) - for(var/mob/living/simple_animal/slime/S in view(get_turf(holder.my_atom))) - if(S.stat || S.docile || S.rabid) + for(var/mob/living/simple_mob/slime/S in view(get_turf(holder.my_atom))) + if(S.stat) continue + if(istype(S, /mob/living/simple_mob/slime/xenobio)) + var/mob/living/simple_mob/slime/xenobio/X = S + if(X.harmless) + continue + if(!X.client) + X.enrage() + S.add_modifier(/datum/modifier/berserk, 30 SECONDS) if(S.client) // Player slimes always have free will. to_chat(S, "An intense wave of rage is felt from inside, but you remain in control of yourself.") - continue - - S.enrage() for(var/mob/living/carbon/human/H in view(get_turf(holder.my_atom))) if(H.species.name == SPECIES_PROMETHEAN) @@ -957,8 +961,8 @@ /datum/chemical_reaction/slime/rainbow_random_slime/on_reaction(var/datum/reagents/holder) - var/mob/living/simple_animal/slime/S - var/list/slime_types = typesof(/mob/living/simple_animal/slime) + var/mob/living/simple_mob/slime/xenobio/S + var/list/slime_types = typesof(/mob/living/simple_mob/slime/xenobio) while(slime_types.len) S = pick(slime_types) diff --git a/code/modules/xenobio/items/slime_objects.dm b/code/modules/xenobio/items/slime_objects.dm index 27f6f863eb..aa368f6dd6 100644 --- a/code/modules/xenobio/items/slime_objects.dm +++ b/code/modules/xenobio/items/slime_objects.dm @@ -123,6 +123,6 @@ nutriment_amt = 25 // Very filling. nutriment_desc = list("slime" = 10, "sweetness" = 10, "bliss" = 5) -/obj/item/weapon/reagent_containers/food/snacks/slime/New() - ..() +/obj/item/weapon/reagent_containers/food/snacks/slime/Initialize() + . = ..() bitesize = 5 \ No newline at end of file diff --git a/code/modules/xenobio/items/slimepotions.dm b/code/modules/xenobio/items/slimepotions.dm index df03fdab6f..944853bec7 100644 --- a/code/modules/xenobio/items/slimepotions.dm +++ b/code/modules/xenobio/items/slimepotions.dm @@ -21,7 +21,7 @@ icon_state = "potcyan" description_info = "The slime needs to be alive for this to work. It will reduce the chances of mutation by 15%." -/obj/item/slimepotion/stabilizer/attack(mob/living/simple_animal/slime/M, mob/user) +/obj/item/slimepotion/stabilizer/attack(mob/living/simple_mob/slime/xenobio/M, mob/user) if(!istype(M)) to_chat(user, "The stabilizer only works on slimes!") return ..() @@ -45,7 +45,7 @@ description_info = "The slime needs to be alive for this to work. It will increase the chances of mutation by 12%." icon_state = "potred" -/obj/item/slimepotion/mutator/attack(mob/living/simple_animal/slime/M, mob/user) +/obj/item/slimepotion/mutator/attack(mob/living/simple_mob/slime/xenobio/M, mob/user) if(!istype(M)) to_chat(user, "The mutator only works on slimes!") return ..() @@ -67,20 +67,25 @@ name = "docility agent" desc = "A potent chemical mix that nullifies a slime's hunger, causing it to become docile and tame. It might also work on other creatures?" icon_state = "potlightpink" - description_info = "The target needs to be alive, not already passive, and have animal-like intelligence." + description_info = "The target needs to be alive, not already passive, and be an animal or slime type entity." -/obj/item/slimepotion/docility/attack(mob/living/simple_animal/M, mob/user) +/obj/item/slimepotion/docility/attack(mob/living/simple_mob/M, mob/user) if(!istype(M)) to_chat(user, "The agent only works on creatures!") return ..() if(M.stat == DEAD) to_chat(user, "\The [M] is dead!") return ..() + if(!M.has_AI()) + to_chat(user, span("warning", "\The [M] is too strongly willed for this to affect them.")) // Most likely player controlled. + return + + var/datum/ai_holder/AI = M.ai_holder // Slimes. - if(istype(M, /mob/living/simple_animal/slime)) - var/mob/living/simple_animal/slime/S = M - if(S.docile) + if(istype(M, /mob/living/simple_mob/slime/xenobio)) + var/mob/living/simple_mob/slime/xenobio/S = M + if(S.harmless) to_chat(user, "The slime is already docile!") return ..() @@ -89,22 +94,22 @@ to_chat(M, "You absorb the agent and feel your intense desire to feed melt away.") to_chat(user, "You feed the slime the agent, removing its hunger and calming it.") - // Simple Animals. - else if(istype(M, /mob/living/simple_animal)) - var/mob/living/simple_animal/SA = M - if(SA.intelligence_level > SA_ANIMAL) // So you can't use this on Russians/syndies/hivebots/etc. - to_chat(user, "\The [SA] is too intellient for this to affect them.") + // Simple Mobs. + else if(istype(M, /mob/living/simple_mob)) + var/mob/living/simple_mob/SM = M + if(!(SM.mob_class & MOB_CLASS_SLIME|MOB_CLASS_ANIMAL)) // So you can't use this on Russians/syndies/hivebots/etc. + to_chat(user, "\The [SM] only works on slimes and animals.") return ..() - if(!SA.hostile) - to_chat(user, "\The [SA] is already passive!") + if(!AI.hostile) + to_chat(user, "\The [SM] is already passive!") return ..() - SA.hostile = FALSE + AI.hostile = FALSE to_chat(M, "You consume the agent and feel a serene sense of peace.") - to_chat(user, "You feed \the [SA] the agent, calming it.") + to_chat(user, "You feed \the [SM] the agent, calming it.") playsound(src, 'sound/effects/bubbles.ogg', 50, 1) - M.LoseTarget() // So hostile things stop attacking people even if not hostile anymore. + AI.lost_target() // So hostile things stop attacking people even if not hostile anymore. var/newname = copytext(sanitize(input(user, "Would you like to give \the [M] a name?", "Name your new pet", M.name) as null|text),1,MAX_NAME_LEN) if(newname) @@ -121,7 +126,7 @@ Extra extracts are not passed down to offspring when reproducing." icon_state = "potpurple" -/obj/item/slimepotion/steroid/attack(mob/living/simple_animal/slime/M, mob/user) +/obj/item/slimepotion/steroid/attack(mob/living/simple_mob/slime/xenobio/M, mob/user) if(!istype(M)) to_chat(user, "The steroid only works on slimes!") return ..() @@ -149,7 +154,7 @@ carry over to offspring when reproducing." icon_state = "potpink" -/obj/item/slimepotion/unity/attack(mob/living/simple_animal/slime/M, mob/user) +/obj/item/slimepotion/unity/attack(mob/living/simple_mob/slime/M, mob/user) if(!istype(M)) to_chat(user, "The agent only works on slimes!") return ..() @@ -175,12 +180,12 @@ the user's faction, which means the slime will attack things that are hostile to the user's faction, such as carp, spiders, and other slimes." icon_state = "potred" -/obj/item/slimepotion/loyalty/attack(mob/living/simple_animal/M, mob/user) +/obj/item/slimepotion/loyalty/attack(mob/living/simple_mob/M, mob/user) if(!istype(M)) - to_chat(user, "The agent only works on animals!") + to_chat(user, "The agent only works on creatures!") return ..() - if(M.intelligence_level > SA_ANIMAL) // So you can't use this on Russians/syndies/hivebots/etc. - to_chat(user, "\The [M] is too intellient for this to affect them.") + if(!(M.mob_class & MOB_CLASS_SLIME|MOB_CLASS_ANIMAL)) // So you can't use this on Russians/syndies/hivebots/etc. + to_chat(user, "\The [M] only works on slimes and animals.") return ..() if(M.stat == DEAD) to_chat(user, "The animal is dead!") @@ -188,12 +193,16 @@ if(M.faction == user.faction) to_chat(user, "\The [M] is already loyal to your species!") return ..() + if(!M.has_AI()) + to_chat(user, span("warning", "\The [M] is too strong-willed for this to affect them.")) + return ..() + + var/datum/ai_holder/AI = M.ai_holder to_chat(user, "You feed \the [M] the agent. It will now try to murder things that want to murder you instead.") to_chat(M, "\The [user] feeds you \the [src], and feel that the others will regard you as an outsider now.") M.faction = user.faction - M.attack_same = FALSE - M.LoseTarget() // So hostile things stop attacking people even if not hostile anymore. + AI.lost_target() // So hostile things stop attacking people even if not hostile anymore. playsound(src, 'sound/effects/bubbles.ogg', 50, 1) qdel(src) @@ -206,28 +215,29 @@ their 'friend', and will never attack them. This might also work on other things besides slimes." icon_state = "potlightpink" -/obj/item/slimepotion/friendship/attack(mob/living/simple_animal/M, mob/user) +/obj/item/slimepotion/friendship/attack(mob/living/simple_mob/M, mob/user) if(!istype(M)) - to_chat(user, "The agent only works on animals!") + to_chat(user, "The agent only works on creatures!") return ..() - if(M.intelligence_level > SA_ANIMAL) // So you can't use this on Russians/syndies/hivebots/etc. - to_chat(user, "\The [M] is too intellient for this to affect them.") + if(!(M.mob_class & MOB_CLASS_SLIME|MOB_CLASS_ANIMAL)) // So you can't use this on Russians/syndies/hivebots/etc. + to_chat(user, "\The [M] only works on slimes and animals.") return ..() if(M.stat == DEAD) - to_chat(user, "The animal is dead!") + to_chat(user, "\The [M] is dead!") return ..() if(user in M.friends) to_chat(user, "\The [M] is already loyal to you!") return ..() + if(!M.has_AI()) + to_chat(user, span("warning", "\The [M] is too strong-willed for this to affect them.")) + return ..() + + var/datum/ai_holder/AI = M.ai_holder to_chat(user, "You feed \the [M] the agent. It will now be your best friend.") to_chat(M, "\The [user] feeds you \the [src], and feel that \the [user] wants to be best friends with you.") - if(isslime(M)) - var/mob/living/simple_animal/slime/S = M - S.befriend(user) - else - M.friends.Add(user) - M.LoseTarget() // So hostile things stop attacking people even if not hostile anymore. + M.friends.Add(user) + AI.lost_target() // So hostile things stop attacking people even if not hostile anymore. playsound(src, 'sound/effects/bubbles.ogg', 50, 1) qdel(src) @@ -239,15 +249,16 @@ description_info = "The slime needs to be alive for this to work. It will instantly grow the slime enough to reproduce." icon_state = "potyellow" -/obj/item/slimepotion/feeding/attack(mob/living/simple_animal/slime/M, mob/user) +/obj/item/slimepotion/feeding/attack(mob/living/simple_mob/slime/xenobio/M, mob/user) if(!istype(M)) - to_chat(user, "The mutator only works on slimes!") + to_chat(user, "The feeding agent only works on slimes!") return ..() if(M.stat == DEAD) to_chat(user, "The slime is dead!") return ..() to_chat(user, "You feed the slime the feeding agent. It will now instantly reproduce.") + M.amount_grown = 10 M.make_adult() M.amount_grown = 10 M.reproduce() diff --git a/code/modules/xenobio/items/weapons.dm b/code/modules/xenobio/items/weapons.dm index 8fb5f9eea6..4abb89ffea 100644 --- a/code/modules/xenobio/items/weapons.dm +++ b/code/modules/xenobio/items/weapons.dm @@ -1,6 +1,6 @@ /obj/item/weapon/melee/baton/slime name = "slimebaton" - desc = "A modified stun baton designed to stun slimes and other lesser xeno lifeforms for handling." + desc = "A modified stun baton designed to stun slimes and other lesser slimy xeno lifeforms for handling." icon_state = "slimebaton" item_state = "slimebaton" slot_flags = SLOT_BELT @@ -9,31 +9,29 @@ origin_tech = list(TECH_COMBAT = 2, TECH_BIO = 2) agonyforce = 10 //It's not supposed to be great at stunning human beings. hitcost = 48 //Less zap for less cost - description_info = "This baton will stun a slime or other lesser lifeform for about five seconds, if hit with it while on." + description_info = "This baton will stun a slime or other slime-based lifeform for about five seconds, if hit with it while on." -/obj/item/weapon/melee/baton/slime/attack(mob/M, mob/user, hit_zone) - // Simple Animals. - if(istype(M, /mob/living/simple_animal/slime) && status) - var/mob/living/simple_animal/SA = M - if(SA.intelligence_level <= SA_ANIMAL) // So it doesn't stun hivebots or syndies. - SA.Weaken(5) - if(isslime(SA)) - var/mob/living/simple_animal/slime/S = SA - S.adjust_discipline(3) +/obj/item/weapon/melee/baton/slime/attack(mob/living/L, mob/user, hit_zone) + if(istype(L) && status) // Is it on? + if(L.mob_class & MOB_CLASS_SLIME) // Are they some kind of slime? (Prommies might pass this check someday). + if(isslime(L)) + var/mob/living/simple_mob/slime/S = L + S.slimebatoned(user, 5) // Feral and xenobio slimes will react differently to this. + else + L.Weaken(5) + + // Now for prommies. + if(ishuman(L)) + var/mob/living/carbon/human/H = L + if(H.species && H.species.name == SPECIES_PROMETHEAN) + var/agony_to_apply = 60 - agonyforce + H.apply_damage(agony_to_apply, HALLOSS) - // Prometheans. - if(ishuman(M)) - var/mob/living/carbon/human/H = M - if(H.species && H.species.name == SPECIES_PROMETHEAN && status) - var/agony_to_apply = 60 - agonyforce - H.apply_damage(agony_to_apply, HALLOSS) - ..() - -/obj/item/weapon/melee/baton/slime/loaded/New() ..() +/obj/item/weapon/melee/baton/slime/loaded/Initialize() bcell = new/obj/item/weapon/cell/device(src) update_icon() - return + return ..() // Research borg's version @@ -61,9 +59,9 @@ charge_cost = 120 // Twice as many shots. projectile_type = /obj/item/projectile/beam/stun/xeno accuracy = 30 // Make it a bit easier to hit the slimes. - description_info = "This gun will stun a slime or other lesser lifeform for about two seconds, if hit with the projectile it fires." + description_info = "This gun will stun a slime or other lesser slimy lifeform for about two seconds, if hit with the projectile it fires." description_fluff = "An easy to use weapon designed by NanoTrasen, for NanoTrasen. This weapon is designed to subdue lesser \ - xeno lifeforms at a distance. It is ineffective at stunning larger lifeforms such as humanoids." + slime-based xeno lifeforms at a distance. It is ineffective at stunning non-slimy lifeforms such as humanoids." /obj/item/weapon/gun/energy/taser/xeno/robot // Borg version self_recharge = 1 @@ -71,11 +69,11 @@ recharge_time = 3 /obj/item/weapon/gun/energy/taser/xeno/sec //NT's corner-cutting option for their on-station security. - desc = "An NT Mk30 NL retrofitted to fire beams for subduing non-humanoid xeno life forms." + desc = "An NT Mk30 NL retrofitted to fire beams for subduing non-humanoid slimy xeno life forms." icon_state = "taserblue" item_state = "taser" projectile_type = /obj/item/projectile/beam/stun/xeno/weak - charge_cost = 240 + charge_cost = 480 accuracy = 0 //Same accuracy as a normal Sec taser. description_fluff = "An NT Mk30 NL retrofitted after the events that occurred aboard the NRS Prometheus." @@ -92,9 +90,9 @@ // Probably for the best so that it doesn't harm the slime. taser_effect = FALSE - muzzle_type = /obj/effect/projectile/laser_omni/muzzle - tracer_type = /obj/effect/projectile/laser_omni/tracer - impact_type = /obj/effect/projectile/laser_omni/impact + muzzle_type = /obj/effect/projectile/muzzle/laser_omni + tracer_type = /obj/effect/projectile/tracer/laser_omni + impact_type = /obj/effect/projectile/impact/laser_omni /obj/item/projectile/beam/stun/xeno/weak //Weaker variant for non-research equipment, turrets, or rapid fire types. agony = 3 @@ -102,20 +100,17 @@ /obj/item/projectile/beam/stun/xeno/on_hit(var/atom/target, var/blocked = 0, var/def_zone = null) if(istype(target, /mob/living)) var/mob/living/L = target + if(L.mob_class & MOB_CLASS_SLIME) + if(isslime(L)) + var/mob/living/simple_mob/slime/S = L + S.slimebatoned(firer, round(agony/2)) + else + L.Weaken(round(agony/2)) - // Simple Animals. - if(istype(L, /mob/living/simple_animal/slime)) - var/mob/living/simple_animal/SA = L - if(SA.intelligence_level <= SA_ANIMAL) // So it doesn't stun hivebots or syndies. - SA.Weaken(round(agony/2)) // Less powerful since its ranged, and therefore safer. - if(isslime(SA)) - var/mob/living/simple_animal/slime/S = SA - S.adjust_discipline(round(agony/2)) - - // Prometheans. if(ishuman(L)) var/mob/living/carbon/human/H = L if(H.species && H.species.name == SPECIES_PROMETHEAN) - if(agony == initial(agony)) + if(agony == initial(agony)) // ?????? agony = round((14 * agony) - agony) //60-4 = 56, 56 / 4 = 14. Prior was flat 60 - agony of the beam to equate to 60. + ..() diff --git a/code/modules/xenobio/machinery/processor.dm b/code/modules/xenobio/machinery/processor.dm index 56b7cee3bf..6d888adb26 100644 --- a/code/modules/xenobio/machinery/processor.dm +++ b/code/modules/xenobio/machinery/processor.dm @@ -79,8 +79,8 @@ playsound(src.loc, 'sound/machines/ding.ogg', 50, 1) /obj/machinery/processor/proc/extract(var/atom/movable/AM) - if(istype(AM, /mob/living/simple_animal/slime)) - var/mob/living/simple_animal/slime/S = AM + if(istype(AM, /mob/living/simple_mob/slime)) + var/mob/living/simple_mob/slime/S = AM while(S.cores) new S.coretype(get_turf(src)) playsound(src.loc, 'sound/effects/splat.ogg', 50, 1) @@ -98,8 +98,8 @@ sleep(1 SECOND) /obj/machinery/processor/proc/can_insert(var/atom/movable/AM) - if(istype(AM, /mob/living/simple_animal/slime)) - var/mob/living/simple_animal/slime/S = AM + if(istype(AM, /mob/living/simple_mob/slime)) + var/mob/living/simple_mob/slime/S = AM if(S.stat != DEAD) return FALSE return TRUE diff --git a/code/modules/xenobio2/machinery/core_extractor.dm b/code/modules/xenobio2/machinery/core_extractor.dm index 8bb5bc42fb..e78a162036 100644 --- a/code/modules/xenobio2/machinery/core_extractor.dm +++ b/code/modules/xenobio2/machinery/core_extractor.dm @@ -12,7 +12,7 @@ anchored = 1 circuit = /obj/item/weapon/circuitboard/slimeextractor var/inuse - var/mob/living/simple_animal/xeno/slime/occupant = null + var/mob/living/simple_mob/xeno/slime/occupant = null var/occupiedcolor = "#22FF22" var/emptycolor = "#FF2222" var/operatingcolor = "#FFFF22" @@ -69,11 +69,11 @@ to_chat(user, "The core extractor is locked and running, wait for it to finish.") return - if(!(istype(victim, /mob/living/simple_animal/xeno/slime))) + if(!(istype(victim, /mob/living/simple_mob/xeno/slime))) to_chat(user, "This is not a suitable subject for the core extractor!") return - var/mob/living/simple_animal/xeno/slime/S = victim + var/mob/living/simple_mob/xeno/slime/S = victim if(S.is_child) to_chat(user, "This subject is not developed enough for the core extractor!") return diff --git a/code/modules/xenobio2/machinery/gene_manipulators.dm b/code/modules/xenobio2/machinery/gene_manipulators.dm index 76bab91b59..4b2081b7d7 100644 --- a/code/modules/xenobio2/machinery/gene_manipulators.dm +++ b/code/modules/xenobio2/machinery/gene_manipulators.dm @@ -263,7 +263,7 @@ disk_needs_genes = 1 circuit = /obj/item/weapon/circuitboard/biobombarder - var/mob/living/simple_animal/xeno/slime/occupant + var/mob/living/simple_mob/xeno/slime/occupant /obj/machinery/xenobio/editor/New() ..() @@ -284,7 +284,7 @@ return else if(isxeno(G.affecting)) - var/mob/living/simple_animal/xeno/X = G.affecting + var/mob/living/simple_mob/xeno/X = G.affecting if(do_after(user, 30) && X.Adjacent(src) && user.Adjacent(src) && X.Adjacent(user) && !occupant) user.drop_from_inventory(G) X.forceMove(src) @@ -381,7 +381,7 @@ to_chat(user, "The [src] is locked and running, wait for it to finish.") return - if(!(istype(victim, /mob/living/simple_animal/xeno/slime)) ) + if(!(istype(victim, /mob/living/simple_mob/xeno/slime)) ) to_chat(user, "This is not a suitable subject for the [src]!") return diff --git a/code/modules/xenobio2/machinery/injector.dm b/code/modules/xenobio2/machinery/injector.dm index c181f1f104..5761f6b390 100644 --- a/code/modules/xenobio2/machinery/injector.dm +++ b/code/modules/xenobio2/machinery/injector.dm @@ -51,7 +51,7 @@ user << "The injector is full, empty it first!" return - if(!(istype(victim, /mob/living/simple_animal/xeno)) && !emagged) + if(!(istype(victim, /mob/living/simple_mob/xeno)) && !emagged) user << "This is not a suitable subject for the injector!" return @@ -85,7 +85,7 @@ if(!occupant) return if(isxeno(occupant)) - var/mob/living/simple_animal/xeno/X = occupant + var/mob/living/simple_mob/xeno/X = occupant beaker.reagents.trans_to_holder(X.reagents, computer.transfer_amount, 1, 0) else beaker.reagents.trans_to_mob(occupant, computer.transfer_amount) diff --git a/code/modules/xenobio2/machinery/injector_computer.dm b/code/modules/xenobio2/machinery/injector_computer.dm index 4632505c73..152e181e90 100644 --- a/code/modules/xenobio2/machinery/injector_computer.dm +++ b/code/modules/xenobio2/machinery/injector_computer.dm @@ -59,7 +59,7 @@ if(injector.occupant) data["occupied"] = 1 if(isxeno(injector.occupant)) - var/mob/living/simple_animal/xeno/X = injector.occupant + var/mob/living/simple_mob/xeno/X = injector.occupant data["compatible"] = 1 data["instability"] = 100 * (X.mut_level / X.mut_max) else diff --git a/code/modules/xenobio2/machinery/slime_replicator.dm b/code/modules/xenobio2/machinery/slime_replicator.dm index 8fb54929fe..dfd9ac3d6e 100644 --- a/code/modules/xenobio2/machinery/slime_replicator.dm +++ b/code/modules/xenobio2/machinery/slime_replicator.dm @@ -71,7 +71,7 @@ update_light_color() icon_state = "restruct_1" spawn(30) - var/mob/living/simple_animal/xeno/slime/S = new(src) + var/mob/living/simple_mob/xeno/slime/S = new(src) S.traitdat = new() //New instance, so that if the core is deleted, the slime retains a trait datum. S.nameVar = core.nameVar S.name = "[S.nameVar] baby slime" diff --git a/code/modules/xenobio2/mob/slime/slime life.dm b/code/modules/xenobio2/mob/slime/slime life.dm index 4853454476..ef5f4aa2a5 100644 --- a/code/modules/xenobio2/mob/slime/slime life.dm +++ b/code/modules/xenobio2/mob/slime/slime life.dm @@ -3,7 +3,7 @@ Slime specific life events go here. */ #define HAPPYLEVEL 200 #define ANGRYLEVEL 10 -/mob/living/simple_animal/xeno/slime/Life() +/mob/living/simple_mob/xeno/slime/Life() . = ..() if(..()) if(health) @@ -15,8 +15,8 @@ Slime specific life events go here. growthcounter-- if(growthcounter >= growthpoint) src.GrowUp() - - else + + else if(nutrition < 0) nutrition = 0 if((prob(10) && !emote_on)) //Slimes might display their food-based emotions over time. @@ -28,7 +28,7 @@ Slime specific life events go here. I.icon_state = "aslime-:33" else I.icon_state = "aslime-:3" - + else if((nutrition > ANGRYLEVEL)) if((nutrition >= 10 * ANGRYLEVEL)) I.icon_state = "aslime-pout" @@ -41,7 +41,7 @@ Slime specific life events go here. spawn(30) GenerateAdultIcon() emote_on = null - + else if(is_child) icon_state = "slime baby dead" @@ -49,7 +49,7 @@ Slime specific life events go here. overlays.Cut() icon_state = "slime adult dead" color = traitdat.traits[TRAIT_XENO_COLOR] - + return 0 //Everything worked okay - + return //xeno/Life() returned 0. \ No newline at end of file diff --git a/code/modules/xenobio2/mob/slime/slime procs.dm b/code/modules/xenobio2/mob/slime/slime procs.dm index f2ee6013b7..bd74562d9f 100644 --- a/code/modules/xenobio2/mob/slime/slime procs.dm +++ b/code/modules/xenobio2/mob/slime/slime procs.dm @@ -2,10 +2,10 @@ Slime specific procs go here. */ #define SHINYOVERLAY 0 -#define LIGHTOVERLAY 1 +#define LIGHTOVERLAY 1 #define MAXOVERLAY 2 //Should be 1 + last overlay, to give the chance for matte slimes -/mob/living/simple_animal/xeno/slime/RandomizeTraits() +/mob/living/simple_mob/xeno/slime/RandomizeTraits() traitdat.traits[TRAIT_XENO_COLDRES] = rand(30,270) traitdat.traits[TRAIT_XENO_HEATRES] = rand(30,270) traitdat.traits[TRAIT_XENO_CHEMVOL] = round(rand(20,40)) //Wow, a slime core with the capacity to hold 2/3rd's a beaker's worth of chemicals. @@ -23,8 +23,8 @@ Slime specific procs go here. traitdat.traits[TRAIT_XENO_STR_RANGE] =round(rand(0,2)) traitdat.traits[TRAIT_XENO_CANLEARN] = prob(68) traitdat.traits[TRAIT_XENO_SPEED] = round(rand(-10,10)) - -/mob/living/simple_animal/xeno/slime/RandomChemicals() + +/mob/living/simple_mob/xeno/slime/RandomChemicals() ..() if(prob(40)) var/hasMutToxin @@ -34,7 +34,7 @@ Slime specific procs go here. var/chemamount if(hasMutToxin) var/list/chemchoices = (xenoChemList - traitdat.chems) - + var/chemtype = pick(chemchoices) chemamount = rand(1,5) traitdat.chems[chemtype] = chemamount @@ -42,16 +42,16 @@ Slime specific procs go here. chemamount = rand(1,5) traitdat.chems["mutationtoxin"] = chemamount -/mob/living/simple_animal/xeno/slime/proc/GrowUp() +/mob/living/simple_mob/xeno/slime/proc/GrowUp() GenerateAdult() - + maxHealth = traitdat.get_trait(TRAIT_XENO_HEALTH) health = maxHealth is_child = 0 - + return 1 - -/mob/living/simple_animal/xeno/slime/Mutate() + +/mob/living/simple_mob/xeno/slime/Mutate() ..() cores = round(rand(1,9)) if(is_child) @@ -59,8 +59,8 @@ Slime specific procs go here. GenerateChild() else GenerateAdult() - -/mob/living/simple_animal/xeno/slime/proc/GenerateChild() + +/mob/living/simple_mob/xeno/slime/proc/GenerateChild() overlays.Cut() name = "[nameVar] baby slime" real_name = "[nameVar] baby slime" @@ -71,10 +71,10 @@ Slime specific procs go here. color = traitdat.traits[TRAIT_XENO_COLOR] maxHealth = traitdat.traits[TRAIT_XENO_HEALTH]/2 health = maxHealth - + return 1 - -/mob/living/simple_animal/xeno/slime/proc/GenerateAdult() + +/mob/living/simple_mob/xeno/slime/proc/GenerateAdult() overlays.Cut() name = "[nameVar] slime" real_name = "[nameVar] slime" @@ -83,15 +83,15 @@ Slime specific procs go here. icon_state = "" overlay = round(rand(0, MAXOVERLAY)) GenerateAdultIcon() - -/mob/living/simple_animal/xeno/slime/proc/GenerateAdultIcon() //Hack and slash adventure game to make slimes have no color on light effects later + +/mob/living/simple_mob/xeno/slime/proc/GenerateAdultIcon() //Hack and slash adventure game to make slimes have no color on light effects later overlays.Cut() var/image/Img = new(src.icon) Img.icon_state = "slime adult" Img.color = traitdat.traits[TRAIT_XENO_COLOR] Img.layer = src.layer overlays += Img - + switch(overlay) if(SHINYOVERLAY) var/image/I = new(src.icon) @@ -109,7 +109,7 @@ Slime specific procs go here. I.color = "#FFFFFF" overlays += I -/mob/living/simple_animal/xeno/slime/handle_reagents() +/mob/living/simple_mob/xeno/slime/handle_reagents() if(!stasis) if(!reagents) return @@ -119,11 +119,10 @@ Slime specific procs go here. hostile = 0 traitdat.traits[TRAIT_XENO_HOSTILE] = 0 ..() - -/mob/living/simple_animal/xeno/slime/ProcessTraits() + +/mob/living/simple_mob/xeno/slime/ProcessTraits() ..() if(is_child) GenerateChild() else GenerateAdult() - \ No newline at end of file diff --git a/code/modules/xenobio2/mob/slime/slime.dm b/code/modules/xenobio2/mob/slime/slime.dm index 44a1246e1d..3d52c053d8 100644 --- a/code/modules/xenobio2/mob/slime/slime.dm +++ b/code/modules/xenobio2/mob/slime/slime.dm @@ -1,7 +1,7 @@ /* Slime definitions, Life and New live here. */ -/mob/living/simple_animal/xeno/slime //Adult values are found here +/mob/living/simple_mob/xeno/slime //Adult values are found here nameVar = "grey" //When mutated, nameVar might change. desc = "A shifting, mass of goo." faction = "slime" @@ -80,7 +80,7 @@ Slime definitions, Life and New live here. "woodpulp" = list("heal" = 0.1, "nutr" = 0.7), "docilitytoxin" = list("nutr" = 0.3) ) -/mob/living/simple_animal/xeno/slime/New() +/mob/living/simple_mob/xeno/slime/New() ..() for(var/datum/language/L in (typesof(/datum/language) - /datum/language)) languages += L diff --git a/code/modules/xenobio2/mob/xeno procs.dm b/code/modules/xenobio2/mob/xeno procs.dm index 03fde9efc8..4b05bbf2e9 100644 --- a/code/modules/xenobio2/mob/xeno procs.dm +++ b/code/modules/xenobio2/mob/xeno procs.dm @@ -8,7 +8,7 @@ Procs for copying speech, if applicable Procs for targeting Divergence proc, used in mutation to make unique datums. */ -/mob/living/simple_animal/xeno/proc/ProcessTraits() +/mob/living/simple_mob/xeno/proc/ProcessTraits() if(maleable >= MAX_MALEABLE) maxHealth = traitdat.get_trait(TRAIT_XENO_HEALTH) health = maxHealth @@ -46,7 +46,7 @@ Divergence proc, used in mutation to make unique datums. //Metabolism proc, simplified for xenos. Heavily based on botanical metabolism. -/mob/living/simple_animal/xeno/proc/handle_reagents() +/mob/living/simple_mob/xeno/proc/handle_reagents() if(!stasis) if(!reagents) return @@ -85,13 +85,13 @@ Divergence proc, used in mutation to make unique datums. return 1 //Everything worked out okay. return 0 - -/mob/living/simple_animal/xeno/proc/diverge() + +/mob/living/simple_mob/xeno/proc/diverge() var/datum/xeno/traits/newtraits = new() newtraits.copy_traits(traitdat) return newtraits -/mob/living/simple_animal/xeno/proc/Mutate() +/mob/living/simple_mob/xeno/proc/Mutate() traitdat = diverge() nameVar = "mutated" if((COLORMUT & mutable)) @@ -109,10 +109,10 @@ Divergence proc, used in mutation to make unique datums. ProcessTraits() return 1 -/mob/living/simple_animal/xeno/proc/RandomizeTraits() +/mob/living/simple_mob/xeno/proc/RandomizeTraits() return -/mob/living/simple_animal/xeno/hear_say(var/message, var/verb = "says", var/datum/language/language, var/alt_name = "",var/italics = 0, var/mob/speaker = null) +/mob/living/simple_mob/xeno/hear_say(var/message, var/verb = "says", var/datum/language/language, var/alt_name = "",var/italics = 0, var/mob/speaker = null) if(traitdat.traits[TRAIT_XENO_CANLEARN]) /* Until this gets sorted out to a functioning point, or waiting on Psi's saycode update. @@ -130,7 +130,7 @@ Divergence proc, used in mutation to make unique datums. speech_buffer.Add(message) ..(message,verb,language,alt_name,italics,speaker) -/mob/living/simple_animal/xeno/proc/ProcessSpeechBuffer() +/mob/living/simple_mob/xeno/proc/ProcessSpeechBuffer() if(speech_buffer.len) if(prob(traitdat.get_trait(TRAIT_XENO_LEARNCHANCE)) && traitdat.get_trait(TRAIT_XENO_CANLEARN)) var/chosen = pick(speech_buffer) @@ -140,10 +140,10 @@ Divergence proc, used in mutation to make unique datums. log_debug("Speechlist cut.") */ speech_buffer.Cut() // -/mob/living/simple_animal/xeno/proc/BuildReagentLists() +/mob/living/simple_mob/xeno/proc/BuildReagentLists() return -/mob/living/simple_animal/xeno/bullet_act(var/obj/item/projectile/P) +/mob/living/simple_mob/xeno/bullet_act(var/obj/item/projectile/P) //Shamelessly stolen from ablative armor. if((traitdat.traits[TRAIT_XENO_CHROMATIC]) && istype(P, /obj/item/projectile/beam)) visible_message(")\The beam reflects off of the [src]!") @@ -161,7 +161,7 @@ Divergence proc, used in mutation to make unique datums. else ..() -/mob/living/simple_animal/xeno/proc/RandomChemicals() +/mob/living/simple_mob/xeno/proc/RandomChemicals() traitdat.chems.Cut() //Clear the amount first. var/num_chems = round(rand(1,4)) diff --git a/code/modules/xenobio2/mob/xeno.dm b/code/modules/xenobio2/mob/xeno.dm index 9a854e9d8e..648c1f1e10 100644 --- a/code/modules/xenobio2/mob/xeno.dm +++ b/code/modules/xenobio2/mob/xeno.dm @@ -5,7 +5,7 @@ Basic definition of creatures for Xenobiology Also includes Life and New */ -/mob/living/simple_animal/xeno +/mob/living/simple_mob/xeno name = "Xeno" real_name = "Xeno" faction = "xeno" //Needs to be set. @@ -46,7 +46,7 @@ Also includes Life and New //Life additions -/mob/living/simple_animal/xeno/Life() +/mob/living/simple_mob/xeno/Life() if(stasis) stasis-- if(stasis < 0) @@ -74,7 +74,7 @@ Also includes Life and New return 1 //Everything worked okay. -/mob/living/simple_animal/xeno/New() +/mob/living/simple_mob/xeno/New() traitdat = new() @@ -95,13 +95,13 @@ Also includes Life and New if(!health) stat = DEAD -/mob/living/simple_animal/xeno/bullet_act(var/obj/item/projectile/Proj) +/mob/living/simple_mob/xeno/bullet_act(var/obj/item/projectile/Proj) if(istype(Proj, /obj/item/projectile/beam/stun/xeno)) var/obj/item/projectile/beam/stun/xeno/hit = Proj stasis += hit.stasisforce ..() -/mob/living/simple_animal/xeno/Destroy() +/mob/living/simple_mob/xeno/Destroy() traitdat.Destroy() //Let's clean up after ourselves. traitdat = null ..() \ No newline at end of file diff --git a/code/modules/xenobio2/tools/xeno_trait_scanner.dm b/code/modules/xenobio2/tools/xeno_trait_scanner.dm index 565db47364..6de41cc3d4 100644 --- a/code/modules/xenobio2/tools/xeno_trait_scanner.dm +++ b/code/modules/xenobio2/tools/xeno_trait_scanner.dm @@ -45,15 +45,15 @@ var/growth_max if(istype(target,/obj/structure/table)) return ..() - else if(istype(target,/mob/living/simple_animal/xeno)) + else if(istype(target,/mob/living/simple_mob/xeno)) - var/mob/living/simple_animal/xeno/X = target - if(istype(X, /mob/living/simple_animal/xeno/slime)) - var/mob/living/simple_animal/xeno/slime/S = X + var/mob/living/simple_mob/xeno/X = target + if(istype(X, /mob/living/simple_mob/xeno/slime)) + var/mob/living/simple_mob/xeno/slime/S = X if(S.is_child) growth_level = S.growthcounter growth_max = S.growthpoint - + targetName = X.name trait_info = X.traitdat @@ -109,7 +109,7 @@ dat += "It bears characteristics that indicate susceptibility to damage.
      " else dat += "It bears no characters indicating resilience to damage.
      " - + if(growth_max) if(growth_level < 35) dat += "It appears to be far to growing up.
      " @@ -137,7 +137,7 @@ dat += "It appears to be agile.
      " else if(trait_info.get_trait(TRAIT_XENO_SPEED) > 0) dat += "It appears to be slower.
      " - + if(trait_info.get_trait(TRAIT_XENO_CANSPEAK)) dat += "
      The subject appears to be able to articulate." @@ -149,18 +149,18 @@ if(trait_info.get_trait(TRAIT_XENO_CANLEARN)) dat += "
      The subject appears to have process verbal information." - + if(trait_info.get_trait(TRAIT_XENO_LEARNCHANCE)) if(trait_info.get_trait(TRAIT_XENO_LEARNCHANCE) < 50) dat += "The subject appears to comprehend verbal information infrequently.
      " else if(trait_info.get_trait(TRAIT_XENO_LEARNCHANCE) > 51) dat += "The subject appears to comprehend verbal information frequently.
      " - + if(trait_info.get_trait(TRAIT_XENO_STRENGTH) < 5) dat += "It appears to have lower average physical capacity.
      " else if(trait_info.get_trait(TRAIT_XENO_STRENGTH) > 7) dat += "It appears to have greater average physical capacity.
      " - + if(trait_info.get_trait(TRAIT_XENO_STR_RANGE)) if(trait_info.get_trait(TRAIT_XENO_STR_RANGE) < 50) dat += "The subject appears to have more consistent attacks.
      " @@ -172,11 +172,11 @@ if(trait_info.get_trait(TRAIT_XENO_HOSTILE)) dat += "
      The subject appears to have hostile tendencies." - + if(trait_info.get_trait(TRAIT_XENO_CHROMATIC)) dat += "
      The subject appears to have chromatic particles inside of it." - + if(dat) last_data = dat dat += "

      \[print report\]" diff --git a/code/stylesheet.dm b/code/stylesheet.dm index 25e317e6e4..4fc84eeee6 100644 --- a/code/stylesheet.dm +++ b/code/stylesheet.dm @@ -104,6 +104,7 @@ h1.alert, h2.alert {color: #000000;} .daemon {color: #5E339E; letter-spacing:-1pt; word-spacing:0pt; font-family: "Courier New", Courier, monospace;} .bug {color: #9e9e39;} .vox {color: #AA00AA;} +.zaddat {color: #941C1C;} .rough {font-family: "Trebuchet MS", cursive, sans-serif;} .say_quote {font-family: Georgia, Verdana, sans-serif;} .terminus {font-family: "Times New Roman", Times, serif, sans-serif} @@ -111,4 +112,11 @@ h1.alert, h2.alert {color: #000000;} BIG IMG.icon {width: 32px; height: 32px;} +/* Debug Logs */ +.debug_error {color:#FF0000; font-weight:bold} +.debug_warning {color:#FF0000;} +.debug_info {} +.debug_debug {color:#0000FF;} +.debug_trace {color:#888888;} + "} diff --git a/code/world.dm b/code/world.dm index 03d7fe0127..1c43ce6132 100644 --- a/code/world.dm +++ b/code/world.dm @@ -1,728 +1,7 @@ - -/* - The initialization of the game happens roughly like this: - - 1. All global variables are initialized (including the global_init instance). - 2. The map is initialized, and map objects are created. - 3. world/New() runs, creating the process scheduler (and the old master controller) and spawning their setup. - 4. processScheduler/setup() runs, creating all the processes. game_controller/setup() runs, calling initialize() on all movable atoms in the world. - 5. The gameticker is created. - -*/ -var/global/datum/global_init/init = new () - -/* - Pre-map initialization stuff should go here. -*/ -/datum/global_init/New() - - makeDatumRefLists() - load_configuration() - - initialize_chemical_reagents() - initialize_chemical_reactions() - initialize_integrated_circuits_list() - - qdel(src) //we're done - -/datum/global_init/Destroy() - global.init = null - return 2 // QDEL_HINT_IWILLGC - +//Global init and the rest of world's code have been moved to code/global_init.dm and code/game/world.dm respectively. /world mob = /mob/new_player turf = /turf/space area = /area/space view = "15x15" cache_lifespan = 7 - - - -#define RECOMMENDED_VERSION 501 -/world/New() - world.log << "Map Loading Complete" - //logs - log_path += time2text(world.realtime, "YYYY/MM-Month/DD-Day/round-hh-mm-ss") - diary = start_log("[log_path].log") - href_logfile = start_log("[log_path]-hrefs.htm") - error_log = start_log("[log_path]-error.log") - debug_log = start_log("[log_path]-debug.log") - - changelog_hash = md5('html/changelog.html') //used for telling if the changelog has changed recently - - if(byond_version < RECOMMENDED_VERSION) - world.log << "Your server's byond version does not meet the recommended requirements for this server. Please update BYOND" - - config.post_load() - - if(config && config.server_name != null && config.server_suffix && world.port > 0) - // dumb and hardcoded but I don't care~ - config.server_name += " #[(world.port % 1000) / 100]" - - // TODO - Figure out what this is. Can you assign to world.log? - // if(config && config.log_runtime) - // log = file("data/logs/runtime/[time2text(world.realtime,"YYYY-MM-DD-(hh-mm-ss)")]-runtime.log") - - GLOB.timezoneOffset = text2num(time2text(0,"hh")) * 36000 - - callHook("startup") - //Emergency Fix - load_mods() - //end-emergency fix - - src.update_status() - - . = ..() - -#if UNIT_TEST - log_unit_test("Unit Tests Enabled. This will destroy the world when testing is complete.") - log_unit_test("If you did not intend to enable this please check code/__defines/unit_testing.dm") -#endif - - // Set up roundstart seed list. - plant_controller = new() - - // This is kinda important. Set up details of what the hell things are made of. - populate_material_list() - - // Loads all the pre-made submap templates. - load_map_templates() - - if(config.generate_map) - if(using_map.perform_map_generation()) - using_map.refresh_mining_turfs() - - // Create frame types. - populate_frame_types() - - // Create floor types. - populate_flooring_types() - - // Create robolimbs for chargen. - populate_robolimb_list() - - //Must be done now, otherwise ZAS zones and lighting overlays need to be recreated. - createRandomZlevel() - - processScheduler = new - master_controller = new /datum/controller/game_controller() - - processScheduler.deferSetupFor(/datum/controller/process/ticker) - processScheduler.setup() - Master.Initialize(10, FALSE) - - spawn(1) - master_controller.setup() -#if UNIT_TEST - initialize_unit_tests() -#endif - - spawn(3000) //so we aren't adding to the round-start lag - if(config.ToRban) - ToRban_autoupdate() - -#undef RECOMMENDED_VERSION - - return - -var/world_topic_spam_protect_ip = "0.0.0.0" -var/world_topic_spam_protect_time = world.timeofday - -/world/Topic(T, addr, master, key) - log_topic("\"[T]\", from:[addr], master:[master], key:[key]") - - if (T == "ping") - var/x = 1 - for (var/client/C) - x++ - return x - - else if(T == "players") - var/n = 0 - for(var/mob/M in player_list) - if(M.client) - n++ - return n - - else if (copytext(T,1,7) == "status") - var/input[] = params2list(T) - var/list/s = list() - s["version"] = game_version - s["mode"] = master_mode - s["respawn"] = config.abandon_allowed - s["enter"] = config.enter_allowed - s["vote"] = config.allow_vote_mode - s["ai"] = config.allow_ai - s["host"] = host ? host : null - - // This is dumb, but spacestation13.com's banners break if player count isn't the 8th field of the reply, so... this has to go here. - s["players"] = 0 - s["stationtime"] = stationtime2text() - s["roundduration"] = roundduration2text() - - if(input["status"] == "2") - var/list/players = list() - var/list/admins = list() - - for(var/client/C in clients) - if(C.holder) - if(C.holder.fakekey) - continue - admins[C.key] = C.holder.rank - players += C.key - - s["players"] = players.len - s["playerlist"] = list2params(players) - var/list/adm = get_admin_counts() - var/list/presentmins = adm["present"] - var/list/afkmins = adm["afk"] - s["admins"] = presentmins.len + afkmins.len //equivalent to the info gotten from adminwho - s["adminlist"] = list2params(admins) - else - var/n = 0 - var/admins = 0 - - for(var/client/C in clients) - if(C.holder) - if(C.holder.fakekey) - continue //so stealthmins aren't revealed by the hub - admins++ - s["player[n]"] = C.key - n++ - - s["players"] = n - s["admins"] = admins - - return list2params(s) - - else if(T == "manifest") - var/list/positions = list() - var/list/set_names = list( - "heads" = command_positions, - "sec" = security_positions, - "eng" = engineering_positions, - "med" = medical_positions, - "sci" = science_positions, - "car" = cargo_positions, - "civ" = civilian_positions, - "bot" = nonhuman_positions - ) - - for(var/datum/data/record/t in data_core.general) - var/name = t.fields["name"] - var/rank = t.fields["rank"] - var/real_rank = make_list_rank(t.fields["real_rank"]) - - var/department = 0 - for(var/k in set_names) - if(real_rank in set_names[k]) - if(!positions[k]) - positions[k] = list() - positions[k][name] = rank - department = 1 - if(!department) - if(!positions["misc"]) - positions["misc"] = list() - positions["misc"][name] = rank - - // Synthetics don't have actual records, so we will pull them from here. - for(var/mob/living/silicon/ai/ai in mob_list) - if(!positions["bot"]) - positions["bot"] = list() - positions["bot"][ai.name] = "Artificial Intelligence" - for(var/mob/living/silicon/robot/robot in mob_list) - // No combat/syndicate cyborgs, no drones. - if(robot.module && robot.module.hide_on_manifest) - continue - if(!positions["bot"]) - positions["bot"] = list() - positions["bot"][robot.name] = "[robot.modtype] [robot.braintype]" - - for(var/k in positions) - positions[k] = list2params(positions[k]) // converts positions["heads"] = list("Bob"="Captain", "Bill"="CMO") into positions["heads"] = "Bob=Captain&Bill=CMO" - - return list2params(positions) - - else if(T == "revision") - if(revdata.revision) - return list2params(list(branch = revdata.branch, date = revdata.date, revision = revdata.revision)) - else - return "unknown" - - else if(copytext(T,1,5) == "info") - var/input[] = params2list(T) - if(input["key"] != config.comms_password) - if(world_topic_spam_protect_ip == addr && abs(world_topic_spam_protect_time - world.time) < 50) - - spawn(50) - world_topic_spam_protect_time = world.time - return "Bad Key (Throttled)" - - world_topic_spam_protect_time = world.time - world_topic_spam_protect_ip = addr - - return "Bad Key" - - var/list/search = params2list(input["info"]) - var/list/ckeysearch = list() - for(var/text in search) - ckeysearch += ckey(text) - - var/list/match = list() - - for(var/mob/M in mob_list) - var/strings = list(M.name, M.ckey) - if(M.mind) - strings += M.mind.assigned_role - strings += M.mind.special_role - for(var/text in strings) - if(ckey(text) in ckeysearch) - match[M] += 10 // an exact match is far better than a partial one - else - for(var/searchstr in search) - if(findtext(text, searchstr)) - match[M] += 1 - - var/maxstrength = 0 - for(var/mob/M in match) - maxstrength = max(match[M], maxstrength) - for(var/mob/M in match) - if(match[M] < maxstrength) - match -= M - - if(!match.len) - return "No matches" - else if(match.len == 1) - var/mob/M = match[1] - var/info = list() - info["key"] = M.key - info["name"] = M.name == M.real_name ? M.name : "[M.name] ([M.real_name])" - info["role"] = M.mind ? (M.mind.assigned_role ? M.mind.assigned_role : "No role") : "No mind" - var/turf/MT = get_turf(M) - info["loc"] = M.loc ? "[M.loc]" : "null" - info["turf"] = MT ? "[MT] @ [MT.x], [MT.y], [MT.z]" : "null" - info["area"] = MT ? "[MT.loc]" : "null" - info["antag"] = M.mind ? (M.mind.special_role ? M.mind.special_role : "Not antag") : "No mind" - info["hasbeenrev"] = M.mind ? M.mind.has_been_rev : "No mind" - info["stat"] = M.stat - info["type"] = M.type - if(isliving(M)) - var/mob/living/L = M - info["damage"] = list2params(list( - oxy = L.getOxyLoss(), - tox = L.getToxLoss(), - fire = L.getFireLoss(), - brute = L.getBruteLoss(), - clone = L.getCloneLoss(), - brain = L.getBrainLoss() - )) - else - info["damage"] = "non-living" - info["gender"] = M.gender - return list2params(info) - else - var/list/ret = list() - for(var/mob/M in match) - ret[M.key] = M.name - return list2params(ret) - - else if(copytext(T,1,9) == "adminmsg") - /* - We got an adminmsg from IRC bot lets split the input then validate the input. - expected output: - 1. adminmsg = ckey of person the message is to - 2. msg = contents of message, parems2list requires - 3. validatationkey = the key the bot has, it should match the gameservers commspassword in it's configuration. - 4. sender = the ircnick that send the message. - */ - - - var/input[] = params2list(T) - if(input["key"] != config.comms_password) - if(world_topic_spam_protect_ip == addr && abs(world_topic_spam_protect_time - world.time) < 50) - - spawn(50) - world_topic_spam_protect_time = world.time - return "Bad Key (Throttled)" - - world_topic_spam_protect_time = world.time - world_topic_spam_protect_ip = addr - - return "Bad Key" - - var/client/C - var/req_ckey = ckey(input["adminmsg"]) - - for(var/client/K in clients) - if(K.ckey == req_ckey) - C = K - break - if(!C) - return "No client with that name on server" - - var/rank = input["rank"] - if(!rank) - rank = "Admin" - - var/message = "IRC-[rank] PM from IRC-[input["sender"]]: [input["msg"]]" - var/amessage = "IRC-[rank] PM from IRC-[input["sender"]] to [key_name(C)] : [input["msg"]]" - - C.received_irc_pm = world.time - C.irc_admin = input["sender"] - - C << 'sound/effects/adminhelp.ogg' - C << message - - - for(var/client/A in admins) - if(A != C) - A << amessage - - return "Message Successful" - - else if(copytext(T,1,6) == "notes") - /* - We got a request for notes from the IRC Bot - expected output: - 1. notes = ckey of person the notes lookup is for - 2. validationkey = the key the bot has, it should match the gameservers commspassword in it's configuration. - */ - var/input[] = params2list(T) - if(input["key"] != config.comms_password) - if(world_topic_spam_protect_ip == addr && abs(world_topic_spam_protect_time - world.time) < 50) - - spawn(50) - world_topic_spam_protect_time = world.time - return "Bad Key (Throttled)" - - world_topic_spam_protect_time = world.time - world_topic_spam_protect_ip = addr - return "Bad Key" - - return show_player_info_irc(ckey(input["notes"])) - - else if(copytext(T,1,4) == "age") - var/input[] = params2list(T) - if(input["key"] != config.comms_password) - if(world_topic_spam_protect_ip == addr && abs(world_topic_spam_protect_time - world.time) < 50) - spawn(50) - world_topic_spam_protect_time = world.time - return "Bad Key (Throttled)" - - world_topic_spam_protect_time = world.time - world_topic_spam_protect_ip = addr - return "Bad Key" - - var/age = get_player_age(input["age"]) - if(isnum(age)) - if(age >= 0) - return "[age]" - else - return "Ckey not found" - else - return "Database connection failed or not set up" - /* - * Aurora's shipping API System - * Currently used for shipping - */ - - var/list/response[] = list() - var/list/queryparams[] = json_decode(T) - queryparams["addr"] = addr //Add the IP to the queryparams that are passed to the api functions - var/query = queryparams["query"] - var/auth = queryparams["auth"] - log_debug("API: Request Received - from:[addr], master:[master], key:[key]") - log_topic("TOPIC: \"[T]\", from:[addr], master:[master], key:[key], auth:[auth]") - - if(!isnull(config.authedservers[addr])) - var/datum/shippingservers/S = config.authedservers[addr] - if(S.serverauth != auth) - log_debug("API: Request denied - Bad Auth") - response["statuscode"] = 401 - response["response"] = "Bad Auth" - return json_encode(response) - - if (!ticker) //If the game is not started most API Requests would not work because of the throtteling - response["statuscode"] = 500 - response["response"] = "Game not started yet!" - return json_encode(response) - - if (isnull(query)) - log_debug("API - Bad Request - No query specified") - response["statuscode"] = 400 - response["response"] = "Bad Request - No query specified" - return json_encode(response) - - var/datum/topic_command/command = topic_commands[query] - - //Check if that command exists - if (isnull(command)) - log_debug("API: Unknown command called: [query]") - response["statuscode"] = 501 - response["response"] = "Not Implemented" - return json_encode(response) - - if(command.check_params_missing(queryparams)) - log_debug("API: Mising Params - Status: [command.statuscode] - Response: [command.response]") - response["statuscode"] = command.statuscode - response["response"] = command.response - response["data"] = command.data - return json_encode(response) - else - command.run_command(queryparams) - log_debug("API: Command called: [query] - Status: [command.statuscode] - Response: [command.response]") - response["statuscode"] = command.statuscode - response["response"] = command.response - response["data"] = command.data - return json_encode(response) - - -/world/Reboot(var/reason) - /*spawn(0) - world << sound(pick('sound/AI/newroundsexy.ogg','sound/misc/apcdestroyed.ogg','sound/misc/bangindonk.ogg')) // random end sounds!! - LastyBatsy - */ - - processScheduler.stop() - Master.Shutdown() //run SS shutdowns - - for(var/client/C in clients) - if(config.server) //if you set a server location in config.txt, it sends you there instead of trying to reconnect to the same world address. -- NeoFite - C << link("byond://[config.server]") - - shutdown_logging() // Past this point, no logging procs can be used, at risk of data loss. - ..(reason) - -/hook/startup/proc/loadMode() - world.load_mode() - return 1 - -/world/proc/load_mode() - if(!fexists("data/mode.txt")) - return - - - var/list/Lines = file2list("data/mode.txt") - if(Lines.len) - if(Lines[1]) - master_mode = Lines[1] - log_misc("Saved mode is '[master_mode]'") - -/world/proc/save_mode(var/the_mode) - var/F = file("data/mode.txt") - fdel(F) - F << the_mode - - -/hook/startup/proc/loadMOTD() - world.load_motd() - return 1 - -/world/proc/load_motd() - join_motd = file2text("config/motd.txt") - - -/proc/load_configuration() - config = new /datum/configuration() - config.load("config/config.txt") - config.load("config/game_options.txt","game_options") - config.loadsql("config/dbconfig.txt") - config.loadforumsql("config/forumdbconfig.txt") - config.loadshippinglist("config/shippingserverswhitelist.txt") - -/hook/startup/proc/loadMods() - world.load_mods() - world.load_mentors() // no need to write another hook. - return 1 - -/world/proc/load_mods() - if(config.admin_legacy_system) - var/text = file2text("config/moderators.txt") - if (!text) - error("Failed to load config/mods.txt") - else - var/list/lines = splittext(text, "\n") - for(var/line in lines) - if (!line) - continue - - if (copytext(line, 1, 2) == ";") - continue - - var/title = "Moderator" - var/rights = admin_ranks[title] - - var/ckey = copytext(line, 1, length(line)+1) - var/datum/admins/D = new /datum/admins(title, rights, ckey) - D.associate(directory[ckey]) - -/world/proc/load_mentors() - if(config.admin_legacy_system) - var/text = file2text("config/mentors.txt") - if (!text) - error("Failed to load config/mentors.txt") - else - var/list/lines = splittext(text, "\n") - for(var/line in lines) - if (!line) - continue - if (copytext(line, 1, 2) == ";") - continue - - var/title = "Mentor" - var/rights = admin_ranks[title] - - var/ckey = copytext(line, 1, length(line)+1) - var/datum/admins/D = new /datum/admins(title, rights, ckey) - D.associate(directory[ckey]) - -/world/proc/update_status() - var/s = "" - - if (config && config.server_name) - s += "[config.server_name] — " - - s += "[station_name()]"; - s += " (" - s += "" //Change this to wherever you want the hub to link to. - s += "Forums" //Replace this with something else. Or ever better, delete it and uncomment the game version. - s += "" - s += " / " - s += "" //Change this to wherever you want the hub to link to. - s += "Discord" //Replace this with something else. Or ever better, delete it and uncomment the game version. - s += "" - - s += ")" - - var/list/features = list() - - if(ticker) - if(master_mode) - features += master_mode - else - features += "STARTING" - - if (!config.enter_allowed) - features += "closed" - - features += config.abandon_allowed ? "respawn" : "no respawn" - - if (config && config.allow_vote_mode) - features += "vote" - - if (config && config.allow_ai) - features += "AI allowed" - - var/n = 0 - for (var/mob/M in player_list) - if (M.client) - n++ - - if (n > 1) - features += "~[n] players" - else if (n > 0) - features += "~[n] player" - - - if (config && config.hostedby) - features += "hosted by [config.hostedby]" - - if (features) - s += ": [jointext(features, ", ")]" - - /* does this help? I do not know */ - if (src.status != s) - src.status = s - -#define FAILED_DB_CONNECTION_CUTOFF 5 -var/failed_db_connections = 0 -var/failed_old_db_connections = 0 - -/hook/startup/proc/connectDB() - if(!config.sql_enabled) - world.log << "SQL connection disabled in config." - else if(!setup_database_connection()) - world.log << "Your server failed to establish a connection with the feedback database." - else - world.log << "Feedback database connection established." - return 1 - -proc/setup_database_connection() - - if(failed_db_connections > FAILED_DB_CONNECTION_CUTOFF) //If it failed to establish a connection more than 5 times in a row, don't bother attempting to conenct anymore. - return 0 - - if(!dbcon) - dbcon = new() - - var/user = sqlfdbklogin - var/pass = sqlfdbkpass - var/db = sqlfdbkdb - var/address = sqladdress - var/port = sqlport - - dbcon.Connect("dbi:mysql:[db]:[address]:[port]","[user]","[pass]") - . = dbcon.IsConnected() - if ( . ) - failed_db_connections = 0 //If this connection succeeded, reset the failed connections counter. - else - failed_db_connections++ //If it failed, increase the failed connections counter. - world.log << dbcon.ErrorMsg() - - return . - -//This proc ensures that the connection to the feedback database (global variable dbcon) is established -proc/establish_db_connection() - if(failed_db_connections > FAILED_DB_CONNECTION_CUTOFF) - return 0 - - if(!dbcon || !dbcon.IsConnected()) - return setup_database_connection() - else - return 1 - - -/hook/startup/proc/connectOldDB() - if(!config.sql_enabled) - world.log << "SQL connection disabled in config." - else if(!setup_old_database_connection()) - world.log << "Your server failed to establish a connection with the SQL database." - else - world.log << "SQL database connection established." - return 1 - -//These two procs are for the old database, while it's being phased out. See the tgstation.sql file in the SQL folder for more information. -proc/setup_old_database_connection() - - if(failed_old_db_connections > FAILED_DB_CONNECTION_CUTOFF) //If it failed to establish a connection more than 5 times in a row, don't bother attempting to conenct anymore. - return 0 - - if(!dbcon_old) - dbcon_old = new() - - var/user = sqllogin - var/pass = sqlpass - var/db = sqldb - var/address = sqladdress - var/port = sqlport - - dbcon_old.Connect("dbi:mysql:[db]:[address]:[port]","[user]","[pass]") - . = dbcon_old.IsConnected() - if ( . ) - failed_old_db_connections = 0 //If this connection succeeded, reset the failed connections counter. - else - failed_old_db_connections++ //If it failed, increase the failed connections counter. - world.log << dbcon.ErrorMsg() - - return . - -//This proc ensures that the connection to the feedback database (global variable dbcon) is established -proc/establish_old_db_connection() - if(failed_old_db_connections > FAILED_DB_CONNECTION_CUTOFF) - return 0 - - if(!dbcon_old || !dbcon_old.IsConnected()) - return setup_old_database_connection() - else - return 1 - -#undef FAILED_DB_CONNECTION_CUTOFF diff --git a/config/custom_items.txt b/config/custom_items.txt index 4492c5dd4e..16f2585914 100644 --- a/config/custom_items.txt +++ b/config/custom_items.txt @@ -284,6 +284,12 @@ character_name: John Wolf item_path: /obj/item/weapon/storage/box/fluff/John } +{ +ckey: jwguy +character_name: Koyo Akimomi +item_path: /obj/item/weapon/storage/box/fluff/koyoakimomi +} + # ######## K CKEYS # ######## L CKEYS { @@ -333,7 +339,7 @@ item_path: /obj/item/weapon.storage/box/fluff/maxie ckey: mr_signmeup character_name: Reshskakskakss Seekiseekis item_path: /obj/item/clothing/suit/security/navyhos -req_titles: Head of Security +req_access: 58 } # ######## N CKEYS diff --git a/config/example/config.txt b/config/example/config.txt index a0f1702702..535b0bc6a8 100644 --- a/config/example/config.txt +++ b/config/example/config.txt @@ -94,6 +94,7 @@ SHOW_MODS ##Show mentors on staffwho SHOW_EVENT + ## Chooses whether mods have the ability to tempban or not MODS_CAN_TEMPBAN @@ -397,11 +398,8 @@ STARLIGHT 0 ## Uncomment to override default brain health. #DEFAULT_BRAIN_HEALTH 400 -#No more mice -DISABLE_PLAYER_MICE - -## Default language prefix keys, separated with spaces. Only single character keys are supported. If unset, defaults to , # and - -# DEFAULT_LANGUAGE_PREFIXES , # - +## Default language prefix keys, separated with spaces. Only single character keys are supported. If unset, defaults to , and # +# DEFAULT_LANGUAGE_PREFIXES , # # Control which submaps are loaded for the Dynamic Engine system ENGINE_MAP Supermatter Engine,Edison's Bane @@ -419,3 +417,17 @@ ENGINE_MAP Supermatter Engine,Edison's Bane ## Uncomment to enable Paranoia Logging. This will notify admins and write to a file any time a new player (byond or your server) connects. # PARANOIA_LOGGING +## Uncomment to enable submaps to have their orientation rotated randomly during map generation. +## Submap rotation is an experimental feature and can cause bugs and weirdness if certain objects inside the submap are coded poorly. +## Submaps can still be rotated when loading manually with the admin verbs, if desired. +# RANDOM_SUBMAP_ORIENTATION + +## Uncomment to allow the AI job to use 'AI Shells', a new type of borg that lets the AI hop into and out of them at will. +## This has some balance implications, and so it might not be desirable for all servers. +# ALLOW_AI_SHELLS + +## Uncomment to provide the AI with one free AI Shell at roundstart. Requires ALLOW_AI_SHELLS to also be uncommented. +## This is intended for low-pop servers, where robotics might rarely be staffed. +## Note that this will make it possible for the AI to 'bootstrap' more AI Shells on their own by using the science module. If this is not acceptable for your server, you should not uncomment this. +## The landmark object that spawns the shell will also need to be mapped in for this to work. +# GIVE_FREE_AI_SHELL diff --git a/config/example/game_options.txt b/config/example/game_options.txt index 4745f04f12..689ba6f9a0 100644 --- a/config/example/game_options.txt +++ b/config/example/game_options.txt @@ -35,7 +35,8 @@ REVIVAL_CLONING 1 ## amount of time (in hundredths of seconds) for which a brain retains the "spark of life" after the person's death (set to -1 for infinite) REVIVAL_BRAIN_LIFE -1 - +## Uncomment to allow headgibbing +#ALLOW_HEADGIBS ### MOB MOVEMENT ### @@ -65,4 +66,7 @@ FOOTSTEP_VOLUME 60 ## Config options which, of course, don't fit into previous categories. ## Remove the # in front of this config option to have loyalty implants spawn by default on your server. -USE_LOYALTY_IMPLANTS +#USE_LOYALTY_IMPLANTS + +## Whether or not humans show an area message when they die. +SHOW_HUMAN_DEATH_MESSAGE diff --git a/html/changelog.html b/html/changelog.html index 91fdd23b30..757677d2cc 100644 --- a/html/changelog.html +++ b/html/changelog.html @@ -53,6 +53,203 @@ -->
      +

      04 March 2019

      +

      Anewbe updated:

      +
        +
      • Vedahq is now properly locked behind a whitelist.
      • +
      • Headgibbing is now determined by config
      • +
      • Promethean regeneration has been toned down. It will no longer provide healing if the Promethean is wet, too hungry, too hot, or too cold.
      • +
      • Prometheans are no longer shock resistant. It should now be more possible to catch them alive.
      • +
      • Promethean body temperature is now the default room temperature. They also hit cold_level_2 at a higher temperature.
      • +
      +

      Atermonera updated:

      +
        +
      • Rigsuits have been resupplied following a mass-recall after a number of suits were reported to have defective pressure-sealant mechanisms. The new sealant mechanisms have been thoroughly tested and should be less prone to failure.
      • +
      +

      Mechoid updated:

      +
        +
      • Tweaked Respiro- Cordra- Gastiro- and Hepanephro- Daxons to be more effective with dealing with the side-effects of damaged organs.
      • +
      +

      kartagrafi updated:

      +
        +
      • Adds several clothing items to loadout such as: Nock masks, cowls and robes.
      • +
      + +

      07 February 2019

      +

      Atermonera updated:

      +
        +
      • Stairs have been straightened and now connect to both the heavens and hells, formerly just the hells.
      • +
      +

      Elgeonmb updated:

      +
        +
      • Added the Zaddat species, voidsuit-clad fragile bug people. Whitelist applications will be available at a later date.
      • +
      • Added glucose hypos to the SWEATMAX vendors and a few other places thoughout the station.
      • +
      • Zaddat equipment is now available through cargo.
      • +
      • Some new, very very chuuni accessories to play with; the half cape, the full cape, and the sash
      • +
      • Most accessories can now fit on suits.
      • +
      • Dionaea and vox can no longer use station rigs.
      • +
      +

      Mechoid updated:

      +
        +
      • Flashes now actually run the risk of burning out.
      • +
      • Flashes that burn out can be repaired after approximately 40 seconds and with some luck, via a screwdriver.
      • +
      • Cyborg flashes use charge only, and do not have the 10 flash limit. They instead begin burning large amounts of charge.
      • +
      • Flashes use miniscule charge in addition to their capacitor burn-out, totalling 12 uses, taking 4 to down a human. They can be charged within a standard charger.
      • +
      + +

      01 February 2019

      +

      Anewbe updated:

      +
        +
      • Pilot consoles now require pilot access to use.
      • +
      +

      Atermonera updated:

      +
        +
      • Powersink drains have been unclogged and work once more
      • +
      +

      Mechoid updated:

      +
        +
      • Oversight regarding Changeling revive not removing restraints fixed.
      • +
      • Straight Jackets can now be resisted out of in 8 minutes, or as low as 5 depending on species attacks. Shredding or hulked humans will break out in 20 seconds, destroying the jacket.
      • +
      • Xenomorph plasma vessels now regenerate phoron passively, at an incredibly slow rate. Can be accelerated by consuming liquid phoron.
      • +
      • Xenomorph organs now give their respective abilities when implanted.
      • +
      • Virtual Reality pods cleaned up.
      • +
      • Replicant organs added, versions of many organs that do not reject in their host. Two currently exist that give special passives.
      • +
      + +

      25 January 2019

      +

      Anewbe updated:

      +
        +
      • The hyphen (-) is no longer a default language key, as people use it to represent other things. If you are still having issues with Gibberish, reset your language keys, or at least make sure they don't include any characters you regularly start speech with.
      • +
      +

      Atermonera updated:

      +
        +
      • Stasis bags don't squish organics with high pressure when organics try to seek shelter from flesh wounds.
      • +
      • Body- and stasis bags can be tread upon when open.
      • +
      • Suit coolers and rigsuit coolers now protect FBPs against vacuum again.
      • +
      • Bot sound files have been decrypted following a bizarre ransomware attack by Boiling Point remnants. Securitrons, cleanbots, et al should no longer spew gibberish.
      • +
      +

      Cerebulon updated:

      +
        +
      • Added teshari hardsuit sprites.
      • +
      + +

      16 January 2019

      +

      Anewbe updated:

      +
        +
      • Adds a Gibberish language that gets used when you goof on a language key.
      • +
      • Voice changing masks no longer give up when you put on a hardsuit.
      • +
      • Mask voice changers start on.
      • +
      • Mask voice changers that do not have a set voice will now default to your worn ID's name.
      • +
      • Mask voice changers now have a verb to reset their name.
      • +
      • Eguns take 4 shots to stun, rather than 3.
      • +
      +

      Atermonera updated:

      +
        +
      • Clothing now has pressure protection variables, that set lower and upper pressure bounds within which they will protect you from pressure-based harm.
      • +
      • Protection falls off when exceeding the pressure limits from 100% protection at the boundary to 0% at 10% in excess (above the max or below the min) boundary.
      • +
      • Currently, only hat and suit slots are checked for this protection (No change).
      • +
      • Anomaly suits (The orange ones) now offer limited pressure protection in case anomalies start making or draining air.
      • +
      • Firesuits are no longer spaceproof, but still offer protection against the high pressures of fire.
      • +
      +

      Cerebulon updated:

      +
        +
      • Added customizable religious icons to the chaplain's office.
      • +
      • Added black and white candles.
      • +
      • Updated religion lists in character setup to be lore friendly.
      • +
      + +

      06 January 2019

      +

      Mechoid updated:

      +
        +
      • Slimes now respect slime colors as their faction when dealing with other slimes.
      • +
      • Taser and Security xeno-taser shot count dropped from 10 to 5.
      • +
      +

      Neerti updated:

      +
        +
      • Adds a lot of sounds, and the code to let them loop seemlessly. Things made audible now include the microwave, deep fryer, showers, the supermatter when it's active, the TEGs when active, geiger counters, and severe weather on Sif. The weather has different sounds for when indoors and when outdoors.
      • +
      • Weather sounds and the supermatter hum can be disabled in your preferences.
      • +
      • Adds a few more weather types that can only be activated by admin powers, such as ash storms and fallout.
      • +
      +

      Novacat updated:

      +
        +
      • All emergency air tanks now spawn at full capacity.
      • +
      + +

      08 December 2018

      +

      Cerebulon updated:

      +
        +
      • Added 12 new loadout items plus colour variants: Utility pants, sleek overalls, sari, modern wrap jacket, ascetic garb, asymmetrical jackets, cowled vest, kamishimo, jingasa, maang tikka, thin-frame glasses, rimless glasses.
      • +
      +

      Mechoid updated:

      +
        +
      • Research and Engineering borgs now have 'Circuit Grippers', used for constructing and operating integrated circuit machinery.
      • +
      • Grippers now allow interaction with their contents, by attacking the gripper itself with an item when one is held. I.E., drawing from a beaker with a syringe.
      • +
      • Grippers now show their held item's examine information when examined. Tab information added.
      • +
      • Cyborgs can now interact with integrated circuit printers and machines when adjacent to them.
      • +
      • Multitools now have a menu to switch modes between standard use and integrated circuit reference scanning. Antag multi-tools untouched for now.
      • +
      • Integrated circuit printer now respects adjacency, if it is not set to debug.
      • +
      + +

      30 November 2018

      +

      Cerebulon updated:

      +
        +
      • Added 1000+ surnames and 1200+ forenames from various world cultures to human namelists
      • +
      +

      LBnesquik updated:

      +
        +
      • Replaced the plant clippers with a reskinned pair of hedgetrimmers.
      • +
      +

      Lbnesquik updated:

      +
        +
      • General biogenerator improvements:
      • +
      • Added feedback noise to the processing.
      • +
      • Allow for cream dispensing.
      • +
      • Allow for plant bag creation.
      • +
      • Allow for 5 units of meat to be dispensed at once.
      • +
      • Allow for 5 units of liquids to be dispensed at once totalling 50u.
      • +
      • Add and allow the creation of larger plant bags for easier ferrying of plants..
      • +
      • Add a description to the machine itself.
      • +
      +

      Mechoid updated:

      +
        +
      • Prometheans are no longer murdered by blood, and instead process it like a weak nutrient. Will slow the regeneration of toxins due to water content.
      • +
      • Ctrl clicking a Rapid Service Fabricator when held will allow you to choose the container it deploys.
      • +
      • The Rapid Service Fabricator's icon is correctly set.
      • +
      +

      Neerti updated:

      +
        +
      • Rewrites the AI system for mobs. It should be more responsive and robust. Some mobs have special AIs which can do certain things like kiting, following you on a lark, or telling you to go away before shooting you.
      • +
      • Rewrites literally every 'simple_animal' mob into new, shinier, and hopefully more interesting 'simple_mob' mobs, some with new mechanics, like spiders, fake mechas, and hivebots. There are so many changes that it wouldn't be possible to list them here.
      • +
      • RCDs can now build grilles and windows, with a new mode. They can also finish walls when used on girders on floor/wall mode.
      • +
      • Adds various new RCDs that are not obtainable at the moment.
      • +
      +

      Woodrat updated:

      +
        +
      • Xenoflora and Xenobio moved to station, first deck.
      • +
      • Minor bugfixes including mislabeled lockers in robotics and floor decals.
      • +
      +

      kartagrafi updated:

      +
        +
      • Adds new hairstyle 'Sharp Ponytail'
      • +
      • Adds several new underwear - 'Binder', 'Strapless Binder', 'Longsleeve Striped Shirt, Pink', 'Pink Wing Shirt', 'Pink and Black T-Shirt', 'Leggings'
      • +
      • Changes name of 'Supernova' hairstyle to 'Glossy', and makes the sprite somewhat neater
      • +
      • Fixes a hairstyle not appearing
      • +
      + +

      13 October 2018

      +

      Anewbe updated:

      +
        +
      • You can no longer have ALL of your blood punched out.
      • +
      • Haemophiliacs will no longer spontaneously have ALL of their blood go missing from ~90%.
      • +
      • Emitters can be locked while off, too.
      • +
      • Graves are now a thing in the code, will need some testing and probably more work before they get more common.
      • +
      +

      Mechoid updated:

      +
        +
      • Added a RIG customization kit.
      • +
      • RIGs now use a var called suit_state to determine the basis for their component icons, rather than the rig's icon state.
      • +
      +

      22 September 2018

      Mechoid updated:

        diff --git a/html/changelogs/.all_changelog.yml b/html/changelogs/.all_changelog.yml index 18931bf85c..bfbd578cc3 100644 --- a/html/changelogs/.all_changelog.yml +++ b/html/changelogs/.all_changelog.yml @@ -4228,3 +4228,189 @@ DO NOT EDIT THIS FILE BY HAND! AUTOMATICALLY GENERATED BY ss13_genchangelog.py. - rscadd: Adds two rig suits. Military Rig suit from Bay and PMC rigsuit - rscadd: Adds four exploration and pilot voidsuits (alternate sprites by Naidh) - rscadd: Adds exploration and pilot voidsuits +2018-10-13: + Anewbe: + - bugfix: You can no longer have ALL of your blood punched out. + - bugfix: Haemophiliacs will no longer spontaneously have ALL of their blood go + missing from ~90%. + - rscadd: Emitters can be locked while off, too. + - rscadd: Graves are now a thing in the code, will need some testing and probably + more work before they get more common. + Mechoid: + - rscadd: Added a RIG customization kit. + - tweak: RIGs now use a var called suit_state to determine the basis for their component + icons, rather than the rig's icon state. +2018-11-30: + Cerebulon: + - rscadd: Added 1000+ surnames and 1200+ forenames from various world cultures to + human namelists + LBnesquik: + - rscadd: Replaced the plant clippers with a reskinned pair of hedgetrimmers. + Lbnesquik: + - rscadd: 'General biogenerator improvements:' + - rscadd: Added feedback noise to the processing. + - rscadd: Allow for cream dispensing. + - rscadd: Allow for plant bag creation. + - rscadd: Allow for 5 units of meat to be dispensed at once. + - rscadd: Allow for 5 units of liquids to be dispensed at once totalling 50u. + - rscadd: Add and allow the creation of larger plant bags for easier ferrying of + plants.. + - rscadd: Add a description to the machine itself. + Mechoid: + - tweak: Prometheans are no longer murdered by blood, and instead process it like + a weak nutrient. Will slow the regeneration of toxins due to water content. + - rscadd: Ctrl clicking a Rapid Service Fabricator when held will allow you to choose + the container it deploys. + - bugfix: The Rapid Service Fabricator's icon is correctly set. + Neerti: + - experiment: Rewrites the AI system for mobs. It should be more responsive and + robust. Some mobs have special AIs which can do certain things like kiting, + following you on a lark, or telling you to go away before shooting you. + - tweak: Rewrites literally every 'simple_animal' mob into new, shinier, and hopefully + more interesting 'simple_mob' mobs, some with new mechanics, like spiders, fake + mechas, and hivebots. There are so many changes that it wouldn't be possible + to list them here. + - rscadd: RCDs can now build grilles and windows, with a new mode. They can also + finish walls when used on girders on floor/wall mode. + - rscadd: Adds various new RCDs that are not obtainable at the moment. + Woodrat: + - rscadd: Xenoflora and Xenobio moved to station, first deck. + - bugfix: Minor bugfixes including mislabeled lockers in robotics and floor decals. + kartagrafi: + - rscadd: Adds new hairstyle 'Sharp Ponytail' + - rscadd: Adds several new underwear - 'Binder', 'Strapless Binder', 'Longsleeve + Striped Shirt, Pink', 'Pink Wing Shirt', 'Pink and Black T-Shirt', 'Leggings' + - tweak: Changes name of 'Supernova' hairstyle to 'Glossy', and makes the sprite + somewhat neater + - bugfix: Fixes a hairstyle not appearing +2018-12-08: + Cerebulon: + - rscadd: 'Added 12 new loadout items plus colour variants: Utility pants, sleek + overalls, sari, modern wrap jacket, ascetic garb, asymmetrical jackets, cowled + vest, kamishimo, jingasa, maang tikka, thin-frame glasses, rimless glasses.' + Mechoid: + - rscadd: Research and Engineering borgs now have 'Circuit Grippers', used for constructing + and operating integrated circuit machinery. + - tweak: Grippers now allow interaction with their contents, by attacking the gripper + itself with an item when one is held. I.E., drawing from a beaker with a syringe. + - tweak: Grippers now show their held item's examine information when examined. + Tab information added. + - tweak: Cyborgs can now interact with integrated circuit printers and machines + when adjacent to them. + - tweak: Multitools now have a menu to switch modes between standard use and integrated + circuit reference scanning. Antag multi-tools untouched for now. + - bugfix: Integrated circuit printer now respects adjacency, if it is not set to + debug. +2019-01-06: + Mechoid: + - bugfix: Slimes now respect slime colors as their faction when dealing with other + slimes. + - tweak: Taser and Security xeno-taser shot count dropped from 10 to 5. + Neerti: + - soundadd: Adds a lot of sounds, and the code to let them loop seemlessly. Things + made audible now include the microwave, deep fryer, showers, the supermatter + when it's active, the TEGs when active, geiger counters, and severe weather + on Sif. The weather has different sounds for when indoors and when outdoors. + - tweak: Weather sounds and the supermatter hum can be disabled in your preferences. + - rscadd: Adds a few more weather types that can only be activated by admin powers, + such as ash storms and fallout. + Novacat: + - tweak: All emergency air tanks now spawn at full capacity. +2019-01-16: + Anewbe: + - tweak: Adds a Gibberish language that gets used when you goof on a language key. + - bugfix: Voice changing masks no longer give up when you put on a hardsuit. + - tweak: Mask voice changers start on. + - tweak: Mask voice changers that do not have a set voice will now default to your + worn ID's name. + - tweak: Mask voice changers now have a verb to reset their name. + - tweak: Eguns take 4 shots to stun, rather than 3. + Atermonera: + - rscadd: Clothing now has pressure protection variables, that set lower and upper + pressure bounds within which they will protect you from pressure-based harm. + - rscadd: Protection falls off when exceeding the pressure limits from 100% protection + at the boundary to 0% at 10% in excess (above the max or below the min) boundary. + - tweak: Currently, only hat and suit slots are checked for this protection (No + change). + - tweak: Anomaly suits (The orange ones) now offer limited pressure protection in + case anomalies start making or draining air. + - bugfix: Firesuits are no longer spaceproof, but still offer protection against + the high pressures of fire. + Cerebulon: + - rscadd: Added customizable religious icons to the chaplain's office. + - rscadd: Added black and white candles. + - tweak: Updated religion lists in character setup to be lore friendly. +2019-01-25: + Anewbe: + - tweak: The hyphen (-) is no longer a default language key, as people use it to + represent other things. If you are still having issues with Gibberish, reset + your language keys, or at least make sure they don't include any characters + you regularly start speech with. + Atermonera: + - bugfix: Stasis bags don't squish organics with high pressure when organics try + to seek shelter from flesh wounds. + - tweak: Body- and stasis bags can be tread upon when open. + - bugfix: Suit coolers and rigsuit coolers now protect FBPs against vacuum again. + - bugfix: Bot sound files have been decrypted following a bizarre ransomware attack + by Boiling Point remnants. Securitrons, cleanbots, et al should no longer spew + gibberish. + Cerebulon: + - rscadd: Added teshari hardsuit sprites. +2019-02-01: + Anewbe: + - tweak: Pilot consoles now require pilot access to use. + Atermonera: + - bugfix: Powersink drains have been unclogged and work once more + Mechoid: + - bugfix: Oversight regarding Changeling revive not removing restraints fixed. + - tweak: Straight Jackets can now be resisted out of in 8 minutes, or as low as + 5 depending on species attacks. Shredding or hulked humans will break out in + 20 seconds, destroying the jacket. + - tweak: Xenomorph plasma vessels now regenerate phoron passively, at an incredibly + slow rate. Can be accelerated by consuming liquid phoron. + - tweak: Xenomorph organs now give their respective abilities when implanted. + - tweak: Virtual Reality pods cleaned up. + - rscadd: Replicant organs added, versions of many organs that do not reject in + their host. Two currently exist that give special passives. +2019-02-07: + Atermonera: + - bugfix: Stairs have been straightened and now connect to both the heavens and + hells, formerly just the hells. + Elgeonmb: + - rscadd: Added the Zaddat species, voidsuit-clad fragile bug people. Whitelist + applications will be available at a later date. + - rscadd: Added glucose hypos to the SWEATMAX vendors and a few other places thoughout + the station. + - rscadd: Zaddat equipment is now available through cargo. + - rscadd: Some new, very very chuuni accessories to play with; the half cape, the + full cape, and the sash + - tweak: Most accessories can now fit on suits. + - rscdel: Dionaea and vox can no longer use station rigs. + Mechoid: + - tweak: Flashes now actually run the risk of burning out. + - tweak: Flashes that burn out can be repaired after approximately 40 seconds and + with some luck, via a screwdriver. + - tweak: Cyborg flashes use charge only, and do not have the 10 flash limit. They + instead begin burning large amounts of charge. + - tweak: Flashes use miniscule charge in addition to their capacitor burn-out, totalling + 12 uses, taking 4 to down a human. They can be charged within a standard charger. +2019-03-04: + Anewbe: + - bugfix: Vedahq is now properly locked behind a whitelist. + - tweak: Headgibbing is now determined by config + - tweak: Promethean regeneration has been toned down. It will no longer provide + healing if the Promethean is wet, too hungry, too hot, or too cold. + - tweak: Prometheans are no longer shock resistant. It should now be more possible + to catch them alive. + - tweak: Promethean body temperature is now the default room temperature. They also + hit cold_level_2 at a higher temperature. + Atermonera: + - bugfix: Rigsuits have been resupplied following a mass-recall after a number of + suits were reported to have defective pressure-sealant mechanisms. The new sealant + mechanisms have been thoroughly tested and should be less prone to failure. + Mechoid: + - tweak: Tweaked Respiro- Cordra- Gastiro- and Hepanephro- Daxons to be more effective + with dealing with the side-effects of damaged organs. + kartagrafi: + - rscadd: 'Adds several clothing items to loadout such as: Nock masks, cowls and + robes.' diff --git a/html/changelogs/Anewbe - Bugspeak.yml b/html/changelogs/Anewbe - Bugspeak.yml new file mode 100644 index 0000000000..4df4990bdf --- /dev/null +++ b/html/changelogs/Anewbe - Bugspeak.yml @@ -0,0 +1,36 @@ +################################ +# Example Changelog File +# +# Note: This file, and files beginning with ".", and files that don't end in ".yml" will not be read. If you change this file, you will look really dumb. +# +# Your changelog will be merged with a master changelog. (New stuff added only, and only on the date entry for the day it was merged.) +# When it is, any changes listed below will disappear. +# +# Valid Prefixes: +# bugfix +# wip (For works in progress) +# tweak +# soundadd +# sounddel +# rscadd (general adding of nice things) +# rscdel (general deleting of nice things) +# imageadd +# imagedel +# maptweak +# spellcheck (typo fixes) +# experiment +################################# + +# Your name. +author: Anewbe + +# Optional: Remove this file after generating master changelog. Useful for PR changelogs that won't get used again. +delete-after: True + +# Any changes you've made. See valid prefix list above. +# INDENT WITH TWO SPACES. NOT TABS. SPACES. +# SCREW THIS UP AND IT WON'T WORK. +# Also, all entries are changed into a single [] after a master changelog generation. Just remove the brackets when you add new entries. +# Please surround your changes in double quotes ("), as certain characters otherwise screws up compiling. The quotes will not show up in the changelog. +changes: + - bugfix: "Vedahq is now properly locked behind a whitelist." diff --git a/html/changelogs/Anewbe - Gibberish.yml b/html/changelogs/Anewbe - Gibberish.yml new file mode 100644 index 0000000000..b78f38761e --- /dev/null +++ b/html/changelogs/Anewbe - Gibberish.yml @@ -0,0 +1,36 @@ +################################ +# Example Changelog File +# +# Note: This file, and files beginning with ".", and files that don't end in ".yml" will not be read. If you change this file, you will look really dumb. +# +# Your changelog will be merged with a master changelog. (New stuff added only, and only on the date entry for the day it was merged.) +# When it is, any changes listed below will disappear. +# +# Valid Prefixes: +# bugfix +# wip (For works in progress) +# tweak +# soundadd +# sounddel +# rscadd (general adding of nice things) +# rscdel (general deleting of nice things) +# imageadd +# imagedel +# maptweak +# spellcheck (typo fixes) +# experiment +################################# + +# Your name. +author: Anewbe + +# Optional: Remove this file after generating master changelog. Useful for PR changelogs that won't get used again. +delete-after: True + +# Any changes you've made. See valid prefix list above. +# INDENT WITH TWO SPACES. NOT TABS. SPACES. +# SCREW THIS UP AND IT WON'T WORK. +# Also, all entries are changed into a single [] after a master changelog generation. Just remove the brackets when you add new entries. +# Please surround your changes in double quotes ("), as certain characters otherwise screws up compiling. The quotes will not show up in the changelog. +changes: + - tweak: "Adds a Gibberish language that gets used when you goof on a language key." diff --git a/html/changelogs/Anewbe - Headgibs.yml b/html/changelogs/Anewbe - Headgibs.yml new file mode 100644 index 0000000000..6aa097a172 --- /dev/null +++ b/html/changelogs/Anewbe - Headgibs.yml @@ -0,0 +1,36 @@ +################################ +# Example Changelog File +# +# Note: This file, and files beginning with ".", and files that don't end in ".yml" will not be read. If you change this file, you will look really dumb. +# +# Your changelog will be merged with a master changelog. (New stuff added only, and only on the date entry for the day it was merged.) +# When it is, any changes listed below will disappear. +# +# Valid Prefixes: +# bugfix +# wip (For works in progress) +# tweak +# soundadd +# sounddel +# rscadd (general adding of nice things) +# rscdel (general deleting of nice things) +# imageadd +# imagedel +# maptweak +# spellcheck (typo fixes) +# experiment +################################# + +# Your name. +author: Anewbe + +# Optional: Remove this file after generating master changelog. Useful for PR changelogs that won't get used again. +delete-after: True + +# Any changes you've made. See valid prefix list above. +# INDENT WITH TWO SPACES. NOT TABS. SPACES. +# SCREW THIS UP AND IT WON'T WORK. +# Also, all entries are changed into a single [] after a master changelog generation. Just remove the brackets when you add new entries. +# Please surround your changes in double quotes ("), as certain characters otherwise screws up compiling. The quotes will not show up in the changelog. +changes: + - tweak: "Headgibbing is now determined by config" diff --git a/html/changelogs/Anewbe - Jamming.yml b/html/changelogs/Anewbe - Jamming.yml new file mode 100644 index 0000000000..1822bb00d0 --- /dev/null +++ b/html/changelogs/Anewbe - Jamming.yml @@ -0,0 +1,36 @@ +################################ +# Example Changelog File +# +# Note: This file, and files beginning with ".", and files that don't end in ".yml" will not be read. If you change this file, you will look really dumb. +# +# Your changelog will be merged with a master changelog. (New stuff added only, and only on the date entry for the day it was merged.) +# When it is, any changes listed below will disappear. +# +# Valid Prefixes: +# bugfix +# wip (For works in progress) +# tweak +# soundadd +# sounddel +# rscadd (general adding of nice things) +# rscdel (general deleting of nice things) +# imageadd +# imagedel +# maptweak +# spellcheck (typo fixes) +# experiment +################################# + +# Your name. +author: Anewbe + +# Optional: Remove this file after generating master changelog. Useful for PR changelogs that won't get used again. +delete-after: True + +# Any changes you've made. See valid prefix list above. +# INDENT WITH TWO SPACES. NOT TABS. SPACES. +# SCREW THIS UP AND IT WON'T WORK. +# Also, all entries are changed into a single [] after a master changelog generation. Just remove the brackets when you add new entries. +# Please surround your changes in double quotes ("), as certain characters otherwise screws up compiling. The quotes will not show up in the changelog. +changes: + - rscadd: "The Subspace Jammer traitor item now lasts about 10 minutes. It now blocks signalers from sending or receiving, and also obscures suit sensors around it." diff --git a/html/changelogs/Anewbe - Pilots.yml b/html/changelogs/Anewbe - Pilots.yml new file mode 100644 index 0000000000..51684ce137 --- /dev/null +++ b/html/changelogs/Anewbe - Pilots.yml @@ -0,0 +1,4 @@ +author: Anewbe +delete-after: True +changes + - tweak: "Pilot consoles now require pilot access to use." \ No newline at end of file diff --git a/html/changelogs/Anewbe - Voice Changers.yml b/html/changelogs/Anewbe - Voice Changers.yml new file mode 100644 index 0000000000..93d09587bf --- /dev/null +++ b/html/changelogs/Anewbe - Voice Changers.yml @@ -0,0 +1,39 @@ +################################ +# Example Changelog File +# +# Note: This file, and files beginning with ".", and files that don't end in ".yml" will not be read. If you change this file, you will look really dumb. +# +# Your changelog will be merged with a master changelog. (New stuff added only, and only on the date entry for the day it was merged.) +# When it is, any changes listed below will disappear. +# +# Valid Prefixes: +# bugfix +# wip (For works in progress) +# tweak +# soundadd +# sounddel +# rscadd (general adding of nice things) +# rscdel (general deleting of nice things) +# imageadd +# imagedel +# maptweak +# spellcheck (typo fixes) +# experiment +################################# + +# Your name. +author: Anewbe + +# Optional: Remove this file after generating master changelog. Useful for PR changelogs that won't get used again. +delete-after: True + +# Any changes you've made. See valid prefix list above. +# INDENT WITH TWO SPACES. NOT TABS. SPACES. +# SCREW THIS UP AND IT WON'T WORK. +# Also, all entries are changed into a single [] after a master changelog generation. Just remove the brackets when you add new entries. +# Please surround your changes in double quotes ("), as certain characters otherwise screws up compiling. The quotes will not show up in the changelog. +changes: + - bugfix: "Voice changing masks no longer give up when you put on a hardsuit." + - tweak: "Mask voice changers start on." + - tweak: "Mask voice changers that do not have a set voice will now default to your worn ID's name." + - tweak: "Mask voice changers now have a verb to reset their name." \ No newline at end of file diff --git a/html/changelogs/Anewbe - Yet More Gibberish.yml b/html/changelogs/Anewbe - Yet More Gibberish.yml new file mode 100644 index 0000000000..d7472af1c3 --- /dev/null +++ b/html/changelogs/Anewbe - Yet More Gibberish.yml @@ -0,0 +1,36 @@ +################################ +# Example Changelog File +# +# Note: This file, and files beginning with ".", and files that don't end in ".yml" will not be read. If you change this file, you will look really dumb. +# +# Your changelog will be merged with a master changelog. (New stuff added only, and only on the date entry for the day it was merged.) +# When it is, any changes listed below will disappear. +# +# Valid Prefixes: +# bugfix +# wip (For works in progress) +# tweak +# soundadd +# sounddel +# rscadd (general adding of nice things) +# rscdel (general deleting of nice things) +# imageadd +# imagedel +# maptweak +# spellcheck (typo fixes) +# experiment +################################# + +# Your name. +author: Anewbe + +# Optional: Remove this file after generating master changelog. Useful for PR changelogs that won't get used again. +delete-after: True + +# Any changes you've made. See valid prefix list above. +# INDENT WITH TWO SPACES. NOT TABS. SPACES. +# SCREW THIS UP AND IT WON'T WORK. +# Also, all entries are changed into a single [] after a master changelog generation. Just remove the brackets when you add new entries. +# Please surround your changes in double quotes ("), as certain characters otherwise screws up compiling. The quotes will not show up in the changelog. +changes: + - tweak: "The hyphen (-) is no longer a default language key, as people use it to represent other things. If you are still having issues with Gibberish, reset your language keys, or at least make sure they don't include any characters you regularly start speech with." diff --git a/html/changelogs/Ater - stasisbags.yml b/html/changelogs/Ater - stasisbags.yml new file mode 100644 index 0000000000..11023943e9 --- /dev/null +++ b/html/changelogs/Ater - stasisbags.yml @@ -0,0 +1,5 @@ +author: Atermonera +delete-after: True +changes: + - bugfix: "Stasis bags don't squish organics with high pressure when organics try to seek shelter from flesh wounds." + - tweak: "Body- and stasis bags can be tread upon when open." diff --git a/html/changelogs/Atermonera-pressure_protection.yml b/html/changelogs/Atermonera-pressure_protection.yml new file mode 100644 index 0000000000..b846aec6d8 --- /dev/null +++ b/html/changelogs/Atermonera-pressure_protection.yml @@ -0,0 +1,8 @@ +author: Atermonera +delete-after: True +changes: + - rscadd: "Clothing now has pressure protection variables, that set lower and upper pressure bounds within which they will protect you from pressure-based harm." + - rscadd: "Protection falls off when exceeding the pressure limits from 100% protection at the boundary to 0% at 10% in excess (above the max or below the min) boundary." + - tweak: "Currently, only hat and suit slots are checked for this protection (No change)." + - tweak: "Anomaly suits (The orange ones) now offer limited pressure protection in case anomalies start making or draining air." + - bugfix: "Firesuits are no longer spaceproof, but still offer protection against the high pressures of fire." diff --git a/html/changelogs/Cerebulon - Clothes.yml b/html/changelogs/Cerebulon - Clothes.yml new file mode 100644 index 0000000000..b05070efd1 --- /dev/null +++ b/html/changelogs/Cerebulon - Clothes.yml @@ -0,0 +1,8 @@ + + +author: Cerebulon + +delete-after: True + +changes: + - rscadd: "Added 12 new loadout items plus colour variants: Utility pants, sleek overalls, sari, modern wrap jacket, ascetic garb, asymmetrical jackets, cowled vest, kamishimo, jingasa, maang tikka, thin-frame glasses, rimless glasses." diff --git a/html/changelogs/Cerebulon - ReligionUpdate.yml b/html/changelogs/Cerebulon - ReligionUpdate.yml new file mode 100644 index 0000000000..50f402fae0 --- /dev/null +++ b/html/changelogs/Cerebulon - ReligionUpdate.yml @@ -0,0 +1,15 @@ + +author: Cerebulon + +# Optional: Remove this file after generating master changelog. Useful for PR changelogs that won't get used again. +delete-after: True + +# Any changes you've made. See valid prefix list above. +# INDENT WITH TWO SPACES. NOT TABS. SPACES. +# SCREW THIS UP AND IT WON'T WORK. +# Also, all entries are changed into a single [] after a master changelog generation. Just remove the brackets when you add new entries. +# Please surround your changes in double quotes ("), as certain characters otherwise screws up compiling. The quotes will not show up in the changelog. +changes: + - rscadd: "Added customizable religious icons to the chaplain's office." + - rscadd: "Added black and white candles." + - tweak: "Updated religion lists in character setup to be lore friendly." diff --git a/html/changelogs/Cerebulon -Teshrigs.yml b/html/changelogs/Cerebulon -Teshrigs.yml new file mode 100644 index 0000000000..1f4b499866 --- /dev/null +++ b/html/changelogs/Cerebulon -Teshrigs.yml @@ -0,0 +1,7 @@ + +author: Cerebulon + +delete-after: True + +changes: + - rscadd: "Added teshari hardsuit sprites." diff --git a/html/changelogs/Eguns - Anewbe.yml b/html/changelogs/Eguns - Anewbe.yml new file mode 100644 index 0000000000..9454b66ccd --- /dev/null +++ b/html/changelogs/Eguns - Anewbe.yml @@ -0,0 +1,36 @@ +################################ +# Example Changelog File +# +# Note: This file, and files beginning with ".", and files that don't end in ".yml" will not be read. If you change this file, you will look really dumb. +# +# Your changelog will be merged with a master changelog. (New stuff added only, and only on the date entry for the day it was merged.) +# When it is, any changes listed below will disappear. +# +# Valid Prefixes: +# bugfix +# wip (For works in progress) +# tweak +# soundadd +# sounddel +# rscadd (general adding of nice things) +# rscdel (general deleting of nice things) +# imageadd +# imagedel +# maptweak +# spellcheck (typo fixes) +# experiment +################################# + +# Your name. +author: Anewbe + +# Optional: Remove this file after generating master changelog. Useful for PR changelogs that won't get used again. +delete-after: True + +# Any changes you've made. See valid prefix list above. +# INDENT WITH TWO SPACES. NOT TABS. SPACES. +# SCREW THIS UP AND IT WON'T WORK. +# Also, all entries are changed into a single [] after a master changelog generation. Just remove the brackets when you add new entries. +# Please surround your changes in double quotes ("), as certain characters otherwise screws up compiling. The quotes will not show up in the changelog. +changes: + - tweak: "Eguns take 4 shots to stun, rather than 3." diff --git a/html/changelogs/Mechoid - Flashes.yml b/html/changelogs/Mechoid - Flashes.yml new file mode 100644 index 0000000000..9a027fc83f --- /dev/null +++ b/html/changelogs/Mechoid - Flashes.yml @@ -0,0 +1,39 @@ +################################ +# Example Changelog File +# +# Note: This file, and files beginning with ".", and files that don't end in ".yml" will not be read. If you change this file, you will look really dumb. +# +# Your changelog will be merged with a master changelog. (New stuff added only, and only on the date entry for the day it was merged.) +# When it is, any changes listed below will disappear. +# +# Valid Prefixes: +# bugfix +# wip (For works in progress) +# tweak +# soundadd +# sounddel +# rscadd (general adding of nice things) +# rscdel (general deleting of nice things) +# imageadd +# imagedel +# maptweak +# spellcheck (typo fixes) +# experiment +################################# + +# Your name. +author: Mechoid + +# Optional: Remove this file after generating master changelog. Useful for PR changelogs that won't get used again. +delete-after: True + +# Any changes you've made. See valid prefix list above. +# INDENT WITH TWO SPACES. NOT TABS. SPACES. +# SCREW THIS UP AND IT WON'T WORK. +# Also, all entries are changed into a single [] after a master changelog generation. Just remove the brackets when you add new entries. +# Please surround your changes in double quotes ("), as certain characters otherwise screws up compiling. The quotes will not show up in the changelog. +changes: + - tweak: "Flashes now actually run the risk of burning out." + - tweak: "Flashes that burn out can be repaired after approximately 40 seconds and with some luck, via a screwdriver." + - tweak: "Cyborg flashes use charge only, and do not have the 10 flash limit. They instead begin burning large amounts of charge." + - tweak: "Flashes use miniscule charge in addition to their capacitor burn-out, totalling 12 uses, taking 4 to down a human. They can be charged within a standard charger." \ No newline at end of file diff --git a/html/changelogs/Mechoid - LingJacket.yml b/html/changelogs/Mechoid - LingJacket.yml new file mode 100644 index 0000000000..5aef776f8e --- /dev/null +++ b/html/changelogs/Mechoid - LingJacket.yml @@ -0,0 +1,37 @@ +################################ +# Example Changelog File +# +# Note: This file, and files beginning with ".", and files that don't end in ".yml" will not be read. If you change this file, you will look really dumb. +# +# Your changelog will be merged with a master changelog. (New stuff added only, and only on the date entry for the day it was merged.) +# When it is, any changes listed below will disappear. +# +# Valid Prefixes: +# bugfix +# wip (For works in progress) +# tweak +# soundadd +# sounddel +# rscadd (general adding of nice things) +# rscdel (general deleting of nice things) +# imageadd +# imagedel +# maptweak +# spellcheck (typo fixes) +# experiment +################################# + +# Your name. +author: Mechoid + +# Optional: Remove this file after generating master changelog. Useful for PR changelogs that won't get used again. +delete-after: True + +# Any changes you've made. See valid prefix list above. +# INDENT WITH TWO SPACES. NOT TABS. SPACES. +# SCREW THIS UP AND IT WON'T WORK. +# Also, all entries are changed into a single [] after a master changelog generation. Just remove the brackets when you add new entries. +# Please surround your changes in double quotes ("), as certain characters otherwise screws up compiling. The quotes will not show up in the changelog. +changes: + - bugfix: "Oversight regarding Changeling revive not removing restraints fixed." + - tweak: "Straight Jackets can now be resisted out of in 8 minutes, or as low as 5 depending on species attacks. Shredding or hulked humans will break out in 20 seconds, destroying the jacket." diff --git a/html/changelogs/Mechoid - Virtual and Alien Reality.yml b/html/changelogs/Mechoid - Virtual and Alien Reality.yml new file mode 100644 index 0000000000..c1149647b5 --- /dev/null +++ b/html/changelogs/Mechoid - Virtual and Alien Reality.yml @@ -0,0 +1,43 @@ +################################ +# Example Changelog File +# +# Note: This file, and files beginning with ".", and files that don't end in ".yml" will not be read. If you change this file, you will look really dumb. +# +# Your changelog will be merged with a master changelog. (New stuff added only, and only on the date entry for the day it was merged.) +# When it is, any changes listed below will disappear. +# +# Valid Prefixes: +# bugfix +# wip (For works in progress) +# tweak +# soundadd +# sounddel +# rscadd (general adding of nice things) +# rscdel (general deleting of nice things) +# imageadd +# imagedel +# maptweak +# spellcheck (typo fixes) +# experiment +################################# + +# Your name. +author: Mechoid + +# Optional: Remove this file after generating master changelog. Useful for PR changelogs that won't get used again. +delete-after: True + +# Any changes you've made. See valid prefix list above. +# INDENT WITH TWO SPACES. NOT TABS. SPACES. +# SCREW THIS UP AND IT WON'T WORK. +# Also, all entries are changed into a single [] after a master changelog generation. Just remove the brackets when you add new entries. +# Please surround your changes in double quotes ("), as certain characters otherwise screws up compiling. The quotes will not show up in the changelog. +changes: + - rscadd: "Organs can now add or remove verbs." + - rscadd: "Organs now can have special effects on processing." + - tweak: "Xenomorph plasma vessels now regenerate phoron passively, at an incredibly slow rate. Can be accelerated by consuming liquid phoron." + - tweak: "Xenomorph organs now give their respective abilities when implanted." + - tweak: "Virtual Reality pods cleaned up." + - rscadd: "Alien Realiy pod added for PoIs or admins to use. Functions similarly to a VR pod, except it will produce a living body on the pod's turf." + - rscadd: "Three replicant species added for event and PoI use. They are shape-shifters each with different abilities due to their organs." + - rscadd: "Replicant organs added, versions of many organs that do not reject in their host. Two currently exist that give special passives." diff --git a/html/changelogs/Mechoid-DAXONS.yml b/html/changelogs/Mechoid-DAXONS.yml new file mode 100644 index 0000000000..c45fc54322 --- /dev/null +++ b/html/changelogs/Mechoid-DAXONS.yml @@ -0,0 +1,36 @@ +################################ +# Example Changelog File +# +# Note: This file, and files beginning with ".", and files that don't end in ".yml" will not be read. If you change this file, you will look really dumb. +# +# Your changelog will be merged with a master changelog. (New stuff added only, and only on the date entry for the day it was merged.) +# When it is, any changes listed below will disappear. +# +# Valid Prefixes: +# bugfix +# wip (For works in progress) +# tweak +# soundadd +# sounddel +# rscadd (general adding of nice things) +# rscdel (general deleting of nice things) +# imageadd +# imagedel +# maptweak +# spellcheck (typo fixes) +# experiment +################################# + +# Your name. +author: Mechoid + +# Optional: Remove this file after generating master changelog. Useful for PR changelogs that won't get used again. +delete-after: True + +# Any changes you've made. See valid prefix list above. +# INDENT WITH TWO SPACES. NOT TABS. SPACES. +# SCREW THIS UP AND IT WON'T WORK. +# Also, all entries are changed into a single [] after a master changelog generation. Just remove the brackets when you add new entries. +# Please surround your changes in double quotes ("), as certain characters otherwise screws up compiling. The quotes will not show up in the changelog. +changes: + - tweak: "Tweaked Respiro- Cordra- Gastiro- and Hepanephro- Daxons to be more effective with dealing with the side-effects of damaged organs." diff --git a/html/changelogs/Mechoid-Slimefix.yml b/html/changelogs/Mechoid-Slimefix.yml new file mode 100644 index 0000000000..10bb77d5bc --- /dev/null +++ b/html/changelogs/Mechoid-Slimefix.yml @@ -0,0 +1,36 @@ +################################ +# Example Changelog File +# +# Note: This file, and files beginning with ".", and files that don't end in ".yml" will not be read. If you change this file, you will look really dumb. +# +# Your changelog will be merged with a master changelog. (New stuff added only, and only on the date entry for the day it was merged.) +# When it is, any changes listed below will disappear. +# +# Valid Prefixes: +# bugfix +# wip (For works in progress) +# tweak +# soundadd +# sounddel +# rscadd (general adding of nice things) +# rscdel (general deleting of nice things) +# imageadd +# imagedel +# maptweak +# spellcheck (typo fixes) +# experiment +################################# + +# Your name. +author: Mechoid + +# Optional: Remove this file after generating master changelog. Useful for PR changelogs that won't get used again. +delete-after: True + +# Any changes you've made. See valid prefix list above. +# INDENT WITH TWO SPACES. NOT TABS. SPACES. +# SCREW THIS UP AND IT WON'T WORK. +# Also, all entries are changed into a single [] after a master changelog generation. Just remove the brackets when you add new entries. +# Please surround your changes in double quotes ("), as certain characters otherwise screws up compiling. The quotes will not show up in the changelog. +changes: + - bugfix: "Slimes now respect slime colors as their faction when dealing with other slimes." diff --git a/html/changelogs/Mechoid-Tasers.yml b/html/changelogs/Mechoid-Tasers.yml new file mode 100644 index 0000000000..422d2569e3 --- /dev/null +++ b/html/changelogs/Mechoid-Tasers.yml @@ -0,0 +1,36 @@ +################################ +# Example Changelog File +# +# Note: This file, and files beginning with ".", and files that don't end in ".yml" will not be read. If you change this file, you will look really dumb. +# +# Your changelog will be merged with a master changelog. (New stuff added only, and only on the date entry for the day it was merged.) +# When it is, any changes listed below will disappear. +# +# Valid Prefixes: +# bugfix +# wip (For works in progress) +# tweak +# soundadd +# sounddel +# rscadd (general adding of nice things) +# rscdel (general deleting of nice things) +# imageadd +# imagedel +# maptweak +# spellcheck (typo fixes) +# experiment +################################# + +# Your name. +author: Mechoid + +# Optional: Remove this file after generating master changelog. Useful for PR changelogs that won't get used again. +delete-after: True + +# Any changes you've made. See valid prefix list above. +# INDENT WITH TWO SPACES. NOT TABS. SPACES. +# SCREW THIS UP AND IT WON'T WORK. +# Also, all entries are changed into a single [] after a master changelog generation. Just remove the brackets when you add new entries. +# Please surround your changes in double quotes ("), as certain characters otherwise screws up compiling. The quotes will not show up in the changelog. +changes: + - tweak: "Security taser shot count dropped from 10 to 5." diff --git a/html/changelogs/Neerti-AI.yml b/html/changelogs/Neerti-AI.yml new file mode 100644 index 0000000000..9b9f13674d --- /dev/null +++ b/html/changelogs/Neerti-AI.yml @@ -0,0 +1,37 @@ +################################ +# Example Changelog File +# +# Note: This file, and files beginning with ".", and files that don't end in ".yml" will not be read. If you change this file, you will look really dumb. +# +# Your changelog will be merged with a master changelog. (New stuff added only, and only on the date entry for the day it was merged.) +# When it is, any changes listed below will disappear. +# +# Valid Prefixes: +# bugfix +# wip (For works in progress) +# tweak +# soundadd +# sounddel +# rscadd (general adding of nice things) +# rscdel (general deleting of nice things) +# imageadd +# imagedel +# maptweak +# spellcheck (typo fixes) +# experiment +################################# + +# Your name. +author: Neerti + +# Optional: Remove this file after generating master changelog. Useful for PR changelogs that won't get used again. +delete-after: True + +# Any changes you've made. See valid prefix list above. +# INDENT WITH TWO SPACES. NOT TABS. SPACES. +# SCREW THIS UP AND IT WON'T WORK. +# Also, all entries are changed into a single [] after a master changelog generation. Just remove the brackets when you add new entries. +# Please surround your changes in double quotes ("), as certain characters otherwise screws up compiling. The quotes will not show up in the changelog. +changes: + - experiment: "Rewrites the AI system for mobs. It should be more responsive and robust. Some mobs have special AIs which can do certain things like kiting, following you on a lark, or telling you to go away before shooting you." + - tweak: "Rewrites literally every 'simple_animal' mob into new, shinier, and hopefully more interesting 'simple_mob' mobs, some with new mechanics, like spiders, fake mechas, and hivebots. There are so many changes that it wouldn't be possible to list them here." diff --git a/html/changelogs/Neerti-AI_Shells.yml b/html/changelogs/Neerti-AI_Shells.yml new file mode 100644 index 0000000000..f9004a2eb4 --- /dev/null +++ b/html/changelogs/Neerti-AI_Shells.yml @@ -0,0 +1,37 @@ +################################ +# Example Changelog File +# +# Note: This file, and files beginning with ".", and files that don't end in ".yml" will not be read. If you change this file, you will look really dumb. +# +# Your changelog will be merged with a master changelog. (New stuff added only, and only on the date entry for the day it was merged.) +# When it is, any changes listed below will disappear. +# +# Valid Prefixes: +# bugfix +# wip (For works in progress) +# tweak +# soundadd +# sounddel +# rscadd (general adding of nice things) +# rscdel (general deleting of nice things) +# imageadd +# imagedel +# maptweak +# spellcheck (typo fixes) +# experiment +################################# + +# Your name. +author: Neerti + +# Optional: Remove this file after generating master changelog. Useful for PR changelogs that won't get used again. +delete-after: True + +# Any changes you've made. See valid prefix list above. +# INDENT WITH TWO SPACES. NOT TABS. SPACES. +# SCREW THIS UP AND IT WON'T WORK. +# Also, all entries are changed into a single [] after a master changelog generation. Just remove the brackets when you add new entries. +# Please surround your changes in double quotes ("), as certain characters otherwise screws up compiling. The quotes will not show up in the changelog. +changes: + - tweak: "Removes ability for AI to print and inhabit maintenance and construction drones. This has been replaced with a system which allows for AIs to inhabit special cyborg shells, called AI Shells, which are built with a new MMI type in Robotics. Most of the regular cyborg mechanics applies to AI Shells." + diff --git a/html/changelogs/Novacat - alarms.yml b/html/changelogs/Novacat - alarms.yml new file mode 100644 index 0000000000..72e831a84b --- /dev/null +++ b/html/changelogs/Novacat - alarms.yml @@ -0,0 +1,37 @@ +################################ +# Example Changelog File +# +# Note: This file, and files beginning with ".", and files that don't end in ".yml" will not be read. If you change this file, you will look really dumb. +# +# Your changelog will be merged with a master changelog. (New stuff added only, and only on the date entry for the day it was merged.) +# When it is, any changes listed below will disappear. +# +# Valid Prefixes: +# bugfix +# wip (For works in progress) +# tweak +# soundadd +# sounddel +# rscadd (general adding of nice things) +# rscdel (general deleting of nice things) +# imageadd +# imagedel +# maptweak +# spellcheck (typo fixes) +# experiment +################################# + +# Your name. +author: Novacat + +# Optional: Remove this file after generating master changelog. Useful for PR changelogs that won't get used again. +delete-after: True + +# Any changes you've made. See valid prefix list above. +# INDENT WITH TWO SPACES. NOT TABS. SPACES. +# SCREW THIS UP AND IT WON'T WORK. +# Also, all entries are changed into a single [] after a master changelog generation. Just remove the brackets when you add new entries. +# Please surround your changes in double quotes ("), as certain characters otherwise screws up compiling. The quotes will not show up in the changelog. +changes: + - rscadd: "Adds new status displays for all alert levels" + - rscadd: "Adds yellow, violet, and orange alert levels" diff --git a/html/changelogs/Novacat - stasiscages.yml b/html/changelogs/Novacat - stasiscages.yml new file mode 100644 index 0000000000..1e2d52ab4c --- /dev/null +++ b/html/changelogs/Novacat - stasiscages.yml @@ -0,0 +1,36 @@ +################################ +# Example Changelog File +# +# Note: This file, and files beginning with ".", and files that don't end in ".yml" will not be read. If you change this file, you will look really dumb. +# +# Your changelog will be merged with a master changelog. (New stuff added only, and only on the date entry for the day it was merged.) +# When it is, any changes listed below will disappear. +# +# Valid Prefixes: +# bugfix +# wip (For works in progress) +# tweak +# soundadd +# sounddel +# rscadd (general adding of nice things) +# rscdel (general deleting of nice things) +# imageadd +# imagedel +# maptweak +# spellcheck (typo fixes) +# experiment +################################# + +# Your name. +author: Novacat + +# Optional: Remove this file after generating master changelog. Useful for PR changelogs that won't get used again. +delete-after: True + +# Any changes you've made. See valid prefix list above. +# INDENT WITH TWO SPACES. NOT TABS. SPACES. +# SCREW THIS UP AND IT WON'T WORK. +# Also, all entries are changed into a single [] after a master changelog generation. Just remove the brackets when you add new entries. +# Please surround your changes in double quotes ("), as certain characters otherwise screws up compiling. The quotes will not show up in the changelog. +changes: + - rscadd: "Stasis Cages which allows safe transport of mobs." diff --git a/html/changelogs/Novacat-PR-5779.yml b/html/changelogs/Novacat-PR-5779.yml new file mode 100644 index 0000000000..e4cc233b54 --- /dev/null +++ b/html/changelogs/Novacat-PR-5779.yml @@ -0,0 +1,36 @@ +################################ +# Example Changelog File +# +# Note: This file, and files beginning with ".", and files that don't end in ".yml" will not be read. If you change this file, you will look really dumb. +# +# Your changelog will be merged with a master changelog. (New stuff added only, and only on the date entry for the day it was merged.) +# When it is, any changes listed below will disappear. +# +# Valid Prefixes: +# bugfix +# wip (For works in progress) +# tweak +# soundadd +# sounddel +# rscadd (general adding of nice things) +# rscdel (general deleting of nice things) +# imageadd +# imagedel +# maptweak +# spellcheck (typo fixes) +# experiment +################################# + +# Your name. +author: Novacat + +# Optional: Remove this file after generating master changelog. Useful for PR changelogs that won't get used again. +delete-after: True + +# Any changes you've made. See valid prefix list above. +# INDENT WITH TWO SPACES. NOT TABS. SPACES. +# SCREW THIS UP AND IT WON'T WORK. +# Also, all entries are changed into a single [] after a master changelog generation. Just remove the brackets when you add new entries. +# Please surround your changes in double quotes ("), as certain characters otherwise screws up compiling. The quotes will not show up in the changelog. +changes: + - tweak: "All emergency tanks now spawn at full capacity." diff --git a/html/changelogs/PrismaticGynoid - charactercopy.yml b/html/changelogs/PrismaticGynoid - charactercopy.yml new file mode 100644 index 0000000000..2c732b2b93 --- /dev/null +++ b/html/changelogs/PrismaticGynoid - charactercopy.yml @@ -0,0 +1,6 @@ +author: PrismaticGynoid + +delete-after: True + +changes: + - rscadd: "Adds the ability to copy a character slot onto another one, allowing for easier rearranging of characters, or wiping characters by copying empty slots." diff --git a/html/changelogs/PrismaticGynoid - crashedescapepods.yml b/html/changelogs/PrismaticGynoid - crashedescapepods.yml new file mode 100644 index 0000000000..18d4d3bce2 --- /dev/null +++ b/html/changelogs/PrismaticGynoid - crashedescapepods.yml @@ -0,0 +1,6 @@ +author: PrismaticGynoid + +delete-after: True + +changes: + - rscadd: "Adds three new crashed escape pod PoIs." diff --git a/html/changelogs/ater - rig pressurecooker.yml b/html/changelogs/ater - rig pressurecooker.yml new file mode 100644 index 0000000000..696de0487c --- /dev/null +++ b/html/changelogs/ater - rig pressurecooker.yml @@ -0,0 +1,4 @@ +author: Atermonera +delete-after: True +changes + - bugfix: "Rigsuits have been resupplied following a mass-recall after a number of suits were reported to have defective pressure-sealant mechanisms. The new sealant mechanisms have been thoroughly tested and should be less prone to failure." \ No newline at end of file diff --git a/html/changelogs/ater - sinks.yml b/html/changelogs/ater - sinks.yml new file mode 100644 index 0000000000..771921c760 --- /dev/null +++ b/html/changelogs/ater - sinks.yml @@ -0,0 +1,4 @@ +author: Atermonera +delete-after: True +changes + - bugfix: "Powersink drains have been unclogged and work once more" \ No newline at end of file diff --git a/html/changelogs/ater_botspeak.yml b/html/changelogs/ater_botspeak.yml new file mode 100644 index 0000000000..a5ef574c50 --- /dev/null +++ b/html/changelogs/ater_botspeak.yml @@ -0,0 +1,4 @@ +author: Atermonera +delete-after: True +changes: + - bugfix: "Robot sound files have been decrypted following a bizarre ransomware attack by Boiling Point remnants." diff --git a/html/changelogs/ater_stairs.yml b/html/changelogs/ater_stairs.yml new file mode 100644 index 0000000000..fd313ac717 --- /dev/null +++ b/html/changelogs/ater_stairs.yml @@ -0,0 +1,4 @@ +author: Atermonera +delete-after: True +changes + - bugfix: "Stairs have been straightened and now connect to both the heavens and hells, formerly just the hells." \ No newline at end of file diff --git a/html/changelogs/atermonera_suit_cooling.yml b/html/changelogs/atermonera_suit_cooling.yml new file mode 100644 index 0000000000..fce9429e6e --- /dev/null +++ b/html/changelogs/atermonera_suit_cooling.yml @@ -0,0 +1,4 @@ +author: atermonera +delete-after: True +changes: + - bugfix: "Suit coolers and rigsuit coolers now protect FBPs against vacuum again." \ No newline at end of file diff --git a/html/changelogs/kartagrafi-nockrobes.yml b/html/changelogs/kartagrafi-nockrobes.yml new file mode 100644 index 0000000000..3023f38a40 --- /dev/null +++ b/html/changelogs/kartagrafi-nockrobes.yml @@ -0,0 +1,36 @@ +################################ +# Example Changelog File +# +# Note: This file, and files beginning with ".", and files that don't end in ".yml" will not be read. If you change this file, you will look really dumb. +# +# Your changelog will be merged with a master changelog. (New stuff added only, and only on the date entry for the day it was merged.) +# When it is, any changes listed below will disappear. +# +# Valid Prefixes: +# bugfix +# wip (For works in progress) +# tweak +# soundadd +# sounddel +# rscadd (general adding of nice things) +# rscdel (general deleting of nice things) +# imageadd +# imagedel +# maptweak +# spellcheck (typo fixes) +# experiment +################################# + +# Your name. +author: kartagrafi + +# Optional: Remove this file after generating master changelog. Useful for PR changelogs that won't get used again. +delete-after: True + +# Any changes you've made. See valid prefix list above. +# INDENT WITH TWO SPACES. NOT TABS. SPACES. +# SCREW THIS UP AND IT WON'T WORK. +# Also, all entries are changed into a single [] after a master changelog generation. Just remove the brackets when you add new entries. +# Please surround your changes in double quotes ("), as certain characters otherwise screws up compiling. The quotes will not show up in the changelog. +changes: + - rscadd: "Adds several clothing items to loadout such as: Nock masks, cowls and robes." \ No newline at end of file diff --git a/html/changelogs/mistyLuminescence - beltrigs.yml b/html/changelogs/mistyLuminescence - beltrigs.yml new file mode 100644 index 0000000000..702a9dd6d2 --- /dev/null +++ b/html/changelogs/mistyLuminescence - beltrigs.yml @@ -0,0 +1,36 @@ +################################ +# Example Changelog File +# +# Note: This file, and files beginning with ".", and files that don't end in ".yml" will not be read. If you change this file, you will look really dumb. +# +# Your changelog will be merged with a master changelog. (New stuff added only, and only on the date entry for the day it was merged.) +# When it is, any changes listed below will disappear. +# +# Valid Prefixes: +# bugfix +# wip (For works in progress) +# tweak +# soundadd +# sounddel +# rscadd (general adding of nice things) +# rscdel (general deleting of nice things) +# imageadd +# imagedel +# maptweak +# spellcheck (typo fixes) +# experiment +################################# + +# Your name. +author: mistyLuminescence + +# Optional: Remove this file after generating master changelog. Useful for PR changelogs that won't get used again. +delete-after: True + +# Any changes you've made. See valid prefix list above. +# INDENT WITH TWO SPACES. NOT TABS. SPACES. +# SCREW THIS UP AND IT WON'T WORK. +# Also, all entries are changed into a single [] after a master changelog generation. Just remove the brackets when you add new entries. +# Please surround your changes in double quotes ("), as certain characters otherwise screws up compiling. The quotes will not show up in the changelog. +changes: + - rscadd: "Lays the foundation for RIGs to be worn on the belt slot. Doesn't apply to any RIGs currently, unless VV'd, but stay tuned!" diff --git a/html/changelogs/mistyLuminescence - biginjector2.yml b/html/changelogs/mistyLuminescence - biginjector2.yml new file mode 100644 index 0000000000..bd48b6987a --- /dev/null +++ b/html/changelogs/mistyLuminescence - biginjector2.yml @@ -0,0 +1,36 @@ +################################ +# Example Changelog File +# +# Note: This file, and files beginning with ".", and files that don't end in ".yml" will not be read. If you change this file, you will look really dumb. +# +# Your changelog will be merged with a master changelog. (New stuff added only, and only on the date entry for the day it was merged.) +# When it is, any changes listed below will disappear. +# +# Valid Prefixes: +# bugfix +# wip (For works in progress) +# tweak +# soundadd +# sounddel +# rscadd (general adding of nice things) +# rscdel (general deleting of nice things) +# imageadd +# imagedel +# maptweak +# spellcheck (typo fixes) +# experiment +################################# + +# Your name. +author: mistyLuminescence + +# Optional: Remove this file after generating master changelog. Useful for PR changelogs that won't get used again. +delete-after: True + +# Any changes you've made. See valid prefix list above. +# INDENT WITH TWO SPACES. NOT TABS. SPACES. +# SCREW THIS UP AND IT WON'T WORK. +# Also, all entries are changed into a single [] after a master changelog generation. Just remove the brackets when you add new entries. +# Please surround your changes in double quotes ("), as certain characters otherwise screws up compiling. The quotes will not show up in the changelog. +changes: + - tweak: "Large autoinjectors are now scannable and syringeable again, just like they used to be. Unidentified autoinjectors still aren't, unless you ID them first." \ No newline at end of file diff --git a/html/changelogs/mistyLuminescence - hydrobeakers.yml b/html/changelogs/mistyLuminescence - hydrobeakers.yml new file mode 100644 index 0000000000..2e7f993a95 --- /dev/null +++ b/html/changelogs/mistyLuminescence - hydrobeakers.yml @@ -0,0 +1,36 @@ +################################ +# Example Changelog File +# +# Note: This file, and files beginning with ".", and files that don't end in ".yml" will not be read. If you change this file, you will look really dumb. +# +# Your changelog will be merged with a master changelog. (New stuff added only, and only on the date entry for the day it was merged.) +# When it is, any changes listed below will disappear. +# +# Valid Prefixes: +# bugfix +# wip (For works in progress) +# tweak +# soundadd +# sounddel +# rscadd (general adding of nice things) +# rscdel (general deleting of nice things) +# imageadd +# imagedel +# maptweak +# spellcheck (typo fixes) +# experiment +################################# + +# Your name. +author: mistyLuminescence + +# Optional: Remove this file after generating master changelog. Useful for PR changelogs that won't get used again. +delete-after: True + +# Any changes you've made. See valid prefix list above. +# INDENT WITH TWO SPACES. NOT TABS. SPACES. +# SCREW THIS UP AND IT WON'T WORK. +# Also, all entries are changed into a single [] after a master changelog generation. Just remove the brackets when you add new entries. +# Please surround your changes in double quotes ("), as certain characters otherwise screws up compiling. The quotes will not show up in the changelog. +changes: + - rscadd: "Adds beakers to the hydroponics lockers and NutriMax vendors." diff --git a/html/changelogs/mistyLuminescence - loadoutroles.yml b/html/changelogs/mistyLuminescence - loadoutroles.yml new file mode 100644 index 0000000000..6bffb499f9 --- /dev/null +++ b/html/changelogs/mistyLuminescence - loadoutroles.yml @@ -0,0 +1,36 @@ +################################ +# Example Changelog File +# +# Note: This file, and files beginning with ".", and files that don't end in ".yml" will not be read. If you change this file, you will look really dumb. +# +# Your changelog will be merged with a master changelog. (New stuff added only, and only on the date entry for the day it was merged.) +# When it is, any changes listed below will disappear. +# +# Valid Prefixes: +# bugfix +# wip (For works in progress) +# tweak +# soundadd +# sounddel +# rscadd (general adding of nice things) +# rscdel (general deleting of nice things) +# imageadd +# imagedel +# maptweak +# spellcheck (typo fixes) +# experiment +################################# + +# Your name. +author: mistyLuminescence + +# Optional: Remove this file after generating master changelog. Useful for PR changelogs that won't get used again. +delete-after: True + +# Any changes you've made. See valid prefix list above. +# INDENT WITH TWO SPACES. NOT TABS. SPACES. +# SCREW THIS UP AND IT WON'T WORK. +# Also, all entries are changed into a single [] after a master changelog generation. Just remove the brackets when you add new entries. +# Please surround your changes in double quotes ("), as certain characters otherwise screws up compiling. The quotes will not show up in the changelog. +changes: + - tweak: "More jobs can now take certain items in the loadout." diff --git a/html/changelogs/mistyLuminescence - turtlenecks.yml b/html/changelogs/mistyLuminescence - turtlenecks.yml new file mode 100644 index 0000000000..f0abec1e51 --- /dev/null +++ b/html/changelogs/mistyLuminescence - turtlenecks.yml @@ -0,0 +1,36 @@ +################################ +# Example Changelog File +# +# Note: This file, and files beginning with ".", and files that don't end in ".yml" will not be read. If you change this file, you will look really dumb. +# +# Your changelog will be merged with a master changelog. (New stuff added only, and only on the date entry for the day it was merged.) +# When it is, any changes listed below will disappear. +# +# Valid Prefixes: +# bugfix +# wip (For works in progress) +# tweak +# soundadd +# sounddel +# rscadd (general adding of nice things) +# rscdel (general deleting of nice things) +# imageadd +# imagedel +# maptweak +# spellcheck (typo fixes) +# experiment +################################# + +# Your name. +author: mistyLuminescence + +# Optional: Remove this file after generating master changelog. Useful for PR changelogs that won't get used again. +delete-after: True + +# Any changes you've made. See valid prefix list above. +# INDENT WITH TWO SPACES. NOT TABS. SPACES. +# SCREW THIS UP AND IT WON'T WORK. +# Also, all entries are changed into a single [] after a master changelog generation. Just remove the brackets when you add new entries. +# Please surround your changes in double quotes ("), as certain characters otherwise screws up compiling. The quotes will not show up in the changelog. +changes: + - rscadd: "Adds departmental turtlenecks, available in department wardrobes or the loadout selection. Look good... in space." diff --git a/html/changelogs/mistyLuminescence - wintercoats.yml b/html/changelogs/mistyLuminescence - wintercoats.yml new file mode 100644 index 0000000000..c4d86eb1e8 --- /dev/null +++ b/html/changelogs/mistyLuminescence - wintercoats.yml @@ -0,0 +1,36 @@ +################################ +# Example Changelog File +# +# Note: This file, and files beginning with ".", and files that don't end in ".yml" will not be read. If you change this file, you will look really dumb. +# +# Your changelog will be merged with a master changelog. (New stuff added only, and only on the date entry for the day it was merged.) +# When it is, any changes listed below will disappear. +# +# Valid Prefixes: +# bugfix +# wip (For works in progress) +# tweak +# soundadd +# sounddel +# rscadd (general adding of nice things) +# rscdel (general deleting of nice things) +# imageadd +# imagedel +# maptweak +# spellcheck (typo fixes) +# experiment +################################# + +# Your name. +author: N3X15 + +# Optional: Remove this file after generating master changelog. Useful for PR changelogs that won't get used again. +delete-after: True + +# Any changes you've made. See valid prefix list above. +# INDENT WITH TWO SPACES. NOT TABS. SPACES. +# SCREW THIS UP AND IT WON'T WORK. +# Also, all entries are changed into a single [] after a master changelog generation. Just remove the brackets when you add new entries. +# Please surround your changes in double quotes ("), as certain characters otherwise screws up compiling. The quotes will not show up in the changelog. +changes: + - tweak: "Departmental winter coats can now hold the same items as their standard departmental suit items - labcoats, hazard vests, body armor, aprons, etc." diff --git a/html/changelogs/neerti-looping_sounds.yml b/html/changelogs/neerti-looping_sounds.yml new file mode 100644 index 0000000000..214ec43678 --- /dev/null +++ b/html/changelogs/neerti-looping_sounds.yml @@ -0,0 +1,38 @@ +################################ +# Example Changelog File +# +# Note: This file, and files beginning with ".", and files that don't end in ".yml" will not be read. If you change this file, you will look really dumb. +# +# Your changelog will be merged with a master changelog. (New stuff added only, and only on the date entry for the day it was merged.) +# When it is, any changes listed below will disappear. +# +# Valid Prefixes: +# bugfix +# wip (For works in progress) +# tweak +# soundadd +# sounddel +# rscadd (general adding of nice things) +# rscdel (general deleting of nice things) +# imageadd +# imagedel +# maptweak +# spellcheck (typo fixes) +# experiment +################################# + +# Your name. +author: Neerti + +# Optional: Remove this file after generating master changelog. Useful for PR changelogs that won't get used again. +delete-after: True + +# Any changes you've made. See valid prefix list above. +# INDENT WITH TWO SPACES. NOT TABS. SPACES. +# SCREW THIS UP AND IT WON'T WORK. +# Also, all entries are changed into a single [] after a master changelog generation. Just remove the brackets when you add new entries. +# Please surround your changes in double quotes ("), as certain characters otherwise screws up compiling. The quotes will not show up in the changelog. +changes: + - soundadd: "Adds a lot of sounds, and the code to let them loop seemlessly. Things made audible now include the microwave, deep fryer, showers, the supermatter when it's active, the TEGs when active, geiger counters, and severe weather on Sif. The weather has different sounds for when indoors and when outdoors." + - tweak: "The weather sounds, and the supermatter hum can be disabled in your preferences." + - rscadd: "Adds a few more weather types that can only be activated by admin powers, such as ash storms and fallout." diff --git a/html/changelogs/zaddat.yml b/html/changelogs/zaddat.yml new file mode 100644 index 0000000000..667854662e --- /dev/null +++ b/html/changelogs/zaddat.yml @@ -0,0 +1,41 @@ +################################ +# Example Changelog File +# +# Note: This file, and files beginning with ".", and files that don't end in ".yml" will not be read. If you change this file, you will look really dumb. +# +# Your changelog will be merged with a master changelog. (New stuff added only, and only on the date entry for the day it was merged.) +# When it is, any changes listed below will disappear. +# +# Valid Prefixes: +# bugfix +# wip (For works in progress) +# tweak +# soundadd +# sounddel +# rscadd (general adding of nice things) +# rscdel (general deleting of nice things) +# imageadd +# imagedel +# maptweak +# spellcheck (typo fixes) +# experiment +################################# + +# Your name. +author: Elgeonmb + +# Optional: Remove this file after generating master changelog. Useful for PR changelogs that won't get used again. +delete-after: True + +# Any changes you've made. See valid prefix list above. +# INDENT WITH TWO SPACES. NOT TABS. SPACES. +# SCREW THIS UP AND IT WON'T WORK. +# Also, all entries are changed into a single [] after a master changelog generation. Just remove the brackets when you add new entries. +# Please surround your changes in double quotes ("), as certain characters otherwise screws up compiling. The quotes will not show up in the changelog. +changes: + - rscadd: "Added the Zaddat species, voidsuit-clad fragile bug people. Whitelist applications will be available at a later date." + - rscadd: "Added glucose hypos to the SWEATMAX vendors and a few other places thoughout the station." + - rscadd: "Zaddat equipment is now available through cargo." + - rscadd: "Some new, very very chuuni accessories to play with; the half cape, the full cape, and the sash" + - tweak: "Most accessories can now fit on suits." + - rscdel: "Dionaea and vox can no longer use station rigs." diff --git a/icons/ICON_OVERRIDE.txt b/icons/ICON_OVERRIDE.txt new file mode 100644 index 0000000000..eaed3e4fcd --- /dev/null +++ b/icons/ICON_OVERRIDE.txt @@ -0,0 +1,5 @@ +These files are overridden by Virgo. If a mirror PR needs to edit these files, there will be a conflict. + +icons/obj/food_custom.dmi +icons/obj/turbolift.dmi +icons/mob/custom_items/mob.dmi \ No newline at end of file diff --git a/icons/effects/beam.dmi b/icons/effects/beam.dmi index 4b7e714731..6c631498f6 100644 Binary files a/icons/effects/beam.dmi and b/icons/effects/beam.dmi differ diff --git a/icons/effects/effects.dmi b/icons/effects/effects.dmi index b735173878..64449a2bfc 100644 Binary files a/icons/effects/effects.dmi and b/icons/effects/effects.dmi differ diff --git a/icons/effects/map_effects.dmi b/icons/effects/map_effects.dmi new file mode 100644 index 0000000000..4f5bff755d Binary files /dev/null and b/icons/effects/map_effects.dmi differ diff --git a/icons/effects/projectiles.dmi b/icons/effects/projectiles.dmi deleted file mode 100644 index 2bf7813e05..0000000000 Binary files a/icons/effects/projectiles.dmi and /dev/null differ diff --git a/icons/effects/sludgeoverlay_vr.dmi b/icons/effects/sludgeoverlay_vr.dmi index af99da5894..35dfd15647 100644 Binary files a/icons/effects/sludgeoverlay_vr.dmi and b/icons/effects/sludgeoverlay_vr.dmi differ diff --git a/icons/effects/species.dmi b/icons/effects/species.dmi index 6f1b8d2188..fbd952d333 100644 Binary files a/icons/effects/species.dmi and b/icons/effects/species.dmi differ diff --git a/icons/effects/weather.dmi b/icons/effects/weather.dmi index 5ae794c898..355288fc32 100644 Binary files a/icons/effects/weather.dmi and b/icons/effects/weather.dmi differ diff --git a/icons/mecha/mecha.dmi b/icons/mecha/mecha.dmi index 5c3bb92b76..ca5c8b87a5 100644 Binary files a/icons/mecha/mecha.dmi and b/icons/mecha/mecha.dmi differ diff --git a/icons/misc/buildmode.dmi b/icons/misc/buildmode.dmi index c294178f91..dc8de0b6d0 100644 Binary files a/icons/misc/buildmode.dmi and b/icons/misc/buildmode.dmi differ diff --git a/icons/mob/AI.dmi b/icons/mob/AI.dmi index d0946d1564..0f4517206d 100644 Binary files a/icons/mob/AI.dmi and b/icons/mob/AI.dmi differ diff --git a/icons/mob/animal.dmi b/icons/mob/animal.dmi index e503b0d1b9..f3836ae2c1 100644 Binary files a/icons/mob/animal.dmi and b/icons/mob/animal.dmi differ diff --git a/icons/mob/back.dmi b/icons/mob/back.dmi index b3b9a852c9..129db87f03 100644 Binary files a/icons/mob/back.dmi and b/icons/mob/back.dmi differ diff --git a/icons/mob/birds.dmi b/icons/mob/birds.dmi index 582fcc60a8..afc1d8ff18 100644 Binary files a/icons/mob/birds.dmi and b/icons/mob/birds.dmi differ diff --git a/icons/mob/critter.dmi b/icons/mob/critter.dmi index f83c836427..4f249e2e8a 100644 Binary files a/icons/mob/critter.dmi and b/icons/mob/critter.dmi differ diff --git a/icons/mob/eyes.dmi b/icons/mob/eyes.dmi index 763ce78990..85c5a39320 100644 Binary files a/icons/mob/eyes.dmi and b/icons/mob/eyes.dmi differ diff --git a/icons/mob/eyes_vr.dmi b/icons/mob/eyes_vr.dmi new file mode 100644 index 0000000000..15a473ebbe Binary files /dev/null and b/icons/mob/eyes_vr.dmi differ diff --git a/icons/mob/feet.dmi b/icons/mob/feet.dmi index d1c09ef542..9c3997985e 100644 Binary files a/icons/mob/feet.dmi and b/icons/mob/feet.dmi differ diff --git a/icons/mob/head.dmi b/icons/mob/head.dmi index 202624cabf..829172a970 100644 Binary files a/icons/mob/head.dmi and b/icons/mob/head.dmi differ diff --git a/icons/mob/hivebot.dmi b/icons/mob/hivebot.dmi index ecaa519822..e18209733d 100644 Binary files a/icons/mob/hivebot.dmi and b/icons/mob/hivebot.dmi differ diff --git a/icons/mob/hud_jobs_vr.dmi b/icons/mob/hud_jobs_vr.dmi index b943508a47..88d68a41f1 100644 Binary files a/icons/mob/hud_jobs_vr.dmi and b/icons/mob/hud_jobs_vr.dmi differ diff --git a/icons/mob/human_face.dmi b/icons/mob/human_face.dmi index a65de5defd..614f8e2076 100644 Binary files a/icons/mob/human_face.dmi and b/icons/mob/human_face.dmi differ diff --git a/icons/mob/human_face_m.dmi b/icons/mob/human_face_m.dmi index fe62645869..9eff944078 100644 Binary files a/icons/mob/human_face_m.dmi and b/icons/mob/human_face_m.dmi differ diff --git a/icons/mob/human_races/markings_vr.dmi b/icons/mob/human_races/markings_vr.dmi index 300caaa9d8..e52265d69b 100644 Binary files a/icons/mob/human_races/markings_vr.dmi and b/icons/mob/human_races/markings_vr.dmi differ diff --git a/icons/mob/human_races/r_def_zaddat.dmi b/icons/mob/human_races/r_def_zaddat.dmi new file mode 100644 index 0000000000..71a38fb843 Binary files /dev/null and b/icons/mob/human_races/r_def_zaddat.dmi differ diff --git a/icons/mob/human_races/r_zaddat.dmi b/icons/mob/human_races/r_zaddat.dmi new file mode 100644 index 0000000000..8b48b76420 Binary files /dev/null and b/icons/mob/human_races/r_zaddat.dmi differ diff --git a/icons/mob/items/lefthand_guns.dmi b/icons/mob/items/lefthand_guns.dmi index 72e9c00465..34538ad383 100644 Binary files a/icons/mob/items/lefthand_guns.dmi and b/icons/mob/items/lefthand_guns.dmi differ diff --git a/icons/mob/items/righthand_guns.dmi b/icons/mob/items/righthand_guns.dmi index f3f75a86ea..898cdac880 100644 Binary files a/icons/mob/items/righthand_guns.dmi and b/icons/mob/items/righthand_guns.dmi differ diff --git a/icons/mob/mask.dmi b/icons/mob/mask.dmi index e99e3a5d36..fd1af6e950 100644 Binary files a/icons/mob/mask.dmi and b/icons/mob/mask.dmi differ diff --git a/icons/mob/mob.dmi b/icons/mob/mob.dmi index 1b0e592001..4bfb8bf479 100644 Binary files a/icons/mob/mob.dmi and b/icons/mob/mob.dmi differ diff --git a/icons/mob/modifier_effects.dmi b/icons/mob/modifier_effects.dmi index 262e45e717..a28dc6a520 100644 Binary files a/icons/mob/modifier_effects.dmi and b/icons/mob/modifier_effects.dmi differ diff --git a/icons/mob/robots.dmi b/icons/mob/robots.dmi index 9148f3f905..fbdfbf882d 100644 Binary files a/icons/mob/robots.dmi and b/icons/mob/robots.dmi differ diff --git a/icons/mob/screen1.dmi b/icons/mob/screen1.dmi index 0798bbc4d3..842909d3ec 100644 Binary files a/icons/mob/screen1.dmi and b/icons/mob/screen1.dmi differ diff --git a/icons/mob/slime2.dmi b/icons/mob/slime2.dmi index a0b6051665..9391c1acd3 100644 Binary files a/icons/mob/slime2.dmi and b/icons/mob/slime2.dmi differ diff --git a/icons/mob/spacesuit.dmi b/icons/mob/spacesuit.dmi index 2f875885a5..75410db893 100644 Binary files a/icons/mob/spacesuit.dmi and b/icons/mob/spacesuit.dmi differ diff --git a/icons/mob/species/seromi/back.dmi b/icons/mob/species/seromi/back.dmi index d0af48607c..0dcbeae289 100644 Binary files a/icons/mob/species/seromi/back.dmi and b/icons/mob/species/seromi/back.dmi differ diff --git a/icons/mob/species/seromi/deptjacket.dmi b/icons/mob/species/seromi/deptjacket.dmi index c43e44c1e5..84cd444186 100644 Binary files a/icons/mob/species/seromi/deptjacket.dmi and b/icons/mob/species/seromi/deptjacket.dmi differ diff --git a/icons/mob/species/seromi/eyes.dmi b/icons/mob/species/seromi/eyes.dmi index 8a916ca621..01e2475c3d 100644 Binary files a/icons/mob/species/seromi/eyes.dmi and b/icons/mob/species/seromi/eyes.dmi differ diff --git a/icons/mob/species/seromi/head.dmi b/icons/mob/species/seromi/head.dmi index 1c3f150a8e..8aacb79603 100644 Binary files a/icons/mob/species/seromi/head.dmi and b/icons/mob/species/seromi/head.dmi differ diff --git a/icons/mob/species/seromi/suit.dmi b/icons/mob/species/seromi/suit.dmi index 09dde09b2f..fb2243ef64 100644 Binary files a/icons/mob/species/seromi/suit.dmi and b/icons/mob/species/seromi/suit.dmi differ diff --git a/icons/mob/species/seromi/uniform.dmi b/icons/mob/species/seromi/uniform.dmi index c354d0bd12..a49299a4a1 100644 Binary files a/icons/mob/species/seromi/uniform.dmi and b/icons/mob/species/seromi/uniform.dmi differ diff --git a/icons/mob/species/tajaran/helmet.dmi b/icons/mob/species/tajaran/helmet.dmi index 93135f7106..b9c958f7d1 100644 Binary files a/icons/mob/species/tajaran/helmet.dmi and b/icons/mob/species/tajaran/helmet.dmi differ diff --git a/icons/mob/suit.dmi b/icons/mob/suit.dmi index 5b2bfe8e4f..c1908fe16b 100644 Binary files a/icons/mob/suit.dmi and b/icons/mob/suit.dmi differ diff --git a/icons/mob/ties.dmi b/icons/mob/ties.dmi index 59e77909e9..25935ccfbc 100644 Binary files a/icons/mob/ties.dmi and b/icons/mob/ties.dmi differ diff --git a/icons/mob/uniform.dmi b/icons/mob/uniform.dmi index aa6e8bfb81..cbad7d8591 100644 Binary files a/icons/mob/uniform.dmi and b/icons/mob/uniform.dmi differ diff --git a/icons/mob/vore/tails_vr.dmi b/icons/mob/vore/tails_vr.dmi index bf2129b3dd..4b09624625 100644 Binary files a/icons/mob/vore/tails_vr.dmi and b/icons/mob/vore/tails_vr.dmi differ diff --git a/icons/mob/vore/wings_vr.dmi b/icons/mob/vore/wings_vr.dmi index b290bfca7b..f6a78f51b4 100644 Binary files a/icons/mob/vore/wings_vr.dmi and b/icons/mob/vore/wings_vr.dmi differ diff --git a/icons/obj/32x64.dmi b/icons/obj/32x64.dmi new file mode 100644 index 0000000000..7b8c00eef8 Binary files /dev/null and b/icons/obj/32x64.dmi differ diff --git a/icons/obj/Cryogenic2.dmi b/icons/obj/Cryogenic2.dmi index 2c57783938..1a08b6909d 100644 Binary files a/icons/obj/Cryogenic2.dmi and b/icons/obj/Cryogenic2.dmi differ diff --git a/icons/obj/ammo.dmi b/icons/obj/ammo.dmi index 56d3a65124..b34cc9d91b 100644 Binary files a/icons/obj/ammo.dmi and b/icons/obj/ammo.dmi differ diff --git a/icons/obj/candle.dmi b/icons/obj/candle.dmi index 6a01c71e52..e00cb0ba3b 100644 Binary files a/icons/obj/candle.dmi and b/icons/obj/candle.dmi differ diff --git a/icons/obj/chaplain.dmi b/icons/obj/chaplain.dmi new file mode 100644 index 0000000000..9ac98e186a Binary files /dev/null and b/icons/obj/chaplain.dmi differ diff --git a/icons/obj/chemical.dmi b/icons/obj/chemical.dmi index 3bf2b9d660..1d4c723fca 100644 Binary files a/icons/obj/chemical.dmi and b/icons/obj/chemical.dmi differ diff --git a/icons/obj/clothing/collars_vr.dmi b/icons/obj/clothing/collars_vr.dmi index 6717b4f236..6c93ced866 100644 Binary files a/icons/obj/clothing/collars_vr.dmi and b/icons/obj/clothing/collars_vr.dmi differ diff --git a/icons/obj/clothing/glasses.dmi b/icons/obj/clothing/glasses.dmi index 8342982785..d8418a50a5 100644 Binary files a/icons/obj/clothing/glasses.dmi and b/icons/obj/clothing/glasses.dmi differ diff --git a/icons/obj/clothing/glasses_vr.dmi b/icons/obj/clothing/glasses_vr.dmi new file mode 100644 index 0000000000..bff9c7b3a8 Binary files /dev/null and b/icons/obj/clothing/glasses_vr.dmi differ diff --git a/icons/obj/clothing/hats.dmi b/icons/obj/clothing/hats.dmi index c585c40625..d0d5e98721 100644 Binary files a/icons/obj/clothing/hats.dmi and b/icons/obj/clothing/hats.dmi differ diff --git a/icons/obj/clothing/masks.dmi b/icons/obj/clothing/masks.dmi index 164a90c0c1..03a5e7fb09 100644 Binary files a/icons/obj/clothing/masks.dmi and b/icons/obj/clothing/masks.dmi differ diff --git a/icons/obj/clothing/masks_vr.dmi b/icons/obj/clothing/masks_vr.dmi index 3850f292c5..0a09e048bc 100644 Binary files a/icons/obj/clothing/masks_vr.dmi and b/icons/obj/clothing/masks_vr.dmi differ diff --git a/icons/obj/clothing/shoes.dmi b/icons/obj/clothing/shoes.dmi index a923ea9986..d2901f5bf3 100644 Binary files a/icons/obj/clothing/shoes.dmi and b/icons/obj/clothing/shoes.dmi differ diff --git a/icons/obj/clothing/spacesuits.dmi b/icons/obj/clothing/spacesuits.dmi index 50af23f601..7e0311acd5 100644 Binary files a/icons/obj/clothing/spacesuits.dmi and b/icons/obj/clothing/spacesuits.dmi differ diff --git a/icons/obj/clothing/suits.dmi b/icons/obj/clothing/suits.dmi index 38154ec14a..dc131fb6fe 100644 Binary files a/icons/obj/clothing/suits.dmi and b/icons/obj/clothing/suits.dmi differ diff --git a/icons/obj/clothing/ties.dmi b/icons/obj/clothing/ties.dmi index 52433ab5e3..c198543b05 100644 Binary files a/icons/obj/clothing/ties.dmi and b/icons/obj/clothing/ties.dmi differ diff --git a/icons/obj/clothing/uniforms.dmi b/icons/obj/clothing/uniforms.dmi index d0bb4a6b39..f375428c12 100644 Binary files a/icons/obj/clothing/uniforms.dmi and b/icons/obj/clothing/uniforms.dmi differ diff --git a/icons/obj/decals.dmi b/icons/obj/decals.dmi index 6fae3b0bee..c7b1fe5787 100644 Binary files a/icons/obj/decals.dmi and b/icons/obj/decals.dmi differ diff --git a/icons/obj/device.dmi b/icons/obj/device.dmi index 6c697f2777..0f8d1d245b 100644 Binary files a/icons/obj/device.dmi and b/icons/obj/device.dmi differ diff --git a/icons/obj/doors/DoorHazard.dmi b/icons/obj/doors/DoorHazard.dmi index 35f4c474bf..d32526b388 100644 Binary files a/icons/obj/doors/DoorHazard.dmi and b/icons/obj/doors/DoorHazard.dmi differ diff --git a/icons/obj/doors/rapid_pdoor.dmi b/icons/obj/doors/rapid_pdoor.dmi index d7e82ef045..66027d65fd 100644 Binary files a/icons/obj/doors/rapid_pdoor.dmi and b/icons/obj/doors/rapid_pdoor.dmi differ diff --git a/icons/obj/drinks.dmi b/icons/obj/drinks.dmi index 5adcea97c7..bc7558c9a8 100644 Binary files a/icons/obj/drinks.dmi and b/icons/obj/drinks.dmi differ diff --git a/icons/obj/fence.dmi b/icons/obj/fence.dmi new file mode 100644 index 0000000000..31b1abef3c Binary files /dev/null and b/icons/obj/fence.dmi differ diff --git a/icons/obj/flora/pinetrees.dmi b/icons/obj/flora/pinetrees.dmi index 63073046f0..1076dd472e 100644 Binary files a/icons/obj/flora/pinetrees.dmi and b/icons/obj/flora/pinetrees.dmi differ diff --git a/icons/obj/flora/rocks.dmi b/icons/obj/flora/rocks.dmi index 0974360e27..12d4f2c8ee 100644 Binary files a/icons/obj/flora/rocks.dmi and b/icons/obj/flora/rocks.dmi differ diff --git a/icons/obj/food_vr.dmi b/icons/obj/food_vr.dmi index 95b293d9f4..6eeb3e9635 100644 Binary files a/icons/obj/food_vr.dmi and b/icons/obj/food_vr.dmi differ diff --git a/icons/obj/gun.dmi b/icons/obj/gun.dmi index ddf2e1c64e..8c24848479 100644 Binary files a/icons/obj/gun.dmi and b/icons/obj/gun.dmi differ diff --git a/icons/obj/integrated_electronics/electronic_components.dmi b/icons/obj/integrated_electronics/electronic_components.dmi index 129491755e..b9b82061ca 100644 Binary files a/icons/obj/integrated_electronics/electronic_components.dmi and b/icons/obj/integrated_electronics/electronic_components.dmi differ diff --git a/icons/obj/loot_piles.dmi b/icons/obj/loot_piles.dmi index d4722d995c..3d83d6612e 100644 Binary files a/icons/obj/loot_piles.dmi and b/icons/obj/loot_piles.dmi differ diff --git a/icons/obj/machines/id_restorer_vr.dmi b/icons/obj/machines/id_restorer_vr.dmi new file mode 100644 index 0000000000..578d609e92 Binary files /dev/null and b/icons/obj/machines/id_restorer_vr.dmi differ diff --git a/icons/obj/mining.dmi b/icons/obj/mining.dmi index e67a3c5504..96c3014c42 100644 Binary files a/icons/obj/mining.dmi and b/icons/obj/mining.dmi differ diff --git a/icons/obj/monitors.dmi b/icons/obj/monitors.dmi index 940051fea1..268fa41af9 100644 Binary files a/icons/obj/monitors.dmi and b/icons/obj/monitors.dmi differ diff --git a/icons/obj/projectiles.dmi b/icons/obj/projectiles.dmi index efc1184dd5..1b753e9c87 100644 Binary files a/icons/obj/projectiles.dmi and b/icons/obj/projectiles.dmi differ diff --git a/icons/obj/projectiles_impact.dmi b/icons/obj/projectiles_impact.dmi new file mode 100644 index 0000000000..fd9d314310 Binary files /dev/null and b/icons/obj/projectiles_impact.dmi differ diff --git a/icons/obj/projectiles_muzzle.dmi b/icons/obj/projectiles_muzzle.dmi new file mode 100644 index 0000000000..d88b9a283e Binary files /dev/null and b/icons/obj/projectiles_muzzle.dmi differ diff --git a/icons/obj/projectiles_tracer.dmi b/icons/obj/projectiles_tracer.dmi new file mode 100644 index 0000000000..153794a929 Binary files /dev/null and b/icons/obj/projectiles_tracer.dmi differ diff --git a/icons/obj/railgun.dmi b/icons/obj/railgun.dmi index 404aa1ea60..6f633db1e5 100644 Binary files a/icons/obj/railgun.dmi and b/icons/obj/railgun.dmi differ diff --git a/icons/obj/rig_modules.dmi b/icons/obj/rig_modules.dmi index b7c3bc0e40..833baa61ca 100644 Binary files a/icons/obj/rig_modules.dmi and b/icons/obj/rig_modules.dmi differ diff --git a/icons/obj/stationobjs.dmi b/icons/obj/stationobjs.dmi index e83faea146..51c8493a3e 100644 Binary files a/icons/obj/stationobjs.dmi and b/icons/obj/stationobjs.dmi differ diff --git a/icons/obj/status_display.dmi b/icons/obj/status_display.dmi index ac7d53a685..842a379ddc 100644 Binary files a/icons/obj/status_display.dmi and b/icons/obj/status_display.dmi differ diff --git a/icons/obj/surgery.dmi b/icons/obj/surgery.dmi index c19111ab72..9fd6f77296 100644 Binary files a/icons/obj/surgery.dmi and b/icons/obj/surgery.dmi differ diff --git a/icons/obj/trash_vr.dmi b/icons/obj/trash_vr.dmi new file mode 100644 index 0000000000..6c9d7ea7d3 Binary files /dev/null and b/icons/obj/trash_vr.dmi differ diff --git a/icons/obj/turrets.dmi b/icons/obj/turrets.dmi index 775fe03b61..3b312a65db 100644 Binary files a/icons/obj/turrets.dmi and b/icons/obj/turrets.dmi differ diff --git a/icons/turf/areas.dmi b/icons/turf/areas.dmi old mode 100755 new mode 100644 index de00a11f60..1132fa10a9 Binary files a/icons/turf/areas.dmi and b/icons/turf/areas.dmi differ diff --git a/icons/turf/areas_vr.dmi b/icons/turf/areas_vr.dmi index 1270d2279b..d0bc8e7df7 100644 Binary files a/icons/turf/areas_vr.dmi and b/icons/turf/areas_vr.dmi differ diff --git a/icons/turf/flooring/decals_vr.dmi b/icons/turf/flooring/decals_vr.dmi index 55930a3b98..569ce05da6 100644 Binary files a/icons/turf/flooring/decals_vr.dmi and b/icons/turf/flooring/decals_vr.dmi differ diff --git a/icons/turf/outdoors.dmi b/icons/turf/outdoors.dmi index ec94c60efd..b8af78d986 100644 Binary files a/icons/turf/outdoors.dmi and b/icons/turf/outdoors.dmi differ diff --git a/icons/turf/space_vr.dmi b/icons/turf/space_vr.dmi new file mode 100644 index 0000000000..a00d0eca06 Binary files /dev/null and b/icons/turf/space_vr.dmi differ diff --git a/icons/turf/walls.dmi b/icons/turf/walls.dmi index 078d48fb96..1569985184 100644 Binary files a/icons/turf/walls.dmi and b/icons/turf/walls.dmi differ diff --git a/icons/vore/custom_items_vr.dmi b/icons/vore/custom_items_vr.dmi index 97578011b4..1402c72ccc 100644 Binary files a/icons/vore/custom_items_vr.dmi and b/icons/vore/custom_items_vr.dmi differ diff --git a/maps/RandomZLevels/Academy.dmm b/maps/RandomZLevels/Academy.dmm index 0e2df90f51..7e9c1cfa9d 100644 --- a/maps/RandomZLevels/Academy.dmm +++ b/maps/RandomZLevels/Academy.dmm @@ -2511,7 +2511,7 @@ }, /area/awaymission/academy/classrooms) "gF" = ( -/mob/living/simple_animal/hostile/bear, +/mob/living/simple_mob/hostile/bear, /turf/simulated/floor/plating, /area/awaymission/academy/classrooms) "gG" = ( @@ -2543,7 +2543,7 @@ /obj/machinery/light/small{ dir = 8 }, -/mob/living/simple_animal/hostile/bear, +/mob/living/simple_mob/hostile/bear, /turf/simulated/floor/plating, /area/awaymission/academy/classrooms) "gL" = ( diff --git a/maps/RandomZLevels/beach.dmm b/maps/RandomZLevels/beach.dmm index 6bbd377c50..3dd259a9c5 100644 --- a/maps/RandomZLevels/beach.dmm +++ b/maps/RandomZLevels/beach.dmm @@ -210,7 +210,7 @@ /turf/unsimulated/beach/sand, /area/awaymission/beach) "L" = ( -/mob/living/simple_animal/crab, +/mob/living/simple_mob/crab, /turf/unsimulated/beach/sand, /area/awaymission/beach) "M" = ( @@ -218,7 +218,7 @@ /turf/unsimulated/beach/sand, /area/awaymission/beach) "N" = ( -/mob/living/simple_animal/crab/Coffee, +/mob/living/simple_mob/crab/Coffee, /turf/unsimulated/beach/sand, /area/awaymission/beach) "O" = ( diff --git a/maps/RandomZLevels/carpfarm.dmm b/maps/RandomZLevels/carpfarm.dmm index ec7e6093b1..39b3b19b1c 100644 --- a/maps/RandomZLevels/carpfarm.dmm +++ b/maps/RandomZLevels/carpfarm.dmm @@ -18,11 +18,11 @@ /turf/space, /area/space) "ae" = ( -/mob/living/simple_animal/hostile/carp, +/mob/living/simple_mob/hostile/carp, /turf/space, /area/space) "af" = ( -/mob/living/simple_animal/hostile/carp/large, +/mob/living/simple_mob/hostile/carp/large, /turf/space, /area/space) "ag" = ( diff --git a/maps/RandomZLevels/challenge.dmm b/maps/RandomZLevels/challenge.dmm index 59d67ba636..3b083c956b 100644 --- a/maps/RandomZLevels/challenge.dmm +++ b/maps/RandomZLevels/challenge.dmm @@ -118,7 +118,7 @@ /area/awaymission/challenge/start) "ax" = ( /obj/effect/decal/cleanable/oil, -/mob/living/simple_animal/hostile/syndicate, +/mob/living/simple_mob/hostile/syndicate, /turf/simulated/floor/plating, /area/awaymission/challenge/start) "ay" = ( @@ -858,7 +858,7 @@ }, /area/awaymission/challenge/end) "ce" = ( -/mob/living/simple_animal/hostile/syndicate/ranged/space{ +/mob/living/simple_mob/hostile/syndicate/ranged/space{ name = "Syndicate Officer" }, /turf/simulated/floor{ @@ -883,7 +883,7 @@ /area/awaymission/challenge/end) "ch" = ( /obj/structure/stool/bed/chair/comfy/black, -/mob/living/simple_animal/hostile/syndicate{ +/mob/living/simple_mob/hostile/syndicate{ name = "Syndicate Commander" }, /turf/simulated/floor/carpet, @@ -904,7 +904,7 @@ /turf/simulated/floor/wood, /area/awaymission/challenge/end) "cl" = ( -/mob/living/simple_animal/hostile/syndicate/melee, +/mob/living/simple_mob/hostile/syndicate/melee, /turf/simulated/floor{ icon_state = "dark" }, @@ -961,7 +961,7 @@ /turf/simulated/floor/wood, /area/awaymission/challenge/end) "cu" = ( -/mob/living/simple_animal/hostile/syndicate/melee, +/mob/living/simple_mob/hostile/syndicate/melee, /turf/simulated/shuttle/floor{ icon_state = "floor4" }, @@ -1035,7 +1035,7 @@ /turf/simulated/floor/bluegrid, /area/awaymission/challenge/end) "cF" = ( -/mob/living/simple_animal/hostile/syndicate/ranged, +/mob/living/simple_mob/hostile/syndicate/ranged, /turf/simulated/floor{ icon_state = "dark" }, @@ -1381,7 +1381,7 @@ d2 = 4; icon_state = "1-4" }, -/mob/living/simple_animal/hostile/syndicate{ +/mob/living/simple_mob/hostile/syndicate{ name = "Syndicate Technician" }, /turf/simulated/floor{ diff --git a/maps/RandomZLevels/labyrinth.dm b/maps/RandomZLevels/labyrinth.dm index be24a024df..86d1f15214 100644 --- a/maps/RandomZLevels/labyrinth.dm +++ b/maps/RandomZLevels/labyrinth.dm @@ -202,7 +202,7 @@ corpsesuit = /obj/item/clothing/suit/cultrobes corpsehelmet = /obj/item/clothing/head/culthood -/mob/living/simple_animal/hostile/tunnelclown +/mob/living/simple_mob/hostile/tunnelclown name = "tunnel clown" desc = "A clown driven to madness in the depths of the Honk Mother's Catacombs." faction = "tunnelclown" @@ -244,7 +244,7 @@ cold_damage_per_tick = 10 unsuitable_atoms_damage = 10 -/mob/living/simple_animal/hostile/tunnelclown/sentinel +/mob/living/simple_mob/hostile/tunnelclown/sentinel name = "tunnel clown sentinel" desc = "A clown warrior tasked with guarding the Honk Mother's Catacombs." faction = "tunnelclown" @@ -259,7 +259,7 @@ melee_damage_lower = 15 melee_damage_upper = 20 -/mob/living/simple_animal/hostile/tunnelclown/death() +/mob/living/simple_mob/hostile/tunnelclown/death() ..() if(corpse) new corpse (src.loc) @@ -268,7 +268,7 @@ del src return -/mob/living/simple_animal/hostile/cluwne +/mob/living/simple_mob/hostile/cluwne name = "cluwne" desc = "A mutated clown alleged to have been cursed by the Honk Mother and permanently banished to these catacombs for once being an unfunny shitter who brought grief instead of laughter." faction = "tunnelclown" @@ -316,9 +316,9 @@ icon_state = "clown" spawn_nothing_percentage = 50 item_to_spawn() - return pick(prob(3);/mob/living/simple_animal/hostile/cluwne, - prob(2);/mob/living/simple_animal/hostile/tunnelclown/sentinel, - prob(1);/mob/living/simple_animal/hostile/tunnelclown) + return pick(prob(3);/mob/living/simple_mob/hostile/cluwne, + prob(2);/mob/living/simple_mob/hostile/tunnelclown/sentinel, + prob(1);/mob/living/simple_mob/hostile/tunnelclown) /obj/item/weapon/paper/awaygate/labyrinth/calypso name = "copy of the Final Flight of Calypso" diff --git a/maps/RandomZLevels/listeningpost.dmm b/maps/RandomZLevels/listeningpost.dmm index 6f1d0274ec..91d2a6bccc 100644 --- a/maps/RandomZLevels/listeningpost.dmm +++ b/maps/RandomZLevels/listeningpost.dmm @@ -62,7 +62,7 @@ /obj/structure/stool/bed/chair{ dir = 4 }, -/mob/living/simple_animal/hostile/syndicate{ +/mob/living/simple_mob/hostile/syndicate{ desc = "A weary looking syndicate operative."; faction = "syndicate" }, diff --git a/maps/RandomZLevels/snowfield.dm b/maps/RandomZLevels/snowfield.dm index 709253fd93..e0a4c7c897 100644 --- a/maps/RandomZLevels/snowfield.dm +++ b/maps/RandomZLevels/snowfield.dm @@ -17,9 +17,10 @@ power_environ = 0 mobcountmax = 100 floracountmax = 7000 - valid_mobs = list(/mob/living/simple_animal/hostile/samak/polar, /mob/living/simple_animal/hostile/diyaab/polar, - /mob/living/simple_animal/hostile/shantak/polar, /mob/living/simple_animal/hostile/bear/polar, - /mob/living/simple_animal/hostile/wolf) + /* + valid_mobs = list(/mob/living/simple_mob/hostile/samak/polar, /mob/living/simple_mob/hostile/diyaab/polar, + /mob/living/simple_mob/hostile/shantak/polar, /mob/living/simple_mob/hostile/bear/polar, + /mob/living/simple_mob/hostile/wolf)*/ //VORESTATION AI TEMPORARY REMOVAL valid_flora = list(/obj/structure/flora/tree/pine, /obj/structure/flora/tree/pine, /obj/structure/flora/tree/pine, /obj/structure/flora/tree/dead, /obj/structure/flora/grass/brown, /obj/structure/flora/grass/green, /obj/structure/flora/grass/both, /obj/structure/flora/bush, /obj/structure/flora/ausbushes/grassybush, @@ -43,7 +44,7 @@ // -- Mobs -- // -/mob/living/simple_animal/hostile/bear/polar // More aggressive than normal bears so none of that fancy life() stuff. +/mob/living/simple_mob/hostile/bear/polar // More aggressive than normal bears so none of that fancy life() stuff. name = "polar bear" desc = "The real question is, why are you examining it, instead of running away?" icon = 'icons/mob/vore.dmi' @@ -53,13 +54,14 @@ icon_gib = "bear-gib" vore_icons = SA_ICON_LIVING vore_active = 1 + say_list_type = /datum/say_list/polar_bear faction = "polar" maxHealth = 80 health = 80 // Polar bear will fuck you up. - stop_when_pulled = 0 - turns_per_move = 5 + //stop_when_pulled = 0 //VORESTATION AI TEMPORARY REMOVAL + //turns_per_move = 5 //VORESTATION AI TEMPORARY REMOVAL see_in_dark = 6 response_help = "pets" @@ -71,26 +73,26 @@ minbodytemp = 0 - speak_chance = 1 + //speak_chance = 1 //VORESTATION AI TEMPORARY REMOVAL + meat_type = /obj/item/weapon/reagent_containers/food/snacks/bearmeat +/datum/say_list/polar_bear speak = list("RAWR!","Rawr!","GRR!","Growl!") - speak_emote = list("growls", "roars") emote_hear = list("rawrs","grumbles","grawls") emote_see = list("stares ferociously", "stomps") - meat_type = /obj/item/weapon/reagent_containers/food/snacks/bearmeat -/mob/living/simple_animal/hostile/bear/polar/death() +/mob/living/simple_mob/hostile/bear/polar/death() desc = "This bastard sure isn't drinking Space Cola anymore." ..() -/mob/living/simple_animal/hostile/samak/polar +/mob/living/simple_mob/hostile/samak/polar faction = "polar" -/mob/living/simple_animal/hostile/diyaab/polar +/mob/living/simple_mob/hostile/diyaab/polar faction = "polar" -/mob/living/simple_animal/hostile/shantak/polar +/mob/living/simple_mob/hostile/shantak/polar faction = "polar" // -- Items -- // diff --git a/maps/RandomZLevels/snowfield.dmm b/maps/RandomZLevels/snowfield.dmm index 2ed1c84193..01fbbeebf6 100644 --- a/maps/RandomZLevels/snowfield.dmm +++ b/maps/RandomZLevels/snowfield.dmm @@ -1373,7 +1373,7 @@ "dT" = ( /obj/effect/floor_decal/industrial/outline/yellow, /obj/effect/decal/remains/human, -/mob/living/simple_animal/hostile/mimic/crate, +/mob/living/simple_mob/hostile/mimic/crate, /turf/simulated/floor/tiled/neutral, /area/awaymission/snowfield/base) "dU" = ( @@ -1442,11 +1442,11 @@ icon_state = "tube1"; pixel_y = 0 }, -/mob/living/simple_animal/hostile/viscerator, +/mob/living/simple_mob/hostile/viscerator, /turf/simulated/floor/tiled/dark, /area/awaymission/snowfield/base) "ee" = ( -/mob/living/simple_animal/hostile/viscerator, +/mob/living/simple_mob/hostile/viscerator, /turf/simulated/floor/tiled/dark, /area/awaymission/snowfield/base) "ef" = ( @@ -1454,7 +1454,7 @@ dir = 4; icon_state = "tube1" }, -/mob/living/simple_animal/hostile/viscerator, +/mob/living/simple_mob/hostile/viscerator, /turf/simulated/floor/tiled/dark, /area/awaymission/snowfield/base) "eg" = ( diff --git a/maps/RandomZLevels/spacebattle.dmm b/maps/RandomZLevels/spacebattle.dmm index f41ee5ab07..9205dda8d5 100644 --- a/maps/RandomZLevels/spacebattle.dmm +++ b/maps/RandomZLevels/spacebattle.dmm @@ -65,7 +65,7 @@ }, /area/awaymission/spacebattle/syndicate2) "al" = ( -/mob/living/simple_animal/hostile/syndicate/ranged, +/mob/living/simple_mob/hostile/syndicate/ranged, /turf/simulated/shuttle/floor{ icon_state = "floor4" }, @@ -99,7 +99,7 @@ }, /area/awaymission/spacebattle/syndicate2) "aq" = ( -/mob/living/simple_animal/hostile/syndicate/melee, +/mob/living/simple_mob/hostile/syndicate/melee, /turf/simulated/shuttle/floor{ icon_state = "floor4" }, @@ -213,7 +213,7 @@ /area/awaymission/spacebattle/syndicate2) "aH" = ( /obj/structure/stool/bed/chair, -/mob/living/simple_animal/hostile/syndicate, +/mob/living/simple_mob/hostile/syndicate, /turf/simulated/shuttle/floor{ icon_state = "floor4" }, @@ -492,7 +492,7 @@ /area/awaymission/spacebattle/syndicate3) "bu" = ( /obj/structure/stool/bed/chair, -/mob/living/simple_animal/hostile/syndicate, +/mob/living/simple_mob/hostile/syndicate, /turf/simulated/shuttle/floor{ icon_state = "floor4" }, @@ -558,7 +558,7 @@ /area/awaymission/spacebattle/syndicate1) "bD" = ( /obj/structure/stool/bed/chair, -/mob/living/simple_animal/hostile/syndicate, +/mob/living/simple_mob/hostile/syndicate, /turf/simulated/shuttle/floor{ icon_state = "floor4" }, @@ -804,7 +804,7 @@ }, /area/awaymission/spacebattle/cruiser) "cm" = ( -/mob/living/simple_animal/hostile/syndicate/melee/space, +/mob/living/simple_mob/hostile/syndicate/melee/space, /turf/simulated/floor, /area/awaymission/spacebattle/cruiser) "cn" = ( @@ -1044,7 +1044,7 @@ }, /area/awaymission/spacebattle/cruiser) "cZ" = ( -/mob/living/simple_animal/hostile/syndicate/melee, +/mob/living/simple_mob/hostile/syndicate/melee, /turf/simulated/floor, /area/awaymission/spacebattle/cruiser) "da" = ( @@ -1069,7 +1069,7 @@ }, /area/awaymission/spacebattle/cruiser) "dd" = ( -/mob/living/simple_animal/hostile/syndicate/ranged/space, +/mob/living/simple_mob/hostile/syndicate/ranged/space, /turf/simulated/floor, /area/awaymission/spacebattle/cruiser) "de" = ( @@ -1475,7 +1475,7 @@ /turf/simulated/floor/plating, /area/awaymission/spacebattle/cruiser) "ek" = ( -/mob/living/simple_animal/hostile/syndicate/melee, +/mob/living/simple_mob/hostile/syndicate/melee, /turf/simulated/floor{ icon_state = "bar" }, @@ -1570,7 +1570,7 @@ /turf/simulated/floor/plating, /area/awaymission/spacebattle/cruiser) "ez" = ( -/mob/living/simple_animal/hostile/syndicate/ranged/space, +/mob/living/simple_mob/hostile/syndicate/ranged/space, /turf/simulated/floor{ icon_state = "bar" }, @@ -1640,7 +1640,7 @@ /turf/simulated/floor/plating, /area/awaymission/spacebattle/cruiser) "eJ" = ( -/mob/living/simple_animal/hostile/syndicate/melee/space, +/mob/living/simple_mob/hostile/syndicate/melee/space, /turf/simulated/floor/plating/airless, /area/awaymission/spacebattle/cruiser) "eK" = ( @@ -1725,7 +1725,7 @@ /obj/structure/stool/bed/chair{ dir = 1 }, -/mob/living/simple_animal/hostile/syndicate, +/mob/living/simple_mob/hostile/syndicate, /turf/simulated/shuttle/floor{ icon_state = "floor4" }, @@ -1822,7 +1822,7 @@ /turf/simulated/floor, /area/awaymission/spacebattle/cruiser) "fm" = ( -/mob/living/simple_animal/hostile/syndicate/ranged, +/mob/living/simple_mob/hostile/syndicate/ranged, /turf/simulated/floor{ icon_state = "blue"; dir = 8 @@ -2344,7 +2344,7 @@ /turf/simulated/floor/wood, /area/awaymission/spacebattle/cruiser) "gO" = ( -/mob/living/simple_animal/hostile/syndicate/melee/space, +/mob/living/simple_mob/hostile/syndicate/melee/space, /turf/simulated/floor/wood, /area/awaymission/spacebattle/cruiser) "gP" = ( @@ -2620,7 +2620,7 @@ /area/awaymission/spacebattle/syndicate7) "hB" = ( /obj/structure/largecrate, -/mob/living/simple_animal/corgi/puppy, +/mob/living/simple_mob/corgi/puppy, /turf/simulated/floor/plating, /area/awaymission/spacebattle/cruiser) "hC" = ( @@ -2646,7 +2646,7 @@ }, /area/awaymission/spacebattle/cruiser) "hG" = ( -/mob/living/simple_animal/hostile/syndicate/melee, +/mob/living/simple_mob/hostile/syndicate/melee, /turf/simulated/floor{ icon_state = "white" }, @@ -2762,7 +2762,7 @@ /obj/structure/stool/bed/chair{ dir = 8 }, -/mob/living/simple_animal/hostile/syndicate, +/mob/living/simple_mob/hostile/syndicate, /turf/simulated/shuttle/floor{ icon_state = "floor4" }, @@ -2861,7 +2861,7 @@ }, /area/awaymission/spacebattle/cruiser) "il" = ( -/mob/living/simple_animal/hostile/syndicate/ranged/space, +/mob/living/simple_mob/hostile/syndicate/ranged/space, /turf/simulated/floor{ icon_state = "freezerfloor" }, @@ -2954,7 +2954,7 @@ /turf/simulated/floor, /area/awaymission/spacebattle/cruiser) "ix" = ( -/mob/living/simple_animal/hostile/syndicate/ranged, +/mob/living/simple_mob/hostile/syndicate/ranged, /turf/simulated/floor, /area/awaymission/spacebattle/cruiser) "iy" = ( @@ -3093,7 +3093,7 @@ /obj/structure/stool/bed/chair{ dir = 1 }, -/mob/living/simple_animal/hostile/syndicate, +/mob/living/simple_mob/hostile/syndicate, /turf/simulated/shuttle/floor{ icon_state = "floor4" }, @@ -3179,7 +3179,7 @@ /obj/structure/stool/bed/chair{ dir = 1 }, -/mob/living/simple_animal/hostile/syndicate, +/mob/living/simple_mob/hostile/syndicate, /turf/simulated/shuttle/floor{ icon_state = "floor4" }, diff --git a/maps/RandomZLevels/stationCollision.dmm b/maps/RandomZLevels/stationCollision.dmm index 894fa18a0d..09a00494a2 100644 --- a/maps/RandomZLevels/stationCollision.dmm +++ b/maps/RandomZLevels/stationCollision.dmm @@ -549,7 +549,7 @@ }, /area/awaymission/research) "bS" = ( -/mob/living/simple_animal/lizard, +/mob/living/simple_mob/lizard, /turf/simulated/floor/grass, /area/awaymission/research) "bT" = ( @@ -625,7 +625,7 @@ }, /area/awaymission/research) "ce" = ( -/mob/living/simple_animal/hostile/creature{ +/mob/living/simple_mob/hostile/creature{ name = "Experiment 35b" }, /turf/simulated/floor, @@ -709,7 +709,7 @@ dir = 8 }, /obj/structure/window/reinforced, -/mob/living/simple_animal/hostile/hivebot{ +/mob/living/simple_mob/hostile/hivebot{ opensdoors = 0 }, /turf/simulated/floor{ diff --git a/maps/RandomZLevels/wildwest.dm b/maps/RandomZLevels/wildwest.dm index 70914f043f..6464339edb 100644 --- a/maps/RandomZLevels/wildwest.dm +++ b/maps/RandomZLevels/wildwest.dm @@ -90,7 +90,7 @@ if("Peace") user << "Whatever alien sentience that the Wish Granter possesses is satisfied with your wish. There is a distant wailing as the last of the Faithless begin to die, then silence." user << "You feel as if you just narrowly avoided a terrible fate..." - for(var/mob/living/simple_animal/hostile/faithless/F in living_mob_list) + for(var/mob/living/simple_mob/faithless/F in living_mob_list) F.health = -10 F.stat = 2 F.icon_state = "faithless_dead" @@ -170,4 +170,4 @@ C << "You have regenerated." C.visible_message("[usr] appears to wake from the dead, having healed all wounds.") C.update_canmove() - return 1 + return 1 \ No newline at end of file diff --git a/maps/RandomZLevels/wildwest.dmm b/maps/RandomZLevels/wildwest.dmm index 024051a498..3694ee793b 100644 --- a/maps/RandomZLevels/wildwest.dmm +++ b/maps/RandomZLevels/wildwest.dmm @@ -18,7 +18,7 @@ }, /area/awaymission/wwvault) "af" = ( -/mob/living/simple_animal/hostile/faithless, +/mob/living/simple_mob/hostile/faithless, /turf/simulated/floor/engine/cult, /area/awaymission/wwvault) "ag" = ( @@ -52,7 +52,7 @@ /turf/simulated/floor/engine/cult, /area/awaymission/wwvault) "am" = ( -/mob/living/simple_animal/hostile/faithless, +/mob/living/simple_mob/hostile/faithless, /turf/simulated/shuttle/plating{ icon_state = "bcircuitoff" }, @@ -173,7 +173,7 @@ /turf/simulated/floor/carpet, /area/awaymission/wwvault) "aE" = ( -/mob/living/simple_animal/hostile/faithless, +/mob/living/simple_mob/hostile/faithless, /turf/simulated/floor/carpet, /area/awaymission/wwvault) "aF" = ( @@ -323,7 +323,7 @@ }, /area/awaymission/wwmines) "bf" = ( -/mob/living/simple_animal/hostile/syndicate/ranged, +/mob/living/simple_mob/hostile/syndicate/ranged, /turf/simulated/floor/plating/ironsand{ icon_state = "ironsand1" }, @@ -360,7 +360,7 @@ /turf/simulated/floor/wood, /area/awaymission/wwmines) "bn" = ( -/mob/living/simple_animal/hostile/syndicate/ranged, +/mob/living/simple_mob/hostile/syndicate/ranged, /turf/simulated/floor/plating, /area/awaymission/wwrefine) "bo" = ( @@ -419,7 +419,7 @@ }, /area/awaymission/wwmines) "bz" = ( -/mob/living/simple_animal/hostile/syndicate/ranged, +/mob/living/simple_mob/hostile/syndicate/ranged, /turf/simulated/floor{ icon_state = "cafeteria"; dir = 5 @@ -447,7 +447,7 @@ /turf/simulated/floor/wood, /area/awaymission/wwmines) "bE" = ( -/mob/living/simple_animal/hostile/syndicate/ranged, +/mob/living/simple_mob/hostile/syndicate/ranged, /turf/simulated/floor/wood, /area/awaymission/wwmines) "bF" = ( @@ -832,7 +832,7 @@ /turf/simulated/floor/wood, /area/awaymission/wwgov) "cG" = ( -/mob/living/simple_animal/hostile/creature, +/mob/living/simple_mob/hostile/creature, /turf/simulated/floor{ icon_state = "stage_bleft" }, @@ -871,7 +871,7 @@ /turf/simulated/floor/wood, /area/awaymission/wwgov) "cN" = ( -/mob/living/simple_animal/hostile/creature, +/mob/living/simple_mob/hostile/creature, /turf/simulated/floor/wood, /area/awaymission/wwgov) "cO" = ( @@ -881,7 +881,7 @@ /turf/simulated/floor/wood, /area/awaymission/wwgov) "cP" = ( -/mob/living/simple_animal/hostile/creature, +/mob/living/simple_mob/hostile/creature, /turf/simulated/floor/carpet, /area/awaymission/wwgov) "cQ" = ( @@ -926,7 +926,7 @@ /area/awaymission/wwgov) "cT" = ( /obj/effect/decal/remains/human, -/mob/living/simple_animal/hostile/syndicate/ranged/space{ +/mob/living/simple_mob/hostile/syndicate/ranged/space{ name = "Syndicate Commander" }, /turf/simulated/floor/plating, @@ -1158,7 +1158,7 @@ /area/awaymission/wwgov) "dB" = ( /obj/structure/toilet, -/mob/living/simple_animal/hostile/creature, +/mob/living/simple_mob/hostile/creature, /turf/simulated/floor{ icon_state = "white" }, @@ -1482,7 +1482,7 @@ }, /area/awaymission/wwmines) "ew" = ( -/mob/living/simple_animal/hostile/syndicate/ranged, +/mob/living/simple_mob/hostile/syndicate/ranged, /turf/simulated/floor/carpet, /area/awaymission/wwmines) "ex" = ( @@ -1990,7 +1990,7 @@ /turf/space, /area) "fO" = ( -/mob/living/simple_animal/hostile/syndicate, +/mob/living/simple_mob/hostile/syndicate, /turf/simulated/floor, /area/awaymission/wwrefine) "fP" = ( @@ -2126,7 +2126,7 @@ /turf/simulated/floor/wood, /area/awaymission/wwmines) "gk" = ( -/mob/living/simple_animal/hostile/syndicate, +/mob/living/simple_mob/hostile/syndicate, /turf/simulated/floor/wood, /area/awaymission/wwmines) "gl" = ( @@ -2138,7 +2138,7 @@ /turf/simulated/floor/wood, /area/awaymission/wwmines) "gn" = ( -/mob/living/simple_animal/hostile/creature, +/mob/living/simple_mob/hostile/creature, /turf/simulated/floor/grass, /area/awaymission/wwgov) "go" = ( diff --git a/maps/RandomZLevels/zoo.dmm b/maps/RandomZLevels/zoo.dmm index 77724e7e1d..37346a6f16 100644 --- a/maps/RandomZLevels/zoo.dmm +++ b/maps/RandomZLevels/zoo.dmm @@ -138,7 +138,7 @@ "cH" = (/obj/machinery/light{dir = 4; icon_state = "tube1"},/turf/simulated/shuttle/floor/black,/area/awaymission/zoo/tradeship) "cI" = (/obj/structure/table/reinforced,/obj/item/weapon/paper/zoo/pirate/volk,/turf/simulated/floor/carpet,/area/awaymission/zoo/pirateship) "cJ" = (/obj/structure/table/reinforced,/obj/item/weapon/reagent_containers/food/drinks/bottle/small/beer,/turf/simulated/floor/carpet,/area/awaymission/zoo/pirateship) -"cK" = (/mob/living/simple_animal/hostile/pirate,/turf/simulated/floor/carpet,/area/awaymission/zoo/pirateship) +"cK" = (/mob/living/simple_mob/hostile/pirate,/turf/simulated/floor/carpet,/area/awaymission/zoo/pirateship) "cL" = (/obj/machinery/portable_atmospherics/hydroponics,/obj/effect/floor_decal/corner/green/full,/turf/simulated/floor/tiled,/area/awaymission/zoo/pirateship) "cM" = (/obj/effect/floor_decal/corner/green{dir = 10},/turf/simulated/floor/tiled,/area/awaymission/zoo/pirateship) "cN" = (/obj/machinery/seed_extractor,/obj/item/seeds/angelmycelium,/obj/effect/floor_decal/corner/green{dir = 10},/turf/simulated/floor/tiled,/area/awaymission/zoo/pirateship) @@ -189,7 +189,7 @@ "dG" = (/obj/structure/window/reinforced{dir = 1},/turf/simulated/floor/plating,/area/awaymission/zoo/pirateship) "dH" = (/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 1},/obj/item/weapon/reagent_containers/food/snacks/xenomeat,/turf/simulated/floor/plating,/area/awaymission/zoo/pirateship) "dI" = (/obj/structure/table/rack,/obj/item/weapon/storage/box/lights,/obj/effect/floor_decal/industrial/warning{dir = 8},/turf/simulated/floor/tiled,/area/awaymission/zoo/pirateship) -"dJ" = (/mob/living/simple_animal/hostile/pirate,/turf/simulated/floor/tiled,/area/awaymission/zoo/pirateship) +"dJ" = (/mob/living/simple_mob/hostile/pirate,/turf/simulated/floor/tiled,/area/awaymission/zoo/pirateship) "dK" = (/obj/machinery/power/fractal_reactor/fluff/converter{mapped_in = 1; power_generation_rate = 10000},/turf/simulated/floor/plating,/area/awaymission/zoo/pirateship) "dL" = (/obj/machinery/power/terminal{dir = 8},/turf/simulated/floor/plating,/area/awaymission/zoo/pirateship) "dM" = (/turf/space,/area/awaymission/zoo/tradeship) @@ -231,9 +231,9 @@ "ew" = (/obj/structure/curtain/open/shower,/obj/machinery/shower{pixel_y = 3},/turf/simulated/shuttle/floor/black,/area/awaymission/zoo/tradeship) "ex" = (/obj/machinery/vending/snack{name = "hacked Getmore Chocolate Corp"; prices = list()},/turf/simulated/shuttle/floor/black,/area/awaymission/zoo/tradeship) "ey" = (/obj/structure/window/reinforced,/obj/structure/grille,/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 8},/turf/simulated/shuttle/floor/black,/area/awaymission/zoo/tradeship) -"ez" = (/obj/effect/floor_decal/corner/red/diagonal,/mob/living/simple_animal/hostile/pirate,/turf/simulated/floor/tiled,/area/awaymission/zoo/pirateship) +"ez" = (/obj/effect/floor_decal/corner/red/diagonal,/mob/living/simple_mob/hostile/pirate,/turf/simulated/floor/tiled,/area/awaymission/zoo/pirateship) "eA" = (/obj/effect/decal/cleanable/dirt,/obj/machinery/light/small{dir = 8},/turf/simulated/floor/plating,/area/awaymission/zoo/pirateship) -"eB" = (/mob/living/simple_animal/hostile/alien{faction = "pirate"},/turf/simulated/floor/plating,/area/awaymission/zoo/pirateship) +"eB" = (/mob/living/simple_mob/hostile/alien{faction = "pirate"},/turf/simulated/floor/plating,/area/awaymission/zoo/pirateship) "eC" = (/obj/machinery/door/window{base_state = "right"; dir = 4; icon_state = "right"},/obj/item/weapon/reagent_containers/food/snacks/xenomeat,/turf/simulated/floor/plating,/area/awaymission/zoo/pirateship) "eD" = (/obj/structure/window/reinforced{dir = 8},/turf/simulated/floor/plating,/area/awaymission/zoo/pirateship) "eE" = (/obj/item/weapon/reagent_containers/food/snacks/xenomeat,/turf/simulated/floor/plating,/area/awaymission/zoo/pirateship) @@ -415,7 +415,7 @@ "hY" = (/obj/structure/grille,/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 8},/turf/simulated/shuttle/plating,/area/awaymission/zoo/syndieship) "hZ" = (/obj/machinery/vending/cigarette{name = "hacked cigarette machine"; prices = list(); products = list(/obj/item/weapon/storage/fancy/cigarettes = 10, /obj/item/weapon/storage/box/matches = 10, /obj/item/weapon/flame/lighter/zippo = 4, /obj/item/clothing/mask/smokable/cigarette/cigar/havana = 2)},/turf/simulated/shuttle/floor/darkred,/area/awaymission/zoo/syndieship) "ia" = (/obj/structure/bed/chair{dir = 8},/obj/machinery/button/flasher{id = "syndieflash"; name = "Flasher"; pixel_x = 27; pixel_y = 0;},/turf/simulated/shuttle/floor/darkred,/area/awaymission/zoo/syndieship) -"ib" = (/mob/living/simple_animal/cat/kitten{name = "Enola"},/turf/simulated/shuttle/floor/darkred,/area/awaymission/zoo/syndieship) +"ib" = (/mob/living/simple_mob/cat/kitten{name = "Enola"},/turf/simulated/shuttle/floor/darkred,/area/awaymission/zoo/syndieship) "ic" = (/obj/machinery/suit_cycler/syndicate{locked = 0},/turf/simulated/shuttle/floor/darkred,/area/awaymission/zoo/syndieship) "id" = (/obj/structure/table/standard,/obj/item/weapon/material/kitchen/utensil/knife{pixel_x = -6},/obj/item/weapon/reagent_containers/syringe/drugs{pixel_x = 3; pixel_y = -1},/obj/item/weapon/reagent_containers/syringe/drugs{pixel_x = 3; pixel_y = 4},/obj/item/weapon/reagent_containers/syringe/drugs{pixel_x = 3; pixel_y = 9},/obj/machinery/light{dir = 8; icon_state = "tube1"; pixel_y = 0},/turf/simulated/shuttle/floor/darkred,/area/awaymission/zoo/syndieship) "ie" = (/obj/machinery/door/window/eastleft,/turf/simulated/shuttle/floor/darkred,/area/awaymission/zoo/syndieship) @@ -424,7 +424,7 @@ "ih" = (/obj/structure/bed/chair{dir = 1},/turf/simulated/floor/tiled,/area/awaymission/zoo) "ii" = (/obj/structure/closet{name = "custodial"},/obj/item/weapon/reagent_containers/glass/bucket,/obj/item/weapon/mop,/obj/item/weapon/reagent_containers/spray/cleaner,/turf/simulated/shuttle/floor/darkred,/area/awaymission/zoo/syndieship) "ij" = (/obj/machinery/door/window/eastright,/turf/simulated/shuttle/floor/darkred,/area/awaymission/zoo/syndieship) -"ik" = (/mob/living/simple_animal/hostile/syndicate/ranged{desc = "He doesn't seem like he's looking for a fight."; faction = "neutral"; friendly = "hugs"; name = "Mercenary"},/turf/simulated/shuttle/floor/darkred,/area/awaymission/zoo/syndieship) +"ik" = (/mob/living/simple_mob/hostile/syndicate/ranged{desc = "He doesn't seem like he's looking for a fight."; faction = "neutral"; friendly = "hugs"; name = "Mercenary"},/turf/simulated/shuttle/floor/darkred,/area/awaymission/zoo/syndieship) "il" = (/obj/machinery/door/window/westleft,/turf/simulated/shuttle/floor/darkred,/area/awaymission/zoo/syndieship) "im" = (/obj/machinery/light{dir = 8; icon_state = "tube1"; pixel_y = 0},/obj/machinery/sleeper{dir = 8},/turf/simulated/shuttle/floor/darkred,/area/awaymission/zoo/syndieship) "in" = (/obj/machinery/sleep_console,/turf/simulated/shuttle/floor/darkred,/area/awaymission/zoo/syndieship) @@ -511,9 +511,9 @@ "jQ" = (/obj/structure/window/reinforced{dir = 8},/obj/structure/grille,/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 1},/turf/simulated/floor/plating,/area/awaymission/zoo) "jR" = (/obj/structure/grille,/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 1},/turf/simulated/floor/plating,/area/awaymission/zoo) "jS" = (/obj/structure/window/reinforced{dir = 4},/obj/structure/grille,/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 1},/turf/simulated/floor/plating,/area/awaymission/zoo) -"jT" = (/mob/living/simple_animal/chicken{faction = "zoo"},/turf/simulated/floor/holofloor/beach/sand{icon_state = "dgrass0"},/area/awaymission/zoo) -"jU" = (/mob/living/simple_animal/chick,/turf/simulated/floor/holofloor/beach/sand{icon_state = "dgrass0"},/area/awaymission/zoo) -"jV" = (/mob/living/simple_animal/corgi/puppy{faction = "zoo"},/turf/simulated/floor/holofloor/beach/sand{icon_state = "dgrass0"},/area/awaymission/zoo) +"jT" = (/mob/living/simple_mob/chicken{faction = "zoo"},/turf/simulated/floor/holofloor/beach/sand{icon_state = "dgrass0"},/area/awaymission/zoo) +"jU" = (/mob/living/simple_mob/chick,/turf/simulated/floor/holofloor/beach/sand{icon_state = "dgrass0"},/area/awaymission/zoo) +"jV" = (/mob/living/simple_mob/corgi/puppy{faction = "zoo"},/turf/simulated/floor/holofloor/beach/sand{icon_state = "dgrass0"},/area/awaymission/zoo) "jW" = (/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 4},/obj/structure/flora/ausbushes/reedbush,/turf/simulated/floor/beach/water,/area/awaymission/zoo) "jX" = (/obj/effect/floor_decal/corner/green{dir = 10},/turf/simulated/floor/tiled,/area/awaymission/zoo) "jY" = (/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced,/turf/simulated/floor/beach/water,/area/awaymission/zoo) @@ -551,10 +551,10 @@ "kE" = (/turf/simulated/floor/holofloor/grass,/area/awaymission/zoo) "kF" = (/obj/structure/flora/ausbushes/leafybush,/turf/simulated/floor/holofloor/grass,/area/awaymission/zoo) "kG" = (/obj/structure/flora/ausbushes/ywflowers,/turf/simulated/floor/holofloor/grass,/area/awaymission/zoo) -"kH" = (/obj/structure/flora/ausbushes/ywflowers,/mob/living/simple_animal/bird/kea{faction = "zoo"},/turf/simulated/floor/holofloor/grass,/area/awaymission/zoo) +"kH" = (/obj/structure/flora/ausbushes/ywflowers,/mob/living/simple_mob/bird/kea{faction = "zoo"},/turf/simulated/floor/holofloor/grass,/area/awaymission/zoo) "kI" = (/obj/structure/flora/ausbushes/pointybush,/turf/simulated/floor/holofloor/grass,/area/awaymission/zoo) "kJ" = (/obj/structure/flora/ausbushes/brflowers,/turf/simulated/floor/holofloor/grass,/area/awaymission/zoo) -"kK" = (/obj/structure/flora/ausbushes/pointybush,/mob/living/simple_animal/bird/pink_too{faction = "zoo"},/turf/simulated/floor/holofloor/grass,/area/awaymission/zoo) +"kK" = (/obj/structure/flora/ausbushes/pointybush,/mob/living/simple_mob/bird/pink_too{faction = "zoo"},/turf/simulated/floor/holofloor/grass,/area/awaymission/zoo) "kL" = (/obj/structure/flora/ausbushes/sparsegrass,/turf/simulated/floor/holofloor/grass,/area/awaymission/zoo) "kM" = (/obj/structure/flora/ausbushes/ppflowers,/turf/simulated/floor/holofloor/grass,/area/awaymission/zoo) "kN" = (/obj/structure/urinal{pixel_x = -32},/turf/simulated/floor/tiled/white,/area/awaymission/zoo) @@ -565,7 +565,7 @@ "kS" = (/obj/structure/toilet{dir = 8},/turf/simulated/floor/tiled/white,/area/awaymission/zoo) "kT" = (/obj/structure/bed/chair/wood{dir = 1},/turf/simulated/floor/wood,/area/awaymission/zoo) "kU" = (/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 8},/obj/structure/grille,/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 1},/turf/simulated/floor/plating,/area/awaymission/zoo) -"kV" = (/mob/living/simple_animal/cat{faction = "zoo"},/turf/simulated/floor/wood,/area/awaymission/zoo) +"kV" = (/mob/living/simple_mob/cat{faction = "zoo"},/turf/simulated/floor/wood,/area/awaymission/zoo) "kW" = (/turf/simulated/floor/holofloor/carpet,/area/awaymission/zoo) "kX" = (/obj/structure/table/marble,/turf/simulated/floor/holofloor/lino,/area/awaymission/zoo) "kY" = (/obj/structure/table/marble,/obj/item/weapon/pen/multi,/turf/simulated/floor/holofloor/lino,/area/awaymission/zoo) @@ -574,15 +574,15 @@ "lb" = (/obj/effect/floor_decal/spline/fancy/wood{dir = 5},/obj/item/weapon/coin/gold,/turf/simulated/floor/beach/water{icon_state = "seadeep"},/area/awaymission/zoo) "lc" = (/obj/effect/floor_decal/corner/green{dir = 9},/turf/simulated/floor/tiled,/area/awaymission/zoo) "ld" = (/obj/structure/flora/ausbushes/sunnybush,/turf/simulated/floor/holofloor/grass,/area/awaymission/zoo) -"le" = (/mob/living/simple_animal/bird/hooded_too{faction = "zoo"},/turf/simulated/floor/holofloor/grass,/area/awaymission/zoo) +"le" = (/mob/living/simple_mob/bird/hooded_too{faction = "zoo"},/turf/simulated/floor/holofloor/grass,/area/awaymission/zoo) "lf" = (/obj/structure/flora/ausbushes/grassybush,/turf/simulated/floor/holofloor/grass,/area/awaymission/zoo) -"lg" = (/obj/structure/flora/ausbushes/fullgrass,/mob/living/simple_animal/bird/grey_cockatiel{faction = "zoo"},/turf/simulated/floor/holofloor/grass,/area/awaymission/zoo) +"lg" = (/obj/structure/flora/ausbushes/fullgrass,/mob/living/simple_mob/bird/grey_cockatiel{faction = "zoo"},/turf/simulated/floor/holofloor/grass,/area/awaymission/zoo) "lh" = (/obj/structure/flora/ausbushes,/turf/simulated/floor/holofloor/grass,/area/awaymission/zoo) -"li" = (/obj/structure/flora/ausbushes/brflowers,/mob/living/simple_animal/bird/yellowish_cockatiel{faction = "zoo"},/turf/simulated/floor/holofloor/grass,/area/awaymission/zoo) -"lj" = (/obj/structure/flora/ausbushes/ppflowers,/mob/living/simple_animal/bird/bluegreen_Budgerigar{faction = "zoo"},/turf/simulated/floor/holofloor/grass,/area/awaymission/zoo) +"li" = (/obj/structure/flora/ausbushes/brflowers,/mob/living/simple_mob/bird/yellowish_cockatiel{faction = "zoo"},/turf/simulated/floor/holofloor/grass,/area/awaymission/zoo) +"lj" = (/obj/structure/flora/ausbushes/ppflowers,/mob/living/simple_mob/bird/bluegreen_Budgerigar{faction = "zoo"},/turf/simulated/floor/holofloor/grass,/area/awaymission/zoo) "lk" = (/obj/structure/flora/pottedplant{icon_state = "applebush"},/turf/simulated/floor/wood,/area/awaymission/zoo) "ll" = (/obj/machinery/door/airlock/glass{icon_state = "door_closed"; locked = 0; name = "Exhibit Airlock"},/turf/simulated/floor/tiled/white,/area/awaymission/zoo) -"lm" = (/mob/living/simple_animal/horse{faction = "zoo"},/turf/simulated/floor/wood,/area/awaymission/zoo) +"lm" = (/mob/living/simple_mob/horse{faction = "zoo"},/turf/simulated/floor/wood,/area/awaymission/zoo) "ln" = (/obj/effect/landmark/away,/turf/simulated/floor/wood,/area/awaymission/zoo) "lo" = (/obj/machinery/door/airlock/glass{icon_state = "door_closed"; locked = 0; name = "Exhibit Airlock"},/turf/simulated/floor/holofloor/carpet,/area/awaymission/zoo) "lp" = (/obj/structure/table/rack,/obj/random/action_figure,/turf/simulated/floor/holofloor/carpet,/area/awaymission/zoo) @@ -600,15 +600,15 @@ "lB" = (/obj/structure/toilet{dir = 8},/obj/effect/landmark/away,/turf/simulated/floor/tiled/white,/area/awaymission/zoo) "lC" = (/obj/structure/flora/pottedplant{icon_state = "plant-16"},/turf/simulated/floor/wood,/area/awaymission/zoo) "lD" = (/obj/structure/table/marble,/obj/machinery/cash_register{icon_state = "register_idle"; dir = 1},/turf/simulated/floor/tiled/white,/area/awaymission/zoo) -"lE" = (/mob/living/simple_animal/chick,/turf/simulated/floor/wood,/area/awaymission/zoo) +"lE" = (/mob/living/simple_mob/chick,/turf/simulated/floor/wood,/area/awaymission/zoo) "lF" = (/obj/effect/floor_decal/spline/fancy/wood{icon_state = "spline_fancy"; dir = 10},/turf/simulated/floor/beach/water{icon_state = "seadeep"},/area/awaymission/zoo) "lG" = (/obj/item/weapon/coin/silver,/turf/simulated/floor/beach/water{icon_state = "seadeep"},/area/awaymission/zoo) "lH" = (/obj/effect/floor_decal/spline/fancy/wood{dir = 6},/turf/simulated/floor/beach/water{icon_state = "seadeep"},/area/awaymission/zoo) -"lI" = (/mob/living/simple_animal/bird/green_budgerigar{faction = "zoo"},/turf/simulated/floor/holofloor/grass,/area/awaymission/zoo) -"lJ" = (/obj/structure/flora/ausbushes/sunnybush,/mob/living/simple_animal/bird/cockatiel{faction = "zoo"},/turf/simulated/floor/holofloor/grass,/area/awaymission/zoo) +"lI" = (/mob/living/simple_mob/bird/green_budgerigar{faction = "zoo"},/turf/simulated/floor/holofloor/grass,/area/awaymission/zoo) +"lJ" = (/obj/structure/flora/ausbushes/sunnybush,/mob/living/simple_mob/bird/cockatiel{faction = "zoo"},/turf/simulated/floor/holofloor/grass,/area/awaymission/zoo) "lK" = (/obj/structure/flora/ausbushes/genericbush,/turf/simulated/floor/holofloor/grass,/area/awaymission/zoo) "lL" = (/obj/machinery/vending/dinnerware,/turf/simulated/floor/tiled/white,/area/awaymission/zoo) -"lM" = (/mob/living/simple_animal/cow{faction = "zoo"},/turf/simulated/floor/holofloor/beach/sand{icon_state = "dgrass0"},/area/awaymission/zoo) +"lM" = (/mob/living/simple_mob/cow{faction = "zoo"},/turf/simulated/floor/holofloor/beach/sand{icon_state = "dgrass0"},/area/awaymission/zoo) "lN" = (/obj/structure/table/rack,/obj/item/toy/nanotrasenballoon,/turf/simulated/floor/holofloor/carpet,/area/awaymission/zoo) "lO" = (/obj/structure/table/rack,/obj/item/toy/cultsword,/turf/simulated/floor/holofloor/carpet,/area/awaymission/zoo) "lP" = (/obj/structure/table/rack,/obj/item/toy/crossbow,/turf/simulated/floor/holofloor/carpet,/area/awaymission/zoo) @@ -623,8 +623,8 @@ "lY" = (/obj/effect/floor_decal/corner/green/full{dir = 1},/turf/simulated/floor/tiled,/area/awaymission/zoo) "lZ" = (/obj/effect/floor_decal/spline/fancy/wood{dir = 2},/turf/simulated/floor/beach/water{icon_state = "seadeep"},/area/awaymission/zoo) "ma" = (/obj/effect/floor_decal/corner/green/full{dir = 8},/turf/simulated/floor/tiled,/area/awaymission/zoo) -"mb" = (/mob/living/simple_animal/bird/yellowish_cockatiel{faction = "zoo"},/turf/simulated/floor/holofloor/grass,/area/awaymission/zoo) -"mc" = (/mob/living/simple_animal/bird/white_caique{faction = "zoo"},/turf/simulated/floor/holofloor/grass,/area/awaymission/zoo) +"mb" = (/mob/living/simple_mob/bird/yellowish_cockatiel{faction = "zoo"},/turf/simulated/floor/holofloor/grass,/area/awaymission/zoo) +"mc" = (/mob/living/simple_mob/bird/white_caique{faction = "zoo"},/turf/simulated/floor/holofloor/grass,/area/awaymission/zoo) "md" = (/obj/structure/toilet{dir = 4},/turf/simulated/floor/tiled/white,/area/awaymission/zoo) "me" = (/obj/structure/closet/crate/bin,/turf/simulated/floor/tiled/white,/area/awaymission/zoo) "mf" = (/obj/structure/closet/crate/bin,/obj/item/trash/candy,/turf/simulated/floor/tiled/white,/area/awaymission/zoo) @@ -645,7 +645,7 @@ "mu" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 4; health = 1e+006},/obj/structure/window/reinforced{dir = 8; health = 1e+006},/turf/simulated/floor/plating,/area/awaymission/zoo) "mv" = (/obj/structure/grille,/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 1},/obj/structure/sign/kiddieplaque{desc = "This giant snake is a rare beast native to Paraiso, in the Carnelia system. Though normally only found deep in the jungles, these ravenous monsters have been known to slither out onto the planet's many beach resorts to swallow up unwary sunbathers. Otherwise, the creature's diet consists mainly of monkeys that were accidentally introduced to the planet by pet owners. The presence of the invasive monkey species had caused giant snake populations to swell in the 2530's, but today, due to excessive hunting, the giant snake's numbers have dwindled to the point of being an endangered species."; name = "Giant Snake Exhibit"},/turf/simulated/floor/plating,/area/awaymission/zoo) "mw" = (/obj/structure/grille,/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 1},/obj/structure/sign/kiddieplaque{desc = "Catgirls (not to be confused with Nekos, an interspecies hybrid born of a union between Human and Tajaran parents) were created artificially with the intention of producing a Human-feline hybrid that could serve aboard a space-faring vessel, control pests aboard such ships, and even alleviate stress among male crew members. Their eyes are between 20% and 50% larger than the average Human, which gives them their famously 'Kawaii' appearance. The large eyes trigger a subconscious psychological 'cute' response among Humans, causing them to usually become relaxed in their presence. Some catgirls have learned to abuse this trait, and have evolved to prey upon Humans who linger too close for too long."; name = "Catgirl Exhibit"},/turf/simulated/floor/plating,/area/awaymission/zoo) -"mx" = (/obj/structure/grille,/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 1},/obj/structure/sign/kiddieplaque{desc = "The Ir'ash'uint (translating roughly from Skrellian to 'Giant Frog' in Galactic Common), this amphibian lives on the Skrell homeworld Qerrbalak, in the Qerr’valis System. The Giant Frog shares a common, albeit distant ancestry with the Skrell, but unlike the Skrell, its diet is exclusively carnivorous. Its diet includes large insects, fish, and indeed, even Skrell."; name = "Giant Frog Exhibit"},/turf/simulated/floor/plating,/area/awaymission/zoo) +"mx" = (/obj/structure/grille,/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 1},/obj/structure/sign/kiddieplaque{desc = "The Ir'ash'uint (translating roughly from Skrellian to 'Giant Frog' in Galactic Common), this amphibian lives on the Skrell homeworld Qerrbalak, in the Qerr�valis System. The Giant Frog shares a common, albeit distant ancestry with the Skrell, but unlike the Skrell, its diet is exclusively carnivorous. Its diet includes large insects, fish, and indeed, even Skrell."; name = "Giant Frog Exhibit"},/turf/simulated/floor/plating,/area/awaymission/zoo) "my" = (/obj/structure/window/phoronreinforced{dir = 8; icon_state = "phoronrwindow"; maxhealth = 10000; name = "robust borosilicate window";},/obj/structure/window/phoronreinforced{dir = 1; icon_state = "phoronrwindow"; maxhealth = 10000; name = "robust borosilicate window";},/obj/structure/window/phoronreinforced{dir = 4; icon_state = "phoronrwindow"; maxhealth = 10000; name = "robust borosilicate window";},/obj/structure/grille,/turf/simulated/floor/plating,/area/awaymission/zoo) "mz" = (/obj/structure/window/phoronreinforced{dir = 8; icon_state = "phoronrwindow"; maxhealth = 10000; name = "robust borosilicate window";},/obj/structure/window/phoronreinforced{maxhealth = 10000; name = "robust borosilicate window"},/obj/structure/grille,/turf/simulated/floor/plating,/area/awaymission/zoo) "mA" = (/obj/structure/window/phoronreinforced{dir = 4; icon_state = "phoronrwindow"; maxhealth = 10000; name = "robust borosilicate window";},/obj/structure/window/phoronreinforced{dir = 1; icon_state = "phoronrwindow"; maxhealth = 10000; name = "robust borosilicate window";},/obj/structure/grille,/turf/simulated/floor/plating,/area/awaymission/zoo) @@ -693,7 +693,7 @@ "nq" = (/obj/structure/bed/chair,/obj/structure/showcase{name = "Statue"; desc = "It looks almost lifelike."; icon = 'icons/obj/statue.dmi'; icon_state = "Human_male"},/turf/simulated/floor/lino,/area/awaymission/zoo) "nr" = (/turf/simulated/mineral/ignore_mapgen,/area/awaymission/zoo) "ns" = (/turf/simulated/floor/holofloor/beach/sand{icon_state = "dgrass4"},/area/awaymission/zoo) -"nt" = (/mob/living/simple_animal/tindalos{faction = "zoo"},/turf/simulated/floor/holofloor/beach/sand{icon_state = "fullgrass0"},/area/awaymission/zoo) +"nt" = (/mob/living/simple_mob/tindalos{faction = "zoo"},/turf/simulated/floor/holofloor/beach/sand{icon_state = "fullgrass0"},/area/awaymission/zoo) "nu" = (/obj/structure/flora/ausbushes/ywflowers,/turf/simulated/floor/holofloor/beach/sand{icon_state = "fullgrass0"},/area/awaymission/zoo) "nv" = (/obj/structure/flora/ausbushes/leafybush,/turf/simulated/floor/holofloor/beach/sand{icon_state = "dgrass0"},/area/awaymission/zoo) "nw" = (/obj/effect/overlay/palmtree_l,/turf/simulated/floor/holofloor/beach/sand{icon_state = "dgrass0"},/area/awaymission/zoo) @@ -729,13 +729,13 @@ "oa" = (/obj/effect/overlay/palmtree_r,/turf/simulated/floor/holofloor/beach/sand{icon_state = "fullgrass2"},/area/awaymission/zoo) "ob" = (/obj/structure/flora/ausbushes/lavendergrass,/turf/simulated/floor/holofloor/beach/sand{icon_state = "dgrass3"},/area/awaymission/zoo) "oc" = (/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 8},/obj/structure/grille,/obj/structure/sign/kiddieplaque{desc = "Catgirls (not to be confused with Nekos, an interspecies hybrid born of a union between Human and Tajaran parents) were created artificially with the intention of producing a Human-feline hybrid that could serve aboard a space-faring vessel, control pests aboard such ships, and even alleviate stress among male crew members. Their eyes are between 20% and 50% larger than the average Human, which gives them their famously 'Kawaii' appearance. The large eyes trigger a subconscious psychological 'cute' response among Humans, causing them to usually become relaxed in their presence. Some catgirls have learned to abuse this trait, and have evolved to prey upon Humans who linger too close for too long."; name = "Catgirl Exhibit"},/turf/simulated/floor/plating,/area/awaymission/zoo) -"od" = (/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 8},/obj/structure/grille,/obj/structure/sign/kiddieplaque{desc = "The Ir'ash'uint (translating roughly from Skrellian to 'Giant Frog' in Galactic Common), this amphibian lives on the Skrell homeworld Qerrbalak, in the Qerr’valis System. The Giant Frog shares a common, albeit distant ancestry with the Skrell, but unlike the Skrell, its diet is exclusively carnivorous. Its diet includes large insects, fish, and indeed, even Skrell."; name = "Giant Frog Exhibit"},/turf/simulated/floor/plating,/area/awaymission/zoo) +"od" = (/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 8},/obj/structure/grille,/obj/structure/sign/kiddieplaque{desc = "The Ir'ash'uint (translating roughly from Skrellian to 'Giant Frog' in Galactic Common), this amphibian lives on the Skrell homeworld Qerrbalak, in the Qerr�valis System. The Giant Frog shares a common, albeit distant ancestry with the Skrell, but unlike the Skrell, its diet is exclusively carnivorous. Its diet includes large insects, fish, and indeed, even Skrell."; name = "Giant Frog Exhibit"},/turf/simulated/floor/plating,/area/awaymission/zoo) "oe" = (/obj/structure/flora/ausbushes/leafybush,/turf/simulated/floor/holofloor/grass{icon = 'icons/jungle.dmi'; icon_state = "grass2"},/area/awaymission/zoo) -"of" = (/mob/living/simple_animal/hostile/frog{faction = "zoo"},/turf/simulated/floor/holofloor/grass{icon = 'icons/jungle.dmi'; icon_state = "grass2"},/area/awaymission/zoo) +"of" = (/mob/living/simple_mob/hostile/frog{faction = "zoo"},/turf/simulated/floor/holofloor/grass{icon = 'icons/jungle.dmi'; icon_state = "grass2"},/area/awaymission/zoo) "og" = (/turf/simulated/floor/holofloor/beach/water{icon_state = "beach"; dir = 10},/area/awaymission/zoo) "oh" = (/turf/simulated/floor/holofloor/beach/water{icon_state = "beach"; dir = 6},/area/awaymission/zoo) "oi" = (/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 8},/obj/structure/grille,/obj/structure/window/reinforced,/turf/simulated/floor/plating,/area/awaymission/zoo) -"oj" = (/mob/living/simple_animal/tindalos{faction = "zoo"},/turf/simulated/floor/holofloor/beach/sand{icon_state = "fullgrass1"},/area/awaymission/zoo) +"oj" = (/mob/living/simple_mob/tindalos{faction = "zoo"},/turf/simulated/floor/holofloor/beach/sand{icon_state = "fullgrass1"},/area/awaymission/zoo) "ok" = (/obj/structure/flora/ausbushes/grassybush,/turf/simulated/floor/holofloor/beach/sand{icon_state = "dgrass1"},/area/awaymission/zoo) "ol" = (/turf/simulated/floor/holofloor/beach/sand{icon_state = "dgrass1"},/area/awaymission/zoo) "om" = (/obj/structure/flora/ausbushes/sparsegrass,/turf/simulated/floor/holofloor/beach/sand{icon_state = "dgrass4"},/area/awaymission/zoo) @@ -747,13 +747,13 @@ "os" = (/obj/structure/flora/ausbushes/genericbush,/turf/simulated/floor/holofloor/grass{icon = 'icons/jungle.dmi'; icon_state = "grass2"},/area/awaymission/zoo) "ot" = (/turf/simulated/floor/holofloor/beach/water,/area/awaymission/zoo) "ou" = (/turf/simulated/floor/holofloor/beach/water{icon_state = "beach"; dir = 2},/area/awaymission/zoo) -"ov" = (/mob/living/simple_animal/corgi{faction = "zoo"},/turf/simulated/floor/lino,/area/awaymission/zoo) +"ov" = (/mob/living/simple_mob/corgi{faction = "zoo"},/turf/simulated/floor/lino,/area/awaymission/zoo) "ow" = (/obj/structure/flora/ausbushes/leafybush,/turf/simulated/floor/holofloor/beach/sand{icon_state = "fullgrass0"},/area/awaymission/zoo) "ox" = (/obj/effect/overlay/coconut,/turf/simulated/floor/holofloor/beach/sand{icon_state = "dgrass3"},/area/awaymission/zoo) "oy" = (/obj/effect/overlay/palmtree_l,/turf/simulated/floor/holofloor/beach/sand{icon_state = "fullgrass0"},/area/awaymission/zoo) "oz" = (/obj/structure/flora/ausbushes/fullgrass,/turf/simulated/floor/holofloor/beach/sand{icon_state = "dgrass0"},/area/awaymission/zoo) -"oA" = (/obj/structure/flora/ausbushes/lavendergrass,/mob/living/simple_animal/cat{faction = "zoo"},/turf/simulated/floor/holofloor/beach/sand{icon_state = "dgrass4"},/area/awaymission/zoo) -"oB" = (/mob/living/simple_animal/retaliate/bee{faction = "zoo"},/turf/simulated/floor/holofloor/grass{icon = 'icons/turf/flooring/misc_vr.dmi'; icon_state = "hive"; name = "giant honeycomb"},/area/awaymission/zoo) +"oA" = (/obj/structure/flora/ausbushes/lavendergrass,/mob/living/simple_mob/cat{faction = "zoo"},/turf/simulated/floor/holofloor/beach/sand{icon_state = "dgrass4"},/area/awaymission/zoo) +"oB" = (/mob/living/simple_mob/retaliate/bee{faction = "zoo"},/turf/simulated/floor/holofloor/grass{icon = 'icons/turf/flooring/misc_vr.dmi'; icon_state = "hive"; name = "giant honeycomb"},/area/awaymission/zoo) "oC" = (/obj/structure/flora/ausbushes/sparsegrass,/turf/simulated/floor/holofloor/grass{icon = 'icons/jungle.dmi'; icon_state = "grass2"},/area/awaymission/zoo) "oD" = (/obj/structure/flora/ausbushes/palebush,/turf/simulated/floor/holofloor/grass{icon = 'icons/jungle.dmi'; icon_state = "grass2"},/area/awaymission/zoo) "oE" = (/obj/structure/bed/chair,/turf/simulated/floor/lino,/area/awaymission/zoo) @@ -763,7 +763,7 @@ "oI" = (/obj/structure/flora/ausbushes/genericbush,/turf/simulated/floor/holofloor/beach/sand{icon_state = "dgrass2"},/area/awaymission/zoo) "oJ" = (/obj/effect/overlay/palmtree_l,/turf/simulated/floor/holofloor/beach/sand{icon_state = "fullgrass3"},/area/awaymission/zoo) "oK" = (/obj/structure/flora/ausbushes/sunnybush,/turf/simulated/floor/holofloor/beach/sand{icon_state = "dgrass0"},/area/awaymission/zoo) -"oL" = (/mob/living/simple_animal/hostile/snake{faction = "zoo"},/turf/simulated/floor/holofloor/beach/sand{icon_state = "dgrass3"},/area/awaymission/zoo) +"oL" = (/mob/living/simple_mob/hostile/snake{faction = "zoo"},/turf/simulated/floor/holofloor/beach/sand{icon_state = "dgrass3"},/area/awaymission/zoo) "oM" = (/obj/structure/flora/ausbushes/lavendergrass,/turf/simulated/floor/holofloor/beach/sand{icon_state = "dgrass2"},/area/awaymission/zoo) "oN" = (/obj/effect/floor_decal/spline/fancy/wood/corner,/turf/simulated/floor/holofloor/grass,/area/awaymission/zoo) "oO" = (/obj/structure/flora/ausbushes/sunnybush,/obj/effect/floor_decal/spline/fancy/wood,/turf/simulated/floor/holofloor/grass,/area/awaymission/zoo) @@ -772,7 +772,7 @@ "oR" = (/obj/effect/floor_decal/spline/fancy/wood/corner{dir = 8},/turf/simulated/floor/holofloor/grass,/area/awaymission/zoo) "oS" = (/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 8},/obj/structure/grille,/obj/structure/sign/kiddieplaque{desc = "The Corgi (Welsh for 'dwarf dog') is a small type of herding dog that originated in Wales, on the planet Earth (Sol system). Two separate breeds are recognized: the Pembroke Welsh Corgi (as seen here) and the Cardigan Welsh Corgi. Historically, the Pembroke has been attributed to the influx of dogs alongside Flemish weavers from around the 10th century, while the Cardigan is attributed to the dogs brought with Norse settlers, in particular a common ancestor of the Swedish Vallhund. A certain degree of inbreeding between the two types has been suggested to explain the similarities between the two. Here it is seen in a replica of its natural habitat, the common office building, where it participates in a symbiotic relationship with the Humans who also reside here. In exchange for treats and bellyrubs, the Corgi provides the Humans with emotional support in the otherwise soul-crushing environment of the corporate workplace."; name = "Corgi Exhibit"},/turf/simulated/floor/plating,/area/awaymission/zoo) "oT" = (/obj/structure/table/reinforced,/turf/simulated/floor/lino,/area/awaymission/zoo) -"oU" = (/mob/living/simple_animal/hostile/scarybat{faction = "zoo"},/turf/simulated/floor/holofloor/desert,/area/awaymission/zoo) +"oU" = (/mob/living/simple_mob/hostile/scarybat{faction = "zoo"},/turf/simulated/floor/holofloor/desert,/area/awaymission/zoo) "oV" = (/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 8},/obj/structure/grille,/obj/structure/sign/kiddieplaque{desc = "The Tindalos is a large insect creature native to the Tubau plains of Zzarlaanis, in the Tiphonia system. The Human settlers who live on the planet have compared them to wingless grasshoppers. At high population densities and under certain environmental conditions, the Tindalos have been known to change behavior and form swarms. Tindalos are plant-eaters, sometimes becoming serious pests of cereals, vegetables and pasture, especially when they swarm in their millions and destroy crops over wide areas."; name = "Tindalos Exhibit"},/turf/simulated/floor/plating,/area/awaymission/zoo) "oW" = (/obj/effect/overlay/palmtree_l,/turf/simulated/floor/holofloor/beach/sand{icon_state = "fullgrass1"},/area/awaymission/zoo) "oX" = (/obj/structure/flora/ausbushes/genericbush,/turf/simulated/floor/holofloor/beach/sand{icon_state = "dgrass3"},/area/awaymission/zoo) @@ -780,17 +780,17 @@ "oZ" = (/obj/effect/overlay/palmtree_r,/turf/simulated/floor/holofloor/beach/sand{icon_state = "fullgrass1"},/area/awaymission/zoo) "pa" = (/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 8},/obj/structure/grille,/obj/structure/sign/kiddieplaque{desc = "Cats were once common features on many trading, exploration, and naval ships in the early days of Human sailing. Cats were attracted by an abundance of mice and rats, which can cause damage to ropes, woodwork, and eventually as technology progressed, electrical wiring. Rodents also presented a threat to the stores the ship carried, both as cargo and as food for sailors. Furthermore, rats and mice were also sources of disease, which was dangerous for ships at sea for long periods of time. As Humanity thrust its self into the age of slipspace, the Cat has again made the common spaceship its hunting ground for exactly the same reasons it had in times of old. Skrell scientists have noted how the common Cat has been able to tame and even control Humans. It is believed that had the cat ever achieved sentience, Humanity its self would fall to its knees before their feline overlords. Fortunately for Humans across the galaxy, there is negligible evolutionary benefit for the cat to evolve further."; name = "Cat Exhibit"},/turf/simulated/floor/plating,/area/awaymission/zoo) "pb" = (/obj/effect/floor_decal/spline/fancy/wood{dir = 6},/turf/simulated/floor/holofloor/grass,/area/awaymission/zoo) -"pc" = (/mob/living/simple_animal/catgirl{faction = "zoo"},/turf/simulated/floor/wood,/area/awaymission/zoo) +"pc" = (/mob/living/simple_mob/catgirl{faction = "zoo"},/turf/simulated/floor/wood,/area/awaymission/zoo) "pd" = (/obj/structure/flora/ausbushes/genericbush,/obj/effect/floor_decal/spline/fancy/wood{icon_state = "spline_fancy"; dir = 10},/turf/simulated/floor/holofloor/grass,/area/awaymission/zoo) "pe" = (/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 8},/obj/structure/grille,/obj/structure/sign/kiddieplaque{desc = "The Space Bumble Bee is a large, usually docile stinging insect native to Virgo-Prime in the Virgo Erigone system. It normally lives in small oases around what few bodies of water exist on the arid landscape, but ever since Humans have come to colonize the world, they have been discovered in city parks even in the capital city of Anur. Despite their gentle demeanor however, they can and will attack when provoked, and are capable of opening their mandibles wide enough to swallow a Human sized victim whole. Deep in their abdomen, they process their victims along with harvested nectar into rich honey."; name = "Space Bumble Bee Exhibit"},/turf/simulated/floor/plating,/area/awaymission/zoo) -"pf" = (/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 8},/obj/structure/grille,/obj/structure/sign/kiddieplaque{desc = "The Sobaka, also known as the Dog Shark, is an amphibious, cold-blooded animal that lives in the tropical waters of Qerrbalak, in the Qerr’valis System. The Sobaka hunts fish and small animals while on land, but would prefer to scavenge than to hunt. Its nose is far more powerful than any canine species, and are able to smell both on land, and in the sea. The Sobaka are commonly employed as drug-sniffing and bomb-sniffing animals by Skrellian security forces. The Sobaka is a close relative of the sentient species called Akula."; name = "Sobaka Exhibit"},/turf/simulated/floor/plating,/area/awaymission/zoo) +"pf" = (/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 8},/obj/structure/grille,/obj/structure/sign/kiddieplaque{desc = "The Sobaka, also known as the Dog Shark, is an amphibious, cold-blooded animal that lives in the tropical waters of Qerrbalak, in the Qerr�valis System. The Sobaka hunts fish and small animals while on land, but would prefer to scavenge than to hunt. Its nose is far more powerful than any canine species, and are able to smell both on land, and in the sea. The Sobaka are commonly employed as drug-sniffing and bomb-sniffing animals by Skrellian security forces. The Sobaka is a close relative of the sentient species called Akula."; name = "Sobaka Exhibit"},/turf/simulated/floor/plating,/area/awaymission/zoo) "pg" = (/mob/living/carbon/human/sharkm{faction = "zoo"},/turf/simulated/floor/holofloor/beach/water,/area/awaymission/zoo) -"ph" = (/mob/living/simple_animal/tindalos{faction = "zoo"},/turf/simulated/floor/holofloor/beach/sand{icon_state = "dgrass2"},/area/awaymission/zoo) +"ph" = (/mob/living/simple_mob/tindalos{faction = "zoo"},/turf/simulated/floor/holofloor/beach/sand{icon_state = "dgrass2"},/area/awaymission/zoo) "pi" = (/obj/structure/flora/ausbushes/fernybush,/turf/simulated/floor/holofloor/beach/sand{icon_state = "fullgrass3"},/area/awaymission/zoo) "pj" = (/obj/effect/overlay/palmtree_r,/turf/simulated/floor/holofloor/beach/sand{icon_state = "dgrass2"},/area/awaymission/zoo) -"pk" = (/mob/living/simple_animal/hostile/snake{faction = "zoo"},/turf/simulated/floor/holofloor/beach/sand{icon_state = "dgrass0"},/area/awaymission/zoo) +"pk" = (/mob/living/simple_mob/hostile/snake{faction = "zoo"},/turf/simulated/floor/holofloor/beach/sand{icon_state = "dgrass0"},/area/awaymission/zoo) "pl" = (/obj/structure/flora/ausbushes/ywflowers,/turf/simulated/floor/holofloor/beach/sand{icon_state = "fullgrass1"},/area/awaymission/zoo) -"pm" = (/mob/living/simple_animal/cat{faction = "zoo"},/turf/simulated/floor/holofloor/beach/sand{icon_state = "fullgrass3"},/area/awaymission/zoo) +"pm" = (/mob/living/simple_mob/cat{faction = "zoo"},/turf/simulated/floor/holofloor/beach/sand{icon_state = "fullgrass3"},/area/awaymission/zoo) "pn" = (/obj/effect/floor_decal/spline/fancy/wood{dir = 4},/turf/simulated/floor/holofloor/grass,/area/awaymission/zoo) "po" = (/obj/effect/floor_decal/spline/fancy/wood{dir = 8},/turf/simulated/floor/holofloor/grass,/area/awaymission/zoo) "pp" = (/obj/structure/flora/ausbushes/grassybush,/turf/simulated/floor/holofloor/grass{icon = 'icons/jungle.dmi'; icon_state = "grass2"},/area/awaymission/zoo) @@ -805,10 +805,10 @@ "py" = (/obj/structure/flora/ausbushes/palebush,/obj/effect/floor_decal/spline/fancy/wood{dir = 4},/turf/simulated/floor/holofloor/grass,/area/awaymission/zoo) "pz" = (/obj/structure/flora/ausbushes/ppflowers,/turf/simulated/floor/holofloor/grass{icon = 'icons/jungle.dmi'; icon_state = "grass2"},/area/awaymission/zoo) "pA" = (/obj/structure/flora/ausbushes/sparsegrass,/turf/simulated/floor/holofloor/beach/sand{icon_state = "dgrass2"},/area/awaymission/zoo) -"pB" = (/mob/living/simple_animal/tindalos{faction = "zoo"},/turf/simulated/floor/holofloor/beach/sand{icon_state = "dgrass0"},/area/awaymission/zoo) +"pB" = (/mob/living/simple_mob/tindalos{faction = "zoo"},/turf/simulated/floor/holofloor/beach/sand{icon_state = "dgrass0"},/area/awaymission/zoo) "pC" = (/obj/effect/overlay/palmtree_r,/turf/simulated/floor/holofloor/beach/sand{icon_state = "dgrass1"},/area/awaymission/zoo) "pD" = (/obj/structure/flora/ausbushes/sunnybush,/turf/simulated/floor/holofloor/beach/sand{icon_state = "dgrass1"},/area/awaymission/zoo) -"pE" = (/mob/living/simple_animal/cat{faction = "zoo"},/turf/simulated/floor/holofloor/beach/sand{icon_state = "dgrass2"},/area/awaymission/zoo) +"pE" = (/mob/living/simple_mob/cat{faction = "zoo"},/turf/simulated/floor/holofloor/beach/sand{icon_state = "dgrass2"},/area/awaymission/zoo) "pF" = (/obj/effect/floor_decal/spline/fancy/wood/corner{dir = 1},/turf/simulated/floor/holofloor/grass,/area/awaymission/zoo) "pG" = (/obj/effect/floor_decal/spline/fancy/wood{dir = 5},/turf/simulated/floor/holofloor/grass,/area/awaymission/zoo) "pH" = (/obj/structure/flora/ausbushes/fullgrass,/obj/effect/floor_decal/spline/fancy/wood{icon_state = "spline_fancy"; dir = 9},/turf/simulated/floor/holofloor/grass,/area/awaymission/zoo) @@ -873,7 +873,7 @@ "qO" = (/obj/item/trash/syndi_cakes,/turf/simulated/floor/plating,/area/awaymission/zoo) "qP" = (/obj/item/weapon/stool/padded,/turf/simulated/floor/plating,/area/awaymission/zoo) "qQ" = (/obj/effect/decal/cleanable/generic,/turf/simulated/floor/plating,/area/awaymission/zoo) -"qR" = (/mob/living/simple_animal/mouse{faction = "zoo"},/turf/simulated/floor/plating,/area/awaymission/zoo) +"qR" = (/mob/living/simple_mob/mouse{faction = "zoo"},/turf/simulated/floor/plating,/area/awaymission/zoo) "qS" = (/obj/effect/decal/cleanable/blood/oil,/turf/simulated/floor/plating,/area/awaymission/zoo) "qT" = (/obj/item/trash/chips,/turf/simulated/floor/plating,/area/awaymission/zoo) "qU" = (/obj/structure/table/rack,/obj/item/weapon/storage/box/lights/mixed,/turf/simulated/floor/plating,/area/awaymission/zoo) @@ -887,7 +887,7 @@ "rc" = (/obj/effect/floor_decal/spline/fancy/wood{dir = 8},/obj/structure/flora/ausbushes/brflowers,/turf/simulated/floor/grass,/area/awaymission/zoo) "rd" = (/obj/effect/floor_decal/spline/fancy/wood{dir = 4},/obj/structure/flora/ausbushes/brflowers,/turf/simulated/floor/grass,/area/awaymission/zoo) "re" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/structure/disposalpipe/segment{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/turf/simulated/floor,/area/awaymission/zoo) -"rf" = (/mob/living/simple_animal/hostile/diyaab{faction = "zoo"},/turf/simulated/floor/holofloor/snow,/area/awaymission/zoo) +"rf" = (/mob/living/simple_mob/hostile/diyaab{faction = "zoo"},/turf/simulated/floor/holofloor/snow,/area/awaymission/zoo) "rg" = (/obj/effect/floor_decal/spline/fancy/wood{icon_state = "spline_fancy"; dir = 10},/obj/structure/flora/ausbushes/ppflowers,/turf/simulated/floor/grass,/area/awaymission/zoo) "rh" = (/obj/structure/flora/ausbushes/ywflowers,/obj/effect/floor_decal/spline/fancy/wood/corner{dir = 8},/turf/simulated/floor/grass,/area/awaymission/zoo) "ri" = (/obj/structure/flora/ausbushes/ywflowers,/obj/effect/floor_decal/spline/fancy/wood/corner,/turf/simulated/floor/grass,/area/awaymission/zoo) @@ -901,7 +901,7 @@ "rq" = (/turf/simulated/floor,/area/awaymission/zoo) "rr" = (/obj/effect/floor_decal/spline/fancy/wood{dir = 2},/obj/structure/flora/ausbushes/brflowers,/turf/simulated/floor/grass,/area/awaymission/zoo) "rs" = (/obj/effect/floor_decal/industrial/warning{icon_state = "warning"; dir = 1},/turf/simulated/floor/plating,/area/awaymission/zoo) -"rt" = (/obj/structure/grille,/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 1},/obj/structure/sign/kiddieplaque{desc = "The Xenomorph XX121, better known just as Xenomorph, are an extraterrestrial, endoparasitoid species with multiple life cycles, possibly originating from the planet Proteus (also known as Xenomorph Prime), which orbits the star A6 454. One of the deadliest of all known alien species, these creatures need a host organism in order to reproduce. The appearance of the Xenomorph varies depending on its host. The Human phenotype is generally around 7–8 feet, and roughly 136.0 to 181.4 kilograms in weight, with a long, muscular tail and large, curved, oblong head. The Queen of this species is generally twice as large (they can grow even larger, some even up to 100 feet tall, and stronger if given time) and possesses superior speed, strength and intelligence. The term Xenomorph is derived from the Greek words xeno ('stranger', 'alien', and 'foreigner') and morphe ('form', 'shape'). There are no solid facts as to the origins of the Xenomorph species; instead, there are many assumptions which cannot be confirmed. Based on the limited information we have, the most commonly accepted hypothesis is that they are an artificially created species, although another hypothesis says that they evolved naturally on a planet much different than our own. The Xenomorph lives in a hive together with its queen. Amazingly, the blood and other bodily fluids of the Xenomorph are highly acidic. It is not yet understood how a creature of such biology can exist. The planet Proteus is also home to rare, red-hued Xenomorphs, who frequently fight their black-colored rivals. Some Xenomorphs are alleged to be able to cloak themselves to be invisible to the human eye, but this has not been confirmed by independent study."; name = "Xenomorph Exhibit"},/turf/simulated/floor/plating,/area/awaymission/zoo) +"rt" = (/obj/structure/grille,/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 1},/obj/structure/sign/kiddieplaque{desc = "The Xenomorph XX121, better known just as Xenomorph, are an extraterrestrial, endoparasitoid species with multiple life cycles, possibly originating from the planet Proteus (also known as Xenomorph Prime), which orbits the star A6 454. One of the deadliest of all known alien species, these creatures need a host organism in order to reproduce. The appearance of the Xenomorph varies depending on its host. The Human phenotype is generally around 7�8 feet, and roughly 136.0 to 181.4 kilograms in weight, with a long, muscular tail and large, curved, oblong head. The Queen of this species is generally twice as large (they can grow even larger, some even up to 100 feet tall, and stronger if given time) and possesses superior speed, strength and intelligence. The term Xenomorph is derived from the Greek words xeno ('stranger', 'alien', and 'foreigner') and morphe ('form', 'shape'). There are no solid facts as to the origins of the Xenomorph species; instead, there are many assumptions which cannot be confirmed. Based on the limited information we have, the most commonly accepted hypothesis is that they are an artificially created species, although another hypothesis says that they evolved naturally on a planet much different than our own. The Xenomorph lives in a hive together with its queen. Amazingly, the blood and other bodily fluids of the Xenomorph are highly acidic. It is not yet understood how a creature of such biology can exist. The planet Proteus is also home to rare, red-hued Xenomorphs, who frequently fight their black-colored rivals. Some Xenomorphs are alleged to be able to cloak themselves to be invisible to the human eye, but this has not been confirmed by independent study."; name = "Xenomorph Exhibit"},/turf/simulated/floor/plating,/area/awaymission/zoo) "ru" = (/obj/structure/grille,/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 1},/obj/structure/sign/kiddieplaque{desc = "Space spider is a broad classification is used to indicate a subspecies of arachnids discovered in the Tau sector. Extremely dangerous and voracious, this family of arachnids managed to evolve and adapt to grow and thrive in a variety of atmospheric conditions, even the complete lack of an atmosphere altogether. The females, bigger than the males, tend to lay their eggs in the bodies of animals killed during hunts. From there, the young specimens (spiderlings) will feed on the corpse for the first few hours of life until the body is picked clean, after which they will leave the nest to begin hunting for small parasites and anaerobic or aerobic creatures. Once they reach adulthood, their societal structure seems to change, pushing them to hunt in small packs, mostly favoring their numbers and aggressive nature, and inoculating a deadly toxin in their victims before sucking the nutrients dry."; name = "Space Spider Exhibit"},/turf/simulated/floor/plating,/area/awaymission/zoo) "rv" = (/obj/structure/grille,/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 1},/obj/structure/sign/kiddieplaque{desc = "The Samak are the apex predator in the various plains regions of the northern hemisphere of Meralar. Unlike many creatures of Meralar, it does not have any fur to speak of. Instead, it is completely covered in thick armored plates which act as a barrier between the Samak's internal warmth and the cold environment. However, this is still not that efficient, so the Samak feed often to keep themselves warm. The Samak have six thick legs tipped with broad claws, and roughly aerodynamic bodies. They burrow underground, detecting prey through incredibly keen thermal detection. They pop up suddenly, grab their next meal, and return underground just as quickly. They prefer larger prey, such as the Baqara, Elu'a Eli, and Tajaran. Due to their voracious appetites and tendency to ruin mine shafts and infrastructure, they have been hunted almost to extinction, mainly by the Slavemasters. For the Tajaran, being able to kill a Samak singlehandedly (and without 'cheating', such as saturation bombing and the like) is an incredible feat, and any individual who pulls it off is lauded greatly."; name = "Samak Exhibit"},/turf/simulated/floor/plating,/area/awaymission/zoo) "rw" = (/obj/structure/grille,/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 1},/obj/structure/sign/kiddieplaque{desc = "Space bears are the result of reckless experimentation in the early days of interplanetary travel and colonization. Rogue scientists in the beginnings of what is now known as Space Russia got very drunk one night, more than usual, and decided to 'improve' on the terran bear. The result is faster, stronger, and smarter than the original species, but most importantly they are able to survive in the airless void of space without any special equipment. It is unknown if they were originally meant to be living weapons or simply made 'because we can', but the scientists responsible were never heard from again. Now, thanks to faster than light travel and lackluster effort in making sure nothing's riding along, Space Bears can be found living on asteroids and moons across the galaxy, wherever Humanity and friends may roam."; name = "Space Bear Exhibit"},/turf/simulated/floor/plating,/area/awaymission/zoo) @@ -919,63 +919,63 @@ "rI" = (/obj/effect/floor_decal/spline{icon = 'icons/turf/floors.dmi'; icon_state = "asteroid_edge_w"; name = "rocky edge"},/obj/effect/floor_decal/asteroid,/turf/simulated/floor/holofloor/desert{icon = 'icons/turf/floors.dmi'; icon_state = "asteroidplating"; name = "scorched sand"},/area/awaymission/zoo) "rJ" = (/obj/structure/flora/bush,/turf/simulated/floor/holofloor/snow,/area/awaymission/zoo) "rK" = (/obj/effect/floor_decal/spline{icon = 'icons/turf/floors.dmi'; icon_state = "asteroid_edge_w"; name = "rocky edge"},/obj/effect/floor_decal/spline{icon = 'icons/turf/floors.dmi'; icon_state = "asteroid_edge_e"; name = "rocky edge"},/obj/effect/floor_decal/spline{icon = 'icons/turf/floors.dmi'; icon_state = "asteroid_edge_n"; name = "rocky edge"},/turf/simulated/floor/holofloor/desert{icon = 'icons/turf/floors.dmi'; icon_state = "asteroidplating"; name = "scorched sand"},/area/awaymission/zoo) -"rL" = (/mob/living/simple_animal/hostile/alien{faction = "zoo"},/turf/simulated/floor/holofloor/desert{icon = 'icons/turf/floors.dmi'; icon_state = "asteroidplating"; name = "scorched sand"},/area/awaymission/zoo) +"rL" = (/mob/living/simple_mob/hostile/alien{faction = "zoo"},/turf/simulated/floor/holofloor/desert{icon = 'icons/turf/floors.dmi'; icon_state = "asteroidplating"; name = "scorched sand"},/area/awaymission/zoo) "rM" = (/obj/effect/floor_decal/spline{icon = 'icons/turf/floors.dmi'; icon_state = "asteroid_edge_e"; name = "rocky edge"},/obj/effect/floor_decal/spline{icon = 'icons/turf/floors.dmi'; icon_state = "asteroid_edge_n"; name = "rocky edge"},/turf/simulated/floor/holofloor/desert{icon = 'icons/turf/floors.dmi'; icon_state = "asteroidplating"; name = "scorched sand"},/area/awaymission/zoo) "rN" = (/obj/effect/floor_decal/spline{icon = 'icons/turf/floors.dmi'; icon_state = "asteroid_edge_e"; name = "rocky edge"},/obj/effect/floor_decal/asteroid,/turf/simulated/floor/holofloor/desert{icon = 'icons/turf/floors.dmi'; icon_state = "asteroidplating"; name = "scorched sand"},/area/awaymission/zoo) "rO" = (/obj/structure/closet/crate,/obj/effect/floor_decal/industrial/outline/yellow,/turf/simulated/floor/tiled/neutral,/area/awaymission/zoo) "rP" = (/turf/simulated/floor/tiled/neutral,/area/awaymission/zoo) "rQ" = (/obj/structure/flora/grass/both,/turf/simulated/floor/holofloor/snow,/area/awaymission/zoo) -"rR" = (/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 8},/obj/structure/grille,/obj/structure/sign/kiddieplaque{desc = "The Xenomorph XX121, better known just as Xenomorph, are an extraterrestrial, endoparasitoid species with multiple life cycles, possibly originating from the planet Proteus (also known as Xenomorph Prime), which orbits the star A6 454. One of the deadliest of all known alien species, these creatures need a host organism in order to reproduce. The appearance of the Xenomorph varies depending on its host. The Human phenotype is generally around 7–8 feet, and roughly 136.0 to 181.4 kilograms in weight, with a long, muscular tail and large, curved, oblong head. The Queen of this species is generally twice as large (they can grow even larger, some even up to 100 feet tall, and stronger if given time) and possesses superior speed, strength and intelligence. The term Xenomorph is derived from the Greek words xeno ('stranger', 'alien', and 'foreigner') and morphe ('form', 'shape'). There are no solid facts as to the origins of the Xenomorph species; instead, there are many assumptions which cannot be confirmed. Based on the limited information we have, the most commonly accepted hypothesis is that they are an artificially created species, although another hypothesis says that they evolved naturally on a planet much different than our own. The Xenomorph lives in a hive together with its queen. Amazingly, the blood and other bodily fluids of the Xenomorph are highly acidic. It is not yet understood how a creature of such biology can exist. The planet Proteus is also home to rare, red-hued Xenomorphs, who frequently fight their black-colored rivals. Some Xenomorphs are alleged to be able to cloak themselves to be invisible to the human eye, but this has not been confirmed by independent study."; name = "Xenomorph Exhibit"},/turf/simulated/floor/plating,/area/awaymission/zoo) -"rS" = (/mob/living/simple_animal/hostile/alien/drone{faction = "zoo"},/turf/simulated/floor/holofloor/desert{icon = 'icons/turf/floors.dmi'; icon_state = "asteroidplating"; name = "scorched sand"},/area/awaymission/zoo) +"rR" = (/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 8},/obj/structure/grille,/obj/structure/sign/kiddieplaque{desc = "The Xenomorph XX121, better known just as Xenomorph, are an extraterrestrial, endoparasitoid species with multiple life cycles, possibly originating from the planet Proteus (also known as Xenomorph Prime), which orbits the star A6 454. One of the deadliest of all known alien species, these creatures need a host organism in order to reproduce. The appearance of the Xenomorph varies depending on its host. The Human phenotype is generally around 7�8 feet, and roughly 136.0 to 181.4 kilograms in weight, with a long, muscular tail and large, curved, oblong head. The Queen of this species is generally twice as large (they can grow even larger, some even up to 100 feet tall, and stronger if given time) and possesses superior speed, strength and intelligence. The term Xenomorph is derived from the Greek words xeno ('stranger', 'alien', and 'foreigner') and morphe ('form', 'shape'). There are no solid facts as to the origins of the Xenomorph species; instead, there are many assumptions which cannot be confirmed. Based on the limited information we have, the most commonly accepted hypothesis is that they are an artificially created species, although another hypothesis says that they evolved naturally on a planet much different than our own. The Xenomorph lives in a hive together with its queen. Amazingly, the blood and other bodily fluids of the Xenomorph are highly acidic. It is not yet understood how a creature of such biology can exist. The planet Proteus is also home to rare, red-hued Xenomorphs, who frequently fight their black-colored rivals. Some Xenomorphs are alleged to be able to cloak themselves to be invisible to the human eye, but this has not been confirmed by independent study."; name = "Xenomorph Exhibit"},/turf/simulated/floor/plating,/area/awaymission/zoo) +"rS" = (/mob/living/simple_mob/hostile/alien/drone{faction = "zoo"},/turf/simulated/floor/holofloor/desert{icon = 'icons/turf/floors.dmi'; icon_state = "asteroidplating"; name = "scorched sand"},/area/awaymission/zoo) "rT" = (/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 8},/obj/structure/grille,/obj/structure/sign/kiddieplaque{desc = "Space spider is a broad classification is used to indicate a subspecies of arachnids discovered in the Tau sector. Extremely dangerous and voracious, this family of arachnids managed to evolve and adapt to grow and thrive in a variety of atmospheric conditions, even the complete lack of an atmosphere altogether. The females, bigger than the males, tend to lay their eggs in the bodies of animals killed during hunts. From there, the young specimens (spiderlings) will feed on the corpse for the first few hours of life until the body is picked clean, after which they will leave the nest to begin hunting for small parasites and anaerobic or aerobic creatures. Once they reach adulthood, their societal structure seems to change, pushing them to hunt in small packs, mostly favoring their numbers and aggressive nature, and inoculating a deadly toxin in their victims before sucking the nutrients dry."; name = "Space Spider Exhibit"},/turf/simulated/floor/plating,/area/awaymission/zoo) "rU" = (/obj/effect/overlay/palmtree_r,/turf/simulated/floor/holofloor/grass,/area/awaymission/zoo) "rV" = (/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 8},/obj/structure/grille,/obj/structure/sign/kiddieplaque{desc = "The Samak are the apex predator in the various plains regions of the northern hemisphere of Meralar. Unlike many creatures of Meralar, it does not have any fur to speak of. Instead, it is completely covered in thick armored plates which act as a barrier between the Samak's internal warmth and the cold environment. However, this is still not that efficient, so the Samak feed often to keep themselves warm. The Samak have six thick legs tipped with broad claws, and roughly aerodynamic bodies. They burrow underground, detecting prey through incredibly keen thermal detection. They pop up suddenly, grab their next meal, and return underground just as quickly. They prefer larger prey, such as the Baqara, Elu'a Eli, and Tajaran. Due to their voracious appetites and tendency to ruin mine shafts and infrastructure, they have been hunted almost to extinction, mainly by the Slavemasters. For the Tajaran, being able to kill a Samak singlehandedly (and without 'cheating', such as saturation bombing and the like) is an incredible feat, and any individual who pulls it off is lauded greatly."; name = "Samak Exhibit"},/turf/simulated/floor/plating,/area/awaymission/zoo) -"rW" = (/mob/living/simple_animal/penguin{faction = "zoo"},/turf/simulated/floor/holofloor/snow,/area/awaymission/zoo) +"rW" = (/mob/living/simple_mob/penguin{faction = "zoo"},/turf/simulated/floor/holofloor/snow,/area/awaymission/zoo) "rX" = (/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 8},/obj/structure/grille,/obj/structure/sign/kiddieplaque{desc = "Space bears are the result of reckless experimentation in the early days of interplanetary travel and colonization. Rogue scientists in the beginnings of what is now known as Space Russia got very drunk one night, more than usual, and decided to 'improve' on the terran bear. The result is faster, stronger, and smarter than the original species, but most importantly they are able to survive in the airless void of space without any special equipment. It is unknown if they were originally meant to be living weapons or simply made 'because we can', but the scientists responsible were never heard from again. Now, thanks to faster than light travel and lackluster effort in making sure nothing's riding along, Space Bears can be found living on asteroids and moons across the galaxy, wherever Humanity and friends may roam."; name = "Space Bear Exhibit"},/turf/simulated/floor/plating,/area/awaymission/zoo) "rY" = (/obj/effect/floor_decal/asteroid,/turf/simulated/floor/holofloor/desert,/area/awaymission/zoo) -"rZ" = (/mob/living/simple_animal/snake{faction = "zoo"},/turf/simulated/floor/holofloor/beach/sand{icon_state = "fullgrass1"},/area/awaymission/zoo) -"sa" = (/obj/effect/floor_decal/spline{icon = 'icons/turf/floors.dmi'; icon_state = "asteroid_edge_w"; name = "rocky edge"},/obj/effect/floor_decal/spline{icon = 'icons/turf/floors.dmi'; icon_state = "asteroid_edge_s"; name = "rocky edge"},/mob/living/simple_animal/hostile/alien/drone{faction = "zoo"},/turf/simulated/floor/holofloor/desert{icon = 'icons/turf/floors.dmi'; icon_state = "asteroidplating"; name = "scorched sand"},/area/awaymission/zoo) +"rZ" = (/mob/living/simple_mob/snake{faction = "zoo"},/turf/simulated/floor/holofloor/beach/sand{icon_state = "fullgrass1"},/area/awaymission/zoo) +"sa" = (/obj/effect/floor_decal/spline{icon = 'icons/turf/floors.dmi'; icon_state = "asteroid_edge_w"; name = "rocky edge"},/obj/effect/floor_decal/spline{icon = 'icons/turf/floors.dmi'; icon_state = "asteroid_edge_s"; name = "rocky edge"},/mob/living/simple_mob/hostile/alien/drone{faction = "zoo"},/turf/simulated/floor/holofloor/desert{icon = 'icons/turf/floors.dmi'; icon_state = "asteroidplating"; name = "scorched sand"},/area/awaymission/zoo) "sb" = (/obj/effect/floor_decal/spline{icon = 'icons/turf/floors.dmi'; icon_state = "asteroid_edge_s"; name = "rocky edge"},/turf/simulated/floor/holofloor/desert{icon = 'icons/turf/floors.dmi'; icon_state = "asteroidplating"; name = "scorched sand"},/area/awaymission/zoo) -"sc" = (/obj/effect/floor_decal/industrial/outline/yellow,/mob/living/simple_animal/hostile/mimic/crate{faction = "zoo"},/turf/simulated/floor/tiled/neutral,/area/awaymission/zoo) -"sd" = (/obj/structure/flora/ausbushes/fullgrass,/mob/living/simple_animal/penguin{faction = "zoo"},/turf/simulated/floor/holofloor/snow,/area/awaymission/zoo) -"se" = (/obj/effect/floor_decal/asteroid,/mob/living/simple_animal/hostile/bear{faction = "zoo"},/turf/simulated/floor/holofloor/desert,/area/awaymission/zoo) -"sf" = (/obj/structure/flora/grass/both,/mob/living/simple_animal/penguin{faction = "zoo"},/turf/simulated/floor/holofloor/snow,/area/awaymission/zoo) +"sc" = (/obj/effect/floor_decal/industrial/outline/yellow,/mob/living/simple_mob/hostile/mimic/crate{faction = "zoo"},/turf/simulated/floor/tiled/neutral,/area/awaymission/zoo) +"sd" = (/obj/structure/flora/ausbushes/fullgrass,/mob/living/simple_mob/penguin{faction = "zoo"},/turf/simulated/floor/holofloor/snow,/area/awaymission/zoo) +"se" = (/obj/effect/floor_decal/asteroid,/mob/living/simple_mob/hostile/bear{faction = "zoo"},/turf/simulated/floor/holofloor/desert,/area/awaymission/zoo) +"sf" = (/obj/structure/flora/grass/both,/mob/living/simple_mob/penguin{faction = "zoo"},/turf/simulated/floor/holofloor/snow,/area/awaymission/zoo) "sg" = (/obj/effect/overlay/palmtree_l,/turf/simulated/floor/holofloor/grass,/area/awaymission/zoo) -"sh" = (/mob/living/simple_animal/hostile/samak{faction = "zoo"},/turf/simulated/floor/holofloor/snow,/area/awaymission/zoo) +"sh" = (/mob/living/simple_mob/hostile/samak{faction = "zoo"},/turf/simulated/floor/holofloor/snow,/area/awaymission/zoo) "si" = (/obj/effect/floor_decal/spline/plain{dir = 9},/turf/simulated/floor/beach/water,/area/awaymission/zoo) "sj" = (/obj/effect/floor_decal/spline/plain{dir = 1},/turf/simulated/floor/beach/water,/area/awaymission/zoo) "sk" = (/obj/effect/floor_decal/spline/plain{dir = 5},/turf/simulated/floor/beach/water,/area/awaymission/zoo) -"sl" = (/mob/living/simple_animal/hostile/carp{faction = "zoo"},/turf/simulated/floor/holofloor/space,/area/awaymission/zoo) +"sl" = (/mob/living/simple_mob/hostile/carp{faction = "zoo"},/turf/simulated/floor/holofloor/space,/area/awaymission/zoo) "sm" = (/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 8},/obj/structure/grille,/obj/structure/sign/kiddieplaque{desc = "The common Green Snake is an invasive species that makes its home on tropical worlds across the galaxy. Its ancestors were once kept as pets by Humans, but these snakes had escaped into the ventilation of ships over many centuries to feed on the abundance of mice usually infesting the maintinence passages. It is believed that they are descended from the Ball Python, native to Earth, in the Sol system."; name = "Green Snake Exhibit"},/turf/simulated/floor/plating,/area/awaymission/zoo) "sn" = (/obj/effect/floor_decal/spline{icon = 'icons/turf/floors.dmi'; icon_state = "asteroid_edge_w"; name = "rocky edge"},/obj/effect/floor_decal/spline{icon = 'icons/turf/floors.dmi'; icon_state = "asteroid_edge_e"; name = "rocky edge"},/turf/simulated/floor/holofloor/desert{icon = 'icons/turf/floors.dmi'; icon_state = "asteroidplating"; name = "scorched sand"},/area/awaymission/zoo) -"so" = (/obj/effect/floor_decal/spline{icon = 'icons/turf/floors.dmi'; icon_state = "asteroid_edge_e"; name = "rocky edge"},/mob/living/simple_animal/hostile/alien/drone{faction = "zoo"},/turf/simulated/floor/holofloor/desert{icon = 'icons/turf/floors.dmi'; icon_state = "asteroidplating"; name = "scorched sand"},/area/awaymission/zoo) +"so" = (/obj/effect/floor_decal/spline{icon = 'icons/turf/floors.dmi'; icon_state = "asteroid_edge_e"; name = "rocky edge"},/mob/living/simple_mob/hostile/alien/drone{faction = "zoo"},/turf/simulated/floor/holofloor/desert{icon = 'icons/turf/floors.dmi'; icon_state = "asteroidplating"; name = "scorched sand"},/area/awaymission/zoo) "sp" = (/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 8},/obj/structure/grille,/obj/structure/sign/kiddieplaque{desc = "Don't be fooled, this isn't a storage room, but in fact the hunting ground of a deadly ambush predator known as the Mimic. The origin of this species is largely unknown, but they are theorized to be a cousin of the even more elusive changeling species. However, unlike the changeling, the mimic is known for disguising its self as inanimate objects, rather than other animals. When a suitable prey disturbs the mimic, it attacks, and if possible, swallows its victim whole. Scientists do not know how the creature reproduces, as all efforts to study the organism, dead or alive, have revealed that specimens examined do not have reproductive organs at all! It is hypothesized that the mimic grows and uses reproductive organs during a later life cycle, not yet recorded by any known sentient species."; name = "Mimic Exhibit"},/turf/simulated/floor/plating,/area/awaymission/zoo) -"sq" = (/obj/effect/spider/stickyweb,/mob/living/simple_animal/hostile/giant_spider/hunter{faction = "zoo"},/turf/simulated/floor/holofloor/desert,/area/awaymission/zoo) -"sr" = (/obj/effect/spider/cocoon{icon_state = "cocoon_large2"},/mob/living/simple_animal/hostile/giant_spider/hunter{faction = "zoo"},/turf/simulated/floor/holofloor/desert,/area/awaymission/zoo) -"ss" = (/obj/effect/spider/stickyweb,/mob/living/simple_animal/hostile/giant_spider{faction = "zoo"},/turf/simulated/floor/holofloor/desert,/area/awaymission/zoo) +"sq" = (/obj/effect/spider/stickyweb,/mob/living/simple_mob/hostile/giant_spider/hunter{faction = "zoo"},/turf/simulated/floor/holofloor/desert,/area/awaymission/zoo) +"sr" = (/obj/effect/spider/cocoon{icon_state = "cocoon_large2"},/mob/living/simple_mob/hostile/giant_spider/hunter{faction = "zoo"},/turf/simulated/floor/holofloor/desert,/area/awaymission/zoo) +"ss" = (/obj/effect/spider/stickyweb,/mob/living/simple_mob/hostile/giant_spider{faction = "zoo"},/turf/simulated/floor/holofloor/desert,/area/awaymission/zoo) "st" = (/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 8},/obj/structure/grille,/obj/structure/sign/kiddieplaque{desc = "Originating from the jungles of Earth, Parrots are a highly intelligent avian that have become an expensive commodity in space, prized for their colorful plumage, and their famous ability to mimic speech. Ship captains traditionally keep them as exotic pets, to demonstrate wealth, and to have someone to talk with. Some researchers believe some parrot species to be capable of intelligence up to that of a 5 year old Human in some aspects. Purebreds of exceptionally varied color pallets are especially prized among traders and space pirates."; name = "Parrot Exhibit"},/turf/simulated/floor/plating,/area/awaymission/zoo) "su" = (/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 8},/obj/structure/grille,/obj/structure/sign/kiddieplaque{desc = "Penguins are a group of aquatic, flightless birds living almost exclusively in the Southern Hemisphere of Earth, in the Sol system, especially in the continent of Antarctica. Highly adapted for life in the water, penguins have countershaded dark and white plumage, and their wings have evolved into flippers. Most penguins feed on krill, fish, squid and other forms of sealife caught while swimming underwater. They spend about half of their lives on land and half in the oceans. Due to the effects of global warming, penguins have been sent off-world to wildlife sanctuaries across the galaxy. Today, many such reserves harbor the last of this species, while penguins are now extinct on Earth."; name = "Space Penguin Exhibit"},/turf/simulated/floor/plating,/area/awaymission/zoo) "sv" = (/obj/effect/floor_decal/spline/plain{dir = 8},/turf/simulated/floor/beach/water,/area/awaymission/zoo) "sw" = (/obj/effect/floor_decal/spline/plain{dir = 4},/turf/simulated/floor/beach/water,/area/awaymission/zoo) "sx" = (/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 8},/obj/structure/grille,/obj/structure/sign/kiddieplaque{desc = "Space carp are a breed of space fish that come from the phoron giant Erebus. Scientists aren't quite sure how, but the Carp are imbued with the Phoron in their DNA, allowing for them to travel unaided through the vast void of Space, without gravity, air, or anything. They are very dangerous to space travelers, as they are highly aggressive and carnivorous. They often break windows and the like on space stations hoping to get in to eat the crew."; name = "Space Carp Exhibit"},/turf/simulated/floor/plating,/area/awaymission/zoo) "sy" = (/obj/effect/floor_decal/spline{icon = 'icons/turf/floors.dmi'; icon_state = "asteroid_edge_e"; name = "rocky edge"},/obj/effect/floor_decal/spline{icon = 'icons/turf/floors.dmi'; icon_state = "asteroid_edge_s"; name = "rocky edge"},/obj/effect/floor_decal/spline{icon = 'icons/turf/floors.dmi'; icon_state = "asteroid_edge_n"; name = "rocky edge"},/turf/simulated/floor/holofloor/desert{icon = 'icons/turf/floors.dmi'; icon_state = "asteroidplating"; name = "scorched sand"},/area/awaymission/zoo) -"sz" = (/obj/effect/floor_decal/spline{icon = 'icons/turf/floors.dmi'; icon_state = "asteroid_edge_w"; name = "rocky edge"},/mob/living/simple_animal/hostile/alien{faction = "zoo"; name = "invisible alien hunter"},/turf/simulated/floor/holofloor/desert{icon = 'icons/turf/floors.dmi'; icon_state = "asteroidplating"; name = "scorched sand"},/area/awaymission/zoo) -"sA" = (/obj/effect/spider/stickyweb{icon_state = "stickyweb2"},/obj/effect/spider/cocoon{icon_state = "cocoon3"},/mob/living/simple_animal/hostile/giant_spider/hunter{faction = "zoo"},/turf/simulated/floor/holofloor/desert,/area/awaymission/zoo) -"sB" = (/obj/effect/spider/stickyweb{icon_state = "cobweb1"},/mob/living/simple_animal/hostile/giant_spider/hunter{faction = "zoo"},/turf/simulated/floor/holofloor/desert,/area/awaymission/zoo) -"sC" = (/obj/effect/spider/cocoon{icon_state = "cocoon2"},/mob/living/simple_animal/hostile/giant_spider/nurse{faction = "zoo"},/turf/simulated/floor/holofloor/desert,/area/awaymission/zoo) -"sD" = (/obj/effect/spider/stickyweb{icon_state = "cobweb2"},/mob/living/simple_animal/hostile/giant_spider{faction = "zoo"},/turf/simulated/floor/holofloor/desert,/area/awaymission/zoo) -"sE" = (/obj/effect/spider/stickyweb{icon_state = "stickyweb2"},/obj/effect/spider/cocoon{icon_state = "cocoon_large1"},/mob/living/simple_animal/hostile/giant_spider{faction = "zoo"},/turf/simulated/floor/holofloor/desert,/area/awaymission/zoo) -"sF" = (/obj/effect/floor_decal/spline{icon = 'icons/turf/floors.dmi'; icon_state = "asteroid_edge_e"; name = "rocky edge"},/mob/living/simple_animal/hostile/alien/queen{faction = "zoo"},/turf/simulated/floor/holofloor/desert{icon = 'icons/turf/floors.dmi'; icon_state = "asteroidplating"; name = "scorched sand"},/area/awaymission/zoo) +"sz" = (/obj/effect/floor_decal/spline{icon = 'icons/turf/floors.dmi'; icon_state = "asteroid_edge_w"; name = "rocky edge"},/mob/living/simple_mob/hostile/alien{faction = "zoo"; name = "invisible alien hunter"},/turf/simulated/floor/holofloor/desert{icon = 'icons/turf/floors.dmi'; icon_state = "asteroidplating"; name = "scorched sand"},/area/awaymission/zoo) +"sA" = (/obj/effect/spider/stickyweb{icon_state = "stickyweb2"},/obj/effect/spider/cocoon{icon_state = "cocoon3"},/mob/living/simple_mob/hostile/giant_spider/hunter{faction = "zoo"},/turf/simulated/floor/holofloor/desert,/area/awaymission/zoo) +"sB" = (/obj/effect/spider/stickyweb{icon_state = "cobweb1"},/mob/living/simple_mob/hostile/giant_spider/hunter{faction = "zoo"},/turf/simulated/floor/holofloor/desert,/area/awaymission/zoo) +"sC" = (/obj/effect/spider/cocoon{icon_state = "cocoon2"},/mob/living/simple_mob/hostile/giant_spider/nurse{faction = "zoo"},/turf/simulated/floor/holofloor/desert,/area/awaymission/zoo) +"sD" = (/obj/effect/spider/stickyweb{icon_state = "cobweb2"},/mob/living/simple_mob/hostile/giant_spider{faction = "zoo"},/turf/simulated/floor/holofloor/desert,/area/awaymission/zoo) +"sE" = (/obj/effect/spider/stickyweb{icon_state = "stickyweb2"},/obj/effect/spider/cocoon{icon_state = "cocoon_large1"},/mob/living/simple_mob/hostile/giant_spider{faction = "zoo"},/turf/simulated/floor/holofloor/desert,/area/awaymission/zoo) +"sF" = (/obj/effect/floor_decal/spline{icon = 'icons/turf/floors.dmi'; icon_state = "asteroid_edge_e"; name = "rocky edge"},/mob/living/simple_mob/hostile/alien/queen{faction = "zoo"},/turf/simulated/floor/holofloor/desert{icon = 'icons/turf/floors.dmi'; icon_state = "asteroidplating"; name = "scorched sand"},/area/awaymission/zoo) "sG" = (/obj/effect/landmark/away,/turf/simulated/floor/tiled/neutral,/area/awaymission/zoo) -"sH" = (/obj/effect/spider/cocoon{icon_state = "cocoon_large3"},/mob/living/simple_animal/hostile/giant_spider/hunter{faction = "zoo"},/turf/simulated/floor/holofloor/desert,/area/awaymission/zoo) -"sI" = (/mob/living/simple_animal/hostile/giant_spider{faction = "zoo"},/turf/simulated/floor/holofloor/desert,/area/awaymission/zoo) -"sJ" = (/mob/living/simple_animal/parrot{faction = "zoo"},/turf/simulated/floor/holofloor/grass,/area/awaymission/zoo) +"sH" = (/obj/effect/spider/cocoon{icon_state = "cocoon_large3"},/mob/living/simple_mob/hostile/giant_spider/hunter{faction = "zoo"},/turf/simulated/floor/holofloor/desert,/area/awaymission/zoo) +"sI" = (/mob/living/simple_mob/hostile/giant_spider{faction = "zoo"},/turf/simulated/floor/holofloor/desert,/area/awaymission/zoo) +"sJ" = (/mob/living/simple_mob/parrot{faction = "zoo"},/turf/simulated/floor/holofloor/grass,/area/awaymission/zoo) "sK" = (/obj/effect/landmark/away,/turf/simulated/floor/beach/water,/area/awaymission/zoo) -"sL" = (/mob/living/simple_animal/hostile/bear{faction = "zoo"},/turf/simulated/floor/holofloor/desert,/area/awaymission/zoo) -"sM" = (/mob/living/simple_animal/hostile/alien{faction = "zoo"; name = "invisible alien hunter"},/turf/simulated/floor/holofloor/desert{icon = 'icons/turf/floors.dmi'; icon_state = "asteroidplating"; name = "scorched sand"},/area/awaymission/zoo) +"sL" = (/mob/living/simple_mob/hostile/bear{faction = "zoo"},/turf/simulated/floor/holofloor/desert,/area/awaymission/zoo) +"sM" = (/mob/living/simple_mob/hostile/alien{faction = "zoo"; name = "invisible alien hunter"},/turf/simulated/floor/holofloor/desert{icon = 'icons/turf/floors.dmi'; icon_state = "asteroidplating"; name = "scorched sand"},/area/awaymission/zoo) "sN" = (/obj/effect/decal/remains,/obj/effect/gibspawner/generic,/turf/simulated/floor/tiled/neutral,/area/awaymission/zoo) "sO" = (/obj/effect/spider/stickyweb,/turf/simulated/floor/holofloor/desert,/area/awaymission/zoo) -"sP" = (/mob/living/simple_animal/snake{faction = "zoo"},/turf/simulated/floor/holofloor/beach/sand{icon_state = "dgrass4"},/area/awaymission/zoo) +"sP" = (/mob/living/simple_mob/snake{faction = "zoo"},/turf/simulated/floor/holofloor/beach/sand{icon_state = "dgrass4"},/area/awaymission/zoo) "sQ" = (/obj/effect/floor_decal/spline{icon = 'icons/turf/floors.dmi'; icon_state = "asteroid_edge_w"; name = "rocky edge"},/obj/effect/floor_decal/spline{icon = 'icons/turf/floors.dmi'; icon_state = "asteroid_edge_e"; name = "rocky edge"},/obj/effect/floor_decal/spline{icon = 'icons/turf/floors.dmi'; icon_state = "asteroid_edge_s"; name = "rocky edge"},/turf/simulated/floor/holofloor/desert{icon = 'icons/turf/floors.dmi'; icon_state = "asteroidplating"; name = "scorched sand"},/area/awaymission/zoo) "sR" = (/obj/effect/spider/stickyweb{icon_state = "stickyweb2"},/turf/simulated/floor/holofloor/desert,/area/awaymission/zoo) "sS" = (/obj/effect/spider/stickyweb{icon_state = "cobweb2"},/turf/simulated/floor/holofloor/desert,/area/awaymission/zoo) @@ -986,7 +986,7 @@ "sX" = (/obj/effect/spider/stickyweb{icon_state = "cobweb1"},/turf/simulated/floor/holofloor/desert,/area/awaymission/zoo) "sY" = (/obj/structure/flora/grass/green,/turf/simulated/floor/holofloor/snow,/area/awaymission/zoo) "sZ" = (/obj/structure/flora/grass/brown,/turf/simulated/floor/holofloor/snow,/area/awaymission/zoo) -"ta" = (/obj/effect/floor_decal/asteroid,/mob/living/simple_animal/hostile/alien{faction = "zoo"},/turf/simulated/floor/holofloor/desert{icon = 'icons/turf/floors.dmi'; icon_state = "asteroidplating"; name = "scorched sand"},/area/awaymission/zoo) +"ta" = (/obj/effect/floor_decal/asteroid,/mob/living/simple_mob/hostile/alien{faction = "zoo"},/turf/simulated/floor/holofloor/desert{icon = 'icons/turf/floors.dmi'; icon_state = "asteroidplating"; name = "scorched sand"},/area/awaymission/zoo) "tb" = (/obj/structure/grille,/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 1},/obj/structure/sign/kiddieplaque{desc = "Stoks are a small species of reptile native to Moghes, ranging from two, to three feet tall with colorful scales, and feathers adorning their head, they stand on two legs and have short arms, the legs being digitigrade. They keep to oasises due to their colors which provide camouflage and distance from predators such as duneworms. Keeping in packs so that when they are threatened, they will swarm an attacker and take it down by sheer flanking and numbers. They're an omnivorous species, keeping themselves fed on either predators, or oasis fruits. Despite being the evolutionary equivalent of how monkeys are to humans, Stok are often domesticated and kept as pets by Unathi on Moghes, serving to aid in hunting efforts when trained. Their role in Unathi society is more like that of dogs to humans."; name = "Stok Exhibit"},/turf/simulated/floor/plating,/area/awaymission/zoo) "tc" = (/obj/structure/grille,/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 1},/obj/structure/sign/kiddieplaque{desc = "During the latest part of a Diona's life cycle, the Diona casts its self into orbit around a star, so it may soak up solar radiation and grow to immense proportions, even as large as a space station. The yithian, exhibited here, can only be found within these great Diona, where it has a symbiotic relationship with its host. It consumes fungus and parasites that would normally compromise the Diona's health."; name = "Yithian Exhibit"},/turf/simulated/floor/plating,/area/awaymission/zoo) "td" = (/obj/structure/grille,/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 1},/obj/structure/sign/kiddieplaque{desc = "A relative of the Tajaran, the Farwa is an intelligent pack animal widespread on Meralar, in the Rarkajar system. Usually with tan, orange and brown pelts, this animals is capable of using primitive tools. Its diet is primarly made up of vegetable matter and carrion, although they also hunt opportunistically. The species itself is very diverse, with Farwa in different biomes possessing minute variations in behaviour and genetic make-up."; name = "Farwa Exhibit"},/turf/simulated/floor/plating,/area/awaymission/zoo) @@ -994,7 +994,7 @@ "tf" = (/obj/structure/flora/ausbushes/fullgrass,/turf/simulated/floor/holofloor/wood{icon = 'icons/turf/floors.dmi'; icon_state = "diona"},/area/awaymission/zoo) "tg" = (/obj/structure/flora/ausbushes/genericbush,/turf/simulated/floor/holofloor/wood{icon = 'icons/turf/floors.dmi'; icon_state = "diona"},/area/awaymission/zoo) "th" = (/turf/simulated/floor/holofloor/wood{icon = 'icons/turf/floors.dmi'; icon_state = "diona"},/area/awaymission/zoo) -"ti" = (/mob/living/simple_animal/yithian{faction = "zoo"},/turf/simulated/floor/holofloor/wood{icon = 'icons/turf/floors.dmi'; icon_state = "diona"},/area/awaymission/zoo) +"ti" = (/mob/living/simple_mob/yithian{faction = "zoo"},/turf/simulated/floor/holofloor/wood{icon = 'icons/turf/floors.dmi'; icon_state = "diona"},/area/awaymission/zoo) "tj" = (/obj/machinery/portable_atmospherics/hydroponics/soil/invisible,/turf/simulated/floor/holofloor/wood{icon = 'icons/turf/floors.dmi'; icon_state = "diona"},/area/awaymission/zoo) "tk" = (/turf/simulated/floor/cult,/area/awaymission/zoo) "tl" = (/obj/structure/cult/pylon,/turf/simulated/floor/cult,/area/awaymission/zoo) @@ -1009,10 +1009,10 @@ "tu" = (/obj/structure/flora/ausbushes/sunnybush,/turf/simulated/floor/holofloor/wood{icon = 'icons/turf/floors.dmi'; icon_state = "diona"},/area/awaymission/zoo) "tv" = (/obj/structure/flora/ausbushes/palebush,/turf/simulated/floor/holofloor/wood{icon = 'icons/turf/floors.dmi'; icon_state = "diona"},/area/awaymission/zoo) "tw" = (/obj/structure/flora/ausbushes/ywflowers,/turf/simulated/floor/holofloor/wood{icon = 'icons/turf/floors.dmi'; icon_state = "diona"},/area/awaymission/zoo) -"tx" = (/obj/structure/flora/ausbushes/sunnybush,/mob/living/simple_animal/yithian{faction = "zoo"},/turf/simulated/floor/holofloor/wood{icon = 'icons/turf/floors.dmi'; icon_state = "diona"},/area/awaymission/zoo) +"tx" = (/obj/structure/flora/ausbushes/sunnybush,/mob/living/simple_mob/yithian{faction = "zoo"},/turf/simulated/floor/holofloor/wood{icon = 'icons/turf/floors.dmi'; icon_state = "diona"},/area/awaymission/zoo) "ty" = (/obj/structure/flora/tree/pine{icon_state = "pine_2"},/turf/simulated/floor/holofloor/snow,/area/awaymission/zoo) "tz" = (/obj/structure/flora/tree/pine{icon_state = "pine_3"},/turf/simulated/floor/holofloor/snow,/area/awaymission/zoo) -"tA" = (/mob/living/simple_animal/hostile/creature/vore{faction = "zoo"; name = "redspace abomination"},/turf/simulated/floor/cult,/area/awaymission/zoo) +"tA" = (/mob/living/simple_mob/hostile/creature/vore{faction = "zoo"; name = "redspace abomination"},/turf/simulated/floor/cult,/area/awaymission/zoo) "tB" = (/obj/structure/flora/ausbushes/fullgrass,/turf/simulated/floor/holofloor/desert,/area/awaymission/zoo) "tC" = (/obj/structure/flora/ausbushes/leafybush,/turf/simulated/floor/holofloor/wood{icon = 'icons/turf/floors.dmi'; icon_state = "diona"},/area/awaymission/zoo) "tD" = (/obj/effect/decal/remains/human,/turf/simulated/floor/cult,/area/awaymission/zoo) @@ -1020,39 +1020,39 @@ "tF" = (/obj/structure/flora/ausbushes/grassybush,/turf/simulated/floor/holofloor/wood{icon = 'icons/turf/floors.dmi'; icon_state = "diona"},/area/awaymission/zoo) "tG" = (/obj/structure/grille,/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 1},/obj/structure/sign/kiddieplaque{desc = "Decades ago, a group of rogue Skrellian scientists began illegal experimentation on Unathi colonists participating in a nuclear meltdown cleanup effort. In an attempt to create genetically engineered super soldiers, the Deathclaw was born with deadly sharp razor-like claws, incredible agility, robust durability, and high intelligence. When the Skrellian scientists were arrested by the authorities, the Deathclaw was to be destroyed, but some managed to escape captivity into the nuclear wasteland. Normally solitary creatures, they have been known to hunt in packs, and seem to have a preference for Human and Unathi meat."; name = "Deathclaw Exhibit"},/turf/simulated/floor/plating,/area/awaymission/zoo) "tH" = (/obj/structure/grille,/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 1},/obj/structure/sign/kiddieplaque{desc = "The Space Goose (pural: geese) is an aquatic fowl originating from the planet Earth. This breed of Geese however was bred to the clime of space ships and stations as guard animals. They are extremely loud, highly aggressive, and territorial, while their talons and beaks are much longer and sharper than Earth geese. Their aggressive nature makes them difficult to train, but are highly effective when deployed."; name = "Space Goose Exhibit"},/turf/simulated/floor/plating,/area/awaymission/zoo) -"tI" = (/obj/structure/grille,/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 1},/obj/structure/sign/kiddieplaque{desc = "The Grey Wolf, Scientific name Canis Lupus, is a species native to the Sol system and specifically the planet Earth. It is the largest extant member of its family, with males averaging 43–45 kg (95–99 lb), and females 36–38.5 kg (79–85 lb). Like the red wolf, it is distinguished from other Canis species by its larger size and less pointed features, particularly on the ears and muzzle. Its winter fur is long and bushy, and predominantly a mottled gray in color, although nearly pure white, red, or brown to black also occur. It is also know by the name Timber Wolf. The gray wolf is the second most specialised member of the genus Canis, as demonstrated by its morphological adaptations to hunting large prey, its more gregarious nature, and its highly advanced expressive behavior. It is nonetheless closely related enough to smaller Canis species, such as the Sol Coyote or Golden Jackal to produce fertile hybrids. It is the only species of Canis to have a range encompassing both the Old and New planets, due to being popular as a traveling companion, an easier to tame circus attraction compared to tigers, and its valuable use in ridding polar worlds of large predators. It was also spread through some worlds to deal with Cloud Fox infestations. While normally indifferent to foxes aside from hunting territories, the Grey Wolf has shown great hostility to a special strain of Fox mutation found on the planet Andorss called the Cloud Fox. Bafflingly, these creatures share nothing in common that should lead them to be enemies, as the Grey Wolf is a predator and lives in snowy areas, whereas the Cloud Fox is an herbivore, largely found in Corn rich areas. Scientists have yet to explain this, although several other animals have also been shown to show hostility towards Cloud Foxes, namely the Macromeleon and Carousel Panther, both of whom get along well with Grey Wolves."; name = "Gray Wolf Exhibit"},/turf/simulated/floor/plating,/area/awaymission/zoo) +"tI" = (/obj/structure/grille,/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 1},/obj/structure/sign/kiddieplaque{desc = "The Grey Wolf, Scientific name Canis Lupus, is a species native to the Sol system and specifically the planet Earth. It is the largest extant member of its family, with males averaging 43�45 kg (95�99 lb), and females 36�38.5 kg (79�85 lb). Like the red wolf, it is distinguished from other Canis species by its larger size and less pointed features, particularly on the ears and muzzle. Its winter fur is long and bushy, and predominantly a mottled gray in color, although nearly pure white, red, or brown to black also occur. It is also know by the name Timber Wolf. The gray wolf is the second most specialised member of the genus Canis, as demonstrated by its morphological adaptations to hunting large prey, its more gregarious nature, and its highly advanced expressive behavior. It is nonetheless closely related enough to smaller Canis species, such as the Sol Coyote or Golden Jackal to produce fertile hybrids. It is the only species of Canis to have a range encompassing both the Old and New planets, due to being popular as a traveling companion, an easier to tame circus attraction compared to tigers, and its valuable use in ridding polar worlds of large predators. It was also spread through some worlds to deal with Cloud Fox infestations. While normally indifferent to foxes aside from hunting territories, the Grey Wolf has shown great hostility to a special strain of Fox mutation found on the planet Andorss called the Cloud Fox. Bafflingly, these creatures share nothing in common that should lead them to be enemies, as the Grey Wolf is a predator and lives in snowy areas, whereas the Cloud Fox is an herbivore, largely found in Corn rich areas. Scientists have yet to explain this, although several other animals have also been shown to show hostility towards Cloud Foxes, namely the Macromeleon and Carousel Panther, both of whom get along well with Grey Wolves."; name = "Gray Wolf Exhibit"},/turf/simulated/floor/plating,/area/awaymission/zoo) "tJ" = (/obj/structure/grille,/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 1},/obj/structure/sign/kiddieplaque{desc = "While all the species of these large predators are commonly known as Dragons (Draconius Regalis), this is mainly an umbrella term for a number of varieties of these large, reptilian creatures. There are numerous varieties of dragons found throughout the galaxy, and recounts of these creatures can be traced back to Skrell civilization's first interplanetary travels speaking of a large, unknown creature attacking and devouring the closeby cargo ships. Mainly solitary creatures, the Dragons roam large areas of space, capable of adapting to a large variety of atmospheres thanks to each sub-species natural affinity to various elements. While in today's population there are a numerous subspecies, all of these can be traced back to what archaeologists claimed to be a 'phoron' Dragon, by the biological analysis of the fossils found on asteroids in the Virgo-Erigone system. The creatures displayed here were reconstituted from such fossils, generously donated by the Virgo Orbital Research Establishment."; name = "Phoron Dragon Exhibit"},/turf/simulated/floor/plating,/area/awaymission/zoo) "tK" = (/obj/structure/flora/ausbushes/sparsegrass,/turf/simulated/floor/holofloor/desert,/area/awaymission/zoo) "tL" = (/obj/effect/floor_decal/asteroid,/obj/effect/decal/cleanable/greenglow,/turf/simulated/floor/holofloor/desert,/area/awaymission/zoo) "tM" = (/obj/effect/gibspawner/human,/turf/simulated/floor/holofloor/grass,/area/awaymission/zoo) "tN" = (/obj/machinery/portable_atmospherics/hydroponics/soil,/turf/simulated/floor/holofloor/grass,/area/awaymission/zoo) -"tO" = (/obj/effect/floor_decal/asteroid,/mob/living/simple_animal/hostile/dino{faction = "zoo"},/turf/simulated/floor/holofloor/desert,/area/awaymission/zoo) +"tO" = (/obj/effect/floor_decal/asteroid,/mob/living/simple_mob/hostile/dino{faction = "zoo"},/turf/simulated/floor/holofloor/desert,/area/awaymission/zoo) "tP" = (/obj/effect/decal/cleanable/greenglow,/turf/simulated/floor/holofloor/desert,/area/awaymission/zoo) "tQ" = (/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 8},/obj/structure/grille,/obj/structure/sign/kiddieplaque{desc = "Decades ago, a group of rogue Skrellian scientists began illegal experimentation on Unathi colonists participating in a nuclear meltdown cleanup effort. In an attempt to create genetically engineered super soldiers, the Deathclaw was born with deadly sharp razor-like claws, incredible agility, robust durability, and high intelligence. When the Skrellian scientists were arrested by the authorities, the Deathclaw was to be destroyed, but some managed to escape captivity into the nuclear wasteland. Normally solitary creatures, they have been known to hunt in packs, and seem to have a preference for Human and Unathi meat."; name = "Deathclaw Exhibit"},/turf/simulated/floor/plating,/area/awaymission/zoo) "tR" = (/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 8},/obj/structure/grille,/obj/structure/sign/kiddieplaque{desc = "The Space Goose (pural: geese) is an aquatic fowl originating from the planet Earth. This breed of Geese however was bred to the clime of space ships and stations as guard animals. They are extremely loud, highly aggressive, and territorial, while their talons and beaks are much longer and sharper than Earth geese. Their aggressive nature makes them difficult to train, but are highly effective when deployed."; name = "Space Goose Exhibit"},/turf/simulated/floor/plating,/area/awaymission/zoo) -"tS" = (/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 8},/obj/structure/grille,/obj/structure/sign/kiddieplaque{desc = "The Grey Wolf, Scientific name Canis Lupus, is a species native to the Sol system and specifically the planet Earth. It is the largest extant member of its family, with males averaging 43–45 kg (95–99 lb), and females 36–38.5 kg (79–85 lb). Like the red wolf, it is distinguished from other Canis species by its larger size and less pointed features, particularly on the ears and muzzle. Its winter fur is long and bushy, and predominantly a mottled gray in color, although nearly pure white, red, or brown to black also occur. It is also know by the name Timber Wolf. The gray wolf is the second most specialised member of the genus Canis, as demonstrated by its morphological adaptations to hunting large prey, its more gregarious nature, and its highly advanced expressive behavior. It is nonetheless closely related enough to smaller Canis species, such as the Sol Coyote or Golden Jackal to produce fertile hybrids. It is the only species of Canis to have a range encompassing both the Old and New planets, due to being popular as a traveling companion, an easier to tame circus attraction compared to tigers, and its valuable use in ridding polar worlds of large predators. It was also spread through some worlds to deal with Cloud Fox infestations. While normally indifferent to foxes aside from hunting territories, the Grey Wolf has shown great hostility to a special strain of Fox mutation found on the planet Andorss called the Cloud Fox. Bafflingly, these creatures share nothing in common that should lead them to be enemies, as the Grey Wolf is a predator and lives in snowy areas, whereas the Cloud Fox is an herbivore, largely found in Corn rich areas. Scientists have yet to explain this, although several other animals have also been shown to show hostility towards Cloud Foxes, namely the Macromeleon and Carousel Panther, both of whom get along well with Grey Wolves."; name = "Gray Wolf Exhibit"},/turf/simulated/floor/plating,/area/awaymission/zoo) +"tS" = (/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 8},/obj/structure/grille,/obj/structure/sign/kiddieplaque{desc = "The Grey Wolf, Scientific name Canis Lupus, is a species native to the Sol system and specifically the planet Earth. It is the largest extant member of its family, with males averaging 43�45 kg (95�99 lb), and females 36�38.5 kg (79�85 lb). Like the red wolf, it is distinguished from other Canis species by its larger size and less pointed features, particularly on the ears and muzzle. Its winter fur is long and bushy, and predominantly a mottled gray in color, although nearly pure white, red, or brown to black also occur. It is also know by the name Timber Wolf. The gray wolf is the second most specialised member of the genus Canis, as demonstrated by its morphological adaptations to hunting large prey, its more gregarious nature, and its highly advanced expressive behavior. It is nonetheless closely related enough to smaller Canis species, such as the Sol Coyote or Golden Jackal to produce fertile hybrids. It is the only species of Canis to have a range encompassing both the Old and New planets, due to being popular as a traveling companion, an easier to tame circus attraction compared to tigers, and its valuable use in ridding polar worlds of large predators. It was also spread through some worlds to deal with Cloud Fox infestations. While normally indifferent to foxes aside from hunting territories, the Grey Wolf has shown great hostility to a special strain of Fox mutation found on the planet Andorss called the Cloud Fox. Bafflingly, these creatures share nothing in common that should lead them to be enemies, as the Grey Wolf is a predator and lives in snowy areas, whereas the Cloud Fox is an herbivore, largely found in Corn rich areas. Scientists have yet to explain this, although several other animals have also been shown to show hostility towards Cloud Foxes, namely the Macromeleon and Carousel Panther, both of whom get along well with Grey Wolves."; name = "Gray Wolf Exhibit"},/turf/simulated/floor/plating,/area/awaymission/zoo) "tT" = (/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 8},/obj/structure/grille,/obj/structure/sign/kiddieplaque{desc = "While all the species of these large predators are commonly known as Dragons (Draconius Regalis), this is mainly an umbrella term for a number of varieties of these large, reptilian creatures. There are numerous varieties of dragons found throughout the galaxy, and recounts of these creatures can be traced back to Skrell civilization's first interplanetary travels speaking of a large, unknown creature attacking and devouring the closeby cargo ships. Mainly solitary creatures, the Dragons roam large areas of space, capable of adapting to a large variety of atmospheres thanks to each sub-species natural affinity to various elements. While in today's population there are a numerous subspecies, all of these can be traced back to what archaeologists claimed to be a 'phoron' Dragon, by the biological analysis of the fossils found on asteroids in the Virgo-Erigone system. The creatures displayed here were reconstituted from such fossils, generously donated by the Virgo Orbital Research Establishment."; name = "Phoron Dragon Exhibit"},/turf/simulated/floor/plating,/area/awaymission/zoo) "tU" = (/obj/effect/decal/remains/human,/turf/simulated/floor/holofloor/desert{icon = 'icons/turf/floors.dmi'; icon_state = "asteroidplating"; name = "scorched sand"},/area/awaymission/zoo) -"tV" = (/mob/living/simple_animal/adultslime{faction = "zoo"},/turf/simulated/floor/holofloor/desert,/area/awaymission/zoo) +"tV" = (/mob/living/simple_mob/adultslime{faction = "zoo"},/turf/simulated/floor/holofloor/desert,/area/awaymission/zoo) "tW" = (/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 8},/obj/structure/grille,/turf/simulated/floor/holofloor/desert,/area/awaymission/zoo) -"tX" = (/mob/living/simple_animal/hostile/dragon{faction = "zoo"},/turf/simulated/floor/holofloor/desert{icon = 'icons/turf/floors.dmi'; icon_state = "asteroidplating"; name = "scorched sand"},/area/awaymission/zoo) -"tY" = (/mob/living/simple_animal/lizard{faction = "zoo"},/turf/simulated/floor/holofloor/desert,/area/awaymission/zoo) -"tZ" = (/mob/living/simple_animal/hostile/tomato{faction = "zoo"},/turf/simulated/floor/holofloor/grass,/area/awaymission/zoo) -"ua" = (/mob/living/simple_animal/fox{faction = "zoo"},/turf/simulated/floor/holofloor/snow,/area/awaymission/zoo) +"tX" = (/mob/living/simple_mob/hostile/dragon{faction = "zoo"},/turf/simulated/floor/holofloor/desert{icon = 'icons/turf/floors.dmi'; icon_state = "asteroidplating"; name = "scorched sand"},/area/awaymission/zoo) +"tY" = (/mob/living/simple_mob/lizard{faction = "zoo"},/turf/simulated/floor/holofloor/desert,/area/awaymission/zoo) +"tZ" = (/mob/living/simple_mob/hostile/tomato{faction = "zoo"},/turf/simulated/floor/holofloor/grass,/area/awaymission/zoo) +"ua" = (/mob/living/simple_mob/fox{faction = "zoo"},/turf/simulated/floor/holofloor/snow,/area/awaymission/zoo) "ub" = (/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 8},/obj/structure/grille,/obj/structure/sign/kiddieplaque{desc = "The Voracious Lizard is a relatively new species, muted from the common space lizard by exposure to Phoron. These creatures are found commonly in and around facilities where phoron is mined, refined, or stored. They have been known to attack other creatures in groups, and are able to unhinge their jaws to swallow Human-sized prey whole. The species was first discovered in the Virgo-Erigone system, and have since become a dangerous pest."; name = "Voracious Lizard Exhibit"},/turf/simulated/floor/plating,/area/awaymission/zoo) -"uc" = (/obj/effect/floor_decal/asteroid,/mob/living/simple_animal/hostile/deathclaw{faction = "zoo"},/turf/simulated/floor/holofloor/desert,/area/awaymission/zoo) +"uc" = (/obj/effect/floor_decal/asteroid,/mob/living/simple_mob/hostile/deathclaw{faction = "zoo"},/turf/simulated/floor/holofloor/desert,/area/awaymission/zoo) "ud" = (/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 8},/obj/structure/grille,/obj/structure/sign/kiddieplaque{desc = "Common Space Lizard (Pordacis Stellae Vulgaris) is a common critter amongst space stations. Their origin traces back to genetically modified wall lizards to survive the hazardous conditions of space, this hardy animal is surprisingly tough and able to rapidly regenerate dead cells from radiation exposure and is virtually immune against cancerous growths. Its diet is varied, as it eats what it gets, from discarded junk food to mice and small spiders."; name = "Lizard Exhibit"},/turf/simulated/floor/plating,/area/awaymission/zoo) -"ue" = (/mob/living/simple_animal/hostile/goose{faction = "zoo"},/turf/simulated/floor/beach/water,/area/awaymission/zoo) +"ue" = (/mob/living/simple_mob/hostile/goose{faction = "zoo"},/turf/simulated/floor/beach/water,/area/awaymission/zoo) "uf" = (/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 8},/obj/structure/grille,/obj/structure/sign/kiddieplaque{desc = "Originally a cult movie monster, a team of geneticists eventually turned the Animate Tomato from fiction to reality. While not harmful in any way, some people consider its grin to be disturbing. It reproduces in the same manner as plants, coming off of the vine when harvested or when it gets ripe enough, afterwards wandering about on its own."; name = "Animate Tomato Exhibit"},/turf/simulated/floor/plating,/area/awaymission/zoo) "ug" = (/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 8},/obj/structure/grille,/obj/structure/sign/kiddieplaque{desc = "Foxes are small-to-medium-sized, omnivorous mammals belonging to several genera of the family Canidae. Foxes are slightly smaller than a medium-size domestic dog, with a flattened skull, upright triangular ears, a pointed, slightly upturned snout, and a long bushy tail (or brush). These foxes are Red Foxes, largest of the true foxes, has the greatest geographic range of all members of the Carnivora family, originally spanning across the entire Northern Hemisphere of Earth from the Arctic Circle to North Africa, North America and Eurasia, and has grown to be found on many forest and garden planets across the galaxy."; name = "Fox Exhibit"},/turf/simulated/floor/plating,/area/awaymission/zoo) "uh" = (/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 8},/obj/structure/grille,/obj/structure/sign/kiddieplaque{desc = "A mouse (plural: mice), native to Earth in the Sol system, is a small rodent characteristically having a pointed snout, small rounded ears, a body-length scaly tail and a high breeding rate. The best known mouse species is the common house mouse (Mus musculus). It is also a popular pet. In some places, certain kinds of field mice are locally common. They are known to invade homes and space ships for food and shelter. Cats, wild dogs, foxes, birds of prey, snakes and even certain kinds of arthropods have been known to prey heavily upon mice. Nevertheless, because of its remarkable adaptability to almost any environment, the mouse is one of the most successful mammalian genera living in the galaxy today."; name = "Slime Exhibit"},/turf/simulated/floor/plating,/area/awaymission/zoo) -"ui" = (/mob/living/simple_animal/hostile/deathclaw{faction = "zoo"},/turf/simulated/floor/holofloor/desert,/area/awaymission/zoo) -"uj" = (/mob/living/simple_animal/slime{faction = "zoo"},/turf/simulated/floor/holofloor/desert,/area/awaymission/zoo) -"uk" = (/obj/structure/flora/ausbushes/sparsegrass,/mob/living/simple_animal/hostile/dino{faction = "zoo"},/turf/simulated/floor/holofloor/desert,/area/awaymission/zoo) -"ul" = (/obj/effect/floor_decal/asteroid,/mob/living/simple_animal/lizard{faction = "zoo"},/turf/simulated/floor/holofloor/desert,/area/awaymission/zoo) -"um" = (/obj/effect/landmark/away,/mob/living/simple_animal/hostile/goose{faction = "zoo"},/turf/simulated/floor/wood,/area/awaymission/zoo) -"un" = (/mob/living/simple_animal/hostile/wolf{faction = "zoo"},/turf/simulated/floor/holofloor/snow,/area/awaymission/zoo) -"uo" = (/mob/living/simple_animal/hostile/goose{faction = "zoo"},/turf/simulated/floor/wood,/area/awaymission/zoo) +"ui" = (/mob/living/simple_mob/hostile/deathclaw{faction = "zoo"},/turf/simulated/floor/holofloor/desert,/area/awaymission/zoo) +"uj" = (/mob/living/simple_mob/slime{faction = "zoo"},/turf/simulated/floor/holofloor/desert,/area/awaymission/zoo) +"uk" = (/obj/structure/flora/ausbushes/sparsegrass,/mob/living/simple_mob/hostile/dino{faction = "zoo"},/turf/simulated/floor/holofloor/desert,/area/awaymission/zoo) +"ul" = (/obj/effect/floor_decal/asteroid,/mob/living/simple_mob/lizard{faction = "zoo"},/turf/simulated/floor/holofloor/desert,/area/awaymission/zoo) +"um" = (/obj/effect/landmark/away,/mob/living/simple_mob/hostile/goose{faction = "zoo"},/turf/simulated/floor/wood,/area/awaymission/zoo) +"un" = (/mob/living/simple_mob/hostile/wolf{faction = "zoo"},/turf/simulated/floor/holofloor/snow,/area/awaymission/zoo) +"uo" = (/mob/living/simple_mob/hostile/goose{faction = "zoo"},/turf/simulated/floor/wood,/area/awaymission/zoo) "up" = (/obj/structure/symbol/sa,/turf/simulated/wall,/area/awaymission/zoo) "uq" = (/obj/structure/grille,/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 1},/obj/structure/sign/kiddieplaque{desc = "Saru (also incorrectly known as Sergalings) are the smaller, unevolved, far more docile cousins of the Sergals, and are usually thought of as either pests, food, or pets. They are a commodity that the Sergal use in their trades with other species due to their cute appearance and quick breeding. Contrary to popular belief, they are not sergal pups, despite their similar appearance. Note the distinctly stubbier noses, compared to true sergal pups. Unfortunately, the mistake has been made more than once, even by other sergals, wherein actual young sergals have been mistakenly sold to traders with tragic consequences... for the traders. The Saru are, like the Sergals, native to the planet Eltus, in the Vilous system. However, they are also found on the planet Tal in the same system."; name = "Saru Exhibit"},/turf/simulated/floor/plating,/area/awaymission/zoo) "ur" = (/obj/structure/grille,/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 1},/obj/structure/sign/kiddieplaque{desc = "The brown bear (Ursus arctos) is a large bear with the widest distribution of any living ursid. The species is distributed across much of northern Eurasia and North America, on planet Earth. It is one of the two largest terrestrial carnivorans alive today, rivaled in body size only by its close cousin, the polar bear (Ursus maritimus), which is much less variable in size and averages larger due to this. There are several recognized subspecies, many of which are quite well-known within their native ranges, found in the brown bear species."; name = "Brown Bear Exhibit"},/turf/simulated/floor/plating,/area/awaymission/zoo) @@ -1064,12 +1064,12 @@ "ux" = (/obj/structure/sink/puddle,/turf/simulated/floor/holofloor/beach/sand{icon_state = "fullgrass0"},/area/awaymission/zoo) "uy" = (/obj/effect/floor_decal/asteroid,/turf/simulated/floor/holofloor/beach/sand{icon_state = "dgrass2"},/area/awaymission/zoo) "uz" = (/obj/effect/floor_decal/asteroid,/mob/living/carbon/human/sergallingm{faction = "zoo"},/turf/simulated/floor/holofloor/beach/sand{icon_state = "dgrass2"},/area/awaymission/zoo) -"uA" = (/mob/living/simple_animal/hostile/bear/brown{faction = "zoo"},/turf/simulated/floor/holofloor/grass,/area/awaymission/zoo) +"uA" = (/mob/living/simple_mob/hostile/bear/brown{faction = "zoo"},/turf/simulated/floor/holofloor/grass,/area/awaymission/zoo) "uB" = (/obj/effect/floor_decal/asteroid,/turf/simulated/floor/holofloor/beach/sand{icon_state = "dgrass1"},/area/awaymission/zoo) "uC" = (/mob/living/carbon/human/sergallingm{faction = "zoo"},/turf/simulated/floor/holofloor/beach/sand{icon_state = "dgrass4"},/area/awaymission/zoo) "uD" = (/obj/effect/floor_decal/asteroid,/turf/simulated/floor/holofloor/beach/sand{icon_state = "fullgrass3"},/area/awaymission/zoo) "uE" = (/obj/effect/floor_decal/asteroid,/turf/simulated/floor/holofloor/beach/sand{icon_state = "fullgrass1"},/area/awaymission/zoo) -"uF" = (/mob/living/simple_animal/corgi/tamaskan{faction = "zoo"},/turf/simulated/floor/holofloor/snow,/area/awaymission/zoo) +"uF" = (/mob/living/simple_mob/corgi/tamaskan{faction = "zoo"},/turf/simulated/floor/holofloor/snow,/area/awaymission/zoo) "uG" = (/obj/item/stack/tile/grass,/turf/simulated/floor/plating,/area/awaymission/zoo) "uH" = (/obj/item/stack/tile/grass,/turf/simulated/floor/holofloor/grass,/area/awaymission/zoo) "uI" = (/obj/effect/floor_decal/asteroid,/turf/simulated/floor/holofloor/beach/sand{icon_state = "fullgrass0"},/area/awaymission/zoo) @@ -1077,7 +1077,7 @@ "uK" = (/obj/effect/floor_decal/asteroid,/turf/simulated/floor/holofloor/beach/sand{icon_state = "dgrass3"},/area/awaymission/zoo) "uL" = (/mob/living/carbon/human/sergallingm{faction = "zoo"},/turf/simulated/floor/holofloor/beach/sand{icon_state = "fullgrass1"},/area/awaymission/zoo) "uM" = (/mob/living/carbon/human/sergallingm{faction = "zoo"},/turf/simulated/floor/holofloor/beach/sand{icon_state = "dgrass2"},/area/awaymission/zoo) -"uN" = (/obj/structure/flora/ausbushes/genericbush,/mob/living/simple_animal/hostile/bear/brown{faction = "zoo"},/turf/simulated/floor/holofloor/grass,/area/awaymission/zoo) +"uN" = (/obj/structure/flora/ausbushes/genericbush,/mob/living/simple_mob/hostile/bear/brown{faction = "zoo"},/turf/simulated/floor/holofloor/grass,/area/awaymission/zoo) "uO" = (/obj/structure/grille,/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 1},/obj/structure/sign/kiddieplaque{desc = "The Sol-system native Panther, found primarily on the Sol-system planet Earth, is a large mammal belonging to the Felidae family. Found in a variety of environment, like most big cats the Panther inhabits a large number of habitats and is a carnivorous, nocturnal predator. Of particular note are the various patterns of their fur - the most known one, especially thanks to Sol popular culture (books, sequential art and movies) is the black panther, a species that displays a fur pattern completely black at a first glance, but other species can display a much wider variety of patterns, another one of the most common being a beige color with large, black spots. These patterns were mainly evolved as a mean to conceal itself in the surrounding environment, to ambush an unsuspecting prey."; name = "Panther Exhibit"},/turf/simulated/floor/plating,/area/awaymission/zoo) "uP" = (/obj/structure/grille,/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 1},/obj/structure/sign/kiddieplaque{desc = "Shantak are a pack-hunting carnivore native to Meralar. Using loud barks and growls, similar to that of wolves, the shantak is able to communicate verbally with its hunting partners in order to coordinate attacks. The largest female of the group is usually in charge, and is considered to be the alpha of the pack."; name = "Shantak Exhibit"},/turf/simulated/floor/plating,/area/awaymission/zoo) "uQ" = (/obj/structure/grille,/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 1},/obj/structure/sign/kiddieplaque{desc = "Space Pike are a larger, more territorial cousin of the famous Space Carp whose origins can also be traced to the Erebus system. Like the Space Carp, their DNA is infused with Phoron. However, the Space Pike were hunted nearly to extinction for their vibrant purple scales. They were declared a critically endangered species in 2556, but that status has been lifted recently due to a substantial bounce back in numbers. They are now only considered a vulnerable species. Space Pike feed on space slugs, space worms, sometimes space carp, and the occasional space man. The space bear is considered its mortal enemy."; name = "Space Pike Exhibit"},/turf/simulated/floor/plating,/area/awaymission/zoo) @@ -1089,25 +1089,25 @@ "uW" = (/turf/simulated/floor/holofloor/beach/water{icon_state = "beach"; dir = 8},/area/awaymission/zoo) "uX" = (/obj/effect/overlay/palmtree_l,/obj/effect/overlay/coconut,/turf/simulated/floor/holofloor/beach/sand,/area/awaymission/zoo) "uY" = (/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 8},/obj/structure/grille,/obj/structure/sign/kiddieplaque{desc = "Shantak are a pack-hunting carnivore native to Meralar. Using loud barks and growls, similar to that of wolves, the shantak is able to communicate verbally with its hunting partners in order to coordinate attacks. The largest female of the group is usually in charge, and is considered to be the alpha of the pack."; name = "Shantak Exhibit"},/turf/simulated/floor/plating,/area/awaymission/zoo) -"uZ" = (/mob/living/simple_animal/hostile/carp/pike{faction = "zoo"},/turf/simulated/floor/holofloor/desert,/area/awaymission/zoo) +"uZ" = (/mob/living/simple_mob/hostile/carp/pike{faction = "zoo"},/turf/simulated/floor/holofloor/desert,/area/awaymission/zoo) "va" = (/obj/structure/flora/ausbushes/fernybush,/mob/living/carbon/human/monkey{faction = "zoo"},/turf/simulated/floor/holofloor/beach/sand{icon_state = "fullgrass1"},/area/awaymission/zoo) "vb" = (/obj/effect/overlay/coconut,/turf/simulated/floor/holofloor/grass{icon = 'icons/jungle.dmi'; icon_state = "grass2"},/area/awaymission/zoo) "vc" = (/obj/structure/flora/ausbushes/sunnybush,/turf/simulated/floor/holofloor/grass{icon = 'icons/jungle.dmi'; icon_state = "grass2"},/area/awaymission/zoo) -"vd" = (/mob/living/simple_animal/crab{faction = "zoo"},/turf/simulated/floor/holofloor/beach/sand,/area/awaymission/zoo) +"vd" = (/mob/living/simple_mob/crab{faction = "zoo"},/turf/simulated/floor/holofloor/beach/sand,/area/awaymission/zoo) "ve" = (/mob/living/carbon/human/monkey{faction = "zoo"},/turf/simulated/floor/holofloor/beach/sand{icon_state = "fullgrass3"},/area/awaymission/zoo) -"vf" = (/mob/living/simple_animal/hostile/panther{faction = "zoo"},/turf/simulated/floor/holofloor/grass{icon = 'icons/jungle.dmi'; icon_state = "grass2"},/area/awaymission/zoo) +"vf" = (/mob/living/simple_mob/hostile/panther{faction = "zoo"},/turf/simulated/floor/holofloor/grass{icon = 'icons/jungle.dmi'; icon_state = "grass2"},/area/awaymission/zoo) "vg" = (/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 8},/obj/structure/grille,/obj/structure/sign/kiddieplaque{desc = "A species incredibly similar to Humans. The monkey is a resident of Earth, the home planet of Humanity, and shares many traits with Humans, such as opposable thumbs, and a love of flinging fecal matter at each other. Monkeys are valued for their dancing ability, and thanks to the recent boom of monkey dance classes, the dancing monkey industry is growing. Monkeys are also commonly used in scientific research that requires testing on products meant to be used by Humans. In fact, some of the first creatures to leave Earth's atmosphere in the infancy of Humanity's space age were dogs and monkeys!"; name = "Monkey Exhibit"},/turf/simulated/floor/plating,/area/awaymission/zoo) "vh" = (/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 8},/obj/structure/grille,/obj/structure/sign/kiddieplaque{desc = "Crabs are decapod crustaceans of the infraorder Brachyura, which live in all the oceans on the planet Earth, in some fresh water, and even a few species which thrive on land. They are generally covered with a thick exoskeleton and have a single pair of claws. They are often kept as pets or eaten for food by Humans. Many other animals with similar names, such as king crabs, hermit crabs, porcelain crabs, horseshoe crabs, and crab lice, are not true crabs."; name = "Crab Exhibit"},/turf/simulated/floor/plating,/area/awaymission/zoo) "vi" = (/obj/effect/landmark/away,/turf/simulated/floor/holofloor/desert,/area/awaymission/zoo) "vj" = (/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 8},/obj/structure/grille,/obj/structure/sign/kiddieplaque{desc = "This is not an empty exhibit. Note the pine tree in the center of the pen. This is the infamous Killer Pine Tree. Thought to be a relative of the mimic, the Killer Tree is, much like its cousins, an ambush predator. However, like the mimic, it is not known where this species is from, how it reproduces, or how it has found its way across the galaxy into new biomes."; name = "Killer Tree Exhibit"},/turf/simulated/floor/plating,/area/awaymission/zoo) "vk" = (/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 8},/obj/structure/grille,/obj/structure/sign/kiddieplaque{desc = "Space Pike are a larger, more territorial cousin of the famous Space Carp whose origins can also be traced to the Erebus system. Like the Space Carp, their DNA is infused with Phoron. However, the Space Pike were hunted nearly to extinction for their vibrant purple scales. They were declared a critically endangered species in 2556, but that status has been lifted recently due to a substantial bounce back in numbers. They are now only considered a vulnerable species. Space Pike feed on space slugs, space worms, sometimes space carp, and the occasional space man. The space bear is considered its mortal enemy."; name = "Space Pike Exhibit"},/turf/simulated/floor/plating,/area/awaymission/zoo) -"vl" = (/mob/living/simple_animal/crab{faction = "zoo"; icon_dead = "evilcrab_dead"; icon_living = "evilcrab"; icon_state = "evilcrab"},/turf/simulated/floor/holofloor/beach/water,/area/awaymission/zoo) +"vl" = (/mob/living/simple_mob/crab{faction = "zoo"; icon_dead = "evilcrab_dead"; icon_living = "evilcrab"; icon_state = "evilcrab"},/turf/simulated/floor/holofloor/beach/water,/area/awaymission/zoo) "vm" = (/obj/item/stack/tile/grass,/obj/item/stack/tile/grass,/obj/item/stack/tile/grass,/obj/item/stack/tile/grass,/turf/simulated/floor/plating,/area/awaymission/zoo) -"vn" = (/mob/living/simple_animal/hostile/shantak{faction = "zoo"},/turf/simulated/floor/holofloor/snow,/area/awaymission/zoo) +"vn" = (/mob/living/simple_mob/hostile/shantak{faction = "zoo"},/turf/simulated/floor/holofloor/snow,/area/awaymission/zoo) "vo" = (/mob/living/carbon/human/monkey{faction = "zoo"},/turf/simulated/floor/holofloor/beach/sand{icon_state = "dgrass2"},/area/awaymission/zoo) -"vp" = (/mob/living/simple_animal/hostile/shantak{color = ""; faction = "zoo"; health = 100; maxHealth = 100; name = "alpha shantak"},/turf/simulated/floor/holofloor/snow,/area/awaymission/zoo) -"vq" = (/mob/living/simple_animal/hostile/tree{faction = "zoo"},/turf/simulated/floor/holofloor/snow,/area/awaymission/zoo) -"vr" = (/obj/structure/flora/bush,/mob/living/simple_animal/hostile/shantak{faction = "zoo"},/turf/simulated/floor/holofloor/snow,/area/awaymission/zoo) +"vp" = (/mob/living/simple_mob/hostile/shantak{color = ""; faction = "zoo"; health = 100; maxHealth = 100; name = "alpha shantak"},/turf/simulated/floor/holofloor/snow,/area/awaymission/zoo) +"vq" = (/mob/living/simple_mob/hostile/tree{faction = "zoo"},/turf/simulated/floor/holofloor/snow,/area/awaymission/zoo) +"vr" = (/obj/structure/flora/bush,/mob/living/simple_mob/hostile/shantak{faction = "zoo"},/turf/simulated/floor/holofloor/snow,/area/awaymission/zoo) "vs" = (/mob/living/carbon/human/monkey{faction = "zoo"},/turf/simulated/floor/holofloor/beach/sand{icon_state = "dgrass0"},/area/awaymission/zoo) "vt" = (/obj/structure/flora/ausbushes/lavendergrass,/mob/living/carbon/human/monkey{faction = "zoo"},/turf/simulated/floor/holofloor/beach/sand{icon_state = "fullgrass1"},/area/awaymission/zoo) "vu" = (/obj/item/stack/tile/grass,/obj/item/stack/tile/grass,/obj/item/stack/tile/grass,/turf/simulated/floor/plating,/area/awaymission/zoo) @@ -1115,7 +1115,7 @@ "vw" = (/obj/effect/landmark/loot_spawn,/turf/simulated/floor/plating,/area/awaymission/zoo) "vx" = (/obj/item/stack/tile/grass/fifty,/turf/simulated/floor/plating,/area/awaymission/zoo) "vy" = (/obj/structure/grille,/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 1},/obj/structure/sign/kiddieplaque{desc = "The polar bear (Ursus maritimus) is a carnivorous bear whose native range once lay largely within the Arctic Circle on Earth, encompassing the Arctic Ocean, its surrounding seas, and surrounding land masses. Although it is the sister species of the brown bear, it has evolved to occupy a narrower ecological niche, with many body characteristics adapted for cold temperatures, for moving across snow, ice, and open water, and for hunting seals, which made up most of its original diet. Although most polar bears are born on land, they spent most of their time on the sea ice. Their scientific name means 'maritime bear', and derives from this fact. Polar bears hunted their preferred food of seals from the edge of sea ice, often living off fat reserves when no sea ice is present. Because of their dependence on the sea ice, polar bears are classified as marine mammals. However, because of habitat loss caused by climate change, the polar bear had gone completely extinct on Earth. The return of the polar bear is thanks to the preservation of genetic records written in the 21st century, which were later used by Space Russians to create a wildlife reserve on the planet Europa in 2492. This has generally been regarded as a poor decision."; name = "Polar Bear Exhibit"},/turf/simulated/floor/plating,/area/awaymission/zoo) -"vz" = (/mob/living/simple_animal/hostile/bear/polar{faction = "zoo"},/turf/simulated/floor/beach/water,/area/awaymission/zoo) +"vz" = (/mob/living/simple_mob/hostile/bear/polar{faction = "zoo"},/turf/simulated/floor/beach/water,/area/awaymission/zoo) "vA" = (/obj/effect/landmark/away,/turf/simulated/floor/grass,/area/awaymission/zoo) "vB" = (/obj/effect/blocker,/turf/simulated/wall/r_wall,/area/awaymission/zoo) "vC" = (/obj/effect/blocker,/obj/structure/sign/securearea,/turf/simulated/wall/r_wall,/area/awaymission/zoo) @@ -1184,7 +1184,7 @@ "wN" = (/obj/effect/decal/cleanable/dirt,/obj/machinery/floodlight,/obj/effect/floor_decal/industrial/outline/yellow,/turf/simulated/floor,/area/awaymission/zoo) "wO" = (/obj/effect/decal/cleanable/dirt,/obj/machinery/power/emitter,/obj/effect/floor_decal/industrial/outline/yellow,/turf/simulated/floor,/area/awaymission/zoo) "wP" = (/obj/machinery/power/port_gen/pacman{anchored = 1},/obj/effect/floor_decal/industrial/outline/yellow,/turf/simulated/floor/plating,/area/awaymission/zoo) -"wQ" = (/obj/effect/floor_decal/industrial/outline/yellow,/obj/item/clothing/under/rank/engineer/skirt,/mob/living/simple_animal/hostile/mimic/crate,/turf/simulated/floor/plating,/area/awaymission/zoo) +"wQ" = (/obj/effect/floor_decal/industrial/outline/yellow,/obj/item/clothing/under/rank/engineer/skirt,/mob/living/simple_mob/hostile/mimic/crate,/turf/simulated/floor/plating,/area/awaymission/zoo) "wR" = (/obj/machinery/portable_atmospherics/canister/nitrogen,/obj/effect/floor_decal/industrial/outline/yellow,/turf/simulated/floor,/area/awaymission/zoo) "wS" = (/obj/effect/floor_decal/industrial/outline/yellow,/turf/simulated/floor/plating,/area/awaymission/zoo) "wT" = (/obj/effect/floor_decal/industrial/outline/yellow,/obj/effect/landmark/loot_spawn,/obj/structure/symbol/da{pixel_x = -32},/turf/simulated/floor/plating,/area/awaymission/zoo) diff --git a/maps/northern_star/polaris-1.dmm b/maps/northern_star/polaris-1.dmm index 64bfd11f0b..872cf7277f 100644 --- a/maps/northern_star/polaris-1.dmm +++ b/maps/northern_star/polaris-1.dmm @@ -131,7 +131,7 @@ "acA" = (/obj/structure/cable{d1 = 1; d2 = 4; icon_state = "1-4"},/obj/structure/disposalpipe/segment,/turf/simulated/floor,/area/maintenance/library) "acB" = (/obj/structure/reagent_dispensers/fueltank,/turf/simulated/floor,/area/maintenance/locker) "acC" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced{dir = 4},/obj/machinery/door/firedoor/border_only,/turf/simulated/floor/plating,/area/maintenance/library) -"acD" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/structure/disposalpipe/segment,/mob/living/simple_animal/mouse,/turf/simulated/floor,/area/maintenance/library) +"acD" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/structure/disposalpipe/segment,/mob/living/simple_mob/animal/passive/mouse,/turf/simulated/floor,/area/maintenance/library) "acE" = (/obj/structure/table/woodentable,/obj/machinery/recharger{pixel_y = 0},/obj/machinery/ai_status_display{pixel_x = 0; pixel_y = 32},/turf/simulated/floor/wood,/area/library_conference_room) "acF" = (/obj/machinery/light{dir = 1},/turf/simulated/floor/wood,/area/library_conference_room) "acG" = (/turf/simulated/floor/wood,/area/library_conference_room) @@ -206,7 +206,7 @@ "adX" = (/obj/machinery/atmospherics/pipe/tank/air,/obj/effect/floor_decal/industrial/warning{icon_state = "warning"; dir = 8},/turf/simulated/floor,/area/maintenance/library) "adY" = (/obj/machinery/atmospherics/pipe/tank/air,/obj/effect/floor_decal/industrial/warning/corner,/turf/simulated/floor,/area/maintenance/library) "adZ" = (/obj/effect/floor_decal/industrial/warning{dir = 1},/turf/simulated/floor/tiled,/area/hallway/secondary/civilian_hallway_fore) -"aea" = (/obj/effect/decal/cleanable/generic,/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"},/mob/living/simple_animal/mouse,/turf/simulated/floor/plating,/area/maintenance/locker) +"aea" = (/obj/effect/decal/cleanable/generic,/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"},/mob/living/simple_mob/animal/passive/mouse,/turf/simulated/floor/plating,/area/maintenance/locker) "aeb" = (/obj/machinery/camera/network/civilian{c_tag = "CIV - Chapel Morgue"; dir = 4},/obj/machinery/alarm{dir = 4; icon_state = "alarm0"; pixel_x = -22},/turf/simulated/floor/tiled/dark,/area/chapel/chapel_morgue) "aec" = (/obj/machinery/hologram/holopad,/turf/simulated/floor/tiled/dark,/area/chapel/chapel_morgue) "aed" = (/obj/machinery/door/window{dir = 8; name = "Mass Driver"; req_access = list(22)},/obj/machinery/mass_driver{dir = 4; id = "chapelgun"},/obj/machinery/atmospherics/unary/vent_pump/on{dir = 8},/obj/machinery/airlock_sensor{pixel_y = 25},/obj/effect/floor_decal/industrial/warning{dir = 8},/turf/simulated/floor/plating,/area/chapel/chapel_morgue) @@ -305,7 +305,7 @@ "afS" = (/obj/effect/decal/cleanable/dirt,/obj/effect/decal/cleanable/dirt,/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor,/area/maintenance/locker) "afT" = (/obj/structure/cable/green{d2 = 4; icon_state = "0-4"},/obj/machinery/power/apc{dir = 8; name = "west bump"; pixel_x = -24},/turf/simulated/floor/tiled/dark,/area/chapel/chapel_morgue) "afU" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/structure/cable/green{d1 = 2; d2 = 8; icon_state = "2-8"},/turf/simulated/floor/tiled/dark,/area/chapel/chapel_morgue) -"afV" = (/obj/structure/bed/chair{dir = 4},/mob/living/simple_animal/mouse,/turf/simulated/floor/tiled/dark,/area/chapel/chapel_morgue) +"afV" = (/obj/structure/bed/chair{dir = 4},/mob/living/simple_mob/animal/passive/mouse,/turf/simulated/floor/tiled/dark,/area/chapel/chapel_morgue) "afW" = (/obj/structure/table/standard,/turf/simulated/floor/tiled/dark,/area/chapel/chapel_morgue) "afX" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced{dir = 4},/obj/machinery/door/firedoor/border_only,/turf/simulated/floor/plating,/area/chapel/chapel_morgue) "afY" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced{dir = 1},/obj/structure/cable/green{d1 = 2; d2 = 4; icon_state = "2-4"},/obj/structure/cable/green{d2 = 2; icon_state = "0-2"},/obj/machinery/door/firedoor/border_only,/turf/simulated/floor/plating,/area/security/detectives_office) @@ -1004,7 +1004,7 @@ "atp" = (/obj/machinery/atmospherics/valve{dir = 4},/obj/machinery/alarm{pixel_y = 22},/turf/simulated/floor,/area/security/riot_control) "atq" = (/obj/machinery/atmospherics/portables_connector{dir = 8},/obj/effect/floor_decal/industrial/warning{dir = 5},/turf/simulated/floor,/area/security/riot_control) "atr" = (/turf/simulated/wall/r_wall,/area/security/riot_control) -"ats" = (/obj/effect/decal/cleanable/dirt,/mob/living/simple_animal/mouse,/turf/simulated/floor/plating,/area/maintenance/security_starboard) +"ats" = (/obj/effect/decal/cleanable/dirt,/mob/living/simple_mob/animal/passive/mouse,/turf/simulated/floor/plating,/area/maintenance/security_starboard) "att" = (/obj/machinery/light/small{dir = 1},/obj/effect/decal/cleanable/dirt,/obj/effect/decal/cleanable/dirt,/turf/simulated/floor,/area/maintenance/security_starboard) "atu" = (/obj/effect/decal/cleanable/dirt,/turf/simulated/floor,/area/maintenance/security_starboard) "atv" = (/obj/machinery/door/firedoor/border_only,/obj/machinery/door/airlock/maintenance{req_access = list(12)},/turf/simulated/floor,/area/maintenance/security_starboard) @@ -2752,7 +2752,7 @@ "baV" = (/obj/structure/closet/crate,/obj/item/clothing/shoes/boots/combat,/obj/item/weapon/tank/air,/obj/item/weapon/tank/air,/obj/item/weapon/tank/air,/obj/item/clothing/mask/gas,/obj/effect/decal/cleanable/dirt,/obj/random/maintenance/cargo,/obj/random/maintenance/medical,/turf/simulated/floor/plating,/area/mine/unexplored/upper_level) "baW" = (/obj/machinery/door/firedoor,/obj/machinery/door/airlock/engineering{name = "Pump Station"; req_one_access = list(11,24)},/turf/simulated/floor,/area/maintenance/medbay_fore) "baX" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced{dir = 4},/obj/machinery/door/firedoor/border_only,/turf/simulated/floor/plating,/area/maintenance/research_shuttle) -"baY" = (/mob/living/simple_animal/mouse,/turf/simulated/floor,/area/maintenance/research_shuttle) +"baY" = (/mob/living/simple_mob/animal/passive/mouse,/turf/simulated/floor,/area/maintenance/research_shuttle) "baZ" = (/turf/simulated/wall/r_wall,/area/rnd/research_storage) "bba" = (/obj/effect/floor_decal/corner/purple{dir = 9},/obj/machinery/ai_status_display{pixel_x = -32; pixel_y = 0},/turf/simulated/floor/tiled/white,/area/rnd/research) "bbb" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/structure/cable/green{d1 = 1; d2 = 4; icon_state = "1-4"},/turf/simulated/floor/tiled/white,/area/rnd/research) @@ -3776,7 +3776,7 @@ "buF" = (/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced{dir = 4},/obj/structure/grille,/obj/structure/window/reinforced{dir = 1},/obj/machinery/door/blast/shutters{density = 0; dir = 8; icon_state = "shutter0"; id = "cmooffice"; name = "CMO Office Privacy Shutters"; opacity = 0},/obj/machinery/door/firedoor/border_only,/turf/simulated/floor/plating,/area/crew_quarters/heads/cmo) "buG" = (/obj/structure/flora/pottedplant{icon_state = "plant-01"},/obj/effect/floor_decal/corner/paleblue/full{dir = 8},/obj/structure/disposalpipe/segment{dir = 4; icon_state = "pipe-c"},/turf/simulated/floor/tiled/white,/area/crew_quarters/heads/cmo) "buH" = (/obj/machinery/atmospherics/unary/vent_scrubber/on,/obj/effect/floor_decal/corner/paleblue{dir = 5},/obj/structure/disposalpipe/segment{dir = 4},/turf/simulated/floor/tiled/white,/area/crew_quarters/heads/cmo) -"buI" = (/obj/effect/floor_decal/corner/paleblue{dir = 1},/obj/machinery/light{dir = 1},/obj/structure/disposalpipe/segment{dir = 4},/mob/living/simple_animal/cat/fluff/Runtime,/turf/simulated/floor/tiled/white,/area/crew_quarters/heads/cmo) +"buI" = (/obj/effect/floor_decal/corner/paleblue{dir = 1},/obj/machinery/light{dir = 1},/obj/structure/disposalpipe/segment{dir = 4},/mob/living/simple_mob/animal/passive/cat/runtime,/turf/simulated/floor/tiled/white,/area/crew_quarters/heads/cmo) "buJ" = (/obj/structure/disposalpipe/segment{dir = 4},/turf/simulated/floor/tiled/white,/area/crew_quarters/heads/cmo) "buK" = (/obj/effect/floor_decal/corner/paleblue{dir = 4},/obj/structure/disposalpipe/segment{dir = 4},/turf/simulated/floor/tiled/white,/area/crew_quarters/heads/cmo) "buL" = (/obj/machinery/disposal,/obj/structure/disposalpipe/trunk{dir = 8},/obj/machinery/alarm{dir = 8; icon_state = "alarm0"; pixel_x = 24},/obj/effect/floor_decal/corner/paleblue/full{dir = 1},/turf/simulated/floor/tiled/white,/area/crew_quarters/heads/cmo) @@ -4187,7 +4187,7 @@ "bCA" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced{dir = 1},/obj/structure/cable/green{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor/plating,/area/maintenance/central) "bCB" = (/obj/structure/cable/green{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/item/weapon/material/shard{icon_state = "medium"},/obj/item/stack/rods,/turf/simulated/floor,/area/maintenance/central) "bCC" = (/obj/structure/cable/green{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor,/area/maintenance/central) -"bCD" = (/obj/structure/cable/green{d1 = 4; d2 = 8; icon_state = "4-8"},/mob/living/simple_animal/mouse,/turf/simulated/floor,/area/maintenance/central) +"bCD" = (/obj/structure/cable/green{d1 = 4; d2 = 8; icon_state = "4-8"},/mob/living/simple_mob/animal/passive/mouse,/turf/simulated/floor,/area/maintenance/central) "bCE" = (/obj/structure/cable/green{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 5},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 5},/turf/simulated/floor,/area/maintenance/central) "bCF" = (/obj/structure/cable/green{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/machinery/door/airlock/maintenance{req_access = list(12)},/obj/machinery/door/firedoor,/turf/simulated/floor/tiled,/area/maintenance/central) "bCG" = (/obj/structure/cable/green{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/turf/simulated/floor/tiled,/area/maintenance/central) @@ -4270,7 +4270,7 @@ "bEf" = (/obj/structure/closet/crate,/obj/item/weapon/reagent_containers/food/drinks/bottle/wine,/obj/random/drinkbottle,/obj/random/maintenance/clean,/turf/simulated/floor/plating,/area/maintenance/central) "bEg" = (/turf/simulated/floor/tiled,/area/maintenance/central) "bEh" = (/obj/structure/cable/green{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/turf/simulated/floor/tiled,/area/maintenance/central) -"bEi" = (/obj/machinery/light/small,/mob/living/simple_animal/mouse,/turf/simulated/floor/plating,/area/maintenance/central) +"bEi" = (/obj/machinery/light/small,/mob/living/simple_mob/animal/passive/mouse,/turf/simulated/floor/plating,/area/maintenance/central) "bEj" = (/obj/structure/cable{d1 = 2; d2 = 4; icon_state = "2-4"},/turf/simulated/floor,/area/maintenance/central) "bEk" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0},/turf/simulated/floor,/area/maintenance/central) "bEl" = (/obj/structure/closet,/obj/item/weapon/storage/backpack,/obj/structure/cable{d1 = 1; d2 = 8; icon_state = "1-8"},/obj/random/maintenance/clean,/obj/random/maintenance/cargo,/turf/simulated/floor/plating,/area/maintenance/central) @@ -4570,7 +4570,7 @@ "bJT" = (/turf/simulated/wall/r_wall,/area/quartermaster/miningdock) "bJU" = (/obj/structure/lattice,/obj/machinery/light{dir = 8},/turf/simulated/mineral/floor/ignore_mapgen,/area/quartermaster/miningdock) "bJV" = (/obj/structure/lattice,/obj/machinery/light{dir = 4; icon_state = "tube1"; pixel_x = 0},/turf/simulated/mineral/floor/ignore_mapgen,/area/quartermaster/miningdock) -"bJW" = (/obj/structure/table/rack,/obj/item/weapon/extinguisher,/obj/item/weapon/storage/belt/utility,/obj/item/clothing/mask/gas,/obj/machinery/atmospherics/pipe/simple/hidden/yellow,/mob/living/simple_animal/mouse,/turf/simulated/floor/plating,/area/maintenance/research) +"bJW" = (/obj/structure/table/rack,/obj/item/weapon/extinguisher,/obj/item/weapon/storage/belt/utility,/obj/item/clothing/mask/gas,/obj/machinery/atmospherics/pipe/simple/hidden/yellow,/mob/living/simple_mob/animal/passive/mouse,/turf/simulated/floor/plating,/area/maintenance/research) "bJX" = (/obj/structure/table/rack{dir = 8; layer = 2.9},/obj/item/weapon/tank/oxygen,/obj/item/weapon/tank/oxygen,/obj/item/clothing/mask/breath,/obj/item/clothing/mask/breath,/obj/item/device/flashlight,/obj/item/device/flashlight,/obj/item/weapon/storage/box/lights/mixed,/obj/item/weapon/extinguisher,/obj/random/maintenance/research,/obj/random/maintenance/research,/turf/simulated/floor/plating,/area/maintenance/research) "bJY" = (/obj/structure/table/standard,/obj/item/device/assembly/igniter,/turf/simulated/floor/reinforced,/area/rnd/misc_lab) "bJZ" = (/obj/structure/reagent_dispensers/watertank,/obj/machinery/light,/turf/simulated/floor/reinforced,/area/rnd/misc_lab) @@ -4590,7 +4590,7 @@ "bKn" = (/obj/machinery/atmospherics/unary/vent_pump/on{dir = 4},/obj/machinery/light{dir = 8},/turf/simulated/floor/tiled,/area/hallway/primary/central_four) "bKo" = (/obj/structure/grille,/obj/structure/sign/securearea{desc = "A warning sign which reads 'HIGH VOLTAGE'"; icon_state = "shock"; name = "HIGH VOLTAGE"; pixel_y = -32},/obj/structure/cable/green,/obj/machinery/door/firedoor,/obj/structure/window/reinforced/polarized{dir = 8; id = "hop_office"},/obj/structure/window/reinforced/polarized{dir = 2; id = "hop_office"},/obj/structure/window/reinforced/polarized{dir = 4; id = "hop_office"},/turf/simulated/floor/plating,/area/crew_quarters/heads/hop) "bKp" = (/obj/structure/closet/secure_closet/hop,/obj/effect/floor_decal/corner/blue{dir = 9},/turf/simulated/floor/tiled,/area/crew_quarters/heads/hop) -"bKq" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 6},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 5},/mob/living/simple_animal/corgi/Ian,/turf/simulated/floor/carpet,/area/crew_quarters/heads/hop) +"bKq" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 6},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 5},/mob/living/simple_mob/animal/passive/dog/corgi/Ian,/turf/simulated/floor/carpet,/area/crew_quarters/heads/hop) "bKr" = (/obj/structure/bed/chair/office/dark,/obj/effect/landmark/start{name = "Head of Personnel"},/obj/structure/cable/green{d1 = 1; d2 = 4; icon_state = "1-4"},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/turf/simulated/floor/carpet,/area/crew_quarters/heads/hop) "bKs" = (/obj/structure/cable/green{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/turf/simulated/floor/carpet,/area/crew_quarters/heads/hop) "bKt" = (/obj/structure/cable/green{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/obj/structure/cable/green{d1 = 2; d2 = 4; icon_state = "2-4"},/turf/simulated/floor/carpet,/area/crew_quarters/heads/hop) @@ -4886,7 +4886,7 @@ "bPX" = (/obj/machinery/computer/aifixer,/obj/effect/floor_decal/corner/purple/full,/obj/machinery/status_display{layer = 4; pixel_x = 0; pixel_y = -32},/turf/simulated/floor/tiled/white,/area/rnd/rdoffice) "bPY" = (/obj/machinery/computer/robotics,/obj/effect/floor_decal/corner/purple{dir = 10},/turf/simulated/floor/tiled/white,/area/rnd/rdoffice) "bPZ" = (/obj/machinery/computer/mecha,/obj/effect/floor_decal/corner/purple{dir = 10},/obj/machinery/ai_status_display{pixel_y = -32},/obj/machinery/camera/network/research{c_tag = "SCI - RD's Office"; dir = 1},/turf/simulated/floor/tiled/white,/area/rnd/rdoffice) -"bQa" = (/obj/effect/floor_decal/corner/purple/full{dir = 4},/obj/machinery/alarm{dir = 1; pixel_y = -22},/mob/living/simple_animal/slime/rainbow/kendrick,/turf/simulated/floor/tiled/white,/area/rnd/rdoffice) +"bQa" = (/obj/effect/floor_decal/corner/purple/full{dir = 4},/obj/machinery/alarm{dir = 1; pixel_y = -22},/mob/living/simple_mob/slime/xenobio/rainbow/kendrick,/turf/simulated/floor/tiled/white,/area/rnd/rdoffice) "bQb" = (/obj/structure/table/rack,/obj/item/weapon/rig/hazmat/equipped,/obj/structure/extinguisher_cabinet{pixel_x = 25; pixel_y = 0},/obj/machinery/firealarm{dir = 1; pixel_y = -24},/turf/simulated/floor/tiled/dark,/area/rnd/rdoffice) "bQc" = (/obj/structure/sink{icon_state = "sink"; dir = 8; pixel_x = -12; pixel_y = 2},/turf/simulated/floor/tiled,/area/assembly/robotics) "bQd" = (/obj/structure/table/standard,/obj/machinery/cell_charger,/obj/item/device/radio/intercom{dir = 4; name = "Station Intercom (General)"; pixel_x = 21},/obj/effect/floor_decal/corner/pink{dir = 4},/turf/simulated/floor/tiled,/area/assembly/robotics) @@ -5366,7 +5366,7 @@ "bZj" = (/turf/simulated/wall,/area/maintenance/medbay_aft) "bZk" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; pixel_y = 0},/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/structure/disposalpipe/segment,/turf/simulated/floor,/area/maintenance/medbay_aft) "bZl" = (/obj/machinery/atmospherics/valve,/turf/simulated/floor/plating,/area/maintenance/medbay_aft) -"bZm" = (/obj/machinery/atmospherics/pipe/simple/hidden/cyan{dir = 6; icon_state = "intact"},/obj/effect/floor_decal/industrial/warning{dir = 8},/mob/living/simple_animal/mouse,/turf/simulated/floor/plating,/area/maintenance/medbay_aft) +"bZm" = (/obj/machinery/atmospherics/pipe/simple/hidden/cyan{dir = 6; icon_state = "intact"},/obj/effect/floor_decal/industrial/warning{dir = 8},/mob/living/simple_mob/animal/passive/mouse,/turf/simulated/floor/plating,/area/maintenance/medbay_aft) "bZn" = (/obj/machinery/atmospherics/pipe/tank/air{dir = 8},/turf/simulated/floor/plating,/area/maintenance/medbay_aft) "bZo" = (/obj/machinery/embedded_controller/radio/simple_docking_controller/escape_pod_berth{frequency = 1380; id_tag = "large_escape_pod_1_berth"; pixel_x = -26; pixel_y = 0; tag_door = "large_escape_pod_1_berth_hatch"},/obj/effect/floor_decal/industrial/warning{dir = 10},/turf/simulated/floor/tiled,/area/hallway/secondary/escape/medical_escape_pod_hallway) "bZp" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/machinery/atmospherics/pipe/simple/hidden/yellow,/obj/structure/disposalpipe/segment,/obj/effect/floor_decal/industrial/warning,/turf/simulated/floor/tiled,/area/hallway/secondary/escape/medical_escape_pod_hallway) @@ -6184,7 +6184,7 @@ "coV" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced,/obj/machinery/door/firedoor/border_only,/obj/structure/window/reinforced{dir = 4},/turf/simulated/floor/plating,/area/hallway/primary/central_three) "coW" = (/obj/machinery/atmospherics/unary/vent_pump/on{dir = 4},/obj/machinery/light{dir = 8},/turf/simulated/floor/tiled/dark,/area/security/nuke_storage) "coX" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/turf/simulated/floor/tiled/dark,/area/security/nuke_storage) -"coY" = (/obj/machinery/hologram/holopad,/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 5},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 9},/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"},/mob/living/simple_animal/mouse/brown/Tom,/turf/simulated/floor/tiled/dark,/area/security/nuke_storage) +"coY" = (/obj/machinery/hologram/holopad,/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 5},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 9},/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"},/mob/living/simple_mob/animal/passive/mouse/brown/Tom,/turf/simulated/floor/tiled/dark,/area/security/nuke_storage) "coZ" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/turf/simulated/floor/tiled/dark,/area/security/nuke_storage) "cpa" = (/obj/machinery/camera/network/command{c_tag = "COM - Vault"; dir = 9},/obj/machinery/atmospherics/unary/vent_scrubber/on{dir = 8},/turf/simulated/floor/tiled/dark,/area/security/nuke_storage) "cpb" = (/obj/structure/closet/crate,/obj/item/clothing/mask/gas,/obj/item/device/flashlight,/obj/item/device/flashlight,/obj/effect/decal/cleanable/dirt,/obj/random/maintenance/medical,/obj/random/maintenance/medical,/turf/simulated/floor/plating,/area/maintenance/medbay_aft) @@ -9152,7 +9152,7 @@ "dtZ" = (/obj/effect/decal/cleanable/dirt,/obj/machinery/portable_atmospherics/canister/nitrogen,/turf/simulated/floor,/area/engineering/storage) "dua" = (/obj/effect/decal/cleanable/dirt,/obj/structure/dispenser{oxygentanks = 0},/turf/simulated/floor,/area/engineering/storage) "dub" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; pixel_y = 0},/obj/machinery/light/small{dir = 8},/turf/simulated/floor,/area/maintenance/engineering) -"duc" = (/obj/structure/bed/chair{dir = 4},/mob/living/simple_animal/mouse,/turf/simulated/floor,/area/maintenance/engineering) +"duc" = (/obj/structure/bed/chair{dir = 4},/mob/living/simple_mob/animal/passive/mouse,/turf/simulated/floor,/area/maintenance/engineering) "dud" = (/obj/machinery/newscaster{pixel_x = -30},/turf/simulated/floor/tiled,/area/hallway/secondary/entry/D1) "due" = (/obj/effect/floor_decal/industrial/warning/corner{dir = 4},/obj/machinery/hologram/holopad,/obj/machinery/camera/network/northern_star{c_tag = "DOCK - Dock 1 Mid"; dir = 8},/turf/simulated/floor/tiled,/area/hallway/secondary/entry/D1) "duf" = (/obj/effect/floor_decal/industrial/warning/corner{dir = 1},/obj/machinery/hologram/holopad,/obj/machinery/camera/network/northern_star{c_tag = "DOCK - Dock 2 Mid"; dir = 4},/turf/simulated/floor/tiled,/area/hallway/secondary/entry/D2) @@ -9872,7 +9872,7 @@ "dHR" = (/obj/item/weapon/rig/breacher,/obj/item/clothing/mask/breath,/obj/machinery/suit_storage_unit/standard_unit,/turf/simulated/floor/tiled/dark,/area/ai_monitored/storage/eva) "dHS" = (/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers,/obj/machinery/atmospherics/pipe/manifold/hidden/supply,/obj/machinery/light,/turf/simulated/floor/tiled,/area/crew_quarters/visitor_lodging) "dHT" = (/obj/structure/table/rack{dir = 8; layer = 2.9},/obj/machinery/light/small{dir = 4; pixel_y = 0},/obj/item/clothing/mask/breath,/obj/item/weapon/rig/breacher,/turf/simulated/floor/tiled/dark,/area/ai_monitored/storage/eva) - + (1,1,1) = {" aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa @@ -10175,3 +10175,4 @@ aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa "} + diff --git a/maps/northern_star/polaris-2.dmm b/maps/northern_star/polaris-2.dmm index cbdb8d3e61..9780679b04 100644 --- a/maps/northern_star/polaris-2.dmm +++ b/maps/northern_star/polaris-2.dmm @@ -19,7 +19,7 @@ "as" = (/obj/structure/table/rack/holorack,/obj/item/clothing/under/dress/dress_saloon,/obj/item/clothing/head/pin/flower,/turf/simulated/floor/holofloor/tiled/dark,/area/holodeck/source_theatre) "at" = (/obj/effect/landmark/costume,/obj/structure/table/rack/holorack,/turf/simulated/floor/holofloor/tiled/dark,/area/holodeck/source_theatre) "au" = (/turf/simulated/floor/holofloor/tiled,/area/holodeck/source_courtroom) -"av" = (/obj/structure/window/reinforced/holowindow{dir = 4},/obj/structure/flora/pottedplant{ icon_state = "plant-10"},/turf/simulated/floor/holofloor/tiled,/area/holodeck/source_courtroom) +"av" = (/obj/structure/window/reinforced/holowindow{dir = 4},/obj/structure/flora/pottedplant{icon_state = "plant-10"},/turf/simulated/floor/holofloor/tiled,/area/holodeck/source_courtroom) "aw" = (/obj/structure/table/woodentable/holotable,/turf/simulated/floor/holofloor/wood,/area/holodeck/source_courtroom) "ax" = (/turf/simulated/floor/holofloor/reinforced,/area/holodeck/source_wildlife) "ay" = (/turf/simulated/floor/holofloor/reinforced,/area/holodeck/source_plating) @@ -54,7 +54,7 @@ "bb" = (/turf/simulated/floor/holofloor/desert,/area/holodeck/source_picnicarea) "bc" = (/obj/effect/decal/cleanable/dirt,/obj/structure/holostool,/turf/simulated/floor/holofloor/desert,/area/holodeck/source_picnicarea) "bd" = (/obj/effect/decal/cleanable/dirt,/turf/simulated/floor/holofloor/desert,/area/holodeck/source_picnicarea) -"be" = (/obj/structure/flora/ausbushes/ywflowers,/obj/effect/floor_decal/spline/fancy/wood{ icon_state = "spline_fancy"; dir = 10},/turf/simulated/floor/holofloor/grass,/area/holodeck/source_picnicarea) +"be" = (/obj/structure/flora/ausbushes/ywflowers,/obj/effect/floor_decal/spline/fancy/wood{icon_state = "spline_fancy"; dir = 10},/turf/simulated/floor/holofloor/grass,/area/holodeck/source_picnicarea) "bf" = (/obj/effect/floor_decal/spline/plain{dir = 1},/turf/simulated/floor/holofloor/tiled,/area/holodeck/source_theatre) "bg" = (/obj/effect/floor_decal/carpet{dir = 8},/obj/effect/floor_decal/carpet{dir = 4},/obj/effect/floor_decal/carpet{dir = 1},/obj/effect/floor_decal/carpet{dir = 5},/obj/effect/floor_decal/carpet{dir = 9},/turf/simulated/floor/holofloor/carpet,/area/holodeck/source_theatre) "bh" = (/obj/structure/window/reinforced/holowindow,/obj/machinery/door/window/holowindoor{dir = 1; name = "Court Reporter's Box"},/obj/structure/bed/chair/holochair,/turf/simulated/floor/holofloor/wood,/area/holodeck/source_courtroom) @@ -91,7 +91,7 @@ "bM" = (/obj/effect/floor_decal/corner/green{dir = 9},/turf/simulated/floor/holofloor/tiled,/area/holodeck/source_emptycourt) "bN" = (/obj/effect/floor_decal/corner/green{dir = 6},/turf/simulated/floor/holofloor/tiled,/area/holodeck/source_emptycourt) "bO" = (/turf/space/transit/east,/area/shuttle/large_escape_pod1/transit) -"bP" = (/obj/structure/flora/ausbushes/ywflowers,/obj/effect/floor_decal/spline/fancy/wood{ icon_state = "spline_fancy"; dir = 9},/turf/simulated/floor/holofloor/grass,/area/holodeck/source_picnicarea) +"bP" = (/obj/structure/flora/ausbushes/ywflowers,/obj/effect/floor_decal/spline/fancy/wood{icon_state = "spline_fancy"; dir = 9},/turf/simulated/floor/holofloor/grass,/area/holodeck/source_picnicarea) "bQ" = (/obj/structure/flora/ausbushes/brflowers,/obj/effect/floor_decal/spline/fancy/wood{dir = 1},/turf/simulated/floor/holofloor/grass,/area/holodeck/source_picnicarea) "bR" = (/obj/structure/flora/ausbushes/ywflowers,/obj/effect/floor_decal/spline/fancy/wood{dir = 1},/turf/simulated/floor/holofloor/grass,/area/holodeck/source_picnicarea) "bS" = (/obj/structure/bed/chair/holochair{dir = 1},/obj/effect/floor_decal/carpet{dir = 8},/turf/simulated/floor/holofloor/carpet,/area/holodeck/source_courtroom) @@ -114,7 +114,7 @@ "cj" = (/obj/structure/bed/chair/holochair{dir = 8},/obj/effect/floor_decal/carpet{dir = 4},/obj/effect/floor_decal/carpet,/obj/effect/floor_decal/carpet{dir = 6},/turf/simulated/floor/holofloor/carpet,/area/holodeck/source_courtroom) "ck" = (/obj/effect/step_trigger/thrower{affect_ghosts = 1; direction = 2; name = "thrower_throwdown"; tiles = 0},/turf/space/transit/east,/area/space) "cl" = (/obj/effect/step_trigger/thrower{affect_ghosts = 1; direction = 2; name = "thrower_throwdown"; stopper = 0; tiles = 0},/turf/space/transit/east,/area/space) -"cm" = (/obj/structure/flora/pottedplant{ icon_state = "plant-06"},/turf/simulated/floor/holofloor/tiled,/area/holodeck/source_theatre) +"cm" = (/obj/structure/flora/pottedplant{icon_state = "plant-06"},/turf/simulated/floor/holofloor/tiled,/area/holodeck/source_theatre) "cn" = (/obj/effect/floor_decal/carpet{dir = 5},/obj/effect/floor_decal/carpet{dir = 6},/obj/effect/floor_decal/carpet{dir = 10},/obj/effect/floor_decal/carpet{dir = 9},/turf/simulated/floor/holofloor/carpet,/area/holodeck/source_theatre) "co" = (/obj/structure/bed/chair/holochair{dir = 1},/obj/effect/floor_decal/carpet{dir = 8},/obj/effect/floor_decal/carpet,/obj/effect/floor_decal/carpet{dir = 10},/turf/simulated/floor/holofloor/carpet,/area/holodeck/source_courtroom) "cp" = (/obj/structure/bed/chair/holochair{dir = 1},/obj/effect/floor_decal/carpet,/turf/simulated/floor/holofloor/carpet,/area/holodeck/source_courtroom) @@ -127,7 +127,7 @@ "cw" = (/turf/simulated/floor/holofloor/space,/area/holodeck/source_space) "cx" = (/turf/simulated/floor/holofloor/snow,/area/holodeck/source_snowfield) "cy" = (/turf/simulated/floor/holofloor/wood,/area/holodeck/source_meetinghall) -"cz" = (/obj/structure/flora/pottedplant{ icon_state = "plant-06"},/turf/simulated/floor/holofloor/wood,/area/holodeck/source_meetinghall) +"cz" = (/obj/structure/flora/pottedplant{icon_state = "plant-06"},/turf/simulated/floor/holofloor/wood,/area/holodeck/source_meetinghall) "cA" = (/turf/simulated/floor/holofloor/tiled/dark,/area/holodeck/source_basketball) "cB" = (/obj/structure/holostool,/turf/simulated/floor/holofloor/tiled,/area/holodeck/source_basketball) "cC" = (/obj/structure/holostool,/obj/structure/window/reinforced/holowindow{dir = 4},/turf/simulated/floor/holofloor/tiled,/area/holodeck/source_basketball) @@ -213,7 +213,7 @@ "ee" = (/obj/structure/holostool,/obj/effect/floor_decal/carpet{dir = 4},/turf/simulated/floor/holofloor/carpet{dir = 8},/area/holodeck/source_meetinghall) "ef" = (/obj/machinery/door/window/holowindoor{base_state = "right"; icon_state = "right"; name = "Green Team"},/turf/simulated/floor/holofloor/tiled/dark,/area/holodeck/source_basketball) "eg" = (/obj/effect/floor_decal/corner/green{dir = 10},/turf/simulated/floor/holofloor/tiled,/area/holodeck/source_basketball) -"eh" = (/turf/unsimulated/beach/sand{ icon_state = "beach"},/area/holodeck/source_beach) +"eh" = (/turf/unsimulated/beach/sand{icon_state = "beach"},/area/holodeck/source_beach) "ei" = (/obj/machinery/door/window/holowindoor{base_state = "right"; icon_state = "right"; name = "Green Team"},/turf/simulated/floor/holofloor/tiled/dark,/area/holodeck/source_thunderdomecourt) "ej" = (/obj/structure/window/reinforced/holowindow{dir = 1},/turf/simulated/floor/holofloor/tiled/dark,/area/holodeck/source_boxingcourt) "ek" = (/obj/machinery/door/window/holowindoor{dir = 1; name = "Green Corner"},/turf/simulated/floor/holofloor/tiled/dark,/area/holodeck/source_boxingcourt) @@ -256,19 +256,19 @@ "eV" = (/turf/unsimulated/wall{desc = "That looks like it doesn't open easily."; icon = 'icons/obj/doors/rapid_pdoor.dmi'; icon_state = "pdoor1"; name = "Shuttle Bay Blast Door"},/area/syndicate_mothership) "eW" = (/obj/machinery/door/airlock/multi_tile/glass{dir = 4; req_access = list(160)},/turf/unsimulated/floor{icon_state = "white"},/area/syndicate_mothership{name = "\improper Trader Base"}) "eX" = (/turf/unsimulated/floor{icon_state = "white"},/area/syndicate_mothership{name = "\improper Trader Base"}) -"eY" = (/obj/machinery/embedded_controller/radio/simple_docking_controller{frequency = 1380; id_tag = "arrivals_shuttle"; pixel_x = 0; pixel_y = 25; req_one_access = list(13); tag_door = "arrivals_shuttle_hatch"},/turf/simulated/shuttle/floor{ icon_state = "floor_red"},/area/shuttle/arrival/pre_game) -"eZ" = (/obj/structure/showcase{desc = "So that's how the shuttle moves on its own."; icon = 'icons/mob/AI.dmi'; icon_state = "ai-red"; name = "Arrivals Announcement Computer"},/turf/simulated/shuttle/floor{ icon_state = "floor_red"},/area/shuttle/arrival/pre_game) -"fa" = (/turf/simulated/shuttle/floor{ icon_state = "floor_red"},/area/shuttle/arrival/pre_game) +"eY" = (/obj/structure/showcase{desc = "So that's how the shuttle moves on its own."; icon = 'icons/mob/AI.dmi'; icon_state = "ai-red"; name = "Arrivals Announcement Computer"},/turf/simulated/shuttle/floor{icon_state = "floor_red"},/area/shuttle/arrival/pre_game) +"eZ" = (/obj/machinery/embedded_controller/radio/simple_docking_controller{frequency = 1380; id_tag = "arrivals_shuttle"; pixel_x = 0; pixel_y = 25; req_one_access = list(13); tag_door = "arrivals_shuttle_hatch"},/turf/simulated/shuttle/floor{icon_state = "floor_red"},/area/shuttle/arrival/pre_game) +"fa" = (/turf/simulated/shuttle/floor{icon_state = "floor_red"},/area/shuttle/arrival/pre_game) "fb" = (/turf/simulated/shuttle/wall/dark,/area/shuttle/syndicate_elite/mothership) "fc" = (/turf/space,/obj/structure/shuttle/engine/propulsion{icon_state = "propulsion_r"; dir = 1},/turf/simulated/shuttle/plating/airless/carry,/area/shuttle/syndicate_elite/mothership) "fd" = (/turf/space,/obj/structure/shuttle/engine/propulsion{icon_state = "propulsion"; dir = 1},/turf/simulated/shuttle/plating/airless/carry,/area/shuttle/syndicate_elite/mothership) "fe" = (/turf/space,/obj/structure/shuttle/engine/propulsion{icon_state = "propulsion_l"; dir = 1},/turf/simulated/shuttle/plating/airless/carry,/area/shuttle/syndicate_elite/mothership) "ff" = (/obj/structure/sink{icon_state = "sink"; dir = 8; pixel_x = -12; pixel_y = 2},/obj/structure/mirror{pixel_x = -28},/turf/unsimulated/floor{icon_state = "white"},/area/syndicate_mothership{name = "\improper Trader Base"}) "fg" = (/obj/structure/curtain/open/shower,/obj/machinery/shower{pixel_y = 3},/turf/unsimulated/floor{icon_state = "white"},/area/syndicate_mothership{name = "\improper Trader Base"}) -"fh" = (/obj/machinery/computer/shuttle_control/arrivals,/turf/simulated/shuttle/floor{ icon_state = "floor_red"},/area/shuttle/arrival/pre_game) -"fi" = (/obj/machinery/light,/obj/structure/bed/chair{dir = 8},/turf/simulated/shuttle/floor{ icon_state = "floor_red"},/area/shuttle/arrival/pre_game) -"fj" = (/obj/machinery/light,/obj/structure/bed/chair{dir = 4},/turf/simulated/shuttle/floor{ icon_state = "floor_red"},/area/shuttle/arrival/pre_game) -"fk" = (/obj/structure/table/steel,/obj/structure/flora/pottedplant{icon_state = "plant-09"; name = "Dave"; pixel_y = 15},/turf/simulated/shuttle/floor{ icon_state = "floor_red"},/area/shuttle/arrival/pre_game) +"fh" = (/obj/machinery/computer/shuttle_control/arrivals,/turf/simulated/shuttle/floor{icon_state = "floor_red"},/area/shuttle/arrival/pre_game) +"fi" = (/obj/machinery/light,/obj/structure/bed/chair{dir = 8},/turf/simulated/shuttle/floor{icon_state = "floor_red"},/area/shuttle/arrival/pre_game) +"fj" = (/obj/structure/table/steel,/obj/structure/flora/pottedplant{icon_state = "plant-09"; name = "Dave"; pixel_y = 15},/turf/simulated/shuttle/floor{icon_state = "floor_red"},/area/shuttle/arrival/pre_game) +"fk" = (/obj/machinery/light,/obj/structure/bed/chair{dir = 4},/turf/simulated/shuttle/floor{icon_state = "floor_red"},/area/shuttle/arrival/pre_game) "fl" = (/obj/structure/window/reinforced,/obj/structure/shuttle/engine/heater{icon_state = "heater"; dir = 1},/turf/simulated/floor/airless,/area/shuttle/syndicate_elite/mothership) "fm" = (/obj/structure/table/standard,/obj/item/weapon/soap/deluxe,/turf/unsimulated/floor{icon_state = "white"},/area/syndicate_mothership{name = "\improper Trader Base"}) "fn" = (/obj/structure/undies_wardrobe,/turf/unsimulated/floor{icon_state = "white"},/area/syndicate_mothership{name = "\improper Trader Base"}) @@ -284,12 +284,12 @@ "fx" = (/obj/effect/step_trigger/thrower{affect_ghosts = 1; direction = 8; name = "thrower_escapeshuttletop(left)"; tiles = 0},/turf/space/transit/north,/area/space) "fy" = (/turf/space/transit/north,/area/syndicate_station/transit) "fz" = (/turf/simulated/shuttle/wall/hard_corner,/area/shuttle/arrival/pre_game) -"fA" = (/obj/structure/closet/emcloset,/turf/simulated/shuttle/floor{ icon_state = "floor_white"},/area/shuttle/arrival/pre_game) -"fB" = (/obj/machinery/light{dir = 1},/obj/machinery/computer/arcade/battle,/turf/simulated/shuttle/floor{ icon_state = "floor_white"},/area/shuttle/arrival/pre_game) +"fA" = (/obj/machinery/light{dir = 1},/obj/machinery/computer/arcade/battle,/turf/simulated/shuttle/floor{icon_state = "floor_white"},/area/shuttle/arrival/pre_game) +"fB" = (/obj/structure/closet/emcloset,/turf/simulated/shuttle/floor{icon_state = "floor_white"},/area/shuttle/arrival/pre_game) "fC" = (/obj/effect/floor_decal/industrial/warning/corner{icon_state = "warningcorner"; dir = 4},/turf/simulated/shuttle/floor,/area/shuttle/arrival/pre_game) "fD" = (/obj/effect/floor_decal/industrial/warning{icon_state = "warning"; dir = 1},/turf/simulated/shuttle/floor,/area/shuttle/arrival/pre_game) "fE" = (/obj/effect/floor_decal/industrial/warning/corner{icon_state = "warningcorner"; dir = 1},/obj/machinery/requests_console{department = "Arrival shuttle"; pixel_y = 26},/turf/simulated/shuttle/floor,/area/shuttle/arrival/pre_game) -"fF" = (/obj/machinery/light{dir = 1},/obj/machinery/computer/arcade/orion_trail,/turf/simulated/shuttle/floor{ icon_state = "floor_white"},/area/shuttle/arrival/pre_game) +"fF" = (/obj/machinery/light{dir = 1},/obj/machinery/computer/arcade/orion_trail,/turf/simulated/shuttle/floor{icon_state = "floor_white"},/area/shuttle/arrival/pre_game) "fG" = (/obj/structure/bed/chair{dir = 4},/turf/simulated/shuttle/floor/red,/area/shuttle/syndicate_elite/mothership) "fH" = (/turf/simulated/shuttle/floor/red,/area/shuttle/syndicate_elite/mothership) "fI" = (/obj/structure/bed/chair{dir = 8},/turf/simulated/shuttle/floor/red,/area/shuttle/syndicate_elite/mothership) @@ -307,14 +307,14 @@ "fU" = (/obj/mecha/combat/marauder/mauler,/turf/unsimulated/floor{icon_state = "dark"},/area/syndicate_mothership) "fV" = (/turf/unsimulated/floor{icon_state = "dark"},/area/syndicate_mothership) "fW" = (/turf/space/transit/north,/area/skipjack_station/transit) -"fX" = (/obj/structure/bed/chair,/obj/effect/landmark{name = "JoinLate"},/obj/structure/window/reinforced{dir = 1},/obj/item/device/radio/intercom{dir = 8; name = "Station Intercom (General)"; pixel_x = -21},/turf/simulated/shuttle/floor{ icon_state = "floor_white"},/area/shuttle/arrival/pre_game) -"fY" = (/obj/structure/bed/chair,/obj/effect/landmark{name = "JoinLate"},/obj/structure/window/reinforced{dir = 1},/turf/simulated/shuttle/floor{ icon_state = "floor_white"},/area/shuttle/arrival/pre_game) -"fZ" = (/obj/structure/bed/chair,/obj/effect/landmark{name = "JoinLate"},/obj/structure/window/reinforced{dir = 1},/obj/item/device/radio/intercom{dir = 4; name = "Station Intercom (General)"; pixel_x = 26},/turf/simulated/shuttle/floor{ icon_state = "floor_white"},/area/shuttle/arrival/pre_game) +"fX" = (/obj/structure/bed/chair,/obj/effect/landmark{name = "JoinLate"},/obj/structure/window/reinforced{dir = 1},/turf/simulated/shuttle/floor{icon_state = "floor_white"},/area/shuttle/arrival/pre_game) +"fY" = (/obj/structure/bed/chair,/obj/effect/landmark{name = "JoinLate"},/obj/structure/window/reinforced{dir = 1},/obj/item/device/radio/intercom{dir = 8; name = "Station Intercom (General)"; pixel_x = -21},/turf/simulated/shuttle/floor{icon_state = "floor_white"},/area/shuttle/arrival/pre_game) +"fZ" = (/obj/structure/bed/chair,/obj/effect/landmark{name = "JoinLate"},/obj/structure/window/reinforced{dir = 1},/obj/item/device/radio/intercom{dir = 4; name = "Station Intercom (General)"; pixel_x = 26},/turf/simulated/shuttle/floor{icon_state = "floor_white"},/area/shuttle/arrival/pre_game) "ga" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 8},/turf/unsimulated/floor{icon_state = "plating"; name = "plating"},/area/syndicate_mothership/elite_squad) "gb" = (/obj/machinery/door/airlock/external{frequency = 1380; icon_state = "door_locked"; id_tag = "trade_shuttle_bay_door"; locked = 1},/turf/unsimulated/floor{icon_state = "steel"},/area/syndicate_mothership{name = "\improper Trader Base"}) -"gc" = (/obj/machinery/light{dir = 8; icon_state = "tube1"; pixel_y = 0},/obj/structure/closet/walllocker/emerglocker{pixel_x = -28},/turf/simulated/shuttle/floor{ icon_state = "floor_white"},/area/shuttle/arrival/pre_game) -"gd" = (/turf/simulated/shuttle/floor{ icon_state = "floor_white"},/area/shuttle/arrival/pre_game) -"ge" = (/obj/machinery/light{dir = 4; icon_state = "tube1"},/obj/structure/closet/walllocker/emerglocker{pixel_x = 28},/turf/simulated/shuttle/floor{ icon_state = "floor_white"},/area/shuttle/arrival/pre_game) +"gc" = (/turf/simulated/shuttle/floor{icon_state = "floor_white"},/area/shuttle/arrival/pre_game) +"gd" = (/obj/machinery/light{dir = 8; icon_state = "tube1"; pixel_y = 0},/obj/structure/closet/walllocker/emerglocker{pixel_x = -28},/turf/simulated/shuttle/floor{icon_state = "floor_white"},/area/shuttle/arrival/pre_game) +"ge" = (/obj/machinery/light{dir = 4; icon_state = "tube1"},/obj/structure/closet/walllocker/emerglocker{pixel_x = 28},/turf/simulated/shuttle/floor{icon_state = "floor_white"},/area/shuttle/arrival/pre_game) "gf" = (/obj/machinery/door/airlock/external{name = "Shuttle Airlock"; req_access = list(150)},/obj/machinery/door/blast/regular{density = 0; icon_state = "pdoor0"; id = "syndicate_elite"; name = "Side Hull Door"; opacity = 0},/turf/simulated/shuttle/floor{icon_state = "floor4"},/area/shuttle/syndicate_elite/mothership) "gg" = (/turf/unsimulated/floor{icon_state = "plating"; name = "plating"},/area/syndicate_mothership/elite_squad) "gh" = (/obj/machinery/door/airlock/external{req_access = list(150)},/turf/unsimulated/floor{icon_state = "dark"},/area/syndicate_mothership/elite_squad) @@ -322,7 +322,7 @@ "gj" = (/obj/machinery/door/airlock/external{frequency = 1380; icon_state = "door_locked"; id_tag = "trade_shuttle_hatch"; locked = 1; name = "Shuttle Hatch"; req_access = list(13)},/turf/simulated/shuttle/floor/black,/area/shuttle/trade/centcom) "gk" = (/turf/simulated/shuttle/wall/dark,/area/shuttle/trade/centcom) "gl" = (/obj/structure/shuttle/window,/obj/structure/grille,/turf/simulated/shuttle/plating,/area/shuttle/arrival/pre_game) -"gm" = (/obj/structure/bed/chair{dir = 1},/obj/effect/landmark{name = "JoinLate"},/turf/simulated/shuttle/floor{ icon_state = "floor_white"},/area/shuttle/arrival/pre_game) +"gm" = (/obj/structure/bed/chair{dir = 1},/obj/effect/landmark{name = "JoinLate"},/turf/simulated/shuttle/floor{icon_state = "floor_white"},/area/shuttle/arrival/pre_game) "gn" = (/obj/machinery/door/airlock/glass_security{name = "Airlock"; req_access = list(150)},/obj/machinery/door/blast/regular{id = "syndicate_elite_mech_room"; name = "Mech Room Door"},/turf/unsimulated/floor{icon_state = "dark"},/area/syndicate_mothership/elite_squad) "go" = (/obj/structure/window/reinforced,/obj/machinery/door/blast/shutters{density = 0; icon_state = "shutter0"; id = "tradestarshutters"; name = "Blast Shutters"; opacity = 0},/obj/structure/grille,/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 8},/turf/simulated/shuttle/plating,/area/shuttle/trade/centcom) "gp" = (/obj/structure/window/reinforced,/obj/machinery/door/blast/shutters{density = 0; icon_state = "shutter0"; id = "tradestarshutters"; name = "Blast Shutters"; opacity = 0},/obj/structure/grille,/obj/structure/window/reinforced{dir = 1},/turf/simulated/shuttle/plating,/area/shuttle/trade/centcom) @@ -333,9 +333,9 @@ "gu" = (/turf/space,/obj/structure/shuttle/engine/propulsion{icon_state = "propulsion_r"; dir = 4},/turf/simulated/shuttle/plating/airless/carry,/area/shuttle/trade/centcom) "gv" = (/turf/space/transit/north,/area/shuttle/escape_pod2/transit) "gw" = (/turf/space/transit/north,/area/shuttle/escape_pod1/transit) -"gx" = (/obj/structure/table/standard,/turf/simulated/shuttle/floor{ icon_state = "floor_white"},/area/shuttle/arrival/pre_game) +"gx" = (/obj/structure/table/standard,/turf/simulated/shuttle/floor{icon_state = "floor_white"},/area/shuttle/arrival/pre_game) "gy" = (/obj/machinery/hologram/holopad,/obj/effect/landmark{name = "Observer-Start"},/turf/simulated/shuttle/floor,/area/shuttle/arrival/pre_game) -"gz" = (/obj/structure/table/standard,/obj/item/weapon/book/codex/lore/vir,/turf/simulated/shuttle/floor{ icon_state = "floor_white"},/area/shuttle/arrival/pre_game) +"gz" = (/obj/structure/table/standard,/obj/item/weapon/book/codex/lore/vir,/turf/simulated/shuttle/floor{icon_state = "floor_white"},/area/shuttle/arrival/pre_game) "gA" = (/obj/machinery/computer/pod{id = "syndicate_elite"; name = "Hull Door Control"},/turf/simulated/shuttle/floor/red,/area/shuttle/syndicate_elite/mothership) "gB" = (/obj/machinery/computer/syndicate_elite_shuttle,/turf/simulated/shuttle/floor/red,/area/shuttle/syndicate_elite/mothership) "gC" = (/obj/structure/closet{icon_closed = "cabinet_closed"; icon_opened = "cabinet_open"; icon_state = "cabinet_closed"},/turf/simulated/shuttle/floor/black,/area/shuttle/trade/centcom) @@ -348,7 +348,7 @@ "gJ" = (/obj/machinery/sleep_console{dir = 4},/turf/simulated/shuttle/floor/black,/area/shuttle/trade/centcom) "gK" = (/obj/machinery/sleeper{dir = 4},/turf/simulated/shuttle/floor/black,/area/shuttle/trade/centcom) "gL" = (/turf/space,/obj/structure/shuttle/engine/propulsion{dir = 4},/turf/simulated/shuttle/plating/airless/carry,/area/shuttle/trade/centcom) -"gM" = (/obj/structure/bed/chair,/obj/effect/landmark{name = "JoinLate"},/turf/simulated/shuttle/floor{ icon_state = "floor_white"},/area/shuttle/arrival/pre_game) +"gM" = (/obj/structure/bed/chair,/obj/effect/landmark{name = "JoinLate"},/turf/simulated/shuttle/floor{icon_state = "floor_white"},/area/shuttle/arrival/pre_game) "gN" = (/turf/simulated/shuttle/wall/dark/hard_corner,/area/shuttle/syndicate_elite/mothership) "gO" = (/obj/machinery/door/airlock/external{name = "Shuttle Airlock"; req_access = list(150)},/obj/machinery/door/blast/regular{icon_state = "pdoor1"; id = "syndicate_elite"; name = "Front Hull Door"; opacity = 1},/turf/simulated/shuttle/plating,/area/shuttle/syndicate_elite/mothership) "gP" = (/obj/structure/window/reinforced{dir = 4},/obj/machinery/door/blast/shutters{density = 0; dir = 8; icon_state = "shutter0"; id = "tradestarshutters"; name = "Blast Shutters"; opacity = 0},/obj/structure/grille,/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 8},/turf/simulated/shuttle/plating,/area/shuttle/trade/centcom) @@ -384,9 +384,9 @@ "ht" = (/obj/machinery/door/airlock/glass_medical{name = "Medical Bay"; req_access = list(160)},/turf/simulated/shuttle/floor/black,/area/shuttle/trade/centcom) "hu" = (/obj/machinery/optable,/turf/simulated/shuttle/floor/black,/area/shuttle/trade/centcom) "hv" = (/turf/space,/obj/structure/shuttle/engine/propulsion{icon_state = "propulsion_l"; dir = 4},/turf/simulated/shuttle/plating/airless/carry,/area/shuttle/trade/centcom) -"hw" = (/obj/structure/bed/chair{dir = 1},/obj/effect/landmark{name = "JoinLate"},/obj/structure/window/reinforced,/obj/item/device/radio/intercom{dir = 8; name = "Station Intercom (General)"; pixel_x = -21},/turf/simulated/shuttle/floor{ icon_state = "floor_white"},/area/shuttle/arrival/pre_game) -"hx" = (/obj/structure/bed/chair{dir = 1},/obj/effect/landmark{name = "JoinLate"},/obj/structure/window/reinforced,/turf/simulated/shuttle/floor{ icon_state = "floor_white"},/area/shuttle/arrival/pre_game) -"hy" = (/obj/structure/bed/chair{dir = 1},/obj/effect/landmark{name = "JoinLate"},/obj/structure/window/reinforced,/obj/item/device/radio/intercom{dir = 4; name = "Station Intercom (General)"; pixel_x = 26},/turf/simulated/shuttle/floor{ icon_state = "floor_white"},/area/shuttle/arrival/pre_game) +"hw" = (/obj/structure/bed/chair{dir = 1},/obj/effect/landmark{name = "JoinLate"},/obj/structure/window/reinforced,/turf/simulated/shuttle/floor{icon_state = "floor_white"},/area/shuttle/arrival/pre_game) +"hx" = (/obj/structure/bed/chair{dir = 1},/obj/effect/landmark{name = "JoinLate"},/obj/structure/window/reinforced,/obj/item/device/radio/intercom{dir = 8; name = "Station Intercom (General)"; pixel_x = -21},/turf/simulated/shuttle/floor{icon_state = "floor_white"},/area/shuttle/arrival/pre_game) +"hy" = (/obj/structure/bed/chair{dir = 1},/obj/effect/landmark{name = "JoinLate"},/obj/structure/window/reinforced,/obj/item/device/radio/intercom{dir = 4; name = "Station Intercom (General)"; pixel_x = 26},/turf/simulated/shuttle/floor{icon_state = "floor_white"},/area/shuttle/arrival/pre_game) "hz" = (/obj/structure/closet/walllocker/emerglocker{pixel_y = -32},/turf/simulated/shuttle/floor/black,/area/shuttle/trade/centcom) "hA" = (/obj/machinery/button/remote/blast_door{id = "tradestarshutters"; name = "remote shutter control"; pixel_x = 30; req_access = list(160)},/turf/simulated/shuttle/floor/black,/area/shuttle/trade/centcom) "hB" = (/obj/structure/table/steel_reinforced,/obj/random/firstaid,/obj/random/firstaid,/obj/random/firstaid,/obj/random/firstaid,/turf/simulated/shuttle/floor/black,/area/shuttle/trade/centcom) @@ -407,8 +407,8 @@ "hQ" = (/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced,/obj/structure/grille,/obj/structure/window/reinforced{dir = 4},/turf/simulated/shuttle/plating,/area/shuttle/trade/centcom) "hR" = (/obj/structure/table/standard,/obj/item/clothing/gloves/sterile/latex,/obj/item/clothing/mask/surgical,/obj/item/weapon/surgical/retractor{pixel_x = 0; pixel_y = 6},/obj/item/weapon/surgical/scalpel,/obj/item/weapon/surgical/surgicaldrill,/obj/item/weapon/surgical/circular_saw,/obj/item/stack/nanopaste,/obj/item/weapon/surgical/hemostat{pixel_y = 4},/obj/item/weapon/surgical/cautery{pixel_y = 4},/obj/item/weapon/surgical/FixOVein{pixel_x = -6; pixel_y = 1},/obj/item/stack/medical/advanced/bruise_pack,/obj/item/weapon/surgical/bonesetter,/obj/item/weapon/surgical/bonegel{pixel_x = 4; pixel_y = 3},/turf/simulated/shuttle/floor/black,/area/shuttle/trade/centcom) "hS" = (/obj/machinery/iv_drip,/turf/simulated/shuttle/floor/black,/area/shuttle/trade/centcom) -"hT" = (/obj/machinery/vending/snack,/turf/simulated/shuttle/floor{ icon_state = "floor_white"},/area/shuttle/arrival/pre_game) -"hU" = (/obj/machinery/vending/cigarette,/turf/simulated/shuttle/floor{ icon_state = "floor_white"},/area/shuttle/arrival/pre_game) +"hT" = (/obj/machinery/vending/snack,/turf/simulated/shuttle/floor{icon_state = "floor_white"},/area/shuttle/arrival/pre_game) +"hU" = (/obj/machinery/vending/cigarette,/turf/simulated/shuttle/floor{icon_state = "floor_white"},/area/shuttle/arrival/pre_game) "hV" = (/turf/unsimulated/wall,/area/syndicate_mothership) "hW" = (/obj/machinery/door/blast/shutters{density = 0; icon_state = "shutter0"; id = "tradebridgeshutters"; name = "Blast Shutters"; opacity = 0},/obj/structure/grille,/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced{dir = 1},/turf/simulated/shuttle/plating,/area/shuttle/trade/centcom) "hX" = (/obj/machinery/door/blast/shutters{density = 0; icon_state = "shutter0"; id = "tradebridgeshutters"; name = "Blast Shutters"; opacity = 0},/obj/structure/window/reinforced{dir = 4},/obj/structure/grille,/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 1},/turf/simulated/shuttle/plating,/area/shuttle/trade/centcom) @@ -417,9 +417,9 @@ "ia" = (/obj/machinery/door/airlock/multi_tile/glass,/turf/simulated/shuttle/floor/darkred,/area/shuttle/trade/centcom) "ib" = (/obj/structure/closet/crate/secure/weapon,/turf/simulated/shuttle/floor/black,/area/shuttle/trade/centcom) "ic" = (/obj/structure/shuttle/engine/heater,/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 4},/turf/simulated/floor/airless,/area/shuttle/arrival/pre_game) -"id" = (/obj/machinery/vending/cola,/turf/simulated/shuttle/floor{ icon_state = "floor_white"},/area/shuttle/arrival/pre_game) -"ie" = (/obj/machinery/light,/obj/structure/table/standard,/turf/simulated/shuttle/floor{ icon_state = "floor_white"},/area/shuttle/arrival/pre_game) -"if" = (/obj/machinery/vending/coffee,/turf/simulated/shuttle/floor{ icon_state = "floor_white"},/area/shuttle/arrival/pre_game) +"id" = (/obj/machinery/vending/cola,/turf/simulated/shuttle/floor{icon_state = "floor_white"},/area/shuttle/arrival/pre_game) +"ie" = (/obj/machinery/light,/obj/structure/table/standard,/turf/simulated/shuttle/floor{icon_state = "floor_white"},/area/shuttle/arrival/pre_game) +"if" = (/obj/machinery/vending/coffee,/turf/simulated/shuttle/floor{icon_state = "floor_white"},/area/shuttle/arrival/pre_game) "ig" = (/obj/structure/shuttle/engine/heater,/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 8},/turf/simulated/floor/airless,/area/shuttle/arrival/pre_game) "ih" = (/turf/unsimulated/floor{icon = 'icons/turf/snow.dmi'; icon_state = "snow"},/area/syndicate_mothership) "ii" = (/obj/structure/flora/grass/brown,/turf/unsimulated/floor{icon = 'icons/turf/snow.dmi'; icon_state = "snow"},/area/syndicate_mothership) @@ -438,7 +438,7 @@ "iv" = (/obj/structure/shuttle/engine/heater,/obj/structure/window/reinforced{dir = 1},/turf/simulated/floor/airless,/area/shuttle/arrival/pre_game) "iw" = (/obj/machinery/door/blast/shutters{density = 0; dir = 8; icon_state = "shutter0"; id = "tradebridgeshutters"; name = "Blast Shutters"; opacity = 0},/obj/structure/grille,/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced{dir = 1},/turf/simulated/shuttle/plating,/area/shuttle/trade/centcom) "ix" = (/obj/structure/frame/computer,/turf/simulated/shuttle/floor/black,/area/shuttle/trade/centcom) -"iy" = (/obj/machinery/light{dir = 4},/obj/structure/sign/kiddieplaque{desc = "A plaque commemorating the construction of the cargo ship Beruang."; name = "Beruang"; pixel_x = 32},/mob/living/simple_animal/corgi/tamaskan/spice,/turf/simulated/shuttle/floor/darkred,/area/shuttle/trade/centcom) +"iy" = (/obj/machinery/light{dir = 4},/obj/structure/sign/kiddieplaque{desc = "A plaque commemorating the construction of the cargo ship Beruang."; name = "Beruang"; pixel_x = 32},/mob/living/simple_mob/animal/passive/dog/tamaskan/Spice,/turf/simulated/shuttle/floor/darkred,/area/shuttle/trade/centcom) "iz" = (/obj/machinery/door/airlock/silver{name = "Toilet"},/turf/simulated/shuttle/floor/white,/area/shuttle/trade/centcom) "iA" = (/obj/machinery/door/airlock/silver{name = "Restroom"},/turf/simulated/shuttle/floor/white,/area/shuttle/trade/centcom) "iB" = (/obj/structure/undies_wardrobe,/turf/simulated/shuttle/floor/black,/area/shuttle/trade/centcom) @@ -534,9 +534,9 @@ "kn" = (/obj/structure/window/reinforced{dir = 1},/obj/machinery/door/blast/shutters{density = 0; dir = 2; icon_state = "shutter0"; id = "tradeportshutters"; name = "Blast Shutters"; opacity = 0},/obj/structure/grille,/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced,/turf/simulated/shuttle/plating,/area/shuttle/trade/centcom) "ko" = (/obj/structure/window/reinforced{dir = 1},/obj/machinery/door/blast/shutters{density = 0; dir = 2; icon_state = "shutter0"; id = "tradeportshutters"; name = "Blast Shutters"; opacity = 0},/obj/structure/grille,/obj/structure/window/reinforced,/turf/simulated/shuttle/plating,/area/shuttle/trade/centcom) "kp" = (/obj/structure/window/reinforced{dir = 1},/obj/machinery/door/blast/shutters{density = 0; dir = 2; icon_state = "shutter0"; id = "tradeportshutters"; name = "Blast Shutters"; opacity = 0},/obj/structure/grille,/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced,/turf/simulated/shuttle/plating,/area/shuttle/trade/centcom) -"kq" = (/obj/machinery/atmospherics/pipe/simple/visible{ icon_state = "intact"; dir = 5},/obj/machinery/atm{pixel_x = -32},/obj/machinery/meter,/turf/simulated/shuttle/floor/black,/area/shuttle/trade/centcom) +"kq" = (/obj/machinery/atmospherics/pipe/simple/visible{icon_state = "intact"; dir = 5},/obj/machinery/atm{pixel_x = -32},/obj/machinery/meter,/turf/simulated/shuttle/floor/black,/area/shuttle/trade/centcom) "kr" = (/obj/machinery/access_button{command = "cycle_interior"; frequency = 1331; master_tag = "trade2_control"; pixel_x = -22; pixel_y = -32; req_one_access = list(150)},/obj/machinery/atmospherics/pipe/manifold/visible{dir = 1},/turf/simulated/shuttle/floor/black,/area/shuttle/trade/centcom) -"ks" = (/obj/machinery/atmospherics/pipe/simple/visible{ icon_state = "intact"; dir = 10},/turf/simulated/shuttle/floor/black,/area/shuttle/trade/centcom) +"ks" = (/obj/machinery/atmospherics/pipe/simple/visible{icon_state = "intact"; dir = 10},/turf/simulated/shuttle/floor/black,/area/shuttle/trade/centcom) "kt" = (/obj/structure/table/standard,/obj/item/clothing/suit/space/void/merc,/obj/item/clothing/suit/space/void/merc,/obj/item/clothing/suit/space/void/merc,/obj/item/clothing/shoes/magboots,/obj/item/clothing/shoes/magboots,/obj/item/clothing/shoes/magboots,/obj/item/clothing/head/helmet/space/void/merc,/obj/item/clothing/head/helmet/space/void/merc,/obj/item/clothing/head/helmet/space/void/merc,/turf/simulated/shuttle/floor/black,/area/shuttle/trade/centcom) "ku" = (/obj/structure/table/standard,/obj/item/stack/cable_coil,/obj/item/stack/cable_coil,/obj/item/clothing/gloves/yellow,/obj/item/clothing/gloves/yellow,/obj/item/clothing/gloves/yellow,/turf/simulated/shuttle/floor/black,/area/shuttle/trade/centcom) "kv" = (/obj/structure/table/standard,/obj/item/stack/material/steel{amount = 2},/obj/item/stack/material/steel{amount = 2},/obj/item/stack/material/glass{amount = 15},/obj/item/stack/material/glass{amount = 15},/turf/simulated/shuttle/floor/black,/area/shuttle/trade/centcom) @@ -551,7 +551,7 @@ "kE" = (/obj/structure/filingcabinet/filingcabinet,/turf/simulated/shuttle/floor/black,/area/shuttle/trade/centcom) "kF" = (/obj/machinery/light,/turf/simulated/floor/carpet,/area/shuttle/trade/centcom) "kG" = (/obj/structure/bed/chair/comfy/black{dir = 1},/turf/simulated/floor/carpet,/area/shuttle/trade/centcom) -"kH" = (/obj/structure/flora/pottedplant{ icon_state = "plant-10"},/turf/simulated/floor/carpet,/area/shuttle/trade/centcom) +"kH" = (/obj/structure/flora/pottedplant{icon_state = "plant-10"},/turf/simulated/floor/carpet,/area/shuttle/trade/centcom) "kI" = (/obj/machinery/atmospherics/pipe/simple/visible,/obj/machinery/door/airlock/external{frequency = 1331; icon_state = "door_locked"; id_tag = "trade2_shuttle_inner"; locked = 1; name = "Ship Hatch"; req_access = list(13)},/turf/simulated/shuttle/floor/black,/area/shuttle/trade/centcom) "kJ" = (/obj/machinery/door/airlock/external{frequency = 1331; icon_state = "door_locked"; id_tag = "trade2_shuttle_inner"; locked = 1; name = "Ship Hatch"; req_access = list(13)},/obj/machinery/atmospherics/pipe/simple/visible,/turf/simulated/shuttle/floor/black,/area/shuttle/trade/centcom) "kK" = (/obj/machinery/vending/engivend,/turf/simulated/shuttle/floor/black,/area/shuttle/trade/centcom) @@ -598,14 +598,14 @@ "lz" = (/turf/simulated/shuttle/wall{dir = 2; icon_state = "diagonalWall3"},/area/syndicate_mothership{name = "\improper Ninja Base"}) "lA" = (/obj/item/weapon/paper{info = "Some stuff is missing..."; name = "Insert alien artifacts here."},/turf/unsimulated/floor{icon_state = "dark"},/area/alien) "lB" = (/obj/machinery/door/airlock/hatch,/turf/unsimulated/floor{icon_state = "dark"},/area/alien) -"lC" = (/obj/structure/table/steel_reinforced,/obj/structure/mirror,/turf/simulated/shuttle/floor{ icon_state = "floor_red"},/area/syndicate_mothership{name = "\improper Ninja Base"}) -"lD" = (/obj/structure/table/steel_reinforced,/obj/item/clothing/mask/balaclava/tactical,/obj/item/clothing/mask/balaclava,/turf/simulated/shuttle/floor{ icon_state = "floor_red"},/area/syndicate_mothership{name = "\improper Ninja Base"}) -"lE" = (/obj/structure/undies_wardrobe,/turf/simulated/shuttle/floor{ icon_state = "floor_red"},/area/syndicate_mothership{name = "\improper Ninja Base"}) +"lC" = (/obj/structure/table/steel_reinforced,/obj/item/clothing/mask/balaclava/tactical,/obj/item/clothing/mask/balaclava,/turf/simulated/shuttle/floor{icon_state = "floor_red"},/area/syndicate_mothership{name = "\improper Ninja Base"}) +"lD" = (/obj/structure/table/steel_reinforced,/obj/structure/mirror,/turf/simulated/shuttle/floor{icon_state = "floor_red"},/area/syndicate_mothership{name = "\improper Ninja Base"}) +"lE" = (/obj/structure/undies_wardrobe,/turf/simulated/shuttle/floor{icon_state = "floor_red"},/area/syndicate_mothership{name = "\improper Ninja Base"}) "lF" = (/obj/structure/closet/acloset,/turf/unsimulated/floor{icon_state = "dark"},/area/alien) "lG" = (/turf/unsimulated/floor{icon = 'icons/turf/snow.dmi'; icon_state = "snow"},/obj/structure/flora/bush,/turf/unsimulated/floor{icon = 'icons/turf/snow.dmi'; icon_state = "gravsnow_corner"; dir = 8},/area/syndicate_mothership) "lH" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 8},/turf/simulated/shuttle/plating,/area/syndicate_mothership{name = "\improper Ninja Base"}) -"lI" = (/turf/simulated/shuttle/floor{ icon_state = "floor_red"},/area/syndicate_mothership{name = "\improper Ninja Base"}) -"lJ" = (/obj/structure/bed/chair{dir = 1},/obj/effect/landmark{name = "ninjastart"},/turf/simulated/shuttle/floor{ icon_state = "floor_red"},/area/syndicate_mothership{name = "\improper Ninja Base"}) +"lI" = (/obj/structure/bed/chair{dir = 1},/obj/effect/landmark{name = "ninjastart"},/turf/simulated/shuttle/floor{icon_state = "floor_red"},/area/syndicate_mothership{name = "\improper Ninja Base"}) +"lJ" = (/turf/simulated/shuttle/floor{icon_state = "floor_red"},/area/syndicate_mothership{name = "\improper Ninja Base"}) "lK" = (/turf/space,/area/shuttle/alien/base) "lL" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 8},/turf/simulated/shuttle/plating,/area/syndicate_mothership{name = "\improper Ninja Base"}) "lM" = (/obj/structure/shuttle/engine/heater,/obj/structure/window/reinforced{dir = 1},/turf/simulated/floor/airless,/area/syndicate_mothership) @@ -614,9 +614,9 @@ "lP" = (/turf/space,/obj/structure/shuttle/engine/propulsion,/turf/simulated/shuttle/plating/airless/carry,/area/syndicate_mothership) "lQ" = (/turf/space,/obj/structure/shuttle/engine/propulsion{icon_state = "propulsion_r"},/turf/simulated/shuttle/plating/airless/carry,/area/syndicate_mothership) "lR" = (/obj/structure/grille,/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 8},/turf/simulated/shuttle/plating,/area/syndicate_mothership{name = "\improper Ninja Base"}) -"lS" = (/obj/machinery/computer/teleporter,/turf/simulated/shuttle/floor{ icon_state = "floor_red"},/area/syndicate_mothership{name = "\improper Ninja Base"}) -"lT" = (/obj/machinery/teleport/station,/turf/simulated/shuttle/floor{ icon_state = "floor_red"},/area/syndicate_mothership{name = "\improper Ninja Base"}) -"lU" = (/obj/machinery/teleport/hub,/turf/simulated/shuttle/floor{ icon_state = "floor_red"},/area/syndicate_mothership{name = "\improper Ninja Base"}) +"lS" = (/obj/machinery/teleport/station,/turf/simulated/shuttle/floor{icon_state = "floor_red"},/area/syndicate_mothership{name = "\improper Ninja Base"}) +"lT" = (/obj/machinery/computer/teleporter,/turf/simulated/shuttle/floor{icon_state = "floor_red"},/area/syndicate_mothership{name = "\improper Ninja Base"}) +"lU" = (/obj/machinery/teleport/hub,/turf/simulated/shuttle/floor{icon_state = "floor_red"},/area/syndicate_mothership{name = "\improper Ninja Base"}) "lV" = (/turf/unsimulated/wall,/area) "lW" = (/obj/structure/shuttle/engine/heater,/obj/structure/window/reinforced{dir = 1},/turf/simulated/floor/airless,/area/syndicate_mothership{name = "\improper Ninja Base"}) "lX" = (/obj/effect/step_trigger/thrower{affect_ghosts = 1; direction = 2; name = "thrower_throwdown"; tiles = 0},/obj/effect/step_trigger/teleporter/random{affect_ghosts = 1; name = "escapeshuttle_leave"; teleport_x = 25; teleport_x_offset = 245; teleport_y = 25; teleport_y_offset = 245; teleport_z = 6; teleport_z_offset = 6},/obj/effect/step_trigger/teleporter/random{affect_ghosts = 1; name = "escapeshuttle_leave"; teleport_x = 25; teleport_x_offset = 245; teleport_y = 25; teleport_y_offset = 245; teleport_z = 6; teleport_z_offset = 6},/turf/space,/area/space) @@ -820,10 +820,10 @@ "pN" = (/obj/structure/grille,/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 1},/obj/machinery/door/blast/shutters{density = 0; icon_state = "shutter0"; id = "syndieshutters"; name = "Blast Shutters"; opacity = 0},/turf/simulated/shuttle/plating,/area/syndicate_station/start) "pO" = (/obj/structure/grille,/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 4},/obj/machinery/door/blast/shutters{density = 0; icon_state = "shutter0"; id = "syndieshutters"; name = "Blast Shutters"; opacity = 0},/turf/simulated/shuttle/plating,/area/syndicate_station/start) "pP" = (/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 8},/obj/structure/grille,/turf/unsimulated/floor{icon_state = "plating"; name = "plating"},/area/syndicate_mothership) -"pQ" = (/turf/unsimulated/floor{ name = "plating"; icon_state = "cult"},/area/syndicate_mothership) -"pR" = (/obj/structure/sign/double/map/left{pixel_y = 32},/turf/unsimulated/floor{ name = "plating"; icon_state = "cult"},/area/syndicate_mothership) -"pS" = (/obj/structure/sign/double/map/right{pixel_y = 32},/turf/unsimulated/floor{ name = "plating"; icon_state = "cult"},/area/syndicate_mothership) -"pT" = (/obj/machinery/vending/snack{name = "hacked Getmore Chocolate Corp"; prices = list()},/turf/unsimulated/floor{ name = "plating"; icon_state = "cult"},/area/syndicate_mothership) +"pQ" = (/turf/unsimulated/floor{name = "plating"; icon_state = "cult"},/area/syndicate_mothership) +"pR" = (/obj/structure/sign/double/map/right{pixel_y = 32},/turf/unsimulated/floor{name = "plating"; icon_state = "cult"},/area/syndicate_mothership) +"pS" = (/obj/structure/sign/double/map/left{pixel_y = 32},/turf/unsimulated/floor{name = "plating"; icon_state = "cult"},/area/syndicate_mothership) +"pT" = (/obj/machinery/vending/snack{name = "hacked Getmore Chocolate Corp"; prices = list()},/turf/unsimulated/floor{name = "plating"; icon_state = "cult"},/area/syndicate_mothership) "pU" = (/obj/structure/table/standard,/obj/machinery/chemical_dispenser/bar_soft/full,/turf/unsimulated/floor{icon_state = "white"},/area/syndicate_mothership) "pV" = (/obj/structure/table/standard,/obj/item/weapon/storage/box/glasses/square{pixel_x = 1; pixel_y = 4},/turf/unsimulated/floor{icon_state = "white"},/area/syndicate_mothership) "pW" = (/obj/structure/sink/kitchen{pixel_y = 28},/turf/unsimulated/floor{icon_state = "white"},/area/syndicate_mothership) @@ -848,7 +848,7 @@ "qp" = (/obj/machinery/computer/shuttle_control/multi/syndicate,/turf/simulated/shuttle/floor/darkred,/area/syndicate_station/start) "qq" = (/obj/structure/frame/computer,/turf/simulated/shuttle/floor/darkred,/area/syndicate_station/start) "qr" = (/obj/structure/table/standard,/obj/machinery/button/remote/blast_door{id = "syndieshutters"; name = "remote shutter control"; req_access = list(150)},/turf/simulated/shuttle/floor/darkred,/area/syndicate_station/start) -"qs" = (/obj/structure/bed/chair/comfy/black,/turf/unsimulated/floor{ name = "plating"; icon_state = "cult"},/area/syndicate_mothership) +"qs" = (/obj/structure/bed/chair/comfy/black,/turf/unsimulated/floor{name = "plating"; icon_state = "cult"},/area/syndicate_mothership) "qt" = (/obj/machinery/door/airlock/centcom{name = "Kitchen"; opacity = 1; req_access = list(150)},/turf/unsimulated/floor{icon_state = "white"},/area/syndicate_mothership) "qu" = (/turf/unsimulated/floor{icon_state = "white"},/area/syndicate_mothership) "qv" = (/obj/structure/table/reinforced,/obj/machinery/microwave{pixel_x = -1; pixel_y = 8},/turf/unsimulated/floor{icon_state = "white"},/area/syndicate_mothership) @@ -869,10 +869,10 @@ "qK" = (/obj/structure/table/standard,/obj/machinery/microwave{pixel_x = -1; pixel_y = 2},/turf/simulated/shuttle/floor/darkred,/area/syndicate_station/start) "qL" = (/turf/simulated/shuttle/floor/darkred,/area/syndicate_station/start) "qM" = (/obj/structure/bed/chair{dir = 1},/turf/simulated/shuttle/floor/darkred,/area/syndicate_station/start) -"qN" = (/obj/structure/bed/chair/comfy/black{dir = 4},/turf/unsimulated/floor{ name = "plating"; icon_state = "cult"},/area/syndicate_mothership) -"qO" = (/obj/item/weapon/folder{pixel_y = 2},/obj/structure/table/glass,/turf/unsimulated/floor{ name = "plating"; icon_state = "cult"},/area/syndicate_mothership) -"qP" = (/obj/item/weapon/paper_bin{pixel_x = -3; pixel_y = 7},/obj/item/weapon/pen{pixel_y = 4},/obj/structure/table/glass,/turf/unsimulated/floor{ name = "plating"; icon_state = "cult"},/area/syndicate_mothership) -"qQ" = (/obj/structure/bed/chair/comfy/black{dir = 8},/turf/unsimulated/floor{ name = "plating"; icon_state = "cult"},/area/syndicate_mothership) +"qN" = (/obj/structure/bed/chair/comfy/black{dir = 4},/turf/unsimulated/floor{name = "plating"; icon_state = "cult"},/area/syndicate_mothership) +"qO" = (/obj/item/weapon/paper_bin{pixel_x = -3; pixel_y = 7},/obj/item/weapon/pen{pixel_y = 4},/obj/structure/table/glass,/turf/unsimulated/floor{name = "plating"; icon_state = "cult"},/area/syndicate_mothership) +"qP" = (/obj/item/weapon/folder{pixel_y = 2},/obj/structure/table/glass,/turf/unsimulated/floor{name = "plating"; icon_state = "cult"},/area/syndicate_mothership) +"qQ" = (/obj/structure/bed/chair/comfy/black{dir = 8},/turf/unsimulated/floor{name = "plating"; icon_state = "cult"},/area/syndicate_mothership) "qR" = (/obj/structure/table/reinforced,/obj/item/weapon/storage/box/donkpockets{pixel_x = 3; pixel_y = 3},/turf/unsimulated/floor{icon_state = "white"},/area/syndicate_mothership) "qS" = (/obj/structure/table/rack,/obj/item/clothing/shoes/magboots,/obj/item/clothing/suit/space/syndicate/black/green,/obj/item/clothing/mask/breath,/obj/item/clothing/head/helmet/space/syndicate/black/green,/turf/unsimulated/floor{icon_state = "dark"},/area/syndicate_mothership) "qT" = (/obj/structure/table/rack,/obj/item/clothing/shoes/magboots,/obj/item/clothing/suit/space/syndicate/black/blue,/obj/item/clothing/mask/breath,/obj/item/clothing/head/helmet/space/syndicate/black/blue,/turf/unsimulated/floor{icon_state = "dark"},/area/syndicate_mothership) @@ -884,20 +884,20 @@ "qZ" = (/obj/structure/closet/crate/medical,/obj/item/weapon/surgical/circular_saw,/obj/item/weapon/surgical/surgicaldrill,/obj/item/weapon/surgical/bonegel{pixel_x = 4; pixel_y = 3},/obj/item/weapon/surgical/bonesetter,/obj/item/weapon/surgical/scalpel,/obj/item/weapon/surgical/retractor{pixel_x = 0; pixel_y = 6},/obj/item/weapon/surgical/hemostat{pixel_y = 4},/obj/item/weapon/surgical/cautery{pixel_y = 4},/obj/item/weapon/surgical/FixOVein{pixel_x = -6; pixel_y = 1},/obj/item/stack/nanopaste,/obj/item/weapon/tank/anesthetic,/obj/item/clothing/mask/breath/medical,/obj/item/clothing/mask/surgical,/obj/item/clothing/mask/surgical,/turf/unsimulated/floor{icon_state = "dark"},/area/centcom/specops) "ra" = (/turf/space,/obj/structure/shuttle/engine/propulsion{icon_state = "propulsion"; dir = 8},/turf/simulated/shuttle/plating/airless/carry,/area/shuttle/specops/centcom) "rb" = (/obj/structure/shuttle/engine/heater{icon_state = "heater"; dir = 8},/obj/structure/window/reinforced{dir = 4; health = 1e+006},/turf/simulated/shuttle/plating/airless,/area/shuttle/specops/centcom) -"rc" = (/obj/machinery/computer/security/telescreen{desc = ""; name = "Spec. Ops. Monitor"; network = list("NETWORK_ERT"); pixel_y = 30},/obj/machinery/computer/shuttle_control/specops,/turf/simulated/shuttle/floor{ icon_state = "floor_red"},/area/shuttle/specops/centcom) -"rd" = (/obj/structure/bed/chair,/turf/simulated/shuttle/floor{ icon_state = "floor_red"},/area/shuttle/specops/centcom) -"re" = (/obj/machinery/embedded_controller/radio/simple_docking_controller{frequency = 1380; id_tag = "specops_shuttle_port"; name = "port docking hatch controller"; pixel_x = 0; pixel_y = 25; tag_door = "specops_shuttle_port_hatch"},/obj/structure/bed/chair,/turf/simulated/shuttle/floor{ icon_state = "floor_red"},/area/shuttle/specops/centcom) -"rf" = (/turf/simulated/shuttle/floor{ icon_state = "floor_red"},/area/shuttle/specops/centcom) -"rg" = (/obj/machinery/recharger/wallcharger{pixel_x = 4; pixel_y = 32},/turf/simulated/shuttle/floor{ icon_state = "floor_red"},/area/shuttle/specops/centcom) -"rh" = (/obj/machinery/recharger/wallcharger{pixel_x = 4; pixel_y = 32},/obj/machinery/vending/wallmed1{layer = 3.3; name = "Emergency NanoMed"; pixel_x = 28; pixel_y = 0},/obj/machinery/light{dir = 4},/turf/simulated/shuttle/floor{ icon_state = "floor_red"},/area/shuttle/specops/centcom) +"rc" = (/obj/structure/bed/chair,/turf/simulated/shuttle/floor{icon_state = "floor_red"},/area/shuttle/specops/centcom) +"rd" = (/obj/machinery/computer/security/telescreen{desc = ""; name = "Spec. Ops. Monitor"; network = list("NETWORK_ERT"); pixel_y = 30},/obj/machinery/computer/shuttle_control/specops,/turf/simulated/shuttle/floor{icon_state = "floor_red"},/area/shuttle/specops/centcom) +"re" = (/turf/simulated/shuttle/floor{icon_state = "floor_red"},/area/shuttle/specops/centcom) +"rf" = (/obj/machinery/embedded_controller/radio/simple_docking_controller{frequency = 1380; id_tag = "specops_shuttle_port"; name = "port docking hatch controller"; pixel_x = 0; pixel_y = 25; tag_door = "specops_shuttle_port_hatch"},/obj/structure/bed/chair,/turf/simulated/shuttle/floor{icon_state = "floor_red"},/area/shuttle/specops/centcom) +"rg" = (/obj/machinery/recharger/wallcharger{pixel_x = 4; pixel_y = 32},/obj/machinery/vending/wallmed1{layer = 3.3; name = "Emergency NanoMed"; pixel_x = 28; pixel_y = 0},/obj/machinery/light{dir = 4},/turf/simulated/shuttle/floor{icon_state = "floor_red"},/area/shuttle/specops/centcom) +"rh" = (/obj/machinery/recharger/wallcharger{pixel_x = 4; pixel_y = 32},/turf/simulated/shuttle/floor{icon_state = "floor_red"},/area/shuttle/specops/centcom) "ri" = (/turf/simulated/shuttle/wall/dark{hard_corner = 1; join_group = "shuttle_ert"},/area/shuttle/specops/centcom) "rj" = (/obj/effect/floor_decal/corner/blue/diagonal{dir = 4},/obj/effect/floor_decal/corner/red/diagonal,/obj/machinery/door/airlock/glass,/turf/unsimulated/floor{icon_state = "steel"},/area/centcom/specops) "rk" = (/obj/item/weapon/stool/padded,/obj/effect/floor_decal/corner/red/diagonal,/obj/effect/floor_decal/corner/blue/diagonal{dir = 4},/turf/unsimulated/floor{icon_state = "steel"},/area/centcom/specops) "rl" = (/obj/structure/table/standard,/obj/item/weapon/storage/box/donkpockets{pixel_x = 2; pixel_y = 3},/obj/machinery/light{dir = 8; icon_state = "tube1"; pixel_y = 0},/turf/simulated/shuttle/floor/darkred,/area/syndicate_station/start) "rm" = (/obj/structure/bed/chair{dir = 4},/turf/simulated/shuttle/floor/darkred,/area/syndicate_station/start) "rn" = (/obj/structure/frame/computer,/obj/machinery/light{dir = 4},/turf/simulated/shuttle/floor/darkred,/area/syndicate_station/start) -"ro" = (/obj/structure/bed/chair/comfy/black{dir = 1},/turf/unsimulated/floor{ name = "plating"; icon_state = "cult"},/area/syndicate_mothership) -"rp" = (/obj/machinery/vending/cola{name = "hacked Robust Softdrinks"; prices = list()},/turf/unsimulated/floor{ name = "plating"; icon_state = "cult"},/area/syndicate_mothership) +"ro" = (/obj/structure/bed/chair/comfy/black{dir = 1},/turf/unsimulated/floor{name = "plating"; icon_state = "cult"},/area/syndicate_mothership) +"rp" = (/obj/machinery/vending/cola{name = "hacked Robust Softdrinks"; prices = list()},/turf/unsimulated/floor{name = "plating"; icon_state = "cult"},/area/syndicate_mothership) "rq" = (/obj/structure/closet/secure_closet/freezer/kitchen{req_access = list(150)},/turf/unsimulated/floor{icon_state = "white"},/area/syndicate_mothership) "rr" = (/obj/structure/reagent_dispensers/beerkeg/fakenuke,/turf/unsimulated/floor{icon_state = "white"},/area/syndicate_mothership) "rs" = (/obj/structure/table/reinforced,/obj/item/weapon/tray{pixel_y = 5},/turf/unsimulated/floor{icon_state = "white"},/area/syndicate_mothership) @@ -906,20 +906,20 @@ "rv" = (/obj/structure/table/rack,/obj/item/clothing/shoes/magboots,/obj/item/clothing/suit/space/syndicate/black/orange,/obj/item/clothing/mask/breath,/obj/item/clothing/head/helmet/space/syndicate/black/orange,/turf/unsimulated/floor{icon_state = "dark"},/area/syndicate_mothership) "rw" = (/obj/machinery/iv_drip,/turf/unsimulated/floor{icon_state = "dark"},/area/centcom/specops) "rx" = (/obj/structure/shuttle/engine/heater{icon_state = "heater"; dir = 8},/obj/structure/window/reinforced{dir = 4},/turf/simulated/shuttle/plating/airless,/area/shuttle/specops/centcom) -"ry" = (/obj/structure/bed/chair{dir = 4},/obj/machinery/light{icon_state = "tube1"; dir = 8},/turf/simulated/shuttle/floor{ icon_state = "floor_red"},/area/shuttle/specops/centcom) -"rz" = (/obj/machinery/embedded_controller/radio/simple_docking_controller{frequency = 1380; id_tag = "specops_shuttle_fore"; name = "forward docking hatch controller"; pixel_x = 0; pixel_y = -25; tag_door = "specops_shuttle_fore_hatch"},/turf/simulated/shuttle/floor{ icon_state = "floor_red"},/area/shuttle/specops/centcom) +"ry" = (/obj/structure/bed/chair{dir = 4},/obj/machinery/light{icon_state = "tube1"; dir = 8},/turf/simulated/shuttle/floor{icon_state = "floor_red"},/area/shuttle/specops/centcom) +"rz" = (/obj/machinery/embedded_controller/radio/simple_docking_controller{frequency = 1380; id_tag = "specops_shuttle_fore"; name = "forward docking hatch controller"; pixel_x = 0; pixel_y = -25; tag_door = "specops_shuttle_fore_hatch"},/turf/simulated/shuttle/floor{icon_state = "floor_red"},/area/shuttle/specops/centcom) "rA" = (/obj/machinery/door/airlock/external{frequency = 1380; icon_state = "door_locked"; id_tag = "specops_shuttle_fore_hatch"; locked = 1; name = "Forward Docking Hatch"; req_access = list(13)},/turf/simulated/shuttle/plating,/area/shuttle/specops/centcom) -"rB" = (/obj/effect/floor_decal/corner/blue/diagonal{dir = 4},/obj/effect/floor_decal/corner/red/diagonal,/mob/living/simple_animal/corgi/puppy{name = "Bockscar"},/turf/unsimulated/floor{icon_state = "steel"},/area/centcom/specops) +"rB" = (/obj/effect/floor_decal/corner/blue/diagonal{dir = 4},/obj/effect/floor_decal/corner/red/diagonal,/mob/living/simple_mob/animal/passive/dog/corgi/puppy{name = "Bockscar"},/turf/unsimulated/floor{icon_state = "steel"},/area/centcom/specops) "rC" = (/obj/structure/table/standard,/obj/item/stack/material/glass{amount = 15},/obj/item/weapon/cell{charge = 100; maxcharge = 15000},/turf/simulated/shuttle/floor/darkred,/area/syndicate_station/start) "rD" = (/obj/item/device/radio/intercom{desc = "Talk through this. Evilly"; frequency = 1213; name = "Syndicate Intercom"; pixel_y = -32; subspace_transmission = 1; syndie = 1},/obj/machinery/light,/turf/simulated/shuttle/floor/darkred,/area/syndicate_station/start) "rE" = (/obj/structure/table/standard,/obj/item/weapon/paper_bin{pixel_x = -3; pixel_y = 8},/obj/item/weapon/pen{pixel_y = 4},/turf/simulated/shuttle/floor/darkred,/area/syndicate_station/start) -"rF" = (/obj/machinery/vending/cigarette{name = "hacked cigarette machine"; prices = list(); products = list(/obj/item/weapon/storage/fancy/cigarettes = 10, /obj/item/weapon/storage/box/matches = 10, /obj/item/weapon/flame/lighter/zippo = 4, /obj/item/clothing/mask/smokable/cigarette/cigar/havana = 2)},/turf/unsimulated/floor{ name = "plating"; icon_state = "cult"},/area/syndicate_mothership) +"rF" = (/obj/machinery/vending/cigarette{name = "hacked cigarette machine"; prices = list(); products = list(/obj/item/weapon/storage/fancy/cigarettes = 10, /obj/item/weapon/storage/box/matches = 10, /obj/item/weapon/flame/lighter/zippo = 4, /obj/item/clothing/mask/smokable/cigarette/cigar/havana = 2)},/turf/unsimulated/floor{name = "plating"; icon_state = "cult"},/area/syndicate_mothership) "rG" = (/obj/structure/table/rack,/obj/item/clothing/shoes/magboots,/obj/item/clothing/suit/space/syndicate/black/engie,/obj/item/clothing/mask/breath,/obj/item/clothing/head/helmet/space/syndicate/black/engie,/turf/unsimulated/floor{icon_state = "dark"},/area/syndicate_mothership) "rH" = (/obj/structure/table/rack,/obj/item/clothing/shoes/magboots,/obj/item/clothing/suit/space/syndicate/black/red,/obj/item/clothing/mask/breath,/obj/item/clothing/head/helmet/space/syndicate/black/red,/turf/unsimulated/floor{icon_state = "dark"},/area/syndicate_mothership) -"rI" = (/obj/machinery/computer/communications,/obj/item/device/radio/intercom{broadcasting = 0; dir = 1; frequency = 1443; listening = 1; name = "Spec Ops Intercom"; pixel_y = -28},/turf/simulated/shuttle/floor{ icon_state = "floor_red"},/area/shuttle/specops/centcom) -"rJ" = (/obj/machinery/computer/prisoner{name = "Implant Management"},/turf/simulated/shuttle/floor{ icon_state = "floor_red"},/area/shuttle/specops/centcom) -"rK" = (/obj/structure/bed/chair{dir = 1},/turf/simulated/shuttle/floor{ icon_state = "floor_red"},/area/shuttle/specops/centcom) -"rL" = (/obj/structure/bed/chair{dir = 1},/obj/machinery/light{dir = 4},/turf/simulated/shuttle/floor{ icon_state = "floor_red"},/area/shuttle/specops/centcom) +"rI" = (/obj/machinery/computer/prisoner{name = "Implant Management"},/turf/simulated/shuttle/floor{icon_state = "floor_red"},/area/shuttle/specops/centcom) +"rJ" = (/obj/machinery/computer/communications,/obj/item/device/radio/intercom{broadcasting = 0; dir = 1; frequency = 1443; listening = 1; name = "Spec Ops Intercom"; pixel_y = -28},/turf/simulated/shuttle/floor{icon_state = "floor_red"},/area/shuttle/specops/centcom) +"rK" = (/obj/structure/bed/chair{dir = 1},/turf/simulated/shuttle/floor{icon_state = "floor_red"},/area/shuttle/specops/centcom) +"rL" = (/obj/structure/bed/chair{dir = 1},/obj/machinery/light{dir = 4},/turf/simulated/shuttle/floor{icon_state = "floor_red"},/area/shuttle/specops/centcom) "rM" = (/obj/effect/floor_decal/corner/blue/diagonal{dir = 4},/obj/effect/floor_decal/corner/red/diagonal,/obj/item/weapon/stool/padded,/turf/unsimulated/floor{icon_state = "steel"},/area/centcom/specops) "rN" = (/obj/structure/table/standard,/obj/item/weapon/storage/box/donkpockets{pixel_x = 3; pixel_y = 3},/obj/item/weapon/material/kitchen/rollingpin,/obj/effect/floor_decal/corner/blue/diagonal{dir = 4},/obj/effect/floor_decal/corner/red/diagonal,/turf/unsimulated/floor{icon_state = "steel"},/area/centcom/specops) "rO" = (/turf/unsimulated/wall,/area/centcom/command) @@ -1038,8 +1038,8 @@ "tX" = (/turf/simulated/shuttle/floor/black,/area/syndicate_station/start) "tY" = (/obj/item/weapon/cigbutt,/turf/simulated/shuttle/floor/black,/area/syndicate_station/start) "tZ" = (/obj/machinery/door/window{dir = 2; name = "Seating"; req_access = list(150)},/turf/simulated/shuttle/floor/darkred,/area/syndicate_station/start) -"ua" = (/obj/machinery/door/window{ name = "Seating"; icon_state = "right"; dir = 2; req_access = list(150)},/turf/simulated/shuttle/floor/darkred,/area/syndicate_station/start) -"ub" = (/obj/structure/flora/pottedplant{ icon_state = "plant-10"},/turf/simulated/shuttle/floor/darkred,/area/syndicate_station/start) +"ua" = (/obj/machinery/door/window{name = "Seating"; icon_state = "right"; dir = 2; req_access = list(150)},/turf/simulated/shuttle/floor/darkred,/area/syndicate_station/start) +"ub" = (/obj/structure/flora/pottedplant{icon_state = "plant-10"},/turf/simulated/shuttle/floor/darkred,/area/syndicate_station/start) "uc" = (/obj/machinery/atmospherics/unary/vent_pump/high_volume{dir = 4; frequency = 1331; id_tag = "merc_shuttle_pump"},/turf/simulated/shuttle/floor/darkred,/area/syndicate_station/start) "ud" = (/obj/machinery/atmospherics/pipe/manifold4w/visible,/turf/simulated/shuttle/floor/darkred,/area/syndicate_station/start) "ue" = (/obj/machinery/atmospherics/unary/vent_pump/high_volume{dir = 8; frequency = 1331; id_tag = "merc_shuttle_pump"},/turf/simulated/shuttle/floor/darkred,/area/syndicate_station/start) @@ -1072,17 +1072,17 @@ "uF" = (/obj/structure/table/rack,/obj/item/device/radio,/obj/item/device/radio,/obj/item/device/radio,/obj/item/device/radio,/obj/item/device/radio,/obj/item/device/radio,/turf/unsimulated/floor{icon_state = "dark"},/area/syndicate_mothership) "uG" = (/obj/structure/table/rack,/obj/item/weapon/gun/energy/gun,/obj/item/weapon/gun/energy/gun,/obj/item/weapon/gun/energy/gun,/obj/machinery/recharger/wallcharger{pixel_x = 5; pixel_y = -32},/obj/item/weapon/cell/device/weapon,/obj/item/weapon/cell/device/weapon,/obj/item/weapon/cell/device/weapon,/turf/unsimulated/floor{icon_state = "dark"},/area/syndicate_mothership) "uH" = (/obj/structure/table/rack,/obj/item/weapon/tank/emergency/oxygen/double,/obj/item/weapon/tank/emergency/oxygen/double,/obj/item/weapon/tank/emergency/oxygen/double,/obj/item/weapon/tank/emergency/oxygen/double,/obj/item/weapon/tank/emergency/oxygen/double,/obj/item/weapon/tank/emergency/oxygen/double,/turf/unsimulated/floor{icon_state = "dark"},/area/syndicate_mothership) -"uI" = (/turf/space,/obj/structure/shuttle/engine/propulsion{ icon_state = "propulsion_r"; dir = 8},/turf/simulated/shuttle/plating/airless/carry,/area/shuttle/administration/centcom) +"uI" = (/turf/space,/obj/structure/shuttle/engine/propulsion{icon_state = "propulsion_r"; dir = 8},/turf/simulated/shuttle/plating/airless/carry,/area/shuttle/administration/centcom) "uJ" = (/obj/structure/closet{icon_closed = "cabinet_closed"; icon_opened = "cabinet_open"; icon_state = "cabinet_closed"; name = "Clothing Storage"},/obj/item/weapon/storage/box/syndie_kit/chameleon,/obj/item/weapon/stamp/chameleon,/turf/unsimulated/floor{icon_state = "carpet"; dir = 2},/area/centcom/command) "uK" = (/obj/structure/table/woodentable{dir = 5},/turf/unsimulated/floor{icon_state = "carpet"; dir = 2},/area/centcom/command) "uL" = (/obj/structure/closet{icon_closed = "cabinet_closed"; icon_opened = "cabinet_open"; icon_state = "cabinet_closed"},/obj/item/weapon/card/id/centcom,/obj/item/weapon/card/id/syndicate,/obj/item/weapon/card/id,/obj/item/weapon/card/id/gold,/obj/item/weapon/card/id/silver,/obj/item/device/pda/captain,/obj/item/device/pda/ert,/turf/unsimulated/floor{icon_state = "carpet"; dir = 2},/area/centcom/command) "uM" = (/obj/machinery/vending/cigarette{name = "hacked cigarette machine"; prices = list(); products = list(/obj/item/weapon/storage/fancy/cigarettes = 10, /obj/item/weapon/storage/box/matches = 10, /obj/item/weapon/flame/lighter/zippo = 4, /obj/item/clothing/mask/smokable/cigarette/cigar/havana = 2)},/turf/simulated/shuttle/floor/darkred,/area/syndicate_station/start) "uN" = (/obj/structure/bed/chair{dir = 8},/obj/machinery/button/flasher{id = "syndieflash"; name = "Flasher"; pixel_x = 27; pixel_y = 0},/turf/simulated/shuttle/floor/darkred,/area/syndicate_station/start) "uO" = (/obj/machinery/button/remote/blast_door{id = "smindicate"; name = "ship lockdown control"; pixel_x = -25},/turf/simulated/shuttle/floor/darkred,/area/syndicate_station/start) -"uP" = (/mob/living/simple_animal/cat/kitten{name = "Enola"},/turf/simulated/shuttle/floor/darkred,/area/syndicate_station/start) +"uP" = (/mob/living/simple_mob/animal/passive/cat/kitten{name = "Enola"},/turf/simulated/shuttle/floor/darkred,/area/syndicate_station/start) "uQ" = (/obj/machinery/atmospherics/pipe/tank/air{dir = 4; start_pressure = 740.5},/turf/simulated/shuttle/floor/darkred,/area/syndicate_station/start) "uR" = (/obj/machinery/atmospherics/pipe/simple/visible{dir = 4},/obj/machinery/meter,/turf/simulated/shuttle/floor/darkred,/area/syndicate_station/start) -"uS" = (/obj/machinery/access_button{command = "cycle_interior"; frequency = 1331; master_tag = "merc_shuttle"; name = "interior access button"; pixel_x = 25; pixel_y = 25; req_access = list(150)},/obj/machinery/atmospherics/pipe/simple/visible{ icon_state = "intact"; dir = 9},/turf/simulated/shuttle/floor/darkred,/area/syndicate_station/start) +"uS" = (/obj/machinery/access_button{command = "cycle_interior"; frequency = 1331; master_tag = "merc_shuttle"; name = "interior access button"; pixel_x = 25; pixel_y = 25; req_access = list(150)},/obj/machinery/atmospherics/pipe/simple/visible{icon_state = "intact"; dir = 9},/turf/simulated/shuttle/floor/darkred,/area/syndicate_station/start) "uT" = (/obj/machinery/suit_cycler/syndicate{locked = 0},/turf/simulated/shuttle/floor/darkred,/area/syndicate_station/start) "uU" = (/obj/machinery/door/airlock/centcom{name = "Hardsuit Storage"; opacity = 1},/turf/unsimulated/floor{icon_state = "dark"},/area/syndicate_mothership) "uV" = (/obj/machinery/light,/turf/simulated/shuttle/floor/red,/area/shuttle/administration/centcom) @@ -1267,9 +1267,9 @@ "ys" = (/obj/structure/bed/chair/office/dark{dir = 1},/turf/unsimulated/floor{dir = 2; icon_state = "dark"},/area/centcom/command) "yt" = (/obj/machinery/computer/pod{id = "NTrasen"; name = "Hull Door Control"},/obj/item/device/radio/intercom{broadcasting = 1; dir = 1; frequency = 1441; name = "Spec Ops Intercom"; pixel_y = 28},/turf/unsimulated/floor{dir = 2; icon_state = "dark"},/area/centcom/command) "yu" = (/obj/machinery/door/airlock/centcom{name = "Courthouse"; opacity = 1},/turf/unsimulated/floor{icon_state = "lino"},/area/centcom/command) -"yv" = (/turf/space,/obj/structure/shuttle/engine/propulsion{icon_state = "burst_l"},/turf/simulated/shuttle/plating/airless/carry{ icon_state = "platform"; dir = 1},/area/supply/dock) -"yw" = (/turf/space,/obj/structure/shuttle/engine/propulsion,/turf/simulated/shuttle/plating/airless/carry{ icon_state = "platform"; dir = 1},/area/supply/dock) -"yx" = (/turf/space,/obj/structure/shuttle/engine/propulsion{icon_state = "burst_r"},/turf/simulated/shuttle/plating/airless/carry{ icon_state = "platform"; dir = 1},/area/supply/dock) +"yv" = (/turf/space,/obj/structure/shuttle/engine/propulsion{icon_state = "burst_l"},/turf/simulated/shuttle/plating/airless/carry{icon_state = "platform"; dir = 1},/area/supply/dock) +"yw" = (/turf/space,/obj/structure/shuttle/engine/propulsion,/turf/simulated/shuttle/plating/airless/carry{icon_state = "platform"; dir = 1},/area/supply/dock) +"yx" = (/turf/space,/obj/structure/shuttle/engine/propulsion{icon_state = "burst_r"},/turf/simulated/shuttle/plating/airless/carry{icon_state = "platform"; dir = 1},/area/supply/dock) "yy" = (/obj/structure/table/reinforced,/obj/item/clothing/head/greenbandana,/obj/effect/floor_decal/corner/orange{dir = 9},/turf/unsimulated/floor{icon_state = "vault"; dir = 5},/area/centcom/security) "yz" = (/obj/structure/bed/chair{dir = 1},/turf/unsimulated/floor{icon_state = "vault"; dir = 5},/area/centcom/security) "yA" = (/obj/structure/closet/secure_closet/hos,/turf/unsimulated/floor{dir = 2; icon_state = "dark"},/area/centcom/command) @@ -1355,7 +1355,7 @@ "Ac" = (/obj/effect/floor_decal/corner/red,/turf/unsimulated/floor{icon_state = "vault"; dir = 5},/area/centcom/security) "Ad" = (/obj/effect/floor_decal/corner/red/full{dir = 4},/turf/unsimulated/floor{icon_state = "vault"; dir = 5},/area/centcom/security) "Ae" = (/obj/structure/closet/secure_closet/bar,/turf/unsimulated/floor{icon_state = "freezerfloor"; dir = 2},/area/centcom/restaurant) -"Af" = (/obj/structure/table/marble,/obj/effect/floor_decal/corner/white/diagonal,/obj/machinery/cash_register/civilian{ icon_state = "register_idle"; dir = 8},/turf/unsimulated/floor{icon_state = "steel"},/area/centcom/restaurant) +"Af" = (/obj/structure/table/marble,/obj/effect/floor_decal/corner/white/diagonal,/obj/machinery/cash_register/civilian{icon_state = "register_idle"; dir = 8},/turf/unsimulated/floor{icon_state = "steel"},/area/centcom/restaurant) "Ag" = (/obj/structure/table/standard,/obj/effect/floor_decal/corner/white/diagonal,/obj/item/weapon/reagent_containers/food/condiment/small/peppermill,/turf/unsimulated/floor{icon_state = "steel"},/area/centcom/restaurant) "Ah" = (/obj/machinery/computer/supplycomp/control,/turf/unsimulated/floor{icon_state = "steel"},/area/centcom/command) "Ai" = (/obj/machinery/button/remote/blast_door{id = "crescent_checkpoint_access"; name = "Crescent Checkpoint Access"; pixel_x = -6; pixel_y = -24; req_access = list(101)},/obj/machinery/button/remote/blast_door{id = "crescent_thunderdome"; name = "Thunderdome Access"; pixel_x = 6; pixel_y = -24; req_access = list(101)},/obj/machinery/button/remote/blast_door{id = "crescent_vip_shuttle"; name = "VIP Shuttle Access"; pixel_x = 6; pixel_y = -34; req_access = list(101)},/obj/machinery/turretid{pixel_x = 28; pixel_y = -28; req_access = list(101)},/turf/unsimulated/floor{icon_state = "steel"},/area/centcom/command) @@ -1401,7 +1401,7 @@ "AW" = (/turf/unsimulated/floor{icon_state = "steel"},/area/centcom/tram) "AX" = (/obj/structure/bed/chair,/turf/unsimulated/floor{icon_state = "steel"},/area/centcom/tram) "AY" = (/obj/effect/wingrille_spawn/reinforced/crescent,/turf/unsimulated/floor{icon_state = "plating"; name = "plating"},/area/centcom/tram) -"AZ" = (/turf/space,/obj/structure/shuttle/engine/propulsion{ icon_state = "burst_l"; dir = 4},/turf/simulated/shuttle/plating/airless/carry,/area/shuttle/transport1/centcom) +"AZ" = (/turf/space,/obj/structure/shuttle/engine/propulsion{icon_state = "burst_l"; dir = 4},/turf/simulated/shuttle/plating/airless/carry,/area/shuttle/transport1/centcom) "Ba" = (/obj/machinery/computer/security,/obj/effect/floor_decal/corner/red{dir = 6},/turf/unsimulated/floor{icon_state = "vault"; dir = 5},/area/centcom/security) "Bb" = (/obj/structure/bed/chair,/obj/effect/floor_decal/corner/white/diagonal,/turf/unsimulated/floor{icon_state = "steel"},/area/centcom/restaurant) "Bc" = (/obj/effect/wingrille_spawn/reinforced/crescent,/turf/unsimulated/floor{icon_state = "plating"; name = "plating"},/area/centcom/main_hall) @@ -1441,7 +1441,7 @@ "BK" = (/obj/structure/window/shuttle,/obj/structure/grille,/turf/unsimulated/floor{icon_state = "plating"; name = "plating"},/area/centcom/tram) "BL" = (/obj/machinery/door/unpowered/shuttle,/turf/unsimulated/floor{icon = 'icons/turf/flooring/shuttle.dmi'; icon_state = "floor"},/area/centcom/tram) "BM" = (/turf/unsimulated/floor{icon_state = "plating"; name = "plating"},/area/centcom/tram) -"BN" = (/obj/effect/floor_decal/corner/white/full{ icon_state = "corner_white_full"; dir = 4},/turf/unsimulated/floor{icon_state = "steel"},/area/centcom/terminal) +"BN" = (/obj/effect/floor_decal/corner/white/full{icon_state = "corner_white_full"; dir = 4},/turf/unsimulated/floor{icon_state = "steel"},/area/centcom/terminal) "BO" = (/obj/effect/floor_decal/corner/white,/turf/unsimulated/floor{icon_state = "steel"},/area/centcom/terminal) "BP" = (/obj/effect/floor_decal/corner/white{dir = 5},/turf/unsimulated/floor{icon_state = "steel"},/area/centcom/terminal) "BQ" = (/obj/effect/floor_decal/corner/white{dir = 8},/turf/unsimulated/floor{icon_state = "steel"},/area/centcom/terminal) @@ -1453,7 +1453,7 @@ "BW" = (/obj/structure/bed/chair,/obj/item/device/radio/intercom{dir = 4; name = "Station Intercom (General)"; pixel_x = 0; pixel_y = 26},/turf/simulated/shuttle/floor,/area/centcom/tram) "BX" = (/obj/effect/floor_decal/spline/plain,/turf/unsimulated/floor{icon_state = "plating"; name = "plating"},/area/centcom/tram) "BY" = (/obj/effect/floor_decal/corner/white{dir = 6; icon_state = "corner_white"},/turf/unsimulated/floor{icon_state = "steel"},/area/centcom/terminal) -"BZ" = (/obj/effect/floor_decal/corner/white/diagonal{ icon_state = "corner_white_diagonal"; dir = 4},/turf/unsimulated/floor{icon_state = "steel"},/area/centcom/terminal) +"BZ" = (/obj/effect/floor_decal/corner/white/diagonal{icon_state = "corner_white_diagonal"; dir = 4},/turf/unsimulated/floor{icon_state = "steel"},/area/centcom/terminal) "Ca" = (/obj/effect/floor_decal/corner/white{dir = 4},/turf/unsimulated/floor{icon_state = "steel"},/area/centcom/terminal) "Cb" = (/obj/structure/window/reinforced{dir = 8},/obj/machinery/door/window/brigdoor{dir = 4; name = "Weapons locker"},/obj/structure/table/rack,/obj/item/clothing/suit/armor/riot,/obj/item/weapon/melee/baton/loaded,/obj/item/weapon/shield/riot,/obj/item/clothing/head/helmet/riot,/obj/structure/window/reinforced,/obj/effect/floor_decal/corner/red{dir = 9},/turf/unsimulated/floor{icon_state = "vault"; dir = 5},/area/centcom/security) "Cc" = (/obj/machinery/porta_turret/crescent,/obj/effect/floor_decal/industrial/hatch/yellow,/turf/unsimulated/floor{icon_state = "steel"},/area/centcom/main_hall) @@ -1462,12 +1462,12 @@ "Cf" = (/obj/structure/bed/chair{dir = 4},/turf/simulated/shuttle/floor,/area/centcom/tram) "Cg" = (/obj/structure/bed/chair{dir = 8},/turf/simulated/shuttle/floor,/area/centcom/tram) "Ch" = (/obj/effect/floor_decal/spline/plain{dir = 1},/turf/unsimulated/floor{icon_state = "plating"; name = "plating"},/area/centcom/tram) -"Ci" = (/obj/effect/floor_decal/corner/white{ icon_state = "corner_white"; dir = 1},/turf/unsimulated/floor{icon_state = "steel"},/area/centcom/terminal) +"Ci" = (/obj/effect/floor_decal/corner/white{icon_state = "corner_white"; dir = 1},/turf/unsimulated/floor{icon_state = "steel"},/area/centcom/terminal) "Cj" = (/obj/machinery/computer/card,/obj/effect/floor_decal/corner/red{dir = 6},/turf/unsimulated/floor{icon_state = "vault"; dir = 5},/area/centcom/security) "Ck" = (/obj/structure/window/reinforced{dir = 8},/obj/machinery/door/window/brigdoor{dir = 4; name = "Weapons locker"},/obj/structure/table/rack,/obj/item/clothing/suit/armor/riot,/obj/item/weapon/melee/baton/loaded,/obj/item/weapon/shield/riot,/obj/item/clothing/head/helmet/riot,/obj/structure/window/reinforced{dir = 1},/obj/effect/floor_decal/corner/red{dir = 9},/turf/unsimulated/floor{icon_state = "vault"; dir = 5},/area/centcom/security) "Cl" = (/obj/effect/wingrille_spawn/reinforced/crescent,/turf/unsimulated/floor{icon_state = "plating"; name = "plating"},/area/centcom/restaurant) "Cm" = (/obj/effect/floor_decal/corner/white/diagonal,/obj/machinery/door/airlock/glass,/turf/unsimulated/floor{icon_state = "steel"},/area/centcom/restaurant) -"Cn" = (/obj/structure/flora/grass/brown,/obj/effect/floor_decal/spline/fancy/wood{ icon_state = "spline_fancy"; dir = 9},/turf/unsimulated/floor{icon_state = "grass0"; name = "grass"},/area/centcom/main_hall) +"Cn" = (/obj/structure/flora/grass/brown,/obj/effect/floor_decal/spline/fancy/wood{icon_state = "spline_fancy"; dir = 9},/turf/unsimulated/floor{icon_state = "grass0"; name = "grass"},/area/centcom/main_hall) "Co" = (/obj/structure/flora/ausbushes/ppflowers,/obj/effect/floor_decal/spline/fancy/wood/cee{dir = 4},/turf/unsimulated/floor{icon_state = "grass0"; name = "grass"},/area/centcom/main_hall) "Cp" = (/obj/effect/floor_decal/spline/plain{dir = 1},/turf/unsimulated/floor{icon_state = "vault"; dir = 5},/area/centcom/main_hall) "Cq" = (/obj/structure/flora/ausbushes/brflowers,/obj/effect/floor_decal/spline/fancy/wood/cee{dir = 8},/turf/unsimulated/floor{icon_state = "grass0"; name = "grass"},/area/centcom/main_hall) @@ -1489,10 +1489,10 @@ "CG" = (/obj/structure/flora/ausbushes/ppflowers,/turf/unsimulated/floor{icon_state = "grass0"; name = "grass"},/area/centcom/main_hall) "CH" = (/obj/structure/flora/bush,/turf/unsimulated/floor{icon_state = "grass0"; name = "grass"},/area/centcom/main_hall) "CI" = (/obj/structure/flora/ausbushes/sparsegrass,/obj/structure/flora/ausbushes/ppflowers,/turf/unsimulated/floor{icon_state = "grass0"; name = "grass"},/area/centcom/main_hall) -"CJ" = (/obj/structure/flora/ausbushes/ywflowers,/obj/effect/floor_decal/spline/fancy/wood{ icon_state = "spline_fancy"; dir = 9},/turf/unsimulated/floor{icon_state = "grass0"; name = "grass"},/area/centcom/main_hall) +"CJ" = (/obj/structure/flora/ausbushes/ywflowers,/obj/effect/floor_decal/spline/fancy/wood{icon_state = "spline_fancy"; dir = 9},/turf/unsimulated/floor{icon_state = "grass0"; name = "grass"},/area/centcom/main_hall) "CK" = (/obj/structure/flora/ausbushes/brflowers,/obj/effect/floor_decal/spline/fancy/wood{dir = 6},/turf/unsimulated/floor{icon_state = "grass0"; name = "grass"},/area/centcom/main_hall) "CL" = (/turf/unsimulated/floor{icon_state = "vault"; dir = 5},/area/centcom/main_hall) -"CM" = (/obj/structure/flora/ausbushes/fernybush,/obj/effect/floor_decal/spline/fancy/wood{ icon_state = "spline_fancy"; dir = 10},/turf/unsimulated/floor{icon_state = "grass0"; name = "grass"},/area/centcom/main_hall) +"CM" = (/obj/structure/flora/ausbushes/fernybush,/obj/effect/floor_decal/spline/fancy/wood{icon_state = "spline_fancy"; dir = 10},/turf/unsimulated/floor{icon_state = "grass0"; name = "grass"},/area/centcom/main_hall) "CN" = (/obj/structure/flora/ausbushes/brflowers,/obj/effect/floor_decal/spline/fancy/wood{dir = 5},/turf/unsimulated/floor{icon_state = "grass0"; name = "grass"},/area/centcom/main_hall) "CO" = (/obj/structure/flora/ausbushes/sparsegrass,/obj/structure/flora/ausbushes/brflowers,/turf/unsimulated/floor{icon_state = "grass0"; name = "grass"},/area/centcom/main_hall) "CP" = (/obj/machinery/turretid{pixel_x = -28; pixel_y = 0; req_access = list(101)},/turf/unsimulated/floor{icon_state = "steel"},/area/centcom/tram) @@ -1503,9 +1503,9 @@ "CU" = (/obj/structure/table/woodentable{dir = 5},/turf/unsimulated/floor{icon_state = "vault"; dir = 5},/area/centcom/terminal) "CV" = (/obj/structure/table/reinforced,/obj/machinery/computer/skills,/obj/structure/window/reinforced{dir = 2; health = 1e+006},/obj/structure/window/reinforced{dir = 8},/obj/effect/floor_decal/corner/red/full,/turf/unsimulated/floor{icon_state = "vault"; dir = 5},/area/centcom/security) "CW" = (/obj/structure/table/reinforced,/obj/item/weapon/paper_bin{pixel_x = 1; pixel_y = 9},/obj/item/weapon/pen,/obj/machinery/door/window/southright{name = "Arrivals Processing"; req_access = list(101)},/obj/structure/window/reinforced{dir = 4},/obj/effect/floor_decal/corner/red/full{dir = 4},/turf/unsimulated/floor{icon_state = "vault"; dir = 5},/area/centcom/security) -"CX" = (/obj/structure/flora/ausbushes/brflowers,/obj/effect/floor_decal/spline/fancy/wood{ icon_state = "spline_fancy"; dir = 9},/turf/unsimulated/floor{icon_state = "grass0"; name = "grass"},/area/centcom/main_hall) +"CX" = (/obj/structure/flora/ausbushes/brflowers,/obj/effect/floor_decal/spline/fancy/wood{icon_state = "spline_fancy"; dir = 9},/turf/unsimulated/floor{icon_state = "grass0"; name = "grass"},/area/centcom/main_hall) "CY" = (/obj/structure/flora/ausbushes/ppflowers,/obj/effect/floor_decal/spline/fancy/wood{dir = 6},/turf/unsimulated/floor{icon_state = "grass0"; name = "grass"},/area/centcom/main_hall) -"CZ" = (/obj/structure/flora/ausbushes/ppflowers,/obj/effect/floor_decal/spline/fancy/wood{ icon_state = "spline_fancy"; dir = 10},/turf/unsimulated/floor{icon_state = "grass0"; name = "grass"},/area/centcom/main_hall) +"CZ" = (/obj/structure/flora/ausbushes/ppflowers,/obj/effect/floor_decal/spline/fancy/wood{icon_state = "spline_fancy"; dir = 10},/turf/unsimulated/floor{icon_state = "grass0"; name = "grass"},/area/centcom/main_hall) "Da" = (/obj/machinery/door/airlock/centcom{name = "General Access"; opacity = 1; req_access = list(101)},/turf/unsimulated/floor{icon_state = "steel"},/area/centcom/main_hall) "Db" = (/obj/structure/bed/chair/office/dark,/obj/machinery/button/remote/blast_door{desc = "A remote control switch for port-side blast doors."; id = "CentComPortEast"; name = "Security Doors"; pixel_x = -12; pixel_y = -25; req_access = list(101)},/turf/unsimulated/floor{icon_state = "steel"},/area/centcom/tram) "Dc" = (/obj/machinery/computer/secure_data,/obj/machinery/camera/network/crescent{c_tag = "Crescent Arrivals North"; dir = 8},/turf/unsimulated/floor{icon_state = "steel"},/area/centcom/tram) @@ -1520,9 +1520,9 @@ "Dl" = (/obj/structure/window/reinforced{dir = 8},/obj/structure/table/reinforced,/obj/structure/window/reinforced{dir = 1; health = 1e+006},/obj/item/weapon/paper_bin{pixel_x = 1; pixel_y = 9},/obj/item/weapon/pen,/turf/unsimulated/floor{icon_state = "vault"; dir = 5},/area/centcom/terminal) "Dm" = (/obj/machinery/door/blast/regular{density = 0; icon_state = "pdoor0"; id = "CentComPortWest"; name = "Security Doors"; opacity = 0},/turf/unsimulated/floor{icon_state = "steel"},/area/centcom/main_hall) "Dn" = (/obj/structure/flora/ausbushes/ppflowers,/obj/effect/floor_decal/spline/fancy/wood/cee,/turf/unsimulated/floor{icon_state = "grass0"; name = "grass"},/area/centcom/main_hall) -"Do" = (/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced{dir = 1},/turf/unsimulated/beach/sand{ icon_state = "seashallow"},/area/centcom/main_hall) -"Dp" = (/obj/structure/window/reinforced{dir = 1},/turf/unsimulated/beach/sand{ icon_state = "seashallow"},/area/centcom/main_hall) -"Dq" = (/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 4},/turf/unsimulated/beach/sand{ icon_state = "seashallow"},/area/centcom/main_hall) +"Do" = (/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced{dir = 1},/turf/unsimulated/beach/sand{icon_state = "seashallow"},/area/centcom/main_hall) +"Dp" = (/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 4},/turf/unsimulated/beach/sand{icon_state = "seashallow"},/area/centcom/main_hall) +"Dq" = (/obj/structure/window/reinforced{dir = 1},/turf/unsimulated/beach/sand{icon_state = "seashallow"},/area/centcom/main_hall) "Dr" = (/obj/structure/table/reinforced,/obj/structure/window/reinforced,/obj/machinery/computer/skills,/obj/structure/window/reinforced{dir = 8},/turf/unsimulated/floor{icon_state = "steel"},/area/centcom/tram) "Ds" = (/obj/structure/table/reinforced,/obj/item/weapon/paper_bin{pixel_x = 1; pixel_y = 9},/obj/item/weapon/pen,/obj/machinery/door/window/southright{name = "Arrivals Processing"; req_access = list(101)},/obj/structure/window/reinforced{dir = 4},/turf/unsimulated/floor{icon_state = "steel"},/area/centcom/tram) "Dt" = (/obj/machinery/door/airlock/external,/obj/effect/floor_decal/industrial/warning{dir = 1},/turf/unsimulated/floor{icon_state = "steel"},/area/centcom/tram) @@ -1533,7 +1533,7 @@ "Dy" = (/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 4},/obj/structure/table/reinforced,/turf/unsimulated/floor{icon_state = "vault"; dir = 5},/area/centcom/terminal) "Dz" = (/obj/machinery/door/airlock/glass,/turf/unsimulated/floor{icon_state = "steel"},/area/centcom/main_hall) "DA" = (/obj/effect/floor_decal/spline/plain{dir = 8},/turf/unsimulated/floor{icon_state = "vault"; dir = 5},/area/centcom/main_hall) -"DB" = (/turf/unsimulated/beach/sand{ icon_state = "seashallow"},/area/centcom/main_hall) +"DB" = (/turf/unsimulated/beach/sand{icon_state = "seashallow"},/area/centcom/main_hall) "DC" = (/obj/effect/floor_decal/spline/plain{dir = 4},/turf/unsimulated/floor{icon_state = "vault"; dir = 5},/area/centcom/main_hall) "DD" = (/obj/machinery/door/blast/regular{density = 0; icon_state = "pdoor0"; id = "CentComPortEast"; name = "Security Doors"; opacity = 0},/turf/unsimulated/floor{icon_state = "steel"},/area/centcom/tram) "DE" = (/obj/machinery/door/blast/regular{id = "CentComPortEast"; name = "Security Doors"},/turf/unsimulated/floor{icon_state = "green"; dir = 8},/area/centcom/tram) @@ -1542,14 +1542,14 @@ "DH" = (/obj/machinery/hologram/holopad,/turf/unsimulated/floor{icon_state = "steel"},/area/centcom/terminal) "DI" = (/obj/machinery/door/window/westright,/obj/structure/table/reinforced,/turf/unsimulated/floor{icon_state = "vault"; dir = 5},/area/centcom/terminal) "DJ" = (/obj/structure/bed/chair/office/light{dir = 8},/turf/unsimulated/floor{icon_state = "vault"; dir = 5},/area/centcom/terminal) -"DK" = (/obj/structure/window/reinforced{dir = 8},/turf/unsimulated/beach/sand{ icon_state = "seashallow"},/area/centcom/main_hall) -"DL" = (/obj/effect/floor_decal/spline/plain{ icon_state = "spline_plain_full"; dir = 1},/obj/structure/showcase,/turf/unsimulated/floor{icon_state = "vault"; dir = 5},/area/centcom/main_hall) -"DM" = (/obj/structure/window/reinforced{dir = 4},/turf/unsimulated/beach/sand{ icon_state = "seashallow"},/area/centcom/main_hall) +"DK" = (/obj/structure/window/reinforced{dir = 8},/turf/unsimulated/beach/sand{icon_state = "seashallow"},/area/centcom/main_hall) +"DL" = (/obj/effect/floor_decal/spline/plain{icon_state = "spline_plain_full"; dir = 1},/obj/structure/showcase,/turf/unsimulated/floor{icon_state = "vault"; dir = 5},/area/centcom/main_hall) +"DM" = (/obj/structure/window/reinforced{dir = 4},/turf/unsimulated/beach/sand{icon_state = "seashallow"},/area/centcom/main_hall) "DN" = (/obj/structure/bed/chair/office/light,/turf/unsimulated/floor{icon_state = "vault"; dir = 5},/area/centcom/terminal) "DO" = (/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 4},/obj/structure/table/reinforced,/turf/unsimulated/floor{icon_state = "vault"; dir = 5},/area/centcom/terminal) "DP" = (/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced,/obj/structure/table/reinforced,/obj/item/weapon/paper_bin{pixel_x = 1; pixel_y = 9},/obj/item/weapon/pen,/turf/unsimulated/floor{icon_state = "vault"; dir = 5},/area/centcom/terminal) -"DQ" = (/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 8},/turf/unsimulated/beach/sand{ icon_state = "seashallow"},/area/centcom/main_hall) -"DR" = (/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced,/turf/unsimulated/beach/sand{ icon_state = "seashallow"},/area/centcom/main_hall) +"DQ" = (/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 8},/turf/unsimulated/beach/sand{icon_state = "seashallow"},/area/centcom/main_hall) +"DR" = (/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced,/turf/unsimulated/beach/sand{icon_state = "seashallow"},/area/centcom/main_hall) "DS" = (/obj/machinery/door/window/southleft,/obj/structure/table/reinforced,/turf/unsimulated/floor{icon_state = "vault"; dir = 5},/area/centcom/terminal) "DT" = (/obj/structure/window/reinforced{dir = 4},/obj/structure/table/reinforced,/obj/structure/window/reinforced,/obj/machinery/computer/skills,/turf/unsimulated/floor{icon_state = "vault"; dir = 5},/area/centcom/terminal) "DU" = (/obj/structure/bed/chair{dir = 4},/obj/structure/window/reinforced{dir = 8},/obj/effect/floor_decal/spline/plain{dir = 1},/turf/unsimulated/floor{icon_state = "vault"; dir = 5},/area/centcom/terminal) @@ -1561,16 +1561,16 @@ "Ea" = (/obj/structure/window/reinforced{dir = 8},/obj/structure/table/reinforced,/obj/structure/window/reinforced,/obj/machinery/computer/skills,/turf/unsimulated/floor{icon_state = "vault"; dir = 5},/area/centcom/terminal) "Eb" = (/obj/structure/window/reinforced{dir = 4},/obj/structure/table/reinforced,/obj/structure/window/reinforced,/obj/item/weapon/paper_bin{pixel_x = 1; pixel_y = 9},/obj/item/weapon/pen,/turf/unsimulated/floor{icon_state = "vault"; dir = 5},/area/centcom/terminal) "Ec" = (/obj/structure/flora/ausbushes/ppflowers,/obj/effect/floor_decal/spline/fancy/wood/cee{dir = 1},/turf/unsimulated/floor{icon_state = "grass0"; name = "grass"},/area/centcom/main_hall) -"Ed" = (/obj/structure/window/reinforced,/turf/unsimulated/beach/sand{ icon_state = "seashallow"},/area/centcom/main_hall) -"Ee" = (/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 4},/turf/unsimulated/beach/sand{ icon_state = "seashallow"},/area/centcom/main_hall) +"Ed" = (/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 4},/turf/unsimulated/beach/sand{icon_state = "seashallow"},/area/centcom/main_hall) +"Ee" = (/obj/structure/window/reinforced,/turf/unsimulated/beach/sand{icon_state = "seashallow"},/area/centcom/main_hall) "Ef" = (/obj/structure/flora/ausbushes/brflowers,/obj/effect/floor_decal/spline/fancy/wood/cee{dir = 1},/turf/unsimulated/floor{icon_state = "grass0"; name = "grass"},/area/centcom/main_hall) "Eg" = (/obj/machinery/door/airlock/glass,/turf/unsimulated/floor{icon_state = "lino"},/area/centcom/tram) "Eh" = (/turf/unsimulated/wall,/area/centcom/medical) "Ei" = (/obj/machinery/door/airlock/glass_medical{name = "Arrivals Medbay"},/turf/unsimulated/floor{icon_state = "white"},/area/centcom/medical) "Ej" = (/obj/effect/wingrille_spawn/reinforced/crescent,/turf/unsimulated/floor{icon_state = "plating"; name = "plating"},/area/centcom/medical) -"Ek" = (/obj/structure/flora/ausbushes/ywflowers,/obj/effect/floor_decal/spline/fancy/wood{ icon_state = "spline_fancy"; dir = 10},/turf/unsimulated/floor{icon_state = "grass0"; name = "grass"},/area/centcom/main_hall) +"Ek" = (/obj/structure/flora/ausbushes/ywflowers,/obj/effect/floor_decal/spline/fancy/wood{icon_state = "spline_fancy"; dir = 10},/turf/unsimulated/floor{icon_state = "grass0"; name = "grass"},/area/centcom/main_hall) "El" = (/obj/structure/flora/grass/brown,/obj/effect/floor_decal/spline/fancy/wood{dir = 5},/turf/unsimulated/floor{icon_state = "grass0"; name = "grass"},/area/centcom/main_hall) -"Em" = (/obj/structure/flora/ausbushes/ppflowers,/obj/effect/floor_decal/spline/fancy/wood{ icon_state = "spline_fancy"; dir = 9},/turf/unsimulated/floor{icon_state = "grass0"; name = "grass"},/area/centcom/main_hall) +"Em" = (/obj/structure/flora/ausbushes/ppflowers,/obj/effect/floor_decal/spline/fancy/wood{icon_state = "spline_fancy"; dir = 9},/turf/unsimulated/floor{icon_state = "grass0"; name = "grass"},/area/centcom/main_hall) "En" = (/obj/structure/flora/ausbushes/ywflowers,/obj/effect/floor_decal/spline/fancy/wood{dir = 6},/turf/unsimulated/floor{icon_state = "grass0"; name = "grass"},/area/centcom/main_hall) "Eo" = (/turf/unsimulated/floor{icon_state = "lino"},/area/centcom/tram) "Ep" = (/obj/machinery/vending/cigarette,/turf/unsimulated/floor{icon_state = "lino"},/area/centcom/tram) @@ -1589,7 +1589,7 @@ "EC" = (/obj/effect/floor_decal/corner/beige{dir = 5},/turf/unsimulated/floor{icon_state = "white"},/area/centcom/medical) "ED" = (/obj/machinery/chem_master,/obj/effect/floor_decal/corner/beige/full{dir = 1},/turf/unsimulated/floor{icon_state = "white"},/area/centcom/medical) "EE" = (/obj/structure/flora/ausbushes,/turf/unsimulated/floor{icon_state = "grass0"; name = "grass"},/area/centcom/main_hall) -"EF" = (/obj/structure/flora/ausbushes/brflowers,/obj/effect/floor_decal/spline/fancy/wood{ icon_state = "spline_fancy"; dir = 10},/turf/unsimulated/floor{icon_state = "grass0"; name = "grass"},/area/centcom/main_hall) +"EF" = (/obj/structure/flora/ausbushes/brflowers,/obj/effect/floor_decal/spline/fancy/wood{icon_state = "spline_fancy"; dir = 10},/turf/unsimulated/floor{icon_state = "grass0"; name = "grass"},/area/centcom/main_hall) "EG" = (/obj/structure/flora/ausbushes/ppflowers,/obj/effect/floor_decal/spline/fancy/wood{dir = 5},/turf/unsimulated/floor{icon_state = "grass0"; name = "grass"},/area/centcom/main_hall) "EH" = (/obj/structure/flora/ausbushes/sparsegrass,/turf/unsimulated/floor{icon_state = "grass0"; name = "grass"},/area/centcom/main_hall) "EI" = (/obj/structure/flora/bush,/obj/structure/flora/ausbushes/sparsegrass,/turf/unsimulated/floor{icon_state = "grass0"; name = "grass"},/area/centcom/main_hall) @@ -1600,7 +1600,7 @@ "EN" = (/obj/machinery/chemical_dispenser/ert,/obj/item/weapon/reagent_containers/glass/beaker/large,/obj/effect/floor_decal/corner/beige{dir = 6},/turf/unsimulated/floor{icon_state = "white"},/area/centcom/medical) "EO" = (/turf/unsimulated/wall,/area/centcom/bar) "EP" = (/obj/effect/wingrille_spawn/reinforced/crescent,/turf/unsimulated/floor{icon_state = "plating"; name = "plating"},/area/centcom/bar) -"EQ" = (/obj/machinery/door/airlock/glass,/turf/unsimulated/floor{ icon_state = "wood"},/area/centcom/bar) +"EQ" = (/obj/machinery/door/airlock/glass,/turf/unsimulated/floor{icon_state = "wood"},/area/centcom/bar) "ER" = (/obj/effect/floor_decal/spline/plain,/turf/unsimulated/floor{icon_state = "vault"; dir = 5},/area/centcom/main_hall) "ES" = (/turf/unsimulated/wall,/area/centcom/bathroom) "ET" = (/obj/machinery/door/airlock,/turf/unsimulated/floor{icon_state = "steel"},/area/centcom/bathroom) @@ -1610,8 +1610,8 @@ "EX" = (/obj/structure/bed/chair{dir = 4},/obj/structure/window/reinforced{dir = 8},/obj/effect/floor_decal/corner/green{dir = 9},/turf/unsimulated/floor{icon_state = "white"},/area/centcom/medical) "EY" = (/obj/structure/closet/secure_closet/chemical,/obj/effect/floor_decal/corner/beige{dir = 9},/turf/unsimulated/floor{icon_state = "white"},/area/centcom/medical) "EZ" = (/obj/structure/table/standard,/obj/item/weapon/reagent_containers/glass/beaker/large,/obj/item/weapon/reagent_containers/glass/beaker/large,/obj/effect/floor_decal/corner/beige{dir = 6},/turf/unsimulated/floor{icon_state = "white"},/area/centcom/medical) -"Fa" = (/obj/structure/table/woodentable{dir = 5},/obj/structure/flora/pottedplant{pixel_y = 8},/turf/unsimulated/floor{ icon_state = "wood"},/area/centcom/bar) -"Fb" = (/turf/unsimulated/floor{ icon_state = "wood"},/area/centcom/bar) +"Fa" = (/turf/unsimulated/floor{icon_state = "wood"},/area/centcom/bar) +"Fb" = (/obj/structure/table/woodentable{dir = 5},/obj/structure/flora/pottedplant{pixel_y = 8},/turf/unsimulated/floor{icon_state = "wood"},/area/centcom/bar) "Fc" = (/obj/structure/table/steel,/turf/unsimulated/floor{icon_state = "steel"},/area/centcom/bathroom) "Fd" = (/obj/structure/closet/secure_closet/personal,/turf/unsimulated/floor{icon_state = "steel"},/area/centcom/bathroom) "Fe" = (/turf/unsimulated/floor{icon_state = "steel"},/area/centcom/bathroom) @@ -1634,22 +1634,22 @@ "Fv" = (/obj/effect/floor_decal/corner/beige{dir = 8},/turf/unsimulated/floor{icon_state = "white"},/area/centcom/medical) "Fw" = (/obj/effect/floor_decal/corner/beige,/turf/unsimulated/floor{icon_state = "white"},/area/centcom/medical) "Fx" = (/obj/machinery/chem_master,/obj/effect/floor_decal/corner/beige/full{dir = 4},/turf/unsimulated/floor{icon_state = "white"},/area/centcom/medical) -"Fy" = (/obj/structure/bed/chair/wood/wings{icon_state = "wooden_chair_wings"; dir = 4},/turf/unsimulated/floor{ icon_state = "wood"},/area/centcom/bar) -"Fz" = (/obj/structure/table/woodentable{dir = 5},/obj/item/weapon/reagent_containers/food/snacks/amanita_pie,/turf/unsimulated/floor{ icon_state = "wood"},/area/centcom/bar) -"FA" = (/obj/structure/table/woodentable{dir = 5},/obj/item/weapon/reagent_containers/food/snacks/bigbiteburger,/turf/unsimulated/floor{ icon_state = "wood"},/area/centcom/bar) -"FB" = (/obj/structure/bed/chair/wood/wings{icon_state = "wooden_chair_wings"; dir = 8},/turf/unsimulated/floor{ icon_state = "wood"},/area/centcom/bar) -"FC" = (/obj/structure/table/woodentable{dir = 5},/obj/item/weapon/reagent_containers/food/snacks/slice/carrotcake/filled,/turf/unsimulated/floor{ icon_state = "wood"},/area/centcom/bar) -"FD" = (/obj/structure/table/woodentable{dir = 5},/obj/item/weapon/reagent_containers/food/snacks/stew,/turf/unsimulated/floor{ icon_state = "wood"},/area/centcom/bar) +"Fy" = (/obj/structure/table/woodentable{dir = 5},/obj/item/weapon/reagent_containers/food/snacks/amanita_pie,/turf/unsimulated/floor{icon_state = "wood"},/area/centcom/bar) +"Fz" = (/obj/structure/bed/chair/wood/wings{icon_state = "wooden_chair_wings"; dir = 4},/turf/unsimulated/floor{icon_state = "wood"},/area/centcom/bar) +"FA" = (/obj/structure/bed/chair/wood/wings{icon_state = "wooden_chair_wings"; dir = 8},/turf/unsimulated/floor{icon_state = "wood"},/area/centcom/bar) +"FB" = (/obj/structure/table/woodentable{dir = 5},/obj/item/weapon/reagent_containers/food/snacks/bigbiteburger,/turf/unsimulated/floor{icon_state = "wood"},/area/centcom/bar) +"FC" = (/obj/structure/table/woodentable{dir = 5},/obj/item/weapon/reagent_containers/food/snacks/slice/carrotcake/filled,/turf/unsimulated/floor{icon_state = "wood"},/area/centcom/bar) +"FD" = (/obj/structure/table/woodentable{dir = 5},/obj/item/weapon/reagent_containers/food/snacks/stew,/turf/unsimulated/floor{icon_state = "wood"},/area/centcom/bar) "FE" = (/obj/item/weapon/stool/padded,/turf/unsimulated/floor{icon_state = "steel"},/area/centcom/bathroom) "FF" = (/obj/machinery/embedded_controller/radio/simple_docking_controller{frequency = 1380; id_tag = "escape_shuttle"; pixel_x = 0; pixel_y = -25; req_one_access = list(13); tag_door = "escape_shuttle_hatch"},/turf/simulated/shuttle/floor,/area/shuttle/escape/centcom) "FG" = (/obj/machinery/hologram/holopad,/turf/simulated/shuttle/floor,/area/shuttle/escape/centcom) "FH" = (/obj/machinery/light,/turf/simulated/shuttle/floor,/area/shuttle/escape/centcom) "FI" = (/obj/effect/floor_decal/corner/beige{dir = 6},/turf/unsimulated/floor{icon_state = "white"},/area/centcom/medical) "FJ" = (/obj/structure/closet/secure_closet/medical_wall{name = "Pill Cabinet"},/obj/item/weapon/storage/pill_bottle/antitox,/obj/item/weapon/storage/pill_bottle/tramadol,/obj/item/weapon/reagent_containers/syringe/antiviral,/obj/item/weapon/reagent_containers/syringe/antiviral,/obj/item/weapon/reagent_containers/syringe/inaprovaline,/turf/unsimulated/wall,/area/centcom/medical) -"FK" = (/obj/structure/table/woodentable{dir = 5},/obj/item/weapon/reagent_containers/food/snacks/boiledrice,/turf/unsimulated/floor{ icon_state = "wood"},/area/centcom/bar) -"FL" = (/obj/structure/table/woodentable{dir = 5},/obj/item/weapon/reagent_containers/food/snacks/beetsoup,/turf/unsimulated/floor{ icon_state = "wood"},/area/centcom/bar) -"FM" = (/obj/structure/table/woodentable{dir = 5},/obj/item/weapon/reagent_containers/food/snacks/stuffing,/turf/unsimulated/floor{ icon_state = "wood"},/area/centcom/bar) -"FN" = (/obj/structure/table/woodentable{dir = 5},/obj/item/weapon/reagent_containers/food/snacks/soylenviridians,/turf/unsimulated/floor{ icon_state = "wood"},/area/centcom/bar) +"FK" = (/obj/structure/table/woodentable{dir = 5},/obj/item/weapon/reagent_containers/food/snacks/boiledrice,/turf/unsimulated/floor{icon_state = "wood"},/area/centcom/bar) +"FL" = (/obj/structure/table/woodentable{dir = 5},/obj/item/weapon/reagent_containers/food/snacks/beetsoup,/turf/unsimulated/floor{icon_state = "wood"},/area/centcom/bar) +"FM" = (/obj/structure/table/woodentable{dir = 5},/obj/item/weapon/reagent_containers/food/snacks/stuffing,/turf/unsimulated/floor{icon_state = "wood"},/area/centcom/bar) +"FN" = (/obj/structure/table/woodentable{dir = 5},/obj/item/weapon/reagent_containers/food/snacks/soylenviridians,/turf/unsimulated/floor{icon_state = "wood"},/area/centcom/bar) "FO" = (/obj/structure/table/standard,/obj/machinery/computer/security/telescreen/entertainment{icon_state = "frame"; pixel_x = -30},/turf/unsimulated/floor{icon_state = "steel"},/area/centcom/main_hall) "FP" = (/obj/item/weapon/stool/padded,/turf/unsimulated/floor{icon_state = "steel"},/area/centcom/main_hall) "FQ" = (/obj/structure/table/standard,/obj/machinery/computer/security/telescreen/entertainment{icon_state = "frame"; pixel_x = 30},/turf/unsimulated/floor{icon_state = "steel"},/area/centcom/main_hall) @@ -1672,10 +1672,10 @@ "Gh" = (/obj/structure/table/glass,/obj/structure/window/reinforced{dir = 1},/obj/effect/floor_decal/corner/green{dir = 5},/turf/unsimulated/floor{icon_state = "white"},/area/centcom/medical) "Gi" = (/obj/structure/table/glass,/obj/machinery/computer/med_data/laptop,/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 4},/obj/effect/floor_decal/corner/green/full{dir = 1},/turf/unsimulated/floor{icon_state = "white"},/area/centcom/medical) "Gj" = (/obj/structure/closet/secure_closet/medical3,/obj/effect/floor_decal/corner/green{dir = 6},/turf/unsimulated/floor{icon_state = "white"},/area/centcom/medical) -"Gk" = (/obj/structure/table/woodentable{dir = 5},/obj/item/weapon/reagent_containers/food/snacks/bloodsoup,/turf/unsimulated/floor{ icon_state = "wood"},/area/centcom/bar) -"Gl" = (/obj/structure/table/woodentable{dir = 5},/obj/item/weapon/reagent_containers/food/snacks/tofukabob,/turf/unsimulated/floor{ icon_state = "wood"},/area/centcom/bar) -"Gm" = (/obj/structure/table/woodentable{dir = 5},/obj/item/weapon/reagent_containers/food/snacks/poppypretzel,/turf/unsimulated/floor{ icon_state = "wood"},/area/centcom/bar) -"Gn" = (/obj/structure/table/woodentable{dir = 5},/obj/item/weapon/reagent_containers/food/snacks/slice/orangecake/filled,/turf/unsimulated/floor{ icon_state = "wood"},/area/centcom/bar) +"Gk" = (/obj/structure/table/woodentable{dir = 5},/obj/item/weapon/reagent_containers/food/snacks/bloodsoup,/turf/unsimulated/floor{icon_state = "wood"},/area/centcom/bar) +"Gl" = (/obj/structure/table/woodentable{dir = 5},/obj/item/weapon/reagent_containers/food/snacks/tofukabob,/turf/unsimulated/floor{icon_state = "wood"},/area/centcom/bar) +"Gm" = (/obj/structure/table/woodentable{dir = 5},/obj/item/weapon/reagent_containers/food/snacks/poppypretzel,/turf/unsimulated/floor{icon_state = "wood"},/area/centcom/bar) +"Gn" = (/obj/structure/table/woodentable{dir = 5},/obj/item/weapon/reagent_containers/food/snacks/slice/orangecake/filled,/turf/unsimulated/floor{icon_state = "wood"},/area/centcom/bar) "Go" = (/obj/machinery/atm{pixel_x = -30},/turf/unsimulated/floor{icon_state = "steel"},/area/centcom/main_hall) "Gp" = (/obj/machinery/atm{pixel_x = 30},/turf/unsimulated/floor{icon_state = "steel"},/area/centcom/main_hall) "Gq" = (/obj/structure/bed/chair{dir = 4},/obj/machinery/light/small{dir = 1},/turf/simulated/shuttle/floor/red,/area/shuttle/escape/centcom) @@ -1685,10 +1685,10 @@ "Gu" = (/obj/structure/bed/chair/office/light{dir = 1},/turf/unsimulated/floor{icon_state = "white"},/area/centcom/medical) "Gv" = (/obj/machinery/computer/med_data,/obj/effect/floor_decal/corner/green{dir = 5},/turf/unsimulated/floor{icon_state = "white"},/area/centcom/medical) "Gw" = (/obj/machinery/iv_drip,/obj/effect/floor_decal/corner/green{dir = 6},/turf/unsimulated/floor{icon_state = "white"},/area/centcom/medical) -"Gx" = (/obj/structure/table/woodentable{dir = 5},/obj/item/weapon/reagent_containers/food/snacks/spesslaw,/turf/unsimulated/floor{ icon_state = "wood"},/area/centcom/bar) -"Gy" = (/obj/structure/table/woodentable{dir = 5},/obj/item/weapon/reagent_containers/food/snacks/candiedapple,/turf/unsimulated/floor{ icon_state = "wood"},/area/centcom/bar) -"Gz" = (/obj/structure/table/woodentable{dir = 5},/obj/item/weapon/reagent_containers/food/snacks/mushroomsoup,/turf/unsimulated/floor{ icon_state = "wood"},/area/centcom/bar) -"GA" = (/obj/structure/table/woodentable{dir = 5},/obj/item/weapon/reagent_containers/food/snacks/meatsteak,/turf/unsimulated/floor{ icon_state = "wood"},/area/centcom/bar) +"Gx" = (/obj/structure/table/woodentable{dir = 5},/obj/item/weapon/reagent_containers/food/snacks/spesslaw,/turf/unsimulated/floor{icon_state = "wood"},/area/centcom/bar) +"Gy" = (/obj/structure/table/woodentable{dir = 5},/obj/item/weapon/reagent_containers/food/snacks/candiedapple,/turf/unsimulated/floor{icon_state = "wood"},/area/centcom/bar) +"Gz" = (/obj/structure/table/woodentable{dir = 5},/obj/item/weapon/reagent_containers/food/snacks/mushroomsoup,/turf/unsimulated/floor{icon_state = "wood"},/area/centcom/bar) +"GA" = (/obj/structure/table/woodentable{dir = 5},/obj/item/weapon/reagent_containers/food/snacks/meatsteak,/turf/unsimulated/floor{icon_state = "wood"},/area/centcom/bar) "GB" = (/turf/unsimulated/floor{icon_state = "freezerfloor"; dir = 2},/area/centcom/bathroom) "GC" = (/obj/structure/sink{pixel_y = 16},/obj/structure/mirror{pixel_y = 32},/turf/unsimulated/floor{icon_state = "freezerfloor"; dir = 2},/area/centcom/bathroom) "GD" = (/obj/structure/window/reinforced/tinted{dir = 4; icon_state = "twindow"},/turf/unsimulated/floor{icon_state = "freezerfloor"; dir = 2},/area/centcom/bathroom) @@ -1712,9 +1712,9 @@ "GV" = (/obj/machinery/door/airlock{name = "Unit 6"},/turf/unsimulated/floor{icon_state = "freezerfloor"; dir = 2},/area/centcom/bathroom) "GW" = (/obj/structure/table/standard,/obj/item/weapon/storage/firstaid/fire,/obj/item/weapon/storage/firstaid/regular{pixel_x = 2; pixel_y = 3},/obj/item/weapon/extinguisher,/obj/item/weapon/tool/crowbar,/turf/simulated/shuttle/floor/white,/area/shuttle/escape/centcom) "GX" = (/obj/machinery/door/airlock/glass_security{name = "Escape Shuttle Cell"; req_access = list(1)},/turf/simulated/shuttle/floor/red,/area/shuttle/escape/centcom) -"GY" = (/obj/structure/table/woodentable{dir = 5},/obj/item/weapon/flame/lighter/zippo,/obj/item/weapon/storage/fancy/cigarettes,/obj/item/weapon/material/ashtray/bronze{pixel_x = -1; pixel_y = 1},/obj/machinery/camera/network/crescent{c_tag = "Crescent Bar East"; dir = 4},/turf/unsimulated/floor{ icon_state = "wood"},/area/centcom/bar) -"GZ" = (/obj/structure/table/woodentable{dir = 5},/obj/item/weapon/flame/lighter/zippo,/obj/item/weapon/storage/fancy/cigarettes,/obj/item/weapon/material/ashtray/bronze{pixel_x = -1; pixel_y = 1},/turf/unsimulated/floor{ icon_state = "wood"},/area/centcom/bar) -"Ha" = (/turf/unsimulated/floor{ icon_state = "wood"},/turf/unsimulated/floor{icon_state = "lino"},/area/centcom/bar) +"GY" = (/obj/structure/table/woodentable{dir = 5},/obj/item/weapon/flame/lighter/zippo,/obj/item/weapon/storage/fancy/cigarettes,/obj/item/weapon/material/ashtray/bronze{pixel_x = -1; pixel_y = 1},/turf/unsimulated/floor{icon_state = "wood"},/area/centcom/bar) +"GZ" = (/obj/structure/table/woodentable{dir = 5},/obj/item/weapon/flame/lighter/zippo,/obj/item/weapon/storage/fancy/cigarettes,/obj/item/weapon/material/ashtray/bronze{pixel_x = -1; pixel_y = 1},/obj/machinery/camera/network/crescent{c_tag = "Crescent Bar East"; dir = 4},/turf/unsimulated/floor{icon_state = "wood"},/area/centcom/bar) +"Ha" = (/turf/unsimulated/floor{icon_state = "wood"},/turf/unsimulated/floor{icon_state = "lino"},/area/centcom/bar) "Hb" = (/obj/structure/table/woodentable{dir = 5},/obj/item/weapon/reagent_containers/food/drinks/glass2/square,/turf/unsimulated/floor{icon_state = "lino"},/area/centcom/bar) "Hc" = (/obj/structure/table/woodentable{dir = 5},/obj/machinery/cash_register/civilian,/turf/unsimulated/floor{icon_state = "lino"},/area/centcom/bar) "Hd" = (/obj/structure/table/standard,/turf/unsimulated/floor{icon_state = "vault"; dir = 5},/area/tdome) @@ -1777,7 +1777,7 @@ "Ii" = (/obj/machinery/atmospherics/pipe/simple/hidden{dir = 6},/turf/unsimulated/floor{icon_state = "white"},/area/centcom/medical) "Ij" = (/obj/structure/morgue,/obj/effect/floor_decal/corner/blue/full{dir = 8},/turf/unsimulated/floor{icon_state = "white"},/area/centcom/medical) "Ik" = (/obj/effect/floor_decal/corner/blue{dir = 5},/turf/unsimulated/floor{icon_state = "white"},/area/centcom/medical) -"Il" = (/obj/structure/morgue{ icon_state = "morgue1"; dir = 8},/obj/effect/floor_decal/corner/blue/full{dir = 1},/turf/unsimulated/floor{icon_state = "white"},/area/centcom/medical) +"Il" = (/obj/structure/morgue{icon_state = "morgue1"; dir = 8},/obj/effect/floor_decal/corner/blue/full{dir = 1},/turf/unsimulated/floor{icon_state = "white"},/area/centcom/medical) "Im" = (/obj/machinery/door/airlock/centcom{name = "General Access"; opacity = 1; req_access = list(101)},/obj/machinery/door/blast/regular{id = "crescent_thunderdome"; name = "Thunderdome"},/turf/unsimulated/floor{icon_state = "vault"; dir = 5},/area/tdome) "In" = (/obj/structure/bed/roller,/obj/item/weapon/reagent_containers/blood/OMinus,/obj/item/weapon/reagent_containers/blood/OMinus,/obj/item/weapon/reagent_containers/blood/OMinus,/obj/structure/closet/secure_closet/medical_wall{name = "O- Blood Locker"; pixel_x = -32},/obj/effect/floor_decal/corner/green{dir = 9},/turf/unsimulated/floor{icon_state = "white"},/area/centcom/medical) "Io" = (/obj/machinery/bodyscanner{dir = 8},/turf/unsimulated/floor{icon_state = "white"},/area/centcom/medical) @@ -1788,7 +1788,7 @@ "It" = (/obj/machinery/atmospherics/portables_connector{dir = 1},/obj/machinery/portable_atmospherics/canister/oxygen/prechilled,/obj/effect/floor_decal/corner/blue,/turf/unsimulated/floor{icon_state = "white"},/area/centcom/medical) "Iu" = (/obj/machinery/atmospherics/portables_connector{dir = 1},/obj/machinery/portable_atmospherics/canister/oxygen/prechilled,/obj/effect/floor_decal/corner/blue/full{dir = 4},/turf/unsimulated/floor{icon_state = "white"},/area/centcom/medical) "Iv" = (/obj/structure/morgue,/obj/effect/floor_decal/corner/blue{dir = 9},/turf/unsimulated/floor{icon_state = "white"},/area/centcom/medical) -"Iw" = (/obj/structure/morgue{ icon_state = "morgue1"; dir = 8},/obj/effect/floor_decal/corner/blue{dir = 6},/turf/unsimulated/floor{icon_state = "white"},/area/centcom/medical) +"Iw" = (/obj/structure/morgue{icon_state = "morgue1"; dir = 8},/obj/effect/floor_decal/corner/blue{dir = 6},/turf/unsimulated/floor{icon_state = "white"},/area/centcom/medical) "Ix" = (/obj/machinery/door/airlock/centcom{name = "General Access"; opacity = 1; req_access = list(101)},/turf/unsimulated/floor{icon_state = "vault"; dir = 5},/area/tdome) "Iy" = (/obj/structure/bed/chair{dir = 4},/obj/structure/closet/walllocker/emerglocker{pixel_x = -28},/obj/machinery/light{dir = 8; icon_state = "tube1"; pixel_y = 0},/turf/simulated/shuttle/floor/white,/area/shuttle/escape/centcom) "Iz" = (/obj/structure/bed/chair{dir = 8},/obj/item/device/radio/intercom{dir = 4; name = "Station Intercom (General)"; pixel_x = 26},/obj/machinery/light{dir = 4},/turf/simulated/shuttle/floor/white,/area/shuttle/escape/centcom) @@ -1860,8 +1860,8 @@ "JN" = (/obj/structure/closet/l3closet/virology,/obj/item/clothing/mask/gas,/obj/effect/floor_decal/industrial/warning{dir = 10},/turf/unsimulated/floor{icon_state = "white"},/area/centcom/medical) "JO" = (/obj/structure/bed/chair,/obj/structure/disposalpipe/segment,/obj/effect/landmark{name = "tdomeobserve"},/turf/unsimulated/floor{icon_state = "lino"},/area/tdome/tdomeobserve) "JP" = (/turf/simulated/shuttle/floor/yellow,/area/shuttle/escape/centcom) -"JQ" = (/obj/machinery/atmospherics/pipe/simple/visible{ icon_state = "intact"; dir = 5},/obj/machinery/camera/network/crescent{c_tag = "Shuttle Medical"; dir = 4},/turf/simulated/shuttle/floor/white,/area/shuttle/escape/centcom) -"JR" = (/obj/machinery/atmospherics/pipe/simple/visible{ icon_state = "intact"; dir = 9},/turf/simulated/shuttle/floor/white,/area/shuttle/escape/centcom) +"JQ" = (/obj/machinery/atmospherics/pipe/simple/visible{icon_state = "intact"; dir = 9},/turf/simulated/shuttle/floor/white,/area/shuttle/escape/centcom) +"JR" = (/obj/machinery/atmospherics/pipe/simple/visible{icon_state = "intact"; dir = 5},/obj/machinery/camera/network/crescent{c_tag = "Shuttle Medical"; dir = 4},/turf/simulated/shuttle/floor/white,/area/shuttle/escape/centcom) "JS" = (/obj/machinery/vending/wallmed1{layer = 3.3; name = "Emergency NanoMed"; pixel_x = 28; pixel_y = 0},/obj/structure/bed/chair{dir = 8},/turf/simulated/shuttle/floor/white,/area/shuttle/escape/centcom) "JT" = (/obj/machinery/door/airlock/medical{name = "Operating Theatre"; req_access = list(45)},/turf/unsimulated/floor{icon_state = "white"},/area/centcom/medical) "JU" = (/obj/machinery/disease2/incubator,/obj/effect/floor_decal/corner/green/full{dir = 8},/turf/unsimulated/floor{icon_state = "white"},/area/centcom/medical) @@ -1937,9 +1937,9 @@ "Lm" = (/obj/structure/window/reinforced{dir = 8},/obj/effect/floor_decal/corner/green/full,/turf/unsimulated/floor{icon_state = "white"},/area/centcom/medical) "Ln" = (/obj/machinery/atmospherics/pipe/vent,/turf/unsimulated/floor{icon_state = "dark"},/area/tdome) "Lo" = (/obj/machinery/camera/network/thunder{c_tag = "Thunderdome Arena"; invisibility = 101},/turf/unsimulated/floor{icon_state = "dark"},/area/tdome) -"Lp" = (/obj/machinery/atmospherics/pipe/simple/visible{ icon_state = "intact"; dir = 5},/turf/unsimulated/floor{icon_state = "dark"},/area/tdome) +"Lp" = (/obj/machinery/atmospherics/pipe/simple/visible{icon_state = "intact"; dir = 5},/turf/unsimulated/floor{icon_state = "dark"},/area/tdome) "Lq" = (/obj/machinery/atmospherics/pipe/manifold/visible{dir = 1},/turf/unsimulated/floor{icon_state = "dark"},/area/tdome) -"Lr" = (/obj/machinery/atmospherics/pipe/simple/visible{ icon_state = "intact"; dir = 9},/turf/unsimulated/floor{icon_state = "dark"},/area/tdome) +"Lr" = (/obj/machinery/atmospherics/pipe/simple/visible{icon_state = "intact"; dir = 9},/turf/unsimulated/floor{icon_state = "dark"},/area/tdome) "Ls" = (/obj/machinery/atmospherics/pipe/simple/visible,/turf/unsimulated/floor{icon_state = "dark"},/area/tdome) "Lt" = (/obj/machinery/door/airlock/command{name = "Thunderdome Administration"; req_access = list(102)},/turf/unsimulated/floor{icon_state = "vault"; dir = 5},/area/tdome) "Lu" = (/obj/machinery/door/blast/regular{id = "thunderdomehea"; name = "Heavy Supply"},/turf/unsimulated/floor{icon_state = "vault"; dir = 5},/area/tdome) @@ -2008,9 +2008,9 @@ "MF" = (/turf/unsimulated/floor{icon_state = "plating"; name = "plating"},/area/shuttle/cryo/centcom) "MG" = (/obj/machinery/door/airlock/external,/turf/unsimulated/floor{icon = 'icons/turf/flooring/shuttle.dmi'; icon_state = "floor"},/area/centcom/evac) "MH" = (/turf/simulated/shuttle/floor/white,/area/centcom/evac) -"MI" = (/obj/machinery/atmospherics/pipe/simple/visible{ icon_state = "intact"; dir = 5},/turf/simulated/shuttle/floor/white,/area/centcom/evac) +"MI" = (/obj/machinery/atmospherics/pipe/simple/visible{icon_state = "intact"; dir = 5},/turf/simulated/shuttle/floor/white,/area/centcom/evac) "MJ" = (/obj/machinery/atmospherics/pipe/manifold/visible,/turf/simulated/shuttle/floor/white,/area/centcom/evac) -"MK" = (/obj/machinery/atmospherics/pipe/simple/visible{ icon_state = "intact"; dir = 9},/turf/simulated/shuttle/floor/white,/area/centcom/evac) +"MK" = (/obj/machinery/atmospherics/pipe/simple/visible{icon_state = "intact"; dir = 9},/turf/simulated/shuttle/floor/white,/area/centcom/evac) "ML" = (/obj/machinery/computer/operating,/turf/simulated/shuttle/floor/white,/area/centcom/evac) "MM" = (/turf/space,/obj/structure/shuttle/engine/propulsion{dir = 8},/turf/simulated/shuttle/plating/airless/carry,/area/centcom/evac) "MN" = (/obj/structure/closet/emcloset,/turf/simulated/shuttle/floor/yellow,/area/centcom/evac) @@ -2028,10 +2028,10 @@ "MZ" = (/obj/structure/closet/crate/freezer,/obj/item/weapon/reagent_containers/food/snacks/meat/syntiflesh,/obj/item/weapon/reagent_containers/food/snacks/meat/syntiflesh,/obj/item/weapon/reagent_containers/food/snacks/meat/syntiflesh,/obj/item/weapon/reagent_containers/food/snacks/meat/syntiflesh,/obj/item/weapon/reagent_containers/food/snacks/meat/syntiflesh,/obj/item/weapon/reagent_containers/food/snacks/meat/syntiflesh,/obj/item/weapon/reagent_containers/food/snacks/meat/syntiflesh,/obj/item/weapon/reagent_containers/food/snacks/meat/syntiflesh,/obj/item/weapon/reagent_containers/food/snacks/meat/syntiflesh,/turf/simulated/shuttle/floor/white,/area/centcom/evac) "Na" = (/obj/structure/closet/crate/medical,/obj/item/weapon/storage/firstaid/regular{pixel_x = -2; pixel_y = 4},/obj/item/weapon/storage/firstaid/regular{pixel_x = -2; pixel_y = 4},/obj/item/bodybag/cryobag{pixel_x = 5},/obj/item/bodybag/cryobag{pixel_x = 5},/obj/item/weapon/storage/firstaid/o2{layer = 2.8; pixel_x = 4; pixel_y = 6},/obj/item/weapon/storage/box/masks{pixel_x = 0; pixel_y = 0},/obj/item/weapon/storage/box/gloves{pixel_x = 3; pixel_y = 4},/obj/item/weapon/storage/firstaid/toxin,/obj/item/weapon/storage/firstaid/fire{layer = 2.9; pixel_x = 2; pixel_y = 3},/obj/item/weapon/storage/firstaid/adv{pixel_x = -2},/obj/item/weapon/reagent_containers/blood/empty,/obj/item/weapon/reagent_containers/blood/empty,/turf/simulated/shuttle/floor/white,/area/centcom/evac) "Nb" = (/obj/structure/table/standard,/turf/simulated/shuttle/floor/white,/area/centcom/evac) -"Nc" = (/obj/structure/morgue{ icon_state = "morgue1"; dir = 8},/turf/simulated/shuttle/floor/white,/area/centcom/evac) +"Nc" = (/obj/structure/morgue{icon_state = "morgue1"; dir = 8},/turf/simulated/shuttle/floor/white,/area/centcom/evac) "Nd" = (/obj/structure/bed/chair,/obj/effect/landmark{name = "endgame_exit"},/obj/item/toy/plushie/mouse{desc = "A plushie of a small fuzzy rodent."; name = "Woodrat"},/turf/unsimulated/beach/sand,/area/beach) "Ne" = (/obj/structure/bed/chair,/obj/effect/landmark{name = "endgame_exit"},/turf/unsimulated/beach/sand,/area/beach) -"Nf" = (/mob/living/simple_animal/crab/Coffee,/turf/unsimulated/beach/sand,/area/beach) +"Nf" = (/mob/living/simple_mob/animal/passive/crab/Coffee,/turf/unsimulated/beach/sand,/area/beach) "Ng" = (/turf/space,/obj/structure/shuttle/engine/propulsion{dir = 8; icon_state = "propulsion_r"},/turf/simulated/shuttle/plating/airless/carry,/area/centcom/evac) "Nh" = (/obj/machinery/door/airlock/external{frequency = 1380; icon_state = "door_locked"; id_tag = "large_escape_pod_2_recovery_hatch"; locked = 1; name = "Recovery Shuttle Dock 02"; req_access = list(13)},/turf/simulated/shuttle/floor/yellow,/area/centcom/evac) "Ni" = (/obj/machinery/vending/wallmed1{name = "Emergency NanoMed"; pixel_x = -30; pixel_y = 0},/turf/simulated/shuttle/floor/white,/area/centcom/evac) @@ -2055,7 +2055,7 @@ "NA" = (/obj/machinery/vending/coffee,/turf/simulated/shuttle/floor/yellow,/area/centcom/evac) "NB" = (/obj/machinery/vending/cola,/turf/simulated/shuttle/floor/yellow,/area/centcom/evac) "NC" = (/obj/structure/grille,/obj/structure/shuttle/window,/turf/simulated/shuttle/plating,/area/centcom/evac) -"ND" = (/obj/machinery/door/airlock/glass,/turf/simulated/shuttle/floor{ icon_state = "floor_yellow"},/area/centcom/evac) +"ND" = (/obj/machinery/door/airlock/glass,/turf/simulated/shuttle/floor{icon_state = "floor_yellow"},/area/centcom/evac) "NE" = (/obj/machinery/computer/communications,/turf/simulated/shuttle/floor/black,/area/centcom/evac) "NF" = (/turf/simulated/shuttle/floor/black,/area/centcom/evac) "NG" = (/obj/structure/table/standard,/obj/item/device/radio/off,/obj/item/weapon/paper_bin,/turf/simulated/shuttle/floor/black,/area/centcom/evac) @@ -2070,8 +2070,8 @@ "NP" = (/turf/unsimulated/beach/water,/area/beach) "NQ" = (/obj/machinery/door/airlock/glass,/turf/simulated/shuttle/floor,/area/centcom/evac) "NR" = (/obj/structure/table/standard,/turf/simulated/shuttle/floor,/area/centcom/evac) -"NS" = (/obj/machinery/door/airlock/hatch{name = "Cockpit"; req_access = list(109)},/turf/simulated/shuttle/floor{ icon_state = "floor_yellow"},/area/centcom/evac) -"NT" = (/turf/simulated/shuttle/floor{ icon_state = "floor_yellow"},/area/centcom/evac) +"NS" = (/turf/simulated/shuttle/floor{icon_state = "floor_yellow"},/area/centcom/evac) +"NT" = (/obj/machinery/door/airlock/hatch{name = "Cockpit"; req_access = list(109)},/turf/simulated/shuttle/floor{icon_state = "floor_yellow"},/area/centcom/evac) "NU" = (/obj/structure/table/standard,/obj/item/weapon/storage/lockbox,/turf/simulated/shuttle/floor/black,/area/centcom/evac) "NV" = (/obj/structure/bed/chair{dir = 1},/turf/simulated/shuttle/floor,/area/centcom/evac) "NW" = (/obj/structure/bed/chair,/turf/simulated/shuttle/floor/black,/area/centcom/evac) @@ -2090,11 +2090,11 @@ "Oj" = (/obj/machinery/door/airlock/external{frequency = 1380; icon_state = "door_locked"; id_tag = "escape_pod_3_recovery_hatch"; locked = 1; name = "Recovery Shuttle Dock 3"; req_access = list(13)},/turf/simulated/shuttle/floor/yellow,/area/centcom/evac) "Ok" = (/obj/machinery/door/airlock/maintenance_hatch{req_access = list(101)},/turf/unsimulated/floor{icon = 'icons/turf/flooring/shuttle.dmi'; icon_state = "floor2"},/area/centcom/evac) "Ol" = (/obj/machinery/embedded_controller/radio/simple_docking_controller{frequency = 1380; id_tag = "large_escape_pod_1_recovery"; pixel_x = -25; pixel_y = -25; req_one_access = list(13); tag_door = "large_escape_pod_1_recovery_hatch"},/turf/simulated/shuttle/floor/yellow,/area/centcom/evac) -"Om" = (/obj/machinery/computer/card,/turf/simulated/shuttle/floor{ icon_state = "floor_red"},/area/centcom/evac) -"On" = (/obj/structure/table/rack,/turf/simulated/shuttle/floor{ icon_state = "floor_red"},/area/centcom/evac) -"Oo" = (/turf/simulated/shuttle/floor{ icon_state = "floor_red"},/area/centcom/evac) -"Op" = (/obj/structure/table/reinforced,/obj/item/weapon/paper_bin,/obj/item/weapon/pen,/turf/simulated/shuttle/floor{ icon_state = "floor_red"},/area/centcom/evac) -"Oq" = (/obj/machinery/computer/secure_data,/turf/simulated/shuttle/floor{ icon_state = "floor_red"},/area/centcom/evac) +"Om" = (/obj/structure/table/rack,/turf/simulated/shuttle/floor{icon_state = "floor_red"},/area/centcom/evac) +"On" = (/obj/machinery/computer/card,/turf/simulated/shuttle/floor{icon_state = "floor_red"},/area/centcom/evac) +"Oo" = (/obj/structure/table/reinforced,/obj/item/weapon/paper_bin,/obj/item/weapon/pen,/turf/simulated/shuttle/floor{icon_state = "floor_red"},/area/centcom/evac) +"Op" = (/turf/simulated/shuttle/floor{icon_state = "floor_red"},/area/centcom/evac) +"Oq" = (/obj/machinery/computer/secure_data,/turf/simulated/shuttle/floor{icon_state = "floor_red"},/area/centcom/evac) "Or" = (/obj/structure/bed/padded,/obj/item/weapon/bedsheet/medical,/turf/simulated/shuttle/floor,/area/centcom/evac) "Os" = (/turf/simulated/mineral,/area/syndicate_mothership{name = "\improper Raider Base"}) "Ot" = (/obj/effect/landmark{name = "voxstart"},/turf/unsimulated/floor{icon_state = "dark"},/area/syndicate_mothership{name = "\improper Raider Base"}) @@ -2106,19 +2106,19 @@ "Oz" = (/turf/simulated/shuttle/plating,/area/shuttle/escape_pod4/centcom) "OA" = (/turf/simulated/shuttle/plating,/area/shuttle/escape_pod3/centcom) "OB" = (/obj/machinery/door/airlock/external{frequency = 1380; icon_state = "door_locked"; id_tag = "large_escape_pod_1_recovery_hatch"; locked = 1; name = "Recovery Shuttle Dock 01"; req_access = list(13)},/turf/simulated/shuttle/floor/yellow,/area/centcom/evac) -"OC" = (/obj/structure/bed/chair{dir = 1},/turf/simulated/shuttle/floor{ icon_state = "floor_red"},/area/centcom/evac) +"OC" = (/obj/structure/bed/chair{dir = 1},/turf/simulated/shuttle/floor{icon_state = "floor_red"},/area/centcom/evac) "OD" = (/obj/structure/closet/secure_closet/personal/patient,/turf/simulated/shuttle/floor,/area/centcom/evac) "OE" = (/obj/structure/table/standard,/obj/structure/bedsheetbin,/turf/simulated/shuttle/floor,/area/centcom/evac) "OF" = (/obj/item/weapon/bedsheet/orange,/obj/structure/bed/padded,/turf/unsimulated/floor{icon_state = "dark"},/area/syndicate_mothership{name = "\improper Raider Base"}) "OG" = (/turf/simulated/shuttle/plating,/area/shuttle/large_escape_pod1/centcom) -"OH" = (/obj/structure/closet{name = "Evidence Closet"},/turf/simulated/shuttle/floor{ icon_state = "floor_red"},/area/centcom/evac) -"OI" = (/obj/structure/closet/secure_closet/security,/turf/simulated/shuttle/floor{ icon_state = "floor_red"},/area/centcom/evac) +"OH" = (/obj/structure/closet/secure_closet/security,/turf/simulated/shuttle/floor{icon_state = "floor_red"},/area/centcom/evac) +"OI" = (/obj/structure/closet{name = "Evidence Closet"},/turf/simulated/shuttle/floor{icon_state = "floor_red"},/area/centcom/evac) "OJ" = (/obj/machinery/door/airlock/hatch{req_access = list(150)},/turf/unsimulated/floor{icon_state = "dark"},/area/syndicate_mothership{name = "\improper Raider Base"}) "OK" = (/obj/structure/bed/chair,/turf/simulated/shuttle/floor/yellow,/area/centcom/evac) -"OL" = (/obj/machinery/door/airlock/glass_security{name = "Escape Shuttle Cell"; req_access = list(1)},/turf/simulated/shuttle/floor{ icon_state = "floor_red"},/area/centcom/evac) -"OM" = (/turf/unsimulated/floor{ icon_state = "asteroid"},/area/syndicate_mothership{name = "\improper Raider Base"}) +"OL" = (/obj/machinery/door/airlock/glass_security{name = "Escape Shuttle Cell"; req_access = list(1)},/turf/simulated/shuttle/floor{icon_state = "floor_red"},/area/centcom/evac) +"OM" = (/turf/unsimulated/floor{icon_state = "asteroid"},/area/syndicate_mothership{name = "\improper Raider Base"}) "ON" = (/obj/structure/table/standard,/turf/simulated/shuttle/floor/yellow,/area/centcom/evac) -"OO" = (/obj/structure/bed/padded,/obj/item/weapon/bedsheet/orange,/turf/simulated/shuttle/floor{ icon_state = "floor_red"},/area/centcom/evac) +"OO" = (/obj/structure/bed/padded,/obj/item/weapon/bedsheet/orange,/turf/simulated/shuttle/floor{icon_state = "floor_red"},/area/centcom/evac) "OP" = (/obj/item/weapon/tray{pixel_y = 5},/obj/structure/table/standard,/turf/unsimulated/floor{icon_state = "white"},/area/syndicate_mothership{name = "\improper Raider Base"}) "OQ" = (/obj/structure/table/standard,/obj/item/weapon/storage/box/glasses/square{pixel_x = 1; pixel_y = 4},/turf/unsimulated/floor{icon_state = "white"},/area/syndicate_mothership{name = "\improper Raider Base"}) "OR" = (/obj/machinery/portable_atmospherics/powered/pump,/turf/simulated/shuttle/plating,/area/centcom/evac) @@ -2130,7 +2130,7 @@ "OX" = (/obj/structure/grille,/obj/structure/window/shuttle{icon_state = "window8"},/turf/simulated/shuttle/plating,/area/centcom/evac) "OY" = (/turf/unsimulated/floor{icon_state = "white"},/area/syndicate_mothership{name = "\improper Raider Base"}) "OZ" = (/obj/structure/table/standard,/obj/machinery/chemical_dispenser/bar_soft/full,/turf/unsimulated/floor{icon_state = "white"},/area/syndicate_mothership{name = "\improper Raider Base"}) -"Pa" = (/obj/item/weapon/bedsheet/orange,/obj/effect/decal/cleanable/cobweb2{ icon_state = "cobweb1"},/obj/structure/bed/padded,/turf/unsimulated/floor{icon_state = "dark"},/area/syndicate_mothership{name = "\improper Raider Base"}) +"Pa" = (/obj/item/weapon/bedsheet/orange,/obj/effect/decal/cleanable/cobweb2{icon_state = "cobweb1"},/obj/structure/bed/padded,/turf/unsimulated/floor{icon_state = "dark"},/area/syndicate_mothership{name = "\improper Raider Base"}) "Pb" = (/obj/machinery/microwave{pixel_x = -1; pixel_y = 8},/obj/structure/table/standard,/turf/unsimulated/floor{icon_state = "white"},/area/syndicate_mothership{name = "\improper Raider Base"}) "Pc" = (/obj/structure/table/standard,/turf/unsimulated/floor{icon_state = "dark"},/area/syndicate_mothership{name = "\improper Raider Base"}) "Pd" = (/obj/structure/closet/secure_closet/freezer/kitchen,/turf/unsimulated/floor{icon_state = "white"},/area/syndicate_mothership{name = "\improper Raider Base"}) @@ -2142,31 +2142,31 @@ "Pj" = (/obj/effect/decal/cleanable/blood,/turf/unsimulated/floor{icon_state = "white"},/area/syndicate_mothership{name = "\improper Raider Base"}) "Pk" = (/obj/machinery/gibber,/turf/unsimulated/floor{icon_state = "white"},/area/syndicate_mothership{name = "\improper Raider Base"}) "Pl" = (/obj/structure/kitchenspike,/turf/unsimulated/floor{icon_state = "white"},/area/syndicate_mothership{name = "\improper Raider Base"}) -"Pm" = (/obj/item/clothing/head/xenos,/turf/unsimulated/floor{ icon_state = "asteroid"},/area/syndicate_mothership{name = "\improper Raider Base"}) +"Pm" = (/obj/item/clothing/head/xenos,/turf/unsimulated/floor{icon_state = "asteroid"},/area/syndicate_mothership{name = "\improper Raider Base"}) "Pn" = (/obj/structure/sink{icon_state = "sink"; dir = 8; pixel_x = -12; pixel_y = 2},/obj/structure/mirror{dir = 4; pixel_x = -28; pixel_y = 0},/turf/unsimulated/floor{icon_state = "freezerfloor"; dir = 2},/area/syndicate_mothership{name = "\improper Raider Base"}) -"Po" = (/obj/item/clothing/mask/gas/swat{desc = "A close-fitting mask clearly not made for a human face."; name = "\improper alien mask"},/turf/unsimulated/floor{ icon_state = "asteroid"},/area/syndicate_mothership{name = "\improper Raider Base"}) -"Pp" = (/obj/item/xenos_claw,/turf/unsimulated/floor{ icon_state = "asteroid"},/area/syndicate_mothership{name = "\improper Raider Base"}) -"Pq" = (/obj/structure/table/rack,/turf/unsimulated/floor{ icon_state = "asteroid"},/area/syndicate_mothership{name = "\improper Raider Base"}) -"Pr" = (/obj/structure/table/rack,/obj/item/weapon/gun/launcher/spikethrower,/turf/unsimulated/floor{ icon_state = "asteroid"},/area/syndicate_mothership{name = "\improper Raider Base"}) +"Po" = (/obj/item/clothing/mask/gas/swat{desc = "A close-fitting mask clearly not made for a human face."; name = "\improper alien mask"},/turf/unsimulated/floor{icon_state = "asteroid"},/area/syndicate_mothership{name = "\improper Raider Base"}) +"Pp" = (/obj/structure/table/rack,/turf/unsimulated/floor{icon_state = "asteroid"},/area/syndicate_mothership{name = "\improper Raider Base"}) +"Pq" = (/obj/item/xenos_claw,/turf/unsimulated/floor{icon_state = "asteroid"},/area/syndicate_mothership{name = "\improper Raider Base"}) +"Pr" = (/obj/structure/table/rack,/obj/item/weapon/gun/launcher/spikethrower,/turf/unsimulated/floor{icon_state = "asteroid"},/area/syndicate_mothership{name = "\improper Raider Base"}) "Ps" = (/obj/machinery/shower{dir = 1},/turf/unsimulated/floor{icon_state = "freezerfloor"; dir = 2},/area/syndicate_mothership{name = "\improper Raider Base"}) -"Pt" = (/obj/item/pizzabox/meat,/turf/unsimulated/floor{ icon_state = "asteroid"},/area/syndicate_mothership{name = "\improper Raider Base"}) -"Pu" = (/obj/structure/reagent_dispensers/beerkeg,/turf/unsimulated/floor{ name = "plating"; icon_state = "cult"},/area/syndicate_mothership{name = "\improper Raider Base"}) -"Pv" = (/turf/unsimulated/floor{ name = "plating"; icon_state = "cult"},/area/syndicate_mothership{name = "\improper Raider Base"}) -"Pw" = (/obj/effect/decal/cleanable/cobweb2,/turf/unsimulated/floor{ name = "plating"; icon_state = "cult"},/area/syndicate_mothership{name = "\improper Raider Base"}) -"Px" = (/obj/structure/table/rack,/obj/item/clothing/glasses/thermal/plain/monocle,/turf/unsimulated/floor{ icon_state = "asteroid"},/area/syndicate_mothership{name = "\improper Raider Base"}) -"Py" = (/obj/effect/landmark{name = "voxstart"},/turf/unsimulated/floor{ name = "plating"; icon_state = "cult"},/area/syndicate_mothership{name = "\improper Raider Base"}) -"Pz" = (/obj/item/weapon/tank/nitrogen,/turf/unsimulated/floor{ icon_state = "asteroid"},/area/syndicate_mothership{name = "\improper Raider Base"}) -"PA" = (/obj/item/organ/internal/stack,/turf/unsimulated/floor{ icon_state = "asteroid"},/area/syndicate_mothership{name = "\improper Raider Base"}) -"PB" = (/obj/structure/bed/chair,/turf/unsimulated/floor{ name = "plating"; icon_state = "cult"},/area/syndicate_mothership{name = "\improper Raider Base"}) +"Pt" = (/obj/item/pizzabox/meat,/turf/unsimulated/floor{icon_state = "asteroid"},/area/syndicate_mothership{name = "\improper Raider Base"}) +"Pu" = (/obj/structure/reagent_dispensers/beerkeg,/turf/unsimulated/floor{name = "plating"; icon_state = "cult"},/area/syndicate_mothership{name = "\improper Raider Base"}) +"Pv" = (/turf/unsimulated/floor{name = "plating"; icon_state = "cult"},/area/syndicate_mothership{name = "\improper Raider Base"}) +"Pw" = (/obj/effect/decal/cleanable/cobweb2,/turf/unsimulated/floor{name = "plating"; icon_state = "cult"},/area/syndicate_mothership{name = "\improper Raider Base"}) +"Px" = (/obj/structure/table/rack,/obj/item/clothing/glasses/thermal/plain/monocle,/turf/unsimulated/floor{icon_state = "asteroid"},/area/syndicate_mothership{name = "\improper Raider Base"}) +"Py" = (/obj/effect/landmark{name = "voxstart"},/turf/unsimulated/floor{name = "plating"; icon_state = "cult"},/area/syndicate_mothership{name = "\improper Raider Base"}) +"Pz" = (/obj/item/weapon/tank/nitrogen,/turf/unsimulated/floor{icon_state = "asteroid"},/area/syndicate_mothership{name = "\improper Raider Base"}) +"PA" = (/obj/item/organ/internal/stack,/turf/unsimulated/floor{icon_state = "asteroid"},/area/syndicate_mothership{name = "\improper Raider Base"}) +"PB" = (/obj/structure/bed/chair,/turf/unsimulated/floor{name = "plating"; icon_state = "cult"},/area/syndicate_mothership{name = "\improper Raider Base"}) "PC" = (/obj/structure/grille,/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 8},/turf/unsimulated/floor{icon_state = "dark"},/area/syndicate_mothership{name = "\improper Raider Base"}) "PD" = (/obj/structure/grille,/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 1},/turf/unsimulated/floor{icon_state = "dark"},/area/syndicate_mothership{name = "\improper Raider Base"}) "PE" = (/obj/structure/grille,/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 4},/turf/unsimulated/floor{icon_state = "dark"},/area/syndicate_mothership{name = "\improper Raider Base"}) -"PF" = (/obj/machinery/computer/station_alert,/turf/unsimulated/floor{ name = "plating"; icon_state = "cult"},/area/syndicate_mothership{name = "\improper Raider Base"}) -"PG" = (/obj/machinery/computer/shuttle_control/multi/skipjack,/turf/unsimulated/floor{ name = "plating"; icon_state = "cult"},/area/syndicate_mothership{name = "\improper Raider Base"}) -"PH" = (/obj/machinery/suit_cycler/syndicate{locked = 0},/turf/unsimulated/floor{ name = "plating"; icon_state = "cult"},/area/syndicate_mothership{name = "\improper Raider Base"}) +"PF" = (/obj/machinery/computer/shuttle_control/multi/skipjack,/turf/unsimulated/floor{name = "plating"; icon_state = "cult"},/area/syndicate_mothership{name = "\improper Raider Base"}) +"PG" = (/obj/machinery/computer/station_alert,/turf/unsimulated/floor{name = "plating"; icon_state = "cult"},/area/syndicate_mothership{name = "\improper Raider Base"}) +"PH" = (/obj/machinery/suit_cycler/syndicate{locked = 0},/turf/unsimulated/floor{name = "plating"; icon_state = "cult"},/area/syndicate_mothership{name = "\improper Raider Base"}) "PI" = (/obj/effect/step_trigger/thrower{affect_ghosts = 1; direction = 2; name = "thrower_throwdown"; tiles = 0},/turf/space,/area/space) -"PJ" = (/obj/machinery/portable_atmospherics/canister/nitrogen,/obj/item/weapon/tank/nitrogen,/turf/unsimulated/floor{ icon_state = "asteroid"},/area/syndicate_mothership{name = "\improper Raider Base"}) -"PK" = (/obj/item/clothing/head/philosopher_wig,/turf/unsimulated/floor{ icon_state = "asteroid"},/area/syndicate_mothership{name = "\improper Raider Base"}) +"PJ" = (/obj/machinery/portable_atmospherics/canister/nitrogen,/obj/item/weapon/tank/nitrogen,/turf/unsimulated/floor{icon_state = "asteroid"},/area/syndicate_mothership{name = "\improper Raider Base"}) +"PK" = (/obj/item/clothing/head/philosopher_wig,/turf/unsimulated/floor{icon_state = "asteroid"},/area/syndicate_mothership{name = "\improper Raider Base"}) "PL" = (/obj/structure/lattice,/obj/structure/window/reinforced{dir = 4},/turf/space,/area/syndicate_mothership{name = "\improper Raider Base"}) "PM" = (/obj/machinery/door/airlock/external{req_access = list(150)},/turf/unsimulated/floor{icon_state = "dark"},/area/syndicate_mothership{name = "\improper Raider Base"}) "PN" = (/obj/structure/lattice,/obj/structure/window/reinforced{dir = 8},/turf/space,/area/syndicate_mothership{name = "\improper Raider Base"}) @@ -2254,8 +2254,8 @@ "Rr" = (/obj/machinery/media/jukebox,/turf/unsimulated/floor{dir = 8; icon_state = "wood"},/area/wizard_station) "Rs" = (/obj/machinery/vending/hydronutrients,/turf/unsimulated/floor{icon_state = "grass0"; name = "grass"},/area/wizard_station) "Rt" = (/obj/structure/closet{icon_closed = "cabinet_closed"; icon_opened = "cabinet_open"; icon_state = "cabinet_closed"},/obj/item/clothing/under/psysuit,/obj/item/clothing/suit/wizrobe/psypurple,/obj/item/clothing/head/wizard/amp,/turf/unsimulated/floor{icon_state = "vault"; dir = 5},/area/wizard_station) -"Ru" = (/mob/living/simple_animal/mouse/gray{desc = "He looks kingly."; name = "Arthur"},/turf/unsimulated/floor{icon_state = "dark"},/area/wizard_station) -"Rv" = (/obj/structure/flora/pottedplant{ icon_state = "plant-24"},/turf/unsimulated/floor{icon_state = "dark"},/area/wizard_station) +"Ru" = (/mob/living/simple_mob/animal/passive/mouse/gray{desc = "He looks kingly."; name = "Arthur"},/turf/unsimulated/floor{icon_state = "dark"},/area/wizard_station) +"Rv" = (/obj/structure/flora/pottedplant{icon_state = "plant-24"},/turf/unsimulated/floor{icon_state = "dark"},/area/wizard_station) "Rw" = (/obj/machinery/atmospherics/pipe/simple/visible,/turf/simulated/shuttle/plating,/area/skipjack_station/start) "Rx" = (/turf/simulated/shuttle/plating,/area/skipjack_station/start) "Ry" = (/obj/structure/reagent_dispensers/watertank,/obj/machinery/light/small{dir = 4},/turf/simulated/shuttle/plating,/area/skipjack_station/start) @@ -2264,7 +2264,7 @@ "RB" = (/obj/item/robot_parts/head,/turf/simulated/shuttle/plating,/area/skipjack_station/start) "RC" = (/obj/machinery/photocopier,/turf/unsimulated/floor{dir = 8; icon_state = "wood"},/area/wizard_station) "RD" = (/obj/structure/bookcase,/turf/unsimulated/floor{dir = 8; icon_state = "wood"},/area/wizard_station) -"RE" = (/obj/structure/flora/pottedplant{ icon_state = "plant-08"},/turf/unsimulated/floor{dir = 8; icon_state = "wood"},/area/wizard_station) +"RE" = (/obj/structure/flora/pottedplant{icon_state = "plant-08"},/turf/unsimulated/floor{dir = 8; icon_state = "wood"},/area/wizard_station) "RF" = (/obj/structure/closet{icon_closed = "cabinet_closed"; icon_opened = "cabinet_open"; icon_state = "cabinet_closed"},/obj/item/clothing/shoes/sandal/marisa{desc = "A set of fancy shoes that are as functional as they are comfortable."; name = "Gentlemans Shoes"},/obj/item/clothing/under/gentlesuit,/obj/item/clothing/suit/wizrobe/gentlecoat,/obj/item/clothing/head/wizard/cap,/obj/item/weapon/staff/gentcane,/turf/unsimulated/floor{icon_state = "vault"; dir = 5},/area/wizard_station) "RG" = (/obj/structure/closet{icon_closed = "cabinet_closed"; icon_opened = "cabinet_open"; icon_state = "cabinet_closed"},/obj/item/clothing/suit/wizrobe/magusred,/obj/item/clothing/head/wizard/magus,/obj/item/weapon/staff,/turf/unsimulated/floor{icon_state = "vault"; dir = 5},/area/wizard_station) "RH" = (/obj/structure/closet{icon_closed = "cabinet_closed"; icon_opened = "cabinet_open"; icon_state = "cabinet_closed"},/obj/item/clothing/suit/wizrobe/marisa,/obj/item/clothing/shoes/sandal/marisa,/obj/item/clothing/head/wizard/marisa,/obj/item/weapon/staff/broom,/turf/unsimulated/floor{icon_state = "vault"; dir = 5},/area/wizard_station) @@ -2294,7 +2294,7 @@ "Sf" = (/obj/structure/table/steel_reinforced,/obj/item/stack/telecrystal,/turf/unsimulated/floor{icon_state = "dark"},/area/wizard_station) "Sg" = (/obj/item/device/radio/intercom{desc = "Talk through this. Evilly"; frequency = 1213; name = "Syndicate Intercom"; pixel_x = 32; subspace_transmission = 1; syndie = 1},/obj/item/device/radio/intercom{desc = "Talk through this. Evilly"; frequency = 1213; name = "Syndicate Intercom"; pixel_x = 32; subspace_transmission = 1; syndie = 1},/turf/unsimulated/floor{icon_state = "vault"; dir = 5},/area/wizard_station) "Sh" = (/obj/structure/table/steel_reinforced,/obj/item/clothing/head/philosopher_wig,/turf/unsimulated/floor{icon_state = "dark"},/area/wizard_station) -"Si" = (/obj/structure/flora/pottedplant{ icon_state = "plant-04"},/turf/unsimulated/floor{icon_state = "vault"; dir = 5},/area/wizard_station) +"Si" = (/obj/structure/flora/pottedplant{icon_state = "plant-04"},/turf/unsimulated/floor{icon_state = "vault"; dir = 5},/area/wizard_station) "Sj" = (/obj/structure/sign/electricshock,/turf/simulated/shuttle/wall/dark/hard_corner,/area/wizard_station) "Sk" = (/obj/machinery/portable_atmospherics/canister/oxygen,/turf/unsimulated/floor{icon_state = "plating"; name = "plating"},/area/wizard_station) "Sl" = (/obj/structure/grille,/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 8},/obj/machinery/door/blast/regular{id = "skipjackshutters"; name = "Skipjack Blast Shielding"},/turf/simulated/shuttle/plating,/area/skipjack_station/start) @@ -2323,7 +2323,7 @@ "SI" = (/obj/item/device/radio/intercom{desc = "Talk through this. Evilly"; frequency = 1213; name = "Subversive Intercom"; pixel_x = 32; subspace_transmission = 1; syndie = 1},/obj/machinery/computer/station_alert/all,/turf/unsimulated/floor{icon_state = "vault"; dir = 5},/area/wizard_station) "SJ" = (/obj/structure/table/steel_reinforced,/obj/item/device/mmi/radio_enabled,/turf/unsimulated/floor{icon_state = "dark"},/area/wizard_station) "SK" = (/obj/structure/table/steel_reinforced,/obj/item/weapon/material/knife/ritual,/turf/unsimulated/floor{icon_state = "dark"},/area/wizard_station) -"SL" = (/obj/structure/flora/pottedplant{ icon_state = "plant-03"},/obj/item/device/radio/intercom{desc = "Talk through this. Evilly"; frequency = 1213; name = "Subversive Intercom"; pixel_x = -32; subspace_transmission = 1; syndie = 1},/turf/unsimulated/floor{icon_state = "vault"; dir = 5},/area/wizard_station) +"SL" = (/obj/structure/flora/pottedplant{icon_state = "plant-03"},/obj/item/device/radio/intercom{desc = "Talk through this. Evilly"; frequency = 1213; name = "Subversive Intercom"; pixel_x = -32; subspace_transmission = 1; syndie = 1},/turf/unsimulated/floor{icon_state = "vault"; dir = 5},/area/wizard_station) "SM" = (/obj/structure/reagent_dispensers/watertank,/turf/unsimulated/floor{icon_state = "plating"; name = "plating"},/area/wizard_station) "SN" = (/obj/machinery/power/port_gen/pacman,/turf/unsimulated/floor{icon_state = "plating"; name = "plating"},/area/wizard_station) "SO" = (/obj/structure/shuttle/engine/heater,/obj/structure/window/reinforced{dir = 1},/turf/simulated/shuttle/plating/airless,/area/skipjack_station/start) @@ -2353,7 +2353,7 @@ "Tm" = (/obj/structure/table/steel_reinforced,/obj/item/weapon/book/manual/engineering_hacking,/obj/item/device/radio/intercom{desc = "Talk through this. Evilly"; frequency = 1213; name = "Subversive Intercom"; pixel_x = 32; subspace_transmission = 1; syndie = 1},/turf/unsimulated/floor{icon_state = "vault"; dir = 5},/area/wizard_station) "Tn" = (/obj/effect/floor_decal/industrial/warning/corner,/turf/unsimulated/floor{icon_state = "vault"; dir = 5},/area/wizard_station) "To" = (/obj/effect/floor_decal/industrial/warning,/turf/unsimulated/floor{icon_state = "dark"},/area/wizard_station) -"Tp" = (/obj/effect/floor_decal/industrial/warning/corner{ icon_state = "warningcorner"; dir = 8},/turf/unsimulated/floor{icon_state = "vault"; dir = 5},/area/wizard_station) +"Tp" = (/obj/effect/floor_decal/industrial/warning/corner{icon_state = "warningcorner"; dir = 8},/turf/unsimulated/floor{icon_state = "vault"; dir = 5},/area/wizard_station) "Tq" = (/obj/item/device/radio/intercom{desc = "Talk through this. Evilly"; frequency = 1213; name = "Subversive Intercom"; pixel_x = -32; subspace_transmission = 1; syndie = 1},/obj/item/target,/obj/effect/floor_decal/industrial/outline/yellow,/turf/unsimulated/floor{icon_state = "vault"; dir = 5},/area/wizard_station) "Tr" = (/obj/item/weapon/bedsheet/rainbow,/obj/structure/bed/padded,/turf/simulated/shuttle/floor/red,/area/skipjack_station/start) "Ts" = (/obj/item/weapon/bedsheet/hos,/obj/structure/bed/padded,/turf/simulated/shuttle/floor/red,/area/skipjack_station/start) @@ -2399,7 +2399,7 @@ "Ug" = (/obj/machinery/computer/teleporter,/turf/unsimulated/floor{icon_state = "dark"},/area/wizard_station) "Uh" = (/obj/machinery/teleport/station,/turf/unsimulated/floor{icon_state = "dark"},/area/wizard_station) "Ui" = (/obj/machinery/teleport/hub,/turf/unsimulated/floor{icon_state = "dark"},/area/wizard_station) - + (1,1,1) = {" aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabacacacacacacacadadaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeacaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeacafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafagagagagagagagagagagagagagafafafafafafafafafafafafafafafafafafafafahaiaiaiaiaiaiaiaiaiaiahaiaiaiaiaiaiaiaiaiaiahaiaiaiaiaiaiaiaiaiaiahaiaiaiaiaiaiaiaiaiaiahaiaiaiaiaiaiaiaiaiaiahaiaiaiaiaiaiaiaiaiaiahaiaiaiaiaiaiaiaiaiaiah aaajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaaacacacacacacacadacacacacacacacacacacacacacacacacacacacacacacacadacaeacacacacacacacacacacacacacacacacacacacacacacacaeacafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafagakalagakalagakalagakalagafafafafafafafafafafafafafafafafafafafafamanananaoananananananapaqaraqaraqaqaraqaraqapasatatatatatatatatatapauavawawawawawawawawapaxaxaxaxaxaxaxaxaxaxapayayayayayayayayayayapazaAaBaCaDaDaDaDaDaEaF @@ -2433,20 +2433,20 @@ aaajajajajajajajbpbDbDbDbDbDbDbDbDbDbDbDbDbDbqajajajajajajajaaajaaajajajajajajaj aaajajajajajajajbpbDbDbDbDbDbDbDbDbDbDbDbDbDbqajajajajajajajaaajaaajajajajajajajajajajajajajajajajajajajajajajajajajaaajajajaaajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaaajaaajajajajajajajajajajajajajajajajajajajajajajajajajaaafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafexexexeFeMeFeFeFeFeHePePeHeFeQeHeHeHeHeHeHexafafafafafafafafafafafafafafafafafafafafafaf aaajajajajajajajbpbDbDbDbDbDbDbDbDbDbDbDbDbDbqajajajajajajajaaajaaajajajajajajajajajajajajajajajajajajajajajajajajajaaajajajaaajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaaajaaajajajajajajajajajaaaaaaaaaaaaaaajajajajajajajajajaaafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafexeReSeFeFeFeFeFeFeHePePeHeFeQeHeHeHeHeHeHexafafafafafafafafafafafafafafafafafafafafafaf aaajajajajajajajbqbqbqbqbqbDbDbDbDbDbqbqbqbqbqajajajajajajajaaajaaajajajajajajajajajajajajajajajajajajajajajajajajajaaajajajaaajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaaajaaajajajajajajajajaaaaeTeTeTeTeTaaaaajajajajajajajajaaafafafafafafafafafafafafafafafafafafafafafafafafafafafafeUeVeVeVeVeVeUafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafexexexeWeXexexexeFeHePePeKeFexeHeHeHeHeHeHexafafafafafafafafafafafafafafafafafafafafafaf -aaajajajajajajajajajajajbqbqbqbqbqbqbqajajajajajajajajajajajaaajaaajajajajajajajajajajajajajajajajajajajajajajajajajaaajajajaaajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaaajaaajajajajajajajajaaeTeTeYeZfaeTeTaaajajajajajajajajaaafafafafafafafafafafafafafafafafafafafafafafafafafafafafeVfbfcfdfefbeUafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafexffeXeXeXeXfgexeFeHeHeHeKeFexeLeHeGeHeLeHexafafafafafafafafafafafafafafafafafafafafafaf -aaajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaaajaaajajajajajajajajajajajajajajajajajajajajajajajajajaaajajajaaajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaaajaaajajajajajajajaaaaeTfhfifafjfkeTaaaaajajajajajajajaaafafafafafafafafafafafafafafafafafafafafafafafafafafafafeVfbflflflfbeUeUeUeUafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafexffeXfmfneXfgexeFeFeFeFeFeFexeGeHeGeHeGeHexafafafafafafafafafafafafafafafafafafafafafaf +aaajajajajajajajajajajajbqbqbqbqbqbqbqajajajajajajajajajajajaaajaaajajajajajajajajajajajajajajajajajajajajajajajajajaaajajajaaajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaaajaaajajajajajajajajaaeTeTeZeYfaeTeTaaajajajajajajajajaaafafafafafafafafafafafafafafafafafafafafafafafafafafafafeVfbfcfdfefbeUafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafexffeXeXeXeXfgexeFeHeHeHeKeFexeLeHeGeHeLeHexafafafafafafafafafafafafafafafafafafafafafaf +aaajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaaajaaajajajajajajajajajajajajajajajajajajajajajajajajajaaajajajaaajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaaajaaajajajajajajajaaaaeTfhfifafkfjeTaaaaajajajajajajajaaafafafafafafafafafafafafafafafafafafafafafafafafafafafafeVfbflflflfbeUeUeUeUafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafexffeXfmfneXfgexeFeFeFeFeFeFexeGeHeGeHeGeHexafafafafafafafafafafafafafafafafafafafafafaf aaajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaaajaaajajajajajajajajfofofofofofofofofoajajajajajajajajaaajajajaaajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaaajaaajajajajajajajaaeTeTfpfqfreTfseTeTaaajajajajajajajaaafafafafafafafafafafafafafafafafafafafafafafafafafafafafeVfbftftftfbeUfufveUafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafexexexexexexexexexexeFeFexexexexexexexexexexafafafafafafafafafafafafafafafafafafafafafaf -aaajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaaajaaajajajajajajajfwfxfyfyfyfyfyfyfyfofwajajajajajajajaaajajajaaajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaaajaaajajajajajajajaafzfAfBfCfDfEfFfAfzaaajajajajajajajaaafafafafafafafafafafafafafafafafafafafafafafafafafafafafeVfbfGfHfIfbeUeUeUeUeUeUeUeUeUeUeUeUafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafexeFfJexafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf +aaajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaaajaaajajajajajajajfwfxfyfyfyfyfyfyfyfofwajajajajajajajaaajajajaaajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaaajaaajajajajajajajaafzfBfAfCfDfEfFfBfzaaajajajajajajajaaafafafafafafafafafafafafafafafafafafafafafafafafafafafafeVfbfGfHfIfbeUeUeUeUeUeUeUeUeUeUeUeUafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafexeFfJexafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf aaajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaaajaaajajajajajajajfwfyfyfyfyfyfyfyfyfyfwajajajajajajajaaajajajaaajajajajajajfwfwfwfwfwfwajfwfwfwajajajfwfwfwajfwfwfwfwfwfwajajajajajajajaaajaaajajajajajajajaafKfLfLfLfLfLfLfLfMaaajajajajajajajaaafafafafafafafafafafafafafafafafafafafafafafafafafafafafeVfbfGfHfIfbfNfOfPfQfRfSfOfTfUfVfVeUafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafexeFeFexafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabajaaajajajajajajajfwfyfyfyfyfyfyfyfyfyfwajajajajajajajaaajajajaaajajajajajajfwfWfwfwfWfwajfwfWfwfwfwfwfwfWfwajfwfWfwfwfWfwajajajajajajajaaajaaajajajajajajajaafzfXfYfYfLfYfYfZfzaaajajajajajajajaaafafafafafafafafafafafafafafafafafafafafafafafafafafafafeVfbfGfHfIfbgafOfSfSfRfSfOfSfVfVfVeUafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafexgbgbexafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf -aaajajajajajajajajajajajajajajajajajajajajajajajajajajaaafafafajaaajajajajajajajfwfyfyfyfyfyfyfyfyfyfwajajajajajajajaaajajajaaajajajajajajfwfWfWfWfWfwfwfwfWfWfWfWfWfWfWfwfwfwfWfWfWfWfwajajajajajajajaaajaaajajajajajajajaaeTgcgdgdfLgdgdgeeTaaajajajajajajajaaafafafafafafafafafafafafafafafafafafafafafafafafafafafafeVfbfHfHfHgfggghfSfSfRfSfOfTfUfVfVeUafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafgigjgjgiafafafafgkgkgkgkgkafafafafafafafafafafafafafafafafafafafafafaf +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabajaaajajajajajajajfwfyfyfyfyfyfyfyfyfyfwajajajajajajajaaajajajaaajajajajajajfwfWfwfwfWfwajfwfWfwfwfwfwfwfWfwajfwfWfwfwfWfwajajajajajajajaaajaaajajajajajajajaafzfYfXfXfLfXfXfZfzaaajajajajajajajaaafafafafafafafafafafafafafafafafafafafafafafafafafafafafeVfbfGfHfIfbgafOfSfSfRfSfOfSfVfVfVeUafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafexgbgbexafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf +aaajajajajajajajajajajajajajajajajajajajajajajajajajajaaafafafajaaajajajajajajajfwfyfyfyfyfyfyfyfyfyfwajajajajajajajaaajajajaaajajajajajajfwfWfWfWfWfwfwfwfWfWfWfWfWfWfWfwfwfwfWfWfWfWfwajajajajajajajaaajaaajajajajajajajaaeTgdgcgcfLgcgcgeeTaaajajajajajajajaaafafafafafafafafafafafafafafafafafafafafafafafafafafafafeVfbfHfHfHgfggghfSfSfRfSfOfTfUfVfVeUafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafgigjgjgiafafafafgkgkgkgkgkafafafafafafafafafafafafafafafafafafafafafaf aaajajajajajajajbqfxfxfobqajbqfxfxfobqajajajajajajajajaaafafafajaaajajajajajajajfwfyfyfyfyfyfyfyfyfyfwajajajajajajajaaajajajaaajajajajajajfwfWfWfWfWfwfwfWfWfWfWfWfWfWfWfWfwfwfWfWfWfWfwajajajajajajajaaajaaajajajajajajajaaglgmgmgmfLgmgmgmglaaajajajajajajajaaafafafafafafafafafafafafafafafafafafafafafafafafafafafafeVfbfHfHfHgfggghfSfSfSfSgnfSfVfVfVeUafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafgkgkgkgkgkgkgogpgqgkafafafafafgkgkgrgsgkgkafafgkgkgkgkgtguafafafafafafafafafafafafafafafafafafafafafaf aaajajajajajajajbqgvgvgvbqajbqgwgwgwbqajajajajajajajajaaafafafajaaajajajajajajajfwfyfyfyfyfyfyfyfyfyfwajajajajajajajaaajajajaaajajajajajajfwfWfWfWfWfwfwfWfWfWfWfWfWfWfWfWfwfwfWfWfWfWfwajajajajajajajaaajaaajajajajajajajaaglgxgxgxgygzgxgxglaaajajajajajajajaaafafafafafafafafafafafafafafafafafafafafafafafafafafafafeVfbgAfHgBfbgafOfSfSfRfSfOfTfUfVfVeUafafafafafafafafafafafafafafafafafafafafafafafafafafafafafgkgigCgDgkgEgFgGgHgIgkgkafafafgkgkgigjgjgigkgogqgigJgKgkgtgLafafafafafafafafafafafafafafafafafafafafafaf aaajajajajajajajbqgvgvgvbqajbqgwgwgwbqajajajajajajajajaaafafafajaaajajajajajajajfwfofyfyfyfyfyfyfyfofwajajajajajajajaaajajajaaajajajajajajfwfWfWfWfWfWfWfWfWfWfWfWfWfWfWfWfWfWfWfWfWfWfwajajajajajajajaaajaaajajajajajajajaaglgMgMgMfLgMgMgMglaaajajajajajajajaaafafafafafafafafafafafafafafafafafafafafafafafafafafafafeVfbgNgOgNfbfNfOfSfSfRfSfOfSfVfVfVeUafafafafafafafafafafafafafafafafafafafafafafafafafafafafafgPgQgRgRgSgRgRgTgUgVgkgkgogpgqgkgkgWgRgRgXgkgYgZhagRhbgkgtgLafafafafafafafafafafafafafafafafafafafafafaf -aaajajajajajajajbqgvgvgvbqajbqgwgwgwbqajajajajajajajajaaafafafajaaajajajajajajajfofofyfyfyfyfyfyfyfofwajajajajajajajaaajajajaaajajajajajajfwfWfWfWfWfWfWfWfWfWfWfWfWfWfWfWfWfWfWfWfWfWfwajajajajajajajaaajaaajajajajajajajaaeTgcgdgdfLgdgdgeeTaaajajajajajajajaaafafafafafafafafafafafafafafafafafafafafafafafafafafafafeVhcfbhdfbhcfNfOfSfSfRfSfOfTfUfVfVeUafafafafafafafafafafafafafafafafafafafafafafafafafafafafafhehfhghhgkgRgRhihjhkgkhlhmhnhohphqhrhshsgRhtgRgRgRgRhugkgthvafafafafafafafafafafafafafafafafafafafafafaf -aaajajajajajajajbqgvgvgvbqajbqgwgwgwbqajajajajajajajajaaafafafajaaajajajajfofofofofyfyfyfyfyfyfyfyfyfofofwfoajajajajaaajajajaaajajajajajajfwfWfWfWfWfWfWfWfWfWfWfWfWfWfWfWfWfWfWfWfWfWfwajajajajajajajaaajaaajajajajajajajaafzhwhxhxfLhxhxhyfzaaajajajajajajajaaafafafafafafafafafafafafafafafafafafafafafafafafafafafafeUeUeUeUeUeUeUeUeUeUeUeUeUeUeUeUeUeUafafafafafafafafafafafafafafafafafafafafafafafafafafafafafgkgkgkgkgkgkhzgRgRhAgkhBhChDhEhFhGhHhshsgRhtgRhIhJgRgRgkgkgkafafafafafafafafafafafafafafafafafafafafafaf +aaajajajajajajajbqgvgvgvbqajbqgwgwgwbqajajajajajajajajaaafafafajaaajajajajajajajfofofyfyfyfyfyfyfyfofwajajajajajajajaaajajajaaajajajajajajfwfWfWfWfWfWfWfWfWfWfWfWfWfWfWfWfWfWfWfWfWfWfwajajajajajajajaaajaaajajajajajajajaaeTgdgcgcfLgcgcgeeTaaajajajajajajajaaafafafafafafafafafafafafafafafafafafafafafafafafafafafafeVhcfbhdfbhcfNfOfSfSfRfSfOfTfUfVfVeUafafafafafafafafafafafafafafafafafafafafafafafafafafafafafhehfhghhgkgRgRhihjhkgkhlhmhnhohphqhrhshsgRhtgRgRgRgRhugkgthvafafafafafafafafafafafafafafafafafafafafafaf +aaajajajajajajajbqgvgvgvbqajbqgwgwgwbqajajajajajajajajaaafafafajaaajajajajfofofofofyfyfyfyfyfyfyfyfyfofofwfoajajajajaaajajajaaajajajajajajfwfWfWfWfWfWfWfWfWfWfWfWfWfWfWfWfWfWfWfWfWfWfwajajajajajajajaaajaaajajajajajajajaafzhxhwhwfLhwhwhyfzaaajajajajajajajaaafafafafafafafafafafafafafafafafafafafafafafafafafafafafeUeUeUeUeUeUeUeUeUeUeUeUeUeUeUeUeUeUafafafafafafafafafafafafafafafafafafafafafafafafafafafafafgkgkgkgkgkgkhzgRgRhAgkhBhChDhEhFhGhHhshsgRhtgRhIhJgRgRgkgkgkafafafafafafafafafafafafafafafafafafafafafaf aaajajajajajajajbqgvgvgvbqajbqgwgwgwbqajajajajajajajajaaafafafajaaajajajajfwfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfoajajajajaaajajajaaajajajajajajfwfWfWfWfWfWfWfWfWfWfWfWfWfWfWfWfWfWfWfWfWfWfwajajajajajajajaaajaaajajajajajajajaafKfLfLfLfLfLfLfLfMaaajajajajajajajaaafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafgkgkgkhKgRgkgihLhMhNhOhPhQhHhsgRhzgigkgkgihRhSgkgkafafafafafafafafafafafafafafafafafafafafafafaf -aaajajajajajajajbqbqbqbqbqajbqbqbqbqbqajajajajajajajajaaafafafajaaajajajajfwfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfoajajajajaaajajajaaajajajajajajfwfWfWfWfWfWfWfWfWfWfWfWfWfWfWfWfWfWfWfWfWfWfwajajajajajajajaaajaaajajajajajajajaafzhTgdfLfLfLgdhUfzaaajajajajajajajaaafafafafafafafafafafafafafafafafhVhVhVhVhVhVhVhVhVhVhVhVhVhVhVhVhVhVhVhVhVhVhVhVhVhVhVhVhVhVafafafafafafafafafafafafafafafafafafafafafafafafgkhWhXgkgkgkgkgkgkgkgkhYgRgRgRgRhZgRgRgRgRgkgkiagRgigkibibgkgkgkgkafafafafafafafafafafafafafafafafafafafafafafafaf +aaajajajajajajajbqbqbqbqbqajbqbqbqbqbqajajajajajajajajaaafafafajaaajajajajfwfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfoajajajajaaajajajaaajajajajajajfwfWfWfWfWfWfWfWfWfWfWfWfWfWfWfWfWfWfWfWfWfWfwajajajajajajajaaajaaajajajajajajajaafzhTgcfLfLfLgchUfzaaajajajajajajajaaafafafafafafafafafafafafafafafafhVhVhVhVhVhVhVhVhVhVhVhVhVhVhVhVhVhVhVhVhVhVhVhVhVhVhVhVhVhVafafafafafafafafafafafafafafafafafafafafafafafafgkhWhXgkgkgkgkgkgkgkgkhYgRgRgRgRhZgRgRgRgRgkgkiagRgigkibibgkgkgkgkafafafafafafafafafafafafafafafafafafafafafafafaf aaajajajajajajajajajajajajajajajajajajajajajajajajajajaaafafafajaaajajajajfwfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfoajajajajaaajajajaaajajajajajfwfwfWfWfWfWfWfWfWfWfWfWfWfWfWfWfWfWfWfWfWfWfWfwfwajajajajajajaaajaaajajajajajajajaaeTicidgziegxifigeTaaajajajajajajajaaafafafafafafafafafafafafafafafafhVihihihihihihihihihiiihihihijikihihihijihihihihihihijihihhVafafafafafafafafafafafafafafafafafafafafafafafgkgkilimgkingkioipiqgigkirgRhshshshshshshshshsgRhsgRisithshsgRgkgtguafafafafafafafafafafafafafafafafafafafafafafafaf aaajajajajajajajajajajajajajajajajajajajajajajajajajajaaafafafajaaajajajajfxfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfoajajajajaaajajajaaajajajajajfwfWfWfWfWfWfWfWfWfWfWfWfWfWfWfWfWfWfWfWfWfWfWfWfwajajajajajajaaajaaajajajajajajajaaaaiueTiviviveTiuaaaaajajajajajajajaaafafafafafafafafafafafafafafafafhVihihihihiiihihihihihihihihihihihijihihihihihijihihihihihhVafafafafafafafafafafafafafafafafafafafafafafafiwixhsiygkizgigkiAgkiBgkiChshsiDiEiFiGiHiIiJhshshshsiKiLhshsgRgkgtgLafafafafafafafafafafafafafafafafafafafafafafafaf aaajajajajajajajajajajajajajajajajajajajajajajajajajajaaafafafajaaajajajajfofyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfoajajajajaaajajajaaajajajajajfwfWfWfWfWfWfWfWfWfWfWfWfWfWfWfWfWfWfWfWfWfWfWfWfwajajajajajajaaajaaajajajajajajajajaaabeTiuiuiueTaaaaajajajajajajajajaaafafafafafafafafafafafafafafafafhVihihihihihihihiMihihihihihiiihihikijihihijihihijikihijihhVafafafafafafafafafafafafafafafafafafafafafafafiNiOiPhsiQgRgRgRgRiRgRgRgRhshsiSiTiUiViWiXiYhshshshsiZhshshsgRgkgtgLafafafafafafafafafafafafafafafafafafafafafafafaf @@ -2469,12 +2469,12 @@ ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaaaaaaaaaaaaaaaa ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaajafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafhVihjyjyjyjyjyjyjyjKjKjKjyjyjyjyjyjyjykekTlolplphVafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaflslslslslslslslsafafhVihjyltltltltltjyjKjKjKjyjKjKjKjKjKjyluhVlolplphVafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaflslvlvlvlslvlvlsafafhVihjyltltltltltltjKjKjKjKjKjKjKjKjKjyluhVhVhVhVhVafafafafafafafafaflwlxlylxlzafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf -afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaflslvlAlvlBlvlvlsafafhVihjyltltltltltltjKjKjKjKjKjKjKjKjKjyjLihhVafafafafafafafafafafafaflxlClDlElxafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf -afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaflslFlFlFlslvlvlsafafhVihjyltltltltltjyltltltjyjKjyjKjyjyjylGihhVafafafafafafafafafafafaflHlIlJlIlHafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf -afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaflKlKlKlKlslslslslslslvlvlsafafhVihjyltltltjyjyjyltltltjyjyjyjKjKjKjyjLihhVafafafafafafafafafafafaflLlIlIlIlLafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf -afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaflKlKlKlKlBlvlBlvlvlvlvlvlsafafhVihjyltltltjyihjylMlMlMjyihjyjKjKjKjyjLihhVafafafafafafafafafafafaflLlIlIlIlLafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf -afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaflKlKlKlKlslslslslvlvlvlNlsafafhVihjylMlMlMjyihjylOlPlQjyihjylMlMlMjyjLihhVafafafafafafafafafafafaflRlIlIlIlRafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf -afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaflslFlvlvlNlsafafhVihjylOlPlQjyihihihihihihihjylOlPlQjyihihhVafafafafafafafafafafafaflxlSlTlUlxafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf +afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaflslvlAlvlBlvlvlsafafhVihjyltltltltltltjKjKjKjKjKjKjKjKjKjyjLihhVafafafafafafafafafafafaflxlDlClElxafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf +afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaflslFlFlFlslvlvlsafafhVihjyltltltltltjyltltltjyjKjyjKjyjyjylGihhVafafafafafafafafafafafaflHlJlIlJlHafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf +afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaflKlKlKlKlslslslslslslvlvlsafafhVihjyltltltjyjyjyltltltjyjyjyjKjKjKjyjLihhVafafafafafafafafafafafaflLlJlJlJlLafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf +afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaflKlKlKlKlBlvlBlvlvlvlvlvlsafafhVihjyltltltjyihjylMlMlMjyihjyjKjKjKjyjLihhVafafafafafafafafafafafaflLlJlJlJlLafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf +afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaflKlKlKlKlslslslslvlvlvlNlsafafhVihjylMlMlMjyihjylOlPlQjyihjylMlMlMjyjLihhVafafafafafafafafafafafaflRlJlJlJlRafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf +afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaflslFlvlvlNlsafafhVihjylOlPlQjyihihihihihihihjylOlPlQjyihihhVafafafafafafafafafafafaflxlTlSlUlxafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf lVlVlVlVlVlVlVlVlVlVlVlVlVlVlVafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaflslFlvlvlNlsafafhVihihihihihihihihihihihihihihihihihihihihhVafafafafafafafafafafafaflxlWlWlWlxafafafafafafafafafafafaflXlYlYlYlYlYlYlYlYlYlYlYlYlYlYlYlYlYlYlYlYlYlYlYlYlYlYlYlYlYlYlYlYlYlYlYlYlYlYlYlYlYlYlYlYlYlYlYlYlYlYlYlYlYlYlYlYlYlYlY lVlVlVlVlVlVlVlVlVlVlVlVlVlVlVafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaflslslslslslsafafhVhVhVhVhVhVhVhVhVhVhVhVhVhVhVhVhVhVhVhVhVhVafafafafafafafafafafafaflwlZmamblwafafafafafafafafafafafaflYafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf lVlVlVlVlVlVlVlVlVlVlVlVlVlVlVafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaflYafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf @@ -2498,12 +2498,12 @@ afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafnwmTmTmTmToGmTmTmTmTmToGoHmTmTmTmTozmimioImimioImimimimimimimimioJmimioJmimimimioCoKmImIoFmimimimimimimimimQmQomomommQmdoLnCmdoMmdoNmdafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaflYafafafafafafafmcmcafafafafafafafafmcmcmcafafafafafafafafafafafafafafhVhVorororhVhVmcmcmcmcmcmcmcmcmcmcmcmcmcmcmcmcmcmc afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafnfnfnfnfnfnfnfnfnfnfmdngoOmTmToPmdmDmDmdoQoQmdmDmDmdmDmDmDmDmDoRoSoSmdmdmimimioCoToUoVoFmimioWmwmimimimimdoXnOnOnOoYmdoLnCmdoZmdoZmdafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaflYafafafafafafmcmcmcmcmcafafafafafafmcmcafafafafafafafafafafafafafafafafhVpaorpbhVmcmcmcmcmcmcmcmcmcmcmcmcmcmcmcmcmcmcmc afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafnwmTmTmTmTpcmTmTmTmTmTpcpdmTmTmTpemdpfmimimimimipgphmdpipjpkplpmpnmimipomDppmimimimimimimimimipqmdmimimimimdmdmdmdmdmdmdmdmdmdmdmdmdmdafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaflYafafafafafafmcmcmcmcmcmcafafafafafafafafafafafafafafafafafafafprpspspthVhVpuhVhVhVhVhVhVhVmcmcmchVhVhVhVhVhVmcmcmcmcmc -afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafnfnfnfnfnfnfnfnfnfnfmdmTmTmTmTpvmdpwmimimimimimipxmdmimimimipymimimipzmDpApBpCpDmimimipCpBpAppmdmimimimimDpEpFpFpGpHpImdpJnCpKmdafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaflYafafafafafafmcmcmcmcmcmcafafafafafafafafafafpLpMpNpNpNpOpLafafpPpQpRpSpQpQpQpThVpUpVpWpXhVmcmcmchVpYfVpZqahVmcmcmcmcmc +afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafnfnfnfnfnfnfnfnfnfnfmdmTmTmTmTpvmdpwmimimimimimipxmdmimimimipymimimipzmDpApBpCpDmimimipCpBpAppmdmimimimimDpEpFpFpGpHpImdpJnCpKmdafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaflYafafafafafafmcmcmcmcmcmcafafafafafafafafafafpLpMpNpNpNpOpLafafpPpQpSpRpQpQpQpThVpUpVpWpXhVmcmcmchVpYfVpZqahVmcmcmcmcmc afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafmdmTqbqcqdqemdqfmimiqgqhmimiqimdmimimimimimimimimdmdmdmDmDmdqjqjmdmdmdmdmdmdmimimimimDqkqkqkqkqkqkmdqlnCqmmdafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaflYafafafafafafafmcmcmcmcmcafafafafafafafafafpLpLqnqoqpqqqrpLpLafpPpQqsqspQpQpQpQqtquququqvhVmcmcmchVhVhVhVhVhVmcmcmcmcmc -afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafmdmdmdmdmdmdmdqwmimiqxqymimiqzmdmimiqAqBqCmimiqDmdqEqFqFqFqFqGqGqFqFqFqFafmdmimimimimdqkqHqIqIqIqImdmdqJmdmdafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaflYafafafafafafafafmcmcmcmcafafafafafafafafafpLqKqLqLqMqLqLqqpLafpPqNqOqPqQpQpQpQhVquququqRhVmcmcmchVqSfVfVqThVmcmcmcmcmc -afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafmdmimimiqUqVmimimimdmimiqWqXqYmimiqZmdrarbrcrdrerfrfrfrgrhriqFmdmimimimirjqkrkrkrkrkrkqkqkqkqImdafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaflYafafafafafafafafafmcmcafafafafafafafafafafpLrlqLqLqLqLrmrnpLafpPpQroropQpQpQrphVrqrrrsrthVmcmcmchVrufVfVrvhVmcmcmcmcmc -afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafmdmimimimimimimimimdmimimimimimimirwmdrarxryrfrfrfrfrfrfrfrzrAmdmimimimirjqkqkqkrBqkqkqkqkqkqImdafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaflYafafafafafafafafafafafafafafafafafafafafafpLrCqLqLrDqLqLrEpLafpPpQpQpQpQpQpQrFhVhVhVhVhVhVmcmcmchVrGfVfVrHhVmcmcmcmcmc -afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafmdmimimimimimimimimdmimimimimimimimimdrarxrIrJrKrKrKrKrKrLriqFmdmimimimimdqkqkrMrMqkqkrNqkqkqImdafafafafafafafafafafafafafafafafafafafafafafafafrOrPrPrPrPrPrPrPrPrPrPrPrPrPrPrPrPrPrPrPrPrPrPrOafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaflYafafafafafafafafafafafafafafafafafafafafafpLrQrRpLpLpLpLpLpLafrSpspsrThVqaqaqahVldldrUrVhVmcmcmchVrWfVfVrXhVmcmcmcmcmc +afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafmdmdmdmdmdmdmdqwmimiqxqymimiqzmdmimiqAqBqCmimiqDmdqEqFqFqFqFqGqGqFqFqFqFafmdmimimimimdqkqHqIqIqIqImdmdqJmdmdafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaflYafafafafafafafafmcmcmcmcafafafafafafafafafpLqKqLqLqMqLqLqqpLafpPqNqPqOqQpQpQpQhVquququqRhVmcmcmchVqSfVfVqThVmcmcmcmcmc +afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafmdmimimiqUqVmimimimdmimiqWqXqYmimiqZmdrarbrdrcrfrerererhrgriqFmdmimimimirjqkrkrkrkrkrkqkqkqkqImdafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaflYafafafafafafafafafmcmcafafafafafafafafafafpLrlqLqLqLqLrmrnpLafpPpQroropQpQpQrphVrqrrrsrthVmcmcmchVrufVfVrvhVmcmcmcmcmc +afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafmdmimimimimimimimimdmimimimimimimirwmdrarxryrerererererererzrAmdmimimimirjqkqkqkrBqkqkqkqkqkqImdafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaflYafafafafafafafafafafafafafafafafafafafafafpLrCqLqLrDqLqLrEpLafpPpQpQpQpQpQpQrFhVhVhVhVhVhVmcmcmchVrGfVfVrHhVmcmcmcmcmc +afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafmdmimimimimimimimimdmimimimimimimimimdrarxrJrIrKrKrKrKrKrLriqFmdmimimimimdqkqkrMrMqkqkrNqkqkqImdafafafafafafafafafafafafafafafafafafafafafafafafrOrPrPrPrPrPrPrPrPrPrPrPrPrPrPrPrPrPrPrPrPrPrPrOafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaflYafafafafafafafafafafafafafafafafafafafafafpLrQrRpLpLpLpLpLpLafrSpspsrThVqaqaqahVldldrUrVhVmcmcmchVrWfVfVrXhVmcmcmcmcmc afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafmdmimirYrZsasbscsdmdsesfsgshsisjskslmdsmqFqFqFqFqFqFqFqFqFqFafmdmimimimimdsnqksospqkqksqqkqksrmdafafafafafafafafafafafafafafafafafafafafafafafafrOssssssssssssssssssssssssssssssssssssssssssssrOafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaflYafafafafafafafafafafafafafafafafafafafafafafpLstsusvswsxpLafafafafafafsyqaqaqaszlelesAsAhVmcmcmchVrWfVfVsBhVmcmcmcmcmc afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafmdsCsDrYrZsasbscsdmdmdmdmdmdmdmdmdmdmdsEsEsEsEsEsEsEsEsEsEsEsEmdmdsFsFmdmdmdmdmdmdmdmdmdmdmdmdmdafafafafafafafafafafafafafafafafafafafafafafafafrOssssssssssssssssssssssssssssssssssssssssssssrOafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaflYafafafafafafafafafafafafafafafafafafafafafafpLsGsHrmqLsIpLafafafafafafsJqaqaqahVsKlehVhVhVhVhVhVhVsLsMsMsLhVhVhVhVmcmc afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafmdmdmdmdmdmdmdmdmdmdafafafafafafafafafafafafafafafafafafafafafmdmdsNsNmdmdafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafrOsssssssssssOsOsOsOsOsPsPsOsOsOsOsOssssssssssrOrOrOrOrOrOrOafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaflYafafafafafafafafafafafafafafafafafafafafafpLpLsQsurmqLsRpLpLafafnEnvsShVqaqaqahVhVhVhVsTsUsVsWsXsYfVfVfVfVsZsZtahVhVmc @@ -2544,27 +2544,27 @@ afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafvEvYBYvYvYvXvEvE afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafvDvDvYCavYvYvYvYvEvEvEvEvDvDvDvDvDvEvEvEvEvYvYvYCaBPCivYvYvYvEvEvEvEvDvDvDvDvDvEvEvEvEvYvYvYvYBPvYztxzxzzwwLAbxzCjwLAbzwwLCkxzxzBSyGyGClClClClyGCmCmyGClClClClyGyGAQAQAQAQCnCoCpCpCpCqCrAQAQAQAQAxAxAxAxAxAxAxAQAQAQAxAxAxAxAxrOvHvHCsAWAWAWAyBIAWAWAYCtCfBVBVBVBVBVBVBVBVBVBVBVBVCgCtBXBXBXBXBXBXBXBXBXAyafafafafafafafafafafafafafafaflYafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafmcmcmcmcmcafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafvDvYvYvYvYvYvYvYCuxwCvCuxwCwCxCyxwCvCuxwCvvYvYvYvYvYvYvYvYvYCuxwCvCuxwCwCxCyxwCvCuxwCvvYvYvYvYvYvYwLCzxzAqxbAbCACBxbAEAqwLCCBrBrCDwLCECFCGCFCGBcAQAQBcCFCHCFCFCIAxAQAQAQCJCKCLCLCLCLCLCMCNAQAQAQAxCFCGCFCECGBcAQAQAQBcCGCFCFCOrOvHvHAyCPAWCQAYBIAWAWAyBJBJCRCRCRCRCSBVBVCTCRCRCRCSBJBJChChChChChChChChChAyafafafafafafafafafafafafafafaflYafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafvDvYvYvYvYvYvYvYCuxwCvCuxwCwCUCyxwCvCuxwCvvYvYvYvYvYvYvYvYvYCuxwCvCuxwCwCUCyxwCvCuxwCvvYvYvYvYvYvYwLwLztztxbCVCWxbxbztztwLwLwLwLwLwLBcBcBcBcBcBcAQAQBcBcBcBcBcBcAxAQAQCXCYCLCLCLCLCLCLCLCZCrAQAQAxBcBcBcBcBcBcAQAQAQBcBcBcBcBcAxDaDaAyAWDbDcAYBIAWAWAyAyBJBJBKBJBKBJBLBLBJBKBJBKBJBJBMBMBMBMBMBMBMBMBMBMAyafafafafafafafafafafafafafafaflYafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf -afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafvDDdDevDvYvYvYvYDfDgDhDfDgDiDjDkDgDhDfDgDhvYvYvDDlDdDevDvYvYDfDgDhDfDgDiDjDkDgDhDfDgDhvYvYvYvYvYvYvYvYvYvYAQAQAQAQDmAQAQDmAQAQAQCcAxCcAQAQAQAQAQAQAQAQAQAQAQAQCcAxAQAQDnCLCLCLDoDpDqCLCLCLDnAQAQAxCdAQAQAQAQAQAQAQAQAQAQAQAQCdAxAQAQAYDrDsAYAyAWAWAWBDAyAyAyAYAYAYAyDtDtAyAYAYAYAyAyAyAyAYAYAYAyAyAYAYAYAyafafafafafafafafafafafafafafaflYafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf -afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafvDDuxwDvvYvYvYvYvYvYvYvYvYvYvYvYvYvYvYvYvYvYvYDwDxDuxwDyvYvYvYvYvYvYvYvYvYvYvYvYvYvYvYvYvYvYvYvYvYvYvYvYvYAQAQAQAQDmAQAQDmAQAQAQAQDzAQAQAQAQAQAQAQAQAQAQAQAQAQAQDzAQAQDACLCLDoDBDBDBDqCLCLDCAQAQDzAQAQAQAQAQAQAQAQAQAQAQAQAQAQAQAQAQDDAWAWAWDEAWAWAWAWAWAWAWAWAWAWAWAWAWAWAWAWAWAYafafafafafafafafafafafafafafafafafafafafafafafafafafafDFlYlYlYlYlYlYlYlYlYlYlYlYlYlYlYlYlYlYlYlYlYBhlYlYlYlYlYlYlYlYlYlYlYlYlYlYlYlYlYlYlYlYlYlYlYlYlYlYlYlYlYlYlYlYlYlYlYlYlY +afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafvDDdDevDvYvYvYvYDfDgDhDfDgDiDjDkDgDhDfDgDhvYvYvDDlDdDevDvYvYDfDgDhDfDgDiDjDkDgDhDfDgDhvYvYvYvYvYvYvYvYvYvYAQAQAQAQDmAQAQDmAQAQAQCcAxCcAQAQAQAQAQAQAQAQAQAQAQAQCcAxAQAQDnCLCLCLDoDqDpCLCLCLDnAQAQAxCdAQAQAQAQAQAQAQAQAQAQAQAQCdAxAQAQAYDrDsAYAyAWAWAWBDAyAyAyAYAYAYAyDtDtAyAYAYAYAyAyAyAyAYAYAYAyAyAYAYAYAyafafafafafafafafafafafafafafaflYafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf +afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafvDDuxwDvvYvYvYvYvYvYvYvYvYvYvYvYvYvYvYvYvYvYvYDwDxDuxwDyvYvYvYvYvYvYvYvYvYvYvYvYvYvYvYvYvYvYvYvYvYvYvYvYvYAQAQAQAQDmAQAQDmAQAQAQAQDzAQAQAQAQAQAQAQAQAQAQAQAQAQAQDzAQAQDACLCLDoDBDBDBDpCLCLDCAQAQDzAQAQAQAQAQAQAQAQAQAQAQAQAQAQAQAQAQDDAWAWAWDEAWAWAWAWAWAWAWAWAWAWAWAWAWAWAWAWAWAYafafafafafafafafafafafafafafafafafafafafafafafafafafafDFlYlYlYlYlYlYlYlYlYlYlYlYlYlYlYlYlYlYlYlYlYBhlYlYlYlYlYlYlYlYlYlYlYlYlYlYlYlYlYlYlYlYlYlYlYlYlYlYlYlYlYlYlYlYlYlYlYlYlY afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafvDxwxwDGvYvYvYvYvYvYvYvYvYvYDHvYvYvYvYvYvYvYvYDIDJvExwDGvYvYvYvYvYvYvYvYDHvYvYvYvYvYvYvYvYvYvYvYvYvYvYvYvYBcAQAQAQAxAQAQAxAQAQAQAQDzAQAQAQAQAQAQAQAQAQAQAQAQAQAQDzAQAQDACLCLDKDBDLDBDMCLCLDCAQAQDzAQAQAQAQAQAQAQAQAQAQAQAQAQAQAQAQAQAYAWAWAWAYAWAWAWAWAWAWAWAWAWAWAWAWAWAWAWAWAWAYafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafvDDNxwDOvYvYvYvYvYvYvYvYvYvYvYvYvYvYvYvYvYvYvYDPxwDNxwDOvYvYvYvYvYvYvYvYvYvYvYvYvYvYvYvYvYvYvYvYvYvYvYvYvYAQAQAQAQDmAQAQDmAQAQAQAQDzAQAQAQAQAQAQAQAQAQAQAQAQAQAQDzAQAQDACLCLDQDBDBDBDRCLCLDCAQAQDzAQAQAQAQAQAQAQAQAQAQAQAQAQAQAQAQAQDDAWAWAWDEAWAWAWAWAWAWAWAWAWAWAWAWAWAWAWAWAWAYafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf -afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafvDDSDTvDvYvYvYvYDUDVDWDUDVDXDYDZDVDWDUDVDWvYvYvDEaDSEbvDvYvYDUDVDWDUDVDXDYDZDVDWDUDVDWvYvYvYvYvYvYvYvYvYvYAQAQAQAQDmAQAQDmAQAQAQCcAxCcAQAQAQAQAQAQAQAQAQAQAQAQCcAxAQAQEcCLCLCLDQEdEeCLCLCLEfAQAQAxCdAQAQAQAQAQAQAQAQAQAQAQAQCdAyEgEgAyAyAyAyAyAWAWAWBDAyAyAyAYAYAYAyBEBEAyAYAYAYAyAyAyAyAYAYAYAyAyAYAYAYAyafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf +afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafvDDSDTvDvYvYvYvYDUDVDWDUDVDXDYDZDVDWDUDVDWvYvYvDEaDSEbvDvYvYDUDVDWDUDVDXDYDZDVDWDUDVDWvYvYvYvYvYvYvYvYvYvYAQAQAQAQDmAQAQDmAQAQAQCcAxCcAQAQAQAQAQAQAQAQAQAQAQAQCcAxAQAQEcCLCLCLDQEeEdCLCLCLEfAQAQAxCdAQAQAQAQAQAQAQAQAQAQAQAQCdAyEgEgAyAyAyAyAyAWAWAWBDAyAyAyAYAYAYAyBEBEAyAYAYAYAyAyAyAyAYAYAYAyAyAYAYAYAyafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafvDvYvYvYvYvYvYvYCuxwCvCuxwCwCUCyxwCvCuxwCvvYvYvYvYvYvYvYvYvYCuxwCvCuxwCwCUCyxwCvCuxwCvvYvYvYvYvYvYEhEhEiEiEhEjEjEjEhEiEiEhEhEjEjEhEhBcBcBcBcBcBcAQAQBcBcBcBcBcBcAxAQAQEkElCLCLCLCLCLCLCLEmEnAQAQAxBcBcBcBcBcBcAQAQBcBcBcBcBcBcAyEoEoEpEqErEsAYBIAWAWAyAyBJBJBKBJBKBJBLBLBJBKBJBKBJBJBMBMBMBMBMBMBMBMBMBMAyafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafvDvYvYvYvYvYvYvYCuxwCvCuxwCwCxCyxwCvCuxwCvvYvYvYvYvYvYvYvYvYCuxwCvCuxwCwCxCyxwCvCuxwCvvYvYvYvYvYvYEhEtEuEuEvEwExExEyEuEzEhEAEBECEDEhCHCECFCGCGBcAQAQBcCOEECGCFCFAxAQAQAQEFEGCLCLCLCLCLEmCKAQAQAQAxEHCFCECFCGBcAQAQBcCFCGCFEIEEAyEoEoEoEoEoEoAYBIAWAWAyBJBJBTBTBTBTBUBVBVBWBTBTBTBUBJBJBXBXBXBXBXBXBXBXBXAyafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafvDvDvYEJEJvYvYvYvEvEvEvEvDvDvDvDvDvEvEvEvEvYvYvYBYBPCivYvYvYvEvEvEvEvDvDvDvDvDvEvEvEvEvYvYvYBOBPvYEiEuEuEuEuEuEuEuEuEuEKEhELEuEMENEhEOEPEPEPEPEOEQEQEOEPEPEPEPEOEOAQAQAQAQEkCoERERERCqEnAQAQAQAQESESESESESESESETETESESESESESESAyEoEoEoEoEoEoAyBIAWAWAYCeCfBVBVBVBVBVBVBVBVBVBVBVBVCgCeChChChChChChChChChAyafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf -afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafvEvYBPEJvYvXvEvEafafafafafafafafafafafvEvEvXvYCaBPBQvYvXvEvEafafEUEVEVEVEVEVEUafafvEvEvXvYBYBPBQEiEuEuEWEXEuEuEWEXEuEKEhEYEuEuEZEhFaFbFbFbFbFbFbFbFbFbFbFbFbFaEOAxCcAQAQAQAQAQAQAQAQAQAQAQCcAxESFcFdFdFdFdFeFeFeFeFdFdFdFdFcAyEoEoFfFgEoFfAYBIAWAWAYCtCfBVBVBVBVBVBVBVBVBVBVBVBVCgCtBXBXBXBXBXBXBXBXBXAyafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf -afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafvEvYvYCivYvEvEmKafafafafafafafafafafafmKvEvEvYCaBPvYvYvEvEmKafEUFhFiFjFkFlFmFhEUafmKvEvEvYvYBPvYEhFnEuEWEXEuEuEWEXEuEKEhFoEuEMENEhFbFbFbFbFbFbFbFbFbFbFbFbFbFbEOAxAxAQAQAQAQAQAQAQAQAQAQAQAxAxESFeFeFeFeFeFeFeFeFeFeFeFeFeFeAyEoEoFfFgEoFfAYBIAWAWAyBJBJCRCRCRCRCSBVBVCTCRCRCRCSBJBJChChChChChChChChChAyafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf -afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafvEBFBFBFvEvEafmKafafafafafafafafafafafmKafvEvEBFBFBFvEvEafmKEUEUFpFqFrFqFrFqFsEUEUmKafvEvEBFBFBFEhFtEuEWEXEuEuEWEXEuEKEhFuFvFwFxEhFbFbFyFzFAFBFbFbFyFCFDFBFbFbEOafAxAxAxAxAxAQAxAQAxAxAxAxAxafESFeFEFEFEFEFeFeFeFeFEFEFEFEFeAyEoEoFfFgEoFfAyBIAWAWAyAyBJBJBKBJBKBJBLBLBJBKBJBKBJBJBMBMBMBMBMBMBMBMBMBMAyafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf -afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafvDvYvYvYvDafafmKafafafafafafafafafafafmKafafvDvYvYvYvDafafmKEVFrFrFrFFFGFHFrFrFrEVmKafafvDvYvYvYEhFtEuEuEuEuEuEuEuEuEKEhEhELFIFJEhFbFbFyFKFLFBFbFbFyFMFNFBFbFbEOafafAxFOFPAQAQCLAQAQFPFQAxafafESFeFeFeFeFeFeFeFeFeFeFeFeFeFeAyEoEoFfFgEoFfAYAWAWAWBDAyAyAyAYAYAYAyDtDtAyAYAYAYAyAyAyAyAYAYAYAyAyAYAYAYAyafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf -afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafvDvYvYvYvDafafmKafafafafafafafafafafafmKafafvDvYvYvYvDafafmKEUFRFSFTEUFUEUFVFWFXEUmKafafvDvYvYvYEhFtEuEuEzFYFYFYFYFYFZEhGaEyEvGbEhFbFbFbFbFbFbFbFbFbFbFbFbFbFbEOafafAxFOFPAQAQCLAQAQFPFQAxafafESFcFdFdFdFdFeFeFeFeFdFdFdFdFcAyEoEoFfFgEoFfAYAWAWAWAWAWAWAWAWAWAWAWAWAWAWAWAWAWAYafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf -afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafvDvYvYvYvDafafmKafafafafafafafafafafafmKafafvDvYvYvYvDafafmKEUGcEVEUEUEUEUEUEVGcEUmKafafvDvYvYvYEhEjGdEuEhGeGfGgGhGfGiEhFtEuEuGjEhFbFbFyGkGlFBFbFbFyGmGnFBFbFbEOafafAxGoAQAQAQCLAQAQAQGpAxafafESESESESESESESETETESESESESESESAyEoEoFfFgEoFfAyAWAWAWAWAWAWAWAWAWAWAWAWAWAWAWAWAWAYafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf -afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafvEvYvYvYvEmKmKmKafafafafafafafafafafafmKmKmKvEvYvYvYvEmKmKmKEUFrFWEUGqGrGsEUFSFrEUmKmKmKvEvYvYvYEhFtEuEuGtEyGuEuEuGuEvGvEyEuEuGwEhFbFbFyGxGyFBFbFbFyGzGAFBFbFbEOafafAxFOFPAQAQCLAQAQFPFQAxafafESGBGCGCGCGCGBGBGBGBGDGEGEGEGFAyEoEoFfFgEoFfAyAyAWAWAWAWAWAWGGGGGGAWAWAWAWGGGGGGAYafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf -afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafvEvYvYvYvEafafafafafafafafafafafafafafafafafvEvYvYvYvEafafafEVFrFWEVGHGIGJEVFSFrEVafafafvEvYvYvYEhFtEuEuEuEuEuEuEuEuEuEuEuEuEuGKEhFbFbFbFbFbFbFbFbFbFbFbFbFbFbEOafafAxFOFPAQAQCLAQAQFPFQAxafafESGBGBGBGBGBGBGBGBGBGBGBGBGBGBAyEoEoEoEoEoEoAyAyAyAYAYAYAyAYAYAYAyAYAYAYAyAYAYAYAyafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf -afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafvEvYvYvYvEafafafafafafafafafafafafafafafafafvEvYvYvYvEafafEUFhFRFWEVGHGLGJEVFSFXFhEUafafvEvYvYvYEhFtEuEuEuEuEuEuEuEuEuEuEuEuEuGwEhFbFbFbFbFbFbGMGMGMGMGMGMGMGMEOafafGNGNGNGOGOGPGOGOGNGNGNafafESGQESGRESGSESGBGBESGTESGUESGVAyEoEoEoEoEoEoAYafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf -afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafvDvYvYvYvDvDvDafafafafafafafafafafafafafvDvDvDvYvYvYvDvDvDFhGWFrFWFhEVGXEVFhFSFrGWFhvDvDvDvYvYvYEhFtEuEzFYFYFYFnEzFYFYFnEuEuEuGKEhGYGZGZFbFbHaHbHbHbHcHbHbHbHbEOafafGNHdHeGOHeHeHeGOHeHdGNafafESHfESHfESHfESGBGBESHfESHfESHfAyEoEoHgHgHgHgAYafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf -afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafvDvYvYvYxvxwxxafafafafafafafafafafafafafxxxwxvvYvYvYHhxwHhHiFrFrFrHjHkFrFrHjFrFrFrHiHhxwHhvYvYvYEhEjEuEKEjEjEjFtEKHlFJFtEzHmHnHoEhHpHqHrFbFbHaHsHtHtHtHtHtHtHtEOafafGNHeHuHvHeHeHeHvHwHeGNafafESESESESESESESGBGBESESESESESESAyEoEoHxHxHxHxAYafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf -afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafvDvYvYvYxvxwxxafafafafafafafafafafafafafxxxwxvvYvYvYHhxwHhHiFrFrFrFrFrFrFrFrFrFrFrHiHhxwHhvYvYvYEhHyEuEvHzHAHBEyEvHCEhHDHEEhEhEhEhHFHGHHFbFbHaHtHtHtHtHtHtHtHtEOafafGNGOHeGOHeHeHeGOHeGOGNafafESHIGBHIGBHIGDGBGBHJHIGBHIGBHIAyEoEoEoEoEoEoAYafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf -afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafvDvYvYvYvDvDvDafafafafafafafafafafafafafvDvDvDvYvYvYvDvDvDFhHKFrFWEVFSFrFWEVFSFrHLFhvDvDvDvYvYvYEhHyEuEuEuEuEuEuEuHMEhHDHNHOHOHPEhHQHRHSFbFbHtHtHtHTHUHVHWHtHtEOafafGNHeHeHeHeHeHeHeHeHeGNafafESGBGBGBGBGBGBGBGBGBGBGBGBGBGBAyHXEoEoEoEoAYAYafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf +afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafvEvYBPEJvYvXvEvEafafafafafafafafafafafvEvEvXvYCaBPBQvYvXvEvEafafEUEVEVEVEVEVEUafafvEvEvXvYBYBPBQEiEuEuEWEXEuEuEWEXEuEKEhEYEuEuEZEhFbFaFaFaFaFaFaFaFaFaFaFaFaFbEOAxCcAQAQAQAQAQAQAQAQAQAQAQCcAxESFcFdFdFdFdFeFeFeFeFdFdFdFdFcAyEoEoFfFgEoFfAYBIAWAWAYCtCfBVBVBVBVBVBVBVBVBVBVBVBVCgCtBXBXBXBXBXBXBXBXBXAyafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf +afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafvEvYvYCivYvEvEmKafafafafafafafafafafafmKvEvEvYCaBPvYvYvEvEmKafEUFhFiFjFkFlFmFhEUafmKvEvEvYvYBPvYEhFnEuEWEXEuEuEWEXEuEKEhFoEuEMENEhFaFaFaFaFaFaFaFaFaFaFaFaFaFaEOAxAxAQAQAQAQAQAQAQAQAQAQAQAxAxESFeFeFeFeFeFeFeFeFeFeFeFeFeFeAyEoEoFfFgEoFfAYBIAWAWAyBJBJCRCRCRCRCSBVBVCTCRCRCRCSBJBJChChChChChChChChChAyafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf +afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafvEBFBFBFvEvEafmKafafafafafafafafafafafmKafvEvEBFBFBFvEvEafmKEUEUFpFqFrFqFrFqFsEUEUmKafvEvEBFBFBFEhFtEuEWEXEuEuEWEXEuEKEhFuFvFwFxEhFaFaFzFyFBFAFaFaFzFCFDFAFaFaEOafAxAxAxAxAxAQAxAQAxAxAxAxAxafESFeFEFEFEFEFeFeFeFeFEFEFEFEFeAyEoEoFfFgEoFfAyBIAWAWAyAyBJBJBKBJBKBJBLBLBJBKBJBKBJBJBMBMBMBMBMBMBMBMBMBMAyafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf +afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafvDvYvYvYvDafafmKafafafafafafafafafafafmKafafvDvYvYvYvDafafmKEVFrFrFrFFFGFHFrFrFrEVmKafafvDvYvYvYEhFtEuEuEuEuEuEuEuEuEKEhEhELFIFJEhFaFaFzFKFLFAFaFaFzFMFNFAFaFaEOafafAxFOFPAQAQCLAQAQFPFQAxafafESFeFeFeFeFeFeFeFeFeFeFeFeFeFeAyEoEoFfFgEoFfAYAWAWAWBDAyAyAyAYAYAYAyDtDtAyAYAYAYAyAyAyAyAYAYAYAyAyAYAYAYAyafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf +afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafvDvYvYvYvDafafmKafafafafafafafafafafafmKafafvDvYvYvYvDafafmKEUFRFSFTEUFUEUFVFWFXEUmKafafvDvYvYvYEhFtEuEuEzFYFYFYFYFYFZEhGaEyEvGbEhFaFaFaFaFaFaFaFaFaFaFaFaFaFaEOafafAxFOFPAQAQCLAQAQFPFQAxafafESFcFdFdFdFdFeFeFeFeFdFdFdFdFcAyEoEoFfFgEoFfAYAWAWAWAWAWAWAWAWAWAWAWAWAWAWAWAWAWAYafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf +afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafvDvYvYvYvDafafmKafafafafafafafafafafafmKafafvDvYvYvYvDafafmKEUGcEVEUEUEUEUEUEVGcEUmKafafvDvYvYvYEhEjGdEuEhGeGfGgGhGfGiEhFtEuEuGjEhFaFaFzGkGlFAFaFaFzGmGnFAFaFaEOafafAxGoAQAQAQCLAQAQAQGpAxafafESESESESESESESETETESESESESESESAyEoEoFfFgEoFfAyAWAWAWAWAWAWAWAWAWAWAWAWAWAWAWAWAWAYafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf +afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafvEvYvYvYvEmKmKmKafafafafafafafafafafafmKmKmKvEvYvYvYvEmKmKmKEUFrFWEUGqGrGsEUFSFrEUmKmKmKvEvYvYvYEhFtEuEuGtEyGuEuEuGuEvGvEyEuEuGwEhFaFaFzGxGyFAFaFaFzGzGAFAFaFaEOafafAxFOFPAQAQCLAQAQFPFQAxafafESGBGCGCGCGCGBGBGBGBGDGEGEGEGFAyEoEoFfFgEoFfAyAyAWAWAWAWAWAWGGGGGGAWAWAWAWGGGGGGAYafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf +afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafvEvYvYvYvEafafafafafafafafafafafafafafafafafvEvYvYvYvEafafafEVFrFWEVGHGIGJEVFSFrEVafafafvEvYvYvYEhFtEuEuEuEuEuEuEuEuEuEuEuEuEuGKEhFaFaFaFaFaFaFaFaFaFaFaFaFaFaEOafafAxFOFPAQAQCLAQAQFPFQAxafafESGBGBGBGBGBGBGBGBGBGBGBGBGBGBAyEoEoEoEoEoEoAyAyAyAYAYAYAyAYAYAYAyAYAYAYAyAYAYAYAyafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf +afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafvEvYvYvYvEafafafafafafafafafafafafafafafafafvEvYvYvYvEafafEUFhFRFWEVGHGLGJEVFSFXFhEUafafvEvYvYvYEhFtEuEuEuEuEuEuEuEuEuEuEuEuEuGwEhFaFaFaFaFaFaGMGMGMGMGMGMGMGMEOafafGNGNGNGOGOGPGOGOGNGNGNafafESGQESGRESGSESGBGBESGTESGUESGVAyEoEoEoEoEoEoAYafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf +afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafvDvYvYvYvDvDvDafafafafafafafafafafafafafvDvDvDvYvYvYvDvDvDFhGWFrFWFhEVGXEVFhFSFrGWFhvDvDvDvYvYvYEhFtEuEzFYFYFYFnEzFYFYFnEuEuEuGKEhGZGYGYFaFaHaHbHbHbHcHbHbHbHbEOafafGNHdHeGOHeHeHeGOHeHdGNafafESHfESHfESHfESGBGBESHfESHfESHfAyEoEoHgHgHgHgAYafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf +afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafvDvYvYvYxvxwxxafafafafafafafafafafafafafxxxwxvvYvYvYHhxwHhHiFrFrFrHjHkFrFrHjFrFrFrHiHhxwHhvYvYvYEhEjEuEKEjEjEjFtEKHlFJFtEzHmHnHoEhHpHqHrFaFaHaHsHtHtHtHtHtHtHtEOafafGNHeHuHvHeHeHeHvHwHeGNafafESESESESESESESGBGBESESESESESESAyEoEoHxHxHxHxAYafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf +afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafvDvYvYvYxvxwxxafafafafafafafafafafafafafxxxwxvvYvYvYHhxwHhHiFrFrFrFrFrFrFrFrFrFrFrHiHhxwHhvYvYvYEhHyEuEvHzHAHBEyEvHCEhHDHEEhEhEhEhHFHGHHFaFaHaHtHtHtHtHtHtHtHtEOafafGNGOHeGOHeHeHeGOHeGOGNafafESHIGBHIGBHIGDGBGBHJHIGBHIGBHIAyEoEoEoEoEoEoAYafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf +afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafvDvYvYvYvDvDvDafafafafafafafafafafafafafvDvDvDvYvYvYvDvDvDFhHKFrFWEVFSFrFWEVFSFrHLFhvDvDvDvYvYvYEhHyEuEuEuEuEuEuEuHMEhHDHNHOHOHPEhHQHRHSFaFaHtHtHtHTHUHVHWHtHtEOafafGNHeHeHeHeHeHeHeHeHeGNafafESGBGBGBGBGBGBGBGBGBGBGBGBGBGBAyHXEoEoEoEoAYAYafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafvEvYvYvYvEafafafafafafafafafafafafafafafafafvEvYvYvYvEafafEVFSFrFWEVFSFrFWEVFSFrFWEVafafvEvYvYvYEhHyEuEuEuHYHZEuEuIaEhHDEuIbIcIdEhEOEOEOEOEOEOEOEOEOEOEOEOEOEOEOGNGNGNHeHeHeHeHeHeHeHeHeGNGNGNESIeGBIeGBIeGDGBGBHJIeGBIeGBIeAyAYAYAYAYAYAYafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafvEvYvYvYvEmKmKmKmKmKmKmKmKmKmKmKmKmKmKmKmKmKvEvYvYIfvEafafEVFSFrFWEVFSFGFWEVFSFrFWEVafafvEvYvYvYEhIgEuEuEuEuEuEuEuIhEhHDEuEuIiIdEhIjIkIkIkIlGNHeHeHeHeHeHeHeHeHeHeHeGNGNImGNGNHeGNGNImGNGNHeHeGNGNGNESESESESESESESESESESESESESafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafvEvYvYvYvEafafafafafafafafafafafafafafafafafvEvYvYvYvEafafEVFSFrFWEVFSFrFWEVFSFrFWEVafafvEvYvYvYEhInEuEuEuIoIpEuEuIqEhIrIsEuItIuEhIvEuEuEuIwGNHeGNGNGNGNIxGNGNGNHeHeHeHeHeHeGNHeGNHeHeHeHeHeHeHeHeGNafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf @@ -2573,7 +2573,7 @@ afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafvDvYvYvYxvxwxxaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafvDvYvYvYxvxwxxafafafafafafafafafafafafafxxxwxvvYvYvYHhxwHhHiFrFrISFrFrFrFrFrISFrFrHiHhxwHhvYvYvYEhEhITEhHlEhEhIUEuIVEhHDEuEuEuEuIWEuEuIXEuIYGNHeGNIZIDIDIDIDJaGNIQJbJbJbJbJbIQIQIQJbJbJbJbJcJdGNHeGNGNGNGNGNGNGNafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafvDvYvYvYvDvDvDafafafafafafafafafafafafafvDvDvDvYvYvYvDvDvDFhEVJeFhEVEVJfEVEVFhJeEVFhvDvDvDvYvYvYEhJgEuJhJiJjEhJkEuJlEhJmJnJoJpJqEhJrJsJsJsJtGNHeGNIZJuJvJvIDIDJwIQIQJxJyJxIQIQIQIQIQJxJyJxJzIQGNHeHeHeHeHeHeHeGNafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafvEvYvYvYvEafafafmKmKmKmKmKmKmKmKmKmKmKafafafvEvYvYvYvEafafEUJAJBEUJCJDJEJFJGEUJHJIEUafafvEvFvFvFEhJgEuJJJKJLEhJMEuJNEhEhEhEhEhEhEhEhEhEhEhGNGNHeGNGNGNGNGNGNGNGNIQJbJbJbJbJbIQIQIQJbJbJbJbJOIQGNGNGNGNGNGNGNHeGNGNGNafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf -afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafvEvYvYvYvEmKmKmKmKafafafafafafafafafmKmKmKmKvEvYvYvYvEmKmKEUJPJPEUJQJRJEJEJSEUJPJPEUmKmKvEvYvYvYEhEhJTEhEjEjEhEhIHEhEhJUJVJWEjJXJYHzJZJZKaGNHeHeGNGNKbKbKbKbKbGNKcKcKcKcKcKcKcKcKcKcKcKcKcKdKcGNKeKeKeKeKeGNHeHeHeGNafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf +afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafvEvYvYvYvEmKmKmKmKafafafafafafafafafmKmKmKmKvEvYvYvYvEmKmKEUJPJPEUJRJQJEJEJSEUJPJPEUmKmKvEvYvYvYEhEhJTEhEjEjEhEhIHEhEhJUJVJWEjJXJYHzJZJZKaGNHeHeGNGNKbKbKbKbKbGNKcKcKcKcKcKcKcKcKcKcKcKcKcKdKcGNKeKeKeKeKeGNHeHeHeGNafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafwrvDvDvDwrafafafafafafafafafafafafafafafafafwrvDvDvDwrafafEUKfKgEUKhJEKiKjKkEUKlKmEUafafwrvYvYvYEhKnEuJhKoKpEhFtEuEvHzEyEuEvEjEyEuEuEuEuEKGNHeGNGNGNKqKqKqKqKqGNKrKsKsKsKsKsKsKsKsKsKsKsKsKtKrGNKqKqKqKqKqGNGNGNHeGNafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafvDvVvWvVvDafafafafafafafafafafafafafafafafafvDvVvVvVvDafafEUKuKuEUKvKwJEKxKyEUKuKuEUafafvDvYvYvYEhKzEuEuEuKAEhFtEuEuEzFYEuEuKBEuEuEuEuEuEKGNHeGNKCKDKEKEKEKEKEKFKsKsKsKsKsKsKsKsKsKsKsKsKsKtKsKFKGKGKGKGKGKDKHGNHeGNafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafvDvDvDvDvDafafafafafafafafafafafafafafafafafvDvDvDvDvDafafEUKIKIEUEUKuKuKuEUEUKIKIEUafafvDvYvYvYEhKJEuEuIXKKEhKLEuEuEKKMEuKNEjFnEuEMEuEuEKGNHeGNKCKDKEKOKEKOKEKFKsKsKsKsKsKsKsKsKsKsKsKsKsKtKsKFKGKPKGKPKGKDKHGNHeGNafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf @@ -2603,26 +2603,26 @@ afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafMhMhMhMhNkMhMhMhNlMhMhMhNmMhMhMhMhMhMhMhNnMhMhMhMhMhMhNoMOMOMOMONpMOMOMOMOMOMNMhMOMSMSMOMhMXMYMHMHNqNqNrNsNsNtMhMhMhMhMhafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafahLXNuNuNuNuNuNuNuNuNuNuNuNuNuNuNuNuNuNuNuLXah afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafNvMNMOMOMOMOMOMONwMOMOMONxMOMOMOMOMOMOMONyMOMONzNANBMhMOMSMSMSMSMSMSMSMSMSMSMOMhMOMSMSMOMlNCNCNDNDNCNCNCMhMhMhMhNENFNGNCafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafahNHNINININININININININININININININININININHah afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafNvMOMSMSMSMSMSMSMSMSMSMSMSMSMSMSMSMSMSMSMSMSMSMSMSMONJMOMSNKNKNKNKNKNKNKNKMSMONJMOMSMSMONJMOMOMOMOMOMOMOMOMOMONCNLNMNNNCafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafahNONPNPNPNPNPNPNPNPNPNPNPNPNPNPNPNPNPNPNPNOah -afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafNvMOMSMSMSMSMSMSMSMSMSMSMSMSMSMSMSMSMSMSMSMSMSMSMSMSNQMSMSNRNRNRNRNRNRNRNRMSMSNQMSMSMSMSNQMSMSMSMSMSMSMSMSMSMONSNTNFNUNCafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafahNONPNPNPNPNPNPNPNPNPNPNPNPNPNPNPNPNPNPNPNOah -afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafNvMOMSMSMSMSMSMSMSMSMSMSMSMSMSMSMSMSMSMSMSMSMSMSMSMONJMOMSNVNVNVNVNVNVNVNVMSNTNDMOMSMSMONJMOMOMOMOMOMOMOMOMOMONCNWNMNXNCafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafahNONPNPNPNPNPNPNPNPNPNPNPNPNPNPNPNPNPNPNPNOah -lYlYlYlYlYlYlYlYlYlYlYlYlYlYlYlYlYlYlYlYlYlYlYlYlYlYlYlYlYlYlYlYlYlYlYlYlYlYlYlYafafafafafafafafafafNvMNMOMOMOMOMOMONYMOMOMONZMOMOMOOaMOMOMOObMOMOMOMOMNMhMOMSMSMSMSMSMSMSMSMSMSNTMhMOMSMSMOMlNCNCOcNCNCMhNCNCNQNQMhOdNFOeNCafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafahNONPNPNPNPNPNPNPNPNPNPNPNPNPNPNPNPNPNPNPNOah -ahahahahahahahahahahahOfOfOfOfOfOfOfOfOfOfOfOfOfOfOfOfOfOfOfOfOfahahahahahahahlYafafafafafafafafafafMhMhMhMhNkMhMhMhOgMhMhMhOhMhMhMhOiMhMhMhOjMhMhMhOkMhMhMOMOMOMOMOOlMOMOMOMOMOMNMhMOMSMSMOMhOmOnOoOpOqMhOrMSMSMSMhMhMhMhMhafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafahNONPNPNPNPNPNPNPNPNPNPNPNPNPNPNPNPNPNPNPNOah -ahmcmcmcmcmcmcmcmcmcmcOsOsOsOsOsOfOtOuOvOfOsOsOsOsOsOsOsOsOsOsOsmcmcahmcmcmcmclYafafafafafafafafafafafMzMAMnMnMnMhOwOwOwOxOyOyOyOxOzOzOzOxOAOAOAMhMSMSMSMhMhMhMhMhMhOBOBMhMhMhMhMhMhMOMSMSMOMhOCOoOoOoOCMhODMSMSMSMSOEMhafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafahNONPNPNPNPNPNPNPNPNPNPNPNPNPNPNPNPNPNPNPNOah -ahmcmcmcmcmcmcmcmcmcmcOsOsOsOsOsOfOFOuOuOfOsOsOsOsOsOsOsOsOsOsOsmcmcahmcmcmcmclYafafafafafafafafafafafMMMAMnMnMnMhOwOwOwOxOyOyOyOxOzOzOzOxOAOAOAMhMSMSMSMhOGOGOGOGOGOGOGOGOGOGOGMnMhMOMSMSMOMhOHOIOoOoOoMhOrMSMSOrMSOrMhafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafahNONPNPNPNPNPNPNPNPNPNPNPNPNPNPNPNPNPNPNPNOah +afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafNvMOMSMSMSMSMSMSMSMSMSMSMSMSMSMSMSMSMSMSMSMSMSMSMSMSNQMSMSNRNRNRNRNRNRNRNRMSMSNQMSMSMSMSNQMSMSMSMSMSMSMSMSMSMONTNSNFNUNCafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafahNONPNPNPNPNPNPNPNPNPNPNPNPNPNPNPNPNPNPNPNOah +afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafNvMOMSMSMSMSMSMSMSMSMSMSMSMSMSMSMSMSMSMSMSMSMSMSMSMONJMOMSNVNVNVNVNVNVNVNVMSNSNDMOMSMSMONJMOMOMOMOMOMOMOMOMOMONCNWNMNXNCafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafahNONPNPNPNPNPNPNPNPNPNPNPNPNPNPNPNPNPNPNPNOah +lYlYlYlYlYlYlYlYlYlYlYlYlYlYlYlYlYlYlYlYlYlYlYlYlYlYlYlYlYlYlYlYlYlYlYlYlYlYlYlYafafafafafafafafafafNvMNMOMOMOMOMOMONYMOMOMONZMOMOMOOaMOMOMOObMOMOMOMOMNMhMOMSMSMSMSMSMSMSMSMSMSNSMhMOMSMSMOMlNCNCOcNCNCMhNCNCNQNQMhOdNFOeNCafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafahNONPNPNPNPNPNPNPNPNPNPNPNPNPNPNPNPNPNPNPNOah +ahahahahahahahahahahahOfOfOfOfOfOfOfOfOfOfOfOfOfOfOfOfOfOfOfOfOfahahahahahahahlYafafafafafafafafafafMhMhMhMhNkMhMhMhOgMhMhMhOhMhMhMhOiMhMhMhOjMhMhMhOkMhMhMOMOMOMOMOOlMOMOMOMOMOMNMhMOMSMSMOMhOnOmOpOoOqMhOrMSMSMSMhMhMhMhMhafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafahNONPNPNPNPNPNPNPNPNPNPNPNPNPNPNPNPNPNPNPNOah +ahmcmcmcmcmcmcmcmcmcmcOsOsOsOsOsOfOtOuOvOfOsOsOsOsOsOsOsOsOsOsOsmcmcahmcmcmcmclYafafafafafafafafafafafMzMAMnMnMnMhOwOwOwOxOyOyOyOxOzOzOzOxOAOAOAMhMSMSMSMhMhMhMhMhMhOBOBMhMhMhMhMhMhMOMSMSMOMhOCOpOpOpOCMhODMSMSMSMSOEMhafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafahNONPNPNPNPNPNPNPNPNPNPNPNPNPNPNPNPNPNPNPNOah +ahmcmcmcmcmcmcmcmcmcmcOsOsOsOsOsOfOFOuOuOfOsOsOsOsOsOsOsOsOsOsOsmcmcahmcmcmcmclYafafafafafafafafafafafMMMAMnMnMnMhOwOwOwOxOyOyOyOxOzOzOzOxOAOAOAMhMSMSMSMhOGOGOGOGOGOGOGOGOGOGOGMnMhMOMSMSMOMhOIOHOpOpOpMhOrMSMSOrMSOrMhafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafahNONPNPNPNPNPNPNPNPNPNPNPNPNPNPNPNPNPNPNPNOah ahmcmcmcmcmcmcOsOsOsOfOfOfOfOsOfOfOfOfOJOfOfOfOfOfOfOfOsOsOsOsOsmcmcahmcmcmcmclYafafafafafafafafafafafMMMAMnMnMnMhOwOwOwOxOyOyOyOxOzOzOzOxOAOAOAMhMSMSMSMhOGOGOGOGOGOGOGOGOGOGOGOGMhOKNKNKOKMhNCNCOLNCNCMhODMSOrMhMhMhMhafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafahNONPNPNPNPNPNPNPNPNPNPNPNPNPNPNPNPNPNPNPNOah -ahmcmcmcOsOsOsOsOMOuOuOuOuOuOuOuOuOuOuOuOuOuOuOuOuOuOfOsOsOsOsOsmcmcahmcmcmcmclYafafafafafafafafafafafMMMAMnMnMnMhOwOwOwOxOyOyOyOxOzOzOzOxOAOAOAMhMSMSMSMhOGOGOGOGOGOGOGOGOGOGOGOGMhONONONONMhOOOoOoOoOOMhOrMSODMhafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafahNONPNPNPNPNPNPNPNPNPNPNPNPNPNPNPNPNPNPNPNOah -ahmcmcmcOsOsOuOMOMOMOuOuOuOuOuOuOuOuOuOuOuOuOuOuOuOuOfOPOQOsOsOsmcmcahmcmcmcmclYafafafafafafafafafafafNgMAMnOROSMhOwOwOwOxOyOyOyOxOzOzOzOxOAOAOAMhOTOUOVMhOGOGOGOGOGOGOGOGOGOGOGOGMhMhOWOXMhMhOoOoOoOoOoMhODMSOrMhafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafahNONPNPNPNPNPNPNPNPNPNPNPNPNPNPNPNPNPNPNPNOah -ahmcmcmcOsOsOMOMOMOsOsOsOfOfOfOfOJOfOfOfOfOJOfOuOuOuOJOYOZOsOsOsmcmcahmcmcmcmclYafafafafafafafafafafafMhMhMhMhMhMlMiMiMiMlMiMiMiMlMiMiMiMlMiMiMiMlMhMhMhMhOGOGOGOGOGOGOGOGOGOGOGMnMhafafafafMhOOOoOOOoOOMhOrMSMhMhafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafahNONPNPNPNPNPNPNPNPNPNPNPNPNPNPNPNPNPNPNPNOah +ahmcmcmcOsOsOsOsOMOuOuOuOuOuOuOuOuOuOuOuOuOuOuOuOuOuOfOsOsOsOsOsmcmcahmcmcmcmclYafafafafafafafafafafafMMMAMnMnMnMhOwOwOwOxOyOyOyOxOzOzOzOxOAOAOAMhMSMSMSMhOGOGOGOGOGOGOGOGOGOGOGOGMhONONONONMhOOOpOpOpOOMhOrMSODMhafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafahNONPNPNPNPNPNPNPNPNPNPNPNPNPNPNPNPNPNPNPNOah +ahmcmcmcOsOsOuOMOMOMOuOuOuOuOuOuOuOuOuOuOuOuOuOuOuOuOfOPOQOsOsOsmcmcahmcmcmcmclYafafafafafafafafafafafNgMAMnOROSMhOwOwOwOxOyOyOyOxOzOzOzOxOAOAOAMhOTOUOVMhOGOGOGOGOGOGOGOGOGOGOGOGMhMhOWOXMhMhOpOpOpOpOpMhODMSOrMhafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafahNONPNPNPNPNPNPNPNPNPNPNPNPNPNPNPNPNPNPNPNOah +ahmcmcmcOsOsOMOMOMOsOsOsOfOfOfOfOJOfOfOfOfOJOfOuOuOuOJOYOZOsOsOsmcmcahmcmcmcmclYafafafafafafafafafafafMhMhMhMhMhMlMiMiMiMlMiMiMiMlMiMiMiMlMiMiMiMlMhMhMhMhOGOGOGOGOGOGOGOGOGOGOGMnMhafafafafMhOOOpOOOpOOMhOrMSMhMhafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafahNONPNPNPNPNPNPNPNPNPNPNPNPNPNPNPNPNPNPNPNOah ahmcmcmcOsOMOMOsOsOsOsOsOsOsOsOfOuOuOFOfPaOuOfOuOuOuOJOYPbOsOsOfmcmcahmcmcmcmclYafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafMhMiMiMiMiMiMiMiMiMiMiMiMiMhafafafafMhMhMhMhMhMhMhMhMhMhafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafahNONPNPNPNPNPNPNPNPNPNPNPNPNPNPNPNPNPNPNPNOah ahmcmcmcOsOMOsOsOsmcmcOsOfOfOfOfPcOuOtOfPcOtOfOuOuOuOfOYOYOYPdOfmcmcahmcmcmcaflYafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafahNONPNPNPNPNPNPNPNPNPNPNPNPNPNPNPNPNPNPNPNOah ahmcmcmcOsOMOMOsmcmcmcOsPePfPfOfOfOfOfOfOfOfOfOuOuOuOfOYOYOYPgOfmcmcahmcmcmcaflYafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafahNONPNPNPNPNPNPNPNPNPNPNPNPNPNPNPNPNPNPNPNOah ahmcOsOMOMOMOMOsOsmcmcOsPhPiPhOJOuOuOuOuOuOuOuOuOuOuOfPjPkPlOfOfmcmcahmcmcmcaflYafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafahNONONONONONONONONONONONONONONONONONONONONOah ahmcPmOMOMOMOMOMOsmcmcOfPnPhPhOJOuOuOuOuOuOuOuOuOuOuOfOsOsOsOsOsmcmcahmcmcmcaflYafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafahahahahahahahahahahahahahahahahahahahahahahah -ahmcPoPpPqOMPrOMOMmcmcOfPnPsOfOfOfOfOfOfOfOfOfOfOJOfOfOfOfOfOfOfOfOfOfmcmcafaflYafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf -ahmcPtOMPqOMPqOMOMmcmcOsOsOsOfOuOuOuOuOuOuOfPuPvPvPvPwOfOuOuOuOuOuOuOfmcafafaflYafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf -ahmcOsOMPqOMPxOMOMmcmcafafmcOfOuOtOuOuOuOuOfPvPvPyPvPvOfOuOuOuOuOtOuOfmcafafaflYafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf +ahmcPoPqPpOMPrOMOMmcmcOfPnPsOfOfOfOfOfOfOfOfOfOfOJOfOfOfOfOfOfOfOfOfOfmcmcafaflYafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf +ahmcPtOMPpOMPpOMOMmcmcOsOsOsOfOuOuOuOuOuOuOfPuPvPvPvPwOfOuOuOuOuOuOuOfmcafafaflYafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf +ahmcOsOMPpOMPxOMOMmcmcafafmcOfOuOtOuOuOuOuOfPvPvPyPvPvOfOuOuOuOuOtOuOfmcafafaflYafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf ahmcOsPzOMOMOMPAOMmcmcafafmcOfOuOuOuOuOuOuOJPvPvPBPvPvOJOuOuOuOuOuOuOfmcafafaflYafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf -ahmcOsOsOMOMOMOMOsmcmcmJafafOfOuOuOfPCPDPEOfPvPFPGPvPHOfPCPDPEOfOuOuOfafafafaflYafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafPIPIPIPIPIPIPIPIPIPIPIPIPIPIPIPIPIPIPIPIPIPIPIPIPIPIPIPIPIafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf +ahmcOsOsOMOMOMOMOsmcmcmJafafOfOuOuOfPCPDPEOfPvPGPFPvPHOfPCPDPEOfOuOuOfafafafaflYafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafPIPIPIPIPIPIPIPIPIPIPIPIPIPIPIPIPIPIPIPIPIPIPIPIPIPIPIPIPIafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf ahmcOsOsOsOsPJPKOsmcmKmJafafOfOuOuOfafafafOfOfPCPDPEOfOfafafafOfOuOuOfafafafaflYafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafPIafafafafafafafafafafafafafafafafafafafafafafafafafafafPIafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf ahmcOsOsOsOsOsOsmcafafafafafPLPMPMPNafafafafafafafafafafafafafPLPMPMPNafafafaflYafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafPIafafafafafafafafafafafafafafafafafafafafafafafafafafafPIafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf ahmcmcmcmcmcmcmcmcmcafafafafPLPOPPPNafafafafafafafafafafafafafPLPOPPPNafafafaflYafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafPIafafafafafafafafafafPQPQPQPRPQPQPQafafafafafafafafafafPIafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf diff --git a/maps/northern_star/polaris-5.dmm b/maps/northern_star/polaris-5.dmm index 184ffbd6c1..40c415c0a5 100644 --- a/maps/northern_star/polaris-5.dmm +++ b/maps/northern_star/polaris-5.dmm @@ -284,7 +284,7 @@ "fx" = (/obj/machinery/atmospherics/pipe/simple/visible/purple{dir = 6},/obj/machinery/light,/turf/simulated/floor/plating,/area/outpost/research/toxins_misc_lab) "fy" = (/obj/machinery/atmospherics/pipe/manifold/visible/purple{dir = 4},/obj/item/device/radio/intercom{name = "Station Intercom (General)"; pixel_y = -21},/turf/simulated/floor/plating,/area/outpost/research/toxins_misc_lab) "fz" = (/obj/machinery/atmospherics/pipe/simple/hidden/purple,/turf/simulated/wall/r_wall,/area/outpost/research/toxins_misc_lab) -"fA" = (/mob/living/simple_animal/slime,/turf/simulated/floor/reinforced,/area/outpost/research/xenobiology) +"fA" = (/mob/living/simple_mob/slime/xenobio,/turf/simulated/floor/reinforced,/area/outpost/research/xenobiology) "fB" = (/obj/structure/disposalpipe/segment,/obj/machinery/light/small{dir = 4},/turf/simulated/floor/reinforced,/area/outpost/research/xenobiology) "fC" = (/obj/machinery/portable_atmospherics/canister,/turf/simulated/floor/plating,/area/outpost/research/hallway/toxins_hallway) "fD" = (/obj/structure/closet/emcloset,/obj/effect/floor_decal/industrial/warning{icon_state = "warning"; dir = 9},/obj/item/device/radio/intercom{dir = 8; name = "Station Intercom (General)"; pixel_x = -21},/turf/simulated/floor/tiled/white,/area/outpost/research/hallway/toxins_hallway) @@ -1912,7 +1912,7 @@ "KN" = (/obj/structure/lattice,/obj/structure/grille{density = 0; icon_state = "brokengrille"},/turf/space,/area/space) "KO" = (/obj/structure/lattice,/obj/structure/grille,/turf/space,/area/space) "KP" = (/obj/machinery/power/tracker,/obj/structure/cable/yellow,/turf/simulated/floor/airless{icon_state = "asteroidplating2"},/area/outpost/engineering/solarsoutside/aft) - + (1,1,1) = {" aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa diff --git a/maps/plane/plane-1.dmm b/maps/plane/plane-1.dmm index 8017636b44..5fb3912356 100644 --- a/maps/plane/plane-1.dmm +++ b/maps/plane/plane-1.dmm @@ -1,71 +1,71 @@ -"a" = (/turf/unsimulated/wall/planetary/sif,/area/plane_ground) -"b" = (/turf/simulated/floor/outdoors/dirt,/area/plane_ground) -"c" = (/obj/effect/landmark/start,/turf/simulated/floor/outdoors/dirt,/area/plane_ground) -"d" = (/obj/effect/landmark{name = "JoinLate"},/turf/simulated/floor/outdoors/dirt,/area/plane_ground) - -(1,1,1) = {" -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -abbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbba -abbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbba -abbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbba -abbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbba -abbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbba -abbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbba -abbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbba -abbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbba -abbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbba -abbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbba -abbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbba -abbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbba -abbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbba -abbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbba -abbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbba -abbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbba -abbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbba -abbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbba -abbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbba -abbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbba -abbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbba -abbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbba -abbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbba -abbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbba -abbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbba -abbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbba -abbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbba -abbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbba -abbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbba -abbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbba -abbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbba -abbbbbbbbbbbbbbbbbbbbbbbbbbbbbbcbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbba -abbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbba -abbbbbbbbbbbbbbbbbbbbbbbbbbbbbdddbbbbbbbbbbbbbbbbbbbbbbbbbbbbbba -abbbbbbbbbbbbbbbbbbbbbbbbbbbbbdddbbbbbbbbbbbbbbbbbbbbbbbbbbbbbba -abbbbbbbbbbbbbbbbbbbbbbbbbbbbbdddbbbbbbbbbbbbbbbbbbbbbbbbbbbbbba -abbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbba -abbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbba -abbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbba -abbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbba -abbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbba -abbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbba -abbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbba -abbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbba -abbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbba -abbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbba -abbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbba -abbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbba -abbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbba -abbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbba -abbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbba -abbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbba -abbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbba -abbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbba -abbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbba -abbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbba -abbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbba -abbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbba -abbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbba -abbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbba -abbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbba -abbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbba -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -"} +"a" = (/turf/unsimulated/wall/planetary/sif,/area/plane_ground) +"b" = (/turf/simulated/floor/outdoors/dirt,/area/plane_ground) +"c" = (/obj/effect/landmark{name = "JoinLate"},/turf/simulated/floor/outdoors/dirt,/area/plane_ground) +"d" = (/obj/effect/landmark/start,/turf/simulated/floor/outdoors/dirt,/area/plane_ground) + +(1,1,1) = {" +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +abbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbba +abbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbba +abbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbba +abbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbba +abbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbba +abbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbba +abbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbba +abbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbba +abbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbba +abbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbba +abbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbba +abbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbba +abbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbba +abbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbba +abbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbba +abbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbba +abbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbba +abbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbba +abbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbba +abbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbba +abbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbba +abbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbba +abbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbba +abbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbba +abbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbba +abbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbba +abbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbba +abbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbba +abbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbba +abbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbba +abbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbba +abbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbba +abbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbba +abbbbbbbbbbbbbbbbbbbbbbbbbbbbbcccbbbbbbbbbbbbbbbbbbbbbbbbbbbbbba +abbbbbbbbbbbbbbbbbbbbbbbbbbbdbcccbbbbbbbbbbbbbbbbbbbbbbbbbbbbbba +abbbbbbbbbbbbbbbbbbbbbbbbbbbbbcccbbbbbbbbbbbbbbbbbbbbbbbbbbbbbba +abbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbba +abbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbba +abbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbba +abbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbba +abbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbba +abbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbba +abbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbba +abbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbba +abbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbba +abbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbba +abbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbba +abbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbba +abbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbba +abbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbba +abbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbba +abbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbba +abbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbba +abbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbba +abbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbba +abbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbba +abbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbba +abbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbba +abbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbba +abbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbba +abbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbba +abbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbba +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +"} diff --git a/maps/southern_cross/items/clothing/sc_suit.dm b/maps/southern_cross/items/clothing/sc_suit.dm index e4487c177e..204db3afd1 100644 --- a/maps/southern_cross/items/clothing/sc_suit.dm +++ b/maps/southern_cross/items/clothing/sc_suit.dm @@ -21,4 +21,9 @@ item_icons = list(slot_wear_suit_str = 'maps/southern_cross/icons/mob/sc_suit.dmi') icon = 'maps/southern_cross/icons/obj/sc_suit.dmi' armor = list(melee = 15, bullet = 0, laser = 0,energy = 0, bomb = 0, bio = 50, rad = 5) - valid_accessory_slots = (ACCESSORY_SLOT_INSIGNIA) \ No newline at end of file + valid_accessory_slots = (ACCESSORY_SLOT_INSIGNIA) + allowed = list (/obj/item/weapon/gun,/obj/item/weapon/pen, /obj/item/weapon/paper, /obj/item/device/flashlight,/obj/item/weapon/tank/emergency/oxygen, /obj/item/weapon/storage/fancy/cigarettes, + /obj/item/weapon/storage/box/matches, /obj/item/weapon/reagent_containers/food/drinks/flask, /obj/item/device/suit_cooling_unit, /obj/item/device/analyzer,/obj/item/stack/medical, + /obj/item/weapon/dnainjector,/obj/item/weapon/reagent_containers/dropper,/obj/item/weapon/reagent_containers/syringe,/obj/item/weapon/reagent_containers/hypospray, + /obj/item/device/healthanalyzer,/obj/item/weapon/reagent_containers/glass/bottle,/obj/item/weapon/reagent_containers/glass/beaker, + /obj/item/weapon/reagent_containers/pill,/obj/item/weapon/storage/pill_bottle) \ No newline at end of file diff --git a/maps/southern_cross/shuttles/crew_shuttles.dm b/maps/southern_cross/shuttles/crew_shuttles.dm index c1bd669c56..2b5c0f9d81 100644 --- a/maps/southern_cross/shuttles/crew_shuttles.dm +++ b/maps/southern_cross/shuttles/crew_shuttles.dm @@ -3,6 +3,7 @@ /obj/machinery/computer/shuttle_control/web/shuttle1 name = "shuttle control console" shuttle_tag = "Shuttle 1" + req_access = list(access_pilot) /datum/shuttle/web_shuttle/shuttle1 name = "Shuttle 1" @@ -45,6 +46,7 @@ /obj/machinery/computer/shuttle_control/web/shuttle2 name = "shuttle control console" shuttle_tag = "Shuttle 2" + req_access = list(access_pilot) /datum/shuttle/web_shuttle/shuttle2 name = "Shuttle 2" diff --git a/maps/southern_cross/southern_cross-1.dmm b/maps/southern_cross/southern_cross-1.dmm index edc186256d..f4311ba8e7 100644 --- a/maps/southern_cross/southern_cross-1.dmm +++ b/maps/southern_cross/southern_cross-1.dmm @@ -1,3 +1,315067 @@ +<<<<<<< HEAD +//MAP CONVERTED BY dmm2tgm.py THIS HEADER COMMENT PREVENTS RECONVERSION, DO NOT REMOVE +"aaa" = ( +/turf/space, +/area/space) +"aab" = ( +/obj/effect/landmark{ + name = "carpspawn" + }, +/turf/space, +/area/space) +"aac" = ( +/turf/space, +/area/syndicate_station/firstdeck) +"aad" = ( +/obj/structure/lattice, +/obj/structure/grille, +/turf/space, +/area/space) +"aae" = ( +/obj/item/stack/rods, +/turf/space, +/area/space) +"aaf" = ( +/obj/structure/lattice, +/turf/space, +/area/space) +"aag" = ( +/obj/structure/lattice, +/obj/structure/grille/broken, +/turf/space, +/area/space) +"aah" = ( +/turf/space, +/area/shuttle/response_ship/firstdeck) +"aai" = ( +/turf/simulated/wall/r_wall, +/area/maintenance/firstdeck/foreport) +"aaj" = ( +/turf/simulated/wall/r_wall, +/area/hallway/primary/firstdeck/auxdockfore) +"aak" = ( +/turf/simulated/floor/airless, +/area/hallway/primary/firstdeck/auxdockfore) +"aal" = ( +/obj/machinery/door/firedoor/border_only, +/obj/effect/wingrille_spawn/reinforced, +/turf/simulated/floor/plating, +/area/hallway/primary/firstdeck/auxdockfore) +"aam" = ( +/obj/machinery/door/firedoor/glass, +/obj/effect/wingrille_spawn/reinforced, +/turf/simulated/floor/plating, +/area/hallway/primary/firstdeck/auxdockfore) +"aan" = ( +/turf/simulated/wall/r_wall, +/area/maintenance/firstdeck/forestarboard) +"aao" = ( +/turf/simulated/wall/r_wall, +/area/crew_quarters/firstdeck/gym) +"aap" = ( +/obj/machinery/door/firedoor/border_only, +/obj/effect/wingrille_spawn/reinforced, +/turf/simulated/floor/plating, +/area/crew_quarters/firstdeck/gym) +"aaq" = ( +/obj/machinery/door/firedoor/glass, +/obj/effect/wingrille_spawn/reinforced, +/turf/simulated/floor/plating, +/area/crew_quarters/firstdeck/gym) +"aar" = ( +/obj/effect/floor_decal/industrial/hatch/yellow, +/obj/machinery/door/airlock/external{ + frequency = 1379; + icon_state = "door_locked"; + id_tag = "d1fore_port2_outer"; + locked = 1; + name = "Dock External Airlock"; + req_access = list(13) + }, +/obj/machinery/access_button{ + command = "cycle_exterior"; + frequency = 1379; + master_tag = "d1fore_port2_airlock"; + name = "exterior access button"; + pixel_x = 26; + pixel_y = 0; + req_access = list(13) + }, +/turf/simulated/floor/tiled/dark, +/area/hallway/primary/firstdeck/auxdockfore) +"aas" = ( +/obj/structure/table/bench/standard, +/turf/simulated/floor/tiled/dark, +/area/hallway/primary/firstdeck/auxdockfore) +"aat" = ( +/obj/structure/table/bench/standard, +/obj/machinery/camera/network/first_deck{ + c_tag = "First Deck - Fore Hallway Five"; + dir = 2 + }, +/obj/machinery/light{ + dir = 1 + }, +/turf/simulated/floor/tiled/dark, +/area/hallway/primary/firstdeck/auxdockfore) +"aau" = ( +/obj/structure/sign/warning/caution, +/turf/simulated/wall/r_wall, +/area/hallway/primary/firstdeck/auxdockfore) +"aav" = ( +/obj/structure/table/standard, +/obj/item/weapon/storage/firstaid/regular, +/obj/machinery/ai_status_display{ + pixel_y = 32 + }, +/turf/simulated/floor/holofloor/wood, +/area/crew_quarters/firstdeck/gym) +"aaw" = ( +/turf/simulated/floor/holofloor/wood, +/area/crew_quarters/firstdeck/gym) +"aax" = ( +/obj/structure/fitness/punchingbag, +/turf/simulated/floor/holofloor/wood, +/area/crew_quarters/firstdeck/gym) +"aay" = ( +/obj/machinery/camera/network/civilian{ + c_tag = "CIV - Station Gym"; + dir = 2 + }, +/turf/simulated/floor/holofloor/wood, +/area/crew_quarters/firstdeck/gym) +"aaz" = ( +/obj/structure/reagent_dispensers/water_cooler/full, +/obj/machinery/status_display{ + pixel_y = 32 + }, +/turf/simulated/floor/holofloor/wood, +/area/crew_quarters/firstdeck/gym) +"aaA" = ( +/obj/machinery/atmospherics/unary/vent_pump/high_volume{ + dir = 2; + frequency = 1379; + id_tag = "d1fore_port2_pump" + }, +/obj/effect/floor_decal/industrial/warning{ + dir = 9 + }, +/obj/effect/floor_decal/rust, +/turf/simulated/floor/tiled/steel_dirty, +/area/hallway/primary/firstdeck/auxdockfore) +"aaB" = ( +/obj/machinery/atmospherics/unary/vent_pump/high_volume{ + dir = 2; + frequency = 1379; + id_tag = "d1fore_port2_pump" + }, +/obj/effect/floor_decal/industrial/warning{ + icon_state = "warning"; + dir = 5 + }, +/obj/effect/floor_decal/rust, +/turf/simulated/floor/tiled/steel_dirty, +/area/hallway/primary/firstdeck/auxdockfore) +"aaC" = ( +/obj/effect/wingrille_spawn/reinforced, +/turf/simulated/floor/plating, +/area/hallway/primary/firstdeck/auxdockfore) +"aaD" = ( +/obj/machinery/ai_status_display{ + pixel_y = 32 + }, +/obj/effect/floor_decal/industrial/warning/corner{ + icon_state = "warningcorner"; + dir = 8 + }, +/obj/effect/floor_decal/borderfloor{ + dir = 1 + }, +/obj/effect/floor_decal/corner/white/border{ + dir = 1 + }, +/turf/simulated/floor/tiled, +/area/hallway/primary/firstdeck/auxdockfore) +"aaE" = ( +/obj/effect/floor_decal/borderfloor{ + dir = 1 + }, +/obj/effect/floor_decal/corner/blue/border{ + dir = 1 + }, +/turf/simulated/floor/tiled, +/area/hallway/primary/firstdeck/auxdockfore) +"aaF" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 6 + }, +/obj/effect/floor_decal/borderfloor{ + dir = 1 + }, +/obj/effect/floor_decal/corner/white/border{ + dir = 1 + }, +/turf/simulated/floor/tiled, +/area/hallway/primary/firstdeck/auxdockfore) +"aaG" = ( +/obj/machinery/atmospherics/unary/vent_scrubber/on{ + dir = 8 + }, +/obj/effect/floor_decal/borderfloor{ + dir = 1 + }, +/obj/effect/floor_decal/corner/blue/border{ + dir = 1 + }, +/turf/simulated/floor/tiled, +/area/hallway/primary/firstdeck/auxdockfore) +"aaH" = ( +/obj/machinery/status_display{ + density = 0; + layer = 4; + pixel_x = 0; + pixel_y = 32 + }, +/obj/effect/floor_decal/borderfloor/corner{ + dir = 1 + }, +/obj/effect/floor_decal/corner/white/bordercorner{ + dir = 1 + }, +/turf/simulated/floor/tiled, +/area/hallway/primary/firstdeck/auxdockfore) +"aaI" = ( +/obj/machinery/firealarm{ + pixel_y = 24 + }, +/turf/simulated/floor/tiled, +/area/hallway/primary/firstdeck/auxdockfore) +"aaJ" = ( +/turf/simulated/floor/tiled, +/area/hallway/primary/firstdeck/auxdockfore) +"aaK" = ( +/obj/structure/closet/emcloset, +/turf/simulated/floor/tiled, +/area/hallway/primary/firstdeck/auxdockfore) +"aaL" = ( +/turf/simulated/shuttle/wall, +/area/shuttle/escape_pod1/station) +"aaM" = ( +/obj/structure/grille, +/obj/structure/window/reinforced/full, +/obj/structure/window/reinforced{ + dir = 1 + }, +/obj/structure/window/reinforced{ + dir = 8 + }, +/obj/structure/window/reinforced, +/obj/structure/window/reinforced{ + dir = 4; + health = 1e+006 + }, +/turf/simulated/shuttle/plating, +/area/shuttle/escape_pod1/station) +"aaN" = ( +/turf/simulated/shuttle/wall, +/area/shuttle/escape_pod2/station) +"aaO" = ( +/obj/structure/grille, +/obj/structure/window/reinforced/full, +/obj/structure/window/reinforced{ + dir = 1 + }, +/obj/structure/window/reinforced{ + dir = 8 + }, +/obj/structure/window/reinforced, +/obj/structure/window/reinforced{ + dir = 4; + health = 1e+006 + }, +/turf/simulated/shuttle/plating, +/area/shuttle/escape_pod2/station) +"aaP" = ( +/obj/structure/table/standard, +/obj/machinery/recharger, +/obj/item/weapon/tool/wrench, +/obj/machinery/light{ + icon_state = "tube1"; + dir = 8 + }, +/turf/simulated/floor/holofloor/wood, +/area/crew_quarters/firstdeck/gym) +"aaQ" = ( +/obj/structure/table/standard, +/obj/item/weapon/storage/box/cups, +/turf/simulated/floor/holofloor/wood, +/area/crew_quarters/firstdeck/gym) +"aaR" = ( +/obj/machinery/atmospherics/pipe/manifold/hidden{ + dir = 8; + icon_state = "map" + }, +/obj/effect/floor_decal/industrial/warning{ + dir = 8 + }, +/obj/effect/floor_decal/rust, +/obj/machinery/light/small{ + dir = 8 + }, +/turf/simulated/floor/tiled/steel_dirty, +/area/hallway/primary/firstdeck/auxdockfore) +"aaS" = ( +/obj/machinery/atmospherics/pipe/manifold4w/hidden, +/obj/effect/floor_decal/industrial/warning{ + dir = 4 + }, +/obj/effect/floor_decal/rust, +/turf/simulated/floor/tiled, +/area/hallway/primary/firstdeck/auxdockfore) +"aaT" = ( +/obj/effect/floor_decal/industrial/hatch/yellow, +/obj/machinery/door/airlock/glass_external{ + frequency = 1379; + icon_state = "door_locked"; + id_tag = "d1fore_port2_inner"; + locked = 1; + name = "Dock Internal Airlock"; + req_access = list(13) + }, +/obj/machinery/atmospherics/pipe/simple/hidden{ + icon_state = "intact"; + dir = 4 + }, +/turf/simulated/floor/tiled/dark, +/area/hallway/primary/firstdeck/auxdockfore) +"aaU" = ( +/obj/machinery/atmospherics/pipe/simple/hidden{ + dir = 4 + }, +/obj/machinery/access_button{ + command = "cycle_interior"; + frequency = 1379; + master_tag = "d1fore_port2_airlock"; + name = "interior access button"; + pixel_x = -26; + pixel_y = -26; + req_one_access = list(13) + }, +/obj/effect/floor_decal/industrial/warning{ + dir = 8 + }, +/obj/effect/floor_decal/rust, +/turf/simulated/floor/tiled, +/area/hallway/primary/firstdeck/auxdockfore) +"aaV" = ( +/obj/machinery/atmospherics/pipe/simple/hidden{ + dir = 10; + icon_state = "intact" + }, +/turf/simulated/floor/tiled/monotile, +/area/hallway/primary/firstdeck/auxdockfore) +"aaW" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/obj/machinery/hologram/holopad, +/obj/effect/floor_decal/industrial/outline/grey, +/turf/simulated/floor/tiled/monotile, +/area/hallway/primary/firstdeck/auxdockfore) +"aaX" = ( +/turf/simulated/floor/tiled/monotile, +/area/hallway/primary/firstdeck/auxdockfore) +"aaY" = ( +/obj/effect/floor_decal/steeldecal/steel_decals5{ + dir = 8 + }, +/turf/simulated/floor/tiled, +/area/hallway/primary/firstdeck/auxdockfore) +"aaZ" = ( +/obj/structure/table/glass, +/obj/machinery/light{ + icon_state = "tube1"; + dir = 4 + }, +/turf/simulated/floor/tiled, +/area/hallway/primary/firstdeck/auxdockfore) +"aba" = ( +/obj/structure/bed/chair{ + dir = 1 + }, +/obj/machinery/status_display{ + density = 0; + layer = 4; + pixel_x = 32; + pixel_y = 0 + }, +/obj/machinery/embedded_controller/radio/simple_docking_controller/escape_pod{ + frequency = 1380; + id_tag = "escape_pod_1"; + pixel_x = -25; + pixel_y = 0; + tag_door = "escape_pod_1_hatch" + }, +/obj/machinery/light{ + dir = 1 + }, +/turf/simulated/shuttle/floor, +/area/shuttle/escape_pod1/station) +"abb" = ( +/obj/structure/bed/chair{ + dir = 1 + }, +/obj/machinery/status_display{ + density = 0; + layer = 4; + pixel_x = 32; + pixel_y = 0 + }, +/obj/machinery/embedded_controller/radio/simple_docking_controller/escape_pod{ + frequency = 1380; + id_tag = "escape_pod_2"; + pixel_x = -25; + pixel_y = 0; + tag_door = "escape_pod_2_hatch" + }, +/obj/machinery/light{ + dir = 1 + }, +/turf/simulated/shuttle/floor, +/area/shuttle/escape_pod2/station) +"abc" = ( +/obj/structure/lattice, +/obj/item/stack/rods, +/turf/space, +/area/space) +"abd" = ( +/obj/effect/floor_decal/industrial/warning, +/obj/machinery/access_button{ + command = "cycle_exterior"; + frequency = 1379; + master_tag = "d1fore_port_airlock"; + name = "exterior access button"; + pixel_x = -26; + pixel_y = 0; + req_access = list(13) + }, +/obj/machinery/light/small{ + dir = 8 + }, +/turf/simulated/floor/airless, +/area/maintenance/firstdeck/foreport) +"abe" = ( +/obj/effect/floor_decal/industrial/warning, +/turf/simulated/floor/airless, +/area/maintenance/firstdeck/foreport) +"abf" = ( +/obj/effect/floor_decal/borderfloor{ + dir = 1 + }, +/obj/item/device/radio/intercom{ + dir = 8; + name = "Station Intercom (General)"; + pixel_x = -21 + }, +/turf/simulated/floor/tiled, +/area/crew_quarters/firstdeck/gym) +"abg" = ( +/obj/effect/floor_decal/borderfloor{ + dir = 1 + }, +/turf/simulated/floor/tiled, +/area/crew_quarters/firstdeck/gym) +"abh" = ( +/obj/effect/floor_decal/borderfloor{ + dir = 1 + }, +/obj/structure/extinguisher_cabinet{ + pixel_x = 28; + pixel_y = 0 + }, +/turf/simulated/floor/tiled, +/area/crew_quarters/firstdeck/gym) +"abi" = ( +/obj/machinery/embedded_controller/radio/airlock/airlock_controller{ + frequency = 1379; + id_tag = "d1fore_port2_airlock"; + pixel_x = 0; + pixel_y = -26; + req_access = list(13); + tag_airpump = "d1fore_port2_pump"; + tag_chamber_sensor = "d1fore_port2_sensor"; + tag_exterior_door = "d1fore_port2_outer"; + tag_interior_door = "d1fore_port2_inner" + }, +/obj/machinery/atmospherics/unary/vent_pump/high_volume{ + dir = 1; + frequency = 1379; + id_tag = "d1fore_port2_pump" + }, +/obj/effect/floor_decal/industrial/warning{ + dir = 10 + }, +/obj/effect/floor_decal/rust, +/turf/simulated/floor/tiled/steel_dirty, +/area/hallway/primary/firstdeck/auxdockfore) +"abj" = ( +/obj/machinery/airlock_sensor{ + frequency = 1379; + id_tag = "d1fore_port2_sensor"; + pixel_x = 0; + pixel_y = -25 + }, +/obj/machinery/atmospherics/unary/vent_pump/high_volume{ + dir = 1; + frequency = 1379; + id_tag = "d1fore_port2_pump" + }, +/obj/effect/floor_decal/industrial/warning{ + dir = 6 + }, +/obj/effect/floor_decal/rust, +/turf/simulated/floor/tiled/steel_dirty, +/area/hallway/primary/firstdeck/auxdockfore) +"abk" = ( +/obj/structure/extinguisher_cabinet{ + pixel_y = -30 + }, +/obj/effect/floor_decal/industrial/warning/corner{ + dir = 1 + }, +/obj/effect/floor_decal/rust, +/turf/simulated/floor/tiled, +/area/hallway/primary/firstdeck/auxdockfore) +"abl" = ( +/obj/machinery/atmospherics/pipe/simple/hidden, +/obj/machinery/atmospherics/unary/vent_pump/on{ + dir = 4 + }, +/turf/simulated/floor/tiled, +/area/hallway/primary/firstdeck/auxdockfore) +"abm" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 10 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/obj/structure/cable{ + d1 = 2; + d2 = 4; + icon_state = "2-4" + }, +/turf/simulated/floor/tiled/monotile, +/area/hallway/primary/firstdeck/auxdockfore) +"abn" = ( +/obj/structure/cable{ + d1 = 4; + d2 = 8; + icon_state = "4-8"; + pixel_x = 0 + }, +/turf/simulated/floor/tiled, +/area/hallway/primary/firstdeck/auxdockfore) +"abo" = ( +/obj/machinery/power/apc{ + dir = 2; + name = "south bump"; + pixel_y = -24 + }, +/obj/machinery/light_switch{ + pixel_x = 12; + pixel_y = -24 + }, +/obj/structure/cable{ + d2 = 8; + icon_state = "0-8" + }, +/turf/simulated/floor/tiled, +/area/hallway/primary/firstdeck/auxdockfore) +"abp" = ( +/obj/machinery/alarm{ + dir = 1; + pixel_y = -22 + }, +/turf/simulated/floor/tiled, +/area/hallway/primary/firstdeck/auxdockfore) +"abq" = ( +/obj/structure/closet/emcloset, +/obj/item/device/radio/intercom{ + name = "Station Intercom (General)"; + pixel_y = -21 + }, +/turf/simulated/floor/tiled, +/area/hallway/primary/firstdeck/auxdockfore) +"abr" = ( +/turf/simulated/shuttle/wall/no_join{ + base_state = "orange"; + icon = 'icons/turf/shuttle_orange.dmi'; + icon_state = "orange" + }, +/area/shuttle/escape_pod1/station) +"abs" = ( +/obj/structure/bed/chair{ + dir = 1 + }, +/obj/machinery/vending/wallmed1{ + layer = 3.3; + name = "Emergency NanoMed"; + pixel_x = -28; + pixel_y = 0 + }, +/obj/item/device/radio/intercom{ + dir = 4; + name = "Station Intercom (General)"; + pixel_x = 21 + }, +/turf/simulated/shuttle/floor, +/area/shuttle/escape_pod1/station) +"abt" = ( +/turf/simulated/wall/r_wall, +/area/hallway/primary/firstdeck/fore) +"abu" = ( +/turf/simulated/shuttle/wall/no_join{ + base_state = "orange"; + icon = 'icons/turf/shuttle_orange.dmi'; + icon_state = "orange" + }, +/area/shuttle/escape_pod2/station) +"abv" = ( +/obj/structure/bed/chair{ + dir = 1 + }, +/obj/machinery/vending/wallmed1{ + layer = 3.3; + name = "Emergency NanoMed"; + pixel_x = -28; + pixel_y = 0 + }, +/obj/item/device/radio/intercom{ + dir = 4; + name = "Station Intercom (General)"; + pixel_x = 21 + }, +/turf/simulated/shuttle/floor, +/area/shuttle/escape_pod2/station) +"abw" = ( +/obj/effect/floor_decal/industrial/warning, +/turf/simulated/floor/airless, +/area/maintenance/firstdeck/forestarboard) +"abx" = ( +/obj/effect/floor_decal/industrial/warning, +/obj/machinery/access_button{ + command = "cycle_exterior"; + frequency = 1379; + master_tag = "d1fore_starboard_airlock"; + name = "exterior access button"; + pixel_x = 26; + pixel_y = 0; + req_access = list(13) + }, +/obj/machinery/light/small{ + dir = 4 + }, +/turf/simulated/floor/airless, +/area/maintenance/firstdeck/forestarboard) +"aby" = ( +/obj/machinery/door/airlock/external{ + frequency = 1379; + icon_state = "door_locked"; + id_tag = "d1fore_port_outer"; + locked = 1; + name = "External Airlock Access"; + req_access = list(13) + }, +/turf/simulated/floor/plating, +/area/maintenance/firstdeck/foreport) +"abz" = ( +/obj/machinery/firealarm{ + dir = 8; + pixel_x = -24; + pixel_y = 0 + }, +/turf/simulated/floor/tiled, +/area/crew_quarters/firstdeck/gym) +"abA" = ( +/obj/structure/fitness/weightlifter, +/turf/simulated/floor/tiled, +/area/crew_quarters/firstdeck/gym) +"abB" = ( +/obj/machinery/hologram/holopad, +/obj/effect/floor_decal/industrial/outline/grey, +/turf/simulated/floor/tiled, +/area/crew_quarters/firstdeck/gym) +"abC" = ( +/obj/machinery/alarm{ + dir = 8; + icon_state = "alarm0"; + pixel_x = 22 + }, +/turf/simulated/floor/tiled, +/area/crew_quarters/firstdeck/gym) +"abD" = ( +/obj/machinery/atmospherics/pipe/simple/hidden, +/turf/simulated/floor/tiled, +/area/hallway/primary/firstdeck/auxdockfore) +"abE" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/obj/structure/cable{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/turf/simulated/floor/tiled, +/area/hallway/primary/firstdeck/auxdockfore) +"abF" = ( +/obj/structure/sign/deck/first, +/turf/simulated/wall/r_wall, +/area/hallway/primary/firstdeck/auxdockfore) +"abG" = ( +/obj/structure/bed/chair{ + dir = 1 + }, +/obj/structure/closet/walllocker/emerglocker{ + pixel_x = -28 + }, +/turf/simulated/shuttle/floor, +/area/shuttle/escape_pod1/station) +"abH" = ( +/obj/structure/bed/chair{ + dir = 1 + }, +/obj/structure/closet/walllocker/emerglocker{ + pixel_x = -28 + }, +/turf/simulated/shuttle/floor, +/area/shuttle/escape_pod2/station) +"abI" = ( +/obj/machinery/door/airlock/external{ + frequency = 1379; + icon_state = "door_locked"; + id_tag = "d1fore_starboard_outer"; + locked = 1; + name = "External Airlock Access"; + req_access = list(13) + }, +/turf/simulated/floor/plating, +/area/maintenance/firstdeck/forestarboard) +"abJ" = ( +/obj/machinery/atmospherics/pipe/simple/hidden{ + dir = 6 + }, +/turf/simulated/wall/r_wall, +/area/maintenance/firstdeck/foreport) +"abK" = ( +/obj/machinery/airlock_sensor{ + frequency = 1379; + id_tag = "d1fore_port_sensor"; + pixel_x = -25; + pixel_y = 0 + }, +/obj/machinery/atmospherics/unary/vent_pump/high_volume{ + dir = 8; + frequency = 1379; + id_tag = "d1fore_port_pump" + }, +/turf/simulated/floor/plating, +/area/maintenance/firstdeck/foreport) +"abL" = ( +/obj/machinery/embedded_controller/radio/airlock/airlock_controller{ + frequency = 1379; + id_tag = "d1fore_port_airlock"; + pixel_x = 26; + pixel_y = 0; + req_access = list(13); + tag_airpump = "d1fore_port_pump"; + tag_chamber_sensor = "d1fore_port_sensor"; + tag_exterior_door = "d1fore_port_outer"; + tag_interior_door = "d1fore_port_inner" + }, +/obj/machinery/atmospherics/unary/vent_pump/high_volume{ + dir = 4; + frequency = 1379; + id_tag = "d1fore_port_pump" + }, +/turf/simulated/floor/plating, +/area/maintenance/firstdeck/foreport) +"abM" = ( +/obj/machinery/atmospherics/pipe/simple/hidden{ + dir = 10; + icon_state = "intact" + }, +/turf/simulated/wall/r_wall, +/area/maintenance/firstdeck/foreport) +"abN" = ( +/turf/simulated/floor/tiled, +/area/crew_quarters/firstdeck/gym) +"abO" = ( +/obj/machinery/atmospherics/unary/vent_scrubber/on{ + dir = 4 + }, +/turf/simulated/floor/tiled, +/area/crew_quarters/firstdeck/gym) +"abP" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, +/turf/simulated/floor/tiled, +/area/crew_quarters/firstdeck/gym) +"abQ" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 6 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 10 + }, +/turf/simulated/floor/tiled, +/area/crew_quarters/firstdeck/gym) +"abR" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/turf/simulated/floor/tiled, +/area/crew_quarters/firstdeck/gym) +"abS" = ( +/obj/machinery/atmospherics/unary/vent_pump/on{ + dir = 8 + }, +/turf/simulated/floor/tiled, +/area/crew_quarters/firstdeck/gym) +"abT" = ( +/obj/machinery/light{ + dir = 4; + icon_state = "tube1" + }, +/turf/simulated/floor/tiled, +/area/crew_quarters/firstdeck/gym) +"abU" = ( +/turf/simulated/wall/r_wall, +/area/storage/emergency_storage/firstdeck/fore_emergency) +"abV" = ( +/obj/structure/table/standard, +/obj/item/device/t_scanner, +/obj/item/weapon/storage/box/lights/mixed, +/obj/item/weapon/storage/box/lights/mixed, +/turf/simulated/floor/plating, +/area/storage/emergency_storage/firstdeck/fore_emergency) +"abW" = ( +/obj/machinery/power/apc{ + dir = 1; + name = "north bump"; + pixel_x = 0; + pixel_y = 24 + }, +/obj/structure/cable{ + d2 = 2; + icon_state = "0-2"; + pixel_y = 0 + }, +/turf/simulated/floor/plating, +/area/storage/emergency_storage/firstdeck/fore_emergency) +"abX" = ( +/obj/machinery/floodlight, +/turf/simulated/floor/plating, +/area/storage/emergency_storage/firstdeck/fore_emergency) +"abY" = ( +/obj/machinery/door/firedoor/border_only, +/obj/machinery/atmospherics/pipe/simple/hidden, +/obj/machinery/door/airlock/glass{ + name = "Auxiliary Dock" + }, +/turf/simulated/floor/tiled/steel_grid, +/area/hallway/primary/firstdeck/auxdockfore) +"abZ" = ( +/obj/effect/wingrille_spawn/reinforced, +/obj/machinery/door/firedoor/glass, +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/obj/structure/cable{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/turf/simulated/floor/plating, +/area/hallway/primary/firstdeck/auxdockfore) +"aca" = ( +/obj/machinery/door/firedoor/border_only, +/obj/machinery/door/airlock/glass{ + name = "Auxiliary Dock" + }, +/turf/simulated/floor/tiled/steel_grid, +/area/hallway/primary/firstdeck/auxdockfore) +"acb" = ( +/obj/machinery/alarm{ + dir = 4; + icon_state = "alarm0"; + pixel_x = -22 + }, +/obj/machinery/light{ + dir = 1 + }, +/obj/effect/floor_decal/industrial/warning{ + dir = 4 + }, +/turf/simulated/floor/tiled, +/area/hallway/primary/firstdeck/fore) +"acc" = ( +/turf/simulated/floor/tiled/dark, +/area/hallway/primary/firstdeck/fore) +"acd" = ( +/obj/structure/stairs/east, +/turf/simulated/floor/tiled/dark, +/area/hallway/primary/firstdeck/fore) +"ace" = ( +/obj/structure/shuttle/engine/propulsion/burst, +/turf/simulated/shuttle/wall, +/turf/simulated/shuttle/plating/airless/carry, +/area/shuttle/escape_pod1/station) +"acf" = ( +/obj/machinery/door/airlock/external{ + frequency = 1380; + icon_state = "door_locked"; + id_tag = "escape_pod_1_hatch"; + locked = 1; + name = "Escape Pod 1 Hatch"; + req_access = list(13) + }, +/turf/simulated/shuttle/floor, +/area/shuttle/escape_pod1/station) +"acg" = ( +/obj/structure/shuttle/engine/propulsion/burst, +/turf/simulated/shuttle/wall, +/turf/simulated/shuttle/plating/airless/carry, +/area/shuttle/escape_pod2/station) +"ach" = ( +/obj/machinery/door/airlock/external{ + frequency = 1380; + icon_state = "door_locked"; + id_tag = "escape_pod_2_hatch"; + locked = 1; + name = "Escape Pod 2 Hatch"; + req_access = list(13) + }, +/turf/simulated/shuttle/floor, +/area/shuttle/escape_pod2/station) +"aci" = ( +/obj/machinery/atmospherics/pipe/simple/hidden{ + dir = 6 + }, +/turf/simulated/wall/r_wall, +/area/maintenance/firstdeck/forestarboard) +"acj" = ( +/obj/machinery/embedded_controller/radio/airlock/airlock_controller{ + frequency = 1379; + id_tag = "d1fore_starboard_airlock"; + pixel_x = -26; + pixel_y = 0; + req_access = list(13); + tag_airpump = "d1fore_starboard_pump"; + tag_chamber_sensor = "d1fore_starboard_sensor"; + tag_exterior_door = "d1fore_starboard_outer"; + tag_interior_door = "d1fore_starboard_inner" + }, +/obj/machinery/atmospherics/unary/vent_pump/high_volume{ + dir = 8; + frequency = 1379; + id_tag = "d1fore_starboard_pump" + }, +/turf/simulated/floor/plating, +/area/maintenance/firstdeck/forestarboard) +"ack" = ( +/obj/machinery/airlock_sensor{ + frequency = 1379; + id_tag = "d1fore_starboard_sensor"; + pixel_x = 25; + pixel_y = 0 + }, +/obj/machinery/atmospherics/unary/vent_pump/high_volume{ + dir = 4; + frequency = 1379; + id_tag = "d1fore_starboard_pump" + }, +/turf/simulated/floor/plating, +/area/maintenance/firstdeck/forestarboard) +"acl" = ( +/obj/machinery/atmospherics/pipe/simple/hidden{ + dir = 10; + icon_state = "intact" + }, +/turf/simulated/wall/r_wall, +/area/maintenance/firstdeck/forestarboard) +"acm" = ( +/obj/machinery/atmospherics/pipe/manifold/hidden{ + dir = 8; + icon_state = "map" + }, +/turf/simulated/wall/r_wall, +/area/maintenance/firstdeck/foreport) +"acn" = ( +/obj/machinery/atmospherics/unary/vent_pump/high_volume{ + dir = 8; + frequency = 1379; + id_tag = "d1fore_port_pump" + }, +/turf/simulated/floor/plating, +/area/maintenance/firstdeck/foreport) +"aco" = ( +/obj/machinery/atmospherics/unary/vent_pump/high_volume{ + dir = 4; + frequency = 1379; + id_tag = "d1fore_port_pump" + }, +/obj/machinery/light/small{ + dir = 4; + pixel_y = 0 + }, +/turf/simulated/floor/plating, +/area/maintenance/firstdeck/foreport) +"acp" = ( +/obj/machinery/atmospherics/pipe/manifold/hidden{ + dir = 4; + icon_state = "map" + }, +/turf/simulated/wall/r_wall, +/area/maintenance/firstdeck/foreport) +"acq" = ( +/obj/structure/closet/secure_closet/personal, +/turf/simulated/floor/tiled, +/area/crew_quarters/firstdeck/gym) +"acr" = ( +/obj/structure/closet/athletic_mixed, +/obj/machinery/newscaster{ + layer = 3.3; + pixel_x = 0; + pixel_y = -27 + }, +/turf/simulated/floor/tiled, +/area/crew_quarters/firstdeck/gym) +"acs" = ( +/obj/structure/cable{ + d1 = 2; + d2 = 4; + icon_state = "2-4" + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/obj/effect/floor_decal/steeldecal/steel_decals4{ + dir = 5 + }, +/obj/effect/floor_decal/steeldecal/steel_decals4{ + dir = 8 + }, +/turf/simulated/floor/tiled, +/area/crew_quarters/firstdeck/gym) +"act" = ( +/obj/item/weapon/stool/padded, +/obj/machinery/power/apc{ + dir = 2; + name = "south bump"; + pixel_y = -24 + }, +/obj/machinery/light_switch{ + pixel_x = 11; + pixel_y = -24 + }, +/obj/structure/cable{ + d2 = 8; + icon_state = "0-8" + }, +/turf/simulated/floor/tiled, +/area/crew_quarters/firstdeck/gym) +"acu" = ( +/obj/structure/closet/hydrant{ + pixel_x = -32 + }, +/obj/item/clothing/glasses/meson, +/obj/machinery/alarm{ + dir = 1; + pixel_y = -22 + }, +/turf/simulated/floor/plating, +/area/storage/emergency_storage/firstdeck/fore_emergency) +"acv" = ( +/obj/structure/cable{ + d1 = 1; + d2 = 2; + icon_state = "1-2"; + pixel_y = 0 + }, +/turf/simulated/floor/plating, +/area/storage/emergency_storage/firstdeck/fore_emergency) +"acw" = ( +/obj/machinery/portable_atmospherics/powered/pump/filled, +/obj/machinery/light/small{ + dir = 4 + }, +/turf/simulated/floor/plating, +/area/storage/emergency_storage/firstdeck/fore_emergency) +"acx" = ( +/obj/machinery/atmospherics/pipe/simple/hidden, +/turf/simulated/floor/tiled, +/area/hallway/primary/firstdeck/fore) +"acy" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/obj/structure/cable{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/obj/effect/floor_decal/steeldecal/steel_decals5, +/turf/simulated/floor/tiled, +/area/hallway/primary/firstdeck/fore) +"acz" = ( +/turf/simulated/floor/tiled, +/area/hallway/primary/firstdeck/fore) +"acA" = ( +/obj/machinery/atmospherics/unary/vent_pump/on, +/obj/machinery/camera/network/first_deck{ + c_tag = "First Deck - Fore Hallway Stairs"; + dir = 4 + }, +/obj/effect/floor_decal/industrial/warning/corner{ + dir = 4 + }, +/turf/simulated/floor/tiled, +/area/hallway/primary/firstdeck/fore) +"acB" = ( +/obj/effect/floor_decal/industrial/warning{ + icon_state = "warning"; + dir = 1 + }, +/turf/simulated/floor/tiled, +/area/hallway/primary/firstdeck/fore) +"acC" = ( +/obj/machinery/atmospherics/unary/vent_scrubber/on, +/obj/machinery/firealarm{ + dir = 4; + pixel_x = 24 + }, +/obj/effect/floor_decal/industrial/warning{ + icon_state = "warning"; + dir = 1 + }, +/turf/simulated/floor/tiled, +/area/hallway/primary/firstdeck/fore) +"acD" = ( +/turf/simulated/wall, +/area/hallway/primary/firstdeck/fore) +"acE" = ( +/obj/machinery/door/airlock/glass_external{ + frequency = 1380; + icon_state = "door_locked"; + id_tag = "escape_pod_1_berth_hatch"; + locked = 1; + name = "Escape Pod 1"; + req_access = list(13) + }, +/turf/simulated/floor/plating, +/area/hallway/primary/firstdeck/fore) +"acF" = ( +/obj/structure/sign/warning/pods, +/turf/simulated/wall, +/area/hallway/primary/firstdeck/fore) +"acG" = ( +/obj/machinery/door/airlock/glass_external{ + frequency = 1380; + icon_state = "door_locked"; + id_tag = "escape_pod_2_berth_hatch"; + locked = 1; + name = "Escape Pod 2"; + req_access = list(13) + }, +/turf/simulated/floor/plating, +/area/hallway/primary/firstdeck/fore) +"acH" = ( +/obj/machinery/atmospherics/pipe/manifold/hidden{ + dir = 8; + icon_state = "map" + }, +/turf/simulated/wall/r_wall, +/area/maintenance/firstdeck/forestarboard) +"acI" = ( +/obj/machinery/atmospherics/unary/vent_pump/high_volume{ + dir = 8; + frequency = 1379; + id_tag = "d1fore_starboard_pump" + }, +/obj/machinery/light/small{ + dir = 8 + }, +/turf/simulated/floor/plating, +/area/maintenance/firstdeck/forestarboard) +"acJ" = ( +/obj/machinery/atmospherics/unary/vent_pump/high_volume{ + dir = 4; + frequency = 1379; + id_tag = "d1fore_starboard_pump" + }, +/turf/simulated/floor/plating, +/area/maintenance/firstdeck/forestarboard) +"acK" = ( +/obj/machinery/atmospherics/pipe/manifold/hidden{ + dir = 4; + icon_state = "map" + }, +/turf/simulated/wall/r_wall, +/area/maintenance/firstdeck/forestarboard) +"acL" = ( +/obj/machinery/atmospherics/pipe/simple/hidden{ + dir = 5; + icon_state = "intact" + }, +/turf/simulated/wall/r_wall, +/area/maintenance/firstdeck/foreport) +"acM" = ( +/obj/machinery/atmospherics/pipe/simple/hidden{ + dir = 4 + }, +/obj/machinery/door/airlock/glass_external{ + frequency = 1379; + icon_state = "door_locked"; + id_tag = "d1fore_port_inner"; + locked = 1; + name = "Internal Airlock Access"; + req_access = list(13) + }, +/turf/simulated/floor/plating, +/area/maintenance/firstdeck/foreport) +"acN" = ( +/obj/machinery/atmospherics/pipe/manifold/hidden{ + dir = 1; + icon_state = "map" + }, +/obj/machinery/door/airlock/glass_external{ + frequency = 1379; + icon_state = "door_locked"; + id_tag = "d1fore_port_inner"; + locked = 1; + name = "Internal Airlock Access"; + req_access = list(13) + }, +/turf/simulated/floor/plating, +/area/maintenance/firstdeck/foreport) +"acO" = ( +/obj/machinery/atmospherics/pipe/simple/hidden{ + dir = 9; + icon_state = "intact" + }, +/turf/simulated/wall/r_wall, +/area/maintenance/firstdeck/foreport) +"acP" = ( +/obj/machinery/door/airlock/glass{ + name = "Gym" + }, +/obj/machinery/door/firedoor/glass, +/obj/structure/cable{ + d1 = 1; + d2 = 2; + icon_state = "1-2"; + pixel_y = 0 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/turf/simulated/floor/tiled/steel_grid, +/area/crew_quarters/firstdeck/gym) +"acQ" = ( +/turf/simulated/wall, +/area/storage/emergency_storage/firstdeck/fore_emergency) +"acR" = ( +/obj/machinery/door/firedoor/border_only, +/obj/machinery/door/airlock{ + name = "Emergency Storage" + }, +/obj/structure/cable{ + d1 = 1; + d2 = 2; + icon_state = "1-2"; + pixel_y = 0 + }, +/turf/simulated/floor/plating, +/area/storage/emergency_storage/firstdeck/fore_emergency) +"acS" = ( +/obj/machinery/newscaster, +/turf/simulated/wall/r_wall, +/area/storage/emergency_storage/firstdeck/fore_emergency) +"acT" = ( +/obj/machinery/atmospherics/pipe/simple/hidden, +/obj/machinery/camera/network/first_deck{ + c_tag = "First Deck - Fore Hallway Four"; + dir = 4 + }, +/turf/simulated/floor/tiled, +/area/hallway/primary/firstdeck/fore) +"acU" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{ + dir = 8 + }, +/obj/structure/cable{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/turf/simulated/floor/tiled/monotile, +/area/hallway/primary/firstdeck/fore) +"acV" = ( +/obj/machinery/atmospherics/unary/vent_scrubber/on{ + dir = 8 + }, +/obj/machinery/firealarm{ + dir = 4; + pixel_x = 24 + }, +/turf/simulated/floor/tiled, +/area/hallway/primary/firstdeck/fore) +"acW" = ( +/obj/machinery/door/firedoor/border_only, +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/turf/simulated/floor/tiled, +/area/hallway/primary/firstdeck/fore) +"acX" = ( +/obj/machinery/door/firedoor/border_only, +/turf/simulated/floor/tiled, +/area/hallway/primary/firstdeck/fore) +"acY" = ( +/obj/machinery/door/firedoor/border_only, +/obj/effect/wingrille_spawn/reinforced, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/turf/simulated/floor/plating, +/area/hallway/primary/firstdeck/fore) +"acZ" = ( +/obj/machinery/status_display, +/turf/simulated/wall/r_wall, +/area/hallway/primary/firstdeck/fore) +"ada" = ( +/obj/effect/floor_decal/industrial/warning/corner{ + dir = 4 + }, +/turf/simulated/floor/tiled/dark, +/area/hallway/primary/firstdeck/fore) +"adb" = ( +/obj/machinery/embedded_controller/radio/simple_docking_controller/escape_pod_berth{ + frequency = 1380; + id_tag = "escape_pod_1_berth"; + pixel_x = -25; + pixel_y = 30; + tag_door = "escape_pod_1_berth_hatch" + }, +/obj/effect/floor_decal/industrial/warning{ + dir = 1 + }, +/turf/simulated/floor/tiled/dark, +/area/hallway/primary/firstdeck/fore) +"adc" = ( +/obj/effect/floor_decal/industrial/warning/corner{ + dir = 1 + }, +/turf/simulated/floor/tiled/dark, +/area/hallway/primary/firstdeck/fore) +"add" = ( +/obj/machinery/embedded_controller/radio/simple_docking_controller/escape_pod_berth{ + frequency = 1380; + id_tag = "escape_pod_2_berth"; + pixel_x = -25; + pixel_y = 30; + tag_door = "escape_pod_2_berth_hatch" + }, +/obj/effect/floor_decal/industrial/warning{ + dir = 1 + }, +/turf/simulated/floor/tiled/dark, +/area/hallway/primary/firstdeck/fore) +"ade" = ( +/obj/effect/floor_decal/industrial/warning/corner{ + dir = 1 + }, +/obj/structure/closet/emcloset, +/turf/simulated/floor/tiled/dark, +/area/hallway/primary/firstdeck/fore) +"adf" = ( +/obj/machinery/atmospherics/pipe/simple/hidden{ + dir = 5; + icon_state = "intact" + }, +/turf/simulated/wall/r_wall, +/area/maintenance/firstdeck/forestarboard) +"adg" = ( +/obj/machinery/atmospherics/pipe/manifold/hidden{ + dir = 1; + icon_state = "map" + }, +/obj/machinery/door/airlock/glass_external{ + frequency = 1379; + icon_state = "door_locked"; + id_tag = "d1fore_starboard_inner"; + locked = 1; + name = "Internal Airlock Access"; + req_access = list(13) + }, +/turf/simulated/floor/plating, +/area/maintenance/firstdeck/forestarboard) +"adh" = ( +/obj/machinery/atmospherics/pipe/simple/hidden{ + dir = 4 + }, +/obj/machinery/door/airlock/glass_external{ + frequency = 1379; + icon_state = "door_locked"; + id_tag = "d1fore_starboard_inner"; + locked = 1; + name = "Internal Airlock Access"; + req_access = list(13) + }, +/turf/simulated/floor/plating, +/area/maintenance/firstdeck/forestarboard) +"adi" = ( +/obj/machinery/atmospherics/pipe/simple/hidden{ + dir = 9; + icon_state = "intact" + }, +/turf/simulated/wall/r_wall, +/area/maintenance/firstdeck/forestarboard) +"adj" = ( +/obj/effect/floor_decal/industrial/warning{ + dir = 1 + }, +/obj/machinery/light/small{ + dir = 8 + }, +/turf/simulated/floor/plating, +/area/maintenance/firstdeck/foreport) +"adk" = ( +/obj/effect/floor_decal/industrial/warning{ + dir = 1 + }, +/obj/machinery/atmospherics/pipe/simple/hidden, +/obj/machinery/access_button{ + command = "cycle_interior"; + frequency = 1379; + master_tag = "d1fore_port_airlock"; + name = "interior access button"; + pixel_x = 26; + pixel_y = 0; + req_access = list(13) + }, +/turf/simulated/floor/plating, +/area/maintenance/firstdeck/foreport) +"adl" = ( +/turf/simulated/wall, +/area/maintenance/firstdeck/foreport) +"adm" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 6 + }, +/obj/structure/closet/emcloset, +/turf/simulated/floor/tiled, +/area/hallway/primary/firstdeck/fore) +"adn" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, +/turf/simulated/floor/tiled, +/area/hallway/primary/firstdeck/fore) +"ado" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, +/obj/machinery/atmospherics/unary/vent_pump/on, +/turf/simulated/floor/tiled, +/area/hallway/primary/firstdeck/fore) +"adp" = ( +/obj/structure/cable{ + d1 = 1; + d2 = 2; + icon_state = "1-2"; + pixel_y = 0 + }, +/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers, +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/effect/floor_decal/steeldecal/steel_decals4{ + dir = 4 + }, +/obj/effect/floor_decal/steeldecal/steel_decals4{ + dir = 9 + }, +/turf/simulated/floor/tiled, +/area/hallway/primary/firstdeck/fore) +"adq" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, +/obj/machinery/camera/network/first_deck{ + c_tag = "First Deck Fore Hallway - One"; + dir = 2 + }, +/turf/simulated/floor/tiled, +/area/hallway/primary/firstdeck/fore) +"adr" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, +/obj/machinery/light{ + dir = 1 + }, +/turf/simulated/floor/tiled, +/area/hallway/primary/firstdeck/fore) +"ads" = ( +/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{ + dir = 1 + }, +/turf/simulated/floor/tiled, +/area/hallway/primary/firstdeck/fore) +"adt" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, +/obj/machinery/status_display{ + density = 0; + layer = 4; + pixel_x = 0; + pixel_y = 32 + }, +/turf/simulated/floor/tiled, +/area/hallway/primary/firstdeck/fore) +"adu" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, +/obj/structure/cable{ + d1 = 1; + d2 = 2; + icon_state = "1-2"; + pixel_y = 0 + }, +/obj/effect/floor_decal/steeldecal/steel_decals4{ + dir = 4 + }, +/obj/effect/floor_decal/steeldecal/steel_decals4{ + dir = 9 + }, +/turf/simulated/floor/tiled, +/area/hallway/primary/firstdeck/fore) +"adv" = ( +/obj/machinery/atmospherics/pipe/simple/hidden, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, +/turf/simulated/floor/tiled, +/area/hallway/primary/firstdeck/fore) +"adw" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/machinery/atmospherics/pipe/manifold4w/hidden/scrubbers, +/obj/structure/cable{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/turf/simulated/floor/tiled/monotile, +/area/hallway/primary/firstdeck/fore) +"adx" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, +/turf/simulated/floor/tiled, +/area/hallway/primary/firstdeck/fore) +"ady" = ( +/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers, +/obj/effect/floor_decal/borderfloor/corner{ + dir = 4 + }, +/obj/effect/floor_decal/corner/red/bordercorner{ + dir = 4 + }, +/turf/simulated/floor/tiled, +/area/hallway/primary/firstdeck/fore) +"adz" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, +/obj/effect/floor_decal/borderfloor{ + dir = 1 + }, +/obj/effect/floor_decal/corner/white/border{ + dir = 1 + }, +/turf/simulated/floor/tiled, +/area/hallway/primary/firstdeck/fore) +"adA" = ( +/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{ + dir = 1 + }, +/obj/effect/floor_decal/borderfloor{ + dir = 1 + }, +/obj/effect/floor_decal/corner/red/border{ + dir = 1 + }, +/turf/simulated/floor/tiled, +/area/hallway/primary/firstdeck/fore) +"adB" = ( +/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{ + dir = 1 + }, +/obj/effect/floor_decal/borderfloor{ + dir = 1 + }, +/obj/effect/floor_decal/corner/white/border{ + dir = 1 + }, +/turf/simulated/floor/tiled, +/area/hallway/primary/firstdeck/fore) +"adC" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, +/obj/effect/floor_decal/borderfloor{ + dir = 1 + }, +/obj/effect/floor_decal/corner/red/border{ + dir = 1 + }, +/turf/simulated/floor/tiled, +/area/hallway/primary/firstdeck/fore) +"adD" = ( +/obj/machinery/atmospherics/unary/vent_pump/on, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, +/obj/machinery/ai_status_display{ + pixel_y = 32 + }, +/obj/effect/floor_decal/borderfloor{ + dir = 1 + }, +/obj/effect/floor_decal/corner/white/border{ + dir = 1 + }, +/turf/simulated/floor/tiled, +/area/hallway/primary/firstdeck/fore) +"adE" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 10 + }, +/obj/effect/floor_decal/borderfloor{ + dir = 1 + }, +/obj/effect/floor_decal/corner/red/border{ + dir = 1 + }, +/turf/simulated/floor/tiled, +/area/hallway/primary/firstdeck/fore) +"adF" = ( +/turf/simulated/wall, +/area/maintenance/firstdeck/forestarboard) +"adG" = ( +/obj/effect/floor_decal/industrial/warning{ + dir = 1 + }, +/obj/machinery/atmospherics/pipe/simple/hidden, +/obj/machinery/access_button{ + command = "cycle_interior"; + frequency = 1379; + master_tag = "d1fore_starboard_airlock"; + name = "interior access button"; + pixel_x = -26; + pixel_y = 0; + req_access = list(13) + }, +/turf/simulated/floor/plating, +/area/maintenance/firstdeck/forestarboard) +"adH" = ( +/obj/effect/floor_decal/industrial/warning{ + dir = 1 + }, +/obj/machinery/light/small{ + dir = 4 + }, +/turf/simulated/floor/plating, +/area/maintenance/firstdeck/forestarboard) +"adI" = ( +/turf/space, +/area/shuttle/syndicate_elite/station) +"adJ" = ( +/obj/structure/lattice, +/obj/item/stack/rods, +/obj/item/stack/rods, +/turf/space, +/area/space) +"adK" = ( +/obj/structure/lattice, +/obj/item/stack/rods, +/obj/structure/grille/broken, +/turf/space, +/area/space) +"adL" = ( +/obj/machinery/door/firedoor/border_only, +/obj/effect/wingrille_spawn/reinforced, +/turf/simulated/floor/plating, +/area/maintenance/firstdeck/foreport) +"adM" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 6 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 6 + }, +/turf/simulated/floor/plating, +/area/maintenance/firstdeck/foreport) +"adN" = ( +/obj/machinery/atmospherics/pipe/manifold/hidden{ + dir = 8; + icon_state = "map" + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, +/obj/structure/cable{ + d1 = 2; + d2 = 4; + icon_state = "2-4" + }, +/obj/structure/catwalk, +/turf/simulated/floor/plating, +/area/maintenance/firstdeck/foreport) +"adO" = ( +/obj/machinery/door/firedoor/border_only, +/obj/machinery/atmospherics/pipe/simple/hidden{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, +/obj/structure/cable{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/obj/machinery/door/airlock/maintenance{ + req_access = null; + req_one_access = list(12,67) + }, +/turf/simulated/floor/plating, +/area/maintenance/firstdeck/foreport) +"adP" = ( +/obj/machinery/atmospherics/pipe/simple/hidden{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 9 + }, +/obj/structure/cable{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/obj/effect/floor_decal/steeldecal/steel_decals4{ + dir = 1 + }, +/obj/effect/floor_decal/steeldecal/steel_decals4{ + dir = 6 + }, +/turf/simulated/floor/tiled, +/area/hallway/primary/firstdeck/fore) +"adQ" = ( +/obj/machinery/atmospherics/pipe/simple/hidden{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/obj/structure/cable{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/turf/simulated/floor/tiled, +/area/hallway/primary/firstdeck/fore) +"adR" = ( +/obj/machinery/atmospherics/pipe/simple/hidden{ + dir = 4 + }, +/obj/structure/cable{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/obj/machinery/atmospherics/pipe/manifold/hidden/supply, +/turf/simulated/floor/tiled, +/area/hallway/primary/firstdeck/fore) +"adS" = ( +/obj/machinery/atmospherics/pipe/simple/hidden{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/manifold/hidden/supply, +/obj/structure/cable{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/obj/structure/cable{ + d1 = 2; + d2 = 8; + icon_state = "2-8" + }, +/obj/effect/floor_decal/steeldecal/steel_decals4{ + dir = 5 + }, +/obj/effect/floor_decal/steeldecal/steel_decals4{ + dir = 8 + }, +/obj/structure/cable{ + d1 = 1; + d2 = 8; + icon_state = "1-8" + }, +/turf/simulated/floor/tiled, +/area/hallway/primary/firstdeck/fore) +"adT" = ( +/obj/machinery/atmospherics/pipe/simple/hidden{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/obj/structure/cable{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/obj/machinery/ai_status_display{ + pixel_y = -32 + }, +/turf/simulated/floor/tiled, +/area/hallway/primary/firstdeck/fore) +"adU" = ( +/obj/machinery/atmospherics/pipe/simple/hidden{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/obj/structure/cable{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/obj/item/device/radio/intercom{ + name = "Station Intercom (General)"; + pixel_y = -21 + }, +/turf/simulated/floor/tiled, +/area/hallway/primary/firstdeck/fore) +"adV" = ( +/obj/machinery/atmospherics/pipe/simple/hidden{ + dir = 4 + }, +/obj/machinery/atmospherics/unary/vent_scrubber/on{ + dir = 1 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/obj/structure/cable{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/obj/machinery/atm{ + pixel_y = -30 + }, +/turf/simulated/floor/tiled, +/area/hallway/primary/firstdeck/fore) +"adW" = ( +/obj/machinery/atmospherics/pipe/simple/hidden{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/manifold/hidden/supply{ + dir = 1 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/obj/structure/cable{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/obj/structure/cable{ + d1 = 2; + d2 = 8; + icon_state = "2-8" + }, +/turf/simulated/floor/tiled, +/area/hallway/primary/firstdeck/fore) +"adX" = ( +/obj/machinery/atmospherics/pipe/simple/hidden{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/obj/structure/cable{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/obj/structure/cable{ + d1 = 1; + d2 = 8; + icon_state = "1-8" + }, +/turf/simulated/floor/tiled, +/area/hallway/primary/firstdeck/fore) +"adY" = ( +/obj/machinery/atmospherics/pipe/manifold/hidden, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/obj/structure/cable{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/turf/simulated/floor/tiled, +/area/hallway/primary/firstdeck/fore) +"adZ" = ( +/obj/machinery/atmospherics/pipe/simple/hidden{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/manifold4w/hidden/supply, +/obj/machinery/hologram/holopad, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/obj/structure/cable{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/obj/structure/cable{ + d1 = 2; + d2 = 8; + icon_state = "2-8" + }, +/obj/effect/floor_decal/industrial/outline/grey, +/obj/structure/cable{ + d1 = 1; + d2 = 8; + icon_state = "1-8" + }, +/turf/simulated/floor/tiled/monotile, +/area/hallway/primary/firstdeck/fore) +"aea" = ( +/obj/machinery/atmospherics/pipe/simple/hidden{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/manifold/hidden/supply, +/obj/structure/cable{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/turf/simulated/floor/tiled, +/area/hallway/primary/firstdeck/fore) +"aeb" = ( +/obj/machinery/atmospherics/pipe/simple/hidden{ + dir = 4 + }, +/obj/machinery/atmospherics/unary/vent_scrubber/on{ + dir = 1 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/obj/structure/cable{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/turf/simulated/floor/tiled, +/area/hallway/primary/firstdeck/fore) +"aec" = ( +/obj/machinery/atmospherics/pipe/simple/hidden{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/manifold/hidden/supply{ + dir = 1 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/obj/structure/cable{ + d1 = 2; + d2 = 8; + icon_state = "2-8" + }, +/obj/structure/cable{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/obj/machinery/hologram/holopad, +/obj/effect/floor_decal/industrial/outline/grey, +/turf/simulated/floor/tiled, +/area/hallway/primary/firstdeck/fore) +"aed" = ( +/obj/machinery/atmospherics/pipe/simple/hidden{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/obj/structure/cable{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/obj/machinery/light, +/turf/simulated/floor/tiled, +/area/hallway/primary/firstdeck/fore) +"aee" = ( +/obj/machinery/atmospherics/pipe/simple/hidden{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/manifold/hidden/supply, +/obj/structure/cable{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/obj/machinery/camera/network/first_deck{ + c_tag = "First Deck Fore Hallway - Two"; + dir = 1 + }, +/turf/simulated/floor/tiled, +/area/hallway/primary/firstdeck/fore) +"aef" = ( +/obj/machinery/atmospherics/pipe/simple/hidden{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 5 + }, +/obj/structure/cable{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/obj/effect/floor_decal/steeldecal/steel_decals4, +/obj/effect/floor_decal/steeldecal/steel_decals4{ + dir = 10 + }, +/turf/simulated/floor/tiled, +/area/hallway/primary/firstdeck/fore) +"aeg" = ( +/obj/machinery/door/firedoor/border_only, +/obj/machinery/atmospherics/pipe/simple/hidden{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, +/obj/structure/cable{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/obj/machinery/door/airlock/maintenance{ + req_access = null; + req_one_access = list(12,67) + }, +/turf/simulated/floor/plating, +/area/maintenance/firstdeck/forestarboard) +"aeh" = ( +/obj/machinery/atmospherics/pipe/simple/hidden{ + dir = 9; + icon_state = "intact" + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, +/obj/structure/cable{ + d1 = 2; + d2 = 8; + icon_state = "2-8" + }, +/obj/structure/catwalk, +/turf/simulated/floor/plating, +/area/maintenance/firstdeck/forestarboard) +"aei" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 10 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 10 + }, +/obj/structure/catwalk, +/turf/simulated/floor/plating, +/area/maintenance/firstdeck/forestarboard) +"aej" = ( +/obj/machinery/door/firedoor/border_only, +/obj/effect/wingrille_spawn/reinforced, +/turf/simulated/floor/plating, +/area/maintenance/firstdeck/forestarboard) +"aek" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/obj/effect/floor_decal/industrial/warning/corner{ + dir = 8 + }, +/turf/simulated/floor/plating, +/area/maintenance/firstdeck/foreport) +"ael" = ( +/obj/machinery/atmospherics/pipe/simple/hidden, +/obj/structure/cable{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/obj/structure/catwalk, +/turf/simulated/floor/plating, +/area/maintenance/firstdeck/foreport) +"aem" = ( +/turf/simulated/wall/r_wall, +/area/construction/firstdeck/construction5) +"aen" = ( +/turf/simulated/wall, +/area/construction/firstdeck/construction5) +"aeo" = ( +/obj/machinery/door/firedoor/border_only, +/obj/structure/cable{ + d1 = 1; + d2 = 2; + icon_state = "1-2"; + pixel_y = 0 + }, +/obj/machinery/door/airlock/engineering{ + name = "Construction Area"; + req_access = list(32) + }, +/turf/simulated/floor/tiled, +/area/construction/firstdeck/construction5) +"aep" = ( +/obj/machinery/vending/fitness, +/turf/simulated/floor/tiled, +/area/hallway/primary/firstdeck/fore) +"aeq" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/obj/structure/cable{ + d1 = 1; + d2 = 2; + icon_state = "1-2"; + pixel_y = 0 + }, +/obj/effect/floor_decal/steeldecal/steel_decals4{ + dir = 8 + }, +/obj/effect/floor_decal/steeldecal/steel_decals4{ + dir = 5 + }, +/turf/simulated/floor/tiled, +/area/hallway/primary/firstdeck/fore) +"aer" = ( +/obj/effect/floor_decal/borderfloor{ + dir = 10 + }, +/obj/effect/floor_decal/corner/green/border{ + dir = 10 + }, +/obj/effect/floor_decal/borderfloor/corner2{ + dir = 8 + }, +/obj/effect/floor_decal/corner/green/bordercorner2{ + dir = 8 + }, +/turf/simulated/floor/tiled, +/area/hallway/primary/firstdeck/fore) +"aes" = ( +/obj/effect/floor_decal/borderfloor/corner{ + dir = 8 + }, +/obj/effect/floor_decal/corner/green/bordercorner{ + dir = 8 + }, +/turf/simulated/floor/tiled, +/area/hallway/primary/firstdeck/fore) +"aet" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/obj/structure/cable{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/turf/simulated/floor/tiled/monotile, +/area/hallway/primary/firstdeck/fore) +"aeu" = ( +/obj/effect/floor_decal/borderfloor/corner, +/obj/effect/floor_decal/corner/green/bordercorner, +/turf/simulated/floor/tiled, +/area/hallway/primary/firstdeck/fore) +"aev" = ( +/obj/effect/floor_decal/borderfloor{ + dir = 6 + }, +/obj/effect/floor_decal/corner/green/border{ + dir = 6 + }, +/obj/effect/floor_decal/borderfloor/corner2{ + dir = 6 + }, +/obj/effect/floor_decal/corner/green/bordercorner2{ + dir = 6 + }, +/turf/simulated/floor/tiled, +/area/hallway/primary/firstdeck/fore) +"aew" = ( +/obj/structure/sign/directions/bridge{ + dir = 1; + pixel_y = 10 + }, +/obj/structure/sign/directions/science{ + dir = 1 + }, +/obj/structure/sign/directions/medical{ + dir = 1; + pixel_y = -10 + }, +/turf/simulated/wall/r_wall, +/area/hallway/primary/firstdeck/fore) +"aex" = ( +/obj/structure/sign/directions/engineering{ + dir = 1; + pixel_y = 10 + }, +/obj/structure/sign/directions/cargo{ + dir = 1 + }, +/obj/structure/sign/directions/security{ + dir = 1; + pixel_y = -10 + }, +/turf/simulated/wall/r_wall, +/area/hallway/primary/firstdeck/fore) +"aey" = ( +/obj/structure/cable{ + icon_state = "0-4"; + d2 = 4 + }, +/obj/machinery/door/firedoor/border_only, +/obj/effect/wingrille_spawn/reinforced, +/turf/simulated/floor/plating, +/area/hallway/primary/firstdeck/fore) +"aez" = ( +/obj/structure/cable{ + d2 = 8; + icon_state = "0-8" + }, +/obj/structure/cable{ + icon_state = "0-4"; + d2 = 4 + }, +/obj/machinery/door/firedoor/border_only, +/obj/effect/wingrille_spawn/reinforced, +/turf/simulated/floor/plating, +/area/hallway/primary/firstdeck/fore) +"aeA" = ( +/obj/structure/cable{ + d2 = 8; + icon_state = "0-8" + }, +/obj/structure/cable{ + icon_state = "0-4"; + d2 = 4 + }, +/obj/structure/cable{ + d2 = 2; + icon_state = "0-2"; + pixel_y = 0 + }, +/obj/machinery/door/firedoor/border_only, +/obj/effect/wingrille_spawn/reinforced, +/turf/simulated/floor/plating, +/area/hallway/primary/firstdeck/fore) +"aeB" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/structure/cable{ + d1 = 1; + d2 = 2; + icon_state = "1-2"; + pixel_y = 0 + }, +/obj/structure/cable{ + d1 = 1; + d2 = 8; + icon_state = "1-8" + }, +/obj/structure/cable{ + d1 = 1; + d2 = 4; + icon_state = "1-4" + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/turf/simulated/floor/tiled/dark, +/area/hallway/primary/firstdeck/fore) +"aeC" = ( +/obj/structure/cable{ + d2 = 8; + icon_state = "0-8" + }, +/obj/machinery/door/firedoor/border_only, +/obj/effect/wingrille_spawn/reinforced, +/turf/simulated/floor/plating, +/area/hallway/primary/firstdeck/fore) +"aeD" = ( +/obj/structure/cable{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/obj/structure/catwalk, +/turf/simulated/floor/plating, +/area/maintenance/firstdeck/forestarboard) +"aeE" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/obj/structure/catwalk, +/turf/simulated/floor/plating, +/area/maintenance/firstdeck/forestarboard) +"aeF" = ( +/turf/simulated/wall/r_wall, +/area/hangar/one) +"aeG" = ( +/obj/machinery/atmospherics/portables_connector, +/obj/machinery/portable_atmospherics/canister/air/airlock, +/obj/effect/floor_decal/industrial/outline/yellow, +/turf/simulated/floor/plating, +/area/maintenance/firstdeck/foreport) +"aeH" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/obj/effect/floor_decal/industrial/warning{ + icon_state = "warning"; + dir = 8 + }, +/turf/simulated/floor/plating, +/area/maintenance/firstdeck/foreport) +"aeI" = ( +/obj/machinery/atmospherics/pipe/simple/hidden, +/obj/structure/cable{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/obj/structure/table/rack, +/obj/random/maintenance/clean, +/obj/random/maintenance/clean, +/obj/random/maintenance/cargo, +/obj/random/maintenance/cargo, +/obj/structure/catwalk, +/turf/simulated/floor/plating, +/area/maintenance/firstdeck/foreport) +"aeJ" = ( +/obj/structure/closet/crate/engineering, +/obj/random/maintenance/engineering, +/obj/random/maintenance/engineering, +/obj/random/tool, +/obj/random/tool, +/obj/random/tech_supply, +/obj/random/tech_supply, +/obj/random/toolbox, +/turf/simulated/floor/tiled, +/area/construction/firstdeck/construction5) +"aeK" = ( +/obj/structure/cable{ + icon_state = "0-4"; + d2 = 4 + }, +/obj/machinery/power/apc{ + dir = 1; + name = "north bump"; + pixel_x = 0; + pixel_y = 24 + }, +/obj/machinery/light_switch{ + pixel_x = 11; + pixel_y = 24 + }, +/turf/simulated/floor/tiled, +/area/construction/firstdeck/construction5) +"aeL" = ( +/obj/structure/cable{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/turf/simulated/floor/tiled, +/area/construction/firstdeck/construction5) +"aeM" = ( +/obj/structure/cable{ + d1 = 1; + d2 = 8; + icon_state = "1-8" + }, +/obj/effect/floor_decal/steeldecal/steel_decals4{ + dir = 4 + }, +/obj/effect/floor_decal/steeldecal/steel_decals4{ + dir = 9 + }, +/turf/simulated/floor/tiled, +/area/construction/firstdeck/construction5) +"aeN" = ( +/obj/structure/reagent_dispensers/watertank, +/obj/effect/floor_decal/rust, +/turf/simulated/floor/plating, +/area/construction/firstdeck/construction5) +"aeO" = ( +/obj/structure/reagent_dispensers/fueltank, +/obj/item/device/radio/intercom{ + dir = 1; + name = "Station Intercom (General)"; + pixel_y = 21 + }, +/obj/effect/floor_decal/rust, +/turf/simulated/floor/plating, +/area/construction/firstdeck/construction5) +"aeP" = ( +/turf/simulated/wall, +/area/crew_quarters/toilet/firstdeck) +"aeQ" = ( +/obj/machinery/door/firedoor/border_only, +/obj/machinery/door/airlock{ + name = "Unisex Restrooms" + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/obj/structure/cable{ + d1 = 1; + d2 = 2; + icon_state = "1-2"; + pixel_y = 0 + }, +/turf/simulated/floor/tiled/steel_grid, +/area/crew_quarters/toilet/firstdeck) +"aeR" = ( +/turf/simulated/wall/r_wall, +/area/crew_quarters/toilet/firstdeck) +"aeS" = ( +/obj/machinery/atmospherics/unary/vent_pump/on{ + dir = 4 + }, +/obj/machinery/light{ + icon_state = "tube1"; + dir = 8 + }, +/obj/effect/floor_decal/borderfloor{ + dir = 8 + }, +/obj/effect/floor_decal/corner/green/border{ + dir = 8 + }, +/turf/simulated/floor/tiled, +/area/hallway/primary/firstdeck/fore) +"aeT" = ( +/obj/machinery/atmospherics/pipe/manifold/hidden/supply{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/obj/structure/cable{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/turf/simulated/floor/tiled/monotile, +/area/hallway/primary/firstdeck/fore) +"aeU" = ( +/obj/structure/extinguisher_cabinet{ + pixel_x = 25 + }, +/turf/simulated/floor/tiled, +/area/hallway/primary/firstdeck/fore) +"aeV" = ( +/obj/structure/cable, +/obj/machinery/door/firedoor/border_only, +/obj/effect/wingrille_spawn/reinforced, +/turf/simulated/floor/plating, +/area/hallway/primary/firstdeck/fore) +"aeW" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/structure/cable{ + d1 = 1; + d2 = 2; + icon_state = "1-2"; + pixel_y = 0 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/turf/simulated/floor/tiled/dark, +/area/hallway/primary/firstdeck/fore) +"aeX" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/turf/simulated/floor/plating, +/area/maintenance/firstdeck/forestarboard) +"aeY" = ( +/obj/structure/ore_box, +/turf/simulated/floor/plating, +/area/maintenance/firstdeck/forestarboard) +"aeZ" = ( +/turf/simulated/wall/r_wall, +/area/hangar/three) +"afa" = ( +/obj/effect/floor_decal/steeldecal/steel_decals5, +/turf/simulated/floor/tiled, +/area/hangar/one) +"afb" = ( +/obj/effect/floor_decal/borderfloorblack/corner, +/obj/effect/floor_decal/industrial/danger/corner, +/turf/simulated/floor/tiled, +/area/hangar/one) +"afc" = ( +/obj/effect/floor_decal/borderfloorblack, +/obj/effect/floor_decal/industrial/danger, +/turf/simulated/floor/tiled, +/area/hangar/one) +"afd" = ( +/obj/effect/floor_decal/borderfloorblack/corner{ + dir = 8 + }, +/obj/effect/floor_decal/industrial/danger/corner{ + dir = 1 + }, +/turf/simulated/floor/tiled, +/area/hangar/one) +"afe" = ( +/obj/machinery/atmospherics/portables_connector{ + dir = 4 + }, +/obj/machinery/portable_atmospherics/canister/air/airlock, +/obj/effect/floor_decal/industrial/outline/yellow, +/turf/simulated/floor/plating, +/area/maintenance/firstdeck/foreport) +"aff" = ( +/obj/effect/landmark{ + name = "carpspawn" + }, +/turf/space, +/area/shuttle/syndicate_elite/station) +"afg" = ( +/obj/machinery/atmospherics/pipe/simple/hidden{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/obj/effect/floor_decal/industrial/warning/corner{ + dir = 1 + }, +/turf/simulated/floor/plating, +/area/maintenance/firstdeck/foreport) +"afh" = ( +/obj/machinery/atmospherics/pipe/manifold/hidden{ + dir = 4; + icon_state = "map" + }, +/obj/structure/cable{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/obj/structure/table/rack, +/obj/random/maintenance/clean, +/obj/random/maintenance/clean, +/obj/random/maintenance/cargo, +/obj/random/maintenance/cargo, +/turf/simulated/floor/plating, +/area/maintenance/firstdeck/foreport) +"afi" = ( +/obj/structure/closet/crate/engineering, +/obj/fiftyspawner/steel, +/obj/fiftyspawner/glass, +/turf/simulated/floor/plating, +/area/construction/firstdeck/construction5) +"afj" = ( +/turf/simulated/floor/tiled, +/area/construction/firstdeck/construction5) +"afk" = ( +/turf/simulated/floor/plating, +/area/construction/firstdeck/construction5) +"afl" = ( +/obj/effect/floor_decal/rust, +/turf/simulated/floor/plating, +/area/construction/firstdeck/construction5) +"afm" = ( +/obj/machinery/shower{ + dir = 4; + icon_state = "shower"; + pixel_x = 5; + pixel_y = -1 + }, +/obj/structure/curtain/open/shower, +/turf/simulated/floor/tiled/freezer, +/area/crew_quarters/toilet/firstdeck) +"afn" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/obj/structure/cable{ + d1 = 1; + d2 = 2; + icon_state = "1-2"; + pixel_y = 0 + }, +/obj/effect/floor_decal/steeldecal/steel_decals4{ + dir = 4 + }, +/obj/effect/floor_decal/steeldecal/steel_decals4{ + dir = 9 + }, +/turf/simulated/floor/tiled/freezer, +/area/crew_quarters/toilet/firstdeck) +"afo" = ( +/obj/structure/mirror{ + pixel_x = 0; + pixel_y = 32 + }, +/obj/structure/sink{ + pixel_y = 16 + }, +/turf/simulated/floor/tiled/freezer, +/area/crew_quarters/toilet/firstdeck) +"afp" = ( +/obj/structure/mirror{ + pixel_x = 0; + pixel_y = 32 + }, +/obj/structure/sink{ + pixel_y = 16 + }, +/obj/item/device/radio/intercom{ + dir = 4; + name = "Station Intercom (General)"; + pixel_x = 21 + }, +/turf/simulated/floor/tiled/freezer, +/area/crew_quarters/toilet/firstdeck) +"afq" = ( +/obj/machinery/power/apc{ + dir = 8; + name = "west bump"; + pixel_x = -24 + }, +/obj/structure/cable{ + icon_state = "0-4"; + d2 = 4 + }, +/obj/effect/floor_decal/borderfloor{ + dir = 8 + }, +/obj/effect/floor_decal/corner/green/border{ + dir = 8 + }, +/obj/effect/floor_decal/borderfloor/corner2{ + dir = 10 + }, +/obj/effect/floor_decal/corner/green/bordercorner2{ + dir = 10 + }, +/turf/simulated/floor/tiled, +/area/hallway/primary/firstdeck/fore) +"afr" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/obj/structure/cable{ + d1 = 1; + d2 = 8; + icon_state = "1-8" + }, +/turf/simulated/floor/tiled/monotile, +/area/hallway/primary/firstdeck/fore) +"afs" = ( +/obj/machinery/alarm{ + dir = 8; + icon_state = "alarm0"; + pixel_x = 22 + }, +/obj/effect/floor_decal/borderfloor{ + dir = 4 + }, +/obj/effect/floor_decal/corner/green/border{ + dir = 4 + }, +/obj/effect/floor_decal/borderfloor/corner2{ + dir = 5 + }, +/obj/effect/floor_decal/corner/green/bordercorner2{ + dir = 5 + }, +/turf/simulated/floor/tiled, +/area/hallway/primary/firstdeck/fore) +"aft" = ( +/turf/simulated/wall/r_wall, +/area/security/nuke_storage) +"afu" = ( +/obj/machinery/door/airlock/vault/bolted{ + req_access = list(53) + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/structure/cable{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/turf/simulated/floor/tiled/dark, +/area/security/nuke_storage) +"afv" = ( +/obj/structure/cable{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/turf/simulated/floor/plating, +/area/maintenance/firstdeck/forestarboard) +"afw" = ( +/obj/structure/largecrate, +/obj/random/maintenance/cargo, +/obj/random/maintenance/cargo, +/obj/random/maintenance/clean, +/obj/random/maintenance/clean, +/turf/simulated/floor/plating, +/area/maintenance/firstdeck/forestarboard) +"afx" = ( +/obj/item/stack/tile/floor, +/obj/effect/floor_decal/rust, +/turf/simulated/floor/plating, +/area/hangar/three) +"afy" = ( +/obj/effect/floor_decal/borderfloorblack/corner, +/obj/effect/floor_decal/industrial/danger/corner, +/obj/effect/floor_decal/rust/color_rustedcorner, +/obj/effect/floor_decal/rust, +/turf/simulated/floor/tiled/steel, +/area/hangar/three) +"afz" = ( +/obj/effect/floor_decal/borderfloorblack, +/obj/effect/floor_decal/industrial/danger, +/turf/simulated/floor/tiled, +/area/hangar/three) +"afA" = ( +/obj/effect/floor_decal/borderfloorblack/corner{ + dir = 8 + }, +/obj/effect/floor_decal/industrial/danger/corner{ + dir = 1 + }, +/turf/simulated/floor/tiled/steel, +/area/hangar/three) +"afB" = ( +/obj/effect/floor_decal/steeldecal/steel_decals5, +/turf/simulated/floor/tiled/steel, +/area/hangar/three) +"afC" = ( +/obj/effect/floor_decal/borderfloor{ + dir = 8 + }, +/obj/effect/floor_decal/corner/green/border{ + dir = 8 + }, +/turf/simulated/floor/tiled, +/area/hangar/one) +"afD" = ( +/turf/simulated/floor/tiled/monotile, +/area/hangar/one) +"afE" = ( +/obj/effect/floor_decal/borderfloorblack{ + dir = 4 + }, +/obj/effect/floor_decal/industrial/danger{ + dir = 4 + }, +/turf/simulated/floor/tiled, +/area/hangar/one) +"afF" = ( +/turf/simulated/floor/reinforced, +/area/hangar/one) +"afG" = ( +/turf/simulated/shuttle/wall/voidcraft/blue, +/area/shuttle/shuttle1/start) +"afH" = ( +/obj/structure/grille, +/obj/structure/window/reinforced/full, +/obj/structure/window/reinforced{ + dir = 1 + }, +/obj/structure/window/reinforced{ + dir = 8 + }, +/obj/structure/window/reinforced, +/turf/simulated/shuttle/plating, +/area/shuttle/shuttle1/start) +"afI" = ( +/obj/structure/grille, +/obj/structure/window/reinforced/full, +/obj/structure/window/reinforced{ + dir = 1 + }, +/obj/structure/window/reinforced, +/turf/simulated/shuttle/plating, +/area/shuttle/shuttle1/start) +"afJ" = ( +/obj/structure/grille, +/obj/structure/window/reinforced/full, +/obj/structure/window/reinforced{ + dir = 1 + }, +/obj/structure/window/reinforced, +/obj/structure/window/reinforced{ + dir = 4; + health = 1e+006 + }, +/turf/simulated/shuttle/plating, +/area/shuttle/shuttle1/start) +"afK" = ( +/obj/effect/floor_decal/borderfloorblack{ + dir = 8 + }, +/obj/effect/floor_decal/industrial/danger{ + dir = 8 + }, +/turf/simulated/floor/tiled, +/area/hangar/one) +"afL" = ( +/turf/simulated/floor/tiled, +/area/hangar/one) +"afM" = ( +/turf/simulated/floor/plating, +/area/maintenance/firstdeck/foreport) +"afN" = ( +/obj/effect/floor_decal/industrial/warning{ + dir = 8 + }, +/turf/simulated/floor/plating, +/area/maintenance/firstdeck/foreport) +"afO" = ( +/obj/effect/floor_decal/industrial/warning/corner{ + icon_state = "warningcorner"; + dir = 4 + }, +/turf/simulated/floor/plating, +/area/maintenance/firstdeck/foreport) +"afP" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 6 + }, +/obj/effect/floor_decal/industrial/warning{ + icon_state = "warning"; + dir = 1 + }, +/turf/simulated/floor/plating, +/area/maintenance/firstdeck/foreport) +"afQ" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/universal{ + dir = 4 + }, +/obj/effect/floor_decal/industrial/warning/corner{ + dir = 1 + }, +/turf/simulated/floor/plating, +/area/maintenance/firstdeck/foreport) +"afR" = ( +/obj/machinery/atmospherics/binary/pump/on{ + dir = 4; + target_pressure = 200 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/turf/simulated/floor/plating, +/area/maintenance/firstdeck/foreport) +"afS" = ( +/obj/machinery/atmospherics/pipe/simple/hidden{ + dir = 9; + icon_state = "intact" + }, +/obj/structure/cable{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/obj/structure/closet/crate, +/obj/item/weapon/toy/xmas_cracker, +/obj/random/maintenance/cargo, +/obj/random/maintenance/cargo, +/obj/random/maintenance/engineering, +/obj/random/maintenance/clean, +/turf/simulated/floor/plating, +/area/maintenance/firstdeck/foreport) +"afT" = ( +/obj/machinery/alarm{ + dir = 4; + icon_state = "alarm0"; + pixel_x = -22 + }, +/obj/item/device/paicard, +/turf/simulated/floor/plating, +/area/construction/firstdeck/construction5) +"afU" = ( +/obj/effect/decal/cleanable/blood/oil/streak{ + amount = 0 + }, +/obj/item/weapon/tool/wirecutters, +/turf/simulated/floor/tiled, +/area/construction/firstdeck/construction5) +"afV" = ( +/obj/machinery/light{ + icon_state = "tube1"; + dir = 8 + }, +/obj/machinery/shower{ + dir = 4; + icon_state = "shower"; + pixel_x = 5; + pixel_y = -1 + }, +/obj/structure/curtain/open/shower, +/turf/simulated/floor/tiled/freezer, +/area/crew_quarters/toilet/firstdeck) +"afW" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 5 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/obj/structure/cable{ + d1 = 1; + d2 = 2; + icon_state = "1-2"; + pixel_y = 0 + }, +/turf/simulated/floor/tiled/freezer, +/area/crew_quarters/toilet/firstdeck) +"afX" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/turf/simulated/floor/tiled/freezer, +/area/crew_quarters/toilet/firstdeck) +"afY" = ( +/obj/machinery/atmospherics/unary/vent_pump/on{ + dir = 8 + }, +/obj/machinery/alarm{ + dir = 8; + icon_state = "alarm0"; + pixel_x = 22 + }, +/turf/simulated/floor/tiled/freezer, +/area/crew_quarters/toilet/firstdeck) +"afZ" = ( +/obj/item/device/radio/intercom{ + dir = 8; + name = "Station Intercom (General)"; + pixel_x = -21 + }, +/obj/effect/floor_decal/steeldecal/steel_decals4{ + dir = 5 + }, +/obj/effect/floor_decal/steeldecal/steel_decals4{ + dir = 8 + }, +/turf/simulated/floor/tiled, +/area/hallway/primary/firstdeck/fore) +"aga" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/obj/effect/floor_decal/borderfloor/corner2{ + dir = 9 + }, +/obj/effect/floor_decal/borderfloor/corner2, +/obj/effect/floor_decal/corner/green/bordercorner2, +/obj/effect/floor_decal/corner/green/bordercorner2{ + dir = 9 + }, +/turf/simulated/floor/tiled, +/area/hallway/primary/firstdeck/fore) +"agb" = ( +/obj/effect/floor_decal/steeldecal/steel_decals4{ + dir = 5 + }, +/obj/effect/floor_decal/steeldecal/steel_decals4{ + dir = 8 + }, +/turf/simulated/floor/tiled, +/area/hallway/primary/firstdeck/fore) +"agc" = ( +/obj/structure/safe, +/obj/item/clothing/under/color/yellow, +/obj/item/key, +/obj/item/toy/katana, +/obj/item/weapon/melee/chainofcommand, +/obj/item/weapon/disk/nuclear{ + name = "authentication disk" + }, +/obj/item/weapon/moneybag/vault, +/turf/simulated/floor/tiled/dark, +/area/security/nuke_storage) +"agd" = ( +/turf/simulated/floor/tiled/dark, +/area/security/nuke_storage) +"age" = ( +/obj/effect/landmark{ + name = "blobstart" + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/structure/cable{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/turf/simulated/floor/tiled/dark, +/area/security/nuke_storage) +"agf" = ( +/obj/machinery/firealarm{ + dir = 2; + pixel_y = 24 + }, +/turf/simulated/floor/tiled/dark, +/area/security/nuke_storage) +"agg" = ( +/obj/structure/filingcabinet/security{ + name = "Security Records" + }, +/turf/simulated/floor/tiled/dark, +/area/security/nuke_storage) +"agh" = ( +/turf/simulated/floor/plating, +/area/maintenance/firstdeck/forestarboard) +"agi" = ( +/obj/structure/closet/crate, +/obj/item/weapon/storage/backpack, +/obj/item/device/multitool, +/obj/item/device/multitool, +/obj/item/device/assembly/prox_sensor, +/obj/item/device/flashlight, +/obj/random/maintenance/engineering, +/obj/random/maintenance/engineering, +/obj/random/maintenance/cargo, +/obj/random/maintenance/cargo, +/turf/simulated/floor/plating, +/area/maintenance/firstdeck/forestarboard) +"agj" = ( +/obj/structure/closet/crate, +/obj/item/clothing/mask/gas, +/obj/item/device/flashlight, +/obj/item/device/flashlight, +/obj/effect/decal/cleanable/dirt, +/obj/random/maintenance/clean, +/obj/random/maintenance/engineering, +/obj/random/maintenance/clean, +/obj/item/toy/xmastree, +/turf/simulated/floor/plating, +/area/maintenance/firstdeck/forestarboard) +"agk" = ( +/obj/structure/table/rack, +/obj/item/weapon/flame/lighter/random, +/obj/random/maintenance/clean, +/obj/random/cigarettes, +/obj/random/maintenance/clean, +/obj/effect/floor_decal/industrial/warning{ + dir = 4 + }, +/obj/random/cash, +/turf/simulated/floor/plating, +/area/maintenance/firstdeck/forestarboard) +"agl" = ( +/obj/effect/floor_decal/rust, +/turf/simulated/floor/plating, +/area/hangar/three) +"agm" = ( +/turf/simulated/floor/reinforced, +/area/hangar/three) +"agn" = ( +/obj/effect/floor_decal/borderfloorblack{ + dir = 8 + }, +/obj/effect/floor_decal/industrial/danger{ + dir = 8 + }, +/turf/simulated/floor/tiled/steel, +/area/hangar/three) +"ago" = ( +/turf/simulated/floor/tiled/monotile, +/area/hangar/three) +"agp" = ( +/obj/effect/floor_decal/borderfloor{ + dir = 4 + }, +/obj/effect/floor_decal/corner/green/border{ + dir = 4 + }, +/turf/simulated/floor/tiled, +/area/hangar/three) +"agq" = ( +/turf/simulated/shuttle/wall/voidcraft/hard_corner, +/area/shuttle/shuttle1/start) +"agr" = ( +/obj/structure/flight_left, +/turf/simulated/shuttle/floor/black, +/area/shuttle/shuttle1/start) +"ags" = ( +/obj/machinery/computer/shuttle_control/web/shuttle1{ + my_doors = list("expshuttle1_door_L" = "Port Cargo", "shuttle1_outer" = "Airlock Outer", "shuttle1_inner" = "Airlock Inner", "expshuttle1_door_cargo" = "Cargo Hatch"); + my_sensors = list("shuttle1sens_exp" = "Exterior Environment", "shuttle1sens_exp_int" = "Cargo Area", "shuttle1sens_exp_psg" = "Passenger Area") + }, +/turf/simulated/shuttle/floor/black, +/area/shuttle/shuttle1/start) +"agt" = ( +/obj/structure/flight_right, +/obj/machinery/button/remote/airlock{ + desiredstate = 1; + dir = 8; + id = "expshuttle1_door_cargo"; + name = "Rear Hatch Control"; + pixel_x = 26; + pixel_y = 0; + req_access = list(67); + specialfunctions = 4 + }, +/turf/simulated/shuttle/floor/black, +/area/shuttle/shuttle1/start) +"agu" = ( +/obj/effect/floor_decal/steeldecal/steel_decals4, +/obj/effect/floor_decal/steeldecal/steel_decals4{ + dir = 10 + }, +/turf/simulated/floor/tiled, +/area/hangar/one) +"agv" = ( +/obj/machinery/door/firedoor/border_only, +/obj/machinery/door/airlock/maintenance{ + req_access = null; + req_one_access = list(12,67) + }, +/turf/simulated/floor/plating, +/area/hangar/one) +"agw" = ( +/obj/effect/floor_decal/industrial/warning{ + dir = 8 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 6 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 6 + }, +/obj/structure/cable{ + d1 = 2; + d2 = 4; + icon_state = "2-4" + }, +/turf/simulated/floor/plating, +/area/maintenance/firstdeck/foreport) +"agx" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, +/obj/structure/cable{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/obj/machinery/alarm{ + dir = 1; + pixel_y = -22 + }, +/turf/simulated/floor/plating, +/area/maintenance/firstdeck/foreport) +"agy" = ( +/obj/machinery/atmospherics/pipe/manifold/hidden/supply, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, +/obj/structure/cable{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/turf/simulated/floor/plating, +/area/maintenance/firstdeck/foreport) +"agz" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, +/obj/structure/cable{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/obj/structure/cable{ + d1 = 2; + d2 = 8; + icon_state = "2-8" + }, +/turf/simulated/floor/plating, +/area/maintenance/firstdeck/foreport) +"agA" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 9; + pixel_y = 0 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 9 + }, +/obj/structure/cable{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/turf/simulated/floor/plating, +/area/maintenance/firstdeck/foreport) +"agB" = ( +/obj/structure/cable{ + d1 = 1; + d2 = 8; + icon_state = "1-8" + }, +/obj/structure/closet/crate, +/obj/random/maintenance/clean, +/obj/random/maintenance/clean, +/obj/random/maintenance/clean, +/obj/random/maintenance/clean, +/turf/simulated/floor/plating, +/area/maintenance/firstdeck/foreport) +"agC" = ( +/obj/machinery/light{ + dir = 8 + }, +/turf/simulated/floor/plating, +/area/construction/firstdeck/construction5) +"agD" = ( +/obj/item/weapon/tool/crowbar, +/turf/simulated/floor/tiled, +/area/construction/firstdeck/construction5) +"agE" = ( +/obj/machinery/firealarm{ + dir = 4; + pixel_x = 24 + }, +/turf/simulated/floor/plating, +/area/construction/firstdeck/construction5) +"agF" = ( +/obj/machinery/firealarm{ + dir = 8; + pixel_x = -24 + }, +/obj/structure/undies_wardrobe, +/turf/simulated/floor/tiled/freezer, +/area/crew_quarters/toilet/firstdeck) +"agG" = ( +/obj/machinery/atmospherics/unary/vent_scrubber/on{ + dir = 1 + }, +/obj/structure/cable{ + d1 = 1; + d2 = 4; + icon_state = "1-4" + }, +/turf/simulated/floor/tiled/freezer, +/area/crew_quarters/toilet/firstdeck) +"agH" = ( +/obj/structure/table/standard, +/obj/item/weapon/towel, +/obj/item/weapon/towel, +/obj/random/soap, +/obj/random/soap, +/obj/machinery/power/apc{ + dir = 2; + name = "south bump"; + pixel_y = -24 + }, +/obj/machinery/light_switch{ + pixel_x = 12; + pixel_y = -24 + }, +/obj/structure/cable{ + d2 = 8; + icon_state = "0-8" + }, +/turf/simulated/floor/tiled/freezer, +/area/crew_quarters/toilet/firstdeck) +"agI" = ( +/turf/simulated/floor/tiled/freezer, +/area/crew_quarters/toilet/firstdeck) +"agJ" = ( +/obj/machinery/door/firedoor/border_only, +/obj/machinery/door/airlock/glass{ + name = "Central Access" + }, +/turf/simulated/floor/tiled/steel_grid, +/area/hallway/primary/firstdeck/fore) +"agK" = ( +/obj/effect/wingrille_spawn/reinforced, +/obj/machinery/door/firedoor/glass, +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/turf/simulated/floor/plating, +/area/hallway/primary/firstdeck/fore) +"agL" = ( +/obj/structure/closet/crate, +/obj/item/stack/material/gold, +/obj/item/weapon/storage/belt/champion, +/obj/item/stack/material/gold, +/obj/item/stack/material/gold, +/obj/item/stack/material/gold, +/obj/item/stack/material/gold, +/obj/item/stack/material/gold, +/obj/item/stack/material/silver, +/obj/item/stack/material/silver, +/obj/item/stack/material/silver, +/obj/item/stack/material/silver, +/obj/item/stack/material/silver, +/obj/item/stack/material/silver, +/turf/simulated/floor/tiled/dark, +/area/security/nuke_storage) +"agM" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/structure/cable{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/obj/machinery/hologram/holopad, +/turf/simulated/floor/tiled/dark, +/area/security/nuke_storage) +"agN" = ( +/obj/structure/filingcabinet/medical{ + desc = "A large cabinet with hard copy medical records."; + name = "Medical Records" + }, +/turf/simulated/floor/tiled/dark, +/area/security/nuke_storage) +"agO" = ( +/obj/structure/cable{ + d1 = 1; + d2 = 4; + icon_state = "1-4" + }, +/obj/structure/loot_pile/maint/technical, +/turf/simulated/floor/plating, +/area/maintenance/firstdeck/forestarboard) +"agP" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 5 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 5 + }, +/obj/structure/cable{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/turf/simulated/floor/plating, +/area/maintenance/firstdeck/forestarboard) +"agQ" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, +/obj/structure/cable{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/obj/structure/cable{ + d1 = 2; + d2 = 8; + icon_state = "2-8" + }, +/turf/simulated/floor/plating, +/area/maintenance/firstdeck/forestarboard) +"agR" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, +/obj/structure/cable{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/turf/simulated/floor/plating, +/area/maintenance/firstdeck/forestarboard) +"agS" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, +/obj/structure/cable{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/obj/machinery/alarm{ + dir = 1; + pixel_y = -22 + }, +/turf/simulated/floor/plating, +/area/maintenance/firstdeck/forestarboard) +"agT" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 10 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 10 + }, +/obj/structure/cable{ + d1 = 2; + d2 = 8; + icon_state = "2-8" + }, +/obj/effect/floor_decal/industrial/warning{ + dir = 4 + }, +/turf/simulated/floor/plating, +/area/maintenance/firstdeck/forestarboard) +"agU" = ( +/obj/machinery/door/firedoor/border_only, +/obj/effect/floor_decal/rust, +/obj/machinery/door/airlock/maintenance{ + req_access = null; + req_one_access = list(12,67) + }, +/turf/simulated/floor/plating, +/area/hangar/three) +"agV" = ( +/obj/effect/floor_decal/borderfloorblack{ + dir = 8 + }, +/obj/effect/floor_decal/industrial/danger{ + dir = 8 + }, +/turf/simulated/floor/tiled, +/area/hangar/three) +"agW" = ( +/obj/structure/grille, +/obj/structure/window/reinforced/full, +/obj/structure/window/reinforced{ + dir = 1 + }, +/obj/structure/window/reinforced{ + dir = 8 + }, +/obj/structure/window/reinforced, +/obj/structure/window/reinforced{ + dir = 4; + health = 1e+006 + }, +/turf/simulated/shuttle/plating, +/area/shuttle/shuttle1/start) +"agX" = ( +/obj/structure/table/reinforced, +/obj/machinery/light{ + dir = 1 + }, +/obj/item/device/radio/intercom{ + name = "Station Intercom (General)"; + pixel_y = -21 + }, +/obj/structure/closet/walllocker/emerglocker{ + pixel_x = 0; + pixel_y = 32 + }, +/turf/simulated/shuttle/floor/black, +/area/shuttle/shuttle1/start) +"agY" = ( +/obj/structure/bed/chair/comfy/blue{ + dir = 1 + }, +/turf/simulated/shuttle/floor/black, +/area/shuttle/shuttle1/start) +"agZ" = ( +/turf/simulated/shuttle/floor/black, +/area/shuttle/shuttle1/start) +"aha" = ( +/obj/structure/table/reinforced, +/obj/machinery/light{ + dir = 1 + }, +/obj/item/device/gps, +/obj/item/device/gps{ + pixel_x = 3; + pixel_y = 3 + }, +/turf/simulated/shuttle/floor/black, +/area/shuttle/shuttle1/start) +"ahb" = ( +/obj/effect/floor_decal/borderfloor/corner, +/obj/effect/floor_decal/corner/green/bordercorner, +/turf/simulated/floor/tiled, +/area/hangar/one) +"ahc" = ( +/turf/simulated/wall, +/area/hangar/one) +"ahd" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/obj/structure/cable{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/obj/effect/floor_decal/industrial/warning/corner{ + dir = 1 + }, +/turf/simulated/floor/plating, +/area/maintenance/firstdeck/foreport) +"ahe" = ( +/turf/simulated/wall, +/area/storage/emergency_storage/firstdeck/fp_emergency) +"ahf" = ( +/obj/structure/cable{ + d1 = 1; + d2 = 2; + icon_state = "1-2"; + pixel_y = 0 + }, +/obj/machinery/door/firedoor/border_only, +/obj/machinery/door/airlock/maintenance{ + req_access = null; + req_one_access = list(12,67) + }, +/turf/simulated/floor/plating, +/area/storage/emergency_storage/firstdeck/fp_emergency) +"ahg" = ( +/obj/structure/table/steel, +/obj/random/tech_supply, +/obj/random/tech_supply, +/obj/random/tech_supply, +/obj/random/maintenance/engineering, +/turf/simulated/floor/tiled, +/area/construction/firstdeck/construction5) +"ahh" = ( +/obj/item/device/flashlight, +/turf/simulated/floor/plating, +/area/construction/firstdeck/construction5) +"ahi" = ( +/obj/item/stack/cable_coil/random, +/turf/simulated/floor/plating, +/area/construction/firstdeck/construction5) +"ahj" = ( +/obj/machinery/door/airlock{ + name = "Unit 2" + }, +/turf/simulated/floor/tiled/freezer, +/area/crew_quarters/toilet/firstdeck) +"ahk" = ( +/obj/machinery/door/airlock{ + name = "Unit 1" + }, +/turf/simulated/floor/tiled/freezer, +/area/crew_quarters/toilet/firstdeck) +"ahl" = ( +/obj/effect/floor_decal/steeldecal/steel_decals4{ + dir = 9 + }, +/obj/effect/floor_decal/steeldecal/steel_decals4{ + dir = 4 + }, +/turf/simulated/floor/tiled, +/area/hallway/primary/firstdeck/fore) +"ahm" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/obj/effect/floor_decal/steeldecal/steel_decals5, +/obj/effect/floor_decal/borderfloor/corner2{ + dir = 1 + }, +/obj/effect/floor_decal/borderfloor/corner2{ + dir = 4 + }, +/obj/effect/floor_decal/corner/green/bordercorner2{ + dir = 1 + }, +/obj/effect/floor_decal/corner/green/bordercorner2{ + dir = 4 + }, +/turf/simulated/floor/tiled, +/area/hallway/primary/firstdeck/fore) +"ahn" = ( +/obj/machinery/atmospherics/unary/vent_pump/on{ + dir = 4 + }, +/obj/machinery/light{ + dir = 8 + }, +/turf/simulated/floor/tiled/dark, +/area/security/nuke_storage) +"aho" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/turf/simulated/floor/tiled/dark, +/area/security/nuke_storage) +"ahp" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 5 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 9 + }, +/obj/structure/cable{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/mob/living/simple_mob/animal/passive/mouse/brown/Tom, +/turf/simulated/floor/tiled/dark, +/area/security/nuke_storage) +"ahq" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, +/turf/simulated/floor/tiled/dark, +/area/security/nuke_storage) +"ahr" = ( +/obj/machinery/camera/network/command{ + c_tag = "COM - Vault"; + dir = 9 + }, +/obj/machinery/atmospherics/unary/vent_scrubber/on{ + dir = 8 + }, +/turf/simulated/floor/tiled/dark, +/area/security/nuke_storage) +"ahs" = ( +/turf/simulated/wall/r_wall, +/area/storage/emergency_storage/firstdeck/fs_emergency) +"aht" = ( +/turf/simulated/wall, +/area/storage/emergency_storage/firstdeck/fs_emergency) +"ahu" = ( +/obj/structure/cable{ + d1 = 1; + d2 = 2; + icon_state = "1-2"; + pixel_y = 0 + }, +/obj/machinery/door/firedoor/border_only, +/obj/machinery/door/airlock/maintenance{ + req_access = null; + req_one_access = list(12,67) + }, +/turf/simulated/floor/plating, +/area/storage/emergency_storage/firstdeck/fs_emergency) +"ahv" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/obj/structure/cable{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/obj/effect/floor_decal/industrial/warning/corner{ + dir = 4 + }, +/turf/simulated/floor/plating, +/area/maintenance/firstdeck/forestarboard) +"ahw" = ( +/obj/random/obstruction, +/turf/simulated/floor/plating, +/area/hangar/three) +"ahx" = ( +/obj/effect/floor_decal/rust, +/turf/simulated/floor/tiled/steel, +/area/hangar/three) +"ahy" = ( +/obj/item/stack/tile/floor, +/obj/effect/floor_decal/rust/part_rusted1, +/obj/effect/floor_decal/rust, +/turf/simulated/floor/plating, +/area/hangar/three) +"ahz" = ( +/obj/machinery/atmospherics/unary/vent_pump/on{ + dir = 4 + }, +/obj/machinery/ai_status_display{ + pixel_x = -32; + pixel_y = 0 + }, +/obj/effect/floor_decal/borderfloor{ + dir = 8 + }, +/obj/effect/floor_decal/corner/green/border{ + dir = 8 + }, +/turf/simulated/floor/tiled, +/area/hangar/one) +"ahA" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 10 + }, +/turf/simulated/floor/tiled/monotile, +/area/hangar/one) +"ahB" = ( +/turf/simulated/shuttle/wall/voidcraft, +/area/shuttle/shuttle1/start) +"ahC" = ( +/obj/machinery/door/airlock/glass_centcom{ + req_one_access = list(67) + }, +/turf/simulated/shuttle/floor/black, +/area/shuttle/shuttle1/start) +"ahD" = ( +/obj/machinery/shuttle_sensor{ + id_tag = "shuttle1sens_exp_psg" + }, +/turf/simulated/shuttle/wall/voidcraft, +/area/shuttle/shuttle1/start) +"ahE" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 6 + }, +/turf/simulated/floor/tiled/monotile, +/area/hangar/one) +"ahF" = ( +/obj/machinery/atmospherics/unary/vent_pump/on{ + dir = 8 + }, +/obj/machinery/status_display{ + density = 0; + layer = 4; + pixel_x = 32; + pixel_y = 0 + }, +/obj/effect/floor_decal/borderfloor{ + dir = 4 + }, +/obj/effect/floor_decal/corner/green/border{ + dir = 4 + }, +/turf/simulated/floor/tiled, +/area/hangar/one) +"ahG" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/obj/structure/cable{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/obj/machinery/door/firedoor/border_only, +/obj/machinery/door/airlock/maintenance{ + req_access = null; + req_one_access = list(12,67) + }, +/turf/simulated/floor/plating, +/area/maintenance/firstdeck/foreport) +"ahH" = ( +/obj/machinery/space_heater, +/obj/structure/catwalk, +/turf/simulated/floor/plating, +/area/storage/emergency_storage/firstdeck/fp_emergency) +"ahI" = ( +/obj/structure/cable{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/obj/structure/catwalk, +/turf/simulated/floor/plating, +/area/storage/emergency_storage/firstdeck/fp_emergency) +"ahJ" = ( +/turf/simulated/floor/plating, +/area/storage/emergency_storage/firstdeck/fp_emergency) +"ahK" = ( +/obj/structure/reagent_dispensers/watertank, +/turf/simulated/floor/plating, +/area/storage/emergency_storage/firstdeck/fp_emergency) +"ahL" = ( +/obj/structure/table/steel, +/obj/item/clothing/gloves/black, +/obj/item/device/multitool{ + pixel_x = 5 + }, +/obj/random/tech_supply, +/turf/simulated/floor/tiled, +/area/construction/firstdeck/construction5) +"ahM" = ( +/obj/structure/table/steel, +/obj/random/tech_supply, +/obj/random/tech_supply, +/turf/simulated/floor, +/area/construction/firstdeck/construction5) +"ahN" = ( +/obj/structure/table/steel, +/obj/random/tech_supply, +/obj/random/tech_supply, +/obj/random/tech_supply, +/obj/random/maintenance/engineering, +/turf/simulated/floor, +/area/construction/firstdeck/construction5) +"ahO" = ( +/obj/structure/table/steel, +/obj/item/weapon/tank/emergency/oxygen/engi, +/obj/random/tech_supply, +/obj/effect/landmark{ + name = "blobstart" + }, +/turf/simulated/floor, +/area/construction/firstdeck/construction5) +"ahP" = ( +/obj/item/stack/cable_coil/random, +/turf/simulated/floor/tiled, +/area/construction/firstdeck/construction5) +"ahQ" = ( +/obj/random/obstruction, +/turf/simulated/floor/plating, +/area/construction/firstdeck/construction5) +"ahR" = ( +/obj/machinery/recharge_station, +/obj/machinery/light/small, +/turf/simulated/floor/tiled/freezer, +/area/crew_quarters/toilet/firstdeck) +"ahS" = ( +/obj/structure/toilet{ + dir = 1 + }, +/obj/machinery/light/small, +/turf/simulated/floor/tiled/freezer, +/area/crew_quarters/toilet/firstdeck) +"ahT" = ( +/obj/machinery/status_display{ + density = 0; + layer = 4; + pixel_x = -32; + pixel_y = 0 + }, +/obj/effect/floor_decal/steeldecal/steel_decals5{ + dir = 4 + }, +/turf/simulated/floor/tiled, +/area/hallway/primary/firstdeck/fore) +"ahU" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/turf/simulated/floor/tiled/monotile, +/area/hallway/primary/firstdeck/fore) +"ahV" = ( +/obj/machinery/ai_status_display{ + pixel_x = 32; + pixel_y = 0 + }, +/obj/effect/floor_decal/steeldecal/steel_decals5{ + dir = 8 + }, +/turf/simulated/floor/tiled, +/area/hallway/primary/firstdeck/fore) +"ahW" = ( +/obj/item/weapon/coin/silver{ + pixel_x = 7; + pixel_y = 12 + }, +/obj/item/weapon/coin/silver{ + pixel_x = 12; + pixel_y = 7 + }, +/obj/item/weapon/coin/silver{ + pixel_x = 4; + pixel_y = 8 + }, +/obj/item/weapon/coin/silver{ + pixel_x = -6; + pixel_y = 5 + }, +/obj/item/weapon/coin/silver{ + pixel_x = 5; + pixel_y = -8 + }, +/obj/machinery/alarm{ + dir = 1; + pixel_y = -22 + }, +/obj/structure/closet/crate/secure{ + name = "Silver Crate"; + req_access = list(19) + }, +/obj/item/weapon/coin/silver{ + pixel_x = 4; + pixel_y = 8 + }, +/turf/simulated/floor/tiled/dark, +/area/security/nuke_storage) +"ahX" = ( +/obj/structure/closet/secure_closet/freezer/money, +/obj/machinery/power/apc{ + dir = 2; + name = "south bump"; + pixel_y = -24 + }, +/obj/item/weapon/storage/secure/briefcase/money{ + desc = "An sleek tidy briefcase."; + name = "secure briefcase" + }, +/obj/structure/cable, +/turf/simulated/floor/tiled/dark, +/area/security/nuke_storage) +"ahY" = ( +/obj/effect/landmark{ + name = "xeno_spawn"; + pixel_x = -1 + }, +/turf/simulated/floor/tiled/dark, +/area/security/nuke_storage) +"ahZ" = ( +/obj/item/weapon/coin/gold, +/obj/item/weapon/coin/gold, +/obj/item/weapon/coin/gold, +/obj/item/weapon/coin/gold, +/obj/item/weapon/coin/gold, +/obj/item/weapon/coin/gold, +/obj/structure/closet/crate/secure{ + name = "Gold Crate"; + req_access = list(19) + }, +/turf/simulated/floor/tiled/dark, +/area/security/nuke_storage) +"aia" = ( +/obj/structure/closet/emcloset, +/turf/simulated/floor/plating, +/area/storage/emergency_storage/firstdeck/fs_emergency) +"aib" = ( +/turf/simulated/floor/plating, +/area/storage/emergency_storage/firstdeck/fs_emergency) +"aic" = ( +/obj/structure/cable{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/obj/structure/catwalk, +/turf/simulated/floor/plating, +/area/storage/emergency_storage/firstdeck/fs_emergency) +"aid" = ( +/obj/machinery/space_heater, +/turf/simulated/floor/plating, +/area/storage/emergency_storage/firstdeck/fs_emergency) +"aie" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/obj/structure/cable{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/obj/machinery/door/firedoor/border_only, +/obj/machinery/door/airlock/maintenance{ + req_access = null; + req_one_access = list(12,67) + }, +/turf/simulated/floor/plating, +/area/maintenance/firstdeck/forestarboard) +"aif" = ( +/obj/machinery/atmospherics/unary/vent_pump/on{ + dir = 4 + }, +/obj/machinery/ai_status_display{ + pixel_x = -32; + pixel_y = 0 + }, +/obj/effect/floor_decal/rust, +/turf/simulated/floor/tiled, +/area/hangar/three) +"aig" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 10 + }, +/turf/simulated/floor/tiled/monotile, +/area/hangar/three) +"aih" = ( +/obj/effect/floor_decal/borderfloorblack{ + dir = 4 + }, +/obj/effect/floor_decal/industrial/danger{ + dir = 4 + }, +/obj/effect/floor_decal/rust/color_rusted{ + dir = 4 + }, +/turf/simulated/floor/tiled, +/area/hangar/three) +"aii" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 6 + }, +/turf/simulated/floor/tiled/monotile, +/area/hangar/three) +"aij" = ( +/obj/machinery/atmospherics/unary/vent_pump/on{ + dir = 8 + }, +/obj/machinery/status_display{ + density = 0; + layer = 4; + pixel_x = 32; + pixel_y = 0 + }, +/obj/effect/floor_decal/borderfloor{ + dir = 4 + }, +/obj/effect/floor_decal/corner/green/border{ + dir = 4 + }, +/turf/simulated/floor/tiled, +/area/hangar/three) +"aik" = ( +/turf/simulated/wall, +/area/hangar/three) +"ail" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/machinery/light/spot{ + dir = 8 + }, +/obj/machinery/camera/network/first_deck{ + c_tag = "Hangar One - Fore Port"; + dir = 4 + }, +/turf/simulated/floor/tiled/monotile, +/area/hangar/one) +"aim" = ( +/obj/structure/bed/chair/shuttle, +/turf/simulated/shuttle/floor/black, +/area/shuttle/shuttle1/start) +"ain" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/machinery/light/spot{ + dir = 4 + }, +/obj/machinery/camera/network/first_deck{ + c_tag = "Hangar One - Fore Starboard"; + dir = 8 + }, +/turf/simulated/floor/tiled/monotile, +/area/hangar/one) +"aio" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/obj/structure/cable{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/turf/simulated/floor/plating, +/area/maintenance/firstdeck/foreport) +"aip" = ( +/obj/machinery/light/small{ + dir = 8 + }, +/obj/structure/catwalk, +/turf/simulated/floor/plating, +/area/storage/emergency_storage/firstdeck/fp_emergency) +"aiq" = ( +/obj/structure/cable{ + d1 = 1; + d2 = 2; + icon_state = "1-2"; + pixel_y = 0 + }, +/obj/structure/catwalk, +/turf/simulated/floor/plating, +/area/storage/emergency_storage/firstdeck/fp_emergency) +"air" = ( +/obj/structure/ladder/up, +/obj/effect/floor_decal/industrial/outline/yellow, +/turf/simulated/floor/plating, +/area/storage/emergency_storage/firstdeck/fp_emergency) +"ais" = ( +/turf/simulated/wall/r_wall, +/area/storage/emergency_storage/firstdeck/fp_emergency) +"ait" = ( +/obj/machinery/door/firedoor/border_only, +/obj/effect/wingrille_spawn/reinforced, +/turf/simulated/floor/plating, +/area/construction/firstdeck/construction5) +"aiu" = ( +/obj/machinery/firealarm{ + dir = 8; + pixel_x = -24 + }, +/obj/effect/floor_decal/borderfloor/corner{ + dir = 8 + }, +/obj/effect/floor_decal/corner/green/bordercorner{ + dir = 8 + }, +/turf/simulated/floor/tiled, +/area/hallway/primary/firstdeck/fore) +"aiv" = ( +/obj/machinery/alarm{ + dir = 8; + icon_state = "alarm0"; + pixel_x = 22 + }, +/obj/machinery/camera/network/first_deck{ + c_tag = "First Deck - Fore Hallway One"; + dir = 8 + }, +/obj/effect/floor_decal/borderfloor/corner, +/obj/effect/floor_decal/corner/green/bordercorner, +/turf/simulated/floor/tiled, +/area/hallway/primary/firstdeck/fore) +"aiw" = ( +/obj/structure/cable{ + d1 = 1; + d2 = 2; + icon_state = "1-2"; + pixel_y = 0 + }, +/obj/structure/catwalk, +/turf/simulated/floor/plating, +/area/storage/emergency_storage/firstdeck/fs_emergency) +"aix" = ( +/obj/item/weapon/storage/box/lights/mixed, +/obj/structure/table/steel, +/obj/random/maintenance/clean, +/obj/random/maintenance/clean, +/obj/random/maintenance/research, +/obj/random/maintenance/research, +/obj/random/technology_scanner, +/obj/machinery/light/small{ + dir = 4 + }, +/turf/simulated/floor/plating, +/area/storage/emergency_storage/firstdeck/fs_emergency) +"aiy" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/obj/structure/cable{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/turf/simulated/floor/plating, +/area/maintenance/firstdeck/forestarboard) +"aiz" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/machinery/light/spot{ + dir = 8 + }, +/obj/machinery/camera/network/first_deck{ + c_tag = "Hangar Three - Fore Port"; + dir = 4 + }, +/turf/simulated/floor/tiled/monotile, +/area/hangar/three) +"aiA" = ( +/obj/effect/floor_decal/borderfloorblack{ + dir = 4 + }, +/obj/effect/floor_decal/industrial/danger{ + dir = 4 + }, +/turf/simulated/floor/tiled, +/area/hangar/three) +"aiB" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/machinery/light/spot{ + dir = 4 + }, +/obj/machinery/camera/network/first_deck{ + c_tag = "Hangar Three - Fore Starboard"; + dir = 8 + }, +/turf/simulated/floor/tiled/monotile, +/area/hangar/three) +"aiC" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/turf/simulated/floor/tiled/monotile, +/area/hangar/one) +"aiD" = ( +/turf/simulated/shuttle/wall/voidcraft/no_join, +/area/shuttle/shuttle1/start) +"aiE" = ( +/obj/machinery/light{ + dir = 8; + icon_state = "tube1"; + pixel_y = 0 + }, +/obj/structure/closet/walllocker/emerglocker{ + pixel_x = -32 + }, +/turf/simulated/shuttle/floor/black, +/area/shuttle/shuttle1/start) +"aiF" = ( +/obj/machinery/light{ + dir = 4; + icon_state = "tube1"; + pixel_x = 0 + }, +/obj/structure/closet/walllocker/emerglocker{ + pixel_x = 32 + }, +/turf/simulated/shuttle/floor/black, +/area/shuttle/shuttle1/start) +"aiG" = ( +/obj/effect/floor_decal/borderfloor{ + dir = 4 + }, +/obj/effect/floor_decal/corner/green/border{ + dir = 4 + }, +/turf/simulated/floor/tiled, +/area/hangar/one) +"aiH" = ( +/obj/machinery/door/firedoor/border_only, +/obj/machinery/door/airlock/maintenance{ + req_access = null; + req_one_access = list(12,67) + }, +/turf/simulated/floor/plating, +/area/storage/emergency_storage/firstdeck/fp_emergency) +"aiI" = ( +/obj/structure/catwalk, +/turf/simulated/floor/plating, +/area/storage/emergency_storage/firstdeck/fp_emergency) +"aiJ" = ( +/obj/machinery/alarm{ + dir = 8; + pixel_x = 22; + pixel_y = 0 + }, +/turf/simulated/floor/plating, +/area/storage/emergency_storage/firstdeck/fp_emergency) +"aiK" = ( +/obj/machinery/door/firedoor/border_only, +/obj/effect/wingrille_spawn/reinforced, +/turf/simulated/floor/plating, +/area/hallway/primary/firstdeck/fore) +"aiL" = ( +/obj/machinery/atmospherics/unary/vent_pump/on{ + dir = 4 + }, +/obj/structure/closet/emcloset, +/turf/simulated/floor/tiled/dark, +/area/hallway/primary/firstdeck/fore) +"aiM" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/obj/effect/floor_decal/borderfloor{ + dir = 8 + }, +/obj/effect/floor_decal/corner/green/border{ + dir = 8 + }, +/turf/simulated/floor/tiled, +/area/hallway/primary/firstdeck/fore) +"aiN" = ( +/obj/machinery/atmospherics/pipe/manifold/hidden/supply{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{ + dir = 8 + }, +/turf/simulated/floor/tiled/monotile, +/area/hallway/primary/firstdeck/fore) +"aiO" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, +/obj/effect/floor_decal/borderfloor{ + dir = 4 + }, +/obj/effect/floor_decal/corner/green/border{ + dir = 4 + }, +/turf/simulated/floor/tiled, +/area/hallway/primary/firstdeck/fore) +"aiP" = ( +/obj/machinery/atmospherics/unary/vent_scrubber/on{ + dir = 8 + }, +/obj/structure/flora/pottedplant/drooping, +/turf/simulated/floor/tiled/dark, +/area/hallway/primary/firstdeck/fore) +"aiQ" = ( +/obj/machinery/alarm{ + dir = 4; + icon_state = "alarm0"; + pixel_x = -22 + }, +/turf/simulated/floor/plating, +/area/storage/emergency_storage/firstdeck/fs_emergency) +"aiR" = ( +/obj/machinery/door/firedoor/border_only, +/obj/machinery/door/airlock/maintenance{ + req_access = null; + req_one_access = list(12,67) + }, +/turf/simulated/floor/plating, +/area/storage/emergency_storage/firstdeck/fs_emergency) +"aiS" = ( +/obj/effect/floor_decal/borderfloor{ + dir = 8 + }, +/obj/effect/floor_decal/corner/green/border{ + dir = 8 + }, +/turf/simulated/floor/tiled, +/area/hangar/three) +"aiT" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/turf/simulated/floor/tiled/monotile, +/area/hangar/three) +"aiU" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/turf/simulated/floor/tiled/monofloor{ + dir = 1 + }, +/area/hangar/one) +"aiV" = ( +/obj/machinery/sleeper{ + dir = 8 + }, +/turf/simulated/shuttle/floor/black, +/area/shuttle/shuttle1/start) +"aiW" = ( +/obj/machinery/sleep_console, +/turf/simulated/shuttle/floor/black, +/area/shuttle/shuttle1/start) +"aiX" = ( +/obj/structure/bed/chair/shuttle{ + dir = 1 + }, +/obj/item/device/radio/intercom{ + name = "Station Intercom (General)"; + pixel_y = -21 + }, +/turf/simulated/shuttle/floor/black, +/area/shuttle/shuttle1/start) +"aiY" = ( +/obj/structure/bed/chair/shuttle{ + dir = 1 + }, +/turf/simulated/shuttle/floor/black, +/area/shuttle/shuttle1/start) +"aiZ" = ( +/obj/item/device/t_scanner, +/obj/item/weapon/storage/box/lights/mixed, +/obj/item/weapon/storage/box/lights/mixed, +/obj/structure/table/steel, +/obj/random/maintenance/engineering, +/obj/random/maintenance/clean, +/obj/random/maintenance/clean, +/obj/structure/catwalk, +/turf/simulated/floor/plating, +/area/storage/emergency_storage/firstdeck/fp_emergency) +"aja" = ( +/obj/structure/cable, +/obj/machinery/power/apc{ + dir = 2; + name = "south bump"; + pixel_y = -24 + }, +/obj/structure/catwalk, +/turf/simulated/floor/plating, +/area/storage/emergency_storage/firstdeck/fp_emergency) +"ajb" = ( +/obj/machinery/light{ + icon_state = "tube1"; + dir = 8 + }, +/turf/simulated/floor/tiled/dark, +/area/hallway/primary/firstdeck/fore) +"ajc" = ( +/obj/effect/floor_decal/borderfloor{ + dir = 8 + }, +/obj/effect/floor_decal/corner/green/border{ + dir = 8 + }, +/turf/simulated/floor/tiled, +/area/hallway/primary/firstdeck/fore) +"ajd" = ( +/obj/effect/floor_decal/borderfloor{ + dir = 4 + }, +/obj/effect/floor_decal/corner/green/border{ + dir = 4 + }, +/turf/simulated/floor/tiled, +/area/hallway/primary/firstdeck/fore) +"aje" = ( +/obj/structure/cable, +/obj/machinery/power/apc{ + dir = 2; + name = "south bump"; + pixel_y = -24 + }, +/obj/structure/catwalk, +/turf/simulated/floor/plating, +/area/storage/emergency_storage/firstdeck/fs_emergency) +"ajf" = ( +/obj/structure/ladder/up, +/obj/effect/floor_decal/industrial/outline/yellow, +/turf/simulated/floor/plating, +/area/storage/emergency_storage/firstdeck/fs_emergency) +"ajg" = ( +/obj/structure/catwalk, +/turf/simulated/floor/plating, +/area/maintenance/firstdeck/forestarboard) +"ajh" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/turf/simulated/floor/tiled/monofloor{ + dir = 1 + }, +/area/hangar/three) +"aji" = ( +/obj/machinery/atmospherics/unary/vent_scrubber/on{ + dir = 4 + }, +/obj/effect/floor_decal/borderfloor{ + dir = 8 + }, +/obj/effect/floor_decal/corner/green/border{ + dir = 8 + }, +/turf/simulated/floor/tiled, +/area/hangar/one) +"ajj" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 10 + }, +/turf/simulated/floor/tiled/monofloor, +/area/hangar/one) +"ajk" = ( +/obj/machinery/door/airlock/centcom, +/turf/simulated/shuttle/floor/black, +/area/shuttle/shuttle1/start) +"ajl" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 6 + }, +/turf/simulated/floor/tiled/monofloor, +/area/hangar/one) +"ajm" = ( +/obj/machinery/atmospherics/unary/vent_scrubber/on{ + dir = 8 + }, +/obj/effect/floor_decal/borderfloor{ + dir = 4 + }, +/obj/effect/floor_decal/corner/green/border{ + dir = 4 + }, +/turf/simulated/floor/tiled, +/area/hangar/one) +"ajn" = ( +/obj/structure/reagent_dispensers/watertank, +/turf/simulated/floor/plating, +/area/maintenance/firstdeck/foreport) +"ajo" = ( +/turf/simulated/wall/r_wall, +/area/hallway/primary/firstdeck/fpcenter) +"ajp" = ( +/obj/machinery/door/firedoor/border_only, +/obj/effect/wingrille_spawn/reinforced, +/turf/simulated/floor/plating, +/area/hallway/primary/firstdeck/fpcenter) +"ajq" = ( +/obj/structure/sign/directions/engineering{ + dir = 2; + pixel_y = 10 + }, +/obj/structure/sign/directions/cargo{ + dir = 2 + }, +/obj/structure/sign/directions/security{ + dir = 1; + pixel_y = -10 + }, +/turf/simulated/wall/r_wall, +/area/hallway/primary/firstdeck/fpcenter) +"ajr" = ( +/obj/effect/floor_decal/borderfloor{ + dir = 9 + }, +/obj/effect/floor_decal/corner/green/border{ + dir = 9 + }, +/obj/effect/floor_decal/borderfloor/corner2{ + dir = 10 + }, +/obj/effect/floor_decal/corner/green/bordercorner2{ + dir = 10 + }, +/turf/simulated/floor/tiled, +/area/hallway/primary/firstdeck/fore) +"ajs" = ( +/obj/effect/floor_decal/borderfloor/corner{ + dir = 1 + }, +/obj/effect/floor_decal/corner/green/bordercorner{ + dir = 1 + }, +/turf/simulated/floor/tiled, +/area/hallway/primary/firstdeck/fore) +"ajt" = ( +/obj/effect/floor_decal/borderfloor/corner{ + dir = 4 + }, +/obj/effect/floor_decal/corner/green/bordercorner{ + dir = 4 + }, +/turf/simulated/floor/tiled, +/area/hallway/primary/firstdeck/fore) +"aju" = ( +/obj/effect/floor_decal/borderfloor{ + dir = 5 + }, +/obj/effect/floor_decal/corner/green/border{ + dir = 5 + }, +/obj/effect/floor_decal/borderfloor/corner2{ + dir = 5 + }, +/obj/effect/floor_decal/corner/green/bordercorner2{ + dir = 5 + }, +/turf/simulated/floor/tiled, +/area/hallway/primary/firstdeck/fore) +"ajv" = ( +/obj/structure/sign/directions/bridge{ + dir = 2; + pixel_y = 10 + }, +/obj/structure/sign/directions/science{ + dir = 2 + }, +/obj/structure/sign/directions/medical{ + dir = 2; + pixel_y = -10 + }, +/turf/simulated/wall, +/area/hallway/primary/firstdeck/fscenter) +"ajw" = ( +/turf/simulated/wall/r_wall, +/area/hallway/primary/firstdeck/fscenter) +"ajx" = ( +/obj/machinery/door/firedoor/border_only, +/obj/effect/wingrille_spawn/reinforced, +/turf/simulated/floor/plating, +/area/hallway/primary/firstdeck/fscenter) +"ajy" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/obj/structure/cable{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/obj/structure/catwalk, +/turf/simulated/floor/plating, +/area/maintenance/firstdeck/forestarboard) +"ajz" = ( +/obj/structure/table/rack, +/obj/item/weapon/extinguisher, +/obj/item/clothing/head/hardhat/red, +/obj/item/clothing/mask/gas, +/obj/item/device/flashlight, +/obj/item/clothing/glasses/meson, +/obj/random/maintenance/research, +/obj/random/maintenance/research, +/obj/structure/catwalk, +/turf/simulated/floor, +/area/maintenance/firstdeck/forestarboard) +"ajA" = ( +/obj/machinery/atmospherics/unary/vent_scrubber/on{ + dir = 4 + }, +/obj/effect/floor_decal/borderfloor{ + dir = 8 + }, +/obj/effect/floor_decal/corner/green/border{ + dir = 8 + }, +/turf/simulated/floor/tiled, +/area/hangar/three) +"ajB" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 10 + }, +/turf/simulated/floor/tiled/monofloor, +/area/hangar/three) +"ajC" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 6 + }, +/turf/simulated/floor/tiled/monofloor, +/area/hangar/three) +"ajD" = ( +/obj/machinery/atmospherics/unary/vent_scrubber/on{ + dir = 8 + }, +/obj/effect/floor_decal/borderfloor{ + dir = 4 + }, +/obj/effect/floor_decal/corner/green/border{ + dir = 4 + }, +/turf/simulated/floor/tiled, +/area/hangar/three) +"ajE" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/turf/simulated/floor/tiled/monotile, +/area/hangar/one) +"ajF" = ( +/obj/machinery/shuttle_sensor{ + dir = 6; + id_tag = "shuttle1sens_exp_int" + }, +/turf/simulated/shuttle/wall/voidcraft/blue, +/area/shuttle/shuttle1/start) +"ajG" = ( +/obj/effect/floor_decal/industrial/warning, +/turf/simulated/shuttle/floor/skipjack, +/area/shuttle/shuttle1/start) +"ajH" = ( +/obj/structure/closet/walllocker/emerglocker{ + pixel_x = 0; + pixel_y = 32 + }, +/obj/effect/floor_decal/industrial/warning, +/turf/simulated/shuttle/floor/skipjack, +/area/shuttle/shuttle1/start) +"ajI" = ( +/obj/effect/floor_decal/industrial/warning{ + icon_state = "warning"; + dir = 8 + }, +/turf/simulated/shuttle/floor/black, +/area/shuttle/shuttle1/start) +"ajJ" = ( +/obj/effect/floor_decal/industrial/warning{ + icon_state = "warning"; + dir = 9 + }, +/obj/machinery/embedded_controller/radio/airlock/docking_port{ + frequency = 1380; + id_tag = "shuttle1_shuttle"; + pixel_y = 26; + tag_airpump = "shuttle1_pump"; + tag_chamber_sensor = "shuttle1_sensor"; + tag_exterior_door = "shuttle1_outer"; + tag_interior_door = "shuttle1_inner" + }, +/obj/machinery/atmospherics/unary/vent_pump/high_volume{ + dir = 2; + frequency = 1380; + id_tag = "shuttle1_pump" + }, +/turf/simulated/shuttle/floor/black, +/area/shuttle/shuttle1/start) +"ajK" = ( +/obj/effect/floor_decal/industrial/warning{ + icon_state = "warning"; + dir = 5 + }, +/obj/machinery/atmospherics/unary/vent_pump/high_volume{ + dir = 2; + frequency = 1380; + id_tag = "shuttle1_pump" + }, +/obj/machinery/airlock_sensor{ + frequency = 1380; + id_tag = "shuttle1_sensor"; + pixel_x = 0; + pixel_y = 28 + }, +/turf/simulated/shuttle/floor/black, +/area/shuttle/shuttle1/start) +"ajL" = ( +/obj/structure/reagent_dispensers/fueltank, +/turf/simulated/floor/plating, +/area/maintenance/firstdeck/foreport) +"ajM" = ( +/obj/structure/loot_pile/maint/trash, +/turf/simulated/floor/plating, +/area/maintenance/firstdeck/foreport) +"ajN" = ( +/obj/effect/floor_decal/borderfloor{ + dir = 1 + }, +/obj/effect/floor_decal/corner/green/border{ + dir = 1 + }, +/obj/machinery/status_display{ + pixel_x = 0; + pixel_y = 32 + }, +/turf/simulated/floor/tiled, +/area/hallway/primary/firstdeck/fpcenter) +"ajO" = ( +/obj/effect/floor_decal/borderfloor{ + dir = 1 + }, +/obj/effect/floor_decal/corner/green/border{ + dir = 1 + }, +/turf/simulated/floor/tiled, +/area/hallway/primary/firstdeck/fpcenter) +"ajP" = ( +/obj/machinery/atmospherics/unary/vent_pump/on, +/obj/machinery/camera/network/first_deck{ + c_tag = "First Deck - Center Eight"; + dir = 2 + }, +/obj/effect/floor_decal/borderfloor{ + dir = 1 + }, +/obj/effect/floor_decal/corner/green/border{ + dir = 1 + }, +/turf/simulated/floor/tiled, +/area/hallway/primary/firstdeck/fpcenter) +"ajQ" = ( +/obj/effect/floor_decal/borderfloor{ + dir = 1 + }, +/obj/effect/floor_decal/corner/green/border{ + dir = 1 + }, +/obj/effect/floor_decal/borderfloor/corner2{ + dir = 1 + }, +/obj/effect/floor_decal/corner/green/bordercorner2{ + dir = 1 + }, +/turf/simulated/floor/tiled, +/area/hallway/primary/firstdeck/fpcenter) +"ajR" = ( +/obj/effect/floor_decal/steeldecal/steel_decals4, +/obj/effect/floor_decal/steeldecal/steel_decals4{ + dir = 10 + }, +/turf/simulated/floor/tiled, +/area/hallway/primary/firstdeck/fpcenter) +"ajS" = ( +/obj/machinery/door/firedoor/border_only, +/obj/machinery/door/airlock/glass{ + name = "Central Access" + }, +/turf/simulated/floor/tiled/steel_grid, +/area/hallway/primary/firstdeck/fpcenter) +"ajT" = ( +/obj/effect/floor_decal/steeldecal/steel_decals4{ + dir = 1 + }, +/obj/effect/floor_decal/steeldecal/steel_decals4{ + dir = 6 + }, +/turf/simulated/floor/tiled, +/area/hallway/primary/firstdeck/fore) +"ajU" = ( +/obj/machinery/atmospherics/unary/vent_scrubber/on, +/turf/simulated/floor/tiled, +/area/hallway/primary/firstdeck/fore) +"ajV" = ( +/obj/machinery/atmospherics/unary/vent_pump/on, +/turf/simulated/floor/tiled, +/area/hallway/primary/firstdeck/fore) +"ajW" = ( +/obj/effect/floor_decal/steeldecal/steel_decals4, +/obj/effect/floor_decal/steeldecal/steel_decals4{ + dir = 10 + }, +/turf/simulated/floor/tiled, +/area/hallway/primary/firstdeck/fore) +"ajX" = ( +/obj/machinery/door/firedoor/border_only, +/obj/machinery/door/airlock/glass{ + name = "Central Access" + }, +/turf/simulated/floor/tiled/steel_grid, +/area/hallway/primary/firstdeck/fscenter) +"ajY" = ( +/obj/effect/floor_decal/steeldecal/steel_decals4{ + dir = 1 + }, +/obj/effect/floor_decal/steeldecal/steel_decals4{ + dir = 6 + }, +/turf/simulated/floor/tiled, +/area/hallway/primary/firstdeck/fscenter) +"ajZ" = ( +/obj/effect/floor_decal/borderfloor{ + dir = 1 + }, +/obj/effect/floor_decal/corner/green/border{ + dir = 1 + }, +/obj/effect/floor_decal/borderfloor/corner2{ + dir = 4 + }, +/obj/effect/floor_decal/corner/green/bordercorner2{ + dir = 4 + }, +/turf/simulated/floor/tiled, +/area/hallway/primary/firstdeck/fscenter) +"aka" = ( +/obj/machinery/atmospherics/unary/vent_pump/on, +/obj/machinery/camera/network/first_deck{ + c_tag = "First Deck - Center One"; + dir = 2 + }, +/obj/effect/floor_decal/borderfloor{ + dir = 1 + }, +/obj/effect/floor_decal/corner/green/border{ + dir = 1 + }, +/turf/simulated/floor/tiled, +/area/hallway/primary/firstdeck/fscenter) +"akb" = ( +/obj/effect/floor_decal/borderfloor{ + dir = 1 + }, +/obj/effect/floor_decal/corner/green/border{ + dir = 1 + }, +/turf/simulated/floor/tiled, +/area/hallway/primary/firstdeck/fscenter) +"akc" = ( +/obj/effect/floor_decal/borderfloor{ + dir = 1 + }, +/obj/effect/floor_decal/corner/green/border{ + dir = 1 + }, +/obj/machinery/ai_status_display{ + pixel_y = 32 + }, +/turf/simulated/floor/tiled, +/area/hallway/primary/firstdeck/fscenter) +"akd" = ( +/obj/machinery/space_heater, +/obj/effect/decal/cleanable/dirt, +/obj/structure/catwalk, +/turf/simulated/floor/plating, +/area/maintenance/firstdeck/forestarboard) +"ake" = ( +/obj/structure/table/rack{ + dir = 8; + layer = 2.9 + }, +/obj/item/weapon/tank/oxygen, +/obj/item/weapon/tank/oxygen, +/obj/item/clothing/mask/breath, +/obj/item/clothing/mask/breath, +/obj/item/device/flashlight, +/obj/item/device/flashlight, +/obj/item/weapon/storage/box/lights/mixed, +/obj/item/weapon/extinguisher, +/obj/random/maintenance/research, +/obj/random/maintenance/research, +/obj/structure/catwalk, +/turf/simulated/floor/plating, +/area/maintenance/firstdeck/forestarboard) +"akf" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/turf/simulated/floor/tiled/monotile, +/area/hangar/three) +"akg" = ( +/obj/effect/floor_decal/borderfloorblack{ + dir = 4 + }, +/obj/effect/floor_decal/industrial/danger{ + dir = 4 + }, +/turf/simulated/floor/tiled/steel, +/area/hangar/one) +"akh" = ( +/obj/machinery/door/airlock/voidcraft/vertical{ + icon_state = "door_locked"; + id_tag = "expshuttle1_door_L"; + locked = 1; + name = "shuttle side hatch" + }, +/obj/machinery/button/remote/airlock{ + id = "expshuttle1_door_L"; + name = "Side Hatch Control"; + pixel_y = -26; + req_one_access = null; + specialfunctions = 4 + }, +/turf/simulated/shuttle/floor/black, +/area/shuttle/shuttle1/start) +"aki" = ( +/obj/machinery/door/airlock/voidcraft/vertical{ + frequency = 1380; + id_tag = "shuttle1_inner"; + name = "Internal Access" + }, +/obj/machinery/atmospherics/pipe/simple/visible{ + icon_state = "intact"; + dir = 6 + }, +/obj/machinery/access_button{ + command = "cycle_interior"; + frequency = 1380; + master_tag = "shuttle1_shuttle"; + name = "interior access button"; + pixel_x = 0; + pixel_y = -26; + req_access = null + }, +/turf/simulated/shuttle/floor/black, +/area/shuttle/shuttle1/start) +"akj" = ( +/obj/effect/floor_decal/industrial/warning{ + dir = 8 + }, +/obj/machinery/atmospherics/pipe/manifold4w/visible, +/obj/machinery/meter, +/turf/simulated/shuttle/floor/black, +/area/shuttle/shuttle1/start) +"akk" = ( +/obj/effect/floor_decal/industrial/warning{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/manifold/visible{ + dir = 4 + }, +/turf/simulated/shuttle/floor/black, +/area/shuttle/shuttle1/start) +"akl" = ( +/obj/machinery/door/airlock/voidcraft/vertical{ + frequency = 1380; + id_tag = "shuttle1_outer"; + name = "External Access" + }, +/obj/machinery/access_button{ + command = "cycle_exterior"; + frequency = 1380; + master_tag = "shuttle1_shuttle"; + name = "exterior access button"; + pixel_x = 0; + pixel_y = 26; + req_access = null + }, +/turf/simulated/shuttle/floor/black, +/area/shuttle/shuttle1/start) +"akm" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/obj/structure/cable{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/obj/structure/cable{ + d1 = 2; + d2 = 4; + icon_state = "2-4" + }, +/turf/simulated/floor/plating, +/area/maintenance/firstdeck/foreport) +"akn" = ( +/obj/structure/cable{ + d2 = 8; + icon_state = "0-8" + }, +/obj/machinery/power/apc{ + dir = 4; + name = "east bump"; + pixel_x = 24 + }, +/obj/random/maintenance/cargo, +/obj/structure/closet/crate, +/obj/random/maintenance/cargo, +/obj/random/maintenance/engineering, +/obj/random/maintenance/clean, +/turf/simulated/floor, +/area/maintenance/firstdeck/foreport) +"ako" = ( +/turf/simulated/floor/tiled, +/area/hallway/primary/firstdeck/fpcenter) +"akp" = ( +/obj/machinery/light{ + dir = 1 + }, +/turf/simulated/floor/tiled, +/area/hallway/primary/firstdeck/fpcenter) +"akq" = ( +/obj/machinery/atmospherics/unary/vent_scrubber/on{ + dir = 4 + }, +/turf/simulated/floor/tiled/monotile, +/area/hallway/primary/firstdeck/fpcenter) +"akr" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, +/turf/simulated/floor/tiled/monotile, +/area/hallway/primary/firstdeck/fpcenter) +"aks" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 5 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, +/turf/simulated/floor/tiled/monotile, +/area/hallway/primary/firstdeck/fpcenter) +"akt" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, +/turf/simulated/floor/tiled/monotile, +/area/hallway/primary/firstdeck/fpcenter) +"aku" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, +/turf/simulated/floor/tiled, +/area/hallway/primary/firstdeck/fpcenter) +"akv" = ( +/obj/effect/wingrille_spawn/reinforced, +/obj/machinery/door/firedoor/glass, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, +/turf/simulated/floor/plating, +/area/hallway/primary/firstdeck/fpcenter) +"akw" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, +/obj/effect/floor_decal/borderfloor/corner2{ + dir = 8 + }, +/obj/effect/floor_decal/borderfloor/corner2{ + dir = 10 + }, +/obj/effect/floor_decal/corner/green/bordercorner2{ + dir = 8 + }, +/obj/effect/floor_decal/corner/green/bordercorner2{ + dir = 10 + }, +/turf/simulated/floor/tiled, +/area/hallway/primary/firstdeck/fore) +"akx" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers, +/turf/simulated/floor/tiled/monotile, +/area/hallway/primary/firstdeck/fore) +"aky" = ( +/obj/machinery/atmospherics/pipe/manifold/hidden/supply, +/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers, +/obj/machinery/hologram/holopad, +/obj/effect/floor_decal/industrial/outline/grey, +/turf/simulated/floor/tiled/monotile, +/area/hallway/primary/firstdeck/fore) +"akz" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/manifold/hidden/supply, +/turf/simulated/floor/tiled/monotile, +/area/hallway/primary/firstdeck/fore) +"akA" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, +/obj/effect/floor_decal/borderfloor/corner2{ + dir = 5 + }, +/obj/effect/floor_decal/borderfloor/corner2{ + dir = 6 + }, +/obj/effect/floor_decal/corner/green/bordercorner2{ + dir = 6 + }, +/obj/effect/floor_decal/corner/green/bordercorner2{ + dir = 5 + }, +/turf/simulated/floor/tiled, +/area/hallway/primary/firstdeck/fore) +"akB" = ( +/obj/effect/wingrille_spawn/reinforced, +/obj/machinery/door/firedoor/glass, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, +/turf/simulated/floor/plating, +/area/hallway/primary/firstdeck/fscenter) +"akC" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, +/turf/simulated/floor/tiled, +/area/hallway/primary/firstdeck/fscenter) +"akD" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, +/turf/simulated/floor/tiled/monotile, +/area/hallway/primary/firstdeck/fscenter) +"akE" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 9; + pixel_y = 0 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, +/turf/simulated/floor/tiled/monotile, +/area/hallway/primary/firstdeck/fscenter) +"akF" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, +/turf/simulated/floor/tiled/monotile, +/area/hallway/primary/firstdeck/fscenter) +"akG" = ( +/obj/machinery/atmospherics/unary/vent_scrubber/on{ + dir = 8 + }, +/turf/simulated/floor/tiled/monotile, +/area/hallway/primary/firstdeck/fscenter) +"akH" = ( +/obj/machinery/light{ + dir = 1 + }, +/turf/simulated/floor/tiled, +/area/hallway/primary/firstdeck/fscenter) +"akI" = ( +/turf/simulated/floor/tiled, +/area/hallway/primary/firstdeck/fscenter) +"akJ" = ( +/obj/machinery/power/apc{ + dir = 8; + name = "west bump"; + pixel_x = -24 + }, +/obj/structure/cable{ + icon_state = "0-4"; + d2 = 4 + }, +/obj/machinery/portable_atmospherics/powered/scrubber, +/obj/structure/catwalk, +/turf/simulated/floor/plating, +/area/maintenance/firstdeck/forestarboard) +"akK" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/obj/structure/cable{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/obj/structure/cable{ + d1 = 1; + d2 = 8; + icon_state = "1-8" + }, +/obj/structure/catwalk, +/turf/simulated/floor/plating, +/area/maintenance/firstdeck/forestarboard) +"akL" = ( +/turf/simulated/wall/r_wall, +/area/maintenance/firstdeck/centralport) +"akM" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/obj/machinery/light/spot{ + dir = 8 + }, +/obj/machinery/camera/network/first_deck{ + c_tag = "Hangar One - Aft Port"; + dir = 4 + }, +/turf/simulated/floor/tiled/monotile, +/area/hangar/one) +"akN" = ( +/obj/effect/floor_decal/industrial/warning, +/turf/simulated/shuttle/floor/black, +/area/shuttle/shuttle1/start) +"akO" = ( +/obj/effect/floor_decal/industrial/warning/corner, +/obj/effect/floor_decal/industrial/warning/corner{ + dir = 8 + }, +/obj/machinery/light, +/turf/simulated/shuttle/floor/black, +/area/shuttle/shuttle1/start) +"akP" = ( +/obj/machinery/atmospherics/pipe/simple/visible, +/turf/simulated/shuttle/wall/voidcraft, +/area/shuttle/shuttle1/start) +"akQ" = ( +/obj/machinery/light, +/obj/effect/floor_decal/industrial/warning{ + dir = 10 + }, +/obj/machinery/atmospherics/unary/vent_pump/high_volume{ + dir = 1; + frequency = 1380; + id_tag = "shuttle1_pump" + }, +/turf/simulated/shuttle/floor/black, +/area/shuttle/shuttle1/start) +"akR" = ( +/obj/effect/floor_decal/industrial/warning{ + dir = 6 + }, +/obj/machinery/atmospherics/unary/vent_pump/high_volume{ + dir = 1; + frequency = 1380; + id_tag = "shuttle1_pump" + }, +/obj/structure/closet/emcloset, +/turf/simulated/shuttle/floor/black, +/area/shuttle/shuttle1/start) +"akS" = ( +/obj/machinery/shuttle_sensor{ + dir = 5; + id_tag = "shuttle1sens_exp" + }, +/turf/simulated/shuttle/wall/voidcraft/blue, +/area/shuttle/shuttle1/start) +"akT" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/obj/machinery/light/spot{ + dir = 4 + }, +/obj/machinery/camera/network/first_deck{ + c_tag = "Hangar One - Aft Starboard"; + dir = 8 + }, +/turf/simulated/floor/tiled/monotile, +/area/hangar/one) +"akU" = ( +/obj/structure/closet/crate, +/obj/random/action_figure, +/obj/random/action_figure, +/obj/random/action_figure, +/obj/random/action_figure, +/obj/random/maintenance/clean, +/obj/random/toy, +/obj/item/weapon/toy/xmas_cracker, +/turf/simulated/floor, +/area/maintenance/firstdeck/foreport) +"akV" = ( +/obj/structure/cable/green{ + d1 = 2; + d2 = 4; + icon_state = "2-4" + }, +/turf/simulated/floor/tiled, +/area/hallway/primary/firstdeck/fpcenter) +"akW" = ( +/obj/structure/cable/green{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/turf/simulated/floor/tiled, +/area/hallway/primary/firstdeck/fpcenter) +"akX" = ( +/obj/effect/floor_decal/borderfloor, +/obj/structure/cable/green{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/obj/effect/floor_decal/corner/green/border, +/obj/effect/floor_decal/borderfloor/corner2, +/obj/effect/floor_decal/corner/green/bordercorner2, +/turf/simulated/floor/tiled, +/area/hallway/primary/firstdeck/fpcenter) +"akY" = ( +/obj/effect/floor_decal/borderfloor, +/obj/structure/cable/green{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/obj/structure/extinguisher_cabinet{ + pixel_y = -30 + }, +/obj/effect/floor_decal/corner/green/border, +/turf/simulated/floor/tiled, +/area/hallway/primary/firstdeck/fpcenter) +"akZ" = ( +/obj/effect/floor_decal/borderfloor, +/obj/structure/cable/green{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/obj/effect/floor_decal/corner/green/border, +/obj/effect/floor_decal/borderfloor/corner2{ + dir = 9 + }, +/obj/effect/floor_decal/corner/green/bordercorner2{ + dir = 9 + }, +/turf/simulated/floor/tiled, +/area/hallway/primary/firstdeck/fpcenter) +"ala" = ( +/obj/structure/cable/green{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/obj/effect/floor_decal/steeldecal/steel_decals4, +/obj/effect/floor_decal/steeldecal/steel_decals4{ + dir = 10 + }, +/turf/simulated/floor/tiled, +/area/hallway/primary/firstdeck/fpcenter) +"alb" = ( +/obj/machinery/door/firedoor/border_only, +/obj/machinery/door/airlock/glass{ + name = "Central Access" + }, +/obj/structure/cable/green{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/turf/simulated/floor/tiled/steel_grid, +/area/hallway/primary/firstdeck/fpcenter) +"alc" = ( +/obj/structure/cable/green{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/obj/effect/floor_decal/steeldecal/steel_decals4{ + dir = 1 + }, +/obj/effect/floor_decal/steeldecal/steel_decals4{ + dir = 6 + }, +/turf/simulated/floor/tiled, +/area/hallway/primary/firstdeck/fore) +"ald" = ( +/obj/structure/cable/green{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/obj/machinery/alarm{ + dir = 1; + pixel_y = -22 + }, +/obj/effect/floor_decal/borderfloor/corner, +/obj/effect/floor_decal/corner/green/bordercorner, +/turf/simulated/floor/tiled, +/area/hallway/primary/firstdeck/fore) +"ale" = ( +/obj/structure/cable/green{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/obj/machinery/light, +/obj/effect/floor_decal/borderfloor, +/obj/effect/floor_decal/corner/green/border, +/turf/simulated/floor/tiled, +/area/hallway/primary/firstdeck/fore) +"alf" = ( +/obj/structure/cable/green{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/obj/effect/floor_decal/borderfloor/corner{ + dir = 8 + }, +/obj/effect/floor_decal/corner/green/bordercorner{ + dir = 8 + }, +/turf/simulated/floor/tiled, +/area/hallway/primary/firstdeck/fore) +"alg" = ( +/obj/structure/cable/green{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/obj/effect/floor_decal/steeldecal/steel_decals4, +/obj/effect/floor_decal/steeldecal/steel_decals4{ + dir = 10 + }, +/turf/simulated/floor/tiled, +/area/hallway/primary/firstdeck/fore) +"alh" = ( +/obj/machinery/door/firedoor/border_only, +/obj/machinery/door/airlock/glass{ + name = "Central Access" + }, +/obj/structure/cable/green{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/turf/simulated/floor/tiled/steel_grid, +/area/hallway/primary/firstdeck/fscenter) +"ali" = ( +/obj/structure/cable/green{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/obj/effect/floor_decal/steeldecal/steel_decals4{ + dir = 1 + }, +/obj/effect/floor_decal/steeldecal/steel_decals4{ + dir = 6 + }, +/turf/simulated/floor/tiled, +/area/hallway/primary/firstdeck/fscenter) +"alj" = ( +/obj/effect/floor_decal/borderfloor, +/obj/structure/cable/green{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/obj/effect/floor_decal/corner/green/border, +/obj/effect/floor_decal/borderfloor/corner2, +/obj/effect/floor_decal/corner/green/bordercorner2, +/turf/simulated/floor/tiled, +/area/hallway/primary/firstdeck/fscenter) +"alk" = ( +/obj/effect/floor_decal/borderfloor, +/obj/structure/cable/green{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/obj/effect/floor_decal/corner/green/border, +/turf/simulated/floor/tiled, +/area/hallway/primary/firstdeck/fscenter) +"all" = ( +/obj/effect/floor_decal/borderfloor, +/obj/structure/cable/green{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/obj/effect/floor_decal/corner/green/border, +/obj/effect/floor_decal/borderfloor/corner2{ + dir = 9 + }, +/obj/effect/floor_decal/corner/green/bordercorner2{ + dir = 9 + }, +/turf/simulated/floor/tiled, +/area/hallway/primary/firstdeck/fscenter) +"alm" = ( +/obj/structure/cable/green{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/turf/simulated/floor/tiled, +/area/hallway/primary/firstdeck/fscenter) +"aln" = ( +/obj/structure/cable/green{ + d1 = 2; + d2 = 8; + icon_state = "2-8" + }, +/turf/simulated/floor/tiled, +/area/hallway/primary/firstdeck/fscenter) +"alo" = ( +/obj/random/powercell, +/obj/random/powercell, +/obj/random/powercell, +/obj/random/powercell, +/obj/random/toolbox, +/obj/effect/decal/cleanable/molten_item, +/obj/structure/closet/crate, +/obj/random/maintenance/medical, +/obj/random/maintenance/medical, +/obj/structure/catwalk, +/turf/simulated/floor, +/area/maintenance/firstdeck/forestarboard) +"alp" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/obj/machinery/light/spot{ + dir = 8 + }, +/obj/machinery/camera/network/first_deck{ + c_tag = "Hangar Three - Aft Port"; + dir = 4 + }, +/turf/simulated/floor/tiled/monotile, +/area/hangar/three) +"alq" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/obj/machinery/light/spot{ + dir = 4 + }, +/obj/machinery/camera/network/first_deck{ + c_tag = "Hangar Three - Aft Starboard"; + dir = 8 + }, +/turf/simulated/floor/tiled/monotile, +/area/hangar/three) +"alr" = ( +/turf/simulated/wall/r_wall, +/area/maintenance/firstdeck/centralstarboard) +"als" = ( +/turf/simulated/floor/airless, +/area/maintenance/firstdeck/centralport) +"alt" = ( +/turf/simulated/shuttle/wall, +/area/shuttle/large_escape_pod2/station) +"alu" = ( +/turf/simulated/shuttle/wall/no_join, +/area/shuttle/large_escape_pod2/station) +"alv" = ( +/obj/structure/shuttle/engine/propulsion{ + dir = 4; + icon_state = "propulsion_r" + }, +/turf/simulated/floor/airless, +/turf/simulated/shuttle/plating/airless/carry, +/area/shuttle/large_escape_pod2/station) +"alw" = ( +/obj/machinery/atmospherics/unary/vent_pump/on{ + dir = 4 + }, +/obj/machinery/status_display{ + density = 0; + layer = 4; + pixel_x = -32; + pixel_y = 0 + }, +/obj/effect/floor_decal/borderfloor{ + dir = 8 + }, +/obj/effect/floor_decal/corner/green/border{ + dir = 8 + }, +/obj/structure/closet/emcloset, +/turf/simulated/floor/tiled, +/area/hangar/one) +"alx" = ( +/obj/machinery/atmospherics/pipe/manifold/hidden/supply{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/turf/simulated/floor/tiled/monotile, +/area/hangar/one) +"aly" = ( +/obj/machinery/space_heater, +/turf/simulated/shuttle/plating, +/area/shuttle/shuttle1/start) +"alz" = ( +/obj/machinery/door/airlock/multi_tile/metal{ + icon_state = "door_locked"; + id_tag = "expshuttle1_door_cargo"; + locked = 1 + }, +/obj/machinery/button/remote/airlock{ + desiredstate = 1; + dir = 4; + id = "expshuttle1_door_cargo"; + name = "Rear Hatch Control"; + pixel_x = -26; + pixel_y = 0; + req_access = list(67); + specialfunctions = 4 + }, +/turf/simulated/shuttle/floor/black, +/area/shuttle/shuttle1/start) +"alA" = ( +/obj/machinery/atmospherics/pipe/simple/visible{ + icon_state = "intact"; + dir = 5 + }, +/turf/simulated/shuttle/wall/voidcraft/no_join, +/area/shuttle/shuttle1/start) +"alB" = ( +/obj/machinery/atmospherics/pipe/simple/visible{ + dir = 4 + }, +/turf/simulated/shuttle/wall/voidcraft/no_join, +/area/shuttle/shuttle1/start) +"alC" = ( +/obj/machinery/atmospherics/pipe/tank/air{ + dir = 8; + start_pressure = 740.5 + }, +/turf/simulated/shuttle/plating, +/area/shuttle/shuttle1/start) +"alD" = ( +/obj/machinery/atmospherics/pipe/manifold/hidden/supply{ + dir = 8 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/turf/simulated/floor/tiled/monotile, +/area/hangar/one) +"alE" = ( +/obj/machinery/atmospherics/unary/vent_pump/on{ + dir = 8 + }, +/obj/machinery/ai_status_display{ + pixel_x = 32; + pixel_y = 0 + }, +/obj/effect/floor_decal/borderfloor{ + dir = 4 + }, +/obj/effect/floor_decal/corner/green/border{ + dir = 4 + }, +/turf/simulated/floor/tiled/steel, +/area/hangar/one) +"alF" = ( +/obj/structure/cable/green{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/turf/simulated/floor/tiled, +/area/hallway/primary/firstdeck/fpcenter) +"alG" = ( +/turf/simulated/floor/tiled/dark, +/area/hallway/primary/firstdeck/fpcenter) +"alH" = ( +/turf/simulated/wall/r_wall, +/area/tcomm/chamber) +"alI" = ( +/turf/simulated/wall/r_wall, +/area/tcomm/computer) +"alJ" = ( +/turf/simulated/floor/tiled/dark, +/area/hallway/primary/firstdeck/fscenter) +"alK" = ( +/obj/structure/cable/green{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/turf/simulated/floor/tiled, +/area/hallway/primary/firstdeck/fscenter) +"alL" = ( +/obj/machinery/atmospherics/unary/vent_pump/on{ + dir = 4 + }, +/obj/machinery/status_display{ + density = 0; + layer = 4; + pixel_x = -32; + pixel_y = 0 + }, +/obj/effect/floor_decal/borderfloor{ + dir = 8 + }, +/obj/effect/floor_decal/corner/green/border{ + dir = 8 + }, +/turf/simulated/floor/tiled, +/area/hangar/three) +"alM" = ( +/obj/machinery/atmospherics/pipe/manifold/hidden/supply{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/turf/simulated/floor/tiled/monotile, +/area/hangar/three) +"alN" = ( +/obj/machinery/atmospherics/pipe/manifold/hidden/supply{ + dir = 8 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/turf/simulated/floor/tiled/monotile, +/area/hangar/three) +"alO" = ( +/turf/simulated/floor/plating, +/area/maintenance/firstdeck/centralstarboard) +"alP" = ( +/obj/structure/loot_pile/maint/trash, +/turf/simulated/floor/plating, +/area/maintenance/firstdeck/centralstarboard) +"alQ" = ( +/obj/machinery/atmospherics/pipe/manifold/hidden, +/obj/effect/floor_decal/industrial/warning{ + icon_state = "warning"; + dir = 9 + }, +/obj/random/mob/mouse, +/turf/simulated/floor/plating, +/area/maintenance/firstdeck/foreport) +"alR" = ( +/turf/simulated/shuttle/wall/hard_corner, +/area/shuttle/large_escape_pod2/station) +"alS" = ( +/obj/structure/bed/chair, +/obj/item/device/radio/intercom{ + dir = 1; + name = "Station Intercom (General)"; + pixel_y = 21 + }, +/turf/simulated/shuttle/floor/white, +/area/shuttle/large_escape_pod2/station) +"alT" = ( +/obj/structure/bed/chair, +/obj/machinery/status_display{ + density = 0; + layer = 4; + pixel_x = 0; + pixel_y = 32 + }, +/turf/simulated/shuttle/floor/white, +/area/shuttle/large_escape_pod2/station) +"alU" = ( +/obj/structure/bed/chair, +/turf/simulated/shuttle/floor/white, +/area/shuttle/large_escape_pod2/station) +"alV" = ( +/obj/machinery/sleep_console{ + dir = 4 + }, +/obj/item/device/radio/intercom/department/medbay{ + dir = 2; + pixel_x = 0; + pixel_y = 21 + }, +/turf/simulated/shuttle/floor, +/area/shuttle/large_escape_pod2/station) +"alW" = ( +/obj/machinery/sleeper{ + dir = 4 + }, +/turf/simulated/shuttle/floor, +/area/shuttle/large_escape_pod2/station) +"alX" = ( +/obj/structure/table/standard, +/obj/item/bodybag/cryobag, +/obj/item/roller{ + pixel_y = 8 + }, +/obj/item/roller{ + pixel_y = 16 + }, +/obj/machinery/light{ + dir = 1 + }, +/turf/simulated/shuttle/floor/white, +/area/shuttle/large_escape_pod2/station) +"alY" = ( +/obj/structure/bed/chair, +/obj/structure/closet/walllocker/emerglocker{ + pixel_x = 0; + pixel_y = 32 + }, +/turf/simulated/shuttle/floor/white, +/area/shuttle/large_escape_pod2/station) +"alZ" = ( +/obj/structure/window/reinforced{ + dir = 4; + health = 1e+006 + }, +/obj/structure/bed/chair, +/turf/simulated/shuttle/floor/white, +/area/shuttle/large_escape_pod2/station) +"ama" = ( +/obj/structure/shuttle/engine/heater{ + icon_state = "heater"; + dir = 4 + }, +/obj/structure/window/reinforced{ + dir = 8 + }, +/turf/simulated/floor/airless, +/area/shuttle/large_escape_pod2/station) +"amb" = ( +/obj/structure/shuttle/engine/propulsion{ + dir = 4 + }, +/turf/simulated/floor/airless, +/turf/simulated/shuttle/plating/airless/carry, +/area/shuttle/large_escape_pod2/station) +"amc" = ( +/obj/effect/floor_decal/borderfloor{ + dir = 8 + }, +/obj/effect/floor_decal/corner/green/border{ + dir = 8 + }, +/obj/structure/closet/emcloset, +/turf/simulated/floor/tiled, +/area/hangar/one) +"amd" = ( +/obj/effect/floor_decal/borderfloor{ + dir = 4 + }, +/obj/effect/floor_decal/corner/green/border{ + dir = 4 + }, +/obj/structure/closet/crate, +/turf/simulated/floor/tiled, +/area/hangar/one) +"ame" = ( +/obj/structure/table/rack, +/obj/item/clothing/glasses/sunglasses, +/obj/item/clothing/suit/storage/hazardvest, +/turf/simulated/floor/plating, +/area/maintenance/firstdeck/foreport) +"amf" = ( +/obj/structure/cable/green{ + d1 = 1; + d2 = 8; + icon_state = "1-8" + }, +/turf/simulated/floor/tiled, +/area/hallway/primary/firstdeck/fpcenter) +"amg" = ( +/obj/machinery/alarm{ + dir = 8; + pixel_x = 22; + pixel_y = 0 + }, +/turf/simulated/floor/tiled/dark, +/area/hallway/primary/firstdeck/fpcenter) +"amh" = ( +/obj/machinery/alarm{ + dir = 4; + icon_state = "alarm0"; + pixel_x = -22 + }, +/turf/simulated/floor/tiled/dark, +/area/hallway/primary/firstdeck/fscenter) +"ami" = ( +/obj/structure/cable/green{ + d1 = 1; + d2 = 4; + icon_state = "1-4" + }, +/turf/simulated/floor/tiled, +/area/hallway/primary/firstdeck/fscenter) +"amj" = ( +/obj/structure/closet, +/obj/item/device/flashlight, +/obj/effect/decal/cleanable/cobweb2, +/obj/item/weapon/storage/backpack/satchel/vir, +/obj/item/weapon/storage/backpack/virology, +/obj/random/maintenance/medical, +/obj/random/maintenance/medical, +/obj/random/maintenance/medical, +/turf/simulated/floor/plating, +/area/maintenance/firstdeck/forestarboard) +"amk" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/turf/simulated/floor/tiled/monotile, +/area/hangar/three) +"aml" = ( +/obj/random/mob/mouse, +/turf/simulated/floor/plating, +/area/maintenance/firstdeck/forestarboard) +"amm" = ( +/obj/structure/grille, +/obj/structure/shuttle/window, +/turf/simulated/shuttle/plating, +/area/shuttle/large_escape_pod2/station) +"amn" = ( +/obj/structure/bed/chair{ + dir = 8 + }, +/turf/simulated/shuttle/floor/white, +/area/shuttle/large_escape_pod2/station) +"amo" = ( +/turf/simulated/shuttle/floor, +/area/shuttle/large_escape_pod2/station) +"amp" = ( +/obj/structure/window/reinforced{ + dir = 4; + health = 1e+006 + }, +/turf/simulated/shuttle/floor, +/area/shuttle/large_escape_pod2/station) +"amq" = ( +/obj/structure/extinguisher_cabinet{ + pixel_x = -27 + }, +/obj/effect/floor_decal/borderfloor{ + dir = 8 + }, +/obj/effect/floor_decal/corner/green/border{ + dir = 8 + }, +/obj/structure/closet/crate, +/turf/simulated/floor/tiled, +/area/hangar/one) +"amr" = ( +/obj/structure/shuttle/engine/propulsion{ + icon_state = "burst_l" + }, +/turf/simulated/floor/reinforced, +/turf/simulated/shuttle/plating/airless/carry, +/area/shuttle/shuttle1/start) +"ams" = ( +/obj/structure/shuttle/engine/propulsion{ + icon_state = "burst_r" + }, +/turf/simulated/floor/reinforced, +/turf/simulated/shuttle/plating/airless/carry, +/area/shuttle/shuttle1/start) +"amt" = ( +/obj/structure/closet, +/obj/item/clothing/shoes/boots/winter, +/obj/item/clothing/shoes/boots/winter, +/obj/item/clothing/shoes/boots/winter, +/obj/item/clothing/suit/storage/hooded/wintercoat, +/obj/item/clothing/suit/storage/hooded/wintercoat, +/obj/item/clothing/suit/storage/hooded/wintercoat, +/obj/effect/floor_decal/borderfloor{ + dir = 4 + }, +/obj/effect/floor_decal/corner/green/border{ + dir = 4 + }, +/turf/simulated/floor/tiled, +/area/hangar/one) +"amu" = ( +/obj/item/weapon/storage/bible, +/obj/structure/table/rack, +/obj/effect/decal/cleanable/dirt, +/obj/effect/decal/cleanable/dirt, +/obj/random/maintenance/clean, +/turf/simulated/floor, +/area/maintenance/firstdeck/foreport) +"amv" = ( +/obj/machinery/light{ + icon_state = "tube1"; + dir = 8 + }, +/turf/simulated/floor/tiled, +/area/hallway/primary/firstdeck/fpcenter) +"amw" = ( +/obj/machinery/firealarm{ + dir = 1; + pixel_y = -24 + }, +/turf/simulated/floor/tiled/dark, +/area/hallway/primary/firstdeck/fpcenter) +"amx" = ( +/turf/simulated/wall, +/area/maintenance/substation/firstdeck) +"amy" = ( +/obj/machinery/telecomms/server/presets/supply, +/turf/simulated/floor/tiled/dark{ + nitrogen = 100; + oxygen = 0; + temperature = 80 + }, +/area/tcomm/chamber) +"amz" = ( +/obj/machinery/telecomms/server/presets/service/southerncross, +/turf/simulated/floor/tiled/dark{ + nitrogen = 100; + oxygen = 0; + temperature = 80 + }, +/area/tcomm/chamber) +"amA" = ( +/obj/machinery/telecomms/server/presets/unused, +/turf/simulated/floor/tiled/dark{ + nitrogen = 100; + oxygen = 0; + temperature = 80 + }, +/area/tcomm/chamber) +"amB" = ( +/obj/machinery/light{ + dir = 1 + }, +/turf/simulated/floor/bluegrid{ + name = "Mainframe Base"; + nitrogen = 100; + oxygen = 0; + temperature = 80 + }, +/area/tcomm/chamber) +"amC" = ( +/obj/machinery/exonet_node{ + anchored = 1 + }, +/turf/simulated/floor/tiled/dark{ + nitrogen = 100; + oxygen = 0; + temperature = 80 + }, +/area/tcomm/chamber) +"amD" = ( +/obj/machinery/pda_multicaster/prebuilt, +/obj/structure/sign/warning/nosmoking_2{ + pixel_y = 32 + }, +/turf/simulated/floor/tiled/dark{ + nitrogen = 100; + oxygen = 0; + temperature = 80 + }, +/area/tcomm/chamber) +"amE" = ( +/obj/machinery/power/apc/super/critical{ + dir = 1; + is_critical = 1; + name = "north bump"; + pixel_y = 24 + }, +/obj/structure/cable/cyan{ + d2 = 2; + icon_state = "0-2" + }, +/turf/simulated/floor/tiled/dark{ + nitrogen = 100; + oxygen = 0; + temperature = 80 + }, +/area/tcomm/chamber) +"amF" = ( +/obj/machinery/telecomms/server/presets/common, +/turf/simulated/floor/tiled/dark{ + nitrogen = 100; + oxygen = 0; + temperature = 80 + }, +/area/tcomm/chamber) +"amG" = ( +/obj/machinery/telecomms/server/presets/engineering, +/turf/simulated/floor/tiled/dark{ + nitrogen = 100; + oxygen = 0; + temperature = 80 + }, +/area/tcomm/chamber) +"amH" = ( +/obj/structure/sign/warning/server_room, +/turf/simulated/wall/r_wall, +/area/tcomm/computer) +"amI" = ( +/obj/machinery/atmospherics/unary/vent_pump/high_volume{ + dir = 2; + frequency = 1381; + id_tag = "server_access_pump" + }, +/obj/machinery/embedded_controller/radio/airlock/advanced_airlock_controller{ + frequency = 1381; + id_tag = "server_access_airlock"; + name = "Server Access Airlock"; + pixel_x = 0; + pixel_y = 25; + tag_airpump = "server_access_pump"; + tag_chamber_sensor = "server_access_sensor"; + tag_exterior_door = "server_access_outer"; + tag_exterior_sensor = "server_access_ex_sensor"; + tag_interior_door = "server_access_inner"; + tag_interior_sensor = "server_access_in_sensor"; + tag_secure = 1 + }, +/turf/simulated/floor/plating, +/area/tcomm/computer) +"amJ" = ( +/obj/machinery/atmospherics/unary/vent_pump/high_volume{ + dir = 2; + frequency = 1381; + id_tag = "server_access_pump" + }, +/obj/machinery/airlock_sensor{ + frequency = 1381; + id_tag = "server_access_sensor"; + pixel_x = 0; + pixel_y = 25 + }, +/turf/simulated/floor/plating, +/area/tcomm/computer) +"amK" = ( +/turf/simulated/wall, +/area/tcomm/computer) +"amL" = ( +/obj/machinery/firealarm{ + dir = 1; + pixel_y = -24 + }, +/turf/simulated/floor/tiled/dark, +/area/hallway/primary/firstdeck/fscenter) +"amM" = ( +/obj/machinery/light{ + icon_state = "tube1"; + dir = 4 + }, +/turf/simulated/floor/tiled, +/area/hallway/primary/firstdeck/fscenter) +"amN" = ( +/obj/structure/closet/crate/medical, +/obj/random/maintenance/medical, +/obj/random/maintenance/medical, +/obj/random/maintenance/medical, +/obj/random/maintenance/clean, +/turf/simulated/floor, +/area/maintenance/firstdeck/forestarboard) +"amO" = ( +/obj/effect/floor_decal/borderfloor{ + dir = 8 + }, +/obj/effect/floor_decal/corner/green/border{ + dir = 8 + }, +/obj/structure/closet/crate, +/turf/simulated/floor/tiled, +/area/hangar/three) +"amP" = ( +/obj/structure/extinguisher_cabinet{ + pixel_x = 25 + }, +/obj/effect/floor_decal/borderfloor{ + dir = 4 + }, +/obj/effect/floor_decal/corner/green/border{ + dir = 4 + }, +/turf/simulated/floor/tiled, +/area/hangar/three) +"amQ" = ( +/turf/simulated/floor/airless, +/area/rnd/xenobiology/xenoflora) +"amR" = ( +/obj/structure/bed/chair{ + dir = 1 + }, +/obj/machinery/vending/wallmed1{ + layer = 3.3; + name = "Emergency NanoMed"; + pixel_x = -28; + pixel_y = 0 + }, +/turf/simulated/shuttle/floor/white, +/area/shuttle/large_escape_pod2/station) +"amS" = ( +/obj/structure/bed/chair{ + dir = 1 + }, +/obj/machinery/ai_status_display{ + pixel_y = -32 + }, +/turf/simulated/shuttle/floor/white, +/area/shuttle/large_escape_pod2/station) +"amT" = ( +/obj/structure/bed/chair{ + dir = 1 + }, +/obj/machinery/light, +/turf/simulated/shuttle/floor/white, +/area/shuttle/large_escape_pod2/station) +"amU" = ( +/obj/machinery/embedded_controller/radio/simple_docking_controller/escape_pod{ + frequency = 1380; + id_tag = "large_escape_pod_2"; + pixel_x = 26; + pixel_y = -26; + tag_door = "large_escape_pod_2_hatch" + }, +/turf/simulated/shuttle/floor, +/area/shuttle/large_escape_pod2/station) +"amV" = ( +/obj/structure/table/standard, +/obj/item/weapon/storage/firstaid/fire, +/obj/item/weapon/storage/firstaid/regular{ + pixel_x = 2; + pixel_y = 3 + }, +/obj/item/weapon/extinguisher, +/obj/item/weapon/tool/crowbar, +/obj/random/medical/lite, +/turf/simulated/shuttle/floor/white, +/area/shuttle/large_escape_pod2/station) +"amW" = ( +/obj/structure/bed/chair{ + dir = 1 + }, +/obj/structure/closet/walllocker/emerglocker{ + pixel_x = 0; + pixel_y = -32 + }, +/turf/simulated/shuttle/floor/white, +/area/shuttle/large_escape_pod2/station) +"amX" = ( +/obj/structure/window/reinforced{ + dir = 4; + health = 1e+006 + }, +/obj/structure/bed/chair{ + dir = 1 + }, +/turf/simulated/shuttle/floor/white, +/area/shuttle/large_escape_pod2/station) +"amY" = ( +/obj/machinery/atmospherics/unary/vent_scrubber/on{ + dir = 4 + }, +/obj/machinery/space_heater, +/obj/effect/floor_decal/borderfloor{ + dir = 8 + }, +/obj/effect/floor_decal/corner/green/border{ + dir = 8 + }, +/turf/simulated/floor/tiled, +/area/hangar/one) +"amZ" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{ + dir = 4 + }, +/turf/simulated/floor/tiled/monotile, +/area/hangar/one) +"ana" = ( +/obj/effect/floor_decal/borderfloorblack/corner{ + dir = 4 + }, +/obj/effect/floor_decal/industrial/danger/corner{ + dir = 4 + }, +/turf/simulated/floor/tiled, +/area/hangar/one) +"anb" = ( +/obj/effect/floor_decal/borderfloorblack{ + dir = 1 + }, +/obj/effect/floor_decal/industrial/danger{ + dir = 1 + }, +/turf/simulated/floor/tiled, +/area/hangar/one) +"anc" = ( +/obj/effect/floor_decal/borderfloorblack/corner{ + dir = 1 + }, +/obj/effect/floor_decal/industrial/danger/corner{ + dir = 8 + }, +/turf/simulated/floor/tiled, +/area/hangar/one) +"and" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{ + dir = 8 + }, +/turf/simulated/floor/tiled/monotile, +/area/hangar/one) +"ane" = ( +/obj/machinery/atmospherics/unary/vent_scrubber/on{ + dir = 8 + }, +/obj/structure/closet, +/obj/item/clothing/shoes/boots/winter, +/obj/item/clothing/shoes/boots/winter, +/obj/item/clothing/shoes/boots/winter, +/obj/item/clothing/suit/storage/hooded/wintercoat, +/obj/item/clothing/suit/storage/hooded/wintercoat, +/obj/item/clothing/suit/storage/hooded/wintercoat, +/obj/effect/floor_decal/borderfloor{ + dir = 4 + }, +/obj/effect/floor_decal/corner/green/border{ + dir = 4 + }, +/turf/simulated/floor/tiled, +/area/hangar/one) +"anf" = ( +/obj/structure/closet/wardrobe/grey, +/obj/item/weapon/storage/backpack, +/obj/item/weapon/storage/backpack, +/obj/random/maintenance/cargo, +/obj/random/maintenance/cargo, +/obj/random/maintenance/cargo, +/obj/random/maintenance/cargo, +/turf/simulated/floor/plating, +/area/maintenance/firstdeck/foreport) +"ang" = ( +/obj/structure/cable{ + d2 = 2; + icon_state = "0-2"; + pixel_y = 0 + }, +/obj/machinery/power/apc{ + dir = 1; + name = "north bump"; + pixel_x = 0; + pixel_y = 24 + }, +/obj/effect/floor_decal/borderfloor{ + dir = 8 + }, +/obj/effect/floor_decal/corner/green/border{ + dir = 8 + }, +/turf/simulated/floor/tiled, +/area/hallway/primary/firstdeck/fpcenter) +"anh" = ( +/obj/machinery/atmospherics/unary/vent_scrubber/on, +/turf/simulated/floor/tiled/monotile, +/area/hallway/primary/firstdeck/fpcenter) +"ani" = ( +/turf/simulated/wall/r_wall, +/area/maintenance/substation/firstdeck) +"anj" = ( +/turf/simulated/floor/bluegrid{ + name = "Mainframe Base"; + nitrogen = 100; + oxygen = 0; + temperature = 80 + }, +/area/tcomm/chamber) +"ank" = ( +/obj/machinery/atmospherics/unary/vent_pump{ + dir = 4; + external_pressure_bound = 140; + external_pressure_bound_default = 140; + icon_state = "map_vent_out"; + pressure_checks = 0; + pressure_checks_default = 0; + use_power = 1 + }, +/turf/simulated/floor/bluegrid{ + name = "Mainframe Base"; + nitrogen = 100; + oxygen = 0; + temperature = 80 + }, +/area/tcomm/chamber) +"anl" = ( +/obj/structure/cable/cyan{ + d1 = 1; + d2 = 4; + icon_state = "1-4" + }, +/obj/machinery/atmospherics/pipe/simple/hidden/black{ + dir = 4 + }, +/turf/simulated/floor/bluegrid{ + name = "Mainframe Base"; + nitrogen = 100; + oxygen = 0; + temperature = 80 + }, +/area/tcomm/chamber) +"anm" = ( +/obj/structure/cable/cyan{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/obj/machinery/atmospherics/pipe/simple/hidden/black{ + dir = 4 + }, +/turf/simulated/floor/bluegrid{ + name = "Mainframe Base"; + nitrogen = 100; + oxygen = 0; + temperature = 80 + }, +/area/tcomm/chamber) +"ann" = ( +/obj/structure/cable/cyan{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/obj/machinery/atmospherics/pipe/simple/hidden/black{ + dir = 10 + }, +/obj/machinery/airlock_sensor/airlock_interior{ + frequency = 1381; + id_tag = "server_access_in_sensor"; + master_tag = "server_access_airlock"; + name = "interior sensor"; + pixel_x = 25; + pixel_y = -25 + }, +/turf/simulated/floor/bluegrid{ + name = "Mainframe Base"; + nitrogen = 100; + oxygen = 0; + temperature = 80 + }, +/area/tcomm/chamber) +"ano" = ( +/obj/structure/cable/cyan{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/obj/machinery/door/airlock/maintenance_hatch{ + frequency = 1381; + icon_state = "door_locked"; + id_tag = "server_access_inner"; + locked = 1; + name = "Telecoms Server Access"; + req_access = list(61) + }, +/turf/simulated/floor/plating, +/area/tcomm/computer) +"anp" = ( +/obj/structure/cable/cyan{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/obj/machinery/atmospherics/pipe/simple/hidden{ + dir = 5; + icon_state = "intact" + }, +/obj/machinery/light/small, +/obj/structure/catwalk, +/turf/simulated/floor/plating, +/area/tcomm/computer) +"anq" = ( +/obj/structure/cable/cyan{ + d1 = 2; + d2 = 8; + icon_state = "2-8" + }, +/obj/machinery/atmospherics/pipe/manifold/hidden{ + dir = 4; + icon_state = "map" + }, +/obj/structure/catwalk, +/turf/simulated/floor/plating, +/area/tcomm/computer) +"anr" = ( +/obj/machinery/atmospherics/unary/vent_scrubber/on, +/turf/simulated/floor/tiled, +/area/hallway/primary/firstdeck/fscenter) +"ans" = ( +/obj/machinery/power/apc{ + dir = 1; + name = "north bump"; + pixel_x = 0; + pixel_y = 24 + }, +/obj/structure/cable{ + d2 = 2; + icon_state = "0-2"; + pixel_y = 0 + }, +/obj/effect/floor_decal/borderfloor{ + dir = 4 + }, +/obj/effect/floor_decal/corner/green/border{ + dir = 4 + }, +/turf/simulated/floor/tiled, +/area/hallway/primary/firstdeck/fscenter) +"ant" = ( +/obj/structure/closet/crate, +/obj/item/weapon/tank/emergency/oxygen/engi, +/obj/item/weapon/tank/emergency/oxygen/double, +/obj/random/maintenance/engineering, +/obj/random/maintenance/engineering, +/obj/random/maintenance/clean, +/turf/simulated/floor/plating, +/area/maintenance/firstdeck/forestarboard) +"anu" = ( +/obj/effect/floor_decal/borderfloor{ + dir = 8 + }, +/obj/effect/floor_decal/corner/green/border{ + dir = 8 + }, +/obj/machinery/atmospherics/unary/vent_scrubber/on{ + dir = 4 + }, +/obj/machinery/space_heater, +/turf/simulated/floor/tiled, +/area/hangar/three) +"anv" = ( +/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/turf/simulated/floor/tiled/monotile, +/area/hangar/three) +"anw" = ( +/obj/effect/floor_decal/borderfloorblack/corner{ + dir = 4 + }, +/obj/effect/floor_decal/industrial/danger/corner{ + dir = 4 + }, +/turf/simulated/floor/tiled, +/area/hangar/three) +"anx" = ( +/obj/effect/floor_decal/borderfloorblack{ + dir = 1 + }, +/obj/effect/floor_decal/industrial/danger{ + dir = 1 + }, +/turf/simulated/floor/tiled, +/area/hangar/three) +"any" = ( +/obj/effect/floor_decal/borderfloorblack/corner{ + dir = 1 + }, +/obj/effect/floor_decal/industrial/danger/corner{ + dir = 8 + }, +/turf/simulated/floor/tiled, +/area/hangar/three) +"anz" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{ + dir = 8 + }, +/turf/simulated/floor/tiled/monotile, +/area/hangar/three) +"anA" = ( +/obj/machinery/atmospherics/unary/vent_scrubber/on{ + dir = 8 + }, +/obj/effect/floor_decal/borderfloor{ + dir = 4 + }, +/obj/effect/floor_decal/corner/green/border{ + dir = 4 + }, +/obj/structure/closet/emcloset, +/turf/simulated/floor/tiled, +/area/hangar/three) +"anB" = ( +/obj/machinery/atmospherics/unary/vent_pump/high_volume{ + dir = 2; + external_pressure_bound = 140; + external_pressure_bound_default = 140; + icon_state = "map_vent_out"; + pressure_checks = 1; + pressure_checks_default = 1; + use_power = 1 + }, +/turf/simulated/floor/airless, +/area/rnd/xenobiology/xenoflora) +"anC" = ( +/obj/machinery/door/firedoor/border_only, +/obj/effect/wingrille_spawn/reinforced, +/turf/simulated/floor/plating, +/area/rnd/xenobiology/xenoflora_isolation) +"anD" = ( +/obj/machinery/door/airlock/external{ + frequency = 1380; + icon_state = "door_locked"; + id_tag = "large_escape_pod_2_hatch"; + locked = 1; + name = "Large Escape Pod Hatch 2"; + req_access = list(13) + }, +/turf/simulated/shuttle/floor, +/area/shuttle/large_escape_pod2/station) +"anE" = ( +/obj/structure/shuttle/engine/propulsion{ + dir = 4; + icon_state = "propulsion_l" + }, +/turf/simulated/floor/airless, +/turf/simulated/shuttle/plating/airless/carry, +/area/shuttle/large_escape_pod2/station) +"anF" = ( +/obj/machinery/space_heater, +/obj/effect/floor_decal/borderfloor{ + dir = 8 + }, +/obj/effect/floor_decal/corner/green/border{ + dir = 8 + }, +/turf/simulated/floor/tiled, +/area/hangar/one) +"anG" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 5 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 5 + }, +/obj/machinery/alarm{ + dir = 1; + icon_state = "alarm0"; + pixel_y = -22 + }, +/turf/simulated/floor/tiled/monotile, +/area/hangar/one) +"anH" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, +/turf/simulated/floor/tiled/monotile, +/area/hangar/one) +"anI" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, +/obj/machinery/firealarm{ + dir = 1; + pixel_y = -24 + }, +/turf/simulated/floor/tiled/monotile, +/area/hangar/one) +"anJ" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, +/obj/effect/floor_decal/steeldecal/steel_decals4{ + dir = 5 + }, +/obj/effect/floor_decal/steeldecal/steel_decals4{ + dir = 8 + }, +/turf/simulated/floor/tiled/monotile, +/area/hangar/one) +"anK" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, +/obj/machinery/hologram/holopad, +/obj/effect/floor_decal/industrial/outline/grey, +/obj/machinery/light, +/obj/machinery/embedded_controller/radio/simple_docking_controller{ + frequency = 1380; + id_tag = "hangar_1"; + name = "shuttle bay controller"; + pixel_x = 0; + pixel_y = -26; + tag_door = "hangar_1_door" + }, +/turf/simulated/floor/tiled/monotile, +/area/hangar/one) +"anL" = ( +/obj/machinery/atmospherics/pipe/manifold/hidden/supply{ + dir = 1 + }, +/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{ + dir = 1 + }, +/obj/structure/cable{ + d1 = 2; + d2 = 4; + icon_state = "2-4" + }, +/obj/effect/floor_decal/steeldecal/steel_decals4{ + dir = 5 + }, +/obj/effect/floor_decal/steeldecal/steel_decals4{ + dir = 8 + }, +/turf/simulated/floor/tiled/monotile, +/area/hangar/one) +"anM" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, +/obj/structure/cable{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/obj/item/device/radio/intercom{ + name = "Station Intercom (General)"; + pixel_y = -21 + }, +/turf/simulated/floor/tiled/monotile, +/area/hangar/one) +"anN" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, +/obj/structure/cable{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/turf/simulated/floor/tiled/monotile, +/area/hangar/one) +"anO" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 9; + pixel_y = 0 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 9 + }, +/obj/structure/cable{ + d2 = 8; + icon_state = "0-8" + }, +/obj/machinery/power/apc{ + dir = 2; + name = "south bump"; + pixel_y = -24 + }, +/obj/machinery/light_switch{ + pixel_x = 11; + pixel_y = -24 + }, +/turf/simulated/floor/tiled/monotile, +/area/hangar/one) +"anP" = ( +/obj/item/weapon/storage/toolbox/syndicate, +/obj/structure/closet, +/obj/random/contraband, +/obj/random/maintenance/clean, +/obj/random/maintenance/cargo, +/turf/simulated/floor, +/area/maintenance/firstdeck/foreport) +"anQ" = ( +/obj/structure/cable{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/obj/effect/floor_decal/borderfloor{ + dir = 8 + }, +/obj/effect/floor_decal/corner/green/border{ + dir = 8 + }, +/turf/simulated/floor/tiled, +/area/hallway/primary/firstdeck/fpcenter) +"anR" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/turf/simulated/floor/tiled/monotile, +/area/hallway/primary/firstdeck/fpcenter) +"anS" = ( +/obj/structure/cable/green{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/obj/effect/floor_decal/industrial/warning/corner, +/turf/simulated/floor/tiled, +/area/hallway/primary/firstdeck/fpcenter) +"anT" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 6 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 6 + }, +/obj/effect/floor_decal/industrial/warning{ + dir = 4 + }, +/obj/structure/cable/green{ + d1 = 2; + d2 = 4; + icon_state = "2-4" + }, +/obj/machinery/light/small{ + dir = 1 + }, +/turf/simulated/floor/plating, +/area/maintenance/substation/firstdeck) +"anU" = ( +/obj/structure/cable/green{ + d2 = 8; + icon_state = "0-8" + }, +/obj/machinery/atmospherics/pipe/zpipe/up/scrubbers{ + dir = 8 + }, +/obj/machinery/atmospherics/pipe/zpipe/up/supply{ + dir = 8 + }, +/obj/structure/cable/green{ + d1 = 16; + d2 = 0; + icon_state = "16-0" + }, +/obj/structure/railing{ + dir = 8 + }, +/obj/structure/railing, +/turf/simulated/floor/plating, +/area/maintenance/substation/firstdeck) +"anV" = ( +/obj/machinery/camera/network/telecom{ + c_tag = "Tcoms - Central Compartment Port"; + dir = 4 + }, +/turf/simulated/floor/bluegrid{ + name = "Mainframe Base"; + nitrogen = 100; + oxygen = 0; + temperature = 80 + }, +/area/tcomm/chamber) +"anW" = ( +/obj/machinery/telecomms/processor/preset_two, +/turf/simulated/floor/tiled/dark{ + nitrogen = 100; + oxygen = 0; + temperature = 80 + }, +/area/tcomm/chamber) +"anX" = ( +/obj/machinery/telecomms/bus/preset_two/southerncross, +/turf/simulated/floor/tiled/dark{ + nitrogen = 100; + oxygen = 0; + temperature = 80 + }, +/area/tcomm/chamber) +"anY" = ( +/obj/machinery/telecomms/relay/preset/southerncross/d1, +/turf/simulated/floor/tiled/dark{ + nitrogen = 100; + oxygen = 0; + temperature = 80 + }, +/area/tcomm/chamber) +"anZ" = ( +/turf/simulated/floor/tiled/dark{ + nitrogen = 100; + oxygen = 0; + temperature = 80 + }, +/area/tcomm/chamber) +"aoa" = ( +/obj/machinery/telecomms/relay/preset/station, +/turf/simulated/floor/tiled/dark{ + nitrogen = 100; + oxygen = 0; + temperature = 80 + }, +/area/tcomm/chamber) +"aob" = ( +/obj/machinery/telecomms/bus/preset_four, +/turf/simulated/floor/tiled/dark{ + nitrogen = 100; + oxygen = 0; + temperature = 80 + }, +/area/tcomm/chamber) +"aoc" = ( +/obj/machinery/telecomms/processor/preset_four, +/turf/simulated/floor/tiled/dark{ + nitrogen = 100; + oxygen = 0; + temperature = 80 + }, +/area/tcomm/chamber) +"aod" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/black, +/turf/simulated/floor/bluegrid{ + name = "Mainframe Base"; + nitrogen = 100; + oxygen = 0; + temperature = 80 + }, +/area/tcomm/chamber) +"aoe" = ( +/obj/structure/sign/warning/caution, +/turf/simulated/wall/r_wall, +/area/tcomm/computer) +"aof" = ( +/obj/structure/cable/cyan{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/obj/machinery/atmospherics/pipe/simple/hidden, +/obj/machinery/door/airlock/maintenance_hatch{ + frequency = 1381; + icon_state = "door_locked"; + id_tag = "server_access_outer"; + locked = 1; + name = "Telecoms Server Access"; + req_access = list(61) + }, +/turf/simulated/floor/plating, +/area/tcomm/computer) +"aog" = ( +/obj/machinery/atmospherics/portables_connector, +/obj/machinery/portable_atmospherics/canister/air/airlock, +/turf/simulated/floor/tiled/dark, +/area/tcomm/computer) +"aoh" = ( +/obj/structure/cable/green{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/obj/effect/floor_decal/borderfloor{ + dir = 8 + }, +/obj/effect/floor_decal/corner/green/border{ + dir = 8 + }, +/obj/effect/floor_decal/borderfloor/corner2{ + dir = 8 + }, +/obj/effect/floor_decal/corner/green/bordercorner2{ + dir = 8 + }, +/turf/simulated/floor/tiled, +/area/hallway/primary/firstdeck/fscenter) +"aoi" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/turf/simulated/floor/tiled, +/area/hallway/primary/firstdeck/fscenter) +"aoj" = ( +/obj/structure/cable{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/obj/effect/floor_decal/borderfloor{ + dir = 4 + }, +/obj/effect/floor_decal/corner/green/border{ + dir = 4 + }, +/turf/simulated/floor/tiled, +/area/hallway/primary/firstdeck/fscenter) +"aok" = ( +/obj/structure/table/steel, +/obj/random/tech_supply, +/obj/random/tech_supply, +/obj/random/tech_supply, +/obj/random/maintenance/engineering, +/turf/simulated/floor, +/area/maintenance/firstdeck/forestarboard) +"aol" = ( +/obj/effect/floor_decal/borderfloor{ + dir = 8 + }, +/obj/effect/floor_decal/corner/green/border{ + dir = 8 + }, +/obj/machinery/space_heater, +/turf/simulated/floor/tiled, +/area/hangar/three) +"aom" = ( +/obj/machinery/power/apc{ + dir = 2; + name = "south bump"; + pixel_y = -24 + }, +/obj/structure/cable{ + icon_state = "0-4"; + d2 = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 5 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 5 + }, +/obj/machinery/light_switch{ + pixel_x = 11; + pixel_y = -24 + }, +/turf/simulated/floor/tiled/monotile, +/area/hangar/three) +"aon" = ( +/obj/structure/cable{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/turf/simulated/floor/tiled/monotile, +/area/hangar/three) +"aoo" = ( +/obj/structure/cable{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/obj/item/device/radio/intercom{ + name = "Station Intercom (General)"; + pixel_y = -21 + }, +/turf/simulated/floor/tiled/monotile, +/area/hangar/three) +"aop" = ( +/obj/machinery/atmospherics/pipe/manifold/hidden/supply{ + dir = 1 + }, +/obj/structure/cable{ + d1 = 2; + d2 = 8; + icon_state = "2-8" + }, +/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{ + dir = 1 + }, +/obj/effect/floor_decal/steeldecal/steel_decals4{ + dir = 8 + }, +/obj/effect/floor_decal/steeldecal/steel_decals4{ + dir = 5 + }, +/turf/simulated/floor/tiled/monotile, +/area/hangar/three) +"aoq" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, +/obj/machinery/hologram/holopad, +/obj/effect/floor_decal/industrial/outline/grey, +/obj/machinery/light, +/turf/simulated/floor/tiled/monotile, +/area/hangar/three) +"aor" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/obj/effect/floor_decal/steeldecal/steel_decals4{ + dir = 8 + }, +/obj/effect/floor_decal/steeldecal/steel_decals4{ + dir = 5 + }, +/turf/simulated/floor/tiled/monotile, +/area/hangar/three) +"aos" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/turf/simulated/floor/tiled/monotile, +/area/hangar/three) +"aot" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/obj/machinery/firealarm{ + dir = 1; + pixel_y = -24 + }, +/turf/simulated/floor/tiled/monotile, +/area/hangar/three) +"aou" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 9; + pixel_y = 0 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 9 + }, +/obj/machinery/alarm{ + dir = 1; + icon_state = "alarm0"; + pixel_y = -22 + }, +/turf/simulated/floor/tiled/monotile, +/area/hangar/three) +"aov" = ( +/obj/effect/floor_decal/borderfloor{ + dir = 4 + }, +/obj/effect/floor_decal/corner/green/border{ + dir = 4 + }, +/obj/structure/closet/emcloset, +/turf/simulated/floor/tiled, +/area/hangar/three) +"aow" = ( +/turf/simulated/wall/r_wall, +/area/rnd/xenobiology/xenoflora_isolation) +"aox" = ( +/obj/machinery/door/airlock/glass_external{ + frequency = 1380; + icon_state = "door_locked"; + id_tag = "large_escape_pod_2_berth_hatch"; + locked = 1; + name = "Large Escape Pod 2"; + req_access = list(13) + }, +/turf/simulated/floor/plating, +/area/hallway/secondary/escape/firstdeck/ep_port) +"aoy" = ( +/turf/simulated/wall/r_wall, +/area/hallway/secondary/escape/firstdeck/ep_port) +"aoz" = ( +/obj/machinery/door/firedoor/border_only, +/obj/machinery/door/airlock/glass_mining{ + id_tag = "hangar_1_door"; + name = "Hangar Bay" + }, +/turf/simulated/floor/tiled/steel_grid, +/area/hangar/one) +"aoA" = ( +/obj/machinery/door/firedoor/border_only, +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/obj/structure/cable{ + d1 = 1; + d2 = 2; + icon_state = "1-2"; + pixel_y = 0 + }, +/obj/machinery/door/airlock/glass_mining{ + id_tag = "hangar_1_door"; + name = "Hangar Bay" + }, +/turf/simulated/floor/tiled/steel_grid, +/area/hangar/one) +"aoB" = ( +/obj/machinery/door/firedoor/border_only, +/obj/effect/wingrille_spawn/reinforced, +/turf/simulated/floor/plating, +/area/hangar/one) +"aoC" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 5 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 5 + }, +/obj/structure/cable{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/turf/simulated/floor/plating, +/area/maintenance/firstdeck/foreport) +"aoD" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 10 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 10 + }, +/obj/structure/closet/emcloset, +/obj/structure/catwalk, +/turf/simulated/floor/plating, +/area/maintenance/firstdeck/foreport) +"aoE" = ( +/obj/machinery/atmospherics/unary/vent_pump/on{ + dir = 4 + }, +/obj/machinery/camera/network/first_deck{ + c_tag = "First Deck - Center Seven"; + dir = 4 + }, +/obj/structure/cable{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/obj/effect/floor_decal/borderfloor{ + dir = 8 + }, +/obj/effect/floor_decal/corner/green/border{ + dir = 8 + }, +/turf/simulated/floor/tiled, +/area/hallway/primary/firstdeck/fpcenter) +"aoF" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 10 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/turf/simulated/floor/tiled/monotile, +/area/hallway/primary/firstdeck/fpcenter) +"aoG" = ( +/obj/structure/cable/green{ + d1 = 1; + d2 = 4; + icon_state = "1-4" + }, +/obj/effect/floor_decal/industrial/warning{ + icon_state = "warning"; + dir = 4 + }, +/turf/simulated/floor/tiled, +/area/hallway/primary/firstdeck/fpcenter) +"aoH" = ( +/obj/structure/cable/green{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/obj/machinery/door/firedoor/border_only, +/obj/machinery/door/airlock/engineering{ + name = "Central Substation"; + req_one_access = list(11,19,24,47) + }, +/turf/simulated/floor/plating, +/area/maintenance/substation/firstdeck) +"aoI" = ( +/obj/structure/cable/green{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/obj/machinery/alarm{ + pixel_y = 22 + }, +/turf/simulated/floor/plating, +/area/maintenance/substation/firstdeck) +"aoJ" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/structure/cable/green{ + d1 = 1; + d2 = 8; + icon_state = "1-8" + }, +/obj/effect/floor_decal/industrial/warning/corner{ + dir = 4 + }, +/obj/structure/cable/green{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/turf/simulated/floor/plating, +/area/maintenance/substation/firstdeck) +"aoK" = ( +/obj/effect/floor_decal/industrial/warning{ + dir = 1 + }, +/obj/machinery/power/apc{ + dir = 4; + name = "east bump"; + pixel_x = 24 + }, +/obj/structure/cable/green{ + d2 = 8; + icon_state = "0-8" + }, +/turf/simulated/floor/plating, +/area/maintenance/substation/firstdeck) +"aoL" = ( +/obj/machinery/telecomms/bus/preset_one, +/turf/simulated/floor/tiled/dark{ + nitrogen = 100; + oxygen = 0; + temperature = 80 + }, +/area/tcomm/chamber) +"aoM" = ( +/obj/machinery/telecomms/processor/preset_one, +/turf/simulated/floor/tiled/dark{ + nitrogen = 100; + oxygen = 0; + temperature = 80 + }, +/area/tcomm/chamber) +"aoN" = ( +/obj/machinery/telecomms/relay/preset/southerncross/d2, +/turf/simulated/floor/tiled/dark{ + nitrogen = 100; + oxygen = 0; + temperature = 80 + }, +/area/tcomm/chamber) +"aoO" = ( +/obj/machinery/telecomms/relay/preset/southerncross/d3, +/turf/simulated/floor/tiled/dark{ + nitrogen = 100; + oxygen = 0; + temperature = 80 + }, +/area/tcomm/chamber) +"aoP" = ( +/obj/machinery/telecomms/processor/preset_three, +/turf/simulated/floor/tiled/dark{ + nitrogen = 100; + oxygen = 0; + temperature = 80 + }, +/area/tcomm/chamber) +"aoQ" = ( +/obj/machinery/telecomms/bus/preset_three, +/turf/simulated/floor/tiled/dark{ + nitrogen = 100; + oxygen = 0; + temperature = 80 + }, +/area/tcomm/chamber) +"aoR" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/black, +/obj/machinery/camera/network/telecom{ + c_tag = "Tcoms - Central Compartment Starboard"; + dir = 8 + }, +/turf/simulated/floor/bluegrid{ + name = "Mainframe Base"; + nitrogen = 100; + oxygen = 0; + temperature = 80 + }, +/area/tcomm/chamber) +"aoS" = ( +/obj/structure/cable/cyan{ + d2 = 2; + icon_state = "0-2" + }, +/obj/machinery/door/firedoor/border_only, +/obj/effect/wingrille_spawn/reinforced, +/turf/simulated/floor/plating, +/area/tcomm/computer) +"aoT" = ( +/obj/machinery/computer/telecomms/server{ + network = "tcommsat" + }, +/obj/machinery/airlock_sensor/airlock_exterior{ + frequency = 1381; + id_tag = "server_access_ex_sensor"; + master_tag = "server_access_airlock"; + pixel_x = 0; + pixel_y = 25 + }, +/turf/simulated/floor/tiled/dark, +/area/tcomm/computer) +"aoU" = ( +/obj/structure/cable/cyan{ + d1 = 1; + d2 = 4; + icon_state = "1-4" + }, +/obj/structure/cable/cyan{ + d1 = 2; + d2 = 4; + icon_state = "2-4" + }, +/obj/machinery/atmospherics/pipe/simple/hidden{ + dir = 5; + icon_state = "intact" + }, +/turf/simulated/floor/tiled, +/area/tcomm/computer) +"aoV" = ( +/obj/structure/cable/cyan{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/obj/machinery/atmospherics/unary/vent_scrubber/on, +/obj/machinery/atmospherics/pipe/simple/hidden{ + dir = 4 + }, +/obj/machinery/light{ + dir = 1 + }, +/obj/machinery/alarm{ + pixel_y = 22 + }, +/turf/simulated/floor/tiled, +/area/tcomm/computer) +"aoW" = ( +/obj/structure/cable/cyan{ + d1 = 2; + d2 = 8; + icon_state = "2-8" + }, +/obj/machinery/atmospherics/pipe/manifold/hidden{ + dir = 4; + icon_state = "map" + }, +/turf/simulated/floor/tiled, +/area/tcomm/computer) +"aoX" = ( +/obj/machinery/atmospherics/unary/freezer{ + dir = 2; + icon_state = "freezer_1"; + set_temperature = 73; + use_power = 1 + }, +/turf/simulated/floor/tiled, +/area/tcomm/computer) +"aoY" = ( +/obj/structure/cable/green{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/obj/effect/floor_decal/borderfloor{ + dir = 8 + }, +/obj/effect/floor_decal/corner/green/border{ + dir = 8 + }, +/turf/simulated/floor/tiled, +/area/hallway/primary/firstdeck/fscenter) +"aoZ" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 6 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/turf/simulated/floor/tiled, +/area/hallway/primary/firstdeck/fscenter) +"apa" = ( +/obj/machinery/atmospherics/unary/vent_pump/on{ + dir = 8 + }, +/obj/machinery/camera/network/first_deck{ + c_tag = "First Deck - Center Two"; + dir = 8 + }, +/obj/structure/cable{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/obj/effect/floor_decal/borderfloor{ + dir = 4 + }, +/obj/effect/floor_decal/corner/green/border{ + dir = 4 + }, +/turf/simulated/floor/tiled, +/area/hallway/primary/firstdeck/fscenter) +"apb" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 6 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 6 + }, +/obj/structure/cable{ + d1 = 2; + d2 = 4; + icon_state = "2-4" + }, +/obj/structure/catwalk, +/turf/simulated/floor/plating, +/area/maintenance/firstdeck/forestarboard) +"apc" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 9 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 9; + pixel_y = 0 + }, +/obj/structure/cable{ + d1 = 1; + d2 = 8; + icon_state = "1-8" + }, +/turf/simulated/floor/plating, +/area/maintenance/firstdeck/forestarboard) +"apd" = ( +/obj/machinery/floodlight, +/turf/simulated/floor/plating, +/area/maintenance/firstdeck/forestarboard) +"ape" = ( +/obj/machinery/door/firedoor/border_only, +/obj/effect/wingrille_spawn/reinforced, +/turf/simulated/floor/plating, +/area/hangar/three) +"apf" = ( +/obj/machinery/door/firedoor/border_only, +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/obj/structure/cable{ + d1 = 1; + d2 = 2; + icon_state = "1-2"; + pixel_y = 0 + }, +/obj/machinery/door/airlock/glass_mining{ + name = "Hangar Bay" + }, +/turf/simulated/floor/tiled/steel_grid, +/area/hangar/three) +"apg" = ( +/obj/machinery/door/firedoor/border_only, +/obj/machinery/door/airlock/glass_mining{ + name = "Hangar Bay" + }, +/turf/simulated/floor/tiled/steel_grid, +/area/hangar/three) +"aph" = ( +/turf/simulated/wall/r_wall, +/area/hallway/secondary/escape/firstdeck/ep_starboard1) +"api" = ( +/turf/simulated/wall/r_wall, +/area/rnd/research/firstdeck/hallway) +"apj" = ( +/obj/structure/table/rack, +/obj/item/weapon/extinguisher, +/obj/item/weapon/storage/belt/utility, +/obj/item/clothing/mask/gas, +/turf/simulated/floor/plating, +/area/maintenance/firstdeck/centralport) +"apk" = ( +/obj/structure/catwalk, +/turf/simulated/floor/plating, +/area/maintenance/firstdeck/centralport) +"apl" = ( +/obj/structure/cable{ + d2 = 2; + icon_state = "0-2"; + pixel_y = 0 + }, +/obj/machinery/power/apc{ + dir = 1; + name = "north bump"; + pixel_x = 0; + pixel_y = 24 + }, +/obj/structure/catwalk, +/turf/simulated/floor/plating, +/area/maintenance/firstdeck/centralport) +"apm" = ( +/obj/machinery/light/small{ + dir = 1 + }, +/turf/simulated/floor/plating, +/area/maintenance/firstdeck/centralport) +"apn" = ( +/obj/structure/closet/wardrobe/grey, +/obj/item/weapon/storage/backpack, +/obj/item/weapon/storage/backpack, +/obj/random/maintenance/cargo, +/obj/random/maintenance/cargo, +/obj/random/maintenance/cargo, +/turf/simulated/floor/plating, +/area/maintenance/firstdeck/centralport) +"apo" = ( +/obj/effect/floor_decal/industrial/warning{ + dir = 1 + }, +/turf/simulated/floor/tiled, +/area/hallway/secondary/escape/firstdeck/ep_port) +"app" = ( +/obj/machinery/embedded_controller/radio/simple_docking_controller/escape_pod_berth{ + frequency = 1380; + id_tag = "large_escape_pod_2_berth"; + pixel_x = 0; + pixel_y = 26; + tag_door = "large_escape_pod_2_berth_hatch" + }, +/obj/effect/floor_decal/industrial/warning/corner{ + icon_state = "warningcorner"; + dir = 1 + }, +/turf/simulated/floor/tiled, +/area/hallway/secondary/escape/firstdeck/ep_port) +"apq" = ( +/obj/machinery/camera/network/first_deck{ + c_tag = "First Deck - Port Escape Pod"; + dir = 2 + }, +/obj/machinery/status_display{ + density = 0; + layer = 4; + pixel_x = 0; + pixel_y = 32 + }, +/obj/machinery/light{ + dir = 1 + }, +/obj/effect/floor_decal/borderfloor{ + dir = 1 + }, +/obj/effect/floor_decal/corner/white/border{ + dir = 1 + }, +/obj/effect/floor_decal/borderfloor/corner2{ + dir = 4 + }, +/obj/effect/floor_decal/corner/white/bordercorner2{ + dir = 4 + }, +/turf/simulated/floor/tiled, +/area/hallway/secondary/escape/firstdeck/ep_port) +"apr" = ( +/obj/structure/cable{ + d2 = 2; + icon_state = "0-2"; + pixel_y = 0 + }, +/obj/machinery/power/apc{ + dir = 1; + name = "north bump"; + pixel_x = 0; + pixel_y = 24 + }, +/obj/effect/floor_decal/borderfloor{ + dir = 1 + }, +/obj/effect/floor_decal/corner/red/border{ + dir = 1 + }, +/turf/simulated/floor/tiled, +/area/hallway/secondary/escape/firstdeck/ep_port) +"aps" = ( +/obj/machinery/atmospherics/unary/vent_pump/on, +/obj/effect/floor_decal/borderfloor{ + dir = 1 + }, +/obj/effect/floor_decal/corner/white/border{ + dir = 1 + }, +/turf/simulated/floor/tiled, +/area/hallway/secondary/escape/firstdeck/ep_port) +"apt" = ( +/obj/structure/closet/emcloset, +/obj/machinery/ai_status_display{ + pixel_y = 32 + }, +/obj/effect/floor_decal/borderfloor{ + dir = 5 + }, +/obj/effect/floor_decal/corner/red/border{ + dir = 5 + }, +/turf/simulated/floor/tiled, +/area/hallway/secondary/escape/firstdeck/ep_port) +"apu" = ( +/turf/simulated/wall, +/area/construction/firstdeck/construction1) +"apv" = ( +/obj/structure/table/steel, +/obj/random/tech_supply, +/obj/random/tech_supply, +/obj/random/tech_supply, +/obj/random/maintenance/engineering, +/obj/effect/floor_decal/rust, +/turf/simulated/floor/tiled/steel_dirty, +/area/construction/firstdeck/construction1) +"apw" = ( +/obj/structure/table/steel, +/obj/item/weapon/tank/emergency/oxygen/engi, +/obj/random/tech_supply, +/obj/random/toolbox, +/turf/simulated/floor, +/area/construction/firstdeck/construction1) +"apx" = ( +/obj/structure/cable{ + d2 = 2; + icon_state = "0-2"; + pixel_y = 0 + }, +/obj/machinery/power/apc{ + dir = 1; + name = "north bump"; + pixel_x = 0; + pixel_y = 24 + }, +/turf/simulated/floor/plating, +/area/construction/firstdeck/construction1) +"apy" = ( +/turf/simulated/floor/plating, +/area/construction/firstdeck/construction1) +"apz" = ( +/obj/machinery/alarm{ + pixel_y = 22 + }, +/turf/simulated/floor/plating, +/area/construction/firstdeck/construction1) +"apA" = ( +/obj/effect/floor_decal/industrial/hatch/yellow, +/turf/simulated/floor/tiled/dark, +/area/hallway/primary/firstdeck/port) +"apB" = ( +/obj/effect/floor_decal/industrial/hatch/yellow, +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/obj/structure/cable{ + d1 = 1; + d2 = 2; + icon_state = "1-2"; + pixel_y = 0 + }, +/turf/simulated/floor/tiled/dark, +/area/hallway/primary/firstdeck/port) +"apC" = ( +/turf/simulated/wall, +/area/hangar/onecontrol) +"apD" = ( +/obj/structure/table/reinforced, +/obj/machinery/alarm{ + dir = 4; + icon_state = "alarm0"; + pixel_x = -22 + }, +/obj/item/device/communicator, +/turf/simulated/floor/tiled, +/area/hangar/onecontrol) +"apE" = ( +/obj/structure/frame/computer, +/turf/simulated/floor/tiled, +/area/hangar/onecontrol) +"apF" = ( +/obj/machinery/atmospherics/unary/vent_pump/on, +/obj/machinery/firealarm{ + dir = 4; + pixel_x = 24 + }, +/turf/simulated/floor/tiled, +/area/hangar/onecontrol) +"apG" = ( +/obj/structure/disposalpipe/up, +/obj/machinery/atmospherics/pipe/zpipe/up/scrubbers, +/obj/machinery/atmospherics/pipe/zpipe/up/supply, +/obj/structure/cable{ + d2 = 2; + icon_state = "0-2"; + pixel_y = 0 + }, +/obj/structure/cable{ + d1 = 16; + d2 = 0; + icon_state = "16-0" + }, +/turf/simulated/floor/plating, +/area/maintenance/firstdeck/foreport) +"apH" = ( +/obj/item/weapon/caution/cone, +/turf/simulated/floor, +/area/maintenance/firstdeck/foreport) +"apI" = ( +/obj/structure/cable{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/obj/structure/catwalk, +/turf/simulated/floor/plating, +/area/maintenance/firstdeck/foreport) +"apJ" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/machinery/alarm{ + dir = 8; + pixel_x = 22; + pixel_y = 0 + }, +/obj/structure/catwalk, +/turf/simulated/floor/plating, +/area/maintenance/firstdeck/foreport) +"apK" = ( +/obj/structure/cable{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/obj/effect/floor_decal/borderfloor{ + dir = 8 + }, +/obj/effect/floor_decal/corner/green/border{ + dir = 8 + }, +/obj/effect/floor_decal/borderfloor/corner2{ + dir = 10 + }, +/obj/effect/floor_decal/corner/green/bordercorner2{ + dir = 10 + }, +/turf/simulated/floor/tiled, +/area/hallway/primary/firstdeck/fpcenter) +"apL" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/turf/simulated/floor/tiled/monotile, +/area/hallway/primary/firstdeck/fpcenter) +"apM" = ( +/obj/effect/floor_decal/industrial/warning/corner{ + dir = 4 + }, +/turf/simulated/floor/tiled, +/area/hallway/primary/firstdeck/fpcenter) +"apN" = ( +/obj/random/obstruction, +/turf/simulated/floor/plating, +/area/maintenance/substation/firstdeck) +"apO" = ( +/obj/random/obstruction, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/turf/simulated/floor/plating, +/area/maintenance/substation/firstdeck) +"apP" = ( +/obj/machinery/atmospherics/unary/vent_pump{ + dir = 4; + external_pressure_bound = 0; + external_pressure_bound_default = 0; + icon_state = "map_vent_in"; + initialize_directions = 1; + internal_pressure_bound = 4000; + internal_pressure_bound_default = 4000; + pressure_checks = 2; + pressure_checks_default = 2; + pump_direction = 0; + use_power = 1 + }, +/turf/simulated/floor/bluegrid{ + name = "Mainframe Base"; + nitrogen = 100; + oxygen = 0; + temperature = 80 + }, +/area/tcomm/chamber) +"apQ" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/black{ + dir = 4 + }, +/turf/simulated/floor/bluegrid{ + name = "Mainframe Base"; + nitrogen = 100; + oxygen = 0; + temperature = 80 + }, +/area/tcomm/chamber) +"apR" = ( +/obj/machinery/atmospherics/pipe/manifold/hidden/black, +/turf/simulated/floor/bluegrid{ + name = "Mainframe Base"; + nitrogen = 100; + oxygen = 0; + temperature = 80 + }, +/area/tcomm/chamber) +"apS" = ( +/obj/structure/cable/cyan, +/obj/structure/cable/cyan{ + d2 = 2; + icon_state = "0-2" + }, +/obj/structure/cable/cyan{ + d2 = 4; + icon_state = "0-4" + }, +/obj/machinery/door/firedoor/glass, +/obj/machinery/atmospherics/pipe/simple/hidden/black{ + dir = 4 + }, +/obj/effect/wingrille_spawn/reinforced, +/turf/simulated/floor/plating, +/area/tcomm/computer) +"apT" = ( +/obj/machinery/computer/telecomms/monitor{ + network = "tcommsat" + }, +/obj/structure/cable/cyan{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/obj/machinery/atmospherics/pipe/simple/hidden/black{ + dir = 4 + }, +/turf/simulated/floor/tiled/dark, +/area/tcomm/computer) +"apU" = ( +/obj/structure/bed/chair/office/dark{ + dir = 8 + }, +/obj/structure/cable/cyan{ + d1 = 1; + d2 = 8; + icon_state = "1-8" + }, +/obj/machinery/atmospherics/pipe/simple/hidden/black{ + dir = 4 + }, +/turf/simulated/floor/tiled, +/area/tcomm/computer) +"apV" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/black{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/obj/machinery/hologram/holopad, +/obj/effect/floor_decal/industrial/outline/grey, +/turf/simulated/floor/tiled, +/area/tcomm/computer) +"apW" = ( +/obj/structure/cable/cyan{ + d1 = 2; + d2 = 4; + icon_state = "2-4" + }, +/obj/structure/cable/cyan{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/obj/machinery/atmospherics/pipe/simple/hidden/black{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/universal, +/turf/simulated/floor/tiled, +/area/tcomm/computer) +"apX" = ( +/obj/structure/cable/cyan{ + d2 = 8; + icon_state = "0-8" + }, +/obj/machinery/power/apc{ + dir = 4; + name = "east bump"; + pixel_x = 24 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/black{ + dir = 9 + }, +/obj/machinery/light_switch{ + dir = 2; + name = "light switch "; + pixel_x = 36; + pixel_y = 0 + }, +/turf/simulated/floor/tiled, +/area/tcomm/computer) +"apY" = ( +/obj/structure/cable/green{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/obj/effect/floor_decal/borderfloor{ + dir = 8 + }, +/obj/effect/floor_decal/corner/green/border{ + dir = 8 + }, +/obj/effect/floor_decal/borderfloor/corner2{ + dir = 10 + }, +/obj/effect/floor_decal/corner/green/bordercorner2{ + dir = 10 + }, +/turf/simulated/floor/tiled, +/area/hallway/primary/firstdeck/fscenter) +"apZ" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/turf/simulated/floor/tiled, +/area/hallway/primary/firstdeck/fscenter) +"aqa" = ( +/obj/structure/cable{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/obj/effect/floor_decal/borderfloor{ + dir = 4 + }, +/obj/effect/floor_decal/corner/green/border{ + dir = 4 + }, +/obj/effect/floor_decal/borderfloor/corner2{ + dir = 5 + }, +/obj/effect/floor_decal/corner/green/bordercorner2{ + dir = 5 + }, +/turf/simulated/floor/tiled, +/area/hallway/primary/firstdeck/fscenter) +"aqb" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/structure/cable{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/obj/machinery/alarm{ + dir = 4; + icon_state = "alarm0"; + pixel_x = -22 + }, +/obj/structure/catwalk, +/turf/simulated/floor/plating, +/area/maintenance/firstdeck/forestarboard) +"aqc" = ( +/obj/structure/closet/emcloset, +/turf/simulated/floor/plating, +/area/maintenance/firstdeck/forestarboard) +"aqd" = ( +/obj/structure/window/reinforced{ + dir = 4; + health = 1e+006 + }, +/obj/structure/window/reinforced{ + dir = 1 + }, +/obj/structure/grille/broken, +/obj/item/weapon/material/shard{ + icon_state = "medium" + }, +/obj/item/weapon/material/shard, +/obj/item/stack/rods, +/turf/simulated/floor/plating, +/area/maintenance/firstdeck/forestarboard) +"aqe" = ( +/obj/structure/reagent_dispensers/watertank, +/turf/simulated/floor/plating, +/area/maintenance/firstdeck/forestarboard) +"aqf" = ( +/obj/structure/reagent_dispensers/fueltank, +/turf/simulated/floor/plating, +/area/maintenance/firstdeck/forestarboard) +"aqg" = ( +/turf/simulated/wall, +/area/hangar/threecontrol) +"aqh" = ( +/obj/machinery/atmospherics/unary/vent_pump/on, +/obj/machinery/firealarm{ + dir = 8; + pixel_x = -24 + }, +/turf/simulated/floor/tiled/steel, +/area/hangar/threecontrol) +"aqi" = ( +/obj/structure/frame/computer, +/obj/effect/floor_decal/steeldecal/steel_decals_central6, +/turf/simulated/floor/tiled/monotile, +/area/hangar/threecontrol) +"aqj" = ( +/obj/structure/table/reinforced, +/obj/machinery/alarm{ + dir = 8; + pixel_x = 22; + pixel_y = 0 + }, +/turf/simulated/floor/tiled, +/area/hangar/threecontrol) +"aqk" = ( +/obj/effect/floor_decal/industrial/hatch/yellow, +/obj/structure/cable{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/turf/simulated/floor/tiled/techfloor, +/area/hallway/primary/firstdeck/starboard) +"aql" = ( +/obj/effect/floor_decal/industrial/hatch/yellow, +/turf/simulated/floor/tiled/techfloor, +/area/hallway/primary/firstdeck/starboard) +"aqm" = ( +/turf/simulated/wall, +/area/construction/firstdeck/construction4) +"aqn" = ( +/obj/item/stack/tile/wood, +/obj/machinery/alarm{ + pixel_y = 22 + }, +/turf/simulated/floor, +/area/construction/firstdeck/construction4) +"aqo" = ( +/turf/simulated/floor/plating, +/area/construction/firstdeck/construction4) +"aqp" = ( +/obj/structure/cable{ + d2 = 2; + icon_state = "0-2"; + pixel_y = 0 + }, +/obj/machinery/power/apc{ + dir = 1; + name = "north bump"; + pixel_x = 0; + pixel_y = 24 + }, +/turf/simulated/floor/wood, +/area/construction/firstdeck/construction4) +"aqq" = ( +/turf/simulated/floor/wood, +/area/construction/firstdeck/construction4) +"aqr" = ( +/obj/random/drinkbottle, +/obj/structure/closet/crate, +/obj/random/maintenance/clean, +/obj/random/maintenance/clean, +/obj/random/drinkbottle, +/obj/item/weapon/reagent_containers/food/condiment/enzyme{ + layer = 5 + }, +/turf/simulated/floor/wood, +/area/construction/firstdeck/construction4) +"aqs" = ( +/obj/structure/closet/emcloset, +/obj/machinery/ai_status_display{ + pixel_y = 32 + }, +/obj/effect/floor_decal/borderfloor{ + dir = 9 + }, +/obj/effect/floor_decal/corner/red/border{ + dir = 9 + }, +/turf/simulated/floor/tiled, +/area/hallway/secondary/escape/firstdeck/ep_starboard1) +"aqt" = ( +/obj/machinery/atmospherics/unary/vent_pump/on, +/obj/effect/floor_decal/borderfloor{ + dir = 1 + }, +/obj/effect/floor_decal/corner/white/border{ + dir = 1 + }, +/turf/simulated/floor/tiled, +/area/hallway/secondary/escape/firstdeck/ep_starboard1) +"aqu" = ( +/obj/machinery/power/apc{ + dir = 1; + name = "north bump"; + pixel_x = 0; + pixel_y = 24 + }, +/obj/structure/cable{ + d2 = 2; + icon_state = "0-2"; + pixel_y = 0 + }, +/obj/effect/floor_decal/borderfloor{ + dir = 1 + }, +/obj/effect/floor_decal/corner/red/border{ + dir = 1 + }, +/turf/simulated/floor/tiled, +/area/hallway/secondary/escape/firstdeck/ep_starboard1) +"aqv" = ( +/obj/machinery/status_display{ + density = 0; + layer = 4; + pixel_x = 0; + pixel_y = 32 + }, +/obj/machinery/camera/network/first_deck{ + c_tag = "First Deck - Starboard Escape Pod 2"; + dir = 2 + }, +/obj/machinery/light{ + dir = 1 + }, +/obj/effect/floor_decal/borderfloor{ + dir = 1 + }, +/obj/effect/floor_decal/corner/white/border{ + dir = 1 + }, +/obj/effect/floor_decal/borderfloor/corner2{ + dir = 1 + }, +/obj/effect/floor_decal/corner/white/bordercorner2{ + dir = 1 + }, +/turf/simulated/floor/tiled, +/area/hallway/secondary/escape/firstdeck/ep_starboard1) +"aqw" = ( +/obj/effect/floor_decal/industrial/warning/corner{ + icon_state = "warningcorner"; + dir = 4 + }, +/turf/simulated/floor/tiled, +/area/hallway/secondary/escape/firstdeck/ep_starboard1) +"aqx" = ( +/obj/effect/floor_decal/industrial/warning{ + icon_state = "warning"; + dir = 1 + }, +/turf/simulated/floor/tiled, +/area/hallway/secondary/escape/firstdeck/ep_starboard1) +"aqy" = ( +/obj/machinery/light/small{ + dir = 8 + }, +/obj/structure/closet/emcloset, +/obj/structure/catwalk, +/turf/simulated/floor/plating, +/area/maintenance/firstdeck/centralstarboard) +"aqz" = ( +/turf/simulated/wall/r_wall, +/area/rnd/xenobiology/xenoflora) +"aqA" = ( +/obj/machinery/alarm{ + pixel_y = 22 + }, +/obj/structure/catwalk, +/turf/simulated/floor/plating, +/area/maintenance/firstdeck/centralstarboard) +"aqB" = ( +/obj/machinery/floodlight, +/obj/structure/catwalk, +/turf/simulated/floor/plating, +/area/maintenance/firstdeck/centralstarboard) +"aqC" = ( +/obj/structure/table/rack, +/obj/item/weapon/extinguisher, +/obj/item/weapon/storage/belt/utility, +/obj/item/clothing/mask/gas, +/obj/structure/catwalk, +/turf/simulated/floor/plating, +/area/maintenance/firstdeck/centralstarboard) +"aqD" = ( +/turf/simulated/floor/plating, +/area/maintenance/firstdeck/centralport) +"aqE" = ( +/obj/structure/cable{ + d1 = 1; + d2 = 4; + icon_state = "1-4" + }, +/obj/structure/catwalk, +/turf/simulated/floor/plating, +/area/maintenance/firstdeck/centralport) +"aqF" = ( +/obj/structure/cable{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/obj/structure/catwalk, +/turf/simulated/floor/plating, +/area/maintenance/firstdeck/centralport) +"aqG" = ( +/obj/machinery/door/firedoor/border_only, +/obj/machinery/door/airlock/maintenance{ + req_access = list(12) + }, +/obj/structure/cable{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/turf/simulated/floor/plating, +/area/maintenance/firstdeck/centralport) +"aqH" = ( +/obj/structure/cable{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/obj/effect/floor_decal/steeldecal/steel_decals4{ + dir = 6 + }, +/obj/effect/floor_decal/steeldecal/steel_decals4{ + dir = 1 + }, +/turf/simulated/floor/tiled, +/area/hallway/secondary/escape/firstdeck/ep_port) +"aqI" = ( +/obj/machinery/firealarm{ + dir = 1; + pixel_x = 0; + pixel_y = -24 + }, +/obj/structure/cable{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/turf/simulated/floor/tiled, +/area/hallway/secondary/escape/firstdeck/ep_port) +"aqJ" = ( +/obj/structure/cable{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/obj/structure/extinguisher_cabinet{ + pixel_y = -30 + }, +/turf/simulated/floor/tiled, +/area/hallway/secondary/escape/firstdeck/ep_port) +"aqK" = ( +/obj/structure/cable{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/obj/item/device/radio/intercom{ + name = "Station Intercom (General)"; + pixel_y = -21 + }, +/turf/simulated/floor/tiled, +/area/hallway/secondary/escape/firstdeck/ep_port) +"aqL" = ( +/obj/structure/cable{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/obj/structure/cable{ + d1 = 1; + d2 = 4; + icon_state = "1-4" + }, +/turf/simulated/floor/tiled, +/area/hallway/secondary/escape/firstdeck/ep_port) +"aqM" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/machinery/hologram/holopad, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 6 + }, +/obj/structure/cable{ + d1 = 2; + d2 = 8; + icon_state = "2-8" + }, +/obj/effect/floor_decal/industrial/outline/grey, +/turf/simulated/floor/tiled, +/area/hallway/secondary/escape/firstdeck/ep_port) +"aqN" = ( +/obj/machinery/atmospherics/unary/vent_scrubber/on{ + dir = 8 + }, +/obj/machinery/alarm{ + dir = 8; + pixel_x = 22; + pixel_y = 0 + }, +/obj/effect/floor_decal/borderfloor{ + dir = 4 + }, +/obj/effect/floor_decal/corner/white/border{ + dir = 4 + }, +/obj/effect/floor_decal/borderfloor/corner2{ + dir = 5 + }, +/obj/effect/floor_decal/corner/white/bordercorner2{ + dir = 5 + }, +/turf/simulated/floor/tiled, +/area/hallway/secondary/escape/firstdeck/ep_port) +"aqO" = ( +/obj/effect/floor_decal/rust, +/turf/simulated/floor/tiled/steel_dirty, +/area/construction/firstdeck/construction1) +"aqP" = ( +/obj/structure/cable{ + d1 = 1; + d2 = 2; + icon_state = "1-2"; + pixel_y = 0 + }, +/obj/effect/floor_decal/rust, +/turf/simulated/floor/tiled/steel_dirty, +/area/construction/firstdeck/construction1) +"aqQ" = ( +/obj/effect/floor_decal/industrial/warning{ + dir = 1 + }, +/turf/simulated/floor/tiled, +/area/hallway/primary/firstdeck/port) +"aqR" = ( +/obj/effect/floor_decal/industrial/warning{ + dir = 1 + }, +/obj/machinery/atmospherics/pipe/manifold/hidden/supply{ + dir = 8 + }, +/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{ + dir = 8 + }, +/obj/structure/cable{ + d1 = 1; + d2 = 2; + icon_state = "1-2"; + pixel_y = 0 + }, +/obj/structure/cable{ + d1 = 2; + d2 = 4; + icon_state = "2-4" + }, +/turf/simulated/floor/tiled, +/area/hallway/primary/firstdeck/port) +"aqS" = ( +/obj/machinery/door/firedoor/border_only, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/obj/structure/cable{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, +/obj/machinery/door/airlock{ + name = "Hangar Control Room" + }, +/turf/simulated/floor/tiled, +/area/hangar/onecontrol) +"aqT" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/obj/structure/cable{ + d1 = 2; + d2 = 8; + icon_state = "2-8" + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, +/turf/simulated/floor/tiled, +/area/hangar/onecontrol) +"aqU" = ( +/obj/structure/bed/chair{ + dir = 1 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 10 + }, +/turf/simulated/floor/tiled, +/area/hangar/onecontrol) +"aqV" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 9; + pixel_y = 0 + }, +/obj/machinery/camera/network/first_deck{ + c_tag = "Hangar One - Control Room"; + dir = 8 + }, +/turf/simulated/floor/tiled, +/area/hangar/onecontrol) +"aqW" = ( +/obj/structure/disposalpipe/segment, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 5 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/obj/structure/cable{ + d1 = 1; + d2 = 4; + icon_state = "1-4" + }, +/obj/effect/floor_decal/industrial/warning{ + dir = 1 + }, +/obj/machinery/alarm{ + dir = 4; + icon_state = "alarm0"; + pixel_x = -22 + }, +/turf/simulated/floor/plating, +/area/maintenance/firstdeck/foreport) +"aqX" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/obj/structure/cable{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/obj/effect/floor_decal/industrial/warning{ + dir = 1 + }, +/turf/simulated/floor/plating, +/area/maintenance/firstdeck/foreport) +"aqY" = ( +/obj/machinery/door/firedoor/border_only, +/obj/structure/cable{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/obj/machinery/door/airlock/engineering{ + name = "Utility Down"; + req_one_access = list(11,24) + }, +/obj/machinery/atmospherics/pipe/simple/hidden/universal{ + dir = 4 + }, +/turf/simulated/floor/plating, +/area/maintenance/firstdeck/foreport) +"aqZ" = ( +/obj/machinery/atmospherics/valve/digital/open{ + dir = 4 + }, +/obj/structure/cable{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/turf/simulated/floor/plating, +/area/maintenance/firstdeck/foreport) +"ara" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/universal{ + dir = 4 + }, +/obj/structure/cable{ + d1 = 1; + d2 = 8; + icon_state = "1-8" + }, +/obj/structure/cable{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/obj/structure/catwalk, +/turf/simulated/floor/plating, +/area/maintenance/firstdeck/foreport) +"arb" = ( +/obj/machinery/atmospherics/pipe/manifold/hidden/supply{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/obj/structure/cable{ + d1 = 2; + d2 = 8; + icon_state = "2-8" + }, +/obj/machinery/light/small{ + dir = 4; + pixel_y = 0 + }, +/obj/structure/catwalk, +/turf/simulated/floor/plating, +/area/maintenance/firstdeck/foreport) +"arc" = ( +/obj/structure/cable{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/obj/effect/floor_decal/steeldecal/steel_decals4{ + dir = 8 + }, +/obj/effect/floor_decal/steeldecal/steel_decals4{ + dir = 5 + }, +/turf/simulated/floor/tiled, +/area/hallway/primary/firstdeck/fpcenter) +"ard" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/turf/simulated/floor/tiled, +/area/hallway/primary/firstdeck/fpcenter) +"are" = ( +/obj/effect/floor_decal/steeldecal/steel_decals4{ + dir = 8 + }, +/obj/effect/floor_decal/steeldecal/steel_decals4{ + dir = 5 + }, +/turf/simulated/floor/tiled, +/area/hallway/primary/firstdeck/fpcenter) +"arf" = ( +/turf/simulated/floor/plating, +/area/maintenance/substation/firstdeck) +"arg" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/turf/simulated/floor/plating, +/area/maintenance/substation/firstdeck) +"arh" = ( +/obj/machinery/telecomms/server/presets/science, +/turf/simulated/floor/tiled/dark{ + nitrogen = 100; + oxygen = 0; + temperature = 80 + }, +/area/tcomm/chamber) +"ari" = ( +/obj/machinery/telecomms/server/presets/medical, +/turf/simulated/floor/tiled/dark{ + nitrogen = 100; + oxygen = 0; + temperature = 80 + }, +/area/tcomm/chamber) +"arj" = ( +/obj/machinery/telecomms/relay/preset/telecomms, +/turf/simulated/floor/tiled/dark{ + nitrogen = 100; + oxygen = 0; + temperature = 80 + }, +/area/tcomm/chamber) +"ark" = ( +/obj/machinery/light, +/turf/simulated/floor/bluegrid{ + name = "Mainframe Base"; + nitrogen = 100; + oxygen = 0; + temperature = 80 + }, +/area/tcomm/chamber) +"arl" = ( +/obj/machinery/telecomms/broadcaster/preset_right, +/turf/simulated/floor/tiled/dark{ + nitrogen = 100; + oxygen = 0; + temperature = 80 + }, +/area/tcomm/chamber) +"arm" = ( +/obj/structure/sign/warning/nosmoking_2{ + pixel_y = -32 + }, +/obj/machinery/telecomms/hub/preset/southerncross, +/turf/simulated/floor/tiled/dark{ + nitrogen = 100; + oxygen = 0; + temperature = 80 + }, +/area/tcomm/chamber) +"arn" = ( +/obj/machinery/telecomms/receiver/preset_right/southerncross, +/turf/simulated/floor/tiled/dark{ + nitrogen = 100; + oxygen = 0; + temperature = 80 + }, +/area/tcomm/chamber) +"aro" = ( +/obj/machinery/telecomms/server/presets/command, +/turf/simulated/floor/tiled/dark{ + nitrogen = 100; + oxygen = 0; + temperature = 80 + }, +/area/tcomm/chamber) +"arp" = ( +/obj/machinery/telecomms/server/presets/security, +/turf/simulated/floor/tiled/dark{ + nitrogen = 100; + oxygen = 0; + temperature = 80 + }, +/area/tcomm/chamber) +"arq" = ( +/obj/structure/cable/cyan, +/obj/machinery/door/firedoor/border_only, +/obj/effect/wingrille_spawn/reinforced, +/obj/structure/sign/warning/high_voltage{ + pixel_y = -32 + }, +/turf/simulated/floor/plating, +/area/tcomm/computer) +"arr" = ( +/obj/structure/table/standard, +/obj/item/device/flashlight/lamp, +/obj/item/device/radio/intercom{ + name = "Station Intercom (General)"; + pixel_y = -21 + }, +/turf/simulated/floor/tiled/dark, +/area/tcomm/computer) +"ars" = ( +/obj/structure/table/standard, +/obj/item/weapon/folder/yellow, +/obj/item/weapon/folder/yellow, +/obj/item/device/multitool, +/obj/item/weapon/paper_bin, +/obj/item/weapon/pen/blue{ + pixel_x = -3; + pixel_y = 2 + }, +/obj/machinery/firealarm{ + dir = 1; + pixel_x = 0; + pixel_y = -24 + }, +/turf/simulated/floor/tiled, +/area/tcomm/computer) +"art" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 5 + }, +/obj/structure/filingcabinet, +/obj/machinery/camera/network/telecom{ + c_tag = "Tcoms - Main Computer Room"; + dir = 1 + }, +/turf/simulated/floor/tiled, +/area/tcomm/computer) +"aru" = ( +/obj/structure/cable/cyan{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/obj/machinery/atmospherics/pipe/manifold/hidden/supply{ + dir = 8 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 10 + }, +/obj/effect/floor_decal/steeldecal/steel_decals4{ + dir = 8 + }, +/obj/effect/floor_decal/steeldecal/steel_decals4{ + dir = 5 + }, +/turf/simulated/floor/tiled, +/area/tcomm/computer) +"arv" = ( +/obj/machinery/atmospherics/unary/vent_pump/on{ + dir = 8 + }, +/obj/structure/extinguisher_cabinet{ + pixel_x = 28; + pixel_y = 0 + }, +/turf/simulated/floor/tiled, +/area/tcomm/computer) +"arw" = ( +/obj/structure/cable/green{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/obj/effect/floor_decal/steeldecal/steel_decals4{ + dir = 8 + }, +/obj/effect/floor_decal/steeldecal/steel_decals4{ + dir = 5 + }, +/turf/simulated/floor/tiled, +/area/hallway/primary/firstdeck/fscenter) +"arx" = ( +/obj/structure/cable{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/obj/effect/floor_decal/steeldecal/steel_decals4{ + dir = 8 + }, +/obj/effect/floor_decal/steeldecal/steel_decals4{ + dir = 5 + }, +/turf/simulated/floor/tiled, +/area/hallway/primary/firstdeck/fscenter) +"ary" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/structure/cable{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/obj/machinery/light/small{ + dir = 8 + }, +/obj/structure/catwalk, +/turf/simulated/floor/plating, +/area/maintenance/firstdeck/forestarboard) +"arz" = ( +/obj/machinery/door/firedoor/border_only, +/obj/machinery/door/airlock/maintenance{ + name = "Hangar Control Room Access"; + req_access = null; + req_one_access = list(12,67) + }, +/turf/simulated/floor/plating, +/area/hangar/threecontrol) +"arA" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 5 + }, +/obj/effect/floor_decal/rust, +/turf/simulated/floor/tiled, +/area/hangar/threecontrol) +"arB" = ( +/obj/structure/bed/chair{ + dir = 1 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 6 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/turf/simulated/floor/tiled/monotile, +/area/hangar/threecontrol) +"arC" = ( +/obj/structure/cable{ + d1 = 2; + d2 = 4; + icon_state = "2-4" + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/turf/simulated/floor/tiled, +/area/hangar/threecontrol) +"arD" = ( +/obj/machinery/door/firedoor/border_only, +/obj/structure/cable{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/obj/machinery/door/airlock{ + name = "Hangar Control Room" + }, +/turf/simulated/floor/tiled, +/area/hangar/threecontrol) +"arE" = ( +/obj/effect/floor_decal/industrial/warning{ + dir = 1 + }, +/obj/machinery/atmospherics/pipe/manifold/hidden/supply{ + dir = 4 + }, +/obj/structure/cable{ + d1 = 2; + d2 = 8; + icon_state = "2-8" + }, +/obj/structure/cable{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{ + dir = 4 + }, +/turf/simulated/floor/tiled, +/area/hallway/primary/firstdeck/starboard) +"arF" = ( +/obj/effect/floor_decal/industrial/warning{ + dir = 1 + }, +/turf/simulated/floor/tiled, +/area/hallway/primary/firstdeck/starboard) +"arG" = ( +/obj/structure/table, +/obj/item/stack/material/steel{ + amount = 2 + }, +/obj/random/maintenance/engineering, +/turf/simulated/floor, +/area/construction/firstdeck/construction4) +"arH" = ( +/obj/item/stack/material/wood{ + amount = 24 + }, +/turf/simulated/floor/wood, +/area/construction/firstdeck/construction4) +"arI" = ( +/obj/structure/cable{ + d1 = 1; + d2 = 2; + icon_state = "1-2"; + pixel_y = 0 + }, +/turf/simulated/floor/plating, +/area/construction/firstdeck/construction4) +"arJ" = ( +/obj/machinery/atmospherics/unary/vent_scrubber/on{ + dir = 4 + }, +/obj/machinery/alarm{ + dir = 4; + icon_state = "alarm0"; + pixel_x = -22 + }, +/obj/effect/floor_decal/borderfloor{ + dir = 8 + }, +/obj/effect/floor_decal/corner/white/border{ + dir = 8 + }, +/obj/effect/floor_decal/borderfloor/corner2{ + dir = 10 + }, +/obj/effect/floor_decal/corner/white/bordercorner2{ + dir = 10 + }, +/turf/simulated/floor/tiled, +/area/hallway/secondary/escape/firstdeck/ep_starboard1) +"arK" = ( +/obj/structure/cable{ + d1 = 2; + d2 = 4; + icon_state = "2-4" + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 10 + }, +/obj/machinery/hologram/holopad, +/obj/effect/floor_decal/industrial/outline/grey, +/turf/simulated/floor/tiled, +/area/hallway/secondary/escape/firstdeck/ep_starboard1) +"arL" = ( +/obj/structure/cable{ + d1 = 1; + d2 = 8; + icon_state = "1-8" + }, +/turf/simulated/floor/tiled, +/area/hallway/secondary/escape/firstdeck/ep_starboard1) +"arM" = ( +/obj/machinery/door/firedoor/border_only, +/obj/effect/wingrille_spawn/reinforced, +/turf/simulated/floor/plating, +/area/rnd/xenobiology/xenoflora) +"arN" = ( +/obj/structure/extinguisher_cabinet{ + pixel_y = -30 + }, +/turf/simulated/floor/tiled, +/area/hallway/secondary/escape/firstdeck/ep_starboard1) +"arO" = ( +/obj/machinery/firealarm{ + dir = 1; + pixel_x = 0; + pixel_y = -24 + }, +/turf/simulated/floor/tiled, +/area/hallway/secondary/escape/firstdeck/ep_starboard1) +"arP" = ( +/obj/effect/floor_decal/steeldecal/steel_decals4, +/obj/effect/floor_decal/steeldecal/steel_decals4{ + dir = 10 + }, +/turf/simulated/floor/tiled, +/area/hallway/secondary/escape/firstdeck/ep_starboard1) +"arQ" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/yellow, +/turf/simulated/wall/r_wall, +/area/rnd/xenobiology/xenoflora) +"arR" = ( +/obj/structure/catwalk, +/turf/simulated/floor/plating, +/area/maintenance/firstdeck/centralstarboard) +"arS" = ( +/obj/machinery/space_heater, +/obj/structure/catwalk, +/turf/simulated/floor/plating, +/area/maintenance/firstdeck/centralport) +"arT" = ( +/turf/simulated/wall/r_wall, +/area/hallway/primary/firstdeck/port) +"arU" = ( +/turf/simulated/wall, +/area/hallway/primary/firstdeck/port) +"arV" = ( +/turf/simulated/floor/tiled, +/area/hallway/secondary/escape/firstdeck/ep_port) +"arW" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/obj/structure/cable{ + d1 = 1; + d2 = 2; + icon_state = "1-2"; + pixel_y = 0 + }, +/obj/effect/floor_decal/steeldecal/steel_decals4{ + dir = 8 + }, +/obj/effect/floor_decal/steeldecal/steel_decals4{ + dir = 5 + }, +/turf/simulated/floor/tiled, +/area/hallway/secondary/escape/firstdeck/ep_port) +"arX" = ( +/obj/effect/floor_decal/steeldecal/steel_decals4{ + dir = 8 + }, +/obj/effect/floor_decal/steeldecal/steel_decals4{ + dir = 5 + }, +/turf/simulated/floor/tiled, +/area/hallway/secondary/escape/firstdeck/ep_port) +"arY" = ( +/obj/structure/table/steel, +/obj/item/clothing/gloves/black, +/obj/item/device/multitool{ + pixel_x = 5 + }, +/obj/random/tech_supply, +/obj/machinery/light{ + dir = 8 + }, +/obj/effect/floor_decal/rust, +/turf/simulated/floor/tiled/steel_dirty, +/area/construction/firstdeck/construction1) +"arZ" = ( +/obj/machinery/light, +/obj/effect/floor_decal/rust, +/turf/simulated/floor/tiled/steel_dirty, +/area/construction/firstdeck/construction1) +"asa" = ( +/obj/structure/reagent_dispensers/watertank, +/turf/simulated/floor/plating, +/area/construction/firstdeck/construction1) +"asb" = ( +/obj/structure/reagent_dispensers/fueltank, +/turf/simulated/floor/plating, +/area/construction/firstdeck/construction1) +"asc" = ( +/obj/machinery/atmospherics/unary/vent_scrubber/on{ + dir = 4 + }, +/obj/machinery/light{ + icon_state = "tube1"; + dir = 8 + }, +/obj/effect/floor_decal/borderfloor/corner{ + dir = 8 + }, +/obj/effect/floor_decal/corner/green/bordercorner{ + dir = 8 + }, +/turf/simulated/floor/tiled, +/area/hallway/primary/firstdeck/port) +"asd" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, +/turf/simulated/floor/tiled/monotile, +/area/hallway/primary/firstdeck/port) +"ase" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{ + dir = 4 + }, +/obj/structure/cable{ + d1 = 1; + d2 = 2; + icon_state = "1-2"; + pixel_y = 0 + }, +/obj/effect/floor_decal/borderfloor/corner, +/obj/effect/floor_decal/corner/green/bordercorner, +/turf/simulated/floor/tiled, +/area/hallway/primary/firstdeck/port) +"asf" = ( +/obj/structure/cable, +/obj/machinery/power/apc{ + dir = 2; + name = "south bump"; + pixel_y = -24 + }, +/obj/machinery/light_switch{ + pixel_x = 11; + pixel_y = -24 + }, +/obj/effect/floor_decal/steeldecal/steel_decals_central6, +/turf/simulated/floor/tiled, +/area/hangar/onecontrol) +"asg" = ( +/obj/machinery/atmospherics/unary/vent_scrubber/on{ + dir = 1 + }, +/obj/machinery/light, +/turf/simulated/floor/tiled, +/area/hangar/onecontrol) +"ash" = ( +/obj/item/device/radio/intercom{ + name = "Station Intercom (General)"; + pixel_y = -21 + }, +/obj/structure/closet/secure_closet/guncabinet{ + anchored = 1; + desc = "It's an immobile card-locked storage unit. For storing weapons and other items when station side."; + name = "Secure Locker"; + req_one_access = list(67,43,3) + }, +/turf/simulated/floor/tiled, +/area/hangar/onecontrol) +"asi" = ( +/obj/structure/disposalpipe/segment, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 5 + }, +/turf/simulated/floor/plating, +/area/maintenance/firstdeck/foreport) +"asj" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, +/obj/machinery/light/small, +/turf/simulated/floor/plating, +/area/maintenance/firstdeck/foreport) +"ask" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/universal{ + dir = 4 + }, +/turf/simulated/wall, +/area/maintenance/firstdeck/foreport) +"asl" = ( +/obj/machinery/atmospherics/valve/digital/open{ + dir = 4 + }, +/turf/simulated/floor/plating, +/area/maintenance/firstdeck/foreport) +"asm" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/universal{ + dir = 4 + }, +/obj/structure/catwalk, +/turf/simulated/floor/plating, +/area/maintenance/firstdeck/foreport) +"asn" = ( +/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/structure/cable{ + d1 = 1; + d2 = 2; + icon_state = "1-2"; + pixel_y = 0 + }, +/obj/structure/catwalk, +/turf/simulated/floor/plating, +/area/maintenance/firstdeck/foreport) +"aso" = ( +/obj/machinery/door/firedoor/border_only, +/obj/effect/wingrille_spawn/reinforced, +/turf/simulated/floor/plating, +/area/hallway/primary/firstdeck/port) +"asp" = ( +/obj/structure/sign/directions/engineering{ + dir = 8; + pixel_y = 10 + }, +/obj/structure/sign/directions/cargo{ + dir = 8 + }, +/obj/structure/sign/directions/security{ + dir = 2; + pixel_y = -10 + }, +/turf/simulated/wall, +/area/hallway/primary/firstdeck/fpcenter) +"asq" = ( +/obj/machinery/door/firedoor/border_only, +/obj/machinery/door/airlock/glass{ + name = "Central Access" + }, +/obj/structure/cable{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/turf/simulated/floor/tiled/steel_grid, +/area/hallway/primary/firstdeck/fpcenter) +"asr" = ( +/obj/effect/wingrille_spawn/reinforced, +/obj/machinery/door/firedoor/glass, +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/turf/simulated/floor/plating, +/area/hallway/primary/firstdeck/fpcenter) +"ass" = ( +/obj/structure/cable/cyan{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/obj/machinery/door/firedoor/border_only, +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/obj/machinery/door/airlock/hatch{ + name = "Telecoms Control Room"; + req_access = list(61) + }, +/turf/simulated/floor/tiled/steel_grid, +/area/tcomm/computer) +"ast" = ( +/obj/structure/sign/warning/secure_area, +/turf/simulated/wall/r_wall, +/area/tcomm/computer) +"asu" = ( +/obj/machinery/door/firedoor/border_only, +/obj/machinery/door/airlock/glass{ + name = "Central Access" + }, +/obj/structure/cable/green{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/turf/simulated/floor/tiled/steel_grid, +/area/hallway/primary/firstdeck/fscenter) +"asv" = ( +/obj/effect/wingrille_spawn/reinforced, +/obj/machinery/door/firedoor/glass, +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/turf/simulated/floor/plating, +/area/hallway/primary/firstdeck/fscenter) +"asw" = ( +/obj/machinery/door/firedoor/border_only, +/obj/machinery/door/airlock/glass{ + name = "Central Access" + }, +/obj/structure/cable{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/turf/simulated/floor/tiled/steel_grid, +/area/hallway/primary/firstdeck/fscenter) +"asx" = ( +/obj/structure/sign/directions/bridge{ + dir = 2; + pixel_y = 10 + }, +/obj/structure/sign/directions/science{ + dir = 4 + }, +/obj/structure/sign/directions/medical{ + dir = 4; + pixel_y = -10 + }, +/turf/simulated/wall, +/area/hallway/primary/firstdeck/fscenter) +"asy" = ( +/obj/machinery/door/firedoor/border_only, +/obj/effect/wingrille_spawn/reinforced, +/turf/simulated/floor/plating, +/area/hallway/primary/firstdeck/starboard) +"asz" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/structure/cable{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/obj/structure/catwalk, +/turf/simulated/floor/plating, +/area/maintenance/firstdeck/forestarboard) +"asA" = ( +/obj/random/obstruction, +/turf/simulated/floor/plating, +/area/maintenance/firstdeck/forestarboard) +"asB" = ( +/obj/item/device/radio/intercom{ + name = "Station Intercom (General)"; + pixel_y = -21 + }, +/obj/machinery/camera/network/first_deck{ + c_tag = "Hangar Three - Control Room"; + dir = 4 + }, +/obj/effect/floor_decal/rust, +/obj/structure/closet/secure_closet/guncabinet{ + anchored = 1; + desc = "It's an immobile card-locked storage unit. For storing weapons and other items when station side."; + name = "Secure Locker"; + req_one_access = list(67,43,3) + }, +/turf/simulated/floor/tiled, +/area/hangar/threecontrol) +"asC" = ( +/obj/machinery/atmospherics/unary/vent_scrubber/on{ + dir = 1 + }, +/obj/machinery/light, +/turf/simulated/floor/tiled, +/area/hangar/threecontrol) +"asD" = ( +/obj/machinery/power/apc{ + dir = 2; + name = "south bump"; + pixel_y = -24 + }, +/obj/structure/cable, +/obj/machinery/light_switch{ + pixel_x = 11; + pixel_y = -24 + }, +/obj/effect/floor_decal/steeldecal/steel_decals_central6, +/turf/simulated/floor/tiled, +/area/hangar/threecontrol) +"asE" = ( +/obj/structure/cable{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/obj/machinery/light{ + icon_state = "tube1"; + dir = 8 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/effect/floor_decal/borderfloor/corner{ + dir = 8 + }, +/obj/effect/floor_decal/corner/green/bordercorner{ + dir = 8 + }, +/turf/simulated/floor/tiled, +/area/hallway/primary/firstdeck/starboard) +"asF" = ( +/turf/simulated/floor/tiled/monotile, +/area/hallway/primary/firstdeck/starboard) +"asG" = ( +/obj/effect/floor_decal/borderfloor/corner, +/obj/effect/floor_decal/corner/green/bordercorner, +/turf/simulated/floor/tiled, +/area/hallway/primary/firstdeck/starboard) +"asH" = ( +/obj/structure/table/reinforced, +/obj/item/stack/tile/wood, +/turf/simulated/floor/wood, +/area/construction/firstdeck/construction4) +"asI" = ( +/obj/structure/table/reinforced, +/obj/item/device/flashlight, +/turf/simulated/floor/wood, +/area/construction/firstdeck/construction4) +"asJ" = ( +/obj/structure/table/reinforced, +/obj/item/weapon/reagent_containers/food/drinks/glass2/square{ + pixel_x = 4; + pixel_y = 5 + }, +/obj/item/weapon/reagent_containers/food/drinks/glass2/square, +/obj/machinery/light, +/turf/simulated/floor/wood, +/area/construction/firstdeck/construction4) +"asK" = ( +/obj/item/stack/tile/wood, +/turf/simulated/floor, +/area/construction/firstdeck/construction4) +"asL" = ( +/obj/effect/floor_decal/steeldecal/steel_decals4{ + dir = 5 + }, +/obj/effect/floor_decal/steeldecal/steel_decals4{ + dir = 8 + }, +/turf/simulated/floor/tiled, +/area/hallway/secondary/escape/firstdeck/ep_starboard1) +"asM" = ( +/obj/structure/cable{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/obj/effect/floor_decal/steeldecal/steel_decals4{ + dir = 5 + }, +/obj/effect/floor_decal/steeldecal/steel_decals4{ + dir = 8 + }, +/turf/simulated/floor/tiled, +/area/hallway/secondary/escape/firstdeck/ep_starboard1) +"asN" = ( +/obj/effect/floor_decal/borderfloor/corner, +/obj/effect/floor_decal/corner/green/bordercorner, +/turf/simulated/floor/tiled, +/area/hallway/secondary/escape/firstdeck/ep_starboard1) +"asO" = ( +/turf/simulated/wall, +/area/hallway/secondary/escape/firstdeck/ep_starboard1) +"asP" = ( +/obj/machinery/portable_atmospherics/powered/scrubber, +/obj/structure/catwalk, +/turf/simulated/floor/plating, +/area/maintenance/firstdeck/centralport) +"asQ" = ( +/turf/unsimulated/mask, +/area/hallway/primary/firstdeck/port) +"asR" = ( +/obj/machinery/firealarm{ + pixel_y = 24 + }, +/obj/machinery/disposal, +/turf/simulated/floor/tiled/dark, +/area/hallway/primary/firstdeck/port) +"asS" = ( +/obj/machinery/atmospherics/unary/vent_pump/on, +/obj/machinery/vending/cigarette, +/turf/simulated/floor/tiled/dark, +/area/hallway/primary/firstdeck/port) +"asT" = ( +/obj/structure/sign/warning/pods, +/turf/simulated/wall, +/area/hallway/primary/firstdeck/port) +"asU" = ( +/obj/effect/wingrille_spawn/reinforced, +/obj/machinery/door/firedoor/glass, +/turf/simulated/floor/plating, +/area/hallway/secondary/escape/firstdeck/ep_port) +"asV" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/obj/machinery/door/airlock/glass{ + name = "Escape Pod" + }, +/obj/machinery/door/firedoor/border_only, +/obj/structure/cable{ + d1 = 1; + d2 = 2; + icon_state = "1-2"; + pixel_y = 0 + }, +/turf/simulated/floor/tiled, +/area/hallway/secondary/escape/firstdeck/ep_port) +"asW" = ( +/obj/machinery/door/firedoor/border_only, +/obj/machinery/door/airlock/glass{ + name = "Escape Pod" + }, +/turf/simulated/floor/tiled, +/area/hallway/secondary/escape/firstdeck/ep_port) +"asX" = ( +/obj/structure/sign/directions/bridge{ + dir = 4; + pixel_y = 10 + }, +/obj/structure/sign/directions/science{ + dir = 8 + }, +/turf/simulated/wall, +/area/construction/firstdeck/construction1) +"asY" = ( +/obj/structure/sign/directions/security{ + dir = 8 + }, +/turf/simulated/wall, +/area/construction/firstdeck/construction1) +"asZ" = ( +/obj/machinery/door/firedoor/border_only, +/obj/structure/cable{ + d1 = 1; + d2 = 2; + icon_state = "1-2"; + pixel_y = 0 + }, +/obj/machinery/door/airlock/engineering{ + name = "Construction Area"; + req_access = list(32) + }, +/turf/simulated/floor/plating, +/area/construction/firstdeck/construction1) +"ata" = ( +/obj/effect/floor_decal/borderfloor{ + dir = 8 + }, +/obj/effect/floor_decal/corner/green/border{ + dir = 8 + }, +/turf/simulated/floor/tiled, +/area/hallway/primary/firstdeck/port) +"atb" = ( +/turf/simulated/floor/tiled/monotile, +/area/hallway/primary/firstdeck/port) +"atc" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/obj/structure/cable{ + d1 = 1; + d2 = 2; + icon_state = "1-2"; + pixel_y = 0 + }, +/obj/effect/floor_decal/borderfloor{ + dir = 4 + }, +/obj/effect/floor_decal/corner/green/border{ + dir = 4 + }, +/turf/simulated/floor/tiled, +/area/hallway/primary/firstdeck/port) +"atd" = ( +/obj/structure/sign/hangar/one, +/turf/simulated/wall, +/area/hangar/onecontrol) +"ate" = ( +/obj/machinery/door/firedoor/border_only, +/obj/structure/disposalpipe/segment, +/obj/machinery/door/airlock/engineering{ + name = "Utility Down"; + req_one_access = list(11,24) + }, +/turf/simulated/floor/plating, +/area/maintenance/firstdeck/foreport) +"atf" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/obj/structure/cable{ + d1 = 1; + d2 = 2; + icon_state = "1-2"; + pixel_y = 0 + }, +/obj/machinery/door/firedoor/border_only, +/obj/machinery/door/airlock/maintenance{ + req_access = null; + req_one_access = list(12,67) + }, +/turf/simulated/floor/plating, +/area/maintenance/firstdeck/foreport) +"atg" = ( +/obj/machinery/atmospherics/unary/vent_scrubber/on, +/obj/structure/flora/pottedplant/tall, +/turf/simulated/floor/tiled/dark, +/area/hallway/primary/firstdeck/port) +"ath" = ( +/turf/simulated/floor/tiled/dark, +/area/hallway/primary/firstdeck/port) +"ati" = ( +/obj/effect/floor_decal/borderfloor{ + dir = 9 + }, +/obj/effect/floor_decal/corner/green/border{ + dir = 9 + }, +/obj/effect/floor_decal/borderfloor/corner2{ + dir = 1 + }, +/obj/effect/floor_decal/corner/green/bordercorner2{ + dir = 1 + }, +/turf/simulated/floor/tiled, +/area/hallway/primary/firstdeck/port) +"atj" = ( +/obj/structure/cable{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/obj/effect/floor_decal/steeldecal/steel_decals4{ + dir = 4 + }, +/obj/effect/floor_decal/steeldecal/steel_decals4{ + dir = 9 + }, +/turf/simulated/floor/tiled, +/area/hallway/primary/firstdeck/port) +"atk" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/obj/effect/floor_decal/borderfloor/corner2{ + dir = 4 + }, +/obj/effect/floor_decal/borderfloor/corner2{ + dir = 1 + }, +/obj/effect/floor_decal/corner/green/bordercorner2{ + dir = 4 + }, +/obj/effect/floor_decal/corner/green/bordercorner2{ + dir = 1 + }, +/turf/simulated/floor/tiled, +/area/hallway/primary/firstdeck/port) +"atl" = ( +/obj/effect/floor_decal/steeldecal/steel_decals4{ + dir = 4 + }, +/obj/effect/floor_decal/steeldecal/steel_decals4{ + dir = 9 + }, +/turf/simulated/floor/tiled, +/area/hallway/primary/firstdeck/port) +"atm" = ( +/turf/simulated/wall, +/area/medical/first_aid_station/firstdeck) +"atn" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/turf/simulated/wall, +/area/medical/first_aid_station/firstdeck) +"ato" = ( +/turf/unsimulated/mask, +/area/hallway/primary/firstdeck/elevator) +"atp" = ( +/turf/simulated/wall/r_wall, +/area/tcomm/tcomstorage) +"atq" = ( +/obj/structure/table/standard, +/obj/item/weapon/stock_parts/micro_laser, +/obj/item/weapon/stock_parts/manipulator, +/obj/item/weapon/stock_parts/manipulator, +/obj/item/weapon/stock_parts/manipulator, +/obj/item/weapon/stock_parts/manipulator, +/obj/item/weapon/stock_parts/capacitor, +/obj/item/weapon/stock_parts/micro_laser/high, +/obj/item/weapon/stock_parts/micro_laser/high, +/obj/item/weapon/stock_parts/micro_laser/high, +/obj/item/weapon/stock_parts/micro_laser/high, +/obj/machinery/alarm{ + pixel_y = 22 + }, +/turf/simulated/floor, +/area/tcomm/tcomstorage) +"atr" = ( +/obj/machinery/atmospherics/unary/vent_scrubber/on, +/turf/simulated/floor, +/area/tcomm/tcomstorage) +"ats" = ( +/obj/structure/table/rack, +/obj/item/weapon/circuitboard/telecomms/processor, +/obj/item/weapon/circuitboard/telecomms/processor, +/obj/item/weapon/circuitboard/telecomms/receiver, +/obj/item/weapon/circuitboard/telecomms/server, +/obj/item/weapon/circuitboard/telecomms/server, +/obj/item/weapon/circuitboard/telecomms/bus, +/obj/item/weapon/circuitboard/telecomms/bus, +/obj/item/weapon/circuitboard/telecomms/broadcaster, +/obj/item/weapon/circuitboard/telecomms/exonet_node, +/obj/machinery/camera/network/telecom{ + c_tag = "Tcoms - Storage"; + dir = 2 + }, +/turf/simulated/floor, +/area/tcomm/tcomstorage) +"att" = ( +/obj/machinery/door/firedoor/border_only, +/obj/effect/wingrille_spawn/reinforced, +/turf/simulated/floor/plating, +/area/tcomm/tcomstorage) +"atu" = ( +/obj/machinery/porta_turret/stationary, +/obj/effect/floor_decal/industrial/outline/grey, +/turf/simulated/floor/tiled/dark, +/area/tcomm/tcomstorage) +"atv" = ( +/obj/structure/cable/cyan{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/obj/effect/floor_decal/steeldecal/steel_decals4{ + dir = 9 + }, +/obj/effect/floor_decal/steeldecal/steel_decals4{ + dir = 4 + }, +/turf/simulated/floor/tiled, +/area/tcomm/tcomstorage) +"atw" = ( +/obj/machinery/porta_turret/stationary, +/obj/effect/floor_decal/industrial/outline/grey, +/obj/item/device/radio/intercom{ + dir = 4; + name = "Station Intercom (General)"; + pixel_x = 21 + }, +/turf/simulated/floor/tiled/dark, +/area/tcomm/tcomstorage) +"atx" = ( +/obj/structure/cable/green{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/obj/effect/floor_decal/steeldecal/steel_decals4{ + dir = 4 + }, +/obj/effect/floor_decal/steeldecal/steel_decals4{ + dir = 9 + }, +/turf/simulated/floor/tiled, +/area/hallway/primary/firstdeck/starboard) +"aty" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/obj/effect/floor_decal/borderfloor/corner2{ + dir = 4 + }, +/obj/effect/floor_decal/borderfloor/corner2{ + dir = 1 + }, +/obj/effect/floor_decal/corner/green/bordercorner2{ + dir = 1 + }, +/obj/effect/floor_decal/corner/green/bordercorner2{ + dir = 4 + }, +/turf/simulated/floor/tiled, +/area/hallway/primary/firstdeck/starboard) +"atz" = ( +/obj/structure/cable{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/obj/effect/floor_decal/steeldecal/steel_decals4{ + dir = 4 + }, +/obj/effect/floor_decal/steeldecal/steel_decals4{ + dir = 9 + }, +/turf/simulated/floor/tiled, +/area/hallway/primary/firstdeck/starboard) +"atA" = ( +/obj/effect/floor_decal/borderfloor{ + dir = 5 + }, +/obj/effect/floor_decal/corner/green/border{ + dir = 5 + }, +/obj/effect/floor_decal/borderfloor/corner2{ + dir = 4 + }, +/obj/effect/floor_decal/corner/green/bordercorner2{ + dir = 4 + }, +/turf/simulated/floor/tiled, +/area/hallway/primary/firstdeck/starboard) +"atB" = ( +/obj/machinery/light{ + dir = 1 + }, +/turf/simulated/floor/tiled/dark, +/area/hallway/primary/firstdeck/starboard) +"atC" = ( +/obj/structure/closet/emcloset, +/obj/machinery/atmospherics/unary/vent_pump/on, +/turf/simulated/floor/tiled/dark, +/area/hallway/primary/firstdeck/starboard) +"atD" = ( +/turf/simulated/wall, +/area/hallway/primary/firstdeck/starboard) +"atE" = ( +/obj/machinery/door/firedoor/border_only, +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/obj/structure/cable{ + d1 = 1; + d2 = 2; + icon_state = "1-2"; + pixel_y = 0 + }, +/obj/machinery/door/airlock/maintenance{ + req_access = null; + req_one_access = list(12,67) + }, +/turf/simulated/floor/plating, +/area/maintenance/firstdeck/forestarboard) +"atF" = ( +/obj/structure/sign/hangar/three, +/turf/simulated/wall, +/area/hangar/threecontrol) +"atG" = ( +/obj/structure/cable{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/obj/machinery/atmospherics/pipe/manifold/hidden/supply{ + dir = 8 + }, +/obj/effect/floor_decal/borderfloor{ + dir = 8 + }, +/obj/effect/floor_decal/corner/green/border{ + dir = 8 + }, +/turf/simulated/floor/tiled, +/area/hallway/primary/firstdeck/starboard) +"atH" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/turf/simulated/floor/tiled/monotile, +/area/hallway/primary/firstdeck/starboard) +"atI" = ( +/obj/machinery/atmospherics/unary/vent_pump/on{ + dir = 8 + }, +/obj/effect/floor_decal/borderfloor{ + dir = 4 + }, +/obj/effect/floor_decal/corner/green/border{ + dir = 4 + }, +/turf/simulated/floor/tiled, +/area/hallway/primary/firstdeck/starboard) +"atJ" = ( +/obj/machinery/door/firedoor/border_only, +/obj/structure/cable{ + d1 = 1; + d2 = 2; + icon_state = "1-2"; + pixel_y = 0 + }, +/obj/machinery/door/airlock/engineering{ + name = "Construction Area"; + req_access = list(32) + }, +/turf/simulated/floor/plating, +/area/construction/firstdeck/construction4) +"atK" = ( +/obj/structure/sign/directions/security{ + dir = 4 + }, +/turf/simulated/wall, +/area/construction/firstdeck/construction4) +"atL" = ( +/obj/machinery/door/firedoor/border_only, +/obj/machinery/door/airlock/multi_tile/glass{ + name = "Research Division Access"; + req_access = list(47) + }, +/turf/simulated/floor/tiled/steel_grid, +/area/rnd/research/firstdeck/hallway) +"atM" = ( +/obj/machinery/door/firedoor/border_only, +/obj/structure/cable/green{ + d1 = 16; + d2 = 0; + icon_state = "16-0" + }, +/obj/structure/cable/green{ + d2 = 8; + icon_state = "0-8" + }, +/obj/structure/disposalpipe/up{ + dir = 8 + }, +/obj/machinery/atmospherics/pipe/zpipe/up/supply{ + dir = 8 + }, +/obj/machinery/atmospherics/pipe/zpipe/up/scrubbers{ + dir = 8 + }, +/turf/simulated/floor/plating, +/area/maintenance/firstdeck/centralstarboard) +"atN" = ( +/obj/machinery/door/firedoor/border_only, +/obj/machinery/door/airlock/glass{ + name = "Research Access" + }, +/turf/simulated/floor/tiled/steel_grid, +/area/hallway/secondary/escape/firstdeck/ep_starboard1) +"atO" = ( +/obj/effect/wingrille_spawn/reinforced, +/obj/machinery/door/firedoor/glass, +/turf/simulated/floor/plating, +/area/hallway/secondary/escape/firstdeck/ep_starboard1) +"atP" = ( +/turf/simulated/floor/tiled/dark, +/area/hallway/primary/firstdeck/starboard) +"atQ" = ( +/obj/machinery/alarm{ + pixel_y = 22 + }, +/turf/simulated/floor/tiled/dark, +/area/hallway/primary/firstdeck/starboard) +"atR" = ( +/turf/simulated/wall/r_wall, +/area/hallway/primary/firstdeck/starboard) +"atS" = ( +/turf/unsimulated/mask, +/area/hallway/primary/firstdeck/starboard) +"atT" = ( +/obj/machinery/door/firedoor/border_only, +/obj/effect/wingrille_spawn/reinforced, +/turf/simulated/floor/plating, +/area/maintenance/firstdeck/centralport) +"atU" = ( +/obj/machinery/portable_atmospherics/powered/pump/filled, +/obj/structure/catwalk, +/turf/simulated/floor/plating, +/area/maintenance/firstdeck/centralport) +"atV" = ( +/obj/effect/floor_decal/borderfloorblack{ + dir = 9 + }, +/obj/effect/floor_decal/industrial/danger{ + dir = 9 + }, +/turf/simulated/floor/tiled/techfloor/grid, +/area/hallway/primary/firstdeck/port) +"atW" = ( +/obj/effect/floor_decal/borderfloor{ + dir = 1 + }, +/obj/effect/floor_decal/corner/green/border{ + dir = 1 + }, +/turf/simulated/floor/tiled, +/area/hallway/primary/firstdeck/port) +"atX" = ( +/obj/machinery/atmospherics/unary/vent_pump/on, +/obj/effect/floor_decal/borderfloor{ + dir = 1 + }, +/obj/effect/floor_decal/corner/green/border{ + dir = 1 + }, +/turf/simulated/floor/tiled, +/area/hallway/primary/firstdeck/port) +"atY" = ( +/obj/machinery/light{ + dir = 1 + }, +/obj/effect/floor_decal/borderfloor{ + dir = 1 + }, +/obj/effect/floor_decal/corner/green/border{ + dir = 1 + }, +/turf/simulated/floor/tiled, +/area/hallway/primary/firstdeck/port) +"atZ" = ( +/obj/effect/floor_decal/borderfloor/corner{ + dir = 1 + }, +/obj/effect/floor_decal/corner/green/bordercorner{ + dir = 1 + }, +/turf/simulated/floor/tiled, +/area/hallway/primary/firstdeck/port) +"aua" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/obj/structure/cable{ + d1 = 1; + d2 = 2; + icon_state = "1-2"; + pixel_y = 0 + }, +/obj/effect/floor_decal/steeldecal/steel_decals5, +/obj/effect/floor_decal/steeldecal/steel_decals4{ + dir = 4 + }, +/obj/effect/floor_decal/steeldecal/steel_decals4{ + dir = 9 + }, +/turf/simulated/floor/tiled, +/area/hallway/primary/firstdeck/port) +"aub" = ( +/obj/effect/floor_decal/steeldecal/steel_decals5, +/obj/effect/floor_decal/steeldecal/steel_decals4{ + dir = 4 + }, +/obj/effect/floor_decal/steeldecal/steel_decals4{ + dir = 9 + }, +/turf/simulated/floor/tiled, +/area/hallway/primary/firstdeck/port) +"auc" = ( +/obj/effect/floor_decal/borderfloor/corner{ + dir = 4 + }, +/obj/effect/floor_decal/corner/green/bordercorner{ + dir = 4 + }, +/turf/simulated/floor/tiled, +/area/hallway/primary/firstdeck/port) +"aud" = ( +/obj/machinery/door/firedoor/border_only, +/obj/effect/floor_decal/borderfloor{ + dir = 1 + }, +/obj/effect/floor_decal/corner/green/border{ + dir = 1 + }, +/turf/simulated/floor/tiled, +/area/hallway/primary/firstdeck/port) +"aue" = ( +/obj/structure/cable{ + d1 = 1; + d2 = 2; + icon_state = "1-2"; + pixel_y = 0 + }, +/obj/effect/floor_decal/steeldecal/steel_decals5, +/obj/effect/floor_decal/steeldecal/steel_decals4{ + dir = 4 + }, +/obj/effect/floor_decal/steeldecal/steel_decals4{ + dir = 9 + }, +/turf/simulated/floor/tiled, +/area/hallway/primary/firstdeck/port) +"auf" = ( +/obj/machinery/atmospherics/unary/vent_scrubber/on, +/obj/item/device/radio/intercom{ + dir = 1; + name = "Station Intercom (General)"; + pixel_y = 21 + }, +/obj/effect/floor_decal/borderfloor{ + dir = 1 + }, +/obj/effect/floor_decal/corner/green/border{ + dir = 1 + }, +/turf/simulated/floor/tiled, +/area/hallway/primary/firstdeck/port) +"aug" = ( +/obj/machinery/firealarm{ + pixel_y = 24 + }, +/obj/effect/floor_decal/borderfloor{ + dir = 1 + }, +/obj/effect/floor_decal/corner/green/border{ + dir = 1 + }, +/turf/simulated/floor/tiled, +/area/hallway/primary/firstdeck/port) +"auh" = ( +/obj/structure/disposalpipe/segment{ + dir = 4; + icon_state = "pipe-c" + }, +/obj/effect/floor_decal/borderfloor/corner{ + dir = 1 + }, +/obj/effect/floor_decal/corner/green/bordercorner{ + dir = 1 + }, +/turf/simulated/floor/tiled, +/area/hallway/primary/firstdeck/port) +"aui" = ( +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/turf/simulated/floor/tiled/monotile, +/area/hallway/primary/firstdeck/port) +"auj" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/obj/structure/cable{ + d1 = 1; + d2 = 2; + icon_state = "1-2"; + pixel_y = 0 + }, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/effect/floor_decal/borderfloor/corner{ + dir = 4 + }, +/obj/effect/floor_decal/corner/green/bordercorner{ + dir = 4 + }, +/turf/simulated/floor/tiled, +/area/hallway/primary/firstdeck/port) +"auk" = ( +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/effect/floor_decal/borderfloor{ + dir = 1 + }, +/obj/effect/floor_decal/corner/green/border{ + dir = 1 + }, +/turf/simulated/floor/tiled, +/area/hallway/primary/firstdeck/port) +"aul" = ( +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/machinery/camera/network/first_deck{ + c_tag = "First Deck - Port Hallway Two"; + dir = 2 + }, +/obj/effect/floor_decal/borderfloor/corner{ + dir = 1 + }, +/obj/effect/floor_decal/corner/green/bordercorner{ + dir = 1 + }, +/turf/simulated/floor/tiled, +/area/hallway/primary/firstdeck/port) +"aum" = ( +/obj/machinery/status_display{ + density = 0; + layer = 4; + pixel_x = 0; + pixel_y = 32 + }, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/effect/floor_decal/industrial/warning/corner{ + dir = 4 + }, +/obj/effect/floor_decal/steeldecal/steel_decals5, +/turf/simulated/floor/tiled, +/area/hallway/primary/firstdeck/port) +"aun" = ( +/obj/machinery/atmospherics/unary/vent_scrubber/on, +/obj/structure/disposalpipe/junction/yjunction{ + dir = 1 + }, +/obj/effect/floor_decal/industrial/warning{ + dir = 1 + }, +/turf/simulated/floor/tiled, +/area/hallway/primary/firstdeck/port) +"auo" = ( +/obj/machinery/light{ + dir = 1 + }, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/effect/floor_decal/industrial/warning/corner{ + dir = 1 + }, +/turf/simulated/floor/tiled, +/area/hallway/primary/firstdeck/port) +"aup" = ( +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/effect/floor_decal/steeldecal/steel_decals4, +/obj/effect/floor_decal/steeldecal/steel_decals4{ + dir = 10 + }, +/turf/simulated/floor/tiled, +/area/hallway/primary/firstdeck/port) +"auq" = ( +/obj/machinery/door/firedoor/border_only, +/obj/machinery/door/airlock/glass{ + name = "Central Access" + }, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/turf/simulated/floor/tiled/steel_grid, +/area/hallway/primary/firstdeck/port) +"aur" = ( +/turf/simulated/wall/r_wall, +/area/medical/first_aid_station/firstdeck) +"aus" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/obj/structure/cable{ + d1 = 1; + d2 = 2; + icon_state = "1-2"; + pixel_y = 0 + }, +/obj/structure/cable{ + d1 = 1; + d2 = 4; + icon_state = "1-4" + }, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/effect/floor_decal/steeldecal/steel_decals5, +/obj/effect/floor_decal/steeldecal/steel_decals4{ + dir = 9 + }, +/obj/effect/floor_decal/steeldecal/steel_decals4{ + dir = 4 + }, +/turf/simulated/floor/tiled, +/area/hallway/primary/firstdeck/port) +"aut" = ( +/obj/structure/cable{ + d2 = 8; + icon_state = "0-8" + }, +/obj/machinery/power/apc{ + dir = 1; + name = "north bump"; + pixel_x = 0; + pixel_y = 24 + }, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/effect/floor_decal/borderfloor/corner{ + dir = 4 + }, +/obj/effect/floor_decal/corner/green/bordercorner{ + dir = 4 + }, +/turf/simulated/floor/tiled, +/area/hallway/primary/firstdeck/port) +"auu" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/effect/floor_decal/borderfloor{ + dir = 1 + }, +/obj/effect/floor_decal/corner/green/border{ + dir = 1 + }, +/turf/simulated/floor/tiled, +/area/hallway/primary/firstdeck/port) +"auv" = ( +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/effect/floor_decal/borderfloor/corner{ + dir = 1 + }, +/obj/effect/floor_decal/corner/green/bordercorner{ + dir = 1 + }, +/turf/simulated/floor/tiled, +/area/hallway/primary/firstdeck/port) +"auw" = ( +/obj/structure/disposalpipe/segment{ + dir = 2; + icon_state = "pipe-c" + }, +/obj/structure/cable{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/obj/machinery/atmospherics/unary/vent_scrubber/on{ + dir = 4 + }, +/turf/simulated/floor/tiled, +/area/hallway/primary/firstdeck/port) +"aux" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{ + dir = 4 + }, +/turf/simulated/floor/tiled/monotile, +/area/hallway/primary/firstdeck/port) +"auy" = ( +/turf/simulated/floor/tiled, +/area/hallway/primary/firstdeck/port) +"auz" = ( +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/effect/floor_decal/steeldecal/steel_decals4{ + dir = 6 + }, +/obj/effect/floor_decal/steeldecal/steel_decals4{ + dir = 1 + }, +/turf/simulated/floor/tiled, +/area/hallway/primary/firstdeck/port) +"auA" = ( +/obj/machinery/door/firedoor/border_only, +/obj/effect/wingrille_spawn/reinforced, +/turf/simulated/floor/plating, +/area/ai_monitored/storage/eva/pilot) +"auB" = ( +/obj/machinery/alarm{ + pixel_y = 22 + }, +/obj/effect/floor_decal/borderfloor{ + dir = 1 + }, +/obj/effect/floor_decal/corner/paleblue/border{ + dir = 1 + }, +/obj/effect/floor_decal/borderfloor/corner2{ + dir = 4 + }, +/obj/effect/floor_decal/corner/paleblue/bordercorner2{ + dir = 4 + }, +/turf/simulated/floor/tiled, +/area/hallway/primary/firstdeck/port) +"auC" = ( +/obj/machinery/power/apc{ + dir = 1; + name = "north bump"; + pixel_x = 0; + pixel_y = 24 + }, +/obj/machinery/light_switch{ + pixel_x = 11; + pixel_y = 24 + }, +/obj/structure/cable{ + d2 = 2; + icon_state = "0-2"; + pixel_y = 0 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/effect/floor_decal/borderfloorwhite{ + dir = 1 + }, +/obj/effect/floor_decal/corner/paleblue/border{ + dir = 1 + }, +/obj/structure/bed/roller, +/turf/simulated/floor/tiled/white, +/area/medical/first_aid_station/firstdeck) +"auD" = ( +/obj/machinery/door/firedoor/border_only, +/obj/effect/wingrille_spawn/reinforced, +/turf/simulated/floor/plating, +/area/medical/first_aid_station/firstdeck) +"auE" = ( +/obj/machinery/light{ + dir = 1 + }, +/obj/machinery/atmospherics/unary/vent_pump/on, +/obj/machinery/firealarm{ + pixel_y = 24 + }, +/obj/effect/floor_decal/borderfloorwhite{ + dir = 1 + }, +/obj/effect/floor_decal/corner/paleblue/border{ + dir = 1 + }, +/turf/simulated/floor/tiled/white, +/area/medical/first_aid_station/firstdeck) +"auF" = ( +/obj/machinery/ai_status_display{ + pixel_y = 32 + }, +/obj/effect/floor_decal/borderfloorwhite{ + dir = 1 + }, +/obj/effect/floor_decal/corner/paleblue/border{ + dir = 1 + }, +/turf/simulated/floor/tiled/white, +/area/medical/first_aid_station/firstdeck) +"auG" = ( +/obj/effect/floor_decal/borderfloorwhite{ + dir = 1 + }, +/obj/effect/floor_decal/corner/paleblue/border{ + dir = 1 + }, +/obj/effect/floor_decal/industrial/warning{ + dir = 4 + }, +/obj/machinery/sleeper{ + dir = 4 + }, +/turf/simulated/floor/tiled/white, +/area/medical/first_aid_station/firstdeck) +"auH" = ( +/turf/simulated/wall/r_wall, +/area/hallway/primary/firstdeck/elevator) +"auI" = ( +/obj/structure/table/standard, +/obj/item/weapon/stock_parts/subspace/treatment, +/obj/item/weapon/stock_parts/subspace/treatment, +/obj/item/weapon/stock_parts/subspace/treatment, +/obj/machinery/light{ + icon_state = "tube1"; + dir = 8 + }, +/turf/simulated/floor, +/area/tcomm/tcomstorage) +"auJ" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/turf/simulated/floor, +/area/tcomm/tcomstorage) +"auK" = ( +/obj/structure/table/standard, +/obj/item/weapon/stock_parts/subspace/analyzer, +/obj/item/weapon/stock_parts/subspace/analyzer, +/obj/item/weapon/stock_parts/subspace/analyzer, +/turf/simulated/floor, +/area/tcomm/tcomstorage) +"auL" = ( +/obj/machinery/atmospherics/unary/vent_scrubber/on{ + dir = 4 + }, +/turf/simulated/floor/tiled, +/area/tcomm/tcomstorage) +"auM" = ( +/obj/structure/cable/cyan{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{ + dir = 4 + }, +/turf/simulated/floor/tiled, +/area/tcomm/tcomstorage) +"auN" = ( +/obj/machinery/alarm{ + dir = 8; + pixel_x = 22; + pixel_y = 0 + }, +/turf/simulated/floor/tiled, +/area/tcomm/tcomstorage) +"auO" = ( +/obj/structure/cable/green{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/obj/effect/floor_decal/borderfloor/corner{ + dir = 8 + }, +/obj/effect/floor_decal/corner/green/bordercorner{ + dir = 8 + }, +/turf/simulated/floor/tiled, +/area/hallway/primary/firstdeck/starboard) +"auP" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/obj/machinery/atmospherics/pipe/manifold/hidden/supply{ + dir = 8 + }, +/turf/simulated/floor/tiled/monotile, +/area/hallway/primary/firstdeck/starboard) +"auQ" = ( +/obj/structure/cable{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/obj/machinery/atmospherics/unary/vent_pump/on{ + dir = 8 + }, +/turf/simulated/floor/tiled, +/area/hallway/primary/firstdeck/starboard) +"auR" = ( +/obj/effect/floor_decal/borderfloor/corner{ + dir = 4 + }, +/obj/effect/floor_decal/corner/green/bordercorner{ + dir = 4 + }, +/turf/simulated/floor/tiled, +/area/hallway/primary/firstdeck/starboard) +"auS" = ( +/obj/effect/floor_decal/borderfloor{ + dir = 1 + }, +/obj/effect/floor_decal/corner/green/border{ + dir = 1 + }, +/turf/simulated/floor/tiled, +/area/hallway/primary/firstdeck/starboard) +"auT" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/effect/floor_decal/borderfloor{ + dir = 1 + }, +/obj/effect/floor_decal/corner/green/border{ + dir = 1 + }, +/turf/simulated/floor/tiled, +/area/hallway/primary/firstdeck/starboard) +"auU" = ( +/obj/machinery/firealarm{ + pixel_y = 24 + }, +/obj/machinery/camera/network/first_deck{ + c_tag = "First Deck - Starboard Hallway One"; + dir = 2 + }, +/obj/effect/floor_decal/borderfloor/corner{ + dir = 1 + }, +/obj/effect/floor_decal/corner/green/bordercorner{ + dir = 1 + }, +/turf/simulated/floor/tiled, +/area/hallway/primary/firstdeck/starboard) +"auV" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/structure/cable{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/obj/effect/floor_decal/steeldecal/steel_decals5, +/obj/effect/floor_decal/steeldecal/steel_decals4{ + dir = 4 + }, +/obj/effect/floor_decal/steeldecal/steel_decals4{ + dir = 9 + }, +/turf/simulated/floor/tiled, +/area/hallway/primary/firstdeck/starboard) +"auW" = ( +/obj/item/device/radio/intercom{ + dir = 1; + name = "Station Intercom (General)"; + pixel_y = 21 + }, +/obj/effect/floor_decal/steeldecal/steel_decals4{ + dir = 10 + }, +/obj/effect/floor_decal/steeldecal/steel_decals4, +/turf/simulated/floor/tiled, +/area/hallway/primary/firstdeck/starboard) +"auX" = ( +/obj/machinery/door/firedoor/border_only, +/obj/machinery/door/airlock/glass{ + name = "Central Access" + }, +/turf/simulated/floor/tiled/steel_grid, +/area/hallway/primary/firstdeck/starboard) +"auY" = ( +/obj/effect/floor_decal/steeldecal/steel_decals4{ + dir = 6 + }, +/obj/effect/floor_decal/steeldecal/steel_decals4{ + dir = 1 + }, +/turf/simulated/floor/tiled, +/area/hallway/primary/firstdeck/starboard) +"auZ" = ( +/obj/effect/floor_decal/borderfloor{ + dir = 1 + }, +/obj/effect/floor_decal/corner/green/border{ + dir = 1 + }, +/obj/effect/floor_decal/borderfloor/corner2{ + dir = 4 + }, +/obj/effect/floor_decal/corner/green/bordercorner2{ + dir = 4 + }, +/turf/simulated/floor/tiled, +/area/hallway/primary/firstdeck/starboard) +"ava" = ( +/obj/effect/floor_decal/borderfloor/corner{ + dir = 1 + }, +/obj/effect/floor_decal/corner/green/bordercorner{ + dir = 1 + }, +/turf/simulated/floor/tiled, +/area/hallway/primary/firstdeck/starboard) +"avb" = ( +/obj/machinery/ai_status_display{ + pixel_y = 32 + }, +/obj/effect/floor_decal/steeldecal/steel_decals5, +/turf/simulated/floor/tiled, +/area/hallway/primary/firstdeck/starboard) +"avc" = ( +/obj/machinery/atmospherics/unary/vent_pump/on, +/obj/structure/extinguisher_cabinet{ + pixel_y = 30 + }, +/obj/effect/floor_decal/borderfloor{ + dir = 1 + }, +/obj/effect/floor_decal/corner/green/border{ + dir = 1 + }, +/turf/simulated/floor/tiled, +/area/hallway/primary/firstdeck/starboard) +"avd" = ( +/obj/structure/cable{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/effect/floor_decal/borderfloor/corner{ + dir = 1 + }, +/obj/effect/floor_decal/corner/green/bordercorner{ + dir = 1 + }, +/turf/simulated/floor/tiled, +/area/hallway/primary/firstdeck/starboard) +"ave" = ( +/obj/machinery/firealarm{ + pixel_y = 24 + }, +/obj/machinery/camera/network/first_deck{ + c_tag = "First Deck - Starboard Hallway Three"; + dir = 2 + }, +/obj/effect/floor_decal/borderfloor{ + dir = 1 + }, +/obj/effect/floor_decal/corner/green/border{ + dir = 1 + }, +/turf/simulated/floor/tiled, +/area/hallway/primary/firstdeck/starboard) +"avf" = ( +/obj/effect/floor_decal/borderfloor{ + dir = 1 + }, +/obj/effect/floor_decal/corner/green/border{ + dir = 1 + }, +/obj/machinery/atmospherics/unary/vent_pump/on, +/turf/simulated/floor/tiled, +/area/hallway/primary/firstdeck/starboard) +"avg" = ( +/obj/effect/floor_decal/borderfloor{ + dir = 1 + }, +/obj/effect/floor_decal/corner/green/border{ + dir = 1 + }, +/obj/machinery/station_map{ + pixel_y = 32 + }, +/turf/simulated/floor/tiled, +/area/hallway/primary/firstdeck/starboard) +"avh" = ( +/obj/structure/cable{ + d1 = 1; + d2 = 2; + icon_state = "1-2"; + pixel_y = 0 + }, +/obj/effect/floor_decal/steeldecal/steel_decals4{ + dir = 4 + }, +/obj/effect/floor_decal/steeldecal/steel_decals4{ + dir = 9 + }, +/obj/effect/floor_decal/steeldecal/steel_decals5, +/turf/simulated/floor/tiled, +/area/hallway/primary/firstdeck/starboard) +"avi" = ( +/obj/machinery/door/firedoor/border_only, +/obj/effect/floor_decal/borderfloor{ + dir = 1 + }, +/obj/effect/floor_decal/corner/green/border{ + dir = 1 + }, +/turf/simulated/floor/tiled, +/area/hallway/primary/firstdeck/starboard) +"avj" = ( +/obj/effect/floor_decal/steeldecal/steel_decals4{ + dir = 9 + }, +/obj/effect/floor_decal/steeldecal/steel_decals4{ + dir = 4 + }, +/obj/effect/floor_decal/steeldecal/steel_decals5, +/turf/simulated/floor/tiled, +/area/hallway/primary/firstdeck/starboard) +"avk" = ( +/obj/structure/cable{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/obj/effect/floor_decal/steeldecal/steel_decals4{ + dir = 9 + }, +/obj/effect/floor_decal/steeldecal/steel_decals4{ + dir = 4 + }, +/obj/effect/floor_decal/steeldecal/steel_decals5, +/turf/simulated/floor/tiled, +/area/hallway/primary/firstdeck/starboard) +"avl" = ( +/obj/structure/sign/deck/first{ + pixel_y = 32 + }, +/obj/machinery/camera/network/first_deck{ + c_tag = "First Deck - Starboard Hallway Four"; + dir = 2 + }, +/obj/effect/floor_decal/borderfloor{ + dir = 1 + }, +/obj/effect/floor_decal/corner/green/border{ + dir = 1 + }, +/turf/simulated/floor/tiled, +/area/hallway/primary/firstdeck/starboard) +"avm" = ( +/obj/machinery/atmospherics/unary/vent_scrubber/on, +/obj/effect/floor_decal/borderfloor{ + dir = 1 + }, +/obj/effect/floor_decal/corner/green/border{ + dir = 1 + }, +/turf/simulated/floor/tiled, +/area/hallway/primary/firstdeck/starboard) +"avn" = ( +/obj/effect/floor_decal/borderfloorblack{ + dir = 5 + }, +/obj/effect/floor_decal/industrial/danger{ + dir = 5 + }, +/turf/simulated/floor/tiled/techfloor/grid, +/area/hallway/primary/firstdeck/starboard) +"avo" = ( +/obj/structure/ladder/up, +/obj/effect/floor_decal/industrial/outline/yellow, +/turf/simulated/floor/plating, +/area/maintenance/firstdeck/centralstarboard) +"avp" = ( +/obj/machinery/door/firedoor/border_only, +/obj/effect/wingrille_spawn/reinforced, +/turf/simulated/floor/plating, +/area/maintenance/firstdeck/centralstarboard) +"avq" = ( +/obj/machinery/light/small{ + dir = 4; + pixel_y = 0 + }, +/obj/structure/catwalk, +/turf/simulated/floor/plating, +/area/maintenance/firstdeck/centralport) +"avr" = ( +/obj/effect/floor_decal/borderfloorblack{ + dir = 8 + }, +/obj/effect/floor_decal/industrial/danger{ + dir = 8 + }, +/turf/simulated/floor/tiled/techfloor/grid, +/area/hallway/primary/firstdeck/port) +"avs" = ( +/obj/effect/floor_decal/steeldecal/steel_decals_central5{ + dir = 8 + }, +/turf/simulated/floor/tiled, +/area/hallway/primary/firstdeck/port) +"avt" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 5 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 6 + }, +/turf/simulated/floor/tiled/monotile, +/area/hallway/primary/firstdeck/port) +"avu" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, +/turf/simulated/floor/tiled/monotile, +/area/hallway/primary/firstdeck/port) +"avv" = ( +/obj/machinery/atmospherics/pipe/manifold/hidden/supply, +/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers, +/obj/structure/cable{ + d1 = 1; + d2 = 4; + icon_state = "1-4" + }, +/turf/simulated/floor/tiled/monotile, +/area/hallway/primary/firstdeck/port) +"avw" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, +/obj/structure/cable{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/turf/simulated/floor/tiled/monotile, +/area/hallway/primary/firstdeck/port) +"avx" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, +/obj/structure/cable{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/obj/machinery/door/firedoor/glass, +/turf/simulated/floor/tiled/monotile, +/area/hallway/primary/firstdeck/port) +"avy" = ( +/obj/machinery/atmospherics/pipe/manifold/hidden/supply{ + dir = 1 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, +/obj/structure/cable{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/turf/simulated/floor/tiled/monotile, +/area/hallway/primary/firstdeck/port) +"avz" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, +/obj/structure/cable{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/obj/structure/cable{ + d1 = 1; + d2 = 4; + icon_state = "1-4" + }, +/obj/structure/cable{ + d1 = 2; + d2 = 4; + icon_state = "2-4" + }, +/turf/simulated/floor/tiled/monotile, +/area/hallway/primary/firstdeck/port) +"avA" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers, +/obj/structure/cable{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/turf/simulated/floor/tiled/monotile, +/area/hallway/primary/firstdeck/port) +"avB" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, +/obj/structure/cable{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/obj/structure/disposalpipe/segment, +/turf/simulated/floor/tiled/monotile, +/area/hallway/primary/firstdeck/port) +"avC" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, +/obj/structure/cable{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/obj/machinery/hologram/holopad, +/obj/effect/floor_decal/industrial/outline/grey, +/turf/simulated/floor/tiled/monotile, +/area/hallway/primary/firstdeck/port) +"avD" = ( +/obj/machinery/atmospherics/pipe/manifold4w/hidden/supply, +/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers, +/obj/structure/cable{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/obj/structure/cable{ + d1 = 1; + d2 = 4; + icon_state = "1-4" + }, +/turf/simulated/floor/tiled/monotile, +/area/hallway/primary/firstdeck/port) +"avE" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, +/obj/structure/cable{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/turf/simulated/floor/tiled, +/area/hallway/primary/firstdeck/port) +"avF" = ( +/obj/effect/wingrille_spawn/reinforced, +/obj/machinery/door/firedoor/glass, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, +/obj/structure/cable{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/turf/simulated/floor/plating, +/area/hallway/primary/firstdeck/port) +"avG" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, +/obj/structure/cable{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/obj/effect/floor_decal/steeldecal/steel_decals5{ + dir = 4 + }, +/turf/simulated/floor/tiled, +/area/hallway/primary/firstdeck/port) +"avH" = ( +/obj/machinery/atmospherics/pipe/manifold4w/hidden/supply, +/obj/machinery/atmospherics/pipe/manifold4w/hidden/scrubbers, +/obj/structure/cable{ + d1 = 1; + d2 = 8; + icon_state = "1-8" + }, +/obj/structure/cable{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/obj/structure/cable{ + d1 = 1; + d2 = 4; + icon_state = "1-4" + }, +/turf/simulated/floor/tiled/monotile, +/area/hallway/primary/firstdeck/port) +"avI" = ( +/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers, +/obj/machinery/atmospherics/pipe/manifold/hidden/supply{ + dir = 1 + }, +/obj/structure/cable{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/turf/simulated/floor/tiled/monotile, +/area/hallway/primary/firstdeck/port) +"avJ" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, +/obj/structure/cable{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/obj/structure/disposalpipe/segment, +/obj/structure/cable{ + d1 = 1; + d2 = 8; + icon_state = "1-8" + }, +/obj/structure/cable{ + d1 = 2; + d2 = 8; + icon_state = "2-8" + }, +/turf/simulated/floor/tiled/monotile, +/area/hallway/primary/firstdeck/port) +"avK" = ( +/obj/machinery/atmospherics/pipe/manifold4w/hidden/supply, +/obj/machinery/atmospherics/pipe/manifold4w/hidden/scrubbers, +/obj/structure/cable{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/obj/machinery/hologram/holopad, +/obj/effect/floor_decal/industrial/outline/grey, +/turf/simulated/floor/tiled/monotile, +/area/hallway/primary/firstdeck/port) +"avL" = ( +/obj/structure/window/reinforced{ + dir = 8 + }, +/obj/effect/floor_decal/borderfloorwhite{ + dir = 1 + }, +/obj/effect/floor_decal/corner/paleblue/border{ + dir = 1 + }, +/obj/machinery/sleep_console{ + dir = 4 + }, +/obj/structure/closet/secure_closet/medical_wall{ + name = "defibrillator closet"; + pixel_y = 31 + }, +/obj/item/device/defib_kit/loaded, +/turf/simulated/floor/tiled/white, +/area/medical/first_aid_station/firstdeck) +"avM" = ( +/obj/structure/table/steel, +/obj/machinery/cell_charger, +/obj/random/tech_supply, +/obj/item/weapon/storage/toolbox/mechanical, +/obj/random/powercell, +/obj/machinery/atmospherics/unary/vent_scrubber/on, +/obj/machinery/alarm{ + pixel_y = 22 + }, +/turf/simulated/floor/tiled/techmaint, +/area/medical/first_aid_station/firstdeck) +"avN" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, +/obj/structure/cable{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/obj/effect/floor_decal/steeldecal/steel_decals5{ + dir = 8 + }, +/obj/effect/floor_decal/steeldecal/steel_decals4, +/obj/effect/floor_decal/steeldecal/steel_decals4{ + dir = 10 + }, +/turf/simulated/floor/tiled, +/area/hallway/primary/firstdeck/port) +"avO" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, +/obj/structure/cable{ + d1 = 1; + d2 = 8; + icon_state = "1-8" + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/effect/floor_decal/steeldecal/steel_decals4{ + dir = 1 + }, +/obj/effect/floor_decal/steeldecal/steel_decals4{ + dir = 6 + }, +/turf/simulated/floor/tiled/white, +/area/medical/first_aid_station/firstdeck) +"avP" = ( +/obj/machinery/door/firedoor/glass, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, +/obj/machinery/door/airlock/glass_medical{ + name = "First-Aid Station"; + req_one_access = list(5,12,19,25,27,28,35) + }, +/obj/structure/cable{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/turf/simulated/floor/tiled/steel_grid, +/area/medical/first_aid_station/firstdeck) +"avQ" = ( +/obj/machinery/hologram/holopad, +/obj/effect/floor_decal/industrial/outline/grey, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/manifold/hidden/supply, +/turf/simulated/floor/tiled/white, +/area/medical/first_aid_station/firstdeck) +"avR" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{ + dir = 1 + }, +/turf/simulated/floor/tiled/white, +/area/medical/first_aid_station/firstdeck) +"avS" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, +/obj/effect/floor_decal/industrial/warning{ + dir = 4 + }, +/turf/simulated/floor/tiled/white, +/area/medical/first_aid_station/firstdeck) +"avT" = ( +/obj/structure/table/standard, +/obj/item/weapon/stock_parts/subspace/amplifier, +/obj/item/weapon/stock_parts/subspace/amplifier, +/obj/item/weapon/stock_parts/subspace/amplifier, +/obj/structure/cable/cyan{ + d2 = 4; + icon_state = "0-4" + }, +/obj/machinery/power/apc{ + dir = 8; + name = "west bump"; + pixel_x = -24 + }, +/obj/machinery/light_switch{ + pixel_x = -36 + }, +/turf/simulated/floor, +/area/tcomm/tcomstorage) +"avU" = ( +/obj/structure/cable/cyan{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 6 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 5 + }, +/turf/simulated/floor, +/area/tcomm/tcomstorage) +"avV" = ( +/obj/structure/cable/cyan{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, +/turf/simulated/floor, +/area/tcomm/tcomstorage) +"avW" = ( +/obj/structure/cable/cyan{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/obj/machinery/door/firedoor/border_only, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, +/obj/machinery/door/airlock/maintenance_hatch{ + name = "Telecoms Storage"; + req_access = list(61) + }, +/turf/simulated/floor, +/area/tcomm/tcomstorage) +"avX" = ( +/obj/structure/cable/cyan{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, +/turf/simulated/floor/tiled, +/area/tcomm/tcomstorage) +"avY" = ( +/obj/structure/cable/cyan{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/obj/structure/cable/cyan{ + d1 = 2; + d2 = 8; + icon_state = "2-8" + }, +/obj/machinery/atmospherics/pipe/manifold/hidden/supply{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{ + dir = 4 + }, +/obj/machinery/hologram/holopad, +/obj/effect/floor_decal/industrial/outline/grey, +/turf/simulated/floor/tiled, +/area/tcomm/tcomstorage) +"avZ" = ( +/turf/simulated/floor/tiled, +/area/tcomm/tcomstorage) +"awa" = ( +/obj/structure/cable/green{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/obj/machinery/light{ + dir = 8; + icon_state = "tube1"; + pixel_y = 0 + }, +/obj/effect/floor_decal/borderfloor{ + dir = 8 + }, +/obj/effect/floor_decal/corner/green/border{ + dir = 8 + }, +/turf/simulated/floor/tiled, +/area/hallway/primary/firstdeck/starboard) +"awb" = ( +/obj/machinery/atmospherics/pipe/manifold/hidden/supply{ + dir = 8 + }, +/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{ + dir = 8 + }, +/obj/machinery/hologram/holopad, +/obj/effect/floor_decal/industrial/outline/grey, +/turf/simulated/floor/tiled/monotile, +/area/hallway/primary/firstdeck/starboard) +"awc" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/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/tiled/monotile, +/area/hallway/primary/firstdeck/starboard) +"awd" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/obj/structure/cable{ + d1 = 4; + d2 = 8; + icon_state = "4-8"; + pixel_x = 0 + }, +/turf/simulated/floor/tiled/monotile, +/area/hallway/primary/firstdeck/starboard) +"awe" = ( +/obj/machinery/atmospherics/pipe/manifold/hidden/supply, +/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{ + dir = 1 + }, +/obj/structure/cable{ + d1 = 4; + d2 = 8; + icon_state = "4-8"; + pixel_x = 0 + }, +/turf/simulated/floor/tiled/monotile, +/area/hallway/primary/firstdeck/starboard) +"awf" = ( +/obj/machinery/atmospherics/pipe/manifold4w/hidden/supply, +/obj/machinery/atmospherics/pipe/manifold4w/hidden/scrubbers, +/obj/structure/cable{ + d1 = 2; + d2 = 4; + icon_state = "2-4" + }, +/obj/structure/cable{ + d1 = 1; + d2 = 4; + icon_state = "1-4" + }, +/obj/structure/cable{ + d1 = 4; + d2 = 8; + icon_state = "4-8"; + pixel_x = 0 + }, +/turf/simulated/floor/tiled/monotile, +/area/hallway/primary/firstdeck/starboard) +"awg" = ( +/obj/structure/cable{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/obj/effect/floor_decal/steeldecal/steel_decals5{ + dir = 8 + }, +/turf/simulated/floor/tiled, +/area/hallway/primary/firstdeck/starboard) +"awh" = ( +/obj/effect/wingrille_spawn/reinforced, +/obj/machinery/door/firedoor/glass, +/obj/structure/cable{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/turf/simulated/floor/plating, +/area/hallway/primary/firstdeck/starboard) +"awi" = ( +/obj/structure/cable{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/obj/effect/floor_decal/steeldecal/steel_decals5{ + dir = 4 + }, +/turf/simulated/floor/tiled, +/area/hallway/primary/firstdeck/starboard) +"awj" = ( +/obj/structure/cable{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{ + dir = 1 + }, +/turf/simulated/floor/tiled/monotile, +/area/hallway/primary/firstdeck/starboard) +"awk" = ( +/obj/structure/cable{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, +/turf/simulated/floor/tiled/monotile, +/area/hallway/primary/firstdeck/starboard) +"awl" = ( +/obj/structure/cable{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/turf/simulated/floor/tiled/monotile, +/area/hallway/primary/firstdeck/starboard) +"awm" = ( +/obj/structure/cable{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/manifold/hidden/supply, +/turf/simulated/floor/tiled/monotile, +/area/hallway/primary/firstdeck/starboard) +"awn" = ( +/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/machinery/atmospherics/pipe/manifold4w/hidden/supply, +/obj/machinery/atmospherics/pipe/manifold4w/hidden/scrubbers, +/turf/simulated/floor/tiled/monotile, +/area/hallway/primary/firstdeck/starboard) +"awo" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, +/obj/structure/cable{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/obj/machinery/hologram/holopad, +/obj/effect/floor_decal/industrial/outline/grey, +/turf/simulated/floor/tiled/monotile, +/area/hallway/primary/firstdeck/starboard) +"awp" = ( +/obj/structure/cable{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{ + dir = 1 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/turf/simulated/floor/tiled/monotile, +/area/hallway/primary/firstdeck/starboard) +"awq" = ( +/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" + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/turf/simulated/floor/tiled/monotile, +/area/hallway/primary/firstdeck/starboard) +"awr" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, +/obj/structure/cable{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/obj/machinery/door/firedoor/glass, +/turf/simulated/floor/tiled/monotile, +/area/hallway/primary/firstdeck/starboard) +"aws" = ( +/obj/structure/cable{ + d1 = 2; + d2 = 8; + icon_state = "2-8" + }, +/obj/structure/cable{ + d1 = 1; + d2 = 8; + icon_state = "1-8" + }, +/obj/machinery/atmospherics/pipe/manifold4w/hidden/supply, +/obj/machinery/atmospherics/pipe/manifold4w/hidden/scrubbers, +/turf/simulated/floor/tiled/monotile, +/area/hallway/primary/firstdeck/starboard) +"awt" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, +/turf/simulated/floor/tiled/monotile, +/area/hallway/primary/firstdeck/starboard) +"awu" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 9 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 10 + }, +/turf/simulated/floor/tiled/monotile, +/area/hallway/primary/firstdeck/starboard) +"awv" = ( +/obj/effect/floor_decal/steeldecal/steel_decals5{ + dir = 8 + }, +/obj/effect/floor_decal/steeldecal/steel_decals_central5{ + dir = 4 + }, +/turf/simulated/floor/tiled, +/area/hallway/primary/firstdeck/starboard) +"aww" = ( +/obj/effect/floor_decal/borderfloorblack{ + dir = 4 + }, +/obj/effect/floor_decal/industrial/danger{ + dir = 4 + }, +/turf/simulated/floor/tiled/techfloor/grid, +/area/hallway/primary/firstdeck/starboard) +"awx" = ( +/obj/machinery/light/small{ + dir = 8 + }, +/obj/machinery/portable_atmospherics/powered/scrubber, +/turf/simulated/floor/plating, +/area/maintenance/firstdeck/centralstarboard) +"awy" = ( +/obj/structure/ladder/up, +/obj/effect/floor_decal/industrial/outline/yellow, +/turf/simulated/floor/plating, +/area/maintenance/firstdeck/centralport) +"awz" = ( +/obj/effect/floor_decal/borderfloorblack{ + dir = 10 + }, +/obj/effect/floor_decal/industrial/danger{ + dir = 10 + }, +/turf/simulated/floor/tiled/techfloor/grid, +/area/hallway/primary/firstdeck/port) +"awA" = ( +/obj/effect/floor_decal/borderfloor, +/obj/effect/floor_decal/corner/brown/border, +/turf/simulated/floor/tiled, +/area/hallway/primary/firstdeck/port) +"awB" = ( +/obj/machinery/atmospherics/unary/vent_scrubber/on{ + dir = 1 + }, +/obj/effect/floor_decal/borderfloor, +/obj/effect/floor_decal/corner/brown/border, +/turf/simulated/floor/tiled, +/area/hallway/primary/firstdeck/port) +"awC" = ( +/obj/structure/sign/deck/first{ + pixel_y = -32 + }, +/obj/machinery/camera/network/first_deck{ + c_tag = "First Deck - Port Hallway Four"; + dir = 1 + }, +/obj/effect/floor_decal/borderfloor, +/obj/effect/floor_decal/corner/brown/border, +/turf/simulated/floor/tiled, +/area/hallway/primary/firstdeck/port) +"awD" = ( +/obj/effect/floor_decal/borderfloor/corner{ + dir = 8 + }, +/obj/effect/floor_decal/corner/brown/bordercorner{ + dir = 8 + }, +/turf/simulated/floor/tiled, +/area/hallway/primary/firstdeck/port) +"awE" = ( +/obj/effect/floor_decal/steeldecal/steel_decals5{ + dir = 1 + }, +/obj/effect/floor_decal/steeldecal/steel_decals4{ + dir = 8 + }, +/obj/effect/floor_decal/steeldecal/steel_decals4{ + dir = 5 + }, +/turf/simulated/floor/tiled, +/area/hallway/primary/firstdeck/port) +"awF" = ( +/obj/item/device/radio/intercom{ + name = "Station Intercom (General)"; + pixel_y = -21 + }, +/obj/effect/floor_decal/steeldecal/steel_decals5{ + dir = 1 + }, +/turf/simulated/floor/tiled, +/area/hallway/primary/firstdeck/port) +"awG" = ( +/obj/effect/floor_decal/borderfloor/corner, +/obj/effect/floor_decal/corner/brown/bordercorner, +/turf/simulated/floor/tiled, +/area/hallway/primary/firstdeck/port) +"awH" = ( +/obj/machinery/door/firedoor/border_only, +/obj/effect/floor_decal/borderfloor, +/obj/effect/floor_decal/corner/brown/border, +/turf/simulated/floor/tiled, +/area/hallway/primary/firstdeck/port) +"awI" = ( +/obj/machinery/atmospherics/unary/vent_pump/on{ + dir = 1 + }, +/obj/effect/floor_decal/borderfloor/corner{ + dir = 8 + }, +/obj/effect/floor_decal/corner/brown/bordercorner{ + dir = 8 + }, +/turf/simulated/floor/tiled, +/area/hallway/primary/firstdeck/port) +"awJ" = ( +/obj/structure/cable{ + d1 = 1; + d2 = 2; + icon_state = "1-2"; + pixel_y = 0 + }, +/obj/effect/floor_decal/steeldecal/steel_decals5{ + dir = 1 + }, +/obj/effect/floor_decal/steeldecal/steel_decals4{ + dir = 5 + }, +/obj/effect/floor_decal/steeldecal/steel_decals4{ + dir = 8 + }, +/turf/simulated/floor/tiled, +/area/hallway/primary/firstdeck/port) +"awK" = ( +/obj/machinery/light, +/obj/effect/floor_decal/borderfloor/corner, +/obj/effect/floor_decal/corner/brown/bordercorner, +/turf/simulated/floor/tiled, +/area/hallway/primary/firstdeck/port) +"awL" = ( +/obj/machinery/alarm{ + dir = 1; + pixel_y = -22 + }, +/obj/machinery/camera/network/first_deck{ + c_tag = "First Deck - Port Hallway Three"; + dir = 1 + }, +/obj/effect/floor_decal/borderfloor, +/obj/effect/floor_decal/corner/brown/border, +/turf/simulated/floor/tiled, +/area/hallway/primary/firstdeck/port) +"awM" = ( +/obj/structure/disposalpipe/segment, +/obj/effect/floor_decal/borderfloor/corner{ + dir = 8 + }, +/obj/effect/floor_decal/corner/brown/bordercorner{ + dir = 8 + }, +/turf/simulated/floor/tiled, +/area/hallway/primary/firstdeck/port) +"awN" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/effect/floor_decal/borderfloor/corner, +/obj/effect/floor_decal/corner/brown/bordercorner, +/turf/simulated/floor/tiled, +/area/hallway/primary/firstdeck/port) +"awO" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 10 + }, +/obj/machinery/door/window/westleft{ + name = "Medical Staff Only"; + req_one_access = list(5) + }, +/turf/simulated/floor/tiled/white, +/area/medical/first_aid_station/firstdeck) +"awP" = ( +/obj/machinery/atmospherics/unary/vent_pump/on{ + dir = 1 + }, +/obj/structure/extinguisher_cabinet{ + pixel_y = -30 + }, +/obj/effect/floor_decal/borderfloor, +/obj/effect/floor_decal/corner/brown/border, +/turf/simulated/floor/tiled, +/area/hallway/primary/firstdeck/port) +"awQ" = ( +/obj/machinery/newscaster{ + pixel_x = 30; + pixel_y = 0 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 9 + }, +/obj/machinery/mech_recharger, +/turf/simulated/floor/tiled/techmaint, +/area/medical/first_aid_station/firstdeck) +"awR" = ( +/obj/machinery/ai_status_display{ + pixel_y = -32 + }, +/obj/effect/floor_decal/borderfloor, +/obj/effect/floor_decal/corner/brown/border, +/turf/simulated/floor/tiled, +/area/hallway/primary/firstdeck/port) +"awS" = ( +/obj/effect/floor_decal/borderfloor, +/obj/effect/floor_decal/corner/brown/border, +/obj/effect/floor_decal/borderfloor/corner2{ + dir = 9 + }, +/obj/effect/floor_decal/corner/brown/bordercorner2{ + dir = 9 + }, +/turf/simulated/floor/tiled, +/area/hallway/primary/firstdeck/port) +"awT" = ( +/obj/effect/floor_decal/steeldecal/steel_decals4, +/obj/effect/floor_decal/steeldecal/steel_decals4{ + dir = 10 + }, +/turf/simulated/floor/tiled, +/area/hallway/primary/firstdeck/port) +"awU" = ( +/obj/machinery/door/firedoor/border_only, +/obj/machinery/door/airlock/glass{ + name = "Central Access" + }, +/turf/simulated/floor/tiled/steel_grid, +/area/hallway/primary/firstdeck/port) +"awV" = ( +/obj/item/device/radio/intercom{ + name = "Station Intercom (General)"; + pixel_y = -21 + }, +/obj/effect/floor_decal/steeldecal/steel_decals4{ + dir = 6 + }, +/obj/effect/floor_decal/steeldecal/steel_decals4{ + dir = 1 + }, +/turf/simulated/floor/tiled, +/area/hallway/primary/firstdeck/port) +"awW" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/obj/structure/cable{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/obj/effect/floor_decal/steeldecal/steel_decals5{ + dir = 1 + }, +/obj/effect/floor_decal/steeldecal/steel_decals4{ + dir = 5 + }, +/obj/effect/floor_decal/steeldecal/steel_decals4{ + dir = 8 + }, +/turf/simulated/floor/tiled, +/area/hallway/primary/firstdeck/port) +"awX" = ( +/obj/machinery/camera/network/first_deck{ + c_tag = "First Deck - Port Hallway One"; + dir = 1 + }, +/obj/machinery/firealarm{ + dir = 1; + pixel_y = -24 + }, +/obj/effect/floor_decal/borderfloor/corner, +/obj/effect/floor_decal/corner/green/bordercorner, +/turf/simulated/floor/tiled, +/area/hallway/primary/firstdeck/port) +"awY" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/effect/floor_decal/borderfloor, +/obj/effect/floor_decal/corner/green/border, +/turf/simulated/floor/tiled, +/area/hallway/primary/firstdeck/port) +"awZ" = ( +/obj/effect/floor_decal/borderfloor, +/obj/effect/floor_decal/corner/green/border, +/turf/simulated/floor/tiled, +/area/hallway/primary/firstdeck/port) +"axa" = ( +/obj/effect/floor_decal/borderfloor/corner{ + dir = 8 + }, +/obj/effect/floor_decal/corner/green/bordercorner{ + dir = 8 + }, +/turf/simulated/floor/tiled, +/area/hallway/primary/firstdeck/port) +"axb" = ( +/obj/structure/disposalpipe/segment, +/obj/structure/cable{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/obj/machinery/atmospherics/unary/vent_pump/on{ + dir = 4 + }, +/turf/simulated/floor/tiled, +/area/hallway/primary/firstdeck/port) +"axc" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/obj/machinery/atmospherics/pipe/manifold/hidden/supply{ + dir = 4 + }, +/turf/simulated/floor/tiled/monotile, +/area/hallway/primary/firstdeck/port) +"axd" = ( +/obj/effect/floor_decal/borderfloor, +/obj/effect/floor_decal/corner/paleblue/border, +/obj/effect/floor_decal/borderfloor/corner2, +/obj/effect/floor_decal/corner/paleblue/bordercorner2, +/turf/simulated/floor/tiled, +/area/hallway/primary/firstdeck/port) +"axe" = ( +/obj/machinery/vending/wallmed1{ + name = "NanoMed Wall"; + pixel_x = 0; + pixel_y = -30 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/structure/table/rack, +/obj/item/weapon/storage/toolbox/emergency, +/obj/random/medical/lite, +/obj/effect/floor_decal/borderfloorwhite, +/obj/effect/floor_decal/corner/paleblue/border, +/turf/simulated/floor/tiled/white, +/area/medical/first_aid_station/firstdeck) +"axf" = ( +/obj/structure/table/glass, +/obj/machinery/alarm{ + dir = 1; + pixel_y = -22 + }, +/obj/effect/floor_decal/borderfloorwhite, +/obj/effect/floor_decal/corner/paleblue/border, +/obj/item/roller, +/obj/item/bodybag/cryobag, +/obj/item/weapon/storage/firstaid/regular, +/obj/item/weapon/storage/pill_bottle/spaceacillin, +/turf/simulated/floor/tiled/white, +/area/medical/first_aid_station/firstdeck) +"axg" = ( +/obj/machinery/atmospherics/unary/vent_scrubber/on{ + dir = 1 + }, +/obj/structure/table/glass, +/obj/item/device/radio{ + frequency = 1487; + icon_state = "med_walkietalkie"; + name = "Medbay Emergency Radio Link" + }, +/obj/item/device/radio{ + frequency = 1487; + icon_state = "med_walkietalkie"; + name = "Medbay Emergency Radio Link" + }, +/obj/effect/floor_decal/borderfloorwhite, +/obj/effect/floor_decal/corner/paleblue/border, +/turf/simulated/floor/tiled/white, +/area/medical/first_aid_station/firstdeck) +"axh" = ( +/obj/structure/extinguisher_cabinet{ + pixel_y = -30 + }, +/obj/structure/bed/chair/office/light{ + dir = 4 + }, +/obj/effect/floor_decal/borderfloorwhite, +/obj/effect/floor_decal/corner/paleblue/border, +/obj/effect/floor_decal/industrial/warning{ + dir = 4 + }, +/turf/simulated/floor/tiled/white, +/area/medical/first_aid_station/firstdeck) +"axi" = ( +/obj/item/device/radio/intercom{ + name = "Station Intercom (General)"; + pixel_y = -21 + }, +/obj/machinery/camera/network/medbay{ + c_tag = "MED - FA Station Deck One"; + dir = 1 + }, +/obj/structure/window/reinforced{ + dir = 8 + }, +/obj/machinery/atmospherics/unary/vent_pump/on{ + dir = 1 + }, +/obj/structure/table/rack, +/obj/item/weapon/tool/crowbar, +/obj/item/weapon/tool/crowbar, +/obj/item/roller, +/obj/item/roller, +/obj/effect/floor_decal/borderfloorwhite, +/obj/effect/floor_decal/corner/paleblue/border, +/turf/simulated/floor/tiled/white, +/area/medical/first_aid_station/firstdeck) +"axj" = ( +/obj/machinery/computer/crew, +/turf/simulated/floor/tiled/techmaint, +/area/medical/first_aid_station/firstdeck) +"axk" = ( +/turf/simulated/floor, +/area/tcomm/tcomstorage) +"axl" = ( +/obj/item/weapon/storage/toolbox/mechanical, +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/turf/simulated/floor, +/area/tcomm/tcomstorage) +"axm" = ( +/obj/structure/table/standard, +/obj/item/weapon/stock_parts/subspace/ansible, +/obj/item/weapon/stock_parts/subspace/ansible, +/obj/item/weapon/stock_parts/subspace/ansible, +/turf/simulated/floor, +/area/tcomm/tcomstorage) +"axn" = ( +/obj/structure/cable/cyan{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/obj/machinery/atmospherics/pipe/manifold/hidden/supply{ + dir = 8 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/turf/simulated/floor/tiled, +/area/tcomm/tcomstorage) +"axo" = ( +/obj/machinery/atmospherics/unary/vent_pump/on{ + dir = 8 + }, +/obj/machinery/light{ + dir = 4 + }, +/obj/machinery/firealarm{ + dir = 4; + pixel_x = 24 + }, +/turf/simulated/floor/tiled, +/area/tcomm/tcomstorage) +"axp" = ( +/obj/structure/cable/green{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/obj/machinery/alarm{ + dir = 4; + icon_state = "alarm0"; + pixel_x = -22 + }, +/obj/effect/floor_decal/borderfloor/corner{ + dir = 1 + }, +/obj/effect/floor_decal/corner/green/bordercorner{ + dir = 1 + }, +/turf/simulated/floor/tiled, +/area/hallway/primary/firstdeck/starboard) +"axq" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{ + dir = 8 + }, +/turf/simulated/floor/tiled/monotile, +/area/hallway/primary/firstdeck/starboard) +"axr" = ( +/obj/structure/cable{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/obj/machinery/atmospherics/unary/vent_scrubber/on{ + dir = 8 + }, +/turf/simulated/floor/tiled, +/area/hallway/primary/firstdeck/starboard) +"axs" = ( +/obj/effect/floor_decal/borderfloor, +/obj/effect/floor_decal/corner/green/border, +/turf/simulated/floor/tiled, +/area/hallway/primary/firstdeck/starboard) +"axt" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/obj/effect/floor_decal/borderfloor, +/obj/effect/floor_decal/corner/green/border, +/turf/simulated/floor/tiled, +/area/hallway/primary/firstdeck/starboard) +"axu" = ( +/obj/machinery/power/apc{ + dir = 2; + name = "south bump"; + pixel_y = -24 + }, +/obj/structure/cable{ + icon_state = "0-4"; + d2 = 4 + }, +/obj/effect/floor_decal/borderfloor/corner{ + dir = 8 + }, +/obj/effect/floor_decal/corner/green/bordercorner{ + dir = 8 + }, +/turf/simulated/floor/tiled, +/area/hallway/primary/firstdeck/starboard) +"axv" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/structure/cable{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/obj/structure/cable{ + d1 = 2; + d2 = 8; + icon_state = "2-8" + }, +/obj/effect/floor_decal/steeldecal/steel_decals5{ + dir = 1 + }, +/obj/effect/floor_decal/steeldecal/steel_decals4{ + dir = 8 + }, +/obj/effect/floor_decal/steeldecal/steel_decals4{ + dir = 5 + }, +/turf/simulated/floor/tiled, +/area/hallway/primary/firstdeck/starboard) +"axw" = ( +/obj/structure/extinguisher_cabinet{ + pixel_y = -30 + }, +/obj/effect/floor_decal/steeldecal/steel_decals4{ + dir = 10 + }, +/obj/effect/floor_decal/steeldecal/steel_decals4, +/turf/simulated/floor/tiled, +/area/hallway/primary/firstdeck/starboard) +"axx" = ( +/obj/effect/floor_decal/steeldecal/steel_decals4{ + dir = 1 + }, +/obj/effect/floor_decal/steeldecal/steel_decals4{ + dir = 6 + }, +/turf/simulated/floor/tiled, +/area/hallway/primary/firstdeck/starboard) +"axy" = ( +/obj/machinery/light, +/obj/effect/floor_decal/borderfloor, +/obj/effect/floor_decal/corner/green/border, +/obj/machinery/atmospherics/unary/vent_scrubber/on{ + dir = 1 + }, +/obj/effect/floor_decal/borderfloor/corner2, +/obj/effect/floor_decal/corner/green/bordercorner2, +/turf/simulated/floor/tiled, +/area/hallway/primary/firstdeck/starboard) +"axz" = ( +/obj/effect/floor_decal/borderfloor/corner{ + dir = 8 + }, +/obj/effect/floor_decal/corner/green/bordercorner{ + dir = 8 + }, +/turf/simulated/floor/tiled, +/area/hallway/primary/firstdeck/starboard) +"axA" = ( +/obj/machinery/status_display{ + density = 0; + layer = 4; + pixel_x = 0; + pixel_y = -32 + }, +/obj/effect/floor_decal/steeldecal/steel_decals5{ + dir = 1 + }, +/turf/simulated/floor/tiled, +/area/hallway/primary/firstdeck/starboard) +"axB" = ( +/obj/machinery/camera/network/first_deck{ + c_tag = "First Deck - Starboard Hallway Two"; + dir = 1 + }, +/obj/effect/floor_decal/borderfloor/corner, +/obj/effect/floor_decal/corner/green/bordercorner, +/turf/simulated/floor/tiled, +/area/hallway/primary/firstdeck/starboard) +"axC" = ( +/obj/structure/sign/greencross{ + desc = "White cross in a green field, you can get medical aid here."; + name = "First-Aid" + }, +/turf/simulated/wall, +/area/medical/first_aid_station/firstdeck) +"axD" = ( +/obj/effect/floor_decal/borderfloor, +/obj/effect/floor_decal/corner/green/border, +/obj/structure/closet/medical_wall{ + pixel_y = -31 + }, +/obj/item/roller, +/obj/item/bodybag/cryobag, +/obj/item/weapon/storage/firstaid/regular, +/obj/item/weapon/storage/pill_bottle/spaceacillin, +/turf/simulated/floor/tiled, +/area/hallway/primary/firstdeck/starboard) +"axE" = ( +/obj/structure/cable{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/effect/floor_decal/borderfloor/corner{ + dir = 8 + }, +/obj/effect/floor_decal/corner/green/bordercorner{ + dir = 8 + }, +/turf/simulated/floor/tiled, +/area/hallway/primary/firstdeck/starboard) +"axF" = ( +/obj/machinery/alarm{ + dir = 1; + pixel_y = -22 + }, +/obj/effect/floor_decal/borderfloor, +/obj/effect/floor_decal/corner/green/border, +/turf/simulated/floor/tiled, +/area/hallway/primary/firstdeck/starboard) +"axG" = ( +/obj/effect/floor_decal/borderfloor, +/obj/effect/floor_decal/corner/brown/border, +/obj/machinery/station_map{ + dir = 1; + pixel_y = -32 + }, +/turf/simulated/floor/tiled, +/area/hallway/primary/firstdeck/port) +"axH" = ( +/obj/machinery/light, +/obj/effect/floor_decal/borderfloor/corner{ + dir = 8 + }, +/obj/effect/floor_decal/corner/green/bordercorner{ + dir = 8 + }, +/turf/simulated/floor/tiled, +/area/hallway/primary/firstdeck/starboard) +"axI" = ( +/obj/structure/cable{ + d1 = 1; + d2 = 2; + icon_state = "1-2"; + pixel_y = 0 + }, +/obj/effect/floor_decal/steeldecal/steel_decals4{ + dir = 8 + }, +/obj/effect/floor_decal/steeldecal/steel_decals4{ + dir = 5 + }, +/turf/simulated/floor/tiled, +/area/hallway/primary/firstdeck/starboard) +"axJ" = ( +/obj/machinery/door/firedoor/border_only, +/obj/effect/floor_decal/borderfloor, +/obj/effect/floor_decal/corner/green/border, +/turf/simulated/floor/tiled, +/area/hallway/primary/firstdeck/starboard) +"axK" = ( +/obj/effect/floor_decal/steeldecal/steel_decals4{ + dir = 5 + }, +/obj/effect/floor_decal/steeldecal/steel_decals4{ + dir = 8 + }, +/obj/effect/floor_decal/steeldecal/steel_decals5{ + dir = 1 + }, +/turf/simulated/floor/tiled, +/area/hallway/primary/firstdeck/starboard) +"axL" = ( +/obj/structure/cable{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/obj/effect/floor_decal/steeldecal/steel_decals4{ + dir = 5 + }, +/obj/effect/floor_decal/steeldecal/steel_decals4{ + dir = 8 + }, +/obj/effect/floor_decal/steeldecal/steel_decals5{ + dir = 1 + }, +/turf/simulated/floor/tiled, +/area/hallway/primary/firstdeck/starboard) +"axM" = ( +/obj/machinery/light, +/obj/effect/floor_decal/borderfloor, +/obj/effect/floor_decal/corner/green/border, +/turf/simulated/floor/tiled, +/area/hallway/primary/firstdeck/starboard) +"axN" = ( +/obj/machinery/atmospherics/unary/vent_pump/on{ + dir = 1 + }, +/obj/effect/floor_decal/borderfloor, +/obj/effect/floor_decal/corner/green/border, +/turf/simulated/floor/tiled, +/area/hallway/primary/firstdeck/starboard) +"axO" = ( +/obj/effect/floor_decal/borderfloorblack{ + dir = 6 + }, +/obj/effect/floor_decal/industrial/danger{ + dir = 6 + }, +/turf/simulated/floor/tiled/techfloor/grid, +/area/hallway/primary/firstdeck/starboard) +"axP" = ( +/obj/machinery/portable_atmospherics/powered/pump/filled, +/turf/simulated/floor/plating, +/area/maintenance/firstdeck/centralstarboard) +"axQ" = ( +/obj/turbolift_map_holder/southern_cross/port, +/turf/unsimulated/mask, +/area/hallway/primary/firstdeck/port) +"axR" = ( +/obj/machinery/vending/coffee, +/turf/simulated/floor/tiled/dark, +/area/hallway/primary/firstdeck/port) +"axS" = ( +/obj/machinery/alarm{ + dir = 1; + pixel_y = -22 + }, +/obj/machinery/vending/snack, +/turf/simulated/floor/tiled/dark, +/area/hallway/primary/firstdeck/port) +"axT" = ( +/turf/simulated/wall, +/area/maintenance/firstdeck/centralport) +"axU" = ( +/obj/machinery/door/firedoor/border_only, +/obj/machinery/door/airlock/maintenance{ + req_access = list(12) + }, +/turf/simulated/floor/plating, +/area/maintenance/firstdeck/centralport) +"axV" = ( +/turf/simulated/wall, +/area/construction/firstdeck/construction2) +"axW" = ( +/obj/structure/sign/directions/engineering{ + dir = 8; + pixel_y = 10 + }, +/obj/structure/sign/directions/cargo{ + dir = 8 + }, +/turf/simulated/wall, +/area/construction/firstdeck/construction2) +"axX" = ( +/obj/structure/sign/directions/medical{ + dir = 8 + }, +/obj/structure/sign/directions/evac{ + dir = 8; + pixel_y = 10 + }, +/turf/simulated/wall, +/area/construction/firstdeck/construction2) +"axY" = ( +/obj/machinery/door/firedoor/border_only, +/obj/structure/cable{ + d1 = 1; + d2 = 2; + icon_state = "1-2"; + pixel_y = 0 + }, +/obj/machinery/door/airlock/engineering{ + name = "Construction Area"; + req_access = list(32) + }, +/turf/simulated/floor/plating, +/area/construction/firstdeck/construction2) +"axZ" = ( +/obj/structure/disposalpipe/segment, +/obj/effect/floor_decal/borderfloor{ + dir = 8 + }, +/obj/effect/floor_decal/corner/brown/border{ + dir = 8 + }, +/turf/simulated/floor/tiled, +/area/hallway/primary/firstdeck/port) +"aya" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/effect/floor_decal/borderfloor{ + dir = 4 + }, +/obj/effect/floor_decal/corner/brown/border{ + dir = 4 + }, +/turf/simulated/floor/tiled, +/area/hallway/primary/firstdeck/port) +"ayb" = ( +/turf/simulated/wall, +/area/maintenance/firstdeck/aftport) +"ayc" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/obj/structure/cable{ + d1 = 1; + d2 = 2; + icon_state = "1-2"; + pixel_y = 0 + }, +/obj/machinery/door/firedoor/border_only, +/obj/machinery/door/airlock/maintenance{ + req_access = list(12) + }, +/turf/simulated/floor/plating, +/area/maintenance/firstdeck/aftport) +"ayd" = ( +/obj/machinery/atmospherics/unary/vent_pump/on{ + dir = 1 + }, +/obj/structure/closet/emcloset, +/turf/simulated/floor/tiled/dark, +/area/hallway/primary/firstdeck/port) +"aye" = ( +/obj/machinery/light, +/turf/simulated/floor/tiled/dark, +/area/hallway/primary/firstdeck/port) +"ayf" = ( +/obj/effect/floor_decal/borderfloor{ + dir = 10 + }, +/obj/effect/floor_decal/corner/green/border{ + dir = 10 + }, +/obj/effect/floor_decal/borderfloor/corner2{ + dir = 9 + }, +/obj/effect/floor_decal/corner/green/bordercorner2{ + dir = 9 + }, +/turf/simulated/floor/tiled, +/area/hallway/primary/firstdeck/port) +"ayg" = ( +/obj/structure/disposalpipe/segment, +/obj/structure/cable{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/obj/effect/floor_decal/steeldecal/steel_decals4{ + dir = 5 + }, +/obj/effect/floor_decal/steeldecal/steel_decals4{ + dir = 8 + }, +/turf/simulated/floor/tiled, +/area/hallway/primary/firstdeck/port) +"ayh" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/obj/effect/floor_decal/borderfloor/corner2, +/obj/effect/floor_decal/borderfloor/corner2{ + dir = 9 + }, +/obj/effect/floor_decal/corner/green/bordercorner2, +/obj/effect/floor_decal/corner/green/bordercorner2{ + dir = 9 + }, +/turf/simulated/floor/tiled, +/area/hallway/primary/firstdeck/port) +"ayi" = ( +/obj/effect/floor_decal/steeldecal/steel_decals4{ + dir = 5 + }, +/obj/effect/floor_decal/steeldecal/steel_decals4{ + dir = 8 + }, +/turf/simulated/floor/tiled, +/area/hallway/primary/firstdeck/port) +"ayj" = ( +/obj/machinery/status_display, +/turf/simulated/wall, +/area/medical/first_aid_station/firstdeck) +"ayk" = ( +/turf/simulated/wall, +/area/ai_monitored/storage/eva/pilot) +"ayl" = ( +/obj/structure/table/glass, +/obj/machinery/recharger, +/turf/simulated/floor/tiled/dark, +/area/hallway/primary/firstdeck/elevator) +"aym" = ( +/obj/machinery/disposal, +/obj/structure/disposalpipe/trunk, +/turf/simulated/floor/tiled/dark, +/area/hallway/primary/firstdeck/elevator) +"ayn" = ( +/obj/turbolift_map_holder/southern_cross/center, +/turf/unsimulated/mask, +/area/hallway/primary/firstdeck/elevator) +"ayo" = ( +/obj/structure/table/standard, +/obj/item/weapon/stock_parts/subspace/transmitter, +/obj/item/weapon/stock_parts/subspace/transmitter, +/turf/simulated/floor, +/area/tcomm/tcomstorage) +"ayp" = ( +/obj/structure/table/standard, +/obj/item/weapon/stock_parts/subspace/sub_filter, +/obj/item/weapon/stock_parts/subspace/sub_filter, +/obj/item/weapon/stock_parts/subspace/sub_filter, +/obj/item/weapon/stock_parts/subspace/sub_filter, +/obj/item/weapon/stock_parts/subspace/sub_filter, +/obj/machinery/atmospherics/unary/vent_pump/on{ + dir = 1 + }, +/turf/simulated/floor, +/area/tcomm/tcomstorage) +"ayq" = ( +/obj/structure/table/standard, +/obj/item/weapon/stock_parts/subspace/crystal, +/obj/item/weapon/stock_parts/subspace/crystal, +/obj/item/weapon/stock_parts/subspace/crystal, +/obj/machinery/firealarm{ + dir = 1; + pixel_y = -24 + }, +/turf/simulated/floor, +/area/tcomm/tcomstorage) +"ayr" = ( +/obj/structure/cable/green{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/obj/effect/floor_decal/steeldecal/steel_decals4{ + dir = 8 + }, +/obj/effect/floor_decal/steeldecal/steel_decals4{ + dir = 5 + }, +/turf/simulated/floor/tiled, +/area/hallway/primary/firstdeck/starboard) +"ays" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/obj/effect/floor_decal/borderfloor/corner2{ + dir = 9 + }, +/obj/effect/floor_decal/borderfloor/corner2, +/obj/effect/floor_decal/corner/green/bordercorner2{ + dir = 9 + }, +/obj/effect/floor_decal/corner/green/bordercorner2, +/turf/simulated/floor/tiled, +/area/hallway/primary/firstdeck/starboard) +"ayt" = ( +/obj/structure/cable{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/obj/effect/floor_decal/steeldecal/steel_decals4{ + dir = 8 + }, +/obj/effect/floor_decal/steeldecal/steel_decals4{ + dir = 5 + }, +/turf/simulated/floor/tiled, +/area/hallway/primary/firstdeck/starboard) +"ayu" = ( +/obj/effect/floor_decal/borderfloor{ + dir = 6 + }, +/obj/effect/floor_decal/corner/green/border{ + dir = 6 + }, +/obj/effect/floor_decal/borderfloor/corner2, +/obj/effect/floor_decal/corner/green/bordercorner2, +/turf/simulated/floor/tiled, +/area/hallway/primary/firstdeck/starboard) +"ayv" = ( +/obj/machinery/atmospherics/unary/vent_scrubber/on{ + dir = 1 + }, +/obj/structure/flora/pottedplant/shoot, +/turf/simulated/floor/tiled/dark, +/area/hallway/primary/firstdeck/starboard) +"ayw" = ( +/obj/machinery/door/firedoor/border_only, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/structure/cable{ + d1 = 1; + d2 = 2; + icon_state = "1-2"; + pixel_y = 0 + }, +/obj/machinery/door/airlock/maintenance{ + req_access = null; + req_one_access = list(12,67) + }, +/turf/simulated/floor/plating, +/area/maintenance/firstdeck/aftstarboard) +"ayx" = ( +/turf/simulated/wall, +/area/maintenance/firstdeck/aftstarboard) +"ayy" = ( +/turf/simulated/wall, +/area/hangar/twocontrol) +"ayz" = ( +/obj/structure/sign/hangar/two, +/turf/simulated/wall, +/area/hangar/twocontrol) +"ayA" = ( +/obj/structure/cable{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/effect/floor_decal/borderfloor{ + dir = 8 + }, +/obj/effect/floor_decal/corner/green/border{ + dir = 8 + }, +/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{ + dir = 8 + }, +/turf/simulated/floor/tiled, +/area/hallway/primary/firstdeck/starboard) +"ayB" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, +/turf/simulated/floor/tiled/monotile, +/area/hallway/primary/firstdeck/starboard) +"ayC" = ( +/obj/effect/floor_decal/borderfloor{ + dir = 4 + }, +/obj/effect/floor_decal/corner/green/border{ + dir = 4 + }, +/obj/machinery/atmospherics/unary/vent_scrubber/on{ + dir = 8 + }, +/turf/simulated/floor/tiled, +/area/hallway/primary/firstdeck/starboard) +"ayD" = ( +/turf/simulated/wall, +/area/construction/firstdeck/construction3) +"ayE" = ( +/obj/machinery/door/firedoor/border_only, +/obj/structure/cable{ + d1 = 1; + d2 = 2; + icon_state = "1-2"; + pixel_y = 0 + }, +/obj/machinery/door/airlock/engineering{ + name = "Construction Area"; + req_access = list(32) + }, +/turf/simulated/floor/plating, +/area/construction/firstdeck/construction3) +"ayF" = ( +/obj/structure/sign/directions/medical{ + dir = 4 + }, +/obj/structure/sign/directions/evac{ + dir = 4; + pixel_y = 10 + }, +/turf/simulated/wall, +/area/construction/firstdeck/construction3) +"ayG" = ( +/obj/structure/sign/directions/engineering{ + dir = 4; + pixel_y = 10 + }, +/obj/structure/sign/directions/cargo{ + dir = 4 + }, +/turf/simulated/wall, +/area/construction/firstdeck/construction3) +"ayH" = ( +/obj/machinery/door/firedoor/border_only, +/obj/machinery/door/airlock/glass{ + name = "Escape Pod" + }, +/turf/simulated/floor/tiled/steel_grid, +/area/hallway/secondary/escape/firstdeck/ep_starboard2) +"ayI" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/obj/machinery/door/airlock/glass{ + name = "Escape Pod" + }, +/obj/machinery/door/firedoor/border_only, +/obj/structure/cable{ + d1 = 1; + d2 = 2; + icon_state = "1-2"; + pixel_y = 0 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/turf/simulated/floor/tiled/steel_grid, +/area/hallway/secondary/escape/firstdeck/ep_starboard2) +"ayJ" = ( +/obj/effect/wingrille_spawn/reinforced, +/obj/machinery/door/firedoor/glass, +/turf/simulated/floor/plating, +/area/hallway/secondary/escape/firstdeck/ep_starboard2) +"ayK" = ( +/obj/structure/sign/warning/pods{ + dir = 1 + }, +/turf/simulated/wall, +/area/hallway/primary/firstdeck/starboard) +"ayL" = ( +/obj/machinery/firealarm{ + dir = 1; + pixel_x = 0; + pixel_y = -24 + }, +/turf/simulated/floor/tiled/dark, +/area/hallway/primary/firstdeck/starboard) +"ayM" = ( +/obj/turbolift_map_holder/southern_cross/starboard, +/turf/unsimulated/mask, +/area/hallway/primary/firstdeck/starboard) +"ayN" = ( +/obj/machinery/space_heater, +/turf/simulated/floor/plating, +/area/maintenance/firstdeck/centralstarboard) +"ayO" = ( +/obj/structure/closet/crate, +/obj/item/weapon/tank/emergency/oxygen/engi, +/obj/item/weapon/tank/emergency/oxygen/double, +/obj/random/maintenance/cargo, +/obj/random/maintenance/cargo, +/obj/random/maintenance/cargo, +/obj/structure/catwalk, +/turf/simulated/floor/plating, +/area/maintenance/firstdeck/centralport) +"ayP" = ( +/obj/structure/closet/emcloset, +/obj/structure/catwalk, +/turf/simulated/floor/plating, +/area/maintenance/firstdeck/centralport) +"ayQ" = ( +/obj/random/obstruction, +/turf/simulated/floor/plating, +/area/construction/firstdeck/construction2) +"ayR" = ( +/turf/simulated/floor/plating, +/area/construction/firstdeck/construction2) +"ayS" = ( +/obj/effect/floor_decal/rust, +/turf/simulated/floor/tiled/steel_dirty, +/area/construction/firstdeck/construction2) +"ayT" = ( +/obj/structure/cable{ + d1 = 1; + d2 = 2; + icon_state = "1-2"; + pixel_y = 0 + }, +/turf/simulated/floor/tiled/steel_dirty, +/area/construction/firstdeck/construction2) +"ayU" = ( +/obj/effect/decal/cleanable/blood/oil/streak{ + amount = 0 + }, +/obj/item/weapon/tool/wirecutters, +/obj/machinery/light{ + dir = 1 + }, +/turf/simulated/floor/tiled/steel_dirty, +/area/construction/firstdeck/construction2) +"ayV" = ( +/obj/structure/table/steel, +/obj/random/tech_supply, +/obj/random/tech_supply, +/obj/random/tech_supply, +/obj/random/maintenance/engineering, +/obj/random/maintenance/engineering, +/turf/simulated/floor/plating, +/area/construction/firstdeck/construction2) +"ayW" = ( +/obj/machinery/atmospherics/unary/vent_pump/on{ + dir = 4 + }, +/obj/structure/disposalpipe/segment, +/obj/effect/floor_decal/borderfloor/corner{ + dir = 1 + }, +/obj/effect/floor_decal/corner/brown/bordercorner{ + dir = 1 + }, +/turf/simulated/floor/tiled, +/area/hallway/primary/firstdeck/port) +"ayX" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/turf/simulated/floor/tiled/monotile, +/area/hallway/primary/firstdeck/port) +"ayY" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 9; + pixel_y = 0 + }, +/obj/machinery/light{ + icon_state = "tube1"; + dir = 4 + }, +/obj/effect/floor_decal/borderfloor/corner{ + dir = 4 + }, +/obj/effect/floor_decal/corner/brown/bordercorner{ + dir = 4 + }, +/turf/simulated/floor/tiled, +/area/hallway/primary/firstdeck/port) +"ayZ" = ( +/obj/item/frame/apc, +/obj/effect/floor_decal/rust, +/turf/simulated/floor/tiled/steel_dirty, +/area/maintenance/firstdeck/aftport) +"aza" = ( +/obj/item/frame, +/obj/machinery/light_construct, +/obj/effect/floor_decal/rust, +/turf/simulated/floor/tiled/steel_dirty, +/area/maintenance/firstdeck/aftport) +"azb" = ( +/obj/effect/floor_decal/rust, +/turf/simulated/floor/tiled/steel_dirty, +/area/maintenance/firstdeck/aftport) +"azc" = ( +/obj/random/obstruction, +/turf/simulated/floor/plating, +/area/maintenance/firstdeck/aftport) +"azd" = ( +/obj/structure/closet/crate, +/obj/item/device/multitool, +/obj/item/device/multitool, +/obj/item/device/assembly/prox_sensor, +/obj/item/device/flashlight, +/obj/item/weapon/storage/backpack, +/obj/random/maintenance/cargo, +/obj/random/maintenance/cargo, +/turf/simulated/floor/plating, +/area/maintenance/firstdeck/aftport) +"aze" = ( +/obj/structure/reagent_dispensers/fueltank, +/turf/simulated/floor, +/area/maintenance/firstdeck/aftport) +"azf" = ( +/obj/structure/reagent_dispensers/watertank, +/turf/simulated/floor, +/area/maintenance/firstdeck/aftport) +"azg" = ( +/obj/structure/catwalk, +/turf/simulated/floor/plating, +/area/maintenance/firstdeck/aftport) +"azh" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/obj/structure/cable{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/obj/structure/catwalk, +/turf/simulated/floor/plating, +/area/maintenance/firstdeck/aftport) +"azi" = ( +/obj/structure/sign/directions/bridge{ + dir = 2; + pixel_y = 10 + }, +/obj/structure/sign/directions/science{ + dir = 2 + }, +/obj/structure/sign/directions/medical{ + dir = 2; + pixel_y = -10 + }, +/turf/simulated/wall, +/area/hallway/primary/firstdeck/apcenter) +"azj" = ( +/obj/machinery/door/firedoor/border_only, +/obj/machinery/door/airlock/glass{ + name = "Central Access" + }, +/obj/structure/disposalpipe/segment, +/obj/structure/cable{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/turf/simulated/floor/tiled/steel_grid, +/area/hallway/primary/firstdeck/apcenter) +"azk" = ( +/obj/effect/wingrille_spawn/reinforced, +/obj/machinery/door/firedoor/glass, +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/turf/simulated/floor/plating, +/area/hallway/primary/firstdeck/apcenter) +"azl" = ( +/obj/machinery/door/firedoor/border_only, +/obj/machinery/door/airlock/glass{ + name = "Central Access" + }, +/turf/simulated/floor/tiled/steel_grid, +/area/hallway/primary/firstdeck/apcenter) +"azm" = ( +/obj/structure/dispenser/oxygen, +/turf/simulated/floor/tiled/techmaint, +/area/ai_monitored/storage/eva/pilot) +"azn" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/machinery/portable_atmospherics/canister/oxygen, +/obj/machinery/light{ + dir = 1 + }, +/turf/simulated/floor/tiled/techmaint, +/area/ai_monitored/storage/eva/pilot) +"azo" = ( +/obj/structure/table/rack{ + dir = 8; + layer = 2.6 + }, +/obj/structure/window/reinforced{ + dir = 1 + }, +/obj/structure/window/reinforced{ + dir = 8; + health = 1e+006 + }, +/obj/machinery/door/window/southleft, +/turf/simulated/floor/tiled/techmaint, +/area/ai_monitored/storage/eva/pilot) +"azp" = ( +/obj/structure/table/rack{ + dir = 8; + layer = 2.6 + }, +/obj/structure/window/reinforced{ + dir = 1 + }, +/obj/structure/window/reinforced{ + dir = 4; + health = 1e+006 + }, +/obj/machinery/door/window/southright, +/turf/simulated/floor/tiled/techmaint, +/area/ai_monitored/storage/eva/pilot) +"azq" = ( +/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/effect/floor_decal/industrial/warning{ + dir = 1 + }, +/turf/simulated/floor/tiled, +/area/ai_monitored/storage/eva/pilot) +"azr" = ( +/obj/machinery/atmospherics/unary/vent_scrubber/on{ + dir = 4 + }, +/obj/effect/floor_decal/industrial/warning{ + dir = 1 + }, +/turf/simulated/floor/tiled, +/area/ai_monitored/storage/eva/pilot) +"azs" = ( +/obj/effect/floor_decal/borderfloorblack{ + dir = 9 + }, +/obj/effect/floor_decal/industrial/danger{ + dir = 9 + }, +/turf/simulated/floor/tiled/techfloor/grid, +/area/hallway/primary/firstdeck/elevator) +"azt" = ( +/obj/effect/floor_decal/borderfloorblack{ + dir = 1 + }, +/obj/effect/floor_decal/industrial/danger{ + dir = 1 + }, +/turf/simulated/floor/tiled/techfloor/grid, +/area/hallway/primary/firstdeck/elevator) +"azu" = ( +/obj/effect/floor_decal/borderfloorblack{ + dir = 5 + }, +/obj/effect/floor_decal/industrial/danger{ + dir = 5 + }, +/turf/simulated/floor/tiled/techfloor/grid, +/area/hallway/primary/firstdeck/elevator) +"azv" = ( +/obj/structure/cable/cyan{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/obj/effect/floor_decal/steeldecal/steel_decals4{ + dir = 8 + }, +/obj/effect/floor_decal/steeldecal/steel_decals4{ + dir = 5 + }, +/turf/simulated/floor/tiled, +/area/tcomm/tcomstorage) +"azw" = ( +/obj/machinery/door/firedoor/border_only, +/obj/machinery/door/airlock/glass{ + name = "Central Access" + }, +/obj/structure/cable/green{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/turf/simulated/floor/tiled/steel_grid, +/area/hallway/primary/firstdeck/ascenter) +"azx" = ( +/obj/effect/wingrille_spawn/reinforced, +/obj/machinery/door/firedoor/glass, +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/turf/simulated/floor/plating, +/area/hallway/primary/firstdeck/ascenter) +"azy" = ( +/obj/machinery/door/firedoor/border_only, +/obj/machinery/door/airlock/glass{ + name = "Central Access" + }, +/obj/structure/cable{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/turf/simulated/floor/tiled/steel_grid, +/area/hallway/primary/firstdeck/ascenter) +"azz" = ( +/obj/structure/sign/directions/engineering{ + dir = 2; + pixel_y = 10 + }, +/obj/structure/sign/directions/cargo{ + dir = 2 + }, +/obj/structure/sign/directions/security{ + dir = 2; + pixel_y = -10 + }, +/turf/simulated/wall/r_wall, +/area/hallway/primary/firstdeck/ascenter) +"azA" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/structure/cable{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/obj/structure/catwalk, +/turf/simulated/floor/plating, +/area/maintenance/firstdeck/aftstarboard) +"azB" = ( +/obj/structure/catwalk, +/turf/simulated/floor/plating, +/area/maintenance/firstdeck/aftstarboard) +"azC" = ( +/obj/structure/table/rack{ + dir = 8; + layer = 2.6 + }, +/obj/random/maintenance/research, +/obj/random/maintenance/research, +/obj/random/maintenance/clean, +/obj/item/weapon/extinguisher, +/turf/simulated/floor/plating, +/area/maintenance/firstdeck/aftstarboard) +"azD" = ( +/obj/structure/closet/crate/internals, +/obj/random/tank, +/obj/random/tank, +/obj/random/tank, +/obj/item/clothing/mask/gas, +/obj/item/clothing/mask/breath, +/obj/item/clothing/mask/breath, +/turf/simulated/floor/plating, +/area/maintenance/firstdeck/aftstarboard) +"azE" = ( +/obj/structure/closet, +/obj/item/clothing/glasses/welding, +/obj/item/weapon/weldingtool, +/obj/effect/decal/cleanable/dirt, +/obj/random/maintenance/research, +/obj/random/maintenance/research, +/turf/simulated/floor/plating, +/area/maintenance/firstdeck/aftstarboard) +"azF" = ( +/obj/structure/closet, +/obj/item/weapon/lipstick/purple, +/obj/random/maintenance/engineering, +/obj/random/maintenance/engineering, +/obj/random/maintenance/clean, +/obj/random/maintenance/clean, +/turf/simulated/floor/plating, +/area/maintenance/firstdeck/aftstarboard) +"azG" = ( +/obj/item/device/radio/intercom{ + dir = 1; + name = "Station Intercom (General)"; + pixel_y = 21 + }, +/obj/machinery/camera/network/first_deck{ + c_tag = "Hangar Two - Control Room"; + dir = 4 + }, +/obj/structure/closet/secure_closet/guncabinet{ + anchored = 1; + desc = "It's an immobile card-locked storage unit. For storing weapons and other items when station side."; + name = "Secure Locker"; + req_one_access = list(67,43,3) + }, +/turf/simulated/floor/tiled, +/area/hangar/twocontrol) +"azH" = ( +/obj/machinery/atmospherics/unary/vent_scrubber/on, +/obj/machinery/light{ + dir = 1 + }, +/turf/simulated/floor/tiled, +/area/hangar/twocontrol) +"azI" = ( +/obj/machinery/power/apc{ + dir = 1; + name = "north bump"; + pixel_x = 0; + pixel_y = 24 + }, +/obj/structure/cable{ + d2 = 2; + icon_state = "0-2"; + pixel_y = 0 + }, +/obj/machinery/light_switch{ + pixel_x = 11; + pixel_y = 24 + }, +/obj/effect/floor_decal/steeldecal/steel_decals_central6, +/turf/simulated/floor/tiled, +/area/hangar/twocontrol) +"azJ" = ( +/obj/structure/cable{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/effect/floor_decal/borderfloor/corner{ + dir = 1 + }, +/obj/effect/floor_decal/corner/green/bordercorner{ + dir = 1 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/turf/simulated/floor/tiled, +/area/hallway/primary/firstdeck/starboard) +"azK" = ( +/obj/machinery/light{ + icon_state = "tube1"; + dir = 4 + }, +/obj/effect/floor_decal/borderfloor/corner{ + dir = 4 + }, +/obj/effect/floor_decal/corner/green/bordercorner{ + dir = 4 + }, +/turf/simulated/floor/tiled, +/area/hallway/primary/firstdeck/starboard) +"azL" = ( +/obj/structure/mirror{ + pixel_y = 25 + }, +/turf/simulated/floor, +/area/construction/firstdeck/construction3) +"azM" = ( +/obj/structure/bed/padded, +/obj/item/weapon/bedsheet/mime, +/obj/item/weapon/pen/crayon/mime, +/obj/effect/decal/cleanable/cobweb2, +/turf/simulated/floor, +/area/construction/firstdeck/construction3) +"azN" = ( +/obj/structure/cable{ + d1 = 1; + d2 = 2; + icon_state = "1-2"; + pixel_y = 0 + }, +/turf/simulated/floor/plating, +/area/construction/firstdeck/construction3) +"azO" = ( +/obj/machinery/light{ + dir = 1 + }, +/turf/simulated/floor/tiled/steel, +/area/construction/firstdeck/construction3) +"azP" = ( +/obj/structure/table/steel, +/obj/random/tech_supply, +/obj/random/tech_supply, +/obj/random/tech_supply, +/obj/random/maintenance/engineering, +/obj/random/maintenance/engineering, +/turf/simulated/floor/tiled/steel, +/area/construction/firstdeck/construction3) +"azQ" = ( +/obj/effect/floor_decal/steeldecal/steel_decals4{ + dir = 4 + }, +/obj/effect/floor_decal/steeldecal/steel_decals4{ + dir = 9 + }, +/turf/simulated/floor/tiled, +/area/hallway/secondary/escape/firstdeck/ep_starboard2) +"azR" = ( +/obj/structure/cable{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/obj/effect/floor_decal/steeldecal/steel_decals4{ + dir = 4 + }, +/obj/effect/floor_decal/steeldecal/steel_decals4{ + dir = 9 + }, +/turf/simulated/floor/tiled, +/area/hallway/secondary/escape/firstdeck/ep_starboard2) +"azS" = ( +/obj/effect/floor_decal/borderfloor/corner{ + dir = 4 + }, +/obj/effect/floor_decal/corner/green/bordercorner{ + dir = 4 + }, +/turf/simulated/floor/tiled, +/area/hallway/secondary/escape/firstdeck/ep_starboard2) +"azT" = ( +/turf/simulated/wall, +/area/hallway/secondary/escape/firstdeck/ep_starboard2) +"azU" = ( +/turf/simulated/wall/r_wall, +/area/hallway/secondary/escape/firstdeck/ep_starboard2) +"azV" = ( +/obj/effect/floor_decal/industrial/warning/corner, +/turf/simulated/floor/plating, +/area/maintenance/firstdeck/centralport) +"azW" = ( +/obj/effect/floor_decal/industrial/warning, +/turf/simulated/floor/plating, +/area/maintenance/firstdeck/centralport) +"azX" = ( +/obj/effect/floor_decal/industrial/warning, +/obj/machinery/light/small{ + dir = 4; + pixel_y = 0 + }, +/turf/simulated/floor/plating, +/area/maintenance/firstdeck/centralport) +"azY" = ( +/obj/structure/cable{ + d1 = 1; + d2 = 2; + icon_state = "1-2"; + pixel_y = 0 + }, +/obj/effect/floor_decal/rust, +/turf/simulated/floor/tiled/steel_dirty, +/area/construction/firstdeck/construction2) +"azZ" = ( +/obj/effect/floor_decal/industrial/warning, +/obj/structure/disposalpipe/segment, +/turf/simulated/floor/tiled, +/area/hallway/primary/firstdeck/port) +"aAa" = ( +/obj/effect/floor_decal/industrial/warning, +/turf/simulated/floor/tiled, +/area/hallway/primary/firstdeck/port) +"aAb" = ( +/obj/machinery/door/firedoor/border_only, +/obj/machinery/door/airlock/maintenance{ + req_access = list(12) + }, +/obj/effect/floor_decal/rust, +/turf/simulated/floor/tiled, +/area/maintenance/firstdeck/aftport) +"aAc" = ( +/turf/simulated/floor/plating, +/area/maintenance/firstdeck/aftport) +"aAd" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/obj/structure/cable{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/obj/machinery/light/small{ + dir = 4; + pixel_y = 0 + }, +/obj/structure/catwalk, +/turf/simulated/floor/plating, +/area/maintenance/firstdeck/aftport) +"aAe" = ( +/turf/simulated/wall/r_wall, +/area/hallway/primary/firstdeck/apcenter) +"aAf" = ( +/obj/structure/disposalpipe/segment, +/obj/structure/cable{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/obj/effect/floor_decal/steeldecal/steel_decals4{ + dir = 4 + }, +/obj/effect/floor_decal/steeldecal/steel_decals4{ + dir = 9 + }, +/turf/simulated/floor/tiled, +/area/hallway/primary/firstdeck/apcenter) +"aAg" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/turf/simulated/floor/tiled, +/area/hallway/primary/firstdeck/apcenter) +"aAh" = ( +/obj/effect/floor_decal/steeldecal/steel_decals4{ + dir = 4 + }, +/obj/effect/floor_decal/steeldecal/steel_decals4{ + dir = 9 + }, +/turf/simulated/floor/tiled, +/area/hallway/primary/firstdeck/apcenter) +"aAi" = ( +/obj/effect/floor_decal/industrial/warning{ + dir = 1 + }, +/obj/effect/landmark/start{ + name = "Pilot" + }, +/turf/simulated/floor/tiled, +/area/ai_monitored/storage/eva/pilot) +"aAj" = ( +/obj/effect/floor_decal/industrial/warning{ + dir = 1 + }, +/turf/simulated/floor/tiled, +/area/ai_monitored/storage/eva/pilot) +"aAk" = ( +/obj/machinery/camera/network/first_deck{ + c_tag = "First Deck - Center Elevator Access"; + dir = 2 + }, +/obj/effect/floor_decal/borderfloor{ + dir = 1 + }, +/obj/effect/floor_decal/corner/green/border{ + dir = 1 + }, +/turf/simulated/floor/tiled, +/area/hallway/primary/firstdeck/elevator) +"aAl" = ( +/obj/structure/cable/cyan{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/obj/machinery/door/firedoor/border_only, +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/obj/machinery/door/airlock/hatch{ + name = "Telecoms Hallway"; + req_access = list(61) + }, +/turf/simulated/floor/tiled/steel_grid, +/area/tcomm/tcomstorage) +"aAm" = ( +/obj/machinery/atmospherics/pipe/manifold/hidden/supply{ + dir = 8 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/effect/landmark/start{ + name = "Pilot" + }, +/turf/simulated/floor/tiled, +/area/ai_monitored/storage/eva/pilot) +"aAn" = ( +/obj/effect/floor_decal/borderfloor{ + dir = 1 + }, +/obj/effect/floor_decal/corner/green/border{ + dir = 1 + }, +/turf/simulated/floor/tiled, +/area/hallway/primary/firstdeck/elevator) +"aAo" = ( +/obj/structure/disposalpipe/segment, +/obj/effect/floor_decal/borderfloor{ + dir = 1 + }, +/obj/effect/floor_decal/corner/green/border{ + dir = 1 + }, +/turf/simulated/floor/tiled, +/area/hallway/primary/firstdeck/elevator) +"aAp" = ( +/obj/machinery/light{ + dir = 1 + }, +/obj/effect/floor_decal/borderfloor{ + dir = 1 + }, +/obj/effect/floor_decal/corner/green/border{ + dir = 1 + }, +/turf/simulated/floor/tiled, +/area/hallway/primary/firstdeck/elevator) +"aAq" = ( +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/effect/floor_decal/steeldecal/steel_decals4{ + dir = 1 + }, +/obj/effect/floor_decal/steeldecal/steel_decals4{ + dir = 6 + }, +/turf/simulated/floor/tiled, +/area/ai_monitored/storage/eva/pilot) +"aAr" = ( +/obj/effect/floor_decal/borderfloor/corner{ + dir = 1 + }, +/obj/effect/floor_decal/corner/green/bordercorner{ + dir = 1 + }, +/turf/simulated/floor/tiled, +/area/hallway/primary/firstdeck/elevator) +"aAs" = ( +/obj/effect/floor_decal/steeldecal/steel_decals_central5{ + dir = 1 + }, +/obj/effect/floor_decal/steeldecal/steel_decals5, +/turf/simulated/floor/tiled, +/area/hallway/primary/firstdeck/elevator) +"aAt" = ( +/obj/effect/floor_decal/borderfloor{ + dir = 4 + }, +/obj/effect/floor_decal/corner/green/border{ + dir = 4 + }, +/turf/simulated/floor/tiled, +/area/hallway/primary/firstdeck/elevator) +"aAu" = ( +/obj/machinery/firealarm{ + dir = 4; + pixel_x = 24 + }, +/obj/effect/floor_decal/techfloor{ + dir = 9 + }, +/turf/simulated/floor/tiled/techfloor/grid, +/area/hallway/primary/firstdeck/elevator) +"aAv" = ( +/turf/simulated/wall/r_wall, +/area/tcomm/entrance) +"aAw" = ( +/obj/structure/table/standard, +/obj/item/weapon/cell, +/obj/structure/extinguisher_cabinet{ + pixel_y = 30 + }, +/turf/simulated/floor/tiled/dark, +/area/tcomm/entrance) +"aAx" = ( +/obj/structure/cable/cyan{ + d2 = 2; + icon_state = "0-2" + }, +/obj/machinery/power/apc{ + dir = 1; + name = "north bump"; + pixel_x = 0; + pixel_y = 24 + }, +/obj/machinery/light_switch{ + pixel_x = 11; + pixel_y = 24 + }, +/obj/structure/table/standard, +/obj/machinery/cell_charger, +/turf/simulated/floor/tiled/dark, +/area/tcomm/entrance) +"aAy" = ( +/obj/structure/table/standard, +/obj/machinery/recharger, +/obj/item/device/radio/intercom{ + dir = 1; + name = "Station Intercom (General)"; + pixel_y = 21 + }, +/turf/simulated/floor/tiled/dark, +/area/tcomm/entrance) +"aAz" = ( +/turf/simulated/wall/r_wall, +/area/tcomm/tcomfoyer) +"aAA" = ( +/obj/structure/cable/cyan{ + d2 = 4; + icon_state = "0-4" + }, +/obj/machinery/power/apc{ + dir = 8; + name = "west bump"; + pixel_x = -24 + }, +/obj/machinery/light_switch{ + pixel_x = -36 + }, +/obj/structure/sign/warning/lethal_turrets{ + pixel_y = 32 + }, +/turf/simulated/floor/tiled/dark, +/area/tcomm/tcomfoyer) +"aAB" = ( +/obj/structure/cable/cyan{ + d1 = 1; + d2 = 4; + icon_state = "1-4" + }, +/obj/structure/cable/cyan{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/obj/structure/cable/cyan{ + d1 = 2; + d2 = 4; + icon_state = "2-4" + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/obj/effect/floor_decal/steeldecal/steel_decals4{ + dir = 9 + }, +/obj/effect/floor_decal/steeldecal/steel_decals4{ + dir = 4 + }, +/turf/simulated/floor/tiled, +/area/tcomm/tcomfoyer) +"aAC" = ( +/obj/structure/cable/cyan{ + d1 = 2; + d2 = 8; + icon_state = "2-8" + }, +/obj/structure/cable/cyan{ + d2 = 2; + icon_state = "0-2" + }, +/obj/machinery/power/sensor{ + long_range = 1; + name_tag = "Telecommunications" + }, +/obj/machinery/turretid/lethal{ + ailock = 1; + check_synth = 1; + control_area = "\improper Telecomms Storage"; + desc = "A firewall prevents AIs from interacting with this device."; + name = "Telecoms lethal turret control"; + pixel_y = 29; + req_access = list(61) + }, +/turf/simulated/floor/tiled/dark, +/area/tcomm/tcomfoyer) +"aAD" = ( +/obj/structure/cable/green{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/obj/effect/floor_decal/steeldecal/steel_decals4{ + dir = 9 + }, +/obj/effect/floor_decal/steeldecal/steel_decals4{ + dir = 4 + }, +/turf/simulated/floor/tiled, +/area/hallway/primary/firstdeck/ascenter) +"aAE" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/obj/effect/floor_decal/steeldecal/steel_decals5, +/turf/simulated/floor/tiled, +/area/hallway/primary/firstdeck/ascenter) +"aAF" = ( +/obj/structure/cable{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/obj/effect/floor_decal/steeldecal/steel_decals4{ + dir = 9 + }, +/obj/effect/floor_decal/steeldecal/steel_decals4{ + dir = 4 + }, +/turf/simulated/floor/tiled, +/area/hallway/primary/firstdeck/ascenter) +"aAG" = ( +/turf/simulated/wall/r_wall, +/area/hallway/primary/firstdeck/ascenter) +"aAH" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/structure/cable{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/obj/machinery/light/small{ + dir = 8 + }, +/obj/structure/catwalk, +/turf/simulated/floor/plating, +/area/maintenance/firstdeck/aftstarboard) +"aAI" = ( +/turf/simulated/floor/plating, +/area/maintenance/firstdeck/aftstarboard) +"aAJ" = ( +/obj/machinery/door/firedoor/border_only, +/obj/machinery/door/airlock/maintenance{ + name = "Hangar Control Room Access"; + req_access = null; + req_one_access = list(12,67) + }, +/turf/simulated/floor/plating, +/area/hangar/twocontrol) +"aAK" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 6 + }, +/turf/simulated/floor/tiled, +/area/hangar/twocontrol) +"aAL" = ( +/obj/structure/bed/chair, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 5 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/turf/simulated/floor/tiled/monotile, +/area/hangar/twocontrol) +"aAM" = ( +/obj/structure/cable{ + d1 = 1; + d2 = 4; + icon_state = "1-4" + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/turf/simulated/floor/tiled, +/area/hangar/twocontrol) +"aAN" = ( +/obj/machinery/door/firedoor/border_only, +/obj/structure/cable{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/obj/machinery/door/airlock{ + name = "Hangar Control Room" + }, +/turf/simulated/floor/tiled, +/area/hangar/twocontrol) +"aAO" = ( +/obj/effect/floor_decal/industrial/warning, +/obj/structure/cable{ + d1 = 1; + d2 = 8; + icon_state = "1-8" + }, +/obj/structure/cable{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/manifold/hidden/supply{ + dir = 4 + }, +/turf/simulated/floor/tiled, +/area/hallway/primary/firstdeck/starboard) +"aAP" = ( +/obj/effect/floor_decal/industrial/warning, +/turf/simulated/floor/tiled, +/area/hallway/primary/firstdeck/starboard) +"aAQ" = ( +/obj/machinery/light/small{ + dir = 8 + }, +/turf/simulated/floor, +/area/construction/firstdeck/construction3) +"aAR" = ( +/turf/simulated/floor/plating, +/area/construction/firstdeck/construction3) +"aAS" = ( +/obj/random/obstruction, +/turf/simulated/floor/plating, +/area/construction/firstdeck/construction3) +"aAT" = ( +/turf/simulated/floor/tiled/steel, +/area/construction/firstdeck/construction3) +"aAU" = ( +/obj/structure/table/steel, +/obj/machinery/cell_charger, +/obj/item/weapon/cell/high{ + charge = 100; + maxcharge = 15000 + }, +/obj/item/weapon/cell/high{ + charge = 100; + maxcharge = 15000 + }, +/turf/simulated/floor/tiled/steel, +/area/construction/firstdeck/construction3) +"aAV" = ( +/obj/machinery/atmospherics/unary/vent_scrubber/on{ + dir = 4 + }, +/obj/machinery/alarm{ + dir = 4; + icon_state = "alarm0"; + pixel_x = -22 + }, +/obj/effect/floor_decal/borderfloor{ + dir = 8 + }, +/obj/effect/floor_decal/corner/white/border{ + dir = 8 + }, +/obj/effect/floor_decal/borderfloor/corner2{ + dir = 8 + }, +/obj/effect/floor_decal/corner/white/bordercorner2{ + dir = 8 + }, +/turf/simulated/floor/tiled, +/area/hallway/secondary/escape/firstdeck/ep_starboard2) +"aAW" = ( +/obj/structure/cable{ + d1 = 1; + d2 = 4; + icon_state = "1-4" + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 9 + }, +/obj/machinery/hologram/holopad, +/obj/effect/floor_decal/industrial/outline/grey, +/turf/simulated/floor/tiled, +/area/hallway/secondary/escape/firstdeck/ep_starboard2) +"aAX" = ( +/obj/structure/cable{ + d1 = 2; + d2 = 8; + icon_state = "2-8" + }, +/obj/structure/cable{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/turf/simulated/floor/tiled, +/area/hallway/secondary/escape/firstdeck/ep_starboard2) +"aAY" = ( +/obj/structure/cable{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/obj/item/device/radio/intercom{ + dir = 1; + name = "Station Intercom (General)"; + pixel_y = 21 + }, +/turf/simulated/floor/tiled, +/area/hallway/secondary/escape/firstdeck/ep_starboard2) +"aAZ" = ( +/obj/structure/cable{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/obj/structure/extinguisher_cabinet{ + pixel_y = 30 + }, +/turf/simulated/floor/tiled, +/area/hallway/secondary/escape/firstdeck/ep_starboard2) +"aBa" = ( +/obj/structure/cable{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/obj/machinery/firealarm{ + pixel_y = 24 + }, +/turf/simulated/floor/tiled, +/area/hallway/secondary/escape/firstdeck/ep_starboard2) +"aBb" = ( +/obj/structure/cable{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/obj/effect/floor_decal/steeldecal/steel_decals4{ + dir = 10 + }, +/obj/effect/floor_decal/steeldecal/steel_decals4, +/turf/simulated/floor/tiled, +/area/hallway/secondary/escape/firstdeck/ep_starboard2) +"aBc" = ( +/obj/machinery/portable_atmospherics/hydroponics, +/obj/machinery/atmospherics/portables_connector, +/turf/simulated/floor/tiled/white, +/area/rnd/xenobiology/xenoflora_isolation) +"aBd" = ( +/obj/structure/cable{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/obj/structure/catwalk, +/turf/simulated/floor/plating, +/area/maintenance/firstdeck/centralstarboard) +"aBe" = ( +/obj/structure/cable{ + d1 = 2; + d2 = 8; + icon_state = "2-8" + }, +/obj/structure/catwalk, +/turf/simulated/floor/plating, +/area/maintenance/firstdeck/centralstarboard) +"aBf" = ( +/obj/random/obstruction, +/turf/simulated/floor/plating, +/area/maintenance/firstdeck/centralport) +"aBg" = ( +/obj/machinery/alarm{ + dir = 1; + icon_state = "alarm0"; + pixel_y = -22 + }, +/obj/machinery/floodlight, +/turf/simulated/floor/plating, +/area/maintenance/firstdeck/centralport) +"aBh" = ( +/obj/item/weapon/extinguisher, +/turf/simulated/floor/plating, +/area/maintenance/firstdeck/centralport) +"aBi" = ( +/obj/structure/reagent_dispensers/watertank, +/turf/simulated/floor/plating, +/area/maintenance/firstdeck/centralport) +"aBj" = ( +/obj/structure/reagent_dispensers/fueltank, +/turf/simulated/floor/plating, +/area/maintenance/firstdeck/centralport) +"aBk" = ( +/obj/structure/door_assembly/door_assembly_ext, +/turf/simulated/floor/plating, +/area/maintenance/firstdeck/centralport) +"aBl" = ( +/obj/structure/table/rack{ + dir = 8; + layer = 2.6 + }, +/obj/random/maintenance/clean, +/obj/random/tech_supply, +/obj/random/tech_supply, +/obj/item/weapon/airlock_electronics, +/obj/item/stack/cable_coil/random, +/turf/simulated/floor/plating, +/area/maintenance/firstdeck/centralport) +"aBm" = ( +/obj/machinery/door/blast/regular{ + density = 0; + dir = 1; + icon_state = "pdoor0"; + id = "crglockdown"; + name = "Cargo Lockdown"; + opacity = 0 + }, +/turf/simulated/floor/plating, +/area/maintenance/firstdeck/centralport) +"aBn" = ( +/obj/item/device/flashlight, +/turf/simulated/floor/plating, +/area/construction/firstdeck/construction2) +"aBo" = ( +/obj/structure/cable, +/obj/machinery/power/apc{ + dir = 2; + name = "south bump"; + pixel_y = -24 + }, +/turf/simulated/floor/plating, +/area/construction/firstdeck/construction2) +"aBp" = ( +/obj/structure/table/steel, +/obj/random/tech_supply, +/obj/random/tech_supply, +/obj/random/tool/powermaint, +/turf/simulated/floor, +/area/construction/firstdeck/construction2) +"aBq" = ( +/obj/machinery/alarm{ + dir = 1; + icon_state = "alarm0"; + pixel_y = -22 + }, +/obj/structure/table/steel, +/obj/item/stack/cable_coil/random, +/obj/item/stack/cable_coil/random, +/turf/simulated/floor/plating, +/area/construction/firstdeck/construction2) +"aBr" = ( +/obj/effect/floor_decal/industrial/hatch/yellow, +/obj/machinery/door/blast/regular{ + density = 0; + dir = 1; + icon_state = "pdoor0"; + id = "crglockdown"; + name = "Cargo Lockdown"; + opacity = 0 + }, +/obj/structure/disposalpipe/segment, +/turf/simulated/floor/tiled/dark, +/area/hallway/primary/firstdeck/port) +"aBs" = ( +/obj/effect/floor_decal/industrial/hatch/yellow, +/obj/machinery/door/blast/regular{ + density = 0; + dir = 1; + icon_state = "pdoor0"; + id = "crglockdown"; + name = "Cargo Lockdown"; + opacity = 0 + }, +/turf/simulated/floor/tiled/dark, +/area/hallway/primary/firstdeck/port) +"aBt" = ( +/turf/simulated/wall/r_wall, +/area/quartermaster/mininglockerroom) +"aBu" = ( +/obj/structure/table/rack{ + dir = 1 + }, +/obj/random/maintenance/engineering, +/obj/random/maintenance/engineering, +/obj/random/maintenance/clean, +/turf/simulated/floor, +/area/maintenance/firstdeck/aftport) +"aBv" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 6 + }, +/obj/machinery/meter, +/turf/simulated/floor/plating, +/area/maintenance/firstdeck/aftport) +"aBw" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 9 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/obj/structure/cable{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/turf/simulated/floor/plating, +/area/maintenance/firstdeck/aftport) +"aBx" = ( +/obj/machinery/door/firedoor/border_only, +/obj/effect/wingrille_spawn/reinforced, +/turf/simulated/floor/plating, +/area/hallway/primary/firstdeck/apcenter) +"aBy" = ( +/obj/structure/disposalpipe/segment{ + dir = 1; + icon_state = "pipe-c" + }, +/obj/structure/cable{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/obj/effect/floor_decal/borderfloor{ + dir = 8 + }, +/obj/effect/floor_decal/corner/green/border{ + dir = 8 + }, +/obj/effect/floor_decal/borderfloor/corner2{ + dir = 8 + }, +/obj/effect/floor_decal/corner/green/bordercorner2{ + dir = 8 + }, +/turf/simulated/floor/tiled, +/area/hallway/primary/firstdeck/apcenter) +"aBz" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/turf/simulated/floor/tiled/monotile, +/area/hallway/primary/firstdeck/apcenter) +"aBA" = ( +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/effect/floor_decal/steeldecal/steel_decals4, +/obj/effect/floor_decal/steeldecal/steel_decals4{ + dir = 10 + }, +/turf/simulated/floor/tiled, +/area/hallway/primary/firstdeck/apcenter) +"aBB" = ( +/obj/structure/cable/green{ + d1 = 2; + d2 = 4; + icon_state = "2-4" + }, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/effect/floor_decal/steeldecal/steel_decals4, +/obj/effect/floor_decal/steeldecal/steel_decals4{ + dir = 10 + }, +/turf/simulated/floor/tiled, +/area/ai_monitored/storage/eva/pilot) +"aBC" = ( +/obj/machinery/atmospherics/unary/vent_pump/on{ + dir = 8 + }, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/turf/simulated/floor/tiled, +/area/ai_monitored/storage/eva/pilot) +"aBD" = ( +/obj/machinery/door/firedoor/glass, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/machinery/door/airlock/glass{ + name = "Pilot EVA Storage" + }, +/turf/simulated/floor/tiled/steel_grid, +/area/ai_monitored/storage/eva/pilot) +"aBE" = ( +/obj/structure/cable/green{ + d1 = 2; + d2 = 8; + icon_state = "2-8" + }, +/obj/structure/cable/green{ + d1 = 2; + d2 = 4; + icon_state = "2-4" + }, +/obj/effect/floor_decal/borderfloor{ + dir = 4 + }, +/obj/effect/floor_decal/corner/green/border{ + dir = 4 + }, +/turf/simulated/floor/tiled, +/area/hallway/primary/firstdeck/elevator) +"aBF" = ( +/obj/structure/cable/green{ + d2 = 8; + icon_state = "0-8" + }, +/obj/machinery/power/apc{ + dir = 4; + name = "east bump"; + pixel_x = 24 + }, +/obj/effect/floor_decal/techfloor{ + dir = 8 + }, +/turf/simulated/floor/tiled/techfloor/grid, +/area/hallway/primary/firstdeck/elevator) +"aBG" = ( +/obj/machinery/door/firedoor/glass, +/obj/structure/cable/green{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/obj/machinery/door/airlock/glass{ + name = "Pilot EVA Storage" + }, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/turf/simulated/floor/tiled/steel_grid, +/area/ai_monitored/storage/eva/pilot) +"aBH" = ( +/obj/structure/cable/green{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/effect/floor_decal/steeldecal/steel_decals4{ + dir = 1 + }, +/obj/effect/floor_decal/steeldecal/steel_decals4{ + dir = 6 + }, +/turf/simulated/floor/tiled, +/area/hallway/primary/firstdeck/elevator) +"aBI" = ( +/obj/machinery/atmospherics/unary/vent_pump/on, +/obj/structure/cable/green{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/obj/structure/disposalpipe/segment{ + dir = 8; + icon_state = "pipe-c" + }, +/turf/simulated/floor/tiled, +/area/hallway/primary/firstdeck/elevator) +"aBJ" = ( +/obj/structure/cable/green{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/turf/simulated/floor/tiled, +/area/hallway/primary/firstdeck/elevator) +"aBK" = ( +/obj/machinery/atmospherics/unary/vent_scrubber/on, +/obj/structure/cable/green{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/turf/simulated/floor/tiled, +/area/hallway/primary/firstdeck/elevator) +"aBL" = ( +/obj/structure/table/rack, +/obj/item/device/suit_cooling_unit, +/obj/item/device/suit_cooling_unit, +/obj/effect/floor_decal/industrial/warning{ + dir = 1 + }, +/turf/simulated/floor/tiled/techmaint, +/area/ai_monitored/storage/eva/pilot) +"aBM" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 5 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 5 + }, +/obj/effect/floor_decal/industrial/warning{ + dir = 1 + }, +/obj/machinery/camera/network/civilian{ + c_tag = "CIV - Auxiliary EVA"; + dir = 1 + }, +/obj/machinery/alarm{ + dir = 1; + pixel_y = -22 + }, +/obj/structure/closet/secure_closet/pilot, +/turf/simulated/floor/tiled/techmaint, +/area/ai_monitored/storage/eva/pilot) +"aBN" = ( +/obj/structure/closet/malf/suits, +/turf/simulated/floor/tiled, +/area/tcomm/entrance) +"aBO" = ( +/obj/structure/cable/cyan{ + d1 = 1; + d2 = 4; + icon_state = "1-4" + }, +/turf/simulated/floor/tiled, +/area/tcomm/entrance) +"aBP" = ( +/obj/structure/cable/cyan{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/obj/machinery/atmospherics/unary/vent_scrubber/on, +/obj/machinery/light{ + dir = 4 + }, +/turf/simulated/floor/tiled, +/area/tcomm/entrance) +"aBQ" = ( +/obj/structure/cable/cyan{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/obj/machinery/door/firedoor/border_only, +/obj/effect/wingrille_spawn/reinforced, +/turf/simulated/floor/plating, +/area/tcomm/tcomfoyer) +"aBR" = ( +/obj/structure/cable/cyan{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/turf/simulated/floor/tiled, +/area/tcomm/tcomfoyer) +"aBS" = ( +/obj/structure/cable/cyan{ + d1 = 1; + d2 = 8; + icon_state = "1-8" + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{ + dir = 8 + }, +/obj/effect/floor_decal/industrial/warning/corner, +/turf/simulated/floor/tiled, +/area/tcomm/tcomfoyer) +"aBT" = ( +/obj/structure/cable/cyan{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/obj/machinery/atmospherics/unary/vent_scrubber/on{ + dir = 8 + }, +/obj/effect/floor_decal/industrial/warning, +/obj/machinery/light{ + dir = 4 + }, +/turf/simulated/floor/tiled/dark, +/area/tcomm/tcomfoyer) +"aBU" = ( +/obj/effect/floor_decal/borderfloor{ + dir = 8 + }, +/obj/structure/cable/green{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/obj/effect/floor_decal/corner/green/border{ + dir = 8 + }, +/obj/effect/floor_decal/borderfloor/corner2{ + dir = 8 + }, +/obj/effect/floor_decal/corner/green/bordercorner2{ + dir = 8 + }, +/turf/simulated/floor/tiled, +/area/hallway/primary/firstdeck/ascenter) +"aBV" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/turf/simulated/floor/tiled/monotile, +/area/hallway/primary/firstdeck/ascenter) +"aBW" = ( +/obj/structure/cable{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/obj/effect/floor_decal/borderfloor{ + dir = 4 + }, +/obj/effect/floor_decal/corner/green/border{ + dir = 4 + }, +/obj/effect/floor_decal/borderfloor/corner2{ + dir = 6 + }, +/obj/effect/floor_decal/corner/green/bordercorner2{ + dir = 6 + }, +/turf/simulated/floor/tiled, +/area/hallway/primary/firstdeck/ascenter) +"aBX" = ( +/obj/machinery/door/firedoor/border_only, +/obj/effect/wingrille_spawn/reinforced, +/turf/simulated/floor/plating, +/area/hallway/primary/firstdeck/ascenter) +"aBY" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/structure/cable{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/obj/machinery/alarm{ + dir = 4; + icon_state = "alarm0"; + pixel_x = -22 + }, +/obj/structure/catwalk, +/turf/simulated/floor/plating, +/area/maintenance/firstdeck/aftstarboard) +"aBZ" = ( +/obj/effect/wingrille_spawn/reinforced, +/turf/simulated/floor/plating, +/area/maintenance/firstdeck/aftstarboard) +"aCa" = ( +/obj/machinery/portable_atmospherics/powered/pump/filled, +/turf/simulated/floor/plating, +/area/maintenance/firstdeck/aftstarboard) +"aCb" = ( +/obj/machinery/atmospherics/unary/vent_pump/on{ + dir = 1 + }, +/obj/machinery/firealarm{ + dir = 8; + pixel_x = -24 + }, +/turf/simulated/floor/tiled, +/area/hangar/twocontrol) +"aCc" = ( +/obj/structure/frame/computer, +/obj/effect/floor_decal/steeldecal/steel_decals_central6, +/turf/simulated/floor/tiled/monotile, +/area/hangar/twocontrol) +"aCd" = ( +/obj/structure/table/reinforced, +/obj/machinery/alarm{ + dir = 8; + pixel_x = 22; + pixel_y = 0 + }, +/turf/simulated/floor/tiled, +/area/hangar/twocontrol) +"aCe" = ( +/obj/machinery/alarm{ + dir = 1; + pixel_y = -22 + }, +/obj/structure/table/steel, +/turf/simulated/floor/plating, +/area/construction/firstdeck/construction3) +"aCf" = ( +/obj/item/clothing/head/soft/mime, +/obj/item/clothing/mask/gas/mime, +/obj/item/clothing/shoes/mime, +/obj/item/clothing/under/mime, +/obj/structure/closet/crate, +/turf/simulated/floor, +/area/construction/firstdeck/construction3) +"aCg" = ( +/obj/structure/cable, +/obj/machinery/power/apc{ + dir = 2; + name = "south bump"; + pixel_y = -24 + }, +/turf/simulated/floor/plating, +/area/construction/firstdeck/construction3) +"aCh" = ( +/obj/structure/table/steel, +/obj/random/tech_supply, +/obj/random/tech_supply, +/obj/random/tech_supply, +/obj/random/maintenance/engineering, +/turf/simulated/floor/tiled/steel, +/area/construction/firstdeck/construction3) +"aCi" = ( +/obj/structure/closet/emcloset, +/obj/machinery/ai_status_display{ + pixel_y = -32 + }, +/obj/effect/floor_decal/borderfloor{ + dir = 10 + }, +/obj/effect/floor_decal/corner/red/border{ + dir = 10 + }, +/turf/simulated/floor/tiled, +/area/hallway/secondary/escape/firstdeck/ep_starboard2) +"aCj" = ( +/obj/machinery/atmospherics/unary/vent_pump/on{ + dir = 1 + }, +/obj/effect/floor_decal/borderfloor, +/obj/effect/floor_decal/corner/white/border, +/turf/simulated/floor/tiled, +/area/hallway/secondary/escape/firstdeck/ep_starboard2) +"aCk" = ( +/obj/machinery/power/apc{ + dir = 2; + name = "south bump"; + pixel_y = -24 + }, +/obj/structure/cable, +/obj/effect/floor_decal/borderfloor, +/obj/effect/floor_decal/corner/red/border, +/turf/simulated/floor/tiled, +/area/hallway/secondary/escape/firstdeck/ep_starboard2) +"aCl" = ( +/obj/machinery/status_display{ + density = 0; + layer = 4; + pixel_x = 0; + pixel_y = -32 + }, +/obj/machinery/camera/network/first_deck{ + c_tag = "First Deck - Starboard Escape Pod 1"; + dir = 1 + }, +/obj/machinery/light, +/obj/effect/floor_decal/borderfloor, +/obj/effect/floor_decal/corner/white/border, +/obj/effect/floor_decal/borderfloor/corner2{ + dir = 9 + }, +/obj/effect/floor_decal/corner/white/bordercorner2{ + dir = 9 + }, +/turf/simulated/floor/tiled, +/area/hallway/secondary/escape/firstdeck/ep_starboard2) +"aCm" = ( +/obj/effect/floor_decal/industrial/warning/corner, +/obj/machinery/embedded_controller/radio/simple_docking_controller/escape_pod_berth{ + frequency = 1380; + id_tag = "large_escape_pod_1_berth"; + pixel_x = 0; + pixel_y = -26; + tag_door = "large_escape_pod_1_berth_hatch" + }, +/turf/simulated/floor/tiled, +/area/hallway/secondary/escape/firstdeck/ep_starboard2) +"aCn" = ( +/obj/effect/floor_decal/industrial/warning, +/turf/simulated/floor/tiled, +/area/hallway/secondary/escape/firstdeck/ep_starboard2) +"aCo" = ( +/obj/structure/closet/wardrobe/grey, +/obj/item/weapon/storage/backpack, +/obj/item/weapon/storage/backpack, +/obj/random/maintenance/cargo, +/obj/random/maintenance/cargo, +/obj/random/maintenance/cargo, +/obj/machinery/light/small{ + dir = 8 + }, +/turf/simulated/floor/plating, +/area/maintenance/firstdeck/centralstarboard) +"aCp" = ( +/obj/structure/cable, +/obj/machinery/power/apc{ + dir = 2; + name = "south bump"; + pixel_y = -24 + }, +/obj/structure/catwalk, +/turf/simulated/floor/plating, +/area/maintenance/firstdeck/centralstarboard) +"aCq" = ( +/obj/structure/reagent_dispensers/watertank, +/turf/simulated/floor/plating, +/area/maintenance/firstdeck/centralstarboard) +"aCr" = ( +/obj/structure/reagent_dispensers/fueltank, +/turf/simulated/floor/plating, +/area/maintenance/firstdeck/centralstarboard) +"aCs" = ( +/turf/simulated/wall/r_wall, +/area/quartermaster/storage) +"aCt" = ( +/turf/simulated/wall, +/area/quartermaster/storage) +"aCu" = ( +/obj/machinery/door/firedoor/border_only, +/obj/machinery/door/airlock/maintenance{ + name = "Cargo Maintenance"; + req_access = list(31) + }, +/turf/simulated/floor/plating, +/area/quartermaster/storage) +"aCv" = ( +/turf/simulated/wall/r_wall, +/area/quartermaster/hallway) +"aCw" = ( +/obj/machinery/door/firedoor/glass, +/obj/machinery/door/airlock/glass_mining{ + name = "Cargo Hallway"; + req_access = list(50) + }, +/obj/structure/disposalpipe/segment, +/turf/simulated/floor/tiled/steel_grid, +/area/quartermaster/hallway) +"aCx" = ( +/obj/machinery/door/firedoor/border_only, +/obj/effect/wingrille_spawn/reinforced, +/turf/simulated/floor/plating, +/area/quartermaster/hallway) +"aCy" = ( +/obj/machinery/door/firedoor/glass, +/obj/machinery/door/airlock/glass_mining{ + name = "Cargo Hallway"; + req_access = list(50) + }, +/turf/simulated/floor/tiled/steel_grid, +/area/quartermaster/hallway) +"aCz" = ( +/obj/structure/closet/secure_closet/miner, +/obj/machinery/light{ + icon_state = "tube1"; + dir = 8 + }, +/obj/effect/floor_decal/borderfloor{ + dir = 9 + }, +/obj/effect/floor_decal/corner/brown/border{ + dir = 9 + }, +/turf/simulated/floor/tiled/steel, +/area/quartermaster/mininglockerroom) +"aCA" = ( +/obj/item/device/radio/intercom{ + dir = 1; + name = "Station Intercom (General)"; + pixel_y = 21 + }, +/obj/effect/floor_decal/borderfloor{ + dir = 1 + }, +/obj/effect/floor_decal/corner/brown/border{ + dir = 1 + }, +/turf/simulated/floor/tiled/steel, +/area/quartermaster/mininglockerroom) +"aCB" = ( +/obj/structure/dispenser/oxygen, +/obj/machinery/ai_status_display{ + pixel_y = 32 + }, +/obj/effect/floor_decal/borderfloor{ + dir = 1 + }, +/obj/effect/floor_decal/corner/brown/border{ + dir = 1 + }, +/turf/simulated/floor/tiled, +/area/quartermaster/mininglockerroom) +"aCC" = ( +/obj/structure/window/reinforced{ + dir = 1 + }, +/obj/structure/window/reinforced{ + dir = 8 + }, +/obj/item/clothing/mask/breath, +/obj/item/weapon/mining_scanner, +/obj/item/weapon/rig/industrial/equipped, +/obj/machinery/door/window/southleft{ + name = "Mining Suits"; + req_access = list(50) + }, +/obj/structure/table/rack{ + dir = 8; + layer = 2.6 + }, +/obj/effect/floor_decal/borderfloor{ + dir = 1 + }, +/obj/effect/floor_decal/corner/brown/border{ + dir = 1 + }, +/turf/simulated/floor/tiled, +/area/quartermaster/mininglockerroom) +"aCD" = ( +/obj/structure/window/reinforced{ + dir = 1 + }, +/obj/structure/window/reinforced{ + dir = 4; + health = 1e+006 + }, +/obj/item/clothing/mask/breath, +/obj/item/weapon/mining_scanner, +/obj/item/clothing/suit/space/void/mining, +/obj/item/clothing/head/helmet/space/void/mining, +/obj/structure/table/rack{ + dir = 8; + layer = 2.6 + }, +/obj/machinery/door/window/southright{ + name = "Mining Suit"; + req_access = list(50) + }, +/obj/effect/floor_decal/borderfloor{ + dir = 1 + }, +/obj/effect/floor_decal/corner/brown/border{ + dir = 1 + }, +/turf/simulated/floor/tiled, +/area/quartermaster/mininglockerroom) +"aCE" = ( +/obj/machinery/suit_cycler/mining, +/obj/effect/floor_decal/borderfloor{ + dir = 5 + }, +/obj/effect/floor_decal/corner/brown/border{ + dir = 5 + }, +/turf/simulated/floor/tiled, +/area/quartermaster/mininglockerroom) +"aCF" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 6 + }, +/obj/effect/floor_decal/industrial/warning/corner{ + icon_state = "warningcorner"; + dir = 8 + }, +/obj/structure/cable{ + d1 = 2; + d2 = 4; + icon_state = "2-4" + }, +/turf/simulated/floor/plating, +/area/maintenance/firstdeck/aftport) +"aCG" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 9 + }, +/obj/machinery/meter, +/obj/structure/cable{ + d1 = 1; + d2 = 8; + icon_state = "1-8" + }, +/turf/simulated/floor/plating, +/area/maintenance/firstdeck/aftport) +"aCH" = ( +/obj/machinery/atmospherics/unary/vent_pump/on{ + dir = 4 + }, +/obj/machinery/camera/network/first_deck{ + c_tag = "First Deck - Center Six"; + dir = 4 + }, +/obj/structure/cable{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/obj/effect/floor_decal/borderfloor{ + dir = 8 + }, +/obj/effect/floor_decal/corner/green/border{ + dir = 8 + }, +/turf/simulated/floor/tiled, +/area/hallway/primary/firstdeck/apcenter) +"aCI" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 9; + pixel_y = 0 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/turf/simulated/floor/tiled/monotile, +/area/hallway/primary/firstdeck/apcenter) +"aCJ" = ( +/obj/effect/floor_decal/borderfloor/corner, +/obj/effect/floor_decal/corner/green/bordercorner, +/turf/simulated/floor/tiled, +/area/hallway/primary/firstdeck/apcenter) +"aCK" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/obj/structure/cable/green, +/obj/machinery/power/apc{ + dir = 2; + name = "south bump"; + pixel_y = -24 + }, +/obj/effect/floor_decal/industrial/warning{ + dir = 1 + }, +/obj/machinery/light_switch{ + pixel_x = 11; + pixel_y = -24 + }, +/obj/structure/closet/crate/secure/gear{ + name = "parachute crate"; + req_access = list(67) + }, +/obj/item/weapon/storage/backpack/parachute, +/obj/item/weapon/storage/backpack/parachute, +/obj/item/weapon/storage/backpack/parachute, +/obj/item/weapon/storage/backpack/parachute, +/obj/item/weapon/storage/backpack/parachute, +/obj/item/weapon/storage/backpack/parachute, +/turf/simulated/floor/tiled/techmaint, +/area/ai_monitored/storage/eva/pilot) +"aCL" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/obj/machinery/door/firedoor/border_only, +/obj/effect/wingrille_spawn/reinforced, +/turf/simulated/floor/plating, +/area/ai_monitored/storage/eva/pilot) +"aCM" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/turf/simulated/floor/tiled/monotile, +/area/hallway/primary/firstdeck/apcenter) +"aCN" = ( +/turf/simulated/wall/r_wall, +/area/ai_monitored/storage/eva/pilot) +"aCO" = ( +/obj/machinery/door/firedoor/border_only, +/obj/effect/wingrille_spawn/reinforced, +/turf/simulated/floor/plating, +/area/quartermaster/storage) +"aCP" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/obj/structure/window/reinforced, +/obj/machinery/vending/snack, +/turf/simulated/floor/tiled/dark, +/area/hallway/primary/firstdeck/elevator) +"aCQ" = ( +/obj/machinery/atmospherics/pipe/manifold/hidden/supply{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 10 + }, +/obj/machinery/vending/fitness, +/obj/structure/window/reinforced, +/turf/simulated/floor/tiled/dark, +/area/hallway/primary/firstdeck/elevator) +"aCR" = ( +/obj/machinery/vending/cigarette, +/obj/structure/window/reinforced, +/turf/simulated/floor/tiled/dark, +/area/hallway/primary/firstdeck/elevator) +"aCS" = ( +/obj/machinery/vending/cola, +/obj/structure/window/reinforced, +/turf/simulated/floor/tiled/dark, +/area/hallway/primary/firstdeck/elevator) +"aCT" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/obj/effect/floor_decal/borderfloor{ + dir = 8 + }, +/obj/effect/floor_decal/corner/green/border{ + dir = 8 + }, +/obj/effect/floor_decal/borderfloor/corner2{ + dir = 8 + }, +/obj/effect/floor_decal/corner/green/bordercorner2{ + dir = 8 + }, +/turf/simulated/floor/tiled, +/area/hallway/primary/firstdeck/elevator) +"aCU" = ( +/turf/simulated/floor/tiled, +/area/hallway/primary/firstdeck/elevator) +"aCV" = ( +/obj/structure/cable/green{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/obj/effect/floor_decal/borderfloor{ + dir = 4 + }, +/obj/effect/floor_decal/corner/green/border{ + dir = 4 + }, +/turf/simulated/floor/tiled, +/area/hallway/primary/firstdeck/elevator) +"aCW" = ( +/obj/effect/floor_decal/industrial/warning/corner, +/obj/machinery/light{ + icon_state = "tube1"; + dir = 4 + }, +/obj/structure/extinguisher_cabinet{ + pixel_x = 25 + }, +/obj/effect/floor_decal/techfloor{ + dir = 8 + }, +/turf/simulated/floor/tiled/techfloor/grid, +/area/hallway/primary/firstdeck/elevator) +"aCX" = ( +/obj/structure/closet/malf/suits, +/obj/machinery/firealarm{ + dir = 8; + pixel_x = -24 + }, +/obj/effect/floor_decal/industrial/warning/corner{ + dir = 8 + }, +/turf/simulated/floor/tiled, +/area/tcomm/entrance) +"aCY" = ( +/obj/structure/cable/green{ + d1 = 2; + d2 = 4; + icon_state = "2-4" + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 6 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 6 + }, +/turf/simulated/floor/tiled, +/area/tcomm/entrance) +"aCZ" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/obj/effect/floor_decal/industrial/warning{ + dir = 1 + }, +/obj/structure/closet/secure_closet/pilot, +/turf/simulated/floor/tiled/techmaint, +/area/ai_monitored/storage/eva/pilot) +"aDa" = ( +/obj/structure/cable/green{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/obj/machinery/door/firedoor/border_only, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, +/obj/machinery/door/airlock/hatch{ + name = "Power Control"; + req_access = list(61) + }, +/turf/simulated/floor/tiled/steel_grid, +/area/tcomm/tcomfoyer) +"aDb" = ( +/obj/structure/cable/green{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers, +/obj/effect/floor_decal/steeldecal/steel_decals4{ + dir = 10 + }, +/obj/effect/floor_decal/steeldecal/steel_decals4, +/turf/simulated/floor/tiled, +/area/tcomm/entrance) +"aDc" = ( +/obj/machinery/power/terminal{ + dir = 4 + }, +/obj/structure/cable/green{ + d2 = 8; + icon_state = "0-8" + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 9; + pixel_y = 0 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 9 + }, +/obj/effect/floor_decal/industrial/warning{ + dir = 4 + }, +/turf/simulated/floor/tiled, +/area/tcomm/tcomfoyer) +"aDd" = ( +/obj/machinery/power/smes/buildable{ + charge = 2.5e+006; + input_attempt = 1; + input_level = 50000; + inputting = 1; + output_level = 250000; + RCon_tag = "Telecommunications Satellite" + }, +/obj/structure/cable/cyan, +/turf/simulated/floor/plating, +/area/tcomm/tcomfoyer) +"aDe" = ( +/obj/effect/floor_decal/borderfloor{ + dir = 8 + }, +/obj/structure/cable/green{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/obj/effect/floor_decal/corner/green/border{ + dir = 8 + }, +/turf/simulated/floor/tiled, +/area/hallway/primary/firstdeck/ascenter) +"aDf" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 5 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/turf/simulated/floor/tiled/monotile, +/area/hallway/primary/firstdeck/ascenter) +"aDg" = ( +/obj/machinery/atmospherics/unary/vent_pump/on{ + dir = 8 + }, +/obj/machinery/camera/network/first_deck{ + c_tag = "First Deck - Center Three"; + dir = 8 + }, +/obj/structure/cable{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/obj/effect/floor_decal/borderfloor{ + dir = 4 + }, +/obj/effect/floor_decal/corner/green/border{ + dir = 4 + }, +/turf/simulated/floor/tiled, +/area/hallway/primary/firstdeck/ascenter) +"aDh" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 5 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 5 + }, +/obj/structure/cable{ + d1 = 1; + d2 = 4; + icon_state = "1-4" + }, +/obj/structure/closet/crate, +/obj/item/stack/cable_coil/random, +/obj/item/stack/cable_coil/random, +/obj/item/weapon/tool/crowbar, +/obj/item/weapon/tool/wirecutters, +/obj/random/maintenance/medical, +/obj/random/maintenance/medical, +/obj/structure/catwalk, +/turf/simulated/floor/plating, +/area/maintenance/firstdeck/aftstarboard) +"aDi" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 10 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 10 + }, +/obj/structure/cable{ + d1 = 2; + d2 = 8; + icon_state = "2-8" + }, +/obj/structure/catwalk, +/turf/simulated/floor/plating, +/area/maintenance/firstdeck/aftstarboard) +"aDj" = ( +/turf/simulated/wall/r_wall, +/area/hangar/two) +"aDk" = ( +/turf/simulated/wall, +/area/hangar/two) +"aDl" = ( +/obj/machinery/door/firedoor/border_only, +/obj/effect/wingrille_spawn/reinforced, +/turf/simulated/floor/plating, +/area/hangar/two) +"aDm" = ( +/obj/machinery/door/firedoor/border_only, +/obj/structure/cable{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/machinery/door/airlock/glass_mining{ + id_tag = "shuttle_2_door"; + name = "Hangar Bay" + }, +/turf/simulated/floor/tiled/steel_grid, +/area/hangar/two) +"aDn" = ( +/obj/machinery/door/firedoor/border_only, +/obj/machinery/door/airlock/glass_mining{ + id_tag = "shuttle_2_door"; + name = "Hangar Bay" + }, +/turf/simulated/floor/tiled/steel_grid, +/area/hangar/two) +"aDo" = ( +/obj/machinery/door/airlock/glass_external{ + frequency = 1380; + icon_state = "door_locked"; + id_tag = "large_escape_pod_1_berth_hatch"; + locked = 1; + name = "Large Escape Pod 1"; + req_access = list(13) + }, +/turf/simulated/floor, +/area/hallway/secondary/escape/firstdeck/ep_starboard2) +"aDp" = ( +/obj/effect/floor_decal/borderfloor{ + dir = 9 + }, +/obj/effect/floor_decal/corner/brown/border{ + dir = 9 + }, +/turf/simulated/floor/tiled, +/area/quartermaster/storage) +"aDq" = ( +/obj/machinery/light/spot{ + dir = 1 + }, +/obj/effect/floor_decal/borderfloor{ + dir = 1 + }, +/obj/effect/floor_decal/corner/brown/border{ + dir = 1 + }, +/turf/simulated/floor/tiled/steel, +/area/quartermaster/storage) +"aDr" = ( +/obj/machinery/atmospherics/unary/vent_pump/on, +/obj/effect/floor_decal/borderfloor{ + dir = 1 + }, +/obj/effect/floor_decal/corner/brown/border{ + dir = 1 + }, +/turf/simulated/floor/tiled/steel, +/area/quartermaster/storage) +"aDs" = ( +/obj/effect/floor_decal/borderfloor{ + dir = 1 + }, +/obj/effect/floor_decal/corner/brown/border{ + dir = 1 + }, +/turf/simulated/floor/tiled/steel, +/area/quartermaster/storage) +"aDt" = ( +/obj/effect/floor_decal/borderfloor{ + dir = 1 + }, +/obj/effect/floor_decal/corner/brown/border{ + dir = 1 + }, +/turf/simulated/floor/tiled, +/area/quartermaster/storage) +"aDu" = ( +/obj/machinery/atmospherics/unary/vent_scrubber/on, +/obj/machinery/status_display/supply_display{ + pixel_y = 32 + }, +/obj/effect/floor_decal/borderfloor{ + dir = 1 + }, +/obj/effect/floor_decal/corner/brown/border{ + dir = 1 + }, +/turf/simulated/floor/tiled, +/area/quartermaster/storage) +"aDv" = ( +/obj/effect/floor_decal/borderfloor/corner{ + dir = 1 + }, +/obj/effect/floor_decal/corner/brown/bordercorner{ + dir = 1 + }, +/turf/simulated/floor/tiled, +/area/quartermaster/storage) +"aDw" = ( +/obj/effect/floor_decal/steeldecal/steel_decals4{ + dir = 4 + }, +/obj/effect/floor_decal/steeldecal/steel_decals4{ + dir = 9 + }, +/turf/simulated/floor/tiled, +/area/quartermaster/storage) +"aDx" = ( +/obj/machinery/atmospherics/unary/vent_pump/on, +/obj/effect/floor_decal/borderfloor/corner{ + dir = 4 + }, +/obj/effect/floor_decal/corner/brown/bordercorner{ + dir = 4 + }, +/turf/simulated/floor/tiled, +/area/quartermaster/storage) +"aDy" = ( +/obj/machinery/light/spot{ + dir = 1 + }, +/obj/effect/floor_decal/borderfloor{ + dir = 1 + }, +/obj/effect/floor_decal/corner/brown/border{ + dir = 1 + }, +/turf/simulated/floor/tiled, +/area/quartermaster/storage) +"aDz" = ( +/obj/structure/extinguisher_cabinet{ + pixel_y = 30 + }, +/obj/structure/closet/crate, +/obj/random/maintenance/cargo, +/obj/random/maintenance/cargo, +/obj/random/maintenance/cargo, +/obj/effect/floor_decal/borderfloor{ + dir = 1 + }, +/obj/effect/floor_decal/corner/brown/border{ + dir = 1 + }, +/turf/simulated/floor/tiled, +/area/quartermaster/storage) +"aDA" = ( +/obj/structure/closet/crate, +/obj/random/maintenance/cargo, +/obj/random/maintenance/cargo, +/obj/random/maintenance/cargo, +/obj/random/maintenance/cargo, +/obj/effect/floor_decal/borderfloor{ + dir = 1 + }, +/obj/effect/floor_decal/corner/brown/border{ + dir = 1 + }, +/turf/simulated/floor/tiled, +/area/quartermaster/storage) +"aDB" = ( +/obj/machinery/firealarm{ + pixel_y = 24 + }, +/obj/structure/closet/crate/freezer, +/obj/effect/floor_decal/borderfloor{ + dir = 1 + }, +/obj/effect/floor_decal/corner/brown/border{ + dir = 1 + }, +/turf/simulated/floor/tiled, +/area/quartermaster/storage) +"aDC" = ( +/obj/structure/table/steel_reinforced, +/obj/machinery/cell_charger, +/obj/effect/floor_decal/borderfloor{ + dir = 1 + }, +/obj/effect/floor_decal/corner/brown/border{ + dir = 1 + }, +/turf/simulated/floor/tiled, +/area/quartermaster/storage) +"aDD" = ( +/obj/structure/table/steel_reinforced, +/obj/item/clothing/accessory/armband/cargo, +/obj/item/device/retail_scanner/cargo, +/obj/machinery/requests_console{ + department = "Cargo Bay"; + departmentType = 2; + pixel_x = 0; + pixel_y = 28 + }, +/obj/effect/floor_decal/borderfloor{ + dir = 1 + }, +/obj/effect/floor_decal/corner/brown/border{ + dir = 1 + }, +/turf/simulated/floor/tiled, +/area/quartermaster/storage) +"aDE" = ( +/obj/structure/table/steel_reinforced, +/obj/item/weapon/stamp{ + pixel_x = -3; + pixel_y = 3 + }, +/obj/item/weapon/stamp/cargo, +/obj/effect/floor_decal/borderfloor{ + dir = 5 + }, +/obj/effect/floor_decal/corner/brown/border{ + dir = 5 + }, +/turf/simulated/floor/tiled, +/area/quartermaster/storage) +"aDF" = ( +/obj/machinery/ai_status_display, +/turf/simulated/wall, +/area/quartermaster/hallway) +"aDG" = ( +/obj/structure/disposalpipe/segment, +/obj/effect/floor_decal/steeldecal/steel_decals4{ + dir = 4 + }, +/obj/effect/floor_decal/steeldecal/steel_decals4{ + dir = 9 + }, +/turf/simulated/floor/tiled, +/area/quartermaster/hallway) +"aDH" = ( +/turf/simulated/floor/tiled, +/area/quartermaster/hallway) +"aDI" = ( +/obj/effect/floor_decal/steeldecal/steel_decals4{ + dir = 4 + }, +/obj/effect/floor_decal/steeldecal/steel_decals4{ + dir = 9 + }, +/turf/simulated/floor/tiled, +/area/quartermaster/hallway) +"aDJ" = ( +/obj/machinery/status_display, +/turf/simulated/wall, +/area/quartermaster/mininglockerroom) +"aDK" = ( +/obj/structure/closet/secure_closet/miner, +/obj/effect/floor_decal/borderfloor{ + dir = 8 + }, +/obj/effect/floor_decal/corner/brown/border{ + dir = 8 + }, +/turf/simulated/floor/tiled, +/area/quartermaster/mininglockerroom) +"aDL" = ( +/turf/simulated/floor/tiled/steel, +/area/quartermaster/mininglockerroom) +"aDM" = ( +/turf/simulated/floor/tiled, +/area/quartermaster/mininglockerroom) +"aDN" = ( +/obj/machinery/firealarm{ + dir = 4; + pixel_x = 24 + }, +/obj/effect/floor_decal/borderfloor/corner{ + dir = 4 + }, +/obj/effect/floor_decal/corner/brown/bordercorner{ + dir = 4 + }, +/turf/simulated/floor/tiled, +/area/quartermaster/mininglockerroom) +"aDO" = ( +/obj/machinery/door/blast/regular{ + density = 0; + dir = 1; + icon_state = "pdoor0"; + id = "crglockdown"; + name = "Cargo Lockdown"; + opacity = 0 + }, +/turf/simulated/floor/plating, +/area/maintenance/firstdeck/aftport) +"aDP" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/obj/effect/floor_decal/industrial/warning{ + dir = 8 + }, +/obj/structure/cable{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/turf/simulated/floor/plating, +/area/maintenance/firstdeck/aftport) +"aDQ" = ( +/obj/structure/cable{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/obj/effect/floor_decal/borderfloor{ + dir = 8 + }, +/obj/effect/floor_decal/corner/green/border{ + dir = 8 + }, +/turf/simulated/floor/tiled, +/area/hallway/primary/firstdeck/apcenter) +"aDR" = ( +/obj/effect/wingrille_spawn/reinforced, +/obj/machinery/door/firedoor/glass, +/turf/simulated/floor/plating, +/area/quartermaster/storage) +"aDS" = ( +/obj/effect/floor_decal/borderfloor{ + dir = 4 + }, +/obj/effect/floor_decal/corner/green/border{ + dir = 4 + }, +/obj/effect/floor_decal/borderfloor/corner2{ + dir = 5 + }, +/obj/effect/floor_decal/corner/green/bordercorner2{ + dir = 5 + }, +/turf/simulated/floor/tiled, +/area/hallway/primary/firstdeck/apcenter) +"aDT" = ( +/turf/simulated/wall, +/area/hallway/primary/firstdeck/elevator) +"aDU" = ( +/obj/structure/stairs/north, +/turf/simulated/floor/tiled/dark, +/area/hallway/primary/firstdeck/elevator) +"aDV" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 5 + }, +/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{ + dir = 8 + }, +/obj/machinery/lapvend, +/obj/structure/window/reinforced{ + dir = 1 + }, +/turf/simulated/floor/tiled/dark, +/area/hallway/primary/firstdeck/elevator) +"aDW" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, +/obj/structure/table/glass, +/obj/structure/window/reinforced{ + dir = 1 + }, +/obj/item/device/paicard, +/obj/item/clothing/head/soft/grey, +/turf/simulated/floor/tiled/dark, +/area/hallway/primary/firstdeck/elevator) +"aDX" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, +/obj/structure/table/glass, +/obj/structure/window/reinforced{ + dir = 1 + }, +/obj/item/device/communicator, +/obj/item/weapon/hand_labeler, +/turf/simulated/floor/tiled/dark, +/area/hallway/primary/firstdeck/elevator) +"aDY" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers, +/obj/effect/floor_decal/borderfloor{ + dir = 8 + }, +/obj/effect/floor_decal/corner/green/border{ + dir = 8 + }, +/obj/effect/floor_decal/borderfloor/corner2{ + dir = 10 + }, +/obj/effect/floor_decal/corner/green/bordercorner2{ + dir = 10 + }, +/turf/simulated/floor/tiled, +/area/hallway/primary/firstdeck/elevator) +"aDZ" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/manifold/hidden/supply{ + dir = 1 + }, +/obj/machinery/hologram/holopad, +/obj/effect/floor_decal/industrial/outline/grey, +/turf/simulated/floor/tiled, +/area/hallway/primary/firstdeck/elevator) +"aEa" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, +/obj/structure/cable/green{ + d1 = 2; + d2 = 4; + icon_state = "2-4" + }, +/obj/structure/cable/green{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/obj/effect/floor_decal/borderfloor{ + dir = 4 + }, +/obj/effect/floor_decal/corner/green/border{ + dir = 4 + }, +/turf/simulated/floor/tiled, +/area/hallway/primary/firstdeck/elevator) +"aEb" = ( +/obj/structure/cable/green{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, +/obj/effect/floor_decal/industrial/warning{ + dir = 4 + }, +/obj/effect/floor_decal/techfloor{ + dir = 8 + }, +/turf/simulated/floor/tiled/techfloor/grid, +/area/hallway/primary/firstdeck/elevator) +"aEc" = ( +/obj/structure/cable/green{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/obj/machinery/door/firedoor/border_only, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, +/obj/machinery/door/airlock/highsecurity{ + name = "Telecommunications"; + req_access = list(61) + }, +/turf/simulated/floor/tiled/steel_grid, +/area/tcomm/entrance) +"aEd" = ( +/obj/structure/cable/green{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/obj/machinery/atmospherics/pipe/manifold/hidden/supply{ + dir = 1 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, +/obj/effect/floor_decal/industrial/warning{ + dir = 8 + }, +/turf/simulated/floor/tiled, +/area/tcomm/entrance) +"aEe" = ( +/obj/structure/cable/green{ + d1 = 1; + d2 = 8; + icon_state = "1-8" + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 9; + pixel_y = 0 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 9 + }, +/obj/machinery/hologram/holopad, +/obj/effect/floor_decal/industrial/outline/grey, +/turf/simulated/floor/tiled, +/area/tcomm/entrance) +"aEf" = ( +/obj/structure/sign/warning/high_voltage{ + pixel_x = 32 + }, +/obj/machinery/camera/network/telecom{ + c_tag = "Tcoms - Entrance"; + dir = 8 + }, +/turf/simulated/floor/tiled, +/area/tcomm/entrance) +"aEg" = ( +/obj/machinery/atmospherics/unary/vent_pump/on{ + dir = 1 + }, +/obj/machinery/camera/network/telecom{ + c_tag = "Tcoms - SMES Room"; + dir = 1 + }, +/obj/machinery/firealarm{ + dir = 1; + pixel_x = 0; + pixel_y = -25 + }, +/turf/simulated/floor/tiled/dark, +/area/tcomm/tcomfoyer) +"aEh" = ( +/obj/effect/floor_decal/industrial/warning/corner{ + dir = 4 + }, +/obj/item/device/radio/intercom{ + dir = 4; + name = "Station Intercom (General)"; + pixel_x = 21 + }, +/obj/machinery/alarm{ + dir = 1; + pixel_y = -22 + }, +/turf/simulated/floor/tiled/dark, +/area/tcomm/tcomfoyer) +"aEi" = ( +/obj/structure/cable/green{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/obj/effect/floor_decal/borderfloor{ + dir = 8 + }, +/obj/effect/floor_decal/corner/green/border{ + dir = 8 + }, +/obj/effect/floor_decal/borderfloor/corner2{ + dir = 10 + }, +/obj/effect/floor_decal/corner/green/bordercorner2{ + dir = 10 + }, +/turf/simulated/floor/tiled, +/area/hallway/primary/firstdeck/ascenter) +"aEj" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/turf/simulated/floor/tiled/monotile, +/area/hallway/primary/firstdeck/ascenter) +"aEk" = ( +/obj/structure/cable{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/obj/effect/floor_decal/borderfloor{ + dir = 4 + }, +/obj/effect/floor_decal/corner/green/border{ + dir = 4 + }, +/turf/simulated/floor/tiled, +/area/hallway/primary/firstdeck/ascenter) +"aEl" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/obj/structure/cable{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/obj/structure/catwalk, +/turf/simulated/floor/plating, +/area/maintenance/firstdeck/aftstarboard) +"aEm" = ( +/obj/structure/closet, +/obj/item/weapon/storage/backpack, +/obj/random/maintenance/medical, +/obj/random/maintenance/medical, +/obj/random/maintenance/medical, +/obj/random/firstaid, +/turf/simulated/floor/plating, +/area/maintenance/firstdeck/aftstarboard) +"aEn" = ( +/obj/structure/closet, +/obj/item/clothing/shoes/boots/winter, +/obj/item/clothing/shoes/boots/winter, +/obj/item/clothing/shoes/boots/winter, +/obj/item/clothing/suit/storage/hooded/wintercoat, +/obj/item/clothing/suit/storage/hooded/wintercoat, +/obj/item/clothing/suit/storage/hooded/wintercoat, +/obj/effect/floor_decal/borderfloor{ + dir = 8 + }, +/obj/effect/floor_decal/corner/green/border{ + dir = 8 + }, +/turf/simulated/floor/tiled, +/area/hangar/two) +"aEo" = ( +/obj/machinery/power/apc{ + dir = 1; + name = "north bump"; + pixel_x = 0; + pixel_y = 24 + }, +/obj/structure/cable{ + icon_state = "0-4"; + d2 = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 6 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 6 + }, +/obj/machinery/light_switch{ + pixel_x = 11; + pixel_y = 24 + }, +/turf/simulated/floor/tiled/monotile, +/area/hangar/two) +"aEp" = ( +/obj/structure/cable{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/turf/simulated/floor/tiled/monotile, +/area/hangar/two) +"aEq" = ( +/obj/structure/cable{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/obj/item/device/radio/intercom{ + dir = 1; + name = "Station Intercom (General)"; + pixel_y = 21 + }, +/turf/simulated/floor/tiled/monotile, +/area/hangar/two) +"aEr" = ( +/obj/structure/cable{ + d1 = 1; + d2 = 8; + icon_state = "1-8" + }, +/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers, +/obj/machinery/atmospherics/pipe/manifold/hidden/supply, +/obj/effect/floor_decal/steeldecal/steel_decals4{ + dir = 4 + }, +/obj/effect/floor_decal/steeldecal/steel_decals4{ + dir = 9 + }, +/turf/simulated/floor/tiled/monotile, +/area/hangar/two) +"aEs" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, +/obj/machinery/hologram/holopad, +/obj/effect/floor_decal/industrial/outline/grey, +/obj/machinery/light{ + dir = 1 + }, +/obj/machinery/embedded_controller/radio/simple_docking_controller{ + frequency = 1380; + id_tag = "hangar_2"; + name = "shuttle bay controller"; + pixel_x = 0; + pixel_y = 26; + tag_door = "hangar_2_door" + }, +/turf/simulated/floor/tiled/monotile, +/area/hangar/two) +"aEt" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/obj/effect/floor_decal/steeldecal/steel_decals4{ + dir = 9 + }, +/obj/effect/floor_decal/steeldecal/steel_decals4{ + dir = 4 + }, +/turf/simulated/floor/tiled/monotile, +/area/hangar/two) +"aEu" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/turf/simulated/floor/tiled/monotile, +/area/hangar/two) +"aEv" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/obj/machinery/firealarm{ + pixel_y = 24 + }, +/turf/simulated/floor/tiled/monotile, +/area/hangar/two) +"aEw" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 10 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 10 + }, +/obj/machinery/alarm{ + pixel_y = 22 + }, +/turf/simulated/floor/tiled/monotile, +/area/hangar/two) +"aEx" = ( +/obj/machinery/space_heater, +/obj/effect/floor_decal/borderfloor{ + dir = 4 + }, +/obj/effect/floor_decal/corner/green/border{ + dir = 4 + }, +/turf/simulated/floor/tiled, +/area/hangar/two) +"aEy" = ( +/obj/structure/shuttle/engine/propulsion{ + dir = 8; + icon_state = "propulsion_l" + }, +/turf/simulated/floor/airless, +/turf/simulated/shuttle/plating/airless/carry, +/area/shuttle/large_escape_pod1/station) +"aEz" = ( +/turf/simulated/shuttle/wall, +/area/shuttle/large_escape_pod1/station) +"aEA" = ( +/turf/simulated/shuttle/wall/no_join, +/area/shuttle/large_escape_pod1/station) +"aEB" = ( +/obj/machinery/door/airlock/external{ + frequency = 1380; + icon_state = "door_locked"; + id_tag = "large_escape_pod_1_hatch"; + locked = 1; + name = "Large Escape Pod Hatch 1"; + req_access = list(13) + }, +/turf/simulated/shuttle/floor, +/area/shuttle/large_escape_pod1/station) +"aEC" = ( +/obj/structure/sign/greencross{ + name = "Medical Pod" + }, +/turf/simulated/shuttle/wall/no_join, +/area/shuttle/large_escape_pod1/station) +"aED" = ( +/turf/simulated/floor/airless, +/area/maintenance/firstdeck/centralstarboard) +"aEE" = ( +/obj/effect/floor_decal/borderfloor{ + dir = 8 + }, +/obj/effect/floor_decal/corner/brown/border{ + dir = 8 + }, +/turf/simulated/floor/tiled, +/area/quartermaster/storage) +"aEF" = ( +/obj/effect/floor_decal/borderfloorblack/corner, +/obj/effect/floor_decal/industrial/danger/corner, +/turf/simulated/floor/tiled, +/area/quartermaster/storage) +"aEG" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 5 + }, +/obj/effect/floor_decal/borderfloorblack, +/obj/effect/floor_decal/industrial/danger, +/turf/simulated/floor/tiled, +/area/quartermaster/storage) +"aEH" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/obj/effect/floor_decal/borderfloorblack, +/obj/effect/floor_decal/industrial/danger, +/turf/simulated/floor/tiled, +/area/quartermaster/storage) +"aEI" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 5 + }, +/obj/effect/floor_decal/borderfloorblack, +/obj/effect/floor_decal/industrial/danger, +/turf/simulated/floor/tiled, +/area/quartermaster/storage) +"aEJ" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, +/obj/effect/floor_decal/borderfloorblack, +/obj/effect/floor_decal/industrial/danger, +/turf/simulated/floor/tiled, +/area/quartermaster/storage) +"aEK" = ( +/obj/machinery/atmospherics/pipe/manifold/hidden/supply, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, +/obj/effect/floor_decal/borderfloorblack, +/obj/effect/floor_decal/industrial/danger, +/turf/simulated/floor/tiled, +/area/quartermaster/storage) +"aEL" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, +/obj/effect/floor_decal/borderfloorblack/corner{ + dir = 8 + }, +/obj/effect/floor_decal/industrial/danger/corner{ + dir = 1 + }, +/turf/simulated/floor/tiled, +/area/quartermaster/storage) +"aEM" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{ + dir = 1 + }, +/turf/simulated/floor/tiled, +/area/quartermaster/storage) +"aEN" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, +/turf/simulated/floor/tiled, +/area/quartermaster/storage) +"aEO" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 10 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 10 + }, +/turf/simulated/floor/tiled, +/area/quartermaster/storage) +"aEP" = ( +/turf/simulated/floor/tiled, +/area/quartermaster/storage) +"aEQ" = ( +/obj/structure/bed/chair/office/dark{ + dir = 4 + }, +/turf/simulated/floor/tiled, +/area/quartermaster/storage) +"aER" = ( +/obj/structure/table/steel_reinforced, +/obj/item/weapon/folder/yellow, +/obj/item/weapon/pen, +/obj/item/weapon/hand_labeler, +/obj/effect/floor_decal/borderfloor{ + dir = 4 + }, +/obj/effect/floor_decal/corner/brown/border{ + dir = 4 + }, +/turf/simulated/floor/tiled, +/area/quartermaster/storage) +"aES" = ( +/turf/simulated/wall, +/area/quartermaster/hallway) +"aET" = ( +/obj/machinery/alarm{ + dir = 4; + icon_state = "alarm0"; + pixel_x = -22 + }, +/obj/structure/disposalpipe/segment, +/obj/effect/floor_decal/borderfloor{ + dir = 8 + }, +/obj/effect/floor_decal/corner/brown/border{ + dir = 8 + }, +/obj/effect/floor_decal/borderfloor/corner2{ + dir = 8 + }, +/obj/effect/floor_decal/corner/brown/bordercorner2{ + dir = 8 + }, +/turf/simulated/floor/tiled, +/area/quartermaster/hallway) +"aEU" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 6 + }, +/turf/simulated/floor/tiled, +/area/quartermaster/hallway) +"aEV" = ( +/obj/machinery/atmospherics/unary/vent_pump/on{ + dir = 8 + }, +/turf/simulated/floor/tiled, +/area/quartermaster/hallway) +"aEW" = ( +/turf/simulated/wall, +/area/quartermaster/mininglockerroom) +"aEX" = ( +/obj/structure/closet/secure_closet/miner, +/obj/machinery/power/apc{ + dir = 8; + name = "west bump"; + pixel_x = -24 + }, +/obj/structure/cable/green{ + d2 = 4; + icon_state = "0-4" + }, +/obj/machinery/light_switch{ + pixel_x = -36 + }, +/obj/effect/floor_decal/borderfloor/corner{ + dir = 1 + }, +/obj/effect/floor_decal/corner/brown/bordercorner{ + dir = 1 + }, +/turf/simulated/floor/tiled, +/area/quartermaster/mininglockerroom) +"aEY" = ( +/obj/structure/cable/green{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/turf/simulated/floor/tiled, +/area/quartermaster/mininglockerroom) +"aEZ" = ( +/obj/structure/cable/green{ + d1 = 2; + d2 = 8; + icon_state = "2-8" + }, +/obj/machinery/hologram/holopad, +/obj/effect/floor_decal/industrial/outline/grey, +/turf/simulated/floor/tiled, +/area/quartermaster/mininglockerroom) +"aFa" = ( +/obj/effect/landmark/start{ + name = "Shaft Miner" + }, +/obj/effect/floor_decal/steeldecal/steel_decals4{ + dir = 10 + }, +/obj/effect/floor_decal/steeldecal/steel_decals4, +/turf/simulated/floor/tiled/steel, +/area/quartermaster/mininglockerroom) +"aFb" = ( +/obj/machinery/door/firedoor/border_only, +/obj/machinery/door/airlock/maintenance{ + name = "Mining Maintenance"; + req_access = list(48) + }, +/turf/simulated/floor/plating, +/area/quartermaster/mininglockerroom) +"aFc" = ( +/obj/machinery/door/firedoor/border_only, +/obj/effect/wingrille_spawn/reinforced, +/turf/simulated/floor/plating, +/area/maintenance/firstdeck/aftport) +"aFd" = ( +/obj/structure/cable, +/obj/machinery/power/apc{ + dir = 2; + name = "south bump"; + pixel_y = -24 + }, +/obj/effect/floor_decal/borderfloor{ + dir = 8 + }, +/obj/effect/floor_decal/corner/green/border{ + dir = 8 + }, +/turf/simulated/floor/tiled, +/area/hallway/primary/firstdeck/apcenter) +"aFe" = ( +/obj/machinery/atmospherics/unary/vent_scrubber/on{ + dir = 1 + }, +/turf/simulated/floor/tiled/monotile, +/area/hallway/primary/firstdeck/apcenter) +"aFf" = ( +/turf/simulated/floor/tiled, +/area/hallway/primary/firstdeck/apcenter) +"aFg" = ( +/turf/simulated/floor/tiled/dark, +/area/hallway/primary/firstdeck/apcenter) +"aFh" = ( +/obj/random/obstruction, +/turf/simulated/floor/plating, +/area/hallway/primary/firstdeck/elevator) +"aFi" = ( +/turf/simulated/floor/tiled/dark, +/area/hallway/primary/firstdeck/elevator) +"aFj" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/obj/effect/floor_decal/industrial/warning{ + dir = 8 + }, +/turf/simulated/floor/tiled, +/area/hallway/primary/firstdeck/elevator) +"aFk" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/turf/simulated/floor/tiled, +/area/hallway/primary/firstdeck/elevator) +"aFl" = ( +/obj/effect/floor_decal/industrial/warning/corner{ + dir = 4 + }, +/obj/effect/floor_decal/techfloor{ + dir = 8 + }, +/turf/simulated/floor/tiled/techfloor/grid, +/area/hallway/primary/firstdeck/elevator) +"aFm" = ( +/obj/structure/sign/warning/secure_area, +/turf/simulated/wall/r_wall, +/area/tcomm/entrance) +"aFn" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/effect/floor_decal/industrial/warning/corner{ + dir = 1 + }, +/turf/simulated/floor/tiled, +/area/tcomm/entrance) +"aFo" = ( +/obj/machinery/bluespace_beacon, +/turf/simulated/floor/tiled, +/area/tcomm/entrance) +"aFp" = ( +/obj/machinery/alarm{ + dir = 8; + pixel_x = 22; + pixel_y = 0 + }, +/turf/simulated/floor/tiled, +/area/tcomm/entrance) +"aFq" = ( +/turf/simulated/floor/tiled/dark, +/area/hallway/primary/firstdeck/ascenter) +"aFr" = ( +/obj/structure/cable/green{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/turf/simulated/floor/tiled, +/area/hallway/primary/firstdeck/ascenter) +"aFs" = ( +/obj/machinery/atmospherics/unary/vent_scrubber/on{ + dir = 1 + }, +/turf/simulated/floor/tiled/monotile, +/area/hallway/primary/firstdeck/ascenter) +"aFt" = ( +/obj/machinery/power/apc{ + dir = 2; + name = "south bump"; + pixel_y = -24 + }, +/obj/structure/cable, +/obj/effect/floor_decal/borderfloor{ + dir = 4 + }, +/obj/effect/floor_decal/corner/green/border{ + dir = 4 + }, +/turf/simulated/floor/tiled, +/area/hallway/primary/firstdeck/ascenter) +"aFu" = ( +/obj/machinery/door/firedoor/border_only, +/obj/effect/wingrille_spawn/reinforced, +/turf/simulated/floor/plating, +/area/maintenance/firstdeck/aftstarboard) +"aFv" = ( +/obj/structure/table/rack, +/obj/item/weapon/extinguisher, +/obj/item/clothing/head/hardhat/red, +/obj/item/clothing/mask/gas, +/obj/item/device/flashlight, +/obj/item/clothing/glasses/meson, +/obj/random/maintenance/cargo, +/turf/simulated/floor, +/area/maintenance/firstdeck/aftstarboard) +"aFw" = ( +/obj/machinery/atmospherics/unary/vent_scrubber/on{ + dir = 4 + }, +/obj/structure/closet, +/obj/item/clothing/shoes/boots/winter, +/obj/item/clothing/shoes/boots/winter, +/obj/item/clothing/shoes/boots/winter, +/obj/item/clothing/suit/storage/hooded/wintercoat, +/obj/item/clothing/suit/storage/hooded/wintercoat, +/obj/item/clothing/suit/storage/hooded/wintercoat, +/obj/effect/floor_decal/borderfloor{ + dir = 8 + }, +/obj/effect/floor_decal/corner/green/border{ + dir = 8 + }, +/turf/simulated/floor/tiled, +/area/hangar/two) +"aFx" = ( +/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/turf/simulated/floor/tiled/monotile, +/area/hangar/two) +"aFy" = ( +/obj/effect/floor_decal/borderfloorblack/corner, +/obj/effect/floor_decal/industrial/danger/corner, +/turf/simulated/floor/tiled, +/area/hangar/two) +"aFz" = ( +/obj/effect/floor_decal/borderfloorblack, +/obj/effect/floor_decal/industrial/danger, +/turf/simulated/floor/tiled, +/area/hangar/two) +"aFA" = ( +/obj/effect/floor_decal/borderfloorblack/corner{ + dir = 8 + }, +/obj/effect/floor_decal/industrial/danger/corner{ + dir = 1 + }, +/turf/simulated/floor/tiled, +/area/hangar/two) +"aFB" = ( +/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{ + dir = 8 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/turf/simulated/floor/tiled/monotile, +/area/hangar/two) +"aFC" = ( +/obj/machinery/atmospherics/unary/vent_scrubber/on{ + dir = 8 + }, +/obj/machinery/space_heater, +/obj/effect/floor_decal/borderfloor{ + dir = 4 + }, +/obj/effect/floor_decal/corner/green/border{ + dir = 4 + }, +/turf/simulated/floor/tiled, +/area/hangar/two) +"aFD" = ( +/obj/structure/shuttle/engine/propulsion{ + dir = 8 + }, +/turf/simulated/floor/airless, +/turf/simulated/shuttle/plating/airless/carry, +/area/shuttle/large_escape_pod1/station) +"aFE" = ( +/obj/structure/shuttle/engine/heater{ + dir = 8 + }, +/obj/structure/window/reinforced{ + dir = 4; + health = 1e+006 + }, +/turf/simulated/floor/airless, +/area/shuttle/large_escape_pod1/station) +"aFF" = ( +/obj/machinery/atmospherics/unary/cryo_cell{ + layer = 3.3 + }, +/obj/structure/window/reinforced{ + dir = 8 + }, +/turf/simulated/shuttle/floor/white, +/area/shuttle/large_escape_pod1/station) +"aFG" = ( +/obj/structure/bed/roller, +/obj/structure/closet/walllocker/emerglocker{ + pixel_x = 0; + pixel_y = 32 + }, +/turf/simulated/shuttle/floor/white, +/area/shuttle/large_escape_pod1/station) +"aFH" = ( +/obj/structure/bed/roller, +/turf/simulated/shuttle/floor/white, +/area/shuttle/large_escape_pod1/station) +"aFI" = ( +/obj/machinery/embedded_controller/radio/simple_docking_controller/escape_pod{ + frequency = 1380; + id_tag = "large_escape_pod_1"; + pixel_x = -26; + pixel_y = 26; + tag_door = "large_escape_pod_1_hatch" + }, +/turf/simulated/shuttle/floor, +/area/shuttle/large_escape_pod1/station) +"aFJ" = ( +/turf/simulated/shuttle/floor, +/area/shuttle/large_escape_pod1/station) +"aFK" = ( +/obj/structure/bed/chair, +/obj/machinery/light{ + dir = 1 + }, +/turf/simulated/shuttle/floor/white, +/area/shuttle/large_escape_pod1/station) +"aFL" = ( +/obj/structure/bed/chair, +/obj/machinery/ai_status_display{ + pixel_y = 32 + }, +/turf/simulated/shuttle/floor/white, +/area/shuttle/large_escape_pod1/station) +"aFM" = ( +/obj/structure/bed/chair, +/obj/machinery/vending/wallmed1{ + layer = 3.3; + name = "Emergency NanoMed"; + pixel_x = 28; + pixel_y = 0 + }, +/turf/simulated/shuttle/floor/white, +/area/shuttle/large_escape_pod1/station) +"aFN" = ( +/turf/simulated/shuttle/wall/hard_corner, +/area/shuttle/large_escape_pod1/station) +"aFO" = ( +/obj/effect/floor_decal/borderfloorblack{ + dir = 4 + }, +/obj/effect/floor_decal/industrial/danger{ + dir = 4 + }, +/turf/simulated/floor/tiled, +/area/quartermaster/storage) +"aFP" = ( +/turf/simulated/floor/reinforced, +/area/quartermaster/storage) +"aFQ" = ( +/turf/simulated/floor/reinforced, +/area/supply/station) +"aFR" = ( +/obj/effect/floor_decal/borderfloorblack{ + dir = 8 + }, +/obj/effect/floor_decal/industrial/danger{ + dir = 8 + }, +/turf/simulated/floor/tiled, +/area/quartermaster/storage) +"aFS" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/turf/simulated/floor/tiled, +/area/quartermaster/storage) +"aFT" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/turf/simulated/floor/tiled, +/area/quartermaster/storage) +"aFU" = ( +/obj/machinery/disposal, +/obj/structure/disposalpipe/trunk{ + dir = 4 + }, +/obj/effect/floor_decal/borderfloor{ + dir = 4 + }, +/obj/effect/floor_decal/corner/brown/border{ + dir = 4 + }, +/turf/simulated/floor/tiled, +/area/quartermaster/storage) +"aFV" = ( +/obj/machinery/door/firedoor/border_only, +/obj/effect/wingrille_spawn/reinforced, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/turf/simulated/floor/plating, +/area/quartermaster/hallway) +"aFW" = ( +/obj/machinery/atmospherics/unary/vent_scrubber/on{ + dir = 4 + }, +/obj/structure/disposalpipe/junction{ + dir = 1; + icon_state = "pipe-j2" + }, +/obj/effect/floor_decal/borderfloor{ + dir = 8 + }, +/obj/effect/floor_decal/corner/brown/border{ + dir = 8 + }, +/turf/simulated/floor/tiled, +/area/quartermaster/hallway) +"aFX" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 10 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/turf/simulated/floor/tiled, +/area/quartermaster/hallway) +"aFY" = ( +/obj/effect/floor_decal/steeldecal/steel_decals4, +/obj/effect/floor_decal/steeldecal/steel_decals4{ + dir = 10 + }, +/turf/simulated/floor/tiled, +/area/quartermaster/hallway) +"aFZ" = ( +/obj/machinery/door/firedoor/border_only, +/obj/machinery/door/airlock/mining{ + name = "Mining Locker Room"; + req_access = list(50) + }, +/turf/simulated/floor/tiled/steel_grid, +/area/quartermaster/mininglockerroom) +"aGa" = ( +/obj/effect/floor_decal/steeldecal/steel_decals4{ + dir = 1 + }, +/obj/effect/floor_decal/steeldecal/steel_decals4{ + dir = 6 + }, +/turf/simulated/floor/tiled, +/area/quartermaster/mininglockerroom) +"aGb" = ( +/obj/structure/cable/green{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 6 + }, +/turf/simulated/floor/tiled, +/area/quartermaster/mininglockerroom) +"aGc" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/turf/simulated/floor/tiled, +/area/quartermaster/mininglockerroom) +"aGd" = ( +/obj/structure/bed/chair/office/dark, +/obj/machinery/atmospherics/unary/vent_pump/on{ + dir = 8 + }, +/obj/effect/landmark/start{ + name = "Shaft Miner" + }, +/turf/simulated/floor/tiled/steel, +/area/quartermaster/mininglockerroom) +"aGe" = ( +/obj/machinery/computer/security/mining, +/obj/structure/extinguisher_cabinet{ + pixel_x = 28; + pixel_y = 0 + }, +/obj/effect/floor_decal/borderfloor/corner, +/obj/effect/floor_decal/corner/brown/bordercorner, +/turf/simulated/floor/tiled/steel, +/area/quartermaster/mininglockerroom) +"aGf" = ( +/obj/machinery/light{ + icon_state = "tube1"; + dir = 8 + }, +/turf/simulated/floor/tiled, +/area/hallway/primary/firstdeck/apcenter) +"aGg" = ( +/obj/machinery/firealarm{ + pixel_y = 24 + }, +/turf/simulated/floor/tiled/dark, +/area/hallway/primary/firstdeck/apcenter) +"aGh" = ( +/obj/structure/sign/deck/first{ + pixel_x = -32 + }, +/obj/effect/floor_decal/borderfloor, +/obj/effect/floor_decal/corner/green/border, +/obj/effect/floor_decal/steeldecal/steel_decals5{ + dir = 1 + }, +/obj/effect/floor_decal/industrial/warning{ + icon_state = "warning"; + dir = 1 + }, +/turf/simulated/floor/tiled, +/area/hallway/primary/firstdeck/elevator) +"aGi" = ( +/obj/machinery/atmospherics/unary/vent_scrubber/on{ + dir = 1 + }, +/obj/machinery/alarm{ + dir = 1; + pixel_y = -22 + }, +/obj/effect/floor_decal/industrial/warning/corner{ + dir = 1 + }, +/obj/effect/floor_decal/borderfloor, +/obj/effect/floor_decal/corner/green/border, +/turf/simulated/floor/tiled, +/area/hallway/primary/firstdeck/elevator) +"aGj" = ( +/obj/machinery/light, +/obj/effect/floor_decal/borderfloor, +/obj/effect/floor_decal/corner/green/border, +/turf/simulated/floor/tiled, +/area/hallway/primary/firstdeck/elevator) +"aGk" = ( +/obj/effect/floor_decal/borderfloor/corner{ + dir = 8 + }, +/obj/effect/floor_decal/corner/green/bordercorner{ + dir = 8 + }, +/turf/simulated/floor/tiled, +/area/hallway/primary/firstdeck/elevator) +"aGl" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 5 + }, +/turf/simulated/floor/tiled, +/area/hallway/primary/firstdeck/elevator) +"aGm" = ( +/obj/machinery/atmospherics/unary/vent_pump/on{ + dir = 8 + }, +/obj/structure/cable/green{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/obj/effect/floor_decal/borderfloor{ + dir = 4 + }, +/obj/effect/floor_decal/corner/green/border{ + dir = 4 + }, +/obj/effect/floor_decal/borderfloor/corner2{ + dir = 5 + }, +/obj/effect/floor_decal/corner/green/bordercorner2{ + dir = 5 + }, +/turf/simulated/floor/tiled, +/area/hallway/primary/firstdeck/elevator) +"aGn" = ( +/obj/item/device/radio/intercom{ + dir = 4; + name = "Station Intercom (General)"; + pixel_x = 21 + }, +/obj/effect/floor_decal/techfloor{ + dir = 8 + }, +/turf/simulated/floor/tiled/techfloor/grid, +/area/hallway/primary/firstdeck/elevator) +"aGo" = ( +/obj/machinery/atmospherics/unary/vent_pump/on{ + dir = 1 + }, +/obj/effect/floor_decal/industrial/warning, +/obj/machinery/light{ + icon_state = "tube1"; + dir = 8 + }, +/turf/simulated/floor/tiled, +/area/tcomm/entrance) +"aGp" = ( +/obj/effect/floor_decal/industrial/warning, +/turf/simulated/floor/tiled, +/area/tcomm/entrance) +"aGq" = ( +/obj/structure/closet/crate, +/obj/item/clothing/glasses/night, +/obj/item/device/aicard, +/obj/item/device/multitool, +/turf/simulated/floor/tiled/dark, +/area/tcomm/entrance) +"aGr" = ( +/turf/simulated/wall, +/area/tcomm/tcomfoyer) +"aGs" = ( +/obj/machinery/firealarm{ + pixel_y = 24 + }, +/turf/simulated/floor/tiled/dark, +/area/hallway/primary/firstdeck/ascenter) +"aGt" = ( +/turf/simulated/floor/tiled, +/area/hallway/primary/firstdeck/ascenter) +"aGu" = ( +/obj/machinery/light{ + icon_state = "tube1"; + dir = 4 + }, +/turf/simulated/floor/tiled, +/area/hallway/primary/firstdeck/ascenter) +"aGv" = ( +/obj/structure/table/rack{ + dir = 1 + }, +/obj/item/weapon/storage/toolbox/emergency, +/obj/random/maintenance/medical, +/obj/random/maintenance/medical, +/obj/random/cash, +/turf/simulated/floor/plating, +/area/maintenance/firstdeck/aftstarboard) +"aGw" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/turf/simulated/floor/tiled/monotile, +/area/hangar/two) +"aGx" = ( +/obj/effect/floor_decal/borderfloorblack{ + dir = 4 + }, +/obj/effect/floor_decal/industrial/danger{ + dir = 4 + }, +/turf/simulated/floor/tiled, +/area/hangar/two) +"aGy" = ( +/turf/simulated/floor/reinforced, +/area/hangar/two) +"aGz" = ( +/obj/structure/shuttle/engine/propulsion{ + icon_state = "propulsion_r"; + dir = 1 + }, +/turf/simulated/floor/reinforced, +/turf/simulated/shuttle/plating/airless/carry, +/area/shuttle/shuttle2/start) +"aGA" = ( +/obj/structure/shuttle/engine/propulsion{ + icon_state = "propulsion_l"; + dir = 1 + }, +/turf/simulated/floor/reinforced, +/turf/simulated/shuttle/plating/airless/carry, +/area/shuttle/shuttle2/start) +"aGB" = ( +/obj/effect/floor_decal/borderfloorblack{ + dir = 8 + }, +/obj/effect/floor_decal/industrial/danger{ + dir = 8 + }, +/turf/simulated/floor/tiled, +/area/hangar/two) +"aGC" = ( +/obj/structure/extinguisher_cabinet{ + pixel_x = 25 + }, +/obj/effect/floor_decal/borderfloor{ + dir = 4 + }, +/obj/effect/floor_decal/corner/green/border{ + dir = 4 + }, +/obj/structure/closet/crate, +/turf/simulated/floor/tiled, +/area/hangar/two) +"aGD" = ( +/obj/structure/window/reinforced{ + dir = 8 + }, +/obj/machinery/atmospherics/pipe/simple/visible, +/turf/simulated/shuttle/floor, +/area/shuttle/large_escape_pod1/station) +"aGE" = ( +/obj/structure/bed/chair{ + dir = 4 + }, +/turf/simulated/shuttle/floor/white, +/area/shuttle/large_escape_pod1/station) +"aGF" = ( +/obj/structure/grille, +/obj/structure/shuttle/window, +/turf/simulated/shuttle/plating, +/area/shuttle/large_escape_pod1/station) +"aGG" = ( +/obj/machinery/atmospherics/unary/vent_scrubber/on{ + dir = 1 + }, +/turf/simulated/floor/tiled, +/area/quartermaster/storage) +"aGH" = ( +/obj/machinery/light{ + icon_state = "tube1"; + dir = 4 + }, +/obj/structure/closet/emcloset, +/obj/effect/floor_decal/borderfloor{ + dir = 4 + }, +/obj/effect/floor_decal/corner/brown/border{ + dir = 4 + }, +/turf/simulated/floor/tiled, +/area/quartermaster/storage) +"aGI" = ( +/obj/machinery/light{ + icon_state = "tube1"; + dir = 8 + }, +/obj/structure/disposalpipe/segment, +/obj/effect/floor_decal/borderfloor{ + dir = 8 + }, +/obj/effect/floor_decal/corner/brown/border{ + dir = 8 + }, +/turf/simulated/floor/tiled, +/area/quartermaster/hallway) +"aGJ" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/obj/machinery/hologram/holopad, +/obj/effect/floor_decal/industrial/outline/grey, +/turf/simulated/floor/tiled, +/area/quartermaster/hallway) +"aGK" = ( +/obj/effect/floor_decal/borderfloor/corner, +/obj/effect/floor_decal/corner/brown/bordercorner, +/turf/simulated/floor/tiled, +/area/quartermaster/hallway) +"aGL" = ( +/obj/machinery/door/firedoor/border_only, +/obj/effect/wingrille_spawn/reinforced, +/turf/simulated/floor/plating, +/area/quartermaster/mininglockerroom) +"aGM" = ( +/obj/structure/table/rack{ + dir = 1 + }, +/obj/item/weapon/storage/toolbox/mechanical{ + pixel_x = -2; + pixel_y = -1 + }, +/obj/item/weapon/storage/belt/utility, +/obj/effect/floor_decal/borderfloor, +/obj/effect/floor_decal/corner/brown/border, +/turf/simulated/floor/tiled, +/area/quartermaster/mininglockerroom) +"aGN" = ( +/obj/structure/table/rack{ + dir = 1 + }, +/obj/item/weapon/pickaxe{ + pixel_x = 5 + }, +/obj/item/weapon/shovel{ + pixel_x = -5 + }, +/obj/machinery/atmospherics/unary/vent_scrubber/on{ + dir = 4 + }, +/obj/machinery/camera/network/cargo{ + c_tag = "CRG - Mining Locker Room"; + dir = 1; + name = "security camera" + }, +/obj/effect/floor_decal/borderfloor/corner{ + dir = 8 + }, +/obj/effect/floor_decal/corner/brown/bordercorner{ + dir = 8 + }, +/turf/simulated/floor/tiled, +/area/quartermaster/mininglockerroom) +"aGO" = ( +/obj/structure/cable/green{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 10 + }, +/obj/effect/floor_decal/steeldecal/steel_decals4{ + dir = 8 + }, +/obj/effect/floor_decal/steeldecal/steel_decals4{ + dir = 5 + }, +/turf/simulated/floor/tiled, +/area/quartermaster/mininglockerroom) +"aGP" = ( +/obj/machinery/alarm{ + dir = 1; + icon_state = "alarm0"; + pixel_y = -22 + }, +/obj/item/weapon/stool, +/obj/effect/landmark/start{ + name = "Shaft Miner" + }, +/obj/effect/floor_decal/borderfloor/corner, +/obj/effect/floor_decal/corner/brown/bordercorner, +/turf/simulated/floor/tiled, +/area/quartermaster/mininglockerroom) +"aGQ" = ( +/obj/structure/table/steel, +/obj/item/weapon/paper_bin{ + pixel_x = 1; + pixel_y = 9 + }, +/obj/machinery/newscaster{ + pixel_y = -30 + }, +/obj/effect/floor_decal/borderfloor, +/obj/effect/floor_decal/corner/brown/border, +/turf/simulated/floor/tiled/steel, +/area/quartermaster/mininglockerroom) +"aGR" = ( +/obj/structure/table/steel, +/obj/item/weapon/folder/yellow, +/obj/item/weapon/pen, +/obj/machinery/requests_console{ + department = "Cargo Bay"; + departmentType = 2; + pixel_x = 0; + pixel_y = -32 + }, +/obj/machinery/light{ + icon_state = "tube1"; + dir = 4 + }, +/obj/effect/floor_decal/borderfloor{ + dir = 6 + }, +/obj/effect/floor_decal/corner/brown/border{ + dir = 6 + }, +/turf/simulated/floor/tiled/steel, +/area/quartermaster/mininglockerroom) +"aGS" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/obj/effect/floor_decal/industrial/warning/corner{ + icon_state = "warningcorner"; + dir = 1 + }, +/obj/structure/cable{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/turf/simulated/floor/plating, +/area/maintenance/firstdeck/aftport) +"aGT" = ( +/obj/machinery/alarm{ + dir = 8; + pixel_x = 22; + pixel_y = 0 + }, +/turf/simulated/floor/tiled/dark, +/area/hallway/primary/firstdeck/apcenter) +"aGU" = ( +/obj/machinery/newscaster, +/turf/simulated/wall/r_wall, +/area/hallway/primary/firstdeck/elevator) +"aGV" = ( +/obj/machinery/status_display, +/turf/simulated/wall/r_wall, +/area/hallway/primary/firstdeck/elevator) +"aGW" = ( +/obj/effect/floor_decal/borderfloor{ + dir = 8 + }, +/obj/effect/floor_decal/corner/green/border{ + dir = 8 + }, +/turf/simulated/floor/tiled, +/area/hallway/primary/firstdeck/elevator) +"aGX" = ( +/obj/effect/floor_decal/steeldecal/steel_decals4{ + dir = 8 + }, +/obj/effect/floor_decal/steeldecal/steel_decals4{ + dir = 5 + }, +/turf/simulated/floor/tiled, +/area/hallway/primary/firstdeck/elevator) +"aGY" = ( +/obj/structure/cable/green{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/obj/effect/floor_decal/steeldecal/steel_decals4{ + dir = 8 + }, +/obj/effect/floor_decal/steeldecal/steel_decals4{ + dir = 5 + }, +/turf/simulated/floor/tiled, +/area/hallway/primary/firstdeck/elevator) +"aGZ" = ( +/obj/effect/floor_decal/techfloor{ + dir = 10 + }, +/turf/simulated/floor/tiled/techfloor/grid, +/area/hallway/primary/firstdeck/elevator) +"aHa" = ( +/obj/machinery/ai_status_display, +/turf/simulated/wall/r_wall, +/area/tcomm/entrance) +"aHb" = ( +/obj/machinery/computer/teleporter, +/turf/simulated/floor/tiled/dark, +/area/tcomm/entrance) +"aHc" = ( +/obj/machinery/teleport/station, +/turf/simulated/floor/tiled/dark, +/area/tcomm/entrance) +"aHd" = ( +/obj/machinery/teleport/hub, +/turf/simulated/floor/tiled/dark, +/area/tcomm/entrance) +"aHe" = ( +/obj/machinery/alarm{ + dir = 4; + icon_state = "alarm0"; + pixel_x = -22 + }, +/turf/simulated/floor/tiled/dark, +/area/hallway/primary/firstdeck/ascenter) +"aHf" = ( +/obj/structure/cable/green{ + d1 = 2; + d2 = 4; + icon_state = "2-4" + }, +/turf/simulated/floor/tiled, +/area/hallway/primary/firstdeck/ascenter) +"aHg" = ( +/obj/structure/cable/green{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/turf/simulated/floor/tiled, +/area/hallway/primary/firstdeck/ascenter) +"aHh" = ( +/obj/structure/cable/green{ + d1 = 1; + d2 = 8; + icon_state = "1-8" + }, +/turf/simulated/floor/tiled, +/area/hallway/primary/firstdeck/ascenter) +"aHi" = ( +/obj/machinery/floodlight, +/turf/simulated/floor, +/area/maintenance/firstdeck/aftstarboard) +"aHj" = ( +/obj/effect/floor_decal/borderfloor{ + dir = 8 + }, +/obj/effect/floor_decal/corner/green/border{ + dir = 8 + }, +/obj/structure/closet/crate, +/turf/simulated/floor/tiled, +/area/hangar/two) +"aHk" = ( +/turf/simulated/shuttle/wall/voidcraft/no_join, +/area/shuttle/shuttle2/start) +"aHl" = ( +/turf/simulated/shuttle/wall/voidcraft, +/area/shuttle/shuttle2/start) +"aHm" = ( +/obj/effect/floor_decal/borderfloor{ + dir = 4 + }, +/obj/effect/floor_decal/corner/green/border{ + dir = 4 + }, +/obj/structure/closet/emcloset, +/turf/simulated/floor/tiled/steel, +/area/hangar/two) +"aHn" = ( +/obj/structure/window/reinforced{ + dir = 8 + }, +/obj/machinery/atmospherics/portables_connector{ + dir = 1 + }, +/obj/machinery/portable_atmospherics/canister/oxygen/prechilled, +/turf/simulated/shuttle/floor/white, +/area/shuttle/large_escape_pod1/station) +"aHo" = ( +/obj/structure/table/standard, +/obj/item/weapon/reagent_containers/glass/beaker/cryoxadone{ + pixel_x = -4; + pixel_y = 0 + }, +/obj/item/weapon/tool/wrench, +/obj/random/medical/lite, +/obj/structure/closet/walllocker/emerglocker{ + pixel_x = 0; + pixel_y = -32 + }, +/turf/simulated/shuttle/floor/white, +/area/shuttle/large_escape_pod1/station) +"aHp" = ( +/obj/structure/closet/crate/medical, +/obj/item/weapon/storage/firstaid/regular{ + pixel_x = -2; + pixel_y = 4 + }, +/obj/item/weapon/storage/firstaid/regular{ + pixel_x = -2; + pixel_y = 4 + }, +/obj/item/bodybag/cryobag{ + pixel_x = 5 + }, +/obj/item/bodybag/cryobag{ + pixel_x = 5 + }, +/obj/item/weapon/storage/firstaid/o2{ + layer = 2.8; + pixel_x = 4; + pixel_y = 6 + }, +/obj/item/weapon/storage/box/masks{ + pixel_x = 0; + pixel_y = 0 + }, +/obj/item/weapon/storage/box/gloves{ + pixel_x = 3; + pixel_y = 4 + }, +/obj/item/weapon/storage/firstaid/toxin, +/obj/item/weapon/storage/firstaid/fire{ + layer = 2.9; + pixel_x = 2; + pixel_y = 3 + }, +/obj/item/weapon/storage/firstaid/adv{ + pixel_x = -2 + }, +/obj/item/weapon/reagent_containers/blood/empty, +/obj/item/weapon/reagent_containers/blood/empty, +/obj/item/weapon/reagent_containers/blood/empty, +/obj/item/weapon/reagent_containers/blood/empty, +/obj/item/weapon/reagent_containers/blood/empty, +/obj/machinery/light, +/turf/simulated/shuttle/floor/white, +/area/shuttle/large_escape_pod1/station) +"aHq" = ( +/obj/machinery/sleeper{ + dir = 8 + }, +/turf/simulated/shuttle/floor, +/area/shuttle/large_escape_pod1/station) +"aHr" = ( +/obj/machinery/sleep_console, +/obj/item/device/radio/intercom/department/medbay{ + dir = 1; + pixel_x = 0; + pixel_y = -21 + }, +/turf/simulated/shuttle/floor, +/area/shuttle/large_escape_pod1/station) +"aHs" = ( +/obj/structure/bed/chair{ + dir = 1 + }, +/obj/machinery/light, +/turf/simulated/shuttle/floor/white, +/area/shuttle/large_escape_pod1/station) +"aHt" = ( +/obj/structure/bed/chair{ + dir = 1 + }, +/obj/machinery/status_display{ + density = 0; + layer = 4; + pixel_x = 0; + pixel_y = -32 + }, +/turf/simulated/shuttle/floor/white, +/area/shuttle/large_escape_pod1/station) +"aHu" = ( +/obj/structure/bed/chair{ + dir = 1 + }, +/obj/item/device/radio/intercom{ + name = "Station Intercom (General)"; + pixel_y = -21 + }, +/turf/simulated/shuttle/floor/white, +/area/shuttle/large_escape_pod1/station) +"aHv" = ( +/obj/machinery/status_display{ + density = 0; + layer = 4; + pixel_x = -32; + pixel_y = 0 + }, +/obj/effect/floor_decal/borderfloor{ + dir = 8 + }, +/obj/effect/floor_decal/corner/brown/border{ + dir = 8 + }, +/turf/simulated/floor/tiled, +/area/quartermaster/storage) +"aHw" = ( +/obj/effect/floor_decal/borderfloorblack{ + dir = 10 + }, +/obj/effect/floor_decal/industrial/danger{ + dir = 10 + }, +/turf/simulated/floor/tiled, +/area/quartermaster/storage) +"aHx" = ( +/obj/effect/floor_decal/borderfloorblack, +/obj/effect/floor_decal/industrial/danger, +/turf/simulated/floor/tiled, +/area/quartermaster/storage) +"aHy" = ( +/obj/effect/floor_decal/borderfloor{ + dir = 4 + }, +/obj/effect/floor_decal/corner/brown/border{ + dir = 4 + }, +/turf/simulated/floor/tiled, +/area/quartermaster/storage) +"aHz" = ( +/obj/structure/disposalpipe/segment, +/obj/effect/floor_decal/borderfloor{ + dir = 8 + }, +/obj/effect/floor_decal/corner/brown/border{ + dir = 8 + }, +/turf/simulated/floor/tiled, +/area/quartermaster/hallway) +"aHA" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/turf/simulated/floor/tiled, +/area/quartermaster/hallway) +"aHB" = ( +/obj/machinery/power/apc{ + dir = 4; + name = "east bump"; + pixel_x = 24 + }, +/obj/structure/cable/green{ + d2 = 2; + icon_state = "0-2" + }, +/obj/machinery/light_switch{ + pixel_x = 36; + pixel_y = 0 + }, +/obj/effect/floor_decal/borderfloor{ + dir = 4 + }, +/obj/effect/floor_decal/corner/brown/border{ + dir = 4 + }, +/turf/simulated/floor/tiled, +/area/quartermaster/hallway) +"aHC" = ( +/obj/machinery/door/firedoor/border_only, +/obj/machinery/door/airlock/mining{ + name = "Mining Locker Room"; + req_access = list(50) + }, +/obj/structure/cable/green{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/turf/simulated/floor/tiled/steel_grid, +/area/quartermaster/mininglockerroom) +"aHD" = ( +/obj/structure/loot_pile/maint/junk, +/turf/simulated/floor, +/area/maintenance/firstdeck/aftport) +"aHE" = ( +/turf/simulated/wall, +/area/hallway/primary/firstdeck/apcenter) +"aHF" = ( +/obj/structure/table/bench/standard, +/turf/simulated/floor/tiled/dark, +/area/hallway/primary/firstdeck/apcenter) +"aHG" = ( +/obj/structure/sign/directions/evac{ + dir = 1 + }, +/turf/simulated/wall/r_wall, +/area/hallway/primary/firstdeck/apcenter) +"aHH" = ( +/obj/structure/sign/directions/bridge{ + dir = 1; + pixel_y = 10 + }, +/obj/structure/sign/directions/science{ + dir = 1 + }, +/obj/structure/sign/directions/medical{ + dir = 1; + pixel_y = -10 + }, +/turf/simulated/wall, +/area/hallway/primary/firstdeck/elevator) +"aHI" = ( +/obj/machinery/door/firedoor/border_only, +/obj/machinery/door/airlock/glass{ + name = "Central Access" + }, +/turf/simulated/floor/tiled/steel_grid, +/area/hallway/primary/firstdeck/elevator) +"aHJ" = ( +/obj/machinery/door/firedoor/glass, +/obj/effect/wingrille_spawn/reinforced, +/turf/simulated/floor/plating, +/area/hallway/primary/firstdeck/elevator) +"aHK" = ( +/obj/machinery/door/firedoor/border_only, +/obj/machinery/door/airlock/glass{ + name = "Central Access" + }, +/obj/structure/cable/green{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/turf/simulated/floor/tiled/steel_grid, +/area/hallway/primary/firstdeck/elevator) +"aHL" = ( +/obj/structure/sign/directions/engineering{ + dir = 1; + pixel_y = 10 + }, +/obj/structure/sign/directions/cargo{ + dir = 1 + }, +/obj/structure/sign/directions/security{ + dir = 1; + pixel_y = -10 + }, +/turf/simulated/wall, +/area/hallway/primary/firstdeck/elevator) +"aHM" = ( +/obj/machinery/atmospherics/unary/vent_pump/on{ + dir = 4 + }, +/obj/machinery/status_display{ + density = 0; + layer = 4; + pixel_x = -32; + pixel_y = 0 + }, +/obj/effect/floor_decal/borderfloor{ + dir = 8 + }, +/obj/effect/floor_decal/corner/green/border{ + dir = 8 + }, +/turf/simulated/floor/tiled, +/area/hangar/two) +"aHN" = ( +/obj/machinery/atmospherics/pipe/manifold/hidden/supply{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/turf/simulated/floor/tiled/monotile, +/area/hangar/two) +"aHO" = ( +/turf/simulated/shuttle/wall/voidcraft/blue, +/area/shuttle/shuttle2/start) +"aHP" = ( +/obj/machinery/atmospherics/pipe/tank/air{ + dir = 4; + start_pressure = 740.5 + }, +/turf/simulated/shuttle/plating, +/area/shuttle/shuttle2/start) +"aHQ" = ( +/obj/machinery/atmospherics/pipe/simple/visible{ + dir = 4 + }, +/turf/simulated/shuttle/wall/voidcraft/hard_corner, +/area/shuttle/shuttle2/start) +"aHR" = ( +/obj/machinery/atmospherics/pipe/simple/visible{ + icon_state = "intact"; + dir = 10 + }, +/turf/simulated/shuttle/wall/voidcraft/no_join, +/area/shuttle/shuttle2/start) +"aHS" = ( +/obj/machinery/door/airlock/multi_tile/metal{ + icon_state = "door_locked"; + id_tag = "expshuttle2_door_cargo"; + locked = 1 + }, +/turf/simulated/shuttle/floor/black, +/area/shuttle/shuttle2/start) +"aHT" = ( +/obj/machinery/button/remote/airlock{ + desiredstate = 1; + dir = 8; + id = "expshuttle2_door_cargo"; + name = "Rear Hatch Control"; + pixel_x = 26; + pixel_y = 0; + req_access = list(67); + specialfunctions = 4 + }, +/turf/simulated/shuttle/floor/black, +/area/shuttle/shuttle2/start) +"aHU" = ( +/turf/simulated/shuttle/wall/voidcraft/hard_corner, +/area/shuttle/shuttle2/start) +"aHV" = ( +/obj/machinery/space_heater, +/turf/simulated/shuttle/plating, +/area/shuttle/shuttle2/start) +"aHW" = ( +/obj/machinery/atmospherics/pipe/manifold/hidden/supply{ + dir = 8 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/turf/simulated/floor/tiled/monotile, +/area/hangar/two) +"aHX" = ( +/obj/machinery/atmospherics/unary/vent_pump/on{ + dir = 8 + }, +/obj/machinery/ai_status_display{ + pixel_x = 32; + pixel_y = 0 + }, +/obj/effect/floor_decal/borderfloor{ + dir = 4 + }, +/obj/effect/floor_decal/corner/green/border{ + dir = 4 + }, +/obj/structure/closet/emcloset, +/turf/simulated/floor/tiled/steel, +/area/hangar/two) +"aHY" = ( +/obj/structure/shuttle/engine/propulsion{ + dir = 8; + icon_state = "propulsion_r" + }, +/turf/simulated/floor/airless, +/turf/simulated/shuttle/plating/airless/carry, +/area/shuttle/large_escape_pod1/station) +"aHZ" = ( +/obj/machinery/conveyor{ + dir = 4; + id = "QMLoad2" + }, +/turf/simulated/floor/plating, +/area/quartermaster/storage) +"aIa" = ( +/obj/effect/floor_decal/industrial/loading{ + dir = 4 + }, +/turf/simulated/floor/tiled, +/area/quartermaster/storage) +"aIb" = ( +/obj/item/device/radio/intercom{ + dir = 4; + name = "Station Intercom (General)"; + pixel_x = 21 + }, +/obj/effect/floor_decal/borderfloor/corner{ + dir = 4 + }, +/obj/effect/floor_decal/corner/brown/bordercorner{ + dir = 4 + }, +/turf/simulated/floor/tiled, +/area/quartermaster/storage) +"aIc" = ( +/obj/item/device/radio/intercom{ + dir = 8; + name = "Station Intercom (General)"; + pixel_x = -21 + }, +/obj/structure/disposalpipe/segment, +/obj/effect/floor_decal/borderfloor/corner{ + dir = 1 + }, +/obj/effect/floor_decal/corner/brown/bordercorner{ + dir = 1 + }, +/turf/simulated/floor/tiled, +/area/quartermaster/hallway) +"aId" = ( +/obj/structure/cable/green{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/obj/effect/floor_decal/borderfloor/corner{ + dir = 4 + }, +/obj/effect/floor_decal/corner/brown/bordercorner{ + dir = 4 + }, +/turf/simulated/floor/tiled, +/area/quartermaster/hallway) +"aIe" = ( +/obj/structure/window/reinforced{ + dir = 4; + health = 1e+006 + }, +/obj/structure/closet/emcloset, +/obj/effect/floor_decal/borderfloor{ + dir = 1 + }, +/obj/effect/floor_decal/corner/brown/border{ + dir = 1 + }, +/turf/simulated/floor/tiled, +/area/quartermaster/hallway) +"aIf" = ( +/obj/structure/stairs/west, +/turf/simulated/floor/tiled, +/area/quartermaster/hallway) +"aIg" = ( +/obj/structure/cable/green{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/obj/effect/floor_decal/steeldecal/steel_decals4{ + dir = 4 + }, +/obj/effect/floor_decal/steeldecal/steel_decals4{ + dir = 9 + }, +/turf/simulated/floor/tiled, +/area/quartermaster/hallway) +"aIh" = ( +/obj/effect/floor_decal/industrial/warning{ + dir = 8 + }, +/turf/simulated/floor/plating, +/area/maintenance/firstdeck/aftport) +"aIi" = ( +/obj/machinery/light/small{ + dir = 1 + }, +/turf/simulated/floor/plating, +/area/maintenance/firstdeck/aftport) +"aIj" = ( +/obj/structure/table/rack, +/obj/random/maintenance/cargo, +/obj/random/maintenance/cargo, +/obj/random/maintenance/cargo, +/turf/simulated/floor, +/area/maintenance/firstdeck/aftport) +"aIk" = ( +/obj/effect/floor_decal/borderfloor{ + dir = 1 + }, +/obj/effect/floor_decal/corner/green/border{ + dir = 1 + }, +/obj/effect/floor_decal/borderfloor/corner2{ + dir = 4 + }, +/obj/effect/floor_decal/corner/green/bordercorner2{ + dir = 4 + }, +/turf/simulated/floor/tiled, +/area/hallway/primary/firstdeck/apcenter) +"aIl" = ( +/obj/effect/floor_decal/borderfloor{ + dir = 1 + }, +/obj/effect/floor_decal/corner/green/border{ + dir = 1 + }, +/turf/simulated/floor/tiled, +/area/hallway/primary/firstdeck/apcenter) +"aIm" = ( +/obj/effect/floor_decal/borderfloor{ + dir = 1 + }, +/obj/effect/floor_decal/corner/green/border{ + dir = 1 + }, +/obj/effect/floor_decal/borderfloor/corner2{ + dir = 1 + }, +/obj/effect/floor_decal/corner/green/bordercorner2{ + dir = 1 + }, +/turf/simulated/floor/tiled, +/area/hallway/primary/firstdeck/apcenter) +"aIn" = ( +/obj/effect/floor_decal/steeldecal/steel_decals4{ + dir = 10 + }, +/obj/effect/floor_decal/steeldecal/steel_decals4, +/turf/simulated/floor/tiled, +/area/hallway/primary/firstdeck/apcenter) +"aIo" = ( +/obj/effect/floor_decal/steeldecal/steel_decals4{ + dir = 6 + }, +/obj/effect/floor_decal/steeldecal/steel_decals4{ + dir = 1 + }, +/turf/simulated/floor/tiled, +/area/hallway/primary/firstdeck/aft) +"aIp" = ( +/obj/effect/floor_decal/steeldecal/steel_decals4{ + dir = 4 + }, +/obj/effect/floor_decal/steeldecal/steel_decals4{ + dir = 9 + }, +/turf/simulated/floor/tiled, +/area/hallway/primary/firstdeck/aft) +"aIq" = ( +/obj/machinery/light{ + dir = 1 + }, +/obj/effect/floor_decal/steeldecal/steel_decals5, +/obj/effect/floor_decal/borderfloor/corner2{ + dir = 4 + }, +/obj/effect/floor_decal/borderfloor/corner2{ + dir = 1 + }, +/obj/effect/floor_decal/corner/green/bordercorner2{ + dir = 4 + }, +/obj/effect/floor_decal/corner/green/bordercorner2{ + dir = 1 + }, +/turf/simulated/floor/tiled, +/area/hallway/primary/firstdeck/aft) +"aIr" = ( +/obj/structure/cable/green{ + d1 = 1; + d2 = 4; + icon_state = "1-4" + }, +/obj/effect/floor_decal/steeldecal/steel_decals4{ + dir = 4 + }, +/obj/effect/floor_decal/steeldecal/steel_decals4{ + dir = 9 + }, +/turf/simulated/floor/tiled, +/area/hallway/primary/firstdeck/aft) +"aIs" = ( +/obj/structure/cable/green{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/obj/effect/floor_decal/steeldecal/steel_decals4{ + dir = 10 + }, +/obj/effect/floor_decal/steeldecal/steel_decals4, +/turf/simulated/floor/tiled, +/area/hallway/primary/firstdeck/aft) +"aIt" = ( +/obj/machinery/door/firedoor/border_only, +/obj/machinery/door/airlock/glass{ + name = "Central Access" + }, +/obj/structure/cable/green{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/turf/simulated/floor/tiled/steel_grid, +/area/hallway/primary/firstdeck/ascenter) +"aIu" = ( +/obj/structure/cable/green{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/obj/effect/floor_decal/steeldecal/steel_decals4{ + dir = 1 + }, +/obj/effect/floor_decal/steeldecal/steel_decals4{ + dir = 6 + }, +/turf/simulated/floor/tiled, +/area/hallway/primary/firstdeck/ascenter) +"aIv" = ( +/obj/structure/cable/green{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/obj/effect/floor_decal/borderfloor{ + dir = 1 + }, +/obj/effect/floor_decal/corner/green/border{ + dir = 1 + }, +/obj/effect/floor_decal/borderfloor/corner2{ + dir = 4 + }, +/obj/effect/floor_decal/corner/green/bordercorner2{ + dir = 4 + }, +/turf/simulated/floor/tiled, +/area/hallway/primary/firstdeck/ascenter) +"aIw" = ( +/obj/structure/cable/green{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/obj/effect/floor_decal/borderfloor{ + dir = 1 + }, +/obj/effect/floor_decal/corner/green/border{ + dir = 1 + }, +/obj/structure/extinguisher_cabinet{ + pixel_y = 30 + }, +/turf/simulated/floor/tiled, +/area/hallway/primary/firstdeck/ascenter) +"aIx" = ( +/obj/structure/cable/green{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/obj/effect/floor_decal/borderfloor{ + dir = 1 + }, +/obj/effect/floor_decal/corner/green/border{ + dir = 1 + }, +/obj/effect/floor_decal/borderfloor/corner2{ + dir = 1 + }, +/obj/effect/floor_decal/corner/green/bordercorner2{ + dir = 1 + }, +/turf/simulated/floor/tiled, +/area/hallway/primary/firstdeck/ascenter) +"aIy" = ( +/obj/machinery/portable_atmospherics/canister/empty, +/turf/simulated/floor/plating, +/area/maintenance/firstdeck/aftstarboard) +"aIz" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/machinery/light/spot{ + dir = 8 + }, +/obj/machinery/camera/network/first_deck{ + c_tag = "Hangar Two - Fore Port"; + dir = 4 + }, +/turf/simulated/floor/tiled/monotile, +/area/hangar/two) +"aIA" = ( +/obj/machinery/shuttle_sensor{ + dir = 10; + id_tag = "shuttle2sens_exp" + }, +/turf/simulated/shuttle/wall/voidcraft/blue, +/area/shuttle/shuttle2/start) +"aIB" = ( +/obj/effect/floor_decal/industrial/warning{ + icon_state = "warning"; + dir = 9 + }, +/obj/machinery/atmospherics/unary/vent_pump/high_volume{ + dir = 2; + frequency = 1380; + id_tag = "shuttle2_pump" + }, +/obj/structure/closet/emcloset, +/turf/simulated/shuttle/floor/black, +/area/shuttle/shuttle2/start) +"aIC" = ( +/obj/effect/floor_decal/industrial/warning{ + icon_state = "warning"; + dir = 5 + }, +/obj/machinery/light{ + dir = 1 + }, +/obj/machinery/atmospherics/unary/vent_pump/high_volume{ + dir = 2; + frequency = 1380; + id_tag = "shuttle2_pump" + }, +/turf/simulated/shuttle/floor/black, +/area/shuttle/shuttle2/start) +"aID" = ( +/obj/machinery/atmospherics/pipe/simple/visible, +/turf/simulated/shuttle/wall/voidcraft, +/area/shuttle/shuttle2/start) +"aIE" = ( +/obj/effect/floor_decal/industrial/warning{ + dir = 1 + }, +/turf/simulated/shuttle/floor/black, +/area/shuttle/shuttle2/start) +"aIF" = ( +/obj/effect/floor_decal/industrial/warning/corner{ + dir = 4 + }, +/obj/effect/floor_decal/industrial/warning/corner{ + dir = 1 + }, +/obj/machinery/light{ + dir = 1 + }, +/turf/simulated/shuttle/floor/black, +/area/shuttle/shuttle2/start) +"aIG" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/machinery/light/spot{ + dir = 4 + }, +/obj/machinery/camera/network/first_deck{ + c_tag = "Hangar Two - Fore Starboard"; + dir = 8 + }, +/turf/simulated/floor/tiled/monotile, +/area/hangar/two) +"aIH" = ( +/obj/effect/floor_decal/borderfloorblack{ + dir = 9 + }, +/obj/effect/floor_decal/industrial/danger{ + dir = 9 + }, +/turf/simulated/floor/tiled, +/area/quartermaster/storage) +"aII" = ( +/obj/effect/floor_decal/borderfloorblack{ + dir = 1 + }, +/obj/effect/floor_decal/industrial/danger{ + dir = 1 + }, +/turf/simulated/floor/tiled, +/area/quartermaster/storage) +"aIJ" = ( +/obj/machinery/conveyor_switch/oneway{ + id = "QMLoad2" + }, +/obj/effect/floor_decal/borderfloorblack{ + dir = 1 + }, +/obj/effect/floor_decal/industrial/danger{ + dir = 1 + }, +/turf/simulated/floor/tiled, +/area/quartermaster/storage) +"aIK" = ( +/obj/machinery/atmospherics/pipe/manifold/hidden/supply{ + dir = 8 + }, +/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{ + dir = 8 + }, +/turf/simulated/floor/tiled, +/area/quartermaster/storage) +"aIL" = ( +/obj/structure/cable/green{ + d1 = 2; + d2 = 4; + icon_state = "2-4" + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, +/obj/effect/floor_decal/steeldecal/steel_decals4{ + dir = 10 + }, +/obj/effect/floor_decal/steeldecal/steel_decals4, +/turf/simulated/floor/tiled, +/area/quartermaster/storage) +"aIM" = ( +/obj/structure/cable/green{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, +/obj/machinery/door/firedoor/glass, +/obj/machinery/door/airlock/glass_mining{ + name = "Cargo Bay"; + req_access = list(31) + }, +/turf/simulated/floor/tiled/steel_grid, +/area/quartermaster/hallway) +"aIN" = ( +/obj/structure/cable/green{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, +/obj/structure/disposalpipe/segment, +/obj/effect/floor_decal/steeldecal/steel_decals4{ + dir = 1 + }, +/obj/effect/floor_decal/steeldecal/steel_decals4{ + dir = 6 + }, +/turf/simulated/floor/tiled, +/area/quartermaster/hallway) +"aIO" = ( +/obj/structure/cable/green{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/obj/machinery/atmospherics/pipe/manifold/hidden/supply, +/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers, +/turf/simulated/floor/tiled, +/area/quartermaster/hallway) +"aIP" = ( +/obj/structure/cable/green{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/obj/structure/cable/green{ + d1 = 1; + d2 = 4; + icon_state = "1-4" + }, +/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{ + dir = 1 + }, +/turf/simulated/floor/tiled, +/area/quartermaster/hallway) +"aIQ" = ( +/obj/structure/cable/green{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, +/turf/simulated/floor/tiled, +/area/quartermaster/hallway) +"aIR" = ( +/obj/structure/cable/green{ + d1 = 2; + d2 = 4; + icon_state = "2-4" + }, +/obj/structure/cable/green{ + d1 = 2; + d2 = 8; + icon_state = "2-8" + }, +/obj/machinery/atmospherics/pipe/manifold/hidden/supply{ + dir = 1 + }, +/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{ + dir = 1 + }, +/turf/simulated/floor/tiled, +/area/quartermaster/hallway) +"aIS" = ( +/obj/structure/cable/green{ + d1 = 1; + d2 = 8; + icon_state = "1-8" + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 9; + pixel_y = 0 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 9 + }, +/obj/effect/floor_decal/steeldecal/steel_decals4{ + dir = 10 + }, +/obj/effect/floor_decal/steeldecal/steel_decals4, +/turf/simulated/floor/tiled, +/area/quartermaster/hallway) +"aIT" = ( +/obj/machinery/door/firedoor/border_only, +/obj/machinery/door/airlock/maintenance{ + name = "Cargo Maintenance"; + req_access = list(50) + }, +/turf/simulated/floor/plating, +/area/quartermaster/hallway) +"aIU" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/obj/structure/cable{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/obj/structure/cable{ + d1 = 1; + d2 = 4; + icon_state = "1-4" + }, +/obj/structure/catwalk, +/turf/simulated/floor/plating, +/area/maintenance/firstdeck/aftport) +"aIV" = ( +/obj/structure/cable{ + d2 = 8; + icon_state = "0-8" + }, +/obj/machinery/power/apc{ + dir = 4; + name = "east bump"; + pixel_x = 24 + }, +/obj/structure/table/steel, +/obj/random/maintenance/cargo, +/obj/random/maintenance/cargo, +/obj/random/maintenance/cargo, +/obj/random/maintenance/cargo, +/obj/structure/catwalk, +/obj/random/cash, +/turf/simulated/floor/plating, +/area/maintenance/firstdeck/aftport) +"aIW" = ( +/obj/machinery/light, +/turf/simulated/floor/tiled, +/area/hallway/primary/firstdeck/apcenter) +"aIX" = ( +/obj/machinery/atmospherics/unary/vent_scrubber/on{ + dir = 4 + }, +/turf/simulated/floor/tiled/monotile, +/area/hallway/primary/firstdeck/apcenter) +"aIY" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, +/turf/simulated/floor/tiled/monotile, +/area/hallway/primary/firstdeck/apcenter) +"aIZ" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 6 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, +/turf/simulated/floor/tiled/monotile, +/area/hallway/primary/firstdeck/apcenter) +"aJa" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, +/turf/simulated/floor/tiled/monotile, +/area/hallway/primary/firstdeck/apcenter) +"aJb" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, +/turf/simulated/floor/tiled, +/area/hallway/primary/firstdeck/apcenter) +"aJc" = ( +/obj/machinery/door/firedoor/border_only, +/obj/effect/wingrille_spawn/reinforced, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, +/turf/simulated/floor/plating, +/area/hallway/primary/firstdeck/apcenter) +"aJd" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, +/obj/effect/floor_decal/borderfloor/corner2{ + dir = 10 + }, +/obj/effect/floor_decal/borderfloor/corner2{ + dir = 8 + }, +/obj/effect/floor_decal/corner/green/bordercorner2{ + dir = 8 + }, +/obj/effect/floor_decal/corner/green/bordercorner2{ + dir = 10 + }, +/turf/simulated/floor/tiled, +/area/hallway/primary/firstdeck/aft) +"aJe" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/manifold/hidden/supply{ + dir = 1 + }, +/turf/simulated/floor/tiled/monotile, +/area/hallway/primary/firstdeck/aft) +"aJf" = ( +/obj/machinery/atmospherics/pipe/manifold/hidden/supply{ + dir = 1 + }, +/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{ + dir = 1 + }, +/obj/machinery/hologram/holopad, +/obj/effect/floor_decal/industrial/outline/grey, +/turf/simulated/floor/tiled/monotile, +/area/hallway/primary/firstdeck/aft) +"aJg" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{ + dir = 1 + }, +/turf/simulated/floor/tiled/monotile, +/area/hallway/primary/firstdeck/aft) +"aJh" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, +/obj/effect/floor_decal/borderfloor/corner2{ + dir = 5 + }, +/obj/effect/floor_decal/borderfloor/corner2{ + dir = 6 + }, +/obj/effect/floor_decal/corner/green/bordercorner2{ + dir = 6 + }, +/obj/effect/floor_decal/corner/green/bordercorner2{ + dir = 5 + }, +/turf/simulated/floor/tiled, +/area/hallway/primary/firstdeck/aft) +"aJi" = ( +/obj/machinery/door/firedoor/border_only, +/obj/effect/wingrille_spawn/reinforced, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, +/turf/simulated/floor/plating, +/area/hallway/primary/firstdeck/ascenter) +"aJj" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, +/obj/effect/floor_decal/steeldecal/steel_decals5{ + dir = 4 + }, +/turf/simulated/floor/tiled, +/area/hallway/primary/firstdeck/ascenter) +"aJk" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, +/turf/simulated/floor/tiled/monotile, +/area/hallway/primary/firstdeck/ascenter) +"aJl" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 10 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, +/turf/simulated/floor/tiled/monotile, +/area/hallway/primary/firstdeck/ascenter) +"aJm" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, +/turf/simulated/floor/tiled/monotile, +/area/hallway/primary/firstdeck/ascenter) +"aJn" = ( +/obj/machinery/atmospherics/unary/vent_scrubber/on{ + dir = 8 + }, +/turf/simulated/floor/tiled/monotile, +/area/hallway/primary/firstdeck/ascenter) +"aJo" = ( +/obj/machinery/light, +/turf/simulated/floor/tiled, +/area/hallway/primary/firstdeck/ascenter) +"aJp" = ( +/obj/structure/cable{ + icon_state = "0-4"; + d2 = 4 + }, +/obj/machinery/power/apc{ + dir = 8; + name = "west bump"; + pixel_x = -24 + }, +/obj/structure/catwalk, +/turf/simulated/floor/plating, +/area/maintenance/firstdeck/aftstarboard) +"aJq" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/obj/structure/cable{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/obj/structure/cable{ + d1 = 2; + d2 = 8; + icon_state = "2-8" + }, +/obj/structure/catwalk, +/turf/simulated/floor/plating, +/area/maintenance/firstdeck/aftstarboard) +"aJr" = ( +/obj/effect/floor_decal/borderfloor{ + dir = 8 + }, +/obj/effect/floor_decal/corner/green/border{ + dir = 8 + }, +/turf/simulated/floor/tiled, +/area/hangar/two) +"aJs" = ( +/obj/machinery/door/airlock/voidcraft/vertical{ + frequency = 1380; + id_tag = "shuttle2_outer"; + name = "External Access" + }, +/obj/machinery/access_button{ + command = "cycle_exterior"; + frequency = 1380; + master_tag = "shuttle2"; + name = "exterior access button"; + pixel_x = 0; + pixel_y = -26; + req_access = null + }, +/turf/simulated/shuttle/floor/black, +/area/shuttle/shuttle2/start) +"aJt" = ( +/obj/effect/floor_decal/industrial/warning{ + dir = 8 + }, +/obj/machinery/atmospherics/pipe/manifold/visible{ + dir = 8 + }, +/turf/simulated/shuttle/floor/black, +/area/shuttle/shuttle2/start) +"aJu" = ( +/obj/effect/floor_decal/industrial/warning{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/manifold4w/visible, +/obj/machinery/meter, +/turf/simulated/shuttle/floor/black, +/area/shuttle/shuttle2/start) +"aJv" = ( +/obj/machinery/door/airlock/voidcraft/vertical{ + frequency = 1380; + id_tag = "shuttle2_inner"; + name = "Internal Access" + }, +/obj/machinery/access_button{ + command = "cycle_interior"; + frequency = 1380; + master_tag = "shuttle2"; + name = "interior access button"; + pixel_x = 0; + pixel_y = 26; + req_access = null + }, +/obj/machinery/atmospherics/pipe/simple/visible{ + icon_state = "intact"; + dir = 9 + }, +/turf/simulated/shuttle/floor/black, +/area/shuttle/shuttle2/start) +"aJw" = ( +/turf/simulated/shuttle/floor/black, +/area/shuttle/shuttle2/start) +"aJx" = ( +/obj/machinery/button/remote/airlock{ + id = "expshuttle2_door_L"; + name = "Side Hatch Control"; + pixel_y = 26; + req_one_access = null; + specialfunctions = 4 + }, +/obj/machinery/door/airlock/voidcraft/vertical{ + icon_state = "door_locked"; + id_tag = "expshuttle2_door_L"; + locked = 1; + name = "shuttle side hatch" + }, +/turf/simulated/shuttle/floor/black, +/area/shuttle/shuttle2/start) +"aJy" = ( +/obj/effect/floor_decal/borderfloor{ + dir = 4 + }, +/obj/effect/floor_decal/corner/green/border{ + dir = 4 + }, +/turf/simulated/floor/tiled, +/area/hangar/two) +"aJz" = ( +/obj/machinery/camera/network/cargo{ + c_tag = "CRG - Cargo Bay Port"; + dir = 4; + name = "security camera" + }, +/obj/effect/floor_decal/borderfloor{ + dir = 8 + }, +/obj/effect/floor_decal/corner/brown/border{ + dir = 8 + }, +/turf/simulated/floor/tiled, +/area/quartermaster/storage) +"aJA" = ( +/obj/machinery/hologram/holopad, +/obj/effect/floor_decal/industrial/outline/grey, +/turf/simulated/floor/tiled, +/area/quartermaster/storage) +"aJB" = ( +/obj/effect/floor_decal/borderfloor, +/obj/effect/floor_decal/corner/brown/border, +/obj/effect/floor_decal/borderfloor/corner2, +/obj/effect/floor_decal/corner/brown/bordercorner2, +/turf/simulated/floor/tiled, +/area/quartermaster/storage) +"aJC" = ( +/obj/machinery/newscaster{ + pixel_y = -30 + }, +/obj/effect/floor_decal/borderfloor, +/obj/effect/floor_decal/corner/brown/border, +/turf/simulated/floor/tiled, +/area/quartermaster/storage) +"aJD" = ( +/obj/structure/cable/green, +/obj/machinery/power/apc{ + dir = 2; + name = "south bump"; + pixel_y = -24 + }, +/obj/machinery/light_switch{ + pixel_x = 11; + pixel_y = -24 + }, +/obj/effect/floor_decal/borderfloor, +/obj/effect/floor_decal/corner/brown/border, +/turf/simulated/floor/tiled, +/area/quartermaster/storage) +"aJE" = ( +/obj/machinery/status_display/supply_display, +/turf/simulated/wall, +/area/quartermaster/hallway) +"aJF" = ( +/obj/structure/extinguisher_cabinet{ + pixel_y = -30 + }, +/obj/structure/disposalpipe/trunk{ + dir = 1 + }, +/obj/machinery/disposal, +/obj/effect/floor_decal/borderfloor, +/obj/effect/floor_decal/corner/brown/border, +/turf/simulated/floor/tiled, +/area/quartermaster/hallway) +"aJG" = ( +/obj/machinery/camera/network/cargo{ + c_tag = "CRG - Cargo Hallway"; + dir = 1; + name = "security camera" + }, +/obj/effect/floor_decal/borderfloor, +/obj/effect/floor_decal/corner/brown/border, +/turf/simulated/floor/tiled, +/area/quartermaster/hallway) +"aJH" = ( +/obj/machinery/atmospherics/unary/vent_scrubber/on{ + dir = 1 + }, +/obj/machinery/firealarm{ + dir = 1; + pixel_x = 0; + pixel_y = -25 + }, +/obj/effect/floor_decal/borderfloor, +/obj/effect/floor_decal/corner/brown/border, +/turf/simulated/floor/tiled, +/area/quartermaster/hallway) +"aJI" = ( +/obj/machinery/light, +/obj/effect/floor_decal/borderfloor/corner{ + dir = 8 + }, +/obj/effect/floor_decal/corner/brown/bordercorner{ + dir = 8 + }, +/obj/effect/floor_decal/industrial/warning/corner, +/turf/simulated/floor/tiled, +/area/quartermaster/hallway) +"aJJ" = ( +/obj/structure/cable/green{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/obj/machinery/atmospherics/pipe/manifold/hidden/supply{ + dir = 8 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/obj/effect/floor_decal/industrial/warning, +/turf/simulated/floor/tiled, +/area/quartermaster/hallway) +"aJK" = ( +/obj/machinery/atmospherics/unary/vent_pump/on{ + dir = 8 + }, +/obj/effect/floor_decal/borderfloor/corner, +/obj/effect/floor_decal/corner/brown/bordercorner, +/obj/effect/floor_decal/industrial/warning/corner{ + dir = 8 + }, +/turf/simulated/floor/tiled, +/area/quartermaster/hallway) +"aJL" = ( +/obj/effect/floor_decal/borderfloor, +/obj/effect/floor_decal/corner/brown/border, +/turf/simulated/floor/tiled, +/area/quartermaster/hallway) +"aJM" = ( +/obj/effect/floor_decal/industrial/warning{ + dir = 8 + }, +/obj/machinery/space_heater, +/turf/simulated/floor/plating, +/area/maintenance/firstdeck/aftport) +"aJN" = ( +/obj/machinery/portable_atmospherics/powered/scrubber, +/obj/machinery/alarm{ + dir = 1; + pixel_y = -22 + }, +/turf/simulated/floor/plating, +/area/maintenance/firstdeck/aftport) +"aJO" = ( +/obj/structure/table/steel, +/obj/random/maintenance/cargo, +/obj/random/maintenance/cargo, +/obj/random/maintenance/cargo, +/obj/random/maintenance/cargo, +/obj/random/toolbox, +/turf/simulated/floor/plating, +/area/maintenance/firstdeck/aftport) +"aJP" = ( +/obj/effect/floor_decal/borderfloor, +/obj/effect/floor_decal/corner/green/border, +/obj/machinery/ai_status_display{ + pixel_y = -32 + }, +/turf/simulated/floor/tiled, +/area/hallway/primary/firstdeck/apcenter) +"aJQ" = ( +/obj/effect/floor_decal/borderfloor, +/obj/effect/floor_decal/corner/green/border, +/turf/simulated/floor/tiled, +/area/hallway/primary/firstdeck/apcenter) +"aJR" = ( +/obj/machinery/atmospherics/unary/vent_pump/on{ + dir = 1 + }, +/obj/machinery/camera/network/first_deck{ + c_tag = "First Deck - Center Five"; + dir = 1 + }, +/obj/effect/floor_decal/borderfloor, +/obj/effect/floor_decal/corner/green/border, +/turf/simulated/floor/tiled, +/area/hallway/primary/firstdeck/apcenter) +"aJS" = ( +/obj/effect/floor_decal/borderfloor, +/obj/effect/floor_decal/corner/green/border, +/obj/effect/floor_decal/borderfloor/corner2{ + dir = 9 + }, +/obj/effect/floor_decal/corner/green/bordercorner2{ + dir = 9 + }, +/turf/simulated/floor/tiled, +/area/hallway/primary/firstdeck/apcenter) +"aJT" = ( +/obj/machinery/atmospherics/unary/vent_pump/on{ + dir = 1 + }, +/turf/simulated/floor/tiled, +/area/hallway/primary/firstdeck/aft) +"aJU" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/turf/simulated/floor/tiled/monotile, +/area/hallway/primary/firstdeck/aft) +"aJV" = ( +/obj/machinery/atmospherics/unary/vent_scrubber/on{ + dir = 1 + }, +/turf/simulated/floor/tiled, +/area/hallway/primary/firstdeck/aft) +"aJW" = ( +/obj/effect/floor_decal/steeldecal/steel_decals4{ + dir = 10 + }, +/obj/effect/floor_decal/steeldecal/steel_decals4, +/turf/simulated/floor/tiled, +/area/hallway/primary/firstdeck/aft) +"aJX" = ( +/obj/machinery/door/firedoor/border_only, +/obj/machinery/door/airlock/glass{ + name = "Central Access" + }, +/turf/simulated/floor/tiled/steel_grid, +/area/hallway/primary/firstdeck/ascenter) +"aJY" = ( +/obj/effect/floor_decal/steeldecal/steel_decals4{ + dir = 1 + }, +/obj/effect/floor_decal/steeldecal/steel_decals4{ + dir = 6 + }, +/turf/simulated/floor/tiled, +/area/hallway/primary/firstdeck/ascenter) +"aJZ" = ( +/obj/effect/floor_decal/borderfloor, +/obj/effect/floor_decal/corner/green/border, +/obj/effect/floor_decal/borderfloor/corner2, +/obj/effect/floor_decal/corner/green/bordercorner2, +/turf/simulated/floor/tiled, +/area/hallway/primary/firstdeck/ascenter) +"aKa" = ( +/obj/machinery/atmospherics/unary/vent_pump/on{ + dir = 1 + }, +/obj/machinery/camera/network/first_deck{ + c_tag = "First Deck - Center Four"; + dir = 1 + }, +/obj/effect/floor_decal/borderfloor, +/obj/effect/floor_decal/corner/green/border, +/turf/simulated/floor/tiled, +/area/hallway/primary/firstdeck/ascenter) +"aKb" = ( +/obj/effect/floor_decal/borderfloor, +/obj/effect/floor_decal/corner/green/border, +/turf/simulated/floor/tiled, +/area/hallway/primary/firstdeck/ascenter) +"aKc" = ( +/obj/effect/floor_decal/borderfloor, +/obj/effect/floor_decal/corner/green/border, +/obj/machinery/status_display{ + pixel_x = 0; + pixel_y = -32 + }, +/turf/simulated/floor/tiled, +/area/hallway/primary/firstdeck/ascenter) +"aKd" = ( +/obj/item/inflatable/door/torn, +/obj/item/weapon/tool/screwdriver, +/turf/simulated/floor, +/area/maintenance/firstdeck/aftstarboard) +"aKe" = ( +/obj/structure/reagent_dispensers/fueltank, +/turf/simulated/floor/plating, +/area/maintenance/firstdeck/aftstarboard) +"aKf" = ( +/obj/effect/floor_decal/industrial/warning{ + dir = 10 + }, +/obj/machinery/airlock_sensor{ + frequency = 1380; + id_tag = "shuttle2_sensor"; + pixel_x = 0; + pixel_y = -28 + }, +/obj/machinery/atmospherics/unary/vent_pump/high_volume{ + dir = 1; + frequency = 1380; + id_tag = "shuttle2_pump" + }, +/turf/simulated/shuttle/floor/black, +/area/shuttle/shuttle2/start) +"aKg" = ( +/obj/effect/floor_decal/industrial/warning{ + dir = 6 + }, +/obj/machinery/embedded_controller/radio/airlock/docking_port{ + frequency = 1380; + id_tag = "shuttle2_shuttle"; + pixel_y = -26; + tag_airpump = "shuttle2_pump"; + tag_chamber_sensor = "shuttle2_sensor"; + tag_exterior_door = "shuttle2_outer"; + tag_interior_door = "shuttle2_inner" + }, +/obj/machinery/atmospherics/unary/vent_pump/high_volume{ + dir = 1; + frequency = 1380; + id_tag = "shuttle2_pump" + }, +/turf/simulated/shuttle/floor/black, +/area/shuttle/shuttle2/start) +"aKh" = ( +/obj/structure/grille, +/obj/structure/window/reinforced/full, +/obj/structure/window/reinforced{ + dir = 1 + }, +/obj/structure/window/reinforced{ + dir = 8 + }, +/obj/structure/window/reinforced, +/obj/structure/window/reinforced{ + dir = 4; + health = 1e+006 + }, +/turf/simulated/shuttle/plating, +/area/shuttle/shuttle2/start) +"aKi" = ( +/obj/effect/floor_decal/industrial/warning{ + dir = 4 + }, +/turf/simulated/shuttle/floor/black, +/area/shuttle/shuttle2/start) +"aKj" = ( +/obj/structure/closet/walllocker/emerglocker{ + pixel_x = 0; + pixel_y = -32 + }, +/obj/effect/floor_decal/industrial/warning{ + icon_state = "warning"; + dir = 1 + }, +/turf/simulated/shuttle/floor/skipjack, +/area/shuttle/shuttle2/start) +"aKk" = ( +/obj/effect/floor_decal/industrial/warning{ + icon_state = "warning"; + dir = 1 + }, +/turf/simulated/shuttle/floor/skipjack, +/area/shuttle/shuttle2/start) +"aKl" = ( +/obj/machinery/shuttle_sensor{ + dir = 9; + id_tag = "shuttle2sens_exp_int" + }, +/turf/simulated/shuttle/wall/voidcraft/blue, +/area/shuttle/shuttle2/start) +"aKm" = ( +/obj/structure/lattice, +/obj/structure/grille/broken, +/obj/item/stack/rods, +/turf/space, +/area/space) +"aKn" = ( +/obj/machinery/conveyor_switch/oneway{ + convdir = -1; + id = "QMLoad" + }, +/obj/effect/floor_decal/borderfloorblack, +/obj/effect/floor_decal/industrial/danger, +/turf/simulated/floor/tiled, +/area/quartermaster/storage) +"aKo" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/obj/machinery/alarm{ + dir = 8; + pixel_x = 22; + pixel_y = 0 + }, +/obj/machinery/camera/network/cargo{ + c_tag = "CRG - Cargo Bay Starboard"; + dir = 8; + name = "security camera" + }, +/turf/simulated/floor/tiled, +/area/quartermaster/storage) +"aKp" = ( +/turf/simulated/wall/r_wall, +/area/maintenance/substation/firstdeck/cargo) +"aKq" = ( +/turf/simulated/wall, +/area/maintenance/substation/firstdeck/cargo) +"aKr" = ( +/obj/structure/cable/green{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/obj/machinery/door/firedoor, +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/obj/machinery/door/airlock/engineering{ + name = "Cargo Substation"; + req_one_access = list(50) + }, +/turf/simulated/floor/plating, +/area/maintenance/substation/firstdeck/cargo) +"aKs" = ( +/turf/simulated/wall, +/area/storage/emergency_storage/firstdeck/ap_emergency) +"aKt" = ( +/turf/simulated/wall/r_wall, +/area/storage/emergency_storage/firstdeck/ap_emergency) +"aKu" = ( +/obj/effect/floor_decal/borderfloor{ + dir = 10 + }, +/obj/effect/floor_decal/corner/green/border{ + dir = 10 + }, +/obj/effect/floor_decal/borderfloor/corner2{ + dir = 8 + }, +/obj/effect/floor_decal/corner/green/bordercorner2{ + dir = 8 + }, +/turf/simulated/floor/tiled, +/area/hallway/primary/firstdeck/aft) +"aKv" = ( +/obj/effect/floor_decal/borderfloor/corner{ + dir = 8 + }, +/obj/effect/floor_decal/corner/green/bordercorner{ + dir = 8 + }, +/turf/simulated/floor/tiled, +/area/hallway/primary/firstdeck/aft) +"aKw" = ( +/obj/effect/floor_decal/borderfloor/corner, +/obj/effect/floor_decal/corner/green/bordercorner, +/turf/simulated/floor/tiled, +/area/hallway/primary/firstdeck/aft) +"aKx" = ( +/obj/effect/floor_decal/borderfloor{ + dir = 6 + }, +/obj/effect/floor_decal/corner/green/border{ + dir = 6 + }, +/obj/effect/floor_decal/borderfloor/corner2{ + dir = 6 + }, +/obj/effect/floor_decal/corner/green/bordercorner2{ + dir = 6 + }, +/turf/simulated/floor/tiled, +/area/hallway/primary/firstdeck/aft) +"aKy" = ( +/turf/simulated/wall/r_wall, +/area/storage/emergency_storage/firstdeck/as_emergency) +"aKz" = ( +/turf/simulated/wall, +/area/storage/emergency_storage/firstdeck/as_emergency) +"aKA" = ( +/obj/structure/reagent_dispensers/watertank, +/turf/simulated/floor/plating, +/area/maintenance/firstdeck/aftstarboard) +"aKB" = ( +/obj/machinery/atmospherics/unary/vent_scrubber/on{ + dir = 4 + }, +/obj/effect/floor_decal/borderfloor{ + dir = 8 + }, +/obj/effect/floor_decal/corner/green/border{ + dir = 8 + }, +/turf/simulated/floor/tiled, +/area/hangar/two) +"aKC" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 9 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/turf/simulated/floor/tiled/monofloor{ + dir = 1 + }, +/area/hangar/two) +"aKD" = ( +/obj/machinery/door/airlock/centcom, +/turf/simulated/shuttle/floor/black, +/area/shuttle/shuttle2/start) +"aKE" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 5 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/turf/simulated/floor/tiled/monofloor{ + dir = 1 + }, +/area/hangar/two) +"aKF" = ( +/obj/machinery/atmospherics/unary/vent_scrubber/on{ + dir = 8 + }, +/obj/effect/floor_decal/borderfloor{ + dir = 4 + }, +/obj/effect/floor_decal/corner/green/border{ + dir = 4 + }, +/turf/simulated/floor/tiled, +/area/hangar/two) +"aKG" = ( +/obj/machinery/conveyor{ + dir = 4; + id = "QMLoad" + }, +/turf/simulated/floor/plating, +/area/quartermaster/storage) +"aKH" = ( +/obj/effect/floor_decal/industrial/loading{ + icon_state = "loadingarea"; + dir = 8 + }, +/turf/simulated/floor/tiled, +/area/quartermaster/storage) +"aKI" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/obj/machinery/embedded_controller/radio/simple_docking_controller{ + frequency = 1380; + id_tag = "cargo_bay"; + name = "cargo bay hatch controller"; + pixel_x = 30; + pixel_y = 0; + req_one_access = list(13,31); + tag_door = "cargo_bay_door" + }, +/turf/simulated/floor/tiled, +/area/quartermaster/storage) +"aKJ" = ( +/turf/unsimulated/mask, +/area/quartermaster/storage) +"aKK" = ( +/obj/machinery/power/apc{ + dir = 1; + name = "north bump"; + pixel_x = 0; + pixel_y = 24 + }, +/obj/structure/cable/green{ + d2 = 4; + icon_state = "0-4" + }, +/turf/simulated/floor/plating, +/area/maintenance/substation/firstdeck/cargo) +"aKL" = ( +/obj/structure/cable/green{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/obj/structure/cable/green{ + d1 = 1; + d2 = 4; + icon_state = "1-4" + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 5 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 5 + }, +/turf/simulated/floor/plating, +/area/maintenance/substation/firstdeck/cargo) +"aKM" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 10 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 10 + }, +/obj/structure/cable/green{ + d1 = 2; + d2 = 8; + icon_state = "2-8" + }, +/turf/simulated/floor/plating, +/area/maintenance/substation/firstdeck/cargo) +"aKN" = ( +/obj/machinery/portable_atmospherics/hydroponics, +/turf/simulated/floor/plating, +/area/maintenance/firstdeck/aftport) +"aKO" = ( +/obj/structure/ladder/up, +/obj/effect/floor_decal/industrial/outline/yellow, +/turf/simulated/floor/plating, +/area/storage/emergency_storage/firstdeck/ap_emergency) +"aKP" = ( +/obj/structure/cable{ + d2 = 2; + icon_state = "0-2"; + pixel_y = 0 + }, +/obj/machinery/power/apc{ + dir = 1; + name = "north bump"; + pixel_x = 0; + pixel_y = 24 + }, +/obj/structure/catwalk, +/turf/simulated/floor/plating, +/area/storage/emergency_storage/firstdeck/ap_emergency) +"aKQ" = ( +/obj/machinery/door/firedoor/border_only, +/obj/effect/wingrille_spawn/reinforced, +/turf/simulated/floor/plating, +/area/hallway/primary/firstdeck/aft) +"aKR" = ( +/turf/simulated/floor/tiled/dark, +/area/hallway/primary/firstdeck/aft) +"aKS" = ( +/obj/effect/floor_decal/borderfloor{ + dir = 8 + }, +/obj/effect/floor_decal/corner/green/border{ + dir = 8 + }, +/turf/simulated/floor/tiled, +/area/hallway/primary/firstdeck/aft) +"aKT" = ( +/obj/effect/floor_decal/borderfloor{ + dir = 4 + }, +/obj/effect/floor_decal/corner/green/border{ + dir = 4 + }, +/turf/simulated/floor/tiled, +/area/hallway/primary/firstdeck/aft) +"aKU" = ( +/obj/machinery/light{ + icon_state = "tube1"; + dir = 4 + }, +/turf/simulated/floor/tiled/dark, +/area/hallway/primary/firstdeck/aft) +"aKV" = ( +/obj/structure/cable{ + d2 = 2; + icon_state = "0-2"; + pixel_y = 0 + }, +/obj/machinery/power/apc{ + dir = 1; + name = "north bump"; + pixel_x = 0; + pixel_y = 24 + }, +/obj/structure/catwalk, +/turf/simulated/floor/plating, +/area/storage/emergency_storage/firstdeck/as_emergency) +"aKW" = ( +/obj/item/device/t_scanner, +/obj/item/weapon/storage/box/lights/mixed, +/obj/item/weapon/storage/box/lights/mixed, +/obj/structure/table/steel, +/obj/random/maintenance/engineering, +/obj/random/maintenance/clean, +/obj/random/maintenance/clean, +/obj/structure/catwalk, +/turf/simulated/floor/plating, +/area/storage/emergency_storage/firstdeck/as_emergency) +"aKX" = ( +/obj/structure/loot_pile/maint/technical, +/turf/simulated/floor/plating, +/area/maintenance/firstdeck/aftstarboard) +"aKY" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/turf/simulated/floor/tiled/monofloor, +/area/hangar/two) +"aKZ" = ( +/obj/structure/bed/chair/shuttle, +/turf/simulated/shuttle/floor/black, +/area/shuttle/shuttle2/start) +"aLa" = ( +/obj/structure/bed/chair/shuttle, +/obj/item/device/radio/intercom{ + dir = 1; + name = "Station Intercom (General)"; + pixel_y = 21 + }, +/turf/simulated/shuttle/floor/black, +/area/shuttle/shuttle2/start) +"aLb" = ( +/obj/machinery/sleep_console{ + dir = 4 + }, +/turf/simulated/shuttle/floor/black, +/area/shuttle/shuttle2/start) +"aLc" = ( +/obj/machinery/sleeper{ + dir = 4 + }, +/turf/simulated/shuttle/floor/black, +/area/shuttle/shuttle2/start) +"aLd" = ( +/obj/effect/floor_decal/borderfloorblack{ + dir = 5 + }, +/obj/effect/floor_decal/industrial/danger{ + dir = 5 + }, +/turf/simulated/floor/tiled/techfloor/grid, +/area/quartermaster/storage) +"aLe" = ( +/obj/machinery/light/small{ + dir = 8 + }, +/obj/structure/ore_box, +/turf/simulated/floor/plating, +/area/maintenance/substation/firstdeck/cargo) +"aLf" = ( +/obj/effect/floor_decal/industrial/warning/corner, +/turf/simulated/floor/plating, +/area/maintenance/substation/firstdeck/cargo) +"aLg" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/obj/effect/floor_decal/industrial/warning, +/obj/structure/cable/green{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/obj/machinery/alarm{ + dir = 8; + pixel_x = 22; + pixel_y = 0 + }, +/turf/simulated/floor/plating, +/area/maintenance/substation/firstdeck/cargo) +"aLh" = ( +/obj/structure/closet/crate, +/obj/item/weapon/storage/box/lights/mixed, +/obj/item/stack/cable_coil/random, +/obj/machinery/light_construct, +/obj/machinery/light_construct, +/turf/simulated/floor/plating, +/area/maintenance/firstdeck/aftport) +"aLi" = ( +/obj/machinery/door/airlock{ + name = "Emergency Storage" + }, +/turf/simulated/floor/plating, +/area/maintenance/firstdeck/aftport) +"aLj" = ( +/obj/machinery/door/firedoor/border_only, +/obj/machinery/door/airlock/maintenance{ + req_access = list(12) + }, +/turf/simulated/floor/plating, +/area/storage/emergency_storage/firstdeck/ap_emergency) +"aLk" = ( +/obj/structure/catwalk, +/turf/simulated/floor/plating, +/area/storage/emergency_storage/firstdeck/ap_emergency) +"aLl" = ( +/obj/structure/cable{ + d1 = 1; + d2 = 2; + icon_state = "1-2"; + pixel_y = 0 + }, +/obj/structure/catwalk, +/turf/simulated/floor/plating, +/area/storage/emergency_storage/firstdeck/ap_emergency) +"aLm" = ( +/obj/machinery/alarm{ + dir = 8; + icon_state = "alarm0"; + pixel_x = 22 + }, +/turf/simulated/floor/plating, +/area/storage/emergency_storage/firstdeck/ap_emergency) +"aLn" = ( +/obj/machinery/atmospherics/unary/vent_scrubber/on{ + dir = 4 + }, +/obj/structure/flora/pottedplant/tropical, +/turf/simulated/floor/tiled/dark, +/area/hallway/primary/firstdeck/aft) +"aLo" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, +/obj/effect/floor_decal/borderfloor{ + dir = 8 + }, +/obj/effect/floor_decal/corner/green/border{ + dir = 8 + }, +/turf/simulated/floor/tiled, +/area/hallway/primary/firstdeck/aft) +"aLp" = ( +/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/manifold/hidden/supply{ + dir = 8 + }, +/turf/simulated/floor/tiled/monotile, +/area/hallway/primary/firstdeck/aft) +"aLq" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/obj/effect/floor_decal/borderfloor{ + dir = 4 + }, +/obj/effect/floor_decal/corner/green/border{ + dir = 4 + }, +/turf/simulated/floor/tiled, +/area/hallway/primary/firstdeck/aft) +"aLr" = ( +/obj/machinery/atmospherics/unary/vent_pump/on{ + dir = 8 + }, +/obj/structure/closet/emcloset, +/turf/simulated/floor/tiled/dark, +/area/hallway/primary/firstdeck/aft) +"aLs" = ( +/obj/machinery/alarm{ + dir = 4; + icon_state = "alarm0"; + pixel_x = -22 + }, +/obj/machinery/floodlight, +/turf/simulated/floor/plating, +/area/storage/emergency_storage/firstdeck/as_emergency) +"aLt" = ( +/obj/structure/cable{ + d1 = 1; + d2 = 2; + icon_state = "1-2"; + pixel_y = 0 + }, +/obj/structure/catwalk, +/turf/simulated/floor/plating, +/area/storage/emergency_storage/firstdeck/as_emergency) +"aLu" = ( +/obj/structure/catwalk, +/turf/simulated/floor/plating, +/area/storage/emergency_storage/firstdeck/as_emergency) +"aLv" = ( +/obj/machinery/door/firedoor/border_only, +/obj/machinery/door/airlock/maintenance{ + req_access = null; + req_one_access = list(12,67) + }, +/turf/simulated/floor/plating, +/area/storage/emergency_storage/firstdeck/as_emergency) +"aLw" = ( +/obj/structure/closet/emcloset, +/turf/simulated/floor/plating, +/area/maintenance/firstdeck/aftstarboard) +"aLx" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/turf/simulated/floor/tiled/monotile, +/area/hangar/two) +"aLy" = ( +/obj/machinery/light{ + dir = 8; + icon_state = "tube1"; + pixel_y = 0 + }, +/obj/structure/closet/walllocker/emerglocker{ + pixel_x = -32 + }, +/turf/simulated/shuttle/floor/black, +/area/shuttle/shuttle2/start) +"aLz" = ( +/obj/machinery/light{ + dir = 4; + icon_state = "tube1"; + pixel_x = 0 + }, +/obj/structure/closet/walllocker/emerglocker{ + pixel_x = 32 + }, +/turf/simulated/shuttle/floor/black, +/area/shuttle/shuttle2/start) +"aLA" = ( +/obj/machinery/ai_status_display{ + pixel_x = -32; + pixel_y = 0 + }, +/obj/effect/floor_decal/borderfloor{ + dir = 8 + }, +/obj/effect/floor_decal/corner/brown/border{ + dir = 8 + }, +/turf/simulated/floor/tiled, +/area/quartermaster/storage) +"aLB" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/obj/effect/floor_decal/steeldecal/steel_decals_central5{ + dir = 4 + }, +/turf/simulated/floor/tiled, +/area/quartermaster/storage) +"aLC" = ( +/obj/effect/floor_decal/borderfloorblack{ + dir = 4 + }, +/obj/effect/floor_decal/industrial/danger{ + dir = 4 + }, +/turf/simulated/floor/tiled/techfloor/grid, +/area/quartermaster/storage) +"aLD" = ( +/obj/machinery/firealarm{ + dir = 1; + pixel_y = -24 + }, +/obj/structure/table/rack{ + dir = 8; + layer = 2.6 + }, +/obj/random/maintenance/cargo, +/obj/random/maintenance/cargo, +/obj/random/maintenance/cargo, +/obj/random/maintenance/cargo, +/turf/simulated/floor/plating, +/area/maintenance/substation/firstdeck/cargo) +"aLE" = ( +/obj/effect/floor_decal/industrial/warning{ + dir = 4 + }, +/turf/simulated/floor/plating, +/area/maintenance/substation/firstdeck/cargo) +"aLF" = ( +/obj/machinery/atmospherics/pipe/zpipe/up/scrubbers{ + dir = 1 + }, +/obj/machinery/atmospherics/pipe/zpipe/up/supply{ + dir = 1 + }, +/obj/structure/cable/green, +/obj/structure/cable/green{ + d1 = 16; + d2 = 0; + icon_state = "16-0" + }, +/turf/simulated/floor/plating, +/area/maintenance/substation/firstdeck/cargo) +"aLG" = ( +/obj/random/maintenance/clean, +/obj/random/maintenance/clean, +/obj/random/maintenance/cargo, +/turf/simulated/floor, +/area/maintenance/firstdeck/aftport) +"aLH" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/obj/structure/cable{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/turf/simulated/floor/plating, +/area/maintenance/firstdeck/aftport) +"aLI" = ( +/obj/machinery/light/small{ + dir = 8 + }, +/obj/structure/catwalk, +/turf/simulated/floor/plating, +/area/storage/emergency_storage/firstdeck/ap_emergency) +"aLJ" = ( +/obj/structure/reagent_dispensers/watertank, +/turf/simulated/floor/plating, +/area/storage/emergency_storage/firstdeck/ap_emergency) +"aLK" = ( +/obj/machinery/door/firedoor/border_only, +/obj/structure/cable{ + icon_state = "0-4"; + d2 = 4 + }, +/obj/structure/cable{ + d2 = 2; + icon_state = "0-2"; + pixel_y = 0 + }, +/obj/effect/wingrille_spawn/reinforced, +/turf/simulated/floor, +/area/storage/tech) +"aLL" = ( +/obj/machinery/door/firedoor/border_only, +/obj/structure/cable{ + icon_state = "0-4"; + d2 = 4 + }, +/obj/structure/cable{ + d2 = 8; + icon_state = "0-8" + }, +/obj/effect/wingrille_spawn/reinforced, +/turf/simulated/floor, +/area/storage/tech) +"aLM" = ( +/obj/machinery/door/firedoor/border_only, +/obj/structure/cable{ + d2 = 2; + icon_state = "0-2"; + pixel_y = 0 + }, +/obj/structure/cable{ + icon_state = "0-4"; + d2 = 4 + }, +/obj/structure/cable{ + d2 = 8; + icon_state = "0-8" + }, +/obj/effect/wingrille_spawn/reinforced, +/turf/simulated/floor, +/area/storage/tech) +"aLN" = ( +/obj/machinery/door/firedoor/border_only, +/obj/structure/cable{ + d2 = 2; + icon_state = "0-2"; + pixel_y = 0 + }, +/obj/structure/cable{ + d2 = 8; + icon_state = "0-8" + }, +/obj/effect/wingrille_spawn/reinforced, +/turf/simulated/floor, +/area/storage/tech) +"aLO" = ( +/turf/simulated/wall/r_wall, +/area/hallway/primary/firstdeck/aft) +"aLP" = ( +/obj/machinery/camera/network/first_deck{ + c_tag = "First Deck - Aft Hallway One"; + dir = 4 + }, +/obj/machinery/alarm{ + dir = 4; + icon_state = "alarm0"; + pixel_x = -22 + }, +/obj/effect/floor_decal/borderfloor/corner{ + dir = 1 + }, +/obj/effect/floor_decal/corner/green/bordercorner{ + dir = 1 + }, +/turf/simulated/floor/tiled, +/area/hallway/primary/firstdeck/aft) +"aLQ" = ( +/obj/machinery/firealarm{ + dir = 4; + pixel_x = 24 + }, +/obj/effect/floor_decal/borderfloor/corner{ + dir = 4 + }, +/obj/effect/floor_decal/corner/green/bordercorner{ + dir = 4 + }, +/turf/simulated/floor/tiled, +/area/hallway/primary/firstdeck/aft) +"aLR" = ( +/turf/simulated/wall/r_wall, +/area/engineering/auxiliary_engineering) +"aLS" = ( +/obj/machinery/door/firedoor/border_only, +/obj/effect/wingrille_spawn/reinforced, +/turf/simulated/floor/plating, +/area/engineering/auxiliary_engineering) +"aLT" = ( +/obj/structure/ladder/up, +/obj/effect/floor_decal/industrial/outline/yellow, +/turf/simulated/floor/plating, +/area/storage/emergency_storage/firstdeck/as_emergency) +"aLU" = ( +/obj/machinery/space_heater, +/obj/machinery/light/small{ + dir = 4; + pixel_y = 0 + }, +/obj/structure/catwalk, +/turf/simulated/floor/plating, +/area/storage/emergency_storage/firstdeck/as_emergency) +"aLV" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/machinery/light/spot{ + dir = 8 + }, +/obj/machinery/camera/network/first_deck{ + c_tag = "Hangar Two - Aft Port"; + dir = 4 + }, +/turf/simulated/floor/tiled/monotile, +/area/hangar/two) +"aLW" = ( +/obj/effect/floor_decal/borderfloorblack{ + dir = 4 + }, +/obj/effect/floor_decal/industrial/danger{ + dir = 4 + }, +/turf/simulated/floor/tiled/steel, +/area/hangar/two) +"aLX" = ( +/obj/structure/bed/chair/shuttle{ + dir = 1 + }, +/turf/simulated/shuttle/floor/black, +/area/shuttle/shuttle2/start) +"aLY" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/machinery/light/spot{ + dir = 4 + }, +/obj/machinery/camera/network/first_deck{ + c_tag = "Hangar Two - Aft Starboard"; + dir = 8 + }, +/turf/simulated/floor/tiled/monotile, +/area/hangar/two) +"aLZ" = ( +/obj/machinery/atmospherics/unary/vent_scrubber/on, +/turf/simulated/floor/tiled, +/area/quartermaster/storage) +"aMa" = ( +/obj/effect/floor_decal/borderfloorblack{ + dir = 6 + }, +/obj/effect/floor_decal/industrial/danger{ + dir = 6 + }, +/turf/simulated/floor/tiled/techfloor/grid, +/area/quartermaster/storage) +"aMb" = ( +/obj/machinery/door/firedoor, +/obj/machinery/door/airlock/engineering{ + name = "Cargo Substation"; + req_one_access = list(11,24) + }, +/turf/simulated/floor/plating, +/area/maintenance/substation/firstdeck/cargo) +"aMc" = ( +/obj/structure/closet/crate/hydroponics, +/obj/item/weapon/material/knife/machete/hatchet, +/obj/item/weapon/material/minihoe, +/turf/simulated/floor/plating, +/area/maintenance/firstdeck/aftport) +"aMd" = ( +/obj/structure/reagent_dispensers/watertank, +/turf/simulated/floor/plating, +/area/maintenance/firstdeck/aftport) +"aMe" = ( +/obj/structure/table/steel, +/obj/item/weapon/reagent_containers/glass/bucket, +/obj/random/maintenance/cargo, +/turf/simulated/floor/plating, +/area/maintenance/firstdeck/aftport) +"aMf" = ( +/turf/simulated/wall/r_wall, +/area/maintenance/firstdeck/aftport) +"aMg" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/obj/structure/cable{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/obj/machinery/door/firedoor/border_only, +/obj/machinery/door/airlock/maintenance{ + req_access = list(12) + }, +/turf/simulated/floor/plating, +/area/maintenance/firstdeck/aftport) +"aMh" = ( +/obj/machinery/floodlight, +/obj/structure/catwalk, +/turf/simulated/floor/plating, +/area/storage/emergency_storage/firstdeck/ap_emergency) +"aMi" = ( +/obj/machinery/space_heater, +/turf/simulated/floor/plating, +/area/storage/emergency_storage/firstdeck/ap_emergency) +"aMj" = ( +/obj/machinery/door/firedoor/border_only, +/obj/structure/cable, +/obj/structure/cable{ + d2 = 2; + icon_state = "0-2"; + pixel_y = 0 + }, +/obj/effect/wingrille_spawn/reinforced, +/turf/simulated/floor, +/area/storage/tech) +"aMk" = ( +/obj/structure/table/rack{ + dir = 8; + layer = 2.9 + }, +/obj/item/weapon/circuitboard/robotics{ + pixel_x = -2; + pixel_y = 2 + }, +/obj/item/weapon/circuitboard/mecha_control{ + pixel_x = 1; + pixel_y = -1 + }, +/turf/simulated/floor/tiled/dark, +/area/storage/tech) +"aMl" = ( +/obj/structure/table/rack{ + dir = 8; + layer = 2.9 + }, +/obj/item/weapon/circuitboard/crew{ + pixel_x = -1; + pixel_y = 1 + }, +/obj/item/weapon/circuitboard/card{ + pixel_x = 2; + pixel_y = -2 + }, +/obj/item/weapon/circuitboard/communications{ + pixel_x = 5; + pixel_y = -5 + }, +/obj/structure/cable{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/obj/machinery/camera/network/engineering{ + c_tag = "ENG - Secure Technical Storage"; + dir = 2 + }, +/obj/machinery/light/small{ + dir = 1 + }, +/turf/simulated/floor/tiled/dark, +/area/storage/tech) +"aMm" = ( +/obj/structure/table/rack{ + dir = 8; + layer = 2.9 + }, +/obj/item/weapon/circuitboard/borgupload{ + pixel_x = -1; + pixel_y = 1 + }, +/obj/item/weapon/circuitboard/aiupload{ + pixel_x = 2; + pixel_y = -2 + }, +/turf/simulated/floor/tiled/dark, +/area/storage/tech) +"aMn" = ( +/obj/machinery/ai_status_display{ + pixel_x = -32; + pixel_y = 0 + }, +/obj/effect/floor_decal/steeldecal/steel_decals5{ + dir = 4 + }, +/turf/simulated/floor/tiled, +/area/hallway/primary/firstdeck/aft) +"aMo" = ( +/obj/effect/floor_decal/steeldecal/steel_decals5{ + dir = 8 + }, +/turf/simulated/floor/tiled, +/area/hallway/primary/firstdeck/aft) +"aMp" = ( +/obj/machinery/status_display, +/turf/simulated/wall/r_wall, +/area/engineering/auxiliary_engineering) +"aMq" = ( +/obj/machinery/atmospherics/portables_connector{ + dir = 4 + }, +/obj/machinery/portable_atmospherics/powered/scrubber, +/obj/effect/floor_decal/rust, +/turf/simulated/floor/tiled/steel_dirty, +/area/engineering/auxiliary_engineering) +"aMr" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/red{ + dir = 10; + icon_state = "intact" + }, +/obj/machinery/alarm{ + pixel_y = 22 + }, +/obj/effect/floor_decal/rust, +/turf/simulated/floor/tiled/steel_dirty, +/area/engineering/auxiliary_engineering) +"aMs" = ( +/obj/item/device/radio/intercom{ + dir = 1; + name = "Station Intercom (General)"; + pixel_y = 21 + }, +/obj/effect/floor_decal/rust, +/turf/simulated/floor/tiled/steel_dirty, +/area/engineering/auxiliary_engineering) +"aMt" = ( +/obj/machinery/computer/security/engineering, +/obj/machinery/light{ + dir = 1 + }, +/obj/effect/floor_decal/rust, +/turf/simulated/floor/tiled/steel_dirty, +/area/engineering/auxiliary_engineering) +"aMu" = ( +/obj/machinery/space_heater, +/turf/simulated/floor/tiled/steel_dirty, +/area/engineering/auxiliary_engineering) +"aMv" = ( +/obj/machinery/portable_atmospherics/hydroponics, +/obj/machinery/atmospherics/portables_connector, +/obj/effect/landmark{ + name = "blobstart" + }, +/turf/simulated/floor/tiled/white, +/area/rnd/xenobiology/xenoflora_isolation) +"aMw" = ( +/obj/machinery/atmospherics/pipe/simple/visible/cyan{ + dir = 4; + icon_state = "intact" + }, +/obj/effect/floor_decal/rust, +/turf/simulated/floor/tiled/steel_dirty, +/area/engineering/auxiliary_engineering) +"aMx" = ( +/obj/machinery/atmospherics/binary/pump/high_power/on{ + dir = 4; + name = "Pump station in"; + target_pressure = 4500 + }, +/obj/machinery/firealarm{ + pixel_y = 24 + }, +/obj/effect/floor_decal/rust, +/turf/simulated/floor/tiled/steel_dirty, +/area/engineering/auxiliary_engineering) +"aMy" = ( +/obj/machinery/atmospherics/pipe/manifold/visible/cyan{ + dir = 1 + }, +/obj/machinery/light{ + dir = 1 + }, +/obj/effect/floor_decal/rust, +/turf/simulated/floor/tiled/steel_dirty, +/area/engineering/auxiliary_engineering) +"aMz" = ( +/obj/machinery/atmospherics/pipe/tank/air{ + dir = 8 + }, +/obj/effect/floor_decal/rust, +/turf/simulated/floor/tiled/steel_dirty, +/area/engineering/auxiliary_engineering) +"aMA" = ( +/obj/random/obstruction, +/turf/simulated/floor/plating, +/area/storage/emergency_storage/firstdeck/as_emergency) +"aMB" = ( +/obj/machinery/portable_atmospherics/canister/air, +/turf/simulated/floor/plating, +/area/storage/emergency_storage/firstdeck/as_emergency) +"aMC" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/obj/structure/cable{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/obj/machinery/door/firedoor/border_only, +/obj/machinery/door/airlock/maintenance{ + req_access = null; + req_one_access = list(12,67) + }, +/turf/simulated/floor/plating, +/area/maintenance/firstdeck/aftstarboard) +"aMD" = ( +/obj/machinery/atmospherics/unary/vent_pump/on{ + dir = 4 + }, +/obj/machinery/ai_status_display{ + pixel_x = -32; + pixel_y = 0 + }, +/obj/effect/floor_decal/borderfloor{ + dir = 8 + }, +/obj/effect/floor_decal/corner/green/border{ + dir = 8 + }, +/turf/simulated/floor/tiled, +/area/hangar/two) +"aME" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 9 + }, +/turf/simulated/floor/tiled/monotile, +/area/hangar/two) +"aMF" = ( +/obj/machinery/shuttle_sensor{ + dir = 1; + id_tag = "shuttle2sens_exp_psg" + }, +/turf/simulated/shuttle/wall/voidcraft, +/area/shuttle/shuttle2/start) +"aMG" = ( +/obj/machinery/door/airlock/glass_centcom{ + req_one_access = list(67) + }, +/turf/simulated/shuttle/floor/black, +/area/shuttle/shuttle2/start) +"aMH" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 5 + }, +/turf/simulated/floor/tiled/monotile, +/area/hangar/two) +"aMI" = ( +/obj/machinery/atmospherics/unary/vent_pump/on{ + dir = 8 + }, +/obj/machinery/status_display{ + density = 0; + layer = 4; + pixel_x = 32; + pixel_y = 0 + }, +/obj/effect/floor_decal/borderfloor{ + dir = 4 + }, +/obj/effect/floor_decal/corner/green/border{ + dir = 4 + }, +/turf/simulated/floor/tiled, +/area/hangar/two) +"aMJ" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 6 + }, +/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{ + dir = 8 + }, +/turf/simulated/floor/tiled, +/area/quartermaster/storage) +"aMK" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, +/obj/machinery/light/spot, +/obj/effect/floor_decal/borderfloor, +/obj/effect/floor_decal/corner/brown/border, +/obj/effect/floor_decal/borderfloor/corner2, +/obj/effect/floor_decal/corner/brown/bordercorner2, +/turf/simulated/floor/tiled, +/area/quartermaster/storage) +"aML" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, +/obj/effect/floor_decal/borderfloor, +/obj/effect/floor_decal/corner/brown/border, +/turf/simulated/floor/tiled, +/area/quartermaster/storage) +"aMM" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 9; + pixel_y = 0 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 9 + }, +/obj/effect/floor_decal/borderfloor, +/obj/effect/floor_decal/corner/brown/border, +/turf/simulated/floor/tiled, +/area/quartermaster/storage) +"aMN" = ( +/obj/turbolift_map_holder/southern_cross/cargo, +/turf/unsimulated/mask, +/area/quartermaster/storage) +"aMO" = ( +/obj/effect/decal/cleanable/generic, +/obj/item/weapon/material/shard{ + icon_state = "medium" + }, +/turf/simulated/floor/plating, +/area/maintenance/firstdeck/aftport) +"aMP" = ( +/obj/structure/cable{ + d1 = 1; + d2 = 2; + icon_state = "1-2"; + pixel_y = 0 + }, +/obj/machinery/door/firedoor/border_only, +/obj/machinery/door/airlock/maintenance{ + req_access = list(12) + }, +/turf/simulated/floor/plating, +/area/storage/emergency_storage/firstdeck/ap_emergency) +"aMQ" = ( +/turf/simulated/wall/r_wall, +/area/storage/tech) +"aMR" = ( +/obj/structure/sign/warning/secure_area, +/turf/simulated/wall/r_wall, +/area/storage/tech) +"aMS" = ( +/obj/machinery/atmospherics/unary/vent_pump/on{ + dir = 4 + }, +/obj/machinery/firealarm{ + dir = 1; + pixel_x = 0; + pixel_y = -24 + }, +/obj/effect/floor_decal/industrial/warning/corner, +/turf/simulated/floor/tiled/dark, +/area/storage/tech) +"aMT" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 10 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 6 + }, +/obj/structure/cable{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/obj/effect/floor_decal/industrial/warning, +/turf/simulated/floor/tiled/dark, +/area/storage/tech) +"aMU" = ( +/obj/machinery/atmospherics/unary/vent_scrubber/on{ + dir = 8 + }, +/obj/machinery/alarm{ + dir = 1; + pixel_y = -22 + }, +/obj/effect/floor_decal/industrial/warning/corner{ + dir = 8 + }, +/turf/simulated/floor/tiled/dark, +/area/storage/tech) +"aMV" = ( +/obj/structure/sign/warning/high_voltage, +/turf/simulated/wall/r_wall, +/area/storage/tech) +"aMW" = ( +/obj/effect/floor_decal/steeldecal/steel_decals4{ + dir = 5 + }, +/obj/effect/floor_decal/steeldecal/steel_decals4{ + dir = 8 + }, +/turf/simulated/floor/tiled, +/area/hallway/primary/firstdeck/aft) +"aMX" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/obj/effect/floor_decal/steeldecal/steel_decals5{ + dir = 1 + }, +/obj/effect/floor_decal/borderfloor/corner2{ + dir = 9 + }, +/obj/effect/floor_decal/corner/green/bordercorner2{ + dir = 9 + }, +/obj/effect/floor_decal/borderfloor/corner2, +/obj/effect/floor_decal/corner/green/bordercorner2, +/turf/simulated/floor/tiled, +/area/hallway/primary/firstdeck/aft) +"aMY" = ( +/obj/machinery/atmospherics/pipe/manifold/hidden/red, +/obj/effect/floor_decal/rust, +/turf/simulated/floor/tiled/steel_dirty, +/area/engineering/auxiliary_engineering) +"aMZ" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/red{ + icon_state = "intact"; + dir = 4 + }, +/obj/structure/bed/chair/office/dark{ + dir = 4 + }, +/obj/effect/floor_decal/rust, +/turf/simulated/floor/tiled/steel_dirty, +/area/engineering/auxiliary_engineering) +"aNa" = ( +/obj/machinery/door/firedoor/border_only, +/obj/machinery/atmospherics/pipe/simple/hidden/red{ + icon_state = "intact"; + dir = 4 + }, +/obj/effect/wingrille_spawn/reinforced, +/turf/simulated/floor/plating, +/area/engineering/auxiliary_engineering) +"aNb" = ( +/obj/machinery/computer/station_alert, +/obj/machinery/atmospherics/pipe/simple/hidden/red{ + icon_state = "intact"; + dir = 4 + }, +/obj/effect/floor_decal/rust, +/turf/simulated/floor/tiled/steel_dirty, +/area/engineering/auxiliary_engineering) +"aNc" = ( +/obj/machinery/atmospherics/pipe/simple/visible/red{ + icon_state = "intact"; + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/visible/cyan, +/turf/simulated/floor/tiled/steel_dirty, +/area/engineering/auxiliary_engineering) +"aNd" = ( +/obj/machinery/atmospherics/pipe/simple/visible/red{ + icon_state = "intact"; + dir = 4 + }, +/obj/machinery/space_heater, +/turf/simulated/floor/tiled/steel_dirty, +/area/engineering/auxiliary_engineering) +"aNe" = ( +/obj/machinery/atmospherics/pipe/simple/visible/red{ + icon_state = "intact"; + dir = 10 + }, +/obj/effect/floor_decal/rust, +/turf/simulated/floor/tiled/steel_dirty, +/area/engineering/auxiliary_engineering) +"aNf" = ( +/obj/machinery/atmospherics/pipe/simple/visible/red{ + icon_state = "intact"; + dir = 4 + }, +/turf/simulated/floor/tiled/steel_dirty, +/area/engineering/auxiliary_engineering) +"aNg" = ( +/obj/machinery/atmospherics/pipe/manifold/visible/cyan{ + dir = 8; + icon_state = "map" + }, +/obj/machinery/meter, +/obj/effect/floor_decal/rust, +/turf/simulated/floor/tiled/steel_dirty, +/area/engineering/auxiliary_engineering) +"aNh" = ( +/obj/structure/cable{ + d1 = 1; + d2 = 2; + icon_state = "1-2"; + pixel_y = 0 + }, +/obj/machinery/door/firedoor/border_only, +/obj/machinery/door/airlock/maintenance{ + req_access = null; + req_one_access = list(12,67) + }, +/turf/simulated/floor/plating, +/area/storage/emergency_storage/firstdeck/as_emergency) +"aNi" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/obj/structure/cable{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/obj/effect/floor_decal/industrial/warning/corner, +/turf/simulated/floor/plating, +/area/maintenance/firstdeck/aftstarboard) +"aNj" = ( +/obj/effect/floor_decal/borderfloor/corner{ + dir = 1 + }, +/obj/effect/floor_decal/corner/green/bordercorner{ + dir = 1 + }, +/turf/simulated/floor/tiled, +/area/hangar/two) +"aNk" = ( +/turf/simulated/floor/tiled/monotile, +/area/hangar/two) +"aNl" = ( +/obj/structure/table/reinforced, +/obj/machinery/light, +/obj/item/device/gps, +/obj/item/device/gps{ + pixel_x = 3; + pixel_y = 3 + }, +/turf/simulated/shuttle/floor/black, +/area/shuttle/shuttle2/start) +"aNm" = ( +/obj/structure/bed/chair/comfy/blue, +/turf/simulated/shuttle/floor/black, +/area/shuttle/shuttle2/start) +"aNn" = ( +/obj/structure/table/reinforced, +/obj/machinery/light, +/obj/item/device/radio/intercom{ + dir = 1; + name = "Station Intercom (General)"; + pixel_y = 21 + }, +/obj/structure/closet/walllocker/emerglocker{ + pixel_x = 0; + pixel_y = -32 + }, +/turf/simulated/shuttle/floor/black, +/area/shuttle/shuttle2/start) +"aNo" = ( +/obj/effect/floor_decal/borderfloor{ + dir = 8 + }, +/obj/effect/floor_decal/corner/brown/border{ + dir = 8 + }, +/turf/simulated/floor/tiled/steel, +/area/quartermaster/storage) +"aNp" = ( +/obj/effect/floor_decal/borderfloorblack/corner{ + dir = 4 + }, +/obj/effect/floor_decal/industrial/danger/corner{ + dir = 4 + }, +/turf/simulated/floor/tiled/steel, +/area/quartermaster/storage) +"aNq" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 6 + }, +/obj/effect/floor_decal/borderfloorblack{ + dir = 1 + }, +/obj/effect/floor_decal/industrial/danger{ + dir = 1 + }, +/turf/simulated/floor/tiled, +/area/quartermaster/storage) +"aNr" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/obj/effect/floor_decal/borderfloorblack{ + dir = 1 + }, +/obj/effect/floor_decal/industrial/danger{ + dir = 1 + }, +/turf/simulated/floor/tiled, +/area/quartermaster/storage) +"aNs" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 6 + }, +/obj/effect/floor_decal/borderfloorblack{ + dir = 1 + }, +/obj/effect/floor_decal/industrial/danger{ + dir = 1 + }, +/turf/simulated/floor/tiled, +/area/quartermaster/storage) +"aNt" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, +/obj/effect/floor_decal/borderfloorblack{ + dir = 1 + }, +/obj/effect/floor_decal/industrial/danger{ + dir = 1 + }, +/turf/simulated/floor/tiled, +/area/quartermaster/storage) +"aNu" = ( +/obj/machinery/atmospherics/pipe/manifold/hidden/supply{ + dir = 1 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, +/obj/effect/floor_decal/borderfloorblack{ + dir = 1 + }, +/obj/effect/floor_decal/industrial/danger{ + dir = 1 + }, +/turf/simulated/floor/tiled, +/area/quartermaster/storage) +"aNv" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, +/obj/effect/floor_decal/borderfloorblack/corner{ + dir = 1 + }, +/obj/effect/floor_decal/industrial/danger/corner{ + dir = 8 + }, +/turf/simulated/floor/tiled, +/area/quartermaster/storage) +"aNw" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 9; + pixel_y = 0 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 9 + }, +/turf/simulated/floor/tiled, +/area/quartermaster/storage) +"aNx" = ( +/obj/effect/floor_decal/industrial/warning{ + dir = 1 + }, +/turf/simulated/floor/plating, +/area/maintenance/firstdeck/aftport) +"aNy" = ( +/obj/effect/floor_decal/industrial/warning/corner{ + icon_state = "warningcorner"; + dir = 1 + }, +/obj/structure/loot_pile/maint/boxfort, +/turf/simulated/floor/plating, +/area/maintenance/firstdeck/aftport) +"aNz" = ( +/obj/random/obstruction, +/turf/simulated/floor, +/area/maintenance/firstdeck/aftport) +"aNA" = ( +/obj/structure/table/rack, +/obj/item/clothing/mask/gas, +/obj/random/maintenance/cargo, +/obj/random/maintenance/cargo, +/obj/random/maintenance/cargo, +/turf/simulated/floor/plating, +/area/maintenance/firstdeck/aftport) +"aNB" = ( +/obj/effect/decal/cleanable/generic, +/obj/structure/table/rack, +/obj/random/maintenance/cargo, +/obj/random/maintenance/cargo, +/obj/random/maintenance/cargo, +/obj/random/cash, +/turf/simulated/floor/plating, +/area/maintenance/firstdeck/aftport) +"aNC" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 5 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 5 + }, +/obj/structure/cable{ + d1 = 1; + d2 = 4; + icon_state = "1-4" + }, +/turf/simulated/floor/plating, +/area/maintenance/firstdeck/aftport) +"aND" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, +/obj/structure/cable{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/obj/machinery/alarm{ + pixel_y = 22 + }, +/turf/simulated/floor/plating, +/area/maintenance/firstdeck/aftport) +"aNE" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, +/obj/structure/cable{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/turf/simulated/floor/plating, +/area/maintenance/firstdeck/aftport) +"aNF" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, +/obj/structure/cable{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/obj/structure/cable{ + d1 = 1; + d2 = 8; + icon_state = "1-8" + }, +/turf/simulated/floor/plating, +/area/maintenance/firstdeck/aftport) +"aNG" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 10 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 10 + }, +/obj/structure/cable{ + d1 = 2; + d2 = 8; + icon_state = "2-8" + }, +/obj/structure/largecrate, +/obj/random/maintenance/cargo, +/obj/random/maintenance/cargo, +/obj/random/maintenance/cargo, +/obj/random/maintenance/cargo, +/turf/simulated/floor/plating, +/area/maintenance/firstdeck/aftport) +"aNH" = ( +/obj/structure/closet/crate/large, +/obj/random/tank, +/obj/random/tank, +/obj/random/tank, +/turf/simulated/floor/plating, +/area/maintenance/firstdeck/aftport) +"aNI" = ( +/obj/machinery/vending/assist, +/turf/simulated/floor, +/area/storage/tech) +"aNJ" = ( +/obj/item/weapon/module/power_control, +/obj/item/weapon/airlock_electronics, +/obj/structure/table/steel, +/turf/simulated/floor/plating, +/area/storage/tech) +"aNK" = ( +/obj/structure/table/rack{ + dir = 8; + layer = 2.9 + }, +/obj/item/weapon/storage/toolbox/electrical{ + pixel_x = 1; + pixel_y = -1 + }, +/obj/item/clothing/gloves/yellow, +/obj/item/device/t_scanner, +/obj/item/clothing/glasses/meson, +/obj/item/device/multitool, +/turf/simulated/floor/plating, +/area/storage/tech) +"aNL" = ( +/obj/machinery/door/firedoor/border_only, +/obj/structure/cable, +/obj/effect/wingrille_spawn/reinforced, +/turf/simulated/floor, +/area/storage/tech) +"aNM" = ( +/turf/simulated/wall, +/area/storage/tech) +"aNN" = ( +/obj/machinery/door/firedoor/border_only, +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/obj/machinery/door/airlock/highsecurity{ + name = "Secure Tech Storage"; + req_access = list(19,23) + }, +/obj/structure/cable{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/turf/simulated/floor, +/area/storage/tech) +"aNO" = ( +/obj/structure/table/rack{ + dir = 8; + layer = 2.9 + }, +/obj/item/weapon/stock_parts/manipulator, +/obj/item/weapon/stock_parts/matter_bin, +/obj/item/weapon/stock_parts/matter_bin, +/obj/item/weapon/stock_parts/capacitor, +/obj/item/weapon/stock_parts/capacitor, +/turf/simulated/floor/plating, +/area/storage/tech) +"aNP" = ( +/obj/item/device/aicard, +/obj/item/weapon/aiModule/reset, +/obj/structure/table/steel, +/turf/simulated/floor/plating, +/area/storage/tech) +"aNQ" = ( +/obj/item/device/flashlight{ + pixel_x = 1; + pixel_y = 5 + }, +/obj/item/device/flashlight{ + pixel_x = 1; + pixel_y = 5 + }, +/obj/item/device/flash, +/obj/item/device/flash, +/obj/structure/table/steel, +/turf/simulated/floor/plating, +/area/storage/tech) +"aNR" = ( +/obj/machinery/door/firedoor/border_only, +/obj/machinery/door/airlock/glass{ + name = "Central Access" + }, +/turf/simulated/floor/tiled/steel_grid, +/area/hallway/primary/firstdeck/aft) +"aNS" = ( +/obj/effect/wingrille_spawn/reinforced, +/obj/machinery/door/firedoor/glass, +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/turf/simulated/floor/plating, +/area/hallway/primary/firstdeck/aft) +"aNT" = ( +/obj/machinery/atmospherics/portables_connector{ + dir = 4 + }, +/obj/machinery/portable_atmospherics/powered/pump/filled, +/obj/machinery/firealarm{ + dir = 8; + pixel_x = -24 + }, +/obj/effect/floor_decal/rust, +/turf/simulated/floor/tiled, +/area/engineering/auxiliary_engineering) +"aNU" = ( +/obj/machinery/atmospherics/pipe/manifold/hidden/cyan{ + dir = 1 + }, +/obj/effect/floor_decal/rust, +/turf/simulated/floor/tiled/steel_dirty, +/area/engineering/auxiliary_engineering) +"aNV" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/cyan{ + dir = 4; + icon_state = "intact" + }, +/turf/simulated/floor/tiled/steel_dirty, +/area/engineering/auxiliary_engineering) +"aNW" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/cyan{ + dir = 4; + icon_state = "intact" + }, +/obj/structure/table/steel, +/obj/item/weapon/storage/briefcase/inflatable{ + pixel_x = 3; + pixel_y = 6 + }, +/obj/machinery/atmospherics/unary/vent_scrubber/on, +/turf/simulated/floor/tiled/steel_dirty, +/area/engineering/auxiliary_engineering) +"aNX" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/cyan{ + dir = 4; + icon_state = "intact" + }, +/obj/effect/wingrille_spawn/reinforced, +/obj/machinery/door/firedoor/glass, +/turf/simulated/floor/plating, +/area/engineering/auxiliary_engineering) +"aNY" = ( +/obj/machinery/atmospherics/binary/passive_gate{ + dir = 8; + target_pressure = 4500 + }, +/obj/machinery/camera/network/engineering{ + c_tag = "ENG - Auxiliary Engineering Station"; + dir = 4 + }, +/turf/simulated/floor/tiled/steel_dirty, +/area/engineering/auxiliary_engineering) +"aNZ" = ( +/obj/machinery/atmospherics/pipe/simple/visible/cyan{ + dir = 4; + icon_state = "intact" + }, +/obj/machinery/atmospherics/pipe/simple/visible/universal, +/turf/simulated/floor/tiled/steel_dirty, +/area/engineering/auxiliary_engineering) +"aOa" = ( +/obj/machinery/atmospherics/pipe/simple/visible/cyan{ + dir = 4; + icon_state = "intact" + }, +/turf/simulated/floor/tiled/steel_dirty, +/area/engineering/auxiliary_engineering) +"aOb" = ( +/obj/machinery/atmospherics/pipe/simple/visible/red, +/obj/machinery/atmospherics/pipe/simple/visible/cyan{ + dir = 4; + icon_state = "intact" + }, +/turf/simulated/floor/tiled/steel_dirty, +/area/engineering/auxiliary_engineering) +"aOc" = ( +/obj/machinery/atmospherics/pipe/manifold/visible/cyan, +/obj/effect/floor_decal/rust, +/turf/simulated/floor/tiled/steel_dirty, +/area/engineering/auxiliary_engineering) +"aOd" = ( +/obj/structure/cable{ + d1 = 2; + d2 = 4; + icon_state = "2-4" + }, +/obj/random/obstruction, +/turf/simulated/floor/plating, +/area/maintenance/firstdeck/aftstarboard) +"aOe" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 6 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 6 + }, +/obj/structure/cable{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/turf/simulated/floor/plating, +/area/maintenance/firstdeck/aftstarboard) +"aOf" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, +/obj/structure/cable{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/obj/structure/cable{ + d1 = 1; + d2 = 8; + icon_state = "1-8" + }, +/turf/simulated/floor/plating, +/area/maintenance/firstdeck/aftstarboard) +"aOg" = ( +/obj/machinery/atmospherics/pipe/manifold/hidden/supply{ + dir = 1 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, +/obj/structure/cable{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/turf/simulated/floor/plating, +/area/maintenance/firstdeck/aftstarboard) +"aOh" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, +/obj/structure/cable{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/obj/machinery/alarm{ + pixel_y = 22 + }, +/turf/simulated/floor/plating, +/area/maintenance/firstdeck/aftstarboard) +"aOi" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 9; + pixel_y = 0 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 9 + }, +/obj/structure/cable{ + d1 = 1; + d2 = 8; + icon_state = "1-8" + }, +/obj/effect/floor_decal/industrial/warning{ + dir = 4 + }, +/turf/simulated/floor/plating, +/area/maintenance/firstdeck/aftstarboard) +"aOj" = ( +/obj/machinery/door/firedoor/border_only, +/obj/machinery/door/airlock/maintenance{ + req_access = null; + req_one_access = list(12,67) + }, +/turf/simulated/floor/plating, +/area/hangar/two) +"aOk" = ( +/turf/simulated/floor/tiled, +/area/hangar/two) +"aOl" = ( +/obj/structure/flight_right{ + dir = 1 + }, +/obj/machinery/button/remote/airlock{ + desiredstate = 1; + dir = 4; + id = "expshuttle2_door_cargo"; + name = "Rear Hatch Control"; + pixel_x = -26; + pixel_y = 0; + req_access = list(67); + specialfunctions = 4 + }, +/turf/simulated/shuttle/floor/black, +/area/shuttle/shuttle2/start) +"aOm" = ( +/obj/machinery/computer/shuttle_control/web/shuttle2{ + dir = 1; + my_doors = list("expshuttle2_door_L" = "Port Cargo", "shuttle2_outer" = "Airlock Outer", "shuttle2_inner" = "Airlock Inner", "expshuttle2_door_cargo" = "Cargo Hatch"); + my_sensors = list("shuttle2sens_exp" = "Exterior Environment", "shuttle2sens_exp_int" = "Cargo Area", "shuttle2sens_exp_psg" = "Passenger Area") + }, +/turf/simulated/shuttle/floor/black, +/area/shuttle/shuttle2/start) +"aOn" = ( +/obj/structure/flight_left{ + dir = 1 + }, +/turf/simulated/shuttle/floor/black, +/area/shuttle/shuttle2/start) +"aOo" = ( +/obj/machinery/light/spot, +/obj/effect/floor_decal/borderfloor, +/obj/effect/floor_decal/corner/brown/border, +/turf/simulated/floor/tiled/steel, +/area/quartermaster/storage) +"aOp" = ( +/obj/machinery/atmospherics/unary/vent_pump/on{ + dir = 1 + }, +/obj/effect/floor_decal/borderfloor, +/obj/effect/floor_decal/corner/brown/border, +/turf/simulated/floor/tiled/steel, +/area/quartermaster/storage) +"aOq" = ( +/obj/effect/floor_decal/borderfloor, +/obj/effect/floor_decal/corner/brown/border, +/turf/simulated/floor/tiled, +/area/quartermaster/storage) +"aOr" = ( +/obj/machinery/atmospherics/unary/vent_scrubber/on{ + dir = 1 + }, +/obj/machinery/status_display/supply_display{ + pixel_y = -32 + }, +/obj/effect/floor_decal/borderfloor, +/obj/effect/floor_decal/corner/brown/border, +/turf/simulated/floor/tiled, +/area/quartermaster/storage) +"aOs" = ( +/obj/machinery/atmospherics/unary/vent_pump/on{ + dir = 1 + }, +/obj/effect/floor_decal/borderfloor, +/obj/effect/floor_decal/corner/brown/border, +/turf/simulated/floor/tiled, +/area/quartermaster/storage) +"aOt" = ( +/obj/effect/floor_decal/borderfloor, +/obj/effect/floor_decal/corner/brown/border, +/obj/effect/floor_decal/borderfloor/corner2{ + dir = 9 + }, +/obj/effect/floor_decal/corner/brown/bordercorner2{ + dir = 9 + }, +/turf/simulated/floor/tiled, +/area/quartermaster/storage) +"aOu" = ( +/obj/effect/floor_decal/steeldecal/steel_decals4, +/obj/effect/floor_decal/steeldecal/steel_decals4{ + dir = 10 + }, +/turf/simulated/floor/tiled, +/area/quartermaster/storage) +"aOv" = ( +/obj/effect/floor_decal/industrial/warning{ + icon_state = "warning"; + dir = 8 + }, +/turf/simulated/floor/plating, +/area/maintenance/firstdeck/aftport) +"aOw" = ( +/obj/machinery/alarm{ + pixel_y = 22 + }, +/turf/simulated/floor/plating, +/area/maintenance/firstdeck/aftport) +"aOx" = ( +/obj/machinery/light/small, +/turf/simulated/floor/plating, +/area/maintenance/firstdeck/aftport) +"aOy" = ( +/obj/machinery/door/firedoor/border_only, +/obj/machinery/door/airlock/maintenance{ + req_access = list(12) + }, +/turf/simulated/floor/plating, +/area/maintenance/firstdeck/aftport) +"aOz" = ( +/obj/structure/mopbucket, +/turf/simulated/floor/plating, +/area/maintenance/firstdeck/aftport) +"aOA" = ( +/turf/simulated/floor, +/area/storage/tech) +"aOB" = ( +/obj/structure/table/rack{ + dir = 8; + layer = 2.9 + }, +/obj/item/weapon/storage/toolbox/electrical{ + pixel_x = 1; + pixel_y = -1 + }, +/obj/item/device/multitool, +/obj/item/clothing/glasses/meson, +/turf/simulated/floor/plating, +/area/storage/tech) +"aOC" = ( +/obj/structure/table/rack{ + dir = 8; + layer = 2.9 + }, +/obj/item/weapon/circuitboard/rdconsole, +/obj/item/weapon/circuitboard/destructive_analyzer, +/obj/item/weapon/circuitboard/protolathe, +/obj/item/weapon/circuitboard/rdserver{ + pixel_x = 3; + pixel_y = -3 + }, +/turf/simulated/floor/plating, +/area/storage/tech) +"aOD" = ( +/obj/effect/floor_decal/industrial/warning/corner{ + dir = 4 + }, +/turf/simulated/floor, +/area/storage/tech) +"aOE" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/obj/structure/cable{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/obj/effect/floor_decal/industrial/warning{ + dir = 1 + }, +/turf/simulated/floor, +/area/storage/tech) +"aOF" = ( +/obj/effect/floor_decal/industrial/warning/corner{ + dir = 1 + }, +/obj/item/device/radio/intercom{ + dir = 1; + name = "Station Intercom (General)"; + pixel_y = 21 + }, +/turf/simulated/floor, +/area/storage/tech) +"aOG" = ( +/obj/structure/table/rack{ + dir = 8; + layer = 2.9 + }, +/obj/item/weapon/circuitboard/security/mining, +/obj/item/weapon/circuitboard/autolathe{ + pixel_x = 3; + pixel_y = -3 + }, +/turf/simulated/floor/plating, +/area/storage/tech) +"aOH" = ( +/obj/structure/table/rack{ + dir = 8; + layer = 2.9 + }, +/obj/item/weapon/stock_parts/matter_bin, +/obj/item/weapon/stock_parts/matter_bin, +/obj/item/weapon/stock_parts/manipulator, +/obj/item/weapon/stock_parts/console_screen, +/obj/item/weapon/circuitboard/autolathe, +/turf/simulated/floor, +/area/storage/tech) +"aOI" = ( +/obj/structure/table/steel, +/obj/item/device/integrated_electronics/debugger{ + pixel_x = -5; + pixel_y = 0 + }, +/obj/item/device/integrated_electronics/wirer{ + pixel_x = 5; + pixel_y = 0 + }, +/obj/machinery/requests_console{ + department = "Tech storage"; + pixel_x = 30; + pixel_y = 0 + }, +/turf/simulated/floor/plating, +/area/storage/tech) +"aOJ" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/obj/effect/floor_decal/steeldecal/steel_decals5, +/obj/effect/floor_decal/borderfloor/corner2{ + dir = 1 + }, +/obj/effect/floor_decal/borderfloor/corner2{ + dir = 4 + }, +/obj/effect/floor_decal/corner/green/bordercorner2{ + dir = 4 + }, +/obj/effect/floor_decal/corner/green/bordercorner2{ + dir = 1 + }, +/turf/simulated/floor/tiled, +/area/hallway/primary/firstdeck/aft) +"aOK" = ( +/obj/item/device/radio/intercom{ + dir = 4; + name = "Station Intercom (General)"; + pixel_x = 21 + }, +/obj/effect/floor_decal/steeldecal/steel_decals4{ + dir = 4 + }, +/obj/effect/floor_decal/steeldecal/steel_decals4{ + dir = 9 + }, +/turf/simulated/floor/tiled, +/area/hallway/primary/firstdeck/aft) +"aOL" = ( +/obj/machinery/atmospherics/portables_connector{ + dir = 4 + }, +/obj/machinery/portable_atmospherics/powered/pump/filled, +/obj/effect/floor_decal/rust, +/turf/simulated/floor/tiled, +/area/engineering/auxiliary_engineering) +"aOM" = ( +/obj/machinery/atmospherics/pipe/manifold/hidden/cyan{ + dir = 4 + }, +/turf/simulated/floor/tiled/steel_dirty, +/area/engineering/auxiliary_engineering) +"aON" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 6 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 6 + }, +/turf/simulated/floor/tiled/steel_dirty, +/area/engineering/auxiliary_engineering) +"aOO" = ( +/obj/machinery/atmospherics/pipe/manifold/hidden/supply{ + dir = 1 + }, +/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers, +/turf/simulated/floor/tiled/steel_dirty, +/area/engineering/auxiliary_engineering) +"aOP" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, +/obj/machinery/door/firedoor/glass, +/obj/machinery/door/airlock/glass_engineeringatmos{ + name = "Auxiliary Engineering Station"; + req_one_access = list(11,24) + }, +/turf/simulated/floor/tiled, +/area/engineering/auxiliary_engineering) +"aOQ" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, +/turf/simulated/floor/tiled/steel_dirty, +/area/engineering/auxiliary_engineering) +"aOR" = ( +/obj/machinery/atmospherics/pipe/simple/visible/supply{ + dir = 9 + }, +/obj/machinery/atmospherics/pipe/simple/visible/scrubbers{ + dir = 4 + }, +/obj/effect/floor_decal/industrial/warning/full, +/turf/simulated/floor/plating, +/area/engineering/auxiliary_engineering) +"aOS" = ( +/obj/machinery/atmospherics/pipe/simple/visible/universal{ + dir = 4 + }, +/turf/simulated/floor/tiled/steel_dirty, +/area/engineering/auxiliary_engineering) +"aOT" = ( +/obj/machinery/atmospherics/tvalve/mirrored/bypass{ + dir = 4 + }, +/turf/simulated/floor/tiled/steel_dirty, +/area/engineering/auxiliary_engineering) +"aOU" = ( +/obj/machinery/atmospherics/pipe/manifold/visible/red{ + icon_state = "map"; + dir = 1 + }, +/obj/machinery/meter, +/turf/simulated/floor/tiled/steel_dirty, +/area/engineering/auxiliary_engineering) +"aOV" = ( +/obj/machinery/atmospherics/portables_connector{ + dir = 8 + }, +/obj/machinery/portable_atmospherics/canister/empty, +/obj/item/device/radio/intercom{ + dir = 4; + name = "Station Intercom (General)"; + pixel_x = 21 + }, +/obj/effect/floor_decal/rust, +/turf/simulated/floor/tiled/steel_dirty, +/area/engineering/auxiliary_engineering) +"aOW" = ( +/obj/machinery/atmospherics/pipe/simple/hidden{ + dir = 6 + }, +/obj/structure/cable{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/obj/random/obstruction, +/turf/simulated/floor/plating, +/area/maintenance/firstdeck/aftstarboard) +"aOX" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/obj/machinery/atmospherics/binary/pump/on{ + dir = 8; + target_pressure = 200 + }, +/turf/simulated/floor/plating, +/area/maintenance/firstdeck/aftstarboard) +"aOY" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/universal{ + dir = 4 + }, +/obj/effect/floor_decal/industrial/warning/corner, +/turf/simulated/floor/plating, +/area/maintenance/firstdeck/aftstarboard) +"aOZ" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 9; + pixel_y = 0 + }, +/obj/effect/floor_decal/industrial/warning, +/turf/simulated/floor/plating, +/area/maintenance/firstdeck/aftstarboard) +"aPa" = ( +/obj/machinery/camera/network/research{ + c_tag = "SCI - Xenoflora Isolation Fore"; + dir = 2 + }, +/turf/simulated/floor/tiled/white, +/area/rnd/xenobiology/xenoflora_isolation) +"aPb" = ( +/obj/effect/floor_decal/industrial/warning{ + dir = 4 + }, +/turf/simulated/floor/plating, +/area/maintenance/firstdeck/aftstarboard) +"aPc" = ( +/obj/effect/floor_decal/borderfloor/corner{ + dir = 8 + }, +/obj/effect/floor_decal/corner/green/bordercorner{ + dir = 8 + }, +/turf/simulated/floor/tiled, +/area/hangar/two) +"aPd" = ( +/obj/structure/grille, +/obj/structure/window/reinforced/full, +/obj/structure/window/reinforced{ + dir = 1 + }, +/obj/structure/window/reinforced{ + dir = 8 + }, +/obj/structure/window/reinforced, +/turf/simulated/shuttle/plating, +/area/shuttle/shuttle2/start) +"aPe" = ( +/obj/structure/grille, +/obj/structure/window/reinforced/full, +/obj/structure/window/reinforced{ + dir = 1 + }, +/obj/structure/window/reinforced, +/turf/simulated/shuttle/plating, +/area/shuttle/shuttle2/start) +"aPf" = ( +/obj/structure/grille, +/obj/structure/window/reinforced/full, +/obj/structure/window/reinforced{ + dir = 1 + }, +/obj/structure/window/reinforced, +/obj/structure/window/reinforced{ + dir = 4; + health = 1e+006 + }, +/turf/simulated/shuttle/plating, +/area/shuttle/shuttle2/start) +"aPg" = ( +/obj/structure/closet/emcloset, +/turf/simulated/floor/plating, +/area/maintenance/firstdeck/aftport) +"aPh" = ( +/obj/structure/closet, +/obj/effect/decal/cleanable/dirt, +/obj/random/maintenance/engineering, +/obj/random/maintenance/cargo, +/obj/random/maintenance/engineering, +/obj/random/maintenance/cargo, +/turf/simulated/floor/plating, +/area/maintenance/firstdeck/aftport) +"aPi" = ( +/obj/machinery/portable_atmospherics/powered/pump/filled, +/turf/simulated/floor/plating, +/area/maintenance/firstdeck/aftport) +"aPj" = ( +/obj/machinery/alarm{ + dir = 4; + icon_state = "alarm0"; + pixel_x = -22 + }, +/turf/simulated/floor, +/area/storage/tech) +"aPk" = ( +/obj/machinery/atmospherics/unary/vent_scrubber/on{ + dir = 4 + }, +/turf/simulated/floor, +/area/storage/tech) +"aPl" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, +/turf/simulated/floor, +/area/storage/tech) +"aPm" = ( +/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/manifold/hidden/supply{ + dir = 8 + }, +/obj/structure/cable{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/turf/simulated/floor, +/area/storage/tech) +"aPn" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/turf/simulated/floor, +/area/storage/tech) +"aPo" = ( +/obj/machinery/atmospherics/unary/vent_pump/on{ + dir = 8 + }, +/turf/simulated/floor, +/area/storage/tech) +"aPp" = ( +/obj/structure/table/steel, +/obj/item/weapon/storage/bag/circuits/basic, +/obj/machinery/firealarm{ + dir = 4; + pixel_x = 24 + }, +/turf/simulated/floor/plating, +/area/storage/tech) +"aPq" = ( +/obj/machinery/firealarm{ + dir = 8; + pixel_x = -24 + }, +/obj/effect/floor_decal/borderfloor{ + dir = 8 + }, +/obj/effect/floor_decal/corner/green/border{ + dir = 8 + }, +/obj/effect/floor_decal/borderfloor/corner2{ + dir = 8 + }, +/obj/effect/floor_decal/corner/green/bordercorner2{ + dir = 8 + }, +/turf/simulated/floor/tiled, +/area/hallway/primary/firstdeck/aft) +"aPr" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/obj/structure/cable{ + d1 = 2; + d2 = 4; + icon_state = "2-4" + }, +/turf/simulated/floor/tiled/monotile, +/area/hallway/primary/firstdeck/aft) +"aPs" = ( +/obj/machinery/power/apc{ + dir = 4; + name = "east bump"; + pixel_x = 24 + }, +/obj/structure/cable{ + d2 = 8; + icon_state = "0-8" + }, +/obj/effect/floor_decal/borderfloor{ + dir = 4 + }, +/obj/effect/floor_decal/corner/green/border{ + dir = 4 + }, +/obj/effect/floor_decal/borderfloor/corner2{ + dir = 6 + }, +/obj/effect/floor_decal/corner/green/bordercorner2{ + dir = 6 + }, +/turf/simulated/floor/tiled, +/area/hallway/primary/firstdeck/aft) +"aPt" = ( +/obj/machinery/atmospherics/portables_connector{ + dir = 4 + }, +/obj/machinery/portable_atmospherics/powered/pump/filled, +/obj/machinery/light, +/obj/effect/floor_decal/rust, +/turf/simulated/floor/tiled, +/area/engineering/auxiliary_engineering) +"aPu" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/cyan{ + dir = 9; + icon_state = "intact" + }, +/turf/simulated/floor/tiled/steel_dirty, +/area/engineering/auxiliary_engineering) +"aPv" = ( +/obj/structure/cable{ + d1 = 2; + d2 = 4; + icon_state = "2-4" + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/turf/simulated/floor/tiled/steel_dirty, +/area/engineering/auxiliary_engineering) +"aPw" = ( +/obj/structure/table/steel, +/obj/structure/cable{ + d1 = 4; + d2 = 8; + icon_state = "4-8"; + pixel_x = 0 + }, +/obj/random/tech_supply, +/obj/random/tech_supply, +/obj/random/maintenance/engineering, +/obj/random/maintenance/engineering, +/obj/machinery/atmospherics/unary/vent_pump/on{ + dir = 1 + }, +/turf/simulated/floor/tiled/steel_dirty, +/area/engineering/auxiliary_engineering) +"aPx" = ( +/obj/machinery/door/firedoor/border_only, +/obj/structure/cable{ + d1 = 4; + d2 = 8; + icon_state = "4-8"; + pixel_x = 0 + }, +/obj/effect/wingrille_spawn/reinforced, +/turf/simulated/floor/plating, +/area/engineering/auxiliary_engineering) +"aPy" = ( +/obj/structure/cable{ + d1 = 4; + d2 = 8; + icon_state = "4-8"; + pixel_x = 0 + }, +/obj/structure/cable{ + d1 = 2; + d2 = 8; + icon_state = "2-8" + }, +/obj/effect/floor_decal/industrial/warning, +/turf/simulated/floor/tiled/steel_dirty, +/area/engineering/auxiliary_engineering) +"aPz" = ( +/obj/structure/cable{ + d1 = 4; + d2 = 8; + icon_state = "4-8"; + pixel_x = 0 + }, +/obj/effect/floor_decal/industrial/warning, +/turf/simulated/floor/tiled/steel_dirty, +/area/engineering/auxiliary_engineering) +"aPA" = ( +/obj/structure/cable{ + d2 = 8; + icon_state = "0-8" + }, +/obj/machinery/power/terminal, +/obj/effect/floor_decal/industrial/warning, +/turf/simulated/floor/tiled/steel_dirty, +/area/engineering/auxiliary_engineering) +"aPB" = ( +/obj/effect/floor_decal/industrial/warning, +/turf/simulated/floor/tiled/steel_dirty, +/area/engineering/auxiliary_engineering) +"aPC" = ( +/obj/machinery/atmospherics/pipe/simple/visible/red{ + icon_state = "intact"; + dir = 5 + }, +/obj/effect/floor_decal/industrial/warning/corner{ + dir = 8 + }, +/turf/simulated/floor/tiled/steel_dirty, +/area/engineering/auxiliary_engineering) +"aPD" = ( +/obj/machinery/atmospherics/portables_connector{ + dir = 8 + }, +/obj/machinery/portable_atmospherics/canister/empty, +/obj/effect/floor_decal/rust, +/turf/simulated/floor/tiled/steel_dirty, +/area/engineering/auxiliary_engineering) +"aPE" = ( +/obj/machinery/atmospherics/pipe/manifold/hidden{ + dir = 8; + icon_state = "map" + }, +/obj/structure/cable{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/obj/machinery/portable_atmospherics/powered/scrubber, +/turf/simulated/floor/plating, +/area/maintenance/firstdeck/aftstarboard) +"aPF" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/obj/machinery/atmospherics/pipe/simple/hidden{ + dir = 4 + }, +/obj/effect/floor_decal/industrial/warning/corner, +/turf/simulated/floor/plating, +/area/maintenance/firstdeck/aftstarboard) +"aPG" = ( +/obj/machinery/atmospherics/pipe/manifold/hidden{ + dir = 1; + icon_state = "map" + }, +/obj/effect/floor_decal/industrial/warning{ + dir = 6 + }, +/turf/simulated/floor/plating, +/area/maintenance/firstdeck/aftstarboard) +"aPH" = ( +/obj/machinery/atmospherics/portables_connector{ + dir = 8 + }, +/obj/effect/floor_decal/industrial/outline/yellow, +/obj/machinery/portable_atmospherics/canister/air/airlock, +/turf/simulated/floor/plating, +/area/maintenance/firstdeck/aftstarboard) +"aPI" = ( +/turf/simulated/wall/r_wall, +/area/maintenance/firstdeck/aftstarboard) +"aPJ" = ( +/obj/effect/floor_decal/borderfloorblack/corner{ + dir = 4 + }, +/obj/effect/floor_decal/industrial/danger/corner{ + dir = 4 + }, +/turf/simulated/floor/tiled, +/area/hangar/two) +"aPK" = ( +/obj/effect/floor_decal/borderfloorblack{ + dir = 1 + }, +/obj/effect/floor_decal/industrial/danger{ + dir = 1 + }, +/turf/simulated/floor/tiled, +/area/hangar/two) +"aPL" = ( +/obj/effect/floor_decal/borderfloorblack/corner{ + dir = 1 + }, +/obj/effect/floor_decal/industrial/danger/corner{ + dir = 8 + }, +/turf/simulated/floor/tiled, +/area/hangar/two) +"aPM" = ( +/obj/effect/floor_decal/steeldecal/steel_decals5{ + dir = 1 + }, +/turf/simulated/floor/tiled, +/area/hangar/two) +"aPN" = ( +/obj/structure/table/steel, +/obj/machinery/cell_charger{ + pixel_y = 5 + }, +/obj/item/device/multitool, +/obj/item/weapon/cell/high{ + charge = 100; + maxcharge = 15000 + }, +/obj/item/stack/cable_coil, +/obj/item/stack/cable_coil, +/turf/simulated/floor, +/area/storage/tech) +"aPO" = ( +/obj/structure/table/rack{ + dir = 8; + layer = 2.9 + }, +/obj/item/weapon/circuitboard/secure_data{ + pixel_x = -2; + pixel_y = 2 + }, +/obj/item/weapon/circuitboard/security{ + pixel_x = 1; + pixel_y = -1 + }, +/obj/item/weapon/circuitboard/skills{ + pixel_x = 4; + pixel_y = -3 + }, +/turf/simulated/floor/plating, +/area/storage/tech) +"aPP" = ( +/obj/structure/table/rack{ + dir = 8; + layer = 2.9 + }, +/obj/item/weapon/circuitboard/unary_atmos/heater, +/obj/item/weapon/circuitboard/unary_atmos/cooler{ + pixel_x = 3; + pixel_y = -3 + }, +/obj/machinery/light/small, +/turf/simulated/floor/plating, +/area/storage/tech) +"aPQ" = ( +/obj/structure/table/rack{ + dir = 8; + layer = 2.9 + }, +/obj/item/weapon/circuitboard/powermonitor{ + pixel_x = -2; + pixel_y = 2 + }, +/obj/item/weapon/circuitboard/stationalert_engineering{ + pixel_x = 1; + pixel_y = -1 + }, +/obj/item/weapon/circuitboard/security/engineering, +/obj/item/weapon/circuitboard/atmos_alert{ + pixel_x = 3; + pixel_y = -3 + }, +/turf/simulated/floor/plating, +/area/storage/tech) +"aPR" = ( +/obj/machinery/power/apc{ + dir = 2; + name = "south bump"; + pixel_y = -24 + }, +/obj/machinery/light_switch{ + pixel_x = 12; + pixel_y = -24 + }, +/obj/structure/cable{ + icon_state = "0-4"; + d2 = 4 + }, +/obj/effect/floor_decal/industrial/warning/corner, +/turf/simulated/floor, +/area/storage/tech) +"aPS" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/obj/structure/cable{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/obj/structure/cable{ + d1 = 2; + d2 = 8; + icon_state = "2-8" + }, +/obj/effect/floor_decal/industrial/warning, +/turf/simulated/floor, +/area/storage/tech) +"aPT" = ( +/obj/structure/extinguisher_cabinet{ + pixel_y = -30 + }, +/obj/machinery/camera/network/engineering{ + c_tag = "ENG - Technical Storage"; + dir = 1 + }, +/obj/effect/floor_decal/industrial/warning/corner{ + dir = 8 + }, +/turf/simulated/floor, +/area/storage/tech) +"aPU" = ( +/obj/structure/table/rack{ + dir = 8; + layer = 2.9 + }, +/obj/item/weapon/circuitboard/cloning{ + pixel_x = 0 + }, +/obj/item/weapon/circuitboard/clonescanner, +/obj/item/weapon/circuitboard/clonepod, +/obj/item/weapon/circuitboard/scan_consolenew, +/obj/item/weapon/circuitboard/med_data{ + pixel_x = 3; + pixel_y = -3 + }, +/turf/simulated/floor/plating, +/area/storage/tech) +"aPV" = ( +/obj/structure/table/rack{ + dir = 8; + layer = 2.9 + }, +/obj/item/weapon/circuitboard/message_monitor{ + pixel_x = 3; + pixel_y = -3 + }, +/obj/machinery/light/small, +/turf/simulated/floor/plating, +/area/storage/tech) +"aPW" = ( +/obj/structure/table/rack{ + dir = 8; + layer = 2.9 + }, +/obj/item/device/analyzer/plant_analyzer, +/obj/item/device/healthanalyzer, +/obj/item/device/analyzer, +/obj/item/device/analyzer, +/turf/simulated/floor/plating, +/area/storage/tech) +"aPX" = ( +/obj/machinery/newscaster, +/turf/simulated/wall/r_wall, +/area/storage/tech) +"aPY" = ( +/obj/machinery/light{ + icon_state = "tube1"; + dir = 8 + }, +/obj/effect/floor_decal/borderfloor{ + dir = 8 + }, +/obj/effect/floor_decal/corner/green/border{ + dir = 8 + }, +/turf/simulated/floor/tiled, +/area/hallway/primary/firstdeck/aft) +"aPZ" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/obj/structure/cable{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/turf/simulated/floor/tiled/monotile, +/area/hallway/primary/firstdeck/aft) +"aQa" = ( +/obj/structure/cable{ + icon_state = "0-4"; + d2 = 4 + }, +/obj/machinery/power/apc{ + dir = 8; + name = "west bump"; + pixel_x = -24 + }, +/obj/machinery/light_switch{ + pixel_x = -36 + }, +/obj/structure/extinguisher_cabinet{ + pixel_y = -30 + }, +/obj/effect/floor_decal/industrial/warning/corner, +/turf/simulated/floor/tiled/steel_dirty, +/area/engineering/auxiliary_engineering) +"aQb" = ( +/obj/structure/cable{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/obj/structure/cable{ + d1 = 2; + d2 = 8; + icon_state = "2-8" + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/obj/effect/floor_decal/industrial/warning, +/turf/simulated/floor/tiled/steel_dirty, +/area/engineering/auxiliary_engineering) +"aQc" = ( +/obj/structure/table/steel, +/obj/machinery/cell_charger, +/obj/effect/floor_decal/industrial/warning/corner{ + icon_state = "warningcorner"; + dir = 8 + }, +/turf/simulated/floor/tiled/steel_dirty, +/area/engineering/auxiliary_engineering) +"aQd" = ( +/obj/machinery/power/breakerbox{ + RCon_tag = "Auxiliary Bypass" + }, +/turf/simulated/floor/plating, +/area/engineering/auxiliary_engineering) +"aQe" = ( +/obj/structure/table/steel, +/obj/item/stack/material/glass{ + amount = 50 + }, +/obj/item/stack/material/steel{ + amount = 50; + pixel_x = -2; + pixel_y = -2 + }, +/obj/structure/cable/yellow{ + d2 = 4; + icon_state = "0-4" + }, +/obj/structure/cable/yellow{ + d2 = 8; + icon_state = "0-8" + }, +/obj/machinery/power/sensor{ + name = "Powernet Sensor - Auxiliary Subgrid"; + name_tag = "Auxiliary Subgrid" + }, +/obj/machinery/light, +/turf/simulated/floor/tiled/techmaint, +/area/engineering/auxiliary_engineering) +"aQf" = ( +/obj/structure/cable/yellow{ + d2 = 8; + icon_state = "0-8" + }, +/obj/machinery/power/smes/buildable{ + charge = 1e+007; + cur_coils = 4; + input_attempt = 0; + input_level = 500000; + output_level = 500000; + RCon_tag = "Auxiliary - Main" + }, +/turf/simulated/floor/plating, +/area/engineering/auxiliary_engineering) +"aQg" = ( +/obj/item/stack/cable_coil/yellow, +/obj/item/weapon/storage/toolbox/electrical, +/turf/simulated/floor/plating, +/area/engineering/auxiliary_engineering) +"aQh" = ( +/obj/effect/floor_decal/industrial/warning{ + dir = 8 + }, +/obj/machinery/alarm{ + dir = 1; + pixel_y = -22 + }, +/turf/simulated/floor/tiled/steel_dirty, +/area/engineering/auxiliary_engineering) +"aQi" = ( +/obj/structure/closet/firecloset, +/turf/simulated/floor/tiled/steel_dirty, +/area/engineering/auxiliary_engineering) +"aQj" = ( +/obj/machinery/atmospherics/pipe/simple/hidden, +/obj/structure/cable{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/obj/machinery/space_heater, +/turf/simulated/floor/plating, +/area/maintenance/firstdeck/aftstarboard) +"aQk" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/obj/effect/floor_decal/industrial/warning{ + icon_state = "warning"; + dir = 4 + }, +/turf/simulated/floor/plating, +/area/maintenance/firstdeck/aftstarboard) +"aQl" = ( +/obj/machinery/atmospherics/portables_connector{ + dir = 1 + }, +/obj/effect/floor_decal/industrial/outline/yellow, +/obj/machinery/portable_atmospherics/canister/air/airlock, +/turf/simulated/floor/plating, +/area/maintenance/firstdeck/aftstarboard) +"aQm" = ( +/obj/machinery/light/small{ + dir = 4 + }, +/obj/structure/catwalk, +/turf/simulated/floor, +/area/maintenance/firstdeck/aftport) +"aQn" = ( +/obj/machinery/ai_status_display, +/turf/simulated/wall, +/area/storage/tech) +"aQo" = ( +/obj/machinery/door/firedoor/border_only, +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/obj/machinery/door/airlock/engineering{ + name = "Tech Storage"; + req_access = list(23) + }, +/obj/structure/cable{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/turf/simulated/floor, +/area/storage/tech) +"aQp" = ( +/obj/machinery/status_display, +/turf/simulated/wall, +/area/storage/tech) +"aQq" = ( +/obj/effect/floor_decal/borderfloor{ + dir = 9 + }, +/obj/effect/floor_decal/corner/green/border{ + dir = 9 + }, +/obj/effect/floor_decal/borderfloor/corner2{ + dir = 10 + }, +/obj/effect/floor_decal/corner/green/bordercorner2{ + dir = 10 + }, +/turf/simulated/floor/tiled, +/area/hallway/primary/firstdeck/aft) +"aQr" = ( +/obj/effect/floor_decal/borderfloor/corner{ + dir = 1 + }, +/obj/effect/floor_decal/corner/green/bordercorner{ + dir = 1 + }, +/turf/simulated/floor/tiled, +/area/hallway/primary/firstdeck/aft) +"aQs" = ( +/obj/effect/floor_decal/borderfloor/corner{ + dir = 4 + }, +/obj/effect/floor_decal/corner/green/bordercorner{ + dir = 4 + }, +/turf/simulated/floor/tiled, +/area/hallway/primary/firstdeck/aft) +"aQt" = ( +/obj/effect/floor_decal/borderfloor{ + dir = 5 + }, +/obj/effect/floor_decal/corner/green/border{ + dir = 5 + }, +/obj/effect/floor_decal/borderfloor/corner2{ + dir = 5 + }, +/obj/effect/floor_decal/corner/green/bordercorner2{ + dir = 5 + }, +/turf/simulated/floor/tiled, +/area/hallway/primary/firstdeck/aft) +"aQu" = ( +/turf/simulated/wall, +/area/engineering/auxiliary_engineering) +"aQv" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/structure/cable{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/obj/machinery/door/firedoor/border_only, +/obj/machinery/door/airlock/engineering{ + name = "Auxiliary Engineering Station"; + req_one_access = list(11,24) + }, +/turf/simulated/floor/tiled/steel_grid, +/area/engineering/auxiliary_engineering) +"aQw" = ( +/obj/machinery/ai_status_display, +/turf/simulated/wall, +/area/engineering/auxiliary_engineering) +"aQx" = ( +/obj/machinery/atmospherics/pipe/simple/hidden, +/obj/structure/cable{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/obj/machinery/light/small{ + dir = 8 + }, +/obj/structure/catwalk, +/turf/simulated/floor/plating, +/area/maintenance/firstdeck/aftstarboard) +"aQy" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/obj/effect/floor_decal/industrial/warning/corner{ + icon_state = "warningcorner"; + dir = 4 + }, +/turf/simulated/floor/plating, +/area/maintenance/firstdeck/aftstarboard) +"aQz" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 5 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 5 + }, +/obj/structure/cable{ + d1 = 1; + d2 = 4; + icon_state = "1-4" + }, +/obj/structure/catwalk, +/turf/simulated/floor/plating, +/area/maintenance/firstdeck/aftport) +"aQA" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, +/obj/structure/cable{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/obj/structure/catwalk, +/turf/simulated/floor/plating, +/area/maintenance/firstdeck/aftport) +"aQB" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, +/obj/machinery/door/firedoor/border_only, +/obj/structure/cable{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/obj/machinery/door/airlock/maintenance{ + req_access = list(12) + }, +/turf/simulated/floor/plating, +/area/maintenance/firstdeck/aftport) +"aQC" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 10 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/obj/structure/cable{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/obj/effect/floor_decal/steeldecal/steel_decals4{ + dir = 1 + }, +/obj/effect/floor_decal/steeldecal/steel_decals4{ + dir = 6 + }, +/turf/simulated/floor/tiled, +/area/hallway/primary/firstdeck/aft) +"aQD" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/obj/structure/cable{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/obj/effect/floor_decal/steeldecal/steel_decals5, +/turf/simulated/floor/tiled, +/area/hallway/primary/firstdeck/aft) +"aQE" = ( +/obj/machinery/atmospherics/pipe/manifold/hidden/supply{ + dir = 1 + }, +/obj/structure/cable{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/obj/machinery/alarm{ + pixel_y = 22 + }, +/obj/effect/floor_decal/steeldecal/steel_decals5, +/turf/simulated/floor/tiled, +/area/hallway/primary/firstdeck/aft) +"aQF" = ( +/obj/machinery/atmospherics/pipe/manifold/hidden/supply{ + dir = 1 + }, +/obj/structure/cable{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/obj/structure/cable{ + d1 = 2; + d2 = 8; + icon_state = "2-8" + }, +/obj/effect/floor_decal/industrial/warning/corner{ + dir = 4 + }, +/obj/effect/floor_decal/steeldecal/steel_decals5, +/turf/simulated/floor/tiled, +/area/hallway/primary/firstdeck/aft) +"aQG" = ( +/obj/machinery/atmospherics/pipe/manifold/hidden/supply, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/obj/structure/cable{ + d1 = 1; + d2 = 8; + icon_state = "1-8" + }, +/obj/structure/cable{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/obj/effect/floor_decal/industrial/warning{ + dir = 1 + }, +/obj/effect/floor_decal/steeldecal/steel_decals5, +/turf/simulated/floor/tiled, +/area/hallway/primary/firstdeck/aft) +"aQH" = ( +/obj/machinery/atmospherics/unary/vent_scrubber/on, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/obj/structure/cable{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/obj/effect/floor_decal/industrial/warning/corner{ + dir = 1 + }, +/obj/machinery/light{ + dir = 1 + }, +/obj/effect/floor_decal/steeldecal/steel_decals5, +/turf/simulated/floor/tiled, +/area/hallway/primary/firstdeck/aft) +"aQI" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/obj/structure/cable{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/obj/structure/cable{ + d1 = 2; + d2 = 8; + icon_state = "2-8" + }, +/obj/effect/floor_decal/steeldecal/steel_decals5, +/turf/simulated/floor/tiled, +/area/hallway/primary/firstdeck/aft) +"aQJ" = ( +/obj/machinery/door/firedoor/border_only, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/obj/structure/cable{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/obj/effect/floor_decal/steeldecal/steel_decals5, +/turf/simulated/floor/tiled, +/area/hallway/primary/firstdeck/aft) +"aQK" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/obj/structure/cable{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/turf/simulated/floor/tiled, +/area/hallway/primary/firstdeck/aft) +"aQL" = ( +/obj/machinery/atmospherics/pipe/manifold/hidden/supply{ + dir = 1 + }, +/obj/structure/cable{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/turf/simulated/floor/tiled, +/area/hallway/primary/firstdeck/aft) +"aQM" = ( +/obj/machinery/atmospherics/pipe/manifold4w/hidden/supply, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/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" + }, +/turf/simulated/floor/tiled/monotile, +/area/hallway/primary/firstdeck/aft) +"aQN" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/obj/structure/cable{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/obj/machinery/atmospherics/unary/vent_scrubber/on, +/turf/simulated/floor/tiled, +/area/hallway/primary/firstdeck/aft) +"aQO" = ( +/obj/machinery/door/firedoor/border_only, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/obj/structure/cable{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/turf/simulated/floor/tiled, +/area/hallway/primary/firstdeck/aft) +"aQP" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/obj/structure/cable{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/obj/effect/floor_decal/industrial/warning/corner{ + dir = 4 + }, +/turf/simulated/floor/tiled, +/area/hallway/primary/firstdeck/aft) +"aQQ" = ( +/obj/machinery/atmospherics/pipe/manifold/hidden/supply, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/obj/structure/cable{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/obj/structure/cable{ + d1 = 1; + d2 = 8; + icon_state = "1-8" + }, +/obj/effect/floor_decal/industrial/warning{ + dir = 1 + }, +/turf/simulated/floor/tiled, +/area/hallway/primary/firstdeck/aft) +"aQR" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/obj/structure/cable{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/obj/effect/floor_decal/industrial/warning/corner{ + icon_state = "warningcorner"; + dir = 1 + }, +/turf/simulated/floor/tiled, +/area/hallway/primary/firstdeck/aft) +"aQS" = ( +/obj/machinery/atmospherics/unary/vent_scrubber/on, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/obj/structure/cable{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/obj/machinery/light{ + dir = 1 + }, +/turf/simulated/floor/tiled, +/area/hallway/primary/firstdeck/aft) +"aQT" = ( +/obj/machinery/atmospherics/pipe/simple/hidden{ + dir = 6 + }, +/obj/machinery/atmospherics/pipe/manifold/hidden/supply{ + dir = 1 + }, +/obj/structure/cable{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/obj/structure/cable{ + d1 = 2; + d2 = 8; + icon_state = "2-8" + }, +/turf/simulated/floor/tiled, +/area/hallway/primary/firstdeck/aft) +"aQU" = ( +/obj/machinery/atmospherics/pipe/simple/hidden{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/manifold/hidden/supply{ + dir = 1 + }, +/obj/structure/cable{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/obj/machinery/alarm{ + pixel_y = 22 + }, +/turf/simulated/floor/tiled, +/area/hallway/primary/firstdeck/aft) +"aQV" = ( +/obj/machinery/atmospherics/pipe/simple/hidden{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/obj/structure/cable{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/turf/simulated/floor/tiled, +/area/hallway/primary/firstdeck/aft) +"aQW" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 6 + }, +/obj/structure/cable{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/obj/effect/floor_decal/steeldecal/steel_decals4{ + dir = 10 + }, +/obj/effect/floor_decal/steeldecal/steel_decals4, +/turf/simulated/floor/tiled, +/area/hallway/primary/firstdeck/aft) +"aQX" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, +/obj/machinery/door/firedoor/border_only, +/obj/structure/cable{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/obj/machinery/door/airlock/maintenance{ + req_access = null; + req_one_access = list(12,67) + }, +/turf/simulated/floor/plating, +/area/maintenance/firstdeck/aftstarboard) +"aQY" = ( +/obj/machinery/atmospherics/pipe/simple/hidden{ + dir = 9; + icon_state = "intact" + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, +/obj/structure/cable{ + d1 = 1; + d2 = 8; + icon_state = "1-8" + }, +/obj/structure/catwalk, +/turf/simulated/floor/plating, +/area/maintenance/firstdeck/aftstarboard) +"aQZ" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 9; + pixel_y = 0 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 9 + }, +/obj/structure/catwalk, +/turf/simulated/floor/plating, +/area/maintenance/firstdeck/aftstarboard) +"aRa" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 5 + }, +/obj/structure/closet/emcloset, +/turf/simulated/floor/tiled, +/area/hallway/primary/firstdeck/aft) +"aRb" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, +/obj/effect/floor_decal/steeldecal/steel_decals5{ + dir = 1 + }, +/turf/simulated/floor/tiled, +/area/hallway/primary/firstdeck/aft) +"aRc" = ( +/obj/machinery/atmospherics/unary/vent_pump/on{ + dir = 1 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, +/obj/machinery/camera/network/first_deck{ + c_tag = "First Deck - Aft Hallway Two"; + dir = 1 + }, +/obj/effect/floor_decal/steeldecal/steel_decals5{ + dir = 1 + }, +/turf/simulated/floor/tiled, +/area/hallway/primary/firstdeck/aft) +"aRd" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, +/obj/structure/cable{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/obj/effect/floor_decal/steeldecal/steel_decals5{ + dir = 1 + }, +/obj/effect/floor_decal/steeldecal/steel_decals4{ + dir = 5 + }, +/obj/effect/floor_decal/steeldecal/steel_decals4{ + dir = 8 + }, +/turf/simulated/floor/tiled, +/area/hallway/primary/firstdeck/aft) +"aRe" = ( +/obj/machinery/atmospherics/pipe/manifold4w/hidden/scrubbers, +/obj/effect/floor_decal/steeldecal/steel_decals5{ + dir = 1 + }, +/obj/effect/floor_decal/steeldecal/steel_decals4{ + dir = 5 + }, +/obj/effect/floor_decal/steeldecal/steel_decals4{ + dir = 8 + }, +/turf/simulated/floor/tiled, +/area/hallway/primary/firstdeck/aft) +"aRf" = ( +/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers, +/obj/machinery/firealarm{ + dir = 1; + pixel_y = -24 + }, +/obj/effect/floor_decal/steeldecal/steel_decals5{ + dir = 1 + }, +/turf/simulated/floor/tiled, +/area/hallway/primary/firstdeck/aft) +"aRg" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, +/obj/item/device/radio/intercom{ + name = "Station Intercom (General)"; + pixel_y = -21 + }, +/obj/effect/floor_decal/steeldecal/steel_decals5{ + dir = 1 + }, +/turf/simulated/floor/tiled, +/area/hallway/primary/firstdeck/aft) +"aRh" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, +/obj/structure/cable{ + d1 = 1; + d2 = 2; + icon_state = "1-2"; + pixel_y = 0 + }, +/obj/effect/floor_decal/steeldecal/steel_decals5{ + dir = 1 + }, +/obj/effect/floor_decal/steeldecal/steel_decals4{ + dir = 8 + }, +/obj/effect/floor_decal/steeldecal/steel_decals4{ + dir = 5 + }, +/turf/simulated/floor/tiled, +/area/hallway/primary/firstdeck/aft) +"aRi" = ( +/obj/machinery/door/firedoor/border_only, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, +/obj/effect/floor_decal/steeldecal/steel_decals5{ + dir = 1 + }, +/turf/simulated/floor/tiled, +/area/hallway/primary/firstdeck/aft) +"aRj" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, +/turf/simulated/floor/tiled, +/area/hallway/primary/firstdeck/aft) +"aRk" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, +/obj/machinery/atmospherics/unary/vent_pump/on{ + dir = 1 + }, +/turf/simulated/floor/tiled, +/area/hallway/primary/firstdeck/aft) +"aRl" = ( +/obj/machinery/atmospherics/pipe/manifold4w/hidden/scrubbers, +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/machinery/hologram/holopad, +/obj/effect/floor_decal/industrial/outline/grey, +/obj/structure/cable{ + d1 = 1; + d2 = 2; + icon_state = "1-2"; + pixel_y = 0 + }, +/turf/simulated/floor/tiled/monotile, +/area/hallway/primary/firstdeck/aft) +"aRm" = ( +/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers, +/turf/simulated/floor/tiled, +/area/hallway/primary/firstdeck/aft) +"aRn" = ( +/obj/machinery/door/firedoor/border_only, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, +/turf/simulated/floor/tiled, +/area/hallway/primary/firstdeck/aft) +"aRo" = ( +/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers, +/obj/machinery/status_display{ + density = 0; + layer = 4; + pixel_x = 0; + pixel_y = -32 + }, +/turf/simulated/floor/tiled, +/area/hallway/primary/firstdeck/aft) +"aRp" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, +/obj/item/device/radio/intercom{ + name = "Station Intercom (General)"; + pixel_y = -21 + }, +/turf/simulated/floor/tiled, +/area/hallway/primary/firstdeck/aft) +"aRq" = ( +/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers, +/obj/machinery/firealarm{ + dir = 1; + pixel_y = -24 + }, +/turf/simulated/floor/tiled, +/area/hallway/primary/firstdeck/aft) +"aRr" = ( +/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{ + dir = 1 + }, +/obj/effect/floor_decal/steeldecal/steel_decals4{ + dir = 5 + }, +/obj/effect/floor_decal/steeldecal/steel_decals4{ + dir = 8 + }, +/turf/simulated/floor/tiled, +/area/hallway/primary/firstdeck/aft) +"aRs" = ( +/obj/machinery/atmospherics/pipe/simple/hidden, +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, +/obj/structure/cable{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/obj/effect/floor_decal/steeldecal/steel_decals4{ + dir = 5 + }, +/obj/effect/floor_decal/steeldecal/steel_decals4{ + dir = 8 + }, +/turf/simulated/floor/tiled, +/area/hallway/primary/firstdeck/aft) +"aRt" = ( +/obj/machinery/atmospherics/unary/vent_pump/on{ + dir = 1 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, +/obj/machinery/camera/network/first_deck{ + c_tag = "First Deck - Aft Hallway Three"; + dir = 1 + }, +/turf/simulated/floor/tiled, +/area/hallway/primary/firstdeck/aft) +"aRu" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 9 + }, +/obj/structure/closet/emcloset, +/turf/simulated/floor/tiled, +/area/hallway/primary/firstdeck/aft) +"aRv" = ( +/obj/structure/sign/warning/pods{ + dir = 1 + }, +/turf/simulated/wall/r_wall, +/area/hallway/secondary/escape/firstdeck/ep_aftport) +"aRw" = ( +/obj/machinery/door/firedoor/border_only, +/obj/machinery/door/airlock/glass{ + name = "Escape Pod" + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/structure/cable{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/turf/simulated/floor/tiled/steel_grid, +/area/hallway/secondary/escape/firstdeck/ep_aftport) +"aRx" = ( +/obj/machinery/door/firedoor/border_only, +/obj/machinery/door/airlock/glass{ + name = "Escape Pod" + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/turf/simulated/floor/tiled/steel_grid, +/area/hallway/secondary/escape/firstdeck/ep_aftport) +"aRy" = ( +/turf/simulated/wall/r_wall, +/area/hallway/secondary/escape/firstdeck/ep_aftport) +"aRz" = ( +/turf/simulated/wall, +/area/storage/emergency_storage/firstdeck/aft_emergency) +"aRA" = ( +/obj/machinery/door/firedoor/border_only, +/obj/machinery/door/airlock{ + name = "Emergency Storage" + }, +/obj/structure/cable{ + d1 = 1; + d2 = 2; + icon_state = "1-2"; + pixel_y = 0 + }, +/turf/simulated/floor/plating, +/area/storage/emergency_storage/firstdeck/aft_emergency) +"aRB" = ( +/obj/effect/floor_decal/borderfloor{ + dir = 10 + }, +/obj/effect/floor_decal/corner/green/border{ + dir = 10 + }, +/obj/effect/floor_decal/borderfloor/corner2{ + dir = 8 + }, +/obj/effect/floor_decal/corner/green/bordercorner2{ + dir = 8 + }, +/obj/structure/extinguisher_cabinet{ + pixel_x = -27 + }, +/turf/simulated/floor/tiled, +/area/hallway/primary/firstdeck/aft) +"aRC" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/obj/structure/cable{ + d1 = 1; + d2 = 2; + icon_state = "1-2"; + pixel_y = 0 + }, +/turf/simulated/floor/tiled/monotile, +/area/hallway/primary/firstdeck/aft) +"aRD" = ( +/turf/simulated/wall, +/area/security/checkpoint3) +"aRE" = ( +/turf/simulated/wall/r_wall, +/area/hallway/secondary/escape/firstdeck/ep_aftstarboard) +"aRF" = ( +/obj/machinery/door/firedoor/border_only, +/obj/machinery/door/airlock/glass{ + name = "Escape Pod" + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/turf/simulated/floor/tiled/steel_grid, +/area/hallway/secondary/escape/firstdeck/ep_aftstarboard) +"aRG" = ( +/obj/machinery/atmospherics/pipe/simple/hidden, +/obj/machinery/door/firedoor/border_only, +/obj/machinery/door/airlock/glass{ + name = "Escape Pod" + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/structure/cable{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/turf/simulated/floor/tiled/steel_grid, +/area/hallway/secondary/escape/firstdeck/ep_aftstarboard) +"aRH" = ( +/obj/structure/sign/warning/pods{ + dir = 1 + }, +/turf/simulated/wall/r_wall, +/area/hallway/secondary/escape/firstdeck/ep_aftstarboard) +"aRI" = ( +/turf/simulated/floor/airless, +/area/hallway/secondary/escape/firstdeck/ep_aftport) +"aRJ" = ( +/turf/simulated/shuttle/wall, +/area/shuttle/escape_pod3/station) +"aRK" = ( +/turf/simulated/shuttle/wall/no_join{ + base_state = "orange"; + icon = 'icons/turf/shuttle_orange.dmi'; + icon_state = "orange" + }, +/area/shuttle/escape_pod3/station) +"aRL" = ( +/obj/structure/shuttle/engine/propulsion/burst{ + dir = 4 + }, +/turf/simulated/shuttle/wall, +/turf/simulated/shuttle/plating/airless/carry, +/area/shuttle/escape_pod3/station) +"aRM" = ( +/turf/simulated/wall, +/area/hallway/secondary/escape/firstdeck/ep_aftport) +"aRN" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/machinery/atmospherics/unary/vent_scrubber/on{ + dir = 4 + }, +/obj/structure/cable{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/obj/effect/floor_decal/industrial/warning/corner{ + icon_state = "warningcorner"; + dir = 8 + }, +/obj/effect/floor_decal/steeldecal/steel_decals4{ + dir = 9 + }, +/obj/effect/floor_decal/steeldecal/steel_decals4{ + dir = 4 + }, +/turf/simulated/floor/tiled, +/area/hallway/secondary/escape/firstdeck/ep_aftport) +"aRO" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 9 + }, +/obj/effect/floor_decal/steeldecal/steel_decals4{ + dir = 9 + }, +/obj/effect/floor_decal/steeldecal/steel_decals4{ + dir = 4 + }, +/turf/simulated/floor/tiled, +/area/hallway/secondary/escape/firstdeck/ep_aftport) +"aRP" = ( +/obj/structure/closet/hydrant{ + pixel_x = -32 + }, +/obj/item/clothing/glasses/meson, +/obj/machinery/alarm{ + pixel_y = 22 + }, +/turf/simulated/floor/plating, +/area/storage/emergency_storage/firstdeck/aft_emergency) +"aRQ" = ( +/obj/structure/cable{ + d1 = 1; + d2 = 2; + icon_state = "1-2"; + pixel_y = 0 + }, +/turf/simulated/floor/plating, +/area/storage/emergency_storage/firstdeck/aft_emergency) +"aRR" = ( +/obj/machinery/portable_atmospherics/powered/pump/filled, +/obj/machinery/light/small{ + dir = 4 + }, +/turf/simulated/floor/plating, +/area/storage/emergency_storage/firstdeck/aft_emergency) +"aRS" = ( +/turf/simulated/wall, +/area/hallway/primary/firstdeck/aft) +"aRT" = ( +/obj/effect/floor_decal/borderfloor{ + dir = 8 + }, +/obj/effect/floor_decal/corner/green/border{ + dir = 8 + }, +/obj/structure/closet/secure_closet/medical_wall{ + name = "defibrillator closet"; + pixel_x = -31; + pixel_y = 0 + }, +/obj/item/device/defib_kit/loaded, +/turf/simulated/floor/tiled, +/area/hallway/primary/firstdeck/aft) +"aRU" = ( +/obj/machinery/camera/network/first_deck{ + c_tag = "First Deck - Aft Hallway Four"; + dir = 8 + }, +/obj/effect/floor_decal/borderfloor{ + dir = 4 + }, +/obj/effect/floor_decal/corner/green/border{ + dir = 4 + }, +/obj/structure/closet/medical_wall{ + pixel_x = 31; + pixel_y = 0 + }, +/obj/item/roller, +/obj/item/bodybag/cryobag, +/obj/item/weapon/storage/firstaid/regular, +/obj/item/weapon/storage/pill_bottle/spaceacillin, +/turf/simulated/floor/tiled, +/area/hallway/primary/firstdeck/aft) +"aRV" = ( +/obj/effect/floor_decal/industrial/hatch/yellow, +/turf/simulated/floor/tiled/monotile, +/area/security/checkpoint3) +"aRW" = ( +/obj/machinery/deployable/barrier, +/obj/effect/floor_decal/industrial/hatch/yellow, +/turf/simulated/floor/tiled/monotile, +/area/security/checkpoint3) +"aRX" = ( +/turf/simulated/floor/tiled/white, +/area/rnd/xenobiology/xenoflora_isolation) +"aRY" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 5 + }, +/obj/effect/floor_decal/steeldecal/steel_decals4{ + dir = 9 + }, +/obj/effect/floor_decal/steeldecal/steel_decals4{ + dir = 4 + }, +/turf/simulated/floor/tiled, +/area/hallway/secondary/escape/firstdeck/ep_aftstarboard) +"aRZ" = ( +/obj/machinery/atmospherics/pipe/simple/hidden, +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/machinery/atmospherics/unary/vent_scrubber/on{ + dir = 8 + }, +/obj/structure/cable{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/obj/effect/floor_decal/industrial/warning/corner, +/obj/effect/floor_decal/steeldecal/steel_decals4{ + dir = 9 + }, +/obj/effect/floor_decal/steeldecal/steel_decals4{ + dir = 4 + }, +/turf/simulated/floor/tiled, +/area/hallway/secondary/escape/firstdeck/ep_aftstarboard) +"aSa" = ( +/turf/simulated/wall, +/area/hallway/secondary/escape/firstdeck/ep_aftstarboard) +"aSb" = ( +/obj/structure/shuttle/engine/propulsion/burst{ + dir = 8 + }, +/turf/simulated/shuttle/wall, +/turf/simulated/shuttle/plating/airless/carry, +/area/shuttle/escape_pod5/station) +"aSc" = ( +/turf/simulated/shuttle/wall, +/area/shuttle/escape_pod5/station) +"aSd" = ( +/turf/simulated/shuttle/wall/no_join{ + base_state = "orange"; + icon = 'icons/turf/shuttle_orange.dmi'; + icon_state = "orange" + }, +/area/shuttle/escape_pod5/station) +"aSe" = ( +/turf/simulated/floor/airless, +/area/hallway/secondary/escape/firstdeck/ep_aftstarboard) +"aSf" = ( +/turf/space, +/area/skipjack_station/firstdeck) +"aSg" = ( +/obj/structure/grille, +/obj/structure/window/reinforced/full, +/obj/structure/window/reinforced{ + dir = 1 + }, +/obj/structure/window/reinforced{ + dir = 8 + }, +/obj/structure/window/reinforced, +/obj/structure/window/reinforced{ + dir = 4; + health = 1e+006 + }, +/turf/simulated/shuttle/plating, +/area/shuttle/escape_pod3/station) +"aSh" = ( +/obj/structure/cable/green{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/obj/machinery/door/window/brigdoor/southleft{ + name = "Containment Pen"; + req_access = newlist() + }, +/obj/effect/floor_decal/industrial/warning, +/turf/simulated/floor/tiled/techmaint, +/area/rnd/xenobiology) +"aSi" = ( +/obj/structure/bed/chair{ + dir = 8 + }, +/obj/item/device/radio/intercom{ + dir = 1; + name = "Station Intercom (General)"; + pixel_y = 21 + }, +/obj/structure/closet/walllocker/emerglocker{ + pixel_y = -32 + }, +/turf/simulated/shuttle/floor, +/area/shuttle/escape_pod3/station) +"aSj" = ( +/obj/structure/bed/chair{ + dir = 8 + }, +/obj/machinery/vending/wallmed1{ + name = "NanoMed Wall"; + pixel_x = 0; + pixel_y = -30 + }, +/turf/simulated/shuttle/floor, +/area/shuttle/escape_pod3/station) +"aSk" = ( +/obj/machinery/door/airlock/external{ + frequency = 1380; + icon_state = "door_locked"; + id_tag = "escape_pod_3_hatch"; + locked = 1; + name = "Escape Pod Hatch 3"; + req_access = list(13) + }, +/turf/simulated/shuttle/floor, +/area/shuttle/escape_pod3/station) +"aSl" = ( +/obj/machinery/door/airlock/glass_external{ + frequency = 1380; + icon_state = "door_locked"; + id_tag = "escape_pod_3_berth_hatch"; + locked = 1; + name = "Escape Pod 3"; + req_access = list(13) + }, +/turf/simulated/floor, +/area/hallway/secondary/escape/firstdeck/ep_aftport) +"aSm" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/structure/cable{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/obj/effect/floor_decal/industrial/warning{ + icon_state = "warning"; + dir = 8 + }, +/obj/machinery/embedded_controller/radio/simple_docking_controller/escape_pod_berth{ + frequency = 1380; + id_tag = "escape_pod_3_berth"; + pixel_x = -25; + pixel_y = 30; + tag_door = "escape_pod_3_berth_hatch" + }, +/turf/simulated/floor/tiled, +/area/hallway/secondary/escape/firstdeck/ep_aftport) +"aSn" = ( +/obj/machinery/ai_status_display{ + pixel_x = 32; + pixel_y = 0 + }, +/obj/effect/floor_decal/borderfloor{ + dir = 4 + }, +/obj/effect/floor_decal/corner/white/border{ + dir = 4 + }, +/obj/effect/floor_decal/borderfloor/corner2{ + dir = 6 + }, +/obj/effect/floor_decal/corner/white/bordercorner2{ + dir = 6 + }, +/turf/simulated/floor/tiled, +/area/hallway/secondary/escape/firstdeck/ep_aftport) +"aSo" = ( +/obj/structure/table/standard, +/obj/item/device/t_scanner, +/obj/item/weapon/storage/box/lights/mixed, +/obj/item/weapon/storage/box/lights/mixed, +/turf/simulated/floor/plating, +/area/storage/emergency_storage/firstdeck/aft_emergency) +"aSp" = ( +/obj/machinery/power/apc{ + dir = 2; + name = "south bump"; + pixel_y = -24 + }, +/obj/structure/cable, +/turf/simulated/floor/plating, +/area/storage/emergency_storage/firstdeck/aft_emergency) +"aSq" = ( +/obj/machinery/floodlight, +/turf/simulated/floor/plating, +/area/storage/emergency_storage/firstdeck/aft_emergency) +"aSr" = ( +/obj/random/obstruction, +/turf/simulated/floor/plating, +/area/storage/emergency_storage/firstdeck/aft_emergency) +"aSs" = ( +/obj/machinery/alarm{ + dir = 4; + icon_state = "alarm0"; + pixel_x = -22 + }, +/obj/effect/floor_decal/borderfloor{ + dir = 8 + }, +/obj/machinery/atmospherics/unary/vent_scrubber/on{ + dir = 4 + }, +/obj/effect/floor_decal/corner/green/border{ + dir = 8 + }, +/turf/simulated/floor/tiled, +/area/hallway/primary/firstdeck/aft) +"aSt" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/structure/cable{ + d1 = 1; + d2 = 2; + icon_state = "1-2"; + pixel_y = 0 + }, +/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{ + dir = 4 + }, +/turf/simulated/floor/tiled/monotile, +/area/hallway/primary/firstdeck/aft) +"aSu" = ( +/obj/effect/floor_decal/industrial/hatch/yellow, +/obj/structure/cable{ + d2 = 2; + icon_state = "0-2"; + pixel_y = 0 + }, +/obj/machinery/power/apc{ + dir = 8; + name = "west bump"; + pixel_x = -24 + }, +/obj/machinery/light_switch{ + pixel_x = -36 + }, +/turf/simulated/floor/tiled/monotile, +/area/security/checkpoint3) +"aSv" = ( +/obj/machinery/deployable/barrier, +/obj/effect/floor_decal/industrial/hatch/yellow, +/obj/machinery/atmospherics/unary/vent_pump/on{ + dir = 1 + }, +/turf/simulated/floor/tiled/monotile, +/area/security/checkpoint3) +"aSw" = ( +/obj/machinery/ai_status_display, +/turf/simulated/wall/r_wall, +/area/hallway/secondary/escape/firstdeck/ep_aftstarboard) +"aSx" = ( +/obj/effect/floor_decal/borderfloor{ + dir = 8 + }, +/obj/effect/floor_decal/corner/white/border{ + dir = 8 + }, +/obj/effect/floor_decal/borderfloor/corner2{ + dir = 8 + }, +/obj/effect/floor_decal/corner/white/bordercorner2{ + dir = 8 + }, +/turf/simulated/floor/tiled, +/area/hallway/secondary/escape/firstdeck/ep_aftstarboard) +"aSy" = ( +/obj/machinery/atmospherics/pipe/simple/hidden, +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/structure/cable{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/obj/effect/floor_decal/industrial/warning{ + dir = 4 + }, +/obj/machinery/embedded_controller/radio/simple_docking_controller/escape_pod_berth{ + frequency = 1380; + id_tag = "escape_pod_5_berth"; + pixel_x = 25; + pixel_y = 30; + tag_door = "escape_pod_5_berth_hatch" + }, +/turf/simulated/floor/tiled, +/area/hallway/secondary/escape/firstdeck/ep_aftstarboard) +"aSz" = ( +/obj/structure/sign/directions/bridge{ + dir = 4; + pixel_y = 10 + }, +/obj/structure/sign/directions/science{ + dir = 1 + }, +/turf/simulated/wall, +/area/construction/firstdeck/construction4) +"aSA" = ( +/obj/machinery/door/airlock/external{ + frequency = 1380; + icon_state = "door_locked"; + id_tag = "escape_pod_5_hatch"; + locked = 1; + name = "Escape Pod Hatch 5"; + req_access = list(13) + }, +/turf/simulated/shuttle/floor, +/area/shuttle/escape_pod5/station) +"aSB" = ( +/obj/structure/bed/chair{ + dir = 4 + }, +/obj/machinery/vending/wallmed1{ + name = "NanoMed Wall"; + pixel_x = 0; + pixel_y = 30 + }, +/turf/simulated/shuttle/floor, +/area/shuttle/escape_pod5/station) +"aSC" = ( +/obj/structure/bed/chair{ + dir = 4 + }, +/obj/item/device/radio/intercom{ + name = "Station Intercom (General)"; + pixel_y = -21 + }, +/obj/structure/closet/walllocker/emerglocker{ + pixel_y = 32 + }, +/turf/simulated/shuttle/floor, +/area/shuttle/escape_pod5/station) +"aSD" = ( +/obj/structure/bed/chair{ + dir = 4 + }, +/obj/machinery/light{ + icon_state = "tube1"; + dir = 4 + }, +/obj/machinery/status_display{ + density = 0; + layer = 4; + pixel_x = 0; + pixel_y = -32 + }, +/obj/machinery/embedded_controller/radio/simple_docking_controller/escape_pod{ + frequency = 1380; + id_tag = "escape_pod_5"; + pixel_x = 0; + pixel_y = 25; + tag_door = "escape_pod_5_hatch" + }, +/turf/simulated/shuttle/floor, +/area/shuttle/escape_pod5/station) +"aSE" = ( +/obj/structure/grille, +/obj/structure/window/reinforced/full, +/obj/structure/window/reinforced{ + dir = 1 + }, +/obj/structure/window/reinforced{ + dir = 8 + }, +/obj/structure/window/reinforced, +/obj/structure/window/reinforced{ + dir = 4; + health = 1e+006 + }, +/turf/simulated/shuttle/plating, +/area/shuttle/escape_pod5/station) +"aSF" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/structure/cable{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/obj/effect/floor_decal/industrial/warning/corner{ + icon_state = "warningcorner"; + dir = 1 + }, +/obj/structure/extinguisher_cabinet{ + pixel_x = -27 + }, +/turf/simulated/floor/tiled, +/area/hallway/secondary/escape/firstdeck/ep_aftport) +"aSG" = ( +/obj/machinery/alarm{ + dir = 8; + icon_state = "alarm0"; + pixel_x = 22 + }, +/obj/effect/floor_decal/borderfloor{ + dir = 4 + }, +/obj/effect/floor_decal/corner/red/border{ + dir = 4 + }, +/turf/simulated/floor/tiled, +/area/hallway/secondary/escape/firstdeck/ep_aftport) +"aSH" = ( +/obj/machinery/light{ + icon_state = "tube1"; + dir = 8 + }, +/obj/effect/floor_decal/borderfloor/corner{ + dir = 1 + }, +/obj/effect/floor_decal/corner/green/bordercorner{ + dir = 1 + }, +/turf/simulated/floor/tiled, +/area/hallway/primary/firstdeck/aft) +"aSI" = ( +/obj/machinery/atmospherics/pipe/manifold/hidden/supply{ + dir = 8 + }, +/obj/structure/cable{ + d1 = 1; + d2 = 2; + icon_state = "1-2"; + pixel_y = 0 + }, +/obj/structure/cable{ + d1 = 1; + d2 = 4; + icon_state = "1-4" + }, +/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{ + dir = 8 + }, +/turf/simulated/floor/tiled/monotile, +/area/hallway/primary/firstdeck/aft) +"aSJ" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, +/obj/structure/cable{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/obj/effect/floor_decal/borderfloor/corner{ + dir = 4 + }, +/obj/effect/floor_decal/corner/green/bordercorner{ + dir = 4 + }, +/turf/simulated/floor/tiled, +/area/hallway/primary/firstdeck/aft) +"aSK" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, +/obj/structure/cable{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/turf/simulated/floor/tiled/dark, +/area/hallway/primary/firstdeck/aft) +"aSL" = ( +/obj/machinery/door/firedoor/border_only, +/obj/machinery/door/airlock/security{ + name = "Security Checkpoint"; + req_access = list(1) + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, +/obj/structure/cable{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/turf/simulated/floor/tiled/steel_grid, +/area/security/checkpoint3) +"aSM" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, +/obj/structure/cable{ + d1 = 1; + d2 = 8; + icon_state = "1-8" + }, +/turf/simulated/floor/tiled, +/area/security/checkpoint3) +"aSN" = ( +/turf/simulated/wall, +/area/rnd/research/firstdeck/hallway) +"aSO" = ( +/obj/machinery/atmospherics/unary/vent_scrubber/on{ + dir = 8 + }, +/obj/machinery/camera/network/security{ + c_tag = "SEC - Auxiliary Checkpoint"; + dir = 8 + }, +/obj/effect/floor_decal/borderfloor{ + dir = 4 + }, +/obj/effect/floor_decal/corner/red/border{ + dir = 4 + }, +/obj/effect/floor_decal/borderfloor/corner2{ + dir = 6 + }, +/obj/effect/floor_decal/corner/red/bordercorner2{ + dir = 6 + }, +/turf/simulated/floor/tiled, +/area/security/checkpoint3) +"aSP" = ( +/obj/machinery/alarm{ + dir = 4; + icon_state = "alarm0"; + pixel_x = -22 + }, +/obj/effect/floor_decal/borderfloor{ + dir = 8 + }, +/obj/effect/floor_decal/corner/red/border{ + dir = 8 + }, +/turf/simulated/floor/tiled, +/area/hallway/secondary/escape/firstdeck/ep_aftstarboard) +"aSQ" = ( +/obj/machinery/atmospherics/pipe/simple/hidden, +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/structure/cable{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/obj/effect/floor_decal/industrial/warning/corner{ + dir = 4 + }, +/obj/structure/extinguisher_cabinet{ + pixel_x = 25 + }, +/turf/simulated/floor/tiled, +/area/hallway/secondary/escape/firstdeck/ep_aftstarboard) +"aSR" = ( +/obj/structure/sign/warning/caution, +/turf/simulated/wall/r_wall, +/area/hallway/secondary/escape/firstdeck/ep_aftport) +"aSS" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 5 + }, +/obj/machinery/power/apc{ + dir = 8; + name = "west bump"; + pixel_x = -24 + }, +/obj/structure/cable, +/turf/simulated/floor/tiled, +/area/hallway/secondary/escape/firstdeck/ep_aftport) +"aST" = ( +/obj/machinery/atmospherics/unary/vent_pump/on{ + dir = 8 + }, +/obj/item/device/radio/intercom{ + dir = 4; + name = "Station Intercom (General)"; + pixel_x = 21 + }, +/obj/effect/floor_decal/borderfloor{ + dir = 4 + }, +/obj/effect/floor_decal/corner/white/border{ + dir = 4 + }, +/turf/simulated/floor/tiled, +/area/hallway/secondary/escape/firstdeck/ep_aftport) +"aSU" = ( +/obj/structure/flora/pottedplant/stoutbush, +/obj/structure/extinguisher_cabinet{ + pixel_x = -27 + }, +/turf/simulated/floor/tiled/dark, +/area/hallway/primary/firstdeck/aft) +"aSV" = ( +/obj/machinery/atmospherics/unary/vent_pump/on{ + dir = 4 + }, +/obj/structure/table/glass, +/obj/machinery/light{ + dir = 1 + }, +/turf/simulated/floor/tiled/dark, +/area/hallway/primary/firstdeck/aft) +"aSW" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/obj/machinery/alarm{ + frequency = 1441; + pixel_y = 22 + }, +/obj/structure/flora/pottedplant/stoutbush, +/turf/simulated/floor/tiled/dark, +/area/hallway/primary/firstdeck/aft) +"aSX" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/obj/structure/closet/emcloset, +/obj/item/device/radio/intercom{ + dir = 1; + name = "Station Intercom (General)"; + pixel_y = 21 + }, +/turf/simulated/floor/tiled/dark, +/area/hallway/primary/firstdeck/aft) +"aSY" = ( +/obj/effect/wingrille_spawn/reinforced, +/obj/machinery/door/firedoor/glass, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/turf/simulated/floor/plating, +/area/hallway/primary/firstdeck/aft) +"aSZ" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/turf/simulated/floor/tiled, +/area/hallway/primary/firstdeck/aft) +"aTa" = ( +/obj/machinery/atmospherics/pipe/manifold/hidden/supply{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/obj/structure/cable{ + d1 = 1; + d2 = 2; + icon_state = "1-2"; + pixel_y = 0 + }, +/turf/simulated/floor/tiled/monotile, +/area/hallway/primary/firstdeck/aft) +"aTb" = ( +/turf/simulated/floor/tiled, +/area/hallway/primary/firstdeck/aft) +"aTc" = ( +/obj/effect/floor_decal/industrial/outline/yellow, +/turf/simulated/floor/tiled, +/area/hallway/primary/firstdeck/aft) +"aTd" = ( +/obj/machinery/door/firedoor/border_only, +/obj/effect/wingrille_spawn/reinforced, +/turf/simulated/floor/plating, +/area/security/checkpoint3) +"aTe" = ( +/obj/structure/table/reinforced, +/obj/item/weapon/paper_bin{ + pixel_x = 1; + pixel_y = 9 + }, +/obj/item/weapon/tool/crowbar, +/obj/item/weapon/pen, +/obj/item/device/flash, +/obj/machinery/light{ + icon_state = "tube1"; + dir = 8 + }, +/obj/effect/floor_decal/borderfloor{ + dir = 8 + }, +/obj/effect/floor_decal/corner/red/border{ + dir = 8 + }, +/obj/effect/floor_decal/borderfloor/corner2{ + dir = 8 + }, +/obj/effect/floor_decal/corner/red/bordercorner2{ + dir = 8 + }, +/turf/simulated/floor/tiled, +/area/security/checkpoint3) +"aTf" = ( +/obj/machinery/atmospherics/unary/vent_pump/on{ + dir = 1 + }, +/turf/simulated/floor/tiled/monotile, +/area/security/checkpoint3) +"aTg" = ( +/obj/machinery/computer/secure_data, +/obj/machinery/alarm{ + dir = 8; + icon_state = "alarm0"; + pixel_x = 22 + }, +/obj/effect/floor_decal/borderfloor{ + dir = 4 + }, +/obj/effect/floor_decal/corner/red/border{ + dir = 4 + }, +/turf/simulated/floor/tiled, +/area/security/checkpoint3) +"aTh" = ( +/obj/machinery/atmospherics/unary/vent_pump/on{ + dir = 4 + }, +/obj/item/device/radio/intercom{ + dir = 8; + name = "Station Intercom (General)"; + pixel_x = -21 + }, +/obj/effect/floor_decal/borderfloor{ + dir = 8 + }, +/obj/effect/floor_decal/corner/white/border{ + dir = 8 + }, +/turf/simulated/floor/tiled, +/area/hallway/secondary/escape/firstdeck/ep_aftstarboard) +"aTi" = ( +/obj/machinery/atmospherics/pipe/simple/hidden, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 9; + pixel_y = 0 + }, +/obj/machinery/power/apc{ + dir = 4; + name = "east bump"; + pixel_x = 24 + }, +/obj/structure/cable, +/turf/simulated/floor/tiled, +/area/hallway/secondary/escape/firstdeck/ep_aftstarboard) +"aTj" = ( +/obj/structure/sign/warning/caution, +/turf/simulated/wall/r_wall, +/area/hallway/secondary/escape/firstdeck/ep_aftstarboard) +"aTk" = ( +/turf/space, +/area/ninja_dojo/arrivals_dock) +"aTl" = ( +/turf/simulated/shuttle/wall, +/area/shuttle/escape_pod4/station) +"aTm" = ( +/turf/simulated/shuttle/wall/no_join{ + base_state = "orange"; + icon = 'icons/turf/shuttle_orange.dmi'; + icon_state = "orange" + }, +/area/shuttle/escape_pod4/station) +"aTn" = ( +/obj/structure/shuttle/engine/propulsion/burst{ + dir = 4 + }, +/turf/simulated/shuttle/wall, +/turf/simulated/shuttle/plating/airless/carry, +/area/shuttle/escape_pod4/station) +"aTo" = ( +/obj/effect/floor_decal/industrial/warning/corner{ + icon_state = "warningcorner"; + dir = 8 + }, +/obj/machinery/hologram/holopad, +/obj/machinery/light{ + icon_state = "tube1"; + dir = 8 + }, +/turf/simulated/floor/tiled, +/area/hallway/secondary/escape/firstdeck/ep_aftport) +"aTp" = ( +/obj/machinery/camera/network/first_deck{ + c_tag = "First Deck - Aft Port Escape Pods"; + dir = 8 + }, +/obj/effect/floor_decal/borderfloor{ + dir = 4 + }, +/obj/effect/floor_decal/corner/red/border{ + dir = 4 + }, +/turf/simulated/floor/tiled, +/area/hallway/secondary/escape/firstdeck/ep_aftport) +"aTq" = ( +/obj/machinery/status_display, +/turf/simulated/wall/r_wall, +/area/hallway/secondary/escape/firstdeck/ep_aftport) +"aTr" = ( +/obj/machinery/camera/network/first_deck{ + c_tag = "First Deck - Aft Hallway Stairs"; + dir = 4 + }, +/turf/simulated/floor/tiled, +/area/hallway/primary/firstdeck/aft) +"aTs" = ( +/obj/machinery/door/firedoor/border_only, +/turf/simulated/floor/tiled, +/area/hallway/primary/firstdeck/aft) +"aTt" = ( +/obj/machinery/atmospherics/pipe/manifold/hidden/supply{ + dir = 8 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/obj/structure/cable{ + d1 = 1; + d2 = 2; + icon_state = "1-2"; + pixel_y = 0 + }, +/turf/simulated/floor/tiled/monotile, +/area/hallway/primary/firstdeck/aft) +"aTu" = ( +/obj/machinery/atmospherics/unary/vent_pump/on{ + dir = 8 + }, +/turf/simulated/floor/tiled, +/area/hallway/primary/firstdeck/aft) +"aTv" = ( +/obj/effect/floor_decal/industrial/hatch/yellow, +/turf/simulated/floor/tiled/monotile, +/area/hallway/primary/firstdeck/aft) +"aTw" = ( +/obj/structure/table/reinforced, +/obj/machinery/door/firedoor/glass, +/obj/machinery/door/window/brigdoor/eastright{ + name = "Security Checkpoint" + }, +/turf/simulated/floor/tiled, +/area/security/checkpoint3) +"aTx" = ( +/obj/structure/bed/chair/office/dark{ + dir = 8 + }, +/obj/effect/floor_decal/borderfloor{ + dir = 8 + }, +/obj/effect/floor_decal/corner/red/border{ + dir = 8 + }, +/turf/simulated/floor/tiled, +/area/security/checkpoint3) +"aTy" = ( +/obj/machinery/hologram/holopad, +/obj/effect/floor_decal/industrial/outline/grey, +/turf/simulated/floor/tiled/monotile, +/area/security/checkpoint3) +"aTz" = ( +/obj/machinery/computer/card, +/obj/effect/floor_decal/borderfloor{ + dir = 4 + }, +/obj/effect/floor_decal/corner/red/border{ + dir = 4 + }, +/turf/simulated/floor/tiled, +/area/security/checkpoint3) +"aTA" = ( +/obj/machinery/status_display, +/turf/simulated/wall/r_wall, +/area/hallway/secondary/escape/firstdeck/ep_aftstarboard) +"aTB" = ( +/obj/machinery/camera/network/first_deck{ + c_tag = "First Deck - Aft Starboard Escape Pods"; + dir = 4 + }, +/obj/effect/floor_decal/borderfloor{ + dir = 8 + }, +/obj/effect/floor_decal/corner/red/border{ + dir = 8 + }, +/turf/simulated/floor/tiled, +/area/hallway/secondary/escape/firstdeck/ep_aftstarboard) +"aTC" = ( +/obj/machinery/atmospherics/pipe/simple/hidden, +/obj/effect/floor_decal/industrial/warning/corner, +/obj/machinery/hologram/holopad, +/obj/machinery/light{ + icon_state = "tube1"; + dir = 4 + }, +/turf/simulated/floor/tiled, +/area/hallway/secondary/escape/firstdeck/ep_aftstarboard) +"aTD" = ( +/obj/structure/shuttle/engine/propulsion/burst{ + dir = 8 + }, +/turf/simulated/shuttle/wall, +/turf/simulated/shuttle/plating/airless/carry, +/area/shuttle/escape_pod6/station) +"aTE" = ( +/turf/simulated/shuttle/wall, +/area/shuttle/escape_pod6/station) +"aTF" = ( +/turf/simulated/shuttle/wall/no_join{ + base_state = "orange"; + icon = 'icons/turf/shuttle_orange.dmi'; + icon_state = "orange" + }, +/area/shuttle/escape_pod6/station) +"aTG" = ( +/obj/structure/grille, +/obj/structure/window/reinforced/full, +/obj/structure/window/reinforced{ + dir = 1 + }, +/obj/structure/window/reinforced{ + dir = 8 + }, +/obj/structure/window/reinforced, +/obj/structure/window/reinforced{ + dir = 4; + health = 1e+006 + }, +/turf/simulated/shuttle/plating, +/area/shuttle/escape_pod4/station) +"aTH" = ( +/obj/structure/bed/chair{ + dir = 8 + }, +/obj/machinery/light{ + icon_state = "tube1"; + dir = 8 + }, +/obj/machinery/status_display{ + density = 0; + layer = 4; + pixel_x = 0; + pixel_y = 32 + }, +/obj/machinery/embedded_controller/radio/simple_docking_controller/escape_pod{ + frequency = 1380; + id_tag = "escape_pod_4"; + pixel_x = 0; + pixel_y = -25; + tag_door = "escape_pod_4_hatch" + }, +/turf/simulated/shuttle/floor, +/area/shuttle/escape_pod4/station) +"aTI" = ( +/obj/structure/bed/chair{ + dir = 8 + }, +/obj/item/device/radio/intercom{ + dir = 1; + name = "Station Intercom (General)"; + pixel_y = 21 + }, +/obj/structure/closet/walllocker/emerglocker{ + pixel_y = -32 + }, +/turf/simulated/shuttle/floor, +/area/shuttle/escape_pod4/station) +"aTJ" = ( +/obj/structure/bed/chair{ + dir = 8 + }, +/obj/machinery/vending/wallmed1{ + name = "NanoMed Wall"; + pixel_x = 0; + pixel_y = -30 + }, +/turf/simulated/shuttle/floor, +/area/shuttle/escape_pod4/station) +"aTK" = ( +/obj/machinery/door/airlock/external{ + frequency = 1380; + icon_state = "door_locked"; + id_tag = "escape_pod_4_hatch"; + locked = 1; + name = "Escape Pod Hatch 4"; + req_access = list(13) + }, +/turf/simulated/shuttle/floor, +/area/shuttle/escape_pod4/station) +"aTL" = ( +/obj/machinery/door/airlock/glass_external{ + frequency = 1380; + icon_state = "door_locked"; + id_tag = "escape_pod_4_berth_hatch"; + locked = 1; + name = "Escape Pod 4"; + req_access = list(13) + }, +/turf/simulated/floor, +/area/hallway/secondary/escape/firstdeck/ep_aftport) +"aTM" = ( +/obj/effect/floor_decal/industrial/warning{ + icon_state = "warning"; + dir = 8 + }, +/obj/machinery/embedded_controller/radio/simple_docking_controller/escape_pod_berth{ + frequency = 1380; + id_tag = "escape_pod_4_berth"; + pixel_x = -25; + pixel_y = 30; + tag_door = "escape_pod_4_berth_hatch" + }, +/turf/simulated/floor/tiled, +/area/hallway/secondary/escape/firstdeck/ep_aftport) +"aTN" = ( +/obj/machinery/firealarm{ + dir = 4; + pixel_x = 24 + }, +/obj/effect/floor_decal/borderfloor{ + dir = 4 + }, +/obj/effect/floor_decal/corner/white/border{ + dir = 4 + }, +/turf/simulated/floor/tiled, +/area/hallway/secondary/escape/firstdeck/ep_aftport) +"aTO" = ( +/obj/machinery/firealarm{ + dir = 8; + pixel_x = -24 + }, +/obj/effect/floor_decal/industrial/warning/corner, +/turf/simulated/floor/tiled, +/area/hallway/primary/firstdeck/aft) +"aTP" = ( +/obj/machinery/atmospherics/unary/vent_scrubber/on{ + dir = 4 + }, +/obj/effect/floor_decal/industrial/warning, +/turf/simulated/floor/tiled, +/area/hallway/primary/firstdeck/aft) +"aTQ" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, +/obj/effect/floor_decal/industrial/warning, +/turf/simulated/floor/tiled, +/area/hallway/primary/firstdeck/aft) +"aTR" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, +/obj/effect/floor_decal/industrial/warning/corner{ + icon_state = "warningcorner"; + dir = 8 + }, +/obj/machinery/atm{ + pixel_y = -30 + }, +/turf/simulated/floor/tiled, +/area/hallway/primary/firstdeck/aft) +"aTS" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, +/obj/effect/floor_decal/steeldecal/steel_decals4{ + dir = 8 + }, +/obj/effect/floor_decal/steeldecal/steel_decals4{ + dir = 5 + }, +/turf/simulated/floor/tiled, +/area/hallway/primary/firstdeck/aft) +"aTT" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{ + dir = 4 + }, +/obj/structure/cable{ + d1 = 1; + d2 = 2; + icon_state = "1-2"; + pixel_y = 0 + }, +/obj/effect/floor_decal/steeldecal/steel_decals5{ + dir = 1 + }, +/obj/effect/floor_decal/borderfloor/corner2{ + dir = 9 + }, +/obj/effect/floor_decal/borderfloor/corner2, +/obj/effect/floor_decal/corner/green/bordercorner2, +/obj/effect/floor_decal/corner/green/bordercorner2{ + dir = 9 + }, +/turf/simulated/floor/tiled, +/area/hallway/primary/firstdeck/aft) +"aTU" = ( +/obj/effect/floor_decal/steeldecal/steel_decals4{ + dir = 8 + }, +/obj/effect/floor_decal/steeldecal/steel_decals4{ + dir = 5 + }, +/turf/simulated/floor/tiled, +/area/hallway/primary/firstdeck/aft) +"aTV" = ( +/obj/structure/table/reinforced, +/obj/machinery/computer/skills, +/obj/effect/floor_decal/borderfloor{ + dir = 8 + }, +/obj/effect/floor_decal/corner/red/border{ + dir = 8 + }, +/turf/simulated/floor/tiled, +/area/security/checkpoint3) +"aTW" = ( +/turf/simulated/floor/tiled/monotile, +/area/security/checkpoint3) +"aTX" = ( +/obj/machinery/computer/security, +/obj/machinery/firealarm{ + dir = 4; + pixel_x = 24 + }, +/obj/effect/floor_decal/borderfloor{ + dir = 4 + }, +/obj/effect/floor_decal/corner/red/border{ + dir = 4 + }, +/turf/simulated/floor/tiled, +/area/security/checkpoint3) +"aTY" = ( +/obj/machinery/firealarm{ + dir = 8; + pixel_x = -24 + }, +/obj/effect/floor_decal/borderfloor{ + dir = 8 + }, +/obj/effect/floor_decal/corner/white/border{ + dir = 8 + }, +/turf/simulated/floor/tiled, +/area/hallway/secondary/escape/firstdeck/ep_aftstarboard) +"aTZ" = ( +/obj/machinery/atmospherics/pipe/simple/hidden, +/obj/effect/floor_decal/industrial/warning{ + dir = 4 + }, +/obj/machinery/embedded_controller/radio/simple_docking_controller/escape_pod_berth{ + frequency = 1380; + id_tag = "escape_pod_6_berth"; + pixel_x = 25; + pixel_y = 30; + tag_door = "escape_pod_6_berth_hatch" + }, +/turf/simulated/floor/tiled, +/area/hallway/secondary/escape/firstdeck/ep_aftstarboard) +"aUa" = ( +/obj/machinery/door/airlock/glass_external{ + frequency = 1380; + icon_state = "door_locked"; + id_tag = "escape_pod_6_berth_hatch"; + locked = 1; + name = "Escape Pod 6"; + req_access = list(13) + }, +/turf/simulated/floor, +/area/hallway/secondary/escape/firstdeck/ep_aftstarboard) +"aUb" = ( +/obj/machinery/door/airlock/external{ + frequency = 1380; + icon_state = "door_locked"; + id_tag = "escape_pod_6_hatch"; + locked = 1; + name = "Escape Pod Hatch 6"; + req_access = list(13) + }, +/turf/simulated/shuttle/floor, +/area/shuttle/escape_pod6/station) +"aUc" = ( +/obj/structure/bed/chair{ + dir = 4 + }, +/obj/machinery/vending/wallmed1{ + name = "NanoMed Wall"; + pixel_x = 0; + pixel_y = 30 + }, +/turf/simulated/shuttle/floor, +/area/shuttle/escape_pod6/station) +"aUd" = ( +/obj/structure/bed/chair{ + dir = 4 + }, +/obj/item/device/radio/intercom{ + name = "Station Intercom (General)"; + pixel_y = -21 + }, +/obj/structure/closet/walllocker/emerglocker{ + pixel_y = 32 + }, +/turf/simulated/shuttle/floor, +/area/shuttle/escape_pod6/station) +"aUe" = ( +/obj/structure/bed/chair{ + dir = 4 + }, +/obj/machinery/light{ + icon_state = "tube1"; + dir = 4 + }, +/obj/machinery/status_display{ + density = 0; + layer = 4; + pixel_x = 0; + pixel_y = -32 + }, +/obj/machinery/embedded_controller/radio/simple_docking_controller/escape_pod{ + frequency = 1380; + id_tag = "escape_pod_6"; + pixel_x = 0; + pixel_y = 25; + tag_door = "escape_pod_6_hatch" + }, +/turf/simulated/shuttle/floor, +/area/shuttle/escape_pod6/station) +"aUf" = ( +/obj/structure/grille, +/obj/structure/window/reinforced/full, +/obj/structure/window/reinforced{ + dir = 1 + }, +/obj/structure/window/reinforced{ + dir = 8 + }, +/obj/structure/window/reinforced, +/obj/structure/window/reinforced{ + dir = 4; + health = 1e+006 + }, +/turf/simulated/shuttle/plating, +/area/shuttle/escape_pod6/station) +"aUg" = ( +/obj/effect/floor_decal/industrial/warning/corner{ + icon_state = "warningcorner"; + dir = 1 + }, +/turf/simulated/floor/tiled, +/area/hallway/secondary/escape/firstdeck/ep_aftport) +"aUh" = ( +/obj/structure/closet/emcloset, +/obj/effect/floor_decal/borderfloor{ + dir = 4 + }, +/obj/effect/floor_decal/corner/red/border{ + dir = 4 + }, +/turf/simulated/floor/tiled, +/area/hallway/secondary/escape/firstdeck/ep_aftport) +"aUi" = ( +/obj/machinery/atmospherics/unary/vent_scrubber/on{ + dir = 1 + }, +/obj/effect/floor_decal/borderfloor, +/obj/effect/floor_decal/corner/green/border, +/obj/item/device/radio/intercom{ + name = "Station Intercom (General)"; + pixel_y = -21 + }, +/turf/simulated/floor/tiled, +/area/hallway/primary/firstdeck/starboard) +"aUj" = ( +/obj/structure/stairs/east, +/turf/simulated/floor/tiled/dark, +/area/hallway/primary/firstdeck/aft) +"aUk" = ( +/turf/simulated/wall, +/area/hallway/primary/firstdeck/auxdockaft) +"aUl" = ( +/obj/structure/sign/directions/bridge{ + dir = 1; + pixel_y = 10 + }, +/obj/structure/sign/directions/science{ + dir = 1 + }, +/obj/structure/sign/directions/medical{ + dir = 1; + pixel_y = -10 + }, +/turf/simulated/wall, +/area/hallway/primary/firstdeck/auxdockaft) +"aUm" = ( +/obj/machinery/door/firedoor/border_only, +/obj/machinery/door/airlock/glass{ + name = "Auxiliary Dock" + }, +/turf/simulated/floor/tiled/steel_grid, +/area/hallway/primary/firstdeck/auxdockaft) +"aUn" = ( +/obj/effect/wingrille_spawn/reinforced, +/obj/machinery/door/firedoor/glass, +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/obj/structure/cable{ + d1 = 1; + d2 = 2; + icon_state = "1-2"; + pixel_y = 0 + }, +/turf/simulated/floor/plating, +/area/hallway/primary/firstdeck/auxdockaft) +"aUo" = ( +/obj/structure/sign/directions/engineering{ + dir = 1; + pixel_y = 10 + }, +/obj/structure/sign/directions/cargo{ + dir = 1 + }, +/obj/structure/sign/directions/security{ + dir = 1; + pixel_y = -10 + }, +/turf/simulated/wall, +/area/hallway/primary/firstdeck/auxdockaft) +"aUp" = ( +/obj/structure/filingcabinet/chestdrawer, +/obj/effect/floor_decal/borderfloor{ + dir = 10 + }, +/obj/effect/floor_decal/corner/red/border{ + dir = 10 + }, +/turf/simulated/floor/tiled, +/area/security/checkpoint3) +"aUq" = ( +/obj/effect/floor_decal/borderfloor, +/obj/effect/floor_decal/corner/red/border, +/turf/simulated/floor/tiled, +/area/security/checkpoint3) +"aUr" = ( +/obj/structure/closet/wardrobe/red, +/obj/effect/floor_decal/borderfloor{ + dir = 6 + }, +/obj/effect/floor_decal/corner/red/border{ + dir = 6 + }, +/turf/simulated/floor/tiled, +/area/security/checkpoint3) +"aUs" = ( +/obj/structure/closet/emcloset, +/obj/effect/floor_decal/borderfloor{ + dir = 8 + }, +/obj/effect/floor_decal/corner/red/border{ + dir = 8 + }, +/turf/simulated/floor/tiled, +/area/hallway/secondary/escape/firstdeck/ep_aftstarboard) +"aUt" = ( +/obj/machinery/atmospherics/pipe/simple/hidden, +/obj/effect/floor_decal/industrial/warning/corner{ + dir = 4 + }, +/turf/simulated/floor/tiled, +/area/hallway/secondary/escape/firstdeck/ep_aftstarboard) +"aUu" = ( +/obj/structure/sign/warning/docking_area, +/turf/simulated/wall/r_wall, +/area/hallway/primary/firstdeck/auxdockaft) +"aUv" = ( +/turf/simulated/wall/r_wall, +/area/hallway/primary/firstdeck/auxdockaft) +"aUw" = ( +/obj/machinery/door/firedoor/border_only, +/obj/effect/wingrille_spawn/reinforced, +/turf/simulated/floor, +/area/hallway/secondary/escape/firstdeck/ep_aftport) +"aUx" = ( +/obj/structure/sign/deck/first, +/turf/simulated/wall, +/area/hallway/primary/firstdeck/auxdockaft) +"aUy" = ( +/obj/effect/floor_decal/borderfloor{ + dir = 8 + }, +/obj/effect/floor_decal/corner/blue/border{ + dir = 8 + }, +/turf/simulated/floor/tiled, +/area/hallway/primary/firstdeck/auxdockaft) +"aUz" = ( +/obj/effect/floor_decal/steeldecal/steel_decals4{ + dir = 4 + }, +/obj/effect/floor_decal/steeldecal/steel_decals4{ + dir = 9 + }, +/turf/simulated/floor/tiled, +/area/hallway/primary/firstdeck/auxdockaft) +"aUA" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/obj/structure/cable{ + d1 = 1; + d2 = 2; + icon_state = "1-2"; + pixel_y = 0 + }, +/obj/effect/floor_decal/borderfloor/corner2{ + dir = 4 + }, +/obj/effect/floor_decal/borderfloor/corner2{ + dir = 1 + }, +/obj/effect/floor_decal/corner/green/bordercorner2{ + dir = 4 + }, +/obj/effect/floor_decal/corner/green/bordercorner2{ + dir = 1 + }, +/turf/simulated/floor/tiled, +/area/hallway/primary/firstdeck/auxdockaft) +"aUB" = ( +/obj/effect/floor_decal/borderfloor{ + dir = 4 + }, +/obj/effect/floor_decal/corner/blue/border{ + dir = 4 + }, +/turf/simulated/floor/tiled, +/area/hallway/primary/firstdeck/auxdockaft) +"aUC" = ( +/obj/machinery/door/firedoor/border_only, +/obj/effect/wingrille_spawn/reinforced, +/turf/simulated/floor, +/area/hallway/primary/firstdeck/auxdockaft) +"aUD" = ( +/obj/machinery/door/firedoor/border_only, +/obj/effect/wingrille_spawn/reinforced, +/turf/simulated/floor, +/area/hallway/secondary/escape/firstdeck/ep_aftstarboard) +"aUE" = ( +/obj/machinery/door/firedoor/border_only, +/obj/machinery/atmospherics/pipe/simple/hidden, +/obj/effect/wingrille_spawn/reinforced, +/turf/simulated/floor, +/area/hallway/secondary/escape/firstdeck/ep_aftstarboard) +"aUF" = ( +/obj/effect/wingrille_spawn/reinforced, +/turf/simulated/floor, +/area/hallway/primary/firstdeck/auxdockaft) +"aUG" = ( +/obj/effect/floor_decal/industrial/warning{ + icon_state = "warning"; + dir = 9 + }, +/obj/machinery/embedded_controller/radio/airlock/airlock_controller{ + frequency = 1379; + id_tag = "d1aft_port_airlock"; + pixel_x = 0; + pixel_y = 26; + req_access = list(13); + tag_airpump = "d1aft_port_pump"; + tag_chamber_sensor = "d1aft_port_sensor"; + tag_exterior_door = "d1aft_port_outer"; + tag_interior_door = "d1aft_port_inner" + }, +/obj/machinery/atmospherics/unary/vent_pump/high_volume{ + dir = 4; + frequency = 1379; + id_tag = "d1aft_port_pump" + }, +/turf/simulated/floor/tiled, +/area/hallway/primary/firstdeck/auxdockaft) +"aUH" = ( +/obj/machinery/atmospherics/pipe/simple/hidden{ + dir = 10; + icon_state = "intact" + }, +/obj/effect/floor_decal/industrial/warning{ + dir = 5 + }, +/obj/machinery/airlock_sensor{ + frequency = 1379; + id_tag = "d1aft_port_sensor"; + pixel_x = 0; + pixel_y = 25 + }, +/turf/simulated/floor/tiled, +/area/hallway/primary/firstdeck/auxdockaft) +"aUI" = ( +/obj/effect/floor_decal/industrial/warning/corner{ + icon_state = "warningcorner"; + dir = 8 + }, +/obj/effect/floor_decal/borderfloor{ + dir = 1 + }, +/obj/effect/floor_decal/corner/white/border{ + dir = 1 + }, +/turf/simulated/floor/tiled, +/area/hallway/primary/firstdeck/auxdockaft) +"aUJ" = ( +/obj/machinery/newscaster{ + pixel_y = 30 + }, +/obj/effect/floor_decal/borderfloor{ + dir = 1 + }, +/obj/effect/floor_decal/corner/blue/border{ + dir = 1 + }, +/turf/simulated/floor/tiled, +/area/hallway/primary/firstdeck/auxdockaft) +"aUK" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 6 + }, +/obj/machinery/ai_status_display{ + pixel_y = 32 + }, +/obj/machinery/camera/network/first_deck{ + c_tag = "First Deck - Auxiliary Docking 1"; + dir = 2 + }, +/obj/effect/floor_decal/borderfloor{ + dir = 1 + }, +/obj/effect/floor_decal/corner/white/border{ + dir = 1 + }, +/turf/simulated/floor/tiled, +/area/hallway/primary/firstdeck/auxdockaft) +"aUL" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, +/obj/effect/floor_decal/borderfloor{ + dir = 1 + }, +/obj/effect/floor_decal/corner/blue/border{ + dir = 1 + }, +/turf/simulated/floor/tiled, +/area/hallway/primary/firstdeck/auxdockaft) +"aUM" = ( +/obj/machinery/atmospherics/unary/vent_pump/on, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, +/obj/effect/floor_decal/borderfloor{ + dir = 1 + }, +/obj/effect/floor_decal/corner/white/border{ + dir = 1 + }, +/turf/simulated/floor/tiled, +/area/hallway/primary/firstdeck/auxdockaft) +"aUN" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, +/obj/machinery/status_display{ + density = 0; + layer = 4; + pixel_x = 0; + pixel_y = 32 + }, +/obj/effect/floor_decal/borderfloor{ + dir = 1 + }, +/obj/effect/floor_decal/corner/blue/border{ + dir = 1 + }, +/turf/simulated/floor/tiled, +/area/hallway/primary/firstdeck/auxdockaft) +"aUO" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, +/obj/machinery/light{ + dir = 1 + }, +/obj/effect/floor_decal/borderfloor{ + dir = 1 + }, +/obj/effect/floor_decal/corner/white/border{ + dir = 1 + }, +/turf/simulated/floor/tiled, +/area/hallway/primary/firstdeck/auxdockaft) +"aUP" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, +/obj/machinery/firealarm{ + pixel_y = 24 + }, +/obj/effect/floor_decal/borderfloor{ + dir = 1 + }, +/obj/effect/floor_decal/corner/blue/border{ + dir = 1 + }, +/turf/simulated/floor/tiled, +/area/hallway/primary/firstdeck/auxdockaft) +"aUQ" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, +/obj/item/device/radio/intercom{ + dir = 1; + name = "Station Intercom (General)"; + pixel_y = 21 + }, +/obj/effect/floor_decal/borderfloor{ + dir = 1 + }, +/obj/effect/floor_decal/corner/white/border{ + dir = 1 + }, +/turf/simulated/floor/tiled, +/area/hallway/primary/firstdeck/auxdockaft) +"aUR" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, +/obj/structure/cable{ + icon_state = "0-4"; + d2 = 4 + }, +/obj/machinery/power/apc{ + dir = 1; + name = "north bump"; + pixel_x = 0; + pixel_y = 24 + }, +/obj/effect/floor_decal/borderfloor{ + dir = 1 + }, +/obj/effect/floor_decal/corner/blue/border{ + dir = 1 + }, +/turf/simulated/floor/tiled, +/area/hallway/primary/firstdeck/auxdockaft) +"aUS" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, +/obj/structure/cable{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/obj/effect/floor_decal/borderfloor/corner{ + dir = 1 + }, +/obj/effect/floor_decal/corner/white/bordercorner{ + dir = 1 + }, +/turf/simulated/floor/tiled, +/area/hallway/primary/firstdeck/auxdockaft) +"aUT" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, +/obj/structure/cable{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/obj/machinery/atmospherics/unary/vent_pump/on, +/turf/simulated/floor/tiled, +/area/hallway/primary/firstdeck/auxdockaft) +"aUU" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers, +/obj/structure/cable{ + d1 = 1; + d2 = 8; + icon_state = "1-8" + }, +/turf/simulated/floor/tiled, +/area/hallway/primary/firstdeck/auxdockaft) +"aUV" = ( +/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{ + dir = 1 + }, +/turf/simulated/floor/tiled, +/area/hallway/primary/firstdeck/auxdockaft) +"aUW" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, +/obj/effect/floor_decal/borderfloor/corner{ + dir = 4 + }, +/obj/effect/floor_decal/corner/white/bordercorner{ + dir = 4 + }, +/turf/simulated/floor/tiled, +/area/hallway/primary/firstdeck/auxdockaft) +"aUX" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, +/obj/machinery/alarm{ + pixel_y = 22 + }, +/obj/effect/floor_decal/borderfloor{ + dir = 1 + }, +/obj/effect/floor_decal/corner/blue/border{ + dir = 1 + }, +/turf/simulated/floor/tiled, +/area/hallway/primary/firstdeck/auxdockaft) +"aUY" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, +/obj/effect/floor_decal/borderfloor{ + dir = 1 + }, +/obj/effect/floor_decal/corner/white/border{ + dir = 1 + }, +/turf/simulated/floor/tiled, +/area/hallway/primary/firstdeck/auxdockaft) +"aUZ" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, +/obj/machinery/status_display{ + density = 0; + layer = 4; + pixel_x = 0; + pixel_y = 32 + }, +/obj/machinery/light{ + dir = 1 + }, +/obj/effect/floor_decal/borderfloor{ + dir = 1 + }, +/obj/effect/floor_decal/corner/blue/border{ + dir = 1 + }, +/turf/simulated/floor/tiled, +/area/hallway/primary/firstdeck/auxdockaft) +"aVa" = ( +/obj/machinery/atmospherics/pipe/simple/hidden, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, +/obj/effect/floor_decal/borderfloor{ + dir = 1 + }, +/obj/effect/floor_decal/corner/blue/border{ + dir = 1 + }, +/turf/simulated/floor/tiled, +/area/hallway/primary/firstdeck/auxdockaft) +"aVb" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 10 + }, +/obj/machinery/ai_status_display{ + pixel_y = 32 + }, +/obj/machinery/camera/network/first_deck{ + c_tag = "First Deck - Auxiliary Docking 3"; + dir = 2 + }, +/obj/effect/floor_decal/borderfloor{ + dir = 1 + }, +/obj/effect/floor_decal/corner/white/border{ + dir = 1 + }, +/turf/simulated/floor/tiled, +/area/hallway/primary/firstdeck/auxdockaft) +"aVc" = ( +/obj/structure/extinguisher_cabinet{ + pixel_y = 30 + }, +/obj/effect/floor_decal/borderfloor{ + dir = 1 + }, +/obj/effect/floor_decal/corner/blue/border{ + dir = 1 + }, +/turf/simulated/floor/tiled, +/area/hallway/primary/firstdeck/auxdockaft) +"aVd" = ( +/obj/effect/floor_decal/industrial/warning/corner, +/obj/effect/floor_decal/borderfloor{ + dir = 1 + }, +/obj/effect/floor_decal/corner/white/border{ + dir = 1 + }, +/turf/simulated/floor/tiled, +/area/hallway/primary/firstdeck/auxdockaft) +"aVe" = ( +/obj/machinery/atmospherics/pipe/simple/hidden{ + dir = 6 + }, +/obj/effect/floor_decal/industrial/warning{ + icon_state = "warning"; + dir = 9 + }, +/obj/machinery/airlock_sensor{ + frequency = 1331; + id_tag = "ninja_shuttle_dock_sensor"; + pixel_x = 0; + pixel_y = 25 + }, +/turf/simulated/floor/tiled, +/area/hallway/primary/firstdeck/auxdockaft) +"aVf" = ( +/obj/effect/floor_decal/industrial/warning{ + dir = 5 + }, +/obj/machinery/embedded_controller/radio/airlock/docking_port{ + frequency = 1331; + id_tag = "ninja_shuttle_dock_airlock"; + pixel_x = 0; + pixel_y = 26; + req_access = list(0); + req_one_access = list(13); + tag_airpump = "ninja_shuttle_dock_pump"; + tag_chamber_sensor = "ninja_shuttle_dock_sensor"; + tag_exterior_door = "ninja_shuttle_dock_outer"; + tag_interior_door = "ninja_shuttle_dock_inner" + }, +/obj/machinery/atmospherics/unary/vent_pump/high_volume{ + dir = 8; + frequency = 1331; + id_tag = "ninja_shuttle_dock_pump" + }, +/turf/simulated/floor/tiled, +/area/hallway/primary/firstdeck/auxdockaft) +"aVg" = ( +/obj/machinery/shield_diffuser, +/obj/effect/floor_decal/industrial/hatch/yellow, +/obj/machinery/door/airlock/external{ + frequency = 1379; + icon_state = "door_locked"; + id_tag = "d1aft_port_outer"; + locked = 1; + name = "Dock External Airlock"; + req_access = list(13) + }, +/obj/machinery/access_button{ + command = "cycle_exterior"; + frequency = 1379; + master_tag = "d1aft_port_airlock"; + name = "exterior access button"; + pixel_x = 0; + pixel_y = -26; + req_access = list(13) + }, +/turf/simulated/floor/tiled/dark, +/area/hallway/primary/firstdeck/auxdockaft) +"aVh" = ( +/obj/effect/floor_decal/industrial/warning{ + dir = 10 + }, +/obj/machinery/atmospherics/unary/vent_pump/high_volume{ + dir = 4; + frequency = 1379; + id_tag = "d1aft_port_pump" + }, +/turf/simulated/floor/tiled, +/area/hallway/primary/firstdeck/auxdockaft) +"aVi" = ( +/obj/machinery/atmospherics/pipe/manifold/hidden, +/obj/effect/floor_decal/industrial/warning{ + dir = 6 + }, +/obj/machinery/light/small, +/turf/simulated/floor/tiled, +/area/hallway/primary/firstdeck/auxdockaft) +"aVj" = ( +/obj/machinery/atmospherics/pipe/simple/hidden{ + dir = 4 + }, +/obj/effect/floor_decal/industrial/hatch/yellow, +/obj/machinery/door/airlock/glass_external{ + frequency = 1379; + icon_state = "door_locked"; + id_tag = "d1aft_port_inner"; + locked = 1; + name = "Dock Internal Airlock"; + req_access = list(13) + }, +/turf/simulated/floor/tiled/dark, +/area/hallway/primary/firstdeck/auxdockaft) +"aVk" = ( +/obj/machinery/atmospherics/pipe/simple/hidden{ + dir = 4 + }, +/obj/effect/floor_decal/industrial/warning{ + icon_state = "warning"; + dir = 8 + }, +/obj/machinery/access_button{ + command = "cycle_interior"; + frequency = 1379; + master_tag = "d1aft_port_airlock"; + name = "interior access button"; + pixel_x = -26; + pixel_y = 26; + req_one_access = list(13) + }, +/turf/simulated/floor/tiled, +/area/hallway/primary/firstdeck/auxdockaft) +"aVl" = ( +/obj/machinery/atmospherics/pipe/simple/hidden{ + dir = 4 + }, +/turf/simulated/floor/tiled, +/area/hallway/primary/firstdeck/auxdockaft) +"aVm" = ( +/obj/machinery/atmospherics/pipe/simple/hidden{ + dir = 4 + }, +/obj/machinery/atmospherics/unary/vent_scrubber/on{ + dir = 1 + }, +/turf/simulated/floor/tiled, +/area/hallway/primary/firstdeck/auxdockaft) +"aVn" = ( +/obj/machinery/atmospherics/pipe/manifold/hidden{ + dir = 1; + icon_state = "map" + }, +/obj/effect/floor_decal/industrial/warning/corner, +/turf/simulated/floor/tiled, +/area/hallway/primary/firstdeck/auxdockaft) +"aVo" = ( +/obj/machinery/atmospherics/pipe/simple/hidden{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 5 + }, +/obj/effect/floor_decal/industrial/warning, +/turf/simulated/floor/tiled, +/area/hallway/primary/firstdeck/auxdockaft) +"aVp" = ( +/obj/machinery/atmospherics/pipe/simple/hidden{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/obj/effect/floor_decal/industrial/warning, +/obj/machinery/access_button{ + command = "cycle_interior"; + frequency = 1331; + master_tag = "skipjack_shuttle_dock_airlock"; + name = "interior access button"; + pixel_x = 26; + pixel_y = -26; + req_one_access = list(13) + }, +/turf/simulated/floor/tiled, +/area/hallway/primary/firstdeck/auxdockaft) +"aVq" = ( +/obj/machinery/atmospherics/pipe/manifold/hidden{ + dir = 1; + icon_state = "map" + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/obj/effect/floor_decal/industrial/warning/corner{ + icon_state = "warningcorner"; + dir = 8 + }, +/turf/simulated/floor/tiled, +/area/hallway/primary/firstdeck/auxdockaft) +"aVr" = ( +/obj/machinery/atmospherics/pipe/simple/hidden{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/turf/simulated/floor/tiled, +/area/hallway/primary/firstdeck/auxdockaft) +"aVs" = ( +/obj/machinery/atmospherics/pipe/simple/hidden{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/manifold/hidden/supply, +/turf/simulated/floor/tiled, +/area/hallway/primary/firstdeck/auxdockaft) +"aVt" = ( +/obj/machinery/atmospherics/pipe/simple/hidden{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/manifold/hidden/supply, +/obj/machinery/hologram/holopad, +/obj/effect/floor_decal/industrial/outline/grey, +/turf/simulated/floor/tiled/monotile, +/area/hallway/primary/firstdeck/auxdockaft) +"aVu" = ( +/obj/machinery/atmospherics/pipe/simple/hidden{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/obj/machinery/atmospherics/unary/vent_scrubber/on{ + dir = 1 + }, +/turf/simulated/floor/tiled, +/area/hallway/primary/firstdeck/auxdockaft) +"aVv" = ( +/obj/machinery/atmospherics/pipe/manifold/hidden{ + dir = 1; + icon_state = "map" + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/obj/effect/floor_decal/industrial/warning/corner, +/turf/simulated/floor/tiled, +/area/hallway/primary/firstdeck/auxdockaft) +"aVw" = ( +/obj/machinery/atmospherics/pipe/simple/hidden{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/obj/effect/floor_decal/industrial/warning, +/obj/machinery/access_button{ + command = "cycle_exterior"; + frequency = 1379; + master_tag = "d1aft_starboard_airlock"; + name = "exterior access button"; + pixel_x = -26; + pixel_y = -26; + req_access = list(13) + }, +/turf/simulated/floor/tiled, +/area/hallway/primary/firstdeck/auxdockaft) +"aVx" = ( +/obj/machinery/atmospherics/pipe/simple/hidden{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 9; + pixel_y = 0 + }, +/obj/effect/floor_decal/industrial/warning, +/turf/simulated/floor/tiled, +/area/hallway/primary/firstdeck/auxdockaft) +"aVy" = ( +/obj/machinery/atmospherics/pipe/manifold4w/hidden, +/obj/effect/floor_decal/industrial/warning/corner{ + icon_state = "warningcorner"; + dir = 8 + }, +/turf/simulated/floor/tiled, +/area/hallway/primary/firstdeck/auxdockaft) +"aVz" = ( +/obj/machinery/atmospherics/pipe/simple/hidden{ + dir = 4 + }, +/obj/effect/floor_decal/industrial/warning{ + dir = 4 + }, +/obj/machinery/access_button{ + command = "cycle_interior"; + frequency = 1331; + master_tag = "ninja_shuttle_dock_airlock"; + name = "interior access button"; + pixel_x = 26; + pixel_y = 26; + req_one_access = list(13) + }, +/turf/simulated/floor/tiled, +/area/hallway/primary/firstdeck/auxdockaft) +"aVA" = ( +/obj/machinery/atmospherics/pipe/simple/hidden{ + dir = 4 + }, +/obj/effect/floor_decal/industrial/hatch/yellow, +/obj/machinery/door/airlock/glass_external{ + frequency = 1331; + icon_state = "door_locked"; + id_tag = "ninja_shuttle_dock_inner"; + locked = 1; + name = "Dock Internal Airlock"; + req_access = list(13) + }, +/turf/simulated/floor/tiled/dark, +/area/hallway/primary/firstdeck/auxdockaft) +"aVB" = ( +/obj/machinery/atmospherics/pipe/manifold/hidden, +/obj/effect/floor_decal/industrial/warning{ + dir = 10 + }, +/obj/machinery/light/small, +/turf/simulated/floor/tiled, +/area/hallway/primary/firstdeck/auxdockaft) +"aVC" = ( +/obj/effect/floor_decal/industrial/warning{ + dir = 6 + }, +/obj/machinery/atmospherics/unary/vent_pump/high_volume{ + dir = 8; + frequency = 1331; + id_tag = "ninja_shuttle_dock_pump" + }, +/turf/simulated/floor/tiled, +/area/hallway/primary/firstdeck/auxdockaft) +"aVD" = ( +/obj/machinery/shield_diffuser, +/obj/effect/floor_decal/industrial/hatch/yellow, +/obj/machinery/door/airlock/external{ + frequency = 1331; + icon_state = "door_locked"; + id_tag = "ninja_shuttle_dock_outer"; + locked = 1; + name = "Dock External Airlock"; + req_access = list(13) + }, +/obj/machinery/access_button{ + command = "cycle_exterior"; + frequency = 1331; + master_tag = "ninja_shuttle_dock_airlock"; + name = "exterior access button"; + pixel_x = 0; + pixel_y = -28; + req_one_access = list(13) + }, +/turf/simulated/floor/tiled/dark, +/area/hallway/primary/firstdeck/auxdockaft) +"aVE" = ( +/obj/machinery/door/firedoor/glass, +/obj/effect/wingrille_spawn/reinforced, +/turf/simulated/floor, +/area/hallway/primary/firstdeck/auxdockaft) +"aVF" = ( +/obj/machinery/atmospherics/pipe/simple/hidden, +/turf/simulated/wall/r_wall, +/area/hallway/primary/firstdeck/auxdockaft) +"aVG" = ( +/obj/effect/floor_decal/industrial/hatch/yellow, +/obj/machinery/door/airlock/glass_external{ + frequency = 1331; + icon_state = "door_locked"; + id_tag = "skipjack_shuttle_dock_inner"; + locked = 1; + name = "Dock Internal Airlock"; + req_access = list(13) + }, +/turf/simulated/floor/tiled/dark, +/area/hallway/primary/firstdeck/auxdockaft) +"aVH" = ( +/obj/structure/closet/emcloset, +/obj/machinery/light{ + icon_state = "tube1"; + dir = 8 + }, +/obj/effect/floor_decal/borderfloor, +/obj/effect/floor_decal/corner/green/border, +/turf/simulated/floor/tiled, +/area/hallway/primary/firstdeck/auxdockaft) +"aVI" = ( +/obj/effect/floor_decal/borderfloor/corner{ + dir = 8 + }, +/obj/effect/floor_decal/corner/green/bordercorner{ + dir = 8 + }, +/turf/simulated/floor/tiled, +/area/hallway/primary/firstdeck/auxdockaft) +"aVJ" = ( +/turf/simulated/floor/tiled/monotile, +/area/hallway/primary/firstdeck/auxdockaft) +"aVK" = ( +/obj/effect/floor_decal/borderfloor/corner, +/obj/effect/floor_decal/corner/green/bordercorner, +/turf/simulated/floor/tiled, +/area/hallway/primary/firstdeck/auxdockaft) +"aVL" = ( +/obj/structure/closet/emcloset, +/obj/machinery/light{ + icon_state = "tube1"; + dir = 4 + }, +/obj/effect/floor_decal/borderfloor, +/obj/effect/floor_decal/corner/green/border, +/turf/simulated/floor/tiled, +/area/hallway/primary/firstdeck/auxdockaft) +"aVM" = ( +/obj/effect/floor_decal/industrial/hatch/yellow, +/obj/machinery/door/airlock/glass_external{ + frequency = 1379; + icon_state = "door_locked"; + id_tag = "d1aft_starboard_inner"; + locked = 1; + name = "Dock Internal Airlock"; + req_access = list(13) + }, +/turf/simulated/floor/tiled/dark, +/area/hallway/primary/firstdeck/auxdockaft) +"aVN" = ( +/obj/machinery/atmospherics/pipe/manifold/hidden{ + dir = 8; + icon_state = "map" + }, +/obj/effect/wingrille_spawn/reinforced, +/turf/simulated/floor, +/area/hallway/primary/firstdeck/auxdockaft) +"aVO" = ( +/obj/effect/floor_decal/industrial/warning{ + icon_state = "warning"; + dir = 9 + }, +/obj/machinery/atmospherics/unary/vent_pump/high_volume{ + dir = 8; + frequency = 1331; + id_tag = "skipjack_shuttle_dock_pump" + }, +/obj/machinery/light/small{ + dir = 8 + }, +/turf/simulated/floor/tiled, +/area/hallway/primary/firstdeck/auxdockaft) +"aVP" = ( +/obj/effect/floor_decal/industrial/warning{ + dir = 5 + }, +/obj/machinery/atmospherics/unary/vent_pump/high_volume{ + dir = 4; + frequency = 1331; + id_tag = "skipjack_shuttle_dock_pump" + }, +/turf/simulated/floor/tiled, +/area/hallway/primary/firstdeck/auxdockaft) +"aVQ" = ( +/obj/machinery/atmospherics/pipe/manifold/hidden{ + dir = 4; + icon_state = "map" + }, +/obj/effect/wingrille_spawn/reinforced, +/turf/simulated/floor, +/area/hallway/primary/firstdeck/auxdockaft) +"aVR" = ( +/obj/structure/table/bench/standard, +/obj/effect/floor_decal/borderfloor{ + dir = 10 + }, +/obj/effect/floor_decal/corner/green/border{ + dir = 10 + }, +/turf/simulated/floor/tiled, +/area/hallway/primary/firstdeck/auxdockaft) +"aVS" = ( +/obj/structure/table/bench/standard, +/obj/machinery/camera/network/first_deck{ + c_tag = "First Deck - Auxiliary Docking 2"; + dir = 1 + }, +/obj/effect/floor_decal/borderfloor, +/obj/effect/floor_decal/corner/green/border, +/turf/simulated/floor/tiled, +/area/hallway/primary/firstdeck/auxdockaft) +"aVT" = ( +/obj/structure/table/bench/standard, +/obj/effect/floor_decal/borderfloor{ + dir = 6 + }, +/obj/effect/floor_decal/corner/green/border{ + dir = 6 + }, +/turf/simulated/floor/tiled, +/area/hallway/primary/firstdeck/auxdockaft) +"aVU" = ( +/obj/effect/floor_decal/industrial/warning{ + icon_state = "warning"; + dir = 9 + }, +/obj/machinery/atmospherics/unary/vent_pump/high_volume{ + dir = 8; + frequency = 1379; + id_tag = "d1aft_port_pump" + }, +/turf/simulated/floor/tiled, +/area/hallway/primary/firstdeck/auxdockaft) +"aVV" = ( +/obj/effect/floor_decal/industrial/warning{ + dir = 5 + }, +/obj/machinery/light/small{ + dir = 4; + pixel_y = 0 + }, +/obj/machinery/atmospherics/unary/vent_pump/high_volume{ + dir = 4; + frequency = 1379; + id_tag = "d1aft_port_pump" + }, +/turf/simulated/floor/tiled, +/area/hallway/primary/firstdeck/auxdockaft) +"aVW" = ( +/obj/machinery/atmospherics/pipe/simple/hidden{ + dir = 5; + icon_state = "intact" + }, +/obj/effect/wingrille_spawn/reinforced, +/turf/simulated/floor, +/area/hallway/primary/firstdeck/auxdockaft) +"aVX" = ( +/obj/effect/floor_decal/industrial/warning{ + dir = 10 + }, +/obj/machinery/atmospherics/unary/vent_pump/high_volume{ + dir = 8; + frequency = 1331; + id_tag = "skipjack_shuttle_dock_pump" + }, +/obj/machinery/airlock_sensor{ + frequency = 1331; + id_tag = "skipjack_shuttle_dock_sensor"; + pixel_x = -28; + pixel_y = 0 + }, +/turf/simulated/floor/tiled, +/area/hallway/primary/firstdeck/auxdockaft) +"aVY" = ( +/obj/effect/floor_decal/industrial/warning{ + dir = 6 + }, +/obj/machinery/embedded_controller/radio/airlock/docking_port{ + frequency = 1331; + id_tag = "skipjack_shuttle_dock_airlock"; + pixel_x = 28; + pixel_y = 0; + req_access = list(0); + req_one_access = list(13); + tag_airpump = "skipjack_shuttle_dock_pump"; + tag_chamber_sensor = "skipjack_shuttle_dock_sensor"; + tag_exterior_door = "skipjack_shuttle_dock_outer"; + tag_interior_door = "skipjack_shuttle_dock_inner" + }, +/obj/machinery/atmospherics/unary/vent_pump/high_volume{ + dir = 4; + frequency = 1331; + id_tag = "skipjack_shuttle_dock_pump" + }, +/turf/simulated/floor/tiled, +/area/hallway/primary/firstdeck/auxdockaft) +"aVZ" = ( +/obj/machinery/atmospherics/pipe/simple/hidden{ + dir = 9; + icon_state = "intact" + }, +/obj/effect/wingrille_spawn/reinforced, +/turf/simulated/floor, +/area/hallway/primary/firstdeck/auxdockaft) +"aWa" = ( +/obj/effect/floor_decal/industrial/warning{ + dir = 10 + }, +/obj/machinery/embedded_controller/radio/airlock/airlock_controller{ + frequency = 1379; + id_tag = "d1aft_starboard_airlock"; + pixel_x = -26; + pixel_y = 0; + req_access = list(13); + tag_airpump = "d1aft_starboard_pump"; + tag_chamber_sensor = "d1aft_starboard_sensor"; + tag_exterior_door = "d1aft_starboard_outer"; + tag_interior_door = "d1aft_starboard_inner" + }, +/obj/machinery/atmospherics/unary/vent_pump/high_volume{ + dir = 8; + frequency = 1379; + id_tag = "d1aft_port_pump" + }, +/turf/simulated/floor/tiled, +/area/hallway/primary/firstdeck/auxdockaft) +"aWb" = ( +/obj/effect/floor_decal/industrial/warning{ + dir = 6 + }, +/obj/machinery/airlock_sensor{ + frequency = 1379; + id_tag = "d1aft_starboard_sensor"; + pixel_x = 25; + pixel_y = 0 + }, +/obj/machinery/atmospherics/unary/vent_pump/high_volume{ + dir = 4; + frequency = 1379; + id_tag = "d1aft_port_pump" + }, +/turf/simulated/floor/tiled, +/area/hallway/primary/firstdeck/auxdockaft) +"aWc" = ( +/obj/machinery/shield_diffuser, +/obj/effect/floor_decal/industrial/hatch/yellow, +/obj/machinery/door/airlock/external{ + frequency = 1331; + icon_state = "door_locked"; + id_tag = "skipjack_shuttle_dock_outer"; + locked = 1; + name = "Dock External Airlock"; + req_access = list(13) + }, +/turf/simulated/floor/tiled/dark, +/area/hallway/primary/firstdeck/auxdockaft) +"aWd" = ( +/obj/machinery/shield_diffuser, +/obj/effect/floor_decal/industrial/hatch/yellow, +/obj/machinery/door/airlock/external{ + frequency = 1331; + icon_state = "door_locked"; + id_tag = "skipjack_shuttle_dock_outer"; + locked = 1; + name = "Dock External Airlock"; + req_access = list(13) + }, +/obj/machinery/access_button{ + command = "cycle_exterior"; + frequency = 1331; + master_tag = "skipjack_shuttle_dock_airlock"; + name = "exterior access button"; + pixel_x = 28; + pixel_y = 0; + req_one_access = list(13) + }, +/turf/simulated/floor/tiled/dark, +/area/hallway/primary/firstdeck/auxdockaft) +"aWe" = ( +/obj/machinery/shield_diffuser, +/obj/effect/floor_decal/industrial/hatch/yellow, +/obj/machinery/door/airlock/external{ + frequency = 1379; + icon_state = "door_locked"; + id_tag = "d1aft_starboard_outer"; + locked = 1; + name = "Dock External Airlock"; + req_access = list(13) + }, +/obj/machinery/access_button{ + command = "cycle_exterior"; + frequency = 1379; + master_tag = "d1aft_starboard_airlock"; + name = "exterior access button"; + pixel_x = -26; + pixel_y = 0; + req_access = list(13) + }, +/turf/simulated/floor/tiled/dark, +/area/hallway/primary/firstdeck/auxdockaft) +"aWf" = ( +/obj/machinery/shield_diffuser, +/obj/effect/floor_decal/industrial/hatch/yellow, +/obj/machinery/door/airlock/external{ + frequency = 1379; + icon_state = "door_locked"; + id_tag = "d1aft_starboard_outer"; + locked = 1; + name = "Dock External Airlock"; + req_access = list(13) + }, +/turf/simulated/floor/tiled/dark, +/area/hallway/primary/firstdeck/auxdockaft) +"aWg" = ( +/turf/space, +/area/skipjack_station/arrivals_dock) +"aWh" = ( +/obj/effect/landmark{ + name = "carpspawn" + }, +/turf/space, +/area/ninja_dojo/arrivals_dock) +"aWi" = ( +/turf/space, +/area/ninja_dojo/firstdeck) +"aWj" = ( +/turf/space, +/area/ninja_dojo/seconddeck) +"aWk" = ( +/turf/space, +/area/shuttle/shuttle1/seconddeck) +"aWl" = ( +/turf/space, +/area/syndicate_station/seconddeck) +"aWm" = ( +/obj/structure/lattice, +/obj/machinery/camera/network/security{ + c_tag = "SEC - Armory Exterior"; + dir = 1 + }, +/turf/space, +/area/space) +"aWn" = ( +/turf/simulated/wall/r_wall, +/area/security/armoury) +"aWo" = ( +/turf/simulated/wall/r_wall, +/area/security/tactical) +"aWp" = ( +/turf/simulated/wall/r_wall, +/area/space) +"aWq" = ( +/obj/machinery/status_display, +/turf/simulated/wall/r_wall, +/area/security/armoury) +"aWr" = ( +/obj/machinery/ai_status_display, +/turf/simulated/wall/r_wall, +/area/security/armoury) +"aWs" = ( +/turf/simulated/wall/r_wall, +/area/rnd/test_area) +"aWt" = ( +/turf/simulated/floor/tiled/airless, +/area/rnd/test_area) +"aWu" = ( +/obj/structure/grille, +/obj/structure/window/reinforced, +/obj/structure/window/reinforced{ + dir = 4 + }, +/obj/structure/window/reinforced{ + dir = 1 + }, +/obj/structure/window/reinforced{ + dir = 8 + }, +/turf/simulated/floor/airless, +/area/rnd/test_area) +"aWv" = ( +/obj/structure/table/rack, +/obj/item/clothing/gloves/arm_guard/riot, +/obj/item/clothing/shoes/leg_guard/riot, +/obj/item/clothing/suit/armor/riot/alt, +/obj/item/clothing/head/helmet/riot, +/obj/item/weapon/shield/riot, +/obj/item/weapon/melee/baton/loaded, +/obj/effect/floor_decal/corner/red/full{ + dir = 8 + }, +/obj/structure/window/reinforced{ + dir = 1 + }, +/obj/structure/window/reinforced{ + dir = 8 + }, +/obj/machinery/door/window/brigdoor/southleft{ + name = "Riot Armor"; + req_access = list(1) + }, +/turf/simulated/floor/tiled/dark, +/area/security/armoury) +"aWw" = ( +/obj/structure/table/rack, +/obj/item/clothing/gloves/arm_guard/riot, +/obj/item/clothing/shoes/leg_guard/riot, +/obj/item/clothing/suit/armor/riot/alt, +/obj/item/clothing/head/helmet/riot, +/obj/item/weapon/shield/riot, +/obj/item/weapon/melee/baton/loaded, +/obj/effect/floor_decal/corner/red{ + dir = 5 + }, +/obj/structure/window/reinforced{ + dir = 1 + }, +/obj/structure/window/reinforced{ + dir = 4; + health = 1e+006 + }, +/obj/machinery/door/window/brigdoor/southright{ + name = "Riot Armor" + }, +/turf/simulated/floor/tiled/dark, +/area/security/armoury) +"aWx" = ( +/obj/structure/table/rack, +/obj/item/clothing/shoes/magboots, +/obj/item/clothing/mask/breath, +/obj/item/clothing/suit/space/void/security, +/obj/item/clothing/head/helmet/space/void/security, +/obj/item/device/suit_cooling_unit, +/obj/item/weapon/tank/oxygen, +/obj/effect/floor_decal/corner/white{ + icon_state = "corner_white"; + dir = 1 + }, +/obj/effect/floor_decal/corner/blue{ + dir = 4 + }, +/obj/structure/window/reinforced{ + dir = 1 + }, +/obj/machinery/door/window/brigdoor/southleft{ + name = "EVA Suit"; + req_access = list(1) + }, +/turf/simulated/floor/tiled/dark, +/area/security/armoury) +"aWy" = ( +/obj/structure/table/rack, +/obj/item/clothing/gloves/arm_guard/riot, +/obj/item/clothing/shoes/leg_guard/riot, +/obj/item/clothing/suit/armor/riot/alt, +/obj/item/clothing/head/helmet/riot, +/obj/item/weapon/shield/riot, +/obj/item/weapon/melee/baton/loaded, +/obj/effect/floor_decal/corner/red{ + dir = 5 + }, +/obj/structure/window/reinforced{ + dir = 1 + }, +/obj/structure/window/reinforced{ + dir = 8 + }, +/obj/machinery/door/window/brigdoor/southleft{ + name = "Riot Armor"; + req_access = list(1) + }, +/turf/simulated/floor/tiled/dark, +/area/security/armoury) +"aWz" = ( +/obj/structure/table/rack, +/obj/item/clothing/gloves/arm_guard/riot, +/obj/item/clothing/shoes/leg_guard/riot, +/obj/item/clothing/suit/armor/riot/alt, +/obj/item/clothing/head/helmet/riot, +/obj/item/weapon/shield/riot, +/obj/item/weapon/melee/baton/loaded, +/obj/effect/floor_decal/corner/red/full{ + dir = 1 + }, +/obj/structure/window/reinforced{ + dir = 1 + }, +/obj/structure/window/reinforced{ + dir = 4; + health = 1e+006 + }, +/obj/machinery/door/window/brigdoor/southright{ + name = "Riot Armor" + }, +/turf/simulated/floor/tiled/dark, +/area/security/armoury) +"aWA" = ( +/obj/machinery/light{ + dir = 1 + }, +/obj/machinery/camera/network/research{ + c_tag = "SCI - Toxins Test Chamber Fore"; + network = list("Research","Toxins Test Area") + }, +/turf/simulated/floor/tiled/airless, +/area/rnd/test_area) +"aWB" = ( +/turf/simulated/wall/r_wall, +/area/security/prison) +"aWC" = ( +/obj/structure/sign/warning/high_voltage, +/turf/simulated/wall/r_wall, +/area/security/prison) +"aWD" = ( +/obj/structure/cable/green{ + d2 = 4; + icon_state = "0-4" + }, +/obj/machinery/door/firedoor/glass, +/obj/machinery/door/blast/regular{ + density = 0; + icon_state = "pdoor0"; + id = "Prison Gate"; + name = "Communal Brig Blast Door"; + opacity = 0 + }, +/obj/effect/wingrille_spawn/reinforced, +/turf/simulated/floor/plating, +/area/security/prison) +"aWE" = ( +/obj/structure/cable/green{ + d2 = 2; + icon_state = "0-2" + }, +/obj/structure/cable/green{ + d2 = 8; + icon_state = "0-8" + }, +/obj/structure/cable/green{ + d2 = 4; + icon_state = "0-4" + }, +/obj/machinery/door/firedoor/border_only, +/obj/machinery/door/blast/regular{ + density = 0; + icon_state = "pdoor0"; + id = "Prison Gate"; + name = "Communal Brig Blast Door"; + opacity = 0 + }, +/obj/effect/wingrille_spawn/reinforced, +/turf/simulated/floor/plating, +/area/security/prison) +"aWF" = ( +/obj/structure/cable/green{ + d2 = 8; + icon_state = "0-8" + }, +/obj/structure/cable/green{ + d2 = 4; + icon_state = "0-4" + }, +/obj/machinery/door/firedoor/border_only, +/obj/machinery/door/blast/regular{ + density = 0; + icon_state = "pdoor0"; + id = "Prison Gate"; + name = "Communal Brig Blast Door"; + opacity = 0 + }, +/obj/effect/wingrille_spawn/reinforced, +/turf/simulated/floor/plating, +/area/security/prison) +"aWG" = ( +/obj/structure/cable/green{ + d2 = 8; + icon_state = "0-8" + }, +/obj/machinery/door/firedoor/glass, +/obj/machinery/door/blast/regular{ + density = 0; + icon_state = "pdoor0"; + id = "Prison Gate"; + name = "Communal Brig Blast Door"; + opacity = 0 + }, +/obj/effect/wingrille_spawn/reinforced, +/turf/simulated/floor/plating, +/area/security/prison) +"aWH" = ( +/obj/structure/table/rack{ + dir = 8; + layer = 2.6 + }, +/obj/structure/window/reinforced{ + dir = 1 + }, +/obj/structure/window/reinforced{ + dir = 8 + }, +/obj/effect/floor_decal/corner/blue/full{ + dir = 8 + }, +/obj/item/weapon/gun/energy/gun{ + pixel_x = 3; + pixel_y = 3 + }, +/obj/item/weapon/gun/energy/gun, +/obj/machinery/door/window/brigdoor/southleft{ + name = "Energy"; + req_access = list(1) + }, +/turf/simulated/floor/tiled/dark, +/area/security/armoury) +"aWI" = ( +/obj/structure/table/rack{ + dir = 8; + layer = 2.6 + }, +/obj/structure/window/reinforced{ + dir = 1 + }, +/obj/structure/window/reinforced{ + dir = 4; + health = 1e+006 + }, +/obj/effect/floor_decal/corner/blue{ + dir = 5 + }, +/obj/item/weapon/gun/energy/ionrifle{ + pixel_y = -3 + }, +/obj/item/weapon/gun/energy/ionrifle{ + pixel_x = -2; + pixel_y = -5 + }, +/obj/machinery/door/window/brigdoor/southright{ + name = "Energy" + }, +/turf/simulated/floor/tiled/dark, +/area/security/armoury) +"aWJ" = ( +/obj/structure/table/rack{ + dir = 8; + layer = 2.6 + }, +/obj/structure/window/reinforced{ + dir = 4; + health = 1e+006 + }, +/obj/structure/window/reinforced{ + dir = 1 + }, +/obj/effect/floor_decal/corner/green/full{ + dir = 1 + }, +/obj/item/weapon/gun/projectile/shotgun/pump{ + pixel_x = -3; + pixel_y = 3 + }, +/obj/item/weapon/gun/projectile/shotgun/pump, +/obj/machinery/door/window/brigdoor/southleft{ + name = "Ballistics"; + req_access = list(1) + }, +/turf/simulated/floor/tiled/dark, +/area/security/armoury) +"aWK" = ( +/obj/machinery/power/apc{ + dir = 8; + name = "west bump"; + pixel_x = -24 + }, +/obj/machinery/light_switch{ + pixel_x = -36 + }, +/obj/structure/cable/green{ + d2 = 4; + icon_state = "0-4" + }, +/turf/simulated/floor/tiled/dark, +/area/security/armoury) +"aWL" = ( +/obj/structure/cable/green{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/turf/simulated/floor/tiled/dark, +/area/security/armoury) +"aWM" = ( +/obj/structure/cable/green{ + d1 = 2; + d2 = 8; + icon_state = "2-8" + }, +/turf/simulated/floor/tiled/dark, +/area/security/armoury) +"aWN" = ( +/turf/simulated/floor/tiled/dark, +/area/security/armoury) +"aWO" = ( +/obj/machinery/atmospherics/unary/vent_scrubber/on, +/obj/machinery/firealarm{ + dir = 4; + pixel_x = 24 + }, +/turf/simulated/floor/tiled/dark, +/area/security/armoury) +"aWP" = ( +/obj/machinery/alarm{ + pixel_y = 22 + }, +/obj/machinery/firealarm{ + dir = 8; + pixel_x = -24 + }, +/obj/structure/table/steel, +/obj/item/weapon/cell/device/weapon{ + pixel_x = 4; + pixel_y = 4 + }, +/obj/item/weapon/cell/device/weapon{ + pixel_x = 2; + pixel_y = 2 + }, +/obj/item/weapon/cell/device/weapon, +/obj/item/weapon/cell/device/weapon{ + pixel_x = -2; + pixel_y = -2 + }, +/turf/simulated/floor/tiled/dark, +/area/security/tactical) +"aWQ" = ( +/obj/structure/table/rack{ + dir = 8; + layer = 2.6 + }, +/obj/structure/window/reinforced{ + dir = 1 + }, +/obj/structure/window/reinforced{ + dir = 8 + }, +/obj/effect/floor_decal/corner/blue/full{ + dir = 8 + }, +/obj/machinery/door/window/brigdoor/southleft{ + name = "Energy"; + req_access = list(1) + }, +/obj/random/energy/sec, +/turf/simulated/floor/tiled/dark, +/area/security/tactical) +"aWR" = ( +/obj/structure/table/rack{ + dir = 8; + layer = 2.6 + }, +/obj/structure/window/reinforced{ + dir = 4; + health = 1e+006 + }, +/obj/structure/window/reinforced{ + dir = 1 + }, +/obj/effect/floor_decal/corner/blue/full{ + dir = 1 + }, +/obj/machinery/door/window/brigdoor/southright{ + name = "Energy" + }, +/obj/random/energy/sec, +/turf/simulated/floor/tiled/dark, +/area/security/tactical) +"aWS" = ( +/turf/simulated/wall/r_wall, +/area/security/security_restroom) +"aWT" = ( +/obj/structure/cable/green{ + d2 = 4; + icon_state = "0-4" + }, +/obj/machinery/door/firedoor/border_only, +/obj/effect/wingrille_spawn/reinforced, +/turf/simulated/floor/plating, +/area/security/security_lockerroom) +"aWU" = ( +/obj/structure/cable/green{ + d2 = 2; + icon_state = "0-2" + }, +/obj/structure/cable/green{ + d2 = 4; + icon_state = "0-4" + }, +/obj/structure/cable/green{ + d2 = 8; + icon_state = "0-8" + }, +/obj/machinery/door/firedoor/glass, +/obj/effect/wingrille_spawn/reinforced, +/turf/simulated/floor/plating, +/area/security/security_lockerroom) +"aWV" = ( +/obj/structure/cable/green{ + d2 = 8; + icon_state = "0-8" + }, +/obj/machinery/door/firedoor/border_only, +/obj/effect/wingrille_spawn/reinforced, +/turf/simulated/floor/plating, +/area/security/security_lockerroom) +"aWW" = ( +/obj/structure/sign/warning/high_voltage, +/turf/simulated/wall/r_wall, +/area/security/range) +"aWX" = ( +/turf/simulated/wall/r_wall, +/area/security/range) +"aWY" = ( +/obj/machinery/light{ + dir = 1 + }, +/obj/effect/floor_decal/borderfloor{ + dir = 1 + }, +/obj/effect/floor_decal/corner/red/border{ + dir = 1 + }, +/turf/simulated/floor/tiled, +/area/security/prison) +"aWZ" = ( +/obj/structure/closet{ + name = "Prisoner's Locker" + }, +/obj/item/clothing/head/soft/orange, +/obj/item/clothing/shoes/sandal, +/obj/random/tech_supply, +/obj/random/tech_supply, +/obj/item/clothing/head/flatcap, +/obj/effect/floor_decal/borderfloor{ + dir = 5 + }, +/obj/effect/floor_decal/corner/red/border{ + dir = 5 + }, +/turf/simulated/floor/tiled, +/area/security/prison) +"aXa" = ( +/obj/effect/wingrille_spawn/reinforced, +/turf/simulated/floor/plating, +/area/security/prison) +"aXb" = ( +/obj/structure/table/steel, +/obj/machinery/microwave, +/obj/effect/floor_decal/industrial/warning/corner{ + dir = 4 + }, +/obj/effect/floor_decal/borderfloor{ + dir = 8 + }, +/obj/effect/floor_decal/corner/red/border{ + dir = 8 + }, +/turf/simulated/floor/tiled, +/area/security/prison) +"aXc" = ( +/obj/structure/table/steel, +/obj/item/weapon/storage/box/donkpockets, +/obj/item/weapon/storage/box/donkpockets{ + pixel_x = -3; + pixel_y = -3 + }, +/obj/item/weapon/storage/box/cups{ + pixel_x = 0; + pixel_y = 0 + }, +/obj/effect/floor_decal/industrial/warning{ + icon_state = "warning"; + dir = 1 + }, +/turf/simulated/floor/tiled, +/area/security/prison) +"aXd" = ( +/obj/structure/table/steel, +/obj/structure/cable/green{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/obj/item/weapon/material/minihoe, +/obj/item/device/analyzer/plant_analyzer, +/obj/item/clothing/head/greenbandana, +/obj/effect/floor_decal/industrial/warning{ + icon_state = "warning"; + dir = 1 + }, +/turf/simulated/floor/tiled, +/area/security/prison) +"aXe" = ( +/obj/structure/reagent_dispensers/watertank, +/obj/item/weapon/reagent_containers/glass/bucket, +/obj/effect/floor_decal/industrial/warning{ + icon_state = "warning"; + dir = 1 + }, +/turf/simulated/floor/tiled, +/area/security/prison) +"aXf" = ( +/obj/effect/floor_decal/industrial/warning{ + icon_state = "warning"; + dir = 1 + }, +/turf/simulated/floor/tiled, +/area/security/prison) +"aXg" = ( +/obj/machinery/vending/hydronutrients, +/obj/effect/floor_decal/industrial/warning/corner{ + dir = 1 + }, +/obj/effect/floor_decal/borderfloor{ + dir = 4 + }, +/obj/effect/floor_decal/corner/red/border{ + dir = 4 + }, +/turf/simulated/floor/tiled, +/area/security/prison) +"aXh" = ( +/turf/simulated/wall, +/area/security/prison) +"aXi" = ( +/obj/structure/toilet{ + dir = 4 + }, +/obj/machinery/light/small{ + dir = 8 + }, +/turf/simulated/floor/tiled/freezer, +/area/security/prison) +"aXj" = ( +/turf/simulated/floor/tiled/freezer, +/area/security/prison) +"aXk" = ( +/obj/structure/table/rack{ + dir = 8; + layer = 2.6 + }, +/obj/structure/window/reinforced{ + dir = 1 + }, +/obj/structure/window/reinforced{ + dir = 8 + }, +/obj/effect/floor_decal/corner/blue/full{ + dir = 8 + }, +/obj/item/clothing/gloves/arm_guard/laserproof, +/obj/item/clothing/shoes/leg_guard/laserproof, +/obj/item/clothing/suit/armor/laserproof{ + pixel_x = 0; + pixel_y = 0 + }, +/obj/item/clothing/head/helmet/laserproof, +/obj/machinery/door/window/brigdoor/eastleft{ + name = "Laser Armor" + }, +/turf/simulated/floor/tiled/dark, +/area/security/armoury) +"aXl" = ( +/obj/machinery/atmospherics/unary/vent_scrubber/on{ + dir = 4 + }, +/turf/simulated/floor/tiled/dark, +/area/security/armoury) +"aXm" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, +/turf/simulated/floor/tiled/dark, +/area/security/armoury) +"aXn" = ( +/obj/machinery/door/firedoor/border_only, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, +/turf/simulated/floor/tiled/dark, +/area/security/armoury) +"aXo" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, +/obj/item/weapon/stool, +/turf/simulated/floor/tiled/dark, +/area/security/armoury) +"aXp" = ( +/obj/machinery/hologram/holopad, +/obj/structure/cable/green{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 10 + }, +/obj/item/weapon/stool, +/obj/effect/floor_decal/industrial/outline/grey, +/turf/simulated/floor/tiled/dark, +/area/security/armoury) +"aXq" = ( +/obj/item/weapon/stool, +/turf/simulated/floor/tiled/dark, +/area/security/armoury) +"aXr" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 6 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/obj/machinery/light{ + dir = 4 + }, +/turf/simulated/floor/tiled/dark, +/area/security/armoury) +"aXs" = ( +/obj/machinery/door/firedoor/border_only, +/obj/structure/cable/green{ + d2 = 2; + icon_state = "0-2" + }, +/obj/effect/wingrille_spawn/reinforced, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/turf/simulated/floor/plating, +/area/security/tactical) +"aXt" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/turf/simulated/floor/tiled/dark, +/area/security/tactical) +"aXu" = ( +/obj/machinery/atmospherics/unary/vent_pump/on{ + dir = 8 + }, +/turf/simulated/floor/tiled/dark, +/area/security/tactical) +"aXv" = ( +/turf/simulated/floor/tiled/dark, +/area/security/tactical) +"aXw" = ( +/obj/structure/table/rack{ + dir = 8; + layer = 2.6 + }, +/obj/structure/window/reinforced{ + dir = 4; + health = 1e+006 + }, +/obj/structure/window/reinforced{ + dir = 1 + }, +/obj/effect/floor_decal/corner/yellow/full{ + dir = 1 + }, +/obj/item/clothing/gloves/arm_guard/combat, +/obj/item/clothing/shoes/leg_guard/combat, +/obj/item/clothing/suit/armor/combat, +/obj/item/clothing/head/helmet/combat, +/obj/machinery/door/window/brigdoor/westright{ + name = "Combat Armor" + }, +/turf/simulated/floor/tiled/dark, +/area/security/tactical) +"aXx" = ( +/obj/structure/undies_wardrobe, +/turf/simulated/floor/tiled/freezer, +/area/security/security_restroom) +"aXy" = ( +/obj/structure/sink{ + pixel_y = 16 + }, +/obj/structure/mirror{ + pixel_x = 0; + pixel_y = 32 + }, +/turf/simulated/floor/tiled/freezer, +/area/security/security_restroom) +"aXz" = ( +/obj/machinery/shower{ + dir = 8; + icon_state = "shower"; + pixel_x = -5; + pixel_y = -1 + }, +/obj/machinery/door/window/westright{ + name = "Shower" + }, +/obj/structure/curtain/open/shower/security, +/turf/simulated/floor/tiled/freezer, +/area/security/security_restroom) +"aXA" = ( +/turf/simulated/wall, +/area/security/security_restroom) +"aXB" = ( +/obj/structure/table/standard, +/obj/item/device/radio, +/obj/item/device/radio, +/obj/item/device/radio, +/obj/item/device/radio, +/obj/item/device/flashlight, +/obj/item/device/flashlight, +/obj/item/device/flashlight, +/obj/item/device/flashlight, +/obj/item/weapon/tool/crowbar, +/obj/item/weapon/tool/crowbar, +/obj/item/weapon/tool/crowbar, +/obj/item/weapon/tool/crowbar, +/obj/machinery/recharger/wallcharger{ + pixel_x = -24; + pixel_y = -4 + }, +/obj/effect/floor_decal/borderfloor{ + dir = 9 + }, +/obj/effect/floor_decal/corner/red/border{ + dir = 9 + }, +/obj/item/weapon/hand_labeler, +/turf/simulated/floor/tiled, +/area/security/security_lockerroom) +"aXC" = ( +/obj/structure/cable/green{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/obj/machinery/light{ + dir = 1 + }, +/obj/effect/floor_decal/borderfloor{ + dir = 1 + }, +/obj/effect/floor_decal/corner/red/border{ + dir = 1 + }, +/turf/simulated/floor/tiled, +/area/security/security_lockerroom) +"aXD" = ( +/obj/structure/closet/secure_closet/security, +/obj/item/clothing/glasses/hud/security, +/obj/effect/floor_decal/borderfloor{ + dir = 5 + }, +/obj/effect/floor_decal/corner/red/border{ + dir = 5 + }, +/turf/simulated/floor/tiled, +/area/security/security_lockerroom) +"aXE" = ( +/obj/effect/floor_decal/borderfloor{ + dir = 8 + }, +/obj/effect/floor_decal/corner/red/border{ + dir = 8 + }, +/turf/simulated/floor/tiled, +/area/security/range) +"aXF" = ( +/turf/simulated/floor/tiled, +/area/security/range) +"aXG" = ( +/obj/random/junk, +/turf/space, +/area/space) +"aXH" = ( +/obj/machinery/recharge_station, +/obj/effect/floor_decal/borderfloor{ + dir = 8 + }, +/obj/effect/floor_decal/corner/red/border{ + dir = 8 + }, +/turf/simulated/floor/tiled, +/area/security/prison) +"aXI" = ( +/obj/machinery/flasher{ + id = "permflash"; + name = "Floor mounted flash"; + pixel_x = 0 + }, +/obj/effect/floor_decal/industrial/outline/yellow, +/turf/simulated/floor/tiled, +/area/security/prison) +"aXJ" = ( +/obj/structure/bed/padded, +/obj/item/weapon/bedsheet/orange, +/obj/effect/floor_decal/borderfloor{ + dir = 4 + }, +/obj/effect/floor_decal/corner/red/border{ + dir = 4 + }, +/turf/simulated/floor/tiled, +/area/security/prison) +"aXK" = ( +/obj/effect/floor_decal/borderfloor{ + dir = 8 + }, +/obj/effect/floor_decal/corner/red/border{ + dir = 8 + }, +/turf/simulated/floor/tiled, +/area/security/prison) +"aXL" = ( +/turf/simulated/floor/tiled, +/area/security/prison) +"aXM" = ( +/obj/structure/cable/green{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/turf/simulated/floor/tiled, +/area/security/prison) +"aXN" = ( +/obj/machinery/seed_storage/garden, +/obj/machinery/ai_status_display{ + pixel_x = 32; + pixel_y = 0 + }, +/obj/effect/floor_decal/borderfloor{ + dir = 4 + }, +/obj/effect/floor_decal/corner/red/border{ + dir = 4 + }, +/turf/simulated/floor/tiled, +/area/security/prison) +"aXO" = ( +/obj/machinery/door/airlock{ + name = "Toilet" + }, +/turf/simulated/floor/tiled/freezer, +/area/security/prison) +"aXP" = ( +/obj/structure/table/rack{ + dir = 8; + layer = 2.6 + }, +/obj/structure/window/reinforced, +/obj/structure/window/reinforced{ + dir = 8 + }, +/obj/effect/floor_decal/corner/blue{ + dir = 9 + }, +/obj/item/clothing/gloves/arm_guard/laserproof, +/obj/item/clothing/shoes/leg_guard/laserproof, +/obj/item/clothing/suit/armor/laserproof{ + pixel_x = 0; + pixel_y = 0 + }, +/obj/item/clothing/head/helmet/laserproof, +/obj/machinery/door/window/brigdoor/eastright{ + name = "Laser Armor" + }, +/turf/simulated/floor/tiled/dark, +/area/security/armoury) +"aXQ" = ( +/obj/machinery/hologram/holopad, +/obj/effect/floor_decal/industrial/outline/grey, +/turf/simulated/floor/tiled/dark, +/area/security/armoury) +"aXR" = ( +/obj/machinery/camera/network/security{ + c_tag = "SEC - Armory"; + dir = 1 + }, +/obj/machinery/door/firedoor/glass, +/turf/simulated/floor/tiled/dark, +/area/security/armoury) +"aXS" = ( +/obj/structure/table/standard, +/obj/item/weapon/storage/box/empslite{ + pixel_x = 2; + pixel_y = 2 + }, +/obj/item/weapon/storage/box/flashbangs{ + pixel_x = -2; + pixel_y = -2 + }, +/obj/effect/floor_decal/industrial/outline/grey, +/turf/simulated/floor/tiled/dark, +/area/security/armoury) +"aXT" = ( +/obj/structure/table/standard, +/obj/structure/cable/green{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/obj/structure/cable/green{ + d1 = 2; + d2 = 4; + icon_state = "2-4" + }, +/obj/item/clothing/glasses/sunglasses/sechud/tactical, +/obj/item/clothing/glasses/sunglasses/sechud/tactical, +/obj/item/clothing/glasses/sunglasses/sechud/tactical, +/obj/item/clothing/glasses/sunglasses/sechud/tactical, +/obj/item/clothing/glasses/sunglasses/sechud/tactical, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/obj/effect/floor_decal/industrial/outline/grey, +/obj/item/device/binoculars{ + pixel_y = 5 + }, +/turf/simulated/floor/tiled/dark, +/area/security/armoury) +"aXU" = ( +/obj/structure/table/standard, +/obj/structure/cable/green{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/obj/item/weapon/storage/box/handcuffs{ + pixel_x = 8; + pixel_y = 6 + }, +/obj/item/weapon/storage/box/chemimp{ + pixel_x = 4; + pixel_y = 3 + }, +/obj/item/weapon/storage/box/trackimp, +/obj/effect/floor_decal/industrial/outline/grey, +/turf/simulated/floor/tiled/dark, +/area/security/armoury) +"aXV" = ( +/obj/structure/cable/green{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/turf/simulated/floor/tiled/dark, +/area/security/armoury) +"aXW" = ( +/obj/machinery/door/firedoor/border_only, +/obj/machinery/door/airlock/highsecurity{ + name = "Armoury Tactical Equipment"; + req_access = list(3) + }, +/obj/structure/cable/green{ + d1 = 2; + d2 = 8; + icon_state = "2-8" + }, +/obj/structure/cable/green{ + d1 = 1; + d2 = 8; + icon_state = "1-8" + }, +/obj/structure/cable/green{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/turf/simulated/floor/tiled/dark, +/area/security/tactical) +"aXX" = ( +/obj/structure/cable/green{ + d1 = 2; + d2 = 8; + icon_state = "2-8" + }, +/turf/simulated/floor/tiled/dark, +/area/security/tactical) +"aXY" = ( +/obj/machinery/hologram/holopad, +/obj/effect/floor_decal/industrial/outline/grey, +/turf/simulated/floor/tiled/dark, +/area/security/tactical) +"aXZ" = ( +/obj/structure/table/rack{ + dir = 8; + layer = 2.6 + }, +/obj/structure/window/reinforced{ + dir = 4; + health = 1e+006 + }, +/obj/structure/window/reinforced, +/obj/effect/floor_decal/corner/yellow{ + dir = 6 + }, +/obj/item/clothing/gloves/arm_guard/combat, +/obj/item/clothing/shoes/leg_guard/combat, +/obj/item/clothing/suit/armor/combat, +/obj/item/clothing/head/helmet/combat, +/obj/machinery/door/window/brigdoor/westleft{ + name = "Combat Armor"; + req_access = list(1) + }, +/turf/simulated/floor/tiled/dark, +/area/security/tactical) +"aYa" = ( +/obj/machinery/alarm{ + dir = 4; + icon_state = "alarm0"; + pixel_x = -22 + }, +/turf/simulated/floor/tiled/freezer, +/area/security/security_restroom) +"aYb" = ( +/turf/simulated/floor/tiled/freezer, +/area/security/security_restroom) +"aYc" = ( +/obj/machinery/door/window/westleft{ + name = "Shower" + }, +/obj/machinery/shower{ + dir = 8; + icon_state = "shower"; + pixel_x = -5; + pixel_y = -1 + }, +/obj/structure/curtain/open/shower/security, +/obj/structure/window/basic, +/turf/simulated/floor/tiled/freezer, +/area/security/security_restroom) +"aYd" = ( +/obj/structure/table/standard, +/obj/item/device/taperecorder{ + pixel_y = 0 + }, +/obj/item/device/tape, +/obj/item/device/megaphone, +/obj/item/weapon/packageWrap, +/obj/item/weapon/storage/box, +/obj/machinery/recharger/wallcharger{ + pixel_x = -24; + pixel_y = -4 + }, +/obj/effect/floor_decal/borderfloor{ + dir = 8 + }, +/obj/effect/floor_decal/corner/red/border{ + dir = 8 + }, +/turf/simulated/floor/tiled, +/area/security/security_lockerroom) +"aYe" = ( +/obj/structure/cable/green{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/turf/simulated/floor/tiled, +/area/security/security_lockerroom) +"aYf" = ( +/obj/structure/closet/secure_closet/security, +/obj/item/clothing/glasses/hud/security, +/obj/machinery/alarm{ + dir = 8; + pixel_x = 22; + pixel_y = 0 + }, +/obj/effect/floor_decal/borderfloor{ + dir = 4 + }, +/obj/effect/floor_decal/corner/red/border{ + dir = 4 + }, +/turf/simulated/floor/tiled, +/area/security/security_lockerroom) +"aYg" = ( +/obj/effect/floor_decal/industrial/hatch/yellow, +/obj/structure/target_stake, +/turf/simulated/floor/tiled, +/area/security/range) +"aYh" = ( +/obj/machinery/magnetic_module, +/turf/simulated/floor/tiled, +/area/security/range) +"aYi" = ( +/obj/effect/floor_decal/borderfloor{ + dir = 4 + }, +/obj/effect/floor_decal/corner/red/border{ + dir = 4 + }, +/turf/simulated/floor/tiled, +/area/security/range) +"aYj" = ( +/obj/machinery/door/firedoor/border_only, +/obj/effect/wingrille_spawn/reinforced, +/turf/simulated/floor/plating, +/area/security/range) +"aYk" = ( +/obj/effect/floor_decal/industrial/warning{ + dir = 9 + }, +/turf/simulated/floor/tiled/airless, +/area/rnd/test_area) +"aYl" = ( +/obj/effect/floor_decal/industrial/warning{ + dir = 5 + }, +/turf/simulated/floor/tiled/airless, +/area/rnd/test_area) +"aYm" = ( +/obj/structure/closet{ + name = "Prisoner's Locker" + }, +/obj/machinery/alarm{ + dir = 4; + icon_state = "alarm0"; + pixel_x = -22 + }, +/obj/machinery/atmospherics/unary/vent_pump/on{ + dir = 4 + }, +/obj/random/cigarettes, +/obj/item/weapon/flame/lighter/zippo, +/obj/effect/floor_decal/borderfloor{ + dir = 8 + }, +/obj/effect/floor_decal/corner/red/border{ + dir = 8 + }, +/turf/simulated/floor/tiled, +/area/security/prison) +"aYn" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 10 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 6 + }, +/turf/simulated/floor/tiled, +/area/security/prison) +"aYo" = ( +/obj/structure/closet{ + name = "Prisoner's Locker" + }, +/obj/machinery/atmospherics/unary/vent_scrubber/on{ + dir = 8 + }, +/obj/item/weapon/reagent_containers/food/drinks/bottle/absinthe, +/obj/item/clothing/suit/storage/apron/overalls, +/obj/machinery/camera/network/prison{ + c_tag = "SEC - Brig Dormitories"; + dir = 8 + }, +/obj/effect/floor_decal/borderfloor{ + dir = 4 + }, +/obj/effect/floor_decal/corner/red/border{ + dir = 4 + }, +/turf/simulated/floor/tiled, +/area/security/prison) +"aYp" = ( +/obj/structure/table/steel, +/obj/structure/bedsheetbin, +/obj/effect/floor_decal/borderfloor{ + dir = 8 + }, +/obj/effect/floor_decal/corner/red/border{ + dir = 8 + }, +/turf/simulated/floor/tiled, +/area/security/prison) +"aYq" = ( +/obj/machinery/portable_atmospherics/hydroponics, +/obj/effect/floor_decal/borderfloor{ + dir = 4 + }, +/obj/effect/floor_decal/corner/red/border{ + dir = 4 + }, +/turf/simulated/floor/tiled, +/area/security/prison) +"aYr" = ( +/obj/effect/decal/cleanable/dirt, +/obj/machinery/shower{ + dir = 4; + icon_state = "shower"; + pixel_x = 5; + pixel_y = -1 + }, +/obj/structure/curtain/open/shower/security, +/turf/simulated/floor/tiled/freezer, +/area/security/prison) +"aYs" = ( +/obj/structure/mopbucket, +/obj/item/weapon/mop, +/obj/item/weapon/soap/nanotrasen, +/obj/machinery/light/small{ + dir = 4 + }, +/turf/simulated/floor/tiled/freezer, +/area/security/prison) +"aYt" = ( +/obj/structure/table/rack{ + dir = 8; + layer = 2.6 + }, +/obj/structure/window/reinforced{ + dir = 1 + }, +/obj/structure/window/reinforced{ + dir = 8 + }, +/obj/item/clothing/gloves/arm_guard/bulletproof, +/obj/item/clothing/shoes/leg_guard/bulletproof, +/obj/item/clothing/suit/armor/bulletproof/alt, +/obj/item/clothing/head/helmet/bulletproof, +/obj/machinery/door/window/brigdoor/eastleft{ + name = "Ballistic Armor" + }, +/obj/effect/floor_decal/corner/green/full{ + dir = 8 + }, +/turf/simulated/floor/tiled/dark, +/area/security/armoury) +"aYu" = ( +/obj/machinery/atmospherics/unary/vent_pump/on{ + dir = 4 + }, +/turf/simulated/floor/tiled/dark, +/area/security/armoury) +"aYv" = ( +/obj/structure/table/rack{ + dir = 8; + layer = 2.6 + }, +/obj/structure/window/reinforced{ + dir = 4; + health = 1e+006 + }, +/obj/structure/window/reinforced{ + dir = 1 + }, +/obj/effect/floor_decal/corner/red/full{ + dir = 1 + }, +/obj/item/weapon/storage/box/flashshells, +/obj/item/weapon/storage/box/beanbags, +/obj/item/weapon/storage/box/beanbags, +/obj/item/weapon/storage/box/stunshells, +/obj/item/weapon/storage/box/stunshells, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/obj/machinery/door/window/brigdoor/westright{ + name = "Ammo" + }, +/turf/simulated/floor/tiled/dark, +/area/security/armoury) +"aYw" = ( +/obj/machinery/door/firedoor/border_only, +/obj/effect/wingrille_spawn/reinforced, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/turf/simulated/floor/plating, +/area/security/armoury) +"aYx" = ( +/obj/machinery/atmospherics/pipe/manifold/hidden/supply{ + dir = 1 + }, +/obj/machinery/light{ + dir = 8; + icon_state = "tube1"; + pixel_y = 0 + }, +/turf/simulated/floor/tiled/dark, +/area/security/armoury) +"aYy" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/turf/simulated/floor/tiled/dark, +/area/security/armoury) +"aYz" = ( +/obj/structure/cable/green{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{ + dir = 8 + }, +/obj/machinery/atmospherics/pipe/manifold/hidden/supply{ + dir = 1 + }, +/turf/simulated/floor/tiled/dark, +/area/security/armoury) +"aYA" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, +/turf/simulated/floor/tiled/dark, +/area/security/armoury) +"aYB" = ( +/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 9 + }, +/turf/simulated/floor/tiled/dark, +/area/security/armoury) +"aYC" = ( +/obj/machinery/door/firedoor/border_only, +/obj/structure/cable/green, +/obj/effect/wingrille_spawn/reinforced, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, +/turf/simulated/floor/plating, +/area/security/tactical) +"aYD" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, +/obj/machinery/camera/network/security{ + c_tag = "SEC - Armory Tactical"; + dir = 4 + }, +/obj/machinery/light{ + dir = 8; + icon_state = "tube1"; + pixel_y = 0 + }, +/obj/structure/cable/green{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/turf/simulated/floor/tiled/dark, +/area/security/tactical) +"aYE" = ( +/obj/machinery/atmospherics/unary/vent_scrubber/on{ + dir = 8 + }, +/turf/simulated/floor/tiled/dark, +/area/security/tactical) +"aYF" = ( +/obj/structure/table/rack{ + dir = 8; + layer = 2.6 + }, +/obj/structure/window/reinforced, +/obj/structure/window/reinforced{ + dir = 4; + health = 1e+006 + }, +/obj/effect/floor_decal/corner/green/full{ + dir = 4 + }, +/obj/item/weapon/storage/box/shotgunshells, +/obj/item/weapon/storage/box/shotgunshells, +/obj/item/weapon/storage/box/shotgunammo, +/obj/item/weapon/storage/box/shotgunammo, +/obj/item/ammo_magazine/m45, +/obj/item/ammo_magazine/m45, +/obj/item/ammo_magazine/m45, +/obj/item/ammo_magazine/m45, +/obj/item/ammo_magazine/m45, +/obj/item/ammo_magazine/m45, +/obj/item/ammo_magazine/m9mmt, +/obj/item/ammo_magazine/m9mmt, +/obj/item/ammo_magazine/m9mmt, +/obj/machinery/door/window/brigdoor/westleft{ + name = "Ammo"; + req_access = list(1) + }, +/obj/item/ammo_magazine/s45, +/obj/item/ammo_magazine/s45, +/obj/item/ammo_magazine/s45, +/turf/simulated/floor/tiled/dark, +/area/security/tactical) +"aYG" = ( +/obj/machinery/recharge_station, +/obj/machinery/light/small{ + dir = 8 + }, +/turf/simulated/floor/tiled/freezer, +/area/security/security_restroom) +"aYH" = ( +/obj/machinery/door/airlock{ + name = "Unit 2" + }, +/turf/simulated/floor/tiled/freezer, +/area/security/security_restroom) +"aYI" = ( +/obj/machinery/atmospherics/unary/vent_scrubber/on{ + dir = 4 + }, +/turf/simulated/floor/tiled/freezer, +/area/security/security_restroom) +"aYJ" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 6 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 10 + }, +/turf/simulated/floor/tiled/freezer, +/area/security/security_restroom) +"aYK" = ( +/obj/machinery/atmospherics/unary/vent_pump/on{ + dir = 8 + }, +/obj/machinery/firealarm{ + dir = 4; + pixel_x = 24 + }, +/obj/machinery/light{ + dir = 4 + }, +/turf/simulated/floor/tiled/freezer, +/area/security/security_restroom) +"aYL" = ( +/obj/structure/closet/wardrobe/red, +/obj/item/clothing/accessory/badge/holo, +/obj/item/clothing/accessory/badge/holo, +/obj/item/clothing/accessory/badge/holo/cord, +/obj/machinery/atmospherics/unary/vent_pump/on{ + dir = 4 + }, +/obj/machinery/camera/network/security{ + c_tag = "SEC - Locker Room"; + dir = 4 + }, +/obj/item/clothing/suit/storage/hazardvest/green, +/obj/item/clothing/suit/storage/hazardvest/green, +/obj/effect/floor_decal/borderfloor/corner{ + dir = 1 + }, +/obj/effect/floor_decal/corner/red/bordercorner{ + dir = 1 + }, +/turf/simulated/floor/tiled, +/area/security/security_lockerroom) +"aYM" = ( +/obj/machinery/hologram/holopad, +/obj/structure/cable/green{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 6 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 10 + }, +/obj/effect/floor_decal/industrial/outline/grey, +/turf/simulated/floor/tiled/monotile, +/area/security/security_lockerroom) +"aYN" = ( +/obj/structure/closet/secure_closet/security, +/obj/machinery/atmospherics/unary/vent_scrubber/on{ + dir = 8 + }, +/obj/item/clothing/glasses/hud/security, +/obj/structure/extinguisher_cabinet{ + pixel_x = 28; + pixel_y = 0 + }, +/obj/effect/floor_decal/borderfloor{ + dir = 4 + }, +/obj/effect/floor_decal/corner/red/border{ + dir = 4 + }, +/turf/simulated/floor/tiled, +/area/security/security_lockerroom) +"aYO" = ( +/obj/structure/bed/padded, +/obj/item/weapon/bedsheet/orange, +/obj/effect/floor_decal/borderfloor{ + dir = 8 + }, +/obj/effect/floor_decal/corner/red/border{ + dir = 8 + }, +/turf/simulated/floor/tiled, +/area/security/prison) +"aYP" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/turf/simulated/floor/tiled, +/area/security/prison) +"aYQ" = ( +/obj/machinery/computer/arcade, +/obj/machinery/light{ + dir = 8; + icon_state = "tube1"; + pixel_y = 0 + }, +/obj/effect/floor_decal/borderfloor{ + dir = 8 + }, +/obj/effect/floor_decal/corner/red/border{ + dir = 8 + }, +/turf/simulated/floor/tiled, +/area/security/prison) +"aYR" = ( +/obj/machinery/atmospherics/unary/vent_scrubber/on{ + dir = 4 + }, +/obj/item/weapon/stool, +/turf/simulated/floor/tiled, +/area/security/prison) +"aYS" = ( +/obj/structure/cable/green{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, +/turf/simulated/floor/tiled, +/area/security/prison) +"aYT" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 10 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 6 + }, +/turf/simulated/floor/tiled, +/area/security/prison) +"aYU" = ( +/obj/machinery/atmospherics/unary/vent_pump/on{ + dir = 8 + }, +/turf/simulated/floor/tiled, +/area/security/prison) +"aYV" = ( +/obj/machinery/portable_atmospherics/hydroponics, +/obj/machinery/light{ + dir = 4 + }, +/obj/effect/floor_decal/borderfloor{ + dir = 4 + }, +/obj/effect/floor_decal/corner/red/border{ + dir = 4 + }, +/turf/simulated/floor/tiled, +/area/security/prison) +"aYW" = ( +/obj/machinery/shower{ + dir = 4; + icon_state = "shower"; + pixel_x = 5; + pixel_y = -1 + }, +/obj/structure/curtain/open/shower/security, +/turf/simulated/floor/tiled/freezer, +/area/security/prison) +"aYX" = ( +/obj/structure/sink{ + dir = 4; + icon_state = "sink"; + pixel_x = 11; + pixel_y = 0 + }, +/obj/structure/mirror{ + pixel_x = 28 + }, +/obj/machinery/alarm{ + dir = 1; + pixel_y = -22 + }, +/turf/simulated/floor/tiled/freezer, +/area/security/prison) +"aYY" = ( +/obj/structure/table/rack{ + dir = 8; + layer = 2.6 + }, +/obj/structure/window/reinforced, +/obj/structure/window/reinforced{ + dir = 8 + }, +/obj/item/clothing/gloves/arm_guard/bulletproof, +/obj/item/clothing/shoes/leg_guard/bulletproof, +/obj/item/clothing/suit/armor/bulletproof/alt, +/obj/item/clothing/head/helmet/bulletproof, +/obj/machinery/door/window/brigdoor/eastright{ + name = "Security Checkpoint" + }, +/obj/effect/floor_decal/corner/green/full, +/turf/simulated/floor/tiled/dark, +/area/security/armoury) +"aYZ" = ( +/obj/effect/floor_decal/industrial/warning/corner, +/obj/machinery/alarm{ + dir = 1; + pixel_y = -22 + }, +/obj/machinery/light, +/turf/simulated/floor/tiled/dark, +/area/security/armoury) +"aZa" = ( +/obj/effect/floor_decal/industrial/warning, +/obj/item/device/radio/intercom{ + broadcasting = 0; + name = "Station Intercom (General)"; + pixel_x = 32; + pixel_y = -21 + }, +/turf/simulated/floor/tiled/dark, +/area/security/armoury) +"aZb" = ( +/obj/effect/floor_decal/industrial/warning/corner{ + icon_state = "warningcorner"; + dir = 8 + }, +/obj/structure/table/rack{ + dir = 8; + layer = 2.6 + }, +/obj/structure/window/reinforced, +/obj/structure/window/reinforced{ + dir = 4; + health = 1e+006 + }, +/obj/effect/floor_decal/corner/red/full{ + dir = 4 + }, +/obj/item/ammo_magazine/m9mmt/rubber, +/obj/item/ammo_magazine/m9mmt/rubber, +/obj/item/ammo_magazine/m9mmt/rubber, +/obj/item/ammo_magazine/m45/rubber, +/obj/item/ammo_magazine/m45/rubber, +/obj/item/ammo_magazine/m45/rubber, +/obj/item/ammo_magazine/m45/rubber, +/obj/item/ammo_magazine/m45/rubber, +/obj/item/ammo_magazine/m45/rubber, +/obj/machinery/door/window/brigdoor/westleft{ + name = "Ammo"; + req_access = list(1) + }, +/obj/item/ammo_magazine/s45/rubber, +/obj/item/ammo_magazine/s45/rubber, +/obj/item/ammo_magazine/s45/rubber, +/turf/simulated/floor/tiled/dark, +/area/security/armoury) +"aZc" = ( +/obj/effect/floor_decal/industrial/warning/corner, +/obj/machinery/atmospherics/unary/vent_pump/on{ + dir = 1 + }, +/obj/machinery/button/remote/blast_door{ + id = "Armoury"; + name = "Emergency Access"; + pixel_x = 0; + pixel_y = -24; + req_access = list(3) + }, +/obj/machinery/recharger/wallcharger{ + pixel_x = -24; + pixel_y = -4 + }, +/turf/simulated/floor/tiled/dark, +/area/security/armoury) +"aZd" = ( +/obj/effect/floor_decal/industrial/warning/cee{ + icon_state = "warningcee"; + dir = 8 + }, +/turf/simulated/floor/tiled/techmaint, +/area/security/armoury) +"aZe" = ( +/obj/effect/floor_decal/industrial/warning{ + icon_state = "warning"; + dir = 1 + }, +/obj/effect/floor_decal/industrial/warning, +/obj/structure/cable/green{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/turf/simulated/floor/tiled/techmaint, +/area/security/armoury) +"aZf" = ( +/obj/effect/floor_decal/industrial/warning/cee{ + icon_state = "warningcee"; + dir = 4 + }, +/turf/simulated/floor/tiled/techmaint, +/area/security/armoury) +"aZg" = ( +/obj/effect/floor_decal/industrial/warning/corner{ + icon_state = "warningcorner"; + dir = 8 + }, +/obj/machinery/alarm{ + dir = 1; + pixel_y = -22 + }, +/obj/machinery/recharger/wallcharger{ + pixel_x = 34; + pixel_y = -4 + }, +/turf/simulated/floor/tiled/dark, +/area/security/armoury) +"aZh" = ( +/obj/machinery/power/apc{ + dir = 2; + name = "south bump"; + pixel_y = -24 + }, +/obj/machinery/light_switch{ + pixel_x = 11; + pixel_y = -24 + }, +/obj/item/device/radio/intercom{ + broadcasting = 0; + name = "Station Intercom (General)"; + pixel_x = 32; + pixel_y = -21 + }, +/obj/structure/cable/green, +/obj/structure/table/steel, +/obj/machinery/recharger, +/turf/simulated/floor/tiled/dark, +/area/security/tactical) +"aZi" = ( +/obj/structure/table/rack{ + dir = 8; + layer = 2.6 + }, +/obj/structure/window/reinforced, +/obj/structure/window/reinforced{ + dir = 8 + }, +/obj/effect/floor_decal/corner/green/full, +/obj/machinery/door/window/brigdoor/northleft{ + name = "Ballistics"; + req_access = list(2) + }, +/obj/random/projectile/sec, +/turf/simulated/floor/tiled/dark, +/area/security/tactical) +"aZj" = ( +/obj/structure/table/rack{ + dir = 8; + layer = 2.6 + }, +/obj/structure/window/reinforced, +/obj/structure/window/reinforced{ + dir = 4; + health = 1e+006 + }, +/obj/effect/floor_decal/corner/green/full{ + dir = 4 + }, +/obj/machinery/door/window/brigdoor/northright{ + name = "Ballistics" + }, +/obj/random/projectile/sec, +/turf/simulated/floor/tiled/dark, +/area/security/tactical) +"aZk" = ( +/obj/structure/cable/green{ + d2 = 4; + icon_state = "0-4" + }, +/obj/machinery/power/apc{ + dir = 8; + name = "west bump"; + pixel_x = -24 + }, +/obj/machinery/light_switch{ + pixel_x = -36 + }, +/turf/simulated/floor/tiled/freezer, +/area/security/security_restroom) +"aZl" = ( +/obj/structure/cable/green{ + d1 = 2; + d2 = 8; + icon_state = "2-8" + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/turf/simulated/floor/tiled/freezer, +/area/security/security_restroom) +"aZm" = ( +/obj/effect/floor_decal/steeldecal/steel_decals4{ + dir = 10 + }, +/obj/effect/floor_decal/steeldecal/steel_decals4, +/turf/simulated/floor/tiled/freezer, +/area/security/security_restroom) +"aZn" = ( +/obj/machinery/door/firedoor/border_only, +/obj/machinery/door/airlock{ + name = "Security Restroom"; + req_access = list(1) + }, +/turf/simulated/floor/tiled/steel_grid, +/area/security/security_restroom) +"aZo" = ( +/obj/effect/floor_decal/steeldecal/steel_decals4{ + dir = 1 + }, +/obj/effect/floor_decal/steeldecal/steel_decals4{ + dir = 6 + }, +/turf/simulated/floor/tiled, +/area/security/security_lockerroom) +"aZp" = ( +/obj/structure/cable/green{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/turf/simulated/floor/tiled, +/area/security/security_lockerroom) +"aZq" = ( +/obj/structure/closet/secure_closet/security, +/obj/item/clothing/glasses/hud/security, +/obj/machinery/firealarm{ + dir = 4; + pixel_x = 24 + }, +/obj/effect/floor_decal/borderfloor{ + dir = 4 + }, +/obj/effect/floor_decal/corner/red/border{ + dir = 4 + }, +/turf/simulated/floor/tiled, +/area/security/security_lockerroom) +"aZr" = ( +/obj/machinery/atmospherics/unary/vent_pump/on{ + dir = 4 + }, +/turf/simulated/floor/tiled, +/area/security/range) +"aZs" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 6 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 10 + }, +/turf/simulated/floor/tiled, +/area/security/range) +"aZt" = ( +/obj/machinery/atmospherics/unary/vent_scrubber/on{ + dir = 8 + }, +/turf/simulated/floor/tiled, +/area/security/range) +"aZu" = ( +/obj/machinery/door/airlock/glass{ + name = "Brig Dormitories" + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/turf/simulated/floor/tiled/steel_grid, +/area/security/prison) +"aZv" = ( +/obj/machinery/disposal, +/obj/structure/disposalpipe/trunk, +/obj/effect/floor_decal/borderfloor{ + dir = 8 + }, +/obj/effect/floor_decal/corner/red/border{ + dir = 8 + }, +/turf/simulated/floor/tiled, +/area/security/prison) +"aZw" = ( +/obj/structure/cable/green{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/obj/machinery/hologram/holopad, +/obj/effect/floor_decal/industrial/outline/grey, +/turf/simulated/floor/tiled, +/area/security/prison) +"aZx" = ( +/obj/structure/bed/chair, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/turf/simulated/floor/tiled, +/area/security/prison) +"aZy" = ( +/obj/machinery/portable_atmospherics/hydroponics, +/obj/machinery/status_display{ + density = 0; + layer = 4; + pixel_x = 32; + pixel_y = 0 + }, +/obj/effect/floor_decal/borderfloor{ + dir = 4 + }, +/obj/effect/floor_decal/corner/red/border{ + dir = 4 + }, +/obj/effect/floor_decal/borderfloor/corner2{ + dir = 5 + }, +/obj/effect/floor_decal/corner/red/bordercorner2{ + dir = 5 + }, +/turf/simulated/floor/tiled, +/area/security/prison) +"aZz" = ( +/obj/machinery/door/firedoor/border_only, +/obj/machinery/door/airlock{ + name = "Restroom" + }, +/turf/simulated/floor/tiled/steel_grid, +/area/security/prison) +"aZA" = ( +/obj/structure/sign/warning/secure_area/armory, +/turf/simulated/wall/r_wall, +/area/security/armoury) +"aZB" = ( +/obj/machinery/door/firedoor/border_only, +/obj/machinery/door/airlock/highsecurity{ + name = "Secure Armoury Section"; + req_access = list(3) + }, +/turf/simulated/floor/tiled/techmaint, +/area/security/armoury) +"aZC" = ( +/obj/effect/floor_decal/industrial/hatch/yellow, +/obj/machinery/door/blast/regular{ + id = "Armoury"; + name = "Emergency Access" + }, +/turf/simulated/floor/tiled/dark, +/area/security/armoury) +"aZD" = ( +/obj/effect/floor_decal/industrial/hatch/yellow, +/obj/structure/cable/green{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/obj/machinery/door/blast/regular{ + id = "Armoury"; + name = "Emergency Access" + }, +/turf/simulated/floor/tiled/dark, +/area/security/armoury) +"aZE" = ( +/obj/structure/toilet{ + dir = 4 + }, +/obj/machinery/light/small{ + brightness_color = "#DA0205"; + brightness_power = 1; + brightness_range = 5; + dir = 8 + }, +/turf/simulated/floor/tiled/freezer, +/area/security/security_restroom) +"aZF" = ( +/obj/machinery/door/airlock{ + name = "Unit 1" + }, +/turf/simulated/floor/tiled/freezer, +/area/security/security_restroom) +"aZG" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/obj/structure/cable/green{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/obj/effect/floor_decal/steeldecal/steel_decals4{ + dir = 8 + }, +/obj/effect/floor_decal/steeldecal/steel_decals4{ + dir = 5 + }, +/turf/simulated/floor/tiled/freezer, +/area/security/security_restroom) +"aZH" = ( +/obj/structure/table/standard, +/obj/item/weapon/towel{ + color = "#ff0000"; + name = "red towel" + }, +/obj/item/weapon/towel{ + color = "#ff0000"; + name = "red towel" + }, +/obj/item/weapon/towel{ + color = "#ff0000"; + name = "red towel" + }, +/obj/item/weapon/towel{ + color = "#ff0000"; + name = "red towel" + }, +/obj/item/weapon/towel{ + color = "#ff0000"; + name = "red towel" + }, +/obj/item/weapon/soap/nanotrasen, +/obj/item/weapon/soap/nanotrasen, +/obj/item/device/radio/intercom{ + name = "Station Intercom (General)"; + pixel_y = -21 + }, +/obj/structure/extinguisher_cabinet{ + pixel_x = 28; + pixel_y = 0 + }, +/turf/simulated/floor/tiled/freezer, +/area/security/security_restroom) +"aZI" = ( +/obj/item/device/radio/intercom{ + name = "Station Intercom (General)"; + pixel_y = -21 + }, +/obj/effect/floor_decal/borderfloor/corner{ + dir = 8 + }, +/obj/effect/floor_decal/corner/red/bordercorner{ + dir = 8 + }, +/turf/simulated/floor/tiled, +/area/security/security_lockerroom) +"aZJ" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/obj/structure/cable/green{ + d1 = 2; + d2 = 4; + icon_state = "2-4" + }, +/obj/structure/cable/green{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/obj/effect/floor_decal/steeldecal/steel_decals4{ + dir = 8 + }, +/obj/effect/floor_decal/steeldecal/steel_decals4{ + dir = 5 + }, +/turf/simulated/floor/tiled, +/area/security/security_lockerroom) +"aZK" = ( +/obj/structure/closet/secure_closet/security, +/obj/structure/cable/green{ + d2 = 8; + icon_state = "0-8" + }, +/obj/machinery/power/apc{ + dir = 2; + name = "south bump"; + pixel_y = -24 + }, +/obj/machinery/light_switch{ + pixel_x = 12; + pixel_y = -24 + }, +/obj/item/clothing/glasses/hud/security, +/obj/item/device/radio/intercom/department/security{ + dir = 8; + icon_override = "secintercom"; + pixel_x = 21 + }, +/obj/effect/floor_decal/borderfloor{ + dir = 4 + }, +/obj/effect/floor_decal/corner/red/border{ + dir = 4 + }, +/turf/simulated/floor/tiled, +/area/security/security_lockerroom) +"aZL" = ( +/obj/machinery/light{ + icon_state = "tube1"; + dir = 8 + }, +/obj/effect/floor_decal/borderfloor{ + dir = 8 + }, +/obj/effect/floor_decal/corner/red/border{ + dir = 8 + }, +/turf/simulated/floor/tiled, +/area/security/range) +"aZM" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/machinery/hologram/holopad, +/obj/effect/floor_decal/industrial/outline/grey, +/turf/simulated/floor/tiled/monotile, +/area/security/range) +"aZN" = ( +/obj/machinery/light{ + dir = 4 + }, +/obj/effect/floor_decal/borderfloor{ + dir = 4 + }, +/obj/effect/floor_decal/corner/red/border{ + dir = 4 + }, +/turf/simulated/floor/tiled, +/area/security/range) +"aZO" = ( +/obj/machinery/camera/network/research{ + c_tag = "SCI - Toxins Test Chamber Port"; + dir = 4; + network = list("Research","Toxins Test Area") + }, +/obj/machinery/light{ + dir = 8 + }, +/turf/simulated/floor/tiled/airless, +/area/rnd/test_area) +"aZP" = ( +/obj/item/device/radio/beacon, +/turf/simulated/floor/airless, +/area/rnd/test_area) +"aZQ" = ( +/obj/machinery/light{ + dir = 4 + }, +/obj/machinery/camera/network/research{ + c_tag = "SCI - Toxins Test Chamber Starboard"; + dir = 8; + network = list("Research","Toxins Test Area") + }, +/turf/simulated/floor/tiled/airless, +/area/rnd/test_area) +"aZR" = ( +/obj/structure/cable/green{ + d2 = 2; + icon_state = "0-2" + }, +/obj/machinery/door/firedoor/border_only, +/obj/machinery/door/blast/regular{ + density = 0; + icon_state = "pdoor0"; + id = "Prison Gate"; + name = "Communal Brig Blast Door"; + opacity = 0 + }, +/obj/effect/wingrille_spawn/reinforced, +/turf/simulated/floor/plating, +/area/security/prison) +"aZS" = ( +/obj/structure/table/steel, +/obj/item/weapon/newspaper, +/obj/item/device/tape, +/obj/item/device/taperecorder{ + pixel_x = -4; + pixel_y = 2 + }, +/obj/effect/floor_decal/industrial/warning{ + icon_state = "warning"; + dir = 8 + }, +/turf/simulated/floor/tiled, +/area/security/prison) +"aZT" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 5 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 5 + }, +/turf/simulated/floor/tiled, +/area/security/prison) +"aZU" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 10 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 10 + }, +/obj/effect/floor_decal/borderfloor/corner{ + dir = 4 + }, +/obj/effect/floor_decal/corner/red/bordercorner{ + dir = 4 + }, +/turf/simulated/floor/tiled, +/area/security/prison) +"aZV" = ( +/obj/machinery/vending/wallmed1{ + pixel_y = 32 + }, +/obj/effect/floor_decal/borderfloor{ + dir = 1 + }, +/obj/effect/floor_decal/corner/red/border{ + dir = 1 + }, +/turf/simulated/floor/tiled, +/area/security/prison) +"aZW" = ( +/obj/machinery/atmospherics/unary/vent_pump/on, +/obj/structure/disposalpipe/segment, +/obj/effect/floor_decal/borderfloor/corner{ + dir = 1 + }, +/obj/effect/floor_decal/corner/red/bordercorner{ + dir = 1 + }, +/turf/simulated/floor/tiled, +/area/security/prison) +"aZX" = ( +/obj/structure/cable/green{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/obj/structure/table/steel, +/obj/item/weapon/paper_bin, +/obj/item/weapon/pen, +/turf/simulated/floor/tiled, +/area/security/prison) +"aZY" = ( +/turf/simulated/floor/tiled/dark, +/area/rnd/research/firstdeck/hallway) +"aZZ" = ( +/obj/machinery/washing_machine, +/turf/simulated/floor/tiled, +/area/security/prison) +"baa" = ( +/obj/machinery/portable_atmospherics/powered/scrubber/huge, +/obj/effect/floor_decal/industrial/warning/cee{ + icon_state = "warningcee"; + dir = 8 + }, +/turf/simulated/floor/tiled/dark, +/area/security/prison) +"bab" = ( +/obj/machinery/portable_atmospherics/powered/scrubber/huge, +/obj/effect/floor_decal/industrial/warning/cee{ + icon_state = "warningcee"; + dir = 4 + }, +/turf/simulated/floor/tiled/dark, +/area/security/prison) +"bac" = ( +/obj/machinery/atmospherics/unary/vent_scrubber/on, +/turf/simulated/floor/tiled, +/area/security/prison) +"bad" = ( +/obj/structure/cryofeed{ + dir = 2 + }, +/obj/structure/window/reinforced{ + dir = 4; + health = 1e+006 + }, +/obj/structure/window/reinforced{ + dir = 8 + }, +/obj/structure/window/reinforced{ + dir = 1 + }, +/obj/effect/floor_decal/industrial/warning/cee{ + icon_state = "warningcee"; + dir = 1 + }, +/obj/machinery/camera/network/prison{ + c_tag = "SEC - Common Brig 2"; + dir = 8 + }, +/turf/simulated/floor/tiled/techfloor/grid, +/area/security/prison) +"bae" = ( +/turf/simulated/wall/r_wall, +/area/security/security_equiptment_storage) +"baf" = ( +/obj/machinery/flasher/portable, +/obj/effect/floor_decal/industrial/hatch/yellow, +/turf/simulated/floor/tiled, +/area/security/security_equiptment_storage) +"bag" = ( +/obj/machinery/flasher/portable, +/obj/effect/floor_decal/industrial/hatch/yellow, +/obj/machinery/atmospherics/unary/vent_scrubber/on, +/obj/machinery/camera/network/security{ + c_tag = "SEC - Equipment Storage" + }, +/turf/simulated/floor/tiled, +/area/security/security_equiptment_storage) +"bah" = ( +/obj/effect/floor_decal/industrial/warning{ + icon_state = "warning"; + dir = 9 + }, +/turf/simulated/floor/tiled, +/area/security/security_equiptment_storage) +"bai" = ( +/obj/effect/floor_decal/industrial/warning/corner{ + dir = 1 + }, +/obj/machinery/alarm{ + pixel_y = 22 + }, +/turf/simulated/floor/tiled, +/area/security/security_equiptment_storage) +"baj" = ( +/obj/machinery/power/apc{ + dir = 4; + name = "east bump"; + pixel_x = 24 + }, +/obj/machinery/light_switch{ + dir = 2; + name = "light switch "; + pixel_x = 36; + pixel_y = 0 + }, +/obj/structure/cable/green{ + d2 = 2; + icon_state = "0-2" + }, +/obj/machinery/firealarm{ + pixel_y = 24 + }, +/turf/simulated/floor/tiled, +/area/security/security_equiptment_storage) +"bak" = ( +/turf/simulated/wall, +/area/security/security_equiptment_storage) +"bal" = ( +/obj/effect/floor_decal/industrial/warning/cee{ + icon_state = "warningcee"; + dir = 8 + }, +/turf/simulated/floor/tiled/techmaint, +/area/security/brig) +"bam" = ( +/obj/effect/floor_decal/industrial/warning, +/obj/effect/floor_decal/industrial/warning{ + icon_state = "warning"; + dir = 1 + }, +/obj/structure/cable/green{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/turf/simulated/floor/tiled/techmaint, +/area/security/brig) +"ban" = ( +/obj/effect/floor_decal/industrial/warning/cee{ + icon_state = "warningcee"; + dir = 4 + }, +/obj/machinery/button/remote/blast_door{ + id = "Armoury"; + name = "Emergency Access"; + pixel_x = 24; + pixel_y = 0; + req_access = list(3) + }, +/turf/simulated/floor/tiled/techmaint, +/area/security/brig) +"bao" = ( +/turf/simulated/wall, +/area/security/evidence_storage) +"bap" = ( +/obj/structure/closet{ + name = "Evidence Closet" + }, +/obj/effect/floor_decal/industrial/outline/grey, +/turf/simulated/floor/tiled/dark, +/area/security/evidence_storage) +"baq" = ( +/obj/structure/closet{ + name = "Evidence Closet" + }, +/obj/effect/floor_decal/industrial/outline/grey, +/obj/structure/cable/green{ + d2 = 2; + icon_state = "0-2" + }, +/obj/machinery/power/apc{ + dir = 1; + name = "north bump"; + pixel_x = 0; + pixel_y = 24 + }, +/obj/machinery/light_switch{ + pixel_x = 11; + pixel_y = 24 + }, +/turf/simulated/floor/tiled/dark, +/area/security/evidence_storage) +"bar" = ( +/obj/structure/filingcabinet/filingcabinet, +/obj/machinery/light/small{ + dir = 1 + }, +/turf/simulated/floor/tiled/dark, +/area/security/evidence_storage) +"bas" = ( +/obj/structure/closet{ + name = "Evidence Closet" + }, +/obj/effect/floor_decal/industrial/outline/grey, +/obj/machinery/atmospherics/unary/vent_pump/on, +/obj/machinery/firealarm{ + dir = 2; + pixel_y = 24 + }, +/turf/simulated/floor/tiled/dark, +/area/security/evidence_storage) +"bat" = ( +/obj/structure/closet{ + name = "Evidence Closet" + }, +/obj/effect/floor_decal/industrial/outline/grey, +/obj/structure/extinguisher_cabinet{ + pixel_y = 30 + }, +/turf/simulated/floor/tiled/dark, +/area/security/evidence_storage) +"bau" = ( +/turf/simulated/wall/r_wall, +/area/security/evidence_storage) +"bav" = ( +/obj/structure/cable/green{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/obj/machinery/door/firedoor/border_only, +/obj/machinery/door/airlock{ + name = "Security Restroom" + }, +/turf/simulated/floor/tiled/steel_grid, +/area/security/security_restroom) +"baw" = ( +/turf/simulated/wall, +/area/security/security_lockerroom) +"bax" = ( +/obj/structure/cable/green{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/obj/machinery/door/firedoor/border_only, +/obj/machinery/door/airlock/security{ + name = "Security Locker Room"; + req_access = list(1) + }, +/turf/simulated/floor/tiled/steel_grid, +/area/security/security_lockerroom) +"bay" = ( +/obj/machinery/status_display{ + density = 0; + layer = 4; + pixel_x = -32; + pixel_y = 0 + }, +/obj/machinery/camera/network/security{ + c_tag = "SEC - Firing Range"; + dir = 4 + }, +/obj/effect/floor_decal/borderfloor{ + dir = 8 + }, +/obj/effect/floor_decal/corner/red/border{ + dir = 8 + }, +/turf/simulated/floor/tiled, +/area/security/range) +"baz" = ( +/obj/effect/floor_decal/industrial/hatch/yellow, +/turf/simulated/floor/tiled, +/area/security/range) +"baA" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/turf/simulated/floor/tiled, +/area/security/range) +"baB" = ( +/obj/machinery/ai_status_display{ + pixel_x = 32; + pixel_y = 0 + }, +/obj/effect/floor_decal/borderfloor{ + dir = 4 + }, +/obj/effect/floor_decal/corner/red/border{ + dir = 4 + }, +/turf/simulated/floor/tiled, +/area/security/range) +"baC" = ( +/obj/effect/floor_decal/industrial/warning{ + dir = 10 + }, +/turf/simulated/floor/tiled/airless, +/area/rnd/test_area) +"baD" = ( +/turf/simulated/floor/airless, +/area/rnd/test_area) +"baE" = ( +/obj/effect/floor_decal/industrial/warning{ + dir = 6 + }, +/turf/simulated/floor/tiled/airless, +/area/rnd/test_area) +"baF" = ( +/obj/structure/cable/green{ + d2 = 2; + icon_state = "0-2" + }, +/obj/structure/cable/green, +/obj/structure/cable/green{ + d2 = 4; + icon_state = "0-4" + }, +/obj/machinery/door/firedoor/glass, +/obj/machinery/door/blast/regular{ + density = 0; + icon_state = "pdoor0"; + id = "Prison Gate"; + name = "Communal Brig Blast Door"; + opacity = 0 + }, +/obj/effect/wingrille_spawn/reinforced, +/turf/simulated/floor/plating, +/area/security/prison) +"baG" = ( +/obj/structure/table/steel, +/obj/structure/cable/green{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/obj/item/weapon/book/codex/corp_regs, +/obj/item/weapon/dice, +/obj/effect/floor_decal/industrial/warning{ + icon_state = "warning"; + dir = 8 + }, +/turf/simulated/floor/tiled, +/area/security/prison) +"baH" = ( +/obj/structure/cable/green{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/obj/machinery/atmospherics/unary/outlet_injector{ + dir = 2; + frequency = 1443; + icon_state = "on"; + id = "air_in"; + use_power = 1 + }, +/obj/item/weapon/stool, +/turf/simulated/floor/tiled, +/area/security/prison) +"baI" = ( +/obj/structure/cable/green{ + d1 = 2; + d2 = 8; + icon_state = "2-8" + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 5 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 5 + }, +/turf/simulated/floor/tiled, +/area/security/prison) +"baJ" = ( +/obj/machinery/flasher{ + id = "permflash"; + name = "Floor mounted flash"; + pixel_x = 0 + }, +/obj/effect/floor_decal/industrial/outline/yellow, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, +/turf/simulated/floor/tiled, +/area/security/prison) +"baK" = ( +/obj/machinery/atmospherics/pipe/manifold/hidden/supply, +/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{ + dir = 1 + }, +/obj/structure/disposalpipe/segment, +/turf/simulated/floor/tiled, +/area/security/prison) +"baL" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, +/turf/simulated/floor/tiled, +/area/security/prison) +"baM" = ( +/obj/structure/cable/green{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/obj/structure/bed/chair{ + dir = 1 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, +/turf/simulated/floor/tiled, +/area/security/prison) +"baN" = ( +/obj/machinery/atmospherics/pipe/manifold/hidden/supply, +/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers, +/obj/machinery/flasher{ + id = "permflash"; + name = "Floor mounted flash"; + pixel_x = 0 + }, +/obj/effect/floor_decal/industrial/outline/yellow, +/turf/simulated/floor/tiled, +/area/security/prison) +"baO" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{ + dir = 1 + }, +/turf/simulated/floor/tiled, +/area/security/prison) +"baP" = ( +/obj/machinery/flasher{ + id = "permflash"; + name = "Floor mounted flash"; + pixel_x = 0 + }, +/obj/effect/floor_decal/industrial/outline/yellow, +/obj/machinery/atmospherics/pipe/manifold/hidden/supply{ + dir = 1 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, +/turf/simulated/floor/tiled, +/area/security/prison) +"baQ" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 9 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 10 + }, +/turf/simulated/floor/tiled, +/area/security/prison) +"baR" = ( +/obj/machinery/cryopod{ + dir = 2 + }, +/obj/effect/floor_decal/industrial/warning{ + dir = 4 + }, +/obj/effect/floor_decal/industrial/warning{ + icon_state = "warning"; + dir = 8 + }, +/turf/simulated/floor/tiled/techfloor/grid, +/area/security/prison) +"baS" = ( +/obj/machinery/deployable/barrier, +/obj/effect/floor_decal/industrial/hatch/yellow, +/turf/simulated/floor/tiled, +/area/security/security_equiptment_storage) +"baT" = ( +/obj/machinery/deployable/barrier, +/obj/effect/floor_decal/industrial/hatch/yellow, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 6 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 5 + }, +/turf/simulated/floor/tiled, +/area/security/security_equiptment_storage) +"baU" = ( +/obj/effect/floor_decal/industrial/warning{ + icon_state = "warning"; + dir = 8 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, +/turf/simulated/floor/tiled, +/area/security/security_equiptment_storage) +"baV" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, +/turf/simulated/floor/tiled, +/area/security/security_equiptment_storage) +"baW" = ( +/obj/structure/cable/green{ + d1 = 1; + d2 = 4; + icon_state = "1-4" + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, +/obj/effect/floor_decal/steeldecal/steel_decals4, +/obj/effect/floor_decal/steeldecal/steel_decals4{ + dir = 10 + }, +/turf/simulated/floor/tiled, +/area/security/security_equiptment_storage) +"baX" = ( +/obj/structure/stairs/west, +/turf/simulated/floor/tiled/dark, +/area/rnd/research/firstdeck/hallway) +"baY" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, +/obj/structure/cable/green{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/obj/effect/floor_decal/steeldecal/steel_decals4{ + dir = 6 + }, +/obj/effect/floor_decal/steeldecal/steel_decals4{ + dir = 1 + }, +/turf/simulated/floor/tiled, +/area/security/brig) +"baZ" = ( +/obj/structure/cable/green{ + d1 = 2; + d2 = 8; + icon_state = "2-8" + }, +/obj/structure/cable/green{ + d1 = 2; + d2 = 4; + icon_state = "2-4" + }, +/obj/structure/cable/green{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/obj/machinery/atmospherics/pipe/manifold4w/hidden/supply, +/obj/machinery/atmospherics/pipe/manifold4w/hidden/scrubbers, +/turf/simulated/floor/tiled, +/area/security/brig) +"bba" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, +/obj/structure/cable/green{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/obj/effect/floor_decal/steeldecal/steel_decals4{ + dir = 10 + }, +/obj/effect/floor_decal/steeldecal/steel_decals4, +/turf/simulated/floor/tiled, +/area/security/brig) +"bbb" = ( +/obj/machinery/door/firedoor/border_only, +/obj/machinery/door/airlock/security{ + name = "Evidence Storage"; + req_access = list(1) + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, +/obj/structure/cable/green{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/turf/simulated/floor/tiled/techmaint, +/area/security/evidence_storage) +"bbc" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, +/obj/structure/cable/green{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/obj/effect/floor_decal/steeldecal/steel_decals4{ + dir = 1 + }, +/obj/effect/floor_decal/steeldecal/steel_decals4{ + dir = 6 + }, +/turf/simulated/floor/tiled/dark, +/area/security/evidence_storage) +"bbd" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 10 + }, +/obj/structure/cable/green{ + d1 = 1; + d2 = 8; + icon_state = "1-8" + }, +/obj/effect/landmark{ + name = "blobstart" + }, +/turf/simulated/floor/tiled/dark, +/area/security/evidence_storage) +"bbe" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/turf/simulated/floor/tiled/dark, +/area/security/evidence_storage) +"bbf" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 9 + }, +/turf/simulated/floor/tiled/dark, +/area/security/evidence_storage) +"bbg" = ( +/obj/machinery/camera/network/security{ + c_tag = "SEC - Evidence Storage"; + dir = 8 + }, +/turf/simulated/floor/tiled/dark, +/area/security/evidence_storage) +"bbh" = ( +/obj/machinery/vending/cigarette, +/obj/effect/floor_decal/borderfloor{ + dir = 9 + }, +/obj/effect/floor_decal/corner/red/border{ + dir = 9 + }, +/turf/simulated/floor/tiled, +/area/security/main) +"bbi" = ( +/obj/machinery/firealarm{ + dir = 2; + pixel_y = 24 + }, +/obj/machinery/vending/snack, +/obj/effect/floor_decal/borderfloor{ + dir = 1 + }, +/obj/effect/floor_decal/corner/red/border{ + dir = 1 + }, +/turf/simulated/floor/tiled, +/area/security/main) +"bbj" = ( +/obj/machinery/computer/security/telescreen/entertainment{ + icon_state = "frame"; + pixel_x = 0; + pixel_y = 32 + }, +/obj/machinery/vending/cola, +/obj/effect/floor_decal/borderfloor/corner{ + dir = 1 + }, +/obj/effect/floor_decal/corner/red/bordercorner{ + dir = 1 + }, +/turf/simulated/floor/tiled, +/area/security/main) +"bbk" = ( +/obj/structure/cable/green{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/obj/effect/floor_decal/steeldecal/steel_decals4{ + dir = 4 + }, +/obj/effect/floor_decal/steeldecal/steel_decals4{ + dir = 9 + }, +/turf/simulated/floor/tiled, +/area/security/main) +"bbl" = ( +/obj/machinery/alarm{ + pixel_y = 22 + }, +/obj/machinery/camera/network/security{ + c_tag = "SEC - Briefing"; + dir = 2 + }, +/obj/effect/floor_decal/borderfloor/corner{ + dir = 4 + }, +/obj/effect/floor_decal/corner/red/bordercorner{ + dir = 4 + }, +/turf/simulated/floor/tiled, +/area/security/main) +"bbm" = ( +/obj/structure/sign/goldenplaque{ + pixel_y = 32 + }, +/obj/effect/floor_decal/borderfloor{ + dir = 1 + }, +/obj/effect/floor_decal/corner/red/border{ + dir = 1 + }, +/turf/simulated/floor/tiled, +/area/security/main) +"bbn" = ( +/obj/machinery/atmospherics/unary/vent_scrubber/on, +/obj/item/device/radio/intercom{ + dir = 1; + name = "Station Intercom (General)"; + pixel_y = 21 + }, +/obj/effect/floor_decal/borderfloor/corner{ + dir = 1 + }, +/obj/effect/floor_decal/corner/red/bordercorner{ + dir = 1 + }, +/turf/simulated/floor/tiled, +/area/security/main) +"bbo" = ( +/obj/item/device/radio/intercom/department/security{ + dir = 8; + icon_override = "secintercom"; + pixel_x = 21 + }, +/obj/structure/table/standard, +/obj/machinery/chemical_dispenser/bar_soft/full, +/obj/item/weapon/storage/box/glasses/square, +/obj/effect/floor_decal/borderfloor{ + dir = 4 + }, +/obj/effect/floor_decal/corner/red/border{ + dir = 4 + }, +/turf/simulated/floor/tiled, +/area/security/main) +"bbp" = ( +/turf/simulated/wall, +/area/security/range) +"bbq" = ( +/obj/structure/extinguisher_cabinet{ + pixel_x = -28; + pixel_y = 0 + }, +/obj/effect/floor_decal/borderfloor{ + dir = 8 + }, +/obj/effect/floor_decal/corner/red/border{ + dir = 8 + }, +/turf/simulated/floor/tiled, +/area/security/range) +"bbr" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/turf/simulated/floor/tiled, +/area/security/range) +"bbs" = ( +/obj/machinery/alarm{ + dir = 8; + pixel_x = 22; + pixel_y = 0 + }, +/obj/effect/floor_decal/borderfloor{ + dir = 4 + }, +/obj/effect/floor_decal/corner/red/border{ + dir = 4 + }, +/turf/simulated/floor/tiled, +/area/security/range) +"bbt" = ( +/obj/structure/cable/green, +/obj/machinery/door/firedoor/border_only, +/obj/machinery/door/blast/regular{ + density = 0; + icon_state = "pdoor0"; + id = "Prison Gate"; + name = "Communal Brig Blast Door"; + opacity = 0 + }, +/obj/effect/wingrille_spawn/reinforced, +/turf/simulated/floor/plating, +/area/security/prison) +"bbu" = ( +/obj/structure/reagent_dispensers/water_cooler/full, +/obj/effect/floor_decal/industrial/warning{ + icon_state = "warning"; + dir = 8 + }, +/turf/simulated/floor/tiled, +/area/security/prison) +"bbv" = ( +/obj/machinery/atmospherics/pipe/simple/hidden, +/turf/simulated/floor/tiled, +/area/security/prison) +"bbw" = ( +/obj/effect/floor_decal/borderfloor/corner, +/obj/effect/floor_decal/corner/red/bordercorner, +/turf/simulated/floor/tiled, +/area/security/prison) +"bbx" = ( +/obj/machinery/atmospherics/unary/vent_scrubber/on{ + dir = 1 + }, +/obj/machinery/computer/security/telescreen/entertainment{ + icon_state = "frame"; + pixel_x = 0; + pixel_y = -32 + }, +/obj/machinery/light, +/obj/structure/disposalpipe/segment{ + dir = 1; + icon_state = "pipe-c" + }, +/obj/effect/floor_decal/borderfloor, +/obj/effect/floor_decal/corner/red/border, +/turf/simulated/floor/tiled, +/area/security/prison) +"bby" = ( +/obj/machinery/camera/network/prison{ + c_tag = "SEC - Common Brig 1"; + dir = 1 + }, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/effect/floor_decal/borderfloor/corner{ + dir = 8 + }, +/obj/effect/floor_decal/corner/red/bordercorner{ + dir = 8 + }, +/turf/simulated/floor/tiled, +/area/security/prison) +"bbz" = ( +/obj/structure/cable/green{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/turf/simulated/floor/tiled, +/area/security/prison) +"bbA" = ( +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/turf/simulated/floor/tiled, +/area/security/prison) +"bbB" = ( +/obj/item/device/radio/intercom{ + desc = "Talk... listen through this."; + dir = 2; + name = "Station Intercom (Brig Radio)"; + pixel_x = 0; + pixel_y = -21; + wires = 7 + }, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/effect/floor_decal/industrial/warning/corner, +/turf/simulated/floor/tiled, +/area/security/prison) +"bbC" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/obj/effect/floor_decal/industrial/warning, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/turf/simulated/floor/tiled, +/area/security/prison) +"bbD" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/effect/floor_decal/industrial/warning, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/turf/simulated/floor/tiled, +/area/security/prison) +"bbE" = ( +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/effect/floor_decal/industrial/warning/corner{ + dir = 8 + }, +/turf/simulated/floor/tiled, +/area/security/prison) +"bbF" = ( +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/machinery/atmospherics/unary/vent_pump/on{ + dir = 1 + }, +/turf/simulated/floor/tiled, +/area/security/prison) +"bbG" = ( +/obj/machinery/light{ + dir = 4 + }, +/obj/structure/disposalpipe/segment{ + dir = 2; + icon_state = "pipe-c" + }, +/obj/machinery/computer/cryopod{ + density = 0; + layer = 3.3; + pixel_x = 32; + pixel_y = 0 + }, +/obj/effect/floor_decal/borderfloor{ + dir = 4 + }, +/obj/effect/floor_decal/corner/red/border{ + dir = 4 + }, +/obj/effect/floor_decal/borderfloor/corner2{ + dir = 6 + }, +/obj/effect/floor_decal/corner/red/bordercorner2{ + dir = 6 + }, +/turf/simulated/floor/tiled, +/area/security/prison) +"bbH" = ( +/obj/machinery/deployable/barrier, +/obj/effect/floor_decal/industrial/hatch/yellow, +/obj/machinery/atmospherics/unary/vent_pump/on{ + dir = 1 + }, +/obj/item/device/radio/intercom/department/security{ + dir = 1; + pixel_y = -21 + }, +/turf/simulated/floor/tiled, +/area/security/security_equiptment_storage) +"bbI" = ( +/obj/effect/floor_decal/industrial/warning{ + dir = 10 + }, +/turf/simulated/floor/tiled, +/area/security/security_equiptment_storage) +"bbJ" = ( +/obj/structure/table/rack, +/obj/structure/window/reinforced{ + dir = 8 + }, +/obj/structure/window/reinforced, +/obj/machinery/door/window/brigdoor/northleft{ + name = "Weapons locker"; + req_access = list(2) + }, +/obj/effect/floor_decal/industrial/outline/yellow, +/obj/structure/window/reinforced{ + dir = 4; + health = 1e+006 + }, +/obj/item/clothing/suit/storage/vest/heavy/officer, +/obj/item/clothing/suit/storage/vest/heavy/officer, +/obj/item/clothing/suit/storage/vest/heavy/officer, +/obj/item/clothing/suit/storage/vest/heavy/officer, +/obj/machinery/light, +/turf/simulated/floor/tiled, +/area/security/security_equiptment_storage) +"bbK" = ( +/obj/structure/window/reinforced, +/obj/structure/window/reinforced{ + dir = 4; + health = 1e+006 + }, +/obj/structure/table/rack, +/obj/machinery/door/window/brigdoor/northleft{ + name = "Weapons locker"; + req_access = list(2) + }, +/obj/effect/floor_decal/industrial/outline/yellow, +/obj/structure/window/reinforced{ + dir = 8 + }, +/obj/item/weapon/gun/projectile/colt/detective, +/obj/item/weapon/gun/projectile/colt/detective, +/obj/item/weapon/gun/projectile/colt/detective, +/obj/item/weapon/gun/projectile/colt/detective, +/obj/structure/cable/green{ + d1 = 2; + d2 = 4; + icon_state = "2-4" + }, +/turf/simulated/floor/tiled, +/area/security/security_equiptment_storage) +"bbL" = ( +/obj/machinery/door/firedoor/border_only, +/obj/structure/cable/green{ + d2 = 8; + icon_state = "0-8" + }, +/obj/structure/cable/green, +/obj/effect/wingrille_spawn/reinforced, +/turf/simulated/floor/plating, +/area/security/security_equiptment_storage) +"bbM" = ( +/obj/machinery/atmospherics/unary/vent_pump/on{ + dir = 4 + }, +/obj/effect/floor_decal/borderfloor/corner{ + dir = 8 + }, +/obj/effect/floor_decal/corner/red/bordercorner{ + dir = 8 + }, +/turf/simulated/floor/tiled, +/area/security/brig) +"bbN" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/obj/machinery/atmospherics/pipe/manifold/hidden/supply{ + dir = 4 + }, +/obj/machinery/hologram/holopad, +/obj/structure/cable/green{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/turf/simulated/floor/tiled/monotile, +/area/security/brig) +"bbO" = ( +/obj/machinery/alarm{ + dir = 8; + pixel_x = 22; + pixel_y = 0 + }, +/obj/effect/floor_decal/borderfloor/corner, +/obj/effect/floor_decal/corner/red/bordercorner, +/turf/simulated/floor/tiled, +/area/security/brig) +"bbP" = ( +/obj/structure/table/standard, +/obj/item/weapon/storage/laundry_basket, +/turf/simulated/floor/tiled/dark, +/area/security/evidence_storage) +"bbQ" = ( +/obj/machinery/atmospherics/unary/vent_scrubber/on{ + dir = 1 + }, +/obj/machinery/alarm{ + dir = 1; + pixel_y = -22 + }, +/turf/simulated/floor/tiled/dark, +/area/security/evidence_storage) +"bbR" = ( +/obj/effect/floor_decal/steeldecal/steel_decals4{ + dir = 8 + }, +/obj/effect/floor_decal/steeldecal/steel_decals4{ + dir = 8 + }, +/obj/effect/floor_decal/steeldecal/steel_decals4{ + dir = 5 + }, +/turf/simulated/floor/tiled/dark, +/area/security/evidence_storage) +"bbS" = ( +/obj/structure/closet{ + name = "Evidence Closet" + }, +/obj/effect/floor_decal/industrial/outline/grey, +/obj/item/device/radio/intercom{ + name = "Station Intercom (General)"; + pixel_y = -21 + }, +/turf/simulated/floor/tiled/dark, +/area/security/evidence_storage) +"bbT" = ( +/obj/machinery/newscaster{ + pixel_x = -30; + pixel_y = 0 + }, +/obj/effect/floor_decal/borderfloor{ + dir = 8 + }, +/obj/effect/floor_decal/corner/red/border{ + dir = 8 + }, +/turf/simulated/floor/tiled, +/area/security/main) +"bbU" = ( +/turf/simulated/floor/tiled, +/area/security/main) +"bbV" = ( +/obj/structure/cable/green{ + d1 = 2; + d2 = 4; + icon_state = "2-4" + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 6 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 6 + }, +/turf/simulated/floor/tiled, +/area/security/main) +"bbW" = ( +/obj/structure/cable/green{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/obj/structure/cable/green{ + d1 = 1; + d2 = 8; + icon_state = "1-8" + }, +/obj/machinery/atmospherics/pipe/manifold/hidden/supply, +/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers, +/turf/simulated/floor/tiled, +/area/security/main) +"bbX" = ( +/obj/structure/cable/green{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, +/turf/simulated/floor/tiled, +/area/security/main) +"bbY" = ( +/obj/structure/cable/green{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/obj/machinery/atmospherics/pipe/manifold/hidden/supply{ + dir = 1 + }, +/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers, +/turf/simulated/floor/tiled, +/area/security/main) +"bbZ" = ( +/obj/structure/cable/green{ + d1 = 1; + d2 = 8; + icon_state = "1-8" + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 9 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 9 + }, +/turf/simulated/floor/tiled, +/area/security/main) +"bca" = ( +/obj/structure/table/standard, +/obj/machinery/recharger, +/obj/item/weapon/reagent_containers/spray/cleaner, +/obj/effect/floor_decal/borderfloor{ + dir = 4 + }, +/obj/effect/floor_decal/corner/red/border{ + dir = 4 + }, +/turf/simulated/floor/tiled, +/area/security/main) +"bcb" = ( +/obj/structure/sign/warning/caution{ + name = "\improper CAUTION: FIRING RANGE" + }, +/turf/simulated/wall, +/area/security/range) +"bcc" = ( +/obj/effect/floor_decal/industrial/warning, +/obj/effect/floor_decal/borderfloor/corner{ + dir = 1 + }, +/obj/effect/floor_decal/corner/red/bordercorner{ + dir = 1 + }, +/turf/simulated/floor/tiled, +/area/security/range) +"bcd" = ( +/obj/effect/floor_decal/industrial/warning, +/turf/simulated/floor/tiled, +/area/security/range) +"bce" = ( +/obj/effect/floor_decal/industrial/warning, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/turf/simulated/floor/tiled, +/area/security/range) +"bcf" = ( +/obj/effect/floor_decal/industrial/warning, +/obj/effect/floor_decal/borderfloor/corner{ + dir = 4 + }, +/obj/effect/floor_decal/corner/red/bordercorner{ + dir = 4 + }, +/turf/simulated/floor/tiled, +/area/security/range) +"bcg" = ( +/obj/effect/floor_decal/industrial/warning{ + dir = 4 + }, +/turf/simulated/floor/tiled/airless, +/area/rnd/test_area) +"bch" = ( +/obj/effect/floor_decal/industrial/warning{ + dir = 8 + }, +/turf/simulated/floor/tiled/airless, +/area/rnd/test_area) +"bci" = ( +/obj/structure/cable/green{ + d2 = 4; + icon_state = "0-4" + }, +/obj/machinery/door/firedoor/border_only, +/obj/machinery/atmospherics/pipe/simple/hidden, +/obj/machinery/door/blast/regular{ + density = 0; + icon_state = "pdoor0"; + id = "Prison Gate"; + name = "Communal Brig Blast Door"; + opacity = 0 + }, +/obj/effect/wingrille_spawn/reinforced, +/turf/simulated/floor/plating, +/area/security/prison) +"bcj" = ( +/obj/structure/cable/green{ + d1 = 2; + d2 = 4; + icon_state = "2-4" + }, +/obj/structure/cable/green{ + d1 = 2; + d2 = 8; + icon_state = "2-8" + }, +/obj/machinery/door/blast/regular{ + dir = 1; + id = "Cell 2"; + name = "Cell 2 Door" + }, +/obj/structure/cable/green{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/turf/simulated/floor/tiled, +/area/security/prison) +"bck" = ( +/obj/structure/cable/green{ + d2 = 8; + icon_state = "0-8" + }, +/obj/machinery/door/firedoor/border_only, +/obj/effect/wingrille_spawn/reinforced, +/obj/machinery/door/blast/regular{ + density = 0; + icon_state = "pdoor0"; + id = "Prison Gate"; + name = "Communal Brig Blast Door"; + opacity = 0 + }, +/turf/simulated/floor/plating, +/area/security/prison) +"bcl" = ( +/obj/structure/cable/green{ + d2 = 4; + icon_state = "0-4" + }, +/obj/machinery/door/firedoor/border_only, +/obj/machinery/door/blast/regular{ + density = 0; + icon_state = "pdoor0"; + id = "Prison Gate"; + name = "Communal Brig Blast Door"; + opacity = 0 + }, +/obj/effect/wingrille_spawn/reinforced, +/turf/simulated/floor/plating, +/area/security/prison) +"bcm" = ( +/obj/structure/cable/green{ + d1 = 2; + d2 = 4; + icon_state = "2-4" + }, +/obj/structure/cable/green{ + d1 = 2; + d2 = 8; + icon_state = "2-8" + }, +/obj/machinery/door/blast/regular{ + dir = 1; + id = "Cell 1"; + name = "Cell 1 Door" + }, +/obj/structure/cable/green{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/turf/simulated/floor/tiled, +/area/security/prison) +"bcn" = ( +/obj/structure/cable/green{ + d2 = 8; + icon_state = "0-8" + }, +/obj/machinery/door/firedoor/border_only, +/obj/machinery/door/blast/regular{ + density = 0; + icon_state = "pdoor0"; + id = "Prison Gate"; + name = "Communal Brig Blast Door"; + opacity = 0 + }, +/obj/effect/wingrille_spawn/reinforced, +/turf/simulated/floor/plating, +/area/security/prison) +"bco" = ( +/obj/machinery/door/firedoor/glass, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/obj/machinery/door/airlock/glass_security{ + id_tag = "prisonentry"; + name = "Brig Entry"; + req_access = list(2) + }, +/turf/simulated/floor/tiled/steel_grid, +/area/security/prison) +"bcp" = ( +/obj/machinery/door/firedoor/glass, +/obj/machinery/door/airlock/glass_security{ + id_tag = "prisonentry"; + name = "Brig Entry"; + req_access = list(2) + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/turf/simulated/floor/tiled/steel_grid, +/area/security/prison) +"bcq" = ( +/obj/structure/disposalpipe/segment, +/obj/machinery/alarm{ + dir = 8; + pixel_x = 22; + pixel_y = 0 + }, +/obj/effect/floor_decal/borderfloor/corner{ + dir = 4 + }, +/obj/effect/floor_decal/corner/red/bordercorner{ + dir = 4 + }, +/obj/effect/floor_decal/steeldecal/steel_decals4{ + dir = 8 + }, +/obj/effect/floor_decal/steeldecal/steel_decals4{ + dir = 5 + }, +/turf/simulated/floor/tiled, +/area/security/prison) +"bcr" = ( +/turf/simulated/wall, +/area/security/warden) +"bcs" = ( +/obj/machinery/door/firedoor/glass, +/obj/machinery/door/airlock/glass_security{ + name = "Warden's Office"; + req_access = list(3) + }, +/turf/simulated/floor/tiled/techmaint, +/area/security/warden) +"bct" = ( +/obj/machinery/door/firedoor/border_only, +/obj/structure/cable/green{ + d2 = 4; + icon_state = "0-4" + }, +/obj/effect/wingrille_spawn/reinforced, +/turf/simulated/floor/plating, +/area/security/warden) +"bcu" = ( +/obj/machinery/door/firedoor/border_only, +/obj/structure/cable/green, +/obj/structure/cable/green{ + d2 = 8; + icon_state = "0-8" + }, +/obj/effect/wingrille_spawn/reinforced, +/turf/simulated/floor/plating, +/area/security/warden) +"bcv" = ( +/obj/machinery/status_display, +/turf/simulated/wall, +/area/security/warden) +"bcw" = ( +/obj/effect/floor_decal/borderfloor{ + dir = 8 + }, +/obj/effect/floor_decal/corner/red/border{ + dir = 8 + }, +/turf/simulated/floor/tiled, +/area/security/brig) +"bcx" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/structure/cable/green{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/turf/simulated/floor/tiled, +/area/security/brig) +"bcy" = ( +/obj/machinery/light{ + dir = 4 + }, +/obj/effect/floor_decal/borderfloor{ + dir = 4 + }, +/obj/effect/floor_decal/corner/red/border{ + dir = 4 + }, +/turf/simulated/floor/tiled, +/area/security/brig) +"bcz" = ( +/obj/machinery/ai_status_display, +/turf/simulated/wall, +/area/security/evidence_storage) +"bcA" = ( +/obj/machinery/door/firedoor/border_only, +/obj/machinery/door/airlock/security{ + name = "Evidence Storage"; + req_access = list(1) + }, +/turf/simulated/floor/tiled/dark, +/area/security/evidence_storage) +"bcB" = ( +/obj/structure/reagent_dispensers/peppertank{ + pixel_x = -30 + }, +/obj/effect/floor_decal/borderfloor{ + dir = 8 + }, +/obj/effect/floor_decal/corner/red/border{ + dir = 8 + }, +/turf/simulated/floor/tiled, +/area/security/main) +"bcC" = ( +/obj/structure/bed/chair/office/dark{ + dir = 4 + }, +/obj/effect/landmark/start{ + name = "Security Officer" + }, +/turf/simulated/floor/tiled, +/area/security/main) +"bcD" = ( +/obj/structure/table/standard, +/obj/item/weapon/folder/red, +/obj/item/clothing/glasses/hud/security, +/obj/structure/cable/green{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/turf/simulated/floor/tiled/red, +/area/security/main) +"bcE" = ( +/obj/structure/table/standard, +/obj/item/weapon/paper_bin{ + pixel_x = -3; + pixel_y = 7 + }, +/obj/item/weapon/pen, +/turf/simulated/floor/tiled/red, +/area/security/main) +"bcF" = ( +/obj/structure/bed/chair/office/dark{ + dir = 8 + }, +/obj/effect/landmark/start{ + name = "Security Officer" + }, +/turf/simulated/floor/tiled, +/area/security/main) +"bcG" = ( +/obj/machinery/atmospherics/unary/vent_pump/on{ + dir = 1 + }, +/turf/simulated/floor/tiled, +/area/security/main) +"bcH" = ( +/obj/machinery/light{ + dir = 4 + }, +/obj/structure/table/standard, +/obj/item/weapon/storage/box/donut, +/obj/effect/floor_decal/borderfloor/corner{ + dir = 4 + }, +/obj/effect/floor_decal/corner/red/bordercorner{ + dir = 4 + }, +/turf/simulated/floor/tiled, +/area/security/main) +"bcI" = ( +/obj/structure/table/steel_reinforced, +/obj/structure/window/reinforced{ + dir = 1 + }, +/obj/machinery/magnetic_controller{ + autolink = 1 + }, +/obj/item/clothing/glasses/sunglasses, +/obj/item/clothing/glasses/sunglasses{ + pixel_x = 3; + pixel_y = 3 + }, +/obj/item/clothing/glasses/sunglasses/sechud/aviator, +/obj/item/clothing/ears/earmuffs, +/obj/item/clothing/ears/earmuffs, +/obj/item/clothing/ears/earmuffs{ + pixel_x = -3; + pixel_y = -2 + }, +/obj/item/weapon/tool/screwdriver, +/turf/simulated/floor/tiled, +/area/security/range) +"bcJ" = ( +/obj/machinery/door/window/northleft{ + name = "Range Access" + }, +/obj/effect/floor_decal/industrial/loading{ + dir = 1 + }, +/turf/simulated/floor/tiled, +/area/security/range) +"bcK" = ( +/obj/structure/table/steel_reinforced, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/structure/window/reinforced{ + dir = 1 + }, +/obj/structure/window/reinforced{ + dir = 4 + }, +/obj/item/weapon/gun/energy/laser/practice, +/turf/simulated/floor/tiled, +/area/security/range) +"bcL" = ( +/obj/structure/table/steel_reinforced, +/obj/structure/window/reinforced{ + dir = 1 + }, +/obj/item/weapon/gun/energy/laser/practice, +/turf/simulated/floor/tiled, +/area/security/range) +"bcM" = ( +/obj/structure/lattice, +/obj/structure/grille/broken, +/obj/effect/landmark{ + name = "carpspawn" + }, +/turf/space, +/area/space) +"bcN" = ( +/turf/simulated/wall/r_wall, +/area/security/security_cell_hallway) +"bcO" = ( +/obj/structure/bed/padded, +/obj/machinery/atmospherics/pipe/simple/hidden, +/obj/effect/floor_decal/borderfloor{ + dir = 8 + }, +/obj/effect/floor_decal/corner/red/border{ + dir = 8 + }, +/obj/machinery/flasher{ + id = "Cell 2"; + pixel_x = -28; + pixel_y = 0 + }, +/turf/simulated/floor/tiled, +/area/security/security_cell_hallway) +"bcP" = ( +/obj/structure/cable/green{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/turf/simulated/floor/tiled, +/area/security/security_cell_hallway) +"bcQ" = ( +/obj/structure/closet/secure_closet/brig{ + id = "Cell 2"; + name = "Cell 2 Locker" + }, +/obj/machinery/camera/network/prison{ + c_tag = "SEC - Brig Cell 2"; + dir = 8 + }, +/obj/item/device/radio/headset, +/obj/effect/floor_decal/borderfloor{ + dir = 4 + }, +/obj/effect/floor_decal/corner/red/border{ + dir = 4 + }, +/turf/simulated/floor/tiled, +/area/security/security_cell_hallway) +"bcR" = ( +/turf/simulated/wall, +/area/security/security_cell_hallway) +"bcS" = ( +/obj/structure/bed/padded, +/obj/effect/floor_decal/borderfloor{ + dir = 8 + }, +/obj/effect/floor_decal/corner/red/border{ + dir = 8 + }, +/obj/machinery/flasher{ + id = "Cell 1"; + pixel_x = -28; + pixel_y = 0 + }, +/turf/simulated/floor/tiled, +/area/security/security_cell_hallway) +"bcT" = ( +/obj/structure/closet/secure_closet/brig{ + id = "Cell 1"; + name = "Cell 1 Locker" + }, +/obj/machinery/camera/network/prison{ + c_tag = "SEC - Brig Cell 1"; + dir = 8 + }, +/obj/item/device/radio/headset, +/obj/effect/floor_decal/borderfloor{ + dir = 4 + }, +/obj/effect/floor_decal/corner/red/border{ + dir = 4 + }, +/turf/simulated/floor/tiled, +/area/security/security_cell_hallway) +"bcU" = ( +/obj/machinery/atmospherics/unary/vent_pump/on{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/obj/machinery/alarm{ + dir = 4; + icon_state = "alarm0"; + pixel_x = -22; + pixel_y = 0 + }, +/turf/simulated/floor/tiled, +/area/security/prison) +"bcV" = ( +/obj/machinery/atmospherics/pipe/manifold/hidden/supply{ + dir = 4 + }, +/obj/structure/cable/green{ + d2 = 2; + icon_state = "0-2" + }, +/obj/machinery/power/apc{ + dir = 4; + name = "east bump"; + pixel_x = 24 + }, +/obj/machinery/light_switch{ + pixel_x = 36; + pixel_y = 0 + }, +/obj/machinery/camera/network/prison{ + c_tag = "SEC - Common Brig Enterance"; + dir = 8 + }, +/turf/simulated/floor/tiled, +/area/security/prison) +"bcW" = ( +/obj/machinery/door/firedoor/border_only, +/obj/machinery/door/blast/shutters{ + density = 0; + dir = 2; + icon_state = "shutter0"; + id = "visit_blast"; + name = "Privacy Shutters"; + opacity = 0 + }, +/obj/effect/wingrille_spawn/reinforced, +/turf/simulated/floor/plating, +/area/security/prison) +"bcX" = ( +/obj/machinery/door/airlock{ + id_tag = "visitdoor"; + name = "Visitation Area"; + req_access = list(63) + }, +/obj/machinery/door/firedoor/border_only, +/obj/structure/disposalpipe/segment, +/turf/simulated/floor/tiled/steel_grid, +/area/security/prison) +"bcY" = ( +/obj/machinery/computer/prisoner, +/obj/machinery/newscaster/security_unit{ + pixel_x = 0; + pixel_y = 30 + }, +/obj/effect/floor_decal/industrial/outline/grey, +/turf/simulated/floor/tiled/dark, +/area/security/warden) +"bcZ" = ( +/obj/structure/filingcabinet/chestdrawer, +/obj/effect/floor_decal/industrial/outline/grey, +/obj/machinery/camera/network/security{ + c_tag = "SEC - Warden's Office" + }, +/obj/item/device/radio/intercom/department/security{ + pixel_y = 21 + }, +/turf/simulated/floor/tiled/dark, +/area/security/warden) +"bda" = ( +/obj/structure/cable/green{ + d1 = 2; + d2 = 4; + icon_state = "2-4" + }, +/obj/effect/floor_decal/steeldecal/steel_decals4{ + dir = 9 + }, +/obj/effect/floor_decal/steeldecal/steel_decals4{ + dir = 4 + }, +/turf/simulated/floor/tiled/dark, +/area/security/warden) +"bdb" = ( +/obj/structure/cable/green{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/obj/structure/table/steel_reinforced, +/obj/item/weapon/book/codex/corp_regs, +/obj/item/weapon/stamp/denied{ + pixel_x = 5 + }, +/obj/item/weapon/stamp/ward, +/obj/item/weapon/tool/crowbar, +/obj/item/device/radio/off, +/obj/item/weapon/tool/wrench, +/obj/item/device/retail_scanner/security, +/obj/effect/floor_decal/industrial/outline/grey, +/obj/machinery/light{ + dir = 1 + }, +/turf/simulated/floor/tiled/dark, +/area/security/warden) +"bdc" = ( +/obj/structure/closet/secure_closet/warden, +/obj/structure/cable/green{ + d2 = 8; + icon_state = "0-8" + }, +/obj/machinery/power/apc{ + dir = 4; + name = "east bump"; + pixel_x = 24 + }, +/obj/machinery/light_switch{ + pixel_x = 36; + pixel_y = 0 + }, +/obj/effect/floor_decal/industrial/outline/grey, +/turf/simulated/floor/tiled/dark, +/area/security/warden) +"bdd" = ( +/obj/machinery/camera/network/security{ + c_tag = "SEC - Brig Hallway Fore"; + dir = 4 + }, +/obj/effect/floor_decal/borderfloor{ + dir = 8 + }, +/obj/effect/floor_decal/corner/red/border{ + dir = 8 + }, +/turf/simulated/floor/tiled, +/area/security/brig) +"bde" = ( +/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{ + dir = 8 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/structure/cable/green{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/turf/simulated/floor/tiled, +/area/security/brig) +"bdf" = ( +/obj/machinery/atmospherics/unary/vent_scrubber/on{ + dir = 8 + }, +/obj/machinery/firealarm{ + dir = 4; + pixel_x = 24 + }, +/obj/effect/floor_decal/borderfloor{ + dir = 4 + }, +/obj/effect/floor_decal/corner/red/border{ + dir = 4 + }, +/turf/simulated/floor/tiled, +/area/security/brig) +"bdg" = ( +/turf/simulated/wall, +/area/security/security_processing) +"bdh" = ( +/obj/structure/table/standard, +/obj/structure/extinguisher_cabinet{ + pixel_y = 30 + }, +/obj/item/weapon/folder/red, +/obj/item/weapon/folder/red, +/obj/machinery/firealarm{ + dir = 8; + pixel_x = -24 + }, +/obj/effect/floor_decal/borderfloor{ + dir = 9 + }, +/obj/effect/floor_decal/corner/red/border{ + dir = 9 + }, +/turf/simulated/floor/tiled, +/area/security/security_processing) +"bdi" = ( +/obj/item/device/radio/intercom{ + dir = 1; + name = "Station Intercom (General)"; + pixel_y = 21 + }, +/obj/effect/floor_decal/borderfloor/corner{ + dir = 1 + }, +/obj/effect/floor_decal/corner/red/bordercorner{ + dir = 1 + }, +/turf/simulated/floor/tiled, +/area/security/security_processing) +"bdj" = ( +/obj/effect/floor_decal/steeldecal/steel_decals4{ + dir = 4 + }, +/obj/effect/floor_decal/steeldecal/steel_decals4{ + dir = 9 + }, +/turf/simulated/floor/tiled, +/area/security/security_processing) +"bdk" = ( +/obj/machinery/alarm{ + pixel_y = 22 + }, +/obj/effect/floor_decal/borderfloor/corner{ + dir = 4 + }, +/obj/effect/floor_decal/corner/red/bordercorner{ + dir = 4 + }, +/turf/simulated/floor/tiled, +/area/security/security_processing) +"bdl" = ( +/obj/structure/table/standard, +/obj/item/weapon/folder/red{ + pixel_x = 2; + pixel_y = 4 + }, +/obj/item/weapon/folder/red{ + pixel_x = 2; + pixel_y = 4 + }, +/obj/item/weapon/hand_labeler, +/obj/effect/floor_decal/borderfloor{ + dir = 5 + }, +/obj/effect/floor_decal/corner/red/border{ + dir = 5 + }, +/turf/simulated/floor/tiled, +/area/security/security_processing) +"bdm" = ( +/obj/machinery/ai_status_display, +/turf/simulated/wall, +/area/security/security_processing) +"bdn" = ( +/obj/machinery/light{ + dir = 8; + icon_state = "tube1"; + pixel_y = 0 + }, +/obj/effect/floor_decal/borderfloor{ + dir = 8 + }, +/obj/effect/floor_decal/corner/red/border{ + dir = 8 + }, +/turf/simulated/floor/tiled, +/area/security/main) +"bdo" = ( +/obj/structure/bed/chair/office/dark{ + dir = 4 + }, +/obj/machinery/atmospherics/unary/vent_pump/on{ + dir = 4 + }, +/obj/effect/landmark/start{ + name = "Security Officer" + }, +/turf/simulated/floor/tiled, +/area/security/main) +"bdp" = ( +/obj/structure/table/standard, +/obj/item/weapon/folder/red, +/obj/structure/cable/green{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/obj/machinery/atmospherics/pipe/manifold/hidden/supply{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{ + dir = 8 + }, +/turf/simulated/floor/tiled/red, +/area/security/main) +"bdq" = ( +/obj/structure/table/standard, +/obj/item/weapon/folder/red, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, +/turf/simulated/floor/tiled/red, +/area/security/main) +"bdr" = ( +/obj/structure/bed/chair/office/dark{ + dir = 8 + }, +/obj/machinery/atmospherics/unary/vent_scrubber/on{ + dir = 8 + }, +/obj/effect/landmark/start{ + name = "Security Officer" + }, +/turf/simulated/floor/tiled, +/area/security/main) +"bds" = ( +/obj/effect/floor_decal/steeldecal/steel_decals4, +/obj/effect/floor_decal/steeldecal/steel_decals4{ + dir = 10 + }, +/turf/simulated/floor/tiled, +/area/security/main) +"bdt" = ( +/obj/machinery/door/firedoor/glass, +/obj/machinery/door/airlock/glass_security{ + name = "Firing Range"; + req_access = list(1) + }, +/turf/simulated/floor/tiled/steel_grid, +/area/security/range) +"bdu" = ( +/obj/effect/floor_decal/industrial/warning{ + icon_state = "warning"; + dir = 1 + }, +/turf/simulated/floor/tiled, +/area/security/range) +"bdv" = ( +/obj/effect/floor_decal/industrial/warning{ + icon_state = "warning"; + dir = 1 + }, +/obj/machinery/atmospherics/unary/vent_scrubber/on{ + dir = 4 + }, +/turf/simulated/floor/tiled, +/area/security/range) +"bdw" = ( +/obj/effect/floor_decal/industrial/warning{ + icon_state = "warning"; + dir = 1 + }, +/obj/machinery/atmospherics/pipe/manifold/hidden/supply{ + dir = 8 + }, +/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{ + dir = 4 + }, +/obj/machinery/hologram/holopad, +/turf/simulated/floor/tiled, +/area/security/range) +"bdx" = ( +/obj/effect/floor_decal/industrial/warning{ + icon_state = "warning"; + dir = 1 + }, +/obj/machinery/atmospherics/unary/vent_pump/on{ + dir = 8 + }, +/turf/simulated/floor/tiled, +/area/security/range) +"bdy" = ( +/obj/machinery/atmospherics/unary/vent_scrubber/on{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden, +/obj/machinery/alarm{ + dir = 4; + icon_state = "alarm0"; + pixel_x = -22 + }, +/obj/effect/floor_decal/borderfloor{ + dir = 8 + }, +/obj/effect/floor_decal/corner/red/border{ + dir = 8 + }, +/turf/simulated/floor/tiled, +/area/security/security_cell_hallway) +"bdz" = ( +/obj/structure/cable/green{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 6 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 10 + }, +/turf/simulated/floor/tiled, +/area/security/security_cell_hallway) +"bdA" = ( +/obj/machinery/atmospherics/unary/vent_pump/on{ + dir = 8 + }, +/obj/machinery/light/small{ + dir = 4 + }, +/obj/effect/floor_decal/borderfloor{ + dir = 4 + }, +/obj/effect/floor_decal/corner/red/border{ + dir = 4 + }, +/turf/simulated/floor/tiled, +/area/security/security_cell_hallway) +"bdB" = ( +/obj/machinery/atmospherics/unary/vent_scrubber/on{ + dir = 4 + }, +/obj/machinery/alarm{ + dir = 4; + icon_state = "alarm0"; + pixel_x = -22 + }, +/obj/effect/floor_decal/borderfloor{ + dir = 8 + }, +/obj/effect/floor_decal/corner/red/border{ + dir = 8 + }, +/turf/simulated/floor/tiled, +/area/security/security_cell_hallway) +"bdC" = ( +/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{ + dir = 8 + }, +/obj/machinery/flasher{ + id = "permentryflash"; + name = "Floor mounted flash"; + pixel_x = 0 + }, +/obj/effect/floor_decal/industrial/outline/yellow, +/obj/structure/extinguisher_cabinet{ + pixel_x = -28; + pixel_y = 0 + }, +/obj/machinery/light{ + dir = 8; + icon_state = "tube1"; + pixel_y = 0 + }, +/turf/simulated/floor/tiled, +/area/security/prison) +"bdD" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/machinery/atmospherics/unary/vent_scrubber/on{ + dir = 8 + }, +/obj/structure/cable/green{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/obj/machinery/firealarm{ + dir = 4; + pixel_x = 24 + }, +/turf/simulated/floor/tiled, +/area/security/prison) +"bdE" = ( +/obj/structure/bed/chair, +/turf/simulated/floor/tiled, +/area/security/prison) +"bdF" = ( +/obj/machinery/flasher{ + id = "IAflash"; + pixel_x = 26; + pixel_y = 0 + }, +/obj/machinery/light/small{ + dir = 4 + }, +/obj/structure/disposalpipe/segment, +/obj/effect/floor_decal/steeldecal/steel_decals4{ + dir = 4 + }, +/obj/effect/floor_decal/steeldecal/steel_decals4{ + dir = 9 + }, +/turf/simulated/floor/tiled, +/area/security/prison) +"bdG" = ( +/obj/item/device/radio/intercom{ + dir = 8; + name = "Station Intercom (General)"; + pixel_x = -21 + }, +/obj/machinery/recharger/wallcharger{ + pixel_x = -26; + pixel_y = 26 + }, +/turf/simulated/floor/tiled/dark, +/area/security/warden) +"bdH" = ( +/turf/simulated/floor/tiled/dark, +/area/security/warden) +"bdI" = ( +/obj/structure/cable/green{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 6 + }, +/turf/simulated/floor/tiled/dark, +/area/security/warden) +"bdJ" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, +/turf/simulated/floor/tiled/dark, +/area/security/warden) +"bdK" = ( +/obj/machinery/atmospherics/unary/vent_scrubber/on{ + dir = 8 + }, +/turf/simulated/floor/tiled/dark, +/area/security/warden) +"bdL" = ( +/obj/structure/table/steel_reinforced, +/obj/structure/window/reinforced{ + dir = 4; + health = 1e+006 + }, +/obj/item/weapon/paper_bin{ + pixel_x = -3; + pixel_y = 7 + }, +/obj/item/weapon/clipboard, +/obj/item/weapon/folder/red, +/obj/item/weapon/pen, +/obj/machinery/door/firedoor/border_only, +/turf/simulated/floor/tiled/dark, +/area/security/warden) +"bdM" = ( +/obj/machinery/light{ + dir = 8; + icon_state = "tube1"; + pixel_y = 0 + }, +/obj/effect/floor_decal/borderfloor{ + dir = 8 + }, +/obj/effect/floor_decal/corner/red/border{ + dir = 8 + }, +/turf/simulated/floor/tiled, +/area/security/brig) +"bdN" = ( +/obj/effect/floor_decal/borderfloor/corner{ + dir = 4 + }, +/obj/effect/floor_decal/corner/red/bordercorner{ + dir = 4 + }, +/turf/simulated/floor/tiled, +/area/security/brig) +"bdO" = ( +/obj/structure/cable/green{ + d2 = 2; + icon_state = "0-2" + }, +/obj/machinery/door/firedoor/border_only, +/obj/effect/wingrille_spawn/reinforced/polarized{ + id = "secpro" + }, +/turf/simulated/floor/plating, +/area/security/security_processing) +"bdP" = ( +/obj/effect/floor_decal/borderfloor/corner{ + dir = 1 + }, +/obj/effect/floor_decal/corner/red/bordercorner{ + dir = 1 + }, +/turf/simulated/floor/tiled, +/area/security/security_processing) +"bdQ" = ( +/turf/simulated/floor/tiled, +/area/security/security_processing) +"bdR" = ( +/obj/structure/bed/chair, +/obj/machinery/atmospherics/unary/vent_pump/on, +/turf/simulated/floor/tiled, +/area/security/security_processing) +"bdS" = ( +/obj/structure/table/standard, +/obj/item/weapon/storage/box/evidence, +/obj/effect/floor_decal/borderfloor{ + dir = 4 + }, +/obj/effect/floor_decal/corner/red/border{ + dir = 4 + }, +/turf/simulated/floor/tiled, +/area/security/security_processing) +"bdT" = ( +/obj/structure/noticeboard{ + pixel_x = -32 + }, +/obj/effect/floor_decal/borderfloor{ + dir = 8 + }, +/obj/effect/floor_decal/corner/red/border{ + dir = 8 + }, +/turf/simulated/floor/tiled, +/area/security/main) +"bdU" = ( +/obj/structure/cable/green{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/obj/structure/cable/green{ + d1 = 2; + d2 = 4; + icon_state = "2-4" + }, +/obj/machinery/atmospherics/pipe/manifold/hidden/supply{ + dir = 8 + }, +/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{ + dir = 8 + }, +/obj/structure/table/standard, +/obj/item/weapon/book/codex/corp_regs, +/turf/simulated/floor/tiled/red, +/area/security/main) +"bdV" = ( +/obj/structure/table/standard, +/obj/item/weapon/folder/red, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/obj/structure/cable/green{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/turf/simulated/floor/tiled/red, +/area/security/main) +"bdW" = ( +/obj/structure/bed/chair/office/dark{ + dir = 8 + }, +/obj/effect/landmark/start{ + name = "Security Officer" + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/obj/structure/cable/green{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/turf/simulated/floor/tiled, +/area/security/main) +"bdX" = ( +/obj/structure/cable/green{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, +/obj/effect/floor_decal/borderfloor/corner, +/obj/effect/floor_decal/corner/red/bordercorner, +/turf/simulated/floor/tiled, +/area/security/main) +"bdY" = ( +/obj/structure/cable/green{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/obj/effect/floor_decal/borderfloor, +/obj/effect/floor_decal/corner/red/border, +/turf/simulated/floor/tiled, +/area/security/main) +"bdZ" = ( +/obj/structure/cable/green{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, +/obj/effect/floor_decal/borderfloor, +/obj/effect/floor_decal/corner/red/border, +/turf/simulated/floor/tiled, +/area/security/main) +"bea" = ( +/obj/machinery/door/firedoor/border_only, +/obj/effect/wingrille_spawn/reinforced, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/obj/structure/cable/green{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/turf/simulated/floor/plating, +/area/security/range) +"beb" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/obj/structure/cable/green{ + d2 = 8; + icon_state = "0-8" + }, +/obj/machinery/power/apc{ + dir = 2; + name = "south bump"; + pixel_y = -24 + }, +/obj/machinery/light_switch{ + pixel_x = 12; + pixel_y = -24 + }, +/obj/effect/floor_decal/borderfloor, +/obj/effect/floor_decal/corner/red/border, +/turf/simulated/floor/tiled, +/area/security/range) +"bec" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/obj/item/device/radio/intercom{ + desc = "Talk... listen through this."; + dir = 2; + name = "Station Intercom (Brig Radio)"; + pixel_x = 0; + pixel_y = -21; + wires = 7 + }, +/obj/effect/floor_decal/borderfloor, +/obj/effect/floor_decal/corner/red/border, +/turf/simulated/floor/tiled, +/area/security/range) +"bed" = ( +/obj/structure/closet/crate, +/obj/item/target, +/obj/item/target, +/obj/item/target, +/obj/item/target, +/obj/item/target, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 9 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 9 + }, +/obj/machinery/light, +/obj/machinery/firealarm{ + dir = 1; + pixel_x = 0; + pixel_y = -26 + }, +/obj/effect/floor_decal/borderfloor, +/obj/effect/floor_decal/corner/red/border, +/turf/simulated/floor/tiled, +/area/security/range) +"bee" = ( +/obj/structure/table/steel_reinforced, +/obj/item/weapon/storage/box/flashbangs{ + pixel_x = -2; + pixel_y = -2 + }, +/obj/machinery/recharger/wallcharger{ + pixel_x = 4; + pixel_y = -26 + }, +/obj/effect/floor_decal/borderfloor, +/obj/effect/floor_decal/corner/red/border, +/turf/simulated/floor/tiled, +/area/security/range) +"bef" = ( +/obj/machinery/recharger/wallcharger{ + pixel_x = 4; + pixel_y = -26 + }, +/obj/structure/table/steel_reinforced, +/obj/item/weapon/storage/box/blanks, +/obj/item/weapon/storage/box/blanks{ + pixel_x = 2; + pixel_y = -2 + }, +/obj/item/ammo_magazine/m9mmt/practice, +/obj/item/ammo_magazine/m9mmt/practice, +/obj/item/ammo_magazine/m45/practice, +/obj/item/ammo_magazine/m45/practice, +/obj/item/ammo_magazine/m45/practice, +/obj/item/ammo_magazine/m45/practice, +/obj/item/ammo_magazine/m45/practice, +/obj/item/ammo_magazine/m45/practice, +/obj/machinery/alarm{ + dir = 8; + pixel_x = 22; + pixel_y = 0 + }, +/obj/item/ammo_magazine/s45/practice, +/obj/item/ammo_magazine/s45/practice, +/obj/item/ammo_magazine/s45/practice, +/obj/effect/floor_decal/borderfloor, +/obj/effect/floor_decal/corner/red/border, +/turf/simulated/floor/tiled, +/area/security/range) +"beg" = ( +/turf/simulated/wall, +/area/rnd/test_area) +"beh" = ( +/obj/machinery/door/airlock/external{ + name = "Toxins Test Chamber" + }, +/turf/simulated/floor/airless, +/area/rnd/test_area) +"bei" = ( +/obj/structure/sign/warning/high_voltage, +/turf/simulated/wall/r_wall, +/area/security/security_cell_hallway) +"bej" = ( +/obj/structure/cable/green{ + d2 = 4; + icon_state = "0-4" + }, +/obj/machinery/door/firedoor/border_only, +/obj/machinery/atmospherics/pipe/simple/hidden, +/obj/effect/wingrille_spawn/reinforced, +/turf/simulated/floor/plating, +/area/security/security_cell_hallway) +"bek" = ( +/obj/machinery/light, +/turf/simulated/floor/tiled/airless, +/area/rnd/test_area) +"bel" = ( +/obj/structure/cable/green{ + d2 = 8; + icon_state = "0-8" + }, +/obj/machinery/door/firedoor/border_only, +/obj/effect/wingrille_spawn/reinforced, +/turf/simulated/floor/plating, +/area/security/security_cell_hallway) +"bem" = ( +/obj/structure/cable/green{ + d2 = 4; + icon_state = "0-4" + }, +/obj/machinery/door/firedoor/border_only, +/obj/effect/wingrille_spawn/reinforced, +/turf/simulated/floor/plating, +/area/security/security_cell_hallway) +"ben" = ( +/obj/structure/cable/green{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/obj/structure/cable/green{ + d1 = 2; + d2 = 4; + icon_state = "2-4" + }, +/obj/structure/cable/green{ + d1 = 2; + d2 = 8; + icon_state = "2-8" + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/machinery/door/firedoor/glass, +/obj/effect/floor_decal/industrial/hatch/yellow, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/obj/machinery/door/window/brigdoor/northright{ + id = "Cell 2"; + name = "Cell 2"; + req_access = null; + req_one_access = list(2,4) + }, +/turf/simulated/floor/tiled, +/area/security/security_cell_hallway) +"beo" = ( +/obj/machinery/door/firedoor/glass, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 5 + }, +/obj/machinery/door/airlock/glass_security{ + id_tag = "prisonexit"; + name = "Brig Exit"; + req_access = list(2) + }, +/turf/simulated/floor/tiled/steel_grid, +/area/security/prison) +"bep" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/machinery/door/firedoor/glass, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 10 + }, +/obj/structure/cable/green{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/obj/machinery/door/airlock/glass_security{ + id_tag = "prisonexit"; + name = "Brig Exit"; + req_access = list(2) + }, +/turf/simulated/floor/tiled/steel_grid, +/area/security/prison) +"beq" = ( +/obj/structure/table/reinforced, +/obj/machinery/door/firedoor/border_only, +/obj/machinery/door/window/northright{ + name = "Visitation"; + req_access = list(2) + }, +/obj/item/weapon/book/codex/corp_regs, +/obj/machinery/door/blast/regular{ + density = 0; + icon_state = "pdoor0"; + id = "Prison Gate"; + name = "Communal Brig Blast Door"; + opacity = 0 + }, +/turf/simulated/floor/tiled, +/area/security/prison) +"ber" = ( +/obj/machinery/door/firedoor/border_only, +/obj/structure/cable/green{ + d2 = 2; + icon_state = "0-2" + }, +/obj/effect/wingrille_spawn/reinforced, +/obj/machinery/door/blast/regular{ + density = 0; + icon_state = "pdoor0"; + id = "Prison Gate"; + name = "Communal Brig Blast Door"; + opacity = 0 + }, +/obj/structure/disposalpipe/segment, +/turf/simulated/floor/plating, +/area/security/prison) +"bes" = ( +/obj/machinery/photocopier/faxmachine{ + department = "Warden's Office" + }, +/obj/structure/table/steel_reinforced, +/obj/machinery/alarm{ + dir = 4; + icon_state = "alarm0"; + pixel_x = -22 + }, +/obj/effect/floor_decal/industrial/outline/grey, +/turf/simulated/floor/tiled/dark, +/area/security/warden) +"bet" = ( +/obj/structure/cable/green{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/obj/machinery/hologram/holopad, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/obj/effect/floor_decal/industrial/outline/grey, +/turf/simulated/floor/tiled/dark, +/area/security/warden) +"beu" = ( +/obj/machinery/button/remote/blast_door{ + id = "security_lockdown"; + name = "Brig Lockdown"; + pixel_x = 36; + pixel_y = 18; + req_access = list(2) + }, +/turf/simulated/floor/tiled/dark, +/area/security/warden) +"bev" = ( +/obj/structure/table/steel_reinforced, +/obj/machinery/door/window/brigdoor/eastleft{ + name = "Warden's Desk"; + req_access = list(1) + }, +/obj/machinery/door/firedoor/glass, +/turf/simulated/floor/tiled/dark, +/area/security/warden) +"bew" = ( +/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{ + dir = 8 + }, +/obj/machinery/atmospherics/pipe/manifold/hidden/supply{ + dir = 8 + }, +/obj/structure/cable/green{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/turf/simulated/floor/tiled, +/area/security/brig) +"bex" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/obj/effect/floor_decal/steeldecal/steel_decals4{ + dir = 10 + }, +/obj/effect/floor_decal/steeldecal/steel_decals4, +/turf/simulated/floor/tiled, +/area/security/brig) +"bey" = ( +/obj/structure/cable/green{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/obj/machinery/door/firedoor/border_only, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/obj/machinery/door/airlock/security{ + name = "Security Processing"; + req_access = list(1) + }, +/turf/simulated/floor/tiled/steel_grid, +/area/security/security_processing) +"bez" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/obj/effect/floor_decal/steeldecal/steel_decals4{ + dir = 6 + }, +/obj/effect/floor_decal/steeldecal/steel_decals4{ + dir = 1 + }, +/turf/simulated/floor/tiled, +/area/security/security_processing) +"beA" = ( +/obj/structure/table/standard, +/obj/item/device/flashlight/lamp, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/turf/simulated/floor/tiled, +/area/security/security_processing) +"beB" = ( +/obj/structure/table/standard, +/obj/item/device/tape/random, +/obj/item/device/taperecorder, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 10 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 9 + }, +/turf/simulated/floor/tiled, +/area/security/security_processing) +"beC" = ( +/obj/machinery/hologram/holopad, +/obj/effect/floor_decal/industrial/outline/grey, +/turf/simulated/floor/tiled/monotile, +/area/security/security_processing) +"beD" = ( +/obj/structure/table/standard, +/obj/item/weapon/paper_bin{ + pixel_x = -3; + pixel_y = 7 + }, +/obj/item/weapon/pen, +/obj/machinery/light{ + dir = 4 + }, +/obj/effect/floor_decal/borderfloor{ + dir = 4 + }, +/obj/effect/floor_decal/corner/red/border{ + dir = 4 + }, +/turf/simulated/floor/tiled, +/area/security/security_processing) +"beE" = ( +/obj/machinery/power/apc{ + dir = 8; + name = "west bump"; + pixel_x = -24 + }, +/obj/machinery/light_switch{ + pixel_x = -36 + }, +/obj/structure/cable/green{ + d2 = 4; + icon_state = "0-4" + }, +/obj/effect/floor_decal/borderfloor{ + dir = 8 + }, +/obj/effect/floor_decal/corner/red/border{ + dir = 8 + }, +/turf/simulated/floor/tiled, +/area/security/main) +"beF" = ( +/obj/structure/cable/green{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/turf/simulated/floor/tiled, +/area/security/main) +"beG" = ( +/obj/structure/cable/green{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/obj/structure/cable/green{ + d1 = 2; + d2 = 8; + icon_state = "2-8" + }, +/turf/simulated/floor/tiled, +/area/security/main) +"beH" = ( +/obj/machinery/hologram/holopad, +/obj/effect/floor_decal/industrial/outline/grey, +/turf/simulated/floor/tiled/monotile, +/area/security/main) +"beI" = ( +/obj/effect/floor_decal/borderfloor{ + dir = 4 + }, +/obj/effect/floor_decal/corner/red/border{ + dir = 4 + }, +/turf/simulated/floor/tiled, +/area/security/main) +"beJ" = ( +/turf/simulated/wall, +/area/security/aid_station) +"beK" = ( +/turf/simulated/wall, +/area/security/security_ses) +"beL" = ( +/turf/simulated/wall/r_wall, +/area/security/security_ses) +"beM" = ( +/obj/structure/closet/emcloset, +/turf/simulated/floor/airless, +/area/rnd/test_area) +"beN" = ( +/obj/structure/lattice, +/obj/effect/landmark{ + name = "carpspawn" + }, +/turf/space, +/area/space) +"beO" = ( +/obj/structure/cable/green{ + d2 = 2; + icon_state = "0-2" + }, +/obj/machinery/door/firedoor/border_only, +/obj/effect/wingrille_spawn/reinforced, +/turf/simulated/floor/plating, +/area/security/security_cell_hallway) +"beP" = ( +/obj/structure/cable/green{ + d1 = 2; + d2 = 4; + icon_state = "2-4" + }, +/obj/structure/cable/green{ + d1 = 2; + d2 = 8; + icon_state = "2-8" + }, +/obj/structure/cable/green{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/machinery/door/firedoor/glass, +/obj/effect/floor_decal/industrial/hatch/yellow, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/obj/machinery/door/window/brigdoor/northright{ + id = "Cell 1"; + name = "Cell 1"; + req_access = null; + req_one_access = list(2,4) + }, +/turf/simulated/floor/tiled, +/area/security/security_cell_hallway) +"beQ" = ( +/obj/machinery/camera/network/security{ + c_tag = "SEC - Cell Hallway 1"; + dir = 4 + }, +/obj/effect/floor_decal/borderfloor{ + dir = 9 + }, +/obj/effect/floor_decal/corner/red/border{ + dir = 9 + }, +/obj/machinery/door_timer/cell_2{ + pixel_y = 32; + req_access = null; + req_one_access = list(2,4) + }, +/turf/simulated/floor/tiled, +/area/security/security_cell_hallway) +"beR" = ( +/obj/structure/cable/green{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/turf/simulated/floor/tiled, +/area/security/security_cell_hallway) +"beS" = ( +/obj/item/device/radio/intercom{ + dir = 1; + name = "Station Intercom (General)"; + pixel_y = 21 + }, +/obj/effect/floor_decal/borderfloor/corner{ + dir = 4 + }, +/obj/effect/floor_decal/corner/red/bordercorner{ + dir = 4 + }, +/turf/simulated/floor/tiled, +/area/security/security_cell_hallway) +"beT" = ( +/obj/machinery/atmospherics/pipe/simple/hidden, +/obj/machinery/button/remote/blast_door{ + id = "Cell 2"; + name = "Cell 2 Door"; + pixel_x = -1; + pixel_y = 28; + req_access = null; + req_one_access = list(2,4) + }, +/obj/effect/floor_decal/borderfloor/corner{ + dir = 1 + }, +/obj/effect/floor_decal/corner/red/bordercorner{ + dir = 1 + }, +/obj/machinery/button/flasher{ + id = "Cell 2"; + name = "Cell 2 Flash"; + pixel_x = -1; + pixel_y = 36; + req_access = list(2,4) + }, +/turf/simulated/floor/tiled, +/area/security/security_cell_hallway) +"beU" = ( +/obj/machinery/atmospherics/unary/vent_pump/on, +/obj/effect/floor_decal/borderfloor{ + dir = 1 + }, +/obj/effect/floor_decal/corner/red/border{ + dir = 1 + }, +/obj/machinery/door_timer/cell_1{ + pixel_y = 32; + req_access = null; + req_one_access = list(2,4) + }, +/turf/simulated/floor/tiled, +/area/security/security_cell_hallway) +"beV" = ( +/obj/item/device/radio/intercom{ + dir = 1; + name = "Station Intercom (General)"; + pixel_y = 21 + }, +/turf/simulated/floor/tiled, +/area/security/security_cell_hallway) +"beW" = ( +/obj/machinery/computer/security/telescreen{ + desc = "Big Brother is watching."; + layer = 3.4; + name = "Brig Monitor"; + network = list("Prison"); + pixel_x = 0; + pixel_y = 28 + }, +/obj/effect/floor_decal/industrial/warning/corner{ + dir = 4 + }, +/obj/machinery/atmospherics/unary/vent_scrubber/on, +/turf/simulated/floor/tiled, +/area/security/security_cell_hallway) +"beX" = ( +/obj/effect/floor_decal/industrial/warning{ + icon_state = "warning"; + dir = 1 + }, +/turf/simulated/floor/tiled, +/area/security/security_cell_hallway) +"beY" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/obj/structure/cable/green{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/obj/machinery/button/remote/airlock{ + id = "prisonentry"; + name = "Entry Doors"; + pixel_x = 26; + pixel_y = -9; + req_access = list(2) + }, +/obj/machinery/button/remote/airlock{ + id = "prisonexit"; + name = "Exit Doors"; + pixel_x = 26; + pixel_y = 0; + req_access = list(2) + }, +/obj/machinery/button/flasher{ + id = "permentryflash"; + name = "entry flash"; + pixel_x = 39; + pixel_y = 0; + req_access = list(2) + }, +/obj/machinery/button/remote/blast_door{ + id = "Prison Gate"; + name = "Prison Lockdown"; + pixel_x = 32; + pixel_y = 9; + req_access = list(2) + }, +/obj/machinery/button/flasher{ + id = "permflash"; + name = "Brig flashes"; + pixel_x = 39; + pixel_y = -9; + req_access = list(2) + }, +/obj/effect/floor_decal/industrial/warning{ + icon_state = "warning"; + dir = 1 + }, +/turf/simulated/floor/tiled, +/area/security/security_cell_hallway) +"beZ" = ( +/obj/structure/bed/chair{ + dir = 1 + }, +/obj/machinery/alarm{ + dir = 4; + icon_state = "alarm0"; + pixel_x = -22 + }, +/turf/simulated/floor/tiled, +/area/security/prison) +"bfa" = ( +/obj/machinery/button/remote/blast_door{ + id = "visit_blast"; + name = "Privacy Shutters"; + pixel_x = 25; + pixel_y = 0 + }, +/obj/structure/cable/green{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/obj/machinery/button/flasher{ + id = "IAflash"; + pixel_x = 25; + pixel_y = 12 + }, +/obj/machinery/light/small{ + dir = 4 + }, +/obj/structure/disposalpipe/segment, +/obj/effect/floor_decal/steeldecal/steel_decals4{ + dir = 8 + }, +/obj/effect/floor_decal/steeldecal/steel_decals4{ + dir = 5 + }, +/turf/simulated/floor/tiled, +/area/security/prison) +"bfb" = ( +/obj/machinery/photocopier, +/obj/effect/floor_decal/industrial/outline/grey, +/turf/simulated/floor/tiled/dark, +/area/security/warden) +"bfc" = ( +/obj/machinery/atmospherics/unary/vent_pump/on{ + dir = 4 + }, +/turf/simulated/floor/tiled/dark, +/area/security/warden) +"bfd" = ( +/obj/structure/cable/green{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 10 + }, +/turf/simulated/floor/tiled/dark, +/area/security/warden) +"bfe" = ( +/obj/structure/bed/chair/office/dark{ + dir = 4 + }, +/obj/effect/landmark/start{ + name = "Warden" + }, +/turf/simulated/floor/tiled/dark, +/area/security/warden) +"bff" = ( +/obj/structure/table/steel_reinforced, +/obj/structure/window/reinforced{ + dir = 4; + health = 1e+006 + }, +/obj/item/weapon/hand_labeler, +/obj/machinery/door/firedoor/border_only, +/turf/simulated/floor/tiled/dark, +/area/security/warden) +"bfg" = ( +/obj/effect/floor_decal/borderfloor/corner, +/obj/effect/floor_decal/corner/red/bordercorner, +/turf/simulated/floor/tiled, +/area/security/brig) +"bfh" = ( +/obj/structure/cable/green{ + d2 = 2; + icon_state = "0-2" + }, +/obj/machinery/door/firedoor/border_only, +/obj/structure/cable/green, +/obj/effect/wingrille_spawn/reinforced/polarized{ + id = "secpro" + }, +/turf/simulated/floor/plating, +/area/security/security_processing) +"bfi" = ( +/obj/machinery/camera/network/security{ + c_tag = "SEC - Processing"; + dir = 4 + }, +/obj/effect/floor_decal/borderfloor/corner{ + dir = 8 + }, +/obj/effect/floor_decal/corner/red/bordercorner{ + dir = 8 + }, +/turf/simulated/floor/tiled, +/area/security/security_processing) +"bfj" = ( +/obj/structure/bed/chair{ + dir = 1 + }, +/obj/machinery/atmospherics/unary/vent_scrubber/on{ + dir = 1 + }, +/turf/simulated/floor/tiled, +/area/security/security_processing) +"bfk" = ( +/obj/structure/table/standard, +/obj/item/device/camera, +/obj/effect/floor_decal/borderfloor{ + dir = 4 + }, +/obj/effect/floor_decal/corner/red/border{ + dir = 4 + }, +/turf/simulated/floor/tiled, +/area/security/security_processing) +"bfl" = ( +/obj/machinery/status_display, +/turf/simulated/wall, +/area/security/security_processing) +"bfm" = ( +/obj/machinery/photocopier, +/obj/effect/floor_decal/borderfloor{ + dir = 10 + }, +/obj/effect/floor_decal/corner/red/border{ + dir = 10 + }, +/turf/simulated/floor/tiled, +/area/security/main) +"bfn" = ( +/obj/machinery/papershredder, +/obj/effect/floor_decal/borderfloor/corner{ + dir = 8 + }, +/obj/effect/floor_decal/corner/red/bordercorner{ + dir = 8 + }, +/turf/simulated/floor/tiled, +/area/security/main) +"bfo" = ( +/obj/structure/cable/green{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/obj/effect/floor_decal/steeldecal/steel_decals4{ + dir = 5 + }, +/obj/effect/floor_decal/steeldecal/steel_decals4{ + dir = 8 + }, +/turf/simulated/floor/tiled, +/area/security/main) +"bfp" = ( +/obj/effect/floor_decal/steeldecal/steel_decals4{ + dir = 5 + }, +/obj/effect/floor_decal/steeldecal/steel_decals4{ + dir = 8 + }, +/turf/simulated/floor/tiled, +/area/security/main) +"bfq" = ( +/obj/effect/floor_decal/borderfloor/corner, +/obj/effect/floor_decal/corner/red/bordercorner, +/turf/simulated/floor/tiled, +/area/security/main) +"bfr" = ( +/obj/machinery/disposal, +/obj/structure/disposalpipe/trunk, +/obj/effect/floor_decal/borderfloor{ + dir = 6 + }, +/obj/effect/floor_decal/corner/red/border{ + dir = 6 + }, +/turf/simulated/floor/tiled, +/area/security/main) +"bfs" = ( +/obj/structure/table/standard, +/obj/item/device/radio/intercom{ + dir = 8; + name = "Station Intercom (General)"; + pixel_x = -21 + }, +/obj/item/device/healthanalyzer, +/obj/item/stack/medical/bruise_pack{ + pixel_x = -4; + pixel_y = 3 + }, +/obj/item/stack/medical/bruise_pack{ + pixel_x = 10 + }, +/obj/item/stack/medical/ointment{ + pixel_y = 10 + }, +/obj/random/medical/lite, +/obj/effect/floor_decal/borderfloorwhite{ + dir = 9 + }, +/obj/effect/floor_decal/corner/paleblue/border{ + dir = 9 + }, +/turf/simulated/floor/tiled/white, +/area/security/aid_station) +"bft" = ( +/obj/structure/table/standard, +/obj/machinery/power/apc{ + dir = 1; + name = "north bump"; + pixel_x = 0; + pixel_y = 24 + }, +/obj/machinery/light_switch{ + pixel_x = 11; + pixel_y = 24 + }, +/obj/structure/cable/green{ + d2 = 2; + icon_state = "0-2" + }, +/obj/item/weapon/reagent_containers/syringe/inaprovaline, +/obj/item/weapon/reagent_containers/syringe/inaprovaline{ + pixel_x = -2; + pixel_y = 5 + }, +/obj/item/weapon/reagent_containers/syringe/inaprovaline{ + pixel_y = 10 + }, +/obj/effect/floor_decal/borderfloorwhite{ + dir = 1 + }, +/obj/effect/floor_decal/corner/paleblue/border{ + dir = 1 + }, +/turf/simulated/floor/tiled/white, +/area/security/aid_station) +"bfu" = ( +/obj/structure/table/standard, +/obj/item/device/radio/intercom/department/security{ + dir = 8; + icon_override = "secintercom"; + pixel_x = 21 + }, +/obj/item/bodybag/cryobag{ + pixel_x = 6 + }, +/obj/item/weapon/storage/firstaid/regular{ + pixel_x = 5; + pixel_y = 5 + }, +/obj/machinery/camera/network/security{ + c_tag = "SEC - Medical Station"; + dir = 8 + }, +/obj/effect/floor_decal/borderfloorwhite{ + dir = 5 + }, +/obj/effect/floor_decal/corner/paleblue/border{ + dir = 5 + }, +/turf/simulated/floor/tiled/white, +/area/security/aid_station) +"bfv" = ( +/turf/simulated/wall/r_wall, +/area/security/aid_station) +"bfw" = ( +/obj/structure/closet/bombclosetsecurity, +/obj/effect/floor_decal/industrial/outline/yellow, +/obj/item/device/radio/intercom{ + dir = 8; + name = "Station Intercom (General)"; + pixel_x = -21 + }, +/turf/simulated/floor/tiled, +/area/security/security_ses) +"bfx" = ( +/obj/structure/closet/bombclosetsecurity, +/obj/effect/floor_decal/industrial/outline/yellow, +/obj/machinery/power/apc{ + dir = 1; + name = "north bump"; + pixel_x = 0; + pixel_y = 24 + }, +/obj/machinery/light_switch{ + pixel_x = 11; + pixel_y = 24 + }, +/obj/structure/cable/green{ + d2 = 2; + icon_state = "0-2" + }, +/turf/simulated/floor/tiled, +/area/security/security_ses) +"bfy" = ( +/obj/structure/closet/l3closet/security, +/obj/effect/floor_decal/industrial/outline/yellow, +/obj/item/device/radio/intercom/department/security{ + pixel_y = 21 + }, +/obj/machinery/camera/network/security{ + c_tag = "SEC - Secondary Equipment Storage" + }, +/turf/simulated/floor/tiled, +/area/security/security_ses) +"bfz" = ( +/obj/structure/closet/l3closet/security, +/obj/effect/floor_decal/industrial/outline/yellow, +/obj/machinery/alarm{ + pixel_y = 22 + }, +/turf/simulated/floor/tiled, +/area/security/security_ses) +"bfA" = ( +/obj/structure/closet/wardrobe/orange, +/obj/effect/floor_decal/industrial/outline/yellow, +/obj/structure/extinguisher_cabinet{ + pixel_x = 28; + pixel_y = 0 + }, +/turf/simulated/floor/tiled, +/area/security/security_ses) +"bfB" = ( +/obj/machinery/light/small{ + dir = 4; + pixel_y = 0 + }, +/turf/simulated/floor/airless, +/area/rnd/test_area) +"bfC" = ( +/obj/machinery/door/blast/regular{ + id = "toxinsdriver"; + name = "Toxins Launcher Bay Door" + }, +/obj/machinery/shield_diffuser, +/turf/simulated/floor/airless, +/area/rnd/test_area) +"bfD" = ( +/obj/machinery/light/small{ + dir = 8 + }, +/turf/simulated/floor/airless, +/area/rnd/test_area) +"bfE" = ( +/obj/structure/cable/green{ + d2 = 2; + icon_state = "0-2" + }, +/obj/machinery/power/apc{ + dir = 4; + name = "east bump"; + pixel_x = 24 + }, +/turf/simulated/floor/airless, +/area/rnd/test_area) +"bfF" = ( +/obj/machinery/atmospherics/unary/vent_pump/high_volume{ + dir = 2; + external_pressure_bound = 140; + external_pressure_bound_default = 140; + icon_state = "map_vent_out"; + pressure_checks = 1; + pressure_checks_default = 1; + use_power = 1 + }, +/turf/simulated/floor/airless, +/area/engineering/atmos) +"bfG" = ( +/obj/structure/lattice, +/obj/structure/grille{ + density = 0; + icon_state = "brokengrille" + }, +/turf/space, +/area/space) +"bfH" = ( +/obj/structure/cable/green{ + d2 = 2; + icon_state = "0-2" + }, +/obj/structure/cable/green{ + d2 = 4; + icon_state = "0-4" + }, +/obj/structure/cable/green, +/obj/machinery/door/firedoor/glass, +/obj/effect/wingrille_spawn/reinforced, +/turf/simulated/floor/plating, +/area/security/security_cell_hallway) +"bfI" = ( +/obj/structure/cable/green{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/obj/effect/floor_decal/borderfloor{ + dir = 8 + }, +/obj/effect/floor_decal/corner/red/border{ + dir = 8 + }, +/turf/simulated/floor/tiled, +/area/security/security_cell_hallway) +"bfJ" = ( +/obj/structure/cable/green{ + d1 = 2; + d2 = 4; + icon_state = "2-4" + }, +/obj/structure/cable/green{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/obj/machinery/atmospherics/pipe/simple/hidden, +/obj/machinery/atmospherics/unary/vent_scrubber/on{ + dir = 4 + }, +/obj/effect/floor_decal/steeldecal/steel_decals4{ + dir = 5 + }, +/obj/effect/floor_decal/steeldecal/steel_decals4{ + dir = 8 + }, +/turf/simulated/floor/tiled, +/area/security/security_cell_hallway) +"bfK" = ( +/obj/structure/cable/green{ + d1 = 1; + d2 = 4; + icon_state = "1-4" + }, +/obj/structure/cable/green{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 5 + }, +/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers, +/obj/machinery/light, +/obj/effect/floor_decal/borderfloor/corner, +/obj/effect/floor_decal/corner/red/bordercorner, +/turf/simulated/floor/tiled, +/area/security/security_cell_hallway) +"bfL" = ( +/obj/structure/cable/green{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/obj/item/device/radio/intercom{ + name = "Station Intercom (General)"; + pixel_y = -21 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, +/obj/effect/floor_decal/borderfloor/corner{ + dir = 8 + }, +/obj/effect/floor_decal/corner/red/bordercorner{ + dir = 8 + }, +/turf/simulated/floor/tiled, +/area/security/security_cell_hallway) +"bfM" = ( +/obj/structure/cable/green{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/obj/structure/cable/green{ + d1 = 2; + d2 = 4; + icon_state = "2-4" + }, +/obj/machinery/atmospherics/pipe/manifold4w/hidden/supply, +/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{ + dir = 1 + }, +/obj/effect/floor_decal/steeldecal/steel_decals4{ + dir = 5 + }, +/obj/effect/floor_decal/steeldecal/steel_decals4{ + dir = 8 + }, +/turf/simulated/floor/tiled, +/area/security/security_cell_hallway) +"bfN" = ( +/obj/structure/cable/green{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, +/obj/machinery/computer/cryopod{ + density = 0; + layer = 3.3; + pixel_x = 0; + pixel_y = -32 + }, +/obj/machinery/hologram/holopad, +/obj/effect/floor_decal/industrial/outline/grey, +/turf/simulated/floor/tiled/monotile, +/area/security/security_cell_hallway) +"bfO" = ( +/obj/structure/cable/green{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/obj/structure/cable/green{ + d1 = 1; + d2 = 4; + icon_state = "1-4" + }, +/obj/machinery/atmospherics/pipe/manifold4w/hidden/supply, +/obj/machinery/atmospherics/pipe/manifold4w/hidden/scrubbers, +/obj/effect/floor_decal/steeldecal/steel_decals4{ + dir = 5 + }, +/obj/effect/floor_decal/steeldecal/steel_decals4{ + dir = 8 + }, +/turf/simulated/floor/tiled, +/area/security/security_cell_hallway) +"bfP" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, +/obj/structure/cable/green{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/obj/effect/floor_decal/borderfloor/corner, +/obj/effect/floor_decal/corner/red/bordercorner, +/obj/machinery/alarm{ + dir = 1; + pixel_y = -22 + }, +/turf/simulated/floor/tiled, +/area/security/security_cell_hallway) +"bfQ" = ( +/obj/structure/cable/green{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers, +/obj/effect/floor_decal/borderfloor, +/obj/effect/floor_decal/corner/red/border, +/obj/effect/floor_decal/borderfloor/corner2{ + dir = 9 + }, +/obj/effect/floor_decal/corner/red/bordercorner2{ + dir = 9 + }, +/turf/simulated/floor/tiled, +/area/security/security_cell_hallway) +"bfR" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, +/obj/structure/cable/green{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/obj/machinery/atmospherics/pipe/manifold/hidden/supply{ + dir = 1 + }, +/turf/simulated/floor/tiled, +/area/security/security_cell_hallway) +"bfS" = ( +/obj/machinery/atmospherics/pipe/manifold/hidden/supply{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{ + dir = 4 + }, +/obj/structure/cable/green{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/obj/structure/cable/green{ + d1 = 2; + d2 = 8; + icon_state = "2-8" + }, +/turf/simulated/floor/tiled, +/area/security/security_cell_hallway) +"bfT" = ( +/obj/machinery/door/airlock{ + id_tag = "visitdoor"; + name = "Visitation Area"; + req_access = list(63) + }, +/obj/machinery/door/firedoor/border_only, +/obj/structure/cable/green{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/obj/structure/disposalpipe/segment, +/turf/simulated/floor/tiled/steel_grid, +/area/security/prison) +"bfU" = ( +/obj/machinery/disposal, +/obj/effect/floor_decal/industrial/outline/grey, +/obj/machinery/firealarm{ + dir = 8; + pixel_x = -24 + }, +/obj/structure/disposalpipe/trunk, +/turf/simulated/floor/tiled/dark, +/area/security/warden) +"bfV" = ( +/obj/machinery/light, +/turf/simulated/floor/tiled/dark, +/area/security/warden) +"bfW" = ( +/obj/structure/cable/green{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/effect/floor_decal/steeldecal/steel_decals4{ + dir = 8 + }, +/obj/effect/floor_decal/steeldecal/steel_decals4{ + dir = 5 + }, +/turf/simulated/floor/tiled/dark, +/area/security/warden) +"bfX" = ( +/obj/machinery/computer/secure_data, +/obj/effect/floor_decal/industrial/outline/grey, +/turf/simulated/floor/tiled/dark, +/area/security/warden) +"bfY" = ( +/obj/machinery/computer/security{ + pixel_y = 0 + }, +/obj/structure/cable/green{ + d1 = 2; + d2 = 4; + icon_state = "2-4" + }, +/obj/effect/floor_decal/industrial/outline/grey, +/turf/simulated/floor/tiled/dark, +/area/security/warden) +"bfZ" = ( +/obj/structure/cable/green{ + d2 = 8; + icon_state = "0-8" + }, +/obj/effect/wingrille_spawn/reinforced, +/obj/machinery/door/firedoor/border_only, +/turf/simulated/floor/plating, +/area/security/warden) +"bga" = ( +/obj/effect/floor_decal/borderfloor{ + dir = 4 + }, +/obj/effect/floor_decal/corner/red/border{ + dir = 4 + }, +/turf/simulated/floor/tiled, +/area/security/brig) +"bgb" = ( +/obj/structure/cable/green, +/obj/structure/cable/green{ + d2 = 4; + icon_state = "0-4" + }, +/obj/machinery/door/firedoor/border_only, +/obj/effect/wingrille_spawn/reinforced/polarized{ + id = "secpro" + }, +/turf/simulated/floor/plating, +/area/security/security_processing) +"bgc" = ( +/obj/structure/cable/green{ + d1 = 2; + d2 = 8; + icon_state = "2-8" + }, +/obj/effect/floor_decal/borderfloor{ + dir = 10 + }, +/obj/effect/floor_decal/corner/red/border{ + dir = 10 + }, +/turf/simulated/floor/tiled, +/area/security/security_processing) +"bgd" = ( +/obj/effect/floor_decal/borderfloor/corner{ + dir = 8 + }, +/obj/effect/floor_decal/corner/red/bordercorner{ + dir = 8 + }, +/turf/simulated/floor/tiled, +/area/security/security_processing) +"bge" = ( +/obj/structure/cable/green{ + d1 = 2; + d2 = 4; + icon_state = "2-4" + }, +/obj/effect/floor_decal/steeldecal/steel_decals4{ + dir = 8 + }, +/obj/effect/floor_decal/steeldecal/steel_decals4{ + dir = 5 + }, +/turf/simulated/floor/tiled, +/area/security/security_processing) +"bgf" = ( +/obj/structure/cable/green{ + d2 = 8; + icon_state = "0-8" + }, +/obj/machinery/power/apc{ + dir = 2; + name = "south bump"; + pixel_y = -24 + }, +/obj/machinery/light_switch{ + pixel_x = 12; + pixel_y = -24 + }, +/obj/machinery/button/windowtint{ + id = "secpro"; + pixel_x = -12; + pixel_y = -24 + }, +/obj/effect/floor_decal/borderfloor/corner, +/obj/effect/floor_decal/corner/red/bordercorner, +/turf/simulated/floor/tiled, +/area/security/security_processing) +"bgg" = ( +/obj/machinery/computer/secure_data, +/obj/item/device/radio/intercom/department/security{ + dir = 8; + icon_override = "secintercom"; + pixel_x = 21 + }, +/obj/machinery/newscaster{ + pixel_y = -30 + }, +/obj/effect/floor_decal/borderfloor{ + dir = 6 + }, +/obj/effect/floor_decal/corner/red/border{ + dir = 6 + }, +/turf/simulated/floor/tiled, +/area/security/security_processing) +"bgh" = ( +/obj/machinery/door/firedoor/border_only, +/obj/effect/wingrille_spawn/reinforced, +/turf/simulated/floor/plating, +/area/security/main) +"bgi" = ( +/obj/structure/cable/green{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/obj/machinery/door/firedoor/glass, +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/obj/machinery/door/airlock/glass_security{ + name = "Briefing Room"; + req_access = list(1) + }, +/turf/simulated/floor/tiled/steel_grid, +/area/security/main) +"bgj" = ( +/obj/machinery/door/firedoor/glass, +/obj/machinery/door/airlock/glass_security{ + name = "Briefing Room"; + req_access = list(1) + }, +/turf/simulated/floor/tiled/steel_grid, +/area/security/main) +"bgk" = ( +/obj/machinery/door/firedoor/border_only, +/obj/effect/wingrille_spawn/reinforced, +/obj/structure/disposalpipe/segment, +/turf/simulated/floor/plating, +/area/security/main) +"bgl" = ( +/obj/machinery/atmospherics/unary/vent_scrubber/on{ + dir = 4 + }, +/obj/machinery/alarm{ + dir = 4; + pixel_x = -23; + pixel_y = 0 + }, +/obj/effect/floor_decal/borderfloorwhite{ + dir = 8 + }, +/obj/effect/floor_decal/corner/paleblue/border{ + dir = 8 + }, +/turf/simulated/floor/tiled/white, +/area/security/aid_station) +"bgm" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 6 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 10 + }, +/obj/structure/cable/green{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/obj/machinery/hologram/holopad, +/obj/effect/floor_decal/industrial/outline/grey, +/turf/simulated/floor/tiled/white, +/area/security/aid_station) +"bgn" = ( +/obj/machinery/atmospherics/unary/vent_pump/on{ + dir = 8 + }, +/obj/machinery/firealarm{ + dir = 4; + pixel_x = 24 + }, +/obj/machinery/light{ + dir = 4; + icon_state = "tube1"; + pixel_x = 0 + }, +/obj/effect/floor_decal/borderfloorwhite{ + dir = 4 + }, +/obj/effect/floor_decal/corner/paleblue/border{ + dir = 4 + }, +/turf/simulated/floor/tiled/white, +/area/security/aid_station) +"bgo" = ( +/obj/machinery/atmospherics/unary/vent_scrubber/on{ + dir = 4 + }, +/obj/machinery/firealarm{ + dir = 8; + pixel_x = -24 + }, +/turf/simulated/floor/tiled, +/area/security/security_ses) +"bgp" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 6 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 10 + }, +/obj/structure/cable/green{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/turf/simulated/floor/tiled, +/area/security/security_ses) +"bgq" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/turf/simulated/floor/tiled, +/area/security/security_ses) +"bgr" = ( +/obj/machinery/atmospherics/unary/vent_pump/on{ + dir = 8 + }, +/turf/simulated/floor/tiled, +/area/security/security_ses) +"bgs" = ( +/turf/simulated/floor/tiled, +/area/security/security_ses) +"bgt" = ( +/obj/structure/sign/warning/bomb_range, +/turf/simulated/wall, +/area/rnd/test_area) +"bgu" = ( +/obj/machinery/door/airlock/external{ + name = "Toxins Test Chamber" + }, +/obj/structure/cable/green{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/turf/simulated/floor/airless, +/area/rnd/test_area) +"bgv" = ( +/obj/structure/grille, +/turf/simulated/wall/r_wall, +/area/engineering/atmos) +"bgw" = ( +/obj/machinery/atmospherics/pipe/simple/visible/red, +/obj/structure/lattice, +/turf/space, +/area/space) +"bgx" = ( +/turf/simulated/wall/r_wall, +/area/security/riot_control) +"bgy" = ( +/turf/simulated/wall, +/area/security/riot_control) +"bgz" = ( +/obj/machinery/atmospherics/pipe/simple/hidden, +/obj/machinery/door/firedoor/border_only, +/obj/machinery/door/airlock/security{ + name = "Riot Control"; + req_access = list(2) + }, +/obj/structure/cable/green{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/turf/simulated/floor/plating, +/area/security/riot_control) +"bgA" = ( +/obj/machinery/door/firedoor/border_only, +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/obj/machinery/door/airlock/glass_security{ + name = "Solitary Confinement 1"; + req_access = list(2) + }, +/turf/simulated/floor/tiled/steel_grid, +/area/security/security_cell_hallway) +"bgB" = ( +/obj/machinery/door/firedoor/border_only, +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/obj/machinery/door/airlock/glass_security{ + name = "Solitary Confinement 2"; + req_access = list(2) + }, +/turf/simulated/floor/tiled/steel_grid, +/area/security/security_cell_hallway) +"bgC" = ( +/obj/machinery/atmospherics/unary/vent_pump/on{ + dir = 1 + }, +/turf/simulated/floor/tiled, +/area/security/security_cell_hallway) +"bgD" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/obj/structure/cable/green{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/obj/effect/floor_decal/steeldecal/steel_decals4, +/obj/effect/floor_decal/steeldecal/steel_decals4{ + dir = 10 + }, +/turf/simulated/floor/tiled, +/area/security/security_cell_hallway) +"bgE" = ( +/obj/machinery/door/firedoor/glass, +/obj/machinery/door/airlock/glass_security{ + name = "Security Cells"; + req_access = list(1) + }, +/turf/simulated/floor/tiled/steel_grid, +/area/security/security_cell_hallway) +"bgF" = ( +/obj/effect/floor_decal/steeldecal/steel_decals4{ + dir = 1 + }, +/obj/effect/floor_decal/steeldecal/steel_decals4{ + dir = 6 + }, +/turf/simulated/floor/tiled, +/area/security/brig) +"bgG" = ( +/obj/structure/cable/green{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/obj/structure/disposalpipe/segment, +/obj/effect/floor_decal/steeldecal/steel_decals4{ + dir = 4 + }, +/obj/effect/floor_decal/steeldecal/steel_decals4{ + dir = 9 + }, +/turf/simulated/floor/tiled, +/area/security/brig) +"bgH" = ( +/obj/structure/cable/green{ + d2 = 4; + icon_state = "0-4" + }, +/obj/machinery/door/firedoor/border_only, +/obj/effect/wingrille_spawn/reinforced, +/obj/structure/disposalpipe/segment, +/turf/simulated/floor/plating, +/area/security/warden) +"bgI" = ( +/obj/structure/cable/green{ + d2 = 4; + icon_state = "0-4" + }, +/obj/structure/cable/green{ + d2 = 8; + icon_state = "0-8" + }, +/obj/machinery/door/firedoor/border_only, +/obj/effect/wingrille_spawn/reinforced, +/turf/simulated/floor/plating, +/area/security/warden) +"bgJ" = ( +/obj/structure/cable/green{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/obj/structure/cable/green{ + d1 = 2; + d2 = 4; + icon_state = "2-4" + }, +/obj/machinery/door/firedoor/glass, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/machinery/door/airlock/glass_security{ + name = "Warden's Office"; + req_access = list(3) + }, +/obj/structure/cable/green{ + d1 = 2; + d2 = 8; + icon_state = "2-8" + }, +/turf/simulated/floor/tiled/techmaint, +/area/security/warden) +"bgK" = ( +/obj/structure/cable/green{ + d2 = 8; + icon_state = "0-8" + }, +/obj/structure/cable/green{ + d2 = 4; + icon_state = "0-4" + }, +/obj/effect/wingrille_spawn/reinforced, +/obj/machinery/door/firedoor/border_only, +/turf/simulated/floor/plating, +/area/security/warden) +"bgL" = ( +/obj/structure/cable/green{ + d2 = 8; + icon_state = "0-8" + }, +/obj/structure/cable/green, +/obj/effect/wingrille_spawn/reinforced, +/obj/machinery/door/firedoor/border_only, +/turf/simulated/floor/plating, +/area/security/warden) +"bgM" = ( +/obj/machinery/door/firedoor/border_only, +/obj/effect/floor_decal/borderfloor{ + dir = 8 + }, +/obj/effect/floor_decal/corner/red/border{ + dir = 8 + }, +/turf/simulated/floor/tiled, +/area/security/brig) +"bgN" = ( +/obj/machinery/door/firedoor/glass, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/structure/cable/green{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/turf/simulated/floor/tiled, +/area/security/brig) +"bgO" = ( +/obj/machinery/door/firedoor/border_only, +/obj/effect/floor_decal/borderfloor{ + dir = 4 + }, +/obj/effect/floor_decal/corner/red/border{ + dir = 4 + }, +/turf/simulated/floor/tiled, +/area/security/brig) +"bgP" = ( +/obj/structure/cable/green{ + d2 = 4; + icon_state = "0-4" + }, +/obj/structure/cable/green, +/obj/machinery/door/firedoor/border_only, +/obj/effect/wingrille_spawn/reinforced/polarized{ + id = "secpro" + }, +/turf/simulated/floor/plating, +/area/security/security_processing) +"bgQ" = ( +/obj/structure/cable/green{ + d2 = 4; + icon_state = "0-4" + }, +/obj/structure/cable/green{ + d2 = 8; + icon_state = "0-8" + }, +/obj/machinery/door/firedoor/border_only, +/obj/effect/wingrille_spawn/reinforced/polarized{ + id = "secpro" + }, +/turf/simulated/floor/plating, +/area/security/security_processing) +"bgR" = ( +/obj/structure/cable/green{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/obj/structure/cable/green{ + d1 = 2; + d2 = 8; + icon_state = "2-8" + }, +/obj/machinery/door/firedoor/border_only, +/obj/machinery/door/airlock/security{ + name = "Security Processing"; + req_access = list(1) + }, +/turf/simulated/floor/tiled/steel_grid, +/area/security/security_processing) +"bgS" = ( +/obj/machinery/vending/security, +/obj/effect/floor_decal/borderfloor{ + dir = 9 + }, +/obj/effect/floor_decal/corner/red/border{ + dir = 9 + }, +/turf/simulated/floor/tiled, +/area/security/brig) +"bgT" = ( +/obj/effect/floor_decal/borderfloor/corner{ + dir = 1 + }, +/obj/effect/floor_decal/corner/red/bordercorner{ + dir = 1 + }, +/turf/simulated/floor/tiled, +/area/security/brig) +"bgU" = ( +/obj/structure/cable/green{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/obj/effect/floor_decal/steeldecal/steel_decals4{ + dir = 4 + }, +/obj/effect/floor_decal/steeldecal/steel_decals4{ + dir = 9 + }, +/turf/simulated/floor/tiled, +/area/security/brig) +"bgV" = ( +/obj/effect/floor_decal/steeldecal/steel_decals4{ + dir = 4 + }, +/obj/effect/floor_decal/steeldecal/steel_decals4{ + dir = 9 + }, +/turf/simulated/floor/tiled, +/area/security/brig) +"bgW" = ( +/obj/machinery/atmospherics/unary/vent_pump/on, +/obj/effect/floor_decal/borderfloor/corner{ + dir = 4 + }, +/obj/effect/floor_decal/corner/red/bordercorner{ + dir = 4 + }, +/turf/simulated/floor/tiled, +/area/security/brig) +"bgX" = ( +/obj/structure/disposalpipe/segment, +/obj/effect/floor_decal/borderfloor{ + dir = 5 + }, +/obj/effect/floor_decal/corner/red/border{ + dir = 5 + }, +/turf/simulated/floor/tiled, +/area/security/brig) +"bgY" = ( +/obj/effect/floor_decal/borderfloorwhite{ + dir = 8 + }, +/obj/effect/floor_decal/corner/paleblue/border{ + dir = 8 + }, +/turf/simulated/floor/tiled/white, +/area/security/aid_station) +"bgZ" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/obj/structure/cable/green{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/obj/effect/floor_decal/steeldecal/steel_decals4{ + dir = 5 + }, +/obj/effect/floor_decal/steeldecal/steel_decals4{ + dir = 8 + }, +/turf/simulated/floor/tiled/white, +/area/security/aid_station) +"bha" = ( +/obj/structure/bed/roller, +/obj/structure/extinguisher_cabinet{ + pixel_x = 28; + pixel_y = 0 + }, +/obj/effect/floor_decal/borderfloorwhite{ + dir = 4 + }, +/obj/effect/floor_decal/corner/paleblue/border{ + dir = 4 + }, +/turf/simulated/floor/tiled/white, +/area/security/aid_station) +"bhb" = ( +/obj/structure/table/rack, +/obj/item/weapon/storage/box/seccarts{ + pixel_x = 3; + pixel_y = 2 + }, +/obj/item/weapon/storage/box/handcuffs, +/obj/item/weapon/storage/box/flashbangs{ + pixel_x = -2; + pixel_y = -2 + }, +/obj/effect/floor_decal/industrial/outline/yellow, +/turf/simulated/floor/tiled, +/area/security/security_ses) +"bhc" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/obj/structure/cable/green{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/obj/effect/floor_decal/steeldecal/steel_decals4{ + dir = 5 + }, +/obj/effect/floor_decal/steeldecal/steel_decals4{ + dir = 8 + }, +/turf/simulated/floor/tiled, +/area/security/security_ses) +"bhd" = ( +/obj/structure/table/rack, +/obj/item/clothing/mask/gas{ + pixel_x = 3; + pixel_y = 3 + }, +/obj/item/clothing/mask/gas{ + pixel_x = 3; + pixel_y = 3 + }, +/obj/item/clothing/mask/gas, +/obj/item/clothing/mask/gas, +/obj/item/clothing/mask/gas{ + pixel_x = -3; + pixel_y = -3 + }, +/obj/item/clothing/mask/gas{ + pixel_x = -3; + pixel_y = -3 + }, +/obj/effect/floor_decal/industrial/outline/yellow, +/obj/machinery/light, +/turf/simulated/floor/tiled, +/area/security/security_ses) +"bhe" = ( +/obj/structure/table/rack, +/obj/structure/window/reinforced, +/obj/structure/window/reinforced{ + dir = 8 + }, +/obj/item/weapon/gun/energy/taser, +/obj/item/weapon/gun/energy/taser, +/obj/item/weapon/gun/energy/taser, +/obj/item/weapon/gun/energy/stunrevolver, +/obj/item/weapon/gun/energy/stunrevolver, +/obj/machinery/door/window/northleft, +/turf/simulated/floor/tiled, +/area/security/security_ses) +"bhf" = ( +/obj/structure/table/rack, +/obj/structure/window/reinforced, +/obj/structure/window/reinforced{ + dir = 4; + health = 1e+006 + }, +/obj/item/weapon/reagent_containers/spray/pepper, +/obj/item/weapon/reagent_containers/spray/pepper, +/obj/item/weapon/reagent_containers/spray/pepper, +/obj/machinery/door/window/northright, +/turf/simulated/floor/tiled, +/area/security/security_ses) +"bhg" = ( +/turf/simulated/floor/airless, +/area/space) +"bhh" = ( +/obj/structure/cable/green{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/turf/simulated/floor/airless, +/area/space) +"bhi" = ( +/obj/effect/floor_decal/corner/red/full{ + dir = 8 + }, +/obj/machinery/air_sensor{ + frequency = 1441; + id_tag = "n2_sensor" + }, +/turf/simulated/floor/reinforced/nitrogen, +/area/engineering/atmos) +"bhj" = ( +/obj/effect/floor_decal/corner/red/full{ + dir = 1 + }, +/obj/machinery/camera/network/engineering{ + c_tag = "Atmos Tank - Nitrogen"; + dir = 2 + }, +/obj/machinery/light/small{ + dir = 1 + }, +/turf/simulated/floor/reinforced/nitrogen, +/area/engineering/atmos) +"bhk" = ( +/obj/effect/floor_decal/corner/blue/full{ + dir = 8 + }, +/obj/machinery/air_sensor{ + frequency = 1441; + id_tag = "o2_sensor" + }, +/turf/simulated/floor/reinforced/oxygen, +/area/engineering/atmos) +"bhl" = ( +/obj/effect/floor_decal/corner/blue/full{ + dir = 1 + }, +/obj/machinery/camera/network/engineering{ + c_tag = "Atmos Tank - Oxygen"; + dir = 2 + }, +/obj/machinery/light/small{ + dir = 1 + }, +/turf/simulated/floor/reinforced/oxygen, +/area/engineering/atmos) +"bhm" = ( +/obj/machinery/air_sensor{ + frequency = 1443; + id_tag = "air_sensor"; + output = 7 + }, +/obj/effect/floor_decal/corner/blue/diagonal{ + dir = 4 + }, +/obj/effect/floor_decal/corner/white{ + icon_state = "corner_white"; + dir = 1 + }, +/turf/simulated/floor/reinforced/airmix, +/area/engineering/atmos) +"bhn" = ( +/obj/machinery/camera/network/engineering{ + c_tag = "Atmos Tank - Air"; + dir = 2 + }, +/obj/machinery/light/small{ + dir = 1 + }, +/obj/effect/floor_decal/corner/white/diagonal, +/obj/effect/floor_decal/corner/blue{ + dir = 4 + }, +/turf/simulated/floor/reinforced/airmix, +/area/engineering/atmos) +"bho" = ( +/obj/machinery/atmospherics/pipe/simple/visible/red, +/obj/structure/lattice, +/obj/effect/landmark{ + name = "carpspawn" + }, +/turf/space, +/area/space) +"bhp" = ( +/obj/machinery/air_sensor{ + frequency = 1441; + id_tag = "waste_sensor"; + output = 63 + }, +/obj/effect/floor_decal/corner/lime/full{ + dir = 8 + }, +/turf/simulated/floor/reinforced/airless, +/area/engineering/atmos) +"bhq" = ( +/obj/effect/floor_decal/corner/lime/full{ + dir = 1 + }, +/obj/machinery/light/small{ + dir = 1 + }, +/obj/machinery/camera/network/engineering{ + c_tag = "Atmos Tank - Gas Mixing"; + dir = 2 + }, +/turf/simulated/floor/reinforced/airless, +/area/engineering/atmos) +"bhr" = ( +/obj/machinery/power/apc{ + dir = 8; + name = "west bump"; + pixel_x = -24 + }, +/obj/machinery/light_switch{ + pixel_x = -36 + }, +/obj/structure/cable/green{ + d2 = 4; + icon_state = "0-4" + }, +/turf/simulated/floor/plating, +/area/security/riot_control) +"bhs" = ( +/obj/machinery/atmospherics/binary/pump{ + dir = 1 + }, +/obj/effect/floor_decal/industrial/outline/yellow, +/obj/item/device/radio/intercom{ + dir = 4; + name = "Station Intercom (General)"; + pixel_x = 21 + }, +/obj/structure/cable/green{ + d1 = 1; + d2 = 8; + icon_state = "1-8" + }, +/turf/simulated/floor/plating, +/area/security/riot_control) +"bht" = ( +/obj/machinery/atmospherics/unary/vent_scrubber/on{ + dir = 4 + }, +/obj/structure/bed/chair, +/turf/simulated/floor/tiled, +/area/security/security_cell_hallway) +"bhu" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 9 + }, +/obj/effect/floor_decal/steeldecal/steel_decals4{ + dir = 9 + }, +/obj/effect/floor_decal/steeldecal/steel_decals4{ + dir = 4 + }, +/turf/simulated/floor/tiled, +/area/security/security_cell_hallway) +"bhv" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 5 + }, +/obj/effect/floor_decal/steeldecal/steel_decals4{ + dir = 9 + }, +/obj/effect/floor_decal/steeldecal/steel_decals4{ + dir = 4 + }, +/turf/simulated/floor/tiled, +/area/security/security_cell_hallway) +"bhw" = ( +/obj/machinery/atmospherics/unary/vent_scrubber/on{ + dir = 8 + }, +/obj/structure/bed/chair, +/turf/simulated/floor/tiled, +/area/security/security_cell_hallway) +"bhx" = ( +/obj/structure/cable/green{ + d2 = 4; + icon_state = "0-4" + }, +/obj/machinery/power/apc{ + dir = 8; + name = "west bump"; + pixel_x = -24 + }, +/obj/machinery/light_switch{ + pixel_x = -36 + }, +/turf/simulated/floor/tiled, +/area/security/security_cell_hallway) +"bhy" = ( +/obj/structure/cable/green{ + d1 = 1; + d2 = 4; + icon_state = "1-4" + }, +/obj/structure/cable/green{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 5 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 5 + }, +/obj/effect/floor_decal/steeldecal/steel_decals4, +/obj/effect/floor_decal/steeldecal/steel_decals4{ + dir = 10 + }, +/turf/simulated/floor/tiled, +/area/security/security_cell_hallway) +"bhz" = ( +/obj/machinery/door/firedoor/glass, +/obj/machinery/door/airlock/glass_security{ + name = "Security Cells"; + req_access = list(1) + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, +/obj/structure/cable/green{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/turf/simulated/floor/tiled/steel_grid, +/area/security/security_cell_hallway) +"bhA" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, +/obj/structure/cable/green{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/obj/effect/floor_decal/steeldecal/steel_decals4{ + dir = 1 + }, +/obj/effect/floor_decal/steeldecal/steel_decals4{ + dir = 6 + }, +/turf/simulated/floor/tiled, +/area/security/brig) +"bhB" = ( +/obj/structure/cable/green{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/obj/structure/cable/green{ + d1 = 1; + d2 = 4; + icon_state = "1-4" + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/obj/structure/disposalpipe/segment, +/turf/simulated/floor/tiled, +/area/security/brig) +"bhC" = ( +/obj/structure/cable/green{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/obj/structure/cable/green{ + d1 = 2; + d2 = 4; + icon_state = "2-4" + }, +/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{ + dir = 1 + }, +/obj/machinery/atmospherics/pipe/manifold/hidden/supply{ + dir = 1 + }, +/obj/structure/extinguisher_cabinet{ + pixel_y = 30 + }, +/obj/effect/floor_decal/borderfloor{ + dir = 1 + }, +/obj/effect/floor_decal/corner/red/border{ + dir = 1 + }, +/obj/effect/floor_decal/borderfloor/corner2{ + dir = 4 + }, +/obj/effect/floor_decal/corner/red/bordercorner2{ + dir = 4 + }, +/turf/simulated/floor/tiled, +/area/security/brig) +"bhD" = ( +/obj/structure/cable/green{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/obj/structure/disposalpipe/segment, +/obj/effect/floor_decal/borderfloor{ + dir = 1 + }, +/obj/effect/floor_decal/corner/red/border{ + dir = 1 + }, +/turf/simulated/floor/tiled, +/area/security/brig) +"bhE" = ( +/obj/structure/cable/green{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/manifold/hidden/supply{ + dir = 1 + }, +/obj/effect/floor_decal/borderfloor/corner{ + dir = 1 + }, +/obj/effect/floor_decal/corner/red/bordercorner{ + dir = 1 + }, +/turf/simulated/floor/tiled, +/area/security/brig) +"bhF" = ( +/obj/structure/cable/green{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/obj/structure/cable/green{ + d1 = 1; + d2 = 4; + icon_state = "1-4" + }, +/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/manifold/hidden/supply, +/obj/effect/floor_decal/steeldecal/steel_decals4{ + dir = 4 + }, +/obj/effect/floor_decal/steeldecal/steel_decals4{ + dir = 9 + }, +/turf/simulated/floor/tiled, +/area/security/brig) +"bhG" = ( +/obj/structure/cable/green{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/obj/structure/cable/green{ + d1 = 2; + d2 = 4; + icon_state = "2-4" + }, +/obj/machinery/atmospherics/unary/vent_scrubber/on, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/obj/machinery/light{ + dir = 1 + }, +/obj/effect/floor_decal/borderfloor/corner{ + dir = 4 + }, +/obj/effect/floor_decal/corner/red/bordercorner{ + dir = 4 + }, +/turf/simulated/floor/tiled, +/area/security/brig) +"bhH" = ( +/obj/structure/cable/green{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/obj/effect/floor_decal/borderfloor{ + dir = 1 + }, +/obj/effect/floor_decal/corner/red/border{ + dir = 1 + }, +/turf/simulated/floor/tiled, +/area/security/brig) +"bhI" = ( +/obj/structure/cable/green{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/obj/machinery/recharger/wallcharger{ + pixel_x = 4; + pixel_y = 26 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/obj/effect/floor_decal/borderfloor{ + dir = 1 + }, +/obj/effect/floor_decal/corner/red/border{ + dir = 1 + }, +/turf/simulated/floor/tiled, +/area/security/brig) +"bhJ" = ( +/obj/structure/cable/green{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/obj/effect/floor_decal/borderfloor/corner{ + dir = 1 + }, +/obj/effect/floor_decal/corner/red/bordercorner{ + dir = 1 + }, +/turf/simulated/floor/tiled, +/area/security/brig) +"bhK" = ( +/obj/structure/cable/green{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/obj/structure/cable/green{ + d1 = 2; + d2 = 4; + icon_state = "2-4" + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/obj/machinery/atmospherics/pipe/manifold4w/hidden/supply, +/obj/machinery/hologram/holopad, +/obj/structure/cable/green{ + d1 = 1; + d2 = 4; + icon_state = "1-4" + }, +/turf/simulated/floor/tiled, +/area/security/brig) +"bhL" = ( +/obj/structure/cable/green{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/obj/effect/floor_decal/borderfloor/corner{ + dir = 4 + }, +/obj/effect/floor_decal/corner/red/bordercorner{ + dir = 4 + }, +/turf/simulated/floor/tiled, +/area/security/brig) +"bhM" = ( +/obj/structure/cable/green{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/obj/machinery/atmospherics/pipe/manifold/hidden/supply{ + dir = 1 + }, +/obj/effect/floor_decal/borderfloor{ + dir = 1 + }, +/obj/effect/floor_decal/corner/red/border{ + dir = 1 + }, +/turf/simulated/floor/tiled, +/area/security/brig) +"bhN" = ( +/obj/structure/cable/green{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/obj/structure/cable/green{ + d1 = 2; + d2 = 4; + icon_state = "2-4" + }, +/obj/machinery/atmospherics/unary/vent_scrubber/on, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/obj/machinery/light{ + dir = 1 + }, +/obj/effect/floor_decal/borderfloor/corner{ + dir = 1 + }, +/obj/effect/floor_decal/corner/red/bordercorner{ + dir = 1 + }, +/turf/simulated/floor/tiled, +/area/security/brig) +"bhO" = ( +/obj/structure/cable/green{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/obj/structure/cable/green{ + d1 = 1; + d2 = 4; + icon_state = "1-4" + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 6 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/obj/structure/cable/green{ + d1 = 2; + d2 = 4; + icon_state = "2-4" + }, +/obj/effect/floor_decal/steeldecal/steel_decals4{ + dir = 4 + }, +/obj/effect/floor_decal/steeldecal/steel_decals4{ + dir = 9 + }, +/turf/simulated/floor/tiled, +/area/security/brig) +"bhP" = ( +/obj/structure/cable/green{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/manifold/hidden/supply{ + dir = 1 + }, +/obj/effect/floor_decal/borderfloor/corner{ + dir = 4 + }, +/obj/effect/floor_decal/corner/red/bordercorner{ + dir = 4 + }, +/turf/simulated/floor/tiled, +/area/security/brig) +"bhQ" = ( +/obj/structure/cable/green{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/obj/machinery/camera/network/security{ + c_tag = "SEC - Brig Hallway Mid"; + dir = 2 + }, +/obj/effect/floor_decal/borderfloor{ + dir = 1 + }, +/obj/effect/floor_decal/corner/red/border{ + dir = 1 + }, +/turf/simulated/floor/tiled, +/area/security/brig) +"bhR" = ( +/obj/structure/cable/green{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/obj/structure/cable/green{ + d1 = 2; + d2 = 4; + icon_state = "2-4" + }, +/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{ + dir = 1 + }, +/obj/machinery/atmospherics/pipe/manifold/hidden/supply{ + dir = 1 + }, +/obj/structure/extinguisher_cabinet{ + pixel_y = 30 + }, +/obj/effect/floor_decal/borderfloor{ + dir = 1 + }, +/obj/effect/floor_decal/corner/red/border{ + dir = 1 + }, +/turf/simulated/floor/tiled, +/area/security/brig) +"bhS" = ( +/obj/structure/cable/green{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/obj/effect/floor_decal/borderfloor/corner{ + dir = 1 + }, +/obj/effect/floor_decal/corner/red/bordercorner{ + dir = 1 + }, +/turf/simulated/floor/tiled, +/area/security/brig) +"bhT" = ( +/obj/structure/cable/green{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/turf/simulated/floor/tiled, +/area/security/brig) +"bhU" = ( +/obj/structure/cable/green{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/obj/structure/cable/green{ + d1 = 1; + d2 = 4; + icon_state = "1-4" + }, +/obj/machinery/atmospherics/pipe/manifold/hidden/supply, +/obj/machinery/atmospherics/pipe/manifold4w/hidden/scrubbers, +/turf/simulated/floor/tiled, +/area/security/brig) +"bhV" = ( +/obj/structure/cable/green{ + d1 = 2; + d2 = 8; + icon_state = "2-8" + }, +/obj/machinery/atmospherics/pipe/manifold/hidden/supply{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 10 + }, +/turf/simulated/floor/tiled, +/area/security/brig) +"bhW" = ( +/obj/structure/disposalpipe/segment, +/obj/effect/floor_decal/borderfloor/corner{ + dir = 4 + }, +/obj/effect/floor_decal/corner/red/bordercorner{ + dir = 4 + }, +/turf/simulated/floor/tiled, +/area/security/brig) +"bhX" = ( +/obj/machinery/door/firedoor/border_only, +/obj/effect/wingrille_spawn/reinforced, +/turf/simulated/floor/plating, +/area/security/aid_station) +"bhY" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/obj/machinery/door/firedoor/glass, +/obj/structure/cable/green{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/obj/machinery/door/airlock/glass_security{ + name = "Security Medical"; + req_access = newlist() + }, +/turf/simulated/floor/tiled/white, +/area/security/aid_station) +"bhZ" = ( +/obj/effect/wingrille_spawn/reinforced, +/obj/machinery/door/firedoor/border_only, +/turf/simulated/floor/plating, +/area/security/security_ses) +"bia" = ( +/obj/machinery/door/firedoor/border_only, +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/obj/structure/cable/green{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/obj/machinery/door/airlock/security{ + name = "Secondary Equipment Storage"; + req_access = list(2) + }, +/turf/simulated/floor/tiled/steel_grid, +/area/security/security_ses) +"bib" = ( +/obj/effect/floor_decal/corner/red/full, +/obj/machinery/atmospherics/unary/vent_pump{ + dir = 2; + external_pressure_bound = 0; + external_pressure_bound_default = 0; + frequency = 1441; + icon_state = "map_vent_in"; + id_tag = "n2_out"; + initialize_directions = 1; + internal_pressure_bound = 4000; + internal_pressure_bound_default = 4000; + pressure_checks = 2; + pressure_checks_default = 2; + pump_direction = 0; + use_power = 1 + }, +/turf/simulated/floor/reinforced/nitrogen, +/area/engineering/atmos) +"bic" = ( +/obj/effect/floor_decal/corner/red/full{ + dir = 4 + }, +/obj/machinery/atmospherics/unary/outlet_injector{ + dir = 2; + frequency = 1441; + icon_state = "map_injector"; + id = "n2_in"; + use_power = 1 + }, +/turf/simulated/floor/reinforced/nitrogen, +/area/engineering/atmos) +"bid" = ( +/obj/effect/floor_decal/corner/blue/full, +/obj/machinery/atmospherics/unary/vent_pump{ + dir = 2; + external_pressure_bound = 0; + external_pressure_bound_default = 0; + frequency = 1441; + icon_state = "map_vent_in"; + id_tag = "o2_out"; + initialize_directions = 1; + internal_pressure_bound = 4000; + internal_pressure_bound_default = 4000; + pressure_checks = 2; + pressure_checks_default = 2; + pump_direction = 0; + use_power = 1 + }, +/turf/simulated/floor/reinforced/oxygen, +/area/engineering/atmos) +"bie" = ( +/obj/effect/floor_decal/corner/blue/full{ + dir = 4 + }, +/obj/machinery/atmospherics/unary/outlet_injector{ + dir = 2; + frequency = 1441; + icon_state = "map_injector"; + id = "o2_in"; + use_power = 1 + }, +/turf/simulated/floor/reinforced/oxygen, +/area/engineering/atmos) +"bif" = ( +/obj/machinery/atmospherics/unary/outlet_injector{ + dir = 2; + frequency = 1443; + icon_state = "map_injector"; + id = "air_in"; + use_power = 1 + }, +/obj/effect/floor_decal/corner/white/diagonal, +/obj/effect/floor_decal/corner/blue{ + dir = 8 + }, +/turf/simulated/floor/reinforced/airmix, +/area/engineering/atmos) +"big" = ( +/obj/machinery/atmospherics/unary/vent_pump/high_volume{ + dir = 2; + external_pressure_bound = 0; + external_pressure_bound_default = 0; + frequency = 1443; + icon_state = "map_vent_in"; + id_tag = "air_out"; + internal_pressure_bound = 2000; + internal_pressure_bound_default = 2000; + pressure_checks = 2; + pressure_checks_default = 2; + pump_direction = 0; + use_power = 1 + }, +/obj/effect/floor_decal/corner/blue/diagonal{ + dir = 4 + }, +/obj/effect/floor_decal/corner/white, +/turf/simulated/floor/reinforced/airmix, +/area/engineering/atmos) +"bih" = ( +/obj/machinery/atmospherics/unary/outlet_injector{ + dir = 2; + frequency = 1441; + icon_state = "map_injector"; + id = "waste_in"; + pixel_y = 1; + use_power = 1 + }, +/obj/effect/floor_decal/corner/lime/full, +/turf/simulated/floor/reinforced/airless, +/area/engineering/atmos) +"bii" = ( +/obj/machinery/atmospherics/unary/vent_pump{ + dir = 2; + external_pressure_bound = 0; + external_pressure_bound_default = 0; + frequency = 1441; + icon_state = "map_vent_in"; + id_tag = "waste_out"; + initialize_directions = 1; + internal_pressure_bound = 4000; + internal_pressure_bound_default = 4000; + pressure_checks = 2; + pressure_checks_default = 2; + pump_direction = 0; + use_power = 1 + }, +/obj/effect/floor_decal/corner/lime/full{ + dir = 4 + }, +/turf/simulated/floor/reinforced/airless, +/area/engineering/atmos) +"bij" = ( +/obj/machinery/atmospherics/pipe/simple/hidden{ + dir = 6 + }, +/obj/machinery/computer/area_atmos/area, +/turf/simulated/floor/plating, +/area/security/riot_control) +"bik" = ( +/obj/machinery/meter, +/obj/machinery/atmospherics/pipe/simple/hidden{ + dir = 4 + }, +/obj/item/weapon/stool, +/turf/simulated/floor/plating, +/area/security/riot_control) +"bil" = ( +/obj/machinery/atmospherics/pipe/manifold/hidden{ + dir = 4; + icon_state = "map" + }, +/obj/machinery/light/small{ + dir = 4 + }, +/turf/simulated/floor/plating, +/area/security/riot_control) +"bim" = ( +/obj/structure/table/steel, +/obj/item/weapon/pen, +/obj/item/weapon/paper, +/obj/machinery/alarm{ + dir = 4; + pixel_x = -23; + pixel_y = 0 + }, +/obj/item/device/radio/headset, +/turf/simulated/floor/tiled, +/area/security/security_cell_hallway) +"bin" = ( +/obj/machinery/atmospherics/unary/vent_pump/on{ + dir = 1 + }, +/obj/machinery/light/small{ + dir = 4; + pixel_y = 0 + }, +/turf/simulated/floor/tiled, +/area/security/security_cell_hallway) +"bio" = ( +/obj/machinery/atmospherics/unary/vent_pump/on{ + dir = 1 + }, +/obj/machinery/light/small{ + dir = 8 + }, +/turf/simulated/floor/tiled, +/area/security/security_cell_hallway) +"bip" = ( +/obj/structure/table/steel, +/obj/item/weapon/pen, +/obj/item/weapon/paper, +/obj/machinery/alarm{ + dir = 8; + pixel_x = 22; + pixel_y = 0 + }, +/obj/item/device/radio/headset, +/turf/simulated/floor/tiled, +/area/security/security_cell_hallway) +"biq" = ( +/obj/structure/closet/secure_closet/brig, +/obj/effect/floor_decal/industrial/outline/grey, +/obj/machinery/light, +/obj/item/device/radio/headset, +/turf/simulated/floor/tiled/dark, +/area/security/security_cell_hallway) +"bir" = ( +/obj/structure/closet/secure_closet/brig, +/obj/effect/floor_decal/industrial/outline/grey, +/obj/item/device/radio/headset, +/turf/simulated/floor/tiled/dark, +/area/security/security_cell_hallway) +"bis" = ( +/obj/machinery/door/firedoor/border_only, +/obj/effect/wingrille_spawn/reinforced, +/turf/simulated/floor/plating, +/area/security/security_cell_hallway) +"bit" = ( +/obj/item/device/radio/intercom{ + desc = "Talk... listen through this."; + dir = 2; + name = "Station Intercom (Brig Radio)"; + pixel_x = 0; + pixel_y = -21; + wires = 7 + }, +/obj/effect/floor_decal/borderfloor, +/obj/effect/floor_decal/corner/red/border, +/turf/simulated/floor/tiled, +/area/security/brig) +"biu" = ( +/obj/structure/disposalpipe/junction/yjunction{ + dir = 4 + }, +/obj/effect/floor_decal/borderfloor/corner{ + dir = 8 + }, +/obj/effect/floor_decal/corner/red/bordercorner{ + dir = 8 + }, +/turf/simulated/floor/tiled, +/area/security/brig) +"biv" = ( +/obj/structure/cable/green{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/effect/floor_decal/steeldecal/steel_decals4{ + dir = 8 + }, +/obj/effect/floor_decal/steeldecal/steel_decals4{ + dir = 5 + }, +/turf/simulated/floor/tiled, +/area/security/brig) +"biw" = ( +/obj/structure/disposalpipe/junction{ + icon_state = "pipe-j2"; + dir = 4 + }, +/obj/effect/floor_decal/borderfloor/corner, +/obj/effect/floor_decal/corner/red/bordercorner, +/turf/simulated/floor/tiled, +/area/security/brig) +"bix" = ( +/obj/machinery/atmospherics/unary/vent_pump/on{ + dir = 1 + }, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/effect/floor_decal/borderfloor, +/obj/effect/floor_decal/corner/red/border, +/turf/simulated/floor/tiled, +/area/security/brig) +"biy" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 5 + }, +/obj/machinery/firealarm{ + dir = 1; + pixel_x = 0; + pixel_y = -26 + }, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/effect/floor_decal/borderfloor, +/obj/effect/floor_decal/corner/red/border, +/turf/simulated/floor/tiled, +/area/security/brig) +"biz" = ( +/obj/structure/cable/green{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers, +/obj/machinery/camera/network/security{ + c_tag = "SEC - Brig Hallway Port"; + dir = 1 + }, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/effect/floor_decal/borderfloor/corner{ + dir = 8 + }, +/obj/effect/floor_decal/corner/red/bordercorner{ + dir = 8 + }, +/turf/simulated/floor/tiled, +/area/security/brig) +"biA" = ( +/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{ + dir = 1 + }, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/effect/floor_decal/steeldecal/steel_decals4{ + dir = 8 + }, +/obj/effect/floor_decal/steeldecal/steel_decals4{ + dir = 5 + }, +/turf/simulated/floor/tiled, +/area/security/brig) +"biB" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/effect/floor_decal/borderfloor/corner, +/obj/effect/floor_decal/corner/red/bordercorner, +/turf/simulated/floor/tiled, +/area/security/brig) +"biC" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, +/obj/structure/disposalpipe/junction{ + icon_state = "pipe-j1"; + dir = 4 + }, +/obj/effect/floor_decal/borderfloor, +/obj/effect/floor_decal/corner/red/border, +/turf/simulated/floor/tiled, +/area/security/brig) +"biD" = ( +/obj/structure/cable/green{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/obj/machinery/atmospherics/pipe/manifold4w/hidden/scrubbers, +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/effect/floor_decal/borderfloor, +/obj/effect/floor_decal/corner/red/border, +/turf/simulated/floor/tiled, +/area/security/brig) +"biE" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/effect/floor_decal/borderfloor, +/obj/effect/floor_decal/corner/red/border, +/turf/simulated/floor/tiled, +/area/security/brig) +"biF" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, +/obj/machinery/alarm{ + dir = 1; + pixel_y = -22 + }, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/effect/floor_decal/borderfloor/corner{ + dir = 8 + }, +/obj/effect/floor_decal/corner/red/bordercorner{ + dir = 8 + }, +/turf/simulated/floor/tiled, +/area/security/brig) +"biG" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/effect/floor_decal/steeldecal/steel_decals4{ + dir = 8 + }, +/obj/effect/floor_decal/steeldecal/steel_decals4{ + dir = 5 + }, +/turf/simulated/floor/tiled, +/area/security/brig) +"biH" = ( +/obj/structure/cable/green{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/effect/floor_decal/borderfloor/corner, +/obj/effect/floor_decal/corner/red/bordercorner, +/turf/simulated/floor/tiled, +/area/security/brig) +"biI" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 9 + }, +/obj/machinery/power/apc{ + dir = 2; + name = "south bump"; + pixel_y = -24 + }, +/obj/machinery/light_switch{ + pixel_x = 12; + pixel_y = -24 + }, +/obj/structure/cable/green, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/effect/floor_decal/borderfloor, +/obj/effect/floor_decal/corner/red/border, +/turf/simulated/floor/tiled, +/area/security/brig) +"biJ" = ( +/obj/machinery/atmospherics/unary/vent_pump/on{ + dir = 1 + }, +/obj/structure/disposalpipe/sortjunction{ + dir = 4; + icon_state = "pipe-j1s"; + name = "HoS Office"; + sortType = "HoS Office" + }, +/obj/effect/floor_decal/borderfloor/corner{ + dir = 8 + }, +/obj/effect/floor_decal/corner/red/bordercorner{ + dir = 8 + }, +/turf/simulated/floor/tiled, +/area/security/brig) +"biK" = ( +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/turf/simulated/floor/tiled, +/area/security/brig) +"biL" = ( +/obj/structure/cable/green{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/turf/simulated/floor/tiled, +/area/security/brig) +"biM" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/turf/simulated/floor/tiled, +/area/security/brig) +"biN" = ( +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 5 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/structure/cable/green{ + d1 = 1; + d2 = 4; + icon_state = "1-4" + }, +/turf/simulated/floor/tiled, +/area/security/brig) +"biO" = ( +/obj/structure/disposalpipe/sortjunction/flipped{ + dir = 4; + name = "Security"; + sortType = "Security" + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, +/obj/structure/cable/green{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/obj/effect/floor_decal/steeldecal/steel_decals4{ + dir = 10 + }, +/obj/effect/floor_decal/steeldecal/steel_decals4, +/turf/simulated/floor/tiled, +/area/security/brig) +"biP" = ( +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/machinery/door/firedoor/border_only, +/obj/machinery/door/airlock/glass_security{ + id_tag = "BrigFoyer"; + layer = 2.8; + name = "Security Wing"; + req_access = list(63) + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, +/obj/structure/cable/green{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/turf/simulated/floor/tiled/steel_grid, +/area/security/brig) +"biQ" = ( +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, +/obj/structure/cable/green{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/obj/effect/floor_decal/steeldecal/steel_decals4{ + dir = 1 + }, +/obj/effect/floor_decal/steeldecal/steel_decals4{ + dir = 6 + }, +/turf/simulated/floor/tiled, +/area/security/brig) +"biR" = ( +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers, +/obj/structure/cable/green{ + d1 = 1; + d2 = 4; + icon_state = "1-4" + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/structure/cable/green{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/obj/effect/floor_decal/steeldecal/steel_decals4{ + dir = 4 + }, +/obj/effect/floor_decal/steeldecal/steel_decals4{ + dir = 9 + }, +/turf/simulated/floor/tiled, +/area/security/brig) +"biS" = ( +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{ + dir = 1 + }, +/obj/structure/cable/green{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/obj/effect/floor_decal/borderfloor/corner{ + dir = 4 + }, +/obj/effect/floor_decal/corner/red/bordercorner{ + dir = 4 + }, +/turf/simulated/floor/tiled, +/area/security/brig) +"biT" = ( +/obj/structure/disposalpipe/segment{ + dir = 2; + icon_state = "pipe-c" + }, +/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{ + dir = 1 + }, +/obj/structure/cable/green{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/obj/effect/floor_decal/borderfloor{ + dir = 1 + }, +/obj/effect/floor_decal/corner/red/border{ + dir = 1 + }, +/turf/simulated/floor/tiled, +/area/security/brig) +"biU" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, +/obj/structure/cable/green{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/obj/effect/floor_decal/borderfloor/corner{ + dir = 1 + }, +/obj/effect/floor_decal/corner/red/bordercorner{ + dir = 1 + }, +/turf/simulated/floor/tiled, +/area/security/brig) +"biV" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 9 + }, +/obj/structure/cable/green{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/obj/structure/cable/green{ + d1 = 1; + d2 = 4; + icon_state = "1-4" + }, +/obj/effect/floor_decal/steeldecal/steel_decals4{ + dir = 4 + }, +/obj/effect/floor_decal/steeldecal/steel_decals4{ + dir = 9 + }, +/turf/simulated/floor/tiled, +/area/security/brig) +"biW" = ( +/obj/structure/cable/green{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/obj/effect/floor_decal/borderfloor/corner{ + dir = 4 + }, +/obj/effect/floor_decal/corner/red/bordercorner{ + dir = 4 + }, +/turf/simulated/floor/tiled, +/area/security/brig) +"biX" = ( +/obj/structure/cable/green{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/obj/effect/floor_decal/borderfloor{ + dir = 1 + }, +/obj/machinery/atmospherics/unary/vent_pump/on, +/obj/effect/floor_decal/corner/red/border{ + dir = 1 + }, +/turf/simulated/floor/tiled, +/area/security/brig) +"biY" = ( +/obj/structure/cable/green{ + d1 = 2; + d2 = 8; + icon_state = "2-8" + }, +/obj/effect/floor_decal/borderfloor{ + dir = 1 + }, +/obj/effect/floor_decal/corner/red/border{ + dir = 1 + }, +/turf/simulated/floor/tiled, +/area/security/brig) +"biZ" = ( +/obj/machinery/door/firedoor/border_only, +/obj/effect/wingrille_spawn/reinforced, +/obj/structure/cable/green{ + d2 = 2; + icon_state = "0-2" + }, +/turf/simulated/floor/plating, +/area/security/brig) +"bja" = ( +/obj/machinery/atmospherics/pipe/simple/visible/green, +/obj/machinery/door/firedoor/border_only, +/obj/effect/wingrille_spawn/reinforced, +/obj/machinery/meter, +/obj/machinery/door/blast/regular{ + density = 0; + dir = 1; + icon_state = "pdoor0"; + id = "atmoslockdown"; + name = "Atmospherics Lockdown"; + opacity = 0 + }, +/turf/simulated/floor, +/area/engineering/atmos) +"bjb" = ( +/obj/machinery/atmospherics/pipe/simple/visible/red, +/obj/machinery/door/firedoor/border_only, +/obj/effect/wingrille_spawn/reinforced, +/obj/machinery/meter, +/obj/machinery/door/blast/regular{ + density = 0; + dir = 1; + icon_state = "pdoor0"; + id = "atmoslockdown"; + name = "Atmospherics Lockdown"; + opacity = 0 + }, +/turf/simulated/floor, +/area/engineering/atmos) +"bjc" = ( +/obj/machinery/atmospherics/pipe/simple/visible/cyan, +/obj/machinery/door/firedoor/border_only, +/obj/effect/wingrille_spawn/reinforced, +/obj/machinery/meter{ + frequency = 1443; + id = "mair_in_meter"; + name = "Mixed Air Tank In" + }, +/obj/machinery/door/blast/regular{ + density = 0; + dir = 1; + icon_state = "pdoor0"; + id = "atmoslockdown"; + name = "Atmospherics Lockdown"; + opacity = 0 + }, +/turf/simulated/floor, +/area/engineering/atmos) +"bjd" = ( +/obj/machinery/atmospherics/pipe/simple/visible/cyan, +/obj/machinery/door/firedoor/border_only, +/obj/effect/wingrille_spawn/reinforced, +/obj/machinery/meter{ + frequency = 1443; + id = "mair_out_meter"; + name = "Mixed Air Tank Out" + }, +/obj/machinery/door/blast/regular{ + density = 0; + dir = 1; + icon_state = "pdoor0"; + id = "atmoslockdown"; + name = "Atmospherics Lockdown"; + opacity = 0 + }, +/turf/simulated/floor, +/area/engineering/atmos) +"bje" = ( +/obj/machinery/atmospherics/pipe/simple/visible/yellow, +/obj/machinery/door/firedoor/border_only, +/obj/effect/wingrille_spawn/reinforced, +/obj/machinery/meter, +/obj/machinery/door/blast/regular{ + density = 0; + dir = 1; + icon_state = "pdoor0"; + id = "atmoslockdown"; + name = "Atmospherics Lockdown"; + opacity = 0 + }, +/turf/simulated/floor, +/area/engineering/atmos) +"bjf" = ( +/obj/machinery/atmospherics/valve, +/obj/effect/floor_decal/industrial/warning{ + icon_state = "warning"; + dir = 9 + }, +/obj/machinery/camera/network/security{ + c_tag = "SEC - Riot Control"; + dir = 4 + }, +/obj/machinery/firealarm{ + dir = 8; + pixel_x = -24 + }, +/turf/simulated/floor/plating, +/area/security/riot_control) +"bjg" = ( +/turf/simulated/floor/plating, +/area/security/riot_control) +"bjh" = ( +/obj/machinery/atmospherics/valve, +/obj/effect/floor_decal/industrial/warning{ + icon_state = "warning"; + dir = 5 + }, +/obj/machinery/alarm{ + dir = 8; + pixel_x = 22; + pixel_y = 0 + }, +/turf/simulated/floor/plating, +/area/security/riot_control) +"bji" = ( +/obj/machinery/camera/network/security{ + c_tag = "SEC - Solitary Confinement 2"; + dir = 1 + }, +/obj/structure/cryofeed{ + dir = 4 + }, +/obj/structure/window/reinforced{ + dir = 1 + }, +/obj/structure/window/reinforced{ + dir = 8 + }, +/obj/structure/window/reinforced, +/obj/effect/floor_decal/industrial/warning{ + dir = 9 + }, +/turf/simulated/floor/tiled/techfloor/grid, +/area/security/security_cell_hallway) +"bjj" = ( +/obj/machinery/cryopod{ + dir = 4 + }, +/obj/effect/floor_decal/industrial/warning{ + icon_state = "warning"; + dir = 5 + }, +/turf/simulated/floor/tiled/techfloor/grid, +/area/security/security_cell_hallway) +"bjk" = ( +/obj/machinery/cryopod, +/obj/effect/floor_decal/industrial/warning{ + dir = 9 + }, +/turf/simulated/floor/tiled/techfloor/grid, +/area/security/security_cell_hallway) +"bjl" = ( +/obj/machinery/camera/network/security{ + c_tag = "SEC - Solitary Confinement 1"; + dir = 1 + }, +/obj/structure/cryofeed, +/obj/structure/window/reinforced{ + dir = 1 + }, +/obj/structure/window/reinforced{ + dir = 4 + }, +/obj/structure/window/reinforced, +/obj/effect/floor_decal/industrial/warning{ + icon_state = "warning"; + dir = 5 + }, +/turf/simulated/floor/tiled/techfloor/grid, +/area/security/security_cell_hallway) +"bjm" = ( +/turf/simulated/wall, +/area/security/detectives_office) +"bjn" = ( +/obj/machinery/ai_status_display, +/turf/simulated/wall, +/area/security/detectives_office) +"bjo" = ( +/obj/machinery/door/firedoor/border_only, +/obj/structure/disposalpipe/segment, +/obj/effect/wingrille_spawn/reinforced/polarized{ + id = "detoffice" + }, +/turf/simulated/floor/plating, +/area/security/detectives_office) +"bjp" = ( +/obj/structure/cable/green{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/machinery/door/airlock/security{ + id_tag = "detdoor"; + name = "Detective"; + req_access = list(4) + }, +/obj/machinery/door/firedoor/border_only, +/turf/simulated/floor/tiled/steel_grid, +/area/security/detectives_office) +"bjq" = ( +/obj/machinery/door/firedoor/border_only, +/obj/effect/wingrille_spawn/reinforced/polarized{ + id = "detoffice" + }, +/turf/simulated/floor/plating, +/area/security/detectives_office) +"bjr" = ( +/turf/simulated/wall/r_wall, +/area/security/detectives_office) +"bjs" = ( +/obj/machinery/door/firedoor/border_only, +/obj/structure/cable/green, +/obj/effect/wingrille_spawn/reinforced, +/turf/simulated/floor/plating, +/area/security/brig) +"bjt" = ( +/obj/machinery/door/firedoor/glass, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/obj/machinery/door/airlock/glass_security{ + id_tag = "BrigFoyer"; + layer = 2.8; + name = "Security Wing"; + req_access = list(63) + }, +/turf/simulated/floor/tiled/steel_grid, +/area/security/brig) +"bju" = ( +/turf/simulated/wall, +/area/security/lobby) +"bjv" = ( +/obj/machinery/door/window/brigdoor/northleft{ + req_access = list(63) + }, +/obj/machinery/light_switch{ + dir = 2; + name = "light switch "; + pixel_x = -34; + pixel_y = 0 + }, +/obj/machinery/button/remote/airlock{ + desc = "A remote control switch for the brig foyer."; + id = "BrigFoyer"; + name = "Brig Foyer Doors"; + pixel_x = -24; + pixel_y = 0; + req_access = list(63) + }, +/obj/structure/disposalpipe/segment, +/obj/effect/floor_decal/borderfloor{ + dir = 1 + }, +/obj/effect/floor_decal/corner/red/border{ + dir = 1 + }, +/turf/simulated/floor/tiled, +/area/security/lobby) +"bjw" = ( +/obj/structure/window/reinforced{ + dir = 1 + }, +/obj/structure/cable/green{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/obj/effect/floor_decal/borderfloor{ + dir = 1 + }, +/obj/effect/floor_decal/corner/red/border{ + dir = 1 + }, +/turf/simulated/floor/tiled, +/area/security/lobby) +"bjx" = ( +/obj/machinery/door/window/brigdoor/northright{ + req_access = list(63) + }, +/obj/effect/floor_decal/borderfloor{ + dir = 1 + }, +/obj/effect/floor_decal/corner/red/border{ + dir = 1 + }, +/turf/simulated/floor/tiled, +/area/security/lobby) +"bjy" = ( +/obj/machinery/door/firedoor/glass, +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/machinery/door/airlock/glass_security{ + id_tag = "BrigFoyer"; + layer = 2.8; + name = "Security Wing"; + req_access = list(63) + }, +/turf/simulated/floor/tiled/steel_grid, +/area/security/brig) +"bjz" = ( +/turf/simulated/wall/r_wall, +/area/security/brig) +"bjA" = ( +/obj/structure/disposalpipe/segment, +/obj/effect/floor_decal/borderfloor{ + dir = 10 + }, +/obj/effect/floor_decal/corner/red/border{ + dir = 10 + }, +/turf/simulated/floor/tiled, +/area/security/brig) +"bjB" = ( +/obj/effect/floor_decal/borderfloor/corner{ + dir = 8 + }, +/obj/effect/floor_decal/corner/red/bordercorner{ + dir = 8 + }, +/turf/simulated/floor/tiled, +/area/security/brig) +"bjC" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/structure/cable/green{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/obj/effect/floor_decal/steeldecal/steel_decals4{ + dir = 8 + }, +/obj/effect/floor_decal/steeldecal/steel_decals4{ + dir = 5 + }, +/turf/simulated/floor/tiled, +/area/security/brig) +"bjD" = ( +/obj/effect/floor_decal/borderfloor, +/obj/effect/floor_decal/corner/red/border, +/turf/simulated/floor/tiled, +/area/security/brig) +"bjE" = ( +/obj/machinery/atmospherics/unary/vent_scrubber/on{ + dir = 1 + }, +/obj/machinery/light, +/obj/effect/floor_decal/borderfloor, +/obj/effect/floor_decal/corner/red/border, +/turf/simulated/floor/tiled, +/area/security/brig) +"bjF" = ( +/obj/effect/floor_decal/borderfloor, +/obj/effect/floor_decal/corner/red/border, +/obj/effect/floor_decal/borderfloor/corner2{ + dir = 9 + }, +/obj/effect/floor_decal/corner/red/bordercorner2{ + dir = 9 + }, +/turf/simulated/floor/tiled, +/area/security/brig) +"bjG" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 5 + }, +/turf/simulated/floor/tiled, +/area/security/brig) +"bjH" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/obj/effect/floor_decal/steeldecal/steel_decals4{ + dir = 10 + }, +/obj/effect/floor_decal/steeldecal/steel_decals4, +/turf/simulated/floor/tiled, +/area/security/brig) +"bjI" = ( +/obj/machinery/door/firedoor/border_only, +/obj/machinery/door/airlock/glass_security{ + id_tag = "BrigFoyer"; + layer = 2.8; + name = "Security Wing"; + req_access = list(63) + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/turf/simulated/floor/tiled/steel_grid, +/area/security/brig) +"bjJ" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/obj/effect/floor_decal/steeldecal/steel_decals4{ + dir = 1 + }, +/obj/effect/floor_decal/steeldecal/steel_decals4{ + dir = 6 + }, +/turf/simulated/floor/tiled, +/area/security/brig) +"bjK" = ( +/obj/machinery/atmospherics/pipe/manifold/hidden/supply, +/obj/effect/floor_decal/borderfloor/corner, +/obj/effect/floor_decal/corner/red/bordercorner, +/turf/simulated/floor/tiled, +/area/security/brig) +"bjL" = ( +/obj/machinery/atmospherics/unary/vent_scrubber/on{ + dir = 1 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/obj/machinery/camera/network/security{ + c_tag = "SEC - Brig Hallway Starboard"; + dir = 1 + }, +/obj/effect/floor_decal/borderfloor, +/obj/effect/floor_decal/corner/red/border, +/turf/simulated/floor/tiled, +/area/security/brig) +"bjM" = ( +/obj/structure/disposalpipe/segment, +/obj/machinery/atmospherics/pipe/manifold/hidden/supply{ + dir = 1 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/obj/effect/floor_decal/borderfloor, +/obj/effect/floor_decal/corner/red/border, +/turf/simulated/floor/tiled, +/area/security/brig) +"bjN" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/obj/effect/floor_decal/borderfloor, +/obj/effect/floor_decal/corner/red/border, +/turf/simulated/floor/tiled, +/area/security/brig) +"bjO" = ( +/obj/machinery/atmospherics/pipe/manifold/hidden/supply, +/obj/effect/floor_decal/borderfloor, +/obj/effect/floor_decal/corner/red/border, +/turf/simulated/floor/tiled, +/area/security/brig) +"bjP" = ( +/obj/effect/floor_decal/borderfloor, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/obj/effect/floor_decal/corner/red/border, +/turf/simulated/floor/tiled, +/area/security/brig) +"bjQ" = ( +/obj/structure/sign/warning/high_voltage{ + pixel_y = -32 + }, +/obj/effect/floor_decal/industrial/warning/corner, +/obj/effect/floor_decal/borderfloor/corner{ + dir = 8 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 9 + }, +/obj/effect/floor_decal/corner/red/bordercorner{ + dir = 8 + }, +/turf/simulated/floor/tiled, +/area/security/brig) +"bjR" = ( +/obj/structure/cable/green{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/obj/structure/cable/green{ + d1 = 2; + d2 = 4; + icon_state = "2-4" + }, +/obj/effect/floor_decal/industrial/warning, +/turf/simulated/floor/tiled, +/area/security/brig) +"bjS" = ( +/obj/machinery/door/firedoor/border_only, +/obj/effect/wingrille_spawn/reinforced, +/obj/structure/cable/green, +/obj/structure/cable/green{ + d2 = 8; + icon_state = "0-8" + }, +/turf/simulated/floor/plating, +/area/security/brig) +"bjT" = ( +/obj/random/tool, +/turf/space, +/area/space) +"bjU" = ( +/obj/machinery/atmospherics/pipe/simple/visible/green, +/obj/structure/lattice, +/turf/space, +/area/space) +"bjV" = ( +/obj/machinery/atmospherics/pipe/simple/visible/cyan, +/obj/structure/lattice, +/turf/space, +/area/space) +"bjW" = ( +/obj/machinery/atmospherics/pipe/simple/visible/yellow, +/obj/structure/lattice, +/turf/space, +/area/space) +"bjX" = ( +/obj/machinery/atmospherics/pipe/tank/nitrous_oxide{ + dir = 1 + }, +/obj/effect/floor_decal/industrial/warning{ + dir = 10 + }, +/turf/simulated/floor/plating, +/area/security/riot_control) +"bjY" = ( +/obj/machinery/atmospherics/portables_connector{ + dir = 1 + }, +/obj/machinery/portable_atmospherics/powered/scrubber, +/obj/item/weapon/tool/wrench, +/obj/effect/floor_decal/industrial/warning{ + dir = 6 + }, +/obj/structure/extinguisher_cabinet{ + pixel_y = -30 + }, +/turf/simulated/floor/plating, +/area/security/riot_control) +"bjZ" = ( +/obj/structure/table/reinforced, +/obj/machinery/microscope, +/obj/item/device/radio/intercom/department/security{ + pixel_y = 21 + }, +/turf/simulated/floor/tiled/freezer, +/area/security/detectives_office) +"bka" = ( +/obj/structure/table/reinforced, +/obj/machinery/computer/med_data/laptop, +/turf/simulated/floor/tiled/freezer, +/area/security/detectives_office) +"bkb" = ( +/obj/machinery/computer/security/wooden_tv, +/obj/structure/window/reinforced{ + dir = 8 + }, +/obj/item/device/radio/intercom{ + dir = 1; + name = "Station Intercom (General)"; + pixel_y = 21 + }, +/turf/simulated/floor/lino, +/area/security/detectives_office) +"bkc" = ( +/obj/structure/table/wooden_reinforced, +/obj/machinery/power/apc{ + dir = 1; + name = "north bump"; + pixel_x = 0; + pixel_y = 24 + }, +/obj/machinery/light_switch{ + pixel_x = 11; + pixel_y = 24 + }, +/obj/machinery/button/windowtint{ + id = "detoffice"; + pixel_x = -12; + pixel_y = 24 + }, +/obj/item/weapon/handcuffs, +/obj/item/weapon/storage/fancy/cigarettes/dromedaryco, +/obj/item/device/tape/random, +/obj/item/device/taperecorder{ + pixel_x = -4; + pixel_y = 2 + }, +/obj/structure/cable/green{ + d2 = 4; + icon_state = "0-4" + }, +/turf/simulated/floor/lino, +/area/security/detectives_office) +"bkd" = ( +/obj/structure/table/wooden_reinforced, +/obj/item/device/flashlight/lamp/green, +/obj/machinery/camera/network/security{ + c_tag = "SEC - Detective Office"; + dir = 2 + }, +/obj/structure/disposalpipe/segment, +/obj/structure/cable/green{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/turf/simulated/floor/lino, +/area/security/detectives_office) +"bke" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/obj/structure/cable/green{ + d1 = 1; + d2 = 8; + icon_state = "1-8" + }, +/obj/structure/cable/green{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/turf/simulated/floor/lino, +/area/security/detectives_office) +"bkf" = ( +/turf/simulated/floor/lino, +/area/security/detectives_office) +"bkg" = ( +/obj/structure/closet/wardrobe/detective, +/obj/item/device/radio/intercom/department/security{ + dir = 8; + icon_override = "secintercom"; + pixel_x = 21 + }, +/obj/structure/noticeboard{ + pixel_y = 30 + }, +/turf/simulated/floor/lino, +/area/security/detectives_office) +"bkh" = ( +/obj/item/device/radio/intercom{ + dir = 8; + name = "Station Intercom (General)"; + pixel_x = -21 + }, +/obj/machinery/light{ + dir = 8; + icon_state = "tube1"; + pixel_y = 0 + }, +/obj/effect/floor_decal/borderfloor{ + dir = 8 + }, +/obj/effect/floor_decal/corner/red/border{ + dir = 8 + }, +/turf/simulated/floor/tiled, +/area/security/lobby) +"bki" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/obj/effect/floor_decal/steeldecal/steel_decals4{ + dir = 4 + }, +/obj/effect/floor_decal/steeldecal/steel_decals4{ + dir = 9 + }, +/turf/simulated/floor/tiled, +/area/security/lobby) +"bkj" = ( +/obj/machinery/computer/security, +/obj/structure/window/reinforced{ + dir = 8 + }, +/turf/simulated/floor/tiled/dark, +/area/security/lobby) +"bkk" = ( +/obj/structure/bed/chair/office/dark, +/obj/machinery/atmospherics/unary/vent_pump/on{ + dir = 4 + }, +/obj/structure/disposalpipe/segment, +/turf/simulated/floor/tiled, +/area/security/lobby) +"bkl" = ( +/obj/structure/cable/green{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 9 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 5 + }, +/turf/simulated/floor/tiled, +/area/security/lobby) +"bkm" = ( +/obj/structure/bed/chair/office/dark, +/obj/machinery/atmospherics/unary/vent_scrubber/on{ + dir = 8 + }, +/turf/simulated/floor/tiled, +/area/security/lobby) +"bkn" = ( +/obj/machinery/computer/secure_data, +/obj/structure/window/reinforced{ + dir = 4; + health = 1e+006 + }, +/turf/simulated/floor/tiled/dark, +/area/security/lobby) +"bko" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/effect/floor_decal/steeldecal/steel_decals4{ + dir = 4 + }, +/obj/effect/floor_decal/steeldecal/steel_decals4{ + dir = 9 + }, +/turf/simulated/floor/tiled, +/area/security/lobby) +"bkp" = ( +/obj/item/device/radio/intercom/department/security{ + dir = 8; + icon_override = "secintercom"; + pixel_x = 21 + }, +/obj/effect/floor_decal/borderfloor{ + dir = 4 + }, +/obj/effect/floor_decal/corner/red/border{ + dir = 4 + }, +/turf/simulated/floor/tiled, +/area/security/lobby) +"bkq" = ( +/turf/simulated/wall/r_wall, +/area/crew_quarters/heads/sc/hos) +"bkr" = ( +/obj/structure/disposalpipe/segment, +/turf/simulated/wall/r_wall, +/area/crew_quarters/heads/sc/hos) +"bks" = ( +/obj/structure/cable/green{ + d2 = 4; + icon_state = "0-4" + }, +/obj/machinery/door/firedoor/border_only, +/obj/effect/wingrille_spawn/reinforced/polarized{ + id = "hosoffice" + }, +/turf/simulated/floor/plating, +/area/crew_quarters/heads/sc/hos) +"bkt" = ( +/obj/structure/cable/green{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/obj/machinery/door/airlock/command{ + id_tag = null; + name = "Head of Security Quarters"; + req_access = list(58) + }, +/obj/structure/cable/green{ + d1 = 1; + d2 = 4; + icon_state = "1-4" + }, +/obj/structure/cable/green{ + d1 = 1; + d2 = 8; + icon_state = "1-8" + }, +/obj/machinery/door/firedoor/border_only, +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/turf/simulated/floor/tiled/steel_grid, +/area/crew_quarters/heads/sc/hos) +"bku" = ( +/obj/structure/cable/green{ + d2 = 8; + icon_state = "0-8" + }, +/obj/machinery/door/firedoor/border_only, +/obj/effect/wingrille_spawn/reinforced/polarized{ + id = "hosoffice" + }, +/turf/simulated/floor/plating, +/area/crew_quarters/heads/sc/hos) +"bkv" = ( +/turf/simulated/wall/r_wall, +/area/lawoffice) +"bkw" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/obj/structure/disposalpipe/segment, +/turf/simulated/floor/tiled/dark, +/area/security/brig) +"bkx" = ( +/obj/effect/floor_decal/industrial/hatch/yellow, +/obj/structure/window/reinforced{ + dir = 8 + }, +/obj/machinery/door/window/northright{ + name = "Security Delivery"; + req_access = list(1) + }, +/turf/simulated/floor/tiled, +/area/security/brig) +"bky" = ( +/turf/simulated/wall/r_wall, +/area/maintenance/substation/security) +"bkz" = ( +/obj/machinery/button/remote/blast_door{ + id = "Cell 1"; + name = "Cell 1 Door"; + pixel_x = -1; + pixel_y = 28; + req_access = null; + req_one_access = list(2,4) + }, +/obj/effect/floor_decal/borderfloor/corner{ + dir = 1 + }, +/obj/effect/floor_decal/corner/red/bordercorner{ + dir = 1 + }, +/obj/machinery/button/flasher{ + id = "Cell 1"; + name = "Cell 1 Flash"; + pixel_x = -1; + pixel_y = 36; + req_access = list(2,4) + }, +/turf/simulated/floor/tiled, +/area/security/security_cell_hallway) +"bkA" = ( +/turf/simulated/wall/r_wall, +/area/engineering/atmos) +"bkB" = ( +/obj/machinery/atmospherics/pipe/simple/visible/green{ + icon_state = "intact"; + dir = 6 + }, +/obj/machinery/door/firedoor/glass, +/obj/effect/wingrille_spawn/reinforced, +/obj/machinery/door/blast/regular{ + density = 0; + dir = 1; + icon_state = "pdoor0"; + id = "atmoslockdown"; + name = "Atmospherics Lockdown"; + opacity = 0 + }, +/turf/simulated/floor/plating, +/area/engineering/atmos) +"bkC" = ( +/obj/machinery/atmospherics/pipe/simple/visible/green{ + icon_state = "intact"; + dir = 6 + }, +/turf/simulated/wall/r_wall, +/area/engineering/atmos) +"bkD" = ( +/obj/machinery/atmospherics/pipe/simple/visible/red, +/obj/machinery/door/firedoor/glass, +/obj/effect/wingrille_spawn/reinforced, +/obj/machinery/door/blast/regular{ + density = 0; + dir = 1; + icon_state = "pdoor0"; + id = "atmoslockdown"; + name = "Atmospherics Lockdown"; + opacity = 0 + }, +/turf/simulated/floor/plating, +/area/engineering/atmos) +"bkE" = ( +/obj/machinery/atmospherics/pipe/manifold/visible/green{ + icon_state = "map"; + dir = 4 + }, +/obj/machinery/door/firedoor/border_only, +/obj/effect/wingrille_spawn/reinforced, +/obj/machinery/door/blast/regular{ + density = 0; + dir = 1; + icon_state = "pdoor0"; + id = "atmoslockdown"; + name = "Atmospherics Lockdown"; + opacity = 0 + }, +/turf/simulated/floor/plating, +/area/engineering/atmos) +"bkF" = ( +/obj/machinery/atmospherics/pipe/simple/visible/red, +/obj/machinery/door/firedoor/border_only, +/obj/effect/wingrille_spawn/reinforced, +/obj/machinery/door/blast/regular{ + density = 0; + dir = 1; + icon_state = "pdoor0"; + id = "atmoslockdown"; + name = "Atmospherics Lockdown"; + opacity = 0 + }, +/turf/simulated/floor/plating, +/area/engineering/atmos) +"bkG" = ( +/obj/machinery/door/firedoor/glass, +/obj/effect/wingrille_spawn/reinforced, +/obj/machinery/door/blast/regular{ + density = 0; + dir = 1; + icon_state = "pdoor0"; + id = "atmoslockdown"; + name = "Atmospherics Lockdown"; + opacity = 0 + }, +/turf/simulated/floor/plating, +/area/engineering/atmos) +"bkH" = ( +/obj/machinery/atmospherics/pipe/simple/visible/cyan, +/obj/machinery/door/firedoor/glass, +/obj/effect/wingrille_spawn/reinforced, +/obj/machinery/door/blast/regular{ + density = 0; + dir = 1; + icon_state = "pdoor0"; + id = "atmoslockdown"; + name = "Atmospherics Lockdown"; + opacity = 0 + }, +/turf/simulated/floor/plating, +/area/engineering/atmos) +"bkI" = ( +/obj/machinery/atmospherics/pipe/manifold/visible/cyan{ + dir = 8; + icon_state = "map" + }, +/obj/machinery/door/firedoor/glass, +/obj/effect/wingrille_spawn/reinforced, +/obj/machinery/door/blast/regular{ + density = 0; + dir = 1; + icon_state = "pdoor0"; + id = "atmoslockdown"; + name = "Atmospherics Lockdown"; + opacity = 0 + }, +/turf/simulated/floor/plating, +/area/engineering/atmos) +"bkJ" = ( +/obj/machinery/atmospherics/pipe/simple/visible/cyan{ + dir = 10 + }, +/obj/machinery/door/firedoor/border_only, +/obj/effect/wingrille_spawn/reinforced, +/obj/machinery/door/blast/regular{ + density = 0; + dir = 1; + icon_state = "pdoor0"; + id = "atmoslockdown"; + name = "Atmospherics Lockdown"; + opacity = 0 + }, +/turf/simulated/floor/plating, +/area/engineering/atmos) +"bkK" = ( +/obj/machinery/atmospherics/pipe/simple/visible/green, +/obj/machinery/door/firedoor/glass, +/obj/effect/wingrille_spawn/reinforced, +/obj/machinery/door/blast/regular{ + density = 0; + dir = 1; + icon_state = "pdoor0"; + id = "atmoslockdown"; + name = "Atmospherics Lockdown"; + opacity = 0 + }, +/turf/simulated/floor/plating, +/area/engineering/atmos) +"bkL" = ( +/obj/machinery/atmospherics/pipe/manifold/visible/yellow{ + dir = 8 + }, +/obj/machinery/door/firedoor/border_only, +/obj/effect/wingrille_spawn/reinforced, +/obj/machinery/door/blast/regular{ + density = 0; + dir = 1; + icon_state = "pdoor0"; + id = "atmoslockdown"; + name = "Atmospherics Lockdown"; + opacity = 0 + }, +/turf/simulated/floor/plating, +/area/engineering/atmos) +"bkM" = ( +/obj/machinery/atmospherics/pipe/simple/visible/yellow{ + dir = 10 + }, +/obj/machinery/door/firedoor/border_only, +/obj/effect/wingrille_spawn/reinforced, +/obj/machinery/door/blast/regular{ + density = 0; + dir = 1; + icon_state = "pdoor0"; + id = "atmoslockdown"; + name = "Atmospherics Lockdown"; + opacity = 0 + }, +/turf/simulated/floor/plating, +/area/engineering/atmos) +"bkN" = ( +/obj/machinery/door/firedoor/border_only, +/obj/machinery/door/airlock/atmos{ + name = "Riot Control Maintenance"; + req_access = newlist(); + req_one_access = list(2,12,24) + }, +/turf/simulated/floor/plating, +/area/security/riot_control) +"bkO" = ( +/obj/structure/table/steel, +/obj/item/device/t_scanner, +/obj/random/tech_supply, +/obj/random/tech_supply, +/turf/simulated/floor/plating, +/area/maintenance/security_port) +"bkP" = ( +/obj/structure/closet/firecloset/full, +/obj/random/maintenance/clean, +/obj/random/maintenance/clean, +/obj/random/maintenance/security, +/obj/random/maintenance/security, +/obj/item/clothing/glasses/meson, +/turf/simulated/floor/plating, +/area/maintenance/security_port) +"bkQ" = ( +/obj/machinery/space_heater, +/turf/simulated/floor/plating, +/area/maintenance/security_port) +"bkR" = ( +/obj/machinery/disposal, +/obj/structure/extinguisher_cabinet{ + pixel_x = -28; + pixel_y = 0 + }, +/obj/structure/disposalpipe/trunk{ + dir = 4 + }, +/turf/simulated/floor/tiled/freezer, +/area/security/detectives_office) +"bkS" = ( +/obj/machinery/firealarm{ + pixel_y = 24 + }, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/turf/simulated/floor/tiled/white, +/area/security/detectives_office) +"bkT" = ( +/obj/item/weapon/stool/padded, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/machinery/atmospherics/unary/vent_scrubber/on, +/turf/simulated/floor/tiled/white, +/area/security/detectives_office) +"bkU" = ( +/obj/structure/table/reinforced, +/obj/item/weapon/folder/red, +/obj/item/weapon/folder/blue{ + pixel_y = -3 + }, +/obj/item/weapon/folder/yellow{ + pixel_y = -5 + }, +/obj/item/weapon/storage/box/swabs{ + layer = 5 + }, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/turf/simulated/floor/tiled/freezer, +/area/security/detectives_office) +"bkV" = ( +/obj/structure/closet/secure_closet/detective, +/obj/structure/window/reinforced{ + dir = 8 + }, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/item/weapon/reagent_containers/spray/pepper, +/obj/item/device/flash, +/turf/simulated/floor/lino, +/area/security/detectives_office) +"bkW" = ( +/obj/structure/bed/chair/office/dark{ + dir = 4 + }, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/effect/landmark/start{ + name = "Detective" + }, +/turf/simulated/floor/carpet, +/area/security/detectives_office) +"bkX" = ( +/obj/structure/table/wooden_reinforced, +/obj/structure/disposalpipe/segment{ + dir = 8; + icon_state = "pipe-c" + }, +/turf/simulated/floor/carpet, +/area/security/detectives_office) +"bkY" = ( +/obj/item/weapon/stool/padded, +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/obj/structure/cable/green{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/turf/simulated/floor/carpet, +/area/security/detectives_office) +"bkZ" = ( +/turf/simulated/floor/carpet, +/area/security/detectives_office) +"bla" = ( +/obj/structure/table/rack, +/obj/item/weapon/storage/briefcase{ + pixel_x = 3; + pixel_y = 0 + }, +/obj/item/weapon/storage/briefcase{ + pixel_x = -2; + pixel_y = -5 + }, +/obj/machinery/light{ + dir = 4 + }, +/turf/simulated/floor/lino, +/area/security/detectives_office) +"blb" = ( +/obj/machinery/door/firedoor/border_only, +/obj/structure/cable/green{ + d2 = 2; + icon_state = "0-2" + }, +/obj/effect/wingrille_spawn/reinforced/polarized{ + id = "detoffice" + }, +/turf/simulated/floor/plating, +/area/security/detectives_office) +"blc" = ( +/obj/effect/floor_decal/borderfloor/corner{ + dir = 1 + }, +/obj/effect/floor_decal/corner/red/bordercorner{ + dir = 1 + }, +/turf/simulated/floor/tiled, +/area/security/lobby) +"bld" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/turf/simulated/floor/tiled, +/area/security/lobby) +"ble" = ( +/obj/structure/cable/green{ + d2 = 4; + icon_state = "0-4" + }, +/obj/effect/wingrille_spawn/reinforced, +/turf/simulated/floor/plating, +/area/security/lobby) +"blf" = ( +/obj/structure/table/reinforced, +/obj/machinery/door/window/brigdoor/southleft{ + name = "Secure Door" + }, +/obj/structure/cable/green{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/obj/item/weapon/book/codex/corp_regs, +/obj/structure/disposalpipe/segment, +/obj/effect/floor_decal/borderfloor, +/obj/effect/floor_decal/corner/red/border, +/turf/simulated/floor/tiled, +/area/security/lobby) +"blg" = ( +/obj/structure/table/reinforced, +/obj/structure/window/reinforced, +/obj/structure/cable/green{ + d1 = 1; + d2 = 8; + icon_state = "1-8" + }, +/obj/structure/cable/green{ + d1 = 1; + d2 = 4; + icon_state = "1-4" + }, +/obj/item/weapon/paper_bin{ + pixel_x = -3; + pixel_y = 7 + }, +/obj/item/weapon/pen, +/obj/effect/floor_decal/borderfloor, +/obj/effect/floor_decal/corner/red/border, +/turf/simulated/floor/tiled, +/area/security/lobby) +"blh" = ( +/obj/structure/table/reinforced, +/obj/machinery/door/window/brigdoor/southright{ + name = "Secure Door" + }, +/obj/structure/cable/green{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/obj/structure/cable/green{ + d1 = 2; + d2 = 8; + icon_state = "2-8" + }, +/obj/effect/floor_decal/borderfloor, +/obj/effect/floor_decal/corner/red/border, +/turf/simulated/floor/tiled, +/area/security/lobby) +"bli" = ( +/obj/structure/cable/green{ + d2 = 8; + icon_state = "0-8" + }, +/obj/effect/wingrille_spawn/reinforced, +/turf/simulated/floor/plating, +/area/security/lobby) +"blj" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/turf/simulated/floor/tiled, +/area/security/lobby) +"blk" = ( +/obj/effect/floor_decal/borderfloor{ + dir = 4 + }, +/obj/effect/floor_decal/corner/red/border{ + dir = 4 + }, +/turf/simulated/floor/tiled, +/area/security/lobby) +"bll" = ( +/obj/machinery/door/firedoor/border_only, +/obj/structure/cable/green{ + d2 = 2; + icon_state = "0-2" + }, +/obj/effect/wingrille_spawn/reinforced/polarized{ + id = "hosoffice" + }, +/turf/simulated/floor/plating, +/area/crew_quarters/heads/sc/hos) +"blm" = ( +/obj/machinery/disposal, +/obj/item/weapon/storage/secure/safe{ + pixel_x = 5; + pixel_y = 28 + }, +/obj/structure/disposalpipe/trunk{ + dir = 1 + }, +/obj/effect/floor_decal/borderfloorblack{ + dir = 8 + }, +/obj/effect/floor_decal/corner/blue/border{ + dir = 8 + }, +/turf/simulated/floor/tiled/dark, +/area/crew_quarters/heads/sc/hos) +"bln" = ( +/obj/machinery/camera/network/security{ + c_tag = "SEC - HoS' Office"; + dir = 2 + }, +/turf/simulated/floor/carpet, +/area/crew_quarters/heads/sc/hos) +"blo" = ( +/obj/structure/cable/green{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/obj/structure/cable/green{ + d1 = 1; + d2 = 4; + icon_state = "1-4" + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/turf/simulated/floor/carpet, +/area/crew_quarters/heads/sc/hos) +"blp" = ( +/obj/structure/cable/green{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/turf/simulated/floor/carpet, +/area/crew_quarters/heads/sc/hos) +"blq" = ( +/obj/machinery/photocopier, +/obj/structure/cable/green{ + d2 = 8; + icon_state = "0-8" + }, +/obj/machinery/power/apc{ + dir = 1; + name = "north bump"; + pixel_x = 0; + pixel_y = 24 + }, +/obj/machinery/light_switch{ + pixel_x = 11; + pixel_y = 24 + }, +/obj/machinery/keycard_auth{ + pixel_x = 0; + pixel_y = 36 + }, +/obj/effect/floor_decal/borderfloorblack{ + dir = 4 + }, +/obj/effect/floor_decal/corner/blue/border{ + dir = 4 + }, +/turf/simulated/floor/tiled/dark, +/area/crew_quarters/heads/sc/hos) +"blr" = ( +/obj/structure/table/reinforced, +/obj/machinery/computer/skills, +/obj/effect/floor_decal/borderfloorblack{ + dir = 6 + }, +/obj/effect/floor_decal/corner/blue/border{ + dir = 9 + }, +/turf/simulated/floor/tiled/dark, +/area/lawoffice) +"bls" = ( +/obj/structure/bed/chair/office/dark, +/obj/machinery/button/windowtint{ + id = "lawyer_tint"; + pixel_x = 30; + pixel_y = -26; + req_access = list(58) + }, +/obj/machinery/newscaster{ + pixel_y = 30 + }, +/obj/effect/landmark/start{ + name = "Internal Affairs Agent" + }, +/obj/effect/floor_decal/borderfloorblack{ + dir = 1 + }, +/obj/effect/floor_decal/corner/blue/border{ + dir = 1 + }, +/turf/simulated/floor/tiled/dark, +/area/lawoffice) +"blt" = ( +/obj/machinery/light{ + dir = 1 + }, +/obj/effect/floor_decal/borderfloorblack{ + dir = 1 + }, +/obj/effect/floor_decal/corner/blue/border{ + dir = 1 + }, +/turf/simulated/floor/tiled/dark, +/area/lawoffice) +"blu" = ( +/obj/machinery/firealarm{ + dir = 2; + pixel_y = 24 + }, +/obj/effect/floor_decal/borderfloorblack{ + dir = 1 + }, +/obj/effect/floor_decal/corner/blue/border{ + dir = 1 + }, +/turf/simulated/floor/tiled/dark, +/area/lawoffice) +"blv" = ( +/obj/structure/table/reinforced, +/obj/item/weapon/clipboard, +/obj/item/weapon/clipboard, +/obj/structure/extinguisher_cabinet{ + pixel_y = 30 + }, +/obj/effect/floor_decal/borderfloorblack{ + dir = 1 + }, +/obj/effect/floor_decal/corner/blue/border{ + dir = 1 + }, +/turf/simulated/floor/tiled/dark, +/area/lawoffice) +"blw" = ( +/obj/structure/table/reinforced, +/obj/machinery/photocopier/faxmachine{ + anchored = 0; + department = "Internal Affairs" + }, +/obj/machinery/ai_status_display{ + pixel_x = 32; + pixel_y = 0 + }, +/obj/machinery/computer/security/telescreen/entertainment{ + icon_state = "frame"; + pixel_x = 0; + pixel_y = 32 + }, +/obj/effect/floor_decal/borderfloorblack{ + dir = 5 + }, +/obj/effect/floor_decal/corner/blue/border{ + dir = 5 + }, +/turf/simulated/floor/tiled/dark, +/area/lawoffice) +"blx" = ( +/obj/machinery/door/firedoor/border_only, +/obj/structure/disposalpipe/segment, +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 5 + }, +/obj/machinery/door/airlock/maintenance{ + name = "Security Maintenance"; + req_access = list(1) + }, +/turf/simulated/floor/plating, +/area/security/brig) +"bly" = ( +/obj/structure/plasticflaps{ + opacity = 1 + }, +/obj/machinery/door/firedoor/border_only, +/obj/effect/floor_decal/industrial/loading{ + dir = 1 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 10 + }, +/obj/machinery/navbeacon/delivery/north{ + location = "Security" + }, +/turf/simulated/floor/plating, +/area/security/brig) +"blz" = ( +/obj/machinery/power/breakerbox/activated{ + RCon_tag = "Security Substation Bypass" + }, +/turf/simulated/floor/plating, +/area/maintenance/substation/security) +"blA" = ( +/obj/structure/cable/green{ + d2 = 8; + icon_state = "0-8" + }, +/obj/structure/cable/green{ + d2 = 4; + icon_state = "0-4" + }, +/obj/machinery/power/smes/buildable{ + charge = 0; + RCon_tag = "Substation - Security" + }, +/turf/simulated/floor/plating, +/area/maintenance/substation/security) +"blB" = ( +/obj/structure/cable/green{ + d2 = 8; + icon_state = "0-8" + }, +/obj/structure/cable/green{ + d2 = 2; + icon_state = "0-2" + }, +/obj/structure/cable/green, +/obj/machinery/power/sensor{ + name = "Powernet Sensor - Security Subgrid"; + name_tag = "Security Subgrid" + }, +/obj/machinery/firealarm{ + dir = 4; + pixel_x = 24 + }, +/turf/simulated/floor/plating, +/area/maintenance/substation/security) +"blC" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 6 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 6 + }, +/turf/simulated/wall/r_wall, +/area/engineering/atmos) +"blD" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, +/obj/machinery/atmospherics/binary/pump{ + dir = 2; + name = "N2 to Connector" + }, +/turf/simulated/floor/tiled, +/area/engineering/atmos) +"blE" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, +/obj/machinery/atmospherics/valve/digital/open{ + dir = 2; + name = "Nitrogen Outlet Valve" + }, +/obj/effect/floor_decal/borderfloor{ + dir = 1 + }, +/obj/effect/floor_decal/corner/red/border{ + dir = 1 + }, +/obj/effect/floor_decal/borderfloor/corner2{ + dir = 4 + }, +/obj/effect/floor_decal/corner/red/bordercorner2{ + dir = 4 + }, +/turf/simulated/floor/tiled, +/area/engineering/atmos) +"blF" = ( +/obj/machinery/atmospherics/pipe/simple/visible/red, +/obj/machinery/computer/general_air_control/large_tank_control{ + frequency = 1441; + input_tag = "n2_in"; + name = "Nitrogen Supply Control"; + output_tag = "n2_out"; + sensors = list("n2_sensor" = "Tank") + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, +/obj/machinery/light/spot{ + dir = 1 + }, +/obj/effect/floor_decal/borderfloor{ + dir = 1 + }, +/obj/effect/floor_decal/corner/red/border{ + dir = 1 + }, +/obj/effect/floor_decal/borderfloor/corner2{ + dir = 1 + }, +/obj/effect/floor_decal/corner/red/bordercorner2{ + dir = 1 + }, +/turf/simulated/floor/tiled, +/area/engineering/atmos) +"blG" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, +/obj/machinery/atmospherics/binary/pump{ + dir = 2; + name = "O2 to Connector" + }, +/obj/machinery/camera/network/engineering{ + c_tag = "ENG - Atmospherics Fore Port"; + dir = 2 + }, +/turf/simulated/floor/tiled, +/area/engineering/atmos) +"blH" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, +/obj/machinery/atmospherics/valve/digital/open{ + dir = 2; + name = "Oxygen Outlet Valve" + }, +/obj/effect/floor_decal/borderfloor{ + dir = 1 + }, +/obj/effect/floor_decal/corner/blue/border{ + dir = 1 + }, +/obj/effect/floor_decal/borderfloor/corner2{ + dir = 4 + }, +/obj/effect/floor_decal/corner/blue/bordercorner2{ + dir = 4 + }, +/turf/simulated/floor/tiled, +/area/engineering/atmos) +"blI" = ( +/obj/machinery/atmospherics/pipe/simple/visible/red, +/obj/machinery/computer/general_air_control/large_tank_control{ + frequency = 1441; + input_tag = "o2_in"; + name = "Oxygen Supply Control"; + output_tag = "o2_out"; + sensors = list("o2_sensor" = "Tank") + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, +/obj/effect/floor_decal/borderfloor{ + dir = 1 + }, +/obj/effect/floor_decal/corner/blue/border{ + dir = 1 + }, +/obj/effect/floor_decal/borderfloor/corner2{ + dir = 1 + }, +/obj/effect/floor_decal/corner/blue/bordercorner2{ + dir = 1 + }, +/turf/simulated/floor/tiled, +/area/engineering/atmos) +"blJ" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, +/obj/machinery/computer/general_air_control/large_tank_control{ + frequency = 1443; + input_tag = "air_in"; + name = "Mixed Air Supply Control"; + output_tag = "air_out"; + pressure_setting = 2000; + sensors = list("air_sensor" = "Tank") + }, +/turf/simulated/floor/tiled, +/area/engineering/atmos) +"blK" = ( +/obj/machinery/atmospherics/valve/digital/open{ + dir = 2; + name = "Mixed Air Inlet Valve" + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, +/obj/effect/floor_decal/borderfloor{ + dir = 1 + }, +/obj/effect/floor_decal/corner/white/border{ + dir = 1 + }, +/obj/effect/floor_decal/borderfloor/corner2{ + dir = 4 + }, +/obj/effect/floor_decal/corner/blue/bordercorner2{ + dir = 4 + }, +/turf/simulated/floor/tiled, +/area/engineering/atmos) +"blL" = ( +/obj/machinery/atmospherics/binary/pump{ + dir = 2; + name = "Air Mix to Connector" + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, +/obj/effect/floor_decal/borderfloor{ + dir = 1 + }, +/obj/effect/floor_decal/corner/blue/border{ + dir = 1 + }, +/obj/effect/floor_decal/borderfloor/corner2{ + dir = 1 + }, +/obj/effect/floor_decal/corner/white/bordercorner2{ + dir = 1 + }, +/turf/simulated/floor/tiled, +/area/engineering/atmos) +"blM" = ( +/obj/machinery/atmospherics/valve/digital/open{ + dir = 2; + name = "Mixed Air Outlet Valve" + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, +/turf/simulated/floor/tiled, +/area/engineering/atmos) +"blN" = ( +/obj/machinery/atmospherics/pipe/simple/visible/red, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, +/turf/simulated/floor/tiled, +/area/engineering/atmos) +"blO" = ( +/obj/machinery/computer/general_air_control/large_tank_control{ + frequency = 1441; + input_tag = "waste_in"; + name = "Gas Mix Tank Control"; + output_tag = "waste_out"; + sensors = list("waste_sensor" = "Tank") + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, +/obj/machinery/light/spot{ + dir = 1 + }, +/turf/simulated/floor/tiled, +/area/engineering/atmos) +"blP" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, +/obj/machinery/atmospherics/binary/pump{ + dir = 1; + name = "Mixing to Mix Tank" + }, +/obj/machinery/camera/network/engineering{ + c_tag = "ENG - Atmospherics Fore Starboard"; + dir = 2 + }, +/obj/effect/floor_decal/borderfloor{ + dir = 1 + }, +/obj/effect/floor_decal/corner/green/border{ + dir = 1 + }, +/obj/effect/floor_decal/borderfloor/corner2{ + dir = 4 + }, +/obj/effect/floor_decal/corner/green/bordercorner2{ + dir = 4 + }, +/turf/simulated/floor/tiled, +/area/engineering/atmos) +"blQ" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, +/obj/machinery/atmospherics/binary/pump{ + dir = 2; + name = "Mix Tank to Port" + }, +/obj/effect/floor_decal/borderfloor{ + dir = 1 + }, +/obj/effect/floor_decal/corner/green/border{ + dir = 1 + }, +/obj/effect/floor_decal/borderfloor/corner2{ + dir = 1 + }, +/obj/effect/floor_decal/corner/green/bordercorner2{ + dir = 1 + }, +/turf/simulated/floor/tiled, +/area/engineering/atmos) +"blR" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, +/obj/machinery/atmospherics/binary/pump{ + dir = 2; + name = "Mix Tank to Connector" + }, +/turf/simulated/floor/tiled, +/area/engineering/atmos) +"blS" = ( +/obj/machinery/portable_atmospherics/canister/empty, +/obj/effect/floor_decal/industrial/warning{ + dir = 8 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, +/turf/simulated/floor/tiled, +/area/engineering/atmos) +"blT" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 10 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 10 + }, +/turf/simulated/wall/r_wall, +/area/engineering/atmos) +"blU" = ( +/turf/simulated/wall/r_wall, +/area/maintenance/security_port) +"blV" = ( +/obj/machinery/door/blast/regular{ + density = 0; + icon_state = "pdoor0"; + id = "security_lockdown"; + name = "Security Blast Door"; + opacity = 0 + }, +/turf/simulated/floor/plating, +/area/maintenance/security_port) +"blW" = ( +/turf/simulated/wall, +/area/maintenance/security_port) +"blX" = ( +/obj/machinery/alarm{ + dir = 1; + pixel_y = -22 + }, +/turf/simulated/floor/plating, +/area/maintenance/security_port) +"blY" = ( +/turf/simulated/floor/plating, +/area/maintenance/security_port) +"blZ" = ( +/obj/machinery/light/small, +/turf/simulated/floor/plating, +/area/maintenance/security_port) +"bma" = ( +/obj/structure/table/reinforced, +/obj/machinery/light{ + icon_state = "tube1"; + dir = 8 + }, +/turf/simulated/floor/tiled/freezer, +/area/security/detectives_office) +"bmb" = ( +/turf/simulated/floor/tiled/white, +/area/security/detectives_office) +"bmc" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/turf/simulated/floor/tiled/white, +/area/security/detectives_office) +"bmd" = ( +/obj/structure/table/rack, +/obj/item/weapon/storage/briefcase/crimekit, +/obj/item/weapon/storage/briefcase/crimekit, +/turf/simulated/floor/tiled/freezer, +/area/security/detectives_office) +"bme" = ( +/obj/structure/table/woodentable, +/obj/structure/window/reinforced{ + dir = 8 + }, +/obj/item/weapon/storage/photo_album{ + pixel_y = -10 + }, +/obj/item/device/camera_film, +/obj/item/device/camera{ + desc = "A one use - polaroid camera. 30 photos left."; + name = "detectives camera"; + pictures_left = 30; + pixel_x = 2; + pixel_y = 3 + }, +/turf/simulated/floor/lino, +/area/security/detectives_office) +"bmf" = ( +/obj/structure/table/wooden_reinforced, +/obj/item/weapon/paper_bin, +/obj/item/weapon/pen, +/obj/item/clothing/glasses/sunglasses, +/turf/simulated/floor/carpet, +/area/security/detectives_office) +"bmg" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/obj/structure/cable/green{ + d1 = 1; + d2 = 4; + icon_state = "1-4" + }, +/turf/simulated/floor/carpet, +/area/security/detectives_office) +"bmh" = ( +/obj/structure/cable/green{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/turf/simulated/floor/carpet, +/area/security/detectives_office) +"bmi" = ( +/obj/structure/cable/green{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/turf/simulated/floor/lino, +/area/security/detectives_office) +"bmj" = ( +/obj/machinery/door/airlock/security{ + id_tag = "detdoor"; + name = "Detective"; + req_access = list(4) + }, +/obj/structure/cable/green{ + d1 = 1; + d2 = 8; + icon_state = "1-8" + }, +/obj/structure/cable/green{ + d1 = 2; + d2 = 8; + icon_state = "2-8" + }, +/obj/machinery/door/firedoor/border_only, +/turf/simulated/floor/tiled/steel_grid, +/area/security/detectives_office) +"bmk" = ( +/obj/effect/floor_decal/steeldecal/steel_decals4{ + dir = 6 + }, +/obj/effect/floor_decal/steeldecal/steel_decals4{ + dir = 1 + }, +/turf/simulated/floor/tiled, +/area/security/lobby) +"bml" = ( +/obj/effect/floor_decal/borderfloor/corner{ + dir = 4 + }, +/obj/effect/floor_decal/corner/red/bordercorner{ + dir = 4 + }, +/turf/simulated/floor/tiled, +/area/security/lobby) +"bmm" = ( +/obj/structure/disposalpipe/segment, +/obj/effect/floor_decal/borderfloor{ + dir = 1 + }, +/obj/effect/floor_decal/corner/red/border{ + dir = 1 + }, +/turf/simulated/floor/tiled, +/area/security/lobby) +"bmn" = ( +/obj/effect/landmark{ + name = "lightsout" + }, +/obj/effect/floor_decal/borderfloor{ + dir = 1 + }, +/obj/effect/floor_decal/corner/red/border{ + dir = 1 + }, +/turf/simulated/floor/tiled, +/area/security/lobby) +"bmo" = ( +/obj/structure/cable/green{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/obj/effect/floor_decal/borderfloor{ + dir = 1 + }, +/obj/effect/floor_decal/corner/red/border{ + dir = 1 + }, +/turf/simulated/floor/tiled, +/area/security/lobby) +"bmp" = ( +/obj/machinery/light{ + dir = 4 + }, +/obj/effect/floor_decal/borderfloor{ + dir = 4 + }, +/obj/effect/floor_decal/corner/red/border{ + dir = 4 + }, +/turf/simulated/floor/tiled, +/area/security/lobby) +"bmq" = ( +/turf/simulated/wall, +/area/rnd/xenobiology/xenoflora) +"bmr" = ( +/obj/effect/floor_decal/borderfloorblack{ + dir = 8 + }, +/obj/effect/floor_decal/corner/blue/border{ + dir = 8 + }, +/turf/simulated/floor/tiled/dark, +/area/crew_quarters/heads/sc/hos) +"bms" = ( +/obj/machinery/atmospherics/unary/vent_scrubber/on{ + dir = 4 + }, +/turf/simulated/floor/carpet, +/area/crew_quarters/heads/sc/hos) +"bmt" = ( +/obj/structure/bed/chair, +/obj/structure/cable/green{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 9 + }, +/turf/simulated/floor/carpet, +/area/crew_quarters/heads/sc/hos) +"bmu" = ( +/obj/machinery/hologram/holopad, +/turf/simulated/floor/carpet, +/area/crew_quarters/heads/sc/hos) +"bmv" = ( +/obj/machinery/papershredder, +/obj/machinery/firealarm{ + dir = 4; + pixel_x = 24 + }, +/obj/effect/floor_decal/borderfloorblack{ + dir = 4 + }, +/obj/effect/floor_decal/corner/blue/border{ + dir = 4 + }, +/turf/simulated/floor/tiled/dark, +/area/crew_quarters/heads/sc/hos) +"bmw" = ( +/obj/structure/table/reinforced, +/obj/item/device/flashlight/lamp, +/obj/effect/floor_decal/borderfloorblack{ + dir = 8 + }, +/obj/effect/floor_decal/corner/blue/border{ + dir = 8 + }, +/turf/simulated/floor/tiled/dark, +/area/lawoffice) +"bmx" = ( +/obj/structure/table/reinforced, +/obj/item/weapon/folder{ + pixel_x = -4 + }, +/obj/item/weapon/folder/red{ + pixel_y = 3 + }, +/obj/item/weapon/folder/blue{ + pixel_x = 5 + }, +/obj/item/weapon/folder/yellow, +/obj/item/weapon/stamp/internalaffairs, +/obj/item/weapon/stamp/denied{ + pixel_x = 4; + pixel_y = -2 + }, +/turf/simulated/floor/tiled/dark, +/area/lawoffice) +"bmy" = ( +/obj/structure/table/reinforced, +/obj/item/weapon/pen/blue{ + pixel_x = -5; + pixel_y = -1 + }, +/obj/item/weapon/pen/red{ + pixel_x = -1; + pixel_y = 3 + }, +/obj/item/weapon/material/ashtray/plastic{ + pixel_x = 4; + pixel_y = 6 + }, +/obj/item/weapon/paper_bin{ + pixel_x = -3; + pixel_y = 7 + }, +/turf/simulated/floor/tiled/dark, +/area/lawoffice) +"bmz" = ( +/obj/machinery/atmospherics/unary/vent_pump/on, +/turf/simulated/floor/tiled/dark, +/area/lawoffice) +"bmA" = ( +/turf/simulated/floor/tiled/dark, +/area/lawoffice) +"bmB" = ( +/obj/structure/filingcabinet/chestdrawer, +/obj/effect/floor_decal/borderfloorblack{ + dir = 4 + }, +/obj/effect/floor_decal/corner/blue/border{ + dir = 4 + }, +/turf/simulated/floor/tiled/dark, +/area/lawoffice) +"bmC" = ( +/turf/simulated/wall, +/area/lawoffice) +"bmD" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/machinery/meter, +/obj/structure/cable{ + d1 = 2; + d2 = 4; + icon_state = "2-4" + }, +/obj/machinery/door/blast/regular{ + density = 0; + icon_state = "pdoor0"; + id = "security_lockdown"; + name = "Security Blast Door"; + opacity = 0 + }, +/obj/structure/disposalpipe/segment, +/turf/simulated/floor/plating, +/area/maintenance/security_starboard) +"bmE" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/obj/structure/cable{ + d1 = 4; + d2 = 8; + icon_state = "4-8"; + pixel_x = 0 + }, +/obj/machinery/door/blast/regular{ + density = 0; + icon_state = "pdoor0"; + id = "security_lockdown"; + name = "Security Blast Door"; + opacity = 0 + }, +/turf/simulated/floor/plating, +/area/maintenance/security_starboard) +"bmF" = ( +/obj/structure/cable{ + d1 = 4; + d2 = 8; + icon_state = "4-8"; + pixel_x = 0 + }, +/obj/machinery/door/firedoor/border_only, +/obj/machinery/door/airlock/engineering{ + name = "Security Substation"; + req_one_access = list(1,11,24) + }, +/turf/simulated/floor/plating, +/area/maintenance/substation/security) +"bmG" = ( +/obj/structure/cable{ + d1 = 1; + d2 = 8; + icon_state = "1-8" + }, +/obj/structure/cable{ + d1 = 4; + d2 = 8; + icon_state = "4-8"; + pixel_x = 0 + }, +/obj/machinery/alarm{ + dir = 1; + pixel_y = -22 + }, +/turf/simulated/floor/plating, +/area/maintenance/substation/security) +"bmH" = ( +/obj/machinery/power/terminal{ + icon_state = "term"; + dir = 1 + }, +/obj/structure/cable{ + d2 = 8; + icon_state = "0-8" + }, +/obj/machinery/light/small, +/turf/simulated/floor/plating, +/area/maintenance/substation/security) +"bmI" = ( +/obj/structure/cable/green, +/obj/machinery/power/apc{ + dir = 2; + name = "south bump"; + pixel_y = -24 + }, +/turf/simulated/floor/plating, +/area/maintenance/substation/security) +"bmJ" = ( +/turf/simulated/wall, +/area/space) +"bmK" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/obj/machinery/portable_atmospherics/powered/scrubber, +/obj/machinery/ai_status_display{ + pixel_y = 32 + }, +/obj/item/device/radio/intercom{ + dir = 8; + name = "Station Intercom (General)"; + pixel_x = -21 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/turf/simulated/floor/tiled, +/area/engineering/atmos) +"bmL" = ( +/obj/machinery/atmospherics/portables_connector{ + dir = 1 + }, +/obj/effect/floor_decal/industrial/outline/yellow, +/turf/simulated/floor/tiled, +/area/engineering/atmos) +"bmM" = ( +/obj/machinery/atmospherics/pipe/simple/visible/green, +/turf/simulated/floor/tiled, +/area/engineering/atmos) +"bmN" = ( +/obj/machinery/atmospherics/pipe/simple/visible/red, +/obj/machinery/meter, +/turf/simulated/floor/tiled, +/area/engineering/atmos) +"bmO" = ( +/obj/machinery/atmospherics/pipe/manifold/visible/green{ + dir = 8 + }, +/obj/machinery/meter, +/turf/simulated/floor/tiled, +/area/engineering/atmos) +"bmP" = ( +/obj/machinery/atmospherics/pipe/simple/visible/red, +/obj/machinery/atmospherics/pipe/simple/visible/green{ + icon_state = "intact"; + dir = 4 + }, +/turf/simulated/floor/tiled, +/area/engineering/atmos) +"bmQ" = ( +/obj/machinery/atmospherics/pipe/simple/visible/green{ + dir = 10; + icon_state = "intact" + }, +/turf/simulated/floor/tiled, +/area/engineering/atmos) +"bmR" = ( +/obj/machinery/atmospherics/pipe/simple/visible/cyan, +/obj/machinery/meter{ + frequency = 1443; + id = "mair_in_meter"; + name = "Mixed Air Tank In" + }, +/turf/simulated/floor/tiled, +/area/engineering/atmos) +"bmS" = ( +/obj/machinery/atmospherics/pipe/simple/visible/cyan, +/obj/machinery/meter{ + frequency = 1443; + id = "mair_out_meter"; + name = "Mixed Air Tank Out" + }, +/turf/simulated/floor/tiled, +/area/engineering/atmos) +"bmT" = ( +/turf/simulated/floor/tiled, +/area/engineering/atmos) +"bmU" = ( +/obj/machinery/atmospherics/pipe/simple/visible/yellow, +/turf/simulated/floor/tiled, +/area/engineering/atmos) +"bmV" = ( +/obj/machinery/portable_atmospherics/canister/sleeping_agent, +/obj/effect/floor_decal/industrial/warning{ + dir = 8 + }, +/obj/machinery/atmospherics/unary/vent_pump/on{ + dir = 4 + }, +/turf/simulated/floor/tiled, +/area/engineering/atmos) +"bmW" = ( +/obj/machinery/portable_atmospherics/canister/sleeping_agent, +/obj/machinery/atmospherics/pipe/manifold/hidden/supply{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/obj/machinery/status_display{ + pixel_x = 0; + pixel_y = 32 + }, +/obj/structure/sign/warning/nosmoking_2{ + pixel_x = 32 + }, +/turf/simulated/floor/tiled, +/area/engineering/atmos) +"bmX" = ( +/obj/effect/floor_decal/industrial/warning{ + icon_state = "warning"; + dir = 1 + }, +/obj/structure/table/rack{ + dir = 1 + }, +/obj/random/maintenance/clean, +/obj/random/maintenance/clean, +/obj/random/maintenance/security, +/obj/random/maintenance/security, +/turf/simulated/floor/plating, +/area/maintenance/security_port) +"bmY" = ( +/obj/effect/floor_decal/industrial/warning{ + icon_state = "warning"; + dir = 1 + }, +/turf/simulated/floor/plating, +/area/maintenance/security_port) +"bmZ" = ( +/obj/effect/floor_decal/industrial/warning{ + icon_state = "warning"; + dir = 1 + }, +/obj/machinery/alarm{ + dir = 8; + pixel_x = 22; + pixel_y = 0 + }, +/turf/simulated/floor/plating, +/area/maintenance/security_port) +"bna" = ( +/obj/machinery/door/firedoor/border_only, +/obj/machinery/door/airlock/maintenance{ + name = "Firefighting Equipment"; + req_access = list(12) + }, +/turf/simulated/floor/plating, +/area/maintenance/security_port) +"bnb" = ( +/obj/machinery/camera/network/security{ + c_tag = "SEC - Forensic Office"; + dir = 4 + }, +/obj/structure/closet{ + name = "Evidence Closet" + }, +/obj/item/weapon/storage/box/gloves, +/obj/item/weapon/storage/box/evidence, +/obj/item/weapon/storage/box/bodybags, +/obj/machinery/alarm{ + dir = 4; + icon_state = "alarm0"; + pixel_x = -22 + }, +/turf/simulated/floor/tiled/freezer, +/area/security/detectives_office) +"bnc" = ( +/obj/machinery/hologram/holopad, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 6 + }, +/obj/effect/floor_decal/industrial/outline/grey, +/turf/simulated/floor/tiled/white, +/area/security/detectives_office) +"bnd" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 5 + }, +/turf/simulated/floor/tiled/white, +/area/security/detectives_office) +"bne" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, +/turf/simulated/floor/tiled/freezer, +/area/security/detectives_office) +"bnf" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, +/obj/machinery/door/window/westright{ + name = "Forensics Area"; + req_one_access = list(4) + }, +/turf/simulated/floor/lino, +/area/security/detectives_office) +"bng" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, +/turf/simulated/floor/carpet, +/area/security/detectives_office) +"bnh" = ( +/obj/machinery/atmospherics/pipe/manifold/hidden/supply{ + dir = 1 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, +/turf/simulated/floor/carpet, +/area/security/detectives_office) +"bni" = ( +/obj/machinery/hologram/holopad, +/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 9 + }, +/turf/simulated/floor/carpet, +/area/security/detectives_office) +"bnj" = ( +/obj/item/weapon/stool/padded, +/obj/machinery/atmospherics/unary/vent_scrubber/on{ + dir = 8 + }, +/turf/simulated/floor/carpet, +/area/security/detectives_office) +"bnk" = ( +/obj/structure/flora/pottedplant{ + icon_state = "plant-10" + }, +/turf/simulated/floor/lino, +/area/security/detectives_office) +"bnl" = ( +/obj/machinery/door/firedoor/border_only, +/obj/structure/cable/green, +/obj/effect/wingrille_spawn/reinforced/polarized{ + id = "detoffice" + }, +/turf/simulated/floor/plating, +/area/security/detectives_office) +"bnm" = ( +/obj/effect/floor_decal/borderfloor/corner{ + dir = 8 + }, +/obj/effect/floor_decal/corner/red/bordercorner{ + dir = 8 + }, +/turf/simulated/floor/tiled, +/area/security/lobby) +"bnn" = ( +/obj/machinery/atmospherics/unary/vent_scrubber/on{ + dir = 1 + }, +/turf/simulated/floor/tiled, +/area/security/lobby) +"bno" = ( +/turf/simulated/floor/tiled, +/area/security/lobby) +"bnp" = ( +/obj/structure/disposalpipe/segment, +/turf/simulated/floor/tiled, +/area/security/lobby) +"bnq" = ( +/obj/machinery/hologram/holopad, +/obj/effect/floor_decal/industrial/outline/grey, +/turf/simulated/floor/tiled/monotile, +/area/security/lobby) +"bnr" = ( +/obj/structure/cable/green{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/turf/simulated/floor/tiled, +/area/security/lobby) +"bns" = ( +/obj/machinery/atmospherics/unary/vent_pump/on{ + dir = 1 + }, +/turf/simulated/floor/tiled, +/area/security/lobby) +"bnt" = ( +/obj/machinery/firealarm{ + dir = 4; + pixel_x = 24 + }, +/turf/simulated/floor/tiled/steel_grid, +/area/rnd/research/firstdeck/hallway) +"bnu" = ( +/obj/structure/cable/green{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/obj/machinery/light{ + dir = 8; + icon_state = "tube1"; + pixel_y = 0 + }, +/obj/effect/floor_decal/borderfloorblack{ + dir = 8 + }, +/obj/effect/floor_decal/corner/blue/border{ + dir = 8 + }, +/turf/simulated/floor/tiled/dark, +/area/crew_quarters/heads/sc/hos) +"bnv" = ( +/obj/structure/cable/green{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/obj/item/device/flashlight/lamp/green{ + dir = 2; + pixel_x = 10; + pixel_y = 12 + }, +/obj/structure/table/reinforced, +/turf/simulated/floor/carpet, +/area/crew_quarters/heads/sc/hos) +"bnw" = ( +/obj/structure/cable/green{ + d1 = 1; + d2 = 8; + icon_state = "1-8" + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/item/weapon/folder/red, +/obj/item/weapon/stamp/hos, +/obj/structure/table/reinforced, +/turf/simulated/floor/carpet, +/area/crew_quarters/heads/sc/hos) +"bnx" = ( +/obj/machinery/computer/skills{ + pixel_y = 4 + }, +/obj/structure/table/reinforced, +/turf/simulated/floor/carpet, +/area/crew_quarters/heads/sc/hos) +"bny" = ( +/obj/machinery/recharger{ + pixel_y = 4 + }, +/obj/item/weapon/reagent_containers/food/drinks/flask/barflask{ + pixel_x = -4; + pixel_y = 8 + }, +/obj/item/device/tape/random, +/obj/item/device/taperecorder{ + pixel_y = 0 + }, +/obj/item/device/megaphone, +/obj/item/device/radio/off, +/obj/machinery/light{ + dir = 4 + }, +/obj/structure/table/reinforced, +/obj/effect/floor_decal/borderfloorblack{ + dir = 4 + }, +/obj/effect/floor_decal/corner/blue/border{ + dir = 4 + }, +/turf/simulated/floor/tiled/dark, +/area/crew_quarters/heads/sc/hos) +"bnz" = ( +/obj/machinery/photocopier, +/obj/machinery/camera/network/civilian{ + c_tag = "CIV - Internal Affairs"; + dir = 5 + }, +/obj/effect/floor_decal/borderfloorblack{ + dir = 8 + }, +/obj/effect/floor_decal/corner/blue/border{ + dir = 8 + }, +/turf/simulated/floor/tiled/dark, +/area/lawoffice) +"bnA" = ( +/obj/structure/bed/chair{ + dir = 1 + }, +/turf/simulated/floor/tiled/dark, +/area/lawoffice) +"bnB" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/machinery/hologram/holopad, +/obj/effect/floor_decal/industrial/outline/grey, +/turf/simulated/floor/tiled/dark, +/area/lawoffice) +"bnC" = ( +/obj/machinery/alarm{ + dir = 8; + pixel_x = 22; + pixel_y = 0 + }, +/obj/effect/floor_decal/borderfloorblack{ + dir = 4 + }, +/obj/effect/floor_decal/corner/blue/border{ + dir = 4 + }, +/turf/simulated/floor/tiled/dark, +/area/lawoffice) +"bnD" = ( +/obj/machinery/atmospherics/pipe/simple/visible/universal, +/obj/structure/cable{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/obj/effect/floor_decal/industrial/warning{ + icon_state = "warning"; + dir = 1 + }, +/obj/structure/disposalpipe/segment, +/turf/simulated/floor/plating, +/area/maintenance/security_starboard) +"bnE" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/obj/machinery/meter, +/obj/effect/floor_decal/industrial/warning{ + icon_state = "warning"; + dir = 1 + }, +/obj/structure/sign/warning/high_voltage{ + pixel_x = 32; + pixel_y = 0 + }, +/turf/simulated/floor/plating, +/area/maintenance/security_starboard) +"bnF" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/obj/machinery/portable_atmospherics/powered/scrubber, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 5 + }, +/turf/simulated/floor/tiled, +/area/engineering/atmos) +"bnG" = ( +/obj/machinery/atmospherics/unary/vent_pump/on{ + dir = 8 + }, +/turf/simulated/floor/tiled, +/area/engineering/atmos) +"bnH" = ( +/obj/machinery/atmospherics/pipe/simple/visible/green{ + icon_state = "intact"; + dir = 4 + }, +/turf/simulated/floor/tiled, +/area/engineering/atmos) +"bnI" = ( +/obj/machinery/atmospherics/omni/mixer{ + active_power_usage = 7500; + tag_east = 2; + tag_east_con = null; + tag_north = 1; + tag_north_con = 0.21; + tag_south = 0; + tag_south_con = null; + tag_west = 1; + tag_west_con = 0.79; + use_power = 1 + }, +/obj/effect/floor_decal/industrial/outline/yellow, +/turf/simulated/floor/tiled, +/area/engineering/atmos) +"bnJ" = ( +/obj/machinery/atmospherics/pipe/simple/visible/red, +/obj/machinery/atmospherics/pipe/simple/visible/cyan{ + dir = 4; + icon_state = "intact" + }, +/turf/simulated/floor/tiled, +/area/engineering/atmos) +"bnK" = ( +/obj/machinery/atmospherics/pipe/simple/visible/green, +/obj/machinery/atmospherics/pipe/simple/visible/cyan{ + dir = 4; + icon_state = "intact" + }, +/turf/simulated/floor/tiled, +/area/engineering/atmos) +"bnL" = ( +/obj/machinery/atmospherics/pipe/manifold/visible/cyan, +/turf/simulated/floor/tiled, +/area/engineering/atmos) +"bnM" = ( +/obj/machinery/atmospherics/binary/pump{ + dir = 4; + name = "Air Tank Bypass Pump" + }, +/turf/simulated/floor/tiled, +/area/engineering/atmos) +"bnN" = ( +/obj/machinery/atmospherics/pipe/manifold4w/visible/cyan, +/turf/simulated/floor/tiled, +/area/engineering/atmos) +"bnO" = ( +/obj/machinery/atmospherics/pipe/simple/visible/cyan{ + dir = 4; + icon_state = "intact" + }, +/obj/machinery/atmospherics/valve/digital, +/turf/simulated/floor/tiled, +/area/engineering/atmos) +"bnP" = ( +/obj/machinery/atmospherics/binary/pump{ + dir = 4; + name = "Air Mix to Port" + }, +/turf/simulated/floor/tiled, +/area/engineering/atmos) +"bnQ" = ( +/obj/machinery/atmospherics/pipe/manifold4w/visible/green, +/obj/machinery/meter, +/turf/simulated/floor/tiled, +/area/engineering/atmos) +"bnR" = ( +/obj/machinery/atmospherics/pipe/simple/visible/yellow, +/obj/machinery/atmospherics/pipe/simple/visible/green{ + icon_state = "intact"; + dir = 4 + }, +/turf/simulated/floor/tiled, +/area/engineering/atmos) +"bnS" = ( +/obj/machinery/portable_atmospherics/canister/oxygen, +/obj/effect/floor_decal/industrial/warning{ + dir = 8 + }, +/turf/simulated/floor/tiled, +/area/engineering/atmos) +"bnT" = ( +/obj/machinery/portable_atmospherics/canister/oxygen, +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/turf/simulated/floor/tiled, +/area/engineering/atmos) +"bnU" = ( +/obj/structure/closet, +/obj/random/contraband, +/obj/random/contraband, +/obj/random/maintenance/security, +/obj/random/maintenance/clean, +/obj/random/maintenance/clean, +/obj/effect/floor_decal/industrial/warning, +/turf/simulated/floor, +/area/maintenance/security_port) +"bnV" = ( +/obj/machinery/smartfridge/drying_rack, +/turf/simulated/floor/tiled/white, +/area/rnd/xenobiology/xenoflora) +"bnW" = ( +/obj/machinery/atmospherics/binary/pump/on{ + dir = 8; + target_pressure = 200 + }, +/obj/machinery/light/small{ + dir = 1 + }, +/turf/simulated/floor/plating, +/area/maintenance/security_port) +"bnX" = ( +/obj/machinery/atmospherics/pipe/simple/hidden{ + dir = 10; + icon_state = "intact" + }, +/turf/simulated/floor/plating, +/area/maintenance/security_port) +"bnY" = ( +/obj/effect/floor_decal/industrial/warning{ + icon_state = "warning"; + dir = 4 + }, +/turf/simulated/floor/plating, +/area/maintenance/security_port) +"bnZ" = ( +/turf/simulated/floor/tiled/freezer, +/area/security/detectives_office) +"boa" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/turf/simulated/floor/tiled/white, +/area/security/detectives_office) +"bob" = ( +/obj/machinery/dnaforensics, +/turf/simulated/floor/tiled/freezer, +/area/security/detectives_office) +"boc" = ( +/obj/structure/window/reinforced{ + dir = 8 + }, +/obj/machinery/papershredder, +/turf/simulated/floor/lino, +/area/security/detectives_office) +"bod" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/turf/simulated/floor/carpet, +/area/security/detectives_office) +"boe" = ( +/obj/structure/table/wooden_reinforced, +/turf/simulated/floor/carpet, +/area/security/detectives_office) +"bof" = ( +/obj/structure/table/wooden_reinforced, +/obj/item/device/flashlight/lamp/green, +/obj/item/device/radio/intercom{ + dir = 4; + name = "Station Intercom (General)"; + pixel_x = 21 + }, +/turf/simulated/floor/lino, +/area/security/detectives_office) +"bog" = ( +/obj/structure/bed/chair{ + dir = 1 + }, +/obj/machinery/alarm{ + dir = 4; + icon_state = "alarm0"; + pixel_x = -22 + }, +/obj/structure/extinguisher_cabinet{ + pixel_y = -30 + }, +/obj/effect/floor_decal/borderfloor{ + dir = 10 + }, +/obj/effect/floor_decal/corner/red/border{ + dir = 10 + }, +/turf/simulated/floor/tiled, +/area/security/lobby) +"boh" = ( +/obj/structure/bed/chair{ + dir = 1 + }, +/obj/machinery/ai_status_display{ + pixel_y = -32 + }, +/obj/effect/floor_decal/borderfloor, +/obj/effect/floor_decal/corner/red/border, +/turf/simulated/floor/tiled, +/area/security/lobby) +"boi" = ( +/obj/machinery/atm{ + pixel_y = -30 + }, +/obj/effect/floor_decal/borderfloor/corner{ + dir = 8 + }, +/obj/effect/floor_decal/corner/red/bordercorner{ + dir = 8 + }, +/turf/simulated/floor/tiled, +/area/security/lobby) +"boj" = ( +/obj/structure/disposalpipe/segment, +/obj/effect/floor_decal/steeldecal/steel_decals4{ + dir = 8 + }, +/obj/effect/floor_decal/steeldecal/steel_decals4{ + dir = 5 + }, +/turf/simulated/floor/tiled, +/area/security/lobby) +"bok" = ( +/obj/machinery/camera/network/security{ + c_tag = "SEC - Lobby"; + dir = 1 + }, +/turf/simulated/floor/tiled, +/area/security/lobby) +"bol" = ( +/obj/structure/cable/green{ + d1 = 1; + d2 = 4; + icon_state = "1-4" + }, +/obj/effect/floor_decal/steeldecal/steel_decals4{ + dir = 8 + }, +/obj/effect/floor_decal/steeldecal/steel_decals4{ + dir = 5 + }, +/turf/simulated/floor/tiled, +/area/security/lobby) +"bom" = ( +/obj/structure/cable/green{ + d2 = 8; + icon_state = "0-8" + }, +/obj/machinery/power/apc{ + dir = 2; + name = "south bump"; + pixel_y = -24 + }, +/obj/structure/flora/pottedplant/fern, +/obj/effect/floor_decal/borderfloor/corner, +/obj/effect/floor_decal/corner/red/bordercorner, +/turf/simulated/floor/tiled, +/area/security/lobby) +"bon" = ( +/obj/structure/bed/chair{ + dir = 1 + }, +/obj/effect/floor_decal/borderfloor, +/obj/effect/floor_decal/corner/red/border, +/turf/simulated/floor/tiled, +/area/security/lobby) +"boo" = ( +/obj/structure/bed/chair{ + dir = 1 + }, +/obj/machinery/firealarm{ + dir = 4; + pixel_x = 24 + }, +/obj/machinery/computer/guestpass{ + pixel_x = 0; + pixel_y = -30 + }, +/obj/effect/floor_decal/borderfloor{ + dir = 6 + }, +/obj/effect/floor_decal/corner/red/border{ + dir = 6 + }, +/turf/simulated/floor/tiled, +/area/security/lobby) +"bop" = ( +/obj/effect/floor_decal/borderfloorblack{ + dir = 8 + }, +/obj/effect/floor_decal/corner/blue/border{ + dir = 8 + }, +/obj/item/device/radio/intercom{ + dir = 8; + name = "Station Intercom (General)"; + pixel_x = -21 + }, +/turf/simulated/floor/tiled/dark, +/area/crew_quarters/heads/sc/hos) +"boq" = ( +/turf/simulated/floor/carpet, +/area/crew_quarters/heads/sc/hos) +"bor" = ( +/obj/structure/bed/chair/comfy/black{ + dir = 1 + }, +/obj/machinery/button/remote/airlock{ + id = "HoSdoor"; + name = "Office Door"; + pixel_x = -36; + pixel_y = 29 + }, +/obj/machinery/button/windowtint{ + id = "hosoffice"; + pixel_x = -26; + pixel_y = 30; + req_access = list(58) + }, +/obj/machinery/button/remote/blast_door{ + id = "security_lockdown"; + name = "Brig Lockdown"; + pixel_x = -36; + pixel_y = 39; + req_access = list(2) + }, +/obj/effect/landmark/start{ + name = "Head of Security" + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 5 + }, +/turf/simulated/floor/carpet, +/area/crew_quarters/heads/sc/hos) +"bos" = ( +/obj/machinery/atmospherics/unary/vent_pump/on{ + dir = 8 + }, +/turf/simulated/floor/carpet, +/area/crew_quarters/heads/sc/hos) +"bot" = ( +/obj/machinery/requests_console{ + announcementConsole = 1; + department = "Head of Security's Desk"; + departmentType = 5; + name = "Head of Security RC"; + pixel_x = 30; + pixel_y = 0 + }, +/obj/item/weapon/paper_bin{ + pixel_x = -3; + pixel_y = 7 + }, +/obj/item/weapon/folder/red_hos, +/obj/item/weapon/pen/multi, +/obj/structure/table/reinforced, +/obj/effect/floor_decal/borderfloorblack{ + dir = 4 + }, +/obj/effect/floor_decal/corner/blue/border{ + dir = 4 + }, +/turf/simulated/floor/tiled/dark, +/area/crew_quarters/heads/sc/hos) +"bou" = ( +/obj/structure/closet/lawcloset, +/obj/effect/floor_decal/borderfloorblack{ + dir = 8 + }, +/obj/effect/floor_decal/corner/blue/border{ + dir = 8 + }, +/turf/simulated/floor/tiled/dark, +/area/lawoffice) +"bov" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 6 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 6 + }, +/turf/simulated/floor/tiled/dark, +/area/lawoffice) +"bow" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, +/turf/simulated/floor/tiled/dark, +/area/lawoffice) +"box" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 9 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 10 + }, +/turf/simulated/floor/tiled/dark, +/area/lawoffice) +"boy" = ( +/obj/machinery/light{ + dir = 4; + icon_state = "tube1"; + pixel_x = 0 + }, +/obj/effect/floor_decal/borderfloorblack{ + dir = 4 + }, +/obj/effect/floor_decal/corner/blue/border{ + dir = 4 + }, +/turf/simulated/floor/tiled/dark, +/area/lawoffice) +"boz" = ( +/obj/machinery/atmospherics/pipe/manifold/hidden{ + dir = 8; + icon_state = "map" + }, +/obj/structure/cable{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/obj/structure/disposalpipe/segment, +/obj/machinery/light/small{ + dir = 8 + }, +/turf/simulated/floor/plating, +/area/maintenance/security_starboard) +"boA" = ( +/obj/machinery/atmospherics/pipe/simple/hidden{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/visible/universal, +/turf/simulated/floor/plating, +/area/maintenance/security_starboard) +"boB" = ( +/obj/machinery/atmospherics/pipe/simple/hidden{ + dir = 4 + }, +/obj/effect/floor_decal/industrial/warning{ + icon_state = "warning"; + dir = 4 + }, +/turf/simulated/floor/plating, +/area/maintenance/security_starboard) +"boC" = ( +/obj/structure/closet/crate/hydroponics{ + desc = "All you need to start your own honey farm."; + name = "beekeeping crate" + }, +/obj/item/beehive_assembly, +/obj/item/bee_smoker, +/obj/item/honey_frame, +/obj/item/honey_frame, +/obj/item/honey_frame, +/obj/item/honey_frame, +/obj/item/honey_frame, +/obj/item/bee_pack, +/obj/item/weapon/tool/crowbar, +/turf/simulated/floor/tiled/white, +/area/rnd/xenobiology/xenoflora) +"boD" = ( +/obj/structure/table/rack{ + dir = 1 + }, +/obj/random/maintenance/clean, +/obj/random/maintenance/security, +/obj/random/maintenance/security, +/obj/machinery/atmospherics/pipe/simple/hidden/cyan{ + dir = 10; + icon_state = "intact" + }, +/obj/random/maintenance/security, +/obj/random/cash, +/turf/simulated/floor, +/area/maintenance/security_starboard) +"boE" = ( +/obj/machinery/door/firedoor/border_only, +/obj/effect/wingrille_spawn/reinforced, +/turf/simulated/floor/plating, +/area/maintenance/security_starboard) +"boF" = ( +/obj/effect/floor_decal/corner/black/full{ + dir = 8 + }, +/obj/machinery/air_sensor{ + frequency = 1441; + id_tag = "co2_sensor" + }, +/turf/simulated/floor/reinforced/carbon_dioxide, +/area/engineering/atmos) +"boG" = ( +/obj/effect/floor_decal/corner/black/full{ + dir = 1 + }, +/obj/machinery/atmospherics/unary/outlet_injector{ + dir = 4; + frequency = 1441; + icon_state = "map_injector"; + id = "co2_in"; + pixel_y = 1; + use_power = 1 + }, +/turf/simulated/floor/reinforced/carbon_dioxide, +/area/engineering/atmos) +"boH" = ( +/obj/machinery/atmospherics/pipe/simple/visible/red{ + icon_state = "intact"; + dir = 4 + }, +/obj/machinery/door/firedoor/glass, +/obj/effect/wingrille_spawn/reinforced, +/obj/machinery/door/blast/regular{ + density = 0; + dir = 1; + icon_state = "pdoor0"; + id = "atmoslockdown"; + name = "Atmospherics Lockdown"; + opacity = 0 + }, +/turf/simulated/floor/plating, +/area/engineering/atmos) +"boI" = ( +/obj/machinery/atmospherics/pipe/simple/visible/red{ + icon_state = "intact"; + dir = 4 + }, +/obj/machinery/computer/general_air_control/large_tank_control{ + frequency = 1441; + input_tag = "co2_in"; + name = "Carbon Dioxide Supply Control"; + output_tag = "co2_out"; + sensors = list("co2_sensor" = "Tank") + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/obj/effect/floor_decal/borderfloor{ + dir = 8 + }, +/obj/effect/floor_decal/corner/black/border{ + dir = 8 + }, +/obj/effect/floor_decal/borderfloor/corner2{ + dir = 8 + }, +/obj/effect/floor_decal/corner/black/bordercorner2{ + dir = 8 + }, +/turf/simulated/floor/tiled, +/area/engineering/atmos) +"boJ" = ( +/obj/machinery/atmospherics/pipe/simple/visible/red{ + icon_state = "intact"; + dir = 4 + }, +/obj/machinery/door/firedoor/border_only, +/obj/effect/wingrille_spawn/reinforced, +/obj/machinery/meter, +/obj/machinery/door/blast/regular{ + density = 0; + dir = 1; + icon_state = "pdoor0"; + id = "atmoslockdown"; + name = "Atmospherics Lockdown"; + opacity = 0 + }, +/turf/simulated/floor, +/area/engineering/atmos) +"boK" = ( +/obj/machinery/atmospherics/pipe/simple/visible/red{ + icon_state = "intact"; + dir = 4 + }, +/obj/structure/lattice, +/turf/space, +/area/space) +"boL" = ( +/obj/machinery/atmospherics/pipe/simple/visible/red{ + icon_state = "intact"; + dir = 4 + }, +/obj/machinery/meter, +/turf/simulated/floor/tiled, +/area/engineering/atmos) +"boM" = ( +/obj/machinery/atmospherics/pipe/simple/visible/red{ + icon_state = "intact"; + dir = 4 + }, +/obj/machinery/atmospherics/binary/pump{ + dir = 2; + name = "N2 to Mixing" + }, +/turf/simulated/floor/tiled, +/area/engineering/atmos) +"boN" = ( +/obj/machinery/atmospherics/omni/atmos_filter{ + tag_east = 2; + tag_north = 4; + tag_south = 1; + tag_west = 5; + use_power = 1 + }, +/obj/effect/floor_decal/industrial/outline/yellow, +/turf/simulated/floor/tiled, +/area/engineering/atmos) +"boO" = ( +/obj/machinery/atmospherics/pipe/simple/visible/red{ + icon_state = "intact"; + dir = 4 + }, +/obj/machinery/atmospherics/binary/pump{ + dir = 2; + name = "O2 to Mixing" + }, +/turf/simulated/floor/tiled, +/area/engineering/atmos) +"boP" = ( +/obj/machinery/atmospherics/omni/atmos_filter{ + tag_east = 2; + tag_north = 3; + tag_south = 0; + tag_west = 1; + use_power = 1 + }, +/obj/effect/floor_decal/industrial/outline/yellow, +/turf/simulated/floor/tiled, +/area/engineering/atmos) +"boQ" = ( +/obj/machinery/atmospherics/pipe/simple/visible/red{ + icon_state = "intact"; + dir = 4 + }, +/turf/simulated/floor/tiled, +/area/engineering/atmos) +"boR" = ( +/obj/machinery/atmospherics/pipe/manifold/visible/red{ + icon_state = "map"; + dir = 1 + }, +/turf/simulated/floor/tiled, +/area/engineering/atmos) +"boS" = ( +/obj/machinery/atmospherics/pipe/simple/visible/cyan, +/obj/machinery/atmospherics/binary/pump{ + dir = 4 + }, +/turf/simulated/floor/tiled, +/area/engineering/atmos) +"boT" = ( +/obj/machinery/atmospherics/pipe/manifold/visible/red{ + dir = 4; + initialize_directions = 11 + }, +/turf/simulated/floor/tiled, +/area/engineering/atmos) +"boU" = ( +/obj/machinery/hologram/holopad, +/obj/effect/floor_decal/industrial/outline/grey, +/turf/simulated/floor/tiled, +/area/engineering/atmos) +"boV" = ( +/obj/machinery/atmospherics/binary/pump{ + name = "Transit to Port" + }, +/turf/simulated/floor/tiled, +/area/engineering/atmos) +"boW" = ( +/obj/machinery/portable_atmospherics/canister/nitrogen, +/obj/effect/floor_decal/industrial/warning{ + dir = 8 + }, +/turf/simulated/floor/tiled, +/area/engineering/atmos) +"boX" = ( +/obj/machinery/portable_atmospherics/canister/nitrogen, +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/turf/simulated/floor/tiled, +/area/engineering/atmos) +"boY" = ( +/obj/machinery/door/firedoor/border_only, +/obj/effect/wingrille_spawn/reinforced, +/turf/simulated/floor, +/area/maintenance/security_port) +"boZ" = ( +/obj/machinery/atmospherics/portables_connector{ + dir = 4 + }, +/obj/effect/floor_decal/industrial/outline/yellow, +/obj/machinery/portable_atmospherics/canister/air/airlock, +/turf/simulated/floor, +/area/maintenance/security_port) +"bpa" = ( +/obj/machinery/atmospherics/pipe/manifold/hidden{ + dir = 4; + icon_state = "map" + }, +/obj/effect/floor_decal/industrial/warning{ + icon_state = "warning"; + dir = 8 + }, +/obj/machinery/meter, +/obj/machinery/portable_atmospherics/powered/pump/filled, +/turf/simulated/floor/plating, +/area/maintenance/security_port) +"bpb" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/universal, +/turf/simulated/floor/plating, +/area/maintenance/security_port) +"bpc" = ( +/obj/machinery/door/firedoor/border_only, +/obj/machinery/door/airlock/maintenance{ + name = "Forensics Maintenance Access"; + req_access = list(4) + }, +/turf/simulated/floor/plating, +/area/security/detectives_office) +"bpd" = ( +/obj/effect/floor_decal/steeldecal/steel_decals4{ + dir = 1 + }, +/obj/effect/floor_decal/steeldecal/steel_decals4{ + dir = 6 + }, +/turf/simulated/floor/tiled/freezer, +/area/security/detectives_office) +"bpe" = ( +/obj/machinery/atmospherics/unary/vent_pump/on{ + dir = 1 + }, +/turf/simulated/floor/tiled/white, +/area/security/detectives_office) +"bpf" = ( +/obj/item/weapon/stool/padded, +/turf/simulated/floor/tiled/white, +/area/security/detectives_office) +"bpg" = ( +/obj/structure/table/reinforced, +/obj/item/device/mass_spectrometer/adv, +/obj/item/device/reagent_scanner, +/obj/item/weapon/reagent_containers/syringe, +/turf/simulated/floor/tiled/freezer, +/area/security/detectives_office) +"bph" = ( +/obj/structure/window/reinforced{ + dir = 8 + }, +/obj/structure/filingcabinet/chestdrawer, +/turf/simulated/floor/lino, +/area/security/detectives_office) +"bpi" = ( +/obj/machinery/atmospherics/unary/vent_pump/on{ + dir = 1 + }, +/turf/simulated/floor/carpet, +/area/security/detectives_office) +"bpj" = ( +/obj/structure/bed/chair/office/dark{ + dir = 1 + }, +/obj/effect/landmark/start{ + name = "Detective" + }, +/turf/simulated/floor/carpet, +/area/security/detectives_office) +"bpk" = ( +/obj/structure/table/wooden_reinforced, +/obj/item/weapon/handcuffs, +/obj/item/weapon/storage/fancy/cigarettes/dromedaryco, +/obj/item/device/tape/random, +/obj/item/device/taperecorder{ + pixel_x = -4; + pixel_y = 2 + }, +/obj/machinery/alarm{ + dir = 8; + pixel_x = 22; + pixel_y = 0 + }, +/turf/simulated/floor/lino, +/area/security/detectives_office) +"bpl" = ( +/obj/machinery/door/firedoor/glass, +/obj/effect/floor_decal/industrial/warning, +/obj/machinery/door/airlock/glass_security{ + name = "Security Lobby" + }, +/obj/structure/disposalpipe/segment, +/turf/simulated/floor/tiled/steel_grid, +/area/security/lobby) +"bpm" = ( +/obj/machinery/door/firedoor/border_only, +/obj/effect/wingrille_spawn/reinforced, +/turf/simulated/floor/plating, +/area/security/lobby) +"bpn" = ( +/obj/machinery/door/firedoor/glass, +/obj/effect/floor_decal/industrial/warning, +/obj/machinery/door/airlock/glass_security{ + name = "Security Lobby" + }, +/turf/simulated/floor/tiled/steel_grid, +/area/security/lobby) +"bpo" = ( +/obj/machinery/status_display, +/turf/simulated/wall, +/area/security/lobby) +"bpp" = ( +/obj/structure/filingcabinet, +/obj/item/device/radio/intercom/department/security{ + dir = 4; + icon_override = "secintercom"; + pixel_x = -21 + }, +/obj/machinery/ai_status_display{ + pixel_x = -32; + pixel_y = -32 + }, +/obj/machinery/alarm{ + dir = 1; + pixel_y = -22 + }, +/obj/effect/floor_decal/borderfloorblack{ + dir = 10 + }, +/obj/effect/floor_decal/corner/blue/border{ + dir = 10 + }, +/turf/simulated/floor/tiled/dark, +/area/crew_quarters/heads/sc/hos) +"bpq" = ( +/obj/machinery/computer/security, +/obj/effect/floor_decal/borderfloorblack, +/obj/effect/floor_decal/corner/blue/border, +/turf/simulated/floor/tiled/dark, +/area/crew_quarters/heads/sc/hos) +"bpr" = ( +/obj/machinery/computer/secure_data, +/obj/effect/floor_decal/borderfloorblack, +/obj/effect/floor_decal/corner/blue/border, +/turf/simulated/floor/tiled/dark, +/area/crew_quarters/heads/sc/hos) +"bps" = ( +/obj/structure/closet/secure_closet/hos, +/obj/machinery/newscaster/security_unit{ + pixel_x = 0; + pixel_y = -30 + }, +/obj/effect/floor_decal/borderfloorblack, +/obj/effect/floor_decal/corner/blue/border, +/turf/simulated/floor/tiled/dark, +/area/crew_quarters/heads/sc/hos) +"bpt" = ( +/obj/machinery/photocopier/faxmachine{ + department = "Head of Security" + }, +/obj/machinery/status_display{ + pixel_x = 32; + pixel_y = -32 + }, +/obj/structure/extinguisher_cabinet{ + pixel_y = -30 + }, +/obj/structure/table/reinforced, +/obj/effect/floor_decal/borderfloorblack{ + dir = 6 + }, +/obj/effect/floor_decal/corner/blue/border{ + dir = 6 + }, +/turf/simulated/floor/tiled/dark, +/area/crew_quarters/heads/sc/hos) +"bpu" = ( +/obj/item/device/taperecorder{ + pixel_x = -4; + pixel_y = 2 + }, +/obj/item/device/camera{ + pixel_x = 3; + pixel_y = -4 + }, +/obj/item/device/flash, +/obj/item/device/flash, +/obj/item/weapon/storage/secure/briefcase, +/obj/structure/closet, +/obj/item/weapon/storage/secure/briefcase, +/obj/item/device/taperecorder{ + pixel_x = -4; + pixel_y = 2 + }, +/obj/item/device/camera{ + pixel_x = 3; + pixel_y = -4 + }, +/obj/structure/cable{ + icon_state = "0-4"; + d2 = 4 + }, +/obj/machinery/power/apc{ + dir = 8; + name = "west bump"; + pixel_x = -24 + }, +/obj/machinery/light_switch{ + pixel_x = -36 + }, +/obj/effect/floor_decal/borderfloorblack{ + dir = 8 + }, +/obj/effect/floor_decal/corner/blue/border{ + dir = 8 + }, +/turf/simulated/floor/tiled/dark, +/area/lawoffice) +"bpv" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/obj/structure/cable{ + d1 = 2; + d2 = 8; + icon_state = "2-8" + }, +/turf/simulated/floor/tiled/dark, +/area/lawoffice) +"bpw" = ( +/obj/structure/bed/chair{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/turf/simulated/floor/tiled/dark, +/area/lawoffice) +"bpx" = ( +/obj/structure/bed/chair/office/dark{ + dir = 8 + }, +/obj/machinery/button/windowtint{ + id = "lawyer_tint"; + pixel_x = -26; + pixel_y = 30; + req_access = list(58) + }, +/obj/machinery/newscaster{ + pixel_x = 30; + pixel_y = 0 + }, +/obj/effect/landmark/start{ + name = "Internal Affairs Agent" + }, +/obj/effect/floor_decal/borderfloorblack{ + dir = 4 + }, +/obj/effect/floor_decal/corner/blue/border{ + dir = 4 + }, +/turf/simulated/floor/tiled/dark, +/area/lawoffice) +"bpy" = ( +/obj/machinery/atmospherics/valve/digital/open, +/obj/structure/cable{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/obj/structure/disposalpipe/segment, +/turf/simulated/floor/plating, +/area/maintenance/security_starboard) +"bpz" = ( +/obj/machinery/atmospherics/valve/digital/open, +/turf/simulated/floor/plating, +/area/maintenance/security_starboard) +"bpA" = ( +/obj/effect/floor_decal/industrial/warning{ + icon_state = "warning"; + dir = 4 + }, +/turf/simulated/floor/plating, +/area/maintenance/security_starboard) +"bpB" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/cyan{ + dir = 6; + icon_state = "intact" + }, +/obj/machinery/portable_atmospherics/powered/pump/filled, +/turf/simulated/floor/plating, +/area/maintenance/security_starboard) +"bpC" = ( +/obj/machinery/atmospherics/pipe/manifold/hidden/cyan{ + dir = 4 + }, +/obj/machinery/meter, +/obj/structure/closet/crate, +/obj/item/clothing/mask/gas, +/obj/item/device/flashlight, +/obj/item/device/flashlight, +/obj/random/maintenance/research, +/obj/random/maintenance/cargo, +/obj/random/maintenance/security, +/obj/random/maintenance/security, +/turf/simulated/floor/plating, +/area/maintenance/security_starboard) +"bpD" = ( +/obj/effect/floor_decal/corner/black/full, +/obj/machinery/camera/network/engineering{ + c_tag = "Atmospherics Tank - Carbon Dioxide"; + dir = 4 + }, +/obj/machinery/light/small{ + dir = 8 + }, +/turf/simulated/floor/reinforced/carbon_dioxide, +/area/engineering/atmos) +"bpE" = ( +/obj/effect/floor_decal/corner/black/full{ + dir = 4 + }, +/obj/machinery/atmospherics/unary/vent_pump{ + dir = 4; + external_pressure_bound = 0; + external_pressure_bound_default = 0; + frequency = 1441; + icon_state = "map_vent_in"; + id_tag = "co2_out"; + initialize_directions = 1; + internal_pressure_bound = 4000; + internal_pressure_bound_default = 4000; + pressure_checks = 2; + pressure_checks_default = 2; + pump_direction = 0; + use_power = 1 + }, +/turf/simulated/floor/reinforced/carbon_dioxide, +/area/engineering/atmos) +"bpF" = ( +/obj/machinery/atmospherics/pipe/simple/visible/green{ + icon_state = "intact"; + dir = 4 + }, +/obj/machinery/door/firedoor/border_only, +/obj/effect/wingrille_spawn/reinforced, +/obj/machinery/meter, +/obj/machinery/door/blast/regular{ + density = 0; + dir = 1; + icon_state = "pdoor0"; + id = "atmoslockdown"; + name = "Atmospherics Lockdown"; + opacity = 0 + }, +/turf/simulated/floor, +/area/engineering/atmos) +"bpG" = ( +/obj/machinery/atmospherics/pipe/simple/visible/green{ + icon_state = "intact"; + dir = 4 + }, +/obj/structure/lattice, +/turf/space, +/area/space) +"bpH" = ( +/obj/machinery/atmospherics/pipe/manifold/visible/green{ + dir = 1 + }, +/obj/machinery/door/firedoor/border_only, +/obj/effect/wingrille_spawn/reinforced, +/obj/machinery/door/blast/regular{ + density = 0; + dir = 1; + icon_state = "pdoor0"; + id = "atmoslockdown"; + name = "Atmospherics Lockdown"; + opacity = 0 + }, +/turf/simulated/floor/plating, +/area/engineering/atmos) +"bpI" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/obj/machinery/atmospherics/valve/digital{ + dir = 4; + name = "CO2 Outlet Valve" + }, +/obj/effect/floor_decal/borderfloor{ + dir = 8 + }, +/obj/effect/floor_decal/corner/black/border{ + dir = 8 + }, +/obj/effect/floor_decal/borderfloor/corner2{ + dir = 10 + }, +/obj/effect/floor_decal/corner/black/bordercorner2{ + dir = 10 + }, +/turf/simulated/floor/tiled, +/area/engineering/atmos) +"bpJ" = ( +/obj/machinery/atmospherics/binary/pump{ + dir = 4; + name = "CO2 to Mixing" + }, +/turf/simulated/floor/tiled, +/area/engineering/atmos) +"bpK" = ( +/obj/machinery/atmospherics/pipe/manifold4w/visible/green, +/turf/simulated/floor/tiled, +/area/engineering/atmos) +"bpL" = ( +/obj/machinery/atmospherics/pipe/simple/visible/green{ + icon_state = "intact"; + dir = 4 + }, +/obj/machinery/portable_atmospherics/powered/pump/filled, +/turf/simulated/floor/tiled, +/area/engineering/atmos) +"bpM" = ( +/obj/machinery/atmospherics/pipe/simple/visible/green{ + icon_state = "intact"; + dir = 4 + }, +/obj/machinery/space_heater, +/turf/simulated/floor/tiled, +/area/engineering/atmos) +"bpN" = ( +/obj/machinery/atmospherics/pipe/manifold/visible/green, +/turf/simulated/floor/tiled, +/area/engineering/atmos) +"bpO" = ( +/obj/machinery/atmospherics/pipe/simple/visible/red, +/obj/machinery/atmospherics/binary/pump{ + dir = 4; + name = "Mixing to Transit" + }, +/turf/simulated/floor/tiled, +/area/engineering/atmos) +"bpP" = ( +/obj/machinery/atmospherics/pipe/simple/visible/green{ + icon_state = "intact"; + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/visible/cyan, +/turf/simulated/floor/tiled, +/area/engineering/atmos) +"bpQ" = ( +/obj/machinery/atmospherics/binary/pump{ + dir = 4; + name = "Mixing to Transit" + }, +/turf/simulated/floor/tiled, +/area/engineering/atmos) +"bpR" = ( +/obj/machinery/atmospherics/pipe/manifold/visible/green{ + icon_state = "map"; + dir = 4 + }, +/turf/simulated/floor/tiled, +/area/engineering/atmos) +"bpS" = ( +/obj/machinery/atmospherics/pipe/manifold/visible/yellow{ + dir = 8 + }, +/obj/machinery/meter, +/turf/simulated/floor/tiled, +/area/engineering/atmos) +"bpT" = ( +/obj/machinery/atmospherics/pipe/simple/visible/yellow{ + dir = 9 + }, +/turf/simulated/floor/tiled, +/area/engineering/atmos) +"bpU" = ( +/obj/machinery/portable_atmospherics/canister/air, +/obj/effect/floor_decal/industrial/warning{ + dir = 8 + }, +/turf/simulated/floor/tiled, +/area/engineering/atmos) +"bpV" = ( +/obj/machinery/portable_atmospherics/canister/air, +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/obj/structure/sign/warning/compressed_gas{ + pixel_x = 32 + }, +/turf/simulated/floor/tiled, +/area/engineering/atmos) +"bpW" = ( +/turf/simulated/wall/r_wall, +/area/maintenance/substation/atmospherics) +"bpX" = ( +/obj/machinery/atmospherics/pipe/manifold/hidden, +/obj/effect/floor_decal/industrial/warning{ + icon_state = "warning"; + dir = 8 + }, +/obj/machinery/portable_atmospherics/powered/scrubber, +/turf/simulated/floor/plating, +/area/maintenance/security_port) +"bpY" = ( +/obj/machinery/atmospherics/pipe/simple/hidden{ + dir = 10; + icon_state = "intact" + }, +/obj/structure/plushie/beepsky, +/turf/simulated/floor/plating, +/area/maintenance/security_port) +"bpZ" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/structure/cable{ + d1 = 2; + d2 = 4; + icon_state = "2-4" + }, +/turf/simulated/floor/plating, +/area/maintenance/security_port) +"bqa" = ( +/obj/effect/floor_decal/industrial/warning{ + icon_state = "warning"; + dir = 4 + }, +/obj/structure/cable{ + d2 = 8; + icon_state = "0-8" + }, +/obj/machinery/power/apc{ + dir = 2; + name = "south bump"; + pixel_y = -24 + }, +/turf/simulated/floor/plating, +/area/maintenance/security_port) +"bqb" = ( +/obj/machinery/computer/secure_data/detective_computer, +/turf/simulated/floor/tiled/freezer, +/area/security/detectives_office) +"bqc" = ( +/obj/structure/table/reinforced, +/obj/item/weapon/reagent_containers/spray/luminol, +/obj/item/device/uv_light, +/obj/item/clothing/gloves/sterile/latex, +/obj/machinery/requests_console{ + announcementConsole = 0; + department = "Security"; + departmentType = 5; + name = "Security RC"; + pixel_y = -30 + }, +/turf/simulated/floor/tiled/freezer, +/area/security/detectives_office) +"bqd" = ( +/obj/structure/table/reinforced, +/obj/item/device/radio/intercom{ + desc = "Talk... listen through this."; + dir = 2; + name = "Station Intercom (Brig Radio)"; + pixel_x = 0; + pixel_y = -21; + wires = 7 + }, +/obj/item/weapon/forensics/sample_kit, +/turf/simulated/floor/tiled/freezer, +/area/security/detectives_office) +"bqe" = ( +/obj/structure/table/reinforced, +/obj/item/weapon/forensics/sample_kit/powder, +/turf/simulated/floor/tiled/freezer, +/area/security/detectives_office) +"bqf" = ( +/obj/structure/window/reinforced{ + dir = 8 + }, +/obj/machinery/photocopier, +/obj/machinery/newscaster{ + pixel_y = -30 + }, +/turf/simulated/floor/lino, +/area/security/detectives_office) +"bqg" = ( +/obj/item/weapon/storage/secure/safe{ + pixel_x = 5; + pixel_y = -26 + }, +/turf/simulated/floor/lino, +/area/security/detectives_office) +"bqh" = ( +/obj/structure/bookcase, +/obj/item/weapon/book/codex/corp_regs, +/turf/simulated/floor/lino, +/area/security/detectives_office) +"bqi" = ( +/obj/structure/table/woodentable, +/obj/item/weapon/storage/photo_album{ + pixel_y = -10 + }, +/obj/item/device/camera_film, +/obj/item/device/camera{ + desc = "A one use - polaroid camera. 30 photos left."; + name = "detectives camera"; + pictures_left = 30; + pixel_x = 2; + pixel_y = 3 + }, +/obj/machinery/light, +/turf/simulated/floor/lino, +/area/security/detectives_office) +"bqj" = ( +/obj/structure/closet/secure_closet/detective, +/obj/item/weapon/reagent_containers/spray/pepper, +/obj/item/device/flash, +/turf/simulated/floor/lino, +/area/security/detectives_office) +"bqk" = ( +/obj/machinery/computer/security/wooden_tv, +/turf/simulated/floor/lino, +/area/security/detectives_office) +"bql" = ( +/obj/item/weapon/bedsheet/ian, +/obj/item/clothing/suit/ianshirt, +/turf/simulated/floor/plating, +/area/security/lobby) +"bqm" = ( +/turf/simulated/wall, +/area/hallway/primary/seconddeck/fore) +"bqn" = ( +/obj/effect/floor_decal/industrial/hatch/yellow, +/obj/machinery/door/blast/regular{ + density = 0; + icon_state = "pdoor0"; + id = "security_lockdown"; + name = "Security Blast Door"; + opacity = 0 + }, +/obj/structure/sign/warning/secure_area{ + pixel_x = -32 + }, +/obj/structure/disposalpipe/segment, +/turf/simulated/floor/tiled/dark, +/area/hallway/primary/seconddeck/fore) +"bqo" = ( +/obj/effect/floor_decal/industrial/hatch/yellow, +/obj/machinery/door/blast/regular{ + density = 0; + icon_state = "pdoor0"; + id = "security_lockdown"; + name = "Security Blast Door"; + opacity = 0 + }, +/turf/simulated/floor/tiled/dark, +/area/hallway/primary/seconddeck/fore) +"bqp" = ( +/obj/effect/floor_decal/industrial/hatch/yellow, +/obj/machinery/door/blast/regular{ + density = 0; + icon_state = "pdoor0"; + id = "security_lockdown"; + name = "Security Blast Door"; + opacity = 0 + }, +/obj/structure/sign/warning/secure_area{ + pixel_x = 32 + }, +/turf/simulated/floor/tiled/dark, +/area/hallway/primary/seconddeck/fore) +"bqq" = ( +/obj/structure/sign/deck/second, +/turf/simulated/wall, +/area/security/lobby) +"bqr" = ( +/turf/simulated/wall, +/area/crew_quarters/heads/sc/hos) +"bqs" = ( +/obj/structure/table/rack{ + dir = 8; + layer = 2.9 + }, +/obj/item/weapon/storage/briefcase{ + pixel_x = -2; + pixel_y = -5 + }, +/obj/item/weapon/storage/briefcase{ + pixel_x = 3; + pixel_y = 0 + }, +/obj/machinery/status_display{ + pixel_x = -32 + }, +/obj/effect/floor_decal/borderfloorblack{ + dir = 8 + }, +/obj/effect/floor_decal/corner/blue/border{ + dir = 8 + }, +/turf/simulated/floor/tiled/dark, +/area/lawoffice) +"bqt" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/obj/structure/cable{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/obj/effect/floor_decal/steeldecal/steel_decals4{ + dir = 5 + }, +/obj/effect/floor_decal/steeldecal/steel_decals4{ + dir = 8 + }, +/turf/simulated/floor/tiled/dark, +/area/lawoffice) +"bqu" = ( +/obj/machinery/disposal, +/obj/structure/disposalpipe/trunk, +/obj/effect/floor_decal/borderfloorblack/corner, +/obj/effect/floor_decal/corner/blue/bordercorner, +/turf/simulated/floor/tiled/dark, +/area/lawoffice) +"bqv" = ( +/obj/machinery/papershredder, +/obj/machinery/atmospherics/unary/vent_scrubber/on{ + dir = 1 + }, +/obj/effect/floor_decal/borderfloorblack, +/obj/effect/floor_decal/corner/blue/border, +/turf/simulated/floor/tiled/dark, +/area/lawoffice) +"bqw" = ( +/obj/structure/table/reinforced, +/obj/item/device/flashlight/lamp, +/obj/effect/floor_decal/borderfloorblack, +/obj/effect/floor_decal/corner/blue/border, +/turf/simulated/floor/tiled/dark, +/area/lawoffice) +"bqx" = ( +/obj/structure/table/reinforced, +/obj/machinery/computer/skills, +/obj/effect/floor_decal/borderfloorblack{ + dir = 6 + }, +/obj/effect/floor_decal/corner/blue/border{ + dir = 6 + }, +/turf/simulated/floor/tiled/dark, +/area/lawoffice) +"bqy" = ( +/obj/machinery/atmospherics/pipe/simple/visible/universal, +/obj/structure/cable{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/obj/structure/disposalpipe/segment, +/obj/structure/cable{ + d1 = 2; + d2 = 4; + icon_state = "2-4" + }, +/obj/machinery/alarm{ + dir = 4; + icon_state = "alarm0"; + pixel_x = -22 + }, +/turf/simulated/floor/plating, +/area/maintenance/security_starboard) +"bqz" = ( +/obj/structure/closet/wardrobe/grey, +/obj/item/weapon/storage/backpack, +/obj/item/weapon/storage/backpack, +/obj/random/maintenance/security, +/obj/random/maintenance/security, +/obj/random/maintenance/clean, +/obj/random/firstaid, +/obj/machinery/atmospherics/pipe/simple/visible/universal, +/obj/structure/cable{ + d1 = 4; + d2 = 8; + icon_state = "4-8"; + pixel_x = 0 + }, +/turf/simulated/floor/plating, +/area/maintenance/security_starboard) +"bqA" = ( +/obj/structure/closet, +/obj/random/contraband, +/obj/random/contraband, +/obj/random/maintenance/security, +/obj/random/maintenance/clean, +/obj/random/maintenance/clean, +/obj/item/clothing/suit/storage/hazardvest/green, +/obj/effect/floor_decal/industrial/warning{ + icon_state = "warning"; + dir = 4 + }, +/obj/structure/cable{ + d2 = 8; + icon_state = "0-8" + }, +/obj/machinery/power/apc{ + dir = 2; + name = "south bump"; + pixel_y = -24 + }, +/turf/simulated/floor, +/area/maintenance/security_starboard) +"bqB" = ( +/obj/machinery/atmospherics/pipe/tank/air{ + dir = 1 + }, +/turf/simulated/floor/plating, +/area/maintenance/security_starboard) +"bqC" = ( +/obj/machinery/atmospherics/pipe/simple/visible/green{ + dir = 5; + icon_state = "intact" + }, +/obj/machinery/door/firedoor/border_only, +/obj/effect/wingrille_spawn/reinforced, +/obj/machinery/door/blast/regular{ + density = 0; + dir = 1; + icon_state = "pdoor0"; + id = "atmoslockdown"; + name = "Atmospherics Lockdown"; + opacity = 0 + }, +/turf/simulated/floor/plating, +/area/engineering/atmos) +"bqD" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/obj/machinery/atmospherics/binary/pump{ + dir = 4; + name = "CO2 to Connector" + }, +/turf/simulated/floor/tiled, +/area/engineering/atmos) +"bqE" = ( +/obj/machinery/atmospherics/portables_connector{ + dir = 8 + }, +/obj/effect/floor_decal/industrial/outline/yellow, +/turf/simulated/floor/tiled, +/area/engineering/atmos) +"bqF" = ( +/obj/machinery/portable_atmospherics/powered/pump/filled, +/turf/simulated/floor/tiled, +/area/engineering/atmos) +"bqG" = ( +/obj/machinery/atmospherics/pipe/simple/visible/yellow{ + dir = 6 + }, +/obj/structure/reagent_dispensers/fueltank, +/turf/simulated/floor/tiled, +/area/engineering/atmos) +"bqH" = ( +/obj/machinery/atmospherics/pipe/manifold/visible/yellow{ + icon_state = "map"; + dir = 1 + }, +/turf/simulated/floor/tiled, +/area/engineering/atmos) +"bqI" = ( +/obj/machinery/atmospherics/binary/pump{ + dir = 4 + }, +/turf/simulated/floor/tiled, +/area/engineering/atmos) +"bqJ" = ( +/obj/machinery/atmospherics/pipe/manifold/visible/yellow{ + icon_state = "map"; + dir = 1 + }, +/obj/machinery/meter, +/obj/structure/reagent_dispensers/watertank, +/turf/simulated/floor/tiled, +/area/engineering/atmos) +"bqK" = ( +/obj/machinery/atmospherics/pipe/simple/visible/yellow{ + dir = 4 + }, +/obj/machinery/atmospherics/binary/pump, +/turf/simulated/floor/tiled, +/area/engineering/atmos) +"bqL" = ( +/obj/machinery/atmospherics/pipe/simple/visible/cyan, +/obj/machinery/atmospherics/pipe/simple/visible/yellow{ + dir = 4 + }, +/turf/simulated/floor/tiled, +/area/engineering/atmos) +"bqM" = ( +/obj/machinery/atmospherics/pipe/simple/visible/yellow{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/visible/red, +/turf/simulated/floor/tiled, +/area/engineering/atmos) +"bqN" = ( +/obj/machinery/atmospherics/pipe/simple/visible/yellow{ + dir = 4 + }, +/obj/machinery/atmospherics/binary/pump{ + name = "Transit to Waste" + }, +/turf/simulated/floor/tiled, +/area/engineering/atmos) +"bqO" = ( +/obj/machinery/portable_atmospherics/canister/carbon_dioxide, +/obj/structure/window/reinforced, +/obj/effect/floor_decal/industrial/warning{ + dir = 8 + }, +/obj/machinery/atmospherics/unary/vent_scrubber/on{ + dir = 4 + }, +/turf/simulated/floor/tiled, +/area/engineering/atmos) +"bqP" = ( +/obj/machinery/portable_atmospherics/canister/carbon_dioxide, +/obj/structure/window/reinforced, +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{ + dir = 4 + }, +/turf/simulated/floor/tiled, +/area/engineering/atmos) +"bqQ" = ( +/obj/structure/cable/cyan{ + d2 = 4; + icon_state = "0-4" + }, +/obj/structure/cable/cyan{ + d2 = 2; + icon_state = "0-2" + }, +/obj/machinery/power/sensor{ + name = "Powernet Sensor - Atmospherics Subgrid"; + name_tag = "Atmospherics Subgrid" + }, +/obj/structure/table/rack, +/obj/item/weapon/tank/oxygen/yellow, +/obj/item/weapon/tank/oxygen/yellow, +/obj/machinery/alarm{ + pixel_y = 23 + }, +/obj/item/clothing/mask/breath, +/obj/item/clothing/mask/breath, +/obj/effect/floor_decal/industrial/warning{ + dir = 4 + }, +/turf/simulated/floor, +/area/maintenance/substation/atmospherics) +"bqR" = ( +/obj/structure/cable{ + icon_state = "0-4"; + d2 = 4 + }, +/obj/machinery/power/smes/buildable{ + charge = 2e+006; + input_attempt = 1; + RCon_tag = "Substation - Atmospherics" + }, +/obj/structure/cable/cyan{ + d2 = 8; + icon_state = "0-8" + }, +/turf/simulated/floor, +/area/maintenance/substation/atmospherics) +"bqS" = ( +/obj/machinery/power/breakerbox/activated{ + RCon_tag = "Atmos Substation Bypass" + }, +/turf/simulated/floor, +/area/maintenance/substation/atmospherics) +"bqT" = ( +/turf/simulated/wall/r_wall, +/area/maintenance/engineering) +"bqU" = ( +/obj/machinery/door/firedoor/border_only, +/obj/effect/wingrille_spawn/reinforced, +/turf/simulated/floor, +/area/maintenance/engineering) +"bqV" = ( +/obj/effect/floor_decal/industrial/warning/corner, +/obj/machinery/light/small{ + dir = 4; + pixel_y = 0 + }, +/turf/simulated/floor/airless, +/area/maintenance/security_port) +"bqW" = ( +/obj/machinery/atmospherics/pipe/simple/hidden{ + dir = 6 + }, +/turf/simulated/wall/r_wall, +/area/maintenance/security_port) +"bqX" = ( +/obj/machinery/atmospherics/pipe/manifold/hidden{ + dir = 1; + icon_state = "map" + }, +/turf/simulated/wall/r_wall, +/area/maintenance/security_port) +"bqY" = ( +/obj/machinery/atmospherics/pipe/simple/hidden{ + dir = 10; + icon_state = "intact" + }, +/turf/simulated/wall/r_wall, +/area/maintenance/security_port) +"bqZ" = ( +/obj/machinery/atmospherics/pipe/simple/hidden, +/turf/simulated/wall, +/area/maintenance/security_port) +"bra" = ( +/obj/machinery/door/firedoor/border_only, +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/structure/cable{ + d1 = 1; + d2 = 2; + icon_state = "1-2"; + pixel_y = 0 + }, +/obj/machinery/door/airlock/maintenance{ + req_access = list(12) + }, +/turf/simulated/floor/plating, +/area/maintenance/security_port) +"brb" = ( +/turf/simulated/wall/r_wall, +/area/ai_monitored/storage/eva) +"brc" = ( +/obj/machinery/status_display, +/turf/simulated/wall/r_wall, +/area/ai_monitored/storage/eva) +"brd" = ( +/obj/structure/sign/warning/high_voltage{ + pixel_x = -32; + pixel_y = 0 + }, +/obj/effect/floor_decal/industrial/warning/corner{ + dir = 4 + }, +/turf/simulated/floor/tiled/dark, +/area/hallway/primary/seconddeck/fore) +"bre" = ( +/obj/structure/disposalpipe/segment, +/obj/effect/floor_decal/industrial/warning{ + icon_state = "warning"; + dir = 1 + }, +/turf/simulated/floor/tiled, +/area/hallway/primary/seconddeck/fore) +"brf" = ( +/obj/effect/floor_decal/industrial/warning{ + icon_state = "warning"; + dir = 1 + }, +/turf/simulated/floor/tiled, +/area/hallway/primary/seconddeck/fore) +"brg" = ( +/obj/machinery/door/firedoor/border_only, +/obj/effect/wingrille_spawn/reinforced, +/turf/simulated/floor/plating, +/area/hallway/secondary/eva_hallway) +"brh" = ( +/obj/structure/closet/emcloset, +/obj/effect/floor_decal/industrial/warning{ + icon_state = "warning"; + dir = 4 + }, +/obj/structure/window/reinforced{ + dir = 4 + }, +/turf/simulated/floor/tiled, +/area/hallway/secondary/eva_hallway) +"bri" = ( +/obj/structure/railing, +/turf/simulated/open, +/area/hallway/secondary/eva_hallway) +"brj" = ( +/obj/effect/floor_decal/industrial/warning{ + icon_state = "warning"; + dir = 8 + }, +/obj/machinery/light{ + dir = 1 + }, +/turf/simulated/floor/tiled, +/area/hallway/secondary/eva_hallway) +"brk" = ( +/obj/machinery/alarm{ + pixel_y = 22 + }, +/turf/simulated/floor/tiled, +/area/hallway/secondary/eva_hallway) +"brl" = ( +/obj/structure/table/glass, +/obj/item/weapon/book/codex/lore/vir, +/turf/simulated/floor/tiled/dark, +/area/hallway/secondary/eva_hallway) +"brm" = ( +/obj/machinery/vending/fitness, +/turf/simulated/floor/tiled/dark, +/area/hallway/secondary/eva_hallway) +"brn" = ( +/obj/machinery/disposal, +/obj/structure/disposalpipe/trunk, +/turf/simulated/floor/tiled/dark, +/area/hallway/secondary/eva_hallway) +"bro" = ( +/obj/machinery/door/firedoor/border_only, +/obj/effect/wingrille_spawn/reinforced/polarized{ + id = "lawyer_tint" + }, +/turf/simulated/floor/plating, +/area/lawoffice) +"brp" = ( +/obj/machinery/door/firedoor/border_only, +/obj/machinery/door/airlock{ + name = "Internal Affairs"; + req_access = list(38) + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/obj/structure/cable{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/turf/simulated/floor/tiled/steel_grid, +/area/lawoffice) +"brq" = ( +/obj/machinery/door/firedoor/border_only, +/obj/effect/wingrille_spawn/reinforced/polarized{ + id = "lawyer_tint" + }, +/obj/structure/disposalpipe/segment, +/turf/simulated/floor/plating, +/area/lawoffice) +"brr" = ( +/obj/structure/cable{ + d1 = 1; + d2 = 2; + icon_state = "1-2"; + pixel_y = 0 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/machinery/door/firedoor/border_only, +/obj/structure/disposalpipe/segment, +/obj/machinery/door/airlock/maintenance{ + req_access = list(12) + }, +/turf/simulated/floor/plating, +/area/maintenance/security_starboard) +"brs" = ( +/obj/machinery/atmospherics/pipe/simple/hidden{ + dir = 6 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/turf/simulated/wall, +/area/maintenance/security_starboard) +"brt" = ( +/obj/machinery/atmospherics/pipe/simple/hidden{ + dir = 4 + }, +/turf/simulated/wall, +/area/hallway/secondary/eva_hallway) +"bru" = ( +/obj/machinery/atmospherics/pipe/manifold/hidden{ + dir = 1; + icon_state = "map" + }, +/turf/simulated/wall, +/area/hallway/secondary/eva_hallway) +"brv" = ( +/obj/machinery/atmospherics/pipe/simple/hidden{ + dir = 10; + icon_state = "intact" + }, +/turf/simulated/wall, +/area/hallway/secondary/eva_hallway) +"brw" = ( +/turf/simulated/wall/r_wall, +/area/hallway/secondary/eva_hallway) +"brx" = ( +/obj/effect/floor_decal/industrial/warning/corner{ + dir = 8 + }, +/turf/simulated/floor/airless, +/area/hallway/secondary/eva_hallway) +"bry" = ( +/obj/effect/floor_decal/corner/orange/full{ + dir = 8 + }, +/obj/machinery/air_sensor{ + frequency = 1441; + id_tag = "tox_sensor" + }, +/obj/machinery/camera/network/engineering{ + c_tag = "Atmospherics Tank - Phoron"; + dir = 4 + }, +/turf/simulated/floor/reinforced/phoron, +/area/engineering/atmos) +"brz" = ( +/obj/machinery/atmospherics/unary/outlet_injector{ + dir = 4; + frequency = 1441; + icon_state = "map_injector"; + id = "tox_in"; + pixel_y = 1; + use_power = 1 + }, +/obj/effect/floor_decal/corner/purple/diagonal, +/obj/effect/floor_decal/corner/orange{ + dir = 4 + }, +/turf/simulated/floor/reinforced/phoron, +/area/engineering/atmos) +"brA" = ( +/obj/machinery/atmospherics/pipe/simple/visible/red{ + icon_state = "intact"; + dir = 4 + }, +/obj/machinery/computer/general_air_control/large_tank_control{ + frequency = 1441; + input_tag = "tox_in"; + name = "Phoron Supply Control"; + output_tag = "tox_out"; + sensors = list("tox_sensor" = "Tank") + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/obj/effect/floor_decal/borderfloor{ + dir = 8 + }, +/obj/effect/floor_decal/corner/purple/border{ + dir = 8 + }, +/obj/effect/floor_decal/borderfloor/corner2{ + dir = 8 + }, +/obj/effect/floor_decal/corner/orange/bordercorner2{ + dir = 8 + }, +/turf/simulated/floor/tiled, +/area/engineering/atmos) +"brB" = ( +/obj/machinery/atmospherics/pipe/simple/visible/red{ + icon_state = "intact"; + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/visible/green, +/turf/simulated/floor/tiled, +/area/engineering/atmos) +"brC" = ( +/obj/machinery/atmospherics/omni/atmos_filter{ + tag_east = 0; + tag_north = 2; + tag_south = 1; + tag_west = 6; + use_power = 1 + }, +/obj/effect/floor_decal/industrial/outline/yellow, +/turf/simulated/floor/tiled, +/area/engineering/atmos) +"brD" = ( +/obj/machinery/atmospherics/binary/pump{ + dir = 1 + }, +/turf/simulated/floor/tiled, +/area/engineering/atmos) +"brE" = ( +/obj/machinery/atmospherics/pipe/manifold/visible/cyan{ + dir = 8; + icon_state = "map" + }, +/obj/machinery/meter, +/turf/simulated/floor/tiled, +/area/engineering/atmos) +"brF" = ( +/obj/machinery/atmospherics/pipe/simple/visible/cyan{ + dir = 4; + icon_state = "intact" + }, +/obj/machinery/atmospherics/binary/pump{ + dir = 1; + name = "Waste to Port" + }, +/turf/simulated/floor/tiled, +/area/engineering/atmos) +"brG" = ( +/obj/machinery/atmospherics/binary/pump/on{ + dir = 4; + name = "Air to Supply" + }, +/turf/simulated/floor/tiled, +/area/engineering/atmos) +"brH" = ( +/obj/machinery/atmospherics/pipe/simple/visible/universal{ + dir = 4 + }, +/turf/simulated/floor/tiled, +/area/engineering/atmos) +"brI" = ( +/obj/machinery/atmospherics/pipe/simple/visible/supply{ + dir = 4 + }, +/obj/machinery/meter{ + frequency = 1443; + id = "dloop_atm_meter"; + name = "Distribution Loop" + }, +/turf/simulated/floor/tiled, +/area/engineering/atmos) +"brJ" = ( +/obj/machinery/atmospherics/pipe/manifold/hidden/supply, +/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{ + dir = 8 + }, +/obj/effect/decal/warning_stripes, +/turf/simulated/floor, +/area/engineering/atmos) +"brK" = ( +/obj/machinery/door/firedoor/border_only, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, +/obj/machinery/door/airlock/atmos{ + name = "Atmospherics Maintenance"; + req_access = list(24) + }, +/turf/simulated/floor, +/area/maintenance/substation/atmospherics) +"brL" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, +/obj/structure/cable/cyan{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/obj/effect/floor_decal/industrial/warning/corner{ + dir = 4 + }, +/turf/simulated/floor, +/area/maintenance/substation/atmospherics) +"brM" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, +/obj/structure/cable{ + icon_state = "0-4"; + d2 = 4 + }, +/obj/machinery/power/terminal{ + icon_state = "term"; + dir = 1 + }, +/obj/effect/floor_decal/industrial/warning{ + icon_state = "warning"; + dir = 1 + }, +/turf/simulated/floor, +/area/maintenance/substation/atmospherics) +"brN" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, +/obj/structure/cable{ + d1 = 1; + d2 = 4; + icon_state = "1-4" + }, +/obj/structure/cable{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/obj/effect/floor_decal/industrial/warning{ + icon_state = "warning"; + dir = 1 + }, +/turf/simulated/floor, +/area/maintenance/substation/atmospherics) +"brO" = ( +/obj/machinery/door/firedoor/border_only, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, +/obj/structure/cable{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/obj/machinery/door/airlock/engineering{ + name = "Atmospherics Substation"; + req_one_access = list(11,24) + }, +/turf/simulated/floor, +/area/maintenance/substation/atmospherics) +"brP" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, +/obj/structure/cable{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/obj/machinery/door/blast/regular{ + density = 0; + dir = 1; + icon_state = "pdoor0"; + id = "atmoslockdown"; + name = "Atmospherics Lockdown"; + opacity = 0 + }, +/turf/simulated/floor, +/area/maintenance/engineering) +"brQ" = ( +/obj/machinery/portable_atmospherics/hydroponics, +/turf/simulated/floor/tiled/white, +/area/rnd/xenobiology/xenoflora) +"brR" = ( +/obj/effect/floor_decal/industrial/warning{ + icon_state = "warning"; + dir = 4 + }, +/turf/simulated/floor/airless, +/area/maintenance/security_port) +"brS" = ( +/obj/machinery/door/airlock/external{ + frequency = 1379; + icon_state = "door_locked"; + id_tag = "eva_port_outer"; + locked = 1; + name = "External Airlock Access"; + req_access = list(13) + }, +/turf/simulated/floor/tiled/dark, +/area/maintenance/security_port) +"brT" = ( +/obj/effect/floor_decal/industrial/warning{ + icon_state = "warning"; + dir = 9 + }, +/obj/machinery/atmospherics/unary/vent_pump/high_volume{ + dir = 1; + frequency = 1379; + id_tag = "eva_port_pump" + }, +/obj/machinery/airlock_sensor{ + frequency = 1379; + id_tag = "eva_port_sensor"; + pixel_x = 0; + pixel_y = 25 + }, +/turf/simulated/floor/tiled, +/area/maintenance/security_port) +"brU" = ( +/obj/effect/floor_decal/industrial/warning{ + icon_state = "warning"; + dir = 5 + }, +/obj/machinery/atmospherics/unary/vent_pump/high_volume{ + dir = 1; + frequency = 1379; + id_tag = "eva_port_pump" + }, +/turf/simulated/floor/tiled, +/area/maintenance/security_port) +"brV" = ( +/obj/machinery/atmospherics/pipe/manifold/hidden{ + dir = 8; + icon_state = "map" + }, +/obj/machinery/door/airlock/glass_external{ + frequency = 1379; + icon_state = "door_locked"; + id_tag = "eva_port_inner"; + locked = 1; + name = "Internal Airlock Access"; + req_access = list(13) + }, +/turf/simulated/floor/tiled/dark, +/area/maintenance/security_port) +"brW" = ( +/obj/effect/floor_decal/industrial/warning{ + dir = 8 + }, +/obj/machinery/access_button{ + command = "cycle_interior"; + frequency = 1379; + master_tag = "eva_port_airlock"; + name = "interior access button"; + pixel_x = 0; + pixel_y = 26; + req_access = list(18) + }, +/obj/machinery/atmospherics/pipe/simple/hidden{ + dir = 9; + icon_state = "intact" + }, +/turf/simulated/floor/tiled, +/area/maintenance/security_port) +"brX" = ( +/obj/effect/floor_decal/industrial/warning/corner, +/obj/structure/cable{ + d1 = 1; + d2 = 2; + icon_state = "1-2"; + pixel_y = 0 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/effect/floor_decal/steeldecal/steel_decals4{ + dir = 4 + }, +/obj/effect/floor_decal/steeldecal/steel_decals4{ + dir = 9 + }, +/turf/simulated/floor/tiled, +/area/maintenance/security_port) +"brY" = ( +/obj/structure/sign/warning/secure_area, +/turf/simulated/wall/r_wall, +/area/ai_monitored/storage/eva) +"brZ" = ( +/obj/structure/table/reinforced, +/obj/item/weapon/storage/toolbox/electrical{ + pixel_x = 1; + pixel_y = -1 + }, +/obj/item/weapon/storage/toolbox/mechanical{ + pixel_x = -2; + pixel_y = -1 + }, +/obj/item/device/multitool, +/obj/item/clothing/head/welding, +/obj/item/weapon/storage/belt/utility, +/obj/effect/floor_decal/industrial/warning, +/turf/simulated/floor/tiled/dark, +/area/ai_monitored/storage/eva) +"bsa" = ( +/obj/machinery/suit_cycler/mining, +/obj/effect/floor_decal/industrial/warning, +/turf/simulated/floor/tiled/dark, +/area/ai_monitored/storage/eva) +"bsb" = ( +/obj/machinery/suit_cycler/engineering, +/obj/effect/floor_decal/industrial/warning, +/obj/machinery/camera/network/command{ + c_tag = "EVA - Port" + }, +/turf/simulated/floor/tiled/dark, +/area/ai_monitored/storage/eva) +"bsc" = ( +/obj/machinery/suit_cycler/medical, +/obj/effect/floor_decal/industrial/warning, +/turf/simulated/floor/tiled/dark, +/area/ai_monitored/storage/eva) +"bsd" = ( +/obj/machinery/suit_cycler/security, +/obj/machinery/light{ + dir = 1 + }, +/obj/effect/floor_decal/industrial/warning, +/turf/simulated/floor/tiled/dark, +/area/ai_monitored/storage/eva) +"bse" = ( +/obj/structure/dispenser/oxygen, +/obj/effect/floor_decal/industrial/warning, +/turf/simulated/floor/tiled/dark, +/area/ai_monitored/storage/eva) +"bsf" = ( +/obj/machinery/portable_atmospherics/canister/oxygen, +/obj/effect/floor_decal/industrial/warning, +/turf/simulated/floor/tiled/dark, +/area/ai_monitored/storage/eva) +"bsg" = ( +/obj/structure/table/rack, +/obj/item/device/suit_cooling_unit, +/obj/item/device/suit_cooling_unit, +/obj/effect/floor_decal/industrial/warning, +/obj/item/device/radio/intercom{ + dir = 1; + name = "Station Intercom (General)"; + pixel_y = 21 + }, +/turf/simulated/floor/tiled/dark, +/area/ai_monitored/storage/eva) +"bsh" = ( +/obj/structure/table/reinforced, +/obj/machinery/cell_charger, +/obj/item/weapon/cell/high{ + charge = 100; + maxcharge = 15000 + }, +/obj/item/weapon/cell/high{ + charge = 100; + maxcharge = 15000 + }, +/obj/item/stack/cable_coil{ + pixel_x = 3; + pixel_y = -7 + }, +/obj/item/stack/cable_coil{ + pixel_x = 3; + pixel_y = -7 + }, +/obj/item/device/radio/off, +/obj/item/device/radio/off, +/obj/item/device/radio/off, +/obj/effect/floor_decal/industrial/warning, +/turf/simulated/floor/tiled/dark, +/area/ai_monitored/storage/eva) +"bsi" = ( +/obj/structure/reagent_dispensers/fueltank, +/obj/effect/floor_decal/industrial/warning, +/turf/simulated/floor/tiled/dark, +/area/ai_monitored/storage/eva) +"bsj" = ( +/obj/structure/reagent_dispensers/watertank, +/obj/machinery/light{ + dir = 1 + }, +/obj/effect/floor_decal/industrial/warning, +/turf/simulated/floor/tiled/dark, +/area/ai_monitored/storage/eva) +"bsk" = ( +/obj/structure/table/reinforced, +/obj/item/stack/material/plasteel{ + amount = 10 + }, +/obj/item/stack/material/steel{ + amount = 50 + }, +/obj/item/stack/material/steel{ + amount = 50 + }, +/obj/item/stack/material/steel{ + amount = 50 + }, +/obj/effect/floor_decal/industrial/warning, +/obj/machinery/camera/network/command{ + c_tag = "EVA - Starboard" + }, +/turf/simulated/floor/tiled/dark, +/area/ai_monitored/storage/eva) +"bsl" = ( +/obj/structure/table/reinforced, +/obj/item/stack/material/glass/reinforced{ + amount = 50 + }, +/obj/item/stack/rods{ + amount = 50 + }, +/obj/effect/floor_decal/industrial/warning, +/turf/simulated/floor/tiled/dark, +/area/ai_monitored/storage/eva) +"bsm" = ( +/obj/structure/table/reinforced, +/obj/item/stack/material/glass{ + amount = 50 + }, +/obj/item/stack/material/glass{ + amount = 50 + }, +/obj/item/stack/material/glass{ + amount = 50 + }, +/obj/effect/floor_decal/industrial/warning, +/obj/machinery/requests_console{ + department = "EVA"; + pixel_x = 0; + pixel_y = 26 + }, +/turf/simulated/floor/tiled/dark, +/area/ai_monitored/storage/eva) +"bsn" = ( +/obj/machinery/door/firedoor/border_only, +/obj/structure/cable{ + d2 = 2; + icon_state = "0-2"; + pixel_y = 0 + }, +/obj/effect/wingrille_spawn/reinforced, +/turf/simulated/floor/plating, +/area/ai_monitored/storage/eva) +"bso" = ( +/obj/effect/floor_decal/industrial/warning/corner{ + dir = 8 + }, +/turf/simulated/floor/tiled, +/area/hallway/primary/seconddeck/fore) +"bsp" = ( +/obj/structure/disposalpipe/segment, +/turf/simulated/floor/tiled, +/area/hallway/primary/seconddeck/fore) +"bsq" = ( +/obj/structure/cable{ + d1 = 2; + d2 = 4; + icon_state = "2-4" + }, +/obj/item/device/radio/beacon, +/obj/machinery/navbeacon/patrol{ + location = "SEC"; + next_patrol = "CH1" + }, +/mob/living/bot/secbot/beepsky, +/turf/simulated/floor/tiled/monotile, +/area/hallway/primary/seconddeck/fore) +"bsr" = ( +/obj/structure/cable{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/obj/effect/floor_decal/steeldecal/steel_decals4{ + dir = 10 + }, +/obj/effect/floor_decal/steeldecal/steel_decals4, +/turf/simulated/floor/tiled, +/area/hallway/primary/seconddeck/fore) +"bss" = ( +/obj/machinery/door/firedoor/border_only, +/obj/machinery/door/airlock/glass{ + name = "Central Access" + }, +/obj/structure/cable{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/turf/simulated/floor/tiled/steel_grid, +/area/hallway/secondary/eva_hallway) +"bst" = ( +/obj/structure/sign/greencross{ + desc = "White cross in a green field, you can get medical aid here."; + name = "First-Aid" + }, +/turf/simulated/wall, +/area/security/aid_station) +"bsu" = ( +/obj/structure/cable{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/obj/effect/floor_decal/industrial/warning/corner{ + icon_state = "warningcorner"; + dir = 4 + }, +/turf/simulated/floor/tiled, +/area/hallway/secondary/eva_hallway) +"bsv" = ( +/obj/structure/cable{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 6 + }, +/obj/structure/cable{ + d1 = 2; + d2 = 8; + icon_state = "2-8" + }, +/obj/effect/floor_decal/industrial/warning{ + icon_state = "warning"; + dir = 1 + }, +/turf/simulated/floor/tiled, +/area/hallway/secondary/eva_hallway) +"bsw" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, +/obj/structure/cable{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/obj/effect/floor_decal/industrial/warning/corner{ + icon_state = "warningcorner"; + dir = 1 + }, +/turf/simulated/floor/tiled, +/area/hallway/secondary/eva_hallway) +"bsx" = ( +/obj/machinery/atmospherics/unary/vent_pump/on, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, +/obj/structure/cable{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/turf/simulated/floor/tiled, +/area/hallway/secondary/eva_hallway) +"bsy" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, +/obj/structure/cable{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/turf/simulated/floor/tiled, +/area/hallway/secondary/eva_hallway) +"bsz" = ( +/obj/structure/cable{ + d1 = 2; + d2 = 4; + icon_state = "2-4" + }, +/obj/structure/cable{ + d1 = 2; + d2 = 8; + icon_state = "2-8" + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, +/turf/simulated/floor/tiled, +/area/hallway/secondary/eva_hallway) +"bsA" = ( +/obj/structure/cable{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, +/obj/structure/disposalpipe/segment{ + dir = 1; + icon_state = "pipe-c" + }, +/turf/simulated/floor/tiled, +/area/hallway/secondary/eva_hallway) +"bsB" = ( +/obj/structure/cable{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/obj/machinery/door/firedoor/border_only, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/turf/simulated/floor/tiled, +/area/hallway/secondary/eva_hallway) +"bsC" = ( +/obj/structure/cable{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/turf/simulated/floor/tiled, +/area/hallway/secondary/eva_hallway) +"bsD" = ( +/obj/structure/cable{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers, +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/structure/cable{ + d1 = 1; + d2 = 8; + icon_state = "1-8" + }, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/effect/floor_decal/steeldecal/steel_decals4{ + dir = 4 + }, +/obj/effect/floor_decal/steeldecal/steel_decals4{ + dir = 9 + }, +/turf/simulated/floor/tiled, +/area/hallway/secondary/eva_hallway) +"bsE" = ( +/obj/structure/cable{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, +/obj/structure/disposalpipe/junction{ + icon_state = "pipe-j2"; + dir = 4 + }, +/turf/simulated/floor/tiled, +/area/hallway/secondary/eva_hallway) +"bsF" = ( +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{ + dir = 1 + }, +/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/tiled, +/area/hallway/secondary/eva_hallway) +"bsG" = ( +/obj/structure/cable{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/obj/machinery/atmospherics/unary/vent_pump/on, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/turf/simulated/floor/tiled, +/area/hallway/secondary/eva_hallway) +"bsH" = ( +/obj/structure/cable{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/structure/cable{ + d1 = 2; + d2 = 8; + icon_state = "2-8" + }, +/turf/simulated/floor/tiled, +/area/hallway/secondary/eva_hallway) +"bsI" = ( +/obj/structure/cable{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/obj/machinery/hologram/holopad, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/effect/floor_decal/industrial/outline/grey, +/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{ + dir = 1 + }, +/obj/machinery/camera/network/second_deck{ + c_tag = "Second Deck - Fore Starboard Hallway Two" + }, +/turf/simulated/floor/tiled, +/area/hallway/secondary/eva_hallway) +"bsJ" = ( +/obj/structure/cable{ + d1 = 1; + d2 = 8; + icon_state = "1-8" + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, +/obj/structure/disposalpipe/junction, +/obj/effect/floor_decal/steeldecal/steel_decals4{ + dir = 4 + }, +/obj/effect/floor_decal/steeldecal/steel_decals4{ + dir = 9 + }, +/turf/simulated/floor/tiled, +/area/hallway/secondary/eva_hallway) +"bsK" = ( +/obj/machinery/atmospherics/pipe/simple/hidden, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 9 + }, +/obj/effect/floor_decal/industrial/warning{ + icon_state = "warning"; + dir = 4 + }, +/turf/simulated/floor/tiled, +/area/hallway/secondary/eva_hallway) +"bsL" = ( +/obj/machinery/door/airlock/glass_external{ + frequency = 1379; + icon_state = "door_locked"; + id_tag = "eva_starboard_inner"; + locked = 1; + name = "Internal Airlock Access"; + req_access = list(13) + }, +/turf/simulated/floor/tiled, +/area/hallway/secondary/eva_hallway) +"bsM" = ( +/obj/effect/floor_decal/industrial/warning{ + dir = 9 + }, +/obj/machinery/atmospherics/unary/vent_pump/high_volume{ + dir = 1; + frequency = 1379; + id_tag = "eva_starboard_pump" + }, +/obj/machinery/light/small{ + dir = 1 + }, +/turf/simulated/floor/tiled, +/area/hallway/secondary/eva_hallway) +"bsN" = ( +/obj/effect/floor_decal/industrial/warning{ + icon_state = "warning"; + dir = 5 + }, +/obj/machinery/atmospherics/unary/vent_pump/high_volume{ + dir = 1; + frequency = 1379; + id_tag = "eva_starboard_pump" + }, +/obj/machinery/embedded_controller/radio/airlock/airlock_controller{ + frequency = 1379; + id_tag = "eva_starboard_airlock"; + pixel_x = 0; + pixel_y = 26; + req_access = list(18); + tag_airpump = "eva_starboard_pump"; + tag_chamber_sensor = "eva_starboard_sensor"; + tag_exterior_door = "eva_starboard_outer"; + tag_interior_door = "eva_starboard_inner" + }, +/turf/simulated/floor/tiled, +/area/hallway/secondary/eva_hallway) +"bsO" = ( +/obj/machinery/door/airlock/external{ + frequency = 1379; + icon_state = "door_locked"; + id_tag = "eva_starboard_outer"; + locked = 1; + name = "External Airlock Access"; + req_access = list(13) + }, +/turf/simulated/floor/tiled/dark, +/area/hallway/secondary/eva_hallway) +"bsP" = ( +/obj/effect/floor_decal/industrial/warning{ + dir = 8 + }, +/obj/machinery/access_button{ + command = "cycle_exterior"; + frequency = 1379; + master_tag = "eva_starboard_airlock"; + name = "exterior access button"; + pixel_x = -26; + pixel_y = 25; + req_access = list(18) + }, +/turf/simulated/floor/airless, +/area/hallway/secondary/eva_hallway) +"bsQ" = ( +/obj/machinery/atmospherics/unary/vent_pump/high_volume{ + dir = 2; + external_pressure_bound = 140; + external_pressure_bound_default = 140; + icon_state = "map_vent_out"; + pressure_checks = 1; + pressure_checks_default = 1; + use_power = 1 + }, +/turf/simulated/floor/airless, +/area/maintenance/research) +"bsR" = ( +/obj/machinery/light/small{ + dir = 8 + }, +/obj/effect/floor_decal/corner/purple/diagonal, +/obj/effect/floor_decal/corner/orange{ + dir = 8 + }, +/turf/simulated/floor/reinforced/phoron, +/area/engineering/atmos) +"bsS" = ( +/obj/effect/floor_decal/corner/orange/full{ + dir = 4 + }, +/obj/machinery/atmospherics/unary/vent_pump{ + dir = 4; + external_pressure_bound = 0; + external_pressure_bound_default = 0; + frequency = 1441; + icon_state = "map_vent_in"; + id_tag = "tox_out"; + initialize_directions = 1; + internal_pressure_bound = 4000; + internal_pressure_bound_default = 4000; + pressure_checks = 2; + pressure_checks_default = 2; + pump_direction = 0; + use_power = 1 + }, +/turf/simulated/floor/reinforced/phoron, +/area/engineering/atmos) +"bsT" = ( +/obj/machinery/door/firedoor/glass, +/obj/effect/wingrille_spawn/reinforced, +/obj/machinery/door/blast/regular{ + density = 0; + dir = 1; + icon_state = "pdoor0"; + id = "atmoslockdown"; + name = "Atmospherics Lockdown"; + opacity = 0 + }, +/obj/machinery/atmospherics/pipe/manifold/visible/green{ + dir = 1 + }, +/turf/simulated/floor/plating, +/area/engineering/atmos) +"bsU" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/obj/machinery/atmospherics/pipe/cap/visible{ + dir = 8 + }, +/obj/effect/floor_decal/borderfloor{ + dir = 8 + }, +/obj/effect/floor_decal/corner/orange/border{ + dir = 8 + }, +/obj/effect/floor_decal/borderfloor/corner2{ + dir = 10 + }, +/obj/effect/floor_decal/corner/purple/bordercorner2{ + dir = 10 + }, +/turf/simulated/floor/tiled, +/area/engineering/atmos) +"bsV" = ( +/obj/machinery/meter, +/obj/machinery/atmospherics/pipe/simple/visible/green, +/turf/simulated/floor/tiled, +/area/engineering/atmos) +"bsW" = ( +/obj/machinery/atmospherics/pipe/simple/visible/red, +/turf/simulated/floor/tiled, +/area/engineering/atmos) +"bsX" = ( +/obj/machinery/atmospherics/pipe/simple/visible/yellow{ + dir = 6 + }, +/turf/simulated/floor/tiled, +/area/engineering/atmos) +"bsY" = ( +/obj/machinery/atmospherics/pipe/manifold4w/visible/yellow, +/turf/simulated/floor/tiled, +/area/engineering/atmos) +"bsZ" = ( +/obj/machinery/atmospherics/pipe/manifold/visible/yellow{ + icon_state = "map"; + dir = 1 + }, +/obj/machinery/meter, +/turf/simulated/floor/tiled, +/area/engineering/atmos) +"bta" = ( +/obj/machinery/atmospherics/pipe/simple/visible/red{ + icon_state = "intact"; + dir = 6 + }, +/turf/simulated/floor/tiled, +/area/engineering/atmos) +"btb" = ( +/obj/machinery/atmospherics/pipe/simple/visible/red{ + icon_state = "intact"; + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/visible/cyan, +/obj/structure/cable/cyan{ + d1 = 2; + d2 = 4; + icon_state = "2-4" + }, +/turf/simulated/floor/tiled, +/area/engineering/atmos) +"btc" = ( +/obj/machinery/atmospherics/tvalve/digital{ + dir = 8; + name = "Waste to Space" + }, +/obj/structure/cable/cyan{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/turf/simulated/floor/tiled, +/area/engineering/atmos) +"btd" = ( +/obj/machinery/atmospherics/pipe/manifold/visible/red, +/obj/structure/cable/cyan{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/obj/machinery/light, +/turf/simulated/floor/tiled, +/area/engineering/atmos) +"bte" = ( +/obj/machinery/atmospherics/pipe/manifold/visible/red, +/obj/structure/cable/cyan{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/turf/simulated/floor/tiled, +/area/engineering/atmos) +"btf" = ( +/obj/machinery/atmospherics/binary/pump/on{ + dir = 8; + name = "Scrubber to Waste" + }, +/obj/structure/cable/cyan{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/obj/structure/cable/cyan{ + d1 = 2; + d2 = 4; + icon_state = "2-4" + }, +/obj/effect/floor_decal/steeldecal/steel_decals4{ + dir = 5 + }, +/obj/effect/floor_decal/steeldecal/steel_decals4{ + dir = 8 + }, +/turf/simulated/floor/tiled, +/area/engineering/atmos) +"btg" = ( +/obj/machinery/atmospherics/pipe/simple/visible/universal{ + dir = 4 + }, +/obj/structure/cable/cyan{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/turf/simulated/floor/tiled, +/area/engineering/atmos) +"bth" = ( +/obj/machinery/atmospherics/pipe/simple/visible/scrubbers{ + dir = 4 + }, +/obj/structure/cable/cyan{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/obj/machinery/meter{ + frequency = 1443; + id = "wloop_atm_meter"; + name = "Waste Loop" + }, +/turf/simulated/floor/tiled, +/area/engineering/atmos) +"bti" = ( +/obj/machinery/atmospherics/pipe/simple/visible/scrubbers{ + dir = 9 + }, +/obj/structure/cable/cyan{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/obj/machinery/ai_status_display{ + pixel_y = -32 + }, +/obj/effect/floor_decal/steeldecal/steel_decals4, +/obj/effect/floor_decal/steeldecal/steel_decals4{ + dir = 10 + }, +/turf/simulated/floor/tiled, +/area/engineering/atmos) +"btj" = ( +/obj/machinery/door/firedoor/border_only, +/obj/structure/cable/cyan{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/obj/machinery/door/airlock/atmos{ + name = "Atmospherics Maintenance"; + req_access = list(24) + }, +/obj/structure/catwalk, +/turf/simulated/floor, +/area/maintenance/substation/atmospherics) +"btk" = ( +/obj/structure/cable/cyan{ + d1 = 1; + d2 = 8; + icon_state = "1-8" + }, +/obj/structure/cable/cyan{ + d1 = 1; + d2 = 4; + icon_state = "1-4" + }, +/obj/machinery/firealarm{ + dir = 1; + pixel_x = 0; + pixel_y = -24 + }, +/obj/structure/catwalk, +/turf/simulated/floor, +/area/maintenance/substation/atmospherics) +"btl" = ( +/obj/structure/cable/cyan{ + d2 = 8; + icon_state = "0-8" + }, +/obj/machinery/power/apc{ + dir = 2; + name = "south bump"; + pixel_y = -24 + }, +/obj/structure/catwalk, +/turf/simulated/floor, +/area/maintenance/substation/atmospherics) +"btm" = ( +/obj/machinery/light/small, +/obj/structure/catwalk, +/turf/simulated/floor, +/area/maintenance/substation/atmospherics) +"btn" = ( +/turf/simulated/wall, +/area/maintenance/substation/atmospherics) +"bto" = ( +/obj/machinery/door/blast/regular{ + density = 0; + dir = 1; + icon_state = "pdoor0"; + id = "atmoslockdown"; + name = "Atmospherics Lockdown"; + opacity = 0 + }, +/turf/simulated/floor, +/area/maintenance/engineering) +"btp" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 5 + }, +/obj/structure/cable{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/obj/effect/floor_decal/industrial/warning{ + dir = 8 + }, +/turf/simulated/floor, +/area/maintenance/engineering) +"btq" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 10 + }, +/obj/machinery/meter, +/turf/simulated/floor, +/area/maintenance/engineering) +"btr" = ( +/obj/effect/floor_decal/industrial/warning{ + icon_state = "warning"; + dir = 4 + }, +/obj/machinery/access_button{ + command = "cycle_exterior"; + frequency = 1379; + master_tag = "eva_port_airlock"; + name = "exterior access button"; + pixel_x = 0; + pixel_y = -26; + req_access = list(18) + }, +/turf/simulated/floor/airless, +/area/maintenance/security_port) +"bts" = ( +/obj/effect/floor_decal/industrial/warning{ + dir = 10 + }, +/obj/machinery/atmospherics/unary/vent_pump/high_volume{ + dir = 2; + frequency = 1379; + id_tag = "eva_port_pump" + }, +/obj/machinery/embedded_controller/radio/airlock/airlock_controller{ + frequency = 1379; + id_tag = "eva_port_airlock"; + pixel_x = 0; + pixel_y = -26; + req_access = list(18); + tag_airpump = "eva_port_pump"; + tag_chamber_sensor = "eva_port_sensor"; + tag_exterior_door = "eva_port_outer"; + tag_interior_door = "eva_port_inner" + }, +/turf/simulated/floor/tiled, +/area/maintenance/security_port) +"btt" = ( +/obj/effect/floor_decal/industrial/warning{ + dir = 6 + }, +/obj/machinery/atmospherics/unary/vent_pump/high_volume{ + dir = 2; + frequency = 1379; + id_tag = "eva_port_pump" + }, +/turf/simulated/floor/tiled, +/area/maintenance/security_port) +"btu" = ( +/obj/machinery/atmospherics/pipe/simple/hidden, +/obj/machinery/door/airlock/glass_external{ + frequency = 1379; + icon_state = "door_locked"; + id_tag = "eva_port_inner"; + locked = 1; + name = "Internal Airlock Access"; + req_access = list(13) + }, +/turf/simulated/floor/tiled/dark, +/area/maintenance/security_port) +"btv" = ( +/obj/effect/floor_decal/industrial/warning{ + dir = 8 + }, +/turf/simulated/floor/tiled, +/area/maintenance/security_port) +"btw" = ( +/obj/machinery/atmospherics/pipe/manifold/hidden/supply{ + dir = 8 + }, +/obj/effect/floor_decal/industrial/warning{ + icon_state = "warning"; + dir = 4 + }, +/obj/structure/cable{ + d1 = 1; + d2 = 2; + icon_state = "1-2"; + pixel_y = 0 + }, +/obj/structure/cable{ + d1 = 2; + d2 = 4; + icon_state = "2-4" + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 6 + }, +/turf/simulated/floor/tiled, +/area/maintenance/security_port) +"btx" = ( +/obj/machinery/door/firedoor/border_only, +/obj/machinery/door/airlock/command{ + name = "E.V.A."; + req_access = list(18) + }, +/obj/structure/cable{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/turf/simulated/floor/tiled, +/area/ai_monitored/storage/eva) +"bty" = ( +/obj/structure/cable{ + d1 = 2; + d2 = 8; + icon_state = "2-8" + }, +/obj/structure/cable{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 10 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/obj/effect/floor_decal/industrial/warning{ + icon_state = "warning"; + dir = 8 + }, +/turf/simulated/floor/tiled, +/area/ai_monitored/storage/eva) +"btz" = ( +/obj/structure/cable{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/turf/simulated/floor/tiled, +/area/ai_monitored/storage/eva) +"btA" = ( +/obj/structure/cable{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/obj/machinery/atmospherics/pipe/manifold/hidden/supply{ + dir = 1 + }, +/turf/simulated/floor/tiled, +/area/ai_monitored/storage/eva) +"btB" = ( +/obj/structure/cable{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/obj/machinery/atmospherics/unary/vent_scrubber/on, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/turf/simulated/floor/tiled, +/area/ai_monitored/storage/eva) +"btC" = ( +/obj/structure/cable{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/obj/machinery/hologram/holopad, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/obj/effect/floor_decal/industrial/outline/grey, +/turf/simulated/floor/tiled/monotile, +/area/ai_monitored/storage/eva) +"btD" = ( +/obj/structure/cable{ + d1 = 2; + d2 = 8; + icon_state = "2-8" + }, +/obj/structure/cable{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/turf/simulated/floor/tiled, +/area/ai_monitored/storage/eva) +"btE" = ( +/obj/structure/cable{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 10 + }, +/turf/simulated/floor/tiled, +/area/ai_monitored/storage/eva) +"btF" = ( +/obj/structure/cable{ + d1 = 2; + d2 = 8; + icon_state = "2-8" + }, +/obj/structure/cable{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/turf/simulated/floor/tiled, +/area/ai_monitored/storage/eva) +"btG" = ( +/obj/structure/cable{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/obj/machinery/atmospherics/unary/vent_scrubber/on, +/turf/simulated/floor/tiled, +/area/ai_monitored/storage/eva) +"btH" = ( +/obj/structure/cable{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/turf/simulated/floor/tiled, +/area/ai_monitored/storage/eva) +"btI" = ( +/obj/structure/cable{ + d1 = 2; + d2 = 8; + icon_state = "2-8" + }, +/obj/structure/cable{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/obj/effect/floor_decal/industrial/warning{ + dir = 4 + }, +/turf/simulated/floor/tiled, +/area/ai_monitored/storage/eva) +"btJ" = ( +/obj/machinery/door/firedoor/glass, +/obj/machinery/door/airlock/glass_command{ + name = "E.V.A."; + req_one_access = list(18) + }, +/obj/structure/cable{ + d1 = 1; + d2 = 8; + icon_state = "1-8" + }, +/obj/structure/cable{ + d1 = 2; + d2 = 8; + icon_state = "2-8" + }, +/turf/simulated/floor/tiled/steel_grid, +/area/ai_monitored/storage/eva) +"btK" = ( +/obj/effect/floor_decal/industrial/warning{ + dir = 8 + }, +/turf/simulated/floor/tiled, +/area/hallway/primary/seconddeck/fore) +"btL" = ( +/obj/structure/disposalpipe/sortjunction{ + dir = 1; + icon_state = "pipe-j1s"; + name = "Janitor Closet"; + sortType = "Janitor Closet" + }, +/turf/simulated/floor/tiled, +/area/hallway/primary/seconddeck/fore) +"btM" = ( +/obj/effect/floor_decal/industrial/outline/grey, +/obj/machinery/hologram/holopad, +/obj/structure/cable{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/turf/simulated/floor/tiled/dark, +/area/hallway/primary/seconddeck/fore) +"btN" = ( +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/effect/floor_decal/steeldecal/steel_decals4{ + dir = 10 + }, +/obj/effect/floor_decal/steeldecal/steel_decals4, +/turf/simulated/floor/tiled, +/area/hallway/primary/seconddeck/fore) +"btO" = ( +/obj/machinery/door/firedoor/border_only, +/obj/machinery/door/airlock/glass{ + name = "Central Access" + }, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/turf/simulated/floor/tiled/steel_grid, +/area/hallway/secondary/eva_hallway) +"btP" = ( +/obj/structure/cable{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{ + dir = 1 + }, +/obj/effect/floor_decal/industrial/warning{ + icon_state = "warning"; + dir = 1 + }, +/turf/simulated/floor/tiled, +/area/hallway/secondary/eva_hallway) +"btQ" = ( +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/turf/simulated/floor/tiled, +/area/hallway/secondary/eva_hallway) +"btR" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 6 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/obj/structure/cable{ + d1 = 1; + d2 = 2; + icon_state = "1-2"; + pixel_y = 0 + }, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/turf/simulated/floor/tiled, +/area/hallway/secondary/eva_hallway) +"btS" = ( +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/turf/simulated/floor/tiled, +/area/hallway/secondary/eva_hallway) +"btT" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/machinery/camera/network/second_deck{ + c_tag = "Second Deck - Fore Starboard Hallway One"; + dir = 1 + }, +/obj/machinery/firealarm{ + dir = 1; + pixel_x = 0; + pixel_y = -24 + }, +/turf/simulated/floor/tiled, +/area/hallway/secondary/eva_hallway) +"btU" = ( +/obj/structure/cable{ + d1 = 1; + d2 = 2; + icon_state = "1-2"; + pixel_y = 0 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/obj/structure/disposalpipe/segment{ + dir = 2; + icon_state = "pipe-c" + }, +/obj/effect/floor_decal/steeldecal/steel_decals4{ + dir = 5 + }, +/obj/effect/floor_decal/steeldecal/steel_decals4{ + dir = 8 + }, +/turf/simulated/floor/tiled, +/area/hallway/secondary/eva_hallway) +"btV" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/turf/simulated/floor/tiled, +/area/hallway/secondary/eva_hallway) +"btW" = ( +/obj/machinery/door/firedoor/border_only, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/turf/simulated/floor/tiled, +/area/hallway/secondary/eva_hallway) +"btX" = ( +/obj/machinery/firealarm{ + dir = 1; + pixel_x = 0; + pixel_y = -26 + }, +/obj/machinery/atmospherics/pipe/manifold/hidden/supply, +/turf/simulated/floor/tiled, +/area/hallway/secondary/eva_hallway) +"btY" = ( +/obj/machinery/atmospherics/pipe/manifold/hidden/supply{ + dir = 1 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/obj/structure/cable{ + d1 = 1; + d2 = 2; + icon_state = "1-2"; + pixel_y = 0 + }, +/obj/effect/floor_decal/steeldecal/steel_decals4{ + dir = 5 + }, +/obj/effect/floor_decal/steeldecal/steel_decals4{ + dir = 8 + }, +/turf/simulated/floor/tiled, +/area/hallway/secondary/eva_hallway) +"btZ" = ( +/obj/machinery/atmospherics/pipe/manifold/hidden/supply, +/obj/machinery/light, +/turf/simulated/floor/tiled, +/area/hallway/secondary/eva_hallway) +"bua" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/obj/machinery/power/apc{ + dir = 2; + name = "south bump"; + pixel_y = -24 + }, +/obj/structure/cable, +/turf/simulated/floor/tiled, +/area/hallway/secondary/eva_hallway) +"bub" = ( +/obj/machinery/alarm{ + dir = 1; + pixel_y = -22 + }, +/obj/machinery/atmospherics/unary/vent_scrubber/on{ + dir = 1 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/turf/simulated/floor/tiled, +/area/hallway/secondary/eva_hallway) +"buc" = ( +/obj/structure/disposalpipe/segment, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 9 + }, +/turf/simulated/floor/tiled, +/area/hallway/secondary/eva_hallway) +"bud" = ( +/obj/machinery/atmospherics/pipe/simple/hidden, +/obj/machinery/access_button{ + command = "cycle_interior"; + frequency = 1379; + master_tag = "eva_starboard_airlock"; + name = "interior access button"; + pixel_x = 26; + pixel_y = -25; + req_access = list(18) + }, +/obj/effect/floor_decal/industrial/warning{ + icon_state = "warning"; + dir = 4 + }, +/turf/simulated/floor/tiled, +/area/hallway/secondary/eva_hallway) +"bue" = ( +/obj/effect/floor_decal/industrial/warning{ + dir = 10 + }, +/obj/machinery/atmospherics/unary/vent_pump/high_volume{ + dir = 2; + frequency = 1379; + id_tag = "eva_starboard_pump" + }, +/obj/machinery/airlock_sensor{ + frequency = 1379; + id_tag = "eva_starboard_sensor"; + pixel_x = 0; + pixel_y = -26 + }, +/turf/simulated/floor/tiled, +/area/hallway/secondary/eva_hallway) +"buf" = ( +/obj/effect/floor_decal/industrial/warning{ + dir = 6 + }, +/obj/machinery/atmospherics/unary/vent_pump/high_volume{ + dir = 2; + frequency = 1379; + id_tag = "eva_starboard_pump" + }, +/turf/simulated/floor/tiled, +/area/hallway/secondary/eva_hallway) +"bug" = ( +/obj/effect/floor_decal/industrial/warning{ + dir = 8 + }, +/turf/simulated/floor/airless, +/area/hallway/secondary/eva_hallway) +"buh" = ( +/obj/effect/floor_decal/industrial/warning/corner, +/obj/machinery/light/small, +/turf/simulated/floor/airless, +/area/maintenance/research) +"bui" = ( +/obj/effect/floor_decal/industrial/warning, +/turf/simulated/floor/airless, +/area/maintenance/research) +"buj" = ( +/obj/machinery/access_button{ + command = "cycle_exterior"; + frequency = 1379; + master_tag = "fore_starboard_airlock"; + name = "exterior access button"; + pixel_x = 26; + pixel_y = -25; + req_one_access = list(13) + }, +/obj/effect/floor_decal/industrial/warning, +/turf/simulated/floor/airless, +/area/maintenance/research) +"buk" = ( +/obj/effect/floor_decal/industrial/warning/corner{ + dir = 8 + }, +/turf/simulated/floor/airless, +/area/maintenance/research) +"bul" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/red, +/turf/simulated/floor/airless, +/area/space) +"bum" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/obj/machinery/atmospherics/binary/pump{ + dir = 4; + name = "Phoron to Connector" + }, +/turf/simulated/floor/tiled, +/area/engineering/atmos) +"bun" = ( +/obj/machinery/atmospherics/binary/pump{ + name = "Port to Waste" + }, +/turf/simulated/floor/tiled, +/area/engineering/atmos) +"buo" = ( +/obj/machinery/atmospherics/binary/pump, +/turf/simulated/floor/tiled, +/area/engineering/atmos) +"bup" = ( +/obj/machinery/atmospherics/unary/freezer{ + dir = 1; + icon_state = "freezer" + }, +/obj/effect/floor_decal/industrial/outline/yellow, +/turf/simulated/floor/tiled, +/area/engineering/atmos) +"buq" = ( +/obj/machinery/atmospherics/unary/heater{ + dir = 1; + icon_state = "heater" + }, +/obj/effect/floor_decal/industrial/outline/yellow, +/turf/simulated/floor/tiled, +/area/engineering/atmos) +"bur" = ( +/obj/effect/floor_decal/industrial/outline/yellow, +/turf/simulated/floor/tiled, +/area/engineering/atmos) +"bus" = ( +/obj/machinery/atmospherics/pipe/simple/visible/cyan, +/obj/machinery/pipedispenser, +/obj/structure/window/reinforced{ + dir = 1 + }, +/obj/structure/cable/cyan{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/turf/simulated/floor/tiled, +/area/engineering/atmos) +"but" = ( +/obj/machinery/door/firedoor/border_only, +/obj/effect/wingrille_spawn/reinforced, +/turf/simulated/floor, +/area/engineering/atmos/monitoring) +"buu" = ( +/obj/machinery/door/firedoor/glass, +/obj/structure/cable/cyan{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/obj/machinery/door/airlock/glass_atmos{ + name = "Atmospherics Monitoring Room"; + req_access = list(24) + }, +/turf/simulated/floor/tiled/steel_grid, +/area/engineering/atmos/monitoring) +"buv" = ( +/turf/simulated/wall/r_wall, +/area/engineering/atmos/monitoring) +"buw" = ( +/turf/simulated/wall, +/area/maintenance/substation/engineering) +"bux" = ( +/turf/simulated/wall, +/area/maintenance/engineering) +"buy" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 5 + }, +/obj/machinery/meter, +/obj/structure/cable{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/obj/effect/floor_decal/industrial/warning/corner{ + icon_state = "warningcorner"; + dir = 1 + }, +/obj/effect/floor_decal/industrial/warning/corner{ + dir = 8 + }, +/obj/structure/sign/warning/high_voltage{ + pixel_x = -32; + pixel_y = 0 + }, +/turf/simulated/floor, +/area/maintenance/engineering) +"buz" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 10 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/turf/simulated/floor, +/area/maintenance/engineering) +"buA" = ( +/obj/machinery/atmospherics/pipe/simple/hidden{ + dir = 5; + icon_state = "intact" + }, +/turf/simulated/wall/r_wall, +/area/maintenance/security_port) +"buB" = ( +/obj/machinery/atmospherics/pipe/manifold/hidden, +/turf/simulated/wall/r_wall, +/area/maintenance/security_port) +"buC" = ( +/obj/machinery/atmospherics/pipe/simple/hidden{ + dir = 9; + icon_state = "intact" + }, +/turf/simulated/wall/r_wall, +/area/maintenance/security_port) +"buD" = ( +/obj/effect/floor_decal/industrial/warning/corner{ + icon_state = "warningcorner"; + dir = 1 + }, +/obj/structure/sign/warning/airlock{ + pixel_x = -32 + }, +/obj/machinery/light/small{ + dir = 8 + }, +/turf/simulated/floor/tiled, +/area/maintenance/security_port) +"buE" = ( +/obj/effect/floor_decal/industrial/warning/corner{ + dir = 4 + }, +/obj/structure/cable{ + d1 = 1; + d2 = 2; + icon_state = "1-2"; + pixel_y = 0 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/obj/effect/floor_decal/steeldecal/steel_decals4{ + dir = 8 + }, +/obj/effect/floor_decal/steeldecal/steel_decals4{ + dir = 5 + }, +/turf/simulated/floor/tiled, +/area/maintenance/security_port) +"buF" = ( +/obj/machinery/power/apc{ + dir = 8; + name = "west bump"; + pixel_x = -24 + }, +/obj/machinery/light_switch{ + pixel_x = -36 + }, +/obj/structure/cable, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 5 + }, +/obj/effect/floor_decal/industrial/warning{ + dir = 10 + }, +/turf/simulated/floor/tiled, +/area/ai_monitored/storage/eva) +"buG" = ( +/obj/effect/floor_decal/industrial/warning, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, +/turf/simulated/floor/tiled, +/area/ai_monitored/storage/eva) +"buH" = ( +/obj/effect/floor_decal/industrial/warning, +/obj/machinery/atmospherics/unary/vent_pump/on{ + dir = 1 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, +/turf/simulated/floor/tiled, +/area/ai_monitored/storage/eva) +"buI" = ( +/obj/effect/floor_decal/industrial/warning, +/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers, +/turf/simulated/floor/tiled, +/area/ai_monitored/storage/eva) +"buJ" = ( +/obj/effect/floor_decal/industrial/warning, +/obj/machinery/firealarm{ + dir = 1; + pixel_x = 0; + pixel_y = -24 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, +/turf/simulated/floor/tiled, +/area/ai_monitored/storage/eva) +"buK" = ( +/obj/effect/floor_decal/industrial/warning, +/obj/structure/cable{ + d1 = 1; + d2 = 2; + icon_state = "1-2"; + pixel_y = 0 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, +/turf/simulated/floor/tiled, +/area/ai_monitored/storage/eva) +"buL" = ( +/obj/effect/floor_decal/industrial/warning, +/obj/machinery/alarm{ + dir = 1; + pixel_y = -22 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, +/turf/simulated/floor/tiled, +/area/ai_monitored/storage/eva) +"buM" = ( +/obj/effect/floor_decal/industrial/warning, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 9 + }, +/obj/structure/extinguisher_cabinet{ + pixel_y = -30 + }, +/turf/simulated/floor/tiled, +/area/ai_monitored/storage/eva) +"buN" = ( +/obj/effect/floor_decal/industrial/warning, +/turf/simulated/floor/tiled, +/area/ai_monitored/storage/eva) +"buO" = ( +/obj/structure/cable{ + d1 = 1; + d2 = 2; + icon_state = "1-2"; + pixel_y = 0 + }, +/obj/effect/floor_decal/industrial/warning{ + dir = 6 + }, +/turf/simulated/floor/tiled, +/area/ai_monitored/storage/eva) +"buP" = ( +/obj/machinery/door/firedoor/border_only, +/obj/structure/cable, +/obj/effect/wingrille_spawn/reinforced, +/turf/simulated/floor/plating, +/area/ai_monitored/storage/eva) +"buQ" = ( +/obj/effect/floor_decal/industrial/warning/corner{ + icon_state = "warningcorner"; + dir = 1 + }, +/turf/simulated/floor/tiled, +/area/hallway/primary/seconddeck/fore) +"buR" = ( +/obj/structure/cable{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/turf/simulated/floor/tiled/monotile, +/area/hallway/primary/seconddeck/fore) +"buS" = ( +/turf/simulated/floor/tiled, +/area/hallway/primary/seconddeck/fore) +"buT" = ( +/obj/machinery/atmospherics/unary/vent_scrubber/on{ + dir = 1 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/turf/simulated/floor/tiled, +/area/hallway/secondary/eva_hallway) +"buU" = ( +/obj/structure/sign/greencross{ + desc = "White cross in a green field, you can get medical aid here."; + name = "First-Aid" + }, +/turf/simulated/wall/r_wall, +/area/hallway/secondary/eva_hallway) +"buV" = ( +/obj/effect/floor_decal/borderfloor{ + dir = 8 + }, +/obj/effect/floor_decal/corner/paleblue/border{ + dir = 8 + }, +/obj/effect/floor_decal/borderfloor/corner2{ + dir = 8 + }, +/obj/effect/floor_decal/corner/paleblue/bordercorner2{ + dir = 8 + }, +/turf/simulated/floor/tiled, +/area/hallway/secondary/eva_hallway) +"buW" = ( +/turf/simulated/wall, +/area/janitor) +"buX" = ( +/obj/structure/noticeboard{ + pixel_x = -32 + }, +/obj/structure/table/reinforced, +/obj/machinery/door/firedoor/border_only, +/obj/machinery/door/window/northleft{ + name = "Janitorial Desk" + }, +/obj/machinery/door/window/southright{ + name = "Janitorial Desk"; + req_access = list(26) + }, +/obj/machinery/door/blast/shutters{ + dir = 1; + id = "janitor_blast"; + layer = 3.1; + name = "Janitorial Shutters" + }, +/turf/simulated/floor/tiled, +/area/janitor) +"buY" = ( +/obj/machinery/door/firedoor/border_only, +/obj/machinery/door/airlock{ + name = "Custodial Closet"; + req_access = list(26) + }, +/obj/structure/disposalpipe/segment, +/obj/structure/cable{ + d1 = 1; + d2 = 2; + icon_state = "1-2"; + pixel_y = 0 + }, +/turf/simulated/floor/tiled/steel_grid, +/area/janitor) +"buZ" = ( +/turf/simulated/wall, +/area/storage/auxillary) +"bva" = ( +/obj/machinery/door/firedoor/border_only, +/obj/effect/wingrille_spawn/reinforced, +/turf/simulated/floor/plating, +/area/storage/auxillary) +"bvb" = ( +/obj/structure/cable{ + d1 = 1; + d2 = 2; + icon_state = "1-2"; + pixel_y = 0 + }, +/obj/machinery/door/airlock/glass{ + name = "Auxiliary Storage" + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/turf/simulated/floor/tiled/steel_grid, +/area/storage/auxillary) +"bvc" = ( +/obj/structure/disposalpipe/segment, +/obj/machinery/atmospherics/pipe/simple/hidden{ + dir = 6 + }, +/turf/simulated/floor/tiled/dark, +/area/hallway/secondary/eva_hallway) +"bvd" = ( +/obj/machinery/atmospherics/pipe/manifold/hidden, +/obj/effect/floor_decal/industrial/warning/corner{ + dir = 4 + }, +/turf/simulated/floor/tiled/dark, +/area/hallway/secondary/eva_hallway) +"bve" = ( +/obj/machinery/atmospherics/pipe/manifold/hidden, +/turf/simulated/wall, +/area/hallway/secondary/eva_hallway) +"bvf" = ( +/obj/machinery/atmospherics/pipe/simple/hidden{ + dir = 9; + icon_state = "intact" + }, +/turf/simulated/wall, +/area/hallway/secondary/eva_hallway) +"bvg" = ( +/turf/simulated/wall/r_wall, +/area/maintenance/research) +"bvh" = ( +/obj/machinery/door/airlock/external{ + frequency = 1379; + icon_state = "door_locked"; + id_tag = "fore_starboard_outer"; + locked = 1; + name = "External Airlock Access"; + req_access = list(13) + }, +/turf/simulated/floor/airless, +/area/maintenance/research) +"bvi" = ( +/obj/machinery/door/firedoor/border_only, +/obj/effect/wingrille_spawn/reinforced, +/turf/simulated/floor/plating, +/area/maintenance/research) +"bvj" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/red, +/obj/machinery/door/firedoor/border_only, +/obj/effect/wingrille_spawn/reinforced, +/turf/simulated/floor/plating, +/area/maintenance/research) +"bvk" = ( +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/manifold/hidden/supply, +/turf/simulated/floor/tiled, +/area/hallway/secondary/eva_hallway) +"bvl" = ( +/obj/effect/floor_decal/corner/white{ + dir = 4 + }, +/obj/effect/floor_decal/corner/red/diagonal, +/obj/machinery/atmospherics/unary/outlet_injector{ + dir = 4; + frequency = 1441; + icon_state = "map_injector"; + id = "n2o_in"; + pixel_y = 1; + use_power = 1 + }, +/turf/simulated/floor/reinforced/n20, +/area/engineering/atmos) +"bvm" = ( +/obj/effect/floor_decal/corner/white/diagonal{ + icon_state = "corner_white_diagonal"; + dir = 4 + }, +/obj/effect/floor_decal/corner/red{ + dir = 1 + }, +/obj/machinery/air_sensor{ + frequency = 1441; + id_tag = "n2o_sensor" + }, +/obj/machinery/camera/network/engineering{ + c_tag = "Atmospherics Tank - Nitrous Oxide"; + dir = 4 + }, +/turf/simulated/floor/reinforced/n20, +/area/engineering/atmos) +"bvn" = ( +/obj/machinery/atmospherics/pipe/simple/visible/red{ + icon_state = "intact"; + dir = 4 + }, +/obj/machinery/door/firedoor/border_only, +/obj/effect/wingrille_spawn/reinforced, +/obj/machinery/door/blast/regular{ + density = 0; + dir = 1; + icon_state = "pdoor0"; + id = "atmoslockdown"; + name = "Atmospherics Lockdown"; + opacity = 0 + }, +/turf/simulated/floor/plating, +/area/engineering/atmos) +"bvo" = ( +/obj/machinery/atmospherics/omni/atmos_filter{ + tag_east = 1; + tag_north = 2; + tag_south = 0; + tag_west = 7; + use_power = 1 + }, +/obj/effect/floor_decal/industrial/outline/yellow, +/turf/simulated/floor/tiled, +/area/engineering/atmos) +"bvp" = ( +/obj/machinery/atmospherics/pipe/manifold/visible/red, +/turf/simulated/floor/tiled, +/area/engineering/atmos) +"bvq" = ( +/obj/machinery/atmospherics/pipe/simple/visible/red{ + icon_state = "intact"; + dir = 4 + }, +/obj/machinery/computer/general_air_control/large_tank_control{ + frequency = 1441; + input_tag = "n2o_in"; + name = "Nitrous Oxide Supply Control"; + output_tag = "n2o_out"; + sensors = list("n2o_sensor" = "Tank") + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/obj/effect/floor_decal/borderfloor{ + dir = 8 + }, +/obj/effect/floor_decal/corner/red/border{ + dir = 8 + }, +/obj/effect/floor_decal/borderfloor/corner2{ + dir = 8 + }, +/obj/effect/floor_decal/corner/white/bordercorner2{ + dir = 8 + }, +/turf/simulated/floor/tiled, +/area/engineering/atmos) +"bvr" = ( +/obj/machinery/atmospherics/pipe/manifold/visible/red{ + icon_state = "map"; + dir = 1 + }, +/obj/machinery/meter, +/turf/simulated/floor/tiled, +/area/engineering/atmos) +"bvs" = ( +/obj/machinery/atmospherics/pipe/simple/visible/cyan, +/obj/machinery/pipedispenser/disposal, +/obj/structure/window/reinforced, +/obj/structure/cable/cyan{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/turf/simulated/floor/tiled, +/area/engineering/atmos) +"bvt" = ( +/obj/machinery/computer/security/engineering, +/obj/effect/floor_decal/borderfloor{ + dir = 9 + }, +/obj/effect/floor_decal/corner/yellow/border{ + dir = 9 + }, +/turf/simulated/floor/tiled, +/area/engineering/atmos/monitoring) +"bvu" = ( +/obj/machinery/computer/atmos_alert, +/obj/effect/floor_decal/borderfloor/corner{ + dir = 1 + }, +/obj/effect/floor_decal/corner/yellow/bordercorner{ + dir = 1 + }, +/turf/simulated/floor/tiled, +/area/engineering/atmos/monitoring) +"bvv" = ( +/obj/structure/cable/cyan{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/obj/effect/floor_decal/steeldecal/steel_decals4{ + dir = 4 + }, +/obj/effect/floor_decal/steeldecal/steel_decals4{ + dir = 9 + }, +/turf/simulated/floor/tiled, +/area/engineering/atmos/monitoring) +"bvw" = ( +/obj/machinery/computer/general_air_control{ + frequency = 1441; + name = "Tank Monitor"; + sensors = list("n2_sensor" = "Nitrogen", "o2_sensor" = "Oxygen", "co2_sensor" = "Carbon Dioxide", "tox_sensor" = "Toxins", "n2o_sensor" = "Nitrous Oxide", "waste_sensor" = "Gas Mix Tank") + }, +/obj/effect/floor_decal/borderfloor/corner{ + dir = 4 + }, +/obj/effect/floor_decal/corner/yellow/bordercorner{ + dir = 4 + }, +/turf/simulated/floor/tiled, +/area/engineering/atmos/monitoring) +"bvx" = ( +/obj/machinery/computer/general_air_control{ + frequency = 1443; + level = 3; + name = "Distribution and Waste Monitor"; + sensors = list("mair_in_meter" = "Mixed Air In", "air_sensor" = "Mixed Air Supply Tank", "mair_out_meter" = "Mixed Air Out", "dloop_atm_meter" = "Distribution Loop", "wloop_atm_meter" = "Engine Waste") + }, +/obj/structure/sign/atmosplaque{ + pixel_x = 32; + pixel_y = 0 + }, +/obj/effect/floor_decal/borderfloor{ + dir = 5 + }, +/obj/effect/floor_decal/corner/yellow/border{ + dir = 5 + }, +/turf/simulated/floor/tiled, +/area/engineering/atmos/monitoring) +"bvy" = ( +/obj/machinery/alarm{ + pixel_y = 23 + }, +/turf/simulated/floor/plating, +/area/maintenance/substation/engineering) +"bvz" = ( +/obj/structure/cable/green{ + d1 = 2; + d2 = 4; + icon_state = "2-4" + }, +/obj/effect/floor_decal/industrial/warning{ + dir = 4 + }, +/obj/machinery/firealarm{ + dir = 2; + pixel_y = 24 + }, +/turf/simulated/floor/plating, +/area/maintenance/substation/engineering) +"bvA" = ( +/obj/machinery/power/smes/buildable{ + charge = 0; + RCon_tag = "Substation - Engineering" + }, +/obj/structure/cable/green{ + d2 = 8; + icon_state = "0-8" + }, +/obj/structure/cable/green{ + d2 = 4; + icon_state = "0-4" + }, +/turf/simulated/floor/plating, +/area/maintenance/substation/engineering) +"bvB" = ( +/obj/machinery/power/breakerbox/activated{ + RCon_tag = "Engineering Substation Bypass" + }, +/turf/simulated/floor/plating, +/area/maintenance/substation/engineering) +"bvC" = ( +/obj/machinery/door/blast/regular{ + density = 0; + dir = 1; + icon_state = "pdoor0"; + id = "englockdown"; + name = "Engineering Lockdown"; + opacity = 0 + }, +/turf/simulated/floor/plating, +/area/maintenance/engineering) +"bvD" = ( +/obj/structure/cable{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/obj/effect/floor_decal/industrial/warning{ + icon_state = "warning"; + dir = 8 + }, +/turf/simulated/floor, +/area/maintenance/engineering) +"bvE" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/turf/simulated/floor, +/area/maintenance/engineering) +"bvF" = ( +/obj/structure/reagent_dispensers/watertank, +/turf/simulated/floor/plating, +/area/maintenance/engineering) +"bvG" = ( +/obj/structure/reagent_dispensers/fueltank, +/turf/simulated/floor/plating, +/area/maintenance/engineering) +"bvH" = ( +/obj/structure/closet/crate, +/obj/item/weapon/storage/backpack, +/obj/item/device/multitool, +/obj/item/device/multitool, +/obj/item/device/assembly/prox_sensor, +/obj/item/device/flashlight, +/obj/random/maintenance/engineering, +/obj/random/maintenance/engineering, +/obj/random/maintenance/cargo, +/obj/random/maintenance/cargo, +/turf/simulated/floor/plating, +/area/maintenance/engineering) +"bvI" = ( +/obj/structure/table/steel, +/obj/item/clothing/head/orangebandana, +/obj/random/maintenance/engineering, +/obj/random/maintenance/engineering, +/obj/random/maintenance/engineering, +/obj/random/maintenance/engineering, +/turf/simulated/floor, +/area/maintenance/engineering) +"bvJ" = ( +/obj/structure/table/steel, +/obj/random/maintenance/engineering, +/obj/random/maintenance/engineering, +/obj/random/maintenance/engineering, +/obj/random/maintenance/engineering, +/obj/random/powercell, +/obj/item/weapon/coin/silver, +/turf/simulated/floor/plating, +/area/maintenance/engineering) +"bvK" = ( +/obj/structure/table/rack, +/obj/item/weapon/extinguisher, +/obj/item/clothing/head/hardhat/red, +/obj/item/clothing/mask/gas, +/obj/item/device/flashlight, +/obj/item/clothing/glasses/meson, +/obj/random/maintenance/cargo, +/turf/simulated/floor, +/area/maintenance/engineering) +"bvL" = ( +/obj/machinery/door/firedoor/border_only, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/structure/cable{ + d1 = 1; + d2 = 2; + icon_state = "1-2"; + pixel_y = 0 + }, +/obj/machinery/door/airlock/maintenance{ + req_access = list(12) + }, +/turf/simulated/floor/plating, +/area/maintenance/security_port) +"bvM" = ( +/obj/structure/table/rack{ + dir = 8; + layer = 2.6 + }, +/obj/structure/window/reinforced{ + dir = 8; + health = 1e+006 + }, +/obj/structure/window/reinforced{ + dir = 1; + health = 1e+006 + }, +/obj/item/clothing/mask/breath, +/obj/item/weapon/rig/breacher, +/obj/machinery/door/window/eastleft{ + name = "E.V.A."; + req_one_access = list(18) + }, +/turf/simulated/floor/tiled/dark, +/area/ai_monitored/storage/eva) +"bvN" = ( +/turf/simulated/floor/tiled/dark, +/area/ai_monitored/storage/eva) +"bvO" = ( +/obj/item/weapon/storage/briefcase/inflatable{ + pixel_x = 3; + pixel_y = 6 + }, +/obj/item/weapon/storage/briefcase/inflatable{ + pixel_y = 3 + }, +/obj/item/weapon/storage/briefcase/inflatable{ + pixel_x = -3 + }, +/obj/structure/table/reinforced, +/turf/simulated/floor/tiled/dark, +/area/ai_monitored/storage/eva) +"bvP" = ( +/obj/machinery/suit_storage_unit/standard_unit, +/turf/simulated/floor/tiled/dark, +/area/ai_monitored/storage/eva) +"bvQ" = ( +/obj/machinery/door/firedoor/glass, +/obj/machinery/door/airlock/glass_engineeringatmos{ + name = "Engineering Hardsuits"; + req_one_access = list(11,24) + }, +/turf/simulated/floor/tiled/dark, +/area/ai_monitored/storage/eva) +"bvR" = ( +/obj/machinery/door/firedoor/glass, +/obj/machinery/door/airlock/glass_security{ + name = "Security Hardsuits"; + req_access = list(1) + }, +/turf/simulated/floor/tiled/dark, +/area/ai_monitored/storage/eva) +"bvS" = ( +/obj/machinery/door/firedoor/glass, +/obj/machinery/door/airlock/glass_medical{ + name = "Medical Hardsuits"; + req_one_access = list(5) + }, +/turf/simulated/floor/tiled/dark, +/area/ai_monitored/storage/eva) +"bvT" = ( +/obj/effect/floor_decal/borderfloor, +/obj/effect/floor_decal/corner/blue/border, +/turf/simulated/floor/tiled, +/area/hallway/primary/seconddeck/fore) +"bvU" = ( +/obj/structure/disposalpipe/segment, +/obj/effect/floor_decal/borderfloor/corner{ + dir = 8 + }, +/obj/effect/floor_decal/corner/blue/bordercorner{ + dir = 8 + }, +/turf/simulated/floor/tiled, +/area/hallway/primary/seconddeck/fore) +"bvV" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 6 + }, +/obj/structure/cable{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/turf/simulated/floor/tiled/monotile, +/area/hallway/primary/seconddeck/fore) +"bvW" = ( +/obj/machinery/atmospherics/unary/vent_scrubber/on{ + dir = 8 + }, +/obj/machinery/camera/network/second_deck{ + c_tag = "Second Deck - Fore Hallway Two"; + dir = 8 + }, +/obj/machinery/light{ + dir = 4 + }, +/obj/effect/floor_decal/borderfloor/corner, +/obj/effect/floor_decal/corner/red/bordercorner, +/turf/simulated/floor/tiled, +/area/hallway/primary/seconddeck/fore) +"bvX" = ( +/obj/structure/cable{ + d1 = 1; + d2 = 2; + icon_state = "1-2"; + pixel_y = 0 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/turf/simulated/floor/tiled, +/area/hallway/secondary/eva_hallway) +"bvY" = ( +/obj/effect/floor_decal/borderfloor{ + dir = 4 + }, +/obj/effect/floor_decal/corner/paleblue/border{ + dir = 4 + }, +/obj/effect/floor_decal/borderfloor/corner2{ + dir = 6 + }, +/obj/effect/floor_decal/corner/paleblue/bordercorner2{ + dir = 6 + }, +/turf/simulated/floor/tiled, +/area/hallway/secondary/eva_hallway) +"bvZ" = ( +/turf/simulated/wall, +/area/maintenance/research) +"bwa" = ( +/obj/item/weapon/stool/padded, +/obj/effect/landmark/start{ + name = "Janitor" + }, +/obj/effect/floor_decal/borderfloor{ + dir = 9 + }, +/obj/effect/floor_decal/corner/purple/border{ + dir = 9 + }, +/turf/simulated/floor/tiled, +/area/janitor) +"bwb" = ( +/obj/machinery/button/remote/blast_door{ + id = "janitor_blast"; + name = "Privacy Shutters"; + pixel_x = 0; + pixel_y = 26 + }, +/obj/effect/floor_decal/borderfloor/corner{ + dir = 1 + }, +/obj/effect/floor_decal/corner/purple/bordercorner{ + dir = 1 + }, +/turf/simulated/floor/tiled, +/area/janitor) +"bwc" = ( +/obj/structure/disposalpipe/segment, +/obj/structure/cable{ + d1 = 1; + d2 = 4; + icon_state = "1-4" + }, +/obj/effect/floor_decal/steeldecal/steel_decals4{ + dir = 4 + }, +/obj/effect/floor_decal/steeldecal/steel_decals4{ + dir = 9 + }, +/turf/simulated/floor/tiled, +/area/janitor) +"bwd" = ( +/obj/machinery/power/apc{ + dir = 1; + name = "north bump"; + pixel_x = 0; + pixel_y = 24 + }, +/obj/machinery/light_switch{ + pixel_x = 11; + pixel_y = 24 + }, +/obj/structure/cable{ + d2 = 8; + icon_state = "0-8" + }, +/obj/effect/floor_decal/borderfloor/corner{ + dir = 4 + }, +/obj/effect/floor_decal/corner/purple/bordercorner{ + dir = 4 + }, +/turf/simulated/floor/tiled, +/area/janitor) +"bwe" = ( +/obj/item/weapon/grenade/chem_grenade/cleaner, +/obj/item/weapon/grenade/chem_grenade/cleaner, +/obj/item/weapon/grenade/chem_grenade/cleaner, +/obj/machinery/requests_console{ + department = "Janitorial"; + departmentType = 1; + pixel_y = 28 + }, +/obj/item/weapon/reagent_containers/spray/cleaner, +/obj/structure/table/steel, +/obj/item/weapon/storage/box/mousetraps, +/obj/item/weapon/storage/box/lights/mixed, +/obj/item/weapon/storage/box/lights/mixed, +/obj/item/weapon/reagent_containers/spray/cleaner, +/obj/machinery/newscaster{ + pixel_x = 30; + pixel_y = 0 + }, +/obj/effect/floor_decal/borderfloor{ + dir = 5 + }, +/obj/effect/floor_decal/corner/purple/border{ + dir = 5 + }, +/turf/simulated/floor/tiled, +/area/janitor) +"bwf" = ( +/obj/structure/table/steel, +/obj/structure/cable{ + icon_state = "0-4"; + d2 = 4 + }, +/obj/machinery/power/apc{ + dir = 1; + name = "north bump"; + pixel_x = 0; + pixel_y = 24 + }, +/obj/machinery/light_switch{ + pixel_x = 11; + pixel_y = 24 + }, +/obj/random/maintenance/engineering, +/obj/random/tech_supply, +/obj/random/tech_supply, +/obj/random/tech_supply, +/obj/random/tech_supply, +/obj/effect/floor_decal/borderfloor{ + dir = 9 + }, +/obj/effect/floor_decal/corner/yellow/border{ + dir = 9 + }, +/turf/simulated/floor/tiled, +/area/storage/auxillary) +"bwg" = ( +/obj/structure/cable{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/obj/effect/floor_decal/borderfloor/corner{ + dir = 1 + }, +/obj/effect/floor_decal/corner/yellow/bordercorner{ + dir = 1 + }, +/turf/simulated/floor/tiled, +/area/storage/auxillary) +"bwh" = ( +/obj/structure/cable{ + d1 = 1; + d2 = 2; + icon_state = "1-2"; + pixel_y = 0 + }, +/obj/structure/cable{ + d1 = 2; + d2 = 8; + icon_state = "2-8" + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/obj/effect/floor_decal/steeldecal/steel_decals4{ + dir = 4 + }, +/obj/effect/floor_decal/steeldecal/steel_decals4{ + dir = 9 + }, +/turf/simulated/floor/tiled, +/area/storage/auxillary) +"bwi" = ( +/obj/effect/floor_decal/borderfloor/corner{ + dir = 4 + }, +/obj/effect/floor_decal/corner/yellow/bordercorner{ + dir = 4 + }, +/turf/simulated/floor/tiled, +/area/storage/auxillary) +"bwj" = ( +/obj/structure/table/steel, +/obj/item/weapon/storage/box, +/obj/item/weapon/storage/box, +/obj/item/weapon/tape_roll{ + pixel_x = 4; + pixel_y = 4 + }, +/obj/item/weapon/tape_roll, +/obj/item/weapon/packageWrap, +/obj/item/weapon/packageWrap, +/obj/machinery/firealarm{ + dir = 4; + pixel_x = 24 + }, +/obj/effect/floor_decal/borderfloor{ + dir = 5 + }, +/obj/effect/floor_decal/corner/yellow/border{ + dir = 5 + }, +/turf/simulated/floor/tiled, +/area/storage/auxillary) +"bwk" = ( +/obj/machinery/door/firedoor/border_only, +/obj/structure/disposalpipe/segment, +/obj/machinery/door/airlock/maintenance{ + req_access = null; + req_one_access = list(12,47) + }, +/obj/machinery/atmospherics/pipe/simple/hidden, +/turf/simulated/floor/plating, +/area/maintenance/research) +"bwl" = ( +/obj/structure/table/rack{ + dir = 1 + }, +/obj/random/maintenance/research, +/obj/random/maintenance/research, +/obj/random/maintenance/research, +/obj/random/maintenance/research, +/turf/simulated/floor/plating, +/area/maintenance/research) +"bwm" = ( +/obj/structure/closet/firecloset/full, +/obj/random/maintenance/clean, +/obj/random/maintenance/clean, +/obj/random/firstaid, +/obj/machinery/light/small{ + dir = 1 + }, +/turf/simulated/floor/plating, +/area/maintenance/research) +"bwn" = ( +/obj/machinery/space_heater, +/turf/simulated/floor/plating, +/area/maintenance/research) +"bwo" = ( +/obj/machinery/atmospherics/pipe/simple/hidden{ + dir = 6 + }, +/turf/simulated/wall/r_wall, +/area/maintenance/research) +"bwp" = ( +/obj/effect/floor_decal/industrial/warning{ + icon_state = "warning"; + dir = 9 + }, +/obj/machinery/atmospherics/unary/vent_pump/high_volume{ + dir = 8; + frequency = 1379; + id_tag = "fore_starboard_pump" + }, +/obj/machinery/embedded_controller/radio/airlock/airlock_controller{ + frequency = 1379; + id_tag = "fore_starboard_airlock"; + pixel_x = -25; + req_access = list(13); + req_one_access = null; + tag_airpump = "fore_starboard_pump"; + tag_chamber_sensor = "fore_starboard_sensor"; + tag_exterior_door = "fore_starboard_outer"; + tag_interior_door = "fore_starboard_inner" + }, +/turf/simulated/floor/plating, +/area/maintenance/research) +"bwq" = ( +/obj/effect/floor_decal/industrial/warning{ + dir = 5 + }, +/obj/machinery/atmospherics/unary/vent_pump/high_volume{ + dir = 4; + frequency = 1379; + id_tag = "fore_starboard_pump" + }, +/obj/machinery/airlock_sensor{ + frequency = 1379; + id_tag = "fore_starboard_sensor"; + pixel_x = 24; + pixel_y = 0 + }, +/turf/simulated/floor/plating, +/area/maintenance/research) +"bwr" = ( +/obj/machinery/atmospherics/pipe/simple/hidden{ + dir = 10; + icon_state = "intact" + }, +/turf/simulated/wall/r_wall, +/area/maintenance/research) +"bws" = ( +/obj/machinery/atmospherics/pipe/tank/air, +/turf/simulated/floor/plating, +/area/maintenance/research) +"bwt" = ( +/obj/effect/floor_decal/industrial/warning/corner, +/obj/structure/closet/crate/internals, +/obj/item/weapon/tank/emergency/oxygen/engi, +/obj/item/weapon/tank/emergency/oxygen/engi, +/obj/item/weapon/tank/emergency/oxygen/double, +/obj/random/tank, +/obj/random/maintenance/research, +/obj/random/maintenance/research, +/obj/random/maintenance/clean, +/obj/random/maintenance/clean, +/turf/simulated/floor/plating, +/area/maintenance/research) +"bwu" = ( +/obj/machinery/light/small{ + dir = 8 + }, +/obj/effect/floor_decal/corner/white{ + dir = 8 + }, +/obj/effect/floor_decal/corner/red/diagonal, +/turf/simulated/floor/reinforced/n20, +/area/engineering/atmos) +"bwv" = ( +/obj/machinery/atmospherics/pipe/simple/visible/red{ + icon_state = "intact"; + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/visible/yellow, +/turf/simulated/floor/tiled, +/area/engineering/atmos) +"bww" = ( +/obj/machinery/atmospherics/pipe/manifold/visible/green{ + dir = 1 + }, +/obj/machinery/door/firedoor/glass, +/obj/effect/wingrille_spawn/reinforced, +/obj/machinery/door/blast/regular{ + density = 0; + dir = 1; + icon_state = "pdoor0"; + id = "atmoslockdown"; + name = "Atmospherics Lockdown"; + opacity = 0 + }, +/turf/simulated/floor/plating, +/area/engineering/atmos) +"bwx" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/obj/machinery/atmospherics/valve/digital{ + dir = 4; + name = "N2O Outlet Valve" + }, +/obj/effect/floor_decal/borderfloor{ + dir = 8 + }, +/obj/effect/floor_decal/corner/white/border{ + dir = 8 + }, +/obj/effect/floor_decal/borderfloor/corner2{ + dir = 10 + }, +/obj/effect/floor_decal/corner/red/bordercorner2{ + dir = 10 + }, +/turf/simulated/floor/tiled, +/area/engineering/atmos) +"bwy" = ( +/obj/machinery/atmospherics/binary/pump{ + dir = 4; + name = "N2O to Mixing" + }, +/turf/simulated/floor/tiled, +/area/engineering/atmos) +"bwz" = ( +/obj/structure/disposalpipe/segment{ + dir = 4; + icon_state = "pipe-c" + }, +/obj/machinery/atmospherics/pipe/simple/visible/green{ + dir = 9; + icon_state = "intact" + }, +/turf/simulated/floor/tiled, +/area/engineering/atmos) +"bwA" = ( +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/item/weapon/stool/padded, +/turf/simulated/floor/tiled, +/area/engineering/atmos) +"bwB" = ( +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/turf/simulated/floor/tiled, +/area/engineering/atmos) +"bwC" = ( +/obj/machinery/atmospherics/pipe/simple/visible/yellow, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/turf/simulated/floor/tiled, +/area/engineering/atmos) +"bwD" = ( +/obj/machinery/atmospherics/binary/pump{ + dir = 1; + name = "Ports to Waste" + }, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/turf/simulated/floor/tiled, +/area/engineering/atmos) +"bwE" = ( +/obj/machinery/atmospherics/binary/pump/on{ + dir = 1; + name = "Ports to Waste" + }, +/obj/structure/disposalpipe/segment{ + dir = 2; + icon_state = "pipe-c" + }, +/turf/simulated/floor/tiled, +/area/engineering/atmos) +"bwF" = ( +/obj/machinery/atmospherics/binary/pump/on{ + dir = 2; + name = "Air to Ports" + }, +/obj/structure/cable/cyan, +/obj/machinery/light_switch{ + dir = 2; + name = "light switch "; + pixel_x = 36; + pixel_y = 0 + }, +/obj/machinery/power/apc{ + dir = 4; + name = "east bump"; + pixel_x = 24 + }, +/turf/simulated/floor/tiled, +/area/engineering/atmos) +"bwG" = ( +/turf/simulated/wall, +/area/engineering/atmos/monitoring) +"bwH" = ( +/obj/structure/bed/chair/office/dark{ + dir = 1 + }, +/obj/machinery/atmospherics/unary/vent_pump/on{ + dir = 4 + }, +/obj/machinery/button/remote/blast_door{ + id = "atmoslockdown"; + name = "Atmospherics Lockdown"; + pixel_x = -26; + pixel_y = -16; + req_one_access = list(10,24) + }, +/obj/machinery/light{ + dir = 8; + icon_state = "tube1"; + pixel_y = 0 + }, +/obj/effect/landmark/start{ + name = "Atmospheric Technician" + }, +/obj/effect/floor_decal/borderfloor{ + dir = 8 + }, +/obj/effect/floor_decal/corner/yellow/border{ + dir = 8 + }, +/turf/simulated/floor/tiled, +/area/engineering/atmos/monitoring) +"bwI" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/turf/simulated/floor/tiled, +/area/engineering/atmos/monitoring) +"bwJ" = ( +/obj/machinery/hologram/holopad, +/obj/effect/floor_decal/industrial/outline/grey, +/obj/structure/cable/cyan{ + d1 = 1; + d2 = 4; + icon_state = "1-4" + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 6 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 10 + }, +/turf/simulated/floor/tiled, +/area/engineering/atmos/monitoring) +"bwK" = ( +/obj/structure/cable/cyan{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, +/turf/simulated/floor/tiled, +/area/engineering/atmos/monitoring) +"bwL" = ( +/obj/structure/bed/chair/office/dark{ + dir = 1 + }, +/obj/structure/cable/cyan{ + d2 = 8; + icon_state = "0-8" + }, +/obj/machinery/power/apc{ + dir = 4; + name = "east bump"; + pixel_x = 24 + }, +/obj/machinery/light_switch{ + dir = 2; + name = "light switch "; + pixel_x = 36; + pixel_y = 0 + }, +/obj/machinery/atmospherics/unary/vent_scrubber/on{ + dir = 8 + }, +/obj/machinery/camera/network/engineering{ + c_tag = "ENG - Atmospherics Monitoring"; + dir = 8 + }, +/obj/effect/landmark/start{ + name = "Atmospheric Technician" + }, +/obj/effect/floor_decal/borderfloor{ + dir = 4 + }, +/obj/effect/floor_decal/corner/yellow/border{ + dir = 4 + }, +/turf/simulated/floor/tiled, +/area/engineering/atmos/monitoring) +"bwM" = ( +/obj/structure/cable/green{ + d2 = 4; + icon_state = "0-4" + }, +/obj/machinery/power/sensor{ + name = "Powernet Sensor - Engineering Subgrid"; + name_tag = "Engineering Subgrid" + }, +/obj/machinery/power/apc{ + dir = 8; + name = "west bump"; + pixel_x = -24 + }, +/turf/simulated/floor/plating, +/area/maintenance/substation/engineering) +"bwN" = ( +/obj/structure/cable/green{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/obj/structure/cable/green{ + d1 = 1; + d2 = 8; + icon_state = "1-8" + }, +/obj/effect/floor_decal/industrial/warning/corner{ + icon_state = "warningcorner"; + dir = 4 + }, +/turf/simulated/floor/plating, +/area/maintenance/substation/engineering) +"bwO" = ( +/obj/structure/cable{ + icon_state = "0-4"; + d2 = 4 + }, +/obj/machinery/power/terminal{ + icon_state = "term"; + dir = 1 + }, +/obj/effect/floor_decal/industrial/warning{ + icon_state = "warning"; + dir = 1 + }, +/obj/effect/floor_decal/industrial/warning/corner, +/turf/simulated/floor/plating, +/area/maintenance/substation/engineering) +"bwP" = ( +/obj/structure/cable{ + d1 = 1; + d2 = 4; + icon_state = "1-4" + }, +/obj/structure/cable{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/obj/effect/floor_decal/industrial/warning{ + icon_state = "warning"; + dir = 1 + }, +/obj/structure/cable{ + d1 = 2; + d2 = 4; + icon_state = "2-4" + }, +/obj/effect/floor_decal/industrial/warning, +/turf/simulated/floor/plating, +/area/maintenance/substation/engineering) +"bwQ" = ( +/obj/structure/cable{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/obj/machinery/door/airlock/engineering{ + name = "Engineering Substation"; + req_one_access = list(11,24) + }, +/turf/simulated/floor/plating, +/area/maintenance/substation/engineering) +"bwR" = ( +/obj/structure/cable{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/obj/machinery/door/blast/regular{ + density = 0; + dir = 1; + icon_state = "pdoor0"; + id = "englockdown"; + name = "Engineering Lockdown"; + opacity = 0 + }, +/turf/simulated/floor/plating, +/area/maintenance/engineering) +"bwS" = ( +/obj/effect/floor_decal/industrial/warning{ + icon_state = "warning"; + dir = 8 + }, +/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, +/area/maintenance/engineering) +"bwT" = ( +/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{ + dir = 8 + }, +/obj/machinery/atmospherics/pipe/manifold/hidden/supply{ + dir = 8 + }, +/obj/structure/cable{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/turf/simulated/floor, +/area/maintenance/engineering) +"bwU" = ( +/obj/structure/cable{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, +/turf/simulated/floor/plating, +/area/maintenance/engineering) +"bwV" = ( +/obj/structure/cable{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, +/obj/machinery/door/firedoor/border_only, +/obj/machinery/door/airlock/maintenance{ + req_access = list(12) + }, +/turf/simulated/floor/plating, +/area/maintenance/engineering) +"bwW" = ( +/obj/structure/cable{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, +/obj/machinery/light/small{ + dir = 1 + }, +/turf/simulated/floor/plating, +/area/maintenance/engineering) +"bwX" = ( +/obj/machinery/atmospherics/pipe/manifold/hidden/supply{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{ + dir = 4 + }, +/obj/structure/cable{ + d1 = 2; + d2 = 8; + icon_state = "2-8" + }, +/obj/structure/cable{ + d1 = 1; + d2 = 2; + icon_state = "1-2"; + pixel_y = 0 + }, +/turf/simulated/floor/plating, +/area/maintenance/engineering) +"bwY" = ( +/obj/structure/table/rack{ + dir = 8; + layer = 2.6 + }, +/obj/structure/window/reinforced{ + dir = 1; + health = 1e+006 + }, +/obj/structure/window/reinforced{ + dir = 8; + health = 1e+006 + }, +/obj/item/clothing/mask/breath, +/obj/item/clothing/suit/space/skrell/white, +/obj/item/clothing/head/helmet/space/skrell/white, +/obj/machinery/door/window/eastleft{ + name = "E.V.A."; + req_one_access = list(18) + }, +/turf/simulated/floor/tiled/dark, +/area/ai_monitored/storage/eva) +"bwZ" = ( +/obj/structure/table/rack{ + dir = 8; + layer = 2.6 + }, +/obj/structure/window/reinforced{ + dir = 1; + health = 1e+006 + }, +/obj/structure/window/reinforced{ + dir = 4 + }, +/obj/item/weapon/tank/jetpack/carbondioxide, +/obj/item/clothing/shoes/magboots, +/obj/machinery/door/window/westright{ + name = "E.V.A."; + req_one_access = list(18) + }, +/turf/simulated/floor/tiled/dark, +/area/ai_monitored/storage/eva) +"bxa" = ( +/obj/structure/window/reinforced{ + dir = 1; + health = 1e+006 + }, +/obj/structure/window/reinforced{ + dir = 4 + }, +/obj/item/clothing/mask/breath, +/obj/structure/table/rack{ + dir = 8; + layer = 2.6 + }, +/obj/item/weapon/rig/eva/equipped, +/obj/machinery/door/window/westright{ + name = "Engineering Hardsuits"; + req_one_access = list(11,24) + }, +/turf/simulated/floor/tiled/dark, +/area/ai_monitored/storage/eva) +"bxb" = ( +/obj/structure/window/reinforced{ + dir = 1; + health = 1e+006 + }, +/obj/structure/window/reinforced{ + dir = 4 + }, +/obj/item/clothing/mask/breath, +/obj/structure/table/rack{ + dir = 8; + layer = 2.6 + }, +/obj/item/clothing/shoes/magboots, +/obj/item/clothing/suit/space/void/security, +/obj/machinery/door/window/westright{ + name = "Security Hardsuits"; + req_one_access = list(1) + }, +/obj/item/clothing/head/helmet/space/void/security, +/turf/simulated/floor/tiled/dark, +/area/ai_monitored/storage/eva) +"bxc" = ( +/obj/structure/window/reinforced{ + dir = 1; + health = 1e+006 + }, +/obj/structure/window/reinforced{ + dir = 4 + }, +/obj/item/clothing/mask/breath, +/obj/item/clothing/shoes/magboots, +/obj/item/clothing/suit/space/void/medical, +/obj/structure/table/rack{ + dir = 8; + layer = 2.6 + }, +/obj/machinery/door/window/westright{ + name = "Medical Hardsuits"; + req_one_access = list(5) + }, +/obj/item/clothing/head/helmet/space/void/medical, +/turf/simulated/floor/tiled/dark, +/area/ai_monitored/storage/eva) +"bxd" = ( +/obj/structure/cable{ + icon_state = "0-4"; + d2 = 4 + }, +/obj/machinery/power/apc{ + dir = 8; + name = "west bump"; + pixel_x = -24 + }, +/turf/simulated/floor/tiled/dark, +/area/hallway/primary/seconddeck/fore) +"bxe" = ( +/obj/structure/disposalpipe/segment, +/obj/structure/cable{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/obj/effect/floor_decal/borderfloor{ + dir = 8 + }, +/obj/effect/floor_decal/corner/blue/border{ + dir = 8 + }, +/turf/simulated/floor/tiled, +/area/hallway/primary/seconddeck/fore) +"bxf" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/obj/structure/cable{ + d1 = 1; + d2 = 8; + icon_state = "1-8" + }, +/turf/simulated/floor/tiled/monotile, +/area/hallway/primary/seconddeck/fore) +"bxg" = ( +/obj/effect/floor_decal/borderfloor{ + dir = 4 + }, +/obj/effect/floor_decal/corner/red/border{ + dir = 4 + }, +/turf/simulated/floor/tiled, +/area/hallway/primary/seconddeck/fore) +"bxh" = ( +/turf/simulated/wall, +/area/medical/first_aid_station/seconddeck/fore) +"bxi" = ( +/turf/simulated/floor/plating, +/area/maintenance/research) +"bxj" = ( +/obj/machinery/door/firedoor/border_only, +/obj/effect/wingrille_spawn/reinforced, +/turf/simulated/floor/plating, +/area/medical/first_aid_station/seconddeck/fore) +"bxk" = ( +/obj/structure/closet/l3closet/janitor, +/obj/effect/floor_decal/borderfloor{ + dir = 8 + }, +/obj/effect/floor_decal/corner/purple/border{ + dir = 8 + }, +/turf/simulated/floor/tiled, +/area/janitor) +"bxl" = ( +/obj/machinery/atmospherics/unary/vent_scrubber/on, +/turf/simulated/floor/tiled, +/area/janitor) +"bxm" = ( +/obj/structure/disposalpipe/segment, +/turf/simulated/floor/tiled, +/area/janitor) +"bxn" = ( +/obj/item/weapon/stool/padded, +/obj/effect/landmark/start{ + name = "Janitor" + }, +/turf/simulated/floor/tiled, +/area/janitor) +"bxo" = ( +/obj/structure/table/steel, +/obj/item/weapon/paper_bin{ + pixel_x = -3; + pixel_y = 7 + }, +/obj/item/weapon/pen, +/obj/machinery/camera/network/civilian{ + c_tag = "CIV - Custodial Closet"; + dir = 9 + }, +/obj/machinery/alarm{ + dir = 8; + pixel_x = 22; + pixel_y = 0 + }, +/obj/effect/floor_decal/borderfloor{ + dir = 4 + }, +/obj/effect/floor_decal/corner/purple/border{ + dir = 4 + }, +/turf/simulated/floor/tiled, +/area/janitor) +"bxp" = ( +/obj/structure/closet/toolcloset, +/obj/effect/floor_decal/borderfloor{ + dir = 8 + }, +/obj/effect/floor_decal/corner/yellow/border{ + dir = 8 + }, +/turf/simulated/floor/tiled, +/area/storage/auxillary) +"bxq" = ( +/turf/simulated/floor/tiled, +/area/storage/auxillary) +"bxr" = ( +/obj/structure/cable{ + d1 = 1; + d2 = 2; + icon_state = "1-2"; + pixel_y = 0 + }, +/obj/structure/table/steel, +/obj/random/maintenance/engineering, +/obj/random/tech_supply, +/obj/random/tech_supply, +/obj/random/tech_supply, +/obj/random/tech_supply, +/obj/machinery/recharger{ + pixel_y = 0 + }, +/obj/machinery/atmospherics/pipe/manifold/hidden/supply{ + dir = 8 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/turf/simulated/floor/tiled, +/area/storage/auxillary) +"bxs" = ( +/obj/machinery/atmospherics/unary/vent_pump/on{ + dir = 8 + }, +/turf/simulated/floor/tiled, +/area/storage/auxillary) +"bxt" = ( +/obj/structure/table/steel, +/obj/item/device/camera_film{ + pixel_x = 2; + pixel_y = 2 + }, +/obj/item/device/camera_film{ + pixel_x = -2; + pixel_y = -2 + }, +/obj/item/device/camera, +/obj/item/device/camera{ + pixel_x = 3; + pixel_y = -4 + }, +/obj/machinery/light{ + dir = 4; + icon_state = "tube1"; + pixel_x = 0 + }, +/obj/effect/floor_decal/borderfloor{ + dir = 4 + }, +/obj/effect/floor_decal/corner/yellow/border{ + dir = 4 + }, +/turf/simulated/floor/tiled, +/area/storage/auxillary) +"bxu" = ( +/obj/structure/disposalpipe/segment, +/obj/machinery/atmospherics/pipe/manifold/hidden{ + dir = 8; + icon_state = "map" + }, +/obj/effect/floor_decal/industrial/warning{ + icon_state = "warning"; + dir = 4 + }, +/turf/simulated/floor/plating, +/area/maintenance/research) +"bxv" = ( +/obj/machinery/atmospherics/portables_connector{ + dir = 8 + }, +/obj/effect/floor_decal/industrial/outline/yellow, +/obj/machinery/portable_atmospherics/canister/air/airlock, +/turf/simulated/floor/plating, +/area/maintenance/research) +"bxw" = ( +/obj/structure/table/steel, +/obj/random/powercell, +/obj/random/maintenance/research, +/obj/random/tool, +/obj/random/tech_supply, +/turf/simulated/floor/plating, +/area/maintenance/research) +"bxx" = ( +/obj/machinery/alarm{ + dir = 8; + pixel_x = 22; + pixel_y = 0 + }, +/turf/simulated/floor/plating, +/area/maintenance/research) +"bxy" = ( +/obj/machinery/atmospherics/pipe/manifold/hidden{ + dir = 8; + icon_state = "map" + }, +/turf/simulated/wall/r_wall, +/area/maintenance/research) +"bxz" = ( +/obj/effect/floor_decal/industrial/warning{ + dir = 10 + }, +/obj/machinery/atmospherics/unary/vent_pump/high_volume{ + dir = 8; + frequency = 1379; + id_tag = "fore_starboard_pump" + }, +/turf/simulated/floor/plating, +/area/maintenance/research) +"bxA" = ( +/obj/effect/floor_decal/industrial/warning{ + dir = 6 + }, +/obj/machinery/atmospherics/unary/vent_pump/high_volume{ + dir = 4; + frequency = 1379; + id_tag = "fore_starboard_pump" + }, +/obj/machinery/light/small{ + dir = 4; + pixel_y = 0 + }, +/turf/simulated/floor/plating, +/area/maintenance/research) +"bxB" = ( +/obj/machinery/atmospherics/pipe/manifold/hidden{ + dir = 4; + icon_state = "map" + }, +/turf/simulated/wall/r_wall, +/area/maintenance/research) +"bxC" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/cyan{ + dir = 5; + icon_state = "intact" + }, +/obj/effect/floor_decal/industrial/warning, +/turf/simulated/floor/plating, +/area/maintenance/research) +"bxD" = ( +/obj/machinery/atmospherics/pipe/manifold/hidden/cyan, +/obj/effect/floor_decal/industrial/warning, +/obj/machinery/meter, +/turf/simulated/floor/plating, +/area/maintenance/research) +"bxE" = ( +/obj/machinery/atmospherics/valve{ + dir = 4 + }, +/obj/effect/floor_decal/industrial/warning{ + dir = 6 + }, +/turf/simulated/floor/plating, +/area/maintenance/research) +"bxF" = ( +/obj/machinery/atmospherics/pipe/simple/visible/universal{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/red, +/obj/structure/closet/wardrobe/white, +/obj/random/maintenance/clean, +/obj/random/maintenance/research, +/obj/random/technology_scanner, +/turf/simulated/floor/plating, +/area/maintenance/research) +"bxG" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 10 + }, +/obj/structure/closet/emcloset, +/turf/simulated/floor/plating, +/area/maintenance/research) +"bxH" = ( +/turf/simulated/wall/r_wall, +/area/rnd/research) +"bxI" = ( +/obj/machinery/door/firedoor/border_only, +/obj/effect/wingrille_spawn/reinforced, +/turf/simulated/floor/plating, +/area/rnd/research) +"bxJ" = ( +/obj/effect/floor_decal/industrial/warning/corner, +/turf/simulated/floor/airless, +/area/space) +"bxK" = ( +/obj/effect/floor_decal/industrial/warning, +/obj/machinery/shield_diffuser, +/turf/simulated/floor/airless, +/area/space) +"bxL" = ( +/obj/effect/floor_decal/industrial/warning/corner{ + icon_state = "warningcorner"; + dir = 8 + }, +/turf/simulated/floor/airless, +/area/space) +"bxM" = ( +/obj/structure/cable/green{ + d1 = 2; + d2 = 4; + icon_state = "2-4" + }, +/turf/simulated/floor/airless, +/area/space) +"bxN" = ( +/obj/structure/cable/green{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/turf/simulated/floor/airless, +/area/space) +"bxO" = ( +/obj/machinery/light/small, +/obj/structure/cable/green{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/turf/simulated/floor/airless, +/area/rnd/toxins_launch) +"bxP" = ( +/obj/machinery/access_button{ + command = "cycle_exterior"; + frequency = 1379; + master_tag = "toxins_airlock"; + name = "exterior access button"; + pixel_x = 28; + pixel_y = -22; + req_one_access = list(8,13,65) + }, +/obj/structure/cable/green{ + d1 = 1; + d2 = 8; + icon_state = "1-8" + }, +/turf/simulated/floor/airless, +/area/rnd/toxins_launch) +"bxQ" = ( +/turf/simulated/floor/airless, +/area/rnd/toxins_launch) +"bxR" = ( +/obj/machinery/atmospherics/pipe/simple/visible/green{ + dir = 5; + icon_state = "intact" + }, +/obj/machinery/door/firedoor/glass, +/obj/effect/wingrille_spawn/reinforced, +/obj/machinery/door/blast/regular{ + density = 0; + dir = 1; + icon_state = "pdoor0"; + id = "atmoslockdown"; + name = "Atmospherics Lockdown"; + opacity = 0 + }, +/turf/simulated/floor/plating, +/area/engineering/atmos) +"bxS" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/obj/machinery/atmospherics/binary/pump{ + dir = 4; + name = "N2O to Connector" + }, +/turf/simulated/floor/tiled, +/area/engineering/atmos) +"bxT" = ( +/obj/machinery/disposal, +/obj/structure/disposalpipe/trunk{ + dir = 1 + }, +/turf/simulated/floor/tiled, +/area/engineering/atmos) +"bxU" = ( +/obj/structure/table/standard, +/obj/machinery/alarm{ + dir = 1; + pixel_y = -22 + }, +/obj/item/stack/material/steel{ + amount = 50 + }, +/obj/item/stack/material/glass{ + amount = 50 + }, +/obj/item/clothing/gloves/black, +/obj/item/clothing/gloves/black, +/obj/item/weapon/storage/belt/utility/atmostech, +/obj/item/weapon/storage/belt/utility/atmostech, +/turf/simulated/floor/tiled, +/area/engineering/atmos) +"bxV" = ( +/obj/structure/table/standard, +/obj/structure/closet/fireaxecabinet{ + pixel_y = -32 + }, +/obj/machinery/cell_charger, +/obj/item/device/multitool{ + pixel_x = 5 + }, +/obj/item/weapon/tool/wrench, +/turf/simulated/floor/tiled, +/area/engineering/atmos) +"bxW" = ( +/obj/machinery/atmospherics/pipe/manifold/visible/yellow{ + dir = 8 + }, +/obj/machinery/meter, +/obj/structure/closet/firecloset, +/turf/simulated/floor/tiled, +/area/engineering/atmos) +"bxX" = ( +/obj/machinery/atmospherics/valve/digital{ + dir = 4; + name = "Emergency Cooling Valve 1" + }, +/obj/structure/closet/firecloset, +/turf/simulated/floor/tiled, +/area/engineering/atmos) +"bxY" = ( +/obj/machinery/atmospherics/pipe/manifold/visible/red{ + dir = 4; + initialize_directions = 11 + }, +/obj/machinery/meter, +/obj/effect/floor_decal/steeldecal/steel_decals4{ + dir = 5 + }, +/obj/effect/floor_decal/steeldecal/steel_decals4{ + dir = 8 + }, +/turf/simulated/floor/tiled, +/area/engineering/atmos) +"bxZ" = ( +/obj/machinery/atmospherics/pipe/simple/visible/red, +/obj/machinery/meter, +/obj/structure/disposalpipe/segment, +/obj/effect/floor_decal/steeldecal/steel_decals4{ + dir = 8 + }, +/obj/effect/floor_decal/steeldecal/steel_decals4{ + dir = 5 + }, +/turf/simulated/floor/tiled, +/area/engineering/atmos) +"bya" = ( +/obj/machinery/atmospherics/pipe/simple/visible/cyan, +/obj/machinery/meter, +/obj/machinery/firealarm{ + dir = 4; + pixel_x = 24 + }, +/turf/simulated/floor/tiled, +/area/engineering/atmos) +"byb" = ( +/obj/structure/table/reinforced, +/obj/item/device/radio/intercom{ + dir = 8; + name = "Station Intercom (General)"; + pixel_x = -21 + }, +/obj/machinery/newscaster{ + pixel_y = -30 + }, +/obj/effect/floor_decal/borderfloor{ + dir = 10 + }, +/obj/effect/floor_decal/corner/yellow/border{ + dir = 10 + }, +/turf/simulated/floor/tiled, +/area/engineering/atmos/monitoring) +"byc" = ( +/obj/effect/floor_decal/borderfloor/corner{ + dir = 8 + }, +/obj/effect/floor_decal/corner/yellow/bordercorner{ + dir = 8 + }, +/turf/simulated/floor/tiled, +/area/engineering/atmos/monitoring) +"byd" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/effect/floor_decal/steeldecal/steel_decals4{ + dir = 5 + }, +/obj/effect/floor_decal/steeldecal/steel_decals4{ + dir = 8 + }, +/turf/simulated/floor/tiled, +/area/engineering/atmos/monitoring) +"bye" = ( +/obj/effect/floor_decal/borderfloor/corner, +/obj/effect/floor_decal/corner/yellow/bordercorner, +/turf/simulated/floor/tiled, +/area/engineering/atmos/monitoring) +"byf" = ( +/obj/machinery/computer/atmoscontrol, +/obj/structure/extinguisher_cabinet{ + pixel_x = 28; + pixel_y = 0 + }, +/obj/machinery/alarm{ + dir = 1; + pixel_y = -22 + }, +/obj/effect/floor_decal/borderfloor{ + dir = 6 + }, +/obj/effect/floor_decal/corner/yellow/border{ + dir = 6 + }, +/turf/simulated/floor/tiled, +/area/engineering/atmos/monitoring) +"byg" = ( +/obj/structure/table/steel, +/obj/item/weapon/paper{ + info = "The big blue box recently installed in here is a 'grid checker' which will shut off the power if a dangerous power spike from the engine erupts into the powernet. Shutting everything down protects everything from electrical damage, however the outages can be disruptive to colony operations, so it is designed to restore power after a somewhat significant delay, up to ten minutes or so. The grid checker can be manually hacked in order to end the outage sooner. To do that, you must cut three specific wires which do not cause a red light to shine, then pulse a fourth wire. Electrical protection is highly recommended when doing maintenance on the grid checker."; + name = "grid checker info" + }, +/turf/simulated/floor/plating, +/area/maintenance/substation/engineering) +"byh" = ( +/obj/structure/cable/green{ + d1 = 1; + d2 = 4; + icon_state = "1-4" + }, +/obj/machinery/light/small, +/turf/simulated/floor/plating, +/area/maintenance/substation/engineering) +"byi" = ( +/obj/structure/cable/green{ + d1 = 2; + d2 = 8; + icon_state = "2-8" + }, +/obj/effect/floor_decal/industrial/warning{ + dir = 4 + }, +/turf/simulated/floor/plating, +/area/maintenance/substation/engineering) +"byj" = ( +/obj/machinery/power/grid_checker, +/obj/structure/cable, +/turf/simulated/floor/plating, +/area/maintenance/substation/engineering) +"byk" = ( +/obj/effect/floor_decal/industrial/warning{ + icon_state = "warning"; + dir = 8 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 6 + }, +/turf/simulated/floor, +/area/maintenance/engineering) +"byl" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 9 + }, +/turf/simulated/floor, +/area/maintenance/engineering) +"bym" = ( +/turf/simulated/floor/plating, +/area/maintenance/engineering) +"byn" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/structure/cable{ + d1 = 1; + d2 = 2; + icon_state = "1-2"; + pixel_y = 0 + }, +/turf/simulated/floor/plating, +/area/maintenance/engineering) +"byo" = ( +/obj/structure/table/rack{ + dir = 8; + layer = 2.6 + }, +/obj/structure/window/reinforced, +/obj/structure/window/reinforced{ + dir = 8; + health = 1e+006 + }, +/obj/item/clothing/mask/breath, +/obj/item/clothing/mask/breath, +/obj/item/clothing/suit/space/skrell/black, +/obj/item/clothing/head/helmet/space/skrell/black, +/obj/machinery/door/window/eastright{ + name = "E.V.A."; + req_one_access = list(18) + }, +/turf/simulated/floor/tiled/dark, +/area/ai_monitored/storage/eva) +"byp" = ( +/obj/structure/table/rack{ + dir = 8; + layer = 2.6 + }, +/obj/structure/window/reinforced, +/obj/structure/window/reinforced{ + dir = 4 + }, +/obj/item/weapon/tank/jetpack/carbondioxide, +/obj/item/clothing/shoes/magboots, +/obj/machinery/door/window/westleft{ + name = "E.V.A."; + req_one_access = list(18) + }, +/turf/simulated/floor/tiled/dark, +/area/ai_monitored/storage/eva) +"byq" = ( +/obj/machinery/light, +/turf/simulated/floor/tiled/dark, +/area/ai_monitored/storage/eva) +"byr" = ( +/obj/machinery/light/small, +/obj/machinery/alarm{ + dir = 4; + icon_state = "alarm0"; + pixel_x = -22 + }, +/turf/simulated/floor/tiled/dark, +/area/ai_monitored/storage/eva) +"bys" = ( +/obj/structure/window/reinforced, +/obj/structure/window/reinforced{ + dir = 4 + }, +/obj/item/clothing/mask/breath, +/obj/structure/table/rack{ + dir = 8; + layer = 2.6 + }, +/obj/item/clothing/shoes/magboots, +/obj/item/clothing/suit/space/void/atmos, +/obj/item/clothing/head/helmet/space/void/atmos, +/obj/machinery/door/window/westleft{ + name = "Engineering Hardsuits"; + req_one_access = list(11,24) + }, +/turf/simulated/floor/tiled/dark, +/area/ai_monitored/storage/eva) +"byt" = ( +/obj/structure/window/reinforced, +/obj/structure/window/reinforced{ + dir = 4 + }, +/obj/item/clothing/mask/breath, +/obj/structure/table/rack{ + dir = 8; + layer = 2.6 + }, +/obj/item/clothing/shoes/magboots, +/obj/item/clothing/suit/space/void/security, +/obj/machinery/door/window/westleft{ + name = "Security Hardsuits"; + req_one_access = list(1) + }, +/obj/item/clothing/head/helmet/space/void/security, +/turf/simulated/floor/tiled/dark, +/area/ai_monitored/storage/eva) +"byu" = ( +/obj/structure/window/reinforced, +/obj/structure/window/reinforced{ + dir = 4 + }, +/obj/item/clothing/mask/breath, +/obj/item/clothing/shoes/magboots, +/obj/item/clothing/suit/space/void/medical, +/obj/machinery/door/window/westleft{ + name = "Medical Staff Only"; + req_one_access = list(5) + }, +/obj/structure/table/rack{ + dir = 8; + layer = 2.6 + }, +/obj/item/clothing/head/helmet/space/void/medical, +/turf/simulated/floor/tiled/dark, +/area/ai_monitored/storage/eva) +"byv" = ( +/turf/simulated/floor/tiled/dark, +/area/hallway/primary/seconddeck/fore) +"byw" = ( +/obj/machinery/atmospherics/unary/vent_pump/on{ + dir = 4 + }, +/obj/structure/disposalpipe/segment, +/obj/effect/floor_decal/borderfloor{ + dir = 8 + }, +/obj/effect/floor_decal/corner/blue/border{ + dir = 8 + }, +/turf/simulated/floor/tiled, +/area/hallway/primary/seconddeck/fore) +"byx" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 10 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/turf/simulated/floor/tiled/monotile, +/area/hallway/primary/seconddeck/fore) +"byy" = ( +/obj/structure/closet/jcloset, +/obj/structure/extinguisher_cabinet{ + pixel_x = -28; + pixel_y = 0 + }, +/obj/item/weapon/soap/nanotrasen, +/obj/effect/floor_decal/borderfloor{ + dir = 8 + }, +/obj/effect/floor_decal/corner/purple/border{ + dir = 8 + }, +/obj/machinery/light{ + dir = 8; + icon_state = "tube1"; + pixel_y = 0 + }, +/turf/simulated/floor/tiled, +/area/janitor) +"byz" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/turf/simulated/floor/tiled, +/area/janitor) +"byA" = ( +/obj/structure/disposalpipe/segment{ + dir = 1; + icon_state = "pipe-c" + }, +/obj/machinery/hologram/holopad, +/obj/effect/floor_decal/industrial/outline/grey, +/turf/simulated/floor/tiled/monotile, +/area/janitor) +"byB" = ( +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/turf/simulated/floor/tiled, +/area/janitor) +"byC" = ( +/obj/machinery/disposal, +/obj/structure/disposalpipe/trunk{ + dir = 8 + }, +/obj/effect/floor_decal/borderfloor{ + dir = 4 + }, +/obj/effect/floor_decal/corner/purple/border{ + dir = 4 + }, +/obj/machinery/light{ + dir = 4; + icon_state = "tube1"; + pixel_x = 0 + }, +/turf/simulated/floor/tiled, +/area/janitor) +"byD" = ( +/obj/structure/closet/toolcloset, +/obj/machinery/alarm{ + dir = 4; + icon_state = "alarm0"; + pixel_x = -22 + }, +/obj/effect/floor_decal/borderfloor{ + dir = 8 + }, +/obj/effect/floor_decal/corner/yellow/border{ + dir = 8 + }, +/turf/simulated/floor/tiled, +/area/storage/auxillary) +"byE" = ( +/obj/structure/cable{ + d1 = 1; + d2 = 2; + icon_state = "1-2"; + pixel_y = 0 + }, +/obj/structure/table/steel, +/obj/random/maintenance/engineering, +/obj/random/tech_supply, +/obj/random/tech_supply, +/obj/random/tech_supply, +/obj/random/tech_supply, +/obj/item/stack/cable_coil/random, +/obj/item/stack/cable_coil/random, +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/turf/simulated/floor/tiled, +/area/storage/auxillary) +"byF" = ( +/obj/structure/table/steel, +/obj/item/weapon/paper_bin{ + pixel_x = -3; + pixel_y = 7 + }, +/obj/item/weapon/pen/blue{ + pixel_x = -5; + pixel_y = -1 + }, +/obj/item/weapon/pen/red{ + pixel_x = -1; + pixel_y = 3 + }, +/obj/machinery/camera/network/civilian{ + c_tag = "CIV - Auxiliary Storage"; + dir = 8 + }, +/obj/item/device/radio/intercom{ + dir = 4; + name = "Station Intercom (General)"; + pixel_x = 21 + }, +/obj/effect/floor_decal/borderfloor{ + dir = 4 + }, +/obj/effect/floor_decal/corner/yellow/border{ + dir = 4 + }, +/obj/item/weapon/storage/fancy/markers, +/obj/item/weapon/storage/fancy/markers, +/turf/simulated/floor/tiled, +/area/storage/auxillary) +"byG" = ( +/obj/structure/disposalpipe/segment, +/obj/machinery/atmospherics/pipe/manifold/hidden{ + dir = 8; + icon_state = "map" + }, +/obj/effect/floor_decal/industrial/warning{ + icon_state = "warning"; + dir = 4 + }, +/obj/machinery/meter, +/obj/machinery/light/small{ + dir = 8 + }, +/turf/simulated/floor/plating, +/area/maintenance/research) +"byH" = ( +/obj/machinery/door/firedoor/border_only, +/obj/machinery/door/airlock/maintenance{ + name = "Firefighting Equipment"; + req_access = null; + req_one_access = list(12,47) + }, +/turf/simulated/floor/plating, +/area/maintenance/research) +"byI" = ( +/obj/machinery/portable_atmospherics/canister, +/turf/simulated/floor/plating, +/area/maintenance/research) +"byJ" = ( +/obj/machinery/portable_atmospherics/powered/pump/filled, +/turf/simulated/floor/plating, +/area/maintenance/research) +"byK" = ( +/obj/machinery/atmospherics/portables_connector, +/obj/effect/floor_decal/industrial/outline/yellow, +/obj/machinery/portable_atmospherics/canister/air/airlock, +/turf/simulated/floor/plating, +/area/maintenance/research) +"byL" = ( +/obj/machinery/atmospherics/pipe/simple/hidden, +/turf/simulated/wall/r_wall, +/area/maintenance/research) +"byM" = ( +/obj/machinery/door/airlock/external{ + frequency = 1379; + icon_state = "door_locked"; + id_tag = "fore_starboard_inner"; + locked = 1; + name = "Internal Airlock Access"; + req_access = list(13) + }, +/turf/simulated/floor/plating, +/area/maintenance/research) +"byN" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 6 + }, +/turf/simulated/floor/plating, +/area/maintenance/research) +"byO" = ( +/obj/machinery/atmospherics/pipe/simple/visible/universal{ + dir = 4 + }, +/turf/simulated/floor/plating, +/area/maintenance/research) +"byP" = ( +/obj/machinery/atmospherics/valve/digital/open{ + dir = 4 + }, +/turf/simulated/floor/plating, +/area/maintenance/research) +"byQ" = ( +/obj/machinery/atmospherics/pipe/simple/visible/universal{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/red, +/turf/simulated/floor/plating, +/area/maintenance/research) +"byR" = ( +/obj/machinery/portable_atmospherics/hydroponics, +/obj/machinery/light{ + dir = 1 + }, +/turf/simulated/floor/tiled/white, +/area/rnd/xenobiology/xenoflora) +"byS" = ( +/obj/effect/floor_decal/industrial/warning{ + icon_state = "warning"; + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/turf/simulated/floor/plating, +/area/maintenance/research) +"byT" = ( +/obj/machinery/door/blast/regular{ + density = 0; + icon_state = "pdoor0"; + id = "Biohazard"; + name = "Biohazard Shutter"; + opacity = 0 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 10 + }, +/turf/simulated/floor/plating, +/area/maintenance/research) +"byU" = ( +/obj/item/device/radio/intercom{ + dir = 8; + name = "Station Intercom (General)"; + pixel_x = -21 + }, +/obj/effect/floor_decal/borderfloorwhite{ + dir = 1 + }, +/obj/effect/floor_decal/corner/purple/border{ + dir = 1 + }, +/turf/simulated/floor/tiled/white, +/area/rnd/research) +"byV" = ( +/obj/effect/floor_decal/borderfloorwhite{ + dir = 5 + }, +/obj/effect/floor_decal/corner/purple/border{ + dir = 5 + }, +/turf/simulated/floor/tiled/white, +/area/rnd/research) +"byW" = ( +/turf/simulated/wall, +/area/rnd/toxins_launch) +"byX" = ( +/obj/machinery/door/blast/regular{ + id = "toxinsdriver"; + name = "Toxins Launcher Bay Door" + }, +/turf/simulated/floor/airless, +/area/rnd/toxins_launch) +"byY" = ( +/obj/structure/sign/warning/bomb_range, +/turf/simulated/wall, +/area/rnd/toxins_launch) +"byZ" = ( +/obj/machinery/door/firedoor/border_only, +/obj/effect/wingrille_spawn/reinforced, +/turf/simulated/floor/plating, +/area/rnd/toxins_launch) +"bza" = ( +/obj/machinery/door/firedoor/glass, +/obj/effect/wingrille_spawn/reinforced, +/obj/structure/cable/green{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/turf/simulated/floor/plating, +/area/rnd/toxins_launch) +"bzb" = ( +/obj/machinery/door/airlock/external{ + frequency = 1379; + icon_state = "door_locked"; + id_tag = "toxins_outer"; + locked = 1; + name = "Toxins External Access"; + req_access = list(8,10,13) + }, +/turf/simulated/floor/tiled, +/area/rnd/toxins_launch) +"bzc" = ( +/obj/machinery/status_display{ + pixel_x = 0; + pixel_y = -32 + }, +/obj/machinery/atmospherics/unary/vent_scrubber/on{ + dir = 1 + }, +/obj/structure/dispenser, +/turf/simulated/floor/tiled, +/area/engineering/atmos) +"bzd" = ( +/obj/structure/table/standard, +/obj/machinery/newscaster{ + pixel_y = -30 + }, +/obj/item/clothing/glasses/welding, +/obj/item/clothing/head/welding{ + pixel_x = -5; + pixel_y = 3 + }, +/obj/item/clothing/head/welding{ + pixel_x = -5; + pixel_y = 3 + }, +/turf/simulated/floor/tiled, +/area/engineering/atmos) +"bze" = ( +/obj/structure/table/standard, +/obj/machinery/requests_console{ + department = "Atmospherics"; + departmentType = 3; + name = "Atmos RC"; + pixel_x = 0; + pixel_y = -32 + }, +/obj/item/device/t_scanner, +/obj/item/device/radio/headset/headset_eng, +/obj/item/weapon/cartridge/atmos, +/obj/item/weapon/cartridge/atmos, +/obj/item/clothing/ears/earmuffs, +/obj/item/clothing/ears/earmuffs, +/obj/item/device/pipe_painter, +/obj/machinery/camera/network/engineering{ + c_tag = "ENG - Atmospherics Aft"; + dir = 1 + }, +/obj/machinery/light/spot, +/turf/simulated/floor/tiled, +/area/engineering/atmos) +"bzf" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/yellow, +/obj/machinery/door/firedoor/border_only, +/obj/effect/wingrille_spawn/reinforced, +/turf/simulated/floor, +/area/engineering/atmos) +"bzg" = ( +/obj/machinery/door/firedoor/border_only, +/obj/effect/wingrille_spawn/reinforced, +/turf/simulated/floor, +/area/engineering/atmos) +"bzh" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/red, +/obj/machinery/door/firedoor/glass, +/obj/machinery/door/airlock/glass_atmos{ + name = "Atmospherics"; + req_access = list(24) + }, +/turf/simulated/floor/tiled/steel_grid, +/area/engineering/atmos) +"bzi" = ( +/obj/machinery/door/firedoor/glass, +/obj/machinery/atmospherics/pipe/simple/hidden/red, +/obj/machinery/door/airlock/glass_atmos{ + name = "Atmospherics"; + req_access = list(24) + }, +/obj/structure/disposalpipe/segment, +/turf/simulated/floor/tiled/steel_grid, +/area/engineering/atmos) +"bzj" = ( +/obj/machinery/door/firedoor/border_only, +/obj/machinery/atmospherics/pipe/simple/hidden/cyan, +/obj/effect/wingrille_spawn/reinforced, +/turf/simulated/floor, +/area/engineering/atmos) +"bzk" = ( +/obj/structure/sign/warning/nosmoking_2, +/turf/simulated/wall/r_wall, +/area/engineering/atmos/monitoring) +"bzl" = ( +/obj/machinery/door/firedoor/glass, +/obj/machinery/door/airlock/glass_atmos{ + name = "Atmospherics Monitoring Room"; + req_access = list(24) + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/turf/simulated/floor/tiled/steel_grid, +/area/engineering/atmos/monitoring) +"bzm" = ( +/obj/structure/cable/green{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/obj/machinery/door/airlock/engineering{ + name = "Engineering Substation"; + req_one_access = list(11,24) + }, +/turf/simulated/floor/plating, +/area/maintenance/substation/engineering) +"bzn" = ( +/obj/machinery/light/small{ + dir = 8 + }, +/obj/effect/floor_decal/industrial/warning/corner{ + dir = 1 + }, +/obj/effect/floor_decal/industrial/warning/corner{ + icon_state = "warningcorner"; + dir = 8 + }, +/obj/machinery/atmospherics/pipe/simple/visible/universal, +/turf/simulated/floor, +/area/maintenance/engineering) +"bzo" = ( +/obj/machinery/atmospherics/pipe/simple/visible/universal, +/turf/simulated/floor/plating, +/area/maintenance/engineering) +"bzp" = ( +/obj/machinery/portable_atmospherics/powered/pump/filled, +/turf/simulated/floor/plating, +/area/maintenance/engineering) +"bzq" = ( +/obj/structure/table/steel, +/obj/random/tech_supply, +/obj/random/tech_supply, +/obj/random/tech_supply, +/obj/random/maintenance/engineering, +/obj/random/maintenance/engineering, +/turf/simulated/floor/plating, +/area/maintenance/engineering) +"bzr" = ( +/obj/structure/table/steel, +/obj/random/powercell, +/obj/random/tech_supply, +/obj/random/tech_supply, +/obj/random/tech_supply, +/obj/random/maintenance/engineering, +/obj/random/maintenance/engineering, +/obj/machinery/alarm{ + pixel_y = 22 + }, +/obj/random/tool/powermaint, +/turf/simulated/floor/plating, +/area/maintenance/engineering) +"bzs" = ( +/obj/structure/closet/toolcloset, +/obj/random/tank, +/turf/simulated/floor/plating, +/area/maintenance/engineering) +"bzt" = ( +/obj/structure/closet/toolcloset, +/obj/item/device/flashlight/maglight, +/turf/simulated/floor/plating, +/area/maintenance/engineering) +"bzu" = ( +/turf/simulated/wall/r_wall, +/area/hallway/primary/seconddeck/fore) +"bzv" = ( +/obj/structure/disposalpipe/segment, +/obj/machinery/alarm{ + dir = 4; + icon_state = "alarm0"; + pixel_x = -22 + }, +/obj/effect/floor_decal/borderfloor/corner{ + dir = 1 + }, +/obj/effect/floor_decal/corner/blue/bordercorner{ + dir = 1 + }, +/turf/simulated/floor/tiled, +/area/hallway/primary/seconddeck/fore) +"bzw" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/turf/simulated/floor/tiled/monotile, +/area/hallway/primary/seconddeck/fore) +"bzx" = ( +/obj/effect/floor_decal/borderfloor/corner{ + dir = 4 + }, +/obj/effect/floor_decal/corner/red/bordercorner{ + dir = 4 + }, +/turf/simulated/floor/tiled, +/area/hallway/primary/seconddeck/fore) +"bzy" = ( +/obj/machinery/door/firedoor/glass, +/obj/structure/cable{ + d1 = 1; + d2 = 2; + icon_state = "1-2"; + pixel_y = 0 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/machinery/door/airlock/glass_medical{ + name = "First-Aid Station"; + req_one_access = list(5,12,19) + }, +/turf/simulated/floor/tiled/white, +/area/medical/first_aid_station/seconddeck/fore) +"bzz" = ( +/obj/structure/closet/crate, +/obj/random/maintenance/research, +/obj/random/maintenance/research, +/obj/random/maintenance/clean, +/obj/random/maintenance/clean, +/obj/random/tech_supply, +/obj/random/tech_supply, +/turf/simulated/floor/plating, +/area/maintenance/research) +"bzA" = ( +/obj/structure/closet/jcloset, +/obj/machinery/firealarm{ + dir = 8; + pixel_x = -24 + }, +/obj/item/weapon/soap/nanotrasen, +/obj/effect/floor_decal/borderfloor{ + dir = 8 + }, +/obj/effect/floor_decal/corner/purple/border{ + dir = 8 + }, +/turf/simulated/floor/tiled, +/area/janitor) +"bzB" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 6 + }, +/turf/simulated/floor/tiled, +/area/janitor) +"bzC" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/turf/simulated/floor/tiled, +/area/janitor) +"bzD" = ( +/obj/machinery/atmospherics/unary/vent_pump/on{ + dir = 8 + }, +/turf/simulated/floor/tiled, +/area/janitor) +"bzE" = ( +/obj/effect/floor_decal/borderfloor{ + dir = 4 + }, +/obj/effect/floor_decal/corner/purple/border{ + dir = 4 + }, +/obj/structure/sink{ + dir = 4; + icon_state = "sink"; + pixel_x = 11; + pixel_y = 0 + }, +/turf/simulated/floor/tiled, +/area/janitor) +"bzF" = ( +/obj/structure/reagent_dispensers/watertank, +/obj/machinery/light{ + dir = 8 + }, +/obj/effect/floor_decal/borderfloor{ + dir = 8 + }, +/obj/effect/floor_decal/corner/yellow/border{ + dir = 8 + }, +/turf/simulated/floor/tiled, +/area/storage/auxillary) +"bzG" = ( +/obj/machinery/atmospherics/unary/vent_scrubber/on{ + dir = 4 + }, +/turf/simulated/floor/tiled, +/area/storage/auxillary) +"bzH" = ( +/obj/structure/cable{ + d1 = 1; + d2 = 2; + icon_state = "1-2"; + pixel_y = 0 + }, +/obj/structure/table/steel, +/obj/random/maintenance/engineering, +/obj/random/tech_supply, +/obj/random/tech_supply, +/obj/random/tech_supply, +/obj/random/tech_supply, +/obj/machinery/cell_charger, +/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/turf/simulated/floor/tiled, +/area/storage/auxillary) +"bzI" = ( +/obj/structure/table/steel, +/obj/item/weapon/hand_labeler, +/obj/item/weapon/hand_labeler, +/obj/effect/floor_decal/borderfloor{ + dir = 4 + }, +/obj/effect/floor_decal/corner/yellow/border{ + dir = 4 + }, +/turf/simulated/floor/tiled, +/area/storage/auxillary) +"bzJ" = ( +/obj/structure/disposalpipe/segment, +/obj/machinery/atmospherics/pipe/simple/hidden{ + dir = 5; + icon_state = "intact" + }, +/obj/effect/floor_decal/industrial/warning/corner{ + dir = 4 + }, +/turf/simulated/floor/plating, +/area/maintenance/research) +"bzK" = ( +/obj/machinery/atmospherics/binary/pump/on{ + dir = 8; + target_pressure = 200 + }, +/obj/effect/floor_decal/industrial/warning{ + icon_state = "warning"; + dir = 1 + }, +/obj/structure/table/rack{ + dir = 8; + layer = 2.6 + }, +/obj/random/maintenance/research, +/obj/random/maintenance/research, +/obj/random/maintenance/research, +/obj/random/maintenance/research, +/turf/simulated/floor/plating, +/area/maintenance/research) +"bzL" = ( +/obj/effect/floor_decal/industrial/warning/corner{ + icon_state = "warningcorner"; + dir = 1 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/universal{ + dir = 4 + }, +/obj/effect/wingrille_spawn/reinforced, +/turf/simulated/floor/plating, +/area/maintenance/research) +"bzM" = ( +/obj/machinery/atmospherics/pipe/manifold/hidden/supply{ + dir = 1 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 6 + }, +/turf/simulated/floor/plating, +/area/maintenance/research) +"bzN" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, +/turf/simulated/floor/plating, +/area/maintenance/research) +"bzO" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, +/obj/machinery/door/firedoor/border_only, +/obj/machinery/door/airlock/maintenance{ + req_access = null; + req_one_access = list(12,47) + }, +/turf/simulated/floor/plating, +/area/maintenance/research) +"bzP" = ( +/obj/effect/floor_decal/industrial/warning/corner, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, +/turf/simulated/floor/plating, +/area/maintenance/research) +"bzQ" = ( +/obj/effect/floor_decal/industrial/warning, +/obj/machinery/atmospherics/pipe/manifold/hidden{ + dir = 8; + icon_state = "map" + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, +/turf/simulated/floor/plating, +/area/maintenance/research) +"bzR" = ( +/obj/effect/floor_decal/industrial/warning, +/obj/machinery/atmospherics/pipe/manifold/hidden, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, +/turf/simulated/floor/plating, +/area/maintenance/research) +"bzS" = ( +/obj/machinery/atmospherics/pipe/manifold/hidden, +/obj/effect/floor_decal/industrial/warning, +/obj/effect/floor_decal/industrial/warning/corner{ + dir = 4 + }, +/obj/machinery/light/small{ + dir = 1 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, +/turf/simulated/floor/plating, +/area/maintenance/research) +"bzT" = ( +/obj/effect/floor_decal/industrial/warning, +/obj/machinery/atmospherics/pipe/manifold/hidden/supply{ + dir = 1 + }, +/obj/machinery/atmospherics/pipe/simple/hidden{ + dir = 4 + }, +/obj/machinery/access_button{ + command = "cycle_interior"; + frequency = 1379; + master_tag = "fore_starboard_airlock"; + name = "interior access button"; + pixel_x = -26; + pixel_y = 25; + req_one_access = list(13) + }, +/obj/effect/floor_decal/industrial/warning{ + dir = 1 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, +/turf/simulated/floor/plating, +/area/maintenance/research) +"bzU" = ( +/obj/effect/floor_decal/industrial/warning, +/obj/machinery/atmospherics/pipe/simple/hidden{ + dir = 4 + }, +/obj/effect/floor_decal/industrial/warning{ + dir = 1 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, +/turf/simulated/floor/plating, +/area/maintenance/research) +"bzV" = ( +/obj/effect/floor_decal/industrial/warning/corner{ + dir = 8 + }, +/obj/machinery/atmospherics/pipe/simple/hidden{ + dir = 9; + icon_state = "intact" + }, +/obj/structure/sign/warning/airlock{ + pixel_y = 32 + }, +/obj/effect/floor_decal/industrial/warning/corner{ + icon_state = "warningcorner"; + dir = 1 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, +/turf/simulated/floor/plating, +/area/maintenance/research) +"bzW" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 9 + }, +/turf/simulated/floor/plating, +/area/maintenance/research) +"bzX" = ( +/obj/machinery/atmospherics/tvalve/mirrored{ + dir = 4 + }, +/obj/machinery/alarm{ + dir = 1; + icon_state = "alarm0"; + pixel_y = -22 + }, +/turf/simulated/floor/plating, +/area/maintenance/research) +"bzY" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, +/obj/machinery/light/small, +/obj/effect/floor_decal/industrial/warning{ + icon_state = "warning"; + dir = 4 + }, +/obj/machinery/meter, +/turf/simulated/floor/plating, +/area/maintenance/research) +"bzZ" = ( +/obj/machinery/door/blast/regular{ + density = 0; + icon_state = "pdoor0"; + id = "Biohazard"; + name = "Biohazard Shutter"; + opacity = 0 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 5 + }, +/turf/simulated/floor/plating, +/area/maintenance/research) +"bAa" = ( +/obj/machinery/door/firedoor/border_only, +/obj/machinery/door/airlock/maintenance{ + name = "Research Maintenance Access"; + req_one_access = list(47) + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, +/turf/simulated/floor/plating, +/area/rnd/research) +"bAb" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, +/obj/effect/floor_decal/steeldecal/steel_decals4{ + dir = 1 + }, +/obj/effect/floor_decal/steeldecal/steel_decals4{ + dir = 6 + }, +/turf/simulated/floor/tiled/white, +/area/rnd/research) +"bAc" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 10 + }, +/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{ + dir = 1 + }, +/obj/effect/floor_decal/borderfloorwhite/corner{ + dir = 4 + }, +/obj/effect/floor_decal/corner/purple/bordercorner{ + dir = 4 + }, +/turf/simulated/floor/tiled/white, +/area/rnd/research) +"bAd" = ( +/obj/machinery/atmospherics/unary/vent_scrubber/on{ + dir = 8 + }, +/obj/effect/floor_decal/borderfloorwhite{ + dir = 5 + }, +/obj/effect/floor_decal/corner/purple/border{ + dir = 5 + }, +/turf/simulated/floor/tiled/white, +/area/rnd/research) +"bAe" = ( +/obj/effect/floor_decal/industrial/warning{ + icon_state = "warning"; + dir = 1 + }, +/obj/structure/sign/warning/vacuum{ + pixel_x = -32 + }, +/turf/simulated/floor/airless, +/area/rnd/toxins_launch) +"bAf" = ( +/obj/machinery/computer/security/telescreen{ + desc = "Used for watching the test chamber."; + layer = 4; + name = "Test Chamber Telescreen"; + network = list("Toxins Test Area"); + pixel_x = 0; + pixel_y = 32 + }, +/obj/machinery/atmospherics/unary/vent_pump/on{ + dir = 4 + }, +/obj/structure/bed/chair{ + dir = 1 + }, +/obj/effect/floor_decal/industrial/warning/corner{ + icon_state = "warningcorner"; + dir = 8 + }, +/obj/machinery/light{ + dir = 8 + }, +/obj/effect/floor_decal/borderfloor{ + dir = 1 + }, +/obj/effect/floor_decal/corner/purple/border{ + dir = 1 + }, +/turf/simulated/floor/tiled, +/area/rnd/toxins_launch) +"bAg" = ( +/obj/machinery/computer/security/telescreen{ + desc = "Used for watching the test chamber."; + layer = 4; + name = "Test Chamber Telescreen"; + network = list("Toxins Test Area"); + pixel_x = 0; + pixel_y = 32 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 6 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 10 + }, +/obj/structure/bed/chair{ + dir = 1 + }, +/obj/structure/cable/green{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/obj/effect/floor_decal/borderfloor{ + dir = 1 + }, +/obj/effect/floor_decal/corner/purple/border{ + dir = 1 + }, +/turf/simulated/floor/tiled, +/area/rnd/toxins_launch) +"bAh" = ( +/obj/machinery/computer/security/telescreen{ + desc = "Used for watching the test chamber."; + layer = 4; + name = "Test Chamber Telescreen"; + network = list("Toxins Test Area"); + pixel_x = 0; + pixel_y = 32 + }, +/obj/machinery/atmospherics/unary/vent_scrubber/on{ + dir = 8 + }, +/obj/structure/bed/chair{ + dir = 1 + }, +/obj/machinery/button/remote/driver{ + dir = 2; + id = "toxinsdriver"; + pixel_x = 24; + pixel_y = 0 + }, +/obj/effect/floor_decal/borderfloor{ + dir = 1 + }, +/obj/effect/floor_decal/corner/purple/border{ + dir = 1 + }, +/turf/simulated/floor/tiled, +/area/rnd/toxins_launch) +"bAi" = ( +/obj/machinery/atmospherics/unary/vent_pump/high_volume{ + dir = 2; + frequency = 1379; + id_tag = "toxins_pump" + }, +/obj/machinery/embedded_controller/radio/airlock/airlock_controller{ + frequency = 1379; + id_tag = "toxins_airlock"; + pixel_x = -25; + pixel_y = 0; + tag_airpump = "toxins_pump"; + tag_chamber_sensor = "toxins_sensor"; + tag_exterior_door = "toxins_outer"; + tag_interior_door = "toxins_inner" + }, +/obj/machinery/light/small{ + dir = 4 + }, +/obj/machinery/airlock_sensor{ + frequency = 1379; + id_tag = "toxins_sensor"; + pixel_x = 25; + pixel_y = 0 + }, +/turf/simulated/floor/tiled, +/area/rnd/toxins_launch) +"bAj" = ( +/turf/space, +/area/skipjack_station/seconddeck) +"bAk" = ( +/turf/simulated/wall/r_wall, +/area/engineering/storage) +"bAl" = ( +/obj/machinery/atmospherics/portables_connector{ + dir = 4 + }, +/obj/machinery/status_display{ + density = 0; + layer = 4; + pixel_x = -32; + pixel_y = 0 + }, +/obj/effect/floor_decal/borderfloor{ + dir = 8 + }, +/obj/effect/floor_decal/corner/yellow/border{ + dir = 8 + }, +/turf/simulated/floor/tiled, +/area/engineering/hallway/atmos_hallway) +"bAm" = ( +/obj/machinery/atmospherics/pipe/manifold/hidden/yellow{ + dir = 4 + }, +/turf/simulated/floor/tiled, +/area/engineering/hallway/atmos_hallway) +"bAn" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 6 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 6 + }, +/turf/simulated/floor/tiled, +/area/engineering/hallway/atmos_hallway) +"bAo" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/red, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, +/obj/effect/floor_decal/steeldecal/steel_decals4{ + dir = 4 + }, +/obj/effect/floor_decal/steeldecal/steel_decals4{ + dir = 9 + }, +/turf/simulated/floor/tiled, +/area/engineering/hallway/atmos_hallway) +"bAp" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, +/obj/machinery/light{ + dir = 1 + }, +/turf/simulated/floor/tiled, +/area/engineering/hallway/atmos_hallway) +"bAq" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/red, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, +/obj/structure/disposalpipe/segment, +/obj/effect/floor_decal/steeldecal/steel_decals4{ + dir = 4 + }, +/obj/effect/floor_decal/steeldecal/steel_decals4{ + dir = 9 + }, +/turf/simulated/floor/tiled, +/area/engineering/hallway/atmos_hallway) +"bAr" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/cyan{ + dir = 5; + icon_state = "intact" + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, +/turf/simulated/floor/tiled, +/area/engineering/hallway/atmos_hallway) +"bAs" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/cyan{ + dir = 4; + icon_state = "intact" + }, +/obj/machinery/door/firedoor/border_only, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, +/turf/simulated/floor/tiled, +/area/engineering/hallway/atmos_hallway) +"bAt" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/cyan{ + dir = 4; + icon_state = "intact" + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, +/turf/simulated/floor/tiled, +/area/engineering/hallway/atmos_hallway) +"bAu" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/cyan{ + dir = 10; + icon_state = "intact" + }, +/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers, +/obj/machinery/atmospherics/pipe/manifold/hidden/supply, +/obj/effect/floor_decal/steeldecal/steel_decals4{ + dir = 4 + }, +/obj/effect/floor_decal/steeldecal/steel_decals4{ + dir = 9 + }, +/turf/simulated/floor/tiled, +/area/engineering/hallway/atmos_hallway) +"bAv" = ( +/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{ + dir = 1 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/turf/simulated/floor/tiled, +/area/engineering/hallway/atmos_hallway) +"bAw" = ( +/obj/item/device/radio/intercom{ + dir = 1; + name = "Station Intercom (General)"; + pixel_y = 21 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, +/turf/simulated/floor/tiled, +/area/engineering/hallway/atmos_hallway) +"bAx" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, +/obj/structure/cable/green{ + d2 = 2; + icon_state = "0-2" + }, +/obj/machinery/power/apc{ + dir = 1; + name = "north bump"; + pixel_x = 0; + pixel_y = 24 + }, +/obj/machinery/light_switch{ + pixel_x = 11; + pixel_y = 24 + }, +/turf/simulated/floor/tiled, +/area/engineering/hallway/atmos_hallway) +"bAy" = ( +/obj/machinery/atmospherics/pipe/manifold/hidden/supply{ + dir = 1 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, +/obj/machinery/alarm{ + pixel_y = 22 + }, +/turf/simulated/floor/tiled, +/area/engineering/hallway/atmos_hallway) +"bAz" = ( +/obj/structure/extinguisher_cabinet{ + pixel_y = 30 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, +/obj/effect/floor_decal/industrial/warning/corner{ + icon_state = "warningcorner"; + dir = 4 + }, +/turf/simulated/floor/tiled, +/area/engineering/hallway/atmos_hallway) +"bAA" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 10 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 10 + }, +/obj/structure/cable/green{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/obj/effect/floor_decal/industrial/warning{ + icon_state = "warning"; + dir = 1 + }, +/turf/simulated/floor/tiled, +/area/engineering/hallway/atmos_hallway) +"bAB" = ( +/obj/structure/sign/warning/high_voltage{ + pixel_y = 32 + }, +/obj/effect/floor_decal/industrial/warning/corner{ + dir = 1 + }, +/obj/effect/floor_decal/steeldecal/steel_decals4{ + dir = 10 + }, +/obj/effect/floor_decal/steeldecal/steel_decals4, +/turf/simulated/floor/tiled, +/area/engineering/hallway/atmos_hallway) +"bAC" = ( +/obj/machinery/door/firedoor/border_only, +/obj/machinery/door/airlock/maintenance{ + req_one_access = list(11,24) + }, +/turf/simulated/floor/plating, +/area/engineering/hallway/atmos_hallway) +"bAD" = ( +/obj/effect/floor_decal/industrial/warning{ + icon_state = "warning"; + dir = 8 + }, +/obj/machinery/atmospherics/valve/digital/open, +/turf/simulated/floor/plating, +/area/maintenance/engineering) +"bAE" = ( +/obj/machinery/atmospherics/valve/digital/open, +/turf/simulated/floor/plating, +/area/maintenance/engineering) +"bAF" = ( +/obj/machinery/portable_atmospherics/powered/scrubber, +/obj/machinery/alarm{ + dir = 8; + pixel_x = 22; + pixel_y = 0 + }, +/turf/simulated/floor/plating, +/area/maintenance/engineering) +"bAG" = ( +/obj/machinery/door/firedoor/border_only, +/obj/machinery/door/airlock/maintenance{ + req_access = list(12) + }, +/turf/simulated/floor/plating, +/area/maintenance/engineering) +"bAH" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 6 + }, +/obj/structure/cable{ + d1 = 2; + d2 = 4; + icon_state = "2-4" + }, +/obj/machinery/meter, +/turf/simulated/floor/plating, +/area/maintenance/engineering) +"bAI" = ( +/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers, +/obj/structure/cable{ + d1 = 1; + d2 = 8; + icon_state = "1-8" + }, +/obj/structure/cable{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/obj/machinery/atmospherics/pipe/manifold/hidden/supply{ + dir = 8 + }, +/turf/simulated/floor/plating, +/area/maintenance/engineering) +"bAJ" = ( +/obj/structure/cable{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, +/obj/structure/cable{ + d1 = 2; + d2 = 8; + icon_state = "2-8" + }, +/turf/simulated/floor/plating, +/area/maintenance/engineering) +"bAK" = ( +/obj/structure/cable{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, +/obj/effect/floor_decal/industrial/warning{ + icon_state = "warning"; + dir = 4 + }, +/turf/simulated/floor/plating, +/area/maintenance/engineering) +"bAL" = ( +/obj/structure/cable{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, +/obj/machinery/door/firedoor/border_only, +/turf/simulated/floor/plating, +/area/maintenance/engineering) +"bAM" = ( +/obj/structure/cable{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, +/obj/effect/floor_decal/industrial/warning{ + dir = 8 + }, +/turf/simulated/floor/plating, +/area/maintenance/engineering) +"bAN" = ( +/obj/structure/cable{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, +/obj/item/inflatable/door/torn, +/turf/simulated/floor/plating, +/area/maintenance/engineering) +"bAO" = ( +/obj/structure/cable{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, +/obj/machinery/alarm{ + pixel_y = 22 + }, +/turf/simulated/floor/plating, +/area/maintenance/engineering) +"bAP" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 10 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 10 + }, +/obj/structure/cable{ + d1 = 2; + d2 = 8; + icon_state = "2-8" + }, +/turf/simulated/floor/plating, +/area/maintenance/engineering) +"bAQ" = ( +/obj/random/obstruction, +/turf/simulated/floor/plating, +/area/maintenance/engineering) +"bAR" = ( +/obj/structure/disposalpipe/segment, +/obj/effect/floor_decal/steeldecal/steel_decals4{ + dir = 8 + }, +/obj/effect/floor_decal/steeldecal/steel_decals4{ + dir = 5 + }, +/turf/simulated/floor/tiled, +/area/hallway/primary/seconddeck/fore) +"bAS" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/turf/simulated/floor/tiled, +/area/hallway/primary/seconddeck/fore) +"bAT" = ( +/obj/machinery/firealarm{ + dir = 4; + pixel_x = 24 + }, +/obj/effect/floor_decal/steeldecal/steel_decals4{ + dir = 8 + }, +/obj/effect/floor_decal/steeldecal/steel_decals4{ + dir = 5 + }, +/turf/simulated/floor/tiled, +/area/hallway/primary/seconddeck/fore) +"bAU" = ( +/obj/random/obstruction, +/turf/simulated/floor/plating, +/area/maintenance/research) +"bAV" = ( +/obj/effect/floor_decal/industrial/hatch/yellow, +/obj/machinery/door/window/eastright{ + name = "Janitorial Delivery"; + req_one_access = list(26) + }, +/obj/structure/window/reinforced{ + dir = 1; + health = 1e+006 + }, +/turf/simulated/floor/tiled, +/area/janitor) +"bAW" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/turf/simulated/floor/tiled, +/area/janitor) +"bAX" = ( +/obj/effect/floor_decal/borderfloor/corner, +/obj/effect/floor_decal/corner/purple/bordercorner, +/obj/structure/janitorialcart, +/turf/simulated/floor/tiled, +/area/janitor) +"bAY" = ( +/obj/structure/mopbucket, +/obj/item/weapon/mop, +/obj/item/weapon/reagent_containers/glass/bucket, +/obj/effect/floor_decal/borderfloor, +/obj/effect/floor_decal/corner/purple/border, +/turf/simulated/floor/tiled, +/area/janitor) +"bAZ" = ( +/obj/structure/mopbucket, +/obj/item/weapon/mop, +/obj/item/weapon/reagent_containers/glass/bucket, +/obj/item/device/radio/intercom{ + dir = 4; + name = "Station Intercom (General)"; + pixel_x = 21 + }, +/obj/effect/floor_decal/borderfloor{ + dir = 6 + }, +/obj/effect/floor_decal/corner/purple/border{ + dir = 6 + }, +/turf/simulated/floor/tiled, +/area/janitor) +"bBa" = ( +/obj/structure/reagent_dispensers/fueltank, +/obj/effect/floor_decal/borderfloor{ + dir = 10 + }, +/obj/effect/floor_decal/corner/yellow/border{ + dir = 10 + }, +/turf/simulated/floor/tiled, +/area/storage/auxillary) +"bBb" = ( +/obj/effect/floor_decal/borderfloor/corner{ + dir = 8 + }, +/obj/effect/floor_decal/corner/yellow/bordercorner{ + dir = 8 + }, +/turf/simulated/floor/tiled, +/area/storage/auxillary) +"bBc" = ( +/obj/structure/cable{ + d1 = 1; + d2 = 2; + icon_state = "1-2"; + pixel_y = 0 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/turf/simulated/floor/tiled, +/area/storage/auxillary) +"bBd" = ( +/obj/effect/floor_decal/borderfloor/corner, +/obj/effect/floor_decal/corner/yellow/bordercorner, +/turf/simulated/floor/tiled, +/area/storage/auxillary) +"bBe" = ( +/obj/structure/table/steel, +/obj/item/device/tape/random, +/obj/item/device/tape/random, +/obj/item/device/taperecorder, +/obj/item/device/taperecorder, +/obj/structure/extinguisher_cabinet{ + pixel_x = 28; + pixel_y = 0 + }, +/obj/effect/floor_decal/borderfloor{ + dir = 6 + }, +/obj/effect/floor_decal/corner/yellow/border{ + dir = 6 + }, +/turf/simulated/floor/tiled, +/area/storage/auxillary) +"bBf" = ( +/obj/structure/disposalpipe/segment, +/turf/simulated/floor/plating, +/area/maintenance/research) +"bBg" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 6 + }, +/obj/machinery/meter, +/turf/simulated/floor/plating, +/area/maintenance/research) +"bBh" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 9 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/turf/simulated/floor/plating, +/area/maintenance/research) +"bBi" = ( +/obj/machinery/portable_atmospherics/powered/scrubber, +/turf/simulated/floor/plating, +/area/maintenance/research) +"bBj" = ( +/obj/structure/closet/crate/plastic, +/obj/random/maintenance/research, +/obj/random/maintenance/research, +/obj/random/medical, +/obj/random/medical/lite, +/obj/random/bomb_supply, +/obj/random/bomb_supply, +/turf/simulated/floor/plating, +/area/maintenance/research) +"bBk" = ( +/obj/structure/closet, +/obj/item/device/flashlight, +/obj/item/device/flashlight, +/obj/random/maintenance/security, +/obj/random/maintenance/clean, +/obj/random/maintenance/clean, +/obj/random/maintenance/research, +/turf/simulated/floor/plating, +/area/maintenance/research) +"bBl" = ( +/turf/simulated/wall/r_wall, +/area/crew_quarters/heads/sc/hor) +"bBm" = ( +/obj/machinery/door/blast/regular{ + density = 0; + icon_state = "pdoor0"; + id = "Biohazard"; + name = "Biohazard Shutter"; + opacity = 0 + }, +/obj/machinery/atmospherics/pipe/simple/hidden{ + dir = 5; + icon_state = "intact" + }, +/obj/machinery/meter, +/turf/simulated/floor/plating, +/area/maintenance/research) +"bBn" = ( +/obj/machinery/door/blast/regular{ + density = 0; + icon_state = "pdoor0"; + id = "Biohazard"; + name = "Biohazard Shutter"; + opacity = 0 + }, +/obj/machinery/atmospherics/binary/pump/on{ + dir = 8; + target_pressure = 200 + }, +/turf/simulated/floor/plating, +/area/maintenance/research) +"bBo" = ( +/obj/machinery/door/blast/regular{ + density = 0; + icon_state = "pdoor0"; + id = "Biohazard"; + name = "Biohazard Shutter"; + opacity = 0 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/universal{ + dir = 4 + }, +/turf/simulated/floor/plating, +/area/maintenance/research) +"bBp" = ( +/obj/machinery/door/blast/regular{ + density = 0; + icon_state = "pdoor0"; + id = "Biohazard"; + name = "Biohazard Shutter"; + opacity = 0 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 9 + }, +/turf/simulated/floor/plating, +/area/maintenance/research) +"bBq" = ( +/obj/machinery/door/blast/regular{ + density = 0; + icon_state = "pdoor0"; + id = "Biohazard"; + name = "Biohazard Shutter"; + opacity = 0 + }, +/turf/simulated/floor/plating, +/area/maintenance/research) +"bBr" = ( +/turf/simulated/wall, +/area/rnd/research_lockerroom) +"bBs" = ( +/turf/simulated/wall, +/area/rnd/research_restroom_sc) +"bBt" = ( +/obj/structure/extinguisher_cabinet{ + pixel_x = -28; + pixel_y = 0 + }, +/obj/effect/floor_decal/borderfloorwhite/corner{ + dir = 8 + }, +/obj/effect/floor_decal/corner/purple/bordercorner{ + dir = 8 + }, +/turf/simulated/floor/tiled/white, +/area/rnd/research) +"bBu" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/turf/simulated/floor/tiled/white, +/area/rnd/research) +"bBv" = ( +/obj/machinery/light{ + dir = 4; + icon_state = "tube1"; + pixel_x = 0 + }, +/obj/effect/floor_decal/borderfloorwhite{ + dir = 4 + }, +/obj/effect/floor_decal/corner/purple/border{ + dir = 4 + }, +/turf/simulated/floor/tiled/white, +/area/rnd/research) +"bBw" = ( +/turf/simulated/wall/r_wall, +/area/rnd/storage) +"bBx" = ( +/turf/simulated/wall, +/area/rnd/storage) +"bBy" = ( +/obj/effect/floor_decal/industrial/warning, +/obj/machinery/airlock_sensor{ + pixel_x = -25; + pixel_y = 0 + }, +/obj/machinery/atmospherics/unary/vent_pump/on{ + dir = 4 + }, +/turf/simulated/floor/airless, +/area/rnd/toxins_launch) +"bBz" = ( +/obj/machinery/door/firedoor/border_only, +/obj/machinery/door/window/westleft{ + name = "Toxins Launcher"; + req_access = list(8) + }, +/obj/machinery/door/window/eastleft{ + name = "Toxins Launcher"; + req_access = list(8) + }, +/obj/effect/floor_decal/industrial/warning/full, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/turf/simulated/floor/plating, +/area/rnd/toxins_launch) +"bBA" = ( +/obj/effect/floor_decal/industrial/warning{ + dir = 8 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/turf/simulated/floor/tiled, +/area/rnd/toxins_launch) +"bBB" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/obj/machinery/hologram/holopad, +/obj/machinery/atmospherics/pipe/manifold/hidden/supply{ + dir = 4 + }, +/obj/structure/cable/green{ + d1 = 2; + d2 = 4; + icon_state = "2-4" + }, +/obj/effect/floor_decal/industrial/outline/grey, +/obj/structure/cable/green{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/turf/simulated/floor/tiled, +/area/rnd/toxins_launch) +"bBC" = ( +/obj/machinery/power/apc{ + dir = 4; + name = "east bump"; + pixel_x = 24 + }, +/obj/machinery/light_switch{ + pixel_x = 36; + pixel_y = 0 + }, +/obj/structure/cable/green{ + d2 = 8; + icon_state = "0-8" + }, +/turf/simulated/floor/tiled, +/area/rnd/toxins_launch) +"bBD" = ( +/obj/machinery/atmospherics/pipe/simple/hidden, +/obj/machinery/door/airlock/external{ + frequency = 1379; + icon_state = "door_locked"; + id_tag = "toxins_inner"; + locked = 1; + name = "Toxins External Access" + }, +/turf/simulated/floor/tiled, +/area/rnd/toxins_launch) +"bBE" = ( +/turf/simulated/wall/r_wall, +/area/engineering/drone_fabrication) +"bBF" = ( +/obj/machinery/light/small{ + dir = 8 + }, +/obj/effect/floor_decal/industrial/warning, +/turf/simulated/floor/airless, +/area/engineering/drone_fabrication) +"bBG" = ( +/obj/effect/floor_decal/industrial/warning, +/turf/simulated/floor/airless, +/area/engineering/drone_fabrication) +"bBH" = ( +/obj/machinery/access_button{ + command = "cycle_exterior"; + frequency = 1379; + master_tag = "eng_port_airlock"; + name = "exterior access button"; + pixel_x = 0; + pixel_y = -25; + req_one_access = list(11,24) + }, +/obj/effect/floor_decal/industrial/warning/corner{ + dir = 8 + }, +/obj/structure/sign/warning/engineering_access{ + pixel_x = 32 + }, +/turf/simulated/floor/airless, +/area/engineering/drone_fabrication) +"bBI" = ( +/obj/machinery/shield_gen/external, +/obj/effect/floor_decal/industrial/outline/yellow, +/turf/simulated/floor, +/area/engineering/storage) +"bBJ" = ( +/obj/machinery/shield_gen/external, +/obj/effect/floor_decal/industrial/outline/yellow, +/obj/machinery/light{ + dir = 1 + }, +/turf/simulated/floor, +/area/engineering/storage) +"bBK" = ( +/obj/machinery/shield_gen, +/obj/effect/floor_decal/industrial/outline/yellow, +/turf/simulated/floor, +/area/engineering/storage) +"bBL" = ( +/obj/machinery/shieldwallgen, +/obj/effect/floor_decal/industrial/outline/yellow, +/obj/machinery/camera/network/engineering{ + c_tag = "ENG - Hard Storage"; + dir = 2 + }, +/turf/simulated/floor, +/area/engineering/storage) +"bBM" = ( +/obj/machinery/shieldgen, +/obj/effect/floor_decal/industrial/outline/yellow, +/turf/simulated/floor, +/area/engineering/storage) +"bBN" = ( +/obj/machinery/portable_atmospherics/canister/nitrogen, +/obj/effect/floor_decal/industrial/outline/yellow, +/obj/machinery/light{ + dir = 1 + }, +/turf/simulated/floor, +/area/engineering/storage) +"bBO" = ( +/obj/machinery/atmospherics/portables_connector{ + dir = 4 + }, +/obj/machinery/newscaster{ + pixel_x = -30; + pixel_y = 0 + }, +/obj/effect/floor_decal/borderfloor{ + dir = 8 + }, +/obj/effect/floor_decal/corner/yellow/border{ + dir = 8 + }, +/obj/effect/floor_decal/borderfloor/corner2{ + dir = 10 + }, +/obj/effect/floor_decal/corner/yellow/bordercorner2{ + dir = 10 + }, +/turf/simulated/floor/tiled, +/area/engineering/hallway/atmos_hallway) +"bBP" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/yellow{ + dir = 9; + icon_state = "intact" + }, +/turf/simulated/floor/tiled, +/area/engineering/hallway/atmos_hallway) +"bBQ" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/turf/simulated/floor/tiled, +/area/engineering/hallway/atmos_hallway) +"bBR" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/red, +/obj/structure/cable/green{ + d1 = 2; + d2 = 4; + icon_state = "2-4" + }, +/obj/structure/disposalpipe/segment{ + dir = 4; + icon_state = "pipe-c" + }, +/turf/simulated/floor/tiled, +/area/engineering/hallway/atmos_hallway) +"bBS" = ( +/obj/structure/cable/green{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/turf/simulated/floor/tiled, +/area/engineering/hallway/atmos_hallway) +"bBT" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/red{ + dir = 5; + icon_state = "intact" + }, +/obj/structure/cable/green{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/obj/structure/disposalpipe/sortjunction/flipped{ + dir = 4; + name = "Atmospherics"; + sortType = "Atmospherics" + }, +/turf/simulated/floor/tiled, +/area/engineering/hallway/atmos_hallway) +"bBU" = ( +/obj/effect/floor_decal/corner/white/diagonal{ + icon_state = "corner_white_diagonal"; + dir = 4 + }, +/obj/effect/floor_decal/corner/red, +/obj/machinery/atmospherics/unary/vent_pump{ + dir = 4; + external_pressure_bound = 0; + external_pressure_bound_default = 0; + frequency = 1441; + icon_state = "map_vent_in"; + id_tag = "n2o_out"; + initialize_directions = 1; + internal_pressure_bound = 4000; + internal_pressure_bound_default = 4000; + pressure_checks = 2; + pressure_checks_default = 2; + pump_direction = 0; + use_power = 1 + }, +/turf/simulated/floor/reinforced/n20, +/area/engineering/atmos) +"bBV" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/red{ + icon_state = "intact"; + dir = 4 + }, +/obj/machinery/door/firedoor/border_only, +/obj/structure/cable/green{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/turf/simulated/floor/tiled, +/area/engineering/hallway/atmos_hallway) +"bBW" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/red{ + dir = 10; + icon_state = "intact" + }, +/obj/structure/cable/green{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/obj/structure/disposalpipe/segment{ + dir = 2; + icon_state = "pipe-c" + }, +/turf/simulated/floor/tiled, +/area/engineering/hallway/atmos_hallway) +"bBX" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/cyan, +/obj/structure/cable/green{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/obj/effect/floor_decal/steeldecal/steel_decals4{ + dir = 8 + }, +/obj/effect/floor_decal/steeldecal/steel_decals4{ + dir = 5 + }, +/turf/simulated/floor/tiled, +/area/engineering/hallway/atmos_hallway) +"bBY" = ( +/obj/machinery/atmospherics/unary/vent_scrubber/on{ + dir = 1 + }, +/obj/structure/cable/green{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/turf/simulated/floor/tiled, +/area/engineering/hallway/atmos_hallway) +"bBZ" = ( +/obj/structure/cable/green{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/obj/machinery/light, +/turf/simulated/floor/tiled, +/area/engineering/hallway/atmos_hallway) +"bCa" = ( +/obj/structure/cable/green{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/obj/structure/cable/green{ + d1 = 1; + d2 = 4; + icon_state = "1-4" + }, +/obj/machinery/camera/network/engineering{ + c_tag = "ENG - Atmospherics Hallway 1"; + dir = 1 + }, +/obj/machinery/firealarm{ + dir = 1; + pixel_x = 0; + pixel_y = -24 + }, +/turf/simulated/floor/tiled, +/area/engineering/hallway/atmos_hallway) +"bCb" = ( +/obj/machinery/status_display{ + pixel_x = 0; + pixel_y = -32 + }, +/obj/machinery/atmospherics/unary/vent_pump/on{ + dir = 1 + }, +/obj/structure/cable/green{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/turf/simulated/floor/tiled, +/area/engineering/hallway/atmos_hallway) +"bCc" = ( +/obj/structure/cable/green{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/turf/simulated/floor/tiled, +/area/engineering/hallway/atmos_hallway) +"bCd" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/obj/structure/cable/green{ + d1 = 1; + d2 = 8; + icon_state = "1-8" + }, +/obj/structure/cable/green{ + d1 = 1; + d2 = 4; + icon_state = "1-4" + }, +/obj/effect/floor_decal/steeldecal/steel_decals4{ + dir = 8 + }, +/obj/effect/floor_decal/steeldecal/steel_decals4{ + dir = 5 + }, +/turf/simulated/floor/tiled, +/area/engineering/hallway/atmos_hallway) +"bCe" = ( +/obj/structure/cable/green{ + d1 = 2; + d2 = 8; + icon_state = "2-8" + }, +/turf/simulated/floor/tiled, +/area/engineering/hallway/atmos_hallway) +"bCf" = ( +/turf/simulated/wall, +/area/engineering/hallway/atmos_hallway) +"bCg" = ( +/obj/effect/floor_decal/industrial/warning{ + dir = 8 + }, +/obj/machinery/atmospherics/pipe/simple/visible/universal, +/turf/simulated/floor/plating, +/area/maintenance/engineering) +"bCh" = ( +/obj/machinery/space_heater, +/turf/simulated/floor/plating, +/area/maintenance/engineering) +"bCi" = ( +/obj/structure/table/steel, +/obj/random/tech_supply, +/obj/random/tech_supply, +/obj/random/tech_supply, +/obj/random/maintenance/engineering, +/obj/random/maintenance/engineering, +/obj/random/technology_scanner, +/turf/simulated/floor/plating, +/area/maintenance/engineering) +"bCj" = ( +/obj/random/toolbox, +/obj/machinery/light/small, +/turf/simulated/floor/plating, +/area/maintenance/engineering) +"bCk" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/obj/structure/cable{ + d1 = 1; + d2 = 2; + icon_state = "1-2"; + pixel_y = 0 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 6 + }, +/turf/simulated/floor/plating, +/area/maintenance/engineering) +"bCl" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 9 + }, +/obj/machinery/meter, +/obj/machinery/alarm{ + dir = 1; + pixel_y = -22 + }, +/turf/simulated/floor/plating, +/area/maintenance/engineering) +"bCm" = ( +/obj/structure/cable{ + d1 = 1; + d2 = 2; + icon_state = "1-2"; + pixel_y = 0 + }, +/turf/simulated/floor/plating, +/area/maintenance/engineering) +"bCn" = ( +/obj/structure/table/rack{ + dir = 1 + }, +/obj/random/maintenance/engineering, +/obj/random/maintenance/engineering, +/obj/random/maintenance/engineering, +/obj/random/maintenance/engineering, +/obj/effect/floor_decal/industrial/warning/corner{ + dir = 4 + }, +/turf/simulated/floor, +/area/maintenance/engineering) +"bCo" = ( +/obj/machinery/door/airlock/maintenance{ + name = "Firefighting Equipment"; + req_access = list(12) + }, +/obj/machinery/door/firedoor/border_only, +/turf/simulated/floor/plating, +/area/maintenance/engineering) +"bCp" = ( +/obj/structure/closet, +/obj/item/clothing/head/ushanka, +/obj/random/maintenance/clean, +/obj/random/maintenance/clean, +/obj/random/maintenance/clean, +/turf/simulated/floor/plating, +/area/maintenance/engineering) +"bCq" = ( +/obj/machinery/portable_atmospherics/powered/scrubber, +/turf/simulated/floor/plating, +/area/maintenance/engineering) +"bCr" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/obj/structure/cable{ + d1 = 1; + d2 = 2; + icon_state = "1-2"; + pixel_y = 0 + }, +/turf/simulated/floor/plating, +/area/maintenance/engineering) +"bCs" = ( +/obj/machinery/door/firedoor/glass, +/obj/machinery/door/airlock/glass{ + name = "Central Access" + }, +/obj/structure/disposalpipe/segment, +/turf/simulated/floor/tiled/steel_grid, +/area/hallway/primary/seconddeck/fore) +"bCt" = ( +/obj/effect/wingrille_spawn/reinforced, +/obj/machinery/door/firedoor/border_only, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/turf/simulated/floor/plating, +/area/hallway/primary/seconddeck/fore) +"bCu" = ( +/obj/machinery/door/firedoor/glass, +/obj/machinery/door/airlock/glass{ + name = "Central Access" + }, +/turf/simulated/floor/tiled/steel_grid, +/area/hallway/primary/seconddeck/fore) +"bCv" = ( +/obj/structure/closet/crate/freezer/rations, +/obj/random/action_figure, +/turf/simulated/floor/plating, +/area/maintenance/research) +"bCw" = ( +/obj/effect/floor_decal/industrial/loading{ + dir = 1 + }, +/obj/structure/plasticflaps{ + opacity = 1 + }, +/obj/machinery/navbeacon/delivery/north{ + location = "Janitor" + }, +/turf/simulated/floor/tiled, +/area/janitor) +"bCx" = ( +/obj/machinery/door/airlock/maintenance{ + name = "Custodial Maintenance"; + req_access = list(26) + }, +/obj/machinery/door/firedoor/border_only, +/obj/structure/cable{ + d1 = 1; + d2 = 2; + icon_state = "1-2"; + pixel_y = 0 + }, +/obj/structure/disposalpipe/segment, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/turf/simulated/floor/plating, +/area/janitor) +"bCy" = ( +/obj/structure/cable{ + d1 = 1; + d2 = 2; + icon_state = "1-2"; + pixel_y = 0 + }, +/obj/machinery/door/firedoor/border_only, +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/obj/machinery/door/airlock/maintenance{ + req_access = list(12) + }, +/turf/simulated/floor/plating, +/area/storage/auxillary) +"bCz" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 6 + }, +/turf/simulated/floor/plating, +/area/maintenance/research) +"bCA" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 9 + }, +/obj/machinery/meter, +/turf/simulated/floor/plating, +/area/maintenance/research) +"bCB" = ( +/obj/structure/table, +/obj/item/stack/material/plastic, +/obj/item/weapon/tool/wrench, +/obj/item/weapon/weldingtool/hugetank, +/turf/simulated/floor/plating, +/area/maintenance/research) +"bCC" = ( +/obj/structure/reagent_dispensers/fueltank, +/turf/simulated/floor/plating, +/area/maintenance/research) +"bCD" = ( +/obj/structure/reagent_dispensers/watertank, +/turf/simulated/floor/plating, +/area/maintenance/research) +"bCE" = ( +/obj/item/weapon/rig/hazmat/equipped, +/obj/structure/window/reinforced{ + dir = 1 + }, +/obj/structure/window/reinforced{ + dir = 8 + }, +/obj/structure/window/reinforced{ + dir = 4; + health = 1e+006 + }, +/obj/machinery/status_display{ + pixel_x = 0; + pixel_y = 32 + }, +/obj/machinery/door/window/southright{ + name = "RD Suit"; + req_one_access = list(30) + }, +/obj/structure/table/rack{ + dir = 8; + layer = 2.6 + }, +/obj/effect/floor_decal/borderfloorwhite{ + dir = 9 + }, +/obj/effect/floor_decal/corner/blue/border, +/obj/effect/floor_decal/corner/blue/border{ + dir = 9 + }, +/turf/simulated/floor/tiled/white, +/area/crew_quarters/heads/sc/hor) +"bCF" = ( +/obj/structure/closet/secure_closet/RD, +/obj/machinery/firealarm{ + dir = 2; + pixel_y = 24 + }, +/obj/effect/floor_decal/borderfloorwhite{ + dir = 1 + }, +/obj/effect/floor_decal/corner/blue/border{ + dir = 1 + }, +/turf/simulated/floor/tiled/white, +/area/crew_quarters/heads/sc/hor) +"bCG" = ( +/obj/structure/table/reinforced, +/obj/machinery/photocopier/faxmachine{ + department = "Research Director's Office" + }, +/obj/machinery/keycard_auth{ + pixel_x = 0; + pixel_y = 24 + }, +/obj/effect/floor_decal/borderfloorwhite{ + dir = 1 + }, +/obj/effect/floor_decal/corner/blue/border{ + dir = 1 + }, +/turf/simulated/floor/tiled/white, +/area/crew_quarters/heads/sc/hor) +"bCH" = ( +/obj/structure/filingcabinet/chestdrawer, +/obj/machinery/button/remote/blast_door{ + id = "Biohazard"; + name = "Biohazard Shutter Control"; + pixel_x = -6; + pixel_y = 24; + req_access = list(47) + }, +/obj/machinery/button/remote/airlock{ + desc = "A remote control-switch for the cargo doors."; + id = "researchdoor"; + name = "Research door control"; + pixel_x = 6; + pixel_y = 24; + req_access = list(30) + }, +/obj/machinery/button/windowtint{ + id = "rdoffice"; + pixel_x = -16; + pixel_y = 24 + }, +/obj/effect/floor_decal/borderfloorwhite{ + dir = 1 + }, +/obj/effect/floor_decal/corner/blue/border{ + dir = 1 + }, +/turf/simulated/floor/tiled/white, +/area/crew_quarters/heads/sc/hor) +"bCI" = ( +/obj/structure/table/reinforced, +/obj/item/weapon/circuitboard/teleporter, +/obj/item/weapon/circuitboard/aicore{ + pixel_x = -2; + pixel_y = 4 + }, +/obj/item/weapon/cartridge/signal/science, +/obj/item/weapon/cartridge/signal/science{ + pixel_x = -4; + pixel_y = 2 + }, +/obj/item/weapon/cartridge/signal/science{ + pixel_x = 4; + pixel_y = 6 + }, +/obj/item/device/megaphone, +/obj/machinery/requests_console{ + announcementConsole = 1; + department = "Research Director's Desk"; + departmentType = 5; + name = "Research Director RC"; + pixel_x = 30; + pixel_y = -2 + }, +/obj/machinery/ai_status_display{ + pixel_y = 32 + }, +/obj/machinery/light{ + dir = 1 + }, +/obj/effect/floor_decal/borderfloorwhite{ + dir = 5 + }, +/obj/effect/floor_decal/corner/blue/border{ + dir = 5 + }, +/turf/simulated/floor/tiled/white, +/area/crew_quarters/heads/sc/hor) +"bCJ" = ( +/turf/simulated/wall, +/area/rnd/research) +"bCK" = ( +/obj/machinery/door/firedoor/border_only, +/obj/machinery/door/airlock/maintenance{ + name = "Research Maintenance Access"; + req_one_access = list(47) + }, +/turf/simulated/floor/plating, +/area/rnd/research) +"bCL" = ( +/obj/structure/closet/secure_closet/scientist, +/obj/item/device/radio/intercom{ + dir = 8; + name = "Station Intercom (General)"; + pixel_x = -21 + }, +/obj/effect/floor_decal/borderfloorwhite{ + dir = 9 + }, +/obj/effect/floor_decal/corner/purple/border{ + dir = 9 + }, +/turf/simulated/floor/tiled/white, +/area/rnd/research_lockerroom) +"bCM" = ( +/obj/machinery/alarm{ + pixel_y = 25 + }, +/obj/machinery/camera/network/research{ + c_tag = "SCI - Locker Room"; + dir = 2 + }, +/obj/effect/floor_decal/borderfloorwhite{ + dir = 1 + }, +/obj/effect/floor_decal/corner/purple/border{ + dir = 1 + }, +/turf/simulated/floor/tiled/white, +/area/rnd/research_lockerroom) +"bCN" = ( +/obj/machinery/portable_atmospherics/hydroponics, +/obj/structure/extinguisher_cabinet{ + pixel_y = 30 + }, +/turf/simulated/floor/tiled/white, +/area/rnd/xenobiology/xenoflora) +"bCO" = ( +/obj/structure/toilet, +/obj/machinery/light/small{ + dir = 1 + }, +/turf/simulated/floor/tiled/freezer, +/area/rnd/research_restroom_sc) +"bCP" = ( +/obj/machinery/recharge_station, +/obj/machinery/light/small{ + dir = 1 + }, +/turf/simulated/floor/tiled/freezer, +/area/rnd/research_restroom_sc) +"bCQ" = ( +/obj/machinery/atmospherics/unary/vent_pump/on{ + dir = 4 + }, +/obj/machinery/firealarm{ + dir = 8; + pixel_x = -24 + }, +/obj/effect/floor_decal/borderfloorwhite{ + dir = 10 + }, +/obj/effect/floor_decal/corner/purple/border{ + dir = 10 + }, +/turf/simulated/floor/tiled/white, +/area/rnd/research) +"bCR" = ( +/obj/machinery/atmospherics/pipe/manifold/hidden/supply{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/obj/effect/floor_decal/borderfloorwhite/corner{ + dir = 8 + }, +/obj/effect/floor_decal/corner/purple/bordercorner{ + dir = 8 + }, +/turf/simulated/floor/tiled/white, +/area/rnd/research) +"bCS" = ( +/obj/machinery/alarm{ + dir = 8; + pixel_x = 22; + pixel_y = 0 + }, +/obj/effect/floor_decal/borderfloorwhite{ + dir = 4 + }, +/obj/effect/floor_decal/corner/purple/border{ + dir = 4 + }, +/turf/simulated/floor/tiled/white, +/area/rnd/research) +"bCT" = ( +/obj/machinery/portable_atmospherics/canister/oxygen, +/obj/effect/floor_decal/industrial/hatch/yellow, +/obj/machinery/ai_status_display{ + pixel_y = 32 + }, +/turf/simulated/floor/tiled/dark, +/area/rnd/storage) +"bCU" = ( +/obj/machinery/portable_atmospherics/canister/oxygen, +/obj/effect/floor_decal/industrial/hatch/yellow, +/turf/simulated/floor/tiled/dark, +/area/rnd/storage) +"bCV" = ( +/obj/machinery/portable_atmospherics/canister/phoron, +/obj/effect/floor_decal/industrial/hatch/yellow, +/turf/simulated/floor/tiled/dark, +/area/rnd/storage) +"bCW" = ( +/obj/machinery/portable_atmospherics/canister/nitrogen, +/obj/effect/floor_decal/industrial/hatch/yellow, +/obj/structure/sign/warning/nosmoking_2{ + pixel_y = 32 + }, +/turf/simulated/floor/tiled/dark, +/area/rnd/storage) +"bCX" = ( +/obj/machinery/portable_atmospherics/canister/sleeping_agent, +/obj/effect/floor_decal/industrial/hatch/yellow, +/turf/simulated/floor/tiled/dark, +/area/rnd/storage) +"bCY" = ( +/obj/machinery/portable_atmospherics/canister/carbon_dioxide, +/obj/effect/floor_decal/industrial/hatch/yellow, +/obj/machinery/status_display{ + pixel_x = 0; + pixel_y = 32 + }, +/turf/simulated/floor/tiled/dark, +/area/rnd/storage) +"bCZ" = ( +/obj/machinery/mass_driver{ + dir = 1; + id = "toxinsdriver" + }, +/turf/simulated/floor/airless, +/area/rnd/toxins_launch) +"bDa" = ( +/obj/machinery/door/firedoor/border_only, +/obj/structure/window/reinforced{ + dir = 4; + health = 1e+006 + }, +/obj/structure/window/reinforced, +/obj/structure/window/reinforced{ + dir = 1 + }, +/obj/structure/disposalpipe/trunk{ + dir = 4 + }, +/obj/structure/disposaloutlet{ + dir = 8 + }, +/turf/simulated/floor/plating, +/area/rnd/toxins_launch) +"bDb" = ( +/obj/structure/disposalpipe/trunk{ + dir = 8 + }, +/obj/machinery/disposal, +/obj/effect/floor_decal/industrial/warning/corner{ + dir = 1 + }, +/obj/machinery/firealarm{ + dir = 1; + pixel_x = 0; + pixel_y = -24 + }, +/obj/effect/floor_decal/industrial/warning/corner, +/turf/simulated/floor/tiled, +/area/rnd/toxins_launch) +"bDc" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/obj/machinery/atmospherics/pipe/manifold/hidden/supply{ + dir = 8 + }, +/obj/structure/cable/green{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/obj/effect/floor_decal/industrial/warning, +/turf/simulated/floor/tiled, +/area/rnd/toxins_launch) +"bDd" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/universal{ + dir = 4 + }, +/obj/machinery/alarm{ + dir = 1; + icon_state = "alarm0"; + pixel_y = -22 + }, +/obj/machinery/camera/network/research{ + c_tag = "SCI - Toxins Launch Room"; + dir = 1 + }, +/obj/effect/floor_decal/industrial/warning/corner{ + dir = 8 + }, +/turf/simulated/floor/tiled, +/area/rnd/toxins_launch) +"bDe" = ( +/obj/machinery/atmospherics/binary/pump/on{ + dir = 4; + target_pressure = 200 + }, +/obj/machinery/access_button{ + command = "cycle_interior"; + frequency = 1379; + master_tag = "toxins_airlock"; + name = "interior access button"; + pixel_x = 0; + pixel_y = 22; + req_one_access = list(8,13,65) + }, +/obj/item/device/radio/intercom{ + name = "Station Intercom (General)"; + pixel_y = -21 + }, +/turf/simulated/floor/tiled, +/area/rnd/toxins_launch) +"bDf" = ( +/obj/machinery/atmospherics/pipe/manifold/hidden, +/obj/effect/floor_decal/industrial/warning/full, +/obj/structure/extinguisher_cabinet{ + pixel_y = -30 + }, +/turf/simulated/floor/plating, +/area/rnd/toxins_launch) +"bDg" = ( +/obj/machinery/portable_atmospherics/canister/air/airlock, +/obj/machinery/atmospherics/portables_connector{ + dir = 8 + }, +/obj/effect/floor_decal/industrial/outline/yellow, +/obj/structure/sign/warning/airlock{ + pixel_y = 32 + }, +/turf/simulated/floor/tiled, +/area/rnd/toxins_launch) +"bDh" = ( +/obj/machinery/door/airlock/external{ + frequency = 1379; + icon_state = "door_locked"; + id_tag = "eng_port_outer"; + locked = 1; + name = "Engineering External Access"; + req_access = list(13) + }, +/turf/simulated/floor, +/area/engineering/drone_fabrication) +"bDi" = ( +/turf/simulated/wall, +/area/engineering/drone_fabrication) +"bDj" = ( +/obj/machinery/shield_capacitor, +/obj/effect/floor_decal/industrial/outline/yellow, +/turf/simulated/floor, +/area/engineering/storage) +"bDk" = ( +/obj/effect/floor_decal/industrial/outline/yellow, +/obj/machinery/atmospherics/unary/vent_scrubber/on, +/obj/machinery/shieldwallgen, +/turf/simulated/floor, +/area/engineering/storage) +"bDl" = ( +/obj/machinery/shieldgen, +/obj/effect/floor_decal/industrial/outline/yellow, +/obj/machinery/atmospherics/unary/vent_pump/on, +/turf/simulated/floor, +/area/engineering/storage) +"bDm" = ( +/obj/machinery/portable_atmospherics/canister/nitrogen, +/obj/effect/floor_decal/industrial/outline/yellow, +/turf/simulated/floor, +/area/engineering/storage) +"bDn" = ( +/obj/machinery/atmospherics/portables_connector{ + dir = 4 + }, +/obj/machinery/camera/network/engineering{ + c_tag = "ENG - Atmospherics Hallway 2"; + dir = 4 + }, +/obj/machinery/firealarm{ + dir = 8; + pixel_x = -24 + }, +/obj/effect/floor_decal/borderfloor{ + dir = 8 + }, +/obj/effect/floor_decal/corner/red/border{ + dir = 8 + }, +/turf/simulated/floor/tiled, +/area/engineering/hallway/atmos_hallway) +"bDo" = ( +/obj/machinery/atmospherics/pipe/manifold/hidden/red{ + dir = 1 + }, +/turf/simulated/floor/tiled/dark, +/area/engineering/hallway/atmos_hallway) +"bDp" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/red{ + icon_state = "intact"; + dir = 4 + }, +/obj/structure/cable/green{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/turf/simulated/floor/tiled, +/area/engineering/hallway/atmos_hallway) +"bDq" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/red{ + icon_state = "intact"; + dir = 9 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/obj/structure/cable/green{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/obj/structure/disposalpipe/segment, +/turf/simulated/floor/tiled/dark, +/area/engineering/hallway/atmos_hallway) +"bDr" = ( +/obj/machinery/atmospherics/unary/vent_pump/on{ + dir = 8 + }, +/turf/simulated/floor/tiled, +/area/engineering/hallway/atmos_hallway) +"bDs" = ( +/obj/effect/floor_decal/industrial/warning/corner, +/turf/simulated/floor/tiled, +/area/engineering/hallway/atmos_hallway) +"bDt" = ( +/obj/structure/table/reinforced, +/obj/effect/floor_decal/industrial/warning, +/obj/structure/extinguisher_cabinet{ + pixel_x = 28; + pixel_y = 0 + }, +/obj/random/tech_supply, +/obj/random/tech_supply, +/obj/random/tech_supply, +/obj/random/tech_supply, +/turf/simulated/floor/tiled, +/area/engineering/hallway/atmos_hallway) +"bDu" = ( +/turf/simulated/wall, +/area/engineering/foyer) +"bDv" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/red, +/obj/machinery/door/firedoor/border_only, +/obj/effect/wingrille_spawn/reinforced, +/obj/structure/disposalpipe/segment, +/turf/simulated/floor/plating, +/area/engineering/foyer) +"bDw" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/cyan, +/obj/machinery/door/firedoor/glass, +/obj/machinery/door/airlock/glass_engineeringatmos{ + name = "Engineering Monitoring Room"; + req_one_access = list(11,24) + }, +/turf/simulated/floor/tiled/steel_grid, +/area/engineering/foyer) +"bDx" = ( +/obj/machinery/door/firedoor/border_only, +/obj/effect/wingrille_spawn/reinforced, +/turf/simulated/floor/plating, +/area/engineering/foyer) +"bDy" = ( +/turf/simulated/wall, +/area/engineering/engineer_eva) +"bDz" = ( +/obj/machinery/door/firedoor/border_only, +/obj/effect/wingrille_spawn/reinforced, +/turf/simulated/floor, +/area/engineering/engineer_eva) +"bDA" = ( +/obj/machinery/door/firedoor/glass, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/machinery/door/airlock/glass_engineeringatmos{ + name = "Engineering EVA Storage"; + req_one_access = list(11,24) + }, +/turf/simulated/floor/tiled/steel_grid, +/area/engineering/engineer_eva) +"bDB" = ( +/obj/machinery/door/firedoor/border_only, +/obj/effect/wingrille_spawn/reinforced, +/obj/structure/cable/green{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/turf/simulated/floor, +/area/engineering/engineer_eva) +"bDC" = ( +/obj/effect/decal/cleanable/dirt, +/obj/effect/floor_decal/industrial/warning/corner{ + dir = 1 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/machinery/meter, +/turf/simulated/floor/plating, +/area/maintenance/engineering) +"bDD" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/obj/machinery/meter, +/turf/simulated/floor/plating, +/area/maintenance/engineering) +"bDE" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/obj/machinery/door/firedoor/border_only, +/obj/structure/cable{ + d1 = 1; + d2 = 2; + icon_state = "1-2"; + pixel_y = 0 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/machinery/door/airlock/glass{ + name = "Research Access" + }, +/turf/simulated/floor/tiled/steel_grid, +/area/hallway/secondary/escape/firstdeck/ep_starboard1) +"bDF" = ( +/obj/random/tool, +/turf/simulated/floor/plating, +/area/maintenance/engineering) +"bDG" = ( +/turf/simulated/wall, +/area/storage/emergency_storage/seconddeck/fp_emergency) +"bDH" = ( +/obj/machinery/door/firedoor/border_only, +/obj/structure/cable{ + d1 = 1; + d2 = 2; + icon_state = "1-2"; + pixel_y = 0 + }, +/obj/machinery/door/airlock{ + name = "Emergency Storage" + }, +/turf/simulated/floor/plating, +/area/storage/emergency_storage/seconddeck/fp_emergency) +"bDI" = ( +/obj/structure/table/rack{ + dir = 1 + }, +/obj/item/clothing/suit/fire/firefighter, +/obj/item/weapon/tank/oxygen, +/obj/item/clothing/mask/gas, +/obj/item/weapon/extinguisher, +/obj/item/clothing/head/hardhat/red, +/obj/item/clothing/glasses/meson, +/obj/random/maintenance/engineering, +/obj/random/maintenance/clean, +/turf/simulated/floor/plating, +/area/maintenance/engineering) +"bDJ" = ( +/obj/structure/table/steel, +/obj/random/tech_supply, +/obj/random/tech_supply, +/obj/random/tech_supply, +/obj/random/maintenance/engineering, +/obj/random/maintenance/engineering, +/obj/random/tool/powermaint, +/turf/simulated/floor/plating, +/area/maintenance/engineering) +"bDK" = ( +/obj/structure/closet/wardrobe/grey, +/obj/item/weapon/storage/backpack, +/obj/item/weapon/storage/backpack, +/obj/random/maintenance/security, +/obj/random/maintenance/security, +/obj/random/maintenance/clean, +/turf/simulated/floor/plating, +/area/maintenance/engineering) +"bDL" = ( +/obj/structure/closet/emcloset, +/turf/simulated/floor/plating, +/area/maintenance/engineering) +"bDM" = ( +/obj/structure/disposalpipe/segment, +/obj/machinery/firealarm{ + dir = 8; + pixel_x = -26 + }, +/obj/effect/floor_decal/steeldecal/steel_decals4{ + dir = 4 + }, +/obj/effect/floor_decal/steeldecal/steel_decals4{ + dir = 9 + }, +/turf/simulated/floor/tiled, +/area/hallway/primary/seconddeck/fscenter) +"bDN" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/obj/machinery/light{ + dir = 1 + }, +/turf/simulated/floor/tiled, +/area/hallway/primary/seconddeck/fscenter) +"bDO" = ( +/obj/item/device/radio/intercom{ + dir = 4; + name = "Station Intercom (General)"; + pixel_x = 21 + }, +/obj/effect/floor_decal/steeldecal/steel_decals4{ + dir = 4 + }, +/obj/effect/floor_decal/steeldecal/steel_decals4{ + dir = 9 + }, +/turf/simulated/floor/tiled, +/area/hallway/primary/seconddeck/fscenter) +"bDP" = ( +/obj/structure/grille/broken, +/obj/item/stack/rods, +/obj/structure/window/reinforced{ + dir = 1; + health = 1e+006 + }, +/obj/structure/window/reinforced{ + dir = 8 + }, +/turf/simulated/floor/plating, +/area/maintenance/research) +"bDQ" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/turf/simulated/floor/plating, +/area/maintenance/research) +"bDR" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 6 + }, +/obj/structure/cable{ + d1 = 2; + d2 = 4; + icon_state = "2-4" + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/turf/simulated/floor/plating, +/area/maintenance/research) +"bDS" = ( +/obj/structure/cable{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/obj/machinery/atmospherics/pipe/manifold/hidden/supply, +/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers, +/obj/structure/cable{ + d1 = 1; + d2 = 8; + icon_state = "1-8" + }, +/turf/simulated/floor/plating, +/area/maintenance/research) +"bDT" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, +/obj/structure/cable{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/turf/simulated/floor/plating, +/area/maintenance/research) +"bDU" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, +/obj/structure/cable{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/obj/effect/floor_decal/industrial/warning{ + icon_state = "warning"; + dir = 4 + }, +/turf/simulated/floor/plating, +/area/maintenance/research) +"bDV" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, +/obj/structure/cable{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/obj/machinery/door/firedoor/border_only, +/turf/simulated/floor/plating, +/area/maintenance/research) +"bDW" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, +/obj/structure/cable{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/obj/effect/floor_decal/industrial/warning{ + dir = 8 + }, +/obj/structure/disposalpipe/segment{ + dir = 1; + icon_state = "pipe-c" + }, +/turf/simulated/floor/plating, +/area/maintenance/research) +"bDX" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, +/obj/structure/cable{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/turf/simulated/floor/plating, +/area/maintenance/research) +"bDY" = ( +/obj/effect/floor_decal/industrial/warning/corner, +/obj/machinery/atmospherics/pipe/manifold/hidden/supply{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{ + dir = 4 + }, +/obj/structure/cable{ + d1 = 2; + d2 = 8; + icon_state = "2-8" + }, +/obj/structure/disposalpipe/segment{ + dir = 2; + icon_state = "pipe-c" + }, +/turf/simulated/floor/plating, +/area/maintenance/research) +"bDZ" = ( +/turf/simulated/wall, +/area/maintenance/substation/research) +"bEa" = ( +/turf/simulated/wall/r_wall, +/area/maintenance/substation/research) +"bEb" = ( +/obj/machinery/power/apc{ + dir = 8; + name = "west bump"; + pixel_x = -24 + }, +/obj/machinery/light_switch{ + pixel_x = -36 + }, +/obj/structure/cable/green{ + d2 = 2; + icon_state = "0-2" + }, +/obj/effect/floor_decal/borderfloorwhite{ + dir = 8 + }, +/obj/effect/floor_decal/corner/blue/border{ + dir = 8 + }, +/turf/simulated/floor/tiled/white, +/area/crew_quarters/heads/sc/hor) +"bEc" = ( +/turf/simulated/floor/tiled/white, +/area/crew_quarters/heads/sc/hor) +"bEd" = ( +/mob/living/simple_mob/slime/xenobio/rainbow/kendrick, +/turf/simulated/floor/tiled/white, +/area/crew_quarters/heads/sc/hor) +"bEe" = ( +/obj/structure/bed/chair/office/light, +/obj/effect/landmark/start{ + name = "Research Director" + }, +/turf/simulated/floor/tiled/white, +/area/crew_quarters/heads/sc/hor) +"bEf" = ( +/obj/structure/table/reinforced, +/obj/item/device/paicard{ + pixel_x = 4 + }, +/obj/item/device/tape, +/obj/item/device/taperecorder{ + pixel_x = -3 + }, +/obj/item/weapon/reagent_containers/food/drinks/jar, +/obj/effect/floor_decal/borderfloorwhite{ + dir = 4 + }, +/obj/effect/floor_decal/corner/blue/border{ + dir = 4 + }, +/turf/simulated/floor/tiled/white, +/area/crew_quarters/heads/sc/hor) +"bEg" = ( +/obj/machinery/door/firedoor/border_only, +/obj/effect/wingrille_spawn/reinforced/polarized{ + id = "rdoffice" + }, +/turf/simulated/floor/plating, +/area/crew_quarters/heads/sc/hor) +"bEh" = ( +/obj/machinery/vending/cola, +/turf/simulated/floor/wood, +/area/rnd/research) +"bEi" = ( +/obj/machinery/portable_atmospherics/hydroponics, +/obj/machinery/firealarm{ + dir = 2; + pixel_y = 24 + }, +/turf/simulated/floor/tiled/white, +/area/rnd/xenobiology/xenoflora) +"bEj" = ( +/turf/simulated/floor/wood, +/area/rnd/research) +"bEk" = ( +/obj/machinery/vending/snack, +/turf/simulated/floor/wood, +/area/rnd/research) +"bEl" = ( +/obj/machinery/disposal, +/obj/structure/extinguisher_cabinet{ + pixel_y = 30 + }, +/obj/machinery/firealarm{ + dir = 4; + pixel_x = 24 + }, +/obj/structure/disposalpipe/trunk, +/turf/simulated/floor/wood, +/area/rnd/research) +"bEm" = ( +/obj/machinery/disposal, +/obj/structure/disposalpipe/trunk{ + dir = 4 + }, +/obj/machinery/light{ + dir = 1 + }, +/turf/simulated/floor/tiled/white, +/area/rnd/xenobiology/xenoflora) +"bEn" = ( +/turf/simulated/floor/tiled/white, +/area/rnd/research_lockerroom) +"bEo" = ( +/obj/structure/bed/chair{ + dir = 8 + }, +/obj/machinery/light{ + icon_state = "tube1"; + dir = 8 + }, +/obj/machinery/status_display{ + density = 0; + layer = 4; + pixel_x = 0; + pixel_y = 32 + }, +/obj/machinery/embedded_controller/radio/simple_docking_controller/escape_pod{ + frequency = 1380; + id_tag = "escape_pod_3"; + pixel_x = 0; + pixel_y = -25; + tag_door = "escape_pod_3_hatch" + }, +/turf/simulated/shuttle/floor, +/area/shuttle/escape_pod3/station) +"bEp" = ( +/obj/machinery/door/airlock{ + name = "Unit 1" + }, +/turf/simulated/floor/tiled/freezer, +/area/rnd/research_restroom_sc) +"bEq" = ( +/obj/machinery/door/airlock{ + name = "Unit 2" + }, +/turf/simulated/floor/tiled/freezer, +/area/rnd/research_restroom_sc) +"bEr" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/obj/machinery/camera/network/research{ + c_tag = "SCI - Research Hallway Fore"; + dir = 4 + }, +/obj/effect/floor_decal/borderfloorwhite{ + dir = 8 + }, +/obj/effect/floor_decal/corner/purple/border{ + dir = 8 + }, +/turf/simulated/floor/tiled/white, +/area/rnd/research) +"bEs" = ( +/obj/effect/floor_decal/borderfloorwhite/corner{ + dir = 4 + }, +/obj/effect/floor_decal/corner/purple/bordercorner{ + dir = 4 + }, +/turf/simulated/floor/tiled/white, +/area/rnd/research) +"bEt" = ( +/obj/structure/sign/warning/compressed_gas, +/turf/simulated/wall/r_wall, +/area/rnd/storage) +"bEu" = ( +/obj/machinery/portable_atmospherics/canister/oxygen, +/obj/effect/floor_decal/industrial/hatch/yellow, +/obj/machinery/light{ + dir = 8 + }, +/turf/simulated/floor/tiled/dark, +/area/rnd/storage) +"bEv" = ( +/obj/machinery/portable_atmospherics/canister/oxygen, +/obj/effect/floor_decal/industrial/hatch/yellow, +/obj/machinery/atmospherics/unary/vent_scrubber/on, +/turf/simulated/floor/tiled/dark, +/area/rnd/storage) +"bEw" = ( +/obj/machinery/portable_atmospherics/canister/phoron, +/obj/effect/floor_decal/industrial/hatch/yellow, +/obj/machinery/atmospherics/unary/vent_scrubber/on, +/turf/simulated/floor/tiled/dark, +/area/rnd/storage) +"bEx" = ( +/obj/machinery/portable_atmospherics/canister/nitrogen, +/obj/effect/floor_decal/industrial/hatch/yellow, +/turf/simulated/floor/tiled/dark, +/area/rnd/storage) +"bEy" = ( +/obj/machinery/portable_atmospherics/canister/sleeping_agent, +/obj/effect/floor_decal/industrial/hatch/yellow, +/obj/machinery/atmospherics/unary/vent_scrubber/on, +/turf/simulated/floor/tiled/dark, +/area/rnd/storage) +"bEz" = ( +/obj/machinery/portable_atmospherics/canister/carbon_dioxide, +/obj/effect/floor_decal/industrial/hatch/yellow, +/obj/item/device/radio/intercom{ + dir = 4; + name = "Station Intercom (General)"; + pixel_x = 21 + }, +/turf/simulated/floor/tiled/dark, +/area/rnd/storage) +"bEA" = ( +/turf/simulated/wall/r_wall, +/area/rnd/toxins_launch) +"bEB" = ( +/obj/structure/cable/green{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/obj/machinery/door/firedoor/border_only, +/obj/machinery/door/airlock/engineering{ + name = "Security Substation"; + req_access = list(1); + req_one_access = null + }, +/turf/simulated/floor/plating, +/area/maintenance/substation/security) +"bEC" = ( +/obj/machinery/atmospherics/unary/vent_pump/high_volume{ + dir = 4; + frequency = 1379; + id_tag = "eng_port_pump" + }, +/obj/effect/floor_decal/industrial/warning{ + icon_state = "warning"; + dir = 9 + }, +/obj/machinery/airlock_sensor{ + frequency = 1379; + id_tag = "eng_port_sensor"; + pixel_x = -24; + pixel_y = 0 + }, +/turf/simulated/floor, +/area/engineering/drone_fabrication) +"bED" = ( +/obj/machinery/atmospherics/pipe/manifold/hidden{ + dir = 1; + icon_state = "map" + }, +/obj/effect/floor_decal/industrial/warning{ + icon_state = "warning"; + dir = 1 + }, +/turf/simulated/floor, +/area/engineering/drone_fabrication) +"bEE" = ( +/obj/machinery/atmospherics/unary/vent_pump/high_volume{ + dir = 8; + frequency = 1379; + id_tag = "eng_port_pump" + }, +/obj/effect/floor_decal/industrial/warning{ + dir = 5 + }, +/obj/machinery/light/small{ + dir = 4; + pixel_y = 0 + }, +/turf/simulated/floor, +/area/engineering/drone_fabrication) +"bEF" = ( +/obj/machinery/alarm{ + dir = 4; + icon_state = "alarm0"; + pixel_x = -22; + pixel_y = 0 + }, +/obj/structure/catwalk, +/turf/simulated/floor, +/area/engineering/storage) +"bEG" = ( +/obj/structure/catwalk, +/turf/simulated/floor, +/area/engineering/storage) +"bEH" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/obj/structure/catwalk, +/turf/simulated/floor, +/area/engineering/storage) +"bEI" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/structure/catwalk, +/turf/simulated/floor, +/area/engineering/storage) +"bEJ" = ( +/obj/machinery/power/apc{ + dir = 4; + name = "east bump"; + pixel_x = 24 + }, +/obj/machinery/light_switch{ + dir = 2; + name = "light switch "; + pixel_x = 36; + pixel_y = 0 + }, +/obj/structure/cable/green{ + d2 = 2; + icon_state = "0-2" + }, +/obj/structure/catwalk, +/turf/simulated/floor, +/area/engineering/storage) +"bEK" = ( +/obj/machinery/atmospherics/portables_connector{ + dir = 4 + }, +/obj/effect/floor_decal/borderfloor{ + dir = 8 + }, +/obj/effect/floor_decal/corner/red/border{ + dir = 8 + }, +/obj/effect/floor_decal/borderfloor/corner2{ + dir = 10 + }, +/obj/effect/floor_decal/corner/red/bordercorner2{ + dir = 10 + }, +/turf/simulated/floor/tiled, +/area/engineering/hallway/atmos_hallway) +"bEL" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/red{ + icon_state = "intact"; + dir = 4 + }, +/obj/machinery/atmospherics/pipe/manifold/hidden/supply{ + dir = 8 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/turf/simulated/floor/tiled/dark, +/area/engineering/hallway/atmos_hallway) +"bEM" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/turf/simulated/floor/tiled/dark, +/area/engineering/hallway/atmos_hallway) +"bEN" = ( +/obj/machinery/hologram/holopad, +/obj/structure/cable/green{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/obj/effect/floor_decal/industrial/outline/grey, +/obj/structure/disposalpipe/segment, +/turf/simulated/floor/tiled/dark, +/area/engineering/hallway/atmos_hallway) +"bEO" = ( +/turf/simulated/floor/tiled, +/area/engineering/hallway/atmos_hallway) +"bEP" = ( +/obj/effect/floor_decal/industrial/warning{ + dir = 4 + }, +/turf/simulated/floor/tiled, +/area/engineering/hallway/atmos_hallway) +"bEQ" = ( +/obj/machinery/mech_recharger, +/turf/simulated/floor/tiled/techmaint, +/area/engineering/hallway/atmos_hallway) +"bER" = ( +/obj/machinery/door/firedoor/border_only, +/obj/effect/wingrille_spawn/reinforced, +/turf/simulated/floor/plating, +/area/engineering/hallway/atmos_hallway) +"bES" = ( +/obj/machinery/computer/power_monitor, +/obj/machinery/requests_console{ + announcementConsole = 0; + department = "Engineering"; + departmentType = 3; + name = "Engineering RC"; + pixel_x = 0; + pixel_y = 30 + }, +/obj/effect/floor_decal/borderfloor{ + dir = 8 + }, +/obj/effect/floor_decal/corner/yellow/border{ + dir = 8 + }, +/turf/simulated/floor/tiled, +/area/engineering/foyer) +"bET" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/red, +/obj/structure/disposalpipe/segment, +/turf/simulated/floor/tiled, +/area/engineering/foyer) +"bEU" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/cyan, +/obj/effect/floor_decal/steeldecal/steel_decals4{ + dir = 4 + }, +/obj/effect/floor_decal/steeldecal/steel_decals4{ + dir = 9 + }, +/turf/simulated/floor/tiled, +/area/engineering/foyer) +"bEV" = ( +/turf/simulated/floor/tiled, +/area/engineering/foyer) +"bEW" = ( +/obj/machinery/computer/security/engineering, +/obj/machinery/newscaster{ + pixel_y = 30 + }, +/obj/effect/floor_decal/borderfloor{ + dir = 4 + }, +/obj/effect/floor_decal/corner/yellow/border{ + dir = 4 + }, +/turf/simulated/floor/tiled, +/area/engineering/foyer) +"bEX" = ( +/obj/machinery/door/firedoor/border_only, +/obj/effect/wingrille_spawn/reinforced, +/turf/simulated/floor/plating, +/area/engineering/engineer_eva) +"bEY" = ( +/obj/item/clothing/shoes/magboots, +/obj/item/clothing/mask/breath, +/obj/item/clothing/head/helmet/space/void/engineering, +/obj/structure/table/rack{ + dir = 8; + layer = 2.6 + }, +/obj/item/clothing/suit/space/void/engineering, +/obj/structure/window/reinforced{ + dir = 8 + }, +/obj/structure/window/reinforced{ + dir = 1 + }, +/obj/machinery/door/window/eastleft{ + name = "Engineering Suits"; + req_access = list(11) + }, +/obj/machinery/status_display{ + pixel_x = 0; + pixel_y = 32 + }, +/turf/simulated/floor/tiled/dark, +/area/engineering/engineer_eva) +"bEZ" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 6 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 6 + }, +/obj/machinery/camera/network/engineering{ + c_tag = "ENG - EVA"; + dir = 2 + }, +/obj/effect/floor_decal/borderfloor{ + dir = 8 + }, +/obj/effect/floor_decal/corner/yellow/border{ + dir = 8 + }, +/turf/simulated/floor/tiled, +/area/engineering/engineer_eva) +"bFa" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 9 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 9; + pixel_y = 0 + }, +/obj/effect/floor_decal/steeldecal/steel_decals4{ + dir = 4 + }, +/obj/effect/floor_decal/steeldecal/steel_decals4{ + dir = 9 + }, +/turf/simulated/floor/tiled, +/area/engineering/engineer_eva) +"bFb" = ( +/obj/structure/cable/green{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/obj/effect/floor_decal/borderfloor{ + dir = 4 + }, +/obj/effect/floor_decal/corner/yellow/border{ + dir = 4 + }, +/turf/simulated/floor/tiled, +/area/engineering/engineer_eva) +"bFc" = ( +/obj/item/weapon/tank/jetpack/carbondioxide, +/obj/structure/window/reinforced{ + dir = 4; + health = 1e+006 + }, +/obj/structure/window/reinforced{ + dir = 1 + }, +/obj/structure/table/rack{ + dir = 8; + layer = 2.6 + }, +/obj/machinery/door/window/westright{ + name = "Jetpack Storage"; + req_one_access = list(11,24) + }, +/obj/machinery/ai_status_display{ + pixel_y = 32 + }, +/turf/simulated/floor/tiled/dark, +/area/engineering/engineer_eva) +"bFd" = ( +/obj/machinery/door/firedoor/border_only, +/obj/machinery/doppler_array{ + dir = 1 + }, +/obj/structure/window/reinforced{ + dir = 1 + }, +/obj/structure/window/reinforced{ + dir = 8; + health = 1e+006 + }, +/obj/structure/window/reinforced, +/turf/simulated/floor/tiled/dark, +/area/rnd/toxins_launch) +"bFe" = ( +/obj/structure/closet, +/obj/item/clothing/glasses/welding, +/obj/item/weapon/weldingtool, +/obj/effect/decal/cleanable/dirt, +/obj/item/clothing/shoes/boots/workboots, +/obj/random/maintenance/engineering, +/obj/random/maintenance/cargo, +/obj/random/maintenance/engineering, +/obj/item/clothing/glasses/sunglasses, +/obj/machinery/light/small{ + dir = 4 + }, +/turf/simulated/floor/plating, +/area/maintenance/engineering) +"bFf" = ( +/obj/machinery/atmospherics/valve{ + dir = 4 + }, +/obj/effect/floor_decal/industrial/warning{ + icon_state = "warning"; + dir = 9 + }, +/turf/simulated/floor/plating, +/area/maintenance/engineering) +"bFg" = ( +/obj/machinery/atmospherics/pipe/manifold/hidden/cyan{ + dir = 1 + }, +/obj/machinery/meter, +/obj/effect/floor_decal/industrial/warning/corner{ + icon_state = "warningcorner"; + dir = 1 + }, +/turf/simulated/floor/plating, +/area/maintenance/engineering) +"bFh" = ( +/obj/machinery/atmospherics/pipe/tank/air{ + dir = 8 + }, +/turf/simulated/floor/plating, +/area/maintenance/engineering) +"bFi" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/obj/structure/cable{ + d1 = 1; + d2 = 2; + icon_state = "1-2"; + pixel_y = 0 + }, +/obj/effect/floor_decal/industrial/warning, +/turf/simulated/floor/plating, +/area/maintenance/engineering) +"bFj" = ( +/obj/machinery/floodlight, +/turf/simulated/floor/plating, +/area/storage/emergency_storage/seconddeck/fp_emergency) +"bFk" = ( +/obj/structure/cable{ + d1 = 1; + d2 = 2; + icon_state = "1-2"; + pixel_y = 0 + }, +/obj/structure/catwalk, +/turf/simulated/floor/plating, +/area/storage/emergency_storage/seconddeck/fp_emergency) +"bFl" = ( +/obj/structure/closet/hydrant{ + pixel_y = 32 + }, +/obj/item/clothing/glasses/meson, +/obj/machinery/alarm{ + dir = 8; + pixel_x = 22; + pixel_y = 0 + }, +/obj/structure/catwalk, +/turf/simulated/floor/plating, +/area/storage/emergency_storage/seconddeck/fp_emergency) +"bFm" = ( +/obj/structure/closet, +/obj/random/maintenance/engineering, +/obj/random/maintenance/engineering, +/obj/random/maintenance/clean, +/turf/simulated/floor/plating, +/area/maintenance/engineering) +"bFn" = ( +/obj/machinery/light/small, +/turf/simulated/floor/plating, +/area/maintenance/engineering) +"bFo" = ( +/obj/machinery/portable_atmospherics/canister/air, +/turf/simulated/floor/plating, +/area/maintenance/engineering) +"bFp" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 5 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 5 + }, +/obj/structure/cable{ + d1 = 1; + d2 = 4; + icon_state = "1-4" + }, +/obj/machinery/light/small, +/turf/simulated/floor/plating, +/area/maintenance/engineering) +"bFq" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, +/obj/structure/cable{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/turf/simulated/floor/plating, +/area/maintenance/engineering) +"bFr" = ( +/obj/machinery/door/firedoor/border_only, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/obj/structure/cable{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/obj/machinery/door/airlock/maintenance{ + req_access = list(12) + }, +/turf/simulated/floor/plating, +/area/maintenance/engineering) +"bFs" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/obj/structure/cable{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/obj/structure/disposalpipe/segment, +/obj/effect/floor_decal/steeldecal/steel_decals4{ + dir = 1 + }, +/obj/effect/floor_decal/steeldecal/steel_decals4{ + dir = 6 + }, +/turf/simulated/floor/tiled, +/area/hallway/primary/seconddeck/fscenter) +"bFt" = ( +/obj/machinery/atmospherics/pipe/manifold4w/hidden/scrubbers, +/obj/machinery/atmospherics/pipe/manifold4w/hidden/supply, +/obj/structure/cable{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/obj/structure/cable{ + d1 = 2; + d2 = 8; + icon_state = "2-8" + }, +/turf/simulated/floor/tiled/monotile, +/area/hallway/primary/seconddeck/fscenter) +"bFu" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, +/obj/structure/cable{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/obj/effect/floor_decal/steeldecal/steel_decals4, +/obj/effect/floor_decal/steeldecal/steel_decals4{ + dir = 10 + }, +/turf/simulated/floor/tiled, +/area/hallway/primary/seconddeck/fscenter) +"bFv" = ( +/obj/machinery/door/firedoor/border_only, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/obj/structure/cable{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/obj/machinery/door/airlock/maintenance{ + req_access = null; + req_one_access = list(12,47) + }, +/turf/simulated/floor/plating, +/area/maintenance/research) +"bFw" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, +/obj/structure/cable{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/obj/machinery/light/small, +/turf/simulated/floor/plating, +/area/maintenance/research) +"bFx" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, +/obj/structure/cable{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/obj/machinery/alarm{ + dir = 1; + pixel_y = -22 + }, +/turf/simulated/floor/plating, +/area/maintenance/research) +"bFy" = ( +/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers, +/obj/machinery/atmospherics/pipe/manifold/hidden/supply, +/obj/structure/cable{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/turf/simulated/floor/plating, +/area/maintenance/research) +"bFz" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, +/obj/structure/cable{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 9 + }, +/turf/simulated/floor/plating, +/area/maintenance/research) +"bFA" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 9 + }, +/obj/structure/cable{ + d1 = 1; + d2 = 8; + icon_state = "1-8" + }, +/obj/machinery/meter, +/obj/structure/closet/toolcloset, +/obj/random/tech_supply, +/obj/random/tech_supply, +/obj/random/tech_supply, +/turf/simulated/floor/plating, +/area/maintenance/research) +"bFB" = ( +/turf/simulated/wall, +/area/storage/emergency_storage/seconddeck/fs_emergency) +"bFC" = ( +/obj/effect/floor_decal/industrial/warning{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/structure/cable{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/obj/machinery/alarm{ + dir = 4; + icon_state = "alarm0"; + pixel_x = -22 + }, +/obj/structure/disposalpipe/segment, +/turf/simulated/floor/plating, +/area/maintenance/research) +"bFD" = ( +/obj/machinery/door/blast/regular{ + density = 0; + icon_state = "pdoor0"; + id = "Biohazard"; + name = "Biohazard Shutter"; + opacity = 0 + }, +/obj/structure/sign/warning/high_voltage{ + pixel_x = 32; + pixel_y = 0 + }, +/turf/simulated/floor/plating, +/area/maintenance/research) +"bFE" = ( +/obj/machinery/power/breakerbox/activated{ + RCon_tag = "Research Substation Bypass" + }, +/turf/simulated/floor/plating, +/area/maintenance/substation/research) +"bFF" = ( +/obj/machinery/portable_atmospherics/hydroponics, +/obj/structure/disposalpipe/segment{ + dir = 2; + icon_state = "pipe-c" + }, +/obj/machinery/newscaster{ + pixel_y = 30 + }, +/turf/simulated/floor/tiled/white, +/area/rnd/xenobiology/xenoflora) +"bFG" = ( +/obj/structure/cable/green{ + d1 = 2; + d2 = 8; + icon_state = "2-8" + }, +/obj/machinery/alarm{ + pixel_y = 23 + }, +/obj/structure/table/steel, +/obj/machinery/cell_charger, +/obj/item/stack/cable_coil, +/obj/item/weapon/cell/high{ + charge = 100; + maxcharge = 15000 + }, +/obj/effect/floor_decal/industrial/warning{ + icon_state = "warning"; + dir = 8 + }, +/turf/simulated/floor/plating, +/area/maintenance/substation/research) +"bFH" = ( +/obj/machinery/computer/aifixer, +/obj/structure/extinguisher_cabinet{ + pixel_x = -28; + pixel_y = 0 + }, +/turf/simulated/floor/tiled/dark, +/area/crew_quarters/heads/sc/hor) +"bFI" = ( +/obj/structure/cable/green{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/obj/machinery/atmospherics/unary/vent_pump/on{ + dir = 4 + }, +/obj/effect/floor_decal/borderfloorwhite{ + dir = 8 + }, +/obj/effect/floor_decal/corner/blue/border{ + dir = 8 + }, +/turf/simulated/floor/tiled/white, +/area/crew_quarters/heads/sc/hor) +"bFJ" = ( +/obj/structure/flora/pottedplant/mysterious, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/turf/simulated/floor/tiled/white, +/area/crew_quarters/heads/sc/hor) +"bFK" = ( +/obj/structure/table/reinforced, +/obj/machinery/computer/skills, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 10 + }, +/turf/simulated/floor/tiled/white, +/area/crew_quarters/heads/sc/hor) +"bFL" = ( +/obj/structure/table/reinforced, +/obj/item/weapon/folder/white_rd, +/obj/item/weapon/stamp/rd{ + pixel_x = 3; + pixel_y = -2 + }, +/obj/item/clothing/glasses/welding/superior, +/turf/simulated/floor/tiled/white, +/area/crew_quarters/heads/sc/hor) +"bFM" = ( +/turf/simulated/wall, +/area/crew_quarters/heads/sc/hor) +"bFN" = ( +/obj/machinery/atmospherics/unary/vent_pump/on{ + dir = 4 + }, +/turf/simulated/floor/wood, +/area/rnd/research) +"bFO" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/turf/simulated/floor/wood, +/area/rnd/research) +"bFP" = ( +/obj/machinery/hologram/holopad, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 10 + }, +/turf/simulated/floor/wood, +/area/rnd/research) +"bFQ" = ( +/obj/machinery/alarm{ + dir = 8; + icon_state = "alarm0"; + pixel_x = 22 + }, +/obj/structure/disposalpipe/segment, +/turf/simulated/floor/wood, +/area/rnd/research) +"bFR" = ( +/obj/machinery/portable_atmospherics/hydroponics, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/turf/simulated/floor/tiled/white, +/area/rnd/xenobiology/xenoflora) +"bFS" = ( +/obj/machinery/portable_atmospherics/hydroponics, +/obj/machinery/alarm{ + pixel_y = 22 + }, +/turf/simulated/floor/tiled/white, +/area/rnd/xenobiology/xenoflora) +"bFT" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 5 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, +/obj/structure/cable/green{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/obj/effect/floor_decal/steeldecal/steel_decals4, +/obj/effect/floor_decal/steeldecal/steel_decals4{ + dir = 10 + }, +/turf/simulated/floor/tiled/white, +/area/rnd/research_lockerroom) +"bFU" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/obj/machinery/door/firedoor/border_only, +/obj/machinery/door/airlock/research{ + name = "Toxins Launch Room"; + req_access = list(7) + }, +/obj/structure/cable/green{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/turf/simulated/floor/tiled/steel_grid, +/area/rnd/toxins_launch) +"bFV" = ( +/obj/structure/table/reinforced, +/obj/item/weapon/paper_bin{ + pixel_x = 1; + pixel_y = 9 + }, +/obj/item/weapon/pen/multi, +/obj/item/weapon/paper/monitorkey, +/obj/effect/floor_decal/borderfloorwhite{ + dir = 4 + }, +/obj/effect/floor_decal/corner/blue/border{ + dir = 4 + }, +/obj/machinery/computer/security/telescreen{ + desc = "Used for watching the RD's goons from the safety of his office."; + name = "Research Monitor"; + network = list("Research","Toxins Test Area","Robots","Anomaly Isolation","Research Outpost"); + pixel_x = 32; + pixel_y = -4 + }, +/turf/simulated/floor/tiled/white, +/area/crew_quarters/heads/sc/hor) +"bFW" = ( +/obj/structure/table/glass, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 10 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 10 + }, +/obj/machinery/light{ + dir = 1 + }, +/obj/item/weapon/towel{ + color = "#800080"; + name = "purple towel" + }, +/obj/item/weapon/towel{ + color = "#800080"; + name = "purple towel" + }, +/obj/item/weapon/towel{ + color = "#800080"; + name = "purple towel" + }, +/obj/item/weapon/towel{ + color = "#800080"; + name = "purple towel" + }, +/obj/item/weapon/towel{ + color = "#800080"; + name = "purple towel" + }, +/obj/item/weapon/towel{ + color = "#800080"; + name = "purple towel" + }, +/obj/item/weapon/soap/nanotrasen, +/obj/random/soap, +/obj/structure/cable/green{ + d1 = 2; + d2 = 8; + icon_state = "2-8" + }, +/obj/structure/extinguisher_cabinet{ + pixel_y = 30 + }, +/turf/simulated/floor/tiled/freezer, +/area/rnd/research_restroom_sc) +"bFX" = ( +/turf/simulated/floor/tiled/freezer, +/area/rnd/research_restroom_sc) +"bFY" = ( +/obj/structure/window/basic, +/obj/structure/undies_wardrobe, +/obj/machinery/alarm{ + dir = 8; + icon_state = "alarm0"; + pixel_x = 22 + }, +/obj/item/device/radio/intercom{ + dir = 1; + name = "Station Intercom (General)"; + pixel_y = 21 + }, +/turf/simulated/floor/tiled/freezer, +/area/rnd/research_restroom_sc) +"bFZ" = ( +/obj/machinery/atmospherics/pipe/manifold/hidden/supply{ + dir = 8 + }, +/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{ + dir = 8 + }, +/obj/effect/floor_decal/borderfloorwhite{ + dir = 8 + }, +/obj/effect/floor_decal/corner/purple/border{ + dir = 8 + }, +/turf/simulated/floor/tiled/white, +/area/rnd/research) +"bGa" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, +/obj/structure/cable/green{ + d1 = 2; + d2 = 4; + icon_state = "2-4" + }, +/obj/effect/floor_decal/steeldecal/steel_decals4, +/obj/effect/floor_decal/steeldecal/steel_decals4{ + dir = 10 + }, +/turf/simulated/floor/tiled/white, +/area/rnd/research) +"bGb" = ( +/obj/machinery/door/firedoor/border_only, +/obj/machinery/door/airlock{ + name = "Research Restroom"; + req_access = list(47) + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, +/obj/structure/cable/green{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/turf/simulated/floor/tiled/steel_grid, +/area/rnd/research_restroom_sc) +"bGc" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, +/obj/structure/cable/green{ + d1 = 2; + d2 = 8; + icon_state = "2-8" + }, +/obj/effect/floor_decal/industrial/warning{ + icon_state = "warning"; + dir = 1 + }, +/obj/effect/floor_decal/steeldecal/steel_decals4{ + dir = 6 + }, +/turf/simulated/floor/tiled, +/area/rnd/storage) +"bGd" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers, +/obj/effect/floor_decal/industrial/warning{ + icon_state = "warning"; + dir = 1 + }, +/turf/simulated/floor/tiled, +/area/rnd/storage) +"bGe" = ( +/obj/machinery/atmospherics/pipe/manifold/hidden/supply{ + dir = 1 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, +/obj/effect/floor_decal/industrial/warning{ + icon_state = "warning"; + dir = 1 + }, +/turf/simulated/floor/tiled, +/area/rnd/storage) +"bGf" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 10 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, +/obj/effect/floor_decal/industrial/warning{ + icon_state = "warning"; + dir = 1 + }, +/turf/simulated/floor/tiled, +/area/rnd/storage) +"bGg" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 9 + }, +/obj/effect/floor_decal/industrial/warning{ + icon_state = "warning"; + dir = 1 + }, +/turf/simulated/floor/tiled, +/area/rnd/storage) +"bGh" = ( +/obj/effect/floor_decal/industrial/warning{ + icon_state = "warning"; + dir = 1 + }, +/obj/effect/floor_decal/steeldecal/steel_decals4, +/turf/simulated/floor/tiled, +/area/rnd/storage) +"bGi" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, +/obj/structure/cable/green{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/obj/effect/floor_decal/steeldecal/steel_decals4{ + dir = 1 + }, +/obj/effect/floor_decal/steeldecal/steel_decals4{ + dir = 6 + }, +/turf/simulated/floor/tiled/freezer, +/area/rnd/research_restroom_sc) +"bGj" = ( +/obj/machinery/newscaster{ + pixel_y = 30 + }, +/obj/effect/floor_decal/steeldecal/steel_decals4{ + dir = 1 + }, +/obj/effect/floor_decal/steeldecal/steel_decals4{ + dir = 6 + }, +/turf/simulated/floor/tiled/white, +/area/rnd/mixing) +"bGk" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 6 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 6 + }, +/obj/machinery/ai_status_display{ + pixel_y = 32 + }, +/obj/structure/cable/green{ + d1 = 2; + d2 = 4; + icon_state = "2-4" + }, +/turf/simulated/floor/tiled/white, +/area/rnd/mixing) +"bGl" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/obj/effect/floor_decal/industrial/warning/corner{ + icon_state = "warningcorner"; + dir = 4 + }, +/obj/machinery/firealarm{ + dir = 2; + pixel_y = 24 + }, +/obj/structure/cable/green{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/turf/simulated/floor/tiled/white, +/area/rnd/mixing) +"bGm" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/red{ + icon_state = "intact"; + dir = 9 + }, +/turf/simulated/floor/tiled/dark, +/area/engineering/hallway/atmos_hallway) +"bGn" = ( +/obj/machinery/atmospherics/pipe/simple/visible/red{ + icon_state = "intact"; + dir = 4 + }, +/obj/machinery/meter, +/turf/simulated/floor/tiled/white, +/area/rnd/mixing) +"bGo" = ( +/obj/machinery/atmospherics/pipe/manifold/visible/red{ + icon_state = "map"; + dir = 1 + }, +/turf/simulated/floor/tiled/white, +/area/rnd/mixing) +"bGp" = ( +/obj/machinery/atmospherics/pipe/simple/visible/red{ + icon_state = "intact"; + dir = 6 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 9 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 9 + }, +/obj/effect/floor_decal/industrial/warning{ + icon_state = "warning"; + dir = 1 + }, +/obj/structure/cable/green{ + d1 = 1; + d2 = 8; + icon_state = "1-8" + }, +/turf/simulated/floor/tiled/white, +/area/rnd/mixing) +"bGq" = ( +/obj/machinery/atmospherics/pipe/manifold/visible/red{ + icon_state = "map"; + dir = 1 + }, +/obj/effect/floor_decal/industrial/warning/corner{ + dir = 1 + }, +/obj/machinery/camera/network/research{ + c_tag = "SCI - Toxins Lab 1"; + dir = 2 + }, +/turf/simulated/floor/tiled/white, +/area/rnd/mixing) +"bGr" = ( +/obj/machinery/atmospherics/portables_connector, +/obj/effect/floor_decal/industrial/outline/yellow, +/turf/simulated/floor/tiled/white, +/area/rnd/mixing) +"bGs" = ( +/turf/simulated/wall, +/area/rnd/mixing) +"bGt" = ( +/obj/machinery/atmospherics/unary/vent_pump/high_volume{ + dir = 4; + frequency = 1379; + id_tag = "eng_port_pump" + }, +/obj/effect/floor_decal/industrial/warning{ + dir = 10 + }, +/obj/machinery/embedded_controller/radio/airlock/airlock_controller{ + frequency = 1379; + id_tag = "eng_port_airlock"; + pixel_x = -25; + req_access = list(13); + req_one_access = null; + tag_airpump = "eng_port_pump"; + tag_chamber_sensor = "eng_port_sensor"; + tag_exterior_door = "eng_port_outer"; + tag_interior_door = "eng_port_inner" + }, +/turf/simulated/floor, +/area/engineering/drone_fabrication) +"bGu" = ( +/obj/machinery/atmospherics/pipe/manifold4w/hidden, +/obj/effect/floor_decal/industrial/warning, +/turf/simulated/floor, +/area/engineering/drone_fabrication) +"bGv" = ( +/obj/machinery/atmospherics/unary/vent_pump/high_volume{ + dir = 8; + frequency = 1379; + id_tag = "eng_port_pump" + }, +/obj/effect/floor_decal/industrial/warning{ + dir = 6 + }, +/turf/simulated/floor, +/area/engineering/drone_fabrication) +"bGw" = ( +/obj/machinery/firealarm{ + dir = 8; + pixel_x = -24; + pixel_y = 0 + }, +/obj/structure/catwalk, +/turf/simulated/floor, +/area/engineering/storage) +"bGx" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 6 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 5 + }, +/obj/structure/catwalk, +/turf/simulated/floor, +/area/engineering/storage) +"bGy" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, +/obj/structure/catwalk, +/turf/simulated/floor, +/area/engineering/storage) +"bGz" = ( +/obj/machinery/atmospherics/pipe/manifold/hidden/supply, +/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{ + dir = 1 + }, +/obj/structure/catwalk, +/turf/simulated/floor, +/area/engineering/storage) +"bGA" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, +/obj/structure/cable/green{ + d1 = 1; + d2 = 4; + icon_state = "1-4" + }, +/obj/structure/catwalk, +/turf/simulated/floor, +/area/engineering/storage) +"bGB" = ( +/obj/machinery/door/firedoor/border_only, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, +/obj/machinery/door/airlock/engineering{ + name = "Engineering Hard Storage"; + req_access = list(11) + }, +/obj/structure/cable/green{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/obj/structure/catwalk, +/turf/simulated/floor, +/area/engineering/storage) +"bGC" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, +/obj/structure/cable/green{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/obj/effect/floor_decal/steeldecal/steel_decals4{ + dir = 1 + }, +/obj/effect/floor_decal/steeldecal/steel_decals4{ + dir = 6 + }, +/turf/simulated/floor/tiled, +/area/engineering/hallway/atmos_hallway) +"bGD" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, +/obj/structure/cable/green{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/turf/simulated/floor/tiled/dark, +/area/engineering/hallway/atmos_hallway) +"bGE" = ( +/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/manifold/hidden/supply{ + dir = 4 + }, +/obj/structure/cable/green{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/turf/simulated/floor/tiled/dark, +/area/engineering/hallway/atmos_hallway) +"bGF" = ( +/obj/structure/cable/green{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/obj/structure/disposalpipe/segment, +/obj/structure/cable/green{ + d1 = 1; + d2 = 8; + icon_state = "1-8" + }, +/turf/simulated/floor/tiled/dark, +/area/engineering/hallway/atmos_hallway) +"bGG" = ( +/obj/effect/floor_decal/industrial/warning/corner{ + dir = 4 + }, +/turf/simulated/floor/tiled, +/area/engineering/hallway/atmos_hallway) +"bGH" = ( +/obj/structure/table/reinforced, +/obj/effect/floor_decal/industrial/warning{ + icon_state = "warning"; + dir = 1 + }, +/obj/random/tech_supply, +/obj/random/tech_supply, +/obj/random/tech_supply, +/obj/random/tech_supply, +/turf/simulated/floor/tiled/dark, +/area/engineering/hallway/atmos_hallway) +"bGI" = ( +/obj/machinery/computer/station_alert, +/obj/machinery/light{ + dir = 8; + icon_state = "tube1"; + pixel_y = 0 + }, +/obj/effect/floor_decal/borderfloor{ + dir = 8 + }, +/obj/effect/floor_decal/corner/yellow/border{ + dir = 8 + }, +/turf/simulated/floor/tiled, +/area/engineering/foyer) +"bGJ" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/red, +/obj/machinery/atmospherics/unary/vent_scrubber/on{ + dir = 4 + }, +/obj/structure/disposalpipe/segment, +/turf/simulated/floor/tiled, +/area/engineering/foyer) +"bGK" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/cyan, +/obj/machinery/hologram/holopad, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 10 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 6 + }, +/turf/simulated/floor/tiled, +/area/engineering/foyer) +"bGL" = ( +/obj/machinery/atmospherics/unary/vent_pump/on{ + dir = 8 + }, +/turf/simulated/floor/tiled, +/area/engineering/foyer) +"bGM" = ( +/obj/machinery/computer/atmoscontrol, +/obj/machinery/light{ + dir = 4 + }, +/obj/effect/floor_decal/borderfloor{ + dir = 4 + }, +/obj/effect/floor_decal/corner/yellow/border{ + dir = 4 + }, +/turf/simulated/floor/tiled, +/area/engineering/foyer) +"bGN" = ( +/obj/item/clothing/shoes/magboots, +/obj/item/clothing/mask/breath, +/obj/item/clothing/head/helmet/space/void/engineering, +/obj/structure/table/rack{ + dir = 8; + layer = 2.6 + }, +/obj/item/clothing/suit/space/void/engineering, +/obj/structure/window/reinforced{ + dir = 8 + }, +/obj/structure/window/reinforced, +/obj/machinery/door/window/eastright{ + name = "Engineering Suits"; + req_access = list(11) + }, +/turf/simulated/floor/tiled/dark, +/area/engineering/engineer_eva) +"bGO" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/obj/effect/floor_decal/borderfloor{ + dir = 8 + }, +/obj/effect/floor_decal/corner/yellow/border{ + dir = 8 + }, +/turf/simulated/floor/tiled, +/area/engineering/engineer_eva) +"bGP" = ( +/obj/machinery/suit_cycler/engineering, +/turf/simulated/floor/tiled/dark, +/area/engineering/engineer_eva) +"bGQ" = ( +/obj/machinery/atmospherics/unary/vent_scrubber/on, +/obj/structure/cable/green{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/obj/effect/floor_decal/borderfloor{ + dir = 4 + }, +/obj/effect/floor_decal/corner/yellow/border{ + dir = 4 + }, +/turf/simulated/floor/tiled, +/area/engineering/engineer_eva) +"bGR" = ( +/obj/item/weapon/tank/jetpack/carbondioxide, +/obj/structure/window/reinforced{ + dir = 4; + health = 1e+006 + }, +/obj/structure/window/reinforced, +/obj/structure/table/rack{ + dir = 8; + layer = 2.6 + }, +/obj/machinery/door/window/westleft{ + name = "Jetpack Storage"; + req_one_access = list(11,24) + }, +/obj/machinery/light{ + dir = 4 + }, +/turf/simulated/floor/tiled/dark, +/area/engineering/engineer_eva) +"bGS" = ( +/obj/machinery/atmospherics/pipe/manifold/hidden/supply{ + dir = 8 + }, +/obj/effect/floor_decal/industrial/warning, +/turf/simulated/floor/plating, +/area/maintenance/engineering) +"bGT" = ( +/obj/machinery/atmospherics/pipe/simple/visible/universal{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/obj/effect/floor_decal/industrial/warning, +/turf/simulated/floor/plating, +/area/maintenance/engineering) +"bGU" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 5 + }, +/obj/machinery/door/blast/regular{ + density = 0; + dir = 1; + icon_state = "pdoor0"; + id = "englockdown"; + name = "Engineering Lockdown"; + opacity = 0 + }, +/turf/simulated/floor/plating, +/area/maintenance/engineering) +"bGV" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/cyan{ + dir = 5; + icon_state = "intact" + }, +/turf/simulated/floor, +/area/maintenance/engineering) +"bGW" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/obj/structure/cable{ + d1 = 1; + d2 = 2; + icon_state = "1-2"; + pixel_y = 0 + }, +/obj/machinery/door/firedoor/border_only, +/turf/simulated/floor/plating, +/area/maintenance/engineering) +"bGX" = ( +/obj/machinery/light/small{ + dir = 8 + }, +/obj/machinery/space_heater, +/turf/simulated/floor/plating, +/area/storage/emergency_storage/seconddeck/fp_emergency) +"bGY" = ( +/obj/structure/ladder/updown, +/obj/effect/floor_decal/industrial/outline/yellow, +/turf/simulated/floor/plating, +/area/storage/emergency_storage/seconddeck/fp_emergency) +"bGZ" = ( +/obj/machinery/door/firedoor/border_only, +/obj/effect/wingrille_spawn/reinforced, +/turf/simulated/floor/plating, +/area/maintenance/engineering) +"bHa" = ( +/turf/simulated/wall, +/area/hallway/primary/seconddeck/fscenter) +"bHb" = ( +/obj/structure/disposalpipe/segment, +/obj/machinery/ai_status_display{ + pixel_x = -32; + pixel_y = 0 + }, +/obj/effect/floor_decal/borderfloor/corner{ + dir = 8 + }, +/obj/effect/floor_decal/corner/red/bordercorner{ + dir = 8 + }, +/turf/simulated/floor/tiled, +/area/hallway/primary/seconddeck/fscenter) +"bHc" = ( +/obj/structure/cable{ + d1 = 1; + d2 = 2; + icon_state = "1-2"; + pixel_y = 0 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/turf/simulated/floor/tiled/monotile, +/area/hallway/primary/seconddeck/fscenter) +"bHd" = ( +/obj/machinery/status_display{ + density = 0; + layer = 4; + pixel_x = 32; + pixel_y = 0 + }, +/obj/effect/floor_decal/borderfloor/corner, +/obj/effect/floor_decal/corner/red/bordercorner, +/turf/simulated/floor/tiled, +/area/hallway/primary/seconddeck/fscenter) +"bHe" = ( +/obj/structure/closet/emcloset, +/obj/structure/catwalk, +/turf/simulated/floor/plating, +/area/storage/emergency_storage/seconddeck/fs_emergency) +"bHf" = ( +/obj/structure/reagent_dispensers/watertank, +/obj/structure/catwalk, +/turf/simulated/floor/plating, +/area/storage/emergency_storage/seconddeck/fs_emergency) +"bHg" = ( +/obj/item/weapon/storage/box/lights/mixed, +/obj/structure/table/steel, +/obj/random/maintenance/clean, +/obj/random/maintenance/clean, +/obj/machinery/light/small{ + dir = 1 + }, +/obj/random/maintenance/research, +/obj/random/maintenance/research, +/obj/random/technology_scanner, +/obj/structure/catwalk, +/turf/simulated/floor/plating, +/area/storage/emergency_storage/seconddeck/fs_emergency) +"bHh" = ( +/obj/machinery/floodlight, +/obj/structure/catwalk, +/turf/simulated/floor/plating, +/area/storage/emergency_storage/seconddeck/fs_emergency) +"bHi" = ( +/obj/effect/floor_decal/industrial/warning{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/structure/cable{ + d1 = 2; + d2 = 4; + icon_state = "2-4" + }, +/obj/structure/cable{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/obj/structure/disposalpipe/segment, +/turf/simulated/floor/plating, +/area/maintenance/research) +"bHj" = ( +/obj/structure/cable{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/obj/machinery/door/blast/regular{ + density = 0; + icon_state = "pdoor0"; + id = "Biohazard"; + name = "Biohazard Shutter"; + opacity = 0 + }, +/turf/simulated/floor/plating, +/area/maintenance/research) +"bHk" = ( +/obj/machinery/door/firedoor, +/obj/structure/cable{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/obj/machinery/door/airlock/engineering{ + name = "Science Substation"; + req_one_access = list(11,24,47) + }, +/turf/simulated/floor/plating, +/area/maintenance/substation/research) +"bHl" = ( +/obj/structure/cable{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/obj/structure/cable{ + d1 = 1; + d2 = 8; + icon_state = "1-8" + }, +/obj/effect/floor_decal/industrial/warning{ + icon_state = "warning"; + dir = 1 + }, +/turf/simulated/floor/plating, +/area/maintenance/substation/research) +"bHm" = ( +/obj/structure/cable{ + d2 = 8; + icon_state = "0-8" + }, +/obj/machinery/power/terminal{ + icon_state = "term"; + dir = 1 + }, +/obj/effect/floor_decal/industrial/warning{ + icon_state = "warning"; + dir = 1 + }, +/turf/simulated/floor/plating, +/area/maintenance/substation/research) +"bHn" = ( +/obj/structure/cable/green{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/obj/machinery/light/small{ + dir = 4 + }, +/obj/effect/floor_decal/industrial/warning/corner{ + dir = 1 + }, +/turf/simulated/floor/plating, +/area/maintenance/substation/research) +"bHo" = ( +/obj/machinery/computer/robotics, +/obj/machinery/alarm{ + dir = 4; + icon_state = "alarm0"; + pixel_x = -22; + pixel_y = 0 + }, +/turf/simulated/floor/tiled/dark, +/area/crew_quarters/heads/sc/hor) +"bHp" = ( +/obj/structure/cable/green{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/obj/effect/floor_decal/borderfloorwhite{ + dir = 8 + }, +/obj/effect/floor_decal/corner/blue/border{ + dir = 8 + }, +/turf/simulated/floor/tiled/white, +/area/crew_quarters/heads/sc/hor) +"bHq" = ( +/obj/machinery/hologram/holopad, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 6 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/effect/floor_decal/industrial/outline/grey, +/turf/simulated/floor/tiled/white, +/area/crew_quarters/heads/sc/hor) +"bHr" = ( +/obj/structure/bed/chair{ + dir = 1 + }, +/obj/machinery/atmospherics/unary/vent_scrubber/on{ + dir = 8 + }, +/turf/simulated/floor/tiled/white, +/area/crew_quarters/heads/sc/hor) +"bHs" = ( +/obj/machinery/papershredder, +/obj/effect/floor_decal/borderfloorwhite{ + dir = 4 + }, +/obj/effect/floor_decal/corner/blue/border{ + dir = 4 + }, +/turf/simulated/floor/tiled/white, +/area/crew_quarters/heads/sc/hor) +"bHt" = ( +/obj/machinery/camera/network/research{ + c_tag = "SCI - Break Room"; + dir = 4 + }, +/turf/simulated/floor/wood, +/area/rnd/research) +"bHu" = ( +/obj/structure/table/glass, +/obj/item/weapon/material/minihoe, +/obj/item/weapon/material/minihoe, +/obj/item/weapon/material/knife/machete/hatchet, +/obj/item/weapon/material/knife/machete/hatchet, +/turf/simulated/floor/tiled/white, +/area/rnd/xenobiology/xenoflora) +"bHv" = ( +/obj/structure/sink/kitchen{ + pixel_y = 28 + }, +/obj/item/weapon/reagent_containers/glass/bucket, +/obj/item/weapon/reagent_containers/glass/bucket, +/obj/machinery/atmospherics/pipe/simple/hidden/yellow, +/turf/simulated/floor/tiled/white, +/area/rnd/xenobiology/xenoflora) +"bHw" = ( +/obj/machinery/atmospherics/pipe/manifold/visible{ + dir = 8 + }, +/obj/machinery/meter, +/turf/simulated/floor/tiled/white, +/area/rnd/xenobiology/xenoflora_isolation) +"bHx" = ( +/obj/structure/disposalpipe/segment, +/turf/simulated/floor/wood, +/area/rnd/research) +"bHy" = ( +/obj/machinery/door/firedoor/border_only, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, +/obj/machinery/door/airlock/research{ + name = "Toxins Storage"; + req_access = list(8) + }, +/obj/structure/cable/green{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/turf/simulated/floor/tiled/steel_grid, +/area/rnd/storage) +"bHz" = ( +/obj/structure/closet/crate/hydroponics/exotic, +/obj/item/device/radio/intercom{ + dir = 1; + name = "Station Intercom (General)"; + pixel_y = 21 + }, +/obj/machinery/light{ + dir = 8 + }, +/turf/simulated/floor/tiled/white, +/area/rnd/xenobiology/xenoflora_isolation) +"bHA" = ( +/obj/machinery/atmospherics/pipe/simple/visible{ + icon_state = "intact"; + dir = 10 + }, +/turf/simulated/floor/tiled/white, +/area/rnd/xenobiology/xenoflora_isolation) +"bHB" = ( +/obj/machinery/atmospherics/pipe/simple/visible{ + icon_state = "intact"; + dir = 10 + }, +/obj/item/weapon/storage/toolbox/mechanical, +/obj/structure/extinguisher_cabinet{ + pixel_y = 30 + }, +/obj/machinery/light{ + icon_state = "tube1"; + dir = 4 + }, +/turf/simulated/floor/tiled/white, +/area/rnd/xenobiology/xenoflora_isolation) +"bHC" = ( +/obj/structure/sink{ + icon_state = "sink"; + dir = 8; + pixel_x = -12; + pixel_y = 2 + }, +/obj/structure/mirror{ + pixel_x = -28 + }, +/turf/simulated/floor/tiled/freezer, +/area/rnd/research_restroom_sc) +"bHD" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{ + dir = 8 + }, +/obj/structure/cable/green{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/turf/simulated/floor/tiled/freezer, +/area/rnd/research_restroom_sc) +"bHE" = ( +/obj/machinery/atmospherics/unary/vent_scrubber/on{ + dir = 8 + }, +/turf/simulated/floor/tiled/freezer, +/area/rnd/research_restroom_sc) +"bHF" = ( +/obj/machinery/shower{ + dir = 8; + icon_state = "shower"; + pixel_x = -5; + pixel_y = -1 + }, +/obj/machinery/door/window/westright{ + name = "Shower" + }, +/obj/structure/curtain/open/shower, +/turf/simulated/floor/tiled/freezer, +/area/rnd/research_restroom_sc) +"bHG" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/obj/effect/floor_decal/borderfloorwhite{ + dir = 8 + }, +/obj/effect/floor_decal/corner/purple/border{ + dir = 8 + }, +/turf/simulated/floor/tiled/white, +/area/rnd/research) +"bHH" = ( +/obj/structure/cable/green{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/obj/effect/floor_decal/borderfloorwhite/corner, +/obj/effect/floor_decal/corner/purple/bordercorner, +/turf/simulated/floor/tiled/white, +/area/rnd/research) +"bHI" = ( +/obj/structure/cable/green, +/obj/machinery/power/apc{ + dir = 8; + name = "west bump"; + pixel_x = -24 + }, +/obj/machinery/light_switch{ + pixel_x = -36 + }, +/obj/effect/floor_decal/industrial/warning/corner, +/obj/structure/extinguisher_cabinet{ + pixel_y = -30 + }, +/turf/simulated/floor/tiled, +/area/rnd/storage) +"bHJ" = ( +/obj/effect/floor_decal/industrial/warning, +/turf/simulated/floor/tiled, +/area/rnd/storage) +"bHK" = ( +/obj/machinery/atmospherics/unary/vent_pump/on{ + dir = 1 + }, +/obj/effect/floor_decal/industrial/warning, +/turf/simulated/floor/tiled, +/area/rnd/storage) +"bHL" = ( +/obj/effect/floor_decal/industrial/warning, +/obj/structure/closet/firecloset, +/obj/machinery/light{ + dir = 4; + icon_state = "tube1" + }, +/turf/simulated/floor/tiled, +/area/rnd/storage) +"bHM" = ( +/obj/machinery/vending/phoronresearch, +/turf/simulated/floor/tiled/white, +/area/rnd/mixing) +"bHN" = ( +/obj/machinery/atmospherics/pipe/manifold/hidden/supply{ + dir = 8 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/obj/structure/cable/green{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/turf/simulated/floor/tiled/white, +/area/rnd/mixing) +"bHO" = ( +/obj/machinery/atmospherics/unary/vent_pump/on{ + dir = 8 + }, +/turf/simulated/floor/tiled/white, +/area/rnd/mixing) +"bHP" = ( +/obj/machinery/atmospherics/binary/pump{ + dir = 1; + name = "Heated to Waste" + }, +/turf/simulated/floor/tiled/white, +/area/rnd/mixing) +"bHQ" = ( +/obj/effect/floor_decal/industrial/warning/full, +/obj/machinery/atmospherics/binary/pump{ + dir = 2; + name = "Waste to Scrubbers" + }, +/turf/simulated/floor/plating, +/area/rnd/mixing) +"bHR" = ( +/turf/simulated/floor/tiled/white, +/area/rnd/mixing) +"bHS" = ( +/obj/machinery/atmospherics/portables_connector{ + dir = 1 + }, +/obj/machinery/portable_atmospherics/powered/pump, +/obj/effect/floor_decal/industrial/outline/yellow, +/turf/simulated/floor/tiled/white, +/area/rnd/mixing) +"bHT" = ( +/obj/machinery/atmospherics/binary/pump{ + dir = 1; + name = "Heater to Waste" + }, +/turf/simulated/floor/tiled/white, +/area/rnd/mixing) +"bHU" = ( +/obj/machinery/atmospherics/binary/pump, +/turf/simulated/floor/tiled/white, +/area/rnd/mixing) +"bHV" = ( +/obj/effect/wingrille_spawn/reinforced_phoron, +/obj/machinery/door/firedoor/glass, +/turf/simulated/floor/plating, +/area/rnd/mixing) +"bHW" = ( +/turf/simulated/wall/r_wall, +/area/engineering/engine_waste) +"bHX" = ( +/obj/machinery/door/firedoor/border_only, +/obj/effect/wingrille_spawn/reinforced, +/turf/simulated/floor/plating, +/area/engineering/drone_fabrication) +"bHY" = ( +/obj/machinery/door/airlock/glass_external{ + frequency = 1379; + icon_state = "door_locked"; + id_tag = "eng_port_inner"; + locked = 1; + name = "Engineering Internal Access"; + req_access = list(13) + }, +/turf/simulated/floor, +/area/engineering/drone_fabrication) +"bHZ" = ( +/obj/machinery/atmospherics/pipe/simple/hidden, +/obj/machinery/door/airlock/glass_external{ + frequency = 1379; + icon_state = "door_locked"; + id_tag = "eng_port_inner"; + locked = 1; + name = "Engineering Internal Access"; + req_access = list(13) + }, +/turf/simulated/floor, +/area/engineering/drone_fabrication) +"bIa" = ( +/obj/machinery/power/emitter, +/obj/effect/floor_decal/industrial/outline/yellow, +/turf/simulated/floor, +/area/engineering/storage) +"bIb" = ( +/obj/structure/closet/crate/solar, +/obj/effect/floor_decal/industrial/outline/yellow, +/turf/simulated/floor, +/area/engineering/storage) +"bIc" = ( +/obj/effect/floor_decal/industrial/outline/yellow, +/obj/machinery/atmospherics/unary/vent_pump/on{ + dir = 1 + }, +/obj/machinery/floodlight, +/turf/simulated/floor, +/area/engineering/storage) +"bId" = ( +/obj/machinery/power/port_gen/pacman, +/obj/effect/floor_decal/industrial/outline/yellow, +/turf/simulated/floor/plating, +/area/engineering/storage) +"bIe" = ( +/obj/machinery/space_heater, +/obj/effect/floor_decal/industrial/outline/yellow, +/obj/machinery/atmospherics/unary/vent_scrubber/on{ + dir = 1 + }, +/turf/simulated/floor, +/area/engineering/storage) +"bIf" = ( +/obj/structure/dispenser{ + oxygentanks = 0 + }, +/obj/effect/floor_decal/industrial/outline/yellow, +/turf/simulated/floor, +/area/engineering/storage) +"bIg" = ( +/obj/machinery/alarm{ + dir = 1; + pixel_y = -22 + }, +/obj/machinery/portable_atmospherics/powered/pump/filled, +/obj/machinery/ai_status_display{ + pixel_x = -32; + pixel_y = 0 + }, +/turf/simulated/floor/tiled, +/area/engineering/hallway/atmos_hallway) +"bIh" = ( +/obj/effect/floor_decal/steeldecal/steel_decals4{ + dir = 8 + }, +/obj/effect/floor_decal/steeldecal/steel_decals4{ + dir = 5 + }, +/turf/simulated/floor/tiled, +/area/engineering/hallway/atmos_hallway) +"bIi" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/obj/machinery/light, +/turf/simulated/floor/tiled, +/area/engineering/hallway/atmos_hallway) +"bIj" = ( +/obj/structure/cable/green{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/obj/structure/disposalpipe/junction{ + dir = 1 + }, +/obj/effect/floor_decal/steeldecal/steel_decals4{ + dir = 8 + }, +/obj/effect/floor_decal/steeldecal/steel_decals4{ + dir = 5 + }, +/turf/simulated/floor/tiled, +/area/engineering/hallway/atmos_hallway) +"bIk" = ( +/obj/machinery/disposal, +/obj/structure/disposalpipe/trunk{ + dir = 8 + }, +/turf/simulated/floor/tiled, +/area/engineering/hallway/atmos_hallway) +"bIl" = ( +/obj/structure/table/reinforced, +/obj/random/tech_supply, +/obj/random/tech_supply, +/obj/random/tech_supply, +/obj/machinery/recharger{ + pixel_y = 0 + }, +/obj/random/tech_supply, +/turf/simulated/floor/tiled/dark, +/area/engineering/hallway/atmos_hallway) +"bIm" = ( +/obj/item/device/t_scanner, +/obj/structure/table/steel, +/obj/machinery/alarm{ + dir = 8; + icon_state = "alarm0"; + pixel_x = 24 + }, +/obj/random/cash, +/turf/simulated/floor/plating, +/area/maintenance/engineering) +"bIn" = ( +/obj/machinery/computer/rcon, +/obj/machinery/alarm{ + dir = 4; + icon_state = "alarm0"; + pixel_x = -22; + pixel_y = 0 + }, +/obj/effect/floor_decal/borderfloor{ + dir = 8 + }, +/obj/effect/floor_decal/corner/yellow/border{ + dir = 8 + }, +/turf/simulated/floor/tiled, +/area/engineering/foyer) +"bIo" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/red, +/obj/structure/bed/chair/office/dark, +/obj/effect/landmark/start{ + name = "Station Engineer" + }, +/obj/structure/disposalpipe/segment, +/turf/simulated/floor/tiled, +/area/engineering/foyer) +"bIp" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/cyan, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/turf/simulated/floor/tiled, +/area/engineering/foyer) +"bIq" = ( +/obj/structure/bed/chair/office/dark, +/obj/effect/landmark/start{ + name = "Atmospheric Technician" + }, +/turf/simulated/floor/tiled, +/area/engineering/foyer) +"bIr" = ( +/obj/machinery/computer/atmos_alert, +/obj/item/device/radio/intercom{ + dir = 4; + name = "Station Intercom (General)"; + pixel_x = 21 + }, +/obj/effect/floor_decal/borderfloor{ + dir = 4 + }, +/obj/effect/floor_decal/corner/yellow/border{ + dir = 4 + }, +/turf/simulated/floor/tiled, +/area/engineering/foyer) +"bIs" = ( +/obj/item/clothing/shoes/magboots, +/obj/item/clothing/mask/breath, +/obj/item/clothing/head/helmet/space/void/engineering, +/obj/structure/table/rack{ + dir = 8; + layer = 2.6 + }, +/obj/item/clothing/suit/space/void/engineering, +/obj/structure/window/reinforced{ + dir = 8 + }, +/obj/structure/window/reinforced{ + dir = 1 + }, +/obj/machinery/door/window/eastleft{ + name = "Engineering Suits"; + req_access = list(11) + }, +/obj/item/device/radio/intercom{ + dir = 8; + name = "Station Intercom (General)"; + pixel_x = -21 + }, +/turf/simulated/floor/tiled/dark, +/area/engineering/engineer_eva) +"bIt" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 5 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 5 + }, +/obj/effect/floor_decal/borderfloor{ + dir = 8 + }, +/obj/effect/floor_decal/corner/yellow/border{ + dir = 8 + }, +/turf/simulated/floor/tiled, +/area/engineering/engineer_eva) +"bIu" = ( +/obj/structure/table/steel_reinforced, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 10 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, +/obj/item/weapon/storage/briefcase/inflatable{ + pixel_x = 3; + pixel_y = 6 + }, +/obj/item/weapon/storage/briefcase/inflatable{ + pixel_y = 3 + }, +/obj/item/device/suit_cooling_unit, +/obj/item/device/suit_cooling_unit, +/turf/simulated/floor/tiled/dark, +/area/engineering/engineer_eva) +"bIv" = ( +/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{ + dir = 4 + }, +/obj/structure/cable/green{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/obj/effect/floor_decal/borderfloor{ + dir = 4 + }, +/obj/effect/floor_decal/corner/yellow/border{ + dir = 4 + }, +/turf/simulated/floor/tiled, +/area/engineering/engineer_eva) +"bIw" = ( +/obj/item/clothing/shoes/magboots, +/obj/item/clothing/suit/space/void/atmos, +/obj/item/clothing/mask/breath, +/obj/item/clothing/head/helmet/space/void/atmos, +/obj/structure/window/reinforced{ + dir = 4; + health = 1e+006 + }, +/obj/structure/window/reinforced{ + dir = 1 + }, +/obj/structure/table/rack{ + dir = 8; + layer = 2.6 + }, +/obj/machinery/door/window/westright{ + name = "Atmospherics Suits"; + req_access = list(24) + }, +/turf/simulated/floor/tiled/dark, +/area/engineering/engineer_eva) +"bIx" = ( +/turf/simulated/wall, +/area/engineering/locker_room) +"bIy" = ( +/obj/machinery/door/firedoor/border_only, +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/obj/machinery/door/airlock/maintenance{ + req_one_access = list(11,24) + }, +/turf/simulated/floor, +/area/engineering/locker_room) +"bIz" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/obj/structure/cable{ + d1 = 1; + d2 = 2; + icon_state = "1-2"; + pixel_y = 0 + }, +/obj/effect/floor_decal/industrial/warning{ + icon_state = "warning"; + dir = 1 + }, +/turf/simulated/floor/plating, +/area/maintenance/engineering) +"bIA" = ( +/obj/item/device/t_scanner, +/obj/item/weapon/storage/box/lights/mixed, +/obj/item/weapon/storage/box/lights/mixed, +/obj/structure/table/steel, +/obj/random/maintenance/engineering, +/obj/random/maintenance/clean, +/obj/random/maintenance/clean, +/turf/simulated/floor/plating, +/area/storage/emergency_storage/seconddeck/fp_emergency) +"bIB" = ( +/obj/structure/cable{ + d1 = 1; + d2 = 4; + icon_state = "1-4" + }, +/obj/structure/cable{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/obj/structure/catwalk, +/turf/simulated/floor/plating, +/area/storage/emergency_storage/seconddeck/fp_emergency) +"bIC" = ( +/obj/machinery/power/apc{ + dir = 4; + name = "east bump"; + pixel_x = 24 + }, +/obj/structure/cable{ + d2 = 8; + icon_state = "0-8" + }, +/obj/structure/catwalk, +/turf/simulated/floor/plating, +/area/storage/emergency_storage/seconddeck/fp_emergency) +"bID" = ( +/obj/machinery/door/firedoor/border_only, +/obj/effect/wingrille_spawn/reinforced, +/turf/simulated/floor/plating, +/area/hallway/primary/seconddeck/fscenter) +"bIE" = ( +/obj/machinery/atmospherics/unary/vent_pump/on{ + dir = 4 + }, +/obj/structure/closet/emcloset, +/turf/simulated/floor/tiled/dark, +/area/hallway/primary/seconddeck/fscenter) +"bIF" = ( +/obj/structure/disposalpipe/segment, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/obj/effect/floor_decal/borderfloor{ + dir = 8 + }, +/obj/effect/floor_decal/corner/red/border{ + dir = 8 + }, +/turf/simulated/floor/tiled, +/area/hallway/primary/seconddeck/fscenter) +"bIG" = ( +/obj/structure/cable{ + d1 = 1; + d2 = 2; + icon_state = "1-2"; + pixel_y = 0 + }, +/obj/machinery/atmospherics/pipe/manifold/hidden/supply{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{ + dir = 8 + }, +/turf/simulated/floor/tiled/monotile, +/area/hallway/primary/seconddeck/fscenter) +"bIH" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, +/obj/effect/floor_decal/borderfloor{ + dir = 4 + }, +/obj/effect/floor_decal/corner/red/border{ + dir = 4 + }, +/turf/simulated/floor/tiled, +/area/hallway/primary/seconddeck/fscenter) +"bII" = ( +/obj/machinery/atmospherics/unary/vent_scrubber/on{ + dir = 8 + }, +/obj/structure/flora/pottedplant/stoutbush, +/turf/simulated/floor/tiled/dark, +/area/hallway/primary/seconddeck/fscenter) +"bIJ" = ( +/obj/structure/cable{ + icon_state = "0-4"; + d2 = 4 + }, +/obj/structure/cable{ + d1 = 16; + d2 = 0; + icon_state = "16-0" + }, +/turf/simulated/floor/plating, +/area/storage/emergency_storage/seconddeck/fs_emergency) +"bIK" = ( +/obj/structure/cable{ + d1 = 2; + d2 = 4; + icon_state = "2-4" + }, +/obj/structure/cable{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/obj/structure/catwalk, +/turf/simulated/floor/plating, +/area/storage/emergency_storage/seconddeck/fs_emergency) +"bIL" = ( +/obj/structure/cable{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/obj/structure/catwalk, +/turf/simulated/floor/plating, +/area/storage/emergency_storage/seconddeck/fs_emergency) +"bIM" = ( +/obj/machinery/door/firedoor/border_only, +/obj/structure/cable{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/obj/machinery/door/airlock{ + name = "Emergency Storage" + }, +/turf/simulated/floor/plating, +/area/storage/emergency_storage/seconddeck/fs_emergency) +"bIN" = ( +/obj/effect/floor_decal/industrial/warning{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/structure/cable{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/obj/structure/cable{ + d1 = 1; + d2 = 8; + icon_state = "1-8" + }, +/obj/structure/disposalpipe/segment, +/turf/simulated/floor/plating, +/area/maintenance/research) +"bIO" = ( +/obj/structure/cable/green{ + d2 = 4; + icon_state = "0-4" + }, +/obj/machinery/power/apc{ + dir = 2; + name = "south bump"; + pixel_y = -24 + }, +/obj/machinery/firealarm{ + dir = 8; + pixel_x = -24 + }, +/turf/simulated/floor/plating, +/area/maintenance/substation/research) +"bIP" = ( +/obj/structure/cable/green{ + d2 = 4; + icon_state = "0-4" + }, +/obj/structure/cable/green{ + d2 = 8; + icon_state = "0-8" + }, +/obj/machinery/power/sensor{ + name = "Powernet Sensor - Research Subgrid"; + name_tag = "Research Subgrid" + }, +/obj/structure/cable/green{ + d2 = 2; + icon_state = "0-2" + }, +/turf/simulated/floor/plating, +/area/maintenance/substation/research) +"bIQ" = ( +/obj/structure/cable/green{ + d1 = 1; + d2 = 8; + icon_state = "1-8" + }, +/turf/simulated/floor/plating, +/area/maintenance/substation/research) +"bIR" = ( +/obj/machinery/computer/mecha, +/obj/item/device/radio/intercom{ + name = "Station Intercom (General)"; + pixel_y = -21 + }, +/obj/machinery/newscaster{ + pixel_x = -30; + pixel_y = 0 + }, +/turf/simulated/floor/tiled/dark, +/area/crew_quarters/heads/sc/hor) +"bIS" = ( +/obj/structure/cable/green{ + d1 = 1; + d2 = 4; + icon_state = "1-4" + }, +/obj/machinery/light, +/obj/effect/floor_decal/borderfloorwhite{ + dir = 10 + }, +/obj/effect/floor_decal/corner/blue/border{ + dir = 10 + }, +/turf/simulated/floor/tiled/white, +/area/crew_quarters/heads/sc/hor) +"bIT" = ( +/obj/structure/cable/green{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/obj/effect/floor_decal/borderfloorwhite/corner{ + dir = 8 + }, +/obj/effect/floor_decal/corner/blue/bordercorner{ + dir = 8 + }, +/obj/machinery/camera/network/research{ + c_tag = "SCI - RD's Office"; + dir = 1 + }, +/turf/simulated/floor/tiled/white, +/area/crew_quarters/heads/sc/hor) +"bIU" = ( +/obj/structure/cable/green{ + d1 = 2; + d2 = 8; + icon_state = "2-8" + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/effect/floor_decal/steeldecal/steel_decals4{ + dir = 8 + }, +/obj/effect/floor_decal/steeldecal/steel_decals4{ + dir = 5 + }, +/turf/simulated/floor/tiled/white, +/area/crew_quarters/heads/sc/hor) +"bIV" = ( +/obj/effect/floor_decal/borderfloorwhite/corner, +/obj/effect/floor_decal/corner/blue/bordercorner, +/turf/simulated/floor/tiled/white, +/area/crew_quarters/heads/sc/hor) +"bIW" = ( +/obj/machinery/disposal, +/obj/structure/disposalpipe/trunk, +/obj/effect/floor_decal/borderfloorwhite{ + dir = 6 + }, +/obj/effect/floor_decal/corner/blue/border{ + dir = 6 + }, +/turf/simulated/floor/tiled/white, +/area/crew_quarters/heads/sc/hor) +"bIX" = ( +/obj/structure/table/glass, +/obj/machinery/recharger{ + pixel_y = 0 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 6 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/machinery/light, +/obj/machinery/computer/security/telescreen/entertainment{ + icon_state = "frame"; + pixel_x = 0; + pixel_y = -32 + }, +/turf/simulated/floor/wood, +/area/rnd/research) +"bIY" = ( +/obj/structure/table/glass, +/obj/item/device/radio/intercom{ + dir = 8; + name = "Station Intercom (General)"; + pixel_x = -21 + }, +/obj/effect/floor_decal/borderfloorwhite{ + dir = 9 + }, +/obj/effect/floor_decal/corner/purple/border{ + dir = 9 + }, +/turf/simulated/floor/tiled/white, +/area/rnd/research/firstdeck/hallway) +"bIZ" = ( +/obj/machinery/atmospherics/unary/vent_scrubber/on{ + dir = 8 + }, +/obj/machinery/newscaster{ + pixel_x = 30; + pixel_y = 0 + }, +/obj/structure/disposalpipe/segment, +/turf/simulated/floor/wood, +/area/rnd/research) +"bJa" = ( +/obj/machinery/atmospherics/unary/vent_pump/on{ + dir = 8 + }, +/obj/effect/floor_decal/borderfloorwhite{ + dir = 1 + }, +/obj/effect/floor_decal/corner/purple/border{ + dir = 1 + }, +/turf/simulated/floor/tiled/white, +/area/rnd/research/firstdeck/hallway) +"bJb" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 6 + }, +/obj/effect/floor_decal/borderfloorwhite{ + dir = 1 + }, +/obj/effect/floor_decal/corner/purple/border{ + dir = 1 + }, +/turf/simulated/floor/tiled/white, +/area/rnd/research/firstdeck/hallway) +"bJc" = ( +/obj/effect/floor_decal/borderfloorwhite{ + dir = 1 + }, +/obj/effect/floor_decal/corner/purple/border{ + dir = 1 + }, +/obj/machinery/camera/network/research{ + c_tag = "SCI - First Deck Stair Access"; + dir = 8 + }, +/turf/simulated/floor/tiled/white, +/area/rnd/research/firstdeck/hallway) +"bJd" = ( +/obj/machinery/atmospherics/unary/vent_pump/on{ + dir = 4 + }, +/obj/structure/sink{ + icon_state = "sink"; + dir = 8; + pixel_x = -12; + pixel_y = 2 + }, +/obj/structure/mirror{ + pixel_x = -28 + }, +/obj/machinery/firealarm{ + dir = 1; + pixel_x = 0; + pixel_y = -24 + }, +/turf/simulated/floor/tiled/freezer, +/area/rnd/research_restroom_sc) +"bJe" = ( +/obj/machinery/atmospherics/pipe/manifold/hidden/supply{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/obj/structure/cable/green{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/obj/structure/cable/green{ + d1 = 2; + d2 = 4; + icon_state = "2-4" + }, +/obj/effect/floor_decal/steeldecal/steel_decals4{ + dir = 8 + }, +/obj/effect/floor_decal/steeldecal/steel_decals4{ + dir = 5 + }, +/turf/simulated/floor/tiled/freezer, +/area/rnd/research_restroom_sc) +"bJf" = ( +/obj/machinery/power/apc{ + dir = 2; + name = "south bump"; + pixel_y = -24 + }, +/obj/machinery/light_switch{ + pixel_x = 12; + pixel_y = -24 + }, +/obj/structure/cable/green{ + d2 = 8; + icon_state = "0-8" + }, +/turf/simulated/floor/tiled/freezer, +/area/rnd/research_restroom_sc) +"bJg" = ( +/obj/machinery/door/window/westleft{ + name = "Shower" + }, +/obj/machinery/shower{ + dir = 8; + icon_state = "shower"; + pixel_x = -5; + pixel_y = -1 + }, +/obj/structure/curtain/open/shower, +/turf/simulated/floor/tiled/freezer, +/area/rnd/research_restroom_sc) +"bJh" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/obj/machinery/door/firedoor/glass, +/obj/effect/floor_decal/borderfloorwhite{ + dir = 8 + }, +/obj/effect/floor_decal/corner/purple/border{ + dir = 8 + }, +/turf/simulated/floor/tiled/white, +/area/rnd/research) +"bJi" = ( +/obj/structure/cable/green{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/obj/machinery/door/firedoor/glass, +/obj/effect/floor_decal/borderfloorwhite{ + dir = 4 + }, +/obj/effect/floor_decal/corner/purple/border{ + dir = 4 + }, +/turf/simulated/floor/tiled/white, +/area/rnd/research) +"bJj" = ( +/obj/machinery/portable_atmospherics/powered/scrubber/huge, +/obj/effect/floor_decal/industrial/outline/yellow, +/turf/simulated/floor/tiled/dark, +/area/rnd/storage) +"bJk" = ( +/obj/machinery/camera/network/research{ + c_tag = "SCI - Toxins Gas Storage"; + dir = 1 + }, +/obj/machinery/firealarm{ + dir = 1; + pixel_x = 0; + pixel_y = -24 + }, +/turf/simulated/floor/tiled/dark, +/area/rnd/storage) +"bJl" = ( +/obj/machinery/computer/area_atmos, +/obj/effect/floor_decal/industrial/outline/yellow, +/turf/simulated/floor/tiled/dark, +/area/rnd/storage) +"bJm" = ( +/obj/machinery/alarm{ + dir = 1; + icon_state = "alarm0"; + pixel_y = -22 + }, +/turf/simulated/floor/tiled/dark, +/area/rnd/storage) +"bJn" = ( +/obj/machinery/atmospherics/unary/vent_scrubber/on{ + dir = 4 + }, +/obj/structure/table/standard, +/obj/item/weapon/tool/wrench, +/obj/item/weapon/tool/screwdriver{ + pixel_y = 10 + }, +/obj/item/weapon/tool/crowbar, +/obj/machinery/requests_console{ + department = "Science"; + departmentType = 2; + name = "Science Requests Console"; + pixel_x = -30; + pixel_y = 0 + }, +/turf/simulated/floor/tiled/white, +/area/rnd/mixing) +"bJo" = ( +/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/structure/cable/green{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/turf/simulated/floor/tiled/white, +/area/rnd/mixing) +"bJp" = ( +/obj/machinery/atmospherics/pipe/simple/visible/red{ + icon_state = "intact"; + dir = 10 + }, +/obj/machinery/light{ + dir = 1 + }, +/turf/simulated/floor/tiled/white, +/area/rnd/mixing) +"bJq" = ( +/obj/machinery/atmospherics/pipe/manifold/visible/purple, +/obj/machinery/meter, +/turf/simulated/floor/tiled/white, +/area/rnd/mixing) +"bJr" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/universal, +/obj/machinery/atmospherics/pipe/simple/visible/purple{ + dir = 4 + }, +/turf/simulated/floor/tiled/white, +/area/rnd/mixing) +"bJs" = ( +/obj/machinery/atmospherics/unary/heat_exchanger{ + dir = 8 + }, +/obj/effect/floor_decal/industrial/warning{ + dir = 9 + }, +/obj/structure/window/reinforced{ + dir = 8 + }, +/obj/structure/window/reinforced{ + dir = 1 + }, +/turf/simulated/floor/tiled/steel, +/area/rnd/mixing) +"bJt" = ( +/obj/machinery/atmospherics/unary/heat_exchanger{ + dir = 4 + }, +/obj/effect/floor_decal/industrial/warning{ + icon_state = "warning"; + dir = 5 + }, +/obj/structure/window/reinforced{ + dir = 1 + }, +/obj/structure/window/reinforced{ + dir = 4; + health = 1e+006 + }, +/turf/simulated/floor/tiled/steel, +/area/rnd/mixing) +"bJu" = ( +/obj/machinery/atmospherics/pipe/manifold/visible/purple{ + dir = 4 + }, +/obj/structure/closet/firecloset, +/turf/simulated/floor/tiled/white, +/area/rnd/mixing) +"bJv" = ( +/obj/effect/wingrille_spawn/reinforced_phoron, +/obj/machinery/door/firedoor/border_only, +/turf/simulated/floor/plating, +/area/rnd/mixing) +"bJw" = ( +/obj/machinery/light/small{ + dir = 1 + }, +/turf/simulated/floor, +/area/engineering/engine_waste) +"bJx" = ( +/obj/machinery/firealarm{ + dir = 2; + pixel_y = 24 + }, +/turf/simulated/floor, +/area/engineering/engine_waste) +"bJy" = ( +/obj/machinery/atmospherics/unary/vent_pump/on, +/obj/machinery/camera/network/engine{ + c_tag = "ENG - Waste Handling" + }, +/obj/structure/sign/warning/nosmoking_1{ + pixel_y = 32 + }, +/turf/simulated/floor, +/area/engineering/engine_waste) +"bJz" = ( +/obj/machinery/atmospherics/portables_connector, +/obj/machinery/portable_atmospherics/canister/empty, +/obj/effect/floor_decal/industrial/outline/blue, +/turf/simulated/floor, +/area/engineering/engine_waste) +"bJA" = ( +/obj/machinery/atmospherics/portables_connector, +/obj/machinery/status_display{ + density = 0; + layer = 4; + pixel_x = 32; + pixel_y = 0 + }, +/obj/effect/floor_decal/industrial/outline/yellow, +/turf/simulated/floor, +/area/engineering/engine_waste) +"bJB" = ( +/obj/machinery/atmospherics/portables_connector{ + dir = 4 + }, +/obj/machinery/portable_atmospherics/canister/air/airlock, +/obj/effect/floor_decal/industrial/outline/yellow, +/obj/machinery/status_display{ + density = 0; + layer = 4; + pixel_x = -32; + pixel_y = 0 + }, +/turf/simulated/floor/plating, +/area/engineering/drone_fabrication) +"bJC" = ( +/obj/effect/floor_decal/industrial/warning{ + dir = 9 + }, +/obj/machinery/atmospherics/pipe/manifold/hidden{ + dir = 1; + icon_state = "map" + }, +/obj/structure/table/steel, +/obj/item/weapon/storage/toolbox/electrical, +/turf/simulated/floor/plating, +/area/engineering/drone_fabrication) +"bJD" = ( +/obj/effect/floor_decal/industrial/warning{ + icon_state = "warning"; + dir = 1 + }, +/obj/structure/sign/warning/airlock{ + pixel_y = 32 + }, +/obj/machinery/atmospherics/pipe/simple/hidden{ + dir = 4 + }, +/turf/simulated/floor/plating, +/area/engineering/drone_fabrication) +"bJE" = ( +/obj/effect/floor_decal/industrial/warning{ + icon_state = "warning"; + dir = 1 + }, +/obj/machinery/atmospherics/pipe/manifold/hidden{ + dir = 1; + icon_state = "map" + }, +/turf/simulated/floor/plating, +/area/engineering/drone_fabrication) +"bJF" = ( +/obj/machinery/atmospherics/pipe/simple/hidden{ + dir = 9; + icon_state = "intact" + }, +/obj/effect/floor_decal/industrial/warning{ + dir = 5 + }, +/turf/simulated/floor/plating, +/area/engineering/drone_fabrication) +"bJG" = ( +/obj/machinery/access_button{ + command = "cycle_interior"; + frequency = 1379; + master_tag = "eng_port_airlock"; + name = "interior access button"; + pixel_x = 0; + pixel_y = 25; + req_one_access = list(11,24) + }, +/obj/structure/table/steel, +/obj/item/weapon/storage/fancy/cigarettes, +/obj/random/maintenance/engineering, +/obj/random/maintenance/engineering, +/obj/random/maintenance/clean, +/obj/structure/extinguisher_cabinet{ + pixel_x = 28; + pixel_y = 0 + }, +/turf/simulated/floor/plating, +/area/engineering/drone_fabrication) +"bJH" = ( +/obj/effect/floor_decal/borderfloorwhite, +/obj/effect/floor_decal/corner/green/border, +/turf/simulated/floor/tiled/white, +/area/rnd/xenobiology/xenoflora) +"bJI" = ( +/obj/effect/floor_decal/industrial/outline/yellow, +/obj/machinery/floodlight, +/turf/simulated/floor, +/area/engineering/storage) +"bJJ" = ( +/obj/structure/closet/crate, +/obj/item/stack/material/phoron{ + amount = 25 + }, +/obj/effect/floor_decal/industrial/outline/yellow, +/turf/simulated/floor, +/area/engineering/storage) +"bJK" = ( +/obj/machinery/space_heater, +/obj/effect/floor_decal/industrial/outline/yellow, +/turf/simulated/floor, +/area/engineering/storage) +"bJL" = ( +/obj/structure/closet/crate, +/obj/item/weapon/circuitboard/smes, +/obj/item/weapon/circuitboard/smes, +/obj/item/weapon/smes_coil, +/obj/item/weapon/smes_coil, +/obj/item/weapon/smes_coil/super_capacity, +/obj/item/weapon/smes_coil/super_capacity, +/obj/item/weapon/smes_coil/super_io, +/obj/item/weapon/smes_coil/super_io, +/obj/effect/floor_decal/industrial/outline/yellow, +/obj/machinery/light, +/turf/simulated/floor/plating, +/area/engineering/storage) +"bJM" = ( +/turf/simulated/wall/r_wall, +/area/engineering/hallway/atmos_hallway) +"bJN" = ( +/obj/machinery/door/firedoor/glass, +/obj/machinery/door/airlock/glass_engineering{ + name = "Engineering Hallway"; + req_one_access = list(10) + }, +/turf/simulated/floor/tiled/steel_grid, +/area/engineering/hallway/atmos_hallway) +"bJO" = ( +/obj/machinery/door/firedoor/border_only, +/obj/effect/wingrille_spawn/reinforced, +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/turf/simulated/floor/plating, +/area/engineering/hallway/atmos_hallway) +"bJP" = ( +/obj/machinery/door/firedoor/glass, +/obj/machinery/door/airlock/glass_engineering{ + name = "Engineering Hallway"; + req_one_access = list(10) + }, +/obj/structure/cable/green{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/obj/structure/disposalpipe/segment, +/turf/simulated/floor/tiled/steel_grid, +/area/engineering/hallway/atmos_hallway) +"bJQ" = ( +/obj/machinery/door/firedoor/border_only, +/obj/effect/wingrille_spawn/reinforced, +/turf/simulated/floor, +/area/engineering/hallway/atmos_hallway) +"bJR" = ( +/obj/structure/table/reinforced, +/obj/structure/window/reinforced, +/obj/machinery/recharger, +/obj/item/weapon/tape_roll, +/obj/machinery/button/remote/blast_door{ + id = "englockdown"; + name = "Engineering Lockdown"; + pixel_x = -24; + pixel_y = 0; + req_access = list(10) + }, +/obj/machinery/light_switch{ + dir = 2; + name = "light switch "; + pixel_x = -34; + pixel_y = 0 + }, +/obj/effect/floor_decal/borderfloor{ + dir = 8 + }, +/obj/effect/floor_decal/corner/yellow/border{ + dir = 8 + }, +/turf/simulated/floor/tiled, +/area/engineering/foyer) +"bJS" = ( +/obj/structure/table/reinforced, +/obj/machinery/atmospherics/pipe/simple/hidden/red, +/obj/structure/window/reinforced, +/obj/item/weapon/clipboard, +/obj/item/weapon/folder/yellow, +/obj/structure/disposalpipe/segment, +/turf/simulated/floor/tiled, +/area/engineering/foyer) +"bJT" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/cyan, +/obj/machinery/door/window/southright{ + name = "Engineering Monitoring Room"; + req_one_access = list(11,24) + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/turf/simulated/floor/tiled, +/area/engineering/foyer) +"bJU" = ( +/obj/structure/table/reinforced, +/obj/structure/window/reinforced, +/obj/item/weapon/paper_bin{ + pixel_x = -3; + pixel_y = 7 + }, +/obj/item/weapon/pen/red, +/obj/item/weapon/pen/blue{ + pixel_x = 4; + pixel_y = 4 + }, +/turf/simulated/floor/tiled, +/area/engineering/foyer) +"bJV" = ( +/obj/structure/table/reinforced, +/obj/structure/window/reinforced, +/obj/item/weapon/packageWrap, +/obj/item/weapon/hand_labeler, +/obj/machinery/button/remote/blast_door{ + id = "atmoslockdown"; + name = "Atmospherics Lockdown"; + pixel_x = 24; + pixel_y = 0; + req_one_access = list(10,24) + }, +/obj/effect/floor_decal/borderfloor{ + dir = 4 + }, +/obj/effect/floor_decal/corner/yellow/border{ + dir = 4 + }, +/turf/simulated/floor/tiled, +/area/engineering/foyer) +"bJW" = ( +/obj/effect/floor_decal/borderfloor{ + dir = 8 + }, +/obj/effect/floor_decal/corner/yellow/border{ + dir = 8 + }, +/turf/simulated/floor/tiled, +/area/engineering/engineer_eva) +"bJX" = ( +/obj/structure/table/steel_reinforced, +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/item/weapon/storage/briefcase/inflatable{ + pixel_x = 3; + pixel_y = 6 + }, +/obj/item/weapon/storage/briefcase/inflatable{ + pixel_y = 3 + }, +/turf/simulated/floor/tiled/dark, +/area/engineering/engineer_eva) +"bJY" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/obj/structure/cable/green{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/obj/effect/floor_decal/borderfloor{ + dir = 4 + }, +/obj/effect/floor_decal/corner/yellow/border{ + dir = 4 + }, +/obj/effect/floor_decal/borderfloor/corner2{ + dir = 5 + }, +/obj/effect/floor_decal/corner/yellow/bordercorner2{ + dir = 5 + }, +/turf/simulated/floor/tiled, +/area/engineering/engineer_eva) +"bJZ" = ( +/obj/item/clothing/shoes/magboots, +/obj/item/clothing/suit/space/void/atmos, +/obj/item/clothing/mask/breath, +/obj/item/clothing/head/helmet/space/void/atmos, +/obj/structure/window/reinforced{ + dir = 4; + health = 1e+006 + }, +/obj/structure/window/reinforced, +/obj/machinery/door/window/westleft{ + name = "Atmospherics Suits"; + req_access = list(24) + }, +/obj/structure/table/rack{ + dir = 8; + layer = 2.6 + }, +/turf/simulated/floor/tiled/dark, +/area/engineering/engineer_eva) +"bKa" = ( +/obj/structure/extinguisher_cabinet{ + pixel_y = 30 + }, +/obj/machinery/firealarm{ + dir = 8; + pixel_x = -24 + }, +/obj/structure/closet/secure_closet/engineering_personal, +/obj/effect/floor_decal/spline/plain, +/turf/simulated/floor/tiled/yellow, +/area/engineering/locker_room) +"bKb" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/obj/effect/floor_decal/spline/plain, +/obj/effect/floor_decal/steeldecal/steel_decals4{ + dir = 4 + }, +/obj/effect/floor_decal/steeldecal/steel_decals4{ + dir = 9 + }, +/turf/simulated/floor/tiled/yellow, +/area/engineering/locker_room) +"bKc" = ( +/obj/structure/closet/secure_closet/engineering_personal, +/obj/effect/floor_decal/spline/plain, +/turf/simulated/floor/tiled/yellow, +/area/engineering/locker_room) +"bKd" = ( +/obj/structure/closet/secure_closet/engineering_personal, +/obj/machinery/atmospherics/unary/vent_scrubber/on, +/obj/machinery/light{ + dir = 1 + }, +/obj/effect/floor_decal/spline/plain, +/turf/simulated/floor/tiled/yellow, +/area/engineering/locker_room) +"bKe" = ( +/obj/structure/closet/secure_closet/engineering_personal, +/obj/machinery/status_display{ + density = 0; + layer = 4; + pixel_x = 32; + pixel_y = 0 + }, +/turf/simulated/floor/tiled/yellow, +/area/engineering/locker_room) +"bKf" = ( +/obj/structure/table, +/turf/simulated/floor/plating, +/area/maintenance/engineering) +"bKg" = ( +/obj/structure/table, +/turf/simulated/floor/tiled/yellow, +/area/maintenance/engineering) +"bKh" = ( +/obj/structure/reagent_dispensers/watertank, +/turf/simulated/floor/plating, +/area/storage/emergency_storage/seconddeck/fp_emergency) +"bKi" = ( +/obj/structure/cable, +/obj/structure/cable{ + d1 = 16; + d2 = 0; + icon_state = "16-0" + }, +/turf/simulated/floor/plating, +/area/storage/emergency_storage/seconddeck/fp_emergency) +"bKj" = ( +/turf/simulated/floor/tiled/dark, +/area/hallway/primary/seconddeck/fscenter) +"bKk" = ( +/obj/structure/disposalpipe/segment, +/obj/effect/floor_decal/borderfloor{ + dir = 8 + }, +/obj/effect/floor_decal/corner/red/border{ + dir = 8 + }, +/turf/simulated/floor/tiled, +/area/hallway/primary/seconddeck/fscenter) +"bKl" = ( +/obj/effect/floor_decal/borderfloor{ + dir = 4 + }, +/obj/effect/floor_decal/corner/red/border{ + dir = 4 + }, +/turf/simulated/floor/tiled, +/area/hallway/primary/seconddeck/fscenter) +"bKm" = ( +/obj/machinery/alarm{ + dir = 1; + pixel_y = -22 + }, +/turf/simulated/floor/tiled/dark, +/area/hallway/primary/seconddeck/fscenter) +"bKn" = ( +/obj/structure/cable, +/obj/machinery/power/apc{ + dir = 2; + name = "south bump"; + pixel_y = -24 + }, +/obj/structure/catwalk, +/turf/simulated/floor/plating, +/area/storage/emergency_storage/seconddeck/fs_emergency) +"bKo" = ( +/obj/structure/ladder/updown, +/obj/effect/floor_decal/industrial/outline/yellow, +/turf/simulated/floor/plating, +/area/storage/emergency_storage/seconddeck/fs_emergency) +"bKp" = ( +/obj/structure/closet/hydrant{ + pixel_x = 32 + }, +/obj/machinery/alarm{ + dir = 1; + pixel_y = -22 + }, +/turf/simulated/floor/plating, +/area/storage/emergency_storage/seconddeck/fs_emergency) +"bKq" = ( +/obj/effect/floor_decal/industrial/warning/corner{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/structure/cable{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/obj/machinery/light/small{ + dir = 4; + pixel_y = 0 + }, +/obj/effect/floor_decal/industrial/warning/corner, +/obj/structure/disposalpipe/segment, +/turf/simulated/floor/plating, +/area/maintenance/research) +"bKr" = ( +/obj/machinery/door/firedoor/border_only, +/obj/machinery/door/airlock/research{ + name = "Toxins Storage"; + req_access = list(8) + }, +/turf/simulated/floor/tiled/steel_grid, +/area/rnd/storage) +"bKs" = ( +/obj/machinery/door/firedoor/glass, +/obj/effect/wingrille_spawn/reinforced/polarized{ + id = "rdoffice" + }, +/turf/simulated/floor/plating, +/area/crew_quarters/heads/sc/hor) +"bKt" = ( +/obj/machinery/door/firedoor/border_only, +/obj/machinery/door/airlock/research{ + name = "Research Locker Room"; + req_access = list(47) + }, +/turf/simulated/floor/tiled/steel_grid, +/area/rnd/research_lockerroom) +"bKu" = ( +/obj/machinery/door/firedoor/border_only, +/obj/effect/wingrille_spawn/reinforced/polarized{ + id = "rdoffice" + }, +/obj/structure/disposalpipe/segment, +/turf/simulated/floor/plating, +/area/crew_quarters/heads/sc/hor) +"bKv" = ( +/obj/machinery/door/firedoor/glass, +/turf/simulated/floor/wood, +/area/rnd/research) +"bKw" = ( +/obj/machinery/door/firedoor/border_only, +/obj/effect/wingrille_spawn/reinforced, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/turf/simulated/floor/plating, +/area/rnd/research) +"bKx" = ( +/obj/machinery/door/firedoor/glass, +/obj/structure/disposalpipe/segment, +/turf/simulated/floor/wood, +/area/rnd/research) +"bKy" = ( +/obj/machinery/ai_status_display, +/turf/simulated/wall, +/area/rnd/research_restroom_sc) +"bKz" = ( +/obj/machinery/door/firedoor, +/obj/structure/cable/green{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/obj/machinery/door/airlock/engineering{ + name = "Science Substation"; + req_access = list(47); + req_one_access = null + }, +/turf/simulated/floor/plating, +/area/maintenance/substation/research) +"bKA" = ( +/obj/structure/cable/green{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/obj/effect/floor_decal/borderfloorwhite/corner{ + dir = 4 + }, +/obj/effect/floor_decal/corner/purple/bordercorner{ + dir = 4 + }, +/turf/simulated/floor/tiled/white, +/area/rnd/research) +"bKB" = ( +/turf/simulated/wall/r_wall, +/area/rnd/mixing) +"bKC" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/obj/structure/closet/bombcloset, +/obj/machinery/light{ + dir = 8 + }, +/obj/structure/sign/warning/nosmoking_2{ + pixel_x = -32 + }, +/obj/structure/cable/green{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/turf/simulated/floor/tiled/white, +/area/rnd/mixing) +"bKD" = ( +/obj/machinery/atmospherics/portables_connector{ + dir = 4 + }, +/obj/effect/floor_decal/industrial/warning{ + dir = 8 + }, +/obj/effect/floor_decal/industrial/warning{ + dir = 4 + }, +/turf/simulated/floor/tiled/white, +/area/rnd/mixing) +"bKE" = ( +/obj/machinery/atmospherics/binary/passive_gate{ + dir = 4 + }, +/turf/simulated/floor/tiled/white, +/area/rnd/mixing) +"bKF" = ( +/obj/machinery/atmospherics/portables_connector{ + dir = 4 + }, +/obj/effect/floor_decal/industrial/warning/cee{ + icon_state = "warningcee"; + dir = 1 + }, +/turf/simulated/floor/tiled/white, +/area/rnd/mixing) +"bKG" = ( +/obj/structure/sign/warning/hot_exhaust, +/turf/simulated/wall/r_wall, +/area/rnd/mixing) +"bKH" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/purple{ + dir = 5 + }, +/turf/simulated/wall/r_wall, +/area/rnd/mixing) +"bKI" = ( +/obj/machinery/atmospherics/pipe/manifold/hidden/purple{ + dir = 1 + }, +/turf/simulated/wall/r_wall, +/area/rnd/mixing) +"bKJ" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/purple{ + dir = 10 + }, +/turf/simulated/wall/r_wall, +/area/rnd/mixing) +"bKK" = ( +/obj/structure/sign/warning/fire, +/turf/simulated/wall/r_wall, +/area/rnd/mixing) +"bKL" = ( +/obj/machinery/atmospherics/pipe/simple/heat_exchanging{ + dir = 6 + }, +/obj/structure/lattice, +/turf/space, +/area/space) +"bKM" = ( +/obj/machinery/atmospherics/pipe/simple/heat_exchanging{ + dir = 4 + }, +/obj/structure/lattice, +/turf/space, +/area/space) +"bKN" = ( +/obj/machinery/atmospherics/pipe/simple/heat_exchanging/junction{ + dir = 8; + icon_state = "intact" + }, +/obj/structure/lattice, +/obj/structure/grille, +/turf/space, +/area/space) +"bKO" = ( +/obj/machinery/atmospherics/pipe/simple/visible/black{ + dir = 4 + }, +/obj/machinery/door/firedoor/border_only, +/obj/machinery/door/blast/regular{ + density = 0; + icon_state = "pdoor0"; + id = "EngineWasteViewport1"; + name = "Engine Waste Viewport Shutter"; + opacity = 0 + }, +/obj/effect/wingrille_spawn/reinforced, +/turf/simulated/floor, +/area/engineering/engine_waste) +"bKP" = ( +/obj/machinery/atmospherics/pipe/manifold/visible/black{ + dir = 1 + }, +/obj/machinery/button/remote/blast_door{ + desc = "A remote control-switch for the engine control room blast doors."; + id = "EngineWasteViewport1"; + name = "Engine Waste Blast Doors"; + pixel_x = 0; + pixel_y = 25; + req_access = null; + req_one_access = list(11,24) + }, +/obj/effect/floor_decal/industrial/warning{ + icon_state = "warning"; + dir = 8 + }, +/turf/simulated/floor, +/area/engineering/engine_waste) +"bKQ" = ( +/obj/machinery/atmospherics/binary/pump{ + dir = 8 + }, +/obj/effect/floor_decal/industrial/outline/blue, +/obj/effect/engine_setup/pump_max, +/turf/simulated/floor, +/area/engineering/engine_waste) +"bKR" = ( +/obj/machinery/atmospherics/portables_connector{ + dir = 8 + }, +/obj/effect/floor_decal/industrial/outline/yellow, +/obj/effect/engine_setup/coolant_canister, +/turf/simulated/floor, +/area/engineering/engine_waste) +"bKS" = ( +/obj/machinery/atmospherics/pipe/cap/visible, +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/turf/simulated/floor, +/area/engineering/engine_waste) +"bKT" = ( +/obj/machinery/atmospherics/pipe/simple/visible/black, +/turf/simulated/floor, +/area/engineering/engine_waste) +"bKU" = ( +/obj/machinery/atmospherics/pipe/simple/visible/cyan, +/obj/structure/cable/green{ + d2 = 2; + icon_state = "0-2" + }, +/obj/machinery/power/apc{ + dir = 4; + name = "east bump"; + pixel_x = 24 + }, +/obj/machinery/light_switch{ + dir = 2; + name = "light switch "; + pixel_x = 36; + pixel_y = 0 + }, +/turf/simulated/floor, +/area/engineering/engine_waste) +"bKV" = ( +/obj/machinery/atmospherics/portables_connector{ + dir = 4 + }, +/obj/machinery/portable_atmospherics/canister/air/airlock, +/obj/effect/floor_decal/industrial/outline/yellow, +/turf/simulated/floor/plating, +/area/engineering/drone_fabrication) +"bKW" = ( +/obj/effect/floor_decal/industrial/warning{ + icon_state = "warning"; + dir = 8 + }, +/obj/machinery/meter, +/obj/machinery/atmospherics/pipe/simple/hidden{ + dir = 9; + icon_state = "intact" + }, +/turf/simulated/floor/plating, +/area/engineering/drone_fabrication) +"bKX" = ( +/turf/simulated/floor/plating, +/area/engineering/drone_fabrication) +"bKY" = ( +/obj/effect/floor_decal/industrial/warning/corner, +/obj/machinery/atmospherics/binary/pump/on{ + dir = 1; + target_pressure = 200 + }, +/turf/simulated/floor/plating, +/area/engineering/drone_fabrication) +"bKZ" = ( +/obj/machinery/light/small{ + dir = 4; + pixel_y = 0 + }, +/obj/effect/floor_decal/industrial/warning{ + dir = 6 + }, +/turf/simulated/floor/plating, +/area/engineering/drone_fabrication) +"bLa" = ( +/turf/simulated/floor/tiled/dark, +/area/engineering/hallway/engineer_hallway) +"bLb" = ( +/obj/effect/floor_decal/steeldecal/steel_decals4{ + dir = 4 + }, +/obj/effect/floor_decal/steeldecal/steel_decals4{ + dir = 9 + }, +/turf/simulated/floor/tiled, +/area/engineering/hallway/engineer_hallway) +"bLc" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/turf/simulated/floor/tiled, +/area/engineering/hallway/engineer_hallway) +"bLd" = ( +/obj/structure/cable/green{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/obj/structure/disposalpipe/sortjunction{ + dir = 1; + icon_state = "pipe-j1s"; + name = "CE Office"; + sortType = "CE Office" + }, +/obj/effect/floor_decal/steeldecal/steel_decals4{ + dir = 4 + }, +/obj/effect/floor_decal/steeldecal/steel_decals4{ + dir = 9 + }, +/turf/simulated/floor/tiled, +/area/engineering/hallway/engineer_hallway) +"bLe" = ( +/obj/machinery/light{ + dir = 1 + }, +/obj/structure/disposalpipe/segment{ + dir = 2; + icon_state = "pipe-c" + }, +/turf/simulated/floor/tiled, +/area/engineering/hallway/engineer_hallway) +"bLf" = ( +/obj/machinery/atmospherics/unary/vent_pump/on, +/turf/simulated/floor/tiled, +/area/engineering/hallway/engineer_hallway) +"bLg" = ( +/turf/simulated/floor/tiled, +/area/engineering/hallway/engineer_hallway) +"bLh" = ( +/obj/machinery/door/firedoor/border_only, +/obj/effect/wingrille_spawn/reinforced, +/turf/simulated/floor/plating, +/area/engineering/hallway/engineer_hallway) +"bLi" = ( +/obj/effect/floor_decal/borderfloor/corner{ + dir = 1 + }, +/obj/effect/floor_decal/corner/yellow/bordercorner{ + dir = 1 + }, +/turf/simulated/floor/tiled, +/area/engineering/foyer) +"bLj" = ( +/obj/machinery/atmospherics/pipe/manifold/hidden/red{ + dir = 8 + }, +/obj/structure/disposalpipe/segment, +/turf/simulated/floor/tiled, +/area/engineering/foyer) +"bLk" = ( +/obj/machinery/atmospherics/pipe/simple/visible{ + icon_state = "intact"; + dir = 10 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/obj/machinery/alarm{ + dir = 8; + pixel_x = 22; + pixel_y = 0 + }, +/turf/simulated/floor/tiled/white, +/area/rnd/mixing) +"bLl" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/red{ + icon_state = "intact"; + dir = 4 + }, +/turf/simulated/floor/tiled, +/area/engineering/foyer) +"bLm" = ( +/obj/machinery/atmospherics/portables_connector{ + dir = 8 + }, +/obj/machinery/portable_atmospherics/powered/scrubber, +/obj/effect/floor_decal/borderfloor{ + dir = 4 + }, +/obj/effect/floor_decal/corner/red/border{ + dir = 4 + }, +/turf/simulated/floor/tiled, +/area/engineering/foyer) +"bLn" = ( +/obj/structure/dispenser{ + phorontanks = 0 + }, +/obj/machinery/light{ + dir = 8; + icon_state = "tube1"; + pixel_y = 0 + }, +/turf/simulated/floor/tiled/dark, +/area/engineering/engineer_eva) +"bLo" = ( +/obj/machinery/atmospherics/unary/vent_pump/on{ + dir = 4 + }, +/obj/effect/floor_decal/borderfloor{ + dir = 8 + }, +/obj/effect/floor_decal/corner/yellow/border{ + dir = 8 + }, +/turf/simulated/floor/tiled, +/area/engineering/engineer_eva) +"bLp" = ( +/obj/machinery/hologram/holopad, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 6 + }, +/obj/machinery/atmospherics/pipe/manifold4w/hidden/supply, +/obj/structure/cable/green{ + d1 = 2; + d2 = 4; + icon_state = "2-4" + }, +/turf/simulated/floor/tiled/dark, +/area/engineering/engineer_eva) +"bLq" = ( +/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/obj/structure/cable/green{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/obj/structure/cable/green{ + d1 = 1; + d2 = 4; + icon_state = "1-4" + }, +/turf/simulated/floor/tiled, +/area/engineering/engineer_eva) +"bLr" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/obj/structure/cable/green{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/obj/structure/cable/green{ + d1 = 2; + d2 = 4; + icon_state = "2-4" + }, +/obj/effect/floor_decal/steeldecal/steel_decals4, +/obj/effect/floor_decal/steeldecal/steel_decals4{ + dir = 10 + }, +/turf/simulated/floor/tiled, +/area/engineering/engineer_eva) +"bLs" = ( +/obj/machinery/door/firedoor/glass, +/obj/machinery/door/airlock/glass_engineeringatmos{ + name = "Engineering Locker Room"; + req_one_access = list(10) + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, +/obj/structure/cable/green{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/turf/simulated/floor/tiled/steel_grid, +/area/engineering/locker_room) +"bLt" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, +/obj/structure/cable/green{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/turf/simulated/floor/tiled, +/area/engineering/locker_room) +"bLu" = ( +/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers, +/obj/machinery/atmospherics/pipe/manifold/hidden/supply, +/obj/structure/cable/green{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/turf/simulated/floor/tiled, +/area/engineering/locker_room) +"bLv" = ( +/obj/structure/cable/green{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 10 + }, +/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{ + dir = 1 + }, +/obj/structure/cable/green{ + d1 = 2; + d2 = 8; + icon_state = "2-8" + }, +/turf/simulated/floor/tiled, +/area/engineering/locker_room) +"bLw" = ( +/obj/machinery/hologram/holopad, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 9 + }, +/obj/structure/cable/green{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/turf/simulated/floor/tiled/monotile, +/area/engineering/locker_room) +"bLx" = ( +/obj/structure/cable/green{ + d2 = 8; + icon_state = "0-8" + }, +/obj/machinery/power/apc{ + dir = 4; + name = "east bump"; + pixel_x = 24 + }, +/obj/machinery/light_switch{ + dir = 2; + name = "light switch "; + pixel_x = 36; + pixel_y = 0 + }, +/obj/effect/floor_decal/spline/plain{ + dir = 8 + }, +/turf/simulated/floor/tiled/yellow, +/area/engineering/locker_room) +"bLy" = ( +/obj/random/toolbox, +/turf/simulated/floor/tiled/steel, +/area/maintenance/engineering) +"bLz" = ( +/turf/simulated/floor/tiled/yellow, +/area/maintenance/engineering) +"bLA" = ( +/obj/machinery/door/firedoor/border_only, +/obj/structure/door_assembly/door_assembly_mhatch{ + anchored = 1 + }, +/turf/simulated/floor/plating, +/area/maintenance/engineering) +"bLB" = ( +/turf/simulated/wall/r_wall, +/area/hallway/primary/seconddeck/fpcenter) +"bLC" = ( +/obj/machinery/door/firedoor/border_only, +/obj/effect/wingrille_spawn/reinforced, +/turf/simulated/floor/plating, +/area/hallway/primary/seconddeck/fpcenter) +"bLD" = ( +/obj/structure/sign/directions/cryo{ + pixel_y = -10 + }, +/turf/simulated/wall/r_wall, +/area/hallway/primary/seconddeck/fscenter) +"bLE" = ( +/obj/structure/disposalpipe/segment, +/obj/machinery/camera/network/second_deck{ + c_tag = "Second Deck - Fore Hallway One"; + dir = 4 + }, +/obj/machinery/light{ + dir = 8; + icon_state = "tube1"; + pixel_y = 0 + }, +/obj/effect/floor_decal/borderfloor/corner{ + dir = 1 + }, +/obj/effect/floor_decal/corner/red/bordercorner{ + dir = 1 + }, +/turf/simulated/floor/tiled, +/area/hallway/primary/seconddeck/fscenter) +"bLF" = ( +/obj/effect/floor_decal/borderfloor/corner{ + dir = 4 + }, +/obj/effect/floor_decal/corner/red/bordercorner{ + dir = 4 + }, +/turf/simulated/floor/tiled, +/area/hallway/primary/seconddeck/fscenter) +"bLG" = ( +/obj/structure/sign/directions/evac{ + dir = 2; + pixel_y = -10 + }, +/turf/simulated/wall/r_wall, +/area/hallway/primary/seconddeck/fscenter) +"bLH" = ( +/turf/simulated/wall/r_wall, +/area/hallway/primary/seconddeck/fscenter) +"bLI" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/obj/structure/cable{ + d1 = 1; + d2 = 2; + icon_state = "1-2"; + pixel_y = 0 + }, +/obj/effect/floor_decal/industrial/warning{ + dir = 4 + }, +/obj/structure/disposalpipe/segment, +/turf/simulated/floor/plating, +/area/maintenance/research) +"bLJ" = ( +/obj/structure/plasticflaps{ + opacity = 1 + }, +/obj/machinery/door/firedoor/border_only, +/obj/effect/floor_decal/industrial/loading{ + dir = 4 + }, +/obj/machinery/navbeacon/delivery/east{ + location = "Research Division" + }, +/turf/simulated/floor/tiled, +/area/rnd/research) +"bLK" = ( +/obj/effect/floor_decal/industrial/hatch/yellow, +/obj/structure/window/reinforced, +/obj/machinery/door/window/eastright{ + base_state = "left"; + dir = 4; + icon_state = "left"; + name = "Research Division Delivery"; + req_access = list(47) + }, +/turf/simulated/floor/tiled, +/area/rnd/research) +"bLL" = ( +/obj/structure/cable/green{ + d1 = 1; + d2 = 4; + icon_state = "1-4" + }, +/obj/effect/floor_decal/industrial/warning{ + icon_state = "warning"; + dir = 1 + }, +/turf/simulated/floor/tiled/white, +/area/rnd/research) +"bLM" = ( +/obj/structure/cable/green{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/obj/machinery/firealarm{ + pixel_y = 24 + }, +/obj/machinery/atmospherics/unary/vent_pump/on, +/obj/effect/floor_decal/borderfloorwhite/corner{ + dir = 4 + }, +/obj/effect/floor_decal/corner/purple/bordercorner{ + dir = 4 + }, +/obj/effect/floor_decal/industrial/warning/corner{ + dir = 1 + }, +/turf/simulated/floor/tiled/white, +/area/rnd/research) +"bLN" = ( +/obj/structure/sign/warning/high_voltage{ + pixel_y = 32 + }, +/obj/structure/cable/green{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/obj/effect/floor_decal/borderfloorwhite{ + dir = 1 + }, +/obj/effect/floor_decal/corner/purple/border{ + dir = 1 + }, +/turf/simulated/floor/tiled/white, +/area/rnd/research) +"bLO" = ( +/obj/structure/cable/green{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/obj/machinery/door/firedoor/glass, +/obj/effect/floor_decal/borderfloorwhite{ + dir = 1 + }, +/obj/effect/floor_decal/corner/purple/border{ + dir = 1 + }, +/turf/simulated/floor/tiled/white, +/area/rnd/research) +"bLP" = ( +/obj/structure/cable/green{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/obj/effect/floor_decal/borderfloorwhite{ + dir = 1 + }, +/obj/effect/floor_decal/corner/purple/border{ + dir = 1 + }, +/turf/simulated/floor/tiled/white, +/area/rnd/research) +"bLQ" = ( +/obj/structure/cable/green{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/obj/structure/cable/green{ + d1 = 2; + d2 = 8; + icon_state = "2-8" + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 6 + }, +/obj/machinery/light{ + dir = 1 + }, +/obj/effect/floor_decal/borderfloorwhite/corner{ + dir = 1 + }, +/obj/effect/floor_decal/corner/purple/bordercorner{ + dir = 1 + }, +/turf/simulated/floor/tiled/white, +/area/rnd/research) +"bLR" = ( +/obj/structure/cable/green{ + d1 = 1; + d2 = 8; + icon_state = "1-8" + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/obj/structure/cable/green{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/obj/machinery/atmospherics/pipe/manifold4w/hidden/supply, +/obj/structure/disposalpipe/segment{ + dir = 4; + icon_state = "pipe-c" + }, +/obj/effect/floor_decal/steeldecal/steel_decals4{ + dir = 4 + }, +/obj/effect/floor_decal/steeldecal/steel_decals4{ + dir = 9 + }, +/turf/simulated/floor/tiled/white, +/area/rnd/research) +"bLS" = ( +/obj/machinery/atmospherics/unary/vent_scrubber/on, +/obj/structure/cable/green{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/obj/machinery/camera/network/research{ + c_tag = "SCI - Research Hallway Port"; + dir = 2 + }, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/effect/floor_decal/borderfloorwhite/corner{ + dir = 4 + }, +/obj/effect/floor_decal/corner/purple/bordercorner{ + dir = 4 + }, +/turf/simulated/floor/tiled/white, +/area/rnd/research) +"bLT" = ( +/obj/structure/cable/green{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/obj/structure/disposalpipe/sortjunction/flipped{ + dir = 4; + name = "RD Office"; + sortType = "RD Office" + }, +/obj/effect/floor_decal/borderfloorwhite{ + dir = 1 + }, +/obj/effect/floor_decal/corner/purple/border{ + dir = 1 + }, +/turf/simulated/floor/tiled/white, +/area/rnd/research) +"bLU" = ( +/obj/machinery/door/firedoor/border_only, +/obj/structure/cable/green{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/effect/floor_decal/borderfloorwhite{ + dir = 1 + }, +/obj/effect/floor_decal/corner/purple/border{ + dir = 1 + }, +/obj/effect/floor_decal/borderfloorwhite/corner2{ + dir = 1 + }, +/obj/effect/floor_decal/corner/purple/bordercorner2{ + dir = 1 + }, +/turf/simulated/floor/tiled/white, +/area/rnd/research) +"bLV" = ( +/obj/structure/cable/green{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/turf/simulated/floor/tiled/white, +/area/rnd/research) +"bLW" = ( +/obj/structure/cable/green{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/obj/machinery/atmospherics/pipe/manifold/hidden/supply{ + dir = 1 + }, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/effect/floor_decal/borderfloorwhite/corner{ + dir = 4 + }, +/obj/effect/floor_decal/corner/purple/bordercorner{ + dir = 4 + }, +/turf/simulated/floor/tiled/white, +/area/rnd/research) +"bLX" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/obj/structure/cable/green{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/obj/machinery/atmospherics/pipe/manifold/hidden/supply, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/effect/floor_decal/borderfloorwhite{ + dir = 1 + }, +/obj/effect/floor_decal/corner/purple/border{ + dir = 1 + }, +/turf/simulated/floor/tiled/white, +/area/rnd/research) +"bLY" = ( +/obj/structure/cable/green{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/obj/structure/cable/green{ + d1 = 2; + d2 = 8; + icon_state = "2-8" + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/effect/floor_decal/borderfloorwhite/corner{ + dir = 1 + }, +/obj/effect/floor_decal/corner/purple/bordercorner{ + dir = 1 + }, +/turf/simulated/floor/tiled/white, +/area/rnd/research) +"bLZ" = ( +/obj/structure/cable/green{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/obj/structure/disposalpipe/sortjunction/flipped{ + dir = 4; + name = "Research"; + sortType = "Research" + }, +/turf/simulated/floor/tiled/white, +/area/rnd/research) +"bMa" = ( +/obj/machinery/atmospherics/unary/vent_scrubber/on, +/obj/structure/cable/green{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/obj/machinery/light{ + dir = 1 + }, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/effect/floor_decal/borderfloorwhite{ + dir = 1 + }, +/obj/effect/floor_decal/corner/purple/border{ + dir = 1 + }, +/obj/effect/floor_decal/borderfloorwhite/corner2{ + dir = 4 + }, +/obj/effect/floor_decal/corner/purple/bordercorner2{ + dir = 4 + }, +/turf/simulated/floor/tiled/white, +/area/rnd/research) +"bMb" = ( +/obj/structure/cable/green{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/effect/floor_decal/borderfloorwhite{ + dir = 1 + }, +/obj/effect/floor_decal/corner/purple/border{ + dir = 1 + }, +/turf/simulated/floor/tiled/white, +/area/rnd/research) +"bMc" = ( +/obj/structure/disposalpipe/segment, +/obj/effect/floor_decal/borderfloorwhite, +/obj/effect/floor_decal/corner/green/border, +/turf/simulated/floor/tiled/white, +/area/rnd/xenobiology/xenoflora) +"bMd" = ( +/obj/structure/cable/green{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/obj/machinery/atmospherics/pipe/manifold/hidden/supply{ + dir = 1 + }, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/effect/floor_decal/borderfloorwhite{ + dir = 1 + }, +/obj/effect/floor_decal/corner/purple/border{ + dir = 1 + }, +/turf/simulated/floor/tiled/white, +/area/rnd/research) +"bMe" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/obj/structure/cable/green{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/obj/item/device/radio/intercom{ + dir = 1; + name = "Station Intercom (General)"; + pixel_y = 21 + }, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/effect/floor_decal/borderfloorwhite/corner{ + dir = 1 + }, +/obj/effect/floor_decal/corner/purple/bordercorner{ + dir = 1 + }, +/turf/simulated/floor/tiled/white, +/area/rnd/research) +"bMf" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/obj/machinery/atmospherics/pipe/manifold/hidden/supply, +/obj/structure/cable/green{ + d1 = 1; + d2 = 8; + icon_state = "1-8" + }, +/obj/structure/cable/green{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/obj/structure/disposalpipe/junction{ + icon_state = "pipe-j1"; + dir = 4 + }, +/obj/effect/floor_decal/steeldecal/steel_decals4{ + dir = 4 + }, +/obj/effect/floor_decal/steeldecal/steel_decals4{ + dir = 9 + }, +/turf/simulated/floor/tiled/white, +/area/rnd/research) +"bMg" = ( +/obj/machinery/atmospherics/pipe/manifold/hidden/supply{ + dir = 1 + }, +/obj/structure/cable/green{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/obj/structure/cable/green{ + d1 = 2; + d2 = 8; + icon_state = "2-8" + }, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/effect/floor_decal/borderfloorwhite/corner{ + dir = 4 + }, +/obj/effect/floor_decal/corner/purple/bordercorner{ + dir = 4 + }, +/turf/simulated/floor/tiled/white, +/area/rnd/research) +"bMh" = ( +/obj/machinery/atmospherics/unary/vent_scrubber/on, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/obj/structure/cable/green{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/obj/structure/extinguisher_cabinet{ + pixel_y = 30 + }, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/effect/floor_decal/borderfloorwhite{ + dir = 1 + }, +/obj/effect/floor_decal/corner/purple/border{ + dir = 1 + }, +/turf/simulated/floor/tiled/white, +/area/rnd/research) +"bMi" = ( +/obj/machinery/door/firedoor/border_only, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/obj/structure/cable/green{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/effect/floor_decal/borderfloorwhite{ + dir = 1 + }, +/obj/effect/floor_decal/corner/purple/border{ + dir = 1 + }, +/turf/simulated/floor/tiled/white, +/area/rnd/research) +"bMj" = ( +/obj/machinery/atmospherics/pipe/manifold/hidden/supply, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/obj/structure/cable/green{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/effect/floor_decal/borderfloorwhite/corner{ + dir = 1 + }, +/obj/effect/floor_decal/corner/purple/bordercorner{ + dir = 1 + }, +/turf/simulated/floor/tiled/white, +/area/rnd/research) +"bMk" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/obj/structure/cable/green{ + d1 = 1; + d2 = 8; + icon_state = "1-8" + }, +/obj/structure/cable/green{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/turf/simulated/floor/tiled/white, +/area/rnd/research) +"bMl" = ( +/obj/machinery/atmospherics/pipe/manifold/hidden/supply{ + dir = 1 + }, +/obj/structure/cable/green{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/effect/floor_decal/borderfloorwhite/corner{ + dir = 4 + }, +/obj/effect/floor_decal/corner/purple/bordercorner{ + dir = 4 + }, +/turf/simulated/floor/tiled/white, +/area/rnd/research) +"bMm" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/obj/structure/cable/green{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/effect/floor_decal/borderfloorwhite{ + dir = 1 + }, +/obj/effect/floor_decal/corner/purple/border{ + dir = 1 + }, +/turf/simulated/floor/tiled/white, +/area/rnd/research) +"bMn" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/obj/structure/cable/green{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/obj/structure/cable/green{ + d1 = 2; + d2 = 8; + icon_state = "2-8" + }, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/effect/floor_decal/borderfloorwhite{ + dir = 1 + }, +/obj/effect/floor_decal/corner/purple/border{ + dir = 1 + }, +/turf/simulated/floor/tiled/white, +/area/rnd/research) +"bMo" = ( +/obj/machinery/atmospherics/unary/vent_scrubber/on, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/obj/structure/cable/green{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/effect/floor_decal/borderfloorwhite{ + dir = 1 + }, +/obj/effect/floor_decal/corner/purple/border{ + dir = 1 + }, +/turf/simulated/floor/tiled/white, +/area/rnd/research) +"bMp" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/obj/structure/cable/green{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/obj/machinery/ai_status_display{ + pixel_y = 32 + }, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/effect/floor_decal/borderfloorwhite{ + dir = 1 + }, +/obj/effect/floor_decal/corner/purple/border{ + dir = 1 + }, +/turf/simulated/floor/tiled/white, +/area/rnd/research) +"bMq" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 10 + }, +/obj/structure/cable/green{ + d1 = 2; + d2 = 8; + icon_state = "2-8" + }, +/obj/machinery/firealarm{ + dir = 2; + pixel_y = 24 + }, +/obj/machinery/camera/network/research{ + c_tag = "SCI - Research Hallway Starboard"; + dir = 2 + }, +/obj/structure/disposalpipe/segment{ + dir = 2; + icon_state = "pipe-c" + }, +/obj/effect/floor_decal/borderfloorwhite{ + dir = 1 + }, +/obj/effect/floor_decal/corner/purple/border{ + dir = 1 + }, +/turf/simulated/floor/tiled/white, +/area/rnd/research) +"bMr" = ( +/obj/effect/floor_decal/borderfloorwhite{ + dir = 1 + }, +/obj/effect/floor_decal/corner/purple/border{ + dir = 1 + }, +/turf/simulated/floor/tiled/white, +/area/rnd/research) +"bMs" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/obj/structure/closet/emcloset, +/obj/structure/cable/green{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/turf/simulated/floor/tiled/white, +/area/rnd/mixing) +"bMt" = ( +/obj/machinery/atmospherics/portables_connector{ + dir = 4 + }, +/obj/effect/floor_decal/industrial/warning/cee, +/turf/simulated/floor/tiled/white, +/area/rnd/mixing) +"bMu" = ( +/obj/machinery/atmospherics/pipe/simple/visible{ + dir = 4 + }, +/obj/machinery/meter, +/turf/simulated/floor/tiled/white, +/area/rnd/mixing) +"bMv" = ( +/obj/machinery/atmospherics/tvalve/bypass{ + dir = 8 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 6 + }, +/obj/machinery/embedded_controller/radio/airlock/airlock_controller{ + id_tag = "tox_airlock_control"; + pixel_x = 24; + pixel_y = 0; + tag_airpump = "tox_airlock_pump"; + tag_chamber_sensor = "tox_airlock_sensor"; + tag_exterior_door = "tox_airlock_exterior"; + tag_interior_door = "tox_airlock_interior" + }, +/obj/effect/floor_decal/industrial/warning/corner, +/turf/simulated/floor/tiled/white, +/area/rnd/mixing) +"bMw" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden{ + dir = 4 + }, +/turf/simulated/wall/r_wall, +/area/rnd/mixing) +"bMx" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 10 + }, +/obj/machinery/atmospherics/binary/pump{ + dir = 4 + }, +/turf/simulated/floor/reinforced/airless, +/area/rnd/mixing) +"bMy" = ( +/obj/machinery/atmospherics/pipe/simple/hidden{ + dir = 4 + }, +/turf/simulated/wall/r_wall, +/area/rnd/mixing) +"bMz" = ( +/obj/machinery/atmospherics/unary/outlet_injector{ + dir = 8; + frequency = 1443; + icon_state = "map_injector"; + id = "air_in"; + use_power = 1 + }, +/obj/machinery/sparker{ + dir = 2; + id = "mixingsparker"; + pixel_x = -22 + }, +/turf/simulated/floor/reinforced/airless, +/area/rnd/mixing) +"bMA" = ( +/obj/machinery/atmospherics/pipe/simple/heat_exchanging/junction, +/turf/simulated/floor/reinforced/airless, +/area/rnd/mixing) +"bMB" = ( +/obj/machinery/door/blast/regular{ + id = "mixvent"; + name = "Mixer Room Vent" + }, +/turf/simulated/floor/reinforced/airless, +/area/rnd/mixing) +"bMC" = ( +/obj/machinery/atmospherics/pipe/simple/heat_exchanging{ + dir = 5 + }, +/obj/structure/lattice, +/turf/space, +/area/space) +"bMD" = ( +/obj/machinery/atmospherics/pipe/simple/heat_exchanging{ + dir = 4 + }, +/turf/space, +/area/space) +"bME" = ( +/obj/machinery/atmospherics/pipe/simple/heat_exchanging{ + dir = 4 + }, +/obj/effect/landmark{ + name = "carpspawn" + }, +/turf/space, +/area/space) +"bMF" = ( +/obj/machinery/atmospherics/pipe/simple/visible/black{ + dir = 4 + }, +/obj/machinery/door/firedoor/glass, +/obj/machinery/door/blast/regular{ + density = 0; + icon_state = "pdoor0"; + id = "EngineWasteViewport1"; + name = "Engine Waste Viewport Shutter"; + opacity = 0 + }, +/obj/effect/wingrille_spawn/reinforced, +/turf/simulated/floor, +/area/engineering/engine_waste) +"bMG" = ( +/obj/machinery/atmospherics/pipe/manifold4w/visible/black, +/obj/machinery/meter, +/obj/effect/floor_decal/industrial/warning{ + icon_state = "warning"; + dir = 8 + }, +/turf/simulated/floor, +/area/engineering/engine_waste) +"bMH" = ( +/obj/machinery/atmospherics/unary/heat_exchanger{ + dir = 8 + }, +/obj/effect/floor_decal/industrial/warning{ + icon_state = "warning"; + dir = 9 + }, +/turf/simulated/floor, +/area/engineering/engine_waste) +"bMI" = ( +/obj/machinery/atmospherics/unary/heat_exchanger{ + dir = 4 + }, +/obj/effect/floor_decal/industrial/warning{ + dir = 5 + }, +/turf/simulated/floor, +/area/engineering/engine_waste) +"bMJ" = ( +/obj/machinery/atmospherics/pipe/manifold4w/visible/black, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 5 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 6 + }, +/turf/simulated/floor, +/area/engineering/engine_waste) +"bMK" = ( +/obj/machinery/atmospherics/pipe/simple/visible/black{ + dir = 9 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, +/turf/simulated/floor, +/area/engineering/engine_waste) +"bML" = ( +/obj/machinery/atmospherics/pipe/simple/visible/cyan, +/obj/structure/cable/green{ + d1 = 1; + d2 = 4; + icon_state = "1-4" + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, +/turf/simulated/floor, +/area/engineering/engine_waste) +"bMM" = ( +/obj/machinery/door/firedoor/border_only, +/obj/structure/cable/green{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/obj/machinery/door/airlock/maintenance{ + name = "Engine Waste Handling"; + req_one_access = list(10,24) + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, +/turf/simulated/floor, +/area/engineering/engine_waste) +"bMN" = ( +/obj/machinery/requests_console{ + department = "Science"; + departmentType = 2; + name = "Science Requests Console"; + pixel_x = 30; + pixel_y = 0 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/yellow, +/obj/effect/floor_decal/borderfloorwhite, +/obj/effect/floor_decal/corner/green/border, +/turf/simulated/floor/tiled/white, +/area/rnd/xenobiology/xenoflora) +"bMO" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/obj/structure/cable/green{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/obj/effect/floor_decal/industrial/warning/corner{ + dir = 1 + }, +/turf/simulated/floor/plating, +/area/engineering/drone_fabrication) +"bMP" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 10 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 10 + }, +/obj/structure/cable/green{ + d1 = 2; + d2 = 8; + icon_state = "2-8" + }, +/turf/simulated/floor/plating, +/area/engineering/drone_fabrication) +"bMQ" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/universal, +/obj/effect/floor_decal/industrial/warning{ + icon_state = "warning"; + dir = 4 + }, +/obj/structure/cable/green{ + d2 = 2; + icon_state = "0-2" + }, +/obj/machinery/power/apc{ + dir = 4; + name = "east bump"; + pixel_x = 24 + }, +/obj/machinery/light_switch{ + dir = 2; + name = "light switch "; + pixel_x = 36; + pixel_y = 0 + }, +/turf/simulated/floor/plating, +/area/engineering/drone_fabrication) +"bMR" = ( +/turf/simulated/wall/r_wall, +/area/engineering/hallway/engineer_hallway) +"bMS" = ( +/obj/machinery/firealarm{ + pixel_y = 24 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 6 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 6 + }, +/obj/structure/cable/green{ + d1 = 2; + d2 = 4; + icon_state = "2-4" + }, +/turf/simulated/floor/tiled, +/area/engineering/hallway/engineer_hallway) +"bMT" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/obj/structure/cable/green{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/obj/item/device/radio/intercom{ + dir = 1; + name = "Station Intercom (General)"; + pixel_y = 21 + }, +/turf/simulated/floor/tiled, +/area/engineering/hallway/engineer_hallway) +"bMU" = ( +/obj/structure/cable/green{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/obj/machinery/door/firedoor/border_only, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/turf/simulated/floor/tiled, +/area/engineering/hallway/engineer_hallway) +"bMV" = ( +/obj/structure/cable/green{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{ + dir = 1 + }, +/turf/simulated/floor/tiled, +/area/engineering/hallway/engineer_hallway) +"bMW" = ( +/obj/structure/cable/green{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/obj/structure/cable/green{ + d1 = 2; + d2 = 4; + icon_state = "2-4" + }, +/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{ + dir = 1 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 10 + }, +/turf/simulated/floor/tiled, +/area/engineering/hallway/engineer_hallway) +"bMX" = ( +/obj/structure/cable/green{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, +/turf/simulated/floor/tiled, +/area/engineering/hallway/engineer_hallway) +"bMY" = ( +/obj/structure/cable/green{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, +/obj/machinery/alarm{ + pixel_y = 23 + }, +/turf/simulated/floor/tiled, +/area/engineering/hallway/engineer_hallway) +"bMZ" = ( +/obj/structure/cable/green{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/obj/machinery/atmospherics/unary/vent_pump/on, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, +/obj/machinery/firealarm{ + pixel_y = 24 + }, +/turf/simulated/floor/tiled, +/area/engineering/hallway/engineer_hallway) +"bNa" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 6 + }, +/obj/structure/cable/green{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, +/obj/structure/extinguisher_cabinet{ + pixel_y = 30 + }, +/turf/simulated/floor/tiled, +/area/engineering/hallway/engineer_hallway) +"bNb" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/obj/structure/cable/green{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/obj/structure/cable/green{ + d1 = 2; + d2 = 4; + icon_state = "2-4" + }, +/turf/simulated/floor/tiled, +/area/engineering/hallway/engineer_hallway) +"bNc" = ( +/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{ + dir = 1 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/obj/structure/cable/green{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/turf/simulated/floor/tiled, +/area/engineering/hallway/engineer_hallway) +"bNd" = ( +/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers, +/obj/machinery/atmospherics/pipe/manifold/hidden/supply, +/obj/structure/cable/green{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/turf/simulated/floor/tiled/dark, +/area/engineering/hallway/engineer_hallway) +"bNe" = ( +/obj/structure/cable/green{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/obj/structure/cable/green{ + d1 = 1; + d2 = 8; + icon_state = "1-8" + }, +/obj/structure/disposalpipe/segment, +/turf/simulated/floor/tiled, +/area/engineering/hallway/engineer_hallway) +"bNf" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 10 + }, +/obj/machinery/atmospherics/pipe/manifold/hidden/supply{ + dir = 1 + }, +/obj/structure/disposalpipe/segment, +/turf/simulated/floor/tiled, +/area/engineering/hallway/engineer_hallway) +"bNg" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 9; + pixel_y = 0 + }, +/turf/simulated/floor/tiled, +/area/engineering/hallway/engineer_hallway) +"bNh" = ( +/obj/effect/floor_decal/steeldecal/steel_decals4{ + dir = 10 + }, +/obj/effect/floor_decal/steeldecal/steel_decals4, +/turf/simulated/floor/tiled, +/area/engineering/hallway/engineer_hallway) +"bNi" = ( +/obj/machinery/door/firedoor/glass, +/obj/machinery/door/airlock/glass_engineering{ + name = "Engineering Hallway"; + req_one_access = list(10) + }, +/turf/simulated/floor/tiled/steel_grid, +/area/engineering/hallway/engineer_hallway) +"bNj" = ( +/obj/effect/floor_decal/steeldecal/steel_decals4{ + dir = 1 + }, +/obj/effect/floor_decal/steeldecal/steel_decals4{ + dir = 6 + }, +/turf/simulated/floor/tiled, +/area/engineering/foyer) +"bNk" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/red{ + dir = 5; + icon_state = "intact" + }, +/obj/structure/disposalpipe/segment, +/turf/simulated/floor/tiled, +/area/engineering/foyer) +"bNl" = ( +/obj/machinery/portable_atmospherics/canister/oxygen, +/obj/machinery/alarm{ + dir = 1; + pixel_y = -22 + }, +/turf/simulated/floor/tiled/dark, +/area/engineering/engineer_eva) +"bNm" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/structure/cable/green{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/obj/effect/floor_decal/steeldecal/steel_decals4{ + dir = 8 + }, +/obj/effect/floor_decal/steeldecal/steel_decals4{ + dir = 5 + }, +/turf/simulated/floor/tiled, +/area/engineering/engineer_eva) +"bNn" = ( +/obj/effect/floor_decal/borderfloor/corner, +/obj/effect/floor_decal/corner/yellow/bordercorner, +/turf/simulated/floor/tiled, +/area/engineering/engineer_eva) +"bNo" = ( +/obj/machinery/power/apc{ + dir = 4; + name = "east bump"; + pixel_x = 24 + }, +/obj/machinery/light_switch{ + dir = 2; + name = "light switch "; + pixel_x = 36; + pixel_y = 0 + }, +/obj/machinery/firealarm{ + dir = 1; + pixel_x = 0; + pixel_y = -24 + }, +/obj/structure/cable/green, +/obj/effect/floor_decal/borderfloor, +/obj/effect/floor_decal/corner/yellow/border, +/turf/simulated/floor/tiled, +/area/engineering/engineer_eva) +"bNp" = ( +/obj/structure/closet/secure_closet/engineering_personal, +/obj/item/device/radio/intercom{ + name = "Station Intercom (General)"; + pixel_y = -21 + }, +/obj/effect/floor_decal/spline/plain{ + dir = 1 + }, +/turf/simulated/floor/tiled/yellow, +/area/engineering/locker_room) +"bNq" = ( +/obj/structure/table/reinforced, +/obj/item/weapon/storage/firstaid/regular, +/obj/item/bodybag/cryobag{ + pixel_x = 6 + }, +/obj/random/medical/lite, +/obj/effect/floor_decal/spline/plain{ + dir = 5 + }, +/turf/simulated/floor/tiled/yellow, +/area/engineering/locker_room) +"bNr" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/structure/cable/green{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/turf/simulated/floor/tiled, +/area/engineering/locker_room) +"bNs" = ( +/turf/simulated/floor/tiled, +/area/engineering/locker_room) +"bNt" = ( +/obj/structure/closet/secure_closet/atmos_personal, +/obj/machinery/camera/network/engineering{ + c_tag = "ENG - Locker Room"; + dir = 8 + }, +/obj/effect/floor_decal/spline/plain{ + dir = 8 + }, +/turf/simulated/floor/tiled/yellow, +/area/engineering/locker_room) +"bNu" = ( +/obj/item/stack/tile/floor/steel, +/turf/simulated/floor/tiled/steel, +/area/maintenance/engineering) +"bNv" = ( +/obj/item/stack/tile/floor/yellow, +/obj/item/frame/light, +/turf/simulated/floor/plating, +/area/maintenance/engineering) +"bNw" = ( +/obj/structure/flora/ausbushes/brflowers, +/obj/machinery/firealarm{ + pixel_y = 24 + }, +/turf/simulated/floor/grass, +/area/hallway/primary/seconddeck/fpcenter) +"bNx" = ( +/obj/structure/bed/chair{ + dir = 4 + }, +/turf/simulated/floor/tiled/hydro, +/area/hallway/primary/seconddeck/fpcenter) +"bNy" = ( +/obj/structure/table/woodentable, +/obj/machinery/camera/network/second_deck{ + c_tag = "Second Deck - Center Eight" + }, +/obj/item/weapon/book/codex/lore/vir, +/turf/simulated/floor/tiled/hydro, +/area/hallway/primary/seconddeck/fpcenter) +"bNz" = ( +/obj/structure/bed/chair{ + dir = 8 + }, +/turf/simulated/floor/tiled/hydro, +/area/hallway/primary/seconddeck/fpcenter) +"bNA" = ( +/obj/structure/flora/ausbushes/brflowers, +/turf/simulated/floor/grass, +/area/hallway/primary/seconddeck/fpcenter) +"bNB" = ( +/obj/machinery/portable_atmospherics/hydroponics/soil, +/turf/simulated/floor/grass, +/area/hallway/primary/seconddeck/fpcenter) +"bNC" = ( +/obj/structure/sign/directions/bridge{ + dir = 2; + pixel_y = 10 + }, +/obj/structure/sign/directions/science{ + dir = 4 + }, +/obj/structure/sign/directions/medical{ + dir = 4; + pixel_y = -10 + }, +/turf/simulated/wall, +/area/hallway/primary/seconddeck/fscenter) +"bND" = ( +/obj/structure/disposalpipe/segment, +/turf/simulated/floor/tiled, +/area/hallway/primary/seconddeck/fscenter) +"bNE" = ( +/turf/simulated/floor/tiled, +/area/hallway/primary/seconddeck/fscenter) +"bNF" = ( +/obj/structure/sign/directions/engineering{ + dir = 8; + pixel_y = 10 + }, +/obj/structure/sign/directions/cargo{ + dir = 8 + }, +/obj/structure/sign/directions/security{ + dir = 1; + pixel_y = -10 + }, +/turf/simulated/wall, +/area/hallway/primary/seconddeck/fscenter) +"bNG" = ( +/obj/machinery/portable_atmospherics/hydroponics/soil, +/turf/simulated/floor/grass, +/area/hallway/primary/seconddeck/fscenter) +"bNH" = ( +/obj/structure/flora/ausbushes/ywflowers, +/turf/simulated/floor/grass, +/area/hallway/primary/seconddeck/fscenter) +"bNI" = ( +/obj/structure/bed/chair{ + dir = 4 + }, +/turf/simulated/floor/tiled/hydro, +/area/hallway/primary/seconddeck/fscenter) +"bNJ" = ( +/obj/structure/table/woodentable, +/obj/machinery/camera/network/second_deck{ + c_tag = "Second Deck - Center One" + }, +/turf/simulated/floor/tiled/hydro, +/area/hallway/primary/seconddeck/fscenter) +"bNK" = ( +/obj/structure/bed/chair{ + dir = 8 + }, +/turf/simulated/floor/tiled/hydro, +/area/hallway/primary/seconddeck/fscenter) +"bNL" = ( +/obj/structure/flora/ausbushes/brflowers, +/obj/machinery/firealarm{ + pixel_y = 24 + }, +/turf/simulated/floor/grass, +/area/hallway/primary/seconddeck/fscenter) +"bNM" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 6 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 6 + }, +/obj/structure/cable{ + d1 = 2; + d2 = 4; + icon_state = "2-4" + }, +/obj/structure/disposalpipe/segment{ + dir = 4; + icon_state = "pipe-c" + }, +/turf/simulated/floor/plating, +/area/maintenance/research) +"bNN" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 9; + pixel_y = 0 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 9 + }, +/obj/structure/cable{ + d1 = 1; + d2 = 8; + icon_state = "1-8" + }, +/obj/effect/floor_decal/industrial/warning{ + dir = 4 + }, +/obj/structure/disposalpipe/segment{ + dir = 8; + icon_state = "pipe-c" + }, +/turf/simulated/floor/plating, +/area/maintenance/research) +"bNO" = ( +/obj/structure/extinguisher_cabinet{ + pixel_y = -30 + }, +/obj/effect/floor_decal/steeldecal/steel_decals4{ + dir = 1 + }, +/obj/effect/floor_decal/steeldecal/steel_decals4{ + dir = 6 + }, +/turf/simulated/floor/tiled/white, +/area/rnd/research) +"bNP" = ( +/obj/machinery/light, +/turf/simulated/floor/tiled/white, +/area/rnd/research) +"bNQ" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 5 + }, +/obj/item/device/radio/intercom{ + name = "Station Intercom (General)"; + pixel_y = -21 + }, +/obj/effect/floor_decal/borderfloorwhite/corner, +/obj/effect/floor_decal/corner/purple/bordercorner, +/turf/simulated/floor/tiled/white, +/area/rnd/research) +"bNR" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/obj/machinery/atmospherics/unary/vent_scrubber/on{ + dir = 4 + }, +/obj/machinery/alarm{ + dir = 1; + pixel_y = -22 + }, +/obj/effect/floor_decal/borderfloorwhite, +/obj/effect/floor_decal/corner/purple/border, +/turf/simulated/floor/tiled/white, +/area/rnd/research) +"bNS" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, +/obj/machinery/door/firedoor/glass, +/obj/effect/floor_decal/borderfloorwhite, +/obj/effect/floor_decal/corner/purple/border, +/turf/simulated/floor/tiled/white, +/area/rnd/research) +"bNT" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, +/obj/effect/floor_decal/borderfloorwhite, +/obj/effect/floor_decal/corner/purple/border, +/turf/simulated/floor/tiled/white, +/area/rnd/research) +"bNU" = ( +/obj/structure/cable/green{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/obj/machinery/atmospherics/pipe/manifold/hidden/supply{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, +/obj/effect/floor_decal/borderfloorwhite/corner{ + dir = 8 + }, +/obj/effect/floor_decal/corner/purple/bordercorner{ + dir = 8 + }, +/turf/simulated/floor/tiled/white, +/area/rnd/research) +"bNV" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/machinery/atmospherics/pipe/manifold4w/hidden/scrubbers, +/obj/machinery/hologram/holopad, +/obj/effect/floor_decal/industrial/outline/grey, +/obj/structure/disposalpipe/segment, +/turf/simulated/floor/tiled/white, +/area/rnd/research) +"bNW" = ( +/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers, +/obj/effect/floor_decal/borderfloorwhite/corner, +/obj/effect/floor_decal/corner/purple/bordercorner, +/turf/simulated/floor/tiled/white, +/area/rnd/research) +"bNX" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, +/obj/effect/floor_decal/borderfloorwhite, +/obj/effect/floor_decal/corner/purple/border, +/turf/simulated/floor/tiled/white, +/area/rnd/research) +"bNY" = ( +/obj/machinery/door/firedoor/border_only, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, +/obj/effect/floor_decal/borderfloorwhite, +/obj/effect/floor_decal/corner/purple/border, +/turf/simulated/floor/tiled/white, +/area/rnd/research) +"bNZ" = ( +/obj/machinery/atmospherics/unary/vent_pump/on{ + dir = 1 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, +/obj/effect/floor_decal/borderfloorwhite, +/obj/effect/floor_decal/corner/purple/border, +/turf/simulated/floor/tiled/white, +/area/rnd/research) +"bOa" = ( +/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers, +/obj/effect/floor_decal/borderfloorwhite, +/obj/effect/floor_decal/corner/purple/border, +/turf/simulated/floor/tiled/white, +/area/rnd/research) +"bOb" = ( +/obj/structure/cable/green, +/obj/machinery/power/apc{ + dir = 2; + name = "south bump"; + pixel_y = -24 + }, +/obj/machinery/light_switch{ + pixel_x = 12; + pixel_y = -24 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, +/obj/effect/floor_decal/borderfloorwhite, +/obj/effect/floor_decal/corner/purple/border, +/turf/simulated/floor/tiled/white, +/area/rnd/research) +"bOc" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, +/obj/machinery/alarm{ + dir = 1; + pixel_y = -22 + }, +/obj/effect/floor_decal/borderfloorwhite, +/obj/effect/floor_decal/corner/purple/border, +/turf/simulated/floor/tiled/white, +/area/rnd/research) +"bOd" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, +/obj/machinery/camera/network/research{ + c_tag = "SCI - Research Hallway Mid"; + dir = 1 + }, +/obj/effect/floor_decal/borderfloorwhite, +/obj/effect/floor_decal/corner/purple/border, +/turf/simulated/floor/tiled/white, +/area/rnd/research) +"bOe" = ( +/obj/machinery/atmospherics/unary/vent_pump/on{ + dir = 1 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, +/obj/machinery/light, +/obj/effect/floor_decal/borderfloorwhite, +/obj/effect/floor_decal/corner/purple/border, +/turf/simulated/floor/tiled/white, +/area/rnd/research) +"bOf" = ( +/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers, +/obj/structure/disposalpipe/segment, +/obj/effect/floor_decal/borderfloorwhite/corner{ + dir = 8 + }, +/obj/effect/floor_decal/corner/purple/bordercorner{ + dir = 8 + }, +/turf/simulated/floor/tiled/white, +/area/rnd/research) +"bOg" = ( +/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{ + dir = 1 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/structure/cable/green{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/obj/effect/floor_decal/steeldecal/steel_decals4{ + dir = 8 + }, +/obj/effect/floor_decal/steeldecal/steel_decals4{ + dir = 5 + }, +/turf/simulated/floor/tiled/white, +/area/rnd/research) +"bOh" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, +/obj/machinery/light, +/obj/effect/floor_decal/borderfloorwhite, +/obj/effect/floor_decal/corner/purple/border, +/turf/simulated/floor/tiled/white, +/area/rnd/research) +"bOi" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, +/obj/machinery/status_display{ + pixel_x = 0; + pixel_y = -32 + }, +/obj/effect/floor_decal/borderfloorwhite/corner{ + dir = 8 + }, +/obj/effect/floor_decal/corner/purple/bordercorner{ + dir = 8 + }, +/obj/effect/floor_decal/industrial/warning/corner, +/turf/simulated/floor/tiled/white, +/area/rnd/research) +"bOj" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, +/obj/structure/cable/green{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/obj/effect/floor_decal/industrial/warning, +/turf/simulated/floor/tiled/white, +/area/rnd/research) +"bOk" = ( +/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers, +/obj/effect/floor_decal/borderfloorwhite/corner, +/obj/effect/floor_decal/corner/purple/bordercorner, +/obj/effect/floor_decal/industrial/warning/corner{ + dir = 8 + }, +/turf/simulated/floor/tiled/white, +/area/rnd/research) +"bOl" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, +/obj/effect/floor_decal/borderfloorwhite/corner{ + dir = 8 + }, +/obj/effect/floor_decal/corner/purple/bordercorner{ + dir = 8 + }, +/turf/simulated/floor/tiled/white, +/area/rnd/research) +"bOm" = ( +/obj/machinery/atmospherics/pipe/manifold/hidden/supply{ + dir = 8 + }, +/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{ + dir = 1 + }, +/obj/structure/cable/green{ + d1 = 1; + d2 = 4; + icon_state = "1-4" + }, +/obj/structure/cable/green{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/obj/structure/disposalpipe/segment, +/turf/simulated/floor/tiled/white, +/area/rnd/research) +"bOn" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, +/obj/structure/cable/green{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/obj/effect/floor_decal/steeldecal/steel_decals4, +/obj/effect/floor_decal/steeldecal/steel_decals4{ + dir = 10 + }, +/turf/simulated/floor/tiled/white, +/area/rnd/research) +"bOo" = ( +/obj/machinery/door/firedoor/border_only, +/obj/structure/cable/green{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/obj/machinery/door/airlock/command{ + id_tag = null; + name = "Research Director Quarters"; + req_access = list(30) + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/turf/simulated/floor/tiled/steel_grid, +/area/crew_quarters/heads/sc/hor) +"bOp" = ( +/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers, +/obj/machinery/atmospherics/pipe/manifold/hidden/supply, +/obj/structure/cable/green{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/obj/structure/cable/green{ + d1 = 1; + d2 = 8; + icon_state = "1-8" + }, +/obj/effect/floor_decal/steeldecal/steel_decals4{ + dir = 1 + }, +/obj/effect/floor_decal/steeldecal/steel_decals4{ + dir = 6 + }, +/turf/simulated/floor/tiled/white, +/area/rnd/mixing) +"bOq" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, +/obj/machinery/hologram/holopad, +/obj/structure/cable/green{ + d1 = 2; + d2 = 8; + icon_state = "2-8" + }, +/obj/effect/floor_decal/industrial/outline/grey, +/turf/simulated/floor/tiled/white, +/area/rnd/mixing) +"bOr" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, +/turf/simulated/floor/tiled/white, +/area/rnd/mixing) +"bOs" = ( +/obj/machinery/atmospherics/pipe/manifold/hidden/supply{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{ + dir = 4 + }, +/obj/effect/floor_decal/industrial/warning{ + dir = 4 + }, +/turf/simulated/floor/tiled/white, +/area/rnd/mixing) +"bOt" = ( +/obj/machinery/door/airlock/glass_research{ + autoclose = 0; + frequency = 1379; + glass = 1; + icon_state = "door_locked"; + id_tag = "tox_airlock_interior"; + locked = 1; + name = "Mixing Room Interior Airlock"; + req_access = list(7) + }, +/turf/simulated/floor/reinforced/airless, +/area/rnd/mixing) +"bOu" = ( +/obj/machinery/atmospherics/binary/dp_vent_pump/high_volume{ + dir = 2; + frequency = 1379; + id = "tox_airlock_pump" + }, +/obj/machinery/air_sensor{ + frequency = 1430; + id_tag = "toxins_mixing_interior"; + output = 63; + pixel_x = -8; + pixel_y = -18 + }, +/turf/simulated/floor/reinforced/airless, +/area/rnd/mixing) +"bOv" = ( +/obj/machinery/door/airlock/glass_research{ + autoclose = 0; + frequency = 1379; + glass = 1; + icon_state = "door_locked"; + id_tag = "tox_airlock_exterior"; + locked = 1; + name = "Mixing Room Exterior Airlock"; + req_access = list(7) + }, +/turf/simulated/floor/reinforced/airless, +/area/rnd/mixing) +"bOw" = ( +/obj/machinery/air_sensor{ + frequency = 1430; + id_tag = "toxins_mixing_exterior"; + output = 63 + }, +/turf/simulated/floor/reinforced/airless, +/area/rnd/mixing) +"bOx" = ( +/obj/machinery/atmospherics/pipe/simple/heat_exchanging, +/turf/simulated/floor/reinforced/airless, +/area/rnd/mixing) +"bOy" = ( +/obj/machinery/atmospherics/pipe/manifold4w/visible/black, +/obj/effect/floor_decal/industrial/warning{ + icon_state = "warning"; + dir = 8 + }, +/turf/simulated/floor, +/area/engineering/engine_waste) +"bOz" = ( +/obj/machinery/atmospherics/unary/heat_exchanger{ + dir = 8 + }, +/obj/effect/floor_decal/industrial/warning{ + dir = 10 + }, +/turf/simulated/floor, +/area/engineering/engine_waste) +"bOA" = ( +/obj/machinery/atmospherics/unary/heat_exchanger{ + dir = 4 + }, +/obj/effect/floor_decal/industrial/warning{ + dir = 6 + }, +/turf/simulated/floor, +/area/engineering/engine_waste) +"bOB" = ( +/obj/machinery/atmospherics/pipe/manifold/visible/black, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/turf/simulated/floor, +/area/engineering/engine_waste) +"bOC" = ( +/obj/machinery/atmospherics/pipe/simple/visible/black{ + dir = 10 + }, +/obj/machinery/meter, +/turf/simulated/floor, +/area/engineering/engine_waste) +"bOD" = ( +/obj/machinery/atmospherics/pipe/simple/visible/cyan, +/obj/item/device/radio/intercom{ + dir = 4; + name = "Station Intercom (General)"; + pixel_x = 21 + }, +/obj/machinery/meter, +/turf/simulated/floor, +/area/engineering/engine_waste) +"bOE" = ( +/obj/effect/floor_decal/industrial/warning{ + icon_state = "warning"; + dir = 8 + }, +/obj/machinery/drone_fabricator/derelict, +/obj/machinery/light/small{ + dir = 8 + }, +/turf/simulated/floor/plating, +/area/engineering/drone_fabrication) +"bOF" = ( +/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{ + dir = 8 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 5 + }, +/obj/structure/cable/green{ + d1 = 1; + d2 = 4; + icon_state = "1-4" + }, +/turf/simulated/floor/plating, +/area/engineering/drone_fabrication) +"bOG" = ( +/obj/effect/floor_decal/industrial/warning{ + icon_state = "warning"; + dir = 4 + }, +/obj/machinery/atmospherics/pipe/manifold4w/hidden/supply, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, +/obj/structure/cable/green{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/obj/structure/cable/green{ + d1 = 1; + d2 = 4; + icon_state = "1-4" + }, +/turf/simulated/floor/plating, +/area/engineering/drone_fabrication) +"bOH" = ( +/obj/machinery/door/firedoor/border_only, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/obj/structure/cable/green{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/obj/machinery/door/airlock/engineering{ + name = "Engineering Drone Fabrication"; + req_one_access = list(11,24) + }, +/turf/simulated/floor/tiled/steel_grid, +/area/engineering/drone_fabrication) +"bOI" = ( +/obj/structure/disposalpipe/segment{ + dir = 4; + icon_state = "pipe-c" + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, +/obj/structure/cable/green{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/obj/effect/floor_decal/steeldecal/steel_decals4{ + dir = 1 + }, +/obj/effect/floor_decal/steeldecal/steel_decals4{ + dir = 6 + }, +/turf/simulated/floor/tiled, +/area/engineering/hallway/engineer_hallway) +"bOJ" = ( +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/manifold/hidden/supply{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{ + dir = 4 + }, +/obj/structure/cable/green{ + d1 = 1; + d2 = 8; + icon_state = "1-8" + }, +/turf/simulated/floor/tiled/dark, +/area/engineering/hallway/engineer_hallway) +"bOK" = ( +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/turf/simulated/floor/tiled, +/area/engineering/hallway/engineer_hallway) +"bOL" = ( +/obj/machinery/door/firedoor/border_only, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/turf/simulated/floor/tiled, +/area/engineering/hallway/engineer_hallway) +"bOM" = ( +/obj/machinery/atmospherics/unary/vent_scrubber/on{ + dir = 1 + }, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/turf/simulated/floor/tiled, +/area/engineering/hallway/engineer_hallway) +"bON" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/obj/structure/cable/green{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/manifold/hidden/supply{ + dir = 8 + }, +/obj/effect/floor_decal/steeldecal/steel_decals4{ + dir = 8 + }, +/obj/effect/floor_decal/steeldecal/steel_decals4{ + dir = 5 + }, +/turf/simulated/floor/tiled, +/area/engineering/hallway/engineer_hallway) +"bOO" = ( +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/turf/simulated/floor/tiled, +/area/engineering/hallway/engineer_hallway) +"bOP" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/turf/simulated/floor/tiled, +/area/engineering/hallway/engineer_hallway) +"bOQ" = ( +/obj/machinery/atmospherics/pipe/manifold/hidden/supply, +/obj/structure/disposalpipe/sortjunction{ + dir = 4; + icon_state = "pipe-j1s"; + name = "Engineering"; + sortType = "Engineering" + }, +/obj/effect/floor_decal/steeldecal/steel_decals4{ + dir = 8 + }, +/obj/effect/floor_decal/steeldecal/steel_decals4{ + dir = 5 + }, +/turf/simulated/floor/tiled, +/area/engineering/hallway/engineer_hallway) +"bOR" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 9; + pixel_y = 0 + }, +/obj/machinery/camera/network/engineering{ + c_tag = "ENG - Engineering Hallway 1"; + dir = 1 + }, +/obj/machinery/light, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/turf/simulated/floor/tiled, +/area/engineering/hallway/engineer_hallway) +"bOS" = ( +/obj/structure/cable/green, +/obj/machinery/power/apc{ + dir = 2; + name = "south bump"; + pixel_y = -24 + }, +/obj/machinery/light_switch{ + pixel_x = 11; + pixel_y = -24 + }, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/turf/simulated/floor/tiled, +/area/engineering/hallway/engineer_hallway) +"bOT" = ( +/obj/machinery/atmospherics/unary/vent_scrubber/on{ + dir = 1 + }, +/obj/item/device/radio/intercom{ + name = "Station Intercom (General)"; + pixel_y = -21 + }, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/turf/simulated/floor/tiled, +/area/engineering/hallway/engineer_hallway) +"bOU" = ( +/obj/structure/cable/green{ + d1 = 1; + d2 = 4; + icon_state = "1-4" + }, +/obj/structure/disposalpipe/segment{ + dir = 8; + icon_state = "pipe-c" + }, +/turf/simulated/floor/tiled, +/area/engineering/hallway/engineer_hallway) +"bOV" = ( +/obj/structure/cable/green{ + d1 = 2; + d2 = 8; + icon_state = "2-8" + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/obj/structure/disposalpipe/segment, +/obj/effect/floor_decal/steeldecal/steel_decals4{ + dir = 8 + }, +/obj/effect/floor_decal/steeldecal/steel_decals4{ + dir = 5 + }, +/turf/simulated/floor/tiled, +/area/engineering/hallway/engineer_hallway) +"bOW" = ( +/obj/machinery/door/firedoor/glass, +/obj/machinery/door/airlock/glass_engineering{ + name = "Engineering Hallway"; + req_one_access = list(10) + }, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/turf/simulated/floor/tiled/steel_grid, +/area/engineering/hallway/engineer_hallway) +"bOX" = ( +/obj/structure/disposalpipe/segment, +/turf/simulated/floor/tiled, +/area/engineering/foyer) +"bOY" = ( +/obj/machinery/atmospherics/pipe/manifold/hidden/cyan{ + dir = 8; + icon_state = "map" + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/turf/simulated/floor/tiled, +/area/engineering/foyer) +"bOZ" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/cyan{ + dir = 4; + icon_state = "intact" + }, +/turf/simulated/floor/tiled, +/area/engineering/foyer) +"bPa" = ( +/obj/machinery/atmospherics/portables_connector{ + dir = 8 + }, +/obj/machinery/alarm{ + dir = 8; + icon_state = "alarm0"; + pixel_x = 22 + }, +/obj/machinery/portable_atmospherics/powered/pump/filled, +/obj/effect/floor_decal/borderfloor{ + dir = 4 + }, +/obj/effect/floor_decal/corner/white/border{ + dir = 4 + }, +/obj/effect/floor_decal/borderfloor/corner2{ + dir = 6 + }, +/obj/effect/floor_decal/corner/blue/bordercorner2{ + dir = 6 + }, +/turf/simulated/floor/tiled, +/area/engineering/foyer) +"bPb" = ( +/obj/machinery/door/firedoor/glass, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/machinery/door/airlock/glass_engineeringatmos{ + name = "Engineering EVA Storage"; + req_one_access = list(11,24) + }, +/obj/structure/cable/green{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/turf/simulated/floor/tiled/steel_grid, +/area/engineering/engineer_eva) +"bPc" = ( +/obj/structure/closet/wardrobe/engineering_yellow, +/obj/machinery/atmospherics/unary/vent_pump/on{ + dir = 4 + }, +/obj/machinery/light{ + dir = 8; + icon_state = "tube1"; + pixel_y = 0 + }, +/obj/effect/floor_decal/spline/plain{ + dir = 4 + }, +/turf/simulated/floor/tiled/yellow, +/area/engineering/locker_room) +"bPd" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/obj/machinery/atmospherics/pipe/manifold/hidden/supply{ + dir = 4 + }, +/obj/structure/cable/green{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/turf/simulated/floor/tiled, +/area/engineering/locker_room) +"bPe" = ( +/obj/structure/closet/secure_closet/atmos_personal, +/obj/machinery/alarm{ + dir = 8; + icon_state = "alarm0"; + pixel_x = 22 + }, +/obj/effect/floor_decal/spline/plain{ + dir = 8 + }, +/turf/simulated/floor/tiled/yellow, +/area/engineering/locker_room) +"bPf" = ( +/obj/item/weapon/extinguisher, +/turf/simulated/floor/plating, +/area/maintenance/engineering) +"bPg" = ( +/obj/item/stack/tile/floor/yellow, +/turf/simulated/floor/plating, +/area/maintenance/engineering) +"bPh" = ( +/obj/structure/flora/ausbushes/ppflowers, +/turf/simulated/floor/grass, +/area/hallway/primary/seconddeck/fpcenter) +"bPi" = ( +/obj/structure/flora/ausbushes/ywflowers, +/obj/machinery/light{ + dir = 1 + }, +/turf/simulated/floor/grass, +/area/hallway/primary/seconddeck/fpcenter) +"bPj" = ( +/obj/structure/bed/chair{ + dir = 4 + }, +/obj/effect/floor_decal/spline/plain, +/turf/simulated/floor/tiled/hydro, +/area/hallway/primary/seconddeck/fpcenter) +"bPk" = ( +/obj/structure/table/woodentable, +/obj/effect/floor_decal/spline/plain, +/obj/item/device/communicator, +/turf/simulated/floor/tiled/hydro, +/area/hallway/primary/seconddeck/fpcenter) +"bPl" = ( +/obj/structure/bed/chair{ + dir = 8 + }, +/obj/effect/floor_decal/spline/plain, +/turf/simulated/floor/tiled/hydro, +/area/hallway/primary/seconddeck/fpcenter) +"bPm" = ( +/obj/effect/wingrille_spawn/reinforced, +/obj/machinery/door/firedoor/border_only, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/obj/structure/cable{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/turf/simulated/floor/plating, +/area/hallway/primary/seconddeck/fscenter) +"bPn" = ( +/obj/structure/bed/chair{ + dir = 4 + }, +/obj/effect/floor_decal/spline/plain, +/turf/simulated/floor/tiled/hydro, +/area/hallway/primary/seconddeck/fscenter) +"bPo" = ( +/obj/structure/table/woodentable, +/obj/item/device/paicard, +/obj/effect/floor_decal/spline/plain, +/turf/simulated/floor/tiled/hydro, +/area/hallway/primary/seconddeck/fscenter) +"bPp" = ( +/obj/structure/bed/chair{ + dir = 8 + }, +/obj/effect/floor_decal/spline/plain, +/turf/simulated/floor/tiled/hydro, +/area/hallway/primary/seconddeck/fscenter) +"bPq" = ( +/obj/structure/flora/ausbushes/ppflowers, +/turf/simulated/floor/grass, +/area/hallway/primary/seconddeck/fscenter) +"bPr" = ( +/obj/structure/flora/ausbushes/ywflowers, +/obj/machinery/light{ + dir = 1 + }, +/turf/simulated/floor/grass, +/area/hallway/primary/seconddeck/fscenter) +"bPs" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/obj/structure/cable{ + d1 = 1; + d2 = 2; + icon_state = "1-2"; + pixel_y = 0 + }, +/obj/effect/floor_decal/industrial/warning, +/obj/structure/disposalpipe/segment, +/turf/simulated/floor/plating, +/area/maintenance/research) +"bPt" = ( +/obj/effect/floor_decal/industrial/warning/corner{ + dir = 8 + }, +/turf/simulated/floor/plating, +/area/maintenance/research) +"bPu" = ( +/obj/effect/floor_decal/industrial/warning/corner{ + dir = 4 + }, +/turf/simulated/floor/plating, +/area/maintenance/research) +"bPv" = ( +/turf/simulated/wall/r_wall, +/area/rnd/lab) +"bPw" = ( +/turf/simulated/wall, +/area/rnd/lab) +"bPx" = ( +/obj/machinery/status_display, +/turf/simulated/wall, +/area/rnd/lab) +"bPy" = ( +/obj/structure/cable/green{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/obj/machinery/atmospherics/unary/vent_pump/on{ + dir = 1 + }, +/obj/machinery/firealarm{ + dir = 8; + pixel_x = -24 + }, +/obj/effect/floor_decal/borderfloorwhite{ + dir = 8 + }, +/obj/effect/floor_decal/corner/purple/border{ + dir = 8 + }, +/turf/simulated/floor/tiled/white, +/area/rnd/research) +"bPz" = ( +/obj/effect/landmark{ + name = "lightsout" + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/obj/structure/disposalpipe/segment, +/turf/simulated/floor/tiled/white, +/area/rnd/research) +"bPA" = ( +/turf/simulated/wall, +/area/assembly/robotics) +"bPB" = ( +/obj/machinery/status_display, +/turf/simulated/wall, +/area/assembly/robotics) +"bPC" = ( +/turf/simulated/wall/r_wall, +/area/assembly/robotics) +"bPD" = ( +/obj/structure/disposalpipe/segment, +/turf/simulated/wall/r_wall, +/area/rnd/misc_lab) +"bPE" = ( +/obj/machinery/door/firedoor/border_only, +/obj/machinery/door/airlock{ + name = "Research Restroom" + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/obj/structure/cable/green{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/turf/simulated/floor/tiled/steel_grid, +/area/rnd/research_restroom_sc) +"bPF" = ( +/turf/simulated/wall/r_wall, +/area/rnd/misc_lab) +"bPG" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, +/obj/machinery/door/firedoor/glass, +/obj/structure/cable/green{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/obj/machinery/door/airlock/glass_research{ + name = "Toxins Lab"; + req_access = list(7) + }, +/turf/simulated/floor/tiled/steel_grid, +/area/rnd/mixing) +"bPH" = ( +/obj/structure/sign/warning/server_room, +/turf/simulated/wall/r_wall, +/area/server) +"bPI" = ( +/turf/simulated/wall/r_wall, +/area/server) +"bPJ" = ( +/obj/machinery/atmospherics/unary/vent_pump/on{ + dir = 4 + }, +/obj/effect/floor_decal/borderfloorwhite{ + dir = 10 + }, +/obj/effect/floor_decal/corner/purple/border{ + dir = 10 + }, +/turf/simulated/floor/tiled/white, +/area/rnd/research) +"bPK" = ( +/obj/machinery/atmospherics/pipe/manifold/hidden/supply{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/obj/structure/cable/green{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/obj/structure/disposalpipe/segment, +/obj/effect/floor_decal/borderfloorwhite/corner{ + dir = 8 + }, +/obj/effect/floor_decal/corner/purple/bordercorner{ + dir = 8 + }, +/turf/simulated/floor/tiled/white, +/area/rnd/research) +"bPL" = ( +/obj/effect/floor_decal/borderfloorwhite/corner, +/obj/effect/floor_decal/corner/purple/bordercorner, +/turf/simulated/floor/tiled/white, +/area/rnd/research) +"bPM" = ( +/obj/machinery/atmospherics/portables_connector{ + dir = 4 + }, +/obj/effect/floor_decal/industrial/warning/full, +/turf/simulated/floor/tiled/white, +/area/rnd/mixing) +"bPN" = ( +/obj/machinery/atmospherics/pipe/simple/visible{ + dir = 4 + }, +/obj/structure/cable/green{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/turf/simulated/floor/tiled/white, +/area/rnd/mixing) +"bPO" = ( +/obj/machinery/atmospherics/valve{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{ + dir = 8 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/machinery/button/ignition{ + id = "mixingsparker"; + pixel_x = 25; + pixel_y = -5 + }, +/obj/machinery/button/remote/blast_door{ + id = "mixvent"; + name = "Mixing Room Vent Control"; + pixel_x = 25; + pixel_y = 5; + req_access = list(7) + }, +/obj/effect/floor_decal/industrial/warning/corner{ + icon_state = "warningcorner"; + dir = 4 + }, +/turf/simulated/floor/tiled/white, +/area/rnd/mixing) +"bPP" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden{ + dir = 4 + }, +/turf/simulated/wall/r_wall, +/area/rnd/mixing) +"bPQ" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 9 + }, +/obj/machinery/atmospherics/binary/pump{ + dir = 8 + }, +/turf/simulated/floor/reinforced/airless, +/area/rnd/mixing) +"bPR" = ( +/obj/machinery/atmospherics/unary/vent_pump{ + dir = 8; + external_pressure_bound = 0; + external_pressure_bound_default = 0; + icon_state = "map_vent_in"; + initialize_directions = 1; + internal_pressure_bound = 4000; + internal_pressure_bound_default = 4000; + pressure_checks = 2; + pressure_checks_default = 2; + pump_direction = 0; + use_power = 1 + }, +/obj/machinery/sparker{ + dir = 2; + id = "mixingsparker"; + pixel_x = -22 + }, +/turf/simulated/floor/reinforced/airless, +/area/rnd/mixing) +"bPS" = ( +/obj/machinery/atmospherics/pipe/simple/heat_exchanging{ + dir = 5 + }, +/turf/simulated/floor/reinforced/airless, +/area/rnd/mixing) +"bPT" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/red{ + icon_state = "intact"; + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/cyan, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/turf/simulated/floor/tiled, +/area/engineering/foyer) +"bPU" = ( +/obj/machinery/atmospherics/pipe/simple/visible/black{ + dir = 9 + }, +/obj/effect/floor_decal/industrial/warning{ + icon_state = "warning"; + dir = 8 + }, +/turf/simulated/floor, +/area/engineering/engine_waste) +"bPV" = ( +/turf/simulated/floor, +/area/engineering/engine_waste) +"bPW" = ( +/obj/structure/window/reinforced{ + dir = 4; + health = 1e+006 + }, +/obj/effect/floor_decal/industrial/warning{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/turf/simulated/floor, +/area/engineering/engine_waste) +"bPX" = ( +/obj/machinery/atmospherics/binary/pump{ + dir = 1 + }, +/obj/machinery/door/window/northleft{ + name = "Engine Waste"; + req_one_access = list(10,24) + }, +/obj/effect/floor_decal/industrial/warning{ + icon_state = "warning"; + dir = 1 + }, +/obj/effect/floor_decal/industrial/outline/blue, +/obj/effect/engine_setup/pump_max, +/turf/simulated/floor, +/area/engineering/engine_waste) +"bPY" = ( +/obj/machinery/door/window/northright{ + name = "Engine Waste"; + req_one_access = list(10,24) + }, +/obj/machinery/atmospherics/binary/pump{ + dir = 1 + }, +/obj/machinery/button/remote/blast_door{ + desc = "A remote control-switch for the engine control room blast doors."; + id = "EngineEmitterPortWest"; + name = "Engine Room Blast Doors"; + pixel_x = 26; + pixel_y = 0; + req_access = null; + req_one_access = list(11,24) + }, +/obj/effect/floor_decal/industrial/warning{ + icon_state = "warning"; + dir = 1 + }, +/obj/effect/floor_decal/industrial/outline/yellow, +/turf/simulated/floor, +/area/engineering/engine_waste) +"bPZ" = ( +/obj/effect/floor_decal/industrial/warning{ + icon_state = "warning"; + dir = 8 + }, +/obj/machinery/computer/security/engineering{ + name = "Drone Monitoring Cameras"; + network = list("Engineering") + }, +/obj/machinery/camera/network/engineering{ + c_tag = "ENG - Drone Fabrication"; + dir = 4 + }, +/obj/machinery/firealarm{ + dir = 8; + pixel_x = -24; + pixel_y = 0 + }, +/turf/simulated/floor/plating, +/area/engineering/drone_fabrication) +"bQa" = ( +/obj/structure/bed/chair{ + dir = 8 + }, +/turf/simulated/floor/plating, +/area/engineering/drone_fabrication) +"bQb" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/turf/simulated/floor/plating, +/area/engineering/drone_fabrication) +"bQc" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/effect/floor_decal/industrial/warning{ + dir = 4 + }, +/obj/item/device/radio/intercom{ + dir = 4; + name = "Station Intercom (General)"; + pixel_x = 21 + }, +/turf/simulated/floor/plating, +/area/engineering/drone_fabrication) +"bQd" = ( +/obj/machinery/atmospherics/unary/vent_pump/on{ + dir = 4 + }, +/obj/machinery/alarm{ + dir = 4; + icon_state = "alarm0"; + pixel_x = -22 + }, +/obj/structure/disposalpipe/segment, +/obj/effect/floor_decal/steeldecal/steel_decals4{ + dir = 8 + }, +/obj/effect/floor_decal/steeldecal/steel_decals4{ + dir = 5 + }, +/turf/simulated/floor/tiled, +/area/engineering/hallway/engineer_hallway) +"bQe" = ( +/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{ + dir = 8 + }, +/obj/machinery/atmospherics/pipe/manifold/hidden/supply{ + dir = 4 + }, +/obj/effect/floor_decal/steeldecal/steel_decals4{ + dir = 8 + }, +/obj/effect/floor_decal/steeldecal/steel_decals4{ + dir = 5 + }, +/turf/simulated/floor/tiled, +/area/engineering/hallway/engineer_hallway) +"bQf" = ( +/obj/machinery/atmospherics/unary/vent_scrubber/on{ + dir = 8 + }, +/turf/simulated/floor/tiled, +/area/engineering/hallway/engineer_hallway) +"bQg" = ( +/turf/simulated/wall, +/area/engineering/workshop) +"bQh" = ( +/obj/machinery/door/firedoor/border_only, +/obj/effect/wingrille_spawn/reinforced, +/turf/simulated/floor, +/area/engineering/workshop) +"bQi" = ( +/obj/machinery/door/firedoor/glass, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/machinery/door/airlock/glass_engineeringatmos{ + name = "Engineering Workshop"; + req_one_access = list(11,24) + }, +/obj/structure/cable/green{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/turf/simulated/floor/tiled/steel_grid, +/area/engineering/workshop) +"bQj" = ( +/obj/machinery/door/firedoor/glass, +/obj/machinery/door/airlock/glass_engineeringatmos{ + name = "Engineering Workshop"; + req_one_access = list(11,24) + }, +/obj/structure/disposalpipe/segment, +/turf/simulated/floor/tiled/steel_grid, +/area/engineering/workshop) +"bQk" = ( +/turf/simulated/wall/r_wall, +/area/crew_quarters/heads/sc/chief) +"bQl" = ( +/obj/machinery/door/firedoor/glass, +/obj/structure/cable/green{ + d2 = 4; + icon_state = "0-4" + }, +/obj/effect/wingrille_spawn/reinforced/polarized{ + id = "ceoffice" + }, +/turf/simulated/floor, +/area/crew_quarters/heads/sc/chief) +"bQm" = ( +/obj/machinery/door/firedoor/border_only, +/obj/structure/cable/green{ + d2 = 4; + icon_state = "0-4" + }, +/obj/structure/cable/green{ + d2 = 8; + icon_state = "0-8" + }, +/obj/effect/wingrille_spawn/reinforced/polarized{ + id = "ceoffice" + }, +/turf/simulated/floor, +/area/crew_quarters/heads/sc/chief) +"bQn" = ( +/obj/machinery/door/firedoor/glass, +/obj/structure/cable/green{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/obj/structure/cable/green{ + d1 = 1; + d2 = 4; + icon_state = "1-4" + }, +/obj/structure/cable/green{ + d1 = 1; + d2 = 8; + icon_state = "1-8" + }, +/obj/machinery/door/airlock/command{ + name = "Chief Engineer"; + req_access = list(56) + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/obj/structure/disposalpipe/segment, +/turf/simulated/floor/tiled/steel_grid, +/area/crew_quarters/heads/sc/chief) +"bQo" = ( +/obj/machinery/door/firedoor/border_only, +/obj/structure/cable/green{ + d2 = 8; + icon_state = "0-8" + }, +/obj/structure/cable/green{ + d2 = 4; + icon_state = "0-4" + }, +/obj/effect/wingrille_spawn/reinforced/polarized{ + id = "ceoffice" + }, +/turf/simulated/floor, +/area/crew_quarters/heads/sc/chief) +"bQp" = ( +/obj/machinery/door/firedoor/glass, +/obj/structure/cable/green{ + d2 = 8; + icon_state = "0-8" + }, +/obj/effect/wingrille_spawn/reinforced/polarized{ + id = "ceoffice" + }, +/turf/simulated/floor, +/area/crew_quarters/heads/sc/chief) +"bQq" = ( +/obj/machinery/power/apc{ + dir = 8; + name = "west bump"; + pixel_x = -24 + }, +/obj/structure/cable/green{ + d2 = 4; + icon_state = "0-4" + }, +/obj/machinery/camera/network/engineering{ + c_tag = "ENG - Foyer"; + dir = 4 + }, +/obj/effect/floor_decal/borderfloor/corner{ + dir = 8 + }, +/obj/effect/floor_decal/corner/yellow/bordercorner{ + dir = 8 + }, +/turf/simulated/floor/tiled, +/area/engineering/foyer) +"bQr" = ( +/obj/structure/cable/green{ + d1 = 2; + d2 = 8; + icon_state = "2-8" + }, +/obj/structure/disposalpipe/segment, +/turf/simulated/floor/tiled, +/area/engineering/foyer) +"bQs" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/cyan{ + dir = 5; + icon_state = "intact" + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/turf/simulated/floor/tiled, +/area/engineering/foyer) +"bQt" = ( +/obj/machinery/atmospherics/portables_connector{ + dir = 8 + }, +/obj/machinery/firealarm{ + dir = 4; + pixel_x = 24 + }, +/obj/machinery/portable_atmospherics/powered/pump/filled, +/obj/effect/floor_decal/borderfloor{ + dir = 4 + }, +/obj/effect/floor_decal/corner/blue/border{ + dir = 4 + }, +/obj/effect/floor_decal/borderfloor/corner2{ + dir = 5 + }, +/obj/effect/floor_decal/corner/white/bordercorner2{ + dir = 5 + }, +/turf/simulated/floor/tiled, +/area/engineering/foyer) +"bQu" = ( +/turf/simulated/wall, +/area/engineering/break_room) +"bQv" = ( +/obj/machinery/disposal, +/obj/effect/floor_decal/corner/white/diagonal, +/obj/item/device/radio/intercom{ + dir = 8; + name = "Station Intercom (General)"; + pixel_x = -21 + }, +/obj/structure/disposalpipe/trunk, +/turf/simulated/floor/tiled, +/area/engineering/break_room) +"bQw" = ( +/obj/effect/floor_decal/corner/white/diagonal, +/turf/simulated/floor/tiled, +/area/engineering/break_room) +"bQx" = ( +/obj/effect/floor_decal/corner/white/diagonal, +/obj/structure/cable/green{ + d1 = 1; + d2 = 4; + icon_state = "1-4" + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/obj/structure/cable/green{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/obj/effect/floor_decal/steeldecal/steel_decals4{ + dir = 9 + }, +/obj/effect/floor_decal/steeldecal/steel_decals4{ + dir = 4 + }, +/turf/simulated/floor/tiled, +/area/engineering/break_room) +"bQy" = ( +/obj/effect/floor_decal/corner/white/diagonal, +/obj/structure/cable/green{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/turf/simulated/floor/tiled, +/area/engineering/break_room) +"bQz" = ( +/obj/effect/floor_decal/corner/white/diagonal, +/obj/structure/cable/green{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/obj/machinery/firealarm{ + pixel_y = 24 + }, +/turf/simulated/floor/tiled, +/area/engineering/break_room) +"bQA" = ( +/obj/effect/floor_decal/corner/white/diagonal, +/obj/structure/cable/green{ + d2 = 8; + icon_state = "0-8" + }, +/obj/machinery/power/apc{ + dir = 1; + name = "north bump"; + pixel_x = 0; + pixel_y = 24 + }, +/obj/machinery/light_switch{ + pixel_x = 11; + pixel_y = 24 + }, +/turf/simulated/floor/tiled, +/area/engineering/break_room) +"bQB" = ( +/obj/machinery/ai_status_display, +/turf/simulated/wall, +/area/engineering/locker_room) +"bQC" = ( +/obj/structure/closet/wardrobe/atmospherics_yellow, +/obj/effect/floor_decal/spline/plain{ + dir = 4 + }, +/turf/simulated/floor/tiled/yellow, +/area/engineering/locker_room) +"bQD" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/structure/cable/green{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/obj/effect/floor_decal/steeldecal/steel_decals4{ + dir = 8 + }, +/obj/effect/floor_decal/steeldecal/steel_decals4{ + dir = 5 + }, +/turf/simulated/floor/tiled, +/area/engineering/locker_room) +"bQE" = ( +/obj/structure/closet/secure_closet/atmos_personal, +/obj/effect/floor_decal/spline/plain{ + dir = 8 + }, +/turf/simulated/floor/tiled/yellow, +/area/engineering/locker_room) +"bQF" = ( +/obj/item/frame/extinguisher_cabinet, +/turf/simulated/floor/plating, +/area/maintenance/engineering) +"bQG" = ( +/obj/structure/closet/wardrobe/black, +/obj/item/clothing/shoes/boots/combat, +/obj/random/maintenance/engineering, +/obj/random/maintenance/engineering, +/obj/machinery/alarm{ + dir = 8; + pixel_x = 22; + pixel_y = 0 + }, +/turf/simulated/floor, +/area/maintenance/engineering) +"bQH" = ( +/obj/effect/floor_decal/borderfloor{ + dir = 9 + }, +/obj/effect/floor_decal/corner/green/border{ + dir = 9 + }, +/turf/simulated/floor/tiled, +/area/hallway/primary/seconddeck/fpcenter) +"bQI" = ( +/obj/effect/floor_decal/borderfloor/corner{ + dir = 1 + }, +/obj/effect/floor_decal/corner/green/bordercorner{ + dir = 1 + }, +/turf/simulated/floor/tiled, +/area/hallway/primary/seconddeck/fpcenter) +"bQJ" = ( +/turf/simulated/floor/tiled, +/area/hallway/primary/seconddeck/fpcenter) +"bQK" = ( +/obj/effect/floor_decal/borderfloor/corner{ + dir = 4 + }, +/obj/effect/floor_decal/corner/green/bordercorner{ + dir = 4 + }, +/turf/simulated/floor/tiled, +/area/hallway/primary/seconddeck/fpcenter) +"bQL" = ( +/obj/machinery/atmospherics/unary/vent_pump/on, +/obj/effect/floor_decal/borderfloor{ + dir = 1 + }, +/obj/effect/floor_decal/corner/green/border{ + dir = 1 + }, +/turf/simulated/floor/tiled, +/area/hallway/primary/seconddeck/fpcenter) +"bQM" = ( +/obj/effect/floor_decal/borderfloor{ + dir = 1 + }, +/obj/effect/floor_decal/corner/green/border{ + dir = 1 + }, +/turf/simulated/floor/tiled, +/area/hallway/primary/seconddeck/fpcenter) +"bQN" = ( +/obj/effect/floor_decal/borderfloor{ + dir = 1 + }, +/obj/effect/floor_decal/corner/green/border{ + dir = 1 + }, +/obj/effect/floor_decal/borderfloor/corner2{ + dir = 1 + }, +/obj/effect/floor_decal/corner/green/bordercorner2{ + dir = 1 + }, +/turf/simulated/floor/tiled, +/area/hallway/primary/seconddeck/fpcenter) +"bQO" = ( +/obj/effect/floor_decal/steeldecal/steel_decals4{ + dir = 10 + }, +/obj/effect/floor_decal/steeldecal/steel_decals4, +/turf/simulated/floor/tiled, +/area/hallway/primary/seconddeck/fpcenter) +"bQP" = ( +/obj/machinery/door/firedoor/border_only, +/obj/machinery/door/airlock/glass{ + name = "Central Access" + }, +/turf/simulated/floor/tiled/steel_grid, +/area/hallway/primary/seconddeck/fscenter) +"bQQ" = ( +/obj/structure/disposalpipe/segment, +/obj/effect/floor_decal/steeldecal/steel_decals4{ + dir = 6 + }, +/obj/effect/floor_decal/steeldecal/steel_decals4{ + dir = 1 + }, +/turf/simulated/floor/tiled, +/area/hallway/primary/seconddeck/fscenter) +"bQR" = ( +/obj/machinery/atmospherics/unary/vent_pump/on, +/obj/effect/floor_decal/steeldecal/steel_decals4{ + dir = 10 + }, +/obj/effect/floor_decal/steeldecal/steel_decals4, +/turf/simulated/floor/tiled, +/area/hallway/primary/seconddeck/fscenter) +"bQS" = ( +/obj/effect/floor_decal/steeldecal/steel_decals4{ + dir = 6 + }, +/obj/effect/floor_decal/steeldecal/steel_decals4{ + dir = 1 + }, +/turf/simulated/floor/tiled, +/area/hallway/primary/seconddeck/fscenter) +"bQT" = ( +/obj/effect/floor_decal/borderfloor{ + dir = 1 + }, +/obj/effect/floor_decal/corner/green/border{ + dir = 1 + }, +/obj/effect/floor_decal/borderfloor/corner2{ + dir = 4 + }, +/obj/effect/floor_decal/corner/green/bordercorner2{ + dir = 4 + }, +/turf/simulated/floor/tiled, +/area/hallway/primary/seconddeck/fscenter) +"bQU" = ( +/obj/effect/floor_decal/borderfloor{ + dir = 1 + }, +/obj/effect/floor_decal/corner/green/border{ + dir = 1 + }, +/turf/simulated/floor/tiled, +/area/hallway/primary/seconddeck/fscenter) +"bQV" = ( +/obj/machinery/atmospherics/unary/vent_scrubber/on, +/obj/effect/floor_decal/borderfloor{ + dir = 1 + }, +/obj/effect/floor_decal/corner/green/border{ + dir = 1 + }, +/turf/simulated/floor/tiled, +/area/hallway/primary/seconddeck/fscenter) +"bQW" = ( +/obj/effect/floor_decal/borderfloor/corner{ + dir = 1 + }, +/obj/effect/floor_decal/corner/green/bordercorner{ + dir = 1 + }, +/turf/simulated/floor/tiled, +/area/hallway/primary/seconddeck/fscenter) +"bQX" = ( +/obj/effect/floor_decal/borderfloor/corner{ + dir = 4 + }, +/obj/effect/floor_decal/corner/green/bordercorner{ + dir = 4 + }, +/turf/simulated/floor/tiled, +/area/hallway/primary/seconddeck/fscenter) +"bQY" = ( +/obj/effect/floor_decal/borderfloor{ + dir = 5 + }, +/obj/effect/floor_decal/corner/green/border{ + dir = 5 + }, +/turf/simulated/floor/tiled, +/area/hallway/primary/seconddeck/fscenter) +"bQZ" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/obj/structure/cable{ + d1 = 1; + d2 = 2; + icon_state = "1-2"; + pixel_y = 0 + }, +/obj/machinery/door/firedoor/border_only, +/obj/structure/disposalpipe/segment, +/turf/simulated/floor/plating, +/area/maintenance/research) +"bRa" = ( +/obj/structure/flora/pottedplant/crystal, +/obj/effect/floor_decal/borderfloorwhite{ + dir = 9 + }, +/obj/effect/floor_decal/corner/purple/border{ + dir = 9 + }, +/turf/simulated/floor/tiled/white, +/area/rnd/lab) +"bRb" = ( +/obj/machinery/autolathe, +/obj/effect/floor_decal/borderfloorwhite{ + dir = 1 + }, +/obj/effect/floor_decal/corner/purple/border{ + dir = 1 + }, +/turf/simulated/floor/tiled/white, +/area/rnd/lab) +"bRc" = ( +/obj/structure/table/standard, +/obj/item/stack/material/glass{ + amount = 50; + pixel_x = 3; + pixel_y = 3 + }, +/obj/item/stack/material/steel{ + amount = 50 + }, +/obj/item/clothing/glasses/welding, +/obj/machinery/camera/network/research{ + c_tag = "SCI - R&D Lab" + }, +/obj/effect/floor_decal/borderfloorwhite{ + dir = 1 + }, +/obj/effect/floor_decal/corner/purple/border{ + dir = 1 + }, +/turf/simulated/floor/tiled/white, +/area/rnd/lab) +"bRd" = ( +/obj/structure/cable/green{ + d2 = 2; + icon_state = "0-2" + }, +/obj/machinery/power/apc{ + dir = 1; + name = "north bump"; + pixel_x = 0; + pixel_y = 24 + }, +/obj/structure/table/standard, +/obj/machinery/light_switch{ + pixel_x = 11; + pixel_y = 24 + }, +/obj/item/weapon/storage/belt/utility, +/obj/item/clothing/gloves/sterile/latex, +/obj/item/weapon/storage/toolbox/mechanical{ + pixel_x = 2; + pixel_y = 3 + }, +/obj/item/weapon/storage/toolbox/mechanical{ + pixel_x = -2; + pixel_y = -1 + }, +/obj/effect/floor_decal/borderfloorwhite{ + dir = 1 + }, +/obj/effect/floor_decal/corner/purple/border{ + dir = 1 + }, +/turf/simulated/floor/tiled/white, +/area/rnd/lab) +"bRe" = ( +/obj/structure/table/standard, +/obj/machinery/cell_charger, +/obj/item/weapon/cell/high{ + charge = 100; + maxcharge = 15000 + }, +/obj/item/weapon/cell/high{ + charge = 100; + maxcharge = 15000 + }, +/obj/item/device/radio/intercom{ + dir = 1; + name = "Station Intercom (General)"; + pixel_y = 21 + }, +/obj/effect/floor_decal/borderfloorwhite{ + dir = 1 + }, +/obj/effect/floor_decal/corner/purple/border{ + dir = 1 + }, +/turf/simulated/floor/tiled/white, +/area/rnd/lab) +"bRf" = ( +/obj/machinery/disposal, +/obj/structure/disposalpipe/trunk{ + dir = 4 + }, +/obj/effect/floor_decal/borderfloorwhite{ + dir = 1 + }, +/obj/effect/floor_decal/corner/purple/border{ + dir = 1 + }, +/turf/simulated/floor/tiled/white, +/area/rnd/lab) +"bRg" = ( +/obj/machinery/door/firedoor/border_only, +/obj/effect/wingrille_spawn/reinforced, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/turf/simulated/floor/plating, +/area/rnd/lab) +"bRh" = ( +/obj/structure/cable/green{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/effect/floor_decal/borderfloorwhite/corner{ + dir = 1 + }, +/obj/effect/floor_decal/corner/purple/bordercorner{ + dir = 1 + }, +/turf/simulated/floor/tiled/white, +/area/rnd/research) +"bRi" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/obj/structure/disposalpipe/junction{ + dir = 1; + icon_state = "pipe-j2" + }, +/turf/simulated/floor/tiled/white, +/area/rnd/research) +"bRj" = ( +/obj/machinery/door/firedoor/border_only, +/obj/effect/wingrille_spawn/reinforced, +/turf/simulated/floor/plating, +/area/assembly/robotics) +"bRk" = ( +/obj/structure/filingcabinet/chestdrawer, +/obj/effect/floor_decal/borderfloorwhite{ + dir = 1 + }, +/obj/effect/floor_decal/corner/purple/border{ + dir = 1 + }, +/turf/simulated/floor/tiled/white, +/area/assembly/robotics) +"bRl" = ( +/obj/structure/closet{ + name = "materials" + }, +/obj/machinery/atmospherics/unary/vent_scrubber/on, +/obj/item/stack/material/steel{ + amount = 50 + }, +/obj/item/stack/material/steel{ + amount = 50 + }, +/obj/item/stack/material/steel{ + amount = 50 + }, +/obj/item/stack/material/steel{ + amount = 50 + }, +/obj/item/stack/material/steel{ + amount = 50 + }, +/obj/item/stack/material/glass{ + amount = 50; + pixel_x = -2; + pixel_y = 2 + }, +/obj/item/stack/material/glass{ + amount = 50; + pixel_x = -2; + pixel_y = 2 + }, +/obj/item/stack/material/glass{ + amount = 50; + pixel_x = -2; + pixel_y = 2 + }, +/obj/item/stack/material/glass{ + amount = 50; + pixel_x = -2; + pixel_y = 2 + }, +/obj/item/stack/material/plasteel{ + amount = 10 + }, +/obj/item/stack/material/plasteel{ + amount = 10 + }, +/obj/machinery/light{ + dir = 1 + }, +/obj/effect/floor_decal/borderfloorwhite{ + dir = 1 + }, +/obj/effect/floor_decal/corner/purple/border{ + dir = 1 + }, +/turf/simulated/floor/tiled/white, +/area/assembly/robotics) +"bRm" = ( +/obj/machinery/autolathe, +/obj/machinery/alarm{ + pixel_y = 22 + }, +/obj/effect/floor_decal/borderfloorwhite{ + dir = 1 + }, +/obj/effect/floor_decal/corner/purple/border{ + dir = 1 + }, +/turf/simulated/floor/tiled/white, +/area/assembly/robotics) +"bRn" = ( +/obj/machinery/computer/rdconsole/robotics, +/obj/effect/floor_decal/borderfloorwhite{ + dir = 1 + }, +/obj/effect/floor_decal/corner/purple/border{ + dir = 1 + }, +/turf/simulated/floor/tiled/white, +/area/assembly/robotics) +"bRo" = ( +/obj/machinery/r_n_d/circuit_imprinter, +/obj/item/weapon/reagent_containers/glass/beaker/large, +/obj/item/device/radio/intercom{ + dir = 1; + name = "Station Intercom (General)"; + pixel_y = 21 + }, +/obj/effect/floor_decal/borderfloorwhite{ + dir = 1 + }, +/obj/effect/floor_decal/corner/purple/border{ + dir = 1 + }, +/turf/simulated/floor/tiled/white, +/area/assembly/robotics) +"bRp" = ( +/obj/structure/table/standard, +/obj/machinery/atmospherics/unary/vent_pump/on, +/obj/item/weapon/paper_bin{ + pixel_x = -3; + pixel_y = 7 + }, +/obj/item/weapon/pen, +/obj/item/weapon/pen/red, +/obj/item/weapon/pen/blue, +/obj/machinery/requests_console{ + department = "Robotics"; + departmentType = 2; + name = "Robotics RC"; + pixel_y = 30 + }, +/obj/item/weapon/reagent_containers/glass/beaker/sulphuric, +/obj/item/weapon/hand_labeler, +/obj/effect/floor_decal/borderfloorwhite{ + dir = 1 + }, +/obj/effect/floor_decal/corner/purple/border{ + dir = 1 + }, +/turf/simulated/floor/tiled/white, +/area/assembly/robotics) +"bRq" = ( +/obj/structure/table/standard, +/obj/machinery/computer/med_data/laptop, +/obj/effect/floor_decal/borderfloorwhite{ + dir = 1 + }, +/obj/effect/floor_decal/corner/purple/border{ + dir = 1 + }, +/turf/simulated/floor/tiled/white, +/area/assembly/robotics) +"bRr" = ( +/obj/structure/table/standard, +/obj/structure/window/reinforced{ + dir = 8 + }, +/obj/structure/closet/secure_closet/medical_wall{ + name = "anesthetic closet"; + pixel_x = 0; + pixel_y = 32; + req_access = list(29) + }, +/obj/item/weapon/tank/anesthetic, +/obj/item/weapon/tank/anesthetic, +/obj/item/weapon/tank/anesthetic, +/obj/item/clothing/mask/breath/medical, +/obj/item/clothing/mask/breath/medical, +/obj/item/clothing/mask/breath/medical, +/obj/item/weapon/storage/box/gloves, +/obj/effect/floor_decal/industrial/warning{ + icon_state = "warning"; + dir = 8 + }, +/obj/effect/floor_decal/borderfloorwhite{ + dir = 1 + }, +/obj/effect/floor_decal/corner/purple/border{ + dir = 1 + }, +/turf/simulated/floor/tiled/white, +/area/assembly/robotics) +"bRs" = ( +/obj/machinery/optable{ + name = "Robotics Operating Table" + }, +/obj/effect/floor_decal/borderfloorwhite{ + dir = 1 + }, +/obj/effect/floor_decal/corner/purple/border{ + dir = 1 + }, +/turf/simulated/floor/tiled/white, +/area/assembly/robotics) +"bRt" = ( +/obj/machinery/computer/operating{ + name = "Robotics Operating Computer" + }, +/obj/effect/floor_decal/borderfloorwhite{ + dir = 1 + }, +/obj/effect/floor_decal/corner/purple/border{ + dir = 1 + }, +/turf/simulated/floor/tiled/white, +/area/assembly/robotics) +"bRu" = ( +/obj/machinery/disposal, +/obj/item/device/radio/intercom{ + dir = 1; + name = "Station Intercom (General)"; + pixel_y = 21 + }, +/obj/structure/extinguisher_cabinet{ + pixel_x = -28; + pixel_y = 0 + }, +/obj/structure/disposalpipe/trunk{ + dir = 1 + }, +/obj/effect/floor_decal/borderfloorwhite{ + dir = 8 + }, +/obj/effect/floor_decal/corner/purple/border{ + dir = 8 + }, +/turf/simulated/floor/tiled/white, +/area/rnd/misc_lab) +"bRv" = ( +/obj/structure/cable/green{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/obj/structure/cable/green{ + d1 = 1; + d2 = 4; + icon_state = "1-4" + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/effect/floor_decal/steeldecal/steel_decals4{ + dir = 4 + }, +/obj/effect/floor_decal/steeldecal/steel_decals4{ + dir = 9 + }, +/turf/simulated/floor/tiled/white, +/area/rnd/misc_lab) +"bRw" = ( +/obj/structure/cable/green{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/obj/machinery/button/remote/blast_door{ + id = "misclab"; + name = "Test Chamber Blast Doors"; + pixel_x = 6; + pixel_y = 26; + req_access = list(47) + }, +/obj/machinery/button/ignition{ + id = "Xenobio"; + pixel_x = -6; + pixel_y = 26 + }, +/obj/effect/floor_decal/borderfloorwhite{ + dir = 4 + }, +/obj/effect/floor_decal/corner/purple/border{ + dir = 4 + }, +/turf/simulated/floor/tiled/white, +/area/rnd/misc_lab) +"bRx" = ( +/obj/machinery/shieldwallgen{ + anchored = 1; + req_access = list(47) + }, +/obj/structure/cable/green{ + d2 = 2; + icon_state = "0-2" + }, +/obj/structure/cable/green{ + d2 = 8; + icon_state = "0-8" + }, +/obj/structure/window/reinforced, +/obj/structure/window/reinforced{ + dir = 4; + health = 1e+006 + }, +/obj/machinery/door/blast/regular{ + density = 0; + dir = 2; + icon_state = "pdoor0"; + id = "misclab"; + name = "Test Chamber Blast Doors"; + opacity = 0 + }, +/obj/effect/floor_decal/industrial/hatch/yellow, +/turf/simulated/floor/tiled/steel, +/area/rnd/misc_lab) +"bRy" = ( +/obj/structure/table/standard, +/obj/structure/table/standard, +/obj/item/stack/cable_coil, +/obj/item/device/multitool, +/obj/machinery/cell_charger, +/obj/item/weapon/cell/high{ + charge = 100; + maxcharge = 15000 + }, +/obj/item/weapon/cell/high{ + charge = 100; + maxcharge = 15000 + }, +/obj/machinery/sparker{ + dir = 4; + id = "Xenobio"; + pixel_x = -25 + }, +/turf/simulated/floor/reinforced, +/area/rnd/misc_lab) +"bRz" = ( +/obj/structure/table/standard, +/obj/item/device/assembly/igniter, +/turf/simulated/floor/reinforced, +/area/rnd/misc_lab) +"bRA" = ( +/obj/structure/table/standard, +/obj/machinery/light{ + dir = 1 + }, +/turf/simulated/floor/reinforced, +/area/rnd/misc_lab) +"bRB" = ( +/obj/machinery/light_switch{ + pixel_x = -36 + }, +/obj/structure/cable/green, +/obj/machinery/power/apc{ + dir = 8; + name = "west bump"; + pixel_x = -24 + }, +/turf/simulated/floor/tiled/dark, +/area/server) +"bRC" = ( +/obj/machinery/atmospherics/unary/freezer{ + dir = 2; + icon_state = "freezer_1"; + use_power = 1; + power_setting = 20; + set_temperature = 73 + }, +/obj/machinery/camera/network/research{ + c_tag = "SCI - Server Room" + }, +/turf/simulated/floor/tiled/dark, +/area/server) +"bRD" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/obj/structure/cable/green{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/obj/structure/disposalpipe/segment, +/obj/effect/floor_decal/borderfloorwhite{ + dir = 8 + }, +/obj/effect/floor_decal/corner/purple/border{ + dir = 8 + }, +/turf/simulated/floor/tiled/white, +/area/rnd/research) +"bRE" = ( +/obj/effect/floor_decal/borderfloorwhite{ + dir = 4 + }, +/obj/effect/floor_decal/corner/purple/border{ + dir = 4 + }, +/turf/simulated/floor/tiled/white, +/area/rnd/research) +"bRF" = ( +/obj/structure/sign/warning/caution, +/turf/simulated/wall/r_wall, +/area/rnd/mixing) +"bRG" = ( +/obj/machinery/computer/general_air_control{ + frequency = 1430; + name = "Mixing Chamber Monitor"; + sensors = list("toxins_mixing_exterior" = "Mixing Chamber - Exterior", "toxins_mixing_interior" = "Mixing Chamber - Interior") + }, +/obj/machinery/light{ + dir = 8 + }, +/turf/simulated/floor/tiled/white, +/area/rnd/mixing) +"bRH" = ( +/obj/structure/cable/green{ + d1 = 1; + d2 = 4; + icon_state = "1-4" + }, +/turf/simulated/floor/tiled/white, +/area/rnd/mixing) +"bRI" = ( +/obj/structure/cable/green{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/turf/simulated/floor/tiled/white, +/area/rnd/mixing) +"bRJ" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/machinery/power/apc{ + dir = 4; + name = "east bump"; + pixel_x = 24 + }, +/obj/machinery/light_switch{ + dir = 2; + name = "light switch "; + pixel_x = 36; + pixel_y = 0 + }, +/obj/structure/cable/green{ + d2 = 8; + icon_state = "0-8" + }, +/turf/simulated/floor/tiled/white, +/area/rnd/mixing) +"bRK" = ( +/obj/effect/floor_decal/industrial/warning/corner{ + dir = 1 + }, +/obj/structure/closet/emcloset, +/turf/simulated/floor, +/area/engineering/engine_waste) +"bRL" = ( +/obj/structure/extinguisher_cabinet{ + pixel_y = -30 + }, +/obj/machinery/light/small, +/turf/simulated/floor, +/area/engineering/engine_waste) +"bRM" = ( +/obj/machinery/alarm{ + dir = 1; + icon_state = "alarm0"; + pixel_y = -22 + }, +/turf/simulated/floor, +/area/engineering/engine_waste) +"bRN" = ( +/obj/structure/window/reinforced{ + dir = 4; + health = 1e+006 + }, +/obj/effect/floor_decal/industrial/warning{ + dir = 4 + }, +/obj/machinery/atmospherics/unary/vent_scrubber/on{ + dir = 1 + }, +/obj/structure/closet/radiation, +/obj/item/clothing/glasses/meson, +/turf/simulated/floor, +/area/engineering/engine_waste) +"bRO" = ( +/obj/machinery/atmospherics/pipe/simple/visible/black, +/obj/effect/floor_decal/industrial/warning, +/turf/simulated/floor, +/area/engineering/engine_waste) +"bRP" = ( +/obj/machinery/atmospherics/pipe/simple/visible/cyan, +/obj/machinery/ai_status_display{ + pixel_x = 32; + pixel_y = 0 + }, +/obj/effect/floor_decal/industrial/warning, +/obj/machinery/light/small{ + dir = 4; + pixel_y = 0 + }, +/turf/simulated/floor, +/area/engineering/engine_waste) +"bRQ" = ( +/obj/machinery/drone_fabricator, +/obj/effect/floor_decal/industrial/warning{ + dir = 10 + }, +/turf/simulated/floor/plating, +/area/engineering/drone_fabrication) +"bRR" = ( +/obj/effect/floor_decal/industrial/warning/corner{ + dir = 8 + }, +/turf/simulated/floor/plating, +/area/engineering/drone_fabrication) +"bRS" = ( +/obj/machinery/atmospherics/unary/vent_pump/on{ + dir = 1 + }, +/obj/effect/floor_decal/industrial/warning{ + dir = 4 + }, +/obj/machinery/alarm{ + dir = 8; + icon_state = "alarm0"; + pixel_x = 22 + }, +/turf/simulated/floor/plating, +/area/engineering/drone_fabrication) +"bRT" = ( +/obj/machinery/door/airlock/glass_engineering{ + name = "Engineering Hallway"; + req_one_access = list(10) + }, +/obj/machinery/door/firedoor/glass, +/obj/structure/disposalpipe/segment, +/turf/simulated/floor/tiled/steel_grid, +/area/engineering/hallway/engineer_hallway) +"bRU" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/obj/machinery/door/airlock/glass_engineering{ + name = "Engineering Hallway"; + req_one_access = list(10) + }, +/obj/machinery/door/firedoor/glass, +/turf/simulated/floor/tiled/steel_grid, +/area/engineering/hallway/engineer_hallway) +"bRV" = ( +/obj/structure/cable/green{ + d2 = 4; + icon_state = "0-4" + }, +/obj/machinery/power/apc{ + dir = 8; + name = "west bump"; + pixel_x = -24 + }, +/obj/machinery/light_switch{ + pixel_x = -36 + }, +/obj/effect/floor_decal/borderfloor{ + dir = 8 + }, +/obj/effect/floor_decal/corner/yellow/border{ + dir = 8 + }, +/turf/simulated/floor/tiled, +/area/engineering/workshop) +"bRW" = ( +/obj/structure/cable/green{ + d1 = 1; + d2 = 8; + icon_state = "1-8" + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 5 + }, +/obj/effect/floor_decal/steeldecal/steel_decals4{ + dir = 4 + }, +/obj/effect/floor_decal/steeldecal/steel_decals4{ + dir = 9 + }, +/turf/simulated/floor/tiled, +/area/engineering/workshop) +"bRX" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, +/obj/effect/floor_decal/borderfloor{ + dir = 1 + }, +/obj/effect/floor_decal/corner/yellow/border{ + dir = 1 + }, +/obj/effect/floor_decal/borderfloor/corner2{ + dir = 4 + }, +/obj/effect/floor_decal/corner/yellow/bordercorner2{ + dir = 4 + }, +/turf/simulated/floor/tiled, +/area/engineering/workshop) +"bRY" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, +/obj/effect/floor_decal/borderfloor{ + dir = 1 + }, +/obj/effect/floor_decal/corner/yellow/border{ + dir = 1 + }, +/obj/effect/floor_decal/borderfloor/corner2{ + dir = 1 + }, +/obj/effect/floor_decal/corner/yellow/bordercorner2{ + dir = 1 + }, +/turf/simulated/floor/tiled, +/area/engineering/workshop) +"bRZ" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 10 + }, +/obj/structure/disposalpipe/segment{ + dir = 1; + icon_state = "pipe-c" + }, +/obj/effect/floor_decal/steeldecal/steel_decals4{ + dir = 4 + }, +/obj/effect/floor_decal/steeldecal/steel_decals4{ + dir = 9 + }, +/turf/simulated/floor/tiled, +/area/engineering/workshop) +"bSa" = ( +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/effect/floor_decal/borderfloor{ + dir = 4 + }, +/obj/effect/floor_decal/corner/yellow/border{ + dir = 4 + }, +/turf/simulated/floor/tiled, +/area/engineering/workshop) +"bSb" = ( +/obj/machinery/disposal, +/obj/structure/disposalpipe/trunk{ + dir = 8 + }, +/turf/simulated/floor/tiled/dark, +/area/engineering/workshop) +"bSc" = ( +/obj/machinery/papershredder, +/obj/machinery/requests_console{ + announcementConsole = 1; + department = "Chief Engineer's Desk"; + departmentType = 6; + name = "Chief Engineer RC"; + pixel_x = -32; + pixel_y = 0 + }, +/obj/effect/floor_decal/borderfloor{ + dir = 9 + }, +/obj/effect/floor_decal/corner/blue/border{ + dir = 9 + }, +/turf/simulated/floor/tiled, +/area/crew_quarters/heads/sc/chief) +"bSd" = ( +/obj/effect/floor_decal/borderfloor/corner{ + dir = 1 + }, +/obj/effect/floor_decal/corner/blue/bordercorner{ + dir = 1 + }, +/turf/simulated/floor/tiled, +/area/crew_quarters/heads/sc/chief) +"bSe" = ( +/obj/structure/cable/green{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/obj/machinery/hologram/holopad, +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/obj/structure/disposalpipe/segment{ + dir = 1; + icon_state = "pipe-c" + }, +/obj/effect/floor_decal/steeldecal/steel_decals4{ + dir = 9 + }, +/obj/effect/floor_decal/steeldecal/steel_decals4{ + dir = 4 + }, +/turf/simulated/floor/tiled/monotile, +/area/crew_quarters/heads/sc/chief) +"bSf" = ( +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/effect/floor_decal/borderfloor/corner{ + dir = 4 + }, +/obj/effect/floor_decal/corner/blue/bordercorner{ + dir = 4 + }, +/turf/simulated/floor/tiled, +/area/crew_quarters/heads/sc/chief) +"bSg" = ( +/obj/machinery/disposal, +/obj/machinery/light{ + dir = 4 + }, +/obj/structure/disposalpipe/trunk{ + dir = 8 + }, +/obj/effect/floor_decal/borderfloor{ + dir = 5 + }, +/obj/effect/floor_decal/corner/blue/border{ + dir = 5 + }, +/turf/simulated/floor/tiled, +/area/crew_quarters/heads/sc/chief) +"bSh" = ( +/obj/machinery/door/firedoor/glass, +/obj/machinery/status_display{ + layer = 4 + }, +/obj/structure/cable/green{ + d2 = 2; + icon_state = "0-2" + }, +/obj/effect/wingrille_spawn/reinforced/polarized{ + id = "ceoffice" + }, +/turf/simulated/floor, +/area/crew_quarters/heads/sc/chief) +"bSi" = ( +/obj/effect/floor_decal/borderfloor{ + dir = 8 + }, +/obj/effect/floor_decal/corner/yellow/border{ + dir = 8 + }, +/turf/simulated/floor/tiled, +/area/engineering/foyer) +"bSj" = ( +/obj/structure/cable/green{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/obj/structure/disposalpipe/segment, +/turf/simulated/floor/tiled, +/area/engineering/foyer) +"bSk" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/effect/landmark{ + name = "lightsout" + }, +/turf/simulated/floor/tiled, +/area/engineering/foyer) +"bSl" = ( +/obj/effect/floor_decal/borderfloor{ + dir = 4 + }, +/obj/effect/floor_decal/corner/yellow/border{ + dir = 4 + }, +/turf/simulated/floor/tiled, +/area/engineering/foyer) +"bSm" = ( +/obj/machinery/door/firedoor/glass, +/obj/effect/wingrille_spawn/reinforced, +/obj/machinery/ai_status_display{ + layer = 4 + }, +/turf/simulated/floor, +/area/engineering/break_room) +"bSn" = ( +/obj/effect/floor_decal/corner/white/diagonal, +/obj/machinery/light{ + dir = 8; + icon_state = "tube1"; + pixel_y = 0 + }, +/obj/structure/disposalpipe/segment, +/turf/simulated/floor/tiled, +/area/engineering/break_room) +"bSo" = ( +/turf/simulated/floor/carpet, +/area/engineering/break_room) +"bSp" = ( +/obj/structure/bed/chair/comfy/brown, +/obj/effect/landmark/start{ + name = "Station Engineer" + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{ + dir = 8 + }, +/obj/structure/cable/green{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/turf/simulated/floor/carpet, +/area/engineering/break_room) +"bSq" = ( +/obj/structure/bed/chair/comfy/brown, +/obj/effect/landmark/start{ + name = "Station Engineer" + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, +/turf/simulated/floor/carpet, +/area/engineering/break_room) +"bSr" = ( +/obj/machinery/atmospherics/unary/vent_scrubber/on{ + dir = 8 + }, +/turf/simulated/floor/carpet, +/area/engineering/break_room) +"bSs" = ( +/obj/effect/floor_decal/corner/white/diagonal, +/obj/structure/noticeboard{ + pixel_x = 32; + pixel_y = 0 + }, +/obj/machinery/light{ + dir = 4 + }, +/turf/simulated/floor/tiled, +/area/engineering/break_room) +"bSt" = ( +/turf/simulated/wall, +/area/engineering/engi_restroom) +"bSu" = ( +/obj/machinery/door/firedoor/border_only, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/machinery/door/airlock{ + name = "Engineering Washroom"; + req_one_access = list(10) + }, +/obj/structure/cable/green{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/turf/simulated/floor/tiled/steel_grid, +/area/engineering/engi_restroom) +"bSv" = ( +/obj/structure/closet/toolcloset, +/turf/simulated/floor/plating, +/area/maintenance/engineering) +"bSw" = ( +/turf/simulated/floor/tiled/monotile, +/area/hallway/primary/seconddeck/fpcenter) +"bSx" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 6 + }, +/turf/simulated/floor/tiled/monotile, +/area/hallway/primary/seconddeck/fpcenter) +"bSy" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 5 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, +/turf/simulated/floor/tiled/monotile, +/area/hallway/primary/seconddeck/fpcenter) +"bSz" = ( +/obj/structure/cable{ + d1 = 2; + d2 = 4; + icon_state = "2-4" + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/turf/simulated/floor/tiled/monotile, +/area/hallway/primary/seconddeck/fpcenter) +"bSA" = ( +/obj/structure/cable{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/turf/simulated/floor/tiled/monotile, +/area/hallway/primary/seconddeck/fpcenter) +"bSB" = ( +/obj/structure/cable{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/turf/simulated/floor/tiled, +/area/hallway/primary/seconddeck/fpcenter) +"bSC" = ( +/obj/machinery/door/firedoor/glass, +/obj/structure/cable{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/obj/effect/wingrille_spawn/reinforced, +/turf/simulated/floor/plating, +/area/hallway/primary/seconddeck/fscenter) +"bSD" = ( +/obj/structure/disposalpipe/segment, +/obj/structure/cable{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{ + dir = 1 + }, +/turf/simulated/floor/tiled, +/area/hallway/primary/seconddeck/fscenter) +"bSE" = ( +/obj/structure/cable{ + d1 = 1; + d2 = 2; + icon_state = "1-2"; + pixel_y = 0 + }, +/obj/effect/floor_decal/industrial/outline/grey, +/obj/machinery/hologram/holopad, +/obj/machinery/atmospherics/pipe/manifold/hidden/supply, +/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers, +/obj/structure/cable{ + d1 = 1; + d2 = 8; + icon_state = "1-8" + }, +/turf/simulated/floor/tiled/dark, +/area/hallway/primary/seconddeck/fscenter) +"bSF" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/manifold/hidden/supply, +/turf/simulated/floor/tiled, +/area/hallway/primary/seconddeck/fscenter) +"bSG" = ( +/obj/machinery/door/firedoor/glass, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/obj/effect/wingrille_spawn/reinforced, +/turf/simulated/floor/plating, +/area/hallway/primary/seconddeck/fscenter) +"bSH" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/turf/simulated/floor/tiled, +/area/hallway/primary/seconddeck/fscenter) +"bSI" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/turf/simulated/floor/tiled/monotile, +/area/hallway/primary/seconddeck/fscenter) +"bSJ" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, +/turf/simulated/floor/tiled/monotile, +/area/hallway/primary/seconddeck/fscenter) +"bSK" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 9 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/turf/simulated/floor/tiled/monotile, +/area/hallway/primary/seconddeck/fscenter) +"bSL" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 10 + }, +/turf/simulated/floor/tiled/monotile, +/area/hallway/primary/seconddeck/fscenter) +"bSM" = ( +/turf/simulated/floor/tiled/monotile, +/area/hallway/primary/seconddeck/fscenter) +"bSN" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/obj/structure/cable{ + d1 = 1; + d2 = 2; + icon_state = "1-2"; + pixel_y = 0 + }, +/obj/effect/floor_decal/industrial/warning{ + icon_state = "warning"; + dir = 1 + }, +/obj/structure/disposalpipe/segment, +/turf/simulated/floor/plating, +/area/maintenance/research) +"bSO" = ( +/obj/structure/table/standard, +/obj/random/toolbox, +/obj/random/cigarettes, +/obj/random/tech_supply, +/obj/random/tech_supply, +/obj/random/tool, +/obj/effect/floor_decal/industrial/warning/corner{ + icon_state = "warningcorner"; + dir = 1 + }, +/turf/simulated/floor/plating, +/area/maintenance/research) +"bSP" = ( +/obj/structure/table/standard, +/obj/random/tool, +/obj/random/tool, +/obj/item/frame, +/turf/simulated/floor/plating, +/area/maintenance/research) +"bSQ" = ( +/obj/effect/floor_decal/industrial/warning, +/obj/structure/reagent_dispensers/acid{ + density = 0; + pixel_x = -30; + pixel_y = 0 + }, +/obj/effect/floor_decal/borderfloorwhite/corner{ + dir = 1 + }, +/obj/effect/floor_decal/corner/purple/bordercorner{ + dir = 1 + }, +/turf/simulated/floor/tiled/white, +/area/rnd/lab) +"bSR" = ( +/obj/effect/floor_decal/industrial/warning, +/obj/machinery/atmospherics/unary/vent_scrubber/on{ + dir = 4 + }, +/turf/simulated/floor/tiled/white, +/area/rnd/lab) +"bSS" = ( +/obj/effect/floor_decal/industrial/warning, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, +/turf/simulated/floor/tiled/white, +/area/rnd/lab) +"bST" = ( +/obj/effect/floor_decal/industrial/warning/corner{ + icon_state = "warningcorner"; + dir = 8 + }, +/obj/structure/cable/green{ + d1 = 1; + d2 = 4; + icon_state = "1-4" + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, +/turf/simulated/floor/tiled/white, +/area/rnd/lab) +"bSU" = ( +/obj/structure/cable/green{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 6 + }, +/turf/simulated/floor/tiled/white, +/area/rnd/lab) +"bSV" = ( +/obj/structure/cable/green{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/obj/effect/floor_decal/steeldecal/steel_decals4, +/obj/effect/floor_decal/steeldecal/steel_decals4{ + dir = 10 + }, +/turf/simulated/floor/tiled/white, +/area/rnd/lab) +"bSW" = ( +/obj/machinery/door/firedoor/border_only, +/obj/structure/cable/green{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/obj/machinery/door/airlock/research{ + name = "Miscellaneous Reseach Room"; + req_access = list(); + req_one_access = list(7,29) + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/turf/simulated/floor/tiled/steel_grid, +/area/rnd/misc_lab) +"bSX" = ( +/obj/structure/cable/green{ + d1 = 1; + d2 = 8; + icon_state = "1-8" + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/obj/structure/cable/green{ + d1 = 1; + d2 = 4; + icon_state = "1-4" + }, +/obj/effect/floor_decal/steeldecal/steel_decals4{ + dir = 6 + }, +/obj/effect/floor_decal/steeldecal/steel_decals4{ + dir = 1 + }, +/turf/simulated/floor/tiled/white, +/area/rnd/research) +"bSY" = ( +/obj/machinery/atmospherics/pipe/manifold4w/hidden/supply, +/obj/machinery/atmospherics/pipe/manifold4w/hidden/scrubbers, +/obj/structure/cable/green{ + d1 = 2; + d2 = 8; + icon_state = "2-8" + }, +/obj/structure/cable/green{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/obj/structure/disposalpipe/segment, +/turf/simulated/floor/tiled/white, +/area/rnd/research) +"bSZ" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/obj/structure/cable/green{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/obj/effect/floor_decal/steeldecal/steel_decals4, +/obj/effect/floor_decal/steeldecal/steel_decals4{ + dir = 10 + }, +/turf/simulated/floor/tiled/white, +/area/rnd/research) +"bTa" = ( +/obj/machinery/door/firedoor/border_only, +/obj/structure/cable/green{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/obj/machinery/door/airlock/command{ + name = "Server Room"; + req_access = list(30) + }, +/turf/simulated/floor/tiled/steel_grid, +/area/server) +"bTb" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/obj/structure/cable/green{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/obj/effect/floor_decal/steeldecal/steel_decals4{ + dir = 1 + }, +/obj/effect/floor_decal/steeldecal/steel_decals4{ + dir = 6 + }, +/turf/simulated/floor/tiled/white, +/area/assembly/robotics) +"bTc" = ( +/obj/effect/floor_decal/industrial/warning/corner, +/obj/machinery/atmospherics/pipe/manifold/hidden/supply{ + dir = 1 + }, +/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers, +/obj/structure/cable/green{ + d1 = 2; + d2 = 8; + icon_state = "2-8" + }, +/obj/structure/cable/green{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/turf/simulated/floor/tiled/white, +/area/assembly/robotics) +"bTd" = ( +/obj/effect/floor_decal/industrial/warning, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/obj/structure/cable/green{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/turf/simulated/floor/tiled/white, +/area/assembly/robotics) +"bTe" = ( +/obj/structure/bed/chair/office/light{ + dir = 1 + }, +/obj/effect/floor_decal/industrial/warning/corner{ + dir = 8 + }, +/obj/machinery/atmospherics/pipe/manifold/hidden/supply, +/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{ + dir = 1 + }, +/obj/effect/landmark/start{ + name = "Roboticist" + }, +/obj/structure/cable/green{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/turf/simulated/floor/tiled/white, +/area/assembly/robotics) +"bTf" = ( +/obj/structure/table/standard, +/obj/item/device/mmi, +/obj/item/device/mmi, +/obj/item/device/mmi, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/obj/structure/cable/green{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/turf/simulated/floor/tiled/white, +/area/assembly/robotics) +"bTg" = ( +/obj/structure/table/standard, +/obj/structure/window/reinforced{ + dir = 8 + }, +/obj/item/weapon/surgical/circular_saw, +/obj/item/weapon/surgical/scalpel{ + pixel_y = 12 + }, +/obj/item/weapon/surgical/hemostat, +/obj/item/weapon/surgical/retractor, +/obj/effect/floor_decal/industrial/warning{ + icon_state = "warning"; + dir = 8 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/obj/structure/cable/green{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/turf/simulated/floor/tiled/white, +/area/assembly/robotics) +"bTh" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 10 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 10 + }, +/obj/structure/cable/green{ + d1 = 2; + d2 = 8; + icon_state = "2-8" + }, +/turf/simulated/floor/tiled/white, +/area/assembly/robotics) +"bTi" = ( +/turf/simulated/floor/tiled/white, +/area/assembly/robotics) +"bTj" = ( +/obj/machinery/optable{ + name = "Robotics Operating Table" + }, +/obj/structure/extinguisher_cabinet{ + pixel_y = 30 + }, +/turf/simulated/floor/tiled/white, +/area/assembly/robotics) +"bTk" = ( +/obj/machinery/power/apc{ + dir = 8; + name = "west bump"; + pixel_x = -24 + }, +/obj/machinery/light_switch{ + pixel_x = -36 + }, +/obj/structure/cable/green{ + d2 = 4; + icon_state = "0-4" + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 6 + }, +/obj/structure/table/reinforced, +/obj/item/clothing/glasses/science, +/obj/item/clothing/mask/gas, +/obj/effect/floor_decal/borderfloorwhite{ + dir = 8 + }, +/obj/effect/floor_decal/corner/purple/border{ + dir = 8 + }, +/turf/simulated/floor/tiled/white, +/area/rnd/misc_lab) +"bTl" = ( +/obj/structure/cable/green{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/obj/structure/cable/green{ + d1 = 1; + d2 = 8; + icon_state = "1-8" + }, +/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers, +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/turf/simulated/floor/tiled/white, +/area/rnd/misc_lab) +"bTm" = ( +/obj/machinery/atmospherics/unary/vent_scrubber/on{ + dir = 8 + }, +/obj/machinery/light{ + dir = 4; + icon_state = "tube1" + }, +/obj/effect/floor_decal/borderfloorwhite{ + dir = 4 + }, +/obj/effect/floor_decal/corner/purple/border{ + dir = 4 + }, +/turf/simulated/floor/tiled/white, +/area/rnd/misc_lab) +"bTn" = ( +/obj/structure/cable/green, +/obj/effect/wingrille_spawn/reinforced, +/obj/machinery/door/blast/regular{ + density = 0; + dir = 2; + icon_state = "pdoor0"; + id = "misclab"; + name = "Test Chamber Blast Doors"; + opacity = 0 + }, +/turf/simulated/floor/plating, +/area/rnd/misc_lab) +"bTo" = ( +/turf/simulated/floor/reinforced, +/area/rnd/misc_lab) +"bTp" = ( +/obj/machinery/light/small{ + dir = 8 + }, +/turf/simulated/floor/tiled/dark, +/area/server) +"bTq" = ( +/obj/structure/bed/chair/office/light{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden, +/turf/simulated/floor/tiled/dark, +/area/server) +"bTr" = ( +/obj/machinery/computer/rdservercontrol, +/obj/machinery/firealarm{ + pixel_y = 24 + }, +/obj/item/device/radio/intercom{ + dir = 4; + name = "Station Intercom (General)"; + pixel_x = 21 + }, +/turf/simulated/floor/tiled/dark, +/area/server) +"bTs" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/obj/machinery/alarm{ + dir = 4; + icon_state = "alarm0"; + pixel_x = -22 + }, +/obj/structure/cable/green{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/obj/structure/disposalpipe/segment, +/obj/effect/floor_decal/borderfloorwhite{ + dir = 8 + }, +/obj/effect/floor_decal/corner/purple/border{ + dir = 8 + }, +/turf/simulated/floor/tiled/white, +/area/rnd/research) +"bTt" = ( +/obj/item/device/radio/intercom{ + dir = 4; + name = "Station Intercom (General)"; + pixel_x = 21 + }, +/obj/effect/floor_decal/borderfloorwhite{ + dir = 4 + }, +/obj/effect/floor_decal/corner/purple/border{ + dir = 4 + }, +/turf/simulated/floor/tiled/white, +/area/rnd/research) +"bTu" = ( +/obj/structure/dispenser, +/obj/structure/extinguisher_cabinet{ + pixel_x = -28; + pixel_y = 0 + }, +/obj/effect/floor_decal/industrial/warning{ + icon_state = "warning"; + dir = 1 + }, +/turf/simulated/floor/tiled, +/area/rnd/mixing) +"bTv" = ( +/obj/machinery/atmospherics/unary/vent_pump/on{ + dir = 4 + }, +/obj/effect/floor_decal/industrial/warning{ + icon_state = "warning"; + dir = 1 + }, +/turf/simulated/floor/tiled, +/area/rnd/mixing) +"bTw" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/obj/effect/floor_decal/industrial/warning{ + icon_state = "warning"; + dir = 1 + }, +/turf/simulated/floor/tiled, +/area/rnd/mixing) +"bTx" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 5 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 9 + }, +/obj/effect/floor_decal/industrial/warning{ + icon_state = "warning"; + dir = 1 + }, +/turf/simulated/floor/tiled, +/area/rnd/mixing) +"bTy" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, +/obj/effect/floor_decal/industrial/warning/corner{ + dir = 1 + }, +/turf/simulated/floor/tiled, +/area/rnd/mixing) +"bTz" = ( +/obj/machinery/atmospherics/unary/vent_scrubber/on{ + dir = 8 + }, +/turf/simulated/floor/tiled, +/area/rnd/mixing) +"bTA" = ( +/obj/item/weapon/tool/wrench, +/turf/simulated/floor/tiled, +/area/rnd/mixing) +"bTB" = ( +/obj/machinery/pipedispenser, +/turf/simulated/floor/tiled, +/area/rnd/mixing) +"bTC" = ( +/obj/machinery/atmospherics/pipe/simple/heat_exchanging{ + icon_state = "intact"; + dir = 9 + }, +/turf/simulated/floor/reinforced/airless, +/area/rnd/mixing) +"bTD" = ( +/turf/simulated/wall/r_wall, +/area/engineering/engine_room) +"bTE" = ( +/obj/structure/sign/warning/radioactive, +/turf/simulated/wall/r_wall, +/area/engineering/engine_room) +"bTF" = ( +/obj/machinery/atmospherics/pipe/simple/visible/black, +/obj/machinery/door/blast/regular{ + icon_state = "pdoor1"; + id = "EngineEmitterPortWest"; + layer = 3.3; + name = "Engine Waste Handling Access" + }, +/turf/simulated/floor, +/area/engineering/engine_room) +"bTG" = ( +/obj/machinery/atmospherics/pipe/simple/visible/cyan, +/obj/machinery/door/blast/regular{ + icon_state = "pdoor1"; + id = "EngineEmitterPortWest"; + layer = 3.3; + name = "Engine Waste Handling Access" + }, +/turf/simulated/floor, +/area/engineering/engine_room) +"bTH" = ( +/obj/effect/floor_decal/industrial/warning{ + icon_state = "warning"; + dir = 8 + }, +/obj/machinery/computer/drone_control, +/turf/simulated/floor/plating, +/area/engineering/drone_fabrication) +"bTI" = ( +/obj/effect/floor_decal/industrial/warning{ + dir = 4 + }, +/obj/machinery/computer/cryopod/robot{ + pixel_x = 30; + pixel_y = 0 + }, +/turf/simulated/floor/plating, +/area/engineering/drone_fabrication) +"bTJ" = ( +/obj/structure/disposalpipe/segment, +/obj/effect/floor_decal/steeldecal/steel_decals4{ + dir = 4 + }, +/obj/effect/floor_decal/steeldecal/steel_decals4{ + dir = 9 + }, +/turf/simulated/floor/tiled, +/area/engineering/hallway/engineer_hallway) +"bTK" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/obj/item/device/radio/intercom{ + dir = 4; + name = "Station Intercom (General)"; + pixel_x = 21 + }, +/obj/effect/floor_decal/steeldecal/steel_decals4{ + dir = 4 + }, +/obj/effect/floor_decal/steeldecal/steel_decals4{ + dir = 9 + }, +/turf/simulated/floor/tiled, +/area/engineering/hallway/engineer_hallway) +"bTL" = ( +/obj/structure/closet/secure_closet/engineering_welding, +/obj/effect/floor_decal/industrial/outline/yellow, +/obj/machinery/firealarm{ + dir = 8; + pixel_x = -24; + pixel_y = 0 + }, +/turf/simulated/floor/tiled/dark, +/area/engineering/workshop) +"bTM" = ( +/obj/effect/floor_decal/borderfloor{ + dir = 8 + }, +/obj/effect/floor_decal/corner/yellow/border{ + dir = 8 + }, +/turf/simulated/floor/tiled, +/area/engineering/workshop) +"bTN" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/turf/simulated/floor/tiled, +/area/engineering/workshop) +"bTO" = ( +/turf/simulated/floor/tiled, +/area/engineering/workshop) +"bTP" = ( +/obj/machinery/hologram/holopad, +/obj/effect/floor_decal/industrial/outline/grey, +/turf/simulated/floor/tiled/monotile, +/area/engineering/workshop) +"bTQ" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/turf/simulated/floor/tiled, +/area/engineering/workshop) +"bTR" = ( +/obj/effect/floor_decal/borderfloor{ + dir = 4 + }, +/obj/effect/floor_decal/corner/yellow/border{ + dir = 4 + }, +/turf/simulated/floor/tiled, +/area/engineering/workshop) +"bTS" = ( +/obj/structure/reagent_dispensers/fueltank, +/turf/simulated/floor/tiled/dark, +/area/engineering/workshop) +"bTT" = ( +/obj/structure/closet/secure_closet/engineering_chief, +/obj/machinery/alarm{ + dir = 4; + icon_state = "alarm0"; + pixel_x = -22; + pixel_y = 0 + }, +/obj/effect/floor_decal/borderfloor{ + dir = 8 + }, +/obj/effect/floor_decal/corner/blue/border{ + dir = 8 + }, +/turf/simulated/floor/tiled, +/area/crew_quarters/heads/sc/chief) +"bTU" = ( +/turf/simulated/floor/tiled, +/area/crew_quarters/heads/sc/chief) +"bTV" = ( +/obj/structure/cable/green{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/obj/structure/bed/chair, +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 5 + }, +/turf/simulated/floor/tiled, +/area/crew_quarters/heads/sc/chief) +"bTW" = ( +/obj/machinery/atmospherics/unary/vent_scrubber/on{ + dir = 8 + }, +/turf/simulated/floor/tiled, +/area/crew_quarters/heads/sc/chief) +"bTX" = ( +/obj/effect/floor_decal/borderfloor/corner{ + dir = 4 + }, +/obj/effect/floor_decal/corner/blue/bordercorner{ + dir = 4 + }, +/turf/simulated/floor/tiled, +/area/crew_quarters/heads/sc/chief) +"bTY" = ( +/obj/machinery/door/firedoor/border_only, +/obj/structure/cable/green{ + d2 = 2; + icon_state = "0-2" + }, +/obj/structure/cable/green, +/obj/effect/wingrille_spawn/reinforced/polarized{ + id = "ceoffice" + }, +/turf/simulated/floor, +/area/crew_quarters/heads/sc/chief) +"bTZ" = ( +/obj/machinery/light{ + dir = 8; + icon_state = "tube1"; + pixel_y = 0 + }, +/obj/effect/floor_decal/borderfloor/corner{ + dir = 1 + }, +/obj/effect/floor_decal/corner/yellow/bordercorner{ + dir = 1 + }, +/turf/simulated/floor/tiled, +/area/engineering/foyer) +"bUa" = ( +/obj/machinery/hologram/holopad, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/effect/floor_decal/industrial/outline/grey, +/turf/simulated/floor/tiled/dark, +/area/engineering/foyer) +"bUb" = ( +/obj/machinery/light{ + icon_state = "tube1"; + dir = 4 + }, +/obj/effect/floor_decal/borderfloor/corner{ + dir = 4 + }, +/obj/effect/floor_decal/corner/yellow/bordercorner{ + dir = 4 + }, +/turf/simulated/floor/tiled, +/area/engineering/foyer) +"bUc" = ( +/obj/machinery/door/firedoor/border_only, +/obj/effect/wingrille_spawn/reinforced, +/turf/simulated/floor, +/area/engineering/break_room) +"bUd" = ( +/obj/effect/floor_decal/corner/white/diagonal, +/obj/structure/disposalpipe/segment, +/turf/simulated/floor/tiled, +/area/engineering/break_room) +"bUe" = ( +/obj/structure/bed/chair/comfy/brown{ + dir = 4 + }, +/obj/effect/landmark/start{ + name = "Atmospheric Technician" + }, +/turf/simulated/floor/carpet, +/area/engineering/break_room) +"bUf" = ( +/obj/structure/table/woodentable, +/obj/item/weapon/book/manual/supermatter_engine{ + pixel_x = -3 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/obj/structure/cable/green{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/turf/simulated/floor/carpet, +/area/engineering/break_room) +"bUg" = ( +/obj/structure/table/woodentable, +/obj/item/weapon/paper_bin{ + pixel_x = -3; + pixel_y = 7 + }, +/obj/item/weapon/pen, +/turf/simulated/floor/carpet, +/area/engineering/break_room) +"bUh" = ( +/obj/structure/bed/chair/comfy/brown{ + dir = 8 + }, +/obj/effect/landmark/start{ + name = "Atmospheric Technician" + }, +/turf/simulated/floor/carpet, +/area/engineering/break_room) +"bUi" = ( +/obj/effect/floor_decal/corner/white/diagonal, +/obj/machinery/camera/network/engineering{ + c_tag = "ENG - Break Room"; + dir = 8 + }, +/obj/machinery/alarm{ + dir = 8; + icon_state = "alarm0"; + pixel_x = 22 + }, +/turf/simulated/floor/tiled, +/area/engineering/break_room) +"bUj" = ( +/obj/structure/table/standard, +/obj/machinery/power/apc{ + dir = 1; + name = "north bump"; + pixel_x = 0; + pixel_y = 24 + }, +/obj/machinery/light_switch{ + pixel_x = 11; + pixel_y = 24 + }, +/obj/item/weapon/towel{ + color = "#FF8C00"; + name = "orange towel"; + pixel_x = -2; + pixel_y = -4 + }, +/obj/item/weapon/towel{ + color = "#FF8C00"; + name = "orange towel"; + pixel_x = -2; + pixel_y = -4 + }, +/obj/item/weapon/towel{ + color = "#FFD700"; + name = "gold towel" + }, +/obj/item/weapon/towel{ + color = "#FFD700"; + name = "gold towel" + }, +/obj/item/weapon/towel{ + color = "#00FFFF"; + name = "cyan towel"; + pixel_x = 2; + pixel_y = 4 + }, +/obj/item/weapon/towel{ + color = "#00FFFF"; + name = "cyan towel"; + pixel_x = 2; + pixel_y = 4 + }, +/obj/random/soap, +/obj/random/soap, +/obj/structure/cable/green{ + d2 = 4; + icon_state = "0-4" + }, +/turf/simulated/floor/tiled/freezer, +/area/engineering/engi_restroom) +"bUk" = ( +/obj/structure/cable/green{ + d1 = 1; + d2 = 8; + icon_state = "1-8" + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/effect/floor_decal/steeldecal/steel_decals4{ + dir = 9 + }, +/obj/effect/floor_decal/steeldecal/steel_decals4{ + dir = 4 + }, +/turf/simulated/floor/tiled/freezer, +/area/engineering/engi_restroom) +"bUl" = ( +/obj/structure/sink{ + pixel_y = 16 + }, +/obj/structure/mirror{ + pixel_x = 0; + pixel_y = 32 + }, +/turf/simulated/floor/tiled/freezer, +/area/engineering/engi_restroom) +"bUm" = ( +/obj/structure/undies_wardrobe, +/obj/structure/window/basic, +/turf/simulated/floor/tiled/freezer, +/area/engineering/engi_restroom) +"bUn" = ( +/obj/structure/closet/crate, +/obj/item/stack/cable_coil/random, +/obj/item/stack/cable_coil/random, +/obj/item/weapon/tool/crowbar, +/obj/item/weapon/tool/wirecutters, +/obj/random/maintenance/engineering, +/obj/random/maintenance/engineering, +/obj/random/maintenance/security, +/obj/random/maintenance/security, +/turf/simulated/floor, +/area/maintenance/engineering) +"bUo" = ( +/obj/machinery/portable_atmospherics/canister/empty, +/turf/simulated/floor/plating, +/area/maintenance/engineering) +"bUp" = ( +/obj/structure/flora/ausbushes/sparsegrass, +/turf/simulated/floor/grass, +/area/hallway/primary/seconddeck/fpcenter) +"bUq" = ( +/obj/structure/disposalpipe/segment{ + dir = 4; + icon_state = "pipe-c" + }, +/obj/machinery/hologram/holopad, +/obj/effect/floor_decal/industrial/outline/grey, +/obj/machinery/navbeacon/patrol{ + location = "CH2"; + next_patrol = "CH3" + }, +/turf/simulated/floor/tiled/dark, +/area/hallway/primary/seconddeck/fpcenter) +"bUr" = ( +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/effect/floor_decal/borderfloor/corner, +/obj/effect/floor_decal/corner/red/bordercorner, +/turf/simulated/floor/tiled, +/area/hallway/primary/seconddeck/fpcenter) +"bUs" = ( +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/machinery/atmospherics/unary/vent_scrubber/on{ + dir = 1 + }, +/obj/effect/floor_decal/borderfloor, +/obj/effect/floor_decal/corner/red/border, +/turf/simulated/floor/tiled, +/area/hallway/primary/seconddeck/fpcenter) +"bUt" = ( +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/effect/floor_decal/borderfloor/corner{ + dir = 8 + }, +/obj/effect/floor_decal/corner/red/bordercorner{ + dir = 8 + }, +/obj/effect/floor_decal/industrial/warning/corner, +/turf/simulated/floor/tiled, +/area/hallway/primary/seconddeck/fpcenter) +"bUu" = ( +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/structure/cable{ + d1 = 1; + d2 = 2; + icon_state = "1-2"; + pixel_y = 0 + }, +/obj/effect/floor_decal/industrial/warning, +/turf/simulated/floor/tiled, +/area/hallway/primary/seconddeck/fpcenter) +"bUv" = ( +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/structure/sign/warning/high_voltage{ + pixel_y = -32 + }, +/obj/effect/floor_decal/industrial/warning/corner{ + dir = 8 + }, +/turf/simulated/floor/tiled, +/area/hallway/primary/seconddeck/fpcenter) +"bUw" = ( +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/turf/simulated/floor/tiled, +/area/hallway/primary/seconddeck/fpcenter) +"bUx" = ( +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/machinery/light, +/obj/effect/floor_decal/steeldecal/steel_decals4{ + dir = 10 + }, +/obj/effect/floor_decal/steeldecal/steel_decals4, +/turf/simulated/floor/tiled, +/area/hallway/primary/seconddeck/fpcenter) +"bUy" = ( +/obj/machinery/door/firedoor/border_only, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/machinery/door/airlock/glass{ + name = "Central Access" + }, +/turf/simulated/floor/tiled/steel_grid, +/area/hallway/primary/seconddeck/fscenter) +"bUz" = ( +/obj/structure/disposalpipe/segment{ + dir = 8; + icon_state = "pipe-c" + }, +/obj/machinery/atmospherics/unary/vent_scrubber/on{ + dir = 1 + }, +/obj/effect/floor_decal/steeldecal/steel_decals4{ + dir = 6 + }, +/obj/effect/floor_decal/steeldecal/steel_decals4{ + dir = 1 + }, +/obj/machinery/navbeacon/patrol{ + location = "CH1"; + next_patrol = "CH2" + }, +/turf/simulated/floor/tiled, +/area/hallway/primary/seconddeck/fscenter) +"bUA" = ( +/obj/structure/cable{ + d1 = 1; + d2 = 2; + icon_state = "1-2"; + pixel_y = 0 + }, +/turf/simulated/floor/tiled, +/area/hallway/primary/seconddeck/fscenter) +"bUB" = ( +/obj/effect/floor_decal/steeldecal/steel_decals4{ + dir = 10 + }, +/obj/effect/floor_decal/steeldecal/steel_decals4, +/obj/machinery/navbeacon/patrol{ + location = "CH12"; + next_patrol = "SEC" + }, +/turf/simulated/floor/tiled, +/area/hallway/primary/seconddeck/fscenter) +"bUC" = ( +/obj/machinery/light, +/obj/effect/floor_decal/steeldecal/steel_decals4{ + dir = 6 + }, +/obj/effect/floor_decal/steeldecal/steel_decals4{ + dir = 1 + }, +/turf/simulated/floor/tiled, +/area/hallway/primary/seconddeck/fscenter) +"bUD" = ( +/obj/effect/floor_decal/steeldecal/steel_decals4{ + dir = 5 + }, +/obj/effect/floor_decal/steeldecal/steel_decals4{ + dir = 8 + }, +/turf/simulated/floor/tiled, +/area/hallway/primary/seconddeck/fscenter) +"bUE" = ( +/obj/effect/floor_decal/borderfloor/corner, +/obj/effect/floor_decal/corner/purple/bordercorner, +/turf/simulated/floor/tiled, +/area/hallway/primary/seconddeck/fscenter) +"bUF" = ( +/obj/effect/floor_decal/borderfloor, +/obj/effect/floor_decal/corner/purple/border, +/turf/simulated/floor/tiled, +/area/hallway/primary/seconddeck/fscenter) +"bUG" = ( +/obj/machinery/atmospherics/unary/vent_pump/on{ + dir = 1 + }, +/obj/effect/floor_decal/borderfloor, +/obj/effect/floor_decal/corner/purple/border, +/turf/simulated/floor/tiled, +/area/hallway/primary/seconddeck/fscenter) +"bUH" = ( +/obj/effect/floor_decal/borderfloor/corner{ + dir = 8 + }, +/obj/effect/floor_decal/corner/purple/bordercorner{ + dir = 8 + }, +/turf/simulated/floor/tiled, +/area/hallway/primary/seconddeck/fscenter) +"bUI" = ( +/obj/machinery/hologram/holopad, +/obj/effect/floor_decal/industrial/outline/grey, +/obj/machinery/navbeacon/patrol{ + location = "CH11"; + next_patrol = "CH12" + }, +/turf/simulated/floor/tiled/dark, +/area/hallway/primary/seconddeck/fscenter) +"bUJ" = ( +/obj/structure/flora/ausbushes/sparsegrass, +/obj/structure/flora/ausbushes/brflowers, +/turf/simulated/floor/grass, +/area/hallway/primary/seconddeck/fscenter) +"bUK" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/obj/structure/cable{ + d1 = 1; + d2 = 2; + icon_state = "1-2"; + pixel_y = 0 + }, +/obj/structure/disposalpipe/segment, +/turf/simulated/floor/plating, +/area/maintenance/research) +"bUL" = ( +/obj/structure/closet/crate, +/obj/item/clothing/mask/gas, +/obj/item/device/flashlight, +/obj/item/device/flashlight, +/obj/effect/decal/cleanable/dirt, +/obj/random/maintenance/research, +/obj/random/maintenance/research, +/obj/random/maintenance/cargo, +/obj/random/maintenance/cargo, +/turf/simulated/floor/plating, +/area/maintenance/research) +"bUM" = ( +/obj/machinery/r_n_d/protolathe, +/obj/effect/floor_decal/industrial/outline/yellow, +/turf/simulated/floor/tiled, +/area/rnd/lab) +"bUN" = ( +/turf/simulated/floor/tiled, +/area/rnd/lab) +"bUO" = ( +/obj/machinery/r_n_d/destructive_analyzer, +/obj/effect/floor_decal/industrial/outline/yellow, +/turf/simulated/floor/tiled, +/area/rnd/lab) +"bUP" = ( +/obj/effect/floor_decal/industrial/warning{ + icon_state = "warning"; + dir = 8 + }, +/turf/simulated/floor/tiled/white, +/area/rnd/lab) +"bUQ" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/effect/floor_decal/borderfloorwhite/corner, +/obj/effect/floor_decal/corner/purple/bordercorner, +/turf/simulated/floor/tiled/white, +/area/rnd/lab) +"bUR" = ( +/obj/machinery/alarm{ + dir = 1; + pixel_y = -22 + }, +/obj/effect/floor_decal/borderfloorwhite, +/obj/effect/floor_decal/corner/purple/border, +/turf/simulated/floor/tiled/white, +/area/rnd/lab) +"bUS" = ( +/obj/machinery/door/firedoor/border_only, +/obj/effect/wingrille_spawn/reinforced, +/turf/simulated/floor/plating, +/area/rnd/lab) +"bUT" = ( +/obj/effect/floor_decal/industrial/warning/corner, +/obj/item/device/radio/intercom{ + name = "Station Intercom (General)"; + pixel_y = -21 + }, +/obj/effect/floor_decal/borderfloorwhite/corner{ + dir = 8 + }, +/obj/effect/floor_decal/corner/purple/bordercorner{ + dir = 8 + }, +/turf/simulated/floor/tiled/white, +/area/rnd/research) +"bUU" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/obj/effect/floor_decal/industrial/warning, +/obj/structure/cable/green{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/obj/structure/disposalpipe/segment, +/turf/simulated/floor/tiled/white, +/area/rnd/research) +"bUV" = ( +/obj/effect/floor_decal/industrial/warning/corner{ + dir = 8 + }, +/obj/machinery/light, +/obj/effect/floor_decal/borderfloorwhite/corner, +/obj/effect/floor_decal/corner/purple/bordercorner, +/turf/simulated/floor/tiled/white, +/area/rnd/research) +"bUW" = ( +/obj/structure/closet/wardrobe/robotics_black, +/obj/item/device/radio/headset/headset_sci{ + pixel_x = -3 + }, +/obj/item/device/radio/headset/headset_sci{ + pixel_x = -3 + }, +/obj/item/device/flash, +/obj/item/device/flash, +/obj/effect/floor_decal/borderfloorwhite, +/obj/effect/floor_decal/corner/purple/border, +/obj/effect/floor_decal/borderfloorwhite/corner2{ + dir = 9 + }, +/obj/effect/floor_decal/corner/purple/bordercorner2{ + dir = 9 + }, +/turf/simulated/floor/tiled/white, +/area/assembly/robotics) +"bUX" = ( +/obj/effect/floor_decal/industrial/warning{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/structure/cable/green{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/turf/simulated/floor/tiled/white, +/area/assembly/robotics) +"bUY" = ( +/turf/simulated/floor/tiled, +/area/assembly/robotics) +"bUZ" = ( +/obj/machinery/hologram/holopad, +/obj/effect/floor_decal/industrial/outline/grey, +/turf/simulated/floor/tiled/monotile, +/area/assembly/robotics) +"bVa" = ( +/obj/effect/floor_decal/industrial/warning{ + icon_state = "warning"; + dir = 8 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/turf/simulated/floor/tiled/white, +/area/assembly/robotics) +"bVb" = ( +/obj/effect/floor_decal/industrial/warning{ + dir = 10 + }, +/turf/simulated/floor/tiled/white, +/area/assembly/robotics) +"bVc" = ( +/obj/effect/floor_decal/industrial/warning, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/structure/cable/green{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/turf/simulated/floor/tiled/white, +/area/assembly/robotics) +"bVd" = ( +/obj/effect/floor_decal/industrial/warning, +/turf/simulated/floor/tiled/white, +/area/assembly/robotics) +"bVe" = ( +/obj/structure/table/standard, +/obj/structure/window/reinforced, +/obj/item/weapon/tool/screwdriver, +/obj/item/weapon/tool/crowbar, +/obj/item/weapon/surgical/circular_saw, +/obj/item/weapon/surgical/hemostat, +/obj/item/stack/cable_coil, +/obj/item/weapon/weldingtool/hugetank, +/obj/effect/floor_decal/industrial/warning, +/obj/machinery/light{ + dir = 4; + icon_state = "tube1" + }, +/turf/simulated/floor/tiled/white, +/area/assembly/robotics) +"bVf" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 10 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/obj/machinery/door/blast/regular{ + density = 0; + dir = 1; + icon_state = "pdoor0"; + id = "englockdown"; + name = "Engineering Lockdown"; + opacity = 0 + }, +/turf/simulated/floor/plating, +/area/maintenance/engineering) +"bVg" = ( +/obj/machinery/hologram/holopad, +/obj/structure/cable/green{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/obj/machinery/atmospherics/pipe/simple/hidden/universal{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/effect/floor_decal/industrial/outline/grey, +/turf/simulated/floor/tiled/white, +/area/rnd/misc_lab) +"bVh" = ( +/obj/machinery/atmospherics/binary/pump{ + dir = 8 + }, +/obj/effect/floor_decal/borderfloorwhite{ + dir = 4 + }, +/obj/effect/floor_decal/corner/purple/border{ + dir = 4 + }, +/turf/simulated/floor/tiled/white, +/area/rnd/misc_lab) +"bVi" = ( +/obj/machinery/atmospherics/pipe/simple/heat_exchanging{ + icon_state = "intact"; + dir = 10 + }, +/obj/structure/lattice, +/turf/space, +/area/space) +"bVj" = ( +/obj/machinery/atmospherics/pipe/simple/visible{ + dir = 4 + }, +/turf/simulated/floor/reinforced, +/area/rnd/misc_lab) +"bVk" = ( +/obj/machinery/atmospherics/unary/vent_scrubber{ + dir = 8 + }, +/obj/effect/landmark{ + name = "blobstart" + }, +/turf/simulated/floor/reinforced, +/area/rnd/misc_lab) +"bVl" = ( +/obj/machinery/portable_atmospherics/canister, +/obj/machinery/camera/network/research{ + c_tag = "Research - Miscellaneous Test Chamber"; + dir = 8; + network = list("Research","Miscellaneous Reseach") + }, +/turf/simulated/floor/reinforced, +/area/rnd/misc_lab) +"bVm" = ( +/obj/machinery/alarm{ + dir = 4; + icon_state = "alarm0"; + pixel_x = -22; + pixel_y = 0 + }, +/obj/machinery/atmospherics/portables_connector{ + dir = 4 + }, +/obj/machinery/portable_atmospherics/canister/nitrogen, +/turf/simulated/floor/tiled/dark, +/area/server) +"bVn" = ( +/obj/machinery/meter, +/obj/machinery/atmospherics/pipe/manifold/hidden{ + dir = 4; + icon_state = "map" + }, +/turf/simulated/floor/tiled/dark, +/area/server) +"bVo" = ( +/obj/machinery/computer/message_monitor, +/turf/simulated/floor/tiled/dark, +/area/server) +"bVp" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{ + dir = 8 + }, +/obj/structure/cable/green{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/obj/structure/disposalpipe/segment, +/obj/effect/floor_decal/borderfloorwhite{ + dir = 8 + }, +/obj/effect/floor_decal/corner/purple/border{ + dir = 8 + }, +/turf/simulated/floor/tiled/white, +/area/rnd/research) +"bVq" = ( +/obj/machinery/atmospherics/unary/vent_scrubber/on{ + dir = 8 + }, +/obj/effect/floor_decal/borderfloorwhite{ + dir = 4 + }, +/obj/effect/floor_decal/corner/purple/border{ + dir = 4 + }, +/turf/simulated/floor/tiled/white, +/area/rnd/research) +"bVr" = ( +/obj/machinery/portable_atmospherics/powered/scrubber/huge, +/obj/effect/floor_decal/industrial/outline/yellow, +/turf/simulated/floor/tiled/dark, +/area/rnd/mixing) +"bVs" = ( +/turf/simulated/floor/tiled, +/area/rnd/mixing) +"bVt" = ( +/obj/machinery/atmospherics/portables_connector, +/obj/effect/floor_decal/industrial/outline/yellow, +/turf/simulated/floor/tiled, +/area/rnd/mixing) +"bVu" = ( +/obj/machinery/portable_atmospherics/canister, +/obj/effect/floor_decal/industrial/outline/yellow, +/turf/simulated/floor/tiled, +/area/rnd/mixing) +"bVv" = ( +/obj/machinery/atmospherics/pipe/simple/heat_exchanging, +/obj/structure/lattice, +/turf/space, +/area/space) +"bVw" = ( +/obj/machinery/atmospherics/pipe/simple/heat_exchanging{ + dir = 5 + }, +/turf/space, +/area/space) +"bVx" = ( +/obj/effect/floor_decal/industrial/warning/cee{ + icon_state = "warningcee"; + dir = 1 + }, +/obj/machinery/door/window/westright{ + name = "Test Chamber"; + req_one_access = list(7,29) + }, +/obj/machinery/door/window/eastleft{ + name = "Test Chamber"; + req_one_access = list(7,29) + }, +/obj/machinery/atmospherics/pipe/simple/visible{ + dir = 4 + }, +/obj/machinery/door/blast/regular{ + density = 0; + dir = 2; + icon_state = "pdoor0"; + id = "misclab"; + name = "Test Chamber Blast Doors"; + opacity = 0 + }, +/turf/simulated/floor/tiled/dark, +/area/rnd/misc_lab) +"bVy" = ( +/obj/machinery/atmospherics/pipe/simple/heat_exchanging/junction{ + dir = 8; + icon_state = "intact" + }, +/obj/structure/grille, +/turf/space, +/area/space) +"bVz" = ( +/obj/structure/lattice, +/obj/machinery/atmospherics/pipe/simple/visible/black{ + dir = 10 + }, +/obj/structure/grille, +/turf/space, +/area/space) +"bVA" = ( +/obj/machinery/atmospherics/pipe/simple/heat_exchanging{ + icon_state = "intact"; + dir = 9 + }, +/turf/space, +/area/space) +"bVB" = ( +/obj/machinery/atmospherics/pipe/manifold/visible/green{ + dir = 1 + }, +/turf/simulated/floor, +/area/engineering/engine_room) +"bVC" = ( +/obj/machinery/button/remote/blast_door{ + desc = "A remote control-switch for the engine radiator viewport shutters."; + id = "EngineRadiatorViewport1"; + name = "Engine Radiator Viewport Shutters"; + pixel_x = 0; + pixel_y = 25; + req_access = list(10) + }, +/obj/machinery/atmospherics/pipe/simple/visible/green{ + icon_state = "intact"; + dir = 4 + }, +/turf/simulated/floor, +/area/engineering/engine_room) +"bVD" = ( +/obj/machinery/atmospherics/pipe/manifold/visible/green{ + dir = 1 + }, +/obj/machinery/meter, +/turf/simulated/floor, +/area/engineering/engine_room) +"bVE" = ( +/obj/machinery/atmospherics/pipe/simple/visible/green{ + icon_state = "intact"; + dir = 6 + }, +/obj/machinery/door/blast/regular{ + density = 0; + icon_state = "pdoor0"; + id = "EngineRadiatorViewport1"; + name = "Engine Radiator Viewport Shutter"; + opacity = 0 + }, +/obj/machinery/door/firedoor/border_only, +/obj/effect/wingrille_spawn/reinforced, +/turf/simulated/floor, +/area/engineering/engine_room) +"bVF" = ( +/obj/machinery/atmospherics/pipe/simple/visible/green{ + dir = 10; + icon_state = "intact" + }, +/obj/effect/floor_decal/industrial/warning/corner{ + icon_state = "warningcorner"; + dir = 4 + }, +/turf/simulated/floor, +/area/engineering/engine_room) +"bVG" = ( +/obj/machinery/atmospherics/pipe/manifold/visible/black{ + dir = 8 + }, +/obj/machinery/meter, +/obj/effect/floor_decal/industrial/warning{ + dir = 1 + }, +/turf/simulated/floor, +/area/engineering/engine_room) +"bVH" = ( +/obj/machinery/atmospherics/pipe/simple/visible/black{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/visible/cyan, +/obj/effect/floor_decal/industrial/warning{ + dir = 1 + }, +/turf/simulated/floor, +/area/engineering/engine_room) +"bVI" = ( +/obj/machinery/atmospherics/pipe/simple/visible/black{ + dir = 10 + }, +/obj/effect/floor_decal/industrial/warning/corner{ + dir = 1 + }, +/obj/machinery/button/remote/blast_door{ + desc = "A remote control-switch for the engine control room blast doors."; + id = "EngineEmitterPortWest"; + name = "Engine Room Blast Doors"; + pixel_x = 0; + pixel_y = 25; + req_access = null; + req_one_access = list(11,24) + }, +/turf/simulated/floor, +/area/engineering/engine_room) +"bVJ" = ( +/obj/effect/floor_decal/industrial/warning{ + icon_state = "warning"; + dir = 8 + }, +/obj/structure/disposalpipe/trunk{ + dir = 4 + }, +/obj/machinery/disposal, +/turf/simulated/floor/plating, +/area/engineering/drone_fabrication) +"bVK" = ( +/obj/machinery/atmospherics/unary/vent_scrubber/on{ + dir = 1 + }, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/turf/simulated/floor/plating, +/area/engineering/drone_fabrication) +"bVL" = ( +/obj/effect/floor_decal/industrial/warning{ + dir = 4 + }, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/turf/simulated/floor/plating, +/area/engineering/drone_fabrication) +"bVM" = ( +/obj/machinery/door/firedoor/border_only, +/obj/machinery/door/airlock/engineering{ + name = "Engineering Drone Fabrication"; + req_one_access = list(11,24) + }, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/turf/simulated/floor/tiled/steel_grid, +/area/engineering/drone_fabrication) +"bVN" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 6 + }, +/obj/structure/disposalpipe/sortjunction/flipped{ + dir = 1; + name = "Drone Fabrication"; + sortType = "Drone Fabrication" + }, +/obj/effect/floor_decal/steeldecal/steel_decals4{ + dir = 1 + }, +/obj/effect/floor_decal/steeldecal/steel_decals4{ + dir = 6 + }, +/turf/simulated/floor/tiled, +/area/engineering/hallway/engineer_hallway) +"bVO" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 9 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/machinery/light{ + dir = 4; + icon_state = "tube1"; + pixel_x = 0 + }, +/turf/simulated/floor/tiled, +/area/engineering/hallway/engineer_hallway) +"bVP" = ( +/obj/structure/closet/secure_closet/engineering_welding, +/obj/effect/floor_decal/industrial/outline/yellow, +/obj/machinery/light{ + dir = 8 + }, +/turf/simulated/floor/tiled/dark, +/area/engineering/workshop) +"bVQ" = ( +/obj/machinery/atmospherics/unary/vent_pump/on{ + dir = 1 + }, +/turf/simulated/floor/tiled, +/area/engineering/workshop) +"bVR" = ( +/obj/structure/window/reinforced{ + dir = 4; + health = 1e+006 + }, +/obj/structure/frame{ + anchored = 1 + }, +/obj/effect/floor_decal/industrial/outline/yellow, +/obj/effect/decal/cleanable/blood/oil/streak{ + amount = 0 + }, +/turf/simulated/floor/tiled, +/area/engineering/workshop) +"bVS" = ( +/obj/structure/window/reinforced{ + dir = 8 + }, +/obj/structure/table/steel, +/obj/effect/floor_decal/industrial/outline/yellow, +/obj/item/device/floor_painter, +/obj/item/device/multitool{ + pixel_x = 5 + }, +/obj/item/device/t_scanner, +/obj/item/weapon/reagent_containers/spray/cleaner, +/obj/random/tech_supply, +/obj/random/tech_supply, +/turf/simulated/floor/tiled, +/area/engineering/workshop) +"bVT" = ( +/obj/machinery/atmospherics/unary/vent_scrubber/on{ + dir = 1 + }, +/turf/simulated/floor/tiled, +/area/engineering/workshop) +"bVU" = ( +/obj/structure/reagent_dispensers/watertank, +/obj/machinery/light{ + dir = 4; + icon_state = "tube1"; + pixel_x = 0 + }, +/turf/simulated/floor/tiled/dark, +/area/engineering/workshop) +"bVV" = ( +/obj/structure/table/reinforced, +/obj/machinery/photocopier/faxmachine{ + department = "Chief Engineer's Office" + }, +/obj/item/device/radio/intercom{ + dir = 8; + name = "Station Intercom (General)"; + pixel_x = -21 + }, +/obj/effect/floor_decal/borderfloor{ + dir = 8 + }, +/obj/effect/floor_decal/corner/blue/border{ + dir = 8 + }, +/turf/simulated/floor/tiled, +/area/crew_quarters/heads/sc/chief) +"bVW" = ( +/obj/structure/table/reinforced, +/obj/item/weapon/paper_bin{ + pixel_x = -3; + pixel_y = 7 + }, +/obj/item/device/megaphone, +/turf/simulated/floor/tiled, +/area/crew_quarters/heads/sc/chief) +"bVX" = ( +/obj/structure/table/reinforced, +/obj/structure/cable/green{ + d1 = 1; + d2 = 4; + icon_state = "1-4" + }, +/obj/item/weapon/folder/yellow_ce, +/obj/item/weapon/pen/multi, +/obj/item/weapon/stamp/ce, +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/turf/simulated/floor/tiled, +/area/crew_quarters/heads/sc/chief) +"bVY" = ( +/obj/structure/table/reinforced, +/obj/structure/cable/green{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/obj/structure/cable/green{ + d1 = 2; + d2 = 8; + icon_state = "2-8" + }, +/obj/item/weapon/clipboard, +/obj/item/weapon/book/manual/supermatter_engine, +/obj/item/clothing/glasses/meson{ + pixel_y = 4 + }, +/obj/item/clothing/glasses/welding/superior, +/obj/item/weapon/storage/fancy/cigarettes, +/obj/item/weapon/flame/lighter/zippo, +/turf/simulated/floor/tiled, +/area/crew_quarters/heads/sc/chief) +"bVZ" = ( +/obj/structure/cable/green{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/obj/effect/floor_decal/steeldecal/steel_decals4{ + dir = 10 + }, +/obj/effect/floor_decal/steeldecal/steel_decals4, +/turf/simulated/floor/tiled, +/area/crew_quarters/heads/sc/chief) +"bWa" = ( +/obj/machinery/door/firedoor/glass, +/obj/structure/cable/green{ + d1 = 2; + d2 = 8; + icon_state = "2-8" + }, +/obj/structure/cable/green{ + d1 = 1; + d2 = 8; + icon_state = "1-8" + }, +/obj/machinery/door/airlock/command{ + name = "Chief Engineer"; + req_access = list(56) + }, +/turf/simulated/floor/tiled/steel_grid, +/area/crew_quarters/heads/sc/chief) +"bWb" = ( +/obj/structure/cable/green{ + d1 = 1; + d2 = 4; + icon_state = "1-4" + }, +/obj/structure/disposalpipe/junction{ + icon_state = "pipe-j2"; + dir = 2 + }, +/turf/simulated/floor/tiled, +/area/engineering/foyer) +"bWc" = ( +/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{ + dir = 8 + }, +/obj/machinery/atmospherics/pipe/manifold/hidden/supply{ + dir = 8 + }, +/obj/structure/cable/green{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/turf/simulated/floor/tiled, +/area/engineering/foyer) +"bWd" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/obj/structure/cable/green{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/turf/simulated/floor/tiled, +/area/engineering/foyer) +"bWe" = ( +/obj/structure/cable/green{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/effect/floor_decal/steeldecal/steel_decals4{ + dir = 10 + }, +/obj/effect/floor_decal/steeldecal/steel_decals4, +/turf/simulated/floor/tiled, +/area/engineering/foyer) +"bWf" = ( +/obj/machinery/door/firedoor/glass, +/obj/machinery/door/airlock/glass_engineeringatmos{ + name = "Engineering Break Room"; + req_one_access = list(10) + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/obj/structure/cable/green{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/turf/simulated/floor/tiled/steel_grid, +/area/engineering/break_room) +"bWg" = ( +/obj/effect/floor_decal/corner/white/diagonal, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/obj/structure/cable/green{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/obj/structure/disposalpipe/segment{ + dir = 8; + icon_state = "pipe-c" + }, +/obj/effect/floor_decal/steeldecal/steel_decals4{ + dir = 6 + }, +/obj/effect/floor_decal/steeldecal/steel_decals4{ + dir = 1 + }, +/turf/simulated/floor/tiled, +/area/engineering/break_room) +"bWh" = ( +/obj/structure/bed/chair/comfy/brown{ + dir = 4 + }, +/obj/effect/landmark/start{ + name = "Atmospheric Technician" + }, +/obj/machinery/atmospherics/pipe/manifold/hidden/supply{ + dir = 1 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, +/obj/structure/cable/green{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/turf/simulated/floor/carpet, +/area/engineering/break_room) +"bWi" = ( +/obj/structure/table/woodentable, +/obj/item/weapon/folder/yellow, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 9; + pixel_y = 0 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 9 + }, +/obj/structure/cable/green{ + d1 = 1; + d2 = 8; + icon_state = "1-8" + }, +/turf/simulated/floor/carpet, +/area/engineering/break_room) +"bWj" = ( +/obj/structure/table/woodentable, +/obj/item/weapon/reagent_containers/food/snacks/chips, +/turf/simulated/floor/carpet, +/area/engineering/break_room) +"bWk" = ( +/obj/effect/floor_decal/corner/white/diagonal, +/obj/effect/floor_decal/steeldecal/steel_decals4, +/obj/effect/floor_decal/steeldecal/steel_decals4{ + dir = 10 + }, +/turf/simulated/floor/tiled, +/area/engineering/break_room) +"bWl" = ( +/obj/machinery/door/firedoor/border_only, +/obj/machinery/door/airlock{ + name = "Engineering Washroom" + }, +/turf/simulated/floor/tiled/steel_grid, +/area/engineering/engi_restroom) +"bWm" = ( +/obj/effect/floor_decal/steeldecal/steel_decals4{ + dir = 6 + }, +/obj/effect/floor_decal/steeldecal/steel_decals4{ + dir = 1 + }, +/turf/simulated/floor/tiled/freezer, +/area/engineering/engi_restroom) +"bWn" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/turf/simulated/floor/tiled/freezer, +/area/engineering/engi_restroom) +"bWo" = ( +/turf/simulated/floor/tiled/freezer, +/area/engineering/engi_restroom) +"bWp" = ( +/obj/effect/landmark{ + name = "xeno_spawn"; + pixel_x = -1 + }, +/turf/simulated/floor/tiled/freezer, +/area/engineering/engi_restroom) +"bWq" = ( +/obj/structure/curtain/open/shower/engineering, +/obj/machinery/shower{ + dir = 8; + icon_state = "shower"; + pixel_x = -5; + pixel_y = -1 + }, +/obj/machinery/door/window/westright{ + name = "Shower" + }, +/turf/simulated/floor/tiled/freezer, +/area/engineering/engi_restroom) +"bWr" = ( +/obj/structure/table/rack{ + dir = 1 + }, +/obj/random/maintenance, +/obj/random/maintenance, +/obj/random/maintenance/clean, +/obj/random/maintenance/clean, +/turf/simulated/floor/plating, +/area/maintenance/engineering) +"bWs" = ( +/obj/structure/dispenser/oxygen, +/turf/simulated/floor/plating, +/area/maintenance/engineering) +"bWt" = ( +/obj/structure/flora/ausbushes/fullgrass, +/obj/structure/flora/ausbushes/brflowers, +/obj/machinery/light{ + dir = 8 + }, +/turf/simulated/floor/grass, +/area/hallway/primary/seconddeck/fpcenter) +"bWu" = ( +/obj/structure/disposalpipe/segment, +/obj/effect/floor_decal/borderfloor/corner, +/obj/effect/floor_decal/corner/red/bordercorner, +/turf/simulated/floor/tiled, +/area/hallway/primary/seconddeck/fpcenter) +"bWv" = ( +/obj/effect/floor_decal/borderfloor{ + dir = 6 + }, +/obj/effect/floor_decal/corner/red/border{ + dir = 6 + }, +/obj/item/device/radio/intercom{ + name = "Station Intercom (General)"; + pixel_y = -21 + }, +/turf/simulated/floor/tiled, +/area/hallway/primary/seconddeck/fpcenter) +"bWw" = ( +/turf/simulated/wall/r_wall, +/area/maintenance/substation/central) +"bWx" = ( +/turf/simulated/wall, +/area/maintenance/substation/central) +"bWy" = ( +/obj/structure/cable{ + d1 = 1; + d2 = 2; + icon_state = "1-2"; + pixel_y = 0 + }, +/obj/machinery/door/firedoor/border_only, +/obj/machinery/door/airlock/engineering{ + name = "Central Substation"; + req_one_access = list(11,19,24,47) + }, +/turf/simulated/floor/plating, +/area/maintenance/substation/central) +"bWz" = ( +/turf/simulated/wall, +/area/maintenance/central) +"bWA" = ( +/turf/simulated/wall/r_wall, +/area/maintenance/central) +"bWB" = ( +/obj/structure/cable{ + d1 = 1; + d2 = 4; + icon_state = "1-4" + }, +/turf/simulated/floor/tiled/dark, +/area/hallway/primary/seconddeck/fscenter) +"bWC" = ( +/obj/machinery/power/apc{ + dir = 4; + name = "east bump"; + pixel_x = 24 + }, +/obj/structure/cable{ + d2 = 8; + icon_state = "0-8" + }, +/turf/simulated/floor/tiled/dark, +/area/hallway/primary/seconddeck/fscenter) +"bWD" = ( +/turf/simulated/wall/r_wall, +/area/teleporter) +"bWE" = ( +/obj/structure/sign/warning/secure_area, +/turf/simulated/wall/r_wall, +/area/teleporter) +"bWF" = ( +/obj/machinery/door/firedoor/border_only, +/obj/machinery/door/airlock/command{ + name = "Teleport Access"; + req_access = list(17) + }, +/turf/simulated/floor/tiled/steel_grid, +/area/teleporter) +"bWG" = ( +/obj/machinery/status_display, +/turf/simulated/wall/r_wall, +/area/teleporter) +"bWH" = ( +/obj/effect/floor_decal/borderfloor{ + dir = 10 + }, +/obj/effect/floor_decal/corner/purple/border{ + dir = 10 + }, +/obj/item/device/radio/intercom{ + name = "Station Intercom (General)"; + pixel_y = -21 + }, +/turf/simulated/floor/tiled, +/area/hallway/primary/seconddeck/fscenter) +"bWI" = ( +/obj/structure/flora/ausbushes/sparsegrass, +/obj/machinery/light{ + dir = 4; + icon_state = "tube1" + }, +/turf/simulated/floor/grass, +/area/hallway/primary/seconddeck/fscenter) +"bWJ" = ( +/obj/structure/table/rack{ + dir = 8; + layer = 2.6 + }, +/obj/random/maintenance/research, +/obj/random/maintenance/research, +/obj/random/maintenance/clean, +/obj/item/weapon/extinguisher, +/turf/simulated/floor/plating, +/area/maintenance/research) +"bWK" = ( +/obj/machinery/r_n_d/circuit_imprinter, +/obj/item/weapon/reagent_containers/glass/beaker/sulphuric, +/obj/machinery/light{ + icon_state = "tube1"; + dir = 8 + }, +/obj/effect/floor_decal/industrial/outline/yellow, +/turf/simulated/floor/tiled, +/area/rnd/lab) +"bWL" = ( +/obj/machinery/hologram/holopad, +/obj/effect/floor_decal/industrial/outline/grey, +/turf/simulated/floor/tiled, +/area/rnd/lab) +"bWM" = ( +/obj/machinery/computer/rdconsole/core, +/obj/effect/floor_decal/industrial/outline/yellow, +/turf/simulated/floor/tiled, +/area/rnd/lab) +"bWN" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/machinery/light{ + dir = 4 + }, +/obj/effect/floor_decal/borderfloorwhite{ + dir = 4 + }, +/obj/effect/floor_decal/corner/purple/border{ + dir = 4 + }, +/turf/simulated/floor/tiled/white, +/area/rnd/lab) +"bWO" = ( +/obj/machinery/door/firedoor/glass, +/obj/structure/cable/green{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/obj/machinery/door/airlock/glass_research{ + name = "Research and Development"; + req_access = list(7) + }, +/turf/simulated/floor/tiled/steel_grid, +/area/rnd/lab) +"bWP" = ( +/obj/effect/floor_decal/industrial/warning{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/machinery/power/apc{ + dir = 8; + name = "west bump"; + pixel_x = -24 + }, +/obj/machinery/light_switch{ + pixel_x = -36 + }, +/obj/structure/cable/green, +/turf/simulated/floor/tiled/white, +/area/assembly/robotics) +"bWQ" = ( +/obj/machinery/mecha_part_fabricator, +/obj/effect/floor_decal/industrial/outline/yellow, +/turf/simulated/floor/tiled, +/area/assembly/robotics) +"bWR" = ( +/obj/effect/floor_decal/industrial/outline/yellow, +/obj/structure/table/steel_reinforced, +/obj/item/device/robotanalyzer, +/obj/item/device/robotanalyzer, +/obj/item/device/mmi/digital/robot, +/turf/simulated/floor/tiled, +/area/assembly/robotics) +"bWS" = ( +/obj/machinery/pros_fabricator, +/obj/effect/floor_decal/industrial/outline/yellow, +/turf/simulated/floor/tiled, +/area/assembly/robotics) +"bWT" = ( +/obj/machinery/camera/network/research{ + c_tag = "SCI - Robotics"; + dir = 1 + }, +/turf/simulated/floor/tiled/white, +/area/assembly/robotics) +"bWU" = ( +/obj/effect/floor_decal/industrial/warning{ + dir = 8 + }, +/obj/machinery/firealarm{ + dir = 1; + pixel_x = 0; + pixel_y = -24 + }, +/turf/simulated/floor/tiled/techfloor, +/area/assembly/robotics) +"bWV" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/structure/cable/green{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/turf/simulated/floor/tiled/techfloor, +/area/assembly/robotics) +"bWW" = ( +/turf/simulated/floor/tiled/techfloor, +/area/assembly/robotics) +"bWX" = ( +/obj/structure/table/steel_reinforced, +/obj/item/weapon/storage/box/bodybags{ + pixel_x = -1; + pixel_y = -2 + }, +/obj/item/weapon/book/manual/robotics_cyborgs{ + pixel_x = 2; + pixel_y = 5 + }, +/obj/item/device/defib_kit/jumper_kit/loaded, +/obj/item/device/defib_kit/jumper_kit/loaded, +/turf/simulated/floor/tiled/techfloor, +/area/assembly/robotics) +"bWY" = ( +/obj/machinery/atmospherics/portables_connector{ + dir = 4 + }, +/obj/machinery/newscaster{ + pixel_x = -30; + pixel_y = 0 + }, +/obj/effect/floor_decal/borderfloorwhite{ + dir = 8 + }, +/obj/effect/floor_decal/corner/purple/border{ + dir = 8 + }, +/turf/simulated/floor/tiled/white, +/area/rnd/misc_lab) +"bWZ" = ( +/obj/machinery/atmospherics/pipe/simple/visible{ + dir = 4 + }, +/obj/structure/cable/green{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/turf/simulated/floor/tiled/white, +/area/rnd/misc_lab) +"bXa" = ( +/obj/machinery/atmospherics/binary/pump{ + dir = 4 + }, +/obj/effect/floor_decal/borderfloorwhite{ + dir = 4 + }, +/obj/effect/floor_decal/corner/purple/border{ + dir = 4 + }, +/turf/simulated/floor/tiled/white, +/area/rnd/misc_lab) +"bXb" = ( +/obj/effect/floor_decal/industrial/warning/cee, +/obj/machinery/atmospherics/pipe/simple/visible{ + dir = 4 + }, +/obj/machinery/door/window/westleft{ + name = "Test Chamber"; + req_one_access = list(7,29) + }, +/obj/machinery/door/window/eastright{ + name = "Test Chamber"; + req_one_access = list(7,29) + }, +/obj/machinery/door/blast/regular{ + density = 0; + dir = 2; + icon_state = "pdoor0"; + id = "misclab"; + name = "Test Chamber Blast Doors"; + opacity = 0 + }, +/turf/simulated/floor/tiled/dark, +/area/rnd/misc_lab) +"bXc" = ( +/obj/machinery/atmospherics/unary/outlet_injector{ + dir = 8; + frequency = 1441; + icon_state = "map_injector"; + id = "n2_in"; + use_power = 1 + }, +/turf/simulated/floor/reinforced, +/area/rnd/misc_lab) +"bXd" = ( +/obj/machinery/portable_atmospherics/canister, +/turf/simulated/floor/reinforced, +/area/rnd/misc_lab) +"bXe" = ( +/obj/machinery/atmospherics/pipe/simple/hidden{ + dir = 6 + }, +/obj/effect/wingrille_spawn/reinforced, +/obj/structure/sign/warning/server_room{ + pixel_x = -32 + }, +/turf/simulated/floor/plating, +/area/server) +"bXf" = ( +/obj/effect/floor_decal/industrial/warning/full, +/obj/machinery/hologram/holopad, +/obj/machinery/atmospherics/pipe/manifold/hidden, +/obj/machinery/door/window/northright{ + name = "Server Room"; + req_access = list(30) + }, +/obj/machinery/door/window/southleft{ + name = "Server Room"; + req_access = list(30) + }, +/turf/simulated/floor/tiled/dark, +/area/server) +"bXg" = ( +/obj/machinery/atmospherics/pipe/simple/hidden{ + dir = 10; + icon_state = "intact" + }, +/obj/effect/wingrille_spawn/reinforced, +/turf/simulated/floor/plating, +/area/server) +"bXh" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/obj/structure/extinguisher_cabinet{ + pixel_x = -28; + pixel_y = 0 + }, +/obj/structure/cable/green{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/obj/structure/disposalpipe/segment, +/obj/effect/floor_decal/borderfloorwhite{ + dir = 8 + }, +/obj/effect/floor_decal/corner/purple/border{ + dir = 8 + }, +/turf/simulated/floor/tiled/white, +/area/rnd/research) +"bXi" = ( +/obj/machinery/atmospherics/portables_connector{ + dir = 4 + }, +/obj/effect/floor_decal/industrial/outline/yellow, +/turf/simulated/floor/tiled, +/area/rnd/mixing) +"bXj" = ( +/obj/machinery/atmospherics/omni/mixer{ + tag_east = 2; + tag_east_con = null; + tag_north = 1; + tag_north_con = 0.5; + tag_south = 0; + tag_south_con = null; + tag_west = 1; + tag_west_con = 0.5; + use_power = 0 + }, +/obj/item/device/radio/intercom{ + name = "Station Intercom (General)"; + pixel_y = -21 + }, +/turf/simulated/floor/tiled, +/area/rnd/mixing) +"bXk" = ( +/obj/machinery/atmospherics/pipe/manifold/visible, +/obj/machinery/meter, +/obj/machinery/camera/network/research{ + c_tag = "SCI - Toxins Lab 2"; + dir = 1 + }, +/turf/simulated/floor/tiled, +/area/rnd/mixing) +"bXl" = ( +/obj/machinery/atmospherics/omni/atmos_filter{ + tag_east = 2; + tag_north = 6; + tag_south = 0; + tag_west = 1; + use_power = 0 + }, +/turf/simulated/floor/tiled, +/area/rnd/mixing) +"bXm" = ( +/obj/machinery/atmospherics/portables_connector{ + dir = 8 + }, +/obj/effect/floor_decal/industrial/outline/yellow, +/turf/simulated/floor/tiled, +/area/rnd/mixing) +"bXn" = ( +/obj/machinery/light, +/turf/simulated/floor/tiled, +/area/rnd/mixing) +"bXo" = ( +/obj/machinery/atmospherics/pipe/manifold4w/visible/black, +/obj/structure/lattice, +/obj/structure/grille, +/turf/space, +/area/space) +"bXp" = ( +/obj/machinery/atmospherics/pipe/simple/visible/green{ + icon_state = "intact"; + dir = 4 + }, +/turf/simulated/floor, +/area/engineering/engine_room) +"bXq" = ( +/obj/effect/floor_decal/industrial/warning/corner, +/obj/effect/floor_decal/industrial/outline/blue, +/obj/machinery/atmospherics/pipe/cap/visible{ + dir = 1 + }, +/turf/simulated/floor, +/area/engineering/engine_room) +"bXr" = ( +/obj/effect/floor_decal/industrial/warning, +/turf/simulated/floor, +/area/engineering/engine_room) +"bXs" = ( +/obj/machinery/atmospherics/pipe/cap/visible{ + dir = 1 + }, +/obj/effect/floor_decal/industrial/warning/corner{ + dir = 8 + }, +/turf/simulated/floor, +/area/engineering/engine_room) +"bXt" = ( +/obj/machinery/atmospherics/pipe/cap/visible{ + dir = 1 + }, +/obj/effect/floor_decal/industrial/warning/corner, +/obj/effect/floor_decal/industrial/outline/blue, +/turf/simulated/floor, +/area/engineering/engine_room) +"bXu" = ( +/obj/machinery/atmospherics/pipe/simple/visible/green, +/turf/simulated/floor, +/area/engineering/engine_room) +"bXv" = ( +/obj/machinery/atmospherics/omni/atmos_filter{ + tag_east = 1; + tag_north = 2; + tag_south = 4; + tag_west = 0; + use_power = 0 + }, +/obj/effect/floor_decal/industrial/outline/blue, +/obj/effect/engine_setup/atmo_filter, +/turf/simulated/floor/plating, +/area/engineering/engine_room) +"bXw" = ( +/obj/machinery/atmospherics/pipe/manifold4w/visible/cyan, +/turf/simulated/floor, +/area/engineering/engine_room) +"bXx" = ( +/obj/machinery/atmospherics/omni/atmos_filter{ + tag_east = 0; + tag_north = 2; + tag_south = 4; + tag_west = 1; + use_power = 0 + }, +/obj/effect/floor_decal/industrial/outline/blue, +/obj/structure/sign/warning/nosmoking_2{ + pixel_x = 32 + }, +/obj/effect/engine_setup/atmo_filter, +/turf/simulated/floor/plating, +/area/engineering/engine_room) +"bXy" = ( +/obj/effect/floor_decal/industrial/warning{ + dir = 10 + }, +/turf/simulated/floor/plating, +/area/engineering/drone_fabrication) +"bXz" = ( +/obj/effect/landmark{ + name = "JoinLateCyborg" + }, +/obj/effect/floor_decal/industrial/warning, +/turf/simulated/floor/plating, +/area/engineering/drone_fabrication) +"bXA" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/obj/structure/disposalpipe/segment, +/turf/simulated/floor/tiled, +/area/engineering/hallway/engineer_hallway) +"bXB" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/machinery/firealarm{ + dir = 4; + pixel_x = 24 + }, +/obj/machinery/camera/network/engineering{ + c_tag = "ENG - Engineering Hallway 2"; + dir = 8 + }, +/turf/simulated/floor/tiled, +/area/engineering/hallway/engineer_hallway) +"bXC" = ( +/obj/structure/closet/secure_closet/engineering_electrical, +/obj/effect/floor_decal/industrial/outline/yellow, +/turf/simulated/floor/tiled/dark, +/area/engineering/workshop) +"bXD" = ( +/obj/machinery/vending/tool, +/obj/structure/window/reinforced{ + dir = 4; + health = 1e+006 + }, +/obj/effect/floor_decal/industrial/outline/yellow, +/turf/simulated/floor/tiled, +/area/engineering/workshop) +"bXE" = ( +/obj/structure/closet/toolcloset, +/obj/item/device/flashlight, +/obj/structure/window/reinforced{ + dir = 8 + }, +/obj/effect/floor_decal/industrial/outline/yellow, +/turf/simulated/floor/tiled, +/area/engineering/workshop) +"bXF" = ( +/obj/structure/table/steel_reinforced, +/obj/item/clothing/gloves/black, +/obj/item/clothing/gloves/black, +/obj/item/weapon/tool/crowbar, +/obj/item/weapon/tool/crowbar/red, +/obj/item/weapon/storage/box/lights/mixed, +/turf/simulated/floor/tiled/dark, +/area/engineering/workshop) +"bXG" = ( +/obj/machinery/computer/station_alert/all, +/obj/machinery/firealarm{ + dir = 8; + pixel_x = -24 + }, +/obj/effect/floor_decal/borderfloor{ + dir = 8 + }, +/obj/effect/floor_decal/corner/blue/border{ + dir = 8 + }, +/turf/simulated/floor/tiled, +/area/crew_quarters/heads/sc/chief) +"bXH" = ( +/obj/machinery/atmospherics/unary/vent_pump/on{ + dir = 4 + }, +/turf/simulated/floor/tiled, +/area/crew_quarters/heads/sc/chief) +"bXI" = ( +/obj/structure/bed/chair/office/light{ + dir = 1 + }, +/obj/effect/landmark/start{ + name = "Chief Engineer" + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 9; + pixel_y = 0 + }, +/turf/simulated/floor/tiled, +/area/crew_quarters/heads/sc/chief) +"bXJ" = ( +/obj/structure/table/reinforced, +/obj/structure/cable/green{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/obj/machinery/computer/skills, +/turf/simulated/floor/tiled, +/area/crew_quarters/heads/sc/chief) +"bXK" = ( +/obj/effect/floor_decal/borderfloor/corner, +/obj/effect/floor_decal/corner/blue/bordercorner, +/turf/simulated/floor/tiled, +/area/crew_quarters/heads/sc/chief) +"bXL" = ( +/obj/machinery/door/firedoor/border_only, +/obj/structure/cable/green, +/obj/structure/cable/green{ + d2 = 2; + icon_state = "0-2" + }, +/obj/effect/wingrille_spawn/reinforced/polarized{ + id = "ceoffice" + }, +/turf/simulated/floor, +/area/crew_quarters/heads/sc/chief) +"bXM" = ( +/obj/effect/floor_decal/borderfloor/corner{ + dir = 8 + }, +/obj/effect/floor_decal/corner/yellow/bordercorner{ + dir = 8 + }, +/turf/simulated/floor/tiled, +/area/engineering/foyer) +"bXN" = ( +/obj/machinery/atmospherics/unary/vent_scrubber/on{ + dir = 4 + }, +/obj/structure/disposalpipe/segment, +/turf/simulated/floor/tiled, +/area/engineering/foyer) +"bXO" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 9 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 5 + }, +/turf/simulated/floor/tiled, +/area/engineering/foyer) +"bXP" = ( +/obj/effect/floor_decal/borderfloor/corner, +/obj/effect/floor_decal/corner/yellow/bordercorner, +/turf/simulated/floor/tiled, +/area/engineering/foyer) +"bXQ" = ( +/obj/machinery/atmospherics/unary/vent_pump/on{ + dir = 1 + }, +/turf/simulated/floor/carpet, +/area/engineering/break_room) +"bXR" = ( +/obj/structure/bed/chair/comfy/brown{ + dir = 1 + }, +/obj/effect/landmark/start{ + name = "Station Engineer" + }, +/turf/simulated/floor/carpet, +/area/engineering/break_room) +"bXS" = ( +/obj/machinery/hologram/holopad, +/turf/simulated/floor/carpet, +/area/engineering/break_room) +"bXT" = ( +/obj/machinery/alarm{ + dir = 4; + icon_state = "alarm0"; + pixel_x = -22; + pixel_y = 0 + }, +/obj/machinery/atmospherics/unary/vent_scrubber/on{ + dir = 4 + }, +/turf/simulated/floor/tiled/freezer, +/area/engineering/engi_restroom) +"bXU" = ( +/obj/effect/landmark{ + name = "blobstart" + }, +/obj/item/device/radio/intercom{ + name = "Station Intercom (General)"; + pixel_y = -21 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 9 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 5 + }, +/obj/machinery/light, +/turf/simulated/floor/tiled/freezer, +/area/engineering/engi_restroom) +"bXV" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/turf/simulated/floor/tiled/freezer, +/area/engineering/engi_restroom) +"bXW" = ( +/obj/machinery/firealarm{ + dir = 1; + pixel_x = 0; + pixel_y = -24 + }, +/obj/machinery/atmospherics/unary/vent_pump/on{ + dir = 8 + }, +/turf/simulated/floor/tiled/freezer, +/area/engineering/engi_restroom) +"bXX" = ( +/obj/structure/curtain/open/shower/engineering, +/obj/machinery/door/window/westleft{ + name = "Shower" + }, +/obj/machinery/shower{ + dir = 8; + icon_state = "shower"; + pixel_x = -5; + pixel_y = -1 + }, +/turf/simulated/floor/tiled/freezer, +/area/engineering/engi_restroom) +"bXY" = ( +/obj/machinery/portable_atmospherics/hydroponics/soil, +/obj/structure/sink/kitchen{ + pixel_y = 28 + }, +/turf/simulated/floor/grass, +/area/hallway/primary/seconddeck/fpcenter) +"bXZ" = ( +/obj/structure/flora/ausbushes/fullgrass, +/turf/simulated/floor/grass, +/area/hallway/primary/seconddeck/fpcenter) +"bYa" = ( +/obj/effect/floor_decal/borderfloor/corner{ + dir = 8 + }, +/obj/effect/floor_decal/corner/green/bordercorner{ + dir = 8 + }, +/turf/simulated/floor/tiled, +/area/hallway/primary/seconddeck/fpcenter) +"bYb" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 6 + }, +/turf/simulated/floor/tiled/monotile, +/area/hallway/primary/seconddeck/fpcenter) +"bYc" = ( +/obj/structure/disposalpipe/segment, +/obj/machinery/atmospherics/unary/vent_pump/on{ + dir = 8 + }, +/obj/effect/floor_decal/borderfloor{ + dir = 4 + }, +/obj/effect/floor_decal/corner/red/border{ + dir = 4 + }, +/turf/simulated/floor/tiled, +/area/hallway/primary/seconddeck/fpcenter) +"bYd" = ( +/obj/structure/table/steel, +/obj/machinery/cell_charger, +/obj/structure/cable/green{ + d2 = 2; + icon_state = "0-2" + }, +/obj/machinery/power/apc{ + dir = 1; + name = "north bump"; + pixel_x = 0; + pixel_y = 24 + }, +/obj/effect/floor_decal/industrial/warning/corner{ + icon_state = "warningcorner"; + dir = 8 + }, +/turf/simulated/floor/plating, +/area/maintenance/substation/central) +"bYe" = ( +/obj/structure/cable{ + d1 = 1; + d2 = 2; + icon_state = "1-2"; + pixel_y = 0 + }, +/obj/structure/cable{ + d1 = 1; + d2 = 4; + icon_state = "1-4" + }, +/obj/effect/floor_decal/industrial/warning{ + icon_state = "warning"; + dir = 4 + }, +/turf/simulated/floor, +/area/maintenance/substation/central) +"bYf" = ( +/obj/machinery/power/breakerbox/activated{ + RCon_tag = "Central Substation Bypass" + }, +/turf/simulated/floor, +/area/maintenance/substation/central) +"bYg" = ( +/obj/random/obstruction, +/turf/simulated/floor/plating, +/area/maintenance/central) +"bYh" = ( +/obj/machinery/door/firedoor/border_only, +/obj/machinery/door/airlock/maintenance{ + name = "Central Maintenance Access"; + req_one_access = list(12,19) + }, +/turf/simulated/floor/plating, +/area/maintenance/central) +"bYi" = ( +/obj/structure/closet/crate, +/obj/item/weapon/tool/crowbar/red, +/obj/item/weapon/tool/crowbar/red, +/obj/effect/floor_decal/industrial/warning/corner{ + dir = 8 + }, +/obj/machinery/firealarm{ + dir = 8; + pixel_x = -24 + }, +/obj/item/device/radio/intercom{ + dir = 1; + name = "Station Intercom (General)"; + pixel_y = 21 + }, +/turf/simulated/floor/tiled, +/area/teleporter) +"bYj" = ( +/turf/simulated/floor/tiled, +/area/teleporter) +"bYk" = ( +/obj/effect/floor_decal/steeldecal/steel_decals4{ + dir = 9 + }, +/obj/effect/floor_decal/steeldecal/steel_decals4{ + dir = 4 + }, +/turf/simulated/floor/tiled, +/area/teleporter) +"bYl" = ( +/obj/machinery/hologram/holopad, +/obj/effect/floor_decal/industrial/outline/grey, +/turf/simulated/floor/tiled, +/area/teleporter) +"bYm" = ( +/obj/machinery/power/apc{ + dir = 1; + name = "north bump"; + pixel_x = 0; + pixel_y = 24 + }, +/obj/structure/cable/green{ + d2 = 2; + icon_state = "0-2" + }, +/obj/machinery/light_switch{ + pixel_x = 11; + pixel_y = 24 + }, +/obj/effect/floor_decal/industrial/warning/corner, +/turf/simulated/floor/tiled, +/area/teleporter) +"bYn" = ( +/obj/machinery/atmospherics/unary/vent_scrubber/on{ + dir = 4 + }, +/obj/effect/floor_decal/borderfloor{ + dir = 8 + }, +/obj/effect/floor_decal/corner/purple/border{ + dir = 8 + }, +/turf/simulated/floor/tiled, +/area/hallway/primary/seconddeck/fscenter) +"bYo" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 10 + }, +/turf/simulated/floor/tiled/monotile, +/area/hallway/primary/seconddeck/fscenter) +"bYp" = ( +/obj/effect/floor_decal/borderfloor/corner, +/obj/effect/floor_decal/corner/green/bordercorner, +/turf/simulated/floor/tiled, +/area/hallway/primary/seconddeck/fscenter) +"bYq" = ( +/obj/structure/flora/ausbushes/sparsegrass, +/turf/simulated/floor/grass, +/area/hallway/primary/seconddeck/fscenter) +"bYr" = ( +/obj/machinery/portable_atmospherics/hydroponics/soil, +/obj/structure/sink/kitchen{ + pixel_y = 28 + }, +/turf/simulated/floor/grass, +/area/hallway/primary/seconddeck/fscenter) +"bYs" = ( +/obj/structure/table/rack{ + dir = 8; + layer = 2.6 + }, +/obj/random/maintenance/research, +/obj/random/maintenance/research, +/obj/random/maintenance/clean, +/turf/simulated/floor/plating, +/area/maintenance/research) +"bYt" = ( +/obj/effect/floor_decal/industrial/warning{ + icon_state = "warning"; + dir = 1 + }, +/obj/structure/table/standard, +/obj/item/weapon/hand_labeler, +/obj/item/weapon/pen, +/obj/item/weapon/packageWrap, +/obj/item/weapon/packageWrap, +/obj/machinery/requests_console{ + department = "Science"; + departmentType = 2; + name = "Science Requests Console"; + pixel_x = -30; + pixel_y = 0 + }, +/obj/effect/floor_decal/borderfloorwhite/corner{ + dir = 8 + }, +/obj/effect/floor_decal/corner/purple/bordercorner{ + dir = 8 + }, +/turf/simulated/floor/tiled/white, +/area/rnd/lab) +"bYu" = ( +/obj/effect/floor_decal/industrial/warning{ + icon_state = "warning"; + dir = 1 + }, +/turf/simulated/floor/tiled/white, +/area/rnd/lab) +"bYv" = ( +/obj/effect/floor_decal/industrial/warning/corner{ + dir = 1 + }, +/turf/simulated/floor/tiled/white, +/area/rnd/lab) +"bYw" = ( +/obj/machinery/atmospherics/unary/vent_pump/on{ + dir = 1 + }, +/obj/effect/floor_decal/borderfloorwhite{ + dir = 4 + }, +/obj/effect/floor_decal/corner/purple/border{ + dir = 4 + }, +/turf/simulated/floor/tiled/white, +/area/rnd/lab) +"bYx" = ( +/obj/machinery/light{ + dir = 1 + }, +/obj/structure/extinguisher_cabinet{ + pixel_y = 30 + }, +/obj/effect/floor_decal/borderfloorwhite{ + dir = 9 + }, +/obj/effect/floor_decal/corner/purple/border{ + dir = 9 + }, +/turf/simulated/floor/tiled/white, +/area/rnd/research_foyer) +"bYy" = ( +/obj/effect/floor_decal/industrial/warning/corner{ + dir = 4 + }, +/obj/machinery/power/apc{ + dir = 1; + name = "north bump"; + pixel_x = 0; + pixel_y = 24 + }, +/obj/structure/cable/green{ + d2 = 4; + icon_state = "0-4" + }, +/obj/effect/floor_decal/borderfloorwhite/corner{ + dir = 1 + }, +/obj/effect/floor_decal/corner/purple/bordercorner{ + dir = 1 + }, +/turf/simulated/floor/tiled/white, +/area/rnd/research_foyer) +"bYz" = ( +/obj/effect/floor_decal/industrial/warning{ + dir = 1 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/obj/structure/cable/green{ + d1 = 1; + d2 = 8; + icon_state = "1-8" + }, +/obj/structure/disposalpipe/segment, +/turf/simulated/floor/tiled/white, +/area/rnd/research_foyer) +"bYA" = ( +/obj/effect/floor_decal/industrial/warning/corner{ + dir = 1; + icon_state = "warningcorner" + }, +/obj/machinery/alarm{ + pixel_y = 22 + }, +/obj/effect/floor_decal/borderfloorwhite/corner{ + dir = 4 + }, +/obj/effect/floor_decal/corner/purple/bordercorner{ + dir = 4 + }, +/turf/simulated/floor/tiled/white, +/area/rnd/research_foyer) +"bYB" = ( +/obj/machinery/firealarm{ + pixel_y = 24 + }, +/obj/effect/floor_decal/borderfloorwhite{ + dir = 5 + }, +/obj/effect/floor_decal/corner/purple/border{ + dir = 5 + }, +/turf/simulated/floor/tiled/white, +/area/rnd/research_foyer) +"bYC" = ( +/obj/effect/floor_decal/industrial/warning{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/turf/simulated/floor/tiled/white, +/area/assembly/robotics) +"bYD" = ( +/obj/effect/floor_decal/industrial/outline/yellow, +/turf/simulated/floor/tiled, +/area/assembly/robotics) +"bYE" = ( +/obj/effect/floor_decal/industrial/warning{ + icon_state = "warning"; + dir = 8 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/obj/machinery/newscaster{ + pixel_x = 30; + pixel_y = 0 + }, +/obj/structure/sink{ + dir = 4; + icon_state = "sink"; + pixel_x = 11; + pixel_y = 0 + }, +/turf/simulated/floor/tiled/white, +/area/assembly/robotics) +"bYF" = ( +/turf/simulated/wall, +/area/assembly/chargebay) +"bYG" = ( +/obj/machinery/door/firedoor/glass, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/machinery/door/airlock/glass_research{ + name = "Mech Bay"; + req_access = list(29) + }, +/obj/structure/cable/green{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/turf/simulated/floor/tiled/techfloor, +/area/assembly/chargebay) +"bYH" = ( +/obj/machinery/door/firedoor/glass, +/obj/machinery/door/airlock/glass_research{ + name = "Mech Bay"; + req_access = list(29) + }, +/turf/simulated/floor/tiled/techfloor, +/area/assembly/chargebay) +"bYI" = ( +/turf/simulated/wall/r_wall, +/area/assembly/chargebay) +"bYJ" = ( +/obj/structure/closet/bombcloset, +/obj/machinery/alarm{ + dir = 4; + icon_state = "alarm0"; + pixel_x = -22; + pixel_y = 0 + }, +/obj/machinery/light{ + dir = 8 + }, +/obj/effect/floor_decal/borderfloorwhite{ + dir = 8 + }, +/obj/effect/floor_decal/corner/purple/border{ + dir = 8 + }, +/turf/simulated/floor/tiled/white, +/area/rnd/misc_lab) +"bYK" = ( +/obj/structure/cable/green{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 5 + }, +/turf/simulated/floor/tiled/white, +/area/rnd/misc_lab) +"bYL" = ( +/obj/machinery/atmospherics/unary/vent_pump/on{ + dir = 8 + }, +/obj/effect/floor_decal/borderfloorwhite{ + dir = 4 + }, +/obj/effect/floor_decal/corner/purple/border{ + dir = 4 + }, +/turf/simulated/floor/tiled/white, +/area/rnd/misc_lab) +"bYM" = ( +/obj/structure/cable/green{ + d2 = 2; + icon_state = "0-2" + }, +/obj/effect/wingrille_spawn/reinforced, +/obj/machinery/door/blast/regular{ + density = 0; + dir = 2; + icon_state = "pdoor0"; + id = "misclab"; + name = "Test Chamber Blast Doors"; + opacity = 0 + }, +/turf/simulated/floor/plating, +/area/rnd/misc_lab) +"bYN" = ( +/obj/item/device/radio/intercom{ + dir = 4; + name = "Station Intercom (General)"; + pixel_x = 21 + }, +/turf/simulated/floor/reinforced, +/area/rnd/misc_lab) +"bYO" = ( +/obj/machinery/alarm/server{ + dir = 4; + pixel_x = -22; + pixel_y = 0 + }, +/obj/machinery/atmospherics/unary/vent_pump{ + dir = 1; + icon_state = "map_vent_out"; + use_power = 1 + }, +/turf/simulated/floor/bluegrid{ + name = "Server Base"; + nitrogen = 500; + oxygen = 0; + temperature = 80 + }, +/area/server) +"bYP" = ( +/turf/simulated/floor/tiled/dark, +/area/server) +"bYQ" = ( +/obj/machinery/atmospherics/unary/vent_pump{ + dir = 1; + external_pressure_bound = 0; + external_pressure_bound_default = 0; + icon_state = "map_vent_in"; + initialize_directions = 1; + internal_pressure_bound = 4000; + internal_pressure_bound_default = 4000; + pressure_checks = 2; + pressure_checks_default = 2; + pump_direction = 0; + use_power = 1 + }, +/turf/simulated/floor/bluegrid{ + name = "Server Base"; + nitrogen = 500; + oxygen = 0; + temperature = 80 + }, +/area/server) +"bYR" = ( +/obj/machinery/status_display, +/turf/simulated/wall/r_wall, +/area/rnd/mixing) +"bYS" = ( +/turf/simulated/floor/airless, +/area/medical/virology) +"bYT" = ( +/obj/machinery/atmospherics/pipe/manifold/visible/black{ + dir = 8 + }, +/obj/structure/lattice, +/obj/structure/grille, +/turf/space, +/area/space) +"bYU" = ( +/obj/machinery/door/firedoor/border_only, +/obj/effect/wingrille_spawn/reinforced, +/obj/machinery/door/blast/regular{ + density = 0; + icon_state = "pdoor0"; + id = "EngineRadiatorViewport1"; + name = "Engine Radiator Viewport Shutter"; + opacity = 0 + }, +/obj/machinery/atmospherics/pipe/simple/visible/green{ + dir = 9; + icon_state = "intact" + }, +/turf/simulated/floor, +/area/engineering/engine_room) +"bYV" = ( +/obj/effect/floor_decal/industrial/warning{ + icon_state = "warning"; + dir = 4 + }, +/turf/simulated/floor, +/area/engineering/engine_room) +"bYW" = ( +/obj/effect/floor_decal/industrial/outline/yellow, +/turf/simulated/floor, +/area/engineering/engine_room) +"bYX" = ( +/obj/effect/floor_decal/industrial/warning{ + icon_state = "warning"; + dir = 8 + }, +/turf/simulated/floor, +/area/engineering/engine_room) +"bYY" = ( +/obj/machinery/atmospherics/pipe/manifold/visible/cyan{ + dir = 8; + icon_state = "map" + }, +/turf/simulated/floor, +/area/engineering/engine_room) +"bYZ" = ( +/obj/machinery/atmospherics/pipe/manifold/visible/cyan, +/obj/machinery/meter, +/turf/simulated/floor, +/area/engineering/engine_room) +"bZa" = ( +/obj/machinery/atmospherics/pipe/simple/visible/cyan{ + dir = 9 + }, +/turf/simulated/floor, +/area/engineering/engine_room) +"bZb" = ( +/obj/machinery/recharge_station, +/obj/effect/floor_decal/industrial/outline/yellow, +/turf/simulated/floor/plating, +/area/engineering/drone_fabrication) +"bZc" = ( +/obj/machinery/cryopod/robot{ + dir = 4 + }, +/obj/effect/floor_decal/industrial/outline/yellow, +/turf/simulated/floor/plating, +/area/engineering/drone_fabrication) +"bZd" = ( +/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{ + dir = 8 + }, +/obj/machinery/newscaster{ + pixel_x = -30; + pixel_y = 0 + }, +/obj/structure/disposalpipe/segment, +/turf/simulated/floor/tiled, +/area/engineering/hallway/engineer_hallway) +"bZe" = ( +/obj/machinery/atmospherics/unary/vent_scrubber/on{ + dir = 8 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/turf/simulated/floor/tiled, +/area/engineering/hallway/engineer_hallway) +"bZf" = ( +/obj/structure/closet/secure_closet/engineering_electrical, +/obj/effect/floor_decal/industrial/outline/yellow, +/obj/machinery/alarm{ + dir = 4; + icon_state = "alarm0"; + pixel_x = -22 + }, +/turf/simulated/floor/tiled/dark, +/area/engineering/workshop) +"bZg" = ( +/obj/effect/floor_decal/borderfloor{ + dir = 10 + }, +/obj/effect/floor_decal/corner/yellow/border{ + dir = 10 + }, +/turf/simulated/floor/tiled, +/area/engineering/workshop) +"bZh" = ( +/obj/effect/floor_decal/borderfloor, +/obj/effect/floor_decal/corner/yellow/border, +/turf/simulated/floor/tiled, +/area/engineering/workshop) +"bZi" = ( +/obj/machinery/vending/engivend, +/obj/structure/window/reinforced{ + dir = 4; + health = 1e+006 + }, +/obj/effect/floor_decal/industrial/outline/yellow, +/turf/simulated/floor/tiled, +/area/engineering/workshop) +"bZj" = ( +/obj/effect/floor_decal/borderfloor{ + dir = 6 + }, +/obj/effect/floor_decal/corner/yellow/border{ + dir = 6 + }, +/turf/simulated/floor/tiled, +/area/engineering/workshop) +"bZk" = ( +/obj/structure/table/steel_reinforced, +/obj/machinery/cell_charger, +/obj/item/weapon/cell/high{ + charge = 100; + maxcharge = 15000 + }, +/obj/item/weapon/tool/wrench, +/obj/machinery/status_display{ + pixel_x = 0; + pixel_y = -32 + }, +/turf/simulated/floor/tiled/dark, +/area/engineering/workshop) +"bZl" = ( +/obj/machinery/computer/security/telescreen{ + desc = "Used to monitor the engine room."; + layer = 3.3; + name = "Engine Monitor"; + network = list("Engine"); + pixel_x = 0; + pixel_y = -34 + }, +/obj/machinery/computer/atmos_alert, +/obj/machinery/newscaster{ + pixel_x = -30; + pixel_y = 0 + }, +/obj/machinery/light{ + icon_state = "tube1"; + dir = 8 + }, +/obj/effect/floor_decal/borderfloor{ + dir = 10 + }, +/turf/simulated/floor/tiled, +/area/crew_quarters/heads/sc/chief) +"bZm" = ( +/obj/effect/floor_decal/borderfloor, +/obj/effect/floor_decal/corner/blue/border, +/turf/simulated/floor/tiled, +/area/crew_quarters/heads/sc/chief) +"bZn" = ( +/obj/machinery/camera/network/engineering{ + c_tag = "ENG - Chief Engineer's Office"; + dir = 1 + }, +/obj/machinery/button/remote/airlock{ + desc = "A remote control-switch for the engine core airlock hatch bolts."; + id = "engine_access_hatch"; + name = "Engine Hatch Bolt Control"; + pixel_x = -6; + pixel_y = -44; + specialfunctions = 4 + }, +/obj/machinery/button/remote/blast_door{ + desc = "A remote control-switch for engine core."; + id = "EngineVent"; + name = "Engine Ventillatory Control"; + pixel_x = 6; + pixel_y = -44 + }, +/obj/machinery/keycard_auth{ + pixel_x = 0; + pixel_y = -24 + }, +/obj/machinery/button/remote/blast_door{ + id = "englockdown"; + name = "Engineering Lockdown"; + pixel_x = -6; + pixel_y = -34; + req_access = list(10) + }, +/obj/machinery/button/remote/blast_door{ + id = "atmoslockdown"; + name = "Atmospherics Lockdown"; + pixel_x = 6; + pixel_y = -34; + req_access = list(10) + }, +/obj/effect/floor_decal/borderfloor, +/obj/effect/floor_decal/corner/blue/border, +/turf/simulated/floor/tiled, +/area/crew_quarters/heads/sc/chief) +"bZo" = ( +/obj/structure/cable/green{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/obj/effect/floor_decal/borderfloor, +/obj/effect/floor_decal/corner/blue/border, +/turf/simulated/floor/tiled, +/area/crew_quarters/heads/sc/chief) +"bZp" = ( +/obj/effect/floor_decal/borderfloor{ + dir = 6 + }, +/obj/effect/floor_decal/corner/blue/border{ + dir = 6 + }, +/turf/simulated/floor/tiled, +/area/crew_quarters/heads/sc/chief) +"bZq" = ( +/obj/machinery/door/firedoor/glass, +/obj/structure/cable/green, +/obj/effect/wingrille_spawn/reinforced/polarized{ + id = "ceoffice" + }, +/turf/simulated/floor, +/area/crew_quarters/heads/sc/chief) +"bZr" = ( +/obj/machinery/door/firedoor/glass, +/obj/effect/wingrille_spawn/reinforced, +/turf/simulated/floor, +/area/engineering/break_room) +"bZs" = ( +/obj/structure/bed/chair/office/dark, +/obj/effect/floor_decal/corner/white/diagonal, +/obj/machinery/light{ + dir = 8; + icon_state = "tube1"; + pixel_y = 0 + }, +/turf/simulated/floor/tiled, +/area/engineering/break_room) +"bZt" = ( +/obj/effect/floor_decal/corner/white/diagonal, +/obj/item/weapon/storage/box/donkpockets{ + pixel_x = 3; + pixel_y = 2 + }, +/obj/item/weapon/storage/box/glasses/square, +/obj/machinery/newscaster{ + pixel_x = 30; + pixel_y = 0 + }, +/obj/machinery/light{ + dir = 4 + }, +/obj/structure/table/woodentable, +/turf/simulated/floor/tiled, +/area/engineering/break_room) +"bZu" = ( +/obj/machinery/door/airlock{ + name = "Unit 1" + }, +/turf/simulated/floor/tiled/freezer, +/area/engineering/engi_restroom) +"bZv" = ( +/obj/machinery/door/airlock{ + name = "Unit 2" + }, +/turf/simulated/floor/tiled/freezer, +/area/engineering/engi_restroom) +"bZw" = ( +/obj/structure/table/rack{ + dir = 1 + }, +/obj/random/cigarettes, +/obj/random/tech_supply, +/obj/random/technology_scanner, +/obj/random/toolbox, +/turf/simulated/floor/plating, +/area/maintenance/engineering) +"bZx" = ( +/obj/structure/flora/ausbushes/sunnybush, +/turf/simulated/floor/grass, +/area/hallway/primary/seconddeck/fpcenter) +"bZy" = ( +/obj/structure/flora/ausbushes/sparsegrass, +/obj/structure/flora/ausbushes/ywflowers, +/turf/simulated/floor/grass, +/area/hallway/primary/seconddeck/fpcenter) +"bZz" = ( +/obj/machinery/atmospherics/unary/vent_scrubber/on{ + dir = 4 + }, +/obj/effect/floor_decal/borderfloor{ + dir = 8 + }, +/obj/effect/floor_decal/corner/green/border{ + dir = 8 + }, +/turf/simulated/floor/tiled, +/area/hallway/primary/seconddeck/fpcenter) +"bZA" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 10 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/turf/simulated/floor/tiled/monotile, +/area/hallway/primary/seconddeck/fpcenter) +"bZB" = ( +/obj/structure/disposalpipe/junction{ + dir = 1 + }, +/obj/effect/floor_decal/borderfloor{ + dir = 4 + }, +/obj/effect/floor_decal/corner/red/border{ + dir = 4 + }, +/obj/machinery/alarm{ + dir = 8; + icon_state = "alarm0"; + pixel_x = 22 + }, +/turf/simulated/floor/tiled, +/area/hallway/primary/seconddeck/fpcenter) +"bZC" = ( +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/turf/simulated/wall, +/area/maintenance/substation/central) +"bZD" = ( +/obj/structure/lattice, +/obj/structure/disposalpipe/segment{ + dir = 2; + icon_state = "pipe-c" + }, +/obj/structure/cable/green{ + d1 = 32; + d2 = 4; + icon_state = "32-4" + }, +/obj/machinery/atmospherics/pipe/zpipe/down/supply{ + dir = 4 + }, +/obj/structure/railing{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/zpipe/down/scrubbers{ + dir = 4 + }, +/turf/simulated/open, +/area/maintenance/substation/central) +"bZE" = ( +/obj/structure/cable/green{ + d2 = 2; + icon_state = "0-2" + }, +/obj/structure/cable/green, +/obj/effect/floor_decal/industrial/warning{ + icon_state = "warning"; + dir = 8 + }, +/obj/structure/cable/green{ + d2 = 8; + icon_state = "0-8" + }, +/obj/machinery/power/sensor{ + name = "Powernet Sensor - Central Subgrid"; + name_tag = "Central Subgrid" + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 10 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 10 + }, +/turf/simulated/floor/plating, +/area/maintenance/substation/central) +"bZF" = ( +/obj/machinery/power/terminal{ + dir = 4 + }, +/obj/structure/cable, +/obj/effect/floor_decal/industrial/warning{ + icon_state = "warning"; + dir = 4 + }, +/turf/simulated/floor, +/area/maintenance/substation/central) +"bZG" = ( +/obj/machinery/power/smes/buildable{ + charge = 0; + RCon_tag = "Substation - Central" + }, +/obj/structure/cable/green, +/obj/structure/cable/green{ + d2 = 2; + icon_state = "0-2" + }, +/turf/simulated/floor, +/area/maintenance/substation/central) +"bZH" = ( +/obj/machinery/atmospherics/pipe/tank/air, +/turf/simulated/floor/plating, +/area/maintenance/central) +"bZI" = ( +/obj/effect/floor_decal/industrial/warning{ + icon_state = "warning"; + dir = 4 + }, +/obj/structure/closet/emcloset, +/obj/machinery/light/small{ + dir = 1 + }, +/turf/simulated/floor/plating, +/area/maintenance/central) +"bZJ" = ( +/obj/structure/catwalk, +/turf/simulated/floor/plating, +/area/maintenance/central) +"bZK" = ( +/obj/structure/table/standard, +/obj/item/device/radio/beacon, +/obj/item/device/radio/beacon, +/obj/machinery/light{ + dir = 8 + }, +/turf/simulated/floor/tiled/dark, +/area/teleporter) +"bZL" = ( +/obj/item/weapon/stool/padded, +/obj/effect/floor_decal/industrial/warning{ + dir = 10 + }, +/turf/simulated/floor/tiled, +/area/teleporter) +"bZM" = ( +/obj/effect/floor_decal/industrial/warning, +/turf/simulated/floor/tiled, +/area/teleporter) +"bZN" = ( +/obj/machinery/bluespace_beacon, +/obj/effect/floor_decal/industrial/warning/corner{ + dir = 8 + }, +/turf/simulated/floor/tiled, +/area/teleporter) +"bZO" = ( +/obj/structure/cable/green{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/obj/effect/floor_decal/industrial/warning{ + icon_state = "warning"; + dir = 4 + }, +/turf/simulated/floor/tiled, +/area/teleporter) +"bZP" = ( +/obj/structure/dispenser{ + phorontanks = 0 + }, +/turf/simulated/floor/tiled/dark, +/area/teleporter) +"bZQ" = ( +/obj/effect/floor_decal/borderfloor{ + dir = 8 + }, +/obj/effect/floor_decal/corner/purple/border{ + dir = 8 + }, +/obj/machinery/alarm{ + dir = 4; + icon_state = "alarm0"; + pixel_x = -22 + }, +/turf/simulated/floor/tiled, +/area/hallway/primary/seconddeck/fscenter) +"bZR" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 6 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/turf/simulated/floor/tiled/monotile, +/area/hallway/primary/seconddeck/fscenter) +"bZS" = ( +/obj/machinery/atmospherics/unary/vent_pump/on{ + dir = 8 + }, +/obj/effect/floor_decal/borderfloor{ + dir = 4 + }, +/obj/effect/floor_decal/corner/green/border{ + dir = 4 + }, +/turf/simulated/floor/tiled, +/area/hallway/primary/seconddeck/fscenter) +"bZT" = ( +/obj/structure/flora/ausbushes/leafybush, +/turf/simulated/floor/grass, +/area/hallway/primary/seconddeck/fscenter) +"bZU" = ( +/obj/structure/filingcabinet/chestdrawer, +/obj/effect/floor_decal/borderfloorwhite{ + dir = 10 + }, +/obj/effect/floor_decal/corner/purple/border{ + dir = 10 + }, +/turf/simulated/floor/tiled/white, +/area/rnd/lab) +"bZV" = ( +/obj/structure/bed/chair/office/light, +/obj/effect/floor_decal/borderfloorwhite/corner{ + dir = 8 + }, +/obj/effect/floor_decal/corner/purple/bordercorner{ + dir = 8 + }, +/turf/simulated/floor/tiled/white, +/area/rnd/lab) +"bZW" = ( +/turf/simulated/floor/tiled/white, +/area/rnd/lab) +"bZX" = ( +/obj/structure/bed/chair/office/light{ + dir = 4 + }, +/obj/effect/landmark/start{ + name = "Scientist" + }, +/obj/effect/floor_decal/borderfloorwhite{ + dir = 4 + }, +/obj/effect/floor_decal/corner/purple/border{ + dir = 4 + }, +/turf/simulated/floor/tiled/white, +/area/rnd/lab) +"bZY" = ( +/obj/structure/table/reinforced, +/obj/machinery/door/firedoor/glass, +/obj/machinery/door/window/westleft{ + name = "Research and Development Desk"; + req_access = list(7) + }, +/turf/simulated/floor/tiled/white, +/area/rnd/lab) +"bZZ" = ( +/obj/machinery/atmospherics/unary/vent_pump/on{ + dir = 4 + }, +/obj/effect/floor_decal/borderfloorwhite{ + dir = 8 + }, +/obj/effect/floor_decal/corner/purple/border{ + dir = 8 + }, +/turf/simulated/floor/tiled/white, +/area/rnd/research_foyer) +"caa" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/turf/simulated/floor/tiled/white, +/area/rnd/research_foyer) +"cab" = ( +/obj/machinery/hologram/holopad, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 9 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 5 + }, +/obj/effect/floor_decal/industrial/outline/grey, +/obj/item/device/radio/beacon, +/obj/structure/disposalpipe/segment, +/turf/simulated/floor/tiled/white, +/area/rnd/research_foyer) +"cac" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, +/turf/simulated/floor/tiled/white, +/area/rnd/research_foyer) +"cad" = ( +/obj/machinery/atmospherics/unary/vent_scrubber/on{ + dir = 8 + }, +/obj/effect/floor_decal/borderfloorwhite{ + dir = 4 + }, +/obj/effect/floor_decal/corner/purple/border{ + dir = 4 + }, +/turf/simulated/floor/tiled/white, +/area/rnd/research_foyer) +"cae" = ( +/obj/structure/table/reinforced, +/obj/machinery/door/firedoor/glass, +/obj/machinery/door/window/eastleft{ + name = "Robotics Desk"; + req_access = list(29) + }, +/turf/simulated/floor/tiled/white, +/area/assembly/robotics) +"caf" = ( +/obj/effect/floor_decal/industrial/warning/corner{ + dir = 4 + }, +/obj/machinery/atmospherics/unary/vent_pump/on{ + dir = 1 + }, +/obj/item/weapon/stool/padded, +/obj/effect/landmark/start{ + name = "Roboticist" + }, +/turf/simulated/floor/tiled/white, +/area/assembly/robotics) +"cag" = ( +/obj/effect/floor_decal/industrial/warning{ + icon_state = "warning"; + dir = 1 + }, +/turf/simulated/floor/tiled/white, +/area/assembly/robotics) +"cah" = ( +/obj/effect/floor_decal/industrial/warning/corner{ + dir = 1 + }, +/obj/machinery/atmospherics/unary/vent_scrubber/on{ + dir = 1 + }, +/turf/simulated/floor/tiled/white, +/area/assembly/robotics) +"cai" = ( +/obj/machinery/door/firedoor/border_only, +/obj/effect/wingrille_spawn/reinforced, +/turf/simulated/floor/plating, +/area/assembly/chargebay) +"caj" = ( +/obj/structure/table/steel_reinforced, +/obj/machinery/atmospherics/unary/vent_pump/on{ + dir = 4 + }, +/obj/machinery/cell_charger, +/obj/machinery/firealarm{ + pixel_y = 24 + }, +/turf/simulated/floor/tiled/techmaint, +/area/assembly/chargebay) +"cak" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 5 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 9 + }, +/obj/structure/cable/green{ + d1 = 1; + d2 = 4; + icon_state = "1-4" + }, +/turf/simulated/floor/tiled/techfloor, +/area/assembly/chargebay) +"cal" = ( +/obj/machinery/atmospherics/unary/vent_scrubber/on{ + dir = 8 + }, +/obj/structure/cable/green{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/turf/simulated/floor/tiled/techfloor, +/area/assembly/chargebay) +"cam" = ( +/obj/structure/table/steel_reinforced, +/obj/machinery/cell_charger, +/obj/machinery/power/apc{ + dir = 4; + name = "east bump"; + pixel_x = 24 + }, +/obj/machinery/light_switch{ + dir = 2; + name = "light switch "; + pixel_x = 36; + pixel_y = 0 + }, +/obj/structure/cable/green{ + d2 = 8; + icon_state = "0-8" + }, +/obj/item/device/radio/intercom{ + dir = 1; + name = "Station Intercom (General)"; + pixel_y = 21 + }, +/turf/simulated/floor/tiled/techmaint, +/area/assembly/chargebay) +"can" = ( +/obj/machinery/suit_storage_unit/standard_unit, +/obj/effect/floor_decal/borderfloorwhite{ + dir = 8 + }, +/obj/effect/floor_decal/corner/purple/border{ + dir = 8 + }, +/turf/simulated/floor/tiled/white, +/area/rnd/misc_lab) +"cao" = ( +/obj/structure/cable/green{ + d1 = 1; + d2 = 4; + icon_state = "1-4" + }, +/obj/effect/floor_decal/steeldecal/steel_decals4{ + dir = 8 + }, +/obj/effect/floor_decal/steeldecal/steel_decals4{ + dir = 5 + }, +/turf/simulated/floor/tiled/white, +/area/rnd/misc_lab) +"cap" = ( +/obj/structure/cable/green{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/obj/machinery/firealarm{ + dir = 1; + pixel_x = 0; + pixel_y = -24 + }, +/obj/effect/floor_decal/borderfloorwhite{ + dir = 4 + }, +/obj/effect/floor_decal/corner/purple/border{ + dir = 4 + }, +/turf/simulated/floor/tiled/white, +/area/rnd/misc_lab) +"caq" = ( +/obj/machinery/shieldwallgen{ + anchored = 1; + req_access = list(47) + }, +/obj/structure/cable/green, +/obj/structure/cable/green{ + d2 = 8; + icon_state = "0-8" + }, +/obj/structure/window/reinforced{ + dir = 4; + health = 1e+006 + }, +/obj/structure/window/reinforced{ + dir = 1 + }, +/obj/machinery/door/blast/regular{ + density = 0; + dir = 2; + icon_state = "pdoor0"; + id = "misclab"; + name = "Test Chamber Blast Doors"; + opacity = 0 + }, +/obj/effect/floor_decal/industrial/hatch/yellow, +/turf/simulated/floor/tiled, +/area/rnd/misc_lab) +"car" = ( +/obj/machinery/light, +/turf/simulated/floor/reinforced, +/area/rnd/misc_lab) +"cas" = ( +/obj/structure/reagent_dispensers/fueltank, +/turf/simulated/floor/reinforced, +/area/rnd/misc_lab) +"cat" = ( +/obj/structure/reagent_dispensers/watertank, +/turf/simulated/floor/reinforced, +/area/rnd/misc_lab) +"cau" = ( +/obj/machinery/r_n_d/server/robotics, +/turf/simulated/floor/bluegrid{ + name = "Server Base"; + nitrogen = 500; + oxygen = 0; + temperature = 80 + }, +/area/server) +"cav" = ( +/obj/machinery/light/small, +/turf/simulated/floor/tiled/dark, +/area/server) +"caw" = ( +/obj/machinery/r_n_d/server/core, +/turf/simulated/floor/bluegrid{ + name = "Server Base"; + nitrogen = 500; + oxygen = 0; + temperature = 80 + }, +/area/server) +"cax" = ( +/turf/simulated/wall/r_wall, +/area/rnd/workshop) +"cay" = ( +/obj/machinery/computer/rdconsole/core, +/obj/effect/floor_decal/borderfloorblack{ + dir = 9 + }, +/obj/effect/floor_decal/corner/green/border{ + dir = 9 + }, +/turf/simulated/floor/tiled/dark, +/area/rnd/workshop) +"caz" = ( +/obj/structure/table/steel, +/obj/machinery/computer/security/telescreen/entertainment{ + icon_state = "frame"; + pixel_x = 0; + pixel_y = 32 + }, +/obj/effect/floor_decal/borderfloorblack{ + dir = 1 + }, +/obj/effect/floor_decal/corner/green/border{ + dir = 1 + }, +/turf/simulated/floor/tiled/dark, +/area/rnd/workshop) +"caA" = ( +/obj/structure/table/steel, +/obj/item/weapon/storage/bag/circuits/basic, +/obj/item/device/radio/intercom{ + dir = 1; + name = "Station Intercom (General)"; + pixel_y = 21 + }, +/obj/effect/floor_decal/borderfloorblack{ + dir = 5 + }, +/obj/effect/floor_decal/corner/green/border{ + dir = 5 + }, +/turf/simulated/floor/tiled/dark, +/area/rnd/workshop) +"caB" = ( +/obj/structure/sign/poster{ + pixel_y = -32 + }, +/turf/simulated/wall, +/area/rnd/workshop) +"caC" = ( +/turf/simulated/floor/tiled/white, +/area/hallway/secondary/seconddeck/research_medical) +"caD" = ( +/obj/structure/table/glass, +/obj/item/weapon/folder/white, +/obj/item/weapon/pen, +/turf/simulated/floor/tiled/white, +/area/hallway/secondary/seconddeck/research_medical) +"caE" = ( +/obj/structure/table/glass, +/obj/random/maintenance/medical, +/obj/random/maintenance/medical, +/turf/simulated/floor/tiled/white, +/area/hallway/secondary/seconddeck/research_medical) +"caF" = ( +/obj/random/obstruction, +/turf/simulated/floor/plating, +/area/hallway/secondary/seconddeck/research_medical) +"caG" = ( +/turf/simulated/wall/r_wall, +/area/hallway/secondary/seconddeck/research_medical) +"caH" = ( +/turf/simulated/wall/r_wall, +/area/medical/virology) +"caI" = ( +/obj/machinery/door/firedoor/border_only, +/obj/effect/wingrille_spawn/reinforced, +/turf/simulated/floor/plating, +/area/medical/virology) +"caJ" = ( +/obj/structure/lattice, +/obj/machinery/atmospherics/pipe/manifold/visible/black{ + dir = 4 + }, +/obj/structure/grille, +/turf/space, +/area/space) +"caK" = ( +/obj/effect/floor_decal/industrial/warning{ + icon_state = "warning"; + dir = 4 + }, +/obj/machinery/light{ + icon_state = "tube1"; + dir = 8 + }, +/turf/simulated/floor, +/area/engineering/engine_room) +"caL" = ( +/obj/machinery/atmospherics/pipe/simple/visible/cyan, +/obj/machinery/light{ + dir = 4 + }, +/turf/simulated/floor, +/area/engineering/engine_room) +"caM" = ( +/turf/simulated/wall/r_wall, +/area/engineering/engine_airlock) +"caN" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/obj/machinery/status_display{ + density = 0; + layer = 4; + pixel_x = -32; + pixel_y = 0 + }, +/obj/structure/disposalpipe/segment, +/turf/simulated/floor/tiled, +/area/engineering/hallway/engineer_hallway) +"caO" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/machinery/ai_status_display{ + pixel_x = 32; + pixel_y = 0 + }, +/turf/simulated/floor/tiled, +/area/engineering/hallway/engineer_hallway) +"caP" = ( +/obj/structure/table/steel_reinforced, +/obj/item/stack/material/glass{ + amount = 50 + }, +/obj/item/stack/material/glass{ + amount = 50 + }, +/obj/item/stack/material/glass{ + amount = 50 + }, +/obj/item/stack/material/glass{ + amount = 50 + }, +/obj/machinery/requests_console{ + announcementConsole = 0; + department = "Engineering"; + departmentType = 3; + name = "Engineering RC"; + pixel_x = 0; + pixel_y = -32 + }, +/obj/machinery/ai_status_display{ + pixel_x = -32; + pixel_y = 0 + }, +/turf/simulated/floor/tiled/dark, +/area/engineering/workshop) +"caQ" = ( +/obj/structure/table/steel_reinforced, +/obj/item/stack/material/steel{ + amount = 50 + }, +/obj/item/stack/material/steel{ + amount = 50 + }, +/obj/item/stack/material/steel{ + amount = 50 + }, +/obj/item/stack/material/steel{ + amount = 50 + }, +/turf/simulated/floor/tiled/dark, +/area/engineering/workshop) +"caR" = ( +/obj/structure/table/steel_reinforced, +/obj/item/stack/material/plasteel{ + amount = 10 + }, +/obj/item/stack/material/plasteel{ + amount = 10 + }, +/obj/item/stack/material/plasteel{ + amount = 10 + }, +/obj/item/stack/material/plastic{ + amount = 50 + }, +/obj/item/stack/material/plastic{ + amount = 50 + }, +/obj/item/device/radio/intercom{ + name = "Station Intercom (General)"; + pixel_y = -21 + }, +/turf/simulated/floor/tiled/dark, +/area/engineering/workshop) +"caS" = ( +/obj/structure/window/reinforced{ + dir = 4; + health = 1e+006 + }, +/obj/structure/table/steel_reinforced, +/obj/item/stack/rods{ + amount = 50 + }, +/obj/item/stack/rods{ + amount = 50 + }, +/obj/item/weapon/airlock_electronics, +/obj/item/weapon/airlock_electronics, +/obj/item/weapon/cell/high, +/obj/item/stack/material/glass/phoronrglass{ + amount = 20 + }, +/turf/simulated/floor/tiled/dark, +/area/engineering/workshop) +"caT" = ( +/obj/structure/window/reinforced{ + dir = 8 + }, +/obj/structure/table/steel_reinforced, +/obj/item/weapon/storage/toolbox/mechanical{ + pixel_y = 5 + }, +/obj/item/weapon/storage/toolbox/mechanical{ + pixel_y = 5 + }, +/obj/item/weapon/storage/toolbox/electrical, +/obj/structure/extinguisher_cabinet{ + pixel_y = -30 + }, +/turf/simulated/floor/tiled/dark, +/area/engineering/workshop) +"caU" = ( +/obj/structure/table/steel_reinforced, +/obj/item/weapon/storage/belt/utility, +/obj/item/weapon/storage/belt/utility, +/obj/item/stack/cable_coil{ + pixel_x = 3; + pixel_y = 3 + }, +/obj/item/stack/cable_coil{ + pixel_x = 3; + pixel_y = 3 + }, +/obj/machinery/newscaster{ + pixel_y = -30 + }, +/obj/random/tech_supply, +/obj/random/tech_supply, +/turf/simulated/floor/tiled/dark, +/area/engineering/workshop) +"caV" = ( +/obj/structure/table/steel_reinforced, +/obj/item/device/radio/off{ + pixel_y = 6 + }, +/obj/item/device/radio/off{ + pixel_x = 6; + pixel_y = 4 + }, +/obj/item/device/radio/off{ + pixel_x = -6; + pixel_y = 4 + }, +/obj/item/device/radio/off, +/turf/simulated/floor/tiled/dark, +/area/engineering/workshop) +"caW" = ( +/turf/simulated/wall/r_wall, +/area/engineering/workshop) +"caX" = ( +/obj/machinery/button/remote/driver{ + id = "enginecore"; + name = "Emergency Core Eject"; + pixel_x = 0; + pixel_y = -21 + }, +/obj/structure/window/basic{ + dir = 1 + }, +/turf/simulated/floor/tiled/freezer, +/area/crew_quarters/heads/sc/chief) +"caY" = ( +/obj/structure/table/reinforced, +/obj/structure/cable/green, +/obj/machinery/power/apc{ + dir = 2; + name = "south bump"; + pixel_y = -24 + }, +/obj/machinery/light_switch{ + pixel_x = 12; + pixel_y = -24 + }, +/obj/item/weapon/rcd_ammo, +/obj/item/weapon/rcd_ammo, +/obj/item/weapon/rcd_ammo, +/obj/item/weapon/rcd_ammo, +/obj/item/weapon/rcd, +/obj/machinery/button/windowtint{ + id = "ceoffice"; + pixel_x = -12; + pixel_y = -24 + }, +/obj/item/weapon/cell/high{ + charge = 100; + maxcharge = 15000 + }, +/obj/item/weapon/cell/high{ + charge = 100; + maxcharge = 15000 + }, +/turf/simulated/floor/tiled/dark, +/area/crew_quarters/heads/sc/chief) +"caZ" = ( +/obj/structure/table/rack, +/obj/structure/window/reinforced{ + dir = 4; + health = 1e+006 + }, +/obj/structure/window/reinforced, +/obj/structure/window/reinforced{ + dir = 8 + }, +/obj/item/clothing/mask/breath, +/obj/item/weapon/rig/ce/equipped, +/obj/machinery/door/window/northright{ + name = "Chief Engineer Suit Storage" + }, +/turf/simulated/floor/tiled/dark, +/area/crew_quarters/heads/sc/chief) +"cba" = ( +/obj/machinery/atm{ + pixel_x = -28; + pixel_y = 0 + }, +/obj/structure/flora/pottedplant/subterranean, +/obj/structure/extinguisher_cabinet{ + pixel_y = -30 + }, +/obj/effect/floor_decal/borderfloor{ + dir = 8 + }, +/obj/effect/floor_decal/corner/yellow/border{ + dir = 8 + }, +/turf/simulated/floor/tiled, +/area/engineering/foyer) +"cbb" = ( +/obj/structure/disposalpipe/segment, +/obj/effect/floor_decal/steeldecal/steel_decals4{ + dir = 8 + }, +/obj/effect/floor_decal/steeldecal/steel_decals4{ + dir = 5 + }, +/turf/simulated/floor/tiled, +/area/engineering/foyer) +"cbc" = ( +/obj/effect/floor_decal/steeldecal/steel_decals4{ + dir = 8 + }, +/obj/effect/floor_decal/steeldecal/steel_decals4{ + dir = 5 + }, +/turf/simulated/floor/tiled, +/area/engineering/foyer) +"cbd" = ( +/obj/machinery/computer/guestpass{ + pixel_x = 30; + pixel_y = 0 + }, +/obj/item/device/radio/intercom{ + name = "Station Intercom (General)"; + pixel_y = -21 + }, +/obj/effect/floor_decal/borderfloor{ + dir = 4 + }, +/obj/effect/floor_decal/corner/yellow/border{ + dir = 4 + }, +/turf/simulated/floor/tiled, +/area/engineering/foyer) +"cbe" = ( +/obj/machinery/computer/station_alert, +/obj/effect/floor_decal/corner/white/diagonal, +/turf/simulated/floor/tiled, +/area/engineering/break_room) +"cbf" = ( +/obj/machinery/computer/security/engineering, +/obj/effect/floor_decal/corner/white/diagonal, +/obj/machinery/computer/security/telescreen/entertainment{ + icon_state = "frame"; + pixel_x = 0; + pixel_y = -32 + }, +/turf/simulated/floor/tiled, +/area/engineering/break_room) +"cbg" = ( +/obj/effect/floor_decal/corner/white/diagonal, +/obj/structure/bookcase/manuals/engineering, +/turf/simulated/floor/tiled, +/area/engineering/break_room) +"cbh" = ( +/obj/effect/floor_decal/corner/white/diagonal, +/obj/structure/table/woodentable, +/obj/item/weapon/book/manual/engineering_construction, +/obj/item/weapon/book/manual/atmospipes, +/obj/item/weapon/book/manual/engineering_guide{ + pixel_x = 3; + pixel_y = 2 + }, +/obj/item/weapon/book/manual/evaguide{ + pixel_x = -2; + pixel_y = 7 + }, +/turf/simulated/floor/tiled, +/area/engineering/break_room) +"cbi" = ( +/obj/effect/floor_decal/corner/white/diagonal, +/obj/structure/table/woodentable, +/obj/item/weapon/dice, +/obj/item/weapon/deck/cards, +/obj/machinery/status_display{ + pixel_x = 0; + pixel_y = -32 + }, +/turf/simulated/floor/tiled, +/area/engineering/break_room) +"cbj" = ( +/obj/machinery/chemical_dispenser/bar_soft/full, +/obj/effect/floor_decal/corner/white/diagonal, +/obj/structure/extinguisher_cabinet{ + pixel_y = -30 + }, +/obj/structure/table/woodentable, +/turf/simulated/floor/tiled, +/area/engineering/break_room) +"cbk" = ( +/obj/structure/toilet{ + dir = 1 + }, +/obj/machinery/light/small, +/turf/simulated/floor/tiled/freezer, +/area/engineering/engi_restroom) +"cbl" = ( +/obj/machinery/recharge_station, +/obj/machinery/light/small, +/turf/simulated/floor/tiled/freezer, +/area/engineering/engi_restroom) +"cbm" = ( +/obj/effect/floor_decal/industrial/warning, +/obj/machinery/light/small{ + dir = 1 + }, +/obj/structure/railing, +/turf/simulated/floor/plating, +/area/maintenance/engineering) +"cbn" = ( +/obj/machinery/alarm{ + pixel_y = 22 + }, +/obj/effect/floor_decal/industrial/warning, +/obj/structure/railing, +/turf/simulated/floor/plating, +/area/maintenance/engineering) +"cbo" = ( +/obj/machinery/door/firedoor/border_only, +/obj/machinery/door/airlock/engineering{ + name = "Utility Down"; + req_one_access = list(11,24) + }, +/turf/simulated/floor/plating, +/area/maintenance/engineering) +"cbp" = ( +/obj/machinery/disposal, +/obj/structure/disposalpipe/trunk{ + dir = 4 + }, +/obj/machinery/camera/network/second_deck{ + c_tag = "Second Deck - Center Seven"; + dir = 4 + }, +/turf/simulated/floor/tiled/hydro, +/area/hallway/primary/seconddeck/fpcenter) +"cbq" = ( +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/effect/floor_decal/spline/plain{ + dir = 4 + }, +/turf/simulated/floor/tiled/hydro, +/area/hallway/primary/seconddeck/fpcenter) +"cbr" = ( +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/effect/floor_decal/borderfloor{ + dir = 8 + }, +/obj/effect/floor_decal/corner/green/border{ + dir = 8 + }, +/turf/simulated/floor/tiled, +/area/hallway/primary/seconddeck/fpcenter) +"cbs" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/structure/cable{ + d1 = 2; + d2 = 4; + icon_state = "2-4" + }, +/turf/simulated/floor/tiled/monotile, +/area/hallway/primary/seconddeck/fpcenter) +"cbt" = ( +/obj/machinery/status_display{ + pixel_x = 32 + }, +/obj/structure/disposalpipe/junction{ + dir = 1; + icon_state = "pipe-j2" + }, +/obj/structure/cable{ + d1 = 4; + d2 = 8; + icon_state = "4-8"; + pixel_x = 0 + }, +/obj/effect/floor_decal/borderfloor{ + dir = 4 + }, +/obj/effect/floor_decal/corner/red/border{ + dir = 4 + }, +/turf/simulated/floor/tiled, +/area/hallway/primary/seconddeck/fpcenter) +"cbu" = ( +/obj/structure/cable{ + d1 = 4; + d2 = 8; + icon_state = "4-8"; + pixel_x = 0 + }, +/turf/simulated/wall, +/area/maintenance/substation/central) +"cbv" = ( +/obj/machinery/atmospherics/portables_connector{ + dir = 1 + }, +/obj/effect/floor_decal/industrial/warning, +/turf/simulated/floor/tiled/white, +/area/rnd/xenobiology/xenoflora_isolation) +"cbw" = ( +/obj/structure/cable/green{ + d1 = 1; + d2 = 4; + icon_state = "1-4" + }, +/obj/effect/floor_decal/industrial/warning{ + icon_state = "warning"; + dir = 8 + }, +/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers, +/obj/machinery/atmospherics/pipe/manifold/hidden/supply, +/obj/machinery/alarm{ + dir = 1; + pixel_y = -22 + }, +/turf/simulated/floor/plating, +/area/maintenance/substation/central) +"cbx" = ( +/obj/effect/floor_decal/industrial/warning/corner{ + dir = 4 + }, +/obj/structure/cable/green{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/obj/machinery/light/small, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, +/turf/simulated/floor/plating, +/area/maintenance/substation/central) +"cby" = ( +/obj/effect/floor_decal/industrial/warning{ + dir = 1 + }, +/obj/structure/cable/green{ + d1 = 1; + d2 = 8; + icon_state = "1-8" + }, +/obj/structure/cable/green{ + d1 = 1; + d2 = 4; + icon_state = "1-4" + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, +/turf/simulated/floor/plating, +/area/maintenance/substation/central) +"cbz" = ( +/obj/machinery/door/firedoor/border_only, +/obj/structure/cable/green{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/obj/machinery/door/airlock/engineering{ + name = "Command Substation"; + req_one_access = list(11,19,24,47) + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, +/turf/simulated/floor/plating, +/area/maintenance/substation/central) +"cbA" = ( +/obj/structure/cable/green{ + d1 = 2; + d2 = 8; + icon_state = "2-8" + }, +/obj/machinery/atmospherics/pipe/simple/hidden/cyan{ + dir = 5; + icon_state = "intact" + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 10 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 10 + }, +/obj/effect/floor_decal/industrial/warning, +/turf/simulated/floor/plating, +/area/maintenance/central) +"cbB" = ( +/obj/machinery/atmospherics/pipe/manifold/hidden/cyan, +/obj/machinery/meter, +/obj/effect/floor_decal/industrial/warning, +/turf/simulated/floor/plating, +/area/maintenance/central) +"cbC" = ( +/obj/machinery/atmospherics/valve{ + dir = 4 + }, +/obj/effect/floor_decal/industrial/warning{ + dir = 6 + }, +/turf/simulated/floor/plating, +/area/maintenance/central) +"cbD" = ( +/obj/machinery/atmospherics/pipe/simple/hidden{ + dir = 10; + icon_state = "intact" + }, +/obj/structure/catwalk, +/turf/simulated/floor/plating, +/area/maintenance/central) +"cbE" = ( +/obj/structure/table/standard, +/obj/item/weapon/hand_tele, +/turf/simulated/floor/tiled/dark, +/area/teleporter) +"cbF" = ( +/obj/machinery/computer/teleporter, +/turf/simulated/floor/tiled/dark, +/area/teleporter) +"cbG" = ( +/obj/machinery/teleport/station, +/turf/simulated/floor/tiled/dark, +/area/teleporter) +"cbH" = ( +/obj/machinery/teleport/hub, +/obj/effect/floor_decal/industrial/hatch/yellow, +/turf/simulated/floor/tiled/dark, +/area/teleporter) +"cbI" = ( +/obj/effect/floor_decal/industrial/warning{ + dir = 8 + }, +/obj/machinery/atmospherics/unary/vent_pump/on, +/turf/simulated/floor/tiled, +/area/teleporter) +"cbJ" = ( +/obj/machinery/suit_storage_unit/standard_unit, +/obj/machinery/camera/network/command{ + c_tag = "COM - Teleporter"; + dir = 8 + }, +/turf/simulated/floor/tiled/dark, +/area/teleporter) +"cbK" = ( +/obj/machinery/ai_status_display, +/turf/simulated/wall/r_wall, +/area/teleporter) +"cbL" = ( +/obj/effect/floor_decal/borderfloor{ + dir = 8 + }, +/obj/effect/floor_decal/corner/purple/border{ + dir = 8 + }, +/turf/simulated/floor/tiled, +/area/hallway/primary/seconddeck/fscenter) +"cbM" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/turf/simulated/floor/tiled/monotile, +/area/hallway/primary/seconddeck/fscenter) +"cbN" = ( +/obj/effect/floor_decal/borderfloor{ + dir = 4 + }, +/obj/effect/floor_decal/corner/green/border{ + dir = 4 + }, +/turf/simulated/floor/tiled, +/area/hallway/primary/seconddeck/fscenter) +"cbO" = ( +/obj/structure/flora/ausbushes/fullgrass, +/turf/simulated/floor/grass, +/area/hallway/primary/seconddeck/fscenter) +"cbP" = ( +/obj/machinery/portable_atmospherics/hydroponics/soil, +/obj/machinery/camera/network/second_deck{ + c_tag = "Second Deck - Center Two"; + dir = 8 + }, +/turf/simulated/floor/grass, +/area/hallway/primary/seconddeck/fscenter) +"cbQ" = ( +/obj/structure/closet/emcloset, +/turf/simulated/floor/plating, +/area/maintenance/research) +"cbR" = ( +/obj/structure/closet/crate, +/obj/random/tech_supply, +/obj/random/tech_supply, +/obj/random/powercell, +/obj/random/powercell, +/obj/random/powercell, +/turf/simulated/floor/plating, +/area/maintenance/research) +"cbS" = ( +/obj/item/weapon/paper_bin{ + pixel_x = -3; + pixel_y = 7 + }, +/obj/item/weapon/clipboard, +/obj/item/weapon/folder/white, +/obj/item/weapon/pen, +/obj/machinery/newscaster{ + pixel_x = -30; + pixel_y = 0 + }, +/obj/structure/table/glass, +/obj/effect/floor_decal/borderfloorwhite{ + dir = 10 + }, +/obj/effect/floor_decal/corner/purple/border{ + dir = 10 + }, +/turf/simulated/floor/tiled/white, +/area/rnd/lab) +"cbT" = ( +/obj/item/weapon/folder/white, +/obj/item/weapon/disk/tech_disk{ + pixel_x = 0; + pixel_y = 0 + }, +/obj/item/weapon/disk/tech_disk{ + pixel_x = 0; + pixel_y = 0 + }, +/obj/item/weapon/disk/design_disk, +/obj/item/weapon/disk/design_disk, +/obj/item/weapon/reagent_containers/dropper{ + pixel_y = -4 + }, +/obj/machinery/firealarm{ + dir = 1; + pixel_x = 0; + pixel_y = -24 + }, +/obj/structure/table/glass, +/obj/effect/floor_decal/borderfloorwhite, +/obj/effect/floor_decal/corner/purple/border, +/turf/simulated/floor/tiled/white, +/area/rnd/lab) +"cbU" = ( +/obj/machinery/recharger{ + pixel_y = 0 + }, +/obj/item/weapon/stock_parts/console_screen, +/obj/item/weapon/stock_parts/console_screen, +/obj/item/weapon/stock_parts/console_screen, +/obj/item/weapon/stock_parts/matter_bin, +/obj/item/weapon/stock_parts/matter_bin, +/obj/item/weapon/stock_parts/micro_laser, +/obj/item/weapon/stock_parts/micro_laser, +/obj/machinery/ai_status_display{ + pixel_y = -32 + }, +/obj/structure/table/glass, +/obj/effect/floor_decal/borderfloorwhite, +/obj/effect/floor_decal/corner/purple/border, +/turf/simulated/floor/tiled/white, +/area/rnd/lab) +"cbV" = ( +/obj/item/weapon/stock_parts/manipulator, +/obj/item/weapon/stock_parts/manipulator, +/obj/item/weapon/stock_parts/capacitor, +/obj/item/weapon/stock_parts/capacitor, +/obj/item/stack/cable_coil, +/obj/item/stack/cable_coil, +/obj/item/weapon/stock_parts/scanning_module, +/obj/item/weapon/stock_parts/scanning_module, +/obj/structure/extinguisher_cabinet{ + pixel_y = -30 + }, +/obj/structure/table/glass, +/obj/effect/floor_decal/borderfloorwhite{ + dir = 6 + }, +/obj/effect/floor_decal/corner/purple/border{ + dir = 6 + }, +/turf/simulated/floor/tiled/white, +/area/rnd/lab) +"cbW" = ( +/obj/item/device/radio/intercom{ + name = "Station Intercom (General)"; + pixel_y = -21 + }, +/obj/effect/floor_decal/borderfloorwhite{ + dir = 10 + }, +/obj/effect/floor_decal/corner/purple/border{ + dir = 10 + }, +/obj/effect/floor_decal/borderfloorwhite/corner2{ + dir = 9 + }, +/obj/effect/floor_decal/corner/purple/bordercorner2{ + dir = 9 + }, +/turf/simulated/floor/tiled/white, +/area/rnd/research_foyer) +"cbX" = ( +/obj/effect/floor_decal/steeldecal/steel_decals4{ + dir = 5 + }, +/obj/effect/floor_decal/steeldecal/steel_decals4{ + dir = 8 + }, +/turf/simulated/floor/tiled/white, +/area/rnd/research_foyer) +"cbY" = ( +/obj/machinery/camera/network/research{ + c_tag = "SCI - Research Foyer"; + dir = 1 + }, +/obj/structure/disposalpipe/sortjunction{ + dir = 1; + name = "Robotics"; + sortType = "Robotics" + }, +/turf/simulated/floor/tiled/white, +/area/rnd/research_foyer) +"cbZ" = ( +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/effect/floor_decal/steeldecal/steel_decals4{ + dir = 5 + }, +/obj/effect/floor_decal/steeldecal/steel_decals4{ + dir = 8 + }, +/turf/simulated/floor/tiled/white, +/area/rnd/research_foyer) +"cca" = ( +/obj/machinery/computer/guestpass{ + pixel_x = 0; + pixel_y = -30 + }, +/obj/machinery/light, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/effect/floor_decal/borderfloorwhite{ + dir = 6 + }, +/obj/effect/floor_decal/corner/purple/border{ + dir = 6 + }, +/obj/effect/floor_decal/borderfloorwhite/corner2, +/obj/effect/floor_decal/corner/purple/bordercorner2, +/turf/simulated/floor/tiled/white, +/area/rnd/research_foyer) +"ccb" = ( +/obj/machinery/door/firedoor/border_only, +/obj/effect/wingrille_spawn/reinforced, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/turf/simulated/floor/plating, +/area/assembly/robotics) +"ccc" = ( +/obj/machinery/disposal, +/obj/structure/disposalpipe/trunk{ + dir = 8 + }, +/obj/effect/floor_decal/borderfloorwhite, +/obj/effect/floor_decal/corner/purple/border, +/turf/simulated/floor/tiled/white, +/area/assembly/robotics) +"ccd" = ( +/obj/structure/table/standard, +/obj/structure/reagent_dispensers/acid{ + density = 0; + pixel_x = 0; + pixel_y = -30 + }, +/obj/machinery/recharger{ + pixel_y = 0 + }, +/obj/item/weapon/storage/toolbox/mechanical, +/obj/item/weapon/storage/toolbox/mechanical, +/obj/item/device/multitool{ + pixel_x = 3 + }, +/obj/item/device/multitool{ + pixel_x = 3 + }, +/obj/item/weapon/tool/crowbar, +/obj/item/weapon/tool/crowbar, +/obj/item/weapon/storage/belt/utility, +/obj/item/weapon/storage/belt/utility, +/obj/item/weapon/storage/toolbox/electrical{ + pixel_x = 1; + pixel_y = 6 + }, +/obj/item/weapon/storage/toolbox/electrical{ + pixel_x = 1; + pixel_y = 6 + }, +/obj/item/weapon/storage/toolbox/mechanical{ + pixel_x = -2; + pixel_y = -1 + }, +/obj/effect/floor_decal/borderfloorwhite, +/obj/effect/floor_decal/corner/purple/border, +/turf/simulated/floor/tiled/white, +/area/assembly/robotics) +"cce" = ( +/obj/effect/floor_decal/industrial/warning, +/obj/structure/closet/crate/hydroponics/prespawned, +/turf/simulated/floor/tiled/white, +/area/rnd/xenobiology/xenoflora_isolation) +"ccf" = ( +/obj/machinery/atmospherics/binary/pump{ + dir = 2; + name = "Isolation to Waste" + }, +/obj/effect/floor_decal/industrial/warning/full, +/turf/simulated/floor/plating, +/area/rnd/xenobiology/xenoflora_isolation) +"ccg" = ( +/obj/structure/reagent_dispensers/fueltank, +/obj/effect/floor_decal/borderfloorwhite, +/obj/effect/floor_decal/corner/purple/border, +/turf/simulated/floor/tiled/white, +/area/assembly/robotics) +"cch" = ( +/obj/machinery/mech_recharger, +/obj/machinery/light{ + icon_state = "tube1"; + dir = 8 + }, +/turf/simulated/floor/tiled/techmaint, +/area/assembly/chargebay) +"cci" = ( +/obj/machinery/hologram/holopad, +/obj/effect/floor_decal/industrial/outline/grey, +/turf/simulated/floor/tiled/techfloor, +/area/assembly/chargebay) +"ccj" = ( +/turf/simulated/floor/tiled/techfloor, +/area/assembly/chargebay) +"cck" = ( +/obj/machinery/mech_recharger, +/obj/machinery/alarm{ + dir = 8; + icon_state = "alarm0"; + pixel_x = 22 + }, +/turf/simulated/floor/tiled/techmaint, +/area/assembly/chargebay) +"ccl" = ( +/obj/machinery/door/firedoor/border_only, +/obj/machinery/door/airlock/maintenance{ + name = "Research Maintenance Access"; + req_one_access = list(7,29) + }, +/turf/simulated/floor/plating, +/area/rnd/misc_lab) +"ccm" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/obj/machinery/door/firedoor/glass, +/obj/structure/cable/green{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/obj/structure/disposalpipe/segment, +/obj/effect/floor_decal/borderfloorwhite{ + dir = 8 + }, +/obj/effect/floor_decal/corner/purple/border{ + dir = 8 + }, +/turf/simulated/floor/tiled/white, +/area/rnd/research) +"ccn" = ( +/obj/machinery/door/firedoor/glass, +/obj/effect/floor_decal/borderfloorwhite{ + dir = 4 + }, +/obj/effect/floor_decal/corner/purple/border{ + dir = 4 + }, +/turf/simulated/floor/tiled/white, +/area/rnd/research) +"cco" = ( +/obj/machinery/alarm{ + dir = 4; + icon_state = "alarm0"; + pixel_x = -22 + }, +/obj/machinery/atmospherics/unary/vent_pump/on, +/obj/effect/floor_decal/borderfloorblack{ + dir = 8 + }, +/obj/effect/floor_decal/corner/green/border{ + dir = 8 + }, +/turf/simulated/floor/tiled/dark, +/area/rnd/workshop) +"ccp" = ( +/obj/structure/bed/chair/office/dark{ + dir = 1 + }, +/turf/simulated/floor/tiled/dark, +/area/rnd/workshop) +"ccq" = ( +/obj/structure/table/steel, +/obj/item/device/integrated_electronics/debugger{ + pixel_x = -5; + pixel_y = 0 + }, +/obj/item/device/integrated_electronics/wirer{ + pixel_x = 5; + pixel_y = 0 + }, +/obj/machinery/newscaster{ + pixel_x = 30; + pixel_y = 0 + }, +/obj/effect/floor_decal/borderfloorblack{ + dir = 4 + }, +/obj/effect/floor_decal/corner/green/border{ + dir = 4 + }, +/turf/simulated/floor/tiled/dark, +/area/rnd/workshop) +"ccr" = ( +/turf/simulated/wall, +/area/rnd/workshop) +"ccs" = ( +/obj/item/stack/tile/floor/white, +/turf/simulated/floor/plating, +/area/hallway/secondary/seconddeck/research_medical) +"cct" = ( +/obj/structure/bed/chair{ + dir = 1 + }, +/turf/simulated/floor/tiled/white, +/area/hallway/secondary/seconddeck/research_medical) +"ccu" = ( +/obj/structure/table/standard, +/obj/item/weapon/soap/nanotrasen, +/obj/item/weapon/storage/box/donkpockets{ + pixel_x = 3; + pixel_y = 3 + }, +/obj/effect/floor_decal/borderfloorwhite{ + dir = 9 + }, +/obj/effect/floor_decal/corner/lime/border{ + dir = 9 + }, +/turf/simulated/floor/tiled/white, +/area/medical/virology) +"ccv" = ( +/obj/effect/floor_decal/borderfloorwhite{ + dir = 1 + }, +/obj/effect/floor_decal/corner/lime/border{ + dir = 1 + }, +/turf/simulated/floor/tiled/white, +/area/medical/virology) +"ccw" = ( +/obj/structure/table/glass, +/obj/item/weapon/storage/box/monkeycubes, +/obj/item/weapon/extinguisher, +/obj/effect/floor_decal/borderfloorwhite{ + dir = 5 + }, +/obj/effect/floor_decal/corner/lime/border{ + dir = 5 + }, +/turf/simulated/floor/tiled/white, +/area/medical/virology) +"ccx" = ( +/obj/structure/closet/secure_closet/personal/patient, +/obj/effect/floor_decal/borderfloorwhite{ + dir = 8 + }, +/obj/effect/floor_decal/corner/lime/border{ + dir = 8 + }, +/turf/simulated/floor/tiled/white, +/area/medical/virology) +"ccy" = ( +/obj/structure/table/glass, +/obj/item/roller, +/obj/machinery/light{ + dir = 4; + icon_state = "tube1"; + pixel_x = 0 + }, +/obj/machinery/alarm{ + pixel_y = 23 + }, +/turf/simulated/floor/tiled/white, +/area/medical/virology) +"ccz" = ( +/obj/machinery/atmospherics/pipe/simple/heat_exchanging{ + dir = 6 + }, +/turf/space, +/area/space) +"ccA" = ( +/obj/machinery/door/firedoor/border_only, +/obj/effect/wingrille_spawn/reinforced, +/obj/machinery/door/blast/regular{ + density = 0; + icon_state = "pdoor0"; + id = "EngineRadiatorViewport1"; + name = "Engine Radiator Viewport Shutter"; + opacity = 0 + }, +/obj/machinery/atmospherics/pipe/manifold/visible/green{ + icon_state = "map"; + dir = 4 + }, +/turf/simulated/floor, +/area/engineering/engine_room) +"ccB" = ( +/obj/structure/lattice, +/obj/machinery/atmospherics/pipe/simple/visible/black{ + dir = 9 + }, +/obj/structure/grille, +/turf/space, +/area/space) +"ccC" = ( +/obj/effect/floor_decal/industrial/warning{ + icon_state = "warning"; + dir = 4 + }, +/obj/machinery/atmospherics/pipe/cap/visible, +/obj/item/device/radio/intercom{ + dir = 8; + name = "Station Intercom (General)"; + pixel_x = -21 + }, +/turf/simulated/floor, +/area/engineering/engine_room) +"ccD" = ( +/obj/effect/floor_decal/industrial/warning{ + icon_state = "warning"; + dir = 8 + }, +/obj/machinery/atmospherics/pipe/cap/visible, +/turf/simulated/floor, +/area/engineering/engine_room) +"ccE" = ( +/obj/effect/floor_decal/industrial/warning{ + icon_state = "warning"; + dir = 4 + }, +/obj/machinery/atmospherics/pipe/cap/visible, +/turf/simulated/floor, +/area/engineering/engine_room) +"ccF" = ( +/obj/machinery/atmospherics/pipe/simple/visible/cyan, +/obj/effect/floor_decal/industrial/warning/corner, +/obj/machinery/power/apc/super/critical{ + dir = 4; + is_critical = 1; + name = "east bump"; + pixel_x = 24; + pixel_y = 0 + }, +/obj/machinery/light_switch{ + pixel_x = 36; + pixel_y = 0 + }, +/obj/structure/cable/cyan{ + d2 = 2; + icon_state = "0-2" + }, +/turf/simulated/floor, +/area/engineering/engine_room) +"ccG" = ( +/obj/machinery/embedded_controller/radio/airlock/advanced_airlock_controller{ + id_tag = "engine_room_airlock"; + name = "Engine Room Airlock"; + pixel_x = 0; + pixel_y = 24; + tag_airpump = "engine_airlock_pump"; + tag_chamber_sensor = "eng_al_c_snsr"; + tag_exterior_door = "engine_airlock_exterior"; + tag_exterior_sensor = "eng_al_ext_snsr"; + tag_interior_door = "engine_airlock_interior"; + tag_interior_sensor = "eng_al_int_snsr" + }, +/obj/machinery/atmospherics/pipe/simple/hidden{ + dir = 6 + }, +/obj/effect/floor_decal/industrial/warning{ + icon_state = "warning"; + dir = 9 + }, +/turf/simulated/floor/tiled, +/area/engineering/engine_airlock) +"ccH" = ( +/obj/machinery/atmospherics/binary/dp_vent_pump/high_volume{ + dir = 8; + frequency = 1379; + id = "engine_airlock_pump" + }, +/obj/machinery/airlock_sensor{ + frequency = 1379; + id_tag = "eng_al_c_snsr"; + pixel_x = 0; + pixel_y = 25 + }, +/obj/effect/floor_decal/industrial/warning{ + dir = 5 + }, +/obj/machinery/light/small{ + dir = 1 + }, +/turf/simulated/floor/tiled, +/area/engineering/engine_airlock) +"ccI" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/universal{ + dir = 4 + }, +/obj/effect/wingrille_spawn/reinforced, +/turf/simulated/floor, +/area/engineering/engine_airlock) +"ccJ" = ( +/obj/machinery/atmospherics/pipe/manifold/hidden/supply{ + dir = 1 + }, +/obj/structure/cable/cyan{ + d2 = 2; + icon_state = "0-2" + }, +/obj/machinery/power/apc{ + dir = 1; + name = "north bump"; + pixel_x = 0; + pixel_y = 24 + }, +/obj/machinery/light_switch{ + pixel_x = 11; + pixel_y = 24 + }, +/turf/simulated/floor/tiled, +/area/engineering/engine_airlock) +"ccK" = ( +/obj/structure/closet/radiation, +/obj/item/clothing/glasses/meson, +/obj/item/clothing/glasses/meson, +/obj/machinery/atmospherics/unary/vent_pump/on{ + dir = 8 + }, +/obj/structure/extinguisher_cabinet{ + pixel_y = 30 + }, +/obj/machinery/alarm{ + dir = 8; + icon_state = "alarm0"; + pixel_x = 22 + }, +/obj/machinery/camera/network/engine{ + c_tag = "ENG - Engine Access"; + dir = 8 + }, +/turf/simulated/floor/tiled, +/area/engineering/engine_airlock) +"ccL" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/effect/floor_decal/industrial/warning/corner, +/obj/machinery/alarm{ + dir = 8; + icon_state = "alarm0"; + pixel_x = 22 + }, +/turf/simulated/floor/tiled, +/area/engineering/hallway/engineer_hallway) +"ccM" = ( +/obj/structure/table/reinforced, +/obj/item/device/radio/intercom{ + dir = 4; + name = "Station Intercom (General)"; + pixel_x = 21 + }, +/obj/machinery/cell_charger, +/obj/random/tech_supply, +/obj/random/tech_supply, +/obj/random/tech_supply, +/obj/random/tech_supply, +/obj/random/powercell, +/obj/random/powercell, +/obj/random/tool/powermaint, +/turf/simulated/floor/tiled/dark, +/area/engineering/hallway/atmos_hallway) +"ccN" = ( +/turf/simulated/wall/r_wall, +/area/engineering/foyer) +"ccO" = ( +/obj/machinery/door/firedoor/glass, +/obj/machinery/door/airlock/glass{ + name = "Engineering Access" + }, +/obj/structure/disposalpipe/segment, +/turf/simulated/floor/tiled/steel_grid, +/area/engineering/foyer) +"ccP" = ( +/obj/machinery/door/firedoor/glass, +/obj/machinery/door/airlock/glass{ + name = "Engineering Access" + }, +/turf/simulated/floor/tiled/steel_grid, +/area/engineering/foyer) +"ccQ" = ( +/turf/simulated/wall/r_wall, +/area/engineering/break_room) +"ccR" = ( +/turf/simulated/wall/r_wall, +/area/engineering/engi_restroom) +"ccS" = ( +/obj/structure/lattice, +/obj/machinery/atmospherics/pipe/zpipe/down/scrubbers, +/obj/machinery/atmospherics/pipe/zpipe/down/supply, +/obj/structure/disposalpipe/down, +/obj/structure/cable{ + d1 = 32; + d2 = 2; + icon_state = "32-2" + }, +/obj/machinery/door/firedoor/border_only, +/turf/simulated/open, +/area/maintenance/engineering) +"ccT" = ( +/obj/structure/lattice, +/obj/machinery/door/firedoor/border_only, +/turf/simulated/open, +/area/maintenance/engineering) +"ccU" = ( +/obj/structure/disposalpipe/broken{ + dir = 4 + }, +/obj/machinery/light/small{ + dir = 8 + }, +/turf/simulated/floor/plating, +/area/maintenance/engineering) +"ccV" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/obj/structure/cable{ + d1 = 1; + d2 = 2; + icon_state = "1-2"; + pixel_y = 0 + }, +/obj/structure/cable{ + d1 = 2; + d2 = 4; + icon_state = "2-4" + }, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/turf/simulated/floor/plating, +/area/maintenance/engineering) +"ccW" = ( +/obj/machinery/power/apc{ + dir = 4; + name = "east bump"; + pixel_x = 24 + }, +/obj/structure/cable{ + d2 = 8; + icon_state = "0-8" + }, +/obj/structure/disposalpipe/segment{ + dir = 2; + icon_state = "pipe-c" + }, +/obj/structure/catwalk, +/turf/simulated/floor/plating, +/area/maintenance/engineering) +"ccX" = ( +/obj/machinery/vending/snack, +/turf/simulated/floor/tiled/hydro, +/area/hallway/primary/seconddeck/fpcenter) +"ccY" = ( +/obj/effect/floor_decal/spline/plain{ + dir = 4 + }, +/turf/simulated/floor/tiled/hydro, +/area/hallway/primary/seconddeck/fpcenter) +"ccZ" = ( +/obj/effect/floor_decal/borderfloor{ + dir = 8 + }, +/obj/effect/floor_decal/corner/green/border{ + dir = 8 + }, +/obj/effect/floor_decal/borderfloor/corner2{ + dir = 10 + }, +/obj/effect/floor_decal/corner/green/bordercorner2{ + dir = 10 + }, +/turf/simulated/floor/tiled, +/area/hallway/primary/seconddeck/fpcenter) +"cda" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/structure/cable{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/turf/simulated/floor/tiled/monotile, +/area/hallway/primary/seconddeck/fpcenter) +"cdb" = ( +/obj/structure/disposalpipe/segment, +/obj/effect/floor_decal/borderfloor{ + dir = 4 + }, +/obj/effect/floor_decal/corner/red/border{ + dir = 4 + }, +/obj/effect/floor_decal/borderfloor/corner2{ + dir = 5 + }, +/obj/effect/floor_decal/corner/red/bordercorner2{ + dir = 5 + }, +/turf/simulated/floor/tiled, +/area/hallway/primary/seconddeck/fpcenter) +"cdc" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/obj/structure/cable/green{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/turf/simulated/floor/plating, +/area/maintenance/central) +"cdd" = ( +/turf/simulated/floor/plating, +/area/maintenance/central) +"cde" = ( +/obj/machinery/atmospherics/pipe/simple/visible/universal, +/obj/structure/catwalk, +/turf/simulated/floor/plating, +/area/maintenance/central) +"cdf" = ( +/obj/effect/floor_decal/industrial/warning/corner{ + icon_state = "warningcorner"; + dir = 1 + }, +/obj/structure/extinguisher_cabinet{ + pixel_x = -28; + pixel_y = 0 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/turf/simulated/floor/tiled, +/area/teleporter) +"cdg" = ( +/obj/machinery/suit_storage_unit/standard_unit, +/turf/simulated/floor/tiled/dark, +/area/teleporter) +"cdh" = ( +/obj/effect/floor_decal/borderfloor{ + dir = 8 + }, +/obj/effect/floor_decal/corner/purple/border{ + dir = 8 + }, +/obj/effect/floor_decal/borderfloor/corner2{ + dir = 10 + }, +/obj/effect/floor_decal/corner/purple/bordercorner2{ + dir = 10 + }, +/turf/simulated/floor/tiled, +/area/hallway/primary/seconddeck/fscenter) +"cdi" = ( +/obj/effect/floor_decal/borderfloor{ + dir = 4 + }, +/obj/effect/floor_decal/corner/green/border{ + dir = 4 + }, +/obj/effect/floor_decal/borderfloor/corner2{ + dir = 5 + }, +/obj/effect/floor_decal/corner/green/bordercorner2{ + dir = 5 + }, +/turf/simulated/floor/tiled, +/area/hallway/primary/seconddeck/fscenter) +"cdj" = ( +/obj/structure/flora/ausbushes/palebush, +/turf/simulated/floor/grass, +/area/hallway/primary/seconddeck/fscenter) +"cdk" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/obj/structure/cable{ + d1 = 1; + d2 = 2; + icon_state = "1-2"; + pixel_y = 0 + }, +/obj/structure/disposalpipe/segment, +/obj/machinery/alarm{ + dir = 4; + pixel_x = -22; + pixel_y = 0 + }, +/turf/simulated/floor/plating, +/area/maintenance/research) +"cdl" = ( +/obj/structure/table/rack{ + dir = 8; + layer = 2.9 + }, +/obj/random/maintenance/clean, +/obj/random/maintenance/clean, +/obj/random/maintenance/clean, +/obj/random/maintenance/clean, +/obj/item/weapon/material/shard, +/turf/simulated/floor/plating, +/area/maintenance/research) +"cdm" = ( +/turf/simulated/wall/r_wall, +/area/rnd/research_foyer) +"cdn" = ( +/obj/machinery/door/firedoor/glass, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/obj/machinery/door/airlock/glass_research{ + name = "Robotics Lab"; + req_access = list(29,47) + }, +/obj/structure/cable/green{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/turf/simulated/floor/tiled/steel_grid, +/area/assembly/robotics) +"cdo" = ( +/obj/machinery/door/firedoor/border_only, +/obj/effect/wingrille_spawn/reinforced, +/obj/structure/disposalpipe/segment, +/turf/simulated/floor/plating, +/area/rnd/research_foyer) +"cdp" = ( +/obj/effect/floor_decal/industrial/outline/yellow, +/obj/machinery/recharge_station, +/obj/machinery/button/remote/blast_door{ + dir = 2; + id = "Skynet_launch"; + name = "Mech Bay Door Control"; + pixel_x = 0; + pixel_y = -26; + req_access = list(29) + }, +/obj/machinery/status_display{ + density = 0; + layer = 4; + pixel_x = -32; + pixel_y = 0 + }, +/turf/simulated/floor/tiled/techmaint, +/area/assembly/chargebay) +"cdq" = ( +/obj/effect/floor_decal/industrial/warning, +/turf/simulated/floor/tiled/techfloor, +/area/assembly/chargebay) +"cdr" = ( +/obj/effect/floor_decal/industrial/outline/yellow, +/obj/machinery/recharge_station, +/obj/machinery/camera/network/research{ + c_tag = "SCI - Mech Bay"; + dir = 8 + }, +/obj/structure/extinguisher_cabinet{ + pixel_y = -30 + }, +/obj/machinery/ai_status_display{ + pixel_x = 32; + pixel_y = 0 + }, +/turf/simulated/floor/tiled/techmaint, +/area/assembly/chargebay) +"cds" = ( +/obj/machinery/door/blast/regular{ + density = 0; + icon_state = "pdoor0"; + id = "Biohazard"; + name = "Biohazard Shutter"; + opacity = 0 + }, +/turf/simulated/floor/plating, +/area/maintenance/research_medical) +"cdt" = ( +/turf/simulated/wall/r_wall, +/area/maintenance/research_medical) +"cdu" = ( +/obj/structure/closet/crate, +/obj/item/stack/tile/floor/white, +/obj/item/stack/tile/floor/white, +/obj/item/stack/tile/floor/white, +/obj/item/stack/tile/floor/white, +/obj/item/stack/tile/floor/white, +/obj/item/stack/tile/floor/white, +/obj/item/stack/tile/floor/white, +/obj/item/stack/tile/floor/white, +/obj/item/stack/tile/floor/white, +/obj/item/stack/tile/floor/white, +/obj/random/powercell, +/obj/random/tech_supply, +/obj/random/tech_supply, +/obj/random/tool, +/turf/simulated/floor/plating, +/area/maintenance/research_medical) +"cdv" = ( +/turf/simulated/floor/plating, +/area/maintenance/research_medical) +"cdw" = ( +/obj/item/stack/cable_coil, +/turf/simulated/floor/plating, +/area/maintenance/research_medical) +"cdx" = ( +/obj/structure/table/rack{ + dir = 1 + }, +/obj/random/maintenance/research, +/obj/random/maintenance/research, +/obj/random/maintenance/clean, +/obj/item/stack/cable_coil, +/obj/item/weapon/coin/silver, +/turf/simulated/floor/plating, +/area/maintenance/research_medical) +"cdy" = ( +/obj/structure/table/rack{ + dir = 1 + }, +/obj/random/maintenance/research, +/obj/random/maintenance/research, +/obj/random/maintenance/clean, +/turf/simulated/floor/plating, +/area/maintenance/research_medical) +"cdz" = ( +/obj/structure/table/glass, +/obj/machinery/alarm{ + dir = 4; + pixel_x = -22; + pixel_y = 0 + }, +/obj/effect/floor_decal/borderfloorwhite{ + dir = 8 + }, +/obj/effect/floor_decal/corner/purple/border{ + dir = 8 + }, +/turf/simulated/floor/tiled/white, +/area/rnd/research/firstdeck/hallway) +"cdA" = ( +/obj/structure/closet/crate, +/obj/random/bomb_supply, +/obj/random/bomb_supply, +/obj/random/bomb_supply, +/obj/random/tech_supply, +/obj/random/technology_scanner, +/obj/random/tool, +/turf/simulated/floor/plating, +/area/maintenance/research_medical) +"cdB" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 10 + }, +/turf/simulated/floor/tiled/white, +/area/rnd/research/firstdeck/hallway) +"cdC" = ( +/obj/machinery/atmospherics/unary/vent_scrubber/on{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/turf/simulated/floor/tiled/white, +/area/rnd/research/firstdeck/hallway) +"cdD" = ( +/obj/machinery/camera/network/research{ + c_tag = "SCI - Research Hallway Aft"; + dir = 8 + }, +/obj/effect/floor_decal/borderfloorwhite/corner{ + dir = 4 + }, +/obj/effect/floor_decal/corner/purple/bordercorner{ + dir = 4 + }, +/turf/simulated/floor/tiled/white, +/area/rnd/research) +"cdE" = ( +/obj/structure/sign/warning/server_room, +/turf/simulated/wall/r_wall, +/area/rnd/workshop) +"cdF" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 5 + }, +/obj/structure/closet/crate, +/obj/item/weapon/tool/wrench, +/obj/item/weapon/tool/crowbar/red, +/obj/machinery/computer/security/telescreen{ + desc = "Used to monitor the proceedings inside the test chamber."; + name = "Test Chamber Monitor"; + network = list("Miscellaneous Reseach"); + pixel_x = -32; + pixel_y = -4 + }, +/obj/machinery/camera/network/research{ + c_tag = "SCI - Miscellaneous Research"; + dir = 4 + }, +/obj/effect/floor_decal/borderfloorwhite{ + dir = 8 + }, +/obj/effect/floor_decal/corner/purple/border{ + dir = 8 + }, +/obj/item/device/suit_cooling_unit, +/turf/simulated/floor/tiled/white, +/area/rnd/misc_lab) +"cdG" = ( +/obj/machinery/hologram/holopad, +/obj/effect/floor_decal/industrial/outline/grey, +/turf/simulated/floor/tiled/dark, +/area/rnd/workshop) +"cdH" = ( +/obj/structure/table/steel, +/obj/item/device/electronic_assembly/large{ + pixel_y = 6 + }, +/obj/structure/reagent_dispensers/acid{ + density = 0; + pixel_x = 30; + pixel_y = 0 + }, +/obj/effect/floor_decal/borderfloorblack{ + dir = 4 + }, +/obj/effect/floor_decal/corner/green/border{ + dir = 4 + }, +/turf/simulated/floor/tiled/dark, +/area/rnd/workshop) +"cdI" = ( +/turf/simulated/floor/plating, +/area/hallway/secondary/seconddeck/research_medical) +"cdJ" = ( +/obj/structure/closet, +/obj/item/device/flashlight, +/obj/effect/decal/cleanable/cobweb2, +/obj/item/weapon/storage/backpack/satchel/vir, +/obj/item/weapon/storage/backpack/virology, +/obj/random/maintenance/medical, +/obj/random/maintenance/medical, +/obj/random/maintenance/medical, +/turf/simulated/floor/plating, +/area/hallway/secondary/seconddeck/research_medical) +"cdK" = ( +/obj/machinery/status_display, +/turf/simulated/wall/r_wall, +/area/medical/virology) +"cdL" = ( +/obj/structure/table/standard, +/obj/machinery/microwave{ + pixel_x = -3; + pixel_y = 6 + }, +/obj/effect/floor_decal/borderfloorwhite{ + dir = 8 + }, +/obj/effect/floor_decal/corner/lime/border{ + dir = 8 + }, +/turf/simulated/floor/tiled/white, +/area/medical/virology) +"cdM" = ( +/turf/simulated/floor/tiled/white, +/area/medical/virology) +"cdN" = ( +/obj/machinery/smartfridge/secure/virology, +/obj/effect/floor_decal/borderfloorwhite{ + dir = 4 + }, +/obj/effect/floor_decal/corner/lime/border{ + dir = 4 + }, +/turf/simulated/floor/tiled/white, +/area/medical/virology) +"cdO" = ( +/obj/effect/floor_decal/borderfloorwhite{ + dir = 8 + }, +/obj/effect/floor_decal/corner/lime/border{ + dir = 8 + }, +/turf/simulated/floor/tiled/white, +/area/medical/virology) +"cdP" = ( +/obj/structure/bed/padded, +/obj/item/device/radio/intercom{ + dir = 4; + name = "Station Intercom (General)"; + pixel_x = 21 + }, +/obj/item/weapon/bedsheet/green, +/obj/effect/floor_decal/borderfloorwhite{ + dir = 4 + }, +/obj/effect/floor_decal/corner/lime/border{ + dir = 4 + }, +/turf/simulated/floor/tiled/white, +/area/medical/virology) +"cdQ" = ( +/obj/machinery/atmospherics/pipe/simple/heat_exchanging{ + icon_state = "intact"; + dir = 10 + }, +/turf/space, +/area/space) +"cdR" = ( +/obj/machinery/atmospherics/pipe/simple/heat_exchanging{ + icon_state = "intact"; + dir = 9 + }, +/obj/structure/lattice, +/turf/space, +/area/space) +"cdS" = ( +/obj/effect/floor_decal/industrial/warning{ + dir = 1 + }, +/obj/machinery/atmospherics/pipe/simple/visible/cyan{ + dir = 4; + icon_state = "intact" + }, +/turf/simulated/floor, +/area/engineering/engine_room) +"cdT" = ( +/obj/effect/floor_decal/industrial/warning/corner{ + icon_state = "warningcorner"; + dir = 1 + }, +/obj/machinery/atmospherics/pipe/simple/visible/yellow, +/obj/machinery/atmospherics/pipe/simple/visible/cyan{ + dir = 4; + icon_state = "intact" + }, +/turf/simulated/floor, +/area/engineering/engine_room) +"cdU" = ( +/obj/machinery/atmospherics/pipe/manifold/visible/cyan, +/turf/simulated/floor, +/area/engineering/engine_room) +"cdV" = ( +/obj/machinery/atmospherics/pipe/manifold/visible/cyan{ + dir = 1 + }, +/obj/effect/floor_decal/industrial/warning{ + dir = 1 + }, +/turf/simulated/floor, +/area/engineering/engine_room) +"cdW" = ( +/obj/machinery/atmospherics/pipe/simple/visible/green, +/obj/machinery/atmospherics/pipe/simple/visible/cyan{ + dir = 4; + icon_state = "intact" + }, +/turf/simulated/floor, +/area/engineering/engine_room) +"cdX" = ( +/obj/machinery/atmospherics/pipe/manifold/visible/cyan{ + dir = 4; + icon_state = "map" + }, +/obj/effect/floor_decal/industrial/warning{ + dir = 4 + }, +/obj/structure/cable/cyan{ + d1 = 1; + d2 = 4; + icon_state = "1-4" + }, +/turf/simulated/floor, +/area/engineering/engine_room) +"cdY" = ( +/obj/machinery/door/firedoor/border_only, +/obj/structure/cable/cyan{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/obj/machinery/door/airlock/maintenance_hatch{ + frequency = 1379; + icon_state = "door_closed"; + id_tag = "engine_airlock_interior"; + locked = 0; + name = "Engine Airlock Interior"; + req_access = list(11) + }, +/turf/simulated/floor, +/area/engineering/engine_airlock) +"cdZ" = ( +/obj/structure/cable/cyan{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/obj/machinery/atmospherics/pipe/simple/hidden{ + dir = 5; + icon_state = "intact" + }, +/obj/effect/floor_decal/industrial/warning{ + dir = 10 + }, +/obj/item/device/radio/intercom{ + name = "Station Intercom (General)"; + pixel_y = -21 + }, +/turf/simulated/floor/tiled, +/area/engineering/engine_airlock) +"cea" = ( +/obj/structure/cable/cyan{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/obj/machinery/atmospherics/pipe/simple/hidden{ + dir = 4 + }, +/obj/effect/floor_decal/industrial/warning{ + dir = 6 + }, +/turf/simulated/floor/tiled, +/area/engineering/engine_airlock) +"ceb" = ( +/obj/machinery/door/firedoor/border_only, +/obj/machinery/atmospherics/pipe/simple/hidden/universal{ + dir = 4 + }, +/obj/structure/cable/cyan{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/obj/machinery/door/airlock/maintenance_hatch{ + frequency = 1379; + icon_state = "door_closed"; + id_tag = "engine_airlock_exterior"; + locked = 0; + name = "Engine Airlock Exterior"; + req_access = list(11) + }, +/turf/simulated/floor/tiled, +/area/engineering/engine_airlock) +"cec" = ( +/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{ + dir = 1 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/structure/cable/cyan{ + d1 = 2; + d2 = 8; + icon_state = "2-8" + }, +/obj/structure/cable/cyan{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/turf/simulated/floor/tiled, +/area/engineering/engine_airlock) +"ced" = ( +/obj/machinery/atmospherics/unary/vent_scrubber/on{ + dir = 8 + }, +/obj/machinery/airlock_sensor/airlock_exterior{ + id_tag = "eng_al_ext_snsr"; + layer = 3.3; + master_tag = "engine_room_airlock"; + pixel_y = -22; + req_access = list(10) + }, +/obj/machinery/light, +/turf/simulated/floor/tiled, +/area/engineering/engine_airlock) +"cee" = ( +/obj/machinery/door/firedoor/border_only, +/obj/machinery/door/airlock/maintenance_hatch{ + icon_state = "door_closed"; + locked = 0; + name = "Engine Access"; + req_one_access = list(11) + }, +/turf/simulated/floor/tiled, +/area/engineering/engine_airlock) +"cef" = ( +/obj/effect/floor_decal/industrial/warning{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/turf/simulated/floor/tiled, +/area/engineering/hallway/engineer_hallway) +"ceg" = ( +/obj/machinery/door/window/westleft{ + name = "Engineering Delivery"; + req_access = list(10) + }, +/obj/effect/floor_decal/industrial/hatch/yellow, +/obj/machinery/door/blast/regular{ + density = 0; + dir = 1; + icon_state = "pdoor0"; + id = "englockdown"; + name = "Engineering Lockdown"; + opacity = 0 + }, +/turf/simulated/floor/tiled, +/area/engineering/hallway/engineer_hallway) +"ceh" = ( +/obj/effect/floor_decal/industrial/warning/corner{ + icon_state = "warningcorner"; + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/visible/cyan{ + icon_state = "intact"; + dir = 5 + }, +/turf/simulated/floor, +/area/engineering/engine_room) +"cei" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 6 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 6 + }, +/obj/structure/cable{ + d1 = 2; + d2 = 4; + icon_state = "2-4" + }, +/obj/structure/catwalk, +/turf/simulated/floor/plating, +/area/maintenance/apmaint) +"cej" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, +/obj/structure/cable{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/obj/machinery/alarm{ + pixel_y = 23 + }, +/obj/structure/catwalk, +/turf/simulated/floor/plating, +/area/maintenance/apmaint) +"cek" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, +/obj/structure/cable{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/obj/structure/catwalk, +/turf/simulated/floor/plating, +/area/maintenance/apmaint) +"cel" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, +/obj/structure/cable{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/obj/machinery/light/small{ + dir = 1 + }, +/obj/structure/catwalk, +/turf/simulated/floor/plating, +/area/maintenance/apmaint) +"cem" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 10 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 10 + }, +/obj/structure/cable{ + d1 = 2; + d2 = 8; + icon_state = "2-8" + }, +/obj/structure/catwalk, +/turf/simulated/floor/plating, +/area/maintenance/apmaint) +"cen" = ( +/turf/simulated/wall, +/area/maintenance/apmaint) +"ceo" = ( +/obj/effect/floor_decal/industrial/hatch/yellow, +/obj/machinery/door/blast/regular{ + density = 0; + dir = 1; + icon_state = "pdoor0"; + id = "englockdown"; + name = "Engineering Lockdown"; + opacity = 0 + }, +/obj/structure/sign/warning/secure_area{ + pixel_x = -32 + }, +/turf/simulated/floor/tiled/dark, +/area/hallway/primary/seconddeck/port) +"cep" = ( +/obj/effect/floor_decal/industrial/hatch/yellow, +/obj/machinery/door/blast/regular{ + density = 0; + dir = 1; + icon_state = "pdoor0"; + id = "englockdown"; + name = "Engineering Lockdown"; + opacity = 0 + }, +/obj/structure/disposalpipe/segment, +/turf/simulated/floor/tiled/dark, +/area/hallway/primary/seconddeck/port) +"ceq" = ( +/obj/effect/floor_decal/industrial/hatch/yellow, +/obj/machinery/door/blast/regular{ + density = 0; + dir = 1; + icon_state = "pdoor0"; + id = "englockdown"; + name = "Engineering Lockdown"; + opacity = 0 + }, +/turf/simulated/floor/tiled/dark, +/area/hallway/primary/seconddeck/port) +"cer" = ( +/obj/effect/floor_decal/industrial/hatch/yellow, +/obj/machinery/door/blast/regular{ + density = 0; + dir = 1; + icon_state = "pdoor0"; + id = "englockdown"; + name = "Engineering Lockdown"; + opacity = 0 + }, +/obj/structure/sign/warning/secure_area{ + pixel_x = 32 + }, +/turf/simulated/floor/tiled/dark, +/area/hallway/primary/seconddeck/port) +"ces" = ( +/obj/structure/catwalk, +/turf/simulated/floor/plating, +/area/maintenance/engineering) +"cet" = ( +/obj/effect/wingrille_spawn/reinforced, +/turf/simulated/floor/plating, +/area/maintenance/engineering) +"ceu" = ( +/obj/structure/closet/crate, +/obj/item/weapon/tank/emergency/oxygen/engi, +/obj/item/weapon/tank/emergency/oxygen/double, +/obj/random/maintenance/engineering, +/obj/random/maintenance/engineering, +/obj/random/maintenance/engineering, +/obj/random/maintenance/engineering, +/turf/simulated/floor/plating, +/area/maintenance/engineering) +"cev" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/obj/structure/cable{ + d1 = 1; + d2 = 2; + icon_state = "1-2"; + pixel_y = 0 + }, +/obj/machinery/door/firedoor/border_only, +/obj/structure/disposalpipe/segment, +/obj/machinery/door/airlock/engineering{ + name = "Utility Down"; + req_one_access = list(11,24) + }, +/turf/simulated/floor/plating, +/area/maintenance/engineering) +"cew" = ( +/obj/structure/disposalpipe/broken{ + dir = 1 + }, +/obj/structure/catwalk, +/turf/simulated/floor/plating, +/area/maintenance/engineering) +"cex" = ( +/obj/machinery/vending/coffee, +/turf/simulated/floor/tiled/hydro, +/area/hallway/primary/seconddeck/fpcenter) +"cey" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/obj/structure/cable{ + d1 = 2; + d2 = 4; + icon_state = "2-4" + }, +/obj/structure/cable{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/turf/simulated/floor/tiled/monotile, +/area/hallway/primary/seconddeck/fpcenter) +"cez" = ( +/obj/structure/disposalpipe/segment, +/obj/structure/cable{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/obj/effect/floor_decal/steeldecal/steel_decals4, +/obj/effect/floor_decal/steeldecal/steel_decals4{ + dir = 10 + }, +/turf/simulated/floor/tiled, +/area/hallway/primary/seconddeck/fpcenter) +"ceA" = ( +/obj/machinery/door/firedoor/border_only, +/obj/structure/cable{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/obj/machinery/door/airlock{ + name = "Emergency Storage" + }, +/turf/simulated/floor/plating, +/area/storage/emergency_storage/seconddeck/central_emergency) +"ceB" = ( +/obj/structure/cable{ + d1 = 4; + d2 = 8; + icon_state = "4-8"; + pixel_x = 0 + }, +/turf/simulated/floor/plating, +/area/storage/emergency_storage/seconddeck/central_emergency) +"ceC" = ( +/obj/structure/table/steel, +/obj/item/device/flashlight, +/obj/item/device/flashlight, +/obj/item/weapon/storage/box/lights/mixed, +/obj/item/weapon/extinguisher, +/obj/machinery/power/apc{ + dir = 1; + name = "north bump"; + pixel_x = 0; + pixel_y = 24 + }, +/obj/structure/cable{ + d2 = 8; + icon_state = "0-8" + }, +/turf/simulated/floor/plating, +/area/storage/emergency_storage/seconddeck/central_emergency) +"ceD" = ( +/obj/structure/table/rack{ + dir = 1 + }, +/obj/item/clothing/suit/fire/firefighter, +/obj/item/weapon/tank/oxygen, +/obj/item/clothing/mask/gas, +/obj/item/weapon/extinguisher, +/obj/item/clothing/head/hardhat/red, +/obj/item/clothing/glasses/meson, +/turf/simulated/floor/plating, +/area/storage/emergency_storage/seconddeck/central_emergency) +"ceE" = ( +/turf/simulated/wall, +/area/storage/emergency_storage/seconddeck/central_emergency) +"ceF" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 6 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 6 + }, +/obj/structure/cable/green{ + d1 = 2; + d2 = 4; + icon_state = "2-4" + }, +/obj/structure/catwalk, +/turf/simulated/floor/plating, +/area/maintenance/central) +"ceG" = ( +/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers, +/obj/machinery/atmospherics/pipe/manifold/hidden/supply, +/obj/structure/cable/green{ + d1 = 1; + d2 = 4; + icon_state = "1-4" + }, +/obj/structure/cable/green{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/obj/structure/catwalk, +/turf/simulated/floor/plating, +/area/maintenance/central) +"ceH" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, +/obj/structure/cable/green{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/obj/structure/catwalk, +/turf/simulated/floor/plating, +/area/maintenance/central) +"ceI" = ( +/obj/machinery/atmospherics/pipe/manifold/hidden/supply, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, +/obj/structure/cable/green{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/obj/machinery/alarm{ + dir = 1; + pixel_y = -22 + }, +/obj/structure/catwalk, +/turf/simulated/floor/plating, +/area/maintenance/central) +"ceJ" = ( +/obj/structure/cable/green{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{ + dir = 1 + }, +/obj/machinery/atmospherics/pipe/manifold/hidden/supply{ + dir = 1 + }, +/obj/structure/cable/green{ + d1 = 2; + d2 = 8; + icon_state = "2-8" + }, +/obj/structure/catwalk, +/turf/simulated/floor/plating, +/area/maintenance/central) +"ceK" = ( +/obj/machinery/door/firedoor/border_only, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/obj/machinery/door/airlock/maintenance{ + name = "Teleport Access"; + req_access = list(17) + }, +/obj/structure/cable/green{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/turf/simulated/floor/plating, +/area/teleporter) +"ceL" = ( +/obj/structure/cable/green{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 9; + pixel_y = 0 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 10 + }, +/obj/effect/floor_decal/steeldecal/steel_decals4{ + dir = 1 + }, +/obj/effect/floor_decal/steeldecal/steel_decals4{ + dir = 6 + }, +/turf/simulated/floor/tiled, +/area/teleporter) +"ceM" = ( +/obj/structure/cable/green{ + d1 = 1; + d2 = 8; + icon_state = "1-8" + }, +/obj/effect/floor_decal/industrial/warning/corner{ + dir = 4 + }, +/turf/simulated/floor/tiled, +/area/teleporter) +"ceN" = ( +/obj/machinery/alarm{ + dir = 8; + pixel_x = 22; + pixel_y = 0 + }, +/obj/effect/floor_decal/industrial/warning{ + icon_state = "warning"; + dir = 1 + }, +/turf/simulated/floor/tiled, +/area/teleporter) +"ceO" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/turf/simulated/floor/tiled/monotile, +/area/hallway/primary/seconddeck/fscenter) +"ceP" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/obj/structure/cable{ + d1 = 1; + d2 = 2; + icon_state = "1-2"; + pixel_y = 0 + }, +/obj/structure/disposalpipe/segment, +/obj/structure/cable{ + d1 = 1; + d2 = 4; + icon_state = "1-4" + }, +/obj/machinery/light/small{ + dir = 8 + }, +/turf/simulated/floor/plating, +/area/maintenance/research) +"ceQ" = ( +/obj/structure/cable{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/turf/simulated/floor/plating, +/area/maintenance/research) +"ceR" = ( +/obj/structure/cable{ + d2 = 8; + icon_state = "0-8" + }, +/obj/machinery/power/apc{ + dir = 1; + name = "north bump"; + pixel_x = 0; + pixel_y = 24 + }, +/turf/simulated/floor/plating, +/area/maintenance/research) +"ceS" = ( +/obj/item/weapon/material/shard{ + icon_state = "medium" + }, +/obj/item/stack/rods, +/turf/simulated/floor/plating, +/area/maintenance/research) +"ceT" = ( +/obj/structure/table/rack{ + dir = 1 + }, +/obj/random/maintenance/research, +/obj/random/maintenance/research, +/obj/random/maintenance/research, +/turf/simulated/floor/plating, +/area/maintenance/research) +"ceU" = ( +/obj/structure/closet, +/obj/item/clothing/glasses/welding, +/obj/item/weapon/weldingtool, +/obj/effect/decal/cleanable/dirt, +/obj/random/maintenance/research, +/obj/random/maintenance/research, +/turf/simulated/floor/plating, +/area/maintenance/research) +"ceV" = ( +/obj/machinery/door/blast/regular{ + density = 0; + icon_state = "pdoor0"; + id = "Biohazard"; + name = "Biohazard Shutter"; + opacity = 0 + }, +/obj/effect/floor_decal/industrial/hatch/yellow, +/obj/structure/sign/warning/secure_area{ + pixel_x = -32 + }, +/turf/simulated/floor/tiled/dark, +/area/hallway/primary/seconddeck/starboard) +"ceW" = ( +/obj/machinery/door/blast/regular{ + density = 0; + icon_state = "pdoor0"; + id = "Biohazard"; + name = "Biohazard Shutter"; + opacity = 0 + }, +/obj/effect/floor_decal/industrial/hatch/yellow, +/turf/simulated/floor/tiled/dark, +/area/hallway/primary/seconddeck/starboard) +"ceX" = ( +/obj/machinery/door/blast/regular{ + density = 0; + icon_state = "pdoor0"; + id = "Biohazard"; + name = "Biohazard Shutter"; + opacity = 0 + }, +/obj/effect/floor_decal/industrial/hatch/yellow, +/obj/structure/disposalpipe/segment, +/turf/simulated/floor/tiled/dark, +/area/hallway/primary/seconddeck/starboard) +"ceY" = ( +/obj/machinery/door/blast/regular{ + density = 0; + icon_state = "pdoor0"; + id = "Biohazard"; + name = "Biohazard Shutter"; + opacity = 0 + }, +/obj/effect/floor_decal/industrial/hatch/yellow, +/obj/structure/sign/science{ + pixel_x = 32 + }, +/turf/simulated/floor/tiled/dark, +/area/hallway/primary/seconddeck/starboard) +"ceZ" = ( +/turf/simulated/wall, +/area/maintenance/robotics) +"cfa" = ( +/turf/simulated/floor/plating, +/area/maintenance/robotics) +"cfb" = ( +/obj/structure/closet/emcloset, +/turf/simulated/floor/plating, +/area/maintenance/robotics) +"cfc" = ( +/obj/machinery/portable_atmospherics/powered/pump/filled, +/turf/simulated/floor/plating, +/area/maintenance/robotics) +"cfd" = ( +/obj/machinery/portable_atmospherics/powered/scrubber, +/turf/simulated/floor/plating, +/area/maintenance/robotics) +"cfe" = ( +/obj/machinery/space_heater, +/turf/simulated/floor/plating, +/area/maintenance/robotics) +"cff" = ( +/obj/machinery/door/firedoor/border_only, +/obj/machinery/door/blast/shutters{ + dir = 2; + id = "Skynet_launch"; + name = "Mining Storage" + }, +/turf/simulated/floor/tiled/techfloor, +/area/assembly/chargebay) +"cfg" = ( +/obj/machinery/door/firedoor/border_only, +/obj/machinery/door/blast/shutters{ + dir = 2; + id = "Skynet_launch"; + name = "Mech Bay" + }, +/turf/simulated/floor/tiled/techfloor, +/area/assembly/chargebay) +"cfh" = ( +/obj/effect/floor_decal/industrial/warning{ + dir = 1 + }, +/obj/machinery/light/small{ + dir = 8 + }, +/obj/structure/cable{ + d1 = 2; + d2 = 4; + icon_state = "2-4" + }, +/turf/simulated/floor/plating, +/area/maintenance/research_medical) +"cfi" = ( +/obj/effect/floor_decal/industrial/warning{ + dir = 1 + }, +/obj/structure/cable{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/turf/simulated/floor/plating, +/area/maintenance/research_medical) +"cfj" = ( +/obj/structure/cable{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/turf/simulated/floor/plating, +/area/maintenance/research_medical) +"cfk" = ( +/obj/structure/cable{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/obj/structure/catwalk, +/turf/simulated/floor/plating, +/area/maintenance/research_medical) +"cfl" = ( +/obj/structure/cable{ + d2 = 8; + icon_state = "0-8" + }, +/obj/machinery/power/apc{ + dir = 2; + name = "south bump"; + pixel_y = -24 + }, +/obj/structure/catwalk, +/turf/simulated/floor/plating, +/area/maintenance/research_medical) +"cfm" = ( +/obj/structure/catwalk, +/turf/simulated/floor/plating, +/area/maintenance/research_medical) +"cfn" = ( +/obj/machinery/door/firedoor/border_only, +/obj/machinery/door/airlock/glass_research{ + name = "Xenoflora Research"; + req_access = list(55) + }, +/turf/simulated/floor/tiled/steel_grid, +/area/rnd/xenobiology/xenoflora) +"cfo" = ( +/turf/simulated/floor/tiled/white, +/area/rnd/research/firstdeck/hallway) +"cfp" = ( +/turf/simulated/floor/tiled/hydro, +/area/rnd/xenobiology/xenoflora) +"cfq" = ( +/obj/machinery/door/firedoor/border_only, +/obj/machinery/door/airlock/research{ + id_tag = "researchdoor"; + name = "Research Division Access"; + req_access = list(47) + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/obj/structure/cable/green{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/obj/structure/disposalpipe/segment, +/turf/simulated/floor/tiled/steel_grid, +/area/rnd/research) +"cfr" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, +/obj/structure/cable/green{ + d1 = 2; + d2 = 8; + icon_state = "2-8" + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 9 + }, +/turf/simulated/floor/tiled/dark, +/area/rnd/workshop) +"cfs" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, +/turf/simulated/floor/tiled/dark, +/area/rnd/workshop) +"cft" = ( +/obj/random/junk, +/obj/structure/extinguisher_cabinet{ + pixel_x = 28; + pixel_y = 0 + }, +/obj/machinery/atmospherics/unary/vent_scrubber/on{ + dir = 8 + }, +/obj/effect/floor_decal/borderfloorblack{ + dir = 4 + }, +/obj/effect/floor_decal/corner/green/border{ + dir = 4 + }, +/turf/simulated/floor/tiled/dark, +/area/rnd/workshop) +"cfu" = ( +/obj/structure/table/standard, +/obj/item/weapon/storage/box/cups, +/obj/machinery/atmospherics/unary/vent_scrubber/on{ + dir = 4 + }, +/obj/effect/floor_decal/borderfloorwhite{ + dir = 8 + }, +/obj/effect/floor_decal/corner/lime/border{ + dir = 8 + }, +/turf/simulated/floor/tiled/white, +/area/medical/virology) +"cfv" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/black{ + dir = 10 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 6 + }, +/turf/simulated/floor/tiled/white, +/area/medical/virology) +"cfw" = ( +/obj/structure/table/glass, +/obj/item/device/antibody_scanner{ + pixel_x = 2; + pixel_y = 2 + }, +/obj/item/device/antibody_scanner, +/obj/machinery/atmospherics/unary/vent_pump/on{ + dir = 8 + }, +/obj/structure/disposalpipe/segment{ + dir = 4; + icon_state = "pipe-c" + }, +/obj/effect/floor_decal/borderfloorwhite{ + dir = 4 + }, +/obj/effect/floor_decal/corner/lime/border{ + dir = 4 + }, +/turf/simulated/floor/tiled/white, +/area/medical/virology) +"cfx" = ( +/obj/machinery/door/firedoor/border_only, +/obj/effect/wingrille_spawn/reinforced, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/turf/simulated/floor/plating, +/area/medical/virology) +"cfy" = ( +/obj/machinery/atmospherics/unary/vent_scrubber/on{ + dir = 4 + }, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/effect/floor_decal/borderfloorwhite{ + dir = 8 + }, +/obj/effect/floor_decal/corner/lime/border{ + dir = 8 + }, +/turf/simulated/floor/tiled/white, +/area/medical/virology) +"cfz" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/black{ + dir = 10 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 6 + }, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/turf/simulated/floor/tiled/white, +/area/medical/virology) +"cfA" = ( +/obj/machinery/atmospherics/unary/vent_pump/on{ + dir = 8 + }, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/effect/floor_decal/borderfloorwhite{ + dir = 4 + }, +/obj/effect/floor_decal/corner/lime/border{ + dir = 4 + }, +/turf/simulated/floor/tiled/white, +/area/medical/virology) +"cfB" = ( +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/turf/simulated/wall/r_wall, +/area/medical/virology) +"cfC" = ( +/obj/structure/disposalpipe/trunk{ + dir = 8 + }, +/obj/structure/disposaloutlet{ + dir = 4 + }, +/obj/machinery/shield_diffuser, +/turf/simulated/floor/airless, +/area/medical/virology) +"cfD" = ( +/obj/effect/floor_decal/industrial/warning, +/obj/machinery/button/remote/blast_door{ + id = "EngineVent"; + name = "Reactor Ventillatory Control"; + pixel_x = -25; + pixel_y = 0; + req_access = list(10) + }, +/turf/simulated/floor, +/area/engineering/engine_room) +"cfE" = ( +/obj/structure/plasticflaps{ + opacity = 1 + }, +/obj/machinery/door/firedoor/border_only, +/obj/effect/floor_decal/industrial/loading{ + icon_state = "loadingarea"; + dir = 8 + }, +/obj/machinery/navbeacon/delivery/west{ + location = "Engineering" + }, +/turf/simulated/floor/tiled, +/area/engineering/hallway/engineer_hallway) +"cfF" = ( +/obj/effect/floor_decal/industrial/warning, +/obj/machinery/camera/network/engine{ + c_tag = "ENG - Engine Core 1"; + dir = 1 + }, +/obj/machinery/atmospherics/pipe/simple/visible/yellow{ + icon_state = "intact"; + dir = 5 + }, +/turf/simulated/floor, +/area/engineering/engine_room) +"cfG" = ( +/obj/machinery/atmospherics/pipe/simple/visible/yellow{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/visible/cyan, +/turf/simulated/floor, +/area/engineering/engine_room) +"cfH" = ( +/obj/machinery/atmospherics/pipe/simple/visible/yellow{ + dir = 9 + }, +/turf/simulated/floor, +/area/engineering/engine_room) +"cfI" = ( +/obj/machinery/atmospherics/binary/pump{ + dir = 1 + }, +/obj/effect/floor_decal/industrial/warning/corner{ + icon_state = "warningcorner"; + dir = 4 + }, +/obj/machinery/airlock_sensor/airlock_interior{ + id_tag = "eng_al_int_snsr"; + master_tag = "engine_room_airlock"; + pixel_x = 22; + pixel_y = 0; + req_access = list(10) + }, +/obj/effect/engine_setup/pump_max, +/turf/simulated/floor, +/area/engineering/engine_room) +"cfJ" = ( +/obj/machinery/door/firedoor/border_only, +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/obj/structure/cable/cyan{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/obj/machinery/door/airlock/maintenance_hatch{ + icon_state = "door_closed"; + locked = 0; + name = "Engine Access"; + req_one_access = list(11) + }, +/turf/simulated/floor/tiled, +/area/engineering/engine_airlock) +"cfK" = ( +/obj/machinery/status_display, +/turf/simulated/wall/r_wall, +/area/engineering/engine_airlock) +"cfL" = ( +/obj/structure/sign/warning/radioactive, +/turf/simulated/wall/r_wall, +/area/engineering/engine_airlock) +"cfM" = ( +/obj/machinery/atmospherics/unary/vent_pump/on{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/obj/machinery/light{ + dir = 8 + }, +/obj/structure/disposalpipe/segment, +/turf/simulated/floor/tiled, +/area/engineering/hallway/engineer_hallway) +"cfN" = ( +/obj/effect/floor_decal/industrial/warning/corner, +/obj/effect/floor_decal/industrial/warning/corner{ + icon_state = "warningcorner"; + dir = 4 + }, +/obj/structure/extinguisher_cabinet{ + pixel_x = 28; + pixel_y = 0 + }, +/obj/machinery/atmospherics/pipe/manifold/hidden/supply{ + dir = 4 + }, +/turf/simulated/floor/tiled, +/area/engineering/hallway/engineer_hallway) +"cfO" = ( +/turf/simulated/wall, +/area/engineering/hallway/engineer_hallway) +"cfP" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/obj/structure/cable{ + d1 = 1; + d2 = 2; + icon_state = "1-2"; + pixel_y = 0 + }, +/obj/structure/cable{ + d1 = 2; + d2 = 4; + icon_state = "2-4" + }, +/obj/structure/catwalk, +/turf/simulated/floor/plating, +/area/maintenance/apmaint) +"cfQ" = ( +/obj/structure/cable{ + d2 = 8; + icon_state = "0-8" + }, +/obj/machinery/power/sensor{ + name = "Powernet Sensor - Master Grid"; + name_tag = "Master" + }, +/obj/structure/catwalk, +/turf/simulated/floor/plating, +/area/maintenance/apmaint) +"cfR" = ( +/turf/simulated/wall/r_wall, +/area/maintenance/apmaint) +"cfS" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 5 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 5 + }, +/obj/structure/cable{ + d1 = 1; + d2 = 4; + icon_state = "1-4" + }, +/obj/structure/catwalk, +/turf/simulated/floor/plating, +/area/maintenance/apmaint) +"cfT" = ( +/obj/machinery/door/firedoor/border_only, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, +/obj/structure/cable{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/obj/machinery/door/airlock/maintenance{ + req_access = list(12) + }, +/turf/simulated/floor/plating, +/area/maintenance/apmaint) +"cfU" = ( +/obj/effect/floor_decal/industrial/warning{ + icon_state = "warning"; + dir = 1 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, +/obj/structure/cable{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/turf/simulated/floor/tiled/dark, +/area/hallway/primary/seconddeck/port) +"cfV" = ( +/obj/effect/floor_decal/industrial/warning{ + icon_state = "warning"; + dir = 1 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, +/obj/structure/cable{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/obj/structure/disposalpipe/segment{ + dir = 1; + icon_state = "pipe-c" + }, +/obj/effect/floor_decal/borderfloor/corner{ + dir = 8 + }, +/obj/effect/floor_decal/corner/yellow/bordercorner{ + dir = 8 + }, +/turf/simulated/floor/tiled, +/area/hallway/primary/seconddeck/port) +"cfW" = ( +/obj/effect/floor_decal/industrial/warning{ + icon_state = "warning"; + dir = 1 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, +/obj/structure/cable{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/turf/simulated/floor/tiled, +/area/hallway/primary/seconddeck/port) +"cfX" = ( +/obj/effect/floor_decal/industrial/warning{ + icon_state = "warning"; + dir = 1 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, +/obj/structure/cable{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/effect/floor_decal/borderfloor/corner, +/obj/effect/floor_decal/corner/yellow/bordercorner, +/turf/simulated/floor/tiled, +/area/hallway/primary/seconddeck/port) +"cfY" = ( +/obj/effect/floor_decal/industrial/warning{ + icon_state = "warning"; + dir = 1 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, +/obj/structure/cable{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/turf/simulated/floor/tiled/dark, +/area/hallway/primary/seconddeck/port) +"cfZ" = ( +/obj/machinery/door/firedoor/border_only, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, +/obj/structure/cable{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/machinery/door/airlock/maintenance{ + req_access = list(12) + }, +/turf/simulated/floor/plating, +/area/maintenance/engineering) +"cga" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, +/obj/structure/cable{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/structure/catwalk, +/turf/simulated/floor/plating, +/area/maintenance/engineering) +"cgb" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, +/obj/structure/cable{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/obj/machinery/light/small, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/structure/catwalk, +/turf/simulated/floor/plating, +/area/maintenance/engineering) +"cgc" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, +/obj/structure/cable{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/turf/simulated/floor/plating, +/area/maintenance/engineering) +"cgd" = ( +/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers, +/obj/machinery/atmospherics/pipe/manifold/hidden/supply, +/obj/structure/cable{ + d1 = 1; + d2 = 8; + icon_state = "1-8" + }, +/obj/structure/cable{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/obj/structure/disposalpipe/junction{ + icon_state = "pipe-j2"; + dir = 4 + }, +/turf/simulated/floor/plating, +/area/maintenance/engineering) +"cge" = ( +/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers, +/obj/machinery/atmospherics/pipe/manifold/hidden/supply, +/obj/structure/cable{ + d1 = 1; + d2 = 8; + icon_state = "1-8" + }, +/obj/structure/cable{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/turf/simulated/floor/plating, +/area/maintenance/engineering) +"cgf" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 10 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 10 + }, +/obj/structure/cable{ + d1 = 2; + d2 = 8; + icon_state = "2-8" + }, +/obj/structure/disposalpipe/segment{ + dir = 2; + icon_state = "pipe-c" + }, +/obj/structure/catwalk, +/turf/simulated/floor/plating, +/area/maintenance/engineering) +"cgg" = ( +/obj/machinery/vending/cola, +/turf/simulated/floor/tiled/hydro, +/area/hallway/primary/seconddeck/fpcenter) +"cgh" = ( +/obj/effect/floor_decal/steeldecal/steel_decals4{ + dir = 8 + }, +/obj/effect/floor_decal/steeldecal/steel_decals4{ + dir = 5 + }, +/turf/simulated/floor/tiled, +/area/hallway/primary/seconddeck/fpcenter) +"cgi" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/structure/cable{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/obj/effect/floor_decal/borderfloor/corner2, +/obj/effect/floor_decal/borderfloor/corner2{ + dir = 9 + }, +/obj/effect/floor_decal/corner/green/bordercorner2, +/obj/effect/floor_decal/corner/green/bordercorner2{ + dir = 9 + }, +/turf/simulated/floor/tiled, +/area/hallway/primary/seconddeck/fpcenter) +"cgj" = ( +/obj/structure/disposalpipe/segment, +/obj/machinery/light{ + dir = 4; + icon_state = "tube1" + }, +/obj/effect/floor_decal/steeldecal/steel_decals4{ + dir = 8 + }, +/obj/effect/floor_decal/steeldecal/steel_decals4{ + dir = 5 + }, +/turf/simulated/floor/tiled, +/area/hallway/primary/seconddeck/fpcenter) +"cgk" = ( +/turf/simulated/wall/r_wall, +/area/storage/emergency_storage/seconddeck/central_emergency) +"cgl" = ( +/turf/simulated/floor/plating, +/area/storage/emergency_storage/seconddeck/central_emergency) +"cgm" = ( +/obj/machinery/light/small{ + dir = 4; + pixel_y = 0 + }, +/turf/simulated/floor/plating, +/area/storage/emergency_storage/seconddeck/central_emergency) +"cgn" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/obj/structure/cable/green{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/obj/structure/catwalk, +/turf/simulated/floor/plating, +/area/maintenance/central) +"cgo" = ( +/obj/machinery/shieldwallgen, +/obj/effect/floor_decal/industrial/outline/yellow, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/turf/simulated/floor/tiled, +/area/teleporter) +"cgp" = ( +/obj/machinery/shieldwallgen, +/obj/effect/floor_decal/industrial/outline/yellow, +/turf/simulated/floor/tiled, +/area/teleporter) +"cgq" = ( +/obj/structure/table/rack{ + dir = 8; + layer = 2.9 + }, +/obj/item/clothing/mask/gas, +/obj/item/clothing/mask/gas, +/obj/item/clothing/mask/gas, +/turf/simulated/floor/tiled, +/area/teleporter) +"cgr" = ( +/obj/machinery/light{ + icon_state = "tube1"; + dir = 8 + }, +/obj/effect/floor_decal/steeldecal/steel_decals4{ + dir = 8 + }, +/obj/effect/floor_decal/steeldecal/steel_decals4{ + dir = 5 + }, +/turf/simulated/floor/tiled, +/area/hallway/primary/seconddeck/fscenter) +"cgs" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/effect/floor_decal/borderfloor/corner2, +/obj/effect/floor_decal/borderfloor/corner2{ + dir = 9 + }, +/obj/effect/floor_decal/corner/green/bordercorner2, +/obj/effect/floor_decal/corner/green/bordercorner2{ + dir = 9 + }, +/turf/simulated/floor/tiled, +/area/hallway/primary/seconddeck/fscenter) +"cgt" = ( +/obj/effect/floor_decal/steeldecal/steel_decals4{ + dir = 8 + }, +/obj/effect/floor_decal/steeldecal/steel_decals4{ + dir = 5 + }, +/turf/simulated/floor/tiled, +/area/hallway/primary/seconddeck/fscenter) +"cgu" = ( +/obj/structure/flora/ausbushes/sparsegrass, +/obj/structure/flora/ausbushes/ywflowers, +/turf/simulated/floor/grass, +/area/hallway/primary/seconddeck/fscenter) +"cgv" = ( +/obj/structure/flora/ausbushes/stalkybush, +/turf/simulated/floor/grass, +/area/hallway/primary/seconddeck/fscenter) +"cgw" = ( +/obj/machinery/door/firedoor/border_only, +/obj/effect/wingrille_spawn/reinforced, +/turf/simulated/floor/plating, +/area/hallway/primary/seconddeck/ascenter) +"cgx" = ( +/obj/structure/window/reinforced, +/obj/item/stack/rods, +/obj/item/stack/rods, +/obj/item/weapon/material/shard, +/turf/simulated/floor/plating, +/area/maintenance/research) +"cgy" = ( +/obj/machinery/light/small, +/turf/simulated/floor/plating, +/area/maintenance/research) +"cgz" = ( +/obj/machinery/door/firedoor/border_only, +/obj/machinery/door/airlock/maintenance{ + req_access = null; + req_one_access = list(12,47) + }, +/turf/simulated/floor/plating, +/area/maintenance/research) +"cgA" = ( +/obj/effect/floor_decal/industrial/warning{ + icon_state = "warning"; + dir = 1 + }, +/turf/simulated/floor/tiled/dark, +/area/hallway/primary/seconddeck/starboard) +"cgB" = ( +/obj/effect/floor_decal/industrial/warning{ + icon_state = "warning"; + dir = 1 + }, +/obj/effect/floor_decal/borderfloor/corner{ + dir = 8 + }, +/obj/effect/floor_decal/corner/purple/bordercorner{ + dir = 8 + }, +/turf/simulated/floor/tiled, +/area/hallway/primary/seconddeck/starboard) +"cgC" = ( +/obj/effect/floor_decal/industrial/warning{ + icon_state = "warning"; + dir = 1 + }, +/obj/structure/disposalpipe/segment, +/turf/simulated/floor/tiled, +/area/hallway/primary/seconddeck/starboard) +"cgD" = ( +/obj/effect/floor_decal/industrial/warning{ + icon_state = "warning"; + dir = 1 + }, +/obj/effect/floor_decal/borderfloor/corner, +/obj/effect/floor_decal/corner/purple/bordercorner, +/turf/simulated/floor/tiled, +/area/hallway/primary/seconddeck/starboard) +"cgE" = ( +/obj/machinery/door/firedoor/border_only, +/obj/machinery/door/airlock/maintenance{ + req_access = null; + req_one_access = list(12,47) + }, +/turf/simulated/floor/plating, +/area/maintenance/robotics) +"cgF" = ( +/obj/machinery/alarm{ + dir = 1; + icon_state = "alarm0"; + pixel_y = -22 + }, +/turf/simulated/floor/plating, +/area/maintenance/robotics) +"cgG" = ( +/obj/machinery/light/small, +/turf/simulated/floor/plating, +/area/maintenance/robotics) +"cgH" = ( +/obj/structure/catwalk, +/turf/simulated/floor/plating, +/area/maintenance/robotics) +"cgI" = ( +/obj/structure/cable{ + icon_state = "0-4"; + d2 = 4 + }, +/obj/machinery/power/apc{ + dir = 2; + name = "south bump"; + pixel_y = -24 + }, +/obj/structure/catwalk, +/turf/simulated/floor/plating, +/area/maintenance/robotics) +"cgJ" = ( +/obj/structure/cable{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/obj/structure/catwalk, +/turf/simulated/floor/plating, +/area/maintenance/robotics) +"cgK" = ( +/obj/machinery/door/firedoor/border_only, +/obj/machinery/door/airlock/maintenance{ + req_access = null; + req_one_access = list(12,47) + }, +/obj/structure/cable{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/turf/simulated/floor/plating, +/area/maintenance/robotics) +"cgL" = ( +/obj/effect/floor_decal/industrial/warning{ + icon_state = "warning"; + dir = 1 + }, +/obj/structure/cable{ + d1 = 2; + d2 = 8; + icon_state = "2-8" + }, +/turf/simulated/floor/tiled, +/area/hallway/primary/seconddeck/starboard) +"cgM" = ( +/obj/effect/floor_decal/industrial/warning{ + icon_state = "warning"; + dir = 1 + }, +/turf/simulated/floor/tiled, +/area/hallway/primary/seconddeck/starboard) +"cgN" = ( +/turf/simulated/wall, +/area/hallway/primary/seconddeck/starboard) +"cgO" = ( +/obj/machinery/door/firedoor/border_only, +/obj/machinery/door/airlock/maintenance{ + req_access = null; + req_one_access = list(5,12,47) + }, +/obj/structure/cable{ + d1 = 1; + d2 = 2; + icon_state = "1-2"; + pixel_y = 0 + }, +/turf/simulated/floor/plating, +/area/maintenance/research_medical) +"cgP" = ( +/obj/structure/closet/emcloset, +/obj/random/maintenance/research, +/turf/simulated/floor, +/area/maintenance/research_medical) +"cgQ" = ( +/obj/machinery/alarm{ + dir = 4; + icon_state = "alarm0"; + pixel_x = -22 + }, +/obj/structure/disposalpipe/segment{ + dir = 4; + icon_state = "pipe-c" + }, +/obj/effect/floor_decal/steeldecal/steel_decals4{ + dir = 8 + }, +/obj/effect/floor_decal/steeldecal/steel_decals4{ + dir = 5 + }, +/turf/simulated/floor/tiled/white, +/area/rnd/research) +"cgR" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 5 + }, +/obj/structure/disposalpipe/segment{ + dir = 8; + icon_state = "pipe-c" + }, +/obj/effect/floor_decal/borderfloorwhite/corner, +/obj/effect/floor_decal/corner/purple/bordercorner, +/turf/simulated/floor/tiled/white, +/area/rnd/research) +"cgS" = ( +/obj/machinery/atmospherics/unary/vent_scrubber/on{ + dir = 8 + }, +/obj/item/device/radio/intercom{ + name = "Station Intercom (General)"; + pixel_y = -21 + }, +/obj/effect/floor_decal/borderfloorwhite, +/obj/effect/floor_decal/corner/purple/border, +/turf/simulated/floor/tiled/white, +/area/rnd/research) +"cgT" = ( +/obj/machinery/power/apc{ + dir = 8; + name = "west bump"; + pixel_x = -24 + }, +/obj/machinery/light_switch{ + pixel_x = -36 + }, +/obj/structure/cable/green, +/obj/effect/floor_decal/borderfloorblack, +/obj/effect/floor_decal/corner/green/border, +/turf/simulated/floor/tiled/dark, +/area/rnd/workshop) +"cgU" = ( +/obj/machinery/door/firedoor/border_only, +/obj/structure/lattice, +/obj/structure/cable/green{ + d1 = 32; + d2 = 4; + icon_state = "32-4" + }, +/obj/structure/disposalpipe/down{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/zpipe/down/supply{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/zpipe/down/scrubbers{ + dir = 4 + }, +/turf/simulated/open, +/area/maintenance/research_medical) +"cgV" = ( +/obj/structure/table/steel, +/obj/item/stack/material/glass{ + amount = 50; + pixel_x = 3; + pixel_y = 3 + }, +/obj/item/weapon/reagent_containers/food/snacks/cheesiehonkers, +/obj/item/weapon/reagent_containers/food/drinks/cans/space_mountain_wind, +/obj/random/maintenance/research, +/obj/machinery/firealarm{ + dir = 1; + pixel_x = 0; + pixel_y = -24 + }, +/obj/effect/floor_decal/borderfloorblack{ + dir = 6 + }, +/obj/effect/floor_decal/corner/green/border{ + dir = 6 + }, +/turf/simulated/floor/tiled/dark, +/area/rnd/workshop) +"cgW" = ( +/obj/item/frame/light, +/turf/simulated/floor/plating, +/area/hallway/secondary/seconddeck/research_medical) +"cgX" = ( +/obj/structure/closet/crate/medical, +/obj/random/maintenance/medical, +/obj/random/maintenance/medical, +/obj/random/maintenance/medical, +/obj/random/maintenance/medical, +/obj/random/medical, +/obj/random/medical/lite, +/turf/simulated/floor/tiled/white, +/area/hallway/secondary/seconddeck/research_medical) +"cgY" = ( +/obj/structure/reagent_dispensers/water_cooler/full, +/obj/machinery/light{ + dir = 8 + }, +/obj/effect/floor_decal/borderfloorwhite{ + dir = 8 + }, +/obj/effect/floor_decal/corner/lime/border{ + dir = 8 + }, +/turf/simulated/floor/tiled/white, +/area/medical/virology) +"cgZ" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/black, +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/turf/simulated/floor/tiled/white, +/area/medical/virology) +"cha" = ( +/obj/machinery/disposal, +/obj/structure/disposalpipe/trunk{ + dir = 1 + }, +/obj/structure/sign/warning/deathsposal{ + pixel_x = 32 + }, +/obj/effect/floor_decal/industrial/warning/full, +/turf/simulated/floor/tiled/white, +/area/medical/virology) +"chb" = ( +/obj/machinery/door/firedoor/glass, +/obj/machinery/door/window/northright{ + name = "Virology Isolation Room"; + req_access = list(39) + }, +/obj/machinery/atmospherics/pipe/simple/hidden/black, +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/turf/simulated/floor/tiled/white, +/area/medical/virology) +"chc" = ( +/obj/effect/wingrille_spawn/reinforced_phoron, +/obj/machinery/door/blast/regular{ + dir = 8; + id = "SupermatterPort"; + layer = 3.3; + name = "Reactor Blast Door" + }, +/turf/simulated/floor, +/area/engineering/engine_room) +"chd" = ( +/obj/machinery/atmospherics/pipe/simple/visible/yellow, +/obj/effect/floor_decal/industrial/warning{ + icon_state = "warning"; + dir = 8 + }, +/turf/simulated/floor, +/area/engineering/engine_room) +"che" = ( +/obj/machinery/atmospherics/pipe/simple/visible/cyan, +/obj/machinery/meter, +/turf/simulated/floor, +/area/engineering/engine_room) +"chf" = ( +/obj/machinery/atmospherics/unary/vent_scrubber/on, +/turf/simulated/floor, +/area/engineering/engine_room) +"chg" = ( +/obj/machinery/atmospherics/portables_connector{ + dir = 1 + }, +/obj/effect/floor_decal/industrial/outline/blue, +/obj/effect/engine_setup/coolant_canister, +/turf/simulated/floor, +/area/engineering/engine_room) +"chh" = ( +/obj/machinery/door/firedoor/border_only, +/obj/machinery/door/blast/regular{ + density = 0; + dir = 1; + icon_state = "pdoor0"; + id = "EngineBlast"; + name = "Engine Monitoring Room Blast Doors"; + opacity = 0 + }, +/obj/effect/wingrille_spawn/reinforced_phoron, +/turf/simulated/floor, +/area/engineering/engine_monitoring) +"chi" = ( +/obj/machinery/computer/general_air_control/supermatter_core{ + frequency = 1438; + input_tag = "cooling_in"; + name = "Engine Cooling Control"; + output_tag = "cooling_out"; + pressure_setting = 100; + sensors = list("engine_sensor" = "Engine Core") + }, +/turf/simulated/floor/tiled, +/area/engineering/engine_monitoring) +"chj" = ( +/obj/structure/table/reinforced, +/obj/item/weapon/book/manual/supermatter_engine, +/obj/structure/cable/cyan{ + d2 = 4; + icon_state = "0-4" + }, +/obj/machinery/power/apc{ + dir = 1; + name = "north bump"; + pixel_x = 0; + pixel_y = 24 + }, +/obj/machinery/light_switch{ + pixel_x = 11; + pixel_y = 24 + }, +/turf/simulated/floor/tiled, +/area/engineering/engine_monitoring) +"chk" = ( +/obj/machinery/atmospherics/unary/vent_pump/on{ + dir = 4 + }, +/obj/machinery/light{ + dir = 1 + }, +/obj/item/device/radio/intercom{ + dir = 1; + name = "Station Intercom (General)"; + pixel_y = 21 + }, +/obj/structure/cable/cyan{ + d1 = 2; + d2 = 8; + icon_state = "2-8" + }, +/obj/structure/cable/cyan{ + d1 = 2; + d2 = 4; + icon_state = "2-4" + }, +/turf/simulated/floor/tiled, +/area/engineering/engine_monitoring) +"chl" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/obj/machinery/atmospherics/pipe/manifold/hidden/supply{ + dir = 4 + }, +/obj/structure/cable/cyan{ + d1 = 1; + d2 = 8; + icon_state = "1-8" + }, +/turf/simulated/floor/tiled, +/area/engineering/engine_monitoring) +"chm" = ( +/obj/structure/closet/radiation, +/obj/item/clothing/glasses/meson, +/turf/simulated/floor/tiled, +/area/engineering/engine_monitoring) +"chn" = ( +/obj/machinery/door/firedoor/border_only, +/obj/effect/wingrille_spawn/reinforced, +/turf/simulated/floor/plating, +/area/engineering/engine_monitoring) +"cho" = ( +/obj/structure/cable{ + d1 = 2; + d2 = 4; + icon_state = "2-4" + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/obj/structure/disposalpipe/segment{ + dir = 1; + icon_state = "pipe-c" + }, +/turf/simulated/floor/tiled, +/area/engineering/hallway/engineer_hallway) +"chp" = ( +/obj/effect/floor_decal/industrial/warning{ + dir = 4 + }, +/obj/structure/cable{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/structure/disposalpipe/junction{ + dir = 8; + icon_state = "pipe-j2" + }, +/turf/simulated/floor/tiled, +/area/engineering/hallway/engineer_hallway) +"chq" = ( +/obj/structure/cable{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/obj/effect/floor_decal/industrial/hatch/yellow, +/obj/machinery/door/blast/regular{ + density = 0; + dir = 1; + icon_state = "pdoor0"; + id = "englockdown"; + name = "Engineering Lockdown"; + opacity = 0 + }, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/turf/simulated/floor/tiled, +/area/engineering/hallway/engineer_hallway) +"chr" = ( +/obj/structure/cable{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/obj/machinery/door/firedoor/border_only, +/obj/machinery/door/airlock/maintenance{ + req_one_access = list(11,24) + }, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/structure/catwalk, +/turf/simulated/floor/tiled, +/area/engineering/hallway/engineer_hallway) +"chs" = ( +/obj/structure/cable{ + d1 = 2; + d2 = 8; + icon_state = "2-8" + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/obj/structure/cable{ + d1 = 1; + d2 = 8; + icon_state = "1-8" + }, +/obj/structure/disposalpipe/segment{ + dir = 2; + icon_state = "pipe-c" + }, +/obj/structure/catwalk, +/turf/simulated/floor/plating, +/area/maintenance/apmaint) +"cht" = ( +/obj/machinery/light/small{ + dir = 4; + pixel_y = 0 + }, +/turf/simulated/floor/plating, +/area/maintenance/apmaint) +"chu" = ( +/turf/unsimulated/mask, +/area/hallway/primary/seconddeck/port) +"chv" = ( +/turf/simulated/wall/r_wall, +/area/hallway/primary/seconddeck/port) +"chw" = ( +/obj/machinery/atmospherics/unary/vent_pump/on, +/obj/machinery/firealarm{ + pixel_y = 24 + }, +/turf/simulated/floor/tiled/dark, +/area/hallway/primary/seconddeck/port) +"chx" = ( +/obj/machinery/atmospherics/unary/vent_pump/on, +/obj/machinery/vending/cigarette, +/turf/simulated/floor/tiled/dark, +/area/hallway/primary/seconddeck/port) +"chy" = ( +/obj/structure/sign/directions/medical{ + dir = 4 + }, +/obj/structure/sign/directions/security{ + dir = 4; + pixel_y = 10 + }, +/turf/simulated/wall, +/area/maintenance/apmaint) +"chz" = ( +/obj/structure/sign/directions/engineering{ + dir = 1; + pixel_y = 10 + }, +/obj/structure/sign/directions/science{ + dir = 4 + }, +/obj/structure/sign/directions/cryo{ + dir = 4; + pixel_y = -10 + }, +/turf/simulated/wall, +/area/maintenance/apmaint) +"chA" = ( +/obj/machinery/light{ + dir = 8; + icon_state = "tube1"; + pixel_y = 0 + }, +/turf/simulated/floor/tiled/dark, +/area/hallway/primary/seconddeck/port) +"chB" = ( +/obj/effect/floor_decal/borderfloor{ + dir = 8 + }, +/obj/effect/floor_decal/corner/yellow/border{ + dir = 8 + }, +/turf/simulated/floor/tiled, +/area/hallway/primary/seconddeck/port) +"chC" = ( +/turf/simulated/floor/tiled, +/area/hallway/primary/seconddeck/port) +"chD" = ( +/obj/effect/floor_decal/borderfloor{ + dir = 4 + }, +/obj/effect/floor_decal/corner/yellow/border{ + dir = 4 + }, +/turf/simulated/floor/tiled, +/area/hallway/primary/seconddeck/port) +"chE" = ( +/turf/simulated/floor/tiled/dark, +/area/hallway/primary/seconddeck/port) +"chF" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/obj/structure/cable{ + d1 = 1; + d2 = 2; + icon_state = "1-2"; + pixel_y = 0 + }, +/obj/machinery/door/firedoor/border_only, +/obj/structure/disposalpipe/segment, +/obj/machinery/door/airlock/maintenance{ + req_access = list(12) + }, +/turf/simulated/floor/plating, +/area/maintenance/engineering) +"chG" = ( +/turf/simulated/wall, +/area/hallway/primary/seconddeck/fpcenter) +"chH" = ( +/obj/machinery/atmospherics/unary/vent_scrubber/on, +/obj/structure/flora/pottedplant/stoutbush, +/turf/simulated/floor/tiled/dark, +/area/hallway/primary/seconddeck/fpcenter) +"chI" = ( +/obj/machinery/alarm{ + dir = 8; + pixel_x = 22; + pixel_y = 0 + }, +/turf/simulated/floor/tiled/dark, +/area/hallway/primary/seconddeck/fpcenter) +"chJ" = ( +/obj/structure/sign/directions/engineering{ + dir = 8; + pixel_y = 10 + }, +/obj/structure/sign/directions/cargo{ + dir = 8 + }, +/obj/structure/sign/directions/security{ + dir = 1; + pixel_y = -10 + }, +/turf/simulated/wall, +/area/hallway/primary/seconddeck/fpcenter) +"chK" = ( +/obj/effect/wingrille_spawn/reinforced, +/obj/machinery/door/firedoor/border_only, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/obj/structure/cable{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/turf/simulated/floor/plating, +/area/hallway/primary/seconddeck/fpcenter) +"chL" = ( +/obj/machinery/door/firedoor/border_only, +/obj/machinery/door/airlock/glass{ + name = "Central Access" + }, +/turf/simulated/floor/tiled/steel_grid, +/area/hallway/primary/seconddeck/fpcenter) +"chM" = ( +/obj/machinery/door/firedoor/glass, +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/obj/structure/cable{ + d1 = 1; + d2 = 2; + icon_state = "1-2"; + pixel_y = 0 + }, +/obj/effect/wingrille_spawn/reinforced, +/turf/simulated/floor/plating, +/area/hallway/primary/seconddeck/fpcenter) +"chN" = ( +/obj/machinery/door/firedoor/border_only, +/obj/structure/disposalpipe/segment, +/obj/machinery/door/airlock/glass{ + name = "Central Access" + }, +/turf/simulated/floor/tiled/steel_grid, +/area/hallway/primary/seconddeck/fpcenter) +"chO" = ( +/obj/machinery/floodlight, +/turf/simulated/floor/plating, +/area/storage/emergency_storage/seconddeck/central_emergency) +"chP" = ( +/obj/structure/reagent_dispensers/watertank, +/obj/machinery/alarm{ + dir = 1; + pixel_y = -22 + }, +/turf/simulated/floor/plating, +/area/storage/emergency_storage/seconddeck/central_emergency) +"chQ" = ( +/obj/machinery/door/firedoor/border_only, +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/obj/structure/cable/green{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/turf/simulated/floor/plating, +/area/maintenance/central) +"chR" = ( +/turf/unsimulated/mask, +/area/hallway/primary/seconddeck/apcenter) +"chS" = ( +/obj/machinery/door/firedoor/border_only, +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/obj/structure/cable/green{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/obj/structure/catwalk, +/turf/simulated/floor/plating, +/area/maintenance/central) +"chT" = ( +/obj/machinery/shieldwallgen, +/obj/effect/floor_decal/industrial/outline/yellow, +/obj/machinery/atmospherics/unary/vent_scrubber/on{ + dir = 1 + }, +/turf/simulated/floor/tiled, +/area/teleporter) +"chU" = ( +/obj/machinery/shieldwallgen, +/obj/effect/floor_decal/industrial/outline/yellow, +/obj/machinery/light, +/turf/simulated/floor/tiled, +/area/teleporter) +"chV" = ( +/obj/machinery/door/firedoor/border_only, +/obj/machinery/door/airlock/glass{ + name = "Central Access" + }, +/turf/simulated/floor/tiled/steel_grid, +/area/hallway/primary/seconddeck/ascenter) +"chW" = ( +/obj/machinery/door/firedoor/glass, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/effect/wingrille_spawn/reinforced, +/turf/simulated/floor/plating, +/area/hallway/primary/seconddeck/ascenter) +"chX" = ( +/obj/effect/wingrille_spawn/reinforced, +/obj/machinery/door/firedoor/border_only, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/obj/structure/cable{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/turf/simulated/floor/plating, +/area/hallway/primary/seconddeck/ascenter) +"chY" = ( +/obj/structure/sign/directions/bridge{ + dir = 2; + pixel_y = 10 + }, +/obj/structure/sign/directions/science{ + dir = 4 + }, +/obj/structure/sign/directions/medical{ + dir = 4; + pixel_y = -10 + }, +/turf/simulated/wall, +/area/hallway/primary/seconddeck/ascenter) +"chZ" = ( +/turf/simulated/wall/r_wall, +/area/hallway/primary/seconddeck/ascenter) +"cia" = ( +/turf/simulated/floor/tiled/dark, +/area/hallway/primary/seconddeck/ascenter) +"cib" = ( +/obj/structure/closet/emcloset, +/obj/machinery/atmospherics/unary/vent_pump/on, +/turf/simulated/floor/tiled/dark, +/area/hallway/primary/seconddeck/ascenter) +"cic" = ( +/turf/simulated/wall, +/area/hallway/primary/seconddeck/ascenter) +"cid" = ( +/obj/machinery/door/firedoor/border_only, +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/obj/structure/disposalpipe/segment, +/obj/machinery/door/airlock/maintenance{ + req_access = null; + req_one_access = list(12,47) + }, +/obj/structure/cable{ + d1 = 1; + d2 = 2; + icon_state = "1-2"; + pixel_y = 0 + }, +/turf/simulated/floor/plating, +/area/maintenance/research) +"cie" = ( +/turf/simulated/floor/tiled/dark, +/area/hallway/primary/seconddeck/starboard) +"cif" = ( +/obj/effect/floor_decal/borderfloor{ + dir = 8 + }, +/obj/effect/floor_decal/corner/purple/border{ + dir = 8 + }, +/turf/simulated/floor/tiled, +/area/hallway/primary/seconddeck/starboard) +"cig" = ( +/obj/structure/disposalpipe/segment, +/turf/simulated/floor/tiled/monotile, +/area/hallway/primary/seconddeck/starboard) +"cih" = ( +/obj/effect/floor_decal/borderfloor{ + dir = 4 + }, +/obj/effect/floor_decal/corner/purple/border{ + dir = 4 + }, +/turf/simulated/floor/tiled, +/area/hallway/primary/seconddeck/starboard) +"cii" = ( +/obj/structure/sign/directions/engineering{ + dir = 8; + pixel_y = 10 + }, +/obj/structure/sign/directions/science{ + dir = 1 + }, +/turf/simulated/wall, +/area/maintenance/robotics) +"cij" = ( +/obj/structure/cable{ + d1 = 1; + d2 = 2; + icon_state = "1-2"; + pixel_y = 0 + }, +/turf/simulated/floor/tiled, +/area/hallway/primary/seconddeck/starboard) +"cik" = ( +/turf/simulated/floor/tiled, +/area/hallway/primary/seconddeck/starboard) +"cil" = ( +/obj/machinery/alarm{ + pixel_y = 23 + }, +/turf/simulated/floor/tiled/dark, +/area/hallway/primary/seconddeck/starboard) +"cim" = ( +/obj/machinery/atmospherics/unary/vent_scrubber/on, +/obj/structure/cable{ + d1 = 1; + d2 = 2; + icon_state = "1-2"; + pixel_y = 0 + }, +/obj/structure/sign/deck/second{ + pixel_x = 32 + }, +/turf/simulated/floor/tiled/dark, +/area/hallway/primary/seconddeck/starboard) +"cin" = ( +/turf/simulated/wall/r_wall, +/area/hallway/primary/seconddeck/starboard) +"cio" = ( +/turf/unsimulated/mask, +/area/hallway/primary/seconddeck/starboard) +"cip" = ( +/obj/machinery/door/firedoor/glass, +/obj/machinery/door/airlock/glass{ + name = "Research Access" + }, +/turf/simulated/floor/tiled/steel_grid, +/area/rnd/research_foyer) +"ciq" = ( +/obj/machinery/ai_status_display, +/turf/simulated/wall/r_wall, +/area/rnd/workshop) +"cir" = ( +/obj/structure/sink{ + icon_state = "sink"; + dir = 8; + pixel_x = -12; + pixel_y = 2 + }, +/obj/machinery/alarm{ + dir = 4; + pixel_x = -22; + pixel_y = 0 + }, +/obj/effect/floor_decal/borderfloorwhite{ + dir = 8 + }, +/obj/effect/floor_decal/corner/lime/border{ + dir = 8 + }, +/turf/simulated/floor/tiled/white, +/area/medical/virology) +"cis" = ( +/obj/effect/floor_decal/borderfloorwhite/corner{ + dir = 4 + }, +/obj/effect/floor_decal/corner/lime/bordercorner{ + dir = 4 + }, +/turf/simulated/floor/tiled/white, +/area/medical/virology) +"cit" = ( +/obj/machinery/light{ + dir = 1 + }, +/obj/effect/floor_decal/borderfloorwhite{ + dir = 1 + }, +/obj/effect/floor_decal/corner/lime/border{ + dir = 1 + }, +/turf/simulated/floor/tiled/white, +/area/medical/virology) +"ciu" = ( +/obj/effect/floor_decal/borderfloorwhite/corner{ + dir = 1 + }, +/obj/effect/floor_decal/corner/lime/bordercorner{ + dir = 1 + }, +/turf/simulated/floor/tiled/white, +/area/medical/virology) +"civ" = ( +/obj/machinery/atmospherics/pipe/manifold/hidden/black{ + dir = 8 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/turf/simulated/floor/tiled/white, +/area/medical/virology) +"ciw" = ( +/obj/machinery/atmospherics/unary/vent_scrubber/on{ + dir = 8 + }, +/obj/effect/floor_decal/borderfloorwhite/corner{ + dir = 4 + }, +/obj/effect/floor_decal/corner/lime/bordercorner{ + dir = 4 + }, +/turf/simulated/floor/tiled/white, +/area/medical/virology) +"cix" = ( +/obj/structure/table/glass, +/obj/item/weapon/folder/white, +/obj/item/weapon/hand_labeler, +/obj/structure/reagent_dispensers/virusfood{ + pixel_x = 30 + }, +/obj/item/device/radio/intercom/department/medbay{ + dir = 2; + pixel_x = 0; + pixel_y = 21 + }, +/obj/effect/floor_decal/borderfloorwhite{ + dir = 5 + }, +/obj/effect/floor_decal/corner/lime/border{ + dir = 5 + }, +/turf/simulated/floor/tiled/white, +/area/medical/virology) +"ciy" = ( +/obj/structure/sign/warning/vent_port{ + pixel_x = 32 + }, +/turf/space, +/area/space) +"ciz" = ( +/obj/effect/floor_decal/industrial/warning/cee{ + icon_state = "warningcee"; + dir = 8 + }, +/turf/simulated/floor/reinforced/nitrogen{ + nitrogen = 82.1472 + }, +/area/engineering/engine_room) +"ciA" = ( +/obj/effect/floor_decal/industrial/warning, +/obj/effect/floor_decal/industrial/warning{ + dir = 1 + }, +/turf/simulated/floor/reinforced/nitrogen{ + nitrogen = 82.1472 + }, +/area/engineering/engine_room) +"ciB" = ( +/obj/machinery/atmospherics/unary/outlet_injector{ + dir = 4; + frequency = 1438; + icon_state = "map_injector"; + id = "cooling_in"; + name = "Coolant Injector"; + pixel_y = 1; + power_rating = 30000; + use_power = 1; + volume_rate = 700 + }, +/obj/effect/floor_decal/industrial/warning{ + icon_state = "warning"; + dir = 5 + }, +/obj/effect/floor_decal/industrial/warning/corner{ + dir = 8 + }, +/turf/simulated/floor/reinforced/nitrogen{ + nitrogen = 82.1472 + }, +/area/engineering/engine_room) +"ciC" = ( +/obj/machinery/atmospherics/pipe/simple/visible/cyan{ + dir = 4; + icon_state = "intact" + }, +/obj/machinery/door/airlock/hatch{ + icon_state = "door_locked"; + id_tag = "engine_access_hatch"; + locked = 1; + req_access = list(11) + }, +/turf/simulated/floor, +/area/engineering/engine_room) +"ciD" = ( +/obj/machinery/atmospherics/pipe/simple/visible/yellow, +/obj/machinery/atmospherics/pipe/simple/visible/cyan{ + dir = 4; + icon_state = "intact" + }, +/obj/effect/floor_decal/industrial/warning{ + icon_state = "warning"; + dir = 8 + }, +/obj/effect/floor_decal/industrial/warning, +/turf/simulated/floor, +/area/engineering/engine_room) +"ciE" = ( +/obj/machinery/atmospherics/pipe/manifold4w/visible/cyan, +/obj/effect/floor_decal/industrial/warning, +/turf/simulated/floor, +/area/engineering/engine_room) +"ciF" = ( +/obj/machinery/atmospherics/valve/digital{ + dir = 4; + name = "Emergency Cooling Valve 1" + }, +/obj/effect/floor_decal/industrial/warning, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/obj/effect/floor_decal/industrial/outline, +/turf/simulated/floor, +/area/engineering/engine_room) +"ciG" = ( +/obj/machinery/meter, +/obj/effect/floor_decal/industrial/warning/corner{ + dir = 8 + }, +/obj/machinery/atmospherics/pipe/manifold/visible/yellow{ + icon_state = "map"; + dir = 1 + }, +/turf/simulated/floor, +/area/engineering/engine_room) +"ciH" = ( +/obj/structure/cable/cyan{ + d2 = 2; + icon_state = "0-2" + }, +/obj/machinery/power/sensor{ + name = "Powernet Sensor - Engine Power"; + name_tag = "Engine Power" + }, +/turf/simulated/floor, +/area/engineering/engine_room) +"ciI" = ( +/obj/machinery/door/firedoor/glass, +/obj/machinery/door/blast/regular{ + density = 0; + dir = 1; + icon_state = "pdoor0"; + id = "EngineBlast"; + name = "Engine Monitoring Room Blast Doors"; + opacity = 0 + }, +/obj/effect/wingrille_spawn/reinforced_phoron, +/turf/simulated/floor, +/area/engineering/engine_monitoring) +"ciJ" = ( +/obj/machinery/computer/rcon, +/turf/simulated/floor/tiled, +/area/engineering/engine_monitoring) +"ciK" = ( +/obj/structure/bed/chair/office/dark{ + dir = 8 + }, +/obj/effect/landmark/start{ + name = "Station Engineer" + }, +/turf/simulated/floor/tiled, +/area/engineering/engine_monitoring) +"ciL" = ( +/obj/structure/cable/cyan{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/turf/simulated/floor/tiled, +/area/engineering/engine_monitoring) +"ciM" = ( +/obj/structure/cable{ + d1 = 2; + d2 = 4; + icon_state = "2-4" + }, +/obj/machinery/atmospherics/pipe/manifold/hidden/supply{ + dir = 8 + }, +/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{ + dir = 8 + }, +/turf/simulated/floor/tiled, +/area/engineering/engine_monitoring) +"ciN" = ( +/obj/structure/cable{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/obj/structure/disposalpipe/segment{ + dir = 4; + icon_state = "pipe-c" + }, +/obj/effect/floor_decal/steeldecal/steel_decals4{ + dir = 10 + }, +/obj/effect/floor_decal/steeldecal/steel_decals4, +/turf/simulated/floor/tiled, +/area/engineering/engine_monitoring) +"ciO" = ( +/obj/machinery/door/firedoor/glass, +/obj/machinery/door/airlock/glass_engineering{ + name = "Engine Monitoring Room"; + req_access = list(11) + }, +/obj/structure/cable{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/turf/simulated/floor/tiled/steel_grid, +/area/engineering/engine_monitoring) +"ciP" = ( +/obj/structure/cable{ + d1 = 1; + d2 = 8; + icon_state = "1-8" + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 9 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/effect/floor_decal/steeldecal/steel_decals4{ + dir = 1 + }, +/obj/effect/floor_decal/steeldecal/steel_decals4{ + dir = 6 + }, +/turf/simulated/floor/tiled, +/area/engineering/hallway/engineer_hallway) +"ciQ" = ( +/obj/effect/floor_decal/industrial/warning{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 9; + pixel_y = 0 + }, +/obj/structure/disposalpipe/segment{ + dir = 8; + icon_state = "pipe-c" + }, +/turf/simulated/floor/tiled, +/area/engineering/hallway/engineer_hallway) +"ciR" = ( +/obj/effect/floor_decal/industrial/hatch/yellow, +/obj/machinery/door/blast/regular{ + density = 0; + dir = 1; + icon_state = "pdoor0"; + id = "englockdown"; + name = "Engineering Lockdown"; + opacity = 0 + }, +/turf/simulated/floor/tiled, +/area/engineering/hallway/engineer_hallway) +"ciS" = ( +/obj/structure/cable{ + d1 = 1; + d2 = 2; + icon_state = "1-2"; + pixel_y = 0 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/obj/structure/cable{ + d1 = 1; + d2 = 4; + icon_state = "1-4" + }, +/obj/structure/disposalpipe/segment, +/turf/simulated/floor/plating, +/area/maintenance/apmaint) +"ciT" = ( +/obj/structure/closet, +/obj/random/maintenance/engineering, +/obj/random/maintenance/engineering, +/obj/random/maintenance/cargo, +/obj/random/maintenance/cargo, +/obj/structure/cable{ + d2 = 8; + icon_state = "0-8" + }, +/obj/machinery/power/apc{ + dir = 4; + name = "east bump"; + pixel_x = 24 + }, +/turf/simulated/floor/plating, +/area/maintenance/apmaint) +"ciU" = ( +/obj/effect/floor_decal/borderfloorblack{ + dir = 9 + }, +/obj/effect/floor_decal/industrial/danger{ + dir = 9 + }, +/turf/simulated/floor/tiled/techfloor/grid, +/area/hallway/primary/seconddeck/port) +"ciV" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/effect/floor_decal/borderfloor{ + dir = 1 + }, +/obj/effect/floor_decal/corner/green/border{ + dir = 1 + }, +/obj/effect/floor_decal/borderfloor/corner2{ + dir = 1 + }, +/obj/effect/floor_decal/corner/green/bordercorner2{ + dir = 1 + }, +/turf/simulated/floor/tiled, +/area/hallway/primary/seconddeck/port) +"ciW" = ( +/obj/effect/floor_decal/steeldecal/steel_decals4{ + dir = 10 + }, +/obj/effect/floor_decal/steeldecal/steel_decals4, +/turf/simulated/floor/tiled, +/area/hallway/primary/seconddeck/port) +"ciX" = ( +/obj/machinery/door/firedoor/glass, +/obj/machinery/door/airlock/glass{ + name = "Central Access" + }, +/turf/simulated/floor/tiled, +/area/hallway/primary/seconddeck/port) +"ciY" = ( +/obj/effect/floor_decal/steeldecal/steel_decals4{ + dir = 1 + }, +/obj/effect/floor_decal/steeldecal/steel_decals4{ + dir = 6 + }, +/turf/simulated/floor/tiled, +/area/hallway/primary/seconddeck/port) +"ciZ" = ( +/obj/effect/floor_decal/borderfloor{ + dir = 1 + }, +/obj/effect/floor_decal/corner/yellow/border{ + dir = 1 + }, +/obj/effect/floor_decal/borderfloor/corner2{ + dir = 4 + }, +/obj/effect/floor_decal/corner/yellow/bordercorner2{ + dir = 4 + }, +/turf/simulated/floor/tiled, +/area/hallway/primary/seconddeck/port) +"cja" = ( +/obj/machinery/atmospherics/unary/vent_scrubber/on, +/obj/effect/floor_decal/borderfloor{ + dir = 1 + }, +/obj/effect/floor_decal/corner/yellow/border{ + dir = 1 + }, +/turf/simulated/floor/tiled, +/area/hallway/primary/seconddeck/port) +"cjb" = ( +/obj/effect/floor_decal/borderfloor/corner{ + dir = 1 + }, +/obj/effect/floor_decal/corner/yellow/bordercorner{ + dir = 1 + }, +/turf/simulated/floor/tiled, +/area/hallway/primary/seconddeck/port) +"cjc" = ( +/turf/simulated/floor/tiled/monotile, +/area/hallway/primary/seconddeck/port) +"cjd" = ( +/obj/effect/floor_decal/borderfloor/corner{ + dir = 4 + }, +/obj/effect/floor_decal/corner/yellow/bordercorner{ + dir = 4 + }, +/turf/simulated/floor/tiled, +/area/hallway/primary/seconddeck/port) +"cje" = ( +/obj/effect/floor_decal/borderfloor{ + dir = 1 + }, +/obj/effect/floor_decal/corner/yellow/border{ + dir = 1 + }, +/turf/simulated/floor/tiled, +/area/hallway/primary/seconddeck/port) +"cjf" = ( +/obj/machinery/alarm{ + pixel_y = 23 + }, +/obj/effect/floor_decal/borderfloor{ + dir = 1 + }, +/obj/effect/floor_decal/corner/yellow/border{ + dir = 1 + }, +/turf/simulated/floor/tiled, +/area/hallway/primary/seconddeck/port) +"cjg" = ( +/obj/machinery/door/firedoor/border_only, +/obj/effect/floor_decal/borderfloor/corner{ + dir = 1 + }, +/obj/effect/floor_decal/corner/yellow/bordercorner{ + dir = 1 + }, +/turf/simulated/floor/tiled, +/area/hallway/primary/seconddeck/port) +"cjh" = ( +/obj/structure/extinguisher_cabinet{ + pixel_y = 30 + }, +/obj/effect/floor_decal/borderfloor{ + dir = 1 + }, +/obj/effect/floor_decal/corner/yellow/border{ + dir = 1 + }, +/turf/simulated/floor/tiled, +/area/hallway/primary/seconddeck/port) +"cji" = ( +/obj/machinery/atmospherics/unary/vent_pump/on, +/obj/effect/floor_decal/borderfloor{ + dir = 1 + }, +/obj/effect/floor_decal/corner/yellow/border{ + dir = 1 + }, +/turf/simulated/floor/tiled, +/area/hallway/primary/seconddeck/port) +"cjj" = ( +/obj/machinery/light{ + dir = 1 + }, +/turf/simulated/floor/tiled, +/area/hallway/primary/seconddeck/port) +"cjk" = ( +/obj/machinery/camera/network/second_deck{ + c_tag = "Second Deck - Port Hallway Two" + }, +/obj/effect/floor_decal/borderfloor/corner{ + dir = 4 + }, +/obj/effect/floor_decal/corner/yellow/bordercorner{ + dir = 4 + }, +/turf/simulated/floor/tiled, +/area/hallway/primary/seconddeck/port) +"cjl" = ( +/obj/machinery/power/apc{ + dir = 1; + name = "north bump"; + pixel_x = 0; + pixel_y = 24 + }, +/obj/structure/cable{ + d2 = 2; + icon_state = "0-2"; + pixel_y = 0 + }, +/obj/effect/floor_decal/borderfloor{ + dir = 1 + }, +/obj/effect/floor_decal/corner/yellow/border{ + dir = 1 + }, +/turf/simulated/floor/tiled, +/area/hallway/primary/seconddeck/port) +"cjm" = ( +/obj/effect/floor_decal/borderfloor{ + dir = 1 + }, +/obj/effect/floor_decal/corner/yellow/border{ + dir = 1 + }, +/obj/machinery/atmospherics/unary/vent_pump/on, +/turf/simulated/floor/tiled, +/area/hallway/primary/seconddeck/port) +"cjn" = ( +/obj/machinery/status_display{ + pixel_x = 0; + pixel_y = 32 + }, +/turf/simulated/floor/tiled, +/area/hallway/primary/seconddeck/port) +"cjo" = ( +/obj/machinery/firealarm{ + pixel_y = 24 + }, +/turf/simulated/floor/tiled, +/area/hallway/primary/seconddeck/port) +"cjp" = ( +/obj/machinery/door/firedoor/glass, +/obj/machinery/door/airlock/glass{ + name = "Central Access" + }, +/turf/simulated/floor/tiled/steel_grid, +/area/hallway/primary/seconddeck/port) +"cjq" = ( +/obj/item/device/radio/intercom{ + dir = 1; + name = "Station Intercom (General)"; + pixel_y = 21 + }, +/obj/effect/floor_decal/steeldecal/steel_decals4{ + dir = 1 + }, +/obj/effect/floor_decal/steeldecal/steel_decals4{ + dir = 6 + }, +/turf/simulated/floor/tiled, +/area/hallway/primary/seconddeck/fpcenter) +"cjr" = ( +/obj/structure/disposalpipe/segment{ + dir = 1; + icon_state = "pipe-c" + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/structure/cable{ + d1 = 1; + d2 = 2; + icon_state = "1-2"; + pixel_y = 0 + }, +/obj/effect/floor_decal/steeldecal/steel_decals4{ + dir = 4 + }, +/obj/effect/floor_decal/steeldecal/steel_decals4{ + dir = 9 + }, +/turf/simulated/floor/tiled, +/area/hallway/primary/seconddeck/fpcenter) +"cjs" = ( +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/machinery/ai_status_display{ + pixel_y = 32 + }, +/obj/effect/floor_decal/borderfloor/corner{ + dir = 4 + }, +/obj/effect/floor_decal/corner/yellow/bordercorner{ + dir = 4 + }, +/turf/simulated/floor/tiled, +/area/hallway/primary/seconddeck/fpcenter) +"cjt" = ( +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/obj/effect/floor_decal/borderfloor{ + dir = 1 + }, +/obj/effect/floor_decal/corner/yellow/border{ + dir = 1 + }, +/turf/simulated/floor/tiled, +/area/hallway/primary/seconddeck/fpcenter) +"cju" = ( +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/effect/floor_decal/borderfloor{ + dir = 1 + }, +/obj/effect/floor_decal/corner/yellow/border{ + dir = 1 + }, +/turf/simulated/floor/tiled, +/area/hallway/primary/seconddeck/fpcenter) +"cjv" = ( +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/effect/floor_decal/borderfloor/corner{ + dir = 1 + }, +/obj/effect/floor_decal/corner/yellow/bordercorner{ + dir = 1 + }, +/turf/simulated/floor/tiled, +/area/hallway/primary/seconddeck/fpcenter) +"cjw" = ( +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/machinery/atmospherics/unary/vent_pump/on{ + dir = 4 + }, +/obj/effect/floor_decal/steeldecal/steel_decals4{ + dir = 4 + }, +/obj/effect/floor_decal/steeldecal/steel_decals4{ + dir = 9 + }, +/turf/simulated/floor/tiled, +/area/hallway/primary/seconddeck/fpcenter) +"cjx" = ( +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/manifold/hidden/supply{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/obj/structure/cable{ + d1 = 1; + d2 = 2; + icon_state = "1-2"; + pixel_y = 0 + }, +/turf/simulated/floor/tiled, +/area/hallway/primary/seconddeck/fpcenter) +"cjy" = ( +/obj/structure/disposalpipe/segment{ + dir = 8; + icon_state = "pipe-c" + }, +/obj/effect/floor_decal/steeldecal/steel_decals4{ + dir = 4 + }, +/obj/effect/floor_decal/steeldecal/steel_decals4{ + dir = 9 + }, +/obj/machinery/navbeacon/patrol{ + location = "CH3"; + next_patrol = "ENG" + }, +/turf/simulated/floor/tiled, +/area/hallway/primary/seconddeck/fpcenter) +"cjz" = ( +/obj/machinery/power/apc{ + dir = 1; + name = "north bump"; + pixel_x = 0; + pixel_y = 24 + }, +/obj/structure/cable{ + icon_state = "0-2"; + d2 = 2 + }, +/turf/simulated/floor/tiled/dark, +/area/hallway/primary/seconddeck/fpcenter) +"cjA" = ( +/obj/machinery/atmospherics/unary/vent_scrubber/on{ + dir = 4 + }, +/obj/effect/floor_decal/steeldecal/steel_decals4{ + dir = 4 + }, +/obj/effect/floor_decal/steeldecal/steel_decals4{ + dir = 9 + }, +/obj/machinery/navbeacon/patrol{ + location = "CH10"; + next_patrol = "CH11" + }, +/turf/simulated/floor/tiled, +/area/hallway/primary/seconddeck/ascenter) +"cjB" = ( +/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/turf/simulated/floor/tiled, +/area/hallway/primary/seconddeck/ascenter) +"cjC" = ( +/obj/effect/floor_decal/steeldecal/steel_decals4{ + dir = 4 + }, +/obj/effect/floor_decal/steeldecal/steel_decals4{ + dir = 9 + }, +/turf/simulated/floor/tiled, +/area/hallway/primary/seconddeck/ascenter) +"cjD" = ( +/turf/simulated/floor/tiled, +/area/hallway/primary/seconddeck/ascenter) +"cjE" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/yellow{ + dir = 4 + }, +/obj/machinery/atmospherics/unary/vent_pump/on, +/turf/simulated/floor/tiled/hydro, +/area/rnd/xenobiology/xenoflora) +"cjF" = ( +/obj/effect/floor_decal/borderfloor{ + dir = 1 + }, +/obj/effect/floor_decal/corner/purple/border{ + dir = 1 + }, +/turf/simulated/floor/tiled, +/area/hallway/primary/seconddeck/ascenter) +"cjG" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/effect/floor_decal/borderfloor{ + dir = 1 + }, +/obj/effect/floor_decal/corner/purple/border{ + dir = 1 + }, +/turf/simulated/floor/tiled, +/area/hallway/primary/seconddeck/ascenter) +"cjH" = ( +/obj/machinery/ai_status_display{ + pixel_y = 32 + }, +/obj/effect/floor_decal/borderfloor/corner{ + dir = 1 + }, +/obj/effect/floor_decal/corner/purple/bordercorner{ + dir = 1 + }, +/turf/simulated/floor/tiled, +/area/hallway/primary/seconddeck/ascenter) +"cjI" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/obj/structure/cable{ + d1 = 1; + d2 = 2; + icon_state = "1-2"; + pixel_y = 0 + }, +/obj/structure/disposalpipe/segment{ + dir = 1; + icon_state = "pipe-c" + }, +/obj/effect/floor_decal/steeldecal/steel_decals4{ + dir = 4 + }, +/turf/simulated/floor/tiled, +/area/hallway/primary/seconddeck/ascenter) +"cjJ" = ( +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/machinery/firealarm{ + dir = 2; + pixel_y = 24 + }, +/obj/effect/floor_decal/steeldecal/steel_decals4, +/obj/effect/floor_decal/steeldecal/steel_decals4{ + dir = 10 + }, +/turf/simulated/floor/tiled, +/area/hallway/primary/seconddeck/ascenter) +"cjK" = ( +/obj/machinery/door/firedoor/glass, +/obj/machinery/door/airlock/glass{ + name = "Central Access" + }, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/turf/simulated/floor/tiled/steel_grid, +/area/hallway/primary/seconddeck/starboard) +"cjL" = ( +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/effect/floor_decal/steeldecal/steel_decals4{ + dir = 1 + }, +/obj/effect/floor_decal/steeldecal/steel_decals4{ + dir = 6 + }, +/turf/simulated/floor/tiled, +/area/hallway/primary/seconddeck/starboard) +"cjM" = ( +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/machinery/firealarm{ + pixel_y = 24 + }, +/obj/effect/floor_decal/borderfloor{ + dir = 1 + }, +/obj/effect/floor_decal/corner/purple/border{ + dir = 1 + }, +/obj/effect/floor_decal/borderfloor/corner2{ + dir = 4 + }, +/obj/effect/floor_decal/corner/purple/bordercorner2{ + dir = 4 + }, +/turf/simulated/floor/tiled, +/area/hallway/primary/seconddeck/starboard) +"cjN" = ( +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/effect/floor_decal/borderfloor{ + dir = 1 + }, +/obj/effect/floor_decal/corner/purple/border{ + dir = 1 + }, +/turf/simulated/floor/tiled, +/area/hallway/primary/seconddeck/starboard) +"cjO" = ( +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/effect/floor_decal/borderfloor/corner{ + dir = 1 + }, +/obj/effect/floor_decal/corner/purple/bordercorner{ + dir = 1 + }, +/turf/simulated/floor/tiled, +/area/hallway/primary/seconddeck/starboard) +"cjP" = ( +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/turf/simulated/floor/tiled, +/area/hallway/primary/seconddeck/starboard) +"cjQ" = ( +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/effect/floor_decal/borderfloor/corner{ + dir = 4 + }, +/obj/effect/floor_decal/corner/purple/bordercorner{ + dir = 4 + }, +/turf/simulated/floor/tiled, +/area/hallway/primary/seconddeck/starboard) +"cjR" = ( +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/machinery/atmospherics/unary/vent_scrubber/on, +/obj/effect/floor_decal/borderfloor{ + dir = 1 + }, +/obj/effect/floor_decal/corner/purple/border{ + dir = 1 + }, +/turf/simulated/floor/tiled, +/area/hallway/primary/seconddeck/starboard) +"cjS" = ( +/obj/structure/disposalpipe/segment{ + dir = 8; + icon_state = "pipe-c" + }, +/turf/simulated/floor/tiled/monotile, +/area/hallway/primary/seconddeck/starboard) +"cjT" = ( +/obj/effect/floor_decal/borderfloor/corner{ + dir = 4 + }, +/obj/effect/floor_decal/corner/purple/bordercorner{ + dir = 4 + }, +/turf/simulated/floor/tiled, +/area/hallway/primary/seconddeck/starboard) +"cjU" = ( +/obj/effect/floor_decal/borderfloor{ + dir = 1 + }, +/obj/machinery/atmospherics/unary/vent_scrubber/on, +/obj/effect/floor_decal/corner/purple/border{ + dir = 1 + }, +/turf/simulated/floor/tiled, +/area/hallway/primary/seconddeck/starboard) +"cjV" = ( +/obj/effect/floor_decal/borderfloor{ + dir = 1 + }, +/obj/effect/floor_decal/corner/purple/border{ + dir = 1 + }, +/turf/simulated/floor/tiled, +/area/hallway/primary/seconddeck/starboard) +"cjW" = ( +/obj/effect/floor_decal/borderfloor/corner{ + dir = 1 + }, +/obj/effect/floor_decal/corner/purple/bordercorner{ + dir = 1 + }, +/turf/simulated/floor/tiled, +/area/hallway/primary/seconddeck/starboard) +"cjX" = ( +/obj/machinery/door/firedoor/border_only, +/turf/simulated/floor/tiled, +/area/hallway/primary/seconddeck/starboard) +"cjY" = ( +/obj/effect/floor_decal/borderfloor{ + dir = 1 + }, +/obj/effect/floor_decal/corner/purple/border{ + dir = 1 + }, +/obj/machinery/atm{ + pixel_y = 30 + }, +/turf/simulated/floor/tiled, +/area/hallway/primary/seconddeck/starboard) +"cjZ" = ( +/obj/machinery/atmospherics/unary/vent_pump/on, +/obj/effect/floor_decal/borderfloor{ + dir = 1 + }, +/obj/effect/floor_decal/corner/purple/border{ + dir = 1 + }, +/turf/simulated/floor/tiled, +/area/hallway/primary/seconddeck/starboard) +"cka" = ( +/obj/machinery/light{ + dir = 1 + }, +/obj/effect/floor_decal/borderfloor{ + dir = 1 + }, +/obj/effect/floor_decal/corner/purple/border{ + dir = 1 + }, +/turf/simulated/floor/tiled, +/area/hallway/primary/seconddeck/starboard) +"ckb" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/yellow{ + dir = 6 + }, +/obj/machinery/hologram/holopad, +/obj/effect/floor_decal/industrial/outline/grey, +/turf/simulated/floor/tiled/hydro, +/area/rnd/xenobiology/xenoflora) +"ckc" = ( +/obj/effect/floor_decal/steeldecal/steel_decals4, +/obj/effect/floor_decal/steeldecal/steel_decals4{ + dir = 10 + }, +/turf/simulated/floor/tiled, +/area/hallway/primary/seconddeck/starboard) +"ckd" = ( +/obj/machinery/door/firedoor/glass, +/obj/machinery/door/airlock/glass{ + name = "Central Access" + }, +/turf/simulated/floor/tiled, +/area/hallway/primary/seconddeck/starboard) +"cke" = ( +/obj/effect/floor_decal/steeldecal/steel_decals4{ + dir = 1 + }, +/obj/effect/floor_decal/steeldecal/steel_decals4{ + dir = 6 + }, +/turf/simulated/floor/tiled, +/area/hallway/primary/seconddeck/starboard) +"ckf" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/obj/structure/cable{ + d1 = 1; + d2 = 2; + icon_state = "1-2"; + pixel_y = 0 + }, +/obj/effect/floor_decal/borderfloor{ + dir = 1 + }, +/obj/effect/floor_decal/corner/green/border{ + dir = 1 + }, +/obj/effect/floor_decal/borderfloor/corner2{ + dir = 4 + }, +/obj/effect/floor_decal/corner/green/bordercorner2{ + dir = 4 + }, +/turf/simulated/floor/tiled, +/area/hallway/primary/seconddeck/starboard) +"ckg" = ( +/obj/effect/floor_decal/borderfloorblack{ + dir = 5 + }, +/obj/effect/floor_decal/industrial/danger{ + dir = 5 + }, +/turf/simulated/floor/tiled/techfloor/grid, +/area/hallway/primary/seconddeck/starboard) +"ckh" = ( +/obj/structure/ladder, +/turf/simulated/floor/plating, +/area/maintenance/research_medical) +"cki" = ( +/obj/structure/sign/warning/secure_area, +/turf/simulated/wall/r_wall, +/area/hallway/secondary/seconddeck/research_medical) +"ckj" = ( +/obj/effect/floor_decal/industrial/hatch/yellow, +/obj/machinery/door/blast/regular{ + density = 0; + icon_state = "pdoor0"; + id = "Biohazard"; + name = "Biohazard Shutter"; + opacity = 0 + }, +/obj/machinery/camera/network/medbay{ + c_tag = "MED - Joint Hallway Access"; + dir = 4 + }, +/turf/simulated/floor/tiled/dark, +/area/hallway/secondary/seconddeck/research_medical) +"ckk" = ( +/obj/effect/floor_decal/industrial/hatch/yellow, +/obj/machinery/door/blast/regular{ + density = 0; + icon_state = "pdoor0"; + id = "Biohazard"; + name = "Biohazard Shutter"; + opacity = 0 + }, +/obj/structure/disposalpipe/segment, +/turf/simulated/floor/tiled/dark, +/area/hallway/secondary/seconddeck/research_medical) +"ckl" = ( +/obj/effect/floor_decal/industrial/hatch/yellow, +/obj/machinery/door/blast/regular{ + density = 0; + icon_state = "pdoor0"; + id = "Biohazard"; + name = "Biohazard Shutter"; + opacity = 0 + }, +/turf/simulated/floor/tiled/dark, +/area/hallway/secondary/seconddeck/research_medical) +"ckm" = ( +/obj/effect/floor_decal/borderfloorwhite{ + dir = 1 + }, +/obj/effect/floor_decal/corner/purple/border{ + dir = 1 + }, +/turf/simulated/floor/tiled/white, +/area/hallway/secondary/seconddeck/research_medical) +"ckn" = ( +/obj/machinery/light{ + dir = 1 + }, +/obj/effect/floor_decal/borderfloorwhite{ + dir = 1 + }, +/obj/effect/floor_decal/corner/purple/border{ + dir = 1 + }, +/turf/simulated/floor/tiled/white, +/area/hallway/secondary/seconddeck/research_medical) +"cko" = ( +/obj/machinery/atmospherics/unary/vent_pump/on, +/obj/structure/extinguisher_cabinet{ + pixel_y = 30 + }, +/obj/effect/floor_decal/borderfloorwhite{ + dir = 1 + }, +/obj/effect/floor_decal/corner/purple/border{ + dir = 1 + }, +/turf/simulated/floor/tiled/white, +/area/hallway/secondary/seconddeck/research_medical) +"ckp" = ( +/obj/machinery/firealarm{ + dir = 2; + pixel_y = 24 + }, +/obj/effect/floor_decal/borderfloorwhite/corner{ + dir = 1 + }, +/obj/effect/floor_decal/corner/purple/bordercorner{ + dir = 1 + }, +/turf/simulated/floor/tiled/white, +/area/hallway/secondary/seconddeck/research_medical) +"ckq" = ( +/obj/effect/floor_decal/industrial/warning{ + dir = 4 + }, +/turf/simulated/floor/tiled/white, +/area/hallway/secondary/seconddeck/research_medical) +"ckr" = ( +/obj/machinery/door/blast/regular{ + density = 0; + dir = 2; + icon_state = "pdoor0"; + id = "virologyquar"; + name = "Virology Emergency Quarantine Blast Doors"; + opacity = 0 + }, +/obj/effect/floor_decal/industrial/hatch/yellow, +/obj/structure/sign/warning/secure_area{ + pixel_y = 32 + }, +/obj/machinery/camera/network/medbay{ + c_tag = "MED - Joint Hallway"; + dir = 8 + }, +/turf/simulated/floor/tiled/dark, +/area/hallway/secondary/seconddeck/research_medical) +"cks" = ( +/obj/structure/sink{ + icon_state = "sink"; + dir = 8; + pixel_x = -12; + pixel_y = 2 + }, +/obj/machinery/alarm{ + pixel_y = 23 + }, +/turf/simulated/floor/tiled/steel, +/area/medical/virology) +"ckt" = ( +/obj/machinery/shower{ + dir = 8; + icon_state = "shower"; + pixel_x = -5; + pixel_y = 0 + }, +/obj/structure/curtain/open/shower/medical, +/turf/simulated/floor/tiled/steel, +/area/medical/virology) +"cku" = ( +/obj/effect/floor_decal/industrial/warning/corner{ + dir = 8 + }, +/obj/machinery/button/remote/blast_door{ + desc = "A remote control-switch for shutters."; + id = "virologyquar"; + name = "Virology Emergency Lockdown Control"; + pixel_x = -26; + pixel_y = 0; + req_access = list(5) + }, +/obj/machinery/camera/network/medbay{ + c_tag = "MED - Virology Port"; + dir = 4 + }, +/obj/effect/floor_decal/borderfloorwhite/corner{ + dir = 1 + }, +/obj/effect/floor_decal/corner/lime/bordercorner{ + dir = 1 + }, +/turf/simulated/floor/tiled/white, +/area/medical/virology) +"ckv" = ( +/obj/structure/bed/chair/office/dark{ + dir = 4 + }, +/obj/effect/floor_decal/borderfloorwhite/corner{ + dir = 4 + }, +/obj/effect/floor_decal/corner/lime/bordercorner{ + dir = 4 + }, +/turf/simulated/floor/tiled/white, +/area/medical/virology) +"ckw" = ( +/obj/machinery/disease2/isolator, +/obj/effect/floor_decal/borderfloorwhite{ + dir = 5 + }, +/obj/effect/floor_decal/corner/lime/border{ + dir = 5 + }, +/turf/simulated/floor/tiled/white, +/area/medical/virology) +"ckx" = ( +/obj/machinery/door/blast/regular{ + icon_state = "pdoor1"; + id = "EngineVent"; + name = "Reactor Vent"; + p_open = 0 + }, +/obj/machinery/shield_diffuser, +/turf/simulated/floor/reinforced/airless, +/area/engineering/engine_room) +"cky" = ( +/turf/simulated/floor/greengrid/nitrogen, +/area/engineering/engine_room) +"ckz" = ( +/obj/machinery/mass_driver{ + dir = 8; + id = "enginecore" + }, +/obj/machinery/power/supermatter{ + layer = 4 + }, +/obj/effect/engine_setup/core, +/turf/simulated/floor/greengrid/nitrogen, +/area/engineering/engine_room) +"ckA" = ( +/obj/machinery/air_sensor{ + frequency = 1438; + id_tag = "engine_sensor"; + output = 63 + }, +/obj/effect/floor_decal/industrial/warning{ + icon_state = "warning"; + dir = 4 + }, +/obj/effect/floor_decal/industrial/warning{ + icon_state = "warning"; + dir = 8 + }, +/turf/simulated/floor/reinforced/nitrogen{ + nitrogen = 82.1472 + }, +/area/engineering/engine_room) +"ckB" = ( +/obj/effect/wingrille_spawn/reinforced_phoron, +/obj/machinery/door/blast/regular{ + dir = 1; + id = "SupermatterPort"; + layer = 3.3; + name = "Reactor Blast Door" + }, +/turf/simulated/floor, +/area/engineering/engine_room) +"ckC" = ( +/obj/machinery/atmospherics/pipe/simple/visible/yellow, +/obj/effect/floor_decal/industrial/warning{ + icon_state = "warning"; + dir = 8 + }, +/obj/effect/floor_decal/industrial/hatch/yellow, +/turf/simulated/floor, +/area/engineering/engine_room) +"ckD" = ( +/obj/machinery/atmospherics/pipe/simple/visible/cyan, +/obj/effect/floor_decal/industrial/hatch/yellow, +/turf/simulated/floor, +/area/engineering/engine_room) +"ckE" = ( +/obj/machinery/power/emitter{ + anchored = 1; + dir = 8; + id = "EngineEmitter"; + state = 2 + }, +/obj/structure/cable/cyan{ + d2 = 4; + icon_state = "0-4" + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 5 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 6 + }, +/turf/simulated/floor, +/area/engineering/engine_room) +"ckF" = ( +/obj/machinery/atmospherics/pipe/simple/visible/green, +/obj/effect/floor_decal/industrial/warning{ + icon_state = "warning"; + dir = 8 + }, +/obj/structure/cable/cyan{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/turf/simulated/floor, +/area/engineering/engine_room) +"ckG" = ( +/obj/structure/cable/cyan{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, +/obj/structure/cable/cyan{ + d1 = 1; + d2 = 4; + icon_state = "1-4" + }, +/obj/machinery/light{ + dir = 4; + icon_state = "tube1" + }, +/turf/simulated/floor, +/area/engineering/engine_room) +"ckH" = ( +/obj/machinery/door/firedoor/border_only, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, +/obj/machinery/door/blast/regular{ + density = 0; + dir = 1; + icon_state = "pdoor0"; + id = "EngineBlast"; + name = "Engine Monitoring Room Blast Doors"; + opacity = 0 + }, +/obj/structure/cable/cyan{ + d1 = 2; + d2 = 8; + icon_state = "2-8" + }, +/obj/effect/wingrille_spawn/reinforced_phoron, +/turf/simulated/floor, +/area/engineering/engine_monitoring) +"ckI" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, +/obj/machinery/computer/power_monitor, +/turf/simulated/floor/tiled, +/area/engineering/engine_monitoring) +"ckJ" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, +/obj/structure/table/reinforced, +/obj/machinery/button/remote/blast_door{ + desc = "A remote control-switch for the engine control room blast doors."; + id = "EngineBlast"; + name = "Engine Monitoring Room Blast Doors"; + pixel_x = -6; + pixel_y = -3; + req_access = list(10) + }, +/obj/machinery/button/remote/blast_door{ + desc = "A remote control-switch for the engine charging port."; + id = "SupermatterPort"; + name = "Reactor Blast Doors"; + pixel_x = -6; + pixel_y = 7; + req_access = list(10) + }, +/obj/machinery/button/remote/emitter{ + desc = "A remote control-switch for the engine emitter."; + id = "EngineEmitter"; + name = "Engine Emitter"; + pixel_x = 6; + pixel_y = 2; + req_access = list(10) + }, +/obj/structure/cable/cyan{ + d1 = 2; + d2 = 4; + icon_state = "2-4" + }, +/obj/effect/engine_setup/shutters, +/turf/simulated/floor/tiled, +/area/engineering/engine_monitoring) +"ckK" = ( +/obj/structure/cable/cyan{ + d1 = 1; + d2 = 8; + icon_state = "1-8" + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, +/obj/machinery/hologram/holopad, +/obj/effect/floor_decal/industrial/outline/grey, +/turf/simulated/floor/tiled, +/area/engineering/engine_monitoring) +"ckL" = ( +/obj/machinery/atmospherics/pipe/manifold/hidden/supply{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{ + dir = 4 + }, +/obj/structure/cable{ + d1 = 1; + d2 = 2; + icon_state = "1-2"; + pixel_y = 0 + }, +/turf/simulated/floor/tiled, +/area/engineering/engine_monitoring) +"ckM" = ( +/obj/machinery/disposal, +/obj/machinery/camera/network/engine{ + c_tag = "ENG - Monitoring Room"; + dir = 8 + }, +/obj/structure/disposalpipe/trunk{ + dir = 1 + }, +/turf/simulated/floor/tiled, +/area/engineering/engine_monitoring) +"ckN" = ( +/obj/effect/floor_decal/industrial/warning/corner{ + icon_state = "warningcorner"; + dir = 4 + }, +/obj/machinery/camera/network/engineering{ + c_tag = "ENG - Engineering Hallway 3"; + dir = 1 + }, +/turf/simulated/floor/tiled, +/area/engineering/hallway/engineer_hallway) +"ckO" = ( +/obj/structure/cable{ + d1 = 1; + d2 = 2; + icon_state = "1-2"; + pixel_y = 0 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/obj/machinery/door/firedoor, +/obj/structure/disposalpipe/segment, +/turf/simulated/floor/plating, +/area/maintenance/apmaint) +"ckP" = ( +/obj/effect/floor_decal/borderfloorblack{ + dir = 8 + }, +/obj/effect/floor_decal/industrial/danger{ + dir = 8 + }, +/turf/simulated/floor/tiled/techfloor/grid, +/area/hallway/primary/seconddeck/port) +"ckQ" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 6 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 5 + }, +/turf/simulated/floor/tiled, +/area/hallway/primary/seconddeck/port) +"ckR" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/obj/machinery/camera/network/second_deck{ + c_tag = "Second Deck - Port Hallway Four"; + dir = 8 + }, +/obj/machinery/light{ + icon_state = "tube1"; + dir = 4 + }, +/turf/simulated/floor/tiled, +/area/hallway/primary/seconddeck/port) +"ckS" = ( +/obj/effect/wingrille_spawn/reinforced, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, +/obj/machinery/door/firedoor/border_only, +/turf/simulated/floor/plating, +/area/hallway/primary/seconddeck/port) +"ckT" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, +/turf/simulated/floor/tiled, +/area/hallway/primary/seconddeck/port) +"ckU" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, +/turf/simulated/floor/tiled/monotile, +/area/hallway/primary/seconddeck/port) +"ckV" = ( +/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/turf/simulated/floor/tiled/monotile, +/area/hallway/primary/seconddeck/port) +"ckW" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/turf/simulated/floor/tiled/monotile, +/area/hallway/primary/seconddeck/port) +"ckX" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, +/obj/machinery/hologram/holopad, +/obj/effect/floor_decal/industrial/outline/grey, +/obj/item/device/radio/beacon, +/obj/machinery/navbeacon/patrol{ + location = "ENG"; + next_patrol = "CH4" + }, +/turf/simulated/floor/tiled/dark, +/area/hallway/primary/seconddeck/port) +"ckY" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/manifold/hidden/supply{ + dir = 1 + }, +/turf/simulated/floor/tiled/monotile, +/area/hallway/primary/seconddeck/port) +"ckZ" = ( +/obj/machinery/door/firedoor/glass, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, +/turf/simulated/floor/tiled/monotile, +/area/hallway/primary/seconddeck/port) +"cla" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{ + dir = 1 + }, +/turf/simulated/floor/tiled/monotile, +/area/hallway/primary/seconddeck/port) +"clb" = ( +/obj/machinery/atmospherics/pipe/manifold/hidden/supply, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, +/turf/simulated/floor/tiled/monotile, +/area/hallway/primary/seconddeck/port) +"clc" = ( +/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{ + dir = 1 + }, +/obj/structure/cable{ + d1 = 2; + d2 = 4; + icon_state = "2-4" + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/turf/simulated/floor/tiled/monotile, +/area/hallway/primary/seconddeck/port) +"cld" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, +/obj/structure/cable{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/obj/machinery/atmospherics/pipe/manifold/hidden/supply{ + dir = 1 + }, +/obj/structure/cable{ + d1 = 1; + d2 = 4; + icon_state = "1-4" + }, +/turf/simulated/floor/tiled/monotile, +/area/hallway/primary/seconddeck/port) +"cle" = ( +/obj/machinery/atmospherics/pipe/manifold/hidden/supply, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, +/obj/structure/cable{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/turf/simulated/floor/tiled/monotile, +/area/hallway/primary/seconddeck/port) +"clf" = ( +/obj/structure/table/reinforced, +/obj/machinery/recharger, +/obj/item/device/radio{ + frequency = 1487; + icon_state = "med_walkietalkie"; + name = "Medbay Emergency Radio Link" + }, +/obj/machinery/vending/wallmed1{ + name = "NanoMed Wall"; + pixel_x = -25; + pixel_y = 0 + }, +/obj/effect/floor_decal/borderfloorwhite{ + dir = 8 + }, +/obj/effect/floor_decal/corner/paleblue/border{ + dir = 8 + }, +/turf/simulated/floor/tiled/white, +/area/medical/first_aid_station/seconddeck/fore) +"clg" = ( +/obj/structure/cable{ + d1 = 1; + d2 = 4; + icon_state = "1-4" + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/turf/simulated/floor/tiled/white, +/area/medical/first_aid_station/seconddeck/fore) +"clh" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, +/obj/structure/cable{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/obj/machinery/light{ + dir = 4 + }, +/turf/simulated/floor/tiled, +/area/hallway/primary/seconddeck/port) +"cli" = ( +/obj/effect/wingrille_spawn/reinforced, +/obj/machinery/door/firedoor/border_only, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, +/obj/structure/cable{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/turf/simulated/floor/plating, +/area/hallway/primary/seconddeck/port) +"clj" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, +/obj/structure/cable{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/turf/simulated/floor/tiled, +/area/hallway/primary/seconddeck/fpcenter) +"clk" = ( +/obj/structure/cable{ + d1 = 1; + d2 = 2; + icon_state = "1-2"; + pixel_y = 0 + }, +/obj/structure/cable{ + d1 = 1; + d2 = 8; + icon_state = "1-8" + }, +/obj/machinery/atmospherics/pipe/manifold4w/hidden/scrubbers, +/obj/machinery/atmospherics/pipe/manifold4w/hidden/supply, +/obj/structure/cable{ + d1 = 1; + d2 = 4; + icon_state = "1-4" + }, +/turf/simulated/floor/tiled/monotile, +/area/hallway/primary/seconddeck/fpcenter) +"cll" = ( +/obj/structure/cable{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, +/turf/simulated/floor/tiled/monotile, +/area/hallway/primary/seconddeck/fpcenter) +"clm" = ( +/obj/structure/cable{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers, +/obj/machinery/atmospherics/pipe/manifold/hidden/supply{ + dir = 1 + }, +/turf/simulated/floor/tiled/monotile, +/area/hallway/primary/seconddeck/fpcenter) +"cln" = ( +/obj/structure/cable{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/manifold/hidden/supply{ + dir = 4 + }, +/obj/machinery/hologram/holopad, +/obj/effect/floor_decal/industrial/outline/grey, +/obj/structure/cable{ + d1 = 1; + d2 = 8; + icon_state = "1-8" + }, +/turf/simulated/floor/tiled/dark, +/area/hallway/primary/seconddeck/fpcenter) +"clo" = ( +/obj/structure/cable{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/turf/simulated/floor/tiled, +/area/hallway/primary/seconddeck/fpcenter) +"clp" = ( +/obj/structure/cable{ + d1 = 1; + d2 = 8; + icon_state = "1-8" + }, +/turf/simulated/floor/tiled/dark, +/area/hallway/primary/seconddeck/fpcenter) +"clq" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 6 + }, +/obj/machinery/meter, +/obj/structure/cable/green{ + d1 = 2; + d2 = 4; + icon_state = "2-4" + }, +/obj/structure/catwalk, +/turf/simulated/floor/plating, +/area/maintenance/central) +"clr" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 6 + }, +/obj/structure/cable/green{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/obj/structure/catwalk, +/turf/simulated/floor/plating, +/area/maintenance/central) +"cls" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 9; + pixel_y = 0 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 9 + }, +/obj/structure/cable/green{ + d1 = 1; + d2 = 8; + icon_state = "1-8" + }, +/obj/machinery/alarm{ + dir = 8; + pixel_x = 22; + pixel_y = 0 + }, +/turf/simulated/floor/plating, +/area/maintenance/central) +"clt" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/obj/structure/cable/green{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/obj/machinery/alarm{ + dir = 4; + icon_state = "alarm0"; + pixel_x = -22 + }, +/obj/structure/catwalk, +/turf/simulated/floor/plating, +/area/maintenance/central) +"clu" = ( +/obj/structure/cable{ + icon_state = "0-4"; + d2 = 4 + }, +/obj/machinery/power/apc{ + dir = 1; + name = "north bump"; + pixel_x = 0; + pixel_y = 24 + }, +/obj/structure/catwalk, +/turf/simulated/floor/plating, +/area/maintenance/central) +"clv" = ( +/obj/structure/cable{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/obj/structure/catwalk, +/turf/simulated/floor/plating, +/area/maintenance/central) +"clw" = ( +/obj/machinery/door/firedoor/border_only, +/obj/machinery/door/airlock/maintenance{ + name = "Central Maintenance Access"; + req_one_access = list(12,19) + }, +/obj/structure/cable{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/turf/simulated/floor/plating, +/area/maintenance/central) +"clx" = ( +/obj/structure/cable{ + d1 = 2; + d2 = 4; + icon_state = "2-4" + }, +/obj/structure/cable{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/turf/simulated/floor/tiled/dark, +/area/hallway/primary/seconddeck/ascenter) +"cly" = ( +/obj/structure/cable{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/turf/simulated/floor/tiled, +/area/hallway/primary/seconddeck/ascenter) +"clz" = ( +/obj/effect/floor_decal/industrial/outline/grey, +/obj/machinery/hologram/holopad, +/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{ + dir = 8 + }, +/obj/machinery/atmospherics/pipe/manifold/hidden/supply{ + dir = 8 + }, +/obj/structure/cable{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/turf/simulated/floor/tiled/dark, +/area/hallway/primary/seconddeck/ascenter) +"clA" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/obj/structure/cable{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/turf/simulated/floor/tiled/monotile, +/area/hallway/primary/seconddeck/ascenter) +"clB" = ( +/obj/machinery/atmospherics/pipe/manifold/hidden/supply, +/obj/structure/cable{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{ + dir = 1 + }, +/turf/simulated/floor/tiled/monotile, +/area/hallway/primary/seconddeck/ascenter) +"clC" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/obj/structure/cable{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, +/turf/simulated/floor/tiled/monotile, +/area/hallway/primary/seconddeck/ascenter) +"clD" = ( +/obj/machinery/atmospherics/pipe/manifold4w/hidden/scrubbers, +/obj/machinery/atmospherics/pipe/manifold4w/hidden/supply, +/obj/structure/cable{ + d1 = 1; + d2 = 4; + icon_state = "1-4" + }, +/obj/structure/cable{ + d1 = 2; + d2 = 4; + icon_state = "2-4" + }, +/obj/structure/cable{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/turf/simulated/floor/tiled/monotile, +/area/hallway/primary/seconddeck/ascenter) +"clE" = ( +/obj/structure/cable{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/turf/simulated/floor/tiled, +/area/hallway/primary/seconddeck/ascenter) +"clF" = ( +/obj/effect/wingrille_spawn/reinforced, +/obj/machinery/door/firedoor/border_only, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/obj/structure/cable{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/turf/simulated/floor/plating, +/area/hallway/primary/seconddeck/starboard) +"clG" = ( +/obj/structure/cable{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/obj/machinery/light{ + dir = 8; + icon_state = "tube1"; + pixel_y = 0 + }, +/turf/simulated/floor/tiled, +/area/hallway/primary/seconddeck/starboard) +"clH" = ( +/obj/structure/cable{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/turf/simulated/floor/tiled/monotile, +/area/hallway/primary/seconddeck/starboard) +"clI" = ( +/obj/structure/cable{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/obj/machinery/atmospherics/pipe/manifold/hidden/supply{ + dir = 1 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, +/turf/simulated/floor/tiled/monotile, +/area/hallway/primary/seconddeck/starboard) +"clJ" = ( +/obj/structure/cable{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, +/turf/simulated/floor/tiled/monotile, +/area/hallway/primary/seconddeck/starboard) +"clK" = ( +/obj/structure/cable{ + d1 = 2; + d2 = 8; + icon_state = "2-8" + }, +/obj/structure/cable{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers, +/turf/simulated/floor/tiled/monotile, +/area/hallway/primary/seconddeck/starboard) +"clL" = ( +/obj/structure/cable{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/obj/effect/floor_decal/industrial/outline/grey, +/obj/machinery/hologram/holopad, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/turf/simulated/floor/tiled/dark, +/area/hallway/primary/seconddeck/starboard) +"clM" = ( +/obj/structure/cable{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/turf/simulated/floor/tiled/monotile, +/area/hallway/primary/seconddeck/starboard) +"clN" = ( +/obj/machinery/door/firedoor/glass, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, +/obj/structure/cable{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/turf/simulated/floor/tiled/monotile, +/area/hallway/primary/seconddeck/starboard) +"clO" = ( +/obj/structure/cable{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/obj/machinery/atmospherics/pipe/manifold/hidden/supply, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, +/turf/simulated/floor/tiled/monotile, +/area/hallway/primary/seconddeck/starboard) +"clP" = ( +/obj/structure/cable{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/obj/structure/cable{ + d1 = 2; + d2 = 8; + icon_state = "2-8" + }, +/obj/effect/floor_decal/industrial/outline/grey, +/obj/machinery/hologram/holopad, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/obj/item/device/radio/beacon, +/obj/machinery/navbeacon/patrol{ + location = "MED"; + next_patrol = "CH10" + }, +/turf/simulated/floor/tiled/dark, +/area/hallway/primary/seconddeck/starboard) +"clQ" = ( +/obj/structure/cable{ + d1 = 1; + d2 = 8; + icon_state = "1-8" + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/obj/structure/cable{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{ + dir = 1 + }, +/turf/simulated/floor/tiled/monotile, +/area/hallway/primary/seconddeck/starboard) +"clR" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/obj/structure/cable{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/turf/simulated/floor/tiled, +/area/hallway/primary/seconddeck/starboard) +"clS" = ( +/obj/effect/wingrille_spawn/reinforced, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, +/obj/structure/cable{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/turf/simulated/floor/plating, +/area/hallway/primary/seconddeck/starboard) +"clT" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/yellow{ + dir = 4 + }, +/turf/simulated/floor/tiled/hydro, +/area/rnd/xenobiology/xenoflora) +"clU" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 9 + }, +/obj/structure/cable{ + d1 = 1; + d2 = 8; + icon_state = "1-8" + }, +/turf/simulated/floor/tiled, +/area/hallway/primary/seconddeck/starboard) +"clV" = ( +/obj/effect/floor_decal/borderfloorblack{ + dir = 4 + }, +/obj/effect/floor_decal/industrial/danger{ + dir = 4 + }, +/turf/simulated/floor/tiled/techfloor/grid, +/area/hallway/primary/seconddeck/starboard) +"clW" = ( +/obj/random/obstruction, +/turf/simulated/floor/plating, +/area/maintenance/research_medical) +"clX" = ( +/obj/machinery/door/firedoor/border_only, +/obj/machinery/door/airlock/maintenance{ + req_access = null; + req_one_access = list(5,12,47) + }, +/turf/simulated/floor/plating, +/area/hallway/secondary/seconddeck/research_medical) +"clY" = ( +/obj/effect/floor_decal/industrial/warning{ + dir = 1 + }, +/obj/effect/floor_decal/industrial/warning, +/turf/simulated/floor/tiled, +/area/hallway/secondary/seconddeck/research_medical) +"clZ" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 6 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 6 + }, +/obj/structure/cable/green{ + d1 = 2; + d2 = 4; + icon_state = "2-4" + }, +/obj/effect/floor_decal/industrial/warning/cee{ + icon_state = "warningcee"; + dir = 4 + }, +/obj/structure/disposalpipe/segment, +/turf/simulated/floor/tiled, +/area/hallway/secondary/seconddeck/research_medical) +"cma" = ( +/obj/effect/floor_decal/industrial/warning{ + dir = 1 + }, +/obj/effect/floor_decal/industrial/warning, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/obj/structure/cable/green{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/turf/simulated/floor/tiled, +/area/hallway/secondary/seconddeck/research_medical) +"cmb" = ( +/obj/machinery/door/firedoor/border_only, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/obj/structure/cable/green{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/turf/simulated/floor/tiled/white, +/area/hallway/secondary/seconddeck/research_medical) +"cmc" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/obj/structure/cable/green{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/turf/simulated/floor/tiled/white, +/area/hallway/secondary/seconddeck/research_medical) +"cmd" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/obj/structure/cable/green{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/obj/structure/cable/green{ + d1 = 2; + d2 = 8; + icon_state = "2-8" + }, +/turf/simulated/floor/tiled/white, +/area/hallway/secondary/seconddeck/research_medical) +"cme" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/manifold/hidden/supply, +/obj/machinery/hologram/holopad, +/obj/structure/cable/green{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/obj/effect/floor_decal/industrial/outline/grey, +/turf/simulated/floor/tiled/white, +/area/hallway/secondary/seconddeck/research_medical) +"cmf" = ( +/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{ + dir = 1 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/obj/structure/cable/green{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/turf/simulated/floor/tiled/white, +/area/hallway/secondary/seconddeck/research_medical) +"cmg" = ( +/obj/machinery/atmospherics/pipe/manifold/hidden/supply{ + dir = 1 + }, +/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{ + dir = 1 + }, +/obj/structure/cable/green{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/obj/structure/cable/green{ + d1 = 2; + d2 = 8; + icon_state = "2-8" + }, +/turf/simulated/floor/tiled/white, +/area/hallway/secondary/seconddeck/research_medical) +"cmh" = ( +/obj/effect/floor_decal/industrial/warning{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/obj/structure/cable/green{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/turf/simulated/floor/tiled/white, +/area/hallway/secondary/seconddeck/research_medical) +"cmi" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/obj/structure/cable/green{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/obj/machinery/door/blast/regular{ + density = 0; + dir = 2; + icon_state = "pdoor0"; + id = "virologyquar"; + name = "Virology Emergency Quarantine Blast Doors"; + opacity = 0 + }, +/obj/effect/floor_decal/industrial/hatch/yellow, +/turf/simulated/floor/tiled/dark, +/area/hallway/secondary/seconddeck/research_medical) +"cmj" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/obj/machinery/door/airlock/medical{ + autoclose = 0; + frequency = 1379; + icon_state = "door_locked"; + id_tag = "virology_airlock_exterior"; + locked = 1; + name = "Virology Exterior Airlock"; + req_access = list(39) + }, +/obj/machinery/access_button{ + command = "cycle_exterior"; + frequency = 1379; + master_tag = "virology_airlock_control"; + name = "Virology Access Button"; + pixel_x = 0; + pixel_y = -24; + req_access = list(39) + }, +/obj/structure/cable/green{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/turf/simulated/floor/tiled/steel_grid, +/area/medical/virology) +"cmk" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/obj/structure/cable/green{ + d1 = 2; + d2 = 8; + icon_state = "2-8" + }, +/obj/effect/floor_decal/industrial/warning{ + icon_state = "warning"; + dir = 9 + }, +/turf/simulated/floor/tiled/white, +/area/medical/virology) +"cml" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/obj/effect/floor_decal/industrial/warning{ + dir = 5 + }, +/turf/simulated/floor/tiled/white, +/area/medical/virology) +"cmm" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/obj/machinery/door/airlock/medical{ + autoclose = 0; + frequency = 1379; + icon_state = "door_locked"; + id_tag = "virology_airlock_interior"; + locked = 1; + name = "Virology Interior Airlock"; + req_access = list(39) + }, +/obj/machinery/access_button{ + command = "cycle_interior"; + frequency = 1379; + master_tag = "virology_airlock_control"; + name = "Virology Access Button"; + pixel_x = 0; + pixel_y = 24; + req_access = list(39) + }, +/turf/simulated/floor/tiled/steel_grid, +/area/medical/virology) +"cmn" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, +/obj/effect/floor_decal/industrial/warning{ + icon_state = "warning"; + dir = 8 + }, +/turf/simulated/floor/tiled/white, +/area/medical/virology) +"cmo" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/black, +/obj/machinery/atmospherics/pipe/manifold4w/hidden/supply, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, +/turf/simulated/floor/tiled/white, +/area/medical/virology) +"cmp" = ( +/obj/structure/table/glass, +/obj/item/weapon/storage/lockbox/vials, +/obj/item/weapon/reagent_containers/syringe/antiviral, +/obj/item/weapon/reagent_containers/syringe/antiviral, +/obj/item/weapon/reagent_containers/syringe/antiviral, +/obj/item/weapon/reagent_containers/syringe/antiviral, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 10 + }, +/turf/simulated/floor/tiled/white, +/area/medical/virology) +"cmq" = ( +/obj/structure/table/glass, +/obj/item/weapon/storage/fancy/vials, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/turf/simulated/floor/tiled/white, +/area/medical/virology) +"cmr" = ( +/obj/item/weapon/storage/box/syringes{ + pixel_x = 4; + pixel_y = 4 + }, +/obj/item/weapon/storage/box/beakers, +/obj/item/weapon/reagent_containers/dropper, +/obj/structure/table/glass, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/turf/simulated/floor/tiled/white, +/area/medical/virology) +"cms" = ( +/obj/structure/table/glass, +/obj/item/weapon/storage/box/gloves{ + pixel_x = 4; + pixel_y = 4 + }, +/obj/item/weapon/storage/box/masks, +/obj/machinery/atmospherics/pipe/simple/hidden/black, +/obj/machinery/atmospherics/pipe/manifold/hidden/supply{ + dir = 4 + }, +/turf/simulated/floor/tiled/white, +/area/medical/virology) +"cmt" = ( +/obj/machinery/hologram/holopad, +/obj/effect/floor_decal/industrial/outline/grey, +/turf/simulated/floor/tiled/white, +/area/medical/virology) +"cmu" = ( +/obj/machinery/computer/centrifuge, +/obj/machinery/camera/network/medbay{ + c_tag = "MED - Virology Starboard"; + dir = 8 + }, +/obj/machinery/light{ + dir = 4; + icon_state = "tube1"; + pixel_x = 0 + }, +/obj/effect/floor_decal/borderfloorwhite{ + dir = 4 + }, +/obj/effect/floor_decal/corner/lime/border{ + dir = 4 + }, +/turf/simulated/floor/tiled/white, +/area/medical/virology) +"cmv" = ( +/obj/machinery/door/firedoor/glass, +/obj/effect/wingrille_spawn/reinforced, +/turf/simulated/floor/plating, +/area/medical/virology) +"cmw" = ( +/obj/effect/floor_decal/industrial/warning/cee{ + icon_state = "warningcee"; + dir = 8 + }, +/obj/machinery/camera/network/engine{ + c_tag = "ENG - Engine Core 2"; + dir = 1 + }, +/turf/simulated/floor/reinforced/nitrogen{ + nitrogen = 82.1472 + }, +/area/engineering/engine_room) +"cmx" = ( +/obj/machinery/atmospherics/unary/vent_pump/engine{ + dir = 4; + external_pressure_bound = 100; + external_pressure_bound_default = 0; + frequency = 1438; + icon_state = "map_vent_in"; + id_tag = "cooling_out"; + initialize_directions = 1; + pressure_checks = 1; + pressure_checks_default = 1; + pump_direction = 0; + use_power = 1 + }, +/obj/effect/floor_decal/industrial/warning{ + dir = 6 + }, +/obj/effect/floor_decal/industrial/warning/corner{ + icon_state = "warningcorner"; + dir = 1 + }, +/turf/simulated/floor/reinforced/nitrogen{ + nitrogen = 82.1472 + }, +/area/engineering/engine_room) +"cmy" = ( +/obj/machinery/atmospherics/pipe/simple/visible/yellow{ + dir = 4 + }, +/obj/machinery/door/airlock/hatch{ + icon_state = "door_locked"; + id_tag = "engine_access_hatch"; + locked = 1; + req_access = list(11) + }, +/turf/simulated/floor, +/area/engineering/engine_room) +"cmz" = ( +/obj/machinery/atmospherics/pipe/manifold4w/visible/yellow, +/obj/effect/floor_decal/industrial/warning{ + icon_state = "warning"; + dir = 8 + }, +/obj/effect/floor_decal/industrial/warning{ + dir = 1 + }, +/turf/simulated/floor, +/area/engineering/engine_room) +"cmA" = ( +/obj/machinery/atmospherics/pipe/simple/visible/yellow{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/visible/cyan, +/obj/effect/floor_decal/industrial/warning{ + dir = 1 + }, +/turf/simulated/floor, +/area/engineering/engine_room) +"cmB" = ( +/obj/machinery/atmospherics/valve/digital{ + dir = 4; + name = "Emergency Cooling Valve 2" + }, +/obj/effect/floor_decal/industrial/warning{ + dir = 1 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/effect/floor_decal/industrial/outline, +/turf/simulated/floor, +/area/engineering/engine_room) +"cmC" = ( +/obj/machinery/atmospherics/pipe/manifold/visible/green{ + icon_state = "map"; + dir = 4 + }, +/obj/effect/floor_decal/industrial/warning/corner{ + dir = 8 + }, +/turf/simulated/floor, +/area/engineering/engine_room) +"cmD" = ( +/turf/simulated/floor, +/area/engineering/engine_room) +"cmE" = ( +/obj/machinery/door/firedoor/glass, +/obj/machinery/door/blast/regular{ + density = 0; + dir = 1; + icon_state = "pdoor0"; + id = "EngineBlast"; + name = "Engine Monitoring Room Blast Doors"; + opacity = 0 + }, +/obj/structure/cable/cyan{ + d1 = 1; + d2 = 4; + icon_state = "1-4" + }, +/obj/effect/wingrille_spawn/reinforced_phoron, +/turf/simulated/floor, +/area/engineering/engine_monitoring) +"cmF" = ( +/obj/machinery/computer/security/engineering, +/obj/structure/cable/cyan{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/turf/simulated/floor/tiled, +/area/engineering/engine_monitoring) +"cmG" = ( +/obj/structure/bed/chair/office/dark{ + dir = 8 + }, +/obj/effect/landmark/start{ + name = "Station Engineer" + }, +/obj/structure/cable/cyan{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/obj/structure/cable/cyan{ + d1 = 2; + d2 = 8; + icon_state = "2-8" + }, +/turf/simulated/floor/tiled, +/area/engineering/engine_monitoring) +"cmH" = ( +/turf/simulated/floor/tiled, +/area/engineering/engine_monitoring) +"cmI" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/obj/structure/cable{ + d1 = 1; + d2 = 2; + icon_state = "1-2"; + pixel_y = 0 + }, +/turf/simulated/floor/tiled, +/area/engineering/engine_monitoring) +"cmJ" = ( +/obj/structure/table/steel, +/obj/machinery/microwave{ + pixel_x = -2; + pixel_y = 5 + }, +/turf/simulated/floor/tiled, +/area/engineering/engine_monitoring) +"cmK" = ( +/obj/structure/sign/warning/radioactive, +/turf/simulated/wall/r_wall, +/area/engineering/engine_monitoring) +"cmL" = ( +/turf/simulated/floor/plating, +/area/maintenance/apmaint) +"cmM" = ( +/obj/structure/cable{ + d1 = 1; + d2 = 2; + icon_state = "1-2"; + pixel_y = 0 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/obj/structure/disposalpipe/segment, +/turf/simulated/floor/plating, +/area/maintenance/apmaint) +"cmN" = ( +/obj/structure/ladder, +/turf/simulated/floor/plating, +/area/maintenance/apmaint) +"cmO" = ( +/obj/effect/floor_decal/borderfloorblack{ + dir = 10 + }, +/obj/effect/floor_decal/industrial/danger{ + dir = 10 + }, +/turf/simulated/floor/tiled/techfloor/grid, +/area/hallway/primary/seconddeck/port) +"cmP" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/obj/effect/floor_decal/borderfloor, +/obj/effect/floor_decal/corner/brown/border, +/obj/effect/floor_decal/borderfloor/corner2{ + dir = 9 + }, +/obj/effect/floor_decal/corner/brown/bordercorner2{ + dir = 9 + }, +/turf/simulated/floor/tiled, +/area/hallway/primary/seconddeck/port) +"cmQ" = ( +/obj/machinery/firealarm{ + dir = 1; + pixel_x = 0; + pixel_y = -24 + }, +/obj/effect/floor_decal/steeldecal/steel_decals4{ + dir = 1 + }, +/obj/effect/floor_decal/steeldecal/steel_decals4{ + dir = 6 + }, +/turf/simulated/floor/tiled, +/area/hallway/primary/seconddeck/port) +"cmR" = ( +/obj/effect/floor_decal/borderfloor, +/obj/effect/floor_decal/corner/brown/border, +/obj/effect/floor_decal/borderfloor/corner2, +/obj/effect/floor_decal/corner/brown/bordercorner2, +/turf/simulated/floor/tiled, +/area/hallway/primary/seconddeck/port) +"cmS" = ( +/obj/effect/floor_decal/borderfloor, +/obj/effect/floor_decal/corner/brown/border, +/turf/simulated/floor/tiled, +/area/hallway/primary/seconddeck/port) +"cmT" = ( +/obj/effect/floor_decal/borderfloor/corner{ + dir = 8 + }, +/obj/effect/floor_decal/corner/brown/bordercorner{ + dir = 8 + }, +/turf/simulated/floor/tiled, +/area/hallway/primary/seconddeck/port) +"cmU" = ( +/obj/effect/floor_decal/borderfloor/corner, +/obj/effect/floor_decal/corner/brown/bordercorner, +/turf/simulated/floor/tiled, +/area/hallway/primary/seconddeck/port) +"cmV" = ( +/obj/machinery/atmospherics/unary/vent_pump/on{ + dir = 1 + }, +/obj/effect/floor_decal/borderfloor, +/obj/effect/floor_decal/corner/brown/border, +/turf/simulated/floor/tiled, +/area/hallway/primary/seconddeck/port) +"cmW" = ( +/obj/machinery/camera/network/second_deck{ + c_tag = "Second Deck - Port Hallway Three"; + dir = 1 + }, +/obj/effect/floor_decal/borderfloor, +/obj/effect/floor_decal/corner/brown/border, +/turf/simulated/floor/tiled, +/area/hallway/primary/seconddeck/port) +"cmX" = ( +/obj/machinery/door/firedoor/border_only, +/obj/effect/floor_decal/borderfloor/corner{ + dir = 8 + }, +/obj/effect/floor_decal/corner/brown/bordercorner{ + dir = 8 + }, +/turf/simulated/floor/tiled, +/area/hallway/primary/seconddeck/port) +"cmY" = ( +/obj/machinery/atmospherics/unary/vent_scrubber/on{ + dir = 1 + }, +/obj/machinery/ai_status_display{ + pixel_y = -32 + }, +/obj/effect/floor_decal/borderfloor, +/obj/effect/floor_decal/corner/brown/border, +/turf/simulated/floor/tiled, +/area/hallway/primary/seconddeck/port) +"cmZ" = ( +/obj/machinery/alarm{ + dir = 1; + pixel_y = -22 + }, +/obj/effect/floor_decal/borderfloor, +/obj/effect/floor_decal/corner/brown/border, +/turf/simulated/floor/tiled, +/area/hallway/primary/seconddeck/port) +"cna" = ( +/obj/effect/floor_decal/industrial/warning/corner, +/turf/simulated/floor/tiled, +/area/hallway/primary/seconddeck/port) +"cnb" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/obj/structure/cable{ + d1 = 1; + d2 = 2; + icon_state = "1-2"; + pixel_y = 0 + }, +/obj/effect/floor_decal/industrial/warning, +/turf/simulated/floor/tiled, +/area/hallway/primary/seconddeck/port) +"cnc" = ( +/obj/structure/disposalpipe/segment{ + dir = 4; + icon_state = "pipe-c" + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/effect/floor_decal/industrial/warning, +/turf/simulated/floor/tiled, +/area/hallway/primary/seconddeck/port) +"cnd" = ( +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/effect/floor_decal/industrial/warning/corner{ + dir = 8 + }, +/turf/simulated/floor/tiled, +/area/hallway/primary/seconddeck/port) +"cne" = ( +/obj/machinery/power/apc{ + dir = 4; + name = "east bump"; + pixel_x = 24 + }, +/obj/machinery/light_switch{ + pixel_x = 36; + pixel_y = 0 + }, +/obj/structure/cable{ + d2 = 8; + icon_state = "0-8" + }, +/obj/effect/floor_decal/borderfloorwhite{ + dir = 4 + }, +/obj/effect/floor_decal/corner/paleblue/border{ + dir = 4 + }, +/obj/structure/table/bench/steel, +/turf/simulated/floor/tiled/white, +/area/medical/first_aid_station/seconddeck/fore) +"cnf" = ( +/obj/machinery/newscaster{ + pixel_x = -28; + pixel_y = 1 + }, +/obj/machinery/atmospherics/unary/vent_pump/on{ + dir = 4 + }, +/obj/effect/floor_decal/borderfloorwhite{ + dir = 8 + }, +/obj/effect/floor_decal/corner/paleblue/border{ + dir = 8 + }, +/obj/structure/bed/roller, +/turf/simulated/floor/tiled/white, +/area/medical/first_aid_station/seconddeck/fore) +"cng" = ( +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/turf/simulated/floor/tiled, +/area/hallway/primary/seconddeck/port) +"cnh" = ( +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/effect/floor_decal/steeldecal/steel_decals4{ + dir = 10 + }, +/obj/effect/floor_decal/steeldecal/steel_decals4, +/turf/simulated/floor/tiled, +/area/hallway/primary/seconddeck/port) +"cni" = ( +/obj/machinery/door/firedoor/glass, +/obj/machinery/door/airlock/glass{ + name = "Central Access" + }, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/turf/simulated/floor/tiled/steel_grid, +/area/hallway/primary/seconddeck/port) +"cnj" = ( +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/machinery/firealarm{ + dir = 1; + pixel_x = 0; + pixel_y = -24 + }, +/obj/effect/floor_decal/steeldecal/steel_decals4{ + dir = 1 + }, +/obj/effect/floor_decal/steeldecal/steel_decals4{ + dir = 6 + }, +/turf/simulated/floor/tiled, +/area/hallway/primary/seconddeck/fpcenter) +"cnk" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/obj/structure/cable{ + d1 = 1; + d2 = 2; + icon_state = "1-2"; + pixel_y = 0 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/effect/floor_decal/steeldecal/steel_decals4{ + dir = 5 + }, +/obj/effect/floor_decal/steeldecal/steel_decals4{ + dir = 8 + }, +/turf/simulated/floor/tiled, +/area/hallway/primary/seconddeck/fpcenter) +"cnl" = ( +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/machinery/status_display{ + pixel_x = 0; + pixel_y = -32 + }, +/obj/effect/floor_decal/borderfloor/corner, +/obj/effect/floor_decal/corner/brown/bordercorner, +/turf/simulated/floor/tiled, +/area/hallway/primary/seconddeck/fpcenter) +"cnm" = ( +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/effect/floor_decal/borderfloor, +/obj/effect/floor_decal/corner/brown/border, +/turf/simulated/floor/tiled, +/area/hallway/primary/seconddeck/fpcenter) +"cnn" = ( +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/effect/floor_decal/borderfloor, +/obj/effect/floor_decal/corner/brown/border, +/turf/simulated/floor/tiled, +/area/hallway/primary/seconddeck/fpcenter) +"cno" = ( +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/machinery/camera/network/second_deck{ + c_tag = "Second Deck - Port Hallway One"; + dir = 1 + }, +/obj/machinery/light, +/obj/effect/floor_decal/borderfloor/corner{ + dir = 8 + }, +/obj/effect/floor_decal/corner/brown/bordercorner{ + dir = 8 + }, +/turf/simulated/floor/tiled, +/area/hallway/primary/seconddeck/fpcenter) +"cnp" = ( +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/effect/floor_decal/steeldecal/steel_decals4{ + dir = 8 + }, +/obj/effect/floor_decal/steeldecal/steel_decals4{ + dir = 5 + }, +/turf/simulated/floor/tiled, +/area/hallway/primary/seconddeck/fpcenter) +"cnq" = ( +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{ + dir = 8 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/turf/simulated/floor/tiled, +/area/hallway/primary/seconddeck/fpcenter) +"cnr" = ( +/obj/structure/disposalpipe/segment{ + dir = 2; + icon_state = "pipe-c" + }, +/obj/machinery/atmospherics/unary/vent_scrubber/on{ + dir = 8 + }, +/obj/effect/floor_decal/steeldecal/steel_decals4{ + dir = 8 + }, +/obj/effect/floor_decal/steeldecal/steel_decals4{ + dir = 5 + }, +/obj/machinery/navbeacon/patrol{ + location = "CH4"; + next_patrol = "CH5" + }, +/turf/simulated/floor/tiled, +/area/hallway/primary/seconddeck/fpcenter) +"cns" = ( +/turf/simulated/floor/tiled/dark, +/area/hallway/primary/seconddeck/fpcenter) +"cnt" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 6 + }, +/obj/structure/cable/green{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/obj/machinery/light/small{ + dir = 8 + }, +/obj/structure/catwalk, +/turf/simulated/floor/plating, +/area/maintenance/central) +"cnu" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 9 + }, +/obj/machinery/meter, +/obj/structure/catwalk, +/turf/simulated/floor/plating, +/area/maintenance/central) +"cnv" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 5 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 5 + }, +/obj/structure/cable/green{ + d1 = 1; + d2 = 4; + icon_state = "1-4" + }, +/obj/structure/catwalk, +/turf/simulated/floor/plating, +/area/maintenance/central) +"cnw" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 10 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 10 + }, +/obj/structure/cable/green{ + d1 = 2; + d2 = 8; + icon_state = "2-8" + }, +/obj/structure/catwalk, +/turf/simulated/floor/plating, +/area/maintenance/central) +"cnx" = ( +/obj/machinery/space_heater, +/obj/structure/catwalk, +/turf/simulated/floor/plating, +/area/maintenance/central) +"cny" = ( +/obj/machinery/portable_atmospherics/powered/scrubber, +/obj/machinery/light/small{ + dir = 4; + pixel_y = 0 + }, +/obj/structure/catwalk, +/turf/simulated/floor/plating, +/area/maintenance/central) +"cnz" = ( +/obj/machinery/power/apc{ + dir = 2; + name = "south bump"; + pixel_y = -24 + }, +/obj/structure/cable, +/turf/simulated/floor/tiled/dark, +/area/hallway/primary/seconddeck/ascenter) +"cnA" = ( +/obj/structure/disposalpipe/segment{ + dir = 4; + icon_state = "pipe-c" + }, +/obj/effect/floor_decal/steeldecal/steel_decals4{ + dir = 8 + }, +/obj/effect/floor_decal/steeldecal/steel_decals4{ + dir = 5 + }, +/obj/machinery/navbeacon/patrol{ + location = "CH9"; + next_patrol = "MED" + }, +/turf/simulated/floor/tiled, +/area/hallway/primary/seconddeck/ascenter) +"cnB" = ( +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/manifold/hidden/supply{ + dir = 8 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/turf/simulated/floor/tiled, +/area/hallway/primary/seconddeck/ascenter) +"cnC" = ( +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/machinery/atmospherics/unary/vent_pump/on{ + dir = 8 + }, +/obj/effect/floor_decal/steeldecal/steel_decals4{ + dir = 8 + }, +/obj/effect/floor_decal/steeldecal/steel_decals4{ + dir = 5 + }, +/turf/simulated/floor/tiled, +/area/hallway/primary/seconddeck/ascenter) +"cnD" = ( +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/turf/simulated/floor/tiled, +/area/hallway/primary/seconddeck/ascenter) +"cnE" = ( +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/effect/floor_decal/borderfloor/corner, +/obj/effect/floor_decal/corner/paleblue/bordercorner, +/turf/simulated/floor/tiled, +/area/hallway/primary/seconddeck/ascenter) +"cnF" = ( +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/effect/floor_decal/borderfloor, +/obj/effect/floor_decal/corner/paleblue/border, +/turf/simulated/floor/tiled, +/area/hallway/primary/seconddeck/ascenter) +"cnG" = ( +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/obj/effect/floor_decal/borderfloor, +/obj/effect/floor_decal/corner/paleblue/border, +/turf/simulated/floor/tiled, +/area/hallway/primary/seconddeck/ascenter) +"cnH" = ( +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/machinery/status_display{ + pixel_x = 0; + pixel_y = -32 + }, +/obj/effect/floor_decal/borderfloor/corner{ + dir = 8 + }, +/obj/effect/floor_decal/corner/paleblue/bordercorner{ + dir = 8 + }, +/turf/simulated/floor/tiled, +/area/hallway/primary/seconddeck/ascenter) +"cnI" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/obj/structure/cable{ + d1 = 1; + d2 = 2; + icon_state = "1-2"; + pixel_y = 0 + }, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/turf/simulated/floor/tiled, +/area/hallway/primary/seconddeck/ascenter) +"cnJ" = ( +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/item/device/radio/intercom{ + name = "Station Intercom (General)"; + pixel_y = -21 + }, +/obj/effect/floor_decal/steeldecal/steel_decals4, +/obj/effect/floor_decal/steeldecal/steel_decals4{ + dir = 10 + }, +/turf/simulated/floor/tiled, +/area/hallway/primary/seconddeck/ascenter) +"cnK" = ( +/obj/machinery/atmospherics/unary/vent_pump/on{ + dir = 1 + }, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/turf/simulated/floor/tiled, +/area/hallway/primary/seconddeck/starboard) +"cnL" = ( +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/effect/floor_decal/borderfloor/corner, +/obj/effect/floor_decal/corner/paleblue/bordercorner, +/turf/simulated/floor/tiled, +/area/hallway/primary/seconddeck/starboard) +"cnM" = ( +/obj/structure/cable, +/obj/machinery/power/apc{ + dir = 2; + name = "south bump"; + pixel_y = -24 + }, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/effect/floor_decal/borderfloor, +/obj/effect/floor_decal/corner/paleblue/border, +/turf/simulated/floor/tiled, +/area/hallway/primary/seconddeck/starboard) +"cnN" = ( +/obj/machinery/seed_extractor, +/obj/machinery/atmospherics/pipe/manifold/hidden/yellow{ + dir = 1 + }, +/obj/structure/cable/green{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/turf/simulated/floor/tiled/hydro, +/area/rnd/xenobiology/xenoflora) +"cnO" = ( +/obj/machinery/atmospherics/unary/vent_pump/on{ + dir = 1 + }, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/effect/floor_decal/borderfloor, +/obj/effect/floor_decal/corner/paleblue/border, +/turf/simulated/floor/tiled, +/area/hallway/primary/seconddeck/starboard) +"cnP" = ( +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/machinery/light, +/obj/effect/floor_decal/borderfloor, +/obj/effect/floor_decal/corner/paleblue/border, +/turf/simulated/floor/tiled, +/area/hallway/primary/seconddeck/starboard) +"cnQ" = ( +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/machinery/alarm{ + dir = 1; + pixel_y = -22 + }, +/obj/effect/floor_decal/borderfloor, +/obj/effect/floor_decal/corner/paleblue/border, +/turf/simulated/floor/tiled, +/area/hallway/primary/seconddeck/starboard) +"cnR" = ( +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/effect/floor_decal/borderfloor, +/obj/effect/floor_decal/corner/paleblue/border, +/turf/simulated/floor/tiled, +/area/hallway/primary/seconddeck/starboard) +"cnS" = ( +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/effect/floor_decal/borderfloor/corner{ + dir = 8 + }, +/obj/effect/floor_decal/corner/paleblue/bordercorner{ + dir = 8 + }, +/turf/simulated/floor/tiled, +/area/hallway/primary/seconddeck/starboard) +"cnT" = ( +/obj/machinery/door/firedoor/border_only, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/turf/simulated/floor/tiled, +/area/hallway/primary/seconddeck/starboard) +"cnU" = ( +/obj/structure/disposalpipe/segment{ + dir = 2; + icon_state = "pipe-c" + }, +/obj/effect/floor_decal/borderfloor/corner{ + dir = 8 + }, +/obj/effect/floor_decal/corner/paleblue/bordercorner{ + dir = 8 + }, +/turf/simulated/floor/tiled, +/area/hallway/primary/seconddeck/starboard) +"cnV" = ( +/obj/structure/cable{ + d1 = 1; + d2 = 2; + icon_state = "1-2"; + pixel_y = 0 + }, +/turf/simulated/floor/tiled/monotile, +/area/hallway/primary/seconddeck/starboard) +"cnW" = ( +/obj/effect/floor_decal/borderfloor/corner, +/obj/effect/floor_decal/corner/paleblue/bordercorner, +/turf/simulated/floor/tiled, +/area/hallway/primary/seconddeck/starboard) +"cnX" = ( +/obj/effect/floor_decal/borderfloor, +/obj/machinery/atmospherics/unary/vent_scrubber/on{ + dir = 1 + }, +/obj/effect/floor_decal/corner/paleblue/border, +/obj/effect/floor_decal/borderfloor/corner2{ + dir = 9 + }, +/obj/effect/floor_decal/corner/paleblue/bordercorner2{ + dir = 9 + }, +/turf/simulated/floor/tiled, +/area/hallway/primary/seconddeck/starboard) +"cnY" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/effect/floor_decal/steeldecal/steel_decals4{ + dir = 1 + }, +/obj/effect/floor_decal/steeldecal/steel_decals4{ + dir = 6 + }, +/turf/simulated/floor/tiled, +/area/hallway/primary/seconddeck/starboard) +"cnZ" = ( +/obj/effect/floor_decal/borderfloor, +/obj/effect/floor_decal/corner/green/border, +/obj/effect/floor_decal/borderfloor/corner2, +/obj/effect/floor_decal/corner/green/bordercorner2, +/turf/simulated/floor/tiled, +/area/hallway/primary/seconddeck/starboard) +"coa" = ( +/obj/effect/floor_decal/borderfloorblack{ + dir = 6 + }, +/obj/effect/floor_decal/industrial/danger{ + dir = 6 + }, +/turf/simulated/floor/tiled/techfloor/grid, +/area/hallway/primary/seconddeck/starboard) +"cob" = ( +/obj/random/powercell, +/obj/random/powercell, +/obj/random/powercell, +/obj/random/powercell, +/obj/random/toolbox, +/obj/structure/closet/crate, +/obj/random/maintenance/medical, +/obj/random/maintenance/medical, +/turf/simulated/floor, +/area/maintenance/research_medical) +"coc" = ( +/obj/machinery/light/small{ + dir = 4; + pixel_y = 0 + }, +/turf/simulated/floor/plating, +/area/maintenance/research_medical) +"cod" = ( +/obj/effect/floor_decal/industrial/hatch/yellow, +/obj/machinery/door/blast/regular{ + density = 0; + icon_state = "pdoor0"; + id = "medbayquar"; + name = "Medbay Emergency Lockdown Shutters"; + opacity = 0 + }, +/turf/simulated/floor/tiled/dark, +/area/hallway/secondary/seconddeck/research_medical) +"coe" = ( +/obj/effect/floor_decal/industrial/hatch/yellow, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/structure/cable/green{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/obj/machinery/door/blast/regular{ + density = 0; + icon_state = "pdoor0"; + id = "medbayquar"; + name = "Medbay Emergency Lockdown Shutters"; + opacity = 0 + }, +/obj/structure/disposalpipe/segment, +/turf/simulated/floor/tiled/dark, +/area/hallway/secondary/seconddeck/research_medical) +"cof" = ( +/obj/effect/floor_decal/industrial/hatch/yellow, +/obj/machinery/door/blast/regular{ + density = 0; + icon_state = "pdoor0"; + id = "medbayquar"; + name = "Medbay Emergency Lockdown Shutters"; + opacity = 0 + }, +/obj/machinery/light/small{ + dir = 4; + pixel_y = 0 + }, +/turf/simulated/floor/tiled/dark, +/area/hallway/secondary/seconddeck/research_medical) +"cog" = ( +/obj/effect/floor_decal/borderfloorwhite, +/obj/effect/floor_decal/corner/paleblue/border, +/turf/simulated/floor/tiled/white, +/area/hallway/secondary/seconddeck/research_medical) +"coh" = ( +/obj/machinery/power/apc{ + dir = 2; + name = "south bump"; + pixel_y = -24 + }, +/obj/machinery/light_switch{ + pixel_x = 11; + pixel_y = -24 + }, +/obj/structure/cable/green, +/obj/effect/floor_decal/borderfloorwhite, +/obj/effect/floor_decal/corner/paleblue/border, +/turf/simulated/floor/tiled/white, +/area/hallway/secondary/seconddeck/research_medical) +"coi" = ( +/obj/machinery/atmospherics/unary/vent_scrubber/on{ + dir = 1 + }, +/obj/machinery/alarm{ + dir = 1; + icon_state = "alarm0"; + pixel_y = -22 + }, +/obj/effect/floor_decal/borderfloorwhite/corner{ + dir = 8 + }, +/obj/effect/floor_decal/corner/paleblue/bordercorner{ + dir = 8 + }, +/turf/simulated/floor/tiled/white, +/area/hallway/secondary/seconddeck/research_medical) +"coj" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/obj/structure/cable/green{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/obj/effect/floor_decal/steeldecal/steel_decals4{ + dir = 5 + }, +/obj/effect/floor_decal/steeldecal/steel_decals4{ + dir = 8 + }, +/turf/simulated/floor/tiled/white, +/area/hallway/secondary/seconddeck/research_medical) +"cok" = ( +/obj/effect/floor_decal/industrial/warning{ + dir = 4 + }, +/obj/machinery/light, +/turf/simulated/floor/tiled/white, +/area/hallway/secondary/seconddeck/research_medical) +"col" = ( +/obj/machinery/door/blast/regular{ + density = 0; + dir = 2; + icon_state = "pdoor0"; + id = "virologyquar"; + name = "Virology Emergency Quarantine Blast Doors"; + opacity = 0 + }, +/obj/effect/floor_decal/industrial/hatch/yellow, +/obj/structure/sign/warning/biohazard{ + pixel_y = -32 + }, +/turf/simulated/floor/tiled/dark, +/area/hallway/secondary/seconddeck/research_medical) +"com" = ( +/obj/structure/closet/l3closet/virology, +/obj/effect/floor_decal/industrial/warning{ + icon_state = "warning"; + dir = 1 + }, +/obj/machinery/power/apc{ + dir = 2; + name = "south bump"; + pixel_y = -24 + }, +/obj/machinery/light_switch{ + pixel_x = 11; + pixel_y = -24 + }, +/obj/structure/cable/green, +/obj/machinery/light{ + dir = 8 + }, +/turf/simulated/floor/tiled/white, +/area/medical/virology) +"con" = ( +/obj/structure/closet/wardrobe/virology_white, +/obj/effect/floor_decal/industrial/warning{ + icon_state = "warning"; + dir = 1 + }, +/obj/machinery/camera/network/medbay{ + c_tag = "MED - Virology Airlock"; + dir = 8 + }, +/obj/machinery/firealarm{ + dir = 1; + pixel_y = -24 + }, +/turf/simulated/floor/tiled/white, +/area/medical/virology) +"coo" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/black{ + dir = 6 + }, +/obj/effect/floor_decal/industrial/warning/corner{ + icon_state = "warningcorner"; + dir = 1 + }, +/obj/machinery/embedded_controller/radio/airlock/access_controller{ + id_tag = "virology_airlock_control"; + name = "Virology Access Console"; + pixel_x = -26; + pixel_y = 0; + tag_exterior_door = "virology_airlock_exterior"; + tag_interior_door = "virology_airlock_interior" + }, +/obj/effect/floor_decal/borderfloorwhite/corner{ + dir = 8 + }, +/obj/effect/floor_decal/corner/lime/bordercorner{ + dir = 8 + }, +/turf/simulated/floor/tiled/white, +/area/medical/virology) +"cop" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/machinery/atmospherics/pipe/manifold/hidden/black{ + dir = 4 + }, +/turf/simulated/floor/tiled/white, +/area/medical/virology) +"coq" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/universal, +/turf/simulated/floor/tiled/white, +/area/medical/virology) +"cor" = ( +/obj/item/weapon/stool/padded, +/turf/simulated/floor/tiled/white, +/area/medical/virology) +"cos" = ( +/obj/structure/bed/chair/office/dark{ + dir = 4 + }, +/obj/effect/floor_decal/borderfloorwhite/corner, +/obj/effect/floor_decal/corner/lime/bordercorner, +/turf/simulated/floor/tiled/white, +/area/medical/virology) +"cot" = ( +/obj/machinery/disease2/incubator, +/obj/effect/floor_decal/borderfloorwhite{ + dir = 6 + }, +/obj/effect/floor_decal/corner/lime/border{ + dir = 6 + }, +/turf/simulated/floor/tiled/white, +/area/medical/virology) +"cou" = ( +/obj/machinery/atmospherics/pipe/simple/visible/yellow, +/obj/effect/floor_decal/industrial/warning{ + icon_state = "warning"; + dir = 8 + }, +/obj/machinery/button/remote/blast_door{ + desc = "A remote control-switch for the engine charging port."; + id = "SupermatterPort"; + name = "Reactor Blast Doors"; + pixel_x = -25; + pixel_y = 6; + req_access = list(10) + }, +/obj/machinery/button/remote/blast_door{ + desc = "A remote control-switch for the engine control room blast doors."; + id = "EngineBlast"; + name = "Engine Monitoring Room Blast Doors"; + pixel_x = -25; + pixel_y = -6; + req_access = list(10) + }, +/turf/simulated/floor, +/area/engineering/engine_room) +"cov" = ( +/obj/machinery/atmospherics/pipe/simple/visible/cyan, +/turf/simulated/floor, +/area/engineering/engine_room) +"cow" = ( +/obj/machinery/atmospherics/unary/vent_pump/on{ + dir = 1 + }, +/turf/simulated/floor, +/area/engineering/engine_room) +"cox" = ( +/obj/machinery/atmospherics/portables_connector, +/obj/effect/floor_decal/industrial/outline/blue, +/obj/effect/engine_setup/coolant_canister, +/turf/simulated/floor, +/area/engineering/engine_room) +"coy" = ( +/obj/machinery/computer/station_alert, +/turf/simulated/floor/tiled, +/area/engineering/engine_monitoring) +"coz" = ( +/obj/structure/table/reinforced, +/obj/item/clothing/ears/earmuffs, +/obj/machinery/alarm{ + dir = 1; + icon_state = "alarm0"; + pixel_y = -22 + }, +/obj/structure/cable/cyan{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/turf/simulated/floor/tiled, +/area/engineering/engine_monitoring) +"coA" = ( +/obj/machinery/atmospherics/unary/vent_scrubber/on{ + dir = 4 + }, +/obj/machinery/light, +/obj/machinery/newscaster{ + pixel_y = -30 + }, +/turf/simulated/floor/tiled, +/area/engineering/engine_monitoring) +"coB" = ( +/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/structure/cable{ + d1 = 1; + d2 = 2; + icon_state = "1-2"; + pixel_y = 0 + }, +/turf/simulated/floor/tiled, +/area/engineering/engine_monitoring) +"coC" = ( +/obj/structure/table/steel, +/obj/item/weapon/storage/box/donkpockets, +/obj/machinery/firealarm{ + dir = 4; + pixel_x = 24 + }, +/turf/simulated/floor/tiled, +/area/engineering/engine_monitoring) +"coD" = ( +/turf/simulated/wall/r_wall, +/area/engineering/engine_monitoring) +"coE" = ( +/obj/random/obstruction, +/turf/simulated/floor/plating, +/area/maintenance/apmaint) +"coF" = ( +/obj/structure/reagent_dispensers/fueltank, +/turf/simulated/floor/plating, +/area/maintenance/apmaint) +"coG" = ( +/obj/structure/reagent_dispensers/watertank, +/turf/simulated/floor/plating, +/area/maintenance/apmaint) +"coH" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, +/obj/machinery/door/firedoor/glass, +/obj/machinery/door/airlock/glass_research{ + name = "Workshop"; + req_access = list(47) + }, +/obj/structure/cable/green{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/turf/simulated/floor/tiled/steel_grid, +/area/rnd/workshop) +"coI" = ( +/obj/machinery/door/airlock/research{ + name = "Research Access"; + req_access = list(47) + }, +/obj/machinery/door/firedoor/border_only, +/obj/structure/disposalpipe/segment, +/turf/simulated/floor/tiled/steel_grid, +/area/rnd/research) +"coJ" = ( +/obj/machinery/atmospherics/unary/vent_scrubber/on{ + dir = 1 + }, +/obj/machinery/vending/coffee, +/obj/structure/sign/deck/second{ + pixel_x = -32 + }, +/turf/simulated/floor/tiled/dark, +/area/hallway/primary/seconddeck/port) +"coK" = ( +/obj/machinery/alarm{ + dir = 1; + pixel_y = -22 + }, +/obj/machinery/vending/snack, +/turf/simulated/floor/tiled/dark, +/area/hallway/primary/seconddeck/port) +"coL" = ( +/obj/structure/sign/directions/bridge{ + dir = 4; + pixel_y = 10 + }, +/obj/structure/sign/directions/evac{ + dir = 4; + pixel_y = -10 + }, +/obj/structure/sign/directions/cargo{ + dir = 2 + }, +/turf/simulated/wall, +/area/maintenance/apmaint) +"coM" = ( +/obj/effect/floor_decal/borderfloor{ + dir = 8 + }, +/obj/effect/floor_decal/corner/brown/border{ + dir = 8 + }, +/turf/simulated/floor/tiled, +/area/hallway/primary/seconddeck/port) +"coN" = ( +/obj/effect/floor_decal/borderfloor{ + dir = 4 + }, +/obj/effect/floor_decal/corner/brown/border{ + dir = 4 + }, +/turf/simulated/floor/tiled, +/area/hallway/primary/seconddeck/port) +"coO" = ( +/obj/machinery/light{ + dir = 4 + }, +/turf/simulated/floor/tiled/dark, +/area/hallway/primary/seconddeck/port) +"coP" = ( +/turf/simulated/wall, +/area/maintenance/emergencyeva) +"coQ" = ( +/turf/simulated/wall, +/area/ai_monitored/storage/emergency/eva) +"coR" = ( +/obj/machinery/door/firedoor/glass, +/obj/machinery/door/airlock/glass{ + name = "Emergency EVA" + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/obj/structure/cable{ + d1 = 1; + d2 = 2; + icon_state = "1-2"; + pixel_y = 0 + }, +/turf/simulated/floor/tiled/steel_grid, +/area/ai_monitored/storage/emergency/eva) +"coS" = ( +/obj/structure/disposalpipe/segment, +/obj/machinery/door/firedoor/glass, +/obj/machinery/door/airlock/glass{ + name = "Emergency EVA" + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/turf/simulated/floor/tiled/steel_grid, +/area/ai_monitored/storage/emergency/eva) +"coT" = ( +/turf/simulated/wall, +/area/hallway/primary/seconddeck/port) +"coU" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 5 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 9; + pixel_y = 0 + }, +/obj/machinery/hologram/holopad, +/obj/effect/floor_decal/industrial/outline/grey, +/turf/simulated/floor/tiled/white, +/area/medical/first_aid_station/seconddeck/fore) +"coV" = ( +/turf/simulated/wall, +/area/maintenance/bar) +"coW" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/obj/structure/cable{ + d1 = 1; + d2 = 2; + icon_state = "1-2"; + pixel_y = 0 + }, +/obj/machinery/door/firedoor/border_only, +/obj/machinery/door/airlock/maintenance{ + req_access = null; + req_one_access = list(12,25,27,28,35) + }, +/turf/simulated/floor/plating, +/area/maintenance/bar) +"coX" = ( +/obj/machinery/atmospherics/unary/vent_pump/on{ + dir = 1 + }, +/obj/structure/closet/emcloset, +/turf/simulated/floor/tiled/dark, +/area/hallway/primary/seconddeck/fpcenter) +"coY" = ( +/obj/structure/sign/directions/bridge{ + dir = 2; + pixel_y = 10 + }, +/obj/structure/sign/directions/science{ + dir = 2 + }, +/obj/structure/sign/directions/medical{ + dir = 2; + pixel_y = -10 + }, +/turf/simulated/wall, +/area/hallway/primary/seconddeck/fpcenter) +"coZ" = ( +/obj/machinery/door/firedoor/glass, +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/obj/effect/wingrille_spawn/reinforced, +/turf/simulated/floor/plating, +/area/hallway/primary/seconddeck/fpcenter) +"cpa" = ( +/obj/structure/reagent_dispensers/watertank, +/turf/simulated/floor/plating, +/area/maintenance/central) +"cpb" = ( +/obj/structure/reagent_dispensers/fueltank, +/turf/simulated/floor/plating, +/area/maintenance/central) +"cpc" = ( +/obj/effect/decal/cleanable/dirt, +/obj/structure/table/rack, +/obj/random/cigarettes, +/obj/item/weapon/flame/lighter/random, +/obj/random/maintenance/clean, +/obj/random/maintenance/clean, +/obj/random/maintenance/clean, +/turf/simulated/floor/plating, +/area/maintenance/central) +"cpd" = ( +/turf/simulated/wall/r_wall, +/area/crew_quarters/heads/sc/hop) +"cpe" = ( +/obj/machinery/door/firedoor/border_only, +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/obj/structure/cable/green{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/obj/machinery/door/airlock/maintenance{ + name = "HoP Maintenance Access"; + req_one_access = list(57) + }, +/turf/simulated/floor/plating, +/area/crew_quarters/heads/sc/hop) +"cpf" = ( +/obj/machinery/door/firedoor/border_only, +/obj/structure/disposalpipe/segment, +/obj/machinery/door/airlock/glass{ + name = "Central Access" + }, +/turf/simulated/floor/tiled/steel_grid, +/area/hallway/primary/seconddeck/ascenter) +"cpg" = ( +/obj/structure/sign/directions/engineering{ + dir = 2; + pixel_y = 10 + }, +/obj/structure/sign/directions/cargo{ + dir = 2 + }, +/obj/structure/sign/directions/security{ + dir = 1; + pixel_y = -10 + }, +/turf/simulated/wall, +/area/hallway/primary/seconddeck/ascenter) +"cph" = ( +/obj/machinery/alarm{ + dir = 4; + icon_state = "alarm0"; + pixel_x = -22 + }, +/turf/simulated/floor/tiled/dark, +/area/hallway/primary/seconddeck/ascenter) +"cpi" = ( +/obj/machinery/atmospherics/unary/vent_scrubber/on{ + dir = 1 + }, +/obj/structure/flora/pottedplant/stoutbush, +/turf/simulated/floor/tiled/dark, +/area/hallway/primary/seconddeck/ascenter) +"cpj" = ( +/obj/machinery/door/firedoor/border_only, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/structure/cable{ + d1 = 1; + d2 = 2; + icon_state = "1-2"; + pixel_y = 0 + }, +/obj/machinery/door/airlock/maintenance{ + req_access = null; + req_one_access = list(5,12,25,27,28,35) + }, +/turf/simulated/floor/plating, +/area/maintenance/medbay) +"cpk" = ( +/turf/simulated/wall, +/area/maintenance/medbay) +"cpl" = ( +/obj/effect/floor_decal/borderfloor/corner2{ + dir = 8 + }, +/obj/effect/floor_decal/borderfloor/corner2{ + dir = 10 + }, +/obj/effect/floor_decal/corner/paleblue/bordercorner2{ + dir = 8 + }, +/obj/effect/floor_decal/corner/paleblue/bordercorner2{ + dir = 10 + }, +/turf/simulated/floor/tiled, +/area/hallway/primary/seconddeck/starboard) +"cpm" = ( +/obj/effect/floor_decal/borderfloor/corner2{ + dir = 5 + }, +/obj/effect/floor_decal/borderfloor/corner2{ + dir = 6 + }, +/obj/effect/floor_decal/corner/paleblue/bordercorner2{ + dir = 6 + }, +/obj/effect/floor_decal/corner/paleblue/bordercorner2{ + dir = 5 + }, +/turf/simulated/floor/tiled, +/area/hallway/primary/seconddeck/starboard) +"cpn" = ( +/turf/simulated/wall, +/area/maintenance/medbay_fore) +"cpo" = ( +/obj/structure/sign/directions/bridge{ + dir = 8; + pixel_y = 10 + }, +/obj/structure/sign/directions/evac{ + dir = 8; + pixel_y = -10 + }, +/obj/structure/sign/directions/cargo{ + dir = 8 + }, +/turf/simulated/wall, +/area/maintenance/medbay_fore) +"cpp" = ( +/obj/structure/sign/directions/medical{ + dir = 2 + }, +/obj/structure/sign/directions/security{ + dir = 8; + pixel_y = 10 + }, +/obj/structure/sign/directions/cryo{ + dir = 8; + pixel_y = -10 + }, +/turf/simulated/wall, +/area/maintenance/medbay_fore) +"cpq" = ( +/obj/machinery/light{ + dir = 8; + icon_state = "tube1"; + pixel_y = 0 + }, +/turf/simulated/floor/tiled/dark, +/area/hallway/primary/seconddeck/starboard) +"cpr" = ( +/obj/structure/disposalpipe/segment, +/obj/effect/floor_decal/borderfloor{ + dir = 8 + }, +/obj/effect/floor_decal/corner/paleblue/border{ + dir = 8 + }, +/turf/simulated/floor/tiled, +/area/hallway/primary/seconddeck/starboard) +"cps" = ( +/obj/effect/floor_decal/borderfloor{ + dir = 4 + }, +/obj/effect/floor_decal/corner/paleblue/border{ + dir = 4 + }, +/turf/simulated/floor/tiled, +/area/hallway/primary/seconddeck/starboard) +"cpt" = ( +/obj/structure/closet/emcloset, +/turf/simulated/floor/tiled/dark, +/area/hallway/primary/seconddeck/starboard) +"cpu" = ( +/obj/machinery/atmospherics/unary/vent_pump/on{ + dir = 1 + }, +/obj/machinery/firealarm{ + dir = 1; + pixel_x = 0; + pixel_y = -24 + }, +/turf/simulated/floor/tiled/dark, +/area/hallway/primary/seconddeck/starboard) +"cpv" = ( +/obj/structure/table/steel, +/obj/random/tech_supply, +/obj/random/technology_scanner, +/obj/item/weapon/storage/bag/circuits/basic, +/obj/random/tech_supply, +/turf/simulated/floor/plating, +/area/maintenance/research_medical) +"cpw" = ( +/turf/simulated/wall/r_wall, +/area/medical/medbay2) +"cpx" = ( +/obj/machinery/door/firedoor/border_only, +/obj/machinery/door/airlock/medical{ + name = "Medical Access"; + req_access = list(5) + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/structure/cable/green{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/obj/structure/disposalpipe/segment, +/turf/simulated/floor/tiled/steel_grid, +/area/medical/medbay2) +"cpy" = ( +/obj/effect/floor_decal/industrial/loading, +/obj/machinery/door/firedoor/border_only, +/obj/structure/plasticflaps{ + opacity = 1 + }, +/obj/machinery/navbeacon/delivery/south{ + location = "Medbay" + }, +/turf/simulated/floor/tiled, +/area/medical/medbay2) +"cpz" = ( +/turf/simulated/wall/r_wall, +/area/medical/genetics) +"cpA" = ( +/obj/machinery/status_display, +/turf/simulated/wall/r_wall, +/area/medical/genetics) +"cpB" = ( +/obj/machinery/door/firedoor/border_only, +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/obj/machinery/door/airlock/research{ + name = "Genetics Lab"; + req_one_access = list(5,47) + }, +/obj/structure/cable/green{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/turf/simulated/floor/tiled/steel_grid, +/area/hallway/secondary/seconddeck/research_medical) +"cpC" = ( +/obj/effect/decal/warning_stripes, +/obj/machinery/atmospherics/tvalve/mirrored/bypass, +/obj/machinery/firealarm{ + dir = 8; + pixel_x = -24 + }, +/turf/simulated/floor/plating, +/area/medical/virology) +"cpD" = ( +/obj/structure/reagent_dispensers/watertank/high, +/obj/item/weapon/reagent_containers/glass/bucket, +/obj/machinery/atmospherics/pipe/simple/hidden/yellow{ + dir = 4 + }, +/obj/structure/cable/green{ + d1 = 2; + d2 = 4; + icon_state = "2-4" + }, +/turf/simulated/floor/tiled/hydro, +/area/rnd/xenobiology/xenoflora) +"cpE" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/yellow{ + dir = 4 + }, +/obj/structure/disposalpipe/segment, +/obj/structure/cable/green{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/turf/simulated/floor/tiled/hydro, +/area/rnd/xenobiology/xenoflora) +"cpF" = ( +/obj/machinery/biogenerator, +/obj/machinery/atmospherics/pipe/simple/hidden/yellow{ + dir = 4 + }, +/obj/structure/cable/green{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/turf/simulated/floor/tiled/hydro, +/area/rnd/xenobiology/xenoflora) +"cpG" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/yellow{ + dir = 4 + }, +/obj/machinery/atmospherics/unary/vent_pump/on, +/obj/structure/cable/green{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/turf/simulated/floor/tiled/hydro, +/area/rnd/xenobiology/xenoflora) +"cpH" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/yellow{ + dir = 4 + }, +/obj/structure/cable/green{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/turf/simulated/floor/tiled/hydro, +/area/rnd/xenobiology/xenoflora) +"cpI" = ( +/obj/machinery/atmospherics/unary/vent_pump/on{ + dir = 8 + }, +/obj/effect/floor_decal/borderfloorwhite/corner, +/obj/effect/floor_decal/corner/lime/bordercorner, +/turf/simulated/floor/tiled/white, +/area/medical/virology) +"cpJ" = ( +/obj/structure/table/glass, +/obj/item/weapon/paper_bin{ + pixel_x = 1; + pixel_y = 8 + }, +/obj/item/device/radio{ + anchored = 1; + broadcasting = 0; + canhear_range = 7; + frequency = 1487; + icon = 'icons/obj/items.dmi'; + icon_state = "red_phone"; + listening = 1; + name = "Virology Emergency Phone"; + pixel_x = -6; + pixel_y = 8 + }, +/obj/item/weapon/reagent_containers/spray/cleaner, +/obj/machinery/requests_console{ + department = "Virology"; + name = "Virology Requests Console"; + pixel_x = 32 + }, +/obj/item/device/radio/intercom{ + name = "Station Intercom (General)"; + pixel_y = -21 + }, +/obj/effect/floor_decal/borderfloorwhite{ + dir = 6 + }, +/obj/effect/floor_decal/corner/lime/border{ + dir = 6 + }, +/turf/simulated/floor/tiled/white, +/area/medical/virology) +"cpK" = ( +/obj/machinery/atmospherics/pipe/simple/visible/yellow{ + dir = 6 + }, +/obj/effect/floor_decal/industrial/warning{ + dir = 1 + }, +/turf/simulated/floor, +/area/engineering/engine_room) +"cpL" = ( +/obj/machinery/atmospherics/pipe/simple/visible/yellow{ + dir = 4 + }, +/obj/effect/floor_decal/industrial/warning{ + dir = 1 + }, +/turf/simulated/floor, +/area/engineering/engine_room) +"cpM" = ( +/obj/machinery/atmospherics/pipe/simple/visible/yellow{ + dir = 4 + }, +/obj/effect/floor_decal/industrial/warning{ + dir = 1 + }, +/obj/machinery/camera/network/engine{ + c_tag = "ENG - Engine Core 3"; + dir = 2 + }, +/turf/simulated/floor, +/area/engineering/engine_room) +"cpN" = ( +/obj/machinery/atmospherics/pipe/manifold/visible/yellow{ + dir = 4 + }, +/obj/machinery/meter, +/obj/effect/floor_decal/industrial/warning/corner{ + icon_state = "warningcorner"; + dir = 1 + }, +/turf/simulated/floor, +/area/engineering/engine_room) +"cpO" = ( +/obj/machinery/atmospherics/binary/pump, +/obj/effect/floor_decal/industrial/warning/corner, +/obj/effect/engine_setup/pump_max, +/turf/simulated/floor, +/area/engineering/engine_room) +"cpP" = ( +/turf/simulated/wall/r_wall, +/area/engineering/engine_smes) +"cpQ" = ( +/obj/structure/cable/cyan{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/turf/simulated/wall/r_wall, +/area/engineering/engine_smes) +"cpR" = ( +/obj/structure/cable{ + d1 = 1; + d2 = 2; + icon_state = "1-2"; + pixel_y = 0 + }, +/obj/machinery/door/airlock/maintenance_hatch{ + name = "SMES Access"; + req_access = list(11) + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/machinery/door/firedoor/border_only, +/turf/simulated/floor/tiled, +/area/engineering/engine_smes) +"cpS" = ( +/obj/machinery/ai_status_display, +/turf/simulated/wall/r_wall, +/area/engineering/engine_smes) +"cpT" = ( +/obj/structure/disposalpipe/segment, +/turf/simulated/floor/plating, +/area/maintenance/apmaint) +"cpU" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/obj/structure/cable{ + d1 = 1; + d2 = 2; + icon_state = "1-2"; + pixel_y = 0 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/structure/disposalpipe/tagger/partial{ + dir = 1; + name = "Sorting Office"; + sort_tag = "Sorting Office" + }, +/turf/simulated/floor/plating, +/area/maintenance/apmaint) +"cpV" = ( +/obj/structure/catwalk, +/turf/simulated/floor/plating, +/area/maintenance/apmaint) +"cpW" = ( +/obj/machinery/door/firedoor/border_only, +/obj/machinery/door/airlock/maintenance{ + req_access = list(12) + }, +/turf/simulated/floor/plating, +/area/maintenance/apmaint) +"cpX" = ( +/obj/effect/floor_decal/industrial/warning, +/turf/simulated/floor/tiled/dark, +/area/hallway/primary/seconddeck/port) +"cpY" = ( +/obj/effect/floor_decal/industrial/warning, +/obj/effect/floor_decal/borderfloor/corner{ + dir = 1 + }, +/obj/effect/floor_decal/corner/brown/bordercorner{ + dir = 1 + }, +/turf/simulated/floor/tiled, +/area/hallway/primary/seconddeck/port) +"cpZ" = ( +/obj/effect/floor_decal/industrial/warning, +/turf/simulated/floor/tiled, +/area/hallway/primary/seconddeck/port) +"cqa" = ( +/obj/effect/floor_decal/industrial/warning, +/obj/effect/floor_decal/borderfloor/corner{ + dir = 4 + }, +/obj/effect/floor_decal/corner/brown/bordercorner{ + dir = 4 + }, +/turf/simulated/floor/tiled, +/area/hallway/primary/seconddeck/port) +"cqb" = ( +/obj/machinery/door/firedoor/border_only, +/obj/machinery/door/airlock/maintenance{ + req_access = list(12) + }, +/turf/simulated/floor/plating, +/area/maintenance/emergencyeva) +"cqc" = ( +/turf/simulated/floor/plating, +/area/maintenance/emergencyeva) +"cqd" = ( +/obj/machinery/alarm{ + pixel_y = 22 + }, +/turf/simulated/floor/plating, +/area/maintenance/emergencyeva) +"cqe" = ( +/obj/machinery/light/small{ + dir = 1 + }, +/obj/structure/catwalk, +/turf/simulated/floor/plating, +/area/maintenance/emergencyeva) +"cqf" = ( +/obj/machinery/power/apc{ + dir = 1; + name = "north bump"; + pixel_x = 0; + pixel_y = 24 + }, +/obj/structure/cable{ + icon_state = "0-4"; + d2 = 4 + }, +/obj/structure/catwalk, +/turf/simulated/floor/plating, +/area/maintenance/emergencyeva) +"cqg" = ( +/obj/structure/cable{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/obj/structure/catwalk, +/turf/simulated/floor/plating, +/area/maintenance/emergencyeva) +"cqh" = ( +/obj/machinery/door/firedoor/border_only, +/obj/structure/cable{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/obj/machinery/door/airlock/maintenance{ + req_access = list(12) + }, +/turf/simulated/floor/plating, +/area/ai_monitored/storage/emergency/eva) +"cqi" = ( +/obj/structure/cable{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/obj/structure/extinguisher_cabinet{ + pixel_y = 30 + }, +/turf/simulated/floor/tiled/techmaint, +/area/ai_monitored/storage/emergency/eva) +"cqj" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/obj/structure/cable{ + d1 = 1; + d2 = 2; + icon_state = "1-2"; + pixel_y = 0 + }, +/obj/structure/cable{ + d1 = 1; + d2 = 8; + icon_state = "1-8" + }, +/obj/effect/floor_decal/industrial/warning{ + icon_state = "warning"; + dir = 9 + }, +/turf/simulated/floor/tiled, +/area/ai_monitored/storage/emergency/eva) +"cqk" = ( +/obj/structure/disposalpipe/segment, +/obj/effect/floor_decal/industrial/warning{ + icon_state = "warning"; + dir = 5 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/turf/simulated/floor/tiled, +/area/ai_monitored/storage/emergency/eva) +"cql" = ( +/obj/machinery/portable_atmospherics/canister/oxygen, +/obj/machinery/firealarm{ + dir = 4; + pixel_x = 24 + }, +/turf/simulated/floor/tiled/techmaint, +/area/ai_monitored/storage/emergency/eva) +"cqm" = ( +/turf/simulated/floor, +/area/maintenance/bar) +"cqn" = ( +/obj/structure/closet/emcloset, +/obj/structure/catwalk, +/turf/simulated/floor/plating, +/area/maintenance/bar) +"cqo" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/obj/structure/cable{ + d1 = 1; + d2 = 2; + icon_state = "1-2"; + pixel_y = 0 + }, +/obj/structure/catwalk, +/turf/simulated/floor/plating, +/area/maintenance/bar) +"cqp" = ( +/turf/simulated/wall/r_wall, +/area/hallway/primary/seconddeck/apcenter) +"cqq" = ( +/obj/structure/flora/ausbushes/pointybush, +/turf/simulated/floor/grass, +/area/hallway/primary/seconddeck/apcenter) +"cqr" = ( +/obj/structure/flora/ausbushes/fullgrass, +/turf/simulated/floor/grass, +/area/hallway/primary/seconddeck/apcenter) +"cqs" = ( +/obj/effect/floor_decal/steeldecal/steel_decals4{ + dir = 4 + }, +/obj/effect/floor_decal/steeldecal/steel_decals4{ + dir = 9 + }, +/turf/simulated/floor/tiled, +/area/hallway/primary/seconddeck/apcenter) +"cqt" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/obj/effect/floor_decal/borderfloor/corner2{ + dir = 4 + }, +/obj/effect/floor_decal/borderfloor/corner2{ + dir = 1 + }, +/obj/effect/floor_decal/corner/green/bordercorner2{ + dir = 4 + }, +/obj/effect/floor_decal/corner/green/bordercorner2{ + dir = 1 + }, +/turf/simulated/floor/tiled, +/area/hallway/primary/seconddeck/apcenter) +"cqu" = ( +/obj/structure/disposalpipe/segment, +/obj/machinery/light{ + dir = 4; + icon_state = "tube1" + }, +/obj/effect/floor_decal/steeldecal/steel_decals4{ + dir = 4 + }, +/obj/effect/floor_decal/steeldecal/steel_decals4{ + dir = 9 + }, +/turf/simulated/floor/tiled, +/area/hallway/primary/seconddeck/apcenter) +"cqv" = ( +/obj/structure/closet, +/obj/item/clothing/head/ushanka, +/obj/random/maintenance/clean, +/obj/random/maintenance/clean, +/obj/random/maintenance/clean, +/obj/random/plushie, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 6 + }, +/turf/simulated/floor/plating, +/area/maintenance/central) +"cqw" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 9 + }, +/obj/structure/cable/green{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/turf/simulated/floor/plating, +/area/maintenance/central) +"cqx" = ( +/turf/simulated/wall, +/area/hallway/primary/seconddeck/stairwell) +"cqy" = ( +/turf/simulated/wall/r_wall, +/area/hallway/primary/seconddeck/stairwell) +"cqz" = ( +/obj/effect/floor_decal/borderfloorblack{ + dir = 9 + }, +/obj/effect/floor_decal/industrial/danger{ + dir = 9 + }, +/turf/simulated/floor/tiled/techfloor/grid, +/area/hallway/primary/seconddeck/apcenter) +"cqA" = ( +/obj/effect/floor_decal/borderfloorblack{ + dir = 1 + }, +/obj/effect/floor_decal/industrial/danger{ + dir = 1 + }, +/turf/simulated/floor/tiled/techfloor/grid, +/area/hallway/primary/seconddeck/apcenter) +"cqB" = ( +/obj/effect/floor_decal/borderfloorblack{ + dir = 5 + }, +/obj/effect/floor_decal/industrial/danger{ + dir = 5 + }, +/turf/simulated/floor/tiled/techfloor/grid, +/area/hallway/primary/seconddeck/apcenter) +"cqC" = ( +/obj/machinery/computer/skills, +/obj/structure/table/reinforced, +/obj/machinery/button/remote/blast_door{ + desc = "A remote control-switch for shutters."; + id = "hop_office_desk"; + name = "Desk Privacy Shutter"; + pixel_x = 8; + pixel_y = 28 + }, +/obj/machinery/button/windowtint{ + id = "hop_office"; + pixel_x = 0; + pixel_y = 29 + }, +/obj/effect/floor_decal/borderfloor{ + dir = 8 + }, +/obj/effect/floor_decal/corner/blue/border{ + dir = 8 + }, +/turf/simulated/floor/tiled, +/area/crew_quarters/heads/sc/hop) +"cqD" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/obj/structure/cable/green{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/obj/effect/floor_decal/steeldecal/steel_decals4{ + dir = 9 + }, +/obj/effect/floor_decal/steeldecal/steel_decals4{ + dir = 4 + }, +/turf/simulated/floor/tiled, +/area/crew_quarters/heads/sc/hop) +"cqE" = ( +/obj/structure/filingcabinet/chestdrawer, +/obj/machinery/newscaster/security_unit{ + pixel_x = 0; + pixel_y = 30 + }, +/obj/effect/floor_decal/borderfloor{ + dir = 4 + }, +/obj/effect/floor_decal/corner/blue/border{ + dir = 4 + }, +/turf/simulated/floor/tiled, +/area/crew_quarters/heads/sc/hop) +"cqF" = ( +/obj/machinery/account_database, +/obj/machinery/alarm{ + pixel_y = 23 + }, +/turf/simulated/floor/carpet, +/area/crew_quarters/heads/sc/hop) +"cqG" = ( +/obj/structure/table/reinforced, +/obj/machinery/photocopier/faxmachine{ + department = "Head of Personnel's Office" + }, +/obj/machinery/requests_console{ + announcementConsole = 1; + department = "Head of Personnel's Desk"; + departmentType = 5; + name = "Head of Personnel RC"; + pixel_x = 30; + pixel_y = 0 + }, +/turf/simulated/floor/carpet, +/area/crew_quarters/heads/sc/hop) +"cqH" = ( +/obj/structure/disposalpipe/segment, +/obj/machinery/light{ + icon_state = "tube1"; + dir = 8 + }, +/obj/effect/floor_decal/steeldecal/steel_decals4{ + dir = 4 + }, +/obj/effect/floor_decal/steeldecal/steel_decals4{ + dir = 9 + }, +/turf/simulated/floor/tiled, +/area/hallway/primary/seconddeck/ascenter) +"cqI" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/obj/effect/floor_decal/borderfloor/corner2{ + dir = 4 + }, +/obj/effect/floor_decal/borderfloor/corner2{ + dir = 1 + }, +/obj/effect/floor_decal/corner/green/bordercorner2{ + dir = 4 + }, +/obj/effect/floor_decal/corner/green/bordercorner2{ + dir = 1 + }, +/turf/simulated/floor/tiled, +/area/hallway/primary/seconddeck/ascenter) +"cqJ" = ( +/obj/machinery/seed_storage/garden, +/obj/effect/floor_decal/spline/plain{ + dir = 8 + }, +/turf/simulated/floor/tiled/hydro, +/area/hallway/primary/seconddeck/ascenter) +"cqK" = ( +/obj/machinery/vending/hydronutrients, +/turf/simulated/floor/tiled/hydro, +/area/hallway/primary/seconddeck/ascenter) +"cqL" = ( +/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{ + dir = 8 + }, +/obj/machinery/atmospherics/pipe/manifold/hidden/supply{ + dir = 8 + }, +/obj/structure/cable{ + d1 = 1; + d2 = 2; + icon_state = "1-2"; + pixel_y = 0 + }, +/turf/simulated/floor/plating, +/area/maintenance/medbay) +"cqM" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/turf/simulated/floor/plating, +/area/maintenance/medbay) +"cqN" = ( +/obj/machinery/alarm{ + pixel_y = 23 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/turf/simulated/floor/plating, +/area/maintenance/medbay) +"cqO" = ( +/obj/machinery/door/firedoor/border_only, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, +/obj/machinery/door/airlock/maintenance{ + req_access = null; + req_one_access = list(5,12) + }, +/turf/simulated/floor/plating, +/area/maintenance/medbay) +"cqP" = ( +/obj/effect/floor_decal/industrial/warning, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, +/turf/simulated/floor/tiled, +/area/hallway/primary/seconddeck/starboard) +"cqQ" = ( +/obj/machinery/door/firedoor/border_only, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, +/obj/machinery/door/airlock/maintenance{ + req_access = null; + req_one_access = list(5,12) + }, +/turf/simulated/floor/plating, +/area/maintenance/medbay_fore) +"cqR" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 10 + }, +/turf/simulated/floor/plating, +/area/maintenance/medbay_fore) +"cqS" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/turf/simulated/floor/plating, +/area/maintenance/medbay_fore) +"cqT" = ( +/obj/machinery/atmospherics/pipe/simple/visible/universal{ + dir = 4 + }, +/obj/machinery/light/small{ + dir = 1 + }, +/turf/simulated/floor/plating, +/area/maintenance/medbay_fore) +"cqU" = ( +/obj/machinery/atmospherics/valve/digital/open{ + dir = 4 + }, +/turf/simulated/floor/plating, +/area/maintenance/medbay_fore) +"cqV" = ( +/obj/machinery/atmospherics/pipe/simple/visible/universal{ + dir = 4 + }, +/turf/simulated/floor/plating, +/area/maintenance/medbay_fore) +"cqW" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/obj/machinery/meter, +/turf/simulated/floor/plating, +/area/maintenance/medbay_fore) +"cqX" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 10 + }, +/turf/simulated/floor/plating, +/area/maintenance/medbay_fore) +"cqY" = ( +/obj/structure/catwalk, +/turf/simulated/floor/plating, +/area/maintenance/medbay_fore) +"cqZ" = ( +/obj/structure/cable{ + icon_state = "0-4"; + d2 = 4 + }, +/obj/machinery/power/apc{ + dir = 1; + name = "north bump"; + pixel_x = 0; + pixel_y = 24 + }, +/obj/structure/catwalk, +/turf/simulated/floor/plating, +/area/maintenance/medbay_fore) +"cra" = ( +/obj/structure/cable{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/obj/structure/catwalk, +/turf/simulated/floor/plating, +/area/maintenance/medbay_fore) +"crb" = ( +/obj/machinery/door/firedoor/border_only, +/obj/structure/cable{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/obj/machinery/door/airlock/maintenance{ + req_access = null; + req_one_access = list(5,12) + }, +/turf/simulated/floor/plating, +/area/maintenance/medbay_fore) +"crc" = ( +/obj/effect/floor_decal/industrial/warning, +/obj/structure/cable{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/turf/simulated/floor/tiled/dark, +/area/hallway/primary/seconddeck/starboard) +"crd" = ( +/obj/effect/floor_decal/industrial/warning, +/obj/structure/cable{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/obj/structure/disposalpipe/segment, +/obj/effect/floor_decal/borderfloor/corner{ + dir = 1 + }, +/obj/effect/floor_decal/corner/paleblue/bordercorner{ + dir = 1 + }, +/turf/simulated/floor/tiled, +/area/hallway/primary/seconddeck/starboard) +"cre" = ( +/obj/effect/floor_decal/industrial/warning, +/obj/structure/cable{ + d1 = 1; + d2 = 8; + icon_state = "1-8" + }, +/turf/simulated/floor/tiled, +/area/hallway/primary/seconddeck/starboard) +"crf" = ( +/obj/effect/floor_decal/industrial/warning, +/obj/effect/floor_decal/borderfloor/corner{ + dir = 4 + }, +/obj/effect/floor_decal/corner/paleblue/bordercorner{ + dir = 4 + }, +/turf/simulated/floor/tiled, +/area/hallway/primary/seconddeck/starboard) +"crg" = ( +/obj/effect/floor_decal/industrial/warning, +/turf/simulated/floor/tiled/dark, +/area/hallway/primary/seconddeck/starboard) +"crh" = ( +/turf/simulated/wall, +/area/maintenance/research_medical) +"cri" = ( +/obj/machinery/door/firedoor/border_only, +/obj/machinery/door/airlock/maintenance{ + req_access = null; + req_one_access = list(5,12,47) + }, +/turf/simulated/floor/plating, +/area/maintenance/research_medical) +"crj" = ( +/obj/structure/reagent_dispensers/fueltank, +/turf/simulated/floor/plating, +/area/maintenance/research_medical) +"crk" = ( +/obj/structure/extinguisher_cabinet{ + pixel_x = -28; + pixel_y = 0 + }, +/obj/structure/disposalpipe/segment{ + dir = 1; + icon_state = "pipe-c" + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/structure/cable/green{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 5 + }, +/obj/effect/floor_decal/steeldecal/steel_decals4{ + dir = 9 + }, +/obj/effect/floor_decal/steeldecal/steel_decals4{ + dir = 4 + }, +/turf/simulated/floor/tiled/white, +/area/medical/medbay2) +"crl" = ( +/obj/structure/disposalpipe/segment{ + dir = 2; + icon_state = "pipe-c" + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 10 + }, +/obj/effect/floor_decal/industrial/hatch/yellow, +/obj/structure/window/reinforced{ + dir = 8 + }, +/obj/machinery/door/window/southright{ + name = "Medical Delivery"; + req_access = list(5) + }, +/turf/simulated/floor/tiled, +/area/medical/medbay2) +"crm" = ( +/turf/simulated/wall, +/area/medical/genetics) +"crn" = ( +/obj/random/contraband, +/turf/simulated/floor/plating, +/area/medical/genetics) +"cro" = ( +/obj/item/frame, +/turf/simulated/floor/tiled/white, +/area/medical/genetics) +"crp" = ( +/obj/structure/frame{ + anchored = 1 + }, +/turf/simulated/floor/tiled/white, +/area/medical/genetics) +"crq" = ( +/turf/simulated/floor/tiled/white, +/area/medical/genetics) +"crr" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/obj/structure/cable/green{ + d1 = 1; + d2 = 4; + icon_state = "1-4" + }, +/obj/effect/floor_decal/steeldecal/steel_decals4{ + dir = 4 + }, +/obj/effect/floor_decal/steeldecal/steel_decals4{ + dir = 9 + }, +/turf/simulated/floor/tiled/white, +/area/medical/genetics) +"crs" = ( +/obj/structure/cable/green{ + d2 = 8; + icon_state = "0-8" + }, +/obj/structure/table, +/obj/item/frame/apc, +/turf/simulated/floor/tiled/white, +/area/medical/genetics) +"crt" = ( +/obj/structure/table, +/turf/simulated/floor/tiled/white, +/area/medical/genetics) +"cru" = ( +/obj/structure/window/reinforced{ + dir = 8 + }, +/turf/simulated/floor/tiled/steel, +/area/medical/genetics) +"crv" = ( +/turf/simulated/floor/plating, +/area/medical/genetics) +"crw" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/yellow, +/obj/machinery/light{ + dir = 8 + }, +/obj/effect/floor_decal/borderfloorwhite{ + dir = 8 + }, +/obj/effect/floor_decal/corner/lime/border{ + dir = 8 + }, +/turf/simulated/floor/tiled/white, +/area/medical/virology) +"crx" = ( +/obj/structure/closet/crate/freezer, +/obj/item/weapon/virusdish/random, +/obj/effect/floor_decal/borderfloorwhite{ + dir = 4 + }, +/obj/effect/floor_decal/corner/lime/border{ + dir = 4 + }, +/turf/simulated/floor/tiled/white, +/area/medical/virology) +"cry" = ( +/obj/machinery/door/firedoor/glass, +/obj/machinery/door/window/southright{ + dir = 2; + name = "Virology Isolation Room"; + req_access = list(39) + }, +/obj/machinery/atmospherics/pipe/simple/hidden/black, +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/turf/simulated/floor/tiled/white, +/area/medical/virology) +"crz" = ( +/obj/machinery/atmospherics/pipe/simple/visible/yellow, +/obj/effect/floor_decal/industrial/warning/corner, +/turf/simulated/floor, +/area/engineering/engine_room) +"crA" = ( +/obj/machinery/atmospherics/pipe/manifold/visible/green{ + icon_state = "map"; + dir = 4 + }, +/obj/machinery/meter, +/obj/effect/floor_decal/industrial/warning/corner{ + icon_state = "warningcorner"; + dir = 1 + }, +/turf/simulated/floor, +/area/engineering/engine_room) +"crB" = ( +/obj/machinery/atmospherics/pipe/simple/visible/yellow, +/obj/machinery/atmospherics/pipe/simple/visible/cyan{ + dir = 4; + icon_state = "intact" + }, +/obj/effect/floor_decal/industrial/warning/corner, +/turf/simulated/floor, +/area/engineering/engine_room) +"crC" = ( +/obj/machinery/atmospherics/pipe/manifold/visible/cyan, +/obj/effect/floor_decal/industrial/warning, +/turf/simulated/floor, +/area/engineering/engine_room) +"crD" = ( +/obj/effect/floor_decal/industrial/warning/corner{ + dir = 8 + }, +/obj/machinery/atmospherics/pipe/simple/visible/cyan{ + dir = 10 + }, +/turf/simulated/floor, +/area/engineering/engine_room) +"crE" = ( +/obj/machinery/atmospherics/pipe/manifold/visible/green{ + dir = 8 + }, +/obj/structure/cable/yellow{ + d1 = 2; + d2 = 4; + icon_state = "2-4" + }, +/turf/simulated/floor, +/area/engineering/engine_room) +"crF" = ( +/obj/machinery/atmospherics/pipe/simple/visible/green{ + dir = 9; + icon_state = "intact" + }, +/obj/effect/floor_decal/industrial/warning{ + dir = 4 + }, +/obj/structure/cable/yellow{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/turf/simulated/floor, +/area/engineering/engine_room) +"crG" = ( +/obj/structure/cable/yellow{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/obj/machinery/door/airlock/hatch{ + icon_state = "door_locked"; + id_tag = "engine_electrical_maintenance"; + locked = 1; + name = "SMES Access"; + req_access = list(10) + }, +/obj/machinery/door/firedoor/border_only, +/turf/simulated/floor, +/area/engineering/engine_smes) +"crH" = ( +/obj/structure/cable/yellow{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/obj/structure/cable/yellow{ + d2 = 8; + icon_state = "0-8" + }, +/obj/machinery/power/terminal, +/obj/machinery/button/remote/airlock{ + id = "engine_electrical_maintenance"; + name = "Door Bolt Control"; + pixel_x = 0; + pixel_y = 26; + req_access = list(10); + specialfunctions = 4 + }, +/obj/effect/floor_decal/industrial/warning{ + dir = 10 + }, +/obj/machinery/power/sensor{ + name = "Powernet Sensor - Engine Output"; + name_tag = "Engine Output" + }, +/turf/simulated/floor/tiled, +/area/engineering/engine_smes) +"crI" = ( +/obj/structure/cable/yellow{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/obj/structure/cable/cyan{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/obj/effect/floor_decal/industrial/warning/corner{ + dir = 8 + }, +/obj/item/device/radio/intercom{ + dir = 1; + name = "Station Intercom (General)"; + pixel_y = 21 + }, +/obj/machinery/atmospherics/unary/vent_pump/on{ + dir = 4 + }, +/turf/simulated/floor/tiled, +/area/engineering/engine_smes) +"crJ" = ( +/obj/structure/cable/yellow{ + d1 = 2; + d2 = 8; + icon_state = "2-8" + }, +/obj/machinery/light{ + dir = 1 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 6 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/turf/simulated/floor/tiled, +/area/engineering/engine_smes) +"crK" = ( +/obj/structure/cable{ + d1 = 1; + d2 = 4; + icon_state = "1-4" + }, +/obj/effect/floor_decal/industrial/warning/corner, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 9 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 9; + pixel_y = 0 + }, +/turf/simulated/floor/tiled, +/area/engineering/engine_smes) +"crL" = ( +/obj/structure/cable{ + d1 = 2; + d2 = 8; + icon_state = "2-8" + }, +/obj/effect/floor_decal/industrial/warning{ + dir = 6 + }, +/obj/machinery/firealarm{ + dir = 4; + pixel_x = 24 + }, +/turf/simulated/floor/tiled, +/area/engineering/engine_smes) +"crM" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 6 + }, +/obj/structure/cable{ + d1 = 2; + d2 = 4; + icon_state = "2-4" + }, +/obj/structure/disposalpipe/segment{ + dir = 4; + icon_state = "pipe-c" + }, +/turf/simulated/floor, +/area/maintenance/apmaint) +"crN" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/obj/structure/cable{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/turf/simulated/floor, +/area/maintenance/apmaint) +"crO" = ( +/obj/structure/disposalpipe/segment{ + dir = 2; + icon_state = "pipe-c" + }, +/turf/simulated/floor/plating, +/area/maintenance/apmaint) +"crP" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 5 + }, +/obj/structure/cable{ + d1 = 1; + d2 = 8; + icon_state = "1-8" + }, +/obj/machinery/atmospherics/pipe/manifold/hidden/supply, +/obj/structure/disposalpipe/sortjunction/wildcard{ + dir = 8 + }, +/obj/structure/cable{ + d1 = 1; + d2 = 2; + icon_state = "1-2"; + pixel_y = 0 + }, +/turf/simulated/floor/plating, +/area/maintenance/apmaint) +"crQ" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/obj/structure/cable{ + d1 = 1; + d2 = 2; + icon_state = "1-2"; + pixel_y = 0 + }, +/obj/structure/disposalpipe/junction{ + dir = 1 + }, +/turf/simulated/floor/plating, +/area/maintenance/apmaint) +"crR" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/structure/catwalk, +/turf/simulated/floor/plating, +/area/maintenance/apmaint) +"crS" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 10 + }, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/structure/catwalk, +/turf/simulated/floor/plating, +/area/maintenance/apmaint) +"crT" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 10 + }, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/structure/catwalk, +/turf/simulated/floor/plating, +/area/maintenance/apmaint) +"crU" = ( +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/structure/catwalk, +/turf/simulated/floor/plating, +/area/maintenance/apmaint) +"crV" = ( +/obj/structure/disposalpipe/segment{ + dir = 2; + icon_state = "pipe-c" + }, +/obj/structure/catwalk, +/turf/simulated/floor/plating, +/area/maintenance/apmaint) +"crW" = ( +/obj/machinery/light{ + dir = 8 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/effect/floor_decal/borderfloorblack/corner{ + dir = 1 + }, +/obj/effect/floor_decal/corner/green/bordercorner{ + dir = 1 + }, +/obj/machinery/r_n_d/circuit_imprinter, +/obj/item/weapon/reagent_containers/glass/beaker/sulphuric, +/turf/simulated/floor/tiled/dark, +/area/rnd/workshop) +"crX" = ( +/obj/effect/floor_decal/industrial/hatch/yellow, +/obj/machinery/door/blast/regular{ + density = 0; + dir = 1; + icon_state = "pdoor0"; + id = "crglockdown"; + name = "Cargo Lockdown"; + opacity = 0 + }, +/turf/simulated/floor/tiled/dark, +/area/hallway/primary/seconddeck/port) +"crY" = ( +/obj/structure/table/rack{ + dir = 1 + }, +/obj/item/weapon/storage/bag/ore, +/obj/random/maintenance/cargo, +/obj/random/maintenance/cargo, +/obj/random/maintenance/cargo, +/obj/random/maintenance/cargo, +/turf/simulated/floor/plating, +/area/maintenance/emergencyeva) +"crZ" = ( +/obj/structure/closet/emcloset, +/turf/simulated/floor/plating, +/area/maintenance/emergencyeva) +"csa" = ( +/obj/machinery/portable_atmospherics/powered/pump/filled, +/turf/simulated/floor/plating, +/area/maintenance/emergencyeva) +"csb" = ( +/obj/machinery/portable_atmospherics/powered/scrubber, +/turf/simulated/floor/plating, +/area/maintenance/emergencyeva) +"csc" = ( +/obj/machinery/space_heater, +/turf/simulated/floor/plating, +/area/maintenance/emergencyeva) +"csd" = ( +/obj/structure/table/rack{ + dir = 8; + layer = 2.6 + }, +/obj/structure/window/reinforced{ + dir = 8; + health = 1e+006 + }, +/obj/structure/window/reinforced{ + dir = 1; + health = 1e+006 + }, +/obj/machinery/door/window/eastleft, +/obj/item/clothing/suit/space, +/obj/item/clothing/mask/breath, +/obj/item/clothing/head/helmet/space, +/turf/simulated/floor/tiled/techmaint, +/area/ai_monitored/storage/emergency/eva) +"cse" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 5 + }, +/obj/structure/cable{ + d1 = 1; + d2 = 2; + icon_state = "1-2"; + pixel_y = 0 + }, +/obj/machinery/hologram/holopad, +/obj/effect/floor_decal/industrial/warning{ + dir = 8 + }, +/turf/simulated/floor/tiled, +/area/ai_monitored/storage/emergency/eva) +"csf" = ( +/obj/effect/floor_decal/industrial/warning{ + dir = 4 + }, +/obj/machinery/atmospherics/unary/vent_scrubber/on{ + dir = 8 + }, +/obj/structure/disposalpipe/segment, +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/turf/simulated/floor/tiled, +/area/ai_monitored/storage/emergency/eva) +"csg" = ( +/obj/structure/dispenser/oxygen, +/turf/simulated/floor/tiled/techmaint, +/area/ai_monitored/storage/emergency/eva) +"csh" = ( +/obj/machinery/light/small{ + dir = 8 + }, +/obj/structure/catwalk, +/turf/simulated/floor/plating, +/area/maintenance/bar) +"csi" = ( +/obj/machinery/portable_atmospherics/hydroponics/soil, +/turf/simulated/floor/grass, +/area/hallway/primary/seconddeck/apcenter) +"csj" = ( +/turf/simulated/floor/tiled, +/area/hallway/primary/seconddeck/apcenter) +"csk" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/turf/simulated/floor/tiled/monotile, +/area/hallway/primary/seconddeck/apcenter) +"csl" = ( +/obj/structure/disposalpipe/segment, +/turf/simulated/floor/tiled, +/area/hallway/primary/seconddeck/apcenter) +"csm" = ( +/obj/machinery/atmospherics/pipe/simple/visible/universal, +/obj/effect/decal/cleanable/dirt, +/obj/structure/closet/crate, +/obj/random/maintenance/medical, +/obj/random/maintenance/research, +/obj/random/maintenance/clean, +/obj/random/maintenance/clean, +/obj/random/maintenance/cargo, +/turf/simulated/floor/plating, +/area/maintenance/central) +"csn" = ( +/obj/machinery/atmospherics/pipe/simple/visible/universal, +/obj/structure/cable/green{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/turf/simulated/floor/plating, +/area/maintenance/central) +"cso" = ( +/obj/machinery/lapvend, +/obj/machinery/light{ + dir = 8 + }, +/turf/simulated/floor/tiled, +/area/hallway/primary/seconddeck/stairwell) +"csp" = ( +/obj/structure/table/glass, +/obj/machinery/firealarm{ + pixel_y = 24 + }, +/obj/machinery/recharger{ + pixel_y = 0 + }, +/obj/machinery/camera/network/second_deck{ + c_tag = "Second Deck - Center Stair Access"; + dir = 2 + }, +/turf/simulated/floor/tiled, +/area/hallway/primary/seconddeck/stairwell) +"csq" = ( +/obj/structure/table/glass, +/obj/random/cigarettes, +/obj/random/toolbox, +/obj/random/tech_supply, +/obj/item/device/radio/intercom{ + dir = 1; + name = "Station Intercom (General)"; + pixel_y = 21 + }, +/turf/simulated/floor/tiled, +/area/hallway/primary/seconddeck/stairwell) +"csr" = ( +/obj/machinery/door/firedoor/border_only, +/obj/effect/wingrille_spawn/reinforced, +/turf/simulated/floor/plating, +/area/hallway/primary/seconddeck/stairwell) +"css" = ( +/obj/effect/floor_decal/industrial/hatch/yellow, +/turf/simulated/floor/tiled, +/area/hallway/primary/seconddeck/apcenter) +"cst" = ( +/obj/structure/table/reinforced, +/obj/machinery/door/blast/shutters{ + density = 0; + dir = 8; + icon_state = "shutter0"; + id = "hop_office_desk"; + name = "HoP Office Privacy Shutters"; + opacity = 0 + }, +/obj/machinery/door/window/brigdoor/eastright{ + name = "Head of Personnel's Desk"; + req_access = list(57) + }, +/obj/machinery/door/window/northleft{ + dir = 8; + icon_state = "left"; + name = "Reception Window" + }, +/obj/structure/noticeboard{ + pixel_y = 27 + }, +/obj/machinery/door/firedoor/glass, +/turf/simulated/floor/tiled/dark, +/area/crew_quarters/heads/sc/hop) +"csu" = ( +/obj/structure/bed/chair/office/dark{ + dir = 8 + }, +/obj/effect/landmark/start{ + name = "Head of Personnel" + }, +/obj/effect/floor_decal/borderfloor{ + dir = 8 + }, +/obj/effect/floor_decal/corner/blue/border{ + dir = 8 + }, +/turf/simulated/floor/tiled, +/area/crew_quarters/heads/sc/hop) +"csv" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 5 + }, +/obj/structure/cable/green{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/turf/simulated/floor/tiled, +/area/crew_quarters/heads/sc/hop) +"csw" = ( +/obj/machinery/atmospherics/unary/vent_scrubber/on{ + dir = 8 + }, +/obj/effect/floor_decal/borderfloor{ + dir = 4 + }, +/obj/effect/floor_decal/corner/blue/border{ + dir = 4 + }, +/mob/living/simple_mob/animal/passive/dog/corgi/Ian, +/turf/simulated/floor/tiled, +/area/crew_quarters/heads/sc/hop) +"csx" = ( +/obj/structure/bed/chair/office/dark, +/turf/simulated/floor/carpet, +/area/crew_quarters/heads/sc/hop) +"csy" = ( +/obj/structure/table/reinforced, +/obj/machinery/recharger{ + pixel_y = 0 + }, +/obj/item/weapon/packageWrap, +/obj/item/weapon/hand_labeler, +/obj/machinery/computer/guestpass{ + pixel_x = 28; + pixel_y = 0 + }, +/turf/simulated/floor/carpet, +/area/crew_quarters/heads/sc/hop) +"csz" = ( +/obj/structure/disposalpipe/segment, +/turf/simulated/floor/tiled, +/area/hallway/primary/seconddeck/ascenter) +"csA" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/turf/simulated/floor/tiled/monotile, +/area/hallway/primary/seconddeck/ascenter) +"csB" = ( +/obj/effect/floor_decal/spline/plain{ + dir = 8 + }, +/turf/simulated/floor/tiled/hydro, +/area/hallway/primary/seconddeck/ascenter) +"csC" = ( +/obj/structure/sink{ + dir = 4; + icon_state = "sink"; + pixel_x = 11; + pixel_y = 0 + }, +/turf/simulated/floor/tiled/hydro, +/area/hallway/primary/seconddeck/ascenter) +"csD" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/structure/cable{ + d1 = 1; + d2 = 2; + icon_state = "1-2"; + pixel_y = 0 + }, +/turf/simulated/floor/plating, +/area/maintenance/medbay) +"csE" = ( +/obj/machinery/light/small, +/turf/simulated/floor/plating, +/area/maintenance/medbay) +"csF" = ( +/turf/simulated/floor/plating, +/area/maintenance/medbay) +"csG" = ( +/obj/structure/sign/redcross{ + desc = "The Star of Life, a symbol of Medical Aid."; + icon_state = "lifestar"; + name = "Medbay"; + pixel_x = -32 + }, +/obj/effect/floor_decal/industrial/hatch/yellow, +/obj/machinery/door/blast/regular{ + density = 0; + icon_state = "pdoor0"; + id = "medbayquar"; + name = "Medbay Emergency Lockdown Shutters"; + opacity = 0 + }, +/turf/simulated/floor/tiled/dark, +/area/hallway/primary/seconddeck/starboard) +"csH" = ( +/obj/structure/sign/redcross{ + desc = "The Star of Life, a symbol of Medical Aid."; + icon_state = "lifestar"; + name = "Medbay"; + pixel_x = 32 + }, +/obj/effect/floor_decal/industrial/hatch/yellow, +/obj/machinery/door/blast/regular{ + density = 0; + icon_state = "pdoor0"; + id = "medbayquar"; + name = "Medbay Emergency Lockdown Shutters"; + opacity = 0 + }, +/turf/simulated/floor/tiled/dark, +/area/hallway/primary/seconddeck/starboard) +"csI" = ( +/obj/machinery/floodlight, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 5 + }, +/turf/simulated/floor/plating, +/area/maintenance/medbay_fore) +"csJ" = ( +/obj/machinery/space_heater, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, +/turf/simulated/floor/plating, +/area/maintenance/medbay_fore) +"csK" = ( +/obj/machinery/atmospherics/pipe/simple/visible/universal{ + dir = 4 + }, +/obj/machinery/portable_atmospherics/powered/scrubber, +/turf/simulated/floor/plating, +/area/maintenance/medbay_fore) +"csL" = ( +/obj/machinery/atmospherics/valve/digital/open{ + dir = 4 + }, +/obj/machinery/portable_atmospherics/powered/pump/filled, +/turf/simulated/floor/plating, +/area/maintenance/medbay_fore) +"csM" = ( +/obj/structure/table/rack{ + dir = 1 + }, +/obj/item/clothing/suit/fire/firefighter, +/obj/item/weapon/tank/oxygen, +/obj/item/clothing/mask/gas, +/obj/item/weapon/extinguisher, +/obj/item/clothing/head/hardhat/red, +/obj/item/clothing/glasses/meson, +/obj/machinery/alarm{ + dir = 1; + icon_state = "alarm0"; + pixel_y = -22 + }, +/obj/machinery/atmospherics/pipe/simple/visible/universal{ + dir = 4 + }, +/turf/simulated/floor/plating, +/area/maintenance/medbay_fore) +"csN" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, +/obj/machinery/meter, +/turf/simulated/floor/plating, +/area/maintenance/medbay_fore) +"csO" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 10 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/turf/simulated/floor/plating, +/area/maintenance/medbay_fore) +"csP" = ( +/obj/structure/table/steel, +/obj/item/weapon/storage/box/lights/mixed, +/obj/item/weapon/storage/box/lights/mixed, +/obj/item/device/t_scanner, +/turf/simulated/floor/plating, +/area/maintenance/medbay_fore) +"csQ" = ( +/obj/structure/table/rack, +/obj/item/clothing/glasses/sunglasses, +/obj/item/clothing/suit/storage/hazardvest, +/obj/item/device/radio, +/obj/random/maintenance/medical, +/obj/random/maintenance/medical, +/obj/machinery/light/small, +/turf/simulated/floor/plating, +/area/maintenance/medbay_fore) +"csR" = ( +/obj/structure/closet/emcloset, +/turf/simulated/floor/plating, +/area/maintenance/medbay_fore) +"csS" = ( +/obj/structure/closet, +/obj/item/weapon/storage/backpack, +/obj/random/maintenance/medical, +/obj/random/maintenance/medical, +/obj/random/maintenance/medical, +/obj/random/firstaid, +/turf/simulated/floor/plating, +/area/maintenance/medbay_fore) +"csT" = ( +/obj/effect/floor_decal/industrial/hatch/yellow, +/obj/structure/sign/redcross{ + desc = "The Star of Life, a symbol of Medical Aid."; + icon_state = "lifestar"; + name = "Medbay"; + pixel_x = -32 + }, +/obj/machinery/door/blast/regular{ + density = 0; + icon_state = "pdoor0"; + id = "medbayquar"; + name = "Medbay Emergency Lockdown Shutters"; + opacity = 0 + }, +/turf/simulated/floor/tiled/dark, +/area/hallway/primary/seconddeck/starboard) +"csU" = ( +/obj/effect/floor_decal/industrial/hatch/yellow, +/obj/machinery/door/blast/regular{ + density = 0; + icon_state = "pdoor0"; + id = "medbayquar"; + name = "Medbay Emergency Lockdown Shutters"; + opacity = 0 + }, +/obj/structure/disposalpipe/segment, +/turf/simulated/floor/tiled/dark, +/area/hallway/primary/seconddeck/starboard) +"csV" = ( +/obj/effect/floor_decal/industrial/hatch/yellow, +/obj/machinery/door/blast/regular{ + density = 0; + icon_state = "pdoor0"; + id = "medbayquar"; + name = "Medbay Emergency Lockdown Shutters"; + opacity = 0 + }, +/turf/simulated/floor/tiled/dark, +/area/hallway/primary/seconddeck/starboard) +"csW" = ( +/obj/effect/floor_decal/industrial/hatch/yellow, +/obj/structure/sign/redcross{ + desc = "The Star of Life, a symbol of Medical Aid."; + icon_state = "lifestar"; + name = "Medbay"; + pixel_x = 32 + }, +/obj/machinery/door/blast/regular{ + density = 0; + icon_state = "pdoor0"; + id = "medbayquar"; + name = "Medbay Emergency Lockdown Shutters"; + opacity = 0 + }, +/turf/simulated/floor/tiled/dark, +/area/hallway/primary/seconddeck/starboard) +"csX" = ( +/obj/machinery/light/small, +/obj/structure/catwalk, +/turf/simulated/floor/plating, +/area/maintenance/research_medical) +"csY" = ( +/obj/structure/reagent_dispensers/watertank, +/turf/simulated/floor/plating, +/area/maintenance/research_medical) +"csZ" = ( +/obj/machinery/firealarm{ + dir = 8; + pixel_x = -24 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/structure/cable/green{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/obj/effect/floor_decal/borderfloorwhite{ + dir = 8 + }, +/obj/effect/floor_decal/corner/paleblue/border{ + dir = 8 + }, +/obj/effect/floor_decal/borderfloorwhite/corner2{ + dir = 8 + }, +/obj/effect/floor_decal/corner/paleblue/bordercorner2{ + dir = 8 + }, +/turf/simulated/floor/tiled/white, +/area/medical/medbay2) +"cta" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/obj/item/device/radio/intercom{ + dir = 4; + name = "Station Intercom (General)"; + pixel_x = 21 + }, +/obj/structure/disposalpipe/segment, +/obj/effect/floor_decal/borderfloorwhite{ + dir = 4 + }, +/obj/effect/floor_decal/corner/paleblue/border{ + dir = 4 + }, +/turf/simulated/floor/tiled/white, +/area/medical/medbay2) +"ctb" = ( +/obj/item/stack/tile/floor/white, +/turf/simulated/floor/plating, +/area/medical/genetics) +"ctc" = ( +/obj/item/weapon/camera_assembly, +/turf/simulated/floor/tiled/white, +/area/medical/genetics) +"ctd" = ( +/obj/machinery/atmospherics/unary/vent_scrubber/on{ + dir = 4 + }, +/turf/simulated/floor/tiled/white, +/area/medical/genetics) +"cte" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, +/turf/simulated/floor/tiled/white, +/area/medical/genetics) +"ctf" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 5 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 9 + }, +/turf/simulated/floor/tiled/white, +/area/medical/genetics) +"ctg" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/turf/simulated/floor/tiled/white, +/area/medical/genetics) +"cth" = ( +/obj/machinery/atmospherics/unary/vent_pump/on{ + dir = 8 + }, +/turf/simulated/floor/tiled/white, +/area/medical/genetics) +"cti" = ( +/obj/structure/window/reinforced{ + dir = 8 + }, +/turf/simulated/floor/plating, +/area/medical/genetics) +"ctj" = ( +/obj/machinery/ai_status_display, +/turf/simulated/wall/r_wall, +/area/medical/virology) +"ctk" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/yellow, +/obj/machinery/atmospherics/unary/vent_scrubber/on{ + dir = 4 + }, +/obj/effect/floor_decal/borderfloorwhite{ + dir = 8 + }, +/obj/effect/floor_decal/corner/lime/border{ + dir = 8 + }, +/turf/simulated/floor/tiled/white, +/area/medical/virology) +"ctl" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/black{ + dir = 9 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 5 + }, +/turf/simulated/floor/tiled/white, +/area/medical/virology) +"ctm" = ( +/obj/machinery/computer/med_data/laptop, +/obj/structure/table/glass, +/obj/machinery/atmospherics/unary/vent_pump/on{ + dir = 8 + }, +/obj/effect/floor_decal/borderfloorwhite{ + dir = 4 + }, +/obj/effect/floor_decal/corner/lime/border{ + dir = 4 + }, +/turf/simulated/floor/tiled/white, +/area/medical/virology) +"ctn" = ( +/obj/machinery/atmospherics/unary/vent_pump/on{ + dir = 4 + }, +/obj/effect/floor_decal/borderfloorwhite{ + dir = 8 + }, +/obj/effect/floor_decal/corner/lime/border{ + dir = 8 + }, +/turf/simulated/floor/tiled/white, +/area/medical/virology) +"cto" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/black{ + dir = 5 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 9; + pixel_y = 0 + }, +/turf/simulated/floor/tiled/white, +/area/medical/virology) +"ctp" = ( +/obj/machinery/atmospherics/unary/vent_scrubber/on{ + dir = 8 + }, +/obj/effect/floor_decal/borderfloorwhite{ + dir = 4 + }, +/obj/effect/floor_decal/corner/lime/border{ + dir = 4 + }, +/turf/simulated/floor/tiled/white, +/area/medical/virology) +"ctq" = ( +/obj/machinery/atmospherics/pipe/simple/visible/cyan{ + icon_state = "intact"; + dir = 6 + }, +/obj/effect/floor_decal/industrial/warning/corner{ + dir = 8 + }, +/turf/simulated/floor, +/area/engineering/engine_room) +"ctr" = ( +/obj/machinery/atmospherics/binary/circulator{ + anchored = 1; + dir = 4 + }, +/obj/effect/floor_decal/industrial/outline/yellow, +/turf/simulated/floor, +/area/engineering/engine_room) +"cts" = ( +/obj/machinery/atmospherics/pipe/simple/visible/cyan{ + dir = 9 + }, +/obj/effect/floor_decal/industrial/warning{ + icon_state = "warning"; + dir = 8 + }, +/turf/simulated/floor, +/area/engineering/engine_room) +"ctt" = ( +/obj/machinery/atmospherics/pipe/simple/visible/yellow{ + icon_state = "intact"; + dir = 5 + }, +/obj/effect/floor_decal/industrial/warning{ + icon_state = "warning"; + dir = 4 + }, +/obj/item/device/radio/intercom{ + dir = 8; + name = "Station Intercom (General)"; + pixel_x = -21 + }, +/turf/simulated/floor, +/area/engineering/engine_room) +"ctu" = ( +/obj/effect/floor_decal/industrial/warning{ + icon_state = "warning"; + dir = 8 + }, +/obj/machinery/atmospherics/pipe/simple/visible/cyan{ + dir = 9 + }, +/turf/simulated/floor, +/area/engineering/engine_room) +"ctv" = ( +/obj/machinery/atmospherics/pipe/simple/visible/green, +/obj/structure/cable/yellow{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/turf/simulated/floor, +/area/engineering/engine_room) +"ctw" = ( +/obj/effect/floor_decal/industrial/warning/corner{ + icon_state = "warningcorner"; + dir = 4 + }, +/obj/machinery/alarm/nobreach{ + dir = 8; + pixel_x = 22; + pixel_y = 0 + }, +/turf/simulated/floor, +/area/engineering/engine_room) +"ctx" = ( +/obj/structure/cable/cyan{ + d2 = 4; + icon_state = "0-4" + }, +/obj/machinery/power/smes/buildable{ + charge = 2e+006; + input_attempt = 1; + input_level = 100000; + output_level = 200000; + RCon_tag = "Engine - Core" + }, +/obj/effect/engine_setup/smes, +/turf/simulated/floor/plating, +/area/engineering/engine_smes) +"cty" = ( +/obj/structure/cable/cyan{ + d1 = 1; + d2 = 8; + icon_state = "1-8" + }, +/obj/effect/floor_decal/industrial/warning{ + icon_state = "warning"; + dir = 8 + }, +/obj/structure/cable/cyan{ + d2 = 8; + icon_state = "0-8" + }, +/obj/machinery/power/apc{ + dir = 2; + name = "south bump"; + pixel_y = -24 + }, +/obj/machinery/light_switch{ + pixel_x = 12; + pixel_y = -24 + }, +/obj/structure/table/steel, +/obj/item/stack/cable_coil{ + pixel_x = 3; + pixel_y = 3 + }, +/obj/item/stack/cable_coil{ + pixel_x = 3; + pixel_y = 3 + }, +/obj/item/weapon/storage/box/lights/mixed, +/turf/simulated/floor/tiled, +/area/engineering/engine_smes) +"ctz" = ( +/obj/structure/cable/yellow{ + d1 = 1; + d2 = 4; + icon_state = "1-4" + }, +/obj/structure/table/steel, +/obj/item/device/multitool{ + pixel_x = 5 + }, +/obj/item/clothing/gloves/yellow, +/obj/machinery/camera/network/engine{ + c_tag = "ENG - SMES Room"; + dir = 1 + }, +/obj/machinery/alarm{ + dir = 1; + icon_state = "alarm0"; + pixel_y = -22 + }, +/obj/machinery/atmospherics/unary/vent_scrubber/on{ + dir = 1 + }, +/turf/simulated/floor/tiled, +/area/engineering/engine_smes) +"ctA" = ( +/obj/structure/cable/yellow{ + d2 = 8; + icon_state = "0-8" + }, +/obj/machinery/power/terminal{ + dir = 4 + }, +/obj/effect/floor_decal/industrial/warning{ + dir = 4 + }, +/obj/structure/extinguisher_cabinet{ + pixel_y = -30 + }, +/turf/simulated/floor/tiled, +/area/engineering/engine_smes) +"ctB" = ( +/obj/structure/cable, +/obj/machinery/power/smes/buildable{ + charge = 1e+007; + cur_coils = 4; + input_attempt = 1; + input_level = 750000; + output_level = 750000; + RCon_tag = "Engine - Main" + }, +/obj/effect/engine_setup/smes/main, +/turf/simulated/floor/plating, +/area/engineering/engine_smes) +"ctC" = ( +/obj/structure/cable{ + d1 = 1; + d2 = 2; + icon_state = "1-2"; + pixel_y = 0 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/structure/disposalpipe/segment, +/turf/simulated/floor, +/area/maintenance/apmaint) +"ctD" = ( +/turf/simulated/wall, +/area/construction/seconddeck/construction1) +"ctE" = ( +/obj/structure/disposalpipe/segment, +/turf/simulated/wall, +/area/construction/seconddeck/construction1) +"ctF" = ( +/obj/machinery/door/firedoor/border_only, +/obj/machinery/door/airlock/engineering{ + name = "Construction Area"; + req_access = list(32) + }, +/obj/structure/cable{ + d1 = 1; + d2 = 2; + icon_state = "1-2"; + pixel_y = 0 + }, +/turf/simulated/floor/plating, +/area/construction/seconddeck/construction1) +"ctG" = ( +/obj/effect/floor_decal/industrial/warning, +/turf/simulated/floor/plating, +/area/maintenance/apmaint) +"ctH" = ( +/obj/machinery/atmospherics/pipe/simple/visible/universal, +/turf/simulated/floor/plating, +/area/maintenance/apmaint) +"ctI" = ( +/turf/simulated/wall, +/area/quartermaster/delivery) +"ctJ" = ( +/obj/structure/disposalpipe/segment, +/turf/simulated/wall, +/area/quartermaster/delivery) +"ctK" = ( +/obj/machinery/door/firedoor/border_only, +/obj/machinery/door/airlock/maintenance{ + name = "Delivery Office Maintenance"; + req_access = list(50) + }, +/turf/simulated/floor/plating, +/area/quartermaster/delivery) +"ctL" = ( +/turf/simulated/wall, +/area/quartermaster/foyer) +"ctM" = ( +/obj/machinery/door/firedoor/glass, +/obj/machinery/door/airlock/glass{ + name = "Cargo Access" + }, +/turf/simulated/floor/tiled/steel_grid, +/area/quartermaster/foyer) +"ctN" = ( +/obj/machinery/door/firedoor/border_only, +/obj/effect/wingrille_spawn/reinforced, +/turf/simulated/floor/plating, +/area/quartermaster/foyer) +"ctO" = ( +/turf/simulated/wall, +/area/quartermaster/qm) +"ctP" = ( +/obj/machinery/ai_status_display, +/turf/simulated/wall, +/area/quartermaster/qm) +"ctQ" = ( +/obj/structure/table/rack{ + dir = 8; + layer = 2.6 + }, +/obj/structure/window/reinforced{ + dir = 8; + health = 1e+006 + }, +/obj/structure/window/reinforced, +/obj/machinery/door/window/eastright, +/obj/item/clothing/suit/space, +/obj/item/clothing/mask/breath, +/obj/item/clothing/head/helmet/space, +/turf/simulated/floor/tiled/techmaint, +/area/ai_monitored/storage/emergency/eva) +"ctR" = ( +/obj/structure/cable{ + d1 = 1; + d2 = 4; + icon_state = "1-4" + }, +/obj/machinery/atmospherics/unary/vent_pump/on{ + dir = 4 + }, +/obj/effect/floor_decal/industrial/warning{ + dir = 8 + }, +/turf/simulated/floor/tiled, +/area/ai_monitored/storage/emergency/eva) +"ctS" = ( +/obj/effect/floor_decal/industrial/warning{ + dir = 4 + }, +/obj/machinery/power/apc{ + dir = 4; + name = "east bump"; + pixel_x = 24 + }, +/obj/machinery/light_switch{ + dir = 2; + name = "light switch "; + pixel_x = 36; + pixel_y = 0 + }, +/obj/structure/cable{ + d2 = 8; + icon_state = "0-8" + }, +/obj/structure/disposalpipe/segment, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 9; + pixel_y = 0 + }, +/turf/simulated/floor/tiled, +/area/ai_monitored/storage/emergency/eva) +"ctT" = ( +/obj/structure/reagent_dispensers/watertank, +/obj/structure/catwalk, +/turf/simulated/floor/plating, +/area/maintenance/bar) +"ctU" = ( +/obj/machinery/door/firedoor/border_only, +/obj/effect/wingrille_spawn/reinforced, +/turf/simulated/floor/plating, +/area/hallway/primary/seconddeck/apcenter) +"ctV" = ( +/obj/structure/flora/ausbushes/grassybush, +/turf/simulated/floor/grass, +/area/hallway/primary/seconddeck/apcenter) +"ctW" = ( +/obj/structure/flora/ausbushes/sparsegrass, +/obj/structure/flora/ausbushes/ywflowers, +/turf/simulated/floor/grass, +/area/hallway/primary/seconddeck/apcenter) +"ctX" = ( +/obj/effect/floor_decal/borderfloor{ + dir = 8 + }, +/obj/effect/floor_decal/corner/green/border{ + dir = 8 + }, +/obj/effect/floor_decal/borderfloor/corner2{ + dir = 8 + }, +/obj/effect/floor_decal/corner/green/bordercorner2{ + dir = 8 + }, +/turf/simulated/floor/tiled, +/area/hallway/primary/seconddeck/apcenter) +"ctY" = ( +/obj/structure/disposalpipe/segment, +/obj/effect/floor_decal/borderfloor{ + dir = 4 + }, +/obj/effect/floor_decal/corner/brown/border{ + dir = 4 + }, +/obj/effect/floor_decal/borderfloor/corner2{ + dir = 6 + }, +/obj/effect/floor_decal/corner/brown/bordercorner2{ + dir = 6 + }, +/turf/simulated/floor/tiled, +/area/hallway/primary/seconddeck/apcenter) +"ctZ" = ( +/obj/machinery/atmospherics/valve/digital/open, +/obj/effect/decal/cleanable/dirt, +/obj/machinery/portable_atmospherics/powered/pump/filled, +/turf/simulated/floor/plating, +/area/maintenance/central) +"cua" = ( +/obj/machinery/atmospherics/valve/digital/open, +/obj/effect/decal/cleanable/dirt, +/obj/structure/cable/green{ + d1 = 1; + d2 = 4; + icon_state = "1-4" + }, +/turf/simulated/floor/plating, +/area/maintenance/central) +"cub" = ( +/obj/machinery/door/firedoor/border_only, +/obj/machinery/door/airlock/maintenance{ + name = "Central Maintenance Access"; + req_one_access = list(12,19) + }, +/obj/structure/cable/green{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/turf/simulated/floor/plating, +/area/hallway/primary/seconddeck/stairwell) +"cuc" = ( +/obj/structure/cable/green{ + d1 = 2; + d2 = 8; + icon_state = "2-8" + }, +/obj/effect/floor_decal/steeldecal/steel_decals4{ + dir = 1 + }, +/obj/effect/floor_decal/steeldecal/steel_decals4{ + dir = 6 + }, +/turf/simulated/floor/tiled, +/area/hallway/primary/seconddeck/stairwell) +"cud" = ( +/obj/machinery/atmospherics/unary/vent_pump/on, +/turf/simulated/floor/tiled, +/area/hallway/primary/seconddeck/stairwell) +"cue" = ( +/turf/simulated/floor/tiled, +/area/hallway/primary/seconddeck/stairwell) +"cuf" = ( +/obj/machinery/door/firedoor/glass, +/turf/simulated/floor/tiled, +/area/hallway/primary/seconddeck/stairwell) +"cug" = ( +/obj/machinery/atmospherics/unary/vent_scrubber/on, +/turf/simulated/floor/tiled, +/area/hallway/primary/seconddeck/apcenter) +"cuh" = ( +/turf/simulated/floor/tiled/monotile, +/area/hallway/primary/seconddeck/apcenter) +"cui" = ( +/obj/effect/floor_decal/industrial/outline/yellow, +/obj/machinery/camera/network/second_deck{ + c_tag = "Second Deck - Center Elevator Access"; + dir = 8 + }, +/turf/simulated/floor/tiled, +/area/hallway/primary/seconddeck/apcenter) +"cuj" = ( +/obj/structure/cable/green{ + d2 = 2; + icon_state = "0-2" + }, +/obj/effect/wingrille_spawn/reinforced/polarized{ + id = "hop_office" + }, +/obj/machinery/door/firedoor/border_only, +/turf/simulated/floor/plating, +/area/crew_quarters/heads/sc/hop) +"cuk" = ( +/obj/machinery/computer/card, +/obj/effect/floor_decal/borderfloor{ + dir = 8 + }, +/obj/effect/floor_decal/corner/blue/border{ + dir = 8 + }, +/turf/simulated/floor/tiled, +/area/crew_quarters/heads/sc/hop) +"cul" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/structure/cable/green{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/obj/machinery/hologram/holopad, +/obj/effect/floor_decal/industrial/outline/grey, +/turf/simulated/floor/tiled, +/area/crew_quarters/heads/sc/hop) +"cum" = ( +/obj/effect/floor_decal/borderfloor{ + dir = 4 + }, +/obj/effect/floor_decal/corner/blue/border{ + dir = 4 + }, +/turf/simulated/floor/tiled, +/area/crew_quarters/heads/sc/hop) +"cun" = ( +/obj/structure/table/reinforced, +/obj/item/weapon/clipboard, +/obj/item/weapon/stamp/hop, +/turf/simulated/floor/carpet, +/area/crew_quarters/heads/sc/hop) +"cuo" = ( +/obj/structure/table/reinforced, +/obj/item/weapon/paper_bin{ + pixel_x = -3; + pixel_y = 7 + }, +/obj/item/weapon/folder/blue, +/obj/item/weapon/folder/red, +/obj/item/weapon/pen, +/obj/item/weapon/pen/multi, +/obj/machinery/firealarm{ + dir = 4; + pixel_x = 24 + }, +/obj/machinery/light{ + dir = 4; + icon_state = "tube1" + }, +/turf/simulated/floor/carpet, +/area/crew_quarters/heads/sc/hop) +"cup" = ( +/obj/structure/disposalpipe/segment, +/obj/effect/floor_decal/borderfloor{ + dir = 8 + }, +/obj/effect/floor_decal/corner/paleblue/border{ + dir = 8 + }, +/obj/effect/floor_decal/borderfloor/corner2{ + dir = 8 + }, +/obj/effect/floor_decal/corner/paleblue/bordercorner2{ + dir = 8 + }, +/turf/simulated/floor/tiled, +/area/hallway/primary/seconddeck/ascenter) +"cuq" = ( +/obj/effect/floor_decal/borderfloor{ + dir = 4 + }, +/obj/effect/floor_decal/corner/green/border{ + dir = 4 + }, +/obj/effect/floor_decal/borderfloor/corner2{ + dir = 6 + }, +/obj/effect/floor_decal/corner/green/bordercorner2{ + dir = 6 + }, +/turf/simulated/floor/tiled, +/area/hallway/primary/seconddeck/ascenter) +"cur" = ( +/obj/structure/table/woodentable, +/obj/item/weapon/reagent_containers/glass/bucket, +/obj/effect/floor_decal/spline/plain{ + dir = 8 + }, +/turf/simulated/floor/tiled/hydro, +/area/hallway/primary/seconddeck/ascenter) +"cus" = ( +/obj/machinery/smartfridge/drying_rack, +/turf/simulated/floor/tiled/hydro, +/area/hallway/primary/seconddeck/ascenter) +"cut" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/structure/cable{ + d1 = 1; + d2 = 2; + icon_state = "1-2"; + pixel_y = 0 + }, +/obj/machinery/alarm{ + dir = 4; + pixel_x = -22; + pixel_y = 0 + }, +/turf/simulated/floor/plating, +/area/maintenance/medbay) +"cuu" = ( +/turf/simulated/wall/r_wall, +/area/medical/medbay_emt_bay) +"cuv" = ( +/obj/machinery/door/airlock/multi_tile/glass{ + id_tag = null; + name = "EMT Bay"; + req_access = list(5) + }, +/obj/machinery/door/firedoor/border_only, +/turf/simulated/floor/tiled/steel_grid, +/area/medical/medbay_emt_bay) +"cuw" = ( +/obj/machinery/door/firedoor/border_only, +/turf/simulated/floor/tiled/steel_grid, +/area/medical/medbay_emt_bay) +"cux" = ( +/turf/simulated/wall/r_wall, +/area/medical/exam_room) +"cuy" = ( +/turf/simulated/wall/r_wall, +/area/medical/reception) +"cuz" = ( +/turf/simulated/wall, +/area/medical/reception) +"cuA" = ( +/obj/machinery/door/firedoor/border_only, +/obj/machinery/door/airlock/maintenance{ + name = "Medbay Maintenance Access"; + req_access = list(5) + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/turf/simulated/floor/plating, +/area/medical/reception) +"cuB" = ( +/obj/structure/sign/nosmoking_1, +/turf/simulated/wall/r_wall, +/area/medical/reception) +"cuC" = ( +/turf/simulated/wall/r_wall, +/area/medical/foyer) +"cuD" = ( +/obj/machinery/door/firedoor/glass, +/obj/structure/disposalpipe/segment, +/turf/simulated/floor/tiled/white, +/area/medical/foyer) +"cuE" = ( +/obj/machinery/door/firedoor/border_only, +/obj/effect/wingrille_spawn/reinforced, +/turf/simulated/floor/plating, +/area/medical/foyer) +"cuF" = ( +/obj/machinery/door/firedoor/glass, +/turf/simulated/floor/tiled/white, +/area/medical/foyer) +"cuG" = ( +/turf/simulated/wall/r_wall, +/area/medical/chemistry) +"cuH" = ( +/turf/simulated/wall/r_wall, +/area/medical/medbay_primary_storage) +"cuI" = ( +/turf/simulated/wall/r_wall, +/area/medical/biostorage) +"cuJ" = ( +/obj/machinery/atmospherics/pipe/manifold/hidden/supply{ + dir = 8 + }, +/obj/machinery/ai_status_display{ + pixel_x = -32; + pixel_y = 0 + }, +/obj/structure/cable/green{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/obj/effect/floor_decal/borderfloorwhite{ + dir = 8 + }, +/obj/effect/floor_decal/corner/paleblue/border{ + dir = 8 + }, +/turf/simulated/floor/tiled/white, +/area/medical/medbay2) +"cuK" = ( +/obj/machinery/atmospherics/unary/vent_pump/on{ + dir = 8 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/obj/structure/disposalpipe/segment, +/obj/effect/floor_decal/borderfloorwhite{ + dir = 4 + }, +/obj/effect/floor_decal/corner/paleblue/border{ + dir = 4 + }, +/turf/simulated/floor/tiled/white, +/area/medical/medbay2) +"cuL" = ( +/obj/machinery/status_display, +/turf/simulated/wall, +/area/medical/genetics) +"cuM" = ( +/obj/effect/landmark{ + name = "blobstart" + }, +/turf/simulated/floor/plating, +/area/medical/genetics) +"cuN" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/yellow, +/obj/effect/floor_decal/borderfloorwhite{ + dir = 8 + }, +/obj/effect/floor_decal/corner/lime/border{ + dir = 8 + }, +/turf/simulated/floor/tiled/white, +/area/medical/virology) +"cuO" = ( +/obj/machinery/computer/diseasesplicer, +/obj/effect/floor_decal/borderfloorwhite{ + dir = 4 + }, +/obj/effect/floor_decal/corner/lime/border{ + dir = 4 + }, +/turf/simulated/floor/tiled/white, +/area/medical/virology) +"cuP" = ( +/obj/machinery/power/generator{ + anchored = 1; + dir = 2 + }, +/obj/structure/cable/yellow{ + d2 = 4; + icon_state = "0-4" + }, +/obj/effect/floor_decal/industrial/outline/yellow, +/turf/simulated/floor, +/area/engineering/engine_room) +"cuQ" = ( +/obj/effect/floor_decal/industrial/warning{ + icon_state = "warning"; + dir = 8 + }, +/obj/structure/cable/yellow{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/turf/simulated/floor, +/area/engineering/engine_room) +"cuR" = ( +/obj/effect/floor_decal/industrial/warning{ + icon_state = "warning"; + dir = 4 + }, +/obj/structure/cable/yellow{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/turf/simulated/floor, +/area/engineering/engine_room) +"cuS" = ( +/obj/machinery/power/generator{ + anchored = 1; + dir = 2 + }, +/obj/structure/cable/yellow{ + d2 = 4; + icon_state = "0-4" + }, +/obj/structure/cable/yellow{ + d2 = 8; + icon_state = "0-8" + }, +/obj/effect/floor_decal/industrial/outline/yellow, +/turf/simulated/floor, +/area/engineering/engine_room) +"cuT" = ( +/obj/machinery/atmospherics/pipe/simple/visible/green, +/obj/structure/cable/yellow{ + d1 = 1; + d2 = 8; + icon_state = "1-8" + }, +/turf/simulated/floor, +/area/engineering/engine_room) +"cuU" = ( +/obj/effect/floor_decal/industrial/warning/corner, +/obj/machinery/light{ + dir = 4 + }, +/turf/simulated/floor, +/area/engineering/engine_room) +"cuV" = ( +/obj/structure/cable{ + d1 = 1; + d2 = 2; + icon_state = "1-2"; + pixel_y = 0 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/structure/disposalpipe/segment, +/turf/simulated/floor/plating, +/area/maintenance/apmaint) +"cuW" = ( +/obj/structure/reagent_dispensers/fueltank, +/turf/simulated/floor/plating, +/area/construction/seconddeck/construction1) +"cuX" = ( +/turf/simulated/floor, +/area/maintenance/apmaint) +"cuY" = ( +/obj/structure/cable{ + d1 = 1; + d2 = 2; + icon_state = "1-2"; + pixel_y = 0 + }, +/turf/simulated/floor/tiled, +/area/construction/seconddeck/construction1) +"cuZ" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, +/obj/machinery/alarm{ + dir = 1; + icon_state = "alarm0"; + pixel_y = -22 + }, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/structure/catwalk, +/obj/structure/disposalpipe/segment, +/turf/simulated/floor/plating, +/area/maintenance/apmaint) +"cva" = ( +/obj/machinery/atmospherics/pipe/tank/air{ + dir = 4 + }, +/turf/simulated/floor/plating, +/area/maintenance/apmaint) +"cvb" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/cyan{ + dir = 10; + icon_state = "intact" + }, +/obj/effect/floor_decal/industrial/warning{ + icon_state = "warning"; + dir = 4 + }, +/turf/simulated/floor/plating, +/area/maintenance/apmaint) +"cvc" = ( +/obj/machinery/atmospherics/valve/digital/open, +/turf/simulated/floor/plating, +/area/maintenance/apmaint) +"cvd" = ( +/obj/machinery/disposal/deliveryChute, +/obj/structure/disposalpipe/trunk{ + dir = 1 + }, +/turf/simulated/floor/plating, +/area/quartermaster/delivery) +"cve" = ( +/obj/machinery/camera/network/research{ + c_tag = "SCI - Workshop"; + dir = 1 + }, +/obj/effect/floor_decal/borderfloorblack, +/obj/effect/floor_decal/corner/green/border, +/turf/simulated/floor/tiled/dark, +/area/rnd/workshop) +"cvf" = ( +/obj/structure/catwalk, +/obj/machinery/light/small{ + dir = 1 + }, +/turf/simulated/floor/plating, +/area/maintenance/apmaint) +"cvg" = ( +/obj/machinery/door/blast/regular{ + density = 0; + dir = 1; + icon_state = "pdoor0"; + id = "crglockdown"; + name = "Cargo Lockdown"; + opacity = 0 + }, +/obj/effect/floor_decal/industrial/warning{ + dir = 1 + }, +/turf/simulated/floor/plating, +/area/maintenance/apmaint) +"cvh" = ( +/obj/structure/bed/chair, +/obj/effect/floor_decal/borderfloor{ + dir = 9 + }, +/obj/effect/floor_decal/corner/brown/border{ + dir = 9 + }, +/obj/item/device/radio/intercom{ + dir = 1; + name = "Station Intercom (General)"; + pixel_y = 21 + }, +/turf/simulated/floor/tiled, +/area/quartermaster/foyer) +"cvi" = ( +/obj/structure/bed/chair, +/obj/machinery/alarm{ + pixel_y = 22 + }, +/obj/effect/floor_decal/borderfloor/corner{ + dir = 1 + }, +/obj/effect/floor_decal/corner/brown/bordercorner{ + dir = 1 + }, +/turf/simulated/floor/tiled, +/area/quartermaster/foyer) +"cvj" = ( +/obj/effect/floor_decal/steeldecal/steel_decals4{ + dir = 9 + }, +/obj/effect/floor_decal/steeldecal/steel_decals4{ + dir = 4 + }, +/turf/simulated/floor/tiled, +/area/quartermaster/foyer) +"cvk" = ( +/obj/machinery/camera/network/cargo{ + c_tag = "CRG - Cargo Foyer"; + dir = 2; + name = "security camera" + }, +/turf/simulated/floor/tiled, +/area/quartermaster/foyer) +"cvl" = ( +/obj/structure/bed/chair, +/obj/machinery/power/apc{ + dir = 1; + name = "north bump"; + pixel_x = 0; + pixel_y = 24 + }, +/obj/structure/cable/green{ + d2 = 2; + icon_state = "0-2" + }, +/obj/machinery/light_switch{ + pixel_x = 11; + pixel_y = 24 + }, +/obj/effect/floor_decal/borderfloor/corner{ + dir = 4 + }, +/obj/effect/floor_decal/corner/brown/bordercorner{ + dir = 4 + }, +/turf/simulated/floor/tiled, +/area/quartermaster/foyer) +"cvm" = ( +/obj/structure/bed/chair, +/obj/effect/floor_decal/borderfloor{ + dir = 5 + }, +/obj/effect/floor_decal/corner/brown/border{ + dir = 5 + }, +/obj/machinery/atm{ + pixel_y = 30 + }, +/turf/simulated/floor/tiled, +/area/quartermaster/foyer) +"cvn" = ( +/obj/machinery/door/firedoor/border_only, +/obj/effect/wingrille_spawn/reinforced/polarized{ + id = "quart_tint" + }, +/obj/machinery/ai_status_display{ + layer = 4 + }, +/turf/simulated/floor/plating, +/area/quartermaster/qm) +"cvo" = ( +/obj/structure/filingcabinet, +/obj/effect/floor_decal/borderfloor{ + dir = 9 + }, +/obj/effect/floor_decal/corner/brown/border{ + dir = 9 + }, +/turf/simulated/floor/tiled, +/area/quartermaster/qm) +"cvp" = ( +/obj/machinery/computer/supplycomp/control, +/turf/simulated/floor/tiled, +/area/quartermaster/qm) +"cvq" = ( +/obj/machinery/computer/security/mining, +/obj/effect/floor_decal/borderfloor{ + dir = 1 + }, +/obj/effect/floor_decal/corner/brown/border{ + dir = 1 + }, +/turf/simulated/floor/tiled, +/area/quartermaster/qm) +"cvr" = ( +/obj/structure/table/standard, +/obj/item/weapon/cartridge/quartermaster{ + pixel_x = 6; + pixel_y = 5 + }, +/obj/item/weapon/cartridge/quartermaster, +/obj/item/weapon/cartridge/quartermaster{ + pixel_x = -4; + pixel_y = 7 + }, +/obj/machinery/requests_console{ + department = "Cargo Bay"; + departmentType = 2; + pixel_x = 0; + pixel_y = 28 + }, +/obj/machinery/newscaster{ + pixel_x = 30; + pixel_y = 0 + }, +/obj/effect/floor_decal/borderfloor{ + dir = 5 + }, +/obj/effect/floor_decal/corner/brown/border{ + dir = 5 + }, +/turf/simulated/floor/tiled, +/area/quartermaster/qm) +"cvs" = ( +/obj/structure/table/rack, +/obj/item/device/suit_cooling_unit, +/obj/item/device/suit_cooling_unit, +/obj/machinery/light{ + dir = 8 + }, +/turf/simulated/floor/tiled/techmaint, +/area/ai_monitored/storage/emergency/eva) +"cvt" = ( +/obj/effect/floor_decal/industrial/warning{ + dir = 10 + }, +/turf/simulated/floor/tiled, +/area/ai_monitored/storage/emergency/eva) +"cvu" = ( +/obj/effect/floor_decal/industrial/warning{ + dir = 6 + }, +/obj/structure/disposalpipe/segment, +/turf/simulated/floor/tiled, +/area/ai_monitored/storage/emergency/eva) +"cvv" = ( +/obj/machinery/suit_storage_unit/standard_unit, +/turf/simulated/floor/tiled/techmaint, +/area/ai_monitored/storage/emergency/eva) +"cvw" = ( +/obj/structure/reagent_dispensers/fueltank, +/obj/structure/catwalk, +/turf/simulated/floor/plating, +/area/maintenance/bar) +"cvx" = ( +/obj/machinery/portable_atmospherics/hydroponics/soil, +/obj/machinery/camera/network/second_deck{ + c_tag = "Second Deck - Center Six"; + dir = 4 + }, +/turf/simulated/floor/grass, +/area/hallway/primary/seconddeck/apcenter) +"cvy" = ( +/obj/structure/flora/ausbushes/sparsegrass, +/turf/simulated/floor/grass, +/area/hallway/primary/seconddeck/apcenter) +"cvz" = ( +/obj/effect/floor_decal/borderfloor{ + dir = 8 + }, +/obj/effect/floor_decal/corner/green/border{ + dir = 8 + }, +/turf/simulated/floor/tiled, +/area/hallway/primary/seconddeck/apcenter) +"cvA" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/turf/simulated/floor/tiled/monotile, +/area/hallway/primary/seconddeck/apcenter) +"cvB" = ( +/obj/structure/disposalpipe/segment, +/obj/machinery/ai_status_display{ + pixel_x = 32 + }, +/obj/effect/floor_decal/borderfloor{ + dir = 4 + }, +/obj/effect/floor_decal/corner/brown/border{ + dir = 4 + }, +/turf/simulated/floor/tiled, +/area/hallway/primary/seconddeck/apcenter) +"cvC" = ( +/obj/structure/table/rack{ + dir = 8; + layer = 2.6 + }, +/obj/random/maintenance/research, +/obj/random/maintenance/research, +/obj/random/maintenance/clean, +/obj/random/tool/powermaint, +/turf/simulated/floor/plating, +/area/maintenance/research) +"cvD" = ( +/obj/machinery/atmospherics/pipe/simple/visible/universal, +/obj/effect/decal/cleanable/dirt, +/obj/structure/catwalk, +/turf/simulated/floor/plating, +/area/maintenance/central) +"cvE" = ( +/obj/structure/cable/green, +/obj/machinery/power/apc{ + dir = 8; + name = "west bump"; + pixel_x = -24 + }, +/obj/machinery/light_switch{ + pixel_x = -36 + }, +/obj/effect/floor_decal/industrial/warning, +/turf/simulated/floor/tiled, +/area/hallway/primary/seconddeck/stairwell) +"cvF" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 5 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 6 + }, +/obj/machinery/hologram/holopad, +/obj/effect/floor_decal/industrial/outline/grey, +/obj/effect/floor_decal/industrial/warning/corner{ + icon_state = "warningcorner"; + dir = 8 + }, +/obj/effect/floor_decal/industrial/warning/corner, +/turf/simulated/floor/tiled, +/area/hallway/primary/seconddeck/stairwell) +"cvG" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/obj/effect/floor_decal/industrial/warning, +/turf/simulated/floor/tiled, +/area/hallway/primary/seconddeck/stairwell) +"cvH" = ( +/obj/machinery/atmospherics/pipe/manifold/hidden/yellow{ + dir = 1 + }, +/obj/machinery/hologram/holopad, +/obj/effect/floor_decal/industrial/outline/grey, +/obj/structure/cable/green{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/turf/simulated/floor/tiled/hydro, +/area/rnd/xenobiology/xenoflora) +"cvI" = ( +/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/turf/simulated/floor/tiled, +/area/hallway/primary/seconddeck/apcenter) +"cvJ" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 10 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 10 + }, +/obj/machinery/hologram/holopad, +/obj/effect/floor_decal/industrial/outline/grey, +/turf/simulated/floor/tiled, +/area/hallway/primary/seconddeck/apcenter) +"cvK" = ( +/obj/effect/floor_decal/industrial/outline/yellow, +/turf/simulated/floor/tiled, +/area/hallway/primary/seconddeck/apcenter) +"cvL" = ( +/obj/structure/cable/green{ + d2 = 4; + icon_state = "0-4" + }, +/obj/structure/cable/green, +/obj/machinery/door/firedoor/glass, +/obj/effect/wingrille_spawn/reinforced/polarized{ + id = "hop_office" + }, +/turf/simulated/floor/plating, +/area/crew_quarters/heads/sc/hop) +"cvM" = ( +/obj/structure/closet/secure_closet/hop, +/obj/item/device/megaphone, +/obj/structure/cable/green{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/obj/machinery/light{ + dir = 8 + }, +/obj/effect/floor_decal/borderfloor{ + dir = 8 + }, +/obj/effect/floor_decal/corner/blue/border{ + dir = 8 + }, +/turf/simulated/floor/tiled, +/area/crew_quarters/heads/sc/hop) +"cvN" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/structure/cable/green{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/obj/structure/cable/green{ + d1 = 1; + d2 = 8; + icon_state = "1-8" + }, +/turf/simulated/floor/tiled, +/area/crew_quarters/heads/sc/hop) +"cvO" = ( +/obj/structure/bed/chair{ + dir = 1 + }, +/turf/simulated/floor/carpet, +/area/crew_quarters/heads/sc/hop) +"cvP" = ( +/obj/structure/dogbed, +/turf/simulated/floor/carpet, +/area/crew_quarters/heads/sc/hop) +"cvQ" = ( +/obj/machinery/status_display, +/turf/simulated/wall/r_wall, +/area/crew_quarters/heads/sc/hop) +"cvR" = ( +/obj/structure/disposalpipe/segment, +/obj/effect/floor_decal/borderfloor{ + dir = 8 + }, +/obj/effect/floor_decal/corner/paleblue/border{ + dir = 8 + }, +/turf/simulated/floor/tiled, +/area/hallway/primary/seconddeck/ascenter) +"cvS" = ( +/obj/effect/floor_decal/borderfloor{ + dir = 4 + }, +/obj/effect/floor_decal/corner/green/border{ + dir = 4 + }, +/turf/simulated/floor/tiled, +/area/hallway/primary/seconddeck/ascenter) +"cvT" = ( +/obj/structure/flora/ausbushes/fullgrass, +/turf/simulated/floor/grass, +/area/hallway/primary/seconddeck/ascenter) +"cvU" = ( +/obj/machinery/portable_atmospherics/hydroponics/soil, +/obj/machinery/camera/network/second_deck{ + c_tag = "Second Deck - Center Three"; + dir = 8 + }, +/turf/simulated/floor/grass, +/area/hallway/primary/seconddeck/ascenter) +"cvV" = ( +/obj/machinery/mech_recharger, +/obj/machinery/firealarm{ + pixel_y = 24 + }, +/obj/item/device/radio/intercom/department/medbay{ + dir = 4; + pixel_x = -21 + }, +/turf/simulated/floor/tiled/steel_grid, +/area/medical/medbay_emt_bay) +"cvW" = ( +/obj/effect/floor_decal/industrial/warning{ + icon_state = "warning"; + dir = 8 + }, +/obj/machinery/ai_status_display{ + pixel_y = 32 + }, +/turf/simulated/floor/tiled/dark, +/area/medical/medbay_emt_bay) +"cvX" = ( +/obj/effect/floor_decal/borderfloorwhite{ + dir = 8 + }, +/obj/effect/floor_decal/corner/pink/border{ + dir = 8 + }, +/obj/effect/floor_decal/borderfloorwhite/corner2{ + dir = 8 + }, +/obj/effect/floor_decal/corner/pink/bordercorner2{ + dir = 8 + }, +/turf/simulated/floor/tiled/white, +/area/medical/medbay_emt_bay) +"cvY" = ( +/obj/effect/floor_decal/borderfloorwhite{ + dir = 4 + }, +/obj/effect/floor_decal/corner/pink/border{ + dir = 4 + }, +/obj/effect/floor_decal/borderfloorwhite/corner2{ + dir = 6 + }, +/obj/effect/floor_decal/corner/pink/bordercorner2{ + dir = 6 + }, +/turf/simulated/floor/tiled/white, +/area/medical/medbay_emt_bay) +"cvZ" = ( +/obj/structure/window/reinforced{ + dir = 4 + }, +/obj/structure/window/reinforced{ + dir = 1 + }, +/obj/machinery/door/window/westright{ + name = "EVA Suit Storage"; + req_access = list(5) + }, +/obj/item/device/suit_cooling_unit, +/obj/structure/table/rack{ + dir = 8; + layer = 2.6 + }, +/turf/simulated/floor/tiled/dark, +/area/medical/medbay_emt_bay) +"cwa" = ( +/obj/structure/sign/nosmoking_1, +/turf/simulated/wall/r_wall, +/area/medical/medbay_emt_bay) +"cwb" = ( +/obj/structure/table/glass, +/obj/machinery/computer/med_data/laptop, +/obj/machinery/ai_status_display{ + pixel_y = 32 + }, +/obj/machinery/light{ + dir = 1 + }, +/obj/effect/floor_decal/borderfloorwhite{ + dir = 9 + }, +/obj/effect/floor_decal/corner/pink/border{ + dir = 9 + }, +/turf/simulated/floor/tiled/white, +/area/medical/exam_room) +"cwc" = ( +/obj/structure/table/glass, +/obj/item/weapon/paper_bin, +/obj/item/weapon/folder/white, +/obj/item/weapon/pen, +/obj/machinery/alarm{ + pixel_y = 23 + }, +/obj/effect/floor_decal/borderfloorwhite{ + dir = 1 + }, +/obj/effect/floor_decal/corner/pink/border{ + dir = 1 + }, +/turf/simulated/floor/tiled/white, +/area/medical/exam_room) +"cwd" = ( +/obj/structure/table/glass, +/obj/item/weapon/cane, +/obj/item/weapon/cane{ + pixel_x = -3; + pixel_y = 2 + }, +/obj/item/weapon/storage/box/rxglasses, +/obj/random/medical, +/obj/random/firstaid, +/obj/item/device/radio/intercom/department/medbay{ + dir = 8; + pixel_x = 21 + }, +/obj/machinery/status_display{ + pixel_x = 0; + pixel_y = 32 + }, +/obj/effect/floor_decal/borderfloorwhite{ + dir = 6 + }, +/obj/effect/floor_decal/corner/pink/border{ + dir = 5 + }, +/turf/simulated/floor/tiled/white, +/area/medical/exam_room) +"cwe" = ( +/obj/machinery/vending/snack, +/obj/effect/floor_decal/corner/paleblue/diagonal{ + dir = 4 + }, +/obj/structure/extinguisher_cabinet{ + pixel_y = 30 + }, +/obj/machinery/computer/security/telescreen/entertainment{ + icon_state = "frame"; + pixel_x = -32; + pixel_y = 0 + }, +/turf/simulated/floor/tiled/white, +/area/medical/reception) +"cwf" = ( +/obj/effect/floor_decal/corner/paleblue/diagonal{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 5 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 5 + }, +/turf/simulated/floor/tiled/white, +/area/medical/reception) +"cwg" = ( +/obj/structure/bed/chair, +/obj/effect/floor_decal/corner/paleblue/diagonal{ + dir = 4 + }, +/obj/item/device/radio/intercom/department/medbay{ + dir = 2; + pixel_x = 0; + pixel_y = 21 + }, +/obj/effect/landmark/start{ + name = "Medical Doctor" + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/turf/simulated/floor/tiled/white, +/area/medical/reception) +"cwh" = ( +/obj/structure/bed/chair, +/obj/machinery/power/apc{ + dir = 1; + name = "north bump"; + pixel_x = 0; + pixel_y = 24 + }, +/obj/machinery/light_switch{ + pixel_x = 11; + pixel_y = 24 + }, +/obj/structure/cable/green{ + d2 = 4; + icon_state = "0-4" + }, +/obj/effect/floor_decal/corner/paleblue/diagonal{ + dir = 4 + }, +/obj/effect/landmark/start{ + name = "Medical Doctor" + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 10 + }, +/turf/simulated/floor/tiled/white, +/area/medical/reception) +"cwi" = ( +/obj/structure/noticeboard{ + pixel_y = 28 + }, +/obj/structure/cable/green{ + d1 = 2; + d2 = 8; + icon_state = "2-8" + }, +/obj/effect/floor_decal/corner/paleblue{ + dir = 8 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 10 + }, +/turf/simulated/floor/tiled/white, +/area/medical/reception) +"cwj" = ( +/obj/structure/filingcabinet/medical{ + desc = "A large cabinet with hard copy medical records."; + name = "Medical Records" + }, +/obj/machinery/ai_status_display{ + pixel_y = 32 + }, +/obj/effect/floor_decal/borderfloorwhite/corner{ + dir = 4 + }, +/obj/effect/floor_decal/corner/paleblue/bordercorner{ + dir = 4 + }, +/turf/simulated/floor/tiled/white, +/area/medical/reception) +"cwk" = ( +/obj/structure/table/reinforced, +/obj/structure/window/reinforced{ + dir = 4; + health = 1e+006 + }, +/obj/machinery/computer/med_data/laptop, +/obj/effect/floor_decal/borderfloorwhite{ + dir = 5 + }, +/obj/effect/floor_decal/corner/paleblue/border{ + dir = 5 + }, +/turf/simulated/floor/tiled/white, +/area/medical/reception) +"cwl" = ( +/obj/item/roller, +/obj/item/roller{ + pixel_y = 8 + }, +/obj/item/roller{ + pixel_y = 16 + }, +/obj/structure/table/glass, +/obj/machinery/alarm{ + pixel_y = 23 + }, +/obj/effect/floor_decal/borderfloorwhite{ + dir = 8 + }, +/obj/effect/floor_decal/corner/paleblue/border{ + dir = 8 + }, +/turf/simulated/floor/tiled/white, +/area/medical/foyer) +"cwm" = ( +/obj/structure/disposalpipe/segment, +/turf/simulated/floor/tiled/white, +/area/medical/foyer) +"cwn" = ( +/obj/machinery/atmospherics/unary/vent_pump/on, +/obj/machinery/light{ + dir = 1 + }, +/obj/structure/flora/pottedplant/orientaltree, +/turf/simulated/floor/tiled/white, +/area/medical/foyer) +"cwo" = ( +/turf/simulated/floor/tiled/white, +/area/medical/foyer) +"cwp" = ( +/obj/structure/bed/chair{ + dir = 8 + }, +/obj/machinery/power/apc{ + dir = 1; + name = "north bump"; + pixel_x = 0; + pixel_y = 24 + }, +/obj/structure/cable/green{ + d2 = 2; + icon_state = "0-2" + }, +/obj/effect/floor_decal/borderfloorwhite{ + dir = 4 + }, +/obj/effect/floor_decal/corner/paleblue/border{ + dir = 4 + }, +/turf/simulated/floor/tiled/white, +/area/medical/foyer) +"cwq" = ( +/obj/structure/sign/chemistry{ + icon_state = "chemistry2"; + pixel_y = 32 + }, +/obj/machinery/door/firedoor/border_only, +/obj/effect/wingrille_spawn/reinforced, +/obj/machinery/door/blast/shutters{ + density = 0; + dir = 8; + icon_state = "shutter0"; + id = "chemwindow"; + name = "Chemistry Window Shutters"; + opacity = 0 + }, +/turf/simulated/floor/plating, +/area/medical/chemistry) +"cwr" = ( +/obj/machinery/chemical_dispenser/full, +/obj/machinery/ai_status_display{ + pixel_y = 32 + }, +/obj/structure/table/reinforced, +/obj/effect/floor_decal/borderfloorwhite{ + dir = 9 + }, +/obj/effect/floor_decal/corner/beige/border{ + dir = 9 + }, +/turf/simulated/floor/tiled/white, +/area/medical/chemistry) +"cws" = ( +/obj/structure/table/reinforced, +/obj/item/weapon/reagent_containers/glass/beaker/large, +/obj/item/weapon/reagent_containers/dropper, +/obj/machinery/firealarm{ + pixel_y = 24 + }, +/obj/effect/floor_decal/borderfloorwhite{ + dir = 1 + }, +/obj/effect/floor_decal/corner/beige/border{ + dir = 1 + }, +/turf/simulated/floor/tiled/white, +/area/medical/chemistry) +"cwt" = ( +/obj/structure/table/reinforced, +/obj/item/device/mass_spectrometer/adv, +/obj/item/clothing/glasses/science, +/obj/item/clothing/glasses/science, +/obj/machinery/computer/security/telescreen/entertainment{ + icon_state = "frame"; + pixel_x = 0; + pixel_y = 32 + }, +/obj/machinery/light{ + dir = 1 + }, +/obj/effect/floor_decal/borderfloorwhite{ + dir = 1 + }, +/obj/effect/floor_decal/corner/beige/border{ + dir = 1 + }, +/turf/simulated/floor/tiled/white, +/area/medical/chemistry) +"cwu" = ( +/obj/structure/table/reinforced, +/obj/item/weapon/reagent_containers/glass/beaker/large, +/obj/item/weapon/reagent_containers/dropper, +/obj/structure/extinguisher_cabinet{ + pixel_y = 30 + }, +/obj/effect/floor_decal/borderfloorwhite{ + dir = 1 + }, +/obj/effect/floor_decal/corner/beige/border{ + dir = 1 + }, +/turf/simulated/floor/tiled/white, +/area/medical/chemistry) +"cwv" = ( +/obj/machinery/chemical_dispenser/full, +/obj/machinery/status_display{ + pixel_x = 0; + pixel_y = 32 + }, +/obj/structure/table/reinforced, +/obj/effect/floor_decal/borderfloorwhite{ + dir = 5 + }, +/obj/effect/floor_decal/corner/beige/border{ + dir = 5 + }, +/turf/simulated/floor/tiled/white, +/area/medical/chemistry) +"cww" = ( +/obj/machinery/door/firedoor/border_only, +/obj/effect/wingrille_spawn/reinforced, +/turf/simulated/floor/plating, +/area/medical/chemistry) +"cwx" = ( +/obj/structure/table/standard, +/obj/item/weapon/storage/firstaid/adv{ + pixel_x = 5; + pixel_y = 5 + }, +/obj/item/weapon/storage/firstaid/adv, +/obj/effect/floor_decal/borderfloorwhite{ + dir = 9 + }, +/obj/effect/floor_decal/corner/paleblue/border{ + dir = 9 + }, +/turf/simulated/floor/tiled/white, +/area/medical/medbay_primary_storage) +"cwy" = ( +/obj/structure/table/standard, +/obj/item/weapon/storage/firstaid/o2{ + pixel_x = 5; + pixel_y = 5 + }, +/obj/item/weapon/storage/firstaid/o2{ + pixel_x = 0; + pixel_y = 0 + }, +/obj/machinery/alarm{ + pixel_y = 23 + }, +/obj/effect/floor_decal/borderfloorwhite{ + dir = 1 + }, +/obj/effect/floor_decal/corner/paleblue/border{ + dir = 1 + }, +/turf/simulated/floor/tiled/white, +/area/medical/medbay_primary_storage) +"cwz" = ( +/obj/structure/table/standard, +/obj/item/weapon/storage/firstaid/toxin{ + pixel_x = 5; + pixel_y = 5 + }, +/obj/item/weapon/storage/firstaid/toxin{ + pixel_x = 0; + pixel_y = 0 + }, +/obj/effect/floor_decal/borderfloorwhite{ + dir = 5 + }, +/obj/effect/floor_decal/corner/paleblue/border{ + dir = 5 + }, +/turf/simulated/floor/tiled/white, +/area/medical/medbay_primary_storage) +"cwA" = ( +/turf/simulated/wall, +/area/medical/medbay_primary_storage) +"cwB" = ( +/obj/structure/bedsheetbin, +/obj/structure/table/steel, +/obj/random/firstaid, +/obj/random/firstaid, +/turf/simulated/floor/tiled/dark, +/area/medical/biostorage) +"cwC" = ( +/obj/item/weapon/storage/box/cdeathalarm_kit, +/obj/item/bodybag/cryobag{ + pixel_x = -3 + }, +/obj/item/bodybag/cryobag{ + pixel_x = -3 + }, +/obj/structure/table/steel, +/obj/machinery/alarm{ + pixel_y = 23 + }, +/turf/simulated/floor/tiled/dark, +/area/medical/biostorage) +"cwD" = ( +/obj/item/weapon/cane, +/obj/item/weapon/cane{ + pixel_x = -3; + pixel_y = 2 + }, +/obj/item/weapon/cane{ + pixel_x = -6; + pixel_y = 4 + }, +/obj/structure/table/steel, +/obj/item/weapon/storage/box/gloves{ + pixel_x = 4; + pixel_y = 4 + }, +/obj/item/weapon/storage/box/rxglasses, +/turf/simulated/floor/tiled/dark, +/area/medical/biostorage) +"cwE" = ( +/turf/simulated/wall, +/area/medical/biostorage) +"cwF" = ( +/obj/item/device/radio/intercom/department/medbay{ + dir = 4; + pixel_x = -21 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/structure/cable/green{ + d1 = 1; + d2 = 4; + icon_state = "1-4" + }, +/obj/effect/floor_decal/borderfloorwhite{ + dir = 8 + }, +/obj/effect/floor_decal/corner/paleblue/border{ + dir = 8 + }, +/turf/simulated/floor/tiled/white, +/area/medical/medbay2) +"cwG" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/obj/machinery/alarm{ + dir = 8; + icon_state = "alarm0"; + pixel_x = 22 + }, +/obj/structure/disposalpipe/segment, +/obj/structure/cable/green{ + d1 = 2; + d2 = 8; + icon_state = "2-8" + }, +/obj/effect/floor_decal/borderfloorwhite{ + dir = 4 + }, +/obj/effect/floor_decal/corner/paleblue/border{ + dir = 4 + }, +/turf/simulated/floor/tiled/white, +/area/medical/medbay2) +"cwH" = ( +/obj/item/weapon/storage/toolbox/mechanical, +/turf/simulated/floor/plating, +/area/medical/genetics) +"cwI" = ( +/obj/item/frame/light, +/turf/simulated/floor/plating, +/area/medical/genetics) +"cwJ" = ( +/obj/random/tech_supply, +/turf/simulated/floor/plating, +/area/medical/genetics) +"cwK" = ( +/obj/random/medical/lite, +/turf/simulated/floor/tiled/white, +/area/medical/genetics) +"cwL" = ( +/turf/simulated/floor/tiled/steel, +/area/medical/genetics) +"cwM" = ( +/obj/structure/closet/l3closet/virology, +/obj/item/clothing/mask/gas, +/obj/machinery/atmospherics/pipe/simple/hidden/yellow, +/obj/effect/floor_decal/borderfloorwhite{ + dir = 10 + }, +/obj/effect/floor_decal/corner/lime/border{ + dir = 10 + }, +/turf/simulated/floor/tiled/white, +/area/medical/virology) +"cwN" = ( +/obj/effect/floor_decal/borderfloorwhite, +/obj/effect/floor_decal/corner/lime/border, +/turf/simulated/floor/tiled/white, +/area/medical/virology) +"cwO" = ( +/obj/machinery/disease2/diseaseanalyser, +/obj/effect/floor_decal/borderfloorwhite{ + dir = 6 + }, +/obj/effect/floor_decal/corner/lime/border{ + dir = 6 + }, +/turf/simulated/floor/tiled/white, +/area/medical/virology) +"cwP" = ( +/obj/structure/table/glass, +/obj/item/roller, +/obj/machinery/light{ + dir = 4; + icon_state = "tube1"; + pixel_x = 0 + }, +/obj/machinery/alarm{ + dir = 1; + icon_state = "alarm0"; + pixel_y = -22 + }, +/turf/simulated/floor/tiled/white, +/area/medical/virology) +"cwQ" = ( +/obj/machinery/door/firedoor/border_only, +/obj/effect/wingrille_spawn/reinforced, +/obj/machinery/door/blast/regular{ + density = 0; + icon_state = "pdoor0"; + id = "EngineRadiatorViewport2"; + name = "Engine Radiator Viewport Shutter"; + opacity = 0 + }, +/obj/machinery/atmospherics/pipe/simple/visible/green{ + dir = 10; + icon_state = "intact" + }, +/turf/simulated/floor, +/area/engineering/engine_room) +"cwR" = ( +/obj/machinery/atmospherics/pipe/simple/visible/yellow{ + icon_state = "intact"; + dir = 5 + }, +/obj/effect/floor_decal/industrial/warning{ + icon_state = "warning"; + dir = 4 + }, +/turf/simulated/floor, +/area/engineering/engine_room) +"cwS" = ( +/obj/machinery/atmospherics/binary/circulator{ + anchored = 1; + dir = 8 + }, +/obj/effect/floor_decal/industrial/outline/yellow, +/turf/simulated/floor, +/area/engineering/engine_room) +"cwT" = ( +/obj/machinery/atmospherics/pipe/simple/visible/green{ + dir = 10; + icon_state = "intact" + }, +/obj/effect/floor_decal/industrial/warning{ + icon_state = "warning"; + dir = 8 + }, +/turf/simulated/floor, +/area/engineering/engine_room) +"cwU" = ( +/obj/effect/floor_decal/industrial/warning{ + icon_state = "warning"; + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/visible/green{ + icon_state = "intact"; + dir = 6 + }, +/turf/simulated/floor, +/area/engineering/engine_room) +"cwV" = ( +/obj/machinery/atmospherics/pipe/simple/visible/green, +/obj/effect/floor_decal/industrial/warning/corner, +/turf/simulated/floor, +/area/engineering/engine_room) +"cwW" = ( +/obj/effect/floor_decal/industrial/warning{ + dir = 6 + }, +/turf/simulated/floor, +/area/engineering/engine_room) +"cwX" = ( +/obj/effect/floor_decal/industrial/outline/blue, +/obj/machinery/portable_atmospherics/canister/carbon_dioxide, +/turf/simulated/floor/plating, +/area/engineering/engine_room) +"cwY" = ( +/obj/effect/floor_decal/industrial/outline/blue, +/obj/machinery/portable_atmospherics/canister/phoron, +/turf/simulated/floor/plating, +/area/engineering/engine_room) +"cwZ" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 9; + pixel_y = 0 + }, +/obj/structure/cable{ + d1 = 1; + d2 = 8; + icon_state = "1-8" + }, +/obj/structure/cable{ + d1 = 1; + d2 = 2; + icon_state = "1-2"; + pixel_y = 0 + }, +/obj/structure/disposalpipe/segment{ + dir = 8; + icon_state = "pipe-c" + }, +/turf/simulated/floor/plating, +/area/maintenance/apmaint) +"cxa" = ( +/obj/structure/reagent_dispensers/watertank, +/turf/simulated/floor/plating, +/area/construction/seconddeck/construction1) +"cxb" = ( +/obj/random/maintenance/engineering, +/obj/random/maintenance/clean, +/obj/structure/disposalpipe/segment, +/turf/simulated/floor/tiled/steel, +/area/construction/seconddeck/construction1) +"cxc" = ( +/obj/structure/cable{ + d1 = 1; + d2 = 4; + icon_state = "1-4" + }, +/turf/simulated/floor/tiled, +/area/construction/seconddeck/construction1) +"cxd" = ( +/obj/machinery/power/apc{ + dir = 4; + name = "east bump"; + pixel_x = 24 + }, +/obj/structure/cable{ + d2 = 8; + icon_state = "0-8" + }, +/obj/random/maintenance/clean, +/obj/structure/disposalpipe/segment, +/turf/simulated/floor/tiled/steel, +/area/construction/seconddeck/construction1) +"cxe" = ( +/obj/machinery/atmospherics/pipe/manifold/hidden/cyan{ + dir = 4 + }, +/obj/effect/floor_decal/industrial/warning{ + icon_state = "warning"; + dir = 4 + }, +/obj/machinery/meter, +/turf/simulated/floor/plating, +/area/maintenance/apmaint) +"cxf" = ( +/obj/machinery/conveyor{ + dir = 1; + id = "packageSort1" + }, +/obj/machinery/ai_status_display{ + pixel_x = -32; + pixel_y = 0 + }, +/turf/simulated/floor/plating, +/area/quartermaster/delivery) +"cxg" = ( +/obj/effect/floor_decal/industrial/warning{ + dir = 9 + }, +/obj/machinery/alarm{ + pixel_y = 23 + }, +/obj/machinery/atmospherics/unary/vent_pump/on, +/turf/simulated/floor/tiled, +/area/quartermaster/delivery) +"cxh" = ( +/obj/effect/floor_decal/industrial/warning/corner{ + icon_state = "warningcorner"; + dir = 1 + }, +/turf/simulated/floor/tiled, +/area/quartermaster/delivery) +"cxi" = ( +/obj/machinery/status_display{ + layer = 4 + }, +/turf/simulated/wall, +/area/quartermaster/delivery) +"cxj" = ( +/obj/structure/table/reinforced, +/obj/machinery/door/window/westright{ + name = "Mailing Room"; + req_access = list(50) + }, +/obj/machinery/door/firedoor/glass, +/obj/item/weapon/folder/yellow, +/obj/item/weapon/pen{ + pixel_x = 4; + pixel_y = 4 + }, +/turf/simulated/floor/tiled, +/area/quartermaster/delivery) +"cxk" = ( +/obj/effect/floor_decal/borderfloor{ + dir = 8 + }, +/obj/effect/floor_decal/corner/brown/border{ + dir = 8 + }, +/turf/simulated/floor/tiled, +/area/quartermaster/foyer) +"cxl" = ( +/turf/simulated/floor/tiled, +/area/quartermaster/foyer) +"cxm" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 6 + }, +/turf/simulated/floor/tiled, +/area/quartermaster/foyer) +"cxn" = ( +/obj/structure/cable/green{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/obj/machinery/atmospherics/unary/vent_scrubber/on{ + dir = 8 + }, +/turf/simulated/floor/tiled, +/area/quartermaster/foyer) +"cxo" = ( +/obj/effect/floor_decal/borderfloor{ + dir = 4 + }, +/obj/effect/floor_decal/corner/brown/border{ + dir = 4 + }, +/turf/simulated/floor/tiled, +/area/quartermaster/foyer) +"cxp" = ( +/obj/machinery/door/firedoor/border_only, +/obj/effect/wingrille_spawn/reinforced/polarized{ + id = "quart_tint" + }, +/turf/simulated/floor/plating, +/area/quartermaster/qm) +"cxq" = ( +/obj/effect/floor_decal/borderfloor{ + dir = 8 + }, +/obj/effect/floor_decal/corner/brown/border{ + dir = 8 + }, +/turf/simulated/floor/tiled, +/area/quartermaster/qm) +"cxr" = ( +/turf/simulated/floor/tiled, +/area/quartermaster/qm) +"cxs" = ( +/obj/structure/bed/chair/office/dark, +/obj/effect/landmark/start{ + name = "Quartermaster" + }, +/obj/machinery/button/remote/blast_door{ + id = "crglockdown"; + name = "Cargo Lockdown"; + pixel_x = -24; + pixel_y = -26; + req_access = list() + }, +/turf/simulated/floor/tiled, +/area/quartermaster/qm) +"cxt" = ( +/obj/machinery/atmospherics/pipe/simple/visible/green{ + icon_state = "intact"; + dir = 6 + }, +/obj/effect/floor_decal/industrial/warning{ + icon_state = "warning"; + dir = 4 + }, +/turf/simulated/floor, +/area/engineering/engine_room) +"cxu" = ( +/obj/machinery/status_display, +/turf/simulated/wall, +/area/quartermaster/qm) +"cxv" = ( +/obj/structure/table/reinforced, +/obj/item/stack/cable_coil{ + pixel_x = 3; + pixel_y = -7 + }, +/obj/item/stack/cable_coil{ + pixel_x = 3; + pixel_y = -7 + }, +/obj/item/weapon/cell/high{ + charge = 100; + maxcharge = 15000 + }, +/obj/item/weapon/cell/high{ + charge = 100; + maxcharge = 15000 + }, +/obj/item/weapon/storage/toolbox/mechanical{ + pixel_x = -2; + pixel_y = -1 + }, +/obj/machinery/alarm{ + dir = 1; + pixel_y = -22 + }, +/obj/item/weapon/storage/briefcase/inflatable{ + pixel_x = 3; + pixel_y = 6 + }, +/obj/item/weapon/storage/briefcase/inflatable{ + pixel_y = 3 + }, +/obj/item/weapon/storage/briefcase/inflatable{ + pixel_x = -3 + }, +/turf/simulated/floor/tiled/techmaint, +/area/ai_monitored/storage/emergency/eva) +"cxw" = ( +/obj/structure/table/reinforced, +/obj/machinery/cell_charger, +/obj/item/weapon/tool/crowbar/red, +/obj/item/weapon/tool/crowbar/red, +/obj/item/weapon/tool/crowbar/red, +/obj/item/weapon/tool/crowbar/red, +/obj/item/device/flashlight, +/obj/item/device/flashlight, +/obj/item/device/radio/off, +/obj/item/device/radio/off, +/obj/item/device/radio/off, +/obj/item/device/radio/off, +/obj/machinery/camera/network/civilian{ + c_tag = "CIV - Emergency EVA"; + dir = 1 + }, +/obj/item/device/radio/intercom{ + name = "Station Intercom (General)"; + pixel_y = -21 + }, +/turf/simulated/floor/tiled/techmaint, +/area/ai_monitored/storage/emergency/eva) +"cxx" = ( +/obj/structure/disposalpipe/segment, +/turf/simulated/floor/tiled/techmaint, +/area/ai_monitored/storage/emergency/eva) +"cxy" = ( +/obj/structure/flora/ausbushes/genericbush, +/turf/simulated/floor/grass, +/area/hallway/primary/seconddeck/apcenter) +"cxz" = ( +/obj/machinery/atmospherics/unary/vent_pump/on{ + dir = 4 + }, +/obj/effect/floor_decal/borderfloor{ + dir = 8 + }, +/obj/effect/floor_decal/corner/green/border{ + dir = 8 + }, +/turf/simulated/floor/tiled, +/area/hallway/primary/seconddeck/apcenter) +"cxA" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 9; + pixel_y = 0 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/turf/simulated/floor/tiled/monotile, +/area/hallway/primary/seconddeck/apcenter) +"cxB" = ( +/obj/structure/disposalpipe/segment, +/obj/effect/floor_decal/borderfloor{ + dir = 4 + }, +/obj/effect/floor_decal/corner/brown/border{ + dir = 4 + }, +/turf/simulated/floor/tiled, +/area/hallway/primary/seconddeck/apcenter) +"cxC" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 5 + }, +/obj/structure/catwalk, +/turf/simulated/floor/plating, +/area/maintenance/central) +"cxD" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 10 + }, +/obj/structure/catwalk, +/turf/simulated/floor/plating, +/area/maintenance/central) +"cxE" = ( +/obj/structure/railing{ + dir = 4 + }, +/turf/simulated/open, +/area/hallway/primary/seconddeck/stairwell) +"cxF" = ( +/obj/machinery/atmospherics/unary/vent_scrubber/on{ + dir = 1 + }, +/obj/effect/floor_decal/industrial/warning{ + dir = 8 + }, +/obj/effect/floor_decal/industrial/warning{ + icon_state = "warning"; + dir = 4 + }, +/turf/simulated/floor/tiled, +/area/hallway/primary/seconddeck/stairwell) +"cxG" = ( +/turf/simulated/floor/tiled/dark, +/area/hallway/primary/seconddeck/stairwell) +"cxH" = ( +/obj/machinery/light{ + dir = 8 + }, +/turf/simulated/floor/tiled, +/area/hallway/primary/seconddeck/apcenter) +"cxI" = ( +/obj/machinery/atmospherics/pipe/manifold/hidden/supply{ + dir = 8 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/turf/simulated/floor/tiled/monotile, +/area/hallway/primary/seconddeck/apcenter) +"cxJ" = ( +/obj/machinery/atmospherics/unary/vent_pump/on{ + dir = 8 + }, +/turf/simulated/floor/tiled, +/area/hallway/primary/seconddeck/apcenter) +"cxK" = ( +/obj/effect/wingrille_spawn/reinforced/polarized{ + id = "hop_office" + }, +/obj/structure/cable/green, +/obj/machinery/door/firedoor/border_only, +/turf/simulated/floor/plating, +/area/crew_quarters/heads/sc/hop) +"cxL" = ( +/obj/machinery/photocopier, +/obj/effect/floor_decal/borderfloor{ + dir = 8 + }, +/obj/effect/floor_decal/corner/blue/border{ + dir = 8 + }, +/turf/simulated/floor/tiled, +/area/crew_quarters/heads/sc/hop) +"cxM" = ( +/obj/machinery/atmospherics/unary/vent_pump/on{ + dir = 1 + }, +/obj/structure/cable/green{ + d1 = 1; + d2 = 4; + icon_state = "1-4" + }, +/turf/simulated/floor/tiled, +/area/crew_quarters/heads/sc/hop) +"cxN" = ( +/obj/structure/cable/green{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/obj/effect/floor_decal/borderfloor{ + dir = 4 + }, +/obj/effect/floor_decal/corner/blue/border{ + dir = 4 + }, +/turf/simulated/floor/tiled, +/area/crew_quarters/heads/sc/hop) +"cxO" = ( +/obj/structure/cable/green{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/turf/simulated/floor/carpet, +/area/crew_quarters/heads/sc/hop) +"cxP" = ( +/obj/machinery/recharger/wallcharger{ + pixel_x = 4; + pixel_y = -30 + }, +/obj/machinery/power/apc{ + dir = 4; + name = "east bump"; + pixel_x = 24 + }, +/obj/machinery/light_switch{ + dir = 2; + name = "light switch "; + pixel_x = 36; + pixel_y = 0 + }, +/obj/structure/cable/green{ + d2 = 8; + icon_state = "0-8" + }, +/turf/simulated/floor/carpet, +/area/crew_quarters/heads/sc/hop) +"cxQ" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 5 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/turf/simulated/floor/tiled/monotile, +/area/hallway/primary/seconddeck/ascenter) +"cxR" = ( +/obj/machinery/atmospherics/unary/vent_scrubber/on{ + dir = 8 + }, +/obj/effect/floor_decal/borderfloor{ + dir = 4 + }, +/obj/effect/floor_decal/corner/green/border{ + dir = 4 + }, +/turf/simulated/floor/tiled, +/area/hallway/primary/seconddeck/ascenter) +"cxS" = ( +/obj/structure/flora/ausbushes/sparsegrass, +/turf/simulated/floor/grass, +/area/hallway/primary/seconddeck/ascenter) +"cxT" = ( +/obj/structure/flora/ausbushes/fernybush, +/turf/simulated/floor/grass, +/area/hallway/primary/seconddeck/ascenter) +"cxU" = ( +/obj/structure/table/steel, +/obj/item/roller, +/obj/item/roller, +/obj/item/roller, +/obj/machinery/alarm{ + dir = 4; + pixel_x = -22; + pixel_y = 0 + }, +/turf/simulated/floor/tiled, +/area/medical/medbay_emt_bay) +"cxV" = ( +/obj/effect/floor_decal/industrial/warning{ + icon_state = "warning"; + dir = 8 + }, +/obj/item/weapon/stool/padded, +/obj/effect/landmark/start{ + name = "Paramedic" + }, +/turf/simulated/floor/tiled/dark, +/area/medical/medbay_emt_bay) +"cxW" = ( +/obj/effect/floor_decal/borderfloorwhite{ + dir = 8 + }, +/obj/effect/floor_decal/corner/pink/border{ + dir = 8 + }, +/turf/simulated/floor/tiled/white, +/area/medical/medbay_emt_bay) +"cxX" = ( +/obj/machinery/atmospherics/unary/vent_pump/on, +/obj/effect/floor_decal/borderfloorwhite{ + dir = 4 + }, +/obj/effect/floor_decal/corner/pink/border{ + dir = 4 + }, +/turf/simulated/floor/tiled/white, +/area/medical/medbay_emt_bay) +"cxY" = ( +/obj/structure/window/reinforced, +/obj/structure/window/reinforced{ + dir = 4 + }, +/obj/machinery/door/window/westleft{ + name = "EVA Suit Storage"; + req_access = list(5) + }, +/obj/item/clothing/mask/breath, +/obj/item/clothing/head/helmet/space/void/medical, +/obj/item/clothing/shoes/magboots, +/obj/item/clothing/suit/space/void/medical, +/obj/item/weapon/tank/oxygen, +/obj/structure/table/rack{ + dir = 8; + layer = 2.6 + }, +/turf/simulated/floor/tiled/dark, +/area/medical/medbay_emt_bay) +"cxZ" = ( +/turf/simulated/wall, +/area/medical/medbay_emt_bay) +"cya" = ( +/obj/structure/table/glass, +/obj/effect/floor_decal/borderfloorwhite{ + dir = 8 + }, +/obj/effect/floor_decal/corner/pink/border{ + dir = 8 + }, +/obj/structure/closet/secure_closet/medical_wall/pills{ + pixel_x = -32 + }, +/turf/simulated/floor/tiled/white, +/area/medical/exam_room) +"cyb" = ( +/obj/structure/bed/chair/office/light{ + dir = 8 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 6 + }, +/turf/simulated/floor/tiled/white, +/area/medical/exam_room) +"cyc" = ( +/obj/structure/bed/padded, +/obj/machinery/atmospherics/unary/vent_scrubber/on{ + dir = 8 + }, +/obj/machinery/camera/network/medbay{ + c_tag = "MED - Examination Room"; + dir = 8 + }, +/obj/structure/extinguisher_cabinet{ + pixel_x = 28; + pixel_y = 0 + }, +/obj/effect/floor_decal/borderfloorwhite{ + dir = 4 + }, +/obj/effect/floor_decal/corner/pink/border{ + dir = 4 + }, +/turf/simulated/floor/tiled/white, +/area/medical/exam_room) +"cyd" = ( +/obj/machinery/vending/cola, +/obj/effect/floor_decal/corner/paleblue/diagonal{ + dir = 4 + }, +/obj/machinery/firealarm{ + dir = 8; + pixel_x = -24 + }, +/turf/simulated/floor/tiled/white, +/area/medical/reception) +"cye" = ( +/obj/effect/floor_decal/corner/paleblue/diagonal{ + dir = 4 + }, +/turf/simulated/floor/tiled/white, +/area/medical/reception) +"cyf" = ( +/obj/structure/table/glass, +/obj/item/weapon/reagent_containers/food/drinks/britcup, +/obj/item/weapon/storage/box/glasses/square, +/obj/effect/floor_decal/corner/paleblue/diagonal{ + dir = 4 + }, +/obj/machinery/atmospherics/unary/vent_pump/on{ + dir = 4 + }, +/turf/simulated/floor/tiled/white, +/area/medical/reception) +"cyg" = ( +/obj/structure/table/glass, +/obj/item/weapon/deck/cards, +/obj/effect/floor_decal/corner/paleblue/diagonal{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/manifold/hidden/supply, +/turf/simulated/floor/tiled/white, +/area/medical/reception) +"cyh" = ( +/obj/structure/cable/green{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/obj/structure/cable/green{ + d1 = 2; + d2 = 4; + icon_state = "2-4" + }, +/obj/machinery/atmospherics/pipe/manifold/hidden/supply{ + dir = 1 + }, +/obj/effect/floor_decal/corner/paleblue{ + dir = 8 + }, +/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{ + dir = 8 + }, +/turf/simulated/floor/tiled/white, +/area/medical/reception) +"cyi" = ( +/obj/structure/bed/chair/office/light{ + dir = 4 + }, +/obj/structure/cable/green{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, +/obj/effect/landmark/start{ + name = "Medical Doctor" + }, +/turf/simulated/floor/tiled/white, +/area/medical/reception) +"cyj" = ( +/obj/structure/table/reinforced, +/obj/item/device/radio{ + anchored = 1; + broadcasting = 0; + canhear_range = 1; + frequency = 1487; + icon = 'icons/obj/items.dmi'; + icon_state = "red_phone"; + listening = 1; + name = "Reception Emergency Phone"; + pixel_x = -5 + }, +/obj/machinery/door/window/eastleft{ + name = "Medical Reception"; + req_access = list(5) + }, +/obj/structure/cable/green{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, +/obj/effect/floor_decal/borderfloorwhite{ + dir = 4 + }, +/obj/effect/floor_decal/corner/paleblue/border{ + dir = 4 + }, +/turf/simulated/floor/tiled/white, +/area/medical/reception) +"cyk" = ( +/obj/structure/cable/green{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, +/obj/effect/floor_decal/borderfloorwhite{ + dir = 8 + }, +/obj/effect/floor_decal/corner/paleblue/border{ + dir = 8 + }, +/turf/simulated/floor/tiled/white, +/area/medical/foyer) +"cyl" = ( +/obj/structure/cable/green{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, +/obj/structure/disposalpipe/segment, +/turf/simulated/floor/tiled/white, +/area/medical/foyer) +"cym" = ( +/obj/effect/floor_decal/corner/paleblue{ + dir = 6 + }, +/obj/effect/floor_decal/corner/paleblue{ + dir = 9 + }, +/obj/structure/cable/green{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 9; + pixel_y = 0 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 10 + }, +/turf/simulated/floor/tiled/white, +/area/medical/foyer) +"cyn" = ( +/obj/structure/cable/green{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/turf/simulated/floor/tiled/white, +/area/medical/foyer) +"cyo" = ( +/obj/structure/bed/chair{ + dir = 8 + }, +/obj/structure/cable/green{ + d1 = 1; + d2 = 8; + icon_state = "1-8" + }, +/obj/machinery/camera/network/medbay{ + c_tag = "MED - Medical Foyer"; + dir = 8 + }, +/obj/effect/floor_decal/borderfloorwhite{ + dir = 4 + }, +/obj/effect/floor_decal/corner/paleblue/border{ + dir = 4 + }, +/turf/simulated/floor/tiled/white, +/area/medical/foyer) +"cyp" = ( +/obj/machinery/door/firedoor/border_only, +/obj/effect/wingrille_spawn/reinforced, +/obj/machinery/door/blast/shutters{ + density = 0; + dir = 8; + icon_state = "shutter0"; + id = "chemwindow"; + name = "Chemistry Window Shutters"; + opacity = 0 + }, +/turf/simulated/floor/plating, +/area/medical/chemistry) +"cyq" = ( +/obj/machinery/chem_master, +/obj/effect/floor_decal/borderfloorwhite{ + dir = 8 + }, +/obj/effect/floor_decal/corner/beige/border{ + dir = 8 + }, +/turf/simulated/floor/tiled/white, +/area/medical/chemistry) +"cyr" = ( +/obj/structure/bed/chair/office/dark{ + dir = 1 + }, +/obj/effect/landmark/start{ + name = "Chemist" + }, +/turf/simulated/floor/tiled/white, +/area/medical/chemistry) +"cys" = ( +/obj/structure/table/reinforced, +/obj/item/weapon/storage/box/beakers, +/obj/item/weapon/reagent_containers/dropper, +/turf/simulated/floor/tiled/white, +/area/medical/chemistry) +"cyt" = ( +/obj/machinery/chem_master, +/obj/effect/floor_decal/borderfloorwhite/corner{ + dir = 4 + }, +/obj/effect/floor_decal/corner/beige/bordercorner{ + dir = 4 + }, +/turf/simulated/floor/tiled/white, +/area/medical/chemistry) +"cyu" = ( +/obj/effect/floor_decal/borderfloorwhite/corner{ + dir = 1 + }, +/obj/effect/floor_decal/corner/paleblue/bordercorner{ + dir = 1 + }, +/turf/simulated/floor/tiled/white, +/area/medical/medbay_primary_storage) +"cyv" = ( +/turf/simulated/floor/tiled/white, +/area/medical/medbay_primary_storage) +"cyw" = ( +/obj/structure/table/standard, +/obj/item/weapon/storage/firstaid/fire{ + pixel_x = 5; + pixel_y = 5 + }, +/obj/item/weapon/storage/firstaid/fire{ + pixel_x = 0; + pixel_y = 0 + }, +/obj/item/device/radio/intercom{ + dir = 4; + name = "Station Intercom (General)"; + pixel_x = 21 + }, +/obj/effect/floor_decal/borderfloorwhite{ + dir = 4 + }, +/obj/effect/floor_decal/corner/paleblue/border{ + dir = 4 + }, +/turf/simulated/floor/tiled/white, +/area/medical/medbay_primary_storage) +"cyx" = ( +/obj/structure/closet/l3closet/medical, +/obj/item/device/radio/intercom{ + dir = 8; + name = "Station Intercom (General)"; + pixel_x = -21 + }, +/turf/simulated/floor/tiled/dark, +/area/medical/biostorage) +"cyy" = ( +/turf/simulated/floor/tiled/dark, +/area/medical/biostorage) +"cyz" = ( +/obj/item/weapon/grenade/chem_grenade, +/obj/item/weapon/grenade/chem_grenade, +/obj/item/weapon/grenade/chem_grenade, +/obj/item/weapon/grenade/chem_grenade, +/obj/item/device/assembly/igniter, +/obj/item/device/assembly/igniter, +/obj/item/device/assembly/igniter, +/obj/item/device/assembly/timer, +/obj/item/device/assembly/timer, +/obj/item/device/assembly/timer, +/obj/structure/closet/crate{ + name = "Grenade Crate" + }, +/turf/simulated/floor/tiled/dark, +/area/medical/biostorage) +"cyA" = ( +/obj/machinery/atmospherics/unary/vent_scrubber/on{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/effect/floor_decal/borderfloorwhite{ + dir = 8 + }, +/obj/effect/floor_decal/corner/paleblue/border{ + dir = 8 + }, +/turf/simulated/floor/tiled/white, +/area/medical/medbay2) +"cyB" = ( +/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{ + dir = 4 + }, +/obj/structure/cable/green{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/obj/machinery/light{ + dir = 4; + icon_state = "tube1"; + pixel_x = 0 + }, +/obj/structure/disposalpipe/segment, +/obj/effect/floor_decal/borderfloorwhite{ + dir = 4 + }, +/obj/effect/floor_decal/corner/paleblue/border{ + dir = 4 + }, +/turf/simulated/floor/tiled/white, +/area/medical/medbay2) +"cyC" = ( +/obj/machinery/door/firedoor/border_only, +/obj/effect/wingrille_spawn/reinforced, +/obj/machinery/atmospherics/pipe/simple/hidden/yellow, +/turf/simulated/floor/plating, +/area/medical/virology) +"cyD" = ( +/obj/machinery/atmospherics/pipe/simple/heat_exchanging{ + dir = 4 + }, +/obj/structure/lattice, +/obj/effect/landmark{ + name = "carpspawn" + }, +/turf/space, +/area/space) +"cyE" = ( +/obj/machinery/door/firedoor/border_only, +/obj/effect/wingrille_spawn/reinforced, +/obj/machinery/door/blast/regular{ + density = 0; + icon_state = "pdoor0"; + id = "EngineRadiatorViewport2"; + name = "Engine Radiator Viewport Shutter"; + opacity = 0 + }, +/obj/machinery/atmospherics/pipe/manifold/visible/green, +/turf/simulated/floor, +/area/engineering/engine_room) +"cyF" = ( +/obj/machinery/atmospherics/pipe/manifold/visible/green, +/obj/effect/floor_decal/industrial/warning/corner{ + icon_state = "warningcorner"; + dir = 4 + }, +/obj/machinery/button/remote/blast_door{ + desc = "A remote control-switch for the engine radiator viewport shutters."; + id = "EngineRadiatorViewport2"; + name = "Engine Radiator Viewport Shutters"; + pixel_x = 0; + pixel_y = -25; + req_access = list(10) + }, +/turf/simulated/floor, +/area/engineering/engine_room) +"cyG" = ( +/obj/machinery/atmospherics/pipe/simple/visible/green{ + dir = 10; + icon_state = "intact" + }, +/obj/effect/floor_decal/industrial/warning{ + dir = 1 + }, +/turf/simulated/floor, +/area/engineering/engine_room) +"cyH" = ( +/obj/machinery/atmospherics/binary/pump/high_power{ + dir = 1 + }, +/obj/effect/floor_decal/industrial/warning/corner{ + icon_state = "warningcorner"; + dir = 1 + }, +/obj/effect/floor_decal/industrial/outline/blue, +/obj/effect/engine_setup/pump_max, +/turf/simulated/floor, +/area/engineering/engine_room) +"cyI" = ( +/obj/machinery/atmospherics/pipe/simple/visible/green, +/obj/effect/floor_decal/industrial/warning/corner{ + icon_state = "warningcorner"; + dir = 4 + }, +/turf/simulated/floor, +/area/engineering/engine_room) +"cyJ" = ( +/obj/effect/floor_decal/industrial/warning{ + dir = 1 + }, +/turf/simulated/floor, +/area/engineering/engine_room) +"cyK" = ( +/obj/machinery/atmospherics/pipe/simple/visible/green, +/obj/effect/floor_decal/industrial/warning{ + dir = 4 + }, +/turf/simulated/floor, +/area/engineering/engine_room) +"cyL" = ( +/obj/machinery/portable_atmospherics/canister/nitrogen, +/obj/effect/floor_decal/industrial/outline/blue, +/turf/simulated/floor/plating, +/area/engineering/engine_room) +"cyM" = ( +/obj/machinery/portable_atmospherics/canister/nitrogen, +/obj/structure/sign/warning/nosmoking_2{ + pixel_x = 32 + }, +/obj/effect/floor_decal/industrial/outline, +/turf/simulated/floor/plating, +/area/engineering/engine_room) +"cyN" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/structure/cable{ + d1 = 1; + d2 = 2; + icon_state = "1-2"; + pixel_y = 0 + }, +/obj/structure/disposalpipe/segment, +/turf/simulated/floor, +/area/maintenance/apmaint) +"cyO" = ( +/turf/simulated/wall, +/area/storage/emergency_storage/seconddeck/port_emergency) +"cyP" = ( +/obj/machinery/door/firedoor/border_only, +/obj/machinery/door/airlock{ + name = "Emergency Storage" + }, +/obj/structure/cable{ + d1 = 1; + d2 = 2; + icon_state = "1-2"; + pixel_y = 0 + }, +/turf/simulated/floor/plating, +/area/storage/emergency_storage/seconddeck/port_emergency) +"cyQ" = ( +/obj/structure/disposalpipe/segment, +/turf/simulated/floor/tiled, +/area/construction/seconddeck/construction1) +"cyR" = ( +/obj/item/stack/cable_coil/random, +/obj/machinery/alarm{ + dir = 4; + icon_state = "alarm0"; + pixel_x = -22 + }, +/turf/simulated/floor/plating, +/area/construction/seconddeck/construction1) +"cyS" = ( +/obj/item/stack/tile/floor, +/obj/structure/disposalpipe/segment, +/turf/simulated/floor/plating, +/area/construction/seconddeck/construction1) +"cyT" = ( +/obj/machinery/atmospherics/valve, +/obj/effect/floor_decal/industrial/warning{ + dir = 6 + }, +/turf/simulated/floor/plating, +/area/maintenance/apmaint) +"cyU" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/obj/machinery/meter, +/turf/simulated/floor/plating, +/area/maintenance/apmaint) +"cyV" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/machinery/meter, +/obj/machinery/light/small{ + dir = 4; + pixel_y = 0 + }, +/turf/simulated/floor/plating, +/area/maintenance/apmaint) +"cyW" = ( +/obj/machinery/conveyor{ + dir = 1; + id = "packageSort1" + }, +/obj/random/junk, +/obj/random/junk, +/obj/random/junk, +/turf/simulated/floor/plating, +/area/quartermaster/delivery) +"cyX" = ( +/obj/item/weapon/stool, +/obj/effect/floor_decal/industrial/warning{ + dir = 8 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/turf/simulated/floor/tiled, +/area/quartermaster/delivery) +"cyY" = ( +/obj/machinery/hologram/holopad, +/obj/effect/floor_decal/industrial/outline/grey, +/obj/machinery/atmospherics/pipe/simple/hidden/red{ + dir = 6; + icon_state = "intact" + }, +/turf/simulated/floor/tiled, +/area/quartermaster/delivery) +"cyZ" = ( +/obj/machinery/camera/network/cargo{ + c_tag = "CRG - Delivery Office"; + dir = 8; + name = "security camera" + }, +/obj/structure/table/steel, +/obj/item/weapon/paper_bin{ + pixel_x = -3; + pixel_y = 7 + }, +/obj/item/weapon/storage/box, +/obj/item/weapon/storage/box, +/obj/machinery/light{ + dir = 4; + icon_state = "tube1"; + pixel_x = 0 + }, +/obj/effect/floor_decal/borderfloor/corner{ + dir = 4 + }, +/obj/effect/floor_decal/corner/brown/bordercorner{ + dir = 4 + }, +/obj/machinery/atmospherics/unary/vent_pump/on{ + dir = 8; + pump_direction = 0 + }, +/turf/simulated/floor/tiled, +/area/quartermaster/delivery) +"cza" = ( +/obj/machinery/door/firedoor/border_only, +/obj/effect/wingrille_spawn/reinforced, +/turf/simulated/floor/plating, +/area/quartermaster/delivery) +"czb" = ( +/obj/machinery/light{ + dir = 8 + }, +/obj/effect/floor_decal/borderfloor/corner{ + dir = 1 + }, +/obj/effect/floor_decal/corner/brown/bordercorner{ + dir = 1 + }, +/turf/simulated/floor/tiled, +/area/quartermaster/foyer) +"czc" = ( +/obj/machinery/hologram/holopad, +/obj/effect/floor_decal/industrial/outline/grey, +/obj/effect/landmark{ + name = "lightsout" + }, +/turf/simulated/floor/tiled, +/area/quartermaster/foyer) +"czd" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/turf/simulated/floor/tiled, +/area/quartermaster/foyer) +"cze" = ( +/obj/structure/cable/green{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/turf/simulated/floor/tiled, +/area/quartermaster/foyer) +"czf" = ( +/obj/machinery/light{ + dir = 4; + icon_state = "tube1"; + pixel_x = 0 + }, +/obj/machinery/status_display/supply_display{ + pixel_x = 32 + }, +/obj/effect/floor_decal/borderfloor/corner{ + dir = 4 + }, +/obj/effect/floor_decal/corner/brown/bordercorner{ + dir = 4 + }, +/turf/simulated/floor/tiled, +/area/quartermaster/foyer) +"czg" = ( +/obj/machinery/atmospherics/unary/vent_scrubber/on{ + dir = 4 + }, +/obj/machinery/light{ + dir = 8; + icon_state = "tube1"; + pixel_y = 0 + }, +/obj/effect/floor_decal/borderfloor/corner{ + dir = 1 + }, +/obj/effect/floor_decal/corner/brown/bordercorner{ + dir = 1 + }, +/turf/simulated/floor/tiled, +/area/quartermaster/qm) +"czh" = ( +/obj/structure/table/standard, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 10 + }, +/obj/item/weapon/folder/yellow, +/obj/item/weapon/stamp/qm, +/turf/simulated/floor/tiled, +/area/quartermaster/qm) +"czi" = ( +/obj/structure/table/standard, +/obj/item/weapon/clipboard, +/obj/item/weapon/pen/multi, +/turf/simulated/floor/tiled, +/area/quartermaster/qm) +"czj" = ( +/obj/structure/table/standard, +/obj/item/weapon/paper_bin{ + pixel_x = -3; + pixel_y = 7 + }, +/obj/structure/extinguisher_cabinet{ + pixel_x = 28; + pixel_y = 0 + }, +/obj/item/device/megaphone, +/obj/machinery/camera/network/cargo{ + c_tag = "CRG - Quartermaster Office"; + dir = 8; + name = "security camera" + }, +/obj/effect/floor_decal/borderfloor{ + dir = 4 + }, +/obj/effect/floor_decal/corner/brown/border{ + dir = 4 + }, +/turf/simulated/floor/tiled, +/area/quartermaster/qm) +"czk" = ( +/obj/machinery/door/firedoor/border_only, +/obj/machinery/door/airlock/maintenance{ + req_access = list(12) + }, +/obj/structure/disposalpipe/segment, +/turf/simulated/floor/plating, +/area/ai_monitored/storage/emergency/eva) +"czl" = ( +/obj/machinery/door/firedoor/border_only, +/obj/effect/wingrille_spawn/reinforced, +/turf/simulated/floor/plating, +/area/maintenance/bar) +"czm" = ( +/obj/effect/floor_decal/borderfloor/corner{ + dir = 1 + }, +/obj/effect/floor_decal/corner/green/bordercorner{ + dir = 1 + }, +/turf/simulated/floor/tiled, +/area/hallway/primary/seconddeck/apcenter) +"czn" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 5 + }, +/turf/simulated/floor/tiled/monotile, +/area/hallway/primary/seconddeck/apcenter) +"czo" = ( +/obj/structure/disposalpipe/segment, +/obj/machinery/atmospherics/unary/vent_scrubber/on{ + dir = 8 + }, +/obj/effect/floor_decal/borderfloor{ + dir = 4 + }, +/obj/effect/floor_decal/corner/brown/border{ + dir = 4 + }, +/turf/simulated/floor/tiled, +/area/hallway/primary/seconddeck/apcenter) +"czp" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/structure/catwalk, +/turf/simulated/floor/plating, +/area/maintenance/central) +"czq" = ( +/obj/machinery/alarm{ + dir = 1; + pixel_y = -22 + }, +/obj/effect/floor_decal/industrial/warning{ + dir = 8 + }, +/obj/effect/floor_decal/industrial/warning{ + icon_state = "warning"; + dir = 4 + }, +/turf/simulated/floor/tiled, +/area/hallway/primary/seconddeck/stairwell) +"czr" = ( +/obj/structure/stairs, +/turf/simulated/floor/tiled/dark, +/area/hallway/primary/seconddeck/stairwell) +"czs" = ( +/obj/effect/floor_decal/industrial/outline/yellow, +/obj/machinery/alarm{ + dir = 1; + pixel_y = -22 + }, +/obj/machinery/firealarm{ + dir = 4; + pixel_x = 24 + }, +/turf/simulated/floor/tiled, +/area/hallway/primary/seconddeck/apcenter) +"czt" = ( +/obj/machinery/papershredder, +/obj/item/device/radio/intercom{ + dir = 8; + name = "Station Intercom (General)"; + pixel_x = -21 + }, +/obj/machinery/keycard_auth{ + pixel_x = 0; + pixel_y = -24 + }, +/obj/effect/floor_decal/borderfloor{ + dir = 8 + }, +/obj/effect/floor_decal/corner/blue/border{ + dir = 8 + }, +/turf/simulated/floor/tiled, +/area/crew_quarters/heads/sc/hop) +"czu" = ( +/obj/structure/disposalpipe/segment{ + dir = 4; + icon_state = "pipe-c" + }, +/obj/effect/floor_decal/steeldecal/steel_decals4{ + dir = 8 + }, +/obj/effect/floor_decal/steeldecal/steel_decals4{ + dir = 5 + }, +/turf/simulated/floor/tiled, +/area/crew_quarters/heads/sc/hop) +"czv" = ( +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/machinery/camera/network/command{ + c_tag = "COM - HoP's Office"; + dir = 1 + }, +/obj/effect/floor_decal/borderfloor{ + dir = 4 + }, +/obj/effect/floor_decal/corner/blue/border{ + dir = 4 + }, +/turf/simulated/floor/tiled, +/area/crew_quarters/heads/sc/hop) +"czw" = ( +/obj/machinery/disposal, +/obj/structure/disposalpipe/trunk{ + dir = 8 + }, +/obj/structure/extinguisher_cabinet{ + pixel_y = -30 + }, +/turf/simulated/floor/tiled/dark, +/area/crew_quarters/heads/sc/hop) +"czx" = ( +/obj/structure/disposalpipe/segment, +/obj/machinery/atmospherics/unary/vent_pump/on{ + dir = 4 + }, +/obj/effect/floor_decal/borderfloor{ + dir = 8 + }, +/obj/effect/floor_decal/corner/paleblue/border{ + dir = 8 + }, +/turf/simulated/floor/tiled, +/area/hallway/primary/seconddeck/ascenter) +"czy" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 9; + pixel_y = 0 + }, +/turf/simulated/floor/tiled/monotile, +/area/hallway/primary/seconddeck/ascenter) +"czz" = ( +/obj/effect/floor_decal/borderfloor/corner{ + dir = 4 + }, +/obj/effect/floor_decal/corner/green/bordercorner{ + dir = 4 + }, +/turf/simulated/floor/tiled, +/area/hallway/primary/seconddeck/ascenter) +"czA" = ( +/obj/structure/flora/ausbushes/sparsegrass, +/obj/structure/flora/ausbushes/brflowers, +/turf/simulated/floor/grass, +/area/hallway/primary/seconddeck/ascenter) +"czB" = ( +/obj/machinery/portable_atmospherics/hydroponics/soil, +/turf/simulated/floor/grass, +/area/hallway/primary/seconddeck/ascenter) +"czC" = ( +/obj/machinery/door/firedoor/border_only, +/obj/effect/wingrille_spawn/reinforced, +/turf/simulated/floor/plating, +/area/maintenance/medbay) +"czD" = ( +/obj/machinery/mech_recharger, +/obj/item/device/radio/intercom{ + dir = 8; + name = "Station Intercom (General)"; + pixel_x = -21 + }, +/turf/simulated/floor/tiled/steel_grid, +/area/medical/medbay_emt_bay) +"czE" = ( +/obj/effect/floor_decal/industrial/warning{ + icon_state = "warning"; + dir = 8 + }, +/turf/simulated/floor/tiled/dark, +/area/medical/medbay_emt_bay) +"czF" = ( +/obj/machinery/hologram/holopad, +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/effect/floor_decal/borderfloorwhite{ + dir = 4 + }, +/obj/effect/floor_decal/corner/pink/border{ + dir = 4 + }, +/turf/simulated/floor/tiled/white, +/area/medical/medbay_emt_bay) +"czG" = ( +/obj/structure/table/steel, +/obj/item/device/multitool, +/obj/item/weapon/deck/cards, +/obj/machinery/camera/network/medbay{ + c_tag = "MED - EMT Bay"; + dir = 8 + }, +/obj/machinery/light{ + dir = 4; + icon_state = "tube1"; + pixel_x = 0 + }, +/turf/simulated/floor/tiled/dark, +/area/medical/medbay_emt_bay) +"czH" = ( +/obj/structure/bed/chair/wheelchair, +/obj/machinery/atmospherics/unary/vent_pump/on{ + dir = 4 + }, +/obj/item/device/radio/intercom{ + dir = 8; + name = "Station Intercom (General)"; + pixel_x = -21 + }, +/obj/effect/floor_decal/borderfloorwhite{ + dir = 8 + }, +/obj/effect/floor_decal/corner/pink/border{ + dir = 8 + }, +/turf/simulated/floor/tiled/white, +/area/medical/exam_room) +"czI" = ( +/obj/machinery/hologram/holopad, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 10 + }, +/obj/effect/floor_decal/industrial/outline/grey, +/turf/simulated/floor/tiled/white, +/area/medical/exam_room) +"czJ" = ( +/obj/machinery/vending/wallmed1{ + pixel_x = 25 + }, +/obj/effect/floor_decal/borderfloorwhite{ + dir = 4 + }, +/obj/effect/floor_decal/corner/pink/border{ + dir = 4 + }, +/turf/simulated/floor/tiled/white, +/area/medical/exam_room) +"czK" = ( +/obj/machinery/vending/coffee, +/obj/effect/floor_decal/corner/paleblue/diagonal{ + dir = 4 + }, +/obj/machinery/light{ + dir = 8; + icon_state = "tube1"; + pixel_y = 0 + }, +/turf/simulated/floor/tiled/white, +/area/medical/reception) +"czL" = ( +/obj/structure/table/glass, +/obj/item/weapon/reagent_containers/food/drinks/britcup, +/obj/random/medical, +/obj/item/weapon/reagent_containers/spray/cleaner{ + pixel_x = -5 + }, +/obj/item/weapon/reagent_containers/spray/cleaner, +/obj/effect/floor_decal/corner/paleblue/diagonal{ + dir = 4 + }, +/turf/simulated/floor/tiled/white, +/area/medical/reception) +"czM" = ( +/obj/structure/table/glass, +/obj/item/weapon/reagent_containers/food/drinks/britcup, +/obj/effect/floor_decal/corner/paleblue/diagonal{ + dir = 4 + }, +/turf/simulated/floor/tiled/white, +/area/medical/reception) +"czN" = ( +/obj/machinery/hologram/holopad, +/obj/structure/cable/green{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/obj/item/weapon/stool/padded, +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/obj/effect/floor_decal/corner/paleblue{ + dir = 8 + }, +/turf/simulated/floor/tiled/white, +/area/medical/reception) +"czO" = ( +/obj/machinery/computer/crew, +/turf/simulated/floor/tiled/white, +/area/medical/reception) +"czP" = ( +/obj/structure/window/reinforced{ + dir = 4; + health = 1e+006 + }, +/obj/structure/table/reinforced, +/obj/machinery/button/remote/airlock{ + desc = "A remote control switch for the medbay foyer."; + id = "MedbayFoyer"; + name = "Medbay Doors Control"; + pixel_x = -4; + pixel_y = 6 + }, +/obj/machinery/button/remote/blast_door{ + id = "medbayrecquar"; + name = "Medbay Entrance Quarantine Shutters Control"; + pixel_x = -4; + pixel_y = -4; + req_access = list(5) + }, +/obj/effect/floor_decal/borderfloorwhite{ + dir = 4 + }, +/obj/effect/floor_decal/corner/paleblue/border{ + dir = 4 + }, +/turf/simulated/floor/tiled/white, +/area/medical/reception) +"czQ" = ( +/obj/effect/floor_decal/borderfloorwhite{ + dir = 8 + }, +/obj/effect/floor_decal/corner/paleblue/border{ + dir = 8 + }, +/turf/simulated/floor/tiled/white, +/area/medical/foyer) +"czR" = ( +/obj/effect/floor_decal/corner/paleblue{ + dir = 10 + }, +/obj/effect/floor_decal/corner/paleblue{ + dir = 5 + }, +/obj/structure/disposalpipe/segment, +/turf/simulated/floor/tiled/white, +/area/medical/foyer) +"czS" = ( +/obj/machinery/hologram/holopad, +/obj/effect/floor_decal/corner/paleblue{ + dir = 6 + }, +/obj/effect/floor_decal/corner/paleblue{ + dir = 9 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/obj/effect/floor_decal/industrial/outline/grey, +/turf/simulated/floor/tiled/white, +/area/medical/foyer) +"czT" = ( +/obj/effect/floor_decal/corner/paleblue{ + dir = 10 + }, +/obj/effect/floor_decal/corner/paleblue{ + dir = 5 + }, +/turf/simulated/floor/tiled/white, +/area/medical/foyer) +"czU" = ( +/obj/effect/floor_decal/borderfloorwhite{ + dir = 4 + }, +/obj/effect/floor_decal/corner/paleblue/border{ + dir = 4 + }, +/turf/simulated/floor/tiled/white, +/area/medical/foyer) +"czV" = ( +/obj/structure/table/reinforced, +/obj/machinery/door/firedoor/glass, +/obj/machinery/door/window/westright{ + name = "Chemistry Desk" + }, +/obj/machinery/door/window/eastright{ + name = "Chemistry Desk"; + req_access = list(33) + }, +/obj/machinery/door/blast/shutters{ + density = 0; + dir = 8; + icon_state = "shutter0"; + id = "chemcounter"; + name = "Pharmacy Counter Shutters"; + opacity = 0 + }, +/turf/simulated/floor/tiled/white, +/area/medical/chemistry) +"czW" = ( +/obj/item/weapon/stool/padded, +/obj/effect/floor_decal/borderfloorwhite{ + dir = 8 + }, +/obj/effect/floor_decal/corner/beige/border{ + dir = 8 + }, +/obj/machinery/button/remote/blast_door{ + id = "chemcounter"; + name = "Pharmacy Counter Lockdown Control"; + pixel_x = -24; + pixel_y = 24 + }, +/obj/machinery/button/remote/blast_door{ + id = "chemwindow"; + name = "Pharmacy Windows Shutter Control"; + pixel_x = -24; + pixel_y = 32; + pixel_z = 0 + }, +/turf/simulated/floor/tiled/white, +/area/medical/chemistry) +"czX" = ( +/turf/simulated/floor/tiled/white, +/area/medical/chemistry) +"czY" = ( +/obj/machinery/disposal, +/obj/structure/disposalpipe/trunk, +/turf/simulated/floor/tiled/white, +/area/medical/chemistry) +"czZ" = ( +/obj/effect/floor_decal/steeldecal/steel_decals4, +/obj/effect/floor_decal/steeldecal/steel_decals4{ + dir = 10 + }, +/turf/simulated/floor/tiled/white, +/area/medical/chemistry) +"cAa" = ( +/obj/machinery/door/firedoor/glass, +/obj/machinery/door/airlock/glass_medical{ + name = "Chemistry Laboratory"; + req_access = list(33) + }, +/turf/simulated/floor/tiled/white, +/area/medical/chemistry) +"cAb" = ( +/obj/effect/floor_decal/steeldecal/steel_decals4{ + dir = 6 + }, +/obj/effect/floor_decal/steeldecal/steel_decals4{ + dir = 1 + }, +/turf/simulated/floor/tiled/white, +/area/medical/medbay_primary_storage) +"cAc" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 6 + }, +/turf/simulated/floor/tiled/white, +/area/medical/medbay_primary_storage) +"cAd" = ( +/obj/structure/table/standard, +/obj/item/weapon/reagent_containers/glass/bottle/stoxin{ + pixel_x = -6; + pixel_y = 10 + }, +/obj/item/weapon/reagent_containers/glass/bottle/antitoxin{ + pixel_x = 5; + pixel_y = 5 + }, +/obj/item/weapon/reagent_containers/glass/bottle/inaprovaline{ + pixel_x = 1 + }, +/obj/random/medical, +/obj/item/weapon/storage/firstaid/regular{ + pixel_x = 5; + pixel_y = 5 + }, +/obj/item/weapon/storage/firstaid/regular, +/obj/random/medical, +/obj/machinery/atmospherics/unary/vent_scrubber/on{ + dir = 8 + }, +/obj/machinery/light{ + dir = 4; + icon_state = "tube1"; + pixel_x = 0 + }, +/obj/item/weapon/storage/box/gloves{ + pixel_x = 4; + pixel_y = 4 + }, +/obj/item/weapon/storage/box/masks{ + pixel_y = 0 + }, +/obj/effect/floor_decal/borderfloorwhite{ + dir = 4 + }, +/obj/effect/floor_decal/corner/paleblue/border{ + dir = 4 + }, +/turf/simulated/floor/tiled/white, +/area/medical/medbay_primary_storage) +"cAe" = ( +/obj/structure/closet/l3closet/medical, +/obj/machinery/atmospherics/unary/vent_scrubber/on{ + dir = 4 + }, +/obj/machinery/light{ + dir = 8 + }, +/turf/simulated/floor/tiled/dark, +/area/medical/biostorage) +"cAf" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 10 + }, +/turf/simulated/floor/tiled/dark, +/area/medical/biostorage) +"cAg" = ( +/obj/structure/closet/crate, +/obj/item/weapon/storage/box/lights/mixed, +/obj/item/device/flashlight, +/obj/item/device/flashlight, +/obj/item/device/radio{ + frequency = 1487; + icon_state = "med_walkietalkie"; + name = "Medbay Emergency Radio Link" + }, +/obj/item/device/radio{ + frequency = 1487; + icon_state = "med_walkietalkie"; + name = "Medbay Emergency Radio Link" + }, +/obj/item/weapon/tool/crowbar/red, +/obj/item/weapon/tool/crowbar/red, +/turf/simulated/floor/tiled/dark, +/area/medical/biostorage) +"cAh" = ( +/obj/machinery/door/firedoor/glass, +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/effect/floor_decal/borderfloorwhite{ + dir = 8 + }, +/obj/effect/floor_decal/corner/paleblue/border{ + dir = 8 + }, +/turf/simulated/floor/tiled/white, +/area/medical/medbay2) +"cAi" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/obj/structure/cable/green{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/obj/machinery/door/firedoor/glass, +/obj/structure/disposalpipe/segment, +/obj/effect/floor_decal/borderfloorwhite{ + dir = 4 + }, +/obj/effect/floor_decal/corner/paleblue/border{ + dir = 4 + }, +/turf/simulated/floor/tiled/white, +/area/medical/medbay2) +"cAj" = ( +/turf/simulated/wall, +/area/medical/medbay2) +"cAk" = ( +/obj/machinery/vending/fitness, +/obj/machinery/light{ + dir = 1 + }, +/turf/simulated/floor/tiled/dark, +/area/medical/medbay2) +"cAl" = ( +/obj/machinery/vending/medical, +/turf/simulated/floor/tiled/dark, +/area/medical/medbay2) +"cAm" = ( +/turf/simulated/wall, +/area/medical/medical_restroom) +"cAn" = ( +/obj/structure/sink{ + icon_state = "sink"; + dir = 8; + pixel_x = -12; + pixel_y = 2 + }, +/obj/structure/mirror{ + pixel_x = -28 + }, +/obj/item/device/radio/intercom{ + dir = 1; + name = "Station Intercom (General)"; + pixel_y = 21 + }, +/turf/simulated/floor/tiled/freezer, +/area/medical/medical_restroom) +"cAo" = ( +/obj/machinery/atmospherics/unary/vent_scrubber/on, +/obj/machinery/alarm{ + pixel_y = 22 + }, +/turf/simulated/floor/tiled/freezer, +/area/medical/medical_restroom) +"cAp" = ( +/turf/simulated/floor/tiled/freezer, +/area/medical/medical_restroom) +"cAq" = ( +/obj/machinery/door/airlock{ + name = "Unit 1" + }, +/turf/simulated/floor/tiled/freezer, +/area/medical/medical_restroom) +"cAr" = ( +/obj/structure/toilet{ + dir = 8 + }, +/obj/machinery/light/small{ + dir = 4; + pixel_y = 0 + }, +/turf/simulated/floor/tiled/freezer, +/area/medical/medical_restroom) +"cAs" = ( +/turf/simulated/wall/r_wall, +/area/medical/medical_restroom) +"cAt" = ( +/obj/machinery/atmospherics/unary/vent_pump{ + dir = 4; + external_pressure_bound = 140; + external_pressure_bound_default = 140; + icon_state = "map_vent_out"; + pressure_checks = 1; + pressure_checks_default = 1; + use_power = 1 + }, +/turf/simulated/floor/airless, +/area/medical/virology) +"cAu" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/yellow{ + dir = 9; + icon_state = "intact" + }, +/turf/simulated/floor/airless, +/area/medical/virology) +"cAv" = ( +/obj/machinery/atmospherics/pipe/simple/visible/green{ + dir = 5; + icon_state = "intact" + }, +/turf/simulated/floor, +/area/engineering/engine_room) +"cAw" = ( +/obj/machinery/atmospherics/pipe/manifold/visible/green, +/obj/machinery/meter, +/turf/simulated/floor, +/area/engineering/engine_room) +"cAx" = ( +/obj/machinery/atmospherics/pipe/manifold/visible/green, +/turf/simulated/floor, +/area/engineering/engine_room) +"cAy" = ( +/obj/machinery/atmospherics/pipe/simple/visible/green{ + dir = 9; + icon_state = "intact" + }, +/obj/effect/floor_decal/industrial/warning{ + dir = 4 + }, +/turf/simulated/floor, +/area/engineering/engine_room) +"cAz" = ( +/obj/machinery/portable_atmospherics/canister/nitrogen, +/obj/effect/floor_decal/industrial/outline, +/turf/simulated/floor/plating, +/area/engineering/engine_room) +"cAA" = ( +/turf/simulated/floor/plating, +/area/storage/emergency_storage/seconddeck/port_emergency) +"cAB" = ( +/obj/structure/cable{ + d1 = 1; + d2 = 2; + icon_state = "1-2"; + pixel_y = 0 + }, +/turf/simulated/floor/plating, +/area/storage/emergency_storage/seconddeck/port_emergency) +"cAC" = ( +/obj/machinery/floodlight, +/turf/simulated/floor/plating, +/area/storage/emergency_storage/seconddeck/port_emergency) +"cAD" = ( +/obj/structure/disposalpipe/segment{ + dir = 1; + icon_state = "pipe-c" + }, +/turf/simulated/floor/tiled, +/area/construction/seconddeck/construction1) +"cAE" = ( +/obj/item/stack/tile/floor, +/turf/simulated/floor/plating, +/area/construction/seconddeck/construction1) +"cAF" = ( +/obj/structure/table/steel, +/obj/machinery/cell_charger, +/obj/random/tech_supply, +/obj/random/tech_supply, +/obj/random/tech_supply, +/obj/random/tech_supply, +/obj/random/maintenance/engineering, +/turf/simulated/floor/tiled/steel, +/area/construction/seconddeck/construction1) +"cAG" = ( +/obj/effect/floor_decal/industrial/warning, +/obj/machinery/atmospherics/pipe/simple/hidden{ + dir = 5; + icon_state = "intact" + }, +/turf/simulated/floor/plating, +/area/maintenance/apmaint) +"cAH" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/obj/machinery/atmospherics/pipe/simple/visible/universal{ + dir = 4 + }, +/obj/effect/floor_decal/industrial/warning, +/turf/simulated/floor/plating, +/area/maintenance/apmaint) +"cAI" = ( +/obj/machinery/atmospherics/pipe/manifold/hidden/supply{ + dir = 4 + }, +/obj/effect/floor_decal/industrial/warning, +/turf/simulated/floor/plating, +/area/maintenance/apmaint) +"cAJ" = ( +/obj/machinery/conveyor{ + dir = 1; + id = "packageSort1" + }, +/turf/simulated/floor/plating, +/area/quartermaster/delivery) +"cAK" = ( +/obj/effect/floor_decal/industrial/warning{ + dir = 8 + }, +/obj/machinery/conveyor_switch/oneway{ + id = "packageSort1" + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/turf/simulated/floor/tiled, +/area/quartermaster/delivery) +"cAL" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/universal, +/turf/simulated/floor/tiled, +/area/quartermaster/delivery) +"cAM" = ( +/obj/effect/floor_decal/steeldecal/steel_decals4, +/obj/effect/floor_decal/steeldecal/steel_decals4{ + dir = 10 + }, +/turf/simulated/floor/tiled, +/area/quartermaster/delivery) +"cAN" = ( +/obj/machinery/door/firedoor/glass, +/obj/machinery/door/airlock/glass_mining{ + name = "Delivery Office"; + req_access = list(50) + }, +/turf/simulated/floor/tiled/steel_grid, +/area/quartermaster/delivery) +"cAO" = ( +/obj/effect/floor_decal/steeldecal/steel_decals4{ + dir = 1 + }, +/obj/effect/floor_decal/steeldecal/steel_decals4{ + dir = 6 + }, +/turf/simulated/floor/tiled, +/area/quartermaster/foyer) +"cAP" = ( +/obj/machinery/atmospherics/unary/vent_pump/on{ + dir = 4 + }, +/turf/simulated/floor/tiled, +/area/quartermaster/foyer) +"cAQ" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/turf/simulated/floor/tiled, +/area/quartermaster/foyer) +"cAR" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 10 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/turf/simulated/floor/tiled, +/area/quartermaster/foyer) +"cAS" = ( +/obj/effect/floor_decal/steeldecal/steel_decals4, +/obj/effect/floor_decal/steeldecal/steel_decals4{ + dir = 10 + }, +/turf/simulated/floor/tiled, +/area/quartermaster/foyer) +"cAT" = ( +/obj/machinery/door/firedoor/border_only, +/obj/machinery/door/airlock/mining{ + name = "Quartermaster"; + req_access = list(41) + }, +/turf/simulated/floor/tiled/steel_grid, +/area/quartermaster/qm) +"cAU" = ( +/obj/effect/floor_decal/steeldecal/steel_decals4{ + dir = 1 + }, +/obj/effect/floor_decal/steeldecal/steel_decals4{ + dir = 6 + }, +/turf/simulated/floor/tiled, +/area/quartermaster/qm) +"cAV" = ( +/obj/machinery/hologram/holopad, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 6 + }, +/obj/effect/floor_decal/industrial/outline/grey, +/turf/simulated/floor/tiled, +/area/quartermaster/qm) +"cAW" = ( +/obj/structure/bed/chair{ + dir = 1 + }, +/obj/machinery/atmospherics/unary/vent_pump/on{ + dir = 8 + }, +/turf/simulated/floor/tiled, +/area/quartermaster/qm) +"cAX" = ( +/obj/machinery/disposal, +/obj/item/device/radio/intercom{ + dir = 4; + name = "Station Intercom (General)"; + pixel_x = 21 + }, +/obj/structure/disposalpipe/trunk, +/obj/effect/floor_decal/borderfloor{ + dir = 4 + }, +/obj/effect/floor_decal/corner/brown/border{ + dir = 4 + }, +/turf/simulated/floor/tiled, +/area/quartermaster/qm) +"cAY" = ( +/obj/random/obstruction, +/turf/simulated/floor/plating, +/area/maintenance/bar) +"cAZ" = ( +/obj/structure/closet/crate, +/obj/item/weapon/tank/emergency/oxygen/engi, +/obj/item/weapon/tank/emergency/oxygen/double, +/obj/random/maintenance/cargo, +/obj/random/maintenance/cargo, +/obj/random/maintenance/cargo, +/obj/random/maintenance/cargo, +/obj/machinery/light/small{ + dir = 1 + }, +/turf/simulated/floor/plating, +/area/maintenance/bar) +"cBa" = ( +/obj/structure/disposalpipe/segment, +/turf/simulated/floor/plating, +/area/maintenance/bar) +"cBb" = ( +/turf/simulated/floor/plating, +/area/maintenance/bar) +"cBc" = ( +/obj/machinery/alarm{ + pixel_y = 22 + }, +/turf/simulated/floor/plating, +/area/maintenance/bar) +"cBd" = ( +/obj/effect/decal/cleanable/blood, +/turf/simulated/floor, +/area/maintenance/bar) +"cBe" = ( +/obj/machinery/light/small{ + dir = 4; + pixel_y = 0 + }, +/turf/simulated/floor, +/area/maintenance/bar) +"cBf" = ( +/obj/structure/flora/ausbushes/sparsegrass, +/obj/machinery/light{ + dir = 8 + }, +/turf/simulated/floor/grass, +/area/hallway/primary/seconddeck/apcenter) +"cBg" = ( +/obj/structure/disposalpipe/segment, +/obj/effect/floor_decal/borderfloor/corner{ + dir = 4 + }, +/obj/effect/floor_decal/corner/brown/bordercorner{ + dir = 4 + }, +/turf/simulated/floor/tiled, +/area/hallway/primary/seconddeck/apcenter) +"cBh" = ( +/obj/effect/floor_decal/borderfloor{ + dir = 5 + }, +/obj/effect/floor_decal/corner/brown/border{ + dir = 5 + }, +/obj/machinery/alarm{ + pixel_y = 23 + }, +/obj/item/device/radio/intercom{ + dir = 4; + name = "Station Intercom (General)"; + pixel_x = 21 + }, +/turf/simulated/floor/tiled, +/area/hallway/primary/seconddeck/apcenter) +"cBi" = ( +/obj/machinery/door/firedoor/border_only, +/obj/machinery/door/airlock/maintenance{ + name = "Central Maintenance Access"; + req_one_access = list(12,19) + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/turf/simulated/floor/plating, +/area/maintenance/central) +"cBj" = ( +/obj/structure/sign/deck/second, +/turf/simulated/wall/r_wall, +/area/hallway/primary/seconddeck/stairwell) +"cBk" = ( +/obj/machinery/door/firedoor/border_only, +/turf/simulated/floor/tiled, +/area/hallway/primary/seconddeck/apcenter) +"cBl" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/obj/machinery/door/firedoor/glass, +/turf/simulated/floor/tiled/monotile, +/area/hallway/primary/seconddeck/apcenter) +"cBm" = ( +/obj/structure/sign/directions/evac{ + dir = 2; + pixel_y = -10 + }, +/turf/simulated/wall/r_wall, +/area/hallway/primary/seconddeck/apcenter) +"cBn" = ( +/obj/machinery/door/firedoor/border_only, +/obj/structure/disposalpipe/segment, +/obj/machinery/door/airlock/command{ + name = "Head of Personnel"; + req_access = list(57) + }, +/turf/simulated/floor/tiled/steel_grid, +/area/crew_quarters/heads/sc/hop) +"cBo" = ( +/obj/machinery/ai_status_display, +/turf/simulated/wall/r_wall, +/area/crew_quarters/heads/sc/hop) +"cBp" = ( +/obj/effect/floor_decal/borderfloor{ + dir = 9 + }, +/obj/effect/floor_decal/corner/paleblue/border{ + dir = 9 + }, +/obj/machinery/alarm{ + pixel_y = 23 + }, +/obj/item/device/radio/intercom{ + dir = 8; + name = "Station Intercom (General)"; + pixel_x = -21 + }, +/turf/simulated/floor/tiled, +/area/hallway/primary/seconddeck/ascenter) +"cBq" = ( +/obj/structure/disposalpipe/segment, +/obj/effect/floor_decal/borderfloor/corner{ + dir = 1 + }, +/obj/effect/floor_decal/corner/paleblue/bordercorner{ + dir = 1 + }, +/turf/simulated/floor/tiled, +/area/hallway/primary/seconddeck/ascenter) +"cBr" = ( +/turf/simulated/floor/tiled/monotile, +/area/hallway/primary/seconddeck/ascenter) +"cBs" = ( +/obj/structure/flora/ausbushes/fullgrass, +/obj/machinery/light{ + dir = 4; + icon_state = "tube1" + }, +/turf/simulated/floor/grass, +/area/hallway/primary/seconddeck/ascenter) +"cBt" = ( +/obj/effect/floor_decal/industrial/warning/corner{ + icon_state = "warningcorner"; + dir = 1 + }, +/obj/structure/closet/fireaxecabinet{ + pixel_x = -32; + pixel_y = 0 + }, +/obj/item/weapon/stool/padded, +/obj/machinery/light{ + dir = 8 + }, +/obj/effect/landmark/start{ + name = "Paramedic" + }, +/turf/simulated/floor/tiled/dark, +/area/medical/medbay_emt_bay) +"cBu" = ( +/obj/machinery/atmospherics/unary/vent_scrubber/on{ + dir = 4 + }, +/obj/effect/floor_decal/borderfloorwhite{ + dir = 8 + }, +/obj/effect/floor_decal/corner/pink/border{ + dir = 8 + }, +/turf/simulated/floor/tiled/white, +/area/medical/medbay_emt_bay) +"cBv" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 10 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/effect/floor_decal/borderfloorwhite{ + dir = 4 + }, +/obj/effect/floor_decal/corner/pink/border{ + dir = 4 + }, +/turf/simulated/floor/tiled/white, +/area/medical/medbay_emt_bay) +"cBw" = ( +/obj/structure/window/reinforced, +/obj/structure/window/reinforced{ + dir = 4 + }, +/obj/machinery/door/window/westright{ + name = "EVA Suit Storage"; + req_access = newlist(); + req_one_access = list(5,18) + }, +/obj/item/weapon/rig/medical/equipped, +/obj/structure/window/reinforced{ + dir = 1 + }, +/obj/structure/table/rack{ + dir = 8; + layer = 2.6 + }, +/turf/simulated/floor/tiled/dark, +/area/medical/medbay_emt_bay) +"cBx" = ( +/obj/structure/closet/secure_closet/medical1, +/obj/random/medical, +/obj/random/medical, +/obj/machinery/firealarm{ + dir = 8; + pixel_x = -24 + }, +/obj/effect/floor_decal/borderfloorwhite{ + dir = 8 + }, +/obj/effect/floor_decal/corner/pink/border{ + dir = 8 + }, +/turf/simulated/floor/tiled/white, +/area/medical/exam_room) +"cBy" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/structure/cable/green{ + d1 = 2; + d2 = 4; + icon_state = "2-4" + }, +/obj/effect/floor_decal/steeldecal/steel_decals4{ + dir = 8 + }, +/obj/effect/floor_decal/steeldecal/steel_decals4{ + dir = 5 + }, +/turf/simulated/floor/tiled/white, +/area/medical/exam_room) +"cBz" = ( +/obj/machinery/power/apc{ + dir = 4; + name = "east bump"; + pixel_x = 24 + }, +/obj/machinery/light_switch{ + pixel_x = 36; + pixel_y = -6 + }, +/obj/machinery/button/windowtint{ + id = "exam_window_tint"; + pixel_x = 36; + pixel_y = 6 + }, +/obj/structure/cable/green{ + d2 = 8; + icon_state = "0-8" + }, +/obj/effect/floor_decal/borderfloorwhite{ + dir = 4 + }, +/obj/effect/floor_decal/corner/pink/border{ + dir = 4 + }, +/turf/simulated/floor/tiled/white, +/area/medical/exam_room) +"cBA" = ( +/obj/machinery/disposal, +/obj/structure/disposalpipe/trunk{ + dir = 4 + }, +/obj/effect/floor_decal/corner/paleblue/diagonal{ + dir = 4 + }, +/turf/simulated/floor/tiled/white, +/area/medical/reception) +"cBB" = ( +/obj/effect/floor_decal/corner/paleblue/diagonal{ + dir = 4 + }, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/turf/simulated/floor/tiled/white, +/area/medical/reception) +"cBC" = ( +/obj/structure/bed/chair{ + dir = 1 + }, +/obj/effect/floor_decal/corner/paleblue/diagonal{ + dir = 4 + }, +/obj/effect/landmark/start{ + name = "Medical Doctor" + }, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/turf/simulated/floor/tiled/white, +/area/medical/reception) +"cBD" = ( +/obj/structure/cable/green{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/obj/effect/floor_decal/corner/paleblue{ + dir = 8 + }, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/turf/simulated/floor/tiled/white, +/area/medical/reception) +"cBE" = ( +/obj/structure/bed/chair/office/light{ + dir = 4 + }, +/obj/effect/landmark/start{ + name = "Medical Doctor" + }, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/turf/simulated/floor/tiled/white, +/area/medical/reception) +"cBF" = ( +/obj/structure/table/reinforced, +/obj/item/device/radio{ + anchored = 1; + broadcasting = 0; + canhear_range = 1; + frequency = 1487; + icon = 'icons/obj/items.dmi'; + icon_state = "red_phone"; + listening = 1; + name = "Reception Emergency Phone" + }, +/obj/machinery/door/window/eastright{ + base_state = "right"; + dir = 4; + icon_state = "right"; + name = "Medical Reception"; + req_access = list(5) + }, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/effect/floor_decal/borderfloorwhite{ + dir = 4 + }, +/obj/effect/floor_decal/corner/paleblue/border{ + dir = 4 + }, +/turf/simulated/floor/tiled/white, +/area/medical/reception) +"cBG" = ( +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/effect/floor_decal/borderfloorwhite{ + dir = 8 + }, +/obj/effect/floor_decal/corner/paleblue/border{ + dir = 8 + }, +/turf/simulated/floor/tiled/white, +/area/medical/foyer) +"cBH" = ( +/obj/structure/disposalpipe/junction{ + dir = 1; + icon_state = "pipe-j2" + }, +/turf/simulated/floor/tiled/white, +/area/medical/foyer) +"cBI" = ( +/obj/effect/floor_decal/corner/paleblue{ + dir = 6 + }, +/obj/effect/floor_decal/corner/paleblue{ + dir = 9 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/turf/simulated/floor/tiled/white, +/area/medical/foyer) +"cBJ" = ( +/obj/structure/bed/chair{ + dir = 8 + }, +/obj/effect/floor_decal/borderfloorwhite{ + dir = 4 + }, +/obj/effect/floor_decal/corner/paleblue/border{ + dir = 4 + }, +/turf/simulated/floor/tiled/white, +/area/medical/foyer) +"cBK" = ( +/obj/machinery/atmospherics/unary/vent_scrubber/on{ + dir = 8 + }, +/turf/simulated/floor/tiled/white, +/area/medical/chemistry) +"cBL" = ( +/obj/effect/floor_decal/borderfloorwhite{ + dir = 8 + }, +/obj/effect/floor_decal/corner/beige/border{ + dir = 8 + }, +/obj/machinery/chemical_analyzer, +/turf/simulated/floor/tiled/white, +/area/medical/chemistry) +"cBM" = ( +/obj/machinery/hologram/holopad, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 10 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 6 + }, +/obj/effect/floor_decal/industrial/outline/grey, +/obj/structure/disposalpipe/segment, +/turf/simulated/floor/tiled/white, +/area/medical/chemistry) +"cBN" = ( +/obj/machinery/atmospherics/unary/vent_pump/on{ + dir = 4 + }, +/turf/simulated/floor/tiled/white, +/area/medical/chemistry) +"cBO" = ( +/obj/structure/sink{ + dir = 4; + icon_state = "sink"; + pixel_x = 11; + pixel_y = 0 + }, +/obj/machinery/newscaster{ + pixel_x = 30; + pixel_y = 0 + }, +/obj/effect/floor_decal/borderfloorwhite/corner, +/obj/effect/floor_decal/corner/beige/bordercorner, +/turf/simulated/floor/tiled/white, +/area/medical/chemistry) +"cBP" = ( +/obj/structure/bed/chair/wheelchair, +/obj/machinery/atmospherics/unary/vent_pump/on{ + dir = 4 + }, +/obj/effect/floor_decal/borderfloorwhite/corner{ + dir = 8 + }, +/obj/effect/floor_decal/corner/paleblue/bordercorner{ + dir = 8 + }, +/turf/simulated/floor/tiled/white, +/area/medical/medbay_primary_storage) +"cBQ" = ( +/obj/machinery/hologram/holopad, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 10 + }, +/obj/effect/floor_decal/industrial/outline/grey, +/turf/simulated/floor/tiled/white, +/area/medical/medbay_primary_storage) +"cBR" = ( +/obj/machinery/firealarm{ + dir = 4; + pixel_x = 24 + }, +/obj/machinery/camera/network/medbay{ + c_tag = "MED - Equipment Storage"; + dir = 8 + }, +/obj/machinery/disposal, +/obj/structure/disposalpipe/trunk, +/obj/effect/floor_decal/borderfloorwhite{ + dir = 4 + }, +/obj/effect/floor_decal/corner/paleblue/border{ + dir = 4 + }, +/turf/simulated/floor/tiled/white, +/area/medical/medbay_primary_storage) +"cBS" = ( +/obj/item/clothing/suit/straight_jacket, +/obj/item/clothing/mask/muzzle, +/obj/structure/table/steel, +/obj/machinery/firealarm{ + dir = 8; + pixel_x = -24 + }, +/turf/simulated/floor/tiled/dark, +/area/medical/biostorage) +"cBT" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 6 + }, +/turf/simulated/floor/tiled/dark, +/area/medical/biostorage) +"cBU" = ( +/obj/machinery/iv_drip, +/obj/machinery/atmospherics/unary/vent_pump/on{ + dir = 8 + }, +/turf/simulated/floor/tiled/dark, +/area/medical/biostorage) +"cBV" = ( +/obj/machinery/power/apc{ + dir = 8; + name = "west bump"; + pixel_x = -24 + }, +/obj/machinery/light_switch{ + pixel_x = -36 + }, +/obj/structure/cable/green{ + d2 = 4; + icon_state = "0-4" + }, +/obj/machinery/camera/network/medbay{ + c_tag = "MED - Medical Hallway Starboard 2"; + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/effect/floor_decal/borderfloorwhite{ + dir = 8 + }, +/obj/effect/floor_decal/corner/paleblue/border{ + dir = 8 + }, +/turf/simulated/floor/tiled/white, +/area/medical/medbay2) +"cBW" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/obj/structure/cable/green{ + d1 = 2; + d2 = 8; + icon_state = "2-8" + }, +/obj/structure/cable/green{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/obj/structure/disposalpipe/segment, +/obj/effect/floor_decal/borderfloorwhite/corner{ + dir = 4 + }, +/obj/effect/floor_decal/corner/paleblue/bordercorner{ + dir = 4 + }, +/turf/simulated/floor/tiled/white, +/area/medical/medbay2) +"cBX" = ( +/obj/machinery/atmospherics/unary/vent_pump/on, +/obj/item/device/radio/intercom/department/medbay{ + dir = 2; + pixel_x = 0; + pixel_y = 21 + }, +/obj/effect/floor_decal/borderfloorwhite{ + dir = 1 + }, +/obj/effect/floor_decal/corner/paleblue/border{ + dir = 1 + }, +/turf/simulated/floor/tiled/white, +/area/medical/medbay2) +"cBY" = ( +/obj/effect/floor_decal/borderfloorwhite{ + dir = 1 + }, +/obj/effect/floor_decal/corner/paleblue/border{ + dir = 1 + }, +/turf/simulated/floor/tiled/white, +/area/medical/medbay2) +"cBZ" = ( +/obj/structure/sink{ + icon_state = "sink"; + dir = 8; + pixel_x = -12; + pixel_y = 2 + }, +/obj/structure/mirror{ + pixel_x = -28 + }, +/turf/simulated/floor/tiled/freezer, +/area/medical/medical_restroom) +"cCa" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/turf/simulated/floor/tiled/freezer, +/area/medical/medical_restroom) +"cCb" = ( +/obj/machinery/firealarm{ + dir = 4; + pixel_x = 24 + }, +/obj/machinery/light{ + dir = 4; + icon_state = "tube1"; + pixel_x = 0 + }, +/turf/simulated/floor/tiled/freezer, +/area/medical/medical_restroom) +"cCc" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/structure/cable{ + d1 = 1; + d2 = 2; + icon_state = "1-2"; + pixel_y = 0 + }, +/obj/machinery/door/firedoor/border_only, +/obj/structure/disposalpipe/segment, +/obj/machinery/door/airlock/maintenance{ + req_access = list(12) + }, +/turf/simulated/floor, +/area/maintenance/apmaint) +"cCd" = ( +/obj/structure/table/rack{ + dir = 1 + }, +/obj/item/clothing/suit/fire/firefighter, +/obj/item/weapon/tank/oxygen, +/obj/item/clothing/mask/gas, +/obj/item/weapon/extinguisher, +/obj/item/clothing/head/hardhat/red, +/obj/item/clothing/glasses/meson, +/obj/random/maintenance/engineering, +/obj/random/maintenance/clean, +/obj/machinery/alarm{ + dir = 4; + icon_state = "alarm0"; + pixel_x = -22 + }, +/turf/simulated/floor/plating, +/area/storage/emergency_storage/seconddeck/port_emergency) +"cCe" = ( +/obj/machinery/portable_atmospherics/powered/pump/filled, +/obj/machinery/light/small{ + dir = 4 + }, +/turf/simulated/floor/plating, +/area/storage/emergency_storage/seconddeck/port_emergency) +"cCf" = ( +/obj/structure/table/rack{ + dir = 1 + }, +/obj/random/maintenance/clean, +/obj/random/maintenance/clean, +/obj/random/maintenance/clean, +/obj/random/powercell, +/turf/simulated/floor/plating, +/area/construction/seconddeck/construction1) +"cCg" = ( +/obj/machinery/door/firedoor/border_only, +/obj/machinery/atmospherics/pipe/simple/hidden/yellow{ + dir = 4 + }, +/obj/structure/cable/green{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/obj/machinery/door/airlock/glass_research{ + name = "Xenoflora Isolation"; + req_access = list(55) + }, +/turf/simulated/floor/tiled/steel_grid, +/area/rnd/xenobiology/xenoflora) +"cCh" = ( +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/turf/simulated/floor, +/area/maintenance/cargo) +"cCi" = ( +/obj/structure/table/rack{ + dir = 1 + }, +/obj/random/maintenance/engineering, +/obj/random/maintenance/engineering, +/obj/random/maintenance/clean, +/obj/random/maintenance/clean, +/obj/random/cash, +/turf/simulated/floor, +/area/maintenance/apmaint) +"cCj" = ( +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/turf/simulated/wall, +/area/construction/seconddeck/construction1) +"cCk" = ( +/obj/structure/disposalpipe/segment{ + dir = 2; + icon_state = "pipe-c" + }, +/obj/machinery/door/blast/regular{ + density = 0; + dir = 1; + icon_state = "pdoor0"; + id = "crglockdown"; + name = "Cargo Lockdown"; + opacity = 0 + }, +/turf/simulated/floor/plating, +/area/maintenance/apmaint) +"cCl" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 6 + }, +/obj/machinery/door/blast/regular{ + density = 0; + dir = 1; + icon_state = "pdoor0"; + id = "crglockdown"; + name = "Cargo Lockdown"; + opacity = 0 + }, +/turf/simulated/floor/plating, +/area/maintenance/apmaint) +"cCm" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 9; + pixel_y = 0 + }, +/obj/machinery/door/blast/regular{ + density = 0; + dir = 1; + icon_state = "pdoor0"; + id = "crglockdown"; + name = "Cargo Lockdown"; + opacity = 0 + }, +/turf/simulated/floor/plating, +/area/maintenance/apmaint) +"cCn" = ( +/obj/machinery/conveyor{ + dir = 1; + id = "packageSort1" + }, +/obj/machinery/status_display{ + density = 0; + layer = 4; + pixel_x = -32; + pixel_y = 0 + }, +/turf/simulated/floor/plating, +/area/quartermaster/delivery) +"cCo" = ( +/obj/effect/floor_decal/industrial/warning{ + dir = 10 + }, +/obj/machinery/firealarm{ + dir = 1; + pixel_x = 0; + pixel_y = -24 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 5 + }, +/turf/simulated/floor/tiled, +/area/quartermaster/delivery) +"cCp" = ( +/obj/effect/floor_decal/industrial/warning/corner{ + dir = 8 + }, +/obj/structure/cable/green{ + d1 = 2; + d2 = 4; + icon_state = "2-4" + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 10 + }, +/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{ + dir = 8 + }, +/turf/simulated/floor/tiled, +/area/quartermaster/delivery) +"cCq" = ( +/obj/structure/table/steel, +/obj/item/weapon/wrapping_paper, +/obj/item/weapon/wrapping_paper, +/obj/item/weapon/wrapping_paper, +/obj/machinery/atmospherics/unary/vent_scrubber/on{ + dir = 8 + }, +/obj/machinery/power/apc{ + dir = 4; + name = "east bump"; + pixel_x = 24 + }, +/obj/machinery/light_switch{ + pixel_x = 36; + pixel_y = 0 + }, +/obj/structure/cable/green{ + d2 = 8; + icon_state = "0-8" + }, +/obj/item/weapon/packageWrap, +/obj/item/weapon/packageWrap, +/obj/item/weapon/packageWrap, +/obj/item/weapon/packageWrap, +/obj/item/weapon/packageWrap, +/obj/item/device/destTagger{ + pixel_x = 4; + pixel_y = 3 + }, +/obj/effect/floor_decal/borderfloor/corner, +/obj/effect/floor_decal/corner/brown/bordercorner, +/turf/simulated/floor/tiled, +/area/quartermaster/delivery) +"cCr" = ( +/obj/machinery/computer/supplycomp, +/obj/effect/floor_decal/borderfloor, +/obj/effect/floor_decal/corner/brown/border, +/obj/effect/floor_decal/borderfloor/corner2{ + dir = 9 + }, +/obj/effect/floor_decal/corner/brown/bordercorner2{ + dir = 9 + }, +/turf/simulated/floor/tiled, +/area/quartermaster/foyer) +"cCs" = ( +/obj/effect/floor_decal/industrial/hatch/yellow, +/turf/simulated/floor/tiled, +/area/quartermaster/foyer) +"cCt" = ( +/obj/effect/floor_decal/industrial/outline/yellow, +/turf/simulated/floor/tiled, +/area/quartermaster/foyer) +"cCu" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/obj/effect/floor_decal/steeldecal/steel_decals4{ + dir = 8 + }, +/obj/effect/floor_decal/steeldecal/steel_decals4{ + dir = 5 + }, +/turf/simulated/floor/tiled, +/area/quartermaster/foyer) +"cCv" = ( +/obj/structure/cable/green{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/obj/effect/floor_decal/steeldecal/steel_decals4{ + dir = 8 + }, +/obj/effect/floor_decal/steeldecal/steel_decals4{ + dir = 5 + }, +/turf/simulated/floor/tiled, +/area/quartermaster/foyer) +"cCw" = ( +/obj/machinery/firealarm{ + dir = 1; + pixel_x = 0; + pixel_y = -24 + }, +/obj/structure/flora/pottedplant/fern, +/obj/effect/floor_decal/borderfloor/corner, +/obj/effect/floor_decal/corner/brown/bordercorner, +/turf/simulated/floor/tiled, +/area/quartermaster/foyer) +"cCx" = ( +/obj/effect/floor_decal/borderfloor/corner{ + dir = 8 + }, +/obj/effect/floor_decal/corner/brown/bordercorner{ + dir = 8 + }, +/turf/simulated/floor/tiled, +/area/quartermaster/qm) +"cCy" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/turf/simulated/floor/tiled, +/area/quartermaster/qm) +"cCz" = ( +/obj/structure/closet/secure_closet/quartermaster, +/obj/structure/disposalpipe/segment, +/obj/machinery/alarm{ + dir = 8; + icon_state = "alarm0"; + pixel_x = 22 + }, +/obj/effect/floor_decal/borderfloor{ + dir = 4 + }, +/obj/effect/floor_decal/corner/brown/border{ + dir = 4 + }, +/turf/simulated/floor/tiled, +/area/quartermaster/qm) +"cCA" = ( +/obj/structure/closet/crate, +/obj/item/clothing/gloves/boxing/green, +/obj/item/clothing/gloves/boxing, +/turf/simulated/floor/plating, +/area/maintenance/bar) +"cCB" = ( +/obj/structure/disposalpipe/segment{ + dir = 1; + icon_state = "pipe-c" + }, +/obj/structure/table/steel, +/obj/random/medical, +/obj/random/medical/lite, +/obj/random/medical/lite, +/turf/simulated/floor/plating, +/area/maintenance/bar) +"cCC" = ( +/obj/structure/disposalpipe/segment{ + dir = 2; + icon_state = "pipe-c" + }, +/turf/simulated/floor/plating, +/area/maintenance/bar) +"cCD" = ( +/obj/structure/flora/ausbushes/lavendergrass, +/obj/structure/flora/ausbushes/brflowers, +/turf/simulated/floor/grass, +/area/hallway/primary/seconddeck/apcenter) +"cCE" = ( +/obj/effect/floor_decal/borderfloor/corner{ + dir = 8 + }, +/obj/effect/floor_decal/corner/green/bordercorner{ + dir = 8 + }, +/turf/simulated/floor/tiled, +/area/hallway/primary/seconddeck/apcenter) +"cCF" = ( +/obj/structure/disposalpipe/segment{ + dir = 1; + icon_state = "pipe-c" + }, +/obj/machinery/hologram/holopad, +/obj/effect/floor_decal/industrial/outline/grey, +/obj/machinery/navbeacon/patrol{ + location = "CH5"; + next_patrol = "CH6" + }, +/turf/simulated/floor/tiled/dark, +/area/hallway/primary/seconddeck/apcenter) +"cCG" = ( +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/effect/floor_decal/borderfloor/corner{ + dir = 4 + }, +/obj/effect/floor_decal/corner/brown/bordercorner{ + dir = 4 + }, +/turf/simulated/floor/tiled, +/area/hallway/primary/seconddeck/apcenter) +"cCH" = ( +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/machinery/atmospherics/unary/vent_pump/on, +/obj/effect/floor_decal/borderfloor/corner{ + dir = 1 + }, +/obj/effect/floor_decal/corner/brown/bordercorner{ + dir = 1 + }, +/turf/simulated/floor/tiled, +/area/hallway/primary/seconddeck/apcenter) +"cCI" = ( +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/effect/floor_decal/steeldecal/steel_decals4{ + dir = 4 + }, +/obj/effect/floor_decal/steeldecal/steel_decals4{ + dir = 9 + }, +/turf/simulated/floor/tiled, +/area/hallway/primary/seconddeck/apcenter) +"cCJ" = ( +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/machinery/status_display{ + pixel_y = 32 + }, +/turf/simulated/floor/tiled, +/area/hallway/primary/seconddeck/apcenter) +"cCK" = ( +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/turf/simulated/floor/tiled, +/area/hallway/primary/seconddeck/apcenter) +"cCL" = ( +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/machinery/light{ + dir = 1 + }, +/obj/effect/floor_decal/steeldecal/steel_decals4, +/obj/effect/floor_decal/steeldecal/steel_decals4{ + dir = 10 + }, +/turf/simulated/floor/tiled, +/area/hallway/primary/seconddeck/apcenter) +"cCM" = ( +/obj/machinery/door/firedoor/border_only, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/machinery/door/airlock/glass{ + name = "Central Access" + }, +/turf/simulated/floor/tiled/steel_grid, +/area/hallway/primary/seconddeck/apcenter) +"cCN" = ( +/obj/structure/disposalpipe/segment{ + dir = 2; + icon_state = "pipe-c" + }, +/obj/effect/floor_decal/steeldecal/steel_decals4{ + dir = 1 + }, +/obj/effect/floor_decal/steeldecal/steel_decals4{ + dir = 6 + }, +/obj/machinery/navbeacon/patrol{ + location = "CH6"; + next_patrol = "CIV" + }, +/turf/simulated/floor/tiled, +/area/hallway/primary/seconddeck/apcenter) +"cCO" = ( +/obj/structure/disposalpipe/segment{ + dir = 4; + icon_state = "pipe-c" + }, +/obj/machinery/atmospherics/unary/vent_scrubber/on, +/obj/effect/floor_decal/steeldecal/steel_decals4, +/obj/effect/floor_decal/steeldecal/steel_decals4{ + dir = 10 + }, +/obj/machinery/navbeacon/patrol{ + location = "CH7"; + next_patrol = "CH8" + }, +/turf/simulated/floor/tiled, +/area/hallway/primary/seconddeck/apcenter) +"cCP" = ( +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/machinery/light{ + dir = 1 + }, +/obj/effect/floor_decal/steeldecal/steel_decals4{ + dir = 1 + }, +/obj/effect/floor_decal/steeldecal/steel_decals4{ + dir = 6 + }, +/turf/simulated/floor/tiled, +/area/hallway/primary/seconddeck/ascenter) +"cCQ" = ( +/obj/structure/disposalpipe/sortjunction{ + dir = 8; + icon_state = "pipe-j1s"; + name = "HoP Office"; + sortType = "HoP Office" + }, +/obj/effect/floor_decal/steeldecal/steel_decals4{ + dir = 9 + }, +/obj/effect/floor_decal/steeldecal/steel_decals4{ + dir = 4 + }, +/turf/simulated/floor/tiled, +/area/hallway/primary/seconddeck/ascenter) +"cCR" = ( +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/effect/floor_decal/borderfloor/corner{ + dir = 4 + }, +/obj/effect/floor_decal/corner/paleblue/bordercorner{ + dir = 4 + }, +/turf/simulated/floor/tiled, +/area/hallway/primary/seconddeck/ascenter) +"cCS" = ( +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/effect/floor_decal/borderfloor{ + dir = 1 + }, +/obj/effect/floor_decal/corner/paleblue/border{ + dir = 1 + }, +/turf/simulated/floor/tiled, +/area/hallway/primary/seconddeck/ascenter) +"cCT" = ( +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/machinery/atmospherics/unary/vent_scrubber/on, +/obj/effect/floor_decal/borderfloor{ + dir = 1 + }, +/obj/effect/floor_decal/corner/paleblue/border{ + dir = 1 + }, +/turf/simulated/floor/tiled, +/area/hallway/primary/seconddeck/ascenter) +"cCU" = ( +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/effect/floor_decal/borderfloor/corner{ + dir = 1 + }, +/obj/effect/floor_decal/corner/paleblue/bordercorner{ + dir = 1 + }, +/turf/simulated/floor/tiled, +/area/hallway/primary/seconddeck/ascenter) +"cCV" = ( +/obj/structure/disposalpipe/segment{ + dir = 8; + icon_state = "pipe-c" + }, +/obj/machinery/hologram/holopad, +/obj/effect/floor_decal/industrial/outline/grey, +/obj/machinery/navbeacon/patrol{ + location = "CH8"; + next_patrol = "CH9" + }, +/turf/simulated/floor/tiled/dark, +/area/hallway/primary/seconddeck/ascenter) +"cCW" = ( +/obj/effect/floor_decal/borderfloor/corner, +/obj/effect/floor_decal/corner/green/bordercorner, +/turf/simulated/floor/tiled, +/area/hallway/primary/seconddeck/ascenter) +"cCX" = ( +/obj/structure/flora/ausbushes/fullgrass, +/obj/structure/flora/ausbushes/ywflowers, +/turf/simulated/floor/grass, +/area/hallway/primary/seconddeck/ascenter) +"cCY" = ( +/obj/structure/closet/crate, +/obj/random/maintenance/medical, +/obj/random/maintenance/medical, +/obj/random/maintenance/medical, +/obj/random/maintenance/medical, +/obj/random/medical, +/obj/random/medical, +/turf/simulated/floor/plating, +/area/maintenance/medbay) +"cCZ" = ( +/obj/structure/closet/secure_closet/medical1, +/obj/machinery/power/apc{ + dir = 8; + name = "west bump"; + pixel_x = -24 + }, +/obj/machinery/light_switch{ + pixel_x = -36 + }, +/obj/random/medical, +/obj/random/medical, +/obj/random/medical, +/obj/structure/cable/green{ + d2 = 4; + icon_state = "0-4" + }, +/obj/machinery/status_display{ + pixel_x = 0; + pixel_y = -32 + }, +/turf/simulated/floor/tiled/dark, +/area/medical/medbay_emt_bay) +"cDa" = ( +/obj/structure/cable/green{ + d1 = 2; + d2 = 8; + icon_state = "2-8" + }, +/obj/effect/floor_decal/borderfloorwhite{ + dir = 8 + }, +/obj/effect/floor_decal/corner/pink/border{ + dir = 8 + }, +/obj/effect/floor_decal/borderfloorwhite/corner2{ + dir = 10 + }, +/obj/effect/floor_decal/corner/pink/bordercorner2{ + dir = 10 + }, +/turf/simulated/floor/tiled/white, +/area/medical/medbay_emt_bay) +"cDb" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/effect/floor_decal/borderfloorwhite{ + dir = 4 + }, +/obj/effect/floor_decal/corner/pink/border{ + dir = 4 + }, +/obj/effect/floor_decal/borderfloorwhite/corner2{ + dir = 5 + }, +/obj/effect/floor_decal/corner/pink/bordercorner2{ + dir = 5 + }, +/turf/simulated/floor/tiled/white, +/area/medical/medbay_emt_bay) +"cDc" = ( +/obj/structure/window/reinforced{ + dir = 4 + }, +/obj/structure/window/reinforced, +/obj/item/weapon/tool/crowbar, +/obj/item/weapon/tool/crowbar, +/obj/item/weapon/storage/toolbox/mechanical, +/obj/item/device/radio{ + frequency = 1487; + icon_state = "med_walkietalkie"; + name = "Medbay Emergency Radio Link" + }, +/obj/item/device/radio{ + frequency = 1487; + icon_state = "med_walkietalkie"; + name = "Medbay Emergency Radio Link" + }, +/obj/structure/table/rack{ + dir = 8; + layer = 2.6 + }, +/turf/simulated/floor/tiled/dark, +/area/medical/medbay_emt_bay) +"cDd" = ( +/obj/machinery/door/firedoor/border_only, +/obj/effect/wingrille_spawn/reinforced/polarized{ + id = "exam_window_tint" + }, +/turf/simulated/floor/plating, +/area/medical/exam_room) +"cDe" = ( +/obj/machinery/door/firedoor/border_only, +/obj/machinery/door/airlock/medical{ + name = "Examination Room"; + req_access = list(5) + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/structure/cable/green{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/turf/simulated/floor/tiled/steel_grid, +/area/medical/exam_room) +"cDf" = ( +/obj/structure/table/glass, +/obj/machinery/recharger{ + pixel_y = 0 + }, +/obj/effect/floor_decal/corner/paleblue/diagonal{ + dir = 4 + }, +/obj/machinery/camera/network/medbay{ + c_tag = "MED - Medical Break Area"; + dir = 4 + }, +/obj/item/device/defib_kit/loaded, +/turf/simulated/floor/tiled/white, +/area/medical/reception) +"cDg" = ( +/obj/effect/floor_decal/corner/paleblue/diagonal{ + dir = 4 + }, +/obj/machinery/atmospherics/unary/vent_scrubber/on{ + dir = 4 + }, +/turf/simulated/floor/tiled/white, +/area/medical/reception) +"cDh" = ( +/obj/effect/floor_decal/corner/paleblue/diagonal{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, +/turf/simulated/floor/tiled/white, +/area/medical/reception) +"cDi" = ( +/obj/structure/cable/green{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{ + dir = 4 + }, +/obj/effect/floor_decal/corner/paleblue{ + dir = 8 + }, +/turf/simulated/floor/tiled/white, +/area/medical/reception) +"cDj" = ( +/obj/structure/table/reinforced, +/obj/item/weapon/paper_bin, +/obj/item/weapon/folder/white, +/obj/item/weapon/pen, +/turf/simulated/floor/tiled/white, +/area/medical/reception) +"cDk" = ( +/obj/structure/table/reinforced, +/obj/structure/window/reinforced{ + dir = 4; + health = 1e+006 + }, +/obj/machinery/computer/med_data/laptop, +/obj/effect/floor_decal/borderfloorwhite{ + dir = 4 + }, +/obj/effect/floor_decal/corner/paleblue/border{ + dir = 4 + }, +/turf/simulated/floor/tiled/white, +/area/medical/reception) +"cDl" = ( +/obj/effect/floor_decal/borderfloorwhite{ + dir = 8 + }, +/obj/effect/floor_decal/corner/paleblue/border{ + dir = 8 + }, +/obj/effect/floor_decal/borderfloorwhite/corner2{ + dir = 10 + }, +/obj/effect/floor_decal/corner/paleblue/bordercorner2{ + dir = 10 + }, +/turf/simulated/floor/tiled/white, +/area/medical/foyer) +"cDm" = ( +/obj/machinery/atmospherics/unary/vent_scrubber/on{ + dir = 1 + }, +/turf/simulated/floor/tiled/white, +/area/medical/foyer) +"cDn" = ( +/obj/structure/bed/chair{ + dir = 8 + }, +/obj/effect/floor_decal/borderfloorwhite{ + dir = 4 + }, +/obj/effect/floor_decal/corner/paleblue/border{ + dir = 4 + }, +/obj/effect/floor_decal/borderfloorwhite/corner2{ + dir = 5 + }, +/obj/effect/floor_decal/corner/paleblue/bordercorner2{ + dir = 5 + }, +/turf/simulated/floor/tiled/white, +/area/medical/foyer) +"cDo" = ( +/obj/structure/table/glass, +/obj/item/weapon/packageWrap, +/obj/item/weapon/hand_labeler, +/obj/item/weapon/reagent_containers/spray/cleaner{ + desc = "Someone has crossed out the 'Space' from Space Cleaner and written in Chemistry. Scrawled on the back is, 'Okay, whoever filled this with polytrinic acid, it was only funny the first time. It was hard enough replacing the CMO's first cat!'"; + name = "Chemistry Cleaner" + }, +/obj/effect/floor_decal/borderfloorwhite{ + dir = 8 + }, +/obj/effect/floor_decal/corner/beige/border{ + dir = 8 + }, +/turf/simulated/floor/tiled/white, +/area/medical/chemistry) +"cDp" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/obj/structure/disposalpipe/segment, +/turf/simulated/floor/tiled/white, +/area/medical/chemistry) +"cDq" = ( +/obj/structure/closet/secure_closet/chemical, +/obj/item/weapon/storage/box/pillbottles, +/obj/machinery/alarm{ + dir = 8; + icon_state = "alarm0"; + pixel_x = 22 + }, +/obj/effect/floor_decal/borderfloorwhite{ + dir = 4 + }, +/obj/effect/floor_decal/corner/beige/border{ + dir = 4 + }, +/obj/item/weapon/storage/box/syringes, +/obj/item/weapon/tool/screwdriver, +/turf/simulated/floor/tiled/white, +/area/medical/chemistry) +"cDr" = ( +/obj/structure/bed/chair/wheelchair, +/obj/item/device/radio/intercom/department/medbay{ + dir = 4; + pixel_x = -21 + }, +/obj/effect/floor_decal/borderfloorwhite{ + dir = 8 + }, +/obj/effect/floor_decal/corner/paleblue/border{ + dir = 8 + }, +/turf/simulated/floor/tiled/white, +/area/medical/medbay_primary_storage) +"cDs" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/turf/simulated/floor/tiled/white, +/area/medical/medbay_primary_storage) +"cDt" = ( +/obj/structure/table/standard, +/obj/item/weapon/storage/toolbox/emergency, +/obj/item/bodybag/cryobag, +/obj/item/bodybag/cryobag, +/obj/item/bodybag/cryobag, +/obj/structure/extinguisher_cabinet{ + pixel_x = 25 + }, +/obj/structure/disposalpipe/segment, +/obj/effect/floor_decal/borderfloorwhite{ + dir = 4 + }, +/obj/effect/floor_decal/corner/paleblue/border{ + dir = 4 + }, +/turf/simulated/floor/tiled/white, +/area/medical/medbay_primary_storage) +"cDu" = ( +/obj/structure/table/steel, +/obj/item/weapon/gun/launcher/syringe, +/obj/item/weapon/storage/box/syringegun, +/obj/random/medical, +/obj/random/medical, +/obj/structure/extinguisher_cabinet{ + pixel_x = -27 + }, +/turf/simulated/floor/tiled/dark, +/area/medical/biostorage) +"cDv" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/turf/simulated/floor/tiled/dark, +/area/medical/biostorage) +"cDw" = ( +/obj/structure/bed/chair/wheelchair, +/obj/item/device/radio/intercom/department/medbay{ + dir = 8; + pixel_x = 21 + }, +/turf/simulated/floor/tiled/dark, +/area/medical/biostorage) +"cDx" = ( +/obj/machinery/firealarm{ + dir = 8; + pixel_x = -24 + }, +/obj/machinery/atmospherics/pipe/manifold/hidden/supply{ + dir = 8 + }, +/obj/effect/floor_decal/borderfloorwhite{ + dir = 8 + }, +/obj/effect/floor_decal/corner/paleblue/border{ + dir = 8 + }, +/turf/simulated/floor/tiled/white, +/area/medical/medbay2) +"cDy" = ( +/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{ + dir = 8 + }, +/obj/structure/cable/green{ + d1 = 2; + d2 = 4; + icon_state = "2-4" + }, +/obj/structure/cable/green{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/obj/structure/disposalpipe/segment, +/turf/simulated/floor/tiled/white, +/area/medical/medbay2) +"cDz" = ( +/obj/machinery/atmospherics/pipe/manifold/hidden/supply, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, +/obj/structure/cable/green{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/turf/simulated/floor/tiled/white, +/area/medical/medbay2) +"cDA" = ( +/obj/machinery/hologram/holopad, +/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{ + dir = 1 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/obj/structure/cable/green{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/obj/effect/floor_decal/industrial/outline/grey, +/turf/simulated/floor/tiled/white, +/area/medical/medbay2) +"cDB" = ( +/obj/structure/cable/green{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, +/obj/effect/floor_decal/steeldecal/steel_decals4, +/obj/effect/floor_decal/steeldecal/steel_decals4{ + dir = 10 + }, +/turf/simulated/floor/tiled/white, +/area/medical/medbay2) +"cDC" = ( +/obj/machinery/door/firedoor, +/obj/structure/cable/green{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, +/obj/machinery/door/airlock{ + name = "Medical Restroom" + }, +/turf/simulated/floor/tiled/steel_grid, +/area/medical/medical_restroom) +"cDD" = ( +/obj/structure/cable/green{ + d1 = 2; + d2 = 8; + icon_state = "2-8" + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, +/obj/effect/floor_decal/steeldecal/steel_decals4{ + dir = 6 + }, +/obj/effect/floor_decal/steeldecal/steel_decals4{ + dir = 1 + }, +/turf/simulated/floor/tiled/freezer, +/area/medical/medical_restroom) +"cDE" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 10 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 9 + }, +/obj/effect/landmark{ + name = "xeno_spawn"; + pixel_x = -1 + }, +/turf/simulated/floor/tiled/freezer, +/area/medical/medical_restroom) +"cDF" = ( +/obj/machinery/door/airlock{ + name = "Unit 2" + }, +/turf/simulated/floor/tiled/freezer, +/area/medical/medical_restroom) +"cDG" = ( +/obj/machinery/recharge_station, +/obj/machinery/light/small{ + dir = 4; + pixel_y = 0 + }, +/turf/simulated/floor/tiled/freezer, +/area/medical/medical_restroom) +"cDH" = ( +/turf/simulated/wall/r_wall, +/area/maintenance/disposal) +"cDI" = ( +/obj/machinery/conveyor{ + dir = 10; + id = "garbage" + }, +/turf/simulated/floor, +/area/maintenance/disposal) +"cDJ" = ( +/obj/machinery/conveyor{ + dir = 4; + id = "garbage" + }, +/obj/random/junk, +/turf/simulated/floor, +/area/maintenance/disposal) +"cDK" = ( +/obj/machinery/conveyor{ + dir = 4; + id = "garbage" + }, +/obj/machinery/light/small{ + dir = 1 + }, +/turf/simulated/floor, +/area/maintenance/disposal) +"cDL" = ( +/obj/machinery/conveyor{ + dir = 4; + id = "garbage" + }, +/turf/simulated/floor, +/area/maintenance/disposal) +"cDM" = ( +/obj/structure/disposaloutlet{ + dir = 8 + }, +/obj/structure/disposalpipe/trunk{ + dir = 4 + }, +/turf/simulated/floor, +/area/maintenance/disposal) +"cDN" = ( +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/turf/simulated/wall/r_wall, +/area/maintenance/disposal) +"cDO" = ( +/obj/effect/floor_decal/borderfloorwhite{ + dir = 8 + }, +/obj/effect/floor_decal/corner/paleblue/border{ + dir = 8 + }, +/turf/simulated/floor/tiled/white, +/area/medical/medbay_primary_storage) +"cDP" = ( +/obj/structure/cable{ + d1 = 1; + d2 = 2; + icon_state = "1-2"; + pixel_y = 0 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/universal, +/turf/simulated/floor, +/area/maintenance/cargo) +"cDQ" = ( +/obj/structure/table/rack, +/obj/random/powercell, +/obj/random/powercell, +/obj/random/tech_supply, +/obj/random/tech_supply, +/obj/random/tech_supply, +/obj/random/tank, +/obj/random/maintenance/clean, +/obj/random/maintenance/clean, +/obj/machinery/atmospherics/pipe/simple/visible/universal, +/obj/structure/catwalk, +/obj/random/cash, +/turf/simulated/floor/plating, +/area/maintenance/central) +"cDR" = ( +/obj/structure/table/standard, +/obj/item/device/t_scanner, +/obj/item/weapon/storage/box/lights/mixed, +/obj/item/weapon/storage/box/lights/mixed, +/turf/simulated/floor/plating, +/area/storage/emergency_storage/seconddeck/port_emergency) +"cDS" = ( +/obj/machinery/power/apc{ + dir = 2; + name = "south bump"; + pixel_y = -24 + }, +/obj/structure/cable, +/turf/simulated/floor/plating, +/area/storage/emergency_storage/seconddeck/port_emergency) +"cDT" = ( +/obj/machinery/space_heater, +/turf/simulated/floor/plating, +/area/storage/emergency_storage/seconddeck/port_emergency) +"cDU" = ( +/turf/simulated/wall, +/area/quartermaster/warehouse) +"cDV" = ( +/obj/structure/disposalpipe/segment, +/turf/simulated/wall, +/area/quartermaster/warehouse) +"cDW" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/machinery/door/firedoor, +/obj/machinery/door/airlock/maintenance{ + name = "Cargo Bay Warehouse Maintenance"; + req_access = list(31) + }, +/turf/simulated/floor/plating, +/area/quartermaster/warehouse) +"cDX" = ( +/obj/structure/disposaloutlet{ + dir = 1 + }, +/obj/structure/disposalpipe/trunk, +/turf/simulated/floor/plating, +/area/quartermaster/delivery) +"cDY" = ( +/obj/effect/floor_decal/industrial/warning/corner{ + icon_state = "warningcorner"; + dir = 1 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/obj/structure/cable/green{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/obj/effect/floor_decal/steeldecal/steel_decals4{ + dir = 8 + }, +/obj/effect/floor_decal/steeldecal/steel_decals4{ + dir = 5 + }, +/turf/simulated/floor/tiled, +/area/quartermaster/delivery) +"cDZ" = ( +/obj/machinery/requests_console{ + department = "Cargo Bay"; + departmentType = 2; + pixel_x = 30; + pixel_y = -1 + }, +/obj/machinery/disposal, +/obj/structure/disposalpipe/trunk, +/obj/effect/floor_decal/borderfloor{ + dir = 4 + }, +/obj/effect/floor_decal/corner/brown/border{ + dir = 4 + }, +/turf/simulated/floor/tiled, +/area/quartermaster/delivery) +"cEa" = ( +/turf/simulated/wall, +/area/quartermaster/office) +"cEb" = ( +/obj/structure/table/reinforced, +/obj/machinery/door/firedoor/glass, +/obj/machinery/door/window/southleft{ + name = "Cargo Desk"; + req_access = list(50) + }, +/obj/structure/noticeboard{ + pixel_x = -32 + }, +/turf/simulated/floor/tiled, +/area/quartermaster/office) +"cEc" = ( +/obj/machinery/door/firedoor/border_only, +/obj/effect/wingrille_spawn/reinforced, +/turf/simulated/floor/plating, +/area/quartermaster/office) +"cEd" = ( +/obj/machinery/door/firedoor/glass, +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/obj/machinery/door/airlock/glass_mining{ + id_tag = "cargodoor"; + name = "Cargo Office"; + req_access = list(50) + }, +/turf/simulated/floor/tiled/steel_grid, +/area/quartermaster/office) +"cEe" = ( +/obj/machinery/door/firedoor/glass, +/obj/structure/cable/green{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/obj/machinery/door/airlock/glass_mining{ + id_tag = "cargodoor"; + name = "Cargo Office"; + req_access = list(50) + }, +/turf/simulated/floor/tiled/steel_grid, +/area/quartermaster/office) +"cEf" = ( +/obj/structure/cable/green{ + d2 = 4; + icon_state = "0-4" + }, +/obj/machinery/power/apc{ + dir = 8; + name = "west bump"; + pixel_x = -24 + }, +/obj/machinery/light_switch{ + pixel_x = -36; + pixel_y = -6 + }, +/obj/machinery/button/windowtint{ + id = "quart_tint"; + pixel_x = -36; + pixel_y = 6 + }, +/obj/structure/flora/pottedplant/tropical, +/obj/effect/floor_decal/borderfloor{ + dir = 8 + }, +/obj/effect/floor_decal/corner/brown/border{ + dir = 8 + }, +/turf/simulated/floor/tiled, +/area/quartermaster/qm) +"cEg" = ( +/obj/structure/cable/green{ + d1 = 2; + d2 = 8; + icon_state = "2-8" + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/effect/floor_decal/steeldecal/steel_decals4{ + dir = 8 + }, +/obj/effect/floor_decal/steeldecal/steel_decals4{ + dir = 5 + }, +/turf/simulated/floor/tiled, +/area/quartermaster/qm) +"cEh" = ( +/obj/effect/floor_decal/borderfloor/corner, +/obj/effect/floor_decal/corner/brown/bordercorner, +/turf/simulated/floor/tiled, +/area/quartermaster/qm) +"cEi" = ( +/obj/structure/closet, +/obj/item/weapon/storage/backpack/dufflebag, +/obj/machinery/firealarm{ + dir = 4; + pixel_x = 24 + }, +/obj/structure/disposalpipe/segment, +/obj/effect/floor_decal/borderfloor{ + dir = 6 + }, +/obj/effect/floor_decal/corner/brown/border{ + dir = 6 + }, +/turf/simulated/floor/tiled, +/area/quartermaster/qm) +"cEj" = ( +/turf/simulated/wall, +/area/quartermaster/lockerroom) +"cEk" = ( +/obj/structure/disposalpipe/segment, +/turf/simulated/wall, +/area/quartermaster/lockerroom) +"cEl" = ( +/obj/effect/floor_decal/borderfloor{ + dir = 10 + }, +/obj/effect/floor_decal/corner/green/border{ + dir = 10 + }, +/turf/simulated/floor/tiled, +/area/hallway/primary/seconddeck/apcenter) +"cEm" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 5 + }, +/turf/simulated/floor/tiled/monotile, +/area/hallway/primary/seconddeck/apcenter) +"cEn" = ( +/obj/machinery/atmospherics/pipe/manifold/hidden/supply, +/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{ + dir = 8 + }, +/turf/simulated/floor/tiled/monotile, +/area/hallway/primary/seconddeck/apcenter) +"cEo" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/turf/simulated/floor/tiled/monotile, +/area/hallway/primary/seconddeck/apcenter) +"cEp" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, +/turf/simulated/floor/tiled/monotile, +/area/hallway/primary/seconddeck/apcenter) +"cEq" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, +/obj/effect/floor_decal/borderfloor/corner2{ + dir = 5 + }, +/obj/effect/floor_decal/borderfloor/corner2{ + dir = 6 + }, +/obj/effect/floor_decal/corner/green/bordercorner2{ + dir = 6 + }, +/obj/effect/floor_decal/corner/green/bordercorner2{ + dir = 5 + }, +/turf/simulated/floor/tiled, +/area/hallway/primary/seconddeck/apcenter) +"cEr" = ( +/obj/machinery/door/firedoor/glass, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, +/obj/effect/wingrille_spawn/reinforced, +/turf/simulated/floor/plating, +/area/hallway/primary/seconddeck/apcenter) +"cEs" = ( +/obj/structure/disposalpipe/segment, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/manifold/hidden/supply{ + dir = 1 + }, +/turf/simulated/floor/tiled, +/area/hallway/primary/seconddeck/apcenter) +"cEt" = ( +/obj/machinery/hologram/holopad, +/obj/effect/floor_decal/industrial/outline/grey, +/obj/machinery/atmospherics/pipe/manifold4w/hidden/scrubbers, +/obj/machinery/atmospherics/pipe/manifold4w/hidden/supply, +/turf/simulated/floor/tiled/dark, +/area/hallway/primary/seconddeck/apcenter) +"cEu" = ( +/obj/structure/disposalpipe/segment, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers, +/turf/simulated/floor/tiled, +/area/hallway/primary/seconddeck/apcenter) +"cEv" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, +/obj/effect/floor_decal/borderfloor/corner2{ + dir = 10 + }, +/obj/effect/floor_decal/borderfloor/corner2{ + dir = 8 + }, +/obj/effect/floor_decal/corner/green/bordercorner2{ + dir = 8 + }, +/obj/effect/floor_decal/corner/green/bordercorner2{ + dir = 10 + }, +/turf/simulated/floor/tiled, +/area/hallway/primary/seconddeck/ascenter) +"cEw" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, +/turf/simulated/floor/tiled/monotile, +/area/hallway/primary/seconddeck/ascenter) +"cEx" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/turf/simulated/floor/tiled/monotile, +/area/hallway/primary/seconddeck/ascenter) +"cEy" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 10 + }, +/turf/simulated/floor/tiled/monotile, +/area/hallway/primary/seconddeck/ascenter) +"cEz" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 9 + }, +/turf/simulated/floor/tiled/monotile, +/area/hallway/primary/seconddeck/ascenter) +"cEA" = ( +/obj/effect/floor_decal/borderfloor{ + dir = 6 + }, +/obj/effect/floor_decal/corner/green/border{ + dir = 6 + }, +/turf/simulated/floor/tiled, +/area/hallway/primary/seconddeck/ascenter) +"cEB" = ( +/obj/structure/closet/crate/medical, +/obj/random/maintenance/medical, +/obj/random/maintenance/medical, +/obj/random/maintenance/medical, +/obj/random/maintenance/clean, +/obj/effect/floor_decal/industrial/warning/corner, +/obj/machinery/light/small{ + dir = 4; + pixel_y = 0 + }, +/turf/simulated/floor, +/area/maintenance/medbay) +"cEC" = ( +/obj/structure/cable/green{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/obj/machinery/door/airlock/multi_tile/glass{ + id_tag = null; + name = "EMT Bay"; + req_access = list(5) + }, +/obj/machinery/door/firedoor/border_only, +/turf/simulated/floor/tiled/steel_grid, +/area/medical/medbay_emt_bay) +"cED" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/machinery/door/firedoor/border_only, +/turf/simulated/floor/tiled/steel_grid, +/area/medical/medbay_emt_bay) +"cEE" = ( +/obj/effect/wingrille_spawn/reinforced, +/obj/machinery/door/firedoor/border_only, +/turf/simulated/floor/plating, +/area/medical/medbay_emt_bay) +"cEF" = ( +/obj/effect/floor_decal/borderfloorwhite{ + dir = 8 + }, +/obj/effect/floor_decal/corner/paleblue/border{ + dir = 8 + }, +/obj/machinery/vending/medical, +/turf/simulated/floor/tiled/white, +/area/medical/medbay) +"cEG" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/structure/cable/green{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/obj/effect/floor_decal/steeldecal/steel_decals4{ + dir = 9 + }, +/obj/effect/floor_decal/steeldecal/steel_decals4{ + dir = 4 + }, +/turf/simulated/floor/tiled/white, +/area/medical/medbay) +"cEH" = ( +/obj/effect/floor_decal/borderfloorwhite{ + dir = 4 + }, +/obj/effect/floor_decal/corner/paleblue/border{ + dir = 4 + }, +/turf/simulated/floor/tiled/white, +/area/medical/medbay) +"cEI" = ( +/obj/structure/bookcase/manuals/medical, +/obj/item/weapon/book/manual/stasis, +/obj/item/weapon/book/manual/medical_diagnostics_manual{ + pixel_y = 7 + }, +/obj/effect/floor_decal/corner/paleblue/diagonal{ + dir = 4 + }, +/turf/simulated/floor/tiled/white, +/area/medical/reception) +"cEJ" = ( +/obj/structure/filingcabinet/chestdrawer{ + name = "Medical Forms" + }, +/obj/effect/floor_decal/corner/paleblue/diagonal{ + dir = 4 + }, +/obj/machinery/alarm{ + dir = 1; + icon_state = "alarm0"; + pixel_y = -22 + }, +/turf/simulated/floor/tiled/white, +/area/medical/reception) +"cEK" = ( +/obj/machinery/photocopier, +/obj/effect/floor_decal/corner/paleblue/diagonal{ + dir = 4 + }, +/obj/item/device/radio/intercom{ + name = "Station Intercom (General)"; + pixel_y = -21 + }, +/turf/simulated/floor/tiled/white, +/area/medical/reception) +"cEL" = ( +/obj/machinery/papershredder, +/obj/effect/floor_decal/corner/paleblue/diagonal{ + dir = 4 + }, +/turf/simulated/floor/tiled/white, +/area/medical/reception) +"cEM" = ( +/obj/structure/cable/green{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/obj/effect/floor_decal/corner/paleblue{ + dir = 8 + }, +/obj/effect/floor_decal/steeldecal/steel_decals4{ + dir = 8 + }, +/obj/effect/floor_decal/steeldecal/steel_decals4{ + dir = 5 + }, +/turf/simulated/floor/tiled/white, +/area/medical/reception) +"cEN" = ( +/obj/effect/floor_decal/borderfloorwhite/corner, +/obj/effect/floor_decal/corner/paleblue/bordercorner, +/turf/simulated/floor/tiled/white, +/area/medical/reception) +"cEO" = ( +/obj/machinery/door/window/eastright{ + base_state = "right"; + dir = 4; + icon_state = "right"; + name = "Medical Reception"; + req_access = list(5) + }, +/obj/effect/floor_decal/borderfloorwhite{ + dir = 6 + }, +/obj/effect/floor_decal/corner/paleblue/border{ + dir = 6 + }, +/turf/simulated/floor/tiled/white, +/area/medical/reception) +"cEP" = ( +/obj/effect/floor_decal/industrial/warning{ + icon_state = "warning"; + dir = 9 + }, +/obj/machinery/door/blast/shutters{ + density = 0; + dir = 1; + icon_state = "shutter0"; + id = "medbayrecquar"; + name = "Medbay Emergency Quarantine Shutters"; + opacity = 0 + }, +/obj/effect/floor_decal/corner_steel_grid, +/turf/simulated/floor/tiled/white, +/area/medical/foyer) +"cEQ" = ( +/obj/effect/floor_decal/industrial/warning{ + icon_state = "warning"; + dir = 1 + }, +/obj/machinery/door/blast/shutters{ + density = 0; + dir = 1; + icon_state = "shutter0"; + id = "medbayrecquar"; + name = "Medbay Emergency Quarantine Shutters"; + opacity = 0 + }, +/obj/structure/disposalpipe/segment, +/obj/effect/floor_decal/corner_steel_grid{ + dir = 10 + }, +/turf/simulated/floor/tiled/white, +/area/medical/foyer) +"cER" = ( +/obj/effect/floor_decal/industrial/warning{ + icon_state = "warning"; + dir = 1 + }, +/obj/machinery/door/blast/shutters{ + density = 0; + dir = 1; + icon_state = "shutter0"; + id = "medbayrecquar"; + name = "Medbay Emergency Quarantine Shutters"; + opacity = 0 + }, +/obj/machinery/light, +/obj/effect/landmark{ + name = "lightsout" + }, +/obj/effect/floor_decal/corner_steel_grid{ + dir = 10 + }, +/turf/simulated/floor/tiled/white, +/area/medical/foyer) +"cES" = ( +/obj/effect/floor_decal/industrial/warning{ + icon_state = "warning"; + dir = 1 + }, +/obj/machinery/door/blast/shutters{ + density = 0; + dir = 1; + icon_state = "shutter0"; + id = "medbayrecquar"; + name = "Medbay Emergency Quarantine Shutters"; + opacity = 0 + }, +/obj/effect/floor_decal/corner_steel_grid{ + dir = 10 + }, +/turf/simulated/floor/tiled/white, +/area/medical/foyer) +"cET" = ( +/obj/effect/floor_decal/industrial/warning{ + dir = 5 + }, +/obj/machinery/door/blast/shutters{ + density = 0; + dir = 1; + icon_state = "shutter0"; + id = "medbayrecquar"; + name = "Medbay Emergency Quarantine Shutters"; + opacity = 0 + }, +/obj/machinery/firealarm{ + dir = 4; + pixel_x = 24 + }, +/obj/effect/floor_decal/corner_steel_grid{ + dir = 8 + }, +/turf/simulated/floor/tiled/white, +/area/medical/foyer) +"cEU" = ( +/obj/machinery/reagentgrinder, +/obj/structure/table/glass, +/obj/item/device/radio/intercom/department/medbay{ + dir = 4; + pixel_x = -21 + }, +/obj/effect/floor_decal/borderfloorwhite{ + dir = 10 + }, +/obj/effect/floor_decal/corner/beige/border{ + dir = 10 + }, +/turf/simulated/floor/tiled/white, +/area/medical/chemistry) +"cEV" = ( +/obj/item/stack/material/phoron, +/obj/item/stack/material/phoron, +/obj/item/stack/material/phoron, +/obj/item/stack/material/phoron, +/obj/item/stack/material/phoron, +/obj/structure/table/glass, +/obj/machinery/light, +/obj/effect/floor_decal/borderfloorwhite/corner{ + dir = 8 + }, +/obj/effect/floor_decal/corner/beige/bordercorner{ + dir = 8 + }, +/turf/simulated/floor/tiled/white, +/area/medical/chemistry) +"cEW" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/obj/structure/cable/green{ + d1 = 2; + d2 = 4; + icon_state = "2-4" + }, +/obj/structure/disposalpipe/segment, +/obj/effect/floor_decal/steeldecal/steel_decals4{ + dir = 8 + }, +/obj/effect/floor_decal/steeldecal/steel_decals4{ + dir = 5 + }, +/turf/simulated/floor/tiled/white, +/area/medical/chemistry) +"cEX" = ( +/obj/structure/cable/green{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/obj/machinery/camera/network/medbay{ + c_tag = "MED - Chemistry"; + dir = 1 + }, +/obj/effect/floor_decal/borderfloorwhite/corner, +/obj/effect/floor_decal/corner/beige/bordercorner, +/turf/simulated/floor/tiled/white, +/area/medical/chemistry) +"cEY" = ( +/obj/structure/closet/wardrobe/chemistry_white, +/obj/item/device/radio/headset/headset_med, +/obj/machinery/power/apc{ + dir = 2; + name = "south bump"; + pixel_y = -24 + }, +/obj/machinery/light_switch{ + pixel_x = 11; + pixel_y = -24 + }, +/obj/item/device/radio/intercom{ + dir = 4; + name = "Station Intercom (General)"; + pixel_x = 21 + }, +/obj/structure/cable/green{ + d2 = 8; + icon_state = "0-8" + }, +/obj/item/weapon/storage/box/pillbottles, +/obj/effect/floor_decal/borderfloorwhite{ + dir = 6 + }, +/obj/effect/floor_decal/corner/beige/border{ + dir = 6 + }, +/turf/simulated/floor/tiled/white, +/area/medical/chemistry) +"cEZ" = ( +/obj/machinery/alarm{ + dir = 4; + icon_state = "alarm0"; + pixel_x = -22 + }, +/turf/simulated/floor, +/area/maintenance/cargo) +"cFa" = ( +/obj/structure/cable/green{ + d1 = 2; + d2 = 4; + icon_state = "2-4" + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/effect/floor_decal/steeldecal/steel_decals4{ + dir = 8 + }, +/obj/effect/floor_decal/steeldecal/steel_decals4{ + dir = 5 + }, +/turf/simulated/floor/tiled/white, +/area/medical/medbay_primary_storage) +"cFb" = ( +/obj/structure/table/standard, +/obj/item/roller, +/obj/item/roller{ + pixel_y = 8 + }, +/obj/item/roller{ + pixel_y = 16 + }, +/obj/machinery/power/apc{ + dir = 4; + name = "east bump"; + pixel_x = 24 + }, +/obj/machinery/light_switch{ + dir = 2; + name = "light switch "; + pixel_x = 36; + pixel_y = 0 + }, +/obj/structure/cable/green{ + d2 = 8; + icon_state = "0-8" + }, +/obj/structure/disposalpipe/segment, +/obj/effect/floor_decal/borderfloorwhite{ + dir = 4 + }, +/obj/effect/floor_decal/corner/paleblue/border{ + dir = 4 + }, +/turf/simulated/floor/tiled/white, +/area/medical/medbay_primary_storage) +"cFc" = ( +/obj/structure/table/rack, +/obj/item/clothing/suit/radiation, +/obj/item/clothing/head/radiation, +/obj/item/weapon/storage/toolbox/emergency, +/obj/item/device/defib_kit/loaded, +/obj/item/device/defib_kit/loaded, +/turf/simulated/floor/tiled/dark, +/area/medical/biostorage) +"cFd" = ( +/obj/structure/cable/green{ + d1 = 2; + d2 = 4; + icon_state = "2-4" + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/turf/simulated/floor/tiled/dark, +/area/medical/biostorage) +"cFe" = ( +/obj/machinery/power/apc{ + dir = 4; + name = "east bump"; + pixel_x = 24 + }, +/obj/machinery/light_switch{ + dir = 2; + name = "light switch "; + pixel_x = 36; + pixel_y = 0 + }, +/obj/structure/cable/green{ + d2 = 8; + icon_state = "0-8" + }, +/turf/simulated/floor/tiled/dark, +/area/medical/biostorage) +"cFf" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/effect/floor_decal/borderfloorwhite{ + dir = 8 + }, +/obj/effect/floor_decal/corner/paleblue/border{ + dir = 8 + }, +/turf/simulated/floor/tiled/white, +/area/medical/medbay2) +"cFg" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/obj/structure/cable/green{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/obj/structure/disposalpipe/segment, +/turf/simulated/floor/tiled/white, +/area/medical/medbay2) +"cFh" = ( +/obj/structure/bed/chair{ + dir = 4 + }, +/turf/simulated/floor/tiled/white, +/area/medical/medbay2) +"cFi" = ( +/obj/structure/table/glass, +/obj/item/weapon/reagent_containers/food/drinks/britcup, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/turf/simulated/floor/tiled/white, +/area/medical/medbay2) +"cFj" = ( +/obj/structure/bed/chair{ + dir = 8 + }, +/turf/simulated/floor/tiled/white, +/area/medical/medbay2) +"cFk" = ( +/obj/structure/table/glass, +/obj/item/weapon/towel{ + color = "#FF6666"; + name = "light red towel" + }, +/obj/item/weapon/towel{ + color = "#FF6666"; + name = "light red towel" + }, +/obj/item/weapon/towel{ + color = "#FF6666"; + name = "light red towel" + }, +/obj/item/weapon/towel{ + color = "#3fc0ea"; + name = "light blue towel"; + pixel_x = 2; + pixel_y = 4 + }, +/obj/item/weapon/towel{ + color = "#3fc0ea"; + name = "light blue towel"; + pixel_x = 2; + pixel_y = 4 + }, +/obj/item/weapon/towel{ + color = "#3fc0ea"; + name = "light blue towel"; + pixel_x = 2; + pixel_y = 4 + }, +/obj/item/weapon/soap/nanotrasen, +/obj/machinery/power/apc{ + dir = 8; + name = "west bump"; + pixel_x = -24 + }, +/obj/machinery/light_switch{ + pixel_x = -36 + }, +/obj/structure/cable/green, +/obj/random/soap, +/turf/simulated/floor/tiled/freezer, +/area/medical/medical_restroom) +"cFl" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/turf/simulated/floor/tiled/freezer, +/area/medical/medical_restroom) +"cFm" = ( +/obj/machinery/shower{ + dir = 8; + icon_state = "shower"; + pixel_x = -5; + pixel_y = -1 + }, +/obj/machinery/door/window/westright{ + name = "Shower" + }, +/obj/structure/window/basic{ + dir = 1 + }, +/obj/structure/curtain/open/shower/medical, +/turf/simulated/floor/tiled/freezer, +/area/medical/medical_restroom) +"cFn" = ( +/obj/machinery/conveyor{ + dir = 1; + id = "garbage" + }, +/obj/structure/sign/warning/vacuum{ + pixel_x = -32 + }, +/turf/simulated/floor, +/area/maintenance/disposal) +"cFo" = ( +/obj/structure/sign/warning/moving_parts, +/turf/simulated/wall, +/area/maintenance/disposal) +"cFp" = ( +/obj/machinery/door/firedoor/border_only, +/obj/effect/wingrille_spawn/reinforced, +/turf/simulated/floor, +/area/maintenance/disposal) +"cFq" = ( +/obj/machinery/door/firedoor/border_only, +/obj/machinery/door/airlock/maintenance{ + name = "Disposal Access"; + req_access = list(12) + }, +/turf/simulated/floor, +/area/maintenance/disposal) +"cFr" = ( +/obj/structure/disposalpipe/segment, +/obj/machinery/vending/medical, +/turf/simulated/wall, +/area/medical/medbay_primary_storage) +"cFs" = ( +/obj/structure/cable{ + d1 = 1; + d2 = 2; + icon_state = "1-2"; + pixel_y = 0 + }, +/obj/machinery/atmospherics/pipe/simple/hidden{ + dir = 9; + icon_state = "intact" + }, +/turf/simulated/floor, +/area/maintenance/cargo) +"cFt" = ( +/obj/structure/closet/crate, +/obj/random/maintenance/engineering, +/obj/random/maintenance/clean, +/obj/random/maintenance/clean, +/obj/random/maintenance/clean, +/turf/simulated/floor, +/area/maintenance/cargo) +"cFu" = ( +/obj/random/obstruction, +/turf/simulated/floor/plating, +/area/maintenance/cargo) +"cFv" = ( +/obj/effect/floor_decal/corner/brown/full{ + dir = 8 + }, +/obj/structure/table/rack{ + dir = 8; + layer = 2.9 + }, +/turf/simulated/floor/tiled/steel, +/area/maintenance/cargo) +"cFw" = ( +/obj/structure/table/rack{ + dir = 8; + layer = 2.9 + }, +/turf/simulated/floor/tiled/steel, +/area/maintenance/cargo) +"cFx" = ( +/turf/simulated/floor/tiled/steel, +/area/maintenance/cargo) +"cFy" = ( +/obj/structure/disposalpipe/sortjunction/untagged{ + dir = 1 + }, +/obj/effect/decal/cleanable/cobweb, +/obj/structure/closet/crate, +/obj/effect/floor_decal/borderfloor{ + dir = 8 + }, +/obj/effect/floor_decal/corner/brown/border{ + dir = 8 + }, +/turf/simulated/floor/tiled/steel, +/area/quartermaster/warehouse) +"cFz" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/effect/floor_decal/steeldecal/steel_decals4{ + dir = 9 + }, +/obj/effect/floor_decal/steeldecal/steel_decals4{ + dir = 4 + }, +/turf/simulated/floor/tiled/steel, +/area/quartermaster/warehouse) +"cFA" = ( +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/machinery/alarm{ + pixel_y = 23 + }, +/obj/effect/floor_decal/borderfloor{ + dir = 4 + }, +/obj/effect/floor_decal/corner/brown/border{ + dir = 4 + }, +/turf/simulated/floor/tiled/steel, +/area/quartermaster/warehouse) +"cFB" = ( +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/turf/simulated/wall, +/area/quartermaster/delivery) +"cFC" = ( +/obj/structure/disposalpipe/segment{ + dir = 8; + icon_state = "pipe-c" + }, +/turf/simulated/wall, +/area/quartermaster/delivery) +"cFD" = ( +/obj/structure/sign/poster{ + pixel_x = 0; + pixel_y = 0 + }, +/turf/simulated/wall, +/area/quartermaster/delivery) +"cFE" = ( +/obj/machinery/door/firedoor/glass, +/obj/machinery/door/airlock/glass_mining{ + name = "Delivery Office"; + req_access = list(50) + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/obj/structure/cable/green{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/turf/simulated/floor/tiled/steel_grid, +/area/quartermaster/delivery) +"cFF" = ( +/obj/machinery/door/firedoor/border_only, +/obj/effect/wingrille_spawn/reinforced, +/obj/structure/disposalpipe/segment, +/turf/simulated/floor/plating, +/area/quartermaster/delivery) +"cFG" = ( +/obj/structure/table/standard, +/obj/item/weapon/coin/silver{ + pixel_x = -3; + pixel_y = 3 + }, +/obj/item/weapon/coin/silver, +/obj/item/device/retail_scanner/civilian{ + icon_state = "retail_idle"; + dir = 1 + }, +/obj/effect/floor_decal/borderfloor{ + dir = 4 + }, +/obj/effect/floor_decal/corner/brown/border{ + dir = 4 + }, +/turf/simulated/floor/tiled, +/area/quartermaster/qm) +"cFH" = ( +/obj/structure/bed/chair/office/dark{ + dir = 1 + }, +/obj/effect/landmark/start{ + name = "Cargo Technician" + }, +/obj/effect/floor_decal/borderfloor{ + dir = 1 + }, +/obj/effect/floor_decal/corner/brown/border{ + dir = 1 + }, +/turf/simulated/floor/tiled, +/area/quartermaster/office) +"cFI" = ( +/obj/machinery/computer/supplycomp/control, +/turf/simulated/floor/tiled, +/area/quartermaster/office) +"cFJ" = ( +/obj/structure/filingcabinet/filingcabinet, +/obj/effect/floor_decal/borderfloor/corner{ + dir = 1 + }, +/obj/effect/floor_decal/corner/brown/bordercorner{ + dir = 1 + }, +/turf/simulated/floor/tiled, +/area/quartermaster/office) +"cFK" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/obj/effect/floor_decal/steeldecal/steel_decals4{ + dir = 9 + }, +/obj/effect/floor_decal/steeldecal/steel_decals4{ + dir = 4 + }, +/turf/simulated/floor/tiled, +/area/quartermaster/office) +"cFL" = ( +/obj/structure/cable/green{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/obj/effect/floor_decal/steeldecal/steel_decals4{ + dir = 9 + }, +/obj/effect/floor_decal/steeldecal/steel_decals4{ + dir = 4 + }, +/turf/simulated/floor/tiled, +/area/quartermaster/office) +"cFM" = ( +/obj/machinery/light{ + dir = 4; + icon_state = "tube1"; + pixel_x = 0 + }, +/obj/item/device/radio/intercom{ + dir = 1; + name = "Station Intercom (General)"; + pixel_y = 21 + }, +/obj/structure/disposalpipe/trunk, +/obj/machinery/disposal, +/obj/effect/floor_decal/borderfloor{ + dir = 4 + }, +/obj/effect/floor_decal/corner/brown/border{ + dir = 4 + }, +/turf/simulated/floor/tiled, +/area/quartermaster/office) +"cFN" = ( +/obj/machinery/door/firedoor/border_only, +/obj/structure/cable/green{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/machinery/door/airlock/mining{ + name = "Quartermaster"; + req_access = list(41) + }, +/turf/simulated/floor/tiled/steel_grid, +/area/quartermaster/qm) +"cFO" = ( +/obj/machinery/door/firedoor/border_only, +/obj/effect/wingrille_spawn/reinforced/polarized{ + id = "quart_tint" + }, +/obj/structure/disposalpipe/segment, +/turf/simulated/floor/plating, +/area/quartermaster/qm) +"cFP" = ( +/obj/machinery/status_display{ + density = 0; + layer = 4; + pixel_x = -32; + pixel_y = 0 + }, +/obj/effect/floor_decal/industrial/warning{ + icon_state = "warning"; + dir = 4 + }, +/turf/simulated/floor/tiled, +/area/quartermaster/lockerroom) +"cFQ" = ( +/obj/structure/railing, +/turf/simulated/open, +/area/quartermaster/lockerroom) +"cFR" = ( +/obj/structure/railing, +/obj/structure/railing{ + dir = 4 + }, +/turf/simulated/open, +/area/quartermaster/lockerroom) +"cFS" = ( +/obj/machinery/ai_status_display{ + pixel_x = 32; + pixel_y = 0 + }, +/obj/structure/extinguisher_cabinet{ + pixel_y = 30 + }, +/obj/structure/disposalpipe/segment, +/obj/effect/floor_decal/industrial/warning{ + dir = 8 + }, +/turf/simulated/floor/tiled/steel, +/area/quartermaster/lockerroom) +"cFT" = ( +/obj/machinery/door/firedoor/border_only, +/obj/machinery/door/airlock/maintenance{ + req_access = list(12) + }, +/turf/simulated/floor/plating, +/area/maintenance/bar) +"cFU" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/obj/structure/cable{ + d1 = 1; + d2 = 2; + icon_state = "1-2"; + pixel_y = 0 + }, +/turf/simulated/floor/plating, +/area/maintenance/bar) +"cFV" = ( +/obj/effect/floor_decal/borderfloor/corner, +/obj/effect/floor_decal/corner/green/bordercorner, +/turf/simulated/floor/tiled, +/area/hallway/primary/seconddeck/apcenter) +"cFW" = ( +/obj/machinery/atmospherics/unary/vent_scrubber/on{ + dir = 1 + }, +/obj/effect/floor_decal/borderfloor, +/obj/effect/floor_decal/corner/green/border, +/turf/simulated/floor/tiled, +/area/hallway/primary/seconddeck/apcenter) +"cFX" = ( +/obj/effect/floor_decal/borderfloor, +/obj/effect/floor_decal/corner/green/border, +/turf/simulated/floor/tiled, +/area/hallway/primary/seconddeck/apcenter) +"cFY" = ( +/obj/effect/floor_decal/borderfloor, +/obj/effect/floor_decal/corner/green/border, +/obj/effect/floor_decal/borderfloor/corner2{ + dir = 9 + }, +/obj/effect/floor_decal/corner/green/bordercorner2{ + dir = 9 + }, +/turf/simulated/floor/tiled, +/area/hallway/primary/seconddeck/apcenter) +"cFZ" = ( +/obj/effect/floor_decal/steeldecal/steel_decals4, +/obj/effect/floor_decal/steeldecal/steel_decals4{ + dir = 10 + }, +/turf/simulated/floor/tiled, +/area/hallway/primary/seconddeck/apcenter) +"cGa" = ( +/obj/machinery/door/firedoor/border_only, +/obj/machinery/door/airlock/glass{ + name = "Central Access" + }, +/turf/simulated/floor/tiled/steel_grid, +/area/hallway/primary/seconddeck/apcenter) +"cGb" = ( +/obj/structure/disposalpipe/segment, +/obj/machinery/atmospherics/unary/vent_pump/on{ + dir = 1 + }, +/obj/effect/floor_decal/steeldecal/steel_decals4{ + dir = 1 + }, +/obj/effect/floor_decal/steeldecal/steel_decals4{ + dir = 6 + }, +/turf/simulated/floor/tiled, +/area/hallway/primary/seconddeck/apcenter) +"cGc" = ( +/obj/structure/disposalpipe/segment, +/obj/effect/floor_decal/steeldecal/steel_decals4, +/obj/effect/floor_decal/steeldecal/steel_decals4{ + dir = 10 + }, +/turf/simulated/floor/tiled, +/area/hallway/primary/seconddeck/apcenter) +"cGd" = ( +/obj/effect/floor_decal/steeldecal/steel_decals4{ + dir = 1 + }, +/obj/effect/floor_decal/steeldecal/steel_decals4{ + dir = 6 + }, +/turf/simulated/floor/tiled, +/area/hallway/primary/seconddeck/ascenter) +"cGe" = ( +/obj/effect/floor_decal/borderfloor, +/obj/effect/floor_decal/corner/green/border, +/obj/effect/floor_decal/borderfloor/corner2, +/obj/effect/floor_decal/corner/green/bordercorner2, +/turf/simulated/floor/tiled, +/area/hallway/primary/seconddeck/ascenter) +"cGf" = ( +/obj/effect/floor_decal/borderfloor, +/obj/effect/floor_decal/corner/green/border, +/turf/simulated/floor/tiled, +/area/hallway/primary/seconddeck/ascenter) +"cGg" = ( +/obj/machinery/atmospherics/unary/vent_pump/on{ + dir = 1 + }, +/obj/effect/floor_decal/borderfloor, +/obj/effect/floor_decal/corner/green/border, +/turf/simulated/floor/tiled, +/area/hallway/primary/seconddeck/ascenter) +"cGh" = ( +/obj/effect/floor_decal/borderfloor/corner{ + dir = 8 + }, +/obj/effect/floor_decal/corner/green/bordercorner{ + dir = 8 + }, +/turf/simulated/floor/tiled, +/area/hallway/primary/seconddeck/ascenter) +"cGi" = ( +/obj/effect/floor_decal/industrial/warning{ + dir = 4 + }, +/turf/simulated/floor/plating, +/area/maintenance/medbay) +"cGj" = ( +/obj/machinery/door/blast/regular{ + density = 0; + icon_state = "pdoor0"; + id = "medbayquar"; + name = "Medbay Emergency Lockdown Shutters"; + opacity = 0 + }, +/turf/simulated/floor/plating, +/area/maintenance/medbay) +"cGk" = ( +/turf/simulated/wall/r_wall, +/area/medical/medbay) +"cGl" = ( +/obj/structure/cable/green{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/obj/item/device/radio/intercom/department/medbay{ + dir = 4; + pixel_x = -21 + }, +/turf/simulated/floor/tiled/white, +/area/medical/medbay) +"cGm" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/turf/simulated/floor/tiled/white, +/area/medical/medbay) +"cGn" = ( +/obj/effect/floor_decal/borderfloorwhite/corner{ + dir = 4 + }, +/obj/effect/floor_decal/corner/paleblue/bordercorner{ + dir = 4 + }, +/turf/simulated/floor/tiled/white, +/area/medical/medbay) +"cGo" = ( +/obj/structure/extinguisher_cabinet{ + pixel_y = 30 + }, +/obj/effect/floor_decal/borderfloorwhite{ + dir = 1 + }, +/obj/effect/floor_decal/corner/paleblue/border{ + dir = 1 + }, +/turf/simulated/floor/tiled/white, +/area/medical/medbay) +"cGp" = ( +/obj/machinery/atmospherics/unary/vent_scrubber/on, +/obj/effect/floor_decal/borderfloorwhite/corner{ + dir = 1 + }, +/obj/effect/floor_decal/corner/paleblue/bordercorner{ + dir = 1 + }, +/turf/simulated/floor/tiled/white, +/area/medical/medbay) +"cGq" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/structure/cable/green{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/turf/simulated/floor/tiled/white, +/area/medical/medbay) +"cGr" = ( +/obj/structure/sign/examroom{ + pixel_x = 32; + pixel_y = 32 + }, +/obj/effect/floor_decal/borderfloorwhite{ + dir = 4 + }, +/obj/effect/floor_decal/corner/paleblue/border{ + dir = 4 + }, +/turf/simulated/floor/tiled/white, +/area/medical/medbay) +"cGs" = ( +/obj/machinery/status_display, +/turf/simulated/wall, +/area/medical/reception) +"cGt" = ( +/obj/machinery/door/firedoor/border_only, +/obj/effect/wingrille_spawn/reinforced, +/turf/simulated/floor/plating, +/area/medical/reception) +"cGu" = ( +/obj/machinery/door/firedoor/glass, +/obj/structure/cable/green{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/obj/machinery/door/airlock/glass_medical{ + name = "Medical Reception"; + req_access = list(5) + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/turf/simulated/floor/tiled/steel_grid, +/area/medical/reception) +"cGv" = ( +/obj/machinery/door/firedoor/glass, +/obj/machinery/door/airlock/glass_medical{ + id_tag = "MedbayFoyer"; + name = "Medbay"; + req_access = list(5) + }, +/obj/structure/disposalpipe/segment, +/turf/simulated/floor/tiled/steel_grid, +/area/medical/foyer) +"cGw" = ( +/obj/machinery/door/firedoor/glass, +/obj/machinery/door/airlock/glass_medical{ + id_tag = "MedbayFoyer"; + name = "Medbay"; + req_access = list(5) + }, +/turf/simulated/floor/tiled/steel_grid, +/area/medical/foyer) +"cGx" = ( +/obj/machinery/smartfridge/secure/medbay{ + req_one_access = list(33,66) + }, +/turf/simulated/wall/r_wall, +/area/medical/chemistry) +"cGy" = ( +/obj/machinery/door/firedoor/glass, +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/obj/structure/cable/green{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/obj/machinery/door/airlock/glass_medical{ + name = "Chemistry Laboratory"; + req_access = list(33) + }, +/obj/structure/disposalpipe/segment, +/turf/simulated/floor/tiled/steel_grid, +/area/medical/chemistry) +"cGz" = ( +/obj/machinery/door/firedoor/border_only, +/obj/effect/wingrille_spawn/reinforced, +/turf/simulated/floor/plating, +/area/medical/medbay_primary_storage) +"cGA" = ( +/obj/machinery/door/firedoor/glass, +/obj/machinery/door/airlock/glass_medical{ + name = "Medbay Equipment"; + req_access = list(5) + }, +/obj/structure/cable/green{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/turf/simulated/floor/tiled/steel_grid, +/area/medical/medbay_primary_storage) +"cGB" = ( +/obj/machinery/atmospherics/pipe/simple/hidden{ + dir = 6 + }, +/turf/simulated/floor, +/area/maintenance/cargo) +"cGC" = ( +/obj/machinery/door/firedoor/border_only, +/obj/machinery/door/airlock/medical{ + name = "Secondary Storage"; + req_access = list(5) + }, +/obj/structure/cable/green{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/turf/simulated/floor/tiled/steel_grid, +/area/medical/biostorage) +"cGD" = ( +/obj/structure/table/glass, +/obj/machinery/atmospherics/unary/vent_scrubber/on{ + dir = 1 + }, +/turf/simulated/floor/tiled/white, +/area/medical/medbay2) +"cGE" = ( +/obj/structure/bed/chair{ + dir = 8 + }, +/obj/machinery/newscaster{ + pixel_x = 30; + pixel_y = 0 + }, +/turf/simulated/floor/tiled/white, +/area/medical/medbay2) +"cGF" = ( +/obj/structure/undies_wardrobe, +/obj/structure/extinguisher_cabinet{ + pixel_y = -30 + }, +/turf/simulated/floor/tiled/freezer, +/area/medical/medical_restroom) +"cGG" = ( +/obj/machinery/atmospherics/unary/vent_pump/on{ + dir = 1 + }, +/obj/effect/floor_decal/steeldecal/steel_decals4{ + dir = 8 + }, +/obj/effect/floor_decal/steeldecal/steel_decals4{ + dir = 5 + }, +/turf/simulated/floor/tiled/freezer, +/area/medical/medical_restroom) +"cGH" = ( +/obj/machinery/door/window/westleft{ + name = "Shower" + }, +/obj/machinery/shower{ + dir = 8; + icon_state = "shower"; + pixel_x = -5; + pixel_y = -1 + }, +/obj/structure/curtain/open/shower/medical, +/turf/simulated/floor/tiled/freezer, +/area/medical/medical_restroom) +"cGI" = ( +/obj/machinery/conveyor{ + dir = 1; + id = "garbage" + }, +/obj/machinery/light/small{ + dir = 8 + }, +/turf/simulated/floor, +/area/maintenance/disposal) +"cGJ" = ( +/obj/effect/floor_decal/industrial/warning{ + dir = 9 + }, +/turf/simulated/floor, +/area/maintenance/disposal) +"cGK" = ( +/turf/simulated/floor, +/area/maintenance/disposal) +"cGL" = ( +/obj/item/device/radio/intercom{ + dir = 4; + name = "Station Intercom (General)"; + pixel_x = 21 + }, +/obj/machinery/firealarm{ + dir = 2; + layer = 3.3; + pixel_x = 0; + pixel_y = 26 + }, +/obj/effect/floor_decal/industrial/warning{ + icon_state = "warning"; + dir = 5 + }, +/turf/simulated/floor, +/area/maintenance/disposal) +"cGM" = ( +/obj/machinery/light/small{ + dir = 8 + }, +/turf/simulated/floor, +/area/maintenance/cargo) +"cGN" = ( +/obj/structure/cable{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/obj/effect/floor_decal/industrial/warning/corner{ + dir = 8 + }, +/obj/machinery/atmospherics/binary/pump/on{ + dir = 2; + target_pressure = 200 + }, +/turf/simulated/floor, +/area/maintenance/cargo) +"cGO" = ( +/turf/simulated/floor, +/area/maintenance/cargo) +"cGP" = ( +/obj/structure/reagent_dispensers/fueltank, +/turf/simulated/floor/plating, +/area/maintenance/cargo) +"cGQ" = ( +/obj/effect/wingrille_spawn/reinforced, +/turf/simulated/floor/plating, +/area/maintenance/cargo) +"cGR" = ( +/obj/machinery/portable_atmospherics/powered/scrubber, +/turf/simulated/floor/plating, +/area/maintenance/cargo) +"cGS" = ( +/obj/machinery/space_heater, +/turf/simulated/floor/plating, +/area/maintenance/cargo) +"cGT" = ( +/turf/simulated/wall, +/area/maintenance/cargo) +"cGU" = ( +/obj/structure/table/rack{ + dir = 8; + layer = 2.9 + }, +/obj/effect/floor_decal/corner/brown/full{ + dir = 8 + }, +/turf/simulated/floor/tiled/steel, +/area/maintenance/cargo) +"cGV" = ( +/obj/effect/floor_decal/corner/brown{ + dir = 1 + }, +/turf/simulated/floor/tiled/steel, +/area/maintenance/cargo) +"cGW" = ( +/obj/structure/disposalpipe/tagger/partial{ + dir = 1; + name = "Sorting Office"; + sort_tag = "Sorting Office" + }, +/obj/structure/closet/crate, +/obj/structure/extinguisher_cabinet{ + pixel_x = -28; + pixel_y = 0 + }, +/obj/effect/floor_decal/borderfloor{ + dir = 8 + }, +/obj/effect/floor_decal/corner/brown/border{ + dir = 8 + }, +/turf/simulated/floor/tiled, +/area/quartermaster/warehouse) +"cGX" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/turf/simulated/floor/tiled/steel, +/area/quartermaster/warehouse) +"cGY" = ( +/obj/machinery/atmospherics/unary/vent_pump/on, +/obj/effect/floor_decal/borderfloor/corner{ + dir = 4 + }, +/obj/effect/floor_decal/corner/brown/bordercorner{ + dir = 4 + }, +/turf/simulated/floor/tiled/steel, +/area/quartermaster/warehouse) +"cGZ" = ( +/obj/machinery/light/small{ + dir = 1 + }, +/obj/effect/floor_decal/borderfloor{ + dir = 1 + }, +/obj/effect/floor_decal/corner/brown/border{ + dir = 1 + }, +/turf/simulated/floor/tiled/steel, +/area/quartermaster/warehouse) +"cHa" = ( +/obj/machinery/button/remote/blast_door{ + id = "qm_warehouse"; + name = "Warehouse Door Control"; + pixel_x = 26; + pixel_y = 0; + req_access = list(31) + }, +/obj/effect/floor_decal/borderfloor{ + dir = 1 + }, +/obj/effect/floor_decal/corner/brown/border{ + dir = 1 + }, +/turf/simulated/floor/tiled, +/area/quartermaster/warehouse) +"cHb" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/obj/structure/cable/green{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/obj/machinery/button/remote/blast_door{ + id = "qm_warehouse"; + name = "Warehouse Door Control"; + pixel_x = -26; + pixel_y = 0; + req_access = list(31) + }, +/obj/effect/floor_decal/steeldecal/steel_decals4{ + dir = 4 + }, +/obj/effect/floor_decal/steeldecal/steel_decals4{ + dir = 9 + }, +/turf/simulated/floor/tiled, +/area/quartermaster/office) +"cHc" = ( +/obj/structure/table/steel, +/obj/fiftyspawner/steel, +/obj/fiftyspawner/glass, +/obj/item/weapon/storage/belt/utility, +/obj/item/weapon/storage/belt/utility, +/obj/item/device/multitool, +/obj/machinery/camera/network/cargo{ + c_tag = "CRG - Cargo Office Port"; + dir = 2; + name = "security camera" + }, +/obj/structure/disposalpipe/segment, +/obj/effect/floor_decal/borderfloor/corner{ + dir = 4 + }, +/obj/effect/floor_decal/corner/brown/bordercorner{ + dir = 4 + }, +/turf/simulated/floor/tiled, +/area/quartermaster/office) +"cHd" = ( +/obj/machinery/autolathe, +/obj/machinery/alarm{ + pixel_y = 23 + }, +/obj/effect/floor_decal/borderfloor{ + dir = 1 + }, +/obj/effect/floor_decal/corner/brown/border{ + dir = 1 + }, +/turf/simulated/floor/tiled, +/area/quartermaster/office) +"cHe" = ( +/obj/structure/table/steel, +/obj/item/weapon/folder/yellow, +/obj/item/weapon/stamp/denied{ + pixel_x = 4; + pixel_y = -2 + }, +/obj/item/weapon/stamp/cargo, +/obj/effect/floor_decal/borderfloor/corner{ + dir = 1 + }, +/obj/effect/floor_decal/corner/brown/bordercorner{ + dir = 1 + }, +/turf/simulated/floor/tiled, +/area/quartermaster/office) +"cHf" = ( +/obj/machinery/atmospherics/unary/vent_pump/on, +/turf/simulated/floor/tiled, +/area/quartermaster/office) +"cHg" = ( +/turf/simulated/floor/tiled, +/area/quartermaster/office) +"cHh" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/turf/simulated/floor/tiled, +/area/quartermaster/office) +"cHi" = ( +/obj/structure/cable/green{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/obj/machinery/atmospherics/unary/vent_scrubber/on, +/turf/simulated/floor/tiled, +/area/quartermaster/office) +"cHj" = ( +/obj/structure/disposalpipe/segment, +/obj/effect/floor_decal/borderfloor/corner{ + dir = 4 + }, +/obj/effect/floor_decal/corner/brown/bordercorner{ + dir = 4 + }, +/turf/simulated/floor/tiled, +/area/quartermaster/office) +"cHk" = ( +/obj/machinery/firealarm{ + pixel_y = 24 + }, +/obj/effect/floor_decal/borderfloor{ + dir = 1 + }, +/obj/effect/floor_decal/corner/brown/border{ + dir = 1 + }, +/turf/simulated/floor/tiled, +/area/quartermaster/office) +"cHl" = ( +/obj/machinery/camera/network/cargo{ + c_tag = "CRG - Cargo Office Starboard"; + dir = 2; + name = "security camera" + }, +/obj/effect/floor_decal/borderfloor/corner{ + dir = 1 + }, +/obj/effect/floor_decal/corner/brown/bordercorner{ + dir = 1 + }, +/turf/simulated/floor/tiled, +/area/quartermaster/office) +"cHm" = ( +/obj/structure/cable/green{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/effect/floor_decal/steeldecal/steel_decals4{ + dir = 9 + }, +/obj/effect/floor_decal/steeldecal/steel_decals4{ + dir = 4 + }, +/turf/simulated/floor/tiled, +/area/quartermaster/office) +"cHn" = ( +/obj/machinery/atmospherics/unary/vent_pump/on, +/obj/effect/floor_decal/borderfloor/corner{ + dir = 4 + }, +/obj/effect/floor_decal/corner/brown/bordercorner{ + dir = 4 + }, +/turf/simulated/floor/tiled, +/area/quartermaster/office) +"cHo" = ( +/obj/structure/disposalpipe/segment, +/obj/effect/floor_decal/borderfloor{ + dir = 1 + }, +/obj/effect/floor_decal/corner/brown/border{ + dir = 1 + }, +/turf/simulated/floor/tiled, +/area/quartermaster/office) +"cHp" = ( +/obj/machinery/power/apc{ + dir = 8; + name = "west bump"; + pixel_x = -24 + }, +/obj/machinery/light_switch{ + pixel_x = -36 + }, +/obj/structure/cable/green{ + d2 = 2; + icon_state = "0-2" + }, +/obj/effect/floor_decal/industrial/warning/corner{ + icon_state = "warningcorner"; + dir = 4 + }, +/turf/simulated/floor/tiled, +/area/quartermaster/lockerroom) +"cHq" = ( +/obj/effect/floor_decal/industrial/warning{ + dir = 1 + }, +/turf/simulated/floor/tiled, +/area/quartermaster/lockerroom) +"cHr" = ( +/obj/machinery/atmospherics/unary/vent_scrubber/on, +/obj/effect/floor_decal/industrial/warning{ + dir = 1 + }, +/turf/simulated/floor/tiled, +/area/quartermaster/lockerroom) +"cHs" = ( +/obj/machinery/firealarm{ + dir = 4; + pixel_x = 24 + }, +/obj/structure/disposalpipe/segment, +/obj/effect/floor_decal/industrial/warning/corner{ + icon_state = "warningcorner"; + dir = 1 + }, +/turf/simulated/floor/tiled, +/area/quartermaster/lockerroom) +"cHt" = ( +/obj/machinery/door/blast/regular{ + density = 0; + dir = 1; + icon_state = "pdoor0"; + id = "crglockdown"; + name = "Cargo Lockdown"; + opacity = 0 + }, +/turf/simulated/floor/plating, +/area/maintenance/bar) +"cHu" = ( +/obj/effect/floor_decal/industrial/warning{ + dir = 8 + }, +/turf/simulated/floor/plating, +/area/maintenance/bar) +"cHv" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 6 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 6 + }, +/obj/structure/cable{ + d1 = 2; + d2 = 4; + icon_state = "2-4" + }, +/turf/simulated/floor/plating, +/area/maintenance/bar) +"cHw" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, +/obj/structure/cable{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/turf/simulated/floor/plating, +/area/maintenance/bar) +"cHx" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 9 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 9; + pixel_y = 0 + }, +/obj/structure/cable{ + d1 = 1; + d2 = 8; + icon_state = "1-8" + }, +/turf/simulated/floor/plating, +/area/maintenance/bar) +"cHy" = ( +/obj/structure/flora/ausbushes/ppflowers, +/turf/simulated/floor/grass, +/area/hallway/primary/seconddeck/apcenter) +"cHz" = ( +/obj/structure/flora/ausbushes/ywflowers, +/obj/machinery/light, +/turf/simulated/floor/grass, +/area/hallway/primary/seconddeck/apcenter) +"cHA" = ( +/obj/structure/bed/chair{ + dir = 4 + }, +/obj/effect/floor_decal/spline/plain{ + dir = 1 + }, +/turf/simulated/floor/tiled/hydro, +/area/hallway/primary/seconddeck/apcenter) +"cHB" = ( +/obj/structure/table/woodentable, +/obj/effect/floor_decal/spline/plain{ + dir = 1 + }, +/turf/simulated/floor/tiled/hydro, +/area/hallway/primary/seconddeck/apcenter) +"cHC" = ( +/obj/structure/bed/chair{ + dir = 8 + }, +/obj/effect/floor_decal/spline/plain{ + dir = 1 + }, +/turf/simulated/floor/tiled/hydro, +/area/hallway/primary/seconddeck/apcenter) +"cHD" = ( +/obj/structure/flora/ausbushes/ywflowers, +/turf/simulated/floor/grass, +/area/hallway/primary/seconddeck/apcenter) +"cHE" = ( +/obj/effect/wingrille_spawn/reinforced, +/obj/machinery/door/firedoor/border_only, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/obj/structure/cable{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/turf/simulated/floor/plating, +/area/hallway/primary/seconddeck/apcenter) +"cHF" = ( +/obj/structure/flora/ausbushes/brflowers, +/turf/simulated/floor/grass, +/area/hallway/primary/seconddeck/ascenter) +"cHG" = ( +/obj/structure/bed/chair{ + dir = 4 + }, +/obj/effect/floor_decal/spline/plain{ + dir = 1 + }, +/turf/simulated/floor/tiled/hydro, +/area/hallway/primary/seconddeck/ascenter) +"cHH" = ( +/obj/structure/table/woodentable, +/obj/effect/floor_decal/spline/plain{ + dir = 1 + }, +/obj/item/device/communicator, +/turf/simulated/floor/tiled/hydro, +/area/hallway/primary/seconddeck/ascenter) +"cHI" = ( +/obj/structure/bed/chair{ + dir = 8 + }, +/obj/effect/floor_decal/spline/plain{ + dir = 1 + }, +/turf/simulated/floor/tiled/hydro, +/area/hallway/primary/seconddeck/ascenter) +"cHJ" = ( +/obj/structure/flora/ausbushes/ppflowers, +/turf/simulated/floor/grass, +/area/hallway/primary/seconddeck/ascenter) +"cHK" = ( +/obj/structure/flora/ausbushes/ywflowers, +/obj/machinery/light, +/turf/simulated/floor/grass, +/area/hallway/primary/seconddeck/ascenter) +"cHL" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 5 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 5 + }, +/obj/structure/cable{ + d1 = 1; + d2 = 4; + icon_state = "1-4" + }, +/turf/simulated/floor/plating, +/area/maintenance/medbay) +"cHM" = ( +/obj/effect/floor_decal/industrial/warning{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 10 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 10 + }, +/obj/structure/cable{ + d1 = 2; + d2 = 8; + icon_state = "2-8" + }, +/turf/simulated/floor/plating, +/area/maintenance/medbay) +"cHN" = ( +/obj/machinery/door/firedoor/border_only, +/obj/machinery/door/airlock/maintenance{ + name = "Medbay Maintenance Access"; + req_access = list(5) + }, +/turf/simulated/floor/plating, +/area/medical/medbay) +"cHO" = ( +/obj/structure/cable/green{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/obj/effect/floor_decal/steeldecal/steel_decals4{ + dir = 6 + }, +/obj/effect/floor_decal/steeldecal/steel_decals4{ + dir = 1 + }, +/turf/simulated/floor/tiled/white, +/area/medical/medbay) +"cHP" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 5 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/turf/simulated/floor/tiled/white, +/area/medical/medbay) +"cHQ" = ( +/obj/machinery/atmospherics/pipe/manifold/hidden/supply{ + dir = 1 + }, +/turf/simulated/floor/tiled/white, +/area/medical/medbay) +"cHR" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/obj/structure/disposalpipe/segment{ + dir = 4; + icon_state = "pipe-c" + }, +/turf/simulated/floor/tiled/white, +/area/medical/medbay) +"cHS" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/turf/simulated/floor/tiled/white, +/area/medical/medbay) +"cHT" = ( +/obj/machinery/atmospherics/pipe/manifold4w/hidden/supply, +/obj/structure/cable/green{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/obj/structure/cable/green{ + d1 = 2; + d2 = 4; + icon_state = "2-4" + }, +/obj/machinery/hologram/holopad, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/turf/simulated/floor/tiled/white, +/area/medical/medbay) +"cHU" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/obj/structure/cable/green{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/effect/floor_decal/borderfloorwhite/corner{ + dir = 4 + }, +/obj/effect/floor_decal/corner/paleblue/bordercorner{ + dir = 4 + }, +/turf/simulated/floor/tiled/white, +/area/medical/medbay) +"cHV" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/obj/structure/cable/green{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/obj/machinery/firealarm{ + pixel_y = 24 + }, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/effect/floor_decal/borderfloorwhite{ + dir = 1 + }, +/obj/effect/floor_decal/corner/paleblue/border{ + dir = 1 + }, +/turf/simulated/floor/tiled/white, +/area/medical/medbay) +"cHW" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/obj/structure/cable/green{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/obj/machinery/door/firedoor/glass, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/effect/floor_decal/borderfloorwhite{ + dir = 1 + }, +/obj/effect/floor_decal/corner/paleblue/border{ + dir = 1 + }, +/turf/simulated/floor/tiled/white, +/area/medical/medbay) +"cHX" = ( +/obj/machinery/atmospherics/pipe/manifold/hidden/supply{ + dir = 1 + }, +/obj/structure/cable/green{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/effect/floor_decal/borderfloorwhite{ + dir = 1 + }, +/obj/effect/floor_decal/corner/paleblue/border{ + dir = 1 + }, +/turf/simulated/floor/tiled/white, +/area/medical/medbay) +"cHY" = ( +/obj/machinery/atmospherics/unary/vent_scrubber/on, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/obj/structure/cable/green{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/effect/floor_decal/borderfloorwhite{ + dir = 1 + }, +/obj/effect/floor_decal/corner/paleblue/border{ + dir = 1 + }, +/turf/simulated/floor/tiled/white, +/area/medical/medbay) +"cHZ" = ( +/obj/machinery/atmospherics/pipe/manifold/hidden/supply{ + dir = 1 + }, +/obj/structure/cable/green{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/obj/machinery/light{ + dir = 1 + }, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/effect/floor_decal/borderfloorwhite/corner{ + dir = 1 + }, +/obj/effect/floor_decal/corner/paleblue/bordercorner{ + dir = 1 + }, +/turf/simulated/floor/tiled/white, +/area/medical/medbay) +"cIa" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/obj/machinery/atmospherics/pipe/manifold/hidden/supply, +/obj/structure/cable/green{ + d1 = 1; + d2 = 8; + icon_state = "1-8" + }, +/obj/structure/cable/green{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/effect/floor_decal/steeldecal/steel_decals4{ + dir = 9 + }, +/obj/effect/floor_decal/steeldecal/steel_decals4{ + dir = 4 + }, +/turf/simulated/floor/tiled/white, +/area/medical/medbay) +"cIb" = ( +/obj/machinery/computer/guestpass{ + pixel_x = 0; + pixel_y = 30 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/obj/structure/cable/green{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/effect/floor_decal/borderfloorwhite{ + dir = 1 + }, +/obj/effect/floor_decal/corner/paleblue/border{ + dir = 1 + }, +/turf/simulated/floor/tiled/white, +/area/medical/medbay) +"cIc" = ( +/obj/machinery/atmospherics/pipe/manifold/hidden/supply{ + dir = 1 + }, +/obj/structure/cable/green{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/effect/floor_decal/borderfloorwhite/corner{ + dir = 1 + }, +/obj/effect/floor_decal/corner/paleblue/bordercorner{ + dir = 1 + }, +/obj/effect/floor_decal/corner_steel_grid{ + dir = 4 + }, +/turf/simulated/floor/tiled/white, +/area/medical/medbay) +"cId" = ( +/obj/structure/cable/green{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/obj/structure/cable/green{ + d1 = 2; + d2 = 8; + icon_state = "2-8" + }, +/obj/machinery/atmospherics/pipe/manifold/hidden/supply{ + dir = 1 + }, +/obj/structure/disposalpipe/sortjunction/flipped{ + dir = 1; + name = "CMO Office"; + sortType = "CMO Office" + }, +/obj/effect/floor_decal/corner_steel_grid{ + dir = 5 + }, +/turf/simulated/floor/tiled/white, +/area/medical/medbay) +"cIe" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/obj/structure/cable/green{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/obj/machinery/light{ + dir = 1 + }, +/obj/effect/floor_decal/corner_steel_grid{ + dir = 5 + }, +/turf/simulated/floor/tiled/white, +/area/medical/medbay) +"cIf" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/obj/structure/cable/green{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/obj/effect/floor_decal/corner_steel_grid{ + dir = 5 + }, +/turf/simulated/floor/tiled/white, +/area/medical/medbay) +"cIg" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/obj/structure/cable/green{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/obj/effect/floor_decal/borderfloorwhite/corner{ + dir = 4 + }, +/obj/effect/floor_decal/corner/paleblue/bordercorner{ + dir = 4 + }, +/obj/effect/floor_decal/corner_steel_grid{ + dir = 1 + }, +/turf/simulated/floor/tiled/white, +/area/medical/medbay) +"cIh" = ( +/obj/machinery/button/remote/airlock{ + desc = "A remote control switch for the medbay foyer."; + id = "MedbayFoyer"; + name = "Medbay Doors Control"; + pixel_x = 0; + pixel_y = 24 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/obj/structure/cable/green{ + d1 = 2; + d2 = 8; + icon_state = "2-8" + }, +/obj/structure/cable/green{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/obj/effect/floor_decal/borderfloorwhite{ + dir = 1 + }, +/obj/machinery/atmospherics/unary/vent_scrubber/on, +/obj/effect/floor_decal/corner/paleblue/border{ + dir = 1 + }, +/turf/simulated/floor/tiled/white, +/area/medical/medbay) +"cIi" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/obj/structure/cable/green{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/obj/effect/floor_decal/borderfloorwhite{ + dir = 1 + }, +/obj/effect/floor_decal/corner/paleblue/border{ + dir = 1 + }, +/turf/simulated/floor/tiled/white, +/area/medical/medbay) +"cIj" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/obj/structure/cable/green{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/obj/machinery/light{ + dir = 1 + }, +/obj/effect/floor_decal/borderfloorwhite/corner{ + dir = 1 + }, +/obj/effect/floor_decal/corner/paleblue/bordercorner{ + dir = 1 + }, +/turf/simulated/floor/tiled/white, +/area/medical/medbay) +"cIk" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/obj/machinery/atmospherics/pipe/manifold/hidden/supply, +/obj/structure/cable/green{ + d1 = 1; + d2 = 8; + icon_state = "1-8" + }, +/obj/structure/cable/green{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/obj/structure/disposalpipe/segment, +/obj/effect/floor_decal/steeldecal/steel_decals4{ + dir = 9 + }, +/obj/effect/floor_decal/steeldecal/steel_decals4{ + dir = 4 + }, +/turf/simulated/floor/tiled/white, +/area/medical/medbay) +"cIl" = ( +/obj/machinery/atmospherics/unary/vent_scrubber/on, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/obj/structure/cable/green{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/obj/effect/floor_decal/borderfloorwhite/corner{ + dir = 4 + }, +/obj/effect/floor_decal/corner/paleblue/bordercorner{ + dir = 4 + }, +/turf/simulated/floor/tiled/white, +/area/medical/medbay) +"cIm" = ( +/obj/machinery/atmospherics/pipe/manifold/hidden/supply{ + dir = 1 + }, +/obj/structure/cable/green{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/obj/effect/floor_decal/borderfloorwhite{ + dir = 1 + }, +/obj/effect/floor_decal/corner/paleblue/border{ + dir = 1 + }, +/turf/simulated/floor/tiled/white, +/area/medical/medbay) +"cIn" = ( +/obj/machinery/door/firedoor/border_only, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/obj/structure/cable/green{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/obj/effect/floor_decal/borderfloorwhite{ + dir = 1 + }, +/obj/effect/floor_decal/corner/paleblue/border{ + dir = 1 + }, +/turf/simulated/floor/tiled/white, +/area/medical/medbay2) +"cIo" = ( +/obj/structure/cable/green{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/obj/effect/floor_decal/borderfloorwhite/corner{ + dir = 1 + }, +/obj/effect/floor_decal/corner/paleblue/bordercorner{ + dir = 1 + }, +/turf/simulated/floor/tiled/white, +/area/medical/medbay2) +"cIp" = ( +/obj/structure/cable/green{ + d1 = 1; + d2 = 8; + icon_state = "1-8" + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/obj/machinery/atmospherics/pipe/manifold/hidden/supply, +/obj/structure/cable/green{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/obj/effect/floor_decal/steeldecal/steel_decals4{ + dir = 9 + }, +/obj/effect/floor_decal/steeldecal/steel_decals4{ + dir = 4 + }, +/turf/simulated/floor/tiled/white, +/area/medical/medbay2) +"cIq" = ( +/obj/machinery/atmospherics/pipe/manifold/hidden/supply{ + dir = 1 + }, +/obj/structure/cable/green{ + d1 = 2; + d2 = 8; + icon_state = "2-8" + }, +/obj/structure/cable/green{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/obj/structure/disposalpipe/segment, +/obj/effect/floor_decal/borderfloorwhite/corner{ + dir = 4 + }, +/obj/effect/floor_decal/corner/paleblue/bordercorner{ + dir = 4 + }, +/turf/simulated/floor/tiled/white, +/area/medical/medbay2) +"cIr" = ( +/obj/machinery/atmospherics/unary/vent_scrubber/on, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/obj/structure/cable/green{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/obj/machinery/light{ + dir = 1 + }, +/obj/effect/floor_decal/borderfloorwhite{ + dir = 1 + }, +/obj/effect/floor_decal/corner/paleblue/border{ + dir = 1 + }, +/turf/simulated/floor/tiled/white, +/area/medical/medbay2) +"cIs" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/obj/structure/cable/green{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/obj/effect/floor_decal/borderfloorwhite/corner{ + dir = 1 + }, +/obj/effect/floor_decal/corner/paleblue/bordercorner{ + dir = 1 + }, +/turf/simulated/floor/tiled/white, +/area/medical/medbay2) +"cIt" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/yellow{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/yellow, +/obj/structure/cable/green{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/turf/simulated/floor/tiled/hydro, +/area/rnd/xenobiology/xenoflora) +"cIu" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/obj/structure/cable/green{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/obj/effect/floor_decal/borderfloorwhite/corner{ + dir = 4 + }, +/obj/effect/floor_decal/corner/paleblue/bordercorner{ + dir = 4 + }, +/turf/simulated/floor/tiled/white, +/area/medical/medbay2) +"cIv" = ( +/obj/machinery/atmospherics/pipe/manifold/hidden/supply{ + dir = 1 + }, +/obj/structure/extinguisher_cabinet{ + pixel_y = 30 + }, +/obj/structure/cable/green{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/obj/effect/floor_decal/borderfloorwhite{ + dir = 1 + }, +/obj/effect/floor_decal/corner/paleblue/border{ + dir = 1 + }, +/turf/simulated/floor/tiled/white, +/area/medical/medbay2) +"cIw" = ( +/obj/structure/cable/green{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/obj/machinery/atmospherics/pipe/manifold/hidden/supply, +/obj/effect/floor_decal/borderfloorwhite/corner{ + dir = 1 + }, +/obj/effect/floor_decal/corner/paleblue/bordercorner{ + dir = 1 + }, +/turf/simulated/floor/tiled/white, +/area/medical/medbay2) +"cIx" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/obj/structure/cable/green{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/obj/structure/cable/green{ + d1 = 1; + d2 = 8; + icon_state = "1-8" + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/obj/structure/disposalpipe/junction{ + icon_state = "pipe-j2"; + dir = 2 + }, +/turf/simulated/floor/tiled/white, +/area/medical/medbay2) +"cIy" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/obj/structure/cable/green{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/turf/simulated/floor/tiled/white, +/area/medical/medbay2) +"cIz" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 10 + }, +/obj/structure/cable/green{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/obj/structure/disposalpipe/segment{ + dir = 2; + icon_state = "pipe-c" + }, +/turf/simulated/floor/tiled/white, +/area/medical/medbay2) +"cIA" = ( +/obj/item/device/radio/intercom{ + dir = 4; + name = "Station Intercom (General)"; + pixel_x = 21 + }, +/obj/structure/cable/green{ + d1 = 2; + d2 = 8; + icon_state = "2-8" + }, +/turf/simulated/floor/tiled/white, +/area/medical/medbay2) +"cIB" = ( +/obj/machinery/door/firedoor, +/obj/machinery/door/airlock{ + name = "Medical Restroom"; + req_access = list(5) + }, +/turf/simulated/floor/tiled/steel_grid, +/area/medical/medical_restroom) +"cIC" = ( +/obj/structure/disposalpipe/trunk{ + dir = 4 + }, +/obj/machinery/disposal/deliveryChute{ + dir = 1 + }, +/obj/structure/window/reinforced, +/turf/simulated/floor, +/area/maintenance/disposal) +"cID" = ( +/obj/structure/disposalpipe/segment{ + dir = 2; + icon_state = "pipe-c" + }, +/obj/machinery/door/firedoor/border_only, +/obj/effect/wingrille_spawn/reinforced, +/turf/simulated/floor, +/area/maintenance/disposal) +"cIE" = ( +/obj/machinery/light/small{ + dir = 8 + }, +/turf/simulated/floor, +/area/maintenance/disposal) +"cIF" = ( +/obj/structure/cable{ + d1 = 2; + d2 = 4; + icon_state = "2-4" + }, +/turf/simulated/floor, +/area/maintenance/disposal) +"cIG" = ( +/obj/machinery/door/firedoor/border_only, +/obj/machinery/door/airlock/maintenance{ + name = "Disposal Access"; + req_access = list(12) + }, +/obj/structure/cable{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/turf/simulated/floor, +/area/maintenance/disposal) +"cIH" = ( +/obj/structure/cable{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/obj/effect/floor_decal/industrial/warning, +/turf/simulated/floor, +/area/maintenance/cargo) +"cII" = ( +/obj/structure/cable/green{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/obj/machinery/door/firedoor, +/obj/machinery/door/airlock/engineering{ + name = "Medbay Substation"; + req_access = list(5); + req_one_access = null + }, +/turf/simulated/floor/plating, +/area/maintenance/substation/medical) +"cIJ" = ( +/obj/structure/cable{ + d1 = 1; + d2 = 8; + icon_state = "1-8" + }, +/obj/structure/cable{ + d1 = 1; + d2 = 2; + icon_state = "1-2"; + pixel_y = 0 + }, +/turf/simulated/floor, +/area/maintenance/cargo) +"cIK" = ( +/obj/structure/reagent_dispensers/watertank, +/turf/simulated/floor/plating, +/area/maintenance/cargo) +"cIL" = ( +/obj/effect/floor_decal/corner/brown{ + dir = 1 + }, +/obj/item/frame/light/small, +/turf/simulated/floor/tiled, +/area/maintenance/cargo) +"cIM" = ( +/turf/simulated/floor/plating, +/area/maintenance/cargo) +"cIN" = ( +/obj/structure/disposalpipe/segment{ + dir = 1; + icon_state = "pipe-c" + }, +/obj/structure/closet/crate, +/obj/machinery/camera/network/cargo{ + c_tag = "CRG - Cargo Warehouse"; + dir = 4; + name = "security camera" + }, +/obj/effect/floor_decal/borderfloor{ + dir = 8 + }, +/obj/effect/floor_decal/corner/brown/border{ + dir = 8 + }, +/turf/simulated/floor/tiled, +/area/quartermaster/warehouse) +"cIO" = ( +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 5 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 5 + }, +/turf/simulated/floor/tiled, +/area/quartermaster/warehouse) +"cIP" = ( +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/manifold/hidden/supply, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, +/turf/simulated/floor/tiled, +/area/quartermaster/warehouse) +"cIQ" = ( +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{ + dir = 1 + }, +/turf/simulated/floor/tiled, +/area/quartermaster/warehouse) +"cIR" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/obj/structure/cable/green{ + d1 = 2; + d2 = 4; + icon_state = "2-4" + }, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/turf/simulated/floor/tiled, +/area/quartermaster/warehouse) +"cIS" = ( +/obj/machinery/door/firedoor/border_only, +/obj/machinery/door/blast/shutters{ + dir = 4; + id = "qm_warehouse"; + name = "Warehouse Shutters" + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/obj/structure/cable/green{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/turf/simulated/floor/tiled, +/area/quartermaster/warehouse) +"cIT" = ( +/obj/structure/cable/green{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/obj/structure/cable/green{ + d1 = 1; + d2 = 4; + icon_state = "1-4" + }, +/obj/machinery/atmospherics/pipe/manifold/hidden/supply, +/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/turf/simulated/floor/tiled, +/area/quartermaster/office) +"cIU" = ( +/obj/structure/cable/green{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{ + dir = 1 + }, +/obj/structure/disposalpipe/sortjunction{ + dir = 8; + icon_state = "pipe-j1s"; + name = "Sorting Office"; + sortType = "Sorting Office" + }, +/turf/simulated/floor/tiled, +/area/quartermaster/office) +"cIV" = ( +/obj/structure/cable/green{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/turf/simulated/floor/tiled, +/area/quartermaster/office) +"cIW" = ( +/obj/structure/cable/green{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/manifold/hidden/supply{ + dir = 1 + }, +/turf/simulated/floor/tiled, +/area/quartermaster/office) +"cIX" = ( +/obj/structure/cable/green{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/obj/machinery/atmospherics/pipe/manifold/hidden/supply, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/turf/simulated/floor/tiled, +/area/quartermaster/office) +"cIY" = ( +/obj/structure/cable/green{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/obj/machinery/atmospherics/pipe/manifold/hidden/supply, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/manifold4w/hidden/scrubbers, +/turf/simulated/floor/tiled, +/area/quartermaster/office) +"cIZ" = ( +/obj/structure/cable/green{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/obj/structure/cable/green{ + d1 = 1; + d2 = 4; + icon_state = "1-4" + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/structure/cable/green{ + d1 = 2; + d2 = 4; + icon_state = "2-4" + }, +/turf/simulated/floor/tiled, +/area/quartermaster/office) +"cJa" = ( +/obj/structure/cable/green{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, +/obj/structure/disposalpipe/sortjunction{ + dir = 8; + icon_state = "pipe-j1s"; + name = "Cargo Bay"; + sortType = "Cargo Bay" + }, +/turf/simulated/floor/tiled, +/area/quartermaster/office) +"cJb" = ( +/obj/structure/cable/green{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/machinery/computer/guestpass{ + pixel_x = 0; + pixel_y = -30 + }, +/turf/simulated/floor/tiled, +/area/quartermaster/office) +"cJc" = ( +/obj/structure/cable/green{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, +/turf/simulated/floor/tiled, +/area/quartermaster/office) +"cJd" = ( +/obj/structure/cable/green{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/manifold/hidden/supply, +/turf/simulated/floor/tiled, +/area/quartermaster/office) +"cJe" = ( +/obj/structure/cable/green{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, +/obj/structure/disposalpipe/sortjunction{ + dir = 8; + icon_state = "pipe-j1s"; + name = "QM Office"; + sortType = "QM Office" + }, +/obj/effect/floor_decal/steeldecal/steel_decals4, +/obj/effect/floor_decal/steeldecal/steel_decals4{ + dir = 10 + }, +/turf/simulated/floor/tiled, +/area/quartermaster/office) +"cJf" = ( +/obj/structure/cable/green{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/obj/machinery/door/firedoor/glass, +/obj/machinery/door/airlock/glass_mining{ + id_tag = "cargodoor"; + name = "Cargo Office"; + req_access = list(50) + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/turf/simulated/floor/tiled/steel_grid, +/area/quartermaster/lockerroom) +"cJg" = ( +/obj/structure/cable/green{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, +/obj/structure/cable/green{ + d1 = 1; + d2 = 4; + icon_state = "1-4" + }, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/effect/floor_decal/steeldecal/steel_decals4{ + dir = 1 + }, +/obj/effect/floor_decal/steeldecal/steel_decals4{ + dir = 6 + }, +/turf/simulated/floor/tiled, +/area/quartermaster/lockerroom) +"cJh" = ( +/obj/machinery/atmospherics/pipe/manifold/hidden/supply{ + dir = 1 + }, +/obj/structure/cable/green{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/turf/simulated/floor/tiled, +/area/quartermaster/lockerroom) +"cJi" = ( +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 10 + }, +/obj/structure/cable/green{ + d1 = 2; + d2 = 8; + icon_state = "2-8" + }, +/turf/simulated/floor/tiled, +/area/quartermaster/lockerroom) +"cJj" = ( +/obj/structure/disposalpipe/segment{ + dir = 8; + icon_state = "pipe-c" + }, +/obj/effect/floor_decal/steeldecal/steel_decals4, +/obj/effect/floor_decal/steeldecal/steel_decals4{ + dir = 10 + }, +/turf/simulated/floor/tiled/steel, +/area/quartermaster/lockerroom) +"cJk" = ( +/obj/machinery/door/firedoor/border_only, +/obj/machinery/door/airlock/maintenance{ + name = "Cargo Maintenance"; + req_access = list(50) + }, +/turf/simulated/floor/plating, +/area/quartermaster/lockerroom) +"cJl" = ( +/obj/random/trash, +/turf/simulated/floor/plating, +/area/maintenance/bar) +"cJm" = ( +/obj/structure/flora/ausbushes/brflowers, +/obj/machinery/firealarm{ + dir = 1; + pixel_x = 0; + pixel_y = -24 + }, +/turf/simulated/floor/grass, +/area/hallway/primary/seconddeck/apcenter) +"cJn" = ( +/obj/structure/bed/chair{ + dir = 4 + }, +/turf/simulated/floor/tiled/hydro, +/area/hallway/primary/seconddeck/apcenter) +"cJo" = ( +/obj/structure/table/woodentable, +/obj/machinery/camera/network/second_deck{ + c_tag = "Second Deck - Center Five"; + dir = 1 + }, +/obj/item/clothing/accessory/scarf/christmas, +/turf/simulated/floor/tiled/hydro, +/area/hallway/primary/seconddeck/apcenter) +"cJp" = ( +/obj/structure/bed/chair{ + dir = 8 + }, +/turf/simulated/floor/tiled/hydro, +/area/hallway/primary/seconddeck/apcenter) +"cJq" = ( +/obj/structure/sign/directions/engineering{ + dir = 8; + pixel_y = 10 + }, +/obj/structure/sign/directions/cargo{ + dir = 8 + }, +/obj/structure/sign/directions/security{ + dir = 8; + pixel_y = -10 + }, +/turf/simulated/wall, +/area/hallway/primary/seconddeck/apcenter) +"cJr" = ( +/obj/structure/sign/directions/bridge{ + dir = 1; + pixel_y = 10 + }, +/obj/structure/sign/directions/science{ + dir = 4 + }, +/obj/structure/sign/directions/medical{ + dir = 4; + pixel_y = -10 + }, +/turf/simulated/wall, +/area/hallway/primary/seconddeck/apcenter) +"cJs" = ( +/obj/structure/bed/chair{ + dir = 4 + }, +/turf/simulated/floor/tiled/hydro, +/area/hallway/primary/seconddeck/ascenter) +"cJt" = ( +/obj/structure/table/woodentable, +/obj/item/weapon/book/codex/lore/vir, +/obj/machinery/camera/network/second_deck{ + c_tag = "Second Deck - Center Four"; + dir = 1 + }, +/turf/simulated/floor/tiled/hydro, +/area/hallway/primary/seconddeck/ascenter) +"cJu" = ( +/obj/structure/bed/chair{ + dir = 8 + }, +/turf/simulated/floor/tiled/hydro, +/area/hallway/primary/seconddeck/ascenter) +"cJv" = ( +/obj/structure/flora/ausbushes/brflowers, +/obj/machinery/firealarm{ + dir = 1; + pixel_x = 0; + pixel_y = -24 + }, +/turf/simulated/floor/grass, +/area/hallway/primary/seconddeck/ascenter) +"cJw" = ( +/obj/structure/closet/crate, +/obj/item/clothing/shoes/boots/combat, +/obj/item/weapon/tank/air, +/obj/item/weapon/tank/air, +/obj/item/weapon/tank/air, +/obj/item/clothing/mask/gas, +/obj/effect/decal/cleanable/dirt, +/obj/random/maintenance/cargo, +/obj/random/maintenance/medical, +/turf/simulated/floor/plating, +/area/maintenance/medbay) +"cJx" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/yellow{ + dir = 4 + }, +/obj/machinery/atmospherics/unary/vent_pump/on, +/turf/simulated/floor/tiled/hydro, +/area/rnd/xenobiology/xenoflora_isolation) +"cJy" = ( +/obj/structure/cable/green{ + d1 = 2; + d2 = 4; + icon_state = "2-4" + }, +/obj/structure/cable/green{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/obj/item/device/radio/intercom{ + dir = 8; + name = "Station Intercom (General)"; + pixel_x = -21 + }, +/obj/effect/floor_decal/industrial/warning, +/turf/simulated/floor/tiled/white, +/area/medical/medbay) +"cJz" = ( +/obj/structure/sign/warning/high_voltage{ + pixel_y = -32 + }, +/obj/structure/cable/green{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 5 + }, +/obj/effect/floor_decal/borderfloorwhite/corner, +/obj/effect/floor_decal/corner/paleblue/bordercorner, +/obj/effect/floor_decal/industrial/warning/corner{ + icon_state = "warningcorner"; + dir = 8 + }, +/turf/simulated/floor/tiled/white, +/area/medical/medbay) +"cJA" = ( +/obj/machinery/atmospherics/unary/vent_pump/on{ + dir = 1 + }, +/obj/structure/cable/green{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/obj/machinery/alarm{ + dir = 1; + icon_state = "alarm0"; + pixel_y = -22 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, +/obj/effect/floor_decal/borderfloorwhite, +/obj/effect/floor_decal/corner/paleblue/border, +/turf/simulated/floor/tiled/white, +/area/medical/medbay) +"cJB" = ( +/obj/structure/cable/green{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/obj/machinery/light, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, +/obj/structure/disposalpipe/segment, +/obj/effect/floor_decal/borderfloorwhite, +/obj/effect/floor_decal/corner/paleblue/border, +/turf/simulated/floor/tiled/white, +/area/medical/medbay) +"cJC" = ( +/obj/structure/cable/green{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers, +/obj/effect/floor_decal/borderfloorwhite/corner{ + dir = 8 + }, +/obj/effect/floor_decal/corner/paleblue/bordercorner{ + dir = 8 + }, +/turf/simulated/floor/tiled/white, +/area/medical/medbay) +"cJD" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/obj/structure/cable/green{ + d1 = 2; + d2 = 8; + icon_state = "2-8" + }, +/obj/structure/cable/green{ + d1 = 1; + d2 = 8; + icon_state = "1-8" + }, +/obj/machinery/atmospherics/pipe/manifold4w/hidden/scrubbers, +/obj/effect/floor_decal/steeldecal/steel_decals4{ + dir = 8 + }, +/obj/effect/floor_decal/steeldecal/steel_decals4{ + dir = 5 + }, +/turf/simulated/floor/tiled/white, +/area/medical/medbay) +"cJE" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, +/obj/effect/floor_decal/borderfloorwhite/corner, +/obj/effect/floor_decal/corner/paleblue/bordercorner, +/turf/simulated/floor/tiled/white, +/area/medical/medbay) +"cJF" = ( +/obj/machinery/camera/network/medbay{ + c_tag = "MED - Medical Hallway Port 1"; + dir = 1 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, +/obj/effect/floor_decal/borderfloorwhite, +/obj/effect/floor_decal/corner/paleblue/border, +/turf/simulated/floor/tiled/white, +/area/medical/medbay) +"cJG" = ( +/obj/machinery/door/firedoor/glass, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, +/obj/structure/sign/goldenplaque{ + desc = "Done No Harm."; + name = "Best Doctor 2552"; + pixel_y = -32 + }, +/obj/effect/floor_decal/borderfloorwhite, +/obj/effect/floor_decal/corner/paleblue/border, +/turf/simulated/floor/tiled/white, +/area/medical/medbay) +"cJH" = ( +/obj/machinery/atmospherics/unary/vent_pump/on{ + dir = 1 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, +/obj/item/device/radio/intercom/department/medbay{ + dir = 1; + pixel_x = 0; + pixel_y = -21 + }, +/obj/effect/floor_decal/borderfloorwhite/corner{ + dir = 8 + }, +/obj/effect/floor_decal/corner/paleblue/bordercorner{ + dir = 8 + }, +/turf/simulated/floor/tiled/white, +/area/medical/medbay) +"cJI" = ( +/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers, +/turf/simulated/floor/tiled/white, +/area/medical/medbay) +"cJJ" = ( +/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{ + dir = 1 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/turf/simulated/floor/tiled/white, +/area/medical/medbay) +"cJK" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, +/obj/machinery/alarm{ + dir = 1; + icon_state = "alarm0"; + pixel_y = -22 + }, +/obj/effect/floor_decal/borderfloorwhite, +/obj/effect/floor_decal/corner/paleblue/border, +/turf/simulated/floor/tiled/white, +/area/medical/medbay) +"cJL" = ( +/obj/machinery/atmospherics/unary/vent_pump/on{ + dir = 1 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, +/obj/effect/floor_decal/borderfloorwhite/corner{ + dir = 8 + }, +/obj/effect/floor_decal/corner/paleblue/bordercorner{ + dir = 8 + }, +/turf/simulated/floor/tiled/white, +/area/medical/medbay) +"cJM" = ( +/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{ + dir = 1 + }, +/obj/structure/cable/green{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/structure/disposalpipe/segment{ + dir = 1; + icon_state = "pipe-c" + }, +/turf/simulated/floor/tiled/white, +/area/medical/medbay) +"cJN" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/turf/simulated/floor/tiled/white, +/area/medical/medbay) +"cJO" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, +/obj/structure/disposalpipe/junction{ + dir = 8; + icon_state = "pipe-j2" + }, +/turf/simulated/floor/tiled/white, +/area/medical/medbay) +"cJP" = ( +/obj/machinery/firealarm{ + dir = 1; + pixel_y = -24 + }, +/obj/machinery/camera/network/medbay{ + c_tag = "MED - Medical Hallway Port 2"; + dir = 1 + }, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/effect/floor_decal/borderfloorwhite/corner, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, +/obj/effect/floor_decal/corner/paleblue/bordercorner, +/turf/simulated/floor/tiled/white, +/area/medical/medbay) +"cJQ" = ( +/obj/structure/cable/green, +/obj/machinery/power/apc{ + dir = 2; + name = "south bump"; + pixel_y = -24 + }, +/obj/machinery/light_switch{ + pixel_x = 11; + pixel_y = -24 + }, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/effect/floor_decal/borderfloorwhite, +/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers, +/obj/effect/floor_decal/corner/paleblue/border, +/turf/simulated/floor/tiled/white, +/area/medical/medbay) +"cJR" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/effect/floor_decal/borderfloorwhite, +/obj/effect/floor_decal/corner/paleblue/border, +/turf/simulated/floor/tiled/white, +/area/medical/medbay) +"cJS" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/effect/floor_decal/borderfloorwhite/corner{ + dir = 8 + }, +/obj/effect/floor_decal/corner/paleblue/bordercorner{ + dir = 8 + }, +/turf/simulated/floor/tiled/white, +/area/medical/medbay) +"cJT" = ( +/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers, +/obj/structure/disposalpipe/sortjunction{ + dir = 8; + icon_state = "pipe-j1s"; + name = "Chemistry"; + sortType = "Chemistry" + }, +/turf/simulated/floor/tiled/white, +/area/medical/medbay) +"cJU" = ( +/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/effect/floor_decal/borderfloorwhite/corner, +/obj/effect/floor_decal/corner/paleblue/bordercorner, +/turf/simulated/floor/tiled/white, +/area/medical/medbay) +"cJV" = ( +/obj/machinery/atmospherics/unary/vent_pump/on{ + dir = 1 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, +/obj/item/device/radio/intercom{ + name = "Station Intercom (General)"; + pixel_y = -21 + }, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/effect/floor_decal/borderfloorwhite, +/obj/effect/floor_decal/corner/paleblue/border, +/turf/simulated/floor/tiled/white, +/area/medical/medbay) +"cJW" = ( +/obj/machinery/door/firedoor/border_only, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/effect/floor_decal/borderfloorwhite, +/obj/effect/floor_decal/corner/paleblue/border, +/turf/simulated/floor/tiled/white, +/area/medical/medbay2) +"cJX" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/effect/floor_decal/borderfloorwhite, +/obj/effect/floor_decal/corner/paleblue/border, +/turf/simulated/floor/tiled/white, +/area/medical/medbay2) +"cJY" = ( +/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/effect/floor_decal/borderfloorwhite/corner{ + dir = 8 + }, +/obj/effect/floor_decal/corner/paleblue/bordercorner{ + dir = 8 + }, +/turf/simulated/floor/tiled/white, +/area/medical/medbay2) +"cJZ" = ( +/obj/item/device/radio/intercom{ + dir = 4; + name = "Station Intercom (General)"; + pixel_x = 21 + }, +/obj/machinery/atmospherics/unary/vent_scrubber/on{ + dir = 8 + }, +/obj/effect/floor_decal/borderfloorwhite{ + dir = 4 + }, +/obj/effect/floor_decal/corner/paleblue/border{ + dir = 4 + }, +/obj/structure/table/bench/steel, +/turf/simulated/floor/tiled/white, +/area/medical/first_aid_station/seconddeck/fore) +"cKa" = ( +/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/effect/floor_decal/borderfloorwhite/corner, +/obj/effect/floor_decal/corner/paleblue/bordercorner, +/turf/simulated/floor/tiled/white, +/area/medical/medbay2) +"cKb" = ( +/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers, +/obj/machinery/camera/network/medbay{ + c_tag = "MED - Medical Hallway Starboard 1"; + dir = 1 + }, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/effect/floor_decal/borderfloorwhite, +/obj/effect/floor_decal/corner/paleblue/border, +/turf/simulated/floor/tiled/white, +/area/medical/medbay2) +"cKc" = ( +/obj/machinery/atmospherics/unary/vent_pump/on{ + dir = 1 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/effect/floor_decal/borderfloorwhite, +/obj/effect/floor_decal/corner/paleblue/border, +/turf/simulated/floor/tiled/white, +/area/medical/medbay2) +"cKd" = ( +/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers, +/obj/structure/disposalpipe/junction/yjunction{ + dir = 8 + }, +/obj/effect/floor_decal/borderfloorwhite, +/obj/effect/floor_decal/corner/paleblue/border, +/turf/simulated/floor/tiled/white, +/area/medical/medbay2) +"cKe" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, +/obj/machinery/light, +/obj/effect/floor_decal/borderfloorwhite, +/obj/effect/floor_decal/corner/paleblue/border, +/turf/simulated/floor/tiled/white, +/area/medical/medbay2) +"cKf" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/structure/disposalpipe/segment, +/obj/effect/floor_decal/borderfloorwhite/corner{ + dir = 8 + }, +/obj/effect/floor_decal/corner/paleblue/bordercorner{ + dir = 8 + }, +/turf/simulated/floor/tiled/white, +/area/medical/medbay2) +"cKg" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 10 + }, +/obj/structure/cable/green{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/obj/effect/floor_decal/borderfloorwhite/corner, +/obj/effect/floor_decal/corner/paleblue/bordercorner, +/turf/simulated/floor/tiled/white, +/area/medical/medbay2) +"cKh" = ( +/obj/machinery/ai_status_display, +/turf/simulated/wall, +/area/medical/medical_lockerroom) +"cKi" = ( +/obj/structure/closet/secure_closet/paramedic, +/obj/effect/floor_decal/borderfloorwhite{ + dir = 8 + }, +/obj/effect/floor_decal/corner/paleblue/border{ + dir = 8 + }, +/turf/simulated/floor/tiled/white, +/area/medical/medical_lockerroom) +"cKj" = ( +/obj/effect/floor_decal/steeldecal/steel_decals4{ + dir = 9 + }, +/obj/effect/floor_decal/steeldecal/steel_decals4{ + dir = 4 + }, +/turf/simulated/floor/tiled/white, +/area/medical/medical_lockerroom) +"cKk" = ( +/obj/structure/closet/secure_closet/medical3, +/obj/item/weapon/soap/nanotrasen, +/obj/machinery/firealarm{ + dir = 2; + pixel_y = 24 + }, +/obj/item/device/radio/intercom/department/medbay{ + dir = 8; + pixel_x = 21 + }, +/obj/effect/floor_decal/borderfloorwhite{ + dir = 4 + }, +/obj/effect/floor_decal/corner/paleblue/border{ + dir = 4 + }, +/turf/simulated/floor/tiled/white, +/area/medical/medical_lockerroom) +"cKl" = ( +/turf/simulated/wall/r_wall, +/area/medical/medical_lockerroom) +"cKm" = ( +/obj/machinery/mass_driver{ + dir = 2; + id = "trash" + }, +/turf/simulated/floor/airless, +/area/maintenance/disposal) +"cKn" = ( +/obj/structure/disposaloutlet{ + dir = 8 + }, +/obj/structure/disposalpipe/trunk{ + dir = 1 + }, +/obj/structure/window/reinforced, +/obj/structure/window/reinforced{ + dir = 1; + health = 1e+006 + }, +/obj/structure/window/reinforced{ + dir = 4 + }, +/turf/simulated/floor/airless, +/area/maintenance/disposal) +"cKo" = ( +/obj/machinery/camera/network/civilian{ + c_tag = "CIV - Waste Disposal"; + dir = 4 + }, +/turf/simulated/floor, +/area/maintenance/disposal) +"cKp" = ( +/obj/machinery/power/apc{ + dir = 4; + name = "east bump"; + pixel_x = 24 + }, +/obj/machinery/light_switch{ + dir = 2; + name = "light switch "; + pixel_x = 36; + pixel_y = 0 + }, +/obj/structure/cable, +/turf/simulated/floor, +/area/maintenance/disposal) +"cKq" = ( +/obj/machinery/atmospherics/portables_connector{ + dir = 4 + }, +/obj/effect/floor_decal/industrial/outline/yellow, +/obj/machinery/portable_atmospherics/canister/air/airlock, +/turf/simulated/floor, +/area/maintenance/cargo) +"cKr" = ( +/obj/effect/floor_decal/industrial/warning{ + dir = 8 + }, +/obj/machinery/atmospherics/pipe/manifold/hidden{ + dir = 4; + icon_state = "map" + }, +/turf/simulated/floor, +/area/maintenance/cargo) +"cKs" = ( +/obj/structure/cable{ + d1 = 1; + d2 = 4; + icon_state = "1-4" + }, +/turf/simulated/floor, +/area/maintenance/cargo) +"cKt" = ( +/obj/structure/cable{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/turf/simulated/floor, +/area/maintenance/cargo) +"cKu" = ( +/obj/structure/cable{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/turf/simulated/floor/plating, +/area/maintenance/cargo) +"cKv" = ( +/obj/structure/cable{ + d1 = 2; + d2 = 8; + icon_state = "2-8" + }, +/turf/simulated/floor/plating, +/area/maintenance/cargo) +"cKw" = ( +/obj/structure/firedoor_assembly, +/turf/simulated/floor/plating, +/area/maintenance/cargo) +"cKx" = ( +/obj/item/stack/tile/floor, +/turf/simulated/floor/plating, +/area/maintenance/cargo) +"cKy" = ( +/obj/machinery/light/small{ + dir = 8 + }, +/obj/effect/floor_decal/borderfloor{ + dir = 8 + }, +/obj/effect/floor_decal/corner/brown/border{ + dir = 8 + }, +/turf/simulated/floor/tiled, +/area/quartermaster/warehouse) +"cKz" = ( +/turf/simulated/floor/tiled, +/area/quartermaster/warehouse) +"cKA" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/turf/simulated/floor/tiled, +/area/quartermaster/warehouse) +"cKB" = ( +/obj/structure/cable/green{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/turf/simulated/floor/tiled, +/area/quartermaster/warehouse) +"cKC" = ( +/obj/machinery/door/firedoor/border_only, +/obj/machinery/door/blast/shutters{ + dir = 4; + id = "qm_warehouse"; + name = "Warehouse Shutters" + }, +/turf/simulated/floor/tiled, +/area/quartermaster/warehouse) +"cKD" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/turf/simulated/floor/tiled, +/area/quartermaster/office) +"cKE" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/turf/simulated/floor/tiled, +/area/quartermaster/office) +"cKF" = ( +/obj/machinery/photocopier, +/obj/structure/cable/green{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/obj/effect/floor_decal/borderfloor{ + dir = 4 + }, +/obj/effect/floor_decal/corner/brown/border{ + dir = 4 + }, +/obj/effect/floor_decal/borderfloor/corner2{ + dir = 6 + }, +/obj/effect/floor_decal/corner/brown/bordercorner2{ + dir = 6 + }, +/turf/simulated/floor/tiled, +/area/quartermaster/office) +"cKG" = ( +/turf/simulated/wall/r_wall, +/area/quartermaster/office) +"cKH" = ( +/turf/simulated/wall/r_wall, +/area/quartermaster/lockerroom) +"cKI" = ( +/obj/structure/closet/secure_closet/cargotech, +/obj/item/weapon/storage/backpack/dufflebag, +/obj/item/weapon/stamp/cargo, +/obj/machinery/alarm{ + dir = 1; + pixel_y = -22 + }, +/turf/simulated/floor/tiled, +/area/quartermaster/lockerroom) +"cKJ" = ( +/obj/structure/closet/secure_closet/cargotech, +/obj/item/weapon/stamp/cargo, +/obj/machinery/atmospherics/unary/vent_pump/on{ + dir = 1 + }, +/obj/machinery/light, +/obj/effect/floor_decal/industrial/warning/corner, +/turf/simulated/floor/tiled, +/area/quartermaster/lockerroom) +"cKK" = ( +/obj/structure/cable/green{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/obj/effect/floor_decal/industrial/warning, +/turf/simulated/floor/tiled/steel, +/area/quartermaster/lockerroom) +"cKL" = ( +/obj/item/weapon/tape_roll, +/obj/item/weapon/storage/firstaid/regular{ + pixel_x = 6; + pixel_y = -5 + }, +/obj/structure/table/steel, +/obj/machinery/camera/network/cargo{ + c_tag = "CRG - Cargo Stairwell"; + dir = 1; + name = "security camera" + }, +/obj/item/device/radio/intercom{ + name = "Station Intercom (General)"; + pixel_y = -21 + }, +/obj/effect/floor_decal/industrial/warning/corner{ + dir = 8 + }, +/turf/simulated/floor/tiled/steel, +/area/quartermaster/lockerroom) +"cKM" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/obj/structure/cable{ + d1 = 1; + d2 = 2; + icon_state = "1-2"; + pixel_y = 0 + }, +/obj/machinery/alarm{ + dir = 8; + pixel_x = 22; + pixel_y = 0 + }, +/turf/simulated/floor/plating, +/area/maintenance/bar) +"cKN" = ( +/turf/simulated/wall, +/area/storage/emergency_storage/seconddeck/ap_emergency) +"cKO" = ( +/obj/structure/disposalpipe/segment, +/obj/machinery/light{ + dir = 8; + icon_state = "tube1"; + pixel_y = 0 + }, +/obj/effect/floor_decal/borderfloor/corner{ + dir = 8 + }, +/obj/effect/floor_decal/corner/green/bordercorner{ + dir = 8 + }, +/turf/simulated/floor/tiled, +/area/hallway/primary/seconddeck/apcenter) +"cKP" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/obj/structure/cable{ + d1 = 2; + d2 = 4; + icon_state = "2-4" + }, +/turf/simulated/floor/tiled/monotile, +/area/hallway/primary/seconddeck/apcenter) +"cKQ" = ( +/obj/structure/disposalpipe/segment, +/obj/machinery/power/apc{ + dir = 4; + name = "east bump"; + pixel_x = 24 + }, +/obj/structure/cable{ + d2 = 8; + icon_state = "0-8" + }, +/obj/effect/floor_decal/borderfloor/corner, +/obj/effect/floor_decal/corner/green/bordercorner, +/turf/simulated/floor/tiled, +/area/hallway/primary/seconddeck/apcenter) +"cKR" = ( +/turf/simulated/wall, +/area/storage/emergency_storage/seconddeck/as_emergency) +"cKS" = ( +/obj/effect/floor_decal/industrial/warning/corner{ + icon_state = "warningcorner"; + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden, +/obj/structure/cable{ + d1 = 1; + d2 = 2; + icon_state = "1-2"; + pixel_y = 0 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/turf/simulated/floor/plating, +/area/maintenance/medbay) +"cKT" = ( +/turf/simulated/wall/r_wall, +/area/maintenance/substation/medical) +"cKU" = ( +/obj/structure/cable{ + d1 = 1; + d2 = 2; + icon_state = "1-2"; + pixel_y = 0 + }, +/obj/machinery/door/firedoor, +/obj/machinery/door/airlock/engineering{ + name = "Cargo Substation"; + req_one_access = list(11,24,50) + }, +/turf/simulated/floor/plating, +/area/maintenance/substation/cargo) +"cKV" = ( +/turf/simulated/wall, +/area/maintenance/substation/medical) +"cKW" = ( +/obj/machinery/door/firedoor/border_only, +/obj/effect/wingrille_spawn/reinforced/polarized{ + id = "cmooffice" + }, +/obj/structure/disposalpipe/segment, +/turf/simulated/floor/plating, +/area/crew_quarters/heads/sc/cmo) +"cKX" = ( +/obj/machinery/door/firedoor/glass, +/obj/effect/wingrille_spawn/reinforced/polarized{ + id = "cmooffice" + }, +/turf/simulated/floor/plating, +/area/crew_quarters/heads/sc/cmo) +"cKY" = ( +/obj/machinery/door/firedoor/border_only, +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/obj/machinery/door/airlock/command{ + id_tag = "cmodoor"; + name = "CMO's Office"; + req_access = list(40) + }, +/obj/structure/cable/green{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/turf/simulated/floor/tiled/steel_grid, +/area/crew_quarters/heads/sc/cmo) +"cKZ" = ( +/obj/machinery/door/firedoor/border_only, +/obj/effect/wingrille_spawn/reinforced/polarized{ + id = "cmooffice" + }, +/turf/simulated/floor/plating, +/area/crew_quarters/heads/sc/cmo) +"cLa" = ( +/turf/simulated/wall/r_wall, +/area/crew_quarters/heads/sc/cmo) +"cLb" = ( +/turf/simulated/wall, +/area/medical/sleeper) +"cLc" = ( +/obj/machinery/door/firedoor/border_only, +/turf/simulated/floor/tiled/steel_grid, +/area/medical/sleeper) +"cLd" = ( +/obj/machinery/door/firedoor/border_only, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/turf/simulated/floor/tiled/steel_grid, +/area/medical/sleeper) +"cLe" = ( +/obj/machinery/door/firedoor/border_only, +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/obj/structure/cable/green{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/turf/simulated/floor/tiled/steel_grid, +/area/medical/sleeper) +"cLf" = ( +/obj/machinery/door/firedoor/glass, +/turf/simulated/floor/tiled/steel_grid, +/area/medical/sleeper) +"cLg" = ( +/obj/machinery/door/firedoor/border_only, +/obj/structure/disposalpipe/segment, +/turf/simulated/floor/tiled/steel_grid, +/area/medical/sleeper) +"cLh" = ( +/turf/simulated/wall, +/area/medical/cryo) +"cLi" = ( +/obj/structure/sign/nosmoking_1, +/turf/simulated/wall, +/area/medical/cryo) +"cLj" = ( +/obj/machinery/door/firedoor/border_only, +/obj/effect/wingrille_spawn/reinforced, +/turf/simulated/floor/plating, +/area/medical/cryo) +"cLk" = ( +/obj/machinery/door/firedoor/glass, +/obj/effect/wingrille_spawn/reinforced, +/turf/simulated/floor/plating, +/area/medical/cryo) +"cLl" = ( +/turf/simulated/wall, +/area/medical/psych) +"cLm" = ( +/obj/machinery/door/firedoor/border_only, +/obj/effect/wingrille_spawn/reinforced/polarized{ + id = "psyco_tint" + }, +/turf/simulated/floor/plating, +/area/medical/psych) +"cLn" = ( +/obj/machinery/door/firedoor/border_only, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/structure/cable/green{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/obj/machinery/door/airlock/medical{ + id_tag = "mentaldoor"; + name = "Mental Health"; + req_access = list(64) + }, +/turf/simulated/floor/tiled/steel_grid, +/area/medical/psych) +"cLo" = ( +/obj/structure/flora/pottedplant/largebush, +/turf/simulated/floor/tiled/dark, +/area/medical/medbay2) +"cLp" = ( +/obj/structure/table/glass, +/obj/machinery/alarm{ + dir = 1; + icon_state = "alarm0"; + pixel_y = -22 + }, +/obj/machinery/recharger, +/obj/item/weapon/reagent_containers/spray/cleaner{ + pixel_x = -5 + }, +/turf/simulated/floor/tiled/dark, +/area/medical/medbay2) +"cLq" = ( +/obj/structure/table/glass, +/obj/item/device/radio/intercom/department/medbay{ + dir = 1; + pixel_x = 0; + pixel_y = -21 + }, +/turf/simulated/floor/tiled/dark, +/area/medical/medbay2) +"cLr" = ( +/obj/machinery/disposal, +/obj/structure/disposalpipe/trunk{ + dir = 1 + }, +/turf/simulated/floor/tiled/dark, +/area/medical/medbay2) +"cLs" = ( +/obj/machinery/door/firedoor/border_only, +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/structure/disposalpipe/segment, +/obj/effect/floor_decal/borderfloorwhite{ + dir = 8 + }, +/obj/effect/floor_decal/corner/paleblue/border{ + dir = 8 + }, +/turf/simulated/floor/tiled/white, +/area/medical/medbay2) +"cLt" = ( +/obj/structure/cable/green{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/obj/machinery/door/firedoor/border_only, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/obj/effect/floor_decal/borderfloorwhite/corner{ + dir = 4 + }, +/obj/effect/floor_decal/corner/paleblue/bordercorner{ + dir = 4 + }, +/turf/simulated/floor/tiled/white, +/area/medical/medbay2) +"cLu" = ( +/turf/simulated/wall, +/area/medical/medical_lockerroom) +"cLv" = ( +/obj/structure/closet/secure_closet/paramedic, +/obj/machinery/power/apc{ + dir = 8; + name = "west bump"; + pixel_x = -24 + }, +/obj/machinery/light_switch{ + pixel_x = -36 + }, +/obj/structure/cable/green{ + d2 = 2; + icon_state = "0-2" + }, +/obj/effect/floor_decal/borderfloorwhite/corner{ + dir = 1 + }, +/obj/effect/floor_decal/corner/paleblue/bordercorner{ + dir = 1 + }, +/turf/simulated/floor/tiled/white, +/area/medical/medical_lockerroom) +"cLw" = ( +/turf/simulated/floor/tiled/white, +/area/medical/medical_lockerroom) +"cLx" = ( +/obj/structure/closet/secure_closet/medical3, +/obj/machinery/atmospherics/unary/vent_pump/on, +/obj/effect/floor_decal/borderfloorwhite{ + dir = 4 + }, +/obj/effect/floor_decal/corner/paleblue/border{ + dir = 4 + }, +/turf/simulated/floor/tiled/white, +/area/medical/medical_lockerroom) +"cLy" = ( +/obj/machinery/door/firedoor, +/obj/effect/wingrille_spawn/reinforced, +/turf/simulated/floor/plating, +/area/medical/medical_lockerroom) +"cLz" = ( +/obj/structure/sign/warning/vent_port, +/turf/simulated/wall/r_wall, +/area/maintenance/disposal) +"cLA" = ( +/obj/machinery/door/blast/regular{ + id = "trash"; + name = "disposal mass driver" + }, +/turf/simulated/floor/airless, +/area/maintenance/disposal) +"cLB" = ( +/obj/machinery/conveyor_switch/oneway{ + convdir = -1; + id = "garbage"; + name = "disposal coveyor" + }, +/obj/effect/floor_decal/industrial/warning{ + dir = 10 + }, +/obj/machinery/button/remote/driver{ + id = "trash"; + pixel_x = -26; + pixel_y = -6 + }, +/turf/simulated/floor, +/area/maintenance/disposal) +"cLC" = ( +/obj/item/weapon/stool/padded, +/turf/simulated/floor, +/area/maintenance/disposal) +"cLD" = ( +/obj/machinery/alarm{ + dir = 1; + pixel_y = -22 + }, +/obj/effect/floor_decal/industrial/warning{ + dir = 6 + }, +/obj/item/weapon/storage/bag/trash, +/turf/simulated/floor, +/area/maintenance/disposal) +"cLE" = ( +/obj/machinery/atmospherics/pipe/manifold/hidden, +/obj/effect/floor_decal/industrial/warning{ + dir = 8 + }, +/obj/machinery/meter, +/turf/simulated/floor, +/area/maintenance/cargo) +"cLF" = ( +/obj/machinery/atmospherics/pipe/simple/hidden{ + dir = 4 + }, +/turf/simulated/floor, +/area/maintenance/cargo) +"cLG" = ( +/obj/effect/floor_decal/industrial/warning/corner, +/obj/machinery/atmospherics/pipe/simple/hidden{ + dir = 4 + }, +/turf/simulated/floor, +/area/maintenance/cargo) +"cLH" = ( +/obj/machinery/atmospherics/pipe/simple/hidden{ + dir = 4 + }, +/obj/effect/floor_decal/industrial/warning, +/obj/machinery/access_button{ + command = "cycle_interior"; + frequency = 1379; + master_tag = "crg_aft_airlock"; + name = "interior access button"; + pixel_x = -26; + pixel_y = -25; + req_one_access = list(13) + }, +/turf/simulated/floor, +/area/maintenance/cargo) +"cLI" = ( +/obj/machinery/atmospherics/pipe/simple/hidden{ + dir = 10; + icon_state = "intact" + }, +/obj/effect/floor_decal/industrial/warning, +/turf/simulated/floor, +/area/maintenance/cargo) +"cLJ" = ( +/obj/structure/sign/warning/airlock{ + pixel_y = -32 + }, +/obj/effect/floor_decal/industrial/warning/corner{ + dir = 8 + }, +/turf/simulated/floor, +/area/maintenance/cargo) +"cLK" = ( +/obj/machinery/light/small, +/turf/simulated/floor/plating, +/area/maintenance/cargo) +"cLL" = ( +/obj/structure/cable{ + d1 = 1; + d2 = 2; + icon_state = "1-2"; + pixel_y = 0 + }, +/turf/simulated/floor/plating, +/area/maintenance/cargo) +"cLM" = ( +/obj/item/stack/cable_coil/green, +/turf/simulated/floor/plating, +/area/maintenance/cargo) +"cLN" = ( +/obj/item/device/radio/intercom{ + dir = 8; + name = "Station Intercom (General)"; + pixel_x = -21 + }, +/obj/effect/floor_decal/borderfloor{ + dir = 8 + }, +/obj/effect/floor_decal/corner/brown/border{ + dir = 8 + }, +/turf/simulated/floor/tiled, +/area/quartermaster/warehouse) +"cLO" = ( +/obj/effect/landmark{ + name = "blobstart" + }, +/turf/simulated/floor/tiled, +/area/quartermaster/warehouse) +"cLP" = ( +/obj/machinery/atmospherics/unary/vent_scrubber/on{ + dir = 1 + }, +/turf/simulated/floor/tiled, +/area/quartermaster/warehouse) +"cLQ" = ( +/obj/machinery/power/apc{ + dir = 4; + name = "east bump"; + pixel_x = 24 + }, +/obj/machinery/light_switch{ + pixel_x = 36; + pixel_y = 0 + }, +/obj/structure/cable/green, +/obj/effect/floor_decal/borderfloor/corner, +/obj/effect/floor_decal/corner/brown/bordercorner, +/turf/simulated/floor/tiled, +/area/quartermaster/warehouse) +"cLR" = ( +/obj/structure/bed/chair/comfy/brown, +/obj/effect/landmark/start{ + name = "Cargo Technician" + }, +/obj/effect/floor_decal/borderfloor/corner{ + dir = 8 + }, +/obj/effect/floor_decal/corner/brown/bordercorner{ + dir = 8 + }, +/turf/simulated/floor/tiled, +/area/quartermaster/office) +"cLS" = ( +/obj/machinery/atmospherics/unary/vent_scrubber/on{ + dir = 1 + }, +/turf/simulated/floor/tiled, +/area/quartermaster/office) +"cLT" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/yellow{ + dir = 4 + }, +/obj/structure/cable/green{ + d1 = 2; + d2 = 8; + icon_state = "2-8" + }, +/turf/simulated/floor/tiled/hydro, +/area/rnd/xenobiology/xenoflora_isolation) +"cLU" = ( +/obj/machinery/atmospherics/pipe/manifold/hidden/yellow{ + dir = 1 + }, +/obj/machinery/hologram/holopad, +/obj/effect/floor_decal/industrial/outline/grey, +/turf/simulated/floor/tiled/hydro, +/area/rnd/xenobiology/xenoflora_isolation) +"cLV" = ( +/obj/structure/cable/green, +/obj/machinery/power/apc{ + dir = 4; + name = "east bump"; + pixel_x = 24 + }, +/obj/machinery/light_switch{ + pixel_x = 36; + pixel_y = 0 + }, +/obj/effect/floor_decal/borderfloor{ + dir = 4 + }, +/obj/effect/floor_decal/corner/brown/border{ + dir = 4 + }, +/turf/simulated/floor/tiled, +/area/quartermaster/office) +"cLW" = ( +/turf/unsimulated/mask, +/area/quartermaster/office) +"cLX" = ( +/turf/simulated/wall/r_wall, +/area/maintenance/substation/cargo) +"cLY" = ( +/turf/simulated/wall, +/area/maintenance/substation/cargo) +"cLZ" = ( +/obj/structure/cable/green{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/obj/machinery/door/firedoor, +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/obj/machinery/door/airlock/engineering{ + name = "Cargo Substation"; + req_one_access = list(50) + }, +/turf/simulated/floor/plating, +/area/maintenance/substation/cargo) +"cMa" = ( +/obj/structure/closet/hydrant{ + pixel_x = -32 + }, +/obj/item/clothing/glasses/meson, +/obj/machinery/alarm{ + pixel_y = 22 + }, +/turf/simulated/floor/plating, +/area/storage/emergency_storage/seconddeck/ap_emergency) +"cMb" = ( +/obj/structure/ladder/updown, +/obj/effect/floor_decal/industrial/outline/yellow, +/turf/simulated/floor/plating, +/area/storage/emergency_storage/seconddeck/ap_emergency) +"cMc" = ( +/obj/machinery/power/apc{ + dir = 1; + name = "north bump"; + pixel_x = 0; + pixel_y = 24 + }, +/obj/structure/cable{ + icon_state = "0-2"; + d2 = 2 + }, +/obj/structure/catwalk, +/turf/simulated/floor/plating, +/area/storage/emergency_storage/seconddeck/ap_emergency) +"cMd" = ( +/obj/machinery/alarm{ + pixel_y = 23 + }, +/turf/simulated/floor/tiled/dark, +/area/hallway/primary/seconddeck/apcenter) +"cMe" = ( +/obj/structure/disposalpipe/segment, +/obj/effect/floor_decal/borderfloor{ + dir = 8 + }, +/obj/effect/floor_decal/corner/green/border{ + dir = 8 + }, +/turf/simulated/floor/tiled, +/area/hallway/primary/seconddeck/apcenter) +"cMf" = ( +/obj/structure/cable{ + d1 = 1; + d2 = 2; + icon_state = "1-2"; + pixel_y = 0 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/turf/simulated/floor/tiled/monotile, +/area/hallway/primary/seconddeck/apcenter) +"cMg" = ( +/obj/structure/disposalpipe/segment, +/obj/effect/floor_decal/borderfloor{ + dir = 4 + }, +/obj/effect/floor_decal/corner/green/border{ + dir = 4 + }, +/turf/simulated/floor/tiled, +/area/hallway/primary/seconddeck/apcenter) +"cMh" = ( +/turf/simulated/floor/tiled/dark, +/area/hallway/primary/seconddeck/apcenter) +"cMi" = ( +/obj/structure/cable{ + d2 = 2; + icon_state = "0-2"; + pixel_y = 0 + }, +/obj/structure/cable{ + d1 = 16; + d2 = 0; + icon_state = "16-0" + }, +/turf/simulated/floor/plating, +/area/storage/emergency_storage/seconddeck/as_emergency) +"cMj" = ( +/obj/item/device/t_scanner, +/obj/item/weapon/storage/box/lights/mixed, +/obj/item/weapon/storage/box/lights/mixed, +/obj/structure/table/steel, +/obj/random/maintenance/engineering, +/obj/random/maintenance/clean, +/obj/random/maintenance/clean, +/turf/simulated/floor/plating, +/area/storage/emergency_storage/seconddeck/as_emergency) +"cMk" = ( +/obj/machinery/atmospherics/pipe/simple/hidden, +/obj/structure/cable{ + d1 = 1; + d2 = 2; + icon_state = "1-2"; + pixel_y = 0 + }, +/obj/effect/floor_decal/industrial/warning, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/turf/simulated/floor/plating, +/area/maintenance/medbay) +"cMl" = ( +/obj/structure/cable/green{ + d2 = 4; + icon_state = "0-4" + }, +/obj/machinery/power/apc{ + dir = 8; + name = "west bump"; + pixel_x = -24 + }, +/turf/simulated/floor/plating, +/area/maintenance/substation/medical) +"cMm" = ( +/obj/structure/cable/green{ + d1 = 1; + d2 = 4; + icon_state = "1-4" + }, +/obj/structure/cable/green{ + d2 = 4; + icon_state = "0-4" + }, +/obj/structure/cable/green{ + d2 = 8; + icon_state = "0-8" + }, +/obj/machinery/power/sensor{ + name = "Powernet Sensor - Medbay Subgrid"; + name_tag = "Medbay Subgrid" + }, +/obj/effect/floor_decal/industrial/warning/corner, +/turf/simulated/floor/plating, +/area/maintenance/substation/medical) +"cMn" = ( +/obj/structure/cable/green{ + d1 = 2; + d2 = 8; + icon_state = "2-8" + }, +/obj/structure/table/steel, +/obj/machinery/cell_charger, +/obj/item/weapon/cell/high{ + charge = 100; + maxcharge = 15000 + }, +/obj/machinery/alarm{ + dir = 8; + icon_state = "alarm0"; + pixel_x = 22 + }, +/obj/effect/floor_decal/industrial/warning, +/turf/simulated/floor/plating, +/area/maintenance/substation/medical) +"cMo" = ( +/obj/machinery/disposal, +/obj/item/device/radio/intercom{ + dir = 8; + name = "Station Intercom (General)"; + pixel_x = -21 + }, +/obj/structure/disposalpipe/trunk{ + dir = 1 + }, +/obj/effect/floor_decal/borderfloorwhite{ + dir = 9 + }, +/obj/effect/floor_decal/corner/blue/border{ + dir = 9 + }, +/turf/simulated/floor/tiled/white, +/area/crew_quarters/heads/sc/cmo) +"cMp" = ( +/obj/effect/floor_decal/borderfloorwhite/corner{ + dir = 1 + }, +/obj/effect/floor_decal/corner/blue/bordercorner{ + dir = 1 + }, +/mob/living/simple_mob/animal/passive/cat/runtime, +/turf/simulated/floor/tiled/white, +/area/crew_quarters/heads/sc/cmo) +"cMq" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/obj/structure/cable/green{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/obj/effect/floor_decal/steeldecal/steel_decals4{ + dir = 9 + }, +/obj/effect/floor_decal/steeldecal/steel_decals4{ + dir = 4 + }, +/turf/simulated/floor/tiled/white, +/area/crew_quarters/heads/sc/cmo) +"cMr" = ( +/obj/machinery/camera/network/medbay{ + c_tag = "MED - CMO"; + dir = 2 + }, +/obj/effect/floor_decal/borderfloorwhite/corner{ + dir = 4 + }, +/obj/effect/floor_decal/corner/blue/bordercorner{ + dir = 4 + }, +/turf/simulated/floor/tiled/white, +/area/crew_quarters/heads/sc/cmo) +"cMs" = ( +/obj/structure/table/reinforced, +/obj/item/weapon/storage/fancy/vials{ + pixel_x = 5; + pixel_y = 5 + }, +/obj/item/weapon/storage/fancy/vials, +/obj/effect/floor_decal/borderfloorwhite{ + dir = 1 + }, +/obj/effect/floor_decal/corner/blue/border{ + dir = 1 + }, +/turf/simulated/floor/tiled/white, +/area/crew_quarters/heads/sc/cmo) +"cMt" = ( +/obj/machinery/atmospherics/unary/freezer{ + dir = 2; + icon_state = "freezer" + }, +/obj/effect/floor_decal/industrial/outline/yellow, +/obj/machinery/alarm{ + pixel_y = 22 + }, +/turf/simulated/floor/tiled/techmaint, +/area/medical/sleeper) +"cMu" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 6 + }, +/obj/effect/floor_decal/borderfloorwhite{ + dir = 1 + }, +/obj/effect/floor_decal/corner/paleblue/border{ + dir = 1 + }, +/obj/effect/floor_decal/industrial/warning{ + icon_state = "warning"; + dir = 8 + }, +/turf/simulated/floor/tiled/white, +/area/medical/sleeper) +"cMv" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 9 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 5 + }, +/obj/effect/floor_decal/borderfloorwhite{ + dir = 1 + }, +/obj/effect/floor_decal/corner/paleblue/border{ + dir = 1 + }, +/turf/simulated/floor/tiled/white, +/area/medical/sleeper) +"cMw" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 10 + }, +/obj/effect/floor_decal/borderfloorwhite{ + dir = 1 + }, +/obj/effect/floor_decal/corner/paleblue/border{ + dir = 1 + }, +/obj/effect/floor_decal/industrial/warning{ + icon_state = "warning"; + dir = 4 + }, +/turf/simulated/floor/tiled/white, +/area/medical/sleeper) +"cMx" = ( +/obj/machinery/atmospherics/unary/cryo_cell, +/obj/effect/floor_decal/industrial/outline/yellow, +/turf/simulated/floor/tiled/techmaint, +/area/medical/sleeper) +"cMy" = ( +/obj/structure/bed/chair, +/obj/machinery/power/apc{ + dir = 8; + name = "west bump"; + pixel_x = -24 + }, +/obj/machinery/light_switch{ + pixel_x = -36 + }, +/obj/structure/cable/green{ + d2 = 4; + icon_state = "0-4" + }, +/obj/machinery/alarm{ + pixel_y = 22 + }, +/obj/effect/floor_decal/borderfloorwhite{ + dir = 9 + }, +/obj/effect/floor_decal/corner/pink/border{ + dir = 9 + }, +/turf/simulated/floor/tiled/white, +/area/medical/sleeper) +"cMz" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/obj/structure/cable/green{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/obj/structure/cable/green{ + d1 = 1; + d2 = 8; + icon_state = "1-8" + }, +/obj/effect/floor_decal/borderfloorwhite{ + dir = 1 + }, +/obj/effect/floor_decal/corner/pink/border{ + dir = 1 + }, +/turf/simulated/floor/tiled/white, +/area/medical/sleeper) +"cMA" = ( +/obj/effect/floor_decal/borderfloorwhite{ + dir = 1 + }, +/obj/effect/floor_decal/corner/pink/border{ + dir = 1 + }, +/turf/simulated/floor/tiled/white, +/area/medical/sleeper) +"cMB" = ( +/obj/structure/disposalpipe/segment, +/obj/effect/floor_decal/borderfloorwhite{ + dir = 1 + }, +/obj/effect/floor_decal/corner/pink/border{ + dir = 1 + }, +/turf/simulated/floor/tiled/white, +/area/medical/sleeper) +"cMC" = ( +/obj/structure/extinguisher_cabinet{ + pixel_x = 28; + pixel_y = 0 + }, +/obj/machinery/firealarm{ + pixel_y = 24 + }, +/obj/machinery/light{ + dir = 1 + }, +/obj/effect/floor_decal/borderfloorwhite{ + dir = 5 + }, +/obj/effect/floor_decal/corner/pink/border{ + dir = 5 + }, +/obj/machinery/computer/crew, +/turf/simulated/floor/tiled/white, +/area/medical/sleeper) +"cMD" = ( +/obj/item/weapon/tool/wrench, +/obj/item/weapon/reagent_containers/glass/beaker/cryoxadone{ + pixel_x = 7; + pixel_y = 1 + }, +/obj/item/weapon/reagent_containers/glass/beaker/cryoxadone{ + pixel_x = -4; + pixel_y = 0 + }, +/obj/structure/table/glass, +/obj/effect/floor_decal/industrial/hatch/yellow, +/turf/simulated/floor/tiled/techmaint, +/area/medical/cryo) +"cME" = ( +/obj/effect/floor_decal/industrial/outline/yellow, +/obj/machinery/atmospherics/unary/cryo_cell, +/turf/simulated/floor/tiled/techmaint, +/area/medical/cryo) +"cMF" = ( +/obj/machinery/atmospherics/unary/freezer{ + dir = 2; + icon_state = "freezer" + }, +/obj/effect/floor_decal/industrial/outline/yellow, +/obj/machinery/light{ + dir = 1 + }, +/turf/simulated/floor/tiled/techmaint, +/area/medical/cryo) +"cMG" = ( +/obj/machinery/atmospherics/unary/cryo_cell, +/obj/effect/floor_decal/industrial/outline/yellow, +/turf/simulated/floor/tiled/techmaint, +/area/medical/cryo) +"cMH" = ( +/obj/machinery/portable_atmospherics/canister/oxygen, +/obj/machinery/atmospherics/portables_connector, +/obj/effect/floor_decal/industrial/hatch/yellow, +/obj/machinery/alarm{ + pixel_y = 22 + }, +/turf/simulated/floor/tiled/techmaint, +/area/medical/cryo) +"cMI" = ( +/obj/machinery/status_display, +/turf/simulated/wall, +/area/medical/cryo) +"cMJ" = ( +/obj/structure/table/woodentable, +/obj/item/toy/plushie/therapy/blue, +/obj/item/device/radio/intercom{ + dir = 1; + name = "Station Intercom (General)"; + pixel_y = 21 + }, +/turf/simulated/floor/carpet/sblucarpet, +/area/medical/psych) +"cMK" = ( +/obj/structure/bed/chair/comfy/brown, +/turf/simulated/floor/carpet/sblucarpet, +/area/medical/psych) +"cML" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 5 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/structure/cable/green{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/turf/simulated/floor/carpet/sblucarpet, +/area/medical/psych) +"cMM" = ( +/obj/machinery/atmospherics/unary/vent_scrubber/on{ + dir = 8 + }, +/obj/structure/closet/secure_closet/psych, +/turf/simulated/floor/carpet/sblucarpet, +/area/medical/psych) +"cMN" = ( +/obj/structure/flora/pottedplant/flower, +/obj/machinery/ai_status_display{ + pixel_x = 32; + pixel_y = 0 + }, +/obj/machinery/light{ + dir = 4; + icon_state = "tube1"; + pixel_x = 0 + }, +/obj/machinery/computer/security/telescreen/entertainment{ + icon_state = "frame"; + pixel_x = 0; + pixel_y = 32 + }, +/turf/simulated/floor/carpet/sblucarpet, +/area/medical/psych) +"cMO" = ( +/turf/simulated/wall, +/area/medical/morgue) +"cMP" = ( +/obj/machinery/atmospherics/pipe/manifold/hidden/supply{ + dir = 8 + }, +/obj/item/device/radio/intercom{ + dir = 8; + name = "Station Intercom (General)"; + pixel_x = -21 + }, +/obj/structure/disposalpipe/segment, +/obj/effect/floor_decal/borderfloorwhite{ + dir = 8 + }, +/obj/effect/floor_decal/corner/paleblue/border{ + dir = 8 + }, +/turf/simulated/floor/tiled/white, +/area/medical/medbay2) +"cMQ" = ( +/obj/structure/cable/green{ + d1 = 1; + d2 = 4; + icon_state = "1-4" + }, +/obj/structure/cable/green{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{ + dir = 8 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/obj/effect/floor_decal/steeldecal/steel_decals4, +/obj/effect/floor_decal/steeldecal/steel_decals4{ + dir = 10 + }, +/turf/simulated/floor/tiled/white, +/area/medical/medbay2) +"cMR" = ( +/obj/machinery/door/firedoor, +/obj/machinery/door/airlock/medical{ + name = "Locker Room"; + req_access = list(5) + }, +/obj/structure/cable/green{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, +/turf/simulated/floor/tiled/steel_grid, +/area/medical/medical_lockerroom) +"cMS" = ( +/obj/structure/cable/green{ + d1 = 1; + d2 = 8; + icon_state = "1-8" + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, +/obj/effect/floor_decal/steeldecal/steel_decals4{ + dir = 6 + }, +/obj/effect/floor_decal/steeldecal/steel_decals4{ + dir = 1 + }, +/turf/simulated/floor/tiled/white, +/area/medical/medical_lockerroom) +"cMT" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/obj/machinery/hologram/holopad, +/obj/effect/floor_decal/industrial/outline/grey, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 10 + }, +/turf/simulated/floor/tiled/white, +/area/medical/medical_lockerroom) +"cMU" = ( +/obj/structure/closet/secure_closet/medical3, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 9; + pixel_y = 0 + }, +/obj/machinery/camera/network/medbay{ + c_tag = "MED - Locker Room"; + dir = 8 + }, +/obj/machinery/light{ + dir = 4; + icon_state = "tube1"; + pixel_x = 0 + }, +/obj/effect/floor_decal/borderfloorwhite{ + dir = 4 + }, +/obj/effect/floor_decal/corner/paleblue/border{ + dir = 4 + }, +/turf/simulated/floor/tiled/white, +/area/medical/medical_lockerroom) +"cMV" = ( +/obj/machinery/door/firedoor/glass, +/obj/effect/wingrille_spawn/reinforced, +/turf/simulated/floor/plating, +/area/medical/medical_lockerroom) +"cMW" = ( +/obj/effect/floor_decal/industrial/warning{ + icon_state = "warning"; + dir = 1 + }, +/obj/machinery/shield_diffuser, +/turf/simulated/floor/airless, +/area/maintenance/disposal) +"cMX" = ( +/turf/simulated/wall/r_wall, +/area/maintenance/cargo) +"cMY" = ( +/obj/machinery/door/firedoor/border_only, +/obj/effect/wingrille_spawn/reinforced, +/turf/simulated/floor/plating, +/area/maintenance/cargo) +"cMZ" = ( +/obj/machinery/door/airlock/glass_external{ + frequency = 1379; + icon_state = "door_locked"; + id_tag = "crg_aft_inner"; + locked = 1; + name = "Internal Airlock Access"; + req_access = list(13) + }, +/turf/simulated/floor, +/area/maintenance/cargo) +"cNa" = ( +/obj/machinery/atmospherics/pipe/simple/hidden, +/obj/machinery/door/airlock/glass_external{ + frequency = 1379; + icon_state = "door_locked"; + id_tag = "crg_aft_inner"; + locked = 1; + name = "Internal Airlock Access"; + req_access = list(13) + }, +/turf/simulated/floor, +/area/maintenance/cargo) +"cNb" = ( +/obj/structure/closet/crate/medical, +/obj/effect/floor_decal/borderfloor{ + dir = 10 + }, +/obj/effect/floor_decal/corner/brown/border{ + dir = 10 + }, +/turf/simulated/floor/tiled, +/area/quartermaster/warehouse) +"cNc" = ( +/obj/structure/closet/crate/internals, +/obj/machinery/firealarm{ + dir = 1; + pixel_x = 0; + pixel_y = -24 + }, +/obj/effect/floor_decal/borderfloor, +/obj/effect/floor_decal/corner/brown/border, +/turf/simulated/floor/tiled, +/area/quartermaster/warehouse) +"cNd" = ( +/obj/structure/closet/crate/freezer, +/obj/machinery/light/small, +/obj/effect/floor_decal/borderfloor, +/obj/effect/floor_decal/corner/brown/border, +/turf/simulated/floor/tiled, +/area/quartermaster/warehouse) +"cNe" = ( +/obj/structure/table/rack{ + dir = 8; + layer = 2.9 + }, +/obj/effect/floor_decal/borderfloor, +/obj/effect/floor_decal/corner/brown/border, +/turf/simulated/floor/tiled, +/area/quartermaster/warehouse) +"cNf" = ( +/obj/structure/table/rack{ + dir = 8; + layer = 2.9 + }, +/obj/item/weapon/module/power_control, +/obj/item/weapon/cell{ + maxcharge = 2000 + }, +/obj/effect/floor_decal/borderfloor{ + dir = 6 + }, +/obj/effect/floor_decal/corner/brown/border{ + dir = 6 + }, +/turf/simulated/floor/tiled, +/area/quartermaster/warehouse) +"cNg" = ( +/obj/machinery/light{ + dir = 8 + }, +/obj/structure/table/steel, +/obj/random/cigarettes, +/obj/item/weapon/flame/lighter/random, +/obj/item/weapon/deck/cards, +/obj/effect/floor_decal/borderfloor{ + dir = 8 + }, +/obj/effect/floor_decal/corner/brown/border{ + dir = 8 + }, +/turf/simulated/floor/tiled, +/area/quartermaster/office) +"cNh" = ( +/obj/machinery/atmospherics/unary/vent_pump/on{ + dir = 1 + }, +/turf/simulated/floor/tiled, +/area/quartermaster/office) +"cNi" = ( +/obj/machinery/hologram/holopad, +/obj/effect/floor_decal/industrial/outline/grey, +/turf/simulated/floor/tiled, +/area/quartermaster/office) +"cNj" = ( +/obj/effect/floor_decal/borderfloor/corner{ + dir = 4 + }, +/obj/effect/floor_decal/corner/brown/bordercorner{ + dir = 4 + }, +/turf/simulated/floor/tiled, +/area/quartermaster/office) +"cNk" = ( +/obj/effect/floor_decal/borderfloorblack{ + dir = 5 + }, +/obj/effect/floor_decal/industrial/danger{ + dir = 5 + }, +/turf/simulated/floor/tiled/techfloor/grid, +/area/quartermaster/office) +"cNl" = ( +/obj/structure/cable/green{ + d1 = 2; + d2 = 4; + icon_state = "2-4" + }, +/obj/machinery/firealarm{ + dir = 8; + pixel_x = -24 + }, +/turf/simulated/floor/plating, +/area/maintenance/substation/cargo) +"cNm" = ( +/obj/machinery/light/small{ + dir = 1 + }, +/obj/structure/cable/green{ + d2 = 8; + icon_state = "0-8" + }, +/obj/structure/cable/green{ + d2 = 4; + icon_state = "0-4" + }, +/obj/machinery/power/sensor{ + name = "Powernet Sensor - Cargo Subgrid"; + name_tag = "Cargo Subgrid" + }, +/obj/machinery/alarm{ + pixel_y = 22 + }, +/obj/effect/floor_decal/industrial/warning/corner, +/turf/simulated/floor/plating, +/area/maintenance/substation/cargo) +"cNn" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/obj/machinery/power/apc{ + dir = 4; + name = "east bump"; + pixel_x = 24 + }, +/obj/structure/cable/green{ + d2 = 8; + icon_state = "0-8" + }, +/obj/effect/floor_decal/industrial/warning, +/obj/structure/cable/green{ + d2 = 2; + icon_state = "0-2" + }, +/obj/structure/cable/green, +/obj/structure/railing, +/turf/simulated/floor/plating, +/area/maintenance/substation/cargo) +"cNo" = ( +/obj/structure/closet, +/obj/random/maintenance/engineering, +/obj/random/maintenance/engineering, +/obj/random/maintenance/clean, +/obj/random/tech_supply, +/turf/simulated/floor/plating, +/area/maintenance/bar) +"cNp" = ( +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/structure/table/steel, +/obj/random/tech_supply, +/obj/random/tech_supply, +/obj/random/tech_supply, +/obj/random/tech_supply, +/obj/random/maintenance/engineering, +/obj/random/tool/powermaint, +/turf/simulated/floor/tiled/steel, +/area/construction/seconddeck/construction1) +"cNq" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/obj/structure/cable{ + d1 = 1; + d2 = 2; + icon_state = "1-2"; + pixel_y = 0 + }, +/obj/structure/cable{ + d1 = 2; + d2 = 4; + icon_state = "2-4" + }, +/turf/simulated/floor/plating, +/area/maintenance/bar) +"cNr" = ( +/obj/machinery/door/firedoor/border_only, +/obj/structure/cable{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/obj/machinery/door/airlock{ + name = "Emergency Storage" + }, +/turf/simulated/floor/plating, +/area/storage/emergency_storage/seconddeck/ap_emergency) +"cNs" = ( +/obj/structure/cable{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/obj/structure/catwalk, +/turf/simulated/floor/plating, +/area/storage/emergency_storage/seconddeck/ap_emergency) +"cNt" = ( +/obj/structure/cable{ + d1 = 1; + d2 = 8; + icon_state = "1-8" + }, +/obj/structure/cable{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/obj/structure/catwalk, +/turf/simulated/floor/plating, +/area/storage/emergency_storage/seconddeck/ap_emergency) +"cNu" = ( +/obj/structure/cable{ + d2 = 8; + icon_state = "0-8" + }, +/obj/structure/cable{ + d1 = 16; + d2 = 0; + icon_state = "16-0" + }, +/turf/simulated/floor/plating, +/area/storage/emergency_storage/seconddeck/ap_emergency) +"cNv" = ( +/obj/machinery/atmospherics/unary/vent_scrubber/on{ + dir = 4 + }, +/obj/structure/flora/pottedplant/stoutbush, +/turf/simulated/floor/tiled/dark, +/area/hallway/primary/seconddeck/apcenter) +"cNw" = ( +/obj/structure/disposalpipe/segment, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, +/obj/effect/floor_decal/borderfloor{ + dir = 8 + }, +/obj/effect/floor_decal/corner/green/border{ + dir = 8 + }, +/turf/simulated/floor/tiled, +/area/hallway/primary/seconddeck/apcenter) +"cNx" = ( +/obj/structure/cable{ + d1 = 1; + d2 = 2; + icon_state = "1-2"; + pixel_y = 0 + }, +/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/manifold/hidden/supply{ + dir = 8 + }, +/turf/simulated/floor/tiled/monotile, +/area/hallway/primary/seconddeck/apcenter) +"cNy" = ( +/obj/structure/disposalpipe/segment, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/obj/effect/floor_decal/borderfloor{ + dir = 4 + }, +/obj/effect/floor_decal/corner/green/border{ + dir = 4 + }, +/turf/simulated/floor/tiled, +/area/hallway/primary/seconddeck/apcenter) +"cNz" = ( +/obj/machinery/atmospherics/unary/vent_pump/on{ + dir = 8 + }, +/obj/structure/closet/emcloset, +/turf/simulated/floor/tiled/dark, +/area/hallway/primary/seconddeck/apcenter) +"cNA" = ( +/obj/machinery/power/apc{ + dir = 8; + name = "west bump"; + pixel_x = -24 + }, +/obj/structure/cable{ + icon_state = "0-4"; + d2 = 4 + }, +/obj/machinery/floodlight, +/obj/structure/catwalk, +/turf/simulated/floor/plating, +/area/storage/emergency_storage/seconddeck/as_emergency) +"cNB" = ( +/obj/structure/cable{ + d1 = 2; + d2 = 8; + icon_state = "2-8" + }, +/obj/structure/cable{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/obj/structure/catwalk, +/turf/simulated/floor/plating, +/area/storage/emergency_storage/seconddeck/as_emergency) +"cNC" = ( +/obj/machinery/portable_atmospherics/canister/air, +/turf/simulated/floor/plating, +/area/storage/emergency_storage/seconddeck/as_emergency) +"cND" = ( +/obj/machinery/atmospherics/pipe/simple/hidden, +/obj/structure/cable{ + d1 = 1; + d2 = 2; + icon_state = "1-2"; + pixel_y = 0 + }, +/obj/machinery/door/firedoor/border_only, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/turf/simulated/floor/plating, +/area/maintenance/medbay) +"cNE" = ( +/obj/machinery/light/small{ + dir = 8 + }, +/turf/simulated/floor/plating, +/area/maintenance/substation/medical) +"cNF" = ( +/obj/machinery/power/terminal{ + dir = 4 + }, +/obj/structure/cable{ + icon_state = "0-2"; + d2 = 2 + }, +/obj/effect/floor_decal/industrial/warning{ + icon_state = "warning"; + dir = 4 + }, +/turf/simulated/floor/plating, +/area/maintenance/substation/medical) +"cNG" = ( +/obj/machinery/power/smes/buildable{ + charge = 0; + RCon_tag = "Substation - Medical" + }, +/obj/structure/cable/green, +/obj/structure/cable/green{ + d2 = 2; + icon_state = "0-2" + }, +/turf/simulated/floor/plating, +/area/maintenance/substation/medical) +"cNH" = ( +/obj/machinery/papershredder, +/obj/machinery/alarm{ + dir = 4; + pixel_x = -22; + pixel_y = 0 + }, +/obj/effect/floor_decal/borderfloorwhite{ + dir = 8 + }, +/obj/effect/floor_decal/corner/blue/border{ + dir = 8 + }, +/turf/simulated/floor/tiled/white, +/area/crew_quarters/heads/sc/cmo) +"cNI" = ( +/obj/machinery/atmospherics/unary/vent_scrubber/on{ + dir = 4 + }, +/turf/simulated/floor/tiled/white, +/area/crew_quarters/heads/sc/cmo) +"cNJ" = ( +/obj/machinery/hologram/holopad, +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 9 + }, +/obj/structure/cable/green{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/obj/effect/floor_decal/industrial/outline/grey, +/turf/simulated/floor/tiled/white, +/area/crew_quarters/heads/sc/cmo) +"cNK" = ( +/obj/structure/bed/chair, +/turf/simulated/floor/tiled/white, +/area/crew_quarters/heads/sc/cmo) +"cNL" = ( +/obj/effect/floor_decal/steeldecal/steel_decals4, +/obj/effect/floor_decal/steeldecal/steel_decals4{ + dir = 10 + }, +/turf/simulated/floor/tiled/white, +/area/crew_quarters/heads/sc/cmo) +"cNM" = ( +/obj/machinery/door/firedoor/border_only, +/obj/machinery/door/airlock/command{ + id_tag = null; + name = "CMO's Quarters"; + req_access = list(40) + }, +/turf/simulated/floor/tiled/steel_grid, +/area/crew_quarters/heads/sc/cmo) +"cNN" = ( +/obj/machinery/atmospherics/pipe/manifold/hidden{ + dir = 8; + icon_state = "map" + }, +/obj/effect/floor_decal/industrial/warning{ + icon_state = "warning"; + dir = 1 + }, +/obj/effect/floor_decal/steeldecal/steel_decals4{ + dir = 6 + }, +/obj/effect/floor_decal/steeldecal/steel_decals4{ + dir = 1 + }, +/turf/simulated/floor/tiled/white, +/area/medical/sleeper) +"cNO" = ( +/obj/machinery/atmospherics/pipe/simple/hidden{ + dir = 4 + }, +/obj/effect/floor_decal/industrial/warning/corner{ + icon_state = "warningcorner"; + dir = 1 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/turf/simulated/floor/tiled/white, +/area/medical/sleeper) +"cNP" = ( +/obj/machinery/atmospherics/pipe/simple/hidden{ + dir = 4 + }, +/obj/machinery/hologram/holopad, +/obj/effect/floor_decal/industrial/outline/grey, +/turf/simulated/floor/tiled/white, +/area/medical/sleeper) +"cNQ" = ( +/obj/machinery/atmospherics/pipe/simple/hidden{ + dir = 4 + }, +/obj/effect/floor_decal/industrial/warning/corner{ + icon_state = "warningcorner"; + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/turf/simulated/floor/tiled/white, +/area/medical/sleeper) +"cNR" = ( +/obj/machinery/atmospherics/pipe/simple/hidden{ + dir = 9; + icon_state = "intact" + }, +/obj/effect/floor_decal/borderfloorwhite{ + dir = 4 + }, +/obj/effect/floor_decal/corner/paleblue/border{ + dir = 4 + }, +/obj/effect/floor_decal/industrial/warning{ + icon_state = "warning"; + dir = 1 + }, +/turf/simulated/floor/tiled/white, +/area/medical/sleeper) +"cNS" = ( +/obj/effect/floor_decal/borderfloorwhite{ + dir = 8 + }, +/obj/effect/floor_decal/corner/pink/border{ + dir = 8 + }, +/turf/simulated/floor/tiled/white, +/area/medical/sleeper) +"cNT" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/obj/structure/cable/green{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/turf/simulated/floor/tiled/white, +/area/medical/sleeper) +"cNU" = ( +/obj/machinery/hologram/holopad, +/obj/effect/floor_decal/industrial/outline/grey, +/turf/simulated/floor/tiled/white, +/area/medical/sleeper) +"cNV" = ( +/obj/machinery/atmospherics/unary/vent_pump/on, +/obj/structure/disposalpipe/segment, +/turf/simulated/floor/tiled/white, +/area/medical/sleeper) +"cNW" = ( +/obj/effect/floor_decal/borderfloorwhite{ + dir = 4 + }, +/obj/effect/floor_decal/corner/pink/border{ + dir = 4 + }, +/turf/simulated/floor/tiled/white, +/area/medical/sleeper) +"cNX" = ( +/obj/machinery/door/firedoor/border_only, +/obj/effect/floor_decal/industrial/warning/corner{ + icon_state = "warningcorner"; + dir = 4 + }, +/turf/simulated/floor/tiled/steel_grid, +/area/medical/cryo) +"cNY" = ( +/obj/effect/floor_decal/borderfloorwhite{ + dir = 8 + }, +/obj/effect/floor_decal/corner/paleblue/border{ + dir = 8 + }, +/obj/effect/floor_decal/industrial/warning{ + icon_state = "warning"; + dir = 1 + }, +/turf/simulated/floor/tiled/white, +/area/medical/cryo) +"cNZ" = ( +/obj/machinery/atmospherics/pipe/simple/hidden{ + dir = 5; + icon_state = "intact" + }, +/obj/effect/floor_decal/industrial/warning{ + icon_state = "warning"; + dir = 1 + }, +/turf/simulated/floor/tiled/white, +/area/medical/cryo) +"cOa" = ( +/obj/machinery/atmospherics/pipe/manifold/hidden, +/obj/effect/floor_decal/industrial/warning{ + icon_state = "warning"; + dir = 1 + }, +/turf/simulated/floor/tiled/white, +/area/medical/cryo) +"cOb" = ( +/obj/machinery/atmospherics/pipe/manifold/hidden, +/obj/effect/floor_decal/industrial/warning{ + icon_state = "warning"; + dir = 1 + }, +/obj/machinery/atmospherics/unary/vent_pump/on, +/turf/simulated/floor/tiled/white, +/area/medical/cryo) +"cOc" = ( +/obj/machinery/atmospherics/pipe/simple/hidden{ + dir = 9; + icon_state = "intact" + }, +/obj/machinery/iv_drip, +/obj/effect/floor_decal/borderfloorwhite{ + dir = 4 + }, +/obj/effect/floor_decal/corner/paleblue/border{ + dir = 4 + }, +/obj/effect/floor_decal/industrial/warning{ + icon_state = "warning"; + dir = 1 + }, +/obj/structure/sink{ + dir = 4; + icon_state = "sink"; + pixel_x = 11; + pixel_y = 0 + }, +/turf/simulated/floor/tiled/white, +/area/medical/cryo) +"cOd" = ( +/obj/structure/table/woodentable, +/obj/item/device/flashlight/lamp/green, +/obj/machinery/alarm{ + dir = 4; + pixel_x = -22; + pixel_y = 0 + }, +/turf/simulated/floor/carpet/sblucarpet, +/area/medical/psych) +"cOe" = ( +/obj/structure/table/woodentable, +/obj/machinery/computer/med_data/laptop, +/turf/simulated/floor/carpet/sblucarpet, +/area/medical/psych) +"cOf" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/structure/cable/green{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/obj/machinery/hologram/holopad, +/turf/simulated/floor/carpet/sblucarpet, +/area/medical/psych) +"cOg" = ( +/turf/simulated/floor/carpet/sblucarpet, +/area/medical/psych) +"cOh" = ( +/obj/structure/bed/psych, +/obj/machinery/firealarm{ + dir = 4; + pixel_x = 24 + }, +/turf/simulated/floor/carpet/sblucarpet, +/area/medical/psych) +"cOi" = ( +/obj/structure/morgue, +/obj/effect/floor_decal/borderfloor{ + dir = 9 + }, +/obj/effect/floor_decal/corner/paleblue/border{ + dir = 9 + }, +/turf/simulated/floor/tiled, +/area/medical/morgue) +"cOj" = ( +/obj/machinery/camera/network/medbay{ + c_tag = "MED - Morgue"; + dir = 2 + }, +/obj/structure/sink{ + pixel_y = 16 + }, +/obj/effect/floor_decal/borderfloor{ + dir = 1 + }, +/obj/effect/floor_decal/corner/paleblue/border{ + dir = 1 + }, +/turf/simulated/floor/tiled, +/area/medical/morgue) +"cOk" = ( +/obj/machinery/firealarm{ + dir = 2; + pixel_y = 24 + }, +/obj/machinery/light{ + dir = 1 + }, +/obj/effect/floor_decal/borderfloor{ + dir = 1 + }, +/obj/effect/floor_decal/corner/paleblue/border{ + dir = 1 + }, +/turf/simulated/floor/tiled, +/area/medical/morgue) +"cOl" = ( +/obj/structure/table/steel, +/obj/item/weapon/paper_bin{ + pixel_x = -3; + pixel_y = 7 + }, +/obj/item/weapon/clipboard, +/obj/item/weapon/pen/red{ + pixel_x = 2; + pixel_y = 6 + }, +/obj/item/weapon/pen, +/obj/item/device/retail_scanner/civilian{ + icon_state = "retail_idle"; + dir = 1 + }, +/obj/machinery/light{ + dir = 8 + }, +/obj/effect/floor_decal/borderfloor{ + dir = 9 + }, +/obj/effect/floor_decal/corner/brown/border{ + dir = 9 + }, +/turf/simulated/floor/tiled, +/area/quartermaster/office) +"cOm" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/structure/disposalpipe/segment, +/obj/effect/floor_decal/borderfloorwhite{ + dir = 8 + }, +/obj/effect/floor_decal/corner/paleblue/border{ + dir = 8 + }, +/turf/simulated/floor/tiled/white, +/area/medical/medbay2) +"cOn" = ( +/obj/structure/cable/green{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/obj/effect/floor_decal/borderfloorwhite/corner, +/obj/effect/floor_decal/corner/paleblue/bordercorner, +/turf/simulated/floor/tiled/white, +/area/medical/medbay2) +"cOo" = ( +/obj/structure/extinguisher_cabinet{ + pixel_x = -28; + pixel_y = 0 + }, +/obj/effect/floor_decal/borderfloorwhite/corner{ + dir = 8 + }, +/obj/effect/floor_decal/corner/paleblue/bordercorner{ + dir = 8 + }, +/turf/simulated/floor/tiled/white, +/area/medical/medical_lockerroom) +"cOp" = ( +/obj/machinery/atmospherics/unary/vent_scrubber/on{ + dir = 1 + }, +/turf/simulated/floor/tiled/white, +/area/medical/medical_lockerroom) +"cOq" = ( +/obj/structure/closet/secure_closet/medical3, +/obj/item/weapon/soap/nanotrasen, +/obj/effect/floor_decal/borderfloorwhite{ + dir = 4 + }, +/obj/effect/floor_decal/corner/paleblue/border{ + dir = 4 + }, +/turf/simulated/floor/tiled/white, +/area/medical/medical_lockerroom) +"cOr" = ( +/obj/machinery/embedded_controller/radio/airlock/airlock_controller{ + frequency = 1379; + id_tag = "crg_aft_airlock"; + pixel_x = -25; + req_access = list(13); + req_one_access = null; + tag_airpump = "crg_aft_pump"; + tag_chamber_sensor = "crg_aft_sensor"; + tag_exterior_door = "crg_aft_outer"; + tag_interior_door = "crg_aft_inner" + }, +/obj/machinery/atmospherics/unary/vent_pump/high_volume{ + dir = 4; + frequency = 1379; + id_tag = "crg_aft_pump" + }, +/obj/effect/floor_decal/industrial/warning{ + dir = 9 + }, +/turf/simulated/floor, +/area/maintenance/cargo) +"cOs" = ( +/obj/machinery/atmospherics/pipe/manifold4w/hidden, +/obj/effect/floor_decal/industrial/warning{ + icon_state = "warning"; + dir = 1 + }, +/turf/simulated/floor, +/area/maintenance/cargo) +"cOt" = ( +/obj/machinery/atmospherics/unary/vent_pump/high_volume{ + dir = 8; + frequency = 1379; + id_tag = "crg_aft_pump" + }, +/obj/effect/floor_decal/industrial/warning{ + icon_state = "warning"; + dir = 5 + }, +/turf/simulated/floor, +/area/maintenance/cargo) +"cOu" = ( +/obj/structure/bed/chair/comfy/brown{ + dir = 1 + }, +/obj/effect/floor_decal/borderfloor{ + dir = 8 + }, +/obj/effect/floor_decal/corner/brown/border{ + dir = 8 + }, +/turf/simulated/floor/tiled, +/area/quartermaster/office) +"cOv" = ( +/obj/effect/floor_decal/steeldecal/steel_decals4{ + dir = 8 + }, +/obj/effect/floor_decal/steeldecal/steel_decals4{ + dir = 5 + }, +/turf/simulated/floor/tiled, +/area/quartermaster/office) +"cOw" = ( +/obj/effect/floor_decal/industrial/hatch/yellow, +/turf/simulated/floor/tiled, +/area/quartermaster/office) +"cOx" = ( +/obj/effect/floor_decal/steeldecal/steel_decals_central5{ + dir = 4 + }, +/turf/simulated/floor/tiled, +/area/quartermaster/office) +"cOy" = ( +/obj/effect/floor_decal/borderfloorblack{ + dir = 4 + }, +/obj/effect/floor_decal/industrial/danger{ + dir = 4 + }, +/turf/simulated/floor/tiled/techfloor/grid, +/area/quartermaster/office) +"cOz" = ( +/obj/machinery/power/smes/buildable{ + charge = 0; + RCon_tag = "Substation - Cargo" + }, +/obj/structure/cable/green, +/obj/structure/cable/green{ + d2 = 2; + icon_state = "0-2" + }, +/turf/simulated/floor/plating, +/area/maintenance/substation/cargo) +"cOA" = ( +/obj/structure/cable{ + d2 = 2; + icon_state = "0-2"; + pixel_y = 0 + }, +/obj/machinery/power/terminal{ + dir = 8 + }, +/obj/effect/floor_decal/industrial/warning/corner, +/obj/effect/floor_decal/industrial/warning{ + dir = 4 + }, +/obj/structure/railing{ + dir = 4 + }, +/turf/simulated/floor/plating, +/area/maintenance/substation/cargo) +"cOB" = ( +/obj/structure/table/rack, +/obj/item/weapon/storage/toolbox/emergency, +/obj/random/medical/lite, +/obj/machinery/camera/network/medbay{ + c_tag = "MED - FA Station Fore"; + dir = 1 + }, +/obj/machinery/alarm{ + dir = 4; + icon_state = "alarm0"; + pixel_x = -22; + pixel_y = 0 + }, +/obj/structure/extinguisher_cabinet{ + pixel_y = -30 + }, +/obj/effect/floor_decal/borderfloorwhite{ + dir = 10 + }, +/obj/effect/floor_decal/corner/paleblue/border{ + dir = 10 + }, +/turf/simulated/floor/tiled/white, +/area/medical/first_aid_station/seconddeck/fore) +"cOC" = ( +/obj/machinery/light/small{ + dir = 8 + }, +/turf/simulated/floor/plating, +/area/maintenance/bar) +"cOD" = ( +/obj/machinery/door/firedoor/border_only, +/obj/machinery/door/airlock/maintenance{ + name = "Firefighting Equipment"; + req_access = newlist(); + req_one_access = list(12,25,27,28,35) + }, +/turf/simulated/floor/plating, +/area/maintenance/bar) +"cOE" = ( +/obj/effect/floor_decal/industrial/warning/corner, +/turf/simulated/floor/plating, +/area/maintenance/bar) +"cOF" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/obj/structure/cable{ + d1 = 1; + d2 = 2; + icon_state = "1-2"; + pixel_y = 0 + }, +/obj/effect/floor_decal/industrial/warning, +/turf/simulated/floor/plating, +/area/maintenance/bar) +"cOG" = ( +/obj/item/device/t_scanner, +/obj/item/weapon/storage/box/lights/mixed, +/obj/item/weapon/storage/box/lights/mixed, +/obj/structure/table/steel, +/obj/random/maintenance/clean, +/obj/random/maintenance/clean, +/obj/random/maintenance/cargo, +/obj/random/maintenance/cargo, +/turf/simulated/floor/plating, +/area/storage/emergency_storage/seconddeck/ap_emergency) +"cOH" = ( +/obj/machinery/floodlight, +/obj/machinery/light/small, +/turf/simulated/floor/plating, +/area/storage/emergency_storage/seconddeck/ap_emergency) +"cOI" = ( +/obj/machinery/space_heater, +/turf/simulated/floor/plating, +/area/storage/emergency_storage/seconddeck/ap_emergency) +"cOJ" = ( +/obj/structure/reagent_dispensers/watertank, +/turf/simulated/floor/plating, +/area/storage/emergency_storage/seconddeck/ap_emergency) +"cOK" = ( +/turf/simulated/wall, +/area/hallway/primary/seconddeck/apcenter) +"cOL" = ( +/obj/structure/disposalpipe/segment, +/obj/machinery/ai_status_display{ + pixel_x = -32; + pixel_y = 0 + }, +/obj/effect/floor_decal/borderfloor/corner{ + dir = 1 + }, +/obj/effect/floor_decal/corner/green/bordercorner{ + dir = 1 + }, +/turf/simulated/floor/tiled, +/area/hallway/primary/seconddeck/apcenter) +"cOM" = ( +/obj/structure/disposalpipe/segment, +/obj/machinery/status_display{ + density = 0; + layer = 4; + pixel_x = 32; + pixel_y = 0 + }, +/obj/machinery/camera/network/second_deck{ + c_tag = "Second Deck - Aft Hallway One"; + dir = 8 + }, +/obj/effect/floor_decal/borderfloor/corner{ + dir = 4 + }, +/obj/effect/floor_decal/corner/green/bordercorner{ + dir = 4 + }, +/turf/simulated/floor/tiled, +/area/hallway/primary/seconddeck/apcenter) +"cON" = ( +/obj/structure/ladder/updown, +/obj/effect/floor_decal/industrial/outline/yellow, +/turf/simulated/floor/plating, +/area/storage/emergency_storage/seconddeck/as_emergency) +"cOO" = ( +/obj/structure/cable{ + d1 = 1; + d2 = 2; + icon_state = "1-2"; + pixel_y = 0 + }, +/obj/structure/catwalk, +/turf/simulated/floor/plating, +/area/storage/emergency_storage/seconddeck/as_emergency) +"cOP" = ( +/obj/machinery/space_heater, +/obj/machinery/light/small{ + dir = 4; + pixel_y = 0 + }, +/turf/simulated/floor/plating, +/area/storage/emergency_storage/seconddeck/as_emergency) +"cOQ" = ( +/obj/machinery/atmospherics/pipe/manifold4w/hidden/yellow, +/turf/simulated/floor/tiled/hydro, +/area/rnd/xenobiology/xenoflora_isolation) +"cOR" = ( +/obj/machinery/firealarm{ + dir = 8; + pixel_x = -24 + }, +/turf/simulated/floor/plating, +/area/maintenance/substation/medical) +"cOS" = ( +/obj/structure/cable{ + d1 = 2; + d2 = 4; + icon_state = "2-4" + }, +/obj/structure/cable{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/obj/effect/floor_decal/industrial/warning{ + icon_state = "warning"; + dir = 4 + }, +/turf/simulated/floor/plating, +/area/maintenance/substation/medical) +"cOT" = ( +/obj/machinery/power/breakerbox/activated{ + RCon_tag = "Medical Substation Bypass" + }, +/turf/simulated/floor/plating, +/area/maintenance/substation/medical) +"cOU" = ( +/obj/structure/table/reinforced, +/obj/machinery/photocopier/faxmachine{ + department = "CMO's Office" + }, +/obj/machinery/keycard_auth{ + pixel_x = -26; + pixel_y = 0 + }, +/obj/effect/floor_decal/borderfloorwhite{ + dir = 8 + }, +/obj/effect/floor_decal/corner/blue/border{ + dir = 8 + }, +/turf/simulated/floor/tiled/white, +/area/crew_quarters/heads/sc/cmo) +"cOV" = ( +/turf/simulated/floor/tiled/white, +/area/crew_quarters/heads/sc/cmo) +"cOW" = ( +/obj/structure/table/reinforced, +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/structure/cable/green{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/turf/simulated/floor/tiled/white, +/area/crew_quarters/heads/sc/cmo) +"cOX" = ( +/obj/structure/table/reinforced, +/obj/item/weapon/paper_bin, +/obj/item/weapon/clipboard, +/obj/item/weapon/folder/white_cmo, +/obj/item/weapon/stamp/cmo, +/obj/item/weapon/pen/multi, +/turf/simulated/floor/tiled/white, +/area/crew_quarters/heads/sc/cmo) +"cOY" = ( +/obj/structure/table/reinforced, +/obj/machinery/computer/skills{ + pixel_y = 4 + }, +/obj/machinery/light{ + dir = 4; + icon_state = "tube1"; + pixel_x = 0 + }, +/obj/effect/floor_decal/borderfloorwhite/corner, +/obj/effect/floor_decal/corner/blue/bordercorner, +/turf/simulated/floor/tiled/white, +/area/crew_quarters/heads/sc/cmo) +"cOZ" = ( +/obj/machinery/atmospherics/pipe/simple/hidden, +/obj/effect/floor_decal/borderfloorwhite/corner{ + dir = 8 + }, +/obj/effect/floor_decal/corner/paleblue/bordercorner{ + dir = 8 + }, +/turf/simulated/floor/tiled/white, +/area/medical/sleeper) +"cPa" = ( +/obj/machinery/sleep_console{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/turf/simulated/floor/tiled/white, +/area/medical/sleeper) +"cPb" = ( +/obj/machinery/sleeper{ + dir = 4 + }, +/turf/simulated/floor/tiled/white, +/area/medical/sleeper) +"cPc" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/turf/simulated/floor/tiled/white, +/area/medical/sleeper) +"cPd" = ( +/obj/effect/floor_decal/borderfloorwhite{ + dir = 4 + }, +/obj/effect/floor_decal/corner/paleblue/border{ + dir = 4 + }, +/turf/simulated/floor/tiled/white, +/area/medical/sleeper) +"cPe" = ( +/obj/machinery/bodyscanner{ + dir = 1 + }, +/turf/simulated/floor/tiled/white, +/area/medical/sleeper) +"cPf" = ( +/obj/machinery/atmospherics/pipe/manifold/hidden/supply{ + dir = 8 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 6 + }, +/obj/structure/disposalpipe/segment, +/turf/simulated/floor/tiled/white, +/area/medical/sleeper) +"cPg" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, +/obj/effect/floor_decal/borderfloorwhite{ + dir = 4 + }, +/obj/effect/floor_decal/corner/pink/border{ + dir = 4 + }, +/turf/simulated/floor/tiled/white, +/area/medical/sleeper) +"cPh" = ( +/obj/machinery/door/firedoor/glass, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, +/turf/simulated/floor/tiled/steel_grid, +/area/medical/cryo) +"cPi" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, +/obj/effect/floor_decal/borderfloorwhite{ + dir = 8 + }, +/obj/effect/floor_decal/corner/paleblue/border{ + dir = 8 + }, +/turf/simulated/floor/tiled/white, +/area/medical/cryo) +"cPj" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{ + dir = 1 + }, +/turf/simulated/floor/tiled/white, +/area/medical/cryo) +"cPk" = ( +/obj/machinery/hologram/holopad, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, +/obj/effect/floor_decal/industrial/outline/grey, +/turf/simulated/floor/tiled/white, +/area/medical/cryo) +"cPl" = ( +/obj/machinery/atmospherics/pipe/manifold/hidden/supply{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 10 + }, +/obj/structure/cable/green{ + d1 = 2; + d2 = 4; + icon_state = "2-4" + }, +/turf/simulated/floor/tiled/white, +/area/medical/cryo) +"cPm" = ( +/obj/machinery/power/apc{ + dir = 4; + name = "east bump"; + pixel_x = 24 + }, +/obj/machinery/light_switch{ + dir = 2; + name = "light switch "; + pixel_x = 36; + pixel_y = 0 + }, +/obj/structure/cable/green{ + d2 = 8; + icon_state = "0-8" + }, +/obj/effect/floor_decal/borderfloorwhite{ + dir = 4 + }, +/obj/effect/floor_decal/corner/paleblue/border{ + dir = 4 + }, +/turf/simulated/floor/tiled/white, +/area/medical/cryo) +"cPn" = ( +/obj/structure/table/woodentable, +/obj/item/weapon/paper_bin, +/obj/item/weapon/pen, +/obj/item/weapon/clipboard, +/obj/item/weapon/folder/blue, +/obj/item/weapon/folder/red, +/obj/item/weapon/folder/blue, +/obj/machinery/light{ + dir = 8 + }, +/turf/simulated/floor/carpet/sblucarpet, +/area/medical/psych) +"cPo" = ( +/obj/structure/bed/chair/office/dark{ + dir = 1 + }, +/obj/machinery/button/remote/airlock{ + desc = "A remote control-switch for the office door."; + id = "mentaldoor"; + name = "office door control"; + pixel_x = 0; + pixel_y = -24 + }, +/obj/effect/landmark/start{ + name = "Psychiatrist" + }, +/obj/machinery/atmospherics/unary/vent_pump/on{ + dir = 4 + }, +/obj/machinery/camera/network/medbay{ + c_tag = "MED - Mental Health"; + dir = 1 + }, +/turf/simulated/floor/carpet/sblucarpet, +/area/medical/psych) +"cPp" = ( +/obj/machinery/power/apc{ + dir = 2; + name = "south bump"; + pixel_y = -24 + }, +/obj/machinery/light_switch{ + pixel_x = 11; + pixel_y = -24 + }, +/obj/machinery/button/windowtint{ + id = "psyco_tint"; + pixel_x = -11; + pixel_y = -24 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 9; + pixel_y = 0 + }, +/obj/structure/cable/green, +/turf/simulated/floor/carpet/sblucarpet, +/area/medical/psych) +"cPq" = ( +/obj/structure/extinguisher_cabinet{ + pixel_y = -30 + }, +/turf/simulated/floor/carpet/sblucarpet, +/area/medical/psych) +"cPr" = ( +/obj/structure/bed/chair/comfy/brown{ + dir = 8 + }, +/obj/item/device/radio/intercom/department/medbay{ + dir = 1; + pixel_x = 0; + pixel_y = -21 + }, +/obj/machinery/vending/wallmed1{ + pixel_x = 25 + }, +/turf/simulated/floor/carpet/sblucarpet, +/area/medical/psych) +"cPs" = ( +/obj/structure/morgue, +/obj/effect/floor_decal/borderfloor{ + dir = 8 + }, +/obj/effect/floor_decal/corner/paleblue/border{ + dir = 8 + }, +/turf/simulated/floor/tiled, +/area/medical/morgue) +"cPt" = ( +/turf/simulated/floor/tiled, +/area/medical/morgue) +"cPu" = ( +/obj/structure/morgue{ + icon_state = "morgue1"; + dir = 8 + }, +/obj/effect/floor_decal/borderfloor{ + dir = 5 + }, +/obj/effect/floor_decal/corner/paleblue/border{ + dir = 5 + }, +/turf/simulated/floor/tiled, +/area/medical/morgue) +"cPv" = ( +/obj/machinery/atmospherics/unary/vent_scrubber/on{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/machinery/alarm{ + dir = 4; + pixel_x = -22; + pixel_y = 0 + }, +/obj/structure/disposalpipe/segment, +/obj/effect/floor_decal/borderfloorwhite{ + dir = 8 + }, +/obj/effect/floor_decal/corner/paleblue/border{ + dir = 8 + }, +/turf/simulated/floor/tiled/white, +/area/medical/medbay2) +"cPw" = ( +/obj/structure/cable/green{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{ + dir = 4 + }, +/obj/effect/floor_decal/borderfloorwhite{ + dir = 4 + }, +/obj/effect/floor_decal/corner/paleblue/border{ + dir = 4 + }, +/turf/simulated/floor/tiled/white, +/area/medical/medbay2) +"cPx" = ( +/obj/machinery/status_display, +/turf/simulated/wall, +/area/medical/medical_lockerroom) +"cPy" = ( +/obj/structure/closet/wardrobe/medic_white, +/obj/item/device/flashlight/pen, +/obj/item/device/flashlight/pen, +/obj/effect/floor_decal/borderfloorwhite{ + dir = 10 + }, +/obj/effect/floor_decal/corner/paleblue/border{ + dir = 10 + }, +/turf/simulated/floor/tiled/white, +/area/medical/medical_lockerroom) +"cPz" = ( +/obj/structure/table/glass, +/obj/item/weapon/packageWrap, +/obj/item/weapon/hand_labeler, +/obj/machinery/alarm{ + dir = 1; + icon_state = "alarm0"; + pixel_y = -22 + }, +/obj/effect/floor_decal/borderfloorwhite, +/obj/effect/floor_decal/corner/paleblue/border, +/turf/simulated/floor/tiled/white, +/area/medical/medical_lockerroom) +"cPA" = ( +/obj/structure/table/rack, +/obj/item/weapon/storage/belt/medical, +/obj/item/weapon/storage/belt/medical, +/obj/item/weapon/storage/belt/medical, +/obj/item/weapon/storage/belt/medical, +/obj/item/weapon/storage/belt/medical, +/obj/item/clothing/accessory/stethoscope, +/obj/item/clothing/accessory/stethoscope, +/obj/item/clothing/accessory/stethoscope, +/obj/item/clothing/accessory/stethoscope, +/obj/item/clothing/accessory/stethoscope, +/obj/item/clothing/glasses/hud/health, +/obj/item/clothing/glasses/hud/health, +/obj/item/clothing/glasses/hud/health, +/obj/item/clothing/glasses/hud/health, +/obj/item/clothing/glasses/hud/health, +/obj/item/device/radio/intercom{ + dir = 4; + name = "Station Intercom (General)"; + pixel_x = 21 + }, +/obj/effect/floor_decal/borderfloorwhite{ + dir = 6 + }, +/obj/effect/floor_decal/corner/paleblue/border{ + dir = 6 + }, +/turf/simulated/floor/tiled/white, +/area/medical/medical_lockerroom) +"cPB" = ( +/obj/machinery/atmospherics/unary/vent_pump/high_volume{ + dir = 4; + frequency = 1379; + id_tag = "crg_aft_pump" + }, +/obj/machinery/airlock_sensor{ + frequency = 1379; + id_tag = "crg_aft_sensor"; + pixel_x = -24; + pixel_y = 0 + }, +/obj/effect/floor_decal/industrial/warning{ + dir = 10 + }, +/turf/simulated/floor, +/area/maintenance/cargo) +"cPC" = ( +/obj/machinery/atmospherics/pipe/manifold/hidden, +/obj/effect/floor_decal/industrial/warning, +/turf/simulated/floor, +/area/maintenance/cargo) +"cPD" = ( +/obj/machinery/atmospherics/unary/vent_pump/high_volume{ + dir = 8; + frequency = 1379; + id_tag = "crg_aft_pump" + }, +/obj/machinery/light/small{ + dir = 4; + pixel_y = 0 + }, +/obj/effect/floor_decal/industrial/warning{ + dir = 6 + }, +/turf/simulated/floor, +/area/maintenance/cargo) +"cPE" = ( +/obj/item/weapon/storage/toolbox/mechanical, +/turf/simulated/floor/plating, +/area/maintenance/cargo) +"cPF" = ( +/obj/structure/closet/crate, +/obj/random/contraband, +/obj/random/contraband, +/obj/random/maintenance/cargo, +/obj/random/maintenance/cargo, +/obj/random/maintenance/cargo, +/obj/random/maintenance/cargo, +/turf/simulated/floor/plating, +/area/maintenance/cargo) +"cPG" = ( +/obj/machinery/door/firedoor/border_only, +/obj/machinery/door/airlock/maintenance{ + name = "Cargo Maintenance"; + req_access = list(50) + }, +/turf/simulated/floor/plating, +/area/quartermaster/office) +"cPH" = ( +/obj/effect/floor_decal/industrial/outline/yellow, +/obj/machinery/navbeacon/delivery/north{ + location = "QM #1" + }, +/mob/living/bot/mulebot, +/turf/simulated/floor/tiled, +/area/quartermaster/office) +"cPI" = ( +/obj/effect/floor_decal/industrial/outline/yellow, +/obj/machinery/navbeacon/delivery/north{ + location = "QM #2" + }, +/mob/living/bot/mulebot, +/turf/simulated/floor/tiled, +/area/quartermaster/office) +"cPJ" = ( +/obj/effect/floor_decal/industrial/outline/yellow, +/obj/machinery/camera/network/cargo{ + c_tag = "CRG - Cargo Office Aft"; + dir = 1; + name = "security camera" + }, +/obj/machinery/navbeacon/delivery/north{ + location = "QM #3" + }, +/turf/simulated/floor/tiled, +/area/quartermaster/office) +"cPK" = ( +/obj/effect/floor_decal/borderfloor, +/obj/effect/floor_decal/corner/brown/border, +/obj/effect/floor_decal/borderfloor/corner2, +/obj/effect/floor_decal/corner/brown/bordercorner2, +/turf/simulated/floor/tiled, +/area/quartermaster/office) +"cPL" = ( +/obj/effect/floor_decal/borderfloor, +/obj/effect/floor_decal/corner/brown/border, +/turf/simulated/floor/tiled, +/area/quartermaster/office) +"cPM" = ( +/obj/effect/floor_decal/borderfloorblack{ + dir = 6 + }, +/obj/effect/floor_decal/industrial/danger{ + dir = 6 + }, +/turf/simulated/floor/tiled/techfloor/grid, +/area/quartermaster/office) +"cPN" = ( +/obj/machinery/power/breakerbox/activated{ + RCon_tag = "Cargo Substation Bypass" + }, +/turf/simulated/floor/plating, +/area/maintenance/substation/cargo) +"cPO" = ( +/obj/structure/cable{ + d1 = 2; + d2 = 8; + icon_state = "2-8" + }, +/obj/structure/cable{ + d1 = 1; + d2 = 2; + icon_state = "1-2"; + pixel_y = 0 + }, +/obj/effect/floor_decal/industrial/warning/corner{ + icon_state = "warningcorner"; + dir = 4 + }, +/turf/simulated/floor/plating, +/area/maintenance/substation/cargo) +"cPP" = ( +/obj/effect/floor_decal/industrial/warning{ + icon_state = "warning"; + dir = 1 + }, +/turf/simulated/floor/plating, +/area/maintenance/substation/cargo) +"cPQ" = ( +/obj/machinery/space_heater, +/turf/simulated/floor/plating, +/area/maintenance/bar) +"cPR" = ( +/obj/structure/table/rack{ + dir = 1 + }, +/obj/item/clothing/suit/fire/firefighter, +/obj/item/weapon/tank/oxygen, +/obj/item/clothing/mask/gas, +/obj/item/weapon/extinguisher, +/obj/item/clothing/head/hardhat/red, +/obj/item/clothing/glasses/meson, +/obj/random/maintenance/engineering, +/obj/random/maintenance/clean, +/turf/simulated/floor/plating, +/area/maintenance/bar) +"cPS" = ( +/obj/effect/wingrille_spawn/reinforced, +/turf/simulated/floor/plating, +/area/maintenance/bar) +"cPT" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/obj/structure/cable{ + d1 = 1; + d2 = 2; + icon_state = "1-2"; + pixel_y = 0 + }, +/obj/machinery/door/firedoor/border_only, +/turf/simulated/floor/plating, +/area/maintenance/bar) +"cPU" = ( +/obj/structure/catwalk, +/turf/simulated/floor/plating, +/area/maintenance/bar) +"cPV" = ( +/obj/structure/bed/chair/wood{ + dir = 4 + }, +/obj/structure/catwalk, +/turf/simulated/floor/plating, +/area/maintenance/bar) +"cPW" = ( +/obj/structure/table/gamblingtable, +/obj/item/clothing/mask/smokable/cigarette/cigar, +/obj/machinery/alarm{ + pixel_y = 22 + }, +/obj/structure/catwalk, +/turf/simulated/floor/plating, +/area/maintenance/bar) +"cPX" = ( +/obj/structure/table/rack{ + dir = 1 + }, +/obj/random/maintenance/engineering, +/obj/random/maintenance/engineering, +/obj/random/maintenance/clean, +/obj/random/maintenance/clean, +/obj/random/cash, +/turf/simulated/floor, +/area/maintenance/cargo) +"cPY" = ( +/obj/structure/bed/chair/wood{ + dir = 8 + }, +/obj/structure/catwalk, +/turf/simulated/floor/plating, +/area/maintenance/bar) +"cPZ" = ( +/obj/effect/floor_decal/industrial/warning{ + icon_state = "warning"; + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/yellow{ + dir = 4 + }, +/turf/simulated/floor/tiled/hydro, +/area/rnd/xenobiology/xenoflora_isolation) +"cQa" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, +/obj/structure/cable{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/obj/structure/catwalk, +/turf/simulated/floor/plating, +/area/maintenance/bar) +"cQb" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, +/obj/structure/cable{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/obj/machinery/door/firedoor/border_only, +/obj/machinery/door/airlock/maintenance{ + req_access = null; + req_one_access = list(12,25,27,28,35) + }, +/turf/simulated/floor/plating, +/area/maintenance/bar) +"cQc" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/obj/structure/cable{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/obj/structure/disposalpipe/segment, +/obj/structure/cable{ + d1 = 2; + d2 = 4; + icon_state = "2-4" + }, +/obj/effect/floor_decal/steeldecal/steel_decals4{ + dir = 6 + }, +/obj/effect/floor_decal/steeldecal/steel_decals4{ + dir = 1 + }, +/turf/simulated/floor/tiled, +/area/hallway/primary/seconddeck/apcenter) +"cQd" = ( +/obj/machinery/atmospherics/pipe/manifold4w/hidden/supply, +/obj/machinery/atmospherics/pipe/manifold4w/hidden/scrubbers, +/obj/structure/cable{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/obj/structure/cable{ + d1 = 1; + d2 = 4; + icon_state = "1-4" + }, +/turf/simulated/floor/tiled/monotile, +/area/hallway/primary/seconddeck/apcenter) +"cQe" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/obj/structure/cable{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/obj/structure/disposalpipe/segment{ + dir = 1; + icon_state = "pipe-c" + }, +/obj/effect/floor_decal/steeldecal/steel_decals4, +/obj/effect/floor_decal/steeldecal/steel_decals4{ + dir = 10 + }, +/turf/simulated/floor/tiled, +/area/hallway/primary/seconddeck/apcenter) +"cQf" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, +/obj/structure/cable{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/obj/machinery/door/firedoor/border_only, +/obj/machinery/door/airlock/maintenance{ + req_access = null; + req_one_access = list(5,12,25,27,28,35) + }, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/turf/simulated/floor/plating, +/area/maintenance/medbay) +"cQg" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, +/obj/structure/cable{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/structure/catwalk, +/turf/simulated/floor/plating, +/area/maintenance/medbay) +"cQh" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, +/obj/structure/cable{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/obj/structure/disposalpipe/segment{ + dir = 2; + icon_state = "pipe-c" + }, +/obj/structure/catwalk, +/turf/simulated/floor/plating, +/area/maintenance/medbay) +"cQi" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 10 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 10 + }, +/obj/structure/cable{ + d1 = 2; + d2 = 8; + icon_state = "2-8" + }, +/obj/structure/catwalk, +/turf/simulated/floor/plating, +/area/maintenance/medbay) +"cQj" = ( +/obj/structure/closet/crate, +/obj/random/toy, +/obj/random/plushie, +/obj/random/plushie, +/obj/random/action_figure, +/obj/machinery/alarm{ + pixel_y = 22 + }, +/turf/simulated/floor/plating, +/area/maintenance/medbay) +"cQk" = ( +/obj/structure/table/steel, +/obj/item/device/t_scanner, +/obj/random/tech_supply, +/obj/random/tech_supply, +/obj/machinery/alarm{ + pixel_y = 23 + }, +/obj/random/cash, +/turf/simulated/floor/plating, +/area/maintenance/bar) +"cQl" = ( +/obj/structure/table/steel, +/obj/item/weapon/storage/box/lights/mixed, +/obj/random/maintenance/clean, +/obj/random/maintenance/clean, +/obj/random/maintenance/clean, +/turf/simulated/floor/plating, +/area/maintenance/medbay) +"cQm" = ( +/obj/structure/closet/hydrant{ + pixel_y = -32 + }, +/obj/item/clothing/glasses/meson, +/obj/machinery/alarm{ + dir = 4; + icon_state = "alarm0"; + pixel_x = -22 + }, +/turf/simulated/floor/plating, +/area/storage/emergency_storage/seconddeck/as_emergency) +"cQn" = ( +/obj/structure/reagent_dispensers/watertank, +/turf/simulated/floor/plating, +/area/storage/emergency_storage/seconddeck/as_emergency) +"cQo" = ( +/obj/structure/cable{ + d1 = 1; + d2 = 2; + icon_state = "1-2"; + pixel_y = 0 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/turf/simulated/floor/plating, +/area/maintenance/medbay) +"cQp" = ( +/obj/structure/cable{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/obj/machinery/door/firedoor, +/obj/machinery/door/airlock/engineering{ + name = "Medbay Substation"; + req_one_access = list(11,24,5) + }, +/turf/simulated/floor/plating, +/area/maintenance/substation/medical) +"cQq" = ( +/obj/machinery/power/apc{ + dir = 8; + name = "west bump"; + pixel_x = -24 + }, +/obj/machinery/light_switch{ + pixel_x = -36; + pixel_y = -6 + }, +/obj/machinery/button/windowtint{ + id = "cmooffice"; + pixel_x = -36; + pixel_y = 6 + }, +/obj/structure/cable/green{ + d2 = 4; + icon_state = "0-4" + }, +/obj/effect/floor_decal/borderfloorwhite{ + dir = 8 + }, +/obj/effect/floor_decal/corner/blue/border{ + dir = 8 + }, +/turf/simulated/floor/tiled/white, +/area/crew_quarters/heads/sc/cmo) +"cQr" = ( +/obj/structure/cable/green{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/turf/simulated/floor/tiled/white, +/area/crew_quarters/heads/sc/cmo) +"cQs" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 5 + }, +/obj/structure/cable/green{ + d1 = 1; + d2 = 8; + icon_state = "1-8" + }, +/turf/simulated/floor/tiled/white, +/area/crew_quarters/heads/sc/cmo) +"cQt" = ( +/obj/structure/bed/chair/office/light{ + dir = 1 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/obj/machinery/button/remote/blast_door{ + desc = "A remote control-switch for shutters."; + id = "medbayquar"; + name = "Medbay Emergency Lockdown Control"; + pixel_x = -32; + pixel_y = 36; + req_access = list(5) + }, +/obj/machinery/button/remote/blast_door{ + desc = "A remote control-switch for shutters."; + id = "virologyquar"; + name = "Virology Emergency Lockdown Control"; + pixel_x = -28; + pixel_y = 28; + req_access = list(5) + }, +/obj/machinery/button/remote/airlock{ + desc = "A remote control switch for the CMO's office."; + id = "cmodoor"; + name = "CMO Office Door Control"; + pixel_x = -38; + pixel_y = 28 + }, +/obj/effect/landmark/start{ + name = "Chief Medical Officer" + }, +/turf/simulated/floor/tiled/white, +/area/crew_quarters/heads/sc/cmo) +"cQu" = ( +/obj/machinery/atmospherics/unary/vent_pump/on{ + dir = 8 + }, +/obj/structure/table/reinforced, +/obj/item/weapon/storage/belt/medical, +/obj/item/clothing/accessory/stethoscope, +/obj/item/clothing/glasses/sunglasses/medhud, +/obj/item/device/radio{ + frequency = 1487; + name = "Medbay Emergency Radio Link" + }, +/obj/item/device/megaphone, +/obj/effect/floor_decal/borderfloorwhite{ + dir = 4 + }, +/obj/effect/floor_decal/corner/blue/border{ + dir = 4 + }, +/turf/simulated/floor/tiled/white, +/area/crew_quarters/heads/sc/cmo) +"cQv" = ( +/obj/machinery/atmospherics/pipe/simple/hidden, +/obj/effect/floor_decal/borderfloorwhite{ + dir = 8 + }, +/obj/effect/floor_decal/corner/paleblue/border{ + dir = 8 + }, +/obj/effect/floor_decal/industrial/warning, +/turf/simulated/floor/tiled/white, +/area/medical/sleeper) +"cQw" = ( +/obj/effect/floor_decal/industrial/warning/corner{ + dir = 8 + }, +/obj/machinery/atmospherics/unary/vent_scrubber/on{ + dir = 1 + }, +/turf/simulated/floor/tiled/white, +/area/medical/sleeper) +"cQx" = ( +/turf/simulated/floor/tiled/white, +/area/medical/sleeper) +"cQy" = ( +/obj/machinery/atmospherics/unary/vent_pump/on{ + dir = 1 + }, +/turf/simulated/floor/tiled/white, +/area/medical/sleeper) +"cQz" = ( +/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{ + dir = 8 + }, +/obj/machinery/atmospherics/pipe/manifold/hidden/supply{ + dir = 8 + }, +/obj/structure/cable/green{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/obj/structure/cable/green{ + d1 = 1; + d2 = 4; + icon_state = "1-4" + }, +/turf/simulated/floor/tiled/white, +/area/medical/sleeper) +"cQA" = ( +/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{ + dir = 1 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/obj/structure/cable/green{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/obj/machinery/body_scanconsole{ + dir = 1 + }, +/turf/simulated/floor/tiled/white, +/area/medical/sleeper) +"cQB" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 9; + pixel_y = 0 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 9 + }, +/obj/structure/cable/green{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/obj/structure/disposalpipe/segment, +/turf/simulated/floor/tiled/white, +/area/medical/sleeper) +"cQC" = ( +/obj/structure/cable/green{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/obj/effect/floor_decal/borderfloorwhite{ + dir = 4 + }, +/obj/effect/floor_decal/corner/pink/border{ + dir = 4 + }, +/turf/simulated/floor/tiled/white, +/area/medical/sleeper) +"cQD" = ( +/obj/machinery/door/firedoor/border_only, +/obj/structure/cable/green{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/turf/simulated/floor/tiled/steel_grid, +/area/medical/cryo) +"cQE" = ( +/obj/structure/cable/green{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/obj/effect/floor_decal/borderfloorwhite{ + dir = 8 + }, +/obj/effect/floor_decal/corner/paleblue/border{ + dir = 8 + }, +/turf/simulated/floor/tiled/white, +/area/medical/cryo) +"cQF" = ( +/obj/machinery/atmospherics/unary/vent_scrubber/on{ + dir = 1 + }, +/obj/structure/cable/green{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/turf/simulated/floor/tiled/white, +/area/medical/cryo) +"cQG" = ( +/obj/structure/cable/green{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/turf/simulated/floor/tiled/white, +/area/medical/cryo) +"cQH" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/obj/structure/cable/green{ + d1 = 2; + d2 = 8; + icon_state = "2-8" + }, +/obj/structure/cable/green{ + d1 = 1; + d2 = 8; + icon_state = "1-8" + }, +/turf/simulated/floor/tiled/white, +/area/medical/cryo) +"cQI" = ( +/obj/machinery/firealarm{ + dir = 4; + pixel_x = 24 + }, +/obj/effect/floor_decal/borderfloorwhite/corner{ + dir = 4 + }, +/obj/effect/floor_decal/corner/paleblue/bordercorner{ + dir = 4 + }, +/turf/simulated/floor/tiled/white, +/area/medical/cryo) +"cQJ" = ( +/obj/machinery/atmospherics/unary/vent_pump/on, +/turf/simulated/floor/tiled, +/area/medical/morgue) +"cQK" = ( +/obj/machinery/hologram/holopad, +/obj/effect/floor_decal/industrial/outline/grey, +/turf/simulated/floor/tiled, +/area/medical/morgue) +"cQL" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/machinery/light{ + dir = 8 + }, +/obj/structure/disposalpipe/segment, +/obj/effect/floor_decal/borderfloorwhite{ + dir = 8 + }, +/obj/effect/floor_decal/corner/paleblue/border{ + dir = 8 + }, +/turf/simulated/floor/tiled/white, +/area/medical/medbay2) +"cQM" = ( +/obj/structure/cable/green{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/obj/machinery/camera/network/medbay{ + c_tag = "MED - Medical Hallway Starboard 3"; + dir = 8 + }, +/obj/effect/floor_decal/borderfloorwhite{ + dir = 4 + }, +/obj/effect/floor_decal/corner/paleblue/border{ + dir = 4 + }, +/turf/simulated/floor/tiled/white, +/area/medical/medbay2) +"cQN" = ( +/obj/machinery/door/airlock/external{ + frequency = 1379; + icon_state = "door_locked"; + id_tag = "crg_aft_outer"; + locked = 1; + name = "External Airlock Access"; + req_access = list(13) + }, +/turf/simulated/floor, +/area/maintenance/cargo) +"cQO" = ( +/obj/machinery/door/blast/regular{ + density = 0; + dir = 1; + icon_state = "pdoor0"; + id = "crglockdown"; + name = "Cargo Lockdown"; + opacity = 0 + }, +/turf/simulated/floor/plating, +/area/maintenance/cargo) +"cQP" = ( +/obj/structure/table/steel, +/obj/machinery/cell_charger, +/obj/item/clothing/head/soft, +/obj/item/clothing/head/soft, +/obj/machinery/light, +/turf/simulated/floor/tiled/dark, +/area/quartermaster/office) +"cQQ" = ( +/obj/structure/table/steel, +/obj/machinery/recharger, +/obj/item/weapon/stamp{ + pixel_x = -3; + pixel_y = 3 + }, +/obj/item/weapon/hand_labeler, +/turf/simulated/floor/tiled/dark, +/area/quartermaster/office) +"cQR" = ( +/obj/machinery/door/firedoor/border_only, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/obj/structure/cable/green{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/obj/machinery/door/airlock/glass_medical{ + name = "Patient Ward" + }, +/turf/simulated/floor/tiled/steel_grid, +/area/medical/patient_wing) +"cQS" = ( +/obj/structure/closet/crate, +/obj/random/drinkbottle, +/obj/random/tech_supply, +/obj/random/tech_supply, +/obj/random/action_figure, +/obj/random/plushie, +/obj/effect/floor_decal/industrial/warning/corner{ + dir = 4 + }, +/turf/simulated/floor/plating, +/area/maintenance/bar) +"cQT" = ( +/obj/structure/cable{ + d1 = 2; + d2 = 4; + icon_state = "2-4" + }, +/obj/machinery/atmospherics/pipe/manifold/hidden/supply{ + dir = 8 + }, +/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{ + dir = 8 + }, +/obj/structure/cable{ + d1 = 1; + d2 = 4; + icon_state = "1-4" + }, +/obj/effect/floor_decal/industrial/warning{ + dir = 1 + }, +/turf/simulated/floor/plating, +/area/maintenance/bar) +"cQU" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, +/obj/structure/cable{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/obj/effect/floor_decal/industrial/warning/corner{ + icon_state = "warningcorner"; + dir = 1 + }, +/turf/simulated/floor/plating, +/area/maintenance/bar) +"cQV" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, +/obj/structure/cable{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/obj/effect/floor_decal/industrial/warning{ + icon_state = "warning"; + dir = 4 + }, +/turf/simulated/floor/plating, +/area/maintenance/bar) +"cQW" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, +/obj/structure/cable{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/obj/machinery/door/firedoor/border_only, +/turf/simulated/floor/plating, +/area/maintenance/bar) +"cQX" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, +/obj/structure/cable{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/obj/effect/floor_decal/industrial/warning{ + dir = 8 + }, +/turf/simulated/floor/plating, +/area/maintenance/bar) +"cQY" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, +/obj/structure/cable{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/obj/structure/bed/chair/wood{ + dir = 4 + }, +/obj/structure/catwalk, +/turf/simulated/floor/plating, +/area/maintenance/bar) +"cQZ" = ( +/obj/structure/table/gamblingtable, +/obj/structure/catwalk, +/obj/random/cash, +/turf/simulated/floor/plating, +/area/maintenance/bar) +"cRa" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, +/obj/structure/cable{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/obj/structure/table/gamblingtable, +/obj/item/weapon/deck/cards, +/obj/structure/catwalk, +/turf/simulated/floor/plating, +/area/maintenance/bar) +"cRb" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, +/obj/structure/cable{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/obj/item/weapon/stool, +/obj/structure/catwalk, +/turf/simulated/floor/plating, +/area/maintenance/bar) +"cRc" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 9; + pixel_y = 0 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 9 + }, +/obj/structure/cable{ + d1 = 1; + d2 = 8; + icon_state = "1-8" + }, +/obj/structure/cable{ + d1 = 2; + d2 = 8; + icon_state = "2-8" + }, +/obj/structure/catwalk, +/turf/simulated/floor/plating, +/area/maintenance/bar) +"cRd" = ( +/obj/machinery/light/small, +/obj/structure/catwalk, +/turf/simulated/floor/plating, +/area/maintenance/bar) +"cRe" = ( +/obj/structure/closet/crate, +/obj/random/maintenance/cargo, +/obj/random/maintenance, +/obj/random/maintenance, +/obj/random/maintenance/clean, +/obj/structure/catwalk, +/turf/simulated/floor/plating, +/area/maintenance/bar) +"cRf" = ( +/obj/structure/disposalpipe/segment, +/obj/structure/cable{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/obj/item/device/radio/intercom{ + dir = 8; + name = "Station Intercom (General)"; + pixel_x = -21 + }, +/obj/effect/floor_decal/steeldecal/steel_decals4{ + dir = 8 + }, +/obj/effect/floor_decal/steeldecal/steel_decals4{ + dir = 5 + }, +/turf/simulated/floor/tiled, +/area/hallway/primary/seconddeck/apcenter) +"cRg" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/obj/machinery/light, +/turf/simulated/floor/tiled, +/area/hallway/primary/seconddeck/apcenter) +"cRh" = ( +/obj/machinery/firealarm{ + dir = 4; + pixel_x = 24 + }, +/obj/effect/floor_decal/steeldecal/steel_decals4{ + dir = 8 + }, +/obj/effect/floor_decal/steeldecal/steel_decals4{ + dir = 5 + }, +/turf/simulated/floor/tiled, +/area/hallway/primary/seconddeck/apcenter) +"cRi" = ( +/obj/structure/catwalk, +/turf/simulated/floor/plating, +/area/maintenance/medbay) +"cRj" = ( +/obj/machinery/light/small, +/obj/structure/catwalk, +/turf/simulated/floor/plating, +/area/maintenance/medbay) +"cRk" = ( +/obj/structure/reagent_dispensers/watertank, +/obj/structure/catwalk, +/turf/simulated/floor/plating, +/area/maintenance/medbay) +"cRl" = ( +/obj/structure/reagent_dispensers/fueltank, +/obj/structure/catwalk, +/turf/simulated/floor/plating, +/area/maintenance/medbay) +"cRm" = ( +/obj/random/obstruction, +/turf/simulated/floor/plating, +/area/maintenance/medbay) +"cRn" = ( +/obj/structure/disposalpipe/segment, +/obj/structure/catwalk, +/turf/simulated/floor/plating, +/area/maintenance/medbay) +"cRo" = ( +/obj/effect/floor_decal/industrial/warning/corner, +/turf/simulated/floor/plating, +/area/maintenance/medbay) +"cRp" = ( +/obj/machinery/door/firedoor/border_only, +/obj/structure/cable{ + d1 = 1; + d2 = 2; + icon_state = "1-2"; + pixel_y = 0 + }, +/obj/machinery/door/airlock{ + name = "Emergency Storage" + }, +/turf/simulated/floor/plating, +/area/storage/emergency_storage/seconddeck/as_emergency) +"cRq" = ( +/obj/structure/cable{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/obj/machinery/door/blast/regular{ + density = 0; + icon_state = "pdoor0"; + id = "medbayquar"; + name = "Medbay Emergency Lockdown Shutters"; + opacity = 0 + }, +/turf/simulated/floor/plating, +/area/maintenance/medbay) +"cRr" = ( +/obj/structure/sign/warning/high_voltage{ + pixel_y = 32 + }, +/obj/machinery/door/blast/regular{ + density = 0; + icon_state = "pdoor0"; + id = "medbayquar"; + name = "Medbay Emergency Lockdown Shutters"; + opacity = 0 + }, +/turf/simulated/floor/plating, +/area/maintenance/medbay) +"cRs" = ( +/obj/structure/closet/secure_closet/CMO, +/obj/machinery/ai_status_display{ + pixel_x = -32; + pixel_y = 0 + }, +/obj/structure/extinguisher_cabinet{ + pixel_y = -30 + }, +/obj/effect/floor_decal/borderfloorwhite{ + dir = 10 + }, +/obj/effect/floor_decal/corner/blue/border{ + dir = 10 + }, +/turf/simulated/floor/tiled/white, +/area/crew_quarters/heads/sc/cmo) +"cRt" = ( +/obj/structure/table/reinforced, +/obj/machinery/computer/med_data/laptop{ + pixel_x = 3; + pixel_y = 4 + }, +/obj/machinery/requests_console{ + announcementConsole = 1; + department = "Chief Medical Officer's Desk"; + departmentType = 5; + name = "Chief Medical Officer RC"; + pixel_x = 0; + pixel_y = -30 + }, +/obj/effect/floor_decal/borderfloorwhite, +/obj/effect/floor_decal/corner/blue/border, +/turf/simulated/floor/tiled/white, +/area/crew_quarters/heads/sc/cmo) +"cRu" = ( +/obj/machinery/computer/crew, +/obj/machinery/status_display{ + pixel_x = 0; + pixel_y = -32 + }, +/obj/effect/floor_decal/borderfloorwhite, +/obj/effect/floor_decal/corner/blue/border, +/turf/simulated/floor/tiled/white, +/area/crew_quarters/heads/sc/cmo) +"cRv" = ( +/obj/structure/filingcabinet/chestdrawer{ + dir = 1 + }, +/obj/machinery/firealarm{ + dir = 1; + pixel_y = -24 + }, +/obj/effect/floor_decal/borderfloorwhite, +/obj/effect/floor_decal/corner/blue/border, +/turf/simulated/floor/tiled/white, +/area/crew_quarters/heads/sc/cmo) +"cRw" = ( +/obj/machinery/photocopier, +/obj/item/device/radio/intercom/department/medbay{ + dir = 1; + pixel_x = 0; + pixel_y = -21 + }, +/obj/effect/floor_decal/borderfloorwhite{ + dir = 6 + }, +/obj/effect/floor_decal/corner/blue/border{ + dir = 6 + }, +/turf/simulated/floor/tiled/white, +/area/crew_quarters/heads/sc/cmo) +"cRx" = ( +/obj/machinery/portable_atmospherics/canister/oxygen, +/obj/effect/floor_decal/industrial/hatch/yellow, +/obj/machinery/atmospherics/portables_connector{ + dir = 1 + }, +/turf/simulated/floor/tiled/techmaint, +/area/medical/sleeper) +"cRy" = ( +/obj/structure/closet/secure_closet/medical1, +/obj/item/device/radio/intercom/department/medbay{ + dir = 1; + pixel_x = 0; + pixel_y = -21 + }, +/obj/effect/floor_decal/borderfloorwhite, +/obj/effect/floor_decal/corner/paleblue/border, +/obj/effect/floor_decal/industrial/warning{ + icon_state = "warning"; + dir = 8 + }, +/turf/simulated/floor/tiled/white, +/area/medical/sleeper) +"cRz" = ( +/obj/machinery/iv_drip, +/obj/machinery/firealarm{ + dir = 1; + pixel_y = -24 + }, +/obj/machinery/light, +/obj/effect/floor_decal/borderfloorwhite, +/obj/effect/floor_decal/corner/paleblue/border, +/turf/simulated/floor/tiled/white, +/area/medical/sleeper) +"cRA" = ( +/obj/structure/table/glass, +/obj/item/weapon/reagent_containers/spray/cleaner{ + pixel_x = 2; + pixel_y = 2 + }, +/obj/item/weapon/reagent_containers/spray/cleaner{ + pixel_x = -2; + pixel_y = -2 + }, +/obj/item/device/radio/intercom{ + name = "Station Intercom (General)"; + pixel_y = -21 + }, +/obj/machinery/camera/network/medbay{ + c_tag = "MED - Acute"; + dir = 1 + }, +/obj/item/device/defib_kit/loaded, +/obj/item/device/defib_kit/loaded, +/obj/effect/floor_decal/borderfloorwhite, +/obj/effect/floor_decal/corner/paleblue/border, +/turf/simulated/floor/tiled/white, +/area/medical/sleeper) +"cRB" = ( +/obj/structure/table/glass, +/obj/effect/floor_decal/borderfloorwhite{ + dir = 6 + }, +/obj/effect/floor_decal/corner/paleblue/border{ + dir = 6 + }, +/obj/structure/closet/secure_closet/medical_wall/pills{ + pixel_x = 32 + }, +/turf/simulated/floor/tiled/white, +/area/medical/sleeper) +"cRC" = ( +/obj/structure/table/glass, +/obj/item/roller, +/obj/item/roller{ + pixel_y = 8 + }, +/obj/machinery/light, +/obj/effect/floor_decal/borderfloorwhite{ + dir = 8 + }, +/obj/effect/floor_decal/corner/pink/border{ + dir = 8 + }, +/turf/simulated/floor/tiled/white, +/area/medical/sleeper) +"cRD" = ( +/obj/structure/cable/green{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/effect/floor_decal/steeldecal/steel_decals4{ + dir = 8 + }, +/obj/effect/floor_decal/steeldecal/steel_decals4{ + dir = 5 + }, +/turf/simulated/floor/tiled/white, +/area/medical/sleeper) +"cRE" = ( +/obj/machinery/atmospherics/unary/vent_scrubber/on{ + dir = 1 + }, +/obj/machinery/camera/network/medbay{ + c_tag = "MED - Diagnostics"; + dir = 1 + }, +/obj/effect/floor_decal/borderfloorwhite/corner2, +/obj/effect/floor_decal/borderfloorwhite/corner2{ + dir = 9 + }, +/obj/effect/floor_decal/corner/pink/bordercorner2, +/obj/effect/floor_decal/corner/pink/bordercorner2{ + dir = 9 + }, +/turf/simulated/floor/tiled/white, +/area/medical/sleeper) +"cRF" = ( +/obj/structure/disposalpipe/segment{ + dir = 1; + icon_state = "pipe-c" + }, +/obj/effect/floor_decal/steeldecal/steel_decals4{ + dir = 8 + }, +/obj/effect/floor_decal/steeldecal/steel_decals4{ + dir = 5 + }, +/turf/simulated/floor/tiled/white, +/area/medical/sleeper) +"cRG" = ( +/obj/machinery/iv_drip, +/obj/structure/closet/secure_closet/medical_wall{ + name = "O- Blood Locker"; + pixel_x = 0; + pixel_y = -32 + }, +/obj/item/weapon/reagent_containers/blood/OMinus, +/obj/item/weapon/reagent_containers/blood/OMinus, +/obj/item/weapon/reagent_containers/blood/OMinus, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/effect/floor_decal/borderfloorwhite{ + dir = 4 + }, +/obj/effect/floor_decal/corner/pink/border{ + dir = 4 + }, +/turf/simulated/floor/tiled/white, +/area/medical/sleeper) +"cRH" = ( +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/turf/simulated/wall, +/area/medical/cryo) +"cRI" = ( +/obj/machinery/disposal, +/obj/structure/extinguisher_cabinet{ + pixel_x = -28; + pixel_y = 0 + }, +/obj/structure/disposalpipe/trunk{ + dir = 8 + }, +/obj/effect/floor_decal/borderfloorwhite{ + dir = 10 + }, +/obj/effect/floor_decal/corner/paleblue/border{ + dir = 10 + }, +/turf/simulated/floor/tiled/white, +/area/medical/cryo) +"cRJ" = ( +/obj/machinery/sleep_console{ + dir = 4 + }, +/obj/item/device/radio/intercom{ + name = "Station Intercom (General)"; + pixel_y = -21 + }, +/obj/machinery/camera/network/medbay{ + c_tag = "MED - Cryogenics"; + dir = 1 + }, +/obj/effect/floor_decal/borderfloorwhite, +/obj/effect/floor_decal/corner/paleblue/border, +/turf/simulated/floor/tiled/white, +/area/medical/cryo) +"cRK" = ( +/obj/machinery/sleeper{ + dir = 4 + }, +/obj/effect/floor_decal/borderfloorwhite, +/obj/effect/floor_decal/corner/paleblue/border, +/turf/simulated/floor/tiled/white, +/area/medical/cryo) +"cRL" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 5 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 5 + }, +/obj/structure/cable/green{ + d1 = 1; + d2 = 4; + icon_state = "1-4" + }, +/obj/item/device/radio/intercom/department/medbay{ + dir = 1; + pixel_x = 0; + pixel_y = -21 + }, +/obj/effect/floor_decal/borderfloorwhite/corner{ + dir = 8 + }, +/obj/effect/floor_decal/corner/paleblue/bordercorner{ + dir = 8 + }, +/turf/simulated/floor/tiled/white, +/area/medical/cryo) +"cRM" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/obj/structure/cable/green{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/obj/effect/floor_decal/steeldecal/steel_decals4, +/obj/effect/floor_decal/steeldecal/steel_decals4{ + dir = 10 + }, +/turf/simulated/floor/tiled/white, +/area/medical/cryo) +"cRN" = ( +/obj/machinery/door/firedoor/glass, +/obj/machinery/door/airlock/glass_medical{ + id_tag = "GeneticsDoor"; + name = "Cloning Laboratory"; + req_access = list(66) + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/obj/structure/cable/green{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/turf/simulated/floor/tiled/steel_grid, +/area/medical/genetics_cloning) +"cRO" = ( +/obj/machinery/power/apc{ + dir = 1; + name = "north bump"; + pixel_x = 0; + pixel_y = 24 + }, +/obj/machinery/light_switch{ + pixel_x = 11; + pixel_y = 24 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 10 + }, +/obj/structure/cable/green{ + d2 = 8; + icon_state = "0-8" + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, +/obj/effect/floor_decal/steeldecal/steel_decals4{ + dir = 6 + }, +/obj/effect/floor_decal/steeldecal/steel_decals4{ + dir = 1 + }, +/turf/simulated/floor/tiled/white, +/area/medical/genetics_cloning) +"cRP" = ( +/obj/machinery/atmospherics/unary/vent_scrubber/on{ + dir = 8 + }, +/obj/machinery/alarm{ + pixel_y = 22 + }, +/obj/effect/floor_decal/borderfloorwhite{ + dir = 1 + }, +/obj/effect/floor_decal/corner/purple/border{ + dir = 1 + }, +/obj/effect/floor_decal/borderfloorwhite/corner2{ + dir = 4 + }, +/obj/effect/floor_decal/corner/purple/bordercorner2{ + dir = 4 + }, +/turf/simulated/floor/tiled/white, +/area/medical/genetics_cloning) +"cRQ" = ( +/obj/item/device/radio/intercom/department/medbay{ + dir = 2; + pixel_x = 0; + pixel_y = 21 + }, +/obj/machinery/camera/network/medbay{ + c_tag = "MED - Cloning"; + dir = 2 + }, +/obj/effect/floor_decal/borderfloorwhite{ + dir = 1 + }, +/obj/effect/floor_decal/corner/purple/border{ + dir = 1 + }, +/turf/simulated/floor/tiled/white, +/area/medical/genetics_cloning) +"cRR" = ( +/obj/machinery/light{ + dir = 1 + }, +/obj/effect/floor_decal/borderfloorwhite{ + dir = 1 + }, +/obj/effect/floor_decal/corner/purple/border{ + dir = 1 + }, +/obj/machinery/organ_printer/flesh/full, +/turf/simulated/floor/tiled/white, +/area/medical/genetics_cloning) +"cRS" = ( +/obj/structure/table/standard, +/obj/item/weapon/storage/laundry_basket, +/obj/machinery/firealarm{ + pixel_y = 24 + }, +/obj/effect/floor_decal/borderfloorwhite{ + dir = 1 + }, +/obj/effect/floor_decal/corner/purple/border{ + dir = 1 + }, +/obj/item/weapon/storage/box/bodybags, +/turf/simulated/floor/tiled/white, +/area/medical/genetics_cloning) +"cRT" = ( +/obj/structure/filingcabinet/chestdrawer{ + desc = "A large drawer filled with autopsy reports."; + name = "Autopsy Reports" + }, +/obj/machinery/alarm{ + dir = 4; + pixel_x = -22; + pixel_y = 0 + }, +/obj/effect/floor_decal/borderfloor/corner{ + dir = 1 + }, +/obj/effect/floor_decal/corner/paleblue/bordercorner{ + dir = 1 + }, +/turf/simulated/floor/tiled, +/area/medical/morgue) +"cRU" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/turf/simulated/floor/tiled, +/area/medical/morgue) +"cRV" = ( +/obj/structure/table/steel, +/obj/item/weapon/storage/box/bodybags, +/obj/item/weapon/storage/box/bodybags, +/obj/machinery/power/apc{ + dir = 4; + name = "east bump"; + pixel_x = 24 + }, +/obj/machinery/light_switch{ + dir = 2; + name = "light switch "; + pixel_x = 36; + pixel_y = 0 + }, +/obj/structure/cable/green{ + d2 = 2; + icon_state = "0-2" + }, +/obj/effect/floor_decal/borderfloor/corner{ + dir = 4 + }, +/obj/effect/floor_decal/corner/paleblue/bordercorner{ + dir = 4 + }, +/turf/simulated/floor/tiled, +/area/medical/morgue) +"cRW" = ( +/obj/machinery/atmospherics/pipe/manifold/hidden/supply{ + dir = 8 + }, +/obj/structure/disposalpipe/segment, +/obj/effect/floor_decal/borderfloorwhite/corner{ + dir = 1 + }, +/obj/effect/floor_decal/corner/paleblue/bordercorner{ + dir = 1 + }, +/turf/simulated/floor/tiled/white, +/area/medical/medbay2) +"cRX" = ( +/obj/structure/cable/green{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/obj/machinery/atmospherics/unary/vent_pump/on{ + dir = 8 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/obj/machinery/firealarm{ + dir = 4; + pixel_x = 24 + }, +/obj/effect/floor_decal/borderfloorwhite/corner{ + dir = 4 + }, +/obj/effect/floor_decal/corner/paleblue/bordercorner{ + dir = 4 + }, +/turf/simulated/floor/tiled/white, +/area/medical/medbay2) +"cRY" = ( +/obj/machinery/light/small{ + dir = 8 + }, +/obj/effect/floor_decal/industrial/warning{ + icon_state = "warning"; + dir = 1 + }, +/turf/simulated/floor/airless, +/area/maintenance/cargo) +"cRZ" = ( +/obj/effect/floor_decal/industrial/warning{ + icon_state = "warning"; + dir = 1 + }, +/turf/simulated/floor/airless, +/area/maintenance/cargo) +"cSa" = ( +/obj/machinery/access_button{ + command = "cycle_exterior"; + frequency = 1379; + master_tag = "crg_aft_airlock"; + name = "exterior access button"; + pixel_x = 0; + pixel_y = 25; + req_one_access = list(13) + }, +/obj/effect/floor_decal/industrial/warning/corner{ + icon_state = "warningcorner"; + dir = 1 + }, +/turf/simulated/floor/airless, +/area/maintenance/cargo) +"cSb" = ( +/obj/structure/cable{ + d1 = 1; + d2 = 4; + icon_state = "1-4" + }, +/turf/simulated/floor/plating, +/area/maintenance/cargo) +"cSc" = ( +/obj/machinery/atmospherics/pipe/manifold/hidden/yellow, +/turf/simulated/floor/tiled/hydro, +/area/rnd/xenobiology/xenoflora_isolation) +"cSd" = ( +/obj/structure/table/rack{ + dir = 1 + }, +/obj/random/maintenance, +/obj/random/maintenance, +/obj/random/maintenance, +/obj/random/maintenance, +/turf/simulated/floor/plating, +/area/maintenance/cargo) +"cSe" = ( +/obj/structure/table/rack{ + dir = 1 + }, +/obj/random/toy, +/obj/random/tank, +/obj/random/maintenance, +/obj/random/maintenance, +/obj/random/maintenance, +/obj/random/maintenance, +/turf/simulated/floor/plating, +/area/maintenance/cargo) +"cSf" = ( +/obj/structure/grille, +/obj/structure/window/reinforced, +/obj/structure/window/reinforced{ + dir = 8 + }, +/turf/simulated/floor/plating, +/area/maintenance/cargo) +"cSg" = ( +/obj/item/weapon/material/shard{ + icon_state = "medium" + }, +/obj/item/stack/rods, +/turf/simulated/floor/plating, +/area/maintenance/cargo) +"cSh" = ( +/obj/item/stack/material/glass/reinforced, +/turf/simulated/floor/plating, +/area/maintenance/cargo) +"cSi" = ( +/obj/structure/cable{ + d2 = 2; + icon_state = "0-2"; + pixel_y = 0 + }, +/obj/machinery/power/apc{ + dir = 1; + name = "north bump"; + pixel_x = 0; + pixel_y = 24 + }, +/obj/structure/catwalk, +/turf/simulated/floor/plating, +/area/maintenance/cargo) +"cSj" = ( +/obj/effect/floor_decal/industrial/warning/corner{ + dir = 4 + }, +/turf/simulated/floor/plating, +/area/maintenance/cargo) +"cSk" = ( +/obj/effect/floor_decal/industrial/warning{ + icon_state = "warning"; + dir = 1 + }, +/turf/simulated/floor/plating, +/area/maintenance/cargo) +"cSl" = ( +/obj/effect/floor_decal/industrial/warning/corner{ + icon_state = "warningcorner"; + dir = 1 + }, +/turf/simulated/floor/plating, +/area/maintenance/cargo) +"cSm" = ( +/obj/structure/table/rack{ + dir = 1 + }, +/obj/random/maintenance, +/obj/random/maintenance, +/obj/random/maintenance/clean, +/obj/random/maintenance/clean, +/turf/simulated/floor/plating, +/area/maintenance/cargo) +"cSn" = ( +/obj/structure/cable{ + d1 = 1; + d2 = 2; + icon_state = "1-2"; + pixel_y = 0 + }, +/obj/machinery/door/blast/regular{ + density = 0; + dir = 1; + icon_state = "pdoor0"; + id = "crglockdown"; + name = "Cargo Lockdown"; + opacity = 0 + }, +/turf/simulated/floor/plating, +/area/maintenance/cargo) +"cSo" = ( +/obj/random/obstruction, +/turf/simulated/floor, +/area/maintenance/cargo) +"cSp" = ( +/obj/structure/table/steel, +/obj/random/maintenance/clean, +/obj/random/maintenance/clean, +/obj/random/maintenance/clean, +/obj/random/maintenance/clean, +/obj/random/plushielarge, +/turf/simulated/floor/plating, +/area/maintenance/medbay) +"cSq" = ( +/obj/structure/reagent_dispensers/watertank, +/turf/simulated/floor/plating, +/area/maintenance/bar) +"cSr" = ( +/obj/effect/floor_decal/industrial/warning/corner{ + dir = 4 + }, +/obj/structure/reagent_dispensers/fueltank, +/turf/simulated/floor/plating, +/area/maintenance/bar) +"cSs" = ( +/obj/effect/floor_decal/industrial/warning/corner{ + icon_state = "warningcorner"; + dir = 1 + }, +/obj/structure/closet/crate, +/obj/random/maintenance/cargo, +/obj/random/maintenance/cargo, +/obj/random/maintenance/cargo, +/obj/random/maintenance/cargo, +/obj/random/maintenance/cargo, +/turf/simulated/floor/plating, +/area/maintenance/bar) +"cSt" = ( +/obj/machinery/power/apc{ + dir = 2; + name = "south bump"; + pixel_y = -24 + }, +/obj/structure/cable, +/obj/structure/catwalk, +/turf/simulated/floor/plating, +/area/maintenance/bar) +"cSu" = ( +/turf/simulated/wall, +/area/crew_quarters/bar) +"cSv" = ( +/obj/structure/plasticflaps{ + opacity = 1 + }, +/obj/machinery/door/firedoor/border_only, +/obj/effect/floor_decal/industrial/loading, +/obj/machinery/navbeacon/delivery/south{ + location = "Bar" + }, +/turf/simulated/floor/tiled, +/area/crew_quarters/bar) +"cSw" = ( +/obj/machinery/door/firedoor/border_only, +/obj/machinery/door/airlock/maintenance{ + name = "Bar Maintenance"; + req_access = list(25) + }, +/turf/simulated/floor/plating, +/area/crew_quarters/bar) +"cSx" = ( +/obj/machinery/door/firedoor/glass, +/obj/machinery/door/airlock/glass{ + name = "Central Access" + }, +/obj/structure/disposalpipe/segment, +/obj/structure/cable{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/turf/simulated/floor/tiled/steel_grid, +/area/hallway/primary/seconddeck/aft) +"cSy" = ( +/obj/effect/wingrille_spawn/reinforced, +/obj/machinery/door/firedoor/border_only, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/turf/simulated/floor/plating, +/area/hallway/primary/seconddeck/aft) +"cSz" = ( +/obj/machinery/door/firedoor/glass, +/obj/machinery/door/airlock/glass{ + name = "Central Access" + }, +/turf/simulated/floor/tiled/steel_grid, +/area/hallway/primary/seconddeck/aft) +"cSA" = ( +/turf/simulated/wall, +/area/crew_quarters/coffee_shop) +"cSB" = ( +/obj/structure/disposalpipe/segment, +/turf/simulated/floor/plating, +/area/maintenance/medbay) +"cSC" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 5 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 5 + }, +/obj/structure/cable{ + d1 = 1; + d2 = 4; + icon_state = "1-4" + }, +/turf/simulated/floor/plating, +/area/maintenance/medbay) +"cSD" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, +/obj/structure/cable{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/turf/simulated/floor/plating, +/area/maintenance/medbay) +"cSE" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, +/obj/structure/cable{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/obj/effect/floor_decal/industrial/warning{ + icon_state = "warning"; + dir = 4 + }, +/turf/simulated/floor/plating, +/area/maintenance/medbay) +"cSF" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, +/obj/structure/cable{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/obj/machinery/door/firedoor/border_only, +/turf/simulated/floor/plating, +/area/maintenance/medbay) +"cSG" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, +/obj/structure/cable{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/obj/effect/floor_decal/industrial/warning{ + dir = 8 + }, +/turf/simulated/floor/plating, +/area/maintenance/medbay) +"cSH" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, +/obj/structure/cable{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/obj/structure/cable{ + d1 = 1; + d2 = 4; + icon_state = "1-4" + }, +/turf/simulated/floor/plating, +/area/maintenance/medbay) +"cSI" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 9 + }, +/obj/structure/cable{ + d1 = 1; + d2 = 8; + icon_state = "1-8" + }, +/obj/structure/cable{ + d1 = 1; + d2 = 4; + icon_state = "1-4" + }, +/obj/machinery/atmospherics/pipe/manifold/hidden/supply, +/turf/simulated/floor/plating, +/area/maintenance/medbay) +"cSJ" = ( +/obj/structure/cable{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/obj/effect/floor_decal/industrial/warning/corner{ + dir = 4 + }, +/obj/structure/cable{ + d1 = 2; + d2 = 8; + icon_state = "2-8" + }, +/turf/simulated/floor/plating, +/area/maintenance/medbay) +"cSK" = ( +/obj/structure/cable{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/obj/structure/cable{ + d1 = 2; + d2 = 8; + icon_state = "2-8" + }, +/obj/machinery/atmospherics/pipe/simple/visible/universal{ + dir = 4 + }, +/obj/effect/floor_decal/industrial/warning{ + icon_state = "warning"; + dir = 1 + }, +/turf/simulated/floor/plating, +/area/maintenance/medbay) +"cSL" = ( +/obj/structure/morgue{ + icon_state = "morgue1"; + dir = 8 + }, +/obj/effect/floor_decal/borderfloor{ + dir = 4 + }, +/obj/effect/floor_decal/corner/paleblue/border{ + dir = 4 + }, +/turf/simulated/floor/tiled, +/area/medical/morgue) +"cSM" = ( +/obj/effect/floor_decal/industrial/warning{ + icon_state = "warning"; + dir = 1 + }, +/obj/machinery/atmospherics/pipe/simple/hidden{ + dir = 10; + icon_state = "intact" + }, +/turf/simulated/floor/plating, +/area/maintenance/medbay) +"cSN" = ( +/obj/machinery/status_display, +/turf/simulated/wall, +/area/medical/sleeper) +"cSO" = ( +/obj/machinery/ai_status_display, +/turf/simulated/wall, +/area/medical/sleeper) +"cSP" = ( +/turf/simulated/wall, +/area/medical/ward) +"cSQ" = ( +/obj/machinery/door/firedoor/glass, +/obj/structure/cable/green{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/machinery/door/airlock/glass_medical{ + id_tag = "Surgery"; + name = "Patient Ward"; + req_access = list(5) + }, +/turf/simulated/floor/tiled/steel_grid, +/area/medical/ward) +"cSR" = ( +/obj/effect/wingrille_spawn/reinforced, +/obj/machinery/door/firedoor/border_only, +/turf/simulated/floor/plating, +/area/medical/ward) +"cSS" = ( +/obj/machinery/door/firedoor/glass, +/obj/machinery/door/airlock/glass_medical{ + id_tag = "Surgery"; + name = "Patient Ward"; + req_access = list(5) + }, +/turf/simulated/floor/tiled/steel_grid, +/area/medical/ward) +"cST" = ( +/obj/machinery/ai_status_display, +/turf/simulated/wall, +/area/medical/cryo) +"cSU" = ( +/turf/simulated/wall, +/area/medical/genetics_cloning) +"cSV" = ( +/obj/machinery/button/remote/airlock{ + desc = "A remote control switch for the medbay foyer."; + id = "GeneticsDoor"; + name = "Door Control"; + pixel_x = -26; + pixel_y = 0 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 5 + }, +/obj/effect/floor_decal/borderfloorwhite/corner{ + dir = 8 + }, +/obj/effect/floor_decal/corner/purple/bordercorner{ + dir = 8 + }, +/turf/simulated/floor/tiled/white, +/area/medical/genetics_cloning) +"cSW" = ( +/obj/item/weapon/stool, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/obj/effect/landmark/start{ + name = "Geneticist" + }, +/obj/machinery/hologram/holopad, +/turf/simulated/floor/tiled/white, +/area/medical/genetics_cloning) +"cSX" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/turf/simulated/floor/tiled/white, +/area/medical/genetics_cloning) +"cSY" = ( +/obj/machinery/atmospherics/unary/vent_pump/on{ + dir = 8 + }, +/obj/effect/landmark/start{ + name = "Geneticist" + }, +/turf/simulated/floor/tiled/white, +/area/medical/genetics_cloning) +"cSZ" = ( +/obj/effect/floor_decal/steeldecal/steel_decals4, +/turf/simulated/floor/tiled/white, +/area/medical/genetics_cloning) +"cTa" = ( +/obj/machinery/door/firedoor, +/obj/machinery/door/airlock/medical{ + name = "Morgue"; + req_access = list(6,5) + }, +/turf/simulated/floor/tiled/steel_grid, +/area/medical/morgue) +"cTb" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 5 + }, +/turf/simulated/floor/tiled, +/area/medical/morgue) +"cTc" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 6 + }, +/turf/simulated/floor/tiled, +/area/medical/morgue) +"cTd" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, +/obj/structure/cable/green{ + d1 = 1; + d2 = 4; + icon_state = "1-4" + }, +/obj/effect/floor_decal/steeldecal/steel_decals4, +/obj/effect/floor_decal/steeldecal/steel_decals4{ + dir = 10 + }, +/turf/simulated/floor/tiled, +/area/medical/morgue) +"cTe" = ( +/obj/machinery/door/firedoor, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, +/obj/structure/cable/green{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/obj/machinery/door/airlock/medical{ + name = "Morgue"; + req_access = list(6) + }, +/turf/simulated/floor/tiled/steel_grid, +/area/medical/morgue) +"cTf" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, +/obj/structure/cable/green{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/obj/machinery/atmospherics/pipe/manifold/hidden/supply, +/obj/structure/disposalpipe/segment, +/obj/effect/floor_decal/steeldecal/steel_decals4{ + dir = 1 + }, +/obj/effect/floor_decal/steeldecal/steel_decals4{ + dir = 6 + }, +/turf/simulated/floor/tiled/white, +/area/medical/medbay2) +"cTg" = ( +/obj/structure/cable/green{ + d1 = 1; + d2 = 8; + icon_state = "1-8" + }, +/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 10 + }, +/obj/item/device/radio/intercom/department/medbay{ + dir = 8; + pixel_x = 21 + }, +/turf/simulated/floor/tiled/white, +/area/medical/medbay2) +"cTh" = ( +/obj/structure/cable{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/obj/machinery/door/firedoor/border_only, +/turf/simulated/floor/plating, +/area/maintenance/cargo) +"cTi" = ( +/obj/structure/cable{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/obj/structure/catwalk, +/turf/simulated/floor/plating, +/area/maintenance/cargo) +"cTj" = ( +/obj/structure/cable{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/obj/structure/cable{ + d1 = 1; + d2 = 8; + icon_state = "1-8" + }, +/obj/structure/catwalk, +/turf/simulated/floor/plating, +/area/maintenance/cargo) +"cTk" = ( +/obj/structure/cable{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/obj/machinery/light/small, +/turf/simulated/floor/plating, +/area/maintenance/cargo) +"cTl" = ( +/obj/structure/cable{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/obj/effect/floor_decal/industrial/warning/corner{ + dir = 4 + }, +/turf/simulated/floor/plating, +/area/maintenance/cargo) +"cTm" = ( +/obj/effect/floor_decal/industrial/warning{ + icon_state = "warning"; + dir = 1 + }, +/obj/structure/cable{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/turf/simulated/floor/plating, +/area/maintenance/cargo) +"cTn" = ( +/obj/structure/cable{ + d1 = 1; + d2 = 8; + icon_state = "1-8" + }, +/obj/effect/floor_decal/industrial/warning{ + icon_state = "warning"; + dir = 1 + }, +/obj/structure/cable{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/turf/simulated/floor/plating, +/area/maintenance/cargo) +"cTo" = ( +/obj/effect/floor_decal/industrial/warning{ + icon_state = "warning"; + dir = 1 + }, +/obj/structure/cable{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/obj/machinery/light/small, +/turf/simulated/floor/plating, +/area/maintenance/cargo) +"cTp" = ( +/obj/effect/floor_decal/industrial/warning/corner{ + icon_state = "warningcorner"; + dir = 1 + }, +/obj/structure/cable{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/turf/simulated/floor/plating, +/area/maintenance/cargo) +"cTq" = ( +/obj/structure/cable{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/obj/machinery/door/firedoor/border_only, +/obj/machinery/door/airlock/maintenance{ + req_access = list(12) + }, +/turf/simulated/floor/plating, +/area/maintenance/cargo) +"cTr" = ( +/obj/structure/cable{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/turf/simulated/floor/plating, +/area/maintenance/bar) +"cTs" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 6 + }, +/obj/structure/cable{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/turf/simulated/floor/plating, +/area/maintenance/bar) +"cTt" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 9; + pixel_y = 0 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/obj/structure/cable{ + d1 = 1; + d2 = 2; + icon_state = "1-2"; + pixel_y = 0 + }, +/obj/structure/cable{ + d1 = 1; + d2 = 8; + icon_state = "1-8" + }, +/turf/simulated/floor/plating, +/area/maintenance/bar) +"cTu" = ( +/turf/simulated/wall, +/area/crew_quarters/barrestroom) +"cTv" = ( +/obj/effect/floor_decal/industrial/hatch/yellow, +/obj/structure/window/reinforced{ + dir = 4 + }, +/obj/machinery/door/window/southleft{ + name = "Bar Delivery"; + req_access = list(25) + }, +/turf/simulated/floor/tiled, +/area/crew_quarters/bar) +"cTw" = ( +/turf/simulated/floor/wood, +/area/crew_quarters/bar) +"cTx" = ( +/obj/structure/closet/secure_closet/bar{ + req_access = list(25) + }, +/obj/machinery/atmospherics/unary/vent_scrubber/on, +/obj/machinery/firealarm{ + pixel_y = 24 + }, +/obj/machinery/camera/network/civilian{ + c_tag = "CIV - Bar Storage"; + dir = 2 + }, +/turf/simulated/floor/wood, +/area/crew_quarters/bar) +"cTy" = ( +/obj/structure/closet/gmcloset{ + icon_closed = "black"; + icon_state = "black"; + name = "formal wardrobe" + }, +/obj/item/glass_jar, +/obj/item/device/retail_scanner/civilian, +/obj/item/device/retail_scanner/civilian, +/obj/machinery/alarm{ + dir = 8; + pixel_x = 22; + pixel_y = 0 + }, +/turf/simulated/floor/wood, +/area/crew_quarters/bar) +"cTz" = ( +/obj/structure/disposalpipe/segment, +/obj/structure/cable{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/obj/item/device/radio/intercom{ + dir = 8; + name = "Station Intercom (General)"; + pixel_x = -21 + }, +/obj/effect/floor_decal/steeldecal/steel_decals4{ + dir = 9 + }, +/obj/effect/floor_decal/steeldecal/steel_decals4{ + dir = 4 + }, +/turf/simulated/floor/tiled, +/area/hallway/primary/seconddeck/aft) +"cTA" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/turf/simulated/floor/tiled, +/area/hallway/primary/seconddeck/aft) +"cTB" = ( +/obj/effect/floor_decal/steeldecal/steel_decals4{ + dir = 9 + }, +/obj/effect/floor_decal/steeldecal/steel_decals4{ + dir = 4 + }, +/turf/simulated/floor/tiled, +/area/hallway/primary/seconddeck/aft) +"cTC" = ( +/obj/structure/sink/kitchen{ + pixel_y = 28 + }, +/obj/machinery/light{ + dir = 8; + icon_state = "tube1"; + pixel_y = 0 + }, +/turf/simulated/floor/tiled/yellow, +/area/crew_quarters/coffee_shop) +"cTD" = ( +/obj/machinery/power/apc{ + dir = 1; + name = "north bump"; + pixel_x = 0; + pixel_y = 24 + }, +/obj/structure/cable/green{ + d2 = 2; + icon_state = "0-2" + }, +/obj/machinery/light_switch{ + pixel_x = 11; + pixel_y = 22 + }, +/obj/machinery/button/holosign{ + id = "cafeopen"; + name = "Open Sign"; + pixel_x = 11; + pixel_y = 30 + }, +/turf/simulated/floor/tiled/yellow, +/area/crew_quarters/coffee_shop) +"cTE" = ( +/obj/structure/table/marble, +/obj/item/weapon/reagent_containers/food/drinks/cup{ + pixel_x = 8; + pixel_y = 8 + }, +/obj/item/weapon/reagent_containers/food/drinks/cup{ + pixel_x = -4; + pixel_y = 8 + }, +/obj/item/weapon/reagent_containers/food/drinks/cup{ + pixel_x = 8; + pixel_y = -4 + }, +/obj/item/weapon/reagent_containers/food/drinks/cup{ + pixel_x = -4; + pixel_y = -4 + }, +/obj/item/weapon/reagent_containers/food/drinks/cup{ + pixel_x = 8 + }, +/obj/item/weapon/reagent_containers/food/drinks/cup{ + pixel_x = -4 + }, +/obj/item/weapon/reagent_containers/food/drinks/cup{ + pixel_x = 8; + pixel_y = 12 + }, +/obj/item/weapon/reagent_containers/food/drinks/cup{ + pixel_x = -4; + pixel_y = 12 + }, +/obj/machinery/atmospherics/unary/vent_scrubber/on{ + dir = 4 + }, +/obj/item/device/radio/intercom{ + dir = 1; + name = "Station Intercom (General)"; + pixel_y = 21 + }, +/turf/simulated/floor/tiled/yellow, +/area/crew_quarters/coffee_shop) +"cTF" = ( +/obj/machinery/portable_atmospherics/canister/nitrogen, +/obj/machinery/atmospherics/pipe/simple/hidden/yellow{ + dir = 9; + icon_state = "intact" + }, +/obj/machinery/alarm{ + dir = 8; + pixel_x = 22; + pixel_y = 0 + }, +/turf/simulated/floor/tiled/techmaint, +/area/rnd/xenobiology/xenoflora_isolation) +"cTG" = ( +/obj/structure/table/marble, +/obj/machinery/chemical_dispenser/bar_coffee/full, +/turf/simulated/floor/tiled/yellow, +/area/crew_quarters/coffee_shop) +"cTH" = ( +/obj/structure/disposalpipe/segment, +/obj/structure/closet/emcloset, +/turf/simulated/floor/plating, +/area/maintenance/medbay) +"cTI" = ( +/obj/structure/closet/crate/plastic, +/obj/item/weapon/storage/box/donkpockets, +/obj/item/weapon/storage/box/donkpockets, +/obj/item/weapon/reagent_containers/dropper, +/obj/random/maintenance/clean, +/obj/random/soap, +/obj/effect/floor_decal/industrial/warning/corner{ + dir = 4 + }, +/turf/simulated/floor/plating, +/area/maintenance/medbay) +"cTJ" = ( +/turf/simulated/wall, +/area/crew_quarters/kitchen) +"cTK" = ( +/obj/machinery/power/apc{ + dir = 8; + name = "west bump"; + pixel_x = -24 + }, +/obj/structure/cable, +/turf/simulated/floor/plating, +/area/maintenance/medbay) +"cTL" = ( +/obj/structure/cable{ + d1 = 1; + d2 = 2; + icon_state = "1-2"; + pixel_y = 0 + }, +/turf/simulated/floor/plating, +/area/maintenance/medbay) +"cTM" = ( +/obj/machinery/atmospherics/binary/pump/on{ + dir = 2; + target_pressure = 200 + }, +/turf/simulated/floor/plating, +/area/maintenance/medbay) +"cTN" = ( +/obj/machinery/alarm{ + pixel_y = 22 + }, +/turf/simulated/floor/plating, +/area/maintenance/medbay) +"cTO" = ( +/obj/structure/table/rack{ + dir = 1 + }, +/obj/random/maintenance/medical, +/obj/random/maintenance/medical, +/obj/random/maintenance/medical, +/obj/random/maintenance/clean, +/turf/simulated/floor/plating, +/area/maintenance/medbay) +"cTP" = ( +/obj/structure/table/rack{ + dir = 1 + }, +/obj/item/weapon/storage/toolbox/emergency, +/obj/random/maintenance/medical, +/obj/random/maintenance/medical, +/obj/random/maintenance/medical, +/obj/random/maintenance/medical, +/obj/effect/floor_decal/industrial/warning{ + icon_state = "warning"; + dir = 4 + }, +/turf/simulated/floor/plating, +/area/maintenance/medbay) +"cTQ" = ( +/obj/machinery/atmospherics/portables_connector, +/obj/effect/floor_decal/industrial/outline/yellow, +/obj/machinery/portable_atmospherics/canister/air/airlock, +/turf/simulated/floor/plating, +/area/maintenance/medbay) +"cTR" = ( +/turf/simulated/wall/r_wall, +/area/maintenance/medbay) +"cTS" = ( +/turf/simulated/wall/r_wall, +/area/medical/ward) +"cTT" = ( +/obj/structure/bed/padded, +/obj/item/weapon/bedsheet/medical, +/obj/machinery/newscaster{ + pixel_x = -30; + pixel_y = 0 + }, +/obj/structure/curtain/open/privacy, +/obj/effect/floor_decal/borderfloorwhite{ + dir = 9 + }, +/obj/effect/floor_decal/corner/paleblue/border{ + dir = 9 + }, +/turf/simulated/floor/tiled/white, +/area/medical/ward) +"cTU" = ( +/obj/structure/closet/secure_closet/personal/patient, +/obj/item/device/radio/intercom{ + dir = 1; + name = "Station Intercom (General)"; + pixel_y = 21 + }, +/obj/effect/floor_decal/borderfloorwhite{ + dir = 1 + }, +/obj/effect/floor_decal/corner/paleblue/border{ + dir = 1 + }, +/turf/simulated/floor/tiled/white, +/area/medical/ward) +"cTV" = ( +/obj/structure/table/glass, +/obj/machinery/computer/med_data/laptop, +/obj/machinery/computer/security/telescreen/entertainment{ + icon_state = "frame"; + pixel_x = 0; + pixel_y = 32 + }, +/obj/machinery/light{ + dir = 1 + }, +/obj/effect/floor_decal/borderfloorwhite{ + dir = 1 + }, +/obj/effect/floor_decal/corner/paleblue/border{ + dir = 1 + }, +/turf/simulated/floor/tiled/white, +/area/medical/ward) +"cTW" = ( +/obj/structure/closet/secure_closet/personal/patient, +/obj/item/device/radio/intercom/department/medbay{ + dir = 2; + pixel_x = 0; + pixel_y = 21 + }, +/obj/effect/floor_decal/borderfloorwhite{ + dir = 1 + }, +/obj/effect/floor_decal/corner/paleblue/border{ + dir = 1 + }, +/turf/simulated/floor/tiled/white, +/area/medical/ward) +"cTX" = ( +/obj/structure/bed/padded, +/obj/item/weapon/bedsheet/medical, +/obj/structure/curtain/open/privacy, +/obj/effect/floor_decal/borderfloorwhite{ + dir = 5 + }, +/obj/effect/floor_decal/corner/paleblue/border{ + dir = 5 + }, +/turf/simulated/floor/tiled/white, +/area/medical/ward) +"cTY" = ( +/obj/structure/table/glass, +/obj/item/weapon/storage/box/gloves{ + pixel_x = 4; + pixel_y = 4 + }, +/obj/item/weapon/storage/box/masks, +/obj/machinery/power/apc{ + dir = 1; + name = "north bump"; + pixel_x = 0; + pixel_y = 24 + }, +/obj/machinery/light_switch{ + pixel_x = 11; + pixel_y = 24 + }, +/obj/structure/cable/green{ + d2 = 4; + icon_state = "0-4" + }, +/obj/machinery/button/remote/airlock{ + desc = "A remote control-switch for Surgery."; + id = "Surgery"; + name = "Surgery"; + pixel_x = 0; + pixel_y = 36 + }, +/obj/effect/floor_decal/borderfloorwhite{ + dir = 8 + }, +/obj/effect/floor_decal/corner/paleblue/border{ + dir = 8 + }, +/turf/simulated/floor/tiled/white, +/area/medical/ward) +"cTZ" = ( +/obj/structure/cable/green{ + d1 = 1; + d2 = 8; + icon_state = "1-8" + }, +/obj/structure/cable/green{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/effect/floor_decal/steeldecal/steel_decals4{ + dir = 4 + }, +/obj/effect/floor_decal/steeldecal/steel_decals4{ + dir = 9 + }, +/turf/simulated/floor/tiled/white, +/area/medical/ward) +"cUa" = ( +/turf/simulated/floor/tiled/white, +/area/medical/ward) +"cUb" = ( +/obj/effect/floor_decal/steeldecal/steel_decals4{ + dir = 4 + }, +/obj/effect/floor_decal/steeldecal/steel_decals4{ + dir = 9 + }, +/turf/simulated/floor/tiled/white, +/area/medical/ward) +"cUc" = ( +/obj/structure/closet/wardrobe/medic_white, +/obj/effect/floor_decal/borderfloorwhite{ + dir = 4 + }, +/obj/effect/floor_decal/corner/paleblue/border{ + dir = 4 + }, +/turf/simulated/floor/tiled/white, +/area/medical/ward) +"cUd" = ( +/obj/structure/bed/padded, +/obj/item/weapon/bedsheet/medical, +/obj/structure/curtain/open/privacy, +/obj/effect/floor_decal/borderfloorwhite{ + dir = 9 + }, +/obj/effect/floor_decal/corner/paleblue/border{ + dir = 9 + }, +/turf/simulated/floor/tiled/white, +/area/medical/ward) +"cUe" = ( +/obj/structure/bed/padded, +/obj/item/weapon/bedsheet/medical, +/obj/machinery/newscaster{ + pixel_x = 30; + pixel_y = 0 + }, +/obj/structure/curtain/open/privacy, +/obj/effect/floor_decal/borderfloorwhite{ + dir = 5 + }, +/obj/effect/floor_decal/corner/paleblue/border{ + dir = 5 + }, +/turf/simulated/floor/tiled/white, +/area/medical/ward) +"cUf" = ( +/obj/effect/floor_decal/borderfloorwhite{ + dir = 10 + }, +/obj/effect/floor_decal/corner/purple/border{ + dir = 10 + }, +/obj/machinery/clonepod/full, +/turf/simulated/floor/tiled/white, +/area/medical/genetics_cloning) +"cUg" = ( +/obj/machinery/computer/cloning, +/obj/machinery/light, +/obj/effect/floor_decal/borderfloorwhite, +/obj/effect/floor_decal/corner/purple/border, +/turf/simulated/floor/tiled/white, +/area/medical/genetics_cloning) +"cUh" = ( +/obj/machinery/dna_scannernew, +/obj/effect/floor_decal/borderfloorwhite/corner{ + dir = 8 + }, +/obj/effect/floor_decal/corner/purple/bordercorner{ + dir = 8 + }, +/turf/simulated/floor/tiled/white, +/area/medical/genetics_cloning) +"cUi" = ( +/obj/effect/floor_decal/steeldecal/steel_decals4{ + dir = 8 + }, +/obj/effect/floor_decal/steeldecal/steel_decals4{ + dir = 5 + }, +/turf/simulated/floor/tiled/white, +/area/medical/genetics_cloning) +"cUj" = ( +/obj/structure/closet/wardrobe/medic_white, +/obj/item/device/radio/intercom{ + name = "Station Intercom (General)"; + pixel_y = -21 + }, +/obj/structure/extinguisher_cabinet{ + pixel_x = 28; + pixel_y = 0 + }, +/obj/effect/floor_decal/borderfloorwhite/corner, +/obj/effect/floor_decal/corner/purple/bordercorner, +/turf/simulated/floor/tiled/white, +/area/medical/genetics_cloning) +"cUk" = ( +/obj/structure/table/steel, +/obj/item/weapon/paper_bin{ + pixel_y = -6 + }, +/obj/item/device/camera{ + name = "Autopsy Camera"; + pixel_x = -2; + pixel_y = 7 + }, +/obj/item/weapon/pen/red{ + pixel_x = -1; + pixel_y = -9 + }, +/obj/item/weapon/pen/blue{ + pixel_x = 3; + pixel_y = -5 + }, +/obj/machinery/requests_console{ + announcementConsole = 1; + department = "Chief Medical Officer's Desk"; + departmentType = 5; + name = "Chief Medical Officer RC"; + pixel_x = 0; + pixel_y = -30 + }, +/obj/effect/floor_decal/borderfloor, +/obj/effect/floor_decal/corner/paleblue/border, +/turf/simulated/floor/tiled, +/area/medical/morgue) +"cUl" = ( +/obj/machinery/optable, +/obj/machinery/light, +/obj/effect/floor_decal/borderfloor, +/obj/effect/floor_decal/corner/paleblue/border, +/turf/simulated/floor/tiled, +/area/medical/morgue) +"cUm" = ( +/obj/structure/table/steel, +/obj/item/weapon/autopsy_scanner, +/obj/item/weapon/surgical/scalpel, +/obj/item/weapon/surgical/cautery, +/obj/machinery/atmospherics/unary/vent_scrubber/on{ + dir = 1 + }, +/obj/effect/floor_decal/borderfloor, +/obj/effect/floor_decal/corner/paleblue/border, +/turf/simulated/floor/tiled, +/area/medical/morgue) +"cUn" = ( +/obj/machinery/disposal, +/obj/structure/disposalpipe/trunk{ + dir = 4 + }, +/obj/effect/floor_decal/borderfloor, +/obj/effect/floor_decal/corner/paleblue/border, +/turf/simulated/floor/tiled, +/area/medical/morgue) +"cUo" = ( +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/turf/simulated/wall, +/area/medical/morgue) +"cUp" = ( +/obj/structure/disposalpipe/segment{ + dir = 8; + icon_state = "pipe-c" + }, +/obj/effect/floor_decal/steeldecal/steel_decals4{ + dir = 8 + }, +/obj/effect/floor_decal/steeldecal/steel_decals4{ + dir = 5 + }, +/turf/simulated/floor/tiled/white, +/area/medical/medbay2) +"cUq" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/effect/floor_decal/steeldecal/steel_decals4{ + dir = 8 + }, +/obj/effect/floor_decal/steeldecal/steel_decals4{ + dir = 5 + }, +/turf/simulated/floor/tiled/white, +/area/medical/medbay2) +"cUr" = ( +/turf/simulated/wall/r_wall, +/area/maintenance/bar) +"cUs" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/machinery/meter, +/turf/simulated/floor/plating, +/area/maintenance/bar) +"cUt" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/obj/structure/cable{ + d1 = 1; + d2 = 2; + icon_state = "1-2"; + pixel_y = 0 + }, +/obj/machinery/meter, +/turf/simulated/floor/plating, +/area/maintenance/bar) +"cUu" = ( +/obj/machinery/recharge_station, +/obj/machinery/light/small{ + dir = 8 + }, +/turf/simulated/floor/tiled/freezer, +/area/crew_quarters/barrestroom) +"cUv" = ( +/obj/machinery/door/airlock{ + name = "Unit 2" + }, +/turf/simulated/floor/tiled/freezer, +/area/crew_quarters/barrestroom) +"cUw" = ( +/turf/simulated/floor/tiled/freezer, +/area/crew_quarters/barrestroom) +"cUx" = ( +/obj/machinery/alarm{ + pixel_y = 22 + }, +/turf/simulated/floor/tiled/freezer, +/area/crew_quarters/barrestroom) +"cUy" = ( +/obj/structure/sink{ + dir = 4; + icon_state = "sink"; + pixel_x = 11; + pixel_y = 0 + }, +/obj/structure/mirror{ + pixel_x = 28 + }, +/obj/machinery/light{ + dir = 1 + }, +/turf/simulated/floor/tiled/freezer, +/area/crew_quarters/barrestroom) +"cUz" = ( +/obj/structure/table/marble, +/obj/machinery/chemical_dispenser/bar_soft/full, +/obj/machinery/firealarm{ + pixel_y = 24 + }, +/turf/simulated/floor/lino, +/area/crew_quarters/bar) +"cUA" = ( +/obj/structure/table/marble, +/obj/machinery/chemical_dispenser/bar_alc/full, +/obj/machinery/light{ + dir = 1 + }, +/turf/simulated/floor/lino, +/area/crew_quarters/bar) +"cUB" = ( +/obj/machinery/disposal, +/obj/structure/extinguisher_cabinet{ + pixel_y = 30 + }, +/obj/structure/disposalpipe/trunk, +/turf/simulated/floor/lino, +/area/crew_quarters/bar) +"cUC" = ( +/obj/machinery/vending/boozeomat, +/turf/simulated/floor/lino, +/area/crew_quarters/bar) +"cUD" = ( +/obj/machinery/smartfridge/drinks, +/turf/simulated/floor/lino, +/area/crew_quarters/bar) +"cUE" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 6 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 6 + }, +/obj/structure/sink/kitchen{ + pixel_y = 28 + }, +/turf/simulated/floor/lino, +/area/crew_quarters/bar) +"cUF" = ( +/obj/machinery/door/firedoor/border_only, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, +/obj/machinery/door/airlock{ + name = "Bar Backroom"; + req_access = list(25) + }, +/turf/simulated/floor/wood, +/area/crew_quarters/bar) +"cUG" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, +/turf/simulated/floor/wood, +/area/crew_quarters/bar) +"cUH" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 10 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 9 + }, +/turf/simulated/floor/wood, +/area/crew_quarters/bar) +"cUI" = ( +/obj/structure/sink{ + dir = 4; + icon_state = "sink"; + pixel_x = 11; + pixel_y = 0 + }, +/obj/structure/sign/securearea{ + desc = "Under the painting a plaque reads: 'While the meat grinder may not have spared you, fear not. Not one part of you has gone to waste... You were delicious.'"; + icon_state = "monkey_painting"; + name = "Mr. Deempisi portrait"; + pixel_x = 28; + pixel_y = 4 + }, +/turf/simulated/floor/wood, +/area/crew_quarters/bar) +"cUJ" = ( +/obj/structure/disposalpipe/segment, +/obj/structure/cable{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/turf/simulated/floor/tiled, +/area/hallway/primary/seconddeck/aft) +"cUK" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/turf/simulated/floor/tiled/monotile, +/area/hallway/primary/seconddeck/aft) +"cUL" = ( +/obj/effect/floor_decal/steeldecal/steel_decals4, +/obj/effect/floor_decal/steeldecal/steel_decals4{ + dir = 10 + }, +/turf/simulated/floor/tiled, +/area/hallway/primary/seconddeck/aft) +"cUM" = ( +/obj/machinery/door/firedoor/glass, +/obj/machinery/door/airlock{ + name = "Coffee Shop"; + req_one_access = list(25,28) + }, +/turf/simulated/floor/tiled/steel_grid, +/area/crew_quarters/coffee_shop) +"cUN" = ( +/obj/effect/floor_decal/steeldecal/steel_decals4{ + dir = 1 + }, +/obj/effect/floor_decal/steeldecal/steel_decals4{ + dir = 6 + }, +/turf/simulated/floor/tiled/yellow, +/area/crew_quarters/coffee_shop) +"cUO" = ( +/obj/structure/cable/green{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/turf/simulated/floor/tiled/yellow, +/area/crew_quarters/coffee_shop) +"cUP" = ( +/turf/simulated/floor/tiled/yellow, +/area/crew_quarters/coffee_shop) +"cUQ" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/turf/simulated/floor/tiled/yellow, +/area/crew_quarters/coffee_shop) +"cUR" = ( +/obj/structure/table/marble, +/obj/item/weapon/reagent_containers/food/drinks/britcup, +/obj/item/weapon/reagent_containers/food/drinks/britcup, +/obj/item/weapon/reagent_containers/food/drinks/britcup, +/obj/machinery/alarm{ + dir = 8; + pixel_x = 22; + pixel_y = 0 + }, +/turf/simulated/floor/tiled/yellow, +/area/crew_quarters/coffee_shop) +"cUS" = ( +/obj/structure/disposalpipe/segment, +/turf/simulated/wall, +/area/crew_quarters/cafeteria) +"cUT" = ( +/obj/machinery/door/firedoor/border_only, +/obj/machinery/door/airlock/maintenance{ + req_access = null; + req_one_access = list(5,12,25,27,28,35) + }, +/turf/simulated/floor/plating, +/area/crew_quarters/cafeteria) +"cUU" = ( +/obj/structure/closet/crate/internals, +/obj/random/tank, +/obj/random/tank, +/obj/random/tank, +/obj/item/clothing/mask/gas, +/obj/item/clothing/mask/breath, +/obj/item/clothing/mask/breath, +/turf/simulated/floor/plating, +/area/maintenance/medbay) +"cUV" = ( +/obj/structure/closet/crate, +/obj/random/action_figure, +/obj/random/action_figure, +/obj/random/action_figure, +/obj/random/action_figure, +/obj/random/maintenance/clean, +/obj/random/toy, +/obj/item/weapon/toy/xmas_cracker, +/turf/simulated/floor, +/area/maintenance/medbay) +"cUW" = ( +/obj/structure/kitchenspike, +/turf/simulated/floor/tiled/freezer, +/area/crew_quarters/kitchen) +"cUX" = ( +/obj/machinery/firealarm{ + dir = 2; + pixel_y = 24 + }, +/turf/simulated/floor/tiled/freezer, +/area/crew_quarters/kitchen) +"cUY" = ( +/obj/machinery/gibber, +/turf/simulated/floor/tiled/freezer, +/area/crew_quarters/kitchen) +"cUZ" = ( +/obj/effect/floor_decal/industrial/hatch/yellow, +/obj/structure/window/reinforced{ + dir = 8 + }, +/obj/machinery/door/window/southright{ + name = "Kitchen Delivery"; + req_access = list(28) + }, +/turf/simulated/floor/tiled, +/area/crew_quarters/kitchen) +"cVa" = ( +/obj/structure/cable{ + d1 = 1; + d2 = 8; + icon_state = "1-8" + }, +/obj/effect/floor_decal/industrial/warning{ + icon_state = "warning"; + dir = 1 + }, +/obj/machinery/atmospherics/pipe/simple/hidden{ + icon_state = "intact"; + dir = 4 + }, +/turf/simulated/floor/plating, +/area/maintenance/medbay) +"cVb" = ( +/obj/effect/wingrille_spawn/reinforced, +/obj/structure/sign/warning/airlock{ + pixel_y = -32 + }, +/obj/machinery/atmospherics/pipe/simple/hidden{ + dir = 6 + }, +/turf/simulated/floor/plating, +/area/maintenance/medbay) +"cVc" = ( +/obj/effect/floor_decal/industrial/warning, +/obj/machinery/atmospherics/pipe/manifold/hidden, +/turf/simulated/floor/plating, +/area/maintenance/medbay) +"cVd" = ( +/obj/effect/floor_decal/industrial/warning, +/obj/machinery/access_button{ + command = "cycle_interior"; + frequency = 1379; + master_tag = "aft_starboard_airlock"; + name = "interior access button"; + pixel_x = 25; + pixel_y = -26; + req_one_access = list(13) + }, +/obj/machinery/atmospherics/pipe/simple/hidden{ + dir = 4 + }, +/turf/simulated/floor/plating, +/area/maintenance/medbay) +"cVe" = ( +/obj/effect/floor_decal/industrial/warning/corner{ + dir = 8 + }, +/obj/machinery/atmospherics/pipe/manifold/hidden{ + dir = 1; + icon_state = "map" + }, +/obj/machinery/meter, +/turf/simulated/floor/plating, +/area/maintenance/medbay) +"cVf" = ( +/obj/machinery/atmospherics/pipe/simple/hidden{ + dir = 4 + }, +/obj/effect/floor_decal/industrial/warning/corner{ + dir = 4 + }, +/turf/simulated/floor/plating, +/area/maintenance/medbay) +"cVg" = ( +/obj/machinery/atmospherics/pipe/manifold/hidden, +/obj/effect/floor_decal/industrial/warning{ + icon_state = "warning"; + dir = 1 + }, +/turf/simulated/floor/plating, +/area/maintenance/medbay) +"cVh" = ( +/obj/machinery/atmospherics/pipe/simple/hidden{ + dir = 9; + icon_state = "intact" + }, +/obj/effect/floor_decal/industrial/warning{ + icon_state = "warning"; + dir = 5 + }, +/turf/simulated/floor/plating, +/area/maintenance/medbay) +"cVi" = ( +/obj/machinery/firealarm{ + dir = 8; + pixel_x = -24 + }, +/obj/effect/floor_decal/borderfloorwhite{ + dir = 8 + }, +/obj/effect/floor_decal/corner/paleblue/border{ + dir = 8 + }, +/obj/effect/floor_decal/borderfloorwhite/corner2{ + dir = 10 + }, +/obj/effect/floor_decal/corner/paleblue/bordercorner2{ + dir = 10 + }, +/turf/simulated/floor/tiled/white, +/area/medical/ward) +"cVj" = ( +/obj/structure/bed/chair/office/dark{ + dir = 1 + }, +/turf/simulated/floor/tiled/white, +/area/medical/ward) +"cVk" = ( +/obj/machinery/atmospherics/unary/vent_pump/on, +/turf/simulated/floor/tiled/white, +/area/medical/ward) +"cVl" = ( +/obj/effect/floor_decal/borderfloorwhite{ + dir = 4 + }, +/obj/effect/floor_decal/corner/paleblue/border{ + dir = 4 + }, +/obj/effect/floor_decal/borderfloorwhite/corner2{ + dir = 5 + }, +/obj/effect/floor_decal/corner/paleblue/bordercorner2{ + dir = 5 + }, +/turf/simulated/floor/tiled/white, +/area/medical/ward) +"cVm" = ( +/obj/structure/table/glass, +/obj/item/device/radio{ + anchored = 1; + broadcasting = 0; + canhear_range = 7; + frequency = 1487; + icon = 'icons/obj/items.dmi'; + icon_state = "red_phone"; + listening = 1; + name = "Surgery Emergency Phone" + }, +/obj/random/medical, +/obj/random/medical, +/obj/machinery/light{ + dir = 8 + }, +/obj/effect/floor_decal/borderfloorwhite{ + dir = 8 + }, +/obj/effect/floor_decal/corner/paleblue/border{ + dir = 8 + }, +/obj/effect/floor_decal/borderfloorwhite/corner2{ + dir = 10 + }, +/obj/effect/floor_decal/corner/paleblue/bordercorner2{ + dir = 10 + }, +/turf/simulated/floor/tiled/white, +/area/medical/ward) +"cVn" = ( +/obj/structure/cable/green{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/obj/machinery/atmospherics/pipe/manifold/hidden/supply{ + dir = 8 + }, +/turf/simulated/floor/tiled/white, +/area/medical/ward) +"cVo" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/obj/machinery/hologram/holopad, +/obj/effect/floor_decal/industrial/outline/grey, +/turf/simulated/floor/tiled/white, +/area/medical/ward) +"cVp" = ( +/obj/machinery/atmospherics/unary/vent_pump/on{ + dir = 8 + }, +/turf/simulated/floor/tiled/white, +/area/medical/ward) +"cVq" = ( +/obj/machinery/light{ + dir = 4; + icon_state = "tube1"; + pixel_x = 0 + }, +/obj/effect/floor_decal/borderfloorwhite{ + dir = 4 + }, +/obj/effect/floor_decal/corner/paleblue/border{ + dir = 4 + }, +/obj/effect/floor_decal/borderfloorwhite/corner2{ + dir = 5 + }, +/obj/effect/floor_decal/corner/paleblue/bordercorner2{ + dir = 5 + }, +/obj/machinery/washing_machine, +/turf/simulated/floor/tiled/white, +/area/medical/ward) +"cVr" = ( +/obj/effect/floor_decal/borderfloorwhite{ + dir = 8 + }, +/obj/effect/floor_decal/corner/paleblue/border{ + dir = 8 + }, +/obj/effect/floor_decal/borderfloorwhite/corner2{ + dir = 10 + }, +/obj/effect/floor_decal/corner/paleblue/bordercorner2{ + dir = 10 + }, +/turf/simulated/floor/tiled/white, +/area/medical/ward) +"cVs" = ( +/obj/machinery/firealarm{ + dir = 4; + pixel_x = 24 + }, +/obj/effect/floor_decal/borderfloorwhite{ + dir = 4 + }, +/obj/effect/floor_decal/corner/paleblue/border{ + dir = 4 + }, +/obj/effect/floor_decal/borderfloorwhite/corner2{ + dir = 5 + }, +/obj/effect/floor_decal/corner/paleblue/bordercorner2{ + dir = 5 + }, +/turf/simulated/floor/tiled/white, +/area/medical/ward) +"cVt" = ( +/obj/machinery/door/firedoor, +/obj/machinery/door/airlock/medical{ + name = "Cloning Laboratory"; + req_access = list(66) + }, +/turf/simulated/floor/tiled/steel_grid, +/area/medical/genetics_cloning) +"cVu" = ( +/obj/machinery/door/firedoor/border_only, +/obj/machinery/door/airlock/glass_medical{ + name = "Patient Ward"; + req_access = list(5) + }, +/turf/simulated/floor/tiled/steel_grid, +/area/medical/patient_wing) +"cVv" = ( +/obj/machinery/door/firedoor/border_only, +/obj/machinery/door/airlock/glass_medical{ + name = "Patient Ward"; + req_access = list(5) + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/turf/simulated/floor/tiled/steel_grid, +/area/medical/patient_wing) +"cVw" = ( +/turf/simulated/wall/r_wall, +/area/medical/patient_wing) +"cVx" = ( +/obj/structure/closet/wardrobe/grey, +/obj/item/weapon/storage/backpack, +/obj/item/weapon/storage/backpack, +/obj/random/maintenance/cargo, +/obj/random/maintenance/cargo, +/obj/random/maintenance/cargo, +/obj/random/maintenance/cargo, +/turf/simulated/floor/plating, +/area/maintenance/cargo) +"cVy" = ( +/obj/structure/closet/crate, +/obj/random/maintenance/cargo, +/obj/random/maintenance/cargo, +/obj/random/drinkbottle, +/turf/simulated/floor/plating, +/area/maintenance/cargo) +"cVz" = ( +/obj/item/weapon/material/ashtray/glass, +/obj/structure/table/steel, +/turf/simulated/floor/plating, +/area/maintenance/cargo) +"cVA" = ( +/obj/structure/bed/chair/comfy/beige, +/turf/simulated/floor/plating, +/area/maintenance/cargo) +"cVB" = ( +/obj/structure/table/steel, +/obj/item/weapon/reagent_containers/food/drinks/glass2/rocks, +/obj/item/weapon/reagent_containers/food/drinks/glass2/rocks, +/turf/simulated/floor/plating, +/area/maintenance/cargo) +"cVC" = ( +/obj/structure/bed/chair/comfy/purp, +/turf/simulated/floor/plating, +/area/maintenance/cargo) +"cVD" = ( +/obj/structure/table/steel, +/obj/item/weapon/reagent_containers/food/drinks/flask/barflask, +/turf/simulated/floor/plating, +/area/maintenance/cargo) +"cVE" = ( +/obj/machinery/alarm{ + dir = 1; + pixel_y = -22 + }, +/obj/structure/table/steel, +/obj/item/weapon/storage/toolbox/mechanical, +/turf/simulated/floor/plating, +/area/maintenance/cargo) +"cVF" = ( +/obj/item/weapon/storage/briefcase/inflatable, +/turf/simulated/floor/plating, +/area/maintenance/cargo) +"cVG" = ( +/obj/machinery/atmospherics/pipe/simple/visible/universal, +/turf/simulated/floor/plating, +/area/maintenance/bar) +"cVH" = ( +/obj/machinery/atmospherics/pipe/simple/visible/universal, +/obj/structure/cable{ + d1 = 1; + d2 = 2; + icon_state = "1-2"; + pixel_y = 0 + }, +/turf/simulated/floor/plating, +/area/maintenance/bar) +"cVI" = ( +/obj/machinery/atmospherics/unary/vent_pump/on{ + dir = 4 + }, +/turf/simulated/floor/tiled/freezer, +/area/crew_quarters/barrestroom) +"cVJ" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 10 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 6 + }, +/turf/simulated/floor/tiled/freezer, +/area/crew_quarters/barrestroom) +"cVK" = ( +/obj/machinery/atmospherics/unary/vent_scrubber/on{ + dir = 8 + }, +/obj/structure/sink{ + dir = 4; + icon_state = "sink"; + pixel_x = 11; + pixel_y = 0 + }, +/obj/structure/mirror{ + pixel_x = 28 + }, +/turf/simulated/floor/tiled/freezer, +/area/crew_quarters/barrestroom) +"cVL" = ( +/obj/item/weapon/book/manual/barman_recipes, +/obj/item/clothing/head/that{ + pixel_x = 4; + pixel_y = 6 + }, +/obj/item/weapon/tool/screwdriver, +/obj/item/weapon/flame/lighter/zippo, +/obj/structure/table/marble, +/obj/machinery/camera/network/civilian{ + c_tag = "CIV - Bar Fore"; + dir = 4 + }, +/turf/simulated/floor/lino, +/area/crew_quarters/bar) +"cVM" = ( +/obj/effect/landmark/start{ + name = "Bartender" + }, +/turf/simulated/floor/lino, +/area/crew_quarters/bar) +"cVN" = ( +/obj/structure/disposalpipe/segment, +/turf/simulated/floor/lino, +/area/crew_quarters/bar) +"cVO" = ( +/obj/machinery/atmospherics/unary/vent_pump/on{ + dir = 4 + }, +/turf/simulated/floor/lino, +/area/crew_quarters/bar) +"cVP" = ( +/obj/effect/landmark/start{ + name = "Bartender" + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/turf/simulated/floor/lino, +/area/crew_quarters/bar) +"cVQ" = ( +/obj/machinery/atmospherics/pipe/manifold/hidden/supply{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/obj/machinery/alarm{ + dir = 8; + pixel_x = 22; + pixel_y = 0 + }, +/turf/simulated/floor/lino, +/area/crew_quarters/bar) +"cVR" = ( +/obj/structure/table/woodentable, +/obj/machinery/reagentgrinder, +/obj/item/weapon/reagent_containers/food/drinks/shaker, +/obj/item/weapon/packageWrap, +/turf/simulated/floor/wood, +/area/crew_quarters/bar) +"cVS" = ( +/obj/structure/table/woodentable, +/obj/item/weapon/storage/box/beanbags, +/obj/item/weapon/gun/projectile/shotgun/doublebarrel, +/turf/simulated/floor/wood, +/area/crew_quarters/bar) +"cVT" = ( +/obj/structure/reagent_dispensers/beerkeg, +/obj/machinery/atmospherics/unary/vent_pump/on{ + dir = 1 + }, +/obj/machinery/light, +/turf/simulated/floor/wood, +/area/crew_quarters/bar) +"cVU" = ( +/obj/machinery/vending/coffee, +/obj/item/device/radio/intercom{ + dir = 4; + name = "Station Intercom (General)"; + pixel_x = 21 + }, +/turf/simulated/floor/wood, +/area/crew_quarters/bar) +"cVV" = ( +/obj/structure/disposalpipe/segment, +/obj/machinery/atmospherics/unary/vent_pump/on{ + dir = 4 + }, +/obj/structure/cable{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/obj/effect/floor_decal/borderfloor/corner{ + dir = 8 + }, +/obj/effect/floor_decal/corner/green/bordercorner{ + dir = 8 + }, +/turf/simulated/floor/tiled, +/area/hallway/primary/seconddeck/aft) +"cVW" = ( +/obj/machinery/atmospherics/pipe/manifold/hidden/supply{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/turf/simulated/floor/tiled/monotile, +/area/hallway/primary/seconddeck/aft) +"cVX" = ( +/obj/machinery/firealarm{ + dir = 4; + pixel_x = 24 + }, +/obj/effect/floor_decal/borderfloor/corner, +/obj/effect/floor_decal/corner/green/bordercorner, +/turf/simulated/floor/tiled, +/area/hallway/primary/seconddeck/aft) +"cVY" = ( +/obj/machinery/door/firedoor/border_only, +/obj/effect/floor_decal/industrial/loading{ + icon_state = "loadingarea"; + dir = 8 + }, +/obj/structure/plasticflaps{ + opacity = 1 + }, +/obj/machinery/navbeacon/delivery/west{ + location = "Kitchen" + }, +/turf/simulated/floor/tiled, +/area/crew_quarters/kitchen) +"cVZ" = ( +/obj/machinery/atmospherics/unary/vent_pump/on{ + dir = 4 + }, +/obj/structure/cable/green{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/turf/simulated/floor/tiled/yellow, +/area/crew_quarters/coffee_shop) +"cWa" = ( +/obj/item/weapon/stool/padded, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/turf/simulated/floor/tiled/yellow, +/area/crew_quarters/coffee_shop) +"cWb" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 10 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/turf/simulated/floor/tiled/yellow, +/area/crew_quarters/coffee_shop) +"cWc" = ( +/obj/machinery/disposal, +/obj/structure/extinguisher_cabinet{ + pixel_x = 25 + }, +/obj/structure/disposalpipe/trunk, +/turf/simulated/floor/tiled/yellow, +/area/crew_quarters/coffee_shop) +"cWd" = ( +/obj/structure/table/standard, +/obj/item/weapon/reagent_containers/food/snacks/pie, +/obj/item/clothing/head/cakehat, +/obj/structure/extinguisher_cabinet{ + pixel_x = -27 + }, +/obj/structure/disposalpipe/segment, +/obj/effect/floor_decal/borderfloorwhite{ + dir = 8 + }, +/obj/effect/floor_decal/corner/brown/border{ + dir = 8 + }, +/obj/machinery/alarm{ + pixel_y = 23 + }, +/obj/item/device/communicator, +/turf/simulated/floor/tiled/white, +/area/crew_quarters/cafeteria) +"cWe" = ( +/obj/machinery/ai_status_display{ + pixel_x = 32; + pixel_y = 0 + }, +/obj/effect/floor_decal/steeldecal/steel_decals4{ + dir = 4 + }, +/obj/effect/floor_decal/steeldecal/steel_decals4{ + dir = 9 + }, +/turf/simulated/floor/tiled/white, +/area/crew_quarters/cafeteria) +"cWf" = ( +/obj/structure/kitchenspike, +/obj/machinery/light{ + dir = 8 + }, +/turf/simulated/floor/tiled/freezer, +/area/crew_quarters/kitchen) +"cWg" = ( +/obj/machinery/atmospherics/unary/vent_scrubber/on{ + dir = 4 + }, +/turf/simulated/floor/tiled/freezer, +/area/crew_quarters/kitchen) +"cWh" = ( +/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{ + dir = 1 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 6 + }, +/turf/simulated/floor/tiled/freezer, +/area/crew_quarters/kitchen) +"cWi" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/obj/effect/floor_decal/steeldecal/steel_decals4, +/obj/effect/floor_decal/steeldecal/steel_decals4{ + dir = 10 + }, +/turf/simulated/floor/tiled/freezer, +/area/crew_quarters/kitchen) +"cWj" = ( +/obj/machinery/door/firedoor/border_only, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/obj/machinery/door/airlock/maintenance{ + name = "Kitchen Maintenance"; + req_access = list(28) + }, +/turf/simulated/floor/plating, +/area/crew_quarters/kitchen) +"cWk" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 10 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 10 + }, +/obj/structure/cable{ + d1 = 1; + d2 = 2; + icon_state = "1-2"; + pixel_y = 0 + }, +/turf/simulated/floor/plating, +/area/maintenance/medbay) +"cWl" = ( +/obj/machinery/atmospherics/pipe/simple/hidden, +/turf/simulated/wall/r_wall, +/area/maintenance/medbay) +"cWm" = ( +/obj/machinery/door/airlock/glass_external{ + frequency = 1379; + icon_state = "door_locked"; + id_tag = "aft_starboard_inner"; + locked = 1; + name = "Internal Airlock Access"; + req_access = list(13) + }, +/turf/simulated/floor/plating, +/area/maintenance/medbay) +"cWn" = ( +/obj/machinery/light/small{ + dir = 8 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/cyan{ + dir = 6; + icon_state = "intact" + }, +/obj/effect/floor_decal/industrial/warning{ + icon_state = "warning"; + dir = 1 + }, +/turf/simulated/floor/plating, +/area/maintenance/medbay) +"cWo" = ( +/obj/machinery/atmospherics/pipe/manifold/hidden/cyan{ + dir = 1 + }, +/obj/machinery/meter, +/obj/effect/floor_decal/industrial/warning{ + icon_state = "warning"; + dir = 1 + }, +/turf/simulated/floor/plating, +/area/maintenance/medbay) +"cWp" = ( +/obj/machinery/atmospherics/valve{ + dir = 4 + }, +/obj/effect/floor_decal/industrial/warning{ + dir = 5 + }, +/turf/simulated/floor/plating, +/area/maintenance/medbay) +"cWq" = ( +/obj/machinery/door/blast/regular{ + density = 0; + icon_state = "pdoor0"; + id = "medbayquar"; + name = "Medbay Emergency Lockdown Shutters"; + opacity = 0 + }, +/obj/machinery/atmospherics/pipe/simple/visible/universal{ + dir = 4 + }, +/turf/simulated/floor/plating, +/area/maintenance/medbay) +"cWr" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/obj/machinery/door/firedoor/border_only, +/obj/machinery/door/airlock/maintenance{ + name = "Medbay Maintenance Access"; + req_access = list(5) + }, +/turf/simulated/floor/plating, +/area/medical/ward) +"cWs" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/obj/effect/floor_decal/steeldecal/steel_decals4{ + dir = 6 + }, +/obj/effect/floor_decal/steeldecal/steel_decals4{ + dir = 1 + }, +/turf/simulated/floor/tiled/white, +/area/medical/ward) +"cWt" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/turf/simulated/floor/tiled/white, +/area/medical/ward) +"cWu" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/obj/machinery/hologram/holopad, +/obj/effect/floor_decal/industrial/outline/grey, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 6 + }, +/turf/simulated/floor/tiled/white, +/area/medical/ward) +"cWv" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/manifold/hidden/supply, +/turf/simulated/floor/tiled/white, +/area/medical/ward) +"cWw" = ( +/obj/structure/cable/green{ + d1 = 2; + d2 = 4; + icon_state = "2-4" + }, +/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{ + dir = 1 + }, +/obj/machinery/atmospherics/pipe/manifold/hidden/supply{ + dir = 1 + }, +/turf/simulated/floor/tiled/white, +/area/medical/ward) +"cWx" = ( +/obj/machinery/door/firedoor/border_only, +/obj/structure/cable/green{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/turf/simulated/floor/tiled/white, +/area/medical/ward) +"cWy" = ( +/obj/structure/cable/green{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/turf/simulated/floor/tiled/white, +/area/medical/ward) +"cWz" = ( +/obj/structure/cable/green{ + d1 = 1; + d2 = 8; + icon_state = "1-8" + }, +/obj/structure/cable/green{ + d1 = 1; + d2 = 4; + icon_state = "1-4" + }, +/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers, +/obj/machinery/atmospherics/pipe/manifold/hidden/supply, +/turf/simulated/floor/tiled/white, +/area/medical/ward) +"cWA" = ( +/obj/structure/cable/green{ + d1 = 2; + d2 = 8; + icon_state = "2-8" + }, +/obj/structure/cable/green{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{ + dir = 1 + }, +/obj/machinery/atmospherics/pipe/manifold/hidden/supply{ + dir = 1 + }, +/turf/simulated/floor/tiled/white, +/area/medical/ward) +"cWB" = ( +/obj/structure/cable/green{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/manifold/hidden/supply, +/turf/simulated/floor/tiled/white, +/area/medical/ward) +"cWC" = ( +/obj/structure/cable/green{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{ + dir = 1 + }, +/obj/machinery/hologram/holopad, +/obj/effect/floor_decal/industrial/outline/grey, +/turf/simulated/floor/tiled/white, +/area/medical/ward) +"cWD" = ( +/obj/structure/cable/green{ + d1 = 2; + d2 = 8; + icon_state = "2-8" + }, +/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{ + dir = 1 + }, +/obj/machinery/atmospherics/pipe/manifold/hidden/supply{ + dir = 1 + }, +/obj/structure/cable/green{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/turf/simulated/floor/tiled/white, +/area/medical/ward) +"cWE" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/obj/structure/cable/green{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/obj/effect/floor_decal/steeldecal/steel_decals4, +/obj/effect/floor_decal/steeldecal/steel_decals4{ + dir = 10 + }, +/turf/simulated/floor/tiled/white, +/area/medical/ward) +"cWF" = ( +/obj/machinery/door/firedoor/border_only, +/obj/machinery/door/airlock/glass_medical{ + name = "Patient Ward" + }, +/turf/simulated/floor/tiled/steel_grid, +/area/medical/patient_wing) +"cWG" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/obj/structure/cable/green{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/obj/effect/floor_decal/steeldecal/steel_decals4{ + dir = 6 + }, +/obj/effect/floor_decal/steeldecal/steel_decals4{ + dir = 1 + }, +/turf/simulated/floor/tiled/white, +/area/medical/patient_wing) +"cWH" = ( +/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{ + dir = 1 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/obj/structure/cable/green{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/turf/simulated/floor/tiled/white, +/area/medical/patient_wing) +"cWI" = ( +/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{ + dir = 1 + }, +/obj/machinery/atmospherics/pipe/manifold/hidden/supply{ + dir = 1 + }, +/obj/structure/cable/green{ + d1 = 2; + d2 = 8; + icon_state = "2-8" + }, +/obj/structure/cable/green{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/obj/effect/floor_decal/steeldecal/steel_decals4{ + dir = 9 + }, +/obj/effect/floor_decal/steeldecal/steel_decals4{ + dir = 4 + }, +/turf/simulated/floor/tiled/white, +/area/medical/patient_wing) +"cWJ" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 10 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, +/obj/structure/cable/green{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/obj/machinery/light{ + dir = 1 + }, +/obj/effect/floor_decal/borderfloorwhite/corner{ + dir = 4 + }, +/obj/effect/floor_decal/corner/paleblue/bordercorner{ + dir = 4 + }, +/turf/simulated/floor/tiled/white, +/area/medical/patient_wing) +"cWK" = ( +/obj/machinery/atmospherics/unary/vent_pump/on, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, +/obj/machinery/alarm{ + pixel_y = 22 + }, +/obj/structure/cable/green{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/obj/structure/cable/green{ + d1 = 2; + d2 = 8; + icon_state = "2-8" + }, +/obj/effect/floor_decal/borderfloorwhite{ + dir = 1 + }, +/obj/effect/floor_decal/corner/paleblue/border{ + dir = 1 + }, +/turf/simulated/floor/tiled/white, +/area/medical/patient_wing) +"cWL" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, +/obj/structure/cable/green{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/obj/machinery/camera/network/medbay{ + c_tag = "MED - Patient Hallway"; + dir = 2 + }, +/obj/effect/floor_decal/borderfloorwhite{ + dir = 1 + }, +/obj/effect/floor_decal/corner/paleblue/border{ + dir = 1 + }, +/turf/simulated/floor/tiled/white, +/area/medical/patient_wing) +"cWM" = ( +/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{ + dir = 1 + }, +/obj/structure/cable/green{ + d1 = 2; + d2 = 8; + icon_state = "2-8" + }, +/obj/effect/floor_decal/borderfloorwhite{ + dir = 1 + }, +/obj/effect/floor_decal/corner/paleblue/border{ + dir = 1 + }, +/turf/simulated/floor/tiled/white, +/area/medical/patient_wing) +"cWN" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, +/obj/item/device/radio/intercom{ + dir = 1; + name = "Station Intercom (General)"; + pixel_y = 21 + }, +/obj/effect/floor_decal/borderfloorwhite{ + dir = 1 + }, +/obj/effect/floor_decal/corner/paleblue/border{ + dir = 1 + }, +/turf/simulated/floor/tiled/white, +/area/medical/patient_wing) +"cWO" = ( +/obj/machinery/atmospherics/unary/vent_pump/on, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, +/obj/machinery/light{ + dir = 1 + }, +/obj/effect/floor_decal/borderfloorwhite{ + dir = 1 + }, +/obj/effect/floor_decal/corner/paleblue/border{ + dir = 1 + }, +/turf/simulated/floor/tiled/white, +/area/medical/patient_wing) +"cWP" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, +/obj/effect/floor_decal/borderfloorwhite/corner{ + dir = 1 + }, +/obj/effect/floor_decal/corner/paleblue/bordercorner{ + dir = 1 + }, +/turf/simulated/floor/tiled/white, +/area/medical/patient_wing) +"cWQ" = ( +/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{ + dir = 1 + }, +/obj/effect/floor_decal/steeldecal/steel_decals4{ + dir = 9 + }, +/obj/effect/floor_decal/steeldecal/steel_decals4{ + dir = 4 + }, +/turf/simulated/floor/tiled/white, +/area/medical/patient_wing) +"cWR" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 9 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/effect/floor_decal/steeldecal/steel_decals4{ + dir = 9 + }, +/obj/effect/floor_decal/steeldecal/steel_decals4{ + dir = 4 + }, +/turf/simulated/floor/tiled/white, +/area/medical/patient_wing) +"cWS" = ( +/obj/machinery/door/firedoor, +/obj/effect/wingrille_spawn/reinforced, +/turf/simulated/floor/plating, +/area/medical/patient_wing) +"cWT" = ( +/obj/machinery/atmospherics/valve/digital/open, +/turf/simulated/floor/plating, +/area/maintenance/bar) +"cWU" = ( +/obj/machinery/atmospherics/valve/digital/open, +/obj/structure/cable{ + d1 = 1; + d2 = 2; + icon_state = "1-2"; + pixel_y = 0 + }, +/turf/simulated/floor/plating, +/area/maintenance/bar) +"cWV" = ( +/obj/structure/toilet{ + dir = 4 + }, +/obj/machinery/light/small{ + dir = 8 + }, +/obj/effect/landmark{ + name = "blobstart" + }, +/turf/simulated/floor/tiled/freezer, +/area/crew_quarters/barrestroom) +"cWW" = ( +/obj/machinery/door/airlock{ + name = "Unit 1" + }, +/turf/simulated/floor/tiled/freezer, +/area/crew_quarters/barrestroom) +"cWX" = ( +/obj/machinery/power/apc{ + dir = 2; + name = "south bump"; + pixel_y = -24 + }, +/obj/machinery/light_switch{ + pixel_x = 12; + pixel_y = -24 + }, +/obj/structure/cable/green{ + d2 = 4; + icon_state = "0-4" + }, +/turf/simulated/floor/tiled/freezer, +/area/crew_quarters/barrestroom) +"cWY" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/obj/structure/cable/green{ + d1 = 2; + d2 = 8; + icon_state = "2-8" + }, +/turf/simulated/floor/tiled/freezer, +/area/crew_quarters/barrestroom) +"cWZ" = ( +/obj/random/soap, +/obj/random/soap, +/obj/structure/table/standard, +/obj/machinery/firealarm{ + dir = 4; + pixel_x = 24 + }, +/obj/item/device/radio/intercom{ + name = "Station Intercom (General)"; + pixel_y = -21 + }, +/turf/simulated/floor/tiled/freezer, +/area/crew_quarters/barrestroom) +"cXa" = ( +/obj/structure/table/marble, +/obj/item/weapon/reagent_containers/food/drinks/flask/barflask, +/obj/item/weapon/reagent_containers/glass/rag, +/obj/item/weapon/reagent_containers/food/drinks/flask/vacuumflask, +/obj/item/device/radio/intercom{ + dir = 8; + name = "Station Intercom (General)"; + pixel_x = -21 + }, +/turf/simulated/floor/lino, +/area/crew_quarters/bar) +"cXb" = ( +/obj/machinery/atmospherics/unary/vent_scrubber/on{ + dir = 4 + }, +/turf/simulated/floor/lino, +/area/crew_quarters/bar) +"cXc" = ( +/obj/item/weapon/stool/padded, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, +/obj/structure/disposalpipe/segment, +/turf/simulated/floor/lino, +/area/crew_quarters/bar) +"cXd" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, +/mob/living/carbon/human/monkey/punpun, +/turf/simulated/floor/lino, +/area/crew_quarters/bar) +"cXe" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, +/turf/simulated/floor/lino, +/area/crew_quarters/bar) +"cXf" = ( +/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/machinery/light_switch{ + dir = 2; + name = "light switch "; + pixel_x = 32; + pixel_y = 6 + }, +/obj/machinery/button/remote/blast_door{ + id = "bar"; + name = "Bar Shutters"; + pixel_x = 26; + pixel_y = -6 + }, +/obj/machinery/button/holosign{ + id = "baropen"; + name = "Open Sign"; + pixel_x = 24; + pixel_y = 6 + }, +/turf/simulated/floor/lino, +/area/crew_quarters/bar) +"cXg" = ( +/obj/machinery/ai_status_display, +/turf/simulated/wall, +/area/crew_quarters/bar) +"cXh" = ( +/obj/structure/disposalpipe/segment, +/obj/machinery/power/apc{ + dir = 8; + name = "west bump"; + pixel_x = -24 + }, +/obj/structure/cable, +/obj/effect/floor_decal/borderfloor{ + dir = 8 + }, +/obj/effect/floor_decal/corner/green/border{ + dir = 8 + }, +/turf/simulated/floor/tiled, +/area/hallway/primary/seconddeck/aft) +"cXi" = ( +/obj/structure/extinguisher_cabinet{ + pixel_x = 28; + pixel_y = 0 + }, +/obj/effect/floor_decal/borderfloor{ + dir = 4 + }, +/obj/effect/floor_decal/corner/green/border{ + dir = 4 + }, +/turf/simulated/floor/tiled, +/area/hallway/primary/seconddeck/aft) +"cXj" = ( +/obj/structure/table/marble, +/obj/item/weapon/hand_labeler, +/obj/item/weapon/reagent_containers/food/condiment/small/sugar, +/obj/machinery/firealarm{ + dir = 8; + pixel_x = -24 + }, +/obj/machinery/button/remote/blast_door{ + id = "coffeeshop"; + name = "Cafe Shutters"; + pixel_x = 0; + pixel_y = -26 + }, +/obj/item/device/retail_scanner/civilian{ + icon_state = "retail_idle"; + dir = 1 + }, +/turf/simulated/floor/tiled/yellow, +/area/crew_quarters/coffee_shop) +"cXk" = ( +/obj/structure/table/marble, +/obj/machinery/door/blast/shutters{ + dir = 2; + id = "coffeeshop"; + layer = 3.1; + name = "Cafe Shutters" + }, +/turf/simulated/floor/tiled/yellow, +/area/crew_quarters/coffee_shop) +"cXl" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/obj/machinery/door/window/southright{ + name = "Coffee Shop"; + req_one_access = list(25,28) + }, +/obj/machinery/door/blast/shutters{ + dir = 2; + id = "coffeeshop"; + layer = 3.1; + name = "Cafe Shutters" + }, +/turf/simulated/floor/tiled/yellow, +/area/crew_quarters/coffee_shop) +"cXm" = ( +/obj/structure/disposalpipe/segment, +/turf/simulated/wall, +/area/crew_quarters/coffee_shop) +"cXn" = ( +/obj/structure/table/standard, +/obj/item/weapon/paper_bin, +/obj/item/weapon/pen, +/obj/structure/disposalpipe/segment, +/obj/effect/floor_decal/borderfloorwhite{ + dir = 8 + }, +/obj/effect/floor_decal/corner/brown/border{ + dir = 8 + }, +/turf/simulated/floor/tiled/white, +/area/crew_quarters/cafeteria) +"cXo" = ( +/turf/simulated/floor/tiled/white, +/area/crew_quarters/cafeteria) +"cXp" = ( +/obj/machinery/door/firedoor/border_only, +/obj/effect/wingrille_spawn/reinforced, +/turf/simulated/floor/plating, +/area/crew_quarters/kitchen) +"cXq" = ( +/obj/structure/bed/chair{ + dir = 4 + }, +/obj/effect/landmark/start{ + name = "Cargo Technician" + }, +/obj/effect/floor_decal/borderfloor{ + dir = 4 + }, +/obj/effect/floor_decal/corner/brown/border{ + dir = 4 + }, +/obj/item/device/radio/intercom{ + dir = 1; + name = "Station Intercom (General)"; + pixel_y = 21 + }, +/turf/simulated/floor/tiled, +/area/quartermaster/delivery) +"cXr" = ( +/obj/effect/floor_decal/corner/grey/diagonal{ + dir = 4 + }, +/obj/machinery/light{ + dir = 1 + }, +/obj/machinery/chem_master/condimaster{ + name = "CondiMaster Neo"; + pixel_x = -5 + }, +/turf/simulated/floor/tiled/white, +/area/crew_quarters/kitchen) +"cXs" = ( +/obj/structure/closet/secure_closet/freezer/kitchen, +/obj/effect/floor_decal/corner/grey/diagonal{ + dir = 4 + }, +/obj/structure/extinguisher_cabinet{ + pixel_y = 30 + }, +/turf/simulated/floor/tiled/white, +/area/crew_quarters/kitchen) +"cXt" = ( +/obj/structure/closet/secure_closet/freezer/meat, +/turf/simulated/floor/tiled/freezer, +/area/crew_quarters/kitchen) +"cXu" = ( +/obj/machinery/alarm{ + dir = 1; + pixel_y = -22 + }, +/obj/machinery/atmospherics/unary/vent_pump/on{ + dir = 4 + }, +/obj/machinery/camera/network/civilian{ + c_tag = "CIV - Kitchen Cold Room"; + dir = 1 + }, +/turf/simulated/floor/tiled/freezer, +/area/crew_quarters/kitchen) +"cXv" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/obj/machinery/atmospherics/pipe/manifold/hidden/supply{ + dir = 4 + }, +/obj/effect/floor_decal/steeldecal/steel_decals4{ + dir = 8 + }, +/obj/effect/floor_decal/steeldecal/steel_decals4{ + dir = 5 + }, +/turf/simulated/floor/tiled/freezer, +/area/crew_quarters/kitchen) +"cXw" = ( +/obj/structure/closet/crate/freezer, +/obj/item/device/radio/intercom{ + dir = 4; + name = "Station Intercom (General)"; + pixel_x = 21 + }, +/turf/simulated/floor/tiled/freezer, +/area/crew_quarters/kitchen) +"cXx" = ( +/obj/machinery/light/small{ + dir = 8 + }, +/obj/structure/closet/crate/plastic, +/obj/random/maintenance/clean, +/obj/random/maintenance/clean, +/obj/random/maintenance/clean, +/obj/random/maintenance/clean, +/turf/simulated/floor/plating, +/area/maintenance/medbay) +"cXy" = ( +/obj/machinery/atmospherics/pipe/manifold/hidden{ + dir = 8; + icon_state = "map" + }, +/turf/simulated/wall/r_wall, +/area/maintenance/medbay) +"cXz" = ( +/obj/machinery/atmospherics/unary/vent_pump/high_volume{ + dir = 8; + frequency = 1379; + id_tag = "aft_starboard_pump" + }, +/obj/effect/floor_decal/industrial/warning{ + dir = 9 + }, +/obj/machinery/light/small{ + dir = 8 + }, +/turf/simulated/floor/plating, +/area/maintenance/medbay) +"cXA" = ( +/obj/machinery/atmospherics/unary/vent_pump/high_volume{ + dir = 4; + frequency = 1379; + id_tag = "aft_starboard_pump" + }, +/obj/effect/floor_decal/industrial/warning{ + dir = 5 + }, +/turf/simulated/floor/plating, +/area/maintenance/medbay) +"cXB" = ( +/obj/machinery/atmospherics/pipe/manifold/hidden{ + dir = 4; + icon_state = "map" + }, +/turf/simulated/wall/r_wall, +/area/maintenance/medbay) +"cXC" = ( +/obj/machinery/atmospherics/pipe/tank/air{ + dir = 1 + }, +/turf/simulated/floor/plating, +/area/maintenance/medbay) +"cXD" = ( +/obj/structure/closet/emcloset/legacy, +/obj/structure/extinguisher_cabinet{ + pixel_x = -27 + }, +/obj/effect/floor_decal/borderfloorwhite{ + dir = 8 + }, +/obj/effect/floor_decal/corner/purple/border{ + dir = 8 + }, +/turf/simulated/floor/tiled/white, +/area/rnd/research/firstdeck/hallway) +"cXE" = ( +/obj/structure/table/glass, +/obj/item/weapon/reagent_containers/blood/AMinus, +/obj/item/weapon/reagent_containers/blood/APlus, +/obj/item/weapon/reagent_containers/blood/BMinus, +/obj/item/weapon/reagent_containers/blood/BPlus, +/obj/item/weapon/reagent_containers/blood/OPlus, +/obj/structure/extinguisher_cabinet{ + pixel_x = -28; + pixel_y = 0 + }, +/obj/machinery/alarm{ + dir = 1; + icon_state = "alarm0"; + pixel_y = -22 + }, +/obj/effect/floor_decal/borderfloorwhite, +/obj/effect/floor_decal/corner/paleblue/border, +/turf/simulated/floor/tiled/white, +/area/medical/ward) +"cXF" = ( +/obj/structure/table/glass, +/obj/item/weapon/reagent_containers/blood/OMinus, +/obj/item/weapon/reagent_containers/blood/OMinus, +/obj/item/weapon/reagent_containers/blood/OMinus, +/obj/structure/closet/secure_closet/medical_wall{ + name = "O- Blood Locker"; + pixel_x = 0; + pixel_y = -32 + }, +/obj/item/weapon/reagent_containers/blood/OMinus, +/obj/effect/floor_decal/borderfloorwhite, +/obj/effect/floor_decal/corner/paleblue/border, +/turf/simulated/floor/tiled/white, +/area/medical/ward) +"cXG" = ( +/obj/structure/table/glass, +/obj/item/weapon/reagent_containers/blood/empty, +/obj/item/weapon/reagent_containers/blood/empty, +/obj/item/weapon/reagent_containers/blood/empty, +/obj/item/weapon/reagent_containers/blood/empty, +/obj/item/weapon/reagent_containers/blood/empty, +/obj/machinery/atmospherics/unary/vent_scrubber/on{ + dir = 1 + }, +/obj/effect/floor_decal/borderfloorwhite, +/obj/effect/floor_decal/corner/paleblue/border, +/turf/simulated/floor/tiled/white, +/area/medical/ward) +"cXH" = ( +/obj/item/weapon/stool/padded, +/obj/machinery/camera/network/medbay{ + c_tag = "MED - Patient Ward Port"; + dir = 1 + }, +/obj/effect/floor_decal/borderfloorwhite/corner{ + dir = 8 + }, +/obj/effect/floor_decal/corner/paleblue/bordercorner{ + dir = 8 + }, +/turf/simulated/floor/tiled/white, +/area/medical/ward) +"cXI" = ( +/obj/structure/cable/green{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/effect/floor_decal/steeldecal/steel_decals4{ + dir = 8 + }, +/obj/effect/floor_decal/steeldecal/steel_decals4{ + dir = 5 + }, +/turf/simulated/floor/tiled/white, +/area/medical/ward) +"cXJ" = ( +/obj/machinery/door/firedoor/glass, +/obj/machinery/vending/wallmed1{ + pixel_y = -30 + }, +/obj/effect/floor_decal/borderfloorwhite/corner, +/obj/effect/floor_decal/corner/paleblue/bordercorner, +/turf/simulated/floor/tiled/white, +/area/medical/ward) +"cXK" = ( +/obj/effect/floor_decal/borderfloorwhite, +/obj/effect/floor_decal/corner/paleblue/border, +/turf/simulated/floor/tiled/white, +/area/medical/ward) +"cXL" = ( +/obj/machinery/atmospherics/unary/vent_scrubber/on{ + dir = 4 + }, +/obj/effect/floor_decal/borderfloorwhite/corner{ + dir = 8 + }, +/obj/effect/floor_decal/corner/paleblue/bordercorner{ + dir = 8 + }, +/turf/simulated/floor/tiled/white, +/area/medical/ward) +"cXM" = ( +/obj/structure/cable/green{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/turf/simulated/floor/tiled/white, +/area/medical/ward) +"cXN" = ( +/obj/effect/floor_decal/borderfloorwhite/corner, +/obj/effect/floor_decal/corner/paleblue/bordercorner, +/turf/simulated/floor/tiled/white, +/area/medical/ward) +"cXO" = ( +/obj/machinery/door/firedoor/glass, +/obj/machinery/vending/wallmed1{ + pixel_y = -30 + }, +/obj/effect/floor_decal/borderfloorwhite/corner{ + dir = 8 + }, +/obj/effect/floor_decal/corner/paleblue/bordercorner{ + dir = 8 + }, +/turf/simulated/floor/tiled/white, +/area/medical/ward) +"cXP" = ( +/obj/structure/cable/green{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/turf/simulated/floor/tiled/white, +/area/medical/ward) +"cXQ" = ( +/obj/machinery/camera/network/medbay{ + c_tag = "MED - Patient Ward Starboard"; + dir = 1 + }, +/obj/effect/floor_decal/borderfloorwhite/corner, +/obj/effect/floor_decal/corner/paleblue/bordercorner, +/turf/simulated/floor/tiled/white, +/area/medical/ward) +"cXR" = ( +/obj/machinery/atmospherics/unary/vent_scrubber/on{ + dir = 1 + }, +/obj/effect/floor_decal/borderfloorwhite, +/obj/effect/floor_decal/corner/paleblue/border, +/turf/simulated/floor/tiled/white, +/area/medical/ward) +"cXS" = ( +/obj/structure/extinguisher_cabinet{ + pixel_y = -30 + }, +/obj/effect/floor_decal/borderfloorwhite/corner{ + dir = 8 + }, +/obj/effect/floor_decal/corner/paleblue/bordercorner{ + dir = 8 + }, +/turf/simulated/floor/tiled/white, +/area/medical/ward) +"cXT" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/obj/structure/cable/green{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/obj/effect/floor_decal/steeldecal/steel_decals4{ + dir = 8 + }, +/obj/effect/floor_decal/steeldecal/steel_decals4{ + dir = 5 + }, +/turf/simulated/floor/tiled/white, +/area/medical/ward) +"cXU" = ( +/obj/machinery/alarm{ + dir = 1; + icon_state = "alarm0"; + pixel_y = -22 + }, +/obj/effect/floor_decal/steeldecal/steel_decals4, +/obj/effect/floor_decal/steeldecal/steel_decals4{ + dir = 10 + }, +/turf/simulated/floor/tiled/white, +/area/medical/ward) +"cXV" = ( +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/turf/simulated/wall/r_wall, +/area/maintenance/cargo) +"cXW" = ( +/obj/effect/floor_decal/steeldecal/steel_decals4{ + dir = 6 + }, +/obj/effect/floor_decal/steeldecal/steel_decals4{ + dir = 1 + }, +/turf/simulated/floor/tiled/white, +/area/medical/patient_wing) +"cXX" = ( +/obj/machinery/atmospherics/unary/vent_scrubber/on{ + dir = 1 + }, +/turf/simulated/floor/tiled/white, +/area/medical/patient_wing) +"cXY" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/obj/structure/cable/green{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/obj/effect/floor_decal/steeldecal/steel_decals4{ + dir = 8 + }, +/obj/effect/floor_decal/steeldecal/steel_decals4{ + dir = 5 + }, +/turf/simulated/floor/tiled/white, +/area/medical/patient_wing) +"cXZ" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 5 + }, +/obj/effect/floor_decal/borderfloorwhite/corner, +/obj/effect/floor_decal/corner/paleblue/bordercorner, +/turf/simulated/floor/tiled/white, +/area/medical/patient_wing) +"cYa" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/turf/simulated/floor/tiled/white, +/area/rnd/research/firstdeck/hallway) +"cYb" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/obj/effect/floor_decal/borderfloorwhite/corner{ + dir = 8 + }, +/obj/effect/floor_decal/corner/paleblue/bordercorner{ + dir = 8 + }, +/turf/simulated/floor/tiled/white, +/area/medical/patient_wing) +"cYc" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/obj/structure/cable/green{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/obj/machinery/atmospherics/pipe/manifold/hidden/supply{ + dir = 1 + }, +/obj/effect/floor_decal/steeldecal/steel_decals4{ + dir = 8 + }, +/obj/effect/floor_decal/steeldecal/steel_decals4{ + dir = 5 + }, +/turf/simulated/floor/tiled/white, +/area/medical/patient_wing) +"cYd" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/obj/effect/floor_decal/borderfloorwhite/corner, +/obj/effect/floor_decal/corner/paleblue/bordercorner, +/turf/simulated/floor/tiled/white, +/area/medical/patient_wing) +"cYe" = ( +/obj/machinery/atmospherics/pipe/manifold/hidden/supply, +/obj/machinery/firealarm{ + dir = 1; + pixel_y = -24 + }, +/obj/effect/floor_decal/borderfloorwhite, +/obj/effect/floor_decal/corner/paleblue/border, +/turf/simulated/floor/tiled/white, +/area/medical/patient_wing) +"cYf" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/obj/effect/floor_decal/borderfloorwhite, +/obj/effect/floor_decal/corner/paleblue/border, +/turf/simulated/floor/tiled/white, +/area/medical/patient_wing) +"cYg" = ( +/obj/machinery/atmospherics/unary/vent_scrubber/on{ + dir = 1 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/obj/effect/floor_decal/borderfloorwhite, +/obj/effect/floor_decal/corner/paleblue/border, +/turf/simulated/floor/tiled/white, +/area/medical/patient_wing) +"cYh" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 9; + pixel_y = 0 + }, +/obj/effect/floor_decal/borderfloorwhite, +/obj/effect/floor_decal/corner/paleblue/border, +/turf/simulated/floor/tiled/white, +/area/medical/patient_wing) +"cYi" = ( +/obj/machinery/door/firedoor/glass, +/obj/effect/wingrille_spawn/reinforced, +/turf/simulated/floor/plating, +/area/medical/patient_wing) +"cYj" = ( +/obj/machinery/door/firedoor/border_only, +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/obj/machinery/door/airlock{ + name = "Unisex Restrooms" + }, +/obj/structure/cable/green{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/turf/simulated/floor/tiled/steel_grid, +/area/crew_quarters/barrestroom) +"cYk" = ( +/obj/machinery/computer/security/telescreen/entertainment{ + icon_state = "frame"; + pixel_x = 0; + pixel_y = 0 + }, +/turf/simulated/wall, +/area/crew_quarters/barrestroom) +"cYl" = ( +/obj/structure/table/marble, +/obj/machinery/door/blast/shutters{ + dir = 2; + id = "bar"; + layer = 3.1; + name = "Bar Shutters" + }, +/turf/simulated/floor/lino, +/area/crew_quarters/bar) +"cYm" = ( +/obj/structure/table/marble, +/obj/machinery/cash_register/civilian{ + dir = 1; + icon_state = "register_idle" + }, +/obj/machinery/door/blast/shutters{ + dir = 2; + id = "bar"; + layer = 3.1; + name = "Bar Shutters" + }, +/obj/structure/disposalpipe/segment, +/turf/simulated/floor/lino, +/area/crew_quarters/bar) +"cYn" = ( +/obj/structure/window/reinforced{ + dir = 4 + }, +/obj/machinery/door/window/southright{ + name = "Bar"; + req_access = list(25) + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/obj/machinery/atmospherics/pipe/manifold/hidden/supply{ + dir = 8 + }, +/turf/simulated/floor/lino, +/area/crew_quarters/bar) +"cYo" = ( +/obj/machinery/atmospherics/unary/vent_pump/on{ + dir = 8 + }, +/turf/simulated/floor/wood, +/area/crew_quarters/bar) +"cYp" = ( +/obj/structure/bed/chair/wood{ + dir = 4 + }, +/obj/machinery/light{ + dir = 1 + }, +/obj/effect/landmark/start{ + name = "Assistant" + }, +/turf/simulated/floor/wood, +/area/crew_quarters/bar) +"cYq" = ( +/obj/structure/table/woodentable, +/obj/item/weapon/deck/cah, +/turf/simulated/floor/wood, +/area/crew_quarters/bar) +"cYr" = ( +/obj/structure/bed/chair/wood{ + dir = 8 + }, +/obj/structure/sign/double/barsign{ + pixel_y = 32 + }, +/turf/simulated/floor/wood, +/area/crew_quarters/bar) +"cYs" = ( +/obj/machinery/atmospherics/unary/vent_scrubber/on, +/turf/simulated/floor/wood, +/area/crew_quarters/bar) +"cYt" = ( +/obj/machinery/door/firedoor/border_only, +/obj/effect/wingrille_spawn/reinforced, +/turf/simulated/floor/plating, +/area/crew_quarters/bar) +"cYu" = ( +/obj/structure/disposalpipe/segment, +/obj/machinery/light{ + icon_state = "tube1"; + dir = 8 + }, +/obj/effect/floor_decal/borderfloor{ + dir = 8 + }, +/obj/effect/floor_decal/corner/green/border{ + dir = 8 + }, +/turf/simulated/floor/tiled, +/area/hallway/primary/seconddeck/aft) +"cYv" = ( +/obj/machinery/alarm{ + dir = 8; + pixel_x = 22; + pixel_y = 0 + }, +/obj/effect/floor_decal/borderfloor{ + dir = 4 + }, +/obj/effect/floor_decal/corner/green/border{ + dir = 4 + }, +/turf/simulated/floor/tiled, +/area/hallway/primary/seconddeck/aft) +"cYw" = ( +/turf/simulated/wall, +/area/crew_quarters/cafeteria) +"cYx" = ( +/obj/machinery/disposal, +/obj/item/device/radio/intercom{ + dir = 8; + name = "Station Intercom (General)"; + pixel_x = -21 + }, +/obj/structure/disposalpipe/trunk{ + dir = 4 + }, +/obj/effect/floor_decal/borderfloorwhite{ + dir = 9 + }, +/obj/effect/floor_decal/corner/brown/border{ + dir = 9 + }, +/turf/simulated/floor/tiled/white, +/area/crew_quarters/cafeteria) +"cYy" = ( +/obj/machinery/atmospherics/unary/vent_scrubber/on, +/obj/structure/cable/green{ + d1 = 2; + d2 = 4; + icon_state = "2-4" + }, +/obj/structure/cable/green{ + d1 = 1; + d2 = 4; + icon_state = "1-4" + }, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/effect/floor_decal/borderfloorwhite{ + dir = 1 + }, +/obj/effect/floor_decal/corner/brown/border{ + dir = 1 + }, +/turf/simulated/floor/tiled/white, +/area/crew_quarters/cafeteria) +"cYz" = ( +/obj/item/weapon/stool/padded, +/obj/structure/cable/green{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/effect/floor_decal/borderfloorwhite{ + dir = 1 + }, +/obj/effect/floor_decal/corner/brown/border{ + dir = 1 + }, +/turf/simulated/floor/tiled/white, +/area/crew_quarters/cafeteria) +"cYA" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/obj/structure/cable/green{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/effect/floor_decal/borderfloorwhite{ + dir = 1 + }, +/obj/effect/floor_decal/corner/brown/border{ + dir = 1 + }, +/turf/simulated/floor/tiled/white, +/area/crew_quarters/cafeteria) +"cYB" = ( +/obj/structure/table/standard, +/obj/structure/cable/green{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/obj/machinery/computer/security/telescreen/entertainment{ + icon_state = "frame"; + pixel_x = 0; + pixel_y = 32 + }, +/obj/structure/disposalpipe/junction{ + icon_state = "pipe-j2"; + dir = 4 + }, +/obj/machinery/light{ + dir = 1 + }, +/obj/effect/floor_decal/borderfloorwhite{ + dir = 1 + }, +/obj/effect/floor_decal/corner/brown/border{ + dir = 1 + }, +/turf/simulated/floor/tiled/white, +/area/crew_quarters/cafeteria) +"cYC" = ( +/obj/item/weapon/stool/padded, +/obj/machinery/atm{ + pixel_y = 30 + }, +/obj/structure/cable/green{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/effect/floor_decal/borderfloorwhite{ + dir = 1 + }, +/obj/effect/floor_decal/corner/brown/border{ + dir = 1 + }, +/turf/simulated/floor/tiled/white, +/area/crew_quarters/cafeteria) +"cYD" = ( +/obj/machinery/atmospherics/unary/vent_pump/on{ + dir = 4 + }, +/obj/structure/cable/green{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/obj/structure/disposalpipe/junction, +/obj/effect/floor_decal/borderfloorwhite/corner{ + dir = 1 + }, +/obj/effect/floor_decal/corner/brown/bordercorner{ + dir = 1 + }, +/turf/simulated/floor/tiled/white, +/area/crew_quarters/cafeteria) +"cYE" = ( +/obj/structure/cable/green{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 10 + }, +/obj/effect/floor_decal/steeldecal/steel_decals4, +/obj/effect/floor_decal/steeldecal/steel_decals4{ + dir = 10 + }, +/turf/simulated/floor/tiled/white, +/area/crew_quarters/cafeteria) +"cYF" = ( +/obj/machinery/door/airlock/glass{ + name = "Kitchen"; + req_access = list(28) + }, +/obj/structure/cable/green{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/turf/simulated/floor/tiled/steel_grid, +/area/crew_quarters/kitchen) +"cYG" = ( +/obj/effect/floor_decal/corner/grey/diagonal{ + dir = 4 + }, +/obj/structure/cable/green{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/obj/effect/floor_decal/steeldecal/steel_decals4{ + dir = 6 + }, +/obj/effect/floor_decal/steeldecal/steel_decals4{ + dir = 1 + }, +/turf/simulated/floor/tiled/white, +/area/crew_quarters/kitchen) +"cYH" = ( +/obj/effect/floor_decal/corner/grey/diagonal{ + dir = 4 + }, +/obj/structure/cable/green{ + d1 = 2; + d2 = 8; + icon_state = "2-8" + }, +/obj/structure/cable/green{ + d1 = 2; + d2 = 4; + icon_state = "2-4" + }, +/turf/simulated/floor/tiled/white, +/area/crew_quarters/kitchen) +"cYI" = ( +/obj/effect/floor_decal/corner/grey/diagonal{ + dir = 4 + }, +/obj/machinery/power/apc{ + dir = 4; + name = "east bump"; + pixel_x = 24 + }, +/obj/machinery/light_switch{ + dir = 2; + name = "light switch "; + pixel_x = 36; + pixel_y = -6 + }, +/obj/structure/cable/green{ + d2 = 8; + icon_state = "0-8" + }, +/obj/machinery/button/holosign{ + id = "cafeopen"; + name = "Open Sign"; + pixel_x = 36; + pixel_y = 6 + }, +/turf/simulated/floor/tiled/white, +/area/crew_quarters/kitchen) +"cYJ" = ( +/obj/machinery/door/firedoor/border_only, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/machinery/door/airlock/freezer{ + name = "Kitchen cold room"; + req_access = list(28) + }, +/turf/simulated/floor/tiled/freezer, +/area/crew_quarters/kitchen) +"cYK" = ( +/obj/structure/cable{ + d1 = 1; + d2 = 2; + icon_state = "1-2"; + pixel_y = 0 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/obj/machinery/door/firedoor/border_only, +/obj/machinery/door/airlock/maintenance{ + req_access = null; + req_one_access = list(5,12,25,27,28,35) + }, +/turf/simulated/floor/plating, +/area/maintenance/medbay) +"cYL" = ( +/obj/machinery/atmospherics/pipe/simple/hidden{ + dir = 5; + icon_state = "intact" + }, +/turf/simulated/wall/r_wall, +/area/maintenance/medbay) +"cYM" = ( +/obj/machinery/atmospherics/unary/vent_pump/high_volume{ + dir = 8; + frequency = 1379; + id_tag = "aft_starboard_pump" + }, +/obj/effect/floor_decal/industrial/warning{ + dir = 10 + }, +/obj/machinery/airlock_sensor{ + frequency = 1379; + id_tag = "aft_starboard_sensor"; + pixel_x = -24; + pixel_y = 0 + }, +/turf/simulated/floor/plating, +/area/maintenance/medbay) +"cYN" = ( +/obj/machinery/atmospherics/unary/vent_pump/high_volume{ + dir = 4; + frequency = 1379; + id_tag = "aft_starboard_pump" + }, +/obj/effect/floor_decal/industrial/warning{ + dir = 6 + }, +/obj/machinery/embedded_controller/radio/airlock/airlock_controller{ + frequency = 1379; + id_tag = "aft_starboard_airlock"; + pixel_x = 25; + req_access = list(13); + req_one_access = null; + tag_airpump = "aft_starboard_pump"; + tag_chamber_sensor = "aft_starboard_sensor"; + tag_exterior_door = "aft_starboard_outer"; + tag_interior_door = "aft_starboard_inner" + }, +/turf/simulated/floor/plating, +/area/maintenance/medbay) +"cYO" = ( +/obj/machinery/atmospherics/pipe/simple/hidden{ + dir = 9; + icon_state = "intact" + }, +/turf/simulated/wall/r_wall, +/area/maintenance/medbay) +"cYP" = ( +/turf/simulated/wall/r_wall, +/area/medical/surgery) +"cYQ" = ( +/obj/machinery/door/firedoor/border_only, +/obj/effect/wingrille_spawn/reinforced/polarized{ + id = "st1_tint" + }, +/turf/simulated/floor/plating, +/area/medical/surgery) +"cYR" = ( +/turf/simulated/wall, +/area/medical/surgery) +"cYS" = ( +/obj/machinery/door/firedoor/border_only, +/obj/machinery/door/airlock/medical{ + name = "Operating Theatre 1"; + req_access = list(45) + }, +/obj/structure/cable/green{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/turf/simulated/floor/tiled/steel_grid, +/area/medical/surgery) +"cYT" = ( +/obj/machinery/alarm{ + dir = 1; + icon_state = "alarm0"; + pixel_y = -22 + }, +/obj/item/device/radio/intercom/department/medbay{ + dir = 4; + pixel_x = -21 + }, +/obj/effect/floor_decal/borderfloorwhite{ + dir = 8 + }, +/obj/effect/floor_decal/corner/paleblue/border{ + dir = 8 + }, +/turf/simulated/floor/tiled/white, +/area/medical/ward) +"cYU" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/structure/cable/green{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/obj/effect/floor_decal/steeldecal/steel_decals4{ + dir = 8 + }, +/obj/effect/floor_decal/steeldecal/steel_decals4{ + dir = 5 + }, +/turf/simulated/floor/tiled/white, +/area/medical/ward) +"cYV" = ( +/obj/machinery/firealarm{ + dir = 1; + pixel_y = -24 + }, +/obj/item/device/radio/intercom{ + dir = 4; + name = "Station Intercom (General)"; + pixel_x = 21 + }, +/obj/effect/floor_decal/borderfloorwhite{ + dir = 4 + }, +/obj/effect/floor_decal/corner/paleblue/border{ + dir = 4 + }, +/turf/simulated/floor/tiled/white, +/area/medical/ward) +"cYW" = ( +/turf/simulated/wall/r_wall, +/area/medical/surgery2) +"cYX" = ( +/obj/machinery/door/firedoor/border_only, +/obj/machinery/door/airlock/medical{ + name = "Operating Theatre 2"; + req_access = list(45) + }, +/obj/structure/cable/green{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/turf/simulated/floor/tiled/steel_grid, +/area/medical/surgery2) +"cYY" = ( +/turf/simulated/wall, +/area/medical/surgery2) +"cYZ" = ( +/obj/machinery/door/firedoor/border_only, +/obj/effect/wingrille_spawn/reinforced/polarized{ + id = "st2_tint" + }, +/turf/simulated/floor/plating, +/area/medical/surgery2) +"cZa" = ( +/obj/machinery/door/firedoor/border_only, +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/obj/structure/cable/green{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/obj/machinery/door/airlock/medical{ + name = "Operating Theatre Storage"; + req_access = list(45) + }, +/turf/simulated/floor/tiled/steel_grid, +/area/medical/surgery_storage) +"cZb" = ( +/turf/simulated/wall, +/area/medical/surgery_storage) +"cZc" = ( +/obj/machinery/door/firedoor, +/obj/effect/wingrille_spawn/reinforced/polarized{ + id = "pr1_window_tint" + }, +/turf/simulated/floor/plating, +/area/medical/patient_a) +"cZd" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/obj/machinery/door/firedoor, +/obj/structure/cable/green{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/obj/machinery/door/airlock/medical{ + name = "Patient Room A" + }, +/turf/simulated/floor/tiled/steel_grid, +/area/medical/patient_a) +"cZe" = ( +/turf/simulated/wall, +/area/medical/patient_a) +"cZf" = ( +/obj/machinery/door/firedoor, +/obj/effect/wingrille_spawn/reinforced/polarized{ + id = "pr2_window_tint" + }, +/turf/simulated/floor/plating, +/area/medical/patient_b) +"cZg" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/obj/machinery/door/firedoor, +/obj/structure/cable/green{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/obj/machinery/door/airlock/medical{ + name = "Patient Room B" + }, +/turf/simulated/floor/tiled/steel_grid, +/area/medical/patient_b) +"cZh" = ( +/turf/simulated/wall/r_wall, +/area/medical/patient_b) +"cZi" = ( +/obj/structure/bed/chair, +/turf/simulated/floor/tiled/dark, +/area/medical/patient_wing) +"cZj" = ( +/obj/structure/table/glass, +/turf/simulated/floor/tiled/dark, +/area/medical/patient_wing) +"cZk" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/obj/machinery/meter, +/obj/structure/cable{ + d1 = 1; + d2 = 2; + icon_state = "1-2"; + pixel_y = 0 + }, +/turf/simulated/floor/plating, +/area/maintenance/bar) +"cZl" = ( +/obj/machinery/alarm{ + pixel_y = 22 + }, +/obj/machinery/space_heater, +/turf/simulated/floor/plating, +/area/maintenance/bar) +"cZm" = ( +/obj/structure/closet, +/obj/random/maintenance, +/obj/random/maintenance, +/obj/random/maintenance/clean, +/obj/random/maintenance/clean, +/obj/random/maintenance/clean, +/turf/simulated/floor/plating, +/area/maintenance/bar) +"cZn" = ( +/obj/structure/closet/emcloset, +/turf/simulated/floor/plating, +/area/maintenance/bar) +"cZo" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/obj/structure/cable/green{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/turf/simulated/floor/wood, +/area/crew_quarters/bar) +"cZp" = ( +/obj/machinery/media/jukebox, +/turf/simulated/floor/wood, +/area/crew_quarters/bar) +"cZq" = ( +/obj/item/weapon/stool/padded, +/turf/simulated/floor/wood, +/area/crew_quarters/bar) +"cZr" = ( +/obj/item/weapon/stool/padded, +/obj/machinery/atmospherics/unary/vent_pump/on, +/obj/structure/disposalpipe/segment, +/turf/simulated/floor/wood, +/area/crew_quarters/bar) +"cZs" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/turf/simulated/floor/wood, +/area/crew_quarters/bar) +"cZt" = ( +/obj/structure/bed/chair/wood{ + dir = 4 + }, +/turf/simulated/floor/wood, +/area/crew_quarters/bar) +"cZu" = ( +/obj/structure/table/woodentable, +/obj/item/weapon/book/codex/lore/vir, +/turf/simulated/floor/wood, +/area/crew_quarters/bar) +"cZv" = ( +/obj/structure/bed/chair/wood{ + dir = 8 + }, +/obj/effect/landmark/start{ + name = "Assistant" + }, +/turf/simulated/floor/wood, +/area/crew_quarters/bar) +"cZw" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/obj/machinery/camera/network/civilian{ + c_tag = "CIV - Bar Starboard"; + dir = 8 + }, +/turf/simulated/floor/wood, +/area/crew_quarters/bar) +"cZx" = ( +/obj/structure/disposalpipe/segment, +/obj/machinery/camera/network/second_deck{ + c_tag = "Second Deck - Aft Hallway Two"; + dir = 4 + }, +/obj/effect/floor_decal/borderfloor/corner{ + dir = 1 + }, +/obj/effect/floor_decal/corner/green/bordercorner{ + dir = 1 + }, +/turf/simulated/floor/tiled, +/area/hallway/primary/seconddeck/aft) +"cZy" = ( +/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{ + dir = 8 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/turf/simulated/floor/tiled/monotile, +/area/hallway/primary/seconddeck/aft) +"cZz" = ( +/obj/machinery/atmospherics/unary/vent_scrubber/on{ + dir = 8 + }, +/obj/effect/floor_decal/borderfloor/corner{ + dir = 4 + }, +/obj/effect/floor_decal/corner/green/bordercorner{ + dir = 4 + }, +/turf/simulated/floor/tiled, +/area/hallway/primary/seconddeck/aft) +"cZA" = ( +/obj/machinery/holosign/bar{ + id = "cafeopen"; + name = "cafeteria holosign" + }, +/turf/simulated/wall, +/area/crew_quarters/cafeteria) +"cZB" = ( +/obj/effect/floor_decal/borderfloorwhite/corner{ + dir = 1 + }, +/obj/effect/floor_decal/corner/brown/bordercorner{ + dir = 1 + }, +/turf/simulated/floor/tiled/white, +/area/crew_quarters/cafeteria) +"cZC" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/obj/structure/cable/green{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/turf/simulated/floor/tiled/white, +/area/crew_quarters/cafeteria) +"cZD" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/turf/simulated/floor/tiled/white, +/area/crew_quarters/cafeteria) +"cZE" = ( +/obj/item/weapon/stool/padded, +/turf/simulated/floor/tiled/white, +/area/crew_quarters/cafeteria) +"cZF" = ( +/obj/structure/disposalpipe/segment, +/turf/simulated/floor/tiled/white, +/area/crew_quarters/cafeteria) +"cZG" = ( +/obj/machinery/light_switch{ + dir = 2; + name = "light switch "; + pixel_x = 26; + pixel_y = 0 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/machinery/camera/network/civilian{ + c_tag = "CIV - Cafeteria Fore"; + dir = 8 + }, +/obj/effect/floor_decal/borderfloorwhite/corner, +/obj/effect/floor_decal/corner/brown/bordercorner, +/turf/simulated/floor/tiled/white, +/area/crew_quarters/cafeteria) +"cZH" = ( +/turf/simulated/wall/r_wall, +/area/crew_quarters/kitchen) +"cZI" = ( +/obj/effect/floor_decal/corner/grey/diagonal{ + dir = 4 + }, +/obj/machinery/button/remote/blast_door{ + id = "kitchen"; + name = "Kitchen Shutters Control"; + pixel_x = -26; + pixel_y = 0; + req_access = list(28) + }, +/obj/machinery/camera/network/civilian{ + c_tag = "CIV - Kitchen Port"; + dir = 4 + }, +/obj/machinery/atmospherics/unary/vent_scrubber/on, +/turf/simulated/floor/tiled/white, +/area/crew_quarters/kitchen) +"cZJ" = ( +/obj/effect/floor_decal/corner/grey/diagonal{ + dir = 4 + }, +/obj/structure/cable/green{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/turf/simulated/floor/tiled/white, +/area/crew_quarters/kitchen) +"cZK" = ( +/obj/effect/floor_decal/corner/grey/diagonal{ + dir = 4 + }, +/turf/simulated/floor/tiled/white, +/area/crew_quarters/kitchen) +"cZL" = ( +/obj/machinery/cooker/fryer, +/obj/effect/floor_decal/corner/grey/diagonal{ + dir = 4 + }, +/turf/simulated/floor/tiled/white, +/area/crew_quarters/kitchen) +"cZM" = ( +/obj/machinery/cooker/grill, +/obj/effect/floor_decal/corner/grey/diagonal{ + dir = 4 + }, +/obj/machinery/firealarm{ + dir = 2; + pixel_y = 24 + }, +/turf/simulated/floor/tiled/white, +/area/crew_quarters/kitchen) +"cZN" = ( +/obj/machinery/cooker/oven, +/obj/effect/floor_decal/corner/grey/diagonal{ + dir = 4 + }, +/obj/item/device/radio/intercom{ + dir = 1; + name = "Station Intercom (General)"; + pixel_y = 21 + }, +/turf/simulated/floor/tiled/white, +/area/crew_quarters/kitchen) +"cZO" = ( +/obj/effect/floor_decal/corner/grey/diagonal{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/effect/floor_decal/steeldecal/steel_decals4{ + dir = 9 + }, +/obj/effect/floor_decal/steeldecal/steel_decals4{ + dir = 4 + }, +/turf/simulated/floor/tiled/white, +/area/crew_quarters/kitchen) +"cZP" = ( +/obj/structure/sink/kitchen{ + pixel_y = 28 + }, +/obj/effect/floor_decal/corner/grey/diagonal{ + dir = 4 + }, +/turf/simulated/floor/tiled/white, +/area/crew_quarters/kitchen) +"cZQ" = ( +/obj/machinery/alarm{ + dir = 4; + icon_state = "alarm0"; + pixel_x = -22 + }, +/turf/simulated/floor/plating, +/area/maintenance/chapel) +"cZR" = ( +/obj/structure/cable{ + d1 = 1; + d2 = 2; + icon_state = "1-2"; + pixel_y = 0 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/obj/structure/catwalk, +/turf/simulated/floor/plating, +/area/maintenance/chapel) +"cZS" = ( +/turf/simulated/wall/r_wall, +/area/maintenance/chapel) +"cZT" = ( +/obj/machinery/door/airlock/external{ + frequency = 1379; + icon_state = "door_locked"; + id_tag = "aft_starboard_outer"; + locked = 1; + name = "External Airlock Access"; + req_access = list(13) + }, +/turf/simulated/floor/plating, +/area/maintenance/medbay) +"cZU" = ( +/obj/structure/table/standard, +/obj/item/weapon/surgical/hemostat, +/obj/item/weapon/surgical/cautery, +/obj/machinery/status_display{ + density = 0; + layer = 4; + pixel_x = -32; + pixel_y = 0 + }, +/obj/effect/floor_decal/borderfloorwhite{ + dir = 9 + }, +/obj/effect/floor_decal/corner/pink/border{ + dir = 9 + }, +/turf/simulated/floor/tiled/white, +/area/medical/surgery) +"cZV" = ( +/obj/structure/table/standard, +/obj/machinery/power/apc{ + dir = 1; + name = "north bump"; + pixel_x = 0; + pixel_y = 24 + }, +/obj/machinery/light_switch{ + pixel_x = 11; + pixel_y = 24 + }, +/obj/machinery/button/windowtint{ + id = "st1_tint"; + pixel_x = -11; + pixel_y = 22 + }, +/obj/structure/cable/green{ + d2 = 4; + icon_state = "0-4" + }, +/obj/item/weapon/surgical/bonesetter, +/obj/item/weapon/surgical/bonegel, +/obj/machinery/button/holosign{ + pixel_x = -11; + pixel_y = 30 + }, +/obj/effect/floor_decal/borderfloorwhite/corner{ + dir = 1 + }, +/obj/effect/floor_decal/corner/pink/bordercorner{ + dir = 1 + }, +/turf/simulated/floor/tiled/white, +/area/medical/surgery) +"cZW" = ( +/obj/structure/cable/green{ + d1 = 1; + d2 = 8; + icon_state = "1-8" + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/effect/floor_decal/steeldecal/steel_decals4{ + dir = 9 + }, +/obj/effect/floor_decal/steeldecal/steel_decals4{ + dir = 4 + }, +/turf/simulated/floor/tiled/white, +/area/medical/surgery) +"cZX" = ( +/obj/structure/sink{ + pixel_y = 16 + }, +/obj/machinery/button/remote/blast_door{ + id = "surgeryobs"; + name = "Privacy Shutters"; + pixel_x = 26; + pixel_y = 0 + }, +/obj/effect/floor_decal/borderfloorwhite{ + dir = 4 + }, +/obj/effect/floor_decal/corner/pink/border{ + dir = 4 + }, +/turf/simulated/floor/tiled/white, +/area/medical/surgery) +"cZY" = ( +/turf/simulated/wall, +/area/medical/surgeryobs) +"cZZ" = ( +/obj/machinery/door/firedoor/border_only, +/obj/machinery/holosign/surgery, +/obj/machinery/door/airlock/medical{ + id_tag = "surgery_observation"; + name = "Observation Room"; + req_access = newlist() + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/structure/cable/green{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/turf/simulated/floor/tiled/steel_grid, +/area/medical/surgeryobs) +"daa" = ( +/obj/structure/sink{ + pixel_y = 16 + }, +/obj/machinery/button/remote/blast_door{ + id = "surgeryobs2"; + name = "Privacy Shutters"; + pixel_x = -26; + pixel_y = 0 + }, +/obj/effect/floor_decal/borderfloorwhite{ + dir = 8 + }, +/obj/effect/floor_decal/corner/pink/border{ + dir = 8 + }, +/turf/simulated/floor/tiled/white, +/area/medical/surgery2) +"dab" = ( +/obj/structure/cable/green{ + d1 = 1; + d2 = 4; + icon_state = "1-4" + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/effect/floor_decal/steeldecal/steel_decals4{ + dir = 9 + }, +/obj/effect/floor_decal/steeldecal/steel_decals4{ + dir = 4 + }, +/turf/simulated/floor/tiled/white, +/area/medical/surgery2) +"dac" = ( +/obj/structure/table/standard, +/obj/machinery/power/apc{ + dir = 1; + name = "north bump"; + pixel_x = 0; + pixel_y = 24 + }, +/obj/machinery/light_switch{ + pixel_x = 11; + pixel_y = 24 + }, +/obj/machinery/button/windowtint{ + id = "st2_tint"; + pixel_x = -11; + pixel_y = 22 + }, +/obj/structure/cable/green{ + d2 = 8; + icon_state = "0-8" + }, +/obj/item/weapon/surgical/bonesetter, +/obj/item/weapon/surgical/bonegel, +/obj/machinery/button/holosign{ + pixel_x = -11; + pixel_y = 30 + }, +/obj/effect/floor_decal/borderfloorwhite/corner{ + dir = 4 + }, +/obj/effect/floor_decal/corner/pink/bordercorner{ + dir = 4 + }, +/turf/simulated/floor/tiled/white, +/area/medical/surgery2) +"dad" = ( +/obj/structure/table/standard, +/obj/item/weapon/surgical/hemostat, +/obj/item/weapon/surgical/cautery, +/obj/effect/floor_decal/borderfloorwhite{ + dir = 5 + }, +/obj/effect/floor_decal/corner/pink/border{ + dir = 5 + }, +/turf/simulated/floor/tiled/white, +/area/medical/surgery2) +"dae" = ( +/obj/machinery/status_display, +/turf/simulated/wall, +/area/medical/surgery2) +"daf" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/obj/structure/cable/green{ + d1 = 1; + d2 = 4; + icon_state = "1-4" + }, +/obj/effect/floor_decal/steeldecal/steel_decals4{ + dir = 9 + }, +/obj/effect/floor_decal/steeldecal/steel_decals4{ + dir = 4 + }, +/turf/simulated/floor/tiled/freezer, +/area/medical/surgery_storage) +"dag" = ( +/obj/structure/sink{ + pixel_y = 16 + }, +/obj/structure/cable/green{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/turf/simulated/floor/tiled/freezer, +/area/medical/surgery_storage) +"dah" = ( +/obj/machinery/iv_drip, +/obj/machinery/power/apc{ + dir = 1; + name = "north bump"; + pixel_x = 0; + pixel_y = 24 + }, +/obj/machinery/light_switch{ + pixel_x = 11; + pixel_y = 24 + }, +/obj/structure/cable/green{ + d2 = 8; + icon_state = "0-8" + }, +/turf/simulated/floor/tiled/freezer, +/area/medical/surgery_storage) +"dai" = ( +/obj/machinery/iv_drip, +/obj/machinery/power/apc{ + dir = 8; + name = "west bump"; + pixel_x = -24 + }, +/obj/machinery/light_switch{ + pixel_x = -36; + pixel_y = -6 + }, +/obj/machinery/button/windowtint{ + id = "pr1_window_tint"; + pixel_x = -36; + pixel_y = 6 + }, +/obj/structure/cable/green{ + d2 = 4; + icon_state = "0-4" + }, +/obj/effect/floor_decal/borderfloorwhite{ + dir = 8 + }, +/obj/effect/floor_decal/corner/pink/border{ + dir = 8 + }, +/turf/simulated/floor/tiled/white, +/area/medical/patient_a) +"daj" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/obj/structure/cable/green{ + d1 = 1; + d2 = 8; + icon_state = "1-8" + }, +/obj/effect/floor_decal/steeldecal/steel_decals4{ + dir = 9 + }, +/obj/effect/floor_decal/steeldecal/steel_decals4{ + dir = 4 + }, +/turf/simulated/floor/tiled/white, +/area/medical/patient_a) +"dak" = ( +/obj/machinery/firealarm{ + dir = 4; + pixel_x = 24 + }, +/obj/effect/floor_decal/borderfloorwhite{ + dir = 4 + }, +/obj/effect/floor_decal/corner/pink/border{ + dir = 4 + }, +/turf/simulated/floor/tiled/white, +/area/medical/patient_a) +"dal" = ( +/obj/machinery/iv_drip, +/obj/machinery/firealarm{ + dir = 8; + pixel_x = -24 + }, +/obj/effect/floor_decal/borderfloorwhite{ + dir = 8 + }, +/obj/effect/floor_decal/corner/pink/border{ + dir = 8 + }, +/turf/simulated/floor/tiled/white, +/area/medical/patient_b) +"dam" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/obj/structure/cable/green{ + d1 = 1; + d2 = 4; + icon_state = "1-4" + }, +/obj/effect/floor_decal/steeldecal/steel_decals4{ + dir = 9 + }, +/obj/effect/floor_decal/steeldecal/steel_decals4{ + dir = 4 + }, +/turf/simulated/floor/tiled/white, +/area/medical/patient_b) +"dan" = ( +/obj/machinery/power/apc{ + dir = 4; + name = "east bump"; + pixel_x = 24 + }, +/obj/machinery/light_switch{ + pixel_x = 36; + pixel_y = -6 + }, +/obj/machinery/button/windowtint{ + id = "pr2_window_tint"; + pixel_x = 36; + pixel_y = 6 + }, +/obj/structure/cable/green{ + d2 = 8; + icon_state = "0-8" + }, +/obj/effect/floor_decal/borderfloorwhite{ + dir = 4 + }, +/obj/effect/floor_decal/corner/pink/border{ + dir = 4 + }, +/turf/simulated/floor/tiled/white, +/area/medical/patient_b) +"dao" = ( +/obj/machinery/atmospherics/pipe/manifold/hidden/supply{ + dir = 8 + }, +/obj/structure/disposalpipe/segment{ + dir = 4; + icon_state = "pipe-c" + }, +/turf/simulated/floor/plating, +/area/maintenance/bar) +"dap" = ( +/obj/machinery/atmospherics/pipe/manifold/hidden/supply{ + dir = 1 + }, +/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{ + dir = 8 + }, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/structure/cable{ + d1 = 1; + d2 = 2; + icon_state = "1-2"; + pixel_y = 0 + }, +/turf/simulated/floor/plating, +/area/maintenance/bar) +"daq" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/turf/simulated/floor/plating, +/area/maintenance/bar) +"dar" = ( +/obj/machinery/door/firedoor/border_only, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/machinery/door/airlock/maintenance{ + req_access = null; + req_one_access = list(12,25,27,28,35) + }, +/turf/simulated/floor/plating, +/area/crew_quarters/bar) +"das" = ( +/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers, +/obj/machinery/atmospherics/pipe/manifold/hidden/supply, +/obj/structure/cable/green{ + d1 = 1; + d2 = 4; + icon_state = "1-4" + }, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/structure/cable/green{ + d1 = 2; + d2 = 4; + icon_state = "2-4" + }, +/turf/simulated/floor/wood, +/area/crew_quarters/bar) +"dat" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, +/obj/structure/cable/green{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/turf/simulated/floor/wood, +/area/crew_quarters/bar) +"dau" = ( +/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{ + dir = 1 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/obj/structure/cable/green{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/turf/simulated/floor/wood, +/area/crew_quarters/bar) +"dav" = ( +/obj/machinery/atmospherics/pipe/manifold/hidden/supply, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, +/obj/structure/cable/green{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/obj/structure/disposalpipe/sortjunction/flipped{ + dir = 4; + name = "Bar"; + sortType = "Bar" + }, +/turf/simulated/floor/wood, +/area/crew_quarters/bar) +"daw" = ( +/obj/machinery/atmospherics/pipe/manifold/hidden/supply{ + dir = 1 + }, +/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{ + dir = 1 + }, +/obj/structure/cable/green{ + d1 = 2; + d2 = 8; + icon_state = "2-8" + }, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/turf/simulated/floor/wood, +/area/crew_quarters/bar) +"dax" = ( +/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers, +/obj/machinery/atmospherics/pipe/manifold/hidden/supply, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/turf/simulated/floor/wood, +/area/crew_quarters/bar) +"day" = ( +/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{ + dir = 1 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/turf/simulated/floor/wood, +/area/crew_quarters/bar) +"daz" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/turf/simulated/floor/wood, +/area/crew_quarters/bar) +"daA" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, +/obj/structure/disposalpipe/junction{ + icon_state = "pipe-j1"; + dir = 4 + }, +/turf/simulated/floor/wood, +/area/crew_quarters/bar) +"daB" = ( +/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers, +/obj/machinery/atmospherics/pipe/manifold/hidden/supply{ + dir = 1 + }, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/turf/simulated/floor/wood, +/area/crew_quarters/bar) +"daC" = ( +/obj/machinery/door/firedoor/glass, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/obj/machinery/door/airlock/glass{ + name = "Bar" + }, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/turf/simulated/floor/tiled/steel_grid, +/area/crew_quarters/bar) +"daD" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/obj/structure/disposalpipe/segment{ + dir = 8; + icon_state = "pipe-c" + }, +/obj/effect/floor_decal/steeldecal/steel_decals4{ + dir = 6 + }, +/obj/effect/floor_decal/steeldecal/steel_decals4{ + dir = 1 + }, +/turf/simulated/floor/tiled, +/area/hallway/primary/seconddeck/aft) +"daE" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/turf/simulated/floor/tiled/monotile, +/area/hallway/primary/seconddeck/aft) +"daF" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/obj/effect/floor_decal/steeldecal/steel_decals4, +/obj/effect/floor_decal/steeldecal/steel_decals4{ + dir = 10 + }, +/turf/simulated/floor/tiled, +/area/hallway/primary/seconddeck/aft) +"daG" = ( +/obj/machinery/door/firedoor/glass, +/obj/machinery/door/airlock/glass, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/turf/simulated/floor/tiled/steel_grid, +/area/crew_quarters/cafeteria) +"daH" = ( +/obj/machinery/atmospherics/pipe/manifold/hidden/supply{ + dir = 1 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, +/obj/effect/floor_decal/steeldecal/steel_decals4{ + dir = 6 + }, +/obj/effect/floor_decal/steeldecal/steel_decals4{ + dir = 1 + }, +/turf/simulated/floor/tiled/white, +/area/crew_quarters/cafeteria) +"daI" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/obj/structure/cable/green{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers, +/turf/simulated/floor/tiled/white, +/area/crew_quarters/cafeteria) +"daJ" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, +/turf/simulated/floor/tiled/white, +/area/crew_quarters/cafeteria) +"daK" = ( +/obj/machinery/atmospherics/pipe/manifold/hidden/supply, +/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers, +/turf/simulated/floor/tiled/white, +/area/crew_quarters/cafeteria) +"daL" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, +/obj/structure/disposalpipe/segment, +/turf/simulated/floor/tiled/white, +/area/crew_quarters/cafeteria) +"daM" = ( +/obj/machinery/atmospherics/pipe/manifold/hidden/supply, +/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{ + dir = 1 + }, +/obj/effect/floor_decal/borderfloorwhite{ + dir = 4 + }, +/obj/effect/floor_decal/corner/brown/border{ + dir = 4 + }, +/turf/simulated/floor/tiled/white, +/area/crew_quarters/cafeteria) +"daN" = ( +/obj/structure/table/marble, +/obj/effect/floor_decal/corner/grey/diagonal{ + dir = 4 + }, +/obj/machinery/door/blast/shutters{ + dir = 8; + id = "kitchen"; + layer = 3.3; + name = "Kitchen Shutters" + }, +/obj/item/weapon/reagent_containers/food/condiment/small/saltshaker{ + pixel_x = -3; + pixel_y = 0 + }, +/obj/item/weapon/reagent_containers/food/condiment/small/peppermill{ + pixel_x = 3 + }, +/obj/item/weapon/reagent_containers/food/condiment/small/sugar, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, +/turf/simulated/floor/tiled/white, +/area/crew_quarters/kitchen) +"daO" = ( +/obj/effect/floor_decal/corner/grey/diagonal{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers, +/turf/simulated/floor/tiled/white, +/area/crew_quarters/kitchen) +"daP" = ( +/obj/effect/floor_decal/corner/grey/diagonal{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, +/obj/structure/cable/green{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/turf/simulated/floor/tiled/white, +/area/crew_quarters/kitchen) +"daQ" = ( +/obj/effect/floor_decal/corner/grey/diagonal{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/turf/simulated/floor/tiled/white, +/area/crew_quarters/kitchen) +"daR" = ( +/obj/effect/floor_decal/corner/grey/diagonal{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/obj/machinery/hologram/holopad, +/turf/simulated/floor/tiled/white, +/area/crew_quarters/kitchen) +"daS" = ( +/obj/effect/floor_decal/corner/grey/diagonal{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/manifold4w/hidden/supply, +/turf/simulated/floor/tiled/white, +/area/crew_quarters/kitchen) +"daT" = ( +/obj/machinery/icecream_vat, +/obj/effect/floor_decal/corner/grey/diagonal{ + dir = 4 + }, +/obj/machinery/status_display{ + density = 0; + layer = 4; + pixel_x = 32; + pixel_y = 0 + }, +/obj/machinery/atmospherics/unary/vent_pump/on{ + dir = 8 + }, +/obj/machinery/light{ + dir = 4; + icon_state = "tube1"; + pixel_x = 0 + }, +/turf/simulated/floor/tiled/white, +/area/crew_quarters/kitchen) +"daU" = ( +/turf/simulated/floor/plating, +/area/maintenance/chapel) +"daV" = ( +/obj/machinery/door/firedoor/border_only, +/obj/effect/wingrille_spawn/reinforced, +/turf/simulated/floor/plating, +/area/maintenance/chapel) +"daW" = ( +/obj/effect/floor_decal/industrial/warning{ + icon_state = "warning"; + dir = 1 + }, +/turf/simulated/floor/airless, +/area/maintenance/medbay) +"daX" = ( +/obj/effect/floor_decal/industrial/warning{ + icon_state = "warning"; + dir = 1 + }, +/obj/machinery/access_button{ + command = "cycle_exterior"; + frequency = 1379; + master_tag = "aft_starboard_airlock"; + name = "exterior access button"; + pixel_x = 25; + pixel_y = 26; + req_one_access = list(13) + }, +/turf/simulated/floor/airless, +/area/maintenance/medbay) +"daY" = ( +/obj/machinery/light/small{ + dir = 1 + }, +/obj/effect/floor_decal/industrial/warning/corner{ + icon_state = "warningcorner"; + dir = 1 + }, +/turf/simulated/floor/airless, +/area/maintenance/medbay) +"daZ" = ( +/obj/structure/table/standard, +/obj/item/stack/medical/advanced/bruise_pack, +/obj/item/weapon/surgical/retractor, +/obj/machinery/alarm{ + dir = 4; + pixel_x = -22; + pixel_y = 0 + }, +/obj/effect/floor_decal/borderfloorwhite{ + dir = 8 + }, +/obj/effect/floor_decal/corner/pink/border{ + dir = 8 + }, +/turf/simulated/floor/tiled/white, +/area/medical/surgery) +"dba" = ( +/obj/machinery/atmospherics/unary/vent_pump/on{ + dir = 4 + }, +/turf/simulated/floor/tiled/white, +/area/medical/surgery) +"dbb" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 5 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 9; + pixel_y = 0 + }, +/obj/machinery/hologram/holopad, +/obj/effect/floor_decal/industrial/outline/grey, +/turf/simulated/floor/tiled/white, +/area/medical/surgery) +"dbc" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 10 + }, +/obj/effect/floor_decal/borderfloorwhite{ + dir = 4 + }, +/obj/effect/floor_decal/corner/pink/border{ + dir = 4 + }, +/turf/simulated/floor/tiled/white, +/area/medical/surgery) +"dbd" = ( +/obj/machinery/door/firedoor/border_only, +/obj/machinery/door/blast/shutters{ + density = 0; + dir = 4; + icon_state = "shutter0"; + id = "surgeryobs"; + name = "Operating Theatre Privacy Shutters"; + opacity = 0 + }, +/obj/effect/wingrille_spawn/reinforced, +/turf/simulated/floor/plating, +/area/medical/surgeryobs) +"dbe" = ( +/obj/structure/bed/chair{ + dir = 8 + }, +/obj/machinery/power/apc{ + dir = 1; + name = "north bump"; + pixel_x = 0; + pixel_y = 24 + }, +/obj/machinery/light_switch{ + pixel_x = 11; + pixel_y = 24 + }, +/obj/structure/cable/green{ + d2 = 4; + icon_state = "0-4" + }, +/obj/effect/floor_decal/borderfloor{ + dir = 8 + }, +/obj/effect/floor_decal/corner/paleblue/border{ + dir = 8 + }, +/turf/simulated/floor/tiled, +/area/medical/surgeryobs) +"dbf" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 5 + }, +/obj/structure/cable/green{ + d1 = 1; + d2 = 8; + icon_state = "1-8" + }, +/obj/effect/floor_decal/steeldecal/steel_decals4{ + dir = 9 + }, +/obj/effect/floor_decal/steeldecal/steel_decals4{ + dir = 4 + }, +/turf/simulated/floor/tiled, +/area/medical/surgeryobs) +"dbg" = ( +/obj/structure/bed/chair{ + dir = 4 + }, +/obj/machinery/atmospherics/unary/vent_pump/on{ + dir = 8 + }, +/obj/machinery/firealarm{ + pixel_y = 24 + }, +/obj/machinery/light{ + dir = 4; + icon_state = "tube1"; + pixel_x = 0 + }, +/obj/effect/floor_decal/borderfloor{ + dir = 4 + }, +/obj/effect/floor_decal/corner/paleblue/border{ + dir = 4 + }, +/turf/simulated/floor/tiled, +/area/medical/surgeryobs) +"dbh" = ( +/obj/machinery/door/firedoor/border_only, +/obj/machinery/door/blast/shutters{ + density = 0; + dir = 8; + icon_state = "shutter0"; + id = "surgeryobs2"; + name = "Operating Theatre Privacy Shutters"; + opacity = 0 + }, +/obj/effect/wingrille_spawn/reinforced, +/turf/simulated/floor/plating, +/area/medical/surgeryobs) +"dbi" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 6 + }, +/obj/effect/floor_decal/borderfloorwhite{ + dir = 8 + }, +/obj/effect/floor_decal/corner/pink/border{ + dir = 8 + }, +/turf/simulated/floor/tiled/white, +/area/medical/surgery2) +"dbj" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 9 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 5 + }, +/obj/machinery/hologram/holopad, +/obj/effect/floor_decal/industrial/outline/grey, +/turf/simulated/floor/tiled/white, +/area/medical/surgery2) +"dbk" = ( +/obj/machinery/atmospherics/unary/vent_pump/on{ + dir = 8 + }, +/turf/simulated/floor/tiled/white, +/area/medical/surgery2) +"dbl" = ( +/obj/structure/table/standard, +/obj/item/stack/medical/advanced/bruise_pack, +/obj/item/weapon/surgical/retractor, +/obj/machinery/alarm{ + dir = 8; + icon_state = "alarm0"; + pixel_x = 22 + }, +/obj/effect/floor_decal/borderfloorwhite{ + dir = 4 + }, +/obj/effect/floor_decal/corner/pink/border{ + dir = 4 + }, +/turf/simulated/floor/tiled/white, +/area/medical/surgery2) +"dbm" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 5 + }, +/turf/simulated/floor/tiled/freezer, +/area/medical/surgery_storage) +"dbn" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, +/turf/simulated/floor/tiled/freezer, +/area/medical/surgery_storage) +"dbo" = ( +/obj/machinery/atmospherics/unary/vent_scrubber/on{ + dir = 8 + }, +/turf/simulated/floor/tiled/freezer, +/area/medical/surgery_storage) +"dbp" = ( +/obj/machinery/atmospherics/unary/vent_pump/on{ + dir = 4 + }, +/obj/structure/bed/chair/office/light, +/obj/machinery/alarm{ + dir = 4; + pixel_x = -22; + pixel_y = 0 + }, +/obj/effect/floor_decal/borderfloorwhite{ + dir = 8 + }, +/obj/effect/floor_decal/corner/pink/border{ + dir = 8 + }, +/turf/simulated/floor/tiled/white, +/area/medical/patient_a) +"dbq" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 9; + pixel_y = 0 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 5 + }, +/obj/machinery/hologram/holopad, +/obj/effect/floor_decal/industrial/outline/grey, +/turf/simulated/floor/tiled/white, +/area/medical/patient_a) +"dbr" = ( +/obj/machinery/atmospherics/unary/vent_scrubber/on{ + dir = 8 + }, +/obj/machinery/vending/wallmed1{ + pixel_x = 25 + }, +/obj/effect/floor_decal/borderfloorwhite{ + dir = 4 + }, +/obj/effect/floor_decal/corner/pink/border{ + dir = 4 + }, +/turf/simulated/floor/tiled/white, +/area/medical/patient_a) +"dbs" = ( +/obj/machinery/atmospherics/unary/vent_scrubber/on{ + dir = 4 + }, +/obj/structure/bed/chair/office/light, +/obj/machinery/vending/wallmed1{ + pixel_x = -25 + }, +/obj/effect/floor_decal/borderfloorwhite{ + dir = 8 + }, +/obj/effect/floor_decal/corner/pink/border{ + dir = 8 + }, +/turf/simulated/floor/tiled/white, +/area/medical/patient_b) +"dbt" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 5 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 9 + }, +/obj/machinery/hologram/holopad, +/obj/effect/floor_decal/industrial/outline/grey, +/turf/simulated/floor/tiled/white, +/area/medical/patient_b) +"dbu" = ( +/obj/machinery/atmospherics/unary/vent_pump/on{ + dir = 8 + }, +/obj/machinery/alarm{ + dir = 8; + pixel_x = 22; + pixel_y = 0 + }, +/obj/effect/floor_decal/borderfloorwhite{ + dir = 4 + }, +/obj/effect/floor_decal/corner/pink/border{ + dir = 4 + }, +/turf/simulated/floor/tiled/white, +/area/medical/patient_b) +"dbv" = ( +/obj/structure/disposalpipe/segment{ + dir = 4; + icon_state = "pipe-c" + }, +/turf/simulated/floor/plating, +/area/maintenance/bar) +"dbw" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 5 + }, +/obj/structure/disposalpipe/segment{ + dir = 8; + icon_state = "pipe-c" + }, +/turf/simulated/floor/plating, +/area/maintenance/bar) +"dbx" = ( +/obj/machinery/atmospherics/pipe/simple/visible/universal{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/structure/cable{ + d1 = 1; + d2 = 2; + icon_state = "1-2"; + pixel_y = 0 + }, +/turf/simulated/floor/plating, +/area/maintenance/bar) +"dby" = ( +/obj/machinery/atmospherics/valve{ + dir = 4 + }, +/obj/effect/floor_decal/industrial/warning{ + dir = 9 + }, +/turf/simulated/floor/plating, +/area/maintenance/bar) +"dbz" = ( +/obj/machinery/atmospherics/pipe/manifold/hidden/cyan{ + dir = 1 + }, +/obj/machinery/meter, +/obj/effect/floor_decal/industrial/warning{ + icon_state = "warning"; + dir = 1 + }, +/turf/simulated/floor/plating, +/area/maintenance/bar) +"dbA" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/cyan{ + dir = 10; + icon_state = "intact" + }, +/obj/effect/floor_decal/industrial/warning{ + icon_state = "warning"; + dir = 1 + }, +/obj/machinery/light/small{ + dir = 4; + pixel_y = 0 + }, +/turf/simulated/floor/plating, +/area/maintenance/bar) +"dbB" = ( +/obj/structure/bed/chair/comfy/brown{ + dir = 4 + }, +/obj/machinery/power/apc{ + dir = 8; + name = "west bump"; + pixel_x = -24 + }, +/obj/structure/cable/green, +/turf/simulated/floor/carpet, +/area/crew_quarters/bar) +"dbC" = ( +/turf/simulated/floor/carpet, +/area/crew_quarters/bar) +"dbD" = ( +/obj/structure/bed/chair/comfy/brown{ + dir = 8 + }, +/obj/structure/window/reinforced{ + dir = 4 + }, +/turf/simulated/floor/carpet, +/area/crew_quarters/bar) +"dbE" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/obj/machinery/hologram/holopad, +/turf/simulated/floor/wood, +/area/crew_quarters/bar) +"dbF" = ( +/obj/structure/bed/chair/wood, +/turf/simulated/floor/wood, +/area/crew_quarters/bar) +"dbG" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/turf/simulated/floor/wood, +/area/crew_quarters/bar) +"dbH" = ( +/obj/machinery/hologram/holopad, +/obj/structure/disposalpipe/segment, +/turf/simulated/floor/wood, +/area/crew_quarters/bar) +"dbI" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/turf/simulated/floor/wood, +/area/crew_quarters/bar) +"dbJ" = ( +/obj/machinery/door/firedoor/glass, +/obj/machinery/door/airlock/glass{ + name = "Bar" + }, +/turf/simulated/floor/tiled/steel_grid, +/area/crew_quarters/bar) +"dbK" = ( +/obj/effect/floor_decal/steeldecal/steel_decals4{ + dir = 6 + }, +/obj/effect/floor_decal/steeldecal/steel_decals4{ + dir = 1 + }, +/turf/simulated/floor/tiled, +/area/hallway/primary/seconddeck/aft) +"dbL" = ( +/obj/machinery/door/firedoor/glass, +/obj/machinery/door/airlock/glass, +/turf/simulated/floor/tiled/steel_grid, +/area/crew_quarters/cafeteria) +"dbM" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/effect/floor_decal/steeldecal/steel_decals4{ + dir = 6 + }, +/obj/effect/floor_decal/steeldecal/steel_decals4{ + dir = 1 + }, +/turf/simulated/floor/tiled/white, +/area/crew_quarters/cafeteria) +"dbN" = ( +/obj/structure/table/marble, +/obj/machinery/cash_register/civilian{ + icon_state = "register_idle"; + dir = 1 + }, +/obj/machinery/door/blast/shutters{ + dir = 2; + id = "coffeeshop"; + layer = 3.1; + name = "Cafe Shutters" + }, +/obj/structure/cable/green{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/turf/simulated/floor/tiled/yellow, +/area/crew_quarters/coffee_shop) +"dbO" = ( +/obj/structure/bed/chair/wood, +/obj/effect/floor_decal/corner/yellow/full{ + dir = 1 + }, +/obj/effect/landmark/start{ + name = "Assistant" + }, +/turf/simulated/floor/tiled/white, +/area/crew_quarters/cafeteria) +"dbP" = ( +/obj/structure/bed/chair/wood, +/obj/effect/floor_decal/corner/yellow/full{ + icon_state = "corner_white_full"; + dir = 8 + }, +/turf/simulated/floor/tiled/white, +/area/crew_quarters/cafeteria) +"dbQ" = ( +/obj/item/weapon/stool/padded, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/obj/effect/floor_decal/borderfloorwhite{ + dir = 4 + }, +/obj/effect/floor_decal/corner/brown/border{ + dir = 4 + }, +/turf/simulated/floor/tiled/white, +/area/crew_quarters/cafeteria) +"dbR" = ( +/obj/structure/table/marble, +/obj/effect/floor_decal/corner/grey/diagonal{ + dir = 4 + }, +/obj/machinery/door/blast/shutters{ + dir = 8; + id = "kitchen"; + layer = 3.3; + name = "Kitchen Shutters" + }, +/turf/simulated/floor/tiled/white, +/area/crew_quarters/kitchen) +"dbS" = ( +/obj/structure/table/marble, +/obj/effect/floor_decal/corner/grey/diagonal{ + dir = 4 + }, +/obj/item/weapon/reagent_containers/food/snacks/mint, +/obj/item/weapon/packageWrap, +/obj/item/weapon/reagent_containers/dropper, +/turf/simulated/floor/tiled/white, +/area/crew_quarters/kitchen) +"dbT" = ( +/obj/structure/table/marble, +/obj/effect/floor_decal/corner/grey/diagonal{ + dir = 4 + }, +/obj/item/weapon/reagent_containers/food/condiment/enzyme{ + layer = 5 + }, +/turf/simulated/floor/tiled/white, +/area/crew_quarters/kitchen) +"dbU" = ( +/obj/structure/table/marble, +/obj/effect/floor_decal/corner/grey/diagonal{ + dir = 4 + }, +/obj/item/weapon/material/knife/butch, +/obj/item/weapon/material/kitchen/rollingpin, +/turf/simulated/floor/tiled/white, +/area/crew_quarters/kitchen) +"dbV" = ( +/obj/effect/floor_decal/corner/grey/diagonal{ + dir = 4 + }, +/obj/effect/landmark/start{ + name = "Chef" + }, +/turf/simulated/floor/tiled/white, +/area/crew_quarters/kitchen) +"dbW" = ( +/obj/effect/floor_decal/corner/grey/diagonal{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/turf/simulated/floor/tiled/white, +/area/crew_quarters/kitchen) +"dbX" = ( +/obj/structure/table/marble, +/obj/machinery/reagentgrinder, +/obj/effect/floor_decal/corner/grey/diagonal{ + dir = 4 + }, +/turf/simulated/floor/tiled/white, +/area/crew_quarters/kitchen) +"dbY" = ( +/obj/machinery/power/apc{ + dir = 8; + name = "west bump"; + pixel_x = -24 + }, +/obj/structure/cable{ + icon_state = "0-4"; + d2 = 4 + }, +/obj/machinery/portable_atmospherics/powered/pump/filled, +/obj/structure/catwalk, +/turf/simulated/floor/plating, +/area/maintenance/chapel) +"dbZ" = ( +/obj/structure/cable{ + d1 = 1; + d2 = 2; + icon_state = "1-2"; + pixel_y = 0 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/obj/structure/cable{ + d1 = 1; + d2 = 8; + icon_state = "1-8" + }, +/obj/structure/catwalk, +/turf/simulated/floor/plating, +/area/maintenance/chapel) +"dca" = ( +/obj/structure/table/standard, +/obj/item/weapon/surgical/circular_saw{ + pixel_y = 8 + }, +/obj/item/weapon/surgical/scalpel, +/obj/item/device/radio/intercom/department/medbay{ + dir = 4; + pixel_x = -21 + }, +/obj/effect/floor_decal/borderfloorwhite{ + dir = 8 + }, +/obj/effect/floor_decal/corner/pink/border{ + dir = 8 + }, +/turf/simulated/floor/tiled/white, +/area/medical/surgery) +"dcb" = ( +/turf/simulated/floor/tiled/white, +/area/medical/surgery) +"dcc" = ( +/obj/machinery/optable, +/turf/simulated/floor/tiled/white, +/area/medical/surgery) +"dcd" = ( +/obj/machinery/atmospherics/unary/vent_scrubber/on{ + dir = 1 + }, +/obj/machinery/light{ + dir = 4; + icon_state = "tube1"; + pixel_x = 0 + }, +/obj/effect/floor_decal/borderfloorwhite{ + dir = 4 + }, +/obj/effect/floor_decal/corner/pink/border{ + dir = 4 + }, +/turf/simulated/floor/tiled/white, +/area/medical/surgery) +"dce" = ( +/obj/structure/bed/chair{ + dir = 8 + }, +/obj/effect/floor_decal/borderfloor{ + dir = 8 + }, +/obj/effect/floor_decal/corner/paleblue/border{ + dir = 8 + }, +/turf/simulated/floor/tiled, +/area/medical/surgeryobs) +"dcf" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/obj/machinery/hologram/holopad, +/turf/simulated/floor/tiled, +/area/medical/surgeryobs) +"dcg" = ( +/obj/structure/bed/chair{ + dir = 4 + }, +/obj/effect/floor_decal/borderfloor{ + dir = 4 + }, +/obj/effect/floor_decal/corner/paleblue/border{ + dir = 4 + }, +/turf/simulated/floor/tiled, +/area/medical/surgeryobs) +"dch" = ( +/obj/machinery/atmospherics/unary/vent_scrubber/on{ + dir = 1 + }, +/obj/machinery/light{ + dir = 8 + }, +/obj/effect/floor_decal/borderfloorwhite{ + dir = 8 + }, +/obj/effect/floor_decal/corner/pink/border{ + dir = 8 + }, +/turf/simulated/floor/tiled/white, +/area/medical/surgery2) +"dci" = ( +/obj/machinery/optable, +/turf/simulated/floor/tiled/white, +/area/medical/surgery2) +"dcj" = ( +/turf/simulated/floor/tiled/white, +/area/medical/surgery2) +"dck" = ( +/obj/structure/table/standard, +/obj/item/weapon/surgical/circular_saw{ + pixel_y = 8 + }, +/obj/item/weapon/surgical/scalpel, +/obj/item/device/radio/intercom/department/medbay{ + dir = 8; + pixel_x = 21 + }, +/obj/effect/floor_decal/borderfloorwhite{ + dir = 4 + }, +/obj/effect/floor_decal/corner/pink/border{ + dir = 4 + }, +/turf/simulated/floor/tiled/white, +/area/medical/surgery2) +"dcl" = ( +/obj/structure/closet/crate/medical, +/obj/item/weapon/surgical/surgicaldrill, +/obj/item/weapon/surgical/FixOVein, +/obj/item/weapon/surgical/circular_saw, +/obj/item/weapon/surgical/scalpel, +/obj/item/stack/medical/advanced/bruise_pack, +/obj/item/weapon/surgical/retractor, +/obj/item/weapon/surgical/hemostat, +/obj/item/weapon/surgical/cautery, +/obj/item/weapon/surgical/bonesetter, +/obj/item/weapon/surgical/bonegel, +/obj/item/stack/nanopaste, +/obj/item/weapon/autopsy_scanner, +/obj/item/weapon/reagent_containers/spray/cleaner{ + desc = "Someone has crossed out the Space from Space Cleaner and written in Surgery. 'Do not remove under punishment of death!!!' is scrawled on the back."; + name = "Surgery Cleaner"; + pixel_x = 2; + pixel_y = 2 + }, +/obj/machinery/atmospherics/unary/vent_pump/on{ + dir = 1 + }, +/turf/simulated/floor/tiled/freezer, +/area/medical/surgery_storage) +"dcm" = ( +/obj/structure/closet/crate/freezer, +/obj/machinery/light, +/turf/simulated/floor/tiled/freezer, +/area/medical/surgery_storage) +"dcn" = ( +/obj/structure/closet/secure_closet/medical2, +/turf/simulated/floor/tiled/freezer, +/area/medical/surgery_storage) +"dco" = ( +/obj/structure/table/glass, +/obj/machinery/computer/med_data/laptop, +/obj/machinery/newscaster{ + pixel_x = -30; + pixel_y = 0 + }, +/obj/machinery/camera/network/medbay{ + c_tag = "MED - Patient Room A"; + dir = 4 + }, +/obj/effect/floor_decal/borderfloorwhite{ + dir = 10 + }, +/obj/effect/floor_decal/corner/pink/border{ + dir = 10 + }, +/turf/simulated/floor/tiled/white, +/area/medical/patient_a) +"dcp" = ( +/obj/structure/bed/padded, +/obj/item/weapon/bedsheet/medical, +/obj/effect/floor_decal/borderfloorwhite, +/obj/effect/floor_decal/corner/pink/border, +/turf/simulated/floor/tiled/white, +/area/medical/patient_a) +"dcq" = ( +/obj/structure/closet/secure_closet/personal/patient, +/obj/item/device/radio/intercom{ + dir = 4; + name = "Station Intercom (General)"; + pixel_x = 21 + }, +/obj/machinery/computer/security/telescreen/entertainment{ + icon_state = "frame"; + layer = 4; + pixel_x = 0; + pixel_y = -32 + }, +/obj/machinery/light, +/obj/effect/floor_decal/borderfloorwhite{ + dir = 6 + }, +/obj/effect/floor_decal/corner/pink/border{ + dir = 6 + }, +/turf/simulated/floor/tiled/white, +/area/medical/patient_a) +"dcr" = ( +/obj/structure/table/glass, +/obj/machinery/computer/med_data/laptop, +/obj/item/device/radio/intercom{ + dir = 8; + name = "Station Intercom (General)"; + pixel_x = -21 + }, +/obj/effect/floor_decal/borderfloorwhite{ + dir = 10 + }, +/obj/effect/floor_decal/corner/pink/border{ + dir = 10 + }, +/turf/simulated/floor/tiled/white, +/area/medical/patient_b) +"dcs" = ( +/obj/structure/bed/padded, +/obj/item/weapon/bedsheet/medical, +/obj/effect/floor_decal/borderfloorwhite, +/obj/effect/floor_decal/corner/pink/border, +/turf/simulated/floor/tiled/white, +/area/medical/patient_b) +"dct" = ( +/obj/structure/closet/secure_closet/personal/patient, +/obj/machinery/camera/network/medbay{ + c_tag = "MED - Patient Room B"; + dir = 8 + }, +/obj/machinery/newscaster{ + pixel_x = 30; + pixel_y = 0 + }, +/obj/machinery/computer/security/telescreen/entertainment{ + icon_state = "frame"; + layer = 4; + pixel_x = 0; + pixel_y = -32 + }, +/obj/machinery/light, +/obj/effect/floor_decal/borderfloorwhite{ + dir = 6 + }, +/obj/effect/floor_decal/corner/pink/border{ + dir = 6 + }, +/turf/simulated/floor/tiled/white, +/area/medical/patient_b) +"dcu" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 6 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 6 + }, +/obj/structure/disposalpipe/segment, +/obj/structure/cable{ + d1 = 2; + d2 = 4; + icon_state = "2-4" + }, +/turf/simulated/floor/plating, +/area/maintenance/bar) +"dcv" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/obj/structure/cable{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/turf/simulated/floor/plating, +/area/maintenance/bar) +"dcw" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 9 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 9; + pixel_y = 0 + }, +/obj/structure/cable{ + d1 = 1; + d2 = 8; + icon_state = "1-8" + }, +/obj/structure/closet/crate, +/obj/random/drinkbottle, +/obj/item/weapon/reagent_containers/food/drinks/flask/barflask, +/obj/random/powercell, +/obj/random/maintenance, +/obj/random/maintenance/clean, +/obj/random/maintenance/clean, +/turf/simulated/floor/plating, +/area/maintenance/bar) +"dcx" = ( +/obj/effect/floor_decal/industrial/warning{ + dir = 8 + }, +/obj/machinery/floodlight, +/turf/simulated/floor/plating, +/area/maintenance/bar) +"dcy" = ( +/obj/machinery/atmospherics/pipe/tank/air{ + dir = 1 + }, +/turf/simulated/floor/plating, +/area/maintenance/bar) +"dcz" = ( +/obj/structure/table/woodentable, +/obj/item/weapon/material/ashtray/glass, +/obj/structure/extinguisher_cabinet{ + pixel_x = -28; + pixel_y = 0 + }, +/obj/machinery/atm{ + pixel_y = -30 + }, +/turf/simulated/floor/carpet, +/area/crew_quarters/bar) +"dcA" = ( +/obj/machinery/light, +/turf/simulated/floor/carpet, +/area/crew_quarters/bar) +"dcB" = ( +/obj/structure/bed/chair/wood{ + dir = 4 + }, +/obj/machinery/atmospherics/unary/vent_scrubber/on{ + dir = 1 + }, +/turf/simulated/floor/wood, +/area/crew_quarters/bar) +"dcC" = ( +/obj/structure/table/woodentable, +/obj/item/weapon/flame/candle, +/obj/machinery/computer/security/telescreen/entertainment{ + icon_state = "frame"; + pixel_x = 0; + pixel_y = -32 + }, +/turf/simulated/floor/wood, +/area/crew_quarters/bar) +"dcD" = ( +/obj/structure/bed/chair/wood{ + dir = 8 + }, +/obj/machinery/camera/network/civilian{ + c_tag = "CIV - Bar Aft"; + dir = 1 + }, +/obj/machinery/alarm{ + dir = 1; + icon_state = "alarm0"; + pixel_y = -22 + }, +/turf/simulated/floor/wood, +/area/crew_quarters/bar) +"dcE" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/structure/cable/green{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/turf/simulated/floor/wood, +/area/crew_quarters/bar) +"dcF" = ( +/obj/machinery/light, +/turf/simulated/floor/wood, +/area/crew_quarters/bar) +"dcG" = ( +/obj/structure/bed/chair/wood{ + dir = 4 + }, +/obj/effect/landmark/start{ + name = "Assistant" + }, +/turf/simulated/floor/wood, +/area/crew_quarters/bar) +"dcH" = ( +/obj/structure/table/woodentable, +/obj/structure/disposalpipe/segment, +/obj/item/device/paicard, +/turf/simulated/floor/wood, +/area/crew_quarters/bar) +"dcI" = ( +/obj/structure/bed/chair/wood{ + dir = 8 + }, +/turf/simulated/floor/wood, +/area/crew_quarters/bar) +"dcJ" = ( +/obj/machinery/holosign/bar{ + id = "baropen" + }, +/turf/simulated/wall, +/area/crew_quarters/bar) +"dcK" = ( +/obj/machinery/door/firedoor/border_only, +/obj/effect/floor_decal/borderfloor/corner{ + dir = 8 + }, +/obj/effect/floor_decal/corner/green/bordercorner{ + dir = 8 + }, +/turf/simulated/floor/tiled, +/area/hallway/primary/seconddeck/aft) +"dcL" = ( +/obj/machinery/door/firedoor/glass, +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/turf/simulated/floor/tiled/monotile, +/area/hallway/primary/seconddeck/aft) +"dcM" = ( +/obj/machinery/door/firedoor/border_only, +/obj/effect/floor_decal/borderfloor/corner, +/obj/effect/floor_decal/corner/green/bordercorner, +/turf/simulated/floor/tiled, +/area/hallway/primary/seconddeck/aft) +"dcN" = ( +/obj/machinery/power/apc{ + dir = 8; + name = "west bump"; + pixel_x = -24 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/structure/cable/green{ + d2 = 4; + icon_state = "0-4" + }, +/obj/effect/floor_decal/borderfloorwhite/corner{ + dir = 8 + }, +/obj/effect/floor_decal/corner/brown/bordercorner{ + dir = 8 + }, +/turf/simulated/floor/tiled/white, +/area/crew_quarters/cafeteria) +"dcO" = ( +/obj/structure/table/standard, +/obj/item/weapon/material/kitchen/utensil/fork, +/obj/item/weapon/material/kitchen/utensil/spoon{ + pixel_x = 2 + }, +/obj/effect/floor_decal/corner/yellow{ + dir = 9 + }, +/obj/structure/cable/green{ + d1 = 1; + d2 = 8; + icon_state = "1-8" + }, +/turf/simulated/floor/tiled/white, +/area/crew_quarters/cafeteria) +"dcP" = ( +/obj/structure/table/standard, +/obj/item/weapon/reagent_containers/food/condiment/small/saltshaker{ + pixel_x = -3; + pixel_y = 0 + }, +/obj/item/weapon/reagent_containers/food/condiment/small/peppermill{ + pixel_x = 3 + }, +/obj/item/weapon/reagent_containers/food/condiment/small/sugar, +/obj/effect/floor_decal/corner/yellow{ + dir = 6 + }, +/turf/simulated/floor/tiled/white, +/area/crew_quarters/cafeteria) +"dcQ" = ( +/obj/machinery/hologram/holopad, +/obj/effect/floor_decal/industrial/outline/grey, +/turf/simulated/floor/tiled/white, +/area/crew_quarters/cafeteria) +"dcR" = ( +/obj/structure/table/standard, +/obj/item/weapon/material/kitchen/utensil/fork, +/obj/item/weapon/material/kitchen/utensil/spoon{ + pixel_x = 2 + }, +/obj/effect/floor_decal/corner/yellow{ + dir = 9 + }, +/turf/simulated/floor/tiled/white, +/area/crew_quarters/cafeteria) +"dcS" = ( +/obj/machinery/light, +/obj/effect/floor_decal/borderfloorwhite, +/obj/effect/floor_decal/corner/paleblue/border, +/obj/structure/closet/medical_wall{ + pixel_x = 0; + pixel_y = -31 + }, +/obj/item/roller, +/obj/item/bodybag/cryobag, +/obj/item/weapon/storage/firstaid/regular, +/obj/item/weapon/storage/pill_bottle/spaceacillin, +/turf/simulated/floor/tiled/white, +/area/medical/first_aid_station/seconddeck/fore) +"dcT" = ( +/obj/item/weapon/stool/padded, +/obj/effect/floor_decal/corner/grey/diagonal{ + dir = 4 + }, +/obj/effect/landmark/start{ + name = "Chef" + }, +/turf/simulated/floor/tiled/white, +/area/crew_quarters/kitchen) +"dcU" = ( +/obj/structure/table/marble, +/obj/effect/floor_decal/corner/grey/diagonal{ + dir = 4 + }, +/obj/item/weapon/book/manual/chef_recipes, +/obj/item/weapon/reagent_containers/food/condiment/small/saltshaker{ + pixel_x = -3; + pixel_y = 0 + }, +/obj/item/weapon/reagent_containers/food/condiment/small/peppermill{ + pixel_x = 3 + }, +/turf/simulated/floor/tiled/white, +/area/crew_quarters/kitchen) +"dcV" = ( +/obj/structure/table/marble, +/obj/machinery/chemical_dispenser/bar_soft/full, +/obj/effect/floor_decal/corner/grey/diagonal{ + dir = 4 + }, +/turf/simulated/floor/tiled/white, +/area/crew_quarters/kitchen) +"dcW" = ( +/obj/structure/table/marble, +/obj/effect/floor_decal/corner/grey/diagonal{ + dir = 4 + }, +/obj/item/weapon/storage/box/donkpockets{ + pixel_x = 3; + pixel_y = 3 + }, +/obj/item/weapon/reagent_containers/glass/beaker{ + pixel_x = 5 + }, +/turf/simulated/floor/tiled/white, +/area/crew_quarters/kitchen) +"dcX" = ( +/obj/machinery/vending/dinnerware, +/obj/effect/floor_decal/corner/grey/diagonal{ + dir = 4 + }, +/obj/machinery/camera/network/civilian{ + c_tag = "CIV - Kitchen Starboard"; + dir = 8 + }, +/turf/simulated/floor/tiled/white, +/area/crew_quarters/kitchen) +"dcY" = ( +/obj/machinery/portable_atmospherics/powered/scrubber, +/turf/simulated/floor/plating, +/area/maintenance/chapel) +"dcZ" = ( +/obj/structure/cable{ + d1 = 1; + d2 = 2; + icon_state = "1-2"; + pixel_y = 0 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/turf/simulated/floor/plating, +/area/maintenance/chapel) +"dda" = ( +/obj/structure/table/standard, +/obj/item/weapon/surgical/surgicaldrill, +/obj/item/weapon/autopsy_scanner, +/obj/item/weapon/reagent_containers/spray/cleaner{ + desc = "Someone has crossed out the Space from Space Cleaner and written in Surgery. 'Do not remove under punishment of death!!!' is scrawled on the back."; + name = "Surgery Cleaner"; + pixel_x = 2; + pixel_y = 2 + }, +/obj/item/weapon/surgical/FixOVein, +/obj/item/device/radio/intercom{ + dir = 8; + name = "Station Intercom (General)"; + pixel_x = -21 + }, +/obj/effect/floor_decal/borderfloorwhite{ + dir = 10 + }, +/obj/effect/floor_decal/corner/pink/border{ + dir = 10 + }, +/turf/simulated/floor/tiled/white, +/area/medical/surgery) +"ddb" = ( +/obj/effect/floor_decal/borderfloorwhite/corner{ + dir = 8 + }, +/obj/effect/floor_decal/corner/pink/bordercorner{ + dir = 8 + }, +/turf/simulated/floor/tiled/white, +/area/medical/surgery) +"ddc" = ( +/obj/machinery/computer/operating, +/turf/simulated/floor/tiled/white, +/area/medical/surgery) +"ddd" = ( +/obj/effect/floor_decal/borderfloorwhite{ + dir = 4 + }, +/obj/effect/floor_decal/corner/pink/border{ + dir = 4 + }, +/turf/simulated/floor/tiled/white, +/area/medical/surgery) +"dde" = ( +/obj/structure/bed/chair{ + dir = 8 + }, +/obj/machinery/atmospherics/unary/vent_scrubber/on{ + dir = 4 + }, +/obj/machinery/light{ + dir = 8 + }, +/obj/effect/floor_decal/borderfloor{ + dir = 8 + }, +/obj/effect/floor_decal/corner/paleblue/border{ + dir = 8 + }, +/turf/simulated/floor/tiled, +/area/medical/surgeryobs) +"ddf" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 9 + }, +/turf/simulated/floor/tiled, +/area/medical/surgeryobs) +"ddg" = ( +/obj/effect/floor_decal/borderfloorwhite{ + dir = 8 + }, +/obj/effect/floor_decal/corner/pink/border{ + dir = 8 + }, +/turf/simulated/floor/tiled/white, +/area/medical/surgery2) +"ddh" = ( +/obj/machinery/computer/operating, +/turf/simulated/floor/tiled/white, +/area/medical/surgery2) +"ddi" = ( +/obj/effect/floor_decal/borderfloorwhite/corner, +/obj/effect/floor_decal/corner/pink/bordercorner, +/turf/simulated/floor/tiled/white, +/area/medical/surgery2) +"ddj" = ( +/obj/structure/table/standard, +/obj/item/weapon/surgical/surgicaldrill, +/obj/item/weapon/autopsy_scanner, +/obj/item/weapon/reagent_containers/spray/cleaner{ + desc = "Someone has crossed out the Space from Space Cleaner and written in Surgery. 'Do not remove under punishment of death!!!' is scrawled on the back."; + name = "Surgery Cleaner"; + pixel_x = 2; + pixel_y = 2 + }, +/obj/item/weapon/surgical/FixOVein, +/obj/item/device/radio/intercom{ + dir = 4; + name = "Station Intercom (General)"; + pixel_x = 21 + }, +/obj/effect/floor_decal/borderfloorwhite{ + dir = 6 + }, +/obj/effect/floor_decal/corner/pink/border{ + dir = 6 + }, +/turf/simulated/floor/tiled/white, +/area/medical/surgery2) +"ddk" = ( +/turf/simulated/wall/r_wall, +/area/medical/surgery_storage) +"ddl" = ( +/obj/machinery/door/firedoor, +/obj/effect/wingrille_spawn/reinforced, +/turf/simulated/floor/plating, +/area/medical/patient_a) +"ddm" = ( +/obj/machinery/door/firedoor/glass, +/obj/effect/wingrille_spawn/reinforced, +/turf/simulated/floor/plating, +/area/medical/patient_a) +"ddn" = ( +/turf/simulated/wall/r_wall, +/area/medical/patient_a) +"ddo" = ( +/obj/machinery/door/firedoor, +/obj/effect/wingrille_spawn/reinforced, +/turf/simulated/floor/plating, +/area/medical/patient_b) +"ddp" = ( +/obj/machinery/door/firedoor/glass, +/obj/effect/wingrille_spawn/reinforced, +/turf/simulated/floor/plating, +/area/medical/patient_b) +"ddq" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/obj/structure/disposalpipe/segment, +/obj/structure/cable{ + d1 = 1; + d2 = 2; + icon_state = "1-2"; + pixel_y = 0 + }, +/obj/machinery/door/firedoor/border_only, +/obj/machinery/door/airlock/maintenance{ + req_access = null; + req_one_access = list(12,25,27,28,35) + }, +/turf/simulated/floor/plating, +/area/maintenance/bar) +"ddr" = ( +/turf/simulated/wall, +/area/holodeck_control) +"dds" = ( +/obj/machinery/status_display, +/turf/simulated/wall, +/area/holodeck_control) +"ddt" = ( +/obj/machinery/door/firedoor/glass, +/obj/machinery/door/airlock/glass{ + name = "Bar" + }, +/turf/simulated/floor/tiled/steel_grid, +/area/holodeck_control) +"ddu" = ( +/obj/machinery/door/firedoor/glass, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/structure/cable/green{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/obj/machinery/door/airlock/glass{ + name = "Bar" + }, +/turf/simulated/floor/tiled/steel_grid, +/area/holodeck_control) +"ddv" = ( +/obj/machinery/atmospherics/unary/vent_scrubber/on{ + dir = 1 + }, +/obj/item/device/radio/intercom{ + dir = 8; + name = "Station Intercom (General)"; + pixel_x = -21 + }, +/turf/simulated/floor/wood, +/area/crew_quarters/bar) +"ddw" = ( +/obj/structure/table/woodentable, +/obj/item/weapon/deck/cards, +/obj/structure/disposalpipe/segment, +/turf/simulated/floor/wood, +/area/crew_quarters/bar) +"ddx" = ( +/obj/machinery/atmospherics/unary/vent_pump/on{ + dir = 1 + }, +/turf/simulated/floor/wood, +/area/crew_quarters/bar) +"ddy" = ( +/obj/effect/floor_decal/borderfloor{ + dir = 8 + }, +/obj/effect/floor_decal/corner/green/border{ + dir = 8 + }, +/turf/simulated/floor/tiled, +/area/hallway/primary/seconddeck/aft) +"ddz" = ( +/obj/effect/floor_decal/borderfloor{ + dir = 4 + }, +/obj/effect/floor_decal/corner/green/border{ + dir = 4 + }, +/turf/simulated/floor/tiled, +/area/hallway/primary/seconddeck/aft) +"ddA" = ( +/obj/machinery/door/firedoor/border_only, +/obj/effect/wingrille_spawn/reinforced, +/turf/simulated/floor/plating, +/area/crew_quarters/cafeteria) +"ddB" = ( +/obj/machinery/atmospherics/unary/vent_pump/on{ + dir = 1 + }, +/obj/effect/floor_decal/borderfloorwhite{ + dir = 8 + }, +/obj/effect/floor_decal/corner/brown/border{ + dir = 8 + }, +/turf/simulated/floor/tiled/white, +/area/crew_quarters/cafeteria) +"ddC" = ( +/obj/structure/bed/chair/wood{ + dir = 1 + }, +/obj/effect/floor_decal/corner/yellow/full, +/obj/effect/landmark/start{ + name = "Assistant" + }, +/turf/simulated/floor/tiled/white, +/area/crew_quarters/cafeteria) +"ddD" = ( +/obj/structure/bed/chair/wood, +/obj/effect/floor_decal/corner/yellow/full{ + icon_state = "corner_white_full"; + dir = 8 + }, +/obj/structure/cable/green{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/turf/simulated/floor/tiled/white, +/area/crew_quarters/cafeteria) +"ddE" = ( +/obj/item/weapon/stool/padded, +/obj/machinery/atmospherics/unary/vent_scrubber/on{ + dir = 1 + }, +/obj/effect/floor_decal/borderfloorwhite{ + dir = 4 + }, +/obj/effect/floor_decal/corner/brown/border{ + dir = 4 + }, +/turf/simulated/floor/tiled/white, +/area/crew_quarters/cafeteria) +"ddF" = ( +/obj/effect/floor_decal/corner/grey/diagonal{ + dir = 4 + }, +/obj/machinery/atmospherics/unary/vent_pump/on{ + dir = 4 + }, +/turf/simulated/floor/tiled/white, +/area/crew_quarters/kitchen) +"ddG" = ( +/obj/effect/floor_decal/corner/grey/diagonal{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/obj/structure/cable/green{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/turf/simulated/floor/tiled/white, +/area/crew_quarters/kitchen) +"ddH" = ( +/obj/effect/floor_decal/corner/grey/diagonal{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/turf/simulated/floor/tiled/white, +/area/crew_quarters/kitchen) +"ddI" = ( +/obj/effect/floor_decal/corner/grey/diagonal{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/obj/machinery/hologram/holopad, +/turf/simulated/floor/tiled/white, +/area/crew_quarters/kitchen) +"ddJ" = ( +/obj/effect/floor_decal/corner/grey/diagonal{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 5 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 9; + pixel_y = 0 + }, +/turf/simulated/floor/tiled/white, +/area/crew_quarters/kitchen) +"ddK" = ( +/obj/structure/closet/secure_closet/freezer/meat, +/obj/effect/floor_decal/corner/grey/diagonal{ + dir = 4 + }, +/obj/machinery/alarm{ + dir = 8; + pixel_x = 22; + pixel_y = 0 + }, +/obj/machinery/atmospherics/unary/vent_scrubber/on{ + dir = 8 + }, +/turf/simulated/floor/tiled/white, +/area/crew_quarters/kitchen) +"ddL" = ( +/obj/machinery/space_heater, +/obj/effect/floor_decal/industrial/warning/corner, +/turf/simulated/floor/plating, +/area/maintenance/chapel) +"ddM" = ( +/obj/structure/cable{ + d1 = 1; + d2 = 2; + icon_state = "1-2"; + pixel_y = 0 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/obj/effect/floor_decal/industrial/warning, +/turf/simulated/floor/plating, +/area/maintenance/chapel) +"ddN" = ( +/obj/machinery/camera/network/medbay{ + c_tag = "MED - Operating Theatre 1"; + dir = 1 + }, +/obj/machinery/vending/wallmed1{ + pixel_y = -30 + }, +/obj/effect/floor_decal/borderfloorwhite{ + dir = 10 + }, +/obj/effect/floor_decal/corner/pink/border{ + dir = 10 + }, +/obj/structure/closet/secure_closet/medical_wall/anesthetics{ + pixel_x = -32 + }, +/turf/simulated/floor/tiled/white, +/area/medical/surgery) +"ddO" = ( +/obj/machinery/ai_status_display{ + pixel_y = -32 + }, +/obj/effect/floor_decal/borderfloorwhite, +/obj/effect/floor_decal/corner/pink/border, +/turf/simulated/floor/tiled/white, +/area/medical/surgery) +"ddP" = ( +/obj/machinery/firealarm{ + dir = 1; + pixel_x = 0; + pixel_y = -26 + }, +/obj/effect/floor_decal/borderfloorwhite{ + dir = 6 + }, +/obj/effect/floor_decal/corner/pink/border{ + dir = 6 + }, +/obj/machinery/iv_drip, +/turf/simulated/floor/tiled/white, +/area/medical/surgery) +"ddQ" = ( +/turf/simulated/wall/r_wall, +/area/medical/surgeryobs) +"ddR" = ( +/obj/structure/table/standard, +/obj/item/weapon/storage/box/cups{ + pixel_x = 0; + pixel_y = 0 + }, +/obj/item/device/radio/intercom{ + dir = 8; + name = "Station Intercom (General)"; + pixel_x = -21 + }, +/obj/structure/extinguisher_cabinet{ + pixel_y = -30 + }, +/obj/effect/floor_decal/borderfloor{ + dir = 10 + }, +/obj/effect/floor_decal/corner/paleblue/border{ + dir = 10 + }, +/turf/simulated/floor/tiled, +/area/medical/surgeryobs) +"ddS" = ( +/obj/machinery/alarm{ + dir = 1; + icon_state = "alarm0"; + pixel_y = -22 + }, +/obj/machinery/camera/network/medbay{ + c_tag = "MED - Surgery Observation"; + dir = 1 + }, +/obj/effect/floor_decal/borderfloor, +/obj/effect/floor_decal/corner/paleblue/border, +/turf/simulated/floor/tiled, +/area/medical/surgeryobs) +"ddT" = ( +/obj/structure/reagent_dispensers/water_cooler/full, +/obj/item/device/radio/intercom/department/medbay{ + dir = 8; + pixel_x = 21 + }, +/obj/machinery/newscaster{ + pixel_y = -30 + }, +/obj/effect/floor_decal/borderfloor{ + dir = 6 + }, +/obj/effect/floor_decal/corner/paleblue/border{ + dir = 6 + }, +/turf/simulated/floor/tiled, +/area/medical/surgeryobs) +"ddU" = ( +/obj/machinery/firealarm{ + dir = 1; + pixel_x = 0; + pixel_y = -26 + }, +/obj/effect/floor_decal/borderfloorwhite{ + dir = 10 + }, +/obj/effect/floor_decal/corner/pink/border{ + dir = 10 + }, +/obj/machinery/iv_drip, +/turf/simulated/floor/tiled/white, +/area/medical/surgery2) +"ddV" = ( +/obj/machinery/ai_status_display{ + pixel_y = -32 + }, +/obj/effect/floor_decal/borderfloorwhite, +/obj/effect/floor_decal/corner/pink/border, +/turf/simulated/floor/tiled/white, +/area/medical/surgery2) +"ddW" = ( +/obj/machinery/camera/network/medbay{ + c_tag = "MED - Operating Theatre 2"; + dir = 1 + }, +/obj/machinery/vending/wallmed1{ + pixel_y = -30 + }, +/obj/effect/floor_decal/borderfloorwhite{ + dir = 6 + }, +/obj/effect/floor_decal/corner/pink/border{ + dir = 6 + }, +/obj/structure/closet/secure_closet/medical_wall/anesthetics{ + pixel_x = 32 + }, +/turf/simulated/floor/tiled/white, +/area/medical/surgery2) +"ddX" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/obj/structure/disposalpipe/segment, +/obj/structure/cable{ + d1 = 1; + d2 = 2; + icon_state = "1-2"; + pixel_y = 0 + }, +/turf/simulated/floor/plating, +/area/maintenance/bar) +"ddY" = ( +/obj/machinery/door/firedoor/border_only, +/obj/effect/wingrille_spawn/reinforced, +/turf/simulated/floor/plating, +/area/holodeck_control) +"ddZ" = ( +/turf/simulated/floor/reinforced{ + name = "Holodeck Projector Floor" + }, +/area/holodeck/alphadeck) +"dea" = ( +/obj/effect/floor_decal/steeldecal/steel_decals4{ + dir = 9 + }, +/obj/effect/floor_decal/steeldecal/steel_decals4{ + dir = 4 + }, +/turf/simulated/floor/tiled, +/area/holodeck_control) +"deb" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/structure/cable/green{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/obj/effect/floor_decal/steeldecal/steel_decals4{ + dir = 9 + }, +/obj/effect/floor_decal/steeldecal/steel_decals4{ + dir = 4 + }, +/turf/simulated/floor/tiled, +/area/holodeck_control) +"dec" = ( +/obj/machinery/firealarm{ + dir = 8; + pixel_x = -24 + }, +/turf/simulated/floor/wood, +/area/crew_quarters/bar) +"ded" = ( +/obj/structure/disposalpipe/segment, +/turf/simulated/floor/wood, +/area/crew_quarters/bar) +"dee" = ( +/obj/machinery/light{ + dir = 4 + }, +/obj/effect/floor_decal/borderfloor{ + dir = 4 + }, +/obj/effect/floor_decal/corner/green/border{ + dir = 4 + }, +/turf/simulated/floor/tiled, +/area/hallway/primary/seconddeck/aft) +"def" = ( +/obj/effect/floor_decal/borderfloorwhite{ + dir = 8 + }, +/obj/effect/floor_decal/corner/brown/border{ + dir = 8 + }, +/turf/simulated/floor/tiled/white, +/area/crew_quarters/cafeteria) +"deg" = ( +/obj/effect/floor_decal/borderfloorwhite{ + dir = 4 + }, +/obj/effect/floor_decal/corner/brown/border{ + dir = 4 + }, +/turf/simulated/floor/tiled/white, +/area/crew_quarters/cafeteria) +"deh" = ( +/obj/structure/closet/secure_closet/freezer/fridge, +/obj/effect/floor_decal/corner/grey/diagonal{ + dir = 4 + }, +/obj/machinery/ai_status_display{ + pixel_x = 32; + pixel_y = 0 + }, +/obj/machinery/light{ + dir = 4; + icon_state = "tube1"; + pixel_x = 0 + }, +/turf/simulated/floor/tiled/white, +/area/crew_quarters/kitchen) +"dei" = ( +/obj/effect/wingrille_spawn/reinforced, +/turf/simulated/floor/plating, +/area/maintenance/chapel) +"dej" = ( +/obj/structure/cable{ + d1 = 1; + d2 = 2; + icon_state = "1-2"; + pixel_y = 0 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/obj/machinery/door/firedoor/border_only, +/turf/simulated/floor/plating, +/area/maintenance/chapel) +"dek" = ( +/obj/machinery/door/firedoor/glass, +/obj/effect/wingrille_spawn/reinforced, +/turf/simulated/floor/plating, +/area/holodeck_control) +"del" = ( +/obj/item/weapon/stool/padded, +/obj/machinery/light{ + dir = 8 + }, +/turf/simulated/floor/tiled, +/area/holodeck_control) +"dem" = ( +/obj/machinery/firealarm{ + dir = 4; + pixel_x = 24 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/structure/cable/green{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/turf/simulated/floor/tiled, +/area/holodeck_control) +"den" = ( +/obj/machinery/vending/cigarette, +/turf/simulated/floor/wood, +/area/crew_quarters/bar) +"deo" = ( +/obj/machinery/vending/snack, +/turf/simulated/floor/wood, +/area/crew_quarters/bar) +"dep" = ( +/obj/machinery/disposal, +/obj/structure/disposalpipe/trunk{ + dir = 1 + }, +/turf/simulated/floor/wood, +/area/crew_quarters/bar) +"deq" = ( +/obj/item/weapon/stool/padded, +/obj/machinery/light, +/turf/simulated/floor/wood, +/area/crew_quarters/bar) +"der" = ( +/obj/machinery/computer/arcade, +/turf/simulated/floor/wood, +/area/crew_quarters/bar) +"des" = ( +/obj/machinery/atmospherics/unary/vent_pump/on{ + dir = 4 + }, +/obj/effect/floor_decal/borderfloor{ + dir = 8 + }, +/obj/effect/floor_decal/corner/green/border{ + dir = 8 + }, +/turf/simulated/floor/tiled, +/area/hallway/primary/seconddeck/aft) +"det" = ( +/obj/machinery/firealarm{ + dir = 4; + pixel_x = 24 + }, +/obj/effect/floor_decal/borderfloor{ + dir = 4 + }, +/obj/effect/floor_decal/corner/green/border{ + dir = 4 + }, +/turf/simulated/floor/tiled, +/area/hallway/primary/seconddeck/aft) +"deu" = ( +/obj/machinery/vending/cola, +/obj/machinery/firealarm{ + dir = 8; + pixel_x = -24 + }, +/obj/machinery/status_display{ + pixel_x = 0; + pixel_y = -32 + }, +/obj/effect/floor_decal/borderfloorwhite{ + dir = 10 + }, +/obj/effect/floor_decal/corner/brown/border{ + dir = 10 + }, +/turf/simulated/floor/tiled/white, +/area/crew_quarters/cafeteria) +"dev" = ( +/obj/machinery/vending/coffee, +/obj/effect/floor_decal/borderfloorwhite, +/obj/effect/floor_decal/corner/brown/border, +/turf/simulated/floor/tiled/white, +/area/crew_quarters/cafeteria) +"dew" = ( +/obj/machinery/vending/snack, +/obj/effect/floor_decal/borderfloorwhite, +/obj/effect/floor_decal/corner/brown/border, +/turf/simulated/floor/tiled/white, +/area/crew_quarters/cafeteria) +"dex" = ( +/obj/machinery/vending/cigarette, +/obj/effect/floor_decal/borderfloorwhite, +/obj/effect/floor_decal/corner/brown/border, +/turf/simulated/floor/tiled/white, +/area/crew_quarters/cafeteria) +"dey" = ( +/obj/machinery/computer/arcade, +/obj/machinery/camera/network/civilian{ + c_tag = "CIV - Cafeteria Aft"; + dir = 1 + }, +/obj/effect/floor_decal/borderfloorwhite/corner{ + dir = 8 + }, +/obj/effect/floor_decal/corner/brown/bordercorner{ + dir = 8 + }, +/turf/simulated/floor/tiled/white, +/area/crew_quarters/cafeteria) +"dez" = ( +/obj/effect/floor_decal/steeldecal/steel_decals4{ + dir = 8 + }, +/obj/effect/floor_decal/steeldecal/steel_decals4{ + dir = 5 + }, +/turf/simulated/floor/tiled/white, +/area/crew_quarters/cafeteria) +"deA" = ( +/obj/structure/disposalpipe/sortjunction/flipped{ + dir = 2; + name = "Kitchen"; + sortType = "Kitchen" + }, +/obj/structure/flora/pottedplant/small{ + pixel_y = 10 + }, +/obj/structure/table/standard, +/obj/machinery/light, +/obj/effect/floor_decal/borderfloorwhite/corner, +/obj/effect/floor_decal/corner/brown/bordercorner, +/turf/simulated/floor/tiled/white, +/area/crew_quarters/cafeteria) +"deB" = ( +/obj/machinery/computer/guestpass{ + pixel_x = 30; + pixel_y = 0 + }, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/item/weapon/stool/padded, +/obj/effect/floor_decal/borderfloorwhite{ + dir = 6 + }, +/obj/effect/floor_decal/corner/brown/border{ + dir = 6 + }, +/turf/simulated/floor/tiled/white, +/area/crew_quarters/cafeteria) +"deC" = ( +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/turf/simulated/wall, +/area/crew_quarters/kitchen) +"deD" = ( +/obj/effect/floor_decal/corner/grey/diagonal{ + dir = 4 + }, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/turf/simulated/floor/tiled/white, +/area/crew_quarters/kitchen) +"deE" = ( +/obj/effect/floor_decal/corner/grey/diagonal{ + dir = 4 + }, +/obj/structure/cable/green{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/effect/floor_decal/steeldecal/steel_decals4{ + dir = 8 + }, +/obj/effect/floor_decal/steeldecal/steel_decals4{ + dir = 5 + }, +/turf/simulated/floor/tiled/white, +/area/crew_quarters/kitchen) +"deF" = ( +/obj/machinery/disposal, +/obj/effect/floor_decal/corner/grey/diagonal{ + dir = 4 + }, +/obj/structure/disposalpipe/trunk{ + dir = 8 + }, +/turf/simulated/floor/tiled/white, +/area/crew_quarters/kitchen) +"deG" = ( +/obj/structure/table/marble, +/obj/machinery/microwave{ + pixel_x = -3; + pixel_y = 6 + }, +/obj/effect/floor_decal/corner/grey/diagonal{ + dir = 4 + }, +/obj/machinery/light, +/turf/simulated/floor/tiled/white, +/area/crew_quarters/kitchen) +"deH" = ( +/obj/structure/table/marble, +/obj/machinery/microwave{ + pixel_x = -3; + pixel_y = 6 + }, +/obj/effect/floor_decal/corner/grey/diagonal{ + dir = 4 + }, +/turf/simulated/floor/tiled/white, +/area/crew_quarters/kitchen) +"deI" = ( +/obj/machinery/cooker/cereal, +/obj/effect/floor_decal/corner/grey/diagonal{ + dir = 4 + }, +/turf/simulated/floor/tiled/white, +/area/crew_quarters/kitchen) +"deJ" = ( +/obj/machinery/cooker/candy, +/obj/effect/floor_decal/corner/grey/diagonal{ + dir = 4 + }, +/turf/simulated/floor/tiled/white, +/area/crew_quarters/kitchen) +"deK" = ( +/obj/structure/table/standard{ + name = "plastic table frame" + }, +/obj/item/weapon/tool/crowbar, +/obj/random/maintenance/clean, +/obj/random/maintenance/clean, +/obj/random/maintenance, +/obj/random/maintenance, +/obj/effect/floor_decal/industrial/warning/corner{ + dir = 4 + }, +/turf/simulated/floor/plating, +/area/maintenance/chapel) +"deL" = ( +/obj/structure/cable{ + d1 = 1; + d2 = 2; + icon_state = "1-2"; + pixel_y = 0 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/obj/effect/floor_decal/industrial/warning{ + icon_state = "warning"; + dir = 1 + }, +/turf/simulated/floor/plating, +/area/maintenance/chapel) +"deM" = ( +/obj/machinery/door/firedoor/border_only, +/obj/machinery/light{ + dir = 8 + }, +/obj/effect/wingrille_spawn/reinforced, +/turf/simulated/floor/plating, +/area/holodeck_control) +"deN" = ( +/obj/item/weapon/stool/padded, +/obj/machinery/atmospherics/unary/vent_pump/on{ + dir = 4 + }, +/turf/simulated/floor/tiled, +/area/holodeck_control) +"deO" = ( +/obj/machinery/atmospherics/pipe/manifold/hidden/supply{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/obj/structure/cable/green{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/turf/simulated/floor/tiled, +/area/holodeck_control) +"deP" = ( +/obj/machinery/status_display, +/turf/simulated/wall, +/area/crew_quarters/bar) +"deQ" = ( +/obj/machinery/alarm{ + dir = 4; + icon_state = "alarm0"; + pixel_x = -22 + }, +/obj/effect/floor_decal/borderfloor/corner{ + dir = 1 + }, +/obj/effect/floor_decal/corner/green/bordercorner{ + dir = 1 + }, +/turf/simulated/floor/tiled, +/area/hallway/primary/seconddeck/aft) +"deR" = ( +/obj/machinery/camera/network/second_deck{ + c_tag = "Second Deck - Aft Hallway Three"; + dir = 8 + }, +/obj/effect/floor_decal/borderfloor/corner{ + dir = 4 + }, +/obj/effect/floor_decal/corner/green/bordercorner{ + dir = 4 + }, +/turf/simulated/floor/tiled, +/area/hallway/primary/seconddeck/aft) +"deS" = ( +/obj/structure/sign/directions/cryo, +/turf/simulated/wall, +/area/hydroponics) +"deT" = ( +/turf/simulated/wall, +/area/hydroponics) +"deU" = ( +/obj/machinery/door/firedoor/border_only, +/obj/effect/wingrille_spawn/reinforced, +/turf/simulated/floor/plating, +/area/hydroponics) +"deV" = ( +/obj/machinery/door/airlock/glass{ + name = "Hydroponics"; + req_access = newlist(); + req_one_access = list(35,28) + }, +/turf/simulated/floor/tiled/steel_grid, +/area/hydroponics) +"deW" = ( +/obj/structure/disposalpipe/segment, +/turf/simulated/wall, +/area/hydroponics) +"deX" = ( +/obj/structure/table/marble, +/obj/machinery/door/window/southright{ + name = "Hydroponics"; + req_access = newlist(); + req_one_access = list(35,28) + }, +/turf/simulated/floor/tiled/hydro, +/area/hydroponics) +"deY" = ( +/obj/machinery/smartfridge, +/turf/simulated/wall/r_wall, +/area/hydroponics) +"deZ" = ( +/obj/machinery/door/firedoor/glass, +/obj/machinery/door/airlock/glass{ + name = "Hydroponics"; + req_access = list(28) + }, +/obj/structure/cable/green{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/turf/simulated/floor/tiled/steel_grid, +/area/hydroponics) +"dfa" = ( +/obj/structure/closet/crate/hydroponics, +/obj/random/maintenance, +/obj/random/maintenance, +/obj/random/maintenance, +/obj/random/maintenance, +/turf/simulated/floor/plating, +/area/maintenance/chapel) +"dfb" = ( +/obj/machinery/door/firedoor/glass, +/obj/machinery/door/airlock/glass{ + name = "Holodeck" + }, +/turf/simulated/floor/tiled/steel_grid, +/area/holodeck_control) +"dfc" = ( +/obj/effect/floor_decal/steeldecal/steel_decals4{ + dir = 1 + }, +/obj/effect/floor_decal/steeldecal/steel_decals4{ + dir = 6 + }, +/turf/simulated/floor/tiled, +/area/holodeck_control) +"dfd" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/structure/cable/green{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/turf/simulated/floor/tiled, +/area/holodeck_control) +"dfe" = ( +/obj/machinery/power/apc{ + dir = 1; + name = "north bump"; + pixel_x = 0; + pixel_y = 24 + }, +/obj/machinery/light_switch{ + pixel_x = 11; + pixel_y = 24 + }, +/obj/structure/cable/green{ + d2 = 2; + icon_state = "0-2" + }, +/turf/simulated/floor/tiled, +/area/holodeck_control) +"dff" = ( +/obj/machinery/light{ + dir = 1 + }, +/obj/effect/floor_decal/industrial/warning{ + icon_state = "warning"; + dir = 4 + }, +/obj/structure/window/reinforced{ + dir = 4 + }, +/obj/structure/closet/emcloset, +/obj/effect/floor_decal/borderfloor/corner{ + dir = 1 + }, +/obj/effect/floor_decal/corner/green/bordercorner{ + dir = 1 + }, +/turf/simulated/floor/tiled, +/area/hallway/primary/seconddeck/aft) +"dfg" = ( +/obj/structure/railing, +/turf/simulated/open, +/area/hallway/primary/seconddeck/aft) +"dfh" = ( +/obj/machinery/alarm{ + dir = 8; + pixel_x = 22; + pixel_y = 0 + }, +/obj/structure/extinguisher_cabinet{ + pixel_y = 30 + }, +/obj/effect/floor_decal/industrial/warning{ + icon_state = "warning"; + dir = 8 + }, +/obj/effect/floor_decal/borderfloor/corner{ + dir = 4 + }, +/obj/effect/floor_decal/corner/green/bordercorner{ + dir = 4 + }, +/turf/simulated/floor/tiled, +/area/hallway/primary/seconddeck/aft) +"dfi" = ( +/turf/simulated/wall, +/area/hallway/primary/seconddeck/aft) +"dfj" = ( +/obj/item/device/radio/intercom{ + dir = 8; + name = "Station Intercom (General)"; + pixel_x = -21 + }, +/turf/simulated/floor/tiled, +/area/hallway/primary/seconddeck/aft) +"dfk" = ( +/turf/simulated/floor/tiled, +/area/hallway/primary/seconddeck/aft) +"dfl" = ( +/obj/structure/reagent_dispensers/watertank/high, +/obj/item/weapon/reagent_containers/glass/bucket, +/obj/machinery/firealarm{ + pixel_y = 24 + }, +/obj/effect/floor_decal/borderfloor{ + dir = 1 + }, +/obj/effect/floor_decal/corner/lime/border{ + dir = 1 + }, +/turf/simulated/floor/tiled/hydro, +/area/hydroponics) +"dfm" = ( +/obj/effect/floor_decal/borderfloor{ + dir = 1 + }, +/obj/effect/floor_decal/corner/lime/border{ + dir = 1 + }, +/turf/simulated/floor/tiled/hydro, +/area/hydroponics) +"dfn" = ( +/obj/machinery/portable_atmospherics/hydroponics, +/obj/machinery/light{ + dir = 1 + }, +/obj/effect/floor_decal/borderfloor{ + dir = 1 + }, +/obj/effect/floor_decal/corner/lime/border{ + dir = 1 + }, +/turf/simulated/floor/tiled/hydro, +/area/hydroponics) +"dfo" = ( +/obj/machinery/portable_atmospherics/hydroponics, +/obj/machinery/camera/network/civilian{ + c_tag = "CIV - Hydroponics Port"; + dir = 2 + }, +/obj/effect/floor_decal/borderfloor/corner{ + dir = 1 + }, +/obj/effect/floor_decal/corner/lime/bordercorner{ + dir = 1 + }, +/turf/simulated/floor/tiled/hydro, +/area/hydroponics) +"dfp" = ( +/obj/effect/floor_decal/steeldecal/steel_decals4{ + dir = 9 + }, +/obj/effect/floor_decal/steeldecal/steel_decals4{ + dir = 4 + }, +/turf/simulated/floor/tiled/hydro, +/area/hydroponics) +"dfq" = ( +/obj/structure/disposalpipe/segment, +/obj/structure/extinguisher_cabinet{ + pixel_y = 30 + }, +/obj/effect/floor_decal/borderfloor/corner{ + dir = 4 + }, +/obj/effect/floor_decal/corner/lime/bordercorner{ + dir = 4 + }, +/turf/simulated/floor/tiled/hydro, +/area/hydroponics) +"dfr" = ( +/obj/machinery/firealarm{ + dir = 4; + pixel_x = 24 + }, +/obj/effect/floor_decal/borderfloorwhite{ + dir = 6 + }, +/obj/effect/floor_decal/corner/paleblue/border{ + dir = 6 + }, +/obj/structure/closet/secure_closet/medical_wall{ + name = "defibrillator closet"; + pixel_y = -31 + }, +/obj/item/device/defib_kit/loaded, +/turf/simulated/floor/tiled/white, +/area/medical/first_aid_station/seconddeck/fore) +"dfs" = ( +/obj/structure/sink/kitchen{ + pixel_y = 28 + }, +/obj/effect/floor_decal/borderfloor{ + dir = 1 + }, +/obj/effect/floor_decal/corner/lime/border{ + dir = 1 + }, +/turf/simulated/floor/tiled/hydro, +/area/hydroponics) +"dft" = ( +/obj/effect/floor_decal/borderfloor/corner{ + dir = 1 + }, +/obj/effect/floor_decal/corner/lime/bordercorner{ + dir = 1 + }, +/turf/simulated/floor/tiled/hydro, +/area/hydroponics) +"dfu" = ( +/obj/structure/cable/green{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/obj/effect/floor_decal/steeldecal/steel_decals4{ + dir = 9 + }, +/obj/effect/floor_decal/steeldecal/steel_decals4{ + dir = 4 + }, +/turf/simulated/floor/tiled/hydro, +/area/hydroponics) +"dfv" = ( +/obj/machinery/biogenerator, +/obj/effect/floor_decal/borderfloor/corner{ + dir = 4 + }, +/obj/effect/floor_decal/corner/lime/bordercorner{ + dir = 4 + }, +/turf/simulated/floor/tiled/hydro, +/area/hydroponics) +"dfw" = ( +/obj/machinery/honey_extractor, +/obj/effect/floor_decal/borderfloor{ + dir = 1 + }, +/obj/effect/floor_decal/corner/lime/border{ + dir = 1 + }, +/turf/simulated/floor/tiled/hydro, +/area/hydroponics) +"dfx" = ( +/obj/machinery/portable_atmospherics/hydroponics, +/obj/effect/floor_decal/borderfloor{ + dir = 1 + }, +/obj/effect/floor_decal/corner/lime/border{ + dir = 1 + }, +/turf/simulated/floor/tiled/hydro, +/area/hydroponics) +"dfy" = ( +/obj/machinery/portable_atmospherics/hydroponics, +/obj/machinery/camera/network/civilian{ + c_tag = "CIV - Hydroponics Starboard"; + dir = 2 + }, +/obj/machinery/light{ + dir = 1 + }, +/obj/effect/floor_decal/borderfloor{ + dir = 1 + }, +/obj/effect/floor_decal/corner/lime/border{ + dir = 1 + }, +/turf/simulated/floor/tiled/hydro, +/area/hydroponics) +"dfz" = ( +/obj/machinery/smartfridge/drying_rack, +/obj/effect/floor_decal/borderfloor{ + dir = 1 + }, +/obj/effect/floor_decal/corner/lime/border{ + dir = 1 + }, +/turf/simulated/floor/tiled/hydro, +/area/hydroponics) +"dfA" = ( +/obj/effect/floor_decal/industrial/hatch/yellow, +/obj/structure/window/reinforced{ + dir = 8 + }, +/obj/machinery/door/window/southright{ + name = "Hydroponics Delivery"; + req_access = list(35) + }, +/turf/simulated/floor/tiled, +/area/hydroponics) +"dfB" = ( +/obj/structure/bed/chair/wood{ + dir = 1 + }, +/obj/effect/floor_decal/corner/yellow/full{ + icon_state = "corner_white_full"; + dir = 4 + }, +/turf/simulated/floor/tiled/white, +/area/crew_quarters/cafeteria) +"dfC" = ( +/obj/machinery/door/firedoor/border_only, +/obj/machinery/camera/network/civilian{ + c_tag = "CIV - Holodeck Starboard"; + dir = 8 + }, +/obj/effect/wingrille_spawn/reinforced, +/turf/simulated/floor/plating, +/area/holodeck_control) +"dfD" = ( +/obj/machinery/computer/HolodeckControl, +/turf/simulated/floor/tiled, +/area/holodeck_control) +"dfE" = ( +/obj/item/weapon/stool/padded, +/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{ + dir = 8 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/structure/cable/green{ + d1 = 1; + d2 = 4; + icon_state = "1-4" + }, +/turf/simulated/floor/tiled, +/area/holodeck_control) +"dfF" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, +/obj/structure/cable/green{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/obj/structure/cable/green{ + d1 = 1; + d2 = 4; + icon_state = "1-4" + }, +/obj/effect/floor_decal/steeldecal/steel_decals4, +/obj/effect/floor_decal/steeldecal/steel_decals4{ + dir = 10 + }, +/turf/simulated/floor/tiled, +/area/holodeck_control) +"dfG" = ( +/obj/machinery/door/firedoor/glass, +/obj/machinery/door/airlock/glass{ + name = "Holodeck Control" + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, +/obj/structure/cable/green{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/turf/simulated/floor/tiled/steel_grid, +/area/holodeck_control) +"dfH" = ( +/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{ + dir = 1 + }, +/obj/structure/cable/green{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/obj/effect/floor_decal/industrial/warning/corner{ + icon_state = "warningcorner"; + dir = 4 + }, +/obj/effect/floor_decal/steeldecal/steel_decals4{ + dir = 1 + }, +/obj/effect/floor_decal/steeldecal/steel_decals4{ + dir = 6 + }, +/turf/simulated/floor/tiled, +/area/hallway/primary/seconddeck/aft) +"dfI" = ( +/obj/structure/cable/green{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/obj/machinery/atmospherics/unary/vent_scrubber/on{ + dir = 8 + }, +/obj/effect/floor_decal/industrial/warning{ + icon_state = "warning"; + dir = 1 + }, +/turf/simulated/floor/tiled, +/area/hallway/primary/seconddeck/aft) +"dfJ" = ( +/obj/structure/cable/green{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/obj/effect/floor_decal/industrial/warning{ + icon_state = "warning"; + dir = 1 + }, +/turf/simulated/floor/tiled, +/area/hallway/primary/seconddeck/aft) +"dfK" = ( +/obj/structure/cable/green{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/obj/effect/floor_decal/industrial/warning/corner{ + icon_state = "warningcorner"; + dir = 1 + }, +/obj/effect/floor_decal/steeldecal/steel_decals4, +/obj/effect/floor_decal/steeldecal/steel_decals4{ + dir = 10 + }, +/turf/simulated/floor/tiled, +/area/hallway/primary/seconddeck/aft) +"dfL" = ( +/obj/machinery/door/firedoor/glass, +/obj/structure/cable/green{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/obj/machinery/door/airlock/glass{ + name = "Central Access" + }, +/turf/simulated/floor/tiled/steel_grid, +/area/hallway/primary/seconddeck/aft) +"dfM" = ( +/obj/structure/cable/green{ + d1 = 2; + d2 = 8; + icon_state = "2-8" + }, +/obj/effect/floor_decal/steeldecal/steel_decals4{ + dir = 6 + }, +/obj/effect/floor_decal/steeldecal/steel_decals4{ + dir = 1 + }, +/turf/simulated/floor/tiled, +/area/hallway/primary/seconddeck/aft) +"dfN" = ( +/obj/machinery/atmospherics/unary/vent_scrubber/on{ + dir = 8 + }, +/turf/simulated/floor/tiled, +/area/hallway/primary/seconddeck/aft) +"dfO" = ( +/obj/machinery/door/firedoor/glass, +/obj/machinery/door/airlock/glass{ + name = "Hydroponics"; + req_access = newlist(); + req_one_access = list(35,28) + }, +/turf/simulated/floor/tiled/steel_grid, +/area/hydroponics) +"dfP" = ( +/obj/effect/floor_decal/steeldecal/steel_decals4{ + dir = 6 + }, +/obj/effect/floor_decal/steeldecal/steel_decals4{ + dir = 1 + }, +/turf/simulated/floor/tiled/hydro, +/area/hydroponics) +"dfQ" = ( +/turf/simulated/floor/tiled/hydro, +/area/hydroponics) +"dfR" = ( +/obj/machinery/atmospherics/unary/vent_pump/on, +/turf/simulated/floor/tiled/hydro, +/area/hydroponics) +"dfS" = ( +/obj/machinery/hologram/holopad, +/obj/effect/floor_decal/industrial/outline/grey, +/turf/simulated/floor/tiled/hydro, +/area/hydroponics) +"dfT" = ( +/obj/structure/disposalpipe/segment, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 6 + }, +/turf/simulated/floor/tiled/hydro, +/area/hydroponics) +"dfU" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, +/turf/simulated/floor/tiled/hydro, +/area/hydroponics) +"dfV" = ( +/obj/structure/cable/green{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, +/turf/simulated/floor/tiled/hydro, +/area/hydroponics) +"dfW" = ( +/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{ + dir = 1 + }, +/turf/simulated/floor/tiled/hydro, +/area/hydroponics) +"dfX" = ( +/obj/machinery/atmospherics/unary/vent_pump/on, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, +/turf/simulated/floor/tiled/hydro, +/area/hydroponics) +"dfY" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 10 + }, +/turf/simulated/floor/tiled/hydro, +/area/hydroponics) +"dfZ" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/turf/simulated/floor/tiled/white, +/area/rnd/research/firstdeck/hallway) +"dga" = ( +/obj/machinery/door/firedoor/border_only, +/obj/machinery/camera/network/civilian{ + c_tag = "CIV - Holodeck Port"; + dir = 4 + }, +/obj/effect/wingrille_spawn/reinforced, +/turf/simulated/floor/plating, +/area/holodeck_control) +"dgb" = ( +/obj/structure/table/standard, +/obj/item/weapon/soap/nanotrasen, +/obj/item/weapon/paper{ + desc = ""; + info = "Brusies sustained in the holodeck can be healed simply by sleeping."; + name = "Holodeck Disclaimer" + }, +/obj/machinery/camera/network/civilian{ + c_tag = "CIV - Holodeck Control"; + dir = 4 + }, +/turf/simulated/floor/tiled, +/area/holodeck_control) +"dgc" = ( +/obj/machinery/hologram/holopad, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 5 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/obj/effect/floor_decal/industrial/outline/grey, +/turf/simulated/floor/tiled, +/area/holodeck_control) +"dgd" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/obj/effect/floor_decal/steeldecal/steel_decals4, +/obj/effect/floor_decal/steeldecal/steel_decals4{ + dir = 10 + }, +/turf/simulated/floor/tiled, +/area/holodeck_control) +"dge" = ( +/obj/machinery/door/firedoor/glass, +/obj/machinery/door/airlock/glass{ + name = "Holodeck Control" + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/turf/simulated/floor/tiled/steel_grid, +/area/holodeck_control) +"dgf" = ( +/obj/machinery/atmospherics/pipe/manifold/hidden/supply{ + dir = 1 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/obj/effect/floor_decal/steeldecal/steel_decals4{ + dir = 1 + }, +/obj/effect/floor_decal/steeldecal/steel_decals4{ + dir = 6 + }, +/turf/simulated/floor/tiled, +/area/hallway/primary/seconddeck/aft) +"dgg" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/turf/simulated/floor/tiled, +/area/hallway/primary/seconddeck/aft) +"dgh" = ( +/obj/machinery/atmospherics/unary/vent_pump/on{ + dir = 8 + }, +/turf/simulated/floor/tiled, +/area/hallway/primary/seconddeck/aft) +"dgi" = ( +/obj/structure/cable/green{ + d1 = 1; + d2 = 4; + icon_state = "1-4" + }, +/obj/effect/floor_decal/steeldecal/steel_decals4{ + dir = 6 + }, +/obj/effect/floor_decal/steeldecal/steel_decals4{ + dir = 1 + }, +/turf/simulated/floor/tiled, +/area/hallway/primary/seconddeck/aft) +"dgj" = ( +/obj/structure/cable/green{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/obj/machinery/navbeacon/patrol{ + location = "CIV"; + next_patrol = "CH7" + }, +/turf/simulated/floor/tiled/monotile, +/area/hallway/primary/seconddeck/aft) +"dgk" = ( +/obj/structure/cable/green{ + d1 = 2; + d2 = 8; + icon_state = "2-8" + }, +/obj/structure/cable/green{ + d1 = 2; + d2 = 4; + icon_state = "2-4" + }, +/turf/simulated/floor/tiled, +/area/hallway/primary/seconddeck/aft) +"dgl" = ( +/obj/structure/cable/green{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/obj/effect/floor_decal/steeldecal/steel_decals4, +/obj/effect/floor_decal/steeldecal/steel_decals4{ + dir = 10 + }, +/turf/simulated/floor/tiled, +/area/hallway/primary/seconddeck/aft) +"dgm" = ( +/obj/machinery/door/firedoor/glass, +/obj/structure/cable/green{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/obj/machinery/door/airlock/glass{ + name = "Hydroponics"; + req_access = newlist(); + req_one_access = list(35,28) + }, +/turf/simulated/floor/tiled/steel_grid, +/area/hydroponics) +"dgn" = ( +/obj/structure/cable/green{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/obj/effect/floor_decal/steeldecal/steel_decals4{ + dir = 6 + }, +/obj/effect/floor_decal/steeldecal/steel_decals4{ + dir = 1 + }, +/turf/simulated/floor/tiled/hydro, +/area/hydroponics) +"dgo" = ( +/obj/structure/cable/green{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/turf/simulated/floor/tiled/hydro, +/area/hydroponics) +"dgp" = ( +/obj/machinery/door/blast/regular{ + id = "mixvent"; + name = "Mixer Room Vent" + }, +/obj/machinery/shield_diffuser, +/turf/simulated/floor/reinforced/airless, +/area/rnd/mixing) +"dgq" = ( +/obj/structure/cable/green{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/turf/simulated/floor/tiled/hydro, +/area/hydroponics) +"dgr" = ( +/obj/structure/cable/green{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/obj/structure/disposalpipe/segment, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/obj/machinery/atmospherics/unary/vent_scrubber/on{ + dir = 1 + }, +/turf/simulated/floor/tiled/hydro, +/area/hydroponics) +"dgs" = ( +/obj/structure/cable/green{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/obj/structure/cable/green{ + d1 = 2; + d2 = 4; + icon_state = "2-4" + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/turf/simulated/floor/tiled/hydro, +/area/hydroponics) +"dgt" = ( +/obj/structure/cable/green{ + d1 = 1; + d2 = 8; + icon_state = "1-8" + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/turf/simulated/floor/tiled/hydro, +/area/hydroponics) +"dgu" = ( +/obj/machinery/atmospherics/unary/vent_scrubber/on{ + dir = 1 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/turf/simulated/floor/tiled/hydro, +/area/hydroponics) +"dgv" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/turf/simulated/floor/tiled/hydro, +/area/hydroponics) +"dgw" = ( +/obj/machinery/hologram/holopad, +/obj/effect/floor_decal/industrial/outline/grey, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/turf/simulated/floor/tiled/hydro, +/area/hydroponics) +"dgx" = ( +/obj/machinery/atmospherics/pipe/manifold/hidden/supply, +/turf/simulated/floor/tiled/hydro, +/area/hydroponics) +"dgy" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 5 + }, +/obj/effect/floor_decal/steeldecal/steel_decals4, +/obj/effect/floor_decal/steeldecal/steel_decals4{ + dir = 10 + }, +/turf/simulated/floor/tiled/hydro, +/area/hydroponics) +"dgz" = ( +/obj/machinery/door/firedoor/border_only, +/obj/machinery/door/airlock/maintenance{ + name = "Hydroponics Maintenance"; + req_access = list(35) + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/turf/simulated/floor/plating, +/area/hydroponics) +"dgA" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/turf/simulated/floor/plating, +/area/maintenance/chapel) +"dgB" = ( +/obj/structure/cable{ + d1 = 1; + d2 = 2; + icon_state = "1-2"; + pixel_y = 0 + }, +/obj/machinery/atmospherics/pipe/manifold/hidden/supply{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{ + dir = 4 + }, +/turf/simulated/floor/plating, +/area/maintenance/chapel) +"dgC" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/turf/simulated/floor/tiled, +/area/holodeck_control) +"dgD" = ( +/obj/machinery/alarm{ + dir = 1; + pixel_y = -22 + }, +/turf/simulated/floor/tiled, +/area/holodeck_control) +"dgE" = ( +/obj/machinery/door/airlock/glass_external{ + frequency = 1380; + icon_state = "door_locked"; + id_tag = "escape_pod_5_berth_hatch"; + locked = 1; + name = "Escape Pod 5"; + req_access = list(13) + }, +/turf/simulated/floor, +/area/hallway/secondary/escape/firstdeck/ep_aftstarboard) +"dgF" = ( +/obj/machinery/firealarm{ + dir = 1; + pixel_x = 0; + pixel_y = -24 + }, +/obj/structure/table/bench/padded, +/obj/effect/floor_decal/borderfloor, +/obj/effect/floor_decal/corner/green/border, +/turf/simulated/floor/tiled, +/area/hallway/primary/seconddeck/aft) +"dgG" = ( +/obj/structure/closet/wardrobe/science_white, +/obj/machinery/atmospherics/unary/vent_pump/on, +/obj/machinery/firealarm{ + dir = 4; + pixel_x = 24 + }, +/obj/effect/floor_decal/borderfloorwhite/corner{ + dir = 4 + }, +/obj/effect/floor_decal/corner/purple/bordercorner{ + dir = 4 + }, +/obj/item/weapon/storage/box/gloves, +/turf/simulated/floor/tiled/white, +/area/rnd/research_lockerroom) +"dgH" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/obj/effect/floor_decal/borderfloor, +/obj/effect/floor_decal/corner/green/border, +/obj/machinery/vending/fitness, +/turf/simulated/floor/tiled, +/area/hallway/primary/seconddeck/aft) +"dgI" = ( +/obj/machinery/light{ + icon_state = "tube1"; + dir = 8 + }, +/obj/effect/floor_decal/steeldecal/steel_decals4{ + dir = 8 + }, +/obj/effect/floor_decal/steeldecal/steel_decals4{ + dir = 5 + }, +/turf/simulated/floor/tiled, +/area/hallway/primary/seconddeck/aft) +"dgJ" = ( +/obj/structure/cable/green{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/obj/effect/floor_decal/steeldecal/steel_decals4{ + dir = 8 + }, +/obj/effect/floor_decal/steeldecal/steel_decals4{ + dir = 5 + }, +/turf/simulated/floor/tiled, +/area/hallway/primary/seconddeck/aft) +"dgK" = ( +/obj/structure/reagent_dispensers/watertank/high, +/obj/item/weapon/reagent_containers/glass/bucket, +/obj/effect/floor_decal/borderfloor, +/obj/effect/floor_decal/corner/lime/border, +/turf/simulated/floor/tiled/hydro, +/area/hydroponics) +"dgL" = ( +/obj/structure/table/standard{ + name = "plastic table frame" + }, +/obj/item/weapon/reagent_containers/glass/bucket, +/obj/item/weapon/reagent_containers/glass/bucket, +/obj/machinery/newscaster{ + pixel_y = -30 + }, +/obj/effect/floor_decal/borderfloor, +/obj/effect/floor_decal/corner/lime/border, +/turf/simulated/floor/tiled/hydro, +/area/hydroponics) +"dgM" = ( +/obj/machinery/computer/security/telescreen/entertainment{ + icon_state = "frame"; + pixel_x = 0; + pixel_y = -32 + }, +/obj/machinery/seed_extractor, +/obj/effect/floor_decal/borderfloor, +/obj/effect/floor_decal/corner/lime/border, +/turf/simulated/floor/tiled/hydro, +/area/hydroponics) +"dgN" = ( +/obj/machinery/portable_atmospherics/hydroponics, +/obj/item/device/radio/intercom{ + name = "Station Intercom (General)"; + pixel_y = -21 + }, +/obj/effect/floor_decal/borderfloor, +/obj/effect/floor_decal/corner/lime/border, +/turf/simulated/floor/tiled/hydro, +/area/hydroponics) +"dgO" = ( +/obj/machinery/portable_atmospherics/hydroponics, +/obj/machinery/light, +/obj/effect/floor_decal/borderfloor, +/obj/effect/floor_decal/corner/lime/border, +/turf/simulated/floor/tiled/hydro, +/area/hydroponics) +"dgP" = ( +/obj/machinery/portable_atmospherics/hydroponics, +/obj/structure/disposalpipe/sortjunction/flipped{ + dir = 2; + name = "Hydroponics"; + sortType = "Hydroponics" + }, +/obj/effect/floor_decal/borderfloor, +/obj/effect/floor_decal/corner/lime/border, +/turf/simulated/floor/tiled/hydro, +/area/hydroponics) +"dgQ" = ( +/obj/machinery/disposal, +/obj/structure/disposalpipe/trunk{ + dir = 8 + }, +/obj/effect/floor_decal/borderfloor, +/obj/effect/floor_decal/corner/lime/border, +/turf/simulated/floor/tiled/hydro, +/area/hydroponics) +"dgR" = ( +/obj/machinery/power/apc{ + dir = 2; + name = "south bump"; + pixel_y = -24 + }, +/obj/machinery/light_switch{ + pixel_x = 11; + pixel_y = -24 + }, +/obj/structure/cable/green, +/obj/structure/table/standard{ + name = "plastic table frame" + }, +/obj/item/weapon/material/knife/machete/hatchet, +/obj/item/weapon/material/minihoe, +/obj/item/weapon/material/knife/machete/hatchet, +/obj/item/weapon/material/knife/machete/hatchet, +/obj/item/weapon/material/minihoe, +/obj/item/weapon/material/minihoe, +/obj/effect/floor_decal/borderfloor, +/obj/effect/floor_decal/corner/lime/border, +/turf/simulated/floor/tiled/hydro, +/area/hydroponics) +"dgS" = ( +/obj/machinery/seed_storage/garden, +/obj/effect/floor_decal/borderfloor, +/obj/effect/floor_decal/corner/lime/border, +/turf/simulated/floor/tiled/hydro, +/area/hydroponics) +"dgT" = ( +/obj/machinery/vending/hydronutrients, +/obj/effect/floor_decal/borderfloor, +/obj/effect/floor_decal/corner/lime/border, +/turf/simulated/floor/tiled/hydro, +/area/hydroponics) +"dgU" = ( +/obj/machinery/portable_atmospherics/hydroponics, +/obj/machinery/alarm{ + dir = 1; + pixel_y = -22 + }, +/obj/effect/floor_decal/borderfloor, +/obj/effect/floor_decal/corner/lime/border, +/turf/simulated/floor/tiled/hydro, +/area/hydroponics) +"dgV" = ( +/obj/structure/closet/secure_closet/hydroponics, +/obj/effect/floor_decal/borderfloor, +/obj/effect/floor_decal/corner/lime/border, +/turf/simulated/floor/tiled/hydro, +/area/hydroponics) +"dgW" = ( +/obj/structure/closet/crate/hydroponics{ + desc = "All you need to start your own honey farm."; + name = "beekeeping crate" + }, +/obj/item/beehive_assembly, +/obj/item/bee_smoker, +/obj/item/honey_frame, +/obj/item/honey_frame, +/obj/item/honey_frame, +/obj/item/honey_frame, +/obj/item/honey_frame, +/obj/item/bee_pack, +/obj/item/weapon/tool/crowbar, +/obj/effect/floor_decal/borderfloor, +/obj/effect/floor_decal/corner/lime/border, +/turf/simulated/floor/tiled/hydro, +/area/hydroponics) +"dgX" = ( +/obj/structure/table/rack, +/obj/item/weapon/flame/lighter/random, +/obj/item/weapon/storage/fancy/cigarettes/dromedaryco, +/obj/random/maintenance/clean, +/turf/simulated/floor/plating, +/area/maintenance/chapel) +"dgY" = ( +/obj/item/weapon/stool/padded, +/obj/machinery/atmospherics/unary/vent_scrubber/on{ + dir = 4 + }, +/turf/simulated/floor/tiled, +/area/holodeck_control) +"dgZ" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 9 + }, +/turf/simulated/floor/tiled, +/area/holodeck_control) +"dha" = ( +/turf/simulated/wall, +/area/medical/first_aid_station/seconddeck/aft) +"dhb" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/turf/simulated/wall, +/area/medical/first_aid_station/seconddeck/aft) +"dhc" = ( +/obj/machinery/door/firedoor/border_only, +/obj/machinery/door/airlock/glass{ + name = "Central Access" + }, +/turf/simulated/floor/tiled/steel_grid, +/area/hallway/primary/seconddeck/aft) +"dhd" = ( +/obj/machinery/door/firedoor/glass, +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/obj/effect/wingrille_spawn/reinforced, +/turf/simulated/floor/plating, +/area/hallway/primary/seconddeck/aft) +"dhe" = ( +/obj/machinery/door/firedoor/border_only, +/obj/machinery/door/airlock/glass{ + name = "Central Access" + }, +/obj/structure/cable/green{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/turf/simulated/floor/tiled/steel_grid, +/area/hallway/primary/seconddeck/aft) +"dhf" = ( +/obj/machinery/status_display, +/turf/simulated/wall, +/area/hydroponics) +"dhg" = ( +/obj/machinery/ai_status_display, +/obj/structure/disposalpipe/segment, +/turf/simulated/wall, +/area/hydroponics) +"dhh" = ( +/turf/simulated/wall, +/area/maintenance/chapel) +"dhi" = ( +/obj/structure/cable{ + d1 = 1; + d2 = 2; + icon_state = "1-2"; + pixel_y = 0 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/obj/machinery/alarm{ + dir = 8; + pixel_x = 22; + pixel_y = 0 + }, +/turf/simulated/floor/plating, +/area/maintenance/chapel) +"dhj" = ( +/turf/space, +/area/shuttle/response_ship/seconddeck) +"dhk" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/obj/structure/disposalpipe/segment, +/obj/structure/cable{ + d1 = 1; + d2 = 2; + icon_state = "1-2"; + pixel_y = 0 + }, +/obj/structure/catwalk, +/turf/simulated/floor/plating, +/area/maintenance/bar) +"dhl" = ( +/obj/item/device/radio/intercom{ + dir = 4; + name = "Station Intercom (General)"; + pixel_x = 21 + }, +/turf/simulated/floor/tiled, +/area/holodeck_control) +"dhm" = ( +/turf/simulated/wall/r_wall, +/area/holodeck_control) +"dhn" = ( +/obj/structure/cable{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, +/turf/simulated/floor/tiled, +/area/hallway/primary/seconddeck/port) +"dho" = ( +/obj/structure/table/glass, +/obj/machinery/recharger, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 5 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/obj/structure/extinguisher_cabinet{ + pixel_y = 30 + }, +/obj/effect/floor_decal/borderfloorwhite{ + dir = 1 + }, +/obj/effect/floor_decal/corner/paleblue/border{ + dir = 1 + }, +/turf/simulated/floor/tiled/white, +/area/medical/first_aid_station/seconddeck/aft) +"dhp" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{ + dir = 1 + }, +/obj/structure/cable{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/turf/simulated/floor/tiled, +/area/hallway/primary/seconddeck/port) +"dhq" = ( +/obj/machinery/atmospherics/pipe/manifold/hidden/supply{ + dir = 1 + }, +/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{ + dir = 1 + }, +/obj/structure/cable{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/obj/structure/cable{ + d1 = 2; + d2 = 4; + icon_state = "2-4" + }, +/turf/simulated/floor/tiled, +/area/hallway/primary/seconddeck/port) +"dhr" = ( +/obj/machinery/door/firedoor/border_only, +/obj/effect/wingrille_spawn/reinforced, +/turf/simulated/floor/plating, +/area/medical/first_aid_station/seconddeck/aft) +"dhs" = ( +/obj/effect/floor_decal/borderfloor/corner, +/obj/effect/floor_decal/corner/brown/bordercorner, +/obj/item/device/radio/intercom{ + name = "Station Intercom (General)"; + pixel_y = -21 + }, +/turf/simulated/floor/tiled, +/area/hallway/primary/seconddeck/port) +"dht" = ( +/obj/structure/cable/green{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/obj/effect/floor_decal/steeldecal/steel_decals4{ + dir = 9 + }, +/obj/effect/floor_decal/steeldecal/steel_decals4{ + dir = 4 + }, +/turf/simulated/floor/tiled, +/area/hallway/primary/seconddeck/aft) +"dhu" = ( +/obj/machinery/door/firedoor/border_only, +/obj/effect/wingrille_spawn/reinforced, +/turf/simulated/floor/plating, +/area/chapel/main) +"dhv" = ( +/obj/structure/table/woodentable, +/obj/structure/flora/pottedplant/stoutbush{ + pixel_y = 8 + }, +/turf/simulated/floor/tiled/dark, +/area/chapel/main) +"dhw" = ( +/obj/machinery/atmospherics/unary/vent_scrubber/on, +/obj/machinery/light{ + dir = 1 + }, +/turf/simulated/floor/tiled/dark, +/area/chapel/main) +"dhx" = ( +/turf/simulated/floor/tiled/dark, +/area/chapel/main) +"dhy" = ( +/turf/simulated/floor/carpet, +/area/chapel/main) +"dhz" = ( +/obj/machinery/camera/network/civilian{ + c_tag = "CIV - Chapel Fore"; + dir = 2 + }, +/obj/item/device/radio/intercom{ + dir = 1; + name = "Station Intercom (General)"; + pixel_y = 21 + }, +/turf/simulated/floor/carpet, +/area/chapel/main) +"dhA" = ( +/obj/structure/disposalpipe/segment, +/obj/machinery/atmospherics/unary/vent_pump/on, +/obj/machinery/light{ + dir = 1 + }, +/turf/simulated/floor/tiled/dark, +/area/chapel/main) +"dhB" = ( +/turf/simulated/wall, +/area/chapel/office) +"dhC" = ( +/obj/machinery/photocopier, +/turf/simulated/floor/lino, +/area/chapel/office) +"dhD" = ( +/obj/structure/table/wooden_reinforced, +/obj/structure/flora/pottedplant/thinbush{ + pixel_y = 10 + }, +/turf/simulated/floor/lino, +/area/chapel/office) +"dhE" = ( +/obj/structure/table/wooden_reinforced, +/obj/item/weapon/nullrod, +/obj/item/weapon/reagent_containers/food/drinks/bottle/holywater, +/obj/machinery/power/apc{ + dir = 1; + name = "north bump"; + pixel_x = 0; + pixel_y = 24 + }, +/obj/machinery/button/windowtint{ + id = "chapel"; + pixel_x = -11; + pixel_y = 24 + }, +/obj/machinery/light_switch{ + pixel_x = 11; + pixel_y = 24 + }, +/obj/structure/cable/green{ + d2 = 2; + icon_state = "0-2" + }, +/turf/simulated/floor/lino, +/area/chapel/office) +"dhF" = ( +/obj/structure/table/wooden_reinforced, +/obj/item/device/radio/intercom{ + dir = 1; + name = "Station Intercom (General)"; + pixel_y = 21 + }, +/obj/item/weapon/storage/fancy/markers, +/turf/simulated/floor/lino, +/area/chapel/office) +"dhG" = ( +/obj/structure/closet/wardrobe/chaplain_black, +/turf/simulated/floor/lino, +/area/chapel/office) +"dhH" = ( +/obj/machinery/power/breakerbox/activated{ + RCon_tag = "Civilian Substation Bypass" + }, +/turf/simulated/floor/plating, +/area/maintenance/substation/civilian) +"dhI" = ( +/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/effect/floor_decal/industrial/warning{ + icon_state = "warning"; + dir = 8 + }, +/turf/simulated/floor/plating, +/area/maintenance/substation/civilian) +"dhJ" = ( +/obj/structure/cable{ + d1 = 4; + d2 = 8; + icon_state = "4-8"; + pixel_x = 0 + }, +/obj/machinery/door/firedoor, +/obj/machinery/door/airlock/engineering{ + name = "Civilian Substation"; + req_one_access = list(11,24) + }, +/turf/simulated/floor/plating, +/area/maintenance/substation/civilian) +"dhK" = ( +/obj/structure/cable{ + d1 = 4; + d2 = 8; + icon_state = "4-8"; + pixel_x = 0 + }, +/turf/simulated/floor/plating, +/area/maintenance/chapel) +"dhL" = ( +/obj/structure/cable{ + d1 = 1; + d2 = 8; + icon_state = "1-8" + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/turf/simulated/floor/plating, +/area/maintenance/chapel) +"dhM" = ( +/obj/structure/closet/lasertag/blue, +/obj/item/stack/flag/blue, +/obj/effect/floor_decal/borderfloor, +/obj/effect/floor_decal/corner/green/border, +/turf/simulated/floor/tiled, +/area/holodeck_control) +"dhN" = ( +/obj/machinery/camera/network/second_deck{ + c_tag = "Second Deck - Aft Stairwell"; + dir = 1 + }, +/obj/effect/floor_decal/borderfloor, +/obj/effect/floor_decal/corner/green/border, +/obj/structure/table/glass, +/turf/simulated/floor/tiled, +/area/hallway/primary/seconddeck/aft) +"dhO" = ( +/obj/machinery/atmospherics/unary/vent_scrubber/on{ + dir = 4 + }, +/obj/machinery/newscaster{ + pixel_x = -28; + pixel_y = 1 + }, +/obj/effect/floor_decal/borderfloorwhite{ + dir = 8 + }, +/obj/effect/floor_decal/corner/paleblue/border{ + dir = 8 + }, +/turf/simulated/floor/tiled/white, +/area/medical/first_aid_station/seconddeck/aft) +"dhP" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 9 + }, +/turf/simulated/floor/tiled/white, +/area/medical/first_aid_station/seconddeck/aft) +"dhQ" = ( +/obj/machinery/hologram/holopad, +/obj/effect/floor_decal/industrial/outline/grey, +/turf/simulated/floor/tiled/white, +/area/medical/first_aid_station/seconddeck/aft) +"dhR" = ( +/obj/structure/cable/green{ + d1 = 1; + d2 = 4; + icon_state = "1-4" + }, +/obj/effect/floor_decal/steeldecal/steel_decals4, +/obj/effect/floor_decal/steeldecal/steel_decals4{ + dir = 10 + }, +/turf/simulated/floor/tiled/white, +/area/medical/first_aid_station/seconddeck/aft) +"dhS" = ( +/obj/machinery/atmospherics/unary/vent_scrubber/on{ + dir = 1 + }, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/turf/simulated/floor/tiled, +/area/hallway/primary/seconddeck/port) +"dhT" = ( +/obj/structure/cable/green{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/obj/effect/floor_decal/steeldecal/steel_decals4{ + dir = 6 + }, +/obj/effect/floor_decal/steeldecal/steel_decals4{ + dir = 1 + }, +/turf/simulated/floor/tiled, +/area/hallway/primary/seconddeck/aft) +"dhU" = ( +/obj/structure/cable/green{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/turf/simulated/floor/tiled, +/area/hallway/primary/seconddeck/aft) +"dhV" = ( +/obj/structure/cable/green{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/turf/simulated/floor/tiled/monotile, +/area/hallway/primary/seconddeck/aft) +"dhW" = ( +/obj/structure/cable/green{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/obj/structure/cable/green{ + d1 = 2; + d2 = 8; + icon_state = "2-8" + }, +/obj/effect/floor_decal/borderfloor/corner, +/obj/effect/floor_decal/corner/green/bordercorner, +/turf/simulated/floor/tiled, +/area/hallway/primary/seconddeck/aft) +"dhX" = ( +/obj/machinery/door/firedoor/border_only, +/obj/effect/floor_decal/industrial/loading{ + icon_state = "loadingarea"; + dir = 8 + }, +/obj/structure/plasticflaps{ + opacity = 1 + }, +/obj/machinery/navbeacon/delivery/west{ + location = "Hydroponics" + }, +/turf/simulated/floor/tiled, +/area/hydroponics) +"dhY" = ( +/obj/effect/floor_decal/chapel{ + icon_state = "chapel"; + dir = 1 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/turf/simulated/floor/tiled/dark, +/area/chapel/main) +"dhZ" = ( +/obj/structure/table/woodentable, +/obj/item/weapon/storage/fancy/candle_box, +/turf/simulated/floor/carpet, +/area/chapel/main) +"dia" = ( +/obj/structure/table/woodentable, +/turf/simulated/floor/carpet, +/area/chapel/main) +"dib" = ( +/obj/effect/floor_decal/chapel{ + icon_state = "chapel"; + dir = 4 + }, +/turf/simulated/floor/tiled/dark, +/area/chapel/main) +"dic" = ( +/obj/effect/floor_decal/chapel{ + icon_state = "chapel"; + dir = 1 + }, +/turf/simulated/floor/tiled/dark, +/area/chapel/main) +"did" = ( +/obj/machinery/newscaster{ + pixel_x = -30; + pixel_y = 0 + }, +/turf/simulated/floor/lino, +/area/chapel/office) +"die" = ( +/obj/structure/bed/chair{ + dir = 4 + }, +/turf/simulated/floor/lino, +/area/chapel/office) +"dif" = ( +/obj/structure/table/wooden_reinforced, +/obj/structure/cable/green{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/obj/item/weapon/paper_bin{ + pixel_x = 1; + pixel_y = 9 + }, +/obj/item/weapon/pen/blue{ + pixel_x = 5; + pixel_y = 5 + }, +/turf/simulated/floor/lino, +/area/chapel/office) +"dig" = ( +/obj/structure/bed/chair/office/dark{ + dir = 8 + }, +/obj/effect/landmark/start{ + name = "Chaplain" + }, +/turf/simulated/floor/lino, +/area/chapel/office) +"dih" = ( +/obj/machinery/alarm{ + dir = 8; + pixel_x = 22; + pixel_y = 0 + }, +/turf/simulated/floor/lino, +/area/chapel/office) +"dii" = ( +/obj/structure/cable/green, +/obj/structure/cable/green{ + d2 = 2; + icon_state = "0-2" + }, +/obj/machinery/power/smes/buildable{ + charge = 0; + RCon_tag = "Substation - Civilian" + }, +/turf/simulated/floor/plating, +/area/maintenance/substation/civilian) +"dij" = ( +/obj/structure/cable, +/obj/machinery/power/terminal{ + dir = 8 + }, +/obj/effect/floor_decal/industrial/warning{ + icon_state = "warning"; + dir = 8 + }, +/turf/simulated/floor/plating, +/area/maintenance/substation/civilian) +"dik" = ( +/turf/simulated/wall, +/area/maintenance/substation/civilian) +"dil" = ( +/obj/structure/sign/warning/high_voltage{ + pixel_x = -32; + pixel_y = 0 + }, +/obj/random/maintenance/clean, +/turf/simulated/floor/plating, +/area/maintenance/chapel) +"dim" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/obj/structure/catwalk, +/turf/simulated/floor/plating, +/area/maintenance/chapel) +"din" = ( +/obj/machinery/atmospherics/unary/vent_scrubber/on, +/obj/machinery/firealarm{ + dir = 1; + pixel_x = 0; + pixel_y = -24 + }, +/turf/simulated/floor/tiled/techfloor, +/area/holodeck_control) +"dio" = ( +/obj/machinery/hologram/holopad, +/obj/effect/floor_decal/industrial/outline/grey, +/turf/simulated/floor/tiled/techfloor, +/area/holodeck_control) +"dip" = ( +/obj/machinery/atmospherics/unary/vent_pump/on, +/obj/machinery/alarm{ + dir = 1; + pixel_y = -22 + }, +/turf/simulated/floor/tiled/techfloor, +/area/holodeck_control) +"diq" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/obj/structure/cable{ + d1 = 1; + d2 = 2; + icon_state = "1-2"; + pixel_y = 0 + }, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/turf/simulated/floor/tiled, +/area/hallway/primary/seconddeck/port) +"dir" = ( +/obj/structure/sign/greencross{ + desc = "White cross in a green field, you can get medical aid here."; + name = "First-Aid" + }, +/turf/simulated/wall, +/area/ai_monitored/storage/emergency/eva) +"dis" = ( +/obj/item/weapon/stool/padded, +/obj/machinery/alarm{ + dir = 1; + pixel_y = -22 + }, +/obj/effect/floor_decal/borderfloorwhite, +/obj/effect/floor_decal/corner/paleblue/border, +/turf/simulated/floor/tiled/white, +/area/medical/first_aid_station/seconddeck/aft) +"dit" = ( +/obj/effect/floor_decal/borderfloor{ + dir = 4 + }, +/obj/effect/floor_decal/corner/paleblue/border{ + dir = 4 + }, +/obj/effect/floor_decal/borderfloor/corner2{ + dir = 6 + }, +/obj/effect/floor_decal/corner/paleblue/bordercorner2{ + dir = 6 + }, +/turf/simulated/floor/tiled, +/area/hallway/primary/seconddeck/port) +"diu" = ( +/obj/effect/floor_decal/borderfloor, +/obj/effect/floor_decal/corner/paleblue/border, +/obj/effect/floor_decal/borderfloor/corner2{ + dir = 9 + }, +/obj/effect/floor_decal/corner/paleblue/bordercorner2{ + dir = 9 + }, +/turf/simulated/floor/tiled, +/area/hallway/primary/seconddeck/aft) +"div" = ( +/obj/machinery/atmospherics/unary/vent_pump/on{ + dir = 4 + }, +/turf/simulated/floor/tiled, +/area/hallway/primary/seconddeck/aft) +"diw" = ( +/obj/structure/cable/green{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/obj/item/device/radio/intercom{ + dir = 4; + name = "Station Intercom (General)"; + pixel_x = 21 + }, +/obj/effect/floor_decal/borderfloor{ + dir = 4 + }, +/obj/effect/floor_decal/corner/green/border{ + dir = 4 + }, +/turf/simulated/floor/tiled, +/area/hallway/primary/seconddeck/aft) +"dix" = ( +/turf/simulated/wall, +/area/chapel/main) +"diy" = ( +/obj/structure/extinguisher_cabinet{ + pixel_x = -28; + pixel_y = 0 + }, +/turf/simulated/floor/tiled/dark, +/area/chapel/main) +"diz" = ( +/obj/effect/floor_decal/chapel{ + icon_state = "chapel"; + dir = 4 + }, +/obj/structure/disposalpipe/segment, +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/turf/simulated/floor/tiled/dark, +/area/chapel/main) +"diA" = ( +/obj/effect/floor_decal/chapel, +/turf/simulated/floor/tiled/dark, +/area/chapel/main) +"diB" = ( +/obj/effect/floor_decal/chapel{ + icon_state = "chapel"; + dir = 8 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/turf/simulated/floor/tiled/dark, +/area/chapel/main) +"diC" = ( +/obj/effect/floor_decal/chapel, +/obj/structure/disposalpipe/segment, +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/turf/simulated/floor/tiled/dark, +/area/chapel/main) +"diD" = ( +/obj/machinery/door/firedoor, +/obj/effect/wingrille_spawn/reinforced/polarized{ + id = "chapel" + }, +/turf/simulated/floor/plating, +/area/chapel/office) +"diE" = ( +/obj/machinery/atmospherics/unary/vent_scrubber/on{ + dir = 4 + }, +/obj/machinery/camera/network/civilian{ + c_tag = "CIV - Chapel Office"; + dir = 4 + }, +/turf/simulated/floor/lino, +/area/chapel/office) +"diF" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, +/turf/simulated/floor/lino, +/area/chapel/office) +"diG" = ( +/obj/structure/table/wooden_reinforced, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 10 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 6 + }, +/obj/structure/cable/green{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/obj/item/device/flashlight/lamp{ + pixel_y = 10 + }, +/turf/simulated/floor/lino, +/area/chapel/office) +"diH" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/turf/simulated/floor/lino, +/area/chapel/office) +"diI" = ( +/obj/machinery/atmospherics/unary/vent_pump/on{ + dir = 8 + }, +/obj/machinery/light{ + dir = 4; + icon_state = "tube1"; + pixel_x = 0 + }, +/obj/machinery/computer/security/telescreen/entertainment{ + icon_state = "frame"; + pixel_x = 32; + pixel_y = 0 + }, +/turf/simulated/floor/lino, +/area/chapel/office) +"diJ" = ( +/obj/structure/cable/green{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/obj/machinery/light/small{ + dir = 8 + }, +/obj/effect/floor_decal/industrial/warning{ + icon_state = "warning"; + dir = 1 + }, +/obj/structure/table/steel, +/obj/machinery/cell_charger, +/turf/simulated/floor/plating, +/area/maintenance/substation/civilian) +"diK" = ( +/obj/structure/cable/green{ + d2 = 2; + icon_state = "0-2" + }, +/obj/machinery/power/apc{ + dir = 4; + name = "east bump"; + pixel_x = 24 + }, +/obj/effect/floor_decal/industrial/warning/corner{ + icon_state = "warningcorner"; + dir = 1 + }, +/turf/simulated/floor/plating, +/area/maintenance/substation/civilian) +"diL" = ( +/obj/item/weapon/storage/toolbox/emergency, +/obj/machinery/light/small{ + dir = 8 + }, +/obj/structure/catwalk, +/turf/simulated/floor/plating, +/area/maintenance/chapel) +"diM" = ( +/turf/simulated/wall, +/area/library) +"diN" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/turf/simulated/wall, +/area/library) +"diO" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/turf/simulated/wall, +/area/library) +"diP" = ( +/obj/structure/bookcase{ + name = "bookcase (Adult)" + }, +/turf/simulated/floor/wood, +/area/library) +"diQ" = ( +/obj/machinery/light{ + dir = 1 + }, +/turf/simulated/floor/wood, +/area/library) +"diR" = ( +/obj/structure/bookcase{ + name = "bookcase (Fiction)" + }, +/turf/simulated/floor/wood, +/area/library) +"diS" = ( +/obj/structure/bookcase{ + name = "bookcase (Religious)" + }, +/turf/simulated/floor/wood, +/area/library) +"diT" = ( +/obj/machinery/vending/coffee, +/turf/simulated/floor/wood, +/area/library) +"diU" = ( +/obj/structure/bed/chair/office/dark{ + dir = 4 + }, +/obj/machinery/light{ + dir = 1 + }, +/turf/simulated/floor/wood, +/area/library) +"diV" = ( +/obj/machinery/librarypubliccomp, +/obj/structure/table/woodentable, +/turf/simulated/floor/wood, +/area/library) +"diW" = ( +/obj/machinery/status_display, +/turf/simulated/wall, +/area/medical/first_aid_station/seconddeck/aft) +"diX" = ( +/obj/structure/sign/greencross{ + desc = "White cross in a green field, you can get medical aid here."; + name = "First-Aid" + }, +/turf/simulated/wall, +/area/hallway/primary/seconddeck/aft) +"diY" = ( +/obj/structure/cable/green{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/obj/effect/floor_decal/borderfloor{ + dir = 4 + }, +/obj/effect/floor_decal/corner/green/border{ + dir = 4 + }, +/turf/simulated/floor/tiled, +/area/hallway/primary/seconddeck/aft) +"diZ" = ( +/obj/structure/table/bench/padded, +/turf/simulated/floor/tiled/dark, +/area/chapel/main) +"dja" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/obj/structure/table/bench/padded, +/turf/simulated/floor/tiled/dark, +/area/chapel/main) +"djb" = ( +/obj/machinery/hologram/holopad, +/turf/simulated/floor/carpet, +/area/chapel/main) +"djc" = ( +/obj/structure/disposalpipe/sortjunction/flipped{ + dir = 2; + name = "Chapel"; + sortType = "Chapel" + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/structure/table/bench/padded, +/turf/simulated/floor/tiled/dark, +/area/chapel/main) +"djd" = ( +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/structure/table/bench/padded, +/turf/simulated/floor/tiled/dark, +/area/chapel/main) +"dje" = ( +/obj/machinery/door/firedoor, +/obj/effect/wingrille_spawn/reinforced/polarized{ + id = "chapel" + }, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/turf/simulated/floor/plating, +/area/chapel/office) +"djf" = ( +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/turf/simulated/floor/lino, +/area/chapel/office) +"djg" = ( +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/machinery/hologram/holopad, +/obj/structure/cable/green{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/turf/simulated/floor/lino, +/area/chapel/office) +"djh" = ( +/obj/machinery/disposal, +/obj/structure/disposalpipe/trunk{ + dir = 8 + }, +/obj/machinery/firealarm{ + dir = 4; + pixel_x = 24 + }, +/turf/simulated/floor/lino, +/area/chapel/office) +"dji" = ( +/obj/structure/cable/green, +/obj/structure/cable/green{ + d2 = 4; + icon_state = "0-4" + }, +/obj/machinery/power/sensor{ + name = "Powernet Sensor - Civilian"; + name_tag = "Civilian Subgrid" + }, +/obj/machinery/firealarm{ + dir = 8; + pixel_x = -24 + }, +/turf/simulated/floor/plating, +/area/maintenance/substation/civilian) +"djj" = ( +/obj/structure/cable/green{ + d1 = 1; + d2 = 8; + icon_state = "1-8" + }, +/obj/structure/cable/green{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/obj/machinery/alarm{ + dir = 1; + pixel_y = -22 + }, +/turf/simulated/floor/plating, +/area/maintenance/substation/civilian) +"djk" = ( +/obj/structure/cable/green{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/obj/machinery/door/firedoor, +/obj/machinery/door/airlock/engineering{ + name = "Civilian Substation"; + req_one_access = list(11,24) + }, +/turf/simulated/floor/plating, +/area/maintenance/substation/civilian) +"djl" = ( +/obj/structure/cable/green{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/obj/structure/catwalk, +/turf/simulated/floor/plating, +/area/maintenance/chapel) +"djm" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/obj/structure/cable/green{ + d1 = 2; + d2 = 8; + icon_state = "2-8" + }, +/obj/structure/catwalk, +/turf/simulated/floor/plating, +/area/maintenance/chapel) +"djn" = ( +/obj/item/device/radio/intercom{ + dir = 1; + name = "Station Intercom (General)"; + pixel_y = 21 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/turf/simulated/floor/wood, +/area/library) +"djo" = ( +/obj/machinery/status_display{ + pixel_x = 0; + pixel_y = 32 + }, +/turf/simulated/floor/wood, +/area/library) +"djp" = ( +/obj/machinery/light{ + dir = 1 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/turf/simulated/floor/wood, +/area/library) +"djq" = ( +/obj/structure/extinguisher_cabinet{ + pixel_y = 30 + }, +/turf/simulated/floor/wood, +/area/library) +"djr" = ( +/obj/machinery/atmospherics/unary/vent_scrubber/on, +/turf/simulated/floor/wood, +/area/library) +"djs" = ( +/turf/simulated/floor/wood, +/area/library) +"djt" = ( +/obj/machinery/atmospherics/unary/vent_pump/on, +/turf/simulated/floor/wood, +/area/library) +"dju" = ( +/obj/machinery/power/apc{ + dir = 1; + name = "north bump"; + pixel_x = 0; + pixel_y = 24 + }, +/obj/machinery/light_switch{ + pixel_x = 11; + pixel_y = 24 + }, +/obj/structure/cable/green{ + d2 = 2; + icon_state = "0-2" + }, +/turf/simulated/floor/wood, +/area/library) +"djv" = ( +/obj/machinery/door/firedoor/glass, +/obj/machinery/door/airlock/glass{ + name = "Library" + }, +/turf/simulated/floor/tiled/steel_grid, +/area/library) +"djw" = ( +/obj/structure/cable/green{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/obj/machinery/camera/network/second_deck{ + c_tag = "Second Deck - Aft Hallway Four"; + dir = 8 + }, +/obj/effect/floor_decal/borderfloor{ + dir = 4 + }, +/obj/effect/floor_decal/corner/green/border{ + dir = 4 + }, +/turf/simulated/floor/tiled, +/area/hallway/primary/seconddeck/aft) +"djx" = ( +/obj/machinery/newscaster{ + pixel_x = 30; + pixel_y = 0 + }, +/turf/simulated/floor/tiled/dark, +/area/chapel/main) +"djy" = ( +/obj/effect/floor_decal/borderfloorwhite/corner, +/obj/machinery/light, +/obj/effect/floor_decal/corner/purple/bordercorner, +/turf/simulated/floor/tiled/white, +/area/rnd/research/firstdeck/hallway) +"djz" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/obj/structure/cable/green{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/obj/machinery/door/firedoor, +/obj/machinery/door/airlock/maintenance{ + req_access = null; + req_one_access = list(12,25,27,28,35) + }, +/turf/simulated/floor/plating, +/area/maintenance/chapel) +"djA" = ( +/turf/simulated/wall/r_wall, +/area/chapel/main) +"djB" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/obj/structure/disposalpipe/segment{ + dir = 1; + icon_state = "pipe-c" + }, +/obj/structure/cable{ + d1 = 1; + d2 = 4; + icon_state = "1-4" + }, +/obj/structure/catwalk, +/turf/simulated/floor/plating, +/area/maintenance/bar) +"djC" = ( +/obj/structure/disposalpipe/segment{ + dir = 2; + icon_state = "pipe-c" + }, +/obj/structure/cable{ + d1 = 2; + d2 = 8; + icon_state = "2-8" + }, +/obj/structure/catwalk, +/turf/simulated/floor/plating, +/area/maintenance/bar) +"djD" = ( +/obj/machinery/computer/security/telescreen/entertainment{ + icon_state = "frame"; + pixel_x = -32; + pixel_y = 0 + }, +/obj/machinery/camera/network/civilian{ + c_tag = "CIV - Library Port"; + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/turf/simulated/floor/wood, +/area/library) +"djE" = ( +/obj/structure/bed/chair/office/dark, +/turf/simulated/floor/wood, +/area/library) +"djF" = ( +/obj/structure/bed/chair/office/dark, +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/turf/simulated/floor/wood, +/area/library) +"djG" = ( +/obj/structure/cable/green{ + d1 = 2; + d2 = 4; + icon_state = "2-4" + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 6 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 6 + }, +/turf/simulated/floor/wood, +/area/library) +"djH" = ( +/obj/structure/cable/green{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers, +/turf/simulated/floor/wood, +/area/library) +"djI" = ( +/obj/structure/cable/green{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, +/turf/simulated/floor/wood, +/area/library) +"djJ" = ( +/obj/structure/cable/green{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{ + dir = 1 + }, +/turf/simulated/floor/wood, +/area/library) +"djK" = ( +/obj/structure/cable/green{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/obj/machinery/atmospherics/pipe/manifold/hidden/supply{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 10 + }, +/turf/simulated/floor/wood, +/area/library) +"djL" = ( +/obj/structure/cable/green{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/turf/simulated/floor/wood, +/area/library) +"djM" = ( +/obj/structure/cable/green{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/obj/machinery/hologram/holopad, +/turf/simulated/floor/wood, +/area/library) +"djN" = ( +/obj/structure/cable/green{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/obj/structure/cable/green{ + d1 = 1; + d2 = 4; + icon_state = "1-4" + }, +/turf/simulated/floor/wood, +/area/library) +"djO" = ( +/obj/structure/cable/green{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/obj/structure/extinguisher_cabinet{ + pixel_y = -30 + }, +/turf/simulated/floor/wood, +/area/library) +"djP" = ( +/obj/structure/cable/green{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/obj/machinery/door/firedoor/glass, +/obj/machinery/door/airlock/glass{ + name = "Library" + }, +/turf/simulated/floor/tiled/steel_grid, +/area/library) +"djQ" = ( +/obj/structure/cable/green{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/obj/structure/cable/green{ + d1 = 2; + d2 = 8; + icon_state = "2-8" + }, +/obj/effect/floor_decal/borderfloor{ + dir = 4 + }, +/obj/effect/floor_decal/corner/green/border{ + dir = 4 + }, +/turf/simulated/floor/tiled, +/area/hallway/primary/seconddeck/aft) +"djR" = ( +/obj/effect/floor_decal/chapel{ + icon_state = "chapel"; + dir = 8 + }, +/turf/simulated/floor/tiled/dark, +/area/chapel/main) +"djS" = ( +/obj/effect/floor_decal/chapel, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, +/obj/structure/table/bench/padded, +/turf/simulated/floor/tiled/dark, +/area/chapel/main) +"djT" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, +/turf/simulated/floor/carpet, +/area/chapel/main) +"djU" = ( +/obj/effect/floor_decal/chapel{ + icon_state = "chapel"; + dir = 8 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 6 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 5 + }, +/obj/structure/table/bench/padded, +/turf/simulated/floor/tiled/dark, +/area/chapel/main) +"djV" = ( +/obj/effect/floor_decal/chapel, +/obj/structure/disposalpipe/segment, +/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{ + dir = 1 + }, +/obj/machinery/atmospherics/pipe/manifold/hidden/supply, +/obj/structure/table/bench/padded, +/turf/simulated/floor/tiled/dark, +/area/chapel/main) +"djW" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, +/obj/structure/table/bench/padded, +/turf/simulated/floor/tiled/dark, +/area/chapel/main) +"djX" = ( +/obj/machinery/door/firedoor/glass, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, +/turf/simulated/floor/tiled/dark, +/area/chapel/main) +"djY" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, +/turf/simulated/floor/tiled/dark, +/area/chapel/main) +"djZ" = ( +/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers, +/obj/machinery/atmospherics/pipe/manifold/hidden/supply{ + dir = 4 + }, +/obj/structure/cable/green{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/turf/simulated/floor/tiled/dark, +/area/chapel/main) +"dka" = ( +/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{ + dir = 1 + }, +/turf/simulated/floor/tiled/dark, +/area/chapel/main) +"dkb" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, +/turf/simulated/floor/tiled/dark, +/area/chapel/main) +"dkc" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, +/obj/machinery/light{ + dir = 1 + }, +/turf/simulated/floor/tiled/dark, +/area/chapel/main) +"dkd" = ( +/obj/machinery/atmospherics/unary/vent_pump/on, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, +/obj/machinery/camera/network/civilian{ + c_tag = "CIV - Chapel Starboard"; + dir = 2 + }, +/obj/machinery/alarm{ + pixel_y = 23 + }, +/turf/simulated/floor/tiled/dark, +/area/chapel/main) +"dke" = ( +/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{ + dir = 1 + }, +/obj/machinery/status_display{ + pixel_x = 0; + pixel_y = 32 + }, +/turf/simulated/floor/tiled/dark, +/area/chapel/main) +"dkf" = ( +/obj/structure/cable/green{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers, +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/turf/simulated/floor/tiled/dark, +/area/chapel/main) +"dkg" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, +/obj/structure/bed/chair{ + dir = 4 + }, +/turf/simulated/floor/tiled/dark, +/area/chapel/main) +"dkh" = ( +/obj/structure/table/glass, +/obj/machinery/atmospherics/unary/vent_scrubber/on{ + dir = 8 + }, +/obj/item/device/radio/intercom{ + dir = 1; + name = "Station Intercom (General)"; + pixel_y = 21 + }, +/turf/simulated/floor/tiled/dark, +/area/chapel/main) +"dki" = ( +/obj/machinery/door/firedoor, +/obj/effect/wingrille_spawn/reinforced, +/turf/simulated/floor/plating, +/area/chapel/main) +"dkj" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 5 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 5 + }, +/obj/machinery/alarm{ + dir = 4; + icon_state = "alarm0"; + pixel_x = -22 + }, +/obj/structure/catwalk, +/turf/simulated/floor/plating, +/area/maintenance/bar) +"dkk" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, +/obj/structure/disposalpipe/segment, +/obj/structure/cable{ + d1 = 1; + d2 = 2; + icon_state = "1-2"; + pixel_y = 0 + }, +/obj/structure/catwalk, +/turf/simulated/floor/plating, +/area/maintenance/bar) +"dkl" = ( +/obj/machinery/door/firedoor/border_only, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, +/obj/machinery/door/airlock/maintenance{ + req_access = null; + req_one_access = list(12,25,27,28,35) + }, +/turf/simulated/floor/plating, +/area/library) +"dkm" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers, +/turf/simulated/floor/wood, +/area/library) +"dkn" = ( +/obj/structure/table/woodentable, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, +/obj/item/weapon/dice/d20, +/obj/item/weapon/dice, +/turf/simulated/floor/wood, +/area/library) +"dko" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 5 + }, +/turf/simulated/floor/tiled/hydro, +/area/rnd/xenobiology/xenoflora) +"dkp" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, +/obj/machinery/hologram/holopad, +/turf/simulated/floor/wood, +/area/library) +"dkq" = ( +/obj/structure/cable/green{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/obj/machinery/atmospherics/pipe/manifold/hidden/supply{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{ + dir = 4 + }, +/turf/simulated/floor/wood, +/area/library) +"dkr" = ( +/obj/structure/bed/chair/comfy/black{ + dir = 4 + }, +/turf/simulated/floor/carpet, +/area/library) +"dks" = ( +/obj/structure/table/woodentable, +/obj/item/device/flashlight/lamp/green{ + pixel_x = 1; + pixel_y = 5 + }, +/turf/simulated/floor/carpet, +/area/library) +"dkt" = ( +/obj/structure/bed/chair/comfy/brown{ + dir = 8 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/turf/simulated/floor/carpet, +/area/library) +"dku" = ( +/obj/effect/landmark{ + name = "lightsout" + }, +/turf/simulated/floor/wood, +/area/library) +"dkv" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/turf/simulated/floor/wood, +/area/library) +"dkw" = ( +/obj/structure/table/woodentable, +/obj/machinery/camera/network/civilian{ + c_tag = "CIV - Library Starboard"; + dir = 8 + }, +/obj/machinery/recharger{ + pixel_y = 0 + }, +/obj/item/weapon/tape_roll, +/turf/simulated/floor/wood, +/area/library) +"dkx" = ( +/obj/machinery/door/firedoor/border_only, +/obj/effect/wingrille_spawn/reinforced/polarized{ + id = "library_window_tint" + }, +/turf/simulated/floor/plating, +/area/library) +"dky" = ( +/obj/machinery/light{ + icon_state = "tube1"; + dir = 8 + }, +/obj/effect/floor_decal/borderfloor{ + dir = 8 + }, +/obj/effect/floor_decal/corner/green/border{ + dir = 8 + }, +/obj/effect/floor_decal/borderfloor/corner2{ + dir = 8 + }, +/obj/effect/floor_decal/corner/green/bordercorner2{ + dir = 8 + }, +/turf/simulated/floor/tiled, +/area/hallway/primary/seconddeck/aft) +"dkz" = ( +/obj/machinery/atmospherics/unary/vent_scrubber/on{ + dir = 8 + }, +/obj/structure/cable/green{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/obj/machinery/alarm{ + dir = 8; + pixel_x = 22; + pixel_y = 0 + }, +/obj/effect/floor_decal/borderfloor{ + dir = 4 + }, +/obj/effect/floor_decal/corner/green/border{ + dir = 4 + }, +/turf/simulated/floor/tiled, +/area/hallway/primary/seconddeck/aft) +"dkA" = ( +/obj/structure/flora/pottedplant/minitree, +/turf/simulated/floor/tiled/dark, +/area/chapel/main) +"dkB" = ( +/obj/machinery/atmospherics/unary/vent_pump/on{ + dir = 1 + }, +/obj/machinery/light, +/turf/simulated/floor/tiled/dark, +/area/chapel/main) +"dkC" = ( +/obj/structure/cable/green{ + d2 = 4; + icon_state = "0-4" + }, +/obj/machinery/power/apc{ + dir = 2; + name = "south bump"; + pixel_y = -24 + }, +/obj/machinery/light_switch{ + pixel_x = 11; + pixel_y = -24 + }, +/turf/simulated/floor/tiled/dark, +/area/chapel/main) +"dkD" = ( +/obj/structure/cable/green{ + d1 = 2; + d2 = 4; + icon_state = "2-4" + }, +/obj/structure/cable/green{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/turf/simulated/floor/carpet, +/area/chapel/main) +"dkE" = ( +/obj/structure/cable/green{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/turf/simulated/floor/carpet, +/area/chapel/main) +"dkF" = ( +/obj/structure/cable/green{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/obj/machinery/firealarm{ + dir = 1; + pixel_x = 0; + pixel_y = -26 + }, +/turf/simulated/floor/tiled/dark, +/area/chapel/main) +"dkG" = ( +/obj/structure/disposalpipe/segment, +/obj/machinery/atmospherics/unary/vent_scrubber/on{ + dir = 1 + }, +/obj/structure/cable/green{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/obj/machinery/light, +/turf/simulated/floor/tiled/dark, +/area/chapel/main) +"dkH" = ( +/obj/structure/cable/green{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/turf/simulated/floor/tiled/dark, +/area/chapel/main) +"dkI" = ( +/obj/machinery/door/firedoor/glass, +/obj/structure/cable/green{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/turf/simulated/floor/tiled/dark, +/area/chapel/main) +"dkJ" = ( +/obj/structure/cable/green{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/obj/structure/extinguisher_cabinet{ + pixel_y = -30 + }, +/turf/simulated/floor/tiled/dark, +/area/chapel/main) +"dkK" = ( +/obj/structure/cable/green{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 5 + }, +/obj/structure/cable/green{ + d1 = 1; + d2 = 4; + icon_state = "1-4" + }, +/obj/item/device/radio/intercom{ + name = "Station Intercom (General)"; + pixel_y = -21 + }, +/turf/simulated/floor/tiled/dark, +/area/chapel/main) +"dkL" = ( +/obj/machinery/atmospherics/unary/vent_scrubber/on{ + dir = 1 + }, +/obj/structure/cable/green{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/turf/simulated/floor/tiled/dark, +/area/chapel/main) +"dkM" = ( +/obj/structure/cable/green{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/obj/machinery/firealarm{ + dir = 1; + pixel_x = 0; + pixel_y = -26 + }, +/turf/simulated/floor/tiled/dark, +/area/chapel/main) +"dkN" = ( +/obj/structure/cable/green{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/turf/simulated/floor/tiled/dark, +/area/chapel/main) +"dkO" = ( +/obj/structure/cable/green{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/obj/machinery/atmospherics/pipe/manifold/hidden/supply, +/turf/simulated/floor/tiled/dark, +/area/chapel/main) +"dkP" = ( +/obj/structure/cable/green{ + d1 = 2; + d2 = 4; + icon_state = "2-4" + }, +/obj/structure/cable/green{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/obj/machinery/atmospherics/pipe/manifold/hidden/supply{ + dir = 1 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/obj/machinery/hologram/holopad, +/obj/effect/floor_decal/industrial/outline/grey, +/turf/simulated/floor/tiled/dark, +/area/chapel/main) +"dkQ" = ( +/obj/structure/cable/green{ + d1 = 1; + d2 = 8; + icon_state = "1-8" + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 9 + }, +/turf/simulated/floor/tiled/dark, +/area/chapel/main) +"dkR" = ( +/obj/structure/bed/chair{ + dir = 4 + }, +/turf/simulated/floor/tiled/dark, +/area/chapel/main) +"dkS" = ( +/obj/structure/table/glass, +/turf/simulated/floor/tiled/dark, +/area/chapel/main) +"dkT" = ( +/obj/structure/table/rack{ + dir = 1 + }, +/obj/item/weapon/extinguisher, +/obj/item/device/flashlight, +/obj/item/device/flashlight, +/obj/random/maintenance/cargo, +/obj/random/maintenance/cargo, +/obj/random/maintenance/clean, +/obj/random/maintenance/clean, +/obj/structure/catwalk, +/turf/simulated/floor/plating, +/area/maintenance/bar) +"dkU" = ( +/obj/structure/disposalpipe/segment, +/obj/structure/cable{ + d1 = 1; + d2 = 2; + icon_state = "1-2"; + pixel_y = 0 + }, +/obj/machinery/light/small{ + dir = 4; + pixel_y = 0 + }, +/obj/structure/catwalk, +/turf/simulated/floor/plating, +/area/maintenance/bar) +"dkV" = ( +/obj/machinery/newscaster{ + pixel_x = -30; + pixel_y = 0 + }, +/turf/simulated/floor/wood, +/area/library) +"dkW" = ( +/obj/structure/bed/chair/office/dark{ + dir = 1 + }, +/turf/simulated/floor/wood, +/area/library) +"dkX" = ( +/obj/structure/bed/chair/office/dark{ + dir = 1 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/turf/simulated/floor/wood, +/area/library) +"dkY" = ( +/obj/structure/cable/green{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/turf/simulated/floor/wood, +/area/library) +"dkZ" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/turf/simulated/floor/wood, +/area/library) +"dla" = ( +/obj/structure/table/woodentable, +/obj/item/device/flashlight/lamp/green{ + pixel_x = 1; + pixel_y = 5 + }, +/turf/simulated/floor/wood, +/area/library) +"dlb" = ( +/obj/structure/table/woodentable, +/obj/item/device/tape/random, +/obj/item/device/taperecorder, +/turf/simulated/floor/wood, +/area/library) +"dlc" = ( +/obj/structure/closet/chefcloset, +/obj/item/glass_jar, +/obj/item/device/retail_scanner/civilian, +/obj/item/weapon/soap/nanotrasen, +/obj/item/device/destTagger{ + pixel_x = 4; + pixel_y = 3 + }, +/obj/item/weapon/packageWrap, +/obj/item/weapon/packageWrap, +/obj/item/weapon/packageWrap, +/obj/effect/floor_decal/corner/grey/diagonal{ + dir = 4 + }, +/obj/machinery/newscaster{ + pixel_y = 30 + }, +/obj/item/clothing/gloves/sterile/latex, +/obj/item/clothing/gloves/sterile/latex, +/turf/simulated/floor/tiled/white, +/area/crew_quarters/kitchen) +"dld" = ( +/obj/structure/table/woodentable, +/obj/item/weapon/paper_bin{ + pixel_x = 1; + pixel_y = 9 + }, +/obj/item/weapon/folder/yellow, +/obj/item/weapon/packageWrap, +/turf/simulated/floor/wood, +/area/library) +"dle" = ( +/obj/machinery/atmospherics/unary/vent_pump/on, +/turf/simulated/floor/carpet, +/area/library) +"dlf" = ( +/obj/structure/table/rack{ + dir = 8; + layer = 2.9 + }, +/obj/item/weapon/storage/briefcase{ + pixel_x = -2; + pixel_y = -5 + }, +/obj/item/weapon/storage/briefcase{ + pixel_x = 3; + pixel_y = 0 + }, +/obj/machinery/camera/network/civilian{ + c_tag = "CIV - Library Office"; + dir = 2 + }, +/obj/machinery/alarm{ + pixel_y = 23 + }, +/turf/simulated/floor/carpet, +/area/library) +"dlg" = ( +/obj/structure/bookcase{ + name = "Forbidden Knowledge" + }, +/turf/simulated/floor/carpet, +/area/library) +"dlh" = ( +/obj/machinery/firealarm{ + dir = 8; + pixel_x = -24; + pixel_y = 0 + }, +/obj/effect/floor_decal/borderfloor{ + dir = 8 + }, +/obj/effect/floor_decal/corner/green/border{ + dir = 8 + }, +/obj/effect/floor_decal/borderfloor/corner2{ + dir = 10 + }, +/obj/effect/floor_decal/corner/green/bordercorner2{ + dir = 10 + }, +/turf/simulated/floor/tiled, +/area/hallway/primary/seconddeck/aft) +"dli" = ( +/obj/structure/cable/green{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/obj/effect/floor_decal/borderfloor{ + dir = 4 + }, +/obj/effect/floor_decal/corner/green/border{ + dir = 4 + }, +/obj/effect/floor_decal/borderfloor/corner2{ + dir = 5 + }, +/obj/effect/floor_decal/corner/green/bordercorner2{ + dir = 5 + }, +/turf/simulated/floor/tiled, +/area/hallway/primary/seconddeck/aft) +"dlj" = ( +/obj/machinery/door/firedoor/glass, +/obj/machinery/door/airlock/glass{ + name = "Chapel" + }, +/obj/structure/cable/green{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/turf/simulated/floor/tiled/steel_grid, +/area/chapel/main) +"dlk" = ( +/obj/machinery/door/firedoor/glass, +/obj/machinery/door/airlock/glass{ + name = "Chapel" + }, +/turf/simulated/floor/tiled/steel_grid, +/area/chapel/main) +"dll" = ( +/obj/machinery/door/firedoor/border_only, +/obj/effect/wingrille_spawn/reinforced, +/obj/structure/disposalpipe/segment, +/turf/simulated/floor/plating, +/area/chapel/main) +"dlm" = ( +/obj/machinery/door/morgue{ + dir = 2; + name = "Confession Booth" + }, +/turf/simulated/floor/tiled/dark, +/area/chapel/main) +"dln" = ( +/obj/machinery/door/morgue{ + dir = 2; + name = "Confession Booth (Chaplain)"; + req_access = list(22) + }, +/turf/simulated/floor/tiled/dark, +/area/chapel/main) +"dlo" = ( +/obj/structure/closet/coffin, +/obj/machinery/door/window/northleft{ + name = "Coffin Storage"; + req_access = list(27) + }, +/turf/simulated/floor/tiled/dark, +/area/chapel/main) +"dlp" = ( +/obj/structure/closet/coffin, +/obj/structure/window/reinforced{ + dir = 1; + health = 1e+006 + }, +/turf/simulated/floor/tiled/dark, +/area/chapel/main) +"dlq" = ( +/obj/structure/closet/coffin, +/obj/machinery/door/window/northright{ + name = "Coffin Storage"; + req_access = list(27) + }, +/obj/structure/window/reinforced{ + dir = 4 + }, +/turf/simulated/floor/tiled/dark, +/area/chapel/main) +"dlr" = ( +/obj/structure/cable/green{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/turf/simulated/floor/tiled/dark, +/area/chapel/main) +"dls" = ( +/obj/machinery/button/remote/driver{ + id = "chapelgun"; + name = "Chapel Mass Driver"; + pixel_x = 32; + pixel_y = 4 + }, +/obj/effect/floor_decal/industrial/warning/corner, +/turf/simulated/floor/tiled/dark, +/area/chapel/main) +"dlt" = ( +/obj/structure/disposalpipe/segment, +/obj/structure/cable{ + d1 = 1; + d2 = 2; + icon_state = "1-2"; + pixel_y = 0 + }, +/obj/structure/catwalk, +/turf/simulated/floor/plating, +/area/maintenance/bar) +"dlu" = ( +/obj/machinery/firealarm{ + dir = 8; + pixel_x = -24 + }, +/turf/simulated/floor/wood, +/area/library) +"dlv" = ( +/obj/machinery/atmospherics/unary/vent_pump/on{ + dir = 1 + }, +/turf/simulated/floor/wood, +/area/library) +"dlw" = ( +/obj/machinery/disposal, +/obj/structure/disposalpipe/trunk, +/turf/simulated/floor/wood, +/area/library) +"dlx" = ( +/obj/structure/bookcase{ + name = "bookcase (Non-Fiction)" + }, +/turf/simulated/floor/wood, +/area/library) +"dly" = ( +/obj/machinery/atmospherics/unary/vent_scrubber/on{ + dir = 1 + }, +/turf/simulated/floor/wood, +/area/library) +"dlz" = ( +/obj/structure/table/woodentable, +/obj/item/weapon/pen/red{ + pixel_x = 2; + pixel_y = 6 + }, +/obj/item/weapon/pen/blue{ + pixel_x = 5; + pixel_y = 5 + }, +/obj/item/weapon/pen, +/obj/item/weapon/book/codex/lore/news, +/turf/simulated/floor/wood, +/area/library) +"dlA" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 5 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 5 + }, +/turf/simulated/floor/wood, +/area/library) +"dlB" = ( +/obj/structure/table/woodentable, +/obj/item/device/camera_film, +/obj/item/device/camera_film, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, +/obj/item/device/paicard, +/turf/simulated/floor/wood, +/area/library) +"dlC" = ( +/obj/structure/bed/chair/office/dark{ + dir = 1 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, +/obj/effect/landmark/start{ + name = "Librarian" + }, +/turf/simulated/floor/wood, +/area/library) +"dlD" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, +/turf/simulated/floor/wood, +/area/library) +"dlE" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, +/obj/machinery/door/airlock{ + name = "Library Office"; + req_access = list(37) + }, +/obj/machinery/door/firedoor/border_only, +/turf/simulated/floor/tiled/steel_grid, +/area/library) +"dlF" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 9; + pixel_y = 0 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, +/turf/simulated/floor/carpet, +/area/library) +"dlG" = ( +/obj/structure/bed/chair/comfy/brown, +/obj/effect/landmark/start{ + name = "Librarian" + }, +/obj/machinery/atmospherics/unary/vent_scrubber/on{ + dir = 8 + }, +/turf/simulated/floor/carpet, +/area/library) +"dlH" = ( +/turf/simulated/floor/carpet, +/area/library) +"dlI" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{ + dir = 8 + }, +/turf/simulated/floor/tiled/monotile, +/area/hallway/primary/seconddeck/aft) +"dlJ" = ( +/obj/structure/cable/green{ + d1 = 1; + d2 = 4; + icon_state = "1-4" + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, +/turf/simulated/floor/tiled, +/area/hallway/primary/seconddeck/aft) +"dlK" = ( +/obj/machinery/door/firedoor/glass, +/obj/structure/cable/green{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, +/turf/simulated/floor/tiled, +/area/hallway/primary/seconddeck/aft) +"dlL" = ( +/obj/structure/cable/green{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, +/turf/simulated/floor/tiled, +/area/hallway/primary/seconddeck/aft) +"dlM" = ( +/obj/structure/cable/green{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/obj/machinery/atmospherics/unary/vent_pump/on, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, +/turf/simulated/floor/tiled, +/area/hallway/primary/seconddeck/aft) +"dlN" = ( +/obj/structure/cable/green{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, +/obj/machinery/firealarm{ + pixel_y = 24 + }, +/turf/simulated/floor/tiled, +/area/hallway/primary/seconddeck/aft) +"dlO" = ( +/obj/structure/cable/green{ + d1 = 1; + d2 = 8; + icon_state = "1-8" + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, +/obj/effect/floor_decal/steeldecal/steel_decals4{ + dir = 9 + }, +/obj/effect/floor_decal/steeldecal/steel_decals4{ + dir = 4 + }, +/turf/simulated/floor/tiled, +/area/hallway/primary/seconddeck/aft) +"dlP" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, +/obj/effect/floor_decal/steeldecal/steel_decals4{ + dir = 9 + }, +/obj/effect/floor_decal/steeldecal/steel_decals4{ + dir = 4 + }, +/turf/simulated/floor/tiled, +/area/hallway/primary/seconddeck/aft) +"dlQ" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, +/turf/simulated/floor/tiled, +/area/hallway/primary/seconddeck/aft) +"dlR" = ( +/obj/structure/disposalpipe/segment, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 10 + }, +/turf/simulated/floor/tiled, +/area/hallway/primary/seconddeck/aft) +"dlS" = ( +/obj/structure/table/glass, +/obj/item/weapon/book/codex/lore/vir, +/turf/simulated/floor/tiled/dark, +/area/hallway/primary/seconddeck/aft) +"dlT" = ( +/obj/item/device/radio/intercom/locked/confessional{ + pixel_y = -21 + }, +/obj/structure/bed/chair{ + dir = 4 + }, +/obj/machinery/light/small{ + dir = 8 + }, +/turf/simulated/floor/tiled/dark, +/area/chapel/main) +"dlU" = ( +/obj/structure/grille, +/obj/structure/window/reinforced/tinted{ + dir = 1 + }, +/obj/structure/window/reinforced/tinted, +/obj/structure/window/reinforced/tinted{ + dir = 4; + icon_state = "twindow" + }, +/obj/structure/window/reinforced/tinted{ + dir = 8; + icon_state = "twindow" + }, +/turf/simulated/floor/plating, +/area/chapel/main) +"dlV" = ( +/obj/item/device/radio/intercom/locked/confessional{ + dir = 2; + pixel_y = -21 + }, +/obj/structure/bed/chair{ + dir = 8 + }, +/obj/machinery/light/small{ + dir = 4; + pixel_y = 0 + }, +/turf/simulated/floor/tiled/dark, +/area/chapel/main) +"dlW" = ( +/obj/structure/closet/coffin, +/turf/simulated/floor/tiled/dark, +/area/chapel/main) +"dlX" = ( +/obj/structure/closet/coffin, +/obj/structure/window/reinforced{ + dir = 4 + }, +/turf/simulated/floor/tiled/dark, +/area/chapel/main) +"dlY" = ( +/obj/machinery/atmospherics/unary/vent_pump/on{ + dir = 4 + }, +/obj/machinery/light, +/obj/structure/closet/emcloset, +/turf/simulated/floor/tiled/dark, +/area/chapel/main) +"dlZ" = ( +/obj/structure/cable/green{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/obj/machinery/atmospherics/pipe/manifold/hidden/supply{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/turf/simulated/floor/tiled/dark, +/area/chapel/main) +"dma" = ( +/obj/effect/floor_decal/industrial/warning{ + dir = 4 + }, +/obj/machinery/ai_status_display{ + pixel_y = -32 + }, +/turf/simulated/floor/tiled/dark, +/area/chapel/main) +"dmb" = ( +/obj/machinery/door/window{ + dir = 8; + name = "Mass Driver"; + req_access = list(22) + }, +/obj/machinery/mass_driver{ + dir = 4; + id = "chapelgun" + }, +/obj/machinery/atmospherics/unary/vent_pump/on{ + dir = 8 + }, +/obj/machinery/airlock_sensor{ + pixel_y = 25 + }, +/obj/effect/floor_decal/industrial/warning{ + dir = 8 + }, +/turf/simulated/floor/plating, +/area/chapel/main) +"dmc" = ( +/obj/effect/floor_decal/industrial/warning{ + dir = 4 + }, +/obj/structure/sign/warning/vacuum{ + pixel_y = 32 + }, +/turf/simulated/floor/plating, +/area/chapel/main) +"dmd" = ( +/obj/machinery/door/blast/regular{ + id = "chapelgun"; + name = "Chapel Launcher Door" + }, +/obj/machinery/shield_diffuser, +/turf/simulated/floor/plating, +/area/chapel/main) +"dme" = ( +/obj/machinery/door/firedoor/border_only, +/obj/structure/disposalpipe/segment, +/obj/structure/cable{ + d1 = 1; + d2 = 2; + icon_state = "1-2"; + pixel_y = 0 + }, +/obj/machinery/door/airlock/maintenance{ + req_access = null; + req_one_access = list(12,25,27,28,35) + }, +/turf/simulated/floor/plating, +/area/maintenance/bar) +"dmf" = ( +/obj/machinery/bookbinder{ + pixel_y = 0 + }, +/turf/simulated/floor/wood, +/area/library) +"dmg" = ( +/obj/machinery/light, +/obj/machinery/photocopier, +/turf/simulated/floor/wood, +/area/library) +"dmh" = ( +/obj/machinery/papershredder, +/turf/simulated/floor/wood, +/area/library) +"dmi" = ( +/obj/structure/filingcabinet, +/obj/structure/disposalpipe/segment, +/turf/simulated/floor/wood, +/area/library) +"dmj" = ( +/obj/machinery/light, +/turf/simulated/floor/wood, +/area/library) +"dmk" = ( +/obj/machinery/alarm{ + dir = 1; + pixel_y = -22 + }, +/turf/simulated/floor/wood, +/area/library) +"dml" = ( +/obj/machinery/door/window/westleft{ + name = "Library Desk Door"; + req_access = list(37) + }, +/obj/item/device/radio/intercom{ + name = "Station Intercom (General)"; + pixel_y = -21 + }, +/turf/simulated/floor/wood, +/area/library) +"dmm" = ( +/obj/machinery/libraryscanner, +/obj/machinery/newscaster{ + pixel_y = -30 + }, +/turf/simulated/floor/wood, +/area/library) +"dmn" = ( +/obj/machinery/ai_status_display{ + pixel_y = -32 + }, +/obj/structure/table/woodentable, +/obj/machinery/librarycomp{ + pixel_y = 0 + }, +/turf/simulated/floor/wood, +/area/library) +"dmo" = ( +/obj/structure/table/woodentable, +/obj/item/device/taperecorder{ + pixel_y = 0 + }, +/obj/item/device/tape/random, +/obj/item/device/tape/random, +/obj/item/device/camera, +/obj/machinery/button/windowtint{ + id = "library_window_tint"; + pixel_x = -11; + pixel_y = -24 + }, +/obj/item/device/radio/intercom{ + name = "Station Intercom (General)"; + pixel_y = -21 + }, +/turf/simulated/floor/carpet, +/area/library) +"dmp" = ( +/obj/structure/bookcase{ + name = "bookcase (Reference)" + }, +/obj/item/weapon/book/codex/lore/vir, +/obj/item/weapon/book/codex/lore/vir, +/obj/item/weapon/book/codex/lore/robutt, +/obj/item/weapon/book/codex/corp_regs, +/turf/simulated/floor/wood, +/area/library) +"dmq" = ( +/obj/structure/table/rack{ + dir = 8; + layer = 2.9 + }, +/obj/item/device/tvcamera, +/obj/machinery/light{ + dir = 4; + icon_state = "tube1"; + pixel_x = 0 + }, +/obj/machinery/firealarm{ + dir = 1; + pixel_x = 0; + pixel_y = -24 + }, +/turf/simulated/floor/carpet, +/area/library) +"dmr" = ( +/obj/structure/extinguisher_cabinet{ + pixel_x = -28; + pixel_y = 0 + }, +/turf/simulated/floor/tiled, +/area/hallway/primary/seconddeck/aft) +"dms" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/obj/machinery/atmospherics/pipe/manifold/hidden/supply{ + dir = 8 + }, +/turf/simulated/floor/tiled/monotile, +/area/hallway/primary/seconddeck/aft) +"dmt" = ( +/obj/structure/disposalpipe/segment{ + dir = 4; + icon_state = "pipe-c" + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/turf/simulated/floor/tiled, +/area/hallway/primary/seconddeck/aft) +"dmu" = ( +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/machinery/door/firedoor/glass, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/turf/simulated/floor/tiled, +/area/hallway/primary/seconddeck/aft) +"dmv" = ( +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/turf/simulated/floor/tiled, +/area/hallway/primary/seconddeck/aft) +"dmw" = ( +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 9 + }, +/obj/machinery/status_display{ + pixel_x = 0; + pixel_y = -32 + }, +/turf/simulated/floor/tiled, +/area/hallway/primary/seconddeck/aft) +"dmx" = ( +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/item/device/radio/intercom{ + name = "Station Intercom (General)"; + pixel_y = -21 + }, +/turf/simulated/floor/tiled, +/area/hallway/primary/seconddeck/aft) +"dmy" = ( +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/machinery/camera/network/civilian{ + c_tag = "CIV - Chapel Aft"; + dir = 1 + }, +/turf/simulated/floor/tiled, +/area/hallway/primary/seconddeck/aft) +"dmz" = ( +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/machinery/light, +/turf/simulated/floor/tiled, +/area/hallway/primary/seconddeck/aft) +"dmA" = ( +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/turf/simulated/floor/tiled, +/area/hallway/primary/seconddeck/aft) +"dmB" = ( +/obj/structure/disposalpipe/segment{ + dir = 8; + icon_state = "pipe-c" + }, +/obj/machinery/atmospherics/unary/vent_scrubber/on{ + dir = 1 + }, +/obj/machinery/ai_status_display{ + pixel_y = -32 + }, +/turf/simulated/floor/tiled, +/area/hallway/primary/seconddeck/aft) +"dmC" = ( +/obj/machinery/alarm{ + dir = 1; + pixel_y = -22 + }, +/obj/effect/floor_decal/borderfloor{ + dir = 4 + }, +/obj/effect/floor_decal/corner/green/border{ + dir = 4 + }, +/turf/simulated/floor/tiled, +/area/hallway/primary/seconddeck/aft) +"dmD" = ( +/obj/structure/table/glass, +/turf/simulated/floor/tiled/dark, +/area/hallway/primary/seconddeck/aft) +"dmE" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/obj/structure/cable/green{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/obj/machinery/door/firedoor, +/obj/machinery/door/airlock/maintenance{ + req_access = null; + req_one_access = list(12,25,27,28,35) + }, +/turf/simulated/floor/plating, +/area/maintenance/locker) +"dmF" = ( +/turf/simulated/wall, +/area/maintenance/locker) +"dmG" = ( +/turf/simulated/wall/r_wall, +/area/maintenance/locker) +"dmH" = ( +/turf/simulated/shuttle/wall, +/area/shuttle/cryo/station) +"dmI" = ( +/turf/simulated/shuttle/wall/no_join{ + base_state = "orange"; + icon = 'icons/turf/shuttle_orange.dmi'; + icon_state = "orange" + }, +/area/shuttle/cryo/station) +"dmJ" = ( +/obj/structure/shuttle/engine/propulsion{ + icon_state = "burst_r"; + dir = 4 + }, +/turf/simulated/floor/airless, +/turf/simulated/shuttle/plating/airless/carry, +/area/shuttle/cryo/station) +"dmK" = ( +/turf/simulated/wall/r_wall, +/area/hallway/secondary/docking_hallway2) +"dmL" = ( +/obj/structure/disposalpipe/segment, +/obj/structure/cable{ + d1 = 1; + d2 = 2; + icon_state = "1-2"; + pixel_y = 0 + }, +/turf/simulated/floor/tiled/dark, +/area/hallway/secondary/docking_hallway2) +"dmM" = ( +/obj/structure/closet/emcloset, +/turf/simulated/floor/tiled/dark, +/area/hallway/secondary/docking_hallway2) +"dmN" = ( +/obj/machinery/ai_status_display, +/turf/simulated/wall, +/area/library) +"dmO" = ( +/obj/machinery/door/firedoor/border_only, +/obj/effect/wingrille_spawn/reinforced, +/turf/simulated/floor/plating, +/area/library) +"dmP" = ( +/obj/structure/cable/green{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/obj/machinery/door/firedoor/glass, +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/obj/machinery/door/airlock/glass{ + name = "Library" + }, +/turf/simulated/floor/tiled/steel_grid, +/area/library) +"dmQ" = ( +/obj/machinery/door/firedoor/border_only, +/obj/effect/wingrille_spawn/reinforced, +/obj/structure/disposalpipe/segment, +/turf/simulated/floor/plating, +/area/library) +"dmR" = ( +/obj/structure/sign/directions/cryo{ + dir = 8 + }, +/turf/simulated/wall, +/area/library) +"dmS" = ( +/obj/machinery/door/firedoor/border_only, +/turf/simulated/floor/tiled, +/area/hallway/primary/seconddeck/aft) +"dmT" = ( +/obj/machinery/door/firedoor/border_only, +/obj/structure/disposalpipe/segment, +/obj/effect/floor_decal/borderfloor/corner, +/obj/effect/floor_decal/corner/green/bordercorner, +/turf/simulated/floor/tiled, +/area/hallway/primary/seconddeck/aft) +"dmU" = ( +/turf/simulated/wall, +/area/crew_quarters/seconddeck/locker/locker_toilet) +"dmV" = ( +/obj/random/obstruction, +/turf/simulated/floor/plating, +/area/crew_quarters/seconddeck/locker) +"dmW" = ( +/obj/item/clothing/gloves/rainbow, +/obj/item/clothing/head/soft/rainbow, +/obj/item/clothing/shoes/rainbow, +/obj/item/clothing/under/color/rainbow, +/obj/item/weapon/bedsheet/rainbow, +/obj/item/weapon/pen/crayon/rainbow, +/turf/simulated/floor, +/area/crew_quarters/seconddeck/locker) +"dmX" = ( +/turf/simulated/wall, +/area/crew_quarters/seconddeck/locker) +"dmY" = ( +/obj/item/clothing/head/soft/mime, +/obj/item/clothing/mask/gas/mime, +/obj/item/clothing/shoes/mime, +/obj/item/clothing/under/mime, +/obj/structure/closet/crate, +/turf/simulated/floor/plating, +/area/crew_quarters/seconddeck/locker) +"dmZ" = ( +/obj/structure/bed/padded, +/obj/item/weapon/bedsheet/mime, +/turf/simulated/floor/plating, +/area/crew_quarters/seconddeck/locker) +"dna" = ( +/turf/simulated/floor/plating, +/area/crew_quarters/seconddeck/locker) +"dnb" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/obj/structure/cable/green{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/obj/structure/catwalk, +/turf/simulated/floor/plating, +/area/maintenance/locker) +"dnc" = ( +/obj/machinery/floodlight, +/turf/simulated/floor/plating, +/area/maintenance/locker) +"dnd" = ( +/obj/machinery/alarm{ + pixel_y = 22 + }, +/obj/machinery/space_heater, +/turf/simulated/floor/plating, +/area/maintenance/locker) +"dne" = ( +/obj/structure/closet, +/obj/item/weapon/lipstick/purple, +/obj/random/maintenance/engineering, +/obj/random/maintenance/clean, +/obj/random/maintenance/clean, +/obj/random/maintenance/clean, +/turf/simulated/floor/plating, +/area/maintenance/locker) +"dnf" = ( +/obj/machinery/door/firedoor/border_only, +/obj/effect/wingrille_spawn/reinforced, +/turf/simulated/floor/plating, +/area/maintenance/locker) +"dng" = ( +/turf/simulated/shuttle/wall/no_join, +/area/shuttle/cryo/station) +"dnh" = ( +/obj/effect/floor_decal/chapel{ + icon_state = "chapel"; + dir = 8 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, +/obj/structure/table/bench/padded, +/turf/simulated/floor/tiled/dark, +/area/chapel/main) +"dni" = ( +/turf/simulated/shuttle/wall/hard_corner, +/area/shuttle/cryo/station) +"dnj" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 6 + }, +/obj/structure/disposalpipe/segment, +/obj/structure/cable{ + d1 = 1; + d2 = 2; + icon_state = "1-2"; + pixel_y = 0 + }, +/obj/machinery/firealarm{ + dir = 8; + pixel_x = -24 + }, +/obj/effect/floor_decal/borderfloor{ + dir = 1 + }, +/obj/effect/floor_decal/corner/green/border{ + dir = 1 + }, +/turf/simulated/floor/tiled, +/area/hallway/secondary/docking_hallway2) +"dnk" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, +/obj/effect/floor_decal/borderfloor{ + dir = 1 + }, +/obj/effect/floor_decal/corner/green/border{ + dir = 1 + }, +/turf/simulated/floor/tiled, +/area/hallway/secondary/docking_hallway2) +"dnl" = ( +/obj/machinery/atmospherics/unary/vent_pump/on, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, +/obj/effect/floor_decal/borderfloor{ + dir = 1 + }, +/obj/effect/floor_decal/corner/green/border{ + dir = 1 + }, +/turf/simulated/floor/tiled, +/area/hallway/secondary/docking_hallway2) +"dnm" = ( +/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{ + dir = 1 + }, +/obj/effect/floor_decal/borderfloor/corner{ + dir = 1 + }, +/obj/effect/floor_decal/corner/green/bordercorner{ + dir = 1 + }, +/turf/simulated/floor/tiled, +/area/hallway/secondary/docking_hallway2) +"dnn" = ( +/obj/structure/cable/green{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/obj/machinery/atmospherics/pipe/manifold4w/hidden/scrubbers, +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/effect/floor_decal/steeldecal/steel_decals4{ + dir = 4 + }, +/obj/effect/floor_decal/steeldecal/steel_decals4{ + dir = 9 + }, +/turf/simulated/floor/tiled, +/area/hallway/secondary/docking_hallway2) +"dno" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, +/obj/structure/disposalpipe/segment, +/obj/machinery/light{ + dir = 1 + }, +/obj/effect/floor_decal/borderfloor/corner{ + dir = 4 + }, +/obj/effect/floor_decal/corner/green/bordercorner{ + dir = 4 + }, +/turf/simulated/floor/tiled, +/area/hallway/secondary/docking_hallway2) +"dnp" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, +/obj/structure/cable/green{ + d2 = 2; + icon_state = "0-2" + }, +/obj/machinery/power/apc{ + dir = 1; + name = "north bump"; + pixel_x = 0; + pixel_y = 24 + }, +/obj/machinery/light_switch{ + pixel_x = 11; + pixel_y = 24 + }, +/obj/effect/floor_decal/borderfloor{ + dir = 1 + }, +/obj/effect/floor_decal/corner/green/border{ + dir = 1 + }, +/turf/simulated/floor/tiled, +/area/hallway/secondary/docking_hallway2) +"dnq" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, +/obj/machinery/door/firedoor/border_only, +/obj/effect/floor_decal/borderfloor{ + dir = 1 + }, +/obj/effect/floor_decal/corner/green/border{ + dir = 1 + }, +/turf/simulated/floor/tiled, +/area/hallway/secondary/docking_hallway2) +"dnr" = ( +/obj/machinery/atmospherics/unary/vent_pump/on, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, +/obj/machinery/firealarm{ + dir = 2; + layer = 3.3; + pixel_x = 0; + pixel_y = 26 + }, +/obj/effect/floor_decal/borderfloor/corner{ + dir = 1 + }, +/obj/effect/floor_decal/corner/green/bordercorner{ + dir = 1 + }, +/turf/simulated/floor/tiled, +/area/hallway/secondary/docking_hallway2) +"dns" = ( +/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{ + dir = 1 + }, +/turf/simulated/floor/tiled, +/area/hallway/secondary/docking_hallway2) +"dnt" = ( +/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{ + dir = 1 + }, +/obj/machinery/alarm{ + pixel_y = 22 + }, +/turf/simulated/floor/tiled, +/area/hallway/secondary/docking_hallway2) +"dnu" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, +/turf/simulated/floor/tiled, +/area/hallway/secondary/docking_hallway2) +"dnv" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, +/obj/effect/floor_decal/steeldecal/steel_decals4, +/obj/effect/floor_decal/steeldecal/steel_decals4{ + dir = 10 + }, +/turf/simulated/floor/tiled, +/area/hallway/secondary/docking_hallway2) +"dnw" = ( +/obj/machinery/door/firedoor/border_only, +/obj/machinery/door/airlock/glass, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, +/turf/simulated/floor/tiled/steel_grid, +/area/hallway/secondary/docking_hallway2) +"dnx" = ( +/obj/machinery/atmospherics/unary/vent_pump/on, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, +/obj/effect/floor_decal/steeldecal/steel_decals4{ + dir = 6 + }, +/obj/effect/floor_decal/steeldecal/steel_decals4{ + dir = 1 + }, +/turf/simulated/floor/tiled, +/area/hallway/primary/seconddeck/aft) +"dny" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 10 + }, +/obj/machinery/firealarm{ + dir = 2; + layer = 3.3; + pixel_x = 0; + pixel_y = 26 + }, +/turf/simulated/floor/tiled, +/area/hallway/primary/seconddeck/aft) +"dnz" = ( +/obj/effect/floor_decal/borderfloor/corner{ + dir = 4 + }, +/obj/effect/floor_decal/corner/green/bordercorner{ + dir = 4 + }, +/turf/simulated/floor/tiled, +/area/hallway/primary/seconddeck/aft) +"dnA" = ( +/obj/effect/floor_decal/borderfloor{ + dir = 1 + }, +/obj/effect/floor_decal/corner/green/border{ + dir = 1 + }, +/turf/simulated/floor/tiled, +/area/hallway/primary/seconddeck/aft) +"dnB" = ( +/obj/effect/floor_decal/borderfloor/corner{ + dir = 1 + }, +/obj/effect/floor_decal/corner/green/bordercorner{ + dir = 1 + }, +/turf/simulated/floor/tiled, +/area/hallway/primary/seconddeck/aft) +"dnC" = ( +/obj/effect/floor_decal/industrial/warning{ + icon_state = "warning"; + dir = 4 + }, +/obj/machinery/station_map{ + dir = 4; + pixel_x = -32 + }, +/turf/simulated/floor/tiled, +/area/hallway/primary/firstdeck/aft) +"dnD" = ( +/obj/machinery/recharge_station, +/obj/machinery/light/small{ + dir = 8 + }, +/turf/simulated/floor/tiled/freezer, +/area/crew_quarters/seconddeck/locker/locker_toilet) +"dnE" = ( +/obj/machinery/door/airlock{ + name = "Unit 2" + }, +/turf/simulated/floor/tiled/freezer, +/area/crew_quarters/seconddeck/locker/locker_toilet) +"dnF" = ( +/obj/machinery/firealarm{ + pixel_y = 24 + }, +/turf/simulated/floor/tiled/freezer, +/area/crew_quarters/seconddeck/locker/locker_toilet) +"dnG" = ( +/obj/machinery/light{ + dir = 1 + }, +/obj/machinery/status_display{ + pixel_x = 0; + pixel_y = 32 + }, +/turf/simulated/floor/tiled/freezer, +/area/crew_quarters/seconddeck/locker/locker_toilet) +"dnH" = ( +/obj/structure/sink{ + pixel_y = 16 + }, +/obj/structure/mirror{ + pixel_x = 0; + pixel_y = 32 + }, +/turf/simulated/floor/tiled/freezer, +/area/crew_quarters/seconddeck/locker/locker_toilet) +"dnI" = ( +/obj/structure/sink{ + pixel_y = 16 + }, +/obj/structure/mirror{ + pixel_x = 0; + pixel_y = 32 + }, +/obj/item/device/radio/intercom{ + dir = 4; + name = "Station Intercom (General)"; + pixel_x = 21 + }, +/turf/simulated/floor/tiled/freezer, +/area/crew_quarters/seconddeck/locker/locker_toilet) +"dnJ" = ( +/obj/machinery/shower{ + dir = 4; + icon_state = "shower"; + pixel_x = 5; + pixel_y = 0 + }, +/obj/structure/curtain/open/shower, +/obj/item/device/radio/intercom{ + dir = 8; + name = "Station Intercom (General)"; + pixel_x = -21 + }, +/turf/simulated/floor/tiled/freezer, +/area/crew_quarters/seconddeck/locker/locker_toilet) +"dnK" = ( +/obj/machinery/shower{ + dir = 8; + icon_state = "shower"; + pixel_x = -5; + pixel_y = 0 + }, +/obj/structure/curtain/open/shower, +/turf/simulated/floor/tiled/freezer, +/area/crew_quarters/seconddeck/locker/locker_toilet) +"dnL" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/obj/structure/cable/green{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/obj/machinery/light/small{ + dir = 8 + }, +/obj/structure/catwalk, +/turf/simulated/floor/plating, +/area/maintenance/locker) +"dnM" = ( +/turf/simulated/floor/plating, +/area/maintenance/locker) +"dnN" = ( +/obj/machinery/door/firedoor/border_only, +/obj/machinery/door/airlock/maintenance{ + name = "Firefighting equipment"; + req_access = list(12) + }, +/turf/simulated/floor/plating, +/area/maintenance/locker) +"dnO" = ( +/obj/machinery/light/small{ + dir = 4; + pixel_y = 0 + }, +/turf/simulated/floor/plating, +/area/maintenance/locker) +"dnP" = ( +/obj/machinery/ai_status_display, +/turf/simulated/shuttle/wall/no_join, +/area/shuttle/cryo/station) +"dnQ" = ( +/obj/machinery/cryopod{ + dir = 2; + time_till_despawn = 4500 + }, +/obj/effect/floor_decal/industrial/warning{ + dir = 4 + }, +/obj/effect/floor_decal/industrial/warning{ + icon_state = "warning"; + dir = 8 + }, +/obj/machinery/light{ + dir = 8 + }, +/turf/simulated/shuttle/floor, +/area/shuttle/cryo/station) +"dnR" = ( +/obj/effect/floor_decal/industrial/warning{ + dir = 4 + }, +/obj/effect/floor_decal/industrial/warning{ + icon_state = "warning"; + dir = 8 + }, +/obj/machinery/cryopod{ + dir = 2; + time_till_despawn = 4500 + }, +/turf/simulated/shuttle/floor, +/area/shuttle/cryo/station) +"dnS" = ( +/obj/structure/closet/emcloset, +/obj/item/weapon/storage/toolbox/emergency, +/obj/machinery/light{ + dir = 4; + icon_state = "tube1"; + pixel_x = 0 + }, +/turf/simulated/shuttle/floor, +/area/shuttle/cryo/station) +"dnT" = ( +/obj/structure/sign/directions/cryo{ + dir = 8 + }, +/turf/simulated/wall/r_wall, +/area/hallway/secondary/docking_hallway2) +"dnU" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/obj/effect/floor_decal/industrial/warning/corner{ + dir = 8 + }, +/obj/structure/disposalpipe/segment{ + dir = 1; + icon_state = "pipe-c" + }, +/obj/structure/cable{ + d1 = 1; + d2 = 2; + icon_state = "1-2"; + pixel_y = 0 + }, +/turf/simulated/floor/tiled, +/area/hallway/secondary/docking_hallway2) +"dnV" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 6 + }, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/turf/simulated/floor/tiled, +/area/hallway/secondary/docking_hallway2) +"dnW" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/effect/floor_decal/borderfloor/corner, +/obj/effect/floor_decal/corner/green/bordercorner, +/turf/simulated/floor/tiled, +/area/hallway/secondary/docking_hallway2) +"dnX" = ( +/obj/machinery/atmospherics/pipe/manifold/hidden/supply, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/machinery/light, +/obj/effect/floor_decal/borderfloor, +/obj/effect/floor_decal/corner/green/border, +/turf/simulated/floor/tiled, +/area/hallway/secondary/docking_hallway2) +"dnY" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/effect/floor_decal/borderfloor, +/obj/effect/floor_decal/corner/green/border, +/turf/simulated/floor/tiled, +/area/hallway/secondary/docking_hallway2) +"dnZ" = ( +/obj/machinery/atmospherics/unary/vent_scrubber/on{ + dir = 1 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/obj/structure/disposalpipe/junction{ + dir = 8; + icon_state = "pipe-j2" + }, +/obj/effect/floor_decal/borderfloor/corner{ + dir = 8 + }, +/obj/effect/floor_decal/corner/green/bordercorner{ + dir = 8 + }, +/turf/simulated/floor/tiled, +/area/hallway/secondary/docking_hallway2) +"doa" = ( +/obj/structure/cable/green{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/obj/structure/cable/green{ + d1 = 1; + d2 = 4; + icon_state = "1-4" + }, +/obj/machinery/atmospherics/pipe/manifold4w/hidden/supply, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/effect/floor_decal/steeldecal/steel_decals4{ + dir = 8 + }, +/obj/effect/floor_decal/steeldecal/steel_decals4{ + dir = 5 + }, +/turf/simulated/floor/tiled, +/area/hallway/secondary/docking_hallway2) +"dob" = ( +/obj/structure/cable/green{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/obj/structure/disposalpipe/sortjunction{ + dir = 8; + icon_state = "pipe-j1s"; + name = "Library"; + sortType = "Library" + }, +/obj/machinery/camera/network/second_deck{ + c_tag = "Second Deck - Civilian Hallway One"; + dir = 1 + }, +/obj/effect/floor_decal/borderfloor/corner, +/obj/effect/floor_decal/corner/green/bordercorner, +/turf/simulated/floor/tiled, +/area/hallway/secondary/docking_hallway2) +"doc" = ( +/obj/structure/cable/green{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/obj/structure/cable/green{ + d1 = 1; + d2 = 8; + icon_state = "1-8" + }, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/effect/floor_decal/borderfloor, +/obj/effect/floor_decal/corner/green/border, +/turf/simulated/floor/tiled, +/area/hallway/secondary/docking_hallway2) +"dod" = ( +/obj/structure/cable/green{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/obj/machinery/door/firedoor/glass, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/effect/floor_decal/borderfloor, +/obj/effect/floor_decal/corner/green/border, +/turf/simulated/floor/tiled, +/area/hallway/secondary/docking_hallway2) +"doe" = ( +/obj/structure/cable/green{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/obj/machinery/atmospherics/pipe/manifold/hidden/supply, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/effect/floor_decal/borderfloor/corner{ + dir = 8 + }, +/obj/effect/floor_decal/corner/green/bordercorner{ + dir = 8 + }, +/turf/simulated/floor/tiled, +/area/hallway/secondary/docking_hallway2) +"dof" = ( +/obj/structure/cable/green{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/obj/machinery/atmospherics/unary/vent_scrubber/on{ + dir = 1 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/turf/simulated/floor/tiled, +/area/hallway/secondary/docking_hallway2) +"dog" = ( +/obj/structure/cable/green{ + d1 = 2; + d2 = 8; + icon_state = "2-8" + }, +/obj/structure/cable/green{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/obj/machinery/atmospherics/pipe/manifold/hidden/supply{ + dir = 1 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/turf/simulated/floor/tiled, +/area/hallway/secondary/docking_hallway2) +"doh" = ( +/obj/structure/cable/green{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/turf/simulated/floor/tiled, +/area/hallway/secondary/docking_hallway2) +"doi" = ( +/obj/structure/cable/green{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/obj/structure/disposalpipe/sortjunction/flipped{ + dir = 8; + name = "Primary Tool Storage"; + sortType = "Primary Tool Storage" + }, +/obj/effect/floor_decal/steeldecal/steel_decals4, +/obj/effect/floor_decal/steeldecal/steel_decals4{ + dir = 10 + }, +/turf/simulated/floor/tiled, +/area/hallway/secondary/docking_hallway2) +"doj" = ( +/obj/machinery/door/firedoor/glass, +/obj/machinery/door/airlock/glass, +/obj/structure/cable/green{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/turf/simulated/floor/tiled/steel_grid, +/area/hallway/secondary/docking_hallway2) +"dok" = ( +/obj/structure/cable/green{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/obj/machinery/atmospherics/pipe/manifold/hidden/supply, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/effect/floor_decal/steeldecal/steel_decals4{ + dir = 6 + }, +/obj/effect/floor_decal/steeldecal/steel_decals4{ + dir = 1 + }, +/turf/simulated/floor/tiled, +/area/hallway/primary/seconddeck/aft) +"dol" = ( +/obj/structure/cable/green{ + d1 = 2; + d2 = 8; + icon_state = "2-8" + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 10 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/turf/simulated/floor/tiled, +/area/hallway/primary/seconddeck/aft) +"dom" = ( +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/turf/simulated/floor/tiled/monotile, +/area/hallway/primary/seconddeck/aft) +"don" = ( +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/machinery/atmospherics/unary/vent_pump/on{ + dir = 4 + }, +/turf/simulated/floor/tiled/monotile, +/area/hallway/primary/seconddeck/aft) +"doo" = ( +/obj/structure/disposalpipe/sortjunction/flipped{ + dir = 8; + name = "Locker Room"; + sortType = "Locker Room" + }, +/obj/machinery/atmospherics/pipe/manifold/hidden/supply{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/turf/simulated/floor/tiled/monotile, +/area/hallway/primary/seconddeck/aft) +"dop" = ( +/obj/structure/disposalpipe/segment{ + dir = 8; + icon_state = "pipe-c" + }, +/obj/structure/cable{ + icon_state = "0-2"; + d2 = 2 + }, +/obj/machinery/power/apc{ + dir = 4; + name = "east bump"; + pixel_x = 24 + }, +/obj/effect/floor_decal/borderfloor{ + dir = 4 + }, +/obj/effect/floor_decal/corner/green/border{ + dir = 4 + }, +/turf/simulated/floor/tiled, +/area/hallway/primary/seconddeck/aft) +"doq" = ( +/obj/machinery/atmospherics/unary/vent_scrubber/on{ + dir = 4 + }, +/turf/simulated/floor/tiled/freezer, +/area/crew_quarters/seconddeck/locker/locker_toilet) +"dor" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 6 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 10 + }, +/turf/simulated/floor/tiled/freezer, +/area/crew_quarters/seconddeck/locker/locker_toilet) +"dos" = ( +/obj/machinery/atmospherics/unary/vent_pump/on{ + dir = 8 + }, +/turf/simulated/floor/tiled/freezer, +/area/crew_quarters/seconddeck/locker/locker_toilet) +"dot" = ( +/obj/effect/floor_decal/steeldecal/steel_decals4, +/obj/effect/floor_decal/steeldecal/steel_decals4{ + dir = 10 + }, +/turf/simulated/floor/tiled/freezer, +/area/crew_quarters/seconddeck/locker/locker_toilet) +"dou" = ( +/obj/machinery/door/firedoor/border_only, +/obj/machinery/door/airlock{ + name = "Unisex Showers" + }, +/turf/simulated/floor/tiled/steel_grid, +/area/crew_quarters/seconddeck/locker/locker_toilet) +"dov" = ( +/obj/effect/floor_decal/steeldecal/steel_decals4{ + dir = 6 + }, +/obj/effect/floor_decal/steeldecal/steel_decals4{ + dir = 1 + }, +/turf/simulated/floor/tiled/freezer, +/area/crew_quarters/seconddeck/locker/locker_toilet) +"dow" = ( +/obj/effect/landmark{ + name = "xeno_spawn"; + pixel_x = -1 + }, +/obj/item/weapon/bikehorn/rubberducky, +/obj/machinery/alarm{ + dir = 8; + pixel_x = 22; + pixel_y = 0 + }, +/obj/machinery/light{ + dir = 4; + icon_state = "tube1"; + pixel_x = 0 + }, +/turf/simulated/floor/tiled/freezer, +/area/crew_quarters/seconddeck/locker/locker_toilet) +"dox" = ( +/obj/machinery/vending/cola, +/turf/simulated/floor/tiled/dark, +/area/crew_quarters/seconddeck/locker) +"doy" = ( +/obj/machinery/atmospherics/unary/vent_pump/on{ + dir = 4 + }, +/obj/machinery/ai_status_display{ + pixel_y = 32 + }, +/turf/simulated/floor/carpet, +/area/crew_quarters/seconddeck/locker) +"doz" = ( +/obj/structure/bed/chair{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/obj/machinery/firealarm{ + pixel_y = 24 + }, +/turf/simulated/floor/carpet, +/area/crew_quarters/seconddeck/locker) +"doA" = ( +/obj/structure/table/glass, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 10 + }, +/obj/machinery/computer/security/telescreen/entertainment{ + icon_state = "frame"; + pixel_x = 0; + pixel_y = 32 + }, +/obj/item/weapon/storage/toolbox/mechanical{ + pixel_x = -2; + pixel_y = -1 + }, +/obj/machinery/camera/network/civilian{ + c_tag = "Civ - Locker Room Two"; + dir = 2 + }, +/obj/machinery/light{ + dir = 1 + }, +/turf/simulated/floor/carpet, +/area/crew_quarters/seconddeck/locker) +"doB" = ( +/obj/structure/bed/chair{ + dir = 8 + }, +/obj/machinery/alarm{ + pixel_y = 23 + }, +/turf/simulated/floor/carpet, +/area/crew_quarters/seconddeck/locker) +"doC" = ( +/obj/machinery/status_display{ + pixel_x = 0; + pixel_y = 32 + }, +/turf/simulated/floor/carpet, +/area/crew_quarters/seconddeck/locker) +"doD" = ( +/obj/machinery/lapvend, +/turf/simulated/floor/tiled/dark, +/area/crew_quarters/seconddeck/locker) +"doE" = ( +/obj/structure/table/rack{ + dir = 1 + }, +/obj/item/clothing/suit/fire/firefighter, +/obj/item/weapon/tank/oxygen, +/obj/item/clothing/mask/gas, +/obj/item/weapon/extinguisher, +/obj/item/clothing/head/hardhat/red, +/obj/item/clothing/glasses/meson, +/obj/random/maintenance/clean, +/obj/random/maintenance/clean, +/obj/random/maintenance/cargo, +/obj/random/maintenance/cargo, +/turf/simulated/floor/plating, +/area/maintenance/locker) +"doF" = ( +/obj/structure/table/steel, +/obj/item/weapon/storage/box/lights/mixed, +/obj/item/device/t_scanner, +/turf/simulated/floor/plating, +/area/maintenance/locker) +"doG" = ( +/obj/machinery/computer/cryopod{ + density = 0; + pixel_x = -32; + pixel_y = 0 + }, +/obj/effect/landmark{ + name = "JoinLateCryo" + }, +/turf/simulated/shuttle/floor, +/area/shuttle/cryo/station) +"doH" = ( +/obj/effect/landmark{ + name = "JoinLateCryo" + }, +/turf/simulated/shuttle/floor, +/area/shuttle/cryo/station) +"doI" = ( +/turf/simulated/shuttle/floor, +/area/shuttle/cryo/station) +"doJ" = ( +/obj/machinery/door/airlock/external{ + frequency = 1380; + id_tag = "cryostorage_shuttle_hatch"; + name = "Cryogenic Storage Hatch" + }, +/turf/simulated/shuttle/floor, +/area/shuttle/cryo/station) +"doK" = ( +/obj/machinery/door/airlock/glass{ + name = "Cryogenic Storage" + }, +/turf/simulated/floor/tiled/techfloor, +/area/hallway/secondary/docking_hallway2) +"doL" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/obj/effect/floor_decal/industrial/warning{ + dir = 8 + }, +/obj/structure/cable{ + d1 = 1; + d2 = 2; + icon_state = "1-2"; + pixel_y = 0 + }, +/turf/simulated/floor/tiled, +/area/hallway/secondary/docking_hallway2) +"doM" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/effect/floor_decal/borderfloor/corner, +/obj/effect/floor_decal/corner/green/bordercorner, +/turf/simulated/floor/tiled, +/area/hallway/secondary/docking_hallway2) +"doN" = ( +/obj/structure/flora/pottedplant/decorative, +/turf/simulated/floor/tiled/dark, +/area/hallway/secondary/docking_hallway2) +"doO" = ( +/turf/simulated/wall, +/area/hallway/secondary/entry/docking_lounge) +"doP" = ( +/obj/machinery/door/firedoor/border_only, +/obj/effect/wingrille_spawn/reinforced, +/turf/simulated/floor/plating, +/area/hallway/secondary/entry/docking_lounge) +"doQ" = ( +/obj/machinery/door/firedoor/border_only, +/obj/effect/wingrille_spawn/reinforced, +/obj/structure/disposalpipe/segment, +/turf/simulated/floor/plating, +/area/hallway/secondary/entry/docking_lounge) +"doR" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/machinery/door/firedoor/glass, +/obj/structure/cable/green{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/obj/machinery/door/airlock/glass, +/turf/simulated/floor/tiled/steel_grid, +/area/hallway/secondary/entry/docking_lounge) +"doS" = ( +/obj/structure/closet/emcloset, +/obj/effect/floor_decal/borderfloor{ + dir = 8 + }, +/obj/effect/floor_decal/corner/green/border{ + dir = 8 + }, +/turf/simulated/floor/tiled, +/area/hallway/secondary/docking_hallway2) +"doT" = ( +/turf/simulated/floor/tiled, +/area/hallway/secondary/docking_hallway2) +"doU" = ( +/obj/structure/cable/green{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/obj/effect/floor_decal/steeldecal/steel_decals4{ + dir = 8 + }, +/obj/effect/floor_decal/steeldecal/steel_decals4{ + dir = 5 + }, +/turf/simulated/floor/tiled, +/area/hallway/secondary/docking_hallway2) +"doV" = ( +/obj/machinery/light, +/turf/simulated/floor/tiled, +/area/hallway/secondary/docking_hallway2) +"doW" = ( +/obj/structure/disposalpipe/segment, +/obj/effect/floor_decal/borderfloor/corner, +/obj/effect/floor_decal/corner/yellow/bordercorner, +/turf/simulated/floor/tiled, +/area/hallway/secondary/docking_hallway2) +"doX" = ( +/obj/machinery/door/firedoor/border_only, +/obj/effect/wingrille_spawn/reinforced, +/turf/simulated/floor/plating, +/area/hallway/secondary/docking_hallway2) +"doY" = ( +/obj/effect/floor_decal/borderfloor/corner{ + dir = 8 + }, +/obj/effect/floor_decal/corner/red/bordercorner{ + dir = 8 + }, +/turf/simulated/floor/tiled, +/area/hallway/primary/seconddeck/aft) +"doZ" = ( +/obj/structure/cable/green{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{ + dir = 8 + }, +/obj/effect/floor_decal/steeldecal/steel_decals4{ + dir = 8 + }, +/obj/effect/floor_decal/steeldecal/steel_decals4{ + dir = 5 + }, +/turf/simulated/floor/tiled, +/area/hallway/primary/seconddeck/aft) +"dpa" = ( +/obj/machinery/atmospherics/unary/vent_scrubber/on{ + dir = 8 + }, +/obj/effect/floor_decal/borderfloor/corner, +/obj/effect/floor_decal/corner/red/bordercorner, +/turf/simulated/floor/tiled, +/area/hallway/primary/seconddeck/aft) +"dpb" = ( +/obj/effect/floor_decal/borderfloor, +/obj/effect/floor_decal/corner/red/border, +/turf/simulated/floor/tiled, +/area/hallway/primary/seconddeck/aft) +"dpc" = ( +/obj/structure/disposalpipe/segment, +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/turf/simulated/floor/tiled/monotile, +/area/hallway/primary/seconddeck/aft) +"dpd" = ( +/obj/structure/cable{ + d1 = 1; + d2 = 2; + icon_state = "1-2"; + pixel_y = 0 + }, +/obj/effect/floor_decal/borderfloor{ + dir = 4 + }, +/obj/effect/floor_decal/corner/green/border{ + dir = 4 + }, +/turf/simulated/floor/tiled, +/area/hallway/primary/seconddeck/aft) +"dpe" = ( +/obj/structure/toilet{ + dir = 4 + }, +/obj/machinery/light/small{ + dir = 8 + }, +/turf/simulated/floor/tiled/freezer, +/area/crew_quarters/seconddeck/locker/locker_toilet) +"dpf" = ( +/obj/machinery/door/airlock{ + name = "Unit 1" + }, +/turf/simulated/floor/tiled/freezer, +/area/crew_quarters/seconddeck/locker/locker_toilet) +"dpg" = ( +/obj/machinery/alarm{ + dir = 1; + pixel_y = -22 + }, +/turf/simulated/floor/tiled/freezer, +/area/crew_quarters/seconddeck/locker/locker_toilet) +"dph" = ( +/obj/structure/cable/green{ + d1 = 2; + d2 = 4; + icon_state = "2-4" + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/obj/effect/floor_decal/steeldecal/steel_decals4{ + dir = 8 + }, +/obj/effect/floor_decal/steeldecal/steel_decals4{ + dir = 5 + }, +/turf/simulated/floor/tiled/freezer, +/area/crew_quarters/seconddeck/locker/locker_toilet) +"dpi" = ( +/obj/structure/table/standard, +/obj/item/weapon/towel, +/obj/item/weapon/towel, +/obj/item/weapon/towel, +/obj/item/weapon/towel, +/obj/item/weapon/towel, +/obj/item/weapon/towel, +/obj/random/soap, +/obj/random/soap, +/obj/machinery/power/apc{ + dir = 2; + name = "south bump"; + pixel_y = -24 + }, +/obj/machinery/light_switch{ + pixel_x = 12; + pixel_y = -24 + }, +/obj/structure/cable/green{ + d2 = 8; + icon_state = "0-8" + }, +/turf/simulated/floor/tiled/freezer, +/area/crew_quarters/seconddeck/locker/locker_toilet) +"dpj" = ( +/obj/structure/undies_wardrobe, +/obj/structure/extinguisher_cabinet{ + pixel_x = 28; + pixel_y = 0 + }, +/turf/simulated/floor/tiled/freezer, +/area/crew_quarters/seconddeck/locker/locker_toilet) +"dpk" = ( +/obj/machinery/shower{ + dir = 4; + icon_state = "shower"; + pixel_x = 5; + pixel_y = 0 + }, +/obj/structure/curtain/open/shower, +/turf/simulated/floor/tiled/freezer, +/area/crew_quarters/seconddeck/locker/locker_toilet) +"dpl" = ( +/obj/machinery/vending/fitness, +/turf/simulated/floor/tiled/dark, +/area/crew_quarters/seconddeck/locker) +"dpm" = ( +/turf/simulated/floor/carpet, +/area/crew_quarters/seconddeck/locker) +"dpn" = ( +/obj/structure/bed/chair{ + dir = 4 + }, +/turf/simulated/floor/carpet, +/area/crew_quarters/seconddeck/locker) +"dpo" = ( +/obj/structure/table/glass, +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 6 + }, +/obj/item/weapon/tape_roll, +/obj/item/weapon/coin/silver, +/turf/simulated/floor/carpet, +/area/crew_quarters/seconddeck/locker) +"dpp" = ( +/obj/structure/bed/chair{ + dir = 8 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, +/turf/simulated/floor/carpet, +/area/crew_quarters/seconddeck/locker) +"dpq" = ( +/obj/machinery/atmospherics/unary/vent_scrubber/on{ + dir = 8 + }, +/turf/simulated/floor/carpet, +/area/crew_quarters/seconddeck/locker) +"dpr" = ( +/obj/machinery/vending/cigarette, +/turf/simulated/floor/tiled/dark, +/area/crew_quarters/seconddeck/locker) +"dps" = ( +/obj/item/trash/candle, +/turf/simulated/floor/plating, +/area/maintenance/locker) +"dpt" = ( +/obj/machinery/embedded_controller/radio/simple_docking_controller/escape_pod{ + frequency = 1380; + id_tag = "cryostorage_shuttle"; + name = "cryostorage controller"; + pixel_x = -26; + pixel_y = 0; + req_access = list(19); + tag_door = "cryostorage_shuttle_hatch" + }, +/obj/effect/landmark{ + name = "JoinLateCryo" + }, +/turf/simulated/shuttle/floor, +/area/shuttle/cryo/station) +"dpu" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/effect/floor_decal/borderfloor{ + dir = 4 + }, +/obj/effect/floor_decal/corner/green/border{ + dir = 4 + }, +/turf/simulated/floor/tiled, +/area/hallway/secondary/docking_hallway2) +"dpv" = ( +/obj/structure/bed/chair, +/turf/simulated/floor/tiled/dark, +/area/hallway/secondary/docking_hallway2) +"dpw" = ( +/obj/machinery/alarm{ + dir = 4; + icon_state = "alarm0"; + pixel_x = -22 + }, +/turf/simulated/floor/wood, +/area/hallway/secondary/entry/docking_lounge) +"dpx" = ( +/obj/structure/disposalpipe/segment, +/turf/simulated/floor/wood, +/area/hallway/secondary/entry/docking_lounge) +"dpy" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/structure/cable/green{ + d1 = 1; + d2 = 4; + icon_state = "1-4" + }, +/turf/simulated/floor/wood, +/area/hallway/secondary/entry/docking_lounge) +"dpz" = ( +/obj/structure/cable/green{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/turf/simulated/floor/wood, +/area/hallway/secondary/entry/docking_lounge) +"dpA" = ( +/obj/machinery/power/apc{ + dir = 4; + name = "east bump"; + pixel_x = 24 + }, +/obj/machinery/light_switch{ + dir = 2; + name = "light switch "; + pixel_x = 36; + pixel_y = 0 + }, +/obj/structure/cable/green{ + d2 = 8; + icon_state = "0-8" + }, +/obj/structure/flora/pottedplant/shoot, +/turf/simulated/floor/wood, +/area/hallway/secondary/entry/docking_lounge) +"dpB" = ( +/obj/machinery/door/firedoor/border_only, +/obj/effect/wingrille_spawn/reinforced, +/turf/simulated/floor/plating, +/area/storage/primary) +"dpC" = ( +/obj/machinery/door/firedoor/glass, +/obj/machinery/door/airlock/glass{ + name = "Primary Tool Storage" + }, +/obj/structure/cable/green{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/turf/simulated/floor/tiled/steel_grid, +/area/storage/primary) +"dpD" = ( +/obj/machinery/door/firedoor/border_only, +/obj/effect/wingrille_spawn/reinforced, +/obj/structure/disposalpipe/segment, +/turf/simulated/floor/plating, +/area/storage/primary) +"dpE" = ( +/turf/simulated/wall, +/area/security/checkpoint2) +"dpF" = ( +/obj/machinery/door/firedoor/border_only, +/obj/effect/wingrille_spawn/reinforced, +/turf/simulated/floor/plating, +/area/security/checkpoint2) +"dpG" = ( +/obj/machinery/door/firedoor/border_only, +/obj/structure/cable/green{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/obj/machinery/door/airlock/security{ + name = "Security Checkpoint"; + req_access = list(1) + }, +/turf/simulated/floor/tiled/steel_grid, +/area/security/checkpoint2) +"dpH" = ( +/obj/machinery/ai_status_display, +/turf/simulated/wall, +/area/security/checkpoint2) +"dpI" = ( +/obj/effect/wingrille_spawn/reinforced, +/turf/simulated/floor/plating, +/area/hallway/primary/seconddeck/aft) +"dpJ" = ( +/obj/machinery/light{ + icon_state = "tube1"; + dir = 8 + }, +/turf/simulated/floor/tiled, +/area/hallway/primary/seconddeck/aft) +"dpK" = ( +/obj/structure/cable{ + d1 = 1; + d2 = 2; + icon_state = "1-2"; + pixel_y = 0 + }, +/obj/machinery/alarm{ + dir = 8; + pixel_x = 22; + pixel_y = 0 + }, +/obj/machinery/camera/network/second_deck{ + c_tag = "Second Deck - Aft Hallway Five"; + dir = 8 + }, +/obj/effect/floor_decal/borderfloor/corner{ + dir = 4 + }, +/obj/effect/floor_decal/corner/green/bordercorner{ + dir = 4 + }, +/turf/simulated/floor/tiled, +/area/hallway/primary/seconddeck/aft) +"dpL" = ( +/obj/machinery/door/firedoor/border_only, +/obj/machinery/door/airlock{ + name = "Unisex Restrooms" + }, +/obj/structure/cable/green{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/turf/simulated/floor/tiled/steel_grid, +/area/crew_quarters/seconddeck/locker/locker_toilet) +"dpM" = ( +/obj/machinery/vending/snack, +/turf/simulated/floor/tiled/dark, +/area/crew_quarters/seconddeck/locker) +"dpN" = ( +/obj/structure/table/glass, +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/obj/item/weapon/storage/laundry_basket, +/turf/simulated/floor/carpet, +/area/crew_quarters/seconddeck/locker) +"dpO" = ( +/obj/structure/bed/chair{ + dir = 8 + }, +/turf/simulated/floor/carpet, +/area/crew_quarters/seconddeck/locker) +"dpP" = ( +/obj/machinery/vending/giftvendor, +/turf/simulated/floor/tiled/dark, +/area/crew_quarters/seconddeck/locker) +"dpQ" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/obj/structure/cable/green{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/turf/simulated/floor/plating, +/area/maintenance/locker) +"dpR" = ( +/obj/structure/table/rack{ + dir = 1 + }, +/obj/item/clothing/glasses/sunglasses, +/obj/item/weapon/storage/bible, +/obj/random/maintenance/clean, +/obj/random/maintenance/clean, +/obj/random/maintenance/clean, +/turf/simulated/floor/plating, +/area/maintenance/locker) +"dpS" = ( +/obj/machinery/status_display, +/turf/simulated/shuttle/wall/no_join, +/area/shuttle/cryo/station) +"dpT" = ( +/obj/machinery/cryopod{ + dir = 1; + time_till_despawn = 4500 + }, +/obj/effect/floor_decal/industrial/warning{ + dir = 4 + }, +/obj/effect/floor_decal/industrial/warning{ + icon_state = "warning"; + dir = 8 + }, +/obj/machinery/light{ + dir = 8 + }, +/turf/simulated/shuttle/floor, +/area/shuttle/cryo/station) +"dpU" = ( +/obj/effect/floor_decal/industrial/warning{ + dir = 4 + }, +/obj/effect/floor_decal/industrial/warning{ + icon_state = "warning"; + dir = 8 + }, +/obj/machinery/cryopod{ + dir = 1; + time_till_despawn = 4500 + }, +/turf/simulated/shuttle/floor, +/area/shuttle/cryo/station) +"dpV" = ( +/obj/machinery/atmospherics/unary/vent_scrubber/on{ + dir = 1 + }, +/obj/machinery/embedded_controller/radio/simple_docking_controller/escape_pod_berth{ + frequency = 1380; + id_tag = "cryostorage_shuttle_berth"; + name = "cryostorage shuttle berth controller"; + pixel_x = -26; + pixel_y = 0; + req_access = list(19); + tag_door = "cryostorage_shuttle_berth_hatch" + }, +/obj/effect/floor_decal/industrial/warning/corner{ + icon_state = "warningcorner"; + dir = 1 + }, +/obj/structure/cable{ + d1 = 1; + d2 = 2; + icon_state = "1-2"; + pixel_y = 0 + }, +/obj/effect/floor_decal/borderfloor/corner{ + dir = 8 + }, +/obj/effect/floor_decal/corner/green/bordercorner{ + dir = 8 + }, +/turf/simulated/floor/tiled, +/area/hallway/secondary/docking_hallway2) +"dpW" = ( +/obj/structure/table/glass, +/turf/simulated/floor/tiled/dark, +/area/hallway/secondary/docking_hallway2) +"dpX" = ( +/obj/structure/bed/chair/comfy/black, +/turf/simulated/floor/carpet, +/area/hallway/secondary/entry/docking_lounge) +"dpY" = ( +/obj/structure/bed/chair/comfy/black, +/obj/structure/disposalpipe/segment, +/turf/simulated/floor/carpet, +/area/hallway/secondary/entry/docking_lounge) +"dpZ" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/turf/simulated/floor/wood, +/area/hallway/secondary/entry/docking_lounge) +"dqa" = ( +/obj/machinery/status_display, +/turf/simulated/wall, +/area/hallway/secondary/entry/docking_lounge) +"dqb" = ( +/obj/effect/floor_decal/industrial/outline/yellow, +/obj/machinery/navbeacon/delivery/south{ + location = "Tool Storage" + }, +/turf/simulated/floor/tiled, +/area/storage/primary) +"dqc" = ( +/turf/simulated/floor/tiled, +/area/storage/primary) +"dqd" = ( +/obj/structure/cable/green{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/obj/effect/floor_decal/steeldecal/steel_decals4{ + dir = 9 + }, +/obj/effect/floor_decal/steeldecal/steel_decals4{ + dir = 4 + }, +/turf/simulated/floor/tiled, +/area/storage/primary) +"dqe" = ( +/obj/machinery/disposal, +/obj/structure/disposalpipe/trunk{ + dir = 1 + }, +/obj/effect/floor_decal/borderfloor{ + dir = 4 + }, +/obj/effect/floor_decal/corner/yellow/border{ + dir = 4 + }, +/turf/simulated/floor/tiled, +/area/storage/primary) +"dqf" = ( +/obj/machinery/power/apc{ + dir = 8; + name = "west bump"; + pixel_x = -24 + }, +/obj/machinery/light_switch{ + pixel_x = -36 + }, +/obj/structure/cable/green{ + d2 = 4; + icon_state = "0-4" + }, +/obj/effect/floor_decal/borderfloor{ + dir = 8 + }, +/obj/effect/floor_decal/corner/red/border{ + dir = 8 + }, +/turf/simulated/floor/tiled, +/area/security/checkpoint2) +"dqg" = ( +/obj/structure/cable/green{ + d1 = 1; + d2 = 8; + icon_state = "1-8" + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/obj/effect/floor_decal/steeldecal/steel_decals4{ + dir = 9 + }, +/obj/effect/floor_decal/steeldecal/steel_decals4{ + dir = 4 + }, +/turf/simulated/floor/tiled, +/area/security/checkpoint2) +"dqh" = ( +/obj/structure/filingcabinet/chestdrawer, +/obj/effect/floor_decal/borderfloor{ + dir = 4 + }, +/obj/effect/floor_decal/corner/red/border{ + dir = 4 + }, +/turf/simulated/floor/tiled, +/area/security/checkpoint2) +"dqi" = ( +/obj/effect/floor_decal/industrial/outline/yellow, +/turf/simulated/floor/tiled, +/area/hallway/primary/seconddeck/aft) +"dqj" = ( +/obj/structure/cable{ + d1 = 1; + d2 = 2; + icon_state = "1-2"; + pixel_y = 0 + }, +/obj/effect/floor_decal/steeldecal/steel_decals4, +/obj/effect/floor_decal/steeldecal/steel_decals4{ + dir = 10 + }, +/turf/simulated/floor/tiled, +/area/hallway/primary/seconddeck/aft) +"dqk" = ( +/obj/machinery/door/firedoor/glass, +/obj/machinery/door/airlock/glass{ + name = "Locker Room" + }, +/turf/simulated/floor/tiled/steel_grid, +/area/crew_quarters/seconddeck/locker) +"dql" = ( +/obj/effect/floor_decal/steeldecal/steel_decals4{ + dir = 6 + }, +/obj/effect/floor_decal/steeldecal/steel_decals4{ + dir = 1 + }, +/turf/simulated/floor/tiled, +/area/crew_quarters/seconddeck/locker) +"dqm" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 6 + }, +/obj/machinery/power/apc{ + dir = 1; + name = "north bump"; + pixel_x = 0; + pixel_y = 24 + }, +/obj/machinery/light_switch{ + pixel_x = 11; + pixel_y = 24 + }, +/obj/structure/cable/green{ + d2 = 4; + icon_state = "0-4" + }, +/turf/simulated/floor/tiled, +/area/crew_quarters/seconddeck/locker) +"dqn" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, +/obj/structure/cable/green{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/obj/item/device/radio/intercom{ + dir = 1; + name = "Station Intercom (General)"; + pixel_y = 21 + }, +/turf/simulated/floor/tiled, +/area/crew_quarters/seconddeck/locker) +"dqo" = ( +/obj/structure/cable/green{ + d1 = 1; + d2 = 4; + icon_state = "1-4" + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 5 + }, +/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers, +/obj/structure/cable/green{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/obj/effect/floor_decal/steeldecal/steel_decals4{ + dir = 9 + }, +/obj/effect/floor_decal/steeldecal/steel_decals4{ + dir = 4 + }, +/turf/simulated/floor/tiled, +/area/crew_quarters/seconddeck/locker) +"dqp" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, +/obj/structure/cable/green{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/obj/machinery/firealarm{ + pixel_y = 24 + }, +/turf/simulated/floor/tiled, +/area/crew_quarters/seconddeck/locker) +"dqq" = ( +/obj/machinery/atmospherics/pipe/manifold/hidden/supply{ + dir = 1 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, +/obj/structure/cable/green{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/turf/simulated/floor/tiled, +/area/crew_quarters/seconddeck/locker) +"dqr" = ( +/obj/machinery/atm{ + pixel_y = 30 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, +/obj/structure/cable/green{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/turf/simulated/floor/tiled, +/area/crew_quarters/seconddeck/locker) +"dqs" = ( +/obj/machinery/door/firedoor/border_only, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, +/obj/structure/cable/green{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/turf/simulated/floor/tiled, +/area/crew_quarters/seconddeck/locker) +"dqt" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, +/obj/structure/cable/green{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/obj/machinery/computer/guestpass{ + pixel_x = 0; + pixel_y = 30 + }, +/turf/simulated/floor/tiled, +/area/crew_quarters/seconddeck/locker) +"dqu" = ( +/obj/machinery/atmospherics/pipe/manifold/hidden/supply{ + dir = 1 + }, +/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{ + dir = 1 + }, +/obj/structure/cable/green{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/obj/structure/cable/green{ + d1 = 2; + d2 = 4; + icon_state = "2-4" + }, +/turf/simulated/floor/tiled, +/area/crew_quarters/seconddeck/locker) +"dqv" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, +/obj/structure/cable/green{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/turf/simulated/floor/tiled, +/area/crew_quarters/seconddeck/locker) +"dqw" = ( +/obj/machinery/atmospherics/pipe/manifold4w/hidden/scrubbers, +/obj/machinery/atmospherics/pipe/manifold4w/hidden/supply, +/obj/structure/cable/green{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/obj/structure/cable/green{ + d1 = 2; + d2 = 4; + icon_state = "2-4" + }, +/obj/machinery/hologram/holopad, +/obj/effect/floor_decal/industrial/outline/grey, +/turf/simulated/floor/tiled, +/area/crew_quarters/seconddeck/locker) +"dqx" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/obj/structure/cable/green{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/turf/simulated/floor/tiled, +/area/crew_quarters/seconddeck/locker) +"dqy" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/obj/structure/cable/green{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/obj/effect/floor_decal/steeldecal/steel_decals4, +/obj/effect/floor_decal/steeldecal/steel_decals4{ + dir = 10 + }, +/turf/simulated/floor/tiled, +/area/crew_quarters/seconddeck/locker) +"dqz" = ( +/obj/machinery/door/firedoor/border_only, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/obj/structure/cable/green{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/obj/machinery/door/airlock/maintenance{ + req_access = null; + req_one_access = list(12,25,27,28,35) + }, +/turf/simulated/floor/plating, +/area/crew_quarters/seconddeck/locker) +"dqA" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 9; + pixel_y = 0 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 9 + }, +/obj/structure/cable/green{ + d1 = 1; + d2 = 8; + icon_state = "1-8" + }, +/obj/effect/floor_decal/industrial/warning, +/turf/simulated/floor/plating, +/area/maintenance/locker) +"dqB" = ( +/obj/effect/floor_decal/industrial/warning/corner{ + dir = 8 + }, +/turf/simulated/floor/plating, +/area/maintenance/locker) +"dqC" = ( +/obj/structure/table/rack, +/obj/item/clothing/suit/storage/hazardvest, +/obj/random/maintenance/clean, +/obj/random/maintenance/clean, +/obj/random/maintenance/clean, +/turf/simulated/floor/plating, +/area/maintenance/locker) +"dqD" = ( +/obj/structure/cryofeed{ + dir = 1 + }, +/obj/structure/window/reinforced, +/obj/structure/window/reinforced{ + dir = 4; + health = 1e+006 + }, +/obj/structure/window/reinforced{ + dir = 8 + }, +/obj/effect/floor_decal/industrial/warning/cee, +/turf/simulated/shuttle/floor, +/area/shuttle/cryo/station) +"dqE" = ( +/obj/structure/cable{ + d1 = 1; + d2 = 2; + icon_state = "1-2"; + pixel_y = 0 + }, +/obj/machinery/light{ + icon_state = "tube1"; + dir = 8 + }, +/obj/effect/floor_decal/borderfloor{ + dir = 8 + }, +/obj/effect/floor_decal/corner/green/border{ + dir = 8 + }, +/turf/simulated/floor/tiled, +/area/hallway/secondary/docking_hallway2) +"dqF" = ( +/obj/structure/bed/chair{ + dir = 1 + }, +/turf/simulated/floor/tiled/dark, +/area/hallway/secondary/docking_hallway2) +"dqG" = ( +/obj/structure/table/woodentable, +/obj/item/weapon/book/codex/lore/vir, +/obj/item/device/paicard, +/turf/simulated/floor/carpet, +/area/hallway/secondary/entry/docking_lounge) +"dqH" = ( +/obj/structure/table/woodentable, +/obj/item/device/flashlight/lamp/green{ + pixel_x = 1; + pixel_y = 5 + }, +/obj/structure/disposalpipe/segment, +/turf/simulated/floor/carpet, +/area/hallway/secondary/entry/docking_lounge) +"dqI" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 5 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/turf/simulated/floor/wood, +/area/hallway/secondary/entry/docking_lounge) +"dqJ" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, +/turf/simulated/floor/carpet, +/area/hallway/secondary/entry/docking_lounge) +"dqK" = ( +/obj/machinery/atmospherics/unary/vent_scrubber/on{ + dir = 8 + }, +/turf/simulated/floor/carpet, +/area/hallway/secondary/entry/docking_lounge) +"dqL" = ( +/obj/effect/floor_decal/industrial/hatch/yellow, +/obj/machinery/power/apc{ + dir = 8; + name = "west bump"; + pixel_x = -24 + }, +/obj/machinery/light_switch{ + pixel_x = -36 + }, +/obj/structure/cable/green{ + d2 = 4; + icon_state = "0-4" + }, +/turf/simulated/floor/tiled, +/area/storage/primary) +"dqM" = ( +/obj/structure/cable/green{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/turf/simulated/floor/tiled, +/area/storage/primary) +"dqN" = ( +/obj/item/weapon/stool, +/obj/effect/landmark/start{ + name = "Assistant" + }, +/obj/structure/cable/green{ + d1 = 1; + d2 = 8; + icon_state = "1-8" + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/turf/simulated/floor/tiled, +/area/storage/primary) +"dqO" = ( +/obj/machinery/vending/tool, +/obj/machinery/alarm{ + dir = 8; + pixel_x = 22; + pixel_y = 0 + }, +/obj/effect/floor_decal/borderfloor{ + dir = 4 + }, +/obj/effect/floor_decal/corner/yellow/border{ + dir = 4 + }, +/turf/simulated/floor/tiled, +/area/storage/primary) +"dqP" = ( +/obj/machinery/computer/secure_data, +/obj/item/device/radio/intercom/department/security{ + dir = 4; + icon_override = "secintercom"; + pixel_x = -21 + }, +/obj/effect/floor_decal/borderfloor{ + dir = 8 + }, +/obj/effect/floor_decal/corner/red/border{ + dir = 8 + }, +/turf/simulated/floor/tiled, +/area/security/checkpoint2) +"dqQ" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/turf/simulated/floor/tiled, +/area/security/checkpoint2) +"dqR" = ( +/obj/structure/table/reinforced, +/obj/machinery/computer/skills, +/obj/effect/floor_decal/borderfloor{ + dir = 4 + }, +/obj/effect/floor_decal/corner/red/border{ + dir = 4 + }, +/turf/simulated/floor/tiled, +/area/security/checkpoint2) +"dqS" = ( +/obj/structure/disposalpipe/segment, +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/obj/item/device/radio/beacon, +/turf/simulated/floor/tiled/monotile, +/area/hallway/primary/seconddeck/aft) +"dqT" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/turf/simulated/floor/tiled, +/area/crew_quarters/seconddeck/locker) +"dqU" = ( +/turf/simulated/floor/tiled, +/area/crew_quarters/seconddeck/locker) +"dqV" = ( +/obj/machinery/hologram/holopad, +/obj/effect/floor_decal/industrial/outline/grey, +/turf/simulated/floor/tiled/monotile, +/area/crew_quarters/seconddeck/locker) +"dqW" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/turf/simulated/floor/tiled, +/area/crew_quarters/seconddeck/locker) +"dqX" = ( +/obj/machinery/door/firedoor/border_only, +/turf/simulated/floor/tiled, +/area/crew_quarters/seconddeck/locker) +"dqY" = ( +/obj/structure/cable/green{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/obj/effect/floor_decal/steeldecal/steel_decals4{ + dir = 5 + }, +/obj/effect/floor_decal/steeldecal/steel_decals4{ + dir = 8 + }, +/turf/simulated/floor/tiled, +/area/crew_quarters/seconddeck/locker) +"dqZ" = ( +/obj/machinery/light, +/turf/simulated/floor/tiled, +/area/crew_quarters/seconddeck/locker) +"dra" = ( +/obj/structure/extinguisher_cabinet{ + pixel_y = -30 + }, +/turf/simulated/floor/tiled, +/area/crew_quarters/seconddeck/locker) +"drb" = ( +/obj/item/device/radio/intercom{ + name = "Station Intercom (General)"; + pixel_y = -21 + }, +/turf/simulated/floor/tiled, +/area/crew_quarters/seconddeck/locker) +"drc" = ( +/obj/machinery/newscaster{ + pixel_y = -30 + }, +/turf/simulated/floor/tiled, +/area/crew_quarters/seconddeck/locker) +"drd" = ( +/obj/machinery/atmospherics/portables_connector{ + dir = 4 + }, +/obj/machinery/portable_atmospherics/canister/air/airlock, +/obj/effect/floor_decal/industrial/outline/yellow, +/obj/machinery/light/small{ + dir = 8 + }, +/turf/simulated/floor/plating, +/area/maintenance/locker) +"dre" = ( +/obj/machinery/atmospherics/pipe/simple/hidden{ + dir = 10; + icon_state = "intact" + }, +/obj/effect/floor_decal/industrial/warning{ + icon_state = "warning"; + dir = 8 + }, +/turf/simulated/floor/plating, +/area/maintenance/locker) +"drf" = ( +/obj/structure/reagent_dispensers/watertank, +/turf/simulated/floor/plating, +/area/maintenance/locker) +"drg" = ( +/obj/structure/cryofeed{ + dir = 2 + }, +/obj/structure/window/reinforced{ + dir = 4; + health = 1e+006 + }, +/obj/structure/window/reinforced{ + dir = 8 + }, +/obj/structure/window/reinforced{ + dir = 1 + }, +/obj/effect/floor_decal/industrial/warning/cee{ + icon_state = "warningcee"; + dir = 1 + }, +/turf/simulated/shuttle/floor, +/area/shuttle/cryo/station) +"drh" = ( +/obj/structure/cable{ + d1 = 1; + d2 = 2; + icon_state = "1-2"; + pixel_y = 0 + }, +/obj/machinery/alarm{ + dir = 4; + icon_state = "alarm0"; + pixel_x = -22 + }, +/obj/effect/floor_decal/borderfloor{ + dir = 8 + }, +/obj/effect/floor_decal/corner/green/border{ + dir = 8 + }, +/turf/simulated/floor/tiled, +/area/hallway/secondary/docking_hallway2) +"dri" = ( +/obj/machinery/atmospherics/unary/vent_pump/on{ + dir = 1 + }, +/obj/effect/floor_decal/borderfloor{ + dir = 4 + }, +/obj/effect/floor_decal/corner/green/border{ + dir = 4 + }, +/turf/simulated/floor/tiled, +/area/hallway/secondary/docking_hallway2) +"drj" = ( +/obj/structure/bed/chair, +/obj/machinery/camera/network/second_deck{ + c_tag = "Second Deck - Civilian Hallway Two"; + dir = 8 + }, +/turf/simulated/floor/tiled/dark, +/area/hallway/secondary/docking_hallway2) +"drk" = ( +/obj/structure/bed/chair/comfy/black{ + dir = 1 + }, +/obj/machinery/computer/security/telescreen/entertainment{ + icon_state = "frame"; + pixel_x = -32; + pixel_y = 0 + }, +/obj/machinery/light{ + dir = 8 + }, +/turf/simulated/floor/carpet, +/area/hallway/secondary/entry/docking_lounge) +"drl" = ( +/obj/structure/bed/chair/comfy/black{ + dir = 1 + }, +/obj/structure/disposalpipe/segment, +/turf/simulated/floor/carpet, +/area/hallway/secondary/entry/docking_lounge) +"drm" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/machinery/hologram/holopad, +/turf/simulated/floor/wood, +/area/hallway/secondary/entry/docking_lounge) +"drn" = ( +/obj/structure/bed/chair/comfy/black{ + dir = 1 + }, +/turf/simulated/floor/carpet, +/area/hallway/secondary/entry/docking_lounge) +"dro" = ( +/obj/structure/bed/chair/comfy/black{ + dir = 1 + }, +/obj/machinery/computer/security/telescreen/entertainment{ + icon_state = "frame"; + pixel_x = 32; + pixel_y = 0 + }, +/obj/machinery/light{ + dir = 4; + icon_state = "tube1"; + pixel_x = 0 + }, +/turf/simulated/floor/carpet, +/area/hallway/secondary/entry/docking_lounge) +"drp" = ( +/obj/structure/reagent_dispensers/watertank, +/obj/machinery/light{ + dir = 8 + }, +/obj/effect/floor_decal/borderfloor{ + dir = 8 + }, +/obj/effect/floor_decal/corner/yellow/border{ + dir = 8 + }, +/obj/effect/floor_decal/borderfloor/corner2{ + dir = 8 + }, +/obj/effect/floor_decal/corner/yellow/bordercorner2{ + dir = 8 + }, +/turf/simulated/floor/tiled, +/area/storage/primary) +"drq" = ( +/obj/machinery/atmospherics/unary/vent_scrubber/on{ + dir = 4 + }, +/turf/simulated/floor/tiled, +/area/storage/primary) +"drr" = ( +/obj/structure/table/standard, +/obj/machinery/recharger{ + pixel_y = 0 + }, +/obj/random/tech_supply, +/obj/random/tech_supply, +/obj/random/tech_supply, +/obj/random/tech_supply, +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 9 + }, +/turf/simulated/floor/tiled, +/area/storage/primary) +"drs" = ( +/obj/machinery/vending/assist, +/obj/machinery/light{ + dir = 4; + icon_state = "tube1"; + pixel_x = 0 + }, +/obj/effect/floor_decal/borderfloor{ + dir = 4 + }, +/obj/effect/floor_decal/corner/yellow/border{ + dir = 4 + }, +/turf/simulated/floor/tiled, +/area/storage/primary) +"drt" = ( +/obj/machinery/computer/card, +/obj/machinery/alarm{ + dir = 4; + icon_state = "alarm0"; + pixel_x = -22 + }, +/obj/effect/floor_decal/borderfloor{ + dir = 8 + }, +/obj/effect/floor_decal/corner/red/border{ + dir = 8 + }, +/turf/simulated/floor/tiled, +/area/security/checkpoint2) +"dru" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 5 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/obj/machinery/hologram/holopad, +/obj/effect/floor_decal/industrial/outline/grey, +/turf/simulated/floor/tiled, +/area/security/checkpoint2) +"drv" = ( +/obj/structure/bed/chair/office/dark{ + dir = 4 + }, +/obj/machinery/atmospherics/unary/vent_pump/on{ + dir = 8 + }, +/obj/effect/floor_decal/borderfloor{ + dir = 4 + }, +/obj/effect/floor_decal/corner/red/border{ + dir = 4 + }, +/turf/simulated/floor/tiled, +/area/security/checkpoint2) +"drw" = ( +/obj/structure/table/reinforced, +/obj/machinery/door/window/brigdoor/westleft{ + name = "Security Checkpoint"; + req_access = list(1) + }, +/obj/machinery/door/firedoor/glass, +/turf/simulated/floor/tiled, +/area/security/checkpoint2) +"drx" = ( +/obj/effect/floor_decal/industrial/hatch/yellow, +/turf/simulated/floor/tiled, +/area/hallway/primary/seconddeck/aft) +"dry" = ( +/obj/structure/disposalpipe/segment{ + dir = 1; + icon_state = "pipe-c" + }, +/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{ + dir = 8 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/machinery/hologram/holopad, +/obj/effect/floor_decal/industrial/outline/grey, +/turf/simulated/floor/tiled/dark, +/area/hallway/primary/seconddeck/aft) +"drz" = ( +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/structure/cable{ + d1 = 1; + d2 = 2; + icon_state = "1-2"; + pixel_y = 0 + }, +/obj/machinery/atmospherics/unary/vent_scrubber/on{ + dir = 8 + }, +/turf/simulated/floor/tiled, +/area/hallway/primary/seconddeck/aft) +"drA" = ( +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/machinery/status_display, +/turf/simulated/wall, +/area/crew_quarters/seconddeck/locker) +"drB" = ( +/obj/structure/closet/wardrobe/white, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/turf/simulated/floor/tiled/dark, +/area/crew_quarters/seconddeck/locker) +"drC" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/turf/simulated/floor/tiled, +/area/crew_quarters/seconddeck/locker) +"drD" = ( +/obj/structure/closet/wardrobe/pjs, +/obj/structure/window/reinforced{ + dir = 4; + health = 1e+006 + }, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/turf/simulated/floor/tiled/dark, +/area/crew_quarters/seconddeck/locker) +"drE" = ( +/obj/structure/window/reinforced{ + dir = 8; + health = 1e+006 + }, +/obj/machinery/disposal, +/obj/structure/disposalpipe/trunk{ + dir = 8 + }, +/turf/simulated/floor/tiled/dark, +/area/crew_quarters/seconddeck/locker) +"drF" = ( +/obj/machinery/washing_machine, +/turf/simulated/floor/tiled/dark, +/area/crew_quarters/seconddeck/locker) +"drG" = ( +/turf/simulated/wall, +/area/crew_quarters/sleep/vistor_room_1) +"drH" = ( +/obj/machinery/door/firedoor/border_only, +/obj/machinery/door/airlock{ + name = "Room 1" + }, +/obj/structure/cable/green{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/turf/simulated/floor/tiled/steel_grid, +/area/crew_quarters/sleep/vistor_room_1) +"drI" = ( +/turf/simulated/wall, +/area/crew_quarters/sleep/vistor_room_2) +"drJ" = ( +/obj/machinery/door/firedoor/border_only, +/obj/machinery/door/airlock{ + name = "Room 2" + }, +/obj/structure/cable/green{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/turf/simulated/floor/tiled/steel_grid, +/area/crew_quarters/sleep/vistor_room_2) +"drK" = ( +/obj/machinery/atmospherics/portables_connector{ + dir = 4 + }, +/obj/machinery/portable_atmospherics/canister/air/airlock, +/obj/effect/floor_decal/industrial/outline/yellow, +/obj/machinery/alarm{ + dir = 4; + icon_state = "alarm0"; + pixel_x = -22 + }, +/turf/simulated/floor/plating, +/area/maintenance/locker) +"drL" = ( +/obj/machinery/atmospherics/pipe/manifold/hidden{ + dir = 4; + icon_state = "map" + }, +/obj/effect/floor_decal/industrial/warning{ + icon_state = "warning"; + dir = 8 + }, +/turf/simulated/floor/plating, +/area/maintenance/locker) +"drM" = ( +/obj/structure/reagent_dispensers/fueltank, +/turf/simulated/floor/plating, +/area/maintenance/locker) +"drN" = ( +/obj/structure/cable{ + d1 = 1; + d2 = 2; + icon_state = "1-2"; + pixel_y = 0 + }, +/obj/effect/floor_decal/borderfloor/corner{ + dir = 1 + }, +/obj/effect/floor_decal/corner/green/bordercorner{ + dir = 1 + }, +/turf/simulated/floor/tiled, +/area/hallway/secondary/docking_hallway2) +"drO" = ( +/obj/effect/floor_decal/borderfloor/corner{ + dir = 4 + }, +/obj/effect/floor_decal/corner/green/bordercorner{ + dir = 4 + }, +/turf/simulated/floor/tiled, +/area/hallway/secondary/docking_hallway2) +"drP" = ( +/obj/machinery/atmospherics/unary/vent_pump/on{ + dir = 4 + }, +/turf/simulated/floor/wood, +/area/hallway/secondary/entry/docking_lounge) +"drQ" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/obj/structure/disposalpipe/segment, +/turf/simulated/floor/wood, +/area/hallway/secondary/entry/docking_lounge) +"drR" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 9; + pixel_y = 0 + }, +/turf/simulated/floor/wood, +/area/hallway/secondary/entry/docking_lounge) +"drS" = ( +/obj/structure/table/woodentable, +/obj/machinery/photocopier/faxmachine{ + department = "Public Office"; + req_one_access = newlist() + }, +/turf/simulated/floor/wood, +/area/hallway/secondary/entry/docking_lounge) +"drT" = ( +/obj/structure/table/woodentable, +/obj/item/weapon/paper_bin{ + pixel_x = 1; + pixel_y = 9 + }, +/obj/item/weapon/pen/blue{ + pixel_x = -5; + pixel_y = -1 + }, +/obj/item/weapon/pen/red{ + pixel_x = -1; + pixel_y = 3 + }, +/obj/item/weapon/pen, +/turf/simulated/floor/wood, +/area/hallway/secondary/entry/docking_lounge) +"drU" = ( +/obj/structure/reagent_dispensers/fueltank, +/obj/effect/floor_decal/borderfloor{ + dir = 8 + }, +/obj/effect/floor_decal/corner/yellow/border{ + dir = 8 + }, +/turf/simulated/floor/tiled, +/area/storage/primary) +"drV" = ( +/obj/structure/table/standard, +/obj/random/tech_supply, +/obj/random/tech_supply, +/obj/random/tech_supply, +/obj/random/tech_supply, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 5 + }, +/turf/simulated/floor/tiled, +/area/storage/primary) +"drW" = ( +/obj/machinery/atmospherics/unary/vent_pump/on{ + dir = 8 + }, +/turf/simulated/floor/tiled, +/area/storage/primary) +"drX" = ( +/obj/machinery/lapvend, +/obj/effect/floor_decal/borderfloor{ + dir = 4 + }, +/obj/effect/floor_decal/corner/yellow/border{ + dir = 4 + }, +/turf/simulated/floor/tiled, +/area/storage/primary) +"drY" = ( +/obj/machinery/computer/security, +/obj/item/device/radio/intercom{ + dir = 8; + name = "Station Intercom (General)"; + pixel_x = -21 + }, +/obj/effect/floor_decal/borderfloor{ + dir = 8 + }, +/obj/effect/floor_decal/corner/red/border{ + dir = 8 + }, +/turf/simulated/floor/tiled, +/area/security/checkpoint2) +"drZ" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/turf/simulated/floor/tiled, +/area/security/checkpoint2) +"dsa" = ( +/obj/structure/table/reinforced, +/obj/item/weapon/paper_bin{ + pixel_x = 1; + pixel_y = 9 + }, +/obj/item/weapon/tool/crowbar, +/obj/item/weapon/pen, +/obj/item/device/flash, +/obj/machinery/camera/network/security{ + c_tag = "SEC - Arrival Checkpoint"; + dir = 8 + }, +/obj/machinery/light{ + dir = 4 + }, +/obj/effect/floor_decal/borderfloor{ + dir = 4 + }, +/obj/effect/floor_decal/corner/red/border{ + dir = 4 + }, +/turf/simulated/floor/tiled, +/area/security/checkpoint2) +"dsb" = ( +/obj/structure/cable{ + d1 = 1; + d2 = 2; + icon_state = "1-2"; + pixel_y = 0 + }, +/turf/simulated/floor/tiled, +/area/hallway/primary/seconddeck/aft) +"dsc" = ( +/obj/machinery/door/firedoor/border_only, +/obj/effect/wingrille_spawn/reinforced, +/turf/simulated/floor/plating, +/area/crew_quarters/seconddeck/locker) +"dsd" = ( +/obj/structure/closet/wardrobe/mixed, +/obj/machinery/light{ + dir = 8; + icon_state = "tube1"; + pixel_y = 0 + }, +/turf/simulated/floor/tiled/dark, +/area/crew_quarters/seconddeck/locker) +"dse" = ( +/obj/structure/closet/wardrobe/grey, +/obj/structure/window/reinforced{ + dir = 4; + health = 1e+006 + }, +/turf/simulated/floor/tiled/dark, +/area/crew_quarters/seconddeck/locker) +"dsf" = ( +/obj/structure/closet/secure_closet/personal, +/obj/structure/window/reinforced{ + dir = 8; + health = 1e+006 + }, +/obj/item/weapon/storage/backpack/dufflebag, +/turf/simulated/floor/tiled/dark, +/area/crew_quarters/seconddeck/locker) +"dsg" = ( +/obj/structure/closet/secure_closet/personal, +/obj/machinery/light{ + dir = 4 + }, +/turf/simulated/floor/tiled/dark, +/area/crew_quarters/seconddeck/locker) +"dsh" = ( +/obj/structure/closet/secure_closet/personal, +/obj/item/device/radio/intercom{ + dir = 1; + name = "Station Intercom (General)"; + pixel_y = 21 + }, +/turf/simulated/floor/carpet, +/area/crew_quarters/sleep/vistor_room_1) +"dsi" = ( +/obj/structure/cable/green{ + d1 = 1; + d2 = 4; + icon_state = "1-4" + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/turf/simulated/floor/carpet, +/area/crew_quarters/sleep/vistor_room_1) +"dsj" = ( +/obj/structure/closet/secure_closet/personal, +/obj/machinery/power/apc{ + dir = 1; + name = "north bump"; + pixel_x = 0; + pixel_y = 24 + }, +/obj/machinery/light_switch{ + pixel_x = 11; + pixel_y = 24 + }, +/obj/structure/cable/green{ + d2 = 8; + icon_state = "0-8" + }, +/turf/simulated/floor/carpet, +/area/crew_quarters/sleep/vistor_room_1) +"dsk" = ( +/obj/structure/closet/secure_closet/personal, +/obj/item/device/radio/intercom{ + dir = 1; + name = "Station Intercom (General)"; + pixel_y = 21 + }, +/turf/simulated/floor/carpet, +/area/crew_quarters/sleep/vistor_room_2) +"dsl" = ( +/obj/structure/cable/green{ + d1 = 1; + d2 = 4; + icon_state = "1-4" + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/turf/simulated/floor/carpet, +/area/crew_quarters/sleep/vistor_room_2) +"dsm" = ( +/obj/structure/closet/secure_closet/personal, +/obj/machinery/power/apc{ + dir = 1; + name = "north bump"; + pixel_x = 0; + pixel_y = 24 + }, +/obj/machinery/light_switch{ + pixel_x = 11; + pixel_y = 24 + }, +/obj/structure/cable/green{ + d2 = 8; + icon_state = "0-8" + }, +/obj/item/clothing/head/kitty, +/obj/item/clothing/head/kitty, +/turf/simulated/floor/carpet, +/area/crew_quarters/sleep/vistor_room_2) +"dsn" = ( +/obj/item/latexballon, +/turf/simulated/floor, +/area/crew_quarters/seconddeck/locker) +"dso" = ( +/obj/machinery/atmospherics/pipe/simple/hidden{ + dir = 6 + }, +/obj/structure/cable{ + icon_state = "0-2"; + d2 = 2 + }, +/obj/machinery/power/apc{ + dir = 8; + name = "west bump"; + pixel_x = -24 + }, +/obj/effect/floor_decal/industrial/warning{ + icon_state = "warning"; + dir = 1 + }, +/turf/simulated/floor/plating, +/area/maintenance/locker) +"dsp" = ( +/obj/machinery/atmospherics/pipe/manifold/hidden{ + dir = 4; + icon_state = "map" + }, +/obj/effect/floor_decal/industrial/warning/corner{ + icon_state = "warningcorner"; + dir = 1 + }, +/turf/simulated/floor/plating, +/area/maintenance/locker) +"dsq" = ( +/obj/structure/cable{ + d1 = 1; + d2 = 2; + icon_state = "1-2"; + pixel_y = 0 + }, +/obj/effect/floor_decal/steeldecal/steel_decals4{ + dir = 8 + }, +/obj/effect/floor_decal/steeldecal/steel_decals4{ + dir = 5 + }, +/turf/simulated/floor/tiled, +/area/hallway/secondary/docking_hallway2) +"dsr" = ( +/obj/effect/floor_decal/steeldecal/steel_decals4{ + dir = 8 + }, +/obj/effect/floor_decal/steeldecal/steel_decals4{ + dir = 5 + }, +/turf/simulated/floor/tiled, +/area/hallway/secondary/docking_hallway2) +"dss" = ( +/turf/simulated/floor/wood, +/area/hallway/secondary/entry/docking_lounge) +"dst" = ( +/obj/structure/bed/chair/office/dark{ + dir = 4 + }, +/turf/simulated/floor/wood, +/area/hallway/secondary/entry/docking_lounge) +"dsu" = ( +/obj/structure/table/woodentable, +/obj/item/weapon/paper, +/obj/item/device/taperecorder, +/obj/item/device/tape/random, +/obj/machinery/firealarm{ + dir = 4; + pixel_x = 24 + }, +/turf/simulated/floor/wood, +/area/hallway/secondary/entry/docking_lounge) +"dsv" = ( +/obj/structure/table/standard, +/obj/random/tech_supply, +/obj/random/tech_supply, +/obj/random/tech_supply, +/obj/random/tech_supply, +/obj/machinery/firealarm{ + dir = 8; + pixel_x = -24 + }, +/obj/effect/floor_decal/borderfloor{ + dir = 8 + }, +/obj/effect/floor_decal/corner/yellow/border{ + dir = 8 + }, +/turf/simulated/floor/tiled, +/area/storage/primary) +"dsw" = ( +/obj/effect/landmark/start{ + name = "Assistant" + }, +/obj/effect/floor_decal/industrial/outline/grey, +/obj/machinery/hologram/holopad, +/turf/simulated/floor/tiled, +/area/storage/primary) +"dsx" = ( +/obj/structure/table/standard, +/obj/random/tech_supply, +/obj/random/tech_supply, +/obj/random/tech_supply, +/obj/random/tech_supply, +/obj/item/device/radio/intercom{ + dir = 4; + name = "Station Intercom (General)"; + pixel_x = 21 + }, +/obj/effect/floor_decal/borderfloor{ + dir = 4 + }, +/obj/effect/floor_decal/corner/yellow/border{ + dir = 4 + }, +/turf/simulated/floor/tiled, +/area/storage/primary) +"dsy" = ( +/obj/structure/closet/secure_closet/security, +/obj/machinery/recharger/wallcharger{ + pixel_x = 4; + pixel_y = -30 + }, +/obj/machinery/firealarm{ + dir = 8; + pixel_x = -24 + }, +/obj/machinery/atmospherics/unary/vent_scrubber/on{ + dir = 4 + }, +/obj/effect/floor_decal/borderfloor{ + dir = 10 + }, +/obj/effect/floor_decal/corner/red/border{ + dir = 10 + }, +/turf/simulated/floor/tiled, +/area/security/checkpoint2) +"dsz" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 9 + }, +/obj/structure/reagent_dispensers/peppertank{ + pixel_x = 0; + pixel_y = -30 + }, +/obj/machinery/requests_console{ + department = "Security"; + departmentType = 5; + pixel_x = 32; + pixel_y = -30 + }, +/obj/effect/floor_decal/borderfloor, +/obj/effect/floor_decal/corner/red/border, +/turf/simulated/floor/tiled, +/area/security/checkpoint2) +"dsA" = ( +/obj/structure/closet/wardrobe/red, +/obj/effect/floor_decal/borderfloor{ + dir = 6 + }, +/obj/effect/floor_decal/corner/red/border{ + dir = 6 + }, +/turf/simulated/floor/tiled, +/area/security/checkpoint2) +"dsB" = ( +/obj/effect/floor_decal/industrial/outline/yellow, +/obj/item/device/radio/intercom{ + name = "Station Intercom (General)"; + pixel_y = -21 + }, +/turf/simulated/floor/tiled, +/area/hallway/primary/seconddeck/aft) +"dsC" = ( +/obj/effect/floor_decal/steeldecal/steel_decals4{ + dir = 8 + }, +/obj/effect/floor_decal/steeldecal/steel_decals4{ + dir = 5 + }, +/turf/simulated/floor/tiled, +/area/hallway/primary/seconddeck/aft) +"dsD" = ( +/obj/structure/cable{ + d1 = 1; + d2 = 2; + icon_state = "1-2"; + pixel_y = 0 + }, +/obj/effect/floor_decal/steeldecal/steel_decals4{ + dir = 8 + }, +/obj/effect/floor_decal/steeldecal/steel_decals4{ + dir = 5 + }, +/turf/simulated/floor/tiled, +/area/hallway/primary/seconddeck/aft) +"dsE" = ( +/obj/structure/closet/wardrobe/xenos, +/turf/simulated/floor/tiled/dark, +/area/crew_quarters/seconddeck/locker) +"dsF" = ( +/obj/machinery/atmospherics/unary/vent_scrubber/on{ + dir = 1 + }, +/turf/simulated/floor/tiled, +/area/crew_quarters/seconddeck/locker) +"dsG" = ( +/obj/structure/closet/wardrobe/black, +/obj/structure/window/reinforced{ + dir = 4; + health = 1e+006 + }, +/turf/simulated/floor/tiled/dark, +/area/crew_quarters/seconddeck/locker) +"dsH" = ( +/obj/structure/closet/secure_closet/personal, +/obj/structure/window/reinforced{ + dir = 8; + health = 1e+006 + }, +/turf/simulated/floor/tiled/dark, +/area/crew_quarters/seconddeck/locker) +"dsI" = ( +/obj/machinery/atmospherics/unary/vent_pump/on{ + dir = 1 + }, +/turf/simulated/floor/tiled, +/area/crew_quarters/seconddeck/locker) +"dsJ" = ( +/obj/structure/closet/secure_closet/personal, +/turf/simulated/floor/tiled/dark, +/area/crew_quarters/seconddeck/locker) +"dsK" = ( +/obj/machinery/atmospherics/unary/vent_scrubber/on{ + dir = 4 + }, +/obj/machinery/alarm{ + dir = 4; + icon_state = "alarm0"; + pixel_x = -22 + }, +/turf/simulated/floor/carpet, +/area/crew_quarters/sleep/vistor_room_1) +"dsL" = ( +/obj/item/weapon/stool/padded, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 5 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 9 + }, +/turf/simulated/floor/carpet, +/area/crew_quarters/sleep/vistor_room_1) +"dsM" = ( +/obj/machinery/atmospherics/unary/vent_pump/on{ + dir = 8 + }, +/obj/machinery/firealarm{ + dir = 4; + pixel_x = 24 + }, +/turf/simulated/floor/carpet, +/area/crew_quarters/sleep/vistor_room_1) +"dsN" = ( +/obj/machinery/atmospherics/unary/vent_pump/on{ + dir = 4 + }, +/obj/machinery/firealarm{ + dir = 8; + pixel_x = -24 + }, +/turf/simulated/floor/carpet, +/area/crew_quarters/sleep/vistor_room_2) +"dsO" = ( +/obj/item/weapon/stool/padded, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 9; + pixel_y = 0 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 5 + }, +/turf/simulated/floor/carpet, +/area/crew_quarters/sleep/vistor_room_2) +"dsP" = ( +/obj/machinery/atmospherics/unary/vent_scrubber/on{ + dir = 8 + }, +/obj/machinery/alarm{ + dir = 8; + pixel_x = 22; + pixel_y = 0 + }, +/turf/simulated/floor/carpet, +/area/crew_quarters/sleep/vistor_room_2) +"dsQ" = ( +/obj/structure/bed/chair, +/obj/item/weapon/handcuffs/fuzzy, +/obj/random/contraband, +/turf/simulated/floor, +/area/crew_quarters/seconddeck/locker) +"dsR" = ( +/obj/machinery/atmospherics/binary/pump/on{ + dir = 1; + target_pressure = 200 + }, +/obj/structure/cable{ + d1 = 1; + d2 = 2; + icon_state = "1-2"; + pixel_y = 0 + }, +/turf/simulated/floor/plating, +/area/maintenance/locker) +"dsS" = ( +/obj/machinery/atmospherics/pipe/simple/hidden, +/obj/structure/flora/pottedplant/dead, +/turf/simulated/floor/plating, +/area/maintenance/locker) +"dsT" = ( +/turf/space, +/area/shuttle/shuttle1/arrivals_dock) +"dsU" = ( +/obj/machinery/door/firedoor/border_only, +/obj/machinery/door/airlock/glass, +/obj/structure/cable{ + d1 = 1; + d2 = 2; + icon_state = "1-2"; + pixel_y = 0 + }, +/turf/simulated/floor/tiled/steel_grid, +/area/hallway/secondary/docking_hallway2) +"dsV" = ( +/obj/machinery/door/firedoor/glass, +/obj/machinery/door/airlock/glass, +/turf/simulated/floor/tiled/steel_grid, +/area/hallway/secondary/docking_hallway2) +"dsW" = ( +/obj/machinery/papershredder, +/obj/machinery/newscaster{ + pixel_x = -30; + pixel_y = 0 + }, +/obj/structure/extinguisher_cabinet{ + pixel_y = -30 + }, +/turf/simulated/floor/wood, +/area/hallway/secondary/entry/docking_lounge) +"dsX" = ( +/obj/machinery/disposal, +/obj/structure/disposalpipe/trunk{ + dir = 1 + }, +/turf/simulated/floor/wood, +/area/hallway/secondary/entry/docking_lounge) +"dsY" = ( +/obj/machinery/libraryscanner, +/obj/machinery/camera/network/civilian{ + c_tag = "CIV - Arrivals Lounge"; + dir = 1 + }, +/turf/simulated/floor/wood, +/area/hallway/secondary/entry/docking_lounge) +"dsZ" = ( +/obj/structure/filingcabinet, +/turf/simulated/floor/wood, +/area/hallway/secondary/entry/docking_lounge) +"dta" = ( +/obj/machinery/ai_status_display, +/turf/simulated/wall, +/area/hallway/secondary/entry/docking_lounge) +"dtb" = ( +/obj/structure/table/standard, +/obj/random/tech_supply, +/obj/random/tech_supply, +/obj/random/tech_supply, +/obj/random/tech_supply, +/obj/machinery/requests_console{ + department = "Tool Storage"; + departmentType = 0; + pixel_y = -30 + }, +/obj/effect/floor_decal/borderfloor{ + dir = 10 + }, +/obj/effect/floor_decal/corner/yellow/border{ + dir = 10 + }, +/turf/simulated/floor/tiled, +/area/storage/primary) +"dtc" = ( +/obj/structure/table/standard, +/obj/random/tech_supply, +/obj/random/tech_supply, +/obj/random/tech_supply, +/obj/random/tech_supply, +/obj/effect/floor_decal/borderfloor, +/obj/effect/floor_decal/corner/yellow/border, +/turf/simulated/floor/tiled, +/area/storage/primary) +"dtd" = ( +/obj/structure/table/standard, +/obj/machinery/cell_charger, +/obj/random/tech_supply, +/obj/random/tech_supply, +/obj/random/tech_supply, +/obj/random/tech_supply, +/obj/machinery/camera/network/civilian{ + c_tag = "CIV - Primary Tool Storage"; + dir = 1 + }, +/obj/effect/floor_decal/borderfloor, +/obj/effect/floor_decal/corner/yellow/border, +/turf/simulated/floor/tiled, +/area/storage/primary) +"dte" = ( +/obj/structure/table/standard, +/obj/random/tech_supply, +/obj/random/tech_supply, +/obj/random/tech_supply, +/obj/random/tech_supply, +/obj/machinery/newscaster{ + pixel_x = 30; + pixel_y = 0 + }, +/obj/structure/extinguisher_cabinet{ + pixel_y = -30 + }, +/obj/effect/floor_decal/borderfloor{ + dir = 6 + }, +/obj/effect/floor_decal/corner/yellow/border{ + dir = 6 + }, +/turf/simulated/floor/tiled, +/area/storage/primary) +"dtf" = ( +/turf/simulated/wall/r_wall, +/area/security/checkpoint2) +"dtg" = ( +/turf/simulated/wall/r_wall, +/area/hallway/primary/seconddeck/dockhallway) +"dth" = ( +/obj/machinery/door/firedoor/glass, +/obj/machinery/door/airlock/glass{ + name = "Central Access" + }, +/turf/simulated/floor/tiled/steel_grid, +/area/hallway/primary/seconddeck/dockhallway) +"dti" = ( +/obj/machinery/door/firedoor/border_only, +/obj/effect/wingrille_spawn/reinforced, +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/turf/simulated/floor/plating, +/area/hallway/primary/seconddeck/dockhallway) +"dtj" = ( +/obj/machinery/door/firedoor/glass, +/obj/machinery/door/airlock/glass{ + name = "Central Access" + }, +/obj/structure/cable{ + d1 = 1; + d2 = 2; + icon_state = "1-2"; + pixel_y = 0 + }, +/turf/simulated/floor/tiled/steel_grid, +/area/hallway/primary/seconddeck/dockhallway) +"dtk" = ( +/turf/simulated/wall/r_wall, +/area/crew_quarters/seconddeck/locker) +"dtl" = ( +/obj/machinery/alarm{ + dir = 1; + pixel_y = -22 + }, +/turf/simulated/floor/tiled, +/area/crew_quarters/seconddeck/locker) +"dtm" = ( +/obj/structure/closet/wardrobe/suit, +/obj/structure/window/reinforced{ + dir = 4; + health = 1e+006 + }, +/turf/simulated/floor/tiled/dark, +/area/crew_quarters/seconddeck/locker) +"dtn" = ( +/obj/machinery/camera/network/civilian{ + c_tag = "Civ - Locker Room One"; + dir = 1 + }, +/turf/simulated/floor/tiled, +/area/crew_quarters/seconddeck/locker) +"dto" = ( +/obj/structure/bed/padded, +/obj/item/weapon/bedsheet/brown, +/turf/simulated/floor/carpet, +/area/crew_quarters/sleep/vistor_room_1) +"dtp" = ( +/obj/structure/table/standard, +/obj/machinery/newscaster{ + pixel_y = -30 + }, +/obj/item/clothing/head/soft/grey{ + pixel_x = -2; + pixel_y = 3 + }, +/obj/machinery/light, +/turf/simulated/floor/carpet, +/area/crew_quarters/sleep/vistor_room_1) +"dtq" = ( +/obj/structure/bed/padded, +/obj/item/weapon/bedsheet/brown, +/obj/machinery/computer/security/telescreen/entertainment{ + icon_state = "frame"; + pixel_x = 0; + pixel_y = -32 + }, +/turf/simulated/floor/carpet, +/area/crew_quarters/sleep/vistor_room_1) +"dtr" = ( +/obj/structure/bed/padded, +/obj/item/weapon/bedsheet/brown, +/obj/machinery/computer/security/telescreen/entertainment{ + icon_state = "frame"; + pixel_x = 0; + pixel_y = -32 + }, +/turf/simulated/floor/carpet, +/area/crew_quarters/sleep/vistor_room_2) +"dts" = ( +/obj/structure/table/standard, +/obj/machinery/newscaster{ + pixel_y = -30 + }, +/obj/machinery/light, +/obj/item/device/communicator, +/turf/simulated/floor/carpet, +/area/crew_quarters/sleep/vistor_room_2) +"dtt" = ( +/obj/structure/bed/padded, +/obj/item/weapon/bedsheet/brown, +/turf/simulated/floor/carpet, +/area/crew_quarters/sleep/vistor_room_2) +"dtu" = ( +/obj/machinery/door/firedoor/border_only, +/obj/machinery/atmospherics/pipe/simple/hidden/universal, +/obj/structure/cable{ + d1 = 1; + d2 = 2; + icon_state = "1-2"; + pixel_y = 0 + }, +/obj/machinery/door/airlock/maintenance{ + req_access = null; + req_one_access = list(12,25,27,28,35) + }, +/turf/simulated/floor/plating, +/area/maintenance/locker) +"dtv" = ( +/obj/machinery/atmospherics/pipe/simple/hidden, +/turf/simulated/wall, +/area/maintenance/locker) +"dtw" = ( +/obj/structure/cable{ + d1 = 1; + d2 = 2; + icon_state = "1-2"; + pixel_y = 0 + }, +/obj/effect/floor_decal/steeldecal/steel_decals4{ + dir = 9 + }, +/obj/effect/floor_decal/steeldecal/steel_decals4{ + dir = 4 + }, +/turf/simulated/floor/tiled, +/area/hallway/primary/seconddeck/dockhallway) +"dtx" = ( +/obj/effect/floor_decal/steeldecal/steel_decals4{ + dir = 9 + }, +/obj/effect/floor_decal/steeldecal/steel_decals4{ + dir = 4 + }, +/turf/simulated/floor/tiled, +/area/hallway/primary/seconddeck/dockhallway) +"dty" = ( +/obj/structure/closet/emcloset, +/turf/simulated/floor/tiled/dark, +/area/hallway/primary/seconddeck/dockhallway) +"dtz" = ( +/turf/simulated/wall, +/area/storage/primary) +"dtA" = ( +/turf/simulated/wall, +/area/hallway/primary/seconddeck/dockhallway) +"dtB" = ( +/obj/machinery/power/apc{ + dir = 1; + name = "north bump"; + pixel_x = 0; + pixel_y = 24 + }, +/obj/structure/cable{ + icon_state = "0-2"; + d2 = 2 + }, +/turf/simulated/floor/tiled/dark, +/area/hallway/primary/seconddeck/dockhallway) +"dtC" = ( +/turf/simulated/floor/tiled/dark, +/area/hallway/primary/seconddeck/dockhallway) +"dtD" = ( +/obj/structure/sign/deck/second, +/turf/simulated/wall/r_wall, +/area/hallway/primary/seconddeck/dockhallway) +"dtE" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/obj/machinery/camera/network/second_deck{ + c_tag = "Second Deck - Dock Hallway Three" + }, +/turf/simulated/floor/tiled, +/area/hallway/primary/seconddeck/dockhallway) +"dtF" = ( +/obj/item/device/radio/intercom{ + dir = 1; + name = "Station Intercom (General)"; + pixel_y = 21 + }, +/turf/simulated/floor/tiled/dark, +/area/hallway/primary/seconddeck/dockhallway) +"dtG" = ( +/obj/machinery/door/firedoor/border_only, +/obj/effect/wingrille_spawn/reinforced, +/turf/simulated/floor/plating, +/area/hallway/primary/seconddeck/dockhallway) +"dtH" = ( +/obj/structure/cable{ + d1 = 1; + d2 = 2; + icon_state = "1-2"; + pixel_y = 0 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/turf/simulated/floor/tiled/dark, +/area/hallway/primary/seconddeck/dockhallway) +"dtI" = ( +/obj/structure/closet/emcloset, +/obj/machinery/atmospherics/pipe/simple/hidden, +/turf/simulated/floor/tiled/dark, +/area/hallway/primary/seconddeck/dockhallway) +"dtJ" = ( +/obj/machinery/firealarm{ + dir = 2; + layer = 3.3; + pixel_x = 0; + pixel_y = 26 + }, +/obj/machinery/light{ + icon_state = "tube1"; + dir = 8 + }, +/turf/simulated/floor/tiled, +/area/hallway/primary/seconddeck/dockhallway) +"dtK" = ( +/obj/structure/cable{ + d1 = 1; + d2 = 2; + icon_state = "1-2"; + pixel_y = 0 + }, +/turf/simulated/floor/tiled, +/area/hallway/primary/seconddeck/dockhallway) +"dtL" = ( +/turf/simulated/floor/tiled, +/area/hallway/primary/seconddeck/dockhallway) +"dtM" = ( +/obj/structure/closet/emcloset, +/obj/effect/floor_decal/borderfloor{ + dir = 1 + }, +/obj/effect/floor_decal/corner/white/border{ + dir = 1 + }, +/turf/simulated/floor/tiled, +/area/hallway/primary/seconddeck/dockhallway) +"dtN" = ( +/obj/effect/floor_decal/borderfloor{ + dir = 1 + }, +/obj/effect/floor_decal/corner/blue/border{ + dir = 1 + }, +/turf/simulated/floor/tiled, +/area/hallway/primary/seconddeck/dockhallway) +"dtO" = ( +/obj/machinery/atmospherics/unary/vent_pump/on, +/obj/effect/floor_decal/borderfloor{ + dir = 1 + }, +/obj/effect/floor_decal/corner/white/border{ + dir = 1 + }, +/turf/simulated/floor/tiled, +/area/hallway/primary/seconddeck/dockhallway) +"dtP" = ( +/obj/structure/bed/chair, +/obj/effect/floor_decal/borderfloor{ + dir = 1 + }, +/obj/effect/floor_decal/corner/blue/border{ + dir = 1 + }, +/turf/simulated/floor/tiled, +/area/hallway/primary/seconddeck/dockhallway) +"dtQ" = ( +/obj/machinery/firealarm{ + dir = 2; + layer = 3.3; + pixel_x = 0; + pixel_y = 26 + }, +/obj/structure/bed/chair, +/obj/effect/floor_decal/borderfloor{ + dir = 1 + }, +/obj/effect/floor_decal/corner/white/border{ + dir = 1 + }, +/turf/simulated/floor/tiled, +/area/hallway/primary/seconddeck/dockhallway) +"dtR" = ( +/obj/structure/table/glass, +/obj/effect/floor_decal/borderfloor{ + dir = 1 + }, +/obj/effect/floor_decal/corner/white/border{ + dir = 1 + }, +/turf/simulated/floor/tiled, +/area/hallway/primary/seconddeck/dockhallway) +"dtS" = ( +/obj/structure/table/glass, +/obj/effect/floor_decal/borderfloor{ + dir = 1 + }, +/obj/effect/floor_decal/corner/blue/border{ + dir = 1 + }, +/turf/simulated/floor/tiled, +/area/hallway/primary/seconddeck/dockhallway) +"dtT" = ( +/obj/structure/bed/chair, +/obj/effect/floor_decal/borderfloor{ + dir = 1 + }, +/obj/effect/floor_decal/corner/white/border{ + dir = 1 + }, +/turf/simulated/floor/tiled, +/area/hallway/primary/seconddeck/dockhallway) +"dtU" = ( +/obj/machinery/atmospherics/unary/vent_pump/on, +/obj/structure/bed/chair, +/obj/effect/floor_decal/borderfloor{ + dir = 1 + }, +/obj/effect/floor_decal/corner/blue/border{ + dir = 1 + }, +/turf/simulated/floor/tiled, +/area/hallway/primary/seconddeck/dockhallway) +"dtV" = ( +/obj/effect/floor_decal/borderfloor{ + dir = 1 + }, +/obj/effect/floor_decal/corner/blue/border{ + dir = 1 + }, +/obj/effect/floor_decal/borderfloor/corner2{ + dir = 1 + }, +/obj/effect/floor_decal/corner/blue/bordercorner2{ + dir = 1 + }, +/turf/simulated/floor/tiled, +/area/hallway/primary/seconddeck/dockhallway) +"dtW" = ( +/obj/machinery/door/firedoor/border_only, +/turf/simulated/floor/tiled, +/area/hallway/primary/seconddeck/dockhallway) +"dtX" = ( +/obj/machinery/atmospherics/unary/vent_pump/on, +/turf/simulated/floor/tiled, +/area/hallway/primary/seconddeck/dockhallway) +"dtY" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/turf/simulated/floor/tiled, +/area/hallway/primary/seconddeck/dockhallway) +"dtZ" = ( +/obj/effect/floor_decal/borderfloor{ + dir = 1 + }, +/obj/effect/floor_decal/corner/blue/border{ + dir = 1 + }, +/obj/effect/floor_decal/borderfloor/corner2{ + dir = 4 + }, +/obj/effect/floor_decal/corner/blue/bordercorner2{ + dir = 4 + }, +/turf/simulated/floor/tiled, +/area/hallway/primary/seconddeck/dockhallway) +"dua" = ( +/obj/item/weapon/book/codex/lore/vir, +/obj/structure/table/glass, +/obj/effect/floor_decal/borderfloor{ + dir = 1 + }, +/obj/effect/floor_decal/corner/white/border{ + dir = 1 + }, +/turf/simulated/floor/tiled, +/area/hallway/primary/seconddeck/dockhallway) +"dub" = ( +/obj/effect/floor_decal/borderfloor{ + dir = 1 + }, +/obj/effect/floor_decal/corner/white/border{ + dir = 1 + }, +/turf/simulated/floor/tiled, +/area/hallway/primary/seconddeck/dockhallway) +"duc" = ( +/obj/structure/cable{ + d1 = 1; + d2 = 2; + icon_state = "1-2"; + pixel_y = 0 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/turf/simulated/floor/tiled, +/area/hallway/primary/seconddeck/dockhallway) +"dud" = ( +/obj/machinery/atmospherics/pipe/simple/hidden, +/turf/simulated/floor/tiled, +/area/hallway/primary/seconddeck/dockhallway) +"due" = ( +/obj/machinery/firealarm{ + dir = 2; + layer = 3.3; + pixel_x = 0; + pixel_y = 26 + }, +/obj/machinery/light{ + dir = 4 + }, +/turf/simulated/floor/tiled, +/area/hallway/primary/seconddeck/dockhallway) +"duf" = ( +/turf/space, +/area/shuttle/shuttle2/seconddeck) +"dug" = ( +/obj/machinery/atmospherics/unary/vent_pump/on{ + dir = 4 + }, +/turf/simulated/floor/tiled, +/area/hallway/primary/seconddeck/dockhallway) +"duh" = ( +/obj/structure/cable{ + d1 = 1; + d2 = 4; + icon_state = "1-4" + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 6 + }, +/turf/simulated/floor/tiled, +/area/hallway/primary/seconddeck/dockhallway) +"dui" = ( +/obj/structure/cable{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/obj/structure/cable{ + d1 = 2; + d2 = 8; + icon_state = "2-8" + }, +/obj/machinery/atmospherics/pipe/manifold/hidden/supply{ + dir = 1 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden{ + dir = 6 + }, +/turf/simulated/floor/tiled, +/area/hallway/primary/seconddeck/dockhallway) +"duj" = ( +/obj/structure/cable{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{ + dir = 1 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden{ + dir = 4 + }, +/turf/simulated/floor/tiled, +/area/hallway/primary/seconddeck/dockhallway) +"duk" = ( +/obj/structure/cable{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/obj/machinery/door/firedoor/glass, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden{ + dir = 4 + }, +/turf/simulated/floor/tiled, +/area/hallway/primary/seconddeck/dockhallway) +"dul" = ( +/obj/structure/cable{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden{ + dir = 4 + }, +/turf/simulated/floor/tiled, +/area/hallway/primary/seconddeck/dockhallway) +"dum" = ( +/obj/structure/cable{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/obj/machinery/atmospherics/pipe/manifold/hidden/supply, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden{ + dir = 4 + }, +/turf/simulated/floor/tiled, +/area/hallway/primary/seconddeck/dockhallway) +"dun" = ( +/obj/structure/cable{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden{ + dir = 4 + }, +/obj/machinery/hologram/holopad, +/obj/effect/floor_decal/industrial/outline/grey, +/turf/simulated/floor/tiled, +/area/hallway/primary/seconddeck/dockhallway) +"duo" = ( +/obj/structure/cable{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/obj/structure/cable{ + d1 = 1; + d2 = 8; + icon_state = "1-8" + }, +/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{ + dir = 1 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden{ + dir = 4 + }, +/turf/simulated/floor/tiled, +/area/hallway/primary/seconddeck/dockhallway) +"dup" = ( +/obj/structure/cable{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/obj/structure/cable{ + d1 = 2; + d2 = 8; + icon_state = "2-8" + }, +/obj/machinery/atmospherics/pipe/manifold/hidden/supply, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden{ + dir = 4 + }, +/turf/simulated/floor/tiled, +/area/hallway/primary/seconddeck/dockhallway) +"duq" = ( +/obj/machinery/atmospherics/pipe/manifold4w/hidden/supply, +/obj/machinery/atmospherics/pipe/manifold4w/hidden/scrubbers, +/obj/structure/cable{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/obj/machinery/atmospherics/pipe/manifold/hidden{ + dir = 1; + icon_state = "map" + }, +/obj/machinery/hologram/holopad, +/obj/effect/floor_decal/industrial/outline/grey, +/obj/effect/landmark{ + name = "lightsout" + }, +/turf/simulated/floor/tiled, +/area/hallway/primary/seconddeck/dockhallway) +"dur" = ( +/obj/structure/cable{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden{ + dir = 4 + }, +/obj/effect/landmark{ + name = "Observer-Start" + }, +/obj/effect/landmark/start, +/turf/simulated/floor/tiled, +/area/hallway/primary/seconddeck/dockhallway) +"dus" = ( +/obj/structure/cable{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden{ + dir = 4 + }, +/obj/machinery/hologram/holopad, +/obj/effect/floor_decal/industrial/outline/grey, +/turf/simulated/floor/tiled/monotile, +/area/hallway/primary/seconddeck/dockhallway) +"dut" = ( +/obj/structure/cable{ + d1 = 2; + d2 = 8; + icon_state = "2-8" + }, +/obj/structure/cable{ + d1 = 1; + d2 = 8; + icon_state = "1-8" + }, +/obj/machinery/atmospherics/pipe/manifold4w/hidden/supply, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/manifold/hidden{ + dir = 1; + icon_state = "map" + }, +/turf/simulated/floor/tiled, +/area/hallway/primary/seconddeck/dockhallway) +"duu" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 10 + }, +/obj/machinery/atmospherics/pipe/simple/hidden{ + dir = 9; + icon_state = "intact" + }, +/turf/simulated/floor/tiled, +/area/hallway/primary/seconddeck/dockhallway) +"duv" = ( +/obj/machinery/atmospherics/unary/vent_pump/on{ + dir = 8 + }, +/turf/simulated/floor/tiled, +/area/hallway/primary/seconddeck/dockhallway) +"duw" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/obj/effect/floor_decal/sign/dock/one, +/obj/machinery/alarm{ + dir = 4; + icon_state = "alarm0"; + pixel_x = -22 + }, +/obj/machinery/camera/network/second_deck{ + c_tag = "Second Deck - Dock Hallway One"; + dir = 4 + }, +/obj/effect/floor_decal/steeldecal/steel_decals4{ + dir = 8 + }, +/obj/effect/floor_decal/steeldecal/steel_decals4{ + dir = 5 + }, +/turf/simulated/floor/tiled, +/area/hallway/primary/seconddeck/dockhallway) +"dux" = ( +/obj/structure/cable{ + d1 = 1; + d2 = 2; + icon_state = "1-2"; + pixel_y = 0 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/machinery/atmospherics/pipe/simple/hidden, +/obj/effect/floor_decal/steeldecal/steel_decals4{ + dir = 8 + }, +/obj/effect/floor_decal/steeldecal/steel_decals4{ + dir = 5 + }, +/turf/simulated/floor/tiled, +/area/hallway/primary/seconddeck/dockhallway) +"duy" = ( +/obj/machinery/atmospherics/unary/vent_scrubber/on{ + dir = 1 + }, +/turf/simulated/floor/tiled, +/area/hallway/primary/seconddeck/dockhallway) +"duz" = ( +/obj/effect/floor_decal/borderfloor/corner, +/obj/effect/floor_decal/corner/white/bordercorner, +/turf/simulated/floor/tiled, +/area/hallway/primary/seconddeck/dockhallway) +"duA" = ( +/obj/machinery/status_display{ + pixel_x = 0; + pixel_y = -32 + }, +/obj/effect/floor_decal/borderfloor, +/obj/effect/floor_decal/corner/blue/border, +/turf/simulated/floor/tiled, +/area/hallway/primary/seconddeck/dockhallway) +"duB" = ( +/obj/structure/extinguisher_cabinet{ + pixel_y = -30 + }, +/obj/effect/floor_decal/borderfloor, +/obj/effect/floor_decal/corner/white/border, +/turf/simulated/floor/tiled, +/area/hallway/primary/seconddeck/dockhallway) +"duC" = ( +/obj/machinery/light, +/obj/effect/floor_decal/borderfloor, +/obj/effect/floor_decal/corner/blue/border, +/turf/simulated/floor/tiled, +/area/hallway/primary/seconddeck/dockhallway) +"duD" = ( +/obj/effect/floor_decal/borderfloor, +/obj/effect/floor_decal/corner/white/border, +/turf/simulated/floor/tiled, +/area/hallway/primary/seconddeck/dockhallway) +"duE" = ( +/obj/machinery/atmospherics/unary/vent_scrubber/on{ + dir = 1 + }, +/obj/effect/floor_decal/borderfloor, +/obj/effect/floor_decal/corner/blue/border, +/turf/simulated/floor/tiled, +/area/hallway/primary/seconddeck/dockhallway) +"duF" = ( +/obj/effect/floor_decal/borderfloor, +/obj/effect/floor_decal/corner/white/border, +/obj/machinery/atm{ + pixel_y = -30 + }, +/turf/simulated/floor/tiled, +/area/hallway/primary/seconddeck/dockhallway) +"duG" = ( +/obj/machinery/alarm{ + dir = 1; + pixel_y = -22 + }, +/obj/effect/floor_decal/borderfloor, +/obj/effect/floor_decal/corner/blue/border, +/turf/simulated/floor/tiled, +/area/hallway/primary/seconddeck/dockhallway) +"duH" = ( +/obj/machinery/camera/network/second_deck{ + c_tag = "Second Deck - Dock Hallway Two"; + dir = 1 + }, +/obj/effect/floor_decal/borderfloor, +/obj/effect/floor_decal/corner/white/border, +/turf/simulated/floor/tiled, +/area/hallway/primary/seconddeck/dockhallway) +"duI" = ( +/obj/effect/floor_decal/borderfloor, +/obj/effect/floor_decal/corner/blue/border, +/turf/simulated/floor/tiled, +/area/hallway/primary/seconddeck/dockhallway) +"duJ" = ( +/obj/machinery/atmospherics/unary/vent_scrubber/on{ + dir = 1 + }, +/obj/machinery/ai_status_display{ + pixel_y = -32 + }, +/obj/item/device/radio/intercom{ + dir = 4; + name = "Station Intercom (General)"; + pixel_x = 21 + }, +/obj/effect/floor_decal/borderfloor, +/obj/effect/floor_decal/corner/white/border, +/turf/simulated/floor/tiled, +/area/hallway/primary/seconddeck/dockhallway) +"duK" = ( +/obj/machinery/light, +/obj/machinery/alarm{ + dir = 4; + icon_state = "alarm0"; + pixel_x = -22 + }, +/turf/simulated/floor/tiled/dark, +/area/hallway/primary/seconddeck/dockhallway) +"duL" = ( +/obj/structure/cable{ + d1 = 1; + d2 = 2; + icon_state = "1-2"; + pixel_y = 0 + }, +/obj/effect/floor_decal/steeldecal/steel_decals4{ + dir = 8 + }, +/obj/effect/floor_decal/steeldecal/steel_decals4{ + dir = 5 + }, +/turf/simulated/floor/tiled, +/area/hallway/primary/seconddeck/dockhallway) +"duM" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/obj/machinery/atmospherics/pipe/simple/hidden, +/obj/effect/floor_decal/sign/dock/two, +/turf/simulated/floor/tiled, +/area/hallway/primary/seconddeck/dockhallway) +"duN" = ( +/obj/machinery/atmospherics/unary/vent_scrubber/on{ + dir = 1 + }, +/obj/effect/floor_decal/steeldecal/steel_decals4{ + dir = 8 + }, +/obj/effect/floor_decal/steeldecal/steel_decals4{ + dir = 5 + }, +/turf/simulated/floor/tiled, +/area/hallway/primary/seconddeck/dockhallway) +"duO" = ( +/obj/machinery/firealarm{ + dir = 4; + pixel_x = 24 + }, +/turf/simulated/floor/tiled/dark, +/area/hallway/primary/seconddeck/dockhallway) +"duP" = ( +/obj/machinery/ai_status_display{ + pixel_y = -32 + }, +/obj/item/device/radio/intercom{ + dir = 8; + name = "Station Intercom (General)"; + pixel_x = -21 + }, +/obj/effect/floor_decal/borderfloor, +/obj/effect/floor_decal/corner/white/border, +/turf/simulated/floor/tiled, +/area/hallway/primary/seconddeck/dockhallway) +"duQ" = ( +/obj/machinery/light, +/obj/effect/floor_decal/borderfloor, +/obj/effect/floor_decal/corner/white/border, +/turf/simulated/floor/tiled, +/area/hallway/primary/seconddeck/dockhallway) +"duR" = ( +/obj/machinery/atmospherics/unary/vent_scrubber/on{ + dir = 1 + }, +/obj/structure/extinguisher_cabinet{ + pixel_y = -30 + }, +/obj/effect/floor_decal/borderfloor, +/obj/effect/floor_decal/corner/white/border, +/turf/simulated/floor/tiled, +/area/hallway/primary/seconddeck/dockhallway) +"duS" = ( +/obj/effect/floor_decal/borderfloor/corner{ + dir = 8 + }, +/obj/effect/floor_decal/corner/white/bordercorner{ + dir = 8 + }, +/turf/simulated/floor/tiled, +/area/hallway/primary/seconddeck/dockhallway) +"duT" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/obj/effect/floor_decal/sign/dock/three, +/obj/machinery/alarm{ + dir = 8; + pixel_x = 22; + pixel_y = 0 + }, +/obj/machinery/camera/network/second_deck{ + c_tag = "Second Deck - Dock Hallway Five"; + dir = 8 + }, +/obj/effect/floor_decal/steeldecal/steel_decals4{ + dir = 8 + }, +/obj/effect/floor_decal/steeldecal/steel_decals4{ + dir = 5 + }, +/turf/simulated/floor/tiled, +/area/hallway/primary/seconddeck/dockhallway) +"duU" = ( +/turf/simulated/wall/r_wall, +/area/hallway/secondary/entry/D1) +"duV" = ( +/obj/machinery/door/firedoor/border_only, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/obj/machinery/door/airlock/glass{ + name = "Dock" + }, +/turf/simulated/floor/tiled/steel_grid, +/area/hallway/secondary/entry/D1) +"duW" = ( +/obj/structure/cable{ + d1 = 1; + d2 = 2; + icon_state = "1-2"; + pixel_y = 0 + }, +/obj/machinery/door/firedoor/glass, +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/machinery/atmospherics/pipe/simple/hidden, +/obj/machinery/door/airlock/glass{ + name = "Dock" + }, +/turf/simulated/floor/tiled/steel_grid, +/area/hallway/secondary/entry/D1) +"duX" = ( +/obj/machinery/door/firedoor/glass, +/obj/effect/wingrille_spawn/reinforced, +/turf/simulated/floor/plating, +/area/hallway/primary/seconddeck/dockhallway) +"duY" = ( +/turf/simulated/wall/r_wall, +/area/hallway/secondary/entry/D2) +"duZ" = ( +/obj/structure/sign/directions/engineering{ + dir = 1; + pixel_y = 10 + }, +/obj/structure/sign/directions/cargo{ + dir = 1 + }, +/obj/structure/sign/directions/security{ + dir = 1; + pixel_y = -10 + }, +/turf/simulated/wall, +/area/hallway/secondary/entry/D2) +"dva" = ( +/obj/structure/cable{ + d1 = 1; + d2 = 2; + icon_state = "1-2"; + pixel_y = 0 + }, +/obj/machinery/door/firedoor/border_only, +/obj/machinery/door/airlock/glass{ + name = "Dock" + }, +/turf/simulated/floor/tiled/steel_grid, +/area/hallway/secondary/entry/D2) +"dvb" = ( +/obj/machinery/door/firedoor/glass, +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/obj/machinery/atmospherics/pipe/simple/hidden, +/obj/effect/wingrille_spawn/reinforced, +/turf/simulated/floor/plating, +/area/hallway/secondary/entry/D2) +"dvc" = ( +/obj/machinery/door/firedoor/border_only, +/obj/machinery/door/airlock/glass{ + name = "Dock" + }, +/turf/simulated/floor/tiled/steel_grid, +/area/hallway/secondary/entry/D2) +"dvd" = ( +/obj/structure/sign/directions/bridge{ + dir = 1; + pixel_y = 10 + }, +/obj/structure/sign/directions/science{ + dir = 1 + }, +/obj/structure/sign/directions/medical{ + dir = 1; + pixel_y = -10 + }, +/turf/simulated/wall, +/area/hallway/secondary/entry/D2) +"dve" = ( +/turf/simulated/wall/r_wall, +/area/hallway/secondary/entry/D3) +"dvf" = ( +/obj/structure/cable{ + d1 = 1; + d2 = 2; + icon_state = "1-2"; + pixel_y = 0 + }, +/obj/machinery/door/firedoor/glass, +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/machinery/atmospherics/pipe/simple/hidden, +/obj/machinery/door/airlock/glass{ + name = "Dock" + }, +/turf/simulated/floor/tiled/steel_grid, +/area/hallway/secondary/entry/D3) +"dvg" = ( +/obj/machinery/door/firedoor/border_only, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/obj/machinery/door/airlock/glass{ + name = "Dock" + }, +/turf/simulated/floor/tiled/steel_grid, +/area/hallway/secondary/entry/D3) +"dvh" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/obj/effect/floor_decal/steeldecal/steel_decals4{ + dir = 9 + }, +/obj/effect/floor_decal/steeldecal/steel_decals4{ + dir = 4 + }, +/turf/simulated/floor/tiled, +/area/hallway/secondary/entry/D1) +"dvi" = ( +/obj/structure/cable{ + d1 = 1; + d2 = 2; + icon_state = "1-2"; + pixel_y = 0 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/machinery/atmospherics/pipe/simple/hidden, +/obj/effect/floor_decal/steeldecal/steel_decals4{ + dir = 9 + }, +/obj/effect/floor_decal/steeldecal/steel_decals4{ + dir = 4 + }, +/turf/simulated/floor/tiled, +/area/hallway/secondary/entry/D1) +"dvj" = ( +/obj/machinery/door/firedoor/border_only, +/obj/effect/wingrille_spawn/reinforced, +/turf/simulated/floor/plating, +/area/hallway/secondary/entry/D1) +"dvk" = ( +/obj/machinery/door/firedoor/border_only, +/obj/effect/wingrille_spawn/reinforced, +/turf/simulated/floor/plating, +/area/hallway/secondary/entry/D2) +"dvl" = ( +/obj/structure/cable{ + d1 = 1; + d2 = 2; + icon_state = "1-2"; + pixel_y = 0 + }, +/obj/effect/floor_decal/steeldecal/steel_decals4{ + dir = 9 + }, +/obj/effect/floor_decal/steeldecal/steel_decals4{ + dir = 4 + }, +/turf/simulated/floor/tiled, +/area/hallway/secondary/entry/D2) +"dvm" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/obj/machinery/atmospherics/pipe/simple/hidden, +/turf/simulated/floor/tiled, +/area/hallway/secondary/entry/D2) +"dvn" = ( +/obj/effect/floor_decal/steeldecal/steel_decals4{ + dir = 9 + }, +/obj/effect/floor_decal/steeldecal/steel_decals4{ + dir = 4 + }, +/turf/simulated/floor/tiled, +/area/hallway/secondary/entry/D2) +"dvo" = ( +/obj/machinery/door/firedoor/border_only, +/obj/effect/wingrille_spawn/reinforced, +/turf/simulated/floor/plating, +/area/hallway/secondary/entry/D3) +"dvp" = ( +/obj/structure/cable{ + d1 = 1; + d2 = 2; + icon_state = "1-2"; + pixel_y = 0 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/machinery/atmospherics/pipe/simple/hidden, +/obj/effect/floor_decal/steeldecal/steel_decals4{ + dir = 9 + }, +/obj/effect/floor_decal/steeldecal/steel_decals4{ + dir = 4 + }, +/turf/simulated/floor/tiled, +/area/hallway/secondary/entry/D3) +"dvq" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/obj/effect/floor_decal/steeldecal/steel_decals4{ + dir = 9 + }, +/obj/effect/floor_decal/steeldecal/steel_decals4{ + dir = 4 + }, +/turf/simulated/floor/tiled, +/area/hallway/secondary/entry/D3) +"dvr" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/obj/machinery/alarm{ + dir = 4; + icon_state = "alarm0"; + pixel_x = -22 + }, +/turf/simulated/floor/tiled, +/area/hallway/secondary/entry/D1) +"dvs" = ( +/obj/structure/cable{ + d1 = 1; + d2 = 2; + icon_state = "1-2"; + pixel_y = 0 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/machinery/atmospherics/pipe/simple/hidden, +/turf/simulated/floor/tiled, +/area/hallway/secondary/entry/D1) +"dvt" = ( +/obj/machinery/door/firedoor/glass, +/obj/effect/wingrille_spawn/reinforced, +/turf/simulated/floor/plating, +/area/hallway/secondary/entry/D1) +"dvu" = ( +/obj/machinery/door/firedoor/glass, +/obj/effect/wingrille_spawn/reinforced, +/turf/simulated/floor/plating, +/area/hallway/secondary/entry/D2) +"dvv" = ( +/obj/structure/cable{ + d1 = 1; + d2 = 2; + icon_state = "1-2"; + pixel_y = 0 + }, +/turf/simulated/floor/tiled, +/area/hallway/secondary/entry/D2) +"dvw" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/obj/machinery/atmospherics/pipe/simple/hidden, +/turf/simulated/floor/tiled/monotile, +/area/hallway/secondary/entry/D2) +"dvx" = ( +/turf/simulated/floor/tiled, +/area/hallway/secondary/entry/D2) +"dvy" = ( +/obj/machinery/door/firedoor/glass, +/obj/effect/wingrille_spawn/reinforced, +/turf/simulated/floor/plating, +/area/hallway/secondary/entry/D3) +"dvz" = ( +/obj/structure/cable{ + d1 = 1; + d2 = 2; + icon_state = "1-2"; + pixel_y = 0 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/machinery/atmospherics/pipe/simple/hidden, +/turf/simulated/floor/tiled, +/area/hallway/secondary/entry/D3) +"dvA" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/obj/machinery/alarm{ + dir = 8; + pixel_x = 22; + pixel_y = 0 + }, +/turf/simulated/floor/tiled, +/area/hallway/secondary/entry/D3) +"dvB" = ( +/turf/space, +/area/shuttle/transport1/station) +"dvC" = ( +/obj/structure/sign/warning/docking_area, +/obj/effect/wingrille_spawn/reinforced, +/turf/simulated/floor/plating, +/area/hallway/secondary/entry/D1) +"dvD" = ( +/obj/effect/wingrille_spawn/reinforced, +/turf/simulated/floor/plating, +/area/hallway/secondary/entry/D1) +"dvE" = ( +/obj/structure/closet/emcloset, +/obj/machinery/light{ + icon_state = "tube1"; + dir = 8 + }, +/obj/effect/floor_decal/industrial/warning/corner{ + icon_state = "warningcorner"; + dir = 8 + }, +/turf/simulated/floor/tiled, +/area/hallway/secondary/entry/D1) +"dvF" = ( +/obj/machinery/atmospherics/unary/vent_pump/on{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/turf/simulated/floor/tiled, +/area/hallway/secondary/entry/D1) +"dvG" = ( +/obj/structure/cable{ + d1 = 1; + d2 = 2; + icon_state = "1-2"; + pixel_y = 0 + }, +/obj/machinery/atmospherics/pipe/manifold/hidden/supply{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden, +/turf/simulated/floor/tiled, +/area/hallway/secondary/entry/D1) +"dvH" = ( +/turf/space, +/area/shuttle/escape/station) +"dvI" = ( +/obj/machinery/atmospherics/pipe/manifold/hidden/supply{ + dir = 8 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/obj/machinery/atmospherics/pipe/simple/hidden, +/turf/simulated/floor/tiled/monotile, +/area/hallway/secondary/entry/D2) +"dvJ" = ( +/obj/machinery/atmospherics/unary/vent_pump/on{ + dir = 8 + }, +/obj/machinery/light{ + dir = 4 + }, +/turf/simulated/floor/tiled, +/area/hallway/secondary/entry/D2) +"dvK" = ( +/obj/structure/cable{ + d1 = 1; + d2 = 2; + icon_state = "1-2"; + pixel_y = 0 + }, +/obj/machinery/atmospherics/pipe/manifold/hidden/supply{ + dir = 8 + }, +/obj/machinery/atmospherics/pipe/simple/hidden, +/turf/simulated/floor/tiled, +/area/hallway/secondary/entry/D3) +"dvL" = ( +/obj/machinery/atmospherics/unary/vent_pump/on{ + dir = 8 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/turf/simulated/floor/tiled, +/area/hallway/secondary/entry/D3) +"dvM" = ( +/obj/effect/floor_decal/industrial/warning/corner, +/obj/structure/closet/emcloset, +/obj/machinery/light{ + dir = 4 + }, +/turf/simulated/floor/tiled, +/area/hallway/secondary/entry/D3) +"dvN" = ( +/obj/effect/wingrille_spawn/reinforced, +/turf/simulated/floor/plating, +/area/hallway/secondary/entry/D3) +"dvO" = ( +/obj/structure/sign/warning/docking_area, +/obj/effect/wingrille_spawn/reinforced, +/turf/simulated/floor/plating, +/area/hallway/secondary/entry/D3) +"dvP" = ( +/obj/machinery/shield_diffuser, +/obj/effect/floor_decal/industrial/hatch/yellow, +/obj/machinery/door/airlock/external{ + frequency = 1380; + icon_state = "door_locked"; + id_tag = "s1s_dock_outer"; + locked = 1; + name = "Dock One External Airlock"; + req_access = list(13) + }, +/obj/machinery/access_button{ + command = "cycle_exterior"; + frequency = 1380; + master_tag = "shuttle1_dock_airlocksc"; + name = "exterior access button"; + pixel_x = -5; + pixel_y = -26; + req_one_access = list(13) + }, +/turf/simulated/floor/tiled/dark, +/area/hallway/secondary/entry/D1) +"dvQ" = ( +/obj/effect/floor_decal/industrial/warning/cee{ + icon_state = "warningcee"; + dir = 8 + }, +/obj/machinery/light/small{ + dir = 1 + }, +/obj/machinery/atmospherics/unary/vent_pump/high_volume{ + dir = 2; + frequency = 1380; + id_tag = "s1s_dock_pump" + }, +/turf/simulated/floor/tiled, +/area/hallway/secondary/entry/D1) +"dvR" = ( +/obj/effect/floor_decal/industrial/warning/cee{ + icon_state = "warningcee"; + dir = 4 + }, +/obj/machinery/embedded_controller/radio/airlock/docking_port{ + frequency = 1380; + id_tag = "shuttle1_dock_airlocksc"; + pixel_x = 0; + pixel_y = 30; + req_one_access = list(13); + tag_airpump = "s1s_dock_pump"; + tag_chamber_sensor = "s1s_dock_sensor"; + tag_exterior_door = "s1s_dock_outer"; + tag_interior_door = "s1s_dock_inner" + }, +/obj/machinery/atmospherics/unary/vent_pump/high_volume{ + dir = 2; + frequency = 1380; + id_tag = "s1s_dock_pump" + }, +/obj/machinery/airlock_sensor{ + frequency = 1380; + id_tag = "s1s_dock_sensor"; + pixel_x = 0; + pixel_y = -25 + }, +/turf/simulated/floor/tiled, +/area/hallway/secondary/entry/D1) +"dvS" = ( +/obj/machinery/door/airlock/glass_external{ + frequency = 1380; + icon_state = "door_locked"; + id_tag = "s1s_dock_inner"; + locked = 1; + name = "Dock One Internal Airlock"; + req_access = list(13) + }, +/obj/effect/floor_decal/industrial/hatch/yellow, +/turf/simulated/floor/tiled/dark, +/area/hallway/secondary/entry/D1) +"dvT" = ( +/obj/effect/floor_decal/industrial/warning{ + dir = 8 + }, +/obj/machinery/access_button{ + command = "cycle_interior"; + frequency = 1380; + master_tag = "shuttle1_dock_airlocksc"; + name = "interior access button"; + pixel_x = -28; + pixel_y = 26; + req_one_access = list(13) + }, +/turf/simulated/floor/tiled, +/area/hallway/secondary/entry/D1) +"dvU" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/obj/machinery/hologram/holopad, +/obj/effect/floor_decal/industrial/outline/grey, +/turf/simulated/floor/tiled/monotile, +/area/hallway/secondary/entry/D1) +"dvV" = ( +/obj/structure/cable, +/obj/machinery/power/apc{ + dir = 4; + name = "east bump"; + pixel_x = 24 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/machinery/atmospherics/pipe/simple/hidden, +/turf/simulated/floor/tiled, +/area/hallway/secondary/entry/D1) +"dvW" = ( +/obj/structure/cable, +/obj/machinery/power/apc{ + dir = 8; + name = "west bump"; + pixel_x = -24 + }, +/turf/simulated/floor/tiled, +/area/hallway/secondary/entry/D2) +"dvX" = ( +/obj/machinery/alarm{ + dir = 8; + pixel_x = 22; + pixel_y = 0 + }, +/turf/simulated/floor/tiled, +/area/hallway/secondary/entry/D2) +"dvY" = ( +/obj/structure/cable, +/obj/machinery/power/apc{ + dir = 8; + name = "west bump"; + pixel_x = -24 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/machinery/atmospherics/pipe/simple/hidden, +/turf/simulated/floor/tiled, +/area/hallway/secondary/entry/D3) +"dvZ" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/obj/machinery/hologram/holopad, +/obj/effect/floor_decal/industrial/outline/grey, +/turf/simulated/floor/tiled/monotile, +/area/hallway/secondary/entry/D3) +"dwa" = ( +/obj/effect/floor_decal/industrial/warning{ + icon_state = "warning"; + dir = 4 + }, +/obj/machinery/access_button{ + command = "cycle_interior"; + frequency = 1380; + master_tag = "centcom_shuttle_dock_airlock"; + name = "interior access button"; + pixel_x = 28; + pixel_y = -26; + req_one_access = list(13) + }, +/turf/simulated/floor/tiled, +/area/hallway/secondary/entry/D3) +"dwb" = ( +/obj/machinery/door/airlock/glass_external{ + frequency = 1380; + icon_state = "door_locked"; + id_tag = "centcom_dock_inner"; + locked = 1; + name = "Dock Three Internal Airlock"; + req_access = list(13) + }, +/obj/effect/floor_decal/industrial/hatch/yellow, +/turf/simulated/floor/tiled/dark, +/area/hallway/secondary/entry/D3) +"dwc" = ( +/obj/effect/floor_decal/industrial/warning/cee{ + icon_state = "warningcee"; + dir = 8 + }, +/obj/machinery/embedded_controller/radio/airlock/docking_port{ + frequency = 1380; + id_tag = "centcom_shuttle_dock_airlock"; + pixel_x = 0; + pixel_y = 30; + req_one_access = list(13); + tag_airpump = "centcom_dock_pump"; + tag_chamber_sensor = "centcom_dock_sensor"; + tag_exterior_door = "centcom_dock_outer"; + tag_interior_door = "centcom_dock_inner" + }, +/obj/machinery/airlock_sensor{ + frequency = 1380; + id_tag = "centcom_dock_sensor"; + pixel_x = 0; + pixel_y = -25 + }, +/obj/machinery/atmospherics/unary/vent_pump/high_volume{ + dir = 2; + frequency = 1380; + id_tag = "centcom_dock_pump" + }, +/turf/simulated/floor/tiled, +/area/hallway/secondary/entry/D3) +"dwd" = ( +/obj/effect/floor_decal/industrial/warning/cee{ + icon_state = "warningcee"; + dir = 4 + }, +/obj/machinery/light/small{ + dir = 1 + }, +/obj/machinery/atmospherics/unary/vent_pump/high_volume{ + dir = 2; + frequency = 1380; + id_tag = "centcom_dock_pump" + }, +/turf/simulated/floor/tiled, +/area/hallway/secondary/entry/D3) +"dwe" = ( +/obj/machinery/shield_diffuser, +/obj/effect/floor_decal/industrial/hatch/yellow, +/obj/machinery/access_button{ + command = "cycle_exterior"; + frequency = 1380; + master_tag = "centcom_shuttle_dock_airlock"; + name = "exterior access button"; + pixel_x = 5; + pixel_y = -26; + req_one_access = list(13) + }, +/obj/machinery/door/airlock/external{ + frequency = 1380; + icon_state = "door_locked"; + id_tag = "centcom_dock_outer"; + locked = 1; + name = "Dock Three External Airlock"; + req_access = list(13) + }, +/turf/simulated/floor/tiled/dark, +/area/hallway/secondary/entry/D3) +"dwf" = ( +/obj/machinery/atmospherics/pipe/simple/hidden{ + dir = 5; + icon_state = "intact" + }, +/obj/effect/wingrille_spawn/reinforced, +/turf/simulated/floor/plating, +/area/hallway/secondary/entry/D1) +"dwg" = ( +/obj/effect/floor_decal/borderfloor{ + dir = 8 + }, +/obj/effect/floor_decal/corner/paleblue/border{ + dir = 8 + }, +/obj/effect/floor_decal/borderfloor/corner2{ + dir = 8 + }, +/obj/effect/floor_decal/corner/paleblue/bordercorner2{ + dir = 8 + }, +/turf/simulated/floor/tiled, +/area/hallway/primary/seconddeck/port) +"dwh" = ( +/obj/machinery/door/firedoor/border_only, +/obj/machinery/atmospherics/pipe/simple/hidden{ + dir = 4 + }, +/obj/effect/wingrille_spawn/reinforced, +/turf/simulated/floor/plating, +/area/hallway/secondary/entry/D1) +"dwi" = ( +/obj/machinery/atmospherics/pipe/simple/hidden{ + dir = 4 + }, +/obj/effect/floor_decal/industrial/warning/corner{ + icon_state = "warningcorner"; + dir = 1 + }, +/turf/simulated/floor/tiled, +/area/hallway/secondary/entry/D1) +"dwj" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/obj/machinery/atmospherics/pipe/simple/hidden{ + dir = 4 + }, +/turf/simulated/floor/tiled, +/area/hallway/secondary/entry/D1) +"dwk" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/machinery/atmospherics/pipe/manifold/hidden{ + dir = 4; + icon_state = "map" + }, +/turf/simulated/floor/tiled, +/area/hallway/secondary/entry/D1) +"dwl" = ( +/turf/space, +/area/shuttle/arrival/station) +"dwm" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/machinery/atmospherics/pipe/manifold/hidden{ + dir = 8; + icon_state = "map" + }, +/turf/simulated/floor/tiled, +/area/hallway/secondary/entry/D3) +"dwn" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/obj/machinery/atmospherics/pipe/simple/hidden{ + dir = 4 + }, +/turf/simulated/floor/tiled, +/area/hallway/secondary/entry/D3) +"dwo" = ( +/obj/effect/floor_decal/industrial/warning/corner{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden{ + dir = 4 + }, +/turf/simulated/floor/tiled, +/area/hallway/secondary/entry/D3) +"dwp" = ( +/obj/machinery/door/firedoor/border_only, +/obj/machinery/atmospherics/pipe/simple/hidden{ + dir = 4 + }, +/obj/effect/wingrille_spawn/reinforced, +/turf/simulated/floor/plating, +/area/hallway/secondary/entry/D3) +"dwq" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/structure/cable{ + d1 = 1; + d2 = 2; + icon_state = "1-2"; + pixel_y = 0 + }, +/obj/effect/floor_decal/steeldecal/steel_decals4{ + dir = 8 + }, +/obj/effect/floor_decal/steeldecal/steel_decals4{ + dir = 5 + }, +/turf/simulated/floor/tiled, +/area/hallway/primary/seconddeck/port) +"dwr" = ( +/obj/machinery/atmospherics/pipe/simple/hidden{ + dir = 9; + icon_state = "intact" + }, +/obj/effect/wingrille_spawn/reinforced, +/turf/simulated/floor/plating, +/area/hallway/secondary/entry/D3) +"dws" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/turf/simulated/floor/tiled, +/area/hallway/secondary/entry/D1) +"dwt" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/machinery/atmospherics/pipe/simple/hidden, +/turf/simulated/floor/tiled, +/area/hallway/secondary/entry/D1) +"dwu" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/machinery/atmospherics/pipe/simple/hidden, +/turf/simulated/floor/tiled, +/area/hallway/secondary/entry/D3) +"dwv" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/turf/simulated/floor/tiled, +/area/hallway/secondary/entry/D3) +"dww" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/machinery/atmospherics/pipe/simple/hidden, +/obj/machinery/camera/network/second_deck{ + c_tag = "Second Deck - Dock One Fore"; + dir = 8 + }, +/turf/simulated/floor/tiled, +/area/hallway/secondary/entry/D1) +"dwx" = ( +/obj/machinery/camera/network/second_deck{ + c_tag = "Second Deck - Dock Two Fore"; + dir = 4 + }, +/turf/simulated/floor/tiled, +/area/hallway/secondary/entry/D2) +"dwy" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/machinery/atmospherics/pipe/simple/hidden, +/obj/machinery/camera/network/second_deck{ + c_tag = "Second Deck - Dock Three Fore"; + dir = 4 + }, +/turf/simulated/floor/tiled, +/area/hallway/secondary/entry/D3) +"dwz" = ( +/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{ + dir = 8 + }, +/obj/machinery/status_display{ + density = 0; + layer = 4; + pixel_x = -32; + pixel_y = 0 + }, +/turf/simulated/floor/tiled, +/area/hallway/secondary/entry/D1) +"dwA" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/item/device/radio/intercom{ + dir = 4; + name = "Station Intercom (General)"; + pixel_x = 21 + }, +/obj/machinery/atmospherics/unary/vent_scrubber/on{ + dir = 8 + }, +/obj/machinery/atmospherics/pipe/simple/hidden, +/turf/simulated/floor/tiled, +/area/hallway/secondary/entry/D1) +"dwB" = ( +/obj/machinery/firealarm{ + dir = 8; + pixel_x = -24 + }, +/obj/machinery/atmospherics/unary/vent_scrubber/on{ + dir = 4 + }, +/turf/simulated/floor/tiled, +/area/hallway/secondary/entry/D2) +"dwC" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/machinery/atmospherics/pipe/simple/hidden, +/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{ + dir = 4 + }, +/turf/simulated/floor/tiled/monotile, +/area/hallway/secondary/entry/D2) +"dwD" = ( +/obj/item/device/radio/intercom{ + dir = 4; + name = "Station Intercom (General)"; + pixel_x = 21 + }, +/turf/simulated/floor/tiled, +/area/hallway/secondary/entry/D2) +"dwE" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/machinery/atmospherics/pipe/simple/hidden, +/obj/item/device/radio/intercom{ + dir = 8; + name = "Station Intercom (General)"; + pixel_x = -21 + }, +/turf/simulated/floor/tiled, +/area/hallway/secondary/entry/D3) +"dwF" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/obj/machinery/status_display{ + density = 0; + layer = 4; + pixel_x = 32; + pixel_y = 0 + }, +/turf/simulated/floor/tiled, +/area/hallway/secondary/entry/D3) +"dwG" = ( +/obj/structure/sign/warning/docking_area, +/turf/simulated/wall/r_wall, +/area/hallway/secondary/entry/D1) +"dwH" = ( +/obj/machinery/firealarm{ + dir = 8; + pixel_x = -24 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/turf/simulated/floor/tiled, +/area/hallway/secondary/entry/D1) +"dwI" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/machinery/atmospherics/pipe/manifold/hidden{ + dir = 8; + icon_state = "map" + }, +/obj/machinery/atmospherics/pipe/simple/hidden, +/obj/effect/floor_decal/industrial/warning/corner, +/obj/machinery/light{ + dir = 4 + }, +/turf/simulated/floor/tiled, +/area/hallway/secondary/entry/D1) +"dwJ" = ( +/obj/machinery/atmospherics/pipe/manifold/hidden{ + dir = 1; + icon_state = "map" + }, +/obj/effect/wingrille_spawn/reinforced, +/obj/machinery/door/firedoor/border_only, +/turf/simulated/floor/plating, +/area/hallway/secondary/entry/D1) +"dwK" = ( +/obj/machinery/atmospherics/pipe/simple/hidden{ + dir = 10; + icon_state = "intact" + }, +/obj/effect/wingrille_spawn/reinforced, +/turf/simulated/floor/plating, +/area/hallway/secondary/entry/D1) +"dwL" = ( +/obj/effect/wingrille_spawn/reinforced, +/obj/structure/sign/warning/evac, +/turf/simulated/floor/plating, +/area/hallway/secondary/entry/D1) +"dwM" = ( +/obj/effect/wingrille_spawn/reinforced, +/obj/structure/sign/warning/evac, +/turf/simulated/floor/plating, +/area/hallway/secondary/entry/D2) +"dwN" = ( +/obj/machinery/atmospherics/pipe/simple/hidden{ + dir = 6 + }, +/obj/effect/wingrille_spawn/reinforced, +/turf/simulated/floor/plating, +/area/hallway/secondary/entry/D2) +"dwO" = ( +/obj/machinery/atmospherics/pipe/manifold/hidden{ + dir = 1; + icon_state = "map" + }, +/obj/effect/wingrille_spawn/reinforced, +/obj/machinery/door/firedoor/border_only, +/turf/simulated/floor/plating, +/area/hallway/secondary/entry/D2) +"dwP" = ( +/obj/machinery/door/firedoor/border_only, +/obj/machinery/atmospherics/pipe/simple/hidden{ + dir = 4 + }, +/obj/effect/wingrille_spawn/reinforced, +/turf/simulated/floor/plating, +/area/hallway/secondary/entry/D2) +"dwQ" = ( +/obj/effect/floor_decal/industrial/warning/corner{ + dir = 8 + }, +/obj/machinery/atmospherics/pipe/simple/hidden{ + dir = 4 + }, +/obj/machinery/light{ + icon_state = "tube1"; + dir = 8 + }, +/turf/simulated/floor/tiled, +/area/hallway/secondary/entry/D2) +"dwR" = ( +/obj/machinery/atmospherics/pipe/manifold/hidden{ + dir = 4; + icon_state = "map" + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/turf/simulated/floor/tiled/monotile, +/area/hallway/secondary/entry/D2) +"dwS" = ( +/obj/effect/floor_decal/industrial/warning/corner, +/turf/simulated/floor/tiled, +/area/hallway/secondary/entry/D2) +"dwT" = ( +/obj/machinery/door/firedoor/border_only, +/obj/effect/wingrille_spawn/reinforced, +/turf/simulated/floor/plating, +/area/medical/first_aid_station/seconddeck/port) +"dwU" = ( +/turf/simulated/wall, +/area/medical/first_aid_station/seconddeck/port) +"dwV" = ( +/obj/machinery/door/firedoor/border_only, +/obj/effect/wingrille_spawn/reinforced, +/obj/machinery/atmospherics/pipe/simple/hidden{ + dir = 6 + }, +/turf/simulated/floor/plating, +/area/hallway/secondary/entry/D3) +"dwW" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/machinery/door/firedoor/glass, +/obj/machinery/door/airlock/glass_medical{ + name = "First-Aid Station"; + req_one_access = list(5,12,19) + }, +/obj/structure/cable{ + d1 = 1; + d2 = 2; + icon_state = "1-2"; + pixel_y = 0 + }, +/turf/simulated/floor/tiled/steel_grid, +/area/medical/first_aid_station/seconddeck/port) +"dwX" = ( +/obj/machinery/door/firedoor/border_only, +/obj/effect/wingrille_spawn/reinforced, +/obj/machinery/atmospherics/pipe/simple/hidden{ + dir = 4 + }, +/turf/simulated/floor/plating, +/area/hallway/secondary/entry/D3) +"dwY" = ( +/obj/machinery/atmospherics/unary/vent_scrubber/on{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/effect/floor_decal/industrial/warning/corner{ + dir = 8 + }, +/obj/machinery/light{ + icon_state = "tube1"; + dir = 8 + }, +/obj/machinery/atmospherics/pipe/manifold/hidden{ + dir = 4; + icon_state = "map" + }, +/turf/simulated/floor/tiled, +/area/hallway/secondary/entry/D3) +"dwZ" = ( +/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{ + dir = 4 + }, +/obj/machinery/firealarm{ + dir = 4; + pixel_x = 24 + }, +/turf/simulated/floor/tiled, +/area/hallway/secondary/entry/D3) +"dxa" = ( +/obj/structure/sign/warning/docking_area, +/turf/simulated/wall/r_wall, +/area/hallway/secondary/entry/D3) +"dxb" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/obj/machinery/ai_status_display{ + pixel_x = -32; + pixel_y = 0 + }, +/turf/simulated/floor/tiled, +/area/hallway/secondary/entry/D1) +"dxc" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/machinery/access_button{ + command = "cycle_interior"; + frequency = 1380; + master_tag = "escape_dock_north_airlock"; + name = "interior access button"; + pixel_x = 26; + pixel_y = 26; + req_one_access = list(13) + }, +/obj/machinery/atmospherics/pipe/simple/hidden, +/obj/effect/floor_decal/industrial/warning{ + icon_state = "warning"; + dir = 4 + }, +/turf/simulated/floor/tiled, +/area/hallway/secondary/entry/D1) +"dxd" = ( +/obj/machinery/door/airlock/glass_external{ + frequency = 1380; + icon_state = "door_locked"; + id_tag = "escape_dock_north_inner"; + locked = 1; + name = "Escape Airlock"; + req_access = list(13) + }, +/obj/effect/floor_decal/industrial/hatch/yellow, +/turf/simulated/floor/tiled/dark, +/area/hallway/secondary/entry/D1) +"dxe" = ( +/obj/machinery/atmospherics/unary/vent_pump/high_volume{ + dir = 1; + frequency = 1380; + id_tag = "escape_dock_north_pump" + }, +/obj/effect/floor_decal/industrial/warning{ + dir = 9 + }, +/obj/machinery/light/small{ + dir = 1 + }, +/turf/simulated/floor/tiled, +/area/hallway/secondary/entry/D1) +"dxf" = ( +/obj/machinery/atmospherics/unary/vent_pump/high_volume{ + dir = 1; + frequency = 1380; + id_tag = "escape_dock_north_pump" + }, +/obj/effect/floor_decal/industrial/warning{ + icon_state = "warning"; + dir = 5 + }, +/obj/machinery/embedded_controller/radio/airlock/docking_port_multi{ + frequency = 1380; + id_tag = "escape_dock_north_airlock"; + master_tag = "escape_dock"; + pixel_y = 30; + req_one_access = list(13); + tag_airlock_mech_sensor = "escape_dock_north_mech"; + tag_airpump = "escape_dock_north_pump"; + tag_chamber_sensor = "escape_dock_north_sensor"; + tag_exterior_door = "escape_dock_north_outer"; + tag_interior_door = "escape_dock_north_inner"; + tag_shuttle_mech_sensor = "shuttle_dock_north_mech" + }, +/turf/simulated/floor/tiled/dark, +/area/hallway/secondary/entry/D1) +"dxg" = ( +/obj/machinery/door/airlock/external{ + frequency = 1380; + icon_state = "door_locked"; + id_tag = "escape_dock_north_outer"; + locked = 1; + name = "Escape Airlock"; + req_access = list(13) + }, +/obj/machinery/shield_diffuser, +/obj/effect/floor_decal/industrial/hatch/yellow, +/turf/simulated/floor/tiled/dark, +/area/hallway/secondary/entry/D1) +"dxh" = ( +/obj/machinery/door/airlock/external{ + frequency = 1380; + icon_state = "door_locked"; + id_tag = "escape_dock_north_starboard_outer"; + locked = 1; + name = "Escape Airlock"; + req_access = list(13) + }, +/obj/effect/floor_decal/industrial/hatch/yellow, +/obj/machinery/shield_diffuser, +/turf/simulated/floor/tiled/dark, +/area/hallway/secondary/entry/D2) +"dxi" = ( +/obj/machinery/atmospherics/unary/vent_pump/high_volume{ + dir = 1; + frequency = 1380; + id_tag = "escape_dock_north_starboard_pump" + }, +/obj/effect/floor_decal/industrial/warning{ + dir = 9 + }, +/obj/machinery/embedded_controller/radio/airlock/docking_port_multi{ + frequency = 1380; + id_tag = "escape_dock_snorth_airlock"; + master_tag = "escape_dock"; + pixel_y = 30; + req_one_access = list(13); + tag_airlock_mech_sensor = "escape_dock_north_starboard_mech"; + tag_airpump = "escape_dock_north_starboard_pump"; + tag_chamber_sensor = "escape_dock_north_starboard_sensor"; + tag_exterior_door = "escape_dock_north_starboard_outer"; + tag_interior_door = "escape_dock_north_starboard_inner"; + tag_shuttle_mech_sensor = "shuttle_dock_north_starboard_mech" + }, +/turf/simulated/floor/tiled/dark, +/area/hallway/secondary/entry/D2) +"dxj" = ( +/obj/machinery/atmospherics/unary/vent_pump/high_volume{ + dir = 1; + frequency = 1380; + id_tag = "escape_dock_north_starboard_pump" + }, +/obj/effect/floor_decal/industrial/warning{ + icon_state = "warning"; + dir = 5 + }, +/obj/machinery/light/small{ + dir = 1 + }, +/turf/simulated/floor/tiled, +/area/hallway/secondary/entry/D2) +"dxk" = ( +/obj/machinery/door/airlock/glass_external{ + frequency = 1380; + icon_state = "door_locked"; + id_tag = "escape_dock_north_starboard_inner"; + locked = 1; + name = "Escape Airlock"; + req_access = list(13) + }, +/obj/effect/floor_decal/industrial/hatch/yellow, +/turf/simulated/floor/tiled/dark, +/area/hallway/secondary/entry/D2) +"dxl" = ( +/obj/effect/floor_decal/industrial/warning{ + dir = 8 + }, +/obj/machinery/access_button{ + command = "cycle_interior"; + frequency = 1380; + master_tag = "escape_dock_north_starboard_airlock"; + name = "interior access button"; + pixel_x = -26; + pixel_y = 26; + req_one_access = list(13) + }, +/turf/simulated/floor/tiled, +/area/hallway/secondary/entry/D2) +"dxm" = ( +/obj/effect/floor_decal/industrial/warning{ + dir = 4 + }, +/obj/machinery/access_button{ + command = "cycle_interior"; + frequency = 1380; + master_tag = "arrivals_dock_north_airlock"; + name = "interior access button"; + pixel_x = 26; + pixel_y = 26; + req_one_access = list(13) + }, +/turf/simulated/floor/tiled, +/area/hallway/secondary/entry/D2) +"dxn" = ( +/obj/effect/floor_decal/industrial/hatch/yellow, +/obj/machinery/door/airlock/glass_external{ + frequency = 1380; + icon_state = "door_locked"; + id_tag = "arrivals_dock_north_inner"; + locked = 1; + name = "Arrivals Airlock"; + req_access = list(13) + }, +/turf/simulated/floor/tiled/dark, +/area/hallway/secondary/entry/D2) +"dxo" = ( +/obj/structure/shuttle/engine/propulsion{ + icon_state = "burst_l"; + dir = 4 + }, +/turf/simulated/floor/airless, +/turf/simulated/shuttle/plating/airless/carry, +/area/shuttle/cryo/station) +"dxp" = ( +/obj/machinery/atmospherics/unary/vent_pump/high_volume{ + dir = 8; + frequency = 1380; + id_tag = "arrivals_dock_north_pump" + }, +/obj/effect/floor_decal/industrial/warning{ + dir = 4 + }, +/turf/simulated/floor/tiled, +/area/hallway/secondary/entry/D2) +"dxq" = ( +/obj/effect/floor_decal/industrial/hatch/yellow, +/obj/machinery/shield_diffuser, +/obj/machinery/door/airlock/external{ + frequency = 1380; + icon_state = "door_locked"; + id_tag = "arrivals_dock_north_outer"; + locked = 1; + name = "Arrivals Airlock"; + req_access = list(13) + }, +/turf/simulated/floor/tiled/dark, +/area/hallway/secondary/entry/D2) +"dxr" = ( +/obj/effect/floor_decal/industrial/hatch/yellow, +/obj/machinery/shield_diffuser, +/obj/machinery/door/airlock/external{ + frequency = 1380; + icon_state = "door_locked"; + id_tag = "dock3_north_outer"; + locked = 1; + name = "External Airlock Access"; + req_access = list(13) + }, +/turf/simulated/floor/tiled/dark, +/area/hallway/secondary/entry/D3) +"dxs" = ( +/obj/effect/floor_decal/industrial/warning{ + icon_state = "warning"; + dir = 8 + }, +/obj/machinery/atmospherics/unary/vent_pump/high_volume{ + dir = 1; + frequency = 1380; + id_tag = "dock3_north_pump" + }, +/turf/simulated/floor/tiled, +/area/hallway/secondary/entry/D3) +"dxt" = ( +/obj/machinery/embedded_controller/radio/airlock/docking_port{ + frequency = 1380; + id_tag = "dock3_north_airlock"; + pixel_x = 0; + pixel_y = 30; + req_one_access = list(13); + tag_airpump = "dock3_north_pump"; + tag_chamber_sensor = "dock3_north_sensor"; + tag_exterior_door = "dock3_north_outer"; + tag_interior_door = "dock3_north_inner" + }, +/obj/machinery/atmospherics/unary/vent_pump/high_volume{ + dir = 1; + frequency = 1380; + id_tag = "dock3_north_pump" + }, +/obj/effect/floor_decal/industrial/warning{ + dir = 4 + }, +/turf/simulated/floor/tiled, +/area/hallway/secondary/entry/D3) +"dxu" = ( +/obj/effect/floor_decal/industrial/hatch/yellow, +/obj/machinery/door/airlock/glass_external{ + frequency = 1380; + icon_state = "door_locked"; + id_tag = "dock3_north_inner"; + locked = 1; + name = "Dock Three Internal Airlock"; + req_access = list(13) + }, +/turf/simulated/floor/tiled/dark, +/area/hallway/secondary/entry/D3) +"dxv" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/effect/floor_decal/industrial/warning{ + dir = 8 + }, +/obj/machinery/atmospherics/pipe/simple/hidden, +/obj/machinery/access_button{ + command = "cycle_interior"; + frequency = 1380; + master_tag = "dock3_north_airlock"; + name = "interior access button"; + pixel_x = -25; + pixel_y = 26; + req_one_access = list(13) + }, +/turf/simulated/floor/tiled, +/area/hallway/secondary/entry/D3) +"dxw" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/obj/machinery/ai_status_display{ + pixel_x = 32; + pixel_y = 0 + }, +/turf/simulated/floor/tiled, +/area/hallway/secondary/entry/D3) +"dxx" = ( +/turf/space, +/area/shuttle/shuttle2/arrivals_dock) +"dxy" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/machinery/atmospherics/pipe/simple/hidden, +/obj/effect/floor_decal/industrial/warning{ + icon_state = "warning"; + dir = 4 + }, +/turf/simulated/floor/tiled, +/area/hallway/secondary/entry/D1) +"dxz" = ( +/obj/machinery/atmospherics/unary/vent_pump/high_volume{ + dir = 2; + frequency = 1380; + id_tag = "escape_dock_north_pump" + }, +/obj/effect/floor_decal/industrial/warning{ + dir = 10 + }, +/turf/simulated/floor/tiled, +/area/hallway/secondary/entry/D1) +"dxA" = ( +/obj/machinery/atmospherics/unary/vent_pump/high_volume{ + dir = 2; + frequency = 1380; + id_tag = "escape_dock_north_pump" + }, +/obj/effect/floor_decal/industrial/warning{ + dir = 6 + }, +/obj/machinery/airlock_sensor{ + frequency = 1380; + id_tag = "escape_dock_north_sensor"; + pixel_x = 0; + pixel_y = -25 + }, +/turf/simulated/floor/tiled/dark, +/area/hallway/secondary/entry/D1) +"dxB" = ( +/obj/machinery/access_button{ + command = "cycle_exterior"; + frequency = 1380; + master_tag = "escape_dock_north_airlock"; + name = "exterior access button"; + pixel_x = 4; + pixel_y = -26; + req_one_access = list(13) + }, +/obj/machinery/door/airlock/external{ + frequency = 1380; + icon_state = "door_locked"; + id_tag = "escape_dock_north_outer"; + locked = 1; + name = "Escape Airlock"; + req_access = list(13) + }, +/obj/machinery/shield_diffuser, +/obj/effect/floor_decal/industrial/hatch/yellow, +/turf/simulated/floor/tiled/dark, +/area/hallway/secondary/entry/D1) +"dxC" = ( +/obj/machinery/access_button{ + command = "cycle_exterior"; + frequency = 1380; + master_tag = "escape_dock_north_starboard_airlock"; + name = "exterior access button"; + pixel_x = -4; + pixel_y = -26; + req_one_access = list(13) + }, +/obj/machinery/door/airlock/external{ + frequency = 1380; + icon_state = "door_locked"; + id_tag = "escape_dock_north_starboard_outer"; + locked = 1; + name = "Escape Airlock"; + req_access = list(13) + }, +/obj/effect/floor_decal/industrial/hatch/yellow, +/obj/machinery/shield_diffuser, +/turf/simulated/floor/tiled/dark, +/area/hallway/secondary/entry/D2) +"dxD" = ( +/obj/machinery/atmospherics/unary/vent_pump/high_volume{ + dir = 2; + frequency = 1380; + id_tag = "escape_dock_north_starboard_pump" + }, +/obj/effect/floor_decal/industrial/warning{ + dir = 10 + }, +/obj/machinery/airlock_sensor{ + frequency = 1380; + id_tag = "escape_dock_north_starboard_sensor"; + pixel_x = 0; + pixel_y = -25 + }, +/turf/simulated/floor/tiled/dark, +/area/hallway/secondary/entry/D2) +"dxE" = ( +/obj/machinery/atmospherics/unary/vent_pump/high_volume{ + dir = 2; + frequency = 1380; + id_tag = "escape_dock_north_starboard_pump" + }, +/obj/effect/floor_decal/industrial/warning{ + dir = 6 + }, +/turf/simulated/floor/tiled, +/area/hallway/secondary/entry/D2) +"dxF" = ( +/obj/effect/floor_decal/industrial/warning{ + dir = 8 + }, +/turf/simulated/floor/tiled, +/area/hallway/secondary/entry/D2) +"dxG" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/obj/machinery/atmospherics/pipe/manifold/hidden{ + dir = 8; + icon_state = "map" + }, +/turf/simulated/floor/tiled/monotile, +/area/hallway/secondary/entry/D2) +"dxH" = ( +/obj/effect/floor_decal/industrial/warning{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden{ + dir = 4 + }, +/turf/simulated/floor/tiled, +/area/hallway/secondary/entry/D2) +"dxI" = ( +/obj/effect/floor_decal/industrial/hatch/yellow, +/obj/machinery/atmospherics/pipe/simple/hidden{ + dir = 4 + }, +/obj/machinery/door/airlock/glass_external{ + frequency = 1380; + icon_state = "door_locked"; + id_tag = "arrivals_dock_north_inner"; + locked = 1; + name = "Arrivals Airlock"; + req_access = list(13) + }, +/turf/simulated/floor/tiled/dark, +/area/hallway/secondary/entry/D2) +"dxJ" = ( +/obj/machinery/light/small, +/obj/effect/floor_decal/industrial/loading{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/manifold/hidden, +/turf/simulated/floor/tiled, +/area/hallway/secondary/entry/D2) +"dxK" = ( +/obj/machinery/airlock_sensor{ + frequency = 1380; + id_tag = "arrivals_dock_north_sensor"; + pixel_x = 0; + pixel_y = -25 + }, +/obj/machinery/atmospherics/unary/vent_pump/high_volume{ + dir = 8; + frequency = 1380; + id_tag = "arrivals_dock_north_pump" + }, +/obj/effect/floor_decal/industrial/warning{ + dir = 4 + }, +/turf/simulated/floor/tiled, +/area/hallway/secondary/entry/D2) +"dxL" = ( +/obj/effect/floor_decal/industrial/hatch/yellow, +/obj/machinery/shield_diffuser, +/obj/machinery/door/airlock/external{ + frequency = 1380; + icon_state = "door_locked"; + id_tag = "arrivals_dock_north_outer"; + locked = 1; + name = "Arrivals Airlock"; + req_access = list(13) + }, +/obj/machinery/access_button{ + command = "cycle_exterior"; + frequency = 1380; + master_tag = "arrivals_dock_north_airlock"; + name = "exterior access button"; + pixel_x = 4; + pixel_y = -26; + req_one_access = list(13) + }, +/turf/simulated/floor/tiled/dark, +/area/hallway/secondary/entry/D2) +"dxM" = ( +/obj/effect/floor_decal/industrial/hatch/yellow, +/obj/machinery/shield_diffuser, +/obj/machinery/access_button{ + command = "cycle_exterior"; + frequency = 1380; + master_tag = "dock3_north_airlock"; + name = "exterior access button"; + pixel_x = -5; + pixel_y = -26; + req_one_access = list(13) + }, +/obj/machinery/door/airlock/external{ + frequency = 1380; + icon_state = "door_locked"; + id_tag = "dock3_north_outer"; + locked = 1; + name = "External Airlock Access"; + req_access = list(13) + }, +/turf/simulated/floor/tiled/dark, +/area/hallway/secondary/entry/D2) +"dxN" = ( +/obj/effect/floor_decal/industrial/warning{ + icon_state = "warning"; + dir = 8 + }, +/obj/machinery/atmospherics/unary/vent_pump/high_volume{ + dir = 2; + frequency = 1380; + id_tag = "dock3_north_pump" + }, +/obj/machinery/airlock_sensor{ + frequency = 1380; + id_tag = "dock3_north_sensor"; + pixel_x = 0; + pixel_y = -25 + }, +/turf/simulated/floor/tiled, +/area/hallway/secondary/entry/D3) +"dxO" = ( +/obj/machinery/light/small, +/obj/machinery/atmospherics/unary/vent_pump/high_volume{ + dir = 2; + frequency = 1380; + id_tag = "dock3_north_pump" + }, +/obj/effect/floor_decal/industrial/warning{ + dir = 4 + }, +/turf/simulated/floor/tiled, +/area/hallway/secondary/entry/D3) +"dxP" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/effect/floor_decal/industrial/warning{ + dir = 8 + }, +/obj/machinery/atmospherics/pipe/simple/hidden, +/turf/simulated/floor/tiled, +/area/hallway/secondary/entry/D3) +"dxQ" = ( +/turf/space, +/area/shuttle/response_ship/arrivals_dock) +"dxR" = ( +/obj/machinery/door/firedoor/glass, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/turf/simulated/floor/tiled, +/area/hallway/secondary/entry/D1) +"dxS" = ( +/obj/machinery/door/firedoor/border_only, +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/machinery/atmospherics/pipe/manifold/hidden{ + dir = 8; + icon_state = "map" + }, +/obj/effect/floor_decal/industrial/warning/corner{ + dir = 4 + }, +/turf/simulated/floor/tiled, +/area/hallway/secondary/entry/D1) +"dxT" = ( +/obj/machinery/atmospherics/pipe/manifold/hidden, +/obj/effect/wingrille_spawn/reinforced, +/obj/machinery/door/firedoor/border_only, +/turf/simulated/floor/plating, +/area/hallway/secondary/entry/D1) +"dxU" = ( +/obj/machinery/atmospherics/pipe/simple/hidden{ + dir = 9; + icon_state = "intact" + }, +/obj/effect/wingrille_spawn/reinforced, +/turf/simulated/floor/plating, +/area/hallway/secondary/entry/D1) +"dxV" = ( +/obj/effect/wingrille_spawn/reinforced, +/turf/simulated/floor/plating, +/area/hallway/secondary/entry/D2) +"dxW" = ( +/obj/machinery/atmospherics/pipe/simple/hidden{ + dir = 5; + icon_state = "intact" + }, +/obj/effect/wingrille_spawn/reinforced, +/turf/simulated/floor/plating, +/area/hallway/secondary/entry/D2) +"dxX" = ( +/obj/machinery/atmospherics/pipe/manifold/hidden, +/obj/effect/wingrille_spawn/reinforced, +/obj/machinery/door/firedoor/border_only, +/turf/simulated/floor/plating, +/area/hallway/secondary/entry/D2) +"dxY" = ( +/obj/machinery/door/firedoor/border_only, +/obj/effect/floor_decal/industrial/warning/corner{ + icon_state = "warningcorner"; + dir = 1 + }, +/obj/machinery/atmospherics/pipe/simple/hidden{ + dir = 4 + }, +/turf/simulated/floor/tiled, +/area/hallway/secondary/entry/D2) +"dxZ" = ( +/obj/machinery/door/firedoor/glass, +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/obj/machinery/atmospherics/pipe/manifold/hidden{ + dir = 4; + icon_state = "map" + }, +/turf/simulated/floor/tiled/monotile, +/area/hallway/secondary/entry/D2) +"dya" = ( +/obj/machinery/door/firedoor/border_only, +/obj/effect/floor_decal/industrial/warning/corner{ + dir = 4 + }, +/turf/simulated/floor/tiled, +/area/hallway/secondary/entry/D2) +"dyb" = ( +/obj/structure/table/glass, +/obj/machinery/recharger, +/obj/item/device/radio{ + frequency = 1487; + icon_state = "med_walkietalkie"; + name = "Medbay Emergency Radio Link" + }, +/obj/machinery/vending/wallmed1{ + name = "NanoMed Wall"; + pixel_x = 25; + pixel_y = 0 + }, +/obj/effect/floor_decal/borderfloorwhite{ + dir = 4 + }, +/obj/effect/floor_decal/corner/paleblue/border{ + dir = 4 + }, +/turf/simulated/floor/tiled/white, +/area/medical/first_aid_station/seconddeck/port) +"dyc" = ( +/obj/machinery/door/firedoor/border_only, +/obj/effect/wingrille_spawn/reinforced, +/obj/machinery/atmospherics/pipe/manifold/hidden, +/turf/simulated/floor/plating, +/area/hallway/secondary/entry/D3) +"dyd" = ( +/obj/effect/wingrille_spawn/reinforced, +/obj/machinery/atmospherics/pipe/simple/hidden{ + dir = 4 + }, +/turf/simulated/floor/plating, +/area/hallway/secondary/entry/D3) +"dye" = ( +/obj/machinery/door/firedoor/border_only, +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/effect/floor_decal/industrial/warning/corner{ + icon_state = "warningcorner"; + dir = 1 + }, +/obj/machinery/atmospherics/pipe/manifold/hidden{ + dir = 4; + icon_state = "map" + }, +/turf/simulated/floor/tiled, +/area/hallway/secondary/entry/D3) +"dyf" = ( +/obj/machinery/door/firedoor/glass, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/turf/simulated/floor/tiled, +/area/hallway/secondary/entry/D3) +"dyg" = ( +/obj/effect/wingrille_spawn/reinforced, +/obj/structure/sign/warning/airlock, +/turf/simulated/floor/plating, +/area/hallway/secondary/entry/D1) +"dyh" = ( +/obj/machinery/atmospherics/pipe/simple/hidden{ + dir = 6 + }, +/obj/effect/wingrille_spawn/reinforced, +/turf/simulated/floor/plating, +/area/hallway/secondary/entry/D1) +"dyi" = ( +/obj/structure/bed/roller, +/obj/machinery/power/apc{ + dir = 8; + name = "west bump"; + pixel_x = -24 + }, +/obj/machinery/light_switch{ + pixel_x = -36 + }, +/obj/structure/cable{ + icon_state = "0-4"; + d2 = 4 + }, +/obj/effect/floor_decal/borderfloorwhite{ + dir = 8 + }, +/obj/effect/floor_decal/corner/paleblue/border{ + dir = 8 + }, +/turf/simulated/floor/tiled/white, +/area/medical/first_aid_station/seconddeck/port) +"dyj" = ( +/obj/machinery/atmospherics/pipe/simple/hidden{ + dir = 4 + }, +/obj/effect/floor_decal/industrial/warning/corner{ + icon_state = "warningcorner"; + dir = 8 + }, +/turf/simulated/floor/tiled, +/area/hallway/secondary/entry/D1) +"dyk" = ( +/obj/structure/bed/chair{ + dir = 8 + }, +/obj/machinery/status_display{ + density = 0; + layer = 4; + pixel_x = 32; + pixel_y = 0 + }, +/turf/simulated/floor/tiled, +/area/hallway/secondary/entry/D1) +"dyl" = ( +/obj/structure/bed/chair{ + dir = 4 + }, +/obj/machinery/status_display{ + density = 0; + layer = 4; + pixel_x = -32; + pixel_y = 0 + }, +/turf/simulated/floor/tiled, +/area/hallway/secondary/entry/D2) +"dym" = ( +/obj/structure/bed/chair{ + dir = 8 + }, +/obj/machinery/status_display{ + density = 0; + layer = 4; + pixel_x = 32; + pixel_y = 0 + }, +/turf/simulated/floor/tiled, +/area/hallway/secondary/entry/D2) +"dyn" = ( +/obj/structure/bed/chair{ + dir = 4 + }, +/obj/machinery/status_display{ + density = 0; + layer = 4; + pixel_x = -32; + pixel_y = 0 + }, +/turf/simulated/floor/tiled, +/area/hallway/secondary/entry/D3) +"dyo" = ( +/obj/effect/floor_decal/industrial/warning/corner, +/obj/machinery/atmospherics/pipe/simple/hidden{ + dir = 4 + }, +/turf/simulated/floor/tiled, +/area/hallway/secondary/entry/D3) +"dyp" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/structure/cable{ + d1 = 1; + d2 = 8; + icon_state = "1-8" + }, +/obj/effect/floor_decal/steeldecal/steel_decals4{ + dir = 4 + }, +/obj/effect/floor_decal/steeldecal/steel_decals4{ + dir = 9 + }, +/turf/simulated/floor/tiled/white, +/area/medical/first_aid_station/seconddeck/port) +"dyq" = ( +/obj/machinery/atmospherics/pipe/simple/hidden{ + dir = 10; + icon_state = "intact" + }, +/obj/effect/wingrille_spawn/reinforced, +/turf/simulated/floor/plating, +/area/hallway/secondary/entry/D3) +"dyr" = ( +/obj/machinery/shield_diffuser, +/obj/machinery/door/airlock/external{ + frequency = 1380; + icon_state = "door_locked"; + id_tag = "specops_dock_outer"; + locked = 1; + name = "Dock One External Airlock"; + req_access = list(13) + }, +/obj/machinery/access_button{ + command = "cycle_exterior"; + frequency = 1380; + master_tag = "response_shuttle_dock_airlock"; + name = "exterior access button"; + pixel_x = -5; + pixel_y = -26; + req_one_access = list(13) + }, +/obj/effect/floor_decal/industrial/hatch/yellow, +/turf/simulated/floor/tiled/dark, +/area/hallway/secondary/entry/D1) +"dys" = ( +/obj/effect/floor_decal/industrial/warning/cee{ + icon_state = "warningcee"; + dir = 8 + }, +/obj/machinery/atmospherics/unary/vent_pump/high_volume{ + dir = 1; + frequency = 1380; + id_tag = "specops_dock_pump" + }, +/obj/machinery/light/small{ + dir = 1 + }, +/turf/simulated/floor/tiled, +/area/hallway/secondary/entry/D1) +"dyt" = ( +/obj/effect/floor_decal/industrial/warning/cee{ + icon_state = "warningcee"; + dir = 4 + }, +/obj/machinery/atmospherics/unary/vent_pump/high_volume{ + dir = 1; + frequency = 1380; + id_tag = "specops_dock_pump" + }, +/obj/machinery/airlock_sensor{ + frequency = 1380; + id_tag = "specops_dock_sensor"; + pixel_x = 0; + pixel_y = -25 + }, +/obj/machinery/embedded_controller/radio/airlock/docking_port{ + frequency = 1380; + id_tag = "response_shuttle_dock_airlock"; + pixel_x = 0; + pixel_y = 30; + req_one_access = list(13); + tag_airpump = "specops_dock_pump"; + tag_chamber_sensor = "specops_dock_sensor"; + tag_exterior_door = "specops_dock_outer"; + tag_interior_door = "specops_dock_inner" + }, +/turf/simulated/floor/tiled, +/area/hallway/secondary/entry/D1) +"dyu" = ( +/obj/machinery/door/airlock/glass_external{ + frequency = 1380; + icon_state = "door_locked"; + id_tag = "specops_dock_inner"; + locked = 1; + name = "Dock One Internal Airlock"; + req_access = list(13) + }, +/obj/effect/floor_decal/industrial/hatch/yellow, +/turf/simulated/floor/tiled/dark, +/area/hallway/secondary/entry/D1) +"dyv" = ( +/obj/effect/floor_decal/industrial/warning{ + dir = 8 + }, +/obj/machinery/access_button{ + command = "cycle_interior"; + frequency = 1380; + master_tag = "response_shuttle_dock_airlock"; + name = "interior access button"; + pixel_x = -28; + pixel_y = 26; + req_one_access = list(13) + }, +/turf/simulated/floor/tiled, +/area/hallway/secondary/entry/D1) +"dyw" = ( +/obj/machinery/alarm{ + dir = 8; + pixel_x = 22; + pixel_y = 0 + }, +/turf/simulated/floor/tiled, +/area/hallway/secondary/entry/D1) +"dyx" = ( +/obj/structure/closet/emcloset, +/obj/structure/extinguisher_cabinet{ + pixel_x = -28; + pixel_y = 0 + }, +/turf/simulated/floor/tiled, +/area/hallway/secondary/entry/D2) +"dyy" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/obj/machinery/atmospherics/pipe/simple/hidden, +/obj/machinery/hologram/holopad, +/obj/effect/floor_decal/industrial/outline/grey, +/turf/simulated/floor/tiled/monotile, +/area/hallway/secondary/entry/D2) +"dyz" = ( +/obj/machinery/alarm{ + dir = 8; + pixel_x = 22; + pixel_y = 0 + }, +/obj/structure/closet/emcloset, +/turf/simulated/floor/tiled, +/area/hallway/secondary/entry/D2) +"dyA" = ( +/obj/machinery/alarm{ + dir = 4; + icon_state = "alarm0"; + pixel_x = -22 + }, +/turf/simulated/floor/tiled, +/area/hallway/secondary/entry/D3) +"dyB" = ( +/obj/effect/floor_decal/industrial/warning{ + icon_state = "warning"; + dir = 4 + }, +/obj/machinery/access_button{ + command = "cycle_interior"; + frequency = 1380; + master_tag = "shuttle2_dock_airlocksc"; + name = "interior access button"; + pixel_x = 28; + pixel_y = -26; + req_one_access = list(13) + }, +/turf/simulated/floor/tiled, +/area/hallway/secondary/entry/D3) +"dyC" = ( +/obj/effect/floor_decal/industrial/hatch/yellow, +/obj/machinery/door/airlock/glass_external{ + frequency = 1380; + icon_state = "door_locked"; + id_tag = "s2s_dock_inner"; + locked = 1; + name = "Dock Three Internal Airlock"; + req_access = list(13) + }, +/turf/simulated/floor/tiled/dark, +/area/hallway/secondary/entry/D3) +"dyD" = ( +/obj/effect/floor_decal/industrial/warning/cee{ + icon_state = "warningcee"; + dir = 8 + }, +/obj/machinery/atmospherics/unary/vent_pump/high_volume{ + dir = 1; + frequency = 1380; + id_tag = "s2s_dock_pump" + }, +/obj/machinery/embedded_controller/radio/airlock/docking_port{ + frequency = 1380; + id_tag = "shuttle2_dock_airlocksc"; + pixel_x = 0; + pixel_y = 30; + req_one_access = list(13); + tag_airpump = "s2s_dock_pump"; + tag_chamber_sensor = "s2s_dock_sensor"; + tag_exterior_door = "s2s_dock_outer"; + tag_interior_door = "s2s_dock_inner" + }, +/obj/machinery/airlock_sensor{ + frequency = 1380; + id_tag = "s2s_dock_sensor"; + pixel_x = 0; + pixel_y = -25 + }, +/turf/simulated/floor/tiled, +/area/hallway/secondary/entry/D3) +"dyE" = ( +/obj/effect/floor_decal/industrial/warning/cee{ + icon_state = "warningcee"; + dir = 4 + }, +/obj/machinery/atmospherics/unary/vent_pump/high_volume{ + dir = 1; + frequency = 1380; + id_tag = "s2s_dock_pump" + }, +/turf/simulated/floor/tiled, +/area/hallway/secondary/entry/D3) +"dyF" = ( +/obj/machinery/shield_diffuser, +/obj/effect/floor_decal/industrial/hatch/yellow, +/obj/machinery/door/airlock/external{ + frequency = 1380; + icon_state = "door_locked"; + id_tag = "s2s_dock_outer"; + locked = 1; + name = "Dock Three External Airlock"; + req_access = list(13) + }, +/obj/machinery/access_button{ + command = "cycle_exterior"; + frequency = 1380; + master_tag = "shuttle2_dock_airlocksc"; + name = "exterior access button"; + pixel_x = 5; + pixel_y = 26; + req_one_access = list(13) + }, +/turf/simulated/floor/tiled/dark, +/area/hallway/secondary/entry/D3) +"dyG" = ( +/obj/structure/closet/emcloset, +/obj/effect/floor_decal/industrial/warning/corner{ + icon_state = "warningcorner"; + dir = 1 + }, +/turf/simulated/floor/tiled, +/area/hallway/secondary/entry/D1) +"dyH" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/obj/machinery/atmospherics/unary/vent_pump/on{ + dir = 4 + }, +/turf/simulated/floor/tiled, +/area/hallway/secondary/entry/D1) +"dyI" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 9 + }, +/obj/machinery/atmospherics/pipe/simple/hidden, +/turf/simulated/floor/tiled, +/area/hallway/secondary/entry/D1) +"dyJ" = ( +/obj/structure/bed/chair{ + dir = 8 + }, +/obj/machinery/ai_status_display{ + pixel_x = 32; + pixel_y = 0 + }, +/turf/simulated/floor/tiled, +/area/hallway/secondary/entry/D1) +"dyK" = ( +/obj/structure/bed/chair{ + dir = 4 + }, +/obj/machinery/ai_status_display{ + pixel_x = -32; + pixel_y = 0 + }, +/turf/simulated/floor/tiled, +/area/hallway/secondary/entry/D2) +"dyL" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 5 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/obj/machinery/atmospherics/pipe/simple/hidden, +/turf/simulated/floor/tiled/monotile, +/area/hallway/secondary/entry/D2) +"dyM" = ( +/obj/machinery/atmospherics/unary/vent_pump/on{ + dir = 8 + }, +/turf/simulated/floor/tiled, +/area/hallway/secondary/entry/D2) +"dyN" = ( +/obj/structure/bed/chair{ + dir = 8 + }, +/obj/machinery/ai_status_display{ + pixel_x = 32; + pixel_y = 0 + }, +/turf/simulated/floor/tiled, +/area/hallway/secondary/entry/D2) +"dyO" = ( +/obj/structure/bed/chair{ + dir = 4 + }, +/obj/machinery/ai_status_display{ + pixel_x = -32; + pixel_y = 0 + }, +/turf/simulated/floor/tiled, +/area/hallway/secondary/entry/D3) +"dyP" = ( +/obj/machinery/atmospherics/pipe/simple/hidden, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 5 + }, +/turf/simulated/floor/tiled, +/area/hallway/secondary/entry/D3) +"dyQ" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/obj/machinery/atmospherics/unary/vent_pump/on{ + dir = 8 + }, +/turf/simulated/floor/tiled, +/area/hallway/secondary/entry/D3) +"dyR" = ( +/obj/effect/floor_decal/industrial/warning/corner{ + dir = 4 + }, +/obj/structure/closet/emcloset, +/turf/simulated/floor/tiled, +/area/hallway/secondary/entry/D3) +"dyS" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/obj/machinery/light{ + icon_state = "tube1"; + dir = 8 + }, +/turf/simulated/floor/tiled, +/area/hallway/secondary/entry/D1) +"dyT" = ( +/obj/machinery/atmospherics/pipe/manifold/hidden{ + dir = 8; + icon_state = "map" + }, +/obj/effect/floor_decal/industrial/warning/corner, +/turf/simulated/floor/tiled, +/area/hallway/secondary/entry/D1) +"dyU" = ( +/obj/effect/floor_decal/industrial/warning/corner{ + dir = 8 + }, +/obj/machinery/atmospherics/pipe/simple/hidden{ + dir = 4 + }, +/turf/simulated/floor/tiled, +/area/hallway/secondary/entry/D2) +"dyV" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/obj/machinery/atmospherics/pipe/manifold/hidden{ + dir = 4; + icon_state = "map" + }, +/turf/simulated/floor/tiled/monotile, +/area/hallway/secondary/entry/D2) +"dyW" = ( +/obj/effect/floor_decal/industrial/warning/corner, +/obj/machinery/light{ + dir = 4 + }, +/turf/simulated/floor/tiled, +/area/hallway/secondary/entry/D2) +"dyX" = ( +/obj/effect/floor_decal/industrial/warning/corner{ + dir = 8 + }, +/obj/machinery/atmospherics/pipe/manifold/hidden{ + dir = 4; + icon_state = "map" + }, +/turf/simulated/floor/tiled, +/area/hallway/secondary/entry/D3) +"dyY" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/obj/machinery/light{ + dir = 4 + }, +/turf/simulated/floor/tiled, +/area/hallway/secondary/entry/D3) +"dyZ" = ( +/obj/machinery/atmospherics/pipe/simple/hidden, +/obj/effect/floor_decal/industrial/warning{ + icon_state = "warning"; + dir = 4 + }, +/turf/simulated/floor/tiled, +/area/hallway/secondary/entry/D1) +"dza" = ( +/obj/machinery/door/airlock/glass_external{ + frequency = 1380; + icon_state = "door_locked"; + id_tag = "escape_dock_south_inner"; + locked = 1; + name = "Escape Airlock"; + req_access = list(13) + }, +/obj/effect/floor_decal/industrial/hatch/yellow, +/turf/simulated/floor/tiled/dark, +/area/hallway/secondary/entry/D1) +"dzb" = ( +/obj/machinery/atmospherics/unary/vent_pump/high_volume{ + dir = 1; + frequency = 1380; + id_tag = "escape_dock_south_pump" + }, +/obj/effect/floor_decal/industrial/warning{ + dir = 9 + }, +/turf/simulated/floor/tiled, +/area/hallway/secondary/entry/D1) +"dzc" = ( +/obj/machinery/atmospherics/unary/vent_pump/high_volume{ + dir = 1; + frequency = 1380; + id_tag = "escape_dock_south_pump" + }, +/obj/effect/floor_decal/industrial/warning{ + icon_state = "warning"; + dir = 5 + }, +/obj/machinery/airlock_sensor{ + frequency = 1380; + id_tag = "escape_dock_south_sensor"; + pixel_x = 0; + pixel_y = 25 + }, +/turf/simulated/floor/tiled/dark, +/area/hallway/secondary/entry/D1) +"dzd" = ( +/obj/machinery/door/airlock/external{ + frequency = 1380; + icon_state = "door_locked"; + id_tag = "escape_dock_south_outer"; + locked = 1; + name = "Escape Airlock"; + req_access = list(13) + }, +/obj/machinery/access_button{ + command = "cycle_exterior"; + frequency = 1380; + master_tag = "escape_dock_south_airlock"; + name = "exterior access button"; + pixel_x = 4; + pixel_y = 26; + req_one_access = list(13) + }, +/obj/machinery/shield_diffuser, +/obj/effect/floor_decal/industrial/hatch/yellow, +/turf/simulated/floor/tiled/dark, +/area/hallway/secondary/entry/D1) +"dze" = ( +/obj/machinery/access_button{ + command = "cycle_exterior"; + frequency = 1380; + master_tag = "escape_dock_south_starboard_airlock"; + name = "exterior access button"; + pixel_x = -4; + pixel_y = 26; + req_one_access = list(13) + }, +/obj/machinery/door/airlock/external{ + frequency = 1380; + icon_state = "door_locked"; + id_tag = "escape_dock_south_starboard_outer"; + locked = 1; + name = "Escape Airlock"; + req_access = list(13) + }, +/obj/effect/floor_decal/industrial/hatch/yellow, +/obj/machinery/shield_diffuser, +/turf/simulated/floor/tiled/dark, +/area/hallway/secondary/entry/D2) +"dzf" = ( +/obj/machinery/atmospherics/unary/vent_pump/high_volume{ + dir = 1; + frequency = 1380; + id_tag = "escape_dock_south_starboard_pump" + }, +/obj/effect/floor_decal/industrial/warning{ + dir = 9 + }, +/obj/machinery/airlock_sensor{ + frequency = 1380; + id_tag = "escape_dock_south_starboard_sensor"; + pixel_x = 0; + pixel_y = 25 + }, +/turf/simulated/floor/tiled/dark, +/area/hallway/secondary/entry/D2) +"dzg" = ( +/obj/machinery/atmospherics/unary/vent_pump/high_volume{ + dir = 1; + frequency = 1380; + id_tag = "escape_dock_south_starboard_pump" + }, +/obj/effect/floor_decal/industrial/warning{ + icon_state = "warning"; + dir = 5 + }, +/turf/simulated/floor/tiled, +/area/hallway/secondary/entry/D2) +"dzh" = ( +/obj/machinery/door/airlock/glass_external{ + frequency = 1380; + icon_state = "door_locked"; + id_tag = "escape_dock_south_starboard_inner"; + locked = 1; + name = "Escape Airlock"; + req_access = list(13) + }, +/obj/effect/floor_decal/industrial/hatch/yellow, +/turf/simulated/floor/tiled/dark, +/area/hallway/secondary/entry/D2) +"dzi" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/obj/machinery/atmospherics/pipe/simple/hidden, +/turf/simulated/floor/tiled/monotile, +/area/hallway/secondary/entry/D2) +"dzj" = ( +/obj/effect/floor_decal/industrial/warning{ + dir = 4 + }, +/turf/simulated/floor/tiled, +/area/hallway/secondary/entry/D2) +"dzk" = ( +/obj/effect/floor_decal/industrial/hatch/yellow, +/obj/machinery/door/airlock/glass_external{ + frequency = 1380; + icon_state = "door_locked"; + id_tag = "arrivals_dock_south_inner"; + locked = 1; + name = "Arrivals Airlock"; + req_access = list(13) + }, +/turf/simulated/floor/tiled/dark, +/area/hallway/secondary/entry/D2) +"dzl" = ( +/obj/machinery/embedded_controller/radio/airlock/docking_port_multi{ + frequency = 1380; + id_tag = "arrivals_dock_north_airlock"; + master_tag = "arrivals_dock"; + pixel_y = 30; + req_one_access = list(13); + tag_airlock_mech_sensor = "arrivals_dock_north_mech"; + tag_airpump = "arrivals_dock_north_pump"; + tag_chamber_sensor = "arrivals_dock_north_sensor"; + tag_exterior_door = "arrivals_dock_north_outer"; + tag_interior_door = "arrivals_dock_north_inner"; + tag_shuttle_mech_sensor = "shuttle_dock_north_mech" + }, +/obj/effect/floor_decal/industrial/loading{ + icon_state = "loadingarea"; + dir = 8 + }, +/obj/machinery/atmospherics/pipe/simple/hidden{ + dir = 6 + }, +/turf/simulated/floor/tiled, +/area/hallway/secondary/entry/D2) +"dzm" = ( +/obj/machinery/airlock_sensor{ + frequency = 1380; + id_tag = "arrivals_dock_south_sensor"; + pixel_x = 0; + pixel_y = 25 + }, +/obj/machinery/atmospherics/unary/vent_pump/high_volume{ + dir = 8; + frequency = 1380; + id_tag = "arrivals_dock_south_pump" + }, +/obj/effect/floor_decal/industrial/warning{ + dir = 4 + }, +/turf/simulated/floor/tiled, +/area/hallway/secondary/entry/D2) +"dzn" = ( +/obj/machinery/door/airlock/external{ + frequency = 1380; + icon_state = "door_locked"; + id_tag = "arrivals_dock_south_outer"; + locked = 1; + name = "Arrivals Airlock"; + req_access = list(13) + }, +/obj/effect/floor_decal/industrial/hatch/yellow, +/obj/machinery/shield_diffuser, +/obj/machinery/access_button{ + command = "cycle_exterior"; + frequency = 1380; + master_tag = "arrivals_dock_south_airlock"; + name = "exterior access button"; + pixel_x = 4; + pixel_y = 26; + req_one_access = list(13) + }, +/turf/simulated/floor/tiled/dark, +/area/hallway/secondary/entry/D2) +"dzo" = ( +/obj/effect/floor_decal/industrial/hatch/yellow, +/obj/machinery/shield_diffuser, +/obj/machinery/door/airlock/external{ + frequency = 1380; + icon_state = "door_locked"; + id_tag = "dock3_south_outer"; + locked = 1; + name = "External Airlock Access"; + req_access = list(13) + }, +/obj/machinery/access_button{ + command = "cycle_exterior"; + frequency = 1380; + master_tag = "dock3_south_airlock"; + name = "exterior access button"; + pixel_x = -5; + pixel_y = 26; + req_one_access = list(13) + }, +/turf/simulated/floor/tiled/dark, +/area/hallway/secondary/entry/D3) +"dzp" = ( +/obj/effect/floor_decal/industrial/warning{ + icon_state = "warning"; + dir = 8 + }, +/obj/machinery/airlock_sensor{ + frequency = 1380; + id_tag = "dock3_south_sensor"; + pixel_x = 0; + pixel_y = 25 + }, +/obj/machinery/atmospherics/unary/vent_pump/high_volume{ + dir = 1; + frequency = 1380; + id_tag = "dock3_south_pump" + }, +/turf/simulated/floor/tiled, +/area/hallway/secondary/entry/D3) +"dzq" = ( +/obj/machinery/light/small{ + dir = 1 + }, +/obj/effect/floor_decal/industrial/warning{ + dir = 4 + }, +/obj/machinery/atmospherics/unary/vent_pump/high_volume{ + dir = 1; + frequency = 1380; + id_tag = "dock3_south_pump" + }, +/turf/simulated/floor/tiled, +/area/hallway/secondary/entry/D3) +"dzr" = ( +/obj/effect/floor_decal/industrial/hatch/yellow, +/obj/machinery/door/airlock/glass_external{ + frequency = 1380; + icon_state = "door_locked"; + id_tag = "dock3_south_inner"; + locked = 1; + name = "Dock Three Internal Airlock"; + req_access = list(13) + }, +/turf/simulated/floor/tiled/dark, +/area/hallway/secondary/entry/D3) +"dzs" = ( +/obj/effect/floor_decal/industrial/warning{ + dir = 8 + }, +/obj/machinery/atmospherics/pipe/simple/hidden, +/turf/simulated/floor/tiled, +/area/hallway/secondary/entry/D3) +"dzt" = ( +/obj/machinery/access_button{ + command = "cycle_interior"; + frequency = 1380; + master_tag = "escape_dock_south_airlock"; + name = "interior access button"; + pixel_x = 26; + pixel_y = -26; + req_one_access = list(13) + }, +/obj/machinery/atmospherics/pipe/simple/hidden, +/obj/effect/floor_decal/industrial/warning{ + icon_state = "warning"; + dir = 4 + }, +/turf/simulated/floor/tiled, +/area/hallway/secondary/entry/D1) +"dzu" = ( +/obj/machinery/atmospherics/unary/vent_pump/high_volume{ + dir = 2; + frequency = 1380; + id_tag = "escape_dock_south_pump" + }, +/obj/effect/floor_decal/industrial/warning{ + dir = 10 + }, +/obj/machinery/light/small, +/turf/simulated/floor/tiled, +/area/hallway/secondary/entry/D1) +"dzv" = ( +/obj/machinery/atmospherics/unary/vent_pump/high_volume{ + dir = 2; + frequency = 1380; + id_tag = "escape_dock_south_pump" + }, +/obj/effect/floor_decal/industrial/warning{ + dir = 6 + }, +/obj/machinery/embedded_controller/radio/airlock/docking_port_multi{ + frequency = 1380; + id_tag = "escape_dock_south_airlock"; + master_tag = "escape_dock"; + pixel_y = -30; + req_one_access = list(13); + tag_airlock_mech_sensor = "escape_dock_south_mech"; + tag_airpump = "escape_dock_south_pump"; + tag_chamber_sensor = "escape_dock_south_sensor"; + tag_exterior_door = "escape_dock_south_outer"; + tag_interior_door = "escape_dock_south_inner"; + tag_shuttle_mech_sensor = "shuttle_dock_south_mech" + }, +/turf/simulated/floor/tiled/dark, +/area/hallway/secondary/entry/D1) +"dzw" = ( +/obj/machinery/door/airlock/external{ + frequency = 1380; + icon_state = "door_locked"; + id_tag = "escape_dock_south_outer"; + locked = 1; + name = "Escape Airlock"; + req_access = list(13) + }, +/obj/machinery/shield_diffuser, +/obj/effect/floor_decal/industrial/hatch/yellow, +/turf/simulated/floor/tiled/dark, +/area/hallway/secondary/entry/D1) +"dzx" = ( +/obj/machinery/door/airlock/external{ + frequency = 1380; + icon_state = "door_locked"; + id_tag = "escape_dock_south_starboard_outer"; + locked = 1; + name = "Escape Airlock"; + req_access = list(13) + }, +/obj/effect/floor_decal/industrial/hatch/yellow, +/obj/machinery/shield_diffuser, +/turf/simulated/floor/tiled/dark, +/area/hallway/secondary/entry/D2) +"dzy" = ( +/obj/machinery/atmospherics/unary/vent_pump/high_volume{ + dir = 2; + frequency = 1380; + id_tag = "escape_dock_south_starboard_pump" + }, +/obj/effect/floor_decal/industrial/warning{ + dir = 10 + }, +/obj/machinery/embedded_controller/radio/airlock/docking_port_multi{ + frequency = 1380; + id_tag = "escape_dock_ssouth_airlock"; + master_tag = "escape_dock"; + pixel_y = -30; + req_one_access = list(13); + tag_airlock_mech_sensor = "escape_dock_south_starboard_mech"; + tag_airpump = "escape_dock_south_starboard_pump"; + tag_chamber_sensor = "escape_dock_south_starboard_sensor"; + tag_exterior_door = "escape_dock_south_starboard_outer"; + tag_interior_door = "escape_dock_south_starboard_inner"; + tag_shuttle_mech_sensor = "shuttle_dock_south_starboard_mech" + }, +/turf/simulated/floor/tiled/dark, +/area/hallway/secondary/entry/D2) +"dzz" = ( +/obj/machinery/atmospherics/unary/vent_pump/high_volume{ + dir = 2; + frequency = 1380; + id_tag = "escape_dock_south_starboard_pump" + }, +/obj/effect/floor_decal/industrial/warning{ + dir = 6 + }, +/obj/machinery/light/small, +/turf/simulated/floor/tiled, +/area/hallway/secondary/entry/D2) +"dzA" = ( +/obj/effect/floor_decal/industrial/warning{ + dir = 8 + }, +/obj/machinery/access_button{ + command = "cycle_interior"; + frequency = 1380; + master_tag = "escape_dock_south_starboard_airlock"; + name = "interior access button"; + pixel_x = -26; + pixel_y = -26; + req_one_access = list(13) + }, +/turf/simulated/floor/tiled, +/area/hallway/secondary/entry/D2) +"dzB" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/obj/machinery/atmospherics/pipe/manifold/hidden{ + dir = 8; + icon_state = "map" + }, +/turf/simulated/floor/tiled/monotile, +/area/hallway/secondary/entry/D2) +"dzC" = ( +/obj/effect/floor_decal/industrial/warning{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden{ + dir = 4 + }, +/obj/machinery/access_button{ + command = "cycle_interior"; + frequency = 1380; + master_tag = "arrivals_dock_south_airlock"; + name = "interior access button"; + pixel_x = 26; + pixel_y = -26; + req_one_access = list(13) + }, +/turf/simulated/floor/tiled, +/area/hallway/secondary/entry/D2) +"dzD" = ( +/obj/effect/floor_decal/industrial/loading{ + icon_state = "loadingarea"; + dir = 8 + }, +/obj/machinery/atmospherics/pipe/simple/hidden{ + dir = 6 + }, +/turf/simulated/floor/tiled, +/area/hallway/secondary/entry/D2) +"dzE" = ( +/obj/machinery/embedded_controller/radio/airlock/docking_port_multi{ + frequency = 1380; + id_tag = "arrivals_dock_south_airlock"; + master_tag = "arrivals_dock"; + pixel_y = -30; + req_one_access = list(13); + tag_airlock_mech_sensor = "arrivals_dock_south_mech"; + tag_airpump = "arrivals_dock_south_pump"; + tag_chamber_sensor = "arrivals_dock_south_sensor"; + tag_exterior_door = "arrivals_dock_south_outer"; + tag_interior_door = "arrivals_dock_south_inner"; + tag_shuttle_mech_sensor = "arrivals_dock_south_mech" + }, +/obj/effect/floor_decal/industrial/loading{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/manifold/hidden, +/turf/simulated/floor/tiled, +/area/hallway/secondary/entry/D2) +"dzF" = ( +/obj/machinery/atmospherics/unary/vent_pump/high_volume{ + dir = 8; + frequency = 1380; + id_tag = "arrivals_dock_south_pump" + }, +/obj/effect/floor_decal/industrial/warning{ + dir = 4 + }, +/turf/simulated/floor/tiled, +/area/hallway/secondary/entry/D2) +"dzG" = ( +/obj/effect/floor_decal/industrial/hatch/yellow, +/obj/machinery/shield_diffuser, +/obj/machinery/door/airlock/external{ + frequency = 1380; + icon_state = "door_locked"; + id_tag = "arrivals_dock_south_outer"; + locked = 1; + name = "Arrivals Airlock"; + req_access = list(13) + }, +/turf/simulated/floor/tiled/dark, +/area/hallway/secondary/entry/D2) +"dzH" = ( +/obj/effect/floor_decal/industrial/hatch/yellow, +/obj/machinery/shield_diffuser, +/obj/machinery/door/airlock/external{ + frequency = 1380; + icon_state = "door_locked"; + id_tag = "dock3_south_outer"; + locked = 1; + name = "External Airlock Access"; + req_access = list(13) + }, +/turf/simulated/floor/tiled/dark, +/area/hallway/secondary/entry/D2) +"dzI" = ( +/obj/effect/floor_decal/industrial/warning{ + icon_state = "warning"; + dir = 8 + }, +/obj/machinery/atmospherics/unary/vent_pump/high_volume{ + dir = 2; + frequency = 1380; + id_tag = "dock3_south_pump" + }, +/turf/simulated/floor/tiled, +/area/hallway/secondary/entry/D3) +"dzJ" = ( +/obj/effect/floor_decal/industrial/warning{ + dir = 4 + }, +/obj/machinery/embedded_controller/radio/airlock/docking_port{ + frequency = 1380; + id_tag = "dock3_south_airlock"; + pixel_x = 0; + pixel_y = -30; + req_one_access = list(13); + tag_airpump = "dock3_south_pump"; + tag_chamber_sensor = "dock3_south_sensor"; + tag_exterior_door = "dock3_south_outer"; + tag_interior_door = "dock3_south_inner" + }, +/obj/machinery/atmospherics/unary/vent_pump/high_volume{ + dir = 2; + frequency = 1380; + id_tag = "dock3_south_pump" + }, +/turf/simulated/floor/tiled, +/area/hallway/secondary/entry/D3) +"dzK" = ( +/obj/effect/floor_decal/industrial/warning{ + dir = 8 + }, +/obj/machinery/atmospherics/pipe/simple/hidden, +/obj/machinery/access_button{ + command = "cycle_interior"; + frequency = 1380; + master_tag = "dock3_south_airlock"; + name = "interior access button"; + pixel_x = -25; + pixel_y = -26; + req_one_access = list(13) + }, +/turf/simulated/floor/tiled, +/area/hallway/secondary/entry/D3) +"dzL" = ( +/obj/machinery/firealarm{ + dir = 8; + pixel_x = -24 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/obj/machinery/camera/network/second_deck{ + c_tag = "Second Deck - Dock One Aft"; + dir = 4 + }, +/turf/simulated/floor/tiled, +/area/hallway/secondary/entry/D1) +"dzM" = ( +/obj/effect/floor_decal/industrial/warning/corner{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/manifold/hidden{ + dir = 8; + icon_state = "map" + }, +/turf/simulated/floor/tiled, +/area/hallway/secondary/entry/D1) +"dzN" = ( +/obj/effect/floor_decal/industrial/warning/corner{ + icon_state = "warningcorner"; + dir = 1 + }, +/obj/machinery/atmospherics/pipe/simple/hidden{ + dir = 4 + }, +/obj/machinery/camera/network/second_deck{ + c_tag = "Second Deck - Dock Two Aft"; + dir = 4 + }, +/turf/simulated/floor/tiled, +/area/hallway/secondary/entry/D2) +"dzO" = ( +/obj/effect/floor_decal/industrial/warning/corner{ + dir = 4 + }, +/turf/simulated/floor/tiled, +/area/hallway/secondary/entry/D2) +"dzP" = ( +/obj/effect/floor_decal/industrial/warning/corner{ + icon_state = "warningcorner"; + dir = 1 + }, +/obj/machinery/atmospherics/pipe/manifold/hidden{ + dir = 4; + icon_state = "map" + }, +/turf/simulated/floor/tiled, +/area/hallway/secondary/entry/D3) +"dzQ" = ( +/obj/machinery/firealarm{ + dir = 4; + pixel_x = 24 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/obj/machinery/camera/network/second_deck{ + c_tag = "Second Deck - Dock Three Aft"; + dir = 8 + }, +/turf/simulated/floor/tiled, +/area/hallway/secondary/entry/D3) +"dzR" = ( +/obj/machinery/atmospherics/unary/vent_scrubber/on{ + dir = 1 + }, +/obj/structure/extinguisher_cabinet{ + pixel_x = -28; + pixel_y = 0 + }, +/turf/simulated/floor/tiled, +/area/hallway/secondary/entry/D1) +"dzS" = ( +/obj/item/device/radio/intercom{ + dir = 4; + name = "Station Intercom (General)"; + pixel_x = 21 + }, +/obj/machinery/atmospherics/pipe/simple/hidden, +/turf/simulated/floor/tiled, +/area/hallway/secondary/entry/D1) +"dzT" = ( +/obj/item/device/radio/intercom{ + dir = 8; + name = "Station Intercom (General)"; + pixel_x = -21 + }, +/obj/machinery/atmospherics/unary/vent_scrubber/on{ + dir = 4 + }, +/turf/simulated/floor/tiled, +/area/hallway/secondary/entry/D2) +"dzU" = ( +/obj/machinery/atmospherics/pipe/simple/hidden, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 9 + }, +/turf/simulated/floor/tiled, +/area/hallway/secondary/entry/D2) +"dzV" = ( +/obj/machinery/firealarm{ + dir = 4; + pixel_x = 24 + }, +/turf/simulated/floor/tiled, +/area/hallway/secondary/entry/D2) +"dzW" = ( +/obj/machinery/atmospherics/pipe/simple/hidden, +/obj/item/device/radio/intercom{ + dir = 8; + name = "Station Intercom (General)"; + pixel_x = -21 + }, +/turf/simulated/floor/tiled, +/area/hallway/secondary/entry/D3) +"dzX" = ( +/obj/machinery/atmospherics/unary/vent_scrubber/on{ + dir = 1 + }, +/obj/structure/extinguisher_cabinet{ + pixel_x = 28; + pixel_y = 0 + }, +/turf/simulated/floor/tiled, +/area/hallway/secondary/entry/D3) +"dzY" = ( +/obj/effect/floor_decal/sign/dock/one, +/turf/simulated/floor/tiled, +/area/hallway/secondary/entry/D1) +"dzZ" = ( +/obj/machinery/atmospherics/pipe/simple/hidden, +/obj/machinery/light{ + dir = 4 + }, +/turf/simulated/floor/tiled, +/area/hallway/secondary/entry/D1) +"dAa" = ( +/obj/machinery/light{ + icon_state = "tube1"; + dir = 8 + }, +/turf/simulated/floor/tiled, +/area/hallway/secondary/entry/D2) +"dAb" = ( +/obj/machinery/atmospherics/pipe/simple/hidden, +/obj/effect/floor_decal/sign/dock/two, +/turf/simulated/floor/tiled, +/area/hallway/secondary/entry/D2) +"dAc" = ( +/obj/machinery/atmospherics/pipe/simple/hidden, +/obj/machinery/light{ + icon_state = "tube1"; + dir = 8 + }, +/turf/simulated/floor/tiled, +/area/hallway/secondary/entry/D3) +"dAd" = ( +/obj/effect/floor_decal/sign/dock/three, +/turf/simulated/floor/tiled, +/area/hallway/secondary/entry/D3) +"dAe" = ( +/obj/machinery/door/firedoor/border_only, +/obj/machinery/atmospherics/pipe/simple/hidden{ + dir = 6 + }, +/obj/effect/wingrille_spawn/reinforced, +/turf/simulated/floor/plating, +/area/hallway/secondary/entry/D1) +"dAf" = ( +/obj/effect/floor_decal/industrial/warning, +/obj/machinery/atmospherics/pipe/simple/hidden{ + dir = 4 + }, +/obj/machinery/access_button{ + command = "cycle_interior"; + frequency = 1380; + master_tag = "trade_shuttle_dock_airlock"; + name = "interior access button"; + pixel_x = -28; + pixel_y = -26; + req_access = list(13) + }, +/turf/simulated/floor/tiled, +/area/hallway/secondary/entry/D1) +"dAg" = ( +/obj/effect/floor_decal/industrial/warning, +/obj/machinery/atmospherics/pipe/manifold/hidden, +/turf/simulated/floor/tiled, +/area/hallway/secondary/entry/D1) +"dAh" = ( +/obj/machinery/door/firedoor/border_only, +/obj/machinery/atmospherics/pipe/simple/hidden{ + dir = 10; + icon_state = "intact" + }, +/obj/effect/wingrille_spawn/reinforced, +/turf/simulated/floor/plating, +/area/hallway/secondary/entry/D1) +"dAi" = ( +/obj/machinery/atmospherics/pipe/simple/hidden, +/obj/effect/floor_decal/industrial/warning, +/obj/machinery/access_button{ + command = "cycle_interior"; + frequency = 1380; + master_tag = "admin_shuttle_dock_airlock"; + name = "interior access button"; + pixel_x = 26; + pixel_y = -26; + req_one_access = list(13) + }, +/turf/simulated/floor/tiled, +/area/hallway/secondary/entry/D2) +"dAj" = ( +/obj/structure/closet/emcloset, +/obj/effect/floor_decal/industrial/warning/corner{ + dir = 8 + }, +/turf/simulated/floor/tiled, +/area/hallway/secondary/entry/D2) +"dAk" = ( +/obj/effect/floor_decal/industrial/warning, +/obj/machinery/atmospherics/pipe/manifold/hidden, +/turf/simulated/floor/tiled, +/area/hallway/secondary/entry/D3) +"dAl" = ( +/obj/effect/floor_decal/industrial/warning, +/obj/machinery/atmospherics/pipe/simple/hidden{ + dir = 4 + }, +/obj/machinery/access_button{ + command = "cycle_interior"; + frequency = 1331; + master_tag = "nuke_shuttle_dock_airlock"; + name = "interior access button"; + pixel_x = 26; + pixel_y = -26; + req_one_access = list(13) + }, +/turf/simulated/floor/tiled, +/area/hallway/secondary/entry/D3) +"dAm" = ( +/obj/machinery/door/firedoor/border_only, +/obj/machinery/atmospherics/pipe/simple/hidden{ + dir = 10; + icon_state = "intact" + }, +/obj/effect/wingrille_spawn/reinforced, +/turf/simulated/floor/plating, +/area/hallway/secondary/entry/D3) +"dAn" = ( +/obj/machinery/atmospherics/pipe/simple/hidden, +/turf/simulated/wall/r_wall, +/area/hallway/secondary/entry/D1) +"dAo" = ( +/obj/machinery/door/airlock/glass_external{ + frequency = 1380; + icon_state = "door_locked"; + id_tag = "trade_shuttle_dock_inner"; + locked = 1; + name = "Dock One Internal Airlock"; + req_access = list(13) + }, +/obj/effect/floor_decal/industrial/hatch/yellow, +/turf/simulated/floor/tiled/dark, +/area/hallway/secondary/entry/D1) +"dAp" = ( +/obj/effect/floor_decal/industrial/hatch/yellow, +/obj/machinery/door/airlock/glass_external{ + frequency = 1380; + icon_state = "door_locked"; + id_tag = "trade_shuttle_dock_inner"; + locked = 1; + name = "Dock One Internal Airlock"; + req_access = list(13) + }, +/turf/simulated/floor/tiled/dark, +/area/hallway/secondary/entry/D1) +"dAq" = ( +/obj/machinery/atmospherics/pipe/simple/hidden, +/obj/machinery/door/airlock/glass_external{ + frequency = 1380; + icon_state = "door_locked"; + id_tag = "admin_shuttle_dock_inner"; + locked = 1; + name = "Dock Two Internal Airlock"; + req_access = list(13) + }, +/obj/effect/floor_decal/industrial/hatch/yellow, +/turf/simulated/floor/tiled/dark, +/area/hallway/secondary/entry/D2) +"dAr" = ( +/obj/machinery/atmospherics/pipe/simple/hidden, +/turf/simulated/wall/r_wall, +/area/hallway/secondary/entry/D3) +"dAs" = ( +/obj/effect/floor_decal/industrial/hatch/yellow, +/obj/machinery/door/airlock/glass_external{ + frequency = 1331; + icon_state = "door_locked"; + id_tag = "nuke_shuttle_dock_inner"; + locked = 1; + name = "Dock Three Internal Airlock"; + req_access = list(13) + }, +/turf/simulated/floor/tiled/dark, +/area/hallway/secondary/entry/D3) +"dAt" = ( +/obj/machinery/atmospherics/pipe/manifold/hidden{ + dir = 8; + icon_state = "map" + }, +/obj/machinery/door/firedoor/border_only, +/obj/effect/wingrille_spawn/reinforced, +/turf/simulated/floor/plating, +/area/hallway/secondary/entry/D1) +"dAu" = ( +/obj/effect/floor_decal/industrial/warning{ + dir = 9 + }, +/obj/machinery/atmospherics/unary/vent_pump/high_volume{ + dir = 8; + frequency = 1380; + id_tag = "trade_shuttle_dock_pump" + }, +/turf/simulated/floor/tiled, +/area/hallway/secondary/entry/D1) +"dAv" = ( +/obj/effect/floor_decal/industrial/warning{ + icon_state = "warning"; + dir = 5 + }, +/obj/machinery/light/small{ + dir = 4; + pixel_y = 0 + }, +/obj/machinery/atmospherics/unary/vent_pump/high_volume{ + dir = 4; + frequency = 1380; + id_tag = "trade_shuttle_dock_pump" + }, +/turf/simulated/floor/tiled, +/area/hallway/secondary/entry/D1) +"dAw" = ( +/obj/machinery/atmospherics/pipe/manifold/hidden{ + dir = 4; + icon_state = "map" + }, +/obj/machinery/door/firedoor/border_only, +/obj/effect/wingrille_spawn/reinforced, +/turf/simulated/floor/plating, +/area/hallway/secondary/entry/D1) +"dAx" = ( +/obj/effect/floor_decal/industrial/warning{ + dir = 9 + }, +/obj/machinery/atmospherics/unary/vent_pump/high_volume{ + dir = 4; + frequency = 1380; + id_tag = "admin_shuttle_dock_pump" + }, +/turf/simulated/floor/tiled, +/area/hallway/secondary/entry/D2) +"dAy" = ( +/obj/machinery/atmospherics/pipe/manifold4w/hidden, +/obj/effect/floor_decal/industrial/warning{ + icon_state = "warning"; + dir = 1 + }, +/turf/simulated/floor/tiled, +/area/hallway/secondary/entry/D2) +"dAz" = ( +/obj/effect/floor_decal/industrial/warning{ + icon_state = "warning"; + dir = 5 + }, +/obj/machinery/light/small{ + dir = 4; + pixel_y = 0 + }, +/obj/machinery/atmospherics/unary/vent_pump/high_volume{ + dir = 8; + frequency = 1380; + id_tag = "admin_shuttle_dock_pump" + }, +/turf/simulated/floor/tiled, +/area/hallway/secondary/entry/D2) +"dAA" = ( +/obj/machinery/door/firedoor/border_only, +/obj/machinery/atmospherics/pipe/manifold/hidden{ + dir = 8; + icon_state = "map" + }, +/obj/effect/wingrille_spawn/reinforced, +/turf/simulated/floor/plating, +/area/hallway/secondary/entry/D3) +"dAB" = ( +/obj/effect/floor_decal/industrial/warning{ + dir = 9 + }, +/obj/machinery/light/small{ + dir = 8 + }, +/obj/machinery/atmospherics/unary/vent_pump/high_volume{ + dir = 8; + frequency = 1331; + id_tag = "nuke_shuttle_dock_pump" + }, +/turf/simulated/floor/tiled, +/area/hallway/secondary/entry/D3) +"dAC" = ( +/obj/effect/floor_decal/industrial/warning{ + icon_state = "warning"; + dir = 5 + }, +/obj/machinery/atmospherics/unary/vent_pump/high_volume{ + dir = 4; + frequency = 1331; + id_tag = "nuke_shuttle_dock_pump" + }, +/turf/simulated/floor/tiled, +/area/hallway/secondary/entry/D3) +"dAD" = ( +/obj/machinery/door/firedoor/border_only, +/obj/machinery/atmospherics/pipe/manifold/hidden{ + dir = 4; + icon_state = "map" + }, +/obj/effect/wingrille_spawn/reinforced, +/turf/simulated/floor/plating, +/area/hallway/secondary/entry/D3) +"dAE" = ( +/obj/effect/floor_decal/industrial/warning{ + dir = 10 + }, +/obj/machinery/atmospherics/unary/vent_pump/high_volume{ + dir = 8; + frequency = 1380; + id_tag = "trade_shuttle_dock_pump" + }, +/obj/machinery/airlock_sensor{ + frequency = 1380; + id_tag = "trade_shuttle_dock_sensor"; + pixel_x = -28; + pixel_y = 0 + }, +/turf/simulated/floor/tiled, +/area/hallway/secondary/entry/D1) +"dAF" = ( +/obj/effect/floor_decal/industrial/warning{ + dir = 6 + }, +/obj/machinery/atmospherics/unary/vent_pump/high_volume{ + dir = 4; + frequency = 1380; + id_tag = "trade_shuttle_dock_pump" + }, +/obj/machinery/embedded_controller/radio/airlock/docking_port{ + frequency = 1380; + id_tag = "trade_shuttle_dock_airlock"; + pixel_x = 28; + pixel_y = 0; + req_one_access = list(13); + tag_airpump = "trade_shuttle_dock_pump"; + tag_chamber_sensor = "trade_shuttle_dock_sensor"; + tag_exterior_door = "trade_shuttle_dock_outer"; + tag_interior_door = "trade_shuttle_dock_inner" + }, +/turf/simulated/floor/tiled, +/area/hallway/secondary/entry/D1) +"dAG" = ( +/obj/effect/floor_decal/industrial/warning{ + dir = 10 + }, +/obj/machinery/atmospherics/unary/vent_pump/high_volume{ + dir = 4; + frequency = 1380; + id_tag = "admin_shuttle_dock_pump" + }, +/obj/machinery/embedded_controller/radio/airlock/docking_port{ + frequency = 1380; + id_tag = "admin_shuttle_dock_airlock"; + pixel_x = -28; + pixel_y = 0; + req_one_access = list(13); + tag_airpump = "admin_shuttle_dock_pump"; + tag_chamber_sensor = "admin_shuttle_dock_sensor"; + tag_exterior_door = "admin_shuttle_dock_outer"; + tag_interior_door = "admin_shuttle_dock_inner" + }, +/turf/simulated/floor/tiled, +/area/hallway/secondary/entry/D2) +"dAH" = ( +/obj/machinery/atmospherics/pipe/manifold/hidden, +/obj/effect/floor_decal/industrial/warning, +/turf/simulated/floor/tiled, +/area/hallway/secondary/entry/D2) +"dAI" = ( +/obj/effect/floor_decal/industrial/warning{ + dir = 6 + }, +/obj/machinery/atmospherics/unary/vent_pump/high_volume{ + dir = 8; + frequency = 1380; + id_tag = "admin_shuttle_dock_pump" + }, +/obj/machinery/airlock_sensor{ + frequency = 1380; + id_tag = "admin_shuttle_dock_sensor"; + pixel_x = 28; + pixel_y = 0 + }, +/turf/simulated/floor/tiled, +/area/hallway/secondary/entry/D2) +"dAJ" = ( +/obj/machinery/atmospherics/pipe/simple/hidden{ + dir = 5; + icon_state = "intact" + }, +/obj/effect/wingrille_spawn/reinforced, +/turf/simulated/floor/plating, +/area/hallway/secondary/entry/D3) +"dAK" = ( +/obj/effect/floor_decal/industrial/warning{ + dir = 10 + }, +/obj/machinery/airlock_sensor{ + frequency = 1331; + id_tag = "nuke_shuttle_dock_sensor"; + pixel_x = -28; + pixel_y = 0 + }, +/obj/machinery/atmospherics/unary/vent_pump/high_volume{ + dir = 8; + frequency = 1331; + id_tag = "nuke_shuttle_dock_pump" + }, +/turf/simulated/floor/tiled, +/area/hallway/secondary/entry/D3) +"dAL" = ( +/obj/effect/floor_decal/industrial/warning{ + dir = 6 + }, +/obj/machinery/embedded_controller/radio/airlock/docking_port{ + frequency = 1331; + id_tag = "nuke_shuttle_dock_airlock"; + pixel_x = 28; + pixel_y = 0; + req_access = list(0); + req_one_access = list(13); + tag_airpump = "nuke_shuttle_dock_pump"; + tag_chamber_sensor = "nuke_shuttle_dock_sensor"; + tag_exterior_door = "nuke_shuttle_dock_outer"; + tag_interior_door = "nuke_shuttle_dock_inner" + }, +/obj/machinery/atmospherics/unary/vent_pump/high_volume{ + dir = 4; + frequency = 1331; + id_tag = "nuke_shuttle_dock_pump" + }, +/turf/simulated/floor/tiled, +/area/hallway/secondary/entry/D3) +"dAM" = ( +/obj/machinery/shield_diffuser, +/obj/machinery/door/airlock/external{ + frequency = 1380; + icon_state = "door_locked"; + id_tag = "trade_shuttle_dock_outer"; + locked = 1; + name = "Dock One External Access"; + req_access = list(13) + }, +/obj/effect/floor_decal/industrial/hatch/yellow, +/turf/simulated/floor/tiled/dark, +/area/hallway/secondary/entry/D1) +"dAN" = ( +/obj/machinery/access_button{ + command = "cycle_exterior"; + frequency = 1380; + master_tag = "trade_shuttle_dock_airlock"; + name = "exterior access button"; + pixel_x = 28; + pixel_y = -6; + req_one_access = list(13) + }, +/obj/machinery/shield_diffuser, +/obj/effect/floor_decal/industrial/hatch/yellow, +/obj/machinery/door/airlock/external{ + frequency = 1380; + icon_state = "door_locked"; + id_tag = "trade_shuttle_dock_outer"; + locked = 1; + name = "Dock One External Access"; + req_access = list(13) + }, +/turf/simulated/floor/tiled/dark, +/area/hallway/secondary/entry/D1) +"dAO" = ( +/obj/structure/sign/warning/docking_area, +/turf/simulated/wall/r_wall, +/area/hallway/secondary/entry/D2) +"dAP" = ( +/obj/machinery/shield_diffuser, +/obj/machinery/access_button{ + command = "cycle_exterior"; + frequency = 1380; + master_tag = "admin_shuttle_dock_airlock"; + name = "exterior access button"; + pixel_x = 28; + pixel_y = -6; + req_one_access = list(13) + }, +/obj/machinery/door/airlock/external{ + frequency = 1380; + icon_state = "door_locked"; + id_tag = "admin_shuttle_dock_outer"; + locked = 1; + name = "Dock Two External Airlock"; + req_access = list(13) + }, +/obj/effect/floor_decal/industrial/hatch/yellow, +/turf/simulated/floor/tiled/dark, +/area/hallway/secondary/entry/D2) +"dAQ" = ( +/obj/machinery/access_button{ + command = "cycle_exterior"; + frequency = 1331; + master_tag = "nuke_shuttle_dock_airlock"; + name = "exterior access button"; + pixel_x = -28; + pixel_y = -6; + req_one_access = list(13) + }, +/obj/machinery/door/airlock/external{ + frequency = 1331; + icon_state = "door_locked"; + id_tag = "nuke_shuttle_dock_outer"; + locked = 1; + name = "Dock Three External Airlock"; + req_access = list(13) + }, +/obj/machinery/shield_diffuser, +/obj/effect/floor_decal/industrial/hatch/yellow, +/turf/simulated/floor/tiled/dark, +/area/hallway/secondary/entry/D3) +"dAR" = ( +/obj/machinery/shield_diffuser, +/obj/effect/floor_decal/industrial/hatch/yellow, +/obj/machinery/door/airlock/external{ + frequency = 1331; + icon_state = "door_locked"; + id_tag = "nuke_shuttle_dock_outer"; + locked = 1; + name = "Dock Three External Airlock"; + req_access = list(13) + }, +/turf/simulated/floor/tiled/dark, +/area/hallway/secondary/entry/D3) +"dAS" = ( +/turf/space, +/area/syndicate_station/arrivals_dock) +"dAT" = ( +/turf/space, +/area/shuttle/merchant/away) +"dAU" = ( +/turf/space, +/area/shuttle/administration/station) +"dAV" = ( +/turf/simulated/floor/reinforced/airless, +/area/thirddeck/roof) +"dAW" = ( +/turf/space, +/area/shuttle/response_ship/thirddeck) +"dAX" = ( +/turf/simulated/floor/airless, +/area/thirddeck/roof) +"dAY" = ( +/obj/effect/landmark{ + name = "carpspawn" + }, +/turf/space, +/area/shuttle/response_ship/thirddeck) +"dAZ" = ( +/obj/structure/grille, +/turf/simulated/floor/reinforced/airless, +/area/thirddeck/roof) +"dBa" = ( +/turf/simulated/wall/r_wall, +/area/thirddeck/roof) +"dBb" = ( +/obj/machinery/camera/network/command{ + c_tag = "AI - Fore"; + dir = 1 + }, +/turf/simulated/floor/reinforced/airless, +/area/thirddeck/roof) +"dBc" = ( +/turf/simulated/wall/r_wall, +/area/ai) +"dBd" = ( +/obj/structure/table/standard, +/obj/item/device/radio/intercom{ + dir = 1; + name = "Station Intercom (General)"; + pixel_y = 21 + }, +/obj/structure/flora/pottedplant/unusual{ + name = "Steve"; + pixel_y = 15 + }, +/obj/item/device/radio/intercom/custom{ + dir = 8; + pixel_x = -21; + pixel_y = 0 + }, +/obj/item/device/radio/intercom/private{ + dir = 4; + pixel_x = 21; + pixel_y = 0 + }, +/turf/simulated/floor/greengrid, +/area/ai) +"dBe" = ( +/obj/machinery/ai_status_display, +/turf/simulated/wall/r_wall, +/area/ai) +"dBf" = ( +/obj/effect/floor_decal/industrial/warning/corner, +/obj/machinery/atmospherics/unary/vent_pump/on, +/turf/simulated/floor/tiled/techfloor, +/area/ai) +"dBg" = ( +/obj/effect/floor_decal/industrial/warning, +/turf/simulated/floor/tiled/techfloor, +/area/ai) +"dBh" = ( +/obj/effect/floor_decal/industrial/outline/grey, +/obj/machinery/porta_turret/ai_defense, +/obj/effect/floor_decal/industrial/warning/corner{ + dir = 8 + }, +/obj/effect/floor_decal/industrial/warning/corner, +/turf/simulated/floor/tiled/techfloor, +/area/ai) +"dBi" = ( +/obj/effect/floor_decal/industrial/warning/corner{ + dir = 8 + }, +/obj/machinery/atmospherics/unary/vent_scrubber/on, +/turf/simulated/floor/tiled/techfloor, +/area/ai) +"dBj" = ( +/obj/machinery/status_display, +/turf/simulated/wall/r_wall, +/area/ai) +"dBk" = ( +/obj/machinery/porta_turret/ai_defense, +/obj/effect/floor_decal/industrial/outline/grey, +/obj/effect/floor_decal/industrial/warning/corner, +/turf/simulated/floor/tiled/techfloor, +/area/ai) +"dBl" = ( +/obj/effect/floor_decal/industrial/warning{ + dir = 6 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/turf/simulated/floor/tiled/techfloor, +/area/ai) +"dBm" = ( +/turf/simulated/floor/greengrid, +/area/ai) +"dBn" = ( +/obj/effect/floor_decal/industrial/warning/cee, +/obj/structure/cable/cyan{ + d1 = 2; + d2 = 4; + icon_state = "2-4" + }, +/obj/machinery/hologram/holopad, +/turf/simulated/floor/tiled/dark, +/area/ai) +"dBo" = ( +/obj/structure/cable/cyan{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/turf/simulated/floor/greengrid, +/area/ai) +"dBp" = ( +/obj/effect/floor_decal/industrial/warning{ + dir = 10 + }, +/obj/structure/cable/cyan{ + d1 = 2; + d2 = 8; + icon_state = "2-8" + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/turf/simulated/floor/tiled/techfloor, +/area/ai) +"dBq" = ( +/obj/machinery/porta_turret/ai_defense, +/obj/effect/floor_decal/industrial/outline/grey, +/obj/effect/floor_decal/industrial/warning/corner{ + dir = 8 + }, +/turf/simulated/floor/tiled/techfloor, +/area/ai) +"dBr" = ( +/turf/space, +/area/skipjack_station/thirddeck) +"dBs" = ( +/obj/machinery/power/solar{ + id = "foreportsolar"; + name = "Port Solar Array" + }, +/obj/structure/cable/yellow{ + d2 = 4; + icon_state = "0-4" + }, +/turf/simulated/floor/airless{ + icon_state = "solarpanel" + }, +/area/solar/foreportsolar) +"dBt" = ( +/obj/structure/cable/yellow{ + d1 = 2; + d2 = 4; + icon_state = "2-4" + }, +/obj/structure/cable/yellow{ + d1 = 2; + d2 = 8; + icon_state = "2-8" + }, +/obj/structure/catwalk, +/turf/simulated/floor/airless, +/area/solar/foreportsolar) +"dBu" = ( +/obj/structure/cable/yellow{ + d2 = 8; + icon_state = "0-8" + }, +/obj/machinery/power/solar{ + id = "foreportsolar"; + name = "Port Solar Array" + }, +/turf/simulated/floor/airless{ + icon_state = "solarpanel" + }, +/area/solar/foreportsolar) +"dBv" = ( +/obj/effect/floor_decal/industrial/warning/corner, +/obj/machinery/light{ + dir = 1 + }, +/turf/simulated/floor/tiled/techfloor, +/area/ai) +"dBw" = ( +/obj/effect/floor_decal/industrial/warning{ + dir = 6 + }, +/obj/structure/cable/green{ + d1 = 2; + d2 = 4; + icon_state = "2-4" + }, +/turf/simulated/floor/tiled/techfloor, +/area/ai) +"dBx" = ( +/obj/machinery/ai_slipper{ + icon_state = "motion0" + }, +/obj/structure/cable/green{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/turf/simulated/floor/greengrid, +/area/ai) +"dBy" = ( +/obj/machinery/power/terminal{ + dir = 4 + }, +/obj/structure/cable/green{ + d2 = 8; + icon_state = "0-8" + }, +/turf/simulated/floor/greengrid, +/area/ai) +"dBz" = ( +/obj/structure/cable/cyan, +/obj/machinery/power/smes/buildable{ + charge = 5e+006; + input_attempt = 1; + input_level = 200000; + output_level = 200000 + }, +/obj/machinery/flasher{ + id = "AI"; + pixel_x = 0; + pixel_y = -24 + }, +/turf/simulated/floor/plating, +/area/ai) +"dBA" = ( +/obj/machinery/ai_slipper{ + icon_state = "motion0" + }, +/obj/structure/cable/cyan{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/turf/simulated/floor/greengrid, +/area/ai) +"dBB" = ( +/obj/effect/floor_decal/industrial/warning{ + dir = 10 + }, +/turf/simulated/floor/tiled/techfloor, +/area/ai) +"dBC" = ( +/obj/effect/floor_decal/industrial/warning/corner{ + dir = 8 + }, +/obj/machinery/light{ + dir = 1 + }, +/turf/simulated/floor/tiled/techfloor, +/area/ai) +"dBD" = ( +/obj/structure/cable/yellow{ + d2 = 4; + icon_state = "0-4" + }, +/obj/machinery/power/solar{ + id = "forestarboardsolar"; + name = "Starboard Solar Array" + }, +/turf/simulated/floor/airless{ + icon_state = "solarpanel" + }, +/area/solar/forestarboardsolar) +"dBE" = ( +/obj/structure/cable/yellow{ + d1 = 2; + d2 = 4; + icon_state = "2-4" + }, +/obj/structure/cable/yellow{ + d1 = 2; + d2 = 8; + icon_state = "2-8" + }, +/obj/structure/catwalk, +/turf/simulated/floor/airless, +/area/solar/forestarboardsolar) +"dBF" = ( +/obj/structure/cable/yellow{ + d2 = 8; + icon_state = "0-8" + }, +/obj/machinery/power/solar{ + id = "forestarboardsolar"; + name = "Starboard Solar Array" + }, +/turf/simulated/floor/airless{ + icon_state = "solarpanel" + }, +/area/solar/forestarboardsolar) +"dBG" = ( +/obj/structure/cable/yellow{ + d2 = 4; + icon_state = "0-4" + }, +/obj/machinery/power/solar{ + id = "foreportsolar"; + name = "Port Solar Array" + }, +/turf/simulated/floor/airless{ + icon_state = "solarpanel" + }, +/area/solar/foreportsolar) +"dBH" = ( +/obj/structure/cable/yellow{ + d1 = 2; + d2 = 4; + icon_state = "2-4" + }, +/obj/structure/cable/yellow{ + d1 = 2; + d2 = 8; + icon_state = "2-8" + }, +/obj/structure/cable/yellow{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/obj/structure/catwalk, +/turf/simulated/floor/airless, +/area/solar/foreportsolar) +"dBI" = ( +/obj/effect/floor_decal/industrial/warning{ + icon_state = "warning"; + dir = 4 + }, +/turf/simulated/floor/tiled/techfloor, +/area/ai) +"dBJ" = ( +/obj/structure/cable/green{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/turf/simulated/floor/greengrid, +/area/ai) +"dBK" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/turf/simulated/floor/greengrid, +/area/ai) +"dBL" = ( +/turf/simulated/wall/durasteel, +/area/ai) +"dBM" = ( +/obj/machinery/newscaster{ + pixel_x = 30; + pixel_y = 0 + }, +/obj/machinery/atmospherics/unary/vent_pump/on{ + dir = 8 + }, +/obj/machinery/light{ + dir = 4; + icon_state = "tube1"; + pixel_x = 0 + }, +/obj/effect/floor_decal/borderfloorwhite{ + dir = 4 + }, +/obj/effect/floor_decal/corner/paleblue/border{ + dir = 4 + }, +/obj/structure/table/rack, +/obj/item/weapon/storage/toolbox/emergency, +/obj/random/medical/lite, +/turf/simulated/floor/tiled/white, +/area/medical/first_aid_station/seconddeck/port) +"dBN" = ( +/obj/effect/floor_decal/industrial/warning{ + icon_state = "warning"; + dir = 8 + }, +/turf/simulated/floor/tiled/techfloor, +/area/ai) +"dBO" = ( +/obj/structure/cable/yellow{ + d1 = 2; + d2 = 4; + icon_state = "2-4" + }, +/obj/structure/cable/yellow{ + d1 = 2; + d2 = 8; + icon_state = "2-8" + }, +/obj/structure/cable/yellow{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/obj/structure/catwalk, +/turf/simulated/floor/airless, +/area/solar/forestarboardsolar) +"dBP" = ( +/obj/machinery/camera/network/command{ + c_tag = "AI - Port 1"; + dir = 8 + }, +/turf/simulated/floor/reinforced/airless, +/area/thirddeck/roof) +"dBQ" = ( +/obj/effect/landmark{ + name = "tripai" + }, +/obj/item/device/radio/intercom{ + dir = 8; + name = "Station Intercom (General)"; + pixel_x = -21 + }, +/obj/item/device/radio/intercom/private{ + pixel_y = -21 + }, +/obj/item/device/radio/intercom/custom{ + dir = 1; + pixel_y = 21 + }, +/turf/simulated/floor/greengrid, +/area/ai) +"dBR" = ( +/obj/machinery/porta_turret/ai_defense, +/obj/effect/floor_decal/industrial/outline/grey, +/obj/effect/floor_decal/industrial/warning/corner, +/obj/effect/floor_decal/industrial/warning/corner{ + dir = 4 + }, +/turf/simulated/floor/tiled/techfloor, +/area/ai) +"dBS" = ( +/obj/effect/floor_decal/industrial/warning, +/obj/effect/floor_decal/industrial/warning{ + icon_state = "warning"; + dir = 1 + }, +/obj/structure/cable/green{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/obj/machinery/hologram/holopad, +/turf/simulated/floor/tiled/techfloor, +/area/ai) +"dBT" = ( +/obj/effect/floor_decal/industrial/warning, +/obj/effect/floor_decal/industrial/warning{ + icon_state = "warning"; + dir = 1 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/turf/simulated/floor/tiled/techfloor, +/area/ai) +"dBU" = ( +/obj/machinery/door/airlock/hatch{ + icon_state = "door_locked"; + id_tag = null; + locked = 1; + name = "AI Core"; + req_access = list(16) + }, +/turf/simulated/floor/tiled/techfloor, +/area/ai) +"dBV" = ( +/obj/machinery/ai_slipper{ + icon_state = "motion0" + }, +/obj/machinery/turretid/stun{ + check_synth = 1; + name = "AI Chamber turret control"; + pixel_x = -30; + pixel_y = -24 + }, +/obj/machinery/flasher{ + id = "AI"; + pixel_x = 24; + pixel_y = -25 + }, +/obj/machinery/button/remote/blast_door{ + desc = "A remote control-switch for the AI core maintenance door."; + id = "AICore"; + name = "AI Maintenance Hatch"; + pixel_x = 14; + pixel_y = 25; + req_access = list(16) + }, +/obj/machinery/light/small{ + dir = 1 + }, +/obj/machinery/camera/xray/command{ + c_tag = "AI - Core"; + dir = 2 + }, +/obj/machinery/power/apc/super/critical{ + dir = 1; + is_critical = 1; + name = "north bump"; + pixel_y = 24 + }, +/obj/structure/cable/cyan{ + d2 = 4; + icon_state = "0-4" + }, +/turf/simulated/floor/tiled/techfloor, +/area/ai) +"dBW" = ( +/obj/machinery/door/airlock/hatch{ + icon_state = "door_locked"; + id_tag = null; + locked = 1; + name = "AI Core"; + req_access = list(16) + }, +/obj/structure/cable/cyan{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/turf/simulated/floor/tiled/techfloor, +/area/ai) +"dBX" = ( +/obj/effect/floor_decal/industrial/warning, +/obj/effect/floor_decal/industrial/warning{ + icon_state = "warning"; + dir = 1 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/obj/structure/cable/cyan{ + d1 = 1; + d2 = 8; + icon_state = "1-8" + }, +/obj/structure/cable/cyan{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/turf/simulated/floor/tiled/techfloor, +/area/ai) +"dBY" = ( +/obj/effect/floor_decal/industrial/warning, +/obj/effect/floor_decal/industrial/warning{ + icon_state = "warning"; + dir = 1 + }, +/obj/machinery/hologram/holopad, +/turf/simulated/floor/tiled/techfloor, +/area/ai) +"dBZ" = ( +/obj/machinery/porta_turret/ai_defense, +/obj/effect/floor_decal/industrial/outline/grey, +/obj/effect/floor_decal/industrial/warning/corner{ + dir = 8 + }, +/obj/effect/floor_decal/industrial/warning/corner{ + icon_state = "warningcorner"; + dir = 1 + }, +/turf/simulated/floor/tiled/techfloor, +/area/ai) +"dCa" = ( +/obj/effect/landmark{ + name = "tripai" + }, +/obj/item/device/radio/intercom{ + dir = 4; + name = "Station Intercom (General)"; + pixel_x = 21 + }, +/obj/item/device/radio/intercom/private{ + dir = 1; + pixel_y = 21 + }, +/obj/item/device/radio/intercom/custom{ + pixel_y = -21 + }, +/turf/simulated/floor/greengrid, +/area/ai) +"dCb" = ( +/obj/machinery/camera/network/command{ + c_tag = "AI - Starboard"; + dir = 4 + }, +/turf/simulated/floor/reinforced/airless, +/area/thirddeck/roof) +"dCc" = ( +/turf/simulated/wall/r_wall, +/area/maintenance/thirddeck/foreport) +"dCd" = ( +/obj/effect/landmark/start{ + name = "AI" + }, +/obj/machinery/requests_console{ + department = "AI"; + departmentType = 5; + pixel_x = 30; + pixel_y = -32 + }, +/obj/machinery/newscaster/security_unit{ + pixel_x = -32; + pixel_y = -32 + }, +/obj/item/device/radio/intercom/private{ + dir = 4; + pixel_x = 21; + pixel_y = -10 + }, +/obj/item/device/radio/intercom/custom{ + dir = 8; + pixel_x = -21; + pixel_y = -10 + }, +/obj/item/device/radio/intercom{ + broadcasting = 1; + name = "Station Intercom (General)"; + pixel_y = -21 + }, +/turf/simulated/floor/greengrid, +/area/ai) +"dCe" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/obj/structure/cable/cyan{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/turf/simulated/floor/greengrid, +/area/ai) +"dCf" = ( +/turf/simulated/wall/r_wall, +/area/maintenance/thirddeck/forestarboard) +"dCg" = ( +/obj/machinery/door/firedoor/border_only, +/obj/effect/wingrille_spawn/reinforced, +/turf/simulated/floor/plating, +/area/maintenance/solars/foreportsolar) +"dCh" = ( +/turf/simulated/wall/r_wall, +/area/maintenance/solars/foreportsolar) +"dCi" = ( +/obj/machinery/space_heater, +/turf/simulated/floor/plating, +/area/maintenance/thirddeck/foreport) +"dCj" = ( +/obj/machinery/alarm{ + pixel_y = 22 + }, +/obj/machinery/portable_atmospherics/powered/pump/filled, +/turf/simulated/floor/plating, +/area/maintenance/thirddeck/foreport) +"dCk" = ( +/obj/machinery/portable_atmospherics/powered/scrubber, +/turf/simulated/floor/plating, +/area/maintenance/thirddeck/foreport) +"dCl" = ( +/turf/simulated/floor/plating, +/area/maintenance/thirddeck/foreport) +"dCm" = ( +/obj/structure/closet/crate, +/obj/item/weapon/storage/box/lights/mixed, +/obj/random/maintenance/security, +/obj/random/maintenance/security, +/obj/random/maintenance/security, +/turf/simulated/floor/plating, +/area/maintenance/thirddeck/foreport) +"dCn" = ( +/obj/structure/cable/green{ + d1 = 2; + d2 = 4; + icon_state = "2-4" + }, +/turf/simulated/floor/reinforced/airless, +/area/thirddeck/roof) +"dCo" = ( +/obj/structure/cable/green{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/turf/simulated/floor/reinforced/airless, +/area/thirddeck/roof) +"dCp" = ( +/obj/structure/cable/green{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/turf/simulated/wall/r_wall, +/area/ai) +"dCq" = ( +/obj/effect/floor_decal/industrial/warning/corner{ + dir = 4 + }, +/obj/structure/cable/green{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/obj/machinery/light, +/obj/machinery/alarm{ + dir = 4; + pixel_x = -23; + pixel_y = 0 + }, +/turf/simulated/floor/tiled/techfloor, +/area/ai) +"dCr" = ( +/obj/effect/floor_decal/industrial/warning{ + dir = 5 + }, +/obj/structure/cable/green{ + d1 = 1; + d2 = 8; + icon_state = "1-8" + }, +/turf/simulated/floor/tiled/techfloor, +/area/ai) +"dCs" = ( +/obj/machinery/ai_slipper{ + icon_state = "motion0" + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/turf/simulated/floor/greengrid, +/area/ai) +"dCt" = ( +/obj/effect/floor_decal/industrial/warning{ + dir = 9 + }, +/turf/simulated/floor/tiled/techfloor, +/area/ai) +"dCu" = ( +/obj/effect/floor_decal/industrial/warning/corner{ + icon_state = "warningcorner"; + dir = 1 + }, +/obj/machinery/light, +/obj/machinery/firealarm{ + dir = 4; + pixel_x = 24 + }, +/turf/simulated/floor/tiled/techfloor, +/area/ai) +"dCv" = ( +/obj/structure/closet/emcloset, +/turf/simulated/floor/plating, +/area/maintenance/thirddeck/forestarboard) +"dCw" = ( +/obj/structure/reagent_dispensers/fueltank, +/turf/simulated/floor/plating, +/area/maintenance/thirddeck/forestarboard) +"dCx" = ( +/obj/structure/reagent_dispensers/watertank, +/turf/simulated/floor/plating, +/area/maintenance/thirddeck/forestarboard) +"dCy" = ( +/obj/machinery/alarm{ + pixel_y = 22 + }, +/turf/simulated/floor/plating, +/area/maintenance/thirddeck/forestarboard) +"dCz" = ( +/obj/structure/firedoor_assembly, +/turf/simulated/floor/plating, +/area/maintenance/thirddeck/forestarboard) +"dCA" = ( +/turf/simulated/wall/r_wall, +/area/maintenance/solars/forestarboardsolar) +"dCB" = ( +/obj/machinery/door/firedoor/border_only, +/obj/effect/wingrille_spawn/reinforced, +/turf/simulated/floor/plating, +/area/maintenance/solars/forestarboardsolar) +"dCC" = ( +/obj/structure/cable/yellow{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/turf/simulated/floor/airless, +/area/solar/foreportsolar) +"dCD" = ( +/obj/item/stack/cable_coil/yellow, +/turf/simulated/floor/reinforced/airless, +/area/thirddeck/roof) +"dCE" = ( +/obj/effect/wingrille_spawn/reinforced, +/turf/simulated/floor/plating, +/area/maintenance/solars/foreportsolar) +"dCF" = ( +/obj/structure/cable/yellow{ + d2 = 2; + icon_state = "0-2" + }, +/obj/machinery/power/solar_control{ + id = "foreportsolar"; + name = "Fore Port Solar Control"; + track = 0 + }, +/turf/simulated/floor/plating, +/area/maintenance/solars/foreportsolar) +"dCG" = ( +/obj/machinery/light/small{ + dir = 1 + }, +/obj/machinery/camera/network/engineering{ + c_tag = "ENG - Solar Fore Port"; + dir = 2 + }, +/obj/item/stack/cable_coil/yellow, +/turf/simulated/floor/plating, +/area/maintenance/solars/foreportsolar) +"dCH" = ( +/obj/structure/cable{ + icon_state = "0-2"; + d2 = 2 + }, +/obj/machinery/power/apc{ + dir = 1; + name = "north bump"; + pixel_x = 0; + pixel_y = 24 + }, +/obj/item/device/radio/intercom{ + dir = 4; + name = "Station Intercom (General)"; + pixel_x = 21 + }, +/turf/simulated/floor/plating, +/area/maintenance/solars/foreportsolar) +"dCI" = ( +/turf/simulated/wall, +/area/maintenance/solars/foreportsolar) +"dCJ" = ( +/obj/machinery/light/small{ + dir = 8 + }, +/obj/effect/floor_decal/industrial/warning/corner{ + dir = 8 + }, +/turf/simulated/floor/plating, +/area/maintenance/thirddeck/foreport) +"dCK" = ( +/obj/structure/ladder, +/obj/effect/floor_decal/industrial/outline/yellow, +/turf/simulated/floor/plating, +/area/maintenance/thirddeck/foreport) +"dCL" = ( +/obj/structure/cable/green{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/turf/simulated/floor/reinforced/airless, +/area/thirddeck/roof) +"dCM" = ( +/obj/machinery/porta_turret/ai_defense, +/obj/effect/floor_decal/industrial/outline/grey, +/obj/effect/floor_decal/industrial/warning/corner{ + dir = 4 + }, +/turf/simulated/floor/tiled/techfloor, +/area/ai) +"dCN" = ( +/obj/effect/floor_decal/industrial/warning{ + dir = 5 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 6 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 5 + }, +/turf/simulated/floor/tiled/techfloor, +/area/ai) +"dCO" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/turf/simulated/floor/greengrid, +/area/ai) +"dCP" = ( +/obj/machinery/atmospherics/pipe/simple/hidden{ + icon_state = "intact"; + dir = 4 + }, +/obj/effect/floor_decal/industrial/hatch/yellow, +/obj/machinery/door/airlock/glass_external{ + frequency = 1380; + icon_state = "door_locked"; + id_tag = "arrivals_dock_south_inner"; + locked = 1; + name = "Arrivals Airlock"; + req_access = list(13) + }, +/turf/simulated/floor/tiled/dark, +/area/hallway/secondary/entry/D2) +"dCQ" = ( +/obj/effect/floor_decal/industrial/warning{ + dir = 9 + }, +/obj/structure/cable/cyan{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 9 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 10 + }, +/turf/simulated/floor/tiled/techfloor, +/area/ai) +"dCR" = ( +/obj/machinery/porta_turret/ai_defense, +/obj/effect/floor_decal/industrial/outline/grey, +/obj/effect/floor_decal/industrial/warning/corner{ + icon_state = "warningcorner"; + dir = 1 + }, +/turf/simulated/floor/tiled/techfloor, +/area/ai) +"dCS" = ( +/obj/effect/floor_decal/industrial/warning, +/turf/simulated/floor/plating, +/area/maintenance/thirddeck/forestarboard) +"dCT" = ( +/obj/effect/floor_decal/industrial/warning/corner{ + icon_state = "warningcorner"; + dir = 8 + }, +/turf/simulated/floor/plating, +/area/maintenance/thirddeck/forestarboard) +"dCU" = ( +/turf/simulated/floor/plating, +/area/maintenance/thirddeck/forestarboard) +"dCV" = ( +/obj/machinery/light/small{ + dir = 4; + pixel_y = 0 + }, +/obj/effect/floor_decal/industrial/warning/corner, +/turf/simulated/floor/plating, +/area/maintenance/thirddeck/forestarboard) +"dCW" = ( +/turf/simulated/wall, +/area/maintenance/solars/forestarboardsolar) +"dCX" = ( +/obj/structure/cable{ + icon_state = "0-2"; + d2 = 2 + }, +/obj/machinery/power/apc{ + dir = 1; + name = "north bump"; + pixel_x = 0; + pixel_y = 24 + }, +/obj/item/device/radio/intercom{ + dir = 8; + name = "Station Intercom (General)"; + pixel_x = -21 + }, +/obj/item/stack/cable_coil/yellow, +/turf/simulated/floor/plating, +/area/maintenance/solars/forestarboardsolar) +"dCY" = ( +/obj/machinery/light/small{ + dir = 1 + }, +/obj/machinery/camera/network/engineering{ + c_tag = "ENG - Solar Fore Starboard"; + dir = 2 + }, +/obj/item/stack/cable_coil/yellow, +/obj/item/stack/cable_coil/yellow, +/obj/item/weapon/stool, +/turf/simulated/floor/plating, +/area/maintenance/solars/forestarboardsolar) +"dCZ" = ( +/obj/structure/cable/yellow{ + d2 = 2; + icon_state = "0-2" + }, +/obj/machinery/power/solar_control{ + id = "forestarboardsolar"; + name = "Fore Starboard Solar Control"; + track = 0 + }, +/turf/simulated/floor/plating, +/area/maintenance/solars/forestarboardsolar) +"dDa" = ( +/obj/effect/wingrille_spawn/reinforced, +/turf/simulated/floor/plating, +/area/maintenance/solars/forestarboardsolar) +"dDb" = ( +/obj/structure/cable/yellow, +/turf/simulated/floor/airless, +/area/solar/forestarboardsolar) +"dDc" = ( +/obj/machinery/power/tracker, +/obj/structure/cable/yellow{ + d2 = 4; + icon_state = "0-4" + }, +/turf/simulated/floor/airless, +/area/solar/foreportsolar) +"dDd" = ( +/obj/structure/cable/yellow{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/turf/simulated/floor/airless, +/area/solar/foreportsolar) +"dDe" = ( +/obj/structure/cable/yellow{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/obj/structure/cable/yellow{ + d1 = 2; + d2 = 4; + icon_state = "2-4" + }, +/obj/structure/cable/yellow{ + d1 = 1; + d2 = 4; + icon_state = "1-4" + }, +/turf/simulated/floor/airless, +/area/solar/foreportsolar) +"dDf" = ( +/obj/structure/cable/yellow{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/obj/structure/catwalk, +/turf/simulated/floor/airless, +/area/solar/foreportsolar) +"dDg" = ( +/obj/structure/cable/yellow{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/obj/machinery/access_button{ + command = "cycle_exterior"; + frequency = 1379; + layer = 3.3; + master_tag = "fore_port_solar_airlock"; + name = "exterior access button"; + pixel_x = 25; + pixel_y = -25; + req_access = list(); + req_one_access = list(11,24) + }, +/obj/structure/catwalk, +/turf/simulated/floor/airless, +/area/solar/foreportsolar) +"dDh" = ( +/obj/structure/cable/yellow{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/obj/machinery/door/airlock/external{ + frequency = 1379; + icon_state = "door_locked"; + id_tag = "fore_port_solar_outer"; + locked = 1; + name = "Engineering External Access"; + req_access = list(11,13) + }, +/turf/simulated/floor/plating, +/area/maintenance/solars/foreportsolar) +"dDi" = ( +/obj/structure/cable/yellow{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/obj/effect/floor_decal/industrial/warning/cee{ + icon_state = "warningcee"; + dir = 8 + }, +/obj/machinery/embedded_controller/radio/airlock/airlock_controller{ + frequency = 1379; + id_tag = "fore_port_solar_airlock"; + layer = 3.3; + pixel_x = 0; + pixel_y = -25; + req_access = list(13); + tag_airpump = "fore_port_solar_pump"; + tag_chamber_sensor = "fore_port_solar_sensor"; + tag_exterior_door = "fore_port_solar_outer"; + tag_interior_door = "fore_port_solar_inner" + }, +/obj/machinery/airlock_sensor{ + frequency = 1379; + id_tag = "fore_port_solar_sensor"; + layer = 3.3; + pixel_x = 0; + pixel_y = 25 + }, +/obj/machinery/atmospherics/unary/vent_pump/high_volume{ + dir = 2; + frequency = 1379; + id_tag = "fore_port_solar_pump" + }, +/turf/simulated/floor/plating, +/area/maintenance/solars/foreportsolar) +"dDj" = ( +/obj/structure/cable/yellow{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/obj/effect/floor_decal/industrial/warning/cee{ + icon_state = "warningcee"; + dir = 4 + }, +/obj/machinery/atmospherics/unary/vent_pump/high_volume{ + dir = 2; + frequency = 1379; + id_tag = "fore_port_solar_pump" + }, +/obj/machinery/light/small, +/turf/simulated/floor/plating, +/area/maintenance/solars/foreportsolar) +"dDk" = ( +/obj/machinery/atmospherics/pipe/simple/hidden{ + dir = 6 + }, +/obj/structure/cable/yellow{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/obj/machinery/door/airlock/external{ + frequency = 1379; + icon_state = "door_locked"; + id_tag = "fore_port_solar_inner"; + locked = 1; + name = "Engineering External Access"; + req_access = list(11,13) + }, +/turf/simulated/floor/plating, +/area/maintenance/solars/foreportsolar) +"dDl" = ( +/obj/machinery/atmospherics/pipe/simple/hidden{ + dir = 4 + }, +/obj/structure/cable/yellow{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/obj/structure/cable/yellow{ + d1 = 1; + d2 = 8; + icon_state = "1-8" + }, +/obj/machinery/meter, +/obj/machinery/access_button{ + command = "cycle_interior"; + frequency = 1379; + layer = 3.3; + master_tag = "fore_port_solar_airlock"; + name = "interior access button"; + pixel_x = -25; + pixel_y = 25; + req_access = list(); + req_one_access = list(11,24) + }, +/turf/simulated/floor/plating, +/area/maintenance/solars/foreportsolar) +"dDm" = ( +/obj/machinery/atmospherics/pipe/simple/hidden{ + dir = 4 + }, +/obj/structure/cable/yellow{ + d1 = 2; + d2 = 8; + icon_state = "2-8" + }, +/obj/effect/floor_decal/industrial/warning, +/turf/simulated/floor/plating, +/area/maintenance/solars/foreportsolar) +"dDn" = ( +/obj/structure/cable{ + d1 = 2; + d2 = 4; + icon_state = "2-4" + }, +/obj/machinery/atmospherics/binary/pump/on{ + dir = 8; + target_pressure = 200 + }, +/obj/structure/cable{ + d1 = 1; + d2 = 4; + icon_state = "1-4" + }, +/obj/effect/floor_decal/industrial/warning, +/turf/simulated/floor/plating, +/area/maintenance/solars/foreportsolar) +"dDo" = ( +/obj/machinery/atmospherics/pipe/simple/hidden{ + dir = 4 + }, +/obj/structure/cable{ + d1 = 4; + d2 = 8; + icon_state = "4-8"; + pixel_x = 0 + }, +/obj/machinery/door/firedoor/border_only, +/obj/machinery/door/airlock/engineering{ + icon_state = "door_closed"; + locked = 0; + name = "Fore Port Solar Access"; + req_access = list(); + req_one_access = list(11,24) + }, +/turf/simulated/floor/plating, +/area/maintenance/solars/foreportsolar) +"dDp" = ( +/obj/structure/cable{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/obj/machinery/atmospherics/pipe/simple/hidden{ + dir = 10; + icon_state = "intact" + }, +/obj/effect/floor_decal/industrial/warning{ + icon_state = "warning"; + dir = 8 + }, +/turf/simulated/floor/plating, +/area/maintenance/thirddeck/foreport) +"dDq" = ( +/obj/structure/cable{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/turf/simulated/floor/plating, +/area/maintenance/thirddeck/foreport) +"dDr" = ( +/obj/effect/floor_decal/industrial/warning/corner, +/obj/structure/cable{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/turf/simulated/floor/plating, +/area/maintenance/thirddeck/foreport) +"dDs" = ( +/obj/effect/floor_decal/industrial/warning, +/obj/structure/cable{ + d1 = 2; + d2 = 8; + icon_state = "2-8" + }, +/turf/simulated/floor/plating, +/area/maintenance/thirddeck/foreport) +"dDt" = ( +/obj/effect/floor_decal/industrial/warning/corner{ + icon_state = "warningcorner"; + dir = 8 + }, +/turf/simulated/floor/plating, +/area/maintenance/thirddeck/foreport) +"dDu" = ( +/obj/structure/cable/green{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/obj/structure/catwalk, +/turf/simulated/floor/airless, +/area/thirddeck/roof) +"dDv" = ( +/obj/machinery/atmospherics/unary/vent_scrubber/on{ + dir = 1 + }, +/turf/simulated/floor/tiled/techfloor, +/area/ai) +"dDw" = ( +/obj/effect/floor_decal/industrial/warning{ + icon_state = "warning"; + dir = 1 + }, +/obj/effect/floor_decal/industrial/warning/corner, +/turf/simulated/floor/tiled/techfloor, +/area/ai) +"dDx" = ( +/obj/effect/floor_decal/industrial/warning/corner{ + dir = 4 + }, +/obj/effect/floor_decal/industrial/warning/corner{ + icon_state = "warningcorner"; + dir = 1 + }, +/obj/effect/floor_decal/industrial/warning, +/obj/structure/cable/cyan{ + d1 = 2; + d2 = 4; + icon_state = "2-4" + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/turf/simulated/floor/tiled/techfloor, +/area/ai) +"dDy" = ( +/obj/effect/floor_decal/industrial/warning{ + icon_state = "warning"; + dir = 1 + }, +/obj/effect/floor_decal/industrial/warning/corner{ + dir = 8 + }, +/obj/structure/cable/cyan{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/turf/simulated/floor/tiled/techfloor, +/area/ai) +"dDz" = ( +/obj/effect/floor_decal/industrial/warning/corner{ + icon_state = "warningcorner"; + dir = 1 + }, +/obj/structure/cable/cyan{ + d1 = 1; + d2 = 8; + icon_state = "1-8" + }, +/obj/machinery/atmospherics/unary/vent_pump/on{ + dir = 1 + }, +/turf/simulated/floor/tiled/techfloor, +/area/ai) +"dDA" = ( +/obj/structure/catwalk, +/turf/simulated/floor/airless, +/area/thirddeck/roof) +"dDB" = ( +/obj/structure/lattice, +/obj/structure/cable{ + d1 = 32; + d2 = 4; + icon_state = "32-4" + }, +/obj/machinery/door/firedoor/border_only, +/turf/simulated/open, +/area/maintenance/thirddeck/forestarboard) +"dDC" = ( +/obj/effect/floor_decal/industrial/warning{ + dir = 8 + }, +/obj/structure/cable{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/obj/structure/railing{ + dir = 8 + }, +/turf/simulated/floor/plating, +/area/maintenance/thirddeck/forestarboard) +"dDD" = ( +/obj/structure/cable{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/turf/simulated/floor/plating, +/area/maintenance/thirddeck/forestarboard) +"dDE" = ( +/obj/structure/cable{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/obj/machinery/atmospherics/pipe/simple/hidden{ + dir = 6 + }, +/obj/effect/floor_decal/industrial/warning{ + icon_state = "warning"; + dir = 4 + }, +/turf/simulated/floor/plating, +/area/maintenance/thirddeck/forestarboard) +"dDF" = ( +/obj/machinery/atmospherics/pipe/simple/hidden{ + dir = 4 + }, +/obj/structure/cable{ + d1 = 4; + d2 = 8; + icon_state = "4-8"; + pixel_x = 0 + }, +/obj/machinery/door/firedoor/border_only, +/obj/machinery/door/airlock/engineering{ + icon_state = "door_closed"; + locked = 0; + name = "Fore Starboard Solar Access"; + req_access = list(); + req_one_access = list(11,24) + }, +/turf/simulated/floor/plating, +/area/maintenance/solars/forestarboardsolar) +"dDG" = ( +/obj/structure/cable{ + d1 = 2; + d2 = 8; + icon_state = "2-8" + }, +/obj/structure/cable{ + d1 = 1; + d2 = 8; + icon_state = "1-8" + }, +/obj/machinery/atmospherics/binary/pump/on{ + dir = 4; + target_pressure = 200 + }, +/obj/effect/floor_decal/industrial/warning, +/turf/simulated/floor/plating, +/area/maintenance/solars/forestarboardsolar) +"dDH" = ( +/obj/machinery/atmospherics/pipe/simple/hidden{ + dir = 4 + }, +/obj/effect/floor_decal/industrial/warning, +/obj/structure/cable/yellow{ + d1 = 2; + d2 = 4; + icon_state = "2-4" + }, +/turf/simulated/floor/plating, +/area/maintenance/solars/forestarboardsolar) +"dDI" = ( +/obj/machinery/atmospherics/pipe/simple/hidden{ + dir = 4 + }, +/obj/structure/cable/yellow{ + d1 = 1; + d2 = 4; + icon_state = "1-4" + }, +/obj/structure/cable/yellow{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/obj/machinery/meter, +/obj/machinery/access_button{ + command = "cycle_interior"; + frequency = 1379; + layer = 3.3; + master_tag = "fore_starboard_solar_airlock"; + name = "interior access button"; + pixel_x = 25; + pixel_y = 25; + req_access = list(); + req_one_access = list(11,24) + }, +/turf/simulated/floor/plating, +/area/maintenance/solars/forestarboardsolar) +"dDJ" = ( +/obj/machinery/atmospherics/pipe/simple/hidden{ + dir = 10; + icon_state = "intact" + }, +/obj/structure/cable/yellow{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/obj/machinery/door/airlock/external{ + frequency = 1379; + icon_state = "door_locked"; + id_tag = "fore_starboard_solar_inner"; + locked = 1; + name = "Engineering External Access"; + req_access = list(11,13) + }, +/turf/simulated/floor/plating, +/area/maintenance/solars/forestarboardsolar) +"dDK" = ( +/obj/effect/floor_decal/industrial/warning/cee{ + icon_state = "warningcee"; + dir = 8 + }, +/obj/structure/cable/yellow{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/obj/machinery/light/small, +/obj/machinery/atmospherics/unary/vent_pump/high_volume{ + dir = 2; + frequency = 1379; + id_tag = "fore_starboard_solar_pump" + }, +/turf/simulated/floor/plating, +/area/maintenance/solars/forestarboardsolar) +"dDL" = ( +/obj/effect/floor_decal/industrial/warning/cee{ + icon_state = "warningcee"; + dir = 4 + }, +/obj/structure/cable/yellow{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/obj/machinery/embedded_controller/radio/airlock/airlock_controller{ + frequency = 1379; + id_tag = "fore_starboard_solar_airlock"; + layer = 3.3; + pixel_x = 0; + pixel_y = -25; + req_access = list(13); + tag_airpump = "fore_starboard_solar_pump"; + tag_chamber_sensor = "fore_starboard_solar_sensor"; + tag_exterior_door = "fore_starboard_solar_outer"; + tag_interior_door = "fore_starboard_solar_inner" + }, +/obj/machinery/airlock_sensor{ + frequency = 1379; + id_tag = "fore_starboard_solar_sensor"; + layer = 3.3; + pixel_x = 0; + pixel_y = 25 + }, +/obj/machinery/atmospherics/unary/vent_pump/high_volume{ + dir = 2; + frequency = 1379; + id_tag = "fore_starboard_solar_pump" + }, +/turf/simulated/floor/plating, +/area/maintenance/solars/forestarboardsolar) +"dDM" = ( +/obj/structure/cable/yellow{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/obj/machinery/door/airlock/external{ + frequency = 1379; + icon_state = "door_locked"; + id_tag = "fore_starboard_solar_outer"; + locked = 1; + name = "Engineering External Access"; + req_access = list(11,13) + }, +/turf/simulated/floor/plating, +/area/maintenance/solars/forestarboardsolar) +"dDN" = ( +/obj/structure/cable/yellow{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/obj/machinery/access_button{ + command = "cycle_exterior"; + frequency = 1379; + layer = 3.3; + master_tag = "fore_starboard_solar_airlock"; + name = "exterior access button"; + pixel_x = -25; + pixel_y = -25; + req_access = list(); + req_one_access = list(11,24) + }, +/obj/structure/catwalk, +/turf/simulated/floor/airless, +/area/solar/forestarboardsolar) +"dDO" = ( +/obj/structure/cable/yellow{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/obj/structure/catwalk, +/turf/simulated/floor/airless, +/area/solar/forestarboardsolar) +"dDP" = ( +/obj/structure/cable/yellow{ + d2 = 8; + icon_state = "0-8" + }, +/turf/simulated/floor/airless, +/area/solar/forestarboardsolar) +"dDQ" = ( +/turf/simulated/floor/airless, +/area/solar/forestarboardsolar) +"dDR" = ( +/obj/structure/cable/yellow{ + d2 = 4; + icon_state = "0-4" + }, +/turf/simulated/floor/airless, +/area/solar/forestarboardsolar) +"dDS" = ( +/obj/machinery/power/tracker, +/obj/structure/cable/yellow{ + d2 = 8; + icon_state = "0-8" + }, +/turf/simulated/floor/airless, +/area/solar/forestarboardsolar) +"dDT" = ( +/obj/machinery/atmospherics/pipe/simple/hidden{ + dir = 5; + icon_state = "intact" + }, +/obj/effect/wingrille_spawn/reinforced, +/turf/simulated/floor/plating, +/area/maintenance/solars/foreportsolar) +"dDU" = ( +/obj/machinery/atmospherics/pipe/manifold/hidden, +/obj/effect/wingrille_spawn/reinforced, +/turf/simulated/floor/plating, +/area/maintenance/solars/foreportsolar) +"dDV" = ( +/obj/machinery/atmospherics/pipe/manifold/hidden, +/obj/machinery/door/firedoor/border_only, +/obj/effect/wingrille_spawn/reinforced, +/turf/simulated/floor/plating, +/area/maintenance/solars/foreportsolar) +"dDW" = ( +/obj/machinery/atmospherics/portables_connector{ + dir = 8 + }, +/obj/effect/floor_decal/industrial/outline/yellow, +/obj/structure/sign/warning/airlock{ + pixel_y = -32 + }, +/obj/machinery/portable_atmospherics/canister/air/airlock, +/turf/simulated/floor/plating, +/area/maintenance/solars/foreportsolar) +"dDX" = ( +/obj/machinery/power/terminal{ + dir = 4 + }, +/obj/structure/cable/yellow, +/obj/effect/floor_decal/industrial/warning{ + icon_state = "warning"; + dir = 8 + }, +/obj/machinery/alarm{ + dir = 1; + pixel_y = -22 + }, +/obj/structure/table/steel, +/obj/item/stack/cable_coil/yellow, +/turf/simulated/floor/plating, +/area/maintenance/solars/foreportsolar) +"dDY" = ( +/obj/structure/cable, +/obj/machinery/power/smes/buildable{ + charge = 0; + RCon_tag = "Solar - Fore Port" + }, +/turf/simulated/floor/plating, +/area/maintenance/solars/foreportsolar) +"dDZ" = ( +/obj/machinery/atmospherics/pipe/simple/hidden, +/obj/structure/sign/warning/high_voltage{ + pixel_x = -32; + pixel_y = 0 + }, +/obj/effect/floor_decal/industrial/warning/corner{ + icon_state = "warningcorner"; + dir = 1 + }, +/obj/machinery/camera/network/engineering{ + c_tag = "ENG - Solar Fore Port Access"; + dir = 4 + }, +/turf/simulated/floor/plating, +/area/maintenance/thirddeck/foreport) +"dEa" = ( +/obj/structure/table/rack, +/obj/item/weapon/extinguisher, +/obj/item/clothing/head/hardhat/red, +/obj/item/clothing/mask/gas, +/obj/item/device/flashlight, +/obj/item/clothing/glasses/meson, +/obj/random/maintenance/cargo, +/obj/effect/floor_decal/industrial/warning{ + icon_state = "warning"; + dir = 4 + }, +/obj/structure/railing{ + dir = 4 + }, +/turf/simulated/floor, +/area/maintenance/thirddeck/foreport) +"dEb" = ( +/obj/structure/lattice, +/obj/structure/cable{ + d1 = 32; + icon_state = "32-1" + }, +/obj/machinery/door/firedoor/border_only, +/turf/simulated/open, +/area/maintenance/thirddeck/foreport) +"dEc" = ( +/obj/structure/cable/cyan{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/turf/simulated/floor/greengrid, +/area/ai) +"dEd" = ( +/obj/effect/floor_decal/industrial/warning/corner{ + icon_state = "warningcorner"; + dir = 1 + }, +/turf/simulated/floor/plating, +/area/maintenance/thirddeck/forestarboard) +"dEe" = ( +/obj/structure/ladder, +/obj/effect/floor_decal/industrial/outline/yellow, +/turf/simulated/floor/plating, +/area/maintenance/thirddeck/forestarboard) +"dEf" = ( +/obj/machinery/atmospherics/pipe/simple/hidden, +/obj/structure/sign/warning/high_voltage{ + pixel_x = 32; + pixel_y = 0 + }, +/obj/effect/floor_decal/industrial/warning/corner{ + icon_state = "warningcorner"; + dir = 4 + }, +/obj/machinery/camera/network/engineering{ + c_tag = "ENG - Solar Fore Starboard Access"; + dir = 8 + }, +/turf/simulated/floor/plating, +/area/maintenance/thirddeck/forestarboard) +"dEg" = ( +/obj/structure/cable, +/obj/machinery/power/smes/buildable{ + charge = 0; + RCon_tag = "Solar - Fore Starboard" + }, +/turf/simulated/floor/plating, +/area/maintenance/solars/forestarboardsolar) +"dEh" = ( +/obj/machinery/power/terminal{ + dir = 8 + }, +/obj/effect/floor_decal/industrial/warning{ + icon_state = "warning"; + dir = 4 + }, +/obj/structure/cable/yellow, +/obj/machinery/alarm{ + dir = 1; + pixel_y = -22 + }, +/turf/simulated/floor/plating, +/area/maintenance/solars/forestarboardsolar) +"dEi" = ( +/obj/effect/floor_decal/industrial/outline/yellow, +/obj/machinery/atmospherics/portables_connector{ + dir = 4 + }, +/obj/machinery/portable_atmospherics/canister/air/airlock, +/obj/structure/sign/warning/airlock{ + pixel_y = -32 + }, +/turf/simulated/floor/plating, +/area/maintenance/solars/forestarboardsolar) +"dEj" = ( +/obj/machinery/atmospherics/pipe/manifold/hidden, +/obj/machinery/door/firedoor/border_only, +/obj/effect/wingrille_spawn/reinforced, +/turf/simulated/floor/plating, +/area/maintenance/solars/forestarboardsolar) +"dEk" = ( +/obj/machinery/atmospherics/pipe/manifold/hidden, +/obj/effect/wingrille_spawn/reinforced, +/turf/simulated/floor/plating, +/area/maintenance/solars/forestarboardsolar) +"dEl" = ( +/obj/machinery/atmospherics/pipe/simple/hidden{ + dir = 9; + icon_state = "intact" + }, +/obj/effect/wingrille_spawn/reinforced, +/turf/simulated/floor/plating, +/area/maintenance/solars/forestarboardsolar) +"dEm" = ( +/obj/structure/cable/yellow{ + d2 = 2; + icon_state = "0-2" + }, +/turf/simulated/floor/airless, +/area/solar/forestarboardsolar) +"dEn" = ( +/turf/space, +/area/ninja_dojo/thirddeck) +"dEo" = ( +/obj/structure/cable/yellow{ + d1 = 1; + d2 = 8; + icon_state = "1-8" + }, +/obj/structure/cable/yellow{ + d1 = 1; + d2 = 4; + icon_state = "1-4" + }, +/obj/structure/cable/yellow{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/obj/structure/catwalk, +/turf/simulated/floor/airless, +/area/solar/foreportsolar) +"dEp" = ( +/obj/machinery/door/firedoor/border_only, +/obj/machinery/door/airlock/maintenance{ + name = "Maintenance Access"; + req_one_access = list(12,19) + }, +/obj/machinery/atmospherics/pipe/simple/hidden, +/turf/simulated/floor/plating, +/area/maintenance/thirddeck/foreport) +"dEq" = ( +/turf/simulated/wall, +/area/maintenance/thirddeck/foreport) +"dEr" = ( +/turf/simulated/wall/r_wall, +/area/ai/ai_upload) +"dEs" = ( +/obj/machinery/door/airlock/vault/bolted{ + name = "AI core"; + req_access = list(16) + }, +/obj/machinery/door/blast/regular{ + id = "AICore"; + name = "AI core maintenance hatch" + }, +/obj/structure/cable/cyan{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/turf/simulated/floor/tiled/techfloor, +/area/ai) +"dEt" = ( +/obj/structure/sign/warning/lethal_turrets, +/turf/simulated/wall/r_wall, +/area/ai) +"dEu" = ( +/obj/structure/sign/kiddieplaque, +/turf/simulated/wall/r_wall, +/area/ai/ai_upload) +"dEv" = ( +/turf/simulated/wall, +/area/maintenance/thirddeck/forestarboard) +"dEw" = ( +/obj/machinery/door/firedoor/border_only, +/obj/machinery/door/airlock/maintenance{ + name = "Maintenance Access"; + req_one_access = list(12,19) + }, +/obj/machinery/atmospherics/pipe/simple/hidden, +/turf/simulated/floor/plating, +/area/maintenance/thirddeck/forestarboard) +"dEx" = ( +/obj/structure/cable/yellow{ + d1 = 1; + d2 = 8; + icon_state = "1-8" + }, +/obj/structure/cable/yellow{ + d1 = 1; + d2 = 4; + icon_state = "1-4" + }, +/obj/structure/cable/yellow{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/obj/structure/catwalk, +/turf/simulated/floor/airless, +/area/solar/forestarboardsolar) +"dEy" = ( +/obj/machinery/atmospherics/pipe/simple/hidden, +/turf/simulated/floor/plating, +/area/maintenance/thirddeck/foreport) +"dEz" = ( +/obj/structure/table/standard, +/obj/item/weapon/aiModule/freeform, +/obj/item/weapon/aiModule/protectStation{ + pixel_x = -3; + pixel_y = 2 + }, +/obj/structure/window/reinforced{ + dir = 4; + health = 1e+006 + }, +/obj/machinery/status_display{ + pixel_x = 0; + pixel_y = 32 + }, +/turf/simulated/floor/bluegrid, +/area/ai/ai_upload) +"dEA" = ( +/obj/effect/floor_decal/industrial/outline/grey, +/obj/machinery/porta_turret/ai_defense, +/turf/simulated/floor/tiled/techfloor, +/area/ai/ai_upload) +"dEB" = ( +/obj/machinery/atmospherics/unary/vent_pump/on, +/turf/simulated/floor/tiled/techfloor, +/area/ai/ai_upload) +"dEC" = ( +/obj/machinery/computer/aiupload, +/turf/simulated/floor/bluegrid, +/area/ai/ai_upload) +"dED" = ( +/obj/structure/cable/cyan{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/item/device/radio/intercom/locked/ai_private{ + dir = 1; + pixel_x = -36; + pixel_y = 21 + }, +/obj/machinery/flasher{ + id = "AI"; + pixel_x = -22; + pixel_y = 24 + }, +/turf/simulated/floor/tiled/techfloor, +/area/ai/ai_upload) +"dEE" = ( +/obj/machinery/computer/borgupload, +/turf/simulated/floor/bluegrid, +/area/ai/ai_upload) +"dEF" = ( +/obj/machinery/atmospherics/unary/vent_scrubber/on, +/obj/machinery/camera/network/command{ + c_tag = "AI - Upload"; + dir = 2 + }, +/turf/simulated/floor/tiled/techfloor, +/area/ai/ai_upload) +"dEG" = ( +/obj/structure/table/standard, +/obj/item/weapon/aiModule/nanotrasen, +/obj/item/weapon/aiModule/reset{ + pixel_x = 2; + pixel_y = 3; + pixel_z = 0 + }, +/obj/structure/window/reinforced{ + dir = 8 + }, +/obj/machinery/ai_status_display{ + pixel_y = 32 + }, +/turf/simulated/floor/bluegrid, +/area/ai/ai_upload) +"dEH" = ( +/obj/machinery/atmospherics/pipe/simple/hidden, +/turf/simulated/floor/plating, +/area/maintenance/thirddeck/forestarboard) +"dEI" = ( +/obj/effect/floor_decal/industrial/warning/corner, +/obj/machinery/atmospherics/pipe/simple/hidden, +/turf/simulated/floor/plating, +/area/maintenance/thirddeck/foreport) +"dEJ" = ( +/obj/effect/floor_decal/industrial/warning, +/turf/simulated/floor/plating, +/area/maintenance/thirddeck/foreport) +"dEK" = ( +/obj/machinery/camera/network/command{ + c_tag = "AI - Port 2"; + dir = 8 + }, +/turf/simulated/floor/reinforced/airless, +/area/thirddeck/roof) +"dEL" = ( +/obj/structure/cable/cyan{ + d1 = 2; + d2 = 4; + icon_state = "2-4" + }, +/turf/simulated/floor/bluegrid, +/area/ai/ai_upload) +"dEM" = ( +/obj/structure/cable/cyan{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/turf/simulated/floor/bluegrid, +/area/ai/ai_upload) +"dEN" = ( +/obj/structure/cable/cyan{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 5 + }, +/turf/simulated/floor/tiled/techfloor, +/area/ai/ai_upload) +"dEO" = ( +/obj/effect/floor_decal/industrial/outline/grey, +/obj/structure/cable/cyan{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/turf/simulated/floor/tiled/techfloor, +/area/ai/ai_upload) +"dEP" = ( +/obj/structure/cable/cyan{ + d1 = 1; + d2 = 8; + icon_state = "1-8" + }, +/obj/structure/cable/cyan{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{ + dir = 8 + }, +/obj/machinery/atmospherics/pipe/manifold/hidden/supply{ + dir = 4 + }, +/obj/machinery/ai_slipper{ + icon_state = "motion0" + }, +/turf/simulated/floor/tiled/techfloor, +/area/ai/ai_upload) +"dEQ" = ( +/obj/effect/floor_decal/industrial/outline/grey, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, +/turf/simulated/floor/tiled/techfloor, +/area/ai/ai_upload) +"dER" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 9 + }, +/turf/simulated/floor/tiled/techfloor, +/area/ai/ai_upload) +"dES" = ( +/turf/simulated/floor/bluegrid, +/area/ai/ai_upload) +"dET" = ( +/obj/effect/floor_decal/industrial/warning/corner{ + icon_state = "warningcorner"; + dir = 8 + }, +/obj/machinery/atmospherics/pipe/simple/hidden, +/turf/simulated/floor/plating, +/area/maintenance/thirddeck/forestarboard) +"dEU" = ( +/obj/machinery/atmospherics/pipe/manifold/hidden{ + dir = 8; + icon_state = "map" + }, +/obj/effect/floor_decal/industrial/warning{ + icon_state = "warning"; + dir = 4 + }, +/turf/simulated/floor/plating, +/area/maintenance/thirddeck/foreport) +"dEV" = ( +/obj/machinery/portable_atmospherics/canister/air/airlock, +/obj/effect/floor_decal/industrial/outline/yellow, +/obj/machinery/atmospherics/portables_connector{ + dir = 8 + }, +/obj/machinery/alarm{ + dir = 8; + icon_state = "alarm0"; + pixel_x = 22 + }, +/turf/simulated/floor/plating, +/area/maintenance/thirddeck/foreport) +"dEW" = ( +/obj/machinery/power/apc{ + dir = 8; + name = "west bump"; + pixel_x = -24 + }, +/obj/machinery/light_switch{ + pixel_x = -36; + pixel_y = 0 + }, +/obj/structure/cable/cyan, +/turf/simulated/floor/bluegrid, +/area/ai/ai_upload) +"dEX" = ( +/obj/effect/floor_decal/industrial/outline/grey, +/obj/machinery/porta_turret/ai_defense, +/obj/machinery/light, +/turf/simulated/floor/tiled/techfloor, +/area/ai/ai_upload) +"dEY" = ( +/obj/machinery/hologram/holopad, +/obj/effect/floor_decal/industrial/outline/grey, +/obj/structure/cable/cyan{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/turf/simulated/floor/tiled/techfloor, +/area/ai/ai_upload) +"dEZ" = ( +/obj/machinery/alarm{ + dir = 8; + pixel_x = 22; + pixel_y = 0 + }, +/turf/simulated/floor/bluegrid, +/area/ai/ai_upload) +"dFa" = ( +/obj/machinery/atmospherics/portables_connector{ + dir = 4 + }, +/obj/effect/floor_decal/industrial/outline/yellow, +/obj/machinery/alarm{ + dir = 4; + pixel_x = -22; + pixel_y = 0 + }, +/obj/machinery/portable_atmospherics/canister/air/airlock, +/turf/simulated/floor/plating, +/area/maintenance/thirddeck/forestarboard) +"dFb" = ( +/obj/effect/floor_decal/industrial/warning{ + icon_state = "warning"; + dir = 8 + }, +/obj/machinery/atmospherics/pipe/manifold/hidden{ + dir = 4; + icon_state = "map" + }, +/turf/simulated/floor/plating, +/area/maintenance/thirddeck/forestarboard) +"dFc" = ( +/obj/structure/cable/yellow{ + d1 = 1; + d2 = 8; + icon_state = "1-8" + }, +/obj/structure/cable/yellow{ + d1 = 1; + d2 = 4; + icon_state = "1-4" + }, +/obj/structure/catwalk, +/turf/simulated/floor/airless, +/area/solar/foreportsolar) +"dFd" = ( +/obj/machinery/portable_atmospherics/canister/air/airlock, +/obj/effect/floor_decal/industrial/outline/yellow, +/obj/machinery/atmospherics/portables_connector{ + dir = 8 + }, +/turf/simulated/floor/plating, +/area/maintenance/thirddeck/foreport) +"dFe" = ( +/obj/structure/table/standard, +/obj/item/weapon/aiModule/asimov, +/obj/item/weapon/aiModule/freeformcore, +/obj/machinery/door/window{ + base_state = "right"; + dir = 4; + icon_state = "right"; + name = "Core Modules"; + req_access = list(20) + }, +/obj/item/weapon/aiModule/corp, +/obj/item/weapon/aiModule/paladin, +/obj/item/weapon/aiModule/robocop, +/obj/structure/window/reinforced{ + dir = 1 + }, +/turf/simulated/floor/bluegrid, +/area/ai/ai_upload) +"dFf" = ( +/obj/item/device/radio/intercom{ + dir = 8; + name = "Station Intercom (General)"; + pixel_x = -21 + }, +/turf/simulated/floor/bluegrid, +/area/ai/ai_upload) +"dFg" = ( +/obj/structure/cable/cyan{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/obj/effect/landmark{ + name = "lightsout" + }, +/turf/simulated/floor/tiled/techfloor, +/area/ai/ai_upload) +"dFh" = ( +/obj/item/device/radio/intercom/locked/ai_private{ + dir = 4; + pixel_x = 21 + }, +/turf/simulated/floor/bluegrid, +/area/ai/ai_upload) +"dFi" = ( +/obj/structure/extinguisher_cabinet{ + pixel_x = -28; + pixel_y = 0 + }, +/turf/simulated/floor/bluegrid, +/area/ai/ai_upload) +"dFj" = ( +/obj/structure/table/standard, +/obj/item/weapon/aiModule/oxygen, +/obj/item/weapon/aiModule/oneHuman, +/obj/machinery/door/window{ + base_state = "left"; + dir = 8; + icon_state = "left"; + name = "High-Risk Modules"; + req_access = list(20) + }, +/obj/item/weapon/aiModule/purge, +/obj/item/weapon/aiModule/antimov, +/obj/item/weapon/aiModule/teleporterOffline, +/obj/structure/window/reinforced{ + dir = 1 + }, +/turf/simulated/floor/bluegrid, +/area/ai/ai_upload) +"dFk" = ( +/obj/machinery/atmospherics/portables_connector{ + dir = 4 + }, +/obj/effect/floor_decal/industrial/outline/yellow, +/obj/machinery/portable_atmospherics/canister/air/airlock, +/turf/simulated/floor/plating, +/area/maintenance/thirddeck/forestarboard) +"dFl" = ( +/obj/structure/cable/yellow{ + d1 = 1; + d2 = 8; + icon_state = "1-8" + }, +/obj/structure/cable/yellow{ + d1 = 1; + d2 = 4; + icon_state = "1-4" + }, +/obj/structure/catwalk, +/turf/simulated/floor/airless, +/area/solar/forestarboardsolar) +"dFm" = ( +/obj/machinery/atmospherics/pipe/manifold/hidden{ + dir = 8; + icon_state = "map" + }, +/obj/effect/floor_decal/industrial/warning/corner{ + icon_state = "warningcorner"; + dir = 4 + }, +/obj/machinery/meter, +/turf/simulated/floor/plating, +/area/maintenance/thirddeck/foreport) +"dFn" = ( +/obj/machinery/atmospherics/pipe/simple/hidden{ + dir = 10; + icon_state = "intact" + }, +/obj/effect/floor_decal/industrial/warning{ + icon_state = "warning"; + dir = 1 + }, +/obj/machinery/floodlight, +/turf/simulated/floor/plating, +/area/maintenance/thirddeck/foreport) +"dFo" = ( +/obj/machinery/door/firedoor/border_only, +/obj/effect/wingrille_spawn/reinforced, +/turf/simulated/floor/plating, +/area/maintenance/thirddeck/foreport) +"dFp" = ( +/turf/simulated/wall/r_wall, +/area/ai/ai_server_room) +"dFq" = ( +/obj/machinery/ai_status_display, +/turf/simulated/wall/r_wall, +/area/ai/ai_server_room) +"dFr" = ( +/obj/machinery/door/firedoor/border_only, +/obj/structure/cable/cyan{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/obj/machinery/door/airlock/highsecurity{ + name = "AI Upload"; + req_access = list(16) + }, +/turf/simulated/floor/tiled/techfloor, +/area/ai/ai_upload) +"dFs" = ( +/turf/simulated/wall/r_wall, +/area/ai/ai_cyborg_station) +"dFt" = ( +/obj/machinery/status_display, +/turf/simulated/wall/r_wall, +/area/ai/ai_cyborg_station) +"dFu" = ( +/obj/machinery/door/firedoor/border_only, +/obj/effect/wingrille_spawn/reinforced, +/turf/simulated/floor/plating, +/area/maintenance/thirddeck/forestarboard) +"dFv" = ( +/obj/effect/floor_decal/industrial/warning{ + icon_state = "warning"; + dir = 1 + }, +/obj/machinery/atmospherics/pipe/simple/hidden{ + dir = 6 + }, +/obj/structure/closet/crate, +/obj/random/powercell, +/obj/random/powercell, +/obj/random/powercell, +/obj/random/toolbox, +/obj/random/maintenance/clean, +/obj/random/maintenance/clean, +/turf/simulated/floor/plating, +/area/maintenance/thirddeck/forestarboard) +"dFw" = ( +/obj/effect/floor_decal/industrial/warning/corner{ + icon_state = "warningcorner"; + dir = 1 + }, +/obj/machinery/atmospherics/pipe/manifold/hidden{ + dir = 4; + icon_state = "map" + }, +/obj/machinery/meter, +/turf/simulated/floor/plating, +/area/maintenance/thirddeck/forestarboard) +"dFx" = ( +/obj/machinery/power/apc{ + dir = 8; + name = "west bump"; + pixel_x = -24 + }, +/obj/structure/cable/green{ + d2 = 2; + icon_state = "0-2" + }, +/obj/machinery/atmospherics/pipe/simple/hidden, +/obj/structure/catwalk, +/turf/simulated/floor/plating, +/area/maintenance/thirddeck/foreport) +"dFy" = ( +/obj/machinery/atmospherics/binary/pump/on{ + dir = 1; + target_pressure = 200 + }, +/obj/structure/table/rack, +/obj/item/weapon/storage/toolbox/mechanical, +/obj/item/weapon/storage/belt/utility, +/obj/random/maintenance/security, +/obj/random/maintenance/security, +/obj/random/maintenance/security, +/turf/simulated/floor/plating, +/area/maintenance/thirddeck/foreport) +"dFz" = ( +/obj/machinery/message_server, +/obj/machinery/camera/network/command{ + c_tag = "AI - Messaging Server"; + dir = 4 + }, +/turf/simulated/floor/bluegrid, +/area/ai/ai_server_room) +"dFA" = ( +/obj/machinery/light{ + dir = 1 + }, +/turf/simulated/floor/bluegrid, +/area/ai/ai_server_room) +"dFB" = ( +/obj/machinery/blackbox_recorder, +/turf/simulated/floor/bluegrid, +/area/ai/ai_server_room) +"dFC" = ( +/obj/effect/floor_decal/industrial/warning{ + dir = 9 + }, +/obj/item/device/radio/intercom/locked/ai_private{ + dir = 1; + pixel_y = 21 + }, +/obj/machinery/alarm{ + dir = 4; + icon_state = "alarm0"; + pixel_x = -22; + pixel_y = 0 + }, +/obj/machinery/atmospherics/unary/vent_scrubber/on{ + dir = 4 + }, +/obj/machinery/camera/network/command{ + c_tag = "AI - Upload Foyer"; + dir = 2 + }, +/turf/simulated/floor/tiled/techfloor, +/area/ai/ai_upload_foyer) +"dFD" = ( +/obj/effect/floor_decal/industrial/warning{ + dir = 1 + }, +/obj/structure/cable/cyan{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/manifold/hidden/supply{ + dir = 8 + }, +/turf/simulated/floor/tiled/techfloor, +/area/ai/ai_upload_foyer) +"dFE" = ( +/obj/effect/floor_decal/industrial/warning{ + icon_state = "warning"; + dir = 5 + }, +/obj/machinery/turretid/stun{ + control_area = "\improper AI Upload Chamber"; + name = "AI Upload turret control"; + pixel_x = 0; + pixel_y = 24 + }, +/obj/machinery/power/apc{ + dir = 4; + name = "east bump"; + pixel_x = 24 + }, +/obj/machinery/light_switch{ + dir = 2; + name = "light switch "; + pixel_x = 36; + pixel_y = 0 + }, +/obj/structure/cable/cyan{ + d2 = 2; + icon_state = "0-2" + }, +/obj/machinery/atmospherics/unary/vent_pump/on{ + dir = 8 + }, +/obj/machinery/flasher{ + id = "AIFoyer"; + pixel_x = 0; + pixel_y = 36 + }, +/turf/simulated/floor/tiled/techfloor, +/area/ai/ai_upload_foyer) +"dFF" = ( +/obj/machinery/recharge_station, +/turf/simulated/floor/bluegrid, +/area/ai/ai_cyborg_station) +"dFG" = ( +/obj/machinery/recharge_station, +/obj/machinery/light{ + dir = 1 + }, +/turf/simulated/floor/bluegrid, +/area/ai/ai_cyborg_station) +"dFH" = ( +/obj/structure/table/standard, +/obj/item/weapon/phone, +/obj/machinery/camera/network/command{ + c_tag = "AI - Cyborg Station"; + dir = 8 + }, +/obj/machinery/computer/cryopod/robot{ + pixel_x = 30; + pixel_y = 0 + }, +/turf/simulated/floor/bluegrid, +/area/ai/ai_cyborg_station) +"dFI" = ( +/obj/machinery/atmospherics/binary/pump/on{ + dir = 1; + target_pressure = 200 + }, +/obj/structure/largecrate, +/obj/random/maintenance/clean, +/obj/random/maintenance/clean, +/turf/simulated/floor/plating, +/area/maintenance/thirddeck/forestarboard) +"dFJ" = ( +/obj/machinery/power/apc{ + dir = 4; + name = "east bump"; + pixel_x = 24 + }, +/obj/structure/cable/green{ + d2 = 2; + icon_state = "0-2" + }, +/obj/machinery/atmospherics/pipe/simple/hidden, +/obj/structure/catwalk, +/turf/simulated/floor/plating, +/area/maintenance/thirddeck/forestarboard) +"dFK" = ( +/obj/structure/cable/green{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/obj/machinery/atmospherics/pipe/simple/hidden, +/obj/structure/catwalk, +/turf/simulated/floor/plating, +/area/maintenance/thirddeck/foreport) +"dFL" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, +/obj/structure/cable{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/obj/structure/table/gamblingtable, +/obj/structure/catwalk, +/obj/random/plushielarge, +/turf/simulated/floor/plating, +/area/maintenance/bar) +"dFM" = ( +/obj/machinery/computer/message_monitor, +/obj/machinery/firealarm{ + dir = 8; + pixel_x = -24 + }, +/turf/simulated/floor/bluegrid, +/area/ai/ai_server_room) +"dFN" = ( +/obj/structure/bed/chair/office/light{ + dir = 8 + }, +/obj/machinery/atmospherics/unary/vent_scrubber/on{ + dir = 4 + }, +/turf/simulated/floor/tiled/techfloor, +/area/ai/ai_server_room) +"dFO" = ( +/obj/machinery/hologram/holopad, +/obj/effect/floor_decal/industrial/outline/grey, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 6 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, +/turf/simulated/floor/tiled/techfloor, +/area/ai/ai_server_room) +"dFP" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/obj/structure/cable/cyan{ + d1 = 2; + d2 = 4; + icon_state = "2-4" + }, +/turf/simulated/floor/tiled/techfloor, +/area/ai/ai_server_room) +"dFQ" = ( +/obj/machinery/door/firedoor/border_only, +/obj/structure/cable/cyan{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/obj/machinery/door/airlock/highsecurity{ + name = "Messaging Server"; + req_access = list(16) + }, +/turf/simulated/floor/tiled/techfloor, +/area/ai/ai_server_room) +"dFR" = ( +/obj/effect/floor_decal/industrial/warning{ + dir = 10 + }, +/obj/machinery/firealarm{ + dir = 1; + pixel_y = -24 + }, +/obj/structure/cable/cyan{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/turf/simulated/floor/tiled/techfloor, +/area/ai/ai_upload_foyer) +"dFS" = ( +/obj/effect/floor_decal/industrial/warning, +/obj/machinery/hologram/holopad, +/obj/structure/cable/cyan{ + d1 = 1; + d2 = 4; + icon_state = "1-4" + }, +/obj/structure/cable/cyan{ + d1 = 1; + d2 = 8; + icon_state = "1-8" + }, +/obj/machinery/atmospherics/pipe/manifold4w/hidden/scrubbers, +/obj/machinery/atmospherics/pipe/manifold4w/hidden/supply, +/turf/simulated/floor/tiled/techfloor, +/area/ai/ai_upload_foyer) +"dFT" = ( +/obj/effect/floor_decal/industrial/warning{ + dir = 6 + }, +/obj/structure/cable/cyan{ + d1 = 1; + d2 = 8; + icon_state = "1-8" + }, +/obj/structure/cable/cyan{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/obj/machinery/light, +/turf/simulated/floor/tiled/techfloor, +/area/ai/ai_upload_foyer) +"dFU" = ( +/obj/machinery/door/firedoor/border_only, +/obj/structure/cable/cyan{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/obj/machinery/door/airlock/highsecurity{ + name = "Synthetic Storage Access"; + req_access = list(16) + }, +/turf/simulated/floor/tiled/techfloor, +/area/ai/ai_cyborg_station) +"dFV" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/obj/structure/cable/cyan{ + d1 = 2; + d2 = 8; + icon_state = "2-8" + }, +/obj/effect/landmark/start{ + name = "Cyborg" + }, +/turf/simulated/floor/tiled/techfloor, +/area/ai/ai_cyborg_station) +"dFW" = ( +/obj/machinery/hologram/holopad, +/obj/effect/floor_decal/industrial/outline/grey, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 10 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, +/obj/effect/landmark/start{ + name = "Cyborg" + }, +/turf/simulated/floor/tiled/techfloor, +/area/ai/ai_cyborg_station) +"dFX" = ( +/obj/machinery/atmospherics/unary/vent_scrubber/on{ + dir = 8 + }, +/obj/structure/bed/chair/office/light{ + dir = 4 + }, +/obj/effect/landmark{ + name = "JoinLateCyborg" + }, +/turf/simulated/floor/tiled/techfloor, +/area/ai/ai_cyborg_station) +"dFY" = ( +/obj/machinery/computer/aifixer, +/obj/machinery/firealarm{ + dir = 4; + pixel_x = 24 + }, +/turf/simulated/floor/bluegrid, +/area/ai/ai_cyborg_station) +"dFZ" = ( +/obj/machinery/atmospherics/pipe/simple/visible/universal, +/obj/structure/largecrate, +/obj/random/maintenance/clean, +/obj/random/maintenance/clean, +/turf/simulated/floor/plating, +/area/maintenance/thirddeck/forestarboard) +"dGa" = ( +/obj/structure/cable/green{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/obj/machinery/atmospherics/pipe/simple/hidden, +/obj/structure/catwalk, +/turf/simulated/floor/plating, +/area/maintenance/thirddeck/forestarboard) +"dGb" = ( +/obj/structure/cable/green{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 6 + }, +/obj/machinery/atmospherics/pipe/simple/hidden, +/obj/structure/catwalk, +/turf/simulated/floor/plating, +/area/maintenance/thirddeck/foreport) +"dGc" = ( +/obj/machinery/atmospherics/unary/vent_scrubber/on{ + dir = 1 + }, +/turf/simulated/floor/tiled/hydro, +/area/rnd/xenobiology/xenoflora) +"dGd" = ( +/turf/simulated/wall/r_wall, +/area/crew_quarters/heads/sc/hop/quarters) +"dGe" = ( +/obj/machinery/door/firedoor/border_only, +/obj/effect/wingrille_spawn/reinforced, +/turf/simulated/floor/plating, +/area/crew_quarters/heads/sc/hop/quarters) +"dGf" = ( +/obj/machinery/door/firedoor/glass, +/obj/effect/wingrille_spawn/reinforced, +/turf/simulated/floor/plating, +/area/crew_quarters/heads/sc/hop/quarters) +"dGg" = ( +/turf/simulated/wall/r_wall, +/area/maintenance/substation/command) +"dGh" = ( +/obj/structure/cable/green{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/turf/simulated/wall/r_wall, +/area/maintenance/substation/command) +"dGi" = ( +/obj/structure/closet/crate{ + name = "Camera Assembly Crate" + }, +/obj/item/weapon/camera_assembly, +/obj/item/weapon/camera_assembly, +/obj/item/weapon/camera_assembly, +/obj/item/weapon/camera_assembly, +/turf/simulated/floor/bluegrid, +/area/ai/ai_server_room) +"dGj" = ( +/obj/item/device/radio/intercom{ + name = "Station Intercom (General)"; + pixel_y = -21 + }, +/turf/simulated/floor/tiled/techfloor, +/area/ai/ai_server_room) +"dGk" = ( +/obj/machinery/atmospherics/unary/vent_pump/on{ + dir = 1 + }, +/obj/machinery/alarm{ + dir = 1; + icon_state = "alarm0"; + pixel_y = -22 + }, +/turf/simulated/floor/tiled/techfloor, +/area/ai/ai_server_room) +"dGl" = ( +/obj/machinery/power/apc{ + dir = 4; + name = "east bump"; + pixel_x = 24 + }, +/obj/machinery/light_switch{ + pixel_x = 36; + pixel_y = 0 + }, +/obj/structure/cable/cyan, +/turf/simulated/floor/tiled/techfloor, +/area/ai/ai_server_room) +"dGm" = ( +/turf/simulated/wall/r_wall, +/area/ai/ai_upload_foyer) +"dGn" = ( +/obj/machinery/door/firedoor/border_only, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/machinery/door/airlock/highsecurity{ + name = "AI Upload Access"; + req_access = list(16) + }, +/turf/simulated/floor/tiled/techfloor, +/area/ai/ai_upload_foyer) +"dGo" = ( +/obj/machinery/power/apc{ + dir = 8; + name = "west bump"; + pixel_x = -24 + }, +/obj/machinery/light_switch{ + pixel_x = -36; + pixel_y = 0 + }, +/obj/structure/cable/cyan, +/turf/simulated/floor/tiled/techfloor, +/area/ai/ai_cyborg_station) +"dGp" = ( +/obj/machinery/atmospherics/unary/vent_pump/on{ + dir = 1 + }, +/obj/machinery/alarm{ + dir = 1; + icon_state = "alarm0"; + pixel_y = -22 + }, +/turf/simulated/floor/tiled/techfloor, +/area/ai/ai_cyborg_station) +"dGq" = ( +/obj/effect/landmark{ + name = "JoinLateCyborg" + }, +/obj/item/device/radio/intercom{ + name = "Station Intercom (General)"; + pixel_y = -21 + }, +/turf/simulated/floor/tiled/techfloor, +/area/ai/ai_cyborg_station) +"dGr" = ( +/obj/machinery/cryopod/robot{ + dir = 4 + }, +/turf/simulated/floor/bluegrid, +/area/ai/ai_cyborg_station) +"dGs" = ( +/turf/simulated/wall/r_wall, +/area/crew_quarters/heads/sc/cmo/quarters) +"dGt" = ( +/obj/machinery/door/firedoor/border_only, +/obj/effect/wingrille_spawn/reinforced, +/turf/simulated/floor/plating, +/area/crew_quarters/heads/sc/cmo/quarters) +"dGu" = ( +/obj/machinery/door/firedoor/glass, +/obj/effect/wingrille_spawn/reinforced, +/turf/simulated/floor/plating, +/area/crew_quarters/heads/sc/cmo/quarters) +"dGv" = ( +/obj/machinery/door/firedoor/border_only, +/obj/effect/wingrille_spawn/reinforced, +/turf/simulated/floor/plating, +/area/crew_quarters/heads/sc/hor/quarters) +"dGw" = ( +/obj/machinery/door/firedoor/glass, +/obj/effect/wingrille_spawn/reinforced, +/turf/simulated/floor/plating, +/area/crew_quarters/heads/sc/hor/quarters) +"dGx" = ( +/turf/simulated/wall/r_wall, +/area/crew_quarters/heads/sc/hor/quarters) +"dGy" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/turf/simulated/floor/tiled/hydro, +/area/rnd/xenobiology/xenoflora) +"dGz" = ( +/obj/structure/cable/green{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/obj/machinery/atmospherics/pipe/simple/hidden, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 10 + }, +/obj/structure/catwalk, +/turf/simulated/floor/plating, +/area/maintenance/thirddeck/forestarboard) +"dGA" = ( +/obj/structure/cable/green{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/machinery/atmospherics/pipe/simple/hidden, +/obj/machinery/light/small{ + dir = 8 + }, +/obj/structure/catwalk, +/turf/simulated/floor/plating, +/area/maintenance/thirddeck/foreport) +"dGB" = ( +/obj/structure/closet/secure_closet/hop2, +/turf/simulated/floor/carpet, +/area/crew_quarters/heads/sc/hop/quarters) +"dGC" = ( +/obj/structure/table/standard, +/obj/machinery/atmospherics/unary/vent_pump/on, +/turf/simulated/floor/carpet, +/area/crew_quarters/heads/sc/hop/quarters) +"dGD" = ( +/obj/structure/table/standard, +/obj/item/device/flashlight/lamp/green, +/obj/item/device/radio/intercom{ + dir = 4; + name = "Station Intercom (General)"; + pixel_x = 21 + }, +/turf/simulated/floor/carpet, +/area/crew_quarters/heads/sc/hop/quarters) +"dGE" = ( +/turf/simulated/wall, +/area/maintenance/substation/command) +"dGF" = ( +/obj/structure/cable/green{ + d2 = 4; + icon_state = "0-4" + }, +/obj/structure/cable/green{ + d2 = 2; + icon_state = "0-2" + }, +/obj/machinery/power/apc{ + dir = 8; + name = "west bump"; + pixel_x = -24 + }, +/obj/structure/table/steel, +/obj/machinery/cell_charger, +/obj/structure/disposalpipe/segment{ + dir = 4; + icon_state = "pipe-c" + }, +/turf/simulated/floor, +/area/maintenance/substation/command) +"dGG" = ( +/obj/structure/cable/green{ + d1 = 1; + d2 = 8; + icon_state = "1-8" + }, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/effect/floor_decal/industrial/warning{ + icon_state = "warning"; + dir = 4 + }, +/turf/simulated/floor, +/area/maintenance/substation/command) +"dGH" = ( +/obj/structure/lattice, +/obj/machinery/atmospherics/pipe/zpipe/down/scrubbers, +/obj/machinery/atmospherics/pipe/zpipe/down/supply, +/obj/structure/disposalpipe/down{ + dir = 8 + }, +/obj/structure/cable{ + d1 = 32; + d2 = 2; + icon_state = "32-2" + }, +/obj/structure/railing, +/turf/simulated/open, +/area/maintenance/substation/command) +"dGI" = ( +/obj/machinery/status_display, +/turf/simulated/wall/r_wall, +/area/ai/ai_server_room) +"dGJ" = ( +/obj/structure/sign/warning/secure_area, +/turf/simulated/wall/r_wall, +/area/ai/ai_server_room) +"dGK" = ( +/obj/effect/floor_decal/industrial/warning/corner{ + dir = 4 + }, +/obj/effect/floor_decal/techfloor{ + dir = 10 + }, +/turf/simulated/floor/tiled/techfloor, +/area/hallway/primary/thirddeck/central) +"dGL" = ( +/obj/effect/floor_decal/industrial/warning{ + icon_state = "warning"; + dir = 1 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/effect/floor_decal/techfloor, +/turf/simulated/floor/tiled/techfloor, +/area/hallway/primary/thirddeck/central) +"dGM" = ( +/obj/effect/floor_decal/industrial/warning/corner{ + dir = 1 + }, +/obj/effect/floor_decal/techfloor{ + dir = 6 + }, +/turf/simulated/floor/tiled/techfloor, +/area/hallway/primary/thirddeck/central) +"dGN" = ( +/obj/structure/sign/warning/lethal_turrets, +/turf/simulated/wall/r_wall, +/area/ai/ai_cyborg_station) +"dGO" = ( +/obj/machinery/ai_status_display, +/turf/simulated/wall/r_wall, +/area/ai/ai_cyborg_station) +"dGP" = ( +/obj/structure/closet/secure_closet/CMO_wardrobe, +/turf/simulated/floor/carpet/blue, +/area/crew_quarters/heads/sc/cmo/quarters) +"dGQ" = ( +/obj/structure/table/standard, +/obj/machinery/atmospherics/unary/vent_pump/on, +/turf/simulated/floor/carpet/blue, +/area/crew_quarters/heads/sc/cmo/quarters) +"dGR" = ( +/obj/structure/table/standard, +/obj/item/device/flashlight/lamp/green, +/obj/item/device/radio/intercom{ + dir = 4; + name = "Station Intercom (General)"; + pixel_x = 21 + }, +/turf/simulated/floor/carpet/blue, +/area/crew_quarters/heads/sc/cmo/quarters) +"dGS" = ( +/turf/simulated/wall, +/area/crew_quarters/heads/sc/cmo/quarters) +"dGT" = ( +/obj/structure/table/standard, +/obj/item/device/flashlight/lamp/green, +/obj/item/device/radio/intercom{ + dir = 8; + name = "Station Intercom (General)"; + pixel_x = -21 + }, +/turf/simulated/floor/carpet, +/area/crew_quarters/heads/sc/hor/quarters) +"dGU" = ( +/obj/structure/table/standard, +/obj/machinery/atmospherics/unary/vent_pump/on, +/turf/simulated/floor/carpet, +/area/crew_quarters/heads/sc/hor/quarters) +"dGV" = ( +/obj/structure/closet/secure_closet/RD_wardrobe, +/turf/simulated/floor/carpet, +/area/crew_quarters/heads/sc/hor/quarters) +"dGW" = ( +/obj/structure/cable/green{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/obj/machinery/light/small{ + dir = 4; + pixel_y = 0 + }, +/obj/machinery/atmospherics/pipe/simple/hidden, +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/structure/catwalk, +/turf/simulated/floor/plating, +/area/maintenance/thirddeck/forestarboard) +"dGX" = ( +/obj/structure/cable/green{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/machinery/atmospherics/pipe/simple/hidden, +/obj/structure/catwalk, +/turf/simulated/floor/plating, +/area/maintenance/thirddeck/foreport) +"dGY" = ( +/obj/structure/closet, +/obj/item/weapon/storage/backpack, +/obj/random/maintenance/clean, +/obj/random/maintenance/cargo, +/turf/simulated/floor/plating, +/area/maintenance/thirddeck/foreport) +"dGZ" = ( +/obj/structure/cable/green{ + d2 = 4; + icon_state = "0-4" + }, +/obj/machinery/power/apc{ + dir = 8; + name = "west bump"; + pixel_x = -24 + }, +/obj/machinery/light_switch{ + pixel_x = -36; + pixel_y = -6 + }, +/obj/machinery/button/windowtint{ + id = "hopquarters"; + pixel_x = -36; + pixel_y = 6 + }, +/turf/simulated/floor/carpet, +/area/crew_quarters/heads/sc/hop/quarters) +"dHa" = ( +/obj/structure/bed/chair/office/dark{ + dir = 1 + }, +/obj/structure/cable/green{ + d1 = 2; + d2 = 8; + icon_state = "2-8" + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/turf/simulated/floor/carpet, +/area/crew_quarters/heads/sc/hop/quarters) +"dHb" = ( +/obj/structure/table/standard, +/obj/machinery/light{ + dir = 4; + icon_state = "tube1" + }, +/obj/item/weapon/paper_bin{ + pixel_x = -3; + pixel_y = 7 + }, +/obj/item/weapon/folder/blue_hop, +/obj/item/weapon/pen/multi, +/obj/machinery/computer/security/telescreen/entertainment{ + icon_state = "frame"; + pixel_x = 32; + pixel_y = 0 + }, +/turf/simulated/floor/carpet, +/area/crew_quarters/heads/sc/hop/quarters) +"dHc" = ( +/obj/structure/cable/green{ + d2 = 2; + icon_state = "0-2" + }, +/obj/structure/cable/green, +/obj/machinery/power/sensor{ + name = "Powernet Sensor - Command Subgrid"; + name_tag = "Command Subgrid" + }, +/obj/machinery/light/small{ + dir = 8 + }, +/obj/structure/disposalpipe/segment, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 6 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 6 + }, +/obj/effect/floor_decal/industrial/warning/corner, +/turf/simulated/floor, +/area/maintenance/substation/command) +"dHd" = ( +/obj/structure/cable{ + icon_state = "0-4"; + d2 = 4 + }, +/obj/machinery/power/terminal, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/obj/effect/floor_decal/industrial/warning, +/obj/effect/floor_decal/industrial/warning/corner{ + icon_state = "warningcorner"; + dir = 4 + }, +/turf/simulated/floor, +/area/maintenance/substation/command) +"dHe" = ( +/obj/structure/cable{ + d1 = 1; + d2 = 8; + icon_state = "1-8" + }, +/obj/structure/cable{ + d1 = 1; + d2 = 2; + icon_state = "1-2"; + pixel_y = 0 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 9 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 9; + pixel_y = 0 + }, +/obj/machinery/alarm{ + dir = 8; + pixel_x = 22; + pixel_y = 0 + }, +/obj/effect/floor_decal/industrial/warning, +/obj/effect/floor_decal/industrial/warning{ + icon_state = "warning"; + dir = 1 + }, +/turf/simulated/floor, +/area/maintenance/substation/command) +"dHf" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 6 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 6 + }, +/turf/simulated/floor/tiled, +/area/hallway/primary/thirddeck/central) +"dHg" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/turf/simulated/floor/tiled, +/area/hallway/primary/thirddeck/central) +"dHh" = ( +/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{ + dir = 1 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/turf/simulated/floor/tiled, +/area/hallway/primary/thirddeck/central) +"dHi" = ( +/obj/machinery/hologram/holopad, +/obj/effect/floor_decal/industrial/outline/grey, +/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers, +/obj/machinery/atmospherics/pipe/manifold/hidden/supply, +/turf/simulated/floor/tiled/monotile, +/area/hallway/primary/thirddeck/central) +"dHj" = ( +/obj/machinery/atmospherics/pipe/manifold/hidden/supply{ + dir = 1 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, +/turf/simulated/floor/tiled, +/area/hallway/primary/thirddeck/central) +"dHk" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 10 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 10 + }, +/turf/simulated/floor/tiled, +/area/hallway/primary/thirddeck/central) +"dHl" = ( +/obj/structure/cable/green{ + d2 = 4; + icon_state = "0-4" + }, +/obj/machinery/power/apc{ + dir = 8; + name = "west bump"; + pixel_x = -24 + }, +/obj/machinery/light_switch{ + pixel_x = -36; + pixel_y = -6 + }, +/obj/machinery/button/windowtint{ + id = "cmoquarters"; + pixel_x = -36; + pixel_y = 6 + }, +/turf/simulated/floor/carpet/blue, +/area/crew_quarters/heads/sc/cmo/quarters) +"dHm" = ( +/obj/structure/bed/chair/office/dark{ + dir = 1 + }, +/obj/structure/cable/green{ + d1 = 2; + d2 = 8; + icon_state = "2-8" + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/turf/simulated/floor/carpet/blue, +/area/crew_quarters/heads/sc/cmo/quarters) +"dHn" = ( +/obj/structure/table/standard, +/obj/machinery/light{ + dir = 4; + icon_state = "tube1" + }, +/obj/item/weapon/paper_bin{ + pixel_x = -3; + pixel_y = 7 + }, +/obj/item/weapon/folder/white_cmo, +/obj/item/weapon/pen/multi, +/obj/machinery/computer/security/telescreen/entertainment{ + icon_state = "frame"; + pixel_x = 32; + pixel_y = 0 + }, +/turf/simulated/floor/carpet/blue, +/area/crew_quarters/heads/sc/cmo/quarters) +"dHo" = ( +/obj/structure/table/standard, +/obj/machinery/light{ + icon_state = "tube1"; + dir = 8 + }, +/obj/item/weapon/paper_bin{ + pixel_x = -3; + pixel_y = 7 + }, +/obj/item/weapon/folder/white_rd, +/obj/item/weapon/pen/multi, +/obj/machinery/computer/security/telescreen/entertainment{ + icon_state = "frame"; + pixel_x = -32; + pixel_y = 0 + }, +/turf/simulated/floor/carpet, +/area/crew_quarters/heads/sc/hor/quarters) +"dHp" = ( +/obj/structure/bed/chair/office/dark{ + dir = 1 + }, +/obj/structure/cable/green{ + d1 = 2; + d2 = 4; + icon_state = "2-4" + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/turf/simulated/floor/carpet, +/area/crew_quarters/heads/sc/hor/quarters) +"dHq" = ( +/obj/machinery/power/apc{ + dir = 4; + name = "east bump"; + pixel_x = 24 + }, +/obj/structure/cable/green{ + d2 = 8; + icon_state = "0-8" + }, +/obj/machinery/light_switch{ + pixel_x = 36; + pixel_y = -6 + }, +/obj/machinery/button/windowtint{ + id = "rdquarters"; + pixel_x = 36; + pixel_y = 6 + }, +/turf/simulated/floor/carpet, +/area/crew_quarters/heads/sc/hor/quarters) +"dHr" = ( +/obj/structure/closet/crate, +/obj/item/clothing/mask/gas, +/obj/item/device/flashlight, +/obj/item/device/flashlight, +/obj/effect/decal/cleanable/dirt, +/obj/random/maintenance/research, +/obj/random/maintenance/research, +/obj/random/maintenance/cargo, +/obj/random/maintenance/cargo, +/turf/simulated/floor/plating, +/area/maintenance/thirddeck/forestarboard) +"dHs" = ( +/obj/structure/cable/green{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/obj/machinery/atmospherics/pipe/simple/hidden, +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/structure/catwalk, +/turf/simulated/floor/plating, +/area/maintenance/thirddeck/forestarboard) +"dHt" = ( +/obj/machinery/door/firedoor/border_only, +/obj/structure/cable/green{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/obj/machinery/door/airlock/maintenance{ + name = "Maintenance Access"; + req_one_access = list(12,19) + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/machinery/atmospherics/pipe/simple/hidden, +/turf/simulated/floor/plating, +/area/maintenance/thirddeck/foreport) +"dHu" = ( +/obj/machinery/atmospherics/unary/vent_scrubber/on{ + dir = 4 + }, +/obj/machinery/alarm{ + dir = 4; + pixel_x = -22; + pixel_y = 0 + }, +/obj/structure/dogbed, +/turf/simulated/floor/carpet, +/area/crew_quarters/heads/sc/hop/quarters) +"dHv" = ( +/obj/structure/cable/green{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 10 + }, +/turf/simulated/floor/carpet, +/area/crew_quarters/heads/sc/hop/quarters) +"dHw" = ( +/obj/structure/bed/padded, +/obj/item/weapon/bedsheet/hop, +/obj/machinery/firealarm{ + dir = 4; + pixel_x = 24 + }, +/turf/simulated/floor/carpet, +/area/crew_quarters/heads/sc/hop/quarters) +"dHx" = ( +/obj/structure/cable/green{ + d1 = 1; + d2 = 4; + icon_state = "1-4" + }, +/obj/structure/cable/green{ + d1 = 2; + d2 = 4; + icon_state = "2-4" + }, +/obj/structure/disposalpipe/segment, +/obj/machinery/firealarm{ + dir = 8; + pixel_x = -24 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/effect/floor_decal/industrial/warning{ + icon_state = "warning"; + dir = 4 + }, +/turf/simulated/floor, +/area/maintenance/substation/command) +"dHy" = ( +/obj/structure/cable/green{ + d2 = 4; + icon_state = "0-4" + }, +/obj/structure/cable/green{ + d2 = 8; + icon_state = "0-8" + }, +/obj/machinery/power/smes/buildable{ + charge = 0; + RCon_tag = "Substation - Command" + }, +/turf/simulated/floor, +/area/maintenance/substation/command) +"dHz" = ( +/obj/machinery/power/breakerbox/activated{ + RCon_tag = "Command Substation Bypass" + }, +/turf/simulated/floor, +/area/maintenance/substation/command) +"dHA" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/turf/simulated/floor/tiled, +/area/hallway/primary/thirddeck/central) +"dHB" = ( +/turf/simulated/floor/tiled, +/area/hallway/primary/thirddeck/central) +"dHC" = ( +/obj/effect/floor_decal/borderfloor/corner, +/obj/effect/floor_decal/corner/blue/bordercorner, +/turf/simulated/floor/tiled, +/area/hallway/primary/thirddeck/central) +"dHD" = ( +/obj/machinery/atmospherics/unary/vent_scrubber/on{ + dir = 1 + }, +/obj/machinery/light, +/obj/effect/floor_decal/borderfloor, +/obj/effect/floor_decal/corner/blue/border, +/turf/simulated/floor/tiled, +/area/hallway/primary/thirddeck/central) +"dHE" = ( +/obj/effect/floor_decal/borderfloor, +/obj/effect/floor_decal/corner/blue/border, +/turf/simulated/floor/tiled, +/area/hallway/primary/thirddeck/central) +"dHF" = ( +/obj/machinery/camera/network/third_deck{ + c_tag = "Third Deck - Central Fore"; + dir = 1 + }, +/obj/effect/floor_decal/borderfloor, +/obj/effect/floor_decal/corner/blue/border, +/turf/simulated/floor/tiled, +/area/hallway/primary/thirddeck/central) +"dHG" = ( +/obj/machinery/firealarm{ + dir = 1; + pixel_y = -24 + }, +/obj/effect/floor_decal/borderfloor, +/obj/effect/floor_decal/corner/blue/border, +/turf/simulated/floor/tiled, +/area/hallway/primary/thirddeck/central) +"dHH" = ( +/obj/machinery/atmospherics/unary/vent_pump/on{ + dir = 1 + }, +/obj/machinery/light, +/obj/effect/floor_decal/borderfloor, +/obj/effect/floor_decal/corner/blue/border, +/turf/simulated/floor/tiled, +/area/hallway/primary/thirddeck/central) +"dHI" = ( +/obj/effect/floor_decal/borderfloor/corner{ + dir = 8 + }, +/obj/effect/floor_decal/corner/blue/bordercorner{ + dir = 8 + }, +/obj/item/device/radio/intercom{ + name = "Station Intercom (General)"; + pixel_y = -21 + }, +/turf/simulated/floor/tiled, +/area/hallway/primary/thirddeck/central) +"dHJ" = ( +/obj/machinery/atmospherics/unary/vent_scrubber/on{ + dir = 4 + }, +/obj/machinery/alarm{ + dir = 4; + pixel_x = -22; + pixel_y = 0 + }, +/turf/simulated/floor/carpet/blue, +/area/crew_quarters/heads/sc/cmo/quarters) +"dHK" = ( +/obj/structure/cable/green{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 10 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/turf/simulated/floor/carpet/blue, +/area/crew_quarters/heads/sc/cmo/quarters) +"dHL" = ( +/obj/structure/bed/padded, +/obj/item/weapon/bedsheet/medical, +/obj/machinery/firealarm{ + dir = 4; + pixel_x = 24 + }, +/turf/simulated/floor/carpet/blue, +/area/crew_quarters/heads/sc/cmo/quarters) +"dHM" = ( +/obj/structure/bed/padded, +/obj/item/weapon/bedsheet/rd, +/obj/machinery/firealarm{ + dir = 8; + pixel_x = -24 + }, +/turf/simulated/floor/carpet, +/area/crew_quarters/heads/sc/hor/quarters) +"dHN" = ( +/obj/structure/cable/green{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 6 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/turf/simulated/floor/carpet, +/area/crew_quarters/heads/sc/hor/quarters) +"dHO" = ( +/obj/machinery/atmospherics/unary/vent_scrubber/on{ + dir = 8 + }, +/obj/machinery/alarm{ + dir = 8; + pixel_x = 22; + pixel_y = 0 + }, +/turf/simulated/floor/carpet, +/area/crew_quarters/heads/sc/hor/quarters) +"dHP" = ( +/obj/machinery/door/firedoor/border_only, +/obj/structure/cable/green{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/obj/machinery/door/airlock/maintenance{ + name = "Maintenance Access"; + req_one_access = list(12,19) + }, +/obj/machinery/atmospherics/pipe/simple/hidden, +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/turf/simulated/floor/plating, +/area/maintenance/thirddeck/forestarboard) +"dHQ" = ( +/turf/simulated/wall/r_wall, +/area/hallway/primary/thirddeck/port) +"dHR" = ( +/obj/machinery/atmospherics/pipe/simple/hidden{ + dir = 6 + }, +/turf/simulated/wall/r_wall, +/area/hallway/primary/thirddeck/port) +"dHS" = ( +/obj/machinery/atmospherics/pipe/manifold/hidden{ + dir = 1; + icon_state = "map" + }, +/turf/simulated/wall/r_wall, +/area/hallway/primary/thirddeck/port) +"dHT" = ( +/obj/machinery/atmospherics/pipe/simple/hidden{ + dir = 4 + }, +/turf/simulated/wall/r_wall, +/area/hallway/primary/thirddeck/port) +"dHU" = ( +/obj/machinery/firealarm{ + pixel_y = 24 + }, +/obj/effect/floor_decal/industrial/warning/corner{ + dir = 8 + }, +/obj/machinery/atmospherics/pipe/simple/hidden{ + dir = 4 + }, +/turf/simulated/floor/tiled, +/area/hallway/primary/thirddeck/port) +"dHV" = ( +/obj/structure/cable/green{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/machinery/atmospherics/pipe/manifold/hidden{ + dir = 4; + icon_state = "map" + }, +/obj/effect/floor_decal/steeldecal/steel_decals4{ + dir = 4 + }, +/obj/effect/floor_decal/steeldecal/steel_decals4{ + dir = 9 + }, +/turf/simulated/floor/tiled, +/area/hallway/primary/thirddeck/port) +"dHW" = ( +/obj/machinery/atmospherics/unary/vent_scrubber/on, +/turf/simulated/floor/tiled, +/area/hallway/primary/thirddeck/port) +"dHX" = ( +/obj/machinery/ai_status_display, +/turf/simulated/wall/r_wall, +/area/hallway/primary/thirddeck/port) +"dHY" = ( +/obj/machinery/door/firedoor/border_only, +/obj/effect/wingrille_spawn/reinforced, +/turf/simulated/floor/plating, +/area/hallway/primary/thirddeck/port) +"dHZ" = ( +/obj/machinery/door/firedoor/border_only, +/obj/effect/wingrille_spawn/reinforced/polarized{ + id = "hopquarters" + }, +/turf/simulated/floor/plating, +/area/crew_quarters/heads/sc/hop/quarters) +"dIa" = ( +/obj/machinery/door/firedoor/border_only, +/obj/structure/cable/green{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/obj/machinery/door/airlock/command{ + name = "Head of Personnel Quarters"; + req_access = list(57) + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/turf/simulated/floor/tiled/steel_grid, +/area/crew_quarters/heads/sc/hop/quarters) +"dIb" = ( +/turf/simulated/wall, +/area/crew_quarters/heads/sc/hop/quarters) +"dIc" = ( +/obj/machinery/door/firedoor/border_only, +/obj/structure/disposalpipe/segment, +/obj/structure/cable/green{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/obj/machinery/door/airlock/engineering{ + name = "Command Substation"; + req_one_access = list(11,19,24,47) + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/turf/simulated/floor, +/area/maintenance/substation/command) +"dId" = ( +/obj/machinery/ai_status_display, +/turf/simulated/wall/r_wall, +/area/maintenance/substation/command) +"dIe" = ( +/turf/simulated/wall/r_wall, +/area/hallway/primary/thirddeck/central) +"dIf" = ( +/obj/effect/floor_decal/borderfloor/corner{ + dir = 8 + }, +/obj/effect/floor_decal/corner/blue/bordercorner{ + dir = 8 + }, +/turf/simulated/floor/tiled, +/area/hallway/primary/thirddeck/central) +"dIg" = ( +/obj/machinery/status_display, +/turf/simulated/wall/r_wall, +/area/crew_quarters/heads/sc/cmo/quarters) +"dIh" = ( +/obj/machinery/door/firedoor/border_only, +/obj/effect/wingrille_spawn/reinforced/polarized{ + id = "cmoquarters" + }, +/turf/simulated/floor/plating, +/area/crew_quarters/heads/sc/cmo/quarters) +"dIi" = ( +/obj/machinery/door/firedoor/border_only, +/obj/structure/cable/green{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/obj/machinery/door/airlock/command{ + id_tag = null; + name = "CMO's Quarters"; + req_access = list(40) + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/turf/simulated/floor/tiled/steel_grid, +/area/crew_quarters/heads/sc/cmo/quarters) +"dIj" = ( +/turf/simulated/wall, +/area/crew_quarters/heads/sc/hor/quarters) +"dIk" = ( +/obj/machinery/door/firedoor/border_only, +/obj/structure/cable/green{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/obj/machinery/door/airlock/command{ + id_tag = null; + name = "Research Director Quarters"; + req_access = list(30) + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/turf/simulated/floor/tiled/steel_grid, +/area/crew_quarters/heads/sc/hor/quarters) +"dIl" = ( +/obj/machinery/door/firedoor/border_only, +/obj/effect/wingrille_spawn/reinforced/polarized{ + id = "rdquarters" + }, +/turf/simulated/floor/plating, +/area/crew_quarters/heads/sc/hor/quarters) +"dIm" = ( +/obj/machinery/door/firedoor/border_only, +/obj/effect/wingrille_spawn/reinforced, +/turf/simulated/floor/plating, +/area/hallway/primary/thirddeck/starboard) +"dIn" = ( +/obj/machinery/ai_status_display, +/turf/simulated/wall/r_wall, +/area/hallway/primary/thirddeck/starboard) +"dIo" = ( +/obj/machinery/atmospherics/unary/vent_scrubber/on, +/turf/simulated/floor/tiled, +/area/hallway/primary/thirddeck/starboard) +"dIp" = ( +/obj/structure/cable/green{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/obj/machinery/atmospherics/pipe/manifold/hidden{ + dir = 8; + icon_state = "map" + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/effect/floor_decal/steeldecal/steel_decals4{ + dir = 4 + }, +/obj/effect/floor_decal/steeldecal/steel_decals4{ + dir = 9 + }, +/turf/simulated/floor/tiled, +/area/hallway/primary/thirddeck/starboard) +"dIq" = ( +/obj/effect/floor_decal/industrial/warning/cee{ + icon_state = "warningcee"; + dir = 1 + }, +/obj/machinery/hologram/holopad, +/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{ + dir = 1 + }, +/obj/machinery/atmospherics/pipe/manifold/hidden/supply{ + dir = 1 + }, +/turf/simulated/floor/tiled/techfloor, +/area/ai) +"dIr" = ( +/obj/machinery/atmospherics/pipe/simple/hidden{ + icon_state = "intact"; + dir = 4 + }, +/turf/simulated/wall/r_wall, +/area/hallway/primary/thirddeck/starboard) +"dIs" = ( +/obj/machinery/atmospherics/pipe/manifold/hidden{ + dir = 1; + icon_state = "map" + }, +/turf/simulated/wall/r_wall, +/area/hallway/primary/thirddeck/starboard) +"dIt" = ( +/obj/machinery/atmospherics/pipe/simple/hidden{ + dir = 10; + icon_state = "intact" + }, +/turf/simulated/wall/r_wall, +/area/hallway/primary/thirddeck/starboard) +"dIu" = ( +/turf/simulated/wall/r_wall, +/area/hallway/primary/thirddeck/starboard) +"dIv" = ( +/obj/effect/floor_decal/industrial/warning{ + icon_state = "warning"; + dir = 4 + }, +/obj/machinery/light/small{ + dir = 1 + }, +/turf/simulated/floor/airless, +/area/hallway/primary/thirddeck/port) +"dIw" = ( +/obj/machinery/door/airlock/external{ + frequency = 1379; + icon_state = "door_locked"; + id_tag = "d3_port_outer"; + locked = 1; + name = "External Airlock Access"; + req_access = list(13) + }, +/turf/simulated/floor/tiled/dark, +/area/hallway/primary/thirddeck/port) +"dIx" = ( +/obj/effect/floor_decal/industrial/warning{ + icon_state = "warning"; + dir = 9 + }, +/obj/machinery/atmospherics/unary/vent_pump/high_volume{ + dir = 1; + frequency = 1379; + id_tag = "d3_port_pump" + }, +/obj/machinery/airlock_sensor{ + frequency = 1379; + id_tag = "d3_port_sensor"; + pixel_x = 0; + pixel_y = 25 + }, +/turf/simulated/floor/tiled, +/area/hallway/primary/thirddeck/port) +"dIy" = ( +/obj/structure/sign/warning/airlock{ + pixel_y = 32 + }, +/obj/effect/floor_decal/industrial/warning{ + icon_state = "warning"; + dir = 5 + }, +/obj/machinery/atmospherics/unary/vent_pump/high_volume{ + dir = 1; + frequency = 1379; + id_tag = "d3_port_pump" + }, +/turf/simulated/floor/tiled, +/area/hallway/primary/thirddeck/port) +"dIz" = ( +/obj/machinery/door/airlock/glass_external{ + frequency = 1379; + icon_state = "door_locked"; + id_tag = "d3_port_inner"; + locked = 1; + name = "Internal Airlock Access"; + req_access = list(13) + }, +/turf/simulated/floor/tiled/dark, +/area/hallway/primary/thirddeck/port) +"dIA" = ( +/obj/effect/floor_decal/industrial/warning{ + icon_state = "warning"; + dir = 8 + }, +/obj/machinery/access_button{ + command = "cycle_interior"; + frequency = 1379; + master_tag = "d3_port_airlock"; + name = "interior access button"; + pixel_x = -25; + pixel_y = 26; + req_access = list(18) + }, +/turf/simulated/floor/tiled, +/area/hallway/primary/thirddeck/port) +"dIB" = ( +/obj/structure/cable/green{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/machinery/atmospherics/pipe/simple/hidden, +/turf/simulated/floor/tiled, +/area/hallway/primary/thirddeck/port) +"dIC" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/obj/effect/floor_decal/steeldecal/steel_decals4{ + dir = 10 + }, +/obj/effect/floor_decal/steeldecal/steel_decals4, +/turf/simulated/floor/tiled, +/area/hallway/primary/thirddeck/port) +"dID" = ( +/obj/machinery/door/firedoor/glass, +/obj/machinery/door/airlock/glass{ + name = "Central Access" + }, +/turf/simulated/floor/tiled/steel_grid, +/area/hallway/primary/thirddeck/port) +"dIE" = ( +/obj/effect/floor_decal/steeldecal/steel_decals4{ + dir = 1 + }, +/obj/effect/floor_decal/steeldecal/steel_decals4{ + dir = 6 + }, +/turf/simulated/floor/tiled, +/area/hallway/primary/thirddeck/port) +"dIF" = ( +/obj/effect/floor_decal/borderfloor/corner{ + dir = 4 + }, +/obj/effect/floor_decal/corner/blue/bordercorner{ + dir = 4 + }, +/turf/simulated/floor/tiled, +/area/hallway/primary/thirddeck/port) +"dIG" = ( +/obj/machinery/power/apc{ + dir = 1; + name = "north bump"; + pixel_x = 0; + pixel_y = 24 + }, +/obj/structure/cable/green{ + d2 = 2; + icon_state = "0-2" + }, +/obj/effect/floor_decal/borderfloor{ + dir = 1 + }, +/obj/effect/floor_decal/corner/blue/border{ + dir = 1 + }, +/turf/simulated/floor/tiled, +/area/hallway/primary/thirddeck/port) +"dIH" = ( +/obj/effect/floor_decal/borderfloor/corner{ + dir = 1 + }, +/obj/effect/floor_decal/corner/blue/bordercorner{ + dir = 1 + }, +/turf/simulated/floor/tiled, +/area/hallway/primary/thirddeck/port) +"dII" = ( +/obj/structure/cable/green{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/obj/effect/floor_decal/steeldecal/steel_decals4{ + dir = 4 + }, +/obj/effect/floor_decal/steeldecal/steel_decals4{ + dir = 9 + }, +/turf/simulated/floor/tiled, +/area/hallway/primary/thirddeck/port) +"dIJ" = ( +/obj/machinery/camera/network/third_deck{ + c_tag = "Third Deck - Port Hallway One" + }, +/turf/simulated/floor/tiled, +/area/hallway/primary/thirddeck/port) +"dIK" = ( +/obj/machinery/firealarm{ + pixel_y = 24 + }, +/obj/machinery/atmospherics/unary/vent_scrubber/on, +/obj/effect/floor_decal/industrial/warning/corner{ + icon_state = "warningcorner"; + dir = 4 + }, +/turf/simulated/floor/tiled, +/area/hallway/primary/thirddeck/port) +"dIL" = ( +/obj/structure/cable/green{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/obj/structure/disposalpipe/segment{ + dir = 1; + icon_state = "pipe-c" + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/effect/floor_decal/industrial/warning{ + icon_state = "warning"; + dir = 1 + }, +/turf/simulated/floor/tiled, +/area/hallway/primary/thirddeck/port) +"dIM" = ( +/obj/structure/sign/warning/high_voltage{ + pixel_y = 32 + }, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/effect/floor_decal/industrial/warning/corner{ + icon_state = "warningcorner"; + dir = 1 + }, +/turf/simulated/floor/tiled, +/area/hallway/primary/thirddeck/port) +"dIN" = ( +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/effect/floor_decal/steeldecal/steel_decals4{ + dir = 10 + }, +/obj/effect/floor_decal/steeldecal/steel_decals4, +/turf/simulated/floor/tiled, +/area/hallway/primary/thirddeck/port) +"dIO" = ( +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/machinery/door/firedoor/glass, +/obj/machinery/door/airlock/glass{ + name = "Central Access" + }, +/turf/simulated/floor/tiled/steel_grid, +/area/hallway/primary/thirddeck/port) +"dIP" = ( +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/manifold/hidden/supply{ + dir = 8 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/obj/effect/floor_decal/steeldecal/steel_decals4{ + dir = 1 + }, +/obj/effect/floor_decal/steeldecal/steel_decals4{ + dir = 6 + }, +/turf/simulated/floor/tiled, +/area/hallway/primary/thirddeck/central) +"dIQ" = ( +/obj/structure/disposalpipe/segment{ + dir = 2; + icon_state = "pipe-c" + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/obj/effect/floor_decal/borderfloor{ + dir = 4 + }, +/obj/effect/floor_decal/corner/blue/border{ + dir = 4 + }, +/turf/simulated/floor/tiled, +/area/hallway/primary/thirddeck/central) +"dIR" = ( +/obj/machinery/atmospherics/unary/vent_pump/on{ + dir = 8 + }, +/obj/structure/flora/pottedplant/fern, +/turf/simulated/floor/tiled/dark, +/area/hallway/primary/thirddeck/central) +"dIS" = ( +/turf/unsimulated/mask, +/area/hallway/primary/thirddeck/central) +"dIT" = ( +/obj/machinery/atmospherics/unary/vent_scrubber/on{ + dir = 4 + }, +/obj/structure/flora/pottedplant/stoutbush, +/turf/simulated/floor/tiled/dark, +/area/hallway/primary/thirddeck/central) +"dIU" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, +/obj/effect/floor_decal/borderfloor{ + dir = 8 + }, +/obj/effect/floor_decal/corner/blue/border{ + dir = 8 + }, +/turf/simulated/floor/tiled, +/area/hallway/primary/thirddeck/central) +"dIV" = ( +/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/effect/floor_decal/steeldecal/steel_decals4{ + dir = 10 + }, +/obj/effect/floor_decal/steeldecal/steel_decals4, +/turf/simulated/floor/tiled, +/area/hallway/primary/thirddeck/central) +"dIW" = ( +/obj/machinery/door/firedoor/glass, +/obj/machinery/door/airlock/glass{ + name = "Central Access" + }, +/turf/simulated/floor/tiled/steel_grid, +/area/hallway/primary/thirddeck/starboard) +"dIX" = ( +/obj/effect/floor_decal/steeldecal/steel_decals4{ + dir = 1 + }, +/obj/effect/floor_decal/steeldecal/steel_decals4{ + dir = 6 + }, +/turf/simulated/floor/tiled, +/area/hallway/primary/thirddeck/starboard) +"dIY" = ( +/obj/structure/cable/green{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/effect/floor_decal/steeldecal/steel_decals4{ + dir = 4 + }, +/obj/effect/floor_decal/steeldecal/steel_decals4{ + dir = 9 + }, +/turf/simulated/floor/tiled, +/area/hallway/primary/thirddeck/starboard) +"dIZ" = ( +/obj/effect/floor_decal/borderfloor/corner{ + dir = 4 + }, +/obj/effect/floor_decal/corner/blue/bordercorner{ + dir = 4 + }, +/turf/simulated/floor/tiled, +/area/hallway/primary/thirddeck/starboard) +"dJa" = ( +/obj/machinery/alarm{ + pixel_y = 22 + }, +/obj/effect/floor_decal/borderfloor{ + dir = 1 + }, +/obj/effect/floor_decal/corner/blue/border{ + dir = 1 + }, +/turf/simulated/floor/tiled, +/area/hallway/primary/thirddeck/starboard) +"dJb" = ( +/obj/machinery/camera/network/third_deck{ + c_tag = "Third Deck - Starboard Hallway One" + }, +/obj/effect/floor_decal/borderfloor/corner{ + dir = 1 + }, +/obj/effect/floor_decal/corner/blue/bordercorner{ + dir = 1 + }, +/turf/simulated/floor/tiled, +/area/hallway/primary/thirddeck/starboard) +"dJc" = ( +/obj/machinery/atmospherics/unary/vent_pump/on, +/obj/effect/floor_decal/borderfloor/corner{ + dir = 4 + }, +/obj/effect/floor_decal/corner/blue/bordercorner{ + dir = 4 + }, +/turf/simulated/floor/tiled, +/area/hallway/primary/thirddeck/starboard) +"dJd" = ( +/obj/machinery/light{ + dir = 1 + }, +/obj/effect/floor_decal/borderfloor{ + dir = 1 + }, +/obj/effect/floor_decal/corner/blue/border{ + dir = 1 + }, +/turf/simulated/floor/tiled, +/area/hallway/primary/thirddeck/starboard) +"dJe" = ( +/obj/effect/floor_decal/borderfloor/corner{ + dir = 1 + }, +/obj/effect/floor_decal/corner/blue/bordercorner{ + dir = 1 + }, +/turf/simulated/floor/tiled, +/area/hallway/primary/thirddeck/starboard) +"dJf" = ( +/obj/effect/floor_decal/steeldecal/steel_decals4{ + dir = 10 + }, +/obj/effect/floor_decal/steeldecal/steel_decals4, +/turf/simulated/floor/tiled, +/area/hallway/primary/thirddeck/starboard) +"dJg" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/obj/effect/floor_decal/steeldecal/steel_decals4{ + dir = 1 + }, +/obj/effect/floor_decal/steeldecal/steel_decals4{ + dir = 6 + }, +/turf/simulated/floor/tiled, +/area/hallway/primary/thirddeck/starboard) +"dJh" = ( +/obj/structure/cable/green{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/obj/machinery/atmospherics/pipe/simple/hidden, +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/turf/simulated/floor/tiled, +/area/hallway/primary/thirddeck/starboard) +"dJi" = ( +/obj/effect/floor_decal/industrial/warning{ + icon_state = "warning"; + dir = 4 + }, +/obj/machinery/access_button{ + command = "cycle_interior"; + frequency = 1379; + master_tag = "d3_starboard_airlock"; + name = "interior access button"; + pixel_x = 25; + pixel_y = 26; + req_access = list(18) + }, +/turf/simulated/floor/tiled, +/area/hallway/primary/thirddeck/starboard) +"dJj" = ( +/obj/machinery/door/airlock/glass_external{ + frequency = 1379; + icon_state = "door_locked"; + id_tag = "d3_starboard_inner"; + locked = 1; + name = "Internal Airlock Access"; + req_access = list(13) + }, +/turf/simulated/floor/tiled/dark, +/area/hallway/primary/thirddeck/starboard) +"dJk" = ( +/obj/structure/sign/warning/airlock{ + pixel_y = 32 + }, +/obj/effect/floor_decal/industrial/warning{ + icon_state = "warning"; + dir = 9 + }, +/obj/machinery/atmospherics/unary/vent_pump/high_volume{ + dir = 1; + frequency = 1379; + id_tag = "d3_starboard_pump" + }, +/turf/simulated/floor/tiled, +/area/hallway/primary/thirddeck/starboard) +"dJl" = ( +/obj/effect/floor_decal/industrial/warning{ + icon_state = "warning"; + dir = 5 + }, +/obj/machinery/atmospherics/unary/vent_pump/high_volume{ + dir = 1; + frequency = 1379; + id_tag = "d3_starboard_pump" + }, +/obj/machinery/airlock_sensor{ + frequency = 1379; + id_tag = "d3_starboard_sensor"; + pixel_x = 0; + pixel_y = 25 + }, +/turf/simulated/floor/tiled, +/area/hallway/primary/thirddeck/starboard) +"dJm" = ( +/obj/machinery/door/airlock/external{ + frequency = 1379; + icon_state = "door_locked"; + id_tag = "d3_starboard_outer"; + locked = 1; + name = "External Airlock Access"; + req_access = list(13) + }, +/turf/simulated/floor/tiled/dark, +/area/hallway/primary/thirddeck/starboard) +"dJn" = ( +/obj/machinery/light/small{ + dir = 1 + }, +/obj/effect/floor_decal/industrial/warning{ + icon_state = "warning"; + dir = 8 + }, +/turf/simulated/floor/airless, +/area/hallway/primary/thirddeck/starboard) +"dJo" = ( +/obj/effect/floor_decal/industrial/warning{ + icon_state = "warning"; + dir = 4 + }, +/obj/machinery/access_button{ + command = "cycle_exterior"; + frequency = 1379; + master_tag = "d3_port_airlock"; + name = "exterior access button"; + pixel_x = 25; + pixel_y = -26; + req_access = list(18) + }, +/turf/simulated/floor/airless, +/area/hallway/primary/thirddeck/port) +"dJp" = ( +/obj/effect/floor_decal/industrial/warning{ + dir = 10 + }, +/obj/machinery/embedded_controller/radio/airlock/airlock_controller{ + frequency = 1379; + id_tag = "d3_port_airlock"; + pixel_x = 0; + pixel_y = -26; + req_access = list(18); + tag_airpump = "d3_port_pump"; + tag_chamber_sensor = "d3_port_sensor"; + tag_exterior_door = "d3_port_outer"; + tag_interior_door = "d3_port_inner" + }, +/obj/machinery/atmospherics/unary/vent_pump/high_volume{ + dir = 2; + frequency = 1379; + id_tag = "d3_port_pump" + }, +/turf/simulated/floor/tiled, +/area/hallway/primary/thirddeck/port) +"dJq" = ( +/obj/effect/floor_decal/industrial/warning{ + dir = 6 + }, +/obj/machinery/atmospherics/unary/vent_pump/high_volume{ + dir = 2; + frequency = 1379; + id_tag = "d3_port_pump" + }, +/obj/machinery/light/small, +/turf/simulated/floor/tiled, +/area/hallway/primary/thirddeck/port) +"dJr" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 6 + }, +/obj/effect/floor_decal/industrial/warning{ + icon_state = "warning"; + dir = 8 + }, +/turf/simulated/floor/tiled, +/area/hallway/primary/thirddeck/port) +"dJs" = ( +/obj/structure/cable/green{ + d1 = 1; + d2 = 4; + icon_state = "1-4" + }, +/obj/structure/cable/green{ + d1 = 2; + d2 = 4; + icon_state = "2-4" + }, +/obj/machinery/atmospherics/pipe/manifold/hidden/supply, +/obj/machinery/atmospherics/pipe/simple/hidden, +/turf/simulated/floor/tiled, +/area/hallway/primary/thirddeck/port) +"dJt" = ( +/obj/structure/cable/green{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 5 + }, +/obj/machinery/camera/network/third_deck{ + c_tag = "Third Deck - Port Hallway Two"; + dir = 8 + }, +/turf/simulated/floor/tiled, +/area/hallway/primary/thirddeck/port) +"dJu" = ( +/obj/structure/cable/green{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/obj/machinery/door/firedoor/border_only, +/obj/effect/wingrille_spawn/reinforced, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, +/turf/simulated/floor/plating, +/area/hallway/primary/thirddeck/port) +"dJv" = ( +/obj/structure/cable/green{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, +/obj/structure/flora/pottedplant/minitree, +/turf/simulated/floor/tiled, +/area/hallway/primary/thirddeck/port) +"dJw" = ( +/obj/structure/cable/green{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, +/turf/simulated/floor/tiled, +/area/hallway/primary/thirddeck/port) +"dJx" = ( +/obj/structure/cable/green{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/obj/structure/cable/green{ + d1 = 1; + d2 = 4; + icon_state = "1-4" + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, +/turf/simulated/floor/tiled, +/area/hallway/primary/thirddeck/port) +"dJy" = ( +/obj/structure/cable/green{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/obj/machinery/atmospherics/pipe/manifold/hidden/supply{ + dir = 1 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, +/turf/simulated/floor/tiled, +/area/hallway/primary/thirddeck/port) +"dJz" = ( +/obj/structure/cable/green{ + d1 = 1; + d2 = 4; + icon_state = "1-4" + }, +/obj/structure/cable/green{ + d1 = 2; + d2 = 4; + icon_state = "2-4" + }, +/obj/structure/cable/green{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/obj/machinery/atmospherics/pipe/manifold4w/hidden/scrubbers, +/obj/machinery/atmospherics/pipe/manifold4w/hidden/supply, +/turf/simulated/floor/tiled, +/area/hallway/primary/thirddeck/port) +"dJA" = ( +/obj/structure/cable/green{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/turf/simulated/floor/tiled, +/area/hallway/primary/thirddeck/port) +"dJB" = ( +/obj/structure/cable/green{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/turf/simulated/floor/tiled, +/area/hallway/primary/thirddeck/port) +"dJC" = ( +/obj/structure/cable/green{ + d1 = 1; + d2 = 4; + icon_state = "1-4" + }, +/obj/structure/cable/green{ + d1 = 1; + d2 = 8; + icon_state = "1-8" + }, +/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers, +/obj/machinery/atmospherics/pipe/manifold/hidden/supply, +/turf/simulated/floor/tiled, +/area/hallway/primary/thirddeck/port) +"dJD" = ( +/obj/structure/cable/green{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/obj/structure/cable/green{ + d1 = 2; + d2 = 8; + icon_state = "2-8" + }, +/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{ + dir = 1 + }, +/obj/machinery/atmospherics/pipe/manifold/hidden/supply{ + dir = 1 + }, +/turf/simulated/floor/tiled, +/area/hallway/primary/thirddeck/port) +"dJE" = ( +/obj/structure/cable/green{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/obj/machinery/light{ + dir = 4 + }, +/turf/simulated/floor/tiled, +/area/hallway/primary/thirddeck/port) +"dJF" = ( +/obj/structure/cable/green{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/obj/machinery/door/firedoor/border_only, +/obj/effect/wingrille_spawn/reinforced, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/turf/simulated/floor/plating, +/area/hallway/primary/thirddeck/port) +"dJG" = ( +/obj/structure/cable/green{ + d1 = 2; + d2 = 8; + icon_state = "2-8" + }, +/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/manifold/hidden/supply{ + dir = 4 + }, +/obj/machinery/light{ + dir = 8; + icon_state = "tube1"; + pixel_y = 0 + }, +/turf/simulated/floor/tiled, +/area/hallway/primary/thirddeck/central) +"dJH" = ( +/obj/structure/disposalpipe/segment, +/obj/effect/floor_decal/borderfloor{ + dir = 4 + }, +/obj/effect/floor_decal/corner/blue/border{ + dir = 4 + }, +/turf/simulated/floor/tiled, +/area/hallway/primary/thirddeck/central) +"dJI" = ( +/obj/structure/closet/emcloset, +/turf/simulated/floor/tiled/dark, +/area/hallway/primary/thirddeck/central) +"dJJ" = ( +/obj/effect/floor_decal/borderfloor{ + dir = 8 + }, +/obj/effect/floor_decal/corner/blue/border{ + dir = 8 + }, +/turf/simulated/floor/tiled, +/area/hallway/primary/thirddeck/central) +"dJK" = ( +/obj/structure/cable/green{ + d1 = 2; + d2 = 4; + icon_state = "2-4" + }, +/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{ + dir = 8 + }, +/obj/machinery/atmospherics/pipe/manifold/hidden/supply{ + dir = 8 + }, +/obj/machinery/light{ + dir = 4 + }, +/turf/simulated/floor/tiled, +/area/hallway/primary/thirddeck/central) +"dJL" = ( +/obj/structure/cable/green{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/obj/machinery/door/firedoor/border_only, +/obj/effect/wingrille_spawn/reinforced, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, +/turf/simulated/floor/plating, +/area/hallway/primary/thirddeck/starboard) +"dJM" = ( +/obj/structure/cable/green{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, +/obj/machinery/light{ + dir = 8; + icon_state = "tube1"; + pixel_y = 0 + }, +/turf/simulated/floor/tiled, +/area/hallway/primary/thirddeck/starboard) +"dJN" = ( +/obj/structure/cable/green{ + d1 = 1; + d2 = 8; + icon_state = "1-8" + }, +/obj/structure/cable/green{ + d1 = 2; + d2 = 8; + icon_state = "2-8" + }, +/obj/structure/cable/green{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/obj/machinery/atmospherics/pipe/manifold4w/hidden/scrubbers, +/obj/machinery/atmospherics/pipe/manifold4w/hidden/supply, +/turf/simulated/floor/tiled, +/area/hallway/primary/thirddeck/starboard) +"dJO" = ( +/obj/structure/cable/green{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, +/turf/simulated/floor/tiled, +/area/hallway/primary/thirddeck/starboard) +"dJP" = ( +/obj/structure/cable/green{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{ + dir = 1 + }, +/turf/simulated/floor/tiled, +/area/hallway/primary/thirddeck/starboard) +"dJQ" = ( +/obj/structure/cable/green{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/manifold/hidden/supply, +/turf/simulated/floor/tiled, +/area/hallway/primary/thirddeck/starboard) +"dJR" = ( +/obj/structure/cable/green{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/obj/structure/cable/green{ + d1 = 2; + d2 = 8; + icon_state = "2-8" + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, +/turf/simulated/floor/tiled, +/area/hallway/primary/thirddeck/starboard) +"dJS" = ( +/obj/structure/cable/green{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, +/obj/structure/flora/pottedplant/minitree, +/turf/simulated/floor/tiled, +/area/hallway/primary/thirddeck/starboard) +"dJT" = ( +/obj/structure/cable/green{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 9 + }, +/obj/machinery/camera/network/third_deck{ + c_tag = "Third Deck - Starboard Hallway Two"; + dir = 4 + }, +/turf/simulated/floor/tiled, +/area/hallway/primary/thirddeck/starboard) +"dJU" = ( +/obj/structure/cable/green{ + d1 = 2; + d2 = 8; + icon_state = "2-8" + }, +/obj/structure/cable/green{ + d1 = 1; + d2 = 8; + icon_state = "1-8" + }, +/obj/machinery/atmospherics/pipe/simple/hidden, +/obj/machinery/atmospherics/pipe/manifold4w/hidden/supply, +/turf/simulated/floor/tiled, +/area/hallway/primary/thirddeck/starboard) +"dJV" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 10 + }, +/obj/effect/floor_decal/industrial/warning{ + icon_state = "warning"; + dir = 4 + }, +/turf/simulated/floor/tiled, +/area/hallway/primary/thirddeck/starboard) +"dJW" = ( +/obj/effect/floor_decal/industrial/warning{ + dir = 10 + }, +/obj/machinery/light/small, +/obj/machinery/atmospherics/unary/vent_pump/high_volume{ + dir = 2; + frequency = 1379; + id_tag = "d3_starboard_pump" + }, +/turf/simulated/floor/tiled, +/area/hallway/primary/thirddeck/starboard) +"dJX" = ( +/obj/effect/floor_decal/industrial/warning{ + dir = 6 + }, +/obj/machinery/atmospherics/unary/vent_pump/high_volume{ + dir = 2; + frequency = 1379; + id_tag = "d3_starboard_pump" + }, +/obj/machinery/embedded_controller/radio/airlock/airlock_controller{ + frequency = 1379; + id_tag = "d3_starboard_airlock"; + pixel_x = 0; + pixel_y = -26; + req_access = list(18); + tag_airpump = "d3_starboard_pump"; + tag_chamber_sensor = "d3_starboard_sensor"; + tag_exterior_door = "d3_starboard_outer"; + tag_interior_door = "d3_starboard_inner" + }, +/turf/simulated/floor/tiled, +/area/hallway/primary/thirddeck/starboard) +"dJY" = ( +/obj/effect/floor_decal/industrial/warning{ + icon_state = "warning"; + dir = 8 + }, +/obj/machinery/access_button{ + command = "cycle_exterior"; + frequency = 1379; + master_tag = "d3_starboard_airlock"; + name = "exterior access button"; + pixel_x = -25; + pixel_y = -26; + req_access = list(18) + }, +/turf/simulated/floor/airless, +/area/hallway/primary/thirddeck/starboard) +"dJZ" = ( +/obj/machinery/atmospherics/pipe/simple/hidden{ + dir = 5; + icon_state = "intact" + }, +/turf/simulated/wall/r_wall, +/area/hallway/primary/thirddeck/port) +"dKa" = ( +/obj/machinery/atmospherics/pipe/manifold/hidden, +/turf/simulated/wall/r_wall, +/area/hallway/primary/thirddeck/port) +"dKb" = ( +/obj/structure/sign/deck/third, +/obj/machinery/atmospherics/pipe/simple/hidden{ + dir = 4 + }, +/turf/simulated/wall/r_wall, +/area/hallway/primary/thirddeck/port) +"dKc" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/effect/floor_decal/industrial/warning/corner{ + icon_state = "warningcorner"; + dir = 1 + }, +/obj/machinery/atmospherics/pipe/simple/hidden{ + dir = 4 + }, +/obj/machinery/light{ + dir = 8; + icon_state = "tube1"; + pixel_y = 0 + }, +/turf/simulated/floor/tiled, +/area/hallway/primary/thirddeck/port) +"dKd" = ( +/obj/structure/cable/green{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/obj/machinery/hologram/holopad, +/obj/effect/floor_decal/industrial/outline/grey, +/obj/machinery/atmospherics/pipe/manifold/hidden{ + dir = 4; + icon_state = "map" + }, +/turf/simulated/floor/tiled/monotile, +/area/hallway/primary/thirddeck/port) +"dKe" = ( +/obj/effect/floor_decal/steeldecal/steel_decals4{ + dir = 10 + }, +/obj/effect/floor_decal/steeldecal/steel_decals4, +/turf/simulated/floor/tiled, +/area/hallway/primary/thirddeck/port) +"dKf" = ( +/obj/effect/floor_decal/borderfloor/corner, +/obj/effect/floor_decal/corner/blue/bordercorner, +/turf/simulated/floor/tiled, +/area/hallway/primary/thirddeck/port) +"dKg" = ( +/obj/machinery/light, +/obj/effect/floor_decal/borderfloor, +/obj/effect/floor_decal/corner/blue/border, +/turf/simulated/floor/tiled, +/area/hallway/primary/thirddeck/port) +"dKh" = ( +/obj/machinery/atmospherics/unary/vent_pump/on{ + dir = 1 + }, +/obj/effect/floor_decal/borderfloor/corner{ + dir = 8 + }, +/obj/effect/floor_decal/corner/blue/bordercorner{ + dir = 8 + }, +/turf/simulated/floor/tiled, +/area/hallway/primary/thirddeck/port) +"dKi" = ( +/obj/structure/cable/green{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/obj/effect/floor_decal/steeldecal/steel_decals4{ + dir = 8 + }, +/obj/effect/floor_decal/steeldecal/steel_decals4{ + dir = 5 + }, +/turf/simulated/floor/tiled, +/area/hallway/primary/thirddeck/port) +"dKj" = ( +/obj/machinery/alarm{ + dir = 1; + icon_state = "alarm0"; + pixel_y = -22 + }, +/obj/effect/floor_decal/borderfloor, +/obj/effect/floor_decal/corner/blue/border, +/turf/simulated/floor/tiled, +/area/hallway/primary/thirddeck/port) +"dKk" = ( +/obj/effect/floor_decal/borderfloor/corner{ + dir = 8 + }, +/obj/effect/floor_decal/corner/blue/bordercorner{ + dir = 8 + }, +/obj/item/device/radio/intercom{ + name = "Station Intercom (General)"; + pixel_y = -21 + }, +/turf/simulated/floor/tiled, +/area/hallway/primary/thirddeck/port) +"dKl" = ( +/obj/structure/cable/green{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/obj/structure/cable/green{ + d1 = 1; + d2 = 4; + icon_state = "1-4" + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/effect/floor_decal/steeldecal/steel_decals4{ + dir = 1 + }, +/obj/effect/floor_decal/steeldecal/steel_decals4{ + dir = 6 + }, +/turf/simulated/floor/tiled, +/area/hallway/primary/thirddeck/central) +"dKm" = ( +/obj/structure/disposalpipe/segment, +/obj/structure/cable/green{ + d2 = 8; + icon_state = "0-8" + }, +/obj/machinery/power/apc{ + dir = 4; + name = "east bump"; + pixel_x = 24 + }, +/obj/effect/floor_decal/borderfloor{ + dir = 4 + }, +/obj/effect/floor_decal/corner/blue/border{ + dir = 4 + }, +/turf/simulated/floor/tiled, +/area/hallway/primary/thirddeck/central) +"dKn" = ( +/obj/machinery/alarm{ + dir = 4; + icon_state = "alarm0"; + pixel_x = -22; + pixel_y = 0 + }, +/obj/effect/floor_decal/borderfloor{ + dir = 8 + }, +/obj/effect/floor_decal/corner/blue/border{ + dir = 8 + }, +/turf/simulated/floor/tiled, +/area/hallway/primary/thirddeck/central) +"dKo" = ( +/obj/structure/cable/green{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/effect/floor_decal/steeldecal/steel_decals4{ + dir = 10 + }, +/obj/effect/floor_decal/steeldecal/steel_decals4, +/turf/simulated/floor/tiled, +/area/hallway/primary/thirddeck/central) +"dKp" = ( +/obj/structure/cable/green{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/effect/floor_decal/steeldecal/steel_decals4{ + dir = 8 + }, +/obj/effect/floor_decal/steeldecal/steel_decals4{ + dir = 5 + }, +/turf/simulated/floor/tiled, +/area/hallway/primary/thirddeck/starboard) +"dKq" = ( +/obj/effect/floor_decal/borderfloor/corner, +/obj/effect/floor_decal/corner/blue/bordercorner, +/obj/item/device/radio/intercom{ + name = "Station Intercom (General)"; + pixel_y = -21 + }, +/turf/simulated/floor/tiled, +/area/hallway/primary/thirddeck/starboard) +"dKr" = ( +/obj/machinery/firealarm{ + dir = 1; + pixel_y = -24 + }, +/obj/machinery/atmospherics/unary/vent_scrubber/on{ + dir = 1 + }, +/obj/effect/floor_decal/borderfloor, +/obj/effect/floor_decal/corner/blue/border, +/turf/simulated/floor/tiled, +/area/hallway/primary/thirddeck/starboard) +"dKs" = ( +/obj/effect/floor_decal/borderfloor/corner{ + dir = 8 + }, +/obj/effect/floor_decal/corner/blue/bordercorner{ + dir = 8 + }, +/turf/simulated/floor/tiled, +/area/hallway/primary/thirddeck/starboard) +"dKt" = ( +/obj/effect/floor_decal/borderfloor/corner, +/obj/effect/floor_decal/corner/blue/bordercorner, +/turf/simulated/floor/tiled, +/area/hallway/primary/thirddeck/starboard) +"dKu" = ( +/obj/machinery/power/apc{ + dir = 2; + name = "south bump"; + pixel_y = -24 + }, +/obj/structure/cable/green, +/obj/effect/floor_decal/borderfloor, +/obj/effect/floor_decal/corner/blue/border, +/turf/simulated/floor/tiled, +/area/hallway/primary/thirddeck/starboard) +"dKv" = ( +/obj/structure/cable/green{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/obj/machinery/hologram/holopad, +/obj/effect/floor_decal/industrial/outline/grey, +/obj/machinery/atmospherics/pipe/manifold/hidden{ + dir = 8; + icon_state = "map" + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/turf/simulated/floor/tiled/monotile, +/area/hallway/primary/thirddeck/starboard) +"dKw" = ( +/obj/machinery/firealarm{ + pixel_y = 24 + }, +/obj/effect/floor_decal/industrial/warning/corner, +/obj/machinery/atmospherics/pipe/simple/hidden{ + icon_state = "intact"; + dir = 4 + }, +/turf/simulated/floor/tiled, +/area/hallway/primary/thirddeck/starboard) +"dKx" = ( +/obj/structure/sign/deck/third, +/obj/machinery/atmospherics/pipe/simple/hidden{ + icon_state = "intact"; + dir = 4 + }, +/turf/simulated/wall/r_wall, +/area/hallway/primary/thirddeck/starboard) +"dKy" = ( +/obj/machinery/atmospherics/pipe/manifold/hidden, +/turf/simulated/wall/r_wall, +/area/hallway/primary/thirddeck/starboard) +"dKz" = ( +/obj/machinery/atmospherics/pipe/simple/hidden{ + dir = 9; + icon_state = "intact" + }, +/turf/simulated/wall/r_wall, +/area/hallway/primary/thirddeck/starboard) +"dKA" = ( +/turf/simulated/shuttle/wall, +/area/shuttle/escape_pod7/station) +"dKB" = ( +/turf/simulated/shuttle/wall/no_join{ + base_state = "orange"; + icon = 'icons/turf/shuttle_orange.dmi'; + icon_state = "orange" + }, +/area/shuttle/escape_pod7/station) +"dKC" = ( +/obj/structure/shuttle/engine/propulsion/burst{ + dir = 4 + }, +/turf/simulated/shuttle/wall, +/area/shuttle/escape_pod7/station) +"dKD" = ( +/turf/simulated/wall, +/area/hallway/primary/thirddeck/port) +"dKE" = ( +/obj/machinery/atmospherics/unary/vent_pump/on{ + dir = 1 + }, +/obj/effect/floor_decal/industrial/warning/corner{ + dir = 8 + }, +/turf/simulated/floor/tiled, +/area/hallway/primary/thirddeck/port) +"dKF" = ( +/obj/structure/cable/green{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/obj/machinery/atmospherics/pipe/simple/hidden, +/turf/simulated/floor/tiled, +/area/hallway/primary/thirddeck/port) +"dKG" = ( +/obj/machinery/alarm{ + dir = 8; + pixel_x = 25; + pixel_y = 0 + }, +/obj/effect/floor_decal/borderfloor/corner, +/obj/effect/floor_decal/corner/white/bordercorner, +/turf/simulated/floor/tiled, +/area/hallway/primary/thirddeck/port) +"dKH" = ( +/turf/simulated/wall/r_wall, +/area/crew_quarters/heads/sc/restroom) +"dKI" = ( +/turf/simulated/wall, +/area/crew_quarters/heads/sc/restroom) +"dKJ" = ( +/obj/machinery/door/firedoor/border_only, +/obj/structure/cable/green{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/obj/machinery/door/airlock/command{ + name = "Command Restroom"; + req_access = list(19) + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/turf/simulated/floor/tiled/steel_grid, +/area/crew_quarters/heads/sc/restroom) +"dKK" = ( +/turf/simulated/wall/r_wall, +/area/crew_quarters/heads/sc/chief/quarters) +"dKL" = ( +/turf/simulated/wall, +/area/crew_quarters/heads/sc/chief/quarters) +"dKM" = ( +/obj/machinery/door/firedoor/border_only, +/obj/structure/cable/green{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/obj/machinery/door/airlock/command{ + name = "Chief Engineer Quarters"; + req_access = list(56) + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/turf/simulated/floor/tiled/steel_grid, +/area/crew_quarters/heads/sc/chief/quarters) +"dKN" = ( +/obj/machinery/door/firedoor/border_only, +/obj/effect/wingrille_spawn/reinforced/polarized{ + id = "cequarters" + }, +/turf/simulated/floor/plating, +/area/crew_quarters/heads/sc/chief/quarters) +"dKO" = ( +/obj/machinery/status_display, +/turf/simulated/wall/r_wall, +/area/crew_quarters/heads/sc/chief/quarters) +"dKP" = ( +/obj/structure/cable/green{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/machinery/camera/network/third_deck{ + c_tag = "Third Deck - Central Port"; + dir = 4 + }, +/turf/simulated/floor/tiled, +/area/hallway/primary/thirddeck/central) +"dKQ" = ( +/obj/structure/table/glass, +/turf/simulated/floor/tiled/dark, +/area/hallway/primary/thirddeck/central) +"dKR" = ( +/obj/structure/cable/green{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/machinery/camera/network/third_deck{ + c_tag = "Third Deck - Central Starboard"; + dir = 8 + }, +/turf/simulated/floor/tiled, +/area/hallway/primary/thirddeck/central) +"dKS" = ( +/obj/machinery/ai_status_display, +/turf/simulated/wall/r_wall, +/area/crew_quarters/heads/sc/hos/quarters) +"dKT" = ( +/obj/machinery/door/firedoor/border_only, +/obj/effect/wingrille_spawn/reinforced/polarized{ + id = "hosquarters" + }, +/turf/simulated/floor/plating, +/area/crew_quarters/heads/sc/hos/quarters) +"dKU" = ( +/obj/machinery/door/firedoor/border_only, +/obj/structure/cable/green{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/obj/machinery/door/airlock/command{ + id_tag = null; + name = "Head of Security Quarters"; + req_access = list(58) + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/turf/simulated/floor/tiled/steel_grid, +/area/crew_quarters/heads/sc/hos/quarters) +"dKV" = ( +/turf/simulated/wall, +/area/crew_quarters/heads/sc/hos/quarters) +"dKW" = ( +/turf/simulated/wall/r_wall, +/area/crew_quarters/heads/sc/hos/quarters) +"dKX" = ( +/turf/simulated/wall, +/area/crew_quarters/heads/sc/bs) +"dKY" = ( +/obj/machinery/door/firedoor/border_only, +/obj/structure/cable/green{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/obj/machinery/door/airlock/command{ + name = "Secretary Quarters"; + req_access = list(19) + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/turf/simulated/floor/tiled/steel_grid, +/area/crew_quarters/heads/sc/bs) +"dKZ" = ( +/obj/machinery/door/firedoor/border_only, +/obj/effect/wingrille_spawn/reinforced/polarized{ + id = "bsquarters" + }, +/turf/simulated/floor/plating, +/area/crew_quarters/heads/sc/bs) +"dLa" = ( +/turf/simulated/wall/r_wall, +/area/crew_quarters/heads/sc/bs) +"dLb" = ( +/obj/machinery/alarm{ + dir = 4; + icon_state = "alarm0"; + pixel_x = -22; + pixel_y = 0 + }, +/obj/effect/floor_decal/borderfloor/corner{ + dir = 8 + }, +/obj/effect/floor_decal/corner/white/bordercorner{ + dir = 8 + }, +/turf/simulated/floor/tiled, +/area/hallway/primary/thirddeck/starboard) +"dLc" = ( +/obj/machinery/atmospherics/unary/vent_pump/on{ + dir = 1 + }, +/obj/effect/floor_decal/industrial/warning/corner, +/turf/simulated/floor/tiled, +/area/hallway/primary/thirddeck/starboard) +"dLd" = ( +/turf/simulated/wall, +/area/hallway/primary/thirddeck/starboard) +"dLe" = ( +/obj/structure/shuttle/engine/propulsion/burst{ + dir = 8 + }, +/turf/simulated/shuttle/wall, +/area/shuttle/escape_pod8/station) +"dLf" = ( +/turf/simulated/shuttle/wall, +/area/shuttle/escape_pod8/station) +"dLg" = ( +/turf/simulated/shuttle/wall/no_join{ + base_state = "orange"; + icon = 'icons/turf/shuttle_orange.dmi'; + icon_state = "orange" + }, +/area/shuttle/escape_pod8/station) +"dLh" = ( +/obj/structure/grille, +/obj/structure/window/reinforced/full, +/obj/structure/window/reinforced{ + dir = 1 + }, +/obj/structure/window/reinforced{ + dir = 8 + }, +/obj/structure/window/reinforced, +/obj/structure/window/reinforced{ + dir = 4; + health = 1e+006 + }, +/turf/simulated/shuttle/plating, +/area/shuttle/escape_pod7/station) +"dLi" = ( +/obj/structure/bed/chair{ + dir = 8 + }, +/obj/machinery/light{ + icon_state = "tube1"; + dir = 8 + }, +/obj/machinery/status_display{ + density = 0; + layer = 4; + pixel_x = 0; + pixel_y = 32 + }, +/obj/machinery/embedded_controller/radio/simple_docking_controller/escape_pod{ + frequency = 1380; + id_tag = "escape_pod_7"; + pixel_x = 0; + pixel_y = -25; + tag_door = "escape_pod_7_hatch" + }, +/turf/simulated/shuttle/floor, +/area/shuttle/escape_pod7/station) +"dLj" = ( +/obj/structure/bed/chair{ + dir = 8 + }, +/obj/item/device/radio/intercom{ + dir = 1; + name = "Station Intercom (General)"; + pixel_y = 21 + }, +/obj/structure/closet/walllocker/emerglocker{ + pixel_y = -32 + }, +/turf/simulated/shuttle/floor, +/area/shuttle/escape_pod7/station) +"dLk" = ( +/obj/structure/bed/chair{ + dir = 8 + }, +/obj/machinery/vending/wallmed1{ + name = "NanoMed Wall"; + pixel_x = 0; + pixel_y = -30 + }, +/turf/simulated/shuttle/floor, +/area/shuttle/escape_pod7/station) +"dLl" = ( +/obj/machinery/door/airlock/external{ + frequency = 1380; + icon_state = "door_locked"; + id_tag = "escape_pod_7_hatch"; + locked = 1; + name = "Escape Pod Hatch 7"; + req_access = list(13) + }, +/turf/simulated/shuttle/floor, +/area/shuttle/escape_pod7/station) +"dLm" = ( +/obj/machinery/door/airlock/glass_external{ + frequency = 1380; + icon_state = "door_locked"; + id_tag = "escape_pod_7_berth_hatch"; + locked = 1; + name = "Escape Pod 7"; + req_access = list(13) + }, +/turf/simulated/floor, +/area/hallway/primary/thirddeck/port) +"dLn" = ( +/obj/effect/floor_decal/industrial/warning{ + icon_state = "warning"; + dir = 8 + }, +/obj/machinery/embedded_controller/radio/simple_docking_controller/escape_pod_berth{ + frequency = 1380; + id_tag = "escape_pod_7_berth"; + pixel_x = -25; + pixel_y = 30; + tag_door = "escape_pod_7_berth_hatch" + }, +/turf/simulated/floor/tiled, +/area/hallway/primary/thirddeck/port) +"dLo" = ( +/obj/effect/floor_decal/borderfloor{ + dir = 4 + }, +/obj/effect/floor_decal/corner/red/border{ + dir = 4 + }, +/turf/simulated/floor/tiled, +/area/hallway/primary/thirddeck/port) +"dLp" = ( +/obj/machinery/recharge_station, +/obj/machinery/light/small{ + dir = 8 + }, +/turf/simulated/floor/tiled/freezer, +/area/crew_quarters/heads/sc/restroom) +"dLq" = ( +/obj/machinery/door/airlock{ + name = "Unit 1" + }, +/turf/simulated/floor/tiled/freezer, +/area/crew_quarters/heads/sc/restroom) +"dLr" = ( +/obj/structure/sink{ + pixel_y = 16 + }, +/obj/structure/mirror{ + pixel_x = 0; + pixel_y = 32 + }, +/turf/simulated/floor/tiled/freezer, +/area/crew_quarters/heads/sc/restroom) +"dLs" = ( +/obj/structure/cable/green{ + d1 = 1; + d2 = 4; + icon_state = "1-4" + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/obj/effect/floor_decal/steeldecal/steel_decals4{ + dir = 4 + }, +/obj/effect/floor_decal/steeldecal/steel_decals4{ + dir = 9 + }, +/turf/simulated/floor/tiled/freezer, +/area/crew_quarters/heads/sc/restroom) +"dLt" = ( +/obj/structure/table/standard, +/obj/machinery/power/apc{ + dir = 1; + name = "north bump"; + pixel_x = 0; + pixel_y = 24 + }, +/obj/structure/cable/green{ + d2 = 8; + icon_state = "0-8" + }, +/obj/machinery/light_switch{ + pixel_x = 11; + pixel_y = 24 + }, +/obj/item/device/radio/intercom{ + dir = 4; + name = "Station Intercom (General)"; + pixel_x = 21 + }, +/turf/simulated/floor/tiled/freezer, +/area/crew_quarters/heads/sc/restroom) +"dLu" = ( +/obj/structure/bed/padded, +/obj/item/weapon/bedsheet/ce, +/obj/machinery/firealarm{ + dir = 8; + pixel_x = -24 + }, +/turf/simulated/floor/carpet, +/area/crew_quarters/heads/sc/chief/quarters) +"dLv" = ( +/obj/structure/cable/green{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 5 + }, +/turf/simulated/floor/carpet, +/area/crew_quarters/heads/sc/chief/quarters) +"dLw" = ( +/obj/machinery/atmospherics/unary/vent_scrubber/on{ + dir = 8 + }, +/obj/machinery/alarm{ + dir = 8; + pixel_x = 22; + pixel_y = 0 + }, +/turf/simulated/floor/carpet, +/area/crew_quarters/heads/sc/chief/quarters) +"dLx" = ( +/obj/structure/cable/green{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{ + dir = 8 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/turf/simulated/floor/tiled, +/area/hallway/primary/thirddeck/central) +"dLy" = ( +/obj/structure/disposalpipe/segment, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, +/obj/effect/floor_decal/borderfloor{ + dir = 4 + }, +/obj/effect/floor_decal/corner/blue/border{ + dir = 4 + }, +/turf/simulated/floor/tiled, +/area/hallway/primary/thirddeck/central) +"dLz" = ( +/obj/machinery/atmospherics/unary/vent_scrubber/on{ + dir = 8 + }, +/obj/structure/flora/pottedplant/stoutbush, +/turf/simulated/floor/tiled/dark, +/area/hallway/primary/thirddeck/central) +"dLA" = ( +/obj/machinery/atmospherics/unary/vent_pump/on{ + dir = 4 + }, +/obj/structure/flora/pottedplant/fern, +/turf/simulated/floor/tiled/dark, +/area/hallway/primary/thirddeck/central) +"dLB" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/obj/effect/floor_decal/borderfloor{ + dir = 8 + }, +/obj/effect/floor_decal/corner/blue/border{ + dir = 8 + }, +/turf/simulated/floor/tiled, +/area/hallway/primary/thirddeck/central) +"dLC" = ( +/obj/structure/cable/green{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/obj/machinery/atmospherics/pipe/manifold/hidden/supply{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/turf/simulated/floor/tiled, +/area/hallway/primary/thirddeck/central) +"dLD" = ( +/obj/machinery/atmospherics/unary/vent_scrubber/on{ + dir = 4 + }, +/obj/machinery/alarm{ + dir = 4; + pixel_x = -22; + pixel_y = 0 + }, +/turf/simulated/floor/carpet, +/area/crew_quarters/heads/sc/hos/quarters) +"dLE" = ( +/obj/structure/cable/green{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 9 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/turf/simulated/floor/carpet, +/area/crew_quarters/heads/sc/hos/quarters) +"dLF" = ( +/obj/structure/bed/padded, +/obj/item/weapon/bedsheet/hos, +/obj/machinery/firealarm{ + dir = 4; + pixel_x = 24 + }, +/turf/simulated/floor/carpet, +/area/crew_quarters/heads/sc/hos/quarters) +"dLG" = ( +/obj/machinery/firealarm{ + dir = 8; + pixel_x = -24 + }, +/obj/structure/bed/double/padded, +/obj/item/weapon/bedsheet/bluedouble, +/turf/simulated/floor/carpet/blue, +/area/crew_quarters/heads/sc/bs) +"dLH" = ( +/obj/structure/cable/green{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 5 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/turf/simulated/floor/carpet/blue, +/area/crew_quarters/heads/sc/bs) +"dLI" = ( +/obj/machinery/atmospherics/unary/vent_scrubber/on{ + dir = 8 + }, +/obj/machinery/alarm{ + dir = 8; + pixel_x = 22; + pixel_y = 0 + }, +/turf/simulated/floor/carpet/blue, +/area/crew_quarters/heads/sc/bs) +"dLJ" = ( +/obj/effect/floor_decal/borderfloor{ + dir = 8 + }, +/obj/effect/floor_decal/corner/red/border{ + dir = 8 + }, +/turf/simulated/floor/tiled, +/area/hallway/primary/thirddeck/starboard) +"dLK" = ( +/obj/effect/floor_decal/industrial/warning{ + icon_state = "warning"; + dir = 4 + }, +/obj/machinery/embedded_controller/radio/simple_docking_controller/escape_pod_berth{ + frequency = 1380; + id_tag = "escape_pod_8_berth"; + pixel_x = 25; + pixel_y = 30; + tag_door = "escape_pod_8_berth_hatch" + }, +/turf/simulated/floor/tiled, +/area/hallway/primary/thirddeck/starboard) +"dLL" = ( +/obj/machinery/door/airlock/glass_external{ + frequency = 1380; + icon_state = "door_locked"; + id_tag = "escape_pod_8_berth_hatch"; + locked = 1; + name = "Escape Pod 8"; + req_access = list(13) + }, +/turf/simulated/floor, +/area/hallway/primary/thirddeck/starboard) +"dLM" = ( +/obj/machinery/door/airlock/external{ + frequency = 1380; + icon_state = "door_locked"; + id_tag = "escape_pod_8_hatch"; + locked = 1; + name = "Escape Pod Hatch 8"; + req_access = list(13) + }, +/turf/simulated/shuttle/floor, +/area/shuttle/escape_pod8/station) +"dLN" = ( +/obj/structure/bed/chair{ + dir = 4 + }, +/obj/machinery/vending/wallmed1{ + name = "NanoMed Wall"; + pixel_x = 0; + pixel_y = 30 + }, +/turf/simulated/shuttle/floor, +/area/shuttle/escape_pod8/station) +"dLO" = ( +/obj/structure/bed/chair{ + dir = 4 + }, +/obj/item/device/radio/intercom{ + name = "Station Intercom (General)"; + pixel_y = -21 + }, +/obj/structure/closet/walllocker/emerglocker{ + pixel_y = 32 + }, +/turf/simulated/shuttle/floor, +/area/shuttle/escape_pod8/station) +"dLP" = ( +/obj/structure/bed/chair{ + dir = 4 + }, +/obj/machinery/light{ + icon_state = "tube1"; + dir = 4 + }, +/obj/machinery/status_display{ + density = 0; + layer = 4; + pixel_x = 0; + pixel_y = -32 + }, +/obj/machinery/embedded_controller/radio/simple_docking_controller/escape_pod{ + frequency = 1380; + id_tag = "escape_pod_8"; + pixel_x = 0; + pixel_y = 25; + tag_door = "escape_pod_8_hatch" + }, +/turf/simulated/shuttle/floor, +/area/shuttle/escape_pod8/station) +"dLQ" = ( +/obj/structure/grille, +/obj/structure/window/reinforced/full, +/obj/structure/window/reinforced{ + dir = 1 + }, +/obj/structure/window/reinforced{ + dir = 8 + }, +/obj/structure/window/reinforced, +/obj/structure/window/reinforced{ + dir = 4; + health = 1e+006 + }, +/turf/simulated/shuttle/plating, +/area/shuttle/escape_pod8/station) +"dLR" = ( +/obj/structure/sign/warning/pods{ + dir = 8 + }, +/turf/simulated/wall, +/area/hallway/primary/thirddeck/port) +"dLS" = ( +/obj/effect/floor_decal/industrial/warning/corner{ + icon_state = "warningcorner"; + dir = 1 + }, +/turf/simulated/floor/tiled, +/area/hallway/primary/thirddeck/port) +"dLT" = ( +/obj/structure/cable/green{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/obj/machinery/atmospherics/pipe/simple/hidden, +/obj/effect/floor_decal/steeldecal/steel_decals4{ + dir = 8 + }, +/obj/effect/floor_decal/steeldecal/steel_decals4{ + dir = 5 + }, +/turf/simulated/floor/tiled, +/area/hallway/primary/thirddeck/port) +"dLU" = ( +/obj/structure/closet/emcloset, +/obj/effect/floor_decal/borderfloor{ + dir = 4 + }, +/obj/effect/floor_decal/corner/white/border{ + dir = 4 + }, +/turf/simulated/floor/tiled, +/area/hallway/primary/thirddeck/port) +"dLV" = ( +/obj/machinery/status_display, +/turf/simulated/wall/r_wall, +/area/crew_quarters/heads/sc/restroom) +"dLW" = ( +/obj/machinery/firealarm{ + dir = 8; + pixel_x = -24 + }, +/turf/simulated/floor/tiled/freezer, +/area/crew_quarters/heads/sc/restroom) +"dLX" = ( +/obj/machinery/atmospherics/unary/vent_scrubber/on{ + dir = 4 + }, +/turf/simulated/floor/tiled/freezer, +/area/crew_quarters/heads/sc/restroom) +"dLY" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 5 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 9 + }, +/turf/simulated/floor/tiled/freezer, +/area/crew_quarters/heads/sc/restroom) +"dLZ" = ( +/obj/machinery/light{ + dir = 4; + icon_state = "tube1" + }, +/obj/machinery/atmospherics/unary/vent_pump/on{ + dir = 8 + }, +/obj/machinery/computer/security/telescreen/entertainment{ + icon_state = "frame"; + pixel_x = 32; + pixel_y = 0 + }, +/turf/simulated/floor/tiled/freezer, +/area/crew_quarters/heads/sc/restroom) +"dMa" = ( +/obj/structure/table/standard, +/obj/machinery/light{ + icon_state = "tube1"; + dir = 8 + }, +/obj/item/weapon/paper_bin{ + pixel_x = -3; + pixel_y = 7 + }, +/obj/item/weapon/folder/yellow_ce, +/obj/item/weapon/pen/multi, +/obj/machinery/computer/security/telescreen/entertainment{ + icon_state = "frame"; + pixel_x = -32; + pixel_y = 0 + }, +/turf/simulated/floor/carpet, +/area/crew_quarters/heads/sc/chief/quarters) +"dMb" = ( +/obj/structure/bed/chair/office/dark, +/obj/structure/cable/green{ + d1 = 1; + d2 = 4; + icon_state = "1-4" + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/turf/simulated/floor/carpet, +/area/crew_quarters/heads/sc/chief/quarters) +"dMc" = ( +/obj/machinery/power/apc{ + dir = 4; + name = "east bump"; + pixel_x = 24 + }, +/obj/structure/cable/green{ + d2 = 8; + icon_state = "0-8" + }, +/obj/machinery/button/windowtint{ + id = "cequarters"; + pixel_x = 36; + pixel_y = 6 + }, +/obj/machinery/light_switch{ + pixel_x = 36; + pixel_y = -6 + }, +/turf/simulated/floor/carpet, +/area/crew_quarters/heads/sc/chief/quarters) +"dMd" = ( +/obj/structure/cable/green{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/turf/simulated/floor/tiled, +/area/hallway/primary/thirddeck/central) +"dMe" = ( +/obj/structure/disposalpipe/segment, +/obj/effect/floor_decal/borderfloor/corner{ + dir = 4 + }, +/obj/effect/floor_decal/corner/blue/bordercorner{ + dir = 4 + }, +/turf/simulated/floor/tiled, +/area/hallway/primary/thirddeck/central) +"dMf" = ( +/obj/structure/sign/directions/engineering{ + dir = 1; + pixel_y = 10 + }, +/obj/structure/sign/directions/cargo{ + dir = 1 + }, +/obj/structure/sign/directions/security{ + dir = 1; + pixel_y = -10 + }, +/turf/simulated/wall, +/area/hallway/primary/thirddeck/central) +"dMg" = ( +/obj/structure/sign/directions/bridge{ + dir = 2; + pixel_y = 10 + }, +/obj/structure/sign/directions/science{ + dir = 1 + }, +/obj/structure/sign/directions/medical{ + dir = 1; + pixel_y = -10 + }, +/turf/simulated/wall, +/area/hallway/primary/thirddeck/central) +"dMh" = ( +/obj/effect/floor_decal/borderfloorblack{ + dir = 9 + }, +/obj/effect/floor_decal/industrial/danger{ + dir = 9 + }, +/turf/simulated/floor/tiled/techfloor/grid, +/area/hallway/primary/thirddeck/central) +"dMi" = ( +/obj/effect/floor_decal/borderfloorblack{ + dir = 1 + }, +/obj/effect/floor_decal/industrial/danger{ + dir = 1 + }, +/turf/simulated/floor/tiled/techfloor/grid, +/area/hallway/primary/thirddeck/central) +"dMj" = ( +/obj/effect/floor_decal/borderfloorblack{ + dir = 5 + }, +/obj/effect/floor_decal/industrial/danger{ + dir = 5 + }, +/turf/simulated/floor/tiled/techfloor/grid, +/area/hallway/primary/thirddeck/central) +"dMk" = ( +/obj/structure/sign/directions/evac{ + dir = 1 + }, +/turf/simulated/wall/r_wall, +/area/hallway/primary/thirddeck/central) +"dMl" = ( +/obj/effect/floor_decal/borderfloor/corner{ + dir = 1 + }, +/obj/effect/floor_decal/corner/blue/bordercorner{ + dir = 1 + }, +/turf/simulated/floor/tiled, +/area/hallway/primary/thirddeck/central) +"dMm" = ( +/obj/machinery/power/apc{ + dir = 8; + name = "west bump"; + pixel_x = -24 + }, +/obj/structure/cable/green{ + d2 = 4; + icon_state = "0-4" + }, +/obj/machinery/light_switch{ + pixel_x = -36; + pixel_y = -6 + }, +/obj/machinery/button/windowtint{ + id = "hosquarters"; + pixel_x = -36; + pixel_y = 6 + }, +/turf/simulated/floor/carpet, +/area/crew_quarters/heads/sc/hos/quarters) +"dMn" = ( +/obj/structure/bed/chair/office/dark, +/obj/structure/cable/green{ + d1 = 1; + d2 = 8; + icon_state = "1-8" + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/turf/simulated/floor/carpet, +/area/crew_quarters/heads/sc/hos/quarters) +"dMo" = ( +/obj/structure/table/standard, +/obj/machinery/light{ + dir = 4; + icon_state = "tube1" + }, +/obj/item/weapon/paper_bin{ + pixel_x = -3; + pixel_y = 7 + }, +/obj/item/weapon/folder/red_hos, +/obj/item/weapon/pen/multi, +/obj/machinery/computer/security/telescreen/entertainment{ + icon_state = "frame"; + pixel_x = 32; + pixel_y = 0 + }, +/turf/simulated/floor/carpet, +/area/crew_quarters/heads/sc/hos/quarters) +"dMp" = ( +/obj/machinery/light{ + icon_state = "tube1"; + dir = 8 + }, +/obj/machinery/computer/security/telescreen/entertainment{ + icon_state = "frame"; + pixel_x = -32; + pixel_y = 0 + }, +/obj/structure/table/standard, +/obj/item/weapon/paper_bin{ + pixel_x = -3; + pixel_y = 7 + }, +/obj/item/weapon/folder/blue, +/obj/item/weapon/pen/multi, +/turf/simulated/floor/carpet/blue, +/area/crew_quarters/heads/sc/bs) +"dMq" = ( +/obj/structure/bed/chair/office/dark, +/obj/structure/cable/green{ + d1 = 1; + d2 = 4; + icon_state = "1-4" + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/turf/simulated/floor/carpet/blue, +/area/crew_quarters/heads/sc/bs) +"dMr" = ( +/obj/machinery/power/apc{ + dir = 4; + name = "east bump"; + pixel_x = 24 + }, +/obj/structure/cable/green{ + d2 = 8; + icon_state = "0-8" + }, +/obj/machinery/button/windowtint{ + id = "bsoffice"; + pixel_x = 36; + pixel_y = 6 + }, +/obj/machinery/light_switch{ + pixel_x = 36; + pixel_y = -6 + }, +/turf/simulated/floor/carpet/blue, +/area/crew_quarters/heads/sc/bs) +"dMs" = ( +/obj/machinery/status_display, +/turf/simulated/wall/r_wall, +/area/hallway/primary/thirddeck/starboard) +"dMt" = ( +/obj/structure/closet/emcloset, +/obj/effect/floor_decal/borderfloor{ + dir = 8 + }, +/obj/effect/floor_decal/corner/white/border{ + dir = 8 + }, +/turf/simulated/floor/tiled, +/area/hallway/primary/thirddeck/starboard) +"dMu" = ( +/obj/structure/cable/green{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/obj/machinery/atmospherics/pipe/simple/hidden, +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/effect/floor_decal/steeldecal/steel_decals4{ + dir = 8 + }, +/obj/effect/floor_decal/steeldecal/steel_decals4{ + dir = 5 + }, +/turf/simulated/floor/tiled, +/area/hallway/primary/thirddeck/starboard) +"dMv" = ( +/obj/effect/floor_decal/industrial/warning/corner{ + icon_state = "warningcorner"; + dir = 4 + }, +/turf/simulated/floor/tiled, +/area/hallway/primary/thirddeck/starboard) +"dMw" = ( +/obj/structure/sign/warning/pods{ + dir = 4 + }, +/turf/simulated/wall, +/area/hallway/primary/thirddeck/starboard) +"dMx" = ( +/turf/simulated/wall/r_wall, +/area/maintenance/thirddeck/aftport) +"dMy" = ( +/obj/machinery/door/firedoor/border_only, +/obj/structure/cable/green{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/obj/machinery/door/airlock/maintenance{ + name = "Maintenance Access"; + req_one_access = list(12,19) + }, +/obj/machinery/atmospherics/pipe/simple/hidden, +/turf/simulated/floor/plating, +/area/maintenance/thirddeck/aftport) +"dMz" = ( +/turf/simulated/wall, +/area/maintenance/thirddeck/aftport) +"dMA" = ( +/obj/structure/toilet{ + dir = 4 + }, +/obj/machinery/light/small{ + dir = 8 + }, +/turf/simulated/floor/tiled/freezer, +/area/crew_quarters/heads/sc/restroom) +"dMB" = ( +/obj/machinery/door/airlock{ + name = "Unit 2" + }, +/turf/simulated/floor/tiled/freezer, +/area/crew_quarters/heads/sc/restroom) +"dMC" = ( +/obj/machinery/alarm{ + dir = 1; + icon_state = "alarm0"; + pixel_y = -22 + }, +/turf/simulated/floor/tiled/freezer, +/area/crew_quarters/heads/sc/restroom) +"dMD" = ( +/obj/machinery/shower{ + dir = 1 + }, +/obj/structure/curtain/open/shower, +/turf/simulated/floor/tiled/freezer, +/area/crew_quarters/heads/sc/restroom) +"dME" = ( +/obj/structure/undies_wardrobe, +/obj/structure/window/basic{ + dir = 8 + }, +/turf/simulated/floor/tiled/freezer, +/area/crew_quarters/heads/sc/restroom) +"dMF" = ( +/obj/structure/table/standard, +/obj/item/device/flashlight/lamp/green, +/obj/item/device/radio/intercom{ + dir = 8; + name = "Station Intercom (General)"; + pixel_x = -21 + }, +/turf/simulated/floor/carpet, +/area/crew_quarters/heads/sc/chief/quarters) +"dMG" = ( +/obj/structure/table/standard, +/obj/machinery/atmospherics/unary/vent_pump/on{ + dir = 1 + }, +/turf/simulated/floor/carpet, +/area/crew_quarters/heads/sc/chief/quarters) +"dMH" = ( +/obj/structure/closet/secure_closet/engineering_chief_wardrobe, +/turf/simulated/floor/carpet, +/area/crew_quarters/heads/sc/chief/quarters) +"dMI" = ( +/obj/structure/cable/green{ + d1 = 1; + d2 = 4; + icon_state = "1-4" + }, +/obj/structure/cable/green{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/turf/simulated/floor/tiled, +/area/hallway/primary/thirddeck/central) +"dMJ" = ( +/obj/structure/disposalpipe/segment, +/obj/structure/cable/green{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/turf/simulated/floor/tiled, +/area/hallway/primary/thirddeck/central) +"dMK" = ( +/obj/structure/cable/green{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/obj/effect/floor_decal/borderfloor/corner{ + dir = 4 + }, +/obj/effect/floor_decal/corner/blue/bordercorner{ + dir = 4 + }, +/obj/item/device/radio/intercom{ + dir = 1; + name = "Station Intercom (General)"; + pixel_y = 21 + }, +/turf/simulated/floor/tiled, +/area/hallway/primary/thirddeck/central) +"dML" = ( +/obj/structure/cable/green{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/obj/machinery/atmospherics/unary/vent_pump/on, +/obj/machinery/light{ + dir = 1 + }, +/obj/effect/floor_decal/borderfloor{ + dir = 1 + }, +/obj/effect/floor_decal/corner/blue/border{ + dir = 1 + }, +/turf/simulated/floor/tiled, +/area/hallway/primary/thirddeck/central) +"dMM" = ( +/obj/structure/cable/green{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/obj/effect/floor_decal/borderfloor/corner{ + dir = 1 + }, +/obj/effect/floor_decal/corner/blue/bordercorner{ + dir = 1 + }, +/turf/simulated/floor/tiled, +/area/hallway/primary/thirddeck/central) +"dMN" = ( +/obj/structure/cable/green{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/turf/simulated/floor/tiled, +/area/hallway/primary/thirddeck/central) +"dMO" = ( +/obj/structure/cable/green{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/obj/effect/floor_decal/borderfloor/corner{ + dir = 4 + }, +/obj/effect/floor_decal/corner/blue/bordercorner{ + dir = 4 + }, +/turf/simulated/floor/tiled, +/area/hallway/primary/thirddeck/central) +"dMP" = ( +/obj/structure/cable/green{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/obj/machinery/atmospherics/unary/vent_scrubber/on, +/obj/machinery/light{ + dir = 1 + }, +/obj/effect/floor_decal/borderfloor{ + dir = 1 + }, +/obj/effect/floor_decal/corner/blue/border{ + dir = 1 + }, +/turf/simulated/floor/tiled, +/area/hallway/primary/thirddeck/central) +"dMQ" = ( +/obj/structure/cable/green{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/obj/effect/floor_decal/borderfloor/corner{ + dir = 1 + }, +/obj/effect/floor_decal/corner/blue/bordercorner{ + dir = 1 + }, +/obj/machinery/atm{ + pixel_y = 30 + }, +/turf/simulated/floor/tiled, +/area/hallway/primary/thirddeck/central) +"dMR" = ( +/obj/structure/cable/green{ + d1 = 1; + d2 = 8; + icon_state = "1-8" + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/turf/simulated/floor/tiled, +/area/hallway/primary/thirddeck/central) +"dMS" = ( +/obj/structure/closet/secure_closet/hos_wardrobe, +/turf/simulated/floor/carpet, +/area/crew_quarters/heads/sc/hos/quarters) +"dMT" = ( +/obj/structure/table/standard, +/obj/machinery/atmospherics/unary/vent_pump/on{ + dir = 1 + }, +/turf/simulated/floor/carpet, +/area/crew_quarters/heads/sc/hos/quarters) +"dMU" = ( +/obj/structure/table/standard, +/obj/item/device/flashlight/lamp/green, +/obj/item/device/radio/intercom{ + dir = 4; + name = "Station Intercom (General)"; + pixel_x = 21 + }, +/turf/simulated/floor/carpet, +/area/crew_quarters/heads/sc/hos/quarters) +"dMV" = ( +/obj/item/device/radio/intercom{ + dir = 8; + name = "Station Intercom (General)"; + pixel_x = -21 + }, +/obj/structure/table/standard, +/obj/item/device/flashlight/lamp/green, +/turf/simulated/floor/carpet/blue, +/area/crew_quarters/heads/sc/bs) +"dMW" = ( +/obj/structure/table/standard, +/obj/machinery/atmospherics/unary/vent_pump/on{ + dir = 1 + }, +/turf/simulated/floor/carpet/blue, +/area/crew_quarters/heads/sc/bs) +"dMX" = ( +/obj/structure/closet/lawcloset, +/turf/simulated/floor/carpet/blue, +/area/crew_quarters/heads/sc/bs) +"dMY" = ( +/turf/simulated/wall/r_wall, +/area/maintenance/thirddeck/aftstarboard) +"dMZ" = ( +/turf/simulated/wall, +/area/maintenance/thirddeck/aftstarboard) +"dNa" = ( +/obj/machinery/door/firedoor/border_only, +/obj/structure/cable/green{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/obj/machinery/door/airlock/maintenance{ + name = "Maintenance Access"; + req_one_access = list(12,19) + }, +/obj/machinery/atmospherics/pipe/simple/hidden, +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/turf/simulated/floor/plating, +/area/maintenance/thirddeck/aftstarboard) +"dNb" = ( +/obj/structure/cable/green{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/obj/machinery/atmospherics/pipe/simple/hidden, +/obj/structure/catwalk, +/turf/simulated/floor/plating, +/area/maintenance/thirddeck/aftport) +"dNc" = ( +/obj/structure/reagent_dispensers/fueltank, +/turf/simulated/floor/plating, +/area/maintenance/thirddeck/aftport) +"dNd" = ( +/obj/structure/cable/green{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/obj/machinery/atmospherics/pipe/manifold/hidden/supply{ + dir = 8 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/obj/effect/floor_decal/industrial/warning, +/turf/simulated/floor/tiled, +/area/hallway/primary/thirddeck/central) +"dNe" = ( +/obj/structure/disposalpipe/segment, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/obj/effect/floor_decal/industrial/warning, +/turf/simulated/floor/tiled, +/area/hallway/primary/thirddeck/central) +"dNf" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/obj/effect/floor_decal/industrial/warning/corner{ + dir = 8 + }, +/turf/simulated/floor/tiled, +/area/hallway/primary/thirddeck/central) +"dNg" = ( +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/machinery/station_map{ + dir = 1; + pixel_y = -32 + }, +/turf/simulated/floor/tiled, +/area/hallway/primary/seconddeck/fpcenter) +"dNh" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/turf/simulated/floor/tiled, +/area/hallway/primary/thirddeck/central) +"dNi" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 6 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 10 + }, +/turf/simulated/floor/tiled, +/area/hallway/primary/thirddeck/central) +"dNj" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, +/turf/simulated/floor/tiled, +/area/hallway/primary/thirddeck/central) +"dNk" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, +/obj/machinery/camera/network/third_deck{ + c_tag = "Third Deck - Central Aft"; + dir = 1 + }, +/turf/simulated/floor/tiled, +/area/hallway/primary/thirddeck/central) +"dNl" = ( +/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers, +/turf/simulated/floor/tiled, +/area/hallway/primary/thirddeck/central) +"dNm" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, +/obj/effect/floor_decal/industrial/warning/corner, +/turf/simulated/floor/tiled, +/area/hallway/primary/thirddeck/central) +"dNn" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, +/obj/effect/floor_decal/industrial/warning, +/turf/simulated/floor/tiled, +/area/hallway/primary/thirddeck/central) +"dNo" = ( +/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/effect/floor_decal/industrial/warning, +/turf/simulated/floor/tiled, +/area/hallway/primary/thirddeck/central) +"dNp" = ( +/obj/structure/closet, +/obj/item/weapon/storage/backpack, +/obj/random/maintenance/medical, +/obj/random/maintenance/medical, +/obj/random/maintenance/medical, +/obj/random/firstaid, +/turf/simulated/floor/plating, +/area/maintenance/thirddeck/aftstarboard) +"dNq" = ( +/obj/structure/cable/green{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/obj/machinery/atmospherics/pipe/simple/hidden, +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/structure/catwalk, +/turf/simulated/floor/plating, +/area/maintenance/thirddeck/aftstarboard) +"dNr" = ( +/obj/structure/cable/green{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/obj/machinery/atmospherics/pipe/simple/hidden, +/obj/machinery/light/small{ + dir = 8 + }, +/obj/structure/catwalk, +/turf/simulated/floor/plating, +/area/maintenance/thirddeck/aftport) +"dNs" = ( +/obj/structure/reagent_dispensers/watertank, +/turf/simulated/floor/plating, +/area/maintenance/thirddeck/aftport) +"dNt" = ( +/turf/simulated/wall/r_wall, +/area/bridge/meeting_room) +"dNu" = ( +/obj/structure/flora/pottedplant/largebush, +/turf/simulated/floor/wood, +/area/bridge/meeting_room) +"dNv" = ( +/obj/structure/extinguisher_cabinet{ + pixel_y = 30 + }, +/turf/simulated/floor/wood, +/area/bridge/meeting_room) +"dNw" = ( +/obj/machinery/light{ + dir = 1 + }, +/turf/simulated/floor/wood, +/area/bridge/meeting_room) +"dNx" = ( +/obj/machinery/alarm{ + pixel_y = 22 + }, +/turf/simulated/floor/wood, +/area/bridge/meeting_room) +"dNy" = ( +/turf/simulated/floor/wood, +/area/bridge/meeting_room) +"dNz" = ( +/obj/machinery/newscaster{ + pixel_y = 30 + }, +/turf/simulated/floor/wood, +/area/bridge/meeting_room) +"dNA" = ( +/obj/machinery/vending/coffee, +/obj/machinery/computer/security/telescreen/entertainment{ + icon_state = "frame"; + pixel_x = 32; + pixel_y = 0 + }, +/turf/simulated/floor/wood, +/area/bridge/meeting_room) +"dNB" = ( +/obj/machinery/door/blast/regular{ + density = 0; + dir = 1; + icon_state = "pdoor0"; + id = "bridge blast"; + name = "Bridge Blast Doors"; + opacity = 0 + }, +/obj/effect/floor_decal/industrial/hatch/yellow, +/obj/structure/cable/green{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/turf/simulated/floor/tiled, +/area/bridge) +"dNC" = ( +/obj/machinery/door/blast/regular{ + density = 0; + dir = 1; + icon_state = "pdoor0"; + id = "bridge blast"; + name = "Bridge Blast Doors"; + opacity = 0 + }, +/obj/effect/floor_decal/industrial/hatch/yellow, +/obj/structure/disposalpipe/segment, +/turf/simulated/floor/tiled, +/area/bridge) +"dND" = ( +/obj/structure/sign/warning/secure_area, +/turf/simulated/wall/r_wall, +/area/hallway/primary/thirddeck/central) +"dNE" = ( +/turf/simulated/wall, +/area/hallway/primary/thirddeck/central) +"dNF" = ( +/obj/structure/sign/deck/third, +/turf/simulated/wall, +/area/hallway/primary/thirddeck/central) +"dNG" = ( +/obj/machinery/door/firedoor/border_only, +/turf/simulated/floor/tiled, +/area/hallway/primary/thirddeck/central) +"dNH" = ( +/obj/machinery/door/firedoor/glass, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/turf/simulated/floor/tiled, +/area/hallway/primary/thirddeck/central) +"dNI" = ( +/obj/machinery/door/blast/regular{ + density = 0; + dir = 1; + icon_state = "pdoor0"; + id = "bridge blast"; + name = "Bridge Blast Doors"; + opacity = 0 + }, +/obj/effect/floor_decal/industrial/hatch/yellow, +/turf/simulated/floor/tiled, +/area/bridge) +"dNJ" = ( +/obj/machinery/door/blast/regular{ + density = 0; + dir = 1; + icon_state = "pdoor0"; + id = "bridge blast"; + name = "Bridge Blast Doors"; + opacity = 0 + }, +/obj/effect/floor_decal/industrial/hatch/yellow, +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/turf/simulated/floor/tiled, +/area/bridge) +"dNK" = ( +/turf/simulated/wall/r_wall, +/area/crew_quarters/heads/sc/sd) +"dNL" = ( +/obj/structure/table/wooden_reinforced, +/obj/machinery/atmospherics/unary/vent_pump/on, +/obj/machinery/computer/security/telescreen/entertainment{ + icon_state = "frame"; + pixel_x = -32; + pixel_y = 0 + }, +/obj/item/device/flashlight/lamp/green, +/turf/simulated/floor/carpet, +/area/crew_quarters/heads/sc/sd) +"dNM" = ( +/obj/structure/table/wooden_reinforced, +/obj/item/weapon/storage/photo_album{ + pixel_y = -10 + }, +/obj/item/device/camera, +/obj/machinery/firealarm{ + pixel_y = 24 + }, +/turf/simulated/floor/carpet, +/area/crew_quarters/heads/sc/sd) +"dNN" = ( +/obj/structure/bed/padded, +/obj/item/weapon/bedsheet/captain, +/turf/simulated/floor/carpet, +/area/crew_quarters/heads/sc/sd) +"dNO" = ( +/obj/structure/closet/wardrobe/captain{ + name = "station director's wardrobe" + }, +/obj/random/drinkbottle, +/obj/machinery/light{ + dir = 1 + }, +/turf/simulated/floor/carpet, +/area/crew_quarters/heads/sc/sd) +"dNP" = ( +/obj/structure/sink{ + pixel_y = 16 + }, +/obj/structure/mirror{ + pixel_x = 0; + pixel_y = 32 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 6 + }, +/turf/simulated/floor/tiled/freezer, +/area/crew_quarters/heads/sc/sd) +"dNQ" = ( +/obj/structure/table/standard, +/obj/machinery/atmospherics/unary/vent_scrubber/on{ + dir = 8 + }, +/obj/item/weapon/soap/deluxe, +/obj/item/weapon/towel{ + color = "#FFD700"; + name = "gold towel" + }, +/obj/machinery/alarm{ + pixel_y = 22 + }, +/turf/simulated/floor/tiled/freezer, +/area/crew_quarters/heads/sc/sd) +"dNR" = ( +/obj/structure/closet, +/obj/item/weapon/weldingtool, +/obj/effect/decal/cleanable/dirt, +/obj/random/maintenance/clean, +/obj/random/maintenance/engineering, +/obj/random/maintenance/engineering, +/turf/simulated/floor/plating, +/area/maintenance/thirddeck/aftstarboard) +"dNS" = ( +/obj/structure/cable/green{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/obj/machinery/light/small{ + dir = 4; + pixel_y = 0 + }, +/obj/machinery/atmospherics/pipe/simple/hidden, +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/structure/catwalk, +/turf/simulated/floor/plating, +/area/maintenance/thirddeck/aftstarboard) +"dNT" = ( +/turf/simulated/floor/plating, +/area/maintenance/thirddeck/aftport) +"dNU" = ( +/obj/machinery/button/remote/blast_door{ + id = "heads_meeting"; + name = "Security Shutters"; + pixel_x = -26; + pixel_y = 0 + }, +/turf/simulated/floor/wood, +/area/bridge/meeting_room) +"dNV" = ( +/obj/machinery/atmospherics/unary/vent_pump/on{ + dir = 4 + }, +/turf/simulated/floor/carpet, +/area/bridge/meeting_room) +"dNW" = ( +/obj/structure/bed/chair/comfy/blue, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/turf/simulated/floor/carpet, +/area/bridge/meeting_room) +"dNX" = ( +/obj/structure/bed/chair/comfy/blue, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 10 + }, +/turf/simulated/floor/carpet, +/area/bridge/meeting_room) +"dNY" = ( +/obj/structure/bed/chair/comfy/blue, +/turf/simulated/floor/carpet, +/area/bridge/meeting_room) +"dNZ" = ( +/turf/simulated/floor/carpet, +/area/bridge/meeting_room) +"dOa" = ( +/obj/machinery/power/apc{ + dir = 4; + name = "east bump"; + pixel_x = 24 + }, +/obj/machinery/light_switch{ + pixel_x = 36; + pixel_y = 0 + }, +/obj/structure/cable/green{ + d2 = 2; + icon_state = "0-2" + }, +/turf/simulated/floor/wood, +/area/bridge/meeting_room) +"dOb" = ( +/obj/machinery/door/firedoor/border_only, +/obj/structure/cable/green{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/obj/machinery/door/airlock/glass_command{ + name = "Bridge"; + req_access = list(19) + }, +/turf/simulated/floor/tiled/steel_grid, +/area/bridge) +"dOc" = ( +/obj/machinery/door/firedoor/border_only, +/obj/structure/disposalpipe/segment, +/obj/machinery/door/airlock/glass_command{ + name = "Bridge"; + req_access = list(19) + }, +/turf/simulated/floor/tiled/steel_grid, +/area/bridge) +"dOd" = ( +/obj/structure/railing{ + dir = 4 + }, +/turf/simulated/open, +/area/hallway/primary/thirddeck/central) +"dOe" = ( +/obj/effect/floor_decal/industrial/warning{ + dir = 8 + }, +/obj/machinery/light{ + dir = 1 + }, +/turf/simulated/floor/tiled, +/area/hallway/primary/thirddeck/central) +"dOf" = ( +/obj/machinery/alarm{ + pixel_y = 22 + }, +/turf/simulated/floor/tiled, +/area/hallway/primary/thirddeck/central) +"dOg" = ( +/obj/machinery/vending/snack, +/turf/simulated/floor/tiled, +/area/hallway/primary/thirddeck/central) +"dOh" = ( +/obj/machinery/door/firedoor/border_only, +/obj/machinery/door/airlock/glass_command{ + id_tag = "sbridgedoor"; + name = "Bridge"; + req_access = list(19) + }, +/turf/simulated/floor/tiled/steel_grid, +/area/bridge) +"dOi" = ( +/obj/machinery/door/firedoor/border_only, +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/obj/machinery/door/airlock/glass_command{ + id_tag = "sbridgedoor"; + name = "Bridge"; + req_access = list(19) + }, +/turf/simulated/floor/tiled/steel_grid, +/area/bridge) +"dOj" = ( +/obj/structure/table/wooden_reinforced, +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/item/weapon/storage/box/matches, +/obj/item/clothing/mask/smokable/cigarette/cigar, +/obj/item/weapon/reagent_containers/food/drinks/flask{ + pixel_x = 8 + }, +/obj/random_multi/single_item/captains_spare_id, +/obj/item/device/radio/intercom{ + dir = 8; + name = "Station Intercom (General)"; + pixel_x = -21 + }, +/turf/simulated/floor/carpet, +/area/crew_quarters/heads/sc/sd) +"dOk" = ( +/obj/structure/bed/chair/comfy/brown{ + dir = 8 + }, +/turf/simulated/floor/carpet, +/area/crew_quarters/heads/sc/sd) +"dOl" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 6 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 6 + }, +/turf/simulated/floor/carpet, +/area/crew_quarters/heads/sc/sd) +"dOm" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{ + dir = 1 + }, +/turf/simulated/floor/carpet, +/area/crew_quarters/heads/sc/sd) +"dOn" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, +/obj/machinery/door/firedoor/border_only, +/obj/machinery/door/airlock{ + name = "Bathroom" + }, +/turf/simulated/floor/tiled/steel_grid, +/area/crew_quarters/heads/sc/sd) +"dOo" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 9 + }, +/turf/simulated/floor/tiled/freezer, +/area/crew_quarters/heads/sc/sd) +"dOp" = ( +/obj/machinery/light/small{ + dir = 4 + }, +/obj/machinery/atmospherics/unary/vent_pump/on{ + dir = 8 + }, +/turf/simulated/floor/tiled/freezer, +/area/crew_quarters/heads/sc/sd) +"dOq" = ( +/obj/structure/closet/crate, +/obj/item/clothing/mask/gas, +/obj/item/device/flashlight, +/obj/item/device/flashlight, +/obj/effect/decal/cleanable/dirt, +/obj/random/maintenance/medical, +/obj/random/maintenance/medical, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 6 + }, +/turf/simulated/floor/plating, +/area/maintenance/thirddeck/aftstarboard) +"dOr" = ( +/obj/structure/cable/green{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/obj/machinery/atmospherics/pipe/simple/hidden, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 9; + pixel_y = 0 + }, +/obj/structure/catwalk, +/turf/simulated/floor/plating, +/area/maintenance/thirddeck/aftstarboard) +"dOs" = ( +/obj/structure/table/steel, +/obj/random/maintenance/engineering, +/turf/simulated/floor/plating, +/area/maintenance/thirddeck/aftport) +"dOt" = ( +/obj/machinery/door/firedoor/border_only, +/obj/effect/wingrille_spawn/reinforced, +/turf/simulated/floor/plating, +/area/maintenance/thirddeck/aftport) +"dOu" = ( +/obj/machinery/door/firedoor/border_only, +/obj/effect/wingrille_spawn/reinforced, +/obj/machinery/door/blast/shutters{ + density = 0; + dir = 8; + icon_state = "shutter0"; + id = "heads_meeting"; + name = "Meeting Room Window Shutters"; + opacity = 0 + }, +/obj/structure/cable/green{ + d2 = 2; + icon_state = "0-2" + }, +/obj/structure/cable/green, +/turf/simulated/floor/plating, +/area/bridge/meeting_room) +"dOv" = ( +/obj/structure/bed/chair/comfy/blue{ + dir = 4 + }, +/turf/simulated/floor/carpet, +/area/bridge/meeting_room) +"dOw" = ( +/obj/structure/table/wooden_reinforced, +/obj/item/weapon/folder/red, +/obj/item/weapon/folder/blue{ + pixel_x = -2; + pixel_y = -2 + }, +/turf/simulated/floor/carpet, +/area/bridge/meeting_room) +"dOx" = ( +/obj/structure/table/wooden_reinforced, +/obj/item/weapon/paper_bin{ + pixel_x = -3; + pixel_y = 7 + }, +/obj/item/weapon/pen, +/obj/effect/landmark{ + name = "blobstart" + }, +/obj/machinery/atmospherics/pipe/manifold/hidden/supply{ + dir = 8 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 6 + }, +/turf/simulated/floor/carpet, +/area/bridge/meeting_room) +"dOy" = ( +/obj/structure/table/wooden_reinforced, +/obj/item/weapon/book/codex/corp_regs, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, +/turf/simulated/floor/carpet, +/area/bridge/meeting_room) +"dOz" = ( +/obj/structure/bed/chair/comfy/blue{ + dir = 8 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{ + dir = 1 + }, +/turf/simulated/floor/carpet, +/area/bridge/meeting_room) +"dOA" = ( +/obj/structure/disposalpipe/segment{ + dir = 4; + icon_state = "pipe-c" + }, +/obj/structure/cable/green{ + d1 = 1; + d2 = 4; + icon_state = "1-4" + }, +/obj/structure/cable/green{ + d1 = 2; + d2 = 4; + icon_state = "2-4" + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, +/turf/simulated/floor/wood, +/area/bridge/meeting_room) +"dOB" = ( +/obj/machinery/door/firedoor/border_only, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/structure/cable/green{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, +/obj/machinery/door/airlock/command{ + name = "Conference Room"; + req_access = list(19) + }, +/turf/simulated/floor/tiled/steel_grid, +/area/bridge/meeting_room) +"dOC" = ( +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/structure/cable/green{ + d1 = 1; + d2 = 8; + icon_state = "1-8" + }, +/obj/structure/cable/green{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/obj/machinery/atmospherics/pipe/manifold4w/hidden/supply, +/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{ + dir = 4 + }, +/obj/effect/floor_decal/industrial/warning{ + icon_state = "warning"; + dir = 9 + }, +/turf/simulated/floor/tiled, +/area/bridge) +"dOD" = ( +/obj/structure/disposalpipe/junction{ + dir = 1; + icon_state = "pipe-j2" + }, +/obj/machinery/atmospherics/unary/vent_pump/on{ + dir = 8 + }, +/obj/effect/floor_decal/industrial/warning{ + dir = 5 + }, +/obj/machinery/light{ + dir = 4 + }, +/turf/simulated/floor/tiled, +/area/bridge) +"dOE" = ( +/obj/machinery/ai_status_display, +/turf/simulated/wall/r_wall, +/area/hallway/primary/thirddeck/central) +"dOF" = ( +/obj/effect/floor_decal/industrial/warning{ + dir = 8 + }, +/turf/simulated/floor/tiled, +/area/hallway/primary/thirddeck/central) +"dOG" = ( +/obj/machinery/atmospherics/unary/vent_scrubber/on{ + dir = 4 + }, +/turf/simulated/floor/tiled, +/area/hallway/primary/thirddeck/central) +"dOH" = ( +/obj/machinery/hologram/holopad, +/obj/effect/floor_decal/industrial/outline/grey, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 9 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 5 + }, +/turf/simulated/floor/tiled/monotile, +/area/hallway/primary/thirddeck/central) +"dOI" = ( +/obj/machinery/atmospherics/unary/vent_pump/on{ + dir = 8 + }, +/turf/simulated/floor/tiled, +/area/hallway/primary/thirddeck/central) +"dOJ" = ( +/obj/machinery/vending/cola, +/turf/simulated/floor/tiled, +/area/hallway/primary/thirddeck/central) +"dOK" = ( +/obj/machinery/status_display, +/turf/simulated/wall/r_wall, +/area/hallway/primary/thirddeck/central) +"dOL" = ( +/obj/machinery/atmospherics/unary/vent_pump/on{ + dir = 4 + }, +/obj/effect/floor_decal/industrial/warning{ + icon_state = "warning"; + dir = 9 + }, +/obj/machinery/light{ + dir = 8; + icon_state = "tube1"; + pixel_y = 0 + }, +/turf/simulated/floor/tiled, +/area/bridge) +"dOM" = ( +/obj/machinery/atmospherics/pipe/manifold4w/hidden/supply, +/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{ + dir = 8 + }, +/obj/effect/floor_decal/industrial/warning{ + dir = 5 + }, +/turf/simulated/floor/tiled, +/area/bridge) +"dON" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, +/turf/simulated/wall/r_wall, +/area/crew_quarters/heads/sc/sd) +"dOO" = ( +/obj/machinery/atmospherics/pipe/manifold/hidden/supply, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, +/obj/machinery/light, +/turf/simulated/floor/carpet, +/area/crew_quarters/heads/sc/sd) +"dOP" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, +/obj/machinery/alarm{ + dir = 1; + pixel_y = -22 + }, +/turf/simulated/floor/carpet, +/area/crew_quarters/heads/sc/sd) +"dOQ" = ( +/obj/machinery/atmospherics/pipe/manifold/hidden/supply{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{ + dir = 4 + }, +/turf/simulated/floor/carpet, +/area/crew_quarters/heads/sc/sd) +"dOR" = ( +/obj/structure/closet/secure_closet/captains{ + name = "station director's locker" + }, +/obj/machinery/atmospherics/unary/vent_scrubber/on{ + dir = 1 + }, +/turf/simulated/floor/carpet, +/area/crew_quarters/heads/sc/sd) +"dOS" = ( +/obj/structure/toilet{ + dir = 1 + }, +/turf/simulated/floor/tiled/freezer, +/area/crew_quarters/heads/sc/sd) +"dOT" = ( +/obj/machinery/shower{ + dir = 1 + }, +/obj/structure/curtain/open/shower, +/obj/structure/window/reinforced{ + dir = 8; + health = 1e+006 + }, +/obj/machinery/door/window/northright, +/obj/item/weapon/bikehorn/rubberducky, +/turf/simulated/floor/tiled/freezer, +/area/crew_quarters/heads/sc/sd) +"dOU" = ( +/obj/machinery/door/firedoor/border_only, +/obj/effect/wingrille_spawn/reinforced, +/turf/simulated/floor/plating, +/area/maintenance/thirddeck/aftstarboard) +"dOV" = ( +/obj/structure/closet/crate, +/obj/item/stack/cable_coil/random, +/obj/item/stack/cable_coil/random, +/obj/item/weapon/tool/crowbar, +/obj/item/weapon/tool/wirecutters, +/obj/random/maintenance/medical, +/obj/random/maintenance/medical, +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/turf/simulated/floor, +/area/maintenance/thirddeck/aftstarboard) +"dOW" = ( +/obj/structure/cable/green{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/obj/machinery/atmospherics/pipe/simple/hidden, +/obj/structure/catwalk, +/turf/simulated/floor/plating, +/area/maintenance/thirddeck/aftstarboard) +"dOX" = ( +/obj/machinery/power/apc{ + dir = 8; + name = "west bump"; + pixel_x = -24 + }, +/obj/structure/cable/green, +/obj/machinery/atmospherics/pipe/simple/hidden, +/obj/structure/catwalk, +/turf/simulated/floor/plating, +/area/maintenance/thirddeck/aftport) +"dOY" = ( +/obj/structure/table/steel, +/obj/random/tech_supply, +/turf/simulated/floor/plating, +/area/maintenance/thirddeck/aftport) +"dOZ" = ( +/obj/machinery/botany/extractor, +/obj/machinery/atmospherics/pipe/simple/hidden/yellow, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/turf/simulated/floor/tiled/hydro, +/area/rnd/xenobiology/xenoflora) +"dPa" = ( +/obj/structure/cable/green{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/turf/simulated/floor/wood, +/area/bridge/meeting_room) +"dPb" = ( +/obj/structure/cable/green{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/turf/simulated/floor/carpet, +/area/bridge/meeting_room) +"dPc" = ( +/obj/structure/bed/chair/comfy/blue{ + dir = 1 + }, +/obj/structure/cable/green{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/turf/simulated/floor/carpet, +/area/bridge/meeting_room) +"dPd" = ( +/obj/structure/bed/chair/comfy/blue{ + dir = 1 + }, +/obj/structure/cable/green{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/obj/structure/cable/green{ + d1 = 2; + d2 = 4; + icon_state = "2-4" + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/turf/simulated/floor/carpet, +/area/bridge/meeting_room) +"dPe" = ( +/obj/machinery/atmospherics/unary/vent_scrubber/on{ + dir = 1 + }, +/obj/structure/cable/green{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/turf/simulated/floor/carpet, +/area/bridge/meeting_room) +"dPf" = ( +/obj/structure/disposalpipe/segment, +/obj/structure/cable/green{ + d1 = 1; + d2 = 8; + icon_state = "1-8" + }, +/obj/machinery/camera/network/command{ + c_tag = "COM - Conference Room"; + dir = 8 + }, +/turf/simulated/floor/wood, +/area/bridge/meeting_room) +"dPg" = ( +/obj/structure/cable/green{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{ + dir = 8 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/effect/floor_decal/industrial/warning{ + dir = 10 + }, +/turf/simulated/floor/tiled, +/area/bridge) +"dPh" = ( +/obj/structure/disposalpipe/segment, +/obj/machinery/atmospherics/unary/vent_scrubber/on{ + dir = 8 + }, +/obj/effect/floor_decal/industrial/warning{ + dir = 6 + }, +/turf/simulated/floor/tiled, +/area/bridge) +"dPi" = ( +/obj/effect/floor_decal/industrial/warning{ + icon_state = "warning"; + dir = 1 + }, +/obj/machinery/firealarm{ + dir = 8; + pixel_x = -24 + }, +/obj/effect/floor_decal/borderfloor, +/obj/effect/floor_decal/corner/blue/border, +/turf/simulated/floor/tiled, +/area/hallway/primary/thirddeck/central) +"dPj" = ( +/obj/effect/floor_decal/industrial/warning/corner{ + icon_state = "warningcorner"; + dir = 1 + }, +/obj/effect/floor_decal/borderfloor, +/obj/effect/floor_decal/corner/blue/border, +/turf/simulated/floor/tiled, +/area/hallway/primary/thirddeck/central) +"dPk" = ( +/obj/machinery/camera/network/third_deck{ + c_tag = "Third Deck - Stairwell"; + dir = 1 + }, +/obj/effect/floor_decal/borderfloor/corner{ + dir = 8 + }, +/obj/effect/floor_decal/corner/blue/bordercorner{ + dir = 8 + }, +/turf/simulated/floor/tiled, +/area/hallway/primary/thirddeck/central) +"dPl" = ( +/obj/structure/disposalpipe/segment{ + dir = 4; + icon_state = "pipe-c" + }, +/turf/simulated/floor/tiled, +/area/hallway/primary/thirddeck/central) +"dPm" = ( +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/effect/floor_decal/borderfloor/corner, +/obj/effect/floor_decal/corner/blue/bordercorner, +/turf/simulated/floor/tiled, +/area/hallway/primary/thirddeck/central) +"dPn" = ( +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/machinery/light, +/obj/effect/floor_decal/borderfloor, +/obj/effect/floor_decal/corner/blue/border, +/turf/simulated/floor/tiled, +/area/hallway/primary/thirddeck/central) +"dPo" = ( +/obj/machinery/disposal, +/obj/structure/disposalpipe/trunk{ + dir = 8 + }, +/obj/item/device/radio/intercom{ + dir = 4; + name = "Station Intercom (General)"; + pixel_x = 21 + }, +/obj/effect/floor_decal/borderfloor, +/obj/effect/floor_decal/corner/blue/border, +/turf/simulated/floor/tiled, +/area/hallway/primary/thirddeck/central) +"dPp" = ( +/obj/machinery/atmospherics/unary/vent_scrubber/on{ + dir = 4 + }, +/obj/effect/floor_decal/industrial/warning{ + dir = 10 + }, +/turf/simulated/floor/tiled, +/area/bridge) +"dPq" = ( +/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/effect/floor_decal/industrial/warning{ + dir = 6 + }, +/turf/simulated/floor/tiled, +/area/bridge) +"dPr" = ( +/obj/machinery/door/firedoor/border_only, +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/obj/machinery/door/airlock/command{ + name = "Station Director's Quarters"; + req_access = list(20) + }, +/turf/simulated/floor/carpet, +/area/crew_quarters/heads/sc/sd) +"dPs" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/turf/simulated/floor/plating, +/area/maintenance/thirddeck/aftstarboard) +"dPt" = ( +/obj/machinery/power/apc{ + dir = 4; + name = "east bump"; + pixel_x = 24 + }, +/obj/structure/cable/green, +/obj/machinery/atmospherics/pipe/simple/hidden, +/obj/structure/catwalk, +/turf/simulated/floor/plating, +/area/maintenance/thirddeck/aftstarboard) +"dPu" = ( +/obj/machinery/atmospherics/pipe/simple/hidden, +/turf/simulated/floor/plating, +/area/maintenance/thirddeck/aftport) +"dPv" = ( +/obj/item/frame, +/turf/simulated/floor/plating, +/area/maintenance/thirddeck/aftport) +"dPw" = ( +/obj/machinery/door/firedoor/border_only, +/obj/effect/wingrille_spawn/reinforced, +/obj/machinery/door/blast/shutters{ + density = 0; + dir = 8; + icon_state = "shutter0"; + id = "heads_meeting"; + name = "Meeting Room Window Shutters"; + opacity = 0 + }, +/obj/structure/cable/green, +/turf/simulated/floor/plating, +/area/bridge/meeting_room) +"dPx" = ( +/obj/structure/table/wooden_reinforced, +/obj/item/weapon/storage/box/donut, +/turf/simulated/floor/wood, +/area/bridge/meeting_room) +"dPy" = ( +/obj/machinery/hologram/holopad, +/obj/structure/cable/green{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/turf/simulated/floor/wood, +/area/bridge/meeting_room) +"dPz" = ( +/obj/structure/disposalpipe/segment, +/obj/machinery/firealarm{ + dir = 4; + pixel_x = 24 + }, +/turf/simulated/floor/wood, +/area/bridge/meeting_room) +"dPA" = ( +/turf/simulated/wall/r_wall, +/area/bridge) +"dPB" = ( +/obj/machinery/door/firedoor/border_only, +/obj/structure/cable/green{ + d2 = 4; + icon_state = "0-4" + }, +/obj/machinery/door/blast/regular{ + density = 0; + dir = 4; + icon_state = "pdoor0"; + id = "bridge blast"; + name = "Bridge Blast Doors"; + opacity = 0 + }, +/obj/effect/wingrille_spawn/reinforced/polarized{ + id = "bridge_center" + }, +/turf/simulated/floor/plating, +/area/bridge) +"dPC" = ( +/obj/machinery/door/firedoor/glass, +/obj/structure/disposalpipe/segment, +/obj/structure/cable/green{ + d1 = 2; + d2 = 8; + icon_state = "2-8" + }, +/obj/structure/cable/green{ + d1 = 2; + d2 = 4; + icon_state = "2-4" + }, +/obj/machinery/door/blast/regular{ + density = 0; + dir = 4; + icon_state = "pdoor0"; + id = "bridge blast"; + name = "Bridge Blast Doors"; + opacity = 0 + }, +/obj/structure/cable/green{ + d2 = 2; + icon_state = "0-2" + }, +/obj/effect/wingrille_spawn/reinforced/polarized{ + id = "bridge_center" + }, +/turf/simulated/floor/plating, +/area/bridge) +"dPD" = ( +/obj/machinery/door/firedoor/border_only, +/obj/structure/cable/green{ + d2 = 8; + icon_state = "0-8" + }, +/obj/machinery/door/blast/regular{ + density = 0; + dir = 8; + icon_state = "pdoor0"; + id = "bridge blast"; + name = "Bridge Blast Doors"; + opacity = 0 + }, +/obj/effect/wingrille_spawn/reinforced/polarized{ + id = "bridge_center" + }, +/turf/simulated/floor/plating, +/area/bridge) +"dPE" = ( +/obj/structure/displaycase, +/turf/simulated/floor/wood, +/area/crew_quarters/heads/sc/sd) +"dPF" = ( +/obj/machinery/keycard_auth{ + pixel_x = 0; + pixel_y = 24 + }, +/turf/simulated/floor/wood, +/area/crew_quarters/heads/sc/sd) +"dPG" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/turf/simulated/floor/wood, +/area/crew_quarters/heads/sc/sd) +"dPH" = ( +/obj/structure/cable/green{ + d2 = 2; + icon_state = "0-2" + }, +/obj/machinery/power/apc{ + dir = 1; + name = "north bump"; + pixel_x = 0; + pixel_y = 24 + }, +/obj/machinery/light_switch{ + pixel_x = 11; + pixel_y = 24 + }, +/obj/machinery/camera/network/command{ + c_tag = "COM - Station Director's Office"; + dir = 2 + }, +/turf/simulated/floor/wood, +/area/crew_quarters/heads/sc/sd) +"dPI" = ( +/obj/structure/table/wooden_reinforced, +/obj/machinery/photocopier/faxmachine{ + department = "Captain's Office" + }, +/obj/item/device/radio/intercom{ + dir = 1; + name = "Station Intercom (General)"; + pixel_y = 21 + }, +/turf/simulated/floor/wood, +/area/crew_quarters/heads/sc/sd) +"dPJ" = ( +/obj/machinery/computer/card, +/obj/random_multi/single_item/captains_spare_id, +/obj/machinery/light{ + dir = 1 + }, +/turf/simulated/floor/wood, +/area/crew_quarters/heads/sc/sd) +"dPK" = ( +/obj/machinery/computer/communications, +/turf/simulated/floor/wood, +/area/crew_quarters/heads/sc/sd) +"dPL" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/machinery/meter, +/turf/simulated/floor/plating, +/area/maintenance/thirddeck/aftstarboard) +"dPM" = ( +/obj/machinery/atmospherics/pipe/simple/hidden, +/turf/simulated/floor/plating, +/area/maintenance/thirddeck/aftstarboard) +"dPN" = ( +/obj/structure/cable/yellow{ + d2 = 4; + icon_state = "0-4" + }, +/obj/machinery/power/solar{ + id = "aftportsolar"; + name = "Port Solar Array" + }, +/turf/simulated/floor/airless{ + icon_state = "solarpanel" + }, +/area/solar/aftportsolar) +"dPO" = ( +/obj/structure/cable/yellow{ + d1 = 2; + d2 = 4; + icon_state = "2-4" + }, +/obj/structure/cable/yellow{ + d1 = 2; + d2 = 8; + icon_state = "2-8" + }, +/obj/structure/catwalk, +/turf/simulated/floor/airless, +/area/solar/aftportsolar) +"dPP" = ( +/obj/structure/cable/yellow{ + d2 = 8; + icon_state = "0-8" + }, +/obj/machinery/power/solar{ + id = "aftportsolar"; + name = "Port Solar Array" + }, +/turf/simulated/floor/airless{ + icon_state = "solarpanel" + }, +/area/solar/aftportsolar) +"dPQ" = ( +/obj/machinery/portable_atmospherics/powered/pump/filled, +/turf/simulated/floor/plating, +/area/maintenance/thirddeck/aftport) +"dPR" = ( +/obj/structure/sign/warning/high_voltage, +/turf/simulated/wall/r_wall, +/area/bridge/meeting_room) +"dPS" = ( +/obj/structure/table/wooden_reinforced, +/obj/item/weapon/hand_labeler, +/obj/item/device/retail_scanner/command, +/obj/item/device/radio/intercom{ + name = "Station Intercom (General)"; + pixel_y = -21 + }, +/turf/simulated/floor/wood, +/area/bridge/meeting_room) +"dPT" = ( +/obj/structure/table/wooden_reinforced, +/obj/machinery/recharger{ + pixel_y = 0 + }, +/turf/simulated/floor/wood, +/area/bridge/meeting_room) +"dPU" = ( +/obj/structure/cable/green{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/turf/simulated/floor/wood, +/area/bridge/meeting_room) +"dPV" = ( +/obj/machinery/light, +/turf/simulated/floor/wood, +/area/bridge/meeting_room) +"dPW" = ( +/obj/machinery/papershredder, +/turf/simulated/floor/wood, +/area/bridge/meeting_room) +"dPX" = ( +/obj/machinery/disposal, +/obj/structure/disposalpipe/trunk{ + dir = 1 + }, +/turf/simulated/floor/wood, +/area/bridge/meeting_room) +"dPY" = ( +/obj/machinery/status_display, +/turf/simulated/wall/r_wall, +/area/bridge/meeting_room) +"dPZ" = ( +/obj/structure/cable/green{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/obj/effect/floor_decal/industrial/warning{ + icon_state = "warning"; + dir = 1 + }, +/turf/simulated/floor/tiled, +/area/bridge) +"dQa" = ( +/obj/structure/disposalpipe/segment, +/obj/effect/floor_decal/industrial/warning{ + icon_state = "warning"; + dir = 1 + }, +/turf/simulated/floor/tiled, +/area/bridge) +"dQb" = ( +/obj/item/device/radio/intercom{ + dir = 1; + name = "Station Intercom (General)"; + pixel_y = 21 + }, +/obj/machinery/camera/network/command{ + c_tag = "COM - Bridge Port"; + dir = 6 + }, +/obj/machinery/light{ + dir = 1 + }, +/obj/structure/window/reinforced{ + dir = 8 + }, +/obj/structure/closet/secure_closet/guncabinet/sidearm{ + anchored = 1 + }, +/obj/effect/floor_decal/borderfloor{ + dir = 1 + }, +/obj/effect/floor_decal/corner/blue/border{ + dir = 1 + }, +/turf/simulated/floor/tiled, +/area/bridge) +"dQc" = ( +/obj/structure/noticeboard{ + pixel_y = 27 + }, +/obj/effect/floor_decal/borderfloor{ + dir = 1 + }, +/obj/effect/floor_decal/corner/blue/border{ + dir = 1 + }, +/turf/simulated/floor/tiled, +/area/bridge) +"dQd" = ( +/obj/effect/floor_decal/borderfloor{ + dir = 1 + }, +/obj/effect/floor_decal/corner/blue/border{ + dir = 1 + }, +/obj/structure/closet/medical_wall{ + pixel_x = 0; + pixel_y = 31 + }, +/obj/item/roller, +/obj/item/bodybag/cryobag, +/obj/item/weapon/storage/firstaid/regular, +/obj/item/weapon/storage/pill_bottle/spaceacillin, +/turf/simulated/floor/tiled, +/area/bridge) +"dQe" = ( +/obj/effect/floor_decal/borderfloor/corner{ + dir = 1 + }, +/obj/effect/floor_decal/corner/blue/bordercorner{ + dir = 1 + }, +/turf/simulated/floor/tiled, +/area/bridge) +"dQf" = ( +/obj/structure/disposalpipe/segment, +/obj/structure/cable/green{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/turf/simulated/floor/tiled, +/area/bridge) +"dQg" = ( +/obj/effect/floor_decal/borderfloor/corner{ + dir = 4 + }, +/obj/effect/floor_decal/corner/blue/bordercorner{ + dir = 4 + }, +/turf/simulated/floor/tiled, +/area/bridge) +"dQh" = ( +/obj/effect/floor_decal/borderfloor{ + dir = 1 + }, +/obj/effect/floor_decal/corner/blue/border{ + dir = 1 + }, +/obj/structure/closet/secure_closet/medical_wall{ + name = "defibrillator closet"; + pixel_y = 31 + }, +/obj/item/device/defib_kit/loaded, +/turf/simulated/floor/tiled, +/area/bridge) +"dQi" = ( +/obj/structure/closet/fireaxecabinet{ + pixel_y = 32 + }, +/obj/effect/floor_decal/borderfloor{ + dir = 1 + }, +/obj/effect/floor_decal/corner/blue/border{ + dir = 1 + }, +/turf/simulated/floor/tiled, +/area/bridge) +"dQj" = ( +/obj/item/device/radio/intercom{ + dir = 1; + name = "Station Intercom (General)"; + pixel_y = 21 + }, +/obj/machinery/camera/network/command{ + c_tag = "COM - Bridge Starboard" + }, +/obj/machinery/light{ + dir = 1 + }, +/obj/structure/window/reinforced{ + dir = 4 + }, +/obj/structure/closet/emcloset, +/obj/effect/floor_decal/borderfloor{ + dir = 1 + }, +/obj/effect/floor_decal/corner/blue/border{ + dir = 1 + }, +/turf/simulated/floor/tiled, +/area/bridge) +"dQk" = ( +/obj/effect/floor_decal/industrial/warning{ + icon_state = "warning"; + dir = 1 + }, +/turf/simulated/floor/tiled, +/area/bridge) +"dQl" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/obj/effect/floor_decal/industrial/warning{ + icon_state = "warning"; + dir = 1 + }, +/turf/simulated/floor/tiled, +/area/bridge) +"dQm" = ( +/obj/machinery/ai_status_display, +/turf/simulated/wall/r_wall, +/area/crew_quarters/heads/sc/sd) +"dQn" = ( +/obj/structure/filingcabinet, +/turf/simulated/floor/wood, +/area/crew_quarters/heads/sc/sd) +"dQo" = ( +/obj/machinery/atmospherics/unary/vent_pump/on{ + dir = 4 + }, +/turf/simulated/floor/wood, +/area/crew_quarters/heads/sc/sd) +"dQp" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 9; + pixel_y = 0 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/turf/simulated/floor/wood, +/area/crew_quarters/heads/sc/sd) +"dQq" = ( +/obj/structure/cable/green{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/turf/simulated/floor/wood, +/area/crew_quarters/heads/sc/sd) +"dQr" = ( +/turf/simulated/floor/wood, +/area/crew_quarters/heads/sc/sd) +"dQs" = ( +/obj/structure/bed/chair/office/dark, +/obj/effect/landmark/start{ + name = "Colony Director" + }, +/obj/machinery/button/remote/airlock{ + desc = "A remote control switch for the Starboard Bridge Doors."; + id = "sbridgedoor"; + name = "Starboard Bridge Door Control"; + pixel_x = 30; + pixel_y = -6 + }, +/obj/machinery/button/remote/airlock{ + desc = "A remote control switch for the captain's office."; + id = "captaindoor"; + name = "Office Door Control"; + pixel_x = 30; + pixel_y = 6 + }, +/turf/simulated/floor/wood, +/area/crew_quarters/heads/sc/sd) +"dQt" = ( +/obj/structure/table/wooden_reinforced, +/obj/machinery/requests_console{ + announcementConsole = 1; + department = "Station Director's Desk"; + departmentType = 5; + name = "Station Administrator RC"; + pixel_x = 30; + pixel_y = 0 + }, +/turf/simulated/floor/wood, +/area/crew_quarters/heads/sc/sd) +"dQu" = ( +/obj/structure/table/rack{ + dir = 4 + }, +/obj/item/clothing/mask/gas, +/obj/random/maintenance/engineering, +/obj/random/maintenance/clean, +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/turf/simulated/floor/plating, +/area/maintenance/thirddeck/aftstarboard) +"dQv" = ( +/obj/structure/cable/yellow{ + d2 = 4; + icon_state = "0-4" + }, +/obj/machinery/power/solar{ + id = "aftstarboardsolar"; + name = "Starboard Solar Array" + }, +/turf/simulated/floor/airless{ + icon_state = "solarpanel" + }, +/area/solar/aftstarboardsolar) +"dQw" = ( +/obj/structure/cable/yellow{ + d1 = 2; + d2 = 4; + icon_state = "2-4" + }, +/obj/structure/cable/yellow{ + d1 = 2; + d2 = 8; + icon_state = "2-8" + }, +/obj/structure/catwalk, +/turf/simulated/floor/airless, +/area/solar/aftstarboardsolar) +"dQx" = ( +/obj/structure/cable/yellow{ + d2 = 8; + icon_state = "0-8" + }, +/obj/machinery/power/solar{ + id = "aftstarboardsolar"; + name = "Starboard Solar Array" + }, +/turf/simulated/floor/airless{ + icon_state = "solarpanel" + }, +/area/solar/aftstarboardsolar) +"dQy" = ( +/obj/structure/cable/yellow{ + d1 = 2; + d2 = 4; + icon_state = "2-4" + }, +/obj/structure/cable/yellow{ + d1 = 2; + d2 = 8; + icon_state = "2-8" + }, +/obj/structure/cable/yellow{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/obj/structure/catwalk, +/turf/simulated/floor/airless, +/area/solar/aftportsolar) +"dQz" = ( +/obj/machinery/alarm{ + dir = 8; + icon_state = "alarm0"; + pixel_x = 22 + }, +/obj/machinery/space_heater, +/turf/simulated/floor/plating, +/area/maintenance/thirddeck/aftport) +"dQA" = ( +/obj/machinery/door/firedoor/border_only, +/obj/effect/wingrille_spawn/reinforced, +/turf/simulated/floor/plating, +/area/bridge/meeting_room) +"dQB" = ( +/obj/machinery/door/firedoor/glass, +/obj/effect/wingrille_spawn/reinforced, +/turf/simulated/floor/plating, +/area/bridge/meeting_room) +"dQC" = ( +/obj/machinery/door/firedoor/border_only, +/obj/structure/cable/green{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/obj/machinery/door/airlock/command{ + name = "Conference Room"; + req_access = list(19) + }, +/turf/simulated/floor/wood, +/area/bridge/meeting_room) +"dQD" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/obj/structure/cable/green{ + d1 = 1; + d2 = 4; + icon_state = "1-4" + }, +/obj/structure/cable/green{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/turf/simulated/floor/tiled, +/area/bridge) +"dQE" = ( +/obj/structure/disposalpipe/segment{ + dir = 1; + icon_state = "pipe-c" + }, +/obj/structure/cable/green{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/turf/simulated/floor/tiled, +/area/bridge) +"dQF" = ( +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/structure/cable/green{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/obj/structure/cable/green{ + d1 = 2; + d2 = 8; + icon_state = "2-8" + }, +/turf/simulated/floor/tiled, +/area/bridge) +"dQG" = ( +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/structure/cable/green{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/turf/simulated/floor/tiled, +/area/bridge) +"dQH" = ( +/obj/structure/bed/chair, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/structure/cable/green{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/turf/simulated/floor/tiled, +/area/bridge) +"dQI" = ( +/obj/structure/disposalpipe/junction{ + dir = 8 + }, +/obj/structure/cable/green{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/obj/structure/cable/green{ + d1 = 2; + d2 = 8; + icon_state = "2-8" + }, +/obj/structure/cable/green{ + d1 = 1; + d2 = 8; + icon_state = "1-8" + }, +/turf/simulated/floor/tiled, +/area/bridge) +"dQJ" = ( +/obj/structure/disposalpipe/segment{ + dir = 2; + icon_state = "pipe-c" + }, +/obj/structure/cable/green{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/turf/simulated/floor/tiled, +/area/bridge) +"dQK" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/obj/structure/cable/green{ + d1 = 2; + d2 = 8; + icon_state = "2-8" + }, +/turf/simulated/floor/tiled, +/area/bridge) +"dQL" = ( +/obj/structure/table/rack, +/obj/structure/window/reinforced, +/obj/item/weapon/tank/jetpack/oxygen, +/obj/item/clothing/mask/gas, +/obj/item/clothing/suit/armor/captain, +/obj/item/clothing/head/helmet/space/capspace, +/obj/structure/window/basic{ + dir = 1 + }, +/obj/structure/window/reinforced{ + dir = 8; + health = 1e+006 + }, +/obj/structure/window/reinforced{ + dir = 4 + }, +/turf/simulated/floor/wood, +/area/crew_quarters/heads/sc/sd) +"dQM" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/obj/machinery/door/window/southleft{ + name = "Director's Desk Door"; + req_access = list(20) + }, +/turf/simulated/floor/wood, +/area/crew_quarters/heads/sc/sd) +"dQN" = ( +/obj/structure/table/wooden_reinforced, +/obj/structure/cable/green{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/obj/item/weapon/paper_bin{ + pixel_x = -3; + pixel_y = 7 + }, +/obj/item/weapon/folder/blue, +/obj/item/device/megaphone, +/obj/item/weapon/pen/multi, +/turf/simulated/floor/wood, +/area/crew_quarters/heads/sc/sd) +"dQO" = ( +/obj/structure/table/wooden_reinforced, +/obj/machinery/computer/skills, +/turf/simulated/floor/wood, +/area/crew_quarters/heads/sc/sd) +"dQP" = ( +/obj/structure/table/wooden_reinforced, +/obj/item/weapon/folder/blue_captain, +/obj/item/weapon/stamp/denied{ + pixel_x = -2; + pixel_y = -2 + }, +/obj/item/weapon/stamp/captain, +/turf/simulated/floor/wood, +/area/crew_quarters/heads/sc/sd) +"dQQ" = ( +/obj/structure/table/wooden_reinforced, +/obj/item/device/flashlight/lamp/green, +/obj/machinery/newscaster/security_unit{ + pixel_x = 32; + pixel_y = 0 + }, +/turf/simulated/floor/wood, +/area/crew_quarters/heads/sc/sd) +"dQR" = ( +/obj/machinery/alarm{ + dir = 4; + pixel_x = -22; + pixel_y = 0 + }, +/obj/machinery/atmospherics/pipe/simple/visible/universal, +/turf/simulated/floor/plating, +/area/maintenance/thirddeck/aftstarboard) +"dQS" = ( +/obj/structure/cable/yellow{ + d1 = 2; + d2 = 4; + icon_state = "2-4" + }, +/obj/structure/cable/yellow{ + d1 = 2; + d2 = 8; + icon_state = "2-8" + }, +/obj/structure/cable/yellow{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/obj/structure/catwalk, +/turf/simulated/floor/airless, +/area/solar/aftstarboardsolar) +"dQT" = ( +/obj/structure/closet/emcloset, +/turf/simulated/floor/plating, +/area/maintenance/thirddeck/aftport) +"dQU" = ( +/obj/structure/closet, +/obj/item/weapon/storage/backpack, +/obj/random/maintenance/clean, +/obj/random/maintenance/cargo, +/obj/random/maintenance/clean, +/obj/random/drinkbottle, +/turf/simulated/floor/plating, +/area/maintenance/thirddeck/aftport) +"dQV" = ( +/obj/structure/flora/pottedplant{ + icon_state = "plant-01"; + pixel_y = 10 + }, +/obj/structure/table/woodentable, +/obj/machinery/alarm{ + pixel_y = 22 + }, +/obj/structure/extinguisher_cabinet{ + pixel_x = -28; + pixel_y = 0 + }, +/turf/simulated/floor/wood, +/area/bridge/meeting_room) +"dQW" = ( +/obj/structure/table/woodentable, +/obj/machinery/keycard_auth{ + pixel_x = 0; + pixel_y = 24 + }, +/obj/item/weapon/storage/box/cups, +/turf/simulated/floor/wood, +/area/bridge/meeting_room) +"dQX" = ( +/obj/structure/reagent_dispensers/water_cooler/full, +/turf/simulated/floor/wood, +/area/bridge/meeting_room) +"dQY" = ( +/obj/machinery/camera/network/command{ + c_tag = "COM - Secretary Office"; + dir = 2 + }, +/turf/simulated/floor/wood, +/area/bridge/meeting_room) +"dQZ" = ( +/obj/machinery/door/firedoor/border_only, +/obj/machinery/door/airlock/command{ + name = "Secretary Office"; + req_access = list(19) + }, +/turf/simulated/floor/tiled/steel_grid, +/area/bridge/meeting_room) +"dRa" = ( +/obj/machinery/computer/guestpass{ + pixel_y = 28 + }, +/obj/effect/floor_decal/steeldecal/steel_decals4{ + dir = 1 + }, +/obj/effect/floor_decal/steeldecal/steel_decals4{ + dir = 6 + }, +/turf/simulated/floor/tiled, +/area/bridge) +"dRb" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 5 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/obj/structure/cable/green{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/turf/simulated/floor/tiled, +/area/bridge) +"dRc" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/turf/simulated/floor/tiled, +/area/bridge) +"dRd" = ( +/obj/machinery/atmospherics/unary/vent_pump/on{ + dir = 8 + }, +/obj/structure/cable/green{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/turf/simulated/floor/tiled, +/area/bridge) +"dRe" = ( +/obj/structure/table/reinforced, +/obj/item/weapon/folder/yellow, +/obj/item/device/flashlight, +/obj/item/device/flashlight{ + pixel_x = 2; + pixel_y = 2 + }, +/obj/structure/window/reinforced{ + dir = 8 + }, +/obj/structure/window/reinforced, +/obj/effect/floor_decal/borderfloor{ + dir = 10 + }, +/obj/effect/floor_decal/corner/yellow/border{ + dir = 10 + }, +/obj/effect/floor_decal/borderfloor/corner2{ + dir = 8 + }, +/obj/effect/floor_decal/corner/yellow/bordercorner2{ + dir = 8 + }, +/turf/simulated/floor/tiled/dark, +/area/bridge) +"dRf" = ( +/obj/structure/window/reinforced, +/obj/effect/floor_decal/borderfloor, +/obj/effect/floor_decal/corner/yellow/border, +/obj/machinery/computer/station_alert/all, +/turf/simulated/floor/tiled/dark, +/area/bridge) +"dRg" = ( +/obj/machinery/computer/atmos_alert, +/obj/structure/window/reinforced{ + dir = 4 + }, +/obj/structure/window/reinforced, +/obj/effect/floor_decal/borderfloor{ + dir = 6 + }, +/obj/effect/floor_decal/corner/yellow/border{ + dir = 6 + }, +/obj/effect/floor_decal/borderfloor/corner2{ + dir = 6 + }, +/obj/effect/floor_decal/corner/yellow/bordercorner2{ + dir = 6 + }, +/turf/simulated/floor/tiled/dark, +/area/bridge) +"dRh" = ( +/obj/machinery/hologram/holopad, +/obj/effect/floor_decal/industrial/outline/grey, +/obj/structure/cable/green{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/obj/effect/landmark{ + name = "lightsout" + }, +/turf/simulated/floor/tiled/dark, +/area/bridge) +"dRi" = ( +/obj/machinery/computer/rcon, +/obj/structure/window/reinforced{ + dir = 8 + }, +/obj/structure/window/reinforced, +/obj/effect/floor_decal/borderfloor{ + dir = 10 + }, +/obj/effect/floor_decal/corner/yellow/border{ + dir = 10 + }, +/obj/effect/floor_decal/borderfloor/corner2{ + dir = 8 + }, +/obj/effect/floor_decal/corner/yellow/bordercorner2{ + dir = 8 + }, +/turf/simulated/floor/tiled/dark, +/area/bridge) +"dRj" = ( +/obj/machinery/computer/power_monitor, +/obj/structure/window/reinforced, +/obj/effect/floor_decal/borderfloor, +/obj/effect/floor_decal/corner/yellow/border, +/turf/simulated/floor/tiled/dark, +/area/bridge) +"dRk" = ( +/obj/structure/table/reinforced, +/obj/item/weapon/storage/box/lights/mixed, +/obj/item/device/multitool, +/obj/item/weapon/storage/toolbox/mechanical, +/obj/structure/window/reinforced{ + dir = 4 + }, +/obj/structure/window/reinforced, +/obj/effect/floor_decal/borderfloor{ + dir = 6 + }, +/obj/effect/floor_decal/corner/yellow/border{ + dir = 6 + }, +/obj/effect/floor_decal/borderfloor/corner2{ + dir = 6 + }, +/obj/effect/floor_decal/corner/yellow/bordercorner2{ + dir = 6 + }, +/turf/simulated/floor/tiled/dark, +/area/bridge) +"dRl" = ( +/obj/machinery/atmospherics/unary/vent_pump/on{ + dir = 4 + }, +/turf/simulated/floor/tiled, +/area/bridge) +"dRm" = ( +/obj/structure/disposalpipe/segment{ + dir = 1; + icon_state = "pipe-c" + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/turf/simulated/floor/tiled, +/area/bridge) +"dRn" = ( +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 9; + pixel_y = 0 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/obj/structure/cable/green{ + d1 = 1; + d2 = 4; + icon_state = "1-4" + }, +/obj/structure/cable/green{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/turf/simulated/floor/tiled, +/area/bridge) +"dRo" = ( +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/structure/cable/green{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/obj/machinery/requests_console{ + announcementConsole = 1; + department = "Bridge"; + departmentType = 5; + name = "Bridge RC"; + pixel_x = 0; + pixel_y = 30 + }, +/obj/effect/floor_decal/steeldecal/steel_decals4{ + dir = 10 + }, +/obj/effect/floor_decal/steeldecal/steel_decals4, +/turf/simulated/floor/tiled, +/area/bridge) +"dRp" = ( +/obj/machinery/door/firedoor/border_only, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/structure/cable/green{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/obj/machinery/door/airlock/command{ + id_tag = "captaindoor"; + name = "Station Director's Office"; + req_access = list(20) + }, +/turf/simulated/floor/tiled/steel_grid, +/area/crew_quarters/heads/sc/sd) +"dRq" = ( +/obj/structure/disposalpipe/segment{ + dir = 2; + icon_state = "pipe-c" + }, +/obj/structure/cable/green{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/turf/simulated/floor/wood, +/area/crew_quarters/heads/sc/sd) +"dRr" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 5 + }, +/obj/structure/cable/green{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/turf/simulated/floor/wood, +/area/crew_quarters/heads/sc/sd) +"dRs" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, +/obj/structure/cable/green{ + d1 = 2; + d2 = 8; + icon_state = "2-8" + }, +/obj/structure/cable/green{ + d1 = 1; + d2 = 8; + icon_state = "1-8" + }, +/turf/simulated/floor/wood, +/area/crew_quarters/heads/sc/sd) +"dRt" = ( +/obj/machinery/atmospherics/unary/vent_scrubber/on{ + dir = 8 + }, +/turf/simulated/floor/wood, +/area/crew_quarters/heads/sc/sd) +"dRu" = ( +/obj/structure/bed/chair{ + dir = 1 + }, +/turf/simulated/floor/wood, +/area/crew_quarters/heads/sc/sd) +"dRv" = ( +/obj/structure/table/woodentable, +/obj/item/weapon/melee/chainofcommand, +/obj/item/weapon/hand_tele, +/obj/item/device/radio/intercom{ + dir = 4; + name = "Station Intercom (General)"; + pixel_x = 21 + }, +/turf/simulated/floor/wood, +/area/crew_quarters/heads/sc/sd) +"dRw" = ( +/obj/machinery/atmospherics/pipe/tank/air, +/turf/simulated/floor/plating, +/area/maintenance/thirddeck/aftstarboard) +"dRx" = ( +/obj/machinery/atmospherics/pipe/tank/air, +/obj/effect/floor_decal/industrial/warning/corner{ + dir = 4 + }, +/turf/simulated/floor/plating, +/area/maintenance/thirddeck/aftstarboard) +"dRy" = ( +/obj/machinery/atmospherics/valve, +/obj/effect/floor_decal/industrial/warning{ + icon_state = "warning"; + dir = 5 + }, +/turf/simulated/floor/plating, +/area/maintenance/thirddeck/aftstarboard) +"dRz" = ( +/obj/machinery/door/firedoor/border_only, +/obj/machinery/door/airlock/maintenance{ + name = "Maintenance Access"; + req_one_access = list(19) + }, +/turf/simulated/floor/plating, +/area/bridge/meeting_room) +"dRA" = ( +/obj/machinery/atmospherics/unary/vent_scrubber/on{ + dir = 4 + }, +/turf/simulated/floor/wood, +/area/bridge/meeting_room) +"dRB" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, +/turf/simulated/floor/wood, +/area/bridge/meeting_room) +"dRC" = ( +/obj/machinery/hologram/holopad, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, +/turf/simulated/floor/wood, +/area/bridge/meeting_room) +"dRD" = ( +/obj/structure/cable/green{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 5 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 9 + }, +/turf/simulated/floor/wood, +/area/bridge/meeting_room) +"dRE" = ( +/obj/machinery/atmospherics/unary/vent_pump/on{ + dir = 8 + }, +/turf/simulated/floor/wood, +/area/bridge/meeting_room) +"dRF" = ( +/obj/item/device/radio/intercom{ + dir = 4; + name = "Station Intercom (General)"; + pixel_x = 21 + }, +/turf/simulated/floor/wood, +/area/bridge/meeting_room) +"dRG" = ( +/obj/machinery/alarm{ + dir = 4; + icon_state = "alarm0"; + pixel_x = -22 + }, +/turf/simulated/floor/tiled, +/area/bridge) +"dRH" = ( +/obj/structure/bed/chair, +/obj/machinery/atmospherics/unary/vent_scrubber/on{ + dir = 1 + }, +/obj/structure/cable/green{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/turf/simulated/floor/tiled, +/area/bridge) +"dRI" = ( +/turf/simulated/floor/tiled, +/area/bridge) +"dRJ" = ( +/obj/structure/cable/green{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/turf/simulated/floor/tiled, +/area/bridge) +"dRK" = ( +/obj/machinery/firealarm{ + dir = 4; + pixel_x = 24 + }, +/turf/simulated/floor/tiled, +/area/bridge) +"dRL" = ( +/obj/structure/disposalpipe/segment, +/obj/machinery/firealarm{ + dir = 8; + pixel_x = -24 + }, +/turf/simulated/floor/wood, +/area/crew_quarters/heads/sc/sd) +"dRM" = ( +/obj/machinery/hologram/holopad, +/turf/simulated/floor/wood, +/area/crew_quarters/heads/sc/sd) +"dRN" = ( +/obj/machinery/papershredder, +/obj/machinery/alarm{ + dir = 8; + icon_state = "alarm0"; + pixel_x = 24 + }, +/turf/simulated/floor/wood, +/area/crew_quarters/heads/sc/sd) +"dRO" = ( +/obj/structure/closet/crate/internals, +/obj/item/weapon/tank/emergency/oxygen/engi, +/obj/item/weapon/tank/emergency/oxygen/engi, +/obj/item/weapon/tank/emergency/oxygen/double, +/obj/random/tank, +/obj/random/maintenance/research, +/obj/random/maintenance/research, +/obj/random/maintenance/clean, +/obj/random/maintenance/clean, +/obj/machinery/atmospherics/pipe/simple/hidden/cyan{ + dir = 5; + icon_state = "intact" + }, +/turf/simulated/floor/plating, +/area/maintenance/thirddeck/aftstarboard) +"dRP" = ( +/obj/machinery/atmospherics/pipe/manifold/hidden/cyan, +/turf/simulated/floor/plating, +/area/maintenance/thirddeck/aftstarboard) +"dRQ" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/cyan{ + dir = 9; + icon_state = "intact" + }, +/obj/machinery/meter, +/obj/effect/floor_decal/industrial/warning{ + icon_state = "warning"; + dir = 4 + }, +/turf/simulated/floor/plating, +/area/maintenance/thirddeck/aftstarboard) +"dRR" = ( +/obj/machinery/door/firedoor/border_only, +/obj/effect/wingrille_spawn/reinforced, +/turf/simulated/floor/plating, +/area/maintenance/solars/aftportsolar) +"dRS" = ( +/turf/simulated/wall/r_wall, +/area/maintenance/solars/aftportsolar) +"dRT" = ( +/obj/machinery/door/firedoor/border_only, +/obj/machinery/door/airlock/maintenance{ + name = "Maintenance Access"; + req_one_access = list(12,19) + }, +/obj/machinery/atmospherics/pipe/simple/hidden, +/turf/simulated/floor/plating, +/area/maintenance/thirddeck/aftport) +"dRU" = ( +/obj/machinery/photocopier, +/obj/machinery/button/remote/blast_door{ + id = "csblast"; + name = "Blastdoors"; + pixel_x = 0; + pixel_y = -24 + }, +/turf/simulated/floor/wood, +/area/bridge/meeting_room) +"dRV" = ( +/obj/structure/table/wooden_reinforced, +/turf/simulated/floor/wood, +/area/bridge/meeting_room) +"dRW" = ( +/obj/structure/bed/chair/office/dark, +/obj/effect/landmark/start{ + name = "Command Secretary" + }, +/turf/simulated/floor/wood, +/area/bridge/meeting_room) +"dRX" = ( +/obj/structure/bed/chair/office/dark, +/obj/structure/cable/green{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/obj/effect/landmark/start{ + name = "Command Secretary" + }, +/turf/simulated/floor/wood, +/area/bridge/meeting_room) +"dRY" = ( +/obj/structure/filingcabinet, +/obj/machinery/firealarm{ + dir = 1; + pixel_y = -24 + }, +/turf/simulated/floor/wood, +/area/bridge/meeting_room) +"dRZ" = ( +/obj/machinery/ai_status_display, +/turf/simulated/wall/r_wall, +/area/bridge/meeting_room) +"dSa" = ( +/obj/machinery/computer/secure_data, +/obj/effect/floor_decal/borderfloor{ + dir = 10 + }, +/obj/effect/floor_decal/corner/red/border{ + dir = 10 + }, +/obj/effect/floor_decal/borderfloor/corner2{ + dir = 8 + }, +/obj/effect/floor_decal/corner/red/bordercorner2{ + dir = 8 + }, +/turf/simulated/floor/tiled, +/area/bridge) +"dSb" = ( +/obj/structure/table/reinforced, +/obj/structure/cable/green{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/obj/item/weapon/folder/red, +/obj/effect/floor_decal/borderfloor, +/obj/effect/floor_decal/corner/red/border, +/turf/simulated/floor/tiled, +/area/bridge) +"dSc" = ( +/obj/machinery/computer/security, +/obj/structure/window/reinforced{ + dir = 4 + }, +/obj/effect/floor_decal/borderfloor{ + dir = 6 + }, +/obj/effect/floor_decal/corner/red/border{ + dir = 6 + }, +/obj/effect/floor_decal/borderfloor/corner2{ + dir = 6 + }, +/obj/effect/floor_decal/corner/red/bordercorner2{ + dir = 6 + }, +/turf/simulated/floor/tiled, +/area/bridge) +"dSd" = ( +/obj/structure/cable/green, +/obj/machinery/power/apc{ + dir = 2; + name = "south bump"; + pixel_y = -24 + }, +/obj/machinery/light_switch{ + pixel_x = 11; + pixel_y = -24 + }, +/obj/effect/floor_decal/borderfloor{ + dir = 10 + }, +/obj/effect/floor_decal/corner/blue/border{ + dir = 10 + }, +/obj/effect/floor_decal/borderfloor/corner2{ + dir = 8 + }, +/obj/effect/floor_decal/corner/blue/bordercorner2{ + dir = 8 + }, +/turf/simulated/floor/tiled, +/area/bridge) +"dSe" = ( +/obj/effect/floor_decal/borderfloor/corner{ + dir = 8 + }, +/obj/effect/floor_decal/corner/blue/bordercorner{ + dir = 8 + }, +/turf/simulated/floor/tiled, +/area/bridge) +"dSf" = ( +/obj/structure/bed/chair, +/obj/structure/cable/green{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/turf/simulated/floor/tiled, +/area/bridge) +"dSg" = ( +/obj/effect/floor_decal/borderfloor/corner, +/obj/effect/floor_decal/corner/blue/bordercorner, +/turf/simulated/floor/tiled, +/area/bridge) +"dSh" = ( +/obj/machinery/button/remote/blast_door{ + id = "bridge blast"; + name = "Bridge Blastdoors"; + pixel_x = 0; + pixel_y = -36 + }, +/obj/machinery/button/windowtint{ + id = "bridge_center"; + pixel_x = -11; + pixel_y = -24 + }, +/obj/machinery/keycard_auth{ + pixel_x = 0; + pixel_y = -24 + }, +/obj/effect/floor_decal/borderfloor{ + dir = 6 + }, +/obj/effect/floor_decal/corner/blue/border{ + dir = 6 + }, +/obj/effect/floor_decal/borderfloor/corner2{ + dir = 6 + }, +/obj/effect/floor_decal/corner/blue/bordercorner2{ + dir = 6 + }, +/turf/simulated/floor/tiled, +/area/bridge) +"dSi" = ( +/obj/machinery/computer/crew, +/obj/structure/window/reinforced{ + dir = 8; + health = 1e+006 + }, +/obj/effect/floor_decal/borderfloor{ + dir = 10 + }, +/obj/effect/floor_decal/corner/white/border{ + dir = 10 + }, +/obj/effect/floor_decal/borderfloor/corner2{ + dir = 8 + }, +/obj/effect/floor_decal/corner/white/bordercorner2{ + dir = 8 + }, +/turf/simulated/floor/tiled, +/area/bridge) +"dSj" = ( +/obj/structure/table/reinforced, +/obj/structure/cable/green{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/obj/item/weapon/folder/white, +/obj/effect/floor_decal/borderfloor, +/obj/effect/floor_decal/corner/white/border, +/turf/simulated/floor/tiled, +/area/bridge) +"dSk" = ( +/obj/machinery/computer/med_data, +/obj/effect/floor_decal/borderfloor{ + dir = 6 + }, +/obj/effect/floor_decal/corner/white/border{ + dir = 6 + }, +/obj/effect/floor_decal/borderfloor/corner2{ + dir = 6 + }, +/obj/effect/floor_decal/corner/white/bordercorner2{ + dir = 6 + }, +/turf/simulated/floor/tiled, +/area/bridge) +"dSl" = ( +/obj/machinery/status_display, +/turf/simulated/wall/r_wall, +/area/crew_quarters/heads/sc/sd) +"dSm" = ( +/obj/machinery/disposal, +/obj/structure/disposalpipe/trunk{ + dir = 1 + }, +/turf/simulated/floor/wood, +/area/crew_quarters/heads/sc/sd) +"dSn" = ( +/obj/structure/bed/chair/comfy/brown{ + dir = 4 + }, +/obj/structure/cable/green{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/turf/simulated/floor/carpet, +/area/crew_quarters/heads/sc/sd) +"dSo" = ( +/obj/structure/table/woodentable, +/obj/item/weapon/book/codex/corp_regs, +/obj/item/device/tape/random, +/obj/item/device/taperecorder, +/turf/simulated/floor/carpet, +/area/crew_quarters/heads/sc/sd) +"dSp" = ( +/obj/structure/table/woodentable, +/obj/machinery/recharger, +/obj/item/weapon/storage/secure/safe{ + pixel_x = 5; + pixel_y = -26 + }, +/turf/simulated/floor/wood, +/area/crew_quarters/heads/sc/sd) +"dSq" = ( +/obj/machinery/door/firedoor/border_only, +/obj/machinery/door/airlock/maintenance{ + name = "Maintenance Access"; + req_one_access = list(12,19) + }, +/obj/machinery/atmospherics/pipe/simple/hidden, +/turf/simulated/floor/plating, +/area/maintenance/thirddeck/aftstarboard) +"dSr" = ( +/turf/simulated/wall/r_wall, +/area/maintenance/solars/aftstarboardsolar) +"dSs" = ( +/obj/machinery/door/firedoor/border_only, +/obj/effect/wingrille_spawn/reinforced, +/turf/simulated/floor/plating, +/area/maintenance/solars/aftstarboardsolar) +"dSt" = ( +/obj/structure/cable/yellow{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/turf/simulated/floor/airless, +/area/solar/aftportsolar) +"dSu" = ( +/obj/effect/wingrille_spawn/reinforced, +/turf/simulated/floor/plating, +/area/maintenance/solars/aftportsolar) +"dSv" = ( +/obj/machinery/atmospherics/pipe/simple/hidden{ + dir = 6 + }, +/obj/effect/wingrille_spawn/reinforced, +/turf/simulated/floor/plating, +/area/maintenance/solars/aftportsolar) +"dSw" = ( +/obj/machinery/atmospherics/pipe/manifold/hidden{ + dir = 1; + icon_state = "map" + }, +/obj/effect/wingrille_spawn/reinforced, +/turf/simulated/floor/plating, +/area/maintenance/solars/aftportsolar) +"dSx" = ( +/obj/machinery/atmospherics/pipe/manifold/hidden{ + dir = 1; + icon_state = "map" + }, +/obj/machinery/door/firedoor/border_only, +/obj/effect/wingrille_spawn/reinforced, +/turf/simulated/floor/plating, +/area/maintenance/solars/aftportsolar) +"dSy" = ( +/obj/machinery/atmospherics/portables_connector{ + dir = 8 + }, +/obj/effect/floor_decal/industrial/outline/yellow, +/obj/machinery/portable_atmospherics/canister/air/airlock, +/obj/structure/sign/warning/airlock{ + pixel_y = 32 + }, +/turf/simulated/floor/plating, +/area/maintenance/solars/aftportsolar) +"dSz" = ( +/obj/machinery/power/terminal{ + dir = 4 + }, +/obj/structure/cable/yellow{ + d2 = 2; + icon_state = "0-2" + }, +/obj/machinery/alarm{ + pixel_y = 22 + }, +/obj/effect/floor_decal/industrial/warning{ + icon_state = "warning"; + dir = 8 + }, +/obj/item/stack/cable_coil/yellow, +/obj/item/stack/cable_coil/yellow, +/obj/item/stack/cable_coil/yellow, +/turf/simulated/floor/plating, +/area/maintenance/solars/aftportsolar) +"dSA" = ( +/obj/structure/cable{ + icon_state = "0-2"; + d2 = 2 + }, +/obj/machinery/power/smes/buildable{ + charge = 0; + RCon_tag = "Solar - Aft Port" + }, +/turf/simulated/floor/plating, +/area/maintenance/solars/aftportsolar) +"dSB" = ( +/turf/simulated/wall, +/area/maintenance/solars/aftportsolar) +"dSC" = ( +/obj/machinery/atmospherics/pipe/simple/hidden, +/obj/structure/sign/warning/high_voltage{ + pixel_x = -32; + pixel_y = 0 + }, +/obj/effect/floor_decal/industrial/warning/corner{ + dir = 8 + }, +/obj/machinery/camera/network/engineering{ + c_tag = "ENG - Solar Aft Port Access"; + dir = 4 + }, +/turf/simulated/floor/plating, +/area/maintenance/thirddeck/aftport) +"dSD" = ( +/obj/item/stack/cable_coil/yellow, +/turf/simulated/floor/plating, +/area/maintenance/thirddeck/aftport) +"dSE" = ( +/obj/structure/ladder, +/obj/effect/floor_decal/industrial/outline/yellow, +/turf/simulated/floor/plating, +/area/maintenance/thirddeck/aftport) +"dSF" = ( +/obj/effect/floor_decal/industrial/warning/corner, +/obj/machinery/portable_atmospherics/powered/scrubber, +/turf/simulated/floor/plating, +/area/maintenance/thirddeck/aftport) +"dSG" = ( +/obj/structure/table/wooden_reinforced, +/obj/machinery/computer/skills, +/turf/simulated/floor/wood, +/area/bridge/meeting_room) +"dSH" = ( +/obj/structure/table/wooden_reinforced, +/obj/item/weapon/paper_bin{ + pixel_x = -3; + pixel_y = 7 + }, +/obj/item/weapon/pen/blue{ + pixel_y = -5 + }, +/obj/item/weapon/pen/red{ + pixel_y = 5 + }, +/obj/item/weapon/pen, +/turf/simulated/floor/wood, +/area/bridge/meeting_room) +"dSI" = ( +/obj/structure/table/wooden_reinforced, +/obj/machinery/photocopier/faxmachine{ + department = "Bridge" + }, +/obj/machinery/light, +/turf/simulated/floor/wood, +/area/bridge/meeting_room) +"dSJ" = ( +/obj/structure/table/wooden_reinforced, +/obj/item/weapon/paper_bin{ + pixel_x = -3; + pixel_y = 7 + }, +/obj/structure/cable/green{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/obj/item/weapon/pen/blue{ + pixel_y = -5 + }, +/obj/item/weapon/pen/red{ + pixel_y = 5 + }, +/obj/item/weapon/pen, +/turf/simulated/floor/wood, +/area/bridge/meeting_room) +"dSK" = ( +/obj/machinery/door/firedoor/glass, +/obj/structure/cable/green{ + d2 = 4; + icon_state = "0-4" + }, +/obj/machinery/door/blast/regular{ + density = 0; + dir = 4; + icon_state = "pdoor0"; + id = "bridge blast"; + name = "Bridge Blast Doors"; + opacity = 0 + }, +/obj/effect/wingrille_spawn/reinforced, +/turf/simulated/floor/plating, +/area/bridge) +"dSL" = ( +/obj/machinery/door/firedoor/border_only, +/obj/structure/cable/green{ + d2 = 8; + icon_state = "0-8" + }, +/obj/structure/cable/green{ + d2 = 4; + icon_state = "0-4" + }, +/obj/machinery/door/blast/regular{ + density = 0; + dir = 4; + icon_state = "pdoor0"; + id = "bridge blast"; + name = "Bridge Blast Doors"; + opacity = 0 + }, +/obj/structure/cable/green, +/obj/effect/wingrille_spawn/reinforced, +/turf/simulated/floor/plating, +/area/bridge) +"dSM" = ( +/obj/machinery/door/firedoor/glass, +/obj/structure/cable/green{ + d2 = 8; + icon_state = "0-8" + }, +/obj/machinery/door/blast/regular{ + density = 0; + dir = 4; + icon_state = "pdoor0"; + id = "bridge blast"; + name = "Bridge Blast Doors"; + opacity = 0 + }, +/obj/effect/wingrille_spawn/reinforced, +/turf/simulated/floor/plating, +/area/bridge) +"dSN" = ( +/obj/structure/table/reinforced, +/obj/machinery/light{ + icon_state = "tube1"; + dir = 8 + }, +/obj/machinery/newscaster{ + pixel_y = -30 + }, +/obj/item/weapon/storage/secure/briefcase, +/obj/effect/floor_decal/borderfloor{ + dir = 10 + }, +/obj/effect/floor_decal/corner/blue/border{ + dir = 10 + }, +/turf/simulated/floor/tiled, +/area/bridge) +"dSO" = ( +/obj/structure/table/reinforced, +/obj/item/weapon/storage/box/PDAs{ + pixel_x = 4; + pixel_y = 4 + }, +/obj/item/weapon/storage/box/ids, +/obj/effect/floor_decal/borderfloor, +/obj/effect/floor_decal/corner/blue/border, +/turf/simulated/floor/tiled, +/area/bridge) +"dSP" = ( +/obj/machinery/computer/card, +/obj/effect/floor_decal/borderfloor, +/obj/effect/floor_decal/corner/blue/border, +/turf/simulated/floor/tiled, +/area/bridge) +"dSQ" = ( +/obj/structure/table/reinforced, +/obj/structure/cable/green{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/obj/item/weapon/paper_bin, +/obj/item/weapon/folder/red, +/obj/item/weapon/folder/blue, +/obj/item/weapon/pen, +/obj/machinery/light, +/obj/effect/floor_decal/borderfloor, +/obj/effect/floor_decal/corner/blue/border, +/turf/simulated/floor/tiled, +/area/bridge) +"dSR" = ( +/obj/machinery/computer/communications, +/obj/effect/floor_decal/borderfloor, +/obj/effect/floor_decal/corner/blue/border, +/turf/simulated/floor/tiled, +/area/bridge) +"dSS" = ( +/obj/structure/table/reinforced, +/obj/item/device/flash, +/obj/item/device/flash, +/obj/item/device/aicard, +/obj/effect/floor_decal/borderfloor, +/obj/effect/floor_decal/corner/blue/border, +/turf/simulated/floor/tiled, +/area/bridge) +"dST" = ( +/obj/structure/table/reinforced, +/obj/machinery/light{ + dir = 4 + }, +/obj/structure/extinguisher_cabinet{ + pixel_y = -30 + }, +/obj/machinery/recharger{ + pixel_y = 0 + }, +/obj/effect/floor_decal/borderfloor{ + dir = 6 + }, +/obj/effect/floor_decal/corner/blue/border{ + dir = 6 + }, +/obj/item/weapon/storage/box/donut, +/turf/simulated/floor/tiled, +/area/bridge) +"dSU" = ( +/obj/machinery/door/firedoor/glass, +/obj/structure/cable/green{ + d2 = 4; + icon_state = "0-4" + }, +/obj/effect/wingrille_spawn/reinforced, +/obj/machinery/door/blast/regular{ + density = 0; + dir = 8; + icon_state = "pdoor0"; + id = "bridge blast"; + name = "Bridge Blast Doors"; + opacity = 0 + }, +/turf/simulated/floor/plating, +/area/bridge) +"dSV" = ( +/obj/machinery/door/firedoor/border_only, +/obj/structure/cable/green{ + d2 = 8; + icon_state = "0-8" + }, +/obj/structure/cable/green{ + d2 = 4; + icon_state = "0-4" + }, +/obj/structure/cable/green, +/obj/effect/wingrille_spawn/reinforced, +/obj/machinery/door/blast/regular{ + density = 0; + dir = 8; + icon_state = "pdoor0"; + id = "bridge blast"; + name = "Bridge Blast Doors"; + opacity = 0 + }, +/turf/simulated/floor/plating, +/area/bridge) +"dSW" = ( +/obj/machinery/door/firedoor/glass, +/obj/structure/cable/green{ + d2 = 8; + icon_state = "0-8" + }, +/obj/effect/wingrille_spawn/reinforced, +/obj/machinery/door/blast/regular{ + density = 0; + dir = 8; + icon_state = "pdoor0"; + id = "bridge blast"; + name = "Bridge Blast Doors"; + opacity = 0 + }, +/turf/simulated/floor/plating, +/area/bridge) +"dSX" = ( +/obj/machinery/button/remote/blast_door{ + id = "directorblast"; + name = "Security Shutters"; + pixel_x = -26; + pixel_y = 0 + }, +/turf/simulated/floor/wood, +/area/crew_quarters/heads/sc/sd) +"dSY" = ( +/obj/structure/bed/chair/comfy/brown{ + dir = 4 + }, +/obj/structure/cable/green{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/obj/machinery/light, +/turf/simulated/floor/carpet, +/area/crew_quarters/heads/sc/sd) +"dSZ" = ( +/obj/structure/table/woodentable, +/obj/item/weapon/storage/box/donut, +/turf/simulated/floor/carpet, +/area/crew_quarters/heads/sc/sd) +"dTa" = ( +/obj/structure/extinguisher_cabinet{ + pixel_y = -30 + }, +/turf/simulated/floor/wood, +/area/crew_quarters/heads/sc/sd) +"dTb" = ( +/obj/structure/lattice, +/obj/structure/cable{ + d1 = 32; + d2 = 2; + icon_state = "32-2" + }, +/obj/machinery/door/firedoor/border_only, +/turf/simulated/open, +/area/maintenance/thirddeck/aftstarboard) +"dTc" = ( +/obj/structure/table/rack, +/obj/item/clothing/glasses/sunglasses, +/obj/item/clothing/suit/storage/hazardvest, +/obj/item/device/radio, +/obj/random/maintenance/medical, +/obj/random/maintenance/medical, +/obj/effect/floor_decal/industrial/warning{ + icon_state = "warning"; + dir = 8 + }, +/obj/structure/railing{ + dir = 8 + }, +/turf/simulated/floor/plating, +/area/maintenance/thirddeck/aftstarboard) +"dTd" = ( +/obj/structure/table/rack, +/obj/item/weapon/extinguisher, +/obj/item/clothing/head/hardhat/red, +/obj/item/clothing/mask/gas, +/obj/item/device/flashlight, +/obj/item/clothing/glasses/meson, +/obj/random/maintenance/cargo, +/obj/random/cash, +/turf/simulated/floor, +/area/maintenance/bar) +"dTe" = ( +/obj/machinery/atmospherics/pipe/simple/hidden, +/obj/effect/floor_decal/industrial/warning/corner, +/obj/structure/sign/warning/high_voltage{ + pixel_x = 32; + pixel_y = 0 + }, +/obj/machinery/camera/network/engineering{ + c_tag = "ENG - Solar Aft Starboard Access"; + dir = 8 + }, +/turf/simulated/floor/plating, +/area/maintenance/thirddeck/aftstarboard) +"dTf" = ( +/turf/simulated/wall, +/area/maintenance/solars/aftstarboardsolar) +"dTg" = ( +/obj/structure/cable{ + icon_state = "0-2"; + d2 = 2 + }, +/obj/machinery/power/smes/buildable{ + charge = 0; + RCon_tag = "Solar - Aft Starboard" + }, +/turf/simulated/floor/plating, +/area/maintenance/solars/aftstarboardsolar) +"dTh" = ( +/obj/machinery/alarm{ + pixel_y = 22 + }, +/obj/machinery/power/terminal{ + dir = 8 + }, +/obj/effect/floor_decal/industrial/warning{ + icon_state = "warning"; + dir = 4 + }, +/obj/structure/cable/yellow{ + d2 = 2; + icon_state = "0-2" + }, +/turf/simulated/floor/plating, +/area/maintenance/solars/aftstarboardsolar) +"dTi" = ( +/obj/machinery/atmospherics/portables_connector{ + dir = 4 + }, +/obj/effect/floor_decal/industrial/outline/yellow, +/obj/machinery/portable_atmospherics/canister/air/airlock, +/obj/structure/sign/warning/airlock{ + pixel_y = 32 + }, +/turf/simulated/floor/plating, +/area/maintenance/solars/aftstarboardsolar) +"dTj" = ( +/obj/machinery/atmospherics/pipe/manifold/hidden{ + dir = 1; + icon_state = "map" + }, +/obj/machinery/door/firedoor/border_only, +/obj/effect/wingrille_spawn/reinforced, +/turf/simulated/floor/plating, +/area/maintenance/solars/aftstarboardsolar) +"dTk" = ( +/obj/machinery/atmospherics/pipe/manifold/hidden{ + dir = 1; + icon_state = "map" + }, +/obj/effect/wingrille_spawn/reinforced, +/turf/simulated/floor/plating, +/area/maintenance/solars/aftstarboardsolar) +"dTl" = ( +/obj/machinery/atmospherics/pipe/simple/hidden{ + dir = 10; + icon_state = "intact" + }, +/obj/effect/wingrille_spawn/reinforced, +/turf/simulated/floor/plating, +/area/maintenance/solars/aftstarboardsolar) +"dTm" = ( +/obj/effect/wingrille_spawn/reinforced, +/turf/simulated/floor/plating, +/area/maintenance/solars/aftstarboardsolar) +"dTn" = ( +/obj/structure/cable/yellow{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/turf/simulated/floor/airless, +/area/solar/aftstarboardsolar) +"dTo" = ( +/obj/machinery/power/tracker, +/obj/structure/cable/yellow{ + d2 = 4; + icon_state = "0-4" + }, +/turf/simulated/floor/airless, +/area/solar/aftportsolar) +"dTp" = ( +/obj/structure/cable/yellow{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/turf/simulated/floor/airless, +/area/solar/aftportsolar) +"dTq" = ( +/obj/structure/cable/yellow{ + d1 = 2; + d2 = 4; + icon_state = "2-4" + }, +/obj/structure/cable/yellow{ + d1 = 1; + d2 = 4; + icon_state = "1-4" + }, +/obj/structure/cable/yellow{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/turf/simulated/floor/airless, +/area/solar/aftportsolar) +"dTr" = ( +/obj/structure/cable/yellow{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/obj/structure/catwalk, +/turf/simulated/floor/airless, +/area/solar/aftportsolar) +"dTs" = ( +/obj/structure/cable/yellow{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/obj/machinery/access_button{ + command = "cycle_exterior"; + frequency = 1379; + layer = 3.3; + master_tag = "aft_port_solar_airlock"; + name = "exterior access button"; + pixel_x = 25; + pixel_y = -25; + req_access = list(); + req_one_access = list(11,24) + }, +/obj/structure/catwalk, +/turf/simulated/floor/airless, +/area/solar/aftportsolar) +"dTt" = ( +/obj/structure/cable/yellow{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/obj/machinery/door/airlock/external{ + frequency = 1379; + icon_state = "door_locked"; + id_tag = "aft_port_solar_outer"; + locked = 1; + name = "Engineering External Access"; + req_access = list(11,13) + }, +/turf/simulated/floor/plating, +/area/maintenance/solars/aftportsolar) +"dTu" = ( +/obj/structure/cable/yellow{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/obj/machinery/embedded_controller/radio/airlock/airlock_controller{ + frequency = 1379; + id_tag = "aft_port_solar_airlock"; + layer = 3.3; + pixel_x = 0; + pixel_y = 25; + req_access = list(13); + tag_airpump = "aft_port_solar_pump"; + tag_chamber_sensor = "aft_port_solar_sensor"; + tag_exterior_door = "aft_port_solar_outer"; + tag_interior_door = "aft_port_solar_inner" + }, +/obj/effect/floor_decal/industrial/warning/cee{ + icon_state = "warningcee"; + dir = 8 + }, +/obj/machinery/airlock_sensor{ + frequency = 1379; + id_tag = "aft_port_solar_sensor"; + layer = 3.3; + pixel_x = 0; + pixel_y = -25 + }, +/obj/machinery/atmospherics/unary/vent_pump/high_volume{ + dir = 1; + frequency = 1379; + id_tag = "aft_port_solar_pump" + }, +/turf/simulated/floor/plating, +/area/maintenance/solars/aftportsolar) +"dTv" = ( +/obj/structure/cable/yellow{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/obj/effect/floor_decal/industrial/warning/cee{ + icon_state = "warningcee"; + dir = 4 + }, +/obj/machinery/atmospherics/unary/vent_pump/high_volume{ + dir = 1; + frequency = 1379; + id_tag = "aft_port_solar_pump" + }, +/obj/machinery/light/small{ + dir = 1 + }, +/turf/simulated/floor/plating, +/area/maintenance/solars/aftportsolar) +"dTw" = ( +/obj/machinery/atmospherics/pipe/simple/hidden{ + dir = 5; + icon_state = "intact" + }, +/obj/structure/cable/yellow{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/obj/machinery/door/airlock/external{ + frequency = 1379; + icon_state = "door_locked"; + id_tag = "aft_port_solar_inner"; + locked = 1; + name = "Engineering External Access"; + req_access = list(11,13) + }, +/turf/simulated/floor/plating, +/area/maintenance/solars/aftportsolar) +"dTx" = ( +/obj/machinery/atmospherics/pipe/simple/hidden{ + dir = 4 + }, +/obj/structure/cable/yellow{ + d1 = 2; + d2 = 8; + icon_state = "2-8" + }, +/obj/structure/cable/yellow{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/obj/machinery/access_button{ + command = "cycle_interior"; + frequency = 1379; + layer = 3.3; + master_tag = "aft_port_solar_airlock"; + name = "interior access button"; + pixel_x = -25; + pixel_y = 25; + req_access = list(); + req_one_access = list(11,24) + }, +/turf/simulated/floor/plating, +/area/maintenance/solars/aftportsolar) +"dTy" = ( +/obj/machinery/atmospherics/pipe/simple/hidden{ + dir = 4 + }, +/obj/structure/cable/yellow{ + d1 = 1; + d2 = 8; + icon_state = "1-8" + }, +/obj/effect/floor_decal/industrial/warning{ + icon_state = "warning"; + dir = 1 + }, +/turf/simulated/floor/plating, +/area/maintenance/solars/aftportsolar) +"dTz" = ( +/obj/machinery/atmospherics/binary/pump/on{ + dir = 8; + target_pressure = 200 + }, +/obj/structure/cable{ + d1 = 1; + d2 = 4; + icon_state = "1-4" + }, +/obj/structure/cable{ + d1 = 2; + d2 = 4; + icon_state = "2-4" + }, +/obj/effect/floor_decal/industrial/warning{ + icon_state = "warning"; + dir = 1 + }, +/turf/simulated/floor/plating, +/area/maintenance/solars/aftportsolar) +"dTA" = ( +/obj/machinery/atmospherics/pipe/simple/hidden{ + dir = 4 + }, +/obj/structure/cable{ + d1 = 4; + d2 = 8; + icon_state = "4-8"; + pixel_x = 0 + }, +/obj/machinery/door/firedoor/border_only, +/obj/machinery/door/airlock/engineering{ + icon_state = "door_closed"; + locked = 0; + name = "Aft Port Solar Access"; + req_access = list(); + req_one_access = list(11,24) + }, +/turf/simulated/floor/plating, +/area/maintenance/solars/aftportsolar) +"dTB" = ( +/obj/structure/cable{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/obj/machinery/atmospherics/pipe/simple/hidden{ + dir = 9; + icon_state = "intact" + }, +/obj/effect/floor_decal/industrial/warning{ + icon_state = "warning"; + dir = 8 + }, +/turf/simulated/floor/plating, +/area/maintenance/thirddeck/aftport) +"dTC" = ( +/obj/structure/cable{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/turf/simulated/floor/plating, +/area/maintenance/thirddeck/aftport) +"dTD" = ( +/obj/effect/floor_decal/industrial/warning{ + icon_state = "warning"; + dir = 4 + }, +/obj/structure/cable{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/obj/structure/railing{ + dir = 4 + }, +/turf/simulated/floor/plating, +/area/maintenance/thirddeck/aftport) +"dTE" = ( +/obj/structure/lattice, +/obj/structure/cable{ + d1 = 32; + d2 = 8; + icon_state = "32-8" + }, +/obj/machinery/door/firedoor/border_only, +/turf/simulated/open, +/area/maintenance/thirddeck/aftport) +"dTF" = ( +/obj/machinery/door/firedoor/glass, +/obj/structure/cable/green{ + d2 = 4; + icon_state = "0-4" + }, +/obj/machinery/door/blast/regular{ + density = 0; + dir = 4; + icon_state = "pdoor0"; + id = "csblast"; + name = "Blast Doors"; + opacity = 0 + }, +/obj/effect/wingrille_spawn/reinforced, +/turf/simulated/floor/plating, +/area/bridge/meeting_room) +"dTG" = ( +/obj/machinery/door/firedoor/border_only, +/obj/structure/cable/green{ + d2 = 8; + icon_state = "0-8" + }, +/obj/structure/cable/green{ + d2 = 4; + icon_state = "0-4" + }, +/obj/machinery/door/blast/regular{ + density = 0; + dir = 4; + icon_state = "pdoor0"; + id = "csblast"; + name = "Blast Doors"; + opacity = 0 + }, +/obj/effect/wingrille_spawn/reinforced, +/turf/simulated/floor/plating, +/area/bridge/meeting_room) +"dTH" = ( +/obj/machinery/door/firedoor/border_only, +/obj/structure/cable/green, +/obj/structure/cable/green{ + d2 = 4; + icon_state = "0-4" + }, +/obj/structure/cable/green{ + d2 = 8; + icon_state = "0-8" + }, +/obj/machinery/door/blast/regular{ + density = 0; + dir = 4; + icon_state = "pdoor0"; + id = "csblast"; + name = "Blast Doors"; + opacity = 0 + }, +/obj/effect/wingrille_spawn/reinforced, +/turf/simulated/floor/plating, +/area/bridge/meeting_room) +"dTI" = ( +/obj/machinery/door/firedoor/glass, +/obj/structure/cable/green{ + d2 = 8; + icon_state = "0-8" + }, +/obj/machinery/door/blast/regular{ + density = 0; + dir = 4; + icon_state = "pdoor0"; + id = "csblast"; + name = "Blast Doors"; + opacity = 0 + }, +/obj/effect/wingrille_spawn/reinforced, +/turf/simulated/floor/plating, +/area/bridge/meeting_room) +"dTJ" = ( +/obj/structure/sign/warning/secure_area, +/turf/simulated/wall/r_wall, +/area/bridge) +"dTK" = ( +/obj/machinery/door/firedoor/border_only, +/obj/structure/cable/green{ + d2 = 8; + icon_state = "0-8" + }, +/obj/structure/cable/green{ + d2 = 4; + icon_state = "0-4" + }, +/obj/machinery/door/blast/regular{ + density = 0; + dir = 4; + icon_state = "pdoor0"; + id = "bridge blast"; + name = "Bridge Blast Doors"; + opacity = 0 + }, +/obj/effect/wingrille_spawn/reinforced, +/turf/simulated/floor/plating, +/area/bridge) +"dTL" = ( +/obj/machinery/door/firedoor/glass, +/obj/structure/cable/green, +/obj/structure/cable/green{ + d2 = 4; + icon_state = "0-4" + }, +/obj/structure/cable/green{ + d2 = 8; + icon_state = "0-8" + }, +/obj/machinery/door/blast/regular{ + density = 0; + dir = 4; + icon_state = "pdoor0"; + id = "bridge blast"; + name = "Bridge Blast Doors"; + opacity = 0 + }, +/obj/effect/wingrille_spawn/reinforced, +/turf/simulated/floor/plating, +/area/bridge) +"dTM" = ( +/obj/machinery/door/firedoor/border_only, +/obj/structure/cable/green{ + d2 = 4; + icon_state = "0-4" + }, +/obj/structure/cable/green{ + d2 = 8; + icon_state = "0-8" + }, +/obj/machinery/door/blast/regular{ + density = 0; + dir = 4; + icon_state = "pdoor0"; + id = "bridge blast"; + name = "Bridge Blast Doors"; + opacity = 0 + }, +/obj/effect/wingrille_spawn/reinforced, +/turf/simulated/floor/plating, +/area/bridge) +"dTN" = ( +/obj/structure/sign/warning/high_voltage, +/turf/simulated/wall/r_wall, +/area/crew_quarters/heads/sc/sd) +"dTO" = ( +/obj/machinery/door/firedoor/glass, +/obj/structure/cable/green{ + d2 = 4; + icon_state = "0-4" + }, +/obj/machinery/door/blast/regular{ + density = 0; + dir = 8; + icon_state = "pdoor0"; + id = "directorblast"; + name = "Blast Doors"; + opacity = 0 + }, +/obj/effect/wingrille_spawn/reinforced, +/turf/simulated/floor/plating, +/area/crew_quarters/heads/sc/sd) +"dTP" = ( +/obj/machinery/door/firedoor/border_only, +/obj/structure/cable/green{ + d2 = 8; + icon_state = "0-8" + }, +/obj/structure/cable/green{ + d2 = 4; + icon_state = "0-4" + }, +/obj/structure/cable/green, +/obj/machinery/door/blast/regular{ + density = 0; + dir = 8; + icon_state = "pdoor0"; + id = "directorblast"; + name = "Blast Doors"; + opacity = 0 + }, +/obj/effect/wingrille_spawn/reinforced, +/turf/simulated/floor/plating, +/area/crew_quarters/heads/sc/sd) +"dTQ" = ( +/obj/machinery/door/firedoor/border_only, +/obj/structure/cable/green{ + d2 = 8; + icon_state = "0-8" + }, +/obj/structure/cable/green{ + d2 = 4; + icon_state = "0-4" + }, +/obj/machinery/door/blast/regular{ + density = 0; + dir = 8; + icon_state = "pdoor0"; + id = "directorblast"; + name = "Blast Doors"; + opacity = 0 + }, +/obj/effect/wingrille_spawn/reinforced, +/turf/simulated/floor/plating, +/area/crew_quarters/heads/sc/sd) +"dTR" = ( +/obj/machinery/door/firedoor/glass, +/obj/structure/cable/green{ + d2 = 8; + icon_state = "0-8" + }, +/obj/machinery/door/blast/regular{ + density = 0; + dir = 8; + icon_state = "pdoor0"; + id = "directorblast"; + name = "Blast Doors"; + opacity = 0 + }, +/obj/effect/wingrille_spawn/reinforced, +/turf/simulated/floor/plating, +/area/crew_quarters/heads/sc/sd) +"dTS" = ( +/obj/effect/floor_decal/industrial/warning/corner{ + dir = 4 + }, +/turf/simulated/floor/plating, +/area/maintenance/thirddeck/aftstarboard) +"dTT" = ( +/obj/effect/floor_decal/industrial/warning{ + icon_state = "warning"; + dir = 1 + }, +/obj/structure/cable{ + d1 = 1; + d2 = 4; + icon_state = "1-4" + }, +/turf/simulated/floor/plating, +/area/maintenance/thirddeck/aftstarboard) +"dTU" = ( +/obj/effect/floor_decal/industrial/warning/corner{ + icon_state = "warningcorner"; + dir = 1 + }, +/obj/structure/cable{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/turf/simulated/floor/plating, +/area/maintenance/thirddeck/aftstarboard) +"dTV" = ( +/obj/structure/cable{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/turf/simulated/floor/plating, +/area/maintenance/thirddeck/aftstarboard) +"dTW" = ( +/obj/structure/cable{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/obj/machinery/atmospherics/pipe/simple/hidden{ + dir = 5; + icon_state = "intact" + }, +/obj/effect/floor_decal/industrial/warning{ + icon_state = "warning"; + dir = 4 + }, +/turf/simulated/floor/plating, +/area/maintenance/thirddeck/aftstarboard) +"dTX" = ( +/obj/machinery/atmospherics/pipe/simple/hidden{ + dir = 4 + }, +/obj/structure/cable{ + d1 = 4; + d2 = 8; + icon_state = "4-8"; + pixel_x = 0 + }, +/obj/machinery/door/firedoor/border_only, +/obj/machinery/door/airlock/engineering{ + icon_state = "door_closed"; + locked = 0; + name = "Aft Starboard Solar Access"; + req_access = list(); + req_one_access = list(11,24) + }, +/turf/simulated/floor/plating, +/area/maintenance/solars/aftstarboardsolar) +"dTY" = ( +/obj/structure/cable{ + d1 = 2; + d2 = 8; + icon_state = "2-8" + }, +/obj/structure/cable{ + d1 = 1; + d2 = 8; + icon_state = "1-8" + }, +/obj/machinery/atmospherics/binary/pump/on{ + dir = 4; + target_pressure = 200 + }, +/obj/effect/floor_decal/industrial/warning{ + icon_state = "warning"; + dir = 1 + }, +/turf/simulated/floor/plating, +/area/maintenance/solars/aftstarboardsolar) +"dTZ" = ( +/obj/machinery/atmospherics/pipe/simple/hidden{ + dir = 4 + }, +/obj/effect/floor_decal/industrial/warning{ + icon_state = "warning"; + dir = 1 + }, +/obj/structure/cable/yellow{ + d1 = 1; + d2 = 4; + icon_state = "1-4" + }, +/turf/simulated/floor/plating, +/area/maintenance/solars/aftstarboardsolar) +"dUa" = ( +/obj/machinery/atmospherics/pipe/simple/hidden{ + dir = 4 + }, +/obj/structure/cable/yellow{ + d1 = 2; + d2 = 4; + icon_state = "2-4" + }, +/obj/structure/cable/yellow{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/obj/machinery/meter, +/obj/machinery/access_button{ + command = "cycle_interior"; + frequency = 1379; + layer = 3.3; + master_tag = "aft_starboard_solar_airlock"; + name = "interior access button"; + pixel_x = 25; + pixel_y = 25; + req_access = list(); + req_one_access = list(11,24) + }, +/turf/simulated/floor/plating, +/area/maintenance/solars/aftstarboardsolar) +"dUb" = ( +/obj/machinery/atmospherics/pipe/simple/hidden{ + dir = 9; + icon_state = "intact" + }, +/obj/structure/cable/yellow{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/obj/machinery/door/airlock/external{ + frequency = 1379; + icon_state = "door_locked"; + id_tag = "aft_starboard_solar_inner"; + locked = 1; + name = "Engineering External Access"; + req_access = list(11,13) + }, +/turf/simulated/floor/plating, +/area/maintenance/solars/aftstarboardsolar) +"dUc" = ( +/obj/machinery/atmospherics/unary/vent_pump/high_volume{ + dir = 1; + frequency = 1379; + id_tag = "aft_starboard_solar_pump" + }, +/obj/structure/cable/yellow{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/obj/machinery/light/small{ + dir = 1 + }, +/obj/effect/floor_decal/industrial/warning/cee{ + icon_state = "warningcee"; + dir = 8 + }, +/turf/simulated/floor/plating, +/area/maintenance/solars/aftstarboardsolar) +"dUd" = ( +/obj/machinery/atmospherics/unary/vent_pump/high_volume{ + dir = 1; + frequency = 1379; + id_tag = "aft_starboard_solar_pump" + }, +/obj/structure/cable/yellow{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/obj/machinery/embedded_controller/radio/airlock/airlock_controller{ + frequency = 1379; + id_tag = "aft_starboard_solar_airlock"; + layer = 3.3; + pixel_x = 0; + pixel_y = 25; + req_access = list(13); + tag_airpump = "aft_starboard_solar_pump"; + tag_chamber_sensor = "aft_starboard_solar_sensor"; + tag_exterior_door = "aft_starboard_solar_outer"; + tag_interior_door = "aft_starboard_solar_inner" + }, +/obj/machinery/airlock_sensor{ + frequency = 1379; + id_tag = "aft_starboard_solar_sensor"; + layer = 3.3; + pixel_x = 0; + pixel_y = -25 + }, +/obj/effect/floor_decal/industrial/warning/cee{ + icon_state = "warningcee"; + dir = 4 + }, +/turf/simulated/floor/plating, +/area/maintenance/solars/aftstarboardsolar) +"dUe" = ( +/obj/structure/cable/yellow{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/obj/machinery/door/airlock/external{ + frequency = 1379; + icon_state = "door_locked"; + id_tag = "aft_starboard_solar_outer"; + locked = 1; + name = "Engineering External Access"; + req_access = list(11,13) + }, +/turf/simulated/floor/plating, +/area/maintenance/solars/aftstarboardsolar) +"dUf" = ( +/obj/structure/cable/yellow{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/obj/machinery/access_button{ + command = "cycle_exterior"; + frequency = 1379; + layer = 3.3; + master_tag = "aft_starboard_solar_airlock"; + name = "exterior access button"; + pixel_x = -25; + pixel_y = -25; + req_access = list(); + req_one_access = list(11,24) + }, +/obj/structure/catwalk, +/turf/simulated/floor/airless, +/area/solar/aftstarboardsolar) +"dUg" = ( +/obj/structure/cable/yellow{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/obj/structure/catwalk, +/turf/simulated/floor/airless, +/area/solar/aftstarboardsolar) +"dUh" = ( +/obj/structure/cable/yellow{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/turf/simulated/floor/airless, +/area/solar/aftstarboardsolar) +"dUi" = ( +/obj/structure/cable/yellow{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/obj/structure/cable/yellow{ + d1 = 2; + d2 = 8; + icon_state = "2-8" + }, +/obj/structure/cable/yellow{ + d1 = 1; + d2 = 8; + icon_state = "1-8" + }, +/turf/simulated/floor/airless, +/area/solar/aftstarboardsolar) +"dUj" = ( +/obj/machinery/power/tracker, +/obj/structure/cable/yellow{ + d2 = 8; + icon_state = "0-8" + }, +/turf/simulated/floor/airless, +/area/solar/aftstarboardsolar) +"dUk" = ( +/obj/structure/cable/yellow, +/obj/machinery/power/solar_control{ + id = "aftportsolar"; + name = "Aft Port Solar Control"; + track = 0 + }, +/turf/simulated/floor/plating, +/area/maintenance/solars/aftportsolar) +"dUl" = ( +/obj/machinery/camera/network/engineering{ + c_tag = "ENG - Solar Aft Port"; + dir = 1 + }, +/obj/machinery/light/small, +/obj/item/weapon/stool, +/turf/simulated/floor/plating, +/area/maintenance/solars/aftportsolar) +"dUm" = ( +/obj/structure/cable, +/obj/machinery/power/apc{ + dir = 2; + name = "south bump"; + pixel_y = -24 + }, +/obj/item/device/radio/intercom{ + dir = 4; + name = "Station Intercom (General)"; + pixel_x = 21 + }, +/turf/simulated/floor/plating, +/area/maintenance/solars/aftportsolar) +"dUn" = ( +/obj/machinery/light/small{ + dir = 8 + }, +/obj/effect/floor_decal/industrial/warning/corner{ + icon_state = "warningcorner"; + dir = 1 + }, +/turf/simulated/floor/plating, +/area/maintenance/thirddeck/aftport) +"dUo" = ( +/obj/effect/floor_decal/industrial/warning/corner{ + dir = 4 + }, +/turf/simulated/floor/plating, +/area/maintenance/thirddeck/aftport) +"dUp" = ( +/obj/effect/floor_decal/industrial/warning{ + icon_state = "warning"; + dir = 1 + }, +/turf/simulated/floor/plating, +/area/maintenance/thirddeck/aftport) +"dUq" = ( +/obj/effect/floor_decal/industrial/warning/corner{ + dir = 4 + }, +/turf/simulated/floor/reinforced/airless, +/area/thirddeck/roof) +"dUr" = ( +/obj/effect/floor_decal/industrial/warning{ + dir = 1 + }, +/turf/simulated/floor/reinforced/airless, +/area/thirddeck/roof) +"dUs" = ( +/obj/effect/floor_decal/industrial/warning/corner{ + icon_state = "warningcorner"; + dir = 1 + }, +/turf/simulated/floor/reinforced/airless, +/area/thirddeck/roof) +"dUt" = ( +/obj/structure/sign/warning/high_voltage{ + pixel_y = 32 + }, +/turf/simulated/floor/reinforced/airless, +/area/thirddeck/roof) +"dUu" = ( +/obj/structure/ladder, +/obj/effect/floor_decal/industrial/outline/yellow, +/turf/simulated/floor/plating, +/area/maintenance/thirddeck/aftstarboard) +"dUv" = ( +/turf/simulated/floor/plating, +/area/maintenance/thirddeck/aftstarboard) +"dUw" = ( +/obj/machinery/light/small{ + dir = 4; + pixel_y = 0 + }, +/obj/effect/floor_decal/industrial/warning/corner{ + icon_state = "warningcorner"; + dir = 4 + }, +/turf/simulated/floor/plating, +/area/maintenance/thirddeck/aftstarboard) +"dUx" = ( +/obj/structure/cable, +/obj/item/device/radio/intercom{ + dir = 8; + name = "Station Intercom (General)"; + pixel_x = -21 + }, +/obj/machinery/power/apc{ + dir = 2; + name = "south bump"; + pixel_y = -24 + }, +/obj/structure/table/steel, +/obj/item/stack/cable_coil/yellow, +/obj/item/stack/cable_coil/yellow, +/obj/item/stack/cable_coil/yellow, +/obj/item/stack/cable_coil/yellow, +/turf/simulated/floor/plating, +/area/maintenance/solars/aftstarboardsolar) +"dUy" = ( +/obj/machinery/light/small, +/obj/machinery/camera/network/engineering{ + c_tag = "ENG - Solar Aft Starboard"; + dir = 1 + }, +/turf/simulated/floor/plating, +/area/maintenance/solars/aftstarboardsolar) +"dUz" = ( +/obj/structure/cable/yellow, +/obj/machinery/power/solar_control{ + id = "aftstarboardsolar"; + name = "Aft Starboard Solar Control"; + track = 0 + }, +/turf/simulated/floor/plating, +/area/maintenance/solars/aftstarboardsolar) +"dUA" = ( +/obj/structure/cable/yellow{ + d1 = 1; + d2 = 4; + icon_state = "1-4" + }, +/obj/structure/cable/yellow{ + d1 = 1; + d2 = 8; + icon_state = "1-8" + }, +/obj/structure/cable/yellow{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/obj/structure/catwalk, +/turf/simulated/floor/airless, +/area/solar/aftportsolar) +"dUB" = ( +/obj/structure/table/steel, +/obj/random/maintenance/cargo, +/obj/random/maintenance/cargo, +/obj/random/maintenance/clean, +/obj/random/maintenance/clean, +/turf/simulated/floor/plating, +/area/maintenance/thirddeck/aftport) +"dUC" = ( +/obj/machinery/alarm{ + dir = 1; + pixel_y = -22 + }, +/obj/structure/table/steel, +/obj/random/maintenance/cargo, +/obj/random/maintenance/cargo, +/obj/random/maintenance/clean, +/obj/random/maintenance/clean, +/turf/simulated/floor/plating, +/area/maintenance/thirddeck/aftport) +"dUD" = ( +/obj/structure/closet/wardrobe/grey, +/obj/item/weapon/storage/backpack, +/obj/item/weapon/storage/backpack, +/obj/random/maintenance/cargo, +/obj/random/maintenance/cargo, +/obj/random/maintenance/cargo, +/turf/simulated/floor/plating, +/area/maintenance/thirddeck/aftport) +"dUE" = ( +/obj/structure/closet/firecloset/full, +/obj/random/maintenance/clean, +/obj/random/maintenance/clean, +/obj/random/maintenance/security, +/turf/simulated/floor/plating, +/area/maintenance/thirddeck/aftport) +"dUF" = ( +/obj/structure/table/rack, +/obj/item/weapon/extinguisher, +/obj/item/clothing/head/hardhat/red, +/obj/item/clothing/mask/gas, +/obj/item/device/flashlight, +/obj/item/clothing/glasses/meson, +/obj/random/maintenance/cargo, +/turf/simulated/floor, +/area/maintenance/thirddeck/aftport) +"dUG" = ( +/obj/structure/table/rack{ + dir = 4 + }, +/obj/item/weapon/storage/toolbox/mechanical, +/obj/random/maintenance/engineering, +/obj/random/maintenance/engineering, +/obj/random/maintenance/engineering, +/obj/random/maintenance/medical, +/turf/simulated/floor, +/area/maintenance/thirddeck/aftstarboard) +"dUH" = ( +/obj/machinery/floodlight, +/turf/simulated/floor/plating, +/area/maintenance/thirddeck/aftstarboard) +"dUI" = ( +/obj/machinery/alarm{ + dir = 1; + pixel_y = -22 + }, +/obj/machinery/portable_atmospherics/powered/scrubber, +/turf/simulated/floor/plating, +/area/maintenance/thirddeck/aftstarboard) +"dUJ" = ( +/obj/machinery/portable_atmospherics/powered/pump/filled, +/turf/simulated/floor/plating, +/area/maintenance/thirddeck/aftstarboard) +"dUK" = ( +/obj/structure/cable/yellow{ + d1 = 1; + d2 = 8; + icon_state = "1-8" + }, +/obj/structure/cable/yellow{ + d1 = 1; + d2 = 4; + icon_state = "1-4" + }, +/obj/structure/cable/yellow{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/obj/structure/catwalk, +/turf/simulated/floor/airless, +/area/solar/aftstarboardsolar) +"dUL" = ( +/obj/structure/cable/yellow{ + d1 = 1; + d2 = 4; + icon_state = "1-4" + }, +/obj/structure/cable/yellow{ + d1 = 1; + d2 = 8; + icon_state = "1-8" + }, +/obj/structure/catwalk, +/turf/simulated/floor/airless, +/area/solar/aftportsolar) +"dUM" = ( +/obj/structure/cable/yellow{ + d1 = 1; + d2 = 8; + icon_state = "1-8" + }, +/obj/structure/cable/yellow{ + d1 = 1; + d2 = 4; + icon_state = "1-4" + }, +/obj/structure/catwalk, +/turf/simulated/floor/airless, +/area/solar/aftstarboardsolar) +"dUN" = ( +/turf/space, +/area/syndicate_station/thirddeck) +"dUO" = ( +/obj/effect/landmark/map_data{ + height = 3 + }, +/turf/space, +/area/space) +"dUP" = ( +/obj/item/device/radio/intercom{ + dir = 8; + name = "Station Intercom (General)"; + pixel_x = -21 + }, +/obj/machinery/atmospherics/unary/vent_scrubber/on{ + dir = 4 + }, +/obj/effect/floor_decal/borderfloorwhite{ + dir = 8 + }, +/obj/effect/floor_decal/corner/paleblue/border{ + dir = 8 + }, +/turf/simulated/floor/tiled/white, +/area/medical/first_aid_station/seconddeck/port) +"dUQ" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 5 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 9 + }, +/obj/machinery/hologram/holopad, +/obj/effect/floor_decal/industrial/outline/grey, +/turf/simulated/floor/tiled/white, +/area/medical/first_aid_station/seconddeck/port) +"dUR" = ( +/obj/machinery/camera/network/medbay{ + c_tag = "MED - FA Station Port"; + dir = 1 + }, +/obj/structure/extinguisher_cabinet{ + pixel_x = 28; + pixel_y = 0 + }, +/obj/effect/floor_decal/borderfloorwhite{ + dir = 6 + }, +/obj/effect/floor_decal/corner/paleblue/border{ + dir = 6 + }, +/obj/structure/closet/secure_closet/medical_wall{ + name = "defibrillator closet"; + pixel_y = -31 + }, +/obj/item/device/defib_kit/loaded, +/turf/simulated/floor/tiled/white, +/area/medical/first_aid_station/seconddeck/port) +"dUS" = ( +/obj/machinery/firealarm{ + dir = 8; + pixel_x = -24 + }, +/obj/effect/floor_decal/borderfloorwhite{ + dir = 10 + }, +/obj/effect/floor_decal/corner/paleblue/border{ + dir = 10 + }, +/obj/structure/closet/medical_wall{ + pixel_x = 0; + pixel_y = -31 + }, +/obj/item/roller, +/obj/item/bodybag/cryobag, +/obj/item/weapon/storage/firstaid/regular, +/obj/item/weapon/storage/pill_bottle/spaceacillin, +/turf/simulated/floor/tiled/white, +/area/medical/first_aid_station/seconddeck/port) +"dUT" = ( +/obj/machinery/alarm{ + dir = 1; + pixel_y = -22 + }, +/obj/effect/floor_decal/corner/paleblue/border, +/obj/effect/floor_decal/borderfloorwhite, +/obj/effect/floor_decal/corner/paleblue/border, +/turf/simulated/floor/tiled/white, +/area/medical/first_aid_station/seconddeck/port) +"dUU" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/structure/cable/green{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{ + dir = 1 + }, +/obj/effect/floor_decal/steeldecal/steel_decals4{ + dir = 5 + }, +/obj/effect/floor_decal/steeldecal/steel_decals4{ + dir = 8 + }, +/obj/structure/disposalpipe/sortjunction{ + dir = 8; + icon_state = "pipe-j1s"; + name = "Medbay"; + sortType = "Medbay" + }, +/turf/simulated/floor/tiled/white, +/area/medical/medbay2) +"dUV" = ( +/obj/structure/lattice, +/obj/structure/cable/green{ + d1 = 32; + icon_state = "32-1" + }, +/obj/machinery/door/firedoor/border_only, +/obj/machinery/atmospherics/pipe/zpipe/down/supply{ + dir = 1 + }, +/obj/machinery/atmospherics/pipe/zpipe/down/scrubbers{ + dir = 1 + }, +/turf/simulated/open, +/area/maintenance/substation/cargo) +"dUW" = ( +/obj/structure/table/marble, +/obj/effect/floor_decal/corner/grey/diagonal{ + dir = 4 + }, +/obj/machinery/cash_register/civilian{ + dir = 4; + icon_state = "register_idle" + }, +/obj/machinery/door/blast/shutters{ + dir = 8; + id = "kitchen"; + layer = 3.3; + name = "Kitchen Shutters" + }, +/turf/simulated/floor/tiled/white, +/area/crew_quarters/kitchen) +"dUX" = ( +/obj/item/weapon/stool/padded, +/obj/effect/floor_decal/borderfloor{ + dir = 1 + }, +/obj/effect/floor_decal/corner/lime/border{ + dir = 1 + }, +/obj/effect/landmark/start{ + name = "Botanist" + }, +/turf/simulated/floor/tiled/hydro, +/area/hydroponics) +"dUY" = ( +/obj/structure/cable/green{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/obj/item/weapon/stool/padded, +/obj/effect/landmark/start{ + name = "Botanist" + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 5 + }, +/turf/simulated/floor/tiled/hydro, +/area/hydroponics) +"dUZ" = ( +/obj/machinery/atmospherics/unary/vent_pump/on{ + dir = 8 + }, +/obj/machinery/firealarm{ + pixel_y = 24 + }, +/obj/effect/floor_decal/borderfloorwhite{ + dir = 1 + }, +/obj/effect/floor_decal/corner/paleblue/border{ + dir = 1 + }, +/obj/structure/table/rack, +/obj/item/weapon/storage/toolbox/emergency, +/obj/random/medical/lite, +/turf/simulated/floor/tiled/white, +/area/medical/first_aid_station/seconddeck/aft) +"dVa" = ( +/obj/structure/table/glass, +/obj/item/device/radio{ + frequency = 1487; + icon_state = "med_walkietalkie"; + name = "Medbay Emergency Radio Link" + }, +/obj/item/device/radio/intercom{ + dir = 8; + name = "Station Intercom (General)"; + pixel_x = -21 + }, +/obj/machinery/vending/wallmed1{ + name = "NanoMed Wall"; + pixel_x = 0; + pixel_y = 28 + }, +/obj/effect/floor_decal/borderfloorwhite{ + dir = 9 + }, +/obj/effect/floor_decal/corner/paleblue/border{ + dir = 9 + }, +/turf/simulated/floor/tiled/white, +/area/medical/first_aid_station/seconddeck/aft) +"dVb" = ( +/obj/effect/floor_decal/borderfloor{ + dir = 1 + }, +/obj/effect/floor_decal/corner/paleblue/border{ + dir = 1 + }, +/obj/effect/floor_decal/borderfloor/corner2{ + dir = 1 + }, +/obj/effect/floor_decal/corner/paleblue/bordercorner2{ + dir = 1 + }, +/turf/simulated/floor/tiled, +/area/hallway/primary/seconddeck/aft) +"dVc" = ( +/obj/machinery/power/apc{ + dir = 1; + name = "north bump"; + pixel_x = 0; + pixel_y = 24 + }, +/obj/structure/cable/green{ + d2 = 2; + icon_state = "0-2" + }, +/obj/machinery/light_switch{ + pixel_x = 11; + pixel_y = 24 + }, +/obj/machinery/light{ + dir = 4; + icon_state = "tube1"; + pixel_x = 0 + }, +/obj/effect/floor_decal/borderfloorwhite{ + dir = 1 + }, +/obj/effect/floor_decal/corner/paleblue/border{ + dir = 1 + }, +/turf/simulated/floor/tiled/white, +/area/medical/first_aid_station/seconddeck/aft) +"dVd" = ( +/obj/machinery/door/airlock/glass_medical{ + name = "First-Aid Station"; + req_one_access = list(5,12,19,25,27,28,35) + }, +/obj/machinery/door/firedoor/glass, +/obj/structure/cable/green{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/turf/simulated/floor/tiled/steel_grid, +/area/medical/first_aid_station/seconddeck/aft) +"dVe" = ( +/obj/effect/floor_decal/borderfloorwhite, +/obj/effect/floor_decal/corner/paleblue/border, +/obj/structure/closet/secure_closet/medical_wall{ + name = "defibrillator closet"; + pixel_y = -31 + }, +/obj/item/device/defib_kit/loaded, +/turf/simulated/floor/tiled/white, +/area/medical/first_aid_station/seconddeck/aft) +"dVf" = ( +/obj/effect/floor_decal/borderfloorwhite{ + dir = 10 + }, +/obj/effect/floor_decal/corner/paleblue/border{ + dir = 10 + }, +/obj/structure/bed/roller, +/turf/simulated/floor/tiled/white, +/area/medical/first_aid_station/seconddeck/aft) +"dVg" = ( +/obj/effect/floor_decal/borderfloorwhite, +/obj/effect/floor_decal/corner/paleblue/border, +/obj/structure/closet/medical_wall{ + pixel_x = 0; + pixel_y = -31 + }, +/obj/item/roller, +/obj/item/bodybag/cryobag, +/obj/item/weapon/storage/firstaid/regular, +/obj/item/weapon/storage/pill_bottle/spaceacillin, +/obj/machinery/camera/network/medbay{ + c_tag = "MED - FA Station Civilian"; + dir = 1 + }, +/turf/simulated/floor/tiled/white, +/area/medical/first_aid_station/seconddeck/aft) +"dVh" = ( +/obj/machinery/atmospherics/pipe/manifold/hidden, +/obj/effect/wingrille_spawn/reinforced, +/turf/simulated/floor/plating, +/area/hallway/secondary/entry/D1) +"dVi" = ( +/obj/machinery/atmospherics/pipe/manifold/hidden, +/obj/effect/wingrille_spawn/reinforced, +/turf/simulated/floor/plating, +/area/hallway/secondary/entry/D3) +"dVj" = ( +/obj/effect/wingrille_spawn/reinforced, +/obj/machinery/atmospherics/pipe/simple/hidden{ + dir = 6 + }, +/turf/simulated/floor/plating, +/area/hallway/secondary/entry/D2) +"dVk" = ( +/obj/structure/sign/securearea{ + desc = "A warning sign which reads 'KEEP CLEAR OF DOCKING AREA'."; + name = "KEEP CLEAR: DOCKING AREA"; + pixel_y = 0 + }, +/obj/effect/wingrille_spawn/reinforced, +/turf/simulated/floor/plating, +/area/hallway/secondary/entry/D2) +"dVl" = ( +/obj/effect/wingrille_spawn/reinforced, +/obj/machinery/atmospherics/pipe/simple/hidden{ + dir = 6 + }, +/turf/simulated/floor/plating, +/area/hallway/secondary/entry/D3) +"dVm" = ( +/obj/effect/wingrille_spawn/reinforced, +/obj/machinery/atmospherics/pipe/manifold/hidden{ + dir = 1; + icon_state = "map" + }, +/turf/simulated/floor/plating, +/area/hallway/secondary/entry/D3) +"dVn" = ( +/obj/structure/sign/securearea{ + desc = "A warning sign which reads 'KEEP CLEAR OF DOCKING AREA'."; + name = "KEEP CLEAR: DOCKING AREA"; + pixel_y = 0 + }, +/obj/effect/wingrille_spawn/reinforced, +/turf/simulated/floor/plating, +/area/hallway/secondary/entry/D3) +"dVo" = ( +/obj/effect/wingrille_spawn/reinforced, +/obj/machinery/atmospherics/pipe/simple/hidden{ + dir = 5; + icon_state = "intact" + }, +/turf/simulated/floor/plating, +/area/hallway/secondary/entry/D3) +"dVp" = ( +/obj/machinery/atmospherics/pipe/manifold/hidden{ + dir = 1; + icon_state = "map" + }, +/obj/effect/wingrille_spawn/reinforced, +/turf/simulated/floor/plating, +/area/hallway/secondary/entry/D1) +"dVq" = ( +/obj/machinery/atmospherics/pipe/manifold/hidden{ + dir = 1; + icon_state = "map" + }, +/obj/effect/wingrille_spawn/reinforced, +/turf/simulated/floor/plating, +/area/hallway/secondary/entry/D3) +"dVr" = ( +/obj/effect/wingrille_spawn/reinforced, +/obj/machinery/atmospherics/pipe/manifold/hidden, +/turf/simulated/floor/plating, +/area/hallway/secondary/entry/D3) +"dVs" = ( +/obj/structure/cable/green{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/obj/machinery/atmospherics/pipe/manifold/hidden/supply{ + dir = 1 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, +/obj/effect/floor_decal/steeldecal/steel_decals4{ + dir = 6 + }, +/obj/effect/floor_decal/steeldecal/steel_decals4{ + dir = 1 + }, +/turf/simulated/floor/tiled, +/area/tcomm/tcomfoyer) +"dVt" = ( +/obj/random/plushielarge, +/turf/simulated/floor/plating, +/area/maintenance/locker) +"dVu" = ( +/obj/machinery/atmospherics/pipe/simple/visible/universal, +/obj/structure/table/rack{ + dir = 1 + }, +/obj/random/maintenance/engineering, +/obj/random/maintenance/engineering, +/obj/random/maintenance/clean, +/obj/random/maintenance/clean, +/obj/random/cash, +/turf/simulated/floor/plating, +/area/maintenance/thirddeck/foreport) +"dVv" = ( +/obj/structure/table/rack, +/obj/random/maintenance/clean, +/obj/random/maintenance/clean, +/obj/random/maintenance/clean, +/obj/random/maintenance/clean, +/obj/random/cash, +/turf/simulated/floor/plating, +/area/maintenance/thirddeck/aftstarboard) +"dVw" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/effect/floor_decal/industrial/warning/corner{ + icon_state = "warningcorner"; + dir = 4 + }, +/obj/machinery/light{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden{ + icon_state = "intact"; + dir = 4 + }, +/turf/simulated/floor/tiled, +/area/hallway/primary/thirddeck/starboard) +"dVx" = ( +/obj/machinery/station_map{ + pixel_y = 32 + }, +/turf/simulated/floor/tiled, +/area/hallway/primary/seconddeck/port) +"dVy" = ( +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/effect/floor_decal/borderfloor, +/obj/effect/floor_decal/corner/paleblue/border, +/obj/machinery/station_map{ + dir = 1; + pixel_y = -32 + }, +/turf/simulated/floor/tiled, +/area/hallway/primary/seconddeck/starboard) +"dVz" = ( +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/machinery/station_map{ + pixel_y = 32 + }, +/turf/simulated/floor/tiled, +/area/hallway/primary/seconddeck/apcenter) +"dVA" = ( +/obj/structure/disposalpipe/segment, +/obj/effect/floor_decal/borderfloor{ + dir = 4 + }, +/obj/effect/floor_decal/corner/green/border{ + dir = 4 + }, +/obj/machinery/station_map{ + dir = 8; + pixel_x = 32 + }, +/turf/simulated/floor/tiled, +/area/hallway/primary/seconddeck/aft) +"dVB" = ( +/obj/machinery/atmospherics/pipe/manifold/hidden/supply, +/obj/machinery/station_map{ + dir = 1; + pixel_y = -32 + }, +/turf/simulated/floor/tiled, +/area/hallway/primary/thirddeck/central) +"dVC" = ( +/obj/machinery/botany/editor, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/obj/structure/cable/green{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/turf/simulated/floor/tiled/hydro, +/area/rnd/xenobiology/xenoflora) +"dVD" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/obj/structure/disposalpipe/segment, +/turf/simulated/floor/tiled/hydro, +/area/rnd/xenobiology/xenoflora) +"dVE" = ( +/obj/structure/reagent_dispensers/watertank/high, +/obj/item/weapon/reagent_containers/glass/bucket, +/obj/machinery/atmospherics/pipe/manifold/hidden/supply{ + dir = 1 + }, +/turf/simulated/floor/tiled/hydro, +/area/rnd/xenobiology/xenoflora) +"dVF" = ( +/obj/machinery/atmospherics/pipe/manifold/hidden/supply, +/turf/simulated/floor/tiled/hydro, +/area/rnd/xenobiology/xenoflora) +"dVG" = ( +/obj/machinery/atmospherics/unary/vent_scrubber/on{ + dir = 1 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/turf/simulated/floor/tiled/hydro, +/area/rnd/xenobiology/xenoflora) +"dVH" = ( +/obj/machinery/door/firedoor/border_only, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/obj/effect/wingrille_spawn/reinforced, +/turf/simulated/floor/plating, +/area/rnd/xenobiology/xenoflora) +"dVI" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/yellow, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/turf/simulated/floor/tiled/hydro, +/area/rnd/xenobiology/xenoflora) +"dVJ" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 9; + pixel_y = 0 + }, +/turf/simulated/floor/tiled/hydro, +/area/rnd/xenobiology/xenoflora_isolation) +"dVK" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/obj/structure/cable/green{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/turf/simulated/floor/tiled/hydro, +/area/rnd/xenobiology/xenoflora_isolation) +"dVL" = ( +/obj/machinery/atmospherics/unary/vent_scrubber/on{ + dir = 1 + }, +/turf/simulated/floor/tiled/hydro, +/area/rnd/xenobiology/xenoflora_isolation) +"dVM" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/yellow, +/turf/simulated/floor/tiled/hydro, +/area/rnd/xenobiology/xenoflora_isolation) +"dVN" = ( +/obj/effect/floor_decal/industrial/warning{ + icon_state = "warning"; + dir = 4 + }, +/turf/simulated/floor/tiled/hydro, +/area/rnd/xenobiology/xenoflora_isolation) +"dVO" = ( +/turf/simulated/floor/tiled/hydro, +/area/rnd/xenobiology/xenoflora_isolation) +"dVP" = ( +/obj/machinery/portable_atmospherics/canister/carbon_dioxide, +/turf/simulated/floor/tiled/techmaint, +/area/rnd/xenobiology/xenoflora_isolation) +"dVQ" = ( +/obj/structure/sign/deck/first, +/turf/simulated/wall/r_wall, +/area/rnd/research/firstdeck/hallway) +"dVR" = ( +/obj/machinery/door/firedoor/border_only, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/turf/simulated/floor/tiled/white, +/area/rnd/research/firstdeck/hallway) +"dVS" = ( +/obj/machinery/door/firedoor/border_only, +/obj/machinery/door/airlock/multi_tile/glass, +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/turf/simulated/floor/tiled/white, +/area/rnd/research/firstdeck/hallway) +"dVT" = ( +/obj/structure/bed/chair/office/dark, +/obj/effect/floor_decal/borderfloorwhite{ + dir = 1 + }, +/obj/effect/floor_decal/corner/green/border{ + dir = 1 + }, +/turf/simulated/floor/tiled/white, +/area/rnd/xenobiology/xenoflora) +"dVU" = ( +/obj/structure/table/glass, +/obj/item/weapon/storage/box/beakers{ + pixel_x = 2; + pixel_y = 2 + }, +/obj/item/weapon/storage/box/botanydisk, +/obj/effect/floor_decal/borderfloorwhite{ + dir = 1 + }, +/obj/effect/floor_decal/corner/green/border{ + dir = 1 + }, +/obj/item/device/radio/intercom{ + dir = 8; + name = "Station Intercom (General)"; + pixel_x = -21 + }, +/turf/simulated/floor/tiled/white, +/area/rnd/xenobiology/xenoflora) +"dVV" = ( +/obj/effect/floor_decal/borderfloorwhite{ + dir = 1 + }, +/obj/effect/floor_decal/corner/green/border{ + dir = 1 + }, +/turf/simulated/floor/tiled/white, +/area/rnd/xenobiology/xenoflora) +"dVW" = ( +/obj/effect/floor_decal/borderfloorwhite{ + dir = 5 + }, +/obj/effect/floor_decal/corner/green/border{ + dir = 5 + }, +/turf/simulated/floor/tiled/white, +/area/rnd/xenobiology/xenoflora) +"dVX" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/yellow, +/turf/simulated/floor/tiled/hydro, +/area/rnd/xenobiology/xenoflora) +"dVY" = ( +/obj/structure/cable/green{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/turf/simulated/floor/tiled/hydro, +/area/rnd/xenobiology/xenoflora) +"dVZ" = ( +/obj/structure/disposalpipe/segment, +/obj/effect/floor_decal/borderfloorwhite{ + dir = 9 + }, +/obj/effect/floor_decal/corner/green/border{ + dir = 9 + }, +/turf/simulated/floor/tiled/white, +/area/rnd/xenobiology/xenoflora) +"dWa" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/turf/simulated/floor/tiled/hydro, +/area/rnd/xenobiology/xenoflora) +"dWb" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/yellow, +/obj/effect/floor_decal/borderfloorwhite{ + dir = 1 + }, +/obj/effect/floor_decal/corner/green/border{ + dir = 1 + }, +/turf/simulated/floor/tiled/white, +/area/rnd/xenobiology/xenoflora) +"dWc" = ( +/obj/effect/floor_decal/industrial/warning{ + icon_state = "warning"; + dir = 1 + }, +/turf/simulated/floor/tiled/white, +/area/rnd/xenobiology/xenoflora_isolation) +"dWd" = ( +/obj/effect/floor_decal/industrial/warning{ + icon_state = "warning"; + dir = 1 + }, +/obj/machinery/power/apc{ + dir = 8; + name = "west bump"; + pixel_x = -24 + }, +/obj/structure/cable/green, +/obj/machinery/light_switch{ + pixel_x = -36 + }, +/turf/simulated/floor/tiled/white, +/area/rnd/xenobiology/xenoflora_isolation) +"dWe" = ( +/obj/machinery/atmospherics/binary/pump{ + dir = 1; + name = "Isolation to Waste" + }, +/obj/effect/floor_decal/industrial/warning/full, +/turf/simulated/floor/plating, +/area/rnd/xenobiology/xenoflora_isolation) +"dWf" = ( +/obj/machinery/atmospherics/pipe/simple/visible{ + icon_state = "intact"; + dir = 6 + }, +/obj/effect/floor_decal/industrial/warning{ + icon_state = "warning"; + dir = 9 + }, +/turf/simulated/floor/tiled, +/area/rnd/xenobiology/xenoflora_isolation) +"dWg" = ( +/obj/effect/floor_decal/industrial/warning{ + icon_state = "warning"; + dir = 1 + }, +/obj/machinery/atmospherics/portables_connector{ + dir = 8 + }, +/obj/machinery/portable_atmospherics/canister, +/turf/simulated/floor/tiled, +/area/rnd/xenobiology/xenoflora_isolation) +"dWh" = ( +/obj/machinery/vending/fitness, +/turf/simulated/floor/tiled/dark, +/area/rnd/research/firstdeck/hallway) +"dWi" = ( +/obj/structure/closet/firecloset, +/turf/simulated/floor/tiled/dark, +/area/rnd/research/firstdeck/hallway) +"dWj" = ( +/obj/structure/table/glass, +/obj/item/weapon/storage/box/gloves{ + pixel_x = 4; + pixel_y = 4 + }, +/obj/item/weapon/storage/box/syringes, +/turf/simulated/floor/tiled/white, +/area/rnd/xenobiology/xenoflora) +"dWk" = ( +/obj/structure/table/glass, +/obj/machinery/reagentgrinder, +/turf/simulated/floor/tiled/white, +/area/rnd/xenobiology/xenoflora) +"dWl" = ( +/obj/structure/table/glass, +/obj/item/weapon/clipboard, +/obj/item/weapon/folder/white, +/obj/item/weapon/pen, +/obj/machinery/camera/network/research{ + c_tag = "SCI - Xenoflora Port"; + dir = 1 + }, +/turf/simulated/floor/tiled/white, +/area/rnd/xenobiology/xenoflora) +"dWm" = ( +/obj/structure/table/glass, +/obj/item/weapon/paper_bin{ + pixel_x = 1; + pixel_y = 9 + }, +/obj/item/weapon/hand_labeler, +/obj/machinery/light, +/turf/simulated/floor/tiled/white, +/area/rnd/xenobiology/xenoflora) +"dWn" = ( +/obj/machinery/power/apc{ + dir = 2; + name = "south bump"; + pixel_y = -24 + }, +/obj/structure/cable/green{ + d2 = 4; + icon_state = "0-4" + }, +/obj/effect/floor_decal/borderfloorwhite{ + dir = 4 + }, +/obj/effect/floor_decal/corner/green/border{ + dir = 4 + }, +/obj/machinery/light_switch{ + pixel_x = 11; + pixel_y = -24 + }, +/turf/simulated/floor/tiled/white, +/area/rnd/xenobiology/xenoflora) +"dWo" = ( +/obj/structure/table/glass, +/obj/item/device/analyzer/plant_analyzer, +/obj/item/weapon/tape_roll, +/obj/item/device/analyzer/plant_analyzer, +/turf/simulated/floor/tiled/white, +/area/rnd/xenobiology/xenoflora) +"dWp" = ( +/obj/effect/floor_decal/industrial/warning/full, +/obj/machinery/atmospherics/tvalve/mirrored, +/obj/machinery/light, +/turf/simulated/floor/plating, +/area/rnd/xenobiology/xenoflora) +"dWq" = ( +/obj/structure/cable/green{ + d1 = 2; + d2 = 8; + icon_state = "2-8" + }, +/obj/structure/cable/green{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/turf/simulated/floor/tiled/hydro, +/area/rnd/xenobiology/xenoflora) +"dWr" = ( +/obj/structure/closet/crate/hydroponics/prespawned, +/obj/machinery/atmospherics/pipe/simple/hidden/yellow{ + dir = 4 + }, +/obj/structure/disposalpipe/segment, +/obj/effect/floor_decal/borderfloorwhite{ + dir = 8 + }, +/obj/effect/floor_decal/corner/green/border{ + dir = 8 + }, +/turf/simulated/floor/tiled/white, +/area/rnd/xenobiology/xenoflora) +"dWs" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/yellow{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/turf/simulated/floor/tiled/hydro, +/area/rnd/xenobiology/xenoflora) +"dWt" = ( +/obj/machinery/seed_storage/xenobotany, +/obj/machinery/atmospherics/pipe/simple/hidden/yellow{ + dir = 4 + }, +/obj/machinery/camera/network/research{ + c_tag = "SCI - Xenoflora Starboard"; + dir = 1 + }, +/turf/simulated/floor/tiled/white, +/area/rnd/xenobiology/xenoflora) +"dWu" = ( +/obj/machinery/vending/hydronutrients{ + categories = 3 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/yellow{ + dir = 4 + }, +/turf/simulated/floor/tiled/white, +/area/rnd/xenobiology/xenoflora) +"dWv" = ( +/obj/structure/closet/secure_closet/hydroponics{ + req_access = list(47) + }, +/obj/machinery/atmospherics/pipe/simple/hidden/yellow{ + dir = 4 + }, +/turf/simulated/floor/tiled/white, +/area/rnd/xenobiology/xenoflora) +"dWw" = ( +/obj/structure/closet/secure_closet/hydroponics{ + req_access = list(47) + }, +/obj/machinery/atmospherics/pipe/simple/hidden/yellow{ + dir = 4 + }, +/obj/machinery/light, +/turf/simulated/floor/tiled/white, +/area/rnd/xenobiology/xenoflora) +"dWx" = ( +/obj/structure/closet/emcloset/legacy, +/obj/machinery/atmospherics/pipe/simple/hidden/yellow{ + dir = 9; + icon_state = "intact" + }, +/turf/simulated/floor/tiled/white, +/area/rnd/xenobiology/xenoflora) +"dWy" = ( +/obj/machinery/atmospherics/binary/pump{ + dir = 4; + name = "Port to Isolation" + }, +/turf/simulated/floor/tiled/white, +/area/rnd/xenobiology/xenoflora_isolation) +"dWz" = ( +/obj/machinery/atmospherics/pipe/simple/visible{ + icon_state = "intact"; + dir = 6 + }, +/obj/machinery/meter, +/obj/machinery/light{ + dir = 8 + }, +/turf/simulated/floor/tiled/white, +/area/rnd/xenobiology/xenoflora_isolation) +"dWA" = ( +/obj/machinery/atmospherics/pipe/manifold/visible{ + dir = 1 + }, +/obj/machinery/meter, +/turf/simulated/floor/tiled/white, +/area/rnd/xenobiology/xenoflora_isolation) +"dWB" = ( +/obj/machinery/atmospherics/pipe/manifold4w/visible, +/turf/simulated/floor/tiled/white, +/area/rnd/xenobiology/xenoflora_isolation) +"dWC" = ( +/obj/machinery/atmospherics/pipe/manifold/visible{ + dir = 8 + }, +/obj/effect/floor_decal/industrial/warning{ + icon_state = "warning"; + dir = 8 + }, +/obj/machinery/meter, +/turf/simulated/floor/tiled, +/area/rnd/xenobiology/xenoflora_isolation) +"dWD" = ( +/obj/machinery/atmospherics/unary/heater{ + dir = 8; + icon_state = "heater" + }, +/obj/machinery/light{ + icon_state = "tube1"; + dir = 4 + }, +/turf/simulated/floor/tiled, +/area/rnd/xenobiology/xenoflora_isolation) +"dWE" = ( +/obj/machinery/vending/cigarette, +/turf/simulated/floor/tiled/dark, +/area/rnd/research/firstdeck/hallway) +"dWF" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/obj/effect/floor_decal/borderfloorwhite/corner, +/obj/effect/floor_decal/corner/purple/bordercorner, +/turf/simulated/floor/tiled/white, +/area/rnd/research/firstdeck/hallway) +"dWG" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/effect/floor_decal/borderfloorwhite/corner{ + dir = 8 + }, +/obj/effect/floor_decal/corner/purple/bordercorner{ + dir = 8 + }, +/turf/simulated/floor/tiled/white, +/area/rnd/research/firstdeck/hallway) +"dWH" = ( +/obj/structure/closet/emcloset/legacy, +/turf/simulated/floor/tiled/dark, +/area/rnd/research/firstdeck/hallway) +"dWI" = ( +/obj/machinery/status_display, +/turf/simulated/wall, +/area/rnd/xenobiology/xenoflora) +"dWJ" = ( +/obj/machinery/door/firedoor/glass, +/obj/effect/wingrille_spawn/reinforced, +/turf/simulated/floor/plating, +/area/rnd/xenobiology/xenoflora) +"dWK" = ( +/obj/machinery/door/firedoor/glass, +/obj/machinery/atmospherics/pipe/simple/hidden/universal, +/obj/effect/wingrille_spawn/reinforced, +/turf/simulated/floor/plating, +/area/rnd/xenobiology/xenoflora) +"dWL" = ( +/obj/machinery/door/firedoor/border_only, +/obj/structure/cable/green{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/obj/machinery/door/airlock/glass_research{ + name = "Xenoflora Research"; + req_access = list(55) + }, +/turf/simulated/floor/tiled/steel_grid, +/area/rnd/xenobiology/xenoflora) +"dWM" = ( +/obj/machinery/smartfridge, +/obj/structure/disposalpipe/segment, +/turf/simulated/wall, +/area/rnd/xenobiology/xenoflora) +"dWN" = ( +/obj/machinery/door/firedoor/border_only, +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/machinery/door/airlock/glass_research{ + name = "Xenoflora Research"; + req_access = list(55) + }, +/turf/simulated/floor/tiled/steel_grid, +/area/rnd/xenobiology/xenoflora) +"dWO" = ( +/obj/machinery/ai_status_display, +/turf/simulated/wall, +/area/rnd/xenobiology/xenoflora) +"dWP" = ( +/obj/structure/reagent_dispensers/watertank, +/turf/simulated/floor/tiled/white, +/area/rnd/xenobiology/xenoflora_isolation) +"dWQ" = ( +/obj/machinery/atmospherics/portables_connector{ + dir = 1 + }, +/obj/item/weapon/tool/wrench, +/turf/simulated/floor/tiled/white, +/area/rnd/xenobiology/xenoflora_isolation) +"dWR" = ( +/obj/machinery/atmospherics/portables_connector{ + dir = 1 + }, +/obj/machinery/firealarm{ + dir = 1; + pixel_x = 0; + pixel_y = -24 + }, +/turf/simulated/floor/tiled/white, +/area/rnd/xenobiology/xenoflora_isolation) +"dWS" = ( +/obj/machinery/atmospherics/portables_connector{ + dir = 1 + }, +/turf/simulated/floor/tiled/white, +/area/rnd/xenobiology/xenoflora_isolation) +"dWT" = ( +/obj/machinery/atmospherics/pipe/simple/visible{ + icon_state = "intact"; + dir = 5 + }, +/obj/effect/floor_decal/industrial/warning{ + icon_state = "warning"; + dir = 8 + }, +/turf/simulated/floor/tiled, +/area/rnd/xenobiology/xenoflora_isolation) +"dWU" = ( +/obj/machinery/atmospherics/portables_connector{ + dir = 1 + }, +/obj/machinery/camera/network/research{ + c_tag = "SCI - Xenoflora Isolation Aft"; + dir = 1 + }, +/turf/simulated/floor/tiled/white, +/area/rnd/xenobiology/xenoflora_isolation) +"dWV" = ( +/obj/machinery/atmospherics/unary/freezer{ + dir = 8; + icon_state = "freezer" + }, +/turf/simulated/floor/tiled, +/area/rnd/xenobiology/xenoflora_isolation) +"dWW" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/obj/structure/cable{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/obj/random/mob/mouse, +/turf/simulated/floor/plating, +/area/maintenance/firstdeck/foreport) +"dWX" = ( +/obj/machinery/vending/coffee, +/obj/machinery/light{ + dir = 8 + }, +/turf/simulated/floor/tiled/dark, +/area/rnd/research/firstdeck/hallway) +"dWY" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 5 + }, +/obj/effect/floor_decal/borderfloorwhite/corner{ + dir = 4 + }, +/obj/effect/floor_decal/corner/purple/bordercorner{ + dir = 4 + }, +/turf/simulated/floor/tiled/white, +/area/rnd/research/firstdeck/hallway) +"dWZ" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/effect/floor_decal/borderfloorwhite{ + dir = 8 + }, +/obj/effect/floor_decal/corner/purple/border{ + dir = 8 + }, +/turf/simulated/floor/tiled/white, +/area/rnd/research/firstdeck/hallway) +"dXa" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, +/obj/machinery/alarm{ + pixel_y = 22 + }, +/obj/effect/floor_decal/borderfloorwhite{ + dir = 1 + }, +/obj/effect/floor_decal/corner/purple/border{ + dir = 1 + }, +/turf/simulated/floor/tiled/white, +/area/rnd/research/firstdeck/hallway) +"dXb" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, +/obj/effect/floor_decal/borderfloorwhite{ + dir = 1 + }, +/obj/effect/floor_decal/corner/purple/border{ + dir = 1 + }, +/turf/simulated/floor/tiled/white, +/area/rnd/research/firstdeck/hallway) +"dXc" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, +/obj/effect/floor_decal/borderfloorwhite{ + dir = 1 + }, +/obj/effect/floor_decal/corner/purple/border{ + dir = 1 + }, +/obj/machinery/camera/network/research{ + c_tag = "SCI - First Deck Research Hallway Port"; + dir = 2 + }, +/turf/simulated/floor/tiled/white, +/area/rnd/research/firstdeck/hallway) +"dXd" = ( +/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{ + dir = 1 + }, +/obj/effect/floor_decal/borderfloorwhite{ + dir = 1 + }, +/obj/effect/floor_decal/corner/purple/border{ + dir = 1 + }, +/obj/machinery/light{ + dir = 1 + }, +/turf/simulated/floor/tiled/white, +/area/rnd/research/firstdeck/hallway) +"dXe" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, +/obj/effect/floor_decal/borderfloorwhite/corner{ + dir = 1 + }, +/obj/effect/floor_decal/corner/purple/bordercorner{ + dir = 1 + }, +/turf/simulated/floor/tiled/white, +/area/rnd/research/firstdeck/hallway) +"dXf" = ( +/obj/machinery/atmospherics/unary/vent_pump/on, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, +/obj/effect/floor_decal/borderfloorwhite{ + dir = 1 + }, +/obj/effect/floor_decal/corner/purple/border{ + dir = 1 + }, +/turf/simulated/floor/tiled/white, +/area/rnd/research/firstdeck/hallway) +"dXg" = ( +/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers, +/obj/machinery/door/firedoor/border_only, +/obj/effect/floor_decal/borderfloorwhite/corner2{ + dir = 1 + }, +/obj/effect/floor_decal/borderfloorwhite/corner2{ + dir = 4 + }, +/obj/effect/floor_decal/corner/purple/bordercorner2{ + dir = 4 + }, +/obj/effect/floor_decal/corner/purple/bordercorner2{ + dir = 1 + }, +/turf/simulated/floor/tiled/white, +/area/rnd/research/firstdeck/hallway) +"dXh" = ( +/obj/structure/cable/green{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, +/turf/simulated/floor/tiled/white, +/area/rnd/research/firstdeck/hallway) +"dXi" = ( +/obj/structure/disposalpipe/segment, +/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{ + dir = 1 + }, +/turf/simulated/floor/tiled/white, +/area/rnd/research/firstdeck/hallway) +"dXj" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, +/turf/simulated/floor/tiled/white, +/area/rnd/research/firstdeck/hallway) +"dXk" = ( +/obj/machinery/atmospherics/unary/vent_pump/on, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, +/obj/effect/floor_decal/borderfloorwhite/corner{ + dir = 4 + }, +/obj/effect/floor_decal/corner/purple/bordercorner{ + dir = 4 + }, +/turf/simulated/floor/tiled/white, +/area/rnd/research/firstdeck/hallway) +"dXl" = ( +/obj/effect/floor_decal/borderfloorwhite{ + dir = 1 + }, +/obj/effect/floor_decal/corner/purple/border{ + dir = 1 + }, +/turf/simulated/floor/tiled/white, +/area/rnd/research/firstdeck/hallway) +"dXm" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 10 + }, +/obj/effect/floor_decal/borderfloorwhite{ + dir = 1 + }, +/obj/effect/floor_decal/corner/purple/border{ + dir = 1 + }, +/obj/machinery/camera/network/research{ + c_tag = "SCI - First Deck Research Hallway Starboard"; + dir = 2 + }, +/turf/simulated/floor/tiled/white, +/area/rnd/research/firstdeck/hallway) +"dXn" = ( +/obj/effect/floor_decal/borderfloorwhite{ + dir = 5 + }, +/obj/effect/floor_decal/corner/purple/border{ + dir = 5 + }, +/obj/machinery/light{ + dir = 1 + }, +/turf/simulated/floor/tiled/white, +/area/rnd/research/firstdeck/hallway) +"dXo" = ( +/turf/simulated/wall/r_wall, +/area/rnd/xenobiology) +"dXp" = ( +/obj/machinery/disposal, +/obj/structure/disposalpipe/trunk{ + dir = 4 + }, +/turf/simulated/floor/tiled/dark, +/area/rnd/research/firstdeck/hallway) +"dXq" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/effect/floor_decal/borderfloorwhite, +/obj/effect/floor_decal/corner/purple/border, +/turf/simulated/floor/tiled/white, +/area/rnd/research/firstdeck/hallway) +"dXr" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 5 + }, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/effect/floor_decal/borderfloorwhite{ + dir = 10 + }, +/obj/effect/floor_decal/corner/purple/border{ + dir = 10 + }, +/turf/simulated/floor/tiled/white, +/area/rnd/research/firstdeck/hallway) +"dXs" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/effect/floor_decal/borderfloorwhite/corner{ + dir = 8 + }, +/obj/effect/floor_decal/corner/purple/bordercorner{ + dir = 8 + }, +/turf/simulated/floor/tiled/white, +/area/rnd/research/firstdeck/hallway) +"dXt" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/turf/simulated/floor/tiled/white, +/area/rnd/research/firstdeck/hallway) +"dXu" = ( +/obj/machinery/atmospherics/unary/vent_scrubber/on{ + dir = 1 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/turf/simulated/floor/tiled/white, +/area/rnd/research/firstdeck/hallway) +"dXv" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/structure/cable/green{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/obj/effect/floor_decal/borderfloorwhite, +/obj/effect/floor_decal/corner/purple/border, +/turf/simulated/floor/tiled/white, +/area/rnd/research/firstdeck/hallway) +"dXw" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/machinery/power/apc{ + dir = 2; + name = "south bump"; + pixel_y = -24 + }, +/obj/structure/cable/green{ + d2 = 4; + icon_state = "0-4" + }, +/obj/machinery/light_switch{ + pixel_x = 11; + pixel_y = -24 + }, +/obj/effect/floor_decal/borderfloorwhite/corner, +/obj/effect/floor_decal/corner/purple/bordercorner, +/turf/simulated/floor/tiled/white, +/area/rnd/research/firstdeck/hallway) +"dXx" = ( +/obj/machinery/atmospherics/pipe/manifold/hidden/supply, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/structure/cable/green{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/obj/effect/floor_decal/borderfloorwhite, +/obj/effect/floor_decal/corner/purple/border, +/turf/simulated/floor/tiled/white, +/area/rnd/research/firstdeck/hallway) +"dXy" = ( +/obj/structure/cable/green{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/machinery/door/firedoor/border_only, +/obj/effect/floor_decal/borderfloorwhite, +/obj/effect/floor_decal/corner/purple/border, +/turf/simulated/floor/tiled/white, +/area/rnd/research/firstdeck/hallway) +"dXz" = ( +/obj/structure/cable/green{ + d1 = 1; + d2 = 4; + icon_state = "1-4" + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/structure/cable/green{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/obj/effect/floor_decal/borderfloorwhite, +/obj/effect/floor_decal/corner/purple/border, +/turf/simulated/floor/tiled/white, +/area/rnd/research/firstdeck/hallway) +"dXA" = ( +/obj/structure/cable/green{ + d1 = 2; + d2 = 8; + icon_state = "2-8" + }, +/obj/structure/cable/green{ + d1 = 2; + d2 = 4; + icon_state = "2-4" + }, +/obj/structure/disposalpipe/junction, +/obj/machinery/atmospherics/pipe/manifold/hidden/supply{ + dir = 1 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/obj/effect/floor_decal/borderfloorwhite, +/obj/effect/floor_decal/corner/purple/border, +/turf/simulated/floor/tiled/white, +/area/rnd/research/firstdeck/hallway) +"dXB" = ( +/obj/machinery/atmospherics/pipe/manifold/hidden/supply, +/obj/structure/cable/green{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/effect/floor_decal/borderfloorwhite, +/obj/effect/floor_decal/corner/purple/border, +/turf/simulated/floor/tiled/white, +/area/rnd/research/firstdeck/hallway) +"dXC" = ( +/obj/structure/cable/green{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/obj/effect/floor_decal/borderfloorwhite, +/obj/effect/floor_decal/corner/purple/border, +/turf/simulated/floor/tiled/white, +/area/rnd/research/firstdeck/hallway) +"dXD" = ( +/obj/structure/cable/green{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/obj/machinery/atmospherics/pipe/manifold/hidden/supply, +/obj/effect/floor_decal/borderfloorwhite, +/obj/effect/floor_decal/corner/purple/border, +/turf/simulated/floor/tiled/white, +/area/rnd/research/firstdeck/hallway) +"dXE" = ( +/obj/machinery/atmospherics/unary/vent_scrubber/on{ + dir = 8 + }, +/turf/simulated/floor/tiled/white, +/area/rnd/research/firstdeck/hallway) +"dXF" = ( +/obj/structure/cable/green{ + d1 = 2; + d2 = 8; + icon_state = "2-8" + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 10 + }, +/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{ + dir = 8 + }, +/obj/effect/floor_decal/borderfloorwhite/corner{ + dir = 8 + }, +/obj/effect/floor_decal/corner/purple/bordercorner{ + dir = 8 + }, +/turf/simulated/floor/tiled/white, +/area/rnd/research/firstdeck/hallway) +"dXG" = ( +/obj/structure/reagent_dispensers/watertank, +/obj/item/weapon/extinguisher, +/turf/simulated/floor/tiled/dark, +/area/rnd/research/firstdeck/hallway) +"dXH" = ( +/obj/effect/floor_decal/borderfloorwhite{ + dir = 4 + }, +/obj/effect/floor_decal/corner/purple/border{ + dir = 4 + }, +/turf/simulated/floor/tiled/white, +/area/rnd/research/firstdeck/hallway) +"dXI" = ( +/obj/structure/disposalpipe/trunk, +/obj/structure/disposaloutlet{ + dir = 4 + }, +/turf/simulated/floor/reinforced, +/area/rnd/xenobiology) +"dXJ" = ( +/obj/effect/floor_decal/industrial/warning{ + icon_state = "warning"; + dir = 4 + }, +/turf/simulated/floor/reinforced, +/area/rnd/xenobiology) +"dXK" = ( +/turf/simulated/floor/reinforced, +/area/rnd/xenobiology) +"dXL" = ( +/obj/effect/floor_decal/industrial/warning{ + icon_state = "warning"; + dir = 8 + }, +/turf/simulated/floor/reinforced, +/area/rnd/xenobiology) +"dXM" = ( +/obj/effect/floor_decal/industrial/hatch/yellow, +/obj/machinery/door/blast/regular{ + desc = "Blastdoor divider"; + id = "xenobioout7station"; + name = "Containment Divider" + }, +/turf/simulated/floor/reinforced, +/area/rnd/xenobiology) +"dXN" = ( +/obj/structure/disposalpipe/trunk, +/obj/structure/disposaloutlet{ + dir = 8 + }, +/turf/simulated/floor/reinforced, +/area/rnd/xenobiology) +"dXO" = ( +/obj/structure/flora/pottedplant/crystal, +/obj/structure/extinguisher_cabinet{ + pixel_x = -27 + }, +/turf/simulated/floor/tiled/dark, +/area/rnd/research/firstdeck/hallway) +"dXP" = ( +/obj/structure/table/glass, +/obj/item/device/radio/intercom{ + name = "Station Intercom (General)"; + pixel_y = -21 + }, +/turf/simulated/floor/tiled/dark, +/area/rnd/research/firstdeck/hallway) +"dXQ" = ( +/obj/structure/bed/chair{ + dir = 4 + }, +/turf/simulated/floor/tiled/dark, +/area/rnd/research/firstdeck/hallway) +"dXR" = ( +/obj/structure/bed/chair{ + dir = 8 + }, +/obj/machinery/newscaster{ + pixel_x = 30; + pixel_y = 0 + }, +/turf/simulated/floor/tiled/dark, +/area/rnd/research/firstdeck/hallway) +"dXS" = ( +/obj/machinery/door/firedoor/border_only, +/turf/simulated/floor/tiled/steel_grid, +/area/rnd/research/firstdeck/hallway) +"dXT" = ( +/obj/machinery/light, +/obj/structure/sign/deck/second{ + pixel_y = -32 + }, +/obj/effect/floor_decal/borderfloor, +/obj/effect/floor_decal/corner/green/border, +/obj/structure/table/bench/padded, +/turf/simulated/floor/tiled, +/area/hallway/primary/seconddeck/aft) +"dXU" = ( +/obj/machinery/recharge_station, +/turf/simulated/floor/tiled/dark, +/area/rnd/research/firstdeck/hallway) +"dXV" = ( +/obj/structure/closet/wardrobe/science_white, +/turf/simulated/floor/tiled/dark, +/area/rnd/research/firstdeck/hallway) +"dXW" = ( +/obj/structure/table/glass, +/obj/machinery/firealarm{ + dir = 1; + pixel_y = -24 + }, +/turf/simulated/floor/tiled/dark, +/area/rnd/research/firstdeck/hallway) +"dXX" = ( +/obj/machinery/washing_machine, +/obj/machinery/light, +/turf/simulated/floor/tiled/dark, +/area/rnd/research/firstdeck/hallway) +"dXY" = ( +/obj/structure/cable/green{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/obj/machinery/door/firedoor/border_only, +/obj/machinery/door/airlock/maintenance{ + name = "Research Maintenance Access"; + req_one_access = list(47) + }, +/obj/structure/disposalpipe/segment, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/turf/simulated/floor/plating, +/area/rnd/research/firstdeck/hallway) +"dXZ" = ( +/obj/structure/cable/green{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/obj/effect/floor_decal/borderfloorwhite{ + dir = 8 + }, +/obj/effect/floor_decal/corner/purple/border{ + dir = 8 + }, +/turf/simulated/floor/tiled/white, +/area/rnd/research/firstdeck/hallway) +"dYa" = ( +/obj/machinery/floodlight, +/obj/machinery/alarm{ + dir = 8; + pixel_x = 22; + pixel_y = 0 + }, +/turf/simulated/floor/tiled/dark, +/area/rnd/research/firstdeck/hallway) +"dYb" = ( +/obj/structure/disposalpipe/segment, +/obj/machinery/light/small{ + dir = 8 + }, +/turf/simulated/floor/reinforced, +/area/rnd/xenobiology) +"dYc" = ( +/obj/effect/landmark{ + name = "blobstart" + }, +/turf/simulated/floor/reinforced, +/area/rnd/xenobiology) +"dYd" = ( +/obj/structure/disposalpipe/segment, +/obj/machinery/light/small{ + dir = 4 + }, +/turf/simulated/floor/reinforced, +/area/rnd/xenobiology) +"dYe" = ( +/obj/machinery/door/firedoor/border_only, +/obj/effect/wingrille_spawn/reinforced, +/turf/simulated/floor/plating, +/area/rnd/xenobiology) +"dYf" = ( +/obj/machinery/door/firedoor/border_only, +/obj/effect/wingrille_spawn/reinforced, +/obj/machinery/atmospherics/pipe/simple/hidden/yellow, +/turf/simulated/floor/plating, +/area/rnd/xenobiology) +"dYg" = ( +/obj/machinery/door/blast/regular{ + density = 0; + icon_state = "pdoor0"; + id = "Biohazard"; + name = "Biohazard Shutter"; + opacity = 0 + }, +/turf/simulated/floor/tiled/dark, +/area/hallway/secondary/escape/firstdeck/ep_starboard1) +"dYh" = ( +/obj/structure/cable/green{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/obj/machinery/door/blast/regular{ + density = 0; + icon_state = "pdoor0"; + id = "Biohazard"; + name = "Biohazard Shutter"; + opacity = 0 + }, +/obj/structure/disposalpipe/segment, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/turf/simulated/floor/plating, +/area/maintenance/firstdeck/centralstarboard) +"dYi" = ( +/obj/machinery/door/blast/regular{ + density = 0; + icon_state = "pdoor0"; + id = "Biohazard"; + name = "Biohazard Shutter"; + opacity = 0 + }, +/turf/simulated/floor/plating, +/area/maintenance/firstdeck/centralstarboard) +"dYj" = ( +/obj/effect/floor_decal/borderfloorwhite/corner, +/obj/effect/floor_decal/corner/purple/bordercorner, +/turf/simulated/floor/tiled/white, +/area/rnd/research/firstdeck/hallway) +"dYk" = ( +/obj/effect/floor_decal/borderfloorwhite{ + dir = 6 + }, +/obj/effect/floor_decal/corner/purple/border{ + dir = 6 + }, +/turf/simulated/floor/tiled/white, +/area/rnd/research/firstdeck/hallway) +"dYl" = ( +/obj/structure/disposalpipe/segment, +/turf/simulated/floor/reinforced, +/area/rnd/xenobiology) +"dYm" = ( +/obj/structure/table/glass, +/obj/item/clothing/glasses/science, +/obj/item/clothing/glasses/science, +/obj/item/weapon/weldingtool, +/obj/item/clothing/head/welding, +/obj/item/device/radio/intercom{ + dir = 1; + name = "Station Intercom (General)"; + pixel_y = 21 + }, +/turf/simulated/floor/tiled, +/area/rnd/xenobiology) +"dYn" = ( +/obj/machinery/computer/operating{ + name = "Xenobiology Operating Computer" + }, +/obj/structure/extinguisher_cabinet{ + pixel_x = 28; + pixel_y = 0 + }, +/turf/simulated/floor/tiled, +/area/rnd/xenobiology) +"dYo" = ( +/obj/machinery/optable{ + name = "Xenobiology Operating Table" + }, +/obj/machinery/light{ + dir = 1 + }, +/turf/simulated/floor/tiled, +/area/rnd/xenobiology) +"dYp" = ( +/obj/item/weapon/extinguisher, +/obj/structure/catwalk, +/obj/structure/door_assembly/door_assembly_ext, +/turf/simulated/floor/plating, +/area/maintenance/firstdeck/centralstarboard) +"dYq" = ( +/obj/structure/cable/green{ + d1 = 1; + d2 = 4; + icon_state = "1-4" + }, +/obj/structure/disposalpipe/segment{ + dir = 1; + icon_state = "pipe-c" + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 5 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 5 + }, +/turf/simulated/floor/plating, +/area/maintenance/firstdeck/centralstarboard) +"dYr" = ( +/obj/structure/table/woodentable, +/obj/item/weapon/paper_bin{ + pixel_x = -3; + pixel_y = 7 + }, +/obj/item/weapon/pen/invisible, +/obj/item/clothing/under/suit_jacket/red, +/obj/item/weapon/barcodescanner, +/obj/machinery/newscaster{ + pixel_y = -30 + }, +/obj/item/weapon/book/codex/lore/news, +/turf/simulated/floor/carpet, +/area/library) +"dYs" = ( +/obj/item/device/radio/intercom{ + dir = 4; + name = "Station Intercom (General)"; + pixel_x = 21 + }, +/obj/effect/floor_decal/borderfloorwhite{ + dir = 4 + }, +/obj/effect/floor_decal/corner/purple/border{ + dir = 4 + }, +/turf/simulated/floor/tiled/white, +/area/rnd/research/firstdeck/hallway) +"dYt" = ( +/obj/structure/cable/green{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/obj/machinery/firealarm{ + dir = 8; + pixel_x = -24 + }, +/obj/effect/floor_decal/borderfloorwhite{ + dir = 8 + }, +/obj/effect/floor_decal/corner/purple/border{ + dir = 8 + }, +/turf/simulated/floor/tiled/white, +/area/rnd/research/firstdeck/hallway) +"dYu" = ( +/obj/structure/disposalpipe/segment, +/obj/effect/wingrille_spawn/reinforced, +/obj/structure/cable/green{ + d2 = 4; + icon_state = "0-4" + }, +/obj/structure/window/reinforced/full, +/obj/machinery/door/blast/regular{ + density = 0; + dir = 4; + icon_state = "pdoor0"; + id = "xenobio6station"; + name = "Containment Blast Doors"; + opacity = 0 + }, +/turf/simulated/floor/plating, +/area/rnd/xenobiology) +"dYv" = ( +/obj/effect/wingrille_spawn/reinforced, +/obj/structure/cable/green{ + d2 = 8; + icon_state = "0-8" + }, +/obj/structure/window/reinforced/full, +/obj/machinery/door/blast/regular{ + density = 0; + dir = 4; + icon_state = "pdoor0"; + id = "xenobio6station"; + name = "Containment Blast Doors"; + opacity = 0 + }, +/turf/simulated/floor/plating, +/area/rnd/xenobiology) +"dYw" = ( +/obj/effect/floor_decal/industrial/hatch/yellow, +/obj/structure/cable/green{ + d1 = 2; + d2 = 4; + icon_state = "2-4" + }, +/obj/structure/cable/green{ + d1 = 2; + d2 = 8; + icon_state = "2-8" + }, +/obj/machinery/door/window/brigdoor/northleft{ + name = "Containment Pen"; + req_access = list(47) + }, +/obj/machinery/door/blast/regular{ + density = 0; + dir = 4; + icon_state = "pdoor0"; + id = "xenobio6station"; + name = "Containment Blast Doors"; + opacity = 0 + }, +/turf/simulated/floor/tiled/techmaint, +/area/rnd/xenobiology) +"dYx" = ( +/obj/effect/wingrille_spawn/reinforced, +/obj/structure/cable/green{ + d2 = 4; + icon_state = "0-4" + }, +/obj/structure/window/reinforced/full, +/obj/machinery/door/blast/regular{ + density = 0; + dir = 4; + icon_state = "pdoor0"; + id = "xenobio5station"; + name = "Containment Blast Doors"; + opacity = 0 + }, +/turf/simulated/floor/plating, +/area/rnd/xenobiology) +"dYy" = ( +/turf/simulated/wall, +/area/rnd/xenobiology) +"dYz" = ( +/obj/structure/disposalpipe/segment, +/obj/effect/wingrille_spawn/reinforced, +/obj/structure/cable/green{ + d2 = 8; + icon_state = "0-8" + }, +/obj/structure/window/reinforced/full, +/obj/machinery/door/blast/regular{ + density = 0; + dir = 4; + icon_state = "pdoor0"; + id = "xenobio5station"; + name = "Containment Blast Doors"; + opacity = 0 + }, +/turf/simulated/floor/plating, +/area/rnd/xenobiology) +"dYA" = ( +/obj/effect/floor_decal/industrial/hatch/yellow, +/obj/structure/cable/green{ + d1 = 2; + d2 = 4; + icon_state = "2-4" + }, +/obj/structure/cable/green{ + d1 = 2; + d2 = 8; + icon_state = "2-8" + }, +/obj/machinery/door/window/brigdoor/northleft{ + name = "Containment Pen"; + req_access = list(47) + }, +/obj/machinery/door/blast/regular{ + density = 0; + dir = 4; + icon_state = "pdoor0"; + id = "xenobio5station"; + name = "Containment Blast Doors"; + opacity = 0 + }, +/turf/simulated/floor/tiled/techmaint, +/area/rnd/xenobiology) +"dYB" = ( +/obj/structure/table/glass, +/obj/item/weapon/surgical/scalpel{ + pixel_y = 12 + }, +/obj/item/weapon/surgical/circular_saw, +/turf/simulated/floor/tiled/white, +/area/rnd/xenobiology) +"dYC" = ( +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/turf/simulated/floor/tiled/white, +/area/rnd/xenobiology) +"dYD" = ( +/obj/structure/disposalpipe/segment{ + dir = 4; + icon_state = "pipe-c" + }, +/turf/simulated/floor/tiled/white, +/area/rnd/xenobiology) +"dYE" = ( +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/turf/simulated/wall, +/area/rnd/xenobiology) +"dYF" = ( +/obj/structure/closet, +/obj/item/toy/figure/scientist, +/obj/item/clothing/accessory/armband/science, +/obj/item/weapon/reagent_containers/glass/bucket, +/obj/item/clothing/shoes/galoshes, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/turf/simulated/floor/tiled/dark, +/area/rnd/xenobiology) +"dYG" = ( +/obj/structure/disposalpipe/trunk{ + dir = 8 + }, +/obj/structure/disposaloutlet{ + dir = 4 + }, +/obj/machinery/shield_diffuser, +/turf/simulated/floor/airless, +/area/rnd/xenobiology) +"dYH" = ( +/obj/item/device/radio/intercom{ + name = "Station Intercom (General)"; + pixel_y = -21 + }, +/obj/machinery/light_switch{ + pixel_x = 11; + pixel_y = -24 + }, +/turf/simulated/floor/tiled, +/area/hallway/secondary/escape/firstdeck/ep_starboard1) +"dYI" = ( +/obj/machinery/door/firedoor/border_only, +/obj/machinery/door/airlock/maintenance{ + req_access = null; + req_one_access = list(5,12,47) + }, +/turf/simulated/floor/plating, +/area/maintenance/firstdeck/centralstarboard) +"dYJ" = ( +/obj/machinery/atmospherics/unary/vent_pump/on{ + dir = 8 + }, +/obj/structure/extinguisher_cabinet{ + pixel_x = 25 + }, +/obj/effect/floor_decal/borderfloorwhite{ + dir = 4 + }, +/obj/effect/floor_decal/corner/purple/border{ + dir = 4 + }, +/turf/simulated/floor/tiled/white, +/area/rnd/research/firstdeck/hallway) +"dYK" = ( +/obj/structure/cable/green{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/obj/machinery/atmospherics/pipe/manifold/hidden/supply{ + dir = 8 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/obj/effect/floor_decal/borderfloorwhite{ + dir = 8 + }, +/obj/effect/floor_decal/corner/purple/border{ + dir = 8 + }, +/obj/machinery/light{ + dir = 8 + }, +/turf/simulated/floor/tiled/white, +/area/rnd/research/firstdeck/hallway) +"dYL" = ( +/obj/structure/table/standard, +/obj/machinery/reagentgrinder, +/obj/machinery/vending/wallmed1{ + name = "Emergency NanoMed"; + pixel_x = -28; + pixel_y = 0 + }, +/obj/machinery/ai_status_display{ + pixel_y = 32 + }, +/turf/simulated/floor/tiled, +/area/rnd/xenobiology) +"dYM" = ( +/obj/machinery/disposal, +/obj/structure/disposalpipe/trunk{ + dir = 1 + }, +/obj/structure/window/reinforced{ + dir = 4 + }, +/obj/effect/floor_decal/industrial/warning{ + dir = 10 + }, +/turf/simulated/floor/tiled/dark, +/area/rnd/xenobiology) +"dYN" = ( +/obj/structure/table/standard, +/obj/machinery/chemical_dispenser/full{ + density = 1 + }, +/turf/simulated/floor/tiled, +/area/rnd/xenobiology) +"dYO" = ( +/obj/structure/table/reinforced, +/obj/structure/window/reinforced{ + dir = 8 + }, +/obj/effect/floor_decal/industrial/warning, +/obj/machinery/button/remote/blast_door{ + id = "xenobio6station"; + name = "Containment Blast Doors"; + pixel_x = 0; + pixel_y = 4; + req_access = list(55) + }, +/turf/simulated/floor/tiled/dark, +/area/rnd/xenobiology) +"dYP" = ( +/obj/structure/extinguisher_cabinet{ + pixel_y = -30 + }, +/obj/structure/closet/lasertag/red, +/obj/item/stack/flag/red, +/obj/effect/floor_decal/borderfloor, +/obj/effect/floor_decal/corner/green/border, +/turf/simulated/floor/tiled, +/area/holodeck_control) +"dYQ" = ( +/obj/structure/table/reinforced, +/obj/structure/window/reinforced{ + dir = 4 + }, +/obj/effect/floor_decal/industrial/warning, +/obj/machinery/button/remote/blast_door{ + id = "xenobio5station"; + name = "Containment Blast Doors"; + pixel_x = 0; + pixel_y = 4; + req_access = list(55) + }, +/turf/simulated/floor/tiled/dark, +/area/rnd/xenobiology) +"dYR" = ( +/obj/structure/reagent_dispensers/watertank, +/obj/item/weapon/extinguisher, +/obj/machinery/button/remote/blast_door{ + desc = "A remote control-switch for the divider between pens."; + id = "xenobioout7station"; + name = "Containment Divider Switch"; + pixel_x = 0; + pixel_y = 28; + req_access = list(55) + }, +/obj/effect/floor_decal/industrial/warning, +/obj/machinery/light{ + dir = 1 + }, +/obj/machinery/camera/network/research{ + c_tag = "SCI - Xenobiology Fore"; + dir = 2 + }, +/turf/simulated/floor/tiled/dark, +/area/rnd/xenobiology) +"dYS" = ( +/obj/machinery/disposal, +/obj/structure/disposalpipe/trunk{ + dir = 1 + }, +/obj/structure/window/reinforced{ + dir = 8 + }, +/obj/effect/floor_decal/industrial/warning{ + dir = 6 + }, +/turf/simulated/floor/tiled/dark, +/area/rnd/xenobiology) +"dYT" = ( +/turf/simulated/floor/tiled, +/area/rnd/xenobiology) +"dYU" = ( +/obj/structure/sink{ + pixel_x = 0; + pixel_y = 28 + }, +/turf/simulated/floor/tiled, +/area/rnd/xenobiology) +"dYV" = ( +/obj/machinery/alarm{ + dir = 8; + pixel_x = 22; + pixel_y = 0 + }, +/turf/simulated/floor/tiled, +/area/rnd/xenobiology) +"dYW" = ( +/obj/structure/disposalpipe/segment, +/turf/simulated/floor/tiled, +/area/rnd/xenobiology) +"dYX" = ( +/obj/effect/floor_decal/borderfloorwhite{ + dir = 9 + }, +/obj/effect/floor_decal/corner/purple/border{ + dir = 9 + }, +/turf/simulated/floor/tiled/white, +/area/rnd/research/firstdeck/hallway) +"dYY" = ( +/obj/structure/cable/green{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/obj/effect/floor_decal/borderfloorwhite/corner{ + dir = 1 + }, +/obj/effect/floor_decal/corner/purple/bordercorner{ + dir = 1 + }, +/turf/simulated/floor/tiled/white, +/area/rnd/research/firstdeck/hallway) +"dYZ" = ( +/obj/structure/table/standard, +/obj/item/weapon/storage/box/beakers{ + pixel_x = 2; + pixel_y = 2 + }, +/turf/simulated/floor/tiled, +/area/rnd/xenobiology) +"dZa" = ( +/obj/machinery/door/firedoor/border_only, +/obj/machinery/door/blast/regular{ + density = 0; + dir = 1; + icon_state = "pdoor0"; + id = "xenobiocontainstation"; + name = "Containment Blast Doors"; + opacity = 0 + }, +/obj/structure/cable/green{ + d2 = 2; + icon_state = "0-2" + }, +/obj/effect/wingrille_spawn/reinforced, +/turf/simulated/floor/plating, +/area/rnd/xenobiology) +"dZb" = ( +/turf/simulated/floor/tiled/white, +/area/rnd/xenobiology) +"dZc" = ( +/obj/structure/bed/chair/office/light{ + dir = 1 + }, +/turf/simulated/floor/tiled/white, +/area/rnd/xenobiology) +"dZd" = ( +/obj/structure/cable/green{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/turf/simulated/floor/tiled/white, +/area/rnd/xenobiology) +"dZe" = ( +/obj/machinery/atmospherics/unary/vent_pump/on, +/obj/structure/cable/green{ + d1 = 1; + d2 = 4; + icon_state = "1-4" + }, +/turf/simulated/floor/tiled/white, +/area/rnd/xenobiology) +"dZf" = ( +/obj/machinery/hologram/holopad, +/obj/effect/floor_decal/industrial/outline/grey, +/obj/structure/cable/green{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/turf/simulated/floor/tiled/white, +/area/rnd/xenobiology) +"dZg" = ( +/obj/structure/cable/green{ + d1 = 1; + d2 = 4; + icon_state = "1-4" + }, +/obj/structure/cable/green{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/turf/simulated/floor/tiled/white, +/area/rnd/xenobiology) +"dZh" = ( +/obj/machinery/atmospherics/unary/vent_scrubber/on, +/obj/structure/cable/green{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/turf/simulated/floor/tiled/white, +/area/rnd/xenobiology) +"dZi" = ( +/obj/machinery/disposal, +/obj/structure/disposalpipe/trunk{ + dir = 4 + }, +/obj/structure/window/reinforced, +/obj/effect/floor_decal/industrial/warning{ + icon_state = "warning"; + dir = 9 + }, +/turf/simulated/floor/tiled/dark, +/area/rnd/xenobiology) +"dZj" = ( +/obj/structure/cable/green{ + d1 = 2; + d2 = 8; + icon_state = "2-8" + }, +/obj/structure/disposalpipe/segment, +/turf/simulated/floor/tiled/white, +/area/rnd/xenobiology) +"dZk" = ( +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/turf/simulated/floor/reinforced, +/area/rnd/xenobiology) +"dZl" = ( +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/effect/wingrille_spawn/reinforced, +/obj/structure/cable/green{ + d2 = 2; + icon_state = "0-2" + }, +/obj/machinery/door/blast/regular{ + density = 0; + icon_state = "pdoor0"; + id = "xenobio2station"; + name = "Containment Blast Doors"; + opacity = 0 + }, +/obj/structure/window/reinforced/full, +/turf/simulated/floor/plating, +/area/rnd/xenobiology) +"dZm" = ( +/obj/structure/disposalpipe/trunk{ + dir = 8 + }, +/obj/structure/disposaloutlet, +/turf/simulated/floor/reinforced, +/area/rnd/xenobiology) +"dZn" = ( +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/machinery/light/small{ + dir = 1 + }, +/turf/simulated/floor/reinforced, +/area/rnd/xenobiology) +"dZo" = ( +/obj/machinery/atmospherics/unary/vent_scrubber/on{ + dir = 4 + }, +/obj/effect/floor_decal/borderfloorwhite/corner{ + dir = 1 + }, +/obj/effect/floor_decal/corner/purple/bordercorner{ + dir = 1 + }, +/obj/machinery/camera/network/research{ + c_tag = "SCI - First Deck Research Hallway Aft"; + dir = 4 + }, +/turf/simulated/floor/tiled/white, +/area/rnd/research/firstdeck/hallway) +"dZp" = ( +/obj/structure/cable/green{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/obj/effect/floor_decal/borderfloorwhite/corner{ + dir = 4 + }, +/obj/effect/floor_decal/corner/purple/bordercorner{ + dir = 4 + }, +/turf/simulated/floor/tiled/white, +/area/rnd/research/firstdeck/hallway) +"dZq" = ( +/obj/structure/cable/green{ + d1 = 1; + d2 = 4; + icon_state = "1-4" + }, +/obj/structure/cable/green{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{ + dir = 4 + }, +/turf/simulated/floor/tiled/white, +/area/rnd/research/firstdeck/hallway) +"dZr" = ( +/obj/structure/table/standard, +/obj/item/weapon/folder/red{ + pixel_y = 3 + }, +/obj/item/weapon/folder/blue{ + pixel_x = 5 + }, +/turf/simulated/floor/tiled, +/area/rnd/xenobiology) +"dZs" = ( +/obj/machinery/door/firedoor/glass, +/obj/machinery/door/blast/regular{ + density = 0; + dir = 1; + icon_state = "pdoor0"; + id = "xenobiocontainstation"; + name = "Containment Blast Doors"; + opacity = 0 + }, +/obj/structure/cable/green{ + d1 = 2; + d2 = 8; + icon_state = "2-8" + }, +/obj/structure/cable/green{ + d1 = 1; + d2 = 8; + icon_state = "1-8" + }, +/obj/structure/cable/green{ + d2 = 8; + icon_state = "0-8" + }, +/obj/effect/wingrille_spawn/reinforced, +/turf/simulated/floor/plating, +/area/rnd/xenobiology) +"dZt" = ( +/obj/structure/bed/chair/office/light{ + dir = 8 + }, +/turf/simulated/floor/tiled/white, +/area/rnd/xenobiology) +"dZu" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/turf/simulated/floor/tiled, +/area/rnd/xenobiology) +"dZv" = ( +/obj/structure/table/standard, +/obj/structure/window/reinforced{ + dir = 1; + health = 1e+006 + }, +/obj/machinery/recharger, +/turf/simulated/floor/tiled, +/area/rnd/xenobiology) +"dZw" = ( +/obj/structure/table/standard, +/obj/structure/window/reinforced{ + dir = 1; + health = 1e+006 + }, +/obj/item/weapon/melee/baton/slime/loaded, +/obj/item/weapon/gun/energy/taser/xeno, +/turf/simulated/floor/tiled, +/area/rnd/xenobiology) +"dZx" = ( +/obj/structure/table/standard, +/obj/structure/window/reinforced{ + dir = 1 + }, +/obj/structure/window/reinforced{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/turf/simulated/floor/tiled, +/area/rnd/xenobiology) +"dZy" = ( +/obj/effect/floor_decal/industrial/warning{ + icon_state = "warning"; + dir = 8 + }, +/obj/structure/cable/green{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/obj/machinery/door/window/brigdoor/westleft{ + name = "Containment Pen"; + req_access = list(47) + }, +/turf/simulated/floor/tiled/techmaint, +/area/rnd/xenobiology) +"dZz" = ( +/obj/structure/cable/green{ + d1 = 2; + d2 = 4; + icon_state = "2-4" + }, +/obj/structure/cable/green{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/obj/structure/disposalpipe/segment, +/turf/simulated/floor/tiled/white, +/area/rnd/xenobiology) +"dZA" = ( +/obj/effect/floor_decal/industrial/hatch/yellow, +/obj/structure/cable/green{ + d1 = 1; + d2 = 8; + icon_state = "1-8" + }, +/obj/structure/cable/green{ + d1 = 2; + d2 = 8; + icon_state = "2-8" + }, +/obj/machinery/door/window/brigdoor/eastright{ + name = "Containment Pen"; + req_access = list(47) + }, +/obj/machinery/door/blast/regular{ + density = 0; + icon_state = "pdoor0"; + id = "xenobio2station"; + name = "Containment Blast Doors"; + opacity = 0 + }, +/turf/simulated/floor/tiled/techmaint, +/area/rnd/xenobiology) +"dZB" = ( +/mob/living/simple_mob/slime/xenobio, +/turf/simulated/floor/reinforced, +/area/rnd/xenobiology) +"dZC" = ( +/obj/effect/floor_decal/industrial/warning/corner, +/turf/simulated/floor/tiled/white, +/area/rnd/research/firstdeck/hallway) +"dZD" = ( +/obj/effect/floor_decal/industrial/warning/corner{ + icon_state = "warningcorner"; + dir = 8 + }, +/turf/simulated/floor/tiled/white, +/area/rnd/research/firstdeck/hallway) +"dZE" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/obj/structure/cable/green{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/obj/effect/floor_decal/industrial/warning, +/turf/simulated/floor/tiled/white, +/area/rnd/research/firstdeck/hallway) +"dZF" = ( +/obj/structure/table/standard, +/obj/item/weapon/clipboard, +/obj/item/weapon/folder, +/obj/item/weapon/pen, +/turf/simulated/floor/tiled, +/area/rnd/xenobiology) +"dZG" = ( +/obj/machinery/door/firedoor/border_only, +/obj/machinery/door/blast/regular{ + density = 0; + dir = 1; + icon_state = "pdoor0"; + id = "xenobiocontainstation"; + name = "Containment Blast Doors"; + opacity = 0 + }, +/obj/structure/cable/green, +/obj/effect/wingrille_spawn/reinforced, +/turf/simulated/floor/plating, +/area/rnd/xenobiology) +"dZH" = ( +/obj/structure/table/standard, +/obj/structure/window/reinforced{ + dir = 1; + health = 1e+006 + }, +/obj/structure/window/reinforced{ + dir = 8 + }, +/obj/item/weapon/storage/box/syringes, +/obj/item/glass_jar, +/obj/item/glass_jar, +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/turf/simulated/floor/tiled, +/area/rnd/xenobiology) +"dZI" = ( +/obj/machinery/processor, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/turf/simulated/floor/tiled, +/area/rnd/xenobiology) +"dZJ" = ( +/obj/structure/table/reinforced, +/obj/structure/window/reinforced{ + dir = 1 + }, +/obj/effect/floor_decal/industrial/warning{ + icon_state = "warning"; + dir = 8 + }, +/obj/machinery/button/remote/blast_door{ + id = "xenobio2station"; + name = "Containment Blast Doors"; + pixel_x = 0; + pixel_y = 4; + req_access = list(55) + }, +/turf/simulated/floor/tiled/dark, +/area/rnd/xenobiology) +"dZK" = ( +/obj/structure/cable/green{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/obj/structure/disposalpipe/segment, +/turf/simulated/floor/tiled/white, +/area/rnd/xenobiology) +"dZL" = ( +/obj/effect/wingrille_spawn/reinforced, +/obj/structure/cable/green, +/obj/machinery/door/blast/regular{ + density = 0; + icon_state = "pdoor0"; + id = "xenobio2station"; + name = "Containment Blast Doors"; + opacity = 0 + }, +/obj/structure/window/reinforced/full, +/turf/simulated/floor/plating, +/area/rnd/xenobiology) +"dZM" = ( +/obj/structure/catwalk, +/obj/random/mob/mouse, +/turf/simulated/floor/plating, +/area/maintenance/firstdeck/centralport) +"dZN" = ( +/obj/structure/sign/warning/biohazard, +/turf/simulated/wall/r_wall, +/area/rnd/xenobiology) +"dZO" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/obj/structure/cable/green{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/obj/machinery/access_button{ + command = "cycle_exterior"; + frequency = 1379; + master_tag = "xenostation_airlock_control"; + name = "Xenobiology Access Button"; + pixel_x = -26; + pixel_y = 6; + req_access = list(55) + }, +/obj/machinery/door/airlock/research{ + autoclose = 0; + frequency = 1379; + icon_state = "door_locked"; + id_tag = "xenostation_airlock_exterior"; + locked = 1; + name = "Xenobiology External Airlock"; + req_access = list(55) + }, +/turf/simulated/floor/tiled/steel_grid, +/area/rnd/xenobiology) +"dZP" = ( +/obj/structure/table/standard, +/obj/item/weapon/paper_bin{ + pixel_x = -2; + pixel_y = 5 + }, +/obj/item/weapon/pen/blue{ + pixel_x = -5; + pixel_y = -1 + }, +/obj/item/weapon/pen/red{ + pixel_x = -1; + pixel_y = 3 + }, +/obj/machinery/power/apc{ + dir = 8; + name = "west bump"; + pixel_x = -24 + }, +/obj/structure/cable/green{ + d2 = 2; + icon_state = "0-2" + }, +/obj/machinery/light_switch{ + pixel_x = -36 + }, +/turf/simulated/floor/tiled, +/area/rnd/xenobiology) +"dZQ" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/turf/simulated/floor/tiled/white, +/area/rnd/xenobiology) +"dZR" = ( +/obj/structure/table/standard, +/obj/item/weapon/storage/box/monkeycubes, +/obj/item/weapon/storage/box/monkeycubes, +/obj/item/weapon/storage/box/monkeycubes, +/obj/item/weapon/storage/box/monkeycubes, +/obj/structure/window/reinforced{ + dir = 8 + }, +/obj/item/weapon/reagent_containers/food/snacks/monkeycube/wrapped, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 6 + }, +/obj/machinery/atmospherics/pipe/manifold/hidden/supply{ + dir = 8 + }, +/turf/simulated/floor/tiled, +/area/rnd/xenobiology) +"dZS" = ( +/obj/machinery/smartfridge/secure/extract, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/turf/simulated/floor/tiled/white, +/area/rnd/xenobiology) +"dZT" = ( +/obj/machinery/disposal, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/obj/structure/disposalpipe/trunk{ + dir = 4 + }, +/turf/simulated/floor/tiled/white, +/area/rnd/xenobiology) +"dZU" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/turf/simulated/floor/tiled/white, +/area/rnd/xenobiology) +"dZV" = ( +/obj/item/weapon/stool/padded, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/turf/simulated/floor/tiled/white, +/area/rnd/xenobiology) +"dZW" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 9 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 10 + }, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/turf/simulated/floor/tiled, +/area/rnd/xenobiology) +"dZX" = ( +/obj/structure/reagent_dispensers/watertank/high, +/obj/effect/floor_decal/industrial/warning{ + icon_state = "warning"; + dir = 8 + }, +/obj/machinery/recharger/wallcharger{ + pixel_x = 36; + pixel_y = 0 + }, +/obj/item/weapon/extinguisher, +/obj/machinery/camera/network/research{ + c_tag = "SCI - Xenobiology Starboard"; + dir = 8 + }, +/obj/machinery/light{ + icon_state = "tube1"; + dir = 4 + }, +/turf/simulated/floor/tiled/dark, +/area/rnd/xenobiology) +"dZY" = ( +/obj/machinery/hologram/holopad, +/obj/effect/floor_decal/industrial/outline/grey, +/obj/structure/cable/green{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/obj/structure/disposalpipe/segment{ + dir = 8; + icon_state = "pipe-c" + }, +/turf/simulated/floor/tiled/white, +/area/rnd/xenobiology) +"dZZ" = ( +/obj/structure/curtain/open/shower, +/obj/effect/floor_decal/steeldecal/steel_decals5{ + dir = 4 + }, +/obj/effect/floor_decal/steeldecal/steel_decals10{ + dir = 4 + }, +/obj/effect/floor_decal/steeldecal/steel_decals10, +/obj/machinery/shower{ + dir = 4; + icon_state = "shower"; + pixel_x = 5; + pixel_y = 0 + }, +/obj/item/device/radio/intercom{ + dir = 8; + name = "Station Intercom (General)"; + pixel_x = -21 + }, +/turf/simulated/floor/tiled, +/area/rnd/xenobiology) +"eaa" = ( +/obj/effect/floor_decal/industrial/warning{ + dir = 5 + }, +/obj/structure/sink{ + dir = 4; + icon_state = "sink"; + pixel_x = 11; + pixel_y = 0 + }, +/turf/simulated/floor/tiled/white, +/area/rnd/xenobiology) +"eab" = ( +/obj/effect/floor_decal/industrial/warning{ + icon_state = "warning"; + dir = 9 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/obj/structure/cable/green{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/obj/machinery/embedded_controller/radio/airlock/access_controller{ + id_tag = "xenostation_airlock_control"; + name = "Xenobiology Access Console"; + pixel_x = -26; + pixel_y = 26; + tag_exterior_door = "xenostation_airlock_exterior"; + tag_interior_door = "xenostation_airlock_interior" + }, +/turf/simulated/floor/tiled/white, +/area/rnd/xenobiology) +"eac" = ( +/obj/structure/sink{ + icon_state = "sink"; + dir = 8; + pixel_x = -12; + pixel_y = 2 + }, +/obj/item/clothing/shoes/galoshes, +/obj/effect/floor_decal/industrial/warning/corner{ + icon_state = "warningcorner"; + dir = 8 + }, +/obj/structure/cable/green{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/turf/simulated/floor/tiled, +/area/rnd/xenobiology) +"ead" = ( +/obj/structure/table/standard, +/obj/structure/window/reinforced, +/obj/structure/window/reinforced{ + dir = 8 + }, +/obj/item/stack/material/phoron{ + amount = 10 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/turf/simulated/floor/tiled, +/area/rnd/xenobiology) +"eae" = ( +/obj/structure/table/standard, +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/item/weapon/reagent_containers/spray/cleaner, +/turf/simulated/floor/tiled, +/area/rnd/xenobiology) +"eaf" = ( +/obj/structure/table/reinforced, +/obj/structure/window/reinforced, +/obj/effect/floor_decal/industrial/warning{ + icon_state = "warning"; + dir = 8 + }, +/obj/machinery/button/remote/blast_door{ + id = "xenobio1station"; + name = "Containment Blast Doors"; + pixel_x = 0; + pixel_y = 4; + req_access = list(55) + }, +/turf/simulated/floor/tiled/dark, +/area/rnd/xenobiology) +"eag" = ( +/obj/structure/cable/green{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/turf/simulated/floor/tiled/white, +/area/rnd/xenobiology) +"eah" = ( +/obj/effect/wingrille_spawn/reinforced, +/obj/structure/cable/green{ + d2 = 2; + icon_state = "0-2" + }, +/obj/machinery/door/blast/regular{ + density = 0; + icon_state = "pdoor0"; + id = "xenobio1station"; + name = "Containment Blast Doors"; + opacity = 0 + }, +/obj/structure/window/reinforced/full, +/turf/simulated/floor/plating, +/area/rnd/xenobiology) +"eai" = ( +/obj/effect/floor_decal/industrial/hatch/yellow, +/obj/machinery/door/blast/regular{ + desc = "By gods, release the hounds!"; + id = "xenobiostationext"; + name = "Containment Release" + }, +/turf/simulated/floor/reinforced, +/area/rnd/xenobiology) +"eaj" = ( +/obj/structure/closet/l3closet/scientist, +/obj/effect/floor_decal/industrial/warning{ + icon_state = "warning"; + dir = 9 + }, +/obj/machinery/atmospherics/unary/vent_scrubber/on{ + dir = 4 + }, +/obj/item/weapon/extinguisher, +/obj/machinery/firealarm{ + dir = 8; + pixel_x = -24; + pixel_y = 0 + }, +/obj/machinery/light{ + dir = 8 + }, +/turf/simulated/floor/tiled/monotile, +/area/rnd/xenobiology) +"eak" = ( +/obj/effect/floor_decal/industrial/warning{ + dir = 6 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, +/obj/structure/cable/green{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/turf/simulated/floor/tiled/white, +/area/rnd/xenobiology) +"eal" = ( +/obj/effect/floor_decal/industrial/warning{ + dir = 10 + }, +/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers, +/obj/machinery/atmospherics/pipe/manifold/hidden/supply{ + dir = 8 + }, +/obj/structure/cable/green{ + d1 = 1; + d2 = 4; + icon_state = "1-4" + }, +/turf/simulated/floor/tiled/white, +/area/rnd/xenobiology) +"eam" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, +/obj/effect/floor_decal/industrial/warning{ + icon_state = "warning"; + dir = 8 + }, +/obj/structure/cable/green{ + d1 = 1; + d2 = 8; + icon_state = "1-8" + }, +/obj/structure/cable/green{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/turf/simulated/floor/tiled, +/area/rnd/xenobiology) +"ean" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, +/obj/machinery/door/airlock/research{ + autoclose = 0; + frequency = 1379; + icon_state = "door_locked"; + id_tag = "xenostation_airlock_interior"; + locked = 1; + name = "Xenobiology Internal Airlock"; + req_access = list(55) + }, +/obj/machinery/access_button{ + command = "cycle_interior"; + frequency = 1379; + master_tag = "xenostation_airlock_control"; + name = "Xenobiology Access Button"; + pixel_x = 0; + pixel_y = -26; + req_access = list(55) + }, +/obj/structure/cable/green{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/turf/simulated/floor/tiled/steel_grid, +/area/rnd/xenobiology) +"eao" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/obj/structure/cable/green{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/turf/simulated/floor/tiled/white, +/area/rnd/xenobiology) +"eap" = ( +/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 9; + pixel_y = 0 + }, +/obj/structure/cable/green{ + d1 = 2; + d2 = 8; + icon_state = "2-8" + }, +/turf/simulated/floor/tiled, +/area/rnd/xenobiology) +"eaq" = ( +/obj/structure/table/standard, +/obj/structure/window/reinforced, +/obj/item/clothing/gloves/sterile/latex, +/obj/item/weapon/hand_labeler, +/obj/item/device/slime_scanner, +/obj/item/device/slime_scanner, +/turf/simulated/floor/tiled, +/area/rnd/xenobiology) +"ear" = ( +/obj/structure/table/standard, +/obj/structure/window/reinforced, +/obj/item/weapon/melee/baton/slime/loaded, +/obj/item/weapon/gun/energy/taser/xeno, +/turf/simulated/floor/tiled, +/area/rnd/xenobiology) +"eas" = ( +/obj/structure/table/standard, +/obj/structure/window/reinforced, +/obj/structure/window/reinforced{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/item/weapon/storage/firstaid/regular, +/turf/simulated/floor/tiled, +/area/rnd/xenobiology) +"eat" = ( +/obj/machinery/door/window/brigdoor/westleft{ + name = "Containment Pen"; + req_access = list(47) + }, +/obj/effect/floor_decal/industrial/warning{ + icon_state = "warning"; + dir = 8 + }, +/obj/structure/cable/green{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/turf/simulated/floor/tiled/techmaint, +/area/rnd/xenobiology) +"eau" = ( +/obj/structure/cable/green{ + d1 = 2; + d2 = 4; + icon_state = "2-4" + }, +/obj/structure/cable/green{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/turf/simulated/floor/tiled/white, +/area/rnd/xenobiology) +"eav" = ( +/obj/effect/floor_decal/industrial/hatch/yellow, +/obj/machinery/door/window/brigdoor/eastright{ + name = "Containment Pen"; + req_access = list(47) + }, +/obj/structure/cable/green{ + d1 = 1; + d2 = 8; + icon_state = "1-8" + }, +/obj/structure/cable/green{ + d1 = 2; + d2 = 8; + icon_state = "2-8" + }, +/obj/machinery/door/blast/regular{ + density = 0; + icon_state = "pdoor0"; + id = "xenobio1station"; + name = "Containment Blast Doors"; + opacity = 0 + }, +/turf/simulated/floor/tiled/techmaint, +/area/rnd/xenobiology) +"eaw" = ( +/obj/structure/closet/l3closet/scientist, +/obj/effect/floor_decal/industrial/warning{ + dir = 10 + }, +/obj/item/weapon/extinguisher, +/obj/machinery/camera/network/research{ + c_tag = "SCI - Xenobiology Access"; + dir = 1 + }, +/turf/simulated/floor/tiled/monotile, +/area/rnd/xenobiology) +"eax" = ( +/obj/effect/floor_decal/industrial/warning{ + dir = 6 + }, +/obj/structure/extinguisher_cabinet{ + pixel_y = -30 + }, +/turf/simulated/floor/tiled/monotile, +/area/rnd/xenobiology) +"eay" = ( +/obj/effect/floor_decal/industrial/warning, +/obj/machinery/atmospherics/unary/vent_pump/on{ + dir = 1 + }, +/obj/machinery/alarm{ + dir = 1; + pixel_y = -22 + }, +/mob/living/bot/secbot/slime, +/turf/simulated/floor/tiled/monotile, +/area/rnd/xenobiology) +"eaz" = ( +/obj/effect/floor_decal/industrial/warning/corner{ + dir = 1 + }, +/turf/simulated/floor/tiled, +/area/rnd/xenobiology) +"eaA" = ( +/obj/machinery/button/remote/blast_door{ + desc = "A remote control-switch for containment."; + id = "xenobiocontainstation"; + name = "Containment Switch"; + pixel_x = 0; + pixel_y = -6; + req_access = null + }, +/turf/simulated/wall/r_wall, +/area/rnd/xenobiology) +"eaB" = ( +/obj/machinery/atmospherics/unary/vent_scrubber/on{ + dir = 1 + }, +/obj/structure/cable/green{ + d1 = 1; + d2 = 4; + icon_state = "1-4" + }, +/obj/structure/cable/green{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/turf/simulated/floor/tiled/white, +/area/rnd/xenobiology) +"eaC" = ( +/obj/structure/cable/green{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/obj/structure/cable/green{ + d1 = 2; + d2 = 8; + icon_state = "2-8" + }, +/turf/simulated/floor/tiled/white, +/area/rnd/xenobiology) +"eaD" = ( +/obj/machinery/atmospherics/unary/vent_pump/on{ + dir = 1 + }, +/obj/structure/cable/green{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/turf/simulated/floor/tiled/white, +/area/rnd/xenobiology) +"eaE" = ( +/obj/machinery/disposal, +/obj/structure/disposalpipe/trunk{ + dir = 4 + }, +/obj/structure/window/reinforced{ + dir = 1 + }, +/obj/effect/floor_decal/industrial/warning{ + dir = 10 + }, +/turf/simulated/floor/tiled/dark, +/area/rnd/xenobiology) +"eaF" = ( +/obj/structure/cable/green{ + d1 = 1; + d2 = 8; + icon_state = "1-8" + }, +/turf/simulated/floor/tiled/white, +/area/rnd/xenobiology) +"eaG" = ( +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/effect/wingrille_spawn/reinforced, +/obj/structure/cable/green, +/obj/machinery/door/blast/regular{ + density = 0; + icon_state = "pdoor0"; + id = "xenobio1station"; + name = "Containment Blast Doors"; + opacity = 0 + }, +/obj/structure/window/reinforced/full, +/turf/simulated/floor/plating, +/area/rnd/xenobiology) +"eaH" = ( +/obj/structure/disposalpipe/trunk{ + dir = 8 + }, +/obj/structure/disposaloutlet{ + dir = 1 + }, +/obj/effect/floor_decal/industrial/warning{ + icon_state = "warning"; + dir = 4 + }, +/turf/simulated/floor/reinforced, +/area/rnd/xenobiology) +"eaI" = ( +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/machinery/light/small, +/turf/simulated/floor/reinforced, +/area/rnd/xenobiology) +"eaJ" = ( +/obj/machinery/door/blast/regular{ + desc = "By gods, release the hounds!"; + id = "xenobiostationext"; + name = "Containment Release" + }, +/obj/effect/floor_decal/industrial/hatch/yellow, +/turf/simulated/floor/reinforced, +/area/rnd/xenobiology) +"eaK" = ( +/obj/machinery/door/firedoor/border_only, +/obj/structure/cable{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/obj/machinery/door/airlock/maintenance{ + req_access = null; + req_one_access = list(5,12,47) + }, +/turf/simulated/floor/plating, +/area/maintenance/firstdeck/centralstarboard) +"eaL" = ( +/obj/structure/reagent_dispensers/fueltank, +/obj/item/device/radio/intercom{ + dir = 8; + name = "Station Intercom (General)"; + pixel_x = -21 + }, +/obj/machinery/status_display{ + pixel_y = -32 + }, +/turf/simulated/floor/tiled, +/area/rnd/xenobiology) +"eaM" = ( +/obj/machinery/disposal, +/obj/structure/disposalpipe/trunk, +/obj/structure/window/reinforced{ + dir = 4 + }, +/obj/effect/floor_decal/industrial/warning{ + icon_state = "warning"; + dir = 9 + }, +/turf/simulated/floor/tiled/dark, +/area/rnd/xenobiology) +"eaN" = ( +/obj/machinery/requests_console{ + department = "Science"; + departmentType = 2; + name = "Science Requests Console"; + pixel_x = 0; + pixel_y = -30 + }, +/obj/structure/reagent_dispensers/watertank/high, +/turf/simulated/floor/tiled, +/area/rnd/xenobiology) +"eaO" = ( +/obj/structure/table/reinforced, +/obj/structure/window/reinforced{ + dir = 8 + }, +/obj/effect/floor_decal/industrial/warning{ + icon_state = "warning"; + dir = 1 + }, +/obj/machinery/button/remote/blast_door{ + id = "xenobio3station"; + name = "Containment Blast Doors"; + pixel_x = 0; + pixel_y = 4; + req_access = list(55) + }, +/turf/simulated/floor/tiled/dark, +/area/rnd/xenobiology) +"eaP" = ( +/obj/structure/cable/green{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/obj/machinery/door/window/brigdoor/northright{ + name = "Containment Pen"; + req_access = list(47) + }, +/obj/effect/floor_decal/industrial/warning{ + icon_state = "warning"; + dir = 1 + }, +/turf/simulated/floor/tiled/techmaint, +/area/rnd/xenobiology) +"eaQ" = ( +/obj/structure/table/reinforced, +/obj/structure/window/reinforced{ + dir = 4 + }, +/obj/effect/floor_decal/industrial/warning{ + icon_state = "warning"; + dir = 1 + }, +/obj/machinery/button/remote/blast_door{ + id = "xenobio4station"; + name = "Containment Blast Doors"; + pixel_x = 0; + pixel_y = 4; + req_access = list(55) + }, +/turf/simulated/floor/tiled/dark, +/area/rnd/xenobiology) +"eaR" = ( +/obj/structure/reagent_dispensers/watertank, +/obj/item/weapon/extinguisher, +/obj/effect/floor_decal/industrial/warning{ + icon_state = "warning"; + dir = 1 + }, +/obj/machinery/recharger/wallcharger{ + pixel_x = 5; + pixel_y = -32 + }, +/obj/machinery/light, +/obj/machinery/camera/network/research{ + c_tag = "SCI - Xenobiology Aft"; + dir = 1 + }, +/turf/simulated/floor/tiled/dark, +/area/rnd/xenobiology) +"eaS" = ( +/obj/machinery/disposal, +/obj/structure/disposalpipe/trunk, +/obj/structure/window/reinforced{ + dir = 8 + }, +/obj/effect/floor_decal/industrial/warning{ + dir = 5 + }, +/turf/simulated/floor/tiled/dark, +/area/rnd/xenobiology) +"eaT" = ( +/obj/machinery/firealarm{ + dir = 1; + pixel_x = 0; + pixel_y = -24 + }, +/obj/structure/closet/emcloset/legacy, +/turf/simulated/floor/tiled, +/area/rnd/xenobiology) +"eaU" = ( +/obj/machinery/button/remote/blast_door{ + desc = "A remote control-switch for a door to space."; + id = "xenobiostationext"; + name = "Containment Release Switch"; + pixel_x = 28; + pixel_y = 0; + req_access = list(55) + }, +/obj/structure/sink{ + dir = 4; + icon_state = "sink"; + pixel_x = 11; + pixel_y = 0 + }, +/turf/simulated/floor/tiled, +/area/rnd/xenobiology) +"eaV" = ( +/obj/structure/disposalpipe/segment, +/obj/effect/wingrille_spawn/reinforced, +/obj/structure/cable/green{ + d2 = 4; + icon_state = "0-4" + }, +/obj/structure/window/reinforced/full, +/obj/machinery/door/blast/regular{ + density = 0; + dir = 4; + icon_state = "pdoor0"; + id = "xenobio3station"; + name = "Containment Blast Doors"; + opacity = 0 + }, +/turf/simulated/floor/plating, +/area/rnd/xenobiology) +"eaW" = ( +/obj/effect/wingrille_spawn/reinforced, +/obj/structure/cable/green{ + d2 = 8; + icon_state = "0-8" + }, +/obj/structure/window/reinforced/full, +/obj/machinery/door/blast/regular{ + density = 0; + dir = 4; + icon_state = "pdoor0"; + id = "xenobio3station"; + name = "Containment Blast Doors"; + opacity = 0 + }, +/turf/simulated/floor/plating, +/area/rnd/xenobiology) +"eaX" = ( +/obj/effect/floor_decal/industrial/hatch/yellow, +/obj/structure/cable/green{ + d1 = 1; + d2 = 8; + icon_state = "1-8" + }, +/obj/structure/cable/green{ + d1 = 1; + d2 = 4; + icon_state = "1-4" + }, +/obj/machinery/door/window/brigdoor/southright{ + name = "Containment Pen"; + req_access = list(47) + }, +/obj/machinery/door/blast/regular{ + density = 0; + dir = 4; + icon_state = "pdoor0"; + id = "xenobio3station"; + name = "Containment Blast Doors"; + opacity = 0 + }, +/turf/simulated/floor/tiled/techmaint, +/area/rnd/xenobiology) +"eaY" = ( +/obj/effect/wingrille_spawn/reinforced, +/obj/structure/cable/green{ + d2 = 4; + icon_state = "0-4" + }, +/obj/structure/window/reinforced/full, +/obj/machinery/door/blast/regular{ + density = 0; + dir = 4; + icon_state = "pdoor0"; + id = "xenobio4station"; + name = "Containment Blast Doors"; + opacity = 0 + }, +/turf/simulated/floor/plating, +/area/rnd/xenobiology) +"eaZ" = ( +/obj/structure/disposalpipe/segment, +/obj/effect/wingrille_spawn/reinforced, +/obj/structure/cable/green{ + d2 = 8; + icon_state = "0-8" + }, +/obj/structure/window/reinforced/full, +/obj/machinery/door/blast/regular{ + density = 0; + dir = 4; + icon_state = "pdoor0"; + id = "xenobio4station"; + name = "Containment Blast Doors"; + opacity = 0 + }, +/turf/simulated/floor/plating, +/area/rnd/xenobiology) +"eba" = ( +/obj/effect/floor_decal/industrial/hatch/yellow, +/obj/structure/cable/green{ + d1 = 1; + d2 = 8; + icon_state = "1-8" + }, +/obj/structure/cable/green{ + d1 = 1; + d2 = 4; + icon_state = "1-4" + }, +/obj/machinery/door/window/brigdoor/southright{ + name = "Containment Pen"; + req_access = list(47) + }, +/obj/machinery/door/blast/regular{ + density = 0; + dir = 4; + icon_state = "pdoor0"; + id = "xenobio4station"; + name = "Containment Blast Doors"; + opacity = 0 + }, +/turf/simulated/floor/tiled/techmaint, +/area/rnd/xenobiology) +"ebb" = ( +/obj/structure/closet/radiation, +/turf/simulated/floor/tiled/dark, +/area/rnd/xenobiology) +"ebc" = ( +/obj/structure/closet/firecloset/full/double, +/obj/item/device/radio/intercom{ + name = "Station Intercom (General)"; + pixel_y = -21 + }, +/turf/simulated/floor/tiled, +/area/rnd/xenobiology) +"ebd" = ( +/obj/structure/closet/l3closet/general, +/obj/structure/extinguisher_cabinet{ + pixel_x = 28; + pixel_y = 0 + }, +/turf/simulated/floor/tiled, +/area/rnd/xenobiology) +"ebe" = ( +/obj/structure/closet/bombcloset, +/obj/machinery/light, +/turf/simulated/floor/tiled, +/area/rnd/xenobiology) +"ebf" = ( +/obj/structure/disposalpipe/trunk{ + dir = 1 + }, +/obj/structure/disposaloutlet{ + dir = 4 + }, +/turf/simulated/floor/reinforced, +/area/rnd/xenobiology) +"ebg" = ( +/obj/structure/disposalpipe/trunk{ + dir = 1 + }, +/obj/structure/disposaloutlet{ + dir = 8 + }, +/turf/simulated/floor/reinforced, +/area/rnd/xenobiology) +"ebh" = ( +/obj/machinery/atmospherics/pipe/simple/visible/cyan{ + icon_state = "intact"; + dir = 6 + }, +/obj/random/mob/mouse, +/turf/simulated/floor/tiled/steel_dirty, +/area/engineering/auxiliary_engineering) +"ebi" = ( +/obj/effect/floor_decal/industrial/warning/corner{ + dir = 8 + }, +/obj/random/mob/mouse, +/turf/simulated/floor/plating, +/area/maintenance/firstdeck/aftstarboard) +"ebj" = ( +/obj/random/mob/mouse, +/turf/simulated/floor/plating, +/area/maintenance/firstdeck/aftport) +"ebk" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, +/obj/effect/floor_decal/steeldecal/steel_decals5, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 10 + }, +/turf/simulated/floor/tiled, +/area/security/checkpoint3) +"ebl" = ( +/obj/structure/table/steel, +/obj/item/device/communicator, +/obj/item/device/communicator, +/obj/item/device/radio/headset, +/obj/item/device/radio/headset, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/turf/simulated/floor/tiled, +/area/security/prison) +"ebm" = ( +/obj/machinery/door/firedoor/border_only, +/obj/structure/cable/green{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, +/obj/machinery/door/airlock/security{ + name = "Equipment Storage"; + req_access = list(2) + }, +/obj/structure/cable/green{ + d1 = 2; + d2 = 4; + icon_state = "2-4" + }, +/turf/simulated/floor/tiled, +/area/security/security_equiptment_storage) +"ebn" = ( +/obj/machinery/door/firedoor/glass, +/obj/structure/cable/green{ + d2 = 2; + icon_state = "0-2" + }, +/obj/structure/cable/green, +/obj/effect/wingrille_spawn/reinforced/polarized{ + id = "hosoffice" + }, +/turf/simulated/floor/plating, +/area/crew_quarters/heads/sc/hos) +"ebo" = ( +/obj/machinery/door/firedoor/border_only, +/obj/structure/cable/green, +/obj/effect/wingrille_spawn/reinforced/polarized{ + id = "hosoffice" + }, +/obj/structure/cable/green{ + d2 = 4; + icon_state = "0-4" + }, +/turf/simulated/floor/plating, +/area/crew_quarters/heads/sc/hos) +"ebp" = ( +/obj/machinery/atmospherics/pipe/simple/hidden{ + dir = 6 + }, +/obj/effect/floor_decal/industrial/warning/corner{ + dir = 8 + }, +/obj/random/mob/mouse, +/turf/simulated/floor/plating, +/area/maintenance/security_port) +"ebq" = ( +/obj/machinery/atmospherics/valve{ + dir = 4 + }, +/obj/random/mob/mouse, +/turf/simulated/floor/plating, +/area/maintenance/security_starboard) +"ebr" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 10 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 10 + }, +/obj/structure/cable{ + d1 = 2; + d2 = 8; + icon_state = "2-8" + }, +/obj/effect/floor_decal/industrial/warning{ + dir = 8 + }, +/obj/random/mob/mouse, +/turf/simulated/floor, +/area/maintenance/engineering) +"ebs" = ( +/obj/random/mob/mouse, +/turf/simulated/floor/plating, +/area/maintenance/research) +"ebt" = ( +/obj/machinery/atmospherics/pipe/manifold/hidden/supply, +/obj/machinery/meter, +/obj/random/mob/mouse, +/turf/simulated/floor/plating, +/area/maintenance/research) +"ebu" = ( +/obj/structure/extinguisher_cabinet{ + pixel_x = 28; + pixel_y = 0 + }, +/obj/effect/floor_decal/borderfloorwhite{ + dir = 5 + }, +/obj/effect/floor_decal/corner/purple/border{ + dir = 5 + }, +/obj/structure/closet/secure_closet/scientist, +/turf/simulated/floor/tiled/white, +/area/rnd/research_lockerroom) +"ebv" = ( +/obj/item/device/radio/intercom{ + dir = 1; + name = "Station Intercom (General)"; + pixel_y = 21 + }, +/obj/machinery/photocopier, +/turf/simulated/floor/wood, +/area/rnd/research) +"ebw" = ( +/obj/structure/closet/secure_closet/scientist, +/obj/effect/floor_decal/borderfloorwhite/corner{ + dir = 1 + }, +/obj/effect/floor_decal/corner/purple/bordercorner{ + dir = 1 + }, +/turf/simulated/floor/tiled/white, +/area/rnd/research_lockerroom) +"ebx" = ( +/obj/machinery/power/smes/buildable{ + charge = 1e+007; + RCon_tag = "Substation - Research" + }, +/obj/structure/cable/green{ + d2 = 8; + icon_state = "0-8" + }, +/obj/structure/cable/green{ + d2 = 4; + icon_state = "0-4" + }, +/turf/simulated/floor/plating, +/area/maintenance/substation/research) +"eby" = ( +/obj/structure/cable/green{ + d1 = 2; + d2 = 4; + icon_state = "2-4" + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, +/turf/simulated/floor/tiled/white, +/area/rnd/research_lockerroom) +"ebz" = ( +/obj/effect/floor_decal/steeldecal/steel_decals4{ + dir = 1 + }, +/obj/effect/floor_decal/steeldecal/steel_decals4{ + dir = 6 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 6 + }, +/turf/simulated/floor/tiled/white, +/area/rnd/research_lockerroom) +"ebA" = ( +/obj/structure/bed/chair{ + dir = 8 + }, +/obj/effect/landmark/start{ + name = "Scientist" + }, +/turf/simulated/floor/wood, +/area/rnd/research) +"ebB" = ( +/obj/structure/bed/chair{ + dir = 4 + }, +/obj/effect/landmark/start{ + name = "Xenobiologist" + }, +/turf/simulated/floor/wood, +/area/rnd/research) +"ebC" = ( +/obj/structure/table/glass, +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/item/weapon/paper_bin{ + pixel_x = -3; + pixel_y = 7 + }, +/obj/item/weapon/pen, +/obj/item/weapon/clipboard, +/obj/item/weapon/clipboard, +/obj/item/weapon/storage/firstaid/regular{ + pixel_x = 5; + pixel_y = 5 + }, +/turf/simulated/floor/wood, +/area/rnd/research) +"ebD" = ( +/obj/machinery/power/apc{ + dir = 2; + name = "south bump"; + pixel_y = -24 + }, +/obj/machinery/light_switch{ + pixel_x = 12; + pixel_y = -24 + }, +/obj/structure/cable/green, +/obj/effect/floor_decal/borderfloorwhite, +/obj/effect/floor_decal/corner/purple/border, +/turf/simulated/floor/tiled/white, +/area/rnd/research_lockerroom) +"ebE" = ( +/obj/machinery/light{ + icon_state = "tube1"; + dir = 4 + }, +/obj/effect/floor_decal/borderfloorwhite, +/obj/effect/floor_decal/corner/purple/border, +/turf/simulated/floor/tiled/white, +/area/rnd/research_lockerroom) +"ebF" = ( +/obj/machinery/atmospherics/unary/vent_scrubber/on{ + dir = 1 + }, +/obj/effect/floor_decal/borderfloorwhite, +/obj/effect/floor_decal/corner/purple/border, +/turf/simulated/floor/tiled/white, +/area/rnd/research_lockerroom) +"ebG" = ( +/obj/structure/sign/warning/compressed_gas, +/turf/simulated/wall, +/area/rnd/storage) +"ebH" = ( +/obj/structure/bed/chair{ + dir = 8 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, +/obj/effect/landmark/start{ + name = "Xenobiologist" + }, +/turf/simulated/floor/wood, +/area/rnd/research) +"ebI" = ( +/obj/structure/bed/chair{ + dir = 4 + }, +/obj/effect/landmark/start{ + name = "Scientist" + }, +/turf/simulated/floor/wood, +/area/rnd/research) +"ebJ" = ( +/obj/structure/closet/crate/radiation, +/obj/item/clothing/glasses/meson, +/obj/item/clothing/glasses/meson, +/obj/effect/floor_decal/industrial/outline/yellow, +/obj/machinery/light, +/obj/item/stack/material/lead{ + amount = 30 + }, +/turf/simulated/floor, +/area/engineering/storage) +"ebK" = ( +/obj/structure/railing, +/turf/simulated/open, +/area/rnd/research) +"ebL" = ( +/turf/simulated/floor/tiled/steel_grid, +/area/rnd/research) +"ebM" = ( +/obj/effect/floor_decal/borderfloorwhite{ + dir = 5 + }, +/obj/effect/floor_decal/corner/purple/border{ + dir = 5 + }, +/obj/structure/closet/firecloset, +/turf/simulated/floor/tiled/white, +/area/rnd/research) +"ebN" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/obj/effect/floor_decal/industrial/warning{ + icon_state = "warning"; + dir = 9 + }, +/obj/structure/cable/green{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, +/turf/simulated/floor/plating, +/area/engineering/drone_fabrication) +"ebO" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, +/obj/effect/floor_decal/borderfloorwhite, +/obj/effect/floor_decal/corner/purple/border, +/obj/machinery/firealarm{ + dir = 1; + pixel_x = 0; + pixel_y = -24 + }, +/turf/simulated/floor/tiled/white, +/area/rnd/research) +"ebP" = ( +/obj/structure/disposalpipe/up{ + dir = 1 + }, +/obj/structure/cable{ + d1 = 16; + d2 = 0; + icon_state = "16-0" + }, +/obj/structure/cable{ + d2 = 8; + icon_state = "0-8" + }, +/obj/structure/railing{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/zpipe/up/supply{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/zpipe/up/scrubbers{ + dir = 4 + }, +/turf/simulated/floor/plating, +/area/maintenance/substation/central) +"ebQ" = ( +/obj/item/weapon/cell/high{ + charge = 100; + maxcharge = 15000; + pixel_x = 5; + pixel_y = -5 + }, +/obj/item/weapon/cell/high{ + charge = 100; + maxcharge = 15000; + pixel_x = 5; + pixel_y = -5 + }, +/obj/item/weapon/cell/high{ + charge = 100; + maxcharge = 15000; + pixel_x = 5; + pixel_y = -5 + }, +/obj/item/weapon/cell/high{ + charge = 100; + maxcharge = 15000; + pixel_x = 5; + pixel_y = -5 + }, +/obj/item/device/assembly/prox_sensor{ + pixel_x = -8; + pixel_y = 4 + }, +/obj/item/device/assembly/prox_sensor{ + pixel_x = -8; + pixel_y = 4 + }, +/obj/item/weapon/storage/firstaid/regular{ + empty = 1; + name = "First-Aid (empty)" + }, +/obj/item/weapon/storage/firstaid/regular{ + empty = 1; + name = "First-Aid (empty)" + }, +/obj/item/weapon/storage/firstaid/regular{ + empty = 1; + name = "First-Aid (empty)" + }, +/obj/item/device/healthanalyzer, +/obj/item/device/healthanalyzer, +/obj/item/device/healthanalyzer, +/obj/item/device/flash/synthetic, +/obj/item/device/flash/synthetic, +/obj/item/device/flash/synthetic, +/obj/item/device/flash/synthetic, +/obj/item/device/flash/synthetic, +/obj/item/device/flash/synthetic, +/obj/item/stack/cable_coil, +/obj/item/stack/cable_coil, +/obj/machinery/light, +/obj/effect/floor_decal/borderfloorwhite, +/obj/effect/floor_decal/corner/purple/border, +/obj/structure/closet{ + name = "robotics parts" + }, +/turf/simulated/floor/tiled/white, +/area/assembly/robotics) +"ebR" = ( +/obj/item/clothing/glasses/welding, +/obj/item/clothing/glasses/welding, +/obj/item/clothing/head/welding{ + pixel_x = -3; + pixel_y = 5 + }, +/obj/item/clothing/head/welding{ + pixel_x = -3; + pixel_y = 5 + }, +/obj/machinery/ai_status_display{ + pixel_y = -32 + }, +/obj/effect/floor_decal/borderfloorwhite, +/obj/effect/floor_decal/corner/purple/border, +/obj/structure/closet{ + name = "welding equipment" + }, +/turf/simulated/floor/tiled/white, +/area/assembly/robotics) +"ebS" = ( +/obj/machinery/firealarm{ + dir = 8; + pixel_x = -24 + }, +/obj/effect/floor_decal/borderfloorwhite{ + dir = 1 + }, +/obj/effect/floor_decal/corner/purple/border{ + dir = 1 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/obj/structure/cable/green{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/turf/simulated/floor/tiled/white, +/area/rnd/research) +"ebT" = ( +/obj/machinery/atmospherics/pipe/manifold/hidden/supply{ + dir = 4 + }, +/obj/structure/cable/green{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/obj/effect/floor_decal/borderfloorwhite/corner{ + dir = 1 + }, +/obj/effect/floor_decal/corner/purple/bordercorner{ + dir = 1 + }, +/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{ + dir = 4 + }, +/obj/structure/cable/green{ + d1 = 1; + d2 = 8; + icon_state = "1-8" + }, +/obj/structure/disposalpipe/junction, +/turf/simulated/floor/tiled/white, +/area/rnd/research) +"ebV" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/obj/structure/cable/green{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/turf/simulated/wall/r_wall, +/area/rnd/research) +"ebW" = ( +/obj/machinery/light{ + dir = 8 + }, +/obj/machinery/atmospherics/unary/vent_pump/on{ + dir = 4 + }, +/turf/simulated/floor/tiled/white, +/area/rnd/research) +"ebX" = ( +/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{ + dir = 8 + }, +/obj/structure/cable/green{ + d1 = 1; + d2 = 4; + icon_state = "1-4" + }, +/obj/structure/disposalpipe/segment, +/obj/machinery/atmospherics/pipe/manifold/hidden/supply, +/turf/simulated/floor/tiled/white, +/area/rnd/research) +"ebY" = ( +/obj/machinery/alarm{ + dir = 8; + icon_state = "alarm0"; + pixel_x = 22 + }, +/obj/machinery/floodlight, +/turf/simulated/floor/plating, +/area/maintenance/research_medical) +"ebZ" = ( +/obj/machinery/camera/network/second_deck{ + c_tag = "Second Deck - Starboard Hallway One" + }, +/obj/machinery/light{ + dir = 1 + }, +/obj/effect/floor_decal/borderfloor/corner{ + dir = 4 + }, +/obj/effect/floor_decal/corner/purple/bordercorner{ + dir = 4 + }, +/turf/simulated/floor/tiled, +/area/hallway/primary/seconddeck/ascenter) +"eca" = ( +/obj/machinery/camera/network/second_deck{ + c_tag = "Second Deck - Starboard Hallway Three" + }, +/obj/effect/floor_decal/borderfloor/corner{ + dir = 1 + }, +/obj/effect/floor_decal/corner/purple/bordercorner{ + dir = 1 + }, +/turf/simulated/floor/tiled, +/area/hallway/primary/seconddeck/starboard) +"ecb" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/black{ + dir = 4 + }, +/turf/simulated/floor/tiled/white, +/area/medical/virology) +"ecc" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/machinery/atmospherics/pipe/manifold/hidden/black{ + dir = 8 + }, +/turf/simulated/floor/tiled/white, +/area/medical/virology) +"ecd" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 10 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, +/obj/structure/cable{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/obj/machinery/camera/network/second_deck{ + c_tag = "Second Deck - Starboard Hallway Four"; + dir = 4 + }, +/obj/machinery/light{ + dir = 8; + icon_state = "tube1"; + pixel_y = 0 + }, +/turf/simulated/floor/tiled, +/area/hallway/primary/seconddeck/starboard) +"ece" = ( +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/machinery/camera/network/second_deck{ + c_tag = "Second Deck - Starboard Hallway Two"; + dir = 1 + }, +/obj/effect/floor_decal/borderfloor, +/obj/effect/floor_decal/corner/paleblue/border, +/turf/simulated/floor/tiled, +/area/hallway/primary/seconddeck/starboard) +"ecf" = ( +/obj/effect/floor_decal/borderfloorwhite/corner, +/obj/effect/floor_decal/corner/lime/bordercorner, +/obj/machinery/atmospherics/pipe/simple/hidden/red{ + icon_state = "intact"; + dir = 9 + }, +/turf/simulated/floor/tiled/white, +/area/medical/virology) +"ecg" = ( +/obj/item/weapon/storage/secure/safe{ + pixel_x = 5; + pixel_y = -29 + }, +/obj/machinery/light, +/obj/effect/floor_decal/borderfloorwhite, +/obj/effect/floor_decal/corner/lime/border, +/turf/simulated/floor/tiled/white, +/area/medical/virology) +"ech" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/machinery/atmospherics/pipe/simple/hidden/red{ + icon_state = "intact"; + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/black, +/turf/simulated/floor/tiled/white, +/area/medical/virology) +"eci" = ( +/obj/effect/floor_decal/borderfloorwhite/corner{ + dir = 8 + }, +/obj/effect/floor_decal/corner/lime/bordercorner{ + dir = 8 + }, +/turf/simulated/floor/tiled/white, +/area/medical/virology) +"ecj" = ( +/obj/machinery/atmospherics/pipe/manifold/hidden/supply{ + dir = 8 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/black, +/turf/simulated/floor/tiled/white, +/area/medical/virology) +"eck" = ( +/obj/machinery/door/firedoor/glass, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/obj/machinery/door/airlock/multi_tile/glass{ + dir = 2 + }, +/turf/simulated/floor/tiled, +/area/hallway/primary/seconddeck/stairwell) +"ecl" = ( +/obj/structure/cable{ + d1 = 1; + d2 = 2; + icon_state = "1-2"; + pixel_y = 0 + }, +/obj/structure/disposalpipe/segment{ + dir = 8; + icon_state = "pipe-c" + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/turf/simulated/floor, +/area/maintenance/cargo) +"ecm" = ( +/obj/structure/cable/green{ + d1 = 1; + d2 = 8; + icon_state = "1-8" + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/obj/structure/cable/green{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/obj/effect/floor_decal/steeldecal/steel_decals4{ + dir = 9 + }, +/obj/effect/floor_decal/steeldecal/steel_decals4{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/manifold/hidden/supply, +/turf/simulated/floor/tiled/white, +/area/medical/medbay2) +"ecn" = ( +/obj/effect/floor_decal/industrial/warning{ + dir = 4 + }, +/obj/structure/cable{ + d1 = 1; + d2 = 2; + icon_state = "1-2"; + pixel_y = 0 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/turf/simulated/floor/plating, +/area/maintenance/medbay) +"eco" = ( +/obj/effect/floor_decal/industrial/outline/yellow, +/obj/vehicle/train/engine{ + dir = 8 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/turf/simulated/floor/tiled, +/area/quartermaster/office) +"ecp" = ( +/obj/effect/floor_decal/industrial/outline/yellow, +/obj/vehicle/train/trolley{ + dir = 8 + }, +/turf/simulated/floor/tiled, +/area/quartermaster/office) +"ecq" = ( +/obj/structure/cable{ + d1 = 1; + d2 = 2; + icon_state = "1-2"; + pixel_y = 0 + }, +/obj/effect/floor_decal/industrial/warning{ + icon_state = "warning"; + dir = 1 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/turf/simulated/floor/plating, +/area/maintenance/medbay) +"ecr" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 6 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 6 + }, +/obj/structure/cable{ + d1 = 2; + d2 = 4; + icon_state = "2-4" + }, +/obj/structure/catwalk, +/obj/random/mob/mouse, +/turf/simulated/floor/plating, +/area/maintenance/bar) +"ecs" = ( +/obj/item/glass_jar, +/obj/random/mob/mouse, +/turf/simulated/floor/plating, +/area/maintenance/cargo) +"ect" = ( +/obj/structure/table/marble, +/obj/item/weapon/reagent_containers/food/drinks/glass2/square{ + pixel_x = 8; + pixel_y = 8 + }, +/obj/item/weapon/reagent_containers/food/drinks/glass2/square{ + pixel_x = 0; + pixel_y = 8 + }, +/obj/item/weapon/reagent_containers/food/drinks/glass2/square{ + pixel_x = -8; + pixel_y = 8 + }, +/obj/item/weapon/reagent_containers/food/drinks/glass2/square{ + pixel_x = 8; + pixel_y = 4 + }, +/obj/item/weapon/reagent_containers/food/drinks/glass2/square{ + pixel_x = 0; + pixel_y = 4 + }, +/obj/item/weapon/reagent_containers/food/drinks/glass2/square{ + pixel_x = -8; + pixel_y = 4 + }, +/obj/machinery/camera/network/civilian{ + c_tag = "CIV - Cafe Back Room"; + dir = 2 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 10 + }, +/turf/simulated/floor/tiled/yellow, +/area/crew_quarters/coffee_shop) +"ecu" = ( +/obj/random/mob/mouse, +/turf/simulated/floor/plating, +/area/maintenance/cargo) +"ecv" = ( +/obj/effect/floor_decal/industrial/warning{ + icon_state = "warning"; + dir = 4 + }, +/obj/machinery/light/small, +/obj/random/mob/mouse, +/turf/simulated/floor/plating, +/area/maintenance/medbay) +"ecw" = ( +/obj/machinery/atmospherics/pipe/manifold/hidden/supply, +/obj/machinery/power/apc{ + dir = 2; + name = "south bump"; + pixel_y = -24 + }, +/obj/machinery/light_switch{ + pixel_x = 11; + pixel_y = -24 + }, +/obj/structure/cable/green, +/obj/effect/floor_decal/borderfloorwhite, +/obj/effect/floor_decal/corner/paleblue/border, +/turf/simulated/floor/tiled/white, +/area/medical/patient_wing) +"ecx" = ( +/obj/machinery/light/small{ + dir = 8 + }, +/obj/random/mob/mouse, +/turf/simulated/floor/plating, +/area/maintenance/chapel) +"ecy" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/obj/structure/disposalpipe/segment, +/obj/structure/cable{ + d1 = 1; + d2 = 2; + icon_state = "1-2"; + pixel_y = 0 + }, +/obj/structure/catwalk, +/obj/random/mob/mouse, +/turf/simulated/floor/plating, +/area/maintenance/bar) +"ecz" = ( +/obj/machinery/door/firedoor, +/obj/machinery/door/airlock{ + name = "Chapel Office"; + req_access = list(27) + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/obj/structure/cable/green{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/turf/simulated/floor/tiled/steel_grid, +/area/chapel/office) +"ecA" = ( +/obj/structure/table/woodentable, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, +/obj/item/weapon/deck/cards, +/obj/machinery/atmospherics/pipe/manifold4w/hidden/supply, +/turf/simulated/floor/wood, +/area/library) +"ecB" = ( +/obj/random/mob/mouse, +/turf/simulated/floor/plating, +/area/maintenance/locker) +"ecC" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 9; + pixel_y = 0 + }, +/obj/machinery/meter, +/obj/random/mob/mouse, +/turf/simulated/floor/plating, +/area/maintenance/thirddeck/foreport) +"ecD" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 5 + }, +/obj/machinery/meter, +/obj/random/mob/mouse, +/turf/simulated/floor/plating, +/area/maintenance/thirddeck/forestarboard) +"ecE" = ( +/obj/machinery/door/firedoor/border_only, +/obj/effect/wingrille_spawn/reinforced, +/obj/machinery/door/blast/shutters{ + density = 0; + dir = 8; + icon_state = "shutter0"; + id = "heads_meeting"; + name = "Meeting Room Window Shutters"; + opacity = 0 + }, +/obj/structure/cable/green{ + d2 = 2; + icon_state = "0-2" + }, +/obj/structure/cable/green{ + d2 = 4; + icon_state = "0-4" + }, +/obj/structure/cable/green, +/turf/simulated/floor/plating, +/area/bridge/meeting_room) + +(1,1,1) = {" +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +"} +(2,1,1) = {" +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +"} +(3,1,1) = {" +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +"} +(4,1,1) = {" +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +"} +(5,1,1) = {" +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +"} +(6,1,1) = {" +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +"} +(7,1,1) = {" +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +"} +(8,1,1) = {" +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +"} +(9,1,1) = {" +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +"} +(10,1,1) = {" +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +"} +(11,1,1) = {" +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +"} +(12,1,1) = {" +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +"} +(13,1,1) = {" +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +"} +(14,1,1) = {" +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +"} +(15,1,1) = {" +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +"} +(16,1,1) = {" +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +"} +(17,1,1) = {" +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +"} +(18,1,1) = {" +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +"} +(19,1,1) = {" +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +"} +(20,1,1) = {" +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +"} +(21,1,1) = {" +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +"} +(22,1,1) = {" +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +"} +(23,1,1) = {" +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +"} +(24,1,1) = {" +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +"} +(25,1,1) = {" +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +"} +(26,1,1) = {" +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +"} +(27,1,1) = {" +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +"} +(28,1,1) = {" +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +"} +(29,1,1) = {" +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +"} +(30,1,1) = {" +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +"} +(31,1,1) = {" +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +"} +(32,1,1) = {" +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +"} +(33,1,1) = {" +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +"} +(34,1,1) = {" +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +"} +(35,1,1) = {" +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +"} +(36,1,1) = {" +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +"} +(37,1,1) = {" +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +"} +(38,1,1) = {" +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +"} +(39,1,1) = {" +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +"} +(40,1,1) = {" +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +"} +(41,1,1) = {" +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +"} +(42,1,1) = {" +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +"} +(43,1,1) = {" +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +"} +(44,1,1) = {" +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aac +aac +aac +aac +aac +aac +aac +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +"} +(45,1,1) = {" +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aac +aac +aac +aac +aac +aac +aac +aac +aac +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +"} +(46,1,1) = {" +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aac +aac +aac +aac +aac +aac +aac +aac +aac +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +"} +(47,1,1) = {" +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aac +aac +aac +aac +aac +aac +aac +aac +aac +aac +aac +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +"} +(48,1,1) = {" +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aac +aac +aac +aac +aac +aac +aac +aac +aac +aac +aac +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aSf +aSf +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +"} +(49,1,1) = {" +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aac +aac +aac +aac +aac +aac +aac +aac +aac +aac +aac +aac +aac +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aSf +aSf +aSf +aSf +aSf +aSf +aSf +aSf +aSf +aSf +aSf +aSf +aSf +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +"} +(50,1,1) = {" +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aac +aac +aac +aac +aac +aac +aac +aac +aac +aac +aac +aac +aac +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aSf +aSf +aSf +aSf +aSf +aSf +aSf +aSf +aSf +aSf +aSf +aSf +aSf +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +"} +(51,1,1) = {" +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aac +aac +aac +aac +aac +aac +aac +aac +aac +aac +aac +aac +aac +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aSf +aSf +aSf +aSf +aSf +aSf +aSf +aSf +aSf +aSf +aSf +aSf +aSf +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +"} +(52,1,1) = {" +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aac +aac +aac +aac +aac +aac +aac +aac +aac +aac +aac +aac +aac +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aSf +aSf +aSf +aSf +aSf +aSf +aSf +aSf +aSf +aSf +aSf +aSf +aSf +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +"} +(53,1,1) = {" +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aac +aac +aac +aac +aac +aac +aac +aac +aac +aac +aac +aac +aac +aac +aac +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aSf +aSf +aSf +aSf +aSf +aSf +aSf +aSf +aSf +aSf +aSf +aSf +aSf +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +"} +(54,1,1) = {" +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aac +aac +aac +aac +aac +aac +aac +aac +aac +aac +aac +aac +aac +aac +aac +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aSf +aSf +aSf +aSf +aSf +aSf +aSf +aSf +aSf +aSf +aSf +aSf +aSf +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +"} +(55,1,1) = {" +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aac +aac +aac +aac +aac +aac +aac +aac +aac +aac +aac +aac +aac +aac +aac +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aSf +aSf +aSf +aSf +aSf +aSf +aSf +aSf +aSf +aSf +aSf +aSf +aSf +aSf +aSf +aSf +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +"} +(56,1,1) = {" +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aac +aac +aac +aac +aac +aac +aac +aac +aac +aac +aac +aac +aac +aac +aac +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aSf +aSf +aSf +aSf +aSf +aSf +aSf +aSf +aSf +aSf +aSf +aSf +aSf +aSf +aSf +aSf +aSf +aSf +aSf +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +"} +(57,1,1) = {" +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aac +aac +aac +aac +aac +aac +aac +aac +aac +aac +aac +aac +aac +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aSf +aSf +aSf +aSf +aSf +aSf +aSf +aSf +aSf +aSf +aSf +aSf +aSf +aSf +aSf +aSf +aSf +aSf +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +"} +(58,1,1) = {" +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aac +aac +aac +aac +aac +aac +aac +aac +aac +aac +aac +aac +aac +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aSf +aSf +aSf +aSf +aSf +aSf +aSf +aSf +aSf +aSf +aSf +aSf +aSf +aSf +aSf +aSf +aSf +aSf +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +"} +(59,1,1) = {" +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aac +aac +aac +aac +aac +aac +aac +aac +aac +aac +aac +aac +aac +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aSf +aSf +aSf +aSf +aSf +aSf +aSf +aSf +aSf +aSf +aSf +aSf +aSf +aSf +aSf +aSf +aSf +aSf +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +"} +(60,1,1) = {" +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aac +aac +aac +aac +aac +aac +aac +aac +aac +aac +aac +aac +aac +aac +aac +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aSf +aSf +aSf +aSf +aSf +aSf +aSf +aSf +aSf +aSf +aSf +aSf +aSf +aSf +aSf +aSf +aSf +aSf +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +"} +(61,1,1) = {" +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aac +aac +aac +aac +aac +aac +aac +aac +aac +aac +aac +aac +aac +aac +aac +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aSf +aSf +aSf +aSf +aSf +aSf +aSf +aSf +aSf +aSf +aSf +aSf +aSf +aSf +aSf +aSf +aSf +aSf +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +"} +(62,1,1) = {" +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aac +aac +aac +aac +aac +aac +aac +aac +aac +aac +aac +aac +aac +aac +aac +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aSf +aSf +aSf +aSf +aSf +aSf +aSf +aSf +aSf +aSf +aSf +aSf +aSf +aSf +aSf +aSf +aSf +aSf +aSf +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +"} +(63,1,1) = {" +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aac +aac +aac +aac +aac +aac +aac +aac +aac +aac +aac +aac +aac +aac +aac +aac +aac +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aab +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aSf +aSf +aSf +aSf +aSf +aSf +aSf +aSf +aSf +aSf +aSf +aSf +aSf +aSf +aSf +aSf +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +"} +(64,1,1) = {" +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aac +aac +aac +aac +aac +aac +aac +aac +aac +aac +aac +aac +aac +aac +aac +aac +aac +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aSf +aSf +aSf +aSf +aSf +aSf +aSf +aSf +aSf +aSf +aSf +aSf +aSf +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +"} +(65,1,1) = {" +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aac +aac +aac +aac +aac +aac +aac +aac +aac +aac +aac +aac +aac +aac +aac +aac +aac +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aab +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aSf +aSf +aSf +aSf +aSf +aSf +aSf +aSf +aSf +aSf +aSf +aSf +aSf +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +"} +(66,1,1) = {" +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aac +aac +aac +aac +aac +aac +aac +aac +aac +aac +aac +aac +aac +aac +aac +aac +aac +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aSf +aSf +aSf +aSf +aSf +aSf +aSf +aSf +aSf +aSf +aSf +aSf +aSf +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +"} +(67,1,1) = {" +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aac +aac +aac +aac +aac +aac +aac +aac +aac +aac +aac +aac +aac +aac +aac +aac +aac +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aSf +aSf +aSf +aSf +aSf +aSf +aSf +aSf +aSf +aSf +aSf +aSf +aSf +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +"} +(68,1,1) = {" +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aab +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aac +aac +aac +aac +aac +aac +aac +aac +aac +aac +aac +aac +aac +aac +aac +aac +aac +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aad +aad +aad +aaf +aaf +aaf +aag +aad +aad +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aSf +aSf +aSf +aSf +aSf +aSf +aSf +aSf +aSf +aSf +aSf +aSf +aSf +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +"} +(69,1,1) = {" +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aac +aac +aac +aac +aac +aac +aac +aac +aac +aac +aac +aac +aac +aac +aac +aac +aac +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aad +aad +aaa +aaa +aaa +aaf +aaa +aaa +aaa +aad +aad +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aSf +aSf +aSf +aSf +aSf +aSf +aSf +aSf +aSf +aSf +aSf +aSf +aSf +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +"} +(70,1,1) = {" +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aac +aac +aac +aac +aac +aac +aac +aac +aac +aac +aac +aac +aac +aac +aac +aac +aac +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaf +aaf +aaa +aaa +aaa +aaa +aaf +aaa +aaa +aaa +aaa +aad +aad +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aSf +aSf +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +"} +(71,1,1) = {" +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aac +aac +aac +aac +aac +aac +aac +aac +aac +aac +aac +aac +aac +aac +aac +aac +aac +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaf +aaa +aaa +aaa +aaa +aaf +aaa +aaa +aaa +aaa +aaf +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +"} +(72,1,1) = {" +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aac +aac +aac +aac +aac +aac +aac +aac +aac +aac +aac +aac +aac +aac +aac +aac +aac +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaf +akL +akL +akL +atT +atT +atT +akL +akL +akL +aaf +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +"} +(73,1,1) = {" +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aac +aac +aac +aac +aac +aac +aac +aac +aac +aac +aac +aac +aac +aac +aac +aac +aac +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +akL +akL +arS +asP +atU +dZM +apk +apk +ayO +akL +akL +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aag +aad +aad +aad +aad +aad +aaf +aag +aad +aad +aad +aad +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +"} +(74,1,1) = {" +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aac +aac +aac +aac +aac +aac +aac +aac +aac +aac +aac +aac +aac +aac +aac +aac +aac +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +akL +akL +aqD +apk +apk +apk +avq +awy +apk +apk +apk +akL +akL +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaf +aaa +aaa +aaa +aaa +aaa +aaf +aaa +aaa +aad +aad +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +"} +(75,1,1) = {" +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aac +aac +aac +aac +aac +aac +aac +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aag +aad +aaf +akL +als +als +als +als +als +atT +apj +aqD +akL +akL +akL +akL +akL +akL +akL +apk +aBf +akL +axT +axT +axT +axT +axT +akL +aaa +aaa +aaa +aaf +aaa +aaa +aaa +aaa +aaa +aaf +aaa +aaa +aaa +aad +aad +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +"} +(76,1,1) = {" +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aac +aac +aac +aac +aac +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aag +aaf +aaa +aaa +akL +als +alt +amm +alt +als +atT +apk +apk +akL +asQ +asQ +asQ +asQ +axQ +akL +apk +aBf +aBf +als +als +als +als +als +akL +aaa +aaa +aaa +aaf +aaa +aaa +aaa +aaa +aaa +aaf +aaa +aaa +aaa +aaa +aad +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +"} +(77,1,1) = {" +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aac +aac +aac +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aad +aaa +aaa +aaa +akL +alt +alR +amn +alR +alt +akL +apl +aqE +akL +asQ +asQ +asQ +asQ +asQ +akL +apk +aBg +aCs +aCt +aCt +aCt +aCt +aCt +aCs +aCO +aDR +aCO +aCs +aCs +aCs +aCs +aCs +aCs +aCs +aaa +aaa +aaa +aaa +aad +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +"} +(78,1,1) = {" +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aad +aaa +aaa +aaa +akL +alt +alS +amo +amR +alt +akL +apm +aqF +akL +asQ +asQ +asQ +asQ +asQ +akL +aqD +aBh +aCs +aDp +aEE +aEE +aEE +aHv +aEE +aEE +aJz +aEE +aEE +aEE +aLA +aEE +aEE +aNo +aCs +aCs +aaf +aaf +aaf +aag +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +"} +(79,1,1) = {" +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aad +aaf +aaf +aaf +akL +alt +alT +amo +amS +alt +akL +apn +aqF +akL +asQ +asQ +asQ +asQ +asQ +akL +aqD +aBi +aCs +aDq +aEF +aFO +aFO +aFO +aFO +aFO +aFO +aFO +aFO +aFO +aFO +aFO +aFO +aNp +aOo +aCs +aaa +aaa +aaa +aad +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +"} +(80,1,1) = {" +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aad +aaa +aaa +aaa +akL +alu +alU +amo +amT +alu +akL +akL +aqG +akL +asQ +asQ +asQ +asQ +asQ +akL +aqD +aBj +aCs +aDr +aEG +aFP +aFQ +aFQ +aFQ +aFQ +aFQ +aFQ +aFQ +aFQ +aFQ +aFQ +aFP +aNq +aOp +aCO +aaa +aaa +aaa +aad +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +"} +(81,1,1) = {" +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aad +aaa +aaa +aaa +akL +alt +alV +amo +amo +anD +aox +apo +aqH +arT +arT +atV +avr +awz +arT +arT +aqD +aBk +aCt +aDs +aEH +aFQ +aFQ +aFQ +aFQ +aFQ +aFQ +aFQ +aFQ +aFQ +aFQ +aFQ +aFQ +aNr +aOq +aDR +aaa +aaa +aaa +abc +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +"} +(82,1,1) = {" +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aad +aad +aaa +aaa +aaa +akL +alt +alW +amo +amU +anD +aox +apo +aqI +arU +asR +atW +avs +awA +axR +arU +aqD +aBl +aCt +aDt +aEH +aFQ +aFQ +aFQ +aFQ +aFQ +aFQ +aFQ +aFQ +aFQ +aFQ +aFQ +aFQ +aNr +aOq +aCO +aaa +aaa +aaa +aag +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +"} +(83,1,1) = {" +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaf +aaf +aaf +aad +aad +aaa +aaa +aaa +aaa +akL +alu +alX +amo +amV +alu +aoy +app +aqJ +arU +asS +atX +avt +awB +axS +arU +azV +axT +aCs +aDu +aEI +aFQ +aFQ +aFQ +aFQ +aFQ +aFQ +aFQ +aFQ +aFQ +aFQ +aFQ +aFQ +aNs +aOr +aCs +aaa +aaa +aaa +aag +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +"} +(84,1,1) = {" +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +adJ +aag +aad +aad +aad +aad +aaa +aaa +aaf +aaa +aaa +aaa +aaa +aaa +akL +alt +alY +amo +amW +alt +aoy +apq +aqK +arU +asT +atY +avu +awC +arU +arU +azW +aBm +aCs +aDv +aEJ +aFQ +aFQ +aFQ +aFQ +aFQ +aFQ +aFQ +aFQ +aFQ +aFQ +aFQ +aFQ +aNt +aOq +aCO +aaf +aaf +aaf +aad +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +"} +(85,1,1) = {" +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaf +adK +aaa +aaa +aaf +aaa +aaa +aaa +aaa +aaf +aaa +aaa +aaa +aaa +aaa +akL +alt +alZ +amp +amX +alt +aoy +apr +aqL +arV +asU +atZ +avu +awD +axT +ayP +azW +aBm +aCu +aDw +aEJ +aFQ +aFQ +aFQ +aFQ +aFQ +aFQ +aFQ +aFQ +aFQ +aFQ +aFQ +aFQ +aNt +aOq +aDR +aaa +aaa +aaa +aad +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +"} +(86,1,1) = {" +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaf +aaf +aaa +aaa +aaa +aaf +aaa +aaa +aaa +aaa +aaf +aaa +aaa +aaa +aaa +aaa +akL +alt +ama +ama +ama +alt +aoy +aps +aqM +arW +asV +aua +avv +awE +axU +apk +azX +aBm +aCs +aDx +aEK +aFP +aFQ +aFQ +aFQ +aFQ +aFQ +aFQ +aFQ +aFQ +aFQ +aFQ +aFP +aNu +aOs +aCO +aaa +aaa +aaa +aaf +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +"} +(87,1,1) = {" +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaf +aaa +aaa +aaa +aaa +aaf +aaa +aaa +aaa +ahc +aeF +ahc +aaa +aaa +aaa +aaa +akL +alv +amb +amb +amb +anE +aoy +apt +aqN +arX +asW +aub +avw +awF +axV +axV +axV +axV +aCs +aDt +aEL +aFR +aFR +aHw +aHZ +aIH +aFR +aHw +aKG +aIH +aFR +aFR +aFR +aNv +aOt +aCs +aaa +aaa +aaa +aag +aad +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +"} +(88,1,1) = {" +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aag +aaa +aaa +aaa +aaa +aeF +aeF +aeF +aeF +aeF +aeF +aeF +aeF +aeF +aeF +aeF +aeF +aeF +aeF +aeF +aeF +aeF +aeF +apu +apu +apu +asX +auc +avw +awG +axW +ayQ +ayQ +ayQ +aCs +aDy +aEM +aFS +aGG +aHx +aHZ +aII +aEP +aHx +aKG +aII +aEP +aLZ +aMJ +aNw +aOu +aCs +aaa +aaa +aaa +aaa +aad +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +"} +(89,1,1) = {" +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aad +aaf +aaf +aaf +aeF +aeF +afC +afC +afC +ahz +aeF +afC +afC +aji +afC +afC +aeF +alw +amc +amq +amY +anF +aeF +apv +apv +arY +asY +aud +avx +awH +axX +ayR +ayR +aBn +aCs +aDz +aEN +aEP +aEP +aHx +aHZ +aIJ +aEP +aKn +aKG +aII +aEP +aEP +aMK +aCt +aCu +aCs +aCs +aaa +aaa +aaa +aad +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +"} +(90,1,1) = {" +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aad +aaa +aaa +aaa +aeF +afa +afD +afD +afD +ahA +ail +aiC +aiU +ajj +ajE +ajE +akM +alx +ajE +ajE +amZ +anG +aeF +apw +aqO +apy +apu +atZ +avy +awI +axV +ayS +ayR +ayR +aCs +aDA +aEN +aEP +aEP +aHx +aIa +aII +aJA +aHx +aKH +aII +aEP +aEP +aML +aCt +aDO +aDO +aMf +aaa +aaa +aaa +aaf +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +"} +(91,1,1) = {" +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aad +aaa +aaa +aaa +aeF +afb +afE +afE +afE +afE +afE +afE +afE +afE +afE +akg +akg +akg +afE +afE +ana +anH +aeF +apx +aqP +aqP +asZ +aue +avz +awJ +axY +ayT +azY +aBo +aCs +aDB +aEO +aFT +aFT +aFT +aFT +aIK +aFT +aKo +aKI +aFT +aLB +aFT +aMM +aCt +aOv +aOv +aMf +aaf +aaf +aaf +aad +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +"} +(92,1,1) = {" +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aad +aaa +aaa +aaa +aeF +afc +afF +afF +afF +afF +afF +afF +afF +afF +afF +afF +afF +afF +afF +afF +anb +anH +aeF +apy +apy +arZ +apu +auc +avw +awK +axV +ayU +ayR +ayR +aCs +aDC +aEP +aEP +aEP +aEP +aEP +aEN +aJB +aCs +aCs +aLd +aLC +aMa +aCs +aCs +aAc +aMf +aMf +aaa +aaa +aaa +aad +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +"} +(93,1,1) = {" +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aah +aah +aah +aah +aah +aaa +aaa +aaa +aaf +aaa +aaa +aaa +aeF +afc +afF +afF +afF +afF +afF +afF +afF +afG +ajF +akh +afG +afG +aiD +amr +anb +anI +aeF +apy +apy +asa +apu +auf +avA +axG +axV +ayR +ayR +aBp +aCs +aDD +aEQ +aEP +aEP +aEP +aEP +aEN +aJC +aCs +aKJ +aKJ +aKJ +aKJ +aMN +aMf +aAc +aFc +aaa +aaa +aaa +aaa +aad +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +"} +(94,1,1) = {" +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aah +aah +aah +aah +aah +aaa +aaa +aaa +aag +aaa +aaa +aaa +aeF +afc +afF +afG +agW +afG +agW +aiD +afG +afG +ajG +agZ +akN +aly +aiD +ams +anb +anH +aeF +apz +apy +asb +apu +atW +avw +awA +axV +ayV +ayV +aBq +aCs +aDE +aER +aFU +aGH +aHy +aIb +aIL +aJD +aCs +aKJ +aKJ +aKJ +aKJ +aKJ +aMf +aAc +aFc +aaa +aaa +aaa +aaa +aaf +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +"} +(95,1,1) = {" +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aah +aah +aah +aah +aah +aaa +aaa +aaa +aad +aaa +aaa +aaa +aeF +afc +afG +agq +agX +ahB +aim +aiE +aiV +ahB +ajH +agZ +akO +aiD +ahB +afF +anb +anH +aeF +apu +apu +apu +apu +aug +avw +awL +axV +axV +axV +axV +aCv +aDF +aES +aFV +aCx +aCx +aES +aIM +aJE +aCv +aKJ +aKJ +aKJ +aKJ +aKJ +aMf +aOw +aFc +aaa +aaa +aaa +aaa +aae +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +"} +(96,1,1) = {" +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aah +aah +aah +aah +aah +aaa +aaa +aaa +aad +aaa +aaa +aaa +aeF +afc +afH +agr +agY +agW +aim +agZ +aiW +agW +ajI +agZ +akN +alz +afF +afF +anb +anJ +aoz +apA +aqQ +asc +ata +auh +avB +awM +axZ +ayW +azZ +aBr +aCw +aDG +aET +aFW +aGI +aHz +aIc +aIN +aJF +aCv +aKJ +aKJ +aKJ +aKJ +aKJ +aMf +aAc +aFc +aaa +aaa +aaa +aaa +aag +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +"} +(97,1,1) = {" +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aah +aah +aah +aah +aah +aaa +aaa +aaa +aad +aaf +aaf +aaf +aeF +afc +afI +ags +agZ +ahC +agZ +agZ +agZ +ajk +agZ +agZ +akN +agZ +afF +afF +anb +anK +ahc +apA +aqQ +asd +atb +aui +avC +atb +atb +ayX +aAa +aBs +aCx +aDH +aEU +aFX +aGJ +aHA +aHA +aIO +aJG +aCv +aKJ +aKJ +aKJ +aKJ +aKJ +aMf +aAc +aFc +aaa +aaa +aaa +aaa +aad +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +"} +(98,1,1) = {" +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aah +aah +aah +aah +aah +aaa +aaa +aaa +aaf +aaa +aaa +aaa +aeF +afc +afJ +agt +agY +agW +aim +agZ +aiX +aiD +agW +aki +akP +alA +afF +afF +anb +anL +aoA +apB +aqR +ase +atc +auj +avD +awN +aya +ayY +aAa +aBs +aCy +aDI +aEV +aFY +aGK +aHB +aId +aIP +aJH +aKp +aKp +aKp +aKp +aKp +aMf +aMf +aAc +aMf +aMf +aaa +aaa +aaa +aad +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +"} +(99,1,1) = {" +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aah +aah +aah +aah +aah +aaa +aaa +aaa +aaf +aaa +aaa +aaa +aeF +afc +afG +agq +aha +ahD +aim +aiF +aiY +ahB +ajJ +akj +akQ +alB +ahB +afF +anb +anM +aeF +apC +aqS +apC +atd +auk +avw +awA +arU +ayb +aAb +aBt +aBt +aDJ +aEW +aFZ +aGL +aEW +aIe +aIQ +aJI +aKq +aKK +aLe +aLD +aKq +aDO +aNx +aAc +aPg +aMf +aaf +aaf +aaf +aad +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +"} +(100,1,1) = {" +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aah +aah +aah +aah +aah +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aeF +afc +afF +afG +agW +afG +agW +aiD +afG +afG +ajK +akk +akR +alC +aiD +amr +anb +anN +aoB +apD +aqT +asf +apC +auk +avw +awA +arU +ayZ +azb +aBt +aCz +aDK +aEX +aGa +aGM +aEW +aIf +aIR +aJJ +aKr +aKL +aLf +aLE +aMb +aDO +aNx +aAc +aPh +aMf +aaa +aaa +aaa +aaf +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +"} +(101,1,1) = {" +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aab +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aah +aah +aah +aah +aah +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aeF +afc +afF +afF +afF +afF +afF +afF +afF +afG +afG +akl +akS +afG +aiD +ams +anb +anN +aoB +apE +aqU +asg +apC +auk +avy +awP +arU +aza +azb +aBt +aCA +aDL +aEY +aDM +aGN +aGL +aDH +aIQ +aJK +aKq +aKM +aLg +aLF +aKq +aDO +aNx +aOx +aMf +aMf +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aWg +aWg +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +"} +(102,1,1) = {" +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aah +aah +aah +aah +aah +aaa +aaa +aaa +aaf +aaa +aaa +aaa +aeF +afc +afF +afF +afF +afF +afF +afF +afF +afF +afF +afF +afF +afF +afF +afF +anb +anN +aoB +apF +aqV +ash +apC +aul +avw +awA +arU +azb +aAc +aBt +aCB +aDM +aEZ +aGb +aGO +aHC +aIg +aIS +aJL +aKq +aKq +aKq +aKq +aKq +ayb +aNy +aAc +aMf +aaa +aaa +aaa +aaa +aaf +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aWg +aWg +aWg +aWg +aWg +aWg +aWg +aWg +aWg +aWg +aWg +aWg +aWg +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +"} +(103,1,1) = {" +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aah +aah +aah +aah +aah +aaa +aaa +aaa +aad +aaa +aaa +aaa +aeF +afd +afK +afK +afK +afK +afK +afK +afK +afK +afK +afK +afK +afK +afK +afK +anc +anN +aeF +apC +apC +apC +apC +aum +avw +awR +arU +azc +aAc +aBt +aCC +aDM +aDM +aGc +aGP +aEW +aES +aIT +aES +aES +aKN +aLh +aAc +aMc +ayb +aNz +aAc +aMf +aaa +aaa +aaa +aaa +aag +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aWg +aWg +aWg +aWg +aWg +aWg +aWg +aWg +aWg +aWg +aWg +aWg +aWg +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +"} +(104,1,1) = {" +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aah +aah +aah +aaa +aaa +aab +aaa +aad +aaa +aaa +aaa +aeF +afa +afD +afD +afD +ahE +ain +aiC +aiU +ajl +ajE +ajE +akT +alD +ajE +ajE +and +anO +aeF +apG +aqW +asi +ate +aun +avA +awA +arU +azc +aAc +aBt +aCD +aDM +aDM +aGd +aGQ +aEW +aDO +aDO +aDO +ayb +aKN +aAc +aAc +aMd +ayb +ayb +aOy +aMf +aaa +aaa +aaa +aaa +aad +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aWg +aWg +aWg +aWg +aWg +aWg +aWg +aWg +aWg +aWg +aWg +aWg +aWg +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +"} +(105,1,1) = {" +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aad +aaf +aaf +aaf +aeF +aeF +afL +agu +ahb +ahF +aeF +aiG +aiG +ajm +aiG +aiG +aeF +alE +amd +amt +ane +amt +aeF +afM +aqX +asj +adl +auo +avw +awS +arU +azd +aAc +aBt +aCE +aDN +aFa +aGe +aGR +aEW +aIh +aIh +aJM +ayb +aKN +aAc +aAc +aMe +ayb +aNA +aAc +aMf +aaf +aaf +aaf +aaf +aad +aab +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aWg +aWg +aWg +aWg +aWg +aWg +aWg +aWg +aWg +aWg +aWg +aWg +aWg +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +"} +(106,1,1) = {" +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aad +aad +aaa +aaa +aaa +aaa +aeF +aeF +agv +aeF +aeF +aeF +aeF +aeF +aeF +aeF +aeF +aeF +aeF +aeF +aeF +aeF +aeF +aeF +adl +aqY +ask +arU +aup +avE +awT +arU +aze +aAc +aBt +aBt +aBt +aFb +aBt +aBt +aEW +aIi +aAc +aJN +ayb +aKN +aAc +aLG +aMf +aMf +aNB +aAc +aMf +aaa +aaa +aaa +aaa +aad +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aWg +aWg +aWg +aWg +aWg +aWg +aWg +aWg +aWg +aWg +aWg +aWg +aWg +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +"} +(107,1,1) = {" +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaf +abc +aaf +aad +aad +aaa +aab +aaa +aaa +aaa +aai +afM +afM +ahc +aeF +ahc +afM +afM +ajn +ajL +ahc +aeF +ahc +ame +amu +anf +anP +afM +apH +aqZ +asl +arU +auq +avF +awU +arU +azf +aAc +aBu +ayb +aDO +aDO +aDO +ayb +aHD +aAc +aAc +aAc +ayb +ayb +aLi +ayb +aMf +aMO +aAc +aAc +aMf +aaa +aaa +aaa +aab +aad +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aab +aaa +aaa +aWg +aWg +aWg +aWg +aWg +aWg +aWg +aWg +aWg +aWg +aWg +aWg +aWg +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +"} +(108,1,1) = {" +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aag +aad +aaf +aaa +aaa +aaf +aaa +aaa +aaa +aaa +aaa +aaa +adL +afN +agw +ahd +ahG +aio +aio +aio +aio +aio +akm +aio +aio +aio +dWW +aio +aio +aoC +apI +ara +asm +adl +auz +avG +awV +ayb +azg +aAc +aBv +aCF +aDP +aDP +aDP +aGS +azh +azh +aIU +azh +azh +azh +azh +aLH +aMg +aLH +aNC +aAc +aFc +aaa +aaa +aaa +aaa +aaf +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aWg +aWg +aWg +aWg +aWg +aWg +aWg +aWg +aWg +aWg +aWg +aWg +aWg +aWg +aWg +aWg +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +"} +(109,1,1) = {" +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaf +aaf +aaa +aaa +aaa +aaa +aaf +aaa +aaa +aaa +aaa +aaa +adL +adL +afO +agx +ahe +ahe +ahe +aiH +ahe +ahe +ajM +akn +akU +adl +adL +adL +adL +adl +aoD +apJ +arb +asn +atf +aus +avH +awW +ayc +azh +aAd +aBw +aCG +ayb +aFc +aFc +aFc +ayb +aIj +aIV +aJO +aKs +aKs +aLj +aKs +aKs +aKs +aND +aAc +aFc +aFc +aaa +aaa +aaa +aae +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aWg +aWg +aWg +aWg +aWg +aWg +aWg +aWg +aWg +aWg +aWg +aWg +aWg +aWg +aWg +aWg +aWg +aWg +aWg +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +"} +(110,1,1) = {" +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aad +aaa +aaa +aaa +aaa +aaa +aaf +aaa +aaa +aaa +aaa +adL +adL +afe +afP +agy +ahe +ahH +aip +aiI +aiZ +ais +adl +adl +adl +adl +aaa +aaa +aaa +adl +adl +adl +adl +adl +arU +aut +avw +awX +arU +ayb +ayb +ayb +ayb +ayb +aaa +aaa +aaa +ayb +ayb +ayb +ayb +aKt +aKO +aLk +aLI +aMh +aKs +aNE +aAc +ebj +aFc +aFc +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aWg +aWg +aWg +aWg +aWg +aWg +aWg +aWg +aWg +aWg +aWg +aWg +aWg +aWg +aWg +aWg +aWg +aWg +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +"} +(111,1,1) = {" +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aad +aaf +aaf +aaf +aai +aai +abJ +acm +acL +aai +adL +adL +aeG +alQ +afQ +agz +ahf +ahI +aiq +aiq +aja +ais +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aso +atg +auu +avI +awY +ayd +aso +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aKt +aKP +aLl +aLl +aLl +aMP +aNF +aAc +aAc +aAc +aFc +aFc +aMf +aMf +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aWg +aWg +aWg +aWg +aWg +aWg +aWg +aWg +aWg +aWg +aWg +aWg +aWg +aWg +aWg +aWg +aWg +aWg +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +"} +(112,1,1) = {" +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aad +aaa +aaa +aaa +abd +aby +abK +acn +acM +adj +adM +aek +aeH +afg +afR +agA +ahe +ahJ +air +aiJ +ais +ais +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aso +ath +auk +avw +awZ +aye +aso +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aKt +aKt +aLm +aLJ +aMi +aKs +aNG +aLH +azh +azh +azh +aQz +azg +aMf +aRI +aRI +aRI +aSR +aRI +aRI +aRI +aUu +aUF +aVg +aUv +aaa +aaa +aaa +aaa +aWg +aWg +aWg +aWg +aWg +aWg +aWg +aWg +aWg +aWg +aWg +aWg +aWg +aWg +aWg +aWg +aWg +aWg +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +"} +(113,1,1) = {" +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaf +aaa +aaa +aaa +abe +aby +abL +aco +acN +adk +adN +ael +aeI +afh +afS +agB +ahe +ahK +ais +ais +ais +aaa +aaa +aaa +aaa +aaa +aaa +ajo +ajo +ajp +ajp +ajp +ajo +asp +ati +auv +avw +axa +ayf +azi +aAe +aBx +aBx +aBx +aAe +aAe +aaa +aaa +aaa +aaa +aaa +aaa +aKt +aKt +aKt +aKt +aKt +aNH +aOz +aPi +azc +aQm +aQA +azg +aMf +aRJ +aSg +aRJ +aRy +aTl +aTG +aTl +aUv +aUG +aVh +aUC +aaa +aaa +aaa +aaa +aWg +aWg +aWg +aWg +aWg +aWg +aWg +aWg +aWg +aWg +aWg +aWg +aWg +aWg +aWg +aWg +aWg +aWg +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +"} +(114,1,1) = {" +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aai +aai +aai +aai +aai +aai +abM +acp +acO +adl +adO +aem +aem +aem +aem +aem +aem +aem +aem +aaa +aaa +aaa +aab +aaa +aaa +ajp +ajp +ajo +ang +anQ +aoE +apK +arc +asq +atj +auw +avJ +axb +ayg +azj +aAf +aBy +aCH +aDQ +aFd +aAe +aBx +aBx +aaa +aaa +aab +aaa +aaa +aaa +aaa +aaa +aMQ +aMQ +aMQ +aMQ +aMQ +aMQ +aQB +ayb +aMf +aRJ +bEo +aRJ +aRy +aTl +aTH +aTl +aUv +aUH +aVi +aUC +aaa +aaa +aaa +aaa +aWg +aWg +aWg +aWg +aWg +aWg +aWg +aWg +aWg +aWg +aWg +aWg +aWg +aWg +aWg +aWg +aWg +aWg +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +"} +(115,1,1) = {" +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aao +aav +aaP +abf +abz +abN +acq +aap +adm +adP +aen +aeJ +afi +afT +agC +ahg +ahL +aem +aaa +aaa +aaa +aaa +aaa +ajp +ajp +ako +amv +anh +anR +aoF +apL +ard +asr +atk +aux +avK +axc +ayh +azk +aAg +aBz +aCI +aCM +aFe +aGf +aFf +aBx +aBx +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aMQ +aNI +aOA +aPj +aPN +aNM +aQC +aRa +aLO +aRK +aSi +aRK +aRy +aTm +aTI +aTm +aUv +aUF +aVj +aUv +aaa +aaa +aaa +aWg +aWg +aWg +aWg +aWg +aWg +aWg +aWg +aWg +aWg +aWg +aWg +aWg +aWg +aWg +aWg +aWg +aWg +aWg +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +"} +(116,1,1) = {" +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aap +aaw +aaw +abg +abA +abO +acq +aap +adn +adQ +aen +aeK +afj +afk +afk +ahh +ahM +aem +aaa +aaa +aaa +aaa +ajp +ajp +ako +akV +alF +alF +anS +aoG +apM +are +ajS +atl +auy +avw +auy +ayi +azl +aAh +aBA +aCJ +aDS +aFf +aFf +aFf +aFf +aBx +aBx +aaa +aaa +aaa +aaa +aaa +aaa +aMQ +aNJ +aOA +aOA +aPO +aNM +aQD +aRb +aLO +aRJ +aSj +aRJ +aRy +aTl +aTJ +aTl +aUv +aUI +aVk +aUC +aaa +aaa +aaa +aaa +aaa +aWg +aWg +aWg +aWg +aWg +aWg +aWg +aWg +aWg +aWg +aWg +aWg +aWg +aWg +aWg +aWg +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +"} +(117,1,1) = {" +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aap +aax +aaw +abg +abA +abP +acr +aao +ado +adR +aen +aeL +afj +afU +afj +afk +ahN +aem +aaa +aaa +aaa +ajp +ajp +ako +ako +akW +ako +alG +ani +aoH +ani +ani +amx +atm +auB +avN +axd +axC +ayk +auA +aBD +auA +aCN +aFg +aFf +aFf +aFf +aFf +aBx +aBx +aaa +aaa +aaa +aaa +aaa +aMR +aNK +aOB +aPk +aPP +aQn +aQD +aRb +aLO +aRL +aSk +aRL +aRy +aTn +aTK +aTn +aUv +aUJ +aVl +aVE +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aWg +aWg +aWg +aWg +aWg +aWg +aWg +aWg +aWg +aWg +aWg +aWg +aWg +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +"} +(118,1,1) = {" +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaq +aay +aaw +abg +abB +abQ +acs +acP +adp +adS +aeo +aeM +afk +afj +afj +afj +ahO +ait +aaa +aaa +aaa +ajp +ako +akV +alF +amf +amw +ani +ani +aoI +apN +arf +arf +atm +auD +avP +auD +atm +azm +azr +aAq +aBL +aCN +auH +aGg +aFf +aFf +aFf +aFf +aBx +aaa +aaa +aaa +aLK +aMj +aMj +aNL +aOC +aPl +aPQ +aNM +aQE +aRc +aRv +aRM +aSl +aRM +aRy +aRM +aTL +aRM +aRy +aUK +aVm +aUC +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aWg +aWg +aWg +aWg +aWg +aWg +aWg +aWg +aWg +aWg +aWg +aWg +aWg +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +"} +(119,1,1) = {" +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aap +aax +aaw +abg +abA +abR +act +aao +adq +adT +aen +aeN +afk +afk +agD +afj +afj +ait +aaa +aaa +ajo +ajo +akp +akW +ako +amg +amx +ani +anT +aoJ +apO +arg +arg +atn +auC +avO +axe +atn +azn +azq +aAm +aBM +ayk +auH +aDT +aGT +aFf +aFf +aIW +aAe +aAe +aaa +aaa +aLL +aMk +aMS +aNM +aOD +aPl +aPR +aNM +aQF +aRd +aRw +aRN +aSm +aSF +aSS +aTo +aTM +aUg +aUw +aUL +aVn +aVF +aVN +aVW +aUu +aWg +aWg +aWg +aWg +aWg +aWg +aWg +aWg +aWg +aWg +aWg +aWg +aWg +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +"} +(120,1,1) = {" +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aap +aaw +aaw +abg +abA +abS +acq +aap +adr +adU +aen +aeO +afl +afl +agE +ahi +ahP +ait +aaa +aaa +ajo +ajN +akq +akW +alG +alH +alH +ani +anU +aoK +apN +arf +arf +atm +auF +avR +axg +ayj +azo +aAj +aBC +aCZ +ayk +aFh +auH +auH +aFg +aFf +aIX +aJP +aAe +aaa +aaa +aLM +aMl +aMT +aNN +aOE +aPm +aPS +aQo +aQG +aRe +aRx +aRO +aSn +aSG +aST +aTp +aTN +aUh +aUw +aUM +aVo +aVG +aVO +aVX +aWc +aWg +aWg +aWg +aWg +aWg +aWg +aWg +aWg +aWg +aWg +aWg +aWg +aWg +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +"} +(121,1,1) = {" +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aao +aaz +aaQ +abh +abC +abT +acq +aap +ads +adV +aen +aen +aen +aen +aen +aen +ahQ +aem +aaa +aaa +ajp +ajO +akr +akX +alH +alH +alH +alH +ani +ani +ani +ani +ani +atm +auE +avQ +axf +atm +azp +aAi +aBB +aCK +ayk +aFh +aFh +auH +aHE +aIk +aIY +aJQ +aBx +aaa +aaa +aLL +aMm +aMU +aNM +aOF +aPn +aPT +aNM +aQH +aRf +aRy +aRM +aRM +aRy +aRy +aTq +aRy +aRy +aRM +aUN +aVp +aVG +aVP +aVY +aWd +aWg +aWg +aWg +aWg +aWg +aWg +aWg +aWg +aWg +aWg +aWg +aWg +aWg +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +"} +(122,1,1) = {" +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aae +aaa +aaa +aaj +aaj +aaj +aaj +aaj +aaj +abU +abU +abU +adt +adQ +aep +aeP +afm +afV +agF +aeP +aeP +aeR +aaa +aaa +ajp +ajP +aks +akY +alH +alH +alH +alH +alH +alH +alH +alH +alH +aur +avL +awO +axi +atm +ayk +auA +aBG +aCL +ayk +aDT +aDT +auH +aHF +aIl +aIZ +aJR +aBx +aaa +aaa +aLN +aMj +aMj +aNL +aOG +aPn +aPU +aNM +aQD +aRg +aRz +aRP +aSo +aRz +aSU +aTr +aTO +dnC +aUx +aUO +aVq +aVF +aVQ +aVZ +aUv +aWg +aWg +aWg +aWg +aWg +aWg +aWg +aWg +aWg +aWg +aWg +aWg +aWg +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +"} +(123,1,1) = {" +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaf +aaa +aaa +aak +aar +aaA +aaR +abi +aaj +abV +acu +acQ +ads +adW +aeq +aeQ +afn +afW +agG +ahj +ahR +aeR +aaa +aaa +ajp +ajQ +akt +akZ +alH +alH +amy +anj +anV +anj +anj +arh +alH +aur +auG +avS +axh +atm +ayl +aAn +aBH +aCP +aDU +aFi +aGh +aGU +aHF +aIm +aJa +aJS +aBx +aaa +aaa +aaa +aaa +aMV +aNO +aOH +aPo +aPV +aQp +aQI +aRh +aRA +aRQ +aSp +aRz +aSV +aTb +aTP +aKR +aUk +aUP +aVr +aUC +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aWg +aWg +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aWi +aWi +aWi +aWi +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +"} +(124,1,1) = {" +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aag +aaf +aaf +aak +aal +aaB +aaS +abj +aaj +abW +acv +acR +adu +adX +acz +aeP +afo +afX +agH +aeP +aeP +aeR +aaa +aaa +ajo +ajR +aku +ala +alH +alH +amz +anj +anW +aoL +anj +ari +alH +aur +avM +awQ +axj +atm +aym +aAo +aBI +aCQ +aDV +aFj +aGi +auH +aHF +aIn +aJb +aIn +aAe +aaa +aaa +aaa +aaa +aMQ +aNP +aOA +aOA +aPW +aNM +aQD +aRb +aRz +aRR +aSq +aRz +aSW +aTb +aTQ +aUj +aUk +aUQ +aVr +aVE +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aWi +aWi +aWi +aWi +aWi +aWi +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +"} +(125,1,1) = {" +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aad +aad +aaa +aaa +aak +aaj +aaC +aaT +aaj +aaj +abX +acw +acQ +adn +adQ +abt +aeR +afp +afY +agI +ahk +ahS +aeR +aiK +aiK +ajq +ajS +akv +alb +alH +alH +amA +anj +anX +aoM +anj +arj +alH +aur +aur +aur +aur +aur +auH +aAp +aBJ +aCR +aDW +aCU +aGj +aGV +aHG +azl +aJc +azl +aAe +aKQ +aKQ +aLO +aaa +aMQ +aNQ +aOI +aPp +aNM +aNM +aQJ +aRi +aRz +aRz +aSr +aRz +aSX +aTb +aTR +aUk +aUk +aUR +aVr +aUC +aUC +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aWi +aWi +aWi +aWi +aWi +aWi +aWi +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +"} +(126,1,1) = {" +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aad +aaa +aaa +aaa +aal +aaj +aaD +aaU +abk +aaj +abU +abU +acS +adn +adQ +aer +aeR +aeP +aeP +aeP +aeP +aeP +aeR +aiL +ajb +ajr +ajT +akw +alc +alH +alH +amB +anj +anY +aoN +anj +ark +alH +ato +ato +ato +ato +ayn +auH +aAk +aBJ +aCS +aDX +aCU +aGk +aGW +aHH +aIo +aJd +aIo +aKu +aKR +aLn +aLO +aLO +aMQ +aMQ +aMQ +aMQ +aPX +aQq +aQK +aRj +aRB +aRS +aRS +aRS +aSY +aTs +aRn +aUl +aUy +aUS +aVr +aVH +aUC +aUC +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aWi +aWi +aWi +aWi +aWi +aWi +aWi +aWi +aWi +aWi +aWi +aWi +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +"} +(127,1,1) = {" +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aad +aab +aaa +aaa +aal +aas +aaE +aaV +abl +abD +abY +acx +acT +adv +adY +aes +aeS +afq +afZ +agJ +ahl +ahT +aiu +aiM +ajc +ajs +ajU +akx +ald +alH +alH +amC +anj +anZ +anZ +anj +arl +alH +ato +ato +ato +ato +ato +azs +aAr +aBK +aCT +aDY +aCU +aCU +aGX +aHI +aIp +aJe +aJT +aKv +aKS +aLo +aLP +aMn +aMW +aNR +aIp +aPq +aPY +aQr +aQL +aRk +aKv +aRT +aSs +aSH +aSZ +aTb +aTS +aUm +aUz +aUT +aVs +aVI +aVR +aUC +aaa +aaa +aaa +aaa +aaa +aab +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aWi +aWi +aWi +aWi +aWi +aWi +aWi +aWi +aWi +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +"} +(128,1,1) = {" +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aad +aaf +aaf +aaf +aam +aat +aaF +aaW +abm +abE +abZ +acy +acU +adw +adZ +aet +aeT +afr +aga +agK +ahm +ahU +ahU +aiN +ahU +ahU +ahU +aky +ale +alH +alH +amD +ank +anZ +anZ +apP +arm +alH +ato +ato +ato +ato +ato +azt +aAs +aBJ +aCU +aDZ +aFk +aGl +aCU +aHJ +aIq +aJf +aJU +aJU +aJU +aLp +aJU +aJU +aMX +aNS +aOJ +aPr +aPZ +aPZ +aQM +aRl +aRC +aRC +aSt +aSI +aTa +aTt +aTT +aUn +aUA +aUU +aVt +aVJ +aVS +aVE +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aWi +aWi +aWi +aWi +aWi +aWi +aWi +aWi +aWi +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +"} +(129,1,1) = {" +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aab +aad +aaa +aaa +aaa +aal +aas +aaG +aaX +abn +aaJ +aca +aeU +acV +adn +adQ +aeu +ajd +afs +agb +agJ +ahl +ahV +aiv +aiO +ajd +ajt +ajV +akz +alf +alH +alH +amE +anl +aoa +aoO +apQ +arn +alH +ato +ato +ato +ato +ato +azu +aAt +aBE +aCV +aEa +aCV +aGm +aGY +aHK +aIr +aJg +aJV +aKw +aKT +aLq +aLQ +aMo +aMW +aNR +aOK +aPs +aKT +aQs +aQN +aRm +aKw +aRU +aKT +aSJ +aTb +aTu +aTU +aUm +aUz +aUV +aVu +aVK +aVT +aUC +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aab +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aWi +aWi +aWi +aWi +aWi +aWi +aWi +aWi +aWi +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +"} +(130,1,1) = {" +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aad +aaa +aaa +aaa +aal +aaj +aaH +aaX +abo +aaj +abt +abt +abt +adn +adQ +aev +abt +abt +abt +abt +abt +abt +abt +aiP +acc +aju +ajW +akA +alg +alH +alH +amB +anm +aob +aoP +apQ +ark +alH +ato +ato +ato +ato +ato +auH +aAu +aBF +aCW +aEb +aFl +aGn +aGZ +aHL +aIs +aJh +aJW +aKx +aKU +aLr +aLR +aMp +aLR +aLR +aLR +aLR +aLR +aQt +aQK +aRj +aKx +aRS +aKR +aSK +aTc +aTv +aTc +aUo +aUB +aUW +aVr +aVL +aUC +aUC +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aWi +aWi +aWi +aWi +aWi +aWi +aWi +aWi +aWi +aWi +aWi +aWi +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +"} +(131,1,1) = {" +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aad +aad +aaa +aaa +aaa +aaj +aaI +aaX +aaJ +abF +acb +acA +acW +adx +aea +aew +abt +aaa +aaa +aaa +aaa +aaa +abt +aiK +aiK +ajv +ajX +akB +alh +alH +alH +amF +anm +aoc +aoQ +apQ +aro +alH +atp +atp +atp +atp +atp +atp +aAv +aAv +aAv +aEc +aFm +aAv +aHa +aAv +aIt +aJi +aJX +aAG +aKQ +aKQ +aLR +aMq +aMq +aNT +aOL +aPt +aLR +aQu +aQO +aRn +aRD +aRD +aRD +aSL +aTd +aTw +aTd +aUk +aUk +aUX +aVr +aUC +aUC +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aWi +aWi +aWi +aWi +aWi +aWi +aWi +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +"} +(132,1,1) = {" +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aad +aaf +aaf +aaf +aal +aaJ +aaY +abp +aaj +acc +acB +acX +adn +adQ +aex +aaa +aaa +aaa +aaa +aaa +aaa +aaf +aaa +aaa +ajw +ajY +akC +ali +alH +alH +amG +ann +aod +aoR +apR +arp +alH +atq +auI +avT +axk +ayo +atp +aAw +aBN +aCX +aEd +aFn +aGo +aHb +aAv +aIu +aJj +aJY +aAG +aaa +aaa +aLR +aMr +aMY +aNU +aOM +aPu +aQa +aQu +aQP +aRj +aRD +aRV +aSu +aSM +aTe +aTx +aTV +aUp +aUC +aUY +aVr +aVE +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aWi +aWi +aWi +aWi +aWi +aWi +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +"} +(133,1,1) = {" +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aag +aaa +aaa +aaa +aal +aaK +aaZ +abq +aaj +acd +acC +acY +ady +adQ +aey +aaa +aft +aft +aft +aft +aft +aft +aaa +aaa +ajx +ajZ +akD +alj +alI +alI +amH +ano +aoe +aoS +apS +arq +alI +atr +auJ +avU +axl +ayp +atp +aAx +aBO +aCY +aEe +aFo +aGp +aHc +aAv +aIv +aJk +aJZ +aBX +aaa +aaa +aLR +aMs +aMZ +aNV +aON +aPv +aQb +aQv +aQQ +aRo +aRD +aRW +aRV +ebk +aTf +aTy +aTW +aUq +aUC +aUL +aVr +aUC +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aWi +aWi +aWi +aWi +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +"} +(134,1,1) = {" +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaj +aaj +aal +aam +aal +aaj +abt +abt +acZ +adz +adQ +aez +aaa +aft +agc +agL +ahn +ahW +aft +aaa +aaa +ajx +aka +akE +alk +alI +alI +amI +anp +alI +aoT +apT +arr +alI +ats +auK +avV +axm +ayq +atp +aAy +aBP +aDb +aEf +aFp +aGp +aHd +aAv +aIw +aJl +aKa +aBX +aaa +aaa +aLR +aMt +aNb +aNW +aOO +aPw +aQc +aQu +aQR +aRp +aRD +aRW +aSv +aSO +aTg +aTz +aTX +aUr +aUC +aUY +aVv +aVF +aVN +aVW +aUv +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +"} +(135,1,1) = {" +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aak +aaL +aaL +abr +aaL +ace +acD +ada +adA +aeb +aeA +aeV +aft +agd +agd +aho +agd +aft +aaa +aaa +ajx +akb +akF +all +alI +alI +amJ +anq +aof +aoU +apU +ars +alI +att +att +avW +att +att +atp +aAz +aBQ +aDa +aAz +aAz +aGq +aAv +aAv +aIx +aJm +aKb +aBX +aaa +aaa +aLR +aLS +aNa +aNX +aOP +aPx +aLS +aQu +aQS +aRq +aRE +aRE +aSw +aRE +aRE +aTA +aRE +aRE +aRE +aUZ +aVw +aVM +aVU +aWa +aWe +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +"} +(136,1,1) = {" +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aak +aaM +aba +abs +abG +acf +acE +adb +adB +aec +aeB +aeW +afu +age +agM +ahp +ahX +aft +aaa +aaa +ajw +akc +akG +alm +alJ +alI +alI +alI +alI +aoV +apV +art +amH +atu +auL +avX +avZ +atu +atp +aAA +aBR +dVs +aEg +aAz +aAz +aAv +aFq +aHg +aJn +aKc +aAG +aaa +aaa +aLS +aMu +aNd +aNY +aOQ +aPy +aQd +aQu +aQK +aRr +aRF +aRY +aSx +aSP +aTh +aTB +aTY +aUs +aUD +aUM +aVx +aVM +aVV +aWb +aWf +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +"} +(137,1,1) = {" +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aak +aaL +aaL +abr +aaL +ace +acF +adc +adC +aed +aeA +aeV +aft +agf +agd +ahq +ahY +aft +aaa +aaa +ajw +ajw +akH +alm +akI +amh +amK +alI +aog +aoW +apW +aru +ass +atv +auM +avY +axn +azv +aAl +aAB +aBS +aDc +aEh +aAz +aGr +aHe +aGt +aHg +aJo +aAG +aAG +aaa +aaa +aLS +ebh +aNc +aNZ +aOR +aPz +aQe +aQu +aQT +aRs +aRG +aRZ +aSy +aSQ +aTi +aTC +aTZ +aUt +aUE +aVa +aVy +aVF +aVQ +aVZ +aUu +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +"} +(138,1,1) = {" +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aau +aaj +aaj +abt +abt +abt +abt +abt +adD +aee +aez +aaa +aft +agg +agN +ahr +ahZ +aft +aaa +aaa +aaa +ajx +akI +aln +alK +ami +amL +alI +alI +aoX +apX +arv +ast +atw +auN +avZ +axo +atu +atp +aAC +aBT +aDd +aAz +aAz +aGs +aHf +aFr +aHh +aGt +aBX +aaa +aaa +aaa +aLS +aMw +aNf +aOa +aOS +aPA +aQf +aQu +aQU +aRt +aRH +aSa +dgE +aSa +aRE +aSa +aUa +aSa +aRE +aVb +aVm +aUC +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +"} +(139,1,1) = {" +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aak +aaN +aaN +abu +aaN +acg +acD +ada +adC +adQ +aeC +aaa +aft +aft +aft +aft +aft +aft +aaa +aaa +aaa +ajx +ajx +akI +akI +alm +akI +alJ +alI +alI +alI +alI +alI +atp +atp +atp +atp +atp +atp +aAz +aAz +aAz +aAz +aFq +aGt +aHg +aGt +aGt +aBX +aBX +aaa +aaa +aaa +aLR +aMx +aNe +aOb +aOT +aPB +aQg +aQw +aQV +aRj +aLO +aSb +aSA +aSb +aRE +aTD +aUb +aTD +aUv +aVc +aVl +aVE +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +"} +(140,1,1) = {" +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aak +aaO +abb +abv +abH +ach +acG +add +adz +adU +abt +aaa +aaa +aaa +aaa +aaa +aaa +aaf +aaa +aaa +aaa +aaa +ajx +ajx +akI +aln +alK +alK +aoh +aoY +apY +arw +asu +atx +auO +awa +axp +ayr +azw +aAD +aBU +aDe +aEi +aFr +aFr +aHh +aGt +aBX +aBX +aaa +aaa +aaa +aaa +aLR +aMy +aNg +aOc +aOU +aPC +aQh +aQu +aQV +aRj +aLO +aSc +aSB +aSc +aRE +aTE +aUc +aTE +aUv +aVd +aVz +aUC +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +"} +(141,1,1) = {" +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aak +aaN +aaN +abu +aaN +acg +acF +ade +adE +aef +abt +abt +aaa +aaa +aaa +aaa +aaa +ahs +aaa +aaa +aaa +aaa +aaa +ajx +ajx +akI +amM +anr +aoi +aoZ +apZ +apZ +asv +aty +auP +awb +axq +ays +azx +aAE +aBV +aDf +aEj +aFs +aGu +aGt +aBX +aBX +aaa +aaa +aaa +aaa +aaa +aLR +aMz +aMz +aMz +aOV +aPD +aQi +aQu +aQW +aRu +aLO +aSd +aSC +aSd +aRE +aTF +aUd +aTF +aUv +aUF +aVA +aUv +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +"} +(142,1,1) = {" +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aan +aan +aan +aan +aan +aan +aci +acH +adf +adF +aeg +adF +aan +aan +aan +aan +ahs +ahs +ahs +aaa +aaa +aaa +aab +aaa +aaa +ajx +ajx +ajw +ans +aoj +apa +aqa +arx +asw +atz +auQ +awc +axr +ayt +azy +aAF +aBW +aDg +aEk +aFt +aAG +aBX +aBX +aaa +aaa +aab +aaa +aaa +aaa +aLR +aLR +aLR +aLR +aLR +aLR +aLR +aLR +aQX +ayx +aPI +aSc +aSD +aSc +aRE +aTE +aUe +aTE +aUv +aVe +aVB +aUC +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +"} +(143,1,1) = {" +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaf +aaa +aaa +aaa +abw +abI +acj +acI +adg +adG +aeh +aeD +aeD +afv +afv +agO +aht +aia +ahs +ahs +ahs +aaa +aaa +aaa +aaa +aaa +aaa +ajw +ajw +ajx +ajx +ajx +ajw +asx +atA +auR +awd +asG +ayu +azz +aAG +aBX +aBX +aBX +aAG +aAG +aaa +aaa +aaa +aaa +aaa +aaa +aKy +aKy +aKy +aMA +aKz +aOd +aOW +aPE +aQj +aQx +aQY +azB +aPI +aSc +aSE +aSc +aRE +aTE +aUf +aTE +aUv +aVf +aVC +aUC +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +"} +(144,1,1) = {" +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaf +aaa +aaa +aaa +abx +abI +ack +acJ +adh +adH +aei +aeE +aeX +aeX +aeX +agP +aht +aib +aib +aiQ +ahs +ahs +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +asy +atB +auS +awd +axs +atP +asy +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aKy +aKy +aLs +aLT +aMB +aKz +aOe +aOX +aPF +aQk +aQy +aQZ +azB +aPI +aSe +aSe +aSe +aTj +aSe +aSe +aSe +aUu +aUF +aVD +aUv +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +"} +(145,1,1) = {" +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aag +aaf +aaf +aaf +aan +aan +acl +acK +adi +aan +aej +aej +aeY +afw +aml +agQ +ahu +aic +aiw +aiw +aje +ahs +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +asy +atC +auT +awe +axt +ayv +asy +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aKy +aKV +aLt +aLt +aLt +aNh +aOf +aOY +aPG +aQl +aFu +aFu +aPI +aPI +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aTk +aTk +aTk +aTk +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +"} +(146,1,1) = {" +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aad +aaa +aaa +aaa +aaa +aaa +aaf +aaa +aaa +aaa +aaa +aej +aej +afw +agi +agR +aht +aid +aix +aib +ajf +ahs +adF +adF +adF +adF +aaa +aaa +aaa +adF +adF +adF +adF +adF +atD +auU +awd +axu +atD +ayx +ayx +ayx +ayx +ayx +aaa +aaa +aaa +ayx +ayx +ayx +ayx +aKy +aKW +aLu +aLU +aLu +aKz +aOg +aOZ +aPH +aFu +aFu +aaa +aaa +aaf +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aTk +aTk +aTk +aTk +aTk +aTk +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +"} +(147,1,1) = {" +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aad +aad +aaa +aaa +aaa +aaa +aaf +aaa +aaa +aaa +aaa +aaa +aej +aej +agj +agS +aht +aht +aht +aiR +aht +aht +akd +akJ +alo +adF +aej +aej +aej +adF +apb +aqb +ary +asz +atE +auV +awf +axv +ayw +azA +aAH +aBY +aDh +ayx +aFu +aFu +aFu +ayx +aIy +aJp +aKd +aKz +aKz +aLv +aKz +aKz +aKz +aOh +ebi +aFu +aFu +aaa +aaa +aaa +aaf +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aTk +aTk +aTk +aTk +aTk +aTk +aTk +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +"} +(148,1,1) = {" +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aag +aad +aad +aaa +aaa +aaf +aaa +aaa +aaa +aaa +aaa +aaa +aej +agk +agT +ahv +aie +aiy +aiy +aiy +ajy +ajy +akK +aiy +aiy +aiy +aiy +aiy +aiy +apc +agh +agh +agh +adF +auW +awg +axw +ayx +azB +azB +azB +aDi +aEl +aEl +aEl +aEl +aEl +aEl +aJq +aEl +aEl +aEl +aEl +aEl +aMC +aNi +aOi +aPb +aFu +aaa +aaa +aaa +aaa +aad +aaa +aaa +aaa +aTk +aTk +aTk +aTk +aTk +aTk +aTk +aTk +aTk +aTk +aTk +aWh +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +"} +(149,1,1) = {" +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaf +aaf +aag +aad +aad +aaa +aab +aaa +aaa +aaa +aan +agh +agh +ahw +aeZ +aik +agh +ajg +ajz +ake +aik +aeZ +aik +amj +amN +ant +aok +apd +aqc +agh +asA +atD +auX +awh +auX +atD +azC +aAI +aAI +aAI +aEm +aFv +aGv +aHi +aDk +aDj +aDk +aKe +aKA +aKX +aLw +aDk +aDj +aDk +aAI +aAI +aPI +aaa +aaa +aaa +aab +aad +aaa +aaa +aaa +aaa +aaa +aaa +aTk +aTk +aTk +aTk +aTk +aTk +aTk +aTk +aTk +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +"} +(150,1,1) = {" +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aad +aad +aaa +aaa +aaa +aaa +aeZ +aeZ +agU +aeZ +aeZ +aeZ +aeZ +aeZ +aeZ +aeZ +aeZ +aeZ +aeZ +aeZ +aeZ +aeZ +aeZ +aeZ +aqd +agh +asA +atD +auY +awi +axx +atD +azD +aAI +aBZ +aDj +aDj +aDj +aDj +aDj +aDj +aDj +aDj +aDj +aDj +aDj +aDj +aDj +aDj +aDj +aOj +aDj +aDj +aaa +aaa +aaa +aaa +aad +aab +aaa +aaa +aaa +aaa +aaa +aTk +aTk +aTk +aTk +aTk +aTk +aTk +aTk +aTk +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +"} +(151,1,1) = {" +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aab +aad +aaf +aaf +aaf +aeZ +aeZ +agl +agl +ahx +aif +aeZ +aiS +aiS +ajA +aiS +aiS +aeZ +alL +aiS +amO +anu +aol +aeZ +aqe +agh +asA +atD +auZ +awj +axy +atD +azE +aAI +aCa +aDj +aEn +aFw +aEn +aHj +aHM +aDj +aJr +aJr +aKB +aJr +aJr +aDj +aMD +aNj +aOk +aPc +aDj +aDj +aaf +aaf +aaf +aad +aaa +aaa +aaa +aaa +aaa +aaa +aTk +aTk +aTk +aTk +aTk +aTk +aTk +aTk +aTk +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +"} +(152,1,1) = {" +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aag +aaa +aaa +aaa +aeZ +afx +agl +afx +ago +aig +aiz +aiT +ajh +ajB +akf +akf +alp +alM +amk +amk +anv +aom +aeZ +aqf +agh +asA +atD +ava +awk +axz +atD +azF +aAI +aCa +aDj +aEo +aFx +aGw +aGw +aHN +aIz +aGw +aGw +aKC +aKY +aLx +aLV +aME +aNk +aNk +aNk +aNk +aDj +aaa +aaa +aaa +aKm +aaa +aaa +aaa +aTk +aTk +aTk +aTk +aTk +aTk +aTk +aTk +aTk +aTk +aTk +aTk +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +"} +(153,1,1) = {" +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aeZ +afy +agl +agl +ahy +aih +aiA +aiA +aiA +aiA +aiA +aiA +aiA +aiA +aiA +aiA +anw +aon +aik +aqg +arz +aqg +aqg +avb +awl +axA +ayy +ayy +aAJ +ayy +aDk +aEp +aFy +aGx +aGx +aGx +aGx +aGx +aGx +aGx +aGx +aGx +aLW +aLW +aLW +aGx +aGx +aPJ +aDj +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aTk +aTk +aTk +aTk +aTk +aTk +aTk +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +"} +(154,1,1) = {" +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aeZ +afz +agm +agm +agm +agm +agm +agm +agm +agm +agm +agm +agm +agm +agm +agm +anx +aon +ape +aqh +arA +asB +aqg +auR +awl +axB +ayy +azG +aAK +aCb +aDl +aEp +aFz +aGy +aGy +aGy +aGy +aGy +aGy +aGy +aGy +aGy +aGy +aGy +aGy +aGy +aGy +aPK +aDj +aaa +aaa +aaa +aad +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aTk +aTk +aTk +aTk +aTk +aTk +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +"} +(155,1,1) = {" +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aeZ +afz +agm +agm +agm +agm +agm +agm +agm +agm +agm +agm +agm +agm +agm +agm +anx +aon +ape +aqi +arB +asC +aqg +avc +awm +axs +ayy +azH +aAL +aCc +aDl +aEp +aFz +aGz +aHk +aHO +aIA +aJs +aHO +aHO +aGy +aGy +aGy +aGy +aGy +aGy +aGy +aPK +aDj +aaa +aaa +aaa +aaf +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aTk +aTk +aTk +aTk +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +"} +(156,1,1) = {" +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aae +aaa +aaa +aaa +aeZ +afz +agm +agm +agm +agm +agm +agm +agm +agm +agm +agm +agm +agm +agm +agm +anx +aon +ape +aqj +arC +asD +aqg +auS +awl +axD +ayy +azI +aAM +aCd +aDl +aEp +aFz +aGA +aHk +aHP +aIB +aJt +aKf +aHO +aHO +aHk +aKh +aHO +aKh +aHO +aGy +aPK +aDj +aaa +aaa +aaa +aad +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +"} +(157,1,1) = {" +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aad +aaa +aaa +aaa +aeZ +afz +agm +agm +agm +agm +agm +agm +agm +agm +agm +agm +agm +agm +agm +agm +anx +aoo +aik +aqg +arD +aqg +atF +auS +awl +axs +ayz +ayy +aAN +ayy +aDk +aEq +aFz +aGy +aHl +aHQ +aIC +aJu +aKg +aHl +aKZ +aLy +aLX +aMF +aNl +aHU +aHO +aPK +aDj +aaa +aaa +aaa +aad +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +"} +(158,1,1) = {" +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aad +aaa +aaa +aaa +aeZ +afz +agm +agm +agm +agm +agm +agm +agm +agm +agm +agm +agm +agm +agm +agm +anx +aop +apf +aqk +arE +asE +atG +avd +awn +axE +ayA +azJ +aAO +aqk +aDm +aEr +aFz +aGy +aGy +aHR +aID +aJv +aKh +aHk +aLa +aJw +aLX +aKh +aNm +aOl +aPd +aPK +aDj +aaa +aaa +aaa +aad +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +"} +(159,1,1) = {" +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aad +aaf +aaf +aaf +aeZ +afz +agm +agm +agm +agm +agm +agm +agm +agm +agm +agm +agm +agm +agm +agm +anx +aoq +aik +aql +arF +asF +atH +asF +awo +asF +ayB +asF +aAP +aql +aDk +aEs +aFz +aGy +aGy +aHS +aIE +aJw +aJw +aKD +aJw +aJw +aJw +aMG +aJw +aOm +aPe +aPK +aDj +aaf +aaf +aaf +aad +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +"} +(160,1,1) = {" +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aad +aaa +aaa +aaa +aeZ +afz +agm +agm +agm +agm +agm +agm +agm +agm +agm +agm +agm +agm +agm +agm +anx +aor +apg +aql +arF +asG +atI +auR +awl +asG +ayC +azK +aAP +aql +aDn +aEt +aFz +aGy +aGy +aHT +aIE +aJw +aKi +aKh +aLb +aJw +aLX +aKh +aNm +aOn +aPf +aPK +aDj +aaa +aaa +aaa +aad +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +"} +(161,1,1) = {" +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aad +aaa +aaa +aaa +aeZ +afz +agm +agm +agm +agm +agm +agm +agm +agm +agm +agm +agm +agm +agm +agm +anx +aos +aik +aqm +aqm +aqm +aqm +ave +awl +axF +ayD +ayD +ayD +ayD +aDk +aEu +aFz +aGy +aHl +aHU +aIF +aJw +aKj +aHl +aLc +aLz +aLX +aHl +aNn +aHU +aHO +aPK +aDj +aaa +aaa +aaa +aad +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +"} +(162,1,1) = {" +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aad +aaa +aaa +aaa +aeZ +afz +agm +agm +agm +agm +agm +agm +agm +agm +agm +agm +agm +agm +agm +agm +anx +aos +aeZ +aqn +arG +asH +aqm +avf +awm +axs +ayD +azL +aAQ +aCe +aDj +aEu +aFz +aGz +aHk +aHV +aIE +aJw +aKk +aHO +aHO +aHk +aKh +aHO +aKh +aHO +aGy +aPK +aDj +aaa +aaa +aaa +aad +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +"} +(163,1,1) = {" +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaf +aaa +aaa +aaa +aeZ +afz +agm +agm +agm +agm +agm +agm +agm +agm +agm +agm +agm +agm +agm +agm +anx +aot +aeZ +aqo +arH +asI +aqm +avg +awp +aUi +ayD +azM +aAR +aCf +aDj +aEv +aFz +aGA +aHk +aHO +aHO +aJx +aKl +aHO +aGy +aGy +aGy +aGy +aGy +aGy +aGy +aPK +aDj +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +"} +(164,1,1) = {" +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aag +aaa +aaa +aaa +aeZ +afz +agm +agm +agm +agm +agm +agm +agm +agm +agm +agm +agm +agm +agm +agm +anx +aos +aeZ +aqo +aqo +asJ +aqm +ava +awl +axH +ayD +ayD +aAS +ayD +aDj +aEu +aFz +aGy +aGy +aGy +aGy +aGy +aGy +aGy +aGy +aGy +aGy +aGy +aGy +aGy +aGy +aPK +aDj +aaa +aaa +aaa +aae +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +"} +(165,1,1) = {" +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aad +aaa +aaa +aaa +aeZ +afA +agn +agV +agV +agV +agV +agV +agV +agV +agV +agV +agV +agV +agV +agV +any +aos +aeZ +aqp +arI +arI +atJ +avh +awq +axI +ayE +azN +azN +aCg +aDj +aEu +aFA +aGB +aGB +aGB +aGB +aGB +aGB +aGB +aGB +aGB +aGB +aGB +aGB +aGB +aGB +aPL +aDj +aaa +aaa +aaa +aKm +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +"} +(166,1,1) = {" +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aad +aaa +aaa +aaa +aeZ +afB +ago +ago +ago +aii +aiB +aiT +ajh +ajC +akf +akf +alq +alN +akf +akf +anz +aou +aeZ +aqq +aqq +asK +aqm +auR +awl +asG +ayD +azO +aAT +aAR +aDj +aEw +aFB +aGw +aGw +aHW +aIG +aGw +aGw +aKE +aKY +aLx +aLY +aMH +aNk +aNk +aNk +aPM +aDj +aaa +aaa +aaa +aad +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +"} +(167,1,1) = {" +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aad +aaf +aaf +aaf +aeZ +aeZ +agp +agp +agp +aij +aeZ +agp +agp +ajD +agp +agp +aeZ +aij +agp +amP +anA +aov +aeZ +aqr +aqq +aqq +atK +avi +awr +axJ +ayF +azP +aAU +aCh +aDj +aEx +aFC +aGC +aHm +aHX +aDj +aJy +aJy +aKF +aJy +aJy +aDj +aMI +aJy +aJy +aJy +aDj +aDj +aaf +aaf +aaf +aad +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +"} +(168,1,1) = {" +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +abc +aaa +aaa +aaa +aaa +aeZ +aeZ +aeZ +aeZ +aeZ +aeZ +aeZ +aeZ +aeZ +aeZ +aeZ +aeZ +aeZ +aeZ +aeZ +aeZ +aeZ +aeZ +aqm +aqm +aqm +aSz +ava +awl +axz +ayG +ayD +ayD +ayD +aDj +aDj +aDj +aDj +aDj +aDj +aDj +aDj +aDj +aDj +aDj +aDj +aDj +aDj +aDj +aDj +aDj +aDj +aaa +aaa +aaa +aaa +aad +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +"} +(169,1,1) = {" +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaf +aaa +aaa +aaa +aaa +aaf +aaa +aaa +aaa +aik +aeZ +aik +aSN +bIY +cdz +cXD +dVQ +dWh +dWE +dWX +dXp +dXO +aph +aqs +arJ +asL +atN +avj +awl +axK +ayH +azQ +aAV +aCi +azU +aEy +aFD +aFD +aFD +aHY +alr +aaa +aaa +aaa +aaa +aDk +aDj +aDk +aaa +aaa +aaa +aaf +aaa +aaa +aaa +aaa +aad +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +"} +(170,1,1) = {" +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aad +aad +aaa +aaa +aaa +aaf +aaa +aaa +aaa +aaa +aaf +api +baX +bJb +cdC +dfZ +dVS +dfZ +dWG +dWZ +dXr +dXQ +aph +aqt +arK +asM +bDE +avk +aws +axL +ayI +azR +aAW +aCj +azU +aEz +aFE +aFE +aFE +aEz +alr +aaa +aaa +aaa +aaa +aaa +aaf +aaa +aaa +aaa +aaa +aaf +aaa +aaa +aaa +aad +aad +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +"} +(171,1,1) = {" +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aad +aad +aaa +aaa +aaf +aaa +aaa +aaa +aaa +aaf +api +aZY +bJa +cdB +cYa +dVR +cYa +dWF +dWY +dXq +dXP +aph +aqu +arL +asN +atO +auR +awt +asG +ayJ +azS +aAX +aCk +azU +aEz +aFF +aGD +aHn +aEz +alr +aaa +aaa +aaa +aaa +aaa +aaf +aaa +aaa +aaa +aaa +aaf +aaa +aaa +aad +aad +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +"} +(172,1,1) = {" +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aad +aad +aad +aad +aad +aad +aaa +aaa +aaf +api +bnt +bJc +cfo +djy +api +dWi +dWH +dXb +dXq +dXR +aph +aqv +dYH +asO +atD +avl +awt +axM +ayK +azT +aAY +aCl +azU +aEz +aFG +aFJ +aHo +aEz +alr +aaa +aaa +aaa +aaa +aaa +aaf +aaa +aaa +aaf +aaf +aag +aad +aad +aad +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +"} +(173,1,1) = {" +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aad +aad +aad +aag +aqz +bmq +arM +cfn +arM +aqz +bmq +bmq +dXa +dXs +api +aph +aqw +arN +asO +atP +avm +awu +axN +atP +azT +aAZ +aCm +azU +aEA +aFH +aFJ +aHp +aEA +alr +aaa +aaa +aaa +aaa +aad +aad +aad +aag +aaf +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +"} +(174,1,1) = {" +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaf +aaa +aaa +aaa +aqz +boC +bJH +cfp +cfp +dVU +dWk +dWI +dXd +dXu +atL +dYg +aqx +arO +asO +atQ +auS +awv +axs +ayL +azT +aBa +aCn +aDo +aEB +aFI +aFJ +aHq +aEz +alr +aaa +aaa +aaa +aad +aad +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +"} +(175,1,1) = {" +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaf +aaa +aaa +aaa +arM +bnV +bJH +cfp +cfp +dVT +dWj +arM +dXc +dXt +dXS +dYg +aqx +arP +aph +atR +avn +aww +axO +atR +azU +aBb +aCn +aDo +aEB +aFJ +aFJ +aHr +aEz +alr +aaa +aaa +aaa +aad +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +"} +(176,1,1) = {" +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +adI +adI +adI +adI +adI +adI +adI +aff +adI +adI +aad +aaa +aaa +aaa +arM +byR +bJH +ckb +dGc +dVV +dWm +dWJ +dXb +dXw +api +alr +alr +dYI +alr +atS +atS +atS +atS +ayM +alr +eaK +alr +alr +aEC +aFK +aFJ +aHs +aEC +alr +aaa +aaa +aaa +aad +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +"} +(177,1,1) = {" +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +adI +adI +adI +adI +adI +adI +adI +adI +adI +adI +aad +aaa +aaa +aaa +arM +brQ +bJH +cjE +dko +dVT +dWl +arM +dXb +dXv +dXU +alr +aqy +arR +alr +atS +atS +atS +atS +atS +alr +aBd +aCo +alr +aEz +aFL +aFJ +aHt +aEz +alr +aaf +aaf +aaf +aad +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +"} +(178,1,1) = {" +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +adI +adI +adI +adI +adI +adI +adI +adI +adI +adI +aad +aaf +aaf +aaf +aqz +bEi +bJH +clT +dGy +dVV +dWo +bmq +dXf +dXx +dXW +alr +dYp +arR +alr +atS +atS +atS +atS +atS +alr +aBd +alO +alr +aEz +aFM +aFJ +aHu +aEz +alr +aaa +aaa +aaa +aad +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +"} +(179,1,1) = {" +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +adI +adI +adI +adI +adI +adI +adI +adI +adI +adI +aad +aaa +aaa +aaa +aqz +bCN +bJH +clT +dGy +dVW +dWn +bmq +dXe +dXv +dXV +alr +aqA +arR +alr +atS +atS +atS +atS +atS +alr +aBe +aCp +alr +aEz +aFN +aGE +aFN +aEz +alr +aaa +aaa +aaa +aad +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +"} +(180,1,1) = {" +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +adI +adI +adI +adI +adI +adI +adI +adI +adI +adI +aad +aaa +aaa +aaa +arM +brQ +bJH +cpD +dVC +dVY +dWq +dWL +dXh +dXz +dXX +alr +aqB +arR +alr +atS +atS +atS +atS +atS +alr +arR +aCq +avp +aED +aEz +aGF +aEz +aED +alr +aaa +aaa +aad +aad +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +"} +(181,1,1) = {" +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaf +aaa +aaa +aaa +arM +bEm +bJH +cnN +dOZ +dVX +dWp +dWK +dXg +dXy +aSN +alr +aqC +arR +alr +alr +alr +alr +alr +alr +alr +arR +aCr +avp +aED +aED +aED +aED +aED +alr +aaa +aKm +aad +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +"} +(182,1,1) = {" +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aad +aaa +aaa +aaa +arM +bFR +bJH +cpF +dVE +dWa +dWs +dWN +dXj +dXB +aSN +dYi +alO +arR +alO +alO +avo +awx +axP +ayN +arR +arR +alr +alr +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +"} +(183,1,1) = {" +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aad +aaa +aaa +aaa +aqz +bFF +bMc +cpE +dVD +dVZ +dWr +dWM +dXi +dXA +dXY +dYh +dYq +alO +alP +alO +alO +alO +alO +alO +alO +alr +alr +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +"} +(184,1,1) = {" +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aad +aaf +aaf +aaf +aqz +bFS +bJH +cpH +dGy +dVV +dWu +bmq +dXk +dXD +aSN +alr +atM +alr +alr +alr +alr +alr +alr +alr +alr +alr +aaf +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +"} +(185,1,1) = {" +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aad +aaa +aaa +aaa +arM +brQ +bJH +cpG +dVF +dVV +dWt +arM +dXb +dXC +aZY +alr +alr +alr +dYX +dZo +dZC +dXo +dZZ +eaj +eaw +dXo +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +"} +(186,1,1) = {" +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaf +aad +aaa +aaa +aaa +arM +byR +bJH +cvH +dVG +dVV +dWw +dWJ +dXm +dXF +dXZ +dXZ +dYt +dYK +dYY +dZq +dZE +dZO +eab +eal +eay +dXo +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +"} +(187,1,1) = {" +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaf +aaa +aaa +aaa +aaa +arM +bHu +bJH +cpH +dGy +dVV +dWv +arM +dXl +dXE +cfo +dYj +dYs +dYJ +dXH +dZp +dZD +dZN +eaa +eak +eax +dXo +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +"} +(188,1,1) = {" +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aab +aaa +aaa +aaa +aad +aaa +aaa +aaa +anB +arQ +bHv +bMN +cIt +dVI +dWb +dWx +dWO +dXn +dXH +dXH +dYk +dXo +dXo +dZa +dZs +dZG +dXo +dZN +ean +eaA +dXo +dXo +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +"} +(189,1,1) = {" +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aad +aaa +aaa +aaa +amQ +aqz +bmq +bmq +cCg +dVH +bmq +bmq +bmq +aSN +dXG +dYa +dWH +dXo +dYL +dYZ +dZr +dZF +dZP +eac +eam +eaz +eaL +dXo +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +"} +(190,1,1) = {" +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aad +aaf +aaf +aaf +aow +aow +bHz +cce +cLT +dVK +dWd +dWz +dWQ +dXo +dXo +dXo +dXo +dXo +dYN +dZc +dZt +dZb +dZb +dZb +eao +dZb +eaN +dXo +dXo +dXo +dXo +dXo +aaa +aaa +aaa +aaa +aab +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +"} +(191,1,1) = {" +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aad +aaa +aaa +aaa +anC +aBc +bHw +cbv +cJx +dVJ +dWc +dWy +dWP +dXo +dXI +dYb +dYl +dYu +dYM +dZb +dZb +dZb +dZb +dZb +eao +dZb +eaM +eaV +dYl +dYb +ebf +dXo +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +"} +(192,1,1) = {" +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aad +aaa +aaa +aaa +anC +aPa +bHA +ccf +cOQ +dVM +dWe +dWB +dWS +dXo +dXK +dYc +dXK +dYw +aSh +dZe +dZu +dZH +dZR +ead +eap +eaB +eaP +eaX +dXK +dZB +dXK +dXo +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +"} +(193,1,1) = {" +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaf +aaa +aaa +aaa +anC +aMv +bHw +cbv +cLU +dVL +dWc +dWA +dWR +dXo +dXJ +dXJ +dXJ +dYv +dYO +dZd +dYT +dZb +dZQ +dZb +dYT +dZd +eaO +eaW +dXK +dXK +dXK +dXo +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +"} +(194,1,1) = {" +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aad +aaa +aaa +aaa +anC +aRX +bHA +ccf +cSc +dVO +dWc +bHA +dWU +dXo +dXM +dXM +dXM +dYy +dYR +dZf +dYT +dZb +dZT +dZb +dYT +dZf +eaR +dYy +dYy +dYy +dYy +dXo +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +"} +(195,1,1) = {" +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aad +aaa +aaa +aaa +anC +aBc +bHw +cbv +cPZ +dVN +dWf +dWC +dWT +dXo +dXL +dXL +dXL +dYx +dYQ +dZd +dYT +dZb +dZS +dZb +dYT +dZd +eaQ +eaY +dXK +dXK +dXK +dXo +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +"} +(196,1,1) = {" +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aad +aaf +aaf +aaf +aow +aow +bHB +ccf +cTF +dVP +dWg +dWD +dWV +dXo +dXK +dXK +dXK +dYA +aSh +dZg +dZw +dZb +dZV +dZb +ear +eaC +eaP +eba +dXK +dXK +dXK +dXo +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +"} +(197,1,1) = {" +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aad +aaa +aaa +aaa +aaa +aow +aow +aow +aow +aow +aow +aow +aow +dXo +dXN +dYd +dYl +dYz +dYS +dZd +dZv +dZb +dZU +dZb +eaq +dZd +eaS +eaZ +dYl +dYd +ebg +dXo +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +"} +(198,1,1) = {" +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aad +aaa +aaa +aaa +aaa +aaf +aaa +aaa +aaa +aaa +aaf +aaa +aaa +dXo +dXo +dXo +dXo +dXo +dYU +dZh +dZx +dZI +dZW +eae +eas +eaD +eaT +dXo +dXo +dXo +dXo +dXo +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +"} +(199,1,1) = {" +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +abc +aad +aaa +aaa +aaa +aaf +aaa +aaa +aaa +aaa +aaf +aaa +aaa +aaa +bhg +dXo +dYm +dYB +dYT +dZd +dZb +dZb +dYC +dZb +dZb +dZd +dYT +dZb +ebc +dXo +bhg +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +"} +(200,1,1) = {" +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aad +aad +aaa +aaa +aaf +aaa +aaa +aaa +aaa +aaf +aaa +aaa +aaa +bhg +dYf +dYo +dYD +dYW +dZj +dZz +dZK +dZY +eag +eau +eaF +dYT +dZb +ebe +dYf +bhg +aaa +aaa +aad +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +"} +(201,1,1) = {" +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaf +aad +aad +aad +aad +aad +aad +aad +aad +aaa +aaa +aaa +aaa +dYe +dYn +dYC +dYV +dZi +dZy +dZJ +dZX +eaf +eat +eaE +eaU +dZb +ebd +dYe +aaa +aaa +aaa +aad +aaa +aaa +aab +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +"} +(202,1,1) = {" +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aad +aad +aaf +aaf +aaf +dXo +dXo +dYF +dXo +dZl +dZA +dZL +dYy +eah +eav +eaG +dXo +ebb +dXo +dXo +aaf +aaf +aaf +aad +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +"} +(203,1,1) = {" +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aad +aaa +aaa +aaa +aaa +dXo +dYE +dXo +dZk +dXK +dXK +dYy +dXK +dXK +dZk +dXo +dXo +dXo +aaa +aaa +aaa +aaa +aad +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +"} +(204,1,1) = {" +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aad +aad +aaa +aaa +aaa +aaa +dYG +dXo +dZn +dZB +dXK +dYy +dXK +dXK +eaI +dXo +aaa +aaa +aaa +aaa +aaa +aad +aad +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +"} +(205,1,1) = {" +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aad +aaa +aaa +aaa +aaa +aaa +dXo +dZm +dXK +dXK +dYy +dXJ +dXJ +eaH +dXo +aaa +aaa +aaa +aaa +aaa +aad +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +"} +(206,1,1) = {" +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +dXo +dXo +dXo +dXo +dXo +eai +eai +eaJ +dXo +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +"} +(207,1,1) = {" +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaf +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +"} +(208,1,1) = {" +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaf +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +"} +(209,1,1) = {" +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaf +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +"} +(210,1,1) = {" +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aad +aad +aad +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +"} +(211,1,1) = {" +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +"} +(212,1,1) = {" +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +"} +(213,1,1) = {" +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +"} +(214,1,1) = {" +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +"} +(215,1,1) = {" +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +"} +(216,1,1) = {" +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +"} +(217,1,1) = {" +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +"} +(218,1,1) = {" +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +"} +(219,1,1) = {" +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +"} +(220,1,1) = {" +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +"} +(221,1,1) = {" +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +"} +(222,1,1) = {" +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +"} +(223,1,1) = {" +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +"} +(224,1,1) = {" +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +"} +(225,1,1) = {" +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +"} +(226,1,1) = {" +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +"} +(227,1,1) = {" +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +"} +(228,1,1) = {" +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +"} +(229,1,1) = {" +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +"} +(230,1,1) = {" +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +"} +(231,1,1) = {" +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +"} +(232,1,1) = {" +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +"} +(233,1,1) = {" +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +"} +(234,1,1) = {" +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +"} +(235,1,1) = {" +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +"} +(236,1,1) = {" +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +"} +(237,1,1) = {" +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +"} +(238,1,1) = {" +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +"} +(239,1,1) = {" +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +"} +(240,1,1) = {" +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +"} +(241,1,1) = {" +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +"} +(242,1,1) = {" +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +"} +(243,1,1) = {" +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +"} +(244,1,1) = {" +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +"} +(245,1,1) = {" +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +"} +(246,1,1) = {" +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +"} +(247,1,1) = {" +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +"} +(248,1,1) = {" +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +"} +(249,1,1) = {" +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +"} +(250,1,1) = {" +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +"} +(251,1,1) = {" +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +"} +(252,1,1) = {" +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +"} +(253,1,1) = {" +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +"} +(254,1,1) = {" +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +"} +(255,1,1) = {" +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +"} + +(1,1,2) = {" +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +"} +(2,1,2) = {" +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +"} +(3,1,2) = {" +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +"} +(4,1,2) = {" +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +"} +(5,1,2) = {" +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +"} +(6,1,2) = {" +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +"} +(7,1,2) = {" +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +bAj +bAj +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +"} +(8,1,2) = {" +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +bAj +bAj +bAj +bAj +bAj +bAj +bAj +bAj +bAj +bAj +bAj +bAj +bAj +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +"} +(9,1,2) = {" +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +bAj +bAj +bAj +bAj +bAj +bAj +bAj +bAj +bAj +bAj +bAj +bAj +bAj +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +"} +(10,1,2) = {" +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +bAj +bAj +bAj +bAj +bAj +bAj +bAj +bAj +bAj +bAj +bAj +bAj +bAj +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +"} +(11,1,2) = {" +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +bAj +bAj +bAj +bAj +bAj +bAj +bAj +bAj +bAj +bAj +bAj +bAj +bAj +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +"} +(12,1,2) = {" +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +bAj +bAj +bAj +bAj +bAj +bAj +bAj +bAj +bAj +bAj +bAj +bAj +bAj +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +"} +(13,1,2) = {" +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +bAj +bAj +bAj +bAj +bAj +bAj +bAj +bAj +bAj +bAj +bAj +bAj +bAj +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +"} +(14,1,2) = {" +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +bAj +bAj +bAj +bAj +bAj +bAj +bAj +bAj +bAj +bAj +bAj +bAj +bAj +bAj +bAj +bAj +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +"} +(15,1,2) = {" +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +bAj +bAj +bAj +bAj +bAj +bAj +bAj +bAj +bAj +bAj +bAj +bAj +bAj +bAj +bAj +bAj +bAj +bAj +bAj +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +"} +(16,1,2) = {" +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +bAj +bAj +bAj +bAj +bAj +bAj +bAj +bAj +bAj +bAj +bAj +bAj +bAj +bAj +bAj +bAj +bAj +bAj +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +"} +(17,1,2) = {" +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +bAj +bAj +bAj +bAj +bAj +bAj +bAj +bAj +bAj +bAj +bAj +bAj +bAj +bAj +bAj +bAj +bAj +bAj +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +"} +(18,1,2) = {" +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +bAj +bAj +bAj +bAj +bAj +bAj +bAj +bAj +bAj +bAj +bAj +bAj +bAj +bAj +bAj +bAj +bAj +bAj +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +"} +(19,1,2) = {" +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +bAj +bAj +bAj +bAj +bAj +bAj +bAj +bAj +bAj +bAj +bAj +bAj +bAj +bAj +bAj +bAj +bAj +bAj +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +"} +(20,1,2) = {" +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +bAj +bAj +bAj +bAj +bAj +bAj +bAj +bAj +bAj +bAj +bAj +bAj +bAj +bAj +bAj +bAj +bAj +bAj +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +"} +(21,1,2) = {" +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +bAj +bAj +bAj +bAj +bAj +bAj +bAj +bAj +bAj +bAj +bAj +bAj +bAj +bAj +bAj +bAj +bAj +bAj +bAj +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +"} +(22,1,2) = {" +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +bAj +bAj +bAj +bAj +bAj +bAj +bAj +bAj +bAj +bAj +bAj +bAj +bAj +bAj +bAj +bAj +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +"} +(23,1,2) = {" +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +bAj +bAj +bAj +bAj +bAj +bAj +bAj +bAj +bAj +bAj +bAj +bAj +bAj +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +"} +(24,1,2) = {" +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +bAj +bAj +bAj +bAj +bAj +bAj +bAj +bAj +bAj +bAj +bAj +bAj +bAj +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +"} +(25,1,2) = {" +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +bAj +bAj +bAj +bAj +bAj +bAj +bAj +bAj +bAj +bAj +bAj +bAj +bAj +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +"} +(26,1,2) = {" +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +bAj +bAj +bAj +bAj +bAj +bAj +bAj +bAj +bAj +bAj +bAj +bAj +bAj +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +"} +(27,1,2) = {" +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +bAj +bAj +bAj +bAj +bAj +bAj +bAj +bAj +bAj +bAj +bAj +bAj +bAj +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +"} +(28,1,2) = {" +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +bAj +bAj +bAj +bAj +bAj +bAj +bAj +bAj +bAj +bAj +bAj +bAj +bAj +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +"} +(29,1,2) = {" +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +bAj +bAj +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +"} +(30,1,2) = {" +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +"} +(31,1,2) = {" +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +"} +(32,1,2) = {" +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +"} +(33,1,2) = {" +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aab +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +"} +(34,1,2) = {" +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aab +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +"} +(35,1,2) = {" +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aab +aaa +aad +aad +aaf +aaf +aaf +aag +aad +aad +aad +aaa +aaa +aaa +aaa +aaa +aaa +aag +aad +aad +aad +aad +aad +aaf +aag +aad +aad +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +"} +(36,1,2) = {" +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aad +aad +aaa +aaa +aaa +aaa +aaa +aaa +aaf +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaf +aaa +aaa +aaa +aaa +aaa +aaa +aad +aad +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +"} +(37,1,2) = {" +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aad +aad +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaf +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaf +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aad +aad +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +"} +(38,1,2) = {" +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aad +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaf +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaf +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aad +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +"} +(39,1,2) = {" +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aad +aaf +aaf +aaf +bKL +bVv +bMC +bKL +bVv +bVv +bMC +aaf +aaf +aaa +aaa +aaf +aaf +aaf +bKL +bVv +bVv +bMC +bKL +bVv +bMC +aaf +aaf +aaf +aad +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +"} +(40,1,2) = {" +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aad +aaa +aaa +aaa +bVi +bVw +bKM +bVi +bVw +ccz +cdR +aaa +aaa +aaa +aaa +aaf +aaa +aaa +bVi +bVw +ccz +cdR +bKM +ccz +cdR +aaa +aaa +aaa +aad +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +"} +(41,1,2) = {" +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aad +aaa +aaa +aaa +bKL +bVA +bKM +bKL +bVA +cdQ +bMC +aaa +aaa +aaa +aaa +aaf +aaa +aaa +bKL +bVA +cdQ +bMC +bKM +cdQ +bMC +aaa +aaa +aaa +aag +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +"} +(42,1,2) = {" +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aad +aaa +aaa +aaa +bVi +bVw +bKM +bVi +bVw +ccz +cdR +aaa +aaa +aaf +aaa +aaf +aaa +aaa +bVi +bVw +ccz +cdR +bKM +ccz +cdR +aaa +aaa +aaa +aaf +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +"} +(43,1,2) = {" +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aad +aaa +aaa +aaa +bKL +bVA +bKM +bKL +bVA +cdQ +bMC +aaa +aaa +aaf +aaa +aaf +aaa +aaa +bKL +bVA +cdQ +bMC +bKM +cdQ +bMC +aaa +aaa +aaa +aaf +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +"} +(44,1,2) = {" +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aag +aaa +aaa +aaa +bVi +bVw +bKM +bVi +bVw +ccz +cdR +aaa +aaa +aaf +aaa +aaf +aaa +aaa +bVi +bVw +ccz +cdR +bKM +ccz +cdR +aaa +aaa +aaa +aaf +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +"} +(45,1,2) = {" +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aad +aad +aaa +aaa +aaa +bKL +bVA +bKM +bKL +bVA +cdQ +bMC +aaf +aaf +aaf +aaa +aaf +aaf +aaf +bKL +bVA +cdQ +bMC +bKM +cdQ +bMC +aaa +aaa +aaa +aag +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +"} +(46,1,2) = {" +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aad +aad +aaf +aad +aaa +aaa +aaa +aaa +bVi +bVw +bKM +bVi +bVw +ccz +cdR +aaa +aaa +aaf +aaa +aaf +aaa +aaa +bVi +bVw +ccz +cdR +bKM +ccz +cdR +aaa +aaa +aaa +aad +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +"} +(47,1,2) = {" +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aad +aad +aaa +aaa +aaf +aaa +aaa +aaa +aaa +bKL +bVA +bKM +bKL +bVA +cdQ +bMC +aaa +aaa +aaf +aaa +aaf +aaa +aaa +bKL +bVA +cdQ +bMC +cyD +cdQ +bMC +aaa +aaa +aaa +aad +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +"} +(48,1,2) = {" +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aad +aaa +aaa +aaa +aaf +aaa +aaa +aaa +aaa +bVi +bVw +bKM +bVi +bVw +ccz +cdR +aaa +aaa +aaf +aaa +aaf +aaa +aaa +bVi +bVw +ccz +cdR +bKM +ccz +cdR +aaa +aaa +aaa +aad +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +"} +(49,1,2) = {" +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aad +aaa +aaa +aaa +aaf +aaa +aaa +aaa +aaa +bKL +bVA +bKM +bKL +bVA +cdQ +bMC +aaa +aaa +aaf +aaa +aaf +aaa +aaa +bKL +bVA +cdQ +bMC +bKM +cdQ +bMC +aaa +aaa +aaa +aad +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +"} +(50,1,2) = {" +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aad +aaf +aaf +aaf +bKL +bMC +bKL +bMC +aaf +bVi +bVw +bKM +bVi +bVw +ccz +cdR +aaf +aaf +aaf +aaa +aaf +aaf +aaf +bVi +bVw +ccz +cdR +bKM +ccz +cdR +aaf +aaf +aaf +aad +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +"} +(51,1,2) = {" +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aag +aaa +aaa +aaa +bKM +bMD +bMD +bKM +aaa +aaf +bVy +bVy +aad +bVy +bVy +aaf +aaa +aaa +ciy +aaa +aaa +aaa +aaa +aaf +bVy +bVy +aad +bVy +bVy +aaf +aaa +aaa +aaa +aad +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +"} +(52,1,2) = {" +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aad +aaa +aaa +aaa +bKM +bME +bMD +bKM +aaa +aaf +bVz +bXo +bYT +caJ +ccB +aaf +aaa +bTE +bTD +ckx +bTD +bTE +aaa +aaf +bVz +caJ +bYT +bXo +ccB +aaf +aaa +aaa +aaa +aag +aaf +aad +aad +aaf +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +"} +(53,1,2) = {" +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aad +aaa +aaa +aaa +bKM +bKM +bKM +bKM +aaa +bTD +bVE +ccA +bYU +bTD +bTD +bTD +bTD +bTD +ciz +cky +cmw +bTD +bTD +bTD +bTD +bTD +cwQ +cyE +bTD +aaf +aaa +aaa +aaa +aaa +aaa +aaf +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +"} +(54,1,2) = {" +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aad +aaa +aaa +aaa +bKM +bMD +bMD +bKM +aaa +bTE +bVB +bXq +bYV +caK +ccC +ceh +cfD +chc +ciA +ckz +ciA +chc +cpK +crz +ctt +caK +cwU +cyF +bTD +bTE +aaa +aaa +aaa +aaa +aaa +aaf +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +"} +(55,1,2) = {" +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aag +aaf +aaf +aaf +bKN +bKN +bKN +bKN +aaa +bTD +bVC +bXr +bYW +bYW +bYW +cdS +bXr +chc +ciB +ckA +cmx +chc +cpL +bXr +ctr +cuP +cwS +cyG +cAv +bTD +aaa +aaa +aaa +aaa +aaa +aaf +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +"} +(56,1,2) = {" +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaf +aaa +aaa +bHW +bKO +bMF +bMF +bKO +bHW +bTD +bVD +bXs +bYX +bYX +ccD +cdT +cfF +bTD +ciC +ckB +cmy +bTD +cpM +ctq +cts +cuQ +cwT +cyH +cAw +bTD +cDH +cDH +cFp +cFp +cDH +cLz +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +"} +(57,1,2) = {" +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaf +aaa +aaa +bHW +bHW +bKP +bMG +bOy +bPU +bRK +bTD +bVB +bXt +bYV +bYV +ccE +cdU +ciG +chd +ciD +ckC +cmz +cou +cpN +crB +cwR +cuR +cxt +cyI +cAx +bTD +cDI +cFn +cGI +cIC +cKm +cLA +cMW +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +"} +(58,1,2) = {" +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aag +aaf +aaf +bHW +bJw +bKQ +bMH +bOz +bPV +bRL +bTD +bXp +bXr +bYW +bYW +bYW +cdV +cfG +che +ciE +ckD +cmA +cov +che +crC +ctr +cuS +cwS +cyJ +bXp +bTD +cDJ +cFo +cFp +cID +cKn +cDH +cDH +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +"} +(59,1,2) = {" +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aad +aaa +aaa +bHW +bJx +bKR +bMI +bOA +bPV +bRM +bTD +bVB +bXs +bYX +bYX +ccD +cdT +cfH +chf +ciF +ckE +cmB +cow +cmD +crD +ctu +cuQ +cwT +cyH +cAx +bTD +cDK +cFp +cGJ +cIE +cKo +cLB +cFp +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +"} +(60,1,2) = {" +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aad +aad +aaa +aaa +bHW +bJy +bKS +bMJ +bOB +bPW +bRN +bTE +bVF +bXu +bXu +bXu +bXu +cdW +bXu +bXu +cmC +ckF +crA +bXu +bXu +crE +ctv +cuT +cwV +cyK +cAy +bTD +cDL +cFq +cGK +cGK +cGK +cLC +cFp +aaa +aaa +aab +abc +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +"} +(61,1,2) = {" +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aag +aad +aaa +aaa +aaa +bHW +bJz +bKT +bMK +bOC +bPX +bRO +bTF +bVG +bXv +bYY +caL +ccF +cdX +cfI +chg +ciH +ckG +cmD +cox +cpO +crF +ctw +cuU +cwW +cyL +cyL +bTD +cDL +cDH +cGL +cIF +cKp +cLD +cDH +aaf +aaf +aaf +aad +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +"} +(62,1,2) = {" +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaf +aab +aaa +aaa +bHW +bJA +bKU +bML +bOD +bPY +bRP +bTG +bVH +bXw +bYZ +caM +caM +cdY +caM +chh +ciI +ckH +cmE +chh +cpP +crG +cpP +cpP +cwX +cyL +cyL +bTD +cDM +cDH +cDH +cIG +cDH +cDH +cDH +aaa +aaa +aaa +aad +bfG +aad +aad +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +"} +(63,1,2) = {" +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaf +aaf +aaa +aaa +aaa +bHW +bHW +bHW +bMM +bHW +bHW +bHW +bTD +bVI +bXx +bZa +caM +ccG +cdZ +caM +chi +ciJ +ckI +cmF +coy +cpP +crH +ctx +cpP +cwY +cyM +cAz +bTD +cDN +cDH +cGM +cIH +cKq +cKq +cMX +aaa +aaa +aaa +aaa +aaf +aaa +aad +aad +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +"} +(64,1,2) = {" +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aad +aad +aad +aad +aad +aad +aad +aad +adK +aaa +aag +aad +aad +aad +aad +adJ +aaa +aaa +aaa +aaa +aaa +bHX +bJB +bKV +ebN +bOE +bPZ +bRQ +bBE +bBE +bBE +bBE +caM +ccH +cea +caM +chj +ciK +ckJ +cmG +coz +cpQ +crI +cty +cpP +bTD +bTD +bTD +bTD +cXV +cMX +cGB +cGN +cKr +cLE +cMY +aaa +aaa +aaa +aaa +aaf +aaa +aaa +aad +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +"} +(65,1,2) = {" +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aad +aad +aaa +aaa +aaa +aaa +aaf +aaa +aaa +aaf +aaa +aaa +aaf +aaa +aaa +aaf +aaa +aaa +aaa +aaa +aaa +aaa +bHX +bJC +bKW +bMO +bKX +bQa +bRR +bTH +bVJ +bXy +bZb +caM +ccI +ceb +caM +chk +ciL +ckK +cmH +coA +cpP +crJ +ctz +cpP +cfR +cfR +cfR +cfR +cCh +cEZ +cLF +cKt +cGO +cLF +cMY +aaa +aaa +aaa +aaa +aaf +aaa +aaa +aag +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +"} +(66,1,2) = {" +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aad +aad +aaa +aaa +aaa +aaa +aaa +aaf +aaa +aaa +aaf +aab +aaa +aaf +aaa +aaa +aaf +aaa +aaa +bBE +bBE +bBE +bBE +bBE +bJD +bKX +bMP +bOF +bQb +bQb +bQb +bVK +bXz +bZc +caM +ccJ +cec +cfJ +chl +ciM +ckL +cmI +coB +cpR +crK +ctA +cpP +crM +cyN +cyN +cCc +ecl +cDP +cFs +cIJ +cKs +cLG +cMX +cMX +cMX +cMX +cMX +aaf +aaf +aaf +aad +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +"} +(67,1,2) = {" +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aad +aad +aaa +aaa +aaa +aaa +aaa +aaa +aaf +aaa +aaa +aaf +aaa +aaa +aaf +aaa +aaa +aaf +aaa +aaa +bBF +bDh +bEC +bGt +bHY +bJE +bKY +bMQ +bOG +bQc +bRS +bTI +bVL +bKZ +bZb +caM +ccK +ced +cfK +chm +ciN +ckM +cmJ +coC +cpS +crL +ctB +cpP +crN +cmL +cmL +cen +cPX +cFt +cGP +cIK +cKt +cLH +cMZ +cOr +cPB +cQN +cRY +aaa +aaa +aaa +aad +aad +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +"} +(68,1,2) = {" +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aab +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aag +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaf +aaa +aaa +aaf +aaa +aaa +aaf +aaa +aaa +aaf +aaa +aaa +bBG +bDh +bED +bGu +bHZ +bJF +bKZ +bBE +bOH +bDi +bDi +bDi +bVM +bDi +bDi +caM +caM +cee +cfL +chn +ciO +chn +cmK +coD +cpP +cpP +cpP +cpP +crN +cyO +cyO +cyO +cyO +cyO +cGQ +cGQ +cKu +cLI +cNa +cOs +cPC +cQN +cRZ +aaa +aaa +aaa +aaa +aad +aad +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +"} +(69,1,2) = {" +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aad +aad +aaf +aaf +aaf +aaf +aaf +aaf +aaf +bgv +bgv +bgv +bgv +bgv +bgv +bgv +bgv +bgv +bgv +aaa +aaa +bBH +bDi +bEE +bGv +bDi +bJG +bBE +bMR +bOI +bQd +bRT +bTJ +bVN +bXA +bZd +caN +bXA +bXA +cfM +cho +ciP +bLg +cfO +coE +coE +cuX +cuX +cuX +crN +cyO +cAA +cCd +cDR +cyO +cGR +cGR +cKt +cLJ +cMX +cOt +cPD +cMX +cSa +aaa +aaa +aaa +aaa +aaa +aag +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +"} +(70,1,2) = {" +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aad +aad +aaf +aaa +aaa +aaa +aaa +aaa +aaa +aaa +bgv +boF +bpD +bgv +bry +bsR +bgv +bvm +bwu +bgv +aaa +bAk +bAk +bAk +bAk +bAk +bAk +bAk +bAk +bMS +bOJ +bQe +bRU +bTK +bVO +bXB +bZe +caO +ccL +cef +cfN +chp +ciQ +ckN +cfO +coF +cmL +crM +ctC +cuV +cwZ +cyP +cAB +cAB +cDS +cyO +cGS +cGS +cKu +cLK +cMX +cMX +cMX +cMX +cMX +cMX +aaa +aaa +aaa +aaa +aad +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +"} +(71,1,2) = {" +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aad +aaa +aaf +aaa +aaa +aaa +aaa +aaa +aaa +aaa +bgv +boG +bpE +bgv +brz +bsS +bgv +bvl +bBU +bgv +aaa +bAk +bBI +bDj +bEF +bGw +bIa +bIa +bAk +bMT +bOK +bQf +bQg +bQg +bQg +bQg +bQg +bQg +caW +ceg +cfO +chq +ciR +cfO +cfO +coG +cmL +crN +ctD +ctD +ctD +cyO +cAC +cCe +cDT +cyO +cGT +cGT +cKv +cLL +cLL +cLL +cLL +cLL +cSb +cMX +cMX +aaf +aaf +aaf +aad +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +"} +(72,1,2) = {" +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aad +aad +aaa +aaf +aaa +aaa +aab +aaa +aaa +aaa +aaa +bgv +boJ +bpF +bgv +boJ +bpF +bgv +boJ +bpF +bgv +aaa +bAk +bBJ +bDj +bEG +bEG +bIa +bIa +bAk +bMU +bOL +bQg +bQg +bTL +bVP +bXC +bZf +caP +caW +cfE +cfO +chr +cfO +cfO +cmL +cmL +cmL +crN +ctD +cuW +cxa +ctD +ctD +ctD +ctD +cGT +cFu +cGT +cKw +cGT +cGT +cGT +cGT +cIM +cKv +cSb +cMX +aaa +aaa +aaa +abc +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +"} +(73,1,2) = {" +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aad +aaa +aaa +aaf +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +boK +bpG +aaa +boK +bpG +aaa +boK +bpG +aaa +aaa +bAk +bBK +bDj +bEG +bEG +bIb +ebJ +bAk +bMV +bOM +bQh +bRV +bTM +bTM +bTM +bZg +caQ +caW +cei +cfP +chs +ciS +ckO +cmM +crQ +cpU +crP +ctF +cuY +cxc +cyR +cAE +cCf +ctD +cFv +cGU +cIL +cKx +cLM +cIM +cIM +cGT +cGT +ecs +cKu +cMY +aaa +aaa +aaa +aag +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +"} +(74,1,2) = {" +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +adJ +aag +aaa +aaa +aaf +aaa +aaa +aaa +aaa +aaa +bkA +bkA +bkG +boH +bpH +bqC +boH +bsT +bqC +bvn +bww +bxR +bkA +bAk +bBL +bDk +bEH +bGx +bIc +bJI +bAk +bMW +bON +bQi +bRW +bTN +bVQ +bTO +bZh +caR +caW +cej +cfQ +cht +ciT +cen +cmN +crO +cpT +cuZ +ctE +cxb +cxd +cyQ +cyS +cAD +ctD +cFw +cGV +cIM +cIM +cIM +cIM +cIM +cPE +cGT +cSd +cKu +cMY +aaa +aaa +aaa +aag +aab +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +"} +(75,1,2) = {" +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +adK +aaa +aaa +aaa +aaf +aaa +aaa +aaa +aaa +bkA +blC +bmK +bnF +boI +bpI +bqD +brA +bsU +bum +bvq +bwx +bxS +bzc +bAk +bBM +bBM +bEG +bGy +bId +bJJ +bAk +bMX +bOO +bQh +bRX +bTO +bVR +bXD +bZi +caS +caW +cek +cfR +cfR +cfR +cfR +cfR +cfR +cfR +crR +ctD +ctD +ctD +ctD +cAF +cNp +ctD +cFx +cFx +cFx +cIM +cIM +cIM +cIM +cIM +cFu +cSe +cKu +cMY +aaa +aaa +aaa +aad +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +"} +(76,1,2) = {" +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aad +aad +aaa +aaa +aaa +bgv +bgv +bgv +bgv +aaa +bkC +blD +bmL +bnG +boL +bpJ +bqE +boL +bmT +bqE +boL +bwy +bqE +bzd +bAk +bBM +bDl +bEI +bGz +bIe +bJK +bAk +bMY +bOP +bQh +bRY +bTP +bVS +bXE +bXE +caT +caW +cek +cfR +chu +chu +chu +chu +chu +cfR +crR +ctG +cva +cva +ctD +ctD +cCj +cDU +cDU +cDU +cDU +cDU +cDU +cDU +cDU +cFu +cFu +cSf +cTh +cMX +aaa +aaa +aaa +aad +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +"} +(77,1,2) = {" +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aad +aaa +aaa +aaa +aaa +bgv +bhi +bib +bja +bjU +bkE +blE +bmM +bmO +boM +bpK +bmM +brB +bsV +bmM +brB +bwz +bxT +bze +bAk +bBN +bDm +bEJ +bGA +bIf +bJL +bAk +bMZ +bOQ +bQj +bRZ +bTQ +bVT +bTO +bZh +caU +caW +cek +cfR +chu +chu +chu +chu +chu +cfR +crR +ctG +cvb +cxe +cyT +cAG +cCk +cDV +cFy +cGW +cIN +cKy +cLN +cNb +cDU +cFu +cGT +cSg +cTi +cMX +aaf +aaf +aaf +aad +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +"} +(78,1,2) = {" +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aad +aaa +aaa +aaa +aaa +bgv +bhj +bic +bjb +bgw +bkD +blF +bmN +bmP +boN +bmP +bmN +brC +bsW +bmN +bvo +bwA +bxU +bkA +bAk +bAk +bAk +bAk +bGB +bAk +bAk +bAk +bNa +bOR +bQh +bSa +bTR +bTR +bTR +bZj +caV +caW +cek +cfR +chu +chu +chu +chu +chu +cfR +crS +ctH +cvc +ctH +cyU +cAH +cCl +cDW +cFz +cGX +cIO +cKz +cLO +cNc +cDU +cIM +cGT +cSh +cTi +cMX +aaa +aaa +aaa +aad +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +"} +(79,1,2) = {" +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aad +aaf +aaf +aaf +aaf +bgv +bgv +bgv +bgv +aaa +bkB +blG +bmL +bnH +boL +bpL +bqF +boU +bsX +bun +bvp +bwB +bxV +bkA +bAl +bBO +bDn +bEK +bGC +bIg +bJM +bLa +bNb +bOS +bQg +bSb +bTS +bVU +bXF +bZk +caW +caW +cek +cfR +chu +chu +chu +chu +chu +cfR +crT +ctH +cvc +ctH +cyV +cAI +cCm +cDU +cFA +cGY +cIP +cKz +cKz +cNd +cDU +cIM +cGT +cIM +cTi +cMY +aaa +aaa +aaa +aaf +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +"} +(80,1,2) = {" +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aWk +aWk +aWk +aWk +aWk +aWk +aWk +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaf +aaa +aaa +aaa +aaa +bgv +bhk +bid +bja +bjU +bkE +blH +bmO +bnI +boQ +bpM +bqG +brD +bsY +buo +bwv +bwC +bxW +bzf +bAm +bBP +bDo +bGm +bGD +bIh +bJN +bLb +bNc +bOT +bQk +bQk +bQk +bQk +bQk +bQk +bQk +cCi +cek +cfR +chu +chu +chu +chu +chu +cfR +crU +ctI +ctI +ctI +ctI +ctI +ctI +ctI +cFB +cGZ +cIQ +cKA +cLP +cNe +cDU +cIM +cGT +cSi +cTj +cMY +aaa +aaa +aaa +aae +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +"} +(81,1,2) = {" +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aWk +aWk +aWk +aWk +aWk +aWk +aWk +aWk +aWk +aWk +aWk +aWk +aWk +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aag +aaa +aaa +aaa +aaa +bgv +bhl +bie +bjb +bgw +bkF +blI +bmP +bnJ +boP +bpM +bqJ +bmL +bqH +bup +boQ +bwB +bxX +bzg +bAn +bBQ +bEL +bEM +bGE +bIi +bJO +bLc +bNd +bOK +bQl +bSc +bTT +bVV +bXG +bZl +bQk +bQk +cek +cfR +chv +ciU +ckP +cmO +chv +cfR +crV +ctJ +cvd +cxf +cyW +cAJ +cCn +cDX +cFC +cHa +cIR +cKB +cLQ +cNf +cDU +cPF +cGT +cIM +cTi +cMY +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +"} +(82,1,2) = {" +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aWk +aWk +aWk +aWk +aWk +aWk +aWk +aWk +aWk +aWk +aWk +aWk +aWk +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aad +aaf +aaf +aaf +aaf +bgv +bgv +bgv +bgv +aaa +bkG +blJ +bmQ +bnK +boO +bpN +bqI +bmT +bsZ +buq +bvr +bwD +bxY +bzh +bAo +bBR +bDq +bEN +bGF +bIj +bJP +bLd +bNe +bOU +bQm +bSd +bTU +bVW +bXH +bZm +caX +bQk +cek +cen +chw +ciV +ckQ +cmP +coJ +cen +cpV +ctI +ctI +cxg +cyX +cAK +cCo +ctI +cFD +cDU +cIS +cKC +cDU +cDU +cDU +cGT +cGT +cSj +cTi +cMX +aaa +aaa +aab +aaf +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +dAT +dAT +dAT +dAT +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +"} +(83,1,2) = {" +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aWk +aWk +aWk +aWk +aWk +aWk +aWk +aWk +aWk +aWk +aWk +aWk +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aad +aaa +aaa +aaa +aaa +bgv +bhm +bif +bjc +bjV +bkH +blK +bmR +bnL +boQ +bnH +bqH +bmU +bpT +bur +boQ +bwB +bmT +bzg +bAp +bBS +bDr +bEO +bEO +bIk +bCf +bLe +bNf +bOV +bQn +bSe +bTV +bVX +bXI +bZn +bQk +bQk +cek +cen +chx +ciW +ckR +ciW +coK +cen +cvf +cvg +ctK +cxh +cyY +cAL +cCp +cDY +cFE +cHb +cIT +cHg +cLR +cNg +cOu +cEa +cQO +cSk +cTi +cMX +aaf +aaf +aaf +aag +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +dAT +dAT +dAT +dAT +dAT +dAT +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +"} +(84,1,2) = {" +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aWk +aWk +aWk +aWk +aWk +aWk +aWk +aWk +aWk +aWk +aWk +aWk +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aad +aaa +aaa +aaa +aaa +bgv +bhn +big +bjd +bjV +bkI +blL +bmL +bnM +boR +bpO +bqK +bmL +bta +bsW +boT +bwE +bxZ +bzi +bAq +bBT +bDs +bEP +bGG +bIl +bER +bLf +bNg +bLg +bQo +bSf +bTW +bVY +bXJ +bZo +caY +bQk +cel +cen +cen +ciX +ckS +ciX +cen +cen +cpV +cvg +ctI +cXq +cyZ +cAM +cCq +cDZ +cFF +cHc +cIU +cKD +cLS +cHg +cOv +cPG +cQO +cSk +cTk +cMX +aaa +aaa +aaa +aad +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +dAT +dAT +dAT +dAT +dAT +dAT +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +"} +(85,1,2) = {" +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aWk +aWk +aWk +aWk +aWk +aWk +aWk +aWk +aWk +aWk +aWk +aWk +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aad +aaf +aaf +aaf +aaf +bgv +bgv +bgv +bgv +aaa +bkJ +blM +bmS +bnN +boS +bpP +bqL +brE +btb +bus +bvs +bwF +bya +bzj +bAr +bDp +bDt +bEQ +bGH +ccM +bJQ +bLg +bNh +bNh +bQp +bSg +bTX +bVZ +bXK +bZp +caZ +bQk +cem +cfS +chy +ciY +ckT +cmQ +cen +cpV +cpV +ctI +cxi +cxj +cza +cAN +ctI +ctI +ctI +cHd +cIV +cHg +cHg +cHg +cHg +cEa +cQO +cSk +cKu +cMX +aaa +aaa +aaa +aad +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +dAT +dAT +dAT +dAT +dAT +dAT +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +"} +(86,1,2) = {" +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aWk +aWk +aWk +aWk +aWk +aWk +aWk +aWk +aWk +aWk +aWk +aWk +aWk +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aad +aaa +aaa +aaa +bfF +bgw +bho +bgw +bgw +bgw +bkF +blN +bmN +bnO +boT +bmP +bqM +bnJ +btc +but +but +bwG +bwG +bzk +bAs +bBV +bCf +bER +bER +bCf +bCf +bLh +bNi +bOW +bQk +bSh +bTY +bWa +bXL +bZq +bQk +bQk +cen +cfT +chz +ciZ +ckU +cmR +coL +cpW +cen +ctL +cvh +cxk +czb +cAO +cCr +cEa +cOl +cHe +cIW +cKE +eco +cNh +cHg +cEa +cEa +cSl +cKu +cMX +aaa +aaa +aaa +aad +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +dAT +dAT +dAT +dAT +dAT +dAT +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +"} +(87,1,2) = {" +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aWk +aWk +aWk +aWk +aWk +aWk +aWk +aWk +aWk +aWk +aWk +aWk +aWk +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aad +aaf +aaf +aaf +aaf +bgv +bgv +bgv +bgv +aaa +bkG +blO +bmT +bnP +boU +bpQ +bqH +brF +btd +but +bvt +bwH +byb +buv +bAt +bDp +bDu +bES +bGI +bIn +bJR +bLi +bNj +bNj +bQq +bSi +bTZ +bNj +bXM +bSi +cba +ccN +ceo +cfU +chA +cja +ckV +cmS +chE +cpX +crX +ctL +cvi +cxl +cxl +cAP +cCs +cEb +cFH +cHf +cIX +cHg +ecp +cNi +cOw +cPH +cEa +cSm +cKu +cMX +aaa +aaa +aaa +aad +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +dAT +dAT +dAT +dAT +dAT +dAT +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +"} +(88,1,2) = {" +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aWk +aWk +aWk +aWk +aWk +aWk +aWk +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aad +aaa +aaa +aaa +aaa +bgv +bhp +bih +bja +bjU +bkK +blP +bmM +bnQ +bmM +bpR +bqN +bnJ +bte +but +bvu +bwI +byc +but +bAt +bBW +bDv +bET +bGJ +bIo +bJS +bLj +bNk +bOX +bQr +bSj +bSj +bWb +bXN +bOX +cbb +ccO +cep +cfV +chB +cjb +ckW +cmT +coM +cpY +crX +ctM +cvj +cxl +cxl +cAQ +cCt +cEc +cFI +cHg +cIV +cHg +ecp +cHg +cOw +cPI +cEa +cSm +cKu +cMX +aaa +aaa +aaa +aad +aaf +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +dAT +dAT +dAT +dAT +aaa +dAT +dAT +dAT +dAT +dAT +dAT +aaa +dAT +dAT +dAT +dAT +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +"} +(89,1,2) = {" +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aad +aaa +aaa +aaa +aaa +bgv +bhq +bii +bje +bjW +bkL +blQ +bmU +bnR +bmU +bpS +bpT +brG +btf +buu +bvv +bwJ +byd +bzl +bAu +bBX +bDw +bEU +bGK +bIp +bJT +bPT +bPT +bOY +bQs +bSk +bUa +bWc +bXO +bEV +bEV +bDx +ceq +cfW +chC +cjc +ckX +cjc +chC +cpZ +crX +ctN +cvk +cxl +czc +cAQ +cCt +cEc +cFJ +cHg +cIV +cHg +ecp +cHg +cOw +cPJ +cEa +cEa +cTh +cMX +cMX +aaa +aaa +aaa +aaf +aaf +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +dxQ +dxQ +dxQ +dxQ +dxQ +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +dAT +dAT +dAT +dAT +dAT +aaa +dAT +dAT +dAT +dAT +dAT +dAT +aaa +dAT +dAT +dAT +dAT +dAT +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +"} +(90,1,2) = {" +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aad +aad +aaa +aaa +aaa +bgv +bgv +bgv +bgv +aaa +bkM +blR +bmL +bmQ +boV +bpT +bmT +brH +btg +but +bvw +bwK +bye +but +bAv +bBY +bDx +bEV +bGL +bIq +bJU +bLl +bLl +bOZ +bOZ +bEV +bEV +bWd +bGL +bEV +cbc +ccP +ceq +cfX +chD +cjd +ckW +cmU +coN +cqa +crX +ctM +cvj +cxm +czd +cAR +cCu +cEd +cFK +cHh +cIY +cKD +cLS +cHg +cHg +cPK +cQP +cEa +cKu +cIM +cMX +cMX +aaa +aaa +aaa +abc +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +dxQ +dxQ +dxQ +dxQ +dxQ +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +dAT +dAT +dAT +dAT +dAT +aaa +dAT +dAT +dAT +dAT +dAT +dAT +aaa +dAT +dAT +dAT +dAT +dAT +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +"} +(91,1,2) = {" +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aad +aaa +aaa +aaa +aaf +aaa +aaa +aaa +aaa +bkA +blS +bmV +bnS +boW +bpU +bqO +brI +bth +but +bvx +bwL +byf +buv +bAw +bBZ +bDu +bEW +bGM +bIr +bJV +bLm +bLm +bPa +bQt +bSl +bUb +bWe +bXP +bSl +cbd +ccN +cer +cfY +chE +cje +ckY +cmV +coO +cpX +crX +ctL +cvl +cxn +cze +cze +cCv +cEe +cFL +cHi +cIZ +cKF +cLV +cNj +cOx +cPL +cQQ +cEa +cKu +cIM +cVx +cMX +aaf +aaf +aaf +aag +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +dxQ +dxQ +dxQ +dxQ +dxQ +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +dAT +dAT +dAT +dAT +dAT +aaa +dAT +dAT +dAT +dAT +dAT +dAT +aaa +dAT +dAT +dAT +dAT +dAT +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +"} +(92,1,2) = {" +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aad +aaa +aaa +aaa +aaf +aaa +aaa +aaa +aaa +bkA +blT +bmW +bnT +boX +bpV +bqP +brJ +bti +buv +buv +buv +buv +buv +bAx +bCa +bDy +bEX +bEX +bDy +bDy +bEX +bEX +bDy +bQu +bSm +bUc +bWf +bUc +bZr +bQu +ccQ +bux +cfZ +bux +cjf +ckU +cmW +coP +cqb +coP +ctL +cvm +cxo +czf +cAS +cCw +cEa +cFM +cHj +cJa +cKG +cKG +cNk +cOy +cPM +cKG +cKG +cKu +cIM +cVy +cMX +aaa +aaa +aaa +aad +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +dsT +dsT +dsT +dsT +dsT +dsT +dsT +aaa +aaa +aaa +dxQ +dxQ +dxQ +dxQ +dxQ +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +dAT +dAT +dAT +dAT +dAT +dAT +dAT +dAT +dAT +dAT +dAT +dAT +dAT +dAT +dAT +dAT +dAT +dAT +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +"} +(93,1,2) = {" +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aag +aaf +aaa +aaa +aaf +aaa +aaa +aaa +aaa +aaa +bkA +bkA +bkG +bkG +bpW +bpW +brK +btj +buw +bvy +bwM +byg +buw +bAy +bCb +bDy +bEY +bGN +bIs +bGN +bLn +bNl +bDy +bQv +bSn +bUd +bWg +bQw +bZs +cbe +ccQ +ces +cga +bux +cjg +ckZ +cmX +coP +cqc +crY +ctO +cvn +cxp +ctO +cAT +cxp +ctO +ctO +cHk +cJb +cKG +cLW +cLW +cLW +cLW +cLW +cKG +cKu +ecu +cVz +cMY +aaa +aaa +aaa +aaf +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +dsT +dsT +dsT +dsT +dsT +dsT +dsT +dsT +dsT +dsT +dsT +dsT +dsT +aaa +aaa +aaa +dxQ +dxQ +dxQ +dxQ +dxQ +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +dAT +dAT +dAT +dAT +dAT +dAT +dAT +dAT +dAT +dAT +dAT +dAT +dAT +dAT +dAT +dAT +dAT +dAT +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +"} +(94,1,2) = {" +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aad +aad +bfG +aaf +aaa +aaa +aaa +aaa +aaa +aaf +aaa +aaa +aaa +bpW +bqQ +brL +btk +buw +bvz +bwN +byh +buw +bAz +bCc +bDz +bEZ +bGO +bIt +bJW +bLo +bJW +bDz +bQw +bSo +bUe +bWh +bXQ +bQw +cbf +ccQ +ces +cgb +bux +dVx +ckU +chC +coP +cqd +crZ +ctO +cvo +cxq +czg +cAU +cCx +cEf +cxp +cHl +cJc +cKG +cLW +cLW +cLW +cLW +cLW +cKG +cKu +cIM +cVA +cMY +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +dsT +dsT +dsT +dsT +dsT +dsT +dsT +dsT +dsT +dsT +dsT +dsT +dsT +aaa +aaa +aaa +aaa +dxQ +dxQ +dxQ +dxQ +dxQ +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +dAT +dAT +dAT +dAT +dAT +dAT +dAT +dAT +dAT +dAT +dAT +dAT +dAT +dAT +dAT +dAT +dAT +dAT +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +"} +(95,1,2) = {" +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aad +aad +aad +aaa +aaa +aaa +aaf +aaa +aaa +aaa +bpW +bqR +brM +btl +buw +bvA +bwO +byi +bzm +bAA +bCd +bDA +bFa +bGP +bIu +bJX +bLp +bNm +bPb +bQx +bSp +bUf +bWi +bXR +bQw +cbg +ccQ +cet +cga +bux +cjd +ckU +dhs +coP +cqe +csa +ctO +cvp +cxr +czh +cAV +cCy +cEg +cFN +cHm +cIT +cKG +cLW +cLW +cLW +cLW +cLW +cKG +cKu +cIM +cVB +cMY +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +dsT +dsT +dsT +dsT +dsT +dsT +dsT +dsT +dsT +dsT +dsT +dsT +aaa +aaa +aaa +aaa +aaa +dxQ +dxQ +dxQ +dxQ +dxQ +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +dAT +dAT +dAT +dAT +dAT +dAT +dAT +dAT +dAT +dAT +dAT +dAT +dAT +dAT +dAT +dAT +dAT +dAT +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +"} +(96,1,2) = {" +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aad +aad +aaf +aaa +aaf +aaa +aaa +aaa +bpW +bqS +brN +btm +buw +bvB +bwP +byj +buw +bAB +bCe +bDB +bFb +bGQ +bIv +bJY +bLq +bNn +bDz +bQy +bSq +bUg +bWj +bXR +bQw +cbh +ccQ +bDL +cga +bux +cjh +cla +cmY +coP +cqf +csb +ctP +cvq +cxs +czi +cAW +cxr +cEh +cxp +cHn +cJd +cKG +cLW +cLW +cLW +cLW +cLW +cKG +cKu +cIM +cVC +cMY +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +dsT +dsT +dsT +dsT +dsT +dsT +dsT +dsT +dsT +dsT +dsT +dsT +aaa +aaa +aaa +aaa +aaa +dxQ +dxQ +dxQ +dxQ +dxQ +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +dAT +dAT +dAT +dAT +dAT +dAT +dAT +dAT +dAT +dAT +dAT +dAT +dAT +dAT +dAT +dAT +dAT +dAT +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +"} +(97,1,2) = {" +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +bfG +aad +aad +aaf +aaf +aaf +bpW +bpW +brO +btn +buw +buw +bwQ +buw +buw +bAC +bCf +bDy +bFc +bGR +bIw +bJZ +bLr +bNo +bDy +bQz +bSr +bUh +bUh +bXS +bQw +cbi +ccQ +ceu +cga +bux +cji +clb +cmZ +coP +cqg +csc +ctO +cvr +cFG +czj +cAX +cCz +cEi +cFO +cHo +cJe +cKG +cLW +cLW +cLW +cLW +cLW +cKG +cKu +cIM +cVD +cMY +aaa +aaa +aaa +aad +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +dsT +dsT +dsT +dsT +dsT +dsT +dsT +dsT +dsT +dsT +dsT +dsT +aaa +aaa +aaa +aaa +aaa +dxQ +dxQ +dxQ +dxQ +dxQ +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +dAT +dAT +dAT +dAT +dAT +dAT +dAT +dAT +dAT +dAT +dAT +dAT +dAT +dAT +dAT +dAT +dAT +dAT +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +"} +(98,1,2) = {" +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaf +aaa +aaa +aaa +aaa +bqT +brP +bto +bux +bvC +bwR +bvC +bux +bvC +bvC +bux +bux +bux +bIx +bIx +bLs +bIx +bIx +bQA +bSs +bUi +bWk +bQw +bZt +cbj +ccQ +bym +cga +bux +cjb +ckU +cmT +coQ +cqh +coQ +ctO +ctO +cxu +ctO +ctO +ctO +ctO +ctO +cEj +cJf +cKH +cLX +cLX +cLX +cLX +cLX +cKG +cTl +cIM +cVE +cMX +aaa +aaa +aaa +aad +aaa +aab +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aab +aaa +aaa +aaa +aaa +aaa +aaa +aaa +dmH +dmH +dmI +dmH +dmH +dmI +dmH +dmH +aaa +aaa +dsT +dsT +dsT +dsT +dsT +dsT +dsT +dsT +dsT +dsT +dsT +dsT +dsT +aaa +aab +aaa +aaa +dxQ +dxQ +dxQ +dxQ +dxQ +aaa +aaa +aab +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +dAT +dAT +dAT +dAT +dAT +dAT +dAT +dAT +dAT +dAT +dAT +dAT +dAT +dAT +dAT +dAT +dAT +dAT +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +"} +(99,1,2) = {" +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +abc +aaa +aaa +aaa +aaa +bqU +ebr +btp +buy +bvD +bwS +byk +bzn +bAD +bCg +bDC +bGS +bGU +bIx +bKa +bLt +bNp +bIx +bQB +bSt +bSt +bWl +bSt +bSt +bSt +ccR +bAQ +cga +bux +cjj +ckU +cna +coQ +cqi +csd +ctQ +cvs +cxv +coQ +cAY +cAY +cEj +cFP +cHp +cJg +cKI +cLY +cNl +cOz +cPN +cLY +cQO +cTm +cIM +cVF +cMX +aaf +aaf +aaf +aad +aad +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +cUr +dmH +dng +dnP +dng +dng +dpS +dng +dmH +dmK +aaa +aaa +dsT +dsT +dsT +dsT +dsT +dsT +dsT +dsT +dsT +dsT +dsT +dsT +dsT +aaa +aaa +aaa +dxQ +dxQ +dxQ +dxQ +dxQ +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +dAT +dAT +dAT +dAT +dAT +dAT +dAT +dAT +dAT +dAT +dAT +dAT +dAT +dAT +dAT +dAT +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +"} +(100,1,2) = {" +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aXG +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaf +abc +aad +aad +aad +aaa +aaa +aad +aad +aaa +aaa +aaa +aaa +bqU +bqU +btq +buz +bvE +bwT +byl +bzo +bAE +bzo +bDD +bGT +bVf +bIy +bKb +bLu +bNq +bPc +bQC +bSt +bUj +bWm +bXT +bZu +cbk +ccR +bAQ +cgc +bux +cjk +clc +cnb +coR +cqj +cse +ctR +cvt +cxw +coQ +cAZ +cCA +cEj +cFQ +cHq +cJh +cKJ +cLY +cNm +cOA +cPO +cKU +cSn +cTn +cIM +cMX +cMX +aaa +aaa +aaa +aaa +aad +aad +aad +aaa +abc +aag +aad +aad +aad +aaf +aad +aad +aad +aad +aad +aaa +aaa +aaa +aaa +cUr +dmH +drg +dnQ +doG +dpt +dpT +dqD +dmH +dmK +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +dsT +dsT +dsT +dsT +dsT +dsT +dsT +aaa +aaa +aaa +aaa +dxQ +dxQ +dxQ +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +dAT +dAT +dAT +dAT +dAT +dAT +dAT +dAT +dAT +dAT +dAT +dAT +dAT +dAT +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +"} +(101,1,2) = {" +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aab +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aag +aad +aad +aad +aad +aad +aaf +abc +aaf +aaf +aag +aad +aad +aad +aad +aad +beN +aaa +aaa +aaf +aaa +aaa +aaa +aaa +aaf +aaa +aaa +aab +aaa +aaa +bqU +bqU +bqT +bvF +bwU +bux +bzp +bAF +bCh +bFe +bFf +bux +bIx +bKc +bLv +bNr +bPd +bQD +bSu +bUk +bWn +bXU +bSt +bSt +ccR +bvF +cgc +bux +cjl +cld +cnc +coS +cqk +csf +ctS +cvu +cxx +czk +cBa +cCB +cEj +cFR +cHr +cJi +cKK +cLZ +cNn +dUV +cPP +cLY +cQO +cTo +cMX +cMX +aaa +aaa +aaa +aaa +aaa +aaa +aaf +aaa +aaa +aaa +aaf +aaa +aaa +aaf +aaa +aaa +aaa +aaf +aaa +aaa +aaa +aaa +aaa +aaa +cUr +dmI +drg +dnR +doH +doH +dpU +dqD +dmI +dmK +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +dvC +dvP +dvD +aaa +aaa +aaa +dwG +aaa +aaa +aaa +dyg +dyr +dvD +aaa +aaa +aaa +dwG +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +dAT +dAT +dAT +dAT +dAT +dAT +dAT +dAT +dAT +dAT +dAT +dAT +dAT +dAT +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +"} +(102,1,2) = {" +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaf +aaf +aaa +aaa +aaa +aaf +aaa +aaa +aaa +aaa +aaa +aab +aaa +aaf +aaa +aaa +aaf +aaa +aaa +aaa +aaf +aaa +aaa +aaa +aaa +aaf +aaa +aaa +aaa +aaa +aaa +aaa +aaa +bqT +bvG +bwU +bux +bux +bux +bux +bux +bFg +bGV +bIx +bKd +bLw +bNs +bNs +bNs +bSt +bUl +bWo +bXV +bZv +cbl +ccR +bvG +cgc +bux +cjm +cle +cnd +coQ +cql +csg +coQ +cvv +cvv +coQ +cBb +cCC +cEk +cFS +cHs +cJj +cKL +cLY +cLY +cLY +cLY +cLY +cGT +cTp +cMX +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaf +aaa +aaa +aaa +aaf +aaa +aaa +aaf +aaa +aaa +aaa +aaf +aaa +aaa +aaa +aaa +aaa +aaa +cUr +dmH +drg +dnR +doH +doH +dpU +dqD +dmH +dmK +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +dvD +dvQ +dwf +aaa +aaa +aaa +duU +aaa +aaa +aaa +dyh +dys +dvD +aaa +aaa +aaa +duU +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +dAT +dAT +dAT +dAT +dAT +dAT +dAT +dAT +dAT +dAT +dAT +dAT +dAT +dAT +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +"} +(103,1,2) = {" +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aad +aaa +aaa +aaa +aaa +aaf +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaf +aaa +aaa +aaf +aaa +aaa +aaa +aaf +aaa +aaa +aaa +aaa +aaf +aaa +aaa +aaa +aaa +bqV +brR +btr +blU +bvH +bwU +bux +bzq +bDJ +bCi +bux +bFh +bFh +bIx +bKe +bLx +bNt +bPe +bQE +bSt +bUl +bWp +bXW +bSt +bSt +bSt +bux +cgc +bux +cjb +dhn +cng +dir +coQ +coQ +coQ +coQ +coQ +coQ +cBc +cBb +cEj +cEj +cEj +cJk +cEj +coV +cNo +cOC +cPQ +coV +cSo +cKu +cMX +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaf +aaa +aaa +aaa +aaf +aaa +aaa +aaf +aaa +aaa +aaa +aaf +aaa +aaa +aaa +aaa +aaa +aaa +cUr +dmH +dni +dnS +doI +doI +dnS +dni +dmH +dmK +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +dvD +dvR +dVh +aaa +aaa +aaa +duU +aaa +aaa +aaa +dVp +dyt +dvD +aaa +aaa +aaa +duU +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +dAT +dAT +dAT +dAT +dAT +dAT +dAT +dAT +dAT +dAT +dAT +dAT +dAT +dAT +dAT +dAT +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +"} +(104,1,2) = {" +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aad +aaa +aaa +aaa +aaa +aaf +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaf +aaa +aaa +aaf +aaa +aaa +aaa +bgx +bgx +bgx +bgx +bgx +blU +blU +blU +aaa +aaa +blU +brS +brS +blU +bvI +bwU +bux +bzr +bym +bCj +bux +bux +bux +bIx +bIx +bIx +bIx +bIx +bIx +bSt +bUm +bWq +bXX +bSt +cbm +ccS +cev +cgd +bux +cjn +dhp +dhS +dwg +dwT +dyi +dUP +dUS +dwU +cqm +cqm +cBb +cBb +coV +cHt +cHt +cHt +coV +cQk +cBb +cPR +coV +cGT +cTq +cMX +aaa +aaa +aaa +aaa +cUr +cUr +cUr +cUr +czl +czl +czl +cUr +czl +czl +cUr +czl +czl +czl +cUr +cUr +cUr +cUr +cUr +cUr +cUr +cUr +dmJ +dni +dmI +doJ +doJ +dmI +dni +dxo +dmK +aaa +aaa +dtg +dtg +dtg +dtg +aaa +aaa +dvj +dvj +dvS +dwh +dvj +aaa +aaa +duU +aaa +aaa +dvj +dwh +dyu +dvj +dvj +aaa +aaa +duU +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +dAT +dAT +dAT +dAT +dAT +dAT +dAT +dAT +dAT +dAT +dAT +dAT +dAT +dAT +dAT +dAT +dAT +dAT +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +"} +(105,1,2) = {" +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aad +aaa +aaa +aaa +aaa +aWB +aWB +aWB +aWB +aWC +aZR +baF +bbt +aWB +aaa +aaa +bei +beO +bfH +bgx +bgx +bij +bjf +bjX +bgx +blV +bmX +blU +boY +boY +bqW +brT +bts +buA +bvJ +bwU +bux +bzs +bym +bym +bDF +bvG +bAQ +bux +bKf +bLy +bNu +bPf +bQF +bSt +bSt +bSt +bSt +bSt +cbn +ccT +bux +cgc +bux +cjo +dhq +diq +dwq +dwW +dyp +dUQ +dUT +dwU +cqm +cBd +cqm +cBb +coV +cHu +cHu +cHu +coV +coV +cOD +coV +coV +dTd +cTr +cUr +czl +czl +cUr +cUr +cUr +dbv +dcu +ddq +ddX +ddX +ddX +ddX +ddX +ddX +ddX +ddX +ecy +dhk +dhk +dhk +dhk +djB +dkj +dkT +cAY +cUr +dmK +dmK +dnT +doK +doK +dmK +dmK +dmK +dmK +dmK +dmK +dtg +dtJ +dug +dtg +duU +duU +duU +dvE +dvT +dwi +dvj +dvj +duU +duU +duU +dvj +dvj +dyj +dyv +dyG +dvj +dvj +duU +duU +duU +dvj +dAe +dAn +dAt +dwf +dwG +dAT +dAT +dAT +dAT +dAT +dAT +dAT +dAT +dAT +dAT +dAT +dAT +dAT +dAT +dAT +dAT +dAT +dAT +dAT +dAT +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +"} +(106,1,2) = {" +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aad +aaf +aaf +aaf +aWB +aWB +aXH +aYm +aYO +aXa +aZS +baG +bbu +aWB +bcN +bcN +bcN +beQ +bfI +bgy +bhr +bik +bjg +bjg +bkN +blV +bmY +bnU +boZ +boZ +bqX +brU +btt +buB +bvK +bwU +bux +bzt +bym +bym +bym +bvF +bAQ +bux +bKg +bLz +bNv +bPg +bPg +bux +bUn +bWr +bWr +bux +cbo +bux +bux +cgc +bux +ciW +clh +cnh +dit +dwT +dyb +dBM +dUR +dwU +cqm +cqm +cBd +cBb +cFT +cBb +cBb +cBb +cBb +cBb +cOE +cPS +cQS +cBb +cTs +cUs +cVG +cWT +cVG +cUs +dao +dbw +dcv +ddr +ddY +dek +deM +ddY +ddY +dga +ddY +deM +dek +ddY +ddr +cvw +ctT +djC +dkk +dkU +dlt +dme +dmL +dnj +dnU +doL +doL +dpV +dqE +drh +drN +dsq +dsU +dtw +dtK +duh +duw +duV +dvh +dvr +dvF +dvU +dwj +dws +dws +dwz +dwH +dxb +dws +dxR +dwj +dvU +dyH +dyS +dws +dws +dzL +dzR +dzY +dAf +dAo +dAu +dAE +dAM +dAT +dAT +dAT +dAT +dAT +dAT +dAT +dAT +dAT +dAT +dAT +dAT +dAT +dAT +dAT +dAT +dAT +dAT +dAT +dAT +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +"} +(107,1,2) = {" +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aad +aaa +aaa +aaa +aWB +aWY +aXI +aYn +aYP +aZu +aZT +baH +bbv +bci +bcO +bdy +bej +beT +bfJ +bgz +bhs +bil +bjh +bjY +bgx +blV +bmZ +ebp +bpa +bpX +bqY +brV +btu +buC +blU +bwV +bux +bux +bAG +bux +bux +bux +bux +bux +bux +bLA +bux +bAQ +bAQ +bux +bym +bym +bym +bym +bym +ccU +bym +cgc +bux +cjp +cli +cni +coT +dwU +dwU +dwU +dwU +dwU +cqm +cBe +cqm +cqm +coV +cHv +cFU +cKM +cFU +cNq +cOF +cPT +cQT +cFU +cTt +cUt +cVH +cWU +cVH +cZk +dap +dbx +dcw +ddr +ddZ +ddZ +ddZ +ddZ +ddZ +ddZ +ddZ +ddZ +ddZ +ddZ +ddr +diM +diM +diM +dkl +diM +diM +diM +dmM +dnk +dnV +doM +dpu +dpu +dpu +dri +drO +dsr +dsV +dtx +dtL +dui +dux +duW +dvi +dvs +dvG +dvV +dwk +dwt +dww +dwA +dwI +dxc +dxy +dxS +dwk +dwt +dyI +dyT +dyZ +dzt +dzM +dzS +dzZ +dAg +dAp +dAv +dAF +dAN +dAT +dAT +dAT +dAT +dAT +dAT +dAT +dAT +dAT +dAT +dAT +dAT +dAT +dAT +dAT +dAT +dAT +dAT +dAT +dAT +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +"} +(108,1,2) = {" +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aag +aaa +aaa +aaa +aWB +aWZ +aXJ +aYo +aXJ +aXa +aZU +baI +aXM +bcj +bcP +bdz +ben +beR +bfK +bgy +bgy +bgy +bgy +bgx +bgx +blW +blW +bnW +blY +bpY +bqZ +brW +btv +buD +blU +bwW +bym +bym +bAH +bCk +bCr +bFi +bGW +bIz +bCr +bCr +bCr +bCr +bCr +bCr +bCr +bCr +bCr +bCr +bCr +ccV +bCr +cge +bux +cjq +clj +cnj +coV +cqn +csh +ctT +cvw +coV +coV +coV +coV +coV +coV +cHw +cBb +cKN +cKN +cNr +cKN +cKN +cQU +cBb +cTu +cTu +cTu +cTu +cTu +cZl +daq +dby +dcx +ddr +ddZ +ddZ +ddZ +ddZ +ddZ +ddZ +ddZ +ddZ +ddZ +ddZ +din +diN +djn +djD +dkm +dkV +dlu +diM +diM +dnk +dnW +doN +dpv +dpW +dqF +drj +dpW +dqF +doX +dty +dtL +duj +duy +duU +dvj +dvt +dvj +duU +dvj +dvj +dvj +duU +dwh +dxd +dxd +dwh +dyk +dyw +dyJ +dwh +dza +dza +dwh +duU +dvj +dAh +dAn +dAw +dxU +duU +dAT +dAT +dAT +dAT +dAT +dAT +dAT +dAT +dAT +dAT +dAT +dAT +dAT +dAT +dAT +dAT +dAT +dAT +dAT +dAT +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +"} +(109,1,2) = {" +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaf +aaa +aaa +aaa +aWB +aXa +aXa +aXa +aXa +aXh +aZV +baJ +bbw +bck +bcQ +bdA +bel +beS +bfL +bcR +bht +bim +bji +bcN +bkO +blX +blW +bnX +bpb +bpZ +bra +brX +btw +buE +bvL +bwX +byn +byn +bAI +bCl +bDG +bDG +bDG +bDG +bDG +bDG +bym +bym +bQG +bSv +bUo +bWs +bDL +bZw +bym +ccW +cew +cgf +chF +cjr +clk +cnk +coW +cqo +cqo +cqo +cqo +cqo +cqo +cqo +cqo +cqo +cFU +cHx +cJl +cKN +cMa +cNs +cOG +cKN +cHw +cSq +cTu +cUu +cTu +cWV +cTu +cZm +daq +dbz +dcy +ddr +ddZ +ddZ +ddZ +ddZ +ddZ +ddZ +ddZ +ddZ +ddZ +ddZ +dio +diM +djo +djE +dkn +dkW +djs +dmf +dmN +dnl +dnX +doO +doO +doP +doP +doO +doP +doP +doO +doO +dtG +duk +dtW +dtg +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +dwJ +dxe +dxz +dxT +duU +duU +duU +dwJ +dzb +dzu +dxT +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +dAT +dAT +dAT +dAT +dAT +dAT +dAT +dAT +dAT +dAT +dAT +dAT +dAT +dAT +dAT +dAT +dAT +dAT +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +"} +(110,1,2) = {" +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aae +aaf +aaa +aaa +aaa +aWC +aXb +aXK +aYp +aYQ +aZv +aZW +baK +bbx +aXh +bcR +bcR +bcR +beU +bfM +bgA +bhu +bin +bjj +bcN +bkP +blY +bna +bnY +bnY +bqa +brb +brY +btx +brb +brb +brb +brb +brb +bwU +bym +bDG +bFj +bGX +bIA +bKh +bDG +bux +bux +bux +bux +bGZ +bGZ +bGZ +bux +bux +bux +bux +bux +chG +cjs +cll +cnl +chG +coV +coV +coV +coV +coV +czl +czl +czl +coV +coV +coV +coV +cKN +cMb +cNs +cOH +cKN +cQV +cSr +cTu +cUv +cTu +cWW +cTu +cZn +daq +dbA +dcy +ddr +ddZ +ddZ +ddZ +ddZ +ddZ +ddZ +ddZ +ddZ +ddZ +ddZ +dip +diO +djp +djF +ecA +dkX +dlv +dmg +dmO +dnk +dnY +doP +dpw +dpX +dqG +drk +drP +dss +dsW +doO +dtM +dul +duz +dtG +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +dwK +dxf +dxA +dxU +aaa +aaa +aaa +dwK +dzc +dzv +dxU +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +dAT +dAT +dAT +dAT +dAT +dAT +dAT +dAT +dAT +dAT +dAT +dAT +dAT +dAT +dAT +dAT +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +"} +(111,1,2) = {" +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aad +aaa +aaa +aaa +aWD +aXc +aXL +aXL +aYR +aXL +aXL +baL +bby +bcl +bcS +bdB +bem +bkz +bfN +bcR +bcR +bcR +bcR +bcN +bkQ +blZ +blW +blV +blV +blV +brb +brZ +bty +buF +bvM +bwY +byo +brb +bAJ +bCm +bDH +bFk +bFk +bIB +bKi +bDG +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +bLC +chH +cjt +clm +cnm +coX +bLC +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +cKN +cMc +cNt +cOI +cKN +cQW +cPS +cTu +cUw +cVI +cWX +cTu +cSu +dar +cSu +cSu +ddr +ddZ +ddZ +ddZ +ddZ +ddZ +ddZ +ddZ +ddZ +ddZ +ddZ +ddr +diM +djq +djs +dkp +djs +djs +dmh +dmO +dnm +dnZ +doQ +dpx +dpY +dqH +drl +drQ +dpx +dsX +doP +dtN +dul +duA +dtg +aaf +aaf +aaf +aaf +aaf +beN +aaf +aaa +dwL +dxg +dxB +dvD +aaa +aaa +aaa +dvD +dzd +dzw +dwL +aaa +aaa +aab +aaa +aaa +aaa +aaa +aaa +aaa +dAT +dAT +dAT +dAT +dAT +dAT +dAT +dAT +dAT +dAT +dAT +dAT +dAT +dAT +dAT +dAT +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +"} +(112,1,2) = {" +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aab +aad +aaf +aaf +aaf +aWE +aXd +aXM +aXM +aYS +aZw +aZX +baM +bbz +bcm +bcP +bdz +beP +beR +bfO +bgB +bhv +bio +bjk +bcN +bjr +bjr +bjr +bjr +bpc +bjr +brb +bsa +btz +buG +bvN +bvN +bvN +brb +bAK +bCn +bDG +bFl +bGY +bIC +bDG +bDG +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +bLC +chI +cju +cll +cnn +cns +bLC +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +cKN +cKN +cNu +cOJ +cKN +cQX +cSs +cTu +cUx +cVJ +cWY +cYj +cZo +das +dbB +dcz +ddr +ddZ +ddZ +ddZ +ddZ +ddZ +ddZ +ddZ +ddZ +ddZ +ddZ +ddr +diP +diP +djG +dkq +dkY +dkY +dkY +dmP +dnn +doa +doR +dpy +dpZ +dqI +drm +drR +dss +dsY +doP +dtO +dum +duB +dtg +aaa +aaa +aaa +aaa +aaf +aaa +aaa +dvH +dvH +dvH +dvH +dvH +dvH +dvH +dvH +dvH +dvH +dvH +dvH +dvH +dvH +dvH +dvH +dvH +aaa +aaa +aaa +dAT +dAT +dAT +dAT +dAT +dAT +dAT +dAT +dAT +dAT +dAT +dAT +dAT +dAT +dAT +dAT +dAT +dAT +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +"} +(113,1,2) = {" +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aad +aaa +aaa +aaa +aWF +aXe +aXL +aXI +aYT +aZx +ebl +baN +bbA +bcn +bcT +bdA +bel +beV +bfP +bcR +bhw +bip +bjl +bcR +bkR +bma +bnb +bnZ +bpd +bqb +brb +bsb +btA +buH +bvO +bwZ +byp +brb +bAL +bux +bDG +bDG +bDG +bDG +bDG +aaa +aaa +aaa +aaa +aaa +aaa +bLB +bLB +bLC +bLC +bLC +bLB +bLB +bLB +cjv +cll +cno +bLB +cqp +cqp +ctU +ctU +ctU +cqp +cqp +aaa +aaa +aaa +aaa +aaa +aaa +cKN +cKN +cKN +cKN +cHw +cBb +cTu +cUy +cVK +cWZ +cTu +cTw +dat +dbC +dcA +ddr +ddZ +ddZ +ddZ +ddZ +ddZ +ddZ +ddZ +ddZ +ddZ +ddZ +ddr +diQ +djr +djH +dkr +djs +dlw +dmi +dmQ +dno +dob +doP +dpz +dpX +dqJ +drn +drS +dst +dss +doP +dtP +dul +duC +dtG +aaa +aaa +aaa +dvH +dvH +dvH +dvH +dvH +dvH +dvH +dvH +dvH +dvH +dvH +dvH +dvH +dvH +dvH +dvH +dvH +dvH +dvH +dvH +dvH +aaa +aaa +dAT +dAT +dAT +dAT +dAT +dAT +dAT +dAT +dAT +dAT +dAT +dAT +dAT +dAT +dAT +dAT +dAT +dAT +dAT +dAT +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +"} +(114,1,2) = {" +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aWG +aXf +aXL +aXL +aYU +aXL +aXL +baL +bbB +aXh +bcR +bcR +bcR +beW +bfQ +bcR +bcR +bcR +bcR +bcR +bkS +bmb +bnc +boa +bpe +bqc +brb +bsc +btz +buG +bvN +bvN +byq +brb +bAM +bux +bDI +bFm +bux +aaa +aaa +aaa +aab +aaa +aaa +bLC +bLC +bLB +bXY +bZx +cbp +ccX +cex +cgg +chJ +bUw +cll +bUw +coY +cqq +csi +ctV +cvx +cxy +csi +cqp +ctU +ctU +aaa +aaa +aab +aaa +aaa +aaa +coV +cPU +cQa +cPU +cTu +cTu +cTu +cTu +cYk +cZp +dat +dbD +dbD +dds +ddZ +ddZ +ddZ +ddZ +ddZ +ddZ +ddZ +ddZ +ddZ +ddZ +ddr +diR +diR +djI +dks +djs +dlx +dlx +diM +dnp +doc +doP +dpA +dpX +dqK +dro +drT +dsu +dsZ +doO +dtQ +dul +duD +duX +aaa +aaa +dvH +dvH +dvH +dvH +dvH +dvH +dvH +dvH +dvH +dvH +dvH +dvH +dvH +dvH +dvH +dvH +dvH +dvH +dvH +dvH +dvH +dvH +aaa +aaa +dAT +dAT +dAT +dAT +dAT +dAT +dAT +dAT +dAT +dAT +dAT +dAT +dAT +dAT +dAT +dAT +dAT +dAT +dAT +dAT +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +"} +(115,1,2) = {" +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aag +aaa +aaa +aaa +aWB +aXg +aXN +aYq +aYV +aZy +aZZ +baO +bbC +bco +bcU +bdC +beo +beX +bfR +bgC +bhx +biq +bjm +bjZ +bkT +bmc +bnd +bmb +bpf +bqd +brb +bsd +btB +buI +bvP +bvP +bvP +brb +bwU +bCo +bym +bFn +bux +aaa +aaa +aaa +aaa +aaa +bLC +bLC +bUp +bWt +bXZ +bZy +cbq +ccY +ccY +ccY +chK +bUw +cll +bUw +chK +cqr +cqr +ctW +cvy +cqr +cqr +cBf +cCD +ctU +ctU +aaa +aaa +aaa +aaa +aaa +coV +cPV +cQY +cPU +cSu +cUz +cVL +cXa +cYl +cZq +dau +dbE +dcB +ddr +ddZ +ddZ +ddZ +ddZ +ddZ +ddZ +ddZ +ddZ +ddZ +ddZ +ddr +diQ +djs +djJ +dkt +dkZ +dly +dmj +diM +dnq +dod +doO +doO +dqa +doO +doO +doO +doO +dta +doO +dtP +duj +duE +dtG +aaa +aaa +dvH +dvH +dvH +dvH +dvH +dvH +dvH +dvH +dvH +dvH +dvH +dvH +dvH +dvH +dvH +dvH +dvH +dvH +dvH +dvH +dvH +dvH +dvH +aaa +dAT +dAT +dAT +dAT +dAT +dAT +dAT +dAT +dAT +dAT +dAT +dAT +dAT +dAT +dAT +dAT +dAT +dAT +dAT +dAT +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +"} +(116,1,2) = {" +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aad +aaf +aaf +aaf +aWB +aXh +aXh +aXh +aXh +aXh +baa +baP +bbD +bcp +bcV +bdD +bep +beY +bfS +bgD +bhy +bir +bjn +bka +bkU +bmd +bne +bob +bpg +bqe +brc +bse +btz +buJ +brb +brb +brb +brb +bwU +bux +bIm +bCh +bux +aaa +aaa +aaa +aaa +bLC +bLC +bQH +bQI +bQJ +bYa +bZz +cbr +ccZ +bQJ +cgh +chL +cjw +cll +cnp +chL +cqs +csj +ctX +cvz +cxz +czm +csj +cCE +cEl +ctU +ctU +aaa +aaa +aaa +aaa +coV +cPW +dFL +cRd +cSu +cUA +cVM +cXb +cYl +cZq +dat +dbF +dcC +ddr +ddZ +ddZ +ddZ +ddZ +ddZ +ddZ +ddZ +ddZ +ddZ +ddZ +ddr +diS +diS +djI +dku +djs +dmp +dmp +diM +dnr +doe +doS +dpB +dqb +dqL +drp +drU +dsv +dtb +dtz +dtR +dun +duF +dtg +aaa +aaa +dvH +dvH +dvH +dvH +dvH +dvH +dvH +dvH +dvH +dvH +dvH +dvH +dvH +dvH +dvH +dvH +dvH +dvH +dvH +dvH +dvH +dvH +dvH +aaa +dAT +dAT +dAT +dAT +dAT +dAT +dAT +aaa +aaa +aaa +aaa +aaa +aaa +dAT +dAT +dAT +dAT +dAT +dAT +dAT +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +"} +(117,1,2) = {" +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aad +aaa +aaa +aaa +aWB +aXi +aXh +aYr +aYW +aXh +bab +baL +bbE +aXh +aXh +aXh +aXh +aXh +aXh +bgE +bhz +bis +bjm +bkb +bkV +bme +bnf +boc +bph +bqf +brb +bsf +btC +buG +bvQ +bvN +byr +brb +bwU +bux +bux +bux +bux +aaa +aaa +aaa +bLC +bLC +bQH +bQI +bSw +bSw +bYb +bZA +cbs +cda +cey +cgi +chM +cjx +cln +cnq +coZ +cqt +csk +csk +cvA +cxA +czn +cuh +cuh +cCE +cEl +ctU +ctU +aaa +aaa +aaa +coV +cQZ +cRa +cPU +cSu +cUB +cVN +cXc +cYm +cZr +dav +cTw +dcD +ddr +ddY +ddY +ddY +dfb +dfC +ddY +dfb +ddY +ddY +ddY +ddr +diT +djt +djK +dkv +dkv +dlA +dmk +diM +dns +dof +doT +dpB +dqc +dqM +drq +dqc +dqc +dtc +dpB +dtS +dul +duG +dtg +aaa +aaa +dvH +dvH +dvH +dvH +dvH +dvH +dvH +dvH +dvH +dvH +dvH +dvH +dvH +dvH +dvH +dvH +dvH +dvH +dvH +dvH +dvH +dvH +dvH +aaa +dAT +dAT +dAT +dAT +dAT +dAT +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +dAT +dAT +dAT +dAT +dAT +dAT +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +"} +(118,1,2) = {" +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aad +aad +aaa +aaa +aaa +aWB +aXj +aXO +aXj +aXj +aZz +bac +baQ +bbF +aXL +bcW +bdE +beq +beZ +bcW +bgF +bhA +bit +bjm +bkc +bkW +bkZ +bng +bkZ +bkZ +bqg +brb +bsg +btD +buK +buP +bxa +bys +brb +bwU +bCp +bDK +bzp +bGZ +aaa +aaa +aaa +bLC +bPh +bQI +bSw +bUq +bWu +bYc +bZB +cbt +cdb +cez +cgj +chN +cjy +clo +cnr +chN +cqu +csl +ctY +cvB +cxB +czo +cBg +cCF +cuh +cCE +cHy +ctU +aaa +aaa +aaa +czl +cPY +cRb +cPU +cSu +cUC +cVO +cXd +cYl +cZq +dat +cTw +cTw +ddt +dea +del +deN +dfc +dfD +dgb +dfc +dgY +del +dhM +ddr +diU +djs +djL +djs +dla +dlB +dml +diM +dnt +dog +doU +dpC +dqd +dqN +drr +drV +dsw +dtd +dpB +dtT +dul +duH +dtg +aaa +aaa +dvH +dvH +dvH +dvH +dvH +dvH +dvH +dvH +dvH +dvH +dvH +dvH +dvH +dvH +dvH +dvH +dvH +dvH +dvH +dvH +dvH +dvH +dvH +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +"} +(119,1,2) = {" +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaf +aaf +aaa +aaa +aaa +aaa +aWB +aWB +aWB +aYs +aYX +aXh +bad +baR +bbG +bcq +bcX +bdF +ber +bfa +bfT +bgG +bhB +biu +bjo +bkd +bkX +bmf +bnh +bod +bpi +bqh +brb +bsh +btz +buL +brb +brb +brb +brb +bwU +bym +bym +bym +bGZ +aaa +aaa +bLB +bLB +bPi +bQJ +bSw +bUr +bWv +bWw +bZC +cbu +bWw +ceA +cgk +cgk +cjz +clp +cns +bLB +bWz +bWz +bWz +bWz +bWz +bWA +cBh +cCG +cuh +csj +cHz +cqp +cqp +aaa +aaa +czl +ecr +cRc +cSt +cSu +cUD +cVP +cXe +cYl +cZq +daw +cZo +dcE +ddu +deb +dem +deO +dfd +dfE +dgc +dgC +dgZ +dhl +dYP +ddr +diV +djs +djM +djs +dlb +dlC +dmj +diM +dnu +doh +doV +dpB +dqc +dqc +dqc +drW +dqc +dtc +dpB +dtU +dum +duI +dtG +aaa +aaa +dvH +dvH +dvH +dvH +dvH +dvH +dvH +dvH +dvH +dvH +dvH +dvH +dvH +dvH +dvH +dvH +dvH +dvH +dvH +dvH +dvH +dvH +dvH +aaa +aaa +aaa +aaa +dAU +dAU +dAU +dAU +aaa +dAU +dAU +dAU +dAU +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +"} +(120,1,2) = {" +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aad +aaa +aaa +aaa +aaa +aWn +aWn +aWn +aWn +aWn +aWn +aWn +bae +bak +bak +bcr +bcr +bcr +bcr +bcr +bcr +bcr +bhC +biv +bjp +bke +bkY +bmg +bni +bmf +bkZ +bqi +brb +bsi +btE +buH +bvR +bvN +byr +brb +bwU +bym +bDL +bFo +bGZ +aaa +aaa +bLB +bNw +bPh +bQK +bSx +bUs +bWw +bWw +bZD +ebP +bWw +ceB +cgl +cgk +cgk +bYh +bWA +bWA +cqv +csm +ctZ +cDQ +cxC +bWA +bWA +cCH +cEm +cFV +cHy +cJm +cqp +aaa +aaa +czl +cQa +cPU +cAY +cSu +cUE +cVQ +cXf +cYn +cZs +dax +cTw +dcF +cSu +ddr +ddr +ddr +dfe +dfF +dgd +dgD +ddr +dhm +dhm +ddr +diM +dju +djN +djs +dlz +dlD +dmm +diM +dnv +doi +doW +dpD +dqe +dqO +drs +drX +dsx +dte +dtz +dtT +dul +duD +duX +aaa +aaa +dvH +dvH +dvH +dvH +dvH +dvH +dvH +dvH +dvH +dvH +dvH +dvH +dvH +dvH +dvH +dvH +dvH +dvH +dvH +dvH +dvH +dvH +aaa +aaa +aaa +aaa +dAU +dAU +dAU +dAU +dAU +dAU +dAU +dAU +dAU +dAU +dAU +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +"} +(121,1,2) = {" +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aad +aaf +aaf +aaf +aWn +aWn +aWn +aXk +aXP +aYt +aYY +aZA +baf +baS +baS +bcr +bcY +bdG +bes +bfb +bfU +bgH +bhD +biw +bjq +bkf +bkZ +bmh +bnj +boe +bpj +bqj +brb +bsj +btF +buK +buP +bxb +byt +brb +bAN +bAQ +bux +bux +bux +aaa +aaa +bLC +bNx +bPj +bQL +bSy +bUt +bWx +bYd +bZE +cbw +bWw +ceC +cgl +chO +ceE +clq +cnt +cgn +cqw +csn +cua +cvD +cxD +czp +cBi +cCI +cEn +cFW +cHA +cJn +ctU +aaa +aaa +coV +cQa +cAY +cSu +cSu +cUF +cSu +cSu +cYo +cTw +day +dbG +dbG +ddv +dec +den +cSu +ddr +dfG +dge +ddr +dha +dVa +dhO +dVf +diW +djs +djL +dkw +dld +dlD +dmn +diM +dnw +doj +doX +dpE +dpE +dpE +dpE +dpE +dpE +dpE +dtA +dtV +dul +duC +dtG +aaa +aaa +aaa +dvH +dvH +dvH +dvH +dvH +dvH +dvH +dvH +dvH +dvH +dvH +dvH +dvH +dvH +dvH +dvH +dvH +dvH +dvH +dvH +dvH +aaa +aaa +aaa +dAU +dAU +dAU +dAU +dAU +dAU +dAU +dAU +dAU +dAU +dAU +dAU +dAU +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +"} +(122,1,2) = {" +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aad +aaa +aaa +aaa +aWn +aWn +aWH +aWN +aWN +aWN +aYZ +aWn +bag +baT +bbH +bcr +bcZ +bdH +bdH +bfc +bfV +bgI +bhE +bix +bjm +bkg +bla +bmi +bnk +bof +bpk +bqk +brb +bsk +btG +buM +brb +brb +brb +brb +bAO +bCq +bvF +bvG +bux +aaa +aaa +bLC +bNy +bPk +bQM +bSz +bUu +bWy +bYe +bZF +cbx +bWw +ceD +cgm +chP +ceE +clr +cnu +cpa +cqx +cqx +cub +cqx +cqx +cqx +cqx +cCJ +cEo +cFX +cHB +cJo +ctU +aaa +aaa +coV +cQa +cPU +cSv +cTv +cUG +cVR +cSu +cYp +cZt +daz +cTw +dcG +cZt +cTw +deo +cSu +dff +dfH +dgf +dgH +dhb +dho +dhP +dVe +dha +djs +djO +diM +dkx +dlE +dkx +diM +dnx +dok +doY +dpF +dqf +dqP +drt +drY +dsy +dpE +dtB +dtK +duo +duJ +dtg +aaa +aaa +aaa +aaa +aaf +aaa +aaa +dvH +dvH +dvH +dvH +dvH +dvH +dvH +dvH +dvH +dvH +dvH +dvH +dvH +dvH +dvH +dvH +dvH +aaa +aaa +dAU +dAU +dAU +dAU +dAU +dAU +dAU +dAU +dAU +dAU +dAU +dAU +dAU +dAU +dAU +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +"} +(123,1,2) = {" +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aWj +aWj +aWj +aWj +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaf +aaa +aaa +aaa +aWn +aWn +aWI +aXl +aXQ +aYu +aZa +aZB +bah +baU +bbI +bcs +bda +bdI +bet +bfd +bfW +bgJ +bhF +biy +bjr +bjr +blb +bmj +bnl +bjr +bjr +bjr +brb +bsl +btH +buN +bvS +bvN +byr +brb +bwU +bym +bym +bym +bux +aaa +aaa +bLC +bNz +bPl +bQN +bSA +bUv +bWx +bYf +bZG +cby +bWw +ceE +ceE +ceE +ceE +ceH +cdd +cpb +cqx +cso +cuc +cvE +cxE +cxE +cqx +dVz +cEo +cFY +cHC +cJp +ctU +aaa +aaa +coV +cQa +cPU +cSw +cTw +cUG +cVS +cXg +cYq +cZu +daA +dbH +dcH +ddw +ded +dep +deP +dfg +dfI +dgg +dgF +dha +dUZ +dhQ +dis +dha +diQ +djL +dkx +dle +dlF +dmo +diM +dny +dol +doZ +dpG +dqg +dqQ +dru +drZ +dsz +dpE +dtC +dtL +dul +dtg +dtg +aaf +aaf +aaf +aaf +aaf +beN +aaf +aaa +dwM +dxh +dxC +dxV +aaa +aaa +aaa +dxV +dze +dzx +dwM +aaa +aaa +aab +aaa +aaa +aaa +aaa +dAU +dAU +dAU +dAU +dAU +dAU +dAU +dAU +dAU +dAU +dAU +dAU +dAU +dAU +dAU +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +"} +(124,1,2) = {" +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aWj +aWj +aWj +aWj +aWj +aWj +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaf +aaf +aaa +aaa +aaa +aWn +aWn +aWJ +aXm +aWN +aYv +aZb +aWn +bai +baV +bbJ +bct +bdb +bdJ +bdH +bdH +bfX +bgK +bhG +biz +bjs +bkh +blc +bmk +bnm +bog +bju +bql +brb +bsm +btI +buO +buP +bxc +byu +brb +bAP +bCr +bCr +bFp +bux +aaa +aaa +bLB +bNA +bNA +bQJ +bSA +dNg +bWx +bWw +bWw +cbz +bWw +ceF +cgn +chQ +cdc +cls +cdd +cpc +cqx +csp +cud +cvF +cxF +czq +cqx +cCK +cEp +csj +cHD +cHD +cqp +aaa +aaa +coV +cQa +cRd +cSu +cTx +cUH +cVT +cSu +cYr +cZv +daz +cTw +dcI +cZv +cTw +deq +cSu +dfg +dfJ +dgh +dhN +dha +dVc +dhR +dVg +dha +djs +djL +diM +dlf +dlG +dYr +diM +dnz +dom +dpa +dpF +dqh +dqR +drv +dsa +dsA +dpE +dty +dtL +dul +dtA +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +dwN +dxi +dxD +dxW +aaa +aaa +aaa +dwN +dzf +dzy +dxW +aaa +aaa +aaa +aaa +aaa +aaa +aaa +dAU +dAU +dAU +dAU +dAU +dAU +dAU +dAU +dAU +dAU +dAU +dAU +dAU +dAU +dAU +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +"} +(125,1,2) = {" +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aWj +aWj +aWj +aWj +aWj +aWj +aWj +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaf +aaa +aaa +aaa +aWn +aWn +aWn +aWn +aXn +aXR +aYw +aWn +aWn +baj +baW +bbK +bcu +bdc +bdK +beu +bfe +bfY +bgL +bhH +biA +bjt +bki +bld +bld +bnn +boh +bju +bju +brb +bsn +btJ +buP +brY +brb +brb +brb +bAQ +bux +bym +bFq +bux +bID +bID +bLB +bNB +bNA +bQO +bSB +bUx +bWz +bYg +bZH +cbA +cdc +ceG +bWA +bWA +bWA +bWA +bWA +bWA +cqy +csq +cue +cvG +cxG +czr +cqx +cCL +cEq +cFZ +cHD +csi +cqp +ctU +ctU +coV +cQa +cRe +cSu +cTy +cUI +cVU +cSu +cYs +cZw +daB +dbI +dbI +ddx +cTw +der +cSu +dfh +dfK +cUL +dXT +dha +dhr +dVd +dhr +dha +djv +djP +diM +dlg +dlH +dmq +diM +dnA +dom +dpb +dpH +dpF +dpF +drw +dpF +dpF +dtf +dtD +dtW +duk +dtg +duY +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +dwO +dxj +dxE +dxX +duY +duY +duY +dwO +dzg +dzz +dxX +aaa +aaa +aaa +aaa +aaa +aaa +aaa +dAU +dAU +dAU +dAU +dAU +dAU +dAU +dAU +dAU +dAU +dAU +dAU +dAU +dAU +dAU +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +"} +(126,1,2) = {" +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aWj +aWj +aWj +aWj +aWj +aWj +aWj +aWj +aWj +aWj +aWj +aWj +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aad +aaa +aaa +aaa +aWn +aWq +aWv +aWK +aXm +aWN +aYx +aZc +aWn +bak +ebm +bbL +bcv +bcr +bdL +bev +bff +bfZ +bcr +bhI +biB +bju +bkj +ble +bml +bno +boi +bju +bqm +brd +bso +btK +buQ +bvT +bxd +byv +bzu +bux +bux +bux +bFr +bHa +bIE +bKj +bLD +bNC +bPm +bQP +bSC +bUy +bWA +bWA +bZH +cbB +cdd +ceH +bWA +chR +chR +chR +chR +chR +cqy +csr +cuf +eck +csr +csr +cBj +cCM +cEr +cGa +cHE +cJq +cqp +cMd +cNv +cOK +cQb +coV +cSu +cSu +cSu +cSu +cSu +cYt +cYt +daC +dbJ +dcJ +cYt +cYt +cSu +cSu +dfi +dfL +cSz +dfi +dfi +dVb +dhT +diu +diX +dbK +dhT +diM +diM +diM +diM +dmR +dnB +dom +doY +dpI +dqi +dqi +drx +dqi +dsB +dtg +dtC +dtL +dul +duK +duZ +dvk +dvu +dvk +duY +dvk +dvk +dvk +duY +dwP +dxk +dxk +dwP +dyl +dyx +dyK +dwP +dzh +dzh +dwP +duY +dvu +dvk +duY +dvk +dxV +dAO +dAU +dAU +dAU +dAU +dAU +dAU +dAU +dAU +dAU +dAU +dAU +dAU +dAU +dAU +dAU +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +"} +(127,1,2) = {" +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aWj +aWj +aWj +aWj +aWj +aWj +aWj +aWj +aWj +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aad +aaa +aaa +aaa +aWn +aWn +aWw +aWL +aXo +aXS +aYy +aZd +aZC +bal +baY +bbM +bcw +bdd +bdM +bcw +bcw +bcw +bgM +bhJ +biC +bjv +bkk +blf +bmm +bnp +boj +bpl +bqn +bre +bsp +btL +bsp +bvU +bxe +byw +bzv +bAR +bCs +bDM +bFs +bHb +bIF +bKk +bLE +bND +bND +bQQ +bSD +bUz +bKj +bWA +bZI +cbC +cdd +ceH +bWA +chR +chR +chR +chR +chR +cqz +csj +cug +cvI +cxH +csj +cBk +cCN +cEs +cGb +csl +csl +cKO +cMe +cNw +cOL +cQc +cRf +cSx +cTz +cUJ +cVV +cXh +cYu +cZx +daD +dbK +dcK +ddy +ddy +des +deQ +dfj +dfM +dgi +dgI +dhc +cTB +dhU +div +dfk +dfk +dhU +dky +dlh +dfk +dmr +dmS +dfk +don +dfk +dpJ +dfk +dfk +dfk +dfk +dsC +dth +dtx +dtX +dup +duL +dva +dvl +dvv +dvv +dvW +dvx +dvx +dwx +dwB +dwQ +dxl +dxF +dxY +dvx +dvx +dvx +dyU +dxF +dzA +dzN +dzT +dAa +dwS +dvk +dAx +dAG +dxV +dAU +dAU +dAU +dAU +dAU +dAU +dAU +dAU +dAU +dAU +dAU +dAU +dAU +dAU +dAU +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +"} +(128,1,2) = {" +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aWj +aWj +aWj +aWj +aWj +aWj +aWj +aWj +aWj +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aad +aaf +aaf +aWm +aWn +aWn +aWx +aWM +aXp +aXT +aYz +aZe +aZD +bam +baZ +bbN +bcx +bde +bcx +bew +bcx +bcx +bgN +bhK +biD +bjw +bkl +blg +bmn +bnq +bok +bpm +bqo +brf +bsq +btM +buR +bvV +bxf +byx +bzw +bAS +bCt +bDN +bFt +bHc +bIG +bHc +bHc +bHc +bHc +bHc +bSE +bUA +bWB +bYh +bZJ +cbD +cde +ceI +bWA +chR +chR +chR +chR +chR +cqA +csj +cuh +cvJ +cxI +cvA +cBl +csk +cEt +csk +csk +csk +cKP +cMf +cNx +cMf +cQd +cRg +cSy +cTA +cUK +cVW +cUK +cUK +cZy +daE +cUK +dcL +cUK +cUK +cVW +cUK +cUK +cZy +dgj +cTA +dhd +cTA +dhV +cVW +cUK +cUK +dhV +cZy +cUK +dlI +dms +dcL +cUK +doo +dpc +dpc +dpc +dqS +dry +cUK +cTA +dti +dtE +dtY +duq +duM +dvb +dvm +dvw +dvI +dvw +dvw +dvw +dvw +dwC +dwR +dvw +dxG +dxZ +dvw +dyy +dyL +dyV +dzi +dzB +dyV +dzU +dAb +dAi +dAq +dAy +dAH +dAP +dAU +dAU +dAU +dAU +dAU +dAU +dAU +dAU +dAU +dAU +dAU +dAU +dAU +dAU +dAU +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +"} +(129,1,2) = {" +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aWj +aWj +aWj +aWj +aWj +aWj +aWj +aWj +aWj +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aad +aaa +aaa +aaa +aWn +aWn +aWy +aWN +aXq +aXU +aYA +aZf +aZC +ban +bba +bbO +bcy +bdf +bdN +bex +bfg +bga +bgO +bhL +biE +bjx +bkm +blh +bmo +bnr +bol +bpn +bqp +brf +bsr +btN +buS +bvW +bxg +bxg +bzx +bAT +bCu +bDO +bFu +bHd +bIH +bKl +bLF +bNE +bNE +bQR +bSF +bUB +bWC +bWD +bWD +bWD +bWD +ceH +bWA +chR +chR +chR +chR +chR +cqB +csj +csj +csj +cxJ +csj +cBk +cCO +cEu +cGc +csl +csl +cKQ +cMg +cNy +cOM +cQe +cRh +cSz +cTB +cUL +cVX +cXi +cYv +cZz +daF +cUL +dcM +ddz +dee +det +deR +dfk +dfN +dgk +dgJ +dhe +dht +dhW +diw +diY +djw +djQ +dkz +dli +dlJ +dmt +dmT +dVA +dop +dpd +dpK +dqj +dqj +drz +dsb +dsD +dtj +dtw +dtK +duo +duN +dvc +dvn +dvx +dvJ +dvX +dvx +dvx +dvx +dwD +dwS +dxm +dxH +dya +dvx +dvx +dyM +dyW +dzj +dzC +dzO +dzV +dvx +dAj +duY +dAz +dAI +duY +dAU +dAU +dAU +dAU +dAU +dAU +dAU +dAU +dAU +dAU +dAU +dAU +dAU +dAU +dAU +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +"} +(130,1,2) = {" +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aWj +aWj +aWj +aWj +aWj +aWj +aWj +aWj +aWj +aWj +aWj +aWj +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aad +aaa +aaa +aaa +aWn +aWr +aWz +aWO +aXr +aXV +aYB +aZg +aWn +bao +bbb +bao +bcz +bdg +bdO +bey +bfh +bgb +bdg +bhI +biF +bju +bkn +bli +blc +bno +bom +bju +bqm +brg +bss +btO +buU +bxh +bxh +bxh +bxh +bxh +bvZ +bvZ +bFv +bHa +bII +bKm +bLG +bNF +bPm +bQP +bSG +bQP +bWD +bWD +bZK +cbE +bWD +ceH +bWA +chR +chR +chR +chR +chR +cqp +css +cui +cvK +cvK +czs +cBm +cCM +cEr +cGa +cHE +cJr +cqp +cMh +cNz +cOK +cQf +cpk +cSA +cSA +cUM +cSA +cSA +cYw +cZA +daG +dbL +cYw +ddA +ddA +cYw +deS +dfk +cUL +dgl +dfk +deT +dhu +dhu +dix +dix +dhu +dhu +dix +dix +dlK +dmu +dmU +dmU +dmU +dmU +dmU +dqk +dqk +drA +dsc +dsc +dtg +dtF +dtL +dul +duO +dvd +dvk +dvu +dvk +duY +dvk +dvk +dvk +duY +dvk +dxn +dxI +dvk +dym +dyz +dyN +dvk +dzk +dCP +dvk +duY +dvu +dvk +duY +dvk +dxV +duY +dAU +dAU +dAU +dAU +dAU +dAU +dAU +dAU +dAU +dAU +dAU +dAU +dAU +dAU +dAU +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +"} +(131,1,2) = {" +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aWj +aWj +aWj +aWj +aWj +aWj +aWj +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaf +aaa +aaa +aaa +aWo +aWo +aWo +aWo +aXs +aXW +aYC +aWo +aWo +bap +bbc +bbP +bao +bdh +bdP +bez +bfi +bgc +bgP +bhM +biG +bjy +bko +blj +blj +bns +bon +bpo +bqq +brh +bsu +btQ +buV +bxj +clf +cnf +cOB +bxh +bvZ +bxi +bDT +bvZ +bID +bID +bLH +bNG +bNH +bQS +bSH +bUC +bWD +bYi +bZL +cbF +bWD +ceH +bWA +bWA +bWA +bWA +bWA +cpd +cpd +cst +cuj +cvL +cxK +cpd +cpd +cCP +cEv +cGd +cHF +czB +chZ +ctU +ctU +cpk +cQg +cRi +cSA +cTC +cUN +cXj +cSA +cYx +cZB +daH +dbM +dcN +ddB +def +deu +deT +deU +dfO +dgm +deU +deT +dhv +dhx +diy +diZ +dhx +diZ +dkA +dhu +dlL +dmv +dmU +dnD +dmU +dpe +dmU +dql +dql +drB +dsd +dsE +dtk +dtg +dtW +duk +dtg +duY +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +dVj +dzl +dxJ +dvk +duY +duY +duY +dvk +dzD +dzE +dVj +aaa +aaa +aaa +aaa +aaa +aaa +aaa +dAU +dAU +dAU +dAU +dAU +dAU +dAU +dAU +dAU +dAU +dAU +dAU +dAU +dAU +dAU +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +"} +(132,1,2) = {" +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aWj +aWj +aWj +aWj +aWj +aWj +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aae +aaa +aaa +aaa +aaa +aWo +aWo +aWP +aXt +aXX +aYD +aZh +aWo +baq +bbd +bbQ +bao +bdi +bdQ +beA +bdQ +bgd +bgQ +bhN +biH +bjs +bkp +blk +bmp +blk +boo +bju +bju +bri +bsv +btR +bvX +bzy +clg +coU +dcS +bxh +bCv +bxi +bFw +bvZ +aaa +aaa +bLH +bNH +bNH +bNE +bSI +bNE +bWE +bYj +bZM +cbG +bWD +ceJ +cgn +chS +cgn +clt +cnv +cpd +cqC +csu +cuk +cvM +cxL +czt +cpd +cnD +cEw +cjD +cHF +cHF +chZ +aaa +aaa +cpk +cQg +cRj +cSA +cTD +cUO +cVZ +dbN +cYy +cZC +daI +ddD +dcO +ddC +cXo +dev +deT +dfl +dfP +dgn +dgK +dhf +dhw +dhY +diB +dja +dhY +djU +dkB +dhu +dlM +dmw +dmU +dnE +dmU +dpf +dmU +dqm +dqT +drC +dqT +dsF +dtl +dtA +dtL +dul +dtA +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +dVj +dxp +dxK +dVj +aaa +aaa +aaa +dVj +dzm +dzF +dVj +aaa +aaa +aaa +aaa +aaa +aaa +aaa +dAU +dAU +dAU +dAU +dAU +dAU +aaa +aaa +aaa +dAU +dAU +dAU +dAU +dAU +dAU +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +"} +(133,1,2) = {" +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aWj +aWj +aWj +aWj +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aag +aaa +aaa +aaa +aWo +aWo +aWQ +aXu +aXY +aYE +aZi +aWo +bar +bbe +bbR +bcA +bdj +bdR +beB +bfj +bge +bgR +bhO +biI +bjz +bkq +bll +ebn +ebo +bkq +bkq +bqr +bri +btP +buT +bvY +bxj +cne +cJZ +dfr +bxh +byJ +bzz +bDT +bvZ +aaa +aaa +bID +bNI +bPn +bQT +bSJ +bUD +bWF +bYk +bZM +cbH +bWD +ceK +bWE +bWD +bWD +bZJ +cnw +cpe +cqD +csv +cul +cvN +cxM +czu +cBn +cCQ +cEx +cGe +cHG +cJs +cgw +aaa +aaa +cpk +cQg +cRi +cSA +cTE +cUP +cWa +cXk +cYz +cXo +daJ +dbO +dcP +dfB +cXo +dew +deU +dfm +dfQ +dgo +dgL +deT +dhx +dib +diA +diZ +dib +djS +dkC +dix +dlN +dmx +dmU +dnF +doq +dpg +dmU +dqn +dqU +drD +dse +dsG +dtm +dtG +dtX +dum +dtg +dtg +aaf +aaf +aaf +aaf +aaf +beN +aaf +aaa +dVk +dxq +dxL +dVj +aaa +aaa +aaa +dVj +dzn +dzG +dVk +aaa +aaa +aab +aaa +aaa +aaa +aaa +dAU +dAU +dAU +dAU +dAU +dAU +aaa +aaa +aaa +dAU +dAU +dAU +dAU +dAU +dAU +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +"} +(134,1,2) = {" +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aad +aaa +aaa +aaa +aWo +aWo +aWR +aXv +aXv +aXv +aZj +aWo +bas +bbf +bbS +bao +bdk +bdQ +beC +bdQ +bgf +bdg +bhP +biJ +bjA +bkr +blm +bmr +bnu +bop +bpp +bkq +brj +bsw +btS +buW +buW +buW +buW +buW +buW +buW +bDP +bFx +bvZ +aaa +aaa +bID +bNJ +bPo +bQU +bSJ +bUE +bWG +bYl +bZN +cbI +cdf +ceL +cgo +chT +bWD +clu +cnx +cpd +cqE +csw +cum +cum +cxN +czv +cBo +cCR +cEx +cGf +cHH +cJt +cgw +aaa +aaa +cpk +cQg +cRk +cSA +ect +cUQ +cWb +cXl +cYA +cZD +daK +cXo +dcQ +cXo +cXo +dex +deU +dfn +dfR +dUY +dgM +deT +dhy +dhZ +dhy +dhy +dhy +djT +dkD +dlj +dlO +dmy +dmU +dnG +dor +dph +dpL +dqo +dqU +drE +dsf +dsH +dsH +dtG +dtL +dul +duP +dtg +aaa +aaa +aaa +aaa +aaa +aaa +aaa +dwl +dwl +dwl +dwl +dwl +dwl +dwl +dwl +dwl +dwl +dwl +dwl +dwl +dwl +aaa +aaa +aaa +aaa +aaa +aaa +dAU +dAU +dAU +dAU +dAU +aaa +aaa +aaa +dAU +dAU +dAU +dAU +dAU +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +"} +(135,1,2) = {" +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aad +aaf +aaf +aaf +aWo +aWo +aWo +aXw +aXZ +aYF +aWo +aWo +bat +bbg +bap +bao +bdl +bdS +beD +bfk +bgg +bdg +bhQ +biK +bjB +bks +bln +bms +bnv +boq +bpq +bkq +brk +bsx +bvk +buX +bwa +bxk +byy +bzA +bAV +bCw +bxi +bDT +bvZ +aaa +aaa +bID +bNK +bPp +bQV +bSK +bUF +bWD +bYm +bZO +bZO +bZO +ceM +cgp +chU +bWD +clv +cny +cpd +cqF +csx +cun +cvO +cxO +czw +cpd +cCS +cEy +cGg +cHI +cJu +cgw +aaa +aaa +cpk +cQg +cRl +cSA +cTG +cUR +cWc +cXm +cYB +cZE +daJ +dbP +dcR +ddC +cXo +dey +deU +dfo +dfS +dgq +dgN +deT +dhz +dia +dhy +djb +dhy +djT +dkE +dlk +dlP +dmz +dmU +dnH +dos +dpi +dmU +dqp +dqV +dqU +dqU +dqU +dtn +dtG +dtZ +dul +duC +dtG +aaa +aaa +aaa +aaa +aaa +dwl +dwl +dwl +dwl +dwl +dwl +dwl +dwl +dwl +dwl +dwl +dwl +dwl +dwl +dwl +dwl +aaa +aaa +aaa +aaa +aaa +aaa +dAU +dAU +dAU +dAU +dAU +aaa +aaa +aaa +dAU +dAU +dAU +dAU +dAU +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +"} +(136,1,2) = {" +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aad +aaa +aaa +aaa +aaa +aWo +aWo +aWo +aWo +aWo +aWo +aWo +bau +bao +bao +bao +bdm +bdg +bdg +bfl +bdg +bdg +bhR +biL +bjC +bkt +blo +bmt +bnw +bor +bpr +bkq +brl +bsy +btT +buW +bwb +bxl +byz +bzB +bAW +bCx +bDQ +bFy +bvi +aaa +aaa +bLH +bNL +bPq +bQW +bSL +bUG +bWD +bWD +bZP +cbJ +cdg +ceN +cgq +bWD +bWD +clw +bWA +cpd +cqG +csy +cuo +cvP +cxP +cpd +cpd +cCT +cEz +cGh +cHJ +cJv +chZ +aaa +aaa +czC +cQg +cRm +cSA +cSA +cSA +cSA +cSA +cYC +cXo +daJ +dbO +dcP +dfB +cXo +dez +deV +dfp +dfQ +dgq +dgO +deT +dhx +dic +djR +diZ +dic +dnh +dkF +dix +dlQ +dmA +dmU +dnI +dot +dpj +dmU +dqq +dqW +dqW +dqW +dsI +dqU +dtG +dtT +dul +duD +duX +aaa +aaa +aaa +aaa +dwl +dwl +dwl +dwl +dwl +dwl +dwl +dwl +dwl +dwl +dwl +dwl +dwl +dwl +dwl +dwl +dwl +dwl +aaa +aaa +aaa +aaa +aaa +aaa +dAU +dAU +dAU +dAU +aaa +aaa +aaa +dAU +dAU +dAU +dAU +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +"} +(137,1,2) = {" +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaf +aaa +aaa +aaa +aaa +aWS +aWS +aWS +aYG +aXA +aZE +aXA +bbh +bbT +bcB +bdn +bdT +beE +bfm +bgh +bgS +bhS +biK +bfg +bku +blp +bmu +bnx +bos +bps +bkq +brm +bsz +btU +buY +bwc +bxm +byA +bzC +bAX +buW +bAU +bDT +bvi +aaa +aaa +bLH +bLH +bPr +bNE +bSM +bUH +bWH +bWD +bWD +cbK +bWD +bWD +bWD +bWD +cia +clx +cnz +cpd +cpd +cpd +cpd +cvQ +cpd +cpd +cBp +cCU +cBr +cjD +cHK +chZ +chZ +aaa +aaa +czC +cQh +cRn +cSB +cTH +cUS +cWd +cXn +cYD +cZF +daL +cZF +cZF +cZF +cZF +deA +deW +dfq +dfT +dgr +dgP +dhg +dhA +diz +diC +djc +diz +djV +dkG +dll +dlR +dmB +dmU +dmU +dou +dmU +dmU +dqr +dqU +drF +dsg +dsJ +dsJ +dtA +dtP +duj +duE +dtG +aaa +aaa +aaa +aaa +dwl +dwl +dwl +dwl +dwl +dwl +dwl +dwl +dwl +dwl +dwl +dwl +dwl +dwl +dwl +dwl +dwl +dwl +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +"} +(138,1,2) = {" +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aad +aad +aaa +aaa +aaa +aWS +aXx +aXA +aYH +aXA +aZF +aXA +bbi +bbU +bcC +bdo +bcC +beF +bfn +bgh +bgT +bhT +biK +bjD +bkq +blq +bmv +bny +bot +bpt +bkq +brn +bsA +btV +buW +bwd +bxn +byB +bzD +bAY +buW +bAU +bDT +bvi +aaa +aaa +aaa +bID +bPq +bQX +bSM +bUI +bUH +bYn +bZQ +cbL +cdh +bNE +cgr +chV +cjA +cly +cnA +cpf +cqH +csz +cup +cvR +cvR +czx +cBq +cCV +cBr +cCW +cHJ +cgw +aaa +aaa +aaa +czC +cQi +cQo +cSC +csF +cUT +cWe +cXo +cYE +cZG +daM +dbQ +dbQ +ddE +deg +deB +deX +dUX +dfU +dgq +dgQ +deT +dhv +dhx +dhx +djd +djx +djW +dkH +dhu +ddz +dmC +dmU +dnJ +dov +dpk +dmU +dqs +dqX +drG +drG +drG +drG +drG +dtT +dul +duQ +dtg +aaa +aaa +aaa +aaa +dwl +dwl +dwl +dwl +dwl +dwl +dwl +dwl +dwl +dwl +dwl +dwl +dwl +dwl +dwl +dwl +dwl +dwl +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +"} +(139,1,2) = {" +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aad +aaa +aaa +aaa +aWS +aXy +aYa +aYI +aZk +aYb +aXA +bbj +bbV +bcD +bdp +bdU +beG +bfo +bgi +bgU +bhU +biM +bjE +bkv +bkv +bkv +bkv +bkv +bkv +bkv +bmC +bsB +btW +buW +bwe +bxo +byC +bzE +bAZ +buW +bAU +bDT +bvZ +aaa +aaa +aaa +bID +bID +bQY +bQX +bSM +bSM +bYo +bZR +cbM +cbM +ceO +cgs +chW +cjB +clz +cnB +chW +cqI +csA +csA +csA +cxQ +czy +cBr +cBr +cCW +cEA +cgw +cgw +aaa +aaa +aaa +cpk +cpk +cRm +cSD +csE +cpk +cTJ +cXp +cYF +cZH +daN +dbR +dUW +dbR +dbR +deC +deT +dfs +dfU +dgs +dgR +deT +dhB +dhB +diD +dje +dhB +djX +dkI +dix +dlS +dmD +dmU +dnK +dow +dnK +dmU +dqt +dqU +drG +dsh +dsK +dto +drG +dtS +dur +duG +dtg +aaa +aaa +aaa +aaa +dwl +dwl +dwl +dwl +dwl +dwl +dwl +dwl +dwl +dwl +dwl +dwl +dwl +dwl +dwl +dwl +dwl +dwl +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +dAS +dAS +dAS +dAS +dAS +dAS +dAS +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +"} +(140,1,2) = {" +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aad +aaf +aaf +aaf +aWS +aXy +aYb +aYJ +aZl +aZG +bav +bbk +bbW +bcE +bdq +bdV +beH +bfp +bgj +bgV +bhT +biK +bjF +bkv +blr +bmw +bnz +bou +bpu +bqs +bro +bsC +btV +buW +buW +buW +buW +buW +buW +buW +bAU +bDT +bvZ +aaa +aaa +aaa +aaa +bID +bID +bQY +bQX +bNE +bYp +bZS +cbN +cdi +bNE +cgt +chV +cjC +clA +cnC +chV +cjC +cjD +cuq +cvS +cxR +czz +cjD +cCW +cEA +cgw +cgw +aaa +aaa +aaa +aaa +cpk +cQj +csF +cSD +csF +cUU +cTJ +dlc +cYG +cZI +daO +cZK +dcT +ddF +cZK +deD +deY +dft +dfU +dgq +dgS +deT +dhC +did +diE +djf +diD +djY +dkJ +dix +dix +dix +dmU +dmU +dmU +dmU +dmU +dqu +dqY +drH +dsi +dsL +dtp +drG +dua +dus +duF +dtg +aaa +aaa +aaa +aaa +dwl +dwl +dwl +dwl +dwl +dwl +dwl +dwl +dwl +dwl +dwl +dwl +dwl +dwl +dwl +dwl +dwl +dwl +aaa +aaa +aaa +aaa +aaa +aaa +aaa +dAS +dAS +dAS +dAS +dAS +dAS +dAS +dAS +dAS +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +"} +(141,1,2) = {" +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaf +aaa +aaa +aaa +aWS +aXz +aYc +aYK +aZm +aZH +aXA +bbl +bbX +bcF +bdr +bdW +bbU +bfq +bgh +bgW +bhV +biN +bjG +bkv +bls +bmx +bnA +bov +bpv +bqt +brp +bsD +btX +buZ +bwf +bxp +byD +bzF +bBa +buZ +bBg +bFz +bvZ +aaa +aaa +aaa +aaa +aaa +bID +bID +bUJ +bWI +bYq +bYq +cbO +cbO +cbO +cgu +chX +cjD +clA +cnD +chX +cqJ +csB +cur +cvT +cxS +czA +cBs +cCX +cgw +cgw +aaa +aaa +aaa +aaa +aaa +cpk +cSp +csF +cSD +csF +cUV +cTJ +cXr +cYH +cZJ +daP +cZJ +cZJ +ddG +cZJ +deE +deZ +dfu +dfV +dgt +dgT +deT +dhD +die +diF +djf +diD +djY +dkH +dlm +dlT +dix +dmV +dmX +dox +dpl +dpM +dqv +dqZ +drG +dsj +dsM +dtq +drG +dtU +dum +duI +dtG +aaa +aaa +aaa +aaa +aaa +dwl +dwl +dwl +dwl +dwl +dwl +dwl +dwl +dwl +dwl +dwl +dwl +dwl +dwl +dwl +dwl +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +dAS +dAS +dAS +dAS +dAS +dAS +dAS +dAS +dAS +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +"} +(142,1,2) = {" +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaf +aaa +aaa +aaa +aWS +aXA +aXA +aXA +aZn +aXA +aXA +bbm +bbX +bbU +bbU +bdX +beI +bfr +bgk +bgX +bhW +biO +bjH +bkv +blt +bmy +bmA +bow +bmA +bqu +brq +bsE +btV +bva +bwg +bxq +bxq +bzG +bBb +buZ +bDR +bFA +bvZ +aaa +aaa +aaa +aab +aaa +aaa +bID +bID +bLH +bYr +bZT +cbP +cdj +bNG +cgv +chY +cjD +clA +cnD +cpg +cqK +csC +cus +cvU +cxT +czB +chZ +cgw +cgw +aaa +aaa +aab +aaa +aaa +aaa +cpk +cQl +cRo +cSE +cTI +cRm +cTJ +cXs +cYI +cZK +daQ +dbS +dcU +ddH +cZK +deF +deT +dfv +dfW +dgu +dgN +deT +dhE +dif +diG +djg +ecz +djZ +dkK +dix +dlU +dix +dmW +dmX +doy +dpm +dpm +dqv +dra +drI +drI +drI +drI +drI +dtQ +dul +duD +duX +aaa +aaa +aaa +aaa +aaa +aaa +aaa +dwl +dwl +dwl +dwl +dwl +dwl +dwl +dwl +dwl +dwl +dwl +dwl +dwl +dwl +aaa +aaa +aaa +aaa +aaa +aaa +aaa +dAS +dAS +dAS +dAS +dAS +dAS +dAS +dAS +dAS +dAS +dAS +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +"} +(143,1,2) = {" +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aad +aaa +aaa +aaa +aWT +aXB +aYd +aYL +aZo +aZI +baw +bbn +bbY +bcG +bbU +bdY +beJ +beJ +beJ +bhX +bst +biP +bjI +bkv +blu +bmz +bnB +box +bpw +bqv +bro +bsF +btY +bvb +bwh +bxr +byE +bzH +bBc +bCy +bDS +bFB +bFB +bFB +bFB +aaa +aaa +aaa +aaa +aaa +aaa +bLH +bLH +bID +bID +bID +bLH +bLH +chZ +ebZ +clA +cnE +chZ +chZ +chZ +cgw +cgw +cgw +chZ +chZ +aaa +aaa +aaa +aaa +aaa +aaa +cKR +cKR +cKR +cKR +cKR +cSF +cTJ +cTJ +cTJ +cTJ +cTJ +cZL +daR +dbT +dcV +ddI +cZK +deG +deU +dfw +dfU +dgv +dgO +deT +dhF +dig +diH +djf +diD +dka +dkL +dln +dlV +dix +dmV +dmX +doz +dpn +dpn +dqv +drb +drI +dsk +dsN +dtr +drI +dtP +dul +duC +dtG +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +dAS +dAS +dAS +dAS +dAS +dAS +dAS +dAS +dAS +dAS +dAS +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +"} +(144,1,2) = {" +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aab +aad +aaf +aaf +aaf +aWU +aXC +aYe +aYM +aZp +aZJ +bax +bbk +bbZ +bbU +bbU +bdZ +beJ +bfs +bgl +bgY +bhX +biQ +bjJ +bkv +blv +bmA +bmA +bmy +bmx +bqw +bro +bsG +btZ +bva +bwi +bxs +bxq +bxq +bBd +buZ +bDT +bFB +bHe +bIJ +bFB +bFB +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +cgw +cia +cjF +clA +cnF +cph +cgw +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +cKR +cKR +cNA +cON +cQm +cKR +cSG +cTJ +cUW +cWf +cXt +cTJ +cZM +daQ +dbU +dcW +ddH +cZK +deH +deU +dfx +dfU +dgw +dgU +deT +dhG +dih +diI +djh +diD +dkb +dkM +dix +dix +dix +dmX +dmX +doA +dpo +dpN +dqw +dqY +drJ +dsl +dsO +dts +drI +dub +duj +duR +dtg +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +dAS +dAS +dAS +dAS +dAS +dAS +dAS +dAS +dAS +dAS +dAS +dAS +dAS +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +"} +(145,1,2) = {" +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aad +aaa +aaa +aaa +aWV +aXD +aYf +aYN +aZq +aZK +baw +bbo +bca +bcH +bds +bdY +beJ +bft +bgm +bgZ +bhY +biR +bjK +bkv +blw +bmB +bnC +boy +bpx +bqx +bmC +bsH +bua +buZ +bwj +bxt +byF +bzI +bBe +buZ +bDU +bFB +bHf +bIK +bKn +bFB +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +cgw +cib +cjG +clB +cnG +cpi +cgw +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +cKR +cMi +cNB +cOO +cOO +cRp +cSH +cTJ +cUX +cWg +cXu +cTJ +cZN +daQ +dbV +cZK +ddH +cZK +deI +deU +dfy +dfX +dgx +dgV +deT +dhB +dhB +dhB +dhB +dhB +dkc +dkN +dlo +dlW +dix +dmY +dmX +doB +dpp +dpO +dqx +dqU +drI +dsm +dsP +dtt +drI +dtN +dul +duA +dtg +aaf +aaf +aaf +aaf +aaf +beN +aaf +aaa +dVn +dxr +dxM +dvN +aaa +aaa +aaa +dvN +dzo +dzH +dVn +aaa +aaa +aab +aaa +aaa +aaa +aaa +aaa +dAS +dAS +dAS +dAS +dAS +dAS +dAS +dAS +dAS +dAS +dAS +dAS +dAS +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +"} +(146,1,2) = {" +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aKm +aaa +aaa +aaa +aWW +aWX +aWX +aWX +aWX +aWX +aWX +bbp +bcb +aYj +bdt +bea +beJ +bfu +bgn +bha +bhX +biS +bjL +bkv +bkv +bmC +bmC +bmC +bmC +bmC +bmC +bsI +bub +buZ +buZ +buZ +buZ +buZ +buZ +buZ +bDV +bFB +bHg +bIL +bKo +bFB +bvZ +bvZ +bvZ +bvZ +bvi +bvi +bvi +bvZ +bvZ +bvZ +bvZ +bvZ +cic +cjH +clC +cnH +cic +cpk +cpk +cpk +cpk +cpk +czC +czC +czC +cpk +cpk +cpk +cpk +cKR +cMj +cNC +cOP +cQn +cKR +cSD +cTJ +cUY +cWh +cXv +cYJ +cZO +daS +dbW +dbW +ddJ +cZK +cZK +deU +dfz +dfU +dgv +dgV +deT +dhH +dii +diJ +dji +dix +dkd +dkO +dlp +dlW +dix +dmZ +dmX +doC +dpq +dpm +dqx +drc +drI +drI +drI +drI +drI +dtM +dul +duS +dtG +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +dVl +dxs +dxN +dVo +aaa +aaa +aaa +dVl +dzp +dzI +dVo +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +dAS +dAS +dAS +dAS +dAS +dAS +dAS +dAS +dAS +dAS +dAS +dAS +dAS +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +"} +(147,1,2) = {" +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaf +aaa +aaa +aaa +aWX +aXE +aXE +aXE +aXE +aZL +bay +bbq +bcc +bcI +bdu +beb +beJ +bfv +beJ +beJ +beJ +biT +bjM +bkw +blx +bmD +bnD +boz +bpy +bqy +brr +bsJ +buc +bvc +bwk +bxu +byG +bzJ +bBf +bBf +bDW +bFB +bHh +bIL +bKp +bFB +bNM +bPs +bQZ +bSN +bUK +bUK +bUK +bUK +bUK +cdk +ceP +bUK +cid +cjI +clD +cnI +cpj +cqL +csD +cut +csD +csD +csD +csD +csD +csD +csD +cHL +cJw +cKR +cKR +cKR +cKR +cKR +cKR +cSD +cTJ +cUZ +cWi +cXw +cTJ +cZP +daT +dbX +dcX +ddK +deh +deJ +deT +dfA +dfY +dgy +dgW +deT +dhI +dij +diK +djj +dix +dkb +dkN +dlq +dlX +dix +dna +dmX +doD +dpr +dpP +dqy +dqU +dmX +dsn +dsQ +dsn +dmX +dtG +duk +dtW +dtg +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +dVm +dxt +dxO +dyc +dve +dve +dve +dVm +dzq +dzJ +dVr +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +dAS +dAS +dAS +dAS +dAS +dAS +dAS +dAS +dAS +dAS +dAS +dAS +dAS +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +"} +(148,1,2) = {" +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaf +aaa +aaa +aaa +aWX +aXF +aYg +aXF +aZr +aXF +baz +aXF +bcd +bcJ +bdv +bec +beK +bfw +bgo +bhb +bhZ +biU +bjN +bkx +bly +bmE +bnE +boA +bpz +bqz +brs +bsK +bud +bvd +bvZ +bxv +bxv +bzK +bxi +bxi +bDX +bFB +bFB +bIM +bFB +bFB +bDX +bPt +bvZ +bSO +bxi +bxi +bYs +bAU +cbQ +bxi +ceQ +bxi +bvg +cjJ +clE +cnJ +cpk +cqM +csE +cuu +cuu +cuu +cuu +cuu +cCY +cEB +cGi +cHM +ecn +cKS +cMk +cND +ecq +cQo +cQo +cSI +cTJ +cVY +cWj +cTJ +cTJ +cTJ +cTJ +cTJ +cTJ +cTJ +cTJ +cTJ +deT +dhX +deT +dgz +deT +deT +dhJ +dik +dik +djk +dix +dkb +dkN +dhx +dlY +dix +dmV +dmX +dmX +dmX +dmX +dqz +dmX +dmX +dmX +dmX +dmX +dmX +dtL +duj +duy +dve +dvo +dvy +dvo +dve +dvo +dvo +dvo +dve +dwX +dxu +dxu +dyd +dyn +dyA +dyO +dwX +dzr +dzr +dwX +dve +dvo +dwV +dAr +dAA +dAJ +dve +dAS +dAS +dAS +dAS +dAS +dAS +dAS +dAS +dAS +dAS +dAS +dAS +dAS +dAS +dAS +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +"} +(149,1,2) = {" +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aad +aaa +aaa +aaa +aWX +aXF +aYh +aXF +aZs +aZM +baA +bbr +bce +bcK +bdw +bed +beK +bfx +bgp +bhc +bia +biV +bjO +bky +bky +bmF +bky +boB +bpA +bqA +brt +bsL +bsL +brt +bvZ +bvZ +bvZ +bzL +bBg +bCz +bDY +bFC +bHi +bIN +bKq +bLI +bNN +bPu +bvZ +bSP +bUL +bWJ +cvC +bvZ +cbR +bxi +ceQ +bAU +bvZ +cjK +clF +cjK +cpk +cqN +csF +cuu +cvV +cxU +czD +cuu +cuu +cuu +cGj +cGj +cGj +cKT +cKV +cKV +cKV +cKV +cpk +cSJ +cTK +csF +cqM +cXx +cpk +cZQ +daU +dbY +dcY +ddL +dei +deK +dfa +daU +ecx +dgA +dgX +dhh +dhK +dil +diL +djl +dhh +dke +dkP +dlr +dlZ +dmE +dnb +dnL +dnb +dnb +dpQ +dqA +drd +drK +dso +dsR +dtu +dtH +duc +dut +dux +dvf +dvp +dvz +dvK +dvY +dwm +dwu +dwy +dwE +dwY +dxv +dxP +dye +dwm +dwu +dyP +dyX +dzs +dzK +dzP +dzW +dAc +dAk +dAs +dAB +dAK +dAQ +dAS +dAS +dAS +dAS +dAS +dAS +dAS +dAS +dAS +dAS +dAS +dAS +dAS +dAS +dAS +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +"} +(150,1,2) = {" +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aad +aaf +aaf +aaa +aWX +aXF +aYg +aXF +aZt +aXF +baz +aXF +bcd +bcJ +bdx +bee +beK +bfy +bgq +bhd +bhZ +biW +bjP +bky +blz +bmG +bky +ebq +bpB +bqB +bru +bsM +bue +bve +bwl +bxw +bvZ +bzM +bBh +bCA +bvZ +bFD +bHj +bBq +bvZ +bBq +bBq +bPv +bPv +bPv +bPv +bPv +bPv +bPv +bPv +cdl +ceQ +bCC +bvZ +cjL +clG +cjL +cpk +cqO +cpk +cuu +cvW +cxV +czE +cBt +cCZ +cuu +cGk +cHN +cGk +cKT +cMl +cNE +cOR +cKV +cGj +cSK +cTL +cTL +cWk +cQo +cYK +cZR +cZR +dbZ +dcZ +ddM +dej +deL +dcZ +dcZ +dcZ +dgB +dcZ +dhi +dhL +dim +dim +djm +djz +dkf +dkQ +dls +dma +dmF +dnc +dnM +dnM +dps +dnM +dqB +dre +drL +dsp +dsS +dtv +dtI +dud +duu +duT +dvg +dvq +dvA +dvL +dvZ +dwn +dwv +dwv +dwF +dwZ +dxw +dwv +dyf +dwn +dvZ +dyQ +dyY +dwv +dwv +dzQ +dzX +dAd +dAl +dAs +dAC +dAL +dAR +dAS +dAS +dAS +dAS +dAS +dAS +dAS +dAS +dAS +dAS +dAS +dAS +dAS +dAS +dAS +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +"} +(151,1,2) = {" +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aad +aaa +aaa +aaa +aWX +aWX +aYi +aYi +aYi +aZN +baB +bbs +bcf +bcL +bdu +bef +beK +bfz +bgr +bhe +beK +biX +bjQ +bky +blA +bmH +bky +boD +bpC +bqB +brv +bsN +buf +bvf +bwm +bxi +byH +bzN +bBi +bBi +bDZ +bDZ +bHk +bDZ +bEa +bLJ +bCK +bPv +bRa +bSQ +bUM +bWK +bYt +bZU +bPv +bPv +ceR +bCD +bvZ +cjM +clH +cjP +cpl +cqP +csG +cuv +cvX +cxW +cxW +cBu +cDa +cEC +cGl +cHO +cJy +cII +cMm +cNF +cOS +cQp +cRq +cVa +csF +cVb +cWl +cXy +cYL +cZS +daV +daV +daV +cZS +cZS +cZS +cZS +cZS +daV +daV +daV +cZS +cZS +cZS +cZS +cZS +djA +dkg +dkR +dix +dmb +dmF +dmF +dnN +dmF +dmF +dVt +ecB +dnM +dnM +dmG +dmG +dmG +dtg +due +duv +dtg +dve +dve +dve +dvM +dwa +dwo +dvo +dvo +dve +dve +dve +dvo +dvo +dyo +dyB +dyR +dvo +dvo +dve +dve +dve +dvo +dAm +dAr +dAD +dwr +dxa +dAS +dAS +dAS +dAS +dAS +dAS +dAS +dAS +dAS +dAS +dAS +dAS +dAS +dAS +dAS +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +"} +(152,1,2) = {" +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aad +aaa +aaa +aaa +aaa +aWX +aYj +aYj +aYj +aWX +aWX +aWX +aYj +aYj +aYj +aWX +beL +bfA +bgs +bhf +beK +biY +bjR +bEB +blB +bmI +bky +boE +boE +boE +brw +bsO +bsO +brw +bwn +bxx +bvZ +bzN +bBj +bwn +bDZ +bFE +bHl +bIO +bDZ +bLK +bNO +bPw +bRb +bSR +bUN +bWL +bYu +bZV +cbS +bPv +ceS +cgx +bvZ +cjN +clI +cnK +cpm +cqP +csH +cuw +cvY +cxX +czF +cBv +cDb +cED +cGm +cHP +cJz +cKV +cMn +cNG +cOT +cKV +cRr +cSM +cTM +cVc +cWm +cXz +cYM +cZT +daW +aaa +aaa +aaa +aaa +aaa +aaf +aaa +aaa +aaa +aaa +aaf +aaa +aaa +aaa +aaa +djA +dkh +dkS +djA +dmc +dmF +dnd +dnM +doE +dmF +dpR +dqC +drf +drM +dmG +aaa +aaa +dtg +dtg +dtg +dtg +aaa +aaa +dvo +dvo +dwb +dwp +dvo +aaa +aaa +dve +aaa +aaa +dvo +dwp +dyC +dvo +dvo +aaa +aaa +dve +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +dAS +dAS +dAS +dAS +dAS +dAS +dAS +dAS +dAS +dAS +dAS +dAS +dAS +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +"} +(153,1,2) = {" +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aad +aaa +aaa +aaa +aaa +aaf +aaa +aaa +aaa +aaa +aaa +aaa +aaf +aaa +aaa +aaa +beL +beL +beL +beL +beL +biZ +bjS +bky +bky +bky +bky +aaa +aaa +aaa +brx +bsP +bug +brw +bvg +bvg +bvZ +bzN +bBk +bCB +bDZ +ebx +bHm +bIP +bKz +bLL +bNP +bPx +bRc +bSS +bUO +bWM +bYu +bZW +cbT +bPv +bxi +bxi +bvZ +cjO +clH +cjP +cpn +cqQ +cpn +cuu +cvZ +cxY +czG +cBw +cDc +cEE +cGn +cHQ +cJA +cKT +cKT +cKT +cKT +cKT +cLa +cLa +cTN +cVd +cWm +cXA +cYN +cZT +daX +aaa +aaa +aaa +aaa +aaa +aaf +aaa +aaa +aaa +aaa +aaf +aaa +aaa +aaa +aaa +djA +dki +dki +djA +dmd +dmG +dne +dnO +doF +dmG +dmG +dnf +dnf +dnf +dmG +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +dvN +dwc +dVi +aaa +aaa +aaa +dve +aaa +aaa +aaa +dVq +dyD +dvN +aaa +aaa +aaa +dve +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +dAS +dAS +dAS +dAS +dAS +dAS +dAS +dAS +dAS +dAS +dAS +dAS +dAS +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +"} +(154,1,2) = {" +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aad +aad +aaa +aab +aaa +aaf +aaa +aaa +aaa +aaa +aaa +aaa +aaf +aaa +aaa +aaa +aaf +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaf +aaa +aaa +aaa +aaa +aaf +aaa +aaa +aaa +aaa +aaa +bvg +bzN +bxi +bCC +bDZ +bFG +bHn +bIQ +bDZ +bLM +bNQ +bPw +bRd +bST +bUP +bUP +bYv +bZW +cbU +bPv +ceT +cgy +bvZ +cjP +clH +cjP +cpn +cqR +csI +cuu +cwa +cxZ +cxZ +cxZ +cxZ +cxZ +cGo +cHR +cJB +cKW +cMo +cNH +cOU +cQq +cRs +cLa +cTO +cVe +cWl +cXB +cYO +cTR +daY +aaa +aaa +aaa +aaa +aaa +aaf +aaa +aaa +aaa +aaa +aaf +aaa +aaa +aaa +aaa +aaf +aaa +aaa +aaa +aaa +dmG +dnf +dnf +dnf +dmG +aaa +aaa +aaa +aaa +aaf +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +dvN +dwd +dwr +aaa +aaa +aaa +dve +aaa +aaa +aaa +dyq +dyE +dvN +aaa +aaa +aaa +dve +aaa +aaa +aab +aaa +aaa +aaa +aaa +aaa +dAS +dAS +dAS +dAS +dAS +dAS +dAS +dAS +dAS +dAS +dAS +dAS +dAS +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +"} +(155,1,2) = {" +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aad +aaf +aag +aad +aad +aad +aaf +aaa +aaa +aaa +aaa +aaf +aaa +aaa +aaa +aaf +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaf +aaa +aaa +aaa +aaa +aaf +aaa +aaa +aaa +aaa +aaa +bvg +bzN +bxi +bCD +bEa +bEa +bEa +bEa +bEa +bLN +bNR +bPw +bRe +bSU +bUQ +bWN +bYw +bZX +cbV +bPv +ceU +bxi +bvZ +cjQ +clJ +cnL +cpn +cqS +csJ +cux +cwb +cya +czH +cBx +cDd +cEF +cGp +cHS +cJC +cKX +cMp +cNI +cOV +cQr +cRt +cLa +cTP +cVf +cWn +cXC +cTR +aaa +aaa +aaa +aaa +aaa +aaa +aag +aad +aad +aad +aaa +aad +aad +aad +aad +aaa +aaa +aaf +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaf +aaa +aaa +aaa +aaa +aaf +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +dvO +dwe +dvN +aaa +aaa +aaa +dxa +aaa +aaa +aaa +dvN +dyF +dvO +aaa +aaa +aaa +dxa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +dAS +dAS +dAS +dAS +dAS +dAS +dAS +dAS +dAS +dAS +dAS +dAS +dAS +dAS +dAS +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +"} +(156,1,2) = {" +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aae +aaf +aag +aad +aad +aad +aaa +aaa +aaf +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaf +aaa +aaa +aab +aaa +aaf +aaa +aaa +aaa +aaa +aaa +bvg +bzN +bBl +bBl +bBl +bFH +bHo +bIR +bBl +bLO +bNS +bPw +bRf +bSV +bUR +bPv +bUS +bZY +bUS +bPv +bvZ +cgz +bvZ +cjR +clK +cnM +cpn +cqT +csK +cux +cwc +cyb +czI +cBy +cDe +cEG +cGq +cHT +cJD +cKY +cMq +cNJ +cOW +cQs +cRu +cLa +cTQ +cVg +cWo +cXC +czC +aaa +aaa +aaa +aaa +aaa +aad +aad +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aad +aad +aaa +aaf +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaf +aaa +aaa +aaa +aaa +aaf +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +dvB +dvB +dvB +dvB +dvB +aaa +aaa +aaa +dxx +dxx +dxx +dxx +dxx +dxx +dxx +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +dAS +dAS +dAS +dAS +dAS +dAS +dAS +dAS +dAS +dAS +dAS +dAS +dAS +dAS +dAS +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +"} +(157,1,2) = {" +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +bcM +aad +aad +aad +aad +aad +aad +aaf +abc +aaf +aag +aad +aad +aad +aaa +aag +aad +aad +abc +aaa +aaa +aaa +aaa +bvg +bzO +bBl +bCE +bEb +bFI +bHp +bIS +bEg +bLP +bNT +bPw +bRg +bWO +bUS +bPv +bYx +bZZ +cbW +cdm +ceV +cgA +cie +cjN +clH +ece +cpn +cqU +csL +cux +cwd +cyc +czJ +cBz +cDd +cEH +cGr +cHU +cJE +cKX +cMr +cNK +cOX +cQt +cRv +cLa +cTQ +cVh +cWp +ecv +czC +aaf +aaf +aaf +aaf +aaf +aag +aaa +aab +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aad +aad +aad +aaf +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaf +aaa +aad +aad +aad +aad +aag +aaa +aaa +aaa +aaa +aaa +aaa +aaa +dvB +dvB +dvB +dvB +dvB +aaa +aaa +aaa +dxx +dxx +dxx +dxx +dxx +dxx +dxx +dxx +dxx +dxx +dxx +dxx +dxx +aaa +aaa +aaa +aaa +dAS +dAS +dAS +dAS +dAS +dAS +dAS +dAS +dAS +dAS +dAS +dAS +dAS +dAS +dAS +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +"} +(158,1,2) = {" +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aad +aaa +aaa +aaa +aaa +bvg +bzN +bBl +bCF +bEc +bFJ +bEc +bIT +bKs +bLQ +bNU +bPy +bRh +bSX +bUT +bxH +bYy +caa +cbX +cip +ceW +cgB +cif +cjO +clI +cnO +cpo +cqV +csM +cuy +cuy +cuz +cuz +cuz +cuz +cuz +cuz +cHV +cJF +cKZ +cMs +cNL +cOY +cQu +cRw +cLa +cTR +cGj +cWq +cGj +cTR +aaa +aaa +aaa +aaa +aaf +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aab +aae +aag +aad +aad +aad +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +dvB +dvB +dvB +dvB +dvB +aaa +aaa +aab +aaa +dxx +dxx +dxx +dxx +dxx +dxx +dxx +dxx +dxx +dxx +dxx +dxx +dxx +aaa +aaa +dAS +dAS +dAS +dAS +dAS +dAS +dAS +dAS +dAS +dAS +dAS +dAS +dAS +dAS +dAS +dAS +dAS +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +"} +(159,1,2) = {" +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aad +aaf +aaf +aaf +bvg +bvg +bzN +bBl +bCG +bEd +bFK +bHq +bIU +bOo +bLR +bNV +bPz +bRi +bSY +bUU +cfq +bYz +cab +cbY +cdo +ceX +cgC +cig +cjS +clL +cnP +cpn +cqW +csN +cuz +cwe +cyd +czK +cBA +cDf +cEI +cGs +cHW +cJG +cLa +cKZ +cNM +cKZ +cKX +cKZ +cLa +cTS +cTS +cWr +cTS +cTS +aaa +aaa +aaa +aaa +aaf +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +dvB +dvB +dvB +dvB +dvB +aaa +aaa +aaa +aaa +aaa +dxx +dxx +dxx +dxx +dxx +dxx +dxx +dxx +dxx +dxx +dxx +dxx +aaa +aaa +dAS +dAS +dAS +dAS +dAS +dAS +dAS +dAS +dAS +dAS +dAS +dAS +dAS +dAS +dAS +dAS +dAS +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +"} +(160,1,2) = {" +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aad +aaa +aaa +aaa +bvg +ebs +bzN +bBl +bCH +bEe +bFL +bHr +bIV +bKs +bLS +bNW +bCS +bEs +bSZ +bUV +bxH +bYA +cac +cbZ +cip +ceW +cgD +cih +cjT +clH +cnQ +cpn +cqX +csO +cuA +cwf +cye +cye +cBB +cye +cEJ +cuz +cHX +cJH +cLb +cMt +cNN +cOZ +cQv +cRx +cSN +cTT +cVi +cWs +cXE +cTS +aaa +aaa +aaa +aaa +aaf +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +dvB +dvB +dvB +dvB +dvB +aaa +aaa +aaa +aaa +aaa +dxx +dxx +dxx +dxx +dxx +dxx +dxx +dxx +dxx +dxx +dxx +dxx +aaa +aaa +dAS +dAS +dAS +dAS +dAS +dAS +dAS +dAS +dAS +dAS +dAS +dAS +dAS +dAS +dAS +dAS +dAS +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +"} +(161,1,2) = {" +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaf +aag +aaa +aaa +aaa +bvi +byI +bzN +bBl +bCI +bEf +bFV +bHs +bIW +bKu +bLT +bNX +bPA +bRj +cdn +bRj +bPC +bYB +cad +cca +cdm +ceY +cgA +cie +cjU +clM +dVy +cpn +cqY +csP +cuz +cwg +cyf +czL +cBC +cDg +cEK +cuz +cHY +cJI +cLc +cMu +cNO +cPa +cQw +cRy +cLb +cTU +cUa +cWt +cXF +cYP +cYP +cYP +cYP +cYP +cYP +aaf +aag +aad +aad +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +dvB +dvB +dvB +dvB +dvB +aaa +aaa +aaa +aaa +aaa +dxx +dxx +dxx +dxx +dxx +dxx +dxx +dxx +dxx +dxx +dxx +dxx +aaa +aaa +dAS +dAS +dAS +dAS +dAS +dAS +dAS +dAS +dAS +dAS +dAS +dAS +dAS +dAS +dAS +dAS +dAS +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +"} +(162,1,2) = {" +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaf +aaf +aab +aaa +aaa +aaa +bvi +byJ +bzP +bBl +bBl +bFM +bFM +bEg +bEg +bBl +bLU +bNY +bPA +bRk +bTb +bUW +bPC +bRj +cae +ccb +bPC +ceZ +cgE +ceZ +cjV +clH +cnR +cpn +cqZ +csQ +cuz +cwh +cyg +czM +cBC +cDh +cEL +cGt +cHZ +cJJ +cLd +cMv +cNP +cPb +cQx +cRz +cLb +cTV +cVj +cWu +cXG +cYQ +cZU +daZ +dca +dda +cYP +cYP +aaa +aaa +aad +aad +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +dvB +dvB +dvB +dvB +dvB +aaa +aaa +aaa +aaa +dxx +dxx +dxx +dxx +dxx +dxx +dxx +dxx +dxx +dxx +dxx +dxx +dxx +aaa +aaa +dAS +dAS +dAS +dAS +dAS +dAS +dAS +dAS +dAS +dAS +dAS +dAS +dAS +dAS +dAS +dAS +dAS +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +"} +(163,1,2) = {" +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaf +aaf +aaa +aaa +aaa +aaa +aaa +bvi +byK +bzQ +bBm +bCJ +bEh +bFN +bHt +bEj +bKv +bLV +bNX +bPA +bRl +bTc +bUX +bWP +bYC +caf +ccc +bPC +cfa +cfa +ceZ +cjW +clH +cnS +cpn +cra +csR +cuz +cwi +cyh +czN +cBD +cDi +cEM +cGu +cIa +cJI +cLc +cMw +cNQ +cPc +cQy +cRA +cLb +cTW +cVk +cWv +cXH +cYR +cZV +dba +dcb +ddb +ddN +cYP +aaa +aaa +aaa +aag +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +dvB +dvB +dvB +dvB +dvB +aaa +aaa +aaa +dxx +dxx +dxx +dxx +dxx +dxx +dxx +dxx +dxx +dxx +dxx +dxx +dxx +aaa +aaa +aaa +dAS +dAS +dAS +dAS +dAS +dAS +dAS +dAS +dAS +dAS +dAS +dAS +dAS +dAS +dAS +dAS +dAS +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +"} +(164,1,2) = {" +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +abc +aaa +aaa +aaa +aaa +aaa +aaa +bvg +byK +bzR +bBn +bCJ +ebv +bFO +ebB +ebI +bxI +bLW +bNZ +bPA +bRm +bTd +bUY +bWQ +bYD +cag +ccd +bPC +cfb +cgF +ceZ +cjX +clN +cnT +cpn +cra +csS +cuz +cwj +cyi +czO +cBE +cDj +cEN +cGt +cHU +cJE +cLb +cMx +cNR +cPd +cPd +cRB +cSO +cTX +cVl +cWw +cXI +cYS +cZW +dbb +dcc +ddc +ddO +cYP +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +dvB +dvB +dvB +dvB +dvB +aaa +aaa +aaa +dxx +dxx +dxx +dxx +dxx +dxx +dxx +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +dAS +dAS +dAS +dAS +dAS +dAS +dAS +dAS +dAS +dAS +dAS +dAS +dAS +dAS +dAS +dAS +dAS +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +"} +(165,1,2) = {" +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aad +aaf +aaf +aaf +buh +bvg +bwo +bxy +byL +bzS +bBo +bCK +bEj +bFP +ebC +bIX +bKw +bLX +bOa +bPB +bRn +bTd +bUZ +bWR +bYD +cag +ebR +bPC +cfc +cgG +cii +cjT +clH +cnL +cpp +crb +cpn +cuB +cwk +cyj +czP +cBF +cDk +cEO +cuy +cIb +cJK +cLb +cLb +cLc +cLf +cLc +cLb +cLb +cSR +cSR +cWx +cXJ +cYR +cZX +dbc +dcd +ddd +ddP +cYP +aaa +aaa +aaa +aad +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +dvB +dvB +dvB +dvB +dvB +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +dAS +dAS +dAS +dAS +dAS +dAS +dAS +dAS +dAS +dAS +dAS +dAS +dAS +dAS +dAS +dAS +dAS +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +"} +(166,1,2) = {" +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aad +aaa +aaa +aaa +bui +bvh +bwp +bxz +byM +bzT +bBp +bCJ +bEk +bEj +ebA +ebH +bxI +bLY +bOb +bPA +bRo +bTd +bUY +bWS +bYD +cag +ebQ +bPC +cfd +cgH +ceZ +cjY +clH +cnR +cpq +crc +csT +cuC +cwl +cyk +czQ +cBG +cDl +cEP +cuE +cIc +cJL +cLb +cMy +cNS +cNS +cNS +cRC +cSP +cTY +cVm +cWy +cXK +cSP +cZY +dbd +dbd +dbd +ddQ +ddQ +aaf +aaf +aaf +aad +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +dvB +dvB +dvB +dvB +dvB +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +dAS +dAS +dAS +dAS +dAS +dAS +dAS +dAS +dAS +dAS +dAS +dAS +dAS +dAS +dAS +dAS +dAS +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +"} +(167,1,2) = {" +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aad +aaa +aaa +aaa +buj +bvh +bwq +bxA +byM +bzU +bBq +bCJ +bEl +bHx +bFQ +bIZ +bKx +bLZ +bNX +bPA +bRp +bTe +bVa +bVa +bYE +cah +ccg +bPC +cfe +cgI +ceZ +cjZ +clO +cnU +cpr +crd +csU +cuD +cwm +cyl +czR +cBH +cwm +cEQ +cGv +cId +cJM +cLe +cMz +cNT +cNT +cQz +cRD +cSQ +cTZ +cVn +cWz +cXL +cYT +cZY +dbe +dce +dde +ddR +ddQ +aaa +aaa +aaa +aad +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +dvB +dvB +dvB +dvB +dvB +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +dAS +dAS +dAS +dAS +dAS +dAS +dAS +dAS +dAS +dAS +dAS +dAS +dAS +dAS +dAS +dAS +dAS +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +"} +(168,1,2) = {" +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aad +aaf +aaf +aaf +buk +bvg +bwr +bxB +byL +bzV +bBr +bBr +bBr +bKt +bBr +bBr +bCJ +bMa +bOa +bPA +bRq +bTf +bTi +bWT +bYF +cai +cai +bYI +bYI +cgJ +ceZ +cka +clP +cnV +cnV +cre +csV +cuE +cwn +cym +czS +cBI +cDm +cER +cuE +cIe +cJN +cLf +cMA +cNU +cPe +cQA +cRE +cSR +cUa +cVo +cWA +cXM +cYU +cZZ +dbf +dcf +ddf +ddS +ddQ +aaa +aaa +aaa +aag +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +dvB +dvB +dvB +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +dAS +dAS +dAS +dAS +dAS +dAS +dAS +dAS +dAS +dAS +dAS +dAS +dAS +dAS +dAS +dAS +dAS +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +"} +(169,1,2) = {" +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aad +aaa +aaa +aaa +aaa +bvg +bws +bxC +byN +bzW +bBr +bCL +ebw +ebz +ebF +bBr +ebL +bMb +bNX +bPA +bRr +bTg +bVb +bWU +bYF +caj +cch +cdp +bYI +cgK +ceZ +eca +clJ +cnW +cps +crf +csV +cuF +cwo +cyn +czT +cwo +cwo +cES +cGw +cIf +cJO +cLg +cMB +cNV +cPf +cQB +cRF +cSS +cUb +cVp +cWy +cXN +cYV +cZY +dbg +dcg +dcg +ddT +ddQ +aaa +aaa +aaa +aad +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +dAS +dAS +dAS +dAS +dAS +dAS +dAS +dAS +dAS +dAS +dAS +dAS +dAS +dAS +dAS +dAS +dAS +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +"} +(170,1,2) = {" +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aag +aaa +aaa +aaf +aaf +bvg +bws +bxD +byO +byO +bBr +bCM +bEn +eby +ebD +bBr +ebK +bMb +bOc +bPA +bRs +bTh +bVc +bWV +bYG +cak +cci +cdq +cff +cgL +cij +cij +clQ +cnX +cie +crg +csW +cuC +cwp +cyo +czU +cBJ +cDn +cET +cuE +cIg +cJP +cLb +cMC +cNW +cPg +cQC +cRG +cSP +cUc +cVq +cWy +cXK +cSP +cZY +dbh +dbh +dbh +ddQ +ddQ +aaf +aaf +aaf +aad +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +dAS +dAS +dAS +dAS +dAS +dAS +dAS +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +"} +(171,1,2) = {" +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aae +aaa +aaa +aaf +aaa +bvi +bwt +bxE +byP +byP +bBr +ebu +dgG +bFT +ebE +bBr +ebK +bMb +bOd +bPA +bRt +bTi +bVd +bWW +bYH +cal +ccj +cdq +cfg +cgM +cik +ckc +clR +ckc +cpt +crh +crh +cuG +cwq +cyp +czV +cyp +cyp +cuG +cuG +cIh +cJQ +cLh +cLh +cNX +cPh +cQD +cRH +cLh +cSR +cSR +cWx +cXO +cYW +daa +dbi +dch +ddg +ddU +cYW +aaa +aaa +aaa +aad +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +dAS +dAS +dAS +dAS +dAS +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +"} +(172,1,2) = {" +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +bsQ +bul +bvj +bvj +bxF +byQ +bzX +bBs +bBs +bBs +bGb +bBs +bBs +bKy +bMd +bOe +bPA +bPA +bTj +bVe +bWX +bYF +cam +cck +cdr +bYI +cgN +cgN +ckd +clS +ckd +cgN +crh +cdv +cuG +cwr +cyq +czW +cBL +cDo +cEU +cww +cIi +cJR +cLi +cMD +cNY +cPi +cQE +cRI +cST +cUd +cVr +cWA +cXP +cYX +dab +dbj +dci +ddh +ddV +cYW +aaa +aaa +aad +aad +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +dAS +dAS +dAS +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +"} +(173,1,2) = {" +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aab +aaf +aaa +aaa +bvi +bxG +ebt +byO +bBs +bCO +bEp +bGi +bHC +bJd +bBs +bMe +ebO +bPC +bPC +bPC +bPC +bPC +bYI +bYI +bYI +bYI +bYI +cgN +cil +cke +ecd +cnY +cpu +crh +cdv +cuG +cws +cyr +czX +cBN +czX +cEV +cGx +cIj +cJS +cLj +cME +cNZ +cPj +cQF +cRJ +cLh +cTW +cVk +cWB +cXQ +cYY +dac +dbk +dcj +ddi +ddW +cYW +aaa +aaa +aad +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +"} +(174,1,2) = {" +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaf +aaf +aaf +bvi +bvi +byS +bzY +bBs +bBs +bBs +bFW +bHD +bJe +bPE +bMf +bOf +bPD +bRu +bTk +cdF +bWY +bYJ +can +bPF +cds +cfh +cgO +cim +ckf +clU +cnZ +cie +cri +csX +cuG +cwt +cys +czY +cBM +cDp +cEW +cGy +cIk +cJT +cLk +cMF +cOa +cPk +cQG +cRK +cLh +cTV +cVj +cWC +cXR +cYZ +dad +dbl +dck +ddj +cYW +cYW +aaf +aaf +aaf +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +"} +(175,1,2) = {" +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +bvg +byT +bzZ +bBs +bCP +bEq +bFX +bHE +bJf +bBs +bMg +bOg +bSW +bRv +bTl +bVg +bWZ +bYK +cao +ccl +cds +cfi +cdt +cin +ckg +clV +coa +cin +cdt +cfm +cuG +cwu +cyr +czX +cBK +czX +cEX +cww +cIl +cJU +cLj +cMG +cOb +cPl +cQH +cRL +cLh +cTU +cUa +cWy +cXS +cYY +dae +cYY +cYY +cYW +cYW +aaa +aaa +aaa +aad +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +"} +(176,1,2) = {" +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +bxH +bxH +bAa +bBs +bBs +bBs +bFY +bHF +bJg +bBs +bMh +bNW +bPF +bRw +bTm +bVh +bXa +bYL +cap +bPF +cds +cfi +cdt +cio +cio +cio +cio +cio +cdt +cfm +cuG +cwv +cyt +czZ +cBO +cDq +cEY +cuG +cIm +cJV +cLh +cMH +cOc +cPm +cQI +cRM +cMI +cUe +cVs +cWD +cXT +cZa +daf +dbm +dcl +ddk +aaa +aaa +aaa +aaa +aad +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +"} +(177,1,2) = {" +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaf +aaf +abc +abc +aaf +aag +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aag +aaf +aaf +bxH +byU +bAb +bBt +bCQ +bBs +bBs +bBs +bBs +bBs +bMi +bNY +bPF +bRx +bTn +bVx +bXb +bYM +caq +bPF +cdt +cfj +cdt +cio +cio +cio +cio +cio +cdt +cfm +cuG +cww +cww +cAa +cuG +cuG +cuG +cuG +cIn +cJW +cLh +cMI +cLh +cLh +cLh +cRN +cSU +cSU +cSU +cWE +cXU +cZb +dag +dbn +dcm +ddk +aaa +aaa +aaa +aaf +aag +aaa +aaa +aaa +dhj +dhj +dhj +dhj +dhj +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +"} +(178,1,2) = {" +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aad +aad +aaf +aaa +aaa +aaa +aaa +aaa +aaa +aaf +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aad +aad +abc +aaf +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aae +aaa +aaa +aaa +bxI +byV +bAc +bBu +bCR +bEr +bFZ +bHG +bJh +bHG +bMj +bOa +bPF +bPF +bTo +bVj +bVj +bTo +bPF +bPF +cdu +cfk +cdt +cio +cio +cio +cio +cio +cdt +cfm +cuH +cwx +cyu +cAb +cBP +cDr +cDO +cGz +cIo +cJX +cLl +cMJ +cOd +cPn +cLl +cRO +cSV +cUf +cSU +cQR +cWF +cZb +dah +dbo +dcn +ddk +aaa +aaa +aaa +aaf +aaa +aaa +aaa +aaa +dhj +dhj +dhj +dhj +dhj +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +"} +(179,1,2) = {" +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aad +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaf +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaf +aaa +aaf +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +bxI +bxI +bAd +bBv +bCS +bEs +bGa +bHH +bJi +bKA +bMk +bOh +bPF +bRy +bTo +bVk +bXc +bTo +car +bPF +cdv +cfl +cdt +cio +cio +cio +cio +cio +cdt +cfm +cuH +cwy +cyv +cAc +cBQ +cDs +cFa +cGA +cIp +cJY +cLm +cMK +cOe +cPo +cLl +cRP +cSW +cUg +cSU +cWG +cXW +cZb +cZb +cZb +cZb +ddk +aaf +aaf +aaf +aad +aaa +aaa +aaa +aaa +dhj +dhj +dhj +dhj +dhj +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +"} +(180,1,2) = {" +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +abc +aad +aad +aaf +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaf +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaf +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaf +bxI +bxI +bBw +bBw +bEt +bHy +bBw +bBw +ebM +bMl +bNZ +bPF +bRz +bTo +bTo +bTo +bTo +cas +bPF +cdw +cfm +cdt +cio +cio +cio +cio +cio +cdt +cfm +cuH +cwz +cyw +cAd +cBR +cDt +cFb +cFr +cIq +dUU +cLn +cML +cOf +cPp +cLl +cRQ +cSX +cUh +cSU +cWH +cXX +cZc +dai +dbp +dco +ddl +aaa +aaa +aaa +aad +aaa +aaa +aaa +aaa +dhj +dhj +dhj +dhj +dhj +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +"} +(181,1,2) = {" +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaf +aaa +aaa +aaf +aaf +aaa +aaa +aaa +aaa +aWs +aWs +aWs +aWs +aWs +aaa +aaa +aaa +aaa +aaa +aaa +aaf +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaf +aaa +aaa +bBw +bCT +bEu +bGc +bHI +bBw +bBw +bMm +bNX +bPF +bRA +bTo +bVl +bXd +bYN +cat +bPF +cdx +cfm +cdt +cdt +cdt +cdt +cdt +cdt +cdt +cfm +cuH +cwA +cwA +cwA +cwA +cwA +cwA +cwA +cIr +cKa +cLm +cMM +cOg +cPq +cLl +cRR +cSY +cUi +cVt +cWI +cXY +cZd +daj +dbq +dcp +ddm +aaa +aaa +aaa +aad +aaa +aaa +aaa +aaa +dhj +dhj +dhj +dhj +dhj +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +"} +(182,1,2) = {" +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aag +aaa +aaa +aaa +aaf +aaf +aaa +aWs +aWs +aWs +aWt +aWu +aWt +aWs +aWs +aWs +aaa +beg +beg +beg +beg +bhg +aaa +aaa +aaa +aaa +aaf +bmJ +aaf +aaa +aaa +aaa +aaa +aaa +aaa +aab +aaa +aaf +aaa +aaa +bBx +bCU +bEv +bGd +bHJ +bJj +bBw +bMm +bOi +bPF +bPF +bPF +bPF +bPF +bPF +bPF +bPF +cdy +cfm +cfm +cdv +ckh +clW +cob +cpv +cfm +cfm +cuI +cwB +cyx +cAe +cBS +cDu +cFc +cwE +cIs +cJX +cLl +cMN +cOh +cPr +cLl +cRS +cSZ +cUj +cSU +cWJ +cXZ +cZc +dak +dbr +dcq +ddl +aaa +aaa +aaa +aaf +aaa +aaa +aaa +aaa +dhj +dhj +dhj +dhj +dhj +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +"} +(183,1,2) = {" +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaf +aWs +aWs +aWt +aWt +aWt +aZO +aWt +aWt +aWt +aWs +aWs +aWs +beM +baD +beh +bhg +bhg +bhg +bhg +bhg +bhg +bhg +bhg +bhg +bhg +bhg +bhg +bhg +bhg +bhg +bhg +bhg +bhg +bhg +bBw +bCV +bCV +bGe +bHK +bJk +bBw +bMn +bOj +bTa +bRB +bTp +bVm +bXe +bYO +cau +bPI +cdA +cdv +cdv +cdv +cdv +cdv +coc +cdv +cdv +cdv +cuI +cwC +cyy +cAf +cBT +cDv +cFd +cGC +ecm +cKb +cAj +cMO +cMO +cMO +cMO +cMO +cTa +cMO +cMO +cWK +ecw +cZe +cZe +cZe +cZe +ddn +aaa +aaa +aaa +aae +aaa +aaa +aab +aaa +dhj +dhj +dhj +dhj +dhj +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +"} +(184,1,2) = {" +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aWs +aWs +aWt +aWt +aWt +aWt +aWt +aWt +aWt +aWt +aWt +aWt +beh +baD +bfB +bgt +bhg +aaa +aaa +aaa +aaa +aaf +bmJ +aaf +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaf +aaa +aaa +bBx +bCV +bEw +bGd +bHJ +bJl +bBw +bMo +bOk +bPH +bRC +bTq +bVn +bXf +bYP +cav +bPI +cgU +ebY +cgP +caG +cki +clX +caG +caG +crj +csY +cuI +cwD +cyz +cAg +cBU +cDw +cFe +cwE +cIu +cJX +cLo +cMO +cOi +cPs +cPs +cRT +cPt +cUk +cMO +cWL +cYb +cZf +dal +dbs +dcr +ddo +aaa +aaa +aaa +aag +aaa +aaa +aaa +aaa +dhj +dhj +dhj +dhj +dhj +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +"} +(185,1,2) = {" +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aWs +aWs +aWt +aWt +aWt +aWt +aWt +aWt +aWt +aWt +aWt +aWt +aWt +aWs +aWs +beg +beg +aaa +aaa +aaa +aaa +aaa +aaf +aaa +aaf +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaf +aaa +aaa +bBw +bCW +bEx +bGf +bHK +bJj +bBw +bMp +bOh +bPI +bPI +bTr +bVo +bXg +bYQ +caw +bPI +ebV +bxH +bxH +bxH +ckj +clY +cod +cpw +cpw +cpw +cuI +cwE +cwE +cwE +cwE +cwE +cwE +cwE +cIv +cKc +cLp +cMO +cOj +cPt +cQJ +cRU +cTb +cUl +cMO +cWM +cYc +cZg +dam +dbt +dcs +ddp +aaa +aaa +aaa +aad +aaa +aaa +aaa +aaa +dhj +dhj +dhj +dhj +dhj +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +"} +(186,1,2) = {" +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aWs +aWt +aWt +aWt +aYk +aWt +aWt +aWt +aWt +aWt +baC +aWt +aWt +aWt +aWs +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaf +aaa +aaf +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaf +aaa +aaa +bBx +bCX +bEy +bGg +bHJ +bJm +bBw +bMm +bOl +bPJ +bPI +bPI +bPI +bPI +bPI +bPI +bPI +ebS +ebW +cgQ +coI +ckk +clZ +coe +cpx +crk +csZ +cuJ +cwF +cyA +cAh +cBV +cDx +cFf +cFf +cIw +cJX +cLq +cMO +cOk +cPt +cQK +cPt +cTc +cUm +cMO +cWN +cYd +cZf +dan +dbu +dct +ddo +aaa +aaa +aaa +aad +aaa +aaa +aaa +aaa +dhj +dhj +dhj +dhj +dhj +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +"} +(187,1,2) = {" +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aae +aaa +aaa +aaa +aWp +aWs +aWt +aWt +aWt +aWt +aYk +aWt +aWt +aWt +baC +aWt +aWt +aWt +bek +aWs +aWs +aaf +aaf +aaf +aaf +aaf +aaf +aaf +aaf +aaf +aaf +aaf +aaf +aaf +aaf +aaf +aaf +aaf +aaf +aaf +aaa +bBw +bCY +bEz +bGh +bHL +bJj +bBw +bMq +bOm +bPK +bRD +bTs +bVp +bXh +bRD +bRD +ccm +ebT +ebX +cgR +bxH +ckl +cma +cof +cpy +crl +cta +cuK +cwG +cyB +cAi +cBW +cDy +cFg +cFg +cIx +cKd +cLr +cMO +cPu +cSL +cSL +cRV +cTd +cUn +cMO +cWO +cYe +cZh +cZh +cZh +cZh +cZh +aaf +aaf +aaf +aad +aaa +aaa +aaa +aaa +dhj +dhj +dhj +dhj +dhj +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +"} +(188,1,2) = {" +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aag +aaa +aaa +aaa +aWp +aWt +aWt +aWt +aWt +aWt +aWt +aYk +aWt +baC +aWt +bcg +bcg +bcg +bcg +aWt +aWs +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +bxJ +byW +byW +bBw +bBw +bBw +bKr +ebG +bBx +bBw +bMr +bOn +bPL +bRE +bTt +bVq +bBv +bRE +bRE +ccn +cdD +bOn +cgS +bxH +caG +cmb +caG +cpz +crm +crm +cuL +crm +crm +cAj +cBX +cDz +cFh +cFh +cIy +cKe +cAj +cMO +cMO +cMO +cMO +cMO +cTe +cUo +cMO +cWP +cYf +cZi +cWS +aaa +aaa +aaa +aaa +aaa +aaa +aad +aaa +aaa +aaa +aaa +aaa +dhj +dhj +dhj +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +"} +(189,1,2) = {" +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aad +aaf +aaf +aaf +aWp +aWu +aWA +aWt +aWt +aWt +aWt +aWu +aZP +baD +baD +baD +baD +baD +baD +baD +bfC +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +bxK +byX +bAe +bBy +bCZ +bEA +bGj +bHM +bJn +bKB +bJv +bPG +bJv +bRF +bKB +bKB +bKB +bKB +cax +cax +cdE +coH +cax +cax +ckm +cmc +cog +cpz +crn +ctb +ctb +cwH +crm +cAk +cBY +cDA +cFi +cGD +cIz +cKf +cLs +cMP +cOm +cPv +cQL +cRW +cTf +cUp +cVu +cWQ +cYg +cZj +cYi +aaa +aaa +aaa +aaa +aaa +aaa +aad +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +"} +(190,1,2) = {" +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aad +aaa +aaa +aaa +aWp +aWt +aWt +aWt +aWt +aWt +aWt +aYl +aWt +baE +aWt +bch +bch +bch +bch +aWt +aWs +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +bxL +byY +bFd +bBz +bDa +bEA +bGk +bHN +bJo +bKC +bMs +bOp +bPM +bRG +bTu +bVr +bVr +bYR +cay +cco +crW +cfr +cgT +ciq +ckn +cmd +coh +cpz +cro +ctc +cuM +cwI +crm +cAl +cBY +cDB +cFj +cGE +cIA +cKg +cLt +cMQ +cOn +cPw +cQM +cRX +cTg +cUq +cVv +cWR +cYh +cZi +cWS +aaa +aaa +aaa +aaa +aaa +aaa +aad +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +"} +(191,1,2) = {" +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aWp +aWs +aWt +aWt +aWt +aWt +aYl +aWt +aWt +aWt +baE +aWt +aWt +aWt +bek +aWs +aWs +aaf +aaf +aaf +aaf +aaf +aaf +aaf +aaf +aaf +aaf +aaf +aaf +aaf +aaf +aaf +aaf +aaf +bhg +byZ +bAf +bBA +bDb +bEA +bGl +bHO +bKF +bKD +bMt +bOq +bPN +bRH +bTv +bVs +bXi +bKB +caz +ccp +cdG +cfs +cve +cax +cko +cme +cog +cpA +crp +ctd +crq +cwJ +crm +cAm +cAm +cDC +cAm +cAm +cAm +cKh +cLu +cMR +cLu +cPx +cKl +cpw +cpw +cpw +cVw +cWS +cYi +cWS +cVw +aaf +aaa +aaa +aaa +aaa +aad +aad +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +"} +(192,1,2) = {" +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aWs +aWt +aWt +aWt +aYl +aWt +aWt +aWt +aWt +aWt +baE +aWt +aWt +aWt +aWs +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaf +aaa +aaf +aaa +aaa +aaa +aaa +aaa +aab +aaa +aaa +bxM +bza +bAg +bBB +bDc +bFU +bGp +bHP +bJq +bKE +bMu +bOr +bMu +bRI +bTw +bVt +bXj +bKB +caA +ccq +cdH +cft +cgV +cax +ckp +cmf +coi +cpz +crq +cte +crq +crq +crm +cAn +cBZ +cDD +cFk +cGF +cAm +cKi +cLv +cMS +cOo +cPy +cKl +aaa +aaa +aaa +aaf +aaa +aaa +aaa +aaa +aaf +aaa +aaa +aaa +aad +aad +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +"} +(193,1,2) = {" +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aWs +aWs +aWt +aWt +aWt +aWt +aWt +aWt +aWt +aWt +aWt +aWt +aWt +aWs +aWs +beg +beg +aaa +aaa +aaa +aaa +aaa +aaf +aaa +aaf +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +bxN +byZ +bAh +bBC +bDd +bEA +bGq +bHQ +bJr +bLk +bMv +bOs +bPO +bRJ +bTx +bVt +bXk +bKB +caB +ccr +ccr +ccr +ccr +ccr +caC +cmg +coj +cpB +crr +ctf +crq +crq +crm +cAo +cCa +cDE +cFl +cGG +cIB +cKj +cLw +cMT +cOp +cPz +cKl +aaa +aaa +aaa +aaf +aaa +aaa +aaa +aaa +aaf +aaa +aaa +aag +aad +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +"} +(194,1,2) = {" +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aWs +aWs +aWt +aWt +aWt +aWt +aWt +aWt +aWt +aWt +aWt +aWt +beh +baD +bfD +bgt +bhg +aaa +aaa +aaa +aaa +aaf +bmJ +aaf +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +bxO +byW +byW +byW +bDe +bEA +bGn +bHR +bJs +bKB +bMw +bOt +bPP +bKB +bTy +bVt +bXl +bKB +caC +ccs +ccs +ccs +ccs +caF +ckq +cmh +cok +cpz +crs +ctg +crq +crq +crm +cAp +cCb +cAp +cFm +cGH +cAm +cKk +cLx +cMU +cOq +cPA +cKl +aaa +aaa +aaa +aaf +aaa +aaa +aad +aad +aad +aad +aaf +abc +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +"} +(195,1,2) = {" +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaf +aWs +aWs +aWt +aWt +aWt +aZQ +aWt +aWt +aWt +aWs +aWs +aWs +beM +bfE +bgu +bhh +bhh +bhh +bhh +bhh +bhh +bhh +bhh +bhh +bhh +bhh +bhh +bhh +bhh +bhh +bhh +bxP +bzb +bAi +bBD +bDf +bEA +bGo +bHS +bJt +bKG +bMx +bOu +bPQ +bKK +bTz +bVs +bXm +bKB +caD +cct +cdI +ccs +cdI +caG +ckr +cmi +col +cpz +crt +cth +crq +cwK +crm +cAq +cAm +cDF +cAs +cAs +cAs +cKl +cLy +cMV +cLy +cKl +cKl +aaa +aaa +abc +abc +aag +aad +aad +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +"} +(196,1,2) = {" +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaf +aaf +aaa +aWs +aWs +aWs +aWt +aWu +aWt +aWs +aWs +aWs +aaa +beg +beg +beg +beg +bhg +aaa +aaa +bjT +aaa +aaf +bmJ +aaf +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +bxQ +byW +byW +byW +bDg +bEA +bJp +bHT +bJq +bKB +bMy +bOv +bMy +bKB +bTA +bVs +bXn +bKB +caE +caC +caC +cdI +cgW +caH +caH +cmj +caH +caH +cru +cti +crv +cwL +crm +cAr +cAm +cDG +cAs +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaf +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +duf +duf +duf +duf +duf +duf +duf +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +"} +(197,1,2) = {" +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaf +aaa +aaa +aaa +aaa +aWs +aWs +aWs +aWs +aWs +aaa +aaa +aaa +aaa +aaa +aaa +aaf +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aad +aaa +aaa +aaa +aaf +aaa +byW +byW +bEA +bGr +bHU +bJu +bKH +bMz +bOw +bPR +bKB +bTB +bVu +bVu +bKB +caF +caF +cdJ +cdI +cgX +caH +cks +cmk +com +caH +crv +crv +crv +cwI +cpz +cAs +cAs +cAs +cAs +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaf +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +duf +duf +duf +duf +duf +duf +duf +duf +duf +duf +duf +duf +duf +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +"} +(198,1,2) = {" +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaf +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaf +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aad +aad +aaa +aaa +aaf +aaa +aaa +aaa +bEA +bGs +bHV +bJv +bKI +bMA +bOx +bPS +bKB +bJv +bHV +bGs +bKB +caG +caF +caF +caF +caF +caH +ckt +cml +con +caH +crv +crv +crv +crv +cpz +bYS +aaa +aaa +aaf +aaa +aaa +aab +aaa +aaa +aaa +aaa +aaf +aaa +aaa +aaa +aab +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +duf +duf +duf +duf +duf +duf +duf +duf +duf +duf +duf +duf +duf +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +"} +(199,1,2) = {" +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaf +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaf +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +abc +aaf +aaa +aaf +aaa +aaa +aaa +aaf +aaa +aaa +aaa +bKJ +bMA +bOx +bTC +bKB +aaa +aaa +aaa +bYS +caH +caH +cdK +caH +caH +caH +caH +cmm +caH +caH +caH +ctj +caH +caH +caH +cAt +aaa +aaa +aaf +aaa +aaa +aaa +aaf +aag +aad +aad +aad +abc +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +duf +duf +duf +duf +duf +duf +duf +duf +duf +duf +duf +duf +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +"} +(200,1,2) = {" +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aae +aaa +aaa +aaa +aaa +aaa +aaa +aaf +aaa +aaa +aaa +aaa +aaa +aaa +aaf +abc +aaf +aag +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aag +aad +aad +aad +aaa +aaa +aaf +aaa +aaa +aaa +bKK +bMB +dgp +bMB +bKG +aaa +aaa +aaa +bYS +caI +ccu +cdL +cfu +cgY +cir +cku +cmn +coo +cpC +crw +ctk +cuN +cwM +cyC +cAu +aaa +aaa +aaf +aaa +aaa +aad +aad +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +duf +duf +duf +duf +duf +duf +duf +duf +duf +duf +duf +duf +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +"} +(201,1,2) = {" +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaf +aad +aad +aad +aaf +aaf +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aad +aad +aaa +aaf +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aab +aaa +aaa +aaa +caI +ccv +cdM +cfv +cgZ +cgZ +ecc +cmo +cop +ech +cgZ +ctl +cor +cwN +caI +aaa +aaa +aaa +abc +aad +aad +aad +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +duf +duf +duf +duf +duf +duf +duf +duf +duf +duf +duf +duf +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +"} +(202,1,2) = {" +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aad +aad +aaf +abc +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +caH +ccw +cdN +cfw +cha +cis +ecb +cmp +coq +ecf +crx +ctm +cuO +cwO +caH +aaa +aaa +aaa +aaf +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +duf +duf +duf +duf +duf +duf +duf +duf +duf +duf +duf +duf +duf +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +"} +(203,1,2) = {" +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aWl +aWl +aWl +aWl +aWl +aWl +aWl +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +caH +caH +caI +cfx +caH +cit +ecb +cmq +cdM +ecg +caH +caI +caI +caH +caH +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +duf +duf +duf +duf +duf +duf +duf +duf +duf +duf +duf +duf +duf +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +"} +(204,1,2) = {" +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aWl +aWl +aWl +aWl +aWl +aWl +aWl +aWl +aWl +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +caH +ccx +cdO +cfy +caI +ciu +ecb +cmr +cor +eci +caI +ctn +cdO +ccx +caH +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +duf +duf +duf +duf +duf +duf +duf +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +"} +(205,1,2) = {" +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aWl +aWl +aWl +aWl +aWl +aWl +aWl +aWl +aWl +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +abc +aaa +aaa +aaa +caH +ccy +cdM +cfz +chb +civ +cop +cms +cgZ +ecj +cry +cto +cdM +cwP +caH +aaa +aaa +aaa +aag +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +"} +(206,1,2) = {" +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aWl +aWl +aWl +aWl +aWl +aWl +aWl +aWl +aWl +aWl +aWl +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aad +aaf +aaf +aaf +caH +caH +cdP +cfA +caI +ciw +cdM +cmt +cdM +cpI +caI +ctp +cdP +caH +caH +aaf +aaf +aaf +aad +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +"} +(207,1,2) = {" +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aWl +aWl +aWl +aWl +aWl +aWl +aWl +aWl +aWl +aWl +aWl +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aad +aaa +aaa +aaa +aaa +caH +caH +cfB +caH +cix +ckv +cdM +cos +cpJ +caH +caH +caH +caH +aaa +aaa +aaa +aaa +aad +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +"} +(208,1,2) = {" +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aWl +aWl +aWl +aWl +aWl +aWl +aWl +aWl +aWl +aWl +aWl +aWl +aWl +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aad +aaa +aaa +aaa +aaa +aaf +aaa +cfC +caH +caH +ckw +cmu +cot +caH +caH +aaa +aaa +aaf +aaa +aaa +aaa +aaa +aad +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +"} +(209,1,2) = {" +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aWl +aWl +aWl +aWl +aWl +aWl +aWl +aWl +aWl +aWl +aWl +aWl +aWl +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aad +aad +aaa +aaa +aaa +aaf +aaa +aaa +aaa +caH +caI +cmv +caI +caH +aaa +aaa +aaa +aaf +aaa +aaa +aaa +aad +aad +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +"} +(210,1,2) = {" +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aWl +aWl +aWl +aWl +aWl +aWl +aWl +aWl +aWl +aWl +aWl +aWl +aWl +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aag +aad +aaa +aaa +aaf +aaa +aaa +aaa +aaa +aaa +aaf +aaa +aaa +aaa +aaa +aaa +aaf +aaa +aaa +aag +aad +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +"} +(211,1,2) = {" +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aWl +aWl +aWl +aWl +aWl +aWl +aWl +aWl +aWl +aWl +aWl +aWl +aWl +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aad +aad +aad +aad +aaa +aaa +aaa +aaa +aaa +aaf +aaa +aaa +aaa +aaa +aad +aad +aad +aad +aaf +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +"} +(212,1,2) = {" +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aWl +aWl +aWl +aWl +aWl +aWl +aWl +aWl +aWl +aWl +aWl +aWl +aWl +aWl +aWl +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaf +aaa +aaa +aaa +aad +aad +aXG +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +"} +(213,1,2) = {" +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aWl +aWl +aWl +aWl +aWl +aWl +aWl +aWl +aWl +aWl +aWl +aWl +aWl +aWl +aWl +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aad +aad +aad +aad +aad +aad +abc +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +"} +(214,1,2) = {" +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aWl +aWl +aWl +aWl +aWl +aWl +aWl +aWl +aWl +aWl +aWl +aWl +aWl +aWl +aWl +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aab +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +"} +(215,1,2) = {" +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aWl +aWl +aWl +aWl +aWl +aWl +aWl +aWl +aWl +aWl +aWl +aWl +aWl +aWl +aWl +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +"} +(216,1,2) = {" +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aWl +aWl +aWl +aWl +aWl +aWl +aWl +aWl +aWl +aWl +aWl +aWl +aWl +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +"} +(217,1,2) = {" +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aWl +aWl +aWl +aWl +aWl +aWl +aWl +aWl +aWl +aWl +aWl +aWl +aWl +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +"} +(218,1,2) = {" +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aWl +aWl +aWl +aWl +aWl +aWl +aWl +aWl +aWl +aWl +aWl +aWl +aWl +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +"} +(219,1,2) = {" +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aWl +aWl +aWl +aWl +aWl +aWl +aWl +aWl +aWl +aWl +aWl +aWl +aWl +aWl +aWl +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +"} +(220,1,2) = {" +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aWl +aWl +aWl +aWl +aWl +aWl +aWl +aWl +aWl +aWl +aWl +aWl +aWl +aWl +aWl +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +"} +(221,1,2) = {" +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aWl +aWl +aWl +aWl +aWl +aWl +aWl +aWl +aWl +aWl +aWl +aWl +aWl +aWl +aWl +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +"} +(222,1,2) = {" +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aWl +aWl +aWl +aWl +aWl +aWl +aWl +aWl +aWl +aWl +aWl +aWl +aWl +aWl +aWl +aWl +aWl +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +"} +(223,1,2) = {" +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aWl +aWl +aWl +aWl +aWl +aWl +aWl +aWl +aWl +aWl +aWl +aWl +aWl +aWl +aWl +aWl +aWl +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +"} +(224,1,2) = {" +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aWl +aWl +aWl +aWl +aWl +aWl +aWl +aWl +aWl +aWl +aWl +aWl +aWl +aWl +aWl +aWl +aWl +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +"} +(225,1,2) = {" +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aWl +aWl +aWl +aWl +aWl +aWl +aWl +aWl +aWl +aWl +aWl +aWl +aWl +aWl +aWl +aWl +aWl +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +"} +(226,1,2) = {" +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aWl +aWl +aWl +aWl +aWl +aWl +aWl +aWl +aWl +aWl +aWl +aWl +aWl +aWl +aWl +aWl +aWl +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +"} +(227,1,2) = {" +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aWl +aWl +aWl +aWl +aWl +aWl +aWl +aWl +aWl +aWl +aWl +aWl +aWl +aWl +aWl +aWl +aWl +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +"} +(228,1,2) = {" +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aWl +aWl +aWl +aWl +aWl +aWl +aWl +aWl +aWl +aWl +aWl +aWl +aWl +aWl +aWl +aWl +aWl +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +"} +(229,1,2) = {" +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aWl +aWl +aWl +aWl +aWl +aWl +aWl +aWl +aWl +aWl +aWl +aWl +aWl +aWl +aWl +aWl +aWl +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +"} +(230,1,2) = {" +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aWl +aWl +aWl +aWl +aWl +aWl +aWl +aWl +aWl +aWl +aWl +aWl +aWl +aWl +aWl +aWl +aWl +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +"} +(231,1,2) = {" +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aWl +aWl +aWl +aWl +aWl +aWl +aWl +aWl +aWl +aWl +aWl +aWl +aWl +aWl +aWl +aWl +aWl +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +"} +(232,1,2) = {" +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aWl +aWl +aWl +aWl +aWl +aWl +aWl +aWl +aWl +aWl +aWl +aWl +aWl +aWl +aWl +aWl +aWl +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +"} +(233,1,2) = {" +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aWl +aWl +aWl +aWl +aWl +aWl +aWl +aWl +aWl +aWl +aWl +aWl +aWl +aWl +aWl +aWl +aWl +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +"} +(234,1,2) = {" +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aWl +aWl +aWl +aWl +aWl +aWl +aWl +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +"} +(235,1,2) = {" +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aWl +aWl +aWl +aWl +aWl +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +"} +(236,1,2) = {" +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aWl +aWl +aWl +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +"} +(237,1,2) = {" +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +"} +(238,1,2) = {" +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +"} +(239,1,2) = {" +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +"} +(240,1,2) = {" +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +"} +(241,1,2) = {" +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +"} +(242,1,2) = {" +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +"} +(243,1,2) = {" +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +"} +(244,1,2) = {" +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +"} +(245,1,2) = {" +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +"} +(246,1,2) = {" +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +"} +(247,1,2) = {" +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +"} +(248,1,2) = {" +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +"} +(249,1,2) = {" +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +"} +(250,1,2) = {" +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +"} +(251,1,2) = {" +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +"} +(252,1,2) = {" +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +"} +(253,1,2) = {" +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +"} +(254,1,2) = {" +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +"} +(255,1,2) = {" +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +"} + +(1,1,3) = {" +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +dUO +"} +(2,1,3) = {" +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +"} +(3,1,3) = {" +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +"} +(4,1,3) = {" +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +"} +(5,1,3) = {" +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +"} +(6,1,3) = {" +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +"} +(7,1,3) = {" +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +"} +(8,1,3) = {" +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +"} +(9,1,3) = {" +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +"} +(10,1,3) = {" +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +"} +(11,1,3) = {" +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +"} +(12,1,3) = {" +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +"} +(13,1,3) = {" +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +"} +(14,1,3) = {" +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +"} +(15,1,3) = {" +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +"} +(16,1,3) = {" +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +"} +(17,1,3) = {" +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +"} +(18,1,3) = {" +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +"} +(19,1,3) = {" +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +"} +(20,1,3) = {" +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +"} +(21,1,3) = {" +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +"} +(22,1,3) = {" +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +"} +(23,1,3) = {" +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +dEn +dEn +dEn +dEn +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +"} +(24,1,3) = {" +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +dEn +dEn +dEn +dEn +dEn +dEn +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +"} +(25,1,3) = {" +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +dEn +dEn +dEn +dEn +dEn +dEn +dEn +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +"} +(26,1,3) = {" +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +dEn +dEn +dEn +dEn +dEn +dEn +dEn +dEn +dEn +dEn +dEn +dEn +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +"} +(27,1,3) = {" +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +dEn +dEn +dEn +dEn +dEn +dEn +dEn +dEn +dEn +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +"} +(28,1,3) = {" +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +dEn +dEn +dEn +dEn +dEn +dEn +dEn +dEn +dEn +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +"} +(29,1,3) = {" +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +dEn +dEn +dEn +dEn +dEn +dEn +dEn +dEn +dEn +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +"} +(30,1,3) = {" +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +dEn +dEn +dEn +dEn +dEn +dEn +dEn +dEn +dEn +dEn +dEn +dEn +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +"} +(31,1,3) = {" +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +dEn +dEn +dEn +dEn +dEn +dEn +dEn +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +"} +(32,1,3) = {" +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +dEn +dEn +dEn +dEn +dEn +dEn +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +"} +(33,1,3) = {" +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +dEn +dEn +dEn +dEn +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +"} +(34,1,3) = {" +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aab +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +"} +(35,1,3) = {" +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +"} +(36,1,3) = {" +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +"} +(37,1,3) = {" +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +"} +(38,1,3) = {" +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +"} +(39,1,3) = {" +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +"} +(40,1,3) = {" +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +"} +(41,1,3) = {" +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +"} +(42,1,3) = {" +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +"} +(43,1,3) = {" +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +"} +(44,1,3) = {" +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +"} +(45,1,3) = {" +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +"} +(46,1,3) = {" +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +"} +(47,1,3) = {" +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +"} +(48,1,3) = {" +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aad +aad +aaf +aaf +aaf +aag +aad +aad +aad +aaa +aaa +aaa +aaa +aaa +aaa +aag +aad +aad +aad +aad +aad +aaf +aag +aad +aad +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +"} +(49,1,3) = {" +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aad +aad +aaa +aaa +aaa +aaa +aaa +aaa +aaf +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaf +aaa +aaa +aaa +aaa +aaa +aaa +aad +aad +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +"} +(50,1,3) = {" +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aad +aad +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaf +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaf +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aad +aad +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +"} +(51,1,3) = {" +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aad +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaf +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaf +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aad +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +"} +(52,1,3) = {" +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aad +aaf +aad +aad +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +dAV +dAV +dAV +dAV +dAV +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaf +aaf +aaf +aaf +aad +aaf +aad +aad +aaf +aad +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +"} +(53,1,3) = {" +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aad +aaa +aaa +aaa +aaf +aaf +aaf +aaf +aaf +aaf +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +aaf +aaa +aaa +aaa +aaa +aaa +aaf +aaa +aaa +aag +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +"} +(54,1,3) = {" +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aad +aaa +aaa +aaa +aaf +aaa +aaa +aaa +aaa +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +aaa +aaa +aaa +aaa +aaa +aaf +aaa +aaa +aaf +aaa +aaa +aaa +aaa +aab +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +"} +(55,1,3) = {" +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aag +aaf +aaf +aaf +aaf +aaa +aaa +aaa +aaa +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +aaa +aaa +aaa +aaa +aaa +aaf +aaa +aaa +aaf +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +"} +(56,1,3) = {" +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaf +aaa +aaa +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +"} +(57,1,3) = {" +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaf +aaa +aaa +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +aaa +aaa +aaa +aag +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +"} +(58,1,3) = {" +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aag +aaf +aaf +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +aaa +aaa +aaa +aad +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +"} +(59,1,3) = {" +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aad +aaa +aaa +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +aaa +aaa +aaa +aad +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +"} +(60,1,3) = {" +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aad +aad +aaa +aaa +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +aaa +aaa +aaa +abc +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +"} +(61,1,3) = {" +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aag +aad +aaa +aaa +aaa +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +aaf +aaf +aaf +aad +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +"} +(62,1,3) = {" +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaf +aaa +aaa +aaa +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +aaa +aaa +aaa +aad +bfG +aad +aad +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +"} +(63,1,3) = {" +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaf +aaf +aaa +aaa +aaa +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +aaa +aaa +aaa +aaa +aaf +aaa +aad +aag +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +"} +(64,1,3) = {" +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aad +aad +aad +aad +aad +aad +aad +aad +adK +aaa +aag +aad +aad +aad +aad +adJ +aaa +aaa +aaa +aaa +aaa +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +aaa +aaa +aaa +aaa +aaf +aaa +aaa +aad +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +"} +(65,1,3) = {" +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aad +aad +aaa +aaa +aaa +aaa +aaf +aaa +aaa +aaf +aaa +aaa +aaf +aaa +aaa +aaf +aaa +aaa +aaa +aaa +aaa +aaa +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +aaa +aaa +aaa +aaa +aaf +aaa +aaa +aad +aad +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +"} +(66,1,3) = {" +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aad +aad +aaa +aaa +aaa +aaa +aaa +aaf +aaa +aaa +aaf +aaa +aaa +aaf +aaa +aaa +aaf +aaa +aaa +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +aaf +aaf +aaf +aad +aad +aad +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +"} +(67,1,3) = {" +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aad +aad +aaa +aaa +aaa +aaa +aaa +aaa +aaf +aaa +aaa +aaf +aaa +aaa +aaf +aaa +aaa +aaf +aaa +aaa +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +aaa +aaa +aaa +aaa +aaa +aag +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +"} +(68,1,3) = {" +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aag +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaf +aaa +aaa +aaf +aaa +aaa +aaf +aaa +aaa +aaf +aaa +aaa +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +aaa +aaa +aaa +aaa +aaa +aad +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +"} +(69,1,3) = {" +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aad +aad +aaf +aaf +aaf +aaf +aaf +aaf +aaf +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +aaa +aaa +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +aaa +aaa +aaa +aaa +aaa +aad +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +"} +(70,1,3) = {" +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aad +aad +aaf +aaa +aaa +aab +aaa +aaa +aaa +aaa +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +aaa +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +aaa +aaa +aaa +aaa +aad +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +"} +(71,1,3) = {" +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aad +aaa +aaf +aaa +aaa +aaa +aaa +aaa +aaa +aaa +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +aaa +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +aaf +aaf +aaf +aag +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +"} +(72,1,3) = {" +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aad +aad +aaa +aaf +aaa +aaa +aaa +aaa +aaa +aaa +aaa +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +aaa +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +aaa +aaa +aaa +abc +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +"} +(73,1,3) = {" +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aad +aaa +aaa +aaf +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaf +aaf +aaa +aaf +aaf +aaa +aaf +aaf +aaa +aaa +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +aaa +aaa +aaa +aag +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +"} +(74,1,3) = {" +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +adJ +aag +aaa +aaa +aaf +aaa +aaa +aaa +aaa +aaa +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +aaa +aaa +aaa +aag +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +"} +(75,1,3) = {" +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +adK +aaa +aaa +aaa +aaf +aaa +aaa +aaa +aaa +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dDc +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dTo +dAV +dAV +dAV +dAV +dAV +dAV +aaa +aaa +aaa +aad +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +"} +(76,1,3) = {" +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aad +aad +aaa +aaa +aaa +dAV +dAV +dAV +dAV +aaa +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dDd +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dTp +dAV +dAV +dAV +dAV +dAV +dAV +aaa +aaa +aaa +aad +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +"} +(77,1,3) = {" +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aad +aaa +aaa +aaa +aaa +dAV +dAV +dAV +dAV +aaf +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dDd +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dTp +dAV +dAV +dAV +dAV +dAV +dAV +aaf +aaf +aaf +aad +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +"} +(78,1,3) = {" +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aad +aaa +aaa +aaa +aaa +dAV +dAV +dAV +dAV +aaf +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dBs +dBG +dBG +dBG +dBG +dAV +dDd +dAV +dBG +dBG +dBG +dBG +dBG +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dPN +dPN +dPN +dPN +dPN +dAV +dTp +dAV +dPN +dPN +dPN +dPN +dPN +aaa +aaa +aaa +aad +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +"} +(79,1,3) = {" +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aad +aaf +aaf +aaf +aaf +dAV +dAV +dAV +dAV +aaa +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dBt +dBH +dBH +dBH +dBH +dCC +dDe +dCC +dEo +dEo +dEo +dEo +dFc +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dPO +dQy +dQy +dQy +dQy +dSt +dTq +dSt +dUA +dUA +dUA +dUA +dUL +aaa +aaa +aaa +aaf +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +"} +(80,1,3) = {" +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaf +aaa +aaa +aaa +aaa +dAV +dAV +dAV +dAV +aaf +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dBu +dBu +dBu +dBu +dBu +dAV +dDd +dAV +dBu +dBu +dBu +dBu +dBu +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dPP +dPP +dPP +dPP +dPP +dAV +dTp +dAV +dPP +dPP +dPP +dPP +dPP +aaa +aaa +aaa +aae +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +"} +(81,1,3) = {" +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aag +aaa +aaa +aaa +aaa +dAV +dAV +dAV +dAV +aaf +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dDd +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dTp +dAV +dAV +dAV +dAV +dAV +dAV +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +"} +(82,1,3) = {" +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aad +aaf +aaf +aaf +aaf +dAV +dAV +dAV +dAV +aaa +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dBs +dBG +dBG +dBG +dBG +dAV +dDd +dAV +dBG +dBG +dBG +dBG +dBG +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dPN +dPN +dPN +dPN +dPN +dAV +dTp +dAV +dPN +dPN +dPN +dPN +dPN +aaa +aaa +aaa +aaf +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +"} +(83,1,3) = {" +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aad +aaa +aaa +aaa +aaa +dAV +dAV +dAV +dAV +aaf +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dBt +dBH +dBH +dBH +dBH +dCC +dDe +dCC +dEo +dEo +dEo +dEo +dFc +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dPO +dQy +dQy +dQy +dQy +dSt +dTq +dSt +dUA +dUA +dUA +dUA +dUL +aaf +aaf +aaf +aag +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +"} +(84,1,3) = {" +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aad +aaa +aaa +aaa +aaa +dAV +dAV +dAV +dAV +aaf +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dBu +dBu +dBu +dBu +dBu +dAV +dDd +dAV +dBu +dBu +dBu +dBu +dBu +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dPP +dPP +dPP +dPP +dPP +dAV +dTp +dAV +dPP +dPP +dPP +dPP +dPP +aaa +aaa +aaa +aad +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +"} +(85,1,3) = {" +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aab +aaa +aaa +aad +aaf +aaf +aaf +aaf +dAV +dAV +dAV +dAV +aaa +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dDd +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dTp +dAV +dAV +dAV +dAV +dAV +dAV +aaa +aaa +aaa +aad +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +"} +(86,1,3) = {" +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aad +aaa +aaa +aaa +aaa +aaf +aaf +aaf +aaf +aaf +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dBs +dBG +dBG +dBG +dBG +dAV +dDd +dAV +dBG +dBG +dBG +dBG +dBG +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dPN +dPN +dPN +dPN +dPN +dAV +dTp +dAV +dPN +dPN +dPN +dPN +dPN +aaa +aaa +aaa +aad +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +"} +(87,1,3) = {" +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aad +aaf +aaf +aaf +aaf +dAV +dAV +dAV +dAV +aaa +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dBt +dBH +dBH +dBH +dBH +dCC +dDe +dCC +dEo +dEo +dEo +dEo +dFc +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dPO +dQy +dQy +dQy +dQy +dSt +dTq +dSt +dUA +dUA +dUA +dUA +dUL +aaa +aaa +aaa +aad +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +"} +(88,1,3) = {" +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aad +aaa +aaa +aaa +aaa +dAV +dAV +dAV +dAV +aaf +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dBu +dBu +dBu +dBu +dBu +dAV +dDd +dAV +dBu +dBu +dBu +dBu +dBu +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dPP +dPP +dPP +dPP +dPP +dAV +dTp +dAV +dPP +dPP +dPP +dPP +dPP +aaa +aaa +aaa +aad +aaf +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +"} +(89,1,3) = {" +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aad +aaa +aaa +aaa +aaa +dAV +dAV +dAV +dAV +aaf +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dDd +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dTp +dAV +dAV +dAV +dAV +dAV +dAV +dAV +aaa +aaa +aaa +aaf +aaf +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +"} +(90,1,3) = {" +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aad +aad +aaa +aaa +aaa +dAV +dAV +dAV +dAV +aaa +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dBs +dBG +dBG +dBG +dBG +dAV +dDd +dAV +dBG +dBG +dBG +dBG +dBG +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dPN +dPN +dPN +dPN +dPN +dAV +dTp +dAV +dPN +dPN +dPN +dPN +dPN +dAV +dAV +aaa +aaa +aaa +abc +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +"} +(91,1,3) = {" +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aad +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dBt +dBH +dBH +dBH +dBH +dCC +dDe +dCC +dEo +dEo +dEo +dEo +dFc +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dPO +dQy +dQy +dQy +dQy +dSt +dTq +dSt +dUA +dUA +dUA +dUA +dUL +dAV +dAV +aaf +aaf +aaf +aag +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +"} +(92,1,3) = {" +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aad +aaa +aaa +aaa +aaf +aaa +aaa +aaa +aaa +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dBu +dBu +dBu +dBu +dBu +dAV +dDd +dAV +dBu +dBu +dBu +dBu +dBu +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dPP +dPP +dPP +dPP +dPP +dAV +dTp +dAV +dPP +dPP +dPP +dPP +dPP +dAV +dAV +aaa +aaa +aaa +aad +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +"} +(93,1,3) = {" +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aag +aaf +aaa +aaa +aaf +aaa +aaa +aaa +aaa +aaa +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dDd +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dTp +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +aaa +aaa +aaa +aaf +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +"} +(94,1,3) = {" +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aad +aad +bfG +aaf +aaa +aaa +aaa +aaa +aaa +aaf +aaa +aaa +aaa +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dBs +dBG +dBG +dBG +dBG +dAV +dDd +dAV +dBG +dBG +dBG +dBG +dBG +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dPN +dPN +dPN +dPN +dPN +dAV +dTp +dAV +dPN +dPN +dPN +dPN +dPN +dAV +dAV +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +"} +(95,1,3) = {" +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aad +aad +aad +aaa +aaa +aaa +aaf +aaa +aaa +aaa +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dBt +dBH +dBH +dBH +dBH +dCC +dDe +dCC +dEo +dEo +dEo +dEo +dFc +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dPO +dQy +dQy +dQy +dQy +dSt +dTq +dSt +dUA +dUA +dUA +dUA +dUL +dAV +dAV +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +"} +(96,1,3) = {" +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aad +aad +aaf +aaa +aaf +aaa +aaa +aaa +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dBu +dBu +dBu +dBu +dBu +dAV +dDd +dAV +dBu +dBu +dBu +dBu +dBu +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dPP +dPP +dPP +dPP +dPP +dAV +dTp +dAV +dPP +dPP +dPP +dPP +dPP +dAV +dAV +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +"} +(97,1,3) = {" +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +bfG +aad +aad +aaf +aaf +aaf +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dDd +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dTp +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +aaa +aaa +aaa +aad +aaa +aaa +aab +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aab +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +"} +(98,1,3) = {" +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaf +aaa +aaa +aaa +aaa +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dCD +dDf +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dTr +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +aaa +aaa +aaa +aad +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +"} +(99,1,3) = {" +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +abc +aaa +aaa +aaa +aaa +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dDg +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dTs +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +aaf +aaf +aaf +aad +aad +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +"} +(100,1,3) = {" +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aXG +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaf +abc +aad +aad +aad +aaa +aaa +aad +aad +aaa +aab +aaa +aaa +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dCE +dDh +dCE +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dSu +dTt +dSu +dAV +dAV +dAV +dAV +dAV +dAV +dAV +aaa +aaa +aaa +aaa +aad +aad +aad +aaa +abc +aag +aad +aad +aad +aaf +aad +aad +aad +aad +aad +aaa +aaa +aaa +aaa +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +"} +(101,1,3) = {" +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aag +aad +aad +aad +aad +aad +aaf +abc +aaf +aaf +aag +aad +aad +aad +aad +aad +aaf +aaa +aaa +aaf +aaa +aaa +aaa +aaa +aaf +aaa +aaa +aaa +aaa +aaa +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dCE +dDi +dDT +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dKA +dLh +dKA +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dSv +dTu +dSu +dAV +dAV +dAV +dAV +dAV +dAV +aaa +aaa +aaa +aaa +aaa +aaa +aaf +aaa +aaa +aaa +aaf +aaa +aaa +aaf +aaa +aaa +aaa +aaf +aaa +aaa +aaa +aaa +aaa +aaa +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +dAV +dAV +dAV +aaa +aaa +aaa +dAV +aaa +aaa +aaa +dAV +dAV +dAV +aaa +aaa +aaa +dAV +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +"} +(102,1,3) = {" +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaf +aaf +aaa +aaa +aaa +aaf +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaf +aaa +aaa +aaf +aaa +aaa +aaa +aaf +aaa +aaa +aaa +aaa +aaf +aaa +aaa +aaa +aaa +aaa +aaa +aaa +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dCE +dDj +dDU +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dHQ +dIv +dJo +dHQ +dKA +dLi +dKA +dMx +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dSw +dTv +dSu +dAV +dAV +dAV +dAV +dAV +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaf +aaa +aaa +aaa +aaf +aaa +aaa +aaf +aaa +aaa +aaa +aaf +aaa +aaa +aaa +aaa +aaa +aaa +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +dAV +dAV +dAV +aaa +aaa +aaa +dAV +aaa +aaa +aaa +dAV +dAV +dAV +aaa +aaa +aaa +dAV +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +"} +(103,1,3) = {" +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aad +aaa +aaa +aaa +aaa +aaf +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaf +aaa +aaa +aaf +aaa +aaa +aaa +aaf +aaa +aaa +aaa +aaa +aaf +aaa +aaa +aaa +aaa +aaa +aaa +aaa +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dCg +dCg +dDk +dDV +dCg +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dHQ +dIw +dIw +dHQ +dKB +dLj +dKB +dMx +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dRR +dSx +dTw +dRR +dRR +dAV +dAV +dAV +dAV +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaf +aaa +aaa +aaa +aaf +aaa +aaa +aaf +aaa +aaa +aaa +aaf +aaa +aaa +aaa +aaa +aaa +aaa +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +dAV +dAV +dAV +aaa +aaa +aaa +dAV +aaa +aaa +aaa +dAV +dAV +dAV +aaa +aaa +aaa +dAV +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +"} +(104,1,3) = {" +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aad +aaa +aaa +aaa +aaa +aaf +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaf +aaa +aaa +aaf +aaa +aaa +aaa +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +aaa +aaa +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dCh +dCF +dDl +dDW +dCh +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dHR +dIx +dJp +dJZ +dKA +dLk +dKA +dMx +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dRS +dSy +dTx +dUk +dRS +dAV +dAV +dAV +dAV +aaa +aaa +aaa +aaa +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +aaa +aaa +dAV +dAV +dAV +dAV +aaa +aaa +dAV +dAV +dAV +dAV +dAV +aaa +aaa +dAV +aaa +aaa +dAV +dAV +dAV +dAV +dAV +aaa +aaa +dAV +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +"} +(105,1,3) = {" +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aad +aaa +aaa +aaa +aaa +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +aaa +aaa +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dCh +dCG +dDm +dDX +dCh +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dHS +dIy +dJq +dKa +dKC +dLl +dKC +dMx +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dRS +dSz +dTy +dUl +dRS +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +"} +(106,1,3) = {" +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aad +aaf +aaf +aaf +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dCh +dCH +dDn +dDY +dCh +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dCc +dHT +dIz +dIz +dKb +dKD +dLm +dLR +dMx +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dRS +dSA +dTz +dUm +dRS +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +"} +(107,1,3) = {" +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aad +aaa +aaa +aaa +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dCc +dCh +dCI +dDo +dCI +dCc +dCc +dCc +dCc +dCc +dCc +dCc +dCc +dCc +dCc +dCc +dCc +dHU +dIA +dJr +dKc +dKE +dLn +dLS +dMx +dMx +dMx +dMx +dMx +dMx +dMx +dMx +dMx +dMx +dMx +dMx +dSB +dTA +dSB +dRS +dMx +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +"} +(108,1,3) = {" +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aag +aaa +aaa +aaa +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dCc +dCi +dCJ +dDp +dDZ +dEp +dEy +dEI +dEU +dEU +dFm +dFx +dFK +dGb +dGA +dGX +dHt +dHV +dIB +dJs +dKd +dKF +dKF +dLT +dMy +dNb +dNr +dNb +dNb +dOX +dPu +dPu +dPu +dPu +dPu +dRT +dSC +dTB +dUn +dUB +dMx +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +"} +(109,1,3) = {" +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaf +aaa +aaa +aaa +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dCc +dCj +dCl +dDq +dCl +dEq +dCl +dEJ +dEV +dFd +dFn +dFy +dVu +ecC +dCl +dGY +dEq +dHW +dIC +dJt +dKe +dKG +dLo +dLU +dMz +dNc +dNs +dNT +dOs +dOY +dPv +dPQ +dQz +dNT +dNT +dMz +dSD +dTC +dNT +dUC +dMx +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +"} +(110,1,3) = {" +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aae +aaf +aaa +aaa +aaa +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dCc +dCk +dCl +dDr +dEa +dCc +dCc +dCc +dCc +dCc +dFo +dFo +dFo +dCc +dCc +dCc +dCc +dHX +dID +dJu +dID +dKH +dKH +dLV +dKH +dKH +dMx +dMx +dOt +dOt +dOt +dMx +dMx +dQT +dNT +dMz +dSE +dTC +dNT +dUD +dMx +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +dAV +dAV +dAV +dAV +aaa +aaa +aaa +dAV +dAV +dAV +dAV +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +"} +(111,1,3) = {" +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aad +aaa +aaa +aaa +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dCc +dCl +dCl +dDs +dEb +dCc +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +dHY +dIE +dJv +dIE +dKH +dLp +dKH +dMA +dKH +aaa +aaa +aaa +aaa +aaa +aaa +dMx +dQU +dNT +dMz +dSF +dTD +dUo +dUE +dMx +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +dAV +dAV +dAV +dAV +aaa +aaa +aaa +dAV +dAV +dAV +dAV +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +"} +(112,1,3) = {" +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aad +aaf +aaf +aaf +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dCc +dCm +dCK +dDt +dCc +dCc +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +dHY +dIF +dJw +dKf +dKH +dLq +dKH +dMB +dKH +aaa +aaa +aaa +aaa +aaa +aaa +dNt +dNt +dRz +dNt +dNt +dTE +dUp +dUF +dMx +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +"} +(113,1,3) = {" +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aad +aaa +aaa +aaa +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dCc +dCc +dCc +dCc +dCc +aaa +aaa +aaa +aaa +aaa +aaa +dAV +dAV +dGd +dGd +dGd +dGd +dGd +dIG +dJx +dKg +dKH +dLr +dLW +dMC +dKH +dNt +dNt +dOu +ecE +dPw +dPR +dNt +dQV +dNy +dRU +dNt +dNt +dMx +dMx +dMx +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +"} +(114,1,3) = {" +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +aaa +aaa +aaa +aab +aaa +aaa +dAV +dAV +dAV +dAV +dGe +dGB +dGZ +dHu +dHZ +dIH +dJy +dKh +dKI +dLr +dLX +dMD +dKH +dNu +dNU +dNy +dPa +dPx +dPS +dNt +dQW +dRA +dRV +dSG +dNt +dUq +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +"} +(115,1,3) = {" +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aag +aaa +aaa +aaa +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAZ +dAZ +dAZ +dAV +dAV +dAV +dAV +dAV +aaa +aaa +aaa +aaa +aaa +dAV +dAV +dAV +dAV +dAV +dGf +dGC +dHa +dHv +dIa +dII +dJz +dKi +dKJ +dLs +dLY +dMD +dKH +dNv +dNV +dOv +dPb +dNy +dPT +dQA +dQX +dRB +dRW +dSH +dTF +dUr +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +"} +(116,1,3) = {" +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aad +aaf +aaf +aaf +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAZ +dBa +dBa +dBa +dAV +dAV +dAV +dAV +aaa +aaa +aaa +aaa +dAV +dAV +dAV +dAV +dAV +dAV +dGe +dGD +dHb +dHw +dIb +dIJ +dJA +dKf +dKI +dLt +dLZ +dME +dKH +dNw +dNW +dOw +dPc +dNy +dNy +dQB +dQY +dRC +dNy +dSI +dTG +dUr +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +"} +(117,1,3) = {" +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aad +aaa +aaa +aaa +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAZ +dAZ +dAZ +dAZ +dAV +dAV +dAV +dAV +dAV +dAV +dAV +aaa +aaa +aaa +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dGg +dGE +dGE +dGE +dGg +dIK +dJB +dKj +dKK +dKL +dKL +dKL +dKK +dNx +dNX +dOx +dPd +dPy +dPU +dQC +dPU +dRD +dRX +dSJ +dTH +dUr +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +"} +(118,1,3) = {" +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aad +aad +aaa +aaa +aaa +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAZ +dBa +dBa +dBa +dAV +dAV +dAV +dAV +dAV +dAV +dAV +aaa +aaa +aaa +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dGg +dGF +dHc +dHx +dIc +dIL +dJC +dKk +dKL +dLu +dMa +dMF +dKK +dNy +dNY +dOy +dPc +dNy +dPV +dQB +dNy +dRE +dRV +dSG +dTI +dUr +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +"} +(119,1,3) = {" +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaf +aaf +aaa +aaa +aaa +aaa +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAZ +dAZ +dAZ +dAZ +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dCn +dCL +dDu +dDu +dCL +dCL +dCL +dCL +dCL +dCL +dCL +dCL +dGh +dGG +dHd +dHy +dGE +dIM +dJD +dKi +dKM +dLv +dMb +dMG +dKK +dNz +dNZ +dOz +dPe +dNy +dPW +dQA +dNy +dRF +dRY +dNt +dPR +dUs +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +"} +(120,1,3) = {" +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aad +aaa +aaa +aaa +aaa +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAZ +dBa +dBa +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dBP +dAV +dCo +dAV +aaa +aaa +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dGg +dGH +dHe +dHz +dGE +dIN +dJE +dKe +dKN +dLw +dMc +dMH +dKK +dNA +dOa +dOA +dPf +dPz +dPX +dNt +dQZ +dNt +dRZ +dNt +aaa +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +"} +(121,1,3) = {" +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aad +aaf +aaf +aaf +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAZ +dBa +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dBc +dBc +dBc +dCo +dAV +aaa +aaa +dAV +dAV +dAV +dAV +dAV +dAV +dFp +dFp +dGg +dGg +dGg +dGg +dId +dIO +dJF +dID +dKO +dKK +dKK +dKK +dKK +dNt +dNt +dOB +dNt +dNt +dPY +dNt +dRa +dRG +dSa +dSK +aaa +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +"} +(122,1,3) = {" +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aab +aaa +aaa +aad +aaa +aaa +aaa +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAZ +dAZ +dAZ +dAV +dAV +dAV +dAV +dAV +dBc +dBc +dBc +dBc +dBc +dBc +dCp +dBc +dBc +aaa +dAV +dAV +dEK +dAV +dAV +dFp +dFp +dFM +dGi +dFp +dHf +dHA +dHA +dIP +dJG +dKl +dKP +dLx +dMd +dMI +dNd +dNB +dOb +dOC +dPg +dOb +dPZ +dQD +dRb +dRH +dSb +dSL +aaa +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +"} +(123,1,3) = {" +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaf +aaa +aaa +aaa +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAZ +dBa +dAV +dAV +dAV +dAV +dAV +dAV +dBc +dBc +dBc +dBc +dBQ +dBc +dCp +dBc +dBc +aaa +dEr +dEr +dEr +dEr +dEr +dFp +dFz +dFN +dGj +dFp +dHg +dHB +dHC +dIQ +dJH +dKm +dJH +dLy +dMe +dMJ +dNe +dNC +dOc +dOD +dPh +dOc +dQa +dQE +dRc +dRI +dSc +dSM +aaa +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +dAV +dAV +dAV +dAV +aaa +aaa +aaa +dAV +dAV +dAV +dAV +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +"} +(124,1,3) = {" +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaf +aaf +aaa +aaa +aaa +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAZ +dBa +dAV +dAV +dAV +dAV +dBc +dBc +dBc +dBc +dBv +dBI +dBR +dBI +dCq +dBc +dBc +dBc +dEr +dEz +dEL +dEW +dFe +dFq +dFA +dFO +dGk +dFp +dHg +dHC +dIe +dIR +dJI +dIe +dKQ +dLz +dIe +dMK +dNf +dND +dIe +dOE +dIe +dPA +dQb +dQF +dRd +dRJ +dSd +dPA +dTJ +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +dAV +dAV +dAV +dAV +aaa +aaa +aaa +dAV +dAV +dAV +dAV +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +"} +(125,1,3) = {" +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaf +aaa +aaa +aaa +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAZ +dBa +dAV +dAV +dAV +dAV +dBc +dBc +dBe +dBk +dBw +dBJ +dBS +dBJ +dCr +dCM +dBj +dBc +dEr +dEA +dEM +dES +dES +dFp +dFB +dFP +dGl +dGI +dHh +dHD +dIe +dIe +dIe +dIe +dIe +dIe +dMf +dML +dVB +dNE +dOd +dOd +dPi +dPA +dQc +dQG +dRe +dRI +dSe +dSN +dPA +dUq +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +"} +(126,1,3) = {" +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aad +aaa +aaa +aaa +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAZ +dAZ +dAV +dAV +dAV +dAV +dAV +dBc +dBc +dBf +dBl +dBx +dBK +dBT +dBK +dCs +dCN +dDv +dBc +dEr +dEB +dEN +dEX +dEr +dFp +dFp +dFQ +dFp +dGJ +dHg +dHE +dIe +dIS +dIS +dIS +dIS +dIS +dMg +dMM +dNh +dNF +dOe +dOF +dPj +dPA +dQd +dQH +dRf +dRI +dRI +dSO +dSK +dUr +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +"} +(127,1,3) = {" +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aad +aaa +aaa +aaa +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAZ +dBa +dAV +dAV +dAV +dAV +dBc +dBc +dBc +dBg +dBm +dBy +dBL +dBU +dBL +dBL +dCO +dDw +dBc +dBc +dEC +dEO +dES +dFf +dEr +dFC +dFR +dGm +dGK +dHg +dHF +dIe +dIS +dIS +dIS +dIS +dIS +dMh +dMN +dNh +dNG +dHB +dOG +dPk +dPB +dQe +dQG +dRg +dRI +dRI +dSP +dTK +dUr +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +"} +(128,1,3) = {" +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aad +aaf +aaf +aaf +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAZ +dBa +dAV +dAV +dAV +dBb +dBc +dBc +dBd +dBh +dBn +dBz +dBL +dBV +dCd +dBL +dIq +dDx +dEc +dEs +dED +dEP +dEY +dFg +dFr +dFD +dFS +dGn +dGL +dHi +dHG +dIe +dIS +dIS +dIS +dIS +dIS +dMi +dMN +dNi +dNH +dHA +dOH +dPl +dPC +dQf +dQI +dRh +dRJ +dSf +dSQ +dTL +dUr +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +"} +(129,1,3) = {" +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aad +aaa +aaa +aaa +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAZ +dBa +dAV +dAV +dAV +dAV +dBc +dBc +dBc +dBg +dBo +dBm +dBL +dBW +dBL +dBL +dCO +dDy +dBc +dEt +dEE +dEQ +dES +dFh +dEr +dFE +dFT +dGm +dGM +dHg +dHE +dIe +dIS +dIS +dIS +dIS +dIS +dMj +dMN +dNj +dNG +dHB +dOI +dPm +dPD +dQg +dQG +dRi +dRI +dRI +dSR +dTM +dUr +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +"} +(130,1,3) = {" +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aad +aaa +aaa +aaa +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAZ +dAZ +dAV +dAV +dAV +dAV +dAV +dBc +dBc +dBi +dBp +dBA +dCe +dBX +dCe +dBA +dCQ +dDz +dBc +dEu +dEF +dER +dEX +dEr +dFs +dFs +dFU +dFs +dGN +dHg +dHE +dIe +dIS +dIS +dIS +dIS +dIS +dIe +dMO +dNk +dNE +dOf +dHB +dPn +dPA +dQh +dQH +dRj +dRI +dRI +dSS +dSM +dUr +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +"} +(131,1,3) = {" +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaf +aaa +aaa +aaa +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAZ +dBa +dAV +dAV +dAV +dAV +dBc +dBc +dBj +dBq +dBB +dBm +dBY +dBm +dCt +dCR +dBe +dBc +dEr +dEA +dES +dES +dFi +dFs +dFF +dFV +dGo +dGO +dHj +dHH +dIe +dIe +dIe +dIe +dIe +dIe +dMk +dMP +dNl +dNE +dOg +dOJ +dPo +dPA +dQi +dQG +dRk +dRI +dSg +dST +dPA +dUs +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +"} +(132,1,3) = {" +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aae +aaa +aaa +aaa +aaa +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAZ +dBa +dAV +dAV +dAV +dAV +dBc +dBc +dBc +dBc +dBC +dBN +dBZ +dBN +dCu +dBc +dBc +dBc +dEr +dEG +dES +dEZ +dFj +dFt +dFG +dFW +dGp +dFs +dHg +dHI +dIe +dIT +dJI +dIe +dKQ +dLA +dIe +dMQ +dNm +dND +dIe +dOK +dIe +dPA +dQj +dQG +dRl +dRI +dSh +dPA +dPA +dUt +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +dAV +dAV +dAV +dAV +aaa +aaa +aaa +dAV +dAV +dAV +dAV +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +"} +(133,1,3) = {" +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aag +aaa +aaa +aaa +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAZ +dBa +dAV +dAV +dAV +dAV +dAV +dAV +dBc +dBc +dBc +dBc +dCa +dBc +dBc +dBc +dBc +aaa +dEr +dEr +dEr +dEr +dEr +dFs +dFH +dFX +dGq +dFs +dHg +dHB +dIf +dIU +dJJ +dKn +dJJ +dLB +dMl +dMN +dNn +dNI +dOh +dOL +dPp +dOh +dQk +dQJ +dRm +dRI +dSi +dSU +aaa +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +aaf +aaf +aaf +aaf +aaf +aaf +aaf +aaa +dAV +dAV +dAV +dAV +aaa +aaa +aaa +dAV +dAV +dAV +dAV +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +"} +(134,1,3) = {" +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aad +aaa +aaa +aaa +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAZ +dAZ +dAZ +dAV +dAV +dAV +dAV +dAV +dBc +dBc +dBc +dBc +dBc +dBc +dBc +dBc +dBc +aaa +dAV +dAV +dAV +dAV +dAV +dFs +dFs +dFY +dGr +dFs +dHk +dHA +dHA +dIV +dJK +dKo +dKR +dLC +dMd +dMR +dNo +dNJ +dOi +dOM +dPq +dOi +dQl +dQK +dRn +dRH +dSj +dSV +aaa +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +"} +(135,1,3) = {" +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aad +aaf +aaf +aaf +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAZ +dBa +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dBc +dBc +dBc +dAV +dAV +aaa +aaa +dAV +dAV +dAV +dAV +dAV +dAV +dFs +dFs +dGs +dGs +dGs +dGs +dIg +dIW +dJL +dIW +dKS +dKW +dKW +dKW +dKW +dNK +dNK +dON +dNK +dNK +dQm +dNK +dRo +dRK +dSk +dSW +aaa +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +"} +(136,1,3) = {" +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aad +aaa +aaa +aaa +aaa +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAZ +dBa +dBa +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dCb +dAV +dAV +dAV +aaa +aaa +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dGt +dGP +dHl +dHJ +dIh +dIX +dJM +dIX +dKT +dLD +dMm +dMS +dKW +dNL +dOj +dOO +dNK +dPE +dQn +dNK +dRp +dNK +dSl +dNK +aaa +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +"} +(137,1,3) = {" +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaf +aaa +aaa +aaa +aaa +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAZ +dAZ +dAZ +dAZ +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dDA +dDA +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dGu +dGQ +dHm +dHK +dIi +dIY +dJN +dKp +dKU +dLE +dMn +dMT +dKW +dNM +dOk +dOP +dNK +dPF +dQo +dQL +dRq +dRL +dSm +dNK +dTN +dUq +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +"} +(138,1,3) = {" +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aad +aad +aaa +aaa +aaa +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAZ +dBa +dBa +dBa +dAV +dAV +dAV +dAV +dAV +dAV +dAV +aaa +aaa +aaa +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dGt +dGR +dHn +dHL +dGS +dIZ +dJO +dKq +dKV +dLF +dMo +dMU +dKW +dNN +dOl +dOQ +dPr +dPG +dQp +dQM +dRr +dQr +dQr +dSX +dTO +dUr +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +"} +(139,1,3) = {" +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aad +aaa +aaa +aaa +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAZ +dAZ +dAZ +dAZ +dAV +dAV +dAV +dAV +dAV +dAV +dAV +aaa +aaa +aaa +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dGs +dGS +dGS +dGS +dGs +dJa +dJP +dKr +dKW +dKV +dKV +dKV +dKW +dNO +dOm +dOR +dNK +dPH +dQq +dQN +dRs +dQq +dSn +dSY +dTP +dUr +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +"} +(140,1,3) = {" +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aad +aaf +aaf +aaf +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAZ +dBa +dBa +dBa +dAV +dAV +dAV +dAV +aaa +aaa +aaa +aaa +dAV +dAV +dAV +dAV +dAV +dAV +dGv +dGT +dHo +dHM +dIj +dJb +dJO +dKs +dKX +dLG +dMp +dMV +dLa +dNK +dOn +dNK +dNK +dPI +dQr +dQO +dRt +dRM +dSo +dSZ +dTQ +dUr +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +"} +(141,1,3) = {" +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaf +aaa +aaa +aaa +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAZ +dAZ +dAZ +dAV +dAV +dAV +dAV +dAV +aaa +aaa +aaa +aaa +aaa +dAV +dAV +dAV +dAV +dAV +dGw +dGU +dHp +dHN +dIk +dIY +dJN +dKp +dKY +dLH +dMq +dMW +dLa +dNP +dOo +dOS +dNK +dPJ +dQs +dQP +dRu +dQr +dOk +dOk +dTR +dUr +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +"} +(142,1,3) = {" +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaf +aaa +aaa +aaa +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +aaa +aaa +aaa +aab +aaa +aaa +dAV +dAV +dAV +dAV +dGv +dGV +dHq +dHO +dIl +dJc +dJQ +dKt +dKZ +dLI +dMr +dMX +dLa +dNQ +dOp +dOT +dNK +dPK +dQt +dQQ +dQr +dQr +dQr +dTa +dNK +dUs +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +"} +(143,1,3) = {" +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aad +aaa +aaa +aaa +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dCf +dCf +dCf +dCf +dCf +aaa +aaa +aaa +aaa +aaa +aaa +dAV +dAV +dGx +dGx +dGx +dGx +dGx +dJd +dJR +dKu +dLa +dLa +dLa +dLa +dLa +dNK +dNK +dNK +dNK +dNK +dNK +dNK +dRv +dRN +dSp +dNK +dNK +dMY +dMY +dMY +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +"} +(144,1,3) = {" +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aad +aaf +aaf +aaf +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dCf +dCv +dCS +dDB +dCf +dCf +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +dIm +dJe +dJO +dKs +dIm +dAV +dAV +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +dNK +dNK +dNK +dNK +dNK +dTS +dUu +dUG +dMY +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +"} +(145,1,3) = {" +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aad +aaa +aaa +aaa +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dCf +dCw +dCT +dDC +dEd +dCf +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +dIm +dJf +dJS +dJf +dIm +dAV +dAV +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +dMY +dRw +dRO +dMZ +dTb +dTT +dUv +dUv +dMY +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +aaf +aaf +aaf +aaf +aaf +aaf +aaf +aaa +dAV +dAV +dAV +dAV +aaa +aaa +aaa +dAV +dAV +dAV +dAV +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +"} +(146,1,3) = {" +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aKm +aaa +aaa +aaa +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dCf +dCx +dCU +dDD +dEe +dCf +dCf +dCf +dCf +dCf +dFu +dFu +dFu +dCf +dCf +dCf +dCf +dIn +dIW +dJL +dIW +dIu +dIu +dMs +dMY +dMY +dMY +dMY +dOU +dOU +dOU +dMY +dMY +dRx +dRP +dMZ +dTc +dTU +dUv +dUH +dMY +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +dAV +dAV +dAV +dAV +aaa +aaa +aaa +dAV +dAV +dAV +dAV +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +"} +(147,1,3) = {" +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaf +aaa +aaa +aaa +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dCf +dCy +dCU +dDD +dCU +dEv +dCU +dCS +dFa +dFk +dFv +dFI +dFZ +ecD +dCU +dHr +dEv +dIo +dJg +dJT +dIX +dLb +dLJ +dMt +dMZ +dNp +dNR +dOq +dOV +dPs +dPL +dQu +dQR +dRy +dRQ +dMZ +dVv +dTV +dUv +dUI +dMY +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +"} +(148,1,3) = {" +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aab +aaa +aaa +aaf +aaa +aaa +aaa +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dCf +dCz +dCV +dDE +dEf +dEw +dEH +dET +dFb +dFb +dFw +dFJ +dGa +dGz +dGW +dHs +dHP +dIp +dJh +dJU +dKv +dJh +dJh +dMu +dNa +dNq +dNS +dOr +dOW +dPt +dPM +dPM +dPM +dPM +dPM +dSq +dTe +dTW +dUw +dUJ +dMY +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +"} +(149,1,3) = {" +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aad +aaa +aaa +aaa +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dCf +dCA +dCW +dDF +dCW +dCf +dCf +dCf +dCf +dCf +dCf +dCf +dCf +dCf +dCf +dCf +dCf +dKw +dJi +dJV +dVw +dLc +dLK +dMv +dMY +dMY +dMY +dMY +dMY +dMY +dMY +dMY +dMY +dMY +dMY +dMY +dTf +dTX +dTf +dSr +dMY +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +"} +(150,1,3) = {" +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aad +aaf +aaf +aaa +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dCA +dCX +dDG +dEg +dCA +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dCf +dIr +dJj +dJj +dKx +dLd +dLL +dMw +dMY +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dSr +dTg +dTY +dUx +dSr +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +"} +(151,1,3) = {" +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aad +aaa +aaa +aaa +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dCA +dCY +dDH +dEh +dCA +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dIs +dJk +dJW +dKy +dLe +dLM +dLe +dMY +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dSr +dTh +dTZ +dUy +dSr +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +"} +(152,1,3) = {" +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aad +aaa +aaa +aaa +aaa +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dCA +dCZ +dDI +dEi +dCA +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dIt +dJl +dJX +dKz +dLf +dLN +dLf +dMY +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dSr +dTi +dUa +dUz +dSr +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +aaa +aaa +aaa +aaa +aaa +aaa +aaf +aaa +aaa +aaa +aaa +aaf +aaa +aaa +aaa +aaa +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +aaa +aaa +dAV +dAV +dAV +dAV +aaa +aaa +dAV +dAV +dAV +dAV +dAV +aaa +aaa +dAV +aaa +aaa +dAV +dAV +dAV +dAV +dAV +aaa +aaa +dAV +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +"} +(153,1,3) = {" +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aad +aaa +aaa +aaa +aaa +aaf +aaa +aaa +aaa +aaa +aaa +aaa +aaf +aaa +aaa +aaa +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +aaa +aaa +aaa +aaa +aaa +aaa +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dCB +dCB +dDJ +dEj +dCB +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dIu +dJm +dJm +dIu +dLg +dLO +dLg +dMY +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dSs +dTj +dUb +dSs +dSs +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +aaa +aaa +aaa +aaa +aaa +aaa +aaf +aaa +aaa +aaa +aaa +aaf +aaa +aaa +aaa +aaa +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +dAV +dAV +dAV +aaa +aaa +aaa +dAV +aaa +aaa +aaa +dAV +dAV +dAV +aaa +aaa +aaa +dAV +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +"} +(154,1,3) = {" +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aad +aad +aaa +aaa +aaa +aaf +aaa +aaa +aaa +aaa +aaa +aaa +aaf +aaa +aaa +aaa +aaf +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaf +aaa +aaa +aaa +aaa +aaf +aaa +aaa +aaa +aaa +aaa +dAV +dAV +dAV +dAV +dAV +dAV +dDa +dDK +dEk +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dIu +dJn +dJY +dIu +dLf +dLP +dLf +dMY +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dTk +dUc +dTm +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +aaa +aaa +aaa +aaa +aaa +aaa +aaf +aaa +aaa +aaa +aaa +aaf +aaa +aaa +aaa +aaa +aaf +aaa +aaa +aaa +aaa +dAV +dAV +dAV +dAV +dAV +aaa +aaa +aaa +aaa +aaf +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +dAV +dAV +dAV +aaa +aaa +aaa +dAV +aaa +aaa +aaa +dAV +dAV +dAV +aaa +aaa +aaa +dAV +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +"} +(155,1,3) = {" +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aad +aaf +aag +aad +aad +aad +aaf +aaa +aaa +aaa +aaa +aaf +aaa +aaa +aaa +aaf +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaf +aaa +aaa +aaa +aaa +aaf +aaa +aaa +aaa +aaa +aaa +dAV +dAV +dAV +dAV +dAV +dAV +dDa +dDL +dEl +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dLf +dLQ +dLf +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dTl +dUd +dTm +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +aaa +aaa +aaa +aaa +aaa +aaa +aag +aad +aad +aad +aaa +aad +aad +aad +aad +aaa +aaa +aaf +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaf +aaa +aaa +aaa +aaa +aaf +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +dAV +dAV +dAV +aaa +aaa +aaa +dAV +aaa +aaa +aaa +dAV +dAV +dAV +aaa +aaa +aaa +dAV +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +"} +(156,1,3) = {" +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aae +aaf +aag +aad +aad +aad +aaa +aaa +aaf +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaf +aaa +aaa +aaa +aaa +aaf +aaa +aaa +aaa +aaa +aaa +dAV +dAV +dAV +dAV +dAV +dAV +dDa +dDM +dDa +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dTm +dUe +dTm +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +aaa +aaa +aaa +aaa +aaa +aad +aad +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aad +aad +aaa +aaf +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaf +aaa +aaa +aaa +aaa +aaf +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +"} +(157,1,3) = {" +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aag +aad +aad +aad +aad +aad +aad +aaf +abc +aaf +aag +aad +aad +aad +aaa +aag +aad +aad +abc +aaa +aaa +aaa +aaa +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dDN +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dUf +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +aaf +aaf +aaf +aaf +aaf +aag +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aad +aad +aad +aaf +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaf +aaa +aad +aad +aad +aad +aag +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +"} +(158,1,3) = {" +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dDO +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dUg +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +aaa +aaa +aaa +aaa +aaf +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aae +aag +aad +aad +aad +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +"} +(159,1,3) = {" +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aab +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaf +aaf +aaf +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dDP +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dUh +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +aaa +aaa +aaa +aaa +aaf +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aab +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +"} +(160,1,3) = {" +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +dAV +dAV +dBD +dBD +dBD +dBD +dBD +dAV +dDQ +dAV +dBD +dBD +dBD +dBD +dBD +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dQv +dQv +dQv +dQv +dQv +dAV +dUh +dAV +dQv +dQv +dQv +dQv +dQv +dAV +dAV +dAV +aaa +aaa +aaa +aaa +aaf +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +"} +(161,1,3) = {" +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +dAV +dAV +dBE +dBO +dBO +dBO +dBO +dDb +dDQ +dEm +dEx +dEx +dEx +dEx +dFl +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dQw +dQS +dQS +dQS +dQS +dTn +dUi +dTn +dUK +dUK +dUK +dUK +dUM +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +"} +(162,1,3) = {" +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +dAV +dAV +dBF +dBF +dBF +dBF +dBF +dAV +dDQ +dAV +dBF +dBF +dBF +dBF +dBF +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dQx +dQx +dQx +dQx +dQx +dAV +dUh +dAV +dQx +dQx +dQx +dQx +dQx +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aab +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +"} +(163,1,3) = {" +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dDQ +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dUh +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +"} +(164,1,3) = {" +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +dAW +dAW +dAW +dAW +dAW +aaa +aaa +aaa +aaa +aaa +aaa +aaa +dAV +dAV +dBD +dBD +dBD +dBD +dBD +dAV +dDQ +dAV +dBD +dBD +dBD +dBD +dBD +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dQv +dQv +dQv +dQv +dQv +dAV +dUh +dAV +dQv +dQv +dQv +dQv +dQv +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +"} +(165,1,3) = {" +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +dAW +dAW +dAW +dAW +dAW +aaa +aaa +aaa +aaa +aaa +dAV +dAV +dAV +dAV +dBE +dBO +dBO +dBO +dBO +dDb +dDQ +dEm +dEx +dEx +dEx +dEx +dFl +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dQw +dQS +dQS +dQS +dQS +dTn +dUi +dTn +dUK +dUK +dUK +dUK +dUM +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +"} +(166,1,3) = {" +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +dAW +dAW +dAW +dAW +dAW +aaa +aaa +aaa +aaa +aaa +dAV +dAV +dAV +dAV +dBF +dBF +dBF +dBF +dBF +dAV +dDQ +dAV +dBF +dBF +dBF +dBF +dBF +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dQx +dQx +dQx +dQx +dQx +dAV +dUh +dAV +dQx +dQx +dQx +dQx +dQx +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +aaf +aaf +aaf +aad +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +"} +(167,1,3) = {" +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +dAW +dAW +dAW +dAW +dAW +aaa +aaa +aaa +aaa +aaa +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dDQ +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dUh +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +aaa +aaa +aaa +aad +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +dUN +dUN +dUN +dUN +dUN +dUN +dUN +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +"} +(168,1,3) = {" +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +dAW +dAW +dAW +dAW +dAW +aaa +aaa +aaa +aaa +aaa +dAV +dAV +dAV +dAV +dBD +dBD +dBD +dBD +dBD +dAV +dDQ +dAV +dBD +dBD +dBD +dBD +dBD +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dQv +dQv +dQv +dQv +dQv +dAV +dUh +dAV +dQv +dQv +dQv +dQv +dQv +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +aaa +aaa +aaa +aag +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +dUN +dUN +dUN +dUN +dUN +dUN +dUN +dUN +dUN +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +"} +(169,1,3) = {" +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +dAW +dAW +dAW +dAW +dAW +aaa +aaa +aaa +aaa +aaa +dAV +dAV +dAV +dAV +dBE +dBO +dBO +dBO +dBO +dDb +dDQ +dEm +dEx +dEx +dEx +dEx +dFl +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dQw +dQS +dQS +dQS +dQS +dTn +dUi +dTn +dUK +dUK +dUK +dUK +dUM +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +aaa +aaa +aaa +aad +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +dUN +dUN +dUN +dUN +dUN +dUN +dUN +dUN +dUN +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +"} +(170,1,3) = {" +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +dAW +dAW +dAW +dAW +dAW +aaa +aaa +aaa +aaa +aaf +dAV +dAV +dAV +dAV +dBF +dBF +dBF +dBF +dBF +dAV +dDQ +dAV +dBF +dBF +dBF +dBF +dBF +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dQx +dQx +dQx +dQx +dQx +dAV +dUh +dAV +dQx +dQx +dQx +dQx +dQx +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +aaf +aaf +aaf +aad +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +dUN +dUN +dUN +dUN +dUN +dUN +dUN +dUN +dUN +dUN +dUN +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +"} +(171,1,3) = {" +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +dAW +dAW +dAW +dAW +dAW +aaa +aaa +aaa +aaa +aaa +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dDQ +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dUh +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +aaa +aaa +aaa +aad +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +dUN +dUN +dUN +dUN +dUN +dUN +dUN +dUN +dUN +dUN +dUN +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +"} +(172,1,3) = {" +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +dAW +dAW +dAY +dAW +dAW +aaa +aaa +aaa +aaa +aaa +dAV +dAV +dAV +dAV +dBD +dBD +dBD +dBD +dBD +dAV +dDQ +dAV +dBD +dBD +dBD +dBD +dBD +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dQv +dQv +dQv +dQv +dQv +dAV +dUh +dAV +dQv +dQv +dQv +dQv +dQv +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +aaa +aaa +aad +aad +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +dUN +dUN +dUN +dUN +dUN +dUN +dUN +dUN +dUN +dUN +dUN +dUN +dUN +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +"} +(173,1,3) = {" +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +dAW +dAW +dAW +dAW +dAW +aaa +aaa +aaa +aaa +aaa +aaa +dAV +dAV +dAV +dBE +dBO +dBO +dBO +dBO +dDb +dDQ +dEm +dEx +dEx +dEx +dEx +dFl +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dQw +dQS +dQS +dQS +dQS +dTn +dUi +dTn +dUK +dUK +dUK +dUK +dUM +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +aaa +aaa +aad +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +dUN +dUN +dUN +dUN +dUN +dUN +dUN +dUN +dUN +dUN +dUN +dUN +dUN +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +"} +(174,1,3) = {" +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +dAW +dAW +dAW +dAW +dAW +aaa +aaa +aaa +aaa +aaf +aaf +dAV +dAV +dAV +dBF +dBF +dBF +dBF +dBF +dAV +dDQ +dAV +dBF +dBF +dBF +dBF +dBF +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dQx +dQx +dQx +dQx +dQx +dAV +dUh +dAV +dQx +dQx +dQx +dQx +dQx +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +aaf +aaf +aaf +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +dUN +dUN +dUN +dUN +dUN +dUN +dUN +dUN +dUN +dUN +dUN +dUN +dUN +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +"} +(175,1,3) = {" +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +dAW +dAW +dAW +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dDQ +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dUh +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +aaa +aaa +aaa +aad +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +dUN +dUN +dUN +dUN +dUN +dUN +dUN +dUN +dUN +dUN +dUN +dUN +dUN +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +"} +(176,1,3) = {" +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +dAV +dAV +dBD +dBD +dBD +dBD +dBD +dAV +dDQ +dAV +dBD +dBD +dBD +dBD +dBD +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dQv +dQv +dQv +dQv +dQv +dAV +dUh +dAV +dQv +dQv +dQv +dQv +dQv +dAV +dAV +dAV +dAV +dAV +dAV +dAV +aaa +aaa +aaa +aaa +aad +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +dUN +dUN +dUN +dUN +dUN +dUN +dUN +dUN +dUN +dUN +dUN +dUN +dUN +dUN +dUN +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +"} +(177,1,3) = {" +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aag +aaf +aaf +dAV +dAV +dBE +dBO +dBO +dBO +dBO +dDb +dDQ +dEm +dEx +dEx +dEx +dEx +dFl +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dQw +dQS +dQS +dQS +dQS +dTn +dUi +dTn +dUK +dUK +dUK +dUK +dUM +dAV +dAV +dAV +dAV +dAV +dAV +dAV +aaa +aaa +aaa +aaf +aag +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +dUN +dUN +dUN +dUN +dUN +dUN +dUN +dUN +dUN +dUN +dUN +dUN +dUN +dUN +dUN +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +"} +(178,1,3) = {" +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +dAV +dAV +dBF +dBF +dBF +dBF +dBF +dAV +dDQ +dAV +dBF +dBF +dBF +dBF +dBF +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dQx +dQx +dQx +dQx +dQx +dAV +dUh +dAV +dQx +dQx +dQx +dQx +dQx +dAV +dAV +dAV +dAV +dAV +dAV +dAV +aaa +aaa +aaa +aaf +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +dUN +dUN +dUN +dUN +dUN +dUN +dUN +dUN +dUN +dUN +dUN +dUN +dUN +dUN +dUN +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +"} +(179,1,3) = {" +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dDQ +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dUh +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +aaf +aaf +aaf +aad +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +dUN +dUN +dUN +dUN +dUN +dUN +dUN +dUN +dUN +dUN +dUN +dUN +dUN +dUN +dUN +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +"} +(180,1,3) = {" +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dDR +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dUh +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +aaa +aaa +aaa +aad +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +dUN +dUN +dUN +dUN +dUN +dUN +dUN +dUN +dUN +dUN +dUN +dUN +dUN +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +"} +(181,1,3) = {" +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +dAV +dAV +dAV +dAV +dAV +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +dAV +dAV +dAV +dAV +dAV +dAV +dDS +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dUj +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +aaa +aaa +aaa +aad +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +dUN +dUN +dUN +dUN +dUN +dUN +dUN +dUN +dUN +dUN +dUN +dUN +dUN +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +"} +(182,1,3) = {" +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +aaa +dAV +dAV +dAV +dAV +aaa +aaa +aaa +aaa +aaa +dAX +dAV +dAX +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +aaa +aaa +aaa +aaf +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +dUN +dUN +dUN +dUN +dUN +dUN +dUN +dUN +dUN +dUN +dUN +dUN +dUN +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +"} +(183,1,3) = {" +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAX +dAV +dAX +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +aaa +aaa +aaa +aae +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +dUN +dUN +dUN +dUN +dUN +dUN +dUN +dUN +dUN +dUN +dUN +dUN +dUN +dUN +dUN +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +"} +(184,1,3) = {" +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +aaa +aaa +aaa +aaa +aaa +dAX +dAV +dAX +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +aaa +aaa +aaa +aag +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +dUN +dUN +dUN +dUN +dUN +dUN +dUN +dUN +dUN +dUN +dUN +dUN +dUN +dUN +dUN +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +"} +(185,1,3) = {" +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +aaa +aaa +aaa +aaa +aaa +aaf +aaa +aaf +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +aaa +aaa +aaa +aad +aaa +aab +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +dUN +dUN +dUN +dUN +dUN +dUN +dUN +dUN +dUN +dUN +dUN +dUN +dUN +dUN +dUN +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +"} +(186,1,3) = {" +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaf +aaa +aaf +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +aaa +aaa +aaa +aad +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +dUN +dUN +dUN +dUN +dUN +dUN +dUN +dUN +dUN +dUN +dUN +dUN +dUN +dUN +dUN +dUN +dUN +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +"} +(187,1,3) = {" +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +aaf +aaf +aaf +aaf +aaf +aaf +aaf +aaf +aaf +aaf +aaf +aaf +aaf +aaf +aaf +aaf +aaf +aaf +aaf +aaa +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +aaf +aaf +aaf +aad +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +dUN +dUN +dUN +dUN +dUN +dUN +dUN +dUN +dUN +dUN +dUN +dUN +dUN +dUN +dUN +dUN +dUN +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +"} +(188,1,3) = {" +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +aaa +aaa +aaa +aaa +aaa +aaa +aad +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +dUN +dUN +dUN +dUN +dUN +dUN +dUN +dUN +dUN +dUN +dUN +dUN +dUN +dUN +dUN +dUN +dUN +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +"} +(189,1,3) = {" +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +aaa +aaa +aaa +aaa +aaa +aaa +aad +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +dUN +dUN +dUN +dUN +dUN +dUN +dUN +dUN +dUN +dUN +dUN +dUN +dUN +dUN +dUN +dUN +dUN +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +"} +(190,1,3) = {" +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +aaa +aaa +aaa +aaa +aaa +aaa +aad +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +dUN +dUN +dUN +dUN +dUN +dUN +dUN +dUN +dUN +dUN +dUN +dUN +dUN +dUN +dUN +dUN +dUN +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +"} +(191,1,3) = {" +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +aaf +aaf +aaf +aaf +aaf +aaf +aaf +aaf +aaf +aaf +aaf +aaf +aaf +aaf +aaf +aaf +aaf +aaf +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +aaf +aaa +aaa +aaa +aaa +aad +aad +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +dUN +dUN +dUN +dUN +dUN +dUN +dUN +dUN +dUN +dUN +dUN +dUN +dUN +dUN +dUN +dUN +dUN +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +"} +(192,1,3) = {" +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaf +aaa +aaf +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +aaa +aaa +aaa +aaf +aaa +aaa +aaa +aaa +aaf +aaa +aaa +aaa +aad +aad +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +dUN +dUN +dUN +dUN +dUN +dUN +dUN +dUN +dUN +dUN +dUN +dUN +dUN +dUN +dUN +dUN +dUN +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +"} +(193,1,3) = {" +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +aaa +aaa +aaa +aaa +aaa +aaf +aaa +aaf +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +aaa +aaa +aaa +aaf +aaa +aaa +aaa +aaa +aaf +aaa +aaa +aag +aad +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +dUN +dUN +dUN +dUN +dUN +dUN +dUN +dUN +dUN +dUN +dUN +dUN +dUN +dUN +dUN +dUN +dUN +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +"} +(194,1,3) = {" +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +aaa +aaa +aaa +aaa +aaa +dAX +dAV +dAX +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +aaa +aaa +aaa +aaf +aaa +aaa +aad +aad +aad +aad +aaf +abc +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +dUN +dUN +dUN +dUN +dUN +dUN +dUN +dUN +dUN +dUN +dUN +dUN +dUN +dUN +dUN +dUN +dUN +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +"} +(195,1,3) = {" +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAX +dAV +dAX +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +aaa +aaa +abc +abc +aag +aad +aad +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +dUN +dUN +dUN +dUN +dUN +dUN +dUN +dUN +dUN +dUN +dUN +dUN +dUN +dUN +dUN +dUN +dUN +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +"} +(196,1,3) = {" +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +aaa +dAV +dAV +dAV +dAV +aaa +aaa +aaa +bjT +aaa +dAX +dAV +dAX +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaf +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +dUN +dUN +dUN +dUN +dUN +dUN +dUN +dUN +dUN +dUN +dUN +dUN +dUN +dUN +dUN +dUN +dUN +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +"} +(197,1,3) = {" +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +dAV +dAV +dAV +dAV +dAV +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aad +aaa +aaa +aaa +aaf +aaa +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaf +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +dUN +dUN +dUN +dUN +dUN +dUN +dUN +dUN +dUN +dUN +dUN +dUN +dUN +dUN +dUN +dUN +dUN +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +"} +(198,1,3) = {" +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aad +aad +aaa +aaa +aaf +aaa +aaa +aaa +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +aaa +aaa +aaa +aaf +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaf +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aab +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +dUN +dUN +dUN +dUN +dUN +dUN +dUN +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +"} +(199,1,3) = {" +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +abc +aaf +aaa +aaf +aaa +aaa +aaa +aaf +aaa +aaa +aaa +dAV +dAV +dAV +dAV +dAV +aaa +aaa +aaa +aaa +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +aaa +aaa +aaa +aaf +aaa +aaa +aaa +aaf +aag +aad +aad +aad +abc +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +dUN +dUN +dUN +dUN +dUN +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +"} +(200,1,3) = {" +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aag +aad +aad +aad +aaa +aaa +aaf +aaa +aaa +aaa +dAV +dAV +dAV +dAV +dAV +aaa +aaa +aaa +aaa +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +aaa +aaa +aaa +aaf +aaa +aaa +aad +aad +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +dUN +dUN +dUN +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +"} +(201,1,3) = {" +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aad +aad +aaa +aaf +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +aaa +aaa +aaa +abc +aad +aad +aad +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +"} +(202,1,3) = {" +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aad +aad +aaf +abc +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +aaa +aaa +aaa +aaf +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +"} +(203,1,3) = {" +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +"} +(204,1,3) = {" +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +"} +(205,1,3) = {" +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aab +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +abc +aaa +aaa +aaa +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +aaa +aaa +aaa +aag +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +"} +(206,1,3) = {" +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aad +aaf +aaf +aaf +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +aaf +aaf +aaf +aad +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +"} +(207,1,3) = {" +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aad +aaa +aaa +aaa +aaa +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +dAV +aaa +aaa +aaa +aaa +aad +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +"} +(208,1,3) = {" +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aad +aaa +aaa +aaa +aaa +aaf +aaa +aaa +dAV +dAV +dAV +dAV +dAV +dAV +dAV +aaa +aaa +aaf +aaa +aaa +aaa +aaa +aad +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +"} +(209,1,3) = {" +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aad +aad +aaa +aaa +aaa +aaf +aaa +aaa +aaa +dAV +dAV +dAV +dAV +dAV +aaa +aaa +aaa +aaf +aaa +aaa +aaa +aad +aad +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +"} +(210,1,3) = {" +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aag +aad +aaa +aaa +aaf +aaa +aaa +aaa +aaa +aaa +aaf +aaa +aaa +aaa +aaa +aaa +aaf +aaa +aaa +aag +aad +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +"} +(211,1,3) = {" +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aad +aad +aad +aad +aaa +aaa +aaa +aaa +aaa +aaf +aaa +aaa +aaa +aaa +aad +aad +aad +aad +aaf +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +"} +(212,1,3) = {" +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaf +aaa +aaa +aaa +aad +aad +aXG +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +"} +(213,1,3) = {" +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aad +aad +aad +aad +aad +aad +abc +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +"} +(214,1,3) = {" +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aab +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +"} +(215,1,3) = {" +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +"} +(216,1,3) = {" +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +"} +(217,1,3) = {" +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +"} +(218,1,3) = {" +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +dBr +dBr +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +"} +(219,1,3) = {" +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +dBr +dBr +dBr +dBr +dBr +dBr +dBr +dBr +dBr +dBr +dBr +dBr +dBr +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +"} +(220,1,3) = {" +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +dBr +dBr +dBr +dBr +dBr +dBr +dBr +dBr +dBr +dBr +dBr +dBr +dBr +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +"} +(221,1,3) = {" +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +dBr +dBr +dBr +dBr +dBr +dBr +dBr +dBr +dBr +dBr +dBr +dBr +dBr +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +"} +(222,1,3) = {" +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +dBr +dBr +dBr +dBr +dBr +dBr +dBr +dBr +dBr +dBr +dBr +dBr +dBr +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +"} +(223,1,3) = {" +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +dBr +dBr +dBr +dBr +dBr +dBr +dBr +dBr +dBr +dBr +dBr +dBr +dBr +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +"} +(224,1,3) = {" +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +dBr +dBr +dBr +dBr +dBr +dBr +dBr +dBr +dBr +dBr +dBr +dBr +dBr +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +"} +(225,1,3) = {" +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +dBr +dBr +dBr +dBr +dBr +dBr +dBr +dBr +dBr +dBr +dBr +dBr +dBr +dBr +dBr +dBr +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +"} +(226,1,3) = {" +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +dBr +dBr +dBr +dBr +dBr +dBr +dBr +dBr +dBr +dBr +dBr +dBr +dBr +dBr +dBr +dBr +dBr +dBr +dBr +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +"} +(227,1,3) = {" +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +dBr +dBr +dBr +dBr +dBr +dBr +dBr +dBr +dBr +dBr +dBr +dBr +dBr +dBr +dBr +dBr +dBr +dBr +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +"} +(228,1,3) = {" +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +dBr +dBr +dBr +dBr +dBr +dBr +dBr +dBr +dBr +dBr +dBr +dBr +dBr +dBr +dBr +dBr +dBr +dBr +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +"} +(229,1,3) = {" +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +dBr +dBr +dBr +dBr +dBr +dBr +dBr +dBr +dBr +dBr +dBr +dBr +dBr +dBr +dBr +dBr +dBr +dBr +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +"} +(230,1,3) = {" +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +dBr +dBr +dBr +dBr +dBr +dBr +dBr +dBr +dBr +dBr +dBr +dBr +dBr +dBr +dBr +dBr +dBr +dBr +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +"} +(231,1,3) = {" +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +dBr +dBr +dBr +dBr +dBr +dBr +dBr +dBr +dBr +dBr +dBr +dBr +dBr +dBr +dBr +dBr +dBr +dBr +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +"} +(232,1,3) = {" +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +dBr +dBr +dBr +dBr +dBr +dBr +dBr +dBr +dBr +dBr +dBr +dBr +dBr +dBr +dBr +dBr +dBr +dBr +dBr +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +"} +(233,1,3) = {" +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +dBr +dBr +dBr +dBr +dBr +dBr +dBr +dBr +dBr +dBr +dBr +dBr +dBr +dBr +dBr +dBr +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +"} +(234,1,3) = {" +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +dBr +dBr +dBr +dBr +dBr +dBr +dBr +dBr +dBr +dBr +dBr +dBr +dBr +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +"} +(235,1,3) = {" +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +dBr +dBr +dBr +dBr +dBr +dBr +dBr +dBr +dBr +dBr +dBr +dBr +dBr +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +"} +(236,1,3) = {" +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +dBr +dBr +dBr +dBr +dBr +dBr +dBr +dBr +dBr +dBr +dBr +dBr +dBr +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +"} +(237,1,3) = {" +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +dBr +dBr +dBr +dBr +dBr +dBr +dBr +dBr +dBr +dBr +dBr +dBr +dBr +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +"} +(238,1,3) = {" +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +dBr +dBr +dBr +dBr +dBr +dBr +dBr +dBr +dBr +dBr +dBr +dBr +dBr +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +"} +(239,1,3) = {" +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +dBr +dBr +dBr +dBr +dBr +dBr +dBr +dBr +dBr +dBr +dBr +dBr +dBr +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +"} +(240,1,3) = {" +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +dBr +dBr +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +"} +(241,1,3) = {" +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +"} +(242,1,3) = {" +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +"} +(243,1,3) = {" +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +"} +(244,1,3) = {" +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +"} +(245,1,3) = {" +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +"} +(246,1,3) = {" +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +"} +(247,1,3) = {" +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +"} +(248,1,3) = {" +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +"} +(249,1,3) = {" +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +"} +(250,1,3) = {" +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +"} +(251,1,3) = {" +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +"} +(252,1,3) = {" +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +"} +(253,1,3) = {" +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +"} +(254,1,3) = {" +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +"} +(255,1,3) = {" +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +"} +======= "aaa" = (/turf/space,/area/space) "aab" = (/obj/effect/landmark{name = "carpspawn"},/turf/space,/area/space) "aac" = (/turf/space,/area/syndicate_station/firstdeck) @@ -377,7 +315441,7 @@ "ahm" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/effect/floor_decal/steeldecal/steel_decals5,/obj/effect/floor_decal/borderfloor/corner2{dir = 1},/obj/effect/floor_decal/borderfloor/corner2{dir = 4},/obj/effect/floor_decal/corner/green/bordercorner2{dir = 1},/obj/effect/floor_decal/corner/green/bordercorner2{dir = 4},/turf/simulated/floor/tiled,/area/hallway/primary/firstdeck/fore) "ahn" = (/obj/machinery/atmospherics/unary/vent_pump/on{dir = 4},/obj/machinery/light{dir = 8},/turf/simulated/floor/tiled/dark,/area/security/nuke_storage) "aho" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/turf/simulated/floor/tiled/dark,/area/security/nuke_storage) -"ahp" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 5},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 9},/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"},/mob/living/simple_animal/mouse/brown/Tom,/turf/simulated/floor/tiled/dark,/area/security/nuke_storage) +"ahp" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 5},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 9},/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"},/mob/living/simple_mob/animal/passive/mouse/brown/Tom,/turf/simulated/floor/tiled/dark,/area/security/nuke_storage) "ahq" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/turf/simulated/floor/tiled/dark,/area/security/nuke_storage) "ahr" = (/obj/machinery/camera/network/command{c_tag = "COM - Vault"; dir = 9},/obj/machinery/atmospherics/unary/vent_scrubber/on{dir = 8},/turf/simulated/floor/tiled/dark,/area/security/nuke_storage) "ahs" = (/turf/simulated/wall/r_wall,/area/storage/emergency_storage/firstdeck/fs_emergency) @@ -1024,8 +316088,8 @@ "atJ" = (/obj/machinery/door/firedoor/border_only,/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; pixel_y = 0},/obj/machinery/door/airlock/engineering{name = "Construction Area"; req_access = list(32)},/turf/simulated/floor/plating,/area/construction/firstdeck/construction4) "atK" = (/obj/structure/sign/directions/security{dir = 4},/turf/simulated/wall,/area/construction/firstdeck/construction4) "atL" = (/obj/machinery/door/firedoor/border_only,/obj/machinery/door/airlock/multi_tile/glass{name = "Research Division Access"; req_access = list(47)},/turf/simulated/floor/tiled/steel_grid,/area/rnd/research/firstdeck/hallway) -"atM" = (/obj/machinery/door/firedoor/border_only,/obj/machinery/door/airlock/glass{name = "Escape Pod"},/turf/simulated/floor/tiled/steel_grid,/area/hallway/secondary/escape/firstdeck/ep_starboard1) -"atN" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/machinery/door/airlock/glass{name = "Escape Pod"},/obj/machinery/door/firedoor/border_only,/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; pixel_y = 0},/obj/machinery/atmospherics/pipe/simple/hidden/supply,/turf/simulated/floor/tiled/steel_grid,/area/hallway/secondary/escape/firstdeck/ep_starboard1) +"atM" = (/obj/machinery/door/firedoor/border_only,/obj/structure/cable/green{d1 = 16; d2 = 0; icon_state = "16-0"},/obj/structure/cable/green{d2 = 8; icon_state = "0-8"},/obj/structure/disposalpipe/up{dir = 8},/obj/machinery/atmospherics/pipe/zpipe/up/supply{dir = 8},/obj/machinery/atmospherics/pipe/zpipe/up/scrubbers{dir = 8},/turf/simulated/floor/plating,/area/maintenance/firstdeck/centralstarboard) +"atN" = (/obj/machinery/door/firedoor/border_only,/obj/machinery/door/airlock/glass{name = "Research Access"},/turf/simulated/floor/tiled/steel_grid,/area/hallway/secondary/escape/firstdeck/ep_starboard1) "atO" = (/obj/effect/wingrille_spawn/reinforced,/obj/machinery/door/firedoor/glass,/turf/simulated/floor/plating,/area/hallway/secondary/escape/firstdeck/ep_starboard1) "atP" = (/turf/simulated/floor/tiled/dark,/area/hallway/primary/firstdeck/starboard) "atQ" = (/obj/machinery/alarm{pixel_y = 22},/turf/simulated/floor/tiled/dark,/area/hallway/primary/firstdeck/starboard) @@ -4240,7 +319304,7 @@ "bDB" = (/obj/machinery/door/firedoor/border_only,/obj/effect/wingrille_spawn/reinforced,/obj/structure/cable/green{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor,/area/engineering/engineer_eva) "bDC" = (/obj/effect/decal/cleanable/dirt,/obj/effect/floor_decal/industrial/warning/corner{dir = 1},/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/machinery/meter,/turf/simulated/floor/plating,/area/maintenance/engineering) "bDD" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/machinery/meter,/turf/simulated/floor/plating,/area/maintenance/engineering) -"bDE" = (/obj/structure/closet,/obj/item/clothing/glasses/welding,/obj/item/weapon/weldingtool,/obj/effect/decal/cleanable/dirt,/obj/item/clothing/shoes/boots/workboots,/obj/random/maintenance/engineering,/obj/random/maintenance/cargo,/obj/random/maintenance/engineering,/obj/item/clothing/glasses/sunglasses,/turf/simulated/floor/plating,/area/maintenance/engineering) +"bDE" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/machinery/door/firedoor/border_only,/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; pixel_y = 0},/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/machinery/door/airlock/glass{name = "Research Access"},/turf/simulated/floor/tiled/steel_grid,/area/hallway/secondary/escape/firstdeck/ep_starboard1) "bDF" = (/obj/random/tool,/turf/simulated/floor/plating,/area/maintenance/engineering) "bDG" = (/turf/simulated/wall,/area/storage/emergency_storage/seconddeck/fp_emergency) "bDH" = (/obj/machinery/door/firedoor/border_only,/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; pixel_y = 0},/obj/machinery/door/airlock{name = "Emergency Storage"},/turf/simulated/floor/plating,/area/storage/emergency_storage/seconddeck/fp_emergency) @@ -4265,7 +319329,7 @@ "bEa" = (/turf/simulated/wall/r_wall,/area/maintenance/substation/research) "bEb" = (/obj/machinery/power/apc{dir = 8; name = "west bump"; pixel_x = -24},/obj/machinery/light_switch{pixel_x = -36},/obj/structure/cable/green{d2 = 2; icon_state = "0-2"},/obj/effect/floor_decal/borderfloorwhite{dir = 8},/obj/effect/floor_decal/corner/blue/border{dir = 8},/turf/simulated/floor/tiled/white,/area/crew_quarters/heads/sc/hor) "bEc" = (/turf/simulated/floor/tiled/white,/area/crew_quarters/heads/sc/hor) -"bEd" = (/mob/living/simple_animal/slime/rainbow/kendrick,/turf/simulated/floor/tiled/white,/area/crew_quarters/heads/sc/hor) +"bEd" = (/mob/living/simple_mob/slime/xenobio/rainbow/kendrick,/turf/simulated/floor/tiled/white,/area/crew_quarters/heads/sc/hor) "bEe" = (/obj/structure/bed/chair/office/light,/obj/effect/landmark/start{name = "Research Director"},/turf/simulated/floor/tiled/white,/area/crew_quarters/heads/sc/hor) "bEf" = (/obj/structure/table/reinforced,/obj/item/device/paicard{pixel_x = 4},/obj/item/device/tape,/obj/item/device/taperecorder{pixel_x = -3},/obj/item/weapon/reagent_containers/food/drinks/jar,/obj/effect/floor_decal/borderfloorwhite{dir = 4},/obj/effect/floor_decal/corner/blue/border{dir = 4},/turf/simulated/floor/tiled/white,/area/crew_quarters/heads/sc/hor) "bEg" = (/obj/machinery/door/firedoor/border_only,/obj/effect/wingrille_spawn/reinforced/polarized{id = "rdoffice"},/turf/simulated/floor/plating,/area/crew_quarters/heads/sc/hor) @@ -4317,8 +319381,8 @@ "bFa" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 9},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 9; pixel_y = 0},/obj/effect/floor_decal/steeldecal/steel_decals4{dir = 4},/obj/effect/floor_decal/steeldecal/steel_decals4{dir = 9},/turf/simulated/floor/tiled,/area/engineering/engineer_eva) "bFb" = (/obj/structure/cable/green{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/effect/floor_decal/borderfloor{dir = 4},/obj/effect/floor_decal/corner/yellow/border{dir = 4},/turf/simulated/floor/tiled,/area/engineering/engineer_eva) "bFc" = (/obj/item/weapon/tank/jetpack/carbondioxide,/obj/structure/window/reinforced{dir = 4; health = 1e+006},/obj/structure/window/reinforced{dir = 1},/obj/structure/table/rack{dir = 8; layer = 2.6},/obj/machinery/door/window/westright{name = "Jetpack Storage"; req_one_access = list(11,24)},/obj/machinery/ai_status_display{pixel_y = 32},/turf/simulated/floor/tiled/dark,/area/engineering/engineer_eva) -"bFd" = (/obj/machinery/atmospherics/pipe/manifold/hidden/supply{dir = 8},/turf/simulated/floor/plating,/area/maintenance/engineering) -"bFe" = (/obj/machinery/atmospherics/pipe/simple/visible/universal{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/turf/simulated/floor/plating,/area/maintenance/engineering) +"bFd" = (/obj/machinery/door/firedoor/border_only,/obj/machinery/doppler_array{dir = 1},/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 8; health = 1e+006},/obj/structure/window/reinforced,/turf/simulated/floor/tiled/dark,/area/rnd/toxins_launch) +"bFe" = (/obj/structure/closet,/obj/item/clothing/glasses/welding,/obj/item/weapon/weldingtool,/obj/effect/decal/cleanable/dirt,/obj/item/clothing/shoes/boots/workboots,/obj/random/maintenance/engineering,/obj/random/maintenance/cargo,/obj/random/maintenance/engineering,/obj/item/clothing/glasses/sunglasses,/obj/machinery/light/small{dir = 4},/turf/simulated/floor/plating,/area/maintenance/engineering) "bFf" = (/obj/machinery/atmospherics/valve{dir = 4},/obj/effect/floor_decal/industrial/warning{icon_state = "warning"; dir = 9},/turf/simulated/floor/plating,/area/maintenance/engineering) "bFg" = (/obj/machinery/atmospherics/pipe/manifold/hidden/cyan{dir = 1},/obj/machinery/meter,/obj/effect/floor_decal/industrial/warning/corner{icon_state = "warningcorner"; dir = 1},/turf/simulated/floor/plating,/area/maintenance/engineering) "bFh" = (/obj/machinery/atmospherics/pipe/tank/air{dir = 8},/turf/simulated/floor/plating,/area/maintenance/engineering) @@ -4410,9 +319474,9 @@ "bGP" = (/obj/machinery/suit_cycler/engineering,/turf/simulated/floor/tiled/dark,/area/engineering/engineer_eva) "bGQ" = (/obj/machinery/atmospherics/unary/vent_scrubber/on,/obj/structure/cable/green{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/effect/floor_decal/borderfloor{dir = 4},/obj/effect/floor_decal/corner/yellow/border{dir = 4},/turf/simulated/floor/tiled,/area/engineering/engineer_eva) "bGR" = (/obj/item/weapon/tank/jetpack/carbondioxide,/obj/structure/window/reinforced{dir = 4; health = 1e+006},/obj/structure/window/reinforced,/obj/structure/table/rack{dir = 8; layer = 2.6},/obj/machinery/door/window/westleft{name = "Jetpack Storage"; req_one_access = list(11,24)},/obj/machinery/light{dir = 4},/turf/simulated/floor/tiled/dark,/area/engineering/engineer_eva) -"bGS" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 5},/turf/simulated/floor/plating,/area/maintenance/engineering) -"bGT" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 10},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/turf/simulated/floor/plating,/area/maintenance/engineering) -"bGU" = (/obj/machinery/light/small,/obj/effect/floor_decal/industrial/warning{dir = 8},/turf/simulated/floor,/area/maintenance/engineering) +"bGS" = (/obj/machinery/atmospherics/pipe/manifold/hidden/supply{dir = 8},/obj/effect/floor_decal/industrial/warning,/turf/simulated/floor/plating,/area/maintenance/engineering) +"bGT" = (/obj/machinery/atmospherics/pipe/simple/visible/universal{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/effect/floor_decal/industrial/warning,/turf/simulated/floor/plating,/area/maintenance/engineering) +"bGU" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 5},/obj/machinery/door/blast/regular{density = 0; dir = 1; icon_state = "pdoor0"; id = "englockdown"; name = "Engineering Lockdown"; opacity = 0},/turf/simulated/floor/plating,/area/maintenance/engineering) "bGV" = (/obj/machinery/atmospherics/pipe/simple/hidden/cyan{dir = 5; icon_state = "intact"},/turf/simulated/floor,/area/maintenance/engineering) "bGW" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; pixel_y = 0},/obj/machinery/door/firedoor/border_only,/turf/simulated/floor/plating,/area/maintenance/engineering) "bGX" = (/obj/machinery/light/small{dir = 8},/obj/machinery/space_heater,/turf/simulated/floor/plating,/area/storage/emergency_storage/seconddeck/fp_emergency) @@ -5151,7 +320215,7 @@ "bVc" = (/obj/effect/floor_decal/industrial/warning,/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/structure/cable/green{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor/tiled/white,/area/assembly/robotics) "bVd" = (/obj/effect/floor_decal/industrial/warning,/turf/simulated/floor/tiled/white,/area/assembly/robotics) "bVe" = (/obj/structure/table/standard,/obj/structure/window/reinforced,/obj/item/weapon/tool/screwdriver,/obj/item/weapon/tool/crowbar,/obj/item/weapon/surgical/circular_saw,/obj/item/weapon/surgical/hemostat,/obj/item/stack/cable_coil,/obj/item/weapon/weldingtool/hugetank,/obj/effect/floor_decal/industrial/warning,/obj/machinery/light{dir = 4; icon_state = "tube1"},/turf/simulated/floor/tiled/white,/area/assembly/robotics) -"bVf" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 5},/obj/structure/closet/crate,/obj/item/weapon/tool/wrench,/obj/item/weapon/tool/crowbar/red,/obj/machinery/computer/security/telescreen{desc = "Used to monitor the proceedings inside the test chamber."; name = "Test Chamber Monitor"; network = list("Miscellaneous Reseach"); pixel_x = -32; pixel_y = -4},/obj/machinery/camera/network/research{c_tag = "SCI - Miscellaneous Research"; dir = 4},/obj/effect/floor_decal/borderfloorwhite{dir = 8},/obj/effect/floor_decal/corner/purple/border{dir = 8},/turf/simulated/floor/tiled/white,/area/rnd/misc_lab) +"bVf" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 10},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/machinery/door/blast/regular{density = 0; dir = 1; icon_state = "pdoor0"; id = "englockdown"; name = "Engineering Lockdown"; opacity = 0},/turf/simulated/floor/plating,/area/maintenance/engineering) "bVg" = (/obj/machinery/hologram/holopad,/obj/structure/cable/green{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/simple/hidden/universal{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/effect/floor_decal/industrial/outline/grey,/turf/simulated/floor/tiled/white,/area/rnd/misc_lab) "bVh" = (/obj/machinery/atmospherics/binary/pump{dir = 8},/obj/effect/floor_decal/borderfloorwhite{dir = 4},/obj/effect/floor_decal/corner/purple/border{dir = 4},/turf/simulated/floor/tiled/white,/area/rnd/misc_lab) "bVi" = (/obj/machinery/atmospherics/pipe/simple/heat_exchanging{icon_state = "intact"; dir = 10},/obj/structure/lattice,/turf/space,/area/space) @@ -5593,7 +320657,7 @@ "cdC" = (/obj/machinery/atmospherics/unary/vent_scrubber/on{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/supply,/turf/simulated/floor/tiled/white,/area/rnd/research/firstdeck/hallway) "cdD" = (/obj/machinery/camera/network/research{c_tag = "SCI - Research Hallway Aft"; dir = 8},/obj/effect/floor_decal/borderfloorwhite/corner{dir = 4},/obj/effect/floor_decal/corner/purple/bordercorner{dir = 4},/turf/simulated/floor/tiled/white,/area/rnd/research) "cdE" = (/obj/structure/sign/warning/server_room,/turf/simulated/wall/r_wall,/area/rnd/workshop) -"cdF" = (/obj/machinery/light{dir = 8},/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/effect/floor_decal/borderfloorblack/corner{dir = 1},/obj/effect/floor_decal/corner/green/bordercorner{dir = 1},/turf/simulated/floor/tiled/dark,/area/rnd/workshop) +"cdF" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 5},/obj/structure/closet/crate,/obj/item/weapon/tool/wrench,/obj/item/weapon/tool/crowbar/red,/obj/machinery/computer/security/telescreen{desc = "Used to monitor the proceedings inside the test chamber."; name = "Test Chamber Monitor"; network = list("Miscellaneous Reseach"); pixel_x = -32; pixel_y = -4},/obj/machinery/camera/network/research{c_tag = "SCI - Miscellaneous Research"; dir = 4},/obj/effect/floor_decal/borderfloorwhite{dir = 8},/obj/effect/floor_decal/corner/purple/border{dir = 8},/obj/item/device/suit_cooling_unit,/turf/simulated/floor/tiled/white,/area/rnd/misc_lab) "cdG" = (/obj/machinery/hologram/holopad,/obj/effect/floor_decal/industrial/outline/grey,/turf/simulated/floor/tiled/dark,/area/rnd/workshop) "cdH" = (/obj/structure/table/steel,/obj/item/device/electronic_assembly/large{pixel_y = 6},/obj/structure/reagent_dispensers/acid{density = 0; pixel_x = 30; pixel_y = 0},/obj/effect/floor_decal/borderfloorblack{dir = 4},/obj/effect/floor_decal/corner/green/border{dir = 4},/turf/simulated/floor/tiled/dark,/area/rnd/workshop) "cdI" = (/turf/simulated/floor/plating,/area/hallway/secondary/seconddeck/research_medical) @@ -5764,7 +320828,7 @@ "cgR" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 5},/obj/structure/disposalpipe/segment{dir = 8; icon_state = "pipe-c"},/obj/effect/floor_decal/borderfloorwhite/corner,/obj/effect/floor_decal/corner/purple/bordercorner,/turf/simulated/floor/tiled/white,/area/rnd/research) "cgS" = (/obj/machinery/atmospherics/unary/vent_scrubber/on{dir = 8},/obj/item/device/radio/intercom{name = "Station Intercom (General)"; pixel_y = -21},/obj/effect/floor_decal/borderfloorwhite,/obj/effect/floor_decal/corner/purple/border,/turf/simulated/floor/tiled/white,/area/rnd/research) "cgT" = (/obj/machinery/power/apc{dir = 8; name = "west bump"; pixel_x = -24},/obj/machinery/light_switch{pixel_x = -36},/obj/structure/cable/green,/obj/effect/floor_decal/borderfloorblack,/obj/effect/floor_decal/corner/green/border,/turf/simulated/floor/tiled/dark,/area/rnd/workshop) -"cgU" = (/obj/machinery/r_n_d/circuit_imprinter,/obj/item/weapon/reagent_containers/glass/beaker/sulphuric,/obj/machinery/camera/network/research{c_tag = "SCI - Workshop"; dir = 1},/obj/effect/floor_decal/borderfloorblack,/obj/effect/floor_decal/corner/green/border,/turf/simulated/floor/tiled/dark,/area/rnd/workshop) +"cgU" = (/obj/machinery/door/firedoor/border_only,/obj/structure/lattice,/obj/structure/cable/green{d1 = 32; d2 = 4; icon_state = "32-4"},/obj/structure/disposalpipe/down{dir = 4},/obj/machinery/atmospherics/pipe/zpipe/down/supply{dir = 4},/obj/machinery/atmospherics/pipe/zpipe/down/scrubbers{dir = 4},/turf/simulated/open,/area/maintenance/research_medical) "cgV" = (/obj/structure/table/steel,/obj/item/stack/material/glass{amount = 50; pixel_x = 3; pixel_y = 3},/obj/item/weapon/reagent_containers/food/snacks/cheesiehonkers,/obj/item/weapon/reagent_containers/food/drinks/cans/space_mountain_wind,/obj/random/maintenance/research,/obj/machinery/firealarm{dir = 1; pixel_x = 0; pixel_y = -24},/obj/effect/floor_decal/borderfloorblack{dir = 6},/obj/effect/floor_decal/corner/green/border{dir = 6},/turf/simulated/floor/tiled/dark,/area/rnd/workshop) "cgW" = (/obj/item/frame/light,/turf/simulated/floor/plating,/area/hallway/secondary/seconddeck/research_medical) "cgX" = (/obj/structure/closet/crate/medical,/obj/random/maintenance/medical,/obj/random/maintenance/medical,/obj/random/maintenance/medical,/obj/random/maintenance/medical,/obj/random/medical,/obj/random/medical/lite,/turf/simulated/floor/tiled/white,/area/hallway/secondary/seconddeck/research_medical) @@ -6338,7 +321402,7 @@ "crT" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 10},/obj/structure/disposalpipe/segment{dir = 4},/obj/structure/catwalk,/turf/simulated/floor/plating,/area/maintenance/apmaint) "crU" = (/obj/structure/disposalpipe/segment{dir = 4},/obj/structure/catwalk,/turf/simulated/floor/plating,/area/maintenance/apmaint) "crV" = (/obj/structure/disposalpipe/segment{dir = 2; icon_state = "pipe-c"},/obj/structure/catwalk,/turf/simulated/floor/plating,/area/maintenance/apmaint) -"crW" = (/obj/machinery/light/small,/obj/structure/catwalk,/turf/simulated/floor/plating,/area/maintenance/apmaint) +"crW" = (/obj/machinery/light{dir = 8},/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/effect/floor_decal/borderfloorblack/corner{dir = 1},/obj/effect/floor_decal/corner/green/bordercorner{dir = 1},/obj/machinery/r_n_d/circuit_imprinter,/obj/item/weapon/reagent_containers/glass/beaker/sulphuric,/turf/simulated/floor/tiled/dark,/area/rnd/workshop) "crX" = (/obj/effect/floor_decal/industrial/hatch/yellow,/obj/machinery/door/blast/regular{density = 0; dir = 1; icon_state = "pdoor0"; id = "crglockdown"; name = "Cargo Lockdown"; opacity = 0},/turf/simulated/floor/tiled/dark,/area/hallway/primary/seconddeck/port) "crY" = (/obj/structure/table/rack{dir = 1},/obj/item/weapon/storage/bag/ore,/obj/random/maintenance/cargo,/obj/random/maintenance/cargo,/obj/random/maintenance/cargo,/obj/random/maintenance/cargo,/turf/simulated/floor/plating,/area/maintenance/emergencyeva) "crZ" = (/obj/structure/closet/emcloset,/turf/simulated/floor/plating,/area/maintenance/emergencyeva) @@ -6364,7 +321428,7 @@ "cst" = (/obj/structure/table/reinforced,/obj/machinery/door/blast/shutters{density = 0; dir = 8; icon_state = "shutter0"; id = "hop_office_desk"; name = "HoP Office Privacy Shutters"; opacity = 0},/obj/machinery/door/window/brigdoor/eastright{name = "Head of Personnel's Desk"; req_access = list(57)},/obj/machinery/door/window/northleft{dir = 8; icon_state = "left"; name = "Reception Window"},/obj/structure/noticeboard{pixel_y = 27},/obj/machinery/door/firedoor/glass,/turf/simulated/floor/tiled/dark,/area/crew_quarters/heads/sc/hop) "csu" = (/obj/structure/bed/chair/office/dark{dir = 8},/obj/effect/landmark/start{name = "Head of Personnel"},/obj/effect/floor_decal/borderfloor{dir = 8},/obj/effect/floor_decal/corner/blue/border{dir = 8},/turf/simulated/floor/tiled,/area/crew_quarters/heads/sc/hop) "csv" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 5},/obj/structure/cable/green{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor/tiled,/area/crew_quarters/heads/sc/hop) -"csw" = (/obj/machinery/atmospherics/unary/vent_scrubber/on{dir = 8},/obj/effect/floor_decal/borderfloor{dir = 4},/obj/effect/floor_decal/corner/blue/border{dir = 4},/mob/living/simple_animal/corgi/Ian,/turf/simulated/floor/tiled,/area/crew_quarters/heads/sc/hop) +"csw" = (/obj/machinery/atmospherics/unary/vent_scrubber/on{dir = 8},/obj/effect/floor_decal/borderfloor{dir = 4},/obj/effect/floor_decal/corner/blue/border{dir = 4},/mob/living/simple_mob/animal/passive/dog/corgi/Ian,/turf/simulated/floor/tiled,/area/crew_quarters/heads/sc/hop) "csx" = (/obj/structure/bed/chair/office/dark,/turf/simulated/floor/carpet,/area/crew_quarters/heads/sc/hop) "csy" = (/obj/structure/table/reinforced,/obj/machinery/recharger{pixel_y = 0},/obj/item/weapon/packageWrap,/obj/item/weapon/hand_labeler,/obj/machinery/computer/guestpass{pixel_x = 28; pixel_y = 0},/turf/simulated/floor/carpet,/area/crew_quarters/heads/sc/hop) "csz" = (/obj/structure/disposalpipe/segment,/turf/simulated/floor/tiled,/area/hallway/primary/seconddeck/ascenter) @@ -6502,9 +321566,9 @@ "cvb" = (/obj/machinery/atmospherics/pipe/simple/hidden/cyan{dir = 10; icon_state = "intact"},/obj/effect/floor_decal/industrial/warning{icon_state = "warning"; dir = 4},/turf/simulated/floor/plating,/area/maintenance/apmaint) "cvc" = (/obj/machinery/atmospherics/valve/digital/open,/turf/simulated/floor/plating,/area/maintenance/apmaint) "cvd" = (/obj/machinery/disposal/deliveryChute,/obj/structure/disposalpipe/trunk{dir = 1},/turf/simulated/floor/plating,/area/quartermaster/delivery) -"cve" = (/obj/effect/floor_decal/industrial/warning/corner{dir = 8},/obj/effect/floor_decal/steeldecal/steel_decals4{dir = 9},/obj/effect/floor_decal/steeldecal/steel_decals4{dir = 4},/turf/simulated/floor/tiled,/area/quartermaster/delivery) -"cvf" = (/obj/structure/filingcabinet/filingcabinet,/obj/item/device/radio/intercom{dir = 1; name = "Station Intercom (General)"; pixel_y = 21},/obj/effect/floor_decal/borderfloor{dir = 4},/obj/effect/floor_decal/corner/brown/border{dir = 4},/turf/simulated/floor/tiled,/area/quartermaster/delivery) -"cvg" = (/obj/machinery/door/firedoor/border_only,/obj/effect/wingrille_spawn/reinforced,/obj/machinery/status_display{layer = 4},/turf/simulated/floor/plating,/area/quartermaster/delivery) +"cve" = (/obj/machinery/camera/network/research{c_tag = "SCI - Workshop"; dir = 1},/obj/effect/floor_decal/borderfloorblack,/obj/effect/floor_decal/corner/green/border,/turf/simulated/floor/tiled/dark,/area/rnd/workshop) +"cvf" = (/obj/structure/catwalk,/obj/machinery/light/small{dir = 1},/turf/simulated/floor/plating,/area/maintenance/apmaint) +"cvg" = (/obj/machinery/door/blast/regular{density = 0; dir = 1; icon_state = "pdoor0"; id = "crglockdown"; name = "Cargo Lockdown"; opacity = 0},/obj/effect/floor_decal/industrial/warning{dir = 1},/turf/simulated/floor/plating,/area/maintenance/apmaint) "cvh" = (/obj/structure/bed/chair,/obj/effect/floor_decal/borderfloor{dir = 9},/obj/effect/floor_decal/corner/brown/border{dir = 9},/obj/item/device/radio/intercom{dir = 1; name = "Station Intercom (General)"; pixel_y = 21},/turf/simulated/floor/tiled,/area/quartermaster/foyer) "cvi" = (/obj/structure/bed/chair,/obj/machinery/alarm{pixel_y = 22},/obj/effect/floor_decal/borderfloor/corner{dir = 1},/obj/effect/floor_decal/corner/brown/bordercorner{dir = 1},/turf/simulated/floor/tiled,/area/quartermaster/foyer) "cvj" = (/obj/effect/floor_decal/steeldecal/steel_decals4{dir = 9},/obj/effect/floor_decal/steeldecal/steel_decals4{dir = 4},/turf/simulated/floor/tiled,/area/quartermaster/foyer) @@ -6610,7 +321674,7 @@ "cxf" = (/obj/machinery/conveyor{dir = 1; id = "packageSort1"},/obj/machinery/ai_status_display{pixel_x = -32; pixel_y = 0},/turf/simulated/floor/plating,/area/quartermaster/delivery) "cxg" = (/obj/effect/floor_decal/industrial/warning{dir = 9},/obj/machinery/alarm{pixel_y = 23},/obj/machinery/atmospherics/unary/vent_pump/on,/turf/simulated/floor/tiled,/area/quartermaster/delivery) "cxh" = (/obj/effect/floor_decal/industrial/warning/corner{icon_state = "warningcorner"; dir = 1},/turf/simulated/floor/tiled,/area/quartermaster/delivery) -"cxi" = (/obj/structure/bed/chair{dir = 4},/obj/effect/landmark/start{name = "Cargo Technician"},/obj/effect/floor_decal/borderfloor{dir = 4},/obj/effect/floor_decal/corner/brown/border{dir = 4},/turf/simulated/floor/tiled,/area/quartermaster/delivery) +"cxi" = (/obj/machinery/status_display{layer = 4},/turf/simulated/wall,/area/quartermaster/delivery) "cxj" = (/obj/structure/table/reinforced,/obj/machinery/door/window/westright{name = "Mailing Room"; req_access = list(50)},/obj/machinery/door/firedoor/glass,/obj/item/weapon/folder/yellow,/obj/item/weapon/pen{pixel_x = 4; pixel_y = 4},/turf/simulated/floor/tiled,/area/quartermaster/delivery) "cxk" = (/obj/effect/floor_decal/borderfloor{dir = 8},/obj/effect/floor_decal/corner/brown/border{dir = 8},/turf/simulated/floor/tiled,/area/quartermaster/foyer) "cxl" = (/turf/simulated/floor/tiled,/area/quartermaster/foyer) @@ -6754,7 +321818,7 @@ "czT" = (/obj/effect/floor_decal/corner/paleblue{dir = 10},/obj/effect/floor_decal/corner/paleblue{dir = 5},/turf/simulated/floor/tiled/white,/area/medical/foyer) "czU" = (/obj/effect/floor_decal/borderfloorwhite{dir = 4},/obj/effect/floor_decal/corner/paleblue/border{dir = 4},/turf/simulated/floor/tiled/white,/area/medical/foyer) "czV" = (/obj/structure/table/reinforced,/obj/machinery/door/firedoor/glass,/obj/machinery/door/window/westright{name = "Chemistry Desk"},/obj/machinery/door/window/eastright{name = "Chemistry Desk"; req_access = list(33)},/obj/machinery/door/blast/shutters{density = 0; dir = 8; icon_state = "shutter0"; id = "chemcounter"; name = "Pharmacy Counter Shutters"; opacity = 0},/turf/simulated/floor/tiled/white,/area/medical/chemistry) -"czW" = (/obj/item/weapon/stool/padded,/obj/effect/floor_decal/borderfloorwhite{dir = 8},/obj/effect/floor_decal/corner/beige/border{dir = 8},/turf/simulated/floor/tiled/white,/area/medical/chemistry) +"czW" = (/obj/item/weapon/stool/padded,/obj/effect/floor_decal/borderfloorwhite{dir = 8},/obj/effect/floor_decal/corner/beige/border{dir = 8},/obj/machinery/button/remote/blast_door{id = "chemcounter"; name = "Pharmacy Counter Lockdown Control"; pixel_x = -24; pixel_y = 24},/obj/machinery/button/remote/blast_door{id = "chemwindow"; name = "Pharmacy Windows Shutter Control"; pixel_x = -24; pixel_y = 32; pixel_z = 0},/turf/simulated/floor/tiled/white,/area/medical/chemistry) "czX" = (/turf/simulated/floor/tiled/white,/area/medical/chemistry) "czY" = (/obj/machinery/disposal,/obj/structure/disposalpipe/trunk,/turf/simulated/floor/tiled/white,/area/medical/chemistry) "czZ" = (/obj/effect/floor_decal/steeldecal/steel_decals4,/obj/effect/floor_decal/steeldecal/steel_decals4{dir = 10},/turf/simulated/floor/tiled/white,/area/medical/chemistry) @@ -6846,11 +321910,11 @@ "cBH" = (/obj/structure/disposalpipe/junction{dir = 1; icon_state = "pipe-j2"},/turf/simulated/floor/tiled/white,/area/medical/foyer) "cBI" = (/obj/effect/floor_decal/corner/paleblue{dir = 6},/obj/effect/floor_decal/corner/paleblue{dir = 9},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/turf/simulated/floor/tiled/white,/area/medical/foyer) "cBJ" = (/obj/structure/bed/chair{dir = 8},/obj/effect/floor_decal/borderfloorwhite{dir = 4},/obj/effect/floor_decal/corner/paleblue/border{dir = 4},/turf/simulated/floor/tiled/white,/area/medical/foyer) -"cBK" = (/obj/machinery/atmospherics/unary/vent_pump/on{dir = 4},/obj/structure/table/glass,/obj/item/weapon/storage/box/syringes,/obj/item/weapon/tool/screwdriver,/obj/machinery/button/remote/blast_door{id = "chemwindow"; name = "Pharmacy Windows Shutter Control"; pixel_x = 6; pixel_y = -18; pixel_z = 0},/obj/machinery/button/remote/blast_door{id = "chemcounter"; name = "Pharmacy Counter Lockdown Control"; pixel_x = -6; pixel_y = -18},/obj/effect/floor_decal/borderfloorwhite{dir = 8},/obj/effect/floor_decal/corner/beige/border{dir = 8},/turf/simulated/floor/tiled/white,/area/medical/chemistry) -"cBL" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/turf/simulated/floor/tiled/white,/area/medical/chemistry) +"cBK" = (/obj/machinery/atmospherics/unary/vent_scrubber/on{dir = 8},/turf/simulated/floor/tiled/white,/area/medical/chemistry) +"cBL" = (/obj/effect/floor_decal/borderfloorwhite{dir = 8},/obj/effect/floor_decal/corner/beige/border{dir = 8},/obj/machinery/chemical_analyzer,/turf/simulated/floor/tiled/white,/area/medical/chemistry) "cBM" = (/obj/machinery/hologram/holopad,/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 10},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 6},/obj/effect/floor_decal/industrial/outline/grey,/obj/structure/disposalpipe/segment,/turf/simulated/floor/tiled/white,/area/medical/chemistry) -"cBN" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/turf/simulated/floor/tiled/white,/area/medical/chemistry) -"cBO" = (/obj/structure/sink{dir = 4; icon_state = "sink"; pixel_x = 11; pixel_y = 0},/obj/machinery/atmospherics/unary/vent_scrubber/on{dir = 8},/obj/machinery/newscaster{pixel_x = 30; pixel_y = 0},/obj/effect/floor_decal/borderfloorwhite/corner,/obj/effect/floor_decal/corner/beige/bordercorner,/turf/simulated/floor/tiled/white,/area/medical/chemistry) +"cBN" = (/obj/machinery/atmospherics/unary/vent_pump/on{dir = 4},/turf/simulated/floor/tiled/white,/area/medical/chemistry) +"cBO" = (/obj/structure/sink{dir = 4; icon_state = "sink"; pixel_x = 11; pixel_y = 0},/obj/machinery/newscaster{pixel_x = 30; pixel_y = 0},/obj/effect/floor_decal/borderfloorwhite/corner,/obj/effect/floor_decal/corner/beige/bordercorner,/turf/simulated/floor/tiled/white,/area/medical/chemistry) "cBP" = (/obj/structure/bed/chair/wheelchair,/obj/machinery/atmospherics/unary/vent_pump/on{dir = 4},/obj/effect/floor_decal/borderfloorwhite/corner{dir = 8},/obj/effect/floor_decal/corner/paleblue/bordercorner{dir = 8},/turf/simulated/floor/tiled/white,/area/medical/medbay_primary_storage) "cBQ" = (/obj/machinery/hologram/holopad,/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 10},/obj/effect/floor_decal/industrial/outline/grey,/turf/simulated/floor/tiled/white,/area/medical/medbay_primary_storage) "cBR" = (/obj/machinery/firealarm{dir = 4; pixel_x = 24},/obj/machinery/camera/network/medbay{c_tag = "MED - Equipment Storage"; dir = 8},/obj/machinery/disposal,/obj/structure/disposalpipe/trunk,/obj/effect/floor_decal/borderfloorwhite{dir = 4},/obj/effect/floor_decal/corner/paleblue/border{dir = 4},/turf/simulated/floor/tiled/white,/area/medical/medbay_primary_storage) @@ -6930,7 +321994,7 @@ "cDn" = (/obj/structure/bed/chair{dir = 8},/obj/effect/floor_decal/borderfloorwhite{dir = 4},/obj/effect/floor_decal/corner/paleblue/border{dir = 4},/obj/effect/floor_decal/borderfloorwhite/corner2{dir = 5},/obj/effect/floor_decal/corner/paleblue/bordercorner2{dir = 5},/turf/simulated/floor/tiled/white,/area/medical/foyer) "cDo" = (/obj/structure/table/glass,/obj/item/weapon/packageWrap,/obj/item/weapon/hand_labeler,/obj/item/weapon/reagent_containers/spray/cleaner{desc = "Someone has crossed out the 'Space' from Space Cleaner and written in Chemistry. Scrawled on the back is, 'Okay, whoever filled this with polytrinic acid, it was only funny the first time. It was hard enough replacing the CMO's first cat!'"; name = "Chemistry Cleaner"},/obj/effect/floor_decal/borderfloorwhite{dir = 8},/obj/effect/floor_decal/corner/beige/border{dir = 8},/turf/simulated/floor/tiled/white,/area/medical/chemistry) "cDp" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/structure/disposalpipe/segment,/turf/simulated/floor/tiled/white,/area/medical/chemistry) -"cDq" = (/obj/structure/closet/secure_closet/chemical,/obj/item/weapon/storage/box/pillbottles,/obj/machinery/alarm{dir = 8; icon_state = "alarm0"; pixel_x = 22},/obj/effect/floor_decal/borderfloorwhite{dir = 4},/obj/effect/floor_decal/corner/beige/border{dir = 4},/turf/simulated/floor/tiled/white,/area/medical/chemistry) +"cDq" = (/obj/structure/closet/secure_closet/chemical,/obj/item/weapon/storage/box/pillbottles,/obj/machinery/alarm{dir = 8; icon_state = "alarm0"; pixel_x = 22},/obj/effect/floor_decal/borderfloorwhite{dir = 4},/obj/effect/floor_decal/corner/beige/border{dir = 4},/obj/item/weapon/storage/box/syringes,/obj/item/weapon/tool/screwdriver,/turf/simulated/floor/tiled/white,/area/medical/chemistry) "cDr" = (/obj/structure/bed/chair/wheelchair,/obj/item/device/radio/intercom/department/medbay{dir = 4; pixel_x = -21},/obj/effect/floor_decal/borderfloorwhite{dir = 8},/obj/effect/floor_decal/corner/paleblue/border{dir = 8},/turf/simulated/floor/tiled/white,/area/medical/medbay_primary_storage) "cDs" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/machinery/atmospherics/pipe/simple/hidden/supply,/turf/simulated/floor/tiled/white,/area/medical/medbay_primary_storage) "cDt" = (/obj/structure/table/standard,/obj/item/weapon/storage/toolbox/emergency,/obj/item/bodybag/cryobag,/obj/item/bodybag/cryobag,/obj/item/bodybag/cryobag,/obj/structure/extinguisher_cabinet{pixel_x = 25},/obj/structure/disposalpipe/segment,/obj/effect/floor_decal/borderfloorwhite{dir = 4},/obj/effect/floor_decal/corner/paleblue/border{dir = 4},/turf/simulated/floor/tiled/white,/area/medical/medbay_primary_storage) @@ -7397,7 +322461,7 @@ "cMm" = (/obj/structure/cable/green{d1 = 1; d2 = 4; icon_state = "1-4"},/obj/structure/cable/green{d2 = 4; icon_state = "0-4"},/obj/structure/cable/green{d2 = 8; icon_state = "0-8"},/obj/machinery/power/sensor{name = "Powernet Sensor - Medbay Subgrid"; name_tag = "Medbay Subgrid"},/obj/effect/floor_decal/industrial/warning/corner,/turf/simulated/floor/plating,/area/maintenance/substation/medical) "cMn" = (/obj/structure/cable/green{d1 = 2; d2 = 8; icon_state = "2-8"},/obj/structure/table/steel,/obj/machinery/cell_charger,/obj/item/weapon/cell/high{charge = 100; maxcharge = 15000},/obj/machinery/alarm{dir = 8; icon_state = "alarm0"; pixel_x = 22},/obj/effect/floor_decal/industrial/warning,/turf/simulated/floor/plating,/area/maintenance/substation/medical) "cMo" = (/obj/machinery/disposal,/obj/item/device/radio/intercom{dir = 8; name = "Station Intercom (General)"; pixel_x = -21},/obj/structure/disposalpipe/trunk{dir = 1},/obj/effect/floor_decal/borderfloorwhite{dir = 9},/obj/effect/floor_decal/corner/blue/border{dir = 9},/turf/simulated/floor/tiled/white,/area/crew_quarters/heads/sc/cmo) -"cMp" = (/obj/effect/floor_decal/borderfloorwhite/corner{dir = 1},/obj/effect/floor_decal/corner/blue/bordercorner{dir = 1},/mob/living/simple_animal/cat/fluff/Runtime,/turf/simulated/floor/tiled/white,/area/crew_quarters/heads/sc/cmo) +"cMp" = (/obj/effect/floor_decal/borderfloorwhite/corner{dir = 1},/obj/effect/floor_decal/corner/blue/bordercorner{dir = 1},/mob/living/simple_mob/animal/passive/cat/runtime,/turf/simulated/floor/tiled/white,/area/crew_quarters/heads/sc/cmo) "cMq" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/structure/cable/green{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/effect/floor_decal/steeldecal/steel_decals4{dir = 9},/obj/effect/floor_decal/steeldecal/steel_decals4{dir = 4},/turf/simulated/floor/tiled/white,/area/crew_quarters/heads/sc/cmo) "cMr" = (/obj/machinery/camera/network/medbay{c_tag = "MED - CMO"; dir = 2},/obj/effect/floor_decal/borderfloorwhite/corner{dir = 4},/obj/effect/floor_decal/corner/blue/bordercorner{dir = 4},/turf/simulated/floor/tiled/white,/area/crew_quarters/heads/sc/cmo) "cMs" = (/obj/structure/table/reinforced,/obj/item/weapon/storage/fancy/vials{pixel_x = 5; pixel_y = 5},/obj/item/weapon/storage/fancy/vials,/obj/effect/floor_decal/borderfloorwhite{dir = 1},/obj/effect/floor_decal/corner/blue/border{dir = 1},/turf/simulated/floor/tiled/white,/area/crew_quarters/heads/sc/cmo) @@ -7970,7 +323034,7 @@ "cXn" = (/obj/structure/table/standard,/obj/item/weapon/paper_bin,/obj/item/weapon/pen,/obj/structure/disposalpipe/segment,/obj/effect/floor_decal/borderfloorwhite{dir = 8},/obj/effect/floor_decal/corner/brown/border{dir = 8},/turf/simulated/floor/tiled/white,/area/crew_quarters/cafeteria) "cXo" = (/turf/simulated/floor/tiled/white,/area/crew_quarters/cafeteria) "cXp" = (/obj/machinery/door/firedoor/border_only,/obj/effect/wingrille_spawn/reinforced,/turf/simulated/floor/plating,/area/crew_quarters/kitchen) -"cXq" = (/obj/structure/closet/chefcloset,/obj/item/glass_jar,/obj/item/device/retail_scanner/civilian,/obj/item/weapon/soap/nanotrasen,/obj/item/device/destTagger{pixel_x = 4; pixel_y = 3},/obj/item/weapon/packageWrap,/obj/item/weapon/packageWrap,/obj/item/weapon/packageWrap,/obj/effect/floor_decal/corner/grey/diagonal{dir = 4},/obj/machinery/newscaster{pixel_y = 30},/turf/simulated/floor/tiled/white,/area/crew_quarters/kitchen) +"cXq" = (/obj/structure/bed/chair{dir = 4},/obj/effect/landmark/start{name = "Cargo Technician"},/obj/effect/floor_decal/borderfloor{dir = 4},/obj/effect/floor_decal/corner/brown/border{dir = 4},/obj/item/device/radio/intercom{dir = 1; name = "Station Intercom (General)"; pixel_y = 21},/turf/simulated/floor/tiled,/area/quartermaster/delivery) "cXr" = (/obj/effect/floor_decal/corner/grey/diagonal{dir = 4},/obj/machinery/light{dir = 1},/obj/machinery/chem_master/condimaster{name = "CondiMaster Neo"; pixel_x = -5},/turf/simulated/floor/tiled/white,/area/crew_quarters/kitchen) "cXs" = (/obj/structure/closet/secure_closet/freezer/kitchen,/obj/effect/floor_decal/corner/grey/diagonal{dir = 4},/obj/structure/extinguisher_cabinet{pixel_y = 30},/turf/simulated/floor/tiled/white,/area/crew_quarters/kitchen) "cXt" = (/obj/structure/closet/secure_closet/freezer/meat,/turf/simulated/floor/tiled/freezer,/area/crew_quarters/kitchen) @@ -8684,7 +323748,7 @@ "dkZ" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/turf/simulated/floor/wood,/area/library) "dla" = (/obj/structure/table/woodentable,/obj/item/device/flashlight/lamp/green{pixel_x = 1; pixel_y = 5},/turf/simulated/floor/wood,/area/library) "dlb" = (/obj/structure/table/woodentable,/obj/item/device/tape/random,/obj/item/device/taperecorder,/turf/simulated/floor/wood,/area/library) -"dlc" = (/obj/structure/table/woodentable,/obj/item/weapon/pen/red{pixel_x = 2; pixel_y = 6},/obj/item/weapon/pen/blue{pixel_x = 5; pixel_y = 5},/obj/item/weapon/pen,/turf/simulated/floor/wood,/area/library) +"dlc" = (/obj/structure/closet/chefcloset,/obj/item/glass_jar,/obj/item/device/retail_scanner/civilian,/obj/item/weapon/soap/nanotrasen,/obj/item/device/destTagger{pixel_x = 4; pixel_y = 3},/obj/item/weapon/packageWrap,/obj/item/weapon/packageWrap,/obj/item/weapon/packageWrap,/obj/effect/floor_decal/corner/grey/diagonal{dir = 4},/obj/machinery/newscaster{pixel_y = 30},/obj/item/clothing/gloves/sterile/latex,/obj/item/clothing/gloves/sterile/latex,/turf/simulated/floor/tiled/white,/area/crew_quarters/kitchen) "dld" = (/obj/structure/table/woodentable,/obj/item/weapon/paper_bin{pixel_x = 1; pixel_y = 9},/obj/item/weapon/folder/yellow,/obj/item/weapon/packageWrap,/turf/simulated/floor/wood,/area/library) "dle" = (/obj/machinery/atmospherics/unary/vent_pump/on,/turf/simulated/floor/carpet,/area/library) "dlf" = (/obj/structure/table/rack{dir = 8; layer = 2.9},/obj/item/weapon/storage/briefcase{pixel_x = -2; pixel_y = -5},/obj/item/weapon/storage/briefcase{pixel_x = 3; pixel_y = 0},/obj/machinery/camera/network/civilian{c_tag = "CIV - Library Office"; dir = 2},/obj/machinery/alarm{pixel_y = 23},/turf/simulated/floor/carpet,/area/library) @@ -8707,7 +323771,7 @@ "dlw" = (/obj/machinery/disposal,/obj/structure/disposalpipe/trunk,/turf/simulated/floor/wood,/area/library) "dlx" = (/obj/structure/bookcase{name = "bookcase (Non-Fiction)"},/turf/simulated/floor/wood,/area/library) "dly" = (/obj/machinery/atmospherics/unary/vent_scrubber/on{dir = 1},/turf/simulated/floor/wood,/area/library) -"dlz" = (/obj/structure/bookcase{name = "bookcase (Reference)"},/obj/item/weapon/book/codex/lore/vir,/obj/item/weapon/book/codex/lore/vir,/turf/simulated/floor/wood,/area/library) +"dlz" = (/obj/structure/table/woodentable,/obj/item/weapon/pen/red{pixel_x = 2; pixel_y = 6},/obj/item/weapon/pen/blue{pixel_x = 5; pixel_y = 5},/obj/item/weapon/pen,/obj/item/weapon/book/codex/lore/news,/turf/simulated/floor/wood,/area/library) "dlA" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 5},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 5},/turf/simulated/floor/wood,/area/library) "dlB" = (/obj/structure/table/woodentable,/obj/item/device/camera_film,/obj/item/device/camera_film,/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/obj/item/device/paicard,/turf/simulated/floor/wood,/area/library) "dlC" = (/obj/structure/bed/chair/office/dark{dir = 1},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/obj/effect/landmark/start{name = "Librarian"},/turf/simulated/floor/wood,/area/library) @@ -8749,7 +323813,7 @@ "dmm" = (/obj/machinery/libraryscanner,/obj/machinery/newscaster{pixel_y = -30},/turf/simulated/floor/wood,/area/library) "dmn" = (/obj/machinery/ai_status_display{pixel_y = -32},/obj/structure/table/woodentable,/obj/machinery/librarycomp{pixel_y = 0},/turf/simulated/floor/wood,/area/library) "dmo" = (/obj/structure/table/woodentable,/obj/item/device/taperecorder{pixel_y = 0},/obj/item/device/tape/random,/obj/item/device/tape/random,/obj/item/device/camera,/obj/machinery/button/windowtint{id = "library_window_tint"; pixel_x = -11; pixel_y = -24},/obj/item/device/radio/intercom{name = "Station Intercom (General)"; pixel_y = -21},/turf/simulated/floor/carpet,/area/library) -"dmp" = (/obj/structure/table/woodentable,/obj/item/weapon/paper_bin{pixel_x = -3; pixel_y = 7},/obj/item/weapon/pen/invisible,/obj/item/clothing/under/suit_jacket/red,/obj/item/weapon/barcodescanner,/obj/machinery/newscaster{pixel_y = -30},/turf/simulated/floor/carpet,/area/library) +"dmp" = (/obj/structure/bookcase{name = "bookcase (Reference)"},/obj/item/weapon/book/codex/lore/vir,/obj/item/weapon/book/codex/lore/vir,/obj/item/weapon/book/codex/lore/robutt,/obj/item/weapon/book/codex/corp_regs,/turf/simulated/floor/wood,/area/library) "dmq" = (/obj/structure/table/rack{dir = 8; layer = 2.9},/obj/item/device/tvcamera,/obj/machinery/light{dir = 4; icon_state = "tube1"; pixel_x = 0},/obj/machinery/firealarm{dir = 1; pixel_x = 0; pixel_y = -24},/turf/simulated/floor/carpet,/area/library) "dmr" = (/obj/structure/extinguisher_cabinet{pixel_x = -28; pixel_y = 0},/turf/simulated/floor/tiled,/area/hallway/primary/seconddeck/aft) "dms" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/machinery/atmospherics/pipe/manifold/hidden/supply{dir = 8},/turf/simulated/floor/tiled/monotile,/area/hallway/primary/seconddeck/aft) @@ -9639,7 +324703,7 @@ "dDs" = (/obj/effect/floor_decal/industrial/warning,/obj/structure/cable{d1 = 2; d2 = 8; icon_state = "2-8"},/turf/simulated/floor/plating,/area/maintenance/thirddeck/foreport) "dDt" = (/obj/effect/floor_decal/industrial/warning/corner{icon_state = "warningcorner"; dir = 8},/turf/simulated/floor/plating,/area/maintenance/thirddeck/foreport) "dDu" = (/obj/structure/cable/green{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/structure/catwalk,/turf/simulated/floor/airless,/area/thirddeck/roof) -"dDv" = (/obj/machinery/atmospherics/unary/vent_scrubber/on{dir = 1},/turf/simulated/floor/tiled/techfloor,/area/ai) +"dDv" = (/obj/effect/floor_decal/industrial/warning/cee{icon_state = "warningcee"; dir = 1},/obj/machinery/hologram/holopad,/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{dir = 1},/obj/machinery/atmospherics/pipe/manifold/hidden/supply{dir = 1},/obj/effect/landmark/free_ai_shell,/turf/simulated/floor/tiled/techfloor,/area/ai) "dDw" = (/obj/effect/floor_decal/industrial/warning{icon_state = "warning"; dir = 1},/obj/effect/floor_decal/industrial/warning/corner,/turf/simulated/floor/tiled/techfloor,/area/ai) "dDx" = (/obj/effect/floor_decal/industrial/warning/corner{dir = 4},/obj/effect/floor_decal/industrial/warning/corner{icon_state = "warningcorner"; dir = 1},/obj/effect/floor_decal/industrial/warning,/obj/structure/cable/cyan{d1 = 2; d2 = 4; icon_state = "2-4"},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/machinery/atmospherics/pipe/simple/hidden/supply,/turf/simulated/floor/tiled/techfloor,/area/ai) "dDy" = (/obj/effect/floor_decal/industrial/warning{icon_state = "warning"; dir = 1},/obj/effect/floor_decal/industrial/warning/corner{dir = 8},/obj/structure/cable/cyan{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor/tiled/techfloor,/area/ai) @@ -9894,7 +324958,7 @@ "dIn" = (/obj/machinery/ai_status_display,/turf/simulated/wall/r_wall,/area/hallway/primary/thirddeck/starboard) "dIo" = (/obj/machinery/atmospherics/unary/vent_scrubber/on,/turf/simulated/floor/tiled,/area/hallway/primary/thirddeck/starboard) "dIp" = (/obj/structure/cable/green{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/manifold/hidden{dir = 8; icon_state = "map"},/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/effect/floor_decal/steeldecal/steel_decals4{dir = 4},/obj/effect/floor_decal/steeldecal/steel_decals4{dir = 9},/turf/simulated/floor/tiled,/area/hallway/primary/thirddeck/starboard) -"dIq" = (/obj/effect/floor_decal/industrial/warning/cee{icon_state = "warningcee"; dir = 1},/obj/machinery/hologram/holopad,/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{dir = 1},/obj/machinery/atmospherics/pipe/manifold/hidden/supply{dir = 1},/turf/simulated/floor/tiled/techfloor,/area/ai) +"dIq" = (/obj/machinery/atmospherics/unary/vent_scrubber/on{dir = 1},/obj/effect/floor_decal/industrial/warning/corner{dir = 4},/turf/simulated/floor/tiled/techfloor,/area/ai) "dIr" = (/obj/machinery/atmospherics/pipe/simple/hidden{icon_state = "intact"; dir = 4},/turf/simulated/wall/r_wall,/area/hallway/primary/thirddeck/starboard) "dIs" = (/obj/machinery/atmospherics/pipe/manifold/hidden{dir = 1; icon_state = "map"},/turf/simulated/wall/r_wall,/area/hallway/primary/thirddeck/starboard) "dIt" = (/obj/machinery/atmospherics/pipe/simple/hidden{dir = 10; icon_state = "intact"},/turf/simulated/wall/r_wall,/area/hallway/primary/thirddeck/starboard) @@ -10727,7 +325791,7 @@ "dYo" = (/obj/machinery/optable{name = "Xenobiology Operating Table"},/obj/machinery/light{dir = 1},/turf/simulated/floor/tiled,/area/rnd/xenobiology) "dYp" = (/obj/item/weapon/extinguisher,/obj/structure/catwalk,/obj/structure/door_assembly/door_assembly_ext,/turf/simulated/floor/plating,/area/maintenance/firstdeck/centralstarboard) "dYq" = (/obj/structure/cable/green{d1 = 1; d2 = 4; icon_state = "1-4"},/obj/structure/disposalpipe/segment{dir = 1; icon_state = "pipe-c"},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 5},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 5},/turf/simulated/floor/plating,/area/maintenance/firstdeck/centralstarboard) -"dYr" = (/obj/machinery/door/firedoor/border_only,/obj/structure/cable/green{d1 = 16; d2 = 0; icon_state = "16-0"},/obj/structure/cable/green{d2 = 8; icon_state = "0-8"},/obj/structure/disposalpipe/up{dir = 8},/obj/machinery/atmospherics/pipe/zpipe/up/supply{dir = 8},/turf/simulated/floor/plating,/area/maintenance/firstdeck/centralstarboard) +"dYr" = (/obj/structure/table/woodentable,/obj/item/weapon/paper_bin{pixel_x = -3; pixel_y = 7},/obj/item/weapon/pen/invisible,/obj/item/clothing/under/suit_jacket/red,/obj/item/weapon/barcodescanner,/obj/machinery/newscaster{pixel_y = -30},/obj/item/weapon/book/codex/lore/news,/turf/simulated/floor/carpet,/area/library) "dYs" = (/obj/item/device/radio/intercom{dir = 4; name = "Station Intercom (General)"; pixel_x = 21},/obj/effect/floor_decal/borderfloorwhite{dir = 4},/obj/effect/floor_decal/corner/purple/border{dir = 4},/turf/simulated/floor/tiled/white,/area/rnd/research/firstdeck/hallway) "dYt" = (/obj/structure/cable/green{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/machinery/firealarm{dir = 8; pixel_x = -24},/obj/effect/floor_decal/borderfloorwhite{dir = 8},/obj/effect/floor_decal/corner/purple/border{dir = 8},/turf/simulated/floor/tiled/white,/area/rnd/research/firstdeck/hallway) "dYu" = (/obj/structure/disposalpipe/segment,/obj/effect/wingrille_spawn/reinforced,/obj/structure/cable/green{d2 = 4; icon_state = "0-4"},/obj/structure/window/reinforced/full,/obj/machinery/door/blast/regular{density = 0; dir = 4; icon_state = "pdoor0"; id = "xenobio6station"; name = "Containment Blast Doors"; opacity = 0},/turf/simulated/floor/plating,/area/rnd/xenobiology) @@ -10789,7 +325853,7 @@ "dZy" = (/obj/effect/floor_decal/industrial/warning{icon_state = "warning"; dir = 8},/obj/structure/cable/green{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/door/window/brigdoor/westleft{name = "Containment Pen"; req_access = list(47)},/turf/simulated/floor/tiled/techmaint,/area/rnd/xenobiology) "dZz" = (/obj/structure/cable/green{d1 = 2; d2 = 4; icon_state = "2-4"},/obj/structure/cable/green{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/structure/disposalpipe/segment,/turf/simulated/floor/tiled/white,/area/rnd/xenobiology) "dZA" = (/obj/effect/floor_decal/industrial/hatch/yellow,/obj/structure/cable/green{d1 = 1; d2 = 8; icon_state = "1-8"},/obj/structure/cable/green{d1 = 2; d2 = 8; icon_state = "2-8"},/obj/machinery/door/window/brigdoor/eastright{name = "Containment Pen"; req_access = list(47)},/obj/machinery/door/blast/regular{density = 0; icon_state = "pdoor0"; id = "xenobio2station"; name = "Containment Blast Doors"; opacity = 0},/turf/simulated/floor/tiled/techmaint,/area/rnd/xenobiology) -"dZB" = (/mob/living/simple_animal/slime,/turf/simulated/floor/reinforced,/area/rnd/xenobiology) +"dZB" = (/mob/living/simple_mob/slime/xenobio,/turf/simulated/floor/reinforced,/area/rnd/xenobiology) "dZC" = (/obj/effect/floor_decal/industrial/warning/corner,/turf/simulated/floor/tiled/white,/area/rnd/research/firstdeck/hallway) "dZD" = (/obj/effect/floor_decal/industrial/warning/corner{icon_state = "warningcorner"; dir = 8},/turf/simulated/floor/tiled/white,/area/rnd/research/firstdeck/hallway) "dZE" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/structure/cable/green{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/effect/floor_decal/industrial/warning,/turf/simulated/floor/tiled/white,/area/rnd/research/firstdeck/hallway) @@ -10912,7 +325976,6 @@ "ebR" = (/obj/item/clothing/glasses/welding,/obj/item/clothing/glasses/welding,/obj/item/clothing/head/welding{pixel_x = -3; pixel_y = 5},/obj/item/clothing/head/welding{pixel_x = -3; pixel_y = 5},/obj/machinery/ai_status_display{pixel_y = -32},/obj/effect/floor_decal/borderfloorwhite,/obj/effect/floor_decal/corner/purple/border,/obj/structure/closet{name = "welding equipment"},/turf/simulated/floor/tiled/white,/area/assembly/robotics) "ebS" = (/obj/machinery/firealarm{dir = 8; pixel_x = -24},/obj/effect/floor_decal/borderfloorwhite{dir = 1},/obj/effect/floor_decal/corner/purple/border{dir = 1},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/structure/cable/green{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/structure/disposalpipe/segment{dir = 4},/turf/simulated/floor/tiled/white,/area/rnd/research) "ebT" = (/obj/machinery/atmospherics/pipe/manifold/hidden/supply{dir = 4},/obj/structure/cable/green{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/effect/floor_decal/borderfloorwhite/corner{dir = 1},/obj/effect/floor_decal/corner/purple/bordercorner{dir = 1},/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{dir = 4},/obj/structure/cable/green{d1 = 1; d2 = 8; icon_state = "1-8"},/obj/structure/disposalpipe/junction,/turf/simulated/floor/tiled/white,/area/rnd/research) -"ebU" = (/obj/machinery/door/firedoor/border_only,/obj/structure/lattice,/obj/structure/cable/green{d1 = 32; d2 = 4; icon_state = "32-4"},/obj/structure/disposalpipe/down{dir = 4},/turf/simulated/open,/area/maintenance/research_medical) "ebV" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/structure/cable/green{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/structure/disposalpipe/segment{dir = 4},/turf/simulated/wall/r_wall,/area/rnd/research) "ebW" = (/obj/machinery/light{dir = 8},/obj/machinery/atmospherics/unary/vent_pump/on{dir = 4},/turf/simulated/floor/tiled/white,/area/rnd/research) "ebX" = (/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{dir = 8},/obj/structure/cable/green{d1 = 1; d2 = 4; icon_state = "1-4"},/obj/structure/disposalpipe/segment,/obj/machinery/atmospherics/pipe/manifold/hidden/supply,/turf/simulated/floor/tiled/white,/area/rnd/research) @@ -11073,10 +326136,10 @@ aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaalsaltalRamRamSamTamoamUamVamWamXamaambaeFamYamZanaanbanbanbanbanbanbanbanbanbanbanbancandaneaeFanfaioadLaaaaaaaaaajoanganhalFalGanianianialHalHanjanjanjanjanjankanlanmanmannanoanpanqalIalIalIalJalKanransajwaaaaaaaaaaejaiyantaeZanuanvanwanxanxanxanxanxanxanxanxanxanxanxanyanzanAaeZdXpdXrdXqdXqdXsdXudXtdXwdXvdXxdXvdXzdXydXBdXAdXDdXCdXFdXEdXHdXGdXodXIdXKdXJdXMdXLdXKdXNdXobhgbhgaaaaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaalsalsaltaltaltaluanDanDalualtaltaltanEaeFanFanGanHanHanIanHanHanJanKanLanManNanNanNanNanOamtaeFanPaioadladlaaaaaaajpanQanRanSanianianTanUanialHanVanWanXanYanZanZaoaaobaocaodaoealIaofalIaogalIalIaohaoiaojajxaaaaaaadFadFaiyaokaeZaolaomaonaonaonaonaooaopaoqaoraosaosaotaosaosaouaovaeZdXOdXQdXPdXRapiatLdXSapidXUdXWdXVdXXaSNaSNdXYaSNaZYdXZcfodXHdYadXodYbdYcdXJdXMdXLdXKdYddXodXodYfdYedXoaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafaaaaaaaaaakLatTatTakLakLakLakLaoxaoxaoyaoyaoyaoyaoyaeFaeFaeFaeFaeFaeFaeFaeFaozahcaoAaeFaoBaoBaoBaeFaeFaeFaeFafMaoCaoDadlaaaaaaajpaoEaoFaoGaoHaoIaoJaoKanialHanjaoLaoMaoNanZanZaoOaoPaoQaoRaoSaoTaoUaoVaoWaoXalIaoYaoZapaajxaaaaaaadFapbapcapdaeZaeZaeZaikapeapeapeaikapfaikapgaikaeZaeZaeZaeZaeZaeZaeZaphaphaphaphaphdYgdYgalralralralralralrdYidYhalralrdXZdYjdYkdWHdXodYldXKdXJdXMdXLdXKdYldXodYmdYodYndXodXoaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadaafaafaafakLakLapjapkaplapmapnakLapoapoappapqaprapsaptapuapvapwapxapyapyapzapuapAapAapBapCapDapEapFapCapGafMadlapHapIapJadlaaaaaaajpapKapLapManiapNapOapNanialHanjanjanjanjanjapPapQapQapQapRapSapTapUapVapWapXalIapYapZaqaajxaaaaaaadFaqbaghaqcaqdaqeaqfaqgaqhaqiaqjaqgaqkaqlaqlaqmaqnaqoaqoaqpaqqaqraqmaqsaqtaquaqvaqwaqxaqxalraqydYpaqAaqBaqCalOdYqdYralrdYtdYsdXodXodXodYudYwdYvdYydYxdYAdYzdXodYBdYDdYCdYFdYEdYGaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadaafaafaafakLakLapjapkaplapmapnakLapoapoappapqaprapsaptapuapvapwapxapyapyapzapuapAapAapBapCapDapEapFapCapGafMadlapHapIapJadlaaaaaaajpapKapLapManiapNapOapNanialHanjanjanjanjanjapPapQapQapQapRapSapTapUapVapWapXalIapYapZaqaajxaaaaaaadFaqbaghaqcaqdaqeaqfaqgaqhaqiaqjaqgaqkaqlaqlaqmaqnaqoaqoaqpaqqaqraqmaqsaqtaquaqvaqwaqxaqxalraqydYpaqAaqBaqCalOdYqatMalrdYtdYsdXodXodXodYudYwdYvdYydYxdYAdYzdXodYBdYDdYCdYFdYEdYGaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadaadaaaaaaakLakLaqDaqDapkaqEaqFaqFaqGaqHaqIaqJaqKaqLaqMaqNapuapvaqOaqPapyapyapyapuaqQaqQaqRaqSaqTaqUaqVapCaqWaqXaqYaqZaraarbadlaaaaaaajoarcardareaniarfargarfanialHarhariarjarkarlarmarnarkaroarparqarrarsartaruarvalIarwapZarxajwaaaaaaadFaryaghaghaghaghagharzarAarBarCarDarEarFarFaqmarGarHaqoarIaqqaqqaqmarJarKarLdYHarNarOarPdYIarRarRarRarRarRarRalOalralrdYKdYJdXodYLdYNdYMaShdYOdYRdYQaShdYSdYUdYTdYWdYVdXodXodXodXodXoaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadaaaaaaaaaakLarSapkakLakLakLakLakLakLarTarUarUarUarVarWarXapuarYapyaqParZasaasbapuascasdaseapCasfasgashapCasiasjaskaslasmasnadlasoasoaspasqasrajSamxarfargarfanialHalHalHalHalHalHalHalHalHalHalHalIalIalIamHassastalIasuasvaswasxasyasyadFaszaghasAasAasAasAaqgasBasCasDaqgasEasFasGaqmasHasIasJarIasKaqqaqmasLasMasNasOasOasOaphalralralralralralralOalPalrdYXdYYdXHdZadYZdZcdZbdZedZddZfdZddZgdZddZhdZddZjdZidZldZkdZndZmdXoaaaaaaaaaaadaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadaaaaaaaaaakLasPapkakLasQasQasQasQasQarTasRasSasTasUasVasWasXasYapuasZapuapuapuapuataatbatcatdapCapCapCapCateadlarUarUadlatfarUatgathatiatjatkatlatmatmatnatmatmaurauraurauratoatoatoatoatoatpatqatratsattatuatvatwatpatxatyatzatAatBatCatDatEadFatDatDatDatDaqgaqgaqgaqgatFatGatHatIaqmaqmaqmaqmatJaqmatKaSzatMatNatOatDatPatQatRatSatSatSatSatSalralOalOalrdZodZqdZpdZsdZrdZtdZbdZudYTdYTdYTdZwdZvdZxdZbdZzdZydZAdXKdZBdXKdXoaafaafaafaadaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadaaaaaaaaaakLasPapkakLasQasQasQasQasQarTasRasSasTasUasVasWasXasYapuasZapuapuapuapuataatbatcatdapCapCapCapCateadlarUarUadlatfarUatgathatiatjatkatlatmatmatnatmatmaurauraurauratoatoatoatoatoatpatqatratsattatuatvatwatpatxatyatzatAatBatCatDatEadFatDatDatDatDaqgaqgaqgaqgatFatGatHatIaqmaqmaqmaqmatJaqmatKaSzatNbDEatOatDatPatQatRatSatSatSatSatSalralOalOalrdZodZqdZpdZsdZrdZtdZbdZudYTdYTdYTdZwdZvdZxdZbdZzdZydZAdXKdZBdXKdXoaafaafaafaadaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabaaaaaaaaaaaaaafaaaaaaaaaatTatUapkakLasQasQasQasQasQatVatWatXatYatZauaaubaucaudatZaueaucaufatWaugauhauiaujaukaukaukaulaumaunauoaupauqauzausautauuaukauvauwauxauyauBauDauCauFauEavLauGavMauratoatoatoatoatoatpauIauJauKattauLauMauNatpauOauPauQauRauSauTauUauVauWauXauYauZavaavbauRavcauSauSavdasFauRaveavfavgavaavhauRaviavaavjavkauRavlavmauSavnatSatSatSatSatSalravoalOalrdZCdZEdZDdZGdZFdZbdZbdZHdZbdZbdZbdZbdZbdZIdZbdZKdZJdZLdXKdXKdXKdXoaaaaaaaaaaadaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafaafaafaafatTdZMavqakLasQasQasQasQasQavravsavtavuavuavvavwavwavxavyavzavwavAavwavwavBavCavDavwavwavyavwavwavAavwavEavFavGavHavwavIavwavwavJavKavwavNavPavOavRavQawOavSawQauratoatoatoatoatoatpavTavUavVavWavXavYavZatpawaawbawcawdawdaweawdawfawgawhawiawjawkawlawlawmawlawlawnawoawlawlawmawpawlawqawlawrawlawlawsawtawtawuawvawwatSatSatSatSatSalrawxalOalrdXodZOdZNdXodZPdZbdZbdZRdZQdZTdZSdZVdZUdZWdYCdZYdZXdYydYydYydYydXoaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabaaaaaaaafaaaaaaaaaatTapkawyakLasQasQasQasQasQawzawAawBawCawDawEawFawGawHawIawJawKaxGawAawLawMatbawNawAawAawPawAawRawAawSawTawUawVawWawXawYawZaxaaxbaxcauyaxdauDaxeaxgaxfaxiaxhaxjauratoatoatoatoatoatpaxkaxlaxmattavZaxnaxoatpaxpaxqaxrasGaxsaxtaxuaxvaxwauXaxxaxyaxzaxAaxBaxsaxDaxsaxEasFasGaxFaxsaUiaxHaxIasGaxJaxzaxKaxLasGaxMaxNaxsaxOatSatSatSatSatSalraxPalOalrdZZeabeaadZNeacdZbdZbeaddZbdZbdZbdZbdZbeaedZbeageafeahdXKdXKdXJeaiaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa @@ -11313,12 +326376,12 @@ aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadaaaaaaaaaaaabgvbvmbvlboJboKbvnbvqboLbrBbvobvpbwvboQbvrboQboTbvsbutbvtbvubvvbvwbvxbuvbvybvzbvAbvBbuwbvCbvDbvEbvFbvGbvHbvIbvJbvKblUblUbvLbrbbvMbvNbvObvNbvPbrbbvQbuPbrbbvRbuPbrbbvSbuPbrYbvTbvUbvVbvWbxhbxjbzybxjbuWbwabwbbwcbwdbwebuWbwfbwgbwhbwibwjbuZbwkbvZbvZbwlbwmbwnbvgaaaaaaaaaaaaaaaaafaaaaaaaaaaaaaaabwobwpbwqbwrbwsbwsbwtbvjbvibviaaaaaaaafaaaaaaaaaaaaaaabhgaaaaaaaaaaafaaaaaaaaaaafaaaaaaaaabhhaaaaaaaaaaafaagaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadaaaaaaaaaaaabgvbwubBUbpFbpGbwwbwxbwybwzbwAbwBbwCbwBbwDbwBbwEbwFbwGbwHbwIbwJbwKbwLbuvbwMbwNbwObwPbwQbwRbwSbwTbwUbwUbwUbwUbwUbwUbwVbwWbwXbrbbwYbvNbwZbvNbvPbrbbvNbxabrbbvNbxbbrbbvNbxcbrbbxdbxebxfbxgbxhclfclgcnebuWbxkbxlbxmbxnbxobuWbxpbxqbxrbxsbxtbuZbxubxvbvZbxwbxibxxbvgaaaaaaaaaaaaaaabvgbvgbvibvibvibvgbxybxzbxAbxBbxCbxDbxEbxFbxGbvibvgbxHbxHbxIbxIaafaafaafbhgaafaafaafaafbxJbxKbxLbhgbxMbxNbxObxPbxQaaaaaaaaaaadaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadaafaafaafaafbgvbgvbgvbgvaaabxRbxSbqEbxTbxUbxVbxWbxXbxYbmTbxZbyabwGbybbycbydbyebyfbuvbygbyhbyibyjbuwbvCbykbylbuxbuxbuxbuxbuxbuxbuxbymbynbrbbyobvNbypbyqbvPbrbbyrbysbrbbyrbytbrbbyrbyubrbbyvbywbyxbxgbxhcnfcoUcJZbuWbyybyzbyAbyBbyCbuWbyDbxqbyEbxqbyFbuZbyGbxvbvZbvZbyHbvZbvZbvgbvgbvgbvgbvgbvgebsbyIbyJbyKbyKbyLbyMbyMbyLbyNbyObyPbyQebtbySbyTbxHbyUbyVbxIbxIaaaaaabhgaaaaaaaaaaafbyWbyXbyYbyZbzabyZbyWbzbbyWaafaafaafaadaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadJaaaaaaaaaaaaaaaaaaaaaaaaaaabkAbzcbzdbzebkAbkAbzfbzgbzhbzgbzibzjbzkbuvbutbzlbutbuvbuvbuwbuwbzmbuwbuwbuxbznbzobzpbuxbzqbzrbzsbztbuxbymbynbrbbrbbrbbrbbrbbrbbrbbrbbrbbrbbrbbrbbrbbrbbrbbrbbzubzvbzwbzxbxhcOBdcSdfrbuWbzAbzBbzCbzDbzEbuWbzFbzGbzHbxqbzIbuZbzJbzKbzLbzMbzNbzNbzNbzNbzNbzNbzObzNbzNbzNbzNbzPbzQbzRbzSbzTbzUbzVbzWbyObyPbzXbyObzYbzZbAabAbbAcbAdbxIaaaaaabhgaaaaaaaaaaaabyWbAebyZbAfbAgbAhbyWbAibyWaaaaaaaaaaadaadaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadJaaaaaaaaaaaaaaaaaaaaaaaaaaabkAbzcbzdbzebkAbkAbzfbzgbzhbzgbzibzjbzkbuvbutbzlbutbuvbuvbuwbuwbzmbuwbuwbuxbznbzobzpbuxbzqbzrbzsbztbuxbymbynbrbbrbbrbbrbbrbbrbbrbbrbbrbbrbbrbbrbbrbbrbbrbbrbbzubzvbzwbzxbxhcOBdcSdfrbuWbzAbzBbzCbzDbzEbuWbzFbzGbzHbxqbzIbuZbzJbzKbzLbzMbzNbzNbzNbzNbzNbzNbzObzNbzNbzNbzNbzPbzQbzRbzSbzTbzUbzVbzWbyObyPbzXbyObzYbzZbAabAbbAcbAdbxIaaaaaabhgaaaaaaaaaaaabyWbAebFdbAfbAgbAhbyWbAibyWaaaaaaaaaaadaadaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaabAjbAjbAjbAjaaaaaaaaabAjaaaaaaaaaaaaaaabAjaaaaaaaaabAjbAjbAjbAjaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaagaaaaafaaaaaaaaaaaaaaaaaabAkbAkbAkbAkbAkbAkbAkbAkbAkbAlbAmbAnbAobApbAqbArbAsbAtbAtbAubAvbAwbAxbAybAzbAAbABbACbvCbADbAEbAFbuxbDJbymbymbymbAGbAHbAIbwUbAJbAKbALbAMbwUbwUbwUbwUbwUbwUbANbAObwUbAPbAQbuxbARbASbATbxhbxhbxhbxhbuWbAVbAWbAXbAYbAZbuWbBabBbbBcbBdbBebuZbBfbxibBgbBhbBibBjbBkbxibxibBlbBlbBlbBlbBlbBlbBlbBmbBnbBobBpbBqbBrbBrbBrbBrbBsbBsbBsbBsbBsbBtbBubBvbBwbBwbBxbBwbBxbBwbBxbBwbBwbBybBzbBAbBBbBCbyWbBDbyWbyWaaaaaaaaaaadaadaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaabAjbAjbAjbAjaaaaaaaaabAjbAjbAjbAjbAjbAjbAjaaaaaaaaabAjbAjbAjbAjaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadaadaafaafaaaaaabBEbBFbBGbBHbAkbBIbBJbBKbBLbBMbBMbBNbAkbBObBPbBQbBRbBSbBTbDpbBVbDpbBWbBXbBYbBZbCabCbbCcbCdbCebCfbvCbCgbzobChbuxbCibCjbymbymbuxbCkbClbymbCmbCnbuxbuxbCobuxbuxbCpbymbymbAQbCqbymbCrbuxbuxbCsbCtbCubvZbvZbCvbyJbuWbCwbCxbuWbuWbuWbuWbuZbuZbCybuZbuZbuZbBfbxibCzbCAbBibwnbCBbCCbCDbBlbCEbCFbCGbCHbCIbBlbCJbCJbCKbCJbCJbBrbCLbCMebubBsbCObBsbCPbBsbCQbCRbCSbBwbCTbCUbCVbCVbCWbCXbCYbBwbCZbDabDbbDcbDdbDebDfbDgbyWaaaaaaaaaaaaaadaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaabAjbAjbAjbAjaaaaaabAjbAjbAjbAjbAjbAjbAjbAjbAjaaaaaabAjbAjbAjbAjaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafaagaadaadaaaaabaaaaaaaaabBEbDhbDhbDibAkbDjbDjbDjbDkbBMbDlbDmbAkbDnbDobELbDqbDrbDsbDtbCfbDubDvbDwbDxbDubDybDybDzbDAbDBbDybuxbDCbDDbDEbuxbuxbuxbDFbymbuxbCrbDGbDGbDHbDGbDGbDIbymbImbuxbDKbymbDLbuxbvFbymbCrbymbuxbDMbDNbDObvZbxibxibzzbDPbxibDQbAUbAUbAUbAUbBgbDRbDSbDTbDUbDVbDWbDXbDYbvZbDZbDZbDZbDZbEabBlbEbbEcbEdbEebEfbFMbEhebvbEjbEkbElbBrebwbEndgGbBsbEpbBsbEqbBsbBsbErbEsbEtbEubEvbCVbEwbExbEybEzbBwbEAbEAbEAbFUbEAbEAbEAbEAbEAbEAaafaafaafaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaabAjbAjbAjbAjaaaaaabAjbAjbAjbAjbAjbAjbAjbAjbAjaaaaaabAjbAjbAjbAjaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadaadaadaadaagaadaadaadaagaafaaaaafaaaaaaaaaaaaaaaaaaaaabBEbECbEDbEEbAkbEFbEGbEGbEHbEGbEIbEJbAkbEKbGmbEMbENbEObEPbEQbERbESbETbEUbEVbEWbEXbEYbEZbFabFbbFcbuxbFdbFebFfbFgbFhbuxbvGbvFbuxbFibDGbFjbFkbFlbDGbFmbFnbChbuxbzpbymbFobuxbvGbymbFpbFqbFrbFsbFtbFubFvbDTbFwbDTbFxbDTbFybDTbDTbDTbDTbFzbFAbFBbFBbFBbFBbFBbFBbFCbFDbDZbFEebxbFGbEabFHbFIbFJbFKbFLbFVbFMbFNbFObFPbEjbHxbKtebzebybFTbGbbGibFWbFXbFYbBsbFZbGabHybGcbGdbGebGdbGfbGgbGhbKrbGjbGkbGlbGpbGqbGnbGobJpbGrbGsaaaaaaaaaabcaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaabAjbAjbAjbAjbAjbAjbAjbAjbAjbAjbAjbAjbAjbAjbAjbAjbAjbAjbAjbAjbAjaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadaadaaaaaaaafaaaaaaaaaaaaaafaaaaaaaafaaaaaaaaaaaaaaaaaaaaabBEbGtbGubGvbAkbGwbEGbEGbGxbGybGzbGAbGBbGCbGDbGEbGFbEObGGbGHbERbGIbGJbGKbGLbGMbEXbGNbGObGPbGQbGRbuxbGSbGTbGUbGVbFhbuxbAQbAQbuxbGWbDGbGXbFkbGYbDGbuxbuxbuxbuxbGZbGZbGZbuxbuxbuxbuxbuxbHabHbbHcbHdbHabvZbvZbvZbvZbvZbvibvibvibvZbvZbvZbvZbFBbHebHfbHgbHhbFBbHibHjbHkbHlbHmbHnbEabHobHpbEcbHqbHrbHsbEgbHtebBebCebAbFQbBrebFebDebEbBsbHCbHDbHEbHFbBsbHGbHHbBwbHIbHJbHKbHJbHKbHJbHLebGbHMbHNbHObHPbHQbHRbHSbHTbHUbHVaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaabAjbAjbAjbAjaaaaaabAjbAjbAjbAjbAjbAjbAjbAjbAjaaaaaabAjbAjbAjbAjaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafaagaadaadaaaaabaaaaaaaaabBEbDhbDhbDibAkbDjbDjbDjbDkbBMbDlbDmbAkbDnbDobELbDqbDrbDsbDtbCfbDubDvbDwbDxbDubDybDybDzbDAbDBbDybuxbDCbDDbFebuxbuxbuxbDFbymbuxbCrbDGbDGbDHbDGbDGbDIbymbImbuxbDKbymbDLbuxbvFbymbCrbymbuxbDMbDNbDObvZbxibxibzzbDPbxibDQbAUbAUbAUbAUbBgbDRbDSbDTbDUbDVbDWbDXbDYbvZbDZbDZbDZbDZbEabBlbEbbEcbEdbEebEfbFMbEhebvbEjbEkbElbBrebwbEndgGbBsbEpbBsbEqbBsbBsbErbEsbEtbEubEvbCVbEwbExbEybEzbBwbEAbEAbEAbFUbEAbEAbEAbEAbEAbEAaafaafaafaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaabAjbAjbAjbAjaaaaaabAjbAjbAjbAjbAjbAjbAjbAjbAjaaaaaabAjbAjbAjbAjaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadaadaadaadaagaadaadaadaagaafaaaaafaaaaaaaaaaaaaaaaaaaaabBEbECbEDbEEbAkbEFbEGbEGbEHbEGbEIbEJbAkbEKbGmbEMbENbEObEPbEQbERbESbETbEUbEVbEWbEXbEYbEZbFabFbbFcbuxbGSbGTbFfbFgbFhbuxbvGbvFbuxbFibDGbFjbFkbFlbDGbFmbFnbChbuxbzpbymbFobuxbvGbymbFpbFqbFrbFsbFtbFubFvbDTbFwbDTbFxbDTbFybDTbDTbDTbDTbFzbFAbFBbFBbFBbFBbFBbFBbFCbFDbDZbFEebxbFGbEabFHbFIbFJbFKbFLbFVbFMbFNbFObFPbEjbHxbKtebzebybFTbGbbGibFWbFXbFYbBsbFZbGabHybGcbGdbGebGdbGfbGgbGhbKrbGjbGkbGlbGpbGqbGnbGobJpbGrbGsaaaaaaaaaabcaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaabAjbAjbAjbAjbAjbAjbAjbAjbAjbAjbAjbAjbAjbAjbAjbAjbAjbAjbAjbAjbAjaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadaadaaaaaaaafaaaaaaaaaaaaaafaaaaaaaafaaaaaaaaaaaaaaaaaaaaabBEbGtbGubGvbAkbGwbEGbEGbGxbGybGzbGAbGBbGCbGDbGEbGFbEObGGbGHbERbGIbGJbGKbGLbGMbEXbGNbGObGPbGQbGRbuxbGUbVfbuxbGVbFhbuxbAQbAQbuxbGWbDGbGXbFkbGYbDGbuxbuxbuxbuxbGZbGZbGZbuxbuxbuxbuxbuxbHabHbbHcbHdbHabvZbvZbvZbvZbvZbvibvibvibvZbvZbvZbvZbFBbHebHfbHgbHhbFBbHibHjbHkbHlbHmbHnbEabHobHpbEcbHqbHrbHsbEgbHtebBebCebAbFQbBrebFebDebEbBsbHCbHDbHEbHFbBsbHGbHHbBwbHIbHJbHKbHJbHKbHJbHLebGbHMbHNbHObHPbHQbHRbHSbHTbHUbHVaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaabAjbAjbAjbAjbAjbAjbAjbAjbAjbAjbAjbAjbAjbAjbAjbAjbAjbAjbAjbAjbAjaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadaaaaaaaaaaafaaaaaaaaaaaaaafaaabHWbHWbHWbHWbHWbHWbHWbHXbHXbBEbHYbHZbDibAkbIabIabIbbIcbIdbIebIfbAkbIgbIhbIibIjbIkbIlccMbCfbInbIobIpbIqbIrbDybIsbItbIubIvbIwbIxbIxbIybIxbIxbIxbIxbuxbuxbuxbIzbDGbIAbIBbICbDGaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabIDbIEbIFbIGbIHbIIbIDaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabFBbIJbIKbILbILbIMbINbBqbDZbIObIPbIQbEabIRbISbITbIUbIVbIWbEgbEjebIbIXebHbIZbBrbBrbBrbBrbBsbJdbJebJfbJgbBsbJhbJibBwbBwbJjbJkbJlbJjbJmbJjbBxbJnbJobKFbJqbJrbJsbJtbJqbJubJvaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaabAjbAjbAjbAjbAjbAjbAjbAjbAjbAjbAjbAjbAjbAjbAjbAjbAjbAjbAjbAjbAjaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafaaaaaaaaaaafaaaaaaaaaaaaaafbHWbHWbJwbJxbJybJzbJAbHWbJBbJCbJDbJEbJFbJGbAkbIabIaebJbJIbJJbJKbJLbAkbJMbJNbJObJPbCfbERbJQbCfbJRbJSbJTbJUbJVbDybGNbJWbJXbJYbJZbIxbKabKbbKcbKdbKebIxbKfbKgbuxbCrbDGbKhbKibDGbDGaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabIDbKjbKkbHcbKlbKmbIDaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabFBbFBbKnbKobKpbFBbKqbvZbEabDZbKzbDZbEabBlbEgbKsbOobKsbKubBlbKvbxIbKwbxIbKxbCJebLebKebKbKybBsbPEbBsbBsbBsbHGbKAebMbBwbBwbBwbBwbBwbBwbBwbBwbKBbKCbKDbKEbLkbKBbKGbKBbKHbKIbKJbKKaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaabAjbAjbAjbAjbAjbAjbAjbAjbAjbAjbAjbAjbAjbAjbAjbAjbAjbAjbAjbAjbAjaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadaadaafaafaafbKLbKMbKMbKMbKMbKNbKObKPbKQbKRbKSbKTbKUbHWbKVbKWbKXbKYbKZbBEbAkbAkbAkbAkbAkbAkbAkbAkbAkbLabLbbLcbLdbLebLfbLgbLhbLibLjbPTbLlbLmbEXbLnbLobLpbLqbLrbLsbLtbLubLvbLwbLxbIxbLybLzbLAbCrbDGbDGbDGbDGaaaaaaaaaaaaaaaaaabLBbLBbLCbLCbLCbLBbLBbLDbLEbHcbLFbLGbLHbLHbIDbIDbIDbLHbLHaaaaaaaaaaaaaaaaaabFBbFBbFBbFBbFBbLIbBqbLJbLKbLLbLMbLNbLObLPbLQbLRbLSbLTbLUbLVbLWbLXbLYbLZbMabMbbMbbMbbMdbMebMfbMgbMhbMibMjbMkbMlbMmbMmbMnbMobMpbMmbMqbMrbJvbMsbMtbMubMvbMwbMxbMybMzbMAbMAbMBaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa @@ -11326,26 +326389,26 @@ aaaaaaaaaaaaaaaaaaaaabAjbAjbAjbAjbAjbAjbAjbAjbAjbAjbAjbAjbAjbAjbAjbAjbAjbAjbAjbA aaaaaaaaaaaaaaaaaaaaabAjbAjbAjbAjbAjbAjbAjbAjbAjbAjbAjbAjbAjbAjbAjbAjbAjbAjbAjbAjbAjaaaaaaaaaaaaaaaaaaaaaaadaadaaaaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabKLbMDbMDbKMbMDbKNbMFbOybOzbOAbOBbOCbODbHWbOEbKXbOFbOGbOHbOIbOJbOKbOLbOMbONbOObOPbOQbORbOSbOTbOKbOUbOVbLgbNhbOWbNjbOXbOYbOZbPabDybDybDzbPbbDzbDybIxbIxbPcbPdbNsbPebIxbPfbPgbAQbCrbymbuxaaaaaaaaaaaaaaabLCbLCbPhbPibPhbPjbPkbPlbNAbNAbPmbNDbHcbNEbPmbNHbNHbPnbPobPpbPqbPrbPqbIDbIDaaaaaaaaaaaaaaabvZbPsbPtbPubPvbPvbPwbPxbPwbPwbPwbPwbPybPzbCSbPAbPAbPAbPAbPBbPAbPAbPAbPAbPAbPAbPAbPCbPDbSWbPFbPFbPFbPFbPFbPFbPFbTabPHbPIbPJbPKbPLbJvbPMbPNbMubPObPPbPQbMybPRbPSbTCbMBaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaabAjbAjbAjbAjbAjbAjbAjbAjbAjbAjbAjbAjbAjbAjbAjbAjbAjbAjbAjbAjbAjbAjbAjaaaaaaaaaaaaaaaaadaadaaaaaaaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabMCbKMbKMbKMbKMbKNbKObPUbPVbPVbPWbPXbPYbHWbPZbQabQbbQcbDibQdbQebQfbQgbQhbQibQhbQhbQjbQhbQgbQkbQlbQmbQnbQobQpbQkbQqbQrbQsbOZbQtbQubQvbQwbQxbQybQzbQAbQBbQCbQDbNsbQEbIxbQFbPgbAQbCrbQGbuxaaaaaaaaaaaabLCbLCbQHbQIbQJbQKbQLbQMbQNbQJbQObQPbQQbHcbQRbQPbQSbNEbQTbQUbQVbQWbNEbQXbQYbIDbIDaaaaaaaaaaaabvZbQZbvZbvZbPvbRabRbbRcbRdbRebRfbRgbRhbRibEsbRjbRkbRlbRmbRnbRobRpbRqbRrbRsbRtbPAbPCbRubRvbRwbRxbPFbRybRzbRAbPFbRBbRCbPIbPIbRDbREbRFbRGbRHbRIbRJbKBbKKbKBbKBbKBbKBbKGaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaabAjbAjbAjbAjbAjbAjbAjbAjbAjbAjbAjbAjbAjbAjbAjbAjbAjbAjbAjbAjbAjbAjbAjaaaaaaaaaaaaaaaaadaaaaaaaaaaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafaaaaaaaaaaaaaaabHWbRKbRLbRMbRNbRObRPbHWbRQbRRbQbbRSbDibRTbRUbQgbQgbRVbRWbRXbRYbRZbSabSbbQkbScbSdbSebSfbSgbShbSibSjbSkbEVbSlbSmbSnbSobSpbSqbSrbSsbStbStbSubStbStbStbStbuxbuxbCrbSvbuxaaaaaaaaabLCbLCbQHbQIbSwbSwbSxbSybSzbSAbSAbSBbSCbSDbSEbSFbSGbSHbSIbSJbSJbSKbSLbSMbSMbQXbQYbIDbIDaaaaaaaaabvZbSNbSObSPbPvbSQbSRbSSbSTbSUbSVbWObSXbSYbSZcdnbTbbTcbTdbTdbTdbTebTfbTgbThbTibTjbPCbTkbTlbTmbTnbTobTobTobTobPFbTpbTqbTrbPIbTsbTtbKBbTubTvbTwbTxbTybTzbTAbTBbJvaaaaaaaabaaaaaaaaaabcaadaadaadaadaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaabAjbAjbAjbAjbAjbAjbAjbAjbAjbAjbAjbAjbAjbAjbAjbAjbAjbAjbAjbAjbAjaaaaaaaaaaaaaaaaaaaafaaaaaaaaabKLbVibKLbVibKLbVibKLbVibKLbVibKLbViaafaafbTDbTEbTDbTDbTDbTDbTDbTEbTFbTGbTDbBEbTHbQbbTIbDibTJbTKbQgbTLbTMbTNbTObTPbTQbTRbTSbQkbTTbTUbTVbTWbTXbTYbTZbSjbUabEVbUbbUcbUdbUebUfbUgbUhbUibStbUjbUkbUlbUlbUmbStbUnbymbCrbUobGZaaaaaaaaabLCbUpbQIbSwbUqbUrbUsbUtbUubUvdNgbUxbUybUzbUAbUBbQPbUCbNEbUDbUEbUFbUGbUHbUIbSMbQXbUJbIDaaaaaaaaabvibUKbxibULbPvbUMbUNbUObUPbUQbURbUSbUTbUUbUVbRjbUWbUXbUYbUZbUYbVabTibVbbVcbVdbVebPCbVfbVgbVhbVxbVjbVkbTobVlbPFbVmbVnbVobPIbVpbVqbKBbVrbVsbVtbVtbVtbVsbVsbVubHVaaaaaaaaaaaaaaaaaaaaaaafaaaaaaaadaagaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaabAjbAjbAjbAjbAjbAjbAjbAjbAjbAjbAjbAjbAjbAjbAjbAjbAjbAjbAjbAjbAjaaaaaaaaaaaaaaaaaaaafaaaaaaaaabKLbVibKLbVibKLbVibKLbVibKLbVibKLbViaafaafbTDbTEbTDbTDbTDbTDbTDbTEbTFbTGbTDbBEbTHbQbbTIbDibTJbTKbQgbTLbTMbTNbTObTPbTQbTRbTSbQkbTTbTUbTVbTWbTXbTYbTZbSjbUabEVbUbbUcbUdbUebUfbUgbUhbUibStbUjbUkbUlbUlbUmbStbUnbymbCrbUobGZaaaaaaaaabLCbUpbQIbSwbUqbUrbUsbUtbUubUvdNgbUxbUybUzbUAbUBbQPbUCbNEbUDbUEbUFbUGbUHbUIbSMbQXbUJbIDaaaaaaaaabvibUKbxibULbPvbUMbUNbUObUPbUQbURbUSbUTbUUbUVbRjbUWbUXbUYbUZbUYbVabTibVbbVcbVdbVebPCcdFbVgbVhbVxbVjbVkbTobVlbPFbVmbVnbVobPIbVpbVqbKBbVrbVsbVtbVtbVtbVsbVsbVubHVaaaaaaaaaaaaaaaaaaaaaaafaaaaaaaadaagaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabAjbAjbAjbAjbAjbAjbAjbAjbAjbAjbAjbAjbAjaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafaaaaaaaaabVvbVwbVAbVwbVAbVwbVAbVwbVAbVwbVAbVwbVybVzbVEbVBbVCbVDbVBbXpbVBbVFbVGbVHbVIbBEbVJbVKbVLbVMbVNbVObQgbVPbTMbVQbVRbVSbVTbTRbVUbQkbVVbVWbVXbVYbVZbWabNjbWbbWcbWdbWebWfbWgbWhbWibWjbUhbWkbWlbWmbWnbWobWpbWqbStbWrbymbCrbWsbGZaaaaaabLBbLBbWtbQJbSwbWubWvbWwbWxbWybWxbWxbWzbWAbKjbWBbWCbWDbWDbWEbWFbWGbWDbWDbWHbUHbSMbNEbWIbLHbLHaaaaaabvibUKbxibWJbPvbWKbWLbWMbUPbWNbPvbPvbxHcfqbxHbPCbPCbWPbWQbWRbWSbVabWTbWUbWVbWWbWXbPCbWYbWZbXabXbbVjbXcbTobXdbPFbXebXfbXgbPIbXhbBvbKBbVrbXibXjbXkbXlbXmbXnbVubGsaaaaaaaaaaaaaaaaaaaaaaafaaaaaaaaaaadaadaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabAjbAjbAjbAjbAjbAjbAjbAjbAjbAjbAjbAjbAjaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafaaaaaaaaabMCbKMbKMbKMbKMbKMbKMbKMbKMbKMbKMbKMbVybXoccAbXqbXrbXsbXtbXrbXsbXubXvbXwbXxbBEbXybXzbKZbDibXAbXBbQgbXCbTMbTObXDbXEbTObTRbXFbQkbXGbXHbXIbXJbXKbXLbXMbXNbXObGLbXPbUcbQwbXQbXRbXRbXSbQwbStbXTbXUbXVbXWbXXbStbWrbymbCrbDLbGZaaaaaabLBbXYbXZbYabYbbYcbWwbWwbYdbYebYfbWwbYgbWAbWAbYhbWDbWDbYibYjbYkbYlbYmbWDbWDbYnbYobYpbYqbYrbLHaaaaaabvibUKbYscvCbPvbYtbYubYubYvbYwbUSbYxbYybYzbYAbYBbRjbYCbYDbYDbYDbYEbYFbYFbYGbYHbYFbYIbYJbYKbYLbYMbTobTobTobYNbPFbYObYPbYQbPIbRDbREbKBbYRbKBbKBbKBbKBbKBbKBbKBbKBbYSbYSaaaaaaaaaaaaaaaaafaaaaaaaaaaaaaadaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabAjbAjbAjbAjbAjbAjbAjbAjbAjbAjbAjbAjbAjaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaagaaaaaaaaabKLbVibKLbVibKLbVibKLbVibKLbVibKLbViaadbYTbYUbYVbYWbYXbYVbYWbYXbXubYYbYZbZabBEbZbbZcbZbbDibZdbZebQgbZfbZgbZhbZibXEbZhbZjbZkbQkbZlbZmbZnbZobZpbZqbSibOXbEVbEVbSlbZrbZsbQwbQwbQwbQwbZtbStbZubStbZvbStbStbStbuxbymbCrbZwbuxaaaaaabLCbZxbZybZzbZAbZBbZCbZDbZEbZFbZGbWwbZHbZHbZIbZJbWDbZKbZLbZMbZMbZNbZObZPbWDbZQbZRbZSbYqbZTbIDaaaaaabvZbUKbAUbvZbPvbZUbZVbZWbZWbZXbZYbZZcaacabcaccadcaecafcagcagcagcahcaicajcakcalcambYIcancaocapcaqbPFcarcascatbPFcaucavcawbPIbRDbREcaxcaycazcaAcaBcaCcaDcaEcaFcaGcaHcaIcaIcaHcaHcaHcaHcaHaaaaaaaaaaaaaadaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabAjbAjbAjbAjbAjbAjbAjbAjbAjbAjbAjbAjbAjaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadaaaaaaaaabVvbVwbVAbVwbVAbVwbVAbVwbVAbVwbVAbVwbVycaJbTDcaKbYWbYXbYVbYWbYXbXucaLcaMcaMcaMcaMcaMcaMcaMcaNcaObQgcaPcaQcaRcaScaTcaUcaVcaWbQkbQkcaXbQkcaYcaZbQkcbacbbbEVcbccbdbQucbecbfcbgcbhcbicbjbStcbkbStcblbStcbmcbncbobymbCrbymbuxaaaaaabLCcbpcbqcbrcbscbtcbuebPcbwcbxcbycbzcbAcbBcbCcbDbWDcbEcbFcbGcbHcbIbZOcbJcbKcbLcbMcbNcbOcbPbIDaaaaaabvZbUKcbQcbRbPvbPvcbScbTcbUcbVbUScbWcbXcbYcbZccaccbcccccdebRebQccgcaicchcciccjcckbYIbPFcclbPFbPFbPFbPFbPFbPFbPFbPIbPIbPIbPIccmccncaxccoccpccqccrccscctcaCcaFcaFcaHccuccvccwcaHccxccycaHcaHaafaafaafaadaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabAjbAjbAjbAjbAjbAjbAjbAjbAjaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadaafaafaafbVvcczcdQcczcdQcczcdQcczcdQcczcdQcczbVyccBbTDccCbYWccDccEbYWccDbXuccFcaMccGccHccIccJccKcaMbXAccLcaWcaWcaWcaWcaWcaWcaWcaWcaWcCibQkbQkbQkbQkbQkbQkccNccObDxccPccNccQccQccQccQccQccQccQccRccRccRccRbStccSccTbuxccUccVccWbuxaaaaaabLCccXccYccZcdacdbbWwbWwbWwbWwbWwbWwcdccddcddcdebWDbWDbWDbWDbWDcdfbZOcdgbWDcdhcbMcdicbOcdjbIDaaaaaabvZcdkbxibxicdlbPvbPvbPvbPvbPvbPvcdmcipcdocipcdmbPCbPCbPCbPCbPCbPCbYIcdpcdqcdqcdrbYIcdscdscdscdtcducdvcdwcdxcdycdAebUebVebSebTcdDcdEcdFcdGcdHccrccscdIcaCcdJcaFcdKcdLcdMcdNcaIcdOcdMcdPcaHaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabAjbAjbAjbAjbAjbAjbAjbAjbAjaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadaafaafaafbVvcczcdQcczcdQcczcdQcczcdQcczcdQcczbVyccBbTDccCbYWccDccEbYWccDbXuccFcaMccGccHccIccJccKcaMbXAccLcaWcaWcaWcaWcaWcaWcaWcaWcaWcCibQkbQkbQkbQkbQkbQkccNccObDxccPccNccQccQccQccQccQccQccQccRccRccRccRbStccSccTbuxccUccVccWbuxaaaaaabLCccXccYccZcdacdbbWwbWwbWwbWwbWwbWwcdccddcddcdebWDbWDbWDbWDbWDcdfbZOcdgbWDcdhcbMcdicbOcdjbIDaaaaaabvZcdkbxibxicdlbPvbPvbPvbPvbPvbPvcdmcipcdocipcdmbPCbPCbPCbPCbPCbPCbYIcdpcdqcdqcdrbYIcdscdscdscdtcducdvcdwcdxcdycdAcgUebVebSebTcdDcdEcrWcdGcdHccrccscdIcaCcdJcaFcdKcdLcdMcdNcaIcdOcdMcdPcaHaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabAjbAjbAjbAjbAjbAjbAjaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadaaaaaaaaabMCcdRbMCcdRbMCcdRbMCcdRbMCcdRbMCcdRaafaafbTDcehcdScdTcdUcdVcdTcdWcdXcdYcdZceacebceccedceebXAcefcegcfEceicejcekcekcekcekcekcekcekcekcekcelcemcenceocepceqceqcerbuxcescescetbDLceubymbAQbAQbvFbvGbuxcevbuxbuxbymbCrcewbuxaaaaaabLBcexccYbQJceycezceAceBceCceDceEceFceGceHceHceIceHceHceHceJceKceLceMceNbWDbNEceObNEcbObNGbLHaaaaaabvZcePceQceQceQceRceSbxiceTceUbvZceVceWceXceWceYceZcfacfbcfccfdcfebYIbYIcffcfgbYIbYIcfhcficficfjcfkcflcfmcfmcfmcdvebYbxHebWebXbOncoHcfrcfscftccrccsccscdIcdIcaFcaHcfucfvcfwcfxcfycfzcfAcfBcfCaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafaaaaaaaaaaaaaaaaafaaaaaaaaaaaaaafaaaaaabTDcfDbXrcfFciGcfGcfHbXucfIcaMcaMcaMcaMcfJcfKcfLcfMcfNcfOcfOcfPcfQcfRcfRcfRcfRcfRcfRcfRcencencencfScfTcfUcfVcfWcfXcfYcfZcgacgbcgacgacgacgacgacgccgccgccgccgdcgccgccgccgecgfbuxbLCbLCbLBcggccYcghcgicgjcgkcglcglcgmceEcgnbWAbWAbWAbWAbWAbWAbWAcgnbWEcgocgpcgqbWDcgrcgscgtcgucgvbLHcgwcgwbvZbUKbxibAUbCCbCDcgxbxicgybxicgzcgAcgBcgCcgDcgAcgEcfacgFcgGcgHcgIcgJcgKcgLcgMcgNcgNcgOcdtcdtcdtcdtcdtcdtcdtcfmcdvcgPbxHcgQcgRcgScaxcgTcgUcgVccrccscdIcgWcgXcaFcaHcgYcgZchacaHcaIchbcaIcaHcaHaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafaaaaaaaaaaaaaaaaafaaaaaaaaaaaaaafaaaaaabTDcfDbXrcfFciGcfGcfHbXucfIcaMcaMcaMcaMcfJcfKcfLcfMcfNcfOcfOcfPcfQcfRcfRcfRcfRcfRcfRcfRcencencencfScfTcfUcfVcfWcfXcfYcfZcgacgbcgacgacgacgacgacgccgccgccgccgdcgccgccgccgecgfbuxbLCbLCbLBcggccYcghcgicgjcgkcglcglcgmceEcgnbWAbWAbWAbWAbWAbWAbWAcgnbWEcgocgpcgqbWDcgrcgscgtcgucgvbLHcgwcgwbvZbUKbxibAUbCCbCDcgxbxicgybxicgzcgAcgBcgCcgDcgAcgEcfacgFcgGcgHcgIcgJcgKcgLcgMcgNcgNcgOcdtcdtcdtcdtcdtcdtcdtcfmcdvcgPbxHcgQcgRcgScaxcgTcvecgVccrccscdIcgWcgXcaFcaHcgYcgZchacaHcaIchbcaIcaHcaHaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafaaaaaaaaaaaaaaaaafaaaaaaaaaaaaaafaaabTEbTDchcchcbTDchdchechfbXuchgchhchichjchkchlchmchnchochpchqchrchschtcfRchuchuchuchuchuchvchwchxcenchychzchAchBchCchDchEbuxbuxbuxbuxbuxbuxbuxbuxbuxbuxbuxbuxbuxbuxbuxbuxbuxchFchGchHchIbLBchJchKchLchMchNcgkcgkchOchPceEchQbWAchRchRchRchRchRbWAchSbWDchTchUbWDbWDchVchWchVchXchYchZciacibciccidbvgbvZbvZbvZbvZbvZbvZbvZbvZciecifcigcihcieceZceZceZciiceZceZceZceZcijcikcgNcilcimcinciociociociociocdtcdvcdvcaGbxHcoIbxHbxHcaxciqcaxcaxccrcaFcaGcaHcaHcaHcaHcircgZciscitciucivciwcixcaHcaHaaaaaaaaaaadaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafaafaafaafaafaafaafaafaafciybTDcizciAciBciCciDciEciFcmCciHciIciJciKciLciMciNciOciPciQciRcfOciSciTcfRchuchuchuchuchuciUciVciWciXciYciZcjacjbcjccjdcjecjfcjgdVxcjdcjhcjicjbcjjcjkcjlcjmcjbcjncjociWcjpcjqcjrcjscjtcjucjvbUwbUwcjwcjxcjycjzcgkceEceEceEcdcbWAchRchRchRchRchRbWAcgnbWDbWDbWDbWDciacjAcjBcjCcjDcjDebZcjFcjGcjHcjIcjJcjKcjLcjMcjNcjOcjPcjQcjRcjNcjOcjScjTcjUcjVcjWcjXcjTcjYcjZckaecacijckcckdckeckfckgciociociociociocdtckhcdvckickjckkcklcaGckmcknckockpcaCckqckrcaHckscktcaHckueccecbecbecbcopcdMckvckwcaIaaaaaaaaaaadaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaackxckyckzckAckBckCckDckEckFckGckHckIckJckKckLckMchnbLgckNcfOcfOckOcencfRchuchuchuchuchuckPckQckRckSckTckUckVckWckXckWckYckUckZckUckUclaclbckUckUclccldcledhndhpdhqclhclicljclkcllclmcllcllcllcllcllclncloclpbYhclqclrceHclsbWAchRchRchRchRchRbWAcltbZJcluclvclwclxclyclzclAclAclAclAclAclBclCclDclEclFclGclHclIclHclHclJclKclHclIclLclHclMclHclHclNclHclHclOclPclJclQclRclSecdclUclVciociociociociocdtclWcdvclXclYclZcmacmbcmccmdcmecmfcmgcmhcmicmjcmkcmlcmmcmncmocmpcmqcmrcmscmtcdMcmucmvaafaafaafaadaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafaafaafaafaafaafaafaafaafaafaafaafaaabTDcmwciAcmxcmycmzcmAcmBcrAcmDcmEcmFcmGcmHcmIcmJcmKcfOcfOcfOcmLcmMcmNcfRchuchuchuchuchucmOcmPciWciXcmQcmRcmScmTcjccmUcmVcmWcmXchCdhscmYcmZcmTcnacnbcnccndcngdhSdiqcnhcnicnjcnkcnlcnmcnncnobUwbUwcnpcnqcnrcnsbWAcntcnucddcddbWAchRchRchRchRchRbWAcnvcnwcnxcnybWAcnzcnAcnBcnCcnDcnDcnEcnFcnGcnHcnIcnJcjKcjLcjPcnKcjPcjPcnLcnMececnOcnPcnQdVycnRcnScnTcnLcnRcnUcnVcnWcnXckcckdcnYcnZcoaciociociociociocdtcobcoccaGcodcoecofcaGcogcohcogcoicojcokcolcaHcomconcaHcoocopcoqcdMcorcgZcdMcoscotcaIaaaaaaaaaaadaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafaaaaaaaaaaaaaaaaafaaaaaaaaaaaaaafaaabTEbTDchcchcbTDcoucovcowbXucoxchhcoycozcoAcoBcoCcoDcoEcoFcoGcmLcrQcrOcfRchuchuchuchuchuchvcoJcoKcencencoLchEcoMchCcoNcoOcoPcoPcoPcoPcoPcoPcoQcoQcoRcoScoQdirdwgdwqditcoTcoVcoWchGcoXcnsbLBcoYchKchLcoZchNbLBbWAcgncpacpbcpcbWAchRchRchRchRchRcpdcpdcpecpdcpdcpdcpdcpfchWchVchXcpgchZcphcpiciccpjcpkcpkcpkcplcpmcpncpncpncpncpncpocpncpncpncpncpncpncppcpqcprcnVcpsciecptcgNcpuciecinciociociociociocdtcpvcdvcaGcpwcpxcpycpzcpzcpzcpAcpzcpBcpzcpzcaHcaHcaHcaHcpCechecfecgeciecjcpIcpJcaHcaHaaaaaaaaaaadaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaagaaaaaaaaaaafaaaaaaaaaaaaaaaaafaaaaaaaaaaaaaafaaaaaabTDcpKcpLcpMcpNchecmDbXucpOcpPcpPcpQcpPcpRcpScpPcoEcmLcmLcmLcpUcpTcfRcfRcfRcfRcfRcfRcfRcencencencpVcpWcpXcpYcpZcqacpXcqbcqccqdcqecqfcqgcqhcqicqjcqkcqlcoQdwTdwWdwTdwUcqncqocoVbLCbLCcqpcqqcqrcqscqtcqubWzcqvcqwcqxcqxcqxcqycqycqzcqAcqBcqpcpdcqCcqDcqEcqFcqGcpdcqHcqIcjCcqJcqKchZcgwcgwcpkcqLcqMcqNcqOcqPcqPcqQcqRcqScqTcqUcqVcqWcqXcqYcqZcracracrbcrccrdcrecrfcrgcrhcrhcrhcricdtcdtcdtcdtcdtcdtcdtcfmcdvcrjcpwcrkcrlcrmcrncrocrpcrqcrrcrscrtcrucrvcrvcaHcrwcgZcrxcaHcaIcrycaIcaHcaHaaaaaaaaaaaaaadaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadaaaaaaaaabKLbVibKLbVibKLbVibKLbVibKLbVibKLbViaafaafbTDcrzbXrctqcrBcrCcrDcrEcrFcrGcrHcrIcrJcrKcrLcpPcuXcrMcrNcrNcrPcuZcrRcrRcrRcrScrTcrUcrVcpVcpVcrWcpVcencrXcrXcrXcrXcrXcoPcrYcrZcsacsbcsccoQcsdcsecsfcsgcoQdyidypdybdwUcshcqocoVaaaaaacqpcsicqrcsjcskcslbWzcsmcsncqxcsocspcsqcsrcsjcsjcsjcsscstcsucsvcswcsxcsycpdcszcsAcjDcsBcsCchZaaaaaacpkcsDcsEcsFcpkcsGcsHcpncsIcsJcsKcsLcsMcsNcsOcsPcsQcsRcsScpncsTcsUcsVcsVcsWcrhcdvcdvcsXcfmcfmcfmcfmcfmcfmcfmcfmcdvcsYcpwcsZctacrmctbctcctdctectfctgcthcticrvcrvctjctkctlctmcaIctnctoctpcaHaaaaaaaaaaaaaadabcaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadaafaafaafbVvbVwbVAbVwbVAbVwbVAbVwbVAbVwbVAbVwbVybVzbTDcttctrctscwRctrctuctvctwcpPctxctyctzctActBcpPcuXctCctDctDctFctEctDctGctGctHctHctIctJctIctKctIctIctLctLctMctNctMctLctLctOctOctOctPctOctOctQctRctScoQcoQdUPdUQdBMdwUctTcqocoVaaaaaactUctVctWctXcskctYbWzctZcuacubcuccudcuecufcugcuhcsjcuicujcukculcumcuncuocpdcupcsAcuqcurcuscgwaaaaaacpkcutcuucuucuucuvcuwcuucuucuxcuxcuxcuycuzcuAcuzcuzcuzcuzcuBcuCcuDcuEcuFcuCcuGcuGcuGcuGcuGcuGcuGcuHcuHcuHcuHcuIcuIcuIcuIcuJcuKcuLctbcuMcrqcrqcrqcrqcrqcrvcrvcrvcaHcuNcorcuOcaIcdOcdMcdPcaHaaaaaaaaaaadaadaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadaaaaaaaaabVvcczcdQcczcdQcczcdQcczcdQcczcdQcczbVycaJbTDcaKcuPcuQcuRcuScuQcuTcuUcpPcpPcpPcpPcpPcpPcpPcuXcuVctDcuWcuYcxbctDcvacvbcvccvcctIcvdctIcvecvfcvgcvhcvicvjcvkcvjcvlcvmcvncvocvpcvqcvrctOcvscvtcvucvvcoQdUSdUTdURdwUcvwcqocoVaaaaaactUcvxcvycvzcvAcvBbWzcDQcvDcqxcvEcvFcvGeckcvIcvJcsjcvKcvLcvMcvNcumcvOcvPcvQcvRcsAcvScvTcvUcgwaaaaaacpkcsDcuucvVcvWcvXcvYcvZcwacwbcwccwdcuycwecwfcwgcwhcwicwjcwkcwlcwmcwncwocwpcwqcwrcwscwtcwucwvcwwcwxcwycwzcwAcwBcwCcwDcwEcwFcwGcrmcwHcwIcwJcrqcrqcrqcwKcwLcwIcrvcaHcwMcwNcwOcaHccxcwPcaHcaHaafaafaafaadaXGaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadaaaaaaaaabMCcdRbMCcdRbMCcdRbMCcdRbMCcdRbMCcdRaadbYTcwQcwUcwScwTcxtcwScwTcwVcwWcwXcwYbTDcfRcrMcrNcrNcrNcwZctDcxacxccxdctDcvacxectHctHctIcxfcxgcxhcxicxjcxkcxlcxlcxlcxmcxncxocxpcxqcxrcxscFGcxucxvcxwcxxcvvcoQdwUdwUdwUdwUcoVcqocoVaaaaaactUcxycqrcxzcxAcxBbWzcxCcxDcqxcxEcxFcxGcsrcxHcxIcxJcvKcxKcxLcxMcxNcxOcxPcpdcvRcxQcxRcxScxTcgwaaaaaacpkcsDcuucxUcxVcxWcxXcxYcxZcyacybcyccuzcydcyecyfcygcyhcyicyjcykcylcymcyncyocypcyqcyrcyscyrcytcwwcyucyvcywcwAcyxcyycyzcwEcyAcyBcrmcrmcrmcrmcrmcrmcrmcrmcrmcpzcpzcaHcyCcaIcaHcaHcaHcaHcaHaaaaaaaaaaaaaadaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadaaaaaaaaabKLbVibKLbVibKLbVibKLbVibKLbVibKLbViaafaafbTDcrzbXrctqcrBcrCcrDcrEcrFcrGcrHcrIcrJcrKcrLcpPcuXcrMcrNcrNcrPcuZcrRcrRcrRcrScrTcrUcrVcpVcvfcpVcpVcencrXcrXcrXcrXcrXcoPcrYcrZcsacsbcsccoQcsdcsecsfcsgcoQdyidypdybdwUcshcqocoVaaaaaacqpcsicqrcsjcskcslbWzcsmcsncqxcsocspcsqcsrcsjcsjcsjcsscstcsucsvcswcsxcsycpdcszcsAcjDcsBcsCchZaaaaaacpkcsDcsEcsFcpkcsGcsHcpncsIcsJcsKcsLcsMcsNcsOcsPcsQcsRcsScpncsTcsUcsVcsVcsWcrhcdvcdvcsXcfmcfmcfmcfmcfmcfmcfmcfmcdvcsYcpwcsZctacrmctbctcctdctectfctgcthcticrvcrvctjctkctlctmcaIctnctoctpcaHaaaaaaaaaaaaaadabcaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadaafaafaafbVvbVwbVAbVwbVAbVwbVAbVwbVAbVwbVAbVwbVybVzbTDcttctrctscwRctrctuctvctwcpPctxctyctzctActBcpPcuXctCctDctDctFctEctDctGctGctHctHctIctJctIcvgcvgctIctLctLctMctNctMctLctLctOctOctOctPctOctOctQctRctScoQcoQdUPdUQdBMdwUctTcqocoVaaaaaactUctVctWctXcskctYbWzctZcuacubcuccudcuecufcugcuhcsjcuicujcukculcumcuncuocpdcupcsAcuqcurcuscgwaaaaaacpkcutcuucuucuucuvcuwcuucuucuxcuxcuxcuycuzcuAcuzcuzcuzcuzcuBcuCcuDcuEcuFcuCcuGcuGcuGcuGcuGcuGcuGcuHcuHcuHcuHcuIcuIcuIcuIcuJcuKcuLctbcuMcrqcrqcrqcrqcrqcrvcrvcrvcaHcuNcorcuOcaIcdOcdMcdPcaHaaaaaaaaaaadaadaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadaaaaaaaaabVvcczcdQcczcdQcczcdQcczcdQcczcdQcczbVycaJbTDcaKcuPcuQcuRcuScuQcuTcuUcpPcpPcpPcpPcpPcpPcpPcuXcuVctDcuWcuYcxbctDcvacvbcvccvcctIcvdctIctKctIcxicvhcvicvjcvkcvjcvlcvmcvncvocvpcvqcvrctOcvscvtcvucvvcoQdUSdUTdURdwUcvwcqocoVaaaaaactUcvxcvycvzcvAcvBbWzcDQcvDcqxcvEcvFcvGeckcvIcvJcsjcvKcvLcvMcvNcumcvOcvPcvQcvRcsAcvScvTcvUcgwaaaaaacpkcsDcuucvVcvWcvXcvYcvZcwacwbcwccwdcuycwecwfcwgcwhcwicwjcwkcwlcwmcwncwocwpcwqcwrcwscwtcwucwvcwwcwxcwycwzcwAcwBcwCcwDcwEcwFcwGcrmcwHcwIcwJcrqcrqcrqcwKcwLcwIcrvcaHcwMcwNcwOcaHccxcwPcaHcaHaafaafaafaadaXGaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadaaaaaaaaabMCcdRbMCcdRbMCcdRbMCcdRbMCcdRbMCcdRaadbYTcwQcwUcwScwTcxtcwScwTcwVcwWcwXcwYbTDcfRcrMcrNcrNcrNcwZctDcxacxccxdctDcvacxectHctHctIcxfcxgcxhcXqcxjcxkcxlcxlcxlcxmcxncxocxpcxqcxrcxscFGcxucxvcxwcxxcvvcoQdwUdwUdwUdwUcoVcqocoVaaaaaactUcxycqrcxzcxAcxBbWzcxCcxDcqxcxEcxFcxGcsrcxHcxIcxJcvKcxKcxLcxMcxNcxOcxPcpdcvRcxQcxRcxScxTcgwaaaaaacpkcsDcuucxUcxVcxWcxXcxYcxZcyacybcyccuzcydcyecyfcygcyhcyicyjcykcylcymcyncyocypcyqcyrcyscyrcytcwwcyucyvcywcwAcyxcyycyzcwEcyAcyBcrmcrmcrmcrmcrmcrmcrmcrmcrmcpzcpzcaHcyCcaIcaHcaHcaHcaHcaHaaaaaaaaaaaaaadaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabaaaaadaaaaaaaaabKLbKMbKMbKMbKMbKMbKMbKMcyDbKMbKMbKMbVybXocyEcyFcyGcyHcyIcyJcyHcyKcyLcyLcyMbTDcfRcyNcmLcyOcyOcyPcyOctDcyRcyQctDctDcyTcyUcyVctIcyWcyXcyYcyZczaczbcxlcxlczcczdczeczfctOczgczhcziczjctOcoQcoQczkcoQcoQcqmcqmcqmcqmcoVcqoczlaaaaaacqpcsicqrczmcznczobWAbWAczpcqxcxEczqczrcsrcsjcvAcsjczscpdcztczuczvczwcpdcpdczxczyczzczAczBchZaaaaaaczCcsDcuuczDczEcxWczFczGcxZczHczIczJcuzczKcyeczLczMczNczOczPczQczRczSczTczUczVczWczXczYczXczZcAacAbcAccAdcwAcAecAfcAgcwEcAhcAicAjcAkcAlcAmcAncAocApcAqcArcAsbYScAtcAuaaaaaaaaaaaaaaaaafaaaaaaaaaaaaaadaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafaaaaaaaaabVvcczcdQcczcdQcczcdQcczcdQcczcdQcczbVyccBbTDbTDcAvcAwcAxbXpcAxcAycyLcyLcAzbTDcfRcyNcmLcyOcAAcABcACctDcAEcyScAFctDcAGcAHcAIctIcAJcAKcALcAMcANcAOcAPcAQcAQcARczecAScATcAUcAVcAWcAXctOcAYcAZcBacBbcBccqmcBdcqmcBecoVcqoczlaaaaaacqpcqpcBfcsjcuhcBgcBhbWAcBicqxcqxcqxcqxcBjcBkcBlcBkcBmcpdcpdcBncBocpdcpdcBpcBqcBrcjDcBschZchZaaaaaaczCcsDcuucuucBtcBucBvcBwcxZcBxcBycBzcuzcBAcBBcBCcBCcBDcBEcBFcBGcBHcBIcwocBJcypcBKcBLcBMcBNcBOcuGcBPcBQcBRcwAcBScBTcBUcwEcBVcBWcBXcBYcBYcAmcBZcCacCbcAmcAmcAsaaaaaaaaaaaaaaaaaaaaaaaaaafaaaaaaaaaaagaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafaaaaaaaaabVvcczcdQcczcdQcczcdQcczcdQcczcdQcczbVyccBbTDbTDcAvcAwcAxbXpcAxcAycyLcyLcAzbTDcfRcyNcmLcyOcAAcABcACctDcAEcyScAFctDcAGcAHcAIctIcAJcAKcALcAMcANcAOcAPcAQcAQcARczecAScATcAUcAVcAWcAXctOcAYcAZcBacBbcBccqmcBdcqmcBecoVcqoczlaaaaaacqpcqpcBfcsjcuhcBgcBhbWAcBicqxcqxcqxcqxcBjcBkcBlcBkcBmcpdcpdcBncBocpdcpdcBpcBqcBrcjDcBschZchZaaaaaaczCcsDcuucuucBtcBucBvcBwcxZcBxcBycBzcuzcBAcBBcBCcBCcBDcBEcBFcBGcBHcBIcwocBJcypcBLcBNcBMcBKcBOcuGcBPcBQcBRcwAcBScBTcBUcwEcBVcBWcBXcBYcBYcAmcBZcCacCbcAmcAmcAsaaaaaaaaaaaaaaaaaaaaaaaaaafaaaaaaaaaaagaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaagaaaaaaaaabMCcdRbMCcdRbMCcdRbMCcdRbMCcdRbMCcdRaafaafaafbTEbTDbTDbTDbTDbTDbTDbTDbTDbTDbTDcfRcCccencyOcCdcABcCectDcCfcADcNpcCjcCkcClcCmctIcCncCocCpcCqctIcCrcCscCtcCtcCucCvcCwcxpcCxcCycxrcCzctOcAYcCAcCBcCCcBbcBbcqmcBdcqmcoVcqoczlaaaaaaaaactUcCDcCEcuhcCFcCGcCHcCIcCJdVzcCKcCLcCMcCNcskcCOcCMcCPcnDcCQcCRcCScCTcCUcCVcBrcCWcCXcgwaaaaaaaaaczCcsDcCYcuucCZcDacDbcDccxZcDdcDecDdcuzcDfcyecDgcDhcDicDjcDkcDlcwmcDmcwocDncypcDoczXcDpczXcDqcuGcDrcDscDtcwAcDucDvcDwcwEcDxcDycDzcDAcDBcDCcDDcDEcApcDFcDGcAsaaaaaaaaaaaaaaaaaaaaaaaaaafaaaaaaaadaadaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadaaaaaaaaaaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafaaaaaaaaaaaaaaacDHcDIcDJcDKcDLcDLcDMcDNcXVcCheclcPXcyOcDRcDScDTctDctDctDctDcDUcDVcDWcDUctIcDXctIcDYcDZctIcEacEbcEccEccEdcEecEactOcEfcEgcEhcEictOcEjcEjcEjcEkcEjcBbcBbcBbcqmcoVcqocoVaaaaaaaaactUctUcElcCEcuhcuhcEmcEncEocEocEpcEqcErcEscEtcEucErcEvcEwcExcExcEycEzcBrcBrcCWcEAcgwcgwaaaaaaaaacpkcsDcEBcuucuucECcEDcEEcxZcEFcEGcEHcuzcEIcEJcEKcELcEMcENcEOcEPcEQcERcEScETcuGcEUcEVcEWcEXcEYcuGcDOcFacFbcwAcFccFdcFecwEcFfcFgcFhcFicFjcAmcFkcFlcFmcAscAscAsaafaafaafabcaafaaaaaaaagaadaadaadaadaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadaadaaaaaaaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafaaaaaaaaaaaaaaacDHcFncFocFpcFqcDHcDHcDHcMXcEZcDPcFtcyOcyOcyOcyOcGTcFvcFwcFxcDUcFycFzcFAcFBcFCcFDcFEcFFctIcOlcFHcFIcFJcFKcFLcFMctOcxpcFNcxpcFOctOcFPcFQcFRcFScEjcoVcoVcFTcoVcoVcFUcoVaaaaaaaaaaaactUctUcElcCEcsjcFVcFWcFXcFYcsjcFZcGacGbcskcGccGacGdcjDcGecGfcGgcGhcjDcCWcEAcgwcgwaaaaaaaaaaaacpkcsDcGicGjcGkcGlcGmcGncGocGpcGqcGrcuzcGscuzcuzcGtcGucGtcuycuEcGvcuEcGwcuEcuGcwwcGxcGycwwcuGcuGcGzcGAcFrcwAcwEcGCcwEcwEcFfcFgcFhcGDcGEcAmcGFcGGcGHcAsaaaaaaaaaaaaaaaaadaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa @@ -11361,7 +326424,7 @@ aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabfGaafaafaafaafaaaaaaaaacMXcMXcSbcKucKucKucThcTicTicTicTjcTicTicTicTkcKucKucKucKucThcKucKucKucKucKucKucKucKucTlcTmcTncTocTpcKucTqcTrcTscTtcTucTucTucTucTucTucTucSucSucSucSucSucSucSucTvcTwcTxcTycSucTzcTAcTBcSAcTCcTDcTEectcTGcSAcTHcsFcsEcsFcsFcTIcTJcTJcTJcTJcTJcTJcTKcTLcsFcTMcTNcTOcTPcTQcTQcTRcTScTTcTUcTVcTWcTXcSRcTYcTZcUacUbcUccSRcUdcTWcTVcTUcUecSUcUfcUgcUhcUicUjcMOcUkcUlcUmcUncUocUpcUqcpwaaaaaaaaaabcaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadaaaaaaaaaaafaaaaaaaaaaaacMXcMXcMYcMYcMYcMXcMXcMXcMYcMYcMYcMXcMXcMXcMXcMXcMXcMXcMXcIMcIMcIMecucIMcIMcIMcIMcIMcIMcIMcMXcMXcMXcMXcUrcUscUtcTucUucUvcUwcUxcUycTucUzcUAcUBcUCcUDcUEcUFcUGcUGcUHcUIcSucUJcUKcULcUMcUNcUOcUPcUQcURcSAcUScUTcpkcUUcUVcRmcTJcUWcUXcUYcUZcVYcsFcTLcVbcVccVdcVecVfcVgcVhcGjcTScVicUacVjcVkcVlcSRcVmcVncVocVpcVqcSRcVrcVkcVjcUacVscSUcSUcSUcSUcVtcSUcMOcMOcMOcMOcMOcMOcVucVvcVwaafaafaafabcaaaaaaaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadaadaaaaaaaafaaaaaaaaaaaaaafaaaaaaaaaaaaaaaaafaaaaaaaaaaaaaaaaafaaaaaaaaaaaaaaacMXcMXcVxcVycVzcVAcVBcVCcVDcVEcVFcMXcMXaaaaaaaaaczlcVGcVHcTucTucTucVIcVJcVKcTucVLcVMcVNcVOcVPcVQcSucVRcVScVTcVUcSucVVcVWcVXcSAcXjcVZcWacWbcWccSAcWdcWecTJcTJcTJcTJcTJcWfcWgcWhcWicWjcqMcWkcWlcWmcWmcWlcWncWocWpcWqcWrcWscWtcWucWvcWwcWxcWycWzcWAcWycWycWxcWAcWBcWCcWycWDcWEcQRcWGcWHcWIcWJcWKcWLcWMcWNcWOcWPcWQcWRcWSaaaaaaaaaaagaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadaadaagaadaadaaaaaaaaaaafaaaaaaaaaaaaaaaaafaaaaaaaaaaaaaaaaafaaaaaaaaaaaaaaaaaacMXcMXcMXcMYcMYcMYcMYcMYcMXcMXcMXaaaaaaaaaaaaczlcWTcWUcTucWVcWWcWXcWYcWZcTucXacXbcXccXdcXecXfcSucSucXgcSucSucSucXhcUKcXicSAcSAdbNcXkcXlcXmcSAcXncXocXpcXqcXrcXscTJcXtcXucXvcXwcTJcXxcQocXycXzcXAcXBcXCcXCecvcGjcTScXEcXFcXGcXHcXIcXJcXKcXLcXMcXNcXKcXOcXPcXQcXRcXScXTcXUcWFcXWcXXcXYcXZecwcYbcYccYdcYecYfcYgcYhcYiaaaaaaaaaaadaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadaadaagaadaadaaaaaaaaaaafaaaaaaaaaaaaaaaaafaaaaaaaaaaaaaaaaafaaaaaaaaaaaaaaaaaacMXcMXcMXcMYcMYcMYcMYcMYcMXcMXcMXaaaaaaaaaaaaczlcWTcWUcTucWVcWWcWXcWYcWZcTucXacXbcXccXdcXecXfcSucSucXgcSucSucSucXhcUKcXicSAcSAdbNcXkcXlcXmcSAcXncXocXpdlccXrcXscTJcXtcXucXvcXwcTJcXxcQocXycXzcXAcXBcXCcXCecvcGjcTScXEcXFcXGcXHcXIcXJcXKcXLcXMcXNcXKcXOcXPcXQcXRcXScXTcXUcWFcXWcXXcXYcXZecwcYbcYccYdcYecYfcYgcYhcYiaaaaaaaaaaadaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadaadaaaaaaaafaaaaaaaaaaaaaaaaafaaaaaaaaaaaaaabaafaaaaaaaaaaaaaaaaaaaaaaafaaaaaaaaaaaaaaaaaaaaaaafaaaaaaaaaaaaaaacUrcVGcVHcTucTucTucTucYjcTucYkcYlcYlcYmcYlcYlcYncYocYpcYqcYrcYscYtcYucUKcYvcYwcYxcYycYzcYAcYBcYCcYDcYEcYFcYGcYHcYIcTJcTJcTJcYJcTJcTJcpkcYKcYLcYMcYNcYOcTRczCczCcTRcTScTScYPcYQcYRcYScYRcSPcYTcYUcYVcSPcYWcYXcYYcYZcYYcZacZbcZbcZbcZccZdcZccZecZfcZgcZfcZhcZicZjcZicWSaaaaaaaadaadaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadaagaadaadabcaagaagaadaadaadaadaafaaeaaaaafaagaadaadaadaadaadaaaaaaaafaaaaaaaaaaaaaaaaaaaaaaafaaaaaaaaaaaaaaacUrcUscZkcZlcZmcZncSucZocTwcZpcZqcZqcZrcZqcZqcZscTwcZtcZucZvcZwcYtcZxcZycZzcZAcZBcZCcXocZDcZEcXocZFcZGcZHcZIcZJcZKcZLcZMcZNcZOcZPcTJcZQcZRcZScZTcZTcTRaaaaaaaafaaaaaaaaacYPcZUcZVcZWcZXcZYcZYcZZcZYcZYdaadabdacdaddaedafdagdahcZbdaidajdakcZedaldamdancZhcWScYicWScVwaaaaaaaadaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafaafaaaaafaaaaaaaaaaaaaaaaaaaaaaafaaaaaaaaaaaacUrcUrdaodapdaqdaqdaqdardasdatdatdaudatdavdatdawdaxdaydazdaAdazdaBdaCdaDdaEdaFdaGdaHdaIdaJdaKdaJdaJdaLdaMdaNdaOdaPdaQdaRdaQdaQdaSdaTcTJdaUcZRdaVdaWdaXdaYaaaaaaaafaaaaaaaaacYPdaZdbadbbdbcdbddbedbfdbgdbhdbidbjdbkdblcYYdbmdbndbocZbdbpdbqdbrcZedbsdbtdbucZhaaaaaaaaaaafaafaafaadaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa @@ -11383,9 +326446,9 @@ aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadaaaaaaaaacUrdhkctTdiMdjndjodjpdjqdiPdjrdiRdjsdiSdjtdjsdjsdjudjsdjsdiQdjsdjvdbKdfkcUKdjwdhudhxdhYdibdhydhydicdizdjxdhBdiDdiDeczdiDdiDdhBdixdixdixdhhdjzdjAdjAdjAaafaafaafaadaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacUrdjBdjCdiMdjDdjEdjFdjsdjGdjHdjIdjJdjIdjKdjLdjMdjNdjLdjOdjLdjLdjPdhTdhUdhVdjQdhudiZdjUdjSdjTdjTdnhdjVdjWdjXdjYdjYdjZdkadkbdkcdkddkbdkbdkedkfdkgdkhdkiaaaaaaaaaaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacUrdkjdkkdkldkmdknecAdkpdkqdkrdksdktdkudkvdjsdjsdjsdkwdiMdkxdiMdiMdiMdkycZydkzdixdkAdkBdkCdkDdkEdkFdkGdkHdkIdkJdkHdkKdkLdkMdkNdkOdkNdkNdkPdkQdkRdkSdkiaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacUrdkTdkUdiMdkVdkWdkXdjsdkYdjsdjsdkZdjsdkvdladlbdlcdlddkxdledlfdlgdiMdlhcUKdlidixdhudhudixdljdlkdixdlldhudixdixdlmdixdlndixdlodlpdlqdhxdlrdlsdixdjAdjAaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacUrcAYdltdiMdludjsdlvdjsdkYdlwdlxdlydlzdlAdlBdlCdlDdlDdlEdlFdlGdlHdiMdfkdlIdlJdlKdlLdlMdlNdlOdlPdlQdlRddzdlSdixdlTdlUdlVdixdlWdlWdlXdlYdlZdmadmbdmcdmdaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacUrcUrcUrcUrcUrcUrcUrdmediMdiMdmfdmgdmhdkYdmidlxdmjdlzdmkdmldmjdmmdmndkxdmodmpdmqdiMdmrdmsdmtdmudmvdmwdmxdmydmzdmAdmBdmCdmDdixdixdixdixdixdixdixdixdixdmEdmFdmFdmFdmGdmGaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacUrdkTdkUdiMdkVdkWdkXdjsdkYdjsdjsdkZdjsdkvdladlbdlzdlddkxdledlfdlgdiMdlhcUKdlidixdhudhudixdljdlkdixdlldhudixdixdlmdixdlndixdlodlpdlqdhxdlrdlsdixdjAdjAaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacUrcAYdltdiMdludjsdlvdjsdkYdlwdlxdlydmpdlAdlBdlCdlDdlDdlEdlFdlGdlHdiMdfkdlIdlJdlKdlLdlMdlNdlOdlPdlQdlRddzdlSdixdlTdlUdlVdixdlWdlWdlXdlYdlZdmadmbdmcdmdaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacUrcUrcUrcUrcUrcUrcUrdmediMdiMdmfdmgdmhdkYdmidlxdmjdmpdmkdmldmjdmmdmndkxdmodYrdmqdiMdmrdmsdmtdmudmvdmwdmxdmydmzdmAdmBdmCdmDdixdixdixdixdixdixdixdixdixdmEdmFdmFdmFdmGdmGaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadmHdmHdmHdmIdmHdmHdmJdmKdmLdmMdiMdmNdmOdmOdmPdmQdiMdiMdiMdiMdiMdiMdiMdiMdiMdiMdiMdiMdmRdmSdcLdmTdmUdmUdmUdmUdmUdmUdmUdmUdmUdmUdmUdmVdmWdmVdmXdmYdmZdnadmVdnbdncdmFdnddnednfaaaaaaaaaaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadmHdngdrgdrgdrgdnidnidmKdnjdnkdnkdnldnkdnmdnndnodnpdnqdnrdnsdntdnudnvdnwdnxdnydnzdnAdnBdfkcUKdVAdmUdnDdnEdnFdnGdnHdnIdmUdnJdnKdmUdmXdmXdmXdmXdmXdmXdmXdmXdnLdnMdnNdnMdnOdnfaaaaaaaaaaaeaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadmIdnPdnQdnRdnRdnSdmIdnTdnUdnVdnWdnXdnYdnZdoadobdocdoddoedofdogdohdoidojdokdoldomdomdomdondoodopdmUdmUdmUdoqdordosdotdoudovdowdmUdoxdoydozdoAdoBdoCdoDdmXdnbdnMdmFdoEdoFdnfaaaaaaaaaaagaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa @@ -11576,8 +326639,8 @@ aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadaadaafaafaaaaaadAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdBGdBHdBudAVdBGdBHdBudAVdBGdBHdBudAVdBGdBHdBudAVdBGdBHdBudAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdBPdBcdBcdBQdBRdBSdBTdBUdBVdBWdBXdBYdBZdCadBcdBcdCbdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdBDdBOdBFdAVdBDdBOdBFdAVdBDdBOdBFdAVdBDdBOdBFdAVdBDdBOdBFdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVaaaaaaaaaaaaaadaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadBrdBrdBrdBraaaaaadBrdBrdBrdBrdBrdBrdBrdBrdBraaaaaadBrdBrdBrdBraaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafaagaadaadaaaaaaaaaaaaaaadAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdBGdBHdBudAVdBGdBHdBudAVdBGdBHdBudAVdBGdBHdBudAVdBGdBHdBudAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdCcdCcdCcdCcdCcdCcdCcdAVdAVdAVdAVdAVdAVdAVdBcdBcdBcdBIdBJdBKdBLdCddBLdCedBmdBNdBcdBcdBcdAVdAVdAVdAVdAVdAVdAVdCfdCfdCfdCfdCfdCfdCfdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdBDdBOdBFdAVdBDdBOdBFdAVdBDdBOdBFdAVdBDdBOdBFdAVdBDdBOdBFdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVaafaafaafaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadBrdBrdBrdBrdBrdBrdBrdBrdBrdBrdBrdBrdBrdBrdBrdBrdBrdBrdBrdBrdBraaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadaadaagaafaaaaafaaaaaaaaaaaaaaaaaaaaadAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdBGdBHdBudAVdBGdBHdBudAVdBGdBHdBudAVdBGdBHdBudAVdBGdBHdBudAVdAVdAVdAVdAVdAVdCgdChdChdChdChdCidCjdCkdCldCmdCcdAVdAVdAVdAVdAVdCndCodCodCpdCpdCqdCrdCsdBLdBLdBLdBAdCtdCudBcdBcdAVdAVdAVdAVdAVdAVdAVdAVdCfdCvdCwdCxdCydCzdCAdCAdCAdCAdCBdAVdAVdAVdAVdAVdAVdBDdBOdBFdAVdBDdBOdBFdAVdBDdBOdBFdAVdBDdBOdBFdAVdBDdBOdBFdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVaaaaaaaaaabcaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadBrdBrdBrdBrdBrdBrdBrdBrdBrdBrdBrdBrdBrdBrdBrdBrdBrdBrdBrdBrdBraaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafaaaaaaaafaaaaaaaaaaaaaaaaaaaaadAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdCCdAVdAVdAVdCCdAVdAVdAVdCCdAVdAVdAVdCCdAVdAVdAVdCCdAVdAVdCDdAVdCEdCEdCEdCgdCFdCGdCHdCIdCJdCldCldCldCKdCcdAVdAVdAVdAVdAVdCLdAVdAVdBcdBcdBcdCMdCNdCOdIqdCOdCQdCRdBcdBcdBcdAVdAVdAVdAVdAVdAVdAVdAVdCfdCSdCTdCUdCUdCVdCWdCXdCYdCZdCBdDadDadDadAVdAVdAVdAVdDbdAVdAVdAVdDbdAVdAVdAVdDbdAVdAVdAVdDbdAVdAVdAVdDbdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadBrdBrdBrdBrdBrdBrdBrdBrdBrdBrdBrdBrdBrdBrdBrdBrdBrdBrdBrdBrdBraaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadaaaaaaaafaaadAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdDcdDddDddDddDedDddDddDddDedDddDddDddDedDddDddDddDedDddDddDddDedDddDddDfdDgdDhdDidDjdDkdDldDmdDndDodDpdDqdDrdDsdDtdCcaaaaaaaaaaaaaaadDuaaaaaadBcdBcdBcdBjdDvdDwdDxdDydDzdBedBcdBcdBcaaaaaadDAaaaaaaaaaaaaaaadCfdDBdDCdDDdDDdDEdDFdDGdDHdDIdDJdDKdDLdDMdDNdDOdDPdDQdDQdDQdDQdDQdDQdDQdDQdDQdDQdDQdDQdDQdDQdDQdDQdDQdDQdDQdDQdDRdDSdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadBrdBrdBrdBrdBrdBrdBrdBrdBrdBrdBrdBrdBrdBrdBrdBrdBrdBrdBrdBrdBraaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafaaaaaaaafaaaaaaaaaaaaaaaaaaaaadAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdCCdAVdAVdAVdCCdAVdAVdAVdCCdAVdAVdAVdCCdAVdAVdAVdCCdAVdAVdCDdAVdCEdCEdCEdCgdCFdCGdCHdCIdCJdCldCldCldCKdCcdAVdAVdAVdAVdAVdCLdAVdAVdBcdBcdBcdCMdCNdCOdDvdCOdCQdCRdBcdBcdBcdAVdAVdAVdAVdAVdAVdAVdAVdCfdCSdCTdCUdCUdCVdCWdCXdCYdCZdCBdDadDadDadAVdAVdAVdAVdDbdAVdAVdAVdDbdAVdAVdAVdDbdAVdAVdAVdDbdAVdAVdAVdDbdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadBrdBrdBrdBrdBrdBrdBrdBrdBrdBrdBrdBrdBrdBrdBrdBrdBrdBrdBrdBrdBraaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadaaaaaaaafaaadAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdDcdDddDddDddDedDddDddDddDedDddDddDddDedDddDddDddDedDddDddDddDedDddDddDfdDgdDhdDidDjdDkdDldDmdDndDodDpdDqdDrdDsdDtdCcaaaaaaaaaaaaaaadDuaaaaaadBcdBcdBcdBjdIqdDwdDxdDydDzdBedBcdBcdBcaaaaaadDAaaaaaaaaaaaaaaadCfdDBdDCdDDdDDdDEdDFdDGdDHdDIdDJdDKdDLdDMdDNdDOdDPdDQdDQdDQdDQdDQdDQdDQdDQdDQdDQdDQdDQdDQdDQdDQdDQdDQdDQdDQdDQdDRdDSdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadBrdBrdBrdBrdBrdBrdBrdBrdBrdBrdBrdBrdBrdBrdBrdBrdBrdBrdBrdBrdBraaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafaaaaaaaafdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdCCdAVdAVdAVdCCdAVdAVdAVdCCdAVdAVdAVdCCdAVdAVdAVdCCdAVdAVdAVdAVdCEdDTdDUdDVdDWdDXdDYdCIdDZdCldEadEbdCcdCcaaaaaaaaaaaaaaadDuaaaaaaaaaaaadBcdBcdBcdBcdEcdBcdBcdBcdBcaaaaaaaaaaaadDAaaaaaaaaaaaaaaadCfdCfdEddEedCUdEfdCWdEgdEhdEidEjdEkdEldDadAVdAVdAVdAVdEmdAVdAVdAVdEmdAVdAVdAVdEmdAVdAVdAVdEmdAVdAVdAVdEmdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadBrdBrdBrdBrdBrdBrdBrdBrdBrdBrdBrdBrdBrdBrdBrdBrdBrdBrdBrdBrdBraaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadEnaaaaaaaaadEnaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadaafaafaafdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdBGdEodBudAVdBGdEodBudAVdBGdEodBudAVdBGdEodBudAVdBGdEodBudAVdAVdAVdAVdAVdAVdCgdChdChdChdCcdEpdEqdCcdCcdCcaaaaaaaaaaaaaaaaaadCLdAVdAVdAVdErdErdErdErdBcdEsdEtdEudErdErdErdAVdAVdAVdAVaaaaaaaaaaaaaaaaaadCfdCfdCfdEvdEwdCfdCAdCAdCAdCBdAVdAVdAVdAVdAVdAVdBDdExdBFdAVdBDdExdBFdAVdBDdExdBFdAVdBDdExdBFdAVdBDdExdBFdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadBrdBrdBrdBrdBrdBrdBrdBrdBrdBrdBrdBrdBrdBrdBrdBrdBrdBrdBrdBrdBraaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadEnaaaaaaaaadEnaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadaadaadaafaaaaaadAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdBGdEodBudAVdBGdEodBudAVdBGdEodBudAVdBGdEodBudAVdBGdEodBudAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdCcdEydCldCcaaaaaaaaaaabaaaaaadAVdAVdCLdAVdAVdAVdErdEzdEAdEBdECdEDdEEdEFdEAdEGdErdAVdAVdAVdAVdAVdAVaaaaaaaabaaaaaaaaadCfdCUdEHdCfdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdBDdExdBFdAVdBDdExdBFdAVdBDdExdBFdAVdBDdExdBFdAVdBDdExdBFdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadBrdBrdBrdBrdBrdBrdBrdBrdBrdBrdBrdBrdBrdBrdBrdBrdBrdBrdBrdBrdBrdBrdBraaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa @@ -11724,3 +326787,4 @@ aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa dUOaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa "} +>>>>>>> 6a2cd30... Replaces AI-controlled Maint Drones with AI-controlled Borg Shells (#6025) diff --git a/maps/southern_cross/southern_cross-3.dmm b/maps/southern_cross/southern_cross-3.dmm index eabbfeedf6..20d85c092a 100644 --- a/maps/southern_cross/southern_cross-3.dmm +++ b/maps/southern_cross/southern_cross-3.dmm @@ -1400,7 +1400,7 @@ "AV" = (/obj/machinery/atmospherics/unary/vent_pump/on{dir = 8},/turf/simulated/floor/tiled/hydro,/area/surface/outpost/research/xenoresearch/xenoflora) "AW" = (/turf/unsimulated/wall/planetary/sif,/area/surface/outside/river/indalsalven) "AX" = (/turf/simulated/floor/water,/area/surface/outside/river/indalsalven) -"AY" = (/mob/living/simple_animal/slime,/turf/simulated/floor/reinforced,/area/surface/outpost/research/xenoresearch/xenobiology) +"AY" = (/mob/living/simple_mob/slime/xenobio,/turf/simulated/floor/reinforced,/area/surface/outpost/research/xenoresearch/xenobiology) "AZ" = (/obj/effect/floor_decal/industrial/hatch/yellow,/obj/machinery/door/blast/regular{density = 0; icon_state = "pdoor0"; id = "xenobio4"; name = "Containment Blast Doors"; opacity = 0},/obj/machinery/door/window/brigdoor/westleft{name = "Containment Pen"; req_access = list(47)},/turf/simulated/floor/reinforced,/area/surface/outpost/research/xenoresearch/xenobiology) "Ba" = (/obj/machinery/atmospherics/unary/vent_pump/on{dir = 4},/turf/simulated/floor/tiled/white,/area/surface/outpost/research/xenoresearch/xenobiology) "Bb" = (/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 8},/obj/structure/table/standard,/obj/item/weapon/melee/baton/slime/loaded,/obj/item/weapon/gun/energy/taser/xeno,/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/turf/simulated/floor/tiled,/area/surface/outpost/research/xenoresearch/xenobiology) diff --git a/maps/southern_cross/southern_cross-4.dmm b/maps/southern_cross/southern_cross-4.dmm index d445308393..c86f166314 100644 --- a/maps/southern_cross/southern_cross-4.dmm +++ b/maps/southern_cross/southern_cross-4.dmm @@ -413,7 +413,7 @@ "hW" = (/obj/item/weapon/reagent_containers/glass/beaker/large,/obj/item/weapon/reagent_containers/dropper{pixel_y = -4},/obj/structure/table/glass,/obj/effect/floor_decal/corner/beige{dir = 10},/obj/machinery/light,/turf/simulated/floor/tiled/white,/area/surface/outpost/research/xenoarcheology/analysis) "hX" = (/obj/structure/table/glass,/obj/item/weapon/storage/box/beakers{pixel_x = 2; pixel_y = 2},/obj/machinery/alarm{dir = 1; pixel_y = -22},/obj/effect/floor_decal/corner/beige/full{dir = 4},/turf/simulated/floor/tiled/white,/area/surface/outpost/research/xenoarcheology/analysis) "hY" = (/obj/machinery/radiocarbon_spectrometer,/obj/structure/window/reinforced{dir = 8; health = 1e+006},/turf/simulated/floor/tiled/dark,/area/surface/outpost/research/xenoarcheology/analysis) -"hZ" = (/obj/structure/table/glass,/obj/item/stack/nanopaste,/obj/item/stack/nanopaste,/obj/item/stack/nanopaste,/obj/item/weapon/reagent_containers/glass/bucket,/turf/simulated/floor/tiled/dark,/area/surface/outpost/research/xenoarcheology/analysis) +"hZ" = (/obj/item/stack/nanopaste,/obj/item/stack/nanopaste,/obj/item/stack/nanopaste,/obj/item/weapon/reagent_containers/glass/bucket,/obj/structure/closet/crate/secure/science{req_access = list(65)},/turf/simulated/floor/tiled/dark,/area/surface/outpost/research/xenoarcheology/analysis) "ia" = (/obj/machinery/radiocarbon_spectrometer,/turf/simulated/floor/tiled/dark,/area/surface/outpost/research/xenoarcheology/analysis) "ib" = (/obj/machinery/radiocarbon_spectrometer,/obj/machinery/firealarm{dir = 4; pixel_x = 24},/turf/simulated/floor/tiled/dark,/area/surface/outpost/research/xenoarcheology/analysis) "ic" = (/obj/structure/table/rack,/obj/item/weapon/storage/toolbox/emergency,/obj/item/clothing/accessory/armband/science,/obj/item/clothing/glasses/science,/obj/item/device/suit_cooling_unit,/obj/item/weapon/extinguisher,/obj/item/device/flashlight,/turf/simulated/floor/plating,/area/surface/outpost/research/xenoarcheology/emergencystorage) diff --git a/maps/southern_cross/southern_cross-6.dmm b/maps/southern_cross/southern_cross-6.dmm index f681cf1436..da134489ba 100644 --- a/maps/southern_cross/southern_cross-6.dmm +++ b/maps/southern_cross/southern_cross-6.dmm @@ -544,7 +544,7 @@ "kx" = (/obj/structure/table/rack,/obj/item/clothing/under/color/red,/obj/item/clothing/shoes/brown,/obj/item/weapon/melee/energy/axe,/turf/unsimulated/floor{icon_state = "vault"; dir = 5},/area/tdome) "ky" = (/obj/machinery/door/airlock/centcom{name = "Courthouse"; opacity = 1},/turf/unsimulated/floor{icon_state = "lino"},/area/centcom/command) "kz" = (/obj/machinery/door/airlock/centcom{name = "Administrative Office"; opacity = 1; req_access = list(108)},/turf/unsimulated/floor{dir = 2; icon_state = "dark"},/area/centcom/creed) -"kA" = (/mob/living/simple_animal/corgi/puppy{name = "Bockscar"},/turf/unsimulated/floor{dir = 2; icon_state = "dark"},/area/centcom/creed) +"kA" = (/mob/living/simple_mob/animal/passive/dog/corgi/puppy/Bockscar,/turf/unsimulated/floor{dir = 2; icon_state = "dark"},/area/centcom/creed) "kB" = (/obj/machinery/telecomms/relay/preset/centcom,/turf/unsimulated/floor{dir = 2; icon_state = "dark"},/area/centcom/creed) "kC" = (/obj/machinery/conveyor{dir = 4; id = "QMLoad"},/turf/simulated/shuttle/floor,/area/supply/dock) "kD" = (/obj/machinery/conveyor{dir = 4; id = "QMLoad"},/obj/machinery/door/airlock/external{frequency = 1380; icon_state = "door_locked"; id_tag = "supply_shuttle_hatch"; locked = 1; name = "Shuttle Hatch"; req_access = list(13)},/turf/simulated/shuttle/plating,/area/supply/dock) @@ -1243,7 +1243,7 @@ "xU" = (/obj/item/device/camera{name = "Autopsy Camera"; pixel_x = -2; pixel_y = 7},/obj/item/weapon/paper_bin{pixel_y = -6},/obj/item/weapon/pen/red{pixel_x = -1; pixel_y = -9},/obj/item/weapon/pen/blue{pixel_x = 3; pixel_y = -5},/obj/structure/table/standard,/obj/effect/floor_decal/corner/blue{dir = 6},/turf/unsimulated/floor{icon_state = "white"},/area/centcom/medical) "xV" = (/obj/machinery/door/blast/shutters{density = 0; dir = 8; icon_state = "shutter0"; id = "tradebridgeshutters"; name = "Blast Shutters"; opacity = 0},/obj/structure/grille,/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced/full,/turf/simulated/shuttle/plating,/area/shuttle/merchant/home) "xW" = (/obj/structure/frame/computer,/turf/simulated/shuttle/floor/black,/area/shuttle/merchant/home) -"xX" = (/obj/machinery/light{dir = 4},/obj/structure/sign/kiddieplaque{desc = "A plaque commemorating the construction of the cargo ship Beruang."; name = "Beruang"; pixel_x = 32},/mob/living/simple_animal/corgi/tamaskan/spice,/turf/simulated/shuttle/floor/darkred,/area/shuttle/merchant/home) +"xX" = (/obj/machinery/light{dir = 4},/obj/structure/sign/kiddieplaque{desc = "A plaque commemorating the construction of the cargo ship Beruang."; name = "Beruang"; pixel_x = 32},/mob/living/simple_mob/animal/passive/dog/tamaskan/Spice,/turf/simulated/shuttle/floor/darkred,/area/shuttle/merchant/home) "xY" = (/obj/machinery/door/airlock/silver{name = "Toilet"},/turf/simulated/shuttle/floor/white,/area/shuttle/merchant/home) "xZ" = (/obj/machinery/door/airlock/silver{name = "Restroom"},/turf/simulated/shuttle/floor/white,/area/shuttle/merchant/home) "ya" = (/obj/structure/undies_wardrobe,/turf/simulated/shuttle/floor/black,/area/shuttle/merchant/home) @@ -1502,7 +1502,7 @@ "CT" = (/obj/machinery/media/jukebox,/turf/unsimulated/floor{dir = 8; icon_state = "wood"},/area/wizard_station) "CU" = (/obj/machinery/vending/hydronutrients,/turf/unsimulated/floor{icon_state = "grass0"; name = "grass"},/area/wizard_station) "CV" = (/obj/structure/closet{icon_closed = "cabinet_closed"; icon_opened = "cabinet_open"; icon_state = "cabinet_closed"},/obj/item/clothing/under/psysuit,/obj/item/clothing/suit/wizrobe/psypurple,/obj/item/clothing/head/wizard/amp,/turf/unsimulated/floor{icon_state = "vault"; dir = 5},/area/wizard_station) -"CW" = (/mob/living/simple_animal/mouse/gray{desc = "He looks kingly."; name = "Arthur"},/turf/unsimulated/floor{icon_state = "dark"},/area/wizard_station) +"CW" = (/mob/living/simple_mob/animal/passive/mouse/gray{desc = "He looks kingly."; name = "Arthur"},/turf/unsimulated/floor{icon_state = "dark"},/area/wizard_station) "CX" = (/obj/structure/flora/pottedplant{icon_state = "plant-24"},/turf/unsimulated/floor{icon_state = "dark"},/area/wizard_station) "CY" = (/obj/effect/floor_decal/industrial/warning{icon_state = "warning"; dir = 1},/turf/unsimulated/floor{icon_state = "vault"; dir = 5},/area/centcom/terminal) "CZ" = (/obj/structure/bed/chair/shuttle{dir = 8},/obj/structure/window/reinforced{dir = 4; health = 1e+006},/turf/simulated/shuttle/floor/white,/area/shuttle/escape/centcom) @@ -1696,7 +1696,7 @@ "GF" = (/obj/structure/flight_left{dir = 1},/turf/simulated/shuttle/floor/voidcraft/light,/area/ninja_dojo/start) "GG" = (/obj/structure/bed/chair,/obj/effect/landmark{name = "endgame_exit"},/obj/item/toy/plushie/mouse{desc = "A plushie of a small fuzzy rodent."; name = "Woodrat"},/turf/unsimulated/beach/sand,/area/beach) "GH" = (/obj/structure/bed/chair,/obj/effect/landmark{name = "endgame_exit"},/turf/unsimulated/beach/sand,/area/beach) -"GI" = (/mob/living/simple_animal/crab/Coffee,/turf/unsimulated/beach/sand,/area/beach) +"GI" = (/obj/machinery/vending/coffee,/turf/unsimulated/beach/sand,/area/beach) "GJ" = (/obj/machinery/door/airlock{icon = 'icons/obj/doors/Dooruranium.dmi'},/turf/unsimulated/floor{dir = 8; icon_state = "wood"},/area/ninja_dojo/dojo) "GK" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 8},/obj/machinery/door/blast/shutters{density = 0; dir = 2; icon_state = "shutter0"; id = "ninjawindow"; name = "Blast Shutters"; opacity = 0},/obj/structure/window/reinforced/full,/turf/simulated/shuttle/plating,/area/ninja_dojo/start) "GL" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced,/obj/structure/window/reinforced/full,/obj/machinery/door/blast/shutters{density = 0; dir = 2; icon_state = "shutter0"; id = "ninjawindow"; name = "Blast Shutters"; opacity = 0},/turf/simulated/shuttle/plating,/area/ninja_dojo/start) @@ -2123,7 +2123,7 @@ "OQ" = (/obj/machinery/computer/shuttle_control/web/syndicate{dir = 8},/turf/simulated/shuttle/floor/voidcraft,/area/syndicate_station/start) "OR" = (/obj/structure/bed/chair/comfy/red{icon_state = "comfychair_preview"; dir = 8},/turf/simulated/shuttle/floor/voidcraft/light,/area/syndicate_station/start) "OS" = (/obj/machinery/door/airlock/voidcraft/vertical{req_access = list(150)},/turf/simulated/shuttle/floor/voidcraft/light,/area/syndicate_station/start) -"OT" = (/mob/living/simple_animal/cat/kitten{name = "Enola"},/turf/simulated/shuttle/floor/voidcraft/light,/area/syndicate_station/start) +"OT" = (/mob/living/simple_mob/animal/passive/cat/kitten{name = "Enola"},/turf/simulated/shuttle/floor/voidcraft/light,/area/syndicate_station/start) "OU" = (/obj/machinery/door/airlock/voidcraft/vertical{req_access = list(150)},/turf/simulated/shuttle/floor/voidcraft/dark,/area/syndicate_station/start) "OV" = (/obj/machinery/telecomms/allinone{intercept = 1},/turf/simulated/shuttle/floor/voidcraft/dark,/area/syndicate_station/start) "OW" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 8},/obj/machinery/door/blast/regular{id = "skipjackshutters"; name = "Skipjack Blast Shielding"},/obj/structure/window/reinforced/full,/turf/simulated/shuttle/plating,/area/skipjack_station/start) @@ -2204,7 +2204,7 @@ "Qt" = (/obj/structure/window/reinforced{dir = 1},/obj/machinery/door/window{dir = 8; name = "Surgery"; req_access = list(150)},/turf/simulated/shuttle/floor/voidcraft/light,/area/syndicate_station/start) "Qu" = (/obj/structure/window/reinforced{dir = 1},/turf/simulated/shuttle/floor/voidcraft/light,/area/syndicate_station/start) "Qv" = (/obj/structure/window/reinforced{dir = 1},/obj/structure/table/steel,/obj/item/weapon/reagent_containers/blood/OMinus,/obj/item/weapon/reagent_containers/blood/OMinus,/turf/simulated/shuttle/floor/voidcraft/light,/area/syndicate_station/start) -"Qw" = (/mob/living/simple_animal/tindalos,/turf/simulated/shuttle/floor/black,/area/skipjack_station/start) +"Qw" = (/mob/living/simple_mob/animal/passive/tindalos,/turf/simulated/shuttle/floor/black,/area/skipjack_station/start) "Qx" = (/obj/machinery/door/airlock/hatch{req_access = list(150)},/turf/simulated/shuttle/floor/red,/area/skipjack_station/start) "Qy" = (/obj/machinery/optable,/turf/simulated/shuttle/floor/white,/area/skipjack_station/start) "Qz" = (/obj/structure/table/standard,/obj/item/weapon/surgical/cautery,/obj/item/weapon/surgical/retractor,/obj/item/weapon/reagent_containers/glass/bottle/stoxin,/obj/item/weapon/reagent_containers/glass/bottle/stoxin,/obj/item/weapon/reagent_containers/syringe,/turf/simulated/shuttle/floor/white,/area/skipjack_station/start) @@ -2334,8 +2334,8 @@ aaaaaaaaaaaaaaaajgjgjgjojojgjgjgjgjgjgjgjgjgjgjojojgjgjgaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaajgjojojojojPjojojQjQjQjQjQjojgjojojojojgaaaaaaaaaaaaaaaaaaaaaaaaaapPlYjqldldldldldjqjqlZjSjSmapPpPpPpPmbpPpPpPkjkjlekIkIkIjeaaaaaaaaaaaaiWjsjEjFjFjGjsiTiViViVjkjHjIjJjujKjjaaaaiXjajdjmjmjmjmjmjLjaiXaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaiYjMjMjMjMjMiYiYiYjNiYiYiYjOiYiYiYjMjMjMjMjMiYaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaajgjojojgjgjgjgkikikikikikijgjgjgjgjojojgaaaaaaaaaaaaaaaaaaaaaaaaaapPmtjqjqjqjqjqjqjqmuqsmvjSjSjSmwmMmLjSmNmUqskjkjlekIkIkIjeaaaaaaaaaaaaiWjsjUjVjWjXjsiTiViViVjkjYjZjZjujujjaaaaiXjajdjmjmjmjmkajdjaiXaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaiYkbkckckckciYkdkekfkekekekgkekdiYkckckckckhiYaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaajgjojojgksktkukukukvkvkukukukwkxjgjojojgaaaaaaaaaaaaaaaaaaaaaaaaaapPmVmXmWninhnjmtjqnCqsnDjSjSjSjSjSjSjSjSnEqskjkjjekIkIkIjeaaaaaaaaaaaaiWjsjUjVjVjXjsiWiViViVjjjujujujujujjaaaaiXjajdjmjmjmjmjmjLjaiXaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaiYkkklklklklkmkeknkokpknkqkoknkekmklklklklkriYaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaajgjojojgksktkukvkvkHkHkvkvkukwkxjgjojojgaaaaaaaaaaaaaaaaaaaaaaaaaapPpPpPpPpPpPpPqslZqsqsnDjSjSnRnQocobodjSoeqskjkjjekIkIkIjejeaaaaaaaaaaiWjsjUjVjVjXjskyiViViVkzjukAjujukBjjaaaaiXjajdjmjmkCkCkCkDjaiXaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaiYkEklklklkliYkeknkokpknkqkoknkeiYkFklklklkGiYaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaajgjojojgksktkukvkvkHkHkvkvkukwkxjgjojojgaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaapPokpRolpPpPjSjSjSjSjSjSjSjSomqskjkjlekIkIkIonjeaaaaaaaaaaiWjsjUjVjVjXjsiWiViViVjjjujujujujujjaaaaiXjajdjljmjmjmjnjdjaiXaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaalhiYiYiYiYiYiYkeknkokpknkqkoknkeiYiYiYiYiYiYlhaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaajgjojojgksktkukvkvkHkHkvkvkukwkxjgjojojgaaaaaaaaaaaaaaaaaaaaaaaaaapPpPpPpPpPpPpPqslZqsqsnDjSjSnRnQocobodjSoeqskjkjjekIkIkIjejeaaaaaaaaaaiWjsjUjVjVjXjskyiViViVkzjujujujukBjjaaaaiXjajdjmjmkCkCkCkDjaiXaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaiYkEklklklkliYkeknkokpknkqkoknkeiYkFklklklkGiYaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaajgjojojgksktkukvkvkHkHkvkvkukwkxjgjojojgaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaapPokpRolpPpPjSjSjSjSjSjSjSjSomqskjkjlekIkIkIonjeaaaaaaaaaaiWjsjUjVjVjXjsiWiViViVjjjukAjujujujjaaaaiXjajdjljmjmjmjnjdjaiXaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaalhiYiYiYiYiYiYkeknkokpknkqkoknkeiYiYiYiYiYiYlhaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaajgjojojgksktkukukukvkvkukukukwkxjgjojojgaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaapPozpRoloApPqsoBpPjSoMoLpsprpPpPkjkjlekIkIkIpGjeaaaaaaaaaaiWjsjUjVkJjXjsiTiViViVjkjZjZjZjujujjaaaaiXjajdkKjmjmjmkKjdjaiXaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaakLkMkMkMkMkMiYkeknkokpknkqkoknkeiYkNkNkNkNkNkLaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaajgjojojgksktkukukukvkvkukukukwkxjgjojojgaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaapPpRpRolpIpHpJjqpKjSjSjSjSpLpMqskjkjlekIkIkIonjeaaaaaaaaaaiWjskOkPkPkQjsiTiViViVjkjZkRjujujujjaaaaiXjajdjdkSkSkSjdjdjaiXaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaakLkMkMkMkMkMkTkUknknknknknknknkVkWkNkNkNkNkNkLaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaajgjglajgjgjgjgjglblblblblblbjgjgjgjgjglcjgjgaaaaaaaaaaaaaaaaaaaaaaaaaapPpPpPpPpPpPpNpRolpQpOqqqpqDqrqFqEqOqNqPqskjkjlekIkIkIjejeaaaaaaaaaaiWjsjsjsjsjsjsiWiViViVjjjujujujujujjaaaaiXjajakXkYkYkYkZjajaiXaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaakLkMkMkMkMkMiYkekekekeknkekekekeiYkNkNkNkNkNkLaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa @@ -2499,4 +2499,3 @@ aaaaRfababababababababababababababaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa "} - diff --git a/maps/southern_cross/southern_cross_areas.dm b/maps/southern_cross/southern_cross_areas.dm index d78089ff34..06ab539b0a 100644 --- a/maps/southern_cross/southern_cross_areas.dm +++ b/maps/southern_cross/southern_cross_areas.dm @@ -108,13 +108,13 @@ icon_state = "bluenew" /area/surface/outside/river/faxalven - name = "Faxälven River" + name = "Faxälven River" /area/surface/outside/river/indalsalven - name = "Indalsälven River" + name = "Indalsälven River" /area/surface/outside/river/svartan - name = "SvartÃ¥n River" + name = "Svartån River" /area/surface/outside/lake/romsele name = "Romsele Lake" diff --git a/maps/southern_cross/southern_cross_defines.dm b/maps/southern_cross/southern_cross_defines.dm index 3d46a3d87b..f55067f0a3 100644 --- a/maps/southern_cross/southern_cross_defines.dm +++ b/maps/southern_cross/southern_cross_defines.dm @@ -213,47 +213,6 @@ teleport_y = world.maxy - 1 teleport_z = Z_LEVEL_SURFACE_MINE - -/obj/effect/step_trigger/teleporter/bridge/east_to_west/New() - ..() - teleport_x = src.x - 4 - teleport_y = src.y - teleport_z = src.z - -/obj/effect/step_trigger/teleporter/bridge/east_to_west/small/New() - ..() - teleport_x = src.x - 3 - teleport_y = src.y - teleport_z = src.z - - -/obj/effect/step_trigger/teleporter/bridge/west_to_east/New() - ..() - teleport_x = src.x + 4 - teleport_y = src.y - teleport_z = src.z - -/obj/effect/step_trigger/teleporter/bridge/west_to_east/small/New() - ..() - teleport_x = src.x + 3 - teleport_y = src.y - teleport_z = src.z - - -/obj/effect/step_trigger/teleporter/bridge/north_to_south/New() - ..() - teleport_x = src.x - teleport_y = src.y - 4 - teleport_z = src.z - - -/obj/effect/step_trigger/teleporter/bridge/south_to_north/New() - ..() - teleport_x = src.x - teleport_y = src.y + 4 - teleport_z = src.z - - /datum/planet/sif expected_z_levels = list( Z_LEVEL_SURFACE, @@ -262,6 +221,49 @@ Z_LEVEL_TRANSIT ) +/obj/effect/step_trigger/teleporter/bridge/east_to_west/Initialize() + teleport_x = src.x - 4 + teleport_y = src.y + teleport_z = src.z + return ..() + +/obj/effect/step_trigger/teleporter/bridge/east_to_west/small/Initialize() + teleport_x = src.x - 3 + teleport_y = src.y + teleport_z = src.z + return ..() + +/obj/effect/step_trigger/teleporter/bridge/west_to_east/Initialize() + teleport_x = src.x + 4 + teleport_y = src.y + teleport_z = src.z + return ..() + +/obj/effect/step_trigger/teleporter/bridge/west_to_east/small/Initialize() + teleport_x = src.x + 3 + teleport_y = src.y + teleport_z = src.z + return ..() + +/obj/effect/step_trigger/teleporter/bridge/north_to_south/Initialize() + teleport_x = src.x + teleport_y = src.y - 4 + teleport_z = src.z + return ..() + +/obj/effect/step_trigger/teleporter/bridge/south_to_north/Initialize() + teleport_x = src.x + teleport_y = src.y + 4 + teleport_z = src.z + return ..() + +/datum/planet/sif + expected_z_levels = list( + Z_LEVEL_SURFACE, + Z_LEVEL_SURFACE_MINE, + Z_LEVEL_SURFACE_WILD + ) + //Suit Storage Units /obj/machinery/suit_cycler/exploration diff --git a/maps/southern_cross/structures/closets/engineering.dm b/maps/southern_cross/structures/closets/engineering.dm index a80fa8eec8..0c757ad011 100644 --- a/maps/southern_cross/structures/closets/engineering.dm +++ b/maps/southern_cross/structures/closets/engineering.dm @@ -27,7 +27,7 @@ /obj/item/taperoll/engineering, /obj/item/clothing/suit/storage/hooded/wintercoat/engineering) -/obj/structure/closet/secure_closet/engineering_chief_wardrobe/initialize() +/obj/structure/closet/secure_closet/engineering_chief_wardrobe/Initialize() if(prob(50)) starts_with += /obj/item/weapon/storage/backpack/industrial else diff --git a/maps/southern_cross/structures/closets/medical.dm b/maps/southern_cross/structures/closets/medical.dm index 2b59597d33..0ea515d974 100644 --- a/maps/southern_cross/structures/closets/medical.dm +++ b/maps/southern_cross/structures/closets/medical.dm @@ -25,7 +25,7 @@ /obj/item/clothing/suit/storage/hooded/wintercoat/medical, /obj/item/clothing/shoes/white) -/obj/structure/closet/secure_closet/CMO_wardrobe/initialize() +/obj/structure/closet/secure_closet/CMO_wardrobe/Initialize() if(prob(50)) starts_with += /obj/item/weapon/storage/backpack/medic else diff --git a/maps/southern_cross/structures/closets/misc.dm b/maps/southern_cross/structures/closets/misc.dm index 82b2bd65cb..17999641c0 100644 --- a/maps/southern_cross/structures/closets/misc.dm +++ b/maps/southern_cross/structures/closets/misc.dm @@ -16,7 +16,7 @@ /obj/item/ammo_magazine/clip/c762/hunter = 9, /obj/item/weapon/gun/projectile/shotgun/pump/rifle = 2) -/obj/structure/closet/secure_closet/guncabinet/rifle/initialize() +/obj/structure/closet/secure_closet/guncabinet/rifle/Initialize() if(prob(85)) starts_with += /obj/item/weapon/gun/projectile/shotgun/pump/rifle else @@ -24,7 +24,7 @@ return ..() /obj/structure/closet/secure_closet/guncabinet/phase - name = "phase pistol cabinet" + name = "explorer weapon cabinet" req_one_access = list(access_explorer,access_brig) starts_with = list( @@ -51,9 +51,11 @@ /obj/item/device/geiger, /obj/item/weapon/cell/device, /obj/item/device/radio, - /obj/item/stack/marker_beacon/thirty) + /obj/item/stack/marker_beacon/thirty, + /obj/item/device/cataloguer + ) -/obj/structure/closet/secure_closet/explorer/initialize() +/obj/structure/closet/secure_closet/explorer/Initialize() if(prob(50)) starts_with += /obj/item/weapon/storage/backpack else @@ -129,7 +131,7 @@ /obj/item/weapon/cell/device, /obj/item/device/radio) -/obj/structure/closet/secure_closet/pilot/initialize() +/obj/structure/closet/secure_closet/pilot/Initialize() if(prob(50)) starts_with += /obj/item/weapon/storage/backpack else diff --git a/maps/southern_cross/structures/closets/misc_vr.dm b/maps/southern_cross/structures/closets/misc_vr.dm index 07d98e8434..17b997d4de 100644 --- a/maps/southern_cross/structures/closets/misc_vr.dm +++ b/maps/southern_cross/structures/closets/misc_vr.dm @@ -24,7 +24,9 @@ /obj/item/weapon/material/knife/tacknife/survival, /obj/item/weapon/material/knife/machete, /obj/item/clothing/accessory/holster/machete, - /obj/item/weapon/reagent_containers/food/snacks/liquidfood = 2) + /obj/item/weapon/reagent_containers/food/snacks/liquidfood, + /obj/item/weapon/reagent_containers/food/snacks/liquidprotein, + /obj/item/device/cataloguer) /obj/structure/closet/secure_closet/sar name = "field medic locker" @@ -50,7 +52,8 @@ /obj/item/device/healthanalyzer, /obj/item/device/radio/off, /obj/random/medical, - /obj/item/weapon/reagent_containers/food/snacks/liquidfood = 3, + /obj/item/weapon/reagent_containers/food/snacks/liquidfood = 2, + /obj/item/weapon/reagent_containers/food/snacks/liquidprotein = 2, /obj/item/weapon/tool/crowbar, /obj/item/weapon/extinguisher/mini, /obj/item/weapon/storage/box/freezer, @@ -74,7 +77,8 @@ /obj/item/clothing/gloves/fingerless, /obj/item/device/radio/headset/pilot/alt, /obj/item/device/flashlight, - /obj/item/weapon/reagent_containers/food/snacks/liquidfood = 2, + /obj/item/weapon/reagent_containers/food/snacks/liquidfood, + /obj/item/weapon/reagent_containers/food/snacks/liquidprotein, /obj/item/weapon/reagent_containers/food/drinks/cans/waterbottle, /obj/item/weapon/storage/box/flare, /obj/item/weapon/cell/device, @@ -111,9 +115,11 @@ /obj/item/weapon/material/knife/machete/deluxe, /obj/item/weapon/gun/energy/frontier/locked/carbine, /obj/item/clothing/accessory/holster/machete, - /obj/item/weapon/reagent_containers/food/snacks/liquidfood = 2) + /obj/item/weapon/reagent_containers/food/snacks/liquidfood, + /obj/item/weapon/reagent_containers/food/snacks/liquidprotein, + /obj/item/device/cataloguer) -/obj/structure/closet/secure_closet/pathfinder/initialize() +/obj/structure/closet/secure_closet/pathfinder/Initialize() if(prob(50)) starts_with += /obj/item/weapon/storage/backpack else diff --git a/maps/southern_cross/structures/closets/security.dm b/maps/southern_cross/structures/closets/security.dm index 314e5a07b9..1bde2d7a34 100644 --- a/maps/southern_cross/structures/closets/security.dm +++ b/maps/southern_cross/structures/closets/security.dm @@ -27,7 +27,7 @@ /obj/item/clothing/head/beret/sec/corporate/hos, /obj/item/clothing/mask/gas/half) -/obj/structure/closet/secure_closet/hos_wardrobe/initialize() +/obj/structure/closet/secure_closet/hos_wardrobe/Initialize() if(prob(50)) starts_with += /obj/item/weapon/storage/backpack/security else diff --git a/maps/submaps/engine_submaps/engine_sme.dmm b/maps/submaps/engine_submaps/engine_sme.dmm index 3a9df865b7..c3c1befb48 100644 --- a/maps/submaps/engine_submaps/engine_sme.dmm +++ b/maps/submaps/engine_submaps/engine_sme.dmm @@ -72,7 +72,7 @@ "bt" = (/obj/structure/grille,/obj/structure/window/phoronreinforced,/obj/structure/window/phoronreinforced{icon_state = "phoronrwindow"; dir = 1},/obj/structure/window/phoronreinforced{icon_state = "phoronrwindow"; dir = 8},/obj/structure/window/phoronreinforced{icon_state = "phoronrwindow"; dir = 4},/obj/machinery/door/blast/regular{dir = 4; id = "SupermatterPort"; layer = 3.3; name = "Reactor Blast Door"},/turf/simulated/floor,/area/engineering/engine_room) "bu" = (/obj/machinery/atmospherics/pipe/simple/visible/yellow{dir = 6},/obj/effect/floor_decal/industrial/warning{dir = 8},/obj/machinery/button/remote/blast_door{desc = "A remote control-switch for the engine control room blast doors."; id = "EngineBlast"; name = "Engine Monitoring Room Blast Doors"; pixel_x = -25; pixel_y = 5; req_access = list(10)},/obj/machinery/button/remote/blast_door{desc = "A remote control-switch for the engine charging port."; id = "SupermatterPort"; name = "Reactor Blast Doors"; pixel_x = -25; pixel_y = -5; req_access = list(10)},/obj/machinery/light{dir = 8; icon_state = "tube1"; pixel_y = 0},/turf/simulated/floor,/area/engineering/engine_room) "bv" = (/obj/machinery/atmospherics/pipe/manifold/visible/yellow{dir = 1},/turf/simulated/floor,/area/engineering/engine_room) -"bw" = (/obj/machinery/atmospherics/omni/atmos_filter,/turf/simulated/floor,/area/engineering/engine_room) +"bw" = (/obj/machinery/atmospherics/trinary/atmos_filter/m_filter{dir = 1; use_power = 0},/turf/simulated/floor,/area/engineering/engine_room) "bx" = (/obj/machinery/atmospherics/pipe/simple/visible/yellow{dir = 10},/turf/simulated/floor,/area/engineering/engine_room) "by" = (/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor,/area/engineering/engine_room) "bz" = (/turf/simulated/floor,/area/template_noop) @@ -99,12 +99,13 @@ "bU" = (/obj/machinery/atmospherics/pipe/manifold/visible/green,/turf/simulated/floor,/area/engineering/engine_room) "bV" = (/obj/machinery/atmospherics/pipe/simple/visible/green{dir = 4},/turf/simulated/floor,/area/engineering/engine_room) "bW" = (/obj/machinery/atmospherics/pipe/manifold/visible/green{dir = 1},/obj/effect/floor_decal/industrial/warning/corner,/turf/simulated/floor,/area/engineering/engine_room) -"bX" = (/obj/machinery/atmospherics/pipe/simple/visible/green{dir = 10; icon_state = "intact";},/obj/effect/floor_decal/industrial/warning,/turf/simulated/floor,/area/engineering/engine_room) +"bX" = (/obj/machinery/atmospherics/pipe/simple/visible/green{dir = 10; icon_state = "intact"},/obj/effect/floor_decal/industrial/warning,/turf/simulated/floor,/area/engineering/engine_room) "bY" = (/obj/effect/floor_decal/industrial/warning,/turf/simulated/floor,/area/engineering/engine_room) "bZ" = (/obj/machinery/atmospherics/pipe/simple/visible/red{icon_state = "intact"; dir = 6},/obj/effect/floor_decal/industrial/warning,/turf/simulated/floor,/area/engineering/engine_room) "ca" = (/obj/machinery/atmospherics/pipe/manifold/visible/red{icon_state = "map"; dir = 4},/obj/effect/floor_decal/industrial/warning/corner{dir = 8},/turf/simulated/floor,/area/engineering/engine_room) "cb" = (/obj/machinery/atmospherics/pipe/simple/visible/yellow,/turf/simulated/floor,/area/engineering/engine_room) "cc" = (/obj/structure/cable/yellow{d2 = 2; icon_state = "0-2"},/obj/structure/cable/yellow,/obj/machinery/power/sensor{name = "Powernet Sensor - Engine Output"; name_tag = "Engine Output"},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 6},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 5},/turf/simulated/floor,/area/engineering/engine_room) +"cd" = (/obj/machinery/atmospherics/trinary/atmos_filter{dir = 1; use_power = 0},/turf/simulated/floor,/area/engineering/engine_room) "ce" = (/obj/structure/grille,/obj/structure/window/reinforced/full,/obj/structure/window/reinforced{dir = 8; health = 1e+006},/obj/machinery/door/blast/regular{density = 0; icon_state = "pdoor0"; id = "EngineRadiatorViewport"; name = "Engine Radiator Viewport Shutter"; opacity = 0},/obj/machinery/door/firedoor/glass,/obj/machinery/atmospherics/pipe/simple/visible/cyan{dir = 4},/turf/simulated/floor,/area/engineering/engine_room) "cf" = (/obj/machinery/atmospherics/pipe/simple/visible/cyan{dir = 10},/obj/effect/floor_decal/industrial/warning{dir = 8},/turf/simulated/floor,/area/engineering/engine_room) "cg" = (/obj/machinery/atmospherics/binary/pump,/turf/simulated/floor,/area/engineering/engine_room) @@ -153,7 +154,7 @@ "cX" = (/turf/simulated/floor/plating,/area/template_noop) "cY" = (/obj/effect/floor_decal/industrial/outline/blue,/obj/machinery/portable_atmospherics/canister/nitrogen,/turf/simulated/floor,/area/engineering/engine_gas) "cZ" = (/obj/effect/floor_decal/industrial/outline/blue,/obj/machinery/portable_atmospherics/canister/nitrogen,/obj/machinery/button/remote/blast_door{desc = "A remote control-switch for the engine control room blast doors."; id = "EngineEmitterPortWest"; name = "Engine Room Blast Doors"; pixel_x = 0; pixel_y = 25; req_access = null; req_one_access = list(11,24)},/turf/simulated/floor,/area/engineering/engine_gas) -"da" = (/obj/effect/floor_decal/industrial/outline/yellow,/obj/machinery/portable_atmospherics/canister/carbon_dioxide,/obj/structure/extinguisher_cabinet{dir = 1; icon_state = "extinguisher_closed"; pixel_y = 32;},/turf/simulated/floor,/area/engineering/engine_gas) +"da" = (/obj/effect/floor_decal/industrial/outline/yellow,/obj/machinery/portable_atmospherics/canister/carbon_dioxide,/obj/structure/extinguisher_cabinet{dir = 1; icon_state = "extinguisher_closed"; pixel_y = 32},/turf/simulated/floor,/area/engineering/engine_gas) "db" = (/obj/effect/floor_decal/industrial/warning/corner,/turf/simulated/floor,/area/engineering/engine_room) "dc" = (/obj/machinery/button/remote/blast_door{id = "EngineVent"; name = "Reactor Ventillatory Control"; pixel_x = 0; pixel_y = -25; req_access = list(10)},/obj/effect/floor_decal/industrial/warning,/turf/simulated/floor,/area/engineering/engine_room) "dd" = (/obj/machinery/atmospherics/pipe/simple/visible/cyan{dir = 5},/obj/effect/floor_decal/industrial/warning/corner{dir = 8},/turf/simulated/floor,/area/engineering/engine_room) @@ -195,7 +196,7 @@ aaacabaraoafagafafahadatasaFasasaGaCaHazaAaIaJaDaKavaaaaaaaa aaacadalamagagagaganadasaLaMaNaOaPaQaRaSaSaSaTaEaUaVaaaaaaaa aaacabaraoafagafafahadasaWaXaYaZbabbbcbdbdbdbebfbgaVaaaaaaaa aaacadalamagagagaganadasbhbibjbkblbmbnboaEaEbpaEbqavavavaaaa -aaacabaraoafagafafahasasbrbsbtasbubvbwbwbxaEbpaEbybzbAbBaaaa +aaacabaraoafagafafahasasbrbsbtasbubvbwcdbxaEbpaEbybzbAbBaaaa aaadadalamagagagaganasbCbDbEbFbGbHbIbIbIbIbJbKbxbLbzaaaaaaaa aaadadalbNagagagagbObPbQbRbRbSbTbUbVbWbXbYbZcacbccaaaabMaaaa aaacabaraeafagafafaicecfcgchchcgaEaEcicjckclcmcbcnbzaaaaaaaa diff --git a/maps/submaps/shelters/shelter_1.dmm b/maps/submaps/shelters/shelter_1.dmm index 66eba3541d..022f72ca25 100644 --- a/maps/submaps/shelters/shelter_1.dmm +++ b/maps/submaps/shelters/shelter_1.dmm @@ -17,8 +17,9 @@ /obj/item/weapon/reagent_containers/food/snacks/liquidfood, /obj/item/weapon/reagent_containers/food/snacks/liquidfood, /obj/item/weapon/reagent_containers/food/snacks/liquidfood, -/obj/item/weapon/reagent_containers/food/snacks/liquidfood, -/obj/item/weapon/reagent_containers/food/snacks/liquidfood, +/obj/item/weapon/reagent_containers/food/snacks/liquidprotein, +/obj/item/weapon/reagent_containers/food/snacks/liquidprotein, +/obj/item/weapon/reagent_containers/food/snacks/liquidprotein, /obj/item/device/fbp_backup_cell, /obj/item/device/fbp_backup_cell, /obj/item/device/fbp_backup_cell, diff --git a/maps/submaps/shelters/shelter_2.dmm b/maps/submaps/shelters/shelter_2.dmm index b7e8721544..5401d08ef8 100644 --- a/maps/submaps/shelters/shelter_2.dmm +++ b/maps/submaps/shelters/shelter_2.dmm @@ -38,10 +38,12 @@ /obj/item/weapon/reagent_containers/food/snacks/liquidfood, /obj/item/weapon/reagent_containers/food/snacks/liquidfood, /obj/item/weapon/reagent_containers/food/snacks/liquidfood, -/obj/item/weapon/reagent_containers/food/snacks/liquidfood, -/obj/item/weapon/reagent_containers/food/snacks/liquidfood, -/obj/item/weapon/reagent_containers/food/snacks/liquidfood, -/obj/item/weapon/reagent_containers/food/snacks/liquidfood, +/obj/item/weapon/reagent_containers/food/snacks/liquidprotein, +/obj/item/weapon/reagent_containers/food/snacks/liquidprotein, +/obj/item/weapon/reagent_containers/food/snacks/liquidprotein, +/obj/item/weapon/reagent_containers/food/snacks/liquidprotein, +/obj/item/weapon/reagent_containers/food/snacks/liquidprotein, +/obj/item/weapon/reagent_containers/food/snacks/liquidprotein, /obj/item/device/fbp_backup_cell, /obj/item/device/fbp_backup_cell, /obj/item/device/fbp_backup_cell, diff --git a/maps/submaps/shelters/shelter_3.dmm b/maps/submaps/shelters/shelter_3.dmm index 4b7e36706f..fbfb2b3228 100644 --- a/maps/submaps/shelters/shelter_3.dmm +++ b/maps/submaps/shelters/shelter_3.dmm @@ -37,10 +37,12 @@ /obj/item/weapon/reagent_containers/food/snacks/liquidfood, /obj/item/weapon/reagent_containers/food/snacks/liquidfood, /obj/item/weapon/reagent_containers/food/snacks/liquidfood, -/obj/item/weapon/reagent_containers/food/snacks/liquidfood, -/obj/item/weapon/reagent_containers/food/snacks/liquidfood, -/obj/item/weapon/reagent_containers/food/snacks/liquidfood, -/obj/item/weapon/reagent_containers/food/snacks/liquidfood, +/obj/item/weapon/reagent_containers/food/snacks/liquidprotein, +/obj/item/weapon/reagent_containers/food/snacks/liquidprotein, +/obj/item/weapon/reagent_containers/food/snacks/liquidprotein, +/obj/item/weapon/reagent_containers/food/snacks/liquidprotein, +/obj/item/weapon/reagent_containers/food/snacks/liquidprotein, +/obj/item/weapon/reagent_containers/food/snacks/liquidprotein, /obj/item/device/fbp_backup_cell, /obj/item/device/fbp_backup_cell, /obj/item/device/fbp_backup_cell, diff --git a/maps/submaps/space_submaps/debrisfield/debrisfield.dm b/maps/submaps/space_submaps/debrisfield/debrisfield.dm new file mode 100644 index 0000000000..f6f628e219 --- /dev/null +++ b/maps/submaps/space_submaps/debrisfield/debrisfield.dm @@ -0,0 +1,12 @@ +// This causes PoI maps to get 'checked' and compiled, when undergoing a unit test. +// This is so Travis can validate PoIs, and ensure future changes don't break PoIs, as PoIs are loaded at runtime and the compiler can't catch errors. +// When adding a new PoI, please add it to this list. +#if MAP_TEST +// #define "your_map_here.dmm" +#endif + +/datum/map_template/debrisfield + name = "Space Content - Debrisfield" + desc = "Designed for space points of interest." + +// No points of interest yet, but the infrastructure is there for people to add! \ No newline at end of file diff --git a/maps/submaps/surface_submaps/mountains/BlastMine1.dmm b/maps/submaps/surface_submaps/mountains/BlastMine1.dmm index 34094caf86..a2c17c17c2 100644 --- a/maps/submaps/surface_submaps/mountains/BlastMine1.dmm +++ b/maps/submaps/surface_submaps/mountains/BlastMine1.dmm @@ -3,10 +3,10 @@ "c" = (/obj/structure/sign/warning/bomb_range,/turf/simulated/wall/sandstone,/area/submap/cave/BlastMine1) "d" = (/obj/structure/table/rack,/obj/item/weapon/syndie/c4explosive,/turf/simulated/mineral/floor/ignore_mapgen,/area/submap/cave/BlastMine1) "e" = (/obj/structure/loot_pile/surface/bones,/turf/simulated/mineral/floor/ignore_mapgen,/area/submap/cave/BlastMine1) -"f" = (/mob/living/simple_animal/hostile/savik{returns_home = 1},/turf/simulated/mineral/floor/ignore_mapgen,/area/submap/cave/BlastMine1) +"f" = (/mob/living/simple_mob/animal/sif/savik,/turf/simulated/mineral/floor/ignore_mapgen,/area/submap/cave/BlastMine1) "g" = (/obj/structure/table/rack,/obj/item/clothing/head/bomb_hood,/obj/item/clothing/suit/bomb_suit,/turf/simulated/mineral/floor/ignore_mapgen,/area/submap/cave/BlastMine1) "h" = (/obj/item/device/gps/internal/poi{gps_tag = "Unidentified Signal"},/turf/simulated/wall/sandstone,/area/submap/cave/BlastMine1) -"i" = (/mob/living/simple_animal/retaliate/diyaab,/turf/simulated/mineral/floor/ignore_mapgen,/area/submap/cave/BlastMine1) +"i" = (/mob/living/simple_mob/animal/sif/diyaab,/turf/simulated/mineral/floor/ignore_mapgen,/area/submap/cave/BlastMine1) "j" = (/obj/structure/table/reinforced,/obj/item/weapon/flame/lighter/zippo/c4detonator{detonator_mode = 1},/turf/simulated/mineral/floor/ignore_mapgen,/area/submap/cave/BlastMine1) "k" = (/obj/structure/table/rack,/turf/simulated/mineral/floor/ignore_mapgen,/area/submap/cave/BlastMine1) "l" = (/obj/machinery/floodlight,/turf/simulated/mineral/floor/ignore_mapgen,/area/submap/cave/BlastMine1) diff --git a/maps/submaps/surface_submaps/mountains/CaveTrench.dmm b/maps/submaps/surface_submaps/mountains/CaveTrench.dmm index 5b362c4692..e44e5185f8 100644 --- a/maps/submaps/surface_submaps/mountains/CaveTrench.dmm +++ b/maps/submaps/surface_submaps/mountains/CaveTrench.dmm @@ -1,1156 +1,58 @@ -//MAP CONVERTED BY dmm2tgm.py THIS HEADER COMMENT PREVENTS RECONVERSION, DO NOT REMOVE -"a" = ( -/turf/template_noop, -/area/template_noop) -"b" = ( -/turf/template_noop, -/area/submap/CaveTrench) -"c" = ( -/turf/simulated/mineral/ignore_mapgen, -/area/submap/CaveTrench) -"d" = ( -/turf/simulated/mineral/floor/ignore_mapgen, -/area/submap/CaveTrench) -"e" = ( -/turf/simulated/floor/outdoors/rocks, -/area/submap/CaveTrench) -"f" = ( -/turf/simulated/floor/water{ - outdoors = 0 - }, -/area/submap/CaveTrench) -"g" = ( -/mob/living/simple_animal/hostile/malf_drone/lesser, -/turf/simulated/mineral/floor/ignore_mapgen, -/area/submap/CaveTrench) -"h" = ( -/mob/living/simple_animal/fish/trout{ - faction = "malf_drone" - }, -/turf/simulated/floor/water{ - outdoors = 0 - }, -/area/submap/CaveTrench) -"i" = ( -/obj/effect/decal/remains/human, -/turf/simulated/mineral/floor/ignore_mapgen, -/area/submap/CaveTrench) -"j" = ( -/turf/simulated/wall, -/area/submap/CaveTrench) -"k" = ( -/turf/simulated/floor/holofloor/wood, -/area/submap/CaveTrench) -"l" = ( -/mob/living/simple_animal/fish/trout, -/turf/simulated/floor/water{ - outdoors = 0 - }, -/area/submap/CaveTrench) -"m" = ( -/turf/simulated/wall/wood, -/area/submap/CaveTrench) -"n" = ( -/obj/structure/table/woodentable, -/obj/item/device/flashlight/lantern, -/turf/simulated/mineral/floor/ignore_mapgen, -/area/submap/CaveTrench) -"o" = ( -/obj/structure/table/woodentable, -/obj/item/weapon/gun/projectile/shotgun/pump, -/turf/simulated/floor/holofloor/wood, -/area/submap/CaveTrench) -"p" = ( -/obj/structure/table/woodentable, -/obj/item/weapon/reagent_containers/food/drinks/bottle/whiskey, -/turf/simulated/floor/holofloor/wood, -/area/submap/CaveTrench) -"q" = ( -/obj/item/weapon/stool/padded, -/turf/simulated/floor/holofloor/wood, -/area/submap/CaveTrench) -"r" = ( -/obj/structure/table/steel, -/turf/simulated/mineral/floor/ignore_mapgen, -/area/submap/CaveTrench) -"s" = ( -/obj/structure/table/steel, -/obj/item/weapon/paper{ - info = "Rellek's telling me that we're in deep shit if the townies found out I'm cooking up drones out here. Like I give a fuck, We're minning our asses off only to dig into some bug nest to get our legs chewed. Well I'm not looking a gift horse in the mouth. Those drone dudes out in the wild hooked us up with these machines so long as they get some of the metal we dig up. Win win for us, Guess we're retiring early after all."; - name = "Note" - }, -/turf/simulated/mineral/floor/ignore_mapgen, -/area/submap/CaveTrench) -"t" = ( -/obj/structure/table/steel, -/obj/item/robot_parts/robot_component/actuator, -/turf/simulated/mineral/floor/ignore_mapgen, -/area/submap/CaveTrench) -"u" = ( -/obj/effect/decal/cleanable/blood, -/turf/simulated/mineral/floor/ignore_mapgen, -/area/submap/CaveTrench) -"v" = ( -/obj/structure/simple_door/wood, -/turf/simulated/mineral/floor/ignore_mapgen, -/area/submap/CaveTrench) -"w" = ( -/obj/structure/table/woodentable, -/obj/item/device/flashlight/lamp, -/turf/simulated/floor/holofloor/wood, -/area/submap/CaveTrench) -"x" = ( -/obj/structure/table/steel, -/obj/item/device/robotanalyzer, -/turf/simulated/mineral/floor/ignore_mapgen, -/area/submap/CaveTrench) -"y" = ( -/obj/structure/table/steel, -/obj/item/weapon/storage/toolbox, -/turf/simulated/mineral/floor/ignore_mapgen, -/area/submap/CaveTrench) -"z" = ( -/obj/structure/table/bench/steel, -/turf/simulated/mineral/floor/ignore_mapgen, -/area/submap/CaveTrench) -"A" = ( -/obj/effect/decal/remains, -/obj/item/clothing/under/rank/miner, -/turf/simulated/mineral/floor/ignore_mapgen, -/area/submap/CaveTrench) -"B" = ( -/turf/simulated/shuttle/plating, -/area/submap/CaveTrench) -"C" = ( -/obj/structure/closet{ - icon_closed = "cabinet_closed"; - icon_opened = "cabinet_open"; - icon_state = "cabinet_closed" - }, -/obj/item/clothing/suit/storage/hooded/wintercoat/miner, -/obj/item/clothing/suit/storage/hooded/wintercoat/miner, -/turf/simulated/floor/holofloor/wood, -/area/submap/CaveTrench) -"D" = ( -/obj/structure/coatrack, -/turf/simulated/floor/holofloor/wood, -/area/submap/CaveTrench) -"E" = ( -/obj/structure/closet/secure_closet/miner, -/turf/simulated/floor/holofloor/wood, -/area/submap/CaveTrench) -"F" = ( -/obj/item/weapon/storage/box/shotgunammo, -/turf/simulated/floor/holofloor/wood, -/area/submap/CaveTrench) -"G" = ( -/obj/structure/table/steel, -/obj/item/robot_parts/l_leg, -/obj/item/robot_parts/head, -/turf/simulated/mineral/floor/ignore_mapgen, -/area/submap/CaveTrench) -"H" = ( -/obj/effect/decal/cleanable/blood/gibs/robot, -/turf/simulated/mineral/floor/ignore_mapgen, -/area/submap/CaveTrench) -"I" = ( -/obj/machinery/power/port_gen/pacman, -/turf/simulated/shuttle/plating, -/area/submap/CaveTrench) -"J" = ( -/obj/machinery/drone_fabricator{ - fabricator_tag = "Unknown" - }, -/turf/simulated/shuttle/plating, -/area/submap/CaveTrench) +"a" = (/turf/template_noop,/area/template_noop) +"b" = (/turf/template_noop,/area/submap/Cavelake) +"c" = (/turf/simulated/mineral/ignore_mapgen,/area/submap/Cavelake) +"d" = (/turf/simulated/mineral/floor/ignore_mapgen,/area/submap/Cavelake) +"e" = (/obj/effect/decal/cleanable/cobweb2,/turf/simulated/mineral/floor/ignore_mapgen,/area/submap/Cavelake) +"f" = (/turf/simulated/floor/outdoors/rocks,/area/submap/Cavelake) +"g" = (/mob/living/simple_mob/animal/sif/hooligan_crab,/turf/simulated/mineral/floor/ignore_mapgen,/area/submap/Cavelake) +"h" = (/turf/simulated/floor/water,/area/submap/Cavelake) +"i" = (/mob/living/simple_mob/animal/passive/fish/perch,/turf/simulated/floor/water,/area/submap/Cavelake) +"j" = (/obj/machinery/crystal,/turf/simulated/mineral/floor/ignore_mapgen,/area/submap/Cavelake) +"k" = (/mob/living/simple_mob/animal/passive/fish/trout,/turf/simulated/floor/water,/area/submap/Cavelake) +"l" = (/obj/effect/decal/cleanable/cobweb,/turf/simulated/mineral/floor/ignore_mapgen,/area/submap/Cavelake) +"m" = (/obj/random/mob/sif,/turf/simulated/mineral/floor/ignore_mapgen,/area/submap/Cavelake) +"n" = (/obj/item/clothing/mask/snorkel,/turf/simulated/mineral/floor/ignore_mapgen,/area/submap/Cavelake) +"o" = (/obj/effect/decal/remains/mouse,/turf/simulated/mineral/floor/ignore_mapgen,/area/submap/Cavelake) (1,1,1) = {" -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -"} -(2,1,1) = {" -a -b -b -c -c -c -b -b -e -e -e -b -b -b -b -b -b -b -b -a -"} -(3,1,1) = {" -a -b -c -c -d -i -d -e -e -f -e -e -b -b -c -b -b -b -b -a -"} -(4,1,1) = {" -a -c -c -c -d -d -d -e -f -f -f -e -b -c -c -b -b -b -b -a -"} -(5,1,1) = {" -a -c -c -d -d -d -e -e -f -f -f -e -d -d -c -c -c -b -b -a -"} -(6,1,1) = {" -a -c -d -d -d -d -e -f -f -f -f -e -d -d -d -i -c -b -b -a -"} -(7,1,1) = {" -a -c -d -d -d -d -e -f -f -f -f -e -d -d -d -d -c -b -b -a -"} -(8,1,1) = {" -a -c -d -d -d -d -e -f -f -f -f -e -d -d -d -d -c -c -b -a -"} -(9,1,1) = {" -a -c -d -d -d -d -e -h -f -f -f -e -d -d -d -d -c -c -c -a -"} -(10,1,1) = {" -a -c -c -d -d -d -e -f -f -f -h -e -e -d -d -d -r -c -c -a -"} -(11,1,1) = {" -a -c -c -d -d -d -e -f -f -f -f -f -e -d -d -d -s -c -c -a -"} -(12,1,1) = {" -a -c -d -d -d -j -e -f -f -f -f -f -e -j -d -d -t -x -c -a -"} -(13,1,1) = {" -a -c -d -d -d -k -k -k -k -k -k -k -k -k -d -d -u -y -G -a -"} -(14,1,1) = {" -a -c -d -d -d -k -k -k -k -k -k -k -k -k -d -g -d -z -H -a -"} -(15,1,1) = {" -a -c -d -d -d -j -e -f -f -f -f -f -e -j -d -d -d -d -u -a -"} -(16,1,1) = {" -a -c -d -d -d -e -e -f -f -f -f -f -e -d -d -d -d -A -I -a -"} -(17,1,1) = {" -a -c -d -d -d -e -f -f -f -f -f -f -e -d -d -d -d -B -J -a -"} -(18,1,1) = {" -a -c -d -d -d -e -f -h -f -f -f -e -d -d -d -d -d -B -B -a -"} -(19,1,1) = {" -a -c -d -d -d -e -f -f -f -f -f -e -d -d -d -d -d -d -B -a -"} -(20,1,1) = {" -a -c -d -d -d -e -f -f -f -f -f -e -d -d -d -n -d -d -d -a -"} -(21,1,1) = {" -a -c -d -d -d -e -f -f -f -f -f -e -d -d -m -m -v -m -m -a -"} -(22,1,1) = {" -a -c -d -d -d -e -f -f -f -f -f -e -d -d -m -o -k -C -m -a -"} -(23,1,1) = {" -a -c -d -d -g -e -f -f -f -f -f -e -d -d -m -p -k -D -m -a -"} -(24,1,1) = {" -a -c -d -d -d -e -f -f -l -f -f -e -d -d -m -k -k -E -m -a -"} -(25,1,1) = {" -a -c -c -d -d -e -f -f -f -f -f -e -d -d -m -k -q -k -m -a -"} -(26,1,1) = {" -a -c -c -d -d -e -f -f -f -f -f -e -d -d -m -q -w -q -m -a -"} -(27,1,1) = {" -a -c -c -d -d -e -f -f -f -f -f -e -d -d -m -k -q -F -m -a -"} -(28,1,1) = {" -a -c -c -d -d -e -f -f -f -f -e -e -d -d -m -m -m -m -m -a -"} -(29,1,1) = {" -a -c -c -d -d -e -f -f -f -f -e -d -d -d -d -m -m -m -d -a -"} -(30,1,1) = {" -a -c -c -d -d -e -f -f -f -f -e -d -d -d -d -d -d -d -d -a -"} -(31,1,1) = {" -a -c -c -d -d -e -f -f -f -f -e -d -d -d -d -d -d -d -d -a -"} -(32,1,1) = {" -a -c -c -d -d -e -f -f -f -f -e -d -d -d -d -d -d -d -d -a -"} -(33,1,1) = {" -a -c -d -d -d -e -f -f -f -f -e -d -d -d -d -d -d -d -d -a -"} -(34,1,1) = {" -a -c -d -d -d -e -f -f -f -f -e -d -d -d -d -d -d -d -c -a -"} -(35,1,1) = {" -a -c -d -d -d -e -f -f -f -f -e -e -d -d -d -d -d -d -c -a -"} -(36,1,1) = {" -a -c -d -d -d -e -f -f -f -f -f -e -d -d -d -d -d -d -c -a -"} -(37,1,1) = {" -a -c -d -d -d -e -f -h -f -f -f -e -d -d -d -d -d -c -c -a -"} -(38,1,1) = {" -a -c -d -e -e -e -f -f -f -f -e -e -d -d -d -d -d -c -c -a -"} -(39,1,1) = {" -a -c -e -e -f -f -f -f -f -f -e -d -d -d -d -d -d -c -c -a -"} -(40,1,1) = {" -a -c -e -f -f -f -f -f -f -f -e -d -d -d -d -d -d -c -b -a -"} -(41,1,1) = {" -a -c -e -f -f -f -f -f -f -f -e -d -d -d -i -b -b -b -c -a -"} -(42,1,1) = {" -a -c -e -f -h -f -f -f -f -f -e -d -d -d -d -b -b -b -b -a -"} -(43,1,1) = {" -a -c -e -f -f -f -e -e -f -f -e -d -d -d -b -b -b -b -b -a -"} -(44,1,1) = {" -a -c -e -e -e -c -c -e -e -e -e -d -c -c -c -c -b -b -b -a -"} -(45,1,1) = {" -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -"} +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +abbbbccbbbbbbcccccccbbbbbbbbbbbbbbbbbbba +abbbcccdddddccccccccbbbbbcccccccccccbbba +abbcccddddddddddddddbbbbbbbccccccccccbba +abcccdddddddddddddddddddddddddddddeccbba +abcccddddddddddddddddddddddddddddddccbba +acccddddddddddddddddddddddddddddddddcbba +acccdddddddddddddddddffffffffffdddddcbba +acccdddddddddddddgdfffhhhhhhhhffddddcbba +acccdddddddddddddddfhhhhhhhhhhhfddddcbba +accdddddddddddddddfhhhhhhhhhhhhffdddccba +accdddddddddddddddfhhhhhhhhhhhhhffffccca +acddddddddddddddddffhhhhhhihhhhhhfffffca +acddddcccjddddddddffhhhhhhhhhhhhhhhhhfca +acdddcccccdddddddddffhhhhhhhhhhhhhhhhfca +acdddccccccddddddddffhhhhhhhhhhhhhhhhfca +acdddjcccccddddddddffhhhhhhhhhhhhhhhkfca +accddddcclmdddddddddfhhhhhhhhhhhhhhhhfca +accdddddddddddddddddfhhhhhhhhhhhhhhhhfca +accdddddddddddddddddfhhhhhhhhhhhhhhhhfca +accdddddddddddddddddffhhhhhhhhhhhhhhhfca +acddddddddnddddddddddfhhhhhihhhhhhhhhfca +acddddffffffffffffdddffhhhhhhhhhhhhhhfca +acdffffhhhhhhhhhffdddfhhhhhhhhhhhhhhffca +acfhhhhhkhhhhhhhhfdddfhhhhhhhhhhhhffccca +acffhhhhhhhhhhihhfdddfhhhhhhhhhhfffdccba +acdffhhhhhhhhhhhhfddddfhhhhhhhhhfdddcbba +acddffhhhhhkhhhhhffdddfhhhhhhhfffdddccba +acdddfffhhhhhhhhhhffdddffffffffddddcccba +acddgdddffffhhhhhhhfdddddffddddddddcccba +acdddodddddfffffffffdddddddddddddddcccba +acdddddddddddddddddddddddddddddddddccbba +accddddddddddddddddddddddddddddddddccbba +abccdddddddddddddddddddddddddddddddcbbba +abbcccddddccccddddddddddddcccbbbdddcbbba +abbbbcccccccccddddcccccccccccbbbbbcbbbba +abbbbbbbcccccccccccbbbbbccbbbbbbbbbbbbba +abbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbba +abbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbba +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +"} \ No newline at end of file diff --git a/maps/submaps/surface_submaps/mountains/Cavelake.dmm b/maps/submaps/surface_submaps/mountains/Cavelake.dmm index d52795fa56..e44e5185f8 100644 --- a/maps/submaps/surface_submaps/mountains/Cavelake.dmm +++ b/maps/submaps/surface_submaps/mountains/Cavelake.dmm @@ -1,1736 +1,58 @@ -//MAP CONVERTED BY dmm2tgm.py THIS HEADER COMMENT PREVENTS RECONVERSION, DO NOT REMOVE -"a" = ( -/turf/template_noop, -/area/template_noop) -"b" = ( -/turf/template_noop, -/area/submap/Cavelake) -"c" = ( -/turf/simulated/mineral/ignore_mapgen, -/area/submap/Cavelake) -"d" = ( -/turf/simulated/mineral/floor/ignore_mapgen, -/area/submap/Cavelake) -"e" = ( -/obj/effect/decal/cleanable/cobweb2, -/turf/simulated/mineral/floor/ignore_mapgen, -/area/submap/Cavelake) -"f" = ( -/turf/simulated/floor/outdoors/rocks, -/area/submap/Cavelake) -"g" = ( -/mob/living/simple_animal/giant_crab, -/turf/simulated/mineral/floor/ignore_mapgen, -/area/submap/Cavelake) -"h" = ( -/turf/simulated/floor/water, -/area/submap/Cavelake) -"i" = ( -/mob/living/simple_animal/fish/perch, -/turf/simulated/floor/water, -/area/submap/Cavelake) -"j" = ( -/obj/machinery/crystal, -/turf/simulated/mineral/floor/ignore_mapgen, -/area/submap/Cavelake) -"k" = ( -/mob/living/simple_animal/fish/trout, -/turf/simulated/floor/water, -/area/submap/Cavelake) -"l" = ( -/obj/effect/decal/cleanable/cobweb, -/turf/simulated/mineral/floor/ignore_mapgen, -/area/submap/Cavelake) -"m" = ( -/obj/effect/decal/remains/mouse, -/turf/simulated/mineral/floor/ignore_mapgen, -/area/submap/Cavelake) -"r" = ( -/obj/random/mob/sif, -/turf/simulated/mineral/floor/ignore_mapgen, -/area/submap/Cavelake) -"B" = ( -/obj/item/clothing/mask/snorkel, -/turf/simulated/mineral/floor/ignore_mapgen, -/area/submap/Cavelake) +"a" = (/turf/template_noop,/area/template_noop) +"b" = (/turf/template_noop,/area/submap/Cavelake) +"c" = (/turf/simulated/mineral/ignore_mapgen,/area/submap/Cavelake) +"d" = (/turf/simulated/mineral/floor/ignore_mapgen,/area/submap/Cavelake) +"e" = (/obj/effect/decal/cleanable/cobweb2,/turf/simulated/mineral/floor/ignore_mapgen,/area/submap/Cavelake) +"f" = (/turf/simulated/floor/outdoors/rocks,/area/submap/Cavelake) +"g" = (/mob/living/simple_mob/animal/sif/hooligan_crab,/turf/simulated/mineral/floor/ignore_mapgen,/area/submap/Cavelake) +"h" = (/turf/simulated/floor/water,/area/submap/Cavelake) +"i" = (/mob/living/simple_mob/animal/passive/fish/perch,/turf/simulated/floor/water,/area/submap/Cavelake) +"j" = (/obj/machinery/crystal,/turf/simulated/mineral/floor/ignore_mapgen,/area/submap/Cavelake) +"k" = (/mob/living/simple_mob/animal/passive/fish/trout,/turf/simulated/floor/water,/area/submap/Cavelake) +"l" = (/obj/effect/decal/cleanable/cobweb,/turf/simulated/mineral/floor/ignore_mapgen,/area/submap/Cavelake) +"m" = (/obj/random/mob/sif,/turf/simulated/mineral/floor/ignore_mapgen,/area/submap/Cavelake) +"n" = (/obj/item/clothing/mask/snorkel,/turf/simulated/mineral/floor/ignore_mapgen,/area/submap/Cavelake) +"o" = (/obj/effect/decal/remains/mouse,/turf/simulated/mineral/floor/ignore_mapgen,/area/submap/Cavelake) (1,1,1) = {" -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -"} -(2,1,1) = {" -a -b -b -b -b -b -c -c -c -c -c -c -c -c -c -c -c -c -c -c -c -c -c -c -c -c -c -c -c -c -c -c -c -b -b -b -b -b -b -a -"} -(3,1,1) = {" -a -b -b -b -c -c -c -c -c -c -c -c -d -d -d -d -d -c -c -c -c -d -d -d -f -f -d -d -d -d -d -d -c -c -b -b -b -b -b -a -"} -(4,1,1) = {" -a -b -b -c -c -c -c -c -c -c -d -d -d -d -d -d -d -d -d -d -d -d -d -f -h -f -f -d -d -d -d -d -d -c -c -b -b -b -b -a -"} -(5,1,1) = {" -a -b -c -c -c -c -d -d -d -d -d -d -d -d -d -d -d -d -d -d -d -d -d -f -h -h -f -f -d -g -d -d -d -d -c -b -b -b -b -a -"} -(6,1,1) = {" -a -c -c -c -d -d -d -d -d -d -d -d -d -d -c -c -j -d -d -d -d -d -d -f -h -h -h -f -f -d -m -d -d -d -c -c -b -b -b -a -"} -(7,1,1) = {" -a -c -c -d -d -d -d -d -d -d -d -d -d -c -c -c -c -d -d -d -d -d -f -f -h -h -h -h -f -d -d -d -d -d -d -c -b -b -b -a -"} -(8,1,1) = {" -a -b -d -d -d -d -d -d -d -d -d -d -d -c -c -c -c -c -d -d -d -d -f -h -h -h -h -h -f -d -d -d -d -d -d -c -b -b -b -a -"} -(9,1,1) = {" -a -b -d -d -d -d -d -d -d -d -d -d -d -c -c -c -c -c -d -d -d -d -f -h -k -h -h -h -h -f -d -d -d -d -d -c -c -b -b -a -"} -(10,1,1) = {" -a -b -d -d -d -d -d -d -d -d -d -d -d -j -c -c -c -l -d -d -d -d -f -h -h -h -h -h -h -f -d -d -d -d -d -c -c -b -b -a -"} -(11,1,1) = {" -a -b -d -d -d -d -d -d -d -d -d -d -d -d -d -c -c -r -d -d -d -B -f -h -h -h -h -h -h -f -d -d -d -d -c -c -c -b -b -a -"} -(12,1,1) = {" -a -b -d -d -d -d -d -d -d -d -d -d -d -d -d -d -d -d -d -d -d -d -f -h -h -h -h -k -h -f -f -d -d -d -c -c -c -b -b -a -"} -(13,1,1) = {" -a -b -c -d -d -d -d -d -d -d -d -d -d -d -d -d -d -d -d -d -d -d -f -h -h -h -h -h -h -h -f -d -d -d -c -c -c -b -b -a -"} -(14,1,1) = {" -a -c -c -d -d -d -d -d -d -d -d -d -d -d -d -d -d -d -d -d -d -d -f -h -h -h -h -h -h -h -f -d -d -d -c -c -c -b -b -a -"} -(15,1,1) = {" -a -c -c -d -d -d -d -d -d -d -d -d -d -d -d -d -d -d -d -d -d -d -f -h -h -i -h -h -h -h -f -d -d -d -d -d -c -b -b -a -"} -(16,1,1) = {" -a -c -c -d -d -d -d -d -d -d -d -d -d -d -d -d -d -d -d -d -d -d -f -h -h -h -h -h -h -h -f -d -d -d -d -d -c -b -b -a -"} -(17,1,1) = {" -a -c -c -d -d -d -d -d -d -d -d -d -d -d -d -d -d -d -d -d -d -d -f -f -h -h -h -h -h -h -f -d -d -d -d -d -c -b -b -a -"} -(18,1,1) = {" -a -c -c -d -d -d -d -d -g -d -d -d -d -d -d -d -d -d -d -d -d -d -f -f -f -f -f -f -h -h -f -d -d -d -d -d -c -b -b -a -"} -(19,1,1) = {" -a -c -c -d -d -d -d -d -d -d -f -f -f -f -d -d -d -d -d -d -d -d -d -d -d -d -d -f -f -h -f -d -d -d -d -c -c -b -b -a -"} -(20,1,1) = {" -a -c -c -d -d -d -d -d -f -f -h -h -f -f -f -f -f -d -d -d -d -d -d -d -d -d -d -d -f -f -f -d -d -d -d -c -b -b -b -a -"} -(21,1,1) = {" -a -b -b -b -d -d -d -d -f -h -h -h -h -h -f -f -f -f -f -f -f -d -d -d -d -d -d -d -d -d -d -d -d -d -d -c -b -b -b -a -"} -(22,1,1) = {" -a -b -b -b -d -d -d -f -f -h -h -h -h -h -h -h -h -h -h -h -f -f -f -f -f -f -d -d -d -d -d -d -d -d -d -c -b -b -b -a -"} -(23,1,1) = {" -a -b -b -b -d -d -d -f -h -h -h -h -h -h -h -h -h -h -h -h -h -h -f -h -h -h -f -f -d -d -d -d -d -d -d -c -b -b -b -a -"} -(24,1,1) = {" -a -b -b -b -d -d -d -f -h -h -h -h -h -h -h -h -h -h -h -h -h -h -h -h -h -h -h -h -f -d -d -d -d -d -d -c -b -b -b -a -"} -(25,1,1) = {" -a -b -b -b -d -d -d -f -h -h -h -h -h -h -h -h -h -h -h -h -h -h -h -h -h -h -h -h -f -d -d -d -d -d -d -c -c -b -b -a -"} -(26,1,1) = {" -a -b -c -b -d -d -d -f -h -h -h -h -h -h -h -h -h -h -h -h -h -h -h -h -h -h -h -h -f -f -d -d -d -d -d -c -c -b -b -a -"} -(27,1,1) = {" -a -b -c -b -d -d -d -f -h -h -h -h -i -h -h -h -h -h -h -h -h -h -h -h -h -h -h -h -f -f -d -d -d -d -c -c -b -b -b -a -"} -(28,1,1) = {" -a -b -c -c -d -d -d -f -h -h -h -h -h -h -h -h -h -h -h -h -h -i -h -h -h -h -h -h -f -d -d -d -d -d -c -c -b -b -b -a -"} -(29,1,1) = {" -a -b -c -c -d -d -d -f -h -h -h -h -h -h -h -h -h -h -h -h -h -h -h -h -h -h -h -h -f -d -d -d -d -d -c -c -b -b -b -a -"} -(30,1,1) = {" -a -b -c -c -d -d -d -f -h -h -h -h -h -h -h -h -h -h -h -h -h -h -h -h -h -h -h -h -f -d -d -d -d -d -b -b -b -b -b -a -"} -(31,1,1) = {" -a -b -c -c -d -d -d -f -f -h -h -h -h -h -h -h -h -h -h -h -h -h -h -h -h -h -h -f -f -d -d -d -d -d -b -b -b -b -b -a -"} -(32,1,1) = {" -a -b -c -c -d -d -d -d -f -f -f -h -h -h -h -h -h -h -h -h -h -h -h -h -h -h -h -f -d -d -d -d -d -d -b -b -b -b -b -a -"} -(33,1,1) = {" -a -b -c -c -d -d -d -d -d -d -f -f -h -h -h -h -h -h -h -h -h -h -h -h -h -f -f -f -d -d -d -d -d -d -d -b -b -b -b -a -"} -(34,1,1) = {" -a -b -c -c -d -d -d -d -d -d -d -f -f -h -h -h -h -h -h -h -h -h -h -h -h -f -d -d -d -d -d -d -d -d -d -b -b -b -b -a -"} -(35,1,1) = {" -a -b -c -c -e -d -d -d -d -d -d -f -f -h -h -h -h -h -h -h -h -h -h -h -f -f -d -d -d -d -d -d -d -d -d -c -b -b -b -a -"} -(36,1,1) = {" -a -b -c -c -c -c -d -d -d -d -d -f -f -h -h -h -h -h -h -h -h -h -h -h -f -d -d -d -c -c -c -c -c -c -c -b -b -b -b -a -"} -(37,1,1) = {" -a -b -b -c -c -c -c -c -c -c -c -c -f -h -h -h -k -h -h -h -h -h -h -f -c -c -c -c -c -c -c -c -c -b -b -b -b -b -b -a -"} -(38,1,1) = {" -a -b -b -b -b -b -b -b -b -b -c -c -f -f -f -f -f -f -f -f -f -f -f -f -c -c -b -c -c -c -c -b -b -b -b -b -b -b -b -a -"} -(39,1,1) = {" -a -b -b -b -b -b -b -b -b -b -b -c -c -c -c -c -c -c -c -c -c -c -c -c -c -b -b -b -b -b -b -b -b -b -b -b -b -b -b -a -"} -(40,1,1) = {" -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -"} +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +abbbbccbbbbbbcccccccbbbbbbbbbbbbbbbbbbba +abbbcccdddddccccccccbbbbbcccccccccccbbba +abbcccddddddddddddddbbbbbbbccccccccccbba +abcccdddddddddddddddddddddddddddddeccbba +abcccddddddddddddddddddddddddddddddccbba +acccddddddddddddddddddddddddddddddddcbba +acccdddddddddddddddddffffffffffdddddcbba +acccdddddddddddddgdfffhhhhhhhhffddddcbba +acccdddddddddddddddfhhhhhhhhhhhfddddcbba +accdddddddddddddddfhhhhhhhhhhhhffdddccba +accdddddddddddddddfhhhhhhhhhhhhhffffccca +acddddddddddddddddffhhhhhhihhhhhhfffffca +acddddcccjddddddddffhhhhhhhhhhhhhhhhhfca +acdddcccccdddddddddffhhhhhhhhhhhhhhhhfca +acdddccccccddddddddffhhhhhhhhhhhhhhhhfca +acdddjcccccddddddddffhhhhhhhhhhhhhhhkfca +accddddcclmdddddddddfhhhhhhhhhhhhhhhhfca +accdddddddddddddddddfhhhhhhhhhhhhhhhhfca +accdddddddddddddddddfhhhhhhhhhhhhhhhhfca +accdddddddddddddddddffhhhhhhhhhhhhhhhfca +acddddddddnddddddddddfhhhhhihhhhhhhhhfca +acddddffffffffffffdddffhhhhhhhhhhhhhhfca +acdffffhhhhhhhhhffdddfhhhhhhhhhhhhhhffca +acfhhhhhkhhhhhhhhfdddfhhhhhhhhhhhhffccca +acffhhhhhhhhhhihhfdddfhhhhhhhhhhfffdccba +acdffhhhhhhhhhhhhfddddfhhhhhhhhhfdddcbba +acddffhhhhhkhhhhhffdddfhhhhhhhfffdddccba +acdddfffhhhhhhhhhhffdddffffffffddddcccba +acddgdddffffhhhhhhhfdddddffddddddddcccba +acdddodddddfffffffffdddddddddddddddcccba +acdddddddddddddddddddddddddddddddddccbba +accddddddddddddddddddddddddddddddddccbba +abccdddddddddddddddddddddddddddddddcbbba +abbcccddddccccddddddddddddcccbbbdddcbbba +abbbbcccccccccddddcccccccccccbbbbbcbbbba +abbbbbbbcccccccccccbbbbbccbbbbbbbbbbbbba +abbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbba +abbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbba +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +"} \ No newline at end of file diff --git a/maps/submaps/surface_submaps/mountains/CrashedMedShuttle1.dmm b/maps/submaps/surface_submaps/mountains/CrashedMedShuttle1.dmm index fad7093123..fc0dacddf0 100644 --- a/maps/submaps/surface_submaps/mountains/CrashedMedShuttle1.dmm +++ b/maps/submaps/surface_submaps/mountains/CrashedMedShuttle1.dmm @@ -1,133 +1,133 @@ -"aa" = (/turf/simulated/mineral/floor/ignore_mapgen,/area/submap/CrashedMedShuttle) -"ab" = (/turf/simulated/floor/outdoors/rocks,/area/submap/CrashedMedShuttle) -"ac" = (/obj/structure/lattice,/turf/simulated/floor/outdoors/rocks,/area/submap/CrashedMedShuttle) -"ad" = (/obj/effect/spider/stickyweb,/turf/simulated/shuttle/plating,/area/submap/CrashedMedShuttle) -"ae" = (/obj/structure/sign/greencross{desc = "White cross in a green field, you can get medical aid here."; name = "First-Aid"},/turf/simulated/shuttle/wall/no_join,/area/submap/CrashedMedShuttle) -"af" = (/obj/structure/grille,/obj/structure/shuttle/window,/turf/simulated/shuttle/plating,/area/submap/CrashedMedShuttle) -"ag" = (/turf/simulated/shuttle/wall,/area/submap/CrashedMedShuttle) -"ah" = (/obj/item/weapon/material/shard{icon_state = "medium"},/turf/simulated/mineral/floor/ignore_mapgen,/area/submap/CrashedMedShuttle) -"ai" = (/obj/item/weapon/material/shard{icon_state = "medium"},/obj/effect/decal/cleanable/blood/oil,/obj/structure/lattice,/turf/simulated/floor/outdoors/rocks,/area/submap/CrashedMedShuttle) -"aj" = (/obj/machinery/light/small{dir = 4; pixel_y = 0},/obj/structure/sign/warning/airlock{pixel_x = 32},/obj/effect/spider/stickyweb,/turf/simulated/shuttle/plating,/area/submap/CrashedMedShuttle) -"ak" = (/turf/simulated/shuttle/floor/white,/area/submap/CrashedMedShuttle) -"al" = (/obj/item/weapon/storage/toolbox/mechanical,/obj/machinery/light{dir = 1},/obj/structure/table/standard,/turf/simulated/shuttle/floor/white,/area/submap/CrashedMedShuttle) -"am" = (/obj/structure/table/standard,/turf/simulated/shuttle/floor/white,/area/submap/CrashedMedShuttle) -"an" = (/obj/structure/window/reinforced,/obj/effect/decal/cleanable/blood/oil,/obj/structure/loot_pile/surface/bones,/obj/structure/lattice,/turf/simulated/floor/outdoors/rocks,/area/submap/CrashedMedShuttle) -"ao" = (/obj/item/weapon/circuitboard/broken,/obj/structure/door_assembly/door_assembly_ext,/turf/simulated/shuttle/plating,/area/submap/CrashedMedShuttle) -"ap" = (/obj/structure/door_assembly/door_assembly_ext,/turf/simulated/shuttle/plating,/area/submap/CrashedMedShuttle) -"aq" = (/obj/effect/decal/cleanable/liquid_fuel,/mob/living/simple_animal/hostile/giant_spider/webslinger{returns_home = 1},/turf/simulated/shuttle/floor/white,/area/submap/CrashedMedShuttle) -"ar" = (/obj/structure/closet/crate/medical,/obj/random/medical,/obj/random/medical,/turf/simulated/shuttle/floor/white,/area/submap/CrashedMedShuttle) -"as" = (/obj/structure/table/standard,/obj/machinery/cell_charger,/turf/simulated/shuttle/floor/white,/area/submap/CrashedMedShuttle) -"at" = (/obj/item/weapon/material/shard,/obj/structure/lattice,/turf/simulated/floor/outdoors/rocks,/area/submap/CrashedMedShuttle) -"au" = (/obj/structure/closet/secure_closet/personal/patient,/obj/effect/spider/stickyweb,/turf/simulated/shuttle/floor/white,/area/submap/CrashedMedShuttle) -"av" = (/obj/random/mob/spider/mutant,/turf/simulated/shuttle/floor/white,/area/submap/CrashedMedShuttle) -"aw" = (/obj/machinery/door/airlock/glass,/turf/simulated/shuttle/floor/white,/area/submap/CrashedMedShuttle) -"ax" = (/obj/effect/decal/cleanable/blood/drip,/obj/effect/decal/cleanable/liquid_fuel,/turf/simulated/shuttle/floor/white,/area/submap/CrashedMedShuttle) -"ay" = (/obj/effect/decal/cleanable/blood,/obj/effect/decal/cleanable/liquid_fuel,/turf/simulated/shuttle/floor/white,/area/submap/CrashedMedShuttle) -"az" = (/obj/effect/decal/cleanable/blood/gibs/robot,/obj/item/weapon/firstaid_arm_assembly,/mob/living/simple_animal/hostile/giant_spider/frost{returns_home = 1},/turf/simulated/shuttle/floor/white,/area/submap/CrashedMedShuttle) -"aA" = (/obj/item/stack/rods,/turf/simulated/mineral/floor/ignore_mapgen,/area/submap/CrashedMedShuttle) -"aB" = (/obj/structure/lattice,/obj/item/stack/rods,/turf/simulated/floor/outdoors/rocks,/area/submap/CrashedMedShuttle) -"aC" = (/obj/effect/decal/cleanable/blood/oil,/obj/item/weapon/firstaid_arm_assembly,/turf/simulated/shuttle/floor/white,/area/submap/CrashedMedShuttle) -"aD" = (/obj/structure/closet/secure_closet/personal/patient,/turf/simulated/shuttle/floor/white,/area/submap/CrashedMedShuttle) -"aE" = (/obj/effect/decal/cleanable/blood/drip,/turf/simulated/shuttle/floor/white,/area/submap/CrashedMedShuttle) -"aF" = (/obj/structure/reagent_dispensers/fueltank,/obj/effect/decal/cleanable/liquid_fuel,/turf/simulated/shuttle/floor/white,/area/submap/CrashedMedShuttle) -"aG" = (/obj/structure/reagent_dispensers/watertank,/obj/effect/decal/cleanable/liquid_fuel,/turf/simulated/shuttle/floor/white,/area/submap/CrashedMedShuttle) -"aH" = (/obj/machinery/recharge_station,/obj/effect/decal/cleanable/liquid_fuel,/turf/simulated/shuttle/floor/white,/area/submap/CrashedMedShuttle) -"aI" = (/obj/structure/table/standard,/obj/effect/spider/stickyweb,/obj/machinery/light,/turf/simulated/shuttle/floor/white,/area/submap/CrashedMedShuttle) -"aJ" = (/obj/structure/table/standard,/obj/effect/spider/stickyweb,/turf/simulated/shuttle/floor/white,/area/submap/CrashedMedShuttle) -"aK" = (/obj/structure/table/standard,/obj/item/weapon/material/shard{icon_state = "medium"},/obj/effect/spider/stickyweb,/turf/simulated/shuttle/floor/white,/area/submap/CrashedMedShuttle) -"aL" = (/obj/structure/grille/broken,/obj/item/weapon/material/shard{icon_state = "medium"},/obj/item/stack/rods,/turf/simulated/shuttle/plating,/area/submap/CrashedMedShuttle) -"aM" = (/obj/item/weapon/material/shard,/turf/simulated/floor/outdoors/rocks,/area/submap/CrashedMedShuttle) -"aN" = (/obj/effect/decal/cleanable/blood/oil,/turf/simulated/floor/outdoors/rocks,/area/submap/CrashedMedShuttle) -"aO" = (/obj/item/weapon/material/shard{icon_state = "medium"},/obj/effect/spider/stickyweb,/mob/living/simple_animal/hostile/giant_spider/carrier,/turf/simulated/shuttle/floor/white,/area/submap/CrashedMedShuttle) -"aP" = (/obj/effect/decal/cleanable/blood/gibs/robot,/turf/simulated/shuttle/floor/white,/area/submap/CrashedMedShuttle) -"aQ" = (/obj/effect/spider/stickyweb,/turf/simulated/shuttle/floor/white,/area/submap/CrashedMedShuttle) -"aR" = (/turf/simulated/shuttle/wall/no_join,/area/submap/CrashedMedShuttle) -"aS" = (/obj/effect/decal/cleanable/blood/oil,/obj/structure/loot_pile/surface/bones,/obj/structure/lattice,/turf/simulated/floor/outdoors/rocks,/area/submap/CrashedMedShuttle) -"aT" = (/obj/machinery/light,/obj/structure/table/standard,/obj/effect/spider/stickyweb,/turf/simulated/shuttle/floor/white,/area/submap/CrashedMedShuttle) -"aU" = (/obj/structure/table/standard,/obj/item/weapon/material/shard{icon_state = "medium"},/obj/random/medical,/turf/simulated/shuttle/floor/white,/area/submap/CrashedMedShuttle) -"aV" = (/obj/effect/spider/stickyweb,/turf/simulated/floor/outdoors/rocks,/area/submap/CrashedMedShuttle) -"aW" = (/obj/effect/decal/cleanable/blood/drip,/turf/simulated/floor/outdoors/rocks,/area/submap/CrashedMedShuttle) -"aX" = (/obj/machinery/computer,/turf/simulated/shuttle/floor/yellow,/area/submap/CrashedMedShuttle) -"aY" = (/obj/structure/frame/computer,/turf/simulated/shuttle/floor/yellow,/area/submap/CrashedMedShuttle) -"aZ" = (/obj/effect/spider/stickyweb,/turf/simulated/mineral/floor/ignore_mapgen,/area/submap/CrashedMedShuttle) -"ba" = (/obj/random/mob/spider/mutant,/turf/simulated/mineral/floor/ignore_mapgen,/area/submap/CrashedMedShuttle) -"bb" = (/obj/effect/spider/cocoon,/turf/simulated/mineral/floor/ignore_mapgen,/area/submap/CrashedMedShuttle) -"bc" = (/obj/item/weapon/material/shard{icon_state = "medium"},/turf/simulated/floor/outdoors/rocks,/area/submap/CrashedMedShuttle) -"bd" = (/obj/item/stack/rods,/turf/simulated/floor/outdoors/rocks,/area/submap/CrashedMedShuttle) -"be" = (/obj/effect/spider/stickyweb,/obj/structure/girder/displaced,/obj/structure/lattice,/turf/simulated/floor/outdoors/rocks,/area/submap/CrashedMedShuttle) -"bf" = (/obj/machinery/light{dir = 8; icon_state = "tube1"; pixel_y = 0},/obj/structure/extinguisher_cabinet{pixel_x = -32},/obj/structure/lattice,/obj/item/device/gps/internal/poi,/obj/structure/flora/tree/sif,/turf/simulated/floor/outdoors/rocks,/area/submap/CrashedMedShuttle) -"bg" = (/obj/effect/decal/cleanable/blood/splatter,/obj/structure/loot_pile/surface/bones,/obj/effect/decal/cleanable/blood/drip,/obj/structure/lattice,/turf/simulated/floor/outdoors/rocks,/area/submap/CrashedMedShuttle) -"bh" = (/obj/structure/grille/broken,/obj/item/weapon/material/shard{icon_state = "medium"},/turf/simulated/floor/outdoors/rocks,/area/submap/CrashedMedShuttle) -"bi" = (/obj/effect/decal/mecha_wreckage/odysseus,/obj/effect/decal/cleanable/blood/oil,/turf/simulated/mineral/floor/ignore_mapgen,/area/submap/CrashedMedShuttle) -"bj" = (/obj/item/weapon/material/shard,/obj/effect/spider/stickyweb,/obj/item/weapon/beartrap{anchored = 1; deployed = 1; icon_state = "beartrap1"},/obj/random/trash,/turf/simulated/floor/outdoors/rocks,/area/submap/CrashedMedShuttle) -"bk" = (/obj/effect/decal/cleanable/blood/oil,/obj/structure/lattice,/turf/simulated/floor/outdoors/rocks,/area/submap/CrashedMedShuttle) -"bl" = (/obj/effect/spider/stickyweb,/obj/item/weapon/material/shard,/turf/simulated/shuttle/floor/white,/area/submap/CrashedMedShuttle) -"bm" = (/obj/random/medical,/turf/simulated/shuttle/floor/white,/area/submap/CrashedMedShuttle) -"bn" = (/mob/living/simple_animal/hostile/giant_spider/webslinger{returns_home = 1},/turf/simulated/floor/outdoors/rocks,/area/submap/CrashedMedShuttle) -"bo" = (/obj/effect/spider/cocoon,/obj/structure/lattice,/turf/simulated/floor/outdoors/rocks,/area/submap/CrashedMedShuttle) -"bp" = (/obj/structure{anchored = 1; density = 1; desc = "Once an artificial intelligence; now merely a brick of inert metal and circuits."; icon = 'icons/mob/AI.dmi'; icon_state = "ai-empty"; name = "V.I.T.A"},/turf/simulated/shuttle/floor/yellow,/area/submap/CrashedMedShuttle) -"bq" = (/obj/structure/flora/tree/sif,/turf/simulated/floor/outdoors/rocks,/area/submap/CrashedMedShuttle) -"br" = (/obj/structure/grille/broken,/obj/item/weapon/material/shard,/turf/simulated/floor/outdoors/rocks,/area/submap/CrashedMedShuttle) -"bs" = (/obj/effect/decal/cleanable/blood/drip,/obj/effect/spider/stickyweb,/mob/living/simple_animal/hostile/giant_spider/webslinger,/turf/simulated/mineral/floor/ignore_mapgen,/area/submap/CrashedMedShuttle) -"bt" = (/obj/effect/decal/cleanable/blood/drip,/turf/simulated/mineral/floor/ignore_mapgen,/area/submap/CrashedMedShuttle) -"bu" = (/obj/effect/decal/remains/tajaran,/obj/item/weapon/surgical/circular_saw,/turf/simulated/floor/outdoors/rocks,/area/submap/CrashedMedShuttle) -"bv" = (/obj/effect/decal/cleanable/blood/oil,/obj/effect/spider/stickyweb,/turf/simulated/floor/outdoors/rocks,/area/submap/CrashedMedShuttle) -"bw" = (/obj/item/weapon/material/shard,/obj/structure/loot_pile/maint/technical,/obj/structure/lattice,/turf/simulated/mineral/floor/ignore_mapgen,/area/submap/CrashedMedShuttle) -"bx" = (/obj/structure/bed/chair/office/light{dir = 8},/turf/simulated/shuttle/floor/purple,/area/submap/CrashedMedShuttle) -"by" = (/obj/item/weapon/circuitboard/broken,/turf/simulated/shuttle/floor/white,/area/submap/CrashedMedShuttle) -"bz" = (/obj/structure/girder,/turf/template_noop,/area/submap/CrashedMedShuttle) -"bA" = (/obj/structure/girder/displaced,/turf/template_noop,/area/submap/CrashedMedShuttle) -"bB" = (/obj/structure/shuttle/engine/propulsion{ icon_state = "propulsion_r"; dir = 8},/turf/simulated/floor/outdoors/rocks,/area/submap/CrashedMedShuttle) -"bC" = (/obj/structure/shuttle/engine/heater{icon_state = "heater"; dir = 8},/obj/structure/window/reinforced{dir = 4},/turf/simulated/mineral/floor/ignore_mapgen,/area/submap/CrashedMedShuttle) -"bD" = (/obj/structure/table/standard,/obj/item/weapon/storage/firstaid/adv,/turf/simulated/shuttle/floor/purple,/area/submap/CrashedMedShuttle) -"bE" = (/obj/structure/table/standard,/turf/simulated/shuttle/floor/purple,/area/submap/CrashedMedShuttle) -"bF" = (/obj/random/medical/pillbottle,/mob/living/simple_animal/hostile/giant_spider/webslinger{returns_home = 1},/turf/simulated/shuttle/floor/white,/area/submap/CrashedMedShuttle) -"bG" = (/obj/structure/table/standard,/obj/item/device/defib_kit/loaded,/turf/simulated/shuttle/floor/white,/area/submap/CrashedMedShuttle) -"bH" = (/obj/structure/table/standard,/obj/item/bodybag/cryobag,/turf/simulated/shuttle/floor/white,/area/submap/CrashedMedShuttle) -"bI" = (/obj/structure/table/standard,/obj/item/weapon/storage/box/bodybags,/turf/simulated/shuttle/floor/white,/area/submap/CrashedMedShuttle) -"bJ" = (/obj/machinery/light{dir = 1},/turf/simulated/shuttle/floor/white,/area/submap/CrashedMedShuttle) -"bK" = (/obj/structure/table/standard,/obj/item/weapon/surgical/retractor,/turf/simulated/shuttle/floor/white,/area/submap/CrashedMedShuttle) -"bL" = (/obj/item/weapon/material/shard,/obj/structure/grille,/turf/simulated/shuttle/plating,/area/submap/CrashedMedShuttle) -"bM" = (/obj/machinery/light{dir = 8},/obj/structure/table/standard,/obj/structure/loot_pile/maint/technical,/turf/simulated/shuttle/floor/purple,/area/submap/CrashedMedShuttle) -"bN" = (/obj/effect/decal/cleanable/blood/gibs/robot,/obj/effect/spider/cocoon,/turf/simulated/shuttle/floor/white,/area/submap/CrashedMedShuttle) -"bO" = (/obj/machinery/light{icon_state = "tube1"; dir = 4},/obj/structure/closet/secure_closet/medical_wall/anesthetics{pixel_x = 32},/obj/item/weapon/material/shard{icon_state = "medium"},/turf/simulated/shuttle/floor/white,/area/submap/CrashedMedShuttle) -"bP" = (/obj/machinery/light{dir = 8; icon_state = "tube1"; pixel_y = 0},/turf/simulated/shuttle/floor/white,/area/submap/CrashedMedShuttle) -"bQ" = (/obj/effect/spider/cocoon,/turf/simulated/shuttle/floor/white,/area/submap/CrashedMedShuttle) -"bR" = (/obj/effect/decal/cleanable/blood/splatter,/obj/structure/loot_pile/surface/bones,/obj/item/weapon/surgical/surgicaldrill,/turf/simulated/shuttle/floor/white,/area/submap/CrashedMedShuttle) -"bS" = (/obj/item/weapon/material/shard{icon_state = "medium"},/obj/structure/grille,/turf/simulated/shuttle/plating,/area/submap/CrashedMedShuttle) -"bT" = (/obj/structure/table/standard,/obj/item/device/reagent_scanner/adv,/turf/simulated/shuttle/floor/purple,/area/submap/CrashedMedShuttle) -"bU" = (/obj/machinery/iv_drip,/obj/item/weapon/reagent_containers/blood/empty,/turf/simulated/shuttle/floor/white,/area/submap/CrashedMedShuttle) -"bV" = (/mob/living/simple_animal/hostile/giant_spider/carrier,/turf/simulated/shuttle/floor/white,/area/submap/CrashedMedShuttle) -"bW" = (/obj/structure/table/standard,/obj/item/weapon/storage/box/masks,/turf/simulated/shuttle/floor/white,/area/submap/CrashedMedShuttle) -"bX" = (/obj/structure/table/standard,/obj/random/firstaid,/turf/simulated/shuttle/floor/white,/area/submap/CrashedMedShuttle) -"bY" = (/obj/structure/table/standard,/obj/item/weapon/storage/backpack/medic,/obj/random/medical/lite,/turf/simulated/shuttle/floor/white,/area/submap/CrashedMedShuttle) -"bZ" = (/obj/structure/table/standard,/obj/effect/spider/stickyweb,/obj/random/medical,/turf/simulated/shuttle/floor/white,/area/submap/CrashedMedShuttle) -"ca" = (/obj/structure/girder,/turf/simulated/shuttle/plating,/area/submap/CrashedMedShuttle) -"cb" = (/obj/structure/frame,/turf/simulated/shuttle/floor/white,/area/submap/CrashedMedShuttle) -"cc" = (/obj/structure/table/standard,/obj/structure/sign/periodic{pixel_y = -32},/obj/item/weapon/surgical/bonesetter,/obj/item/weapon/surgical/scalpel,/turf/simulated/shuttle/floor/white,/area/submap/CrashedMedShuttle) -"cd" = (/obj/machinery/optable,/obj/effect/decal/cleanable/blood/splatter,/obj/structure/loot_pile/surface/bones,/turf/simulated/shuttle/floor/white,/area/submap/CrashedMedShuttle) -"ce" = (/obj/structure/table/standard,/obj/item/weapon/surgical/bonegel,/obj/item/weapon/surgical/FixOVein,/turf/simulated/shuttle/floor/white,/area/submap/CrashedMedShuttle) -"cf" = (/obj/machinery/embedded_controller/radio/simple_docking_controller{frequency = 1380; id_tag = "admin_shuttle"; pixel_x = -25; pixel_y = 0; req_one_access = list(101); tag_door = "admin_shuttle_hatch"},/obj/random/mob/spider/mutant,/turf/simulated/shuttle/plating,/area/submap/CrashedMedShuttle) -"cg" = (/obj/structure/table/standard,/obj/item/weapon/storage/belt/medical/emt,/turf/simulated/shuttle/floor/white,/area/submap/CrashedMedShuttle) -"ch" = (/obj/structure/table/standard,/obj/item/weapon/storage/box/syringes,/obj/effect/spider/stickyweb,/obj/machinery/light,/turf/simulated/shuttle/floor/white,/area/submap/CrashedMedShuttle) -"ci" = (/obj/machinery/door/airlock/external{frequency = 1380; icon_state = "door_locked"; id_tag = "admin_shuttle_hatch"; locked = 1; name = "Shuttle Hatch"; req_access = null},/turf/simulated/shuttle/plating,/area/submap/CrashedMedShuttle) - -(1,1,1) = {" -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaabaaaaabacadaeafagagagaaaaaaabaa -aaaaaaababaaaaahabaiadajagakalamagagagaaaaaa -aaaaaaaaaaaaaaabanagaoapagaqakakarasagagaaaa -aaaaaaaaahaaabatauagavakawaxayavakazakafabaa -aaababaaaAabaBaCaDafakaEagaFaGaHaIaJaKaLabaa -aaabaaaaaMaNacaOaPawakaQaRagagagagagagagabaa -aaaaaaaaababaSaTaUafaVaWaXaYafabaZbabbabaaaa -aaaaaabcbdbeagagagagbfababbgbhaZaVbiababaaaa -aaaaaaabbjbkakblbmafbnbobpbqbrbsbtbuabaaaaaa -aaaaabbvbwbxakakakbyakakagbzbzbAagagagagaaaa -aAabbBbCbDbEbFakakafaQavagbGbHbIbJakbKbLabaa -aaabagagbMbxbNakbOagbPbQbyakakakavbRambSabaa -aaaaabagagbTbUbVbWagadaoagbXakbYambZcacaaaaa -aaaaaaabagcbcccdceagcfajagcgchamagcacaabaaaa -aaaaaaabagagagagagaeciciaeafagagcaabababaaaa -aaaaaaaaababababaaababaaaaaaababaaaaaaaaaaaa -"} +"aa" = (/turf/simulated/mineral/floor/ignore_mapgen,/area/submap/CrashedMedShuttle) +"ab" = (/turf/simulated/floor/outdoors/rocks,/area/submap/CrashedMedShuttle) +"ac" = (/obj/structure/lattice,/turf/simulated/floor/outdoors/rocks,/area/submap/CrashedMedShuttle) +"ad" = (/obj/effect/spider/stickyweb,/turf/simulated/shuttle/plating,/area/submap/CrashedMedShuttle) +"ae" = (/obj/structure/sign/greencross{desc = "White cross in a green field, you can get medical aid here."; name = "First-Aid"},/turf/simulated/shuttle/wall/no_join,/area/submap/CrashedMedShuttle) +"af" = (/obj/structure/grille,/obj/structure/shuttle/window,/turf/simulated/shuttle/plating,/area/submap/CrashedMedShuttle) +"ag" = (/turf/simulated/shuttle/wall,/area/submap/CrashedMedShuttle) +"ah" = (/obj/item/weapon/material/shard{icon_state = "medium"},/turf/simulated/mineral/floor/ignore_mapgen,/area/submap/CrashedMedShuttle) +"ai" = (/obj/item/weapon/material/shard{icon_state = "medium"},/obj/effect/decal/cleanable/blood/oil,/obj/structure/lattice,/turf/simulated/floor/outdoors/rocks,/area/submap/CrashedMedShuttle) +"aj" = (/obj/machinery/light/small{dir = 4; pixel_y = 0},/obj/structure/sign/warning/airlock{pixel_x = 32},/obj/effect/spider/stickyweb,/turf/simulated/shuttle/plating,/area/submap/CrashedMedShuttle) +"ak" = (/turf/simulated/shuttle/floor/white,/area/submap/CrashedMedShuttle) +"al" = (/obj/item/weapon/storage/toolbox/mechanical,/obj/machinery/light{dir = 1},/obj/structure/table/standard,/turf/simulated/shuttle/floor/white,/area/submap/CrashedMedShuttle) +"am" = (/obj/structure/table/standard,/turf/simulated/shuttle/floor/white,/area/submap/CrashedMedShuttle) +"an" = (/obj/structure/window/reinforced,/obj/effect/decal/cleanable/blood/oil,/obj/structure/loot_pile/surface/bones,/obj/structure/lattice,/turf/simulated/floor/outdoors/rocks,/area/submap/CrashedMedShuttle) +"ao" = (/obj/item/weapon/circuitboard/broken,/obj/structure/door_assembly/door_assembly_ext,/turf/simulated/shuttle/plating,/area/submap/CrashedMedShuttle) +"ap" = (/obj/structure/door_assembly/door_assembly_ext,/turf/simulated/shuttle/plating,/area/submap/CrashedMedShuttle) +"aq" = (/obj/effect/decal/cleanable/liquid_fuel,/mob/living/simple_mob/animal/giant_spider/webslinger,/turf/simulated/shuttle/floor/white,/area/submap/CrashedMedShuttle) +"ar" = (/obj/structure/closet/crate/medical,/obj/random/medical,/obj/random/medical,/turf/simulated/shuttle/floor/white,/area/submap/CrashedMedShuttle) +"as" = (/obj/structure/table/standard,/obj/machinery/cell_charger,/turf/simulated/shuttle/floor/white,/area/submap/CrashedMedShuttle) +"at" = (/obj/item/weapon/material/shard,/obj/structure/lattice,/turf/simulated/floor/outdoors/rocks,/area/submap/CrashedMedShuttle) +"au" = (/obj/structure/closet/secure_closet/personal/patient,/obj/effect/spider/stickyweb,/turf/simulated/shuttle/floor/white,/area/submap/CrashedMedShuttle) +"av" = (/obj/random/mob/spider/mutant,/turf/simulated/shuttle/floor/white,/area/submap/CrashedMedShuttle) +"aw" = (/obj/machinery/door/airlock/glass,/turf/simulated/shuttle/floor/white,/area/submap/CrashedMedShuttle) +"ax" = (/obj/effect/decal/cleanable/blood/drip,/obj/effect/decal/cleanable/liquid_fuel,/turf/simulated/shuttle/floor/white,/area/submap/CrashedMedShuttle) +"ay" = (/obj/effect/decal/cleanable/blood,/obj/effect/decal/cleanable/liquid_fuel,/turf/simulated/shuttle/floor/white,/area/submap/CrashedMedShuttle) +"az" = (/obj/effect/decal/cleanable/blood/gibs/robot,/obj/item/weapon/firstaid_arm_assembly,/mob/living/simple_mob/animal/giant_spider/frost,/turf/simulated/shuttle/floor/white,/area/submap/CrashedMedShuttle) +"aA" = (/obj/item/stack/rods,/turf/simulated/mineral/floor/ignore_mapgen,/area/submap/CrashedMedShuttle) +"aB" = (/obj/structure/lattice,/obj/item/stack/rods,/turf/simulated/floor/outdoors/rocks,/area/submap/CrashedMedShuttle) +"aC" = (/obj/effect/decal/cleanable/blood/oil,/obj/item/weapon/firstaid_arm_assembly,/turf/simulated/shuttle/floor/white,/area/submap/CrashedMedShuttle) +"aD" = (/obj/structure/closet/secure_closet/personal/patient,/turf/simulated/shuttle/floor/white,/area/submap/CrashedMedShuttle) +"aE" = (/obj/effect/decal/cleanable/blood/drip,/turf/simulated/shuttle/floor/white,/area/submap/CrashedMedShuttle) +"aF" = (/obj/structure/reagent_dispensers/fueltank,/obj/effect/decal/cleanable/liquid_fuel,/turf/simulated/shuttle/floor/white,/area/submap/CrashedMedShuttle) +"aG" = (/obj/structure/reagent_dispensers/watertank,/obj/effect/decal/cleanable/liquid_fuel,/turf/simulated/shuttle/floor/white,/area/submap/CrashedMedShuttle) +"aH" = (/obj/machinery/recharge_station,/obj/effect/decal/cleanable/liquid_fuel,/turf/simulated/shuttle/floor/white,/area/submap/CrashedMedShuttle) +"aI" = (/obj/structure/table/standard,/obj/effect/spider/stickyweb,/obj/machinery/light,/turf/simulated/shuttle/floor/white,/area/submap/CrashedMedShuttle) +"aJ" = (/obj/structure/table/standard,/obj/effect/spider/stickyweb,/turf/simulated/shuttle/floor/white,/area/submap/CrashedMedShuttle) +"aK" = (/obj/structure/table/standard,/obj/item/weapon/material/shard{icon_state = "medium"},/obj/effect/spider/stickyweb,/turf/simulated/shuttle/floor/white,/area/submap/CrashedMedShuttle) +"aL" = (/obj/structure/grille/broken,/obj/item/weapon/material/shard{icon_state = "medium"},/obj/item/stack/rods,/turf/simulated/shuttle/plating,/area/submap/CrashedMedShuttle) +"aM" = (/obj/item/weapon/material/shard,/turf/simulated/floor/outdoors/rocks,/area/submap/CrashedMedShuttle) +"aN" = (/obj/effect/decal/cleanable/blood/oil,/turf/simulated/floor/outdoors/rocks,/area/submap/CrashedMedShuttle) +"aO" = (/obj/item/weapon/material/shard{icon_state = "medium"},/obj/effect/spider/stickyweb,/mob/living/simple_mob/animal/giant_spider/carrier,/turf/simulated/shuttle/floor/white,/area/submap/CrashedMedShuttle) +"aP" = (/obj/effect/decal/cleanable/blood/gibs/robot,/turf/simulated/shuttle/floor/white,/area/submap/CrashedMedShuttle) +"aQ" = (/obj/effect/spider/stickyweb,/turf/simulated/shuttle/floor/white,/area/submap/CrashedMedShuttle) +"aR" = (/turf/simulated/shuttle/wall/no_join,/area/submap/CrashedMedShuttle) +"aS" = (/obj/effect/decal/cleanable/blood/oil,/obj/structure/loot_pile/surface/bones,/obj/structure/lattice,/turf/simulated/floor/outdoors/rocks,/area/submap/CrashedMedShuttle) +"aT" = (/obj/machinery/light,/obj/structure/table/standard,/obj/effect/spider/stickyweb,/turf/simulated/shuttle/floor/white,/area/submap/CrashedMedShuttle) +"aU" = (/obj/structure/table/standard,/obj/item/weapon/material/shard{icon_state = "medium"},/obj/random/medical,/turf/simulated/shuttle/floor/white,/area/submap/CrashedMedShuttle) +"aV" = (/obj/effect/spider/stickyweb,/turf/simulated/floor/outdoors/rocks,/area/submap/CrashedMedShuttle) +"aW" = (/obj/effect/decal/cleanable/blood/drip,/turf/simulated/floor/outdoors/rocks,/area/submap/CrashedMedShuttle) +"aX" = (/obj/machinery/computer,/turf/simulated/shuttle/floor/yellow,/area/submap/CrashedMedShuttle) +"aY" = (/obj/structure/prop/blackbox/crashed_med_shuttle,/turf/simulated/shuttle/floor/yellow,/area/submap/CrashedMedShuttle) +"aZ" = (/obj/effect/spider/stickyweb,/turf/simulated/mineral/floor/ignore_mapgen,/area/submap/CrashedMedShuttle) +"ba" = (/obj/random/mob/spider/mutant,/turf/simulated/mineral/floor/ignore_mapgen,/area/submap/CrashedMedShuttle) +"bb" = (/obj/effect/spider/cocoon,/turf/simulated/mineral/floor/ignore_mapgen,/area/submap/CrashedMedShuttle) +"bc" = (/obj/item/weapon/material/shard{icon_state = "medium"},/turf/simulated/floor/outdoors/rocks,/area/submap/CrashedMedShuttle) +"bd" = (/obj/item/stack/rods,/turf/simulated/floor/outdoors/rocks,/area/submap/CrashedMedShuttle) +"be" = (/obj/effect/spider/stickyweb,/obj/structure/girder/displaced,/obj/structure/lattice,/turf/simulated/floor/outdoors/rocks,/area/submap/CrashedMedShuttle) +"bf" = (/obj/machinery/light{dir = 8; icon_state = "tube1"; pixel_y = 0},/obj/structure/extinguisher_cabinet{pixel_x = -32},/obj/structure/lattice,/obj/item/device/gps/internal/poi,/obj/structure/flora/tree/sif,/turf/simulated/floor/outdoors/rocks,/area/submap/CrashedMedShuttle) +"bg" = (/obj/effect/decal/cleanable/blood/splatter,/obj/structure/loot_pile/surface/bones,/obj/effect/decal/cleanable/blood/drip,/obj/structure/lattice,/turf/simulated/floor/outdoors/rocks,/area/submap/CrashedMedShuttle) +"bh" = (/obj/structure/grille/broken,/obj/item/weapon/material/shard{icon_state = "medium"},/turf/simulated/floor/outdoors/rocks,/area/submap/CrashedMedShuttle) +"bi" = (/obj/effect/decal/mecha_wreckage/odysseus,/obj/effect/decal/cleanable/blood/oil,/turf/simulated/mineral/floor/ignore_mapgen,/area/submap/CrashedMedShuttle) +"bj" = (/obj/item/weapon/material/shard,/obj/effect/spider/stickyweb,/obj/item/weapon/beartrap{anchored = 1; deployed = 1; icon_state = "beartrap1"},/obj/random/trash,/turf/simulated/floor/outdoors/rocks,/area/submap/CrashedMedShuttle) +"bk" = (/obj/effect/decal/cleanable/blood/oil,/obj/structure/lattice,/turf/simulated/floor/outdoors/rocks,/area/submap/CrashedMedShuttle) +"bl" = (/obj/effect/spider/stickyweb,/obj/item/weapon/material/shard,/turf/simulated/shuttle/floor/white,/area/submap/CrashedMedShuttle) +"bm" = (/obj/random/medical,/turf/simulated/shuttle/floor/white,/area/submap/CrashedMedShuttle) +"bn" = (/mob/living/simple_mob/animal/giant_spider/webslinger,/turf/simulated/floor/outdoors/rocks,/area/submap/CrashedMedShuttle) +"bo" = (/obj/effect/spider/cocoon,/obj/structure/lattice,/turf/simulated/floor/outdoors/rocks,/area/submap/CrashedMedShuttle) +"bp" = (/obj/structure/prop/fake_ai/dead/crashed_med_shuttle,/turf/simulated/shuttle/floor/yellow,/area/submap/CrashedMedShuttle) +"bq" = (/obj/structure/flora/tree/sif,/turf/simulated/floor/outdoors/rocks,/area/submap/CrashedMedShuttle) +"br" = (/obj/structure/grille/broken,/obj/item/weapon/material/shard,/turf/simulated/floor/outdoors/rocks,/area/submap/CrashedMedShuttle) +"bs" = (/obj/effect/decal/cleanable/blood/drip,/obj/effect/spider/stickyweb,/mob/living/simple_mob/animal/giant_spider/webslinger,/turf/simulated/mineral/floor/ignore_mapgen,/area/submap/CrashedMedShuttle) +"bt" = (/obj/effect/decal/cleanable/blood/drip,/turf/simulated/mineral/floor/ignore_mapgen,/area/submap/CrashedMedShuttle) +"bu" = (/obj/effect/decal/remains/tajaran,/obj/item/weapon/surgical/circular_saw,/turf/simulated/floor/outdoors/rocks,/area/submap/CrashedMedShuttle) +"bv" = (/obj/effect/decal/cleanable/blood/oil,/obj/effect/spider/stickyweb,/turf/simulated/floor/outdoors/rocks,/area/submap/CrashedMedShuttle) +"bw" = (/obj/item/weapon/material/shard,/obj/structure/loot_pile/maint/technical,/obj/structure/lattice,/turf/simulated/mineral/floor/ignore_mapgen,/area/submap/CrashedMedShuttle) +"bx" = (/obj/structure/bed/chair/office/light{dir = 8},/turf/simulated/shuttle/floor/purple,/area/submap/CrashedMedShuttle) +"by" = (/obj/item/weapon/circuitboard/broken,/turf/simulated/shuttle/floor/white,/area/submap/CrashedMedShuttle) +"bz" = (/obj/structure/girder,/turf/template_noop,/area/submap/CrashedMedShuttle) +"bA" = (/obj/structure/girder/displaced,/turf/template_noop,/area/submap/CrashedMedShuttle) +"bB" = (/obj/structure/shuttle/engine/propulsion{icon_state = "propulsion_r"; dir = 8},/turf/simulated/floor/outdoors/rocks,/area/submap/CrashedMedShuttle) +"bC" = (/obj/structure/shuttle/engine/heater{icon_state = "heater"; dir = 8},/obj/structure/window/reinforced{dir = 4},/turf/simulated/mineral/floor/ignore_mapgen,/area/submap/CrashedMedShuttle) +"bD" = (/obj/structure/table/standard,/obj/item/weapon/storage/firstaid/adv,/turf/simulated/shuttle/floor/purple,/area/submap/CrashedMedShuttle) +"bE" = (/obj/structure/table/standard,/turf/simulated/shuttle/floor/purple,/area/submap/CrashedMedShuttle) +"bF" = (/obj/random/medical/pillbottle,/mob/living/simple_mob/animal/giant_spider/webslinger,/turf/simulated/shuttle/floor/white,/area/submap/CrashedMedShuttle) +"bG" = (/obj/structure/table/standard,/obj/item/device/defib_kit/loaded,/turf/simulated/shuttle/floor/white,/area/submap/CrashedMedShuttle) +"bH" = (/obj/structure/table/standard,/obj/item/bodybag/cryobag,/turf/simulated/shuttle/floor/white,/area/submap/CrashedMedShuttle) +"bI" = (/obj/structure/table/standard,/obj/item/weapon/storage/box/bodybags,/turf/simulated/shuttle/floor/white,/area/submap/CrashedMedShuttle) +"bJ" = (/obj/machinery/light{dir = 1},/turf/simulated/shuttle/floor/white,/area/submap/CrashedMedShuttle) +"bK" = (/obj/structure/table/standard,/obj/item/weapon/surgical/retractor,/turf/simulated/shuttle/floor/white,/area/submap/CrashedMedShuttle) +"bL" = (/obj/item/weapon/material/shard,/obj/structure/grille,/turf/simulated/shuttle/plating,/area/submap/CrashedMedShuttle) +"bM" = (/obj/machinery/light{dir = 8},/obj/structure/table/standard,/obj/structure/loot_pile/maint/technical,/turf/simulated/shuttle/floor/purple,/area/submap/CrashedMedShuttle) +"bN" = (/obj/effect/decal/cleanable/blood/gibs/robot,/obj/effect/spider/cocoon,/turf/simulated/shuttle/floor/white,/area/submap/CrashedMedShuttle) +"bO" = (/obj/machinery/light{icon_state = "tube1"; dir = 4},/obj/structure/closet/secure_closet/medical_wall/anesthetics{pixel_x = 32},/obj/item/weapon/material/shard{icon_state = "medium"},/turf/simulated/shuttle/floor/white,/area/submap/CrashedMedShuttle) +"bP" = (/obj/machinery/light{dir = 8; icon_state = "tube1"; pixel_y = 0},/turf/simulated/shuttle/floor/white,/area/submap/CrashedMedShuttle) +"bQ" = (/obj/effect/spider/cocoon,/turf/simulated/shuttle/floor/white,/area/submap/CrashedMedShuttle) +"bR" = (/obj/effect/decal/cleanable/blood/splatter,/obj/structure/loot_pile/surface/bones,/obj/item/weapon/surgical/surgicaldrill,/turf/simulated/shuttle/floor/white,/area/submap/CrashedMedShuttle) +"bS" = (/obj/item/weapon/material/shard{icon_state = "medium"},/obj/structure/grille,/turf/simulated/shuttle/plating,/area/submap/CrashedMedShuttle) +"bT" = (/obj/structure/table/standard,/obj/item/device/reagent_scanner/adv,/turf/simulated/shuttle/floor/purple,/area/submap/CrashedMedShuttle) +"bU" = (/obj/machinery/iv_drip,/obj/item/weapon/reagent_containers/blood/empty,/turf/simulated/shuttle/floor/white,/area/submap/CrashedMedShuttle) +"bV" = (/mob/living/simple_mob/animal/giant_spider/carrier,/turf/simulated/shuttle/floor/white,/area/submap/CrashedMedShuttle) +"bW" = (/obj/structure/table/standard,/obj/item/weapon/storage/box/masks,/turf/simulated/shuttle/floor/white,/area/submap/CrashedMedShuttle) +"bX" = (/obj/structure/table/standard,/obj/random/firstaid,/turf/simulated/shuttle/floor/white,/area/submap/CrashedMedShuttle) +"bY" = (/obj/structure/table/standard,/obj/item/weapon/storage/backpack/medic,/obj/random/medical/lite,/turf/simulated/shuttle/floor/white,/area/submap/CrashedMedShuttle) +"bZ" = (/obj/structure/table/standard,/obj/effect/spider/stickyweb,/obj/random/medical,/turf/simulated/shuttle/floor/white,/area/submap/CrashedMedShuttle) +"ca" = (/obj/structure/girder,/turf/simulated/shuttle/plating,/area/submap/CrashedMedShuttle) +"cb" = (/obj/structure/frame,/turf/simulated/shuttle/floor/white,/area/submap/CrashedMedShuttle) +"cc" = (/obj/structure/table/standard,/obj/structure/sign/periodic{pixel_y = -32},/obj/item/weapon/surgical/bonesetter,/obj/item/weapon/surgical/scalpel,/turf/simulated/shuttle/floor/white,/area/submap/CrashedMedShuttle) +"cd" = (/obj/machinery/optable,/obj/effect/decal/cleanable/blood/splatter,/obj/structure/loot_pile/surface/bones,/turf/simulated/shuttle/floor/white,/area/submap/CrashedMedShuttle) +"ce" = (/obj/structure/table/standard,/obj/item/weapon/surgical/bonegel,/obj/item/weapon/surgical/FixOVein,/turf/simulated/shuttle/floor/white,/area/submap/CrashedMedShuttle) +"cf" = (/obj/machinery/embedded_controller/radio/simple_docking_controller{frequency = 1380; id_tag = "admin_shuttle"; pixel_x = -25; pixel_y = 0; req_one_access = list(101); tag_door = "admin_shuttle_hatch"},/obj/random/mob/spider/mutant,/turf/simulated/shuttle/plating,/area/submap/CrashedMedShuttle) +"cg" = (/obj/structure/table/standard,/obj/item/weapon/storage/belt/medical/emt,/turf/simulated/shuttle/floor/white,/area/submap/CrashedMedShuttle) +"ch" = (/obj/structure/table/standard,/obj/item/weapon/storage/box/syringes,/obj/effect/spider/stickyweb,/obj/machinery/light,/turf/simulated/shuttle/floor/white,/area/submap/CrashedMedShuttle) +"ci" = (/obj/machinery/door/airlock/external{frequency = 1380; icon_state = "door_locked"; id_tag = "admin_shuttle_hatch"; locked = 1; name = "Shuttle Hatch"; req_access = null},/turf/simulated/shuttle/plating,/area/submap/CrashedMedShuttle) + +(1,1,1) = {" +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaabaaaaabacadaeafagagagaaaaaaabaa +aaaaaaababaaaaahabaiadajagakalamagagagaaaaaa +aaaaaaaaaaaaaaabanagaoapagaqakakarasagagaaaa +aaaaaaaaahaaabatauagavakawaxayavakazakafabaa +aaababaaaAabaBaCaDafakaEagaFaGaHaIaJaKaLabaa +aaabaaaaaMaNacaOaPawakaQaRagagagagagagagabaa +aaaaaaaaababaSaTaUafaVaWaXaYafabaZbabbabaaaa +aaaaaabcbdbeagagagagbfababbgbhaZaVbiababaaaa +aaaaaaabbjbkakblbmafbnbobpbqbrbsbtbuabaaaaaa +aaaaabbvbwbxakakakbyakakagbzbzbAagagagagaaaa +aAabbBbCbDbEbFakakafaQavagbGbHbIbJakbKbLabaa +aaabagagbMbxbNakbOagbPbQbyakakakavbRambSabaa +aaaaabagagbTbUbVbWagadaoagbXakbYambZcacaaaaa +aaaaaaabagcbcccdceagcfajagcgchamagcacaabaaaa +aaaaaaabagagagagagaeciciaeafagagcaabababaaaa +aaaaaaaaababababaaababaaaaaaababaaaaaaaaaaaa +"} diff --git a/maps/submaps/surface_submaps/mountains/Scave1.dmm b/maps/submaps/surface_submaps/mountains/Scave1.dmm index 464ab34789..e4c7de5fd0 100644 --- a/maps/submaps/surface_submaps/mountains/Scave1.dmm +++ b/maps/submaps/surface_submaps/mountains/Scave1.dmm @@ -1,942 +1,47 @@ -//MAP CONVERTED BY dmm2tgm.py THIS HEADER COMMENT PREVENTS RECONVERSION, DO NOT REMOVE -"a" = ( -/turf/template_noop, -/area/template_noop) -"b" = ( -/turf/simulated/mineral/ignore_mapgen, -/area/submap/cave/Scave1) -"c" = ( -/obj/effect/spider/stickyweb, -/turf/simulated/mineral/floor/ignore_mapgen, -/area/submap/cave/Scave1) -"d" = ( -/turf/simulated/mineral/floor/ignore_mapgen, -/area/submap/cave/Scave1) -"e" = ( -/obj/effect/spider/spiderling/frost, -/turf/simulated/mineral/floor/ignore_mapgen, -/area/submap/cave/Scave1) -"f" = ( -/obj/item/weapon/spacecash/c100, -/obj/item/weapon/spacecash/c100, -/turf/simulated/mineral/floor/ignore_mapgen, -/area/submap/cave/Scave1) -"g" = ( -/obj/item/weapon/spacecash/c100, -/obj/item/weapon/spacecash/c100, -/obj/item/weapon/spacecash/c100, -/obj/effect/decal/remains, -/turf/simulated/mineral/floor/ignore_mapgen, -/area/submap/cave/Scave1) -"h" = ( -/obj/item/weapon/grenade/spawnergrenade/spider, -/turf/simulated/mineral/floor/ignore_mapgen, -/area/submap/cave/Scave1) -"i" = ( -/mob/living/simple_animal/hostile/giant_spider/frost, -/turf/simulated/mineral/floor/ignore_mapgen, -/area/submap/cave/Scave1) -"j" = ( -/obj/random/toolbox, -/turf/simulated/mineral/floor/ignore_mapgen, -/area/submap/cave/Scave1) -"k" = ( -/obj/effect/decal/mecha_wreckage/ripley, -/turf/simulated/mineral/floor/ignore_mapgen, -/area/submap/cave/Scave1) -"l" = ( -/obj/item/mecha_parts/mecha_equipment/tool/drill/diamonddrill, -/turf/simulated/mineral/floor/ignore_mapgen, -/area/submap/cave/Scave1) -"m" = ( -/obj/item/device/flashlight, -/turf/simulated/mineral/floor/ignore_mapgen, -/area/submap/cave/Scave1) -"n" = ( -/obj/effect/spider/stickyweb, -/obj/effect/spider/stickyweb, -/turf/simulated/mineral/floor/ignore_mapgen, -/area/submap/cave/Scave1) -"p" = ( -/obj/effect/decal/remains, -/turf/simulated/mineral/floor/ignore_mapgen, -/area/submap/cave/Scave1) -"B" = ( -/obj/random/mob/spider/mutant, -/turf/simulated/mineral/floor/ignore_mapgen, -/area/submap/cave/Scave1) -"O" = ( -/obj/random/mob/spider, -/turf/simulated/mineral/floor/ignore_mapgen, -/area/submap/cave/Scave1) +"a" = (/turf/template_noop,/area/template_noop) +"b" = (/turf/simulated/mineral/ignore_mapgen,/area/submap/cave/Scave1) +"c" = (/obj/effect/spider/stickyweb,/turf/simulated/mineral/floor/ignore_mapgen,/area/submap/cave/Scave1) +"d" = (/turf/simulated/mineral/floor/ignore_mapgen,/area/submap/cave/Scave1) +"e" = (/obj/effect/spider/spiderling/frost,/turf/simulated/mineral/floor/ignore_mapgen,/area/submap/cave/Scave1) +"f" = (/obj/item/weapon/spacecash/c100,/obj/item/weapon/spacecash/c100,/turf/simulated/mineral/floor/ignore_mapgen,/area/submap/cave/Scave1) +"g" = (/obj/random/mob/spider/mutant,/turf/simulated/mineral/floor/ignore_mapgen,/area/submap/cave/Scave1) +"h" = (/obj/item/weapon/spacecash/c100,/obj/item/weapon/spacecash/c100,/obj/item/weapon/spacecash/c100,/obj/effect/decal/remains,/turf/simulated/mineral/floor/ignore_mapgen,/area/submap/cave/Scave1) +"i" = (/obj/random/mob/spider,/turf/simulated/mineral/floor/ignore_mapgen,/area/submap/cave/Scave1) +"j" = (/obj/item/weapon/grenade/spawnergrenade/spider,/turf/simulated/mineral/floor/ignore_mapgen,/area/submap/cave/Scave1) +"k" = (/obj/random/toolbox,/turf/simulated/mineral/floor/ignore_mapgen,/area/submap/cave/Scave1) +"l" = (/obj/effect/decal/mecha_wreckage/ripley,/turf/simulated/mineral/floor/ignore_mapgen,/area/submap/cave/Scave1) +"m" = (/obj/item/mecha_parts/mecha_equipment/tool/drill/diamonddrill,/turf/simulated/mineral/floor/ignore_mapgen,/area/submap/cave/Scave1) +"n" = (/obj/item/device/flashlight,/turf/simulated/mineral/floor/ignore_mapgen,/area/submap/cave/Scave1) +"o" = (/mob/living/simple_mob/animal/giant_spider/frost,/turf/simulated/mineral/floor/ignore_mapgen,/area/submap/cave/Scave1) +"p" = (/obj/effect/spider/stickyweb,/obj/effect/spider/stickyweb,/turf/simulated/mineral/floor/ignore_mapgen,/area/submap/cave/Scave1) +"q" = (/obj/effect/decal/remains,/turf/simulated/mineral/floor/ignore_mapgen,/area/submap/cave/Scave1) (1,1,1) = {" -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -"} -(2,1,1) = {" -a -a -a -b -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -"} -(3,1,1) = {" -a -a -b -b -b -b -d -d -b -b -b -b -b -b -b -b -d -m -d -d -d -p -b -b -b -a -a -"} -(4,1,1) = {" -a -a -b -b -b -b -b -b -b -b -b -b -b -b -b -b -b -d -d -d -d -d -b -b -b -a -a -"} -(5,1,1) = {" -a -a -b -b -b -b -b -b -b -b -b -b -b -b -b -b -b -b -b -d -n -b -b -b -b -a -a -"} -(6,1,1) = {" -a -b -b -b -b -b -f -g -b -b -b -b -b -b -b -b -b -b -b -n -n -b -b -b -b -b -a -"} -(7,1,1) = {" -a -b -b -b -b -d -d -f -b -b -b -b -b -b -b -b -b -b -b -d -c -b -b -b -b -b -a -"} -(8,1,1) = {" -a -a -b -b -b -e -d -b -b -b -c -c -b -b -b -b -b -b -b -d -d -b -b -b -b -b -a -"} -(9,1,1) = {" -a -a -a -b -c -d -d -b -b -d -d -d -B -d -d -d -d -d -d -e -d -b -b -b -b -b -a -"} -(10,1,1) = {" -a -a -a -b -b -d -d -O -d -d -d -d -d -d -c -d -d -d -d -d -d -d -b -b -b -a -a -"} -(11,1,1) = {" -a -a -b -b -b -b -c -d -d -d -d -c -c -d -d -d -d -b -d -d -B -d -c -b -b -b -a -"} -(12,1,1) = {" -a -a -b -b -b -b -b -d -c -b -b -b -b -b -b -b -b -b -b -d -d -d -d -b -b -b -a -"} -(13,1,1) = {" -a -a -b -b -b -b -b -d -d -b -b -b -b -b -b -b -b -b -b -b -d -d -d -b -b -b -a -"} -(14,1,1) = {" -a -a -b -b -b -c -d -d -d -b -b -b -b -b -b -b -b -b -b -b -c -d -d -b -b -b -a -"} -(15,1,1) = {" -a -a -b -b -b -c -e -d -d -j -b -b -b -b -b -b -b -b -b -b -b -d -c -b -b -b -a -"} -(16,1,1) = {" -a -a -a -b -b -c -d -d -d -c -b -b -b -b -b -b -b -b -b -b -c -d -d -b -b -b -a -"} -(17,1,1) = {" -a -a -a -b -b -b -b -b -d -d -b -b -b -b -b -b -b -b -b -b -d -d -d -b -b -b -a -"} -(18,1,1) = {" -a -a -a -b -b -b -b -c -d -d -c -b -b -k -l -c -b -b -b -b -d -d -d -B -b -a -a -"} -(19,1,1) = {" -a -a -a -b -b -b -b -c -d -d -d -d -d -d -d -d -c -b -b -b -d -d -d -b -b -a -a -"} -(20,1,1) = {" -a -a -a -b -b -b -b -e -d -d -d -O -d -d -d -d -c -i -b -b -d -d -d -b -b -b -a -"} -(21,1,1) = {" -a -a -a -b -b -b -b -d -d -d -d -d -d -d -B -d -d -c -b -d -d -c -c -b -b -b -a -"} -(22,1,1) = {" -a -a -a -b -b -d -d -d -d -d -d -d -d -d -d -d -d -d -d -e -c -b -b -b -b -b -a -"} -(23,1,1) = {" -a -a -b -b -b -d -B -d -d -b -c -c -c -c -c -c -d -d -d -d -b -b -b -b -b -b -a -"} -(24,1,1) = {" -a -a -b -b -b -d -d -b -b -b -b -b -b -b -b -b -b -b -b -b -b -b -b -b -b -b -a -"} -(25,1,1) = {" -a -a -b -b -d -e -d -d -h -b -b -b -b -b -b -b -b -b -b -b -b -b -b -b -b -b -a -"} -(26,1,1) = {" -a -a -b -b -b -d -d -e -B -b -b -b -b -b -b -b -b -b -d -d -d -d -b -b -b -a -a -"} -(27,1,1) = {" -a -a -b -b -b -d -d -d -b -b -b -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -"} -(28,1,1) = {" -a -a -a -a -b -b -b -b -b -b -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -"} -(29,1,1) = {" -a -a -a -a -a -a -a -b -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -"} -(30,1,1) = {" -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -"} +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaabbaaaaaaaaaaaaaaaaaaaaaaa +aabbbbbbaabbbbbaaaaaaabbbbbaaa +abbbbbbbbbbbbbbbbbbbbbbbbbbaaa +aabbbbbbcbbbbbbbbbbbbbbbdbbbaa +aabbbbdeddbbbcccbbbbbdddeddbaa +aadbbfddddcbbdedbbbbbdgddddbaa +aadbbhfbbiddddddbccedddbdedbba +aabbbbbbbddcdddddddddddbjgbbaa +aabbbbbbdddbbbkcddddddbbbbbbaa +aabbbbbcdddbbbbbbcddddcbbbbaaa +aabbbbbcddcbbbbbbbdiddcbbbaaaa +aabbbbbbgdcbbbbbbbddddcbbbaaaa +aabbbbbbdddbbbbbblddddcbbbaaaa +aabbbbbbdcdbbbbbbmddgdcbbbaaaa +aabbbbbbdddbbbbbbcddddcbbbaaaa +aadbbbbbdddbbbbbbbccdddbbbaaaa +aandbbbbddbbbbbbbbbocddbbbaaaa +aaddbbbbdddbbbbbbbbbbddbbdaaaa +aadddpddedddbbbbbbbbdedbbdaaaa +aaddppcdddgddcbcdddddcbbbdaaaa +aaqdbbbbbdddddddddddcbbbbdaaaa +aabbbbbbbbcdddcdddddcbbbbbaaaa +aabbbbbbbbbbbbbbbgbbbbbbbbaaaa +aabbbbbbbbbbbbbbbbbbbbbbbbaaaa +aaaaabbbbabbbbbbbaabbbbbbaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +"} \ No newline at end of file diff --git a/maps/submaps/surface_submaps/mountains/SwordCave.dmm b/maps/submaps/surface_submaps/mountains/SwordCave.dmm index 8c15e58da8..142c35a3af 100644 --- a/maps/submaps/surface_submaps/mountains/SwordCave.dmm +++ b/maps/submaps/surface_submaps/mountains/SwordCave.dmm @@ -1,55 +1,1808 @@ -"a" = (/turf/template_noop,/area/template_noop) -"b" = (/turf/simulated/mineral,/area/submap/cave/swordcave) -"c" = (/turf/simulated/mineral/floor/ignore_mapgen,/area/submap/cave/swordcave) -"d" = (/obj/machinery/crystal,/turf/simulated/mineral/floor/ignore_mapgen,/area/submap/cave/swordcave) -"e" = (/turf/simulated/floor/water,/area/submap/cave/swordcave) -"f" = (/turf/simulated/floor/water/deep,/area/submap/cave/swordcave) -"g" = (/obj/structure/ghost_pod/manual/cursedblade,/turf/simulated/mineral/floor/ignore_mapgen,/area/submap/cave/swordcave) -"h" = (/mob/living/simple_animal/hostile/faithless/cult,/turf/simulated/mineral/floor/ignore_mapgen,/area/submap/cave/swordcave) -"i" = (/obj/item/device/gps/explorer,/turf/simulated/mineral/floor/ignore_mapgen,/area/submap/cave/swordcave) -"j" = (/obj/structure/loot_pile/surface/bones,/turf/simulated/mineral/floor/ignore_mapgen,/area/submap/cave/swordcave) -"k" = (/mob/living/simple_animal/hostile/scarybat/cult,/turf/simulated/mineral/floor/ignore_mapgen,/area/submap/cave/swordcave) +//MAP CONVERTED BY dmm2tgm.py THIS HEADER COMMENT PREVENTS RECONVERSION, DO NOT REMOVE +"a" = ( +/turf/template_noop, +/area/template_noop) +"b" = ( +/turf/simulated/mineral, +/area/submap/cave/swordcave) +"c" = ( +/turf/simulated/mineral/floor/ignore_mapgen, +/area/submap/cave/swordcave) +"d" = ( +/obj/machinery/crystal, +/turf/simulated/mineral/floor/ignore_mapgen, +/area/submap/cave/swordcave) +"e" = ( +/turf/simulated/floor/water, +/area/submap/cave/swordcave) +"f" = ( +/turf/simulated/floor/water/deep, +/area/submap/cave/swordcave) +"g" = ( +/obj/structure/ghost_pod/manual/cursedblade, +/turf/simulated/mineral/floor/ignore_mapgen, +/area/submap/cave/swordcave) +"h" = ( +/mob/living/simple_mob/faithless/cult, +/turf/simulated/mineral/floor/ignore_mapgen, +/area/submap/cave/swordcave) +"i" = ( +/obj/item/device/gps/explorer/on, +/turf/simulated/mineral/floor/ignore_mapgen, +/area/submap/cave/swordcave) +"j" = ( +/obj/structure/loot_pile/surface/bones, +/turf/simulated/mineral/floor/ignore_mapgen, +/area/submap/cave/swordcave) +"k" = ( +/mob/living/simple_mob/animal/space/bats, +/turf/simulated/mineral/floor/ignore_mapgen, +/area/submap/cave/swordcave) +"l" = ( +/mob/living/simple_mob/animal/space/bats/cult, +/turf/simulated/mineral/floor/ignore_mapgen, +/area/submap/cave/swordcave) (1,1,1) = {" -aaaaaaaabbbbbbbbbbbbbbbbbbbbbbbbbbbaaaaaa -aaaaabbbbbbbbbbbcccdccccbbbbbbbbbbbbaaaaa -aaaabbbbbbcccccccccccccccccccccbbbbbbaaaa -aaabbbbbbcccccccccccccccccccccccdbbbbbaaa -aabbbbccccccceeeeeeeeeeeeeccccccccbbbbbaa -aabbbccccccceeeeeeeeeeeeeeeccccccccbbbbaa -aabbbcdcccceeeffffffffffffeeeccccccbbbbaa -aabbbccccceefeeeeeeefeeeeeeeeecccccbbbbaa -aabbbccccceefeeccceeeeeeeefffeeccccbbbaaa -aabbbcccceeffeecccccecccceefffeecccbbbaaa -aabbbcccceeffeeeccgcccchcceeffeecccbbbaaa -aabbbcccdeeffeeccijcdccccceefeeccdcbbbaaa -abbbccccceefffeeeccccccceeefeeccccccbbaaa -abbbcccccceefffeeeccccceeeffeeccccccbbbaa -abbbcdccccceefffeeeeeeeeffffeeccccccbbbaa -abbcccckcccceeffffeeeeefffffeeccccccbbbaa -abbcccccccccceeffffffffffffeeccccdccbbbaa -abbccccccccccceeffeeeeeefffeecccccccbbbaa -abbbccccdcccccceefeeeeeeeeeeckccccccbbbaa -abbbcccccccccccceeecccdceeecccccccccbbaaa -abbbcccccccccccccecccccccceccccdckccbbaaa -abbbcccccccccckcccccccccccccccccccccbbaaa -abbbbcccccckccccccccccccccckccccccccbbaaa -abbbbbcccccccccccccccckccccccccckcccbbaaa -aabbbbbccccccccccccccccccccccccccccbbbaaa -aabbbbbccccccccccccdccccccccccccccbbbbaaa -aabbbbbcccccdccccccccccccccccccccbbbbbaaa -aabbbbbccccccccccckccccccccdcccccbbbbaaaa -aabbbbbbbccccccccccccccccccccccccbbbbaaaa -aaabbbbbbbcccccccccccccccdccccccbbbbaaaaa -aaaabbbbbbcckcccccdcccccccccccccbbbbaaaaa -aaaaabbbbbcccccccccccccccccccccbbbbbaaaaa -aaaaabbbbbccccccccccccccccccccbbbbbaaaaaa -aaaaaabbbbbcccdccccccccccccccbbbbbaaaaaaa -aaaaaaabbbbbcccccccckccccckcbbbbbbaaaaaaa -aaaaaaabbbbbbcccccccccccccccbbbbbaaaaaaaa -aaaaaaabbbbbbbbbbbbccccccccccbbbaaaaaaaaa -aaaaaaaaabbbbbbbbbbbccccccccccbaaaaaaaaaa -aaaaaaaaaaabbbbbbbbbbccccccccccaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaacccdccccaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaccccccaaaaaaaaaaaa +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +"} +(2,1,1) = {" +a +a +a +a +a +a +a +a +a +a +a +a +b +b +b +b +b +b +b +b +b +b +b +b +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +"} +(3,1,1) = {" +a +a +a +a +b +b +b +b +b +b +b +b +b +b +b +b +b +b +b +b +b +b +b +b +b +b +b +b +b +a +a +a +a +a +a +a +a +a +a +a +a +"} +(4,1,1) = {" +a +a +a +b +b +b +b +b +b +b +b +b +b +b +b +c +c +c +b +b +b +b +b +b +b +b +b +b +b +b +a +a +a +a +a +a +a +a +a +a +a +"} +(5,1,1) = {" +a +a +b +b +b +b +b +b +b +b +b +b +c +c +c +c +c +c +c +c +c +c +b +b +b +b +b +b +b +b +b +a +a +a +a +a +a +a +a +a +a +"} +(6,1,1) = {" +a +b +b +b +b +c +c +c +c +c +c +c +c +c +d +c +c +c +c +c +c +c +c +b +b +b +b +b +b +b +b +b +b +a +a +a +a +a +a +a +a +"} +(7,1,1) = {" +a +b +b +b +c +c +d +c +c +c +c +c +c +c +c +c +c +c +c +c +c +c +c +c +b +b +b +b +b +b +b +b +b +b +a +a +a +a +a +a +a +"} +(8,1,1) = {" +a +b +b +b +c +c +c +c +c +c +c +c +c +c +c +l +c +c +c +c +c +c +c +c +c +c +c +c +b +b +b +b +b +b +b +b +b +a +a +a +a +"} +(9,1,1) = {" +b +b +b +b +c +c +c +c +c +c +c +d +c +c +c +c +c +c +d +c +c +c +c +c +c +c +c +c +b +b +b +b +b +b +b +b +b +a +a +a +a +"} +(10,1,1) = {" +b +b +b +c +c +c +c +c +c +e +e +e +e +c +c +c +c +c +c +c +c +c +c +c +c +c +c +c +c +b +b +b +b +b +b +b +b +b +a +a +a +"} +(11,1,1) = {" +b +b +c +c +c +c +c +e +e +e +e +e +e +e +c +c +c +c +c +c +c +c +c +c +c +c +c +c +c +c +c +c +c +b +b +b +b +b +a +a +a +"} +(12,1,1) = {" +b +b +c +c +c +c +e +e +e +f +f +f +f +e +e +c +c +c +c +c +c +c +l +c +c +c +c +c +c +c +c +c +c +c +b +b +b +b +b +a +a +"} +(13,1,1) = {" +b +b +c +c +c +e +e +f +f +f +f +f +f +f +e +e +c +c +c +c +c +c +c +c +c +c +d +c +c +c +l +c +c +c +c +b +b +b +b +a +a +"} +(14,1,1) = {" +b +b +c +c +e +e +e +e +e +e +e +e +f +f +f +e +e +c +c +c +c +c +c +c +c +c +c +c +c +c +c +c +c +c +c +c +b +b +b +a +a +"} +(15,1,1) = {" +b +b +c +c +e +e +f +e +e +e +e +e +e +f +f +f +e +e +c +c +c +l +c +c +c +c +c +c +c +c +c +c +c +d +c +c +b +b +b +a +a +"} +(16,1,1) = {" +b +b +c +c +e +e +f +e +c +c +e +c +e +e +f +f +f +e +e +c +c +c +c +c +c +c +c +c +c +c +c +c +c +c +c +c +b +b +b +a +a +"} +(17,1,1) = {" +b +c +c +c +e +e +f +e +c +c +c +c +e +e +e +f +f +f +e +e +c +c +c +c +c +c +c +c +c +c +c +c +c +c +c +c +b +b +b +a +a +"} +(18,1,1) = {" +b +c +c +c +e +e +f +e +c +c +c +i +c +e +e +f +f +f +f +e +e +c +c +c +c +c +c +c +c +c +c +c +c +c +c +c +b +b +b +a +a +"} +(19,1,1) = {" +b +c +c +c +e +e +f +e +e +c +g +j +c +c +e +e +f +e +e +e +c +c +c +c +c +c +c +l +c +c +d +c +c +c +c +c +b +b +b +a +a +"} +(20,1,1) = {" +b +d +c +c +e +e +f +e +e +c +c +c +c +c +e +e +f +e +e +c +c +c +c +c +c +d +c +c +c +c +c +c +c +c +c +c +c +b +b +a +a +"} +(21,1,1) = {" +b +c +c +c +e +e +f +f +e +e +c +d +c +c +e +e +f +e +e +c +c +c +c +c +c +c +c +c +c +c +c +c +c +c +l +c +c +c +b +a +a +"} +(22,1,1) = {" +b +c +c +c +e +e +f +e +e +c +c +c +c +c +e +e +f +e +e +c +c +c +c +c +c +c +c +c +c +c +c +c +c +c +c +c +c +c +c +a +a +"} +(23,1,1) = {" +b +c +c +c +e +e +f +e +e +c +c +c +c +c +e +e +f +e +e +d +c +c +c +l +c +c +c +c +c +c +c +c +c +c +c +c +c +c +c +c +a +"} +(24,1,1) = {" +b +c +c +c +e +e +f +e +e +c +h +c +c +e +e +f +f +e +e +c +c +c +c +c +c +c +c +c +c +c +c +c +c +c +c +c +c +c +c +c +c +"} +(25,1,1) = {" +b +b +c +c +e +e +f +e +e +c +c +c +e +e +f +f +f +f +e +e +c +c +c +c +c +c +c +c +c +c +c +c +c +c +c +c +c +c +c +c +c +"} +(26,1,1) = {" +b +b +c +c +e +e +f +e +e +e +c +c +e +e +f +f +f +f +e +e +c +c +c +c +c +c +c +c +c +d +c +c +c +c +c +c +c +c +c +d +c +"} +(27,1,1) = {" +b +b +c +c +c +e +e +e +f +e +e +e +e +f +f +f +f +f +e +e +e +c +c +c +c +c +c +c +c +c +c +c +c +c +l +c +c +c +c +c +c +"} +(28,1,1) = {" +b +b +c +c +c +c +e +e +f +f +e +e +f +f +f +f +e +e +e +c +c +c +l +c +c +c +c +d +c +c +c +c +c +c +c +c +c +c +c +c +c +"} +(29,1,1) = {" +b +b +c +c +c +c +e +e +f +f +f +f +e +e +e +e +e +e +c +c +c +c +c +c +c +c +c +c +c +c +c +c +c +c +b +b +c +c +c +c +c +"} +(30,1,1) = {" +b +b +c +c +c +c +c +e +e +f +f +e +e +e +e +e +c +c +k +c +c +c +c +c +c +c +c +c +c +c +c +c +c +b +b +b +b +c +c +c +a +"} +(31,1,1) = {" +b +b +c +c +c +c +c +c +e +e +e +e +c +c +c +c +c +c +c +c +c +c +c +c +c +c +c +c +c +c +c +c +b +b +b +b +b +b +c +a +a +"} +(32,1,1) = {" +b +b +b +c +c +c +c +c +c +e +e +c +c +c +c +c +c +c +c +c +d +c +c +c +c +c +c +c +c +c +c +b +b +b +b +b +b +a +a +a +a +"} +(33,1,1) = {" +b +b +b +d +c +c +c +c +c +c +c +c +c +c +c +c +c +c +c +c +c +c +c +l +c +c +c +c +c +b +b +b +b +b +b +b +a +a +a +a +a +"} +(34,1,1) = {" +b +b +b +b +c +c +c +c +c +c +c +d +c +c +c +c +d +c +c +c +l +c +c +c +c +c +b +b +b +b +b +b +b +b +b +a +a +a +a +a +a +"} +(35,1,1) = {" +b +b +b +b +b +c +c +c +c +c +c +c +c +c +c +c +c +c +c +c +c +c +c +c +c +b +b +b +b +b +b +b +b +a +a +a +a +a +a +a +a +"} +(36,1,1) = {" +a +b +b +b +b +b +b +b +b +b +b +b +c +c +c +c +c +c +c +c +c +c +c +c +b +b +b +b +b +b +b +b +a +a +a +a +a +a +a +a +a +"} +(37,1,1) = {" +a +a +b +b +b +b +b +b +b +b +b +b +b +b +b +b +b +b +b +b +b +b +b +b +b +b +b +b +b +a +a +a +a +a +a +a +a +a +a +a +a +"} +(38,1,1) = {" +a +a +a +b +b +b +b +b +b +b +b +b +b +b +b +b +b +b +b +b +b +b +b +b +b +b +b +a +a +a +a +a +a +a +a +a +a +a +a +a +a +"} +(39,1,1) = {" +a +a +a +a +b +b +b +b +a +a +a +a +a +b +b +b +b +b +b +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +"} +(40,1,1) = {" +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +"} +(41,1,1) = {" +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a "} diff --git a/maps/submaps/surface_submaps/mountains/crashedcontainmentshuttle.dmm b/maps/submaps/surface_submaps/mountains/crashedcontainmentshuttle.dmm index 79440f618f..9b19efeea7 100644 --- a/maps/submaps/surface_submaps/mountains/crashedcontainmentshuttle.dmm +++ b/maps/submaps/surface_submaps/mountains/crashedcontainmentshuttle.dmm @@ -1,121 +1,121 @@ -"aa" = (/turf/template_noop,/area/submap/crashedcontainmentshuttle) -"ab" = (/turf/simulated/shuttle/wall/dark/hard_corner,/area/submap/crashedcontainmentshuttle) -"ac" = (/turf/simulated/shuttle/wall/dark,/area/submap/crashedcontainmentshuttle) -"ad" = (/turf/simulated/shuttle/floor/black,/area/submap/crashedcontainmentshuttle) -"ae" = (/turf/simulated/shuttle/floor/yellow,/area/submap/crashedcontainmentshuttle) -"af" = (/turf/simulated/shuttle/floor/red,/area/submap/crashedcontainmentshuttle) -"ag" = (/turf/simulated/shuttle/floor/white,/area/submap/crashedcontainmentshuttle) -"ah" = (/obj/structure/grille,/obj/item/weapon/material/shard{icon_state = "medium"},/turf/simulated/floor/plating,/area/submap/crashedcontainmentshuttle) -"ai" = (/obj/structure/grille,/obj/item/weapon/material/shard{icon_state = "medium"},/turf/simulated/mineral/floor/ignore_mapgen,/area/submap/crashedcontainmentshuttle) -"aj" = (/obj/random/landmine,/turf/simulated/mineral/floor/ignore_mapgen,/area/submap/crashedcontainmentshuttle) -"ak" = (/obj/structure/door_assembly/door_assembly_ext{anchored = 1},/turf/simulated/floor/plating,/area/submap/crashedcontainmentshuttle) -"al" = (/obj/item/weapon/material/shard{icon_state = "medium"},/turf/simulated/mineral/floor/ignore_mapgen,/area/submap/crashedcontainmentshuttle) -"am" = (/obj/item/weapon/material/shard,/turf/template_noop,/area/submap/crashedcontainmentshuttle) -"an" = (/obj/structure/girder,/turf/simulated/floor/plating,/area/submap/crashedcontainmentshuttle) -"ao" = (/turf/simulated/floor/plating,/area/submap/crashedcontainmentshuttle) -"ap" = (/obj/structure/lattice,/turf/simulated/mineral/floor/ignore_mapgen,/area/submap/crashedcontainmentshuttle) -"aq" = (/obj/item/weapon/material/shard,/turf/simulated/mineral/floor/ignore_mapgen,/area/submap/crashedcontainmentshuttle) -"ar" = (/obj/structure/grille,/obj/item/weapon/material/shard,/turf/simulated/floor/plating,/area/submap/crashedcontainmentshuttle) -"as" = (/obj/item/weapon/material/shard,/turf/simulated/floor/plating,/area/submap/crashedcontainmentshuttle) -"at" = (/obj/item/stack/rods,/turf/simulated/mineral/floor/ignore_mapgen,/area/submap/crashedcontainmentshuttle) -"au" = (/obj/item/stack/rods,/turf/simulated/shuttle/floor/black,/area/submap/crashedcontainmentshuttle) -"av" = (/obj/structure/closet/walllocker/emerglocker/east,/turf/simulated/shuttle/floor/black,/area/submap/crashedcontainmentshuttle) -"aw" = (/obj/structure/frame,/turf/simulated/shuttle/floor/black,/area/submap/crashedcontainmentshuttle) -"ax" = (/obj/item/frame/mirror,/obj/item/weapon/material/shard{icon_state = "medium"},/turf/simulated/shuttle/wall/dark,/area/submap/crashedcontainmentshuttle) -"ay" = (/obj/effect/decal/mecha_wreckage/gygax{anchored = 1},/turf/simulated/shuttle/floor/black,/area/submap/crashedcontainmentshuttle) -"az" = (/obj/effect/gibspawner/generic,/turf/simulated/shuttle/floor/black,/area/submap/crashedcontainmentshuttle) -"aA" = (/obj/structure/closet/medical_wall,/turf/simulated/shuttle/wall/dark,/area/submap/crashedcontainmentshuttle) -"aB" = (/obj/structure/largecrate/animal/crashedshuttle,/turf/simulated/shuttle/floor/red,/area/submap/crashedcontainmentshuttle) -"aC" = (/turf/simulated/mineral/floor/ignore_mapgen,/area/submap/crashedcontainmentshuttle) -"aD" = (/obj/structure/door_assembly/door_assembly_ext,/turf/simulated/mineral/floor/ignore_mapgen,/area/submap/crashedcontainmentshuttle) -"aE" = (/obj/structure/extinguisher_cabinet,/turf/simulated/shuttle/wall/dark,/area/submap/crashedcontainmentshuttle) -"aF" = (/obj/machinery/computer,/turf/simulated/shuttle/floor/yellow,/area/submap/crashedcontainmentshuttle) -"aG" = (/obj/structure/loot_pile/maint/technical,/turf/simulated/mineral/floor/ignore_mapgen,/area/submap/crashedcontainmentshuttle) -"aH" = (/obj/structure/frame/computer,/turf/simulated/shuttle/floor/yellow,/area/submap/crashedcontainmentshuttle) -"aI" = (/obj/structure/grille{density = 0; icon_state = "brokengrille"},/obj/item/stack/rods,/turf/simulated/floor/plating,/area/submap/crashedcontainmentshuttle) -"aJ" = (/obj/item/stack/rods,/turf/simulated/floor/plating,/area/submap/crashedcontainmentshuttle) -"aK" = (/obj/structure/grille{density = 0; icon_state = "brokengrille"},/obj/item/weapon/material/shard{icon_state = "medium"},/obj/item/stack/rods,/turf/simulated/floor/plating,/area/submap/crashedcontainmentshuttle) -"aL" = (/obj/item/weapon/circuitboard/broken,/turf/simulated/shuttle/floor/black,/area/submap/crashedcontainmentshuttle) -"aM" = (/obj/structure/frame,/obj/item/weapon/circuitboard/broken,/turf/simulated/shuttle/floor/black,/area/submap/crashedcontainmentshuttle) -"aN" = (/obj/structure/table/steel_reinforced,/turf/simulated/shuttle/floor/black,/area/submap/crashedcontainmentshuttle) -"aO" = (/obj/structure/closet/walllocker/emerglocker/north,/obj/structure/frame,/obj/item/weapon/circuitboard/broken,/turf/simulated/shuttle/floor/white,/area/submap/crashedcontainmentshuttle) -"aP" = (/turf/simulated/floor/outdoors/rocks,/area/submap/crashedcontainmentshuttle) -"aQ" = (/obj/structure/grille{density = 0; icon_state = "brokengrille"},/obj/structure/lattice,/turf/simulated/mineral/floor/ignore_mapgen,/area/submap/crashedcontainmentshuttle) -"aR" = (/obj/structure/shuttle/engine/heater{dir = 8},/obj/structure/window/reinforced{dir = 4; health = 1e+006},/turf/template_noop,/area/submap/crashedcontainmentshuttle) -"aS" = (/obj/structure/door_assembly/door_assembly_highsecurity{anchored = 1},/turf/simulated/shuttle/floor/black,/area/submap/crashedcontainmentshuttle) -"aT" = (/obj/structure/loot_pile/maint/technical,/turf/simulated/shuttle/floor/yellow,/area/submap/crashedcontainmentshuttle) -"aU" = (/obj/structure/loot_pile/maint/technical,/turf/simulated/shuttle/floor/white,/area/submap/crashedcontainmentshuttle) -"aV" = (/obj/structure/shuttle/engine/propulsion{dir = 8},/turf/simulated/mineral/floor/ignore_mapgen,/area/submap/crashedcontainmentshuttle) -"aW" = (/obj/structure/loot_pile/maint/technical,/turf/simulated/shuttle/floor/black,/area/submap/crashedcontainmentshuttle) -"aX" = (/obj/item/weapon/circuitboard/broken,/turf/simulated/mineral/floor/ignore_mapgen,/area/submap/crashedcontainmentshuttle) -"aY" = (/obj/item/clothing/suit/space/cult,/turf/simulated/mineral/floor/ignore_mapgen,/area/submap/crashedcontainmentshuttle) -"aZ" = (/obj/effect/decal/remains/robot,/turf/simulated/mineral/floor/ignore_mapgen,/area/submap/crashedcontainmentshuttle) -"ba" = (/obj/effect/decal/remains/human,/obj/effect/gibspawner/human,/turf/simulated/mineral/floor/ignore_mapgen,/area/submap/crashedcontainmentshuttle) -"bb" = (/obj/effect/decal/cleanable/blood/drip,/turf/simulated/shuttle/floor/black,/area/submap/crashedcontainmentshuttle) -"bc" = (/obj/structure/door_assembly,/turf/simulated/shuttle/floor/white,/area/submap/crashedcontainmentshuttle) -"bd" = (/obj/item/clothing/head/helmet/space/cult,/turf/simulated/mineral/floor/ignore_mapgen,/area/submap/crashedcontainmentshuttle) -"be" = (/obj/item/weapon/material/knife/ritual,/turf/simulated/mineral/floor/ignore_mapgen,/area/submap/crashedcontainmentshuttle) -"bf" = (/obj/structure/bed/chair/office/dark{dir = 8},/obj/effect/decal/remains/human,/turf/simulated/mineral/floor/ignore_mapgen,/area/submap/crashedcontainmentshuttle) -"bg" = (/obj/effect/gibspawner/generic,/turf/template_noop,/area/submap/crashedcontainmentshuttle) -"bh" = (/obj/effect/decal/remains/human,/turf/simulated/shuttle/floor/yellow,/area/submap/crashedcontainmentshuttle) -"bi" = (/obj/item/weapon/circuitboard/broken,/obj/effect/decal/remains/human,/obj/item/weapon/gun/energy/laser,/turf/simulated/shuttle/floor/black,/area/submap/crashedcontainmentshuttle) -"bj" = (/obj/item/device/gps/internal/poi,/turf/simulated/shuttle/floor/red,/area/submap/crashedcontainmentshuttle) -"bk" = (/obj/effect/decal/cleanable/vomit,/turf/simulated/shuttle/floor/black,/area/submap/crashedcontainmentshuttle) -"bl" = (/obj/effect/decal/remains/robot,/turf/simulated/shuttle/floor/red,/area/submap/crashedcontainmentshuttle) -"bm" = (/obj/effect/decal/cleanable/liquid_fuel,/turf/template_noop,/area/submap/crashedcontainmentshuttle) -"bn" = (/obj/effect/decal/cleanable/vomit,/turf/simulated/shuttle/floor/white,/area/submap/crashedcontainmentshuttle) -"bo" = (/obj/effect/decal/cleanable/blood/drip,/turf/template_noop,/area/submap/crashedcontainmentshuttle) -"bp" = (/obj/structure/bed/chair/office/dark{dir = 4},/turf/simulated/shuttle/floor/yellow,/area/submap/crashedcontainmentshuttle) -"bq" = (/obj/item/weapon/circuitboard/broken,/obj/structure/bed/chair/office/dark{dir = 4},/turf/simulated/shuttle/floor/yellow,/area/submap/crashedcontainmentshuttle) -"br" = (/obj/effect/decal/cleanable/blood/drip,/obj/effect/decal/cleanable/blood/drip,/obj/effect/decal/cleanable/blood/drip,/turf/simulated/shuttle/floor/yellow,/area/submap/crashedcontainmentshuttle) -"bs" = (/obj/structure/table/steel_reinforced,/turf/simulated/shuttle/floor/yellow,/area/submap/crashedcontainmentshuttle) -"bt" = (/obj/structure/shuttle/engine/heater{dir = 8},/obj/structure/window/reinforced{dir = 4; health = 1e+006},/turf/simulated/mineral/floor/ignore_mapgen,/area/submap/crashedcontainmentshuttle) -"bu" = (/obj/structure/door_assembly/door_assembly_ext{anchored = 1},/turf/simulated/mineral/floor/ignore_mapgen,/area/submap/crashedcontainmentshuttle) -"bv" = (/obj/effect/decal/cleanable/blood/oil,/turf/simulated/shuttle/floor/red,/area/submap/crashedcontainmentshuttle) -"bw" = (/obj/item/weapon/material/knife/ritual,/obj/effect/decal/cleanable/blood,/turf/simulated/shuttle/floor/red,/area/submap/crashedcontainmentshuttle) -"bx" = (/turf/simulated/shuttle/wall/dark/no_join,/area/submap/crashedcontainmentshuttle) -"by" = (/obj/random/landmine,/obj/random/landmine,/turf/simulated/shuttle/floor/black,/area/submap/crashedcontainmentshuttle) -"bz" = (/obj/effect/decal/remains/human,/obj/item/clothing/head/helmet/space/cult,/obj/effect/decal/cleanable/blood,/turf/simulated/shuttle/floor/red,/area/submap/crashedcontainmentshuttle) -"bA" = (/obj/effect/decal/cleanable/blood/drip,/obj/effect/decal/cleanable/blood/drip,/turf/simulated/shuttle/floor/white,/area/submap/crashedcontainmentshuttle) -"bB" = (/obj/structure/sink{icon_state = "sink"; dir = 8; pixel_x = -12; pixel_y = 2},/obj/effect/decal/cleanable/blood/drip,/obj/effect/decal/cleanable/blood/drip,/turf/simulated/shuttle/floor/white,/area/submap/crashedcontainmentshuttle) -"bC" = (/obj/effect/decal/cleanable/liquid_fuel,/turf/simulated/shuttle/floor/black,/area/submap/crashedcontainmentshuttle) -"bD" = (/obj/structure/shuttle/engine/propulsion{icon_state = "burst_r"},/turf/simulated/mineral/floor/ignore_mapgen,/area/submap/crashedcontainmentshuttle) -"bE" = (/obj/effect/decal/cleanable/blood/drip,/obj/effect/decal/cleanable/blood/drip,/turf/simulated/shuttle/floor/black,/area/submap/crashedcontainmentshuttle) -"bF" = (/obj/effect/decal/cleanable/blood/drip,/turf/simulated/shuttle/floor/white,/area/submap/crashedcontainmentshuttle) -"bG" = (/obj/effect/decal/cleanable/liquid_fuel,/obj/random/landmine,/turf/simulated/mineral/floor/ignore_mapgen,/area/submap/crashedcontainmentshuttle) -"bH" = (/obj/structure/closet/crate{name = "landmines crate"; opened = 1},/turf/simulated/shuttle/floor/black,/area/submap/crashedcontainmentshuttle) -"bI" = (/obj/random/landmine,/turf/simulated/shuttle/floor/black,/area/submap/crashedcontainmentshuttle) -"bJ" = (/obj/random/landmine,/turf/simulated/floor/plating,/area/submap/crashedcontainmentshuttle) -"bK" = (/obj/random/landmine,/turf/simulated/shuttle/floor/yellow,/area/submap/crashedcontainmentshuttle) -"bL" = (/obj/effect/decal/cleanable/blood,/obj/random/landmine,/turf/simulated/shuttle/floor/red,/area/submap/crashedcontainmentshuttle) -"bM" = (/obj/structure/reagent_dispensers/fueltank,/turf/simulated/mineral/floor/ignore_mapgen,/area/submap/crashedcontainmentshuttle) -"bN" = (/obj/structure/toilet{dir = 8},/obj/effect/gibspawner/generic,/obj/effect/decal/remains/human,/obj/item/weapon/card/id/syndicate{age = "\\42"; blood_type = "\\O+"; desc = "A strange ID card."; dna_hash = "\[REDACTED]"; fingerprint_hash = "\\------"; name = "Aaron Presley's ID Card(Delivery Service) "; registered_name = "Aaron Presley"; sex = "\\Male"},/turf/simulated/shuttle/floor/white,/area/submap/crashedcontainmentshuttle) -"bO" = (/obj/effect/decal/cleanable/liquid_fuel,/obj/effect/decal/remains/human,/obj/item/weapon/flame/lighter/random,/turf/simulated/mineral/floor/ignore_mapgen,/area/submap/crashedcontainmentshuttle) +"aa" = (/turf/template_noop,/area/submap/crashedcontainmentshuttle) +"ab" = (/turf/simulated/shuttle/wall/dark/hard_corner,/area/submap/crashedcontainmentshuttle) +"ac" = (/turf/simulated/shuttle/wall/dark,/area/submap/crashedcontainmentshuttle) +"ad" = (/turf/simulated/shuttle/floor/black,/area/submap/crashedcontainmentshuttle) +"ae" = (/turf/simulated/shuttle/floor/yellow,/area/submap/crashedcontainmentshuttle) +"af" = (/turf/simulated/shuttle/floor/red,/area/submap/crashedcontainmentshuttle) +"ag" = (/turf/simulated/shuttle/floor/white,/area/submap/crashedcontainmentshuttle) +"ah" = (/obj/structure/grille,/obj/item/weapon/material/shard{icon_state = "medium"},/turf/simulated/floor/plating,/area/submap/crashedcontainmentshuttle) +"ai" = (/obj/structure/grille,/obj/item/weapon/material/shard{icon_state = "medium"},/turf/simulated/mineral/floor/ignore_mapgen,/area/submap/crashedcontainmentshuttle) +"aj" = (/obj/random/landmine,/turf/simulated/mineral/floor/ignore_mapgen,/area/submap/crashedcontainmentshuttle) +"ak" = (/obj/structure/door_assembly/door_assembly_ext{anchored = 1},/turf/simulated/floor/plating,/area/submap/crashedcontainmentshuttle) +"al" = (/obj/item/weapon/material/shard{icon_state = "medium"},/turf/simulated/mineral/floor/ignore_mapgen,/area/submap/crashedcontainmentshuttle) +"am" = (/obj/item/weapon/material/shard,/turf/template_noop,/area/submap/crashedcontainmentshuttle) +"an" = (/obj/structure/girder,/turf/simulated/floor/plating,/area/submap/crashedcontainmentshuttle) +"ao" = (/turf/simulated/floor/plating,/area/submap/crashedcontainmentshuttle) +"ap" = (/obj/structure/lattice,/turf/simulated/mineral/floor/ignore_mapgen,/area/submap/crashedcontainmentshuttle) +"aq" = (/obj/item/weapon/material/shard,/turf/simulated/mineral/floor/ignore_mapgen,/area/submap/crashedcontainmentshuttle) +"ar" = (/obj/structure/grille,/obj/item/weapon/material/shard,/turf/simulated/floor/plating,/area/submap/crashedcontainmentshuttle) +"as" = (/obj/item/weapon/material/shard,/turf/simulated/floor/plating,/area/submap/crashedcontainmentshuttle) +"at" = (/obj/item/stack/rods,/turf/simulated/mineral/floor/ignore_mapgen,/area/submap/crashedcontainmentshuttle) +"au" = (/obj/item/stack/rods,/turf/simulated/shuttle/floor/black,/area/submap/crashedcontainmentshuttle) +"av" = (/obj/structure/closet/walllocker/emerglocker/east,/turf/simulated/shuttle/floor/black,/area/submap/crashedcontainmentshuttle) +"aw" = (/obj/structure/frame,/turf/simulated/shuttle/floor/black,/area/submap/crashedcontainmentshuttle) +"ax" = (/obj/item/frame/mirror,/obj/item/weapon/material/shard{icon_state = "medium"},/turf/simulated/shuttle/wall/dark,/area/submap/crashedcontainmentshuttle) +"ay" = (/obj/effect/decal/mecha_wreckage/gygax{anchored = 1},/turf/simulated/shuttle/floor/black,/area/submap/crashedcontainmentshuttle) +"az" = (/obj/effect/gibspawner/generic,/turf/simulated/shuttle/floor/black,/area/submap/crashedcontainmentshuttle) +"aA" = (/obj/structure/closet/medical_wall,/turf/simulated/shuttle/wall/dark,/area/submap/crashedcontainmentshuttle) +"aC" = (/turf/simulated/mineral/floor/ignore_mapgen,/area/submap/crashedcontainmentshuttle) +"aD" = (/obj/structure/door_assembly/door_assembly_ext,/turf/simulated/mineral/floor/ignore_mapgen,/area/submap/crashedcontainmentshuttle) +"aE" = (/obj/structure/extinguisher_cabinet,/turf/simulated/shuttle/wall/dark,/area/submap/crashedcontainmentshuttle) +"aF" = (/obj/machinery/computer,/turf/simulated/shuttle/floor/yellow,/area/submap/crashedcontainmentshuttle) +"aG" = (/obj/structure/loot_pile/maint/technical,/turf/simulated/mineral/floor/ignore_mapgen,/area/submap/crashedcontainmentshuttle) +"aH" = (/obj/structure/frame/computer,/turf/simulated/shuttle/floor/yellow,/area/submap/crashedcontainmentshuttle) +"aI" = (/obj/structure/grille{density = 0; icon_state = "brokengrille"},/obj/item/stack/rods,/turf/simulated/floor/plating,/area/submap/crashedcontainmentshuttle) +"aJ" = (/obj/item/stack/rods,/turf/simulated/floor/plating,/area/submap/crashedcontainmentshuttle) +"aK" = (/obj/structure/grille{density = 0; icon_state = "brokengrille"},/obj/item/weapon/material/shard{icon_state = "medium"},/obj/item/stack/rods,/turf/simulated/floor/plating,/area/submap/crashedcontainmentshuttle) +"aL" = (/obj/item/weapon/circuitboard/broken,/turf/simulated/shuttle/floor/black,/area/submap/crashedcontainmentshuttle) +"aM" = (/obj/structure/frame,/obj/item/weapon/circuitboard/broken,/turf/simulated/shuttle/floor/black,/area/submap/crashedcontainmentshuttle) +"aN" = (/obj/structure/table/steel_reinforced,/turf/simulated/shuttle/floor/black,/area/submap/crashedcontainmentshuttle) +"aO" = (/obj/structure/closet/walllocker/emerglocker/north,/obj/structure/frame,/obj/item/weapon/circuitboard/broken,/turf/simulated/shuttle/floor/white,/area/submap/crashedcontainmentshuttle) +"aP" = (/turf/simulated/floor/outdoors/rocks,/area/submap/crashedcontainmentshuttle) +"aQ" = (/obj/structure/grille{density = 0; icon_state = "brokengrille"},/obj/structure/lattice,/turf/simulated/mineral/floor/ignore_mapgen,/area/submap/crashedcontainmentshuttle) +"aR" = (/obj/structure/shuttle/engine/heater{dir = 8},/obj/structure/window/reinforced{dir = 4; health = 1e+006},/turf/template_noop,/area/submap/crashedcontainmentshuttle) +"aS" = (/obj/structure/door_assembly/door_assembly_highsecurity{anchored = 1},/turf/simulated/shuttle/floor/black,/area/submap/crashedcontainmentshuttle) +"aT" = (/obj/structure/loot_pile/maint/technical,/turf/simulated/shuttle/floor/yellow,/area/submap/crashedcontainmentshuttle) +"aU" = (/obj/structure/loot_pile/maint/technical,/turf/simulated/shuttle/floor/white,/area/submap/crashedcontainmentshuttle) +"aV" = (/obj/structure/shuttle/engine/propulsion{dir = 8},/turf/simulated/mineral/floor/ignore_mapgen,/area/submap/crashedcontainmentshuttle) +"aW" = (/obj/structure/loot_pile/maint/technical,/turf/simulated/shuttle/floor/black,/area/submap/crashedcontainmentshuttle) +"aX" = (/obj/item/weapon/circuitboard/broken,/turf/simulated/mineral/floor/ignore_mapgen,/area/submap/crashedcontainmentshuttle) +"aY" = (/obj/item/clothing/suit/space/cult,/turf/simulated/mineral/floor/ignore_mapgen,/area/submap/crashedcontainmentshuttle) +"aZ" = (/obj/effect/decal/remains/robot,/turf/simulated/mineral/floor/ignore_mapgen,/area/submap/crashedcontainmentshuttle) +"ba" = (/obj/effect/decal/remains/human,/obj/effect/gibspawner/human,/turf/simulated/mineral/floor/ignore_mapgen,/area/submap/crashedcontainmentshuttle) +"bb" = (/obj/effect/decal/cleanable/blood/drip,/turf/simulated/shuttle/floor/black,/area/submap/crashedcontainmentshuttle) +"bc" = (/obj/structure/door_assembly,/turf/simulated/shuttle/floor/white,/area/submap/crashedcontainmentshuttle) +"bd" = (/obj/item/clothing/head/helmet/space/cult,/turf/simulated/mineral/floor/ignore_mapgen,/area/submap/crashedcontainmentshuttle) +"be" = (/obj/item/weapon/material/knife/ritual,/turf/simulated/mineral/floor/ignore_mapgen,/area/submap/crashedcontainmentshuttle) +"bf" = (/obj/structure/bed/chair/office/dark{dir = 8},/obj/effect/decal/remains/human,/turf/simulated/mineral/floor/ignore_mapgen,/area/submap/crashedcontainmentshuttle) +"bg" = (/obj/effect/gibspawner/generic,/turf/template_noop,/area/submap/crashedcontainmentshuttle) +"bh" = (/obj/effect/decal/remains/human,/turf/simulated/shuttle/floor/yellow,/area/submap/crashedcontainmentshuttle) +"bi" = (/obj/item/weapon/circuitboard/broken,/obj/effect/decal/remains/human,/obj/item/weapon/gun/energy/laser,/turf/simulated/shuttle/floor/black,/area/submap/crashedcontainmentshuttle) +"bj" = (/obj/item/device/gps/internal/poi,/turf/simulated/shuttle/floor/red,/area/submap/crashedcontainmentshuttle) +"bk" = (/obj/effect/decal/cleanable/vomit,/turf/simulated/shuttle/floor/black,/area/submap/crashedcontainmentshuttle) +"bl" = (/obj/effect/decal/remains/robot,/turf/simulated/shuttle/floor/red,/area/submap/crashedcontainmentshuttle) +"bm" = (/obj/effect/decal/cleanable/liquid_fuel,/turf/template_noop,/area/submap/crashedcontainmentshuttle) +"bn" = (/obj/effect/decal/cleanable/vomit,/turf/simulated/shuttle/floor/white,/area/submap/crashedcontainmentshuttle) +"bo" = (/obj/effect/decal/cleanable/blood/drip,/turf/template_noop,/area/submap/crashedcontainmentshuttle) +"bp" = (/obj/structure/bed/chair/office/dark{dir = 4},/turf/simulated/shuttle/floor/yellow,/area/submap/crashedcontainmentshuttle) +"bq" = (/obj/item/weapon/circuitboard/broken,/obj/structure/bed/chair/office/dark{dir = 4},/turf/simulated/shuttle/floor/yellow,/area/submap/crashedcontainmentshuttle) +"br" = (/obj/effect/decal/cleanable/blood/drip,/obj/effect/decal/cleanable/blood/drip,/obj/effect/decal/cleanable/blood/drip,/turf/simulated/shuttle/floor/yellow,/area/submap/crashedcontainmentshuttle) +"bs" = (/obj/structure/table/steel_reinforced,/turf/simulated/shuttle/floor/yellow,/area/submap/crashedcontainmentshuttle) +"bt" = (/obj/structure/shuttle/engine/heater{dir = 8},/obj/structure/window/reinforced{dir = 4; health = 1e+006},/turf/simulated/mineral/floor/ignore_mapgen,/area/submap/crashedcontainmentshuttle) +"bu" = (/obj/structure/door_assembly/door_assembly_ext{anchored = 1},/turf/simulated/mineral/floor/ignore_mapgen,/area/submap/crashedcontainmentshuttle) +"bv" = (/obj/effect/decal/cleanable/blood/oil,/turf/simulated/shuttle/floor/red,/area/submap/crashedcontainmentshuttle) +"bw" = (/obj/item/weapon/material/knife/ritual,/obj/effect/decal/cleanable/blood,/turf/simulated/shuttle/floor/red,/area/submap/crashedcontainmentshuttle) +"bx" = (/turf/simulated/shuttle/wall/dark/no_join,/area/submap/crashedcontainmentshuttle) +"by" = (/obj/random/landmine,/obj/random/landmine,/turf/simulated/shuttle/floor/black,/area/submap/crashedcontainmentshuttle) +"bz" = (/obj/effect/decal/remains/human,/obj/item/clothing/head/helmet/space/cult,/obj/effect/decal/cleanable/blood,/turf/simulated/shuttle/floor/red,/area/submap/crashedcontainmentshuttle) +"bA" = (/obj/effect/decal/cleanable/blood/drip,/obj/effect/decal/cleanable/blood/drip,/turf/simulated/shuttle/floor/white,/area/submap/crashedcontainmentshuttle) +"bB" = (/obj/structure/sink{icon_state = "sink"; dir = 8; pixel_x = -12; pixel_y = 2},/obj/effect/decal/cleanable/blood/drip,/obj/effect/decal/cleanable/blood/drip,/turf/simulated/shuttle/floor/white,/area/submap/crashedcontainmentshuttle) +"bC" = (/obj/effect/decal/cleanable/liquid_fuel,/turf/simulated/shuttle/floor/black,/area/submap/crashedcontainmentshuttle) +"bD" = (/obj/structure/shuttle/engine/propulsion{icon_state = "burst_r"},/turf/simulated/mineral/floor/ignore_mapgen,/area/submap/crashedcontainmentshuttle) +"bE" = (/obj/effect/decal/cleanable/blood/drip,/obj/effect/decal/cleanable/blood/drip,/turf/simulated/shuttle/floor/black,/area/submap/crashedcontainmentshuttle) +"bF" = (/obj/effect/decal/cleanable/blood/drip,/turf/simulated/shuttle/floor/white,/area/submap/crashedcontainmentshuttle) +"bG" = (/obj/effect/decal/cleanable/liquid_fuel,/obj/random/landmine,/turf/simulated/mineral/floor/ignore_mapgen,/area/submap/crashedcontainmentshuttle) +"bH" = (/obj/structure/closet/crate{name = "landmines crate"; opened = 1},/turf/simulated/shuttle/floor/black,/area/submap/crashedcontainmentshuttle) +"bI" = (/obj/random/landmine,/turf/simulated/shuttle/floor/black,/area/submap/crashedcontainmentshuttle) +"bJ" = (/obj/random/landmine,/turf/simulated/floor/plating,/area/submap/crashedcontainmentshuttle) +"bK" = (/obj/random/landmine,/turf/simulated/shuttle/floor/yellow,/area/submap/crashedcontainmentshuttle) +"bL" = (/obj/effect/decal/cleanable/blood,/obj/random/landmine,/turf/simulated/shuttle/floor/red,/area/submap/crashedcontainmentshuttle) +"bM" = (/obj/structure/reagent_dispensers/fueltank,/turf/simulated/mineral/floor/ignore_mapgen,/area/submap/crashedcontainmentshuttle) +"bN" = (/obj/structure/toilet{dir = 8},/obj/effect/gibspawner/generic,/obj/effect/decal/remains/human,/obj/item/weapon/card/id/syndicate{age = "\\42"; blood_type = "\\O+"; desc = "A strange ID card."; dna_hash = "\[REDACTED]"; fingerprint_hash = "\\------"; name = "Aaron Presley's ID Card(Delivery Service) "; registered_name = "Aaron Presley"; sex = "\\Male"},/turf/simulated/shuttle/floor/white,/area/submap/crashedcontainmentshuttle) +"bO" = (/obj/effect/decal/cleanable/liquid_fuel,/obj/effect/decal/remains/human,/obj/item/weapon/flame/lighter/random,/turf/simulated/mineral/floor/ignore_mapgen,/area/submap/crashedcontainmentshuttle) -(1,1,1) = {" -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaiaaaaaaajanaaaaaaaaaaaaaaalaaaaaaaa -aaaaabacaaaaaaaaaaaaaaaaapaaaPaPaaaqaaaaaaaaaaaaaa -aaaaacaaaaadaaaaaaaaajapaPaPaPadaPaaaaaaataaaaaaaa -aaaCaaaaauaDakaracacaGaQacacananacabaaaaaaaaaaaaaa -aaaVaXaaadaoaaadadajaXbHbyayadadaWacabaaaaaaaaaaaa -aaaYaaaRacaaadadaZapbIbybIazbbadaNacanbJaaaaaaaaaa -aaaababdbeapapapadadadbIadadauadaNaAaeaTanaaaaataa -acaaaaaaapadauadadadacacaSacanadavacbhaeaeahaaaaaa -aPadaVaRacadadadbiadacbjafafacadadadbKbpaHaraaaaaa -aaaPadaaacaMadbkadbbacbvaBbwacaLadaSbKbqaHaoapaaaa -aPbxaVaRacaWadbbadbbanblbLbzanadbbasaebraFaIaabfaa -aPaPaaaaaaaabEazadadanacacacaEadadahaebpaHaoaaaiaa -aPaPadaaaJapbIadadaPaPadadadadadadacaeaeaeahaaaaaa -adaaaaaaaaaoadadaPaPaPadacanacbcacacaTbsacacaaaaaa -aPacaaaaamapadaWaPaPbbadaAbAaUbFaOacacacabaPaaaaaa -aPaPaaaPacadadadadadadawaxbBagbnbNanabaPaPaaaaaaaa -aaaaaXbtaaacbuapaoaKanananacacaranabaPaPaabgaaaaaa -acaaaaaaaPaPaaaoaaaaapapaPaPaPapaPaPaaaaaaaaaaaaaa -aaaXaaaaaaacaaaaadaaaabmaaboaaaaaaaaaaaaaaaaaaaaaa -aabDaabgaaaGaaaaaaaabGbmboaabmbgaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaadaLaaaabmbMbObmbmaaaaaaaaaaaaaaaaaaaa -aaaaadadaaaaaaacaPbCbmbmbmaaajaaaaaaaaaaaaaaaaaaaa -aaaaaaadaaaaaaaPaPaaaaaabmaaaaaaaaaaaaaaaaaaaaaaaa -"} +(1,1,1) = {" +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaiaaaaaaajanaaaaaaaaaaaaaaalaaaaaaaa +aaaaabacaaaaaaaaaaaaaaaaapaaaPaPaaaqaaaaaaaaaaaaaa +aaaaacaaaaadaaaaaaaaajapaPaPaPadaPaaaaaaataaaaaaaa +aaaCaaaaauaDakaracacaGaQacacananacabaaaaaaaaaaaaaa +aaaVaXaaadaoaaadadajaXbHbyayadadaWacabaaaaaaaaaaaa +aaaYaaaRacaaadadaZapbIbybIazbbadaNacanbJaaaaaaaaaa +aaaababdbeapapapadadadbIadadauadaNaAaeaTanaaaaataa +acaaaaaaapadauadadadacacaSacanadavacbhaeaeahaaaaaa +aPadaVaRacadadadbiadacbjafafacadadadbKbpaHaraaaaaa +aaaPadaaacaMadbkadbbacbvafbwacaLadaSbKbqaHaoapaaaa +aPbxaVaRacaWadbbadbbanblbLbzanadbbasaebraFaIaabfaa +aPaPaaaaaaaabEazadadanacacacaEadadahaebpaHaoaaaiaa +aPaPadaaaJapbIadadaPaPadadadadadadacaeaeaeahaaaaaa +adaaaaaaaaaoadadaPaPaPadacanacbcacacaTbsacacaaaaaa +aPacaaaaamapadaWaPaPbbadaAbAaUbFaOacacacabaPaaaaaa +aPaPaaaPacadadadadadadawaxbBagbnbNanabaPaPaaaaaaaa +aaaaaXbtaaacbuapaoaKanananacacaranabaPaPaabgaaaaaa +acaaaaaaaPaPaaaoaaaaapapaPaPaPapaPaPaaaaaaaaaaaaaa +aaaXaaaaaaacaaaaadaaaabmaaboaaaaaaaaaaaaaaaaaaaaaa +aabDaabgaaaGaaaaaaaabGbmboaabmbgaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaadaLaaaabmbMbObmbmaaaaaaaaaaaaaaaaaaaa +aaaaadadaaaaaaacaPbCbmbmbmaaajaaaaaaaaaaaaaaaaaaaa +aaaaaaadaaaaaaaPaPaaaaaabmaaaaaaaaaaaaaaaaaaaaaaaa +"} + diff --git a/maps/submaps/surface_submaps/mountains/digsite.dmm b/maps/submaps/surface_submaps/mountains/digsite.dmm index f97910d431..3c777b71f6 100644 --- a/maps/submaps/surface_submaps/mountains/digsite.dmm +++ b/maps/submaps/surface_submaps/mountains/digsite.dmm @@ -1,63 +1,64 @@ -"a" = (/turf/template_noop,/area/template_noop) -"b" = (/turf/simulated/mineral/ignore_mapgen,/area/submap/cave/digsite) -"c" = (/turf/simulated/wall/sandstone,/area/submap/cave/digsite) -"d" = (/obj/structure/boulder,/turf/simulated/floor/plating/external,/area/submap/cave/digsite) -"e" = (/turf/simulated/mineral/floor/ignore_mapgen,/area/submap/cave/digsite) -"f" = (/turf/simulated/floor/tiled/kafel_full/yellow,/area/submap/cave/digsite) -"g" = (/turf/simulated/floor/plating/external,/area/submap/cave/digsite) -"h" = (/obj/item/weapon/ore,/turf/simulated/floor/plating/external,/area/submap/cave/digsite) -"i" = (/obj/structure/bed/alien,/turf/simulated/floor/tiled/kafel_full/yellow,/area/submap/cave/digsite) -"j" = (/obj/structure/cult/talisman,/turf/simulated/floor/tiled/kafel_full/yellow,/area/submap/cave/digsite) -"k" = (/obj/machinery/artifact,/obj/structure/anomaly_container,/turf/simulated/floor/tiled/kafel_full/yellow,/area/submap/cave/digsite) -"l" = (/obj/structure/simple_door/sandstone,/turf/simulated/floor/tiled/kafel_full/yellow,/area/submap/cave/digsite) -"m" = (/obj/structure/loot_pile/surface/alien,/turf/simulated/floor/tiled/kafel_full/yellow,/area/submap/cave/digsite) -"n" = (/mob/living/simple_animal/tindalos,/turf/simulated/floor/tiled/kafel_full/yellow,/area/submap/cave/digsite) -"o" = (/obj/structure/closet/crate/secure/loot,/turf/simulated/mineral/floor/ignore_mapgen,/area/submap/cave/digsite) -"p" = (/obj/item/weapon/ore,/turf/simulated/mineral/floor/ignore_mapgen,/area/submap/cave/digsite) -"q" = (/obj/effect/floor_decal/asteroid,/turf/simulated/mineral/floor/ignore_mapgen,/area/submap/cave/digsite) -"r" = (/obj/structure/anomaly_container,/turf/simulated/mineral/floor/ignore_mapgen,/area/submap/cave/digsite) -"s" = (/turf/simulated/wall,/area/submap/cave/digsite) -"t" = (/obj/item/frame/apc,/obj/item/weapon/module/power_control,/turf/simulated/floor/plating/external,/area/submap/cave/digsite) -"u" = (/obj/structure/table/steel,/obj/machinery/cell_charger,/obj/random/powercell,/turf/simulated/mineral/floor/ignore_mapgen,/area/submap/cave/digsite) -"v" = (/obj/structure/table/steel,/obj/item/weapon/storage/excavation,/obj/item/device/measuring_tape,/turf/simulated/mineral/floor/ignore_mapgen,/area/submap/cave/digsite) -"w" = (/obj/machinery/power/port_gen/pacman/super,/obj/structure/cable/yellow{d2 = 4; icon_state = "0-4"},/turf/simulated/floor/plating/external,/area/submap/cave/digsite) -"x" = (/obj/structure/cable/yellow{d2 = 8; icon_state = "0-8"},/turf/simulated/floor/plating/external,/area/submap/cave/digsite) -"y" = (/obj/structure/bed/chair{dir = 4},/turf/simulated/mineral/floor/ignore_mapgen,/area/submap/cave/digsite) -"z" = (/obj/structure/table/steel,/obj/item/weapon/folder,/turf/simulated/mineral/floor/ignore_mapgen,/area/submap/cave/digsite) -"A" = (/obj/structure/table/rack,/obj/item/weapon/pickaxe,/turf/simulated/mineral/floor/ignore_mapgen,/area/submap/cave/digsite) -"B" = (/obj/item/mecha_parts/mecha_equipment/tool/drill/diamonddrill,/turf/simulated/mineral/floor/ignore_mapgen,/area/submap/cave/digsite) -"C" = (/obj/structure/loot_pile/maint/technical,/turf/simulated/floor/plating/external,/area/submap/cave/digsite) -"D" = (/obj/structure/table/steel,/obj/random/tech_supply,/turf/simulated/mineral/floor/ignore_mapgen,/area/submap/cave/digsite) -"E" = (/obj/structure/table/rack,/obj/item/weapon/shovel,/turf/simulated/mineral/floor/ignore_mapgen,/area/submap/cave/digsite) -"F" = (/obj/structure/boulder,/obj/effect/decal/mecha_wreckage/ripley,/turf/simulated/mineral/floor/ignore_mapgen,/area/submap/cave/digsite) -"G" = (/obj/structure/boulder,/turf/simulated/mineral/floor/ignore_mapgen,/area/submap/cave/digsite) -"H" = (/obj/structure/loot_pile/maint/junk,/turf/simulated/floor/plating/external,/area/submap/cave/digsite) -"I" = (/obj/structure/table/steel,/obj/item/weapon/tool/wrench,/obj/item/weapon/storage/box/samplebags,/turf/simulated/mineral/floor/ignore_mapgen,/area/submap/cave/digsite) -"J" = (/obj/structure/table/steel,/obj/item/stack/flag/yellow,/turf/simulated/mineral/floor/ignore_mapgen,/area/submap/cave/digsite) -"K" = (/obj/random/toolbox,/turf/simulated/mineral/floor/ignore_mapgen,/area/submap/cave/digsite) -"L" = (/obj/structure/closet/crate,/turf/simulated/mineral/floor/ignore_mapgen,/area/submap/cave/digsite) -"M" = (/obj/machinery/floodlight,/turf/simulated/mineral/floor/ignore_mapgen,/area/submap/cave/digsite) -"N" = (/obj/structure/ore_box,/turf/simulated/mineral/floor/ignore_mapgen,/area/submap/cave/digsite) +"a" = (/turf/template_noop,/area/template_noop) +"b" = (/turf/simulated/mineral/ignore_mapgen,/area/submap/cave/digsite) +"c" = (/turf/simulated/wall/sandstone,/area/submap/cave/digsite) +"d" = (/obj/structure/boulder,/turf/simulated/floor/plating/external,/area/submap/cave/digsite) +"e" = (/turf/simulated/mineral/floor/ignore_mapgen,/area/submap/cave/digsite) +"f" = (/turf/simulated/floor/tiled/kafel_full/yellow,/area/submap/cave/digsite) +"g" = (/turf/simulated/floor/plating/external,/area/submap/cave/digsite) +"h" = (/obj/item/weapon/ore,/turf/simulated/floor/plating/external,/area/submap/cave/digsite) +"i" = (/obj/structure/bed/alien,/turf/simulated/floor/tiled/kafel_full/yellow,/area/submap/cave/digsite) +"j" = (/obj/structure/cult/talisman,/turf/simulated/floor/tiled/kafel_full/yellow,/area/submap/cave/digsite) +"k" = (/obj/machinery/artifact,/obj/structure/anomaly_container,/turf/simulated/floor/tiled/kafel_full/yellow,/area/submap/cave/digsite) +"l" = (/obj/structure/simple_door/sandstone,/turf/simulated/floor/tiled/kafel_full/yellow,/area/submap/cave/digsite) +"m" = (/obj/structure/loot_pile/surface/alien,/turf/simulated/floor/tiled/kafel_full/yellow,/area/submap/cave/digsite) +"n" = (/mob/living/simple_mob/animal/passive/tindalos,/turf/simulated/floor/tiled/kafel_full/yellow,/area/submap/cave/digsite) +"o" = (/obj/structure/closet/crate/secure/loot,/turf/simulated/mineral/floor/ignore_mapgen,/area/submap/cave/digsite) +"p" = (/obj/item/weapon/ore,/turf/simulated/mineral/floor/ignore_mapgen,/area/submap/cave/digsite) +"q" = (/obj/effect/floor_decal/asteroid,/turf/simulated/mineral/floor/ignore_mapgen,/area/submap/cave/digsite) +"r" = (/obj/structure/anomaly_container,/turf/simulated/mineral/floor/ignore_mapgen,/area/submap/cave/digsite) +"s" = (/turf/simulated/wall,/area/submap/cave/digsite) +"t" = (/obj/item/frame/apc,/obj/item/weapon/module/power_control,/turf/simulated/floor/plating/external,/area/submap/cave/digsite) +"u" = (/obj/structure/table/steel,/obj/machinery/cell_charger,/obj/random/powercell,/turf/simulated/mineral/floor/ignore_mapgen,/area/submap/cave/digsite) +"v" = (/obj/structure/table/steel,/obj/item/weapon/storage/excavation,/obj/item/device/measuring_tape,/turf/simulated/mineral/floor/ignore_mapgen,/area/submap/cave/digsite) +"w" = (/obj/machinery/power/port_gen/pacman/super,/obj/structure/cable/yellow{d2 = 4; icon_state = "0-4"},/turf/simulated/floor/plating/external,/area/submap/cave/digsite) +"x" = (/obj/structure/cable/yellow{d2 = 8; icon_state = "0-8"},/turf/simulated/floor/plating/external,/area/submap/cave/digsite) +"y" = (/obj/structure/bed/chair{dir = 4},/turf/simulated/mineral/floor/ignore_mapgen,/area/submap/cave/digsite) +"z" = (/obj/structure/table/steel,/obj/item/weapon/folder,/turf/simulated/mineral/floor/ignore_mapgen,/area/submap/cave/digsite) +"A" = (/obj/structure/table/rack,/obj/item/weapon/pickaxe,/turf/simulated/mineral/floor/ignore_mapgen,/area/submap/cave/digsite) +"B" = (/obj/item/mecha_parts/mecha_equipment/tool/drill/diamonddrill,/turf/simulated/mineral/floor/ignore_mapgen,/area/submap/cave/digsite) +"C" = (/obj/structure/loot_pile/maint/technical,/turf/simulated/floor/plating/external,/area/submap/cave/digsite) +"D" = (/obj/structure/table/steel,/obj/random/tech_supply,/turf/simulated/mineral/floor/ignore_mapgen,/area/submap/cave/digsite) +"E" = (/obj/structure/table/rack,/obj/item/weapon/shovel,/turf/simulated/mineral/floor/ignore_mapgen,/area/submap/cave/digsite) +"F" = (/obj/structure/boulder,/obj/effect/decal/mecha_wreckage/ripley,/turf/simulated/mineral/floor/ignore_mapgen,/area/submap/cave/digsite) +"G" = (/obj/structure/boulder,/turf/simulated/mineral/floor/ignore_mapgen,/area/submap/cave/digsite) +"H" = (/obj/structure/loot_pile/maint/junk,/turf/simulated/floor/plating/external,/area/submap/cave/digsite) +"I" = (/obj/structure/table/steel,/obj/item/weapon/tool/wrench,/obj/item/weapon/storage/box/samplebags,/turf/simulated/mineral/floor/ignore_mapgen,/area/submap/cave/digsite) +"J" = (/obj/structure/table/steel,/obj/item/stack/flag/yellow,/turf/simulated/mineral/floor/ignore_mapgen,/area/submap/cave/digsite) +"K" = (/obj/random/toolbox,/turf/simulated/mineral/floor/ignore_mapgen,/area/submap/cave/digsite) +"L" = (/obj/structure/closet/crate,/turf/simulated/mineral/floor/ignore_mapgen,/area/submap/cave/digsite) +"M" = (/obj/machinery/floodlight,/turf/simulated/mineral/floor/ignore_mapgen,/area/submap/cave/digsite) +"N" = (/obj/structure/ore_box,/turf/simulated/mineral/floor/ignore_mapgen,/area/submap/cave/digsite) -(1,1,1) = {" -aaaaaaaaaaaaaaaaaaaa -aaabbbbbbbbbbbbbbbaa -aabccccccccdccccceea -abccffcfffghgcficcea -abcfffcffjggfcfffcea -abcfkflffggfffffmcea -abcfffcffffffgfffcea -abccffcffffffgnfccea -abbccccclccfhccggeea -abbbbboeffffepqeeeea -abbbbbbeeeeeeeeeeeea -abbbbbbpeeeeeqereeea -abbbbsteeuveeeerbeea -abbbbwxeyzAeqeBbbbea -abbbbCgeyDEeeeeFbbba -abeeGHgeqIJeeeqbbbba -aeeeKeeeeLMeeeNbbeaa -aaeeeeeeeeeeeeNeeeaa -aaaaaeeeeeeeeeeeeaaa -aaaaaaaaaaaaaaaaaaaa -"} +(1,1,1) = {" +aaaaaaaaaaaaaaaaaaaa +aaabbbbbbbbbbbbbbbaa +aabccccccccdccccceea +abccffcfffghgcficcea +abcfffcffjggfcfffcea +abcfkflffggfffffmcea +abcfffcffffffgfffcea +abccffcffffffgnfccea +abbccccclccfhccggeea +abbbbboeffffepqeeeea +abbbbbbeeeeeeeeeeeea +abbbbbbpeeeeeqereeea +abbbbsteeuveeeerbeea +abbbbwxeyzAeqeBbbbea +abbbbCgeyDEeeeeFbbba +abeeGHgeqIJeeeqbbbba +aeeeKeeeeLMeeeNbbeaa +aaeeeeeeeeeeeeNeeeaa +aaaaaeeeeeeeeeeeeaaa +aaaaaaaaaaaaaaaaaaaa +"} + diff --git a/maps/submaps/surface_submaps/mountains/lava_trench.dmm b/maps/submaps/surface_submaps/mountains/lava_trench.dmm new file mode 100644 index 0000000000..76b9f6f01f --- /dev/null +++ b/maps/submaps/surface_submaps/mountains/lava_trench.dmm @@ -0,0 +1,146 @@ +"aa" = (/turf/template_noop,/area/template_noop) +"ab" = (/obj/structure/cliff/automatic{icon_state = "cliffbuilder"; dir = 9},/turf/simulated/floor/outdoors/rocks/caves,/area/submap/lava_trench) +"ac" = (/obj/structure/cliff/automatic,/turf/simulated/floor/outdoors/rocks/caves,/area/submap/lava_trench) +"ad" = (/obj/structure/cliff/automatic{icon_state = "cliffbuilder"; dir = 5},/turf/simulated/floor/outdoors/rocks/caves,/area/submap/lava_trench) +"ae" = (/obj/structure/cliff/automatic/corner{icon_state = "cliffbuilder-corner"; dir = 9},/turf/simulated/floor/outdoors/rocks/caves,/area/submap/lava_trench) +"af" = (/turf/simulated/floor/outdoors/rocks/caves,/area/submap/lava_trench) +"ag" = (/obj/structure/cliff/automatic/corner,/turf/simulated/floor/outdoors/rocks/caves,/area/submap/lava_trench) +"ah" = (/obj/structure/fence/end{icon_state = "end"; dir = 4},/turf/simulated/floor/outdoors/rocks/caves,/area/submap/lava_trench) +"ai" = (/obj/structure/fence/post{icon_state = "post"; dir = 4},/turf/simulated/floor/outdoors/rocks/caves,/area/submap/lava_trench) +"aj" = (/obj/structure/fence/door/opened,/turf/simulated/floor/outdoors/rocks/caves,/area/submap/lava_trench) +"ak" = (/obj/structure/fence/end{icon_state = "end"; dir = 8},/turf/simulated/floor/outdoors/rocks/caves,/area/submap/lava_trench) +"al" = (/obj/structure/cliff/automatic{icon_state = "cliffbuilder"; dir = 8},/turf/simulated/floor/outdoors/rocks/caves,/area/submap/lava_trench) +"am" = (/obj/structure/fence/end{icon_state = "end"; dir = 1},/turf/simulated/floor/outdoors/rocks/caves,/area/submap/lava_trench) +"an" = (/obj/structure/cliff/automatic{icon_state = "cliffbuilder"; dir = 9},/turf/simulated/floor/lava,/area/submap/lava_trench) +"ao" = (/obj/structure/cliff/automatic,/turf/simulated/floor/lava,/area/submap/lava_trench) +"ap" = (/obj/structure/cliff/automatic{icon_state = "cliffbuilder"; dir = 5},/turf/simulated/floor/lava,/area/submap/lava_trench) +"aq" = (/obj/structure/sign/warning/lava,/turf/simulated/wall,/area/submap/lava_trench) +"ar" = (/obj/structure/fence/post,/turf/simulated/floor/outdoors/rocks/caves,/area/submap/lava_trench) +"as" = (/obj/structure/cliff/automatic{icon_state = "cliffbuilder"; dir = 6},/turf/simulated/floor/outdoors/rocks/caves,/area/submap/lava_trench) +"at" = (/obj/structure/cliff/automatic/corner{icon_state = "cliffbuilder-corner"; dir = 9},/turf/simulated/floor/lava,/area/submap/lava_trench) +"au" = (/turf/simulated/floor/lava,/area/submap/lava_trench) +"av" = (/obj/structure/cliff/automatic/corner,/turf/simulated/floor/lava,/area/submap/lava_trench) +"aw" = (/obj/structure/railing{icon_state = "railing0"; dir = 4},/turf/simulated/floor/outdoors/rocks/caves,/area/submap/lava_trench) +"ax" = (/obj/structure/catwalk,/turf/simulated/floor/outdoors/rocks/caves,/area/submap/lava_trench) +"ay" = (/obj/structure/railing{icon_state = "railing0"; dir = 8},/turf/simulated/floor/outdoors/rocks/caves,/area/submap/lava_trench) +"az" = (/obj/structure/fence/door/opened{icon_state = "door_opened"; dir = 8},/turf/simulated/floor/outdoors/rocks/caves,/area/submap/lava_trench) +"aA" = (/obj/structure/cliff/automatic{icon_state = "cliffbuilder"; dir = 8},/turf/simulated/floor/lava,/area/submap/lava_trench) +"aB" = (/turf/simulated/mineral/floor/ignore_mapgen,/area/template_noop) +"aC" = (/turf/simulated/floor/outdoors/rocks/caves,/area/template_noop) +"aD" = (/obj/structure/cliff/automatic,/obj/structure/railing{icon_state = "railing0"; dir = 4},/turf/simulated/floor/lava,/area/submap/lava_trench) +"aE" = (/obj/structure/cliff/automatic,/obj/structure/railing{icon_state = "railing0"; dir = 8},/turf/simulated/floor/lava,/area/submap/lava_trench) +"aF" = (/obj/structure/cliff/automatic{icon_state = "cliffbuilder"; dir = 10},/turf/simulated/floor/lava,/area/submap/lava_trench) +"aG" = (/obj/structure/cliff/automatic/corner{icon_state = "cliffbuilder-corner"; dir = 10},/turf/simulated/floor/lava,/area/submap/lava_trench) +"aH" = (/obj/structure/railing{icon_state = "railing0"; dir = 4},/obj/effect/step_trigger/teleporter/offset/east,/turf/simulated/floor/lava,/area/submap/lava_trench) +"aI" = (/obj/structure/catwalk,/turf/simulated/floor/lava,/area/submap/lava_trench) +"aJ" = (/obj/structure/ore_box,/turf/simulated/floor/tiled/asteroid_steel,/area/submap/lava_trench) +"aK" = (/obj/structure/railing{icon_state = "railing0"; dir = 8},/obj/effect/step_trigger/teleporter/offset/west,/turf/simulated/floor/lava,/area/submap/lava_trench) +"aL" = (/obj/structure/cliff/automatic{icon_state = "cliffbuilder"; dir = 4},/turf/simulated/floor/outdoors/rocks/caves,/area/submap/lava_trench) +"aM" = (/obj/machinery/light/small/flicker{icon_state = "bulb1"; dir = 4},/turf/simulated/floor/outdoors/rocks/caves,/area/submap/lava_trench) +"aN" = (/obj/machinery/door/airlock/hatch{normalspeed = 0; safe = 0},/obj/effect/map_effect/interval/effect_emitter/sparks,/turf/simulated/floor/tiled/old_tile,/area/submap/lava_trench/outpost) +"aO" = (/turf/simulated/wall/rshull,/area/submap/lava_trench/outpost) +"aP" = (/obj/machinery/door/airlock/hatch{normalspeed = 0; safe = 0},/obj/effect/map_effect/interval/effect_emitter/sparks,/turf/simulated/floor/tiled/old_tile,/area/submap/lava_trench/outpost) +"aQ" = (/turf/simulated/floor/tiled/old_tile,/area/submap/lava_trench/outpost) +"aR" = (/obj/effect/floor_decal/corner_oldtile/blue/full{icon_state = "corner_oldtile_full"; dir = 8},/obj/machinery/microscope,/obj/structure/table/standard,/turf/simulated/floor/tiled/old_tile,/area/submap/lava_trench/outpost) +"aS" = (/obj/effect/floor_decal/corner_oldtile/blue/full{icon_state = "corner_oldtile_full"; dir = 8},/obj/structure/table/standard,/obj/random/unidentified_medicine/scientific,/turf/simulated/floor/tiled/old_tile,/area/submap/lava_trench/outpost) +"aT" = (/obj/structure/fence/end,/turf/simulated/floor/outdoors/rocks/caves,/area/submap/lava_trench) +"aU" = (/obj/structure/cliff/automatic{icon_state = "cliffbuilder"; dir = 2},/turf/simulated/floor/lava,/area/submap/lava_trench) +"aV" = (/obj/structure/cliff/automatic{icon_state = "cliffbuilder"; dir = 10},/turf/simulated/floor/outdoors/rocks/caves,/area/submap/lava_trench) +"aW" = (/obj/structure/cliff/automatic/corner{icon_state = "cliffbuilder-corner"; dir = 10},/turf/simulated/floor/outdoors/rocks/caves,/area/submap/lava_trench) +"aX" = (/obj/structure/cliff/automatic/corner{icon_state = "cliffbuilder-corner"; dir = 6},/turf/simulated/floor/lava,/area/submap/lava_trench) +"aY" = (/obj/structure/cliff/automatic{icon_state = "cliffbuilder"; dir = 2},/obj/structure/railing{icon_state = "railing0"; dir = 4},/turf/simulated/floor/lava,/area/submap/lava_trench) +"aZ" = (/obj/structure/cliff/automatic{icon_state = "cliffbuilder"; dir = 2},/obj/structure/railing{icon_state = "railing0"; dir = 8},/turf/simulated/floor/lava,/area/submap/lava_trench) +"ba" = (/obj/machinery/crystal/lava,/turf/simulated/floor/outdoors/rocks/caves,/area/submap/lava_trench) +"bb" = (/obj/structure/cliff/automatic{icon_state = "cliffbuilder"; dir = 4},/turf/simulated/floor/lava,/area/submap/lava_trench) +"bc" = (/obj/structure/cliff/automatic{icon_state = "cliffbuilder"; dir = 6},/turf/simulated/floor/lava,/area/submap/lava_trench) +"bd" = (/obj/structure/table/steel,/obj/item/weapon/storage/excavation,/obj/item/device/measuring_tape,/obj/effect/floor_decal/corner_oldtile/purple{icon_state = "corner_oldtile"; dir = 4},/turf/simulated/floor/tiled/old_tile,/area/submap/lava_trench/outpost) +"be" = (/turf/simulated/mineral/ignore_mapgen,/area/template_noop) +"bf" = (/obj/structure/railing,/turf/simulated/floor/outdoors/rocks/caves,/area/submap/lava_trench) +"bg" = (/obj/structure/cliff/automatic{icon_state = "cliffbuilder"; dir = 10},/obj/structure/railing,/turf/simulated/floor/lava,/area/submap/lava_trench) +"bh" = (/obj/structure/cliff/automatic/corner{icon_state = "cliffbuilder-corner"; dir = 10},/obj/structure/railing,/turf/simulated/floor/lava,/area/submap/lava_trench) +"bi" = (/obj/structure/railing,/obj/effect/step_trigger/teleporter/offset/south,/turf/simulated/floor/lava,/area/submap/lava_trench) +"bj" = (/obj/structure/cliff/automatic{icon_state = "cliffbuilder"; dir = 4},/obj/structure/railing,/turf/simulated/floor/lava,/area/submap/lava_trench) +"bk" = (/obj/structure/catwalk,/obj/structure/railing,/turf/simulated/floor/outdoors/rocks/caves,/area/submap/lava_trench) +"bl" = (/obj/structure/catwalk,/obj/structure/railing,/turf/simulated/floor/lava,/area/submap/lava_trench) +"bm" = (/obj/structure/fence/door/opened{icon_state = "door_opened"; dir = 4},/turf/simulated/floor/outdoors/rocks/caves,/area/submap/lava_trench) +"bn" = (/obj/structure/cliff/automatic{icon_state = "cliffbuilder"; dir = 2},/turf/simulated/floor/outdoors/rocks/caves,/area/submap/lava_trench) +"bo" = (/obj/effect/floor_decal/corner_oldtile/purple/full{icon_state = "corner_oldtile_full"; dir = 1},/obj/machinery/space_heater,/turf/simulated/floor/tiled/old_tile,/area/submap/lava_trench/outpost) +"bp" = (/obj/machinery/floodlight,/turf/simulated/floor/outdoors/rocks/caves,/area/submap/lava_trench) +"bq" = (/obj/machinery/newscaster{pixel_y = 32},/obj/machinery/light/small/flicker{icon_state = "bulb1"; dir = 1},/turf/simulated/floor/tiled/old_tile,/area/submap/lava_trench/outpost) +"br" = (/obj/effect/floor_decal/corner_oldtile/blue{icon_state = "corner_oldtile"; dir = 1},/obj/structure/bed/chair/office/light{icon_state = "officechair_white"; dir = 4},/turf/simulated/floor/tiled/old_tile,/area/submap/lava_trench/outpost) +"bs" = (/turf/simulated/floor/tiled/old_tile/gray,/area/submap/lava_trench/outpost) +"bt" = (/obj/effect/floor_decal/corner_oldtile/purple{icon_state = "corner_oldtile"; dir = 4},/turf/simulated/floor/tiled/old_tile,/area/submap/lava_trench/outpost) +"bu" = (/obj/structure/cliff/automatic/corner{icon_state = "cliffbuilder-corner"; dir = 6},/turf/simulated/floor/outdoors/rocks/caves,/area/submap/lava_trench) +"bv" = (/obj/item/slime_crystal,/obj/item/slime_crystal,/obj/item/slime_crystal,/obj/effect/floor_decal/corner_oldtile/blue{icon_state = "corner_oldtile"; dir = 9},/obj/structure/table/standard,/turf/simulated/floor/tiled/old_tile,/area/submap/lava_trench/outpost) +"bw" = (/turf/simulated/floor/tiled/asteroid_steel,/area/submap/lava_trench) +"bx" = (/obj/machinery/crystal/ice,/turf/simulated/floor/tiled/asteroid_steel,/area/submap/lava_trench) +"by" = (/obj/machinery/ai_status_display{pixel_y = 32},/obj/machinery/light/small/flicker{icon_state = "bulb1"; dir = 1},/turf/simulated/floor/tiled/old_tile,/area/submap/lava_trench/outpost) +"bz" = (/obj/effect/floor_decal/corner_oldtile{icon_state = "corner_oldtile"; dir = 1},/turf/simulated/floor/tiled/old_tile/gray,/area/submap/lava_trench/outpost) +"bA" = (/obj/effect/floor_decal/corner_oldtile{icon_state = "corner_oldtile"; dir = 4},/turf/simulated/floor/tiled/old_tile/gray,/area/submap/lava_trench/outpost) +"bB" = (/obj/effect/floor_decal/corner_oldtile/blue{icon_state = "corner_oldtile"; dir = 8},/turf/simulated/floor/tiled/old_tile,/area/submap/lava_trench/outpost) +"bC" = (/obj/structure/table/rack,/obj/item/weapon/shovel,/obj/effect/floor_decal/corner_oldtile/purple/full{icon_state = "corner_oldtile_full"; dir = 1},/obj/item/weapon/pickaxe/drill,/turf/simulated/floor/tiled/old_tile,/area/submap/lava_trench/outpost) +"bD" = (/obj/effect/step_trigger/teleporter/offset/north,/turf/simulated/floor/lava,/area/submap/lava_trench) +"bE" = (/obj/machinery/crystal/lava,/turf/simulated/floor/tiled/asteroid_steel,/area/submap/lava_trench) +"bF" = (/obj/structure/table/rack,/obj/random/tool/powermaint,/obj/random/tool/powermaint,/obj/effect/floor_decal/corner_oldtile/purple{icon_state = "corner_oldtile"; dir = 6},/turf/simulated/floor/tiled/old_tile,/area/submap/lava_trench/outpost) +"bG" = (/obj/effect/floor_decal/corner_oldtile/purple,/obj/structure/table/steel,/obj/item/device/xenoarch_multi_tool,/turf/simulated/floor/tiled/old_tile,/area/submap/lava_trench/outpost) +"bH" = (/obj/effect/floor_decal/corner_oldtile/purple,/turf/simulated/floor/tiled/old_tile,/area/submap/lava_trench/outpost) +"bI" = (/obj/item/device/gps/science{gps_tag = "CRYSTALS"},/turf/simulated/floor/tiled/old_tile,/area/submap/lava_trench/outpost) +"bK" = (/obj/effect/floor_decal/corner_oldtile/blue/full,/obj/random/drinkbottle,/obj/random/maintenance/research,/obj/structure/table/standard,/obj/machinery/light/small/flicker{icon_state = "bulb1"; dir = 8},/turf/simulated/floor/tiled/old_tile,/area/submap/lava_trench/outpost) +"bL" = (/obj/structure/flora/pottedplant/crystal,/obj/effect/floor_decal/corner_oldtile/blue{icon_state = "corner_oldtile"; dir = 8},/turf/simulated/floor/tiled/old_tile,/area/submap/lava_trench/outpost) +"bM" = (/obj/structure/cult/pylon,/obj/effect/floor_decal/industrial/outline,/turf/simulated/floor/tiled/old_tile/gray,/area/submap/lava_trench/outpost) +"bN" = (/obj/structure/anomaly_container,/obj/machinery/artifact,/turf/simulated/floor/outdoors/rocks/caves,/area/submap/lava_trench) +"bO" = (/obj/machinery/light/small/flicker{icon_state = "bulb1"; dir = 4},/turf/simulated/floor/tiled/old_tile,/area/submap/lava_trench/outpost) +"bP" = (/obj/effect/floor_decal/corner_oldtile/purple/full{icon_state = "corner_oldtile_full"; dir = 4},/obj/structure/table/steel,/obj/machinery/recharger,/obj/machinery/light/small/flicker{icon_state = "bulb1"; dir = 4},/turf/simulated/floor/tiled/old_tile,/area/submap/lava_trench/outpost) +"bQ" = (/obj/machinery/light/small/flicker{icon_state = "bulb1"; dir = 8},/turf/simulated/floor/outdoors/rocks/caves,/area/submap/lava_trench) +"bR" = (/obj/machinery/light/small/flicker{icon_state = "bulb1"; dir = 1},/turf/simulated/floor/outdoors/rocks/caves,/area/submap/lava_trench) +"bS" = (/obj/effect/floor_decal/corner_oldtile/blue{icon_state = "corner_oldtile"; dir = 1},/obj/structure/loot_pile/surface/medicine_cabinet{pixel_y = 28},/obj/structure/table/standard,/obj/item/device/healthanalyzer/improved,/turf/simulated/floor/tiled/old_tile,/area/submap/lava_trench/outpost) +"bT" = (/obj/machinery/suspension_gen{anchored = 1},/obj/effect/floor_decal/industrial/hatch/yellow,/turf/simulated/floor/tiled/old_tile,/area/submap/lava_trench/outpost) +"bU" = (/obj/machinery/light/small/flicker,/obj/structure/ore_box,/turf/simulated/floor/tiled/asteroid_steel,/area/submap/lava_trench) +"bW" = (/obj/structure/anomaly_container,/turf/simulated/floor/outdoors/rocks/caves,/area/submap/lava_trench) +"bX" = (/obj/effect/floor_decal/corner_oldtile/purple/full{icon_state = "corner_oldtile_full"; dir = 4},/obj/item/weapon/storage/box/samplebags,/obj/structure/table/steel,/obj/item/stack/flag/red,/turf/simulated/floor/tiled/old_tile,/area/submap/lava_trench/outpost) +"bY" = (/obj/machinery/crystal,/turf/simulated/floor/tiled/asteroid_steel,/area/submap/lava_trench) +"bZ" = (/obj/structure/table/steel,/obj/item/weapon/stock_parts/subspace/crystal,/turf/simulated/floor/tiled/asteroid_steel,/area/submap/lava_trench) +"ca" = (/obj/structure/table/steel,/obj/item/stack/material/diamond,/turf/simulated/floor/tiled/asteroid_steel,/area/submap/lava_trench) +"cb" = (/obj/structure/loot_pile/surface/bones,/turf/simulated/floor/tiled/old_tile,/area/submap/lava_trench/outpost) +"ce" = (/obj/effect/floor_decal/corner_oldtile/blue/full,/obj/structure/table/standard,/turf/simulated/floor/tiled/old_tile,/area/submap/lava_trench/outpost) +"ch" = (/obj/structure/loot_pile/maint/trash,/turf/simulated/floor/outdoors/rocks/caves,/area/submap/lava_trench) +"cj" = (/obj/item/clothing/head/bio_hood/anomaly,/turf/simulated/floor/tiled/old_tile,/area/submap/lava_trench/outpost) +"ck" = (/obj/item/clothing/suit/bio_suit/anomaly,/turf/simulated/floor/tiled/old_tile,/area/submap/lava_trench/outpost) +"co" = (/obj/machinery/floodlight,/turf/simulated/floor/tiled/asteroid_steel,/area/submap/lava_trench) +"cp" = (/obj/machinery/light/small/flicker,/obj/structure/closet/crate/secure/loot,/turf/simulated/floor/tiled/asteroid_steel,/area/submap/lava_trench) +"cq" = (/obj/item/weapon/banner/nt,/turf/simulated/floor/tiled/asteroid_steel,/area/submap/lava_trench) +"cr" = (/obj/structure/table/steel,/obj/item/weapon/material/shard/phoron,/turf/simulated/floor/tiled/asteroid_steel,/area/submap/lava_trench) +"cs" = (/obj/item/weapon/banner/nt,/turf/simulated/floor/outdoors/rocks/caves,/area/submap/lava_trench) + +(1,1,1) = {" +aBaBabacacacacacacacacacacadaBaBaBaBaBaCaCaCaBaBaBaBaBaBaBaBaBaBaBaBbebebeaaaaaaaaaaaaaaaaaaaaaa +aBabaeafafafafafafafafafafagacacacacahaiajaiakacadaBaBaBaBaBaBaBaBaBaBbebebeaaaaaaaaaaaaaaaaaaaa +aBalafafafafafafafafafafafafafafafafafafafafafafagacacacacacacacadaBaBaBbebebeaaaaaaaaaaaaaaaaaa +aBamafafbaanaoaoaoaoapafafafafafafafafafafafafaqafafafafafafafafagadaBaBaBbebebeaaaaaaaaaaaaaaaa +afarafafanatauauauauavaoaoaoaoaoaoaoapawaxayafafafafafafafafafafafagadaBaBaBbebebeaaaaaaaaaaaaaa +afazafafaAauauauauauauauauauauauauauavaDaxaEaoaoaoaoaoaoaoapafafafafagadaBaBbebebebebebebebeaaaa +afarafafaFaGauauauauauauauauauauauauauaHaxaKauauauauauauauavapafafafafaLaBaBaBaBbebebebebebebeaa +aBaTafafafaFaUaGauauauauauauauafauauauaHaIaKauauauauauauauauavapafafafaLaBaBaBaBaBaBaBaBaBbebeaa +aBalafafafafafaFaGauafauauauauauauauauaHaIaKauauafauauafafauauavapafafagacacadaBaBaBaBaBaBbebeaa +aBaVaWafafaqafafaFaUafaUaGauauauauauaXaYaIaZaGauauauauauafbaauaubbafafafafafagacacacadaBaBaBaBaB +aBaBaVaWafafafafafafafafaFaUaUaUaUaUbcawaxayaFaUaUaGauauauauauaubbafafafafafafafafafamaBaBaBaBaB +aBaBaBalafafafafafafafafafafafafafafafafbwafafafbfbgbhbibibibibibjbfbfafafbaafafafafarafaBaBaBaB +beaBaBalafafafafbwbwbwbwbwafafafafafafafbwbwbwbwbkbkblblblblblblblbkbkafafafafafafafbmafaBaBaBaB +beaBaBalafafafafbwbxbEbYbwbwbwbwbwbwbwbwbwbwbwafafafaAbDbDbDbDbDavapafafafafafafafafarafaBaBaBaB +beaBaBalafafafafbwbZcacrbwbwbwcqbUaJaOaNaOcocpcsafaqaAauauauauauaubbafafafafafafafafaTafaBaBaBaB +beaBaBalafafafafbwbwbwbwbwbwaJaOaOaOaObOaOaOaOaOafafaFaGauauafauaubbafafaqbpafafafafaLafaBaBaBaB +beaBaBaVbnbnaWafafbwbwbwbwbwaOaOaSbSaOaPaObdboaOaOafafaAauauauauauavapafafafafafafafaLaBaBaBaBaB +beaBaBaBaBaBalafafafafafafafaOaRbraQbqaQbycjbtbCaOafafaAauauauauauauavapafafafbaafafaLaBaBbeaBaB +beaBaBaBaBaBalafafafafafafaMaObvaQaQaQaQaQcbbIbFaObQafaFaGauauauauauaubbafafafafafafaLaBaBbebebe +bebebebeaBaBaVbnbnbnbnaWafafaOcebBaQaQbTckaQbHbXaOafafafaAauauafauauaubbafafafafafafaLaBaBbebeaa +bebebebeaBaBaBaBaBaBaBalafafaOaObKbLbzbsbAbGbPaOaOafafafaAauauafbaauaubbafafbaafafafaLaBaBbebeaa +aaaabebebeaBaBaBaBaBaBalafafafaOaOaObsbMbsaOaOaObNafafafafafauafafauaubbafafafafafbuasaBaBbebeaa +aaaaaabebebebebebeaBaBaVbnaWafafchaOaOaOaOaObNbWafafafafaAauauauafauaubbafafafbubnasaBaBaBbebeaa +aaaaaaaabebebebebeaBaBaBaBalafafafafafbRafafafafafafafafaAauauauauauauavapafafaLaBaBaBaBbebebeaa +aaaaaaaaaaaaaabebebeaBaBaBalafafafafafafafafafafafafafafaFaGauauauauauaubbafafaLaBaBaBbebebeaaaa +aaaaaaaaaaaaaaaabebebebeaBaVbnbnbnbnbnbnbnbnbnbnbnaWafafafaFaGauauauauaubbafafaLaBaBbebebeaaaaaa +aaaaaaaaaaaaaaaaaabebebeaBaBaBaBaBaBaBaBaBaBaBaBaBalafafafafaFaUaUaUaUaUbcafafaLaBaBbebeaaaaaaaa +aaaaaaaaaaaaaaaaaaaabebebeaBaBaBaBaBaBaBaBaBaBaBaBaVbnaWafafafafafafafafafafafaLaBaBbebeaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaabebebebebebebebebebebebeaBaBaBaBaVaWafafafafafafafafafafaLaBaBbebeaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaabebebebebebebebebebebebeaBaBaBaBaVbnbnbnbnahaiajaiakbnasaBaBbebeaaaaaaaa +"} diff --git a/maps/submaps/surface_submaps/mountains/mountains.dm b/maps/submaps/surface_submaps/mountains/mountains.dm index 56a267c475..0665a6c0b7 100644 --- a/maps/submaps/surface_submaps/mountains/mountains.dm +++ b/maps/submaps/surface_submaps/mountains/mountains.dm @@ -32,6 +32,7 @@ #include "BlastMine1.dmm" #include "crashedcontainmentshuttle.dmm" #include "deadspy.dmm" +#include "lava_trench.dmm" #endif // The 'mountains' is the mining z-level, and has a lot of caves. @@ -124,12 +125,6 @@ mappath = 'maps/submaps/surface_submaps/mountains/temple.dmm' cost = 20 -/datum/map_template/surface/mountains/normal/crashedmedshuttle - name = "Crashed Med Shuttle" - desc = "A medical response shuttle that went missing some time ago. So this is where they went." - mappath = 'maps/submaps/surface_submaps/mountains/CrashedMedShuttle1.dmm' - cost = 20 - /datum/map_template/surface/mountains/normal/digsite name = "Dig Site" desc = "A small abandoned dig site." @@ -272,3 +267,17 @@ desc = "An abandoned blast mining site, seems that local wildlife has moved in." mappath = 'maps/submaps/surface_submaps/mountains/BlastMine1.dmm' cost = 20 + +/datum/map_template/surface/mountains/deep/lava_trench + name = "lava trench" + desc = "A long stretch of lava underground, almost river-like, with a small crystal research outpost on the side." + mappath = 'maps/submaps/surface_submaps/mountains/lava_trench.dmm' + cost = 20 + fixed_orientation = TRUE + +/datum/map_template/surface/mountains/deep/crashedmedshuttle + name = "Crashed Med Shuttle" + desc = "A medical response shuttle that went missing some time ago. So this is where they went." + mappath = 'maps/submaps/surface_submaps/mountains/CrashedMedShuttle1.dmm' + cost = 20 + fixed_orientation = TRUE diff --git a/maps/submaps/surface_submaps/mountains/mountains_areas.dm b/maps/submaps/surface_submaps/mountains/mountains_areas.dm index 9bcce0da1e..53fada4b7c 100644 --- a/maps/submaps/surface_submaps/mountains/mountains_areas.dm +++ b/maps/submaps/surface_submaps/mountains/mountains_areas.dm @@ -120,4 +120,13 @@ /area/submap/deadspy name = "Dead Spy" - ambience = AMBIENCE_FOREBODING \ No newline at end of file + ambience = AMBIENCE_FOREBODING + +/area/submap/lava_trench + name = "Lava Trench" + ambience = AMBIENCE_LAVA + +/area/submap/lava_trench/outpost + name = "Trench Outpost" + requires_power = FALSE + icon_state = "submap2" \ No newline at end of file diff --git a/maps/submaps/surface_submaps/mountains/quarantineshuttle.dmm b/maps/submaps/surface_submaps/mountains/quarantineshuttle.dmm index ab2a36f75b..390589daac 100644 --- a/maps/submaps/surface_submaps/mountains/quarantineshuttle.dmm +++ b/maps/submaps/surface_submaps/mountains/quarantineshuttle.dmm @@ -1,146 +1,146 @@ -"aa" = (/turf/template_noop,/area/template_noop) -"ab" = (/turf/simulated/mineral/floor/ignore_mapgen,/area/submap/cave/qShuttle) -"ac" = (/obj/item/weapon/caution/cone,/turf/simulated/mineral/floor/ignore_mapgen,/area/submap/cave/qShuttle) -"ad" = (/turf/simulated/shuttle/wall,/area/submap/cave/qShuttle) -"ae" = (/obj/structure/inflatable,/turf/simulated/mineral/floor/ignore_mapgen,/area/submap/cave/qShuttle) -"af" = (/obj/structure/inflatable/door,/turf/simulated/mineral/floor/ignore_mapgen,/area/submap/cave/qShuttle) -"ag" = (/obj/structure/shuttle/engine/heater{icon_state = "heater"; dir = 4},/turf/simulated/shuttle/plating,/area/submap/cave/qShuttle) -"ah" = (/obj/structure/shuttle/engine/propulsion{icon_state = "propulsion_l"; dir = 8},/turf/simulated/shuttle/plating,/area/submap/cave/qShuttle) -"ai" = (/obj/structure/grille,/obj/structure/shuttle/window,/obj/machinery/door/blast/regular{dir = 8; id = "QShuttlePoIDoors"; layer = 3.3; name = "Emergency Lockdown Shutters"},/obj/item/tape/medical{dir = 4; icon_state = "tape_door_0"; layer = 3.4},/turf/simulated/shuttle/plating,/area/submap/cave/qShuttle) -"aj" = (/turf/simulated/shuttle/wall/hard_corner,/area/submap/cave/qShuttle) -"ak" = (/obj/machinery/door/airlock/external{desc = "It opens and closes. It is stamped with the logo of Major Bill's Transportation"; frequency = 1380; icon_state = "door_locked"; id_tag = null; locked = 1; name = "MBT-540"},/obj/item/tape/medical{dir = 4; icon_state = "tape_door_0"; layer = 3.4},/turf/simulated/shuttle/floor{ icon_state = "floor_white"},/area/submap/cave/qShuttle) -"al" = (/obj/structure/sign/biohazard{dir = 1},/turf/simulated/shuttle/wall/hard_corner,/area/submap/cave/qShuttle) -"am" = (/obj/structure/toilet{dir = 4},/obj/effect/decal/cleanable/vomit,/obj/effect/decal/remains/human,/turf/simulated/shuttle/floor,/area/submap/cave/qShuttle) -"an" = (/obj/machinery/door/airlock{name = "Restroom"},/turf/simulated/shuttle/wall,/area/submap/cave/qShuttle) -"ao" = (/obj/effect/decal/cleanable/vomit,/turf/simulated/shuttle/floor{ icon_state = "floor_white"},/area/submap/cave/qShuttle) -"ap" = (/obj/effect/decal/remains/human,/obj/item/clothing/suit/space/emergency,/obj/item/clothing/head/helmet/space/emergency,/turf/simulated/shuttle/floor{ icon_state = "floor_white"},/area/submap/cave/qShuttle) -"aq" = (/obj/structure/bed/chair,/turf/simulated/shuttle/floor{ icon_state = "floor_white"},/area/submap/cave/qShuttle) -"ar" = (/obj/structure/bed/chair,/obj/effect/decal/remains/human,/obj/item/clothing/suit/space/emergency,/turf/simulated/shuttle/floor{ icon_state = "floor_white"},/area/submap/cave/qShuttle) -"as" = (/obj/machinery/vending/snack{contraband = null; products = list(/obj/item/weapon/reagent_containers/food/snacks/candy = 0, /obj/item/weapon/reagent_containers/food/drinks/dry_ramen = 0, /obj/item/weapon/reagent_containers/food/snacks/chips = 0, /obj/item/weapon/reagent_containers/food/snacks/sosjerky = 0, /obj/item/weapon/reagent_containers/food/snacks/no_raisin = 0, /obj/item/weapon/reagent_containers/food/snacks/spacetwinkie = 0, /obj/item/weapon/reagent_containers/food/snacks/cheesiehonkers = 0, /obj/item/weapon/reagent_containers/food/snacks/tastybread = 0, /obj/item/weapon/reagent_containers/food/snacks/skrellsnacks = 0)},/turf/simulated/shuttle/floor{ icon_state = "floor_white"},/area/submap/cave/qShuttle) -"at" = (/obj/machinery/vending/cola{contraband = null; products = list(/obj/item/weapon/reagent_containers/food/drinks/cans/cola = 0, /obj/item/weapon/reagent_containers/food/drinks/cans/space_mountain_wind = 0, /obj/item/weapon/reagent_containers/food/drinks/cans/dr_gibb = 0, /obj/item/weapon/reagent_containers/food/drinks/cans/starkist = 0, /obj/item/weapon/reagent_containers/food/drinks/cans/waterbottle = 0, /obj/item/weapon/reagent_containers/food/drinks/cans/space_up = 0, /obj/item/weapon/reagent_containers/food/drinks/cans/iced_tea = 0, /obj/item/weapon/reagent_containers/food/drinks/cans/grape_juice = 0, /obj/item/weapon/reagent_containers/food/drinks/cans/gingerale = 0)},/turf/simulated/shuttle/floor{ icon_state = "floor_white"},/area/submap/cave/qShuttle) -"au" = (/obj/structure/closet/crate/secure/loot,/turf/simulated/shuttle/floor{ icon_state = "floor_yellow"},/area/submap/cave/qShuttle) -"av" = (/obj/item/weapon/pickaxe/drill,/turf/simulated/shuttle/floor{ icon_state = "floor_yellow"},/area/submap/cave/qShuttle) -"aw" = (/obj/item/clothing/mask/breath,/obj/effect/decal/cleanable/dirt,/turf/simulated/shuttle/floor{ icon_state = "floor_white"},/area/submap/cave/qShuttle) -"ax" = (/obj/effect/decal/cleanable/generic,/turf/simulated/shuttle/floor{ icon_state = "floor_white"},/area/submap/cave/qShuttle) -"ay" = (/obj/effect/decal/remains/xeno,/turf/simulated/shuttle/floor{ icon_state = "floor_yellow"},/area/submap/cave/qShuttle) -"az" = (/obj/item/trash/syndi_cakes,/turf/simulated/shuttle/floor{ icon_state = "floor_yellow"},/area/submap/cave/qShuttle) -"aA" = (/turf/simulated/shuttle/floor{ icon_state = "floor_yellow"},/area/submap/cave/qShuttle) -"aB" = (/obj/item/weapon/cigbutt,/obj/item/weapon/tank/emergency/oxygen,/turf/simulated/shuttle/floor{ icon_state = "floor_yellow"},/area/submap/cave/qShuttle) -"aC" = (/obj/item/weapon/material/knife/tacknife/boot,/obj/item/clothing/mask/breath,/turf/simulated/shuttle/floor{ icon_state = "floor_yellow"},/area/submap/cave/qShuttle) -"aD" = (/obj/effect/decal/remains/human,/turf/simulated/shuttle/floor{ icon_state = "floor_white"},/area/submap/cave/qShuttle) -"aE" = (/obj/item/trash/sosjerky,/obj/item/weapon/storage/box/donut/empty,/obj/item/weapon/reagent_containers/food/drinks/sillycup,/turf/simulated/shuttle/floor{ icon_state = "floor_white"},/area/submap/cave/qShuttle) -"aF" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 1; health = 1e+006},/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 8},/turf/simulated/shuttle/plating,/area/submap/cave/qShuttle) -"aG" = (/obj/machinery/door/airlock/glass,/turf/simulated/shuttle/floor{ icon_state = "floor_yellow"},/area/submap/cave/qShuttle) -"aH" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 1; health = 1e+006},/obj/structure/window/reinforced{dir = 4},/turf/simulated/shuttle/plating,/area/submap/cave/qShuttle) -"aI" = (/obj/machinery/button{name = "Cargo Hatch"},/turf/simulated/shuttle/wall,/area/submap/cave/qShuttle) -"aJ" = (/obj/machinery/computer,/turf/simulated/shuttle/floor,/area/submap/cave/qShuttle) -"aK" = (/obj/structure/bed/chair/comfy/brown{dir = 8},/obj/effect/decal/cleanable/vomit,/turf/simulated/shuttle/floor{ icon_state = "floor_white"},/area/submap/cave/qShuttle) -"aL" = (/obj/structure/table/standard,/obj/item/clothing/head/helmet/space/emergency,/obj/item/weapon/paper{desc = "It looks old."; icon_state = "paper_words"; info = "Pilot's Log for Major Bill's Transportation Shuttle MBT-540
        Routine flight inbound for VIMC Outpost C-12 6:35AM 03/12/2491, Estimated arrival 7:05AM. 16 passengers, 2 crew.
        V.I.S Traffic Control 06:05:55:Major Bill's MBT-540 you are clear for departure from Dock 6 on departure route Charlie. Have a safe flight.
        Captain Willis 06:06:33: You too, control. Departing route Charlie.
        Captain Willis 06:06:48: ...Damn it.
        **
        Captain Adisu 06:10:23: Hey Ted, I'm seeing a fuel line pressure drop on engine 3?
        Captain Willis 06:10:50: Yeah, I see it. Heater's fading out, redistributing thrust 30% to compensate.
        06:12:31: A loud thud is heard.
        Captain Adisu 06:12:34: What the (Expletives)?
        Captain Adisu 06:12:39: We just lost power to engine- engine two. Hold on... Atmospheric alarm in the cargo bay. Son of a...
        Captain Willis 06:12:59: Reducing thrust further 30%, do we have a breach Adi, a breach?
        Captain Adisu 06:13:05:No breach, checking cameras... Looks like- looks like some cargo came loose back there.
        Captain Willis 06:13:15: (Expletives), I'm turning us around. Put out a distress call to Control, we'll be back in Sif orbit in a couple of minutes.
        **

        V.I.S Traffic Control 06:15:49: MBT-540 we are recieving you. Your atmospheric sensors are reading potentially harmful toxins in your cargo bay. Advise locking down interior cargo bay doors. Please stand by.
        Captain Adisu 06:16:10: Understood.
        **
        V.I.S Traffic Control 06:27:02: MBT-540, we have no docking bays available at this time, are you equipped for atmospheric re-entry?
        Captain Willis 06:27:12: We-We are shielded. But we have fuel and air for-
        V.I.S Traffic Control 06:27:17: Please make an emergency landing at the coordinates provided and standby for further information.
        **
        Captain Willis 06:36:33: Emergency landing successful. Adi, er Adisu is checking on the passengers but we had a smooth enough landing, are we clear to begin evacu-
        06:36:50: (Sound of emergency shutters closing)
        Captain Willis 06:36:51: What the hell? Control we just had a remote activation of our emergency shutters, please advise.
        V.I.S Traffic Control 06:38:10: Captain, please tune to frequency 1493.8 we are passing you on to local emergency response units. Godspeed.
        Captain Willis 06:38:49: This is Captain Willis of Major Bill's Transportation flight MBT-540 we have eighteen souls aboard and our emergency lockdown shutters have engaged remotely. Do you read?
        S.D.D.C: This is the Sif Department of Disease Control, your vessel has been identified as carrying highly sensitive materials, and due to the nature of your system's automated alerts you will be asked to remain in quarantine until we are able to determine the nature of the pathogens aboard and whether it has entered the air circulation system. Please remain in your cockpit at this time.
        **
        Captain Adisu 17:23:58:09: I don't think they're opening those doors Ted. I don't think they're coming.
        "; item_state = "paper"; name = "Black Box Transcript MBT-540"},/turf/simulated/shuttle/floor,/area/submap/cave/qShuttle) -"aM" = (/obj/item/trash/cheesie,/obj/effect/decal/remains/human,/turf/simulated/shuttle/floor{ icon_state = "floor_white"},/area/submap/cave/qShuttle) -"aN" = (/obj/effect/decal/cleanable/dirt,/turf/simulated/shuttle/floor{ icon_state = "floor_yellow"},/area/submap/cave/qShuttle) -"aO" = (/obj/structure/bed/chair{dir = 1},/obj/effect/decal/cleanable/dirt,/turf/simulated/shuttle/floor{ icon_state = "floor_yellow"},/area/submap/cave/qShuttle) -"aP" = (/obj/structure/bed/chair{dir = 1},/obj/effect/decal/remains/human,/obj/item/clothing/mask/breath,/turf/simulated/shuttle/floor{ icon_state = "floor_white"},/area/submap/cave/qShuttle) -"aQ" = (/obj/structure/bed/chair{dir = 1},/turf/simulated/shuttle/floor{ icon_state = "floor_white"},/area/submap/cave/qShuttle) -"aR" = (/obj/structure/bed/chair{dir = 1},/turf/simulated/shuttle/floor{ icon_state = "floor_yellow"},/area/submap/cave/qShuttle) -"aS" = (/obj/effect/decal/cleanable/vomit,/turf/simulated/shuttle/floor{ icon_state = "floor_yellow"},/area/submap/cave/qShuttle) -"aT" = (/obj/item/clothing/head/helmet/space/emergency,/turf/simulated/shuttle/floor{ icon_state = "floor_white"},/area/submap/cave/qShuttle) -"aU" = (/obj/machinery/door/airlock/engineering{icon_state = "door_locked"; locked = 1; name = "Cargo Bay"},/turf/simulated/shuttle/floor{ icon_state = "floor_yellow"},/area/submap/cave/qShuttle) -"aV" = (/obj/item/weapon/virusdish/random,/turf/simulated/shuttle/floor{ icon_state = "floor_yellow"},/area/submap/cave/qShuttle) -"aW" = (/obj/item/weapon/material/shard,/turf/simulated/shuttle/floor{ icon_state = "floor_yellow"},/area/submap/cave/qShuttle) -"aX" = (/obj/item/device/paicard,/turf/simulated/shuttle/floor{ icon_state = "floor_yellow"},/area/submap/cave/qShuttle) -"aY" = (/obj/machinery/door/blast/regular{name = "Cargo Door"},/obj/item/tape/medical{dir = 4; icon_state = "tape_door_0"; layer = 3.4},/turf/simulated/shuttle/floor{ icon_state = "floor_yellow"},/area/submap/cave/qShuttle) -"aZ" = (/obj/effect/decal/remains/human,/obj/item/clothing/under/mbill{desc = "A uniform belonging to Major Bill's Transportation, a shipping megacorporation. This looks at least a few decades out of date."; name = "\improper old Major Bill's uniform"},/obj/item/clothing/head/soft/mbill{desc = "It's a ballcap bearing the colors of Major Bill's Shipping. This one looks at least a few decades out of date."; name = "old shipping cap"},/turf/simulated/shuttle/floor,/area/submap/cave/qShuttle) -"ba" = (/obj/item/weapon/cigbutt,/turf/simulated/shuttle/floor{ icon_state = "floor_white"},/area/submap/cave/qShuttle) -"bb" = (/obj/machinery/door/airlock/command{icon_state = "door_locked"; locked = 1},/turf/simulated/shuttle/floor{ icon_state = "floor_white"},/area/submap/cave/qShuttle) -"bc" = (/obj/item/weapon/tank/emergency/oxygen/engi,/obj/effect/decal/cleanable/dirt,/turf/simulated/shuttle/floor{ icon_state = "floor_white"},/area/submap/cave/qShuttle) -"bd" = (/obj/effect/decal/remains/human,/obj/item/clothing/suit/space/emergency,/obj/item/clothing/head/helmet/space/emergency,/obj/effect/decal/cleanable/dirt,/turf/simulated/shuttle/floor{ icon_state = "floor_yellow"},/area/submap/cave/qShuttle) -"be" = (/obj/structure/grille,/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced{dir = 1; health = 1e+006},/turf/simulated/shuttle/plating,/area/submap/cave/qShuttle) -"bf" = (/obj/structure/grille,/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 1; health = 1e+006},/turf/simulated/shuttle/plating,/area/submap/cave/qShuttle) -"bg" = (/obj/structure/grille,/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 1; health = 1e+006},/turf/simulated/shuttle/plating,/area/submap/cave/qShuttle) -"bh" = (/obj/item/clothing/suit/space/emergency,/turf/simulated/shuttle/floor{ icon_state = "floor_yellow"},/area/submap/cave/qShuttle) -"bi" = (/obj/item/trash/candy,/obj/effect/decal/cleanable/dirt,/turf/simulated/shuttle/floor{ icon_state = "floor_white"},/area/submap/cave/qShuttle) -"bj" = (/obj/structure/table/rack,/obj/structure/loot_pile/maint/boxfort,/turf/simulated/shuttle/floor{ icon_state = "floor_yellow"},/area/submap/cave/qShuttle) -"bk" = (/obj/structure/table/rack,/obj/item/weapon/shovel,/turf/simulated/shuttle/floor{ icon_state = "floor_yellow"},/area/submap/cave/qShuttle) -"bl" = (/obj/structure/closet/crate/secure/science{icon_state = "scisecurecrateopen"; locked = 0; name = "Virus Samples - FRAGILE"; opened = 1},/obj/item/weapon/virusdish/random,/obj/item/weapon/virusdish/random,/obj/item/weapon/virusdish/random,/turf/simulated/shuttle/floor{ icon_state = "floor_yellow"},/area/submap/cave/qShuttle) -"bm" = (/obj/structure/bed/chair/comfy/brown{dir = 8},/obj/effect/decal/remains/human,/obj/item/clothing/under/mbill{desc = "A uniform belonging to Major Bill's Transportation, a shipping megacorporation. This looks at least a few decades out of date."; name = "\improper old Major Bill's uniform"},/obj/item/clothing/head/soft/mbill{desc = "It's a ballcap bearing the colors of Major Bill's Shipping. This one looks at least a few decades out of date."; name = "old shipping cap"},/turf/simulated/shuttle/floor{ icon_state = "floor_white"},/area/submap/cave/qShuttle) -"bn" = (/obj/structure/table/standard,/obj/item/device/taperecorder,/turf/simulated/shuttle/floor,/area/submap/cave/qShuttle) -"bo" = (/obj/item/weapon/tool/crowbar/red,/turf/simulated/shuttle/floor{ icon_state = "floor_white"},/area/submap/cave/qShuttle) -"bp" = (/obj/item/trash/chips,/obj/effect/decal/cleanable/dirt,/turf/simulated/shuttle/floor{ icon_state = "floor_yellow"},/area/submap/cave/qShuttle) -"bq" = (/obj/structure/bed/chair,/turf/simulated/shuttle/floor{ icon_state = "floor_yellow"},/area/submap/cave/qShuttle) -"br" = (/obj/structure/bed/chair,/obj/effect/decal/cleanable/dirt,/turf/simulated/shuttle/floor{ icon_state = "floor_white"},/area/submap/cave/qShuttle) -"bs" = (/obj/structure/bed/chair,/obj/effect/decal/remains/human,/obj/item/clothing/mask/breath,/obj/item/clothing/head/soft/mbill{desc = "It's a ballcap bearing the colors of Major Bill's Shipping. This one looks at least a few decades out of date."; name = "old shipping cap"},/turf/simulated/shuttle/floor{ icon_state = "floor_white"},/area/submap/cave/qShuttle) -"bt" = (/obj/structure/bed/chair,/obj/effect/decal/remains/human,/turf/simulated/shuttle/floor{ icon_state = "floor_white"},/area/submap/cave/qShuttle) -"bu" = (/obj/effect/decal/remains/xeno,/obj/effect/decal/cleanable/dirt,/turf/simulated/shuttle/floor{ icon_state = "floor_white"},/area/submap/cave/qShuttle) -"bv" = (/obj/item/weapon/material/shard{icon_state = "medium"},/turf/simulated/shuttle/floor{ icon_state = "floor_yellow"},/area/submap/cave/qShuttle) -"bw" = (/obj/effect/decal/remains/mouse,/turf/simulated/shuttle/floor{ icon_state = "floor_yellow"},/area/submap/cave/qShuttle) -"bx" = (/obj/random/maintenance,/turf/simulated/shuttle/floor{ icon_state = "floor_yellow"},/area/submap/cave/qShuttle) -"by" = (/obj/item/weapon/coin/silver,/turf/simulated/shuttle/floor{ icon_state = "floor_white"},/area/submap/cave/qShuttle) -"bz" = (/obj/effect/decal/remains/human,/obj/item/clothing/suit/space/emergency,/obj/item/clothing/head/helmet/space/emergency,/turf/simulated/shuttle/floor{ icon_state = "floor_yellow"},/area/submap/cave/qShuttle) -"bA" = (/obj/effect/decal/cleanable/generic,/turf/simulated/shuttle/floor{ icon_state = "floor_yellow"},/area/submap/cave/qShuttle) -"bB" = (/obj/item/weapon/tank/emergency/oxygen/engi,/turf/simulated/shuttle/floor{ icon_state = "floor_yellow"},/area/submap/cave/qShuttle) -"bC" = (/obj/item/trash/sosjerky,/obj/effect/decal/remains/human,/turf/simulated/shuttle/floor{ icon_state = "floor_white"},/area/submap/cave/qShuttle) -"bD" = (/obj/effect/decal/remains/human,/obj/item/clothing/mask/breath,/turf/simulated/shuttle/floor{ icon_state = "floor_white"},/area/submap/cave/qShuttle) -"bE" = (/obj/structure/grille,/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced{dir = 1},/turf/simulated/shuttle/plating,/area/submap/cave/qShuttle) -"bF" = (/obj/structure/grille,/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 1},/turf/simulated/shuttle/plating,/area/submap/cave/qShuttle) -"bG" = (/obj/machinery/button{dir = 4; name = "Cargo Access"},/turf/simulated/shuttle/wall,/area/submap/cave/qShuttle) -"bH" = (/obj/machinery/recharge_station,/turf/simulated/shuttle/floor,/area/submap/cave/qShuttle) -"bI" = (/obj/machinery/door/airlock{name = "Charge Station"},/turf/simulated/shuttle/wall,/area/submap/cave/qShuttle) -"bJ" = (/obj/item/trash/tastybread,/obj/item/weapon/material/butterfly/boxcutter,/obj/effect/decal/cleanable/dirt,/turf/simulated/shuttle/floor{ icon_state = "floor_white"},/area/submap/cave/qShuttle) -"bK" = (/obj/effect/decal/cleanable/vomit,/obj/effect/decal/cleanable/mucus/mapped,/turf/simulated/shuttle/floor{ icon_state = "floor_white"},/area/submap/cave/qShuttle) -"bL" = (/obj/structure/bed/chair{dir = 1},/obj/effect/decal/remains/xeno,/turf/simulated/shuttle/floor{ icon_state = "floor_white"},/area/submap/cave/qShuttle) -"bM" = (/obj/structure/bed/chair{dir = 1},/obj/item/weapon/card/id/external{desc = "An identification card of some sort. Looks like this one was issued by the Vir Independent Mining Corp."; name = "VIMC identification card"; rank = "Miner"; registered_name = "Nadia Chu"},/turf/simulated/shuttle/floor{ icon_state = "floor_white"},/area/submap/cave/qShuttle) -"bN" = (/obj/structure/table/rack,/obj/item/weapon/storage/toolbox/emergency,/turf/simulated/shuttle/floor{ icon_state = "floor_white"},/area/submap/cave/qShuttle) -"bO" = (/obj/structure/table/rack,/obj/item/clothing/head/soft/mbill{desc = "It's a ballcap bearing the colors of Major Bill's Shipping. This one looks at least a few decades out of date."; name = "old shipping cap"},/turf/simulated/shuttle/floor{ icon_state = "floor_white"},/area/submap/cave/qShuttle) -"bP" = (/obj/structure/ore_box,/turf/simulated/shuttle/floor{ icon_state = "floor_yellow"},/area/submap/cave/qShuttle) -"bQ" = (/obj/item/weapon/contraband/poster,/turf/simulated/shuttle/floor{ icon_state = "floor_yellow"},/area/submap/cave/qShuttle) -"bR" = (/obj/structure/loot_pile/maint/technical,/turf/simulated/shuttle/floor{ icon_state = "floor_yellow"},/area/submap/cave/qShuttle) -"bS" = (/obj/structure/sign/biohazard,/turf/simulated/shuttle/wall/hard_corner,/area/submap/cave/qShuttle) -"bT" = (/obj/item/tape/medical{icon_state = "tape_v_0"},/turf/simulated/mineral/floor/ignore_mapgen,/area/submap/cave/qShuttle) -"bU" = (/obj/item/taperoll/medical,/turf/simulated/mineral/floor/ignore_mapgen,/area/submap/cave/qShuttle) -"bV" = (/obj/item/tape/medical{dir = 1; icon_state = "tape_dir_0"},/obj/item/tape/medical{dir = 4; icon_state = "tape_dir_0"},/turf/simulated/mineral/floor/ignore_mapgen,/area/submap/cave/qShuttle) -"bW" = (/obj/item/tape/medical{icon_state = "tape_h_0"},/turf/simulated/mineral/floor/ignore_mapgen,/area/submap/cave/qShuttle) -"bX" = (/obj/structure/lattice,/turf/simulated/mineral/floor/ignore_mapgen,/area/submap/cave/qShuttle) -"bY" = (/obj/structure/sign/warning/secure_area,/turf/simulated/wall/iron,/area/submap/cave/qShuttle) -"bZ" = (/obj/structure/sign/kiddieplaque{desc = "By order of the S.D.D.C, this site or craft is to be buried and not disturbed until such time that sterility can be confirmed. Dated: 20/12/2491 "; name = "\improper Sif Department of Disease Control notice"},/turf/simulated/wall/iron,/area/submap/cave/qShuttle) -"ca" = (/obj/structure/sign/warning,/turf/simulated/wall/iron,/area/submap/cave/qShuttle) -"cb" = (/obj/item/bodybag,/turf/simulated/mineral/floor/ignore_mapgen,/area/submap/cave/qShuttle) -"cc" = (/obj/structure/table/steel,/obj/item/weapon/storage/box/bodybags,/turf/simulated/mineral/floor/ignore_mapgen,/area/submap/cave/qShuttle) -"cd" = (/obj/structure/table/steel,/obj/item/clothing/suit/bio_suit,/obj/random/medical/lite,/turf/simulated/mineral/floor/ignore_mapgen,/area/submap/cave/qShuttle) -"ce" = (/obj/structure/closet/l3closet/virology,/turf/simulated/mineral/floor/ignore_mapgen,/area/submap/cave/qShuttle) -"cf" = (/obj/item/weapon/reagent_containers/syringe/antiviral,/turf/simulated/mineral/floor/ignore_mapgen,/area/submap/cave/qShuttle) -"cg" = (/obj/structure/dispenser/oxygen,/turf/simulated/mineral/floor/ignore_mapgen,/area/submap/cave/qShuttle) -"ch" = (/obj/structure/table/steel,/turf/simulated/mineral/floor/ignore_mapgen,/area/submap/cave/qShuttle) -"ci" = (/obj/structure/table/steel,/obj/item/weapon/reagent_containers/syringe/antiviral,/turf/simulated/mineral/floor/ignore_mapgen,/area/submap/cave/qShuttle) -"cj" = (/obj/structure/table/steel,/obj/item/weapon/reagent_containers/spray/cleaner{desc = "Someone has crossed out the 'Space' from Space Cleaner and written in Chemistry. Scrawled on the back is, 'Okay, whoever filled this with polytrinic acid, it was only funny the first time. It was hard enough replacing the CMO's first cat!'"; name = "Chemistry Cleaner"},/turf/simulated/mineral/floor/ignore_mapgen,/area/submap/cave/qShuttle) -"ck" = (/obj/structure/table/steel,/obj/item/weapon/tool/crowbar/power,/turf/simulated/mineral/floor/ignore_mapgen,/area/submap/cave/qShuttle) -"cl" = (/obj/structure/table/rack,/obj/item/clothing/head/bio_hood,/obj/item/clothing/suit/bio_suit,/turf/simulated/mineral/floor/ignore_mapgen,/area/submap/cave/qShuttle) -"cm" = (/obj/item/weapon/weldingtool/largetank,/turf/simulated/mineral/floor/ignore_mapgen,/area/submap/cave/qShuttle) -"cn" = (/obj/structure/closet/crate/medical,/turf/simulated/mineral/floor/ignore_mapgen,/area/submap/cave/qShuttle) - -(1,1,1) = {" -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaababaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaabacababaaaaadadadacaa -aaabababababaeafaeaeabaaaaabababababababadagahabaa -aaacababadaiajakakalaiadaiadadadadadadadadadadaaaa -aaababadadamanaoapadaqaqaradasatadauavauadagahaaaa -aaaaadadadadadawaxayazaAaBaCaDaEadaFaGaHadaIadabaa -aaaaaiaJaKaLadaMaNaOaPaQaQaRaSaTaUaVaAaWaXaAaYabaa -aaabaiaZbababbbcbdadbebfbgadbhbiadbjaAbkaAblaYabaa -aaabaiaJbmbnadbobpbqbrbsbtbqaNbuaUbvaAbwaVbxaYabaa -aaabadadadadadaDbyaAbzaAbAbBbCbDadbEaGbFadadbGabaa -aaababadadbHbIbJbKadbLaQbMadbNbOadbPbQbRadagahabaa -ababacabadaiajakakbSaiadaiadadadadadadadadadadaaaa -ababababbTabaeaeafaeababababbUabababababadagahaaaa -aaabababbVbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWadadadaaaa -aaaaababababababababbXbYbZcacbcbcbabcccdceabcfaaaa -aaaaacababcgchcicjckclababcmabcbcbababababababaaaa -aaaaaaababcnchababababababababaaaaaaaaaaababacaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -"} +"aa" = (/turf/template_noop,/area/template_noop) +"ab" = (/turf/simulated/mineral/floor/ignore_mapgen,/area/submap/cave/qShuttle) +"ac" = (/obj/item/weapon/caution/cone,/turf/simulated/mineral/floor/ignore_mapgen,/area/submap/cave/qShuttle) +"ad" = (/turf/simulated/shuttle/wall,/area/submap/cave/qShuttle) +"ae" = (/obj/structure/inflatable,/turf/simulated/mineral/floor/ignore_mapgen,/area/submap/cave/qShuttle) +"af" = (/obj/structure/inflatable/door,/turf/simulated/mineral/floor/ignore_mapgen,/area/submap/cave/qShuttle) +"ag" = (/obj/structure/shuttle/engine/heater{icon_state = "heater"; dir = 4},/turf/simulated/shuttle/plating,/area/submap/cave/qShuttle) +"ah" = (/obj/structure/shuttle/engine/propulsion{icon_state = "propulsion_l"; dir = 8},/turf/simulated/shuttle/plating,/area/submap/cave/qShuttle) +"ai" = (/obj/structure/grille,/obj/structure/shuttle/window,/obj/machinery/door/blast/regular{dir = 8; id = "QShuttlePoIDoors"; layer = 3.3; name = "Emergency Lockdown Shutters"},/obj/item/tape/medical{dir = 4; icon_state = "tape_door_0"; layer = 3.4},/turf/simulated/shuttle/plating,/area/submap/cave/qShuttle) +"aj" = (/turf/simulated/shuttle/wall/hard_corner,/area/submap/cave/qShuttle) +"ak" = (/obj/machinery/door/airlock/external{desc = "It opens and closes. It is stamped with the logo of Major Bill's Transportation"; frequency = 1380; icon_state = "door_locked"; id_tag = null; locked = 1; name = "MBT-540"},/obj/item/tape/medical{dir = 4; icon_state = "tape_door_0"; layer = 3.4},/turf/simulated/shuttle/floor{icon_state = "floor_white"},/area/submap/cave/qShuttle) +"al" = (/obj/structure/sign/biohazard{dir = 1},/turf/simulated/shuttle/wall/hard_corner,/area/submap/cave/qShuttle) +"am" = (/obj/structure/toilet{dir = 4},/obj/effect/decal/cleanable/vomit,/obj/effect/decal/remains/human,/turf/simulated/shuttle/floor,/area/submap/cave/qShuttle) +"an" = (/obj/machinery/door/airlock{name = "Restroom"},/turf/simulated/shuttle/wall,/area/submap/cave/qShuttle) +"ao" = (/obj/effect/decal/cleanable/vomit,/turf/simulated/shuttle/floor{icon_state = "floor_white"},/area/submap/cave/qShuttle) +"ap" = (/obj/effect/decal/remains/human,/obj/item/clothing/suit/space/emergency,/obj/item/clothing/head/helmet/space/emergency,/turf/simulated/shuttle/floor{icon_state = "floor_white"},/area/submap/cave/qShuttle) +"aq" = (/obj/structure/bed/chair,/turf/simulated/shuttle/floor{icon_state = "floor_white"},/area/submap/cave/qShuttle) +"ar" = (/obj/structure/bed/chair,/obj/effect/decal/remains/human,/obj/item/clothing/suit/space/emergency,/turf/simulated/shuttle/floor{icon_state = "floor_white"},/area/submap/cave/qShuttle) +"as" = (/obj/machinery/vending/snack{contraband = null; products = list(/obj/item/weapon/reagent_containers/food/snacks/candy = 0, /obj/item/weapon/reagent_containers/food/drinks/dry_ramen = 0, /obj/item/weapon/reagent_containers/food/snacks/chips = 0, /obj/item/weapon/reagent_containers/food/snacks/sosjerky = 0, /obj/item/weapon/reagent_containers/food/snacks/no_raisin = 0, /obj/item/weapon/reagent_containers/food/snacks/spacetwinkie = 0, /obj/item/weapon/reagent_containers/food/snacks/cheesiehonkers = 0, /obj/item/weapon/reagent_containers/food/snacks/tastybread = 0, /obj/item/weapon/reagent_containers/food/snacks/skrellsnacks = 0)},/turf/simulated/shuttle/floor{icon_state = "floor_white"},/area/submap/cave/qShuttle) +"at" = (/obj/machinery/vending/cola{contraband = null; products = list(/obj/item/weapon/reagent_containers/food/drinks/cans/cola = 0, /obj/item/weapon/reagent_containers/food/drinks/cans/space_mountain_wind = 0, /obj/item/weapon/reagent_containers/food/drinks/cans/dr_gibb = 0, /obj/item/weapon/reagent_containers/food/drinks/cans/starkist = 0, /obj/item/weapon/reagent_containers/food/drinks/cans/waterbottle = 0, /obj/item/weapon/reagent_containers/food/drinks/cans/space_up = 0, /obj/item/weapon/reagent_containers/food/drinks/cans/iced_tea = 0, /obj/item/weapon/reagent_containers/food/drinks/cans/grape_juice = 0, /obj/item/weapon/reagent_containers/food/drinks/cans/gingerale = 0)},/turf/simulated/shuttle/floor{icon_state = "floor_white"},/area/submap/cave/qShuttle) +"au" = (/obj/structure/closet/crate/secure/loot,/turf/simulated/shuttle/floor{icon_state = "floor_yellow"},/area/submap/cave/qShuttle) +"av" = (/obj/item/weapon/pickaxe/drill,/turf/simulated/shuttle/floor{icon_state = "floor_yellow"},/area/submap/cave/qShuttle) +"aw" = (/obj/item/clothing/mask/breath,/obj/effect/decal/cleanable/dirt,/turf/simulated/shuttle/floor{icon_state = "floor_white"},/area/submap/cave/qShuttle) +"ax" = (/obj/effect/decal/cleanable/generic,/turf/simulated/shuttle/floor{icon_state = "floor_white"},/area/submap/cave/qShuttle) +"ay" = (/obj/effect/decal/remains/xeno,/turf/simulated/shuttle/floor{icon_state = "floor_yellow"},/area/submap/cave/qShuttle) +"az" = (/obj/item/trash/syndi_cakes,/turf/simulated/shuttle/floor{icon_state = "floor_yellow"},/area/submap/cave/qShuttle) +"aA" = (/turf/simulated/shuttle/floor{icon_state = "floor_yellow"},/area/submap/cave/qShuttle) +"aB" = (/obj/item/weapon/cigbutt,/obj/item/weapon/tank/emergency/oxygen,/turf/simulated/shuttle/floor{icon_state = "floor_yellow"},/area/submap/cave/qShuttle) +"aC" = (/obj/item/weapon/material/knife/tacknife/boot,/obj/item/clothing/mask/breath,/turf/simulated/shuttle/floor{icon_state = "floor_yellow"},/area/submap/cave/qShuttle) +"aD" = (/obj/effect/decal/remains/human,/turf/simulated/shuttle/floor{icon_state = "floor_white"},/area/submap/cave/qShuttle) +"aE" = (/obj/item/trash/sosjerky,/obj/item/weapon/storage/box/donut/empty,/obj/item/weapon/reagent_containers/food/drinks/sillycup,/turf/simulated/shuttle/floor{icon_state = "floor_white"},/area/submap/cave/qShuttle) +"aF" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 1; health = 1e+006},/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 8},/turf/simulated/shuttle/plating,/area/submap/cave/qShuttle) +"aG" = (/obj/machinery/door/airlock/glass,/turf/simulated/shuttle/floor{icon_state = "floor_yellow"},/area/submap/cave/qShuttle) +"aH" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 1; health = 1e+006},/obj/structure/window/reinforced{dir = 4},/turf/simulated/shuttle/plating,/area/submap/cave/qShuttle) +"aI" = (/obj/machinery/button{name = "Cargo Hatch"},/turf/simulated/shuttle/wall,/area/submap/cave/qShuttle) +"aJ" = (/obj/machinery/computer,/turf/simulated/shuttle/floor,/area/submap/cave/qShuttle) +"aK" = (/obj/structure/bed/chair/comfy/brown{dir = 8},/obj/effect/decal/cleanable/vomit,/turf/simulated/shuttle/floor{icon_state = "floor_white"},/area/submap/cave/qShuttle) +"aL" = (/obj/structure/prop/blackbox/quarantined_shuttle,/turf/simulated/shuttle/floor,/area/submap/cave/qShuttle) +"aM" = (/obj/item/trash/cheesie,/obj/effect/decal/remains/human,/turf/simulated/shuttle/floor{icon_state = "floor_white"},/area/submap/cave/qShuttle) +"aN" = (/obj/effect/decal/cleanable/dirt,/turf/simulated/shuttle/floor{icon_state = "floor_yellow"},/area/submap/cave/qShuttle) +"aO" = (/obj/structure/bed/chair{dir = 1},/obj/effect/decal/cleanable/dirt,/turf/simulated/shuttle/floor{icon_state = "floor_yellow"},/area/submap/cave/qShuttle) +"aP" = (/obj/structure/bed/chair{dir = 1},/obj/effect/decal/remains/human,/obj/item/clothing/mask/breath,/turf/simulated/shuttle/floor{icon_state = "floor_white"},/area/submap/cave/qShuttle) +"aQ" = (/obj/structure/bed/chair{dir = 1},/turf/simulated/shuttle/floor{icon_state = "floor_white"},/area/submap/cave/qShuttle) +"aR" = (/obj/structure/bed/chair{dir = 1},/turf/simulated/shuttle/floor{icon_state = "floor_yellow"},/area/submap/cave/qShuttle) +"aS" = (/obj/effect/decal/cleanable/vomit,/turf/simulated/shuttle/floor{icon_state = "floor_yellow"},/area/submap/cave/qShuttle) +"aT" = (/obj/item/clothing/head/helmet/space/emergency,/turf/simulated/shuttle/floor{icon_state = "floor_white"},/area/submap/cave/qShuttle) +"aU" = (/obj/machinery/door/airlock/engineering{icon_state = "door_locked"; locked = 1; name = "Cargo Bay"},/turf/simulated/shuttle/floor{icon_state = "floor_yellow"},/area/submap/cave/qShuttle) +"aV" = (/obj/item/weapon/virusdish/random,/turf/simulated/shuttle/floor{icon_state = "floor_yellow"},/area/submap/cave/qShuttle) +"aW" = (/obj/item/weapon/material/shard,/turf/simulated/shuttle/floor{icon_state = "floor_yellow"},/area/submap/cave/qShuttle) +"aX" = (/obj/item/device/paicard,/turf/simulated/shuttle/floor{icon_state = "floor_yellow"},/area/submap/cave/qShuttle) +"aY" = (/obj/machinery/door/blast/regular{name = "Cargo Door"},/obj/item/tape/medical{dir = 4; icon_state = "tape_door_0"; layer = 3.4},/turf/simulated/shuttle/floor{icon_state = "floor_yellow"},/area/submap/cave/qShuttle) +"aZ" = (/obj/effect/decal/remains/human,/obj/item/clothing/under/mbill{desc = "A uniform belonging to Major Bill's Transportation, a shipping megacorporation. This looks at least a few decades out of date."; name = "\improper old Major Bill's uniform"},/obj/item/clothing/head/soft/mbill{desc = "It's a ballcap bearing the colors of Major Bill's Shipping. This one looks at least a few decades out of date."; name = "old shipping cap"},/turf/simulated/shuttle/floor,/area/submap/cave/qShuttle) +"ba" = (/obj/item/weapon/cigbutt,/turf/simulated/shuttle/floor{icon_state = "floor_white"},/area/submap/cave/qShuttle) +"bb" = (/obj/machinery/door/airlock/command{icon_state = "door_locked"; locked = 1},/turf/simulated/shuttle/floor{icon_state = "floor_white"},/area/submap/cave/qShuttle) +"bc" = (/obj/item/weapon/tank/emergency/oxygen/engi,/obj/effect/decal/cleanable/dirt,/turf/simulated/shuttle/floor{icon_state = "floor_white"},/area/submap/cave/qShuttle) +"bd" = (/obj/effect/decal/remains/human,/obj/item/clothing/suit/space/emergency,/obj/item/clothing/head/helmet/space/emergency,/obj/effect/decal/cleanable/dirt,/turf/simulated/shuttle/floor{icon_state = "floor_yellow"},/area/submap/cave/qShuttle) +"be" = (/obj/structure/grille,/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced{dir = 1; health = 1e+006},/turf/simulated/shuttle/plating,/area/submap/cave/qShuttle) +"bf" = (/obj/structure/grille,/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 1; health = 1e+006},/turf/simulated/shuttle/plating,/area/submap/cave/qShuttle) +"bg" = (/obj/structure/grille,/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 1; health = 1e+006},/turf/simulated/shuttle/plating,/area/submap/cave/qShuttle) +"bh" = (/obj/item/clothing/suit/space/emergency,/turf/simulated/shuttle/floor{icon_state = "floor_yellow"},/area/submap/cave/qShuttle) +"bi" = (/obj/item/trash/candy,/obj/effect/decal/cleanable/dirt,/turf/simulated/shuttle/floor{icon_state = "floor_white"},/area/submap/cave/qShuttle) +"bj" = (/obj/structure/table/rack,/obj/structure/loot_pile/maint/boxfort,/turf/simulated/shuttle/floor{icon_state = "floor_yellow"},/area/submap/cave/qShuttle) +"bk" = (/obj/structure/table/rack,/obj/item/weapon/shovel,/turf/simulated/shuttle/floor{icon_state = "floor_yellow"},/area/submap/cave/qShuttle) +"bl" = (/obj/structure/closet/crate/secure/science{icon_state = "scisecurecrateopen"; locked = 0; name = "Virus Samples - FRAGILE"; opened = 1},/obj/item/weapon/virusdish/random,/obj/item/weapon/virusdish/random,/obj/item/weapon/virusdish/random,/turf/simulated/shuttle/floor{icon_state = "floor_yellow"},/area/submap/cave/qShuttle) +"bm" = (/obj/structure/bed/chair/comfy/brown{dir = 8},/obj/effect/decal/remains/human,/obj/item/clothing/under/mbill{desc = "A uniform belonging to Major Bill's Transportation, a shipping megacorporation. This looks at least a few decades out of date."; name = "\improper old Major Bill's uniform"},/obj/item/clothing/head/soft/mbill{desc = "It's a ballcap bearing the colors of Major Bill's Shipping. This one looks at least a few decades out of date."; name = "old shipping cap"},/turf/simulated/shuttle/floor{icon_state = "floor_white"},/area/submap/cave/qShuttle) +"bn" = (/obj/structure/table/standard,/obj/item/device/taperecorder,/turf/simulated/shuttle/floor,/area/submap/cave/qShuttle) +"bo" = (/obj/item/weapon/tool/crowbar/red,/turf/simulated/shuttle/floor{icon_state = "floor_white"},/area/submap/cave/qShuttle) +"bp" = (/obj/item/trash/chips,/obj/effect/decal/cleanable/dirt,/turf/simulated/shuttle/floor{icon_state = "floor_yellow"},/area/submap/cave/qShuttle) +"bq" = (/obj/structure/bed/chair,/turf/simulated/shuttle/floor{icon_state = "floor_yellow"},/area/submap/cave/qShuttle) +"br" = (/obj/structure/bed/chair,/obj/effect/decal/cleanable/dirt,/turf/simulated/shuttle/floor{icon_state = "floor_white"},/area/submap/cave/qShuttle) +"bs" = (/obj/structure/bed/chair,/obj/effect/decal/remains/human,/obj/item/clothing/mask/breath,/obj/item/clothing/head/soft/mbill{desc = "It's a ballcap bearing the colors of Major Bill's Shipping. This one looks at least a few decades out of date."; name = "old shipping cap"},/turf/simulated/shuttle/floor{icon_state = "floor_white"},/area/submap/cave/qShuttle) +"bt" = (/obj/structure/bed/chair,/obj/effect/decal/remains/human,/turf/simulated/shuttle/floor{icon_state = "floor_white"},/area/submap/cave/qShuttle) +"bu" = (/obj/effect/decal/remains/xeno,/obj/effect/decal/cleanable/dirt,/turf/simulated/shuttle/floor{icon_state = "floor_white"},/area/submap/cave/qShuttle) +"bv" = (/obj/item/weapon/material/shard{icon_state = "medium"},/turf/simulated/shuttle/floor{icon_state = "floor_yellow"},/area/submap/cave/qShuttle) +"bw" = (/obj/effect/decal/remains/mouse,/turf/simulated/shuttle/floor{icon_state = "floor_yellow"},/area/submap/cave/qShuttle) +"bx" = (/obj/random/maintenance,/turf/simulated/shuttle/floor{icon_state = "floor_yellow"},/area/submap/cave/qShuttle) +"by" = (/obj/item/weapon/coin/silver,/turf/simulated/shuttle/floor{icon_state = "floor_white"},/area/submap/cave/qShuttle) +"bz" = (/obj/effect/decal/remains/human,/obj/item/clothing/suit/space/emergency,/obj/item/clothing/head/helmet/space/emergency,/turf/simulated/shuttle/floor{icon_state = "floor_yellow"},/area/submap/cave/qShuttle) +"bA" = (/obj/effect/decal/cleanable/generic,/turf/simulated/shuttle/floor{icon_state = "floor_yellow"},/area/submap/cave/qShuttle) +"bB" = (/obj/item/weapon/tank/emergency/oxygen/engi,/turf/simulated/shuttle/floor{icon_state = "floor_yellow"},/area/submap/cave/qShuttle) +"bC" = (/obj/item/trash/sosjerky,/obj/effect/decal/remains/human,/turf/simulated/shuttle/floor{icon_state = "floor_white"},/area/submap/cave/qShuttle) +"bD" = (/obj/effect/decal/remains/human,/obj/item/clothing/mask/breath,/turf/simulated/shuttle/floor{icon_state = "floor_white"},/area/submap/cave/qShuttle) +"bE" = (/obj/structure/grille,/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced{dir = 1},/turf/simulated/shuttle/plating,/area/submap/cave/qShuttle) +"bF" = (/obj/structure/grille,/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 1},/turf/simulated/shuttle/plating,/area/submap/cave/qShuttle) +"bG" = (/obj/machinery/button{dir = 4; name = "Cargo Access"},/turf/simulated/shuttle/wall,/area/submap/cave/qShuttle) +"bH" = (/obj/machinery/recharge_station,/turf/simulated/shuttle/floor,/area/submap/cave/qShuttle) +"bI" = (/obj/machinery/door/airlock{name = "Charge Station"},/turf/simulated/shuttle/wall,/area/submap/cave/qShuttle) +"bJ" = (/obj/item/trash/tastybread,/obj/item/weapon/material/butterfly/boxcutter,/obj/effect/decal/cleanable/dirt,/turf/simulated/shuttle/floor{icon_state = "floor_white"},/area/submap/cave/qShuttle) +"bK" = (/obj/effect/decal/cleanable/vomit,/obj/effect/decal/cleanable/mucus/mapped,/turf/simulated/shuttle/floor{icon_state = "floor_white"},/area/submap/cave/qShuttle) +"bL" = (/obj/structure/bed/chair{dir = 1},/obj/effect/decal/remains/xeno,/turf/simulated/shuttle/floor{icon_state = "floor_white"},/area/submap/cave/qShuttle) +"bM" = (/obj/structure/bed/chair{dir = 1},/obj/item/weapon/card/id/external{desc = "An identification card of some sort. Looks like this one was issued by the Vir Independent Mining Corp."; name = "VIMC identification card"; rank = "Miner"; registered_name = "Nadia Chu"},/turf/simulated/shuttle/floor{icon_state = "floor_white"},/area/submap/cave/qShuttle) +"bN" = (/obj/structure/table/rack,/obj/item/weapon/storage/toolbox/emergency,/turf/simulated/shuttle/floor{icon_state = "floor_white"},/area/submap/cave/qShuttle) +"bO" = (/obj/structure/table/rack,/obj/item/clothing/head/soft/mbill{desc = "It's a ballcap bearing the colors of Major Bill's Shipping. This one looks at least a few decades out of date."; name = "old shipping cap"},/turf/simulated/shuttle/floor{icon_state = "floor_white"},/area/submap/cave/qShuttle) +"bP" = (/obj/structure/ore_box,/turf/simulated/shuttle/floor{icon_state = "floor_yellow"},/area/submap/cave/qShuttle) +"bQ" = (/obj/item/weapon/contraband/poster,/turf/simulated/shuttle/floor{icon_state = "floor_yellow"},/area/submap/cave/qShuttle) +"bR" = (/obj/structure/loot_pile/maint/technical,/turf/simulated/shuttle/floor{icon_state = "floor_yellow"},/area/submap/cave/qShuttle) +"bS" = (/obj/structure/sign/biohazard,/turf/simulated/shuttle/wall/hard_corner,/area/submap/cave/qShuttle) +"bT" = (/obj/item/tape/medical{icon_state = "tape_v_0"},/turf/simulated/mineral/floor/ignore_mapgen,/area/submap/cave/qShuttle) +"bU" = (/obj/item/taperoll/medical,/turf/simulated/mineral/floor/ignore_mapgen,/area/submap/cave/qShuttle) +"bV" = (/obj/item/tape/medical{dir = 1; icon_state = "tape_dir_0"},/obj/item/tape/medical{dir = 4; icon_state = "tape_dir_0"},/turf/simulated/mineral/floor/ignore_mapgen,/area/submap/cave/qShuttle) +"bW" = (/obj/item/tape/medical{icon_state = "tape_h_0"},/turf/simulated/mineral/floor/ignore_mapgen,/area/submap/cave/qShuttle) +"bX" = (/obj/structure/lattice,/turf/simulated/mineral/floor/ignore_mapgen,/area/submap/cave/qShuttle) +"bY" = (/obj/structure/sign/warning/secure_area,/turf/simulated/wall/iron,/area/submap/cave/qShuttle) +"bZ" = (/obj/structure/sign/kiddieplaque{desc = "By order of the S.D.D.C, this site or craft is to be buried and not disturbed until such time that sterility can be confirmed. Dated: 20/12/2491 "; name = "\improper Sif Department of Disease Control notice"},/turf/simulated/wall/iron,/area/submap/cave/qShuttle) +"ca" = (/obj/structure/sign/warning,/turf/simulated/wall/iron,/area/submap/cave/qShuttle) +"cb" = (/obj/item/bodybag,/turf/simulated/mineral/floor/ignore_mapgen,/area/submap/cave/qShuttle) +"cc" = (/obj/structure/table/steel,/obj/item/weapon/storage/box/bodybags,/turf/simulated/mineral/floor/ignore_mapgen,/area/submap/cave/qShuttle) +"cd" = (/obj/structure/table/steel,/obj/item/clothing/suit/bio_suit,/obj/random/medical/lite,/turf/simulated/mineral/floor/ignore_mapgen,/area/submap/cave/qShuttle) +"ce" = (/obj/structure/closet/l3closet/virology,/turf/simulated/mineral/floor/ignore_mapgen,/area/submap/cave/qShuttle) +"cf" = (/obj/item/weapon/reagent_containers/syringe/antiviral,/turf/simulated/mineral/floor/ignore_mapgen,/area/submap/cave/qShuttle) +"cg" = (/obj/structure/dispenser/oxygen,/turf/simulated/mineral/floor/ignore_mapgen,/area/submap/cave/qShuttle) +"ch" = (/obj/structure/table/steel,/turf/simulated/mineral/floor/ignore_mapgen,/area/submap/cave/qShuttle) +"ci" = (/obj/structure/table/steel,/obj/item/weapon/reagent_containers/syringe/antiviral,/turf/simulated/mineral/floor/ignore_mapgen,/area/submap/cave/qShuttle) +"cj" = (/obj/structure/table/steel,/obj/item/weapon/reagent_containers/spray/cleaner{desc = "Someone has crossed out the 'Space' from Space Cleaner and written in Chemistry. Scrawled on the back is, 'Okay, whoever filled this with polytrinic acid, it was only funny the first time. It was hard enough replacing the CMO's first cat!'"; name = "Chemistry Cleaner"},/turf/simulated/mineral/floor/ignore_mapgen,/area/submap/cave/qShuttle) +"ck" = (/obj/structure/table/steel,/obj/item/weapon/tool/crowbar/power,/turf/simulated/mineral/floor/ignore_mapgen,/area/submap/cave/qShuttle) +"cl" = (/obj/structure/table/rack,/obj/item/clothing/head/bio_hood,/obj/item/clothing/suit/bio_suit,/turf/simulated/mineral/floor/ignore_mapgen,/area/submap/cave/qShuttle) +"cm" = (/obj/item/weapon/weldingtool/largetank,/turf/simulated/mineral/floor/ignore_mapgen,/area/submap/cave/qShuttle) +"cn" = (/obj/structure/closet/crate/medical,/turf/simulated/mineral/floor/ignore_mapgen,/area/submap/cave/qShuttle) + +(1,1,1) = {" +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaababaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaabacababaaaaadadadacaa +aaabababababaeafaeaeabaaaaabababababababadagahabaa +aaacababadaiajakakalaiadaiadadadadadadadadadadaaaa +aaababadadamanaoapadaqaqaradasatadauavauadagahaaaa +aaaaadadadadadawaxayazaAaBaCaDaEadaFaGaHadaIadabaa +aaaaaiaJaKaLadaMaNaOaPaQaQaRaSaTaUaVaAaWaXaAaYabaa +aaabaiaZbababbbcbdadbebfbgadbhbiadbjaAbkaAblaYabaa +aaabaiaJbmbnadbobpbqbrbsbtbqaNbuaUbvaAbwaVbxaYabaa +aaabadadadadadaDbyaAbzaAbAbBbCbDadbEaGbFadadbGabaa +aaababadadbHbIbJbKadbLaQbMadbNbOadbPbQbRadagahabaa +ababacabadaiajakakbSaiadaiadadadadadadadadadadaaaa +ababababbTabaeaeafaeababababbUabababababadagahaaaa +aaabababbVbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWadadadaaaa +aaaaababababababababbXbYbZcacbcbcbabcccdceabcfaaaa +aaaaacababcgchcicjckclababcmabcbcbababababababaaaa +aaaaaaababcnchababababababababaaaaaaaaaaababacaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +"} diff --git a/maps/submaps/surface_submaps/mountains/vault3.dmm b/maps/submaps/surface_submaps/mountains/vault3.dmm index b517d1cdee..bd93aba096 100644 --- a/maps/submaps/surface_submaps/mountains/vault3.dmm +++ b/maps/submaps/surface_submaps/mountains/vault3.dmm @@ -2,7 +2,7 @@ "b" = (/turf/simulated/wall,/area/submap/cave/vault3) "c" = (/obj/effect/alien/weeds,/obj/random/multiple/minevault,/turf/simulated/floor/plating,/area/submap/cave/vault3) "d" = (/obj/structure/loot_pile/maint/technical,/obj/effect/alien/weeds,/turf/simulated/floor/plating,/area/submap/cave/vault3) -"e" = (/obj/effect/alien/weeds,/mob/living/simple_animal/hostile/alien/drone,/turf/simulated/floor/plating,/area/submap/cave/vault3) +"e" = (/obj/effect/alien/weeds,/mob/living/simple_mob/animal/space/alien/drone,/turf/simulated/floor/plating,/area/submap/cave/vault3) "f" = (/obj/effect/alien/weeds,/obj/effect/alien/weeds,/turf/simulated/floor/plating,/area/submap/cave/vault3) "g" = (/obj/effect/alien/weeds,/turf/simulated/floor/plating,/area/submap/cave/vault3) "h" = (/obj/effect/alien/weeds,/obj/effect/alien/weeds,/obj/effect/alien/weeds/node,/turf/simulated/floor/plating,/area/submap/cave/vault3) diff --git a/maps/submaps/surface_submaps/mountains/vault4.dmm b/maps/submaps/surface_submaps/mountains/vault4.dmm index 7d5213916d..78ac6842d5 100644 --- a/maps/submaps/surface_submaps/mountains/vault4.dmm +++ b/maps/submaps/surface_submaps/mountains/vault4.dmm @@ -3,10 +3,10 @@ "c" = (/obj/structure/simple_door/resin,/obj/effect/alien/weeds,/turf/simulated/mineral/floor/ignore_mapgen,/area/submap/cave/vault4) "d" = (/obj/effect/alien/weeds,/obj/structure/bed/nest,/turf/simulated/mineral/floor/ignore_mapgen,/area/submap/cave/vault4) "e" = (/obj/effect/alien/weeds,/turf/simulated/mineral/floor/ignore_mapgen,/area/submap/cave/vault4) -"f" = (/obj/effect/alien/weeds,/mob/living/simple_animal/hostile/alien/drone,/turf/simulated/mineral/floor/ignore_mapgen,/area/submap/cave/vault4) +"f" = (/obj/effect/alien/weeds,/mob/living/simple_mob/animal/space/alien/drone,/turf/simulated/mineral/floor/ignore_mapgen,/area/submap/cave/vault4) "g" = (/obj/effect/alien/weeds/node,/turf/simulated/mineral/floor/ignore_mapgen,/area/submap/cave/vault4) "h" = (/obj/effect/alien/weeds,/obj/random/multiple/minevault,/turf/simulated/mineral/floor/ignore_mapgen,/area/submap/cave/vault4) -"i" = (/obj/effect/alien/weeds,/mob/living/simple_animal/hostile/alien,/turf/simulated/mineral/floor/ignore_mapgen,/area/submap/cave/vault4) +"i" = (/obj/effect/alien/weeds,/mob/living/simple_mob/animal/space/alien,/turf/simulated/mineral/floor/ignore_mapgen,/area/submap/cave/vault4) "j" = (/obj/effect/alien/weeds,/obj/effect/alien/egg,/turf/simulated/mineral/floor/ignore_mapgen,/area/submap/cave/vault4) (1,1,1) = {" diff --git a/maps/submaps/surface_submaps/mountains/vault5.dmm b/maps/submaps/surface_submaps/mountains/vault5.dmm index 1d4befc167..9de959c715 100644 --- a/maps/submaps/surface_submaps/mountains/vault5.dmm +++ b/maps/submaps/surface_submaps/mountains/vault5.dmm @@ -5,9 +5,9 @@ "e" = (/obj/effect/alien/weeds,/turf/simulated/mineral/floor/ignore_mapgen,/area/submap/cave/vault5) "f" = (/obj/effect/alien/weeds,/obj/item/clothing/suit/storage/vest/tactical,/turf/simulated/mineral/floor/ignore_mapgen,/area/submap/cave/vault5) "g" = (/obj/effect/alien/weeds,/obj/structure/bed/nest,/turf/simulated/mineral/floor/ignore_mapgen,/area/submap/cave/vault5) -"h" = (/obj/effect/alien/weeds,/obj/random/multiple/minevault,/mob/living/simple_animal/hostile/alien/sentinel/praetorian,/turf/simulated/mineral/floor/ignore_mapgen,/area/submap/cave/vault5) +"h" = (/obj/effect/alien/weeds,/obj/random/multiple/minevault,/mob/living/simple_mob/animal/space/alien/sentinel/praetorian,/turf/simulated/mineral/floor/ignore_mapgen,/area/submap/cave/vault5) "i" = (/obj/effect/alien/weeds,/obj/effect/alien/egg,/turf/simulated/mineral/floor/ignore_mapgen,/area/submap/cave/vault5) -"j" = (/obj/effect/alien/weeds,/obj/effect/alien/weeds/node,/mob/living/simple_animal/hostile/alien/queen/empress,/turf/simulated/mineral/floor/ignore_mapgen,/area/submap/cave/vault5) +"j" = (/obj/effect/alien/weeds,/obj/effect/alien/weeds/node,/mob/living/simple_mob/animal/space/alien/queen/empress,/turf/simulated/mineral/floor/ignore_mapgen,/area/submap/cave/vault5) "k" = (/obj/effect/alien/weeds,/obj/item/clothing/head/helmet/tac,/obj/item/weapon/gun/projectile/SVD,/turf/simulated/mineral/floor/ignore_mapgen,/area/submap/cave/vault5) (1,1,1) = {" diff --git a/maps/submaps/surface_submaps/plains/Boathouse_vr.dmm b/maps/submaps/surface_submaps/plains/Boathouse_vr.dmm new file mode 100644 index 0000000000..707203ffe5 --- /dev/null +++ b/maps/submaps/surface_submaps/plains/Boathouse_vr.dmm @@ -0,0 +1,2761 @@ +//MAP CONVERTED BY dmm2tgm.py THIS HEADER COMMENT PREVENTS RECONVERSION, DO NOT REMOVE +"aa" = ( +/turf/template_noop, +/area/template_noop) +"ab" = ( +/turf/template_noop, +/area/submap/Boathouse) +"ac" = ( +/turf/simulated/floor/outdoors/rocks, +/area/submap/Boathouse) +"ad" = ( +/turf/simulated/floor/water, +/area/submap/Boathouse) +"ae" = ( +/turf/simulated/floor/water/deep, +/area/submap/Boathouse) +"af" = ( +/obj/structure/flora/tree/sif, +/turf/template_noop, +/area/submap/Boathouse) +"ag" = ( +/obj/structure/table/bench/wooden, +/turf/template_noop, +/area/submap/Boathouse) +"ah" = ( +/obj/structure/table/woodentable, +/turf/template_noop, +/area/submap/Boathouse) +"ai" = ( +/turf/simulated/wall/wood, +/area/submap/Boathouse) +"aj" = ( +/obj/structure/closet{ + icon_closed = "cabinet_closed"; + icon_opened = "cabinet_open"; + icon_state = "cabinet_closed" + }, +/obj/item/clothing/accessory/jacket, +/obj/item/clothing/accessory/jacket, +/obj/item/clothing/head/beanie, +/turf/simulated/floor/wood, +/area/submap/Boathouse) +"ak" = ( +/turf/simulated/floor/wood, +/area/submap/Boathouse) +"al" = ( +/obj/structure/closet{ + icon_closed = "cabinet_closed"; + icon_opened = "cabinet_open"; + icon_state = "cabinet_closed" + }, +/obj/item/weapon/gun/projectile/shotgun/doublebarrel, +/obj/item/weapon/storage/box/beanbags, +/turf/simulated/floor/wood, +/area/submap/Boathouse) +"am" = ( +/turf/simulated/floor/carpet/turcarpet, +/area/submap/Boathouse) +"an" = ( +/obj/structure/table/woodentable, +/obj/item/weapon/storage/toolbox/mechanical, +/turf/simulated/floor/wood, +/area/submap/Boathouse) +"ao" = ( +/obj/structure/railing{ + dir = 8 + }, +/obj/structure/railing, +/turf/simulated/floor/water, +/area/submap/Boathouse) +"ap" = ( +/obj/structure/railing, +/turf/simulated/floor/water, +/area/submap/Boathouse) +"aq" = ( +/obj/item/weapon/stool/padded, +/turf/simulated/floor/wood, +/area/submap/Boathouse) +"ar" = ( +/obj/structure/table/woodentable, +/obj/item/weapon/deck/cards, +/turf/simulated/floor/carpet/turcarpet, +/area/submap/Boathouse) +"as" = ( +/obj/structure/table/woodentable, +/obj/item/weapon/reagent_containers/food/snacks/chips, +/turf/simulated/floor/carpet/turcarpet, +/area/submap/Boathouse) +"at" = ( +/obj/structure/table/woodentable, +/obj/item/trash/candle, +/turf/simulated/floor/wood, +/area/submap/Boathouse) +"au" = ( +/obj/item/weapon/stool, +/turf/simulated/floor/wood, +/area/submap/Boathouse) +"av" = ( +/turf/simulated/floor/wood{ + icon_state = "wood_broken6" + }, +/area/submap/Boathouse) +"aw" = ( +/obj/structure/railing{ + dir = 8 + }, +/turf/simulated/floor/water, +/area/submap/Boathouse) +"ax" = ( +/obj/structure/table/woodentable, +/obj/item/weapon/reagent_containers/food/drinks/bottle/whiskey, +/turf/simulated/floor/carpet/turcarpet, +/area/submap/Boathouse) +"ay" = ( +/obj/structure/table/woodentable, +/obj/item/weapon/reagent_containers/food/drinks/glass2/shot, +/turf/simulated/floor/carpet/turcarpet, +/area/submap/Boathouse) +"az" = ( +/obj/structure/table/woodentable, +/obj/item/weapon/tape_roll, +/obj/random/firstaid, +/turf/simulated/floor/wood, +/area/submap/Boathouse) +"aA" = ( +/obj/structure/table/woodentable, +/obj/item/weapon/reagent_containers/food/drinks/glass2/shot, +/obj/item/weapon/reagent_containers/food/drinks/glass2/shot, +/obj/item/weapon/reagent_containers/food/drinks/glass2/shot, +/turf/simulated/floor/carpet/turcarpet, +/area/submap/Boathouse) +"aB" = ( +/turf/simulated/floor/wood{ + icon_state = "wood_broken2" + }, +/area/submap/Boathouse) +"aC" = ( +/obj/structure/railing{ + dir = 8 + }, +/obj/structure/railing{ + icon_state = "railing0"; + dir = 1 + }, +/turf/simulated/floor/water, +/area/submap/Boathouse) +"aD" = ( +/obj/structure/railing{ + icon_state = "railing0"; + dir = 1 + }, +/turf/simulated/floor/water, +/area/submap/Boathouse) +"aE" = ( +/obj/vehicle/boat/sifwood, +/turf/simulated/floor/water, +/area/submap/Boathouse) +"aF" = ( +/obj/structure/window/reinforced/full, +/turf/simulated/floor/wood, +/area/submap/Boathouse) +"aG" = ( +/obj/structure/table/woodentable, +/obj/item/weapon/oar, +/obj/item/weapon/oar, +/turf/simulated/floor/wood, +/area/submap/Boathouse) +"aH" = ( +/obj/structure/railing{ + icon_state = "railing0"; + dir = 8 + }, +/turf/simulated/floor/water, +/area/submap/Boathouse) +"aI" = ( +/obj/structure/table/woodentable, +/obj/random/powercell, +/turf/simulated/floor/wood, +/area/submap/Boathouse) +"aJ" = ( +/turf/simulated/floor/wood{ + icon_state = "wood_broken4" + }, +/area/submap/Boathouse) +"aK" = ( +/obj/structure/railing{ + icon_state = "railing0"; + dir = 8 + }, +/obj/structure/railing{ + icon_state = "railing0"; + dir = 1 + }, +/turf/simulated/floor/water, +/area/submap/Boathouse) +"aL" = ( +/obj/structure/simple_door/wood, +/turf/simulated/floor/wood, +/area/submap/Boathouse) +"aM" = ( +/obj/machinery/portable_atmospherics/powered/scrubber/huge/stationary/tram, +/turf/simulated/floor/wood, +/area/submap/Boathouse) +"aN" = ( +/obj/structure/closet/secure_closet/freezer/fridge, +/obj/item/weapon/reagent_containers/food/snacks/meat, +/obj/item/weapon/reagent_containers/food/snacks/meat, +/obj/item/weapon/reagent_containers/food/snacks/meat, +/obj/item/weapon/reagent_containers/food/snacks/meat, +/obj/item/weapon/reagent_containers/food/snacks/meat, +/obj/item/weapon/reagent_containers/food/snacks/fruitsalad, +/turf/simulated/floor/wood, +/area/submap/Boathouse) +"aO" = ( +/obj/structure/table/woodentable, +/turf/simulated/floor/wood, +/area/submap/Boathouse) +"aP" = ( +/turf/simulated/floor/carpet/bcarpet, +/area/submap/Boathouse) +"aQ" = ( +/obj/structure/table/woodentable, +/obj/item/weapon/material/knife, +/turf/simulated/floor/wood, +/area/submap/Boathouse) +"aR" = ( +/obj/structure/bookcase, +/turf/simulated/floor/carpet/bcarpet, +/area/submap/Boathouse) +"aS" = ( +/obj/structure/table/woodentable, +/obj/item/weapon/storage/bag/trash, +/turf/simulated/floor/wood, +/area/submap/Boathouse) +"aT" = ( +/obj/structure/table/woodentable, +/obj/item/weapon/flame/lighter, +/obj/item/weapon/storage/fancy/candle_box, +/turf/simulated/floor/wood, +/area/submap/Boathouse) +"aU" = ( +/obj/structure/bed/chair/wood, +/turf/simulated/floor/carpet/bcarpet, +/area/submap/Boathouse) +"aV" = ( +/obj/structure/table/rack, +/obj/item/clothing/accessory/poncho/blue, +/obj/item/clothing/accessory/poncho/blue, +/turf/simulated/floor/wood, +/area/submap/Boathouse) +"aW" = ( +/obj/structure/coatrack, +/turf/simulated/floor/wood, +/area/submap/Boathouse) +"aX" = ( +/obj/structure/table/rack, +/obj/item/clothing/suit/storage/hooded/wintercoat, +/obj/item/clothing/suit/storage/hooded/wintercoat, +/obj/item/clothing/head/hood/winter, +/obj/item/clothing/shoes/boots/winter, +/turf/simulated/floor/wood, +/area/submap/Boathouse) +"aY" = ( +/obj/structure/table/rack, +/obj/item/clothing/accessory/storage, +/obj/item/clothing/accessory/storage, +/turf/simulated/floor/wood, +/area/submap/Boathouse) +"aZ" = ( +/obj/structure/table/woodentable, +/obj/item/device/flashlight/lamp, +/turf/simulated/floor/carpet/bcarpet, +/area/submap/Boathouse) +"ba" = ( +/obj/structure/table/woodentable, +/turf/simulated/floor/carpet/bcarpet, +/area/submap/Boathouse) +"bb" = ( +/turf/simulated/floor/outdoors/dirt, +/area/submap/Boathouse) + +(1,1,1) = {" +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 +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 +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +"} +(2,1,1) = {" +aa +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ac +ac +ac +ac +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ai +ai +ai +ai +ai +ai +ab +ab +ab +ab +ab +ai +ai +ai +ai +ai +ai +ab +ab +ab +ab +ab +aa +"} +(3,1,1) = {" +aa +ab +ab +ab +ab +ab +ab +ab +ab +ab +ac +ac +ac +ad +ad +ac +ac +ac +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ai +ai +ai +ai +ai +ai +ai +aF +aF +aF +aF +aF +ai +ai +ai +ai +ai +ai +ai +ab +ab +ab +ab +aa +"} +(4,1,1) = {" +aa +ab +ab +ab +ab +ab +ab +ab +ab +ac +ac +ad +ad +ad +ad +ad +ad +ac +ac +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ai +aj +ak +aq +aq +aq +ak +ak +ak +ak +ak +ak +ak +aN +aO +aQ +aS +ai +ai +ai +ab +bb +ab +aa +"} +(5,1,1) = {" +aa +ab +ab +ab +ab +ab +ab +ac +ac +ac +ad +ad +ad +ad +ad +ad +ad +ad +ac +ac +ac +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ai +ai +ak +am +ar +ax +aA +am +am +am +am +am +am +am +am +am +am +aT +ai +ai +ai +ab +bb +ab +aa +"} +(6,1,1) = {" +aa +ab +ab +ab +ab +ab +ac +ac +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ac +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ai +ai +ak +am +as +ay +ay +am +am +am +am +am +am +am +am +am +am +ak +ai +ai +ai +ab +bb +ab +aa +"} +(7,1,1) = {" +aa +ab +ab +ab +ab +ac +ac +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ac +ac +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ai +ai +al +ak +aq +aq +aq +ak +ak +ak +ak +ak +ak +ak +ak +ak +am +ak +aV +ai +ai +ai +bb +bb +aa +"} +(8,1,1) = {" +aa +ab +ab +ab +ac +ac +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ac +ac +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ai +ai +ai +ai +ai +ai +ai +ai +ai +ai +ai +ai +ai +ai +ai +ak +am +am +aW +ai +aM +ai +bb +bb +aa +"} +(9,1,1) = {" +aa +ab +ab +ac +ac +ad +ad +ad +ad +ae +ae +ae +ad +ad +ad +ad +ad +ad +ad +ad +ad +ac +ac +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ai +ai +ak +an +at +az +ak +ak +aG +at +aI +ak +ai +aM +ai +ak +am +am +ak +aL +ak +aL +bb +bb +aa +"} +(10,1,1) = {" +aa +ab +ab +ac +ad +ad +ad +ad +ad +ae +ae +ae +ae +ae +ae +ae +ae +ae +ad +ad +ad +ad +ac +ac +ab +ab +ab +ab +ab +ab +ab +ab +ac +ac +ab +ai +ai +ak +ak +au +ak +ak +ak +ak +au +ak +ak +aL +ak +aL +ak +am +am +ak +aL +ak +aL +bb +bb +aa +"} +(11,1,1) = {" +aa +ab +ac +ac +ad +ad +ad +ad +ad +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ad +ad +ad +ac +ab +ab +ab +ab +ac +ac +ac +ac +ac +ac +ac +ac +ai +ak +ak +ak +ak +ak +ak +ak +ak +ak +ak +ai +ai +ai +ak +am +am +aX +ai +aM +ai +bb +bb +aa +"} +(12,1,1) = {" +aa +ab +ac +ac +ad +ad +ad +ae +ad +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ad +ad +ac +ac +ac +ac +ac +ac +ac +ac +ac +ad +ad +ad +ac +ai +ak +ak +ak +ak +aB +ak +ak +ak +ak +ak +ak +ak +ai +ak +ak +ak +aY +ai +ai +ai +bb +bb +aa +"} +(13,1,1) = {" +aa +ac +ad +ad +ad +ad +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ai +ai +ao +ak +ak +aC +aw +ao +ak +ak +aK +aH +aH +ai +aL +ai +ai +ai +ai +ai +ab +bb +bb +aa +"} +(14,1,1) = {" +aa +ac +ad +ad +ad +ad +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ai +ai +ap +av +ak +aD +ad +ap +ak +ak +aD +ad +ad +ai +aP +aR +aR +aZ +ai +ai +ab +bb +bb +aa +"} +(15,1,1) = {" +aa +ac +ad +ad +ad +ad +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ai +ai +ap +ak +ak +aE +ad +ad +ak +aJ +aD +ad +ad +ai +aP +aP +aU +ba +ai +ai +ab +bb +bb +aa +"} +(16,1,1) = {" +aa +ac +ad +ad +ad +ad +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ad +ad +ad +ad +ad +ad +ad +ad +ad +ai +ai +ap +ak +ak +aD +ad +ap +ak +ak +aD +ad +ad +ai +aF +aF +aF +aF +ai +ac +ab +ab +bb +aa +"} +(17,1,1) = {" +aa +ac +ad +ad +ad +ad +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +aw +aw +ad +ad +ad +aH +aH +ad +ad +ad +ad +ad +ad +ad +ad +ad +ac +ab +ab +bb +aa +"} +(18,1,1) = {" +aa +ac +ad +ad +ad +ad +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ac +ac +ab +bb +aa +"} +(19,1,1) = {" +aa +ac +ad +ad +ad +ad +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ad +ad +ad +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ac +ab +ab +aa +"} +(20,1,1) = {" +aa +ac +ad +ad +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ae +ae +ae +ae +ae +ae +ae +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ac +ac +ab +aa +"} +(21,1,1) = {" +aa +ac +ad +ad +ae +ae +ae +ae +ae +ae +ae +ae +ae +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ac +ac +ab +aa +"} +(22,1,1) = {" +aa +ac +ad +ad +ae +ae +ae +ae +ae +ae +ae +ae +ad +ad +ad +ad +ad +ad +ac +ac +ac +ad +ad +ad +ad +ad +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ac +ac +aa +"} +(23,1,1) = {" +aa +ac +ad +ad +ae +ae +ae +ae +ae +ae +ae +ad +ad +ad +ad +ad +ac +ac +ab +ab +ac +ac +ad +ad +ad +ad +ad +ad +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ad +ad +ae +ae +ae +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ac +aa +"} +(24,1,1) = {" +aa +ac +ad +ad +ae +ae +ae +ae +ae +ae +ad +ad +ad +ad +ad +ac +ac +ab +ab +ab +ab +ac +ad +ad +ad +ad +ad +ad +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ad +ad +ad +ad +ad +ae +ae +ae +ad +ad +ad +ad +ac +aa +"} +(25,1,1) = {" +aa +ac +ad +ad +ae +ae +ae +ae +ae +ae +ae +ad +ad +ad +ad +ac +ab +ab +ab +ab +ab +ac +ac +ad +ad +ad +ad +ad +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ad +ad +ad +ac +ac +aa +"} +(26,1,1) = {" +aa +ac +ad +ad +ae +ae +ae +ae +ae +ae +ae +ad +ad +ad +ad +ac +ab +ag +ah +ag +ab +ab +ac +ad +ad +ad +ad +ad +ad +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ad +ad +ad +ac +ab +aa +"} +(27,1,1) = {" +aa +ac +ad +ad +ae +ae +ae +ae +ae +ae +ae +ad +ad +ad +ad +ac +ab +ag +ah +ag +ab +ab +ac +ac +ad +ad +ad +ad +ad +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ad +ad +ad +ad +ad +ad +ac +ac +ab +aa +"} +(28,1,1) = {" +aa +ac +ad +ad +ae +ae +ae +ae +ae +ae +ad +ad +ad +ad +ad +ac +ab +ag +ah +ag +ab +ab +ab +ac +ad +ad +ad +ad +ad +ad +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ad +ad +ad +ad +ad +ad +ad +ac +ac +ab +aa +"} +(29,1,1) = {" +aa +ac +ad +ad +ae +ae +ae +ae +ae +ae +ad +ad +ad +ad +ac +ac +ab +ag +ah +ag +ab +ab +ab +ac +ad +ad +ad +ad +ad +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ad +ad +ad +ae +ae +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ac +ab +aa +"} +(30,1,1) = {" +aa +ac +ad +ad +ae +ad +ae +ae +ad +ad +ad +ad +ad +ad +ac +ab +ab +ab +ab +ab +ab +ab +ab +ac +ad +ad +ad +ad +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ad +ad +ad +ad +ad +ad +ad +ae +ae +ae +ad +ad +ad +ad +ad +ad +ad +ad +ad +ac +ab +aa +"} +(31,1,1) = {" +aa +ab +ac +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ac +ac +ab +ab +ab +ab +ab +ab +ab +ac +ac +ad +ad +ad +ae +ae +ae +ae +ae +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ae +ae +ae +ad +ad +ad +ad +ad +ad +ad +ad +ad +ac +ab +aa +"} +(32,1,1) = {" +aa +ab +ac +ac +ad +ad +ad +ad +ad +ad +ad +ad +ad +ac +ab +ab +ab +ab +ab +ab +ab +ab +ac +ad +ad +ad +ad +ae +ae +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ae +ae +ae +ad +ad +ad +ad +ad +ad +ad +ad +ac +ab +aa +"} +(33,1,1) = {" +aa +ab +ab +ac +ad +ad +ad +ad +ad +ad +ac +ac +ac +ac +ab +ab +af +ab +ab +ab +ab +ab +ac +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ae +ad +ad +ad +ad +ad +ad +ad +ad +ac +ab +aa +"} +(34,1,1) = {" +aa +ab +ab +ac +ac +ad +ad +ad +ac +ac +ac +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ac +ac +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ac +ac +ab +aa +"} +(35,1,1) = {" +aa +ab +ab +ab +ac +ac +ac +ac +ac +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +af +ab +ab +ac +ac +ac +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ac +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ac +ab +ab +aa +"} +(36,1,1) = {" +aa +ab +ab +ab +ab +ac +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ac +ac +ac +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ac +ac +ac +ac +ac +ac +ad +ad +ad +ad +ad +ad +ad +ad +ad +ac +ac +ac +ac +ab +ab +aa +"} +(37,1,1) = {" +aa +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ac +ac +ad +ad +ac +ac +ad +ad +ad +ad +ac +ac +ab +ab +ab +ab +ac +ac +ac +ad +ad +ad +ac +ac +ac +ac +ac +ab +ab +ab +ab +ab +aa +"} +(38,1,1) = {" +aa +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ab +ab +ab +ab +ab +ab +ab +ac +ac +ac +ac +ac +ab +ab +ab +ab +ab +ab +ab +ab +ab +aa +"} +(39,1,1) = {" +aa +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +aa +"} +(40,1,1) = {" +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 +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 +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +"} diff --git a/maps/submaps/surface_submaps/plains/Diner_vr.dmm b/maps/submaps/surface_submaps/plains/Diner_vr.dmm new file mode 100644 index 0000000000..c028e5056a --- /dev/null +++ b/maps/submaps/surface_submaps/plains/Diner_vr.dmm @@ -0,0 +1,1144 @@ +//MAP CONVERTED BY dmm2tgm.py THIS HEADER COMMENT PREVENTS RECONVERSION, DO NOT REMOVE +"aa" = ( +/turf/template_noop, +/area/template_noop) +"ab" = ( +/turf/template_noop, +/area/submap/Diner) +"ac" = ( +/turf/simulated/floor/outdoors/dirt, +/area/submap/Diner) +"ad" = ( +/turf/simulated/wall, +/area/submap/Diner) +"ae" = ( +/obj/structure/window/reinforced/full, +/turf/simulated/floor/tiled/white, +/area/submap/Diner) +"af" = ( +/obj/effect/floor_decal/corner/red/diagonal, +/turf/simulated/floor/tiled/white, +/area/submap/Diner) +"ag" = ( +/obj/structure/table/standard, +/obj/machinery/microwave, +/turf/simulated/floor/tiled/white, +/area/submap/Diner) +"ah" = ( +/obj/structure/table/standard, +/turf/simulated/floor/tiled/white, +/area/submap/Diner) +"ai" = ( +/obj/structure/table/standard, +/obj/item/weapon/reagent_containers/food/condiment/enzyme, +/obj/item/weapon/reagent_containers/glass/beaker, +/turf/simulated/floor/tiled/white, +/area/submap/Diner) +"aj" = ( +/obj/structure/table/standard, +/obj/machinery/light{ + dir = 1 + }, +/obj/item/weapon/material/knife/butch, +/turf/simulated/floor/tiled/white, +/area/submap/Diner) +"ak" = ( +/obj/machinery/vending/cola, +/turf/simulated/floor/tiled/white, +/area/submap/Diner) +"al" = ( +/obj/machinery/vending/dinnerware, +/turf/simulated/floor/tiled/white, +/area/submap/Diner) +"am" = ( +/obj/structure/sink/kitchen, +/turf/simulated/wall, +/area/submap/Diner) +"an" = ( +/obj/structure/flora/tree/sif, +/turf/template_noop, +/area/submap/Diner) +"ao" = ( +/obj/structure/bed/chair/wood, +/obj/effect/floor_decal/corner/red/diagonal, +/turf/simulated/floor/tiled/white, +/area/submap/Diner) +"ap" = ( +/turf/simulated/floor/tiled/white, +/area/submap/Diner) +"aq" = ( +/obj/effect/floor_decal/corner/red/diagonal, +/obj/machinery/light{ + dir = 1 + }, +/turf/simulated/floor/tiled/white, +/area/submap/Diner) +"ar" = ( +/obj/effect/floor_decal/corner/red/diagonal, +/obj/structure/table/standard, +/obj/item/weapon/reagent_containers/food/condiment/small/saltshaker, +/obj/item/weapon/material/kitchen/utensil/fork, +/turf/simulated/floor/tiled/white, +/area/submap/Diner) +"as" = ( +/obj/effect/floor_decal/corner/red/diagonal, +/obj/structure/table/standard, +/obj/item/weapon/reagent_containers/food/condiment/small/peppermill, +/obj/machinery/light{ + icon_state = "tube1"; + dir = 4 + }, +/turf/simulated/floor/tiled/white, +/area/submap/Diner) +"at" = ( +/obj/machinery/light{ + dir = 8; + icon_state = "tube1"; + pixel_y = 0 + }, +/turf/simulated/floor/tiled/white, +/area/submap/Diner) +"au" = ( +/obj/structure/table/standard, +/obj/item/weapon/book/manual/chef_recipes, +/turf/simulated/floor/tiled/white, +/area/submap/Diner) +"av" = ( +/obj/structure/table/standard, +/obj/item/weapon/material/kitchen/rollingpin, +/turf/simulated/floor/tiled/white, +/area/submap/Diner) +"aw" = ( +/obj/machinery/cooker/cereal, +/obj/machinery/light{ + icon_state = "tube1"; + dir = 4 + }, +/turf/simulated/floor/tiled/white, +/area/submap/Diner) +"ax" = ( +/obj/structure/bed/chair/wood{ + dir = 1 + }, +/obj/effect/floor_decal/corner/red/diagonal, +/turf/simulated/floor/tiled/white, +/area/submap/Diner) +"ay" = ( +/obj/structure/closet/secure_closet/freezer/fridge, +/obj/item/weapon/storage/fancy/egg_box, +/obj/item/weapon/storage/fancy/egg_box, +/obj/item/weapon/reagent_containers/food/drinks/bottle/milk, +/obj/item/weapon/reagent_containers/food/drinks/bottle/milk, +/obj/item/weapon/reagent_containers/food/drinks/bottle/milk, +/obj/item/weapon/reagent_containers/food/drinks/bottle/cream, +/obj/item/weapon/reagent_containers/food/drinks/bottle/cream, +/obj/item/weapon/reagent_containers/food/drinks/bottle/cream, +/obj/item/weapon/reagent_containers/food/drinks/bottle/cream, +/obj/item/weapon/reagent_containers/food/condiment/sugar, +/turf/simulated/floor/tiled/white, +/area/submap/Diner) +"az" = ( +/obj/structure/simple_door/wood, +/turf/simulated/floor/tiled/white, +/area/submap/Diner) +"aA" = ( +/obj/structure/simple_door/wood, +/turf/simulated/floor/tiled, +/area/submap/Diner) +"aB" = ( +/obj/structure/simple_door/wood, +/turf/simulated/floor/tiled/freezer, +/area/submap/Diner) +"aC" = ( +/obj/structure/table/standard, +/obj/item/weapon/reagent_containers/food/condiment/small/saltshaker, +/obj/effect/floor_decal/corner/red/diagonal, +/obj/item/weapon/material/kitchen/utensil/fork, +/turf/simulated/floor/tiled/white, +/area/submap/Diner) +"aD" = ( +/obj/structure/table/standard, +/obj/item/weapon/reagent_containers/food/condiment/small/peppermill, +/obj/effect/floor_decal/corner/red/diagonal, +/turf/simulated/floor/tiled/white, +/area/submap/Diner) +"aE" = ( +/obj/effect/floor_decal/corner/red/diagonal, +/obj/item/weapon/stool/padded, +/turf/simulated/floor/tiled/white, +/area/submap/Diner) +"aF" = ( +/obj/structure/table/standard, +/obj/effect/floor_decal/corner/red/diagonal, +/turf/simulated/floor/tiled/white, +/area/submap/Diner) +"aG" = ( +/turf/simulated/floor/tiled, +/area/submap/Diner) +"aH" = ( +/turf/simulated/floor/tiled/freezer, +/area/submap/Diner) +"aI" = ( +/obj/structure/closet/crate/freezer, +/obj/item/weapon/reagent_containers/food/snacks/meat, +/obj/item/weapon/reagent_containers/food/snacks/meat, +/obj/item/weapon/reagent_containers/food/snacks/meat, +/obj/item/weapon/reagent_containers/food/snacks/meat, +/obj/item/weapon/reagent_containers/food/snacks/meat, +/obj/item/weapon/reagent_containers/food/snacks/meat, +/obj/item/weapon/reagent_containers/food/snacks/meat, +/turf/simulated/floor/tiled/freezer, +/area/submap/Diner) +"aJ" = ( +/obj/structure/table/standard, +/obj/effect/floor_decal/corner/red/diagonal, +/obj/item/weapon/reagent_containers/food/condiment/small/saltshaker, +/turf/simulated/floor/tiled/white, +/area/submap/Diner) +"aK" = ( +/obj/effect/floor_decal/corner/red/diagonal, +/obj/machinery/light{ + icon_state = "tube1"; + dir = 4 + }, +/turf/simulated/floor/tiled/white, +/area/submap/Diner) +"aL" = ( +/obj/machinery/light/small{ + brightness_color = "#DA0205"; + brightness_power = 1; + brightness_range = 5; + dir = 8 + }, +/turf/simulated/floor/tiled, +/area/submap/Diner) +"aM" = ( +/obj/machinery/light/small{ + brightness_color = "#DA0205"; + brightness_power = 1; + brightness_range = 5; + dir = 8 + }, +/turf/simulated/floor/tiled/freezer, +/area/submap/Diner) +"aN" = ( +/obj/structure/closet/crate/freezer, +/obj/machinery/light/small{ + dir = 4 + }, +/obj/item/weapon/reagent_containers/food/snacks/meat, +/obj/item/weapon/reagent_containers/food/snacks/meat, +/obj/item/weapon/reagent_containers/food/snacks/meat, +/obj/item/weapon/reagent_containers/food/snacks/meat, +/obj/item/weapon/reagent_containers/food/snacks/meat, +/obj/item/weapon/reagent_containers/food/snacks/meat, +/obj/item/weapon/reagent_containers/food/snacks/meat, +/obj/item/weapon/reagent_containers/food/snacks/meat, +/turf/simulated/floor/tiled/freezer, +/area/submap/Diner) +"aO" = ( +/obj/structure/table/standard, +/obj/effect/floor_decal/corner/red/diagonal, +/obj/item/weapon/reagent_containers/food/condiment/small/peppermill, +/turf/simulated/floor/tiled/white, +/area/submap/Diner) +"aP" = ( +/obj/effect/floor_decal/corner/red/diagonal, +/obj/structure/table/standard, +/obj/machinery/microwave, +/turf/simulated/floor/tiled/white, +/area/submap/Diner) +"aQ" = ( +/obj/structure/closet/crate/freezer, +/obj/item/weapon/reagent_containers/food/condiment/flour, +/obj/item/weapon/reagent_containers/food/condiment/flour, +/obj/item/weapon/reagent_containers/food/condiment/flour, +/obj/item/weapon/reagent_containers/food/condiment/flour, +/obj/item/weapon/reagent_containers/food/condiment/flour, +/obj/item/weapon/reagent_containers/food/condiment/flour, +/obj/item/weapon/reagent_containers/food/condiment/flour, +/turf/simulated/floor/tiled/freezer, +/area/submap/Diner) +"aR" = ( +/obj/machinery/gibber, +/turf/simulated/floor/tiled/freezer, +/area/submap/Diner) +"aS" = ( +/obj/machinery/portable_atmospherics/powered/scrubber/huge/stationary/tram, +/turf/simulated/floor/tiled/white, +/area/submap/Diner) +"aT" = ( +/obj/effect/floor_decal/corner/red/diagonal, +/obj/structure/coatrack, +/turf/simulated/floor/tiled/white, +/area/submap/Diner) +"aU" = ( +/obj/effect/floor_decal/corner/red/diagonal, +/obj/structure/table/standard, +/turf/simulated/floor/tiled/white, +/area/submap/Diner) +"aV" = ( +/obj/structure/closet/crate/freezer, +/turf/simulated/floor/tiled/freezer, +/area/submap/Diner) +"aW" = ( +/obj/machinery/light/small, +/turf/simulated/floor/tiled/white, +/area/submap/Diner) +"aX" = ( +/obj/machinery/cooker/fryer, +/turf/simulated/floor/tiled/white, +/area/submap/Diner) +"aY" = ( +/obj/machinery/portable_atmospherics/powered/scrubber/huge/stationary/tram, +/turf/simulated/floor/tiled, +/area/submap/Diner) +"aZ" = ( +/obj/machinery/light/small{ + dir = 4 + }, +/turf/simulated/floor/outdoors/dirt, +/area/submap/Diner) +"ba" = ( +/obj/effect/floor_decal/corner/red/diagonal, +/obj/machinery/light{ + dir = 8; + icon_state = "tube1"; + pixel_y = 0 + }, +/turf/simulated/floor/tiled/white, +/area/submap/Diner) +"bb" = ( +/obj/effect/floor_decal/corner/red/diagonal, +/obj/machinery/cooker/grill, +/turf/simulated/floor/tiled/white, +/area/submap/Diner) +"bc" = ( +/obj/effect/decal/cleanable/dirt, +/turf/simulated/floor/tiled, +/area/submap/Diner) +"bd" = ( +/obj/machinery/light/small{ + dir = 1 + }, +/turf/simulated/floor/tiled, +/area/submap/Diner) +"be" = ( +/obj/machinery/light{ + icon_state = "tube1"; + dir = 4 + }, +/turf/simulated/floor/tiled/white, +/area/submap/Diner) +"bf" = ( +/obj/machinery/light/small, +/turf/simulated/floor/tiled, +/area/submap/Diner) +"bg" = ( +/obj/effect/floor_decal/corner/red/diagonal, +/obj/structure/closet/secure_closet/freezer/fridge, +/obj/item/weapon/storage/fancy/egg_box, +/obj/item/weapon/storage/fancy/egg_box, +/obj/item/weapon/reagent_containers/food/drinks/bottle/orangejuice, +/obj/item/weapon/reagent_containers/food/drinks/bottle/orangejuice, +/obj/item/weapon/reagent_containers/food/drinks/bottle/orangejuice, +/obj/item/weapon/reagent_containers/food/drinks/bottle/orangejuice, +/obj/item/weapon/reagent_containers/food/drinks/bottle/orangejuice, +/obj/item/weapon/reagent_containers/food/drinks/bottle/milk, +/obj/item/weapon/reagent_containers/food/drinks/bottle/milk, +/obj/item/weapon/reagent_containers/food/drinks/bottle/milk, +/obj/item/weapon/reagent_containers/food/drinks/bottle/milk, +/obj/item/weapon/reagent_containers/food/drinks/bottle/cream, +/obj/item/weapon/reagent_containers/food/drinks/bottle/cream, +/turf/simulated/floor/tiled/white, +/area/submap/Diner) +"bh" = ( +/obj/structure/table/standard, +/obj/machinery/chemical_dispenser/bar_coffee, +/turf/simulated/floor/tiled/white, +/area/submap/Diner) +"bi" = ( +/obj/item/frame/apc, +/turf/simulated/floor/lino, +/area/submap/Diner) +"bj" = ( +/obj/structure/table/woodentable, +/obj/item/device/flashlight/lamp, +/turf/simulated/floor/lino, +/area/submap/Diner) +"bk" = ( +/obj/structure/bed/chair/office/light, +/turf/simulated/floor/lino, +/area/submap/Diner) +"bl" = ( +/turf/simulated/floor/lino, +/area/submap/Diner) +"bm" = ( +/obj/machinery/light/small{ + dir = 8 + }, +/turf/simulated/floor/lino, +/area/submap/Diner) +"bn" = ( +/obj/structure/table/woodentable, +/obj/item/weapon/cell/high, +/turf/simulated/floor/lino, +/area/submap/Diner) +"bo" = ( +/obj/structure/table/woodentable, +/turf/simulated/floor/lino, +/area/submap/Diner) +"bp" = ( +/obj/machinery/light/small{ + dir = 4 + }, +/turf/simulated/floor/lino, +/area/submap/Diner) +"bq" = ( +/obj/structure/simple_door/wood, +/turf/simulated/floor/lino, +/area/submap/Diner) +"br" = ( +/obj/effect/floor_decal/corner/red/diagonal, +/obj/structure/windoor_assembly{ + icon_state = "l_windoor_assembly01"; + dir = 2 + }, +/turf/simulated/floor/tiled/white, +/area/submap/Diner) +"bs" = ( +/obj/structure/bookcase, +/turf/simulated/floor/lino, +/area/submap/Diner) +"bt" = ( +/obj/effect/floor_decal/corner/red/diagonal, +/obj/machinery/space_heater, +/obj/machinery/light, +/turf/simulated/floor/tiled/white, +/area/submap/Diner) +"bu" = ( +/obj/structure/sink{ + icon_state = "sink"; + dir = 8; + pixel_x = -12; + pixel_y = 2 + }, +/turf/simulated/floor/tiled/hydro, +/area/submap/Diner) +"bv" = ( +/turf/simulated/floor/tiled/hydro, +/area/submap/Diner) +"bw" = ( +/obj/structure/toilet, +/turf/simulated/floor/tiled/hydro, +/area/submap/Diner) +"bx" = ( +/obj/structure/bed/chair/wood{ + dir = 4 + }, +/obj/effect/floor_decal/corner/red/diagonal, +/turf/simulated/floor/tiled/white, +/area/submap/Diner) +"by" = ( +/obj/structure/bed/chair/wood{ + dir = 8 + }, +/obj/effect/floor_decal/corner/red/diagonal, +/turf/simulated/floor/tiled/white, +/area/submap/Diner) +"bz" = ( +/obj/structure/simple_door/wood, +/turf/simulated/floor/tiled/hydro, +/area/submap/Diner) +"bA" = ( +/obj/structure/mirror{ + dir = 4; + pixel_x = -32; + pixel_y = 0 + }, +/turf/simulated/floor/tiled/hydro, +/area/submap/Diner) +"bB" = ( +/obj/machinery/light/small, +/turf/simulated/floor/tiled/hydro, +/area/submap/Diner) +"bC" = ( +/obj/structure/table/standard, +/turf/simulated/floor/tiled/hydro, +/area/submap/Diner) + +(1,1,1) = {" +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 +"} +(2,1,1) = {" +aa +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +an +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +aa +"} +(3,1,1) = {" +aa +ab +ab +an +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +an +ab +aa +"} +(4,1,1) = {" +aa +ab +ab +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ab +ab +ab +aa +"} +(5,1,1) = {" +aa +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ab +ab +aa +"} +(6,1,1) = {" +aa +ab +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ab +ab +ab +aa +"} +(7,1,1) = {" +aa +ab +ab +ab +ab +ab +ab +ab +ab +ab +ac +ac +aZ +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +aa +"} +(8,1,1) = {" +aa +ab +ab +ab +ad +ad +ae +ae +ae +ad +ad +az +ad +ae +ae +ae +ad +ae +ae +ae +ad +ab +ab +ab +aa +"} +(9,1,1) = {" +aa +ab +ab +ad +ad +af +ao +aC +ax +ad +aS +aW +ad +ao +aC +ax +ao +aC +ax +af +ad +ad +ab +ab +aa +"} +(10,1,1) = {" +aa +ab +ad +ad +aq +af +ao +aD +ax +ad +ad +az +ad +ao +aD +ax +ao +aD +ax +af +bt +ad +ad +ab +aa +"} +(11,1,1) = {" +aa +ad +ad +af +af +af +af +af +af +af +aT +af +ba +af +af +af +af +af +af +af +af +af +ad +ad +aa +"} +(12,1,1) = {" +aa +ae +af +ao +ar +ax +af +af +af +af +af +af +af +af +af +af +af +af +af +af +af +af +af +ad +aa +"} +(13,1,1) = {" +aa +ae +af +ao +as +ax +af +aE +aE +aE +aE +aE +aE +aE +aE +aE +aE +aE +aE +af +af +bx +bx +ae +aa +"} +(14,1,1) = {" +aa +ad +ad +ad +ad +ad +ad +aF +aJ +aO +aF +aF +aF +aF +aF +aF +aO +aJ +aF +af +af +aD +aC +ae +aa +"} +(15,1,1) = {" +aa +ad +ag +ap +at +ap +az +af +af +af +af +af +af +af +af +af +af +af +ah +af +af +by +by +ae +aa +"} +(16,1,1) = {" +aa +ad +ah +ap +ap +ap +az +af +aK +aP +aU +aX +bb +be +bg +bh +ah +aK +br +af +af +af +af +ad +aa +"} +(17,1,1) = {" +aa +ad +ai +ap +au +ap +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +bz +ad +ad +aa +"} +(18,1,1) = {" +aa +ad +aj +ap +ah +ap +aA +aG +aL +aG +aG +aG +aG +bc +bc +aG +aG +aL +aG +ad +bu +bv +bA +ad +aa +"} +(19,1,1) = {" +aa +ad +ak +ap +av +ap +ad +ad +ad +ad +ad +ad +bc +bc +ad +ad +ad +bq +ad +ad +bv +bv +bB +ad +aa +"} +(20,1,1) = {" +aa +ad +al +ap +ap +ap +ad +aH +aM +aQ +aV +ad +bd +bc +ad +bi +bm +bl +bl +ad +bw +bv +bC +ad +aa +"} +(21,1,1) = {" +aa +ad +am +ap +ap +ap +aB +aH +aH +aH +ad +ad +aA +aA +ad +bj +bn +bl +bl +ad +ad +ad +ad +ad +aa +"} +(22,1,1) = {" +aa +ab +ad +ad +aw +ap +ad +aH +aH +aH +ad +aY +aG +aG +ad +bk +bo +bl +bs +ad +ad +ad +ad +ab +aa +"} +(23,1,1) = {" +aa +ab +ab +ad +ad +ay +ad +aI +aN +aR +ad +aY +aG +bf +ad +bl +bp +bl +bs +ad +ad +ad +ab +ab +aa +"} +(24,1,1) = {" +aa +ab +ab +ab +ad +ad +ad +ad +ad +ad +ad +ad +aA +aA +ad +ad +ad +ad +ad +ad +ad +ab +ab +ab +aa +"} +(25,1,1) = {" +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 +"} diff --git a/maps/submaps/surface_submaps/plains/Epod2.dmm b/maps/submaps/surface_submaps/plains/Epod2.dmm new file mode 100644 index 0000000000..db809d4c7b --- /dev/null +++ b/maps/submaps/surface_submaps/plains/Epod2.dmm @@ -0,0 +1,30 @@ +"a" = (/turf/template_noop,/area/template_noop) +"b" = (/turf/template_noop,/area/submap/Epod2) +"c" = (/turf/simulated/floor/outdoors/rocks,/area/submap/Epod2) +"d" = (/turf/simulated/floor/outdoors/dirt,/area/submap/Epod2) +"e" = (/obj/structure/boulder{icon_state = "boulder3"},/turf/simulated/floor/outdoors/dirt,/area/submap/Epod2) +"f" = (/obj/structure/boulder{icon_state = "boulder2"},/turf/simulated/floor/outdoors/dirt,/area/submap/Epod2) +"g" = (/obj/structure/boulder{icon_state = "boulder3"},/turf/simulated/floor/outdoors/rocks,/area/submap/Epod2) +"h" = (/turf/simulated/shuttle/wall,/area/submap/Epod2) +"i" = (/obj/structure/shuttle/engine/propulsion/burst{icon_state = "propulsion"; dir = 4},/turf/simulated/shuttle/wall,/area/submap/Epod2) +"j" = (/obj/structure/boulder,/turf/simulated/floor/outdoors/rocks,/area/submap/Epod2) +"k" = (/obj/structure/grille{density = 0; icon_state = "brokengrille"},/obj/structure/window/reinforced{dir = 1; health = 1e+006},/obj/structure/window/reinforced,/obj/item/stack/rods,/obj/item/weapon/material/shard,/obj/item/weapon/material/shard{icon_state = "medium"},/turf/simulated/shuttle/plating,/area/submap/Epod2) +"l" = (/obj/structure/bed/chair{icon_state = "chair_preview"; dir = 8},/obj/structure/loot_pile/surface/bones,/obj/effect/decal/cleanable/blood,/obj/effect/decal/cleanable/dirt,/obj/machinery/status_display{pixel_y = -32},/obj/item/device/radio/intercom{dir = 1; name = "Station Intercom (General)"; pixel_y = 21},/turf/simulated/shuttle/floor,/area/submap/Epod2) +"m" = (/obj/structure/bed/chair{icon_state = "chair_preview"; dir = 8},/obj/structure/loot_pile/surface/medicine_cabinet{pixel_y = 28},/obj/machinery/light,/obj/effect/decal/cleanable/vomit,/obj/effect/decal/cleanable/blood/drip,/obj/effect/decal/cleanable/dirt,/obj/effect/decal/cleanable/blood/drip,/obj/item/weapon/reagent_containers/hypospray/autoinjector/empty,/turf/simulated/shuttle/floor,/area/submap/Epod2) +"n" = (/obj/structure/bed/chair{icon_state = "chair_preview"; dir = 8},/obj/structure/closet/walllocker/emerglocker{pixel_y = 28},/obj/effect/decal/cleanable/dirt,/obj/effect/decal/cleanable/blood/drip,/turf/simulated/shuttle/floor,/area/submap/Epod2) +"o" = (/obj/effect/decal/cleanable/blood/drip,/obj/machinery/door/airlock/external{icon_state = "door_locked"; locked = 1; name = "Escape Pod Hatch"},/turf/simulated/shuttle/floor,/area/submap/Epod2) +"p" = (/obj/structure/boulder{icon_state = "boulder4"},/turf/simulated/floor/outdoors/dirt,/area/submap/Epod2) +"q" = (/obj/structure/boulder{icon_state = "boulder2"},/turf/simulated/floor/outdoors/rocks,/area/submap/Epod2) + +(1,1,1) = {" +aaaaaaaaaaaaaaa +abbcdbbbbbbbbba +abdefdcddbbbbba +adghhhhicdddbba +afjklmnoccccdda +apbhhhhicccdcca +abqdpddcddcccca +abbbbbcdbcddcda +abbbbbbbbbdbdda +aaaaaaaaaaaaaaa +"} diff --git a/maps/submaps/surface_submaps/plains/Oldhouse.dmm b/maps/submaps/surface_submaps/plains/Oldhouse.dmm index 4e48624a9c..2c5d7537a7 100644 --- a/maps/submaps/surface_submaps/plains/Oldhouse.dmm +++ b/maps/submaps/surface_submaps/plains/Oldhouse.dmm @@ -1,874 +1,75 @@ -//MAP CONVERTED BY dmm2tgm.py THIS HEADER COMMENT PREVENTS RECONVERSION, DO NOT REMOVE -"a" = ( -/turf/template_noop, -/area/template_noop) -"b" = ( -/turf/template_noop, -/area/submap/Oldhouse) -"c" = ( -/turf/simulated/wall/wood, -/area/submap/Oldhouse) -"d" = ( -/obj/structure/flora/tree/sif, -/turf/template_noop, -/area/submap/Oldhouse) -"e" = ( -/obj/structure/window/reinforced/full, -/turf/simulated/floor/wood, -/area/submap/Oldhouse) -"f" = ( -/obj/structure/table/woodentable, -/obj/effect/decal/cleanable/cobweb2, -/turf/simulated/floor/wood, -/area/submap/Oldhouse) -"g" = ( -/obj/item/stack/material/wood, -/obj/effect/decal/cleanable/cobweb, -/turf/simulated/floor/wood, -/area/submap/Oldhouse) -"h" = ( -/obj/effect/decal/cleanable/dirt, -/turf/simulated/floor/wood, -/area/submap/Oldhouse) -"i" = ( -/turf/simulated/floor/wood, -/area/submap/Oldhouse) -"j" = ( -/turf/simulated/floor/wood{ - icon_state = "wood_broken6" - }, -/area/submap/Oldhouse) -"k" = ( -/obj/effect/decal/cleanable/dirt, -/obj/effect/decal/cleanable/spiderling_remains, -/turf/simulated/floor/wood, -/area/submap/Oldhouse) -"l" = ( -/obj/structure/table/woodentable, -/turf/simulated/floor/wood, -/area/submap/Oldhouse) -"m" = ( -/obj/structure/closet/cabinet, -/turf/simulated/floor/wood, -/area/submap/Oldhouse) -"n" = ( -/obj/effect/decal/cleanable/dirt, -/turf/simulated/floor/carpet/turcarpet, -/area/submap/Oldhouse) -"o" = ( -/obj/effect/decal/cleanable/dirt, -/turf/simulated/floor/wood{ - icon_state = "wood_broken4" - }, -/area/submap/Oldhouse) -"p" = ( -/turf/simulated/floor/wood{ - icon_state = "wood_broken2" - }, -/area/submap/Oldhouse) -"q" = ( -/obj/item/stack/material/wood, -/turf/simulated/floor/wood, -/area/submap/Oldhouse) -"r" = ( -/turf/simulated/floor/carpet/turcarpet, -/area/submap/Oldhouse) -"s" = ( -/turf/simulated/floor/wood{ - icon_state = "wood_broken4" - }, -/area/submap/Oldhouse) -"t" = ( -/obj/structure/table/woodentable, -/obj/item/weapon/paper, -/obj/effect/decal/cleanable/cobweb2, -/turf/simulated/floor/wood, -/area/submap/Oldhouse) -"u" = ( -/obj/structure/simple_door/wood, -/turf/simulated/floor/wood, -/area/submap/Oldhouse) -"v" = ( -/obj/structure/bed/chair/wood{ - icon_state = "wooden_chair"; - dir = 1 - }, -/turf/simulated/floor/wood, -/area/submap/Oldhouse) -"w" = ( -/obj/item/stack/material/wood, -/obj/effect/decal/cleanable/dirt, -/turf/simulated/floor/wood, -/area/submap/Oldhouse) -"x" = ( -/obj/effect/decal/cleanable/cobweb, -/turf/simulated/floor/wood{ - icon_state = "wood_broken6" - }, -/area/submap/Oldhouse) -"y" = ( -/obj/effect/decal/remains/mouse, -/turf/simulated/floor/wood, -/area/submap/Oldhouse) -"z" = ( -/obj/structure/table/woodentable, -/obj/item/stack/material/wood, -/turf/simulated/floor/wood, -/area/submap/Oldhouse) -"A" = ( -/obj/structure/bed, -/obj/item/weapon/bedsheet, -/turf/simulated/floor/wood, -/area/submap/Oldhouse) -"B" = ( -/obj/structure/bed/chair/comfy/teal, -/turf/simulated/floor/wood, -/area/submap/Oldhouse) -"C" = ( -/obj/structure/bookcase, -/turf/simulated/floor/carpet/turcarpet, -/area/submap/Oldhouse) -"D" = ( -/obj/structure/table, -/turf/simulated/floor/wood, -/area/submap/Oldhouse) -"E" = ( -/obj/structure/table/woodentable, -/obj/item/trash/candle, -/turf/simulated/floor/wood, -/area/submap/Oldhouse) -"F" = ( -/obj/structure/table/woodentable, -/obj/item/weapon/pen/blue, -/turf/simulated/floor/wood, -/area/submap/Oldhouse) -"G" = ( -/obj/item/weapon/reagent_containers/food/snacks/chips, -/obj/item/weapon/reagent_containers/food/snacks/chips, -/turf/simulated/floor/carpet/turcarpet, -/area/submap/Oldhouse) -"H" = ( -/obj/structure/table/woodentable, -/obj/item/weapon/flame/candle, -/turf/simulated/floor/wood, -/area/submap/Oldhouse) -"I" = ( -/obj/structure/bed/chair/wood{ - icon_state = "wooden_chair"; - dir = 8 - }, -/turf/simulated/floor/carpet/turcarpet, -/area/submap/Oldhouse) -"J" = ( -/obj/effect/decal/remains/mouse, -/turf/simulated/floor/carpet/turcarpet, -/area/submap/Oldhouse) -"K" = ( -/obj/structure/table/woodentable, -/obj/item/weapon/paper, -/obj/item/weapon/paper, -/turf/simulated/floor/wood, -/area/submap/Oldhouse) -"L" = ( -/obj/structure/table/woodentable, -/obj/item/weapon/paper/crumpled, -/turf/simulated/floor/wood, -/area/submap/Oldhouse) -"M" = ( -/obj/structure/frame, -/turf/simulated/floor/wood, -/area/submap/Oldhouse) -"N" = ( -/mob/living/simple_animal/hostile/giant_spider{ - attack_armor_pen = 100; - attacktext = list("lightly bonked"); - desc = "Furry and brown, this spider is so goddamn fat you're surprised it even moves around."; - faction = "neutral"; - health = 400; - melee_damage_lower = 1; - melee_damage_upper = 3; - melee_miss_chance = 30; - move_speed = 5; - name = "Mr. Tuddly" - }, -/turf/simulated/floor/carpet/turcarpet, -/area/submap/Oldhouse) -"O" = ( -/obj/effect/decal/cleanable/dirt, -/obj/effect/decal/cleanable/dirt, -/turf/simulated/floor/carpet/turcarpet, -/area/submap/Oldhouse) -"P" = ( -/obj/item/weapon/circuitboard/papershredder, -/turf/simulated/floor/wood, -/area/submap/Oldhouse) -"Q" = ( -/obj/item/weapon/reagent_containers/food/snacks/cheesiehonkers, -/obj/item/weapon/reagent_containers/food/snacks/cheesiehonkers, -/turf/simulated/floor/carpet/turcarpet, -/area/submap/Oldhouse) -"R" = ( -/obj/effect/decal/cleanable/spiderling_remains, -/turf/simulated/floor/wood, -/area/submap/Oldhouse) -"S" = ( -/obj/item/weapon/paper/crumpled, -/turf/simulated/floor/wood, -/area/submap/Oldhouse) -"T" = ( -/obj/structure/table/woodentable, -/obj/item/weapon/storage/backpack/satchel, -/turf/simulated/floor/wood, -/area/submap/Oldhouse) -"U" = ( -/obj/structure/table/rack, -/obj/item/clothing/suit/storage/hooded/wintercoat, -/obj/item/clothing/suit/storage/hooded/wintercoat, -/obj/item/clothing/head/hood/winter, -/obj/item/clothing/head/hood/winter, -/turf/simulated/floor/wood, -/area/submap/Oldhouse) -"V" = ( -/obj/item/device/flashlight, -/turf/simulated/floor/wood, -/area/submap/Oldhouse) -"W" = ( -/obj/structure/table/rack, -/obj/item/clothing/shoes/boots/winter, -/obj/item/clothing/shoes/boots/winter, -/obj/item/clothing/shoes/boots/winter, -/turf/simulated/floor/wood, -/area/submap/Oldhouse) -"X" = ( -/obj/structure/coatrack, -/turf/simulated/floor/wood, -/area/submap/Oldhouse) -"Y" = ( -/obj/structure/table/woodentable, -/turf/simulated/floor/wood{ - icon_state = "wood_broken6" - }, -/area/submap/Oldhouse) -"Z" = ( -/obj/structure/table/woodentable, -/turf/simulated/floor/wood{ - icon_state = "wood_broken2" - }, -/area/submap/Oldhouse) +"a" = (/turf/template_noop,/area/template_noop) +"b" = (/turf/template_noop,/area/submap/Oldhouse) +"c" = (/turf/simulated/wall/wood,/area/submap/Oldhouse) +"d" = (/obj/structure/flora/tree/sif,/turf/template_noop,/area/submap/Oldhouse) +"e" = (/obj/structure/window/reinforced/full,/turf/simulated/floor/wood,/area/submap/Oldhouse) +"f" = (/obj/structure/table/woodentable,/obj/effect/decal/cleanable/cobweb2,/turf/simulated/floor/wood,/area/submap/Oldhouse) +"g" = (/obj/item/stack/material/wood,/obj/effect/decal/cleanable/cobweb,/turf/simulated/floor/wood,/area/submap/Oldhouse) +"h" = (/obj/effect/decal/cleanable/dirt,/turf/simulated/floor/wood,/area/submap/Oldhouse) +"i" = (/turf/simulated/floor/wood,/area/submap/Oldhouse) +"j" = (/turf/simulated/floor/wood{icon_state = "wood_broken6"},/area/submap/Oldhouse) +"k" = (/obj/effect/decal/cleanable/dirt,/obj/effect/decal/cleanable/spiderling_remains,/turf/simulated/floor/wood,/area/submap/Oldhouse) +"l" = (/obj/structure/table/woodentable,/turf/simulated/floor/wood,/area/submap/Oldhouse) +"m" = (/obj/structure/closet/cabinet,/turf/simulated/floor/wood,/area/submap/Oldhouse) +"n" = (/obj/effect/decal/cleanable/dirt,/turf/simulated/floor/carpet/turcarpet,/area/submap/Oldhouse) +"o" = (/obj/effect/decal/cleanable/dirt,/turf/simulated/floor/wood{icon_state = "wood_broken4"},/area/submap/Oldhouse) +"p" = (/turf/simulated/floor/wood{icon_state = "wood_broken2"},/area/submap/Oldhouse) +"q" = (/obj/item/stack/material/wood,/turf/simulated/floor/wood,/area/submap/Oldhouse) +"r" = (/turf/simulated/floor/carpet/turcarpet,/area/submap/Oldhouse) +"s" = (/turf/simulated/floor/wood{icon_state = "wood_broken4"},/area/submap/Oldhouse) +"t" = (/obj/structure/table/woodentable,/obj/item/weapon/paper,/obj/effect/decal/cleanable/cobweb2,/turf/simulated/floor/wood,/area/submap/Oldhouse) +"u" = (/obj/structure/simple_door/wood,/turf/simulated/floor/wood,/area/submap/Oldhouse) +"v" = (/obj/structure/bed/chair/wood{icon_state = "wooden_chair"; dir = 1},/turf/simulated/floor/wood,/area/submap/Oldhouse) +"w" = (/obj/item/stack/material/wood,/obj/effect/decal/cleanable/dirt,/turf/simulated/floor/wood,/area/submap/Oldhouse) +"x" = (/obj/effect/decal/cleanable/cobweb,/turf/simulated/floor/wood{icon_state = "wood_broken6"},/area/submap/Oldhouse) +"y" = (/obj/effect/decal/remains/mouse,/turf/simulated/floor/wood,/area/submap/Oldhouse) +"z" = (/obj/structure/table/woodentable,/obj/item/stack/material/wood,/turf/simulated/floor/wood,/area/submap/Oldhouse) +"A" = (/obj/structure/bed,/obj/item/weapon/bedsheet,/turf/simulated/floor/wood,/area/submap/Oldhouse) +"B" = (/obj/structure/bed/chair/comfy/teal,/turf/simulated/floor/wood,/area/submap/Oldhouse) +"C" = (/obj/structure/bookcase,/turf/simulated/floor/carpet/turcarpet,/area/submap/Oldhouse) +"D" = (/obj/structure/table,/turf/simulated/floor/wood,/area/submap/Oldhouse) +"E" = (/obj/structure/table/woodentable,/obj/item/trash/candle,/turf/simulated/floor/wood,/area/submap/Oldhouse) +"F" = (/obj/structure/table/woodentable,/obj/item/weapon/pen/blue,/turf/simulated/floor/wood,/area/submap/Oldhouse) +"G" = (/obj/item/weapon/reagent_containers/food/snacks/chips,/obj/item/weapon/reagent_containers/food/snacks/chips,/turf/simulated/floor/carpet/turcarpet,/area/submap/Oldhouse) +"H" = (/obj/structure/table/woodentable,/obj/item/weapon/flame/candle,/turf/simulated/floor/wood,/area/submap/Oldhouse) +"I" = (/obj/structure/bed/chair/wood{icon_state = "wooden_chair"; dir = 8},/turf/simulated/floor/carpet/turcarpet,/area/submap/Oldhouse) +"J" = (/obj/effect/decal/remains/mouse,/turf/simulated/floor/carpet/turcarpet,/area/submap/Oldhouse) +"K" = (/obj/structure/table/woodentable,/obj/item/weapon/paper,/obj/item/weapon/paper,/turf/simulated/floor/wood,/area/submap/Oldhouse) +"L" = (/obj/structure/table/woodentable,/obj/item/weapon/paper/crumpled,/turf/simulated/floor/wood,/area/submap/Oldhouse) +"M" = (/obj/structure/frame,/turf/simulated/floor/wood,/area/submap/Oldhouse) +"N" = (/mob/living/simple_mob/animal/giant_spider{attack_armor_pen = 100; attacktext = list("lightly bonked"); desc = "Furry and brown, this spider is so goddamn fat you're surprised it even moves around."; faction = "neutral"; health = 400; melee_damage_lower = 1; melee_damage_upper = 3; melee_miss_chance = 30; move_speed = 5; name = "Mr. Tuddly"},/turf/simulated/floor/carpet/turcarpet,/area/submap/Oldhouse) +"O" = (/obj/effect/decal/cleanable/dirt,/obj/effect/decal/cleanable/dirt,/turf/simulated/floor/carpet/turcarpet,/area/submap/Oldhouse) +"P" = (/obj/item/weapon/circuitboard/papershredder,/turf/simulated/floor/wood,/area/submap/Oldhouse) +"Q" = (/obj/item/weapon/reagent_containers/food/snacks/cheesiehonkers,/obj/item/weapon/reagent_containers/food/snacks/cheesiehonkers,/turf/simulated/floor/carpet/turcarpet,/area/submap/Oldhouse) +"R" = (/obj/effect/decal/cleanable/spiderling_remains,/turf/simulated/floor/wood,/area/submap/Oldhouse) +"S" = (/obj/item/weapon/paper/crumpled,/turf/simulated/floor/wood,/area/submap/Oldhouse) +"T" = (/obj/structure/table/woodentable,/obj/item/weapon/storage/backpack/satchel,/turf/simulated/floor/wood,/area/submap/Oldhouse) +"U" = (/obj/structure/table/rack,/obj/item/clothing/suit/storage/hooded/wintercoat,/obj/item/clothing/suit/storage/hooded/wintercoat,/obj/item/clothing/head/hood/winter,/obj/item/clothing/head/hood/winter,/turf/simulated/floor/wood,/area/submap/Oldhouse) +"V" = (/obj/item/device/flashlight,/turf/simulated/floor/wood,/area/submap/Oldhouse) +"W" = (/obj/structure/table/rack,/obj/item/clothing/shoes/boots/winter,/obj/item/clothing/shoes/boots/winter,/obj/item/clothing/shoes/boots/winter,/turf/simulated/floor/wood,/area/submap/Oldhouse) +"X" = (/obj/structure/coatrack,/turf/simulated/floor/wood,/area/submap/Oldhouse) +"Y" = (/obj/structure/table/woodentable,/turf/simulated/floor/wood{icon_state = "wood_broken6"},/area/submap/Oldhouse) +"Z" = (/obj/structure/table/woodentable,/turf/simulated/floor/wood{icon_state = "wood_broken2"},/area/submap/Oldhouse) (1,1,1) = {" -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -"} -(2,1,1) = {" -a -b -b -c -c -e -e -c -c -b -b -b -b -b -b -b -b -d -b -a -"} -(3,1,1) = {" -a -b -c -c -m -i -i -A -c -c -b -b -b -b -b -b -b -b -b -a -"} -(4,1,1) = {" -a -c -c -f -i -i -i -B -E -c -c -b -b -b -b -b -b -b -b -a -"} -(5,1,1) = {" -a -c -c -c -c -u -c -c -c -c -c -c -c -c -b -b -b -b -b -a -"} -(6,1,1) = {" -a -c -c -g -i -i -s -l -F -l -L -c -c -c -c -b -b -b -b -a -"} -(7,1,1) = {" -a -c -c -h -n -n -n -n -r -I -r -i -i -c -c -c -c -b -b -a -"} -(8,1,1) = {" -a -c -c -h -n -n -n -n -r -r -r -i -R -u -i -l -c -b -b -a -"} -(9,1,1) = {" -a -c -c -h -o -h -w -i -i -i -M -P -i -u -i -T -c -b -b -a -"} -(10,1,1) = {" -a -c -c -i -i -c -c -u -u -c -c -c -c -c -h -j -c -b -b -a -"} -(11,1,1) = {" -a -b -e -i -i -c -x -i -i -i -i -i -S -c -h -h -c -b -b -a -"} -(12,1,1) = {" -a -b -e -i -p -c -i -C -C -C -C -C -i -c -h -h -c -b -b -a -"} -(13,1,1) = {" -a -b -e -i -i -c -i -r -r -r -r -r -y -c -i -U -c -b -b -a -"} -(14,1,1) = {" -a -b -c -i -i -c -i -C -C -C -C -C -i -c -i -V -u -b -b -a -"} -(15,1,1) = {" -a -b -c -i -i -c -y -C -C -C -C -C -i -c -i -i -u -b -b -a -"} -(16,1,1) = {" -a -b -e -j -i -c -i -r -G -J -N -Q -i -c -i -W -c -b -b -a -"} -(17,1,1) = {" -a -b -e -i -q -c -i -C -C -C -C -C -s -c -i -X -c -b -b -a -"} -(18,1,1) = {" -a -b -e -i -i -c -i -i -i -i -i -i -y -c -S -i -c -b -b -a -"} -(19,1,1) = {" -a -c -c -h -i -c -c -u -u -c -c -c -c -c -i -i -c -b -b -a -"} -(20,1,1) = {" -a -c -c -h -i -i -i -i -i -h -h -q -i -u -i -Y -c -b -b -a -"} -(21,1,1) = {" -a -c -c -k -r -r -r -r -r -n -O -i -i -u -i -Z -c -b -b -a -"} -(22,1,1) = {" -a -c -c -h -r -r -r -r -r -r -n -i -i -c -c -c -c -b -b -a -"} -(23,1,1) = {" -a -c -c -h -s -i -z -D -D -K -l -c -c -c -c -b -b -b -b -a -"} -(24,1,1) = {" -a -c -c -c -c -u -c -c -c -c -c -c -c -c -b -b -b -b -b -a -"} -(25,1,1) = {" -a -c -c -l -i -i -i -i -H -c -c -b -b -d -b -b -b -b -b -a -"} -(26,1,1) = {" -a -b -c -c -t -v -i -A -c -c -b -b -b -b -b -b -b -b -b -a -"} -(27,1,1) = {" -a -d -b -c -c -e -e -c -c -b -b -b -b -b -b -b -b -b -b -a -"} -(28,1,1) = {" -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -"} +aaaaaaaaaaaaaaaaaaaaaaaaaaaa +abbcccccccbbbbbbbbcccccccbda +abcccccccceeecceeeccccccccba +accfcghhhiiiiiijiihhkhhclcca +acmicinnoiipiiiiqiiirrscitca +aeiiuinnhccccccccccirriuivea +aeiicsnnwcxiiiyiiicirrzciiea +acABclnniuiCrCCrCiuirrDciAca +accEcFrriuiCrCCGCiuirrDcHcca +abccclIriciCrCCJCichnrKcccba +abbccLrrMciCrCCNCichOnlccbba +abbbcciiPciCrCCQCicqiiccbbba +abbbcciRicSiyiiisyciiiccbbba +abbbcccuuccccccccccuucccdbba +abbbbcciihhhiiiiiSiiiccbbbba +abbbbbclTjhhUViWXiiYZcbbbbba +abbbbbcccccccuucccccccbbbbba +adbbbbbbbbbbbbbbbbbbbbbbbbba +abbbbbbbbbbbbbbbbbbbbbbbbbba +aaaaaaaaaaaaaaaaaaaaaaaaaaaa +"} \ No newline at end of file diff --git a/maps/submaps/surface_submaps/plains/Oldhouse_vr.dmm b/maps/submaps/surface_submaps/plains/Oldhouse_vr.dmm new file mode 100644 index 0000000000..4b748edaf6 --- /dev/null +++ b/maps/submaps/surface_submaps/plains/Oldhouse_vr.dmm @@ -0,0 +1,878 @@ +//MAP CONVERTED BY dmm2tgm.py THIS HEADER COMMENT PREVENTS RECONVERSION, DO NOT REMOVE +"aa" = ( +/turf/template_noop, +/area/template_noop) +"ab" = ( +/turf/template_noop, +/area/submap/Oldhouse) +"ac" = ( +/turf/simulated/wall/wood, +/area/submap/Oldhouse) +"ad" = ( +/obj/structure/flora/tree/sif, +/turf/template_noop, +/area/submap/Oldhouse) +"ae" = ( +/obj/structure/window/reinforced/full, +/turf/simulated/floor/wood, +/area/submap/Oldhouse) +"af" = ( +/obj/structure/table/woodentable, +/obj/effect/decal/cleanable/cobweb2, +/turf/simulated/floor/wood, +/area/submap/Oldhouse) +"ag" = ( +/obj/item/stack/material/wood, +/obj/effect/decal/cleanable/cobweb, +/turf/simulated/floor/wood, +/area/submap/Oldhouse) +"ah" = ( +/obj/effect/decal/cleanable/dirt, +/turf/simulated/floor/wood, +/area/submap/Oldhouse) +"ai" = ( +/turf/simulated/floor/wood, +/area/submap/Oldhouse) +"aj" = ( +/turf/simulated/floor/wood{ + icon_state = "wood_broken6" + }, +/area/submap/Oldhouse) +"ak" = ( +/obj/effect/decal/cleanable/dirt, +/obj/effect/decal/cleanable/spiderling_remains, +/turf/simulated/floor/wood, +/area/submap/Oldhouse) +"al" = ( +/obj/structure/table/woodentable, +/turf/simulated/floor/wood, +/area/submap/Oldhouse) +"am" = ( +/obj/structure/closet/cabinet, +/turf/simulated/floor/wood, +/area/submap/Oldhouse) +"an" = ( +/obj/effect/decal/cleanable/dirt, +/turf/simulated/floor/carpet/turcarpet, +/area/submap/Oldhouse) +"ao" = ( +/obj/effect/decal/cleanable/dirt, +/turf/simulated/floor/wood{ + icon_state = "wood_broken4" + }, +/area/submap/Oldhouse) +"ap" = ( +/turf/simulated/floor/wood{ + icon_state = "wood_broken2" + }, +/area/submap/Oldhouse) +"aq" = ( +/obj/item/stack/material/wood, +/turf/simulated/floor/wood, +/area/submap/Oldhouse) +"ar" = ( +/turf/simulated/floor/carpet/turcarpet, +/area/submap/Oldhouse) +"as" = ( +/turf/simulated/floor/wood{ + icon_state = "wood_broken4" + }, +/area/submap/Oldhouse) +"at" = ( +/obj/structure/table/woodentable, +/obj/item/weapon/paper, +/obj/effect/decal/cleanable/cobweb2, +/turf/simulated/floor/wood, +/area/submap/Oldhouse) +"au" = ( +/obj/structure/simple_door/wood, +/turf/simulated/floor/wood, +/area/submap/Oldhouse) +"av" = ( +/obj/structure/bed/chair/wood{ + icon_state = "wooden_chair"; + dir = 1 + }, +/turf/simulated/floor/wood, +/area/submap/Oldhouse) +"aw" = ( +/obj/item/stack/material/wood, +/obj/effect/decal/cleanable/dirt, +/turf/simulated/floor/wood, +/area/submap/Oldhouse) +"ax" = ( +/obj/effect/decal/cleanable/cobweb, +/turf/simulated/floor/wood{ + icon_state = "wood_broken6" + }, +/area/submap/Oldhouse) +"ay" = ( +/obj/effect/decal/remains/mouse, +/turf/simulated/floor/wood, +/area/submap/Oldhouse) +"az" = ( +/obj/structure/table/woodentable, +/obj/item/stack/material/wood, +/turf/simulated/floor/wood, +/area/submap/Oldhouse) +"aA" = ( +/obj/structure/bed, +/obj/item/weapon/bedsheet, +/turf/simulated/floor/wood, +/area/submap/Oldhouse) +"aB" = ( +/obj/structure/bed/chair/comfy/teal, +/turf/simulated/floor/wood, +/area/submap/Oldhouse) +"aC" = ( +/obj/structure/bookcase, +/turf/simulated/floor/carpet/turcarpet, +/area/submap/Oldhouse) +"aD" = ( +/obj/structure/table, +/turf/simulated/floor/wood, +/area/submap/Oldhouse) +"aE" = ( +/obj/structure/table/woodentable, +/obj/item/trash/candle, +/turf/simulated/floor/wood, +/area/submap/Oldhouse) +"aF" = ( +/obj/structure/table/woodentable, +/obj/item/weapon/pen/blue, +/turf/simulated/floor/wood, +/area/submap/Oldhouse) +"aG" = ( +/obj/item/weapon/reagent_containers/food/snacks/chips, +/obj/item/weapon/reagent_containers/food/snacks/chips, +/turf/simulated/floor/carpet/turcarpet, +/area/submap/Oldhouse) +"aH" = ( +/obj/structure/table/woodentable, +/obj/item/weapon/flame/candle, +/turf/simulated/floor/wood, +/area/submap/Oldhouse) +"aI" = ( +/obj/structure/bed/chair/wood{ + icon_state = "wooden_chair"; + dir = 8 + }, +/turf/simulated/floor/carpet/turcarpet, +/area/submap/Oldhouse) +"aJ" = ( +/obj/effect/decal/remains/mouse, +/turf/simulated/floor/carpet/turcarpet, +/area/submap/Oldhouse) +"aK" = ( +/obj/structure/table/woodentable, +/obj/item/weapon/paper, +/obj/item/weapon/paper, +/turf/simulated/floor/wood, +/area/submap/Oldhouse) +"aL" = ( +/obj/structure/table/woodentable, +/obj/item/weapon/paper/crumpled, +/turf/simulated/floor/wood, +/area/submap/Oldhouse) +"aM" = ( +/obj/structure/frame, +/turf/simulated/floor/wood, +/area/submap/Oldhouse) +"aN" = ( +/mob/living/simple_animal/hostile/giant_spider{ + attack_armor_pen = 100; + attacktext = list("lightly bonked"); + desc = "Furry and brown, this spider is so goddamn fat you're surprised it even moves around."; + faction = "neutral"; + health = 400; + melee_damage_lower = 1; + melee_damage_upper = 3; + melee_miss_chance = 30; + move_speed = 5; + name = "Mr. Tuddly" + }, +/turf/simulated/floor/carpet/turcarpet, +/area/submap/Oldhouse) +"aO" = ( +/obj/effect/decal/cleanable/dirt, +/obj/effect/decal/cleanable/dirt, +/turf/simulated/floor/carpet/turcarpet, +/area/submap/Oldhouse) +"aP" = ( +/obj/item/weapon/circuitboard/papershredder, +/turf/simulated/floor/wood, +/area/submap/Oldhouse) +"aQ" = ( +/obj/item/weapon/reagent_containers/food/snacks/cheesiehonkers, +/obj/item/weapon/reagent_containers/food/snacks/cheesiehonkers, +/turf/simulated/floor/carpet/turcarpet, +/area/submap/Oldhouse) +"aR" = ( +/obj/effect/decal/cleanable/spiderling_remains, +/turf/simulated/floor/wood, +/area/submap/Oldhouse) +"aS" = ( +/obj/item/weapon/paper/crumpled, +/turf/simulated/floor/wood, +/area/submap/Oldhouse) +"aT" = ( +/obj/structure/table/woodentable, +/obj/item/weapon/storage/backpack/satchel, +/turf/simulated/floor/wood, +/area/submap/Oldhouse) +"aU" = ( +/obj/structure/table/rack, +/obj/item/clothing/suit/storage/hooded/wintercoat, +/obj/item/clothing/suit/storage/hooded/wintercoat, +/obj/item/clothing/head/hood/winter, +/obj/item/clothing/head/hood/winter, +/turf/simulated/floor/wood, +/area/submap/Oldhouse) +"aV" = ( +/obj/item/device/flashlight, +/turf/simulated/floor/wood, +/area/submap/Oldhouse) +"aW" = ( +/obj/structure/table/rack, +/obj/item/clothing/shoes/boots/winter, +/obj/item/clothing/shoes/boots/winter, +/obj/item/clothing/shoes/boots/winter, +/turf/simulated/floor/wood, +/area/submap/Oldhouse) +"aX" = ( +/obj/structure/coatrack, +/turf/simulated/floor/wood, +/area/submap/Oldhouse) +"aY" = ( +/obj/structure/table/woodentable, +/turf/simulated/floor/wood{ + icon_state = "wood_broken6" + }, +/area/submap/Oldhouse) +"aZ" = ( +/obj/structure/table/woodentable, +/turf/simulated/floor/wood{ + icon_state = "wood_broken2" + }, +/area/submap/Oldhouse) +"ba" = ( +/obj/machinery/portable_atmospherics/powered/scrubber/huge/stationary/tram, +/turf/simulated/floor/wood, +/area/submap/Oldhouse) + +(1,1,1) = {" +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +"} +(2,1,1) = {" +aa +ab +ab +ac +ac +ae +ae +ac +ac +ab +ab +ab +ab +ab +ab +ab +ab +ad +ab +aa +"} +(3,1,1) = {" +aa +ab +ac +ac +am +ai +ai +aA +ac +ac +ab +ab +ab +ab +ab +ab +ab +ab +ab +aa +"} +(4,1,1) = {" +aa +ac +ac +af +ai +ai +ai +aB +aE +ac +ac +ab +ab +ab +ab +ab +ab +ab +ab +aa +"} +(5,1,1) = {" +aa +ac +ac +ac +ac +au +ac +ac +ac +ac +ac +ac +ac +ac +ab +ab +ab +ab +ab +aa +"} +(6,1,1) = {" +aa +ac +ac +ag +ai +ai +as +al +aF +al +aL +ac +ac +ac +ac +ab +ab +ab +ab +aa +"} +(7,1,1) = {" +aa +ac +ac +ah +an +an +an +an +ar +aI +ar +ai +ai +ac +ac +ac +ac +ab +ab +aa +"} +(8,1,1) = {" +aa +ac +ac +ah +an +an +an +an +ar +ar +ar +ai +aR +au +ai +al +ac +ab +ab +aa +"} +(9,1,1) = {" +aa +ac +ac +ah +ao +ah +aw +ai +ai +ai +aM +aP +ai +au +ai +aT +ac +ab +ab +aa +"} +(10,1,1) = {" +aa +ac +ac +ai +ai +ac +ac +au +au +ac +ac +ac +ac +ac +ah +aj +ac +ab +ab +aa +"} +(11,1,1) = {" +aa +ab +ae +ai +ai +ac +ax +ai +ai +ai +ai +ai +aS +ac +ah +ah +ac +ab +ab +aa +"} +(12,1,1) = {" +aa +ab +ae +ai +ap +ac +ai +aC +aC +aC +aC +aC +ai +ac +ah +ah +ac +ac +ac +aa +"} +(13,1,1) = {" +aa +ab +ae +ai +ai +ac +ai +ar +ar +ar +ar +ar +ay +ac +ai +aU +ac +ba +ac +aa +"} +(14,1,1) = {" +aa +ab +ac +ai +ai +ac +ai +aC +aC +aC +aC +aC +ai +ac +ai +aV +au +ai +au +aa +"} +(15,1,1) = {" +aa +ab +ac +ai +ai +ac +ay +aC +aC +aC +aC +aC +ai +ac +ai +ai +au +ai +au +aa +"} +(16,1,1) = {" +aa +ab +ae +aj +ai +ac +ai +ar +aG +aJ +aN +aQ +ai +ac +ai +aW +ac +ba +ac +aa +"} +(17,1,1) = {" +aa +ab +ae +ai +aq +ac +ai +aC +aC +aC +aC +aC +as +ac +ai +aX +ac +ac +ac +aa +"} +(18,1,1) = {" +aa +ab +ae +ai +ai +ac +ai +ai +ai +ai +ai +ai +ay +ac +aS +ai +ac +ab +ab +aa +"} +(19,1,1) = {" +aa +ac +ac +ah +ai +ac +ac +au +au +ac +ac +ac +ac +ac +ai +ai +ac +ab +ab +aa +"} +(20,1,1) = {" +aa +ac +ac +ah +ai +ai +ai +ai +ai +ah +ah +aq +ai +au +ai +aY +ac +ab +ab +aa +"} +(21,1,1) = {" +aa +ac +ac +ak +ar +ar +ar +ar +ar +an +aO +ai +ai +au +ai +aZ +ac +ab +ab +aa +"} +(22,1,1) = {" +aa +ac +ac +ah +ar +ar +ar +ar +ar +ar +an +ai +ai +ac +ac +ac +ac +ab +ab +aa +"} +(23,1,1) = {" +aa +ac +ac +ah +as +ai +az +aD +aD +aK +al +ac +ac +ac +ac +ab +ab +ab +ab +aa +"} +(24,1,1) = {" +aa +ac +ac +ac +ac +au +ac +ac +ac +ac +ac +ac +ac +ac +ab +ab +ab +ab +ab +aa +"} +(25,1,1) = {" +aa +ac +ac +al +ai +ai +ai +ai +aH +ac +ac +ab +ab +ad +ab +ab +ab +ab +ab +aa +"} +(26,1,1) = {" +aa +ab +ac +ac +at +av +ai +aA +ac +ac +ab +ab +ab +ab +ab +ab +ab +ab +ab +aa +"} +(27,1,1) = {" +aa +ad +ab +ac +ac +ae +ae +ac +ac +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +aa +"} +(28,1,1) = {" +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +"} diff --git a/maps/submaps/surface_submaps/plains/PooledR.dmm b/maps/submaps/surface_submaps/plains/PooledR.dmm index 554c4cca8f..93d8a3f09f 100644 --- a/maps/submaps/surface_submaps/plains/PooledR.dmm +++ b/maps/submaps/surface_submaps/plains/PooledR.dmm @@ -11,10 +11,10 @@ "k" = (/obj/structure/flora/ausbushes,/turf/template_noop,/area/submap/PooledR) "l" = (/turf/simulated/floor/water,/area/submap/PooledR) "m" = (/obj/structure/flora/ausbushes/grassybush,/turf/template_noop,/area/submap/PooledR) -"n" = (/mob/living/simple_animal/fish/trout,/turf/simulated/floor/water,/area/submap/PooledR) -"o" = (/mob/living/simple_animal/fish/salmon,/turf/simulated/floor/water,/area/submap/PooledR) +"n" = (/mob/living/simple_mob/animal/passive/fish/trout,/turf/simulated/floor/water,/area/submap/PooledR) +"o" = (/mob/living/simple_mob/animal/passive/fish/salmon,/turf/simulated/floor/water,/area/submap/PooledR) "p" = (/turf/simulated/floor/water/deep,/area/submap/PooledR) -"q" = (/mob/living/simple_animal/fish/bass,/turf/simulated/floor/water/deep,/area/submap/PooledR) +"q" = (/mob/living/simple_mob/animal/passive/fish/bass,/turf/simulated/floor/water/deep,/area/submap/PooledR) (1,1,1) = {" aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa diff --git a/maps/submaps/surface_submaps/plains/PooledR_vr.dmm b/maps/submaps/surface_submaps/plains/PooledR_vr.dmm new file mode 100644 index 0000000000..99dfa31789 --- /dev/null +++ b/maps/submaps/surface_submaps/plains/PooledR_vr.dmm @@ -0,0 +1,1351 @@ +//MAP CONVERTED BY dmm2tgm.py THIS HEADER COMMENT PREVENTS RECONVERSION, DO NOT REMOVE +"a" = ( +/turf/template_noop, +/area/template_noop) +"b" = ( +/turf/template_noop, +/area/submap/PooledR) +"c" = ( +/turf/simulated/mineral/ignore_mapgen, +/area/submap/PooledR) +"d" = ( +/obj/structure/flora/tree/sif, +/turf/template_noop, +/area/submap/PooledR) +"e" = ( +/obj/structure/table/woodentable, +/turf/template_noop, +/area/submap/PooledR) +"f" = ( +/obj/structure/table/woodentable, +/obj/item/weapon/material/knife, +/turf/template_noop, +/area/submap/PooledR) +"g" = ( +/obj/structure/flora/ausbushes/palebush, +/turf/template_noop, +/area/submap/PooledR) +"h" = ( +/obj/structure/table/woodentable, +/obj/item/weapon/gun/energy/retro{ + cell_type = /obj/item/weapon/cell/device/weapon/empty + }, +/turf/template_noop, +/area/submap/PooledR) +"i" = ( +/obj/structure/flora/ausbushes/reedbush, +/turf/template_noop, +/area/submap/PooledR) +"j" = ( +/turf/simulated/floor/outdoors/rocks, +/area/submap/PooledR) +"k" = ( +/obj/structure/flora/ausbushes, +/turf/template_noop, +/area/submap/PooledR) +"l" = ( +/turf/simulated/floor/water, +/area/submap/PooledR) +"m" = ( +/obj/structure/flora/ausbushes/grassybush, +/turf/template_noop, +/area/submap/PooledR) +"n" = ( +/turf/simulated/floor/water/deep, +/area/submap/PooledR) + +(1,1,1) = {" +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +"} +(2,1,1) = {" +a +b +b +b +b +b +b +b +b +b +b +b +b +b +b +b +b +c +c +c +b +b +b +b +b +b +b +b +b +b +b +b +b +b +a +"} +(3,1,1) = {" +a +b +b +b +b +b +b +b +b +b +b +b +b +b +c +c +c +c +c +c +c +c +c +c +c +c +c +b +b +b +b +b +b +b +a +"} +(4,1,1) = {" +a +b +b +b +b +b +b +b +b +b +b +d +b +b +c +c +c +c +c +c +c +c +c +c +c +c +c +c +c +b +b +b +b +b +a +"} +(5,1,1) = {" +a +b +b +b +b +b +b +b +b +b +b +b +b +b +b +c +c +c +c +c +c +c +c +c +c +c +c +c +c +c +b +b +b +b +a +"} +(6,1,1) = {" +a +b +b +b +b +b +b +b +b +b +b +b +b +b +b +b +b +c +c +c +c +c +c +c +c +c +c +c +c +c +c +b +b +b +a +"} +(7,1,1) = {" +a +b +b +b +b +b +b +b +b +b +b +b +b +b +b +b +b +b +b +b +b +c +c +c +c +c +c +c +c +c +c +b +b +b +a +"} +(8,1,1) = {" +a +b +b +b +b +b +b +b +b +b +b +b +b +b +b +b +b +b +m +b +b +j +c +c +c +c +c +c +c +c +c +b +b +b +a +"} +(9,1,1) = {" +a +b +b +b +b +b +b +b +b +b +b +b +d +b +b +g +b +b +b +b +j +j +j +c +c +c +c +c +c +c +c +b +b +b +a +"} +(10,1,1) = {" +a +b +b +b +b +b +b +b +b +b +b +b +b +b +b +b +b +b +b +i +j +l +l +c +c +c +c +c +c +c +c +c +b +b +a +"} +(11,1,1) = {" +a +b +b +b +b +b +b +b +b +b +b +b +b +b +b +b +b +b +b +j +j +l +l +c +c +c +c +c +c +c +c +c +b +b +a +"} +(12,1,1) = {" +a +b +b +b +b +b +b +b +b +b +b +b +b +b +b +b +k +b +j +j +l +l +l +l +c +c +c +c +c +c +c +c +b +b +a +"} +(13,1,1) = {" +a +b +b +b +b +d +b +b +b +b +b +b +b +b +b +b +b +b +j +j +l +l +l +l +c +c +c +c +c +c +c +c +b +b +a +"} +(14,1,1) = {" +a +b +b +b +b +b +b +b +b +b +b +b +b +b +b +b +b +j +j +l +l +l +l +l +l +c +c +c +c +c +c +c +b +b +a +"} +(15,1,1) = {" +a +b +b +b +b +b +b +b +b +b +b +b +b +b +b +b +b +j +l +l +l +l +l +l +n +n +c +c +c +c +c +c +c +b +a +"} +(16,1,1) = {" +a +b +b +b +b +b +b +b +b +b +b +b +b +b +b +i +j +j +l +l +l +l +l +n +n +n +n +c +c +c +c +c +c +b +a +"} +(17,1,1) = {" +a +b +b +b +b +b +b +b +b +b +b +b +b +b +b +b +j +j +l +l +l +l +l +n +n +n +n +c +c +c +c +c +c +b +a +"} +(18,1,1) = {" +a +b +b +b +b +b +b +b +b +b +b +b +b +b +b +b +j +l +l +l +l +l +l +n +n +n +n +c +c +c +c +c +c +b +a +"} +(19,1,1) = {" +a +b +b +b +b +b +b +b +b +b +b +b +b +b +b +j +j +l +l +l +l +l +n +n +n +n +n +c +c +c +c +c +c +b +a +"} +(20,1,1) = {" +a +b +b +b +b +b +b +b +b +b +b +b +b +b +b +j +l +l +l +l +l +l +n +n +n +n +n +n +c +c +c +c +c +b +a +"} +(21,1,1) = {" +a +b +b +b +b +b +b +b +b +b +b +b +b +b +b +j +l +l +l +l +l +n +n +n +n +n +n +n +c +c +c +c +c +b +a +"} +(22,1,1) = {" +a +b +b +b +d +b +b +b +b +b +b +b +b +g +b +j +l +l +l +l +l +n +n +n +n +n +n +c +c +c +c +c +c +b +a +"} +(23,1,1) = {" +a +b +b +b +b +b +d +b +b +b +b +b +b +b +i +j +l +l +l +l +l +n +n +n +n +n +c +c +c +c +c +c +c +b +a +"} +(24,1,1) = {" +a +b +b +b +b +b +b +b +b +b +b +b +b +b +b +j +l +l +l +l +l +n +n +n +c +c +c +c +c +c +c +c +c +b +a +"} +(25,1,1) = {" +a +b +b +b +b +b +b +b +b +b +b +b +b +b +c +c +c +l +l +l +l +n +c +c +c +c +c +c +c +c +c +c +c +b +a +"} +(26,1,1) = {" +a +b +b +b +b +b +c +c +c +c +c +e +f +h +c +c +c +c +l +c +c +c +c +c +c +c +c +c +c +c +c +c +b +b +a +"} +(27,1,1) = {" +a +b +b +c +c +c +c +c +c +c +c +c +c +c +c +c +c +c +c +c +c +c +c +c +c +c +c +c +c +c +c +c +b +b +a +"} +(28,1,1) = {" +a +b +b +c +c +c +c +c +c +c +c +c +c +c +c +c +c +c +c +c +c +c +c +c +c +c +c +c +c +c +c +c +b +b +a +"} +(29,1,1) = {" +a +c +c +c +c +c +c +c +c +c +c +c +c +c +c +c +c +c +c +c +c +c +c +c +c +c +c +c +c +c +c +c +b +b +a +"} +(30,1,1) = {" +a +c +c +c +c +c +c +c +c +c +c +c +c +c +c +c +c +c +c +c +c +c +c +c +c +c +c +c +c +c +c +b +b +b +a +"} +(31,1,1) = {" +a +c +c +c +c +c +c +c +c +c +c +c +c +c +b +b +b +b +b +c +c +c +c +c +c +c +c +c +c +c +b +b +b +b +a +"} +(32,1,1) = {" +a +b +c +c +c +c +c +c +c +c +c +c +b +b +b +b +b +b +b +b +b +b +b +c +c +c +c +b +c +b +b +b +b +b +a +"} +(33,1,1) = {" +a +b +b +c +c +c +c +c +c +c +b +b +b +b +b +b +b +b +b +b +b +b +b +b +b +b +b +b +b +b +b +b +b +b +a +"} +(34,1,1) = {" +a +b +b +b +b +b +b +b +b +b +b +b +b +b +b +b +b +b +b +b +b +b +b +b +b +b +b +b +b +b +b +b +b +b +a +"} +(35,1,1) = {" +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +"} diff --git a/maps/submaps/surface_submaps/plains/RationCache.dmm b/maps/submaps/surface_submaps/plains/RationCache.dmm index 600832aa18..0ddb58dd6f 100644 --- a/maps/submaps/surface_submaps/plains/RationCache.dmm +++ b/maps/submaps/surface_submaps/plains/RationCache.dmm @@ -1,7 +1,7 @@ "a" = (/turf/template_noop,/area/template_noop) "b" = (/turf/simulated/floor/outdoors/snow,/area/submap/RationCache) -"c" = (/mob/living/simple_animal/retaliate/diyaab{returns_home = 1},/turf/simulated/floor/outdoors/snow,/area/submap/RationCache) -"d" = (/mob/living/simple_animal/retaliate/diyaab{returns_home = 1},/turf/simulated/floor/outdoors/dirt,/area/submap/RationCache) +"c" = (/mob/living/simple_mob/animal/sif/diyaab,/turf/simulated/floor/outdoors/snow,/area/submap/RationCache) +"d" = (/mob/living/simple_mob/animal/sif/diyaab,/turf/simulated/floor/outdoors/dirt,/area/submap/RationCache) "e" = (/turf/simulated/floor/outdoors/dirt,/area/submap/RationCache) "f" = (/obj/item/trash/liquidfood,/obj/item/trash/liquidfood,/obj/item/trash/liquidfood,/obj/item/trash/liquidfood,/obj/item/trash/liquidfood,/obj/item/trash/liquidfood,/turf/simulated/mineral/floor/ignore_mapgen,/area/submap/RationCache) "g" = (/obj/machinery/portable_atmospherics/hydroponics/soil,/turf/simulated/floor/outdoors/dirt,/area/submap/RationCache) diff --git a/maps/submaps/surface_submaps/plains/RationCache_vr.dmm b/maps/submaps/surface_submaps/plains/RationCache_vr.dmm new file mode 100644 index 0000000000..1437cbdcc1 --- /dev/null +++ b/maps/submaps/surface_submaps/plains/RationCache_vr.dmm @@ -0,0 +1,148 @@ +//MAP CONVERTED BY dmm2tgm.py THIS HEADER COMMENT PREVENTS RECONVERSION, DO NOT REMOVE +"a" = ( +/turf/template_noop, +/area/template_noop) +"b" = ( +/turf/simulated/floor/outdoors/snow, +/area/submap/RationCache) +"c" = ( +/mob/living/simple_animal/otie/feral, +/turf/simulated/floor/outdoors/snow, +/area/submap/RationCache) +"d" = ( +/turf/simulated/floor/outdoors/dirt, +/area/submap/RationCache) +"e" = ( +/obj/item/trash/liquidfood, +/obj/item/trash/liquidfood, +/obj/item/trash/liquidfood, +/obj/item/trash/liquidfood, +/obj/item/trash/liquidfood, +/obj/item/trash/liquidfood, +/turf/simulated/mineral/floor/ignore_mapgen, +/area/submap/RationCache) +"f" = ( +/obj/machinery/portable_atmospherics/hydroponics/soil, +/turf/simulated/floor/outdoors/dirt, +/area/submap/RationCache) + +(1,1,1) = {" +a +a +a +a +b +b +b +b +a +a +"} +(2,1,1) = {" +a +a +b +b +b +b +b +b +a +a +"} +(3,1,1) = {" +a +b +b +c +b +b +b +b +b +b +"} +(4,1,1) = {" +a +b +b +b +d +d +b +c +b +b +"} +(5,1,1) = {" +b +b +b +d +e +f +d +b +b +b +"} +(6,1,1) = {" +b +b +b +b +d +d +b +b +b +a +"} +(7,1,1) = {" +b +b +b +b +b +b +b +b +b +a +"} +(8,1,1) = {" +a +b +b +b +c +b +b +b +a +a +"} +(9,1,1) = {" +a +a +b +b +b +b +b +a +a +a +"} +(10,1,1) = {" +a +a +b +b +b +b +b +a +a +a +"} diff --git a/maps/submaps/surface_submaps/plains/Shakden.dmm b/maps/submaps/surface_submaps/plains/Shakden.dmm index 8720149d63..86f2057db1 100644 --- a/maps/submaps/surface_submaps/plains/Shakden.dmm +++ b/maps/submaps/surface_submaps/plains/Shakden.dmm @@ -4,9 +4,9 @@ "d" = (/turf/simulated/floor/outdoors/dirt{outdoors = 0},/area/submap/Shakden) "e" = (/obj/effect/decal/remains/mouse,/turf/simulated/floor/outdoors/dirt{outdoors = 0},/area/submap/Shakden) "f" = (/obj/item/weapon/reagent_containers/food/snacks/meat,/obj/item/weapon/reagent_containers/food/snacks/meat,/obj/item/weapon/reagent_containers/food/snacks/meat,/obj/item/weapon/reagent_containers/food/snacks/meat,/obj/item/weapon/reagent_containers/food/snacks/meat,/turf/simulated/floor/outdoors/dirt{outdoors = 0},/area/submap/Shakden) -"g" = (/mob/living/simple_animal/hostile/shantak{hostile = 0},/turf/simulated/floor/outdoors/dirt{outdoors = 0},/area/submap/Shakden) +"g" = (/mob/living/simple_mob/animal/sif/shantak/retaliate,/turf/simulated/floor/outdoors/dirt{outdoors = 0},/area/submap/Shakden) "h" = (/obj/item/weapon/reagent_containers/food/snacks/meat,/obj/item/weapon/reagent_containers/food/snacks/meat,/obj/item/weapon/reagent_containers/food/snacks/meat,/turf/simulated/floor/outdoors/dirt{outdoors = 0},/area/submap/Shakden) -"i" = (/mob/living/simple_animal/hostile/shantak{hostile = 0},/turf/simulated/floor/outdoors/dirt,/area/submap/Shakden) +"i" = (/mob/living/simple_mob/animal/sif/shantak/retaliate,/turf/simulated/floor/outdoors/dirt,/area/submap/Shakden) "j" = (/obj/item/weapon/reagent_containers/food/snacks/meat,/turf/simulated/floor/outdoors/dirt{outdoors = 0},/area/submap/Shakden) "k" = (/obj/item/weapon/reagent_containers/food/snacks/meat,/obj/item/weapon/reagent_containers/food/snacks/meat,/obj/item/weapon/reagent_containers/food/snacks/meat,/obj/item/weapon/reagent_containers/food/snacks/meat,/obj/item/weapon/material/knife/hook,/turf/simulated/floor/outdoors/dirt{outdoors = 0},/area/submap/Shakden) diff --git a/maps/submaps/surface_submaps/plains/Shakden_vr.dmm b/maps/submaps/surface_submaps/plains/Shakden_vr.dmm new file mode 100644 index 0000000000..61eefb2bff --- /dev/null +++ b/maps/submaps/surface_submaps/plains/Shakden_vr.dmm @@ -0,0 +1,505 @@ +//MAP CONVERTED BY dmm2tgm.py THIS HEADER COMMENT PREVENTS RECONVERSION, DO NOT REMOVE +"a" = ( +/turf/template_noop, +/area/template_noop) +"b" = ( +/turf/template_noop, +/area/submap/Shakden) +"c" = ( +/turf/simulated/mineral/ignore_mapgen, +/area/submap/Shakden) +"d" = ( +/turf/simulated/floor/outdoors/dirt{ + outdoors = 0 + }, +/area/submap/Shakden) +"e" = ( +/obj/effect/decal/remains/mouse, +/turf/simulated/floor/outdoors/dirt{ + outdoors = 0 + }, +/area/submap/Shakden) +"f" = ( +/obj/item/weapon/reagent_containers/food/snacks/meat, +/obj/item/weapon/reagent_containers/food/snacks/meat, +/obj/item/weapon/reagent_containers/food/snacks/meat, +/obj/item/weapon/reagent_containers/food/snacks/meat, +/obj/item/weapon/reagent_containers/food/snacks/meat, +/turf/simulated/floor/outdoors/dirt{ + outdoors = 0 + }, +/area/submap/Shakden) +"g" = ( +/obj/item/weapon/reagent_containers/food/snacks/meat, +/obj/item/weapon/reagent_containers/food/snacks/meat, +/obj/item/weapon/reagent_containers/food/snacks/meat, +/turf/simulated/floor/outdoors/dirt{ + outdoors = 0 + }, +/area/submap/Shakden) +"h" = ( +/mob/living/simple_animal/hostile/dragon, +/turf/simulated/floor/outdoors/dirt{ + outdoors = 0 + }, +/area/submap/Shakden) +"i" = ( +/turf/simulated/floor/outdoors/dirt, +/area/submap/Shakden) +"j" = ( +/obj/item/weapon/reagent_containers/food/snacks/meat, +/turf/simulated/floor/outdoors/dirt{ + outdoors = 0 + }, +/area/submap/Shakden) +"k" = ( +/obj/item/weapon/reagent_containers/food/snacks/meat, +/obj/item/weapon/reagent_containers/food/snacks/meat, +/obj/item/weapon/reagent_containers/food/snacks/meat, +/obj/item/weapon/reagent_containers/food/snacks/meat, +/obj/item/weapon/material/knife/hook, +/turf/simulated/floor/outdoors/dirt{ + outdoors = 0 + }, +/area/submap/Shakden) + +(1,1,1) = {" +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +"} +(2,1,1) = {" +a +b +b +b +b +b +c +c +b +b +b +b +c +c +c +c +b +b +b +a +"} +(3,1,1) = {" +a +b +c +c +c +c +c +c +c +c +c +c +c +c +c +c +c +c +b +a +"} +(4,1,1) = {" +a +b +c +c +c +c +c +d +d +c +c +e +d +c +c +c +c +c +c +a +"} +(5,1,1) = {" +a +c +c +c +c +g +d +d +d +d +d +d +d +d +d +c +c +c +c +a +"} +(6,1,1) = {" +a +c +c +c +e +d +d +d +d +d +d +d +d +d +d +d +c +c +c +a +"} +(7,1,1) = {" +a +c +c +d +d +d +d +d +d +d +d +d +d +d +d +d +d +c +c +a +"} +(8,1,1) = {" +a +c +c +d +d +d +d +c +c +g +d +d +d +h +d +d +d +c +c +a +"} +(9,1,1) = {" +a +c +c +d +d +d +d +c +c +c +d +d +d +d +d +i +d +c +c +a +"} +(10,1,1) = {" +a +c +c +e +d +d +c +c +c +c +d +d +d +d +d +j +d +c +b +a +"} +(11,1,1) = {" +a +c +c +d +d +d +c +c +c +e +d +d +d +d +f +k +e +c +b +a +"} +(12,1,1) = {" +a +c +c +f +d +d +d +c +c +d +d +d +d +c +c +c +c +c +b +a +"} +(13,1,1) = {" +a +c +c +c +d +d +d +d +d +d +d +d +c +c +c +c +c +c +b +a +"} +(14,1,1) = {" +a +c +c +c +d +d +d +d +d +d +c +c +c +c +c +c +c +c +c +a +"} +(15,1,1) = {" +a +c +c +c +d +d +d +d +d +d +c +c +c +d +d +d +d +c +c +a +"} +(16,1,1) = {" +a +c +c +c +c +c +d +d +d +d +d +d +d +d +d +d +d +c +c +a +"} +(17,1,1) = {" +a +b +c +c +c +c +c +d +d +d +d +d +d +d +d +c +c +c +c +a +"} +(18,1,1) = {" +a +b +c +c +c +c +c +c +c +c +c +d +d +b +b +b +c +c +b +a +"} +(19,1,1) = {" +a +b +b +b +c +c +c +c +c +c +c +b +b +b +b +b +b +b +b +a +"} +(20,1,1) = {" +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +"} diff --git a/maps/submaps/surface_submaps/plains/Thiefc_vr.dmm b/maps/submaps/surface_submaps/plains/Thiefc_vr.dmm new file mode 100644 index 0000000000..57796f125e --- /dev/null +++ b/maps/submaps/surface_submaps/plains/Thiefc_vr.dmm @@ -0,0 +1,676 @@ +//MAP CONVERTED BY dmm2tgm.py THIS HEADER COMMENT PREVENTS RECONVERSION, DO NOT REMOVE +"a" = ( +/turf/template_noop, +/area/template_noop) +"b" = ( +/turf/template_noop, +/area/submap/Thiefc) +"c" = ( +/turf/simulated/mineral/ignore_mapgen, +/area/submap/Thiefc) +"d" = ( +/obj/structure/ore_box, +/obj/item/weapon/ore/coal, +/obj/item/weapon/ore/coal, +/obj/item/weapon/ore/coal, +/obj/item/weapon/ore/coal, +/obj/item/weapon/ore/coal, +/turf/simulated/floor/outdoors/dirt{ + outdoors = 0 + }, +/area/submap/Thiefc) +"e" = ( +/obj/structure/closet/crate, +/obj/item/weapon/extinguisher, +/obj/item/weapon/extinguisher, +/obj/item/weapon/extinguisher, +/turf/simulated/floor/outdoors/dirt{ + outdoors = 0 + }, +/area/submap/Thiefc) +"f" = ( +/obj/structure/reagent_dispensers/watertank, +/turf/simulated/floor/outdoors/dirt{ + outdoors = 0 + }, +/area/submap/Thiefc) +"g" = ( +/obj/item/weapon/ore/coal, +/obj/item/weapon/ore/coal, +/obj/item/weapon/ore/coal, +/obj/item/weapon/ore/coal, +/obj/item/weapon/ore/coal, +/obj/item/weapon/ore/coal, +/obj/item/weapon/ore/coal, +/obj/item/weapon/ore/coal, +/turf/simulated/floor/outdoors/dirt{ + outdoors = 0 + }, +/area/submap/Thiefc) +"h" = ( +/turf/simulated/floor/outdoors/dirt{ + outdoors = 0 + }, +/area/submap/Thiefc) +"i" = ( +/obj/structure/closet/crate, +/obj/item/weapon/lipstick, +/obj/item/weapon/lipstick/black, +/obj/item/weapon/lipstick/random, +/turf/simulated/floor/outdoors/dirt{ + outdoors = 0 + }, +/area/submap/Thiefc) +"j" = ( +/obj/structure/table/steel, +/obj/item/weapon/beartrap, +/turf/simulated/floor/outdoors/dirt{ + outdoors = 0 + }, +/area/submap/Thiefc) +"k" = ( +/obj/vehicle/train/trolley, +/obj/item/weapon/storage/firstaid/combat, +/turf/simulated/floor/outdoors/dirt{ + outdoors = 0 + }, +/area/submap/Thiefc) +"l" = ( +/obj/structure/closet/crate, +/obj/item/weapon/folder/blue, +/obj/item/weapon/folder/red, +/obj/item/weapon/folder/white, +/obj/item/weapon/folder/yellow, +/turf/simulated/floor/outdoors/dirt{ + outdoors = 0 + }, +/area/submap/Thiefc) +"m" = ( +/obj/structure/table/steel, +/obj/item/weapon/paper{ + desc = "This is some bullshit. First chance we got to knick something that looks half decent turns out to be mostly junk. And now we're getting calls that the other stash we've got has got a spider problem. Fuck this, Between the shitty weather, The pissed of bugs, And now apparently some NT goon running around in the area there's hardly enough reason to stick around. I'm telling Carl I'm out tommorow."; + name = "Note" + }, +/turf/simulated/floor/outdoors/dirt{ + outdoors = 0 + }, +/area/submap/Thiefc) +"n" = ( +/obj/vehicle/train/trolley, +/turf/simulated/floor/outdoors/dirt{ + outdoors = 0 + }, +/area/submap/Thiefc) +"o" = ( +/obj/structure/closet/crate, +/obj/item/weapon/cell/device/weapon, +/obj/item/weapon/cell/device/weapon, +/turf/simulated/floor/outdoors/dirt{ + outdoors = 0 + }, +/area/submap/Thiefc) +"p" = ( +/obj/structure/closet/crate, +/obj/item/weapon/storage/box/shotgunammo, +/obj/item/weapon/storage/box/practiceshells, +/turf/simulated/floor/outdoors/dirt{ + outdoors = 0 + }, +/area/submap/Thiefc) +"q" = ( +/mob/living/simple_animal/hostile/bear, +/turf/simulated/floor/outdoors/dirt{ + outdoors = 0 + }, +/area/submap/Thiefc) + +(1,1,1) = {" +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +"} +(2,1,1) = {" +a +b +b +c +c +b +b +b +b +b +b +b +b +b +b +b +b +b +b +a +"} +(3,1,1) = {" +a +c +c +c +c +c +b +b +b +b +b +b +b +b +b +b +b +b +b +a +"} +(4,1,1) = {" +a +b +c +c +c +c +c +b +b +b +b +b +b +b +b +b +b +b +b +a +"} +(5,1,1) = {" +a +b +c +c +c +c +c +b +b +c +b +b +b +c +b +b +b +b +b +a +"} +(6,1,1) = {" +a +b +c +c +c +c +c +b +c +c +c +b +b +c +b +b +b +b +b +a +"} +(7,1,1) = {" +a +b +c +c +c +c +c +c +c +c +c +h +h +c +c +b +b +b +b +a +"} +(8,1,1) = {" +a +b +c +c +c +j +m +c +c +c +c +h +h +c +c +b +b +b +b +a +"} +(9,1,1) = {" +a +c +c +c +h +h +h +h +c +c +h +h +h +c +c +b +b +b +b +a +"} +(10,1,1) = {" +a +c +c +f +h +h +h +h +h +c +h +h +c +c +c +b +b +b +b +a +"} +(11,1,1) = {" +a +c +d +g +h +k +n +h +h +h +h +h +c +c +c +b +b +b +b +a +"} +(12,1,1) = {" +a +c +e +h +h +h +h +h +h +h +h +c +c +c +c +b +b +b +b +a +"} +(13,1,1) = {" +a +c +c +c +i +h +h +q +h +c +c +c +c +c +c +b +b +b +b +a +"} +(14,1,1) = {" +a +c +c +c +h +h +h +h +c +c +c +c +c +c +c +b +b +b +b +a +"} +(15,1,1) = {" +a +c +c +h +h +l +o +p +h +c +c +c +c +c +c +b +b +b +b +a +"} +(16,1,1) = {" +a +b +c +c +c +c +c +c +c +c +c +c +c +c +c +b +b +b +b +a +"} +(17,1,1) = {" +a +b +c +c +c +c +c +c +c +c +c +c +c +c +c +b +b +b +b +a +"} +(18,1,1) = {" +a +b +b +c +c +c +c +c +c +c +c +c +c +c +b +b +b +b +b +a +"} +(19,1,1) = {" +a +b +b +b +c +c +c +c +c +c +c +c +c +b +b +b +b +b +b +a +"} +(20,1,1) = {" +a +b +b +b +b +b +c +c +c +c +c +c +b +b +b +b +b +b +b +a +"} +(21,1,1) = {" +a +b +b +b +b +b +b +c +c +c +b +b +b +b +b +b +b +b +b +a +"} +(22,1,1) = {" +a +b +b +b +b +b +b +b +b +b +b +b +b +b +b +b +b +b +b +a +"} +(23,1,1) = {" +a +b +b +b +b +b +b +b +b +b +b +b +b +b +b +b +b +b +b +a +"} +(24,1,1) = {" +a +b +b +b +b +b +b +b +b +b +b +b +b +b +b +b +b +b +b +a +"} +(25,1,1) = {" +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +"} diff --git a/maps/submaps/surface_submaps/plains/camp1_vr.dmm b/maps/submaps/surface_submaps/plains/camp1_vr.dmm new file mode 100644 index 0000000000..254004de22 --- /dev/null +++ b/maps/submaps/surface_submaps/plains/camp1_vr.dmm @@ -0,0 +1,193 @@ +//MAP CONVERTED BY dmm2tgm.py THIS HEADER COMMENT PREVENTS RECONVERSION, DO NOT REMOVE +"a" = ( +/turf/template_noop, +/area/template_noop) +"b" = ( +/turf/simulated/wall/log_sif, +/area/submap/camp1) +"c" = ( +/obj/structure/grille/rustic, +/obj/structure/window/reinforced/full, +/turf/simulated/floor/plating, +/area/submap/camp1) +"d" = ( +/obj/structure/bed/padded, +/turf/simulated/floor/outdoors/dirt{ + outdoors = 0 + }, +/area/submap/camp1) +"e" = ( +/obj/item/device/flashlight/lantern, +/turf/simulated/floor/outdoors/dirt{ + outdoors = 0 + }, +/area/submap/camp1) +"f" = ( +/turf/simulated/floor/outdoors/dirt{ + outdoors = 0 + }, +/area/submap/camp1) +"g" = ( +/obj/machinery/portable_atmospherics/powered/scrubber/huge/stationary/tram, +/turf/simulated/floor/outdoors/dirt{ + outdoors = 0 + }, +/area/submap/camp1) +"h" = ( +/obj/structure/simple_door/sifwood, +/turf/simulated/floor/outdoors/dirt{ + outdoors = 0 + }, +/area/submap/camp1) +"i" = ( +/obj/structure/table/rack, +/obj/item/weapon/gun/launcher/crossbow, +/obj/item/stack/rods{ + amount = 17 + }, +/turf/simulated/floor/outdoors/dirt{ + outdoors = 0 + }, +/area/submap/camp1) +"j" = ( +/obj/item/stack/material/log/sif{ + amount = 25 + }, +/turf/template_noop, +/area/template_noop) +"k" = ( +/obj/structure/table/bench/wooden, +/turf/simulated/floor/outdoors/dirt, +/area/submap/camp1) +"l" = ( +/turf/simulated/floor/outdoors/dirt, +/area/submap/camp1) +"m" = ( +/obj/item/weapon/material/knife/machete/hatchet, +/turf/template_noop, +/area/template_noop) +"n" = ( +/obj/item/weapon/flame/lighter, +/turf/simulated/floor/outdoors/dirt, +/area/submap/camp1) + +(1,1,1) = {" +a +a +a +a +a +a +a +a +a +a +"} +(2,1,1) = {" +b +b +c +b +b +a +a +a +a +a +"} +(3,1,1) = {" +b +d +f +g +b +a +k +k +k +a +"} +(4,1,1) = {" +b +d +f +b +b +b +l +l +l +n +"} +(5,1,1) = {" +c +e +f +h +f +h +l +l +l +l +"} +(6,1,1) = {" +b +d +f +b +b +b +l +l +l +l +"} +(7,1,1) = {" +b +d +f +i +b +j +k +k +k +a +"} +(8,1,1) = {" +b +b +c +b +b +a +m +a +a +a +"} +(9,1,1) = {" +a +a +a +a +a +a +a +a +a +a +"} +(10,1,1) = {" +a +a +a +a +a +a +a +a +a +a +"} diff --git a/maps/submaps/surface_submaps/plains/farm1_vr.dmm b/maps/submaps/surface_submaps/plains/farm1_vr.dmm new file mode 100644 index 0000000000..592824e2c0 --- /dev/null +++ b/maps/submaps/surface_submaps/plains/farm1_vr.dmm @@ -0,0 +1,1317 @@ +//MAP CONVERTED BY dmm2tgm.py THIS HEADER COMMENT PREVENTS RECONVERSION, DO NOT REMOVE +"a" = ( +/turf/template_noop, +/area/template_noop) +"b" = ( +/turf/simulated/floor/outdoors/dirt, +/area/submap/farm1) +"c" = ( +/obj/structure/railing, +/turf/simulated/floor/outdoors/dirt, +/area/submap/farm1) +"d" = ( +/obj/structure/railing{ + icon_state = "railing0"; + dir = 4 + }, +/turf/simulated/floor/outdoors/dirt, +/area/submap/farm1) +"e" = ( +/turf/simulated/floor/outdoors/grass/sif, +/area/submap/farm1) +"f" = ( +/obj/structure/railing{ + icon_state = "railing0"; + dir = 8 + }, +/turf/simulated/floor/outdoors/dirt, +/area/submap/farm1) +"g" = ( +/turf/simulated/wall/wood, +/area/submap/farm1) +"h" = ( +/obj/structure/grille/rustic, +/obj/structure/window/reinforced/full, +/turf/simulated/floor/plating, +/area/submap/farm1) +"i" = ( +/obj/structure/window/reinforced/full, +/obj/structure/grille/rustic, +/turf/simulated/floor/plating, +/area/submap/farm1) +"j" = ( +/obj/structure/closet/secure_closet/freezer/fridge, +/turf/simulated/floor/wood, +/area/submap/farm1) +"k" = ( +/turf/simulated/floor/wood, +/area/submap/farm1) +"l" = ( +/obj/structure/table/marble, +/turf/simulated/floor/wood, +/area/submap/farm1) +"m" = ( +/obj/structure/table/marble, +/obj/item/weapon/material/kitchen/rollingpin, +/turf/simulated/floor/wood, +/area/submap/farm1) +"n" = ( +/obj/machinery/portable_atmospherics/hydroponics/soil, +/obj/item/seeds/cornseed, +/turf/simulated/floor/outdoors/dirt{ + outdoors = 0 + }, +/area/submap/farm1) +"o" = ( +/turf/simulated/floor/outdoors/dirt{ + outdoors = 0 + }, +/area/submap/farm1) +"p" = ( +/obj/structure/table/marble, +/obj/item/weapon/material/knife, +/turf/simulated/floor/wood, +/area/submap/farm1) +"q" = ( +/obj/structure/window/reinforced/full{ + dir = 8 + }, +/obj/structure/window/reinforced/full{ + dir = 4 + }, +/obj/machinery/portable_atmospherics/powered/scrubber/huge/stationary/tram, +/turf/simulated/floor/plating, +/area/submap/farm1) +"r" = ( +/obj/machinery/portable_atmospherics/hydroponics/soil, +/obj/item/seeds/bluetomatoseed, +/turf/simulated/floor/outdoors/dirt{ + outdoors = 0 + }, +/area/submap/farm1) +"s" = ( +/turf/simulated/floor/outdoors/mud{ + outdoors = 0 + }, +/area/submap/farm1) +"t" = ( +/obj/machinery/portable_atmospherics/hydroponics/soil, +/obj/item/seeds/icepepperseed, +/turf/simulated/floor/outdoors/dirt{ + outdoors = 0 + }, +/area/submap/farm1) +"u" = ( +/obj/structure/simple_door/wood, +/turf/simulated/floor/wood, +/area/submap/farm1) +"v" = ( +/obj/machinery/door/window/eastleft, +/obj/machinery/door/window/westleft, +/turf/simulated/floor/outdoors/dirt, +/area/submap/farm1) +"w" = ( +/mob/living/bot/farmbot, +/turf/simulated/floor/outdoors/dirt{ + outdoors = 0 + }, +/area/submap/farm1) +"x" = ( +/obj/structure/sink/puddle, +/turf/simulated/floor/outdoors/mud{ + outdoors = 0 + }, +/area/submap/farm1) +"y" = ( +/obj/item/weapon/material/knife/machete/hatchet, +/turf/simulated/floor/outdoors/mud{ + outdoors = 0 + }, +/area/submap/farm1) +"z" = ( +/obj/structure/table/woodentable, +/obj/item/weapon/storage/box/matches, +/obj/item/weapon/flame/match, +/turf/simulated/floor/wood, +/area/submap/farm1) +"A" = ( +/obj/structure/table/woodentable, +/turf/simulated/floor/wood, +/area/submap/farm1) +"B" = ( +/obj/item/clothing/shoes/boots/winter/hydro, +/obj/item/clothing/suit/storage/hooded/wintercoat/hydro, +/turf/simulated/floor/wood, +/area/submap/farm1) +"C" = ( +/obj/structure/bed/chair/wood{ + icon_state = "wooden_chair"; + dir = 8 + }, +/turf/simulated/floor/wood, +/area/submap/farm1) +"D" = ( +/obj/machinery/portable_atmospherics/powered/scrubber/huge/stationary/tram, +/turf/simulated/floor/wood, +/area/submap/farm1) +"E" = ( +/obj/structure/table/woodentable, +/obj/item/weapon/storage/fancy/candle_box, +/turf/simulated/floor/wood, +/area/submap/farm1) +"F" = ( +/obj/machinery/portable_atmospherics/hydroponics/soil, +/obj/item/seeds/wheatseed, +/turf/simulated/floor/outdoors/dirt{ + outdoors = 0 + }, +/area/submap/farm1) +"G" = ( +/obj/structure/closet/crate/bin, +/turf/simulated/floor/wood, +/area/submap/farm1) +"H" = ( +/obj/machinery/space_heater, +/turf/simulated/floor/wood, +/area/submap/farm1) +"I" = ( +/obj/structure/bookcase, +/obj/item/weapon/book/manual/hydroponics_pod_people, +/turf/simulated/floor/wood, +/area/submap/farm1) +"J" = ( +/obj/structure/bed/padded, +/obj/item/weapon/bedsheet/blue, +/turf/simulated/floor/wood, +/area/submap/farm1) +"K" = ( +/obj/structure/table/woodentable, +/obj/item/trash/candle, +/turf/simulated/floor/wood, +/area/submap/farm1) +"L" = ( +/turf/simulated/floor/outdoors/rocks, +/area/submap/farm1) +"M" = ( +/turf/simulated/floor/plating, +/area/submap/farm1) +"N" = ( +/turf/simulated/floor/water, +/area/submap/farm1) +"O" = ( +/obj/structure/loot_pile/maint/technical, +/turf/simulated/floor/plating, +/area/submap/farm1) +"P" = ( +/obj/machinery/power/port_gen/pacman, +/turf/simulated/floor/plating, +/area/submap/farm1) +"Q" = ( +/obj/structure/closet/crate/hydroponics/prespawned, +/turf/simulated/floor/plating, +/area/submap/farm1) +"R" = ( +/obj/structure/table/steel, +/obj/machinery/cell_charger, +/turf/simulated/floor/plating, +/area/submap/farm1) +"S" = ( +/obj/structure/table/steel, +/turf/simulated/floor/plating, +/area/submap/farm1) +"T" = ( +/obj/structure/railing{ + icon_state = "railing0"; + dir = 1 + }, +/turf/simulated/floor/outdoors/dirt, +/area/submap/farm1) + +(1,1,1) = {" +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +"} +(2,1,1) = {" +a +a +b +d +d +d +d +d +d +d +d +d +d +d +d +d +d +d +d +d +d +d +d +d +d +d +d +d +b +a +a +a +"} +(3,1,1) = {" +a +a +c +e +e +e +e +e +e +e +e +e +e +e +e +e +e +e +e +e +e +e +e +e +e +e +e +e +T +a +a +a +"} +(4,1,1) = {" +a +a +c +e +e +e +e +e +e +g +g +h +h +g +g +g +g +g +e +b +b +b +b +b +e +e +e +e +T +a +a +a +"} +(5,1,1) = {" +a +a +c +e +e +g +g +g +g +g +z +A +E +G +g +I +H +g +b +b +L +L +L +b +b +e +e +e +T +a +a +a +"} +(6,1,1) = {" +a +a +c +e +e +g +j +k +k +g +A +C +k +k +u +k +k +g +b +L +L +N +L +L +b +b +e +e +T +a +a +a +"} +(7,1,1) = {" +a +a +c +e +e +h +k +k +k +u +k +k +k +k +g +k +k +g +b +L +N +N +N +L +L +b +b +e +T +a +a +a +"} +(8,1,1) = {" +a +a +c +e +e +h +l +k +k +g +B +k +k +H +g +J +K +g +b +L +N +N +N +N +L +L +b +e +T +a +a +a +"} +(9,1,1) = {" +a +a +c +e +e +g +m +l +p +g +g +g +u +g +g +g +g +g +b +L +N +N +N +N +N +L +b +e +T +a +a +a +"} +(10,1,1) = {" +a +a +c +e +e +g +g +h +g +g +g +D +k +g +e +e +e +e +b +L +N +N +N +N +N +L +b +e +T +a +a +a +"} +(11,1,1) = {" +a +a +c +e +e +e +e +e +e +e +g +g +u +g +e +e +e +e +b +L +L +N +N +N +N +L +b +e +T +a +a +a +"} +(12,1,1) = {" +a +a +c +e +e +e +e +e +b +b +e +e +b +e +e +b +b +b +b +b +L +L +N +N +N +L +b +e +T +a +a +a +"} +(13,1,1) = {" +a +a +c +e +e +e +e +e +b +b +b +b +b +b +b +b +b +e +e +b +b +L +L +N +L +L +b +e +T +a +a +a +"} +(14,1,1) = {" +a +a +c +e +e +e +e +e +e +b +b +e +e +e +e +b +b +e +e +e +b +b +L +L +L +b +b +e +T +a +a +a +"} +(15,1,1) = {" +a +a +c +e +e +i +i +i +q +v +i +i +i +i +e +e +b +e +e +e +e +b +b +b +b +b +e +e +T +a +a +a +"} +(16,1,1) = {" +a +a +c +e +e +i +n +o +r +w +r +o +F +i +e +e +b +e +e +e +e +e +e +e +e +e +e +e +T +a +a +a +"} +(17,1,1) = {" +a +a +c +e +e +i +n +o +r +o +r +o +F +i +e +e +b +e +e +g +g +h +h +h +g +g +e +e +T +a +a +a +"} +(18,1,1) = {" +a +a +c +e +e +i +n +o +r +o +r +o +F +i +e +e +b +e +e +g +O +P +O +Q +O +g +e +e +T +a +a +a +"} +(19,1,1) = {" +a +a +c +e +e +i +n +o +s +s +s +o +F +i +e +e +b +e +e +g +M +M +M +M +M +g +e +e +T +a +a +a +"} +(20,1,1) = {" +a +a +c +e +e +i +n +o +s +x +s +o +F +i +e +b +b +b +b +M +M +M +M +M +R +g +e +e +T +a +a +a +"} +(21,1,1) = {" +a +a +c +e +e +i +n +o +s +y +s +o +F +i +e +b +b +b +b +M +M +M +M +M +S +g +e +e +T +a +a +a +"} +(22,1,1) = {" +a +a +c +e +e +i +n +o +t +o +t +o +F +i +e +b +b +b +b +M +M +M +M +M +S +g +e +e +T +a +a +a +"} +(23,1,1) = {" +a +a +c +e +e +i +n +o +t +o +t +o +F +i +e +b +b +b +e +g +M +M +M +M +M +g +e +e +T +a +a +a +"} +(24,1,1) = {" +a +a +c +e +e +i +n +o +t +o +t +o +F +i +e +b +b +b +e +g +O +M +O +M +O +g +e +e +T +a +a +a +"} +(25,1,1) = {" +a +a +c +e +e +i +i +i +i +i +i +i +i +i +e +b +b +b +e +g +g +h +h +h +g +g +e +e +T +a +a +a +"} +(26,1,1) = {" +a +a +c +e +e +e +e +e +e +e +e +e +e +e +e +b +b +b +e +e +e +e +e +e +e +e +e +e +T +a +a +a +"} +(27,1,1) = {" +a +a +b +f +f +f +f +f +f +f +f +f +f +f +f +b +b +b +f +f +f +f +f +f +f +f +f +f +b +a +a +a +"} +(28,1,1) = {" +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +b +b +b +a +a +a +a +a +a +a +a +a +a +a +a +a +a +"} +(29,1,1) = {" +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +b +b +b +a +a +a +a +a +a +a +a +a +a +a +a +a +a +"} +(30,1,1) = {" +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +b +b +b +a +a +a +a +a +a +a +a +a +a +a +a +a +a +"} +(31,1,1) = {" +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +b +b +b +a +a +a +a +a +a +a +a +a +a +a +a +a +a +"} +(32,1,1) = {" +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +"} diff --git a/maps/submaps/surface_submaps/plains/house1_arealess_vr.dmm b/maps/submaps/surface_submaps/plains/house1_arealess_vr.dmm new file mode 100644 index 0000000000..5b79ba61b6 --- /dev/null +++ b/maps/submaps/surface_submaps/plains/house1_arealess_vr.dmm @@ -0,0 +1,662 @@ +//MAP CONVERTED BY dmm2tgm.py THIS HEADER COMMENT PREVENTS RECONVERSION, DO NOT REMOVE +"aa" = ( +/turf/template_noop, +/area/template_noop) +"ab" = ( +/obj/structure/railing, +/turf/template_noop, +/area/template_noop) +"ac" = ( +/obj/structure/railing{ + dir = 4 + }, +/turf/template_noop, +/area/template_noop) +"ad" = ( +/turf/simulated/floor/outdoors/grass/sif, +/area/template_noop) +"ae" = ( +/obj/structure/railing{ + dir = 8 + }, +/turf/template_noop, +/area/template_noop) +"af" = ( +/obj/structure/railing{ + dir = 4 + }, +/turf/simulated/floor/outdoors/grass/sif, +/area/template_noop) +"ag" = ( +/turf/simulated/floor/outdoors/dirt, +/area/template_noop) +"ah" = ( +/obj/structure/table/bench/wooden, +/turf/simulated/floor/outdoors/dirt, +/area/template_noop) +"ai" = ( +/obj/structure/railing{ + dir = 8 + }, +/turf/simulated/floor/outdoors/grass/sif, +/area/template_noop) +"aj" = ( +/obj/structure/target_stake, +/turf/simulated/floor/outdoors/dirt, +/area/template_noop) +"ak" = ( +/obj/item/target, +/turf/simulated/floor/outdoors/grass/sif, +/area/template_noop) +"al" = ( +/obj/item/target/syndicate, +/turf/simulated/floor/outdoors/grass/sif, +/area/template_noop) +"am" = ( +/turf/simulated/wall/wood, +/area/template_noop) +"an" = ( +/obj/structure/simple_door/wood, +/turf/simulated/floor/wood, +/area/template_noop) +"ao" = ( +/obj/machinery/portable_atmospherics/powered/scrubber/huge/stationary/tram, +/turf/simulated/floor/wood, +/area/template_noop) +"ap" = ( +/turf/simulated/floor/wood, +/area/template_noop) +"aq" = ( +/obj/structure/table/marble, +/obj/item/weapon/material/kitchen/rollingpin, +/turf/simulated/floor/tiled, +/area/template_noop) +"ar" = ( +/obj/structure/table/marble, +/obj/item/weapon/material/knife, +/turf/simulated/floor/tiled, +/area/template_noop) +"as" = ( +/obj/structure/grille/rustic, +/obj/structure/window/reinforced/full, +/turf/simulated/floor/plating, +/area/template_noop) +"at" = ( +/obj/structure/table/standard, +/obj/item/weapon/reagent_containers/hypospray/autoinjector/biginjector/brute, +/obj/item/weapon/reagent_containers/hypospray/autoinjector/biginjector/burn, +/obj/item/weapon/reagent_containers/hypospray/autoinjector/biginjector/purity, +/turf/simulated/floor/tiled/freezer, +/area/template_noop) +"au" = ( +/obj/structure/toilet, +/turf/simulated/floor/tiled/freezer, +/area/template_noop) +"av" = ( +/obj/structure/table/marble, +/obj/random/drinkbottle, +/turf/simulated/floor/tiled, +/area/template_noop) +"aw" = ( +/obj/item/device/flashlight/lantern, +/turf/simulated/floor/tiled, +/area/template_noop) +"ax" = ( +/obj/structure/table/glass, +/obj/structure/window/reinforced, +/obj/item/weapon/coin/phoron, +/turf/simulated/floor/wood, +/area/template_noop) +"ay" = ( +/obj/item/clothing/head/bearpelt{ + pixel_y = 6 + }, +/obj/structure/table/glass, +/obj/structure/window/reinforced, +/turf/simulated/floor/wood, +/area/template_noop) +"az" = ( +/obj/item/weapon/material/harpoon, +/obj/structure/table/glass, +/obj/structure/window/reinforced, +/turf/simulated/floor/wood, +/area/template_noop) +"aA" = ( +/obj/structure/table/glass, +/obj/structure/window/reinforced, +/obj/item/clothing/accessory/medal/conduct{ + pixel_y = 6 + }, +/turf/simulated/floor/wood, +/area/template_noop) +"aB" = ( +/obj/structure/sink{ + icon_state = "sink"; + dir = 8; + pixel_x = -12; + pixel_y = 2 + }, +/obj/structure/mirror{ + dir = 4; + pixel_x = -28; + pixel_y = 0 + }, +/turf/simulated/floor/tiled/freezer, +/area/template_noop) +"aC" = ( +/obj/item/weapon/towel, +/turf/simulated/floor/tiled/freezer, +/area/template_noop) +"aD" = ( +/obj/structure/closet/secure_closet/freezer/fridge, +/turf/simulated/floor/tiled, +/area/template_noop) +"aE" = ( +/turf/simulated/floor/tiled, +/area/template_noop) +"aF" = ( +/obj/structure/simple_door/wood, +/turf/simulated/floor/tiled, +/area/template_noop) +"aG" = ( +/obj/structure/simple_door/wood, +/turf/simulated/floor/tiled/freezer, +/area/template_noop) +"aH" = ( +/obj/item/device/flashlight/lantern, +/turf/simulated/floor/tiled/freezer, +/area/template_noop) +"aI" = ( +/obj/structure/window/reinforced/tinted{ + dir = 8; + icon_state = "twindow" + }, +/obj/machinery/shower{ + dir = 1 + }, +/obj/random/soap, +/turf/simulated/floor/tiled/freezer, +/area/template_noop) +"aJ" = ( +/turf/simulated/floor/carpet/turcarpet, +/area/template_noop) +"aK" = ( +/obj/structure/bed/chair/wood, +/turf/simulated/floor/carpet/turcarpet, +/area/template_noop) +"aL" = ( +/obj/structure/bed/chair/wood{ + dir = 4 + }, +/turf/simulated/floor/carpet/turcarpet, +/area/template_noop) +"aM" = ( +/obj/structure/table/wooden_reinforced, +/obj/item/weapon/storage/fancy/candle_box, +/turf/simulated/floor/carpet/turcarpet, +/area/template_noop) +"aN" = ( +/obj/structure/table/wooden_reinforced, +/obj/item/device/binoculars/spyglass, +/turf/simulated/floor/carpet/turcarpet, +/area/template_noop) +"aO" = ( +/obj/structure/table/wooden_reinforced, +/obj/item/device/flashlight/lantern, +/turf/simulated/floor/carpet/turcarpet, +/area/template_noop) +"aP" = ( +/obj/structure/bed/chair/wood{ + dir = 1 + }, +/turf/simulated/floor/carpet/turcarpet, +/area/template_noop) +"aQ" = ( +/obj/structure/table/rack, +/obj/item/device/gps/explorer, +/obj/item/device/radio/headset/explorer, +/turf/simulated/floor/wood, +/area/template_noop) +"aR" = ( +/obj/structure/simple_door/wood, +/turf/simulated/floor/carpet/sblucarpet, +/area/template_noop) +"aS" = ( +/turf/simulated/floor/carpet/sblucarpet, +/area/template_noop) +"aT" = ( +/obj/machinery/space_heater, +/turf/simulated/floor/carpet/sblucarpet, +/area/template_noop) +"aU" = ( +/obj/structure/table/rack, +/obj/item/clothing/under/explorer, +/obj/item/weapon/cell/device, +/obj/item/weapon/cell/device, +/obj/item/weapon/cell/device, +/turf/simulated/floor/wood, +/area/template_noop) +"aV" = ( +/obj/item/device/flashlight/lantern, +/turf/simulated/floor/wood, +/area/template_noop) +"aW" = ( +/obj/machinery/space_heater, +/turf/simulated/floor/wood, +/area/template_noop) +"aX" = ( +/obj/structure/coatrack, +/turf/simulated/floor/wood, +/area/template_noop) +"aY" = ( +/obj/structure/table/rack, +/obj/item/clothing/suit/storage/hooded/explorer, +/obj/item/clothing/mask/gas/explorer, +/obj/item/weapon/material/knife/tacknife/survival, +/turf/simulated/floor/wood, +/area/template_noop) +"aZ" = ( +/obj/item/clothing/shoes/boots/winter/explorer, +/turf/simulated/floor/wood, +/area/template_noop) +"ba" = ( +/obj/structure/table/woodentable, +/obj/random/action_figure, +/obj/item/device/flashlight/lantern, +/turf/simulated/floor/carpet/sblucarpet, +/area/template_noop) +"bb" = ( +/obj/item/weapon/bedsheet/hopdouble, +/obj/structure/bed/double/padded, +/turf/simulated/floor/carpet/sblucarpet, +/area/template_noop) +"bc" = ( +/obj/structure/loot_pile/maint/trash, +/turf/simulated/floor/outdoors/grass/sif, +/area/template_noop) +"bd" = ( +/obj/structure/loot_pile/maint/junk, +/turf/simulated/floor/outdoors/grass/sif, +/area/template_noop) +"be" = ( +/obj/structure/sign/kiddieplaque{ + desc = "To anyone reading this, you'll note that I'm not home right now, and unfortunately due to reassignment, I won't be for a very long time. Exploring somewhere really far and dangerous now. You can stay if you want, but please try to keep my home in good condition."; + name = "read me visitors" + }, +/turf/simulated/wall/wood, +/area/template_noop) + +(1,1,1) = {" +aa +ac +af +af +af +af +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +"} +(2,1,1) = {" +ab +ad +ad +ag +ad +ak +am +am +as +am +am +ad +am +am +as +am +am +bc +ag +ag +"} +(3,1,1) = {" +ab +ad +ag +aj +ag +al +am +aq +av +aD +am +ad +am +aQ +aU +aY +am +bc +ag +ag +"} +(4,1,1) = {" +ab +ad +ag +ag +ag +ak +am +ar +aw +aE +am +ad +am +ap +aV +aZ +am +bc +ag +ag +"} +(5,1,1) = {" +ab +ad +ag +ag +ag +ad +am +am +am +aF +am +am +am +an +am +am +am +bd +ag +ag +"} +(6,1,1) = {" +ab +ad +ag +ag +ag +ad +ad +as +ax +ap +ap +ap +ap +ap +ap +as +ad +ad +ag +ag +"} +(7,1,1) = {" +ab +ad +ag +ag +ag +am +am +am +ay +ap +aJ +aL +aJ +ap +aW +am +am +am +ag +ag +"} +(8,1,1) = {" +ab +ad +ag +ag +ag +am +ao +am +am +ap +aK +aM +aP +ap +am +am +ao +am +ag +ag +"} +(9,1,1) = {" +ab +ad +ag +ag +ag +an +ap +ap +an +ap +aK +aN +aP +ap +an +ap +ap +an +ag +ag +"} +(10,1,1) = {" +ab +ad +ag +ag +ag +am +ao +am +am +ap +aK +aO +aP +ap +am +am +ao +be +ag +ag +"} +(11,1,1) = {" +ab +ad +ag +ag +ag +am +am +am +az +ap +aJ +aP +aJ +ap +aX +am +am +am +ag +ag +"} +(12,1,1) = {" +ab +ad +ah +ag +ah +ad +ad +as +aA +ap +ap +ap +ap +ap +ap +as +ad +ad +ag +ag +"} +(13,1,1) = {" +ab +ad +ah +ag +ah +ad +am +am +am +aG +am +am +am +aR +am +am +am +ad +ag +ag +"} +(14,1,1) = {" +ab +ad +ah +ag +ah +ad +am +at +aB +aH +am +ad +am +aS +aS +ba +am +ad +ag +ag +"} +(15,1,1) = {" +ab +ad +ag +ag +ag +ad +am +au +aC +aI +am +ad +am +aT +aS +bb +am +ad +ag +ag +"} +(16,1,1) = {" +ab +ad +ad +ag +ad +ad +am +am +am +am +am +ad +am +am +as +am +am +ad +ag +ag +"} +(17,1,1) = {" +aa +ae +ai +ai +ai +ai +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +"} diff --git a/maps/submaps/surface_submaps/plains/house1_vr.dmm b/maps/submaps/surface_submaps/plains/house1_vr.dmm new file mode 100644 index 0000000000..ace9ae9d5a --- /dev/null +++ b/maps/submaps/surface_submaps/plains/house1_vr.dmm @@ -0,0 +1,661 @@ +//MAP CONVERTED BY dmm2tgm.py THIS HEADER COMMENT PREVENTS RECONVERSION, DO NOT REMOVE +"aa" = ( +/turf/template_noop, +/area/submap/house1) +"ab" = ( +/obj/structure/railing, +/turf/template_noop, +/area/submap/house1) +"ac" = ( +/obj/structure/railing{ + dir = 4 + }, +/turf/template_noop, +/area/submap/house1) +"ad" = ( +/turf/simulated/floor/outdoors/grass/sif, +/area/submap/house1) +"ae" = ( +/obj/structure/railing{ + dir = 8 + }, +/turf/template_noop, +/area/submap/house1) +"af" = ( +/obj/structure/railing{ + dir = 4 + }, +/turf/simulated/floor/outdoors/grass/sif, +/area/submap/house1) +"ag" = ( +/turf/simulated/floor/outdoors/dirt, +/area/submap/house1) +"ah" = ( +/obj/structure/table/bench/wooden, +/turf/simulated/floor/outdoors/dirt, +/area/submap/house1) +"ai" = ( +/obj/structure/railing{ + dir = 8 + }, +/turf/simulated/floor/outdoors/grass/sif, +/area/submap/house1) +"aj" = ( +/obj/structure/target_stake, +/turf/simulated/floor/outdoors/dirt, +/area/submap/house1) +"ak" = ( +/obj/item/target, +/turf/simulated/floor/outdoors/grass/sif, +/area/submap/house1) +"al" = ( +/obj/item/target/syndicate, +/turf/simulated/floor/outdoors/grass/sif, +/area/submap/house1) +"am" = ( +/turf/simulated/wall/wood, +/area/submap/house1) +"an" = ( +/obj/structure/simple_door/wood, +/turf/simulated/floor/wood, +/area/submap/house1) +"ao" = ( +/obj/machinery/portable_atmospherics/powered/scrubber/huge/stationary/tram, +/turf/simulated/floor/wood, +/area/submap/house1) +"ap" = ( +/turf/simulated/floor/wood, +/area/submap/house1) +"aq" = ( +/obj/structure/table/marble, +/obj/item/weapon/material/kitchen/rollingpin, +/turf/simulated/floor/tiled, +/area/submap/house1) +"ar" = ( +/obj/structure/table/marble, +/obj/item/weapon/material/knife, +/turf/simulated/floor/tiled, +/area/submap/house1) +"as" = ( +/obj/structure/grille/rustic, +/obj/structure/window/reinforced/full, +/turf/simulated/floor/plating, +/area/submap/house1) +"at" = ( +/obj/structure/table/standard, +/obj/item/weapon/reagent_containers/hypospray/autoinjector/biginjector/brute, +/obj/item/weapon/reagent_containers/hypospray/autoinjector/biginjector/burn, +/obj/item/weapon/reagent_containers/hypospray/autoinjector/biginjector/purity, +/turf/simulated/floor/tiled/freezer, +/area/submap/house1) +"au" = ( +/obj/structure/toilet, +/turf/simulated/floor/tiled/freezer, +/area/submap/house1) +"av" = ( +/obj/structure/table/marble, +/obj/random/drinkbottle, +/turf/simulated/floor/tiled, +/area/submap/house1) +"aw" = ( +/obj/item/device/flashlight/lantern, +/turf/simulated/floor/tiled, +/area/submap/house1) +"ax" = ( +/obj/structure/table/glass, +/obj/structure/window/reinforced, +/obj/item/weapon/coin/phoron, +/turf/simulated/floor/wood, +/area/submap/house1) +"ay" = ( +/obj/item/clothing/head/bearpelt{ + pixel_y = 6 + }, +/obj/structure/table/glass, +/obj/structure/window/reinforced, +/turf/simulated/floor/wood, +/area/submap/house1) +"az" = ( +/obj/item/weapon/material/harpoon, +/obj/structure/table/glass, +/obj/structure/window/reinforced, +/turf/simulated/floor/wood, +/area/submap/house1) +"aA" = ( +/obj/structure/table/glass, +/obj/structure/window/reinforced, +/obj/item/clothing/accessory/medal/conduct{ + pixel_y = 6 + }, +/turf/simulated/floor/wood, +/area/submap/house1) +"aB" = ( +/obj/structure/sink{ + icon_state = "sink"; + dir = 8; + pixel_x = -12; + pixel_y = 2 + }, +/obj/structure/mirror{ + dir = 4; + pixel_x = -28; + pixel_y = 0 + }, +/turf/simulated/floor/tiled/freezer, +/area/submap/house1) +"aC" = ( +/obj/item/weapon/towel, +/turf/simulated/floor/tiled/freezer, +/area/submap/house1) +"aD" = ( +/obj/structure/closet/secure_closet/freezer/fridge, +/turf/simulated/floor/tiled, +/area/submap/house1) +"aE" = ( +/turf/simulated/floor/tiled, +/area/submap/house1) +"aF" = ( +/obj/structure/simple_door/wood, +/turf/simulated/floor/tiled, +/area/submap/house1) +"aG" = ( +/obj/structure/simple_door/wood, +/turf/simulated/floor/tiled/freezer, +/area/submap/house1) +"aH" = ( +/obj/item/device/flashlight/lantern, +/turf/simulated/floor/tiled/freezer, +/area/submap/house1) +"aI" = ( +/obj/structure/window/reinforced/tinted{ + dir = 8; + icon_state = "twindow" + }, +/obj/machinery/shower{ + dir = 1 + }, +/obj/random/soap, +/turf/simulated/floor/tiled/freezer, +/area/submap/house1) +"aJ" = ( +/turf/simulated/floor/carpet/turcarpet, +/area/submap/house1) +"aK" = ( +/obj/structure/bed/chair/wood, +/turf/simulated/floor/carpet/turcarpet, +/area/submap/house1) +"aL" = ( +/obj/structure/bed/chair/wood{ + dir = 4 + }, +/turf/simulated/floor/carpet/turcarpet, +/area/submap/house1) +"aM" = ( +/obj/structure/table/wooden_reinforced, +/obj/item/weapon/storage/fancy/candle_box, +/turf/simulated/floor/carpet/turcarpet, +/area/submap/house1) +"aN" = ( +/obj/structure/table/wooden_reinforced, +/obj/item/device/binoculars/spyglass, +/turf/simulated/floor/carpet/turcarpet, +/area/submap/house1) +"aO" = ( +/obj/structure/table/wooden_reinforced, +/obj/item/device/flashlight/lantern, +/turf/simulated/floor/carpet/turcarpet, +/area/submap/house1) +"aP" = ( +/obj/structure/bed/chair/wood{ + dir = 1 + }, +/turf/simulated/floor/carpet/turcarpet, +/area/submap/house1) +"aQ" = ( +/obj/structure/table/rack, +/obj/item/device/gps/explorer, +/turf/simulated/floor/wood, +/area/submap/house1) +"aR" = ( +/obj/structure/simple_door/wood, +/turf/simulated/floor/carpet/sblucarpet, +/area/submap/house1) +"aS" = ( +/turf/simulated/floor/carpet/sblucarpet, +/area/submap/house1) +"aT" = ( +/obj/machinery/space_heater, +/turf/simulated/floor/carpet/sblucarpet, +/area/submap/house1) +"aU" = ( +/obj/structure/table/rack, +/obj/item/clothing/under/explorer, +/obj/item/weapon/cell/device, +/obj/item/weapon/cell/device, +/obj/item/weapon/cell/device, +/turf/simulated/floor/wood, +/area/submap/house1) +"aV" = ( +/obj/item/device/flashlight/lantern, +/turf/simulated/floor/wood, +/area/submap/house1) +"aW" = ( +/obj/machinery/space_heater, +/turf/simulated/floor/wood, +/area/submap/house1) +"aX" = ( +/obj/structure/coatrack, +/turf/simulated/floor/wood, +/area/submap/house1) +"aY" = ( +/obj/structure/table/rack, +/obj/item/clothing/suit/storage/hooded/explorer, +/obj/item/clothing/mask/gas/explorer, +/obj/item/weapon/material/knife/tacknife/survival, +/turf/simulated/floor/wood, +/area/submap/house1) +"aZ" = ( +/obj/item/clothing/shoes/boots/winter/explorer, +/turf/simulated/floor/wood, +/area/submap/house1) +"ba" = ( +/obj/structure/table/woodentable, +/obj/random/action_figure, +/obj/item/device/flashlight/lantern, +/turf/simulated/floor/carpet/sblucarpet, +/area/submap/house1) +"bb" = ( +/obj/item/weapon/bedsheet/hopdouble, +/obj/structure/bed/double/padded, +/turf/simulated/floor/carpet/sblucarpet, +/area/submap/house1) +"bc" = ( +/obj/structure/loot_pile/maint/trash, +/turf/simulated/floor/outdoors/grass/sif, +/area/submap/house1) +"bd" = ( +/obj/structure/loot_pile/maint/junk, +/turf/simulated/floor/outdoors/grass/sif, +/area/submap/house1) +"be" = ( +/obj/structure/sign/kiddieplaque{ + desc = "To anyone reading this, you'll note that I'm not home right now, and unfortunately due to reassignment, I won't be for a very long time. Exploring somewhere really far and dangerous now. You can stay if you want, but please try to keep my home in good condition."; + name = "read me visitors" + }, +/turf/simulated/wall/wood, +/area/submap/house1) + +(1,1,1) = {" +aa +ac +af +af +af +af +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +"} +(2,1,1) = {" +ab +ad +ad +ag +ad +ak +am +am +as +am +am +ad +am +am +as +am +am +bc +ag +ag +"} +(3,1,1) = {" +ab +ad +ag +aj +ag +al +am +aq +av +aD +am +ad +am +aQ +aU +aY +am +bc +ag +ag +"} +(4,1,1) = {" +ab +ad +ag +ag +ag +ak +am +ar +aw +aE +am +ad +am +ap +aV +aZ +am +bc +ag +ag +"} +(5,1,1) = {" +ab +ad +ag +ag +ag +ad +am +am +am +aF +am +am +am +an +am +am +am +bd +ag +ag +"} +(6,1,1) = {" +ab +ad +ag +ag +ag +ad +ad +as +ax +ap +ap +ap +ap +ap +ap +as +ad +ad +ag +ag +"} +(7,1,1) = {" +ab +ad +ag +ag +ag +am +am +am +ay +ap +aJ +aL +aJ +ap +aW +am +am +am +ag +ag +"} +(8,1,1) = {" +ab +ad +ag +ag +ag +am +ao +am +am +ap +aK +aM +aP +ap +am +am +ao +am +ag +ag +"} +(9,1,1) = {" +ab +ad +ag +ag +ag +an +ap +ap +an +ap +aK +aN +aP +ap +an +ap +ap +an +ag +ag +"} +(10,1,1) = {" +ab +ad +ag +ag +ag +am +ao +am +am +ap +aK +aO +aP +ap +am +am +ao +be +ag +ag +"} +(11,1,1) = {" +ab +ad +ag +ag +ag +am +am +am +az +ap +aJ +aP +aJ +ap +aX +am +am +am +ag +ag +"} +(12,1,1) = {" +ab +ad +ah +ag +ah +ad +ad +as +aA +ap +ap +ap +ap +ap +ap +as +ad +ad +ag +ag +"} +(13,1,1) = {" +ab +ad +ah +ag +ah +ad +am +am +am +aG +am +am +am +aR +am +am +am +ad +ag +ag +"} +(14,1,1) = {" +ab +ad +ah +ag +ah +ad +am +at +aB +aH +am +ad +am +aS +aS +ba +am +ad +ag +ag +"} +(15,1,1) = {" +ab +ad +ag +ag +ag +ad +am +au +aC +aI +am +ad +am +aT +aS +bb +am +ad +ag +ag +"} +(16,1,1) = {" +ab +ad +ad +ag +ad +ad +am +am +am +am +am +ad +am +am +as +am +am +ad +ag +ag +"} +(17,1,1) = {" +aa +ae +ai +ai +ai +ai +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +"} diff --git a/maps/submaps/surface_submaps/plains/plains.dm b/maps/submaps/surface_submaps/plains/plains.dm index 2bcce72392..c46a3959f6 100644 --- a/maps/submaps/surface_submaps/plains/plains.dm +++ b/maps/submaps/surface_submaps/plains/plains.dm @@ -8,6 +8,7 @@ #include "house1.dmm" #include "beacons.dmm" #include "Epod.dmm" +#include "Epod2.dmm" #include "PascalB.dmm" #include "bonfire.dmm" #include "Rocky5.dmm" @@ -46,7 +47,7 @@ /datum/map_template/surface/plains/farm1 name = "Farm 1" desc = "A small farm tended by a farmbot." - mappath = 'maps/submaps/surface_submaps/plains/farm1.dmm' + mappath = 'maps/submaps/surface_submaps/plains/farm1_vr.dmm' //VOREStation Edit cost = 10 /datum/map_template/surface/plains/construction1 @@ -58,13 +59,13 @@ /datum/map_template/surface/plains/camp1 name = "Camp Site 1" desc = "A small campsite, complete with housing and bonfire." - mappath = 'maps/submaps/surface_submaps/plains/camp1.dmm' + mappath = 'maps/submaps/surface_submaps/plains/camp1_vr.dmm' //VOREStation Edit cost = 10 /datum/map_template/surface/plains/house1 name = "House 1" desc = "A fair sized house out in the frontier, that belonged to a well-traveled explorer." - mappath = 'maps/submaps/surface_submaps/plains/house1.dmm' + mappath = 'maps/submaps/surface_submaps/plains/house1_vr.dmm' //VOREStation Edit cost = 10 /datum/map_template/surface/plains/beacons @@ -72,6 +73,7 @@ desc = "A bunch of marker beacons, scattered in a strange pattern." mappath = 'maps/submaps/surface_submaps/plains/beacons.dmm' cost = 5 + fixed_orientation = TRUE /datum/map_template/surface/plains/Epod name = "Emergency Pod" @@ -79,6 +81,12 @@ mappath = 'maps/submaps/surface_submaps/plains/Epod.dmm' cost = 5 +/datum/map_template/surface/plains/Epod2 + name = "Emergency Pod 2" + desc = "A locked Emergency pod in the middle of nowhere." + mappath = 'maps/submaps/surface_submaps/plains/Epod2.dmm' + cost = 5 + /datum/map_template/surface/plains/normal/Rocky2 name = "Rocky2" desc = "More rocks." @@ -107,7 +115,7 @@ /datum/map_template/surface/plains/Shakden name = "Shakden" desc = "Not to be confused with Shaq Den" - mappath = 'maps/submaps/surface_submaps/plains/Shakden.dmm' + mappath = 'maps/submaps/surface_submaps/plains/Shakden_vr.dmm' //VOREStation Edit cost = 10 /datum/map_template/surface/plains/Field1 @@ -119,7 +127,7 @@ /datum/map_template/surface/plains/Thiefc name = "Thieves Cave" desc = "A thieves stash" - mappath = 'maps/submaps/surface_submaps/plains/Thiefc.dmm' + mappath = 'maps/submaps/surface_submaps/plains/Thiefc_vr.dmm' //VOREStation Edit cost = 20 /datum/map_template/surface/plains/smol2 @@ -137,13 +145,13 @@ /datum/map_template/surface/plains/Boathouse name = "Boathouse" desc = "A fance house on a lake." - mappath = 'maps/submaps/surface_submaps/plains/Boathouse.dmm' + mappath = 'maps/submaps/surface_submaps/plains/Boathouse_vr.dmm' //VOREStation Edit cost = 30 /datum/map_template/surface/plains/PooledR name = "Pooled Rocks" desc = "An intresting rocky location" - mappath = 'maps/submaps/surface_submaps/plains/PooledR.dmm' + mappath = 'maps/submaps/surface_submaps/plains/PooledR_vr.dmm' //VOREStation Edit cost = 15 /datum/map_template/surface/plains/Smol3 @@ -155,7 +163,7 @@ /datum/map_template/surface/plains/Diner name = "Diner" desc = "Old Timey Tasty" - mappath = 'maps/submaps/surface_submaps/plains/Diner.dmm' + mappath = 'maps/submaps/surface_submaps/plains/Diner_vr.dmm' //VOREStation Edit cost = 25 /datum/map_template/surface/plains/snow1 @@ -191,7 +199,7 @@ /datum/map_template/surface/plains/RationCache name = "Ration Cache" desc = "A forgotten cache of emergency rations." - mappath = 'maps/submaps/surface_submaps/plains/RationCache.dmm' + mappath = 'maps/submaps/surface_submaps/plains/RationCache_vr.dmm' //VOREStation Edit cost = 5 /datum/map_template/surface/plains/SupplyDrop2 @@ -203,5 +211,5 @@ /datum/map_template/surface/plains/Oldhouse name = "Oldhouse" desc = "Someones old library it seems.." - mappath = 'maps/submaps/surface_submaps/plains/Oldhouse.dmm' + mappath = 'maps/submaps/surface_submaps/plains/Oldhouse_vr.dmm' //VOREStation Edit cost = 15 \ No newline at end of file diff --git a/maps/submaps/surface_submaps/plains/plains_areas.dm b/maps/submaps/surface_submaps/plains/plains_areas.dm index 99f9fef12e..b92f477854 100644 --- a/maps/submaps/surface_submaps/plains/plains_areas.dm +++ b/maps/submaps/surface_submaps/plains/plains_areas.dm @@ -19,6 +19,10 @@ name = "Epod1" ambience = AMBIENCE_FOREBODING +/area/submap/Epod2 + name = "Epod2" + ambience = AMBIENCE_FOREBODING + /area/submap/Rocky2 name = "Rocky2" diff --git a/maps/submaps/surface_submaps/wilderness/Blackshuttledown.dmm b/maps/submaps/surface_submaps/wilderness/Blackshuttledown.dmm index 479bc4e523..7bf4c4d921 100644 --- a/maps/submaps/surface_submaps/wilderness/Blackshuttledown.dmm +++ b/maps/submaps/surface_submaps/wilderness/Blackshuttledown.dmm @@ -1,2083 +1,161 @@ -//MAP CONVERTED BY dmm2tgm.py THIS HEADER COMMENT PREVENTS RECONVERSION, DO NOT REMOVE -"aa" = ( -/turf/template_noop, -/area/template_noop) -"ab" = ( -/turf/template_noop, -/area/submap/Blackshuttledown) -"ac" = ( -/obj/effect/decal/remains/human, -/turf/template_noop, -/area/submap/Blackshuttledown) -"ad" = ( -/turf/simulated/mineral/ignore_mapgen, -/area/submap/Blackshuttledown) -"ae" = ( -/obj/effect/decal/cleanable/blood, -/turf/template_noop, -/area/submap/Blackshuttledown) -"af" = ( -/obj/structure/flora/tree/sif, -/turf/template_noop, -/area/submap/Blackshuttledown) -"ag" = ( -/obj/structure/table/steel, -/turf/template_noop, -/area/submap/Blackshuttledown) -"ah" = ( -/mob/living/simple_animal/hostile/syndicate/ranged/poi, -/turf/template_noop, -/area/submap/Blackshuttledown) -"ai" = ( -/turf/template_noop, -/turf/simulated/shuttle/wall/dark{ - icon_state = "dark6"; - name = "Unknown Shuttle" - }, -/area/submap/Blackshuttledown) -"aj" = ( -/turf/simulated/shuttle/wall/dark{ - icon_state = "dark0"; - name = "Unknown Shuttle" - }, -/area/submap/Blackshuttledown) -"ak" = ( -/turf/template_noop, -/turf/simulated/shuttle/wall/dark{ - icon_state = "dark10"; - name = "Unknown Shuttle" - }, -/area/submap/Blackshuttledown) -"al" = ( -/obj/structure/shuttle/engine/heater{ - icon_state = "heater"; - dir = 4 - }, -/turf/simulated/shuttle/wall/dark{ - icon_state = "dark0"; - name = "Unknown Shuttle" - }, -/area/submap/Blackshuttledown) -"am" = ( -/obj/structure/shuttle/engine/propulsion{ - dir = 4; - icon_state = "propulsion_l" - }, -/turf/template_noop, -/area/submap/Blackshuttledown) -"an" = ( -/obj/machinery/light{ - dir = 1 - }, -/obj/structure/table/rack, -/obj/item/clothing/head/helmet/space, -/obj/item/clothing/head/helmet/space, -/obj/item/clothing/head/helmet/space, -/obj/item/clothing/head/helmet/space, -/obj/item/clothing/suit/space, -/obj/item/clothing/suit/space, -/obj/item/clothing/suit/space, -/obj/item/clothing/suit/space, -/obj/effect/floor_decal/borderfloor{ - dir = 9 - }, -/turf/simulated/floor/tiled/steel, -/area/submap/Blackshuttledown) -"ao" = ( -/obj/structure/dispenser/oxygen, -/obj/effect/floor_decal/borderfloor{ - dir = 5 - }, -/turf/simulated/floor/tiled/steel, -/area/submap/Blackshuttledown) -"ap" = ( -/obj/machinery/door/airlock/external{ - density = 1; - frequency = 1331; - id_tag = "merc_shuttle_outer"; - name = "Ship External Access"; - req_access = list(150) - }, -/turf/simulated/floor/tiled/steel, -/area/submap/Blackshuttledown) -"aq" = ( -/obj/effect/floor_decal/corner/green/border{ - icon_state = "bordercolor"; - dir = 9 - }, -/turf/simulated/floor/tiled/white, -/area/submap/Blackshuttledown) -"ar" = ( -/obj/machinery/gibber, -/obj/effect/floor_decal/corner/green/border{ - icon_state = "bordercolor"; - dir = 1 - }, -/turf/simulated/floor/tiled/white, -/area/submap/Blackshuttledown) -"as" = ( -/obj/machinery/light{ - dir = 1 - }, -/obj/effect/floor_decal/corner/green/border{ - icon_state = "bordercolor"; - dir = 1 - }, -/turf/simulated/floor/tiled/white, -/area/submap/Blackshuttledown) -"at" = ( -/obj/machinery/bodyscanner{ - dir = 8 - }, -/obj/effect/floor_decal/corner/green/border{ - icon_state = "bordercolor"; - dir = 1 - }, -/turf/simulated/floor/tiled/white, -/area/submap/Blackshuttledown) -"au" = ( -/obj/machinery/body_scanconsole, -/obj/effect/floor_decal/corner/green/border{ - icon_state = "bordercolor"; - dir = 5 - }, -/turf/simulated/floor/tiled/white, -/area/submap/Blackshuttledown) -"av" = ( -/turf/simulated/floor/tiled/steel, -/turf/simulated/shuttle/wall/dark{ - icon_state = "dark5"; - name = "Unknown Shuttle" - }, -/area/submap/Blackshuttledown) -"aw" = ( -/turf/simulated/floor/tiled/steel_grid, -/area/submap/Blackshuttledown) -"ax" = ( -/obj/structure/table/steel, -/obj/item/weapon/gun/projectile/automatic/wt550, -/obj/item/weapon/gun/projectile/automatic/p90, -/turf/simulated/floor/tiled/steel_grid, -/area/submap/Blackshuttledown) -"ay" = ( -/obj/effect/floor_decal/borderfloor{ - dir = 8 - }, -/turf/simulated/floor/tiled/steel, -/area/submap/Blackshuttledown) -"az" = ( -/obj/effect/floor_decal/borderfloor{ - dir = 4 - }, -/turf/simulated/floor/tiled/steel, -/area/submap/Blackshuttledown) -"aA" = ( -/obj/machinery/door/airlock/external, -/turf/simulated/floor/tiled/steel, -/area/submap/Blackshuttledown) -"aB" = ( -/obj/effect/floor_decal/corner/green/border{ - icon_state = "bordercolor"; - dir = 8 - }, -/turf/simulated/floor/tiled/white, -/area/submap/Blackshuttledown) -"aC" = ( -/obj/machinery/optable, -/turf/simulated/floor/tiled/white, -/area/submap/Blackshuttledown) -"aD" = ( -/obj/effect/decal/cleanable/blood, -/turf/simulated/floor/tiled/white, -/area/submap/Blackshuttledown) -"aE" = ( -/turf/simulated/floor/tiled/white, -/area/submap/Blackshuttledown) -"aF" = ( -/obj/machinery/organ_printer/flesh, -/obj/effect/floor_decal/corner/green/border{ - icon_state = "bordercolor"; - dir = 5 - }, -/turf/simulated/floor/tiled/white, -/area/submap/Blackshuttledown) -"aG" = ( -/turf/simulated/floor/tiled/steel, -/turf/simulated/shuttle/wall/dark{ - icon_state = "dark9"; - name = "Unknown Shuttle" - }, -/area/submap/Blackshuttledown) -"aH" = ( -/turf/simulated/floor/tiled/steel, -/turf/simulated/shuttle/wall/dark{ - icon_state = "dark6"; - name = "Unknown Shuttle" - }, -/area/submap/Blackshuttledown) -"aI" = ( -/mob/living/simple_animal/hostile/viscerator, -/mob/living/simple_animal/hostile/viscerator, -/mob/living/simple_animal/hostile/viscerator, -/turf/simulated/floor/tiled/steel_grid, -/area/submap/Blackshuttledown) -"aJ" = ( -/obj/structure/table/steel, -/obj/machinery/light/small{ - dir = 4; - pixel_y = 0 - }, -/turf/simulated/floor/tiled/steel_grid, -/area/submap/Blackshuttledown) -"aK" = ( -/obj/effect/floor_decal/borderfloor/corner{ - dir = 4 - }, -/turf/simulated/floor/tiled/steel, -/area/submap/Blackshuttledown) -"aL" = ( -/obj/effect/floor_decal/borderfloor{ - dir = 1 - }, -/turf/simulated/floor/tiled/steel, -/area/submap/Blackshuttledown) -"aM" = ( -/obj/effect/floor_decal/borderfloor{ - dir = 5 - }, -/turf/simulated/floor/tiled/steel, -/area/submap/Blackshuttledown) -"aN" = ( -/obj/effect/decal/cleanable/blood/drip, -/turf/simulated/floor/tiled/white, -/area/submap/Blackshuttledown) -"aO" = ( -/mob/living/simple_animal/hostile/syndicate/melee/poi, -/turf/simulated/floor/tiled/white, -/area/submap/Blackshuttledown) -"aP" = ( -/obj/machinery/light{ - dir = 4; - icon_state = "tube1"; - pixel_x = 0 - }, -/obj/effect/floor_decal/corner/green/border{ - icon_state = "bordercolor"; - dir = 4 - }, -/turf/simulated/floor/tiled/white, -/area/submap/Blackshuttledown) -"aQ" = ( -/obj/structure/table/steel, -/obj/effect/floor_decal/borderfloor/full, -/turf/simulated/floor/tiled/steel, -/area/submap/Blackshuttledown) -"aR" = ( -/obj/structure/table/steel, -/obj/item/weapon/grenade/smokebomb, -/turf/simulated/floor/tiled/steel_grid, -/area/submap/Blackshuttledown) -"aS" = ( -/obj/effect/floor_decal/borderfloor/corner, -/turf/simulated/floor/tiled/steel, -/area/submap/Blackshuttledown) -"aT" = ( -/obj/effect/floor_decal/borderfloor, -/turf/simulated/floor/tiled/steel, -/area/submap/Blackshuttledown) -"aU" = ( -/obj/machinery/light{ - dir = 4; - icon_state = "tube1"; - pixel_x = 0 - }, -/obj/effect/floor_decal/borderfloor{ - dir = 6 - }, -/turf/simulated/floor/tiled/steel, -/area/submap/Blackshuttledown) -"aV" = ( -/obj/structure/table/standard, -/obj/item/weapon/storage/firstaid/surgery, -/obj/effect/floor_decal/corner/green/border{ - icon_state = "bordercolor"; - dir = 10 - }, -/turf/simulated/floor/tiled/white, -/area/submap/Blackshuttledown) -"aW" = ( -/obj/structure/table/standard, -/obj/item/weapon/tank/anesthetic, -/obj/effect/floor_decal/corner/green/border, -/turf/simulated/floor/tiled/white, -/area/submap/Blackshuttledown) -"aX" = ( -/obj/effect/floor_decal/corner/green/border, -/turf/simulated/floor/tiled/white, -/area/submap/Blackshuttledown) -"aY" = ( -/obj/structure/table/standard, -/obj/item/clothing/gloves/sterile, -/obj/item/clothing/gloves/sterile, -/obj/effect/floor_decal/corner/green/border, -/turf/simulated/floor/tiled/white, -/area/submap/Blackshuttledown) -"aZ" = ( -/obj/structure/table/standard, -/obj/item/weapon/reagent_containers/spray/sterilizine, -/obj/item/weapon/reagent_containers/spray/sterilizine, -/obj/effect/floor_decal/corner/green/border, -/turf/simulated/floor/tiled/white, -/area/submap/Blackshuttledown) -"ba" = ( -/obj/structure/table/standard, -/obj/item/weapon/storage/box/masks, -/obj/effect/floor_decal/corner/green/border{ - icon_state = "bordercolor"; - dir = 6 - }, -/turf/simulated/floor/tiled/white, -/area/submap/Blackshuttledown) -"bb" = ( -/obj/machinery/light{ - icon_state = "tube1"; - dir = 8 - }, -/obj/effect/floor_decal/borderfloor{ - dir = 9 - }, -/turf/simulated/floor/tiled/steel, -/area/submap/Blackshuttledown) -"bc" = ( -/obj/structure/bed/chair/office/dark{ - dir = 1 - }, -/obj/effect/floor_decal/borderfloor{ - dir = 5 - }, -/turf/simulated/floor/tiled/steel, -/area/submap/Blackshuttledown) -"bd" = ( -/obj/machinery/door/airlock/security{ - locked = 1 - }, -/turf/simulated/floor/tiled/steel, -/area/submap/Blackshuttledown) -"be" = ( -/obj/machinery/door/airlock/glass, -/turf/simulated/floor/tiled/white, -/area/submap/Blackshuttledown) -"bf" = ( -/turf/simulated/floor/tiled/steel, -/turf/simulated/shuttle/wall/dark{ - icon_state = "dark10"; - name = "Unknown Shuttle" - }, -/area/submap/Blackshuttledown) -"bg" = ( -/obj/machinery/computer/communications, -/obj/effect/floor_decal/borderfloor{ - dir = 9 - }, -/turf/simulated/floor/tiled/steel, -/area/submap/Blackshuttledown) -"bh" = ( -/obj/effect/floor_decal/borderfloor/corner{ - dir = 1 - }, -/turf/simulated/floor/tiled/steel, -/area/submap/Blackshuttledown) -"bi" = ( -/obj/effect/floor_decal/borderfloor{ - dir = 9 - }, -/turf/simulated/floor/tiled/steel, -/area/submap/Blackshuttledown) -"bj" = ( -/obj/structure/closet/secure_closet/freezer/fridge, -/turf/simulated/floor/tiled/steel, -/area/submap/Blackshuttledown) -"bk" = ( -/obj/structure/table/steel, -/obj/item/weapon/material/knife, -/turf/simulated/floor/tiled/steel, -/area/submap/Blackshuttledown) -"bl" = ( -/turf/simulated/floor/tiled/steel, -/area/submap/Blackshuttledown) -"bm" = ( -/obj/machinery/light{ - dir = 1 - }, -/turf/simulated/floor/tiled/steel, -/area/submap/Blackshuttledown) -"bn" = ( -/mob/living/simple_animal/hostile/syndicate/ranged/poi, -/turf/simulated/floor/tiled/steel, -/area/submap/Blackshuttledown) -"bo" = ( -/obj/structure/table/steel, -/obj/random/toolbox, -/turf/simulated/floor/tiled/yellow, -/area/submap/Blackshuttledown) -"bp" = ( -/obj/structure/table/steel, -/obj/machinery/light/small{ - dir = 4; - pixel_y = 0 - }, -/turf/simulated/floor/tiled/yellow, -/area/submap/Blackshuttledown) -"bq" = ( -/obj/structure/grille, -/obj/structure/window/reinforced{ - dir = 1 - }, -/obj/structure/window/reinforced{ - dir = 8 - }, -/obj/structure/window/reinforced{ - dir = 4 - }, -/turf/simulated/floor/plating, -/area/submap/Blackshuttledown) -"br" = ( -/obj/structure/table/steel, -/obj/effect/floor_decal/borderfloor{ - dir = 8 - }, -/turf/simulated/floor/tiled/steel, -/area/submap/Blackshuttledown) -"bs" = ( -/obj/machinery/light{ - icon_state = "tube1"; - dir = 8 - }, -/obj/effect/floor_decal/borderfloor{ - dir = 8 - }, -/turf/simulated/floor/tiled/steel, -/area/submap/Blackshuttledown) -"bt" = ( -/obj/machinery/light{ - dir = 4; - icon_state = "tube1"; - pixel_x = 0 - }, -/obj/effect/floor_decal/borderfloor{ - dir = 4 - }, -/turf/simulated/floor/tiled/steel, -/area/submap/Blackshuttledown) -"bu" = ( -/obj/item/weapon/stool, -/turf/simulated/floor/tiled/steel, -/area/submap/Blackshuttledown) -"bv" = ( -/obj/structure/table/steel, -/obj/random/projectile, -/turf/simulated/floor/tiled/yellow, -/area/submap/Blackshuttledown) -"bw" = ( -/turf/simulated/floor/tiled/yellow, -/area/submap/Blackshuttledown) -"bx" = ( -/obj/structure/grille, -/obj/structure/window/reinforced{ - dir = 4 - }, -/obj/structure/window/reinforced{ - dir = 8 - }, -/turf/simulated/floor/plating, -/area/submap/Blackshuttledown) -"by" = ( -/obj/machinery/door/airlock/glass, -/obj/effect/floor_decal/borderfloor{ - dir = 1 - }, -/turf/simulated/floor/tiled/steel, -/area/submap/Blackshuttledown) -"bz" = ( -/obj/effect/floor_decal/corner/grey, -/turf/simulated/floor/tiled/steel, -/area/submap/Blackshuttledown) -"bA" = ( -/obj/machinery/door/airlock/glass, -/turf/simulated/floor/tiled/steel, -/area/submap/Blackshuttledown) -"bB" = ( -/obj/structure/table/steel, -/obj/item/pizzabox, -/turf/simulated/floor/tiled/steel, -/area/submap/Blackshuttledown) -"bC" = ( -/obj/structure/table/steel, -/turf/simulated/floor/tiled/steel, -/area/submap/Blackshuttledown) -"bD" = ( -/obj/machinery/door/airlock, -/turf/simulated/floor/tiled/steel, -/area/submap/Blackshuttledown) -"bE" = ( -/obj/machinery/door/airlock/glass, -/obj/effect/floor_decal/borderfloor, -/turf/simulated/floor/tiled/steel, -/area/submap/Blackshuttledown) -"bF" = ( -/obj/effect/floor_decal/borderfloor/corner{ - dir = 8 - }, -/turf/simulated/floor/tiled/steel, -/area/submap/Blackshuttledown) -"bG" = ( -/obj/structure/grille, -/obj/structure/window/reinforced, -/obj/structure/window/reinforced{ - dir = 8 - }, -/obj/structure/window/reinforced{ - dir = 4 - }, -/turf/simulated/floor/plating, -/area/submap/Blackshuttledown) -"bH" = ( -/obj/machinery/power/apc{ - dir = 8; - name = "BSD APC"; - pixel_x = -24 - }, -/turf/simulated/floor/tiled/yellow, -/area/submap/Blackshuttledown) -"bI" = ( -/mob/living/simple_animal/hostile/syndicate/melee/poi, -/turf/simulated/floor/tiled/yellow, -/area/submap/Blackshuttledown) -"bJ" = ( -/obj/machinery/computer/area_atmos, -/obj/effect/floor_decal/borderfloor{ - dir = 10 - }, -/turf/simulated/floor/tiled/steel, -/area/submap/Blackshuttledown) -"bK" = ( -/obj/effect/floor_decal/borderfloor{ - dir = 4 - }, -/mob/living/simple_animal/hostile/syndicate/ranged/laser/poi, -/turf/simulated/floor/tiled/steel, -/area/submap/Blackshuttledown) -"bL" = ( -/obj/effect/floor_decal/borderfloor{ - dir = 10 - }, -/turf/simulated/floor/tiled/steel, -/area/submap/Blackshuttledown) -"bM" = ( -/obj/effect/floor_decal/borderfloor{ - dir = 4 - }, -/obj/effect/floor_decal/borderfloor{ - dir = 4 - }, -/turf/simulated/floor/tiled/steel, -/area/submap/Blackshuttledown) -"bN" = ( -/obj/structure/table/steel, -/obj/item/weapon/paper{ - info = "We need to take a short stop. The engine's are in need of minor repairs due to turbulence, should be a week's time. We've got reserve food supplies but pleanty of locale fauna to subsist on too if need be. PCRC is keeping most of there assets near New Reykjavik and locale authorities are more mindful then most to travel in this kind of weather. Our outfit should be at the rendezvous point in less then ten days assuming the upper ecehelon hasn't dropped ties with us yet."; - name = "Operation Progress/M-53" - }, -/turf/simulated/floor/tiled/steel, -/area/submap/Blackshuttledown) -"bO" = ( -/obj/structure/table/steel, -/obj/item/weapon/paper_bin, -/turf/simulated/floor/tiled/steel, -/area/submap/Blackshuttledown) -"bP" = ( -/obj/machinery/light, -/turf/simulated/floor/tiled/steel, -/area/submap/Blackshuttledown) -"bQ" = ( -/obj/structure/closet/toolcloset, -/turf/simulated/floor/tiled/yellow, -/area/submap/Blackshuttledown) -"bR" = ( -/obj/machinery/portable_atmospherics/canister/empty/oxygen, -/turf/simulated/floor/tiled/yellow, -/area/submap/Blackshuttledown) -"bS" = ( -/obj/machinery/atmospherics/pipe/tank/oxygen, -/obj/machinery/light/small{ - dir = 4; - pixel_y = 0 - }, -/turf/simulated/floor/tiled/yellow, -/area/submap/Blackshuttledown) -"bT" = ( -/obj/machinery/light{ - icon_state = "tube1"; - dir = 8 - }, -/obj/effect/floor_decal/borderfloor{ - dir = 10 - }, -/turf/simulated/floor/tiled/steel, -/area/submap/Blackshuttledown) -"bU" = ( -/obj/structure/bed/chair/office/dark, -/obj/effect/floor_decal/borderfloor{ - dir = 6 - }, -/turf/simulated/floor/tiled/steel, -/area/submap/Blackshuttledown) -"bV" = ( -/obj/structure/table/steel, -/turf/simulated/floor/tiled/steel_grid, -/area/submap/Blackshuttledown) -"bW" = ( -/obj/effect/floor_decal/borderfloor/corner{ - dir = 4 - }, -/obj/effect/floor_decal/borderfloor/corner{ - dir = 4 - }, -/turf/simulated/floor/tiled/steel, -/area/submap/Blackshuttledown) -"bX" = ( -/obj/machinery/light{ - dir = 4; - icon_state = "tube1"; - pixel_x = 0 - }, -/obj/effect/floor_decal/borderfloor{ - dir = 5 - }, -/turf/simulated/floor/tiled/steel, -/area/submap/Blackshuttledown) -"bY" = ( -/obj/structure/bed, -/obj/item/weapon/bedsheet, -/turf/simulated/floor/tiled/steel, -/area/submap/Blackshuttledown) -"bZ" = ( -/obj/machinery/door/airlock, -/turf/simulated/floor/tiled/hydro, -/area/submap/Blackshuttledown) -"ca" = ( -/turf/simulated/floor/tiled/hydro, -/area/submap/Blackshuttledown) -"cb" = ( -/mob/living/simple_animal/hostile/viscerator, -/turf/simulated/floor/tiled/steel_grid, -/area/submap/Blackshuttledown) -"cc" = ( -/obj/structure/table/steel, -/obj/item/weapon/gun/projectile/pistol, -/obj/machinery/light/small{ - dir = 4; - pixel_y = 0 - }, -/turf/simulated/floor/tiled/steel_grid, -/area/submap/Blackshuttledown) -"cd" = ( -/obj/effect/floor_decal/borderfloor{ - dir = 6 - }, -/turf/simulated/floor/tiled/steel, -/area/submap/Blackshuttledown) -"ce" = ( -/obj/structure/bed, -/obj/item/weapon/bedsheet, -/obj/structure/bed, -/turf/simulated/floor/tiled/steel, -/area/submap/Blackshuttledown) -"cf" = ( -/obj/machinery/light/small{ - dir = 4; - pixel_y = 0 - }, -/turf/simulated/floor/tiled/hydro, -/area/submap/Blackshuttledown) -"cg" = ( -/mob/living/simple_animal/hostile/viscerator, -/mob/living/simple_animal/hostile/viscerator, -/turf/simulated/floor/tiled/steel_grid, -/area/submap/Blackshuttledown) -"ch" = ( -/obj/structure/table/steel, -/obj/random/energy, -/turf/simulated/floor/tiled/steel_grid, -/area/submap/Blackshuttledown) -"ci" = ( -/obj/structure/toilet{ - dir = 1 - }, -/turf/simulated/floor/tiled/hydro, -/area/submap/Blackshuttledown) -"cj" = ( -/obj/machinery/light, -/obj/structure/table/rack, -/obj/item/clothing/head/helmet/space, -/obj/item/clothing/head/helmet/space, -/obj/item/clothing/head/helmet/space, -/obj/item/clothing/head/helmet/space, -/obj/item/clothing/suit/space, -/obj/item/clothing/suit/space, -/obj/item/clothing/suit/space, -/obj/item/clothing/suit/space, -/obj/effect/floor_decal/borderfloor{ - dir = 10 - }, -/turf/simulated/floor/tiled/steel, -/area/submap/Blackshuttledown) -"ck" = ( -/obj/structure/dispenser/oxygen, -/obj/effect/floor_decal/borderfloor{ - dir = 6 - }, -/turf/simulated/floor/tiled/steel, -/area/submap/Blackshuttledown) -"cl" = ( -/obj/structure/table/woodentable, -/obj/random/projectile, -/turf/simulated/floor/tiled/steel, -/area/submap/Blackshuttledown) -"cm" = ( -/obj/structure/bed, -/obj/item/weapon/bedsheet, -/obj/machinery/light, -/turf/simulated/floor/tiled/steel, -/area/submap/Blackshuttledown) -"cn" = ( -/obj/structure/table/woodentable, -/turf/simulated/floor/tiled/steel, -/area/submap/Blackshuttledown) -"co" = ( -/obj/structure/bed, -/obj/item/weapon/bedsheet, -/obj/item/toy/plushie/spider, -/turf/simulated/floor/tiled/steel, -/area/submap/Blackshuttledown) -"cp" = ( -/turf/template_noop, -/turf/simulated/shuttle/wall/dark{ - icon_state = "dark5"; - name = "Unknown Shuttle" - }, -/area/submap/Blackshuttledown) -"cq" = ( -/turf/template_noop, -/turf/simulated/shuttle/wall/dark{ - icon_state = "dark9"; - name = "Unknown Shuttle" - }, -/area/submap/Blackshuttledown) -"EI" = ( -/obj/effect/floor_decal/borderfloor{ - dir = 4 - }, -/mob/living/simple_animal/hostile/syndicate/melee/poi, -/turf/simulated/floor/tiled/steel, -/area/submap/Blackshuttledown) -"SN" = ( -/mob/living/simple_animal/hostile/syndicate/ranged/laser/poi, -/turf/template_noop, -/area/submap/Blackshuttledown) +"aa" = (/turf/template_noop,/area/template_noop) +"ab" = (/turf/template_noop,/area/submap/Blackshuttledown) +"ac" = (/obj/effect/decal/remains/human,/turf/template_noop,/area/submap/Blackshuttledown) +"ad" = (/turf/simulated/mineral/ignore_mapgen,/area/submap/Blackshuttledown) +"ae" = (/obj/effect/decal/cleanable/blood,/turf/template_noop,/area/submap/Blackshuttledown) +"af" = (/obj/structure/flora/tree/sif,/turf/template_noop,/area/submap/Blackshuttledown) +"ag" = (/obj/structure/table/steel,/turf/template_noop,/area/submap/Blackshuttledown) +"ah" = (/mob/living/simple_mob/humanoid/merc/ranged/smg/poi,/turf/template_noop,/area/submap/Blackshuttledown) +"ai" = (/turf/template_noop,/turf/simulated/shuttle/wall/dark{icon_state = "dark6"; name = "Unknown Shuttle"},/area/submap/Blackshuttledown) +"aj" = (/turf/simulated/shuttle/wall/dark{icon_state = "dark0"; name = "Unknown Shuttle"},/area/submap/Blackshuttledown) +"ak" = (/turf/template_noop,/turf/simulated/shuttle/wall/dark{icon_state = "dark10"; name = "Unknown Shuttle"},/area/submap/Blackshuttledown) +"al" = (/obj/structure/shuttle/engine/heater{icon_state = "heater"; dir = 4},/turf/simulated/shuttle/wall/dark{icon_state = "dark0"; name = "Unknown Shuttle"},/area/submap/Blackshuttledown) +"am" = (/obj/structure/shuttle/engine/propulsion{dir = 4; icon_state = "propulsion_l"},/turf/template_noop,/area/submap/Blackshuttledown) +"an" = (/obj/machinery/light{dir = 1},/obj/structure/table/rack,/obj/item/clothing/head/helmet/space,/obj/item/clothing/head/helmet/space,/obj/item/clothing/head/helmet/space,/obj/item/clothing/head/helmet/space,/obj/item/clothing/suit/space,/obj/item/clothing/suit/space,/obj/item/clothing/suit/space,/obj/item/clothing/suit/space,/obj/effect/floor_decal/borderfloor{dir = 9},/turf/simulated/floor/tiled/steel,/area/submap/Blackshuttledown) +"ao" = (/obj/structure/dispenser/oxygen,/obj/effect/floor_decal/borderfloor{dir = 5},/turf/simulated/floor/tiled/steel,/area/submap/Blackshuttledown) +"ap" = (/obj/machinery/door/airlock/external{density = 1; frequency = 1331; id_tag = "merc_shuttle_outer"; name = "Ship External Access"; req_access = list(150)},/turf/simulated/floor/tiled/steel,/area/submap/Blackshuttledown) +"aq" = (/obj/effect/floor_decal/corner/green/border{icon_state = "bordercolor"; dir = 9},/turf/simulated/floor/tiled/white,/area/submap/Blackshuttledown) +"ar" = (/obj/machinery/gibber,/obj/effect/floor_decal/corner/green/border{icon_state = "bordercolor"; dir = 1},/turf/simulated/floor/tiled/white,/area/submap/Blackshuttledown) +"as" = (/obj/machinery/light{dir = 1},/obj/effect/floor_decal/corner/green/border{icon_state = "bordercolor"; dir = 1},/turf/simulated/floor/tiled/white,/area/submap/Blackshuttledown) +"at" = (/obj/machinery/bodyscanner{dir = 8},/obj/effect/floor_decal/corner/green/border{icon_state = "bordercolor"; dir = 1},/turf/simulated/floor/tiled/white,/area/submap/Blackshuttledown) +"au" = (/obj/machinery/body_scanconsole,/obj/effect/floor_decal/corner/green/border{icon_state = "bordercolor"; dir = 5},/turf/simulated/floor/tiled/white,/area/submap/Blackshuttledown) +"av" = (/turf/simulated/floor/tiled/steel,/turf/simulated/shuttle/wall/dark{icon_state = "dark5"; name = "Unknown Shuttle"},/area/submap/Blackshuttledown) +"aw" = (/turf/simulated/floor/tiled/steel_grid,/area/submap/Blackshuttledown) +"ax" = (/obj/structure/table/steel,/obj/item/weapon/gun/projectile/automatic/wt550,/obj/item/weapon/gun/projectile/automatic/p90,/turf/simulated/floor/tiled/steel_grid,/area/submap/Blackshuttledown) +"ay" = (/obj/effect/floor_decal/borderfloor{dir = 8},/turf/simulated/floor/tiled/steel,/area/submap/Blackshuttledown) +"az" = (/obj/effect/floor_decal/borderfloor{dir = 4},/turf/simulated/floor/tiled/steel,/area/submap/Blackshuttledown) +"aA" = (/obj/machinery/door/airlock/external,/turf/simulated/floor/tiled/steel,/area/submap/Blackshuttledown) +"aB" = (/obj/effect/floor_decal/corner/green/border{icon_state = "bordercolor"; dir = 8},/turf/simulated/floor/tiled/white,/area/submap/Blackshuttledown) +"aC" = (/obj/machinery/optable,/turf/simulated/floor/tiled/white,/area/submap/Blackshuttledown) +"aD" = (/obj/effect/decal/cleanable/blood,/turf/simulated/floor/tiled/white,/area/submap/Blackshuttledown) +"aE" = (/turf/simulated/floor/tiled/white,/area/submap/Blackshuttledown) +"aF" = (/obj/machinery/organ_printer/flesh,/obj/effect/floor_decal/corner/green/border{icon_state = "bordercolor"; dir = 5},/turf/simulated/floor/tiled/white,/area/submap/Blackshuttledown) +"aG" = (/turf/simulated/floor/tiled/steel,/turf/simulated/shuttle/wall/dark{icon_state = "dark9"; name = "Unknown Shuttle"},/area/submap/Blackshuttledown) +"aH" = (/turf/simulated/floor/tiled/steel,/turf/simulated/shuttle/wall/dark{icon_state = "dark6"; name = "Unknown Shuttle"},/area/submap/Blackshuttledown) +"aI" = (/mob/living/simple_mob/mechanical/viscerator,/mob/living/simple_mob/mechanical/viscerator,/mob/living/simple_mob/mechanical/viscerator,/turf/simulated/floor/tiled/steel_grid,/area/submap/Blackshuttledown) +"aJ" = (/obj/structure/table/steel,/obj/machinery/light/small{dir = 4; pixel_y = 0},/turf/simulated/floor/tiled/steel_grid,/area/submap/Blackshuttledown) +"aK" = (/obj/effect/floor_decal/borderfloor/corner{dir = 4},/turf/simulated/floor/tiled/steel,/area/submap/Blackshuttledown) +"aL" = (/obj/effect/floor_decal/borderfloor{dir = 1},/turf/simulated/floor/tiled/steel,/area/submap/Blackshuttledown) +"aM" = (/obj/effect/floor_decal/borderfloor{dir = 5},/turf/simulated/floor/tiled/steel,/area/submap/Blackshuttledown) +"aN" = (/obj/effect/decal/cleanable/blood/drip,/turf/simulated/floor/tiled/white,/area/submap/Blackshuttledown) +"aO" = (/mob/living/simple_mob/humanoid/merc/melee/sword/poi,/turf/simulated/floor/tiled/white,/area/submap/Blackshuttledown) +"aP" = (/obj/machinery/light{dir = 4; icon_state = "tube1"; pixel_x = 0},/obj/effect/floor_decal/corner/green/border{icon_state = "bordercolor"; dir = 4},/turf/simulated/floor/tiled/white,/area/submap/Blackshuttledown) +"aQ" = (/obj/structure/table/steel,/obj/effect/floor_decal/borderfloor/full,/turf/simulated/floor/tiled/steel,/area/submap/Blackshuttledown) +"aR" = (/obj/structure/table/steel,/obj/item/weapon/grenade/smokebomb,/turf/simulated/floor/tiled/steel_grid,/area/submap/Blackshuttledown) +"aS" = (/obj/effect/floor_decal/borderfloor/corner,/turf/simulated/floor/tiled/steel,/area/submap/Blackshuttledown) +"aT" = (/obj/effect/floor_decal/borderfloor,/turf/simulated/floor/tiled/steel,/area/submap/Blackshuttledown) +"aU" = (/obj/machinery/light{dir = 4; icon_state = "tube1"; pixel_x = 0},/obj/effect/floor_decal/borderfloor{dir = 6},/turf/simulated/floor/tiled/steel,/area/submap/Blackshuttledown) +"aV" = (/obj/structure/table/standard,/obj/item/weapon/storage/firstaid/surgery,/obj/effect/floor_decal/corner/green/border{icon_state = "bordercolor"; dir = 10},/turf/simulated/floor/tiled/white,/area/submap/Blackshuttledown) +"aW" = (/obj/structure/table/standard,/obj/item/weapon/tank/anesthetic,/obj/effect/floor_decal/corner/green/border,/turf/simulated/floor/tiled/white,/area/submap/Blackshuttledown) +"aX" = (/obj/effect/floor_decal/corner/green/border,/turf/simulated/floor/tiled/white,/area/submap/Blackshuttledown) +"aY" = (/obj/structure/table/standard,/obj/item/clothing/gloves/sterile,/obj/item/clothing/gloves/sterile,/obj/effect/floor_decal/corner/green/border,/turf/simulated/floor/tiled/white,/area/submap/Blackshuttledown) +"aZ" = (/obj/structure/table/standard,/obj/item/weapon/reagent_containers/spray/sterilizine,/obj/item/weapon/reagent_containers/spray/sterilizine,/obj/effect/floor_decal/corner/green/border,/turf/simulated/floor/tiled/white,/area/submap/Blackshuttledown) +"ba" = (/obj/structure/table/standard,/obj/item/weapon/storage/box/masks,/obj/effect/floor_decal/corner/green/border{icon_state = "bordercolor"; dir = 6},/turf/simulated/floor/tiled/white,/area/submap/Blackshuttledown) +"bb" = (/obj/machinery/light{icon_state = "tube1"; dir = 8},/obj/effect/floor_decal/borderfloor{dir = 9},/turf/simulated/floor/tiled/steel,/area/submap/Blackshuttledown) +"bc" = (/obj/structure/bed/chair/office/dark{dir = 1},/obj/effect/floor_decal/borderfloor{dir = 5},/turf/simulated/floor/tiled/steel,/area/submap/Blackshuttledown) +"bd" = (/obj/machinery/door/airlock/security{locked = 1},/turf/simulated/floor/tiled/steel,/area/submap/Blackshuttledown) +"be" = (/obj/machinery/door/airlock/glass,/turf/simulated/floor/tiled/white,/area/submap/Blackshuttledown) +"bf" = (/turf/simulated/floor/tiled/steel,/turf/simulated/shuttle/wall/dark{icon_state = "dark10"; name = "Unknown Shuttle"},/area/submap/Blackshuttledown) +"bg" = (/obj/machinery/computer/communications,/obj/effect/floor_decal/borderfloor{dir = 9},/turf/simulated/floor/tiled/steel,/area/submap/Blackshuttledown) +"bh" = (/obj/effect/floor_decal/borderfloor/corner{dir = 1},/turf/simulated/floor/tiled/steel,/area/submap/Blackshuttledown) +"bi" = (/obj/effect/floor_decal/borderfloor{dir = 9},/turf/simulated/floor/tiled/steel,/area/submap/Blackshuttledown) +"bj" = (/obj/structure/closet/secure_closet/freezer/fridge,/turf/simulated/floor/tiled/steel,/area/submap/Blackshuttledown) +"bk" = (/obj/structure/table/steel,/obj/item/weapon/material/knife,/turf/simulated/floor/tiled/steel,/area/submap/Blackshuttledown) +"bl" = (/turf/simulated/floor/tiled/steel,/area/submap/Blackshuttledown) +"bm" = (/obj/machinery/light{dir = 1},/turf/simulated/floor/tiled/steel,/area/submap/Blackshuttledown) +"bn" = (/mob/living/simple_mob/humanoid/merc/ranged/smg/poi,/turf/simulated/floor/tiled/steel,/area/submap/Blackshuttledown) +"bo" = (/obj/structure/table/steel,/obj/random/toolbox,/turf/simulated/floor/tiled/yellow,/area/submap/Blackshuttledown) +"bp" = (/obj/structure/table/steel,/obj/machinery/light/small{dir = 4; pixel_y = 0},/turf/simulated/floor/tiled/yellow,/area/submap/Blackshuttledown) +"bq" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced{dir = 4},/turf/simulated/floor/plating,/area/submap/Blackshuttledown) +"br" = (/obj/structure/table/steel,/obj/effect/floor_decal/borderfloor{dir = 8},/turf/simulated/floor/tiled/steel,/area/submap/Blackshuttledown) +"bs" = (/obj/machinery/light{icon_state = "tube1"; dir = 8},/obj/effect/floor_decal/borderfloor{dir = 8},/turf/simulated/floor/tiled/steel,/area/submap/Blackshuttledown) +"bt" = (/obj/machinery/light{dir = 4; icon_state = "tube1"; pixel_x = 0},/obj/effect/floor_decal/borderfloor{dir = 4},/turf/simulated/floor/tiled/steel,/area/submap/Blackshuttledown) +"bu" = (/obj/item/weapon/stool,/turf/simulated/floor/tiled/steel,/area/submap/Blackshuttledown) +"bv" = (/obj/structure/table/steel,/obj/random/projectile,/turf/simulated/floor/tiled/yellow,/area/submap/Blackshuttledown) +"bw" = (/turf/simulated/floor/tiled/yellow,/area/submap/Blackshuttledown) +"bx" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 8},/turf/simulated/floor/plating,/area/submap/Blackshuttledown) +"by" = (/obj/machinery/door/airlock/glass,/obj/effect/floor_decal/borderfloor{dir = 1},/turf/simulated/floor/tiled/steel,/area/submap/Blackshuttledown) +"bz" = (/obj/effect/floor_decal/corner/grey,/turf/simulated/floor/tiled/steel,/area/submap/Blackshuttledown) +"bA" = (/obj/machinery/door/airlock/glass,/turf/simulated/floor/tiled/steel,/area/submap/Blackshuttledown) +"bB" = (/obj/structure/table/steel,/obj/item/pizzabox,/turf/simulated/floor/tiled/steel,/area/submap/Blackshuttledown) +"bC" = (/obj/structure/table/steel,/turf/simulated/floor/tiled/steel,/area/submap/Blackshuttledown) +"bD" = (/obj/machinery/door/airlock,/turf/simulated/floor/tiled/steel,/area/submap/Blackshuttledown) +"bE" = (/obj/machinery/door/airlock/glass,/obj/effect/floor_decal/borderfloor,/turf/simulated/floor/tiled/steel,/area/submap/Blackshuttledown) +"bF" = (/obj/effect/floor_decal/borderfloor/corner{dir = 8},/turf/simulated/floor/tiled/steel,/area/submap/Blackshuttledown) +"bG" = (/obj/structure/grille,/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced{dir = 4},/turf/simulated/floor/plating,/area/submap/Blackshuttledown) +"bH" = (/obj/machinery/power/apc{dir = 8; name = "BSD APC"; pixel_x = -24},/turf/simulated/floor/tiled/yellow,/area/submap/Blackshuttledown) +"bI" = (/mob/living/simple_mob/humanoid/merc/melee/sword/poi,/turf/simulated/floor/tiled/yellow,/area/submap/Blackshuttledown) +"bJ" = (/obj/machinery/computer/area_atmos,/obj/effect/floor_decal/borderfloor{dir = 10},/turf/simulated/floor/tiled/steel,/area/submap/Blackshuttledown) +"bK" = (/mob/living/simple_mob/humanoid/merc/ranged/laser/poi,/turf/template_noop,/area/submap/Blackshuttledown) +"bL" = (/obj/effect/floor_decal/borderfloor{dir = 10},/turf/simulated/floor/tiled/steel,/area/submap/Blackshuttledown) +"bM" = (/obj/effect/floor_decal/borderfloor{dir = 4},/obj/effect/floor_decal/borderfloor{dir = 4},/turf/simulated/floor/tiled/steel,/area/submap/Blackshuttledown) +"bN" = (/obj/structure/table/steel,/obj/item/weapon/paper{info = "We need to take a short stop. The engine's are in need of minor repairs due to turbulence, should be a week's time. We've got reserve food supplies but pleanty of locale fauna to subsist on too if need be. PCRC is keeping most of there assets near New Reykjavik and locale authorities are more mindful then most to travel in this kind of weather. Our outfit should be at the rendezvous point in less then ten days assuming the upper ecehelon hasn't dropped ties with us yet."; name = "Operation Progress/M-53"},/turf/simulated/floor/tiled/steel,/area/submap/Blackshuttledown) +"bO" = (/obj/structure/table/steel,/obj/item/weapon/paper_bin,/turf/simulated/floor/tiled/steel,/area/submap/Blackshuttledown) +"bP" = (/obj/machinery/light,/turf/simulated/floor/tiled/steel,/area/submap/Blackshuttledown) +"bQ" = (/obj/structure/closet/toolcloset,/turf/simulated/floor/tiled/yellow,/area/submap/Blackshuttledown) +"bR" = (/obj/machinery/portable_atmospherics/canister/empty/oxygen,/turf/simulated/floor/tiled/yellow,/area/submap/Blackshuttledown) +"bS" = (/obj/machinery/atmospherics/pipe/tank/oxygen,/obj/machinery/light/small{dir = 4; pixel_y = 0},/turf/simulated/floor/tiled/yellow,/area/submap/Blackshuttledown) +"bT" = (/obj/machinery/light{icon_state = "tube1"; dir = 8},/obj/effect/floor_decal/borderfloor{dir = 10},/turf/simulated/floor/tiled/steel,/area/submap/Blackshuttledown) +"bU" = (/obj/structure/bed/chair/office/dark,/obj/effect/floor_decal/borderfloor{dir = 6},/turf/simulated/floor/tiled/steel,/area/submap/Blackshuttledown) +"bV" = (/obj/structure/table/steel,/turf/simulated/floor/tiled/steel_grid,/area/submap/Blackshuttledown) +"bW" = (/obj/effect/floor_decal/borderfloor/corner{dir = 4},/obj/effect/floor_decal/borderfloor/corner{dir = 4},/turf/simulated/floor/tiled/steel,/area/submap/Blackshuttledown) +"bX" = (/obj/machinery/light{dir = 4; icon_state = "tube1"; pixel_x = 0},/obj/effect/floor_decal/borderfloor{dir = 5},/turf/simulated/floor/tiled/steel,/area/submap/Blackshuttledown) +"bY" = (/obj/structure/bed,/obj/item/weapon/bedsheet,/turf/simulated/floor/tiled/steel,/area/submap/Blackshuttledown) +"bZ" = (/obj/machinery/door/airlock,/turf/simulated/floor/tiled/hydro,/area/submap/Blackshuttledown) +"ca" = (/turf/simulated/floor/tiled/hydro,/area/submap/Blackshuttledown) +"cb" = (/mob/living/simple_mob/mechanical/viscerator,/turf/simulated/floor/tiled/steel_grid,/area/submap/Blackshuttledown) +"cc" = (/obj/structure/table/steel,/obj/item/weapon/gun/projectile/pistol,/obj/machinery/light/small{dir = 4; pixel_y = 0},/turf/simulated/floor/tiled/steel_grid,/area/submap/Blackshuttledown) +"cd" = (/obj/effect/floor_decal/borderfloor{dir = 6},/turf/simulated/floor/tiled/steel,/area/submap/Blackshuttledown) +"ce" = (/obj/structure/bed,/obj/item/weapon/bedsheet,/obj/structure/bed,/turf/simulated/floor/tiled/steel,/area/submap/Blackshuttledown) +"cf" = (/obj/machinery/light/small{dir = 4; pixel_y = 0},/turf/simulated/floor/tiled/hydro,/area/submap/Blackshuttledown) +"cg" = (/mob/living/simple_mob/mechanical/viscerator,/mob/living/simple_mob/mechanical/viscerator,/turf/simulated/floor/tiled/steel_grid,/area/submap/Blackshuttledown) +"ch" = (/obj/structure/table/steel,/obj/random/energy,/turf/simulated/floor/tiled/steel_grid,/area/submap/Blackshuttledown) +"ci" = (/obj/structure/toilet{dir = 1},/turf/simulated/floor/tiled/hydro,/area/submap/Blackshuttledown) +"cj" = (/obj/machinery/light,/obj/structure/table/rack,/obj/item/clothing/head/helmet/space,/obj/item/clothing/head/helmet/space,/obj/item/clothing/head/helmet/space,/obj/item/clothing/head/helmet/space,/obj/item/clothing/suit/space,/obj/item/clothing/suit/space,/obj/item/clothing/suit/space,/obj/item/clothing/suit/space,/obj/effect/floor_decal/borderfloor{dir = 10},/turf/simulated/floor/tiled/steel,/area/submap/Blackshuttledown) +"ck" = (/obj/structure/dispenser/oxygen,/obj/effect/floor_decal/borderfloor{dir = 6},/turf/simulated/floor/tiled/steel,/area/submap/Blackshuttledown) +"cl" = (/obj/structure/table/woodentable,/obj/random/projectile,/turf/simulated/floor/tiled/steel,/area/submap/Blackshuttledown) +"cm" = (/obj/structure/bed,/obj/item/weapon/bedsheet,/obj/machinery/light,/turf/simulated/floor/tiled/steel,/area/submap/Blackshuttledown) +"cn" = (/obj/structure/table/woodentable,/turf/simulated/floor/tiled/steel,/area/submap/Blackshuttledown) +"co" = (/obj/structure/bed,/obj/item/weapon/bedsheet,/obj/item/toy/plushie/spider,/turf/simulated/floor/tiled/steel,/area/submap/Blackshuttledown) +"cp" = (/turf/template_noop,/turf/simulated/shuttle/wall/dark{icon_state = "dark5"; name = "Unknown Shuttle"},/area/submap/Blackshuttledown) +"cq" = (/turf/template_noop,/turf/simulated/shuttle/wall/dark{icon_state = "dark9"; name = "Unknown Shuttle"},/area/submap/Blackshuttledown) +"cr" = (/obj/effect/floor_decal/borderfloor{dir = 4},/mob/living/simple_mob/humanoid/merc/melee/sword/poi,/turf/simulated/floor/tiled/steel,/area/submap/Blackshuttledown) +"cs" = (/obj/effect/floor_decal/borderfloor{dir = 4},/mob/living/simple_mob/humanoid/merc/ranged/laser/poi,/turf/simulated/floor/tiled/steel,/area/submap/Blackshuttledown) (1,1,1) = {" -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 -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -"} -(2,1,1) = {" -aa -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -aa -"} -(3,1,1) = {" -aa -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -af -ab -ab -ab -ab -ab -ab -ab -ab -ab -af -ab -ab -ab -ab -ab -ab -ad -ab -ab -ab -ab -aa -"} -(4,1,1) = {" -aa -ab -ab -ab -af -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -af -ab -ad -ad -ad -ab -ab -ab -aa -"} -(5,1,1) = {" -aa -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ad -ad -ad -ad -ab -af -ab -aa -"} -(6,1,1) = {" -aa -ab -ab -ab -ad -ab -ab -ab -ab -af -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -aa -"} -(7,1,1) = {" -aa -ac -ab -ab -ad -ad -ab -ab -ab -ab -ab -ab -ab -aH -aj -bq -bx -bx -bG -aj -av -ab -ab -ab -ab -ab -ab -ab -ac -ab -ab -ab -ab -ab -aa -"} -(8,1,1) = {" -aa -ab -ae -ab -ad -ad -ad -ab -ab -ab -ab -ab -aH -aj -bg -br -br -br -br -bJ -aj -av -ab -ab -ab -ab -ab -ab -ab -ab -ac -ab -ad -ab -aa -"} -(9,1,1) = {" -aa -ab -ab -ab -ab -ad -ad -ai -aj -aj -av -aH -aj -bb -bh -bl -bl -bl -bl -bF -bT -aj -av -aH -aj -aj -cp -ab -ab -ab -ab -ad -ad -ad -aa -"} -(10,1,1) = {" -aa -ab -ab -ab -ab -ab -ab -aj -aj -aj -aj -aj -aQ -bc -az -az -aK -aS -az -bK -bU -aQ -aj -aj -aj -aj -aj -ab -ab -ab -ad -ad -ad -ad -aa -"} -(11,1,1) = {" -aa -ab -ab -ab -ab -ac -af -aj -aj -aj -aj -aj -aj -aj -aj -aj -by -bE -aj -aj -aj -aj -aj -aj -aj -aj -aj -af -ab -ab -ab -af -ab -ab -aa -"} -(12,1,1) = {" -aa -ab -ab -ab -ab -ab -ab -aj -aj -aj -aw -aI -aw -bd -bi -bs -bh -bF -bs -bL -bd -aw -cb -cg -aj -aj -aj -ab -af -ab -ab -ab -ab -ac -aa -"} -(13,1,1) = {" -aa -ab -ab -ab -af -ab -ab -ak -aj -aj -ax -aJ -aR -aj -aL -bl -bl -bl -bl -aT -aj -bV -cc -ch -aj -aj -cq -ab -ab -ae -ab -ab -ab -ab -aa -"} -(14,1,1) = {" -aa -ab -ab -ab -ab -ab -ab -ab -aj -aj -aj -aj -aj -aj -aL -bl -bz -bl -bl -aT -aj -aj -aj -aj -aj -aj -ab -ab -ab -ab -ab -ab -ab -ab -aa -"} -(15,1,1) = {" -aa -ab -ab -ad -ab -ab -ab -ab -aj -an -ay -ay -ay -ay -bh -bl -bl -bl -bl -bF -ay -ay -ay -ay -cj -aj -ab -ab -ab -ab -ab -af -ab -ab -aa -"} -(16,1,1) = {" -aa -ad -ad -ad -ab -ag -ag -ag -aj -ao -az -aK -aS -az -az -bt -bl -bl -bt -bM -az -bW -aS -EI -ck -aj -ag -ag -ag -ab -ab -ab -ab -ab -aa -"} -(17,1,1) = {" -aa -ad -ad -ab -ab -ag -ah -ab -aj -aj -aj -aL -aT -aj -aj -aj -bA -bA -aj -aj -aj -aL -aT -aj -aj -aj -SN -ab -ag -ab -ab -ab -ab -ab -aa -"} -(18,1,1) = {" -aa -ab -ab -ab -ab -ag -ab -ab -ab -ap -aA -aL -aT -aj -bj -bl -bl -bl -bl -bN -aj -aL -aT -aA -ap -ab -ab -ab -ag -ab -ab -ab -ab -ab -aa -"} -(19,1,1) = {" -aa -ac -ab -ab -ab -ag -ab -ab -ab -ap -aA -aM -aU -aj -bk -bl -bl -bl -bl -bO -aj -bX -cd -aA -ap -ab -ab -ab -ag -ab -ab -ab -af -ab -aa -"} -(20,1,1) = {" -aa -ab -ab -af -ab -ag -ab -SN -aj -aj -aj -aj -aj -aj -bl -bu -bB -bC -bu -bl -aj -aj -aj -aj -aj -aj -ab -ah -ag -ab -ab -ac -ab -ab -aa -"} -(21,1,1) = {" -aa -ab -ab -ab -ab -ag -ag -ag -aj -aq -aB -aB -aV -aj -bm -bu -bC -bC -bu -bP -aj -bY -ce -bY -bY -aj -ag -ag -ag -ab -ab -ab -ad -ab -aa -"} -(22,1,1) = {" -aa -ab -ab -ab -ab -ab -ab -ab -aj -ar -aC -aN -aW -aj -bl -bu -bC -bC -bu -bn -aj -bl -bl -bl -cl -aj -ab -ab -ab -ab -ab -ad -ad -ab -aa -"} -(23,1,1) = {" -aa -ab -ab -ab -ab -ab -ab -ab -aj -as -aD -aN -aE -be -bn -bl -bl -bl -bl -bl -bA -bl -bY -bY -cm -aj -ab -ab -ab -ab -ad -ad -ad -ab -aa -"} -(24,1,1) = {" -aa -ab -ab -af -ab -ab -ab -ab -aj -at -aE -aE -aX -aj -bl -bl -bl -bl -bl -bl -aj -bl -bl -bl -cn -aj -ab -af -ab -ad -ad -ad -ad -ad -aa -"} -(25,1,1) = {" -aa -ac -ab -ab -ab -ab -ab -af -aj -au -aE -aO -aY -aj -aj -aj -bD -bD -aj -aj -aj -bl -bY -bY -co -aj -cp -ab -ab -ad -ad -af -ab -ae -aa -"} -(26,1,1) = {" -aa -ab -ab -ab -ab -ab -ab -ai -aj -aj -aE -aD -aZ -aj -bo -bv -bl -bl -bH -bQ -aj -bZ -aj -aj -aj -aj -aj -af -ac -ab -ab -ab -ab -ab -aa -"} -(27,1,1) = {" -aa -ab -ab -ae -ab -ac -ab -aj -aj -aj -aF -aP -ba -aj -bo -bl -bl -bl -bl -bR -aj -ca -cf -ci -aj -aj -aj -ab -ab -ab -ab -ab -ab -ac -aa -"} -(28,1,1) = {" -aa -ab -ab -ab -ab -ab -ab -aj -aj -aj -aj -aj -aj -aj -bp -bl -bl -bl -bl -bS -aj -aj -aj -aj -aj -aj -aj -ab -ab -ab -ab -ab -ab -af -aa -"} -(29,1,1) = {" -aa -ab -ab -ab -ab -af -ab -aj -aj -aj -aj -aG -ab -bf -aj -bw -bw -bw -bI -aj -aG -ab -bf -aj -aj -aj -aj -ab -ad -ad -ab -ab -ab -ab -aa -"} -(30,1,1) = {" -aa -ab -ad -ad -ad -ab -ab -aj -aj -aj -aG -ab -ab -ab -bf -al -al -al -al -aG -ab -ab -ab -bf -al -al -cq -ad -ad -ad -ad -ab -ab -ab -aa -"} -(31,1,1) = {" -aa -ab -af -ad -ad -ad -ab -ak -al -al -ab -ab -ab -ab -ab -am -am -am -am -ab -ab -ab -af -ab -am -am -ab -ad -ad -ad -ad -ab -ab -ab -aa -"} -(32,1,1) = {" -aa -ab -ab -ab -ab -ab -ab -ab -am -am -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ad -ad -ad -ab -ab -af -ab -aa -"} -(33,1,1) = {" -aa -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -af -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -aa -"} -(34,1,1) = {" -aa -ab -ac -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -aa -"} -(35,1,1) = {" -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 -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -"} +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaabababababacababababababababadadabacabababababacabababababababababaa +aaababababababaeabababababababadadababababababababababababadafababacaa +aaabababababababababababababadadabababafabababafababaeababadadabababaa +aaababafabadadadababababafababababababababababababababababadadabababaa +aaabababababadadadabacababababagagagagagagabababababacabafabadabababaa +aaababababababadadabafababababagahabababagabababababababababababababaa +aaabababababababaiajajajakababagabababbKagabababafaiajajajajakabababaa +aaabababababababajajajajajajajajajababajajajajajajajajajajajalamababaa +aaababababafababajajajajajajanaoajapapajaqarasatauajajajajajalamababaa +aaabababababababavajajawaxajayazajaAaAajaBaCaDaEaEaEaFajajaGababababaa +aaabababababababaHajajaIaJajayaKaLaLaMajaBaNaNaEaOaDaPajaGabababababaa +aaabafababababaHajaQajawaRajayaSaTaTaUajaVaWaEaXaYaZbaajababababafabaa +aaabababababaHajbbbcajbdajajayazajajajajajajbeajajajajajbfabababababaa +aaabababababajbgbhazajbiaLaLbhazajbjbkblbmblbnblajbobobpajbfababababaa +aaabababababbqbrblazajbsblblblbtajblblbububublblajbvblblbwalamabababaa +aaabababababbxbrblaKbybhblbzblblbAblblbBbCbCblblbDblblblbwalamabababaa +aaabababababbxbrblaSbEbFblblblblbAblblbCbCbCblblbDblblblbwalamabababaa +aaabababababbGbrblazajbsblblblbtajblblbububublblajbHblblbIalamabababaa +aaabababababajbJbFcsajbLaTaTbFbMajbNbOblbPbnblblajbQbRbSajaGababababaa +aaabababababavajbTbUajbdajajayazajajajajajajbAajajajajajaGabababababaa +aaababababababavajaQajawbVajaybWaLaLbXajbYblblblblbZcaajababababababaa +aaabafabababababavajajcbccajayaSaTaTcdajceblbYblbYajcfajbfabafabababaa +aaabababababababaHajajcgchajaycrajaAaAajbYblbYblbYajciajajbfababababaa +aaabababababababajajajajajajcjckajapapajbYclcmcncoajajajajalamabababaa +aaabababababababajajajajajajajajajababajajajajajajajajajajalamabababaa +aaababafababababcpajajajcqababagbKabababagabababcpajajajajcqababababaa +aaabababadabababababafababababagabababahagababafabafabababadadadababaa +aaababadadabacababababafabababagagagagagagababababacababadadadadababaa +aaabadadadabababababababaeababababababababababadadabababadadadadababaa +aaababadadababacabadababababababababababababadadadababababadadabababaa +aaabababababababadadafabababafababababacabadadadafabababababababababaa +aaabababafababadadadababababababababafabadadadadabababababababafababaa +aaabababababababadadabacabababababababababababadaeabacafababababababaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +"} \ No newline at end of file diff --git a/maps/submaps/surface_submaps/wilderness/Boombase.dmm b/maps/submaps/surface_submaps/wilderness/Boombase.dmm index e8acd62473..438cd0a713 100644 --- a/maps/submaps/surface_submaps/wilderness/Boombase.dmm +++ b/maps/submaps/surface_submaps/wilderness/Boombase.dmm @@ -13,7 +13,7 @@ "am" = (/obj/effect/decal/cleanable/dirt,/turf/simulated/floor/tiled/steel,/area/submap/BoomBase) "an" = (/obj/effect/decal/cleanable/dirt,/obj/effect/spider,/obj/item/weapon/material/shard,/turf/simulated/floor/tiled/steel,/area/submap/BoomBase) "ao" = (/turf/simulated/floor/tiled/steel,/area/submap/BoomBase) -"ap" = (/mob/living/simple_animal/hostile/giant_spider/phorogenic{returns_home = 1},/turf/simulated/floor/tiled/steel,/area/submap/BoomBase) +"ap" = (/mob/living/simple_mob/animal/giant_spider/phorogenic,/turf/simulated/floor/tiled/steel,/area/submap/BoomBase) "aq" = (/obj/machinery/portable_atmospherics/canister/empty/phoron,/turf/simulated/floor/tiled/steel{ icon_state = "steel_dirty"},/area/submap/BoomBase) "ar" = (/obj/machinery/portable_atmospherics/canister/empty/phoron,/obj/item/weapon/material/shard,/turf/simulated/floor/tiled/steel{ icon_state = "steel_dirty"},/area/submap/BoomBase) "as" = (/obj/item/weapon/material/shard,/turf/simulated/floor/plating,/area/submap/BoomBase) @@ -34,7 +34,7 @@ "aH" = (/obj/effect/decal/cleanable/ash,/turf/simulated/floor/outdoors/dirt,/area/submap/BoomBase) "aI" = (/obj/random/mob/spider/mutant,/turf/simulated/floor/outdoors/dirt,/area/submap/BoomBase) "aJ" = (/obj/structure/table,/turf/simulated/floor/tiled/steel,/area/submap/BoomBase) -"aK" = (/obj/effect/decal/cleanable/dirt,/mob/living/simple_animal/hostile/giant_spider/phorogenic{returns_home = 1},/turf/simulated/floor/tiled/steel,/area/submap/BoomBase) +"aK" = (/obj/effect/decal/cleanable/dirt,/mob/living/simple_mob/animal/giant_spider/phorogenic,/turf/simulated/floor/tiled/steel,/area/submap/BoomBase) "aL" = (/turf/simulated/floor/tiled/steel{ icon_state = "burned2"},/area/submap/BoomBase) "aM" = (/turf/simulated/floor/outdoors/rocks,/area/submap/BoomBase) "aN" = (/obj/effect/decal/cleanable/dirt,/obj/structure/table/standard,/obj/item/weapon/tank/phoron,/obj/item/weapon/fuel_assembly/phoron,/turf/simulated/floor/tiled/steel,/area/submap/BoomBase) diff --git a/maps/submaps/surface_submaps/wilderness/CaveS.dmm b/maps/submaps/surface_submaps/wilderness/CaveS.dmm index e967b39617..898ade189a 100644 --- a/maps/submaps/surface_submaps/wilderness/CaveS.dmm +++ b/maps/submaps/surface_submaps/wilderness/CaveS.dmm @@ -1,1910 +1,83 @@ -//MAP CONVERTED BY dmm2tgm.py THIS HEADER COMMENT PREVENTS RECONVERSION, DO NOT REMOVE -"a" = ( -/turf/template_noop, -/area/template_noop) -"b" = ( -/turf/template_noop, -/area/submap/CaveS) -"c" = ( -/obj/item/ammo_casing/a45, -/turf/template_noop, -/area/submap/CaveS) -"d" = ( -/turf/simulated/mineral/ignore_mapgen, -/area/submap/CaveS) -"e" = ( -/obj/item/ammo_casing/a45, -/obj/item/weapon/reagent_containers/food/snacks/xenomeat/spidermeat, -/turf/template_noop, -/area/submap/CaveS) -"f" = ( -/obj/random/landmine, -/turf/template_noop, -/area/submap/CaveS) -"g" = ( -/obj/item/ammo_casing/a45, -/obj/random/landmine, -/turf/template_noop, -/area/submap/CaveS) -"h" = ( -/obj/random/landmine, -/turf/simulated/floor/outdoors/dirt{ - outdoors = 0 - }, -/area/submap/CaveS) -"i" = ( -/obj/effect/spider/stickyweb, -/turf/simulated/floor/outdoors/dirt{ - outdoors = 0 - }, -/area/submap/CaveS) -"j" = ( -/obj/item/ammo_casing/a45, -/obj/item/ammo_casing/a45, -/turf/template_noop, -/area/submap/CaveS) -"k" = ( -/turf/simulated/floor/outdoors/dirt{ - outdoors = 0 - }, -/area/submap/CaveS) -"l" = ( -/obj/item/weapon/reagent_containers/food/snacks/xenomeat/spidermeat, -/turf/template_noop, -/area/submap/CaveS) -"m" = ( -/obj/effect/spider/stickyweb, -/turf/simulated/floor/outdoors/dirt, -/area/submap/CaveS) -"n" = ( -/obj/item/clothing/accessory/storage/webbing, -/obj/item/weapon/material/knife/tacknife/combatknife, -/turf/simulated/floor/outdoors/dirt{ - outdoors = 0 - }, -/area/submap/CaveS) -"o" = ( -/mob/living/simple_animal/hostile/giant_spider, -/turf/simulated/floor/outdoors/dirt{ - outdoors = 0 - }, -/area/submap/CaveS) -"p" = ( -/obj/effect/decal/cleanable/cobweb, -/turf/simulated/floor/outdoors/dirt{ - outdoors = 0 - }, -/area/submap/CaveS) -"q" = ( -/mob/living/simple_animal/hostile/giant_spider/lurker, -/turf/simulated/floor/outdoors/dirt{ - outdoors = 0 - }, -/area/submap/CaveS) -"r" = ( -/obj/effect/decal/cleanable/cobweb2, -/turf/simulated/floor/outdoors/dirt{ - outdoors = 0 - }, -/area/submap/CaveS) -"s" = ( -/mob/living/simple_animal/hostile/giant_spider/webslinger, -/turf/simulated/floor/outdoors/dirt{ - outdoors = 0 - }, -/area/submap/CaveS) -"t" = ( -/obj/effect/decal/cleanable/cobweb2, -/mob/living/simple_animal/hostile/giant_spider/lurker, -/turf/simulated/floor/outdoors/dirt{ - outdoors = 0 - }, -/area/submap/CaveS) -"u" = ( -/turf/simulated/floor/outdoors/grass/sif/forest, -/area/submap/CaveS) -"v" = ( -/mob/living/simple_animal/hostile/giant_spider/lurker, -/turf/simulated/floor/outdoors/dirt, -/area/submap/CaveS) -"x" = ( -/obj/structure/flora/tree/sif, -/turf/simulated/floor/outdoors/grass/sif/forest, -/area/submap/CaveS) -"y" = ( -/obj/random/landmine, -/turf/simulated/floor/outdoors/grass/sif/forest, -/area/submap/CaveS) -"z" = ( -/turf/simulated/floor, -/area/submap/CaveS) -"A" = ( -/obj/structure/closet/crate, -/obj/item/stack/cable_coil, -/obj/item/stack/cable_coil, -/obj/item/weapon/storage/toolbox, -/obj/random/toolbox, -/turf/simulated/floor, -/area/submap/CaveS) -"B" = ( -/obj/structure/loot_pile/maint/technical, -/turf/simulated/floor, -/area/submap/CaveS) -"C" = ( -/obj/structure/table/woodentable, -/turf/simulated/floor, -/area/submap/CaveS) -"E" = ( -/obj/machinery/power/port_gen/pacman, -/obj/structure/cable{ - icon_state = "0-2"; - d2 = 2 - }, -/turf/simulated/floor, -/area/submap/CaveS) -"F" = ( -/turf/simulated/wall, -/area/submap/CaveS) -"G" = ( -/obj/structure/closet/crate, -/obj/item/weapon/reagent_containers/hypospray, -/obj/item/weapon/reagent_containers/glass/bottle/stoxin, -/obj/item/weapon/reagent_containers/glass/bottle/antitoxin, -/obj/item/weapon/reagent_containers/pill/antitox, -/obj/item/weapon/reagent_containers/pill/antitox, -/obj/item/weapon/reagent_containers/pill/antitox, -/obj/item/weapon/reagent_containers/pill/paracetamol, -/obj/random/firstaid, -/turf/simulated/floor, -/area/submap/CaveS) -"H" = ( -/obj/structure/cable{ - d1 = 1; - d2 = 2; - icon_state = "1-2"; - pixel_y = 0 - }, -/turf/simulated/floor, -/area/submap/CaveS) -"I" = ( -/obj/structure/closet/crate, -/obj/random/contraband, -/obj/random/contraband, -/obj/random/contraband, -/obj/random/energy, -/obj/item/weapon/material/star, -/obj/item/weapon/material/star, -/obj/item/weapon/material/star, -/obj/item/weapon/material/star, -/obj/item/weapon/material/star, -/turf/simulated/floor, -/area/submap/CaveS) -"J" = ( -/obj/effect/spider/stickyweb, -/mob/living/simple_animal/hostile/giant_spider/lurker, -/turf/simulated/floor/outdoors/dirt{ - outdoors = 0 - }, -/area/submap/CaveS) -"K" = ( -/obj/structure/cable{ - d1 = 1; - d2 = 4; - icon_state = "1-4" - }, -/turf/simulated/floor, -/area/submap/CaveS) -"L" = ( -/obj/structure/cable{ - d1 = 4; - d2 = 8; - icon_state = "4-8"; - pixel_x = 0 - }, -/turf/simulated/floor, -/area/submap/CaveS) -"M" = ( -/obj/machinery/computer/communications, -/obj/structure/cable{ - d2 = 8; - icon_state = "0-8" - }, -/turf/simulated/floor, -/area/submap/CaveS) -"N" = ( -/obj/structure/loot_pile/maint/boxfort, -/turf/simulated/floor, -/area/submap/CaveS) -"P" = ( -/obj/random/mob/spider/mutant, -/turf/simulated/floor/outdoors/dirt{ - outdoors = 0 - }, -/area/submap/CaveS) -"V" = ( -/obj/random/mob/spider, -/turf/simulated/floor/outdoors/dirt{ - outdoors = 0 - }, -/area/submap/CaveS) +"a" = (/turf/template_noop,/area/template_noop) +"b" = (/turf/template_noop,/area/submap/CaveS) +"c" = (/obj/item/ammo_casing/a45,/turf/template_noop,/area/submap/CaveS) +"d" = (/turf/simulated/mineral/ignore_mapgen,/area/submap/CaveS) +"e" = (/obj/item/ammo_casing/a45,/obj/item/weapon/reagent_containers/food/snacks/xenomeat/spidermeat,/turf/template_noop,/area/submap/CaveS) +"f" = (/obj/random/landmine,/turf/template_noop,/area/submap/CaveS) +"g" = (/obj/item/ammo_casing/a45,/obj/random/landmine,/turf/template_noop,/area/submap/CaveS) +"h" = (/obj/random/landmine,/turf/simulated/floor/outdoors/dirt{outdoors = 0},/area/submap/CaveS) +"i" = (/obj/effect/spider/stickyweb,/turf/simulated/floor/outdoors/dirt{outdoors = 0},/area/submap/CaveS) +"j" = (/obj/item/ammo_casing/a45,/obj/item/ammo_casing/a45,/turf/template_noop,/area/submap/CaveS) +"k" = (/turf/simulated/floor/outdoors/dirt{outdoors = 0},/area/submap/CaveS) +"l" = (/obj/item/weapon/reagent_containers/food/snacks/xenomeat/spidermeat,/turf/template_noop,/area/submap/CaveS) +"m" = (/obj/effect/spider/stickyweb,/turf/simulated/floor/outdoors/dirt,/area/submap/CaveS) +"n" = (/obj/item/clothing/accessory/storage/webbing,/obj/item/weapon/material/knife/tacknife/combatknife,/turf/simulated/floor/outdoors/dirt{outdoors = 0},/area/submap/CaveS) +"o" = (/mob/living/simple_mob/animal/giant_spider,/turf/simulated/floor/outdoors/dirt{outdoors = 0},/area/submap/CaveS) +"p" = (/obj/effect/decal/cleanable/cobweb,/turf/simulated/floor/outdoors/dirt{outdoors = 0},/area/submap/CaveS) +"q" = (/obj/random/mob/spider,/turf/simulated/floor/outdoors/dirt{outdoors = 0},/area/submap/CaveS) +"r" = (/mob/living/simple_mob/animal/giant_spider/lurker,/turf/simulated/floor/outdoors/dirt{outdoors = 0},/area/submap/CaveS) +"s" = (/obj/effect/decal/cleanable/cobweb2,/turf/simulated/floor/outdoors/dirt{outdoors = 0},/area/submap/CaveS) +"t" = (/mob/living/simple_mob/animal/giant_spider/webslinger,/turf/simulated/floor/outdoors/dirt{outdoors = 0},/area/submap/CaveS) +"u" = (/obj/effect/decal/cleanable/cobweb2,/mob/living/simple_mob/animal/giant_spider/lurker,/turf/simulated/floor/outdoors/dirt{outdoors = 0},/area/submap/CaveS) +"v" = (/turf/simulated/floor/outdoors/grass/sif/forest,/area/submap/CaveS) +"w" = (/obj/random/mob/spider/mutant,/turf/simulated/floor/outdoors/dirt{outdoors = 0},/area/submap/CaveS) +"x" = (/mob/living/simple_mob/animal/giant_spider/lurker,/turf/simulated/floor/outdoors/dirt,/area/submap/CaveS) +"y" = (/obj/structure/flora/tree/sif,/turf/simulated/floor/outdoors/grass/sif/forest,/area/submap/CaveS) +"z" = (/obj/random/landmine,/turf/simulated/floor/outdoors/grass/sif/forest,/area/submap/CaveS) +"A" = (/turf/simulated/floor,/area/submap/CaveS) +"B" = (/obj/structure/closet/crate,/obj/item/stack/cable_coil,/obj/item/stack/cable_coil,/obj/item/weapon/storage/toolbox,/obj/random/toolbox,/turf/simulated/floor,/area/submap/CaveS) +"C" = (/obj/structure/loot_pile/maint/technical,/turf/simulated/floor,/area/submap/CaveS) +"D" = (/obj/structure/table/woodentable,/turf/simulated/floor,/area/submap/CaveS) +"E" = (/obj/machinery/power/port_gen/pacman,/obj/structure/cable{icon_state = "0-2"; d2 = 2},/turf/simulated/floor,/area/submap/CaveS) +"F" = (/turf/simulated/wall,/area/submap/CaveS) +"G" = (/obj/structure/closet/crate,/obj/item/weapon/reagent_containers/hypospray,/obj/item/weapon/reagent_containers/glass/bottle/stoxin,/obj/item/weapon/reagent_containers/glass/bottle/antitoxin,/obj/item/weapon/reagent_containers/pill/antitox,/obj/item/weapon/reagent_containers/pill/antitox,/obj/item/weapon/reagent_containers/pill/antitox,/obj/item/weapon/reagent_containers/pill/paracetamol,/obj/random/firstaid,/turf/simulated/floor,/area/submap/CaveS) +"H" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; pixel_y = 0},/turf/simulated/floor,/area/submap/CaveS) +"I" = (/obj/structure/closet/crate,/obj/random/contraband,/obj/random/contraband,/obj/random/contraband,/obj/random/energy,/obj/item/weapon/material/star,/obj/item/weapon/material/star,/obj/item/weapon/material/star,/obj/item/weapon/material/star,/obj/item/weapon/material/star,/turf/simulated/floor,/area/submap/CaveS) +"J" = (/obj/effect/spider/stickyweb,/mob/living/simple_mob/animal/giant_spider/lurker,/turf/simulated/floor/outdoors/dirt{outdoors = 0},/area/submap/CaveS) +"K" = (/obj/structure/cable{d1 = 1; d2 = 4; icon_state = "1-4"},/turf/simulated/floor,/area/submap/CaveS) +"L" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0},/turf/simulated/floor,/area/submap/CaveS) +"M" = (/obj/machinery/computer/communications,/obj/structure/cable{d2 = 8; icon_state = "0-8"},/turf/simulated/floor,/area/submap/CaveS) +"N" = (/obj/structure/loot_pile/maint/boxfort,/turf/simulated/floor,/area/submap/CaveS) (1,1,1) = {" -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -"} -(2,1,1) = {" -a -b -b -b -b -b -b -b -b -b -b -b -b -b -b -b -b -b -b -b -b -b -b -b -b -b -b -b -b -b -b -b -b -b -b -b -b -b -b -a -"} -(3,1,1) = {" -a -b -b -b -b -b -b -b -b -b -b -b -b -b -b -b -b -b -d -d -d -d -d -d -d -d -d -d -d -d -d -d -d -b -b -b -b -b -b -a -"} -(4,1,1) = {" -a -b -b -b -b -b -b -b -b -b -b -b -b -b -d -d -d -d -d -d -d -d -d -d -d -d -d -d -d -d -d -d -d -d -d -d -b -b -b -a -"} -(5,1,1) = {" -a -b -b -b -b -b -b -b -b -b -b -d -d -d -d -d -d -d -d -d -d -d -d -d -u -u -d -d -u -u -d -d -d -d -d -d -d -d -d -a -"} -(6,1,1) = {" -a -b -b -b -b -b -b -b -b -d -d -d -d -d -d -d -d -d -d -d -d -d -d -u -x -u -u -u -u -u -u -d -d -d -d -d -d -d -d -a -"} -(7,1,1) = {" -a -b -b -b -b -b -b -b -b -d -d -d -d -d -d -o -i -d -d -d -d -d -d -u -u -y -u -u -u -u -u -d -d -d -d -d -d -d -b -a -"} -(8,1,1) = {" -a -b -b -b -b -b -b -b -b -d -d -d -d -d -d -k -k -k -d -d -d -d -u -u -u -u -u -u -u -u -u -x -d -d -d -d -d -d -b -a -"} -(9,1,1) = {" -a -b -b -b -b -b -b -b -b -d -d -d -d -d -n -k -k -V -d -d -d -d -u -u -u -u -x -y -u -u -u -u -d -d -d -d -d -b -b -a -"} -(10,1,1) = {" -a -b -b -b -b -b -b -b -b -d -d -d -d -d -d -k -k -k -k -k -d -d -d -d -d -u -u -u -u -u -u -k -u -d -d -d -d -b -b -a -"} -(11,1,1) = {" -a -b -b -b -b -b -b -b -b -b -d -d -d -d -k -k -k -k -k -k -k -d -d -d -d -d -i -k -u -k -k -k -i -d -d -d -d -b -b -a -"} -(12,1,1) = {" -a -b -b -b -b -b -b -b -b -b -d -d -d -d -k -k -k -k -k -k -k -s -d -d -d -d -d -k -k -k -k -d -d -d -d -d -d -b -b -a -"} -(13,1,1) = {" -a -b -b -b -b -b -b -b -b -b -d -d -d -d -i -k -q -d -k -k -k -k -d -d -d -d -d -k -k -d -v -d -d -d -d -d -d -d -b -a -"} -(14,1,1) = {" -a -b -b -b -b -b -b -b -b -b -b -d -d -d -d -d -d -d -d -r -k -k -d -d -d -d -d -k -k -d -d -d -d -d -d -d -d -d -d -a -"} -(15,1,1) = {" -a -b -b -b -b -b -b -b -b -c -b -b -d -d -d -d -d -d -d -d -k -k -P -k -k -d -d -k -k -d -d -d -d -d -d -d -d -d -d -a -"} -(16,1,1) = {" -a -b -b -b -b -b -b -b -b -b -b -b -b -d -d -d -b -b -d -d -k -k -k -k -k -k -k -k -i -d -d -d -d -d -d -d -d -d -d -a -"} -(17,1,1) = {" -a -b -b -b -b -b -c -b -b -b -b -b -b -b -b -b -b -d -d -d -k -k -d -d -q -k -k -k -d -d -d -d -d -d -d -d -d -d -d -a -"} -(18,1,1) = {" -a -b -b -b -b -b -b -b -b -b -b -b -b -b -b -b -d -d -d -d -k -k -d -d -d -k -k -d -d -d -d -i -J -k -d -d -d -d -b -a -"} -(19,1,1) = {" -a -b -b -b -b -b -b -b -b -b -j -c -b -b -d -d -d -d -d -d -k -k -d -d -d -k -k -k -d -d -d -k -k -k -k -d -d -d -b -a -"} -(20,1,1) = {" -a -b -b -b -b -b -b -b -b -g -b -b -b -b -d -d -d -d -d -p -k -k -v -d -d -k -k -k -i -d -k -k -k -k -i -d -d -b -b -a -"} -(21,1,1) = {" -a -b -b -b -b -b -b -b -b -b -b -l -b -d -d -d -d -d -d -k -k -k -d -d -d -d -k -k -k -k -k -k -k -k -d -d -d -b -b -a -"} -(22,1,1) = {" -a -b -b -b -b -b -b -b -b -b -f -b -d -d -d -d -d -d -d -V -k -k -d -d -d -d -k -k -k -h -k -k -k -k -d -d -d -d -d -a -"} -(23,1,1) = {" -a -b -b -b -c -b -b -b -f -b -b -d -d -d -d -d -d -d -d -k -k -k -d -d -d -d -h -k -k -k -i -d -d -d -d -d -d -d -b -a -"} -(24,1,1) = {" -a -b -b -b -b -b -c -b -b -h -k -m -d -d -d -d -d -d -d -k -k -k -d -d -d -d -i -i -h -k -d -d -d -d -d -d -d -d -b -a -"} -(25,1,1) = {" -a -b -b -b -b -b -c -e -d -i -k -k -m -d -d -d -d -d -d -k -k -k -d -d -d -d -d -d -k -k -k -k -k -d -d -d -d -d -d -a -"} -(26,1,1) = {" -a -b -b -b -b -b -c -d -d -d -d -i -k -d -d -p -k -k -h -k -k -k -i -d -d -d -d -d -k -k -k -k -k -k -P -d -d -d -d -a -"} -(27,1,1) = {" -a -b -b -b -b -b -d -d -d -d -d -i -k -h -k -k -k -k -k -d -d -k -k -k -d -d -d -k -k -k -z -z -z -k -k -q -d -d -d -a -"} -(28,1,1) = {" -a -b -b -b -b -b -d -d -d -d -d -d -k -k -k -k -k -d -d -d -d -t -k -k -d -d -k -k -k -z -E -H -K -k -k -k -d -d -d -a -"} -(29,1,1) = {" -a -b -b -b -b -b -d -d -d -d -d -d -d -m -k -k -k -d -d -d -d -d -k -k -d -q -k -z -z -C -F -F -L -z -z -k -d -d -d -a -"} -(30,1,1) = {" -a -b -b -b -b -b -d -d -d -d -d -d -d -d -k -k -k -d -d -d -d -d -k -k -d -k -k -z -z -C -F -F -M -z -N -d -d -d -b -a -"} -(31,1,1) = {" -a -b -b -b -b -b -d -d -d -d -d -d -d -d -k -k -k -d -d -p -h -k -k -V -d -d -k -A -z -z -G -I -z -z -d -d -d -b -b -a -"} -(32,1,1) = {" -a -b -b -b -b -b -b -d -d -d -d -d -d -d -k -k -k -k -k -k -k -k -k -d -d -d -k -k -B -z -P -k -z -d -d -d -b -b -b -a -"} -(33,1,1) = {" -a -b -b -b -b -b -b -d -d -d -d -d -d -d -d -V -d -r -k -d -d -d -d -d -d -d -d -k -k -k -k -k -d -d -d -d -b -b -b -a -"} -(34,1,1) = {" -a -b -b -b -b -b -b -b -d -d -d -d -d -d -d -d -d -d -d -d -d -d -d -d -d -d -d -k -d -k -k -d -d -d -d -b -b -b -b -a -"} -(35,1,1) = {" -a -b -b -b -b -b -b -b -d -d -d -d -d -d -d -d -d -d -d -d -d -d -d -d -d -d -d -d -d -d -d -d -d -d -d -b -b -b -b -a -"} -(36,1,1) = {" -a -b -b -b -b -b -b -d -d -d -d -d -b -b -d -d -d -d -d -d -d -d -d -d -d -d -b -d -d -d -d -d -d -d -b -b -b -b -b -a -"} -(37,1,1) = {" -a -b -b -b -b -b -b -d -d -d -d -b -b -b -b -b -d -d -d -d -d -d -d -d -b -b -b -b -b -b -d -d -b -b -b -b -b -b -b -a -"} -(38,1,1) = {" -a -b -b -b -b -b -b -b -b -b -b -b -b -b -b -b -b -b -d -d -d -d -d -b -b -b -b -b -b -b -b -b -b -b -b -b -b -b -b -a -"} -(39,1,1) = {" -a -b -b -b -b -b -b -b -b -b -b -b -b -b -b -b -b -b -b -b -d -d -b -b -b -b -b -b -b -b -b -b -b -b -b -b -b -b -b -a -"} -(40,1,1) = {" -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -"} +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +abbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbba +abbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbba +abbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbba +abbbbbbbbbbbbbbbbbbbbbcbbbbbbbbbbbbbbbba +abbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbba +abbbbbbbbbbbbbbbcbbbbbbcccdddddbbbbbbbba +abbbbbbbbbbbbbbbbbbbbbbbeddddddddbbddbba +abbbbbbbbbbbbbbbbbbbbbfbdddddddddddddbba +abbbbdddddbbbbcbbbbgbbbhiddddddddddddbba +abbbbddddddddbbbbbjbbfbkkddddddddddddbba +abbbddddddddddbbbbcblbdmkiidddddddddbbba +abbbdddddddddddbbbbbbdddmkkkdddddddbbbba +abbbddddddddddddbbbbddddddhkmddddddbbbba +abbdddddndkkidddbbddddddddkkkkkkddddbbba +abbdddokkkkkkdddbbdddddddpkkkkkkqdddbbba +abbdddikkkkkrddbbddddddddkkkkkkkdddddbba +abbddddkqkkkdddbdddddddddkkddddksddddbba +abdddddddkkkkddddddddddddhkddddkkdddddba +abdddddddkkkksdddddpkqkkkkddddpkddddddba +abddddddddkkkkkkkkkkkkkkkkddddhkddddddda +abdddddddddtkkkkkkkkkkkkkkkuddkkddddddda +abdddddvvdddddwkdddxdddddikkkkkkddddddba +abdddvvvvdddddkkddddddddddkkkkqddddddbba +abddvyvvvdddddkkrdddddddddddddddddddbbba +abddvvzvvvdddddkkkkkddddddddrkddddddbbba +abdddvvvyviddddkkkkkkkhidddkkkkkdddbbbba +abdddvvvzvkkkkkkkdkkkkkiddkkAABkkkddbbba +abddvvvvvvvkkkkidddikkkhkkkkAAACkdddbbba +abddvvvvvvkkddddddddkhkkkkkADDAAkkddbbba +abdddvvvvvkkxddddddkkkidkkAEFFGwkkdddbba +abdddddyvkkddddddikkkkddkkAHFFIkkddddbba +abdddddddviddddddJkkkkddkkAKLMAAddddbbba +abbddddddddddddddkkkkkdddkkkAAAdddddbbba +abbdddddddddddddddkidddddwkkANdddddbbbba +abbdddddddddddddddddddddddrkkddddbbbbbba +abbbdddddddddddddddddddddddddddbbbbbbbba +abbbddddbbbbdddddddbbdddddddddbbbbbbbbba +abbbddbbbbbbbddddbbbbdbbdddddbbbbbbbbbba +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +"} \ No newline at end of file diff --git a/maps/submaps/surface_submaps/wilderness/DJOutpost1.dmm b/maps/submaps/surface_submaps/wilderness/DJOutpost1.dmm index c7440cdaa1..6b85ef347a 100644 --- a/maps/submaps/surface_submaps/wilderness/DJOutpost1.dmm +++ b/maps/submaps/surface_submaps/wilderness/DJOutpost1.dmm @@ -6,7 +6,7 @@ "f" = (/obj/machinery/telecomms/relay/preset/ruskie,/turf/simulated/floor/wood,/area/submap/DJOutpost1) "g" = (/obj/structure/loot_pile/maint/technical,/turf/simulated/floor/wood,/area/submap/DJOutpost1) "h" = (/obj/structure/sign/goldenplaque{desc = "An award given to Sif Free Radio for media excellency. It looks fake."; name = "Best Radio Station 2558"; pixel_y = 30},/turf/simulated/floor/wood,/area/submap/DJOutpost1) -"i" = (/mob/living/simple_animal/hostile/giant_spider/frost{returns_home = 1},/turf/simulated/floor/wood,/area/submap/DJOutpost1) +"i" = (/mob/living/simple_mob/animal/giant_spider/frost,/turf/simulated/floor/wood,/area/submap/DJOutpost1) "j" = (/obj/effect/decal/remains,/obj/effect/decal/cleanable/blood,/obj/item/clothing/under/frontier,/obj/item/weapon/material/knife/tacknife/combatknife,/obj/random_multi/single_item/sfr_headset,/turf/simulated/floor/wood,/area/submap/DJOutpost1) "k" = (/obj/machinery/door/airlock/glass,/turf/simulated/floor/wood,/area/submap/DJOutpost1) "l" = (/obj/structure/table/steel_reinforced,/obj/item/device/radio/intercom{ icon_state = "intercom"; dir = 8},/turf/simulated/floor/wood,/area/submap/DJOutpost1) diff --git a/maps/submaps/surface_submaps/wilderness/DoomP.dmm b/maps/submaps/surface_submaps/wilderness/DoomP.dmm index bde323248c..b856b7a229 100644 --- a/maps/submaps/surface_submaps/wilderness/DoomP.dmm +++ b/maps/submaps/surface_submaps/wilderness/DoomP.dmm @@ -1,4258 +1,153 @@ -//MAP CONVERTED BY dmm2tgm.py THIS HEADER COMMENT PREVENTS RECONVERSION, DO NOT REMOVE -"aa" = ( -/turf/template_noop, -/area/template_noop) -"ab" = ( -/turf/template_noop, -/area/submap/DoomP) -"ac" = ( -/turf/simulated/floor/outdoors/rocks, -/area/submap/DoomP) -"ad" = ( -/turf/simulated/floor/outdoors/grass/sif/forest, -/area/submap/DoomP) -"ae" = ( -/mob/living/simple_animal/hostile/viscerator{ - returns_home = 1 - }, -/turf/template_noop, -/area/submap/DoomP) -"af" = ( -/turf/simulated/floor/water, -/area/submap/DoomP) -"ag" = ( -/obj/structure/flora/tree/sif, -/turf/template_noop, -/area/submap/DoomP) -"ah" = ( -/obj/random/landmine, -/turf/simulated/floor/outdoors/grass/sif/forest, -/area/submap/DoomP) -"ai" = ( -/mob/living/simple_animal/hostile/viscerator{ - returns_home = 1 - }, -/turf/simulated/floor/outdoors/grass/sif/forest, -/area/submap/DoomP) -"aj" = ( -/obj/effect/decal/cleanable/blood, -/obj/random/landmine, -/turf/simulated/floor/outdoors/grass/sif/forest, -/area/submap/DoomP) -"ak" = ( -/turf/simulated/floor/water/deep, -/area/submap/DoomP) -"al" = ( -/obj/effect/decal/cleanable/blood, -/turf/simulated/floor/outdoors/grass/sif/forest, -/area/submap/DoomP) -"am" = ( -/obj/random/landmine, -/turf/simulated/floor/outdoors/rocks, -/area/submap/DoomP) -"an" = ( -/obj/effect/decal/remains/mouse, -/turf/simulated/floor/outdoors/grass/sif/forest, -/area/submap/DoomP) -"ao" = ( -/obj/effect/decal/remains/deer, -/turf/simulated/floor/outdoors/grass/sif/forest, -/area/submap/DoomP) -"ap" = ( -/obj/effect/decal/remains/mouse, -/obj/random/landmine, -/turf/simulated/floor/outdoors/grass/sif/forest, -/area/submap/DoomP) -"aq" = ( -/obj/structure/flora/tree/sif, -/turf/simulated/floor/outdoors/grass/sif/forest, -/area/submap/DoomP) -"ar" = ( -/obj/machinery/light/small, -/turf/simulated/floor/outdoors/grass/sif/forest, -/area/submap/DoomP) -"as" = ( -/obj/machinery/porta_turret/poi, -/turf/simulated/floor/plating, -/area/submap/DoomP) -"at" = ( -/turf/simulated/wall/r_wall, -/area/submap/DoomP) -"au" = ( -/obj/structure/sign/warning/secure_area, -/turf/simulated/wall/r_wall, -/area/submap/DoomP) -"av" = ( -/obj/effect/floor_decal/industrial/warning, -/turf/simulated/floor/plating, -/area/submap/DoomP) -"aw" = ( -/obj/machinery/door/airlock/external, -/turf/simulated/floor/plating, -/area/submap/DoomP) -"ax" = ( -/obj/effect/floor_decal/borderfloor{ - dir = 9 - }, -/turf/simulated/floor/tiled, -/area/submap/DoomP) -"ay" = ( -/obj/structure/bed/chair, -/obj/effect/floor_decal/borderfloor{ - dir = 1 - }, -/turf/simulated/floor/tiled, -/area/submap/DoomP) -"az" = ( -/obj/effect/floor_decal/borderfloor{ - dir = 1 - }, -/turf/simulated/floor/tiled, -/area/submap/DoomP) -"aB" = ( -/obj/machinery/light/small{ - dir = 1 - }, -/obj/effect/floor_decal/borderfloor{ - dir = 1 - }, -/turf/simulated/floor/tiled, -/area/submap/DoomP) -"aC" = ( -/obj/machinery/vending/cigarette, -/obj/effect/floor_decal/borderfloor{ - dir = 5 - }, -/turf/simulated/floor/tiled, -/area/submap/DoomP) -"aD" = ( -/obj/machinery/light/small{ - dir = 8 - }, -/turf/simulated/floor/tiled, -/area/submap/DoomP) -"aE" = ( -/obj/machinery/power/smes/buildable/point_of_interest, -/obj/structure/cable/green{ - d2 = 4; - icon_state = "0-4" - }, -/turf/simulated/floor/plating, -/area/submap/DoomP) -"aF" = ( -/obj/machinery/power/smes/buildable/point_of_interest, -/obj/structure/cable/green{ - d2 = 4; - icon_state = "0-4" - }, -/obj/structure/cable/green{ - d1 = 4; - d2 = 8; - icon_state = "4-8" - }, -/turf/simulated/floor/plating, -/area/submap/DoomP) -"aG" = ( -/obj/machinery/power/apc{ - dir = 1; - name = "PAPC"; - pixel_x = 0; - pixel_y = 24 - }, -/obj/structure/cable/green{ - d2 = 8; - icon_state = "0-8" - }, -/turf/simulated/floor/tiled/techfloor/grid, -/area/submap/DoomP) -"aH" = ( -/obj/structure/cable{ - icon_state = "0-2"; - d2 = 2 - }, -/obj/machinery/power/port_gen/pacman, -/turf/simulated/floor/plating, -/area/submap/DoomP) -"aI" = ( -/obj/structure/table/standard, -/obj/random/toolbox, -/turf/simulated/floor/tiled/techfloor/grid, -/area/submap/DoomP) -"aJ" = ( -/obj/structure/table/standard, -/obj/item/stack/material/phoron{ - amount = 25 - }, -/turf/simulated/floor/tiled/techfloor/grid, -/area/submap/DoomP) -"aK" = ( -/obj/structure/closet/secure_closet/engineering_electrical, -/turf/simulated/floor/tiled/techfloor/grid, -/area/submap/DoomP) -"aL" = ( -/obj/structure/lattice, -/turf/simulated/floor/outdoors/rocks, -/area/submap/DoomP) -"aM" = ( -/obj/structure/bed/chair{ - dir = 4 - }, -/obj/effect/floor_decal/borderfloor{ - dir = 8 - }, -/turf/simulated/floor/tiled, -/area/submap/DoomP) -"aN" = ( -/obj/structure/table/standard, -/turf/simulated/floor/tiled, -/area/submap/DoomP) -"aO" = ( -/obj/structure/table/standard, -/obj/item/pizzabox, -/turf/simulated/floor/tiled, -/area/submap/DoomP) -"aP" = ( -/turf/simulated/floor/tiled, -/area/submap/DoomP) -"aQ" = ( -/obj/machinery/vending/snack, -/obj/effect/floor_decal/borderfloor{ - dir = 4 - }, -/turf/simulated/floor/tiled, -/area/submap/DoomP) -"aR" = ( -/obj/machinery/power/terminal{ - icon_state = "term"; - dir = 1 - }, -/obj/structure/cable{ - icon_state = "0-4"; - d2 = 4 - }, -/turf/simulated/floor/tiled/techfloor/grid, -/area/submap/DoomP) -"aS" = ( -/obj/machinery/power/terminal{ - icon_state = "term"; - dir = 1 - }, -/obj/structure/cable{ - icon_state = "0-4"; - d2 = 4 - }, -/obj/structure/cable{ - d1 = 4; - d2 = 8; - icon_state = "4-8"; - pixel_x = 0 - }, -/turf/simulated/floor/tiled/techfloor/grid, -/area/submap/DoomP) -"aT" = ( -/obj/structure/cable{ - d1 = 4; - d2 = 8; - icon_state = "4-8"; - pixel_x = 0 - }, -/mob/living/simple_animal/hostile/syndicate/melee/poi, -/turf/simulated/floor/tiled/techfloor/grid, -/area/submap/DoomP) -"aU" = ( -/obj/structure/cable{ - d1 = 1; - d2 = 8; - icon_state = "1-8" - }, -/turf/simulated/floor/tiled/techfloor/grid, -/area/submap/DoomP) -"aV" = ( -/turf/simulated/floor/tiled/techfloor/grid, -/area/submap/DoomP) -"aW" = ( -/obj/machinery/light/small, -/turf/simulated/floor/tiled/techfloor/grid, -/area/submap/DoomP) -"aX" = ( -/obj/structure/lattice, -/turf/simulated/floor/water, -/area/submap/DoomP) -"aY" = ( -/obj/machinery/light/small{ - dir = 8 - }, -/obj/effect/floor_decal/borderfloor{ - dir = 8 - }, -/turf/simulated/floor/tiled, -/area/submap/DoomP) -"aZ" = ( -/obj/machinery/vending/cola, -/obj/effect/floor_decal/borderfloor/corner{ - dir = 4 - }, -/turf/simulated/floor/tiled, -/area/submap/DoomP) -"ba" = ( -/obj/machinery/door/airlock/external, -/turf/simulated/floor/tiled, -/area/submap/DoomP) -"bb" = ( -/obj/machinery/door/airlock/engineering, -/turf/simulated/floor/tiled/techfloor/grid, -/area/submap/DoomP) -"bc" = ( -/obj/structure/sign/electricshock, -/turf/simulated/wall/r_wall, -/area/submap/DoomP) -"bd" = ( -/obj/effect/floor_decal/borderfloor{ - dir = 10 - }, -/turf/simulated/floor/tiled, -/area/submap/DoomP) -"be" = ( -/obj/effect/floor_decal/borderfloor, -/turf/simulated/floor/tiled, -/area/submap/DoomP) -"bf" = ( -/obj/machinery/light/small, -/obj/effect/floor_decal/borderfloor, -/turf/simulated/floor/tiled, -/area/submap/DoomP) -"bg" = ( -/obj/effect/floor_decal/borderfloor/corner{ - dir = 8 - }, -/mob/living/simple_animal/hostile/syndicate/ranged/laser/poi, -/turf/simulated/floor/tiled, -/area/submap/DoomP) -"bh" = ( -/obj/machinery/door/airlock/hatch, -/turf/simulated/floor/tiled, -/area/submap/DoomP) -"bi" = ( -/obj/machinery/light/small{ - dir = 1 - }, -/turf/simulated/floor/tiled, -/area/submap/DoomP) -"bj" = ( -/obj/machinery/door/airlock/highsecurity, -/turf/simulated/floor/tiled/techfloor, -/area/submap/DoomP) -"bk" = ( -/obj/machinery/door/airlock, -/turf/simulated/floor/tiled/white, -/area/submap/DoomP) -"bl" = ( -/turf/simulated/floor/tiled/techfloor, -/area/submap/DoomP) -"bm" = ( -/obj/structure/table/standard, -/turf/simulated/floor/tiled/techfloor, -/area/submap/DoomP) -"bn" = ( -/obj/structure/table/standard, -/obj/item/weapon/storage/box/syndie_kit/spy, -/turf/simulated/floor/tiled/techfloor, -/area/submap/DoomP) -"bo" = ( -/obj/structure/table/rack, -/obj/item/weapon/storage/box/smokes, -/turf/simulated/floor/tiled/techfloor, -/area/submap/DoomP) -"bp" = ( -/obj/structure/table/rack, -/obj/item/weapon/storage/box/handcuffs, -/turf/simulated/floor/tiled/techfloor, -/area/submap/DoomP) -"bq" = ( -/obj/structure/table/rack, -/obj/item/weapon/cell/device/weapon, -/obj/item/weapon/cell/device/weapon, -/turf/simulated/floor/tiled/techfloor, -/area/submap/DoomP) -"br" = ( -/obj/structure/table/rack, -/obj/random/energy, -/turf/simulated/floor/tiled/techfloor, -/area/submap/DoomP) -"bs" = ( -/obj/structure/table/rack, -/obj/item/weapon/gun/projectile/contender, -/obj/item/ammo_magazine/s357, -/obj/item/ammo_magazine/s357, -/turf/simulated/floor/tiled/techfloor, -/area/submap/DoomP) -"bt" = ( -/obj/structure/bed, -/obj/item/weapon/bedsheet, -/obj/item/toy/plushie/spider, -/obj/effect/floor_decal/corner/lime/full{ - dir = 8 - }, -/turf/simulated/floor/tiled/white, -/area/submap/DoomP) -"bu" = ( -/obj/structure/table/standard, -/obj/effect/floor_decal/corner/lime{ - dir = 5 - }, -/turf/simulated/floor/tiled/white, -/area/submap/DoomP) -"bv" = ( -/obj/structure/bed, -/obj/item/weapon/bedsheet, -/obj/effect/floor_decal/corner/lime{ - dir = 5 - }, -/turf/simulated/floor/tiled/white, -/area/submap/DoomP) -"bw" = ( -/obj/structure/table/standard, -/obj/item/device/flashlight/lamp, -/obj/effect/floor_decal/corner/lime{ - dir = 5 - }, -/turf/simulated/floor/tiled/white, -/area/submap/DoomP) -"bx" = ( -/obj/structure/table/standard, -/obj/structure/bedsheetbin, -/obj/effect/floor_decal/corner/lime{ - dir = 1 - }, -/turf/simulated/floor/tiled/white, -/area/submap/DoomP) -"by" = ( -/turf/simulated/floor/tiled/white, -/area/submap/DoomP) -"bz" = ( -/obj/machinery/light/small{ - dir = 1 - }, -/turf/simulated/floor/tiled/white, -/area/submap/DoomP) -"bA" = ( -/obj/structure/sink{ - dir = 4; - icon_state = "sink"; - pixel_x = 11; - pixel_y = 0 - }, -/obj/machinery/light/small{ - dir = 1 - }, -/turf/simulated/floor/tiled/white, -/area/submap/DoomP) -"bB" = ( -/obj/machinery/light/small, -/turf/simulated/floor/tiled/techfloor, -/area/submap/DoomP) -"bC" = ( -/obj/machinery/light/small{ - dir = 8 - }, -/obj/effect/floor_decal/corner/lime/full, -/turf/simulated/floor/tiled/white, -/area/submap/DoomP) -"bD" = ( -/obj/effect/floor_decal/corner/lime{ - dir = 10 - }, -/turf/simulated/floor/tiled/white, -/area/submap/DoomP) -"bE" = ( -/obj/machinery/light/small{ - dir = 4; - pixel_y = 0 - }, -/obj/effect/floor_decal/corner/lime{ - dir = 10 - }, -/turf/simulated/floor/tiled/white, -/area/submap/DoomP) -"bF" = ( -/obj/machinery/shower{ - dir = 1 - }, -/obj/structure/curtain/open/shower, -/turf/simulated/floor/tiled/white, -/area/submap/DoomP) -"bG" = ( -/obj/structure/toilet{ - dir = 1 - }, -/turf/simulated/floor/tiled/white, -/area/submap/DoomP) -"bH" = ( -/obj/structure/grille, -/obj/structure/window/reinforced{ - dir = 1 - }, -/obj/structure/window/reinforced, -/obj/machinery/door/firedoor/border_only, -/obj/structure/window/reinforced{ - dir = 8 - }, -/turf/simulated/floor/plating, -/area/submap/DoomP) -"bI" = ( -/obj/structure/grille, -/obj/structure/window/reinforced{ - dir = 1 - }, -/obj/structure/window/reinforced, -/obj/machinery/door/firedoor/border_only, -/turf/simulated/floor/plating, -/area/submap/DoomP) -"bJ" = ( -/obj/structure/grille, -/obj/structure/window/reinforced{ - dir = 1 - }, -/obj/structure/window/reinforced, -/obj/structure/window/reinforced{ - dir = 4 - }, -/obj/machinery/door/firedoor/border_only, -/turf/simulated/floor/plating, -/area/submap/DoomP) -"bK" = ( -/obj/structure/lattice, -/turf/simulated/floor/outdoors/grass/sif/forest, -/area/submap/DoomP) -"ta" = ( -/mob/living/simple_animal/hostile/syndicate/melee/poi, -/turf/simulated/floor/tiled/techfloor, -/area/submap/DoomP) -"ND" = ( -/obj/effect/floor_decal/borderfloor{ - dir = 1 - }, -/mob/living/simple_animal/hostile/syndicate/ranged/poi, -/turf/simulated/floor/tiled, -/area/submap/DoomP) +"aa" = (/turf/template_noop,/area/template_noop) +"ab" = (/turf/template_noop,/area/submap/DoomP) +"ac" = (/turf/simulated/floor/outdoors/rocks,/area/submap/DoomP) +"ad" = (/turf/simulated/floor/outdoors/grass/sif/forest,/area/submap/DoomP) +"ae" = (/mob/living/simple_mob/mechanical/viscerator,/turf/template_noop,/area/submap/DoomP) +"af" = (/turf/simulated/floor/water,/area/submap/DoomP) +"ag" = (/obj/structure/flora/tree/sif,/turf/template_noop,/area/submap/DoomP) +"ah" = (/obj/random/landmine,/turf/simulated/floor/outdoors/grass/sif/forest,/area/submap/DoomP) +"ai" = (/mob/living/simple_mob/mechanical/viscerator,/turf/simulated/floor/outdoors/grass/sif/forest,/area/submap/DoomP) +"aj" = (/obj/effect/decal/cleanable/blood,/obj/random/landmine,/turf/simulated/floor/outdoors/grass/sif/forest,/area/submap/DoomP) +"ak" = (/turf/simulated/floor/water/deep,/area/submap/DoomP) +"al" = (/obj/effect/decal/cleanable/blood,/turf/simulated/floor/outdoors/grass/sif/forest,/area/submap/DoomP) +"am" = (/obj/random/landmine,/turf/simulated/floor/outdoors/rocks,/area/submap/DoomP) +"an" = (/obj/effect/decal/remains/mouse,/turf/simulated/floor/outdoors/grass/sif/forest,/area/submap/DoomP) +"ao" = (/obj/effect/decal/remains/deer,/turf/simulated/floor/outdoors/grass/sif/forest,/area/submap/DoomP) +"ap" = (/obj/effect/decal/remains/mouse,/obj/random/landmine,/turf/simulated/floor/outdoors/grass/sif/forest,/area/submap/DoomP) +"aq" = (/obj/structure/flora/tree/sif,/turf/simulated/floor/outdoors/grass/sif/forest,/area/submap/DoomP) +"ar" = (/obj/machinery/light/small,/turf/simulated/floor/outdoors/grass/sif/forest,/area/submap/DoomP) +"as" = (/obj/machinery/porta_turret/poi,/turf/simulated/floor/plating,/area/submap/DoomP) +"at" = (/turf/simulated/wall/r_wall,/area/submap/DoomP) +"au" = (/obj/structure/sign/warning/secure_area,/turf/simulated/wall/r_wall,/area/submap/DoomP) +"av" = (/obj/effect/floor_decal/industrial/warning,/turf/simulated/floor/plating,/area/submap/DoomP) +"aw" = (/obj/machinery/door/airlock/external,/turf/simulated/floor/plating,/area/submap/DoomP) +"ax" = (/obj/effect/floor_decal/borderfloor{dir = 9},/turf/simulated/floor/tiled,/area/submap/DoomP) +"ay" = (/obj/structure/bed/chair,/obj/effect/floor_decal/borderfloor{dir = 1},/turf/simulated/floor/tiled,/area/submap/DoomP) +"az" = (/obj/effect/floor_decal/borderfloor{dir = 1},/turf/simulated/floor/tiled,/area/submap/DoomP) +"aA" = (/obj/effect/floor_decal/borderfloor{dir = 1},/mob/living/simple_mob/humanoid/merc/ranged/smg/poi,/turf/simulated/floor/tiled,/area/submap/DoomP) +"aB" = (/obj/machinery/light/small{dir = 1},/obj/effect/floor_decal/borderfloor{dir = 1},/turf/simulated/floor/tiled,/area/submap/DoomP) +"aC" = (/obj/machinery/vending/cigarette,/obj/effect/floor_decal/borderfloor{dir = 5},/turf/simulated/floor/tiled,/area/submap/DoomP) +"aD" = (/obj/machinery/light/small{dir = 8},/turf/simulated/floor/tiled,/area/submap/DoomP) +"aE" = (/obj/machinery/power/smes/buildable/point_of_interest,/obj/structure/cable/green{d2 = 4; icon_state = "0-4"},/turf/simulated/floor/plating,/area/submap/DoomP) +"aF" = (/obj/machinery/power/smes/buildable/point_of_interest,/obj/structure/cable/green{d2 = 4; icon_state = "0-4"},/obj/structure/cable/green{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor/plating,/area/submap/DoomP) +"aG" = (/obj/machinery/power/apc{dir = 1; name = "PAPC"; pixel_x = 0; pixel_y = 24},/obj/structure/cable/green{d2 = 8; icon_state = "0-8"},/turf/simulated/floor/tiled/techfloor/grid,/area/submap/DoomP) +"aH" = (/obj/structure/cable{icon_state = "0-2"; d2 = 2},/obj/machinery/power/port_gen/pacman,/turf/simulated/floor/plating,/area/submap/DoomP) +"aI" = (/obj/structure/table/standard,/obj/random/toolbox,/turf/simulated/floor/tiled/techfloor/grid,/area/submap/DoomP) +"aJ" = (/obj/structure/table/standard,/obj/item/stack/material/phoron{amount = 25},/turf/simulated/floor/tiled/techfloor/grid,/area/submap/DoomP) +"aK" = (/obj/structure/closet/secure_closet/engineering_electrical,/turf/simulated/floor/tiled/techfloor/grid,/area/submap/DoomP) +"aL" = (/obj/structure/lattice,/turf/simulated/floor/outdoors/rocks,/area/submap/DoomP) +"aM" = (/obj/structure/bed/chair{dir = 4},/obj/effect/floor_decal/borderfloor{dir = 8},/turf/simulated/floor/tiled,/area/submap/DoomP) +"aN" = (/obj/structure/table/standard,/turf/simulated/floor/tiled,/area/submap/DoomP) +"aO" = (/obj/structure/table/standard,/obj/item/pizzabox,/turf/simulated/floor/tiled,/area/submap/DoomP) +"aP" = (/turf/simulated/floor/tiled,/area/submap/DoomP) +"aQ" = (/obj/machinery/vending/snack,/obj/effect/floor_decal/borderfloor{dir = 4},/turf/simulated/floor/tiled,/area/submap/DoomP) +"aR" = (/obj/machinery/power/terminal{icon_state = "term"; dir = 1},/obj/structure/cable{icon_state = "0-4"; d2 = 4},/turf/simulated/floor/tiled/techfloor/grid,/area/submap/DoomP) +"aS" = (/obj/machinery/power/terminal{icon_state = "term"; dir = 1},/obj/structure/cable{icon_state = "0-4"; d2 = 4},/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0},/turf/simulated/floor/tiled/techfloor/grid,/area/submap/DoomP) +"aT" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0},/mob/living/simple_mob/humanoid/merc/melee/sword/poi,/turf/simulated/floor/tiled/techfloor/grid,/area/submap/DoomP) +"aU" = (/obj/structure/cable{d1 = 1; d2 = 8; icon_state = "1-8"},/turf/simulated/floor/tiled/techfloor/grid,/area/submap/DoomP) +"aV" = (/turf/simulated/floor/tiled/techfloor/grid,/area/submap/DoomP) +"aW" = (/obj/machinery/light/small,/turf/simulated/floor/tiled/techfloor/grid,/area/submap/DoomP) +"aX" = (/obj/structure/lattice,/turf/simulated/floor/water,/area/submap/DoomP) +"aY" = (/obj/machinery/light/small{dir = 8},/obj/effect/floor_decal/borderfloor{dir = 8},/turf/simulated/floor/tiled,/area/submap/DoomP) +"aZ" = (/obj/machinery/vending/cola,/obj/effect/floor_decal/borderfloor/corner{dir = 4},/turf/simulated/floor/tiled,/area/submap/DoomP) +"ba" = (/obj/machinery/door/airlock/external,/turf/simulated/floor/tiled,/area/submap/DoomP) +"bb" = (/obj/machinery/door/airlock/engineering,/turf/simulated/floor/tiled/techfloor/grid,/area/submap/DoomP) +"bc" = (/obj/structure/sign/electricshock,/turf/simulated/wall/r_wall,/area/submap/DoomP) +"bd" = (/obj/effect/floor_decal/borderfloor{dir = 10},/turf/simulated/floor/tiled,/area/submap/DoomP) +"be" = (/obj/effect/floor_decal/borderfloor,/turf/simulated/floor/tiled,/area/submap/DoomP) +"bf" = (/obj/machinery/light/small,/obj/effect/floor_decal/borderfloor,/turf/simulated/floor/tiled,/area/submap/DoomP) +"bg" = (/obj/effect/floor_decal/borderfloor/corner{dir = 8},/mob/living/simple_mob/humanoid/merc/ranged/laser/poi,/turf/simulated/floor/tiled,/area/submap/DoomP) +"bh" = (/obj/machinery/door/airlock/hatch,/turf/simulated/floor/tiled,/area/submap/DoomP) +"bi" = (/obj/machinery/light/small{dir = 1},/turf/simulated/floor/tiled,/area/submap/DoomP) +"bj" = (/obj/machinery/door/airlock/highsecurity,/turf/simulated/floor/tiled/techfloor,/area/submap/DoomP) +"bk" = (/obj/machinery/door/airlock,/turf/simulated/floor/tiled/white,/area/submap/DoomP) +"bl" = (/turf/simulated/floor/tiled/techfloor,/area/submap/DoomP) +"bm" = (/obj/structure/table/standard,/turf/simulated/floor/tiled/techfloor,/area/submap/DoomP) +"bn" = (/obj/structure/table/standard,/obj/item/weapon/storage/box/syndie_kit/spy,/turf/simulated/floor/tiled/techfloor,/area/submap/DoomP) +"bo" = (/obj/structure/table/rack,/obj/item/weapon/storage/box/smokes,/turf/simulated/floor/tiled/techfloor,/area/submap/DoomP) +"bp" = (/obj/structure/table/rack,/obj/item/weapon/storage/box/handcuffs,/turf/simulated/floor/tiled/techfloor,/area/submap/DoomP) +"bq" = (/obj/structure/table/rack,/obj/item/weapon/cell/device/weapon,/obj/item/weapon/cell/device/weapon,/turf/simulated/floor/tiled/techfloor,/area/submap/DoomP) +"br" = (/obj/structure/table/rack,/obj/random/energy,/turf/simulated/floor/tiled/techfloor,/area/submap/DoomP) +"bs" = (/obj/structure/table/rack,/obj/item/weapon/gun/projectile/contender,/obj/item/ammo_magazine/s357,/obj/item/ammo_magazine/s357,/turf/simulated/floor/tiled/techfloor,/area/submap/DoomP) +"bt" = (/obj/structure/bed,/obj/item/weapon/bedsheet,/obj/item/toy/plushie/spider,/obj/effect/floor_decal/corner/lime/full{dir = 8},/turf/simulated/floor/tiled/white,/area/submap/DoomP) +"bu" = (/obj/structure/table/standard,/obj/effect/floor_decal/corner/lime{dir = 5},/turf/simulated/floor/tiled/white,/area/submap/DoomP) +"bv" = (/obj/structure/bed,/obj/item/weapon/bedsheet,/obj/effect/floor_decal/corner/lime{dir = 5},/turf/simulated/floor/tiled/white,/area/submap/DoomP) +"bw" = (/obj/structure/table/standard,/obj/item/device/flashlight/lamp,/obj/effect/floor_decal/corner/lime{dir = 5},/turf/simulated/floor/tiled/white,/area/submap/DoomP) +"bx" = (/obj/structure/table/standard,/obj/structure/bedsheetbin,/obj/effect/floor_decal/corner/lime{dir = 1},/turf/simulated/floor/tiled/white,/area/submap/DoomP) +"by" = (/turf/simulated/floor/tiled/white,/area/submap/DoomP) +"bz" = (/obj/machinery/light/small{dir = 1},/turf/simulated/floor/tiled/white,/area/submap/DoomP) +"bA" = (/obj/structure/sink{dir = 4; icon_state = "sink"; pixel_x = 11; pixel_y = 0},/obj/machinery/light/small{dir = 1},/turf/simulated/floor/tiled/white,/area/submap/DoomP) +"bB" = (/obj/machinery/light/small,/turf/simulated/floor/tiled/techfloor,/area/submap/DoomP) +"bC" = (/obj/machinery/light/small{dir = 8},/obj/effect/floor_decal/corner/lime/full,/turf/simulated/floor/tiled/white,/area/submap/DoomP) +"bD" = (/obj/effect/floor_decal/corner/lime{dir = 10},/turf/simulated/floor/tiled/white,/area/submap/DoomP) +"bE" = (/obj/machinery/light/small{dir = 4; pixel_y = 0},/obj/effect/floor_decal/corner/lime{dir = 10},/turf/simulated/floor/tiled/white,/area/submap/DoomP) +"bF" = (/obj/machinery/shower{dir = 1},/obj/structure/curtain/open/shower,/turf/simulated/floor/tiled/white,/area/submap/DoomP) +"bG" = (/obj/structure/toilet{dir = 1},/turf/simulated/floor/tiled/white,/area/submap/DoomP) +"bH" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced,/obj/machinery/door/firedoor/border_only,/obj/structure/window/reinforced{dir = 8},/turf/simulated/floor/plating,/area/submap/DoomP) +"bI" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced,/obj/machinery/door/firedoor/border_only,/turf/simulated/floor/plating,/area/submap/DoomP) +"bJ" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 4},/obj/machinery/door/firedoor/border_only,/turf/simulated/floor/plating,/area/submap/DoomP) +"bK" = (/obj/structure/lattice,/turf/simulated/floor/outdoors/grass/sif/forest,/area/submap/DoomP) +"bL" = (/mob/living/simple_mob/humanoid/merc/melee/sword/poi,/turf/simulated/floor/tiled/techfloor,/area/submap/DoomP) (1,1,1) = {" -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 -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 -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -"} -(2,1,1) = {" -aa -ab -ae -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -aa -"} -(3,1,1) = {" -aa -ab -ab -ab -ac -ac -ac -ac -ac -ac -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ac -ac -ac -ac -ac -ac -ac -ab -ab -ac -ac -ac -aa -"} -(4,1,1) = {" -aa -ab -ab -ac -ac -af -af -af -af -ac -ac -ac -ac -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ac -ac -ac -ac -af -af -af -af -af -ac -ac -ac -ac -af -ac -aa -"} -(5,1,1) = {" -aa -ab -ab -ac -af -af -af -af -af -af -af -af -ac -ac -ac -ab -ab -ab -ab -ab -ab -ac -ac -ac -ac -ac -ac -ac -ac -ac -ac -ab -ab -ag -ab -ab -ab -ab -ab -ab -ab -ac -ac -ac -ac -af -af -af -af -af -af -af -af -af -af -af -af -ac -ac -aa -"} -(6,1,1) = {" -aa -ab -ab -ac -af -af -af -af -af -af -af -af -af -af -ac -ac -ac -ac -ae -ac -ac -ac -af -af -af -af -af -af -af -ac -ac -ab -ab -ab -ab -ab -ab -ab -ab -ac -ac -ac -ac -ac -af -af -af -af -af -af -af -af -af -af -af -af -ac -ac -ab -aa -"} -(7,1,1) = {" -aa -ab -ab -ac -af -af -af -af -af -af -af -af -af -af -af -af -ac -ac -ac -ac -af -af -af -af -af -af -af -af -af -af -ac -ac -ab -ab -ab -ab -ab -ac -ac -ac -af -af -af -af -af -af -af -af -af -af -af -af -af -af -af -ac -ac -ab -ab -aa -"} -(8,1,1) = {" -aa -ab -ab -ac -af -af -af -ak -af -af -af -af -af -af -af -af -af -af -af -af -af -af -af -af -af -af -af -af -af -af -af -ac -ac -ab -ac -ac -ac -ac -af -af -af -af -af -af -af -af -af -af -af -af -af -af -af -af -ac -ac -ab -ab -ab -aa -"} -(9,1,1) = {" -aa -ab -ab -ac -af -af -af -ak -ak -af -af -af -af -af -af -af -af -af -af -af -af -af -af -af -af -af -af -af -af -af -af -af -af -ac -ac -af -af -af -af -af -af -af -af -af -af -af -af -af -af -af -af -af -af -ac -ac -ab -ab -ab -ab -aa -"} -(10,1,1) = {" -aa -ab -ab -ac -ac -af -af -ak -ak -ak -af -af -af -af -af -af -af -af -af -ak -ak -af -af -af -af -af -af -af -af -af -af -af -af -af -af -af -af -af -af -af -af -af -af -af -af -af -ak -ak -af -af -af -af -ac -ac -ab -ab -ab -ab -ab -aa -"} -(11,1,1) = {" -aa -ab -ab -ab -ac -af -af -ak -ak -ak -ak -ak -af -af -af -af -af -af -af -ak -ak -ak -af -af -af -af -af -af -af -af -af -af -af -af -af -af -af -af -af -af -af -af -af -af -af -ak -ak -af -af -af -af -af -ac -ab -ab -ab -ab -ae -ab -aa -"} -(12,1,1) = {" -aa -ab -ab -ab -ac -af -af -ak -ak -ak -ak -ak -ak -af -af -af -af -af -ak -ak -ak -ak -ak -ak -af -af -af -af -af -af -ak -ak -ak -ak -af -af -af -ak -ak -ak -af -af -ak -ak -af -ak -ak -ak -ak -af -af -ac -ac -ab -ab -ab -ab -ab -ab -aa -"} -(13,1,1) = {" -aa -ab -ab -ab -ac -af -af -ak -ak -ak -ak -ak -ak -ak -af -ak -af -ak -ak -ak -ak -ak -ak -ak -ak -ak -ak -ak -ak -ak -ak -ak -ak -ak -ak -ak -ak -ak -ak -ak -ak -ak -ak -ak -ak -ak -ak -ak -ak -af -af -ac -ab -ab -ab -ab -ab -ab -ab -aa -"} -(14,1,1) = {" -aa -ab -ab -ab -ac -af -af -af -af -af -ak -ak -ak -ak -ak -ak -ak -ak -ak -ak -ak -ak -ak -ak -ak -ak -ak -ak -ak -ak -ak -ak -ak -ak -ak -ak -ak -ak -ak -ak -ak -ak -ak -ak -ak -ak -ak -ak -ak -af -af -ac -ab -ab -ab -ab -ab -ab -ab -aa -"} -(15,1,1) = {" -aa -ab -ab -ab -ac -ac -af -af -af -af -ak -ak -ak -ak -ak -ak -ak -ak -ak -ak -ak -ak -ak -ak -ak -ak -ak -ak -ak -ak -ak -ak -ak -ak -ak -ak -ak -ak -ak -ak -ak -ak -ak -ak -ak -ak -ak -ak -ak -af -af -ac -ab -ab -ab -ab -ab -ab -ab -aa -"} -(16,1,1) = {" -aa -ab -ab -ab -ab -ac -af -af -af -af -af -ak -ak -ak -ak -ak -ak -ak -ak -ak -ak -ak -ak -ak -ak -af -ak -ak -ak -ak -ak -ak -ak -ak -ak -ak -ak -ak -ak -ak -ak -ak -ak -ak -ak -ak -ak -ak -ak -ak -af -ac -ab -ab -ab -ab -ab -ab -ab -aa -"} -(17,1,1) = {" -aa -ab -ab -ab -ab -ac -af -af -af -af -af -ak -ak -ak -ak -ak -ak -ak -af -ak -ak -ak -af -af -af -af -ak -ak -ak -ak -ak -ak -ak -ak -ak -ak -ak -ak -ak -ak -ak -ak -ak -ak -ak -ak -ak -af -ak -ak -af -ac -ab -ab -ab -ab -ab -ab -ab -aa -"} -(18,1,1) = {" -aa -ab -ab -ag -ae -ac -af -af -af -af -af -ak -ak -ak -ak -ak -ak -af -af -af -ak -af -af -af -af -af -af -af -ak -ak -ak -ak -ak -ak -ak -ak -ak -ak -ak -ak -ak -ak -ak -ak -ak -ak -af -af -ak -ak -af -ac -ab -ab -ab -ag -ab -ab -ac -aa -"} -(19,1,1) = {" -aa -ab -ab -ab -ab -ac -af -af -af -af -ak -ak -ak -ak -ak -ak -ak -af -af -af -ak -af -af -af -af -af -af -af -af -af -af -af -ak -ak -ak -ak -ak -ak -ak -ak -ak -ak -ak -ak -ak -ak -af -af -af -af -af -ac -ac -ab -ab -ab -ab -ac -ac -aa -"} -(20,1,1) = {" -aa -ab -ab -ab -ac -ac -af -af -af -af -ak -ak -ak -ak -ak -ak -af -af -af -af -af -af -af -af -af -af -af -af -af -af -as -af -af -as -ak -ak -ak -ak -ak -ak -ak -ak -ak -ak -ak -ak -af -af -af -af -af -af -ac -ab -ac -ac -ac -ac -ac -aa -"} -(21,1,1) = {" -aa -ab -ab -ab -ac -af -af -af -af -af -ak -ak -ak -ak -ak -ak -af -af -af -af -af -af -af -af -ac -ac -ac -ac -ac -ac -aL -af -af -aX -af -af -ak -ak -ak -ak -ak -ak -ak -ak -ak -ak -af -af -af -af -af -af -ac -ac -ac -af -af -af -ac -aa -"} -(22,1,1) = {" -aa -ab -ab -ab -ac -af -af -af -af -af -ak -ak -ak -ak -ak -af -af -af -af -af -af -af -af -ac -ac -ad -ad -ad -at -at -at -at -at -at -at -at -at -af -ak -ak -ak -ak -ak -ak -ak -ak -af -af -af -af -af -af -af -af -af -af -af -af -ac -aa -"} -(23,1,1) = {" -aa -ab -ab -ac -ac -af -af -af -ak -ak -ak -ak -ak -ak -ak -af -af -af -af -af -af -af -ac -ac -ad -ad -ad -ad -at -ax -aM -aY -bd -bj -bl -bl -at -af -ak -ak -ak -ak -ak -ak -ak -ak -ak -af -af -af -af -af -af -af -af -af -af -af -ac -aa -"} -(24,1,1) = {" -aa -ab -ab -ac -af -af -af -af -ak -ak -ak -ak -ak -ak -af -af -af -af -af -af -af -ac -ac -ad -ad -ad -ad -as -at -ay -aN -aN -be -at -bm -bl -at -af -af -ak -ak -ak -ak -ak -ak -ak -ak -ak -af -af -af -af -af -af -af -af -af -af -ac -aa -"} -(25,1,1) = {" -aa -ab -ab -ac -af -af -af -af -ak -ak -ak -ak -ak -af -af -af -af -af -af -af -ac -ac -ad -ad -ad -ad -ad -ad -at -ND -aO -aN -be -at -bn -bB -at -af -af -af -af -ak -ak -ak -ak -ak -ak -ak -ak -ak -af -af -af -af -af -af -af -af -ac -aa -"} -(26,1,1) = {" -aa -ab -ab -ac -af -af -af -af -ak -ak -ak -ak -ak -af -af -af -af -af -af -af -ac -ad -ad -ad -ad -ad -ad -ad -at -ay -aN -aN -bf -at -bo -bl -at -aL -as -af -af -af -af -ak -ak -ak -ak -ak -ak -ak -ak -ak -af -af -af -af -af -ac -ac -aa -"} -(27,1,1) = {" -aa -ab -ab -ac -af -af -af -ak -ak -ak -ak -ak -ak -ak -af -af -af -af -af -ac -ac -ad -ad -ad -ad -ad -ad -as -at -aB -aN -aN -be -at -bp -ta -at -ac -af -af -af -af -af -ak -ak -ak -ak -ak -ak -ak -ak -ak -af -af -af -af -af -ac -ab -aa -"} -(28,1,1) = {" -aa -ab -ab -ac -ac -af -af -ak -ak -ak -ak -ak -ak -ak -ak -af -af -af -af -ac -ad -aq -ad -ad -ad -ad -ad -ad -at -ay -aN -aN -be -at -bq -bB -at -ac -ac -af -af -af -af -ak -ak -ak -ak -ak -ak -ak -ak -ak -ak -af -af -af -af -ac -ab -aa -"} -(29,1,1) = {" -aa -ab -ab -ac -ac -af -af -ak -ak -ak -ak -ak -ak -ak -ak -af -af -af -af -ac -ad -ad -ad -ad -ad -ad -ar -at -at -az -aP -aP -bg -at -br -bl -at -ad -ac -af -af -af -af -ak -ak -ak -ak -ak -ak -ak -ak -ak -ak -af -af -af -af -ac -ab -aa -"} -(30,1,1) = {" -aa -ab -ab -ac -ac -af -af -ak -ak -ak -ak -ak -ak -ak -ak -af -af -af -af -ac -ad -ad -ad -ad -ad -ad -ad -au -at -aC -aQ -aZ -aP -at -bs -bl -at -ad -ac -af -af -af -af -af -ak -ak -ak -ak -ak -ak -ak -ak -af -af -af -af -af -ac -ab -aa -"} -(31,1,1) = {" -aa -ab -ab -ab -ac -af -af -ak -ak -ak -ak -ak -ak -ak -ak -af -af -af -af -ac -ad -ad -aq -ad -ad -ad -ad -av -at -at -at -at -bh -at -at -at -at -ad -ac -af -af -af -af -af -af -ak -ak -ak -ak -ak -ak -ak -af -af -af -af -ac -ac -ab -aa -"} -(32,1,1) = {" -aa -ab -ab -ab -ac -af -af -ak -ak -ak -ak -ak -ak -ak -ak -af -af -af -af -ac -ad -ad -ad -ad -ad -ad -ad -av -aw -aD -aP -ba -aP -at -bt -bC -at -ad -ac -ac -af -af -af -af -af -ak -ak -ak -ak -ak -ak -ak -af -af -af -af -ac -ab -ab -aa -"} -(33,1,1) = {" -aa -ab -ab -ac -af -af -af -ak -ak -ak -ak -ak -ak -ak -ak -af -af -af -af -ac -ac -ad -ad -ad -ad -ad -ad -av -at -at -at -at -aP -at -bu -bD -at -bK -as -ac -ac -af -af -af -af -ak -ak -ak -ak -ak -ak -ak -af -af -af -af -ac -ab -ab -aa -"} -(34,1,1) = {" -aa -ab -ab -ac -af -af -af -af -ak -ak -ak -ak -ak -ak -ak -af -af -af -af -af -ac -ad -ad -ad -ad -ad -ad -au -at -aE -aR -at -bi -at -bv -bD -bH -ad -ad -ad -ac -af -af -af -af -ak -ak -ak -ak -ak -ak -ak -af -af -af -af -ac -ab -ab -aa -"} -(35,1,1) = {" -aa -ab -ab -ac -af -af -af -af -ak -ak -ak -ak -ak -ak -ak -af -af -af -af -af -ac -ad -ah -ad -ad -ad -ar -at -at -aF -aS -at -aP -at -bw -bD -bI -ad -ad -ad -ac -af -af -af -af -ak -ak -ak -ak -ak -ak -ak -af -af -af -ac -ac -ab -ab -aa -"} -(36,1,1) = {" -aa -ab -ac -ac -af -af -af -af -ak -af -ak -ak -ak -af -ak -af -af -af -af -ac -ac -ad -ad -ad -ad -ad -ad -ad -at -aF -aS -at -aP -at -bv -bD -bI -ad -ad -ad -ac -af -af -af -af -ak -ak -ak -ak -ak -ak -ak -af -af -af -ac -ab -ab -ab -aa -"} -(37,1,1) = {" -aa -ac -ac -af -af -af -af -af -af -af -ak -af -af -af -af -af -af -af -ac -am -ad -ad -ad -ad -ad -ad -ad -as -at -aF -aS -at -aP -at -bx -bD -bI -ad -ad -ad -ac -af -af -af -af -ak -ak -ak -ak -ak -ak -ak -af -af -af -ac -ac -ab -ab -aa -"} -(38,1,1) = {" -aa -ac -af -af -af -af -af -af -af -af -ak -af -af -af -af -af -af -ac -ac -ad -ad -ad -ad -ac -ad -ad -ad -ad -at -aG -aT -at -aP -bk -by -bE -bJ -ad -ad -ad -ac -af -af -af -af -ak -ak -ak -ak -ak -ak -ak -af -af -af -ac -ac -ab -ab -aa -"} -(39,1,1) = {" -aa -ac -af -af -af -af -af -af -af -af -ak -af -af -af -af -af -ac -ac -ad -ad -ac -ac -am -ac -ac -ad -ad -ad -at -aH -aU -bb -aP -at -bk -at -at -bK -as -ac -ac -af -af -af -af -ak -ak -ak -ak -ak -ak -ak -ak -af -af -ac -ac -ab -ab -aa -"} -(40,1,1) = {" -aa -ac -af -af -af -af -af -af -af -af -af -af -af -af -af -ac -ac -ah -ad -ac -ac -af -af -af -ac -ac -ad -as -at -aI -aV -bc -bi -at -bz -bF -at -ac -ac -ac -af -af -af -af -af -ak -ak -ak -ak -ak -ak -ak -af -af -af -ac -ac -ab -ab -aa -"} -(41,1,1) = {" -aa -ac -af -af -af -af -af -af -af -ac -af -af -af -af -af -ac -ad -ad -ad -ac -af -af -af -af -af -ac -ac -ad -at -aJ -aW -at -aP -at -bk -at -at -ac -af -af -af -af -af -af -af -ak -ak -ak -ak -ak -ak -af -af -af -af -af -ac -ab -ab -aa -"} -(42,1,1) = {" -aa -ac -af -af -af -af -af -ac -ac -ac -ac -af -ac -ac -am -ac -ah -ad -am -ac -af -af -af -af -af -af -ac -ac -at -aK -aV -at -aP -at -bA -bG -at -af -af -af -af -af -af -af -af -ak -ak -ak -ak -ak -ak -ak -af -af -af -af -ac -ac -ab -aa -"} -(43,1,1) = {" -aa -ac -af -af -af -af -ac -ac -ad -an -ac -ac -am -ac -ac -ad -ad -ad -ac -af -af -af -af -af -af -af -af -af -at -at -at -at -at -at -at -at -at -af -af -af -af -af -af -af -af -af -ak -ak -ak -ak -ak -ak -af -af -af -af -af -ac -ab -aa -"} -(44,1,1) = {" -aa -ac -ac -af -af -af -ac -ad -ah -ad -ad -ad -ad -ad -ad -ad -ah -ac -ac -af -af -af -af -af -af -af -af -af -af -af -aX -af -af -aX -af -af -af -af -af -af -af -af -af -af -af -af -ak -ak -ak -ak -ak -ak -af -af -af -af -af -ac -ab -aa -"} -(45,1,1) = {" -aa -ab -ac -af -af -ac -ac -al -ad -ad -ad -ad -ah -ad -ad -ad -ad -ac -af -af -af -af -af -af -af -af -af -af -af -af -as -af -af -as -af -af -af -af -af -af -af -af -af -af -af -ak -ak -ak -ak -ak -ak -ak -ak -af -af -af -af -ac -ab -aa -"} -(46,1,1) = {" -aa -ab -ac -af -ac -ac -ah -ad -ad -ad -ah -ad -ad -ad -ap -ad -ac -ac -af -af -af -af -af -af -af -af -af -af -af -af -af -af -af -af -af -af -af -af -af -ak -af -af -af -af -af -ak -ak -ak -ak -ak -ak -ak -ak -af -af -af -af -ac -ab -aa -"} -(47,1,1) = {" -aa -ab -ac -ac -ac -ad -ad -ad -ad -ao -ad -ai -ad -ad -ac -ac -ac -af -af -af -af -af -ak -ak -ak -af -af -af -af -af -af -af -af -af -af -af -af -af -ak -ak -ak -af -af -af -ak -ak -ak -ak -ak -ak -ak -ak -ak -af -af -af -af -ac -ab -aa -"} -(48,1,1) = {" -aa -ab -ab -ac -ad -ai -ad -ah -ad -ad -ad -ad -ac -ac -ac -af -af -af -af -af -ak -ak -ak -ak -ak -ak -af -af -af -af -af -af -af -af -af -ak -ak -ak -ak -ak -ak -ak -ak -ak -ak -ak -ak -ak -ak -ak -ak -ak -ak -ak -af -af -af -ac -ac -aa -"} -(49,1,1) = {" -aa -ab -ab -ac -ad -ad -ad -ad -ad -ah -ac -ac -ac -af -af -af -af -af -af -af -af -ak -ak -ak -ak -ak -ak -ak -ak -ak -ak -ak -ak -ak -ak -ak -ak -ak -ak -ak -ak -ak -ak -ak -ak -ak -ak -ak -ak -ak -ak -ak -ak -ak -af -af -af -af -ac -aa -"} -(50,1,1) = {" -aa -ab -ac -ac -ah -ad -ad -ad -ad -ac -ac -am -af -af -af -af -af -af -af -af -ak -ak -ak -ak -ak -ak -ak -ak -ak -ak -ak -ak -ak -ak -ak -ak -ak -ak -ak -ak -ak -ak -ak -ak -ak -ak -ak -ak -ak -ak -ak -ak -ak -ak -ak -af -af -af -ac -aa -"} -(51,1,1) = {" -aa -ab -ad -ad -ad -aj -ad -ad -am -ac -af -af -af -af -af -af -ak -ak -ak -ak -ak -ak -ak -ak -ak -ak -ak -ak -ak -ak -ak -ak -ak -ak -ak -ak -ak -ak -ak -ak -ak -af -af -af -af -af -ak -ak -ak -ak -ak -ak -af -ak -ak -af -af -af -ac -aa -"} -(52,1,1) = {" -aa -ad -ad -ad -ad -ac -ac -ac -ac -af -af -af -af -af -af -ak -ak -ak -ak -ak -ak -ak -ak -ak -ak -ak -ak -ak -ak -ak -af -af -af -af -af -ak -af -af -af -af -af -af -af -af -af -af -af -af -af -af -af -af -af -af -af -af -af -ac -ac -aa -"} -(53,1,1) = {" -aa -ad -ad -ah -ac -ac -af -af -af -af -af -af -af -af -af -af -af -ak -ak -ak -af -af -af -ak -ak -ak -af -af -af -af -af -af -af -af -af -af -af -af -af -af -af -af -af -af -af -af -af -af -af -af -af -af -af -af -af -af -ac -ac -ab -aa -"} -(54,1,1) = {" -aa -ad -ad -ad -ac -af -af -af -af -af -af -af -af -af -af -af -af -af -af -af -af -af -af -ak -ak -af -af -af -af -af -af -af -af -af -af -af -af -af -af -af -af -af -af -af -af -af -af -af -af -af -af -af -af -af -af -ac -ac -ac -ab -aa -"} -(55,1,1) = {" -aa -ab -ad -ac -ac -af -af -af -af -af -af -af -af -af -af -af -af -af -af -af -af -af -af -af -af -af -af -af -af -af -af -af -af -af -af -af -af -af -af -af -af -af -af -af -af -af -af -af -af -af -af -af -af -ac -ac -ac -ab -ab -ab -aa -"} -(56,1,1) = {" -aa -ab -ac -af -af -af -af -af -af -af -af -af -af -af -ac -ac -af -af -af -af -af -af -af -af -af -af -af -af -af -af -af -af -af -af -af -af -af -af -af -af -af -af -af -ac -ac -ac -af -af -af -af -ac -ac -ac -ac -ab -ab -ab -ab -ab -aa -"} -(57,1,1) = {" -aa -ab -ac -af -af -af -af -af -af -af -af -af -af -af -ac -ac -ac -ac -af -af -af -af -ac -ac -af -af -af -af -ac -ac -af -af -af -af -af -af -af -af -af -af -ac -ac -ac -ac -ab -ac -ac -ac -ac -ac -ac -ab -ab -ab -ab -ab -ab -ab -ab -aa -"} -(58,1,1) = {" -aa -ae -ac -ac -ac -ac -af -af -af -af -af -ac -ac -ac -ac -ab -ab -ac -ac -ac -ac -ac -ac -ac -ac -ac -ac -ac -ac -ac -ac -ac -af -af -af -af -af -af -ac -ac -ac -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ag -ab -ab -ab -ab -aa -"} -(59,1,1) = {" -aa -ab -ab -ab -ab -ac -ac -ac -ac -ac -ac -ac -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ac -ac -ac -ac -ac -ac -ac -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ae -ab -ab -ab -ab -ab -aa -"} -(60,1,1) = {" -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 -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 -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -"} +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaabababababababababababababababababababababababababababababababababababacacacacacacacacabababababababadadadabababaeabaa +aaaeabababababababababababababababababababababababababababababababababacacafafafafafafacacacacababacadadadadadacacacabaa +aaababacacacacacacacabababababababagababababacacacacacacacacababacacacacafafafafafafafafafafacacacacadadahadacafafacabaa +aaabacacafafafafafacacacacacacababaeabacacacacafafafafacacacacacafafafafafafafafafafafafafacacadadahadadacacacafafacabaa +aaabacafafafafafafafafafafafacacacacacacafafafafafafafafafafafafafafafafafafafafafafafafacacadaiadadajacacafafafafacacaa +aaabacafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafacacacahadadadadadacafafafafafafacaa +aaabacafafafafakakakakakakafafafafafafafafafafafafafakakakakakakakafafafafafafafafacacadaladadahadadadacafafafafafafacaa +aaabacafafafafafakakakakakafafafafafafafafafakakakakakakakakakakakakakakafafafafafacadahadadadadadadamacafafafafafafacaa +aaabacacafafafafafakakakakafafafafafafafafafakakakakakakakakakakakakakafafafafafacacanadadadaoadahacacafafafafafafafacaa +aaababacafafafafafafakakakakakafafafakakakakakakakakakakakakakakakakakakakakakafafacacadadahadadacacafafafafafafafafacaa +aaababacafafafafafafakakakakakakakakakakakakakakakakakakakakakakakakakakafafafafafafacadadadaiadacamafafafafafafafacacaa +aaababacacafafafafafafakakakakakakakakakakakakakakakakakakakakakakakakakafafafafafacamadahadadacacafafafafafafafafacabaa +aaabababacafafafafafafafakakakakakakakakakakakakafafakakakakakakakakakafafafafafafacacadadadadacafafafafafafafafafacabaa +aaabababacacafafafafafafafakakakakakakakakakakafafafafakakakakakakakakakafafafafafamacadadapacacafafafafafafafacacacabaa +aaababababacafafafafafafakakakakakakakakakafafafafafafafafafafafafafafafafafafacacacadadadadacafafafafakafafafacacababaa +aaababababacacafafafafafafakakakakakakafafafafafafafafafafafafafafafafafafafacacadahadahadacacafafafakakafafafafacababaa +aaababababacacafafafafafakakakakakafafafafafafafafafafafafafafafafafafafafacacahadadadacacacafafafafakakakafafafacacabaa +aaababababaeacafafafafakakakakakafafafafafafafafafafafafafafafafafafafafacacadadadamacacafafafafafafakakakafafafafacabaa +aaababababacacafafakakakakakakakakafafafafafafafafafacacacacacacacafafacamadadacacacafafafafafafafafakakakafafafafacabaa +aaababababacafafafakakakakakakakakakakafafafafafacacacadadadadadacacacacadadacacafafafafafafafakafakakakafafafafafacabaa +aaabababacacafafafafakakakakakakakafafafafafafacacadadaqadadadadadadadadadadacafafafafafafafafakakakakakafafafafafacabaa +aaabababacafafafafafafakakakakakafafafafafafacacadadadadadadaqadadadahadadadamafafafafafafafakakakakakakafafafafacacabaa +aaabababacafafafafafafakakakakakafafafafafacacadadadadadadadadadadadadadadacacafafafafafafafakakakakakakakakafafacacabaa +aaabababacafafafafafafafakakakakafafafafacacadadadadadadadadadadadadadadadadacacafafafafafafakakakakakakakakafafafacabaa +aaabababacafafafafafafafakakakafafafafafacadadadadadadadadadadadadadadadadadadacacafafafafafafakakakakakakafafafafacabaa +aaabababacafafafafafafafakakakakakafafafacadadadadadadadaradadadadadaradadadadadacacafafafafafafakakakakafafafafafacabaa +aaabababacafafafafafafafakakakakakafafafacadadasadadasadatauavavavauatadasadadasadacafafafafafafakakakakafafafafafacabaa +aaabababacafafafafafafafakakakakakakafafacatatatatatatatatatatawatatatatatatatatatatatafafafafafakakakakafafafafacacabaa +aaabababacacafafafafafafakakakakakakafafacataxayaAayaBayazaCataDataEaFaFaFaGaHaIaJaKatafafafafafakakakakafafafafacacabaa +aaabababacacacafafafafakakakakakakakafasaLataMaNaOaNaNaNaPaQataPataRaSaSaSaTaUaVaWaVataXasafafafakakakafafafafafafacabaa +aaabababababacacafafafakakakakakakakafafafataYaNaNaNaNaNaPaZatbaatatatatatatbbbcatatatafafafafafakakakafafafafafafacabaa +aaababababababacafafafakakakakakakakakafafatbdbebebfbebebgaPbhaPaPbiaPaPaPaPaPbiaPaPatafafafafafakakakafafafafafafafacaa +aaabababagabababacafafakakakakakakakakasaXatbjatatatatatatatatatatatatatatbkatatatatataXasafafafakakakafafafafafafafacaa +aaababababababacacafafafakakakakakakakakafatblbmbnbobpbqbrbsatbtbubvbwbvbxbybkbzbkbAatafafafafafakakakafafafafafafafacaa +aaababababababacafafafafakakakakakakakakafatblblbBblbLbBblblatbCbDbDbDbDbDbEatbFatbGatafafafafakakakakakafafafafafafacaa +aaababababababacafafafafakakakakakakakakakatatatatatatatatatatatatbHbIbIbIbJatatatatatafafafafakakakakafafafafafafafacaa +aaabababababacacafafafakakakakakakakakakakafafafafaLacacadadadadbKadadadadadbKacacafafafafafafakakakakafafafafafafafacaa +aaabababababacafafafafakakakakakakakakakakakakafafasafacacacacacasadadadadadasacafafafafafafakakakakakafafafafafafacacaa +aaababababacacafafafafakakakakakakakakakakakakakafafafafafafafacacadadadadadacacafafafafafakakakakakakafafafafafafacabaa +aaababababacafafafafafafakakakakakakakakakakakakafafafafafafafafacacacacacacacafafafafafafafakakakakakafafafafafacacabaa +aaabababacacafafafafafafakakakakakakakakakakakakakafafafafafafafafafafafafafafafafafafafafafafakakakafafafafafafacababaa +aaabababacacafafafafafakakakakakakakakakakakakakakafafafafafafafafafafafafafafafafafafafafafafakakakafafafafafafacababaa +aaabababacacafafafafafakakakakakakakakakakakakakakakakakakafafafafafafafafafafafafafafafafafafakakakafafafafafacacababaa +aaababacacafafafafafafafakakakakakakakakakakakakakakakakakakafafafafafafafafafafafafafafafafakakakakafafafafafacabababaa +aaababacafafafafafafakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakafafakakakakakakafafafafafacacababaa +aaababacafafafafafakakakakakakakakafafafafafakakakakakakakakakakakakakakakakakakakakakakakakakakakakakafafafafafacababaa +aaabacacafafafafafakafakakakakakafafafafafafafakakakakakakakakakakakakakakakakakakakakakakakakakakakakafafafafafacababaa +aaabacafafafafafafafafakakakakakakakafafafafafafakakakakakakakakakakakakakakakakakakakakakakakakakakakafafafafafacababaa +aaabacafafafafafafafafafafafafakakakafafafafafafakakakakakakakakakakakakakakakakakakakakakakakakakakakafafafafafacababaa +aaabacafafafafafafafafafafafafafafafafafafafafafafakakakakakakakakakakakakakakakakakakakakakakakakakakafafafafacacababaa +aaabacafafafafafafafafacacacacacacacacafafafafafafakakakakakakakakakakakakakakakafakakakakakakakakakakafafafafacabababaa +aaabacafafafafafafacacacababababababacacacafafafafafafakakafafafafafafafafafakafafafafafakakakakakakafafafafafacabababaa +aaabacacafafafafacacababababababababababacafafafafafafafafafafafafafafafafafafafafafafafafafafakakakakafafafacacababaeaa +aaababacafafafacacababababababababababacacafafafafafafafafafafafafafafafafafafafafafafafafafafafafakakafafafacababagabaa +aaababacafafacacabababababababababagabacafafafafafafafafafafafafafafacacacacacacafafafafafafafafafafafafafacacababababaa +aaabacacafacacababababababababababababacafafafafafafafafafafacacacacacabacacacacacacafafafafafafafafafafacacabababababaa +aaabacafacacababababaeabababababababacacafafafafafacacacacacacababababababababababacacacacacacacafafafacacacabababababaa +aaabacacacababababababababababababacacacacacacacacacabababababababababababababababababababababacacacacacabababababababaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +"} \ No newline at end of file diff --git a/maps/submaps/surface_submaps/wilderness/Drugden.dmm b/maps/submaps/surface_submaps/wilderness/Drugden.dmm index f865bdc581..3d8f3257a3 100644 --- a/maps/submaps/surface_submaps/wilderness/Drugden.dmm +++ b/maps/submaps/surface_submaps/wilderness/Drugden.dmm @@ -1,906 +1,75 @@ -//MAP CONVERTED BY dmm2tgm.py THIS HEADER COMMENT PREVENTS RECONVERSION, DO NOT REMOVE -"a" = ( -/turf/template_noop, -/area/template_noop) -"b" = ( -/turf/template_noop, -/area/submap/Drugd) -"c" = ( -/turf/simulated/mineral/ignore_mapgen, -/area/submap/Drugd) -"d" = ( -/turf/simulated/wall, -/area/submap/Drugd) -"e" = ( -/obj/machinery/door/airlock, -/turf/simulated/floor, -/area/submap/Drugd) -"f" = ( -/turf/simulated/floor/tiled, -/area/submap/Drugd) -"g" = ( -/obj/effect/floor_decal/rust, -/turf/simulated/floor/tiled, -/area/submap/Drugd) -"h" = ( -/obj/random/trash, -/turf/simulated/floor, -/area/submap/Drugd) -"i" = ( -/obj/structure/closet/cabinet, -/obj/item/weapon/lipstick/random, -/turf/simulated/floor/carpet, -/area/submap/Drugd) -"j" = ( -/obj/structure/bed, -/obj/item/weapon/bedsheet, -/obj/structure/curtain/open/bed, -/turf/simulated/floor/carpet, -/area/submap/Drugd) -"k" = ( -/obj/structure/table/woodentable, -/obj/item/weapon/reagent_containers/pill/happy{ - name = "pill" - }, -/turf/simulated/floor/carpet, -/area/submap/Drugd) -"l" = ( -/turf/simulated/floor, -/area/submap/Drugd) -"m" = ( -/obj/structure/curtain/black, -/turf/simulated/floor, -/area/submap/Drugd) -"n" = ( -/obj/random/trash, -/turf/simulated/floor/carpet, -/area/submap/Drugd) -"o" = ( -/turf/simulated/floor/carpet, -/area/submap/Drugd) -"p" = ( -/mob/living/simple_animal/mouse, -/turf/simulated/floor, -/area/submap/Drugd) -"q" = ( -/obj/structure/closet/cabinet, -/turf/simulated/floor/carpet, -/area/submap/Drugd) -"r" = ( -/obj/structure/table/woodentable, -/obj/item/weapon/reagent_containers/pill/methylphenidate{ - name = "pill" - }, -/turf/simulated/floor/carpet, -/area/submap/Drugd) -"s" = ( -/obj/structure/bed/chair/comfy/beige{ - icon_state = "armchair_preview"; - dir = 1 - }, -/turf/simulated/floor/carpet, -/area/submap/Drugd) -"t" = ( -/obj/item/weapon/reagent_containers/pill/citalopram{ - name = "pill" - }, -/turf/simulated/floor/carpet, -/area/submap/Drugd) -"u" = ( -/obj/random/junk, -/turf/simulated/floor, -/area/submap/Drugd) -"v" = ( -/obj/structure/closet/cabinet, -/obj/item/weapon/contraband/poster, -/turf/simulated/floor/carpet, -/area/submap/Drugd) -"w" = ( -/obj/structure/bed/chair/comfy/beige, -/turf/simulated/floor/carpet, -/area/submap/Drugd) -"x" = ( -/obj/structure/table/woodentable, -/obj/item/device/flashlight/lamp, -/obj/item/weapon/reagent_containers/syringe/drugs, -/turf/simulated/floor/carpet, -/area/submap/Drugd) -"y" = ( -/obj/structure/bed/chair/comfy/beige, -/obj/item/weapon/reagent_containers/pill/citalopram{ - name = "pill" - }, -/turf/simulated/floor/carpet, -/area/submap/Drugd) -"z" = ( -/obj/structure/loot_pile/maint/junk, -/turf/simulated/floor, -/area/submap/Drugd) -"A" = ( -/obj/item/weapon/reagent_containers/pill/citalopram{ - name = "pill" - }, -/obj/item/weapon/reagent_containers/pill/citalopram{ - name = "pill" - }, -/turf/simulated/floor/carpet, -/area/submap/Drugd) -"B" = ( -/obj/structure/table/standard, -/obj/item/weapon/storage/pill_bottle/happy, -/turf/simulated/floor/tiled, -/area/submap/Drugd) -"C" = ( -/obj/structure/table/standard, -/obj/item/stack/medical/splint, -/turf/simulated/floor/tiled, -/area/submap/Drugd) -"D" = ( -/obj/structure/table/standard, -/obj/item/weapon/reagent_containers/pill/citalopram, -/obj/item/weapon/reagent_containers/pill/citalopram, -/turf/simulated/floor/tiled, -/area/submap/Drugd) -"E" = ( -/obj/structure/table/standard, -/obj/item/weapon/reagent_containers/pill/tramadol, -/obj/item/weapon/reagent_containers/pill/tramadol, -/turf/simulated/floor/tiled, -/area/submap/Drugd) -"F" = ( -/obj/structure/closet/cabinet, -/obj/item/clothing/accessory/jacket, -/obj/item/weapon/material/butterfly/switchblade, -/turf/simulated/floor/carpet, -/area/submap/Drugd) -"G" = ( -/obj/item/weapon/reagent_containers/pill/zoom{ - name = "pill" - }, -/obj/random/trash, -/turf/simulated/floor/carpet, -/area/submap/Drugd) -"H" = ( -/obj/item/weapon/reagent_containers/pill/zoom{ - name = "pill" - }, -/turf/simulated/floor/carpet, -/area/submap/Drugd) -"I" = ( -/obj/structure/loot_pile/maint/boxfort, -/turf/simulated/floor/carpet, -/area/submap/Drugd) -"J" = ( -/obj/structure/table/standard, -/obj/item/weapon/surgical/scalpel, -/turf/simulated/floor/tiled, -/area/submap/Drugd) -"K" = ( -/obj/item/wheelchair, -/turf/simulated/floor/tiled, -/area/submap/Drugd) -"L" = ( -/obj/structure/table/standard, -/obj/random/firstaid, -/turf/simulated/floor, -/area/submap/Drugd) -"M" = ( -/obj/structure/loot_pile/maint/junk, -/turf/simulated/floor/tiled, -/area/submap/Drugd) -"N" = ( -/obj/effect/floor_decal/rust, -/obj/structure/table/standard, -/turf/simulated/floor/tiled, -/area/submap/Drugd) -"O" = ( -/obj/structure/table/standard, -/obj/item/weapon/reagent_containers/pill/zoom, -/obj/item/weapon/reagent_containers/pill/zoom, -/turf/simulated/floor, -/area/submap/Drugd) -"P" = ( -/obj/structure/table/woodentable, -/obj/item/weapon/reagent_containers/pill/tramadol{ - name = "pill" - }, -/turf/simulated/floor/carpet, -/area/submap/Drugd) -"Q" = ( -/mob/living/simple_animal/hostile/hivebot/range/guard, -/turf/simulated/floor, -/area/submap/Drugd) -"R" = ( -/obj/structure/girder, -/turf/simulated/floor, -/area/submap/Drugd) -"S" = ( -/obj/item/weapon/material/shard, -/turf/simulated/floor, -/area/submap/Drugd) -"T" = ( -/obj/structure/table/woodentable, -/obj/item/device/flashlight/lamp, -/turf/simulated/floor/carpet, -/area/submap/Drugd) -"U" = ( -/obj/structure/table/woodentable, -/obj/item/weapon/reagent_containers/syringe/drugs, -/turf/simulated/floor/carpet, -/area/submap/Drugd) +"a" = (/turf/template_noop,/area/template_noop) +"b" = (/turf/template_noop,/area/submap/Drugd) +"c" = (/turf/simulated/mineral/ignore_mapgen,/area/submap/Drugd) +"d" = (/turf/simulated/wall,/area/submap/Drugd) +"e" = (/obj/machinery/door/airlock,/turf/simulated/floor,/area/submap/Drugd) +"f" = (/turf/simulated/floor/tiled,/area/submap/Drugd) +"g" = (/obj/effect/floor_decal/rust,/turf/simulated/floor/tiled,/area/submap/Drugd) +"h" = (/obj/random/trash,/turf/simulated/floor,/area/submap/Drugd) +"i" = (/obj/structure/closet/cabinet,/obj/item/weapon/lipstick/random,/turf/simulated/floor/carpet,/area/submap/Drugd) +"j" = (/obj/structure/bed,/obj/item/weapon/bedsheet,/obj/structure/curtain/open/bed,/turf/simulated/floor/carpet,/area/submap/Drugd) +"k" = (/obj/structure/table/woodentable,/obj/item/weapon/reagent_containers/pill/happy{name = "pill"},/turf/simulated/floor/carpet,/area/submap/Drugd) +"l" = (/turf/simulated/floor,/area/submap/Drugd) +"m" = (/obj/structure/curtain/black,/turf/simulated/floor,/area/submap/Drugd) +"n" = (/obj/random/trash,/turf/simulated/floor/carpet,/area/submap/Drugd) +"o" = (/turf/simulated/floor/carpet,/area/submap/Drugd) +"p" = (/obj/effect/decal/remains/mouse,/turf/simulated/floor,/area/submap/Drugd) +"q" = (/obj/structure/closet/cabinet,/turf/simulated/floor/carpet,/area/submap/Drugd) +"r" = (/obj/structure/table/woodentable,/obj/item/weapon/reagent_containers/pill/methylphenidate{name = "pill"},/turf/simulated/floor/carpet,/area/submap/Drugd) +"s" = (/obj/structure/bed/chair/comfy/beige{icon_state = "armchair_preview"; dir = 1},/turf/simulated/floor/carpet,/area/submap/Drugd) +"t" = (/obj/item/weapon/reagent_containers/pill/citalopram{name = "pill"},/turf/simulated/floor/carpet,/area/submap/Drugd) +"u" = (/obj/random/junk,/turf/simulated/floor,/area/submap/Drugd) +"v" = (/obj/structure/closet/cabinet,/obj/item/weapon/contraband/poster,/turf/simulated/floor/carpet,/area/submap/Drugd) +"w" = (/obj/structure/bed/chair/comfy/beige,/turf/simulated/floor/carpet,/area/submap/Drugd) +"x" = (/obj/structure/table/woodentable,/obj/item/device/flashlight/lamp,/obj/item/weapon/reagent_containers/syringe/drugs,/turf/simulated/floor/carpet,/area/submap/Drugd) +"y" = (/obj/structure/bed/chair/comfy/beige,/obj/item/weapon/reagent_containers/pill/citalopram{name = "pill"},/turf/simulated/floor/carpet,/area/submap/Drugd) +"z" = (/obj/structure/loot_pile/maint/junk,/turf/simulated/floor,/area/submap/Drugd) +"A" = (/obj/item/weapon/reagent_containers/pill/citalopram{name = "pill"},/obj/item/weapon/reagent_containers/pill/citalopram{name = "pill"},/turf/simulated/floor/carpet,/area/submap/Drugd) +"B" = (/obj/structure/table/standard,/obj/item/weapon/storage/pill_bottle/happy,/turf/simulated/floor/tiled,/area/submap/Drugd) +"C" = (/obj/structure/table/standard,/obj/item/stack/medical/splint,/turf/simulated/floor/tiled,/area/submap/Drugd) +"D" = (/obj/structure/table/standard,/obj/item/weapon/reagent_containers/pill/citalopram,/obj/item/weapon/reagent_containers/pill/citalopram,/turf/simulated/floor/tiled,/area/submap/Drugd) +"E" = (/obj/structure/table/standard,/obj/item/weapon/reagent_containers/pill/tramadol,/obj/item/weapon/reagent_containers/pill/tramadol,/turf/simulated/floor/tiled,/area/submap/Drugd) +"F" = (/obj/structure/closet/cabinet,/obj/item/clothing/accessory/jacket,/obj/item/weapon/material/butterfly/switchblade,/turf/simulated/floor/carpet,/area/submap/Drugd) +"G" = (/obj/item/weapon/reagent_containers/pill/zoom{name = "pill"},/obj/random/trash,/turf/simulated/floor/carpet,/area/submap/Drugd) +"H" = (/obj/item/weapon/reagent_containers/pill/zoom{name = "pill"},/turf/simulated/floor/carpet,/area/submap/Drugd) +"I" = (/obj/structure/loot_pile/maint/boxfort,/turf/simulated/floor/carpet,/area/submap/Drugd) +"J" = (/obj/structure/table/standard,/obj/item/weapon/surgical/scalpel,/turf/simulated/floor/tiled,/area/submap/Drugd) +"K" = (/obj/item/wheelchair,/turf/simulated/floor/tiled,/area/submap/Drugd) +"L" = (/obj/structure/table/standard,/obj/random/firstaid,/turf/simulated/floor,/area/submap/Drugd) +"M" = (/obj/structure/loot_pile/maint/junk,/turf/simulated/floor/tiled,/area/submap/Drugd) +"N" = (/obj/effect/floor_decal/rust,/obj/structure/table/standard,/turf/simulated/floor/tiled,/area/submap/Drugd) +"O" = (/obj/structure/table/standard,/obj/item/weapon/reagent_containers/pill/zoom,/obj/item/weapon/reagent_containers/pill/zoom,/turf/simulated/floor,/area/submap/Drugd) +"P" = (/obj/structure/table/woodentable,/obj/item/weapon/reagent_containers/pill/tramadol{name = "pill"},/turf/simulated/floor/carpet,/area/submap/Drugd) +"Q" = (/mob/living/simple_mob/mechanical/hivebot/ranged_damage/strong/guard,/turf/simulated/floor,/area/submap/Drugd) +"R" = (/obj/structure/girder,/turf/simulated/floor,/area/submap/Drugd) +"S" = (/obj/item/weapon/material/shard,/turf/simulated/floor,/area/submap/Drugd) +"T" = (/obj/structure/table/woodentable,/obj/item/device/flashlight/lamp,/turf/simulated/floor/carpet,/area/submap/Drugd) +"U" = (/obj/structure/table/woodentable,/obj/item/weapon/reagent_containers/syringe/drugs,/turf/simulated/floor/carpet,/area/submap/Drugd) (1,1,1) = {" -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -"} -(2,1,1) = {" -a -b -b -b -b -b -b -b -b -b -b -b -b -b -c -c -c -b -b -b -b -b -b -b -a -"} -(3,1,1) = {" -a -b -b -b -b -b -c -c -c -c -c -c -c -c -c -c -c -c -b -b -b -b -b -b -a -"} -(4,1,1) = {" -a -b -b -b -c -c -c -c -c -c -c -c -c -c -c -c -c -c -c -c -c -c -b -b -a -"} -(5,1,1) = {" -a -b -b -b -c -c -c -c -c -c -c -c -c -c -c -c -c -c -c -c -c -c -c -b -a -"} -(6,1,1) = {" -a -b -b -b -c -c -c -c -c -c -c -c -c -c -c -c -c -c -c -c -c -c -c -c -a -"} -(7,1,1) = {" -a -b -b -b -c -c -c -c -c -c -c -c -c -c -d -d -d -d -d -d -d -c -c -c -a -"} -(8,1,1) = {" -a -b -b -b -c -c -c -c -c -c -c -c -c -c -d -B -J -N -l -R -d -c -c -c -a -"} -(9,1,1) = {" -a -b -b -b -b -c -c -c -c -c -c -c -c -c -d -C -K -l -Q -l -d -c -c -c -a -"} -(10,1,1) = {" -a -b -b -b -b -b -c -c -c -c -c -c -c -c -d -D -g -l -l -S -d -c -c -c -a -"} -(11,1,1) = {" -a -b -b -b -b -b -c -c -c -c -c -c -c -c -d -E -L -O -l -l -d -c -c -b -a -"} -(12,1,1) = {" -a -b -b -b -b -b -b -d -d -d -d -d -d -d -d -d -d -d -e -d -d -c -c -b -a -"} -(13,1,1) = {" -a -b -b -b -b -b -b -d -f -g -g -p -u -l -z -l -l -h -l -l -l -c -c -b -a -"} -(14,1,1) = {" -a -b -b -b -b -b -b -e -f -g -l -l -l -l -l -l -f -l -l -l -u -c -c -b -a -"} -(15,1,1) = {" -a -b -b -b -b -b -b -d -f -h -l -l -h -l -g -f -M -g -l -h -d -c -c -b -a -"} -(16,1,1) = {" -a -b -b -b -b -b -b -d -d -d -m -d -d -d -m -d -d -d -m -d -d -c -c -c -a -"} -(17,1,1) = {" -a -b -b -b -b -b -c -c -d -i -n -q -d -v -o -F -d -q -o -q -d -c -c -c -a -"} -(18,1,1) = {" -a -b -b -b -b -c -c -c -d -j -o -r -d -w -o -G -d -P -o -T -d -c -c -c -a -"} -(19,1,1) = {" -a -b -b -b -b -c -c -c -d -k -o -s -d -x -o -H -d -w -o -U -d -c -c -c -a -"} -(20,1,1) = {" -a -b -b -b -b -c -c -c -d -j -o -t -d -y -A -I -d -w -o -n -d -c -c -b -a -"} -(21,1,1) = {" -a -b -b -b -b -c -c -c -d -d -d -d -d -d -d -d -d -d -d -d -d -c -c -c -a -"} -(22,1,1) = {" -a -b -b -b -b -b -c -c -c -c -c -c -c -c -c -c -c -c -c -c -c -c -c -c -a -"} -(23,1,1) = {" -a -b -b -b -b -b -b -c -c -c -c -c -c -c -c -c -c -c -c -c -c -c -c -b -a -"} -(24,1,1) = {" -a -b -b -b -b -b -b -b -b -c -c -c -c -b -b -b -b -c -c -c -c -b -b -b -a -"} -(25,1,1) = {" -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -"} +aaaaaaaaaaaaaaaaaaaaaaaaa +abbbbbbbbbbbbbbbbbbbbbbba +abbbbbbbbbbbbbbbbbbbbbbba +abbbbbbbbbbbbbbbbbbbbbbba +abbcccccbbbbbbbbbbbbbbbba +abbccccccbbbbbbbbccccbbba +abcccccccccbbbbbccccccbba +abcccccccccddeddcccccccba +abcccccccccdfffddddddccba +abcccccccccdgghdijkjdccca +abcccccccccdgllmnooodccca +abcccccccccdplldqrstdccca +abcccccccccdulhddddddccca +abcccccccccdllldvwxydccba +acccccddddddzlgmoooAdccba +acccccdBCDEdllfdFGHIdccba +acccccdJKgLdlfMddddddccba +abccccdNllOdhlgdqPwwdccca +abbcccdlQllelllmoooodccca +abbcccdRlSldllhdqTUndccca +abbcccddddddludddddddccca +abbccccccccccccccccccccba +abbbcccccccccccccccccccba +abbbbcccccbbbbbccccbccbba +aaaaaaaaaaaaaaaaaaaaaaaaa +"} \ No newline at end of file diff --git a/maps/submaps/surface_submaps/wilderness/Epod3.dmm b/maps/submaps/surface_submaps/wilderness/Epod3.dmm new file mode 100644 index 0000000000..42fbe7f6f8 --- /dev/null +++ b/maps/submaps/surface_submaps/wilderness/Epod3.dmm @@ -0,0 +1,31 @@ +"a" = (/turf/template_noop,/area/template_noop) +"b" = (/turf/template_noop,/area/submap/Epod3) +"c" = (/turf/simulated/floor/outdoors/dirt,/area/submap/Epod3) +"d" = (/obj/structure/flora/tree/sif,/turf/template_noop,/area/submap/Epod3) +"e" = (/turf/simulated/shuttle/wall,/area/submap/Epod3) +"f" = (/obj/structure/flora/tree/sif,/turf/simulated/floor/outdoors/dirt,/area/submap/Epod3) +"g" = (/obj/effect/spider/stickyweb,/turf/template_noop,/area/submap/Epod3) +"h" = (/obj/structure/bed/chair{dir = 4},/obj/structure/closet/walllocker/emerglocker{pixel_y = 28},/obj/item/device/radio/intercom{pixel_y = -26},/turf/simulated/shuttle/floor,/area/submap/Epod3) +"i" = (/obj/structure/bed/chair{dir = 4},/obj/machinery/vending/wallmed1{name = "Emergency NanoMed"; pixel_y = 28},/obj/machinery/light,/obj/item/weapon/weldingtool/largetank,/turf/simulated/shuttle/floor,/area/submap/Epod3) +"j" = (/obj/machinery/status_display{density = 0; layer = 4; pixel_x = 0; pixel_y = -32},/obj/structure/bed/chair{icon_state = "chair_preview"; dir = 8},/obj/effect/decal/remains,/obj/effect/decal/cleanable/blood/splatter,/obj/item/ammo_casing/spent,/obj/item/clothing/under/suit_jacket/really_black,/obj/item/clothing/shoes/dress,/obj/item/clothing/glasses/sunglasses,/obj/random/multiple/gun/projectile/handgun,/turf/simulated/shuttle/floor,/area/submap/Epod3) +"k" = (/obj/structure/shuttle/engine/propulsion/burst{icon_state = "propulsion"; dir = 8},/turf/simulated/shuttle/wall,/area/submap/Epod3) +"l" = (/obj/effect/spider/stickyweb,/turf/simulated/floor/outdoors/dirt,/area/submap/Epod3) +"m" = (/obj/machinery/door/airlock/external{name = "Escape Pod Hatch"; welded = 1},/turf/simulated/shuttle/floor,/area/submap/Epod3) +"n" = (/obj/effect/spider/eggcluster/small/frost,/turf/simulated/floor/outdoors/dirt,/area/submap/Epod3) +"o" = (/mob/living/simple_mob/animal/giant_spider/carrier{ai_holder_type = /datum/ai_holder/simple_mob/guard/give_chase},/turf/template_noop,/area/submap/Epod3) +"p" = (/obj/effect/spider/stickyweb,/obj/effect/spider/stickyweb,/turf/template_noop,/area/submap/Epod3) +"q" = (/mob/living/simple_mob/animal/giant_spider/frost/sif{ai_holder_type = /datum/ai_holder/simple_mob/guard/give_chase},/turf/simulated/floor/outdoors/dirt,/area/submap/Epod3) +"r" = (/obj/structure/shuttle/window,/obj/structure/grille,/turf/simulated/shuttle/plating,/area/submap/Epod3) + +(1,1,1) = {" +aaaaaaaaaaaaaaa +abbbgggcccbbbba +abbbgdgllllbbba +abdggkeeeefgbba +abggbmhijrngdba +abbgokeeeellgba +abbpgccllllfgba +abbdggggccqbbba +abbbbbbdbbbbbba +aaaaaaaaaaaaaaa +"} diff --git a/maps/submaps/surface_submaps/wilderness/Epod4.dmm b/maps/submaps/surface_submaps/wilderness/Epod4.dmm new file mode 100644 index 0000000000..e37847b087 --- /dev/null +++ b/maps/submaps/surface_submaps/wilderness/Epod4.dmm @@ -0,0 +1,35 @@ +"a" = (/turf/template_noop,/area/template_noop) +"b" = (/turf/template_noop,/area/submap/Epod4) +"c" = (/turf/simulated/floor/outdoors/dirt,/area/submap/Epod4) +"d" = (/obj/structure/flora/tree/pine,/turf/simulated/floor/outdoors/dirt,/area/submap/Epod4) +"e" = (/obj/structure/flora/grass/green,/turf/simulated/floor/outdoors/dirt,/area/submap/Epod4) +"f" = (/turf/simulated/floor/water,/area/submap/Epod4) +"g" = (/obj/structure/flora/tree/dead,/turf/simulated/floor/outdoors/dirt,/area/submap/Epod4) +"h" = (/turf/simulated/shuttle/wall,/area/submap/Epod4) +"i" = (/obj/structure/shuttle/window,/obj/structure/grille,/turf/simulated/shuttle/plating,/area/submap/Epod4) +"j" = (/obj/structure/flora/grass/both,/turf/simulated/floor/outdoors/dirt,/area/submap/Epod4) +"k" = (/obj/structure/bed/chair{icon_state = "chair_preview"; dir = 1},/obj/machinery/status_display{density = 0; layer = 4; pixel_x = -32; pixel_y = 0},/obj/structure/loot_pile/maint/junk,/turf/simulated/floor/water,/area/submap/Epod4) +"l" = (/turf/simulated/floor/water/deep,/area/submap/Epod4) +"m" = (/obj/structure/bed/chair{icon_state = "chair_preview"; dir = 1},/obj/effect/decal/remains/posi,/obj/machinery/light{dir = 8; icon_state = "tube1"; pixel_y = 0},/obj/machinery/vending/wallmed1{layer = 3.3; name = "Emergency NanoMed"; pixel_x = 28; pixel_y = 0},/obj/item/clothing/shoes/brown,/obj/item/clothing/under/mbill,/obj/item/clothing/head/soft/mbill,/turf/simulated/floor/water,/area/submap/Epod4) +"n" = (/obj/structure/bed/chair{icon_state = "chair_preview"; dir = 1},/obj/structure/closet/walllocker/emerglocker/east,/obj/item/device/radio/intercom{dir = 8; name = "Station Intercom (General)"; pixel_x = -28},/obj/structure/closet/crate/hydroponics{desc = "All you need to destroy that pesky planet."; name = "exotic seeds crate"; starts_with = list(/obj/item/seeds/random = 6, /obj/item/seeds/replicapod = 2, /obj/item/seeds/ambrosiavulgarisseed = 2, /obj/item/seeds/kudzuseed, /obj/item/seeds/libertymycelium, /obj/item/seeds/reishimycelium)},/turf/simulated/floor/water,/area/submap/Epod4) +"o" = (/obj/structure/shuttle/engine/propulsion/burst,/turf/simulated/shuttle/wall,/area/submap/Epod4) +"p" = (/obj/structure/door_assembly/door_assembly_ext{anchored = 1},/turf/simulated/floor/water,/area/submap/Epod4) +"q" = (/obj/structure/flora/grass/brown,/turf/simulated/floor/outdoors/dirt,/area/submap/Epod4) + +(1,1,1) = {" +aaaaaaaaaa +abbbbbbbba +abcccccbba +acccdcccba +acceffgcba +adefhihjca +acffhkhcja +acflhmhfca +aeflhnhfca +acflopofca +aecflllfja +abcfllfcca +adjcfffqca +abccqcqcba +aaaaaaaaaa +"} diff --git a/maps/submaps/surface_submaps/wilderness/MCamp1.dmm b/maps/submaps/surface_submaps/wilderness/MCamp1.dmm index add7df4ca5..b4bcb7f0b2 100644 --- a/maps/submaps/surface_submaps/wilderness/MCamp1.dmm +++ b/maps/submaps/surface_submaps/wilderness/MCamp1.dmm @@ -1,626 +1,60 @@ -//MAP CONVERTED BY dmm2tgm.py THIS HEADER COMMENT PREVENTS RECONVERSION, DO NOT REMOVE -"a" = ( -/turf/template_noop, -/area/template_noop) -"b" = ( -/turf/template_noop, -/area/submap/MilitaryCamp1) -"c" = ( -/turf/simulated/floor/outdoors/dirt, -/area/submap/MilitaryCamp1) -"d" = ( -/obj/random/landmine, -/turf/template_noop, -/area/submap/MilitaryCamp1) -"e" = ( -/obj/structure/flora/bush, -/turf/template_noop, -/area/submap/MilitaryCamp1) -"f" = ( -/obj/effect/decal/cleanable/blood, -/turf/template_noop, -/area/submap/MilitaryCamp1) -"g" = ( -/obj/random/landmine, -/turf/simulated/floor/outdoors/dirt, -/area/submap/MilitaryCamp1) -"h" = ( -/obj/effect/decal/remains, -/turf/simulated/floor/outdoors/dirt, -/area/submap/MilitaryCamp1) -"i" = ( -/obj/effect/mine, -/turf/template_noop, -/area/submap/MilitaryCamp1) -"j" = ( -/obj/effect/decal/remains, -/obj/random/landmine, -/turf/simulated/floor/outdoors/dirt, -/area/submap/MilitaryCamp1) -"k" = ( -/obj/structure/flora/tree/sif, -/turf/template_noop, -/area/submap/MilitaryCamp1) -"l" = ( -/obj/item/stack/rods, -/turf/template_noop, -/area/submap/MilitaryCamp1) -"m" = ( -/turf/simulated/wall, -/area/submap/MilitaryCamp1) -"n" = ( -/obj/random/landmine, -/turf/simulated/floor, -/area/submap/MilitaryCamp1) -"o" = ( -/turf/simulated/floor, -/area/submap/MilitaryCamp1) -"p" = ( -/obj/item/weapon/material/shard, -/turf/template_noop, -/area/submap/MilitaryCamp1) -"q" = ( -/mob/living/simple_animal/hostile/viscerator{ - returns_home = 1 - }, -/turf/simulated/floor, -/area/submap/MilitaryCamp1) -"r" = ( -/obj/structure/girder, -/turf/simulated/floor, -/area/submap/MilitaryCamp1) -"s" = ( -/obj/machinery/computer/communications, -/mob/living/simple_animal/hostile/viscerator{ - returns_home = 1 - }, -/mob/living/simple_animal/hostile/viscerator{ - returns_home = 1 - }, -/turf/simulated/floor, -/area/submap/MilitaryCamp1) -"t" = ( -/obj/structure/table/standard, -/obj/random/energy, -/mob/living/simple_animal/hostile/viscerator{ - returns_home = 1 - }, -/mob/living/simple_animal/hostile/viscerator{ - returns_home = 1 - }, -/turf/simulated/floor, -/area/submap/MilitaryCamp1) -"u" = ( -/obj/effect/mine, -/obj/random/landmine, -/turf/simulated/floor, -/area/submap/MilitaryCamp1) -"v" = ( -/obj/effect/decal/cleanable/dirt, -/turf/simulated/floor, -/area/submap/MilitaryCamp1) -"w" = ( -/obj/machinery/computer/security, -/mob/living/simple_animal/hostile/viscerator{ - returns_home = 1 - }, -/mob/living/simple_animal/hostile/viscerator{ - returns_home = 1 - }, -/turf/simulated/floor, -/area/submap/MilitaryCamp1) -"x" = ( -/mob/living/simple_animal/hostile/viscerator{ - returns_home = 1 - }, -/mob/living/simple_animal/hostile/viscerator{ - returns_home = 1 - }, -/turf/simulated/floor, -/area/submap/MilitaryCamp1) -"y" = ( -/obj/item/weapon/material/shard, -/obj/random/landmine, -/turf/template_noop, -/area/submap/MilitaryCamp1) -"z" = ( -/obj/machinery/door/airlock, -/turf/simulated/floor, -/area/submap/MilitaryCamp1) -"A" = ( -/obj/effect/decal/cleanable/dirt, -/mob/living/simple_animal/hostile/viscerator{ - returns_home = 1 - }, -/turf/simulated/floor, -/area/submap/MilitaryCamp1) -"B" = ( -/mob/living/simple_animal/hostile/viscerator{ - returns_home = 1 - }, -/turf/template_noop, -/area/submap/MilitaryCamp1) -"C" = ( -/obj/structure/table, -/turf/simulated/floor, -/area/submap/MilitaryCamp1) -"D" = ( -/obj/structure/table/standard, -/obj/random/firstaid, -/turf/simulated/floor, -/area/submap/MilitaryCamp1) -"E" = ( -/obj/effect/decal/cleanable/dirt, -/obj/random/landmine, -/turf/simulated/floor, -/area/submap/MilitaryCamp1) -"F" = ( -/obj/machinery/door/airlock, -/obj/effect/mine, -/turf/simulated/floor, -/area/submap/MilitaryCamp1) -"G" = ( -/obj/structure/flora/tree/dead, -/turf/template_noop, -/area/submap/MilitaryCamp1) -"H" = ( -/obj/random/landmine, -/turf/template_noop, -/area/template_noop) -"I" = ( -/obj/structure/table/standard, -/obj/random/cigarettes, -/obj/item/weapon/flame/lighter/random, -/turf/simulated/floor, -/area/submap/MilitaryCamp1) -"J" = ( -/obj/structure/table/standard, -/obj/random/toolbox, -/turf/simulated/floor, -/area/submap/MilitaryCamp1) -"K" = ( -/obj/effect/decal/cleanable/blood, -/obj/random/landmine, -/turf/template_noop, -/area/submap/MilitaryCamp1) +"a" = (/turf/template_noop,/area/template_noop) +"b" = (/turf/template_noop,/area/submap/MilitaryCamp1) +"c" = (/turf/simulated/floor/outdoors/dirt,/area/submap/MilitaryCamp1) +"d" = (/obj/random/landmine,/turf/template_noop,/area/submap/MilitaryCamp1) +"e" = (/obj/structure/flora/bush,/turf/template_noop,/area/submap/MilitaryCamp1) +"f" = (/obj/effect/decal/cleanable/blood,/turf/template_noop,/area/submap/MilitaryCamp1) +"g" = (/obj/random/landmine,/turf/simulated/floor/outdoors/dirt,/area/submap/MilitaryCamp1) +"h" = (/obj/effect/decal/remains,/turf/simulated/floor/outdoors/dirt,/area/submap/MilitaryCamp1) +"i" = (/obj/effect/mine,/turf/template_noop,/area/submap/MilitaryCamp1) +"j" = (/obj/effect/decal/remains,/obj/random/landmine,/turf/simulated/floor/outdoors/dirt,/area/submap/MilitaryCamp1) +"k" = (/obj/structure/flora/tree/sif,/turf/template_noop,/area/submap/MilitaryCamp1) +"l" = (/obj/item/stack/rods,/turf/template_noop,/area/submap/MilitaryCamp1) +"m" = (/turf/simulated/wall,/area/submap/MilitaryCamp1) +"n" = (/obj/random/landmine,/turf/simulated/floor,/area/submap/MilitaryCamp1) +"o" = (/turf/simulated/floor,/area/submap/MilitaryCamp1) +"p" = (/obj/item/weapon/material/shard,/turf/template_noop,/area/submap/MilitaryCamp1) +"q" = (/mob/living/simple_mob/mechanical/viscerator,/turf/simulated/floor,/area/submap/MilitaryCamp1) +"r" = (/obj/structure/girder,/turf/simulated/floor,/area/submap/MilitaryCamp1) +"s" = (/obj/machinery/computer/communications,/mob/living/simple_mob/mechanical/viscerator,/mob/living/simple_mob/mechanical/viscerator,/turf/simulated/floor,/area/submap/MilitaryCamp1) +"t" = (/obj/structure/table/standard,/obj/random/energy,/mob/living/simple_mob/mechanical/viscerator,/mob/living/simple_mob/mechanical/viscerator,/turf/simulated/floor,/area/submap/MilitaryCamp1) +"u" = (/obj/effect/mine,/obj/random/landmine,/turf/simulated/floor,/area/submap/MilitaryCamp1) +"v" = (/obj/effect/decal/cleanable/dirt,/turf/simulated/floor,/area/submap/MilitaryCamp1) +"w" = (/obj/machinery/computer/security,/mob/living/simple_mob/mechanical/viscerator,/mob/living/simple_mob/mechanical/viscerator,/turf/simulated/floor,/area/submap/MilitaryCamp1) +"x" = (/mob/living/simple_mob/mechanical/viscerator,/mob/living/simple_mob/mechanical/viscerator,/turf/simulated/floor,/area/submap/MilitaryCamp1) +"y" = (/obj/item/weapon/material/shard,/obj/random/landmine,/turf/template_noop,/area/submap/MilitaryCamp1) +"z" = (/obj/machinery/door/airlock,/turf/simulated/floor,/area/submap/MilitaryCamp1) +"A" = (/obj/effect/decal/cleanable/dirt,/mob/living/simple_mob/mechanical/viscerator,/turf/simulated/floor,/area/submap/MilitaryCamp1) +"B" = (/mob/living/simple_mob/mechanical/viscerator,/turf/template_noop,/area/submap/MilitaryCamp1) +"C" = (/obj/structure/table,/turf/simulated/floor,/area/submap/MilitaryCamp1) +"D" = (/obj/structure/table/standard,/obj/random/firstaid,/turf/simulated/floor,/area/submap/MilitaryCamp1) +"E" = (/obj/effect/decal/cleanable/dirt,/obj/random/landmine,/turf/simulated/floor,/area/submap/MilitaryCamp1) +"F" = (/obj/machinery/door/airlock,/obj/effect/mine,/turf/simulated/floor,/area/submap/MilitaryCamp1) +"G" = (/obj/structure/flora/tree/dead,/turf/template_noop,/area/submap/MilitaryCamp1) +"H" = (/obj/random/landmine,/turf/template_noop,/area/template_noop) +"I" = (/obj/structure/table/standard,/obj/random/cigarettes,/obj/item/weapon/flame/lighter/random,/turf/simulated/floor,/area/submap/MilitaryCamp1) +"J" = (/obj/structure/table/standard,/obj/random/toolbox,/turf/simulated/floor,/area/submap/MilitaryCamp1) +"K" = (/obj/effect/decal/cleanable/blood,/obj/random/landmine,/turf/template_noop,/area/submap/MilitaryCamp1) (1,1,1) = {" -a -a -a -a -a -a -a -a -a -a -a -a -H -a -a -a -a -a -a -a -"} -(2,1,1) = {" -a -b -g -b -d -b -b -b -b -b -f -b -b -G -b -b -b -c -b -a -"} -(3,1,1) = {" -a -b -h -c -k -b -b -b -b -b -d -b -b -b -b -d -c -j -c -a -"} -(4,1,1) = {" -a -c -c -c -b -b -d -b -y -b -b -b -B -b -e -d -b -c -c -a -"} -(5,1,1) = {" -a -b -d -b -b -b -m -m -m -o -o -r -m -m -b -b -b -d -e -a -"} -(6,1,1) = {" -a -d -b -b -l -m -m -m -m -m -m -m -m -m -m -b -d -b -b -a -"} -(7,1,1) = {" -a -b -b -d -m -m -q -q -z -q -q -z -q -I -m -m -b -b -d -a -"} -(8,1,1) = {" -a -e -b -b -m -m -o -r -m -o -o -F -o -J -m -m -m -b -b -a -"} -(9,1,1) = {" -a -f -b -b -n -o -o -u -m -o -o -m -r -m -m -m -m -i -k -a -"} -(10,1,1) = {" -a -d -b -k -o -n -r -v -A -v -C -m -v -o -z -v -b -d -f -a -"} -(11,1,1) = {" -a -b -b -l -m -m -m -m -m -o -D -m -E -o -o -o -y -b -b -a -"} -(12,1,1) = {" -a -b -f -b -m -m -s -w -m -q -q -m -v -q -m -m -m -l -b -a -"} -(13,1,1) = {" -a -b -i -b -n -m -t -x -m -A -E -z -q -q -m -m -m -b -d -a -"} -(14,1,1) = {" -a -b -b -b -m -m -q -x -z -v -v -z -q -q -m -m -b -d -c -a -"} -(15,1,1) = {" -a -b -c -c -p -m -m -m -m -m -m -m -m -m -m -b -g -c -c -a -"} -(16,1,1) = {" -a -b -j -c -c -b -m -m -r -m -m -r -m -m -b -c -c -j -b -a -"} -(17,1,1) = {" -a -b -b -g -b -d -b -b -B -b -b -b -b -p -i -c -b -k -b -a -"} -(18,1,1) = {" -a -b -b -k -b -b -e -b -d -b -i -G -b -b -b -i -b -b -b -a -"} -(19,1,1) = {" -a -b -b -b -b -d -b -d -b -b -d -b -b -K -b -b -b -b -b -a -"} -(20,1,1) = {" -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -"} +aaaaaaaaaaaaaaaaaaaa +abbcbdbefdbbbbbbbbba +aghcdbbbbbbfibcjbbba +abccbbdbbklbbbccgkba +adkbblmmnommnmpcbbba +abbbbmmmonmmmmmbdbda +abbdmmqoormstqmmbeba +abbbmmqruvmwxxmmbbda +abbymmzmmAmmmzmrBdba +abbbomqoovoqAvmmbbba +afdbomqooCDqEvmmbida +abbbrmzFmmmmzzmrbGba +HbbBmmqorvEvqqmmbbba +aGbbmmIJmooqqqmmpbKa +abbebmmmmzommmmbibba +abddbbmmmvommmbcciba +abcbbdbmmbymmbgcbbba +acjcdbbbidblbdcjkbba +abccebdbkfbbdccbbbba +aaaaaaaaaaaaaaaaaaaa +"} \ No newline at end of file diff --git a/maps/submaps/surface_submaps/wilderness/MHR.dmm b/maps/submaps/surface_submaps/wilderness/MHR.dmm index f063126b3f..7c2d20c306 100644 --- a/maps/submaps/surface_submaps/wilderness/MHR.dmm +++ b/maps/submaps/surface_submaps/wilderness/MHR.dmm @@ -1,545 +1,42 @@ -//MAP CONVERTED BY dmm2tgm.py THIS HEADER COMMENT PREVENTS RECONVERSION, DO NOT REMOVE -"a" = ( -/turf/template_noop, -/area/template_noop) -"b" = ( -/turf/template_noop, -/area/submap/MHR) -"c" = ( -/obj/structure/flora/tree/sif, -/turf/template_noop, -/area/submap/MHR) -"d" = ( -/turf/simulated/floor/outdoors/dirt{ - outdoors = 0 - }, -/area/submap/MHR) -"e" = ( -/turf/simulated/mineral/ignore_mapgen, -/area/submap/MHR) -"f" = ( -/obj/effect/decal/cleanable/spiderling_remains, -/turf/simulated/floor/outdoors/dirt{ - outdoors = 0 - }, -/area/submap/MHR) -"g" = ( -/turf/simulated/floor/outdoors/dirt, -/area/submap/MHR) -"h" = ( -/obj/structure/table/rack, -/obj/item/weapon/storage/backpack, -/turf/template_noop, -/area/submap/MHR) -"i" = ( -/obj/structure/table/standard, -/turf/template_noop, -/area/submap/MHR) -"j" = ( -/obj/structure/table/standard, -/obj/item/weapon/paper{ - info = "Do not enter the cave. The estimated active time of the Vicerators is much longer due to the improvements on the rotor bearings. It's estimated to be roughly a few months before we start to see any chancces of mechanical failure. "; - name = "NOTICE: DO NOT ENTER" - }, -/turf/template_noop, -/area/submap/MHR) -"k" = ( -/obj/effect/decal/cleanable/cobweb2, -/turf/simulated/floor/outdoors/dirt{ - outdoors = 0 - }, -/area/submap/MHR) -"l" = ( -/mob/living/simple_animal/hostile/viscerator, -/turf/simulated/floor/outdoors/dirt{ - outdoors = 0 - }, -/area/submap/MHR) -"m" = ( -/obj/item/weapon/reagent_containers/food/snacks/xenomeat/spidermeat, -/turf/simulated/floor/outdoors/dirt{ - outdoors = 0 - }, -/area/submap/MHR) -"n" = ( -/obj/effect/decal/cleanable/cobweb2, -/mob/living/simple_animal/hostile/viscerator, -/turf/simulated/floor/outdoors/dirt{ - outdoors = 0 - }, -/area/submap/MHR) -"o" = ( -/obj/effect/decal/cleanable/cobweb, -/turf/simulated/floor/outdoors/dirt{ - outdoors = 0 - }, -/area/submap/MHR) -"p" = ( -/obj/effect/decal/cleanable/spiderling_remains, -/obj/effect/decal/cleanable/cobweb, -/turf/simulated/floor/outdoors/dirt{ - outdoors = 0 - }, -/area/submap/MHR) -"q" = ( -/obj/effect/decal/remains/robot, -/turf/simulated/floor/outdoors/dirt{ - outdoors = 0 - }, -/area/submap/MHR) -"r" = ( -/obj/effect/decal/remains, -/obj/item/clothing/mask/gas/explorer, -/obj/item/weapon/material/twohanded/fireaxe, -/turf/simulated/floor/outdoors/dirt{ - outdoors = 0 - }, -/area/submap/MHR) -"t" = ( -/obj/effect/decal/cleanable/spiderling_remains, -/mob/living/simple_animal/hostile/viscerator, -/turf/simulated/floor/outdoors/dirt{ - outdoors = 0 - }, -/area/submap/MHR) +"a" = (/turf/template_noop,/area/template_noop) +"b" = (/turf/template_noop,/area/submap/MHR) +"c" = (/obj/structure/flora/tree/sif,/turf/template_noop,/area/submap/MHR) +"d" = (/turf/simulated/floor/outdoors/dirt{outdoors = 0},/area/submap/MHR) +"e" = (/turf/simulated/mineral/ignore_mapgen,/area/submap/MHR) +"f" = (/obj/effect/decal/cleanable/spiderling_remains,/turf/simulated/floor/outdoors/dirt{outdoors = 0},/area/submap/MHR) +"g" = (/turf/simulated/floor/outdoors/dirt,/area/submap/MHR) +"h" = (/obj/structure/table/rack,/obj/item/weapon/storage/backpack,/turf/template_noop,/area/submap/MHR) +"i" = (/obj/structure/table/standard,/turf/template_noop,/area/submap/MHR) +"j" = (/obj/structure/table/standard,/obj/item/weapon/paper{info = "Do not enter the cave. The estimated active time of the Vicerators is much longer due to the improvements on the rotor bearings. It's estimated to be roughly a few months before we start to see any chancces of mechanical failure. "; name = "NOTICE: DO NOT ENTER"},/turf/template_noop,/area/submap/MHR) +"k" = (/obj/effect/decal/cleanable/cobweb2,/turf/simulated/floor/outdoors/dirt{outdoors = 0},/area/submap/MHR) +"l" = (/mob/living/simple_mob/mechanical/viscerator,/turf/simulated/floor/outdoors/dirt{outdoors = 0},/area/submap/MHR) +"m" = (/obj/item/weapon/reagent_containers/food/snacks/xenomeat/spidermeat,/turf/simulated/floor/outdoors/dirt{outdoors = 0},/area/submap/MHR) +"n" = (/obj/effect/decal/cleanable/cobweb2,/mob/living/simple_mob/mechanical/viscerator,/turf/simulated/floor/outdoors/dirt{outdoors = 0},/area/submap/MHR) +"o" = (/obj/effect/decal/cleanable/cobweb,/turf/simulated/floor/outdoors/dirt{outdoors = 0},/area/submap/MHR) +"p" = (/obj/effect/decal/cleanable/spiderling_remains,/obj/effect/decal/cleanable/cobweb,/turf/simulated/floor/outdoors/dirt{outdoors = 0},/area/submap/MHR) +"q" = (/obj/effect/decal/remains/robot,/turf/simulated/floor/outdoors/dirt{outdoors = 0},/area/submap/MHR) +"r" = (/obj/effect/decal/remains,/obj/item/clothing/mask/gas/explorer,/obj/item/weapon/material/twohanded/fireaxe,/turf/simulated/floor/outdoors/dirt{outdoors = 0},/area/submap/MHR) +"s" = (/obj/effect/decal/cleanable/spiderling_remains,/mob/living/simple_mob/mechanical/viscerator,/turf/simulated/floor/outdoors/dirt{outdoors = 0},/area/submap/MHR) (1,1,1) = {" -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -"} -(2,1,1) = {" -a -b -b -b -b -b -b -c -b -b -b -b -b -b -b -b -b -c -b -a -"} -(3,1,1) = {" -a -c -b -b -b -b -b -b -e -e -e -e -e -b -b -b -b -b -b -a -"} -(4,1,1) = {" -a -b -b -b -b -b -b -e -e -e -e -e -e -e -e -e -b -b -b -a -"} -(5,1,1) = {" -a -b -b -b -b -b -e -e -e -e -e -e -e -e -e -e -e -b -b -a -"} -(6,1,1) = {" -a -b -b -b -b -e -e -e -e -e -p -l -d -l -e -e -e -e -c -a -"} -(7,1,1) = {" -a -b -b -b -h -e -e -e -e -e -l -d -l -l -t -e -e -e -b -a -"} -(8,1,1) = {" -a -b -b -b -i -e -e -e -e -l -l -l -d -l -e -e -e -e -b -a -"} -(9,1,1) = {" -a -b -b -b -j -e -e -e -e -m -l -d -f -l -e -e -e -e -b -a -"} -(10,1,1) = {" -a -b -b -b -e -e -e -e -e -n -d -l -d -d -d -e -e -e -b -a -"} -(11,1,1) = {" -a -b -b -b -e -e -e -e -e -e -q -d -d -d -l -e -e -e -b -a -"} -(12,1,1) = {" -a -b -d -d -e -e -e -e -e -e -f -d -d -m -d -e -e -e -b -a -"} -(13,1,1) = {" -a -b -d -f -e -e -e -e -e -o -d -d -d -d -d -e -e -e -b -a -"} -(14,1,1) = {" -a -d -d -d -d -e -e -e -d -d -d -d -d -d -d -e -e -b -b -a -"} -(15,1,1) = {" -a -b -f -d -d -d -d -d -d -d -d -d -d -q -e -e -e -b -b -a -"} -(16,1,1) = {" -a -e -e -g -d -d -d -d -d -d -d -d -d -e -e -e -e -b -b -a -"} -(17,1,1) = {" -a -e -e -e -e -e -e -e -k -d -d -r -e -e -e -e -e -b -b -a -"} -(18,1,1) = {" -a -e -e -e -e -e -e -e -e -e -e -e -e -e -e -b -b -b -b -a -"} -(19,1,1) = {" -a -c -e -e -e -e -e -e -e -e -e -e -e -e -b -b -b -b -c -a -"} -(20,1,1) = {" -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -"} +aaaaaaaaaaaaaaaaaaaa +abcbbbbbbbbbbdbeeeca +abbbbbbbbbbdddfeeeea +abbbbbbbbbbdfddgeeea +abbbbbhijeeeedddeeea +abbbbeeeeeeeeeddeeea +abbbeeeeeeeeeeddeeea +acbeeeeeeeeeeeddeeea +abeeeeeeeeeeedddkeea +abeeeeelmneeoddddeea +abeeepllldqfdddddeea +abeeeldldlddddddreea +abeeedldfdddddddeeea +abbeellllddmddqeeeea +abbeeeseedldddeeeeba +abbeeeeeeeeeeeeeebba +abbbeeeeeeeeeeeeebba +acbbbeeeeeeeebbbbbba +abbbbcbbbbbbbbbbbbca +aaaaaaaaaaaaaaaaaaaa +"} \ No newline at end of file diff --git a/maps/submaps/surface_submaps/wilderness/Manor1.dmm b/maps/submaps/surface_submaps/wilderness/Manor1.dmm index 9cb26d7a44..ec837531c4 100644 --- a/maps/submaps/surface_submaps/wilderness/Manor1.dmm +++ b/maps/submaps/surface_submaps/wilderness/Manor1.dmm @@ -1,2999 +1,188 @@ -//MAP CONVERTED BY dmm2tgm.py THIS HEADER COMMENT PREVENTS RECONVERSION, DO NOT REMOVE -"aa" = ( -/turf/template_noop, -/area/submap/Manor1) -"ab" = ( -/turf/simulated/wall/wood, -/area/submap/Manor1) -"ac" = ( -/obj/structure/window/reinforced/full, -/turf/simulated/floor/holofloor/wood, -/area/submap/Manor1) -"ad" = ( -/obj/structure/bed/chair/wood{ - icon_state = "wooden_chair"; - dir = 4 - }, -/turf/simulated/floor/holofloor/wood, -/area/submap/Manor1) -"ae" = ( -/obj/structure/table/woodentable, -/obj/item/weapon/reagent_containers/food/drinks/cans/waterbottle, -/turf/simulated/floor/holofloor/wood, -/area/submap/Manor1) -"af" = ( -/obj/structure/bed/chair/wood{ - icon_state = "wooden_chair"; - dir = 8 - }, -/turf/simulated/floor/holofloor/wood, -/area/submap/Manor1) -"ag" = ( -/turf/simulated/floor/holofloor/wood, -/area/submap/Manor1) -"ah" = ( -/obj/structure/flora/pottedplant/dead, -/turf/simulated/floor/holofloor/wood, -/area/submap/Manor1) -"ai" = ( -/obj/structure/flora/pottedplant/drooping, -/turf/simulated/floor/holofloor/wood, -/area/submap/Manor1) -"aj" = ( -/obj/structure/table/woodentable, -/obj/item/clothing/mask/smokable/cigarette/cigar, -/obj/item/weapon/material/ashtray/glass, -/turf/simulated/floor/holofloor/wood, -/area/submap/Manor1) -"ak" = ( -/obj/structure/flora/pottedplant/dead, -/obj/effect/decal/cleanable/cobweb, -/turf/simulated/floor/holofloor/wood, -/area/submap/Manor1) -"al" = ( -/obj/structure/table/woodentable, -/turf/simulated/floor/holofloor/wood, -/area/submap/Manor1) -"am" = ( -/obj/structure/table/woodentable, -/obj/item/device/flashlight, -/turf/simulated/floor/holofloor/wood, -/area/submap/Manor1) -"an" = ( -/obj/effect/decal/cleanable/dirt, -/turf/simulated/floor/holofloor/wood, -/area/submap/Manor1) -"ao" = ( -/obj/structure/mopbucket, -/obj/effect/decal/cleanable/cobweb, -/turf/simulated/floor/holofloor/wood, -/area/submap/Manor1) -"ap" = ( -/obj/structure/sink, -/turf/simulated/wall/wood, -/area/submap/Manor1) -"aq" = ( -/turf/simulated/floor/carpet/bcarpet, -/area/submap/Manor1) -"ar" = ( -/obj/effect/decal/cleanable/dirt, -/turf/simulated/floor/carpet/bcarpet, -/area/submap/Manor1) -"as" = ( -/obj/structure/simple_door/wood, -/turf/simulated/floor/holofloor/wood, -/area/submap/Manor1) -"at" = ( -/obj/structure/table/woodentable, -/obj/item/device/flashlight/lamp, -/obj/effect/decal/cleanable/blood/gibs/robot, -/turf/simulated/floor/holofloor/wood, -/area/submap/Manor1) -"au" = ( -/obj/structure/bed, -/obj/item/weapon/bedsheet, -/obj/effect/decal/cleanable/blood/oil, -/turf/simulated/floor/holofloor/wood, -/area/submap/Manor1) -"av" = ( -/obj/structure/janitorialcart, -/turf/simulated/floor/holofloor/wood, -/area/submap/Manor1) -"aw" = ( -/obj/structure/table/woodentable, -/obj/item/weapon/mop, -/obj/item/weapon/reagent_containers/glass/bucket, -/turf/simulated/floor/holofloor/wood, -/area/submap/Manor1) -"ax" = ( -/obj/structure/closet/cabinet, -/turf/simulated/floor/holofloor/wood, -/area/submap/Manor1) -"ay" = ( -/obj/effect/decal/cleanable/blood/gibs/robot/limb, -/turf/simulated/floor/holofloor/wood, -/area/submap/Manor1) -"az" = ( -/obj/structure/table/woodentable, -/obj/item/trash/candle, -/turf/simulated/floor/holofloor/wood, -/area/submap/Manor1) -"aA" = ( -/obj/effect/decal/cleanable/dirt, -/obj/effect/spider/stickyweb, -/turf/simulated/floor/holofloor/wood, -/area/submap/Manor1) -"aB" = ( -/obj/effect/decal/cleanable/dirt, -/obj/effect/spider/stickyweb, -/mob/living/simple_animal/hostile/giant_spider/lurker, -/turf/simulated/floor/holofloor/wood, -/area/submap/Manor1) -"aC" = ( -/obj/structure/table/woodentable, -/obj/item/device/flashlight/maglight, -/turf/simulated/floor/holofloor/wood, -/area/submap/Manor1) -"aD" = ( -/obj/structure/table/woodentable, -/obj/item/device/flashlight/lamp, -/turf/simulated/floor/holofloor/wood, -/area/submap/Manor1) -"aE" = ( -/obj/structure/closet/cabinet, -/obj/effect/decal/cleanable/cobweb2, -/obj/item/clothing/head/hood/winter, -/obj/item/clothing/shoes/boots/winter, -/obj/item/clothing/suit/storage/hooded/wintercoat, -/turf/simulated/floor/holofloor/wood, -/area/submap/Manor1) -"aF" = ( -/obj/structure/table/woodentable, -/obj/effect/decal/cleanable/cobweb, -/turf/simulated/floor/holofloor/wood, -/area/submap/Manor1) -"aG" = ( -/obj/structure/table/woodentable, -/obj/item/weapon/paper, -/turf/simulated/floor/holofloor/wood, -/area/submap/Manor1) -"aH" = ( -/obj/structure/table/woodentable, -/obj/item/weapon/pen, -/turf/simulated/floor/holofloor/wood, -/area/submap/Manor1) -"aI" = ( -/obj/structure/flora/pottedplant/dead, -/obj/effect/spider/stickyweb, -/turf/simulated/floor/holofloor/wood, -/area/submap/Manor1) -"aJ" = ( -/obj/effect/spider/stickyweb, -/mob/living/simple_animal/hostile/giant_spider/lurker, -/turf/simulated/floor/holofloor/wood, -/area/submap/Manor1) -"aK" = ( -/obj/effect/spider/stickyweb, -/turf/simulated/floor/holofloor/wood, -/area/submap/Manor1) -"aL" = ( -/obj/structure/fireplace, -/turf/simulated/floor/holofloor/wood, -/area/submap/Manor1) -"aM" = ( -/mob/living/simple_animal/hostile/giant_spider/lurker, -/turf/simulated/floor/holofloor/wood, -/area/submap/Manor1) -"aN" = ( -/obj/effect/decal/cleanable/cobweb2, -/turf/simulated/floor/holofloor/wood, -/area/submap/Manor1) -"aO" = ( -/obj/structure/bed, -/obj/item/weapon/bedsheet, -/turf/simulated/floor/holofloor/wood, -/area/submap/Manor1) -"aP" = ( -/obj/structure/bed/chair/wood, -/turf/simulated/floor/holofloor/wood, -/area/submap/Manor1) -"aQ" = ( -/turf/simulated/floor/carpet/purcarpet, -/area/submap/Manor1) -"aR" = ( -/obj/structure/table/standard, -/turf/simulated/floor/holofloor/wood, -/area/submap/Manor1) -"aS" = ( -/obj/structure/table/standard, -/obj/machinery/microwave, -/turf/simulated/floor/holofloor/wood, -/area/submap/Manor1) -"aT" = ( -/obj/structure/closet/cabinet, -/obj/random/projectile/shotgun, -/turf/simulated/floor/holofloor/wood, -/area/submap/Manor1) -"aU" = ( -/obj/structure/bookcase, -/turf/simulated/floor/holofloor/wood, -/area/submap/Manor1) -"aV" = ( -/obj/structure/table/woodentable, -/obj/item/weapon/material/kitchen/utensil/fork, -/turf/simulated/floor/holofloor/wood, -/area/submap/Manor1) -"aW" = ( -/obj/structure/table/standard, -/obj/item/weapon/reagent_containers/food/condiment/small/peppermill, -/turf/simulated/floor/holofloor/wood, -/area/submap/Manor1) -"aX" = ( -/obj/structure/table/standard, -/obj/item/weapon/material/knife, -/turf/simulated/floor/holofloor/wood, -/area/submap/Manor1) -"aY" = ( -/obj/machinery/cooker/oven, -/turf/simulated/floor/holofloor/wood, -/area/submap/Manor1) -"aZ" = ( -/obj/structure/table/standard, -/obj/item/weapon/reagent_containers/food/condiment/small/saltshaker, -/turf/simulated/floor/holofloor/wood, -/area/submap/Manor1) -"ba" = ( -/obj/machinery/cooker/grill, -/turf/simulated/floor/holofloor/wood, -/area/submap/Manor1) -"bb" = ( -/obj/structure/table/standard, -/obj/item/weapon/tray, -/obj/item/weapon/tray, -/turf/simulated/floor/holofloor/wood, -/area/submap/Manor1) -"bc" = ( -/obj/structure/table/standard, -/obj/item/weapon/material/knife/butch, -/turf/simulated/floor/holofloor/wood, -/area/submap/Manor1) -"bd" = ( -/obj/structure/table/standard, -/obj/item/weapon/reagent_containers/food/drinks/cans/waterbottle, -/obj/item/weapon/reagent_containers/food/drinks/cans/waterbottle, -/turf/simulated/floor/holofloor/wood, -/area/submap/Manor1) -"be" = ( -/obj/random/trash, -/turf/simulated/floor/holofloor/wood, -/area/submap/Manor1) -"bf" = ( -/obj/structure/closet/cabinet, -/obj/item/clothing/head/hood/winter, -/obj/item/clothing/shoes/boots/winter, -/obj/item/clothing/suit/storage/hooded/wintercoat, -/obj/random/contraband, -/turf/simulated/floor/holofloor/wood, -/area/submap/Manor1) -"bg" = ( -/obj/structure/table/woodentable, -/obj/item/weapon/paper_bin, -/turf/simulated/floor/holofloor/wood, -/area/submap/Manor1) -"bh" = ( -/obj/structure/bed/chair/wood{ - icon_state = "wooden_chair"; - dir = 1 - }, -/turf/simulated/floor/holofloor/wood, -/area/submap/Manor1) -"bi" = ( -/obj/effect/decal/cleanable/cobweb, -/turf/simulated/floor/holofloor/wood{ - icon_state = "wood_broken0" - }, -/area/submap/Manor1) -"bj" = ( -/obj/effect/decal/cleanable/cobweb, -/turf/simulated/floor/holofloor/wood, -/area/submap/Manor1) -"bk" = ( -/obj/random/plushielarge, -/turf/simulated/floor/holofloor/wood, -/area/submap/Manor1) -"bl" = ( -/turf/simulated/floor/carpet/blucarpet, -/area/submap/Manor1) -"bm" = ( -/obj/structure/loot_pile/surface/bones, -/obj/item/clothing/accessory/sweater/blue, -/turf/simulated/floor/carpet/blucarpet, -/area/submap/Manor1) -"bn" = ( -/obj/structure/window/reinforced/full, -/turf/template_noop, -/area/submap/Manor1) -"bo" = ( -/obj/item/weapon/material/twohanded/baseballbat/metal, -/turf/simulated/floor/carpet/blucarpet, -/area/submap/Manor1) -"bp" = ( -/obj/effect/decal/cleanable/blood, -/turf/simulated/floor/carpet/blucarpet, -/area/submap/Manor1) -"bq" = ( -/obj/effect/decal/cleanable/blood/drip, -/turf/simulated/floor/holofloor/wood, -/area/submap/Manor1) -"br" = ( -/obj/structure/bed/chair/comfy/purp{ - icon_state = "comfychair_preview"; - dir = 4 - }, -/turf/simulated/floor/holofloor/wood{ - icon_state = "wood_broken5" - }, -/area/submap/Manor1) -"bs" = ( -/obj/structure/table, -/turf/simulated/floor/holofloor/wood, -/area/submap/Manor1) -"bt" = ( -/obj/structure/bed/chair/wood{ - icon_state = "wooden_chair"; - dir = 4 - }, -/obj/effect/decal/cleanable/dirt, -/turf/simulated/floor/holofloor/wood, -/area/submap/Manor1) -"bu" = ( -/obj/structure/bed/chair/wood{ - icon_state = "wooden_chair"; - dir = 8 - }, -/obj/effect/decal/cleanable/dirt, -/turf/simulated/floor/holofloor/wood, -/area/submap/Manor1) -"bv" = ( -/obj/structure/table/standard, -/obj/item/weapon/reagent_containers/food/condiment/small/sugar, -/turf/simulated/floor/holofloor/wood, -/area/submap/Manor1) -"bw" = ( -/obj/effect/decal/cleanable/blood/drip, -/turf/simulated/floor/carpet/blucarpet, -/area/submap/Manor1) -"bx" = ( -/obj/structure/bed/chair/comfy/purp{ - icon_state = "comfychair_preview"; - dir = 4 - }, -/turf/simulated/floor/holofloor/wood, -/area/submap/Manor1) -"by" = ( -/obj/structure/closet/cabinet, -/obj/item/clothing/suit/storage/hooded/wintercoat, -/obj/item/clothing/head/hood/winter, -/obj/item/clothing/shoes/boots/winter, -/turf/simulated/floor/holofloor/wood, -/area/submap/Manor1) -"bz" = ( -/obj/structure/table/woodentable, -/obj/effect/decal/cleanable/dirt, -/turf/simulated/floor/holofloor/wood, -/area/submap/Manor1) -"bA" = ( -/obj/structure/table/standard, -/obj/item/weapon/material/kitchen/utensil/fork, -/obj/item/weapon/material/kitchen/utensil/fork, -/turf/simulated/floor/holofloor/wood, -/area/submap/Manor1) -"bB" = ( -/obj/structure/closet/secure_closet/freezer/fridge, -/obj/item/weapon/reagent_containers/food/snacks/stew, -/obj/item/weapon/reagent_containers/food/snacks/stew, -/turf/simulated/floor/holofloor/wood, -/area/submap/Manor1) -"bC" = ( -/obj/item/weapon/shovel, -/turf/simulated/floor/holofloor/wood, -/area/submap/Manor1) -"bD" = ( -/obj/structure/bed/chair/wood{ - icon_state = "wooden_chair"; - dir = 1 - }, -/obj/effect/decal/cleanable/dirt, -/turf/simulated/floor/holofloor/wood, -/area/submap/Manor1) -"bE" = ( -/obj/structure/table/standard, -/obj/item/weapon/material/kitchen/utensil/spoon, -/obj/item/weapon/material/kitchen/utensil/spoon, -/obj/item/weapon/material/kitchen/utensil/spoon, -/obj/effect/spider/stickyweb, -/turf/simulated/floor/holofloor/wood, -/area/submap/Manor1) -"bF" = ( -/obj/structure/table/standard, -/obj/effect/spider/stickyweb, -/turf/simulated/floor/holofloor/wood, -/area/submap/Manor1) -"bG" = ( -/obj/structure/closet/secure_closet/freezer/fridge, -/obj/item/weapon/reagent_containers/food/snacks/sausage, -/obj/item/weapon/reagent_containers/food/snacks/sausage, -/turf/simulated/floor/holofloor/wood, -/area/submap/Manor1) -"bH" = ( -/obj/effect/decal/cleanable/dirt, -/obj/structure/flora/pottedplant/drooping, -/turf/simulated/floor/holofloor/wood, -/area/submap/Manor1) -"bI" = ( -/obj/effect/decal/cleanable/dirt, -/obj/structure/flora/pottedplant/dead, -/turf/simulated/floor/holofloor/wood, -/area/submap/Manor1) -"bJ" = ( -/obj/structure/table/standard, -/obj/item/weapon/material/kitchen/rollingpin, -/obj/effect/spider/stickyweb, -/turf/simulated/floor/holofloor/wood, -/area/submap/Manor1) -"bK" = ( -/obj/structure/table/standard, -/obj/item/weapon/reagent_containers/glass/bottle/stoxin, -/turf/simulated/floor/holofloor/wood, -/area/submap/Manor1) -"bL" = ( -/obj/structure/table/woodentable, -/obj/item/weapon/storage/fancy/candle_box, -/turf/simulated/floor/holofloor/wood, -/area/submap/Manor1) -"bM" = ( -/obj/machinery/papershredder, -/turf/simulated/floor/holofloor/wood, -/area/submap/Manor1) -"bN" = ( -/obj/structure/simple_door/wood, -/turf/simulated/floor/carpet/purcarpet, -/area/submap/Manor1) -"bO" = ( -/obj/machinery/icecream_vat, -/turf/simulated/floor/holofloor/wood, -/area/submap/Manor1) -"bP" = ( -/obj/effect/decal/cleanable/dirt, -/turf/simulated/floor/carpet/blucarpet, -/area/submap/Manor1) -"bQ" = ( -/obj/effect/decal/cleanable/blood, -/turf/simulated/floor/holofloor/wood, -/area/submap/Manor1) -"bR" = ( -/obj/effect/decal/cleanable/cobweb, -/obj/structure/table/woodentable, -/turf/simulated/floor/holofloor/wood, -/area/submap/Manor1) -"bS" = ( -/obj/structure/flora/pottedplant/subterranean, -/turf/simulated/floor/holofloor/wood, -/area/submap/Manor1) -"bT" = ( -/obj/item/weapon/material/minihoe, -/turf/simulated/floor/carpet/blucarpet, -/area/submap/Manor1) -"bU" = ( -/obj/effect/decal/cleanable/dirt, -/turf/simulated/floor/carpet/purcarpet, -/area/submap/Manor1) -"bV" = ( -/turf/simulated/floor/holofloor/wood{ - icon_state = "wood_broken6" - }, -/area/submap/Manor1) -"bW" = ( -/obj/machinery/washing_machine, -/turf/simulated/floor/holofloor/wood, -/area/submap/Manor1) -"bX" = ( -/obj/structure/table/woodentable, -/obj/structure/bedsheetbin, -/obj/effect/decal/cleanable/cobweb2, -/turf/simulated/floor/holofloor/wood, -/area/submap/Manor1) -"bY" = ( -/obj/structure/table/rack, -/turf/simulated/floor/holofloor/wood, -/area/submap/Manor1) -"bZ" = ( -/obj/structure/closet/crate, -/obj/item/stack/cable_coil/random_belt, -/obj/random/cash, -/turf/simulated/floor/holofloor/wood, -/area/submap/Manor1) -"ca" = ( -/obj/structure/table/woodentable, -/obj/item/weapon/melee/umbrella/random, -/turf/simulated/floor/holofloor/wood, -/area/submap/Manor1) -"cb" = ( -/obj/structure/closet/cabinet, -/obj/random/gun/random, -/turf/simulated/floor/holofloor/wood, -/area/submap/Manor1) -"cc" = ( -/obj/structure/closet/cabinet, -/obj/item/weapon/cell/device/weapon, -/obj/item/weapon/cell/device/weapon, -/obj/random/medical, -/turf/simulated/floor/holofloor/wood, -/area/submap/Manor1) -"cd" = ( -/obj/structure/table/woodentable, -/obj/item/device/flashlight/lamp/green, -/turf/simulated/floor/holofloor/wood, -/area/submap/Manor1) -"ce" = ( -/obj/structure/bed/double, -/obj/item/weapon/bedsheet/rddouble, -/obj/structure/curtain/open/bed, -/turf/simulated/floor/holofloor/wood, -/area/submap/Manor1) -"cf" = ( -/obj/structure/table/woodentable, -/obj/item/weapon/storage/wallet/random, -/turf/simulated/floor/holofloor/wood, -/area/submap/Manor1) -"cg" = ( -/obj/structure/flora/pottedplant/dead, -/obj/effect/decal/cleanable/cobweb2, -/turf/simulated/floor/holofloor/wood, -/area/submap/Manor1) -"ch" = ( -/obj/structure/loot_pile/surface/bones, -/obj/item/clothing/accessory/sweater, -/turf/simulated/floor/carpet/blucarpet, -/area/submap/Manor1) -"ci" = ( -/obj/structure/closet/crate, -/obj/item/weapon/flame/lighter/random, -/obj/random/powercell, -/turf/simulated/floor/holofloor/wood, -/area/submap/Manor1) -"cj" = ( -/obj/structure/closet/cabinet, -/obj/item/clothing/shoes/boots/winter, -/obj/item/clothing/suit/storage/hooded/wintercoat, -/obj/item/clothing/head/hood/winter, -/turf/simulated/floor/holofloor/wood, -/area/submap/Manor1) -"ck" = ( -/obj/effect/decal/cleanable/spiderling_remains, -/turf/simulated/floor/holofloor/wood, -/area/submap/Manor1) -"cl" = ( -/turf/simulated/floor/carpet/turcarpet, -/area/submap/Manor1) -"cm" = ( -/obj/effect/decal/cleanable/blood, -/obj/structure/bed/chair/comfy/purp{ - icon_state = "comfychair_preview"; - dir = 4 - }, -/turf/simulated/floor/holofloor/wood, -/area/submap/Manor1) -"cn" = ( -/obj/structure/closet/crate, -/obj/item/weapon/storage/wallet/random, -/turf/simulated/floor/holofloor/wood, -/area/submap/Manor1) -"co" = ( -/obj/structure/coatrack, -/turf/simulated/floor/holofloor/wood, -/area/submap/Manor1) -"cp" = ( -/obj/structure/loot_pile/surface/bones, -/obj/item/clothing/suit/storage/hooded/wintercoat, -/turf/simulated/floor/holofloor/wood, -/area/submap/Manor1) -"cq" = ( -/obj/structure/loot_pile/surface/bones, -/obj/item/clothing/under/suit_jacket, -/obj/item/clothing/shoes/black, -/obj/random/projectile/random, -/turf/simulated/floor/holofloor/wood, -/area/submap/Manor1) -"cr" = ( -/obj/structure/simple_door/wood, -/obj/effect/decal/cleanable/dirt, -/turf/simulated/floor/carpet/purcarpet, -/area/submap/Manor1) -"cs" = ( -/obj/item/weapon/material/twohanded/spear, -/turf/simulated/floor/holofloor/wood, -/area/submap/Manor1) -"ct" = ( -/obj/structure/closet/cabinet{ - opened = 1 - }, -/turf/simulated/floor/holofloor/wood, -/area/submap/Manor1) -"cu" = ( -/obj/effect/decal/remains, -/obj/item/weapon/material/knife/tacknife/combatknife, -/turf/simulated/floor/holofloor/wood, -/area/submap/Manor1) -"cv" = ( -/obj/structure/sink{ - pixel_y = 30 - }, -/turf/simulated/floor/tiled/hydro, -/area/submap/Manor1) -"cw" = ( -/turf/simulated/floor/tiled/hydro, -/area/submap/Manor1) -"cx" = ( -/obj/structure/table/standard, -/obj/effect/decal/cleanable/cobweb2, -/turf/simulated/floor/tiled/hydro, -/area/submap/Manor1) -"cy" = ( -/obj/structure/table/standard, -/obj/item/weapon/towel/random, -/obj/item/weapon/towel/random, -/turf/simulated/floor/tiled/hydro, -/area/submap/Manor1) -"cz" = ( -/obj/effect/decal/cleanable/cobweb2, -/obj/effect/spider/stickyweb, -/turf/simulated/floor/holofloor/wood, -/area/submap/Manor1) -"cA" = ( -/obj/item/weapon/paper/crumpled, -/turf/simulated/floor/holofloor/wood, -/area/submap/Manor1) -"cB" = ( -/turf/simulated/floor/holofloor/wood{ - icon_state = "wood_broken3" - }, -/area/submap/Manor1) -"cC" = ( -/obj/effect/decal/cleanable/spiderling_remains, -/obj/effect/spider/stickyweb, -/turf/simulated/floor/holofloor/wood, -/area/submap/Manor1) -"cD" = ( -/obj/structure/closet/crate, -/obj/item/clothing/suit/armor/vest, -/turf/simulated/floor/holofloor/wood, -/area/submap/Manor1) -"cE" = ( -/obj/structure/closet/crate, -/turf/simulated/floor/holofloor/wood, -/area/submap/Manor1) -"cF" = ( -/obj/structure/simple_door/wood, -/turf/simulated/floor/tiled/hydro, -/area/submap/Manor1) -"cG" = ( -/obj/structure/toilet{ - icon_state = "toilet00"; - dir = 8 - }, -/turf/simulated/floor/tiled/hydro, -/area/submap/Manor1) -"cH" = ( -/obj/machinery/shower{ - icon_state = "shower"; - dir = 8 - }, -/obj/structure/curtain/open/shower, -/turf/simulated/floor/tiled/hydro, -/area/submap/Manor1) -"cI" = ( -/obj/item/stack/material/wood, -/turf/simulated/floor/holofloor/wood, -/area/submap/Manor1) -"cJ" = ( -/obj/machinery/shower{ - icon_state = "shower"; - dir = 8 - }, -/obj/structure/curtain/open/shower, -/obj/random/soap, -/turf/simulated/floor/tiled/hydro, -/area/submap/Manor1) -"cK" = ( -/obj/structure/table/standard, -/turf/simulated/floor/tiled/hydro, -/area/submap/Manor1) -"cL" = ( -/obj/structure/toilet{ - icon_state = "toilet00"; - dir = 1 - }, -/turf/simulated/floor/tiled/hydro, -/area/submap/Manor1) -"cM" = ( -/obj/structure/table/woodentable, -/obj/item/device/laptop, -/turf/simulated/floor/holofloor/wood, -/area/submap/Manor1) -"cN" = ( -/turf/template_noop, -/area/template_noop) -"cO" = ( -/obj/structure/flora/tree/sif, -/turf/template_noop, -/area/submap/Manor1) +"aa" = (/turf/template_noop,/area/submap/Manor1) +"ab" = (/turf/simulated/wall/wood,/area/submap/Manor1) +"ac" = (/obj/structure/window/reinforced/full,/turf/simulated/floor/holofloor/wood,/area/submap/Manor1) +"ad" = (/obj/structure/bed/chair/wood{icon_state = "wooden_chair"; dir = 4},/turf/simulated/floor/holofloor/wood,/area/submap/Manor1) +"ae" = (/obj/structure/table/woodentable,/obj/item/weapon/reagent_containers/food/drinks/cans/waterbottle,/turf/simulated/floor/holofloor/wood,/area/submap/Manor1) +"af" = (/obj/structure/bed/chair/wood{icon_state = "wooden_chair"; dir = 8},/turf/simulated/floor/holofloor/wood,/area/submap/Manor1) +"ag" = (/turf/simulated/floor/holofloor/wood,/area/submap/Manor1) +"ah" = (/obj/structure/flora/pottedplant/dead,/turf/simulated/floor/holofloor/wood,/area/submap/Manor1) +"ai" = (/obj/structure/flora/pottedplant/drooping,/turf/simulated/floor/holofloor/wood,/area/submap/Manor1) +"aj" = (/obj/structure/table/woodentable,/obj/item/clothing/mask/smokable/cigarette/cigar,/obj/item/weapon/material/ashtray/glass,/turf/simulated/floor/holofloor/wood,/area/submap/Manor1) +"ak" = (/obj/structure/flora/pottedplant/dead,/obj/effect/decal/cleanable/cobweb,/turf/simulated/floor/holofloor/wood,/area/submap/Manor1) +"al" = (/obj/structure/table/woodentable,/turf/simulated/floor/holofloor/wood,/area/submap/Manor1) +"am" = (/obj/structure/table/woodentable,/obj/item/device/flashlight,/turf/simulated/floor/holofloor/wood,/area/submap/Manor1) +"an" = (/obj/effect/decal/cleanable/dirt,/turf/simulated/floor/holofloor/wood,/area/submap/Manor1) +"ao" = (/obj/structure/mopbucket,/obj/effect/decal/cleanable/cobweb,/turf/simulated/floor/holofloor/wood,/area/submap/Manor1) +"ap" = (/obj/structure/sink,/turf/simulated/wall/wood,/area/submap/Manor1) +"aq" = (/turf/simulated/floor/carpet/bcarpet,/area/submap/Manor1) +"ar" = (/obj/effect/decal/cleanable/dirt,/turf/simulated/floor/carpet/bcarpet,/area/submap/Manor1) +"as" = (/obj/structure/simple_door/wood,/turf/simulated/floor/holofloor/wood,/area/submap/Manor1) +"at" = (/obj/structure/table/woodentable,/obj/item/device/flashlight/lamp,/obj/effect/decal/cleanable/blood/gibs/robot,/turf/simulated/floor/holofloor/wood,/area/submap/Manor1) +"au" = (/obj/structure/bed,/obj/item/weapon/bedsheet,/obj/effect/decal/cleanable/blood/oil,/turf/simulated/floor/holofloor/wood,/area/submap/Manor1) +"av" = (/obj/structure/janitorialcart,/turf/simulated/floor/holofloor/wood,/area/submap/Manor1) +"aw" = (/obj/structure/table/woodentable,/obj/item/weapon/mop,/obj/item/weapon/reagent_containers/glass/bucket,/turf/simulated/floor/holofloor/wood,/area/submap/Manor1) +"ax" = (/obj/structure/closet/cabinet,/turf/simulated/floor/holofloor/wood,/area/submap/Manor1) +"ay" = (/obj/effect/decal/cleanable/blood/gibs/robot/limb,/turf/simulated/floor/holofloor/wood,/area/submap/Manor1) +"az" = (/obj/structure/table/woodentable,/obj/item/trash/candle,/turf/simulated/floor/holofloor/wood,/area/submap/Manor1) +"aA" = (/obj/effect/decal/cleanable/dirt,/obj/effect/spider/stickyweb,/turf/simulated/floor/holofloor/wood,/area/submap/Manor1) +"aB" = (/obj/effect/decal/cleanable/dirt,/obj/effect/spider/stickyweb,/mob/living/simple_mob/animal/giant_spider/lurker,/turf/simulated/floor/holofloor/wood,/area/submap/Manor1) +"aC" = (/obj/structure/table/woodentable,/obj/item/device/flashlight/maglight,/turf/simulated/floor/holofloor/wood,/area/submap/Manor1) +"aD" = (/obj/structure/table/woodentable,/obj/item/device/flashlight/lamp,/turf/simulated/floor/holofloor/wood,/area/submap/Manor1) +"aE" = (/obj/structure/closet/cabinet,/obj/effect/decal/cleanable/cobweb2,/obj/item/clothing/head/hood/winter,/obj/item/clothing/shoes/boots/winter,/obj/item/clothing/suit/storage/hooded/wintercoat,/turf/simulated/floor/holofloor/wood,/area/submap/Manor1) +"aF" = (/obj/structure/table/woodentable,/obj/effect/decal/cleanable/cobweb,/turf/simulated/floor/holofloor/wood,/area/submap/Manor1) +"aG" = (/obj/structure/table/woodentable,/obj/item/weapon/paper,/turf/simulated/floor/holofloor/wood,/area/submap/Manor1) +"aH" = (/obj/structure/table/woodentable,/obj/item/weapon/pen,/turf/simulated/floor/holofloor/wood,/area/submap/Manor1) +"aI" = (/obj/structure/flora/pottedplant/dead,/obj/effect/spider/stickyweb,/turf/simulated/floor/holofloor/wood,/area/submap/Manor1) +"aJ" = (/obj/effect/spider/stickyweb,/mob/living/simple_mob/animal/giant_spider/lurker,/turf/simulated/floor/holofloor/wood,/area/submap/Manor1) +"aK" = (/obj/effect/spider/stickyweb,/turf/simulated/floor/holofloor/wood,/area/submap/Manor1) +"aL" = (/obj/structure/fireplace,/turf/simulated/floor/holofloor/wood,/area/submap/Manor1) +"aM" = (/mob/living/simple_mob/animal/giant_spider/lurker,/turf/simulated/floor/holofloor/wood,/area/submap/Manor1) +"aN" = (/obj/effect/decal/cleanable/cobweb2,/turf/simulated/floor/holofloor/wood,/area/submap/Manor1) +"aO" = (/obj/structure/bed,/obj/item/weapon/bedsheet,/turf/simulated/floor/holofloor/wood,/area/submap/Manor1) +"aP" = (/obj/structure/bed/chair/wood,/turf/simulated/floor/holofloor/wood,/area/submap/Manor1) +"aQ" = (/turf/simulated/floor/carpet/purcarpet,/area/submap/Manor1) +"aR" = (/obj/structure/table/standard,/turf/simulated/floor/holofloor/wood,/area/submap/Manor1) +"aS" = (/obj/structure/table/standard,/obj/machinery/microwave,/turf/simulated/floor/holofloor/wood,/area/submap/Manor1) +"aT" = (/obj/structure/closet/cabinet,/obj/random/projectile/shotgun,/turf/simulated/floor/holofloor/wood,/area/submap/Manor1) +"aU" = (/obj/structure/bookcase,/turf/simulated/floor/holofloor/wood,/area/submap/Manor1) +"aV" = (/obj/structure/table/woodentable,/obj/item/weapon/material/kitchen/utensil/fork,/turf/simulated/floor/holofloor/wood,/area/submap/Manor1) +"aW" = (/obj/structure/table/standard,/obj/item/weapon/reagent_containers/food/condiment/small/peppermill,/turf/simulated/floor/holofloor/wood,/area/submap/Manor1) +"aX" = (/obj/structure/table/standard,/obj/item/weapon/material/knife,/turf/simulated/floor/holofloor/wood,/area/submap/Manor1) +"aY" = (/obj/machinery/cooker/oven,/turf/simulated/floor/holofloor/wood,/area/submap/Manor1) +"aZ" = (/obj/structure/table/standard,/obj/item/weapon/reagent_containers/food/condiment/small/saltshaker,/turf/simulated/floor/holofloor/wood,/area/submap/Manor1) +"ba" = (/obj/machinery/cooker/grill,/turf/simulated/floor/holofloor/wood,/area/submap/Manor1) +"bb" = (/obj/structure/table/standard,/obj/item/weapon/tray,/obj/item/weapon/tray,/turf/simulated/floor/holofloor/wood,/area/submap/Manor1) +"bc" = (/obj/structure/table/standard,/obj/item/weapon/material/knife/butch,/turf/simulated/floor/holofloor/wood,/area/submap/Manor1) +"bd" = (/obj/structure/table/standard,/obj/item/weapon/reagent_containers/food/drinks/cans/waterbottle,/obj/item/weapon/reagent_containers/food/drinks/cans/waterbottle,/turf/simulated/floor/holofloor/wood,/area/submap/Manor1) +"be" = (/obj/random/trash,/turf/simulated/floor/holofloor/wood,/area/submap/Manor1) +"bf" = (/obj/structure/closet/cabinet,/obj/item/clothing/head/hood/winter,/obj/item/clothing/shoes/boots/winter,/obj/item/clothing/suit/storage/hooded/wintercoat,/obj/random/contraband,/turf/simulated/floor/holofloor/wood,/area/submap/Manor1) +"bg" = (/obj/structure/table/woodentable,/obj/item/weapon/paper_bin,/turf/simulated/floor/holofloor/wood,/area/submap/Manor1) +"bh" = (/obj/structure/bed/chair/wood{icon_state = "wooden_chair"; dir = 1},/turf/simulated/floor/holofloor/wood,/area/submap/Manor1) +"bi" = (/obj/effect/decal/cleanable/cobweb,/turf/simulated/floor/holofloor/wood{icon_state = "wood_broken0"},/area/submap/Manor1) +"bj" = (/obj/effect/decal/cleanable/cobweb,/turf/simulated/floor/holofloor/wood,/area/submap/Manor1) +"bk" = (/obj/random/plushielarge,/turf/simulated/floor/holofloor/wood,/area/submap/Manor1) +"bl" = (/turf/simulated/floor/carpet/blucarpet,/area/submap/Manor1) +"bm" = (/obj/structure/loot_pile/surface/bones,/obj/item/clothing/accessory/sweater/blue,/turf/simulated/floor/carpet/blucarpet,/area/submap/Manor1) +"bn" = (/obj/structure/window/reinforced/full,/turf/template_noop,/area/submap/Manor1) +"bo" = (/obj/item/weapon/material/twohanded/baseballbat/metal,/turf/simulated/floor/carpet/blucarpet,/area/submap/Manor1) +"bp" = (/obj/effect/decal/cleanable/blood,/turf/simulated/floor/carpet/blucarpet,/area/submap/Manor1) +"bq" = (/obj/effect/decal/cleanable/blood/drip,/turf/simulated/floor/holofloor/wood,/area/submap/Manor1) +"br" = (/obj/structure/bed/chair/comfy/purp{icon_state = "comfychair_preview"; dir = 4},/turf/simulated/floor/holofloor/wood{icon_state = "wood_broken5"},/area/submap/Manor1) +"bs" = (/obj/structure/table,/turf/simulated/floor/holofloor/wood,/area/submap/Manor1) +"bt" = (/obj/structure/bed/chair/wood{icon_state = "wooden_chair"; dir = 4},/obj/effect/decal/cleanable/dirt,/turf/simulated/floor/holofloor/wood,/area/submap/Manor1) +"bu" = (/obj/structure/bed/chair/wood{icon_state = "wooden_chair"; dir = 8},/obj/effect/decal/cleanable/dirt,/turf/simulated/floor/holofloor/wood,/area/submap/Manor1) +"bv" = (/obj/structure/table/standard,/obj/item/weapon/reagent_containers/food/condiment/small/sugar,/turf/simulated/floor/holofloor/wood,/area/submap/Manor1) +"bw" = (/obj/effect/decal/cleanable/blood/drip,/turf/simulated/floor/carpet/blucarpet,/area/submap/Manor1) +"bx" = (/obj/structure/bed/chair/comfy/purp{icon_state = "comfychair_preview"; dir = 4},/turf/simulated/floor/holofloor/wood,/area/submap/Manor1) +"by" = (/obj/structure/closet/cabinet,/obj/item/clothing/suit/storage/hooded/wintercoat,/obj/item/clothing/head/hood/winter,/obj/item/clothing/shoes/boots/winter,/turf/simulated/floor/holofloor/wood,/area/submap/Manor1) +"bz" = (/obj/structure/table/woodentable,/obj/effect/decal/cleanable/dirt,/turf/simulated/floor/holofloor/wood,/area/submap/Manor1) +"bA" = (/obj/structure/table/standard,/obj/item/weapon/material/kitchen/utensil/fork,/obj/item/weapon/material/kitchen/utensil/fork,/turf/simulated/floor/holofloor/wood,/area/submap/Manor1) +"bB" = (/obj/structure/closet/secure_closet/freezer/fridge,/obj/item/weapon/reagent_containers/food/snacks/stew,/obj/item/weapon/reagent_containers/food/snacks/stew,/turf/simulated/floor/holofloor/wood,/area/submap/Manor1) +"bC" = (/obj/item/weapon/shovel,/turf/simulated/floor/holofloor/wood,/area/submap/Manor1) +"bD" = (/obj/structure/bed/chair/wood{icon_state = "wooden_chair"; dir = 1},/obj/effect/decal/cleanable/dirt,/turf/simulated/floor/holofloor/wood,/area/submap/Manor1) +"bE" = (/obj/structure/table/standard,/obj/item/weapon/material/kitchen/utensil/spoon,/obj/item/weapon/material/kitchen/utensil/spoon,/obj/item/weapon/material/kitchen/utensil/spoon,/obj/effect/spider/stickyweb,/turf/simulated/floor/holofloor/wood,/area/submap/Manor1) +"bF" = (/obj/structure/table/standard,/obj/effect/spider/stickyweb,/turf/simulated/floor/holofloor/wood,/area/submap/Manor1) +"bG" = (/obj/structure/closet/secure_closet/freezer/fridge,/obj/item/weapon/reagent_containers/food/snacks/sausage,/obj/item/weapon/reagent_containers/food/snacks/sausage,/turf/simulated/floor/holofloor/wood,/area/submap/Manor1) +"bH" = (/obj/effect/decal/cleanable/dirt,/obj/structure/flora/pottedplant/drooping,/turf/simulated/floor/holofloor/wood,/area/submap/Manor1) +"bI" = (/obj/effect/decal/cleanable/dirt,/obj/structure/flora/pottedplant/dead,/turf/simulated/floor/holofloor/wood,/area/submap/Manor1) +"bJ" = (/obj/structure/table/standard,/obj/item/weapon/material/kitchen/rollingpin,/obj/effect/spider/stickyweb,/turf/simulated/floor/holofloor/wood,/area/submap/Manor1) +"bK" = (/obj/structure/table/standard,/obj/item/weapon/reagent_containers/glass/bottle/stoxin,/turf/simulated/floor/holofloor/wood,/area/submap/Manor1) +"bL" = (/obj/structure/table/woodentable,/obj/item/weapon/storage/fancy/candle_box,/turf/simulated/floor/holofloor/wood,/area/submap/Manor1) +"bM" = (/obj/machinery/papershredder,/turf/simulated/floor/holofloor/wood,/area/submap/Manor1) +"bN" = (/obj/structure/simple_door/wood,/turf/simulated/floor/carpet/purcarpet,/area/submap/Manor1) +"bO" = (/obj/machinery/icecream_vat,/turf/simulated/floor/holofloor/wood,/area/submap/Manor1) +"bP" = (/obj/effect/decal/cleanable/dirt,/turf/simulated/floor/carpet/blucarpet,/area/submap/Manor1) +"bQ" = (/obj/effect/decal/cleanable/blood,/turf/simulated/floor/holofloor/wood,/area/submap/Manor1) +"bR" = (/obj/effect/decal/cleanable/cobweb,/obj/structure/table/woodentable,/turf/simulated/floor/holofloor/wood,/area/submap/Manor1) +"bS" = (/obj/structure/flora/pottedplant/subterranean,/turf/simulated/floor/holofloor/wood,/area/submap/Manor1) +"bT" = (/obj/item/weapon/material/minihoe,/turf/simulated/floor/carpet/blucarpet,/area/submap/Manor1) +"bU" = (/obj/effect/decal/cleanable/dirt,/turf/simulated/floor/carpet/purcarpet,/area/submap/Manor1) +"bV" = (/turf/simulated/floor/holofloor/wood{icon_state = "wood_broken6"},/area/submap/Manor1) +"bW" = (/obj/machinery/washing_machine,/turf/simulated/floor/holofloor/wood,/area/submap/Manor1) +"bX" = (/obj/structure/table/woodentable,/obj/structure/bedsheetbin,/obj/effect/decal/cleanable/cobweb2,/turf/simulated/floor/holofloor/wood,/area/submap/Manor1) +"bY" = (/obj/structure/table/rack,/turf/simulated/floor/holofloor/wood,/area/submap/Manor1) +"bZ" = (/obj/structure/closet/crate,/obj/item/stack/cable_coil/random_belt,/obj/random/cash,/turf/simulated/floor/holofloor/wood,/area/submap/Manor1) +"ca" = (/obj/structure/table/woodentable,/obj/item/weapon/melee/umbrella/random,/turf/simulated/floor/holofloor/wood,/area/submap/Manor1) +"cb" = (/obj/structure/closet/cabinet,/obj/random/gun/random,/turf/simulated/floor/holofloor/wood,/area/submap/Manor1) +"cc" = (/obj/structure/closet/cabinet,/obj/item/weapon/cell/device/weapon,/obj/item/weapon/cell/device/weapon,/obj/random/medical,/turf/simulated/floor/holofloor/wood,/area/submap/Manor1) +"cd" = (/obj/structure/table/woodentable,/obj/item/device/flashlight/lamp/green,/turf/simulated/floor/holofloor/wood,/area/submap/Manor1) +"ce" = (/obj/structure/bed/double,/obj/item/weapon/bedsheet/rddouble,/obj/structure/curtain/open/bed,/turf/simulated/floor/holofloor/wood,/area/submap/Manor1) +"cf" = (/obj/structure/table/woodentable,/obj/item/weapon/storage/wallet/random,/turf/simulated/floor/holofloor/wood,/area/submap/Manor1) +"cg" = (/obj/structure/flora/pottedplant/dead,/obj/effect/decal/cleanable/cobweb2,/turf/simulated/floor/holofloor/wood,/area/submap/Manor1) +"ch" = (/obj/structure/loot_pile/surface/bones,/obj/item/clothing/accessory/sweater,/turf/simulated/floor/carpet/blucarpet,/area/submap/Manor1) +"ci" = (/obj/structure/closet/crate,/obj/item/weapon/flame/lighter/random,/obj/random/powercell,/turf/simulated/floor/holofloor/wood,/area/submap/Manor1) +"cj" = (/obj/structure/closet/cabinet,/obj/item/clothing/shoes/boots/winter,/obj/item/clothing/suit/storage/hooded/wintercoat,/obj/item/clothing/head/hood/winter,/turf/simulated/floor/holofloor/wood,/area/submap/Manor1) +"ck" = (/obj/effect/decal/cleanable/spiderling_remains,/turf/simulated/floor/holofloor/wood,/area/submap/Manor1) +"cl" = (/turf/simulated/floor/carpet/turcarpet,/area/submap/Manor1) +"cm" = (/obj/effect/decal/cleanable/blood,/obj/structure/bed/chair/comfy/purp{icon_state = "comfychair_preview"; dir = 4},/turf/simulated/floor/holofloor/wood,/area/submap/Manor1) +"cn" = (/obj/structure/closet/crate,/obj/item/weapon/storage/wallet/random,/turf/simulated/floor/holofloor/wood,/area/submap/Manor1) +"co" = (/obj/structure/coatrack,/turf/simulated/floor/holofloor/wood,/area/submap/Manor1) +"cp" = (/obj/structure/loot_pile/surface/bones,/obj/item/clothing/suit/storage/hooded/wintercoat,/turf/simulated/floor/holofloor/wood,/area/submap/Manor1) +"cq" = (/obj/structure/loot_pile/surface/bones,/obj/item/clothing/under/suit_jacket,/obj/item/clothing/shoes/black,/obj/random/projectile/random,/turf/simulated/floor/holofloor/wood,/area/submap/Manor1) +"cr" = (/obj/structure/simple_door/wood,/obj/effect/decal/cleanable/dirt,/turf/simulated/floor/carpet/purcarpet,/area/submap/Manor1) +"cs" = (/obj/item/weapon/material/twohanded/spear,/turf/simulated/floor/holofloor/wood,/area/submap/Manor1) +"ct" = (/obj/structure/closet/cabinet{opened = 1},/turf/simulated/floor/holofloor/wood,/area/submap/Manor1) +"cu" = (/obj/effect/decal/remains,/obj/item/weapon/material/knife/tacknife/combatknife,/turf/simulated/floor/holofloor/wood,/area/submap/Manor1) +"cv" = (/obj/structure/sink{pixel_y = 30},/turf/simulated/floor/tiled/hydro,/area/submap/Manor1) +"cw" = (/turf/simulated/floor/tiled/hydro,/area/submap/Manor1) +"cx" = (/obj/structure/table/standard,/obj/effect/decal/cleanable/cobweb2,/turf/simulated/floor/tiled/hydro,/area/submap/Manor1) +"cy" = (/obj/structure/table/standard,/obj/item/weapon/towel/random,/obj/item/weapon/towel/random,/turf/simulated/floor/tiled/hydro,/area/submap/Manor1) +"cz" = (/obj/effect/decal/cleanable/cobweb2,/obj/effect/spider/stickyweb,/turf/simulated/floor/holofloor/wood,/area/submap/Manor1) +"cA" = (/obj/item/weapon/paper/crumpled,/turf/simulated/floor/holofloor/wood,/area/submap/Manor1) +"cB" = (/turf/simulated/floor/holofloor/wood{icon_state = "wood_broken3"},/area/submap/Manor1) +"cC" = (/obj/effect/decal/cleanable/spiderling_remains,/obj/effect/spider/stickyweb,/turf/simulated/floor/holofloor/wood,/area/submap/Manor1) +"cD" = (/obj/structure/closet/crate,/obj/item/clothing/suit/armor/vest,/turf/simulated/floor/holofloor/wood,/area/submap/Manor1) +"cE" = (/obj/structure/closet/crate,/turf/simulated/floor/holofloor/wood,/area/submap/Manor1) +"cF" = (/obj/structure/simple_door/wood,/turf/simulated/floor/tiled/hydro,/area/submap/Manor1) +"cG" = (/obj/structure/toilet{icon_state = "toilet00"; dir = 8},/turf/simulated/floor/tiled/hydro,/area/submap/Manor1) +"cH" = (/obj/machinery/shower{icon_state = "shower"; dir = 8},/obj/structure/curtain/open/shower,/turf/simulated/floor/tiled/hydro,/area/submap/Manor1) +"cI" = (/obj/item/stack/material/wood,/turf/simulated/floor/holofloor/wood,/area/submap/Manor1) +"cJ" = (/obj/machinery/shower{icon_state = "shower"; dir = 8},/obj/structure/curtain/open/shower,/obj/random/soap,/turf/simulated/floor/tiled/hydro,/area/submap/Manor1) +"cK" = (/obj/structure/table/standard,/turf/simulated/floor/tiled/hydro,/area/submap/Manor1) +"cL" = (/obj/structure/toilet{icon_state = "toilet00"; dir = 1},/turf/simulated/floor/tiled/hydro,/area/submap/Manor1) +"cM" = (/obj/structure/table/woodentable,/obj/item/device/laptop,/turf/simulated/floor/holofloor/wood,/area/submap/Manor1) +"cN" = (/turf/template_noop,/area/template_noop) +"cO" = (/obj/structure/flora/tree/sif,/turf/template_noop,/area/submap/Manor1) (1,1,1) = {" -cN -cN -cN -cN -cN -cN -cN -cN -cN -cN -cN -cN -cN -cN -cN -cN -cN -cN -cN -cN -cN -cN -cN -cN -cN -cN -cN -cN -cN -cN -cN -cN -cN -cN -cN -cN -cN -cN -cN -cN -"} -(2,1,1) = {" -cN -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 -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -cN -"} -(3,1,1) = {" -cN -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 -aa -aa -aa -cO -aa -aa -aa -aa -aa -aa -aa -aa -aa -cN -"} -(4,1,1) = {" -cN -aa -aa -aa -cO -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 -aa -aa -aa -aa -aa -aa -aa -aa -aa -cN -"} -(5,1,1) = {" -cN -aa -aa -aa -aa -aa -aa -aa -aa -cO -aa -aa -aa -aa -aa -aa -aa -ab -bn -bn -ab -aa -aa -aa -aa -aa -aa -ab -ac -ac -ab -aa -aa -aa -aa -aa -aa -cO -aa -cN -"} -(6,1,1) = {" -cN -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -ab -ab -ag -ag -ab -ab -aa -aa -aa -aa -ab -ab -ag -ag -ab -ab -aa -aa -aa -aa -aa -aa -aa -cN -"} -(7,1,1) = {" -cN -aa -aa -aa -aa -aa -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -bj -ag -ag -ag -ab -ab -ab -ab -ab -ab -ag -ag -ag -ag -ab -ab -ab -aa -aa -aa -aa -aa -cN -"} -(8,1,1) = {" -cN -aa -aa -aa -aa -ab -ab -ax -ab -ag -as -ag -ag -aD -ab -aD -ag -ag -ag -ag -ag -ag -ag -ag -az -ab -bR -ag -ag -ag -bQ -cq -ct -ab -ab -aa -aa -aa -aa -cN -"} -(9,1,1) = {" -cN -aa -aa -aa -ab -ab -at -ag -as -ag -ab -ag -ag -al -ab -al -bh -ag -ag -ag -ag -ag -ag -ag -al -ab -az -ag -ag -bq -bQ -ag -ag -al -ab -ab -aa -aa -aa -cN -"} -(10,1,1) = {" -cN -aa -aa -ab -ab -al -au -ay -ab -ag -ab -aT -aM -aO -ab -bg -ag -bk -aO -al -by -ag -ag -ag -ag -ab -bS -ag -bq -ag -ag -ag -cu -ag -al -ab -ab -aa -aa -cN -"} -(11,1,1) = {" -cN -aa -aa -ab -ab -ab -ab -ab -ab -as -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -as -ab -ab -ab -ab -as -ab -ab -ab -ab -ab -ab -ab -ab -ab -aa -cN -"} -(12,1,1) = {" -cN -aa -aa -ab -ak -ag -ag -ag -ag -ag -ag -ag -ag -ag -ag -al -az -al -ag -ag -an -an -ag -ag -ag -bQ -bq -ag -bq -ag -ah -ab -cv -cw -cw -cw -cw -ab -aa -cN -"} -(13,1,1) = {" -cN -aa -aa -ab -ag -aq -aq -aq -aq -aq -aq -aq -aq -aq -aq -aq -aq -aq -aq -ar -ar -ar -ar -aq -aq -aq -aq -aq -aq -aq -aq -as -cw -ab -cF -ab -cF -ab -aa -cN -"} -(14,1,1) = {" -cN -aa -aa -ab -ag -aq -aq -ag -ag -ag -ag -ag -ag -ag -ag -ag -ag -ag -an -an -an -ag -ag -ag -ag -ag -ag -ag -ag -ag -ag -ab -cx -ab -cG -ab -cG -ab -aa -cN -"} -(15,1,1) = {" -cN -aa -aa -ab -ag -aq -aq -ag -ab -ab -ab -ab -ab -ab -ab -ab -as -ab -ab -ab -ab -ab -ab -ab -ab -ag -ag -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -aa -cN -"} -(16,1,1) = {" -cN -aa -aa -ab -al -aq -aq -az -ab -aF -ag -ag -ag -ag -ag -ag -ag -ag -an -ag -ag -ag -ag -aG -ab -an -ag -ab -bW -ag -bW -ab -cy -cw -cw -cw -cw -ab -aa -cN -"} -(17,1,1) = {" -cN -aa -aa -ab -am -ar -aq -al -ab -aG -ag -aU -aU -aU -ag -aU -aU -aU -an -aU -aU -aU -ag -bL -ab -an -ag -ab -bX -ag -az -ab -cw -cw -cH -cH -cJ -ab -aa -cN -"} -(18,1,1) = {" -cN -aa -aa -ab -al -ar -aq -al -ab -ag -ag -ag -ag -ag -ag -ag -ag -an -an -an -an -an -an -bM -ab -an -an -ab -ab -as -ab -ab -as -ab -ab -ab -ab -ab -aa -cN -"} -(19,1,1) = {" -cN -aa -aa -ab -ag -ar -aq -ag -ab -al -ag -aU -aU -aU -ag -aU -aU -aU -an -aU -aU -aU -ag -ag -as -an -an -as -ag -ag -ag -ag -ag -ag -as -cw -cK -ab -aa -cN -"} -(20,1,1) = {" -cN -aa -aa -ab -an -ar -ar -an -ab -aH -ag -ag -ag -ag -an -an -an -an -an -ag -ag -ag -ag -ai -ab -an -an -ab -ab -ab -as -ab -ab -ab -ab -cv -cL -ab -aa -cN -"} -(21,1,1) = {" -cN -aa -ab -ab -an -ar -ar -an -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -an -an -ab -bY -ag -ag -ag -bY -bY -ab -ab -ab -ab -aa -cN -"} -(22,1,1) = {" -cN -ab -ab -ag -ag -ar -ar -an -ab -aI -aK -ag -ag -ag -ag -ag -ag -ag -an -an -an -an -bH -ab -ab -an -an -ab -ag -ag -ag -ag -ag -cC -ab -ab -aa -aa -aa -cN -"} -(23,1,1) = {" -cN -ac -ad -ag -ag -ar -ar -aA -ab -aJ -aK -ad -ad -ad -ad -ad -ad -ad -ad -bt -bt -an -an -ab -ab -an -an -ab -bZ -ci -cn -ag -aK -aJ -ab -aa -aa -aa -aa -cN -"} -(24,1,1) = {" -cN -ac -ae -ag -ag -aq -ar -aB -ab -aK -aP -al -al -al -al -al -aG -al -al -al -al -bh -an -ab -ab -as -as -ab -ab -ab -ab -aK -aK -cD -ab -aa -aa -aa -aa -cN -"} -(25,1,1) = {" -cN -ac -af -ag -ag -ar -ar -aA -ab -ag -aP -aV -al -al -al -al -al -al -al -al -al -bh -ag -ab -al -ag -ag -al -al -cj -ab -ab -cz -cE -ab -aa -aa -aa -aa -cN -"} -(26,1,1) = {" -cN -ac -ag -ag -an -ar -ar -ag -ab -ag -ag -af -af -af -af -af -af -af -af -af -af -ag -ag -ab -al -ag -ag -ag -ag -ck -co -ab -ab -ab -ab -aa -aa -aa -aa -cN -"} -(27,1,1) = {" -cN -ab -ah -ag -an -ar -ar -an -ab -aL -aQ -aQ -aQ -aQ -aQ -aQ -aQ -aQ -aQ -aQ -aQ -aQ -aQ -bN -aQ -aQ -aQ -bU -bU -bU -bU -cr -bU -bU -bN -aa -aa -aa -aa -cN -"} -(28,1,1) = {" -cN -ab -ai -ag -an -ar -ar -an -ab -aL -aQ -aQ -aQ -aQ -aQ -aQ -aQ -aQ -aQ -aQ -aQ -aQ -aQ -bN -aQ -aQ -aQ -aQ -bU -bU -bU -cr -bU -bU -bN -aa -aa -aa -aa -cN -"} -(29,1,1) = {" -cN -ac -ag -ag -an -ar -ar -ag -ab -ag -ag -ad -ad -ad -ad -ad -ad -ad -ad -ad -ad -ag -ag -ab -al -ag -ag -ag -ag -ag -co -ab -ab -ab -ab -aa -aa -aa -aa -cN -"} -(30,1,1) = {" -cN -ac -ad -ag -ag -ar -ar -ag -ab -ag -aP -aV -al -al -al -al -al -al -al -al -al -bh -an -ab -al -ag -ag -al -ca -cj -ab -ab -az -al -ab -aa -aa -aa -aa -cN -"} -(31,1,1) = {" -cN -ac -aj -ag -ag -ar -ar -ag -ab -ag -aP -al -al -al -al -al -al -al -al -al -bz -bD -an -ab -ab -as -as -ab -ab -ab -ab -ag -af -ag -ab -aa -aa -aa -aa -cN -"} -(32,1,1) = {" -cN -ac -af -ag -ag -aq -ar -ag -ab -ag -ag -af -af -af -af -af -af -af -af -bu -bu -an -an -ab -ab -ag -ag -ab -cb -ag -ag -ag -ag -ag -ab -aa -aa -aa -aa -cN -"} -(33,1,1) = {" -cN -ab -ab -ag -ag -aq -aq -ag -ab -ah -ag -ag -ag -ag -ag -ag -ag -ag -ag -an -an -an -bI -ab -ab -ag -ag -ab -cc -cl -cl -cl -cl -ag -ab -ab -aa -aa -aa -cN -"} -(34,1,1) = {" -cN -aa -ab -ab -ag -aq -aq -ag -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -as -ab -ab -ab -ab -ab -ab -ag -ag -ab -ag -cl -cl -cl -cl -ag -ah -ab -ab -ab -aa -cN -"} -(35,1,1) = {" -cN -aa -aa -ab -ag -aq -aq -ag -ab -ag -aR -aR -aR -bb -ag -ag -ag -ag -ag -ag -ag -ag -ag -bO -ab -ag -ag -ab -cd -cl -cl -cl -cl -ag -ag -al -cM -ab -aa -cN -"} -(36,1,1) = {" -cN -aa -aa -ab -ag -aq -aq -ag -ab -aM -ag -ag -ag -ag -ag -ag -ag -ag -ag -ag -ag -ag -ag -aK -ab -ag -ag -ab -ce -cl -cl -cl -cl -cl -cl -cl -al -ab -aa -cN -"} -(37,1,1) = {" -cN -aa -aa -ab -ag -aq -aq -ag -ab -ag -aR -aW -aZ -aR -ag -ag -ag -ag -ag -aR -bA -bE -bF -aK -ab -ag -ag -ab -cf -cl -cl -cl -cl -cl -cl -cl -al -ab -aa -cN -"} -(38,1,1) = {" -cN -aa -aa -ab -al -aq -aq -al -ab -ag -aR -aX -aR -bc -ag -ag -ag -ag -ag -bv -aR -bF -bJ -aK -ab -ag -ag -ab -ag -cl -cl -cl -cl -cl -cl -cl -ag -ab -aa -cN -"} -(39,1,1) = {" -cN -aa -aa -ab -al -aq -aq -al -ab -ag -ag -ag -ag -ag -ag -ag -ag -ag -ag -ag -ag -ag -ag -ag -ab -ag -ag -ab -ag -cl -cl -cl -cl -cl -cl -cl -ag -ab -aa -cN -"} -(40,1,1) = {" -cN -aa -aa -ab -al -aq -aq -aC -ab -aN -aS -aY -ba -bd -ag -ag -ag -ag -ag -ag -bB -bG -bK -ag -ab -ag -ag -ab -cg -aD -al -al -ag -cl -cl -cl -ag -ab -aa -cN -"} -(41,1,1) = {" -cN -aa -aa -ab -ag -aq -aq -ag -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -as -ab -ab -ab -ab -ab -ab -ag -ag -ab -ab -ab -ab -ab -ag -cl -cl -cl -ag -ab -aa -cN -"} -(42,1,1) = {" -cN -aa -aa -ab -ag -aq -aq -ag -ag -ag -ag -al -ag -ag -ag -ag -ag -ag -ag -ag -ag -ag -ag -ag -ag -ag -ag -ag -ag -ag -ah -ab -ag -cl -cl -cl -ag -ab -aa -cN -"} -(43,1,1) = {" -cN -aa -aa -ab -ag -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 -as -ag -cl -cl -cl -ag -ab -aa -cN -"} -(44,1,1) = {" -cN -aa -aa -ab -ai -ag -ag -ag -ag -ag -ag -ag -ag -ag -ag -ag -ag -ag -ag -ag -ag -ag -ag -ag -ag -ag -ag -ag -ag -ag -ah -ab -ah -ag -ag -ag -ah -ab -aa -cN -"} -(45,1,1) = {" -cN -aa -aa -ab -ab -as -ab -ab -ab -ab -ab -as -ab -ab -ab -ab -ab -ab -as -ab -ab -ab -ab -ab -ab -ab -ab -ab -as -ab -ab -ab -ab -ab -ab -ab -ab -ab -aa -cN -"} -(46,1,1) = {" -cN -aa -aa -ab -ao -ag -av -ab -aD -aO -ab -ag -ab -aO -aD -ab -bi -ag -ag -ag -ag -al -aD -al -al -az -al -ag -ag -bq -ag -cs -ag -cA -ag -cI -ab -ab -aa -cN -"} -(47,1,1) = {" -cN -aa -aa -ab -ap -ag -ag -ab -ag -ag -ab -ag -ab -ag -be -ab -ag -bl -bo -bl -bl -bl -bl -bl -bw -bl -bl -bl -bp -bw -bw -bl -cA -bq -cI -ab -ab -aa -aa -cN -"} -(48,1,1) = {" -cN -aa -aa -aa -ab -ab -aw -ab -ag -ag -as -ag -as -ag -ag -ab -ag -bm -bp -bw -bl -bl -bl -bl -bP -bP -bT -bl -ch -bl -bl -bw -cB -ag -ab -ab -aa -aa -aa -cN -"} -(49,1,1) = {" -cN -aa -aa -aa -aa -ab -ab -ab -aE -al -ab -ag -ab -al -bf -ab -ag -ag -bq -ag -ag -ag -al -al -al -al -ag -bV -ag -ag -ag -ag -ag -ab -ab -aa -aa -aa -aa -cN -"} -(50,1,1) = {" -cN -aa -aa -aa -aa -aa -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ag -br -bx -bC -ab -ab -ab -ab -ab -ab -ag -bx -cm -cp -ab -ab -ab -aa -aa -aa -aa -aa -cN -"} -(51,1,1) = {" -cN -aa -aa -aa -cO -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -ab -ab -bs -bs -ab -ab -aa -aa -aa -aa -ab -ab -bs -ag -ab -ab -aa -aa -aa -aa -cO -aa -aa -cN -"} -(52,1,1) = {" -cN -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -ab -ac -ac -ab -aa -aa -aa -aa -aa -aa -ab -ac -ac -ab -aa -aa -aa -aa -aa -aa -aa -aa -cN -"} -(53,1,1) = {" -cN -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 -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -cN -"} -(54,1,1) = {" -cN -cN -cN -cN -cN -cN -cN -cN -cN -cN -cN -cN -cN -cN -cN -cN -cN -cN -cN -cN -cN -cN -cN -cN -cN -cN -cN -cN -cN -cN -cN -cN -cN -cN -cN -cN -cN -cN -cN -cN -"} +cNcNcNcNcNcNcNcNcNcNcNcNcNcNcNcNcNcNcNcNcNcNcNcNcNcNcNcNcNcNcNcNcNcNcNcNcNcNcNcNcNcNcNcNcNcNcNcNcNcNcNcNcNcN +cNaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabacacacacababacacacacabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacN +cNaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaababadaeafagahaiagadajafababaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacN +cNaaaaaaaaaaaaaaaaababababababababababababagagagagagagagagagagagagababababababababababababababaaaaaaaaaaaacN +cNaaaacOaaaaaaaaabababakagagagalamalagananagagagagananananagagagagagagagagalalalagagagaiabaoapabaaaacOaaaacN +cNaaaaaaaaaaaaababalabagaqaqaqaqarararararararaqarararararararaqaqaqaqaqaqaqaqaqaqaqaqagasagagababaaaaaaaacN +cNaaaaaaaaaaababatauabagaqaqaqaqaqaqaqarararararararararararararaqaqaqaqaqaqaqaqaqaqaqagabavagawababaaaaaacN +cNaaaaaaaaaaabaxagayabagaqagagazalalaganananaAaBaAagananagagagagagagagagagalalaCagagaqagababababababaaaaaacN +cNaaaaaaaaaaababasababagaqagabababababababababababababababababababababababababababagaqagabaDagagaEabaaaaaacN +cNaaaaaacOaaabagagagasagaqagabaFaGagalaHabaIaJaKagagaLaLagagagagahabagaMagagagaNabagaqagabaOagagalabaaaaaacN +cNaaaaaaaaaaabasabababagaqagabagagagagagabaKaKaPaPagaQaQagaPaPagagabaRagaRaRagaSabagaqagabababasababaaaaaacN +cNaaaaaaaaaaabagagaTabagaqagabagaUagaUagabagadalaVafaQaQadaValafagabaRagaWaXagaYabalaqagasagagagagabaaaaaacN +cNaaaaaaaaaaabagagaMabagaqagabagaUagaUagabagadalalafaQaQadalalafagabaRagaZaRagbaabagaqagabababasababaaaaaacN +cNaaaaaaaaaaabaDalaOabagaqagabagaUagaUagabagadalalafaQaQadalalafagabbbagaRbcagbdabagaqagabaOagagalabaaaaaacN +cNaaaaaaaaaaabababababagaqagabagagagaganabagadalalafaQaQadalalafagabagagagagagagabagaqagabaDbeagbfabaaaaaacN +cNaaaaaaaaaaabaDalbgabalaqagabagaUagaUanabagadalalafaQaQadalalafagabagagagagagagabagaqagababababababaaaaaacN +cNaaaaaaaaababagbhagabazaqagasagaUagaUanabagadaGalafaQaQadalalafagabagagagagagagabagaqagabbiagagagababaaaacN +cNaaaaaaababbjagagbkabalaqagabagaUanaUanabagadalalafaQaQadalalafagabagagagagagagabagaqagabagblbmagagababaacN +cNaaaaaabnagagagagaOabagaqanabanananananabanadalalafaQaQadalalafagasagagagagagagasagaqagasagbobpbqbrbsacaacN +cNaaaaaabnagagagagalabagaranabagaUanaUagabanbtalalafaQaQadalalbuanabagagaRbvagagabagaqagabagblbwagbxbsacaacN +cNaaaaaaababagagagbyabanaranabagaUanaUagabanbtalalafaQaQadalbzbuanabagagbAaRagbBabagaqagabagblblagbCababaacN +cNaaaaaaaaababagagagabanaragabagaUanaUagabananbhbhagaQaQagbhbDananabagagbEbFagbGabagaqagabalblblagababaaaacN +cNaaaaaaaaaaabagagagabagaragabagaganagagabbHananagagaQaQaganananbIabagagbFbJagbKabagaqagabaDblblalabaaaaaacN +cNaaaaaaaaaaabagagagasagaqagabaGbLbMagaiababababababbNbNababababababbOaKaKaKagagabagaqagabalblblalabaaaaaacN +cNaaaaaaaaaaabazalagabagaqagababababasabababababalalaQaQalalabababababababababababagaqagabalbwbPalabaaaaaacN +cNaaaaaaaaaaabababababbQaqagagananananananananasagagaQaQagagasagagagagagagagagagagagaqagabazblbPalabaaaaaacN +cNaaaaaaaaababbRazbSabbqaqagagagagananananananasagagaQaQagagasagagagagagagagagagagagaqagabalblbTagababaaaacN +cNaaaaaaababagagagagabagaqagababababasabababababalagbUaQagalabababababababababababagaqagabagblblbVagababaacN +cNaaaaaaacagagagagbqasbqaqagabbWbXabagabbYagbZabalagbUbUagcaabcbccagcdcecfagagcgabagaqagasagbpchagbxbsacaacN +cNaacOaaacagagagbqagabagaqagabagagasagabagagciabcjckbUbUagcjabagclclclclclclclaDabagaqagabbqbwblagcmagacaacN +cNaaaaaaababagbQbQagabahaqagabbWazabagasagagcnababcobUbUcoababagclclclclclclclalabahaqahabagbwblagcpababaacN +cNaaaaaaaaababcqagagababasabababababagabagagagaKababcrcrababagagclclclclclclclalababasababcsblbwagababaaaacN +cNaaaaaaaaaaabctagcuabcvcwcxabcycwasagabbYagaKaKczabbUbUabazafagclclclclclclclagagagagahabagcAcBagabaaaaaacN +cNaaaaaaaaaaababalagabcwabababcwcwabagabbYcCaJcDcEabbUbUabalagagagagagclclclclclclclclagabcAbqagababaaaaaacN +cNaaaaaaaaaaaaababalabcwcFcGabcwcHabasabababababababbNbNabababababahagclclclclclclclclagabagcIababaaaaaaaacN +cNaaaaaaaaaaaaaaabababcwabababcwcHabcwcvababaaaaaaaaaaaaaaaaaaaaababalclclclclclclclclagabcIababaaaaaaaaaacN +cNaaaaaaaaaaaaaaaaababcwcFcGabcwcJabcKcLabaaaaaaaaaaaaaaaaaaaaaaaaabcMalalagagagagagagahabababaaaaaacOaaaacN +cNaaaaaacOaaaaaaaaaaabababababababababababaaaaaaaaaaaaaaaaaaaaaaaaabababababababababababababaaaaaaaaaaaaaacN +cNaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacN +cNcNcNcNcNcNcNcNcNcNcNcNcNcNcNcNcNcNcNcNcNcNcNcNcNcNcNcNcNcNcNcNcNcNcNcNcNcNcNcNcNcNcNcNcNcNcNcNcNcNcNcNcNcN +"} \ No newline at end of file diff --git a/maps/submaps/surface_submaps/wilderness/Mudpit.dmm b/maps/submaps/surface_submaps/wilderness/Mudpit.dmm index 811e6105cc..93138d5379 100644 --- a/maps/submaps/surface_submaps/wilderness/Mudpit.dmm +++ b/maps/submaps/surface_submaps/wilderness/Mudpit.dmm @@ -1,322 +1,33 @@ -//MAP CONVERTED BY dmm2tgm.py THIS HEADER COMMENT PREVENTS RECONVERSION, DO NOT REMOVE -"a" = ( -/turf/template_noop, -/area/template_noop) -"b" = ( -/obj/effect/decal/cleanable/liquid_fuel, -/turf/simulated/floor/outdoors/dirt, -/area/submap/Mudpit) -"c" = ( -/turf/simulated/floor/outdoors/dirt, -/area/submap/Mudpit) -"d" = ( -/turf/simulated/floor/outdoors/mud, -/area/submap/Mudpit) -"e" = ( -/obj/effect/decal/cleanable/liquid_fuel, -/obj/effect/decal/cleanable/liquid_fuel, -/turf/simulated/floor/outdoors/dirt, -/area/submap/Mudpit) -"f" = ( -/obj/effect/decal/cleanable/liquid_fuel, -/obj/effect/decal/cleanable/liquid_fuel, -/obj/effect/decal/cleanable/liquid_fuel, -/turf/simulated/floor/outdoors/dirt, -/area/submap/Mudpit) -"g" = ( -/obj/effect/decal/remains/mouse, -/turf/simulated/floor/outdoors/dirt, -/area/submap/Mudpit) -"h" = ( -/obj/effect/decal/remains/mouse, -/obj/effect/decal/cleanable/liquid_fuel, -/obj/effect/decal/cleanable/liquid_fuel, -/turf/simulated/floor/outdoors/dirt, -/area/submap/Mudpit) -"i" = ( -/obj/effect/decal/cleanable/liquid_fuel, -/turf/template_noop, -/area/template_noop) -"j" = ( -/turf/simulated/mineral, -/area/submap/Mudpit) -"k" = ( -/obj/structure/reagent_dispensers/fueltank, -/turf/simulated/floor/outdoors/dirt, -/area/submap/Mudpit) -"l" = ( -/obj/machinery/portable_atmospherics/canister/empty/phoron, -/turf/simulated/floor/outdoors/dirt, -/area/submap/Mudpit) -"m" = ( -/obj/effect/decal/remains, -/obj/item/clothing/suit/space/void/merc/fire, -/obj/item/clothing/head/helmet/space/void/merc/fire, -/turf/simulated/floor/outdoors/dirt, -/area/submap/Mudpit) -"n" = ( -/obj/effect/decal/mecha_wreckage/ripley/firefighter, -/turf/simulated/floor/outdoors/dirt, -/area/submap/Mudpit) -"D" = ( -/mob/living/simple_animal/hostile/giant_spider/thermic{ - returns_home = 1 - }, -/turf/simulated/floor/outdoors/dirt, -/area/submap/Mudpit) +"a" = (/turf/template_noop,/area/template_noop) +"b" = (/obj/effect/decal/cleanable/liquid_fuel,/turf/simulated/floor/outdoors/dirt,/area/submap/Mudpit) +"c" = (/turf/simulated/floor/outdoors/dirt,/area/submap/Mudpit) +"d" = (/turf/simulated/floor/outdoors/mud,/area/submap/Mudpit) +"e" = (/obj/effect/decal/cleanable/liquid_fuel,/obj/effect/decal/cleanable/liquid_fuel,/turf/simulated/floor/outdoors/dirt,/area/submap/Mudpit) +"f" = (/obj/effect/decal/cleanable/liquid_fuel,/obj/effect/decal/cleanable/liquid_fuel,/obj/effect/decal/cleanable/liquid_fuel,/turf/simulated/floor/outdoors/dirt,/area/submap/Mudpit) +"g" = (/obj/effect/decal/remains/mouse,/turf/simulated/floor/outdoors/dirt,/area/submap/Mudpit) +"h" = (/obj/effect/decal/remains/mouse,/obj/effect/decal/cleanable/liquid_fuel,/obj/effect/decal/cleanable/liquid_fuel,/turf/simulated/floor/outdoors/dirt,/area/submap/Mudpit) +"i" = (/obj/effect/decal/cleanable/liquid_fuel,/turf/template_noop,/area/template_noop) +"j" = (/turf/simulated/mineral,/area/submap/Mudpit) +"k" = (/obj/structure/reagent_dispensers/fueltank,/turf/simulated/floor/outdoors/dirt,/area/submap/Mudpit) +"l" = (/obj/machinery/portable_atmospherics/canister/empty/phoron,/turf/simulated/floor/outdoors/dirt,/area/submap/Mudpit) +"m" = (/obj/effect/decal/remains,/obj/item/clothing/suit/space/void/merc/fire,/obj/item/clothing/head/helmet/space/void/merc/fire,/turf/simulated/floor/outdoors/dirt,/area/submap/Mudpit) +"n" = (/mob/living/simple_mob/animal/giant_spider/thermic,/turf/simulated/floor/outdoors/dirt,/area/submap/Mudpit) +"o" = (/obj/effect/decal/mecha_wreckage/ripley/firefighter,/turf/simulated/floor/outdoors/dirt,/area/submap/Mudpit) (1,1,1) = {" -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -"} -(2,1,1) = {" -a -b -c -c -i -i -i -c -g -d -c -a -a -b -a -"} -(3,1,1) = {" -a -c -c -c -b -b -b -c -d -d -d -d -c -b -a -"} -(4,1,1) = {" -a -c -c -d -c -b -j -j -j -d -d -d -d -a -a -"} -(5,1,1) = {" -a -c -b -d -d -d -j -j -j -j -d -d -d -c -a -"} -(6,1,1) = {" -a -a -c -d -d -j -j -j -j -j -d -d -d -g -a -"} -(7,1,1) = {" -a -a -c -g -j -j -j -k -l -j -j -d -d -c -a -"} -(8,1,1) = {" -a -c -c -c -j -j -c -c -c -c -g -b -d -c -a -"} -(9,1,1) = {" -a -b -b -c -c -c -c -c -m -c -D -b -b -c -a -"} -(10,1,1) = {" -a -b -b -c -b -c -c -c -D -c -c -b -b -a -a -"} -(11,1,1) = {" -a -b -d -d -c -c -g -c -n -c -c -b -d -c -a -"} -(12,1,1) = {" -a -d -d -d -d -c -c -c -c -c -d -d -d -d -a -"} -(13,1,1) = {" -a -e -e -d -d -d -d -c -c -c -d -d -d -d -a -"} -(14,1,1) = {" -a -e -f -h -c -c -a -a -i -c -c -c -d -b -a -"} -(15,1,1) = {" -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -"} +aaaaaaaaaaaaaaa +abcccaacbbbdeea +acccbcccbbddefa +accdddgcccdddha +aibcddjjcbcddca +aibbdjjjccccdca +aibjjjjcccgcdaa +accjjjkccccccaa +agdjjjlcmnoccia +adddjjjccccccca +acddddjgnccddca +aadddddbbbbddca +aacdddddbbdddda +abbacgcccacddba +aaaaaaaaaaaaaaa +"} \ No newline at end of file diff --git a/maps/submaps/surface_submaps/wilderness/Rockybase.dmm b/maps/submaps/surface_submaps/wilderness/Rockybase.dmm index e805a56a6d..7e5889f458 100644 --- a/maps/submaps/surface_submaps/wilderness/Rockybase.dmm +++ b/maps/submaps/surface_submaps/wilderness/Rockybase.dmm @@ -1,3284 +1,227 @@ -//MAP CONVERTED BY dmm2tgm.py THIS HEADER COMMENT PREVENTS RECONVERSION, DO NOT REMOVE -"aa" = ( -/turf/template_noop, -/area/template_noop) -"ab" = ( -/obj/effect/decal/remains, -/turf/template_noop, -/area/template_noop) -"ac" = ( -/obj/item/weapon/grenade/chem_grenade/metalfoam, -/turf/template_noop, -/area/template_noop) -"ad" = ( -/mob/living/simple_animal/hostile/viscerator{ - returns_home = 1 - }, -/turf/template_noop, -/area/template_noop) -"ae" = ( -/obj/effect/decal/remains, -/turf/template_noop, -/area/submap/Rockybase) -"af" = ( -/turf/template_noop, -/area/submap/Rockybase) -"ag" = ( -/obj/structure/flora/tree/sif, -/turf/template_noop, -/area/submap/Rockybase) -"ah" = ( -/obj/effect/gibspawner/robot, -/turf/template_noop, -/area/submap/Rockybase) -"ai" = ( -/turf/simulated/mineral/ignore_mapgen, -/area/submap/Rockybase) -"aj" = ( -/obj/effect/decal/remains/robot, -/turf/template_noop, -/area/template_noop) -"ak" = ( -/mob/living/simple_animal/hostile/malf_drone/lesser, -/turf/template_noop, -/area/submap/Rockybase) -"al" = ( -/turf/simulated/floor, -/area/submap/Rockybase) -"am" = ( -/obj/effect/decal/remains/posi, -/turf/simulated/floor, -/area/submap/Rockybase) -"an" = ( -/obj/machinery/porta_turret/poi, -/turf/simulated/floor, -/area/submap/Rockybase) -"ao" = ( -/obj/effect/decal/cleanable/blood, -/turf/simulated/floor, -/area/submap/Rockybase) -"ap" = ( -/obj/structure/flora/tree/sif, -/turf/template_noop, -/area/template_noop) -"aq" = ( -/obj/effect/floor_decal/industrial/danger, -/turf/simulated/floor, -/area/submap/Rockybase) -"ar" = ( -/obj/machinery/light, -/obj/effect/floor_decal/industrial/danger, -/turf/simulated/floor, -/area/submap/Rockybase) -"as" = ( -/obj/effect/decal/cleanable/blood, -/obj/effect/floor_decal/industrial/danger, -/turf/simulated/floor, -/area/submap/Rockybase) -"at" = ( -/turf/simulated/wall/r_wall, -/area/submap/Rockybase) -"au" = ( -/obj/structure/sign/securearea, -/turf/simulated/wall/r_wall, -/area/submap/Rockybase) -"av" = ( -/obj/machinery/door/airlock/external, -/turf/simulated/floor/tiled, -/area/submap/Rockybase) -"aw" = ( -/obj/effect/decal/remains/deer, -/turf/template_noop, -/area/template_noop) -"ax" = ( -/obj/machinery/shower{ - dir = 4; - icon_state = "shower"; - pixel_x = 5; - pixel_y = 0 - }, -/obj/structure/curtain/open/shower, -/obj/machinery/light/small{ - dir = 8 - }, -/turf/simulated/floor/tiled/hydro, -/area/submap/Rockybase) -"ay" = ( -/turf/simulated/floor/tiled/hydro, -/area/submap/Rockybase) -"az" = ( -/obj/machinery/shower{ - dir = 8; - icon_state = "shower"; - pixel_x = -5; - pixel_y = 0 - }, -/obj/structure/curtain/open/shower, -/obj/item/weapon/soap, -/turf/simulated/floor/tiled/hydro, -/area/submap/Rockybase) -"aA" = ( -/obj/structure/table/woodentable, -/obj/effect/decal/cleanable/cobweb, -/turf/simulated/floor/holofloor/lino, -/area/submap/Rockybase) -"aB" = ( -/obj/structure/table/woodentable, -/turf/simulated/floor/holofloor/lino, -/area/submap/Rockybase) -"aC" = ( -/obj/structure/table/woodentable, -/obj/item/device/flashlight/lamp, -/turf/simulated/floor/holofloor/lino, -/area/submap/Rockybase) -"aD" = ( -/obj/structure/closet{ - icon_closed = "cabinet_closed"; - icon_opened = "cabinet_open"; - icon_state = "cabinet_closed" - }, -/obj/item/weapon/pickaxe/plasmacutter, -/turf/simulated/floor/holofloor/lino, -/area/submap/Rockybase) -"aE" = ( -/turf/simulated/floor/holofloor/lino, -/area/submap/Rockybase) -"aF" = ( -/obj/structure/bed, -/obj/item/weapon/bedsheet, -/turf/simulated/floor/holofloor/lino, -/area/submap/Rockybase) -"aG" = ( -/obj/structure/table/woodentable, -/obj/machinery/light{ - dir = 1 - }, -/turf/simulated/floor/holofloor/lino, -/area/submap/Rockybase) -"aH" = ( -/obj/structure/bed, -/obj/item/weapon/bedsheet, -/mob/living/simple_animal/hostile/viscerator{ - returns_home = 1 - }, -/turf/simulated/floor/holofloor/lino, -/area/submap/Rockybase) -"aI" = ( -/obj/structure/bed, -/obj/item/weapon/bedsheet, -/obj/item/toy/plushie/spider, -/turf/simulated/floor/holofloor/lino, -/area/submap/Rockybase) -"aJ" = ( -/obj/structure/closet/l3closet/janitor, -/turf/simulated/floor/tiled, -/area/submap/Rockybase) -"aK" = ( -/mob/living/bot/cleanbot{ - faction = "malf_drone" - }, -/turf/simulated/floor/tiled, -/area/submap/Rockybase) -"aL" = ( -/obj/item/weapon/stool, -/turf/simulated/floor/tiled, -/area/submap/Rockybase) -"aM" = ( -/obj/item/weapon/storage/belt/janitor, -/obj/structure/table/standard, -/turf/simulated/floor/tiled, -/area/submap/Rockybase) -"aN" = ( -/turf/simulated/floor/tiled, -/area/submap/Rockybase) -"aO" = ( -/obj/structure/table/standard, -/obj/item/device/laptop, -/obj/effect/floor_decal/corner/red/border{ - icon_state = "bordercolor"; - dir = 9 - }, -/turf/simulated/floor/tiled, -/area/submap/Rockybase) -"aP" = ( -/obj/structure/table/standard, -/obj/effect/floor_decal/corner/red/border{ - icon_state = "bordercolor"; - dir = 1 - }, -/turf/simulated/floor/tiled, -/area/submap/Rockybase) -"aQ" = ( -/obj/structure/table/rack, -/obj/item/weapon/gun/projectile/pistol, -/obj/effect/floor_decal/corner/red/border{ - icon_state = "bordercolor"; - dir = 1 - }, -/turf/simulated/floor/tiled, -/area/submap/Rockybase) -"aR" = ( -/obj/structure/table/rack, -/obj/item/weapon/gun/energy/gun/taser, -/obj/effect/floor_decal/corner/red/border{ - icon_state = "bordercolor"; - dir = 1 - }, -/turf/simulated/floor/tiled, -/area/submap/Rockybase) -"aS" = ( -/obj/machinery/light{ - dir = 1 - }, -/obj/effect/floor_decal/corner/red/border{ - icon_state = "bordercolor"; - dir = 1 - }, -/turf/simulated/floor/tiled, -/area/submap/Rockybase) -"aT" = ( -/obj/machinery/vending/coffee, -/obj/effect/floor_decal/corner/red/border{ - icon_state = "bordercolor"; - dir = 5 - }, -/turf/simulated/floor/tiled, -/area/submap/Rockybase) -"aU" = ( -/turf/simulated/floor/tiled/techfloor, -/area/submap/Rockybase) -"aV" = ( -/obj/structure/table/rack, -/obj/item/weapon/gun/projectile/shotgun/pump/combat, -/obj/item/weapon/gun/projectile/shotgun/pump/combat, -/turf/simulated/floor/tiled/techfloor, -/area/submap/Rockybase) -"aW" = ( -/obj/machinery/vending/hydronutrients, -/obj/effect/floor_decal/corner/lime/border{ - icon_state = "bordercolor"; - dir = 9 - }, -/turf/simulated/floor/tiled, -/area/submap/Rockybase) -"aX" = ( -/obj/structure/closet/crate/hydroponics, -/obj/effect/floor_decal/corner/lime/border{ - icon_state = "bordercolor"; - dir = 5 - }, -/turf/simulated/floor/tiled, -/area/submap/Rockybase) -"aY" = ( -/obj/machinery/shower{ - dir = 4; - icon_state = "shower"; - pixel_x = 5; - pixel_y = 0 - }, -/obj/structure/curtain/open/shower, -/turf/simulated/floor/tiled/hydro, -/area/submap/Rockybase) -"aZ" = ( -/obj/machinery/shower{ - dir = 8; - icon_state = "shower"; - pixel_x = -5; - pixel_y = 0 - }, -/obj/structure/curtain/open/shower, -/turf/simulated/floor/tiled/hydro, -/area/submap/Rockybase) -"ba" = ( -/obj/structure/janitorialcart, -/turf/simulated/floor/tiled, -/area/submap/Rockybase) -"bb" = ( -/obj/structure/table/standard, -/obj/item/weapon/grenade/chem_grenade/cleaner, -/obj/item/weapon/grenade/chem_grenade/cleaner, -/obj/item/weapon/grenade/chem_grenade/cleaner, -/obj/machinery/light{ - icon_state = "tube1"; - dir = 4 - }, -/turf/simulated/floor/tiled, -/area/submap/Rockybase) -"bc" = ( -/obj/machinery/light/small{ - dir = 8 - }, -/turf/simulated/floor/tiled, -/area/submap/Rockybase) -"bd" = ( -/obj/structure/table/standard, -/obj/item/weapon/paper{ - info = "Carl's absolutly fucked in the head. He's trying to squeeze as much drone production out as he can since he's worried we're gonna get found out but he's getting sloppier with each batch. Now's he's telling us he can speed the time on the IFF encoding. I already have a hard enough time getting these damn things not to stare at walls and now he's gonna shortchange the only part of these tincans that tells em not to turn us into paste on a wall. I told Richter to get out while he can, We're counting days before either some Sif task force shows up at our door or these things decide we aren't there friends anymore."; - name = "Note" - }, -/obj/effect/floor_decal/corner/red/border{ - icon_state = "bordercolor"; - dir = 8 - }, -/turf/simulated/floor/tiled, -/area/submap/Rockybase) -"be" = ( -/obj/structure/bed/chair{ - dir = 8 - }, -/turf/simulated/floor/tiled, -/area/submap/Rockybase) -"bf" = ( -/mob/living/simple_animal/hostile/viscerator{ - returns_home = 1 - }, -/turf/simulated/floor/tiled, -/area/submap/Rockybase) -"bg" = ( -/obj/machinery/vending/security, -/obj/effect/floor_decal/corner/red/border{ - icon_state = "bordercolor"; - dir = 4 - }, -/turf/simulated/floor/tiled, -/area/submap/Rockybase) -"bh" = ( -/obj/structure/table/rack, -/obj/item/weapon/storage/box/shotgunshells, -/obj/item/weapon/storage/box/shotgunshells, -/obj/item/weapon/cell/device/weapon, -/turf/simulated/floor/tiled/techfloor, -/area/submap/Rockybase) -"bi" = ( -/obj/effect/floor_decal/corner/lime/border{ - icon_state = "bordercolor"; - dir = 8 - }, -/turf/simulated/floor/tiled, -/area/submap/Rockybase) -"bj" = ( -/obj/structure/sink{ - dir = 4; - icon_state = "sink"; - pixel_x = 11; - pixel_y = 0 - }, -/obj/effect/floor_decal/corner/lime/border{ - icon_state = "bordercolor"; - dir = 4 - }, -/turf/simulated/floor/tiled, -/area/submap/Rockybase) -"bk" = ( -/obj/machinery/shower{ - dir = 8; - icon_state = "shower"; - pixel_x = -5; - pixel_y = 0 - }, -/obj/structure/curtain/open/shower, -/obj/machinery/light/small{ - dir = 4; - pixel_y = 0 - }, -/turf/simulated/floor/tiled/hydro, -/area/submap/Rockybase) -"bl" = ( -/obj/item/mecha_parts/part/gygax_left_leg, -/turf/simulated/floor/holofloor/lino, -/area/submap/Rockybase) -"bm" = ( -/obj/machinery/light, -/turf/simulated/floor/holofloor/lino, -/area/submap/Rockybase) -"bn" = ( -/obj/structure/bed, -/obj/item/weapon/bedsheet, -/obj/item/weapon/gun/projectile/pistol, -/turf/simulated/floor/holofloor/lino, -/area/submap/Rockybase) -"bo" = ( -/obj/structure/closet/crate/trashcart, -/turf/simulated/floor/tiled, -/area/submap/Rockybase) -"bp" = ( -/obj/structure/loot_pile/maint/trash, -/turf/simulated/floor/tiled, -/area/submap/Rockybase) -"bq" = ( -/obj/structure/table/standard, -/obj/item/weapon/storage/bag/trash, -/obj/item/weapon/storage/bag/trash, -/turf/simulated/floor/tiled, -/area/submap/Rockybase) -"br" = ( -/obj/structure/table/standard, -/obj/item/weapon/paper_bin, -/obj/effect/floor_decal/corner/red/border{ - icon_state = "bordercolor"; - dir = 10 - }, -/turf/simulated/floor/tiled, -/area/submap/Rockybase) -"bs" = ( -/obj/machinery/light, -/obj/structure/table/standard, -/obj/item/weapon/pen, -/obj/effect/floor_decal/corner/red/border, -/turf/simulated/floor/tiled, -/area/submap/Rockybase) -"bt" = ( -/obj/effect/floor_decal/corner/red/border, -/turf/simulated/floor/tiled, -/area/submap/Rockybase) -"bu" = ( -/obj/effect/floor_decal/corner/red/border, -/mob/living/simple_animal/hostile/viscerator{ - returns_home = 1 - }, -/turf/simulated/floor/tiled, -/area/submap/Rockybase) -"bv" = ( -/obj/machinery/door/airlock/security{ - icon_state = "door_locked"; - locked = 1 - }, -/turf/simulated/floor/tiled/techfloor, -/area/submap/Rockybase) -"bw" = ( -/obj/machinery/light, -/turf/simulated/floor/tiled/techfloor, -/area/submap/Rockybase) -"bx" = ( -/obj/structure/table/rack, -/obj/item/weapon/gun/energy/ionrifle/pistol, -/turf/simulated/floor/tiled/techfloor, -/area/submap/Rockybase) -"by" = ( -/obj/machinery/portable_atmospherics/hydroponics, -/obj/effect/floor_decal/corner/lime/border{ - icon_state = "bordercolor"; - dir = 4 - }, -/turf/simulated/floor/tiled, -/area/submap/Rockybase) -"bz" = ( -/obj/machinery/door/airlock, -/turf/simulated/floor/tiled, -/area/submap/Rockybase) -"bA" = ( -/obj/effect/floor_decal/corner/lime/border{ - icon_state = "bordercolor"; - dir = 8 - }, -/mob/living/bot/farmbot{ - faction = "malf_drone"; - name = "Mr. Weddleton" - }, -/turf/simulated/floor/tiled, -/area/submap/Rockybase) -"bB" = ( -/obj/machinery/portable_atmospherics/hydroponics, -/obj/machinery/light{ - icon_state = "tube1"; - dir = 4 - }, -/obj/effect/floor_decal/corner/lime/border{ - icon_state = "bordercolor"; - dir = 4 - }, -/turf/simulated/floor/tiled, -/area/submap/Rockybase) -"bC" = ( -/obj/effect/decal/remains/posi, -/turf/template_noop, -/area/template_noop) -"bD" = ( -/obj/machinery/vending/cola, -/obj/effect/floor_decal/borderfloor{ - dir = 1 - }, -/turf/simulated/floor/tiled, -/area/submap/Rockybase) -"bE" = ( -/obj/effect/floor_decal/borderfloor{ - dir = 1 - }, -/turf/simulated/floor/tiled, -/area/submap/Rockybase) -"bF" = ( -/obj/machinery/light{ - dir = 1 - }, -/obj/effect/floor_decal/borderfloor{ - dir = 1 - }, -/turf/simulated/floor/tiled, -/area/submap/Rockybase) -"bG" = ( -/obj/structure/door_assembly, -/obj/effect/floor_decal/borderfloor{ - dir = 1 - }, -/turf/simulated/floor/tiled, -/area/submap/Rockybase) -"bH" = ( -/obj/effect/decal/cleanable/dirt, -/obj/effect/floor_decal/borderfloor{ - dir = 1 - }, -/turf/simulated/floor/tiled, -/area/submap/Rockybase) -"bI" = ( -/obj/effect/decal/cleanable/dirt, -/obj/effect/decal/cleanable/cobweb2, -/obj/effect/floor_decal/borderfloor{ - dir = 1 - }, -/turf/simulated/floor/tiled, -/area/submap/Rockybase) -"bJ" = ( -/obj/effect/decal/mecha_wreckage/hoverpod, -/turf/template_noop, -/area/template_noop) -"bK" = ( -/mob/living/simple_animal/hostile/malf_drone/lesser, -/turf/simulated/floor/tiled, -/area/submap/Rockybase) -"bL" = ( -/obj/effect/decal/cleanable/dirt, -/turf/simulated/floor/tiled, -/area/submap/Rockybase) -"bM" = ( -/obj/effect/decal/cleanable/blood, -/turf/simulated/floor/tiled, -/area/submap/Rockybase) -"bN" = ( -/obj/effect/decal/remains, -/turf/simulated/floor/tiled, -/area/submap/Rockybase) -"bO" = ( -/obj/machinery/door/airlock, -/turf/simulated/floor/tiled/hydro, -/area/submap/Rockybase) -"bP" = ( -/obj/machinery/vending/snack, -/obj/effect/floor_decal/borderfloor, -/turf/simulated/floor/tiled, -/area/submap/Rockybase) -"bQ" = ( -/obj/effect/floor_decal/borderfloor, -/turf/simulated/floor/tiled, -/area/submap/Rockybase) -"bR" = ( -/obj/effect/decal/cleanable/dirt, -/obj/effect/floor_decal/borderfloor, -/turf/simulated/floor/tiled, -/area/submap/Rockybase) -"bS" = ( -/obj/item/stack/rods, -/obj/structure/girder, -/turf/simulated/floor/tiled, -/area/submap/Rockybase) -"bT" = ( -/obj/effect/decal/remains, -/obj/effect/floor_decal/borderfloor, -/turf/simulated/floor/tiled, -/area/submap/Rockybase) -"bU" = ( -/obj/machinery/light, -/obj/effect/floor_decal/borderfloor, -/turf/simulated/floor/tiled, -/area/submap/Rockybase) -"bV" = ( -/obj/effect/decal/cleanable/blood, -/obj/effect/floor_decal/borderfloor, -/turf/simulated/floor/tiled, -/area/submap/Rockybase) -"bW" = ( -/obj/item/mecha_parts/part/gygax_right_arm, -/obj/effect/floor_decal/borderfloor, -/turf/simulated/floor/tiled, -/area/submap/Rockybase) -"bX" = ( -/obj/machinery/light/small{ - dir = 8 - }, -/turf/simulated/floor/tiled/hydro, -/area/submap/Rockybase) -"bY" = ( -/mob/living/simple_animal/hostile/viscerator{ - returns_home = 1 - }, -/turf/simulated/floor/tiled/hydro, -/area/submap/Rockybase) -"bZ" = ( -/obj/machinery/door/airlock/engineering, -/turf/simulated/floor/tiled, -/area/submap/Rockybase) -"ca" = ( -/obj/effect/floor_decal/rust, -/turf/simulated/floor/tiled, -/area/submap/Rockybase) -"cb" = ( -/turf/simulated/wall, -/area/submap/Rockybase) -"cc" = ( -/obj/structure/table/standard, -/obj/item/device/kit/paint/gygax/darkgygax, -/turf/simulated/floor/tiled, -/area/submap/Rockybase) -"cd" = ( -/obj/structure/table/standard, -/obj/item/weapon/paper{ - info = "I've decided to go forward and start some small scale tests of the Vicerator delivery grenades, Might as wall make sure they work like the real ones. There are a few Fauna areas nearbye and we're working to make sure the kinks in the code are worked out. Once we've made sure they stay flying we'll work on the IFF signals."; - name = "V-Grenade Notice 2" - }, -/turf/simulated/floor/tiled, -/area/submap/Rockybase) -"ce" = ( -/obj/structure/table/standard, -/obj/random/toolbox, -/obj/machinery/light{ - dir = 1 - }, -/turf/simulated/floor/tiled, -/area/submap/Rockybase) -"cf" = ( -/obj/structure/table/standard, -/obj/random/toolbox, -/turf/simulated/floor/tiled, -/area/submap/Rockybase) -"cg" = ( -/obj/structure/table/standard, -/obj/item/weapon/paper{ - info = "We've finally been able to get the Vicerator delivery grenades working, Took awhile to make sure the latching mechanism didn't fail but we're sure we've got it this time. Vel'Shem's worried about the miners having there own drone fab now but I say it's a small price to pay to keep the metal flowing, Especially since there telling us NT's starting to monopolize the metal rich parts."; - name = "V-Grenade Notice 1" - }, -/turf/simulated/floor/tiled, -/area/submap/Rockybase) -"ch" = ( -/obj/structure/table/standard, -/obj/item/stack/material/diamond, -/obj/item/stack/material/diamond, -/obj/item/stack/material/diamond, -/obj/item/stack/material/diamond, -/obj/item/stack/material/diamond, -/obj/item/stack/material/diamond, -/obj/item/stack/material/diamond, -/obj/item/stack/material/diamond, -/turf/simulated/floor/tiled, -/area/submap/Rockybase) -"ci" = ( -/obj/structure/table/standard, -/obj/item/weapon/grenade/spawnergrenade/manhacks, -/turf/simulated/floor/tiled, -/area/submap/Rockybase) -"cj" = ( -/obj/structure/table/standard, -/obj/item/stack/material/steel, -/turf/simulated/floor/tiled, -/area/submap/Rockybase) -"ck" = ( -/obj/structure/table/standard, -/obj/machinery/light{ - dir = 1 - }, -/obj/item/weapon/circuitboard/mecha/gygax/main, -/obj/item/weapon/circuitboard/mecha/gygax/peripherals, -/obj/item/weapon/circuitboard/mecha/gygax/targeting, -/turf/simulated/floor/tiled, -/area/submap/Rockybase) -"cl" = ( -/obj/structure/door_assembly, -/obj/effect/floor_decal/rust, -/turf/simulated/floor/tiled, -/area/submap/Rockybase) -"cm" = ( -/obj/item/weapon/material/shard, -/turf/simulated/floor, -/area/submap/Rockybase) -"cn" = ( -/obj/structure/table/standard, -/obj/fiftyspawner/rods, -/turf/simulated/floor/tiled, -/area/submap/Rockybase) -"co" = ( -/obj/machinery/vending/engivend, -/turf/simulated/floor/tiled, -/area/submap/Rockybase) -"cp" = ( -/obj/machinery/vending/tool, -/turf/simulated/floor/tiled, -/area/submap/Rockybase) -"cq" = ( -/obj/structure/table/standard, -/obj/item/weapon/storage/toolbox, -/turf/simulated/floor/tiled, -/area/submap/Rockybase) -"cr" = ( -/obj/structure/table/standard, -/obj/item/weapon/storage/toolbox/mechanical, -/turf/simulated/floor/tiled, -/area/submap/Rockybase) -"cs" = ( -/obj/item/mecha_parts/part/gygax_torso, -/turf/simulated/floor/tiled, -/area/submap/Rockybase) -"ct" = ( -/obj/machinery/light{ - dir = 1 - }, -/obj/structure/closet/crate/medical, -/turf/simulated/floor/tiled, -/area/submap/Rockybase) -"cu" = ( -/obj/structure/table/standard, -/obj/structure/table/standard, -/obj/effect/decal/cleanable/dirt, -/obj/item/weapon/reagent_containers/hypospray/autoinjector/biginjector/burn, -/turf/simulated/floor/tiled, -/area/submap/Rockybase) -"cv" = ( -/obj/structure/table/standard, -/obj/item/clothing/mask/breath/medical, -/obj/effect/decal/cleanable/dirt, -/turf/simulated/floor/tiled, -/area/submap/Rockybase) -"cw" = ( -/obj/structure/closet/secure_closet/medical2, -/turf/simulated/floor/tiled, -/area/submap/Rockybase) -"cx" = ( -/obj/structure/toilet{ - dir = 4 - }, -/obj/machinery/light/small{ - dir = 8 - }, -/turf/simulated/floor/tiled/hydro, -/area/submap/Rockybase) -"cy" = ( -/obj/structure/sink{ - dir = 4; - icon_state = "sink"; - pixel_x = 11; - pixel_y = 0 - }, -/turf/simulated/floor/tiled/hydro, -/area/submap/Rockybase) -"cz" = ( -/obj/structure/table/standard, -/obj/item/device/mmi/digital/robot, -/obj/item/weapon/stock_parts/capacitor/adv, -/obj/item/weapon/stock_parts/scanning_module/adv, -/turf/simulated/floor/tiled, -/area/submap/Rockybase) -"cA" = ( -/obj/structure/cable{ - d1 = 2; - d2 = 4; - icon_state = "2-4" - }, -/turf/simulated/floor/tiled, -/area/submap/Rockybase) -"cB" = ( -/obj/structure/cable{ - d1 = 4; - d2 = 8; - icon_state = "4-8"; - pixel_x = 0 - }, -/turf/simulated/floor/tiled, -/area/submap/Rockybase) -"cC" = ( -/obj/structure/cable{ - d2 = 8; - icon_state = "0-8" - }, -/obj/machinery/power/port_gen/pacman, -/turf/simulated/floor, -/area/submap/Rockybase) -"cD" = ( -/obj/structure/door_assembly, -/turf/simulated/floor/tiled, -/area/submap/Rockybase) -"cE" = ( -/obj/item/stack/rods, -/obj/effect/decal/cleanable/dirt, -/obj/effect/decal/cleanable/dirt, -/turf/simulated/floor/tiled, -/area/submap/Rockybase) -"cF" = ( -/obj/effect/decal/cleanable/dirt, -/obj/structure/girder, -/turf/simulated/floor, -/area/submap/Rockybase) -"cG" = ( -/obj/effect/decal/cleanable/dirt, -/turf/simulated/floor, -/area/submap/Rockybase) -"cH" = ( -/obj/effect/decal/cleanable/dirt, -/obj/structure/table, -/turf/simulated/floor, -/area/submap/Rockybase) -"cI" = ( -/obj/structure/girder, -/turf/simulated/floor, -/area/submap/Rockybase) -"cJ" = ( -/obj/structure/closet/secure_closet/medical1, -/turf/simulated/floor/tiled, -/area/submap/Rockybase) -"cK" = ( -/obj/machinery/light/small{ - dir = 4; - pixel_y = 0 - }, -/turf/simulated/floor/tiled/hydro, -/area/submap/Rockybase) -"cL" = ( -/obj/machinery/drone_fabricator{ - fabricator_tag = "Unknown" - }, -/turf/simulated/floor/tiled, -/area/submap/Rockybase) -"cN" = ( -/obj/machinery/mecha_part_fabricator, -/turf/simulated/floor/tiled, -/area/submap/Rockybase) -"cO" = ( -/obj/machinery/pros_fabricator, -/turf/simulated/floor/tiled, -/area/submap/Rockybase) -"cP" = ( -/obj/structure/table/standard, -/obj/item/mecha_parts/mecha_equipment/repair_droid, -/obj/item/mecha_parts/mecha_equipment/weapon/ballistic/missile_rack/explosive, -/turf/simulated/floor/tiled, -/area/submap/Rockybase) -"cQ" = ( -/obj/machinery/light{ - dir = 8 - }, -/turf/simulated/floor/tiled, -/area/submap/Rockybase) -"cR" = ( -/obj/effect/decal/cleanable/dirt, -/obj/structure/cable{ - d1 = 1; - d2 = 2; - icon_state = "1-2"; - pixel_y = 0 - }, -/obj/structure/cable{ - d1 = 1; - d2 = 4; - icon_state = "1-4" - }, -/mob/living/simple_animal/hostile/malf_drone/lesser, -/turf/simulated/floor/tiled, -/area/submap/Rockybase) -"cS" = ( -/obj/machinery/power/terminal{ - dir = 4 - }, -/obj/structure/cable{ - d2 = 8; - icon_state = "0-8" - }, -/turf/simulated/floor/tiled, -/area/submap/Rockybase) -"cT" = ( -/obj/machinery/power/smes/buildable/point_of_interest, -/obj/structure/cable/green{ - d2 = 2; - icon_state = "0-2" - }, -/turf/simulated/floor, -/area/submap/Rockybase) -"cU" = ( -/obj/machinery/vending/medical, -/turf/simulated/floor/tiled, -/area/submap/Rockybase) -"cV" = ( -/obj/effect/decal/cleanable/dirt, -/obj/effect/decal/cleanable/dirt, -/turf/simulated/floor/tiled, -/area/submap/Rockybase) -"cW" = ( -/obj/effect/decal/cleanable/dirt, -/obj/effect/decal/cleanable/dirt, -/turf/simulated/floor, -/area/submap/Rockybase) -"cX" = ( -/obj/effect/decal/cleanable/dirt, -/obj/effect/decal/cleanable/dirt, -/obj/item/weapon/material/shard, -/turf/simulated/floor, -/area/submap/Rockybase) -"cY" = ( -/obj/effect/decal/cleanable/dirt, -/obj/effect/decal/cleanable/dirt, -/obj/effect/decal/cleanable/dirt, -/turf/simulated/floor, -/area/submap/Rockybase) -"cZ" = ( -/obj/item/mecha_parts/part/gygax_armour, -/turf/simulated/floor, -/area/submap/Rockybase) -"da" = ( -/obj/item/mecha_parts/chassis/gygax, -/turf/simulated/floor/tiled, -/area/submap/Rockybase) -"db" = ( -/mob/living/simple_animal/hostile/mecha/malf_drone{ - name = "Autonomous Mechanized Drone" - }, -/turf/simulated/floor/tiled, -/area/submap/Rockybase) -"dc" = ( -/obj/effect/floor_decal/industrial/hatch/yellow, -/turf/simulated/floor/tiled, -/area/submap/Rockybase) -"dd" = ( -/obj/machinery/vending/robotics, -/obj/machinery/light{ - icon_state = "tube1"; - dir = 4 - }, -/turf/simulated/floor/tiled, -/area/submap/Rockybase) -"de" = ( -/obj/machinery/power/apc{ - cell_type = /obj/item/weapon/cell/super; - dir = 8; - name = "Unknown APC"; - pixel_x = -24 - }, -/obj/structure/cable/green{ - d2 = 4; - icon_state = "0-4" - }, -/turf/simulated/floor/tiled, -/area/submap/Rockybase) -"df" = ( -/obj/structure/cable/green{ - d1 = 4; - d2 = 8; - icon_state = "4-8" - }, -/turf/simulated/floor/tiled, -/area/submap/Rockybase) -"dg" = ( -/obj/effect/decal/cleanable/dirt, -/obj/structure/cable{ - d1 = 1; - d2 = 2; - icon_state = "1-2"; - pixel_y = 0 - }, -/obj/structure/cable/green{ - d1 = 4; - d2 = 8; - icon_state = "4-8" - }, -/turf/simulated/floor/tiled, -/area/submap/Rockybase) -"dh" = ( -/obj/machinery/light{ - icon_state = "tube1"; - dir = 4 - }, -/obj/structure/cable/green{ - d1 = 1; - d2 = 8; - icon_state = "1-8" - }, -/obj/structure/cable/green{ - d1 = 2; - d2 = 8; - icon_state = "2-8" - }, -/turf/simulated/floor/tiled, -/area/submap/Rockybase) -"di" = ( -/obj/effect/decal/cleanable/dirt, -/obj/effect/decal/cleanable/dirt, -/obj/effect/decal/cleanable/dirt, -/obj/effect/decal/cleanable/blood, -/turf/simulated/floor, -/area/submap/Rockybase) -"dj" = ( -/obj/item/mecha_parts/part/gygax_right_leg, -/obj/effect/floor_decal/corner/lime/border{ - icon_state = "bordercolor"; - dir = 4 - }, -/turf/simulated/floor/tiled, -/area/submap/Rockybase) -"dk" = ( -/obj/structure/sink{ - dir = 4; - icon_state = "sink"; - pixel_x = 11; - pixel_y = 0 - }, -/obj/item/mecha_parts/part/gygax_left_arm, -/turf/simulated/floor/tiled/hydro, -/area/submap/Rockybase) -"dl" = ( -/obj/machinery/vending, -/turf/simulated/floor/tiled, -/area/submap/Rockybase) -"dm" = ( -/obj/structure/cable{ - d1 = 1; - d2 = 4; - icon_state = "1-4" - }, -/turf/simulated/floor/tiled, -/area/submap/Rockybase) -"dn" = ( -/obj/machinery/power/smes/buildable/point_of_interest, -/obj/structure/cable/green, -/turf/simulated/floor, -/area/submap/Rockybase) -"do" = ( -/obj/machinery/light{ - dir = 8 - }, -/obj/structure/closet/secure_closet/medical3, -/turf/simulated/floor/tiled, -/area/submap/Rockybase) -"dp" = ( -/obj/effect/decal/cleanable/dirt, -/obj/effect/decal/cleanable/dirt, -/mob/living/simple_animal/hostile/malf_drone/lesser, -/turf/simulated/floor/tiled, -/area/submap/Rockybase) -"dq" = ( -/obj/structure/closet/secure_closet/hydroponics, -/obj/effect/floor_decal/corner/lime/border{ - icon_state = "bordercolor"; - dir = 4 - }, -/turf/simulated/floor/tiled, -/area/submap/Rockybase) -"dr" = ( -/obj/effect/decal/cleanable/blood/oil, -/turf/template_noop, -/area/template_noop) -"ds" = ( -/obj/machinery/light, -/turf/simulated/floor/tiled, -/area/submap/Rockybase) -"dt" = ( -/obj/machinery/mech_recharger, -/turf/simulated/floor/tiled, -/area/submap/Rockybase) -"du" = ( -/obj/structure/table/standard, -/obj/item/stack/material/plasteel, -/obj/item/stack/material/glass/reinforced, -/obj/item/stack/material/phoron{ - amount = 25 - }, -/turf/simulated/floor/tiled, -/area/submap/Rockybase) -"dv" = ( -/obj/structure/table/standard, -/obj/item/stack/material/glass, -/obj/item/stack/material/steel, -/turf/simulated/floor/tiled, -/area/submap/Rockybase) -"dw" = ( -/obj/structure/table/standard, -/obj/item/mecha_parts/part/gygax_head, -/turf/simulated/floor/tiled, -/area/submap/Rockybase) -"dx" = ( -/obj/structure/closet/toolcloset, -/turf/simulated/floor/tiled, -/area/submap/Rockybase) -"dy" = ( -/obj/structure/closet/secure_closet/medical3, -/turf/simulated/floor/tiled, -/area/submap/Rockybase) -"dz" = ( -/obj/item/weapon/surgical/surgicaldrill, -/obj/effect/decal/cleanable/dirt, -/turf/simulated/floor/tiled, -/area/submap/Rockybase) -"dA" = ( -/obj/structure/loot_pile/maint/technical, -/turf/simulated/floor/tiled, -/area/submap/Rockybase) -"dB" = ( -/obj/effect/decal/cleanable/dirt, -/mob/living/bot/medbot{ - faction = "malf_drone" - }, -/turf/simulated/floor/tiled, -/area/submap/Rockybase) -"dC" = ( -/obj/machinery/vending/hydroseeds, -/obj/effect/floor_decal/corner/lime/border{ - icon_state = "bordercolor"; - dir = 10 - }, -/turf/simulated/floor/tiled, -/area/submap/Rockybase) -"dD" = ( -/obj/structure/closet/crate/secure/hydrosec, -/obj/effect/floor_decal/corner/lime/border{ - icon_state = "bordercolor"; - dir = 6 - }, -/turf/simulated/floor/tiled, -/area/submap/Rockybase) -"dE" = ( -/obj/machinery/portable_atmospherics/hydroponics/soil, -/obj/structure/gravemarker{ - dir = 1 - }, -/turf/template_noop, -/area/template_noop) -"dF" = ( -/obj/effect/gibspawner/robot, -/turf/template_noop, -/area/template_noop) -"dG" = ( -/obj/effect/gibspawner/human, -/turf/template_noop, -/area/template_noop) +"aa" = (/turf/template_noop,/area/template_noop) +"ab" = (/obj/effect/decal/remains,/turf/template_noop,/area/template_noop) +"ac" = (/obj/item/weapon/grenade/chem_grenade/metalfoam,/turf/template_noop,/area/template_noop) +"ad" = (/mob/living/simple_mob/mechanical/viscerator,/turf/template_noop,/area/template_noop) +"ae" = (/obj/effect/decal/remains,/turf/template_noop,/area/submap/Rockybase) +"af" = (/turf/template_noop,/area/submap/Rockybase) +"ag" = (/obj/structure/flora/tree/sif,/turf/template_noop,/area/submap/Rockybase) +"ah" = (/obj/effect/gibspawner/robot,/turf/template_noop,/area/submap/Rockybase) +"ai" = (/turf/simulated/mineral/ignore_mapgen,/area/submap/Rockybase) +"aj" = (/obj/effect/decal/remains/robot,/turf/template_noop,/area/template_noop) +"ak" = (/mob/living/simple_mob/mechanical/combat_drone/lesser,/turf/template_noop,/area/submap/Rockybase) +"al" = (/turf/simulated/floor,/area/submap/Rockybase) +"am" = (/obj/effect/decal/remains/posi,/turf/simulated/floor,/area/submap/Rockybase) +"an" = (/obj/machinery/porta_turret/poi,/turf/simulated/floor,/area/submap/Rockybase) +"ao" = (/obj/effect/decal/cleanable/blood,/turf/simulated/floor,/area/submap/Rockybase) +"ap" = (/obj/structure/flora/tree/sif,/turf/template_noop,/area/template_noop) +"aq" = (/obj/effect/floor_decal/industrial/danger,/turf/simulated/floor,/area/submap/Rockybase) +"ar" = (/obj/machinery/light,/obj/effect/floor_decal/industrial/danger,/turf/simulated/floor,/area/submap/Rockybase) +"as" = (/obj/effect/decal/cleanable/blood,/obj/effect/floor_decal/industrial/danger,/turf/simulated/floor,/area/submap/Rockybase) +"at" = (/turf/simulated/wall/r_wall,/area/submap/Rockybase) +"au" = (/obj/structure/sign/securearea,/turf/simulated/wall/r_wall,/area/submap/Rockybase) +"av" = (/obj/machinery/door/airlock/external,/turf/simulated/floor/tiled,/area/submap/Rockybase) +"aw" = (/obj/effect/decal/remains/deer,/turf/template_noop,/area/template_noop) +"ax" = (/obj/machinery/shower{dir = 4; icon_state = "shower"; pixel_x = 5; pixel_y = 0},/obj/structure/curtain/open/shower,/obj/machinery/light/small{dir = 8},/turf/simulated/floor/tiled/hydro,/area/submap/Rockybase) +"ay" = (/turf/simulated/floor/tiled/hydro,/area/submap/Rockybase) +"az" = (/obj/machinery/shower{dir = 8; icon_state = "shower"; pixel_x = -5; pixel_y = 0},/obj/structure/curtain/open/shower,/obj/item/weapon/soap,/turf/simulated/floor/tiled/hydro,/area/submap/Rockybase) +"aA" = (/obj/structure/table/woodentable,/obj/effect/decal/cleanable/cobweb,/turf/simulated/floor/holofloor/lino,/area/submap/Rockybase) +"aB" = (/obj/structure/table/woodentable,/turf/simulated/floor/holofloor/lino,/area/submap/Rockybase) +"aC" = (/obj/structure/table/woodentable,/obj/item/device/flashlight/lamp,/turf/simulated/floor/holofloor/lino,/area/submap/Rockybase) +"aD" = (/obj/structure/closet{icon_closed = "cabinet_closed"; icon_opened = "cabinet_open"; icon_state = "cabinet_closed"},/obj/item/weapon/pickaxe/plasmacutter,/turf/simulated/floor/holofloor/lino,/area/submap/Rockybase) +"aE" = (/turf/simulated/floor/holofloor/lino,/area/submap/Rockybase) +"aF" = (/obj/structure/bed,/obj/item/weapon/bedsheet,/turf/simulated/floor/holofloor/lino,/area/submap/Rockybase) +"aG" = (/obj/structure/table/woodentable,/obj/machinery/light{dir = 1},/turf/simulated/floor/holofloor/lino,/area/submap/Rockybase) +"aH" = (/obj/structure/bed,/obj/item/weapon/bedsheet,/mob/living/simple_mob/mechanical/viscerator,/turf/simulated/floor/holofloor/lino,/area/submap/Rockybase) +"aI" = (/obj/structure/bed,/obj/item/weapon/bedsheet,/obj/item/toy/plushie/spider,/turf/simulated/floor/holofloor/lino,/area/submap/Rockybase) +"aJ" = (/obj/structure/closet/l3closet/janitor,/turf/simulated/floor/tiled,/area/submap/Rockybase) +"aK" = (/mob/living/bot/cleanbot{faction = "malf_drone"},/turf/simulated/floor/tiled,/area/submap/Rockybase) +"aL" = (/obj/item/weapon/stool,/turf/simulated/floor/tiled,/area/submap/Rockybase) +"aM" = (/obj/item/weapon/storage/belt/janitor,/obj/structure/table/standard,/turf/simulated/floor/tiled,/area/submap/Rockybase) +"aN" = (/turf/simulated/floor/tiled,/area/submap/Rockybase) +"aO" = (/obj/structure/table/standard,/obj/item/device/laptop,/obj/effect/floor_decal/corner/red/border{icon_state = "bordercolor"; dir = 9},/turf/simulated/floor/tiled,/area/submap/Rockybase) +"aP" = (/obj/structure/table/standard,/obj/effect/floor_decal/corner/red/border{icon_state = "bordercolor"; dir = 1},/turf/simulated/floor/tiled,/area/submap/Rockybase) +"aQ" = (/obj/structure/table/rack,/obj/item/weapon/gun/projectile/pistol,/obj/effect/floor_decal/corner/red/border{icon_state = "bordercolor"; dir = 1},/turf/simulated/floor/tiled,/area/submap/Rockybase) +"aR" = (/obj/structure/table/rack,/obj/item/weapon/gun/energy/gun/taser,/obj/effect/floor_decal/corner/red/border{icon_state = "bordercolor"; dir = 1},/turf/simulated/floor/tiled,/area/submap/Rockybase) +"aS" = (/obj/machinery/light{dir = 1},/obj/effect/floor_decal/corner/red/border{icon_state = "bordercolor"; dir = 1},/turf/simulated/floor/tiled,/area/submap/Rockybase) +"aT" = (/obj/machinery/vending/coffee,/obj/effect/floor_decal/corner/red/border{icon_state = "bordercolor"; dir = 5},/turf/simulated/floor/tiled,/area/submap/Rockybase) +"aU" = (/turf/simulated/floor/tiled/techfloor,/area/submap/Rockybase) +"aV" = (/obj/structure/table/rack,/obj/item/weapon/gun/projectile/shotgun/pump/combat,/obj/item/weapon/gun/projectile/shotgun/pump/combat,/turf/simulated/floor/tiled/techfloor,/area/submap/Rockybase) +"aW" = (/obj/machinery/vending/hydronutrients,/obj/effect/floor_decal/corner/lime/border{icon_state = "bordercolor"; dir = 9},/turf/simulated/floor/tiled,/area/submap/Rockybase) +"aX" = (/obj/structure/closet/crate/hydroponics,/obj/effect/floor_decal/corner/lime/border{icon_state = "bordercolor"; dir = 5},/turf/simulated/floor/tiled,/area/submap/Rockybase) +"aY" = (/obj/machinery/shower{dir = 4; icon_state = "shower"; pixel_x = 5; pixel_y = 0},/obj/structure/curtain/open/shower,/turf/simulated/floor/tiled/hydro,/area/submap/Rockybase) +"aZ" = (/obj/machinery/shower{dir = 8; icon_state = "shower"; pixel_x = -5; pixel_y = 0},/obj/structure/curtain/open/shower,/turf/simulated/floor/tiled/hydro,/area/submap/Rockybase) +"ba" = (/obj/structure/janitorialcart,/turf/simulated/floor/tiled,/area/submap/Rockybase) +"bb" = (/obj/structure/table/standard,/obj/item/weapon/grenade/chem_grenade/cleaner,/obj/item/weapon/grenade/chem_grenade/cleaner,/obj/item/weapon/grenade/chem_grenade/cleaner,/obj/machinery/light{icon_state = "tube1"; dir = 4},/turf/simulated/floor/tiled,/area/submap/Rockybase) +"bc" = (/obj/machinery/light/small{dir = 8},/turf/simulated/floor/tiled,/area/submap/Rockybase) +"bd" = (/obj/structure/table/standard,/obj/item/weapon/paper{info = "Carl's absolutly fucked in the head. He's trying to squeeze as much drone production out as he can since he's worried we're gonna get found out but he's getting sloppier with each batch. Now's he's telling us he can speed the time on the IFF encoding. I already have a hard enough time getting these damn things not to stare at walls and now he's gonna shortchange the only part of these tincans that tells em not to turn us into paste on a wall. I told Richter to get out while he can, We're counting days before either some Sif task force shows up at our door or these things decide we aren't there friends anymore."; name = "Note"},/obj/effect/floor_decal/corner/red/border{icon_state = "bordercolor"; dir = 8},/turf/simulated/floor/tiled,/area/submap/Rockybase) +"be" = (/obj/structure/bed/chair{dir = 8},/turf/simulated/floor/tiled,/area/submap/Rockybase) +"bf" = (/mob/living/simple_mob/mechanical/viscerator,/turf/simulated/floor/tiled,/area/submap/Rockybase) +"bg" = (/obj/machinery/vending/security,/obj/effect/floor_decal/corner/red/border{icon_state = "bordercolor"; dir = 4},/turf/simulated/floor/tiled,/area/submap/Rockybase) +"bh" = (/obj/structure/table/rack,/obj/item/weapon/storage/box/shotgunshells,/obj/item/weapon/storage/box/shotgunshells,/obj/item/weapon/cell/device/weapon,/turf/simulated/floor/tiled/techfloor,/area/submap/Rockybase) +"bi" = (/obj/effect/floor_decal/corner/lime/border{icon_state = "bordercolor"; dir = 8},/turf/simulated/floor/tiled,/area/submap/Rockybase) +"bj" = (/obj/structure/sink{dir = 4; icon_state = "sink"; pixel_x = 11; pixel_y = 0},/obj/effect/floor_decal/corner/lime/border{icon_state = "bordercolor"; dir = 4},/turf/simulated/floor/tiled,/area/submap/Rockybase) +"bk" = (/obj/machinery/shower{dir = 8; icon_state = "shower"; pixel_x = -5; pixel_y = 0},/obj/structure/curtain/open/shower,/obj/machinery/light/small{dir = 4; pixel_y = 0},/turf/simulated/floor/tiled/hydro,/area/submap/Rockybase) +"bl" = (/obj/item/mecha_parts/part/gygax_left_leg,/turf/simulated/floor/holofloor/lino,/area/submap/Rockybase) +"bm" = (/obj/machinery/light,/turf/simulated/floor/holofloor/lino,/area/submap/Rockybase) +"bn" = (/obj/structure/bed,/obj/item/weapon/bedsheet,/obj/item/weapon/gun/projectile/pistol,/turf/simulated/floor/holofloor/lino,/area/submap/Rockybase) +"bo" = (/obj/structure/closet/crate/trashcart,/turf/simulated/floor/tiled,/area/submap/Rockybase) +"bp" = (/obj/structure/loot_pile/maint/trash,/turf/simulated/floor/tiled,/area/submap/Rockybase) +"bq" = (/obj/structure/table/standard,/obj/item/weapon/storage/bag/trash,/obj/item/weapon/storage/bag/trash,/turf/simulated/floor/tiled,/area/submap/Rockybase) +"br" = (/obj/structure/table/standard,/obj/item/weapon/paper_bin,/obj/effect/floor_decal/corner/red/border{icon_state = "bordercolor"; dir = 10},/turf/simulated/floor/tiled,/area/submap/Rockybase) +"bs" = (/obj/machinery/light,/obj/structure/table/standard,/obj/item/weapon/pen,/obj/effect/floor_decal/corner/red/border,/turf/simulated/floor/tiled,/area/submap/Rockybase) +"bt" = (/obj/effect/floor_decal/corner/red/border,/turf/simulated/floor/tiled,/area/submap/Rockybase) +"bu" = (/obj/effect/floor_decal/corner/red/border,/mob/living/simple_mob/mechanical/viscerator,/turf/simulated/floor/tiled,/area/submap/Rockybase) +"bv" = (/obj/machinery/door/airlock/security{icon_state = "door_locked"; locked = 1},/turf/simulated/floor/tiled/techfloor,/area/submap/Rockybase) +"bw" = (/obj/machinery/light,/turf/simulated/floor/tiled/techfloor,/area/submap/Rockybase) +"bx" = (/obj/structure/table/rack,/obj/item/weapon/gun/energy/ionrifle/pistol,/turf/simulated/floor/tiled/techfloor,/area/submap/Rockybase) +"by" = (/obj/machinery/portable_atmospherics/hydroponics,/obj/effect/floor_decal/corner/lime/border{icon_state = "bordercolor"; dir = 4},/turf/simulated/floor/tiled,/area/submap/Rockybase) +"bz" = (/obj/machinery/door/airlock,/turf/simulated/floor/tiled,/area/submap/Rockybase) +"bA" = (/obj/effect/floor_decal/corner/lime/border{icon_state = "bordercolor"; dir = 8},/mob/living/bot/farmbot{faction = "malf_drone"; name = "Mr. Weddleton"},/turf/simulated/floor/tiled,/area/submap/Rockybase) +"bB" = (/obj/machinery/portable_atmospherics/hydroponics,/obj/machinery/light{icon_state = "tube1"; dir = 4},/obj/effect/floor_decal/corner/lime/border{icon_state = "bordercolor"; dir = 4},/turf/simulated/floor/tiled,/area/submap/Rockybase) +"bC" = (/obj/effect/decal/remains/posi,/turf/template_noop,/area/template_noop) +"bD" = (/obj/machinery/vending/cola,/obj/effect/floor_decal/borderfloor{dir = 1},/turf/simulated/floor/tiled,/area/submap/Rockybase) +"bE" = (/obj/effect/floor_decal/borderfloor{dir = 1},/turf/simulated/floor/tiled,/area/submap/Rockybase) +"bF" = (/obj/machinery/light{dir = 1},/obj/effect/floor_decal/borderfloor{dir = 1},/turf/simulated/floor/tiled,/area/submap/Rockybase) +"bG" = (/obj/structure/door_assembly,/obj/effect/floor_decal/borderfloor{dir = 1},/turf/simulated/floor/tiled,/area/submap/Rockybase) +"bH" = (/obj/effect/decal/cleanable/dirt,/obj/effect/floor_decal/borderfloor{dir = 1},/turf/simulated/floor/tiled,/area/submap/Rockybase) +"bI" = (/obj/effect/decal/cleanable/dirt,/obj/effect/decal/cleanable/cobweb2,/obj/effect/floor_decal/borderfloor{dir = 1},/turf/simulated/floor/tiled,/area/submap/Rockybase) +"bJ" = (/obj/effect/decal/mecha_wreckage/hoverpod,/turf/template_noop,/area/template_noop) +"bK" = (/mob/living/simple_mob/mechanical/combat_drone/lesser,/turf/simulated/floor/tiled,/area/submap/Rockybase) +"bL" = (/obj/effect/decal/cleanable/dirt,/turf/simulated/floor/tiled,/area/submap/Rockybase) +"bM" = (/obj/effect/decal/cleanable/blood,/turf/simulated/floor/tiled,/area/submap/Rockybase) +"bN" = (/obj/effect/decal/remains,/turf/simulated/floor/tiled,/area/submap/Rockybase) +"bO" = (/obj/machinery/door/airlock,/turf/simulated/floor/tiled/hydro,/area/submap/Rockybase) +"bP" = (/obj/machinery/vending/snack,/obj/effect/floor_decal/borderfloor,/turf/simulated/floor/tiled,/area/submap/Rockybase) +"bQ" = (/obj/effect/floor_decal/borderfloor,/turf/simulated/floor/tiled,/area/submap/Rockybase) +"bR" = (/obj/effect/decal/cleanable/dirt,/obj/effect/floor_decal/borderfloor,/turf/simulated/floor/tiled,/area/submap/Rockybase) +"bS" = (/obj/item/stack/rods,/obj/structure/girder,/turf/simulated/floor/tiled,/area/submap/Rockybase) +"bT" = (/obj/effect/decal/remains,/obj/effect/floor_decal/borderfloor,/turf/simulated/floor/tiled,/area/submap/Rockybase) +"bU" = (/obj/machinery/light,/obj/effect/floor_decal/borderfloor,/turf/simulated/floor/tiled,/area/submap/Rockybase) +"bV" = (/obj/effect/decal/cleanable/blood,/obj/effect/floor_decal/borderfloor,/turf/simulated/floor/tiled,/area/submap/Rockybase) +"bW" = (/obj/item/mecha_parts/part/gygax_right_arm,/obj/effect/floor_decal/borderfloor,/turf/simulated/floor/tiled,/area/submap/Rockybase) +"bX" = (/obj/machinery/light/small{dir = 8},/turf/simulated/floor/tiled/hydro,/area/submap/Rockybase) +"bY" = (/mob/living/simple_mob/mechanical/viscerator,/turf/simulated/floor/tiled/hydro,/area/submap/Rockybase) +"bZ" = (/obj/machinery/door/airlock/engineering,/turf/simulated/floor/tiled,/area/submap/Rockybase) +"ca" = (/obj/effect/floor_decal/rust,/turf/simulated/floor/tiled,/area/submap/Rockybase) +"cb" = (/turf/simulated/wall,/area/submap/Rockybase) +"cc" = (/obj/structure/table/standard,/obj/item/device/kit/paint/gygax/darkgygax,/turf/simulated/floor/tiled,/area/submap/Rockybase) +"cd" = (/obj/structure/table/standard,/obj/item/weapon/paper{info = "I've decided to go forward and start some small scale tests of the Vicerator delivery grenades, Might as wall make sure they work like the real ones. There are a few Fauna areas nearbye and we're working to make sure the kinks in the code are worked out. Once we've made sure they stay flying we'll work on the IFF signals."; name = "V-Grenade Notice 2"},/turf/simulated/floor/tiled,/area/submap/Rockybase) +"ce" = (/obj/structure/table/standard,/obj/random/toolbox,/obj/machinery/light{dir = 1},/turf/simulated/floor/tiled,/area/submap/Rockybase) +"cf" = (/obj/structure/table/standard,/obj/random/toolbox,/turf/simulated/floor/tiled,/area/submap/Rockybase) +"cg" = (/obj/structure/table/standard,/obj/item/weapon/paper{info = "We've finally been able to get the Vicerator delivery grenades working, Took awhile to make sure the latching mechanism didn't fail but we're sure we've got it this time. Vel'Shem's worried about the miners having there own drone fab now but I say it's a small price to pay to keep the metal flowing, Especially since there telling us NT's starting to monopolize the metal rich parts."; name = "V-Grenade Notice 1"},/turf/simulated/floor/tiled,/area/submap/Rockybase) +"ch" = (/obj/structure/table/standard,/obj/item/stack/material/diamond,/obj/item/stack/material/diamond,/obj/item/stack/material/diamond,/obj/item/stack/material/diamond,/obj/item/stack/material/diamond,/obj/item/stack/material/diamond,/obj/item/stack/material/diamond,/obj/item/stack/material/diamond,/turf/simulated/floor/tiled,/area/submap/Rockybase) +"ci" = (/obj/structure/table/standard,/obj/item/weapon/grenade/spawnergrenade/manhacks,/turf/simulated/floor/tiled,/area/submap/Rockybase) +"cj" = (/obj/structure/table/standard,/obj/item/stack/material/steel,/turf/simulated/floor/tiled,/area/submap/Rockybase) +"ck" = (/obj/structure/table/standard,/obj/machinery/light{dir = 1},/obj/item/weapon/circuitboard/mecha/gygax/main,/obj/item/weapon/circuitboard/mecha/gygax/peripherals,/obj/item/weapon/circuitboard/mecha/gygax/targeting,/turf/simulated/floor/tiled,/area/submap/Rockybase) +"cl" = (/obj/structure/door_assembly,/obj/effect/floor_decal/rust,/turf/simulated/floor/tiled,/area/submap/Rockybase) +"cm" = (/obj/item/weapon/material/shard,/turf/simulated/floor,/area/submap/Rockybase) +"cn" = (/obj/structure/table/standard,/obj/fiftyspawner/rods,/turf/simulated/floor/tiled,/area/submap/Rockybase) +"co" = (/obj/machinery/vending/engivend,/turf/simulated/floor/tiled,/area/submap/Rockybase) +"cp" = (/obj/machinery/vending/tool,/turf/simulated/floor/tiled,/area/submap/Rockybase) +"cq" = (/obj/structure/table/standard,/obj/item/weapon/storage/toolbox,/turf/simulated/floor/tiled,/area/submap/Rockybase) +"cr" = (/obj/structure/table/standard,/obj/item/weapon/storage/toolbox/mechanical,/turf/simulated/floor/tiled,/area/submap/Rockybase) +"cs" = (/obj/item/mecha_parts/part/gygax_torso,/turf/simulated/floor/tiled,/area/submap/Rockybase) +"ct" = (/obj/machinery/light{dir = 1},/obj/structure/closet/crate/medical,/turf/simulated/floor/tiled,/area/submap/Rockybase) +"cu" = (/obj/structure/table/standard,/obj/structure/table/standard,/obj/effect/decal/cleanable/dirt,/obj/item/weapon/reagent_containers/hypospray/autoinjector/biginjector/burn,/turf/simulated/floor/tiled,/area/submap/Rockybase) +"cv" = (/obj/structure/table/standard,/obj/item/clothing/mask/breath/medical,/obj/effect/decal/cleanable/dirt,/turf/simulated/floor/tiled,/area/submap/Rockybase) +"cw" = (/obj/structure/closet/secure_closet/medical2,/turf/simulated/floor/tiled,/area/submap/Rockybase) +"cx" = (/obj/structure/toilet{dir = 4},/obj/machinery/light/small{dir = 8},/turf/simulated/floor/tiled/hydro,/area/submap/Rockybase) +"cy" = (/obj/structure/sink{dir = 4; icon_state = "sink"; pixel_x = 11; pixel_y = 0},/turf/simulated/floor/tiled/hydro,/area/submap/Rockybase) +"cz" = (/obj/structure/table/standard,/obj/item/device/mmi/digital/robot,/obj/item/weapon/stock_parts/capacitor/adv,/obj/item/weapon/stock_parts/scanning_module/adv,/turf/simulated/floor/tiled,/area/submap/Rockybase) +"cA" = (/obj/structure/cable{d1 = 2; d2 = 4; icon_state = "2-4"},/turf/simulated/floor/tiled,/area/submap/Rockybase) +"cB" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0},/turf/simulated/floor/tiled,/area/submap/Rockybase) +"cC" = (/obj/structure/cable{d2 = 8; icon_state = "0-8"},/obj/machinery/power/port_gen/pacman,/turf/simulated/floor,/area/submap/Rockybase) +"cD" = (/obj/structure/door_assembly,/turf/simulated/floor/tiled,/area/submap/Rockybase) +"cE" = (/obj/item/stack/rods,/obj/effect/decal/cleanable/dirt,/obj/effect/decal/cleanable/dirt,/turf/simulated/floor/tiled,/area/submap/Rockybase) +"cF" = (/obj/effect/decal/cleanable/dirt,/obj/structure/girder,/turf/simulated/floor,/area/submap/Rockybase) +"cG" = (/obj/effect/decal/cleanable/dirt,/turf/simulated/floor,/area/submap/Rockybase) +"cH" = (/obj/effect/decal/cleanable/dirt,/obj/structure/table,/turf/simulated/floor,/area/submap/Rockybase) +"cI" = (/obj/structure/girder,/turf/simulated/floor,/area/submap/Rockybase) +"cJ" = (/obj/structure/closet/secure_closet/medical1,/turf/simulated/floor/tiled,/area/submap/Rockybase) +"cK" = (/obj/machinery/light/small{dir = 4; pixel_y = 0},/turf/simulated/floor/tiled/hydro,/area/submap/Rockybase) +"cL" = (/mob/living/simple_mob/mechanical/mecha/combat/gygax/dark/advanced{faction = "malf_drone"},/turf/simulated/floor/tiled,/area/submap/Rockybase) +"cM" = (/obj/machinery/drone_fabricator{fabricator_tag = "Unknown"},/turf/simulated/floor/tiled,/area/submap/Rockybase) +"cN" = (/obj/machinery/mecha_part_fabricator,/turf/simulated/floor/tiled,/area/submap/Rockybase) +"cO" = (/obj/machinery/pros_fabricator,/turf/simulated/floor/tiled,/area/submap/Rockybase) +"cP" = (/obj/structure/table/standard,/obj/item/mecha_parts/mecha_equipment/repair_droid,/obj/item/mecha_parts/mecha_equipment/weapon/ballistic/missile_rack/explosive,/turf/simulated/floor/tiled,/area/submap/Rockybase) +"cQ" = (/obj/machinery/light{dir = 8},/turf/simulated/floor/tiled,/area/submap/Rockybase) +"cR" = (/obj/effect/decal/cleanable/dirt,/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; pixel_y = 0},/obj/structure/cable{d1 = 1; d2 = 4; icon_state = "1-4"},/mob/living/simple_mob/mechanical/combat_drone/lesser,/turf/simulated/floor/tiled,/area/submap/Rockybase) +"cS" = (/obj/machinery/power/terminal{dir = 4},/obj/structure/cable{d2 = 8; icon_state = "0-8"},/turf/simulated/floor/tiled,/area/submap/Rockybase) +"cT" = (/obj/machinery/power/smes/buildable/point_of_interest,/obj/structure/cable/green{d2 = 2; icon_state = "0-2"},/turf/simulated/floor,/area/submap/Rockybase) +"cU" = (/obj/machinery/vending/medical,/turf/simulated/floor/tiled,/area/submap/Rockybase) +"cV" = (/obj/effect/decal/cleanable/dirt,/obj/effect/decal/cleanable/dirt,/turf/simulated/floor/tiled,/area/submap/Rockybase) +"cW" = (/obj/effect/decal/cleanable/dirt,/obj/effect/decal/cleanable/dirt,/turf/simulated/floor,/area/submap/Rockybase) +"cX" = (/obj/effect/decal/cleanable/dirt,/obj/effect/decal/cleanable/dirt,/obj/item/weapon/material/shard,/turf/simulated/floor,/area/submap/Rockybase) +"cY" = (/obj/effect/decal/cleanable/dirt,/obj/effect/decal/cleanable/dirt,/obj/effect/decal/cleanable/dirt,/turf/simulated/floor,/area/submap/Rockybase) +"cZ" = (/obj/item/mecha_parts/part/gygax_armour,/turf/simulated/floor,/area/submap/Rockybase) +"da" = (/obj/item/mecha_parts/chassis/gygax,/turf/simulated/floor/tiled,/area/submap/Rockybase) +"dc" = (/obj/effect/floor_decal/industrial/hatch/yellow,/turf/simulated/floor/tiled,/area/submap/Rockybase) +"dd" = (/obj/machinery/vending/robotics,/obj/machinery/light{icon_state = "tube1"; dir = 4},/turf/simulated/floor/tiled,/area/submap/Rockybase) +"de" = (/obj/machinery/power/apc{cell_type = /obj/item/weapon/cell/super; dir = 8; name = "Unknown APC"; pixel_x = -24},/obj/structure/cable/green{d2 = 4; icon_state = "0-4"},/turf/simulated/floor/tiled,/area/submap/Rockybase) +"df" = (/obj/structure/cable/green{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor/tiled,/area/submap/Rockybase) +"dg" = (/obj/effect/decal/cleanable/dirt,/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; pixel_y = 0},/obj/structure/cable/green{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor/tiled,/area/submap/Rockybase) +"dh" = (/obj/machinery/light{icon_state = "tube1"; dir = 4},/obj/structure/cable/green{d1 = 1; d2 = 8; icon_state = "1-8"},/obj/structure/cable/green{d1 = 2; d2 = 8; icon_state = "2-8"},/turf/simulated/floor/tiled,/area/submap/Rockybase) +"di" = (/obj/effect/decal/cleanable/dirt,/obj/effect/decal/cleanable/dirt,/obj/effect/decal/cleanable/dirt,/obj/effect/decal/cleanable/blood,/turf/simulated/floor,/area/submap/Rockybase) +"dj" = (/obj/item/mecha_parts/part/gygax_right_leg,/obj/effect/floor_decal/corner/lime/border{icon_state = "bordercolor"; dir = 4},/turf/simulated/floor/tiled,/area/submap/Rockybase) +"dk" = (/obj/structure/sink{dir = 4; icon_state = "sink"; pixel_x = 11; pixel_y = 0},/obj/item/mecha_parts/part/gygax_left_arm,/turf/simulated/floor/tiled/hydro,/area/submap/Rockybase) +"dl" = (/obj/machinery/vending,/turf/simulated/floor/tiled,/area/submap/Rockybase) +"dm" = (/obj/structure/cable{d1 = 1; d2 = 4; icon_state = "1-4"},/turf/simulated/floor/tiled,/area/submap/Rockybase) +"dn" = (/obj/machinery/power/smes/buildable/point_of_interest,/obj/structure/cable/green,/turf/simulated/floor,/area/submap/Rockybase) +"do" = (/obj/machinery/light{dir = 8},/obj/structure/closet/secure_closet/medical3,/turf/simulated/floor/tiled,/area/submap/Rockybase) +"dp" = (/obj/effect/decal/cleanable/dirt,/obj/effect/decal/cleanable/dirt,/mob/living/simple_mob/mechanical/combat_drone/lesser,/turf/simulated/floor/tiled,/area/submap/Rockybase) +"dq" = (/obj/structure/closet/secure_closet/hydroponics,/obj/effect/floor_decal/corner/lime/border{icon_state = "bordercolor"; dir = 4},/turf/simulated/floor/tiled,/area/submap/Rockybase) +"dr" = (/obj/effect/decal/cleanable/blood/oil,/turf/template_noop,/area/template_noop) +"ds" = (/obj/machinery/light,/turf/simulated/floor/tiled,/area/submap/Rockybase) +"dt" = (/obj/machinery/mech_recharger,/turf/simulated/floor/tiled,/area/submap/Rockybase) +"du" = (/obj/structure/table/standard,/obj/item/stack/material/plasteel,/obj/item/stack/material/glass/reinforced,/obj/item/stack/material/phoron{amount = 25},/turf/simulated/floor/tiled,/area/submap/Rockybase) +"dv" = (/obj/structure/table/standard,/obj/item/stack/material/glass,/obj/item/stack/material/steel,/turf/simulated/floor/tiled,/area/submap/Rockybase) +"dw" = (/obj/structure/table/standard,/obj/item/mecha_parts/part/gygax_head,/turf/simulated/floor/tiled,/area/submap/Rockybase) +"dx" = (/obj/structure/closet/toolcloset,/turf/simulated/floor/tiled,/area/submap/Rockybase) +"dy" = (/obj/structure/closet/secure_closet/medical3,/turf/simulated/floor/tiled,/area/submap/Rockybase) +"dz" = (/obj/item/weapon/surgical/surgicaldrill,/obj/effect/decal/cleanable/dirt,/turf/simulated/floor/tiled,/area/submap/Rockybase) +"dA" = (/obj/structure/loot_pile/maint/technical,/turf/simulated/floor/tiled,/area/submap/Rockybase) +"dB" = (/obj/effect/decal/cleanable/dirt,/mob/living/bot/medbot{faction = "malf_drone"},/turf/simulated/floor/tiled,/area/submap/Rockybase) +"dC" = (/obj/machinery/vending/hydroseeds,/obj/effect/floor_decal/corner/lime/border{icon_state = "bordercolor"; dir = 10},/turf/simulated/floor/tiled,/area/submap/Rockybase) +"dD" = (/obj/structure/closet/crate/secure/hydrosec,/obj/effect/floor_decal/corner/lime/border{icon_state = "bordercolor"; dir = 6},/turf/simulated/floor/tiled,/area/submap/Rockybase) +"dE" = (/obj/machinery/portable_atmospherics/hydroponics/soil,/obj/structure/gravemarker{dir = 1},/turf/template_noop,/area/template_noop) +"dF" = (/obj/effect/gibspawner/robot,/turf/template_noop,/area/template_noop) +"dG" = (/obj/effect/gibspawner/human,/turf/template_noop,/area/template_noop) (1,1,1) = {" -aa -aa -aa -aa -aa -aa -aa -aa -ab -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 -aa -aa -"} -(2,1,1) = {" -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 -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -"} -(3,1,1) = {" -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 -ab -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -"} -(4,1,1) = {" -aa -aa -aa -ad -aa -aa -aa -aa -aa -aa -aa -ap -aa -aa -aa -aa -ab -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -ad -aa -dF -aa -"} -(5,1,1) = {" -aa -aa -aa -aa -ae -af -af -af -af -af -af -af -af -af -ai -ai -ai -ai -ai -af -af -af -af -af -af -af -af -af -af -af -af -af -aa -aa -aa -aa -"} -(6,1,1) = {" -aa -aa -aa -aa -af -af -af -af -af -af -ai -ai -ai -ai -ai -ai -ai -ai -ai -ai -ai -ai -ai -ai -ai -ai -ai -ai -ai -ai -af -ag -ab -aa -aa -aa -"} -(7,1,1) = {" -aa -aa -aa -aa -af -af -af -af -ai -ai -ai -ai -ai -at -at -at -at -at -at -at -at -at -at -at -at -at -at -ai -ai -ai -ai -af -aa -aa -aa -aa -"} -(8,1,1) = {" -aa -aa -aa -aa -af -af -af -af -ai -ai -ai -ai -at -at -at -at -at -at -at -at -at -at -at -at -at -at -at -at -ai -ai -ai -af -aa -aa -aa -aa -"} -(9,1,1) = {" -aa -aa -aa -aa -ag -af -af -af -ai -ai -ai -ai -at -ax -aY -aY -ay -at -bc -at -bX -cb -cx -cb -cx -cb -cx -at -ai -ai -ai -af -aa -aa -aa -aa -"} -(10,1,1) = {" -aa -ab -aa -aa -af -af -af -af -ai -ai -ai -ai -at -ay -ay -ay -ay -bz -aN -bO -ay -cb -bO -cb -bO -cb -bO -at -ai -ai -ai -af -aa -aa -aa -aa -"} -(11,1,1) = {" -aa -ac -aa -aa -af -af -af -af -ai -ai -ai -ai -at -az -aZ -bk -ay -at -aN -at -bY -ay -cy -cK -ay -dk -ay -at -ai -ai -ai -af -aa -aa -aa -aa -"} -(12,1,1) = {" -aa -aa -aa -aa -af -af -af -af -af -ai -ai -ai -at -at -at -at -at -at -aN -at -at -at -at -at -at -at -at -at -ai -ai -ai -af -aa -dE -aa -aa -"} -(13,1,1) = {" -aa -aa -aa -aa -af -af -af -af -af -ak -ai -ai -at -aA -aE -aE -at -bD -aN -bP -at -cc -aN -aN -cQ -aN -aN -at -ai -ai -ai -ai -aa -aa -aa -aa -"} -(14,1,1) = {" -aa -aa -aa -aa -ag -af -af -af -af -af -ai -ai -at -aB -aE -bl -at -bE -aN -bQ -at -cd -aN -cL -aN -cL -aN -at -ai -ai -ai -ai -aa -aa -aa -aa -"} -(15,1,1) = {" -aa -aa -aa -aa -af -af -af -af -af -af -ai -ai -at -aC -aE -aE -bz -bE -aN -bQ -at -ce -aN -aN -aN -aN -aN -at -ai -ai -ai -ai -aa -aa -aa -aa -"} -(16,1,1) = {" -aa -aa -aa -aa -af -af -af -af -af -af -ai -ai -at -aD -aE -aE -at -bE -bK -bR -at -cf -aN -aN -da -aN -aN -at -ai -ai -ai -ai -aa -aa -aa -aa -"} -(17,1,1) = {" -aa -aa -aa -aa -af -af -af -af -af -ai -ai -ai -at -aE -aE -bm -at -bE -bL -bR -at -cg -aN -cL -aN -al -aN -at -ai -ai -ai -ai -aa -aa -aa -aa -"} -(18,1,1) = {" -aa -aa -aa -aa -af -af -af -af -af -ai -ai -ai -at -aE -aE -aE -at -bF -bL -bR -at -ch -aN -aN -db -al -aN -at -ai -ai -ai -af -aa -aa -aa -aa -"} -(19,1,1) = {" -aa -aa -aa -aa -af -af -af -af -af -ai -ai -ai -at -aB -aE -aB -at -bE -aN -bQ -at -ci -aN -aN -aN -bL -ds -at -ai -ai -ak -af -aa -aa -ab -aa -"} -(20,1,1) = {" -aa -aa -aa -aa -ae -af -af -ag -af -ai -ai -ai -at -aF -aE -bn -at -bE -bM -bQ -at -cj -aN -cN -dc -bL -dt -at -ai -ai -af -af -aa -aa -aa -aa -"} -(21,1,1) = {" -aa -aa -aa -aa -af -af -af -af -af -ai -ai -ai -at -aG -aE -aB -at -bE -bN -bQ -at -ck -aN -aN -bL -bL -aN -at -ai -ai -af -af -aa -aa -aa -aa -"} -(22,1,1) = {" -aa -aa -aa -aa -af -af -af -af -af -af -ai -ai -at -aH -aE -aH -at -bE -aN -bS -at -cl -ca -cO -dc -bL -dt -at -ai -ai -af -af -aa -aa -aa -aa -"} -(23,1,1) = {" -aa -aa -aa -aa -af -af -af -af -af -af -af -ai -at -aB -aE -aB -at -bG -aN -aN -al -al -ca -ca -ca -aN -aN -at -ai -ai -ai -af -aa -aa -aa -aa -"} -(24,1,1) = {" -aa -aa -aa -ad -af -af -af -af -af -af -af -ai -at -aI -aE -aF -at -bE -aN -al -al -cm -al -al -ca -aN -aN -at -ai -ai -ai -af -aa -aa -aa -aa -"} -(25,1,1) = {" -aa -aa -aa -aa -af -af -af -af -af -af -af -ai -at -at -at -at -at -bF -aN -bT -at -cn -cz -cP -dd -dl -cp -at -ai -ai -ai -af -ad -aa -aa -aa -"} -(26,1,1) = {" -aa -aa -aa -aa -af -af -af -af -af -af -af -ai -at -at -at -at -at -bE -aN -bU -at -at -at -at -at -at -at -at -ai -ai -ai -af -aa -aa -aa -aa -"} -(27,1,1) = {" -aa -aa -aa -aa -af -af -af -af -af -af -af -aq -at -aJ -ba -bo -at -bE -aN -bQ -at -co -aN -cQ -de -aN -du -at -ai -ai -ai -af -aa -aa -dF -aa -"} -(28,1,1) = {" -aa -aa -aa -aa -af -af -af -af -af -af -an -aq -at -aK -aN -aN -bz -bE -aN -bV -at -cp -aN -bL -df -aN -dv -at -ai -ai -ai -af -aa -aa -aa -aa -"} -(29,1,1) = {" -aa -aa -aa -aa -af -af -af -af -af -af -al -ar -at -aL -aN -bp -at -bE -aN -bQ -bZ -aN -cA -cR -dg -dm -dw -at -ai -ai -af -af -aa -aa -aa -aa -"} -(30,1,1) = {" -aa -aa -aa -aa -af -af -af -af -af -al -al -aq -at -aM -bb -bq -at -bE -aN -bR -at -cq -cB -cS -df -cS -aN -at -ai -ai -af -af -aa -aa -aa -aa -"} -(31,1,1) = {" -ab -aa -aa -aa -af -af -af -af -af -al -ao -aq -au -at -at -at -at -bE -aN -bR -at -cr -cC -cT -dh -dn -dx -at -ai -ai -af -af -aa -aa -aa -aa -"} -(32,1,1) = {" -aa -aa -aa -aa -af -af -af -af -af -am -al -aq -av -aN -bc -aN -av -bE -bL -bR -at -at -at -at -at -at -at -at -ai -ai -af -af -ab -aa -aa -aa -"} -(33,1,1) = {" -aa -aa -aa -aa -af -af -af -af -af -al -al -aq -av -aN -aN -aN -av -bE -aN -bQ -at -cs -cD -cU -aN -do -dy -at -ai -ai -af -af -aa -aa -aa -aa -"} -(34,1,1) = {" -aa -aa -aa -aa -ag -af -af -af -af -al -al -aq -au -at -at -at -at -bE -aN -bQ -ca -ca -aN -aN -aN -aN -aN -at -ai -ai -af -af -aa -aa -aa -aa -"} -(35,1,1) = {" -aa -aa -aa -aa -af -af -af -af -af -al -al -as -at -aO -bd -br -at -bE -aN -bQ -at -aN -bL -bL -bL -aN -dz -at -ai -af -af -af -aa -aa -aa -aa -"} -(36,1,1) = {" -aa -aa -aa -aa -af -af -af -af -af -af -al -ar -at -aP -be -bs -at -bF -aN -bQ -at -ct -bL -cV -di -dp -aN -at -ai -ai -af -af -aa -aa -aa -aa -"} -(37,1,1) = {" -aa -aa -aa -aa -af -af -af -af -af -af -an -aq -at -aQ -bf -bt -at -bE -aN -bQ -at -cu -cE -cW -cY -cW -aN -at -ai -ai -af -af -aa -aa -aa -aa -"} -(38,1,1) = {" -aa -aa -aa -aa -af -af -af -af -af -af -af -aq -at -aR -aN -bt -at -bE -aN -bU -at -cv -cF -cX -cY -cG -dA -at -ai -ai -af -af -aa -aa -aa -aa -"} -(39,1,1) = {" -aa -aa -aa -aa -af -ah -af -af -af -af -af -ai -at -aS -aN -bu -bz -bE -aN -bQ -at -bL -cG -cY -cW -cG -cI -at -ai -af -af -af -aa -dr -ab -aa -"} -(40,1,1) = {" -aa -aa -aa -aa -af -af -af -af -af -af -af -ai -at -aT -bg -bt -at -bE -aN -bQ -at -aN -cH -cW -cH -cG -dA -at -ai -af -af -af -aa -aa -aa -aa -"} -(41,1,1) = {" -aa -aa -aa -aa -af -af -af -af -af -af -af -ai -at -at -at -bv -at -bH -bK -bQ -at -aN -cI -cZ -al -cG -bL -at -ai -af -af -af -aa -aa -aa -aa -"} -(42,1,1) = {" -aa -aa -aa -aa -af -af -af -af -ag -af -af -ai -at -aU -aU -bw -at -bH -bL -bQ -at -aN -aN -al -cm -al -bL -at -ai -ai -af -af -ap -aa -aa -aa -"} -(43,1,1) = {" -aa -aa -aa -aa -af -af -af -af -af -af -ai -ai -at -aV -bh -bx -at -bI -bL -bW -at -cw -cJ -aN -aN -bL -dB -at -ai -ai -af -af -aa -aa -aa -aa -"} -(44,1,1) = {" -aa -aa -aa -aa -af -af -af -af -af -af -ai -ai -at -at -at -at -at -at -bz -at -at -at -at -at -at -at -at -at -ai -ai -af -af -aa -aa -aa -aa -"} -(45,1,1) = {" -aa -aa -aa -aa -af -af -af -af -af -ai -ai -ai -at -aW -bi -bi -bA -bi -bi -bi -bi -bi -bi -bi -bi -bi -dC -at -ai -ai -af -af -aa -aa -aa -aa -"} -(46,1,1) = {" -aa -aa -aa -aa -af -af -af -af -af -ai -ai -ai -at -aX -bj -by -bB -by -by -bB -by -by -bB -by -dj -dq -dD -at -ai -ai -af -af -aa -aa -aa -aa -"} -(47,1,1) = {" -aa -aa -aa -aa -ae -af -af -af -af -ai -ai -ai -at -at -at -at -at -at -at -at -at -at -at -at -at -at -at -at -ai -ai -af -af -aa -aa -aa -aa -"} -(48,1,1) = {" -aa -aa -aa -aa -af -af -af -af -af -ak -ai -ai -ai -at -at -at -at -at -at -at -at -at -at -at -at -at -at -ai -ai -ai -af -af -aa -aa -aa -dG -"} -(49,1,1) = {" -aa -aa -aa -aa -af -af -af -af -af -af -ai -ai -ai -ai -ai -ai -ai -ai -ai -ai -ai -ai -ai -ai -ai -ai -ai -ai -ai -af -af -af -ab -aa -aa -aa -"} -(50,1,1) = {" -aa -aa -aa -aa -af -af -af -af -af -af -ai -ai -ai -ai -ai -ai -ai -ai -ai -ai -ai -ai -ai -ai -ai -ak -ai -af -af -af -af -af -aa -aa -aa -aa -"} -(51,1,1) = {" -aa -aa -aa -aa -af -af -af -ag -af -af -ai -ai -ai -ai -ai -ai -ai -ai -ai -ai -ai -ai -ai -af -af -af -af -af -af -af -af -af -ap -aa -aa -aa -"} -(52,1,1) = {" -aa -aa -aa -aa -af -af -af -af -af -af -af -af -af -af -af -af -af -af -af -af -af -af -ag -af -af -af -af -af -af -af -af -af -aa -aa -aa -aa -"} -(53,1,1) = {" -aa -aa -aa -ad -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 -aa -aa -aa -aa -aa -aa -aa -"} -(54,1,1) = {" -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aw -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -"} -(55,1,1) = {" -aa -aa -aa -aa -aa -aa -aa -aa -aj -aa -aa -aa -aa -aa -aa -aa -aa -bJ -aa -aa -aa -aa -aa -aa -aa -dr -bC -aa -aa -aa -dr -aa -aa -aa -aa -ab -"} -(56,1,1) = {" -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -bC -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -"} +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaabacaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaadaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadaaaaaa +aaaaaaaaaeafafafagafafafafagafafafafafaeafafafafafafafafafafafafafagafafafafafafafafafafafafaeafafafafafaaaaaaaa +aaaaaaaaafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafahafafafafafafafafafafafafafaaaaaaaa +aaaaaaaaafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaaaaaaaa +aaaaaaaaafafafafafafafafafafafafafafafagafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafagafaaaaaaaa +abaaaaaaafafaiaiaiaiaiafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafagafafafafafafafafafafaaaaajaa +aaaaaaaaafafaiaiaiaiaiaiakafafafaiaiaiaiaiafafafafafafafafalalamalalalafafafafafafafafafaiaiaiakafafafafaaaaaaaa +aaaaaaaaafaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiafafafafafanalalaoalalalalalanafafafafafaiaiaiaiaiaiaiaiaiafaaaaaaaa +aaaaaaapafaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaqaqaraqaqaqaqaqasaraqaqaiaiaiaiaiaiaiaiaiaiaiaiaiafaaaaaaaa +aaaaaaaaafaiaiatatatatatatatatatatatatatatatatatatatatatatatauavavauatatatatatatatatatatatatataiaiaiaiafaaawaaaa +aaaaaaaaafaiatataxayazataAaBaCaDaEaEaBaFaGaHaBaIatataJaKaLaMataNaNataOaPaQaRaSaTataUaVataWaXatataiaiaiafaaaaaaaa +aaaaaaaaaiaiatataYayaZataEaEaEaEaEaEaEaEaEaEaEaEatatbaaNaNbbatbcaNatbdbebfaNaNbgataUbhatbibjatataiaiaiafaaaaaaaa +aaaaaaaaaiaiatataYaybkataEblaEaEbmaEaBbnaBaHaBaFatatboaNbpbqataNaNatbrbsbtbtbubtbvbwbxatbibyatataiaiaiafaaaaaaaa +aaaaaaabaiaiatatayayayatatatbzatatatatatatatatatatatatbzatatatavavatatatatatbzatatatatatbAbBatataiaiaiafaaaaaabC +aaaaaaaaaiaiatatatbzatatbDbEbEbEbEbFbEbEbEbEbGbEbFbEbEbEbEbEbEbEbEbEbEbFbEbEbEbEbHbHbIatbibyatataiaiaiafaaaabJaa +aaaaaaaaaiaiatatbcaNaNaNaNaNaNbKbLbLaNbMbNaNaNaNaNaNaNaNaNaNaNbLaNaNaNaNaNaNaNaNbKbLbLbzbibyatataiaiaiafaaaaaaaa +aaaaaaaaafaiatatatbOatatbPbQbQbRbRbRbQbQbQbSaNalbTbUbQbVbQbRbRbRbQbQbQbQbQbUbQbQbQbQbWatbibBatataiaiaiafaaaaaaaa +aaaaaaaaafaiatatbXaybYatatatatatatatatatatatalalatatatatbZatatatatcaatatatatatatatatatatbibyatataiaiaiafaaaaaaaa +aaaaaaaaafaiatatcbcbayatcccdcecfcgchcicjckclalcmcnatcocpaNcqcratcscaaNctcucvbLaNaNaNcwatbibyatataiaiaiafaaaaaaaa +aaaaaaaaafaiatatcxbOcyataNaNaNaNaNaNaNaNaNcacaalczataNaNcAcBcCatcDaNbLbLcEcFcGcHcIaNcJatbibBatataiaiaiagaaaaaaaa +aaaaaaaaafaiatatcbcbcKataNcMaNaNcMaNaNcNaNcOcaalcPatcQbLcRcScTatcUaNbLcVcWcXcYcWcZalaNatbibyatataiaiafafaaaaaaaa +aaaaaaaaafaiatatcxbOayatcQaNaNdaaNcLaNdcbLdccacaddatdedfdgdfdhataNaNbLdicYcYcWcHalcmaNatbidjatataiaiafafaaaaaaaa +aaaaabaaafaiatatcbcbdkataNcMaNaNalalbLbLbLbLaNaNdlataNaNdmcSdnatdoaNaNdpcWcGcGcGcGalbLatbidqatataiakafafaaaadraa +aaaaaaaaafaiatatcxbOayataNaNaNaNaNaNdsdtaNdtaNaNcpatdudvdwaNdxatdyaNdzaNaNdAcIdAbLbLdBatdCdDatataiaiafafaaaabCaa +aaaaaaaaafaiaiatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatataiaiafafafaaaaaaaa +aaaaaaaaafaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiafafafaaaaaaaa +aaaaaaaaafaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiafaiaiaiafafafaiaiaiaiaiaiaiafafafafaaaaaaaa +aaaaaaaaafafaiaiaiaiaiaiaiaiaiaiaiaiakafafafaiaiaiaiaiaiafafafafafafafafafafafafafafafafafafafafafafafafaaaadraa +aaaaaaaaafagafafafafafafaiaiaiaiaiafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaaaaaaaa +aaaaaaadaaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadaaaaaaaaaaaaabaaaaaaaaaaaaaaaaaaapaaaaaaaaaaaaabaaapaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaadEaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadraaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaadFaaaaaaaaaaaaaaaaaaaaaaaaaaaaabaaaaaaaaaaaaaadFaaaaaaaaaaaaaaaaaaaaaaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadGaaaaaaaaaaaaabaa +"} \ No newline at end of file diff --git a/maps/submaps/surface_submaps/wilderness/butchershack.dmm b/maps/submaps/surface_submaps/wilderness/butchershack.dmm new file mode 100644 index 0000000000..d32c35b6da --- /dev/null +++ b/maps/submaps/surface_submaps/wilderness/butchershack.dmm @@ -0,0 +1,36 @@ +"a" = (/turf/template_noop,/area/template_noop) +"b" = (/turf/simulated/wall/log_sif,/area/submap/ButcherShack) +"c" = (/turf/simulated/floor/wood/sif,/area/submap/ButcherShack) +"d" = (/obj/structure/closet,/obj/effect/decal/cleanable/cobweb,/obj/item/weapon/beartrap,/obj/item/weapon/beartrap,/obj/item/weapon/packageWrap,/obj/item/weapon/material/knife/hook,/turf/simulated/floor/wood/sif,/area/submap/ButcherShack) +"e" = (/obj/structure/closet/secure_closet/freezer/meat,/turf/simulated/floor/wood/sif,/area/submap/ButcherShack) +"f" = (/obj/structure/closet/crate/freezer,/obj/effect/decal/cleanable/blood/gibs,/obj/random/meat,/obj/random/meat,/obj/random/meat,/obj/random/meat,/obj/random/meat,/obj/random/meat,/obj/random/meat,/obj/random/meat,/obj/random/meat,/obj/random/meat,/turf/simulated/floor/wood/sif/broken,/area/submap/ButcherShack) +"g" = (/obj/machinery/gibber/autogibber,/turf/simulated/floor/wood/sif,/area/submap/ButcherShack) +"h" = (/turf/simulated/floor/wood/sif/broken,/area/submap/ButcherShack) +"i" = (/obj/structure/window/basic,/obj/structure/curtain,/turf/simulated/floor/wood/sif/broken,/area/submap/ButcherShack) +"j" = (/turf/template_noop,/area/submap/ButcherShack) +"k" = (/obj/structure/simple_door/sifwood,/turf/simulated/floor/wood/sif,/area/submap/ButcherShack) +"l" = (/obj/structure/loot_pile/maint/trash,/turf/simulated/floor/outdoors/dirt,/area/submap/ButcherShack) +"m" = (/obj/structure/kitchenspike,/obj/effect/decal/cleanable/blood,/turf/simulated/floor/wood/sif,/area/submap/ButcherShack) +"n" = (/obj/structure/kitchenspike,/obj/effect/decal/cleanable/blood/drip,/turf/simulated/floor/wood/sif,/area/submap/ButcherShack) +"o" = (/obj/effect/decal/cleanable/blood,/turf/simulated/floor/wood/sif,/area/submap/ButcherShack) +"p" = (/obj/structure/table/standard,/obj/item/clothing/suit/chef/classic,/turf/simulated/floor/wood/sif,/area/submap/ButcherShack) +"q" = (/obj/structure/table/standard,/obj/effect/decal/cleanable/blood,/obj/item/weapon/material/knife/butch,/turf/simulated/floor/wood/sif/broken,/area/submap/ButcherShack) +"r" = (/obj/structure/table/standard,/obj/item/weapon/reagent_containers/food/snacks/cutlet,/obj/item/weapon/reagent_containers/food/snacks/cutlet,/obj/item/weapon/reagent_containers/food/snacks/cutlet,/obj/item/weapon/reagent_containers/food/snacks/sausage,/turf/simulated/floor/wood/sif,/area/submap/ButcherShack) +"s" = (/obj/structure/coatrack,/turf/simulated/floor/wood/sif,/area/submap/ButcherShack) +"t" = (/obj/structure/bed/padded,/obj/item/weapon/bedsheet/brown,/turf/simulated/floor/wood/sif,/area/submap/ButcherShack) +"u" = (/obj/effect/decal/cleanable/blood/drip,/turf/simulated/floor/wood/sif/broken,/area/submap/ButcherShack) +"v" = (/turf/simulated/floor/outdoors/dirt,/area/submap/ButcherShack) +"w" = (/obj/structure/window/basic,/obj/structure/curtain,/turf/simulated/floor/wood/sif,/area/submap/ButcherShack) + +(1,1,1) = {" +aaaaaaaaaa +abbbbbbbba +abdmnefgba +abhcccocba +abcpqrccba +absocchtba +abbubiwbba +ajbkbllvja +ajvvvvvjja +aaaaaaaaaa +"} diff --git a/maps/submaps/surface_submaps/wilderness/spider1.dmm b/maps/submaps/surface_submaps/wilderness/spider1.dmm index deda5470a7..659cc8beee 100644 --- a/maps/submaps/surface_submaps/wilderness/spider1.dmm +++ b/maps/submaps/surface_submaps/wilderness/spider1.dmm @@ -1,161 +1,22 @@ -//MAP CONVERTED BY dmm2tgm.py THIS HEADER COMMENT PREVENTS RECONVERSION, DO NOT REMOVE -"a" = ( -/turf/template_noop, -/area/template_noop) -"b" = ( -/obj/effect/spider/stickyweb, -/turf/template_noop, -/area/submap/spider1) -"c" = ( -/turf/template_noop, -/area/submap/spider1) -"d" = ( -/obj/structure/flora/tree/pine, -/turf/template_noop, -/area/submap/spider1) -"e" = ( -/obj/effect/spider/eggcluster/small/frost, -/turf/template_noop, -/area/submap/spider1) -"f" = ( -/mob/living/simple_animal/hostile/giant_spider/frost{ - returns_home = 1 - }, -/turf/template_noop, -/area/submap/spider1) -"g" = ( -/obj/structure/flora/tree/sif, -/turf/template_noop, -/area/submap/spider1) -"h" = ( -/obj/effect/spider/cocoon, -/mob/living/simple_animal/hostile/giant_spider/frost{ - returns_home = 1 - }, -/turf/template_noop, -/area/submap/spider1) -"Z" = ( -/mob/living/simple_animal/hostile/giant_spider/nurse, -/turf/template_noop, -/area/submap/spider1) +"a" = (/turf/template_noop,/area/template_noop) +"b" = (/obj/effect/spider/stickyweb,/turf/template_noop,/area/submap/spider1) +"c" = (/turf/template_noop,/area/submap/spider1) +"d" = (/obj/structure/flora/tree/pine,/turf/template_noop,/area/submap/spider1) +"e" = (/obj/effect/spider/eggcluster/small/frost,/turf/template_noop,/area/submap/spider1) +"f" = (/mob/living/simple_mob/animal/giant_spider/frost,/turf/template_noop,/area/submap/spider1) +"g" = (/mob/living/simple_mob/animal/giant_spider/nurse,/turf/template_noop,/area/submap/spider1) +"h" = (/obj/structure/flora/tree/sif,/turf/template_noop,/area/submap/spider1) +"i" = (/obj/effect/spider/cocoon,/mob/living/simple_mob/animal/giant_spider/frost,/turf/template_noop,/area/submap/spider1) (1,1,1) = {" -a -a -a -a -a -a -a -a -a -a -"} -(2,1,1) = {" -a -b -c -d -b -c -c -c -c -a -"} -(3,1,1) = {" -a -b -c -e -c -c -c -c -d -a -"} -(4,1,1) = {" -a -c -b -c -f -c -c -c -b -a -"} -(5,1,1) = {" -a -c -c -c -c -c -c -b -c -a -"} -(6,1,1) = {" -a -b -b -c -Z -c -c -b -b -a -"} -(7,1,1) = {" -a -b -c -c -c -c -h -b -c -a -"} -(8,1,1) = {" -a -b -c -c -c -g -c -d -c -a -"} -(9,1,1) = {" -a -c -b -d -c -c -c -c -c -a -"} -(10,1,1) = {" -a -a -a -a -a -a -a -a -a -a -"} +aaaaaaaaaa +abbccbbbca +accbcbccba +adecccccda +abcfcgccca +acccccchca +acccccicca +acccbbbdca +acdbcbccca +aaaaaaaaaa +"} \ No newline at end of file diff --git a/maps/submaps/surface_submaps/wilderness/wilderness.dm b/maps/submaps/surface_submaps/wilderness/wilderness.dm index 3af67cfe72..c1a212d96b 100644 --- a/maps/submaps/surface_submaps/wilderness/wilderness.dm +++ b/maps/submaps/surface_submaps/wilderness/wilderness.dm @@ -27,6 +27,9 @@ #include "Drugden.dmm" #include "Musk.dmm" #include "Manor1.dmm" +#include "Epod3.dmm" +#include "Epod4.dmm" +#include "ButcherShack.dmm" #include "Cragzone1.dmm" #endif @@ -209,4 +212,22 @@ name = "Manor1" desc = "Whodunit" mappath = 'maps/submaps/surface_submaps/wilderness/Manor1.dmm' - cost = 20 \ No newline at end of file + cost = 20 + +/datum/map_template/surface/wilderness/deep/Epod3 + name = "Emergency Pod 3" + desc = "A webbed Emergency pod in the middle of nowhere." + mappath = 'maps/submaps/surface_submaps/wilderness/Epod3.dmm' + cost = 5 + +/datum/map_template/surface/wilderness/normal/Epod4 + name = "Emergency Pod 4" + desc = "A flooded Emergency pod in the middle of nowhere." + mappath = 'maps/submaps/surface_submaps/wilderness/Epod4.dmm' + cost = 5 + +/datum/map_template/surface/wilderness/normal/ButcherShack + name = "Butcher Shack" + desc = "An old, bloody butcher's shack. Get your meat here!" + mappath = 'maps/submaps/surface_submaps/wilderness/ButcherShack.dmm' + cost = 5 diff --git a/maps/submaps/surface_submaps/wilderness/wilderness_areas.dm b/maps/submaps/surface_submaps/wilderness/wilderness_areas.dm index 5bfa361b59..35ee357200 100644 --- a/maps/submaps/surface_submaps/wilderness/wilderness_areas.dm +++ b/maps/submaps/surface_submaps/wilderness/wilderness_areas.dm @@ -113,3 +113,14 @@ name = "Manor1" ambience = AMBIENCE_FOREBODING +/area/submap/Epod3 + name = "Epod3" + ambience = AMBIENCE_FOREBODING + +/area/submap/Epod4 + name = "Epod4" + ambience = AMBIENCE_FOREBODING + +/area/submap/ButcherShack + name = "ButcherShack" + ambience = AMBIENCE_RUINS diff --git a/maps/tether/backup/tether-03-surface3.dmm b/maps/tether/backup/tether-03-surface3.dmm index 7ba93b95ce..b49acf7b01 100644 --- a/maps/tether/backup/tether-03-surface3.dmm +++ b/maps/tether/backup/tether-03-surface3.dmm @@ -19917,7 +19917,7 @@ /turf/simulated/floor/tiled, /area/rnd/rdoffice) "Ik" = ( -/mob/living/simple_animal/slime/rainbow/kendrick, +/mob/living/simple_mob/slime/rainbow/kendrick, /turf/simulated/floor/tiled, /area/rnd/rdoffice) "Il" = ( diff --git a/maps/tether/backup/tether-05-station1.dmm b/maps/tether/backup/tether-05-station1.dmm index d02bac8025..e1d9b31b05 100644 --- a/maps/tether/backup/tether-05-station1.dmm +++ b/maps/tether/backup/tether-05-station1.dmm @@ -884,7 +884,7 @@ dir = 4 }, /obj/structure/railing, -/mob/living/simple_animal/fish/koi/poisonous, +/mob/living/simple_mob/fish/koi/poisonous, /turf/simulated/floor/water/pool, /area/hallway/station/atrium) "acg" = ( @@ -1446,7 +1446,7 @@ /obj/structure/railing{ dir = 1 }, -/mob/living/simple_animal/fish/koi/poisonous, +/mob/living/simple_mob/fish/koi/poisonous, /turf/simulated/floor/water/pool, /area/hallway/station/atrium) "adA" = ( @@ -8666,7 +8666,7 @@ /turf/simulated/floor/tiled, /area/bridge_hallway) "azy" = ( -/mob/living/simple_animal/corgi/Ian, +/mob/living/simple_mob/corgi/Ian, /turf/simulated/floor/carpet, /area/crew_quarters/heads/hop) "azz" = ( @@ -10732,7 +10732,7 @@ /obj/machinery/atmospherics/pipe/simple/hidden/supply{ dir = 4 }, -/mob/living/simple_animal/fox/fluff/Renault, +/mob/living/simple_mob/fox/fluff/Renault, /turf/simulated/floor/wood, /area/crew_quarters/captain) "aEu" = ( @@ -15893,7 +15893,7 @@ /area/hallway/station/atrium) "bfT" = ( /obj/structure/disposalpipe/segment, -/mob/living/simple_animal/snake/Noodle, +/mob/living/simple_mob/snake/Noodle, /turf/simulated/floor/carpet/oracarpet, /area/crew_quarters/heads/chief) "bfW" = ( diff --git a/maps/tether/backup/tether-07-station3.dmm b/maps/tether/backup/tether-07-station3.dmm index 5f08f32833..df0ea6a378 100644 --- a/maps/tether/backup/tether-07-station3.dmm +++ b/maps/tether/backup/tether-07-station3.dmm @@ -2803,7 +2803,7 @@ /obj/item/weapon/coin/gold, /obj/item/weapon/coin/silver, /obj/item/weapon/bone/skull, -/mob/living/simple_animal/hostile/mimic/crate, +/mob/living/simple_mob/hostile/mimic/crate, /turf/simulated/mineral/floor/cave, /area/maintenance/station/ai) "eN" = ( @@ -17924,7 +17924,7 @@ dir = 9; pixel_y = 0 }, -/mob/living/simple_animal/fluffy, +/mob/living/simple_mob/fluffy, /turf/simulated/floor/tiled, /area/quartermaster/qm) "CG" = ( @@ -24678,7 +24678,7 @@ /obj/machinery/atmospherics/pipe/simple/hidden/supply{ dir = 4 }, -/mob/living/simple_animal/cat/fluff/Runtime, +/mob/living/simple_mob/cat/fluff/Runtime, /turf/simulated/floor/tiled/white, /area/crew_quarters/heads/cmo) "NB" = ( diff --git a/maps/tether/submaps/_tether_submaps.dm b/maps/tether/submaps/_tether_submaps.dm index 10f0563613..0e70ce1172 100644 --- a/maps/tether/submaps/_tether_submaps.dm +++ b/maps/tether/submaps/_tether_submaps.dm @@ -42,9 +42,26 @@ /datum/map_template/tether_lateload/tether_underdark/on_map_loaded(z) . = ..() seed_submaps(list(Z_LEVEL_UNDERDARK), 100, /area/mine/unexplored/underdark, /datum/map_template/underdark) - new /datum/random_map/automata/cave_system/no_cracks(null, 1, 1, Z_LEVEL_UNDERDARK, world.maxx, world.maxy) // Create the mining Z-level. + new /datum/random_map/automata/cave_system/no_cracks(null, 3, 3, Z_LEVEL_UNDERDARK, world.maxx - 4, world.maxy - 4) // Create the mining Z-level. new /datum/random_map/noise/ore(null, 1, 1, Z_LEVEL_UNDERDARK, 64, 64) // Create the mining ore distribution map. + +/datum/map_template/tether_lateload/tether_plains + name = "Tether - Plains" + desc = "The Virgo 3B away mission." + mappath = 'tether_plains.dmm' + associated_map_datum = /datum/map_z_level/tether_lateload/tether_plains + +/datum/map_z_level/tether_lateload/tether_plains + name = "Away Mission - Plains" + flags = MAP_LEVEL_CONTACT|MAP_LEVEL_PLAYER + base_turf = /turf/simulated/mineral/floor/virgo3b + z = Z_LEVEL_PLAINS + +/datum/map_template/tether_lateload/tether_plains/on_map_loaded(z) + . = ..() + seed_submaps(list(Z_LEVEL_PLAINS), 120, /area/tether/outpost/exploration_plains, /datum/map_template/surface/plains) + ////////////////////////////////////////////////////////////////////////////// /// Away Missions #if AWAY_MISSION_TEST @@ -53,6 +70,7 @@ #include "alienship/alienship.dmm" #include "aerostat/aerostat.dmm" #include "aerostat/surface.dmm" +#include "space/debrisfield.dmm" #endif #include "beach/_beach.dm" @@ -74,11 +92,11 @@ /datum/map_template/tether_lateload/away_beach_cave/on_map_loaded(z) . = ..() - seed_submaps(list(Z_LEVEL_BEACH_CAVE), 50, /area/tether_away/cave/unexplored/normal, /datum/map_template/surface/mountains/normal) - seed_submaps(list(Z_LEVEL_BEACH_CAVE), 50, /area/tether_away/cave/unexplored/deep, /datum/map_template/surface/mountains/deep) + seed_submaps(list(Z_LEVEL_BEACH_CAVE), 60, /area/tether_away/cave/unexplored/normal, /datum/map_template/surface/mountains/normal) + seed_submaps(list(Z_LEVEL_BEACH_CAVE), 60, /area/tether_away/cave/unexplored/normal, /datum/map_template/surface/mountains/deep) // Now for the tunnels. - new /datum/random_map/automata/cave_system/no_cracks(null, 1, 1, Z_LEVEL_BEACH_CAVE, world.maxx, world.maxy) + new /datum/random_map/automata/cave_system/no_cracks(null, 3, 3, Z_LEVEL_BEACH_CAVE, world.maxx - 4, world.maxy - 4) new /datum/random_map/noise/ore/beachmine(null, 1, 1, Z_LEVEL_BEACH_CAVE, 64, 64) /datum/map_z_level/tether_lateload/away_beach_cave @@ -120,8 +138,8 @@ /datum/map_template/tether_lateload/away_aerostat_surface/on_map_loaded(z) . = ..() - seed_submaps(list(Z_LEVEL_AEROSTAT_SURFACE), 50, /area/tether_away/aerostat/surface/unexplored, /datum/map_template/virgo2) - new /datum/random_map/automata/cave_system/no_cracks(null, 1, 1, Z_LEVEL_AEROSTAT_SURFACE, world.maxx, world.maxy) + seed_submaps(list(Z_LEVEL_AEROSTAT_SURFACE), 70, /area/tether_away/aerostat/surface/unexplored, /datum/map_template/virgo2) + new /datum/random_map/automata/cave_system/no_cracks(null, 3, 3, Z_LEVEL_AEROSTAT_SURFACE, world.maxx - 4, world.maxy - 4) new /datum/random_map/noise/ore/virgo2(null, 1, 1, Z_LEVEL_AEROSTAT_SURFACE, 64, 64) /datum/map_z_level/tether_lateload/away_aerostat_surface @@ -129,6 +147,23 @@ z = Z_LEVEL_AEROSTAT_SURFACE +#include "space/_debrisfield.dm" +/datum/map_template/tether_lateload/away_debrisfield + name = "Debris Field - Z1 Space" + desc = "The Virgo 3 Debris Field away mission." + mappath = 'space/debrisfield.dmm' + associated_map_datum = /datum/map_z_level/tether_lateload/away_debrisfield + +/datum/map_template/tether_lateload/away_debrisfield/on_map_loaded(z) + . = ..() + //Commented out until we actually get POIs + //seed_submaps(list(Z_LEVEL_DEBRISFIELD), 50, /area/tether_away/debrisfield/space/poi, /datum/map_template/debrisfield) + +/datum/map_z_level/tether_lateload/away_debrisfield + name = "Away Mission - Debris Field" + z = Z_LEVEL_DEBRISFIELD + + ////////////////////////////////////////////////////////////////////////////////////// // Admin-use z-levels for loading whenever an admin feels like #if AWAY_MISSION_TEST @@ -177,7 +212,7 @@ /obj/effect/step_trigger/zlevel_fall //Don't ever use this, only use subtypes.Define a new var/static/target_z on each affect_ghosts = 1 -/obj/effect/step_trigger/zlevel_fall/initialize() +/obj/effect/step_trigger/zlevel_fall/Initialize() . = ..() if(istype(get_turf(src), /turf/simulated/floor)) @@ -237,17 +272,17 @@ var/guard //# will set the mobs to remain nearby their spawn point within this dist //Internal use only - var/mob/living/simple_animal/my_mob + var/mob/living/simple_mob/my_mob var/depleted = FALSE -/obj/tether_away_spawner/initialize() +/obj/tether_away_spawner/Initialize() . = ..() if(!LAZYLEN(mobs_to_pick_from)) error("Mob spawner at [x],[y],[z] ([get_area(src)]) had no mobs_to_pick_from set on it!") initialized = TRUE return INITIALIZE_HINT_QDEL - processing_objects |= src + START_PROCESSING(SSobj, src) /obj/tether_away_spawner/process() if(my_mob && my_mob.stat != DEAD) @@ -281,14 +316,14 @@ my_mob.max_tox = gaslist["phoron"] * 1.2 my_mob.max_n2 = gaslist["nitrogen"] * 1.2 my_mob.max_co2 = gaslist["carbon_dioxide"] * 1.2 - +/* //VORESTATION AI TEMPORARY REMOVAL if(guard) my_mob.returns_home = TRUE my_mob.wander_distance = guard - +*/ return else - processing_objects -= src + STOP_PROCESSING(SSobj, src) depleted = TRUE return @@ -304,5 +339,5 @@ prob_fall = 1 guard = 10 //Don't wander too far, to stay alive. mobs_to_pick_from = list( - /mob/living/simple_animal/shadekin + // /mob/living/simple_mob/shadekin //VORESTATION AI TEMPORARY REMOVAL ) diff --git a/maps/tether/submaps/admin_use/spa.dmm b/maps/tether/submaps/admin_use/spa.dmm index b8784719b3..3413e29d29 100644 --- a/maps/tether/submaps/admin_use/spa.dmm +++ b/maps/tether/submaps/admin_use/spa.dmm @@ -55,7 +55,7 @@ /turf/simulated/floor/water, /area/submap/spa) "ak" = ( -/mob/living/simple_animal/fox, +/mob/living/simple_mob/animal/passive/fox, /turf/simulated/floor/grass, /area/submap/spa) "al" = ( @@ -623,7 +623,7 @@ }, /area/space) "bW" = ( -/mob/living/simple_animal/redpanda, +/mob/living/simple_mob/vore/redpanda, /turf/simulated/floor/grass, /area/submap/spa) "bX" = ( diff --git a/maps/tether/submaps/aerostat/_aerostat.dm b/maps/tether/submaps/aerostat/_aerostat.dm index fb58fa7f33..7f6425b642 100644 --- a/maps/tether/submaps/aerostat/_aerostat.dm +++ b/maps/tether/submaps/aerostat/_aerostat.dm @@ -48,7 +48,7 @@ shuttle_name = "Excursion Shuttle" destinations = list(/datum/shuttle_destination/excursion/virgo2orbit, /datum/shuttle_destination/excursion/aerostat) -/obj/away_mission_init/aerostat/initialize() +/obj/away_mission_init/aerostat/Initialize() /*seed_submaps(list(Z_LEVEL_AEROSTAT_SURFACE), 50, /area/tether_away/aerostat/surface/unexplored, /datum/map_template/virgo2) new /datum/random_map/automata/cave_system/no_cracks(null, 1, 1, Z_LEVEL_AEROSTAT_SURFACE, world.maxx, world.maxy) new /datum/random_map/noise/ore/virgo2(null, 1, 1, Z_LEVEL_AEROSTAT_SURFACE, 64, 64)*/ @@ -64,10 +64,10 @@ prob_fall = 50 guard = 20 mobs_to_pick_from = list( - /mob/living/simple_animal/hostile/hivebot/range = 3, - /mob/living/simple_animal/hostile/hivebot/range/ion = 3, - /mob/living/simple_animal/hostile/hivebot/range/laser = 3, - /mob/living/simple_animal/hostile/corrupthound = 1 + /mob/living/simple_mob/mechanical/hivebot/ranged_damage/basic = 3, + /mob/living/simple_mob/mechanical/hivebot/ranged_damage/ion = 3, + /mob/living/simple_mob/mechanical/hivebot/ranged_damage/laser = 3, + /mob/living/simple_mob/vore/aggressive/corrupthound = 1 ) /obj/tether_away_spawner/aerostat_surface @@ -78,9 +78,9 @@ prob_fall = 50 guard = 20 mobs_to_pick_from = list( - /mob/living/simple_animal/hostile/jelly = 3, - /mob/living/simple_animal/hostile/viscerator = 2, - /mob/living/simple_animal/hostile/corrupthound = 1 + /mob/living/simple_mob/vore/aggressive/corrupthound = 3, + /mob/living/simple_mob/mechanical/viscerator = 2, + /mob/living/simple_mob/vore/aggressive/corrupthound = 1 ) /obj/structure/old_roboprinter @@ -129,7 +129,7 @@ color = "#eacd7c" VIRGO2_SET_ATMOS -/turf/unsimulated/floor/sky/virgo2_sky/initialize() +/turf/unsimulated/floor/sky/virgo2_sky/Initialize() skyfall_levels = list(z+1) . = ..() diff --git a/maps/tether/submaps/aerostat/submaps/Blackshuttledown.dmm b/maps/tether/submaps/aerostat/submaps/Blackshuttledown.dmm index 27cdc7804f..66a5ae2d54 100644 --- a/maps/tether/submaps/aerostat/submaps/Blackshuttledown.dmm +++ b/maps/tether/submaps/aerostat/submaps/Blackshuttledown.dmm @@ -148,9 +148,9 @@ }, /area/submap/virgo2/Blackshuttledown) "aB" = ( -/mob/living/simple_animal/hostile/viscerator, -/mob/living/simple_animal/hostile/viscerator, -/mob/living/simple_animal/hostile/viscerator, +/mob/living/simple_mob/hostile/viscerator, +/mob/living/simple_mob/hostile/viscerator, +/mob/living/simple_mob/hostile/viscerator, /turf/simulated/floor/tiled/steel, /area/submap/virgo2/Blackshuttledown) "aC" = ( @@ -163,7 +163,7 @@ /turf/simulated/floor/tiled/steel, /area/submap/virgo2/Blackshuttledown) "aD" = ( -/mob/living/simple_animal/hostile/syndicate/ranged/space, +/mob/living/simple_mob/hostile/syndicate/ranged/space, /turf/simulated/floor/tiled/steel, /area/submap/virgo2/Blackshuttledown) "aE" = ( @@ -242,7 +242,7 @@ /turf/simulated/floor/tiled/steel, /area/submap/virgo2/Blackshuttledown) "aT" = ( -/mob/living/simple_animal/hostile/syndicate/ranged{ +/mob/living/simple_mob/hostile/syndicate/ranged{ desc = "Dosen't look friendly in the slightest."; name = "Unknown Individual"; say_got_target = list("Looks like trouble!","Contact!","We've got company!","Perimeter Breached!!"); @@ -374,7 +374,7 @@ /turf/simulated/floor/tiled/steel, /area/submap/virgo2/Blackshuttledown) "bn" = ( -/mob/living/simple_animal/hostile/viscerator, +/mob/living/simple_mob/hostile/viscerator, /turf/simulated/floor/tiled/steel, /area/submap/virgo2/Blackshuttledown) "bo" = ( @@ -393,8 +393,8 @@ /turf/simulated/floor/tiled/steel, /area/submap/virgo2/Blackshuttledown) "bq" = ( -/mob/living/simple_animal/hostile/viscerator, -/mob/living/simple_animal/hostile/viscerator, +/mob/living/simple_mob/hostile/viscerator, +/mob/living/simple_mob/hostile/viscerator, /turf/simulated/floor/tiled/steel, /area/submap/virgo2/Blackshuttledown) "br" = ( @@ -439,7 +439,7 @@ /turf/simulated/mineral/floor/ignore_mapgen/virgo2, /area/submap/virgo2/Blackshuttledown) "bz" = ( -/mob/living/simple_animal/hostile/syndicate/ranged/space, +/mob/living/simple_mob/hostile/syndicate/ranged/space, /turf/simulated/mineral/floor/ignore_mapgen/virgo2, /area/submap/virgo2/Blackshuttledown) diff --git a/maps/tether/submaps/aerostat/submaps/Boombase.dmm b/maps/tether/submaps/aerostat/submaps/Boombase.dmm index 867ffdc6c2..dd8247263f 100644 --- a/maps/tether/submaps/aerostat/submaps/Boombase.dmm +++ b/maps/tether/submaps/aerostat/submaps/Boombase.dmm @@ -57,7 +57,7 @@ /turf/simulated/floor/tiled/techfloor/virgo2, /area/submap/virgo2/BoomBase) "ao" = ( -/mob/living/simple_animal/hostile/jelly, +/mob/living/simple_mob/hostile/jelly, /turf/simulated/floor/tiled/techfloor/virgo2, /area/submap/virgo2/BoomBase) "ap" = ( @@ -96,7 +96,7 @@ /area/submap/virgo2/BoomBase) "ax" = ( /obj/effect/decal/cleanable/dirt, -/mob/living/simple_animal/hostile/jelly, +/mob/living/simple_mob/hostile/jelly, /turf/simulated/floor/tiled/techfloor/virgo2, /area/submap/virgo2/BoomBase) "ay" = ( diff --git a/maps/tether/submaps/aerostat/submaps/CaveS.dmm b/maps/tether/submaps/aerostat/submaps/CaveS.dmm index 426c86125c..005a584089 100644 --- a/maps/tether/submaps/aerostat/submaps/CaveS.dmm +++ b/maps/tether/submaps/aerostat/submaps/CaveS.dmm @@ -48,7 +48,7 @@ /turf/simulated/mineral/floor/ignore_mapgen/virgo2, /area/submap/virgo2/CaveS) "m" = ( -/mob/living/simple_animal/hostile/giant_spider/lurker, +/mob/living/simple_mob/hostile/giant_spider/lurker, /turf/simulated/mineral/floor/ignore_mapgen/virgo2, /area/submap/virgo2/CaveS) "n" = ( @@ -61,7 +61,7 @@ /area/submap/virgo2/CaveS) "q" = ( /obj/effect/decal/cleanable/cobweb2, -/mob/living/simple_animal/hostile/giant_spider/lurker, +/mob/living/simple_mob/hostile/giant_spider/lurker, /turf/simulated/mineral/floor/ignore_mapgen/virgo2, /area/submap/virgo2/CaveS) "r" = ( @@ -133,7 +133,7 @@ /area/submap/virgo2/CaveS) "D" = ( /obj/effect/spider/stickyweb, -/mob/living/simple_animal/hostile/giant_spider/lurker, +/mob/living/simple_mob/hostile/giant_spider/lurker, /turf/simulated/mineral/floor/ignore_mapgen/virgo2, /area/submap/virgo2/CaveS) "E" = ( diff --git a/maps/tether/submaps/aerostat/submaps/Rockybase.dmm b/maps/tether/submaps/aerostat/submaps/Rockybase.dmm index e7977a3af5..95faba534a 100644 --- a/maps/tether/submaps/aerostat/submaps/Rockybase.dmm +++ b/maps/tether/submaps/aerostat/submaps/Rockybase.dmm @@ -1,6 +1,6 @@ //MAP CONVERTED BY dmm2tgm.py THIS HEADER COMMENT PREVENTS RECONVERSION, DO NOT REMOVE "aa" = ( -/mob/living/simple_animal/hostile/viscerator{ +/mob/living/simple_mob/hostile/viscerator{ maxbodytemp = 900; returns_home = 1 }, @@ -21,7 +21,7 @@ /turf/simulated/floor/tiled/techfloor/virgo2, /area/submap/virgo2/Rockybase) "af" = ( -/mob/living/simple_animal/hostile/malf_drone{ +/mob/living/simple_mob/hostile/malf_drone{ desc = "An automated combat drone with an aged apperance."; faction = "syndicate"; maxbodytemp = 900; @@ -357,7 +357,7 @@ /turf/simulated/floor/tiled, /area/submap/virgo2/Rockybase) "bl" = ( -/mob/living/simple_animal/hostile/malf_drone{ +/mob/living/simple_mob/hostile/malf_drone{ desc = "An automated combat drone with an aged apperance."; faction = "syndicate"; maxbodytemp = 900; @@ -664,7 +664,7 @@ /turf/simulated/floor/tiled/techfloor/virgo2, /area/submap/virgo2/Rockybase) "co" = ( -/mob/living/simple_animal/hostile/mecha/malf_drone{ +/mob/living/simple_mob/hostile/mecha/malf_drone{ faction = "syndicate" }, /turf/simulated/floor/tiled/techfloor/virgo2, diff --git a/maps/tether/submaps/alienship/_alienship.dm b/maps/tether/submaps/alienship/_alienship.dm index be9f764155..7336a0db19 100644 --- a/maps/tether/submaps/alienship/_alienship.dm +++ b/maps/tether/submaps/alienship/_alienship.dm @@ -34,7 +34,7 @@ var/door_on_mode var/teleport_on_mode -/obj/away_mission_init/alienship/initialize() +/obj/away_mission_init/alienship/Initialize() . = ..() if(!mission_mode) //WE ARE NUMBER ONE @@ -120,7 +120,7 @@ var/area/dump_area var/obj/shuttle_connector/shuttle_friend -/area/shuttle/excursion/away_alienship/initialize() +/area/shuttle/excursion/away_alienship/Initialize() . = ..() dump_area = locate(/area/tether_away/alienship/equip_dump) diff --git a/maps/tether/submaps/beach/_beach.dm b/maps/tether/submaps/beach/_beach.dm index f60ffe9922..cba563531c 100644 --- a/maps/tether/submaps/beach/_beach.dm +++ b/maps/tether/submaps/beach/_beach.dm @@ -72,7 +72,7 @@ name = "away mission initializer - beachcave" //In our case, it initializes the ores and random submaps in the beach's cave, then deletes itself -/obj/away_mission_init/beachcave/initialize() +/obj/away_mission_init/beachcave/Initialize() // Cave submaps are first. /*seed_submaps(list(z), 50, /area/tether_away/cave/unexplored/normal, /datum/map_template/surface/mountains/normal) seed_submaps(list(z), 50, /area/tether_away/cave/unexplored/deep, /datum/map_template/surface/mountains/deep) @@ -95,7 +95,7 @@ prob_fall = 25 //Chance goes down by this much each time it spawns one (not defining and prob_spawn 100 means they spawn as soon as one dies) guard = 40 //They'll stay within this range (not defining this disables them staying nearby and they will wander the map (and through step teleports)) mobs_to_pick_from = list( - /mob/living/simple_animal/snake + /mob/living/simple_mob/animal/passive/snake ) /obj/tether_away_spawner/beach_outside_friendly @@ -106,7 +106,7 @@ prob_fall = 25 guard = 40 mobs_to_pick_from = list( - /mob/living/simple_animal/fennec + /mob/living/simple_mob/vore/fennec ) /obj/tether_away_spawner/beach_cave @@ -117,11 +117,11 @@ prob_fall = 40 guard = 20 mobs_to_pick_from = list( - /mob/living/simple_animal/hostile/frog = 3, //Frogs are 3x more likely to spawn than, - /mob/living/simple_animal/hostile/deathclaw = 1, //these deathclaws are, with these values, - /mob/living/simple_animal/hostile/giant_spider = 3, - /mob/living/simple_animal/hostile/giant_snake = 1, - /mob/living/simple_animal/hostile/giant_spider/ion = 2 + /mob/living/simple_mob/vore/aggressive/frog = 3, //Frogs are 3x more likely to spawn than, + /mob/living/simple_mob/vore/aggressive/deathclaw = 1, //these deathclaws are, with these values, + /mob/living/simple_mob/animal/giant_spider = 3, + /mob/living/simple_mob/vore/aggressive/giant_snake = 1, + /mob/living/simple_mob/animal/giant_spider/ion = 2 ) // These are step-teleporters, for map edge transitions @@ -164,6 +164,7 @@ //Not going to do sunlight simulations here like virgo3b //So we just make the whole beach fullbright all the time dynamic_lighting = 0 + requires_power = 0 /area/tether_away/beach/powershed name = "\improper Away Mission - Virgo 4 Coast PS" diff --git a/maps/tether/submaps/space/_debrisfield.dm b/maps/tether/submaps/space/_debrisfield.dm new file mode 100644 index 0000000000..2b7db1efc4 --- /dev/null +++ b/maps/tether/submaps/space/_debrisfield.dm @@ -0,0 +1,34 @@ +// -- Datums -- // + +/datum/shuttle_destination/excursion/debrisfield + name = "Debris Field" + my_area = /area/shuttle/excursion/debrisfield + preferred_interim_area = /area/shuttle/excursion/space_moving + skip_me = TRUE + + routes_to_make = list( + /datum/shuttle_destination/excursion/virgo3b_orbit = 30 SECONDS + ) + +// -- Objs -- // + +/obj/shuttle_connector/debrisfield + name = "shuttle connector - debrisfield" + shuttle_name = "Excursion Shuttle" + destinations = list(/datum/shuttle_destination/excursion/debrisfield) + +//This does nothing right now, but is framework if we do POIs for this place +/obj/away_mission_init/debrisfield + name = "away mission initializer - debrisfield" + +/obj/away_mission_init/debrisfield/Initialize() + initialized = TRUE + return INITIALIZE_HINT_QDEL + +//And some special areas, including our shuttle landing spot (must be unique) +/area/shuttle/excursion/debrisfield + name = "\improper Excursion Shuttle - Debris Field" + +/area/tether_away/debrisfield/space/poi + name = "Away Mission - Debris Field" + icon_state = "space" diff --git a/maps/tether/submaps/space/debrisfield.dmm b/maps/tether/submaps/space/debrisfield.dmm new file mode 100644 index 0000000000..baffaccc9d --- /dev/null +++ b/maps/tether/submaps/space/debrisfield.dmm @@ -0,0 +1,19892 @@ +//MAP CONVERTED BY dmm2tgm.py THIS HEADER COMMENT PREVENTS RECONVERSION, DO NOT REMOVE +"a" = ( +/turf/space, +/area/tether_away/debrisfield/space/poi) +"b" = ( +/obj/shuttle_connector/debrisfield, +/turf/space, +/area/tether_away/debrisfield/space/poi) +"f" = ( +/turf/space, +/area/shuttle/excursion/debrisfield) + +(1,1,1) = {" +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +"} +(2,1,1) = {" +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +"} +(3,1,1) = {" +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +"} +(4,1,1) = {" +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +"} +(5,1,1) = {" +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +"} +(6,1,1) = {" +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +"} +(7,1,1) = {" +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +"} +(8,1,1) = {" +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +"} +(9,1,1) = {" +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +"} +(10,1,1) = {" +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +"} +(11,1,1) = {" +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +"} +(12,1,1) = {" +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +"} +(13,1,1) = {" +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +"} +(14,1,1) = {" +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +"} +(15,1,1) = {" +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +"} +(16,1,1) = {" +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +"} +(17,1,1) = {" +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +"} +(18,1,1) = {" +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +"} +(19,1,1) = {" +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +"} +(20,1,1) = {" +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +"} +(21,1,1) = {" +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +"} +(22,1,1) = {" +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +"} +(23,1,1) = {" +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +"} +(24,1,1) = {" +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +"} +(25,1,1) = {" +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +"} +(26,1,1) = {" +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +"} +(27,1,1) = {" +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +"} +(28,1,1) = {" +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +"} +(29,1,1) = {" +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +"} +(30,1,1) = {" +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +"} +(31,1,1) = {" +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +"} +(32,1,1) = {" +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +"} +(33,1,1) = {" +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +"} +(34,1,1) = {" +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +"} +(35,1,1) = {" +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +"} +(36,1,1) = {" +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +"} +(37,1,1) = {" +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +"} +(38,1,1) = {" +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +"} +(39,1,1) = {" +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +"} +(40,1,1) = {" +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +"} +(41,1,1) = {" +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +"} +(42,1,1) = {" +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +"} +(43,1,1) = {" +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +"} +(44,1,1) = {" +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +"} +(45,1,1) = {" +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +"} +(46,1,1) = {" +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +"} +(47,1,1) = {" +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +"} +(48,1,1) = {" +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +"} +(49,1,1) = {" +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +"} +(50,1,1) = {" +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +"} +(51,1,1) = {" +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +"} +(52,1,1) = {" +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +"} +(53,1,1) = {" +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +"} +(54,1,1) = {" +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +"} +(55,1,1) = {" +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +"} +(56,1,1) = {" +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +"} +(57,1,1) = {" +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +"} +(58,1,1) = {" +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +"} +(59,1,1) = {" +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +"} +(60,1,1) = {" +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +"} +(61,1,1) = {" +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +"} +(62,1,1) = {" +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +"} +(63,1,1) = {" +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +f +f +f +f +f +f +f +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +"} +(64,1,1) = {" +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +f +f +f +f +f +f +f +f +f +f +f +f +f +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +"} +(65,1,1) = {" +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +f +f +f +f +f +f +f +f +f +f +f +f +f +f +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +"} +(66,1,1) = {" +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +f +f +f +f +f +f +f +f +f +f +f +f +f +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +"} +(67,1,1) = {" +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +f +f +f +f +f +f +f +f +f +f +f +f +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +"} +(68,1,1) = {" +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +f +f +f +f +f +f +f +f +f +f +f +f +a +a +a +b +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +"} +(69,1,1) = {" +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +f +f +f +f +f +f +f +f +f +f +f +f +f +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +"} +(70,1,1) = {" +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +f +f +f +f +f +f +f +f +f +f +f +f +f +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +"} +(71,1,1) = {" +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +f +f +f +f +f +f +f +f +f +f +f +f +f +f +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +"} +(72,1,1) = {" +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +f +f +f +f +f +f +f +f +f +f +f +f +f +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +"} +(73,1,1) = {" +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +f +f +f +f +f +f +f +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +"} +(74,1,1) = {" +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +"} +(75,1,1) = {" +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +"} +(76,1,1) = {" +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +"} +(77,1,1) = {" +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +"} +(78,1,1) = {" +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +"} +(79,1,1) = {" +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +"} +(80,1,1) = {" +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +"} +(81,1,1) = {" +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +"} +(82,1,1) = {" +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +"} +(83,1,1) = {" +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +"} +(84,1,1) = {" +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +"} +(85,1,1) = {" +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +"} +(86,1,1) = {" +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +"} +(87,1,1) = {" +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +"} +(88,1,1) = {" +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +"} +(89,1,1) = {" +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +"} +(90,1,1) = {" +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +"} +(91,1,1) = {" +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +"} +(92,1,1) = {" +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +"} +(93,1,1) = {" +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +"} +(94,1,1) = {" +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +"} +(95,1,1) = {" +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +"} +(96,1,1) = {" +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +"} +(97,1,1) = {" +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +"} +(98,1,1) = {" +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +"} +(99,1,1) = {" +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +"} +(100,1,1) = {" +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +"} +(101,1,1) = {" +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +"} +(102,1,1) = {" +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +"} +(103,1,1) = {" +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +"} +(104,1,1) = {" +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +"} +(105,1,1) = {" +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +"} +(106,1,1) = {" +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +"} +(107,1,1) = {" +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +"} +(108,1,1) = {" +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +"} +(109,1,1) = {" +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +"} +(110,1,1) = {" +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +"} +(111,1,1) = {" +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +"} +(112,1,1) = {" +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +"} +(113,1,1) = {" +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +"} +(114,1,1) = {" +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +"} +(115,1,1) = {" +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +"} +(116,1,1) = {" +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +"} +(117,1,1) = {" +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +"} +(118,1,1) = {" +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +"} +(119,1,1) = {" +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +"} +(120,1,1) = {" +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +"} +(121,1,1) = {" +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +"} +(122,1,1) = {" +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +"} +(123,1,1) = {" +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +"} +(124,1,1) = {" +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +"} +(125,1,1) = {" +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +"} +(126,1,1) = {" +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +"} +(127,1,1) = {" +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +"} +(128,1,1) = {" +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +"} +(129,1,1) = {" +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +"} +(130,1,1) = {" +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +"} +(131,1,1) = {" +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +"} +(132,1,1) = {" +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +"} +(133,1,1) = {" +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +"} +(134,1,1) = {" +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +"} +(135,1,1) = {" +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +"} +(136,1,1) = {" +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +"} +(137,1,1) = {" +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +"} +(138,1,1) = {" +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +"} +(139,1,1) = {" +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +"} +(140,1,1) = {" +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +"} diff --git a/maps/tether/submaps/tether_misc.dmm b/maps/tether/submaps/tether_misc.dmm index 4f8dcd6be0..371bb9d7ba 100644 --- a/maps/tether/submaps/tether_misc.dmm +++ b/maps/tether/submaps/tether_misc.dmm @@ -4271,7 +4271,7 @@ name = "Beruang"; pixel_x = 32 }, -/mob/living/simple_animal/corgi/tamaskan/spice, +/mob/living/simple_mob/corgi/tamaskan/spice, /turf/simulated/shuttle/floor/darkred, /area/shuttle/trade/centcom) "kz" = ( @@ -5640,7 +5640,7 @@ }, /area/wizard_station) "nm" = ( -/mob/living/simple_animal/mouse/gray{ +/mob/living/simple_mob/mouse/gray{ desc = "He looks kingly."; name = "Arthur" }, @@ -8869,7 +8869,7 @@ }, /area/antag/antag_base) "sM" = ( -/mob/living/simple_animal/fox/syndicate{ +/mob/living/simple_mob/fox/syndicate{ name = "Rick" }, /turf/unsimulated/floor{ diff --git a/maps/tether/submaps/tether_plains.dmm b/maps/tether/submaps/tether_plains.dmm new file mode 100644 index 0000000000..c17689a750 --- /dev/null +++ b/maps/tether/submaps/tether_plains.dmm @@ -0,0 +1,19961 @@ +//MAP CONVERTED BY dmm2tgm.py THIS HEADER COMMENT PREVENTS RECONVERSION, DO NOT REMOVE +"aa" = ( +/turf/unsimulated/wall/planetary/virgo3b, +/area/space) +"ab" = ( +/turf/simulated/floor/outdoors/grass/sif/virgo3b, +/area/tether/outpost/exploration_plains) +"ac" = ( +/turf/unsimulated/mineral/virgo3b, +/area/mine/explored) +"ad" = ( +/turf/simulated/floor/outdoors/dirt/virgo3b, +/area/tether/outpost/exploration_plains) +"ae" = ( +/turf/simulated/mineral/virgo3b/rich, +/area/mine/explored) +"af" = ( +/obj/effect/floor_decal/rust, +/obj/effect/step_trigger/teleporter/from_plains, +/turf/simulated/floor/tiled/steel_dirty/virgo3b, +/area/tether/outpost/exploration_shed) +"ag" = ( +/turf/simulated/wall/r_wall, +/area/tether/outpost/exploration_shed) +"ah" = ( +/obj/structure/sign/hostilefauna, +/turf/simulated/wall/r_wall, +/area/tether/outpost/exploration_shed) +"ai" = ( +/obj/machinery/door/airlock/multi_tile/metal/mait{ + dir = 4 + }, +/turf/simulated/floor/tiled/steel_dirty/virgo3b, +/area/tether/outpost/exploration_shed) +"aj" = ( +/obj/effect/floor_decal/rust, +/obj/machinery/light/small{ + dir = 8; + pixel_x = 0 + }, +/turf/simulated/floor/tiled/steel_dirty/virgo3b, +/area/tether/outpost/exploration_shed) +"ak" = ( +/obj/effect/floor_decal/rust, +/obj/machinery/light/small{ + dir = 4 + }, +/turf/simulated/floor/tiled/steel_dirty/virgo3b, +/area/tether/outpost/exploration_shed) +"al" = ( +/obj/effect/floor_decal/rust, +/obj/machinery/power/apc{ + alarms_hidden = 1; + dir = 4; + name = "east bump"; + pixel_x = 24 + }, +/obj/structure/cable/green{ + d2 = 2; + icon_state = "0-2" + }, +/turf/simulated/floor/tiled/steel_dirty/virgo3b, +/area/tether/outpost/exploration_shed) +"am" = ( +/obj/effect/floor_decal/rust, +/obj/structure/cable/green, +/obj/machinery/power/port_gen/pacman, +/turf/simulated/floor/tiled/steel_dirty/virgo3b, +/area/tether/outpost/exploration_shed) +"an" = ( +/obj/effect/floor_decal/rust, +/turf/simulated/floor/tiled/steel_dirty/virgo3b, +/area/tether/outpost/exploration_plains) +"bj" = ( +/obj/effect/floor_decal/rust, +/turf/simulated/floor/tiled/steel_dirty/virgo3b, +/area/tether/outpost/exploration_shed) +"bF" = ( +/turf/simulated/mineral/virgo3b, +/area/mine/unexplored) + +(1,1,1) = {" +aa +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +"} +(2,1,1) = {" +aa +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ac +"} +(3,1,1) = {" +aa +bF +bF +bF +bF +bF +bF +bF +bF +bF +bF +bF +bF +bF +bF +bF +bF +bF +bF +bF +bF +bF +bF +bF +bF +bF +bF +bF +bF +bF +bF +bF +bF +bF +bF +bF +bF +bF +bF +bF +bF +bF +bF +bF +bF +bF +bF +bF +bF +bF +bF +bF +bF +bF +bF +bF +bF +bF +bF +bF +bF +bF +bF +bF +bF +bF +bF +bF +bF +bF +bF +bF +bF +bF +bF +bF +bF +bF +bF +bF +bF +bF +bF +bF +bF +bF +bF +bF +bF +bF +bF +bF +bF +bF +bF +bF +bF +bF +bF +bF +bF +bF +bF +bF +bF +bF +bF +bF +bF +bF +bF +bF +bF +bF +bF +bF +bF +bF +bF +bF +bF +bF +bF +bF +bF +bF +bF +bF +bF +bF +bF +bF +bF +bF +bF +bF +bF +bF +ae +ac +"} +(4,1,1) = {" +aa +bF +bF +bF +bF +bF +bF +bF +bF +bF +bF +bF +bF +bF +bF +bF +bF +bF +bF +bF +bF +bF +bF +bF +bF +bF +bF +bF +bF +bF +bF +bF +bF +bF +bF +bF +bF +bF +bF +bF +bF +bF +bF +bF +bF +bF +bF +bF +bF +bF +bF +bF +bF +bF +bF +bF +bF +bF +bF +bF +bF +bF +bF +bF +bF +bF +bF +bF +bF +bF +bF +bF +bF +bF +bF +bF +bF +bF +bF +bF +bF +bF +bF +bF +bF +bF +bF +bF +bF +bF +bF +bF +bF +bF +bF +bF +bF +bF +bF +bF +bF +bF +bF +bF +bF +bF +bF +bF +bF +bF +bF +bF +bF +bF +bF +bF +bF +bF +bF +bF +bF +bF +bF +bF +bF +bF +bF +bF +bF +bF +bF +bF +bF +bF +bF +bF +bF +bF +ae +ac +"} +(5,1,1) = {" +aa +bF +bF +bF +bF +bF +bF +bF +bF +bF +bF +bF +bF +bF +bF +bF +bF +bF +bF +bF +bF +bF +bF +bF +bF +bF +bF +bF +bF +bF +bF +bF +bF +bF +bF +bF +bF +bF +bF +bF +bF +bF +bF +bF +bF +bF +bF +bF +bF +bF +bF +bF +bF +bF +bF +bF +bF +bF +bF +bF +bF +bF +bF +bF +bF +bF +bF +bF +bF +bF +bF +bF +bF +bF +bF +bF +bF +bF +bF +bF +bF +bF +bF +bF +bF +bF +bF +bF +bF +bF +bF +bF +bF +bF +bF +bF +bF +bF +bF +bF +bF +bF +bF +bF +bF +bF +bF +bF +bF +bF +bF +bF +bF +bF +bF +bF +bF +bF +bF +bF +bF +bF +bF +bF +bF +bF +bF +bF +bF +bF +bF +bF +bF +bF +bF +bF +bF +bF +ae +ac +"} +(6,1,1) = {" +aa +bF +bF +bF +bF +bF +bF +bF +bF +bF +bF +bF +bF +bF +ad +ad +ad +ad +ad +ad +bF +bF +bF +bF +bF +bF +bF +bF +bF +bF +bF +ad +ad +ad +ad +bF +bF +bF +bF +bF +bF +bF +ad +ad +ad +ad +ad +ad +ab +ab +ab +ab +ab +ab +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +bF +bF +bF +bF +bF +bF +bF +bF +bF +bF +bF +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +bF +bF +bF +bF +bF +bF +bF +bF +bF +bF +bF +bF +bF +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +bF +bF +bF +bF +bF +bF +bF +bF +bF +bF +ae +ac +"} +(7,1,1) = {" +aa +bF +ad +ad +bF +bF +ad +bF +bF +bF +ad +ad +ad +ad +ad +ab +ab +ad +ad +ad +ad +ad +ad +ad +ad +ab +ab +ab +ab +ab +ab +ad +ad +ad +ad +ad +ad +bF +bF +bF +ad +ad +ad +ad +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +bF +bF +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ab +ab +ab +ab +ab +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +bF +bF +bF +ad +ad +ad +ab +ab +ab +ab +ab +ab +ab +ab +ad +ad +ad +ad +ad +ad +ad +ad +bF +bF +bF +bF +ae +ac +"} +(8,1,1) = {" +aa +ad +ad +ad +ad +bF +ad +ad +ad +ad +ad +ad +ad +ab +ab +ab +ab +ab +ab +ab +ad +ad +ad +ad +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ad +ad +ad +bF +ad +ad +ad +ad +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ad +ad +ad +ad +ad +ab +ab +ab +ad +ad +ad +ad +ad +ad +ad +ad +ab +ab +ab +ab +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ad +ad +ad +ab +ab +ab +bF +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ad +ad +ad +ad +bF +bF +bF +bF +ae +ac +"} +(9,1,1) = {" +aa +ad +ad +ad +ad +ad +ad +ad +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ad +ad +ad +ad +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ad +ad +ad +ad +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ad +ad +ad +ad +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ad +ad +ad +bF +bF +bF +bF +ae +ac +"} +(10,1,1) = {" +aa +ab +ad +ad +ab +ab +ab +ad +ad +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ad +ad +bF +bF +bF +bF +ae +ac +"} +(11,1,1) = {" +aa +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ad +ad +ad +bF +bF +bF +bF +ae +ac +"} +(12,1,1) = {" +aa +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ad +ad +ad +bF +bF +bF +ae +ac +"} +(13,1,1) = {" +aa +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ad +ad +bF +bF +bF +bF +ae +ac +"} +(14,1,1) = {" +aa +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ad +ad +ad +bF +bF +bF +bF +ae +ac +"} +(15,1,1) = {" +aa +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ad +ad +ad +bF +bF +bF +bF +ae +ac +"} +(16,1,1) = {" +aa +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ad +ad +bF +bF +bF +bF +bF +ae +ac +"} +(17,1,1) = {" +aa +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ad +ad +bF +bF +bF +bF +bF +ae +ac +"} +(18,1,1) = {" +aa +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ad +ad +ad +bF +bF +bF +bF +ae +ac +"} +(19,1,1) = {" +aa +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ad +ad +ad +bF +bF +bF +ae +ac +"} +(20,1,1) = {" +aa +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ad +ad +ad +bF +bF +bF +ae +ac +"} +(21,1,1) = {" +aa +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ad +ad +ad +bF +bF +bF +ae +ac +"} +(22,1,1) = {" +aa +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ad +ad +ad +bF +bF +bF +ae +ac +"} +(23,1,1) = {" +aa +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ad +ad +bF +bF +bF +bF +ae +ac +"} +(24,1,1) = {" +aa +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ad +bF +bF +bF +bF +ae +ac +"} +(25,1,1) = {" +aa +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ad +bF +bF +bF +bF +ae +ac +"} +(26,1,1) = {" +aa +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ad +bF +bF +bF +bF +ae +ac +"} +(27,1,1) = {" +aa +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ad +bF +bF +bF +bF +ae +ac +"} +(28,1,1) = {" +aa +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ad +bF +bF +bF +bF +ae +ac +"} +(29,1,1) = {" +aa +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ad +bF +bF +bF +bF +ae +ac +"} +(30,1,1) = {" +aa +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ad +bF +bF +bF +bF +ae +ac +"} +(31,1,1) = {" +aa +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ad +bF +bF +bF +bF +ae +ac +"} +(32,1,1) = {" +aa +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ad +bF +bF +bF +bF +ae +ac +"} +(33,1,1) = {" +aa +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ad +ad +bF +bF +bF +ae +ac +"} +(34,1,1) = {" +aa +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ad +ad +bF +bF +bF +ae +ac +"} +(35,1,1) = {" +aa +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ad +ad +bF +bF +bF +ae +ac +"} +(36,1,1) = {" +aa +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ad +bF +bF +bF +ae +ac +"} +(37,1,1) = {" +aa +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +bF +bF +bF +ae +ac +"} +(38,1,1) = {" +aa +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +bF +bF +bF +ae +ac +"} +(39,1,1) = {" +aa +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +bF +bF +bF +ae +ac +"} +(40,1,1) = {" +aa +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +bF +bF +bF +ae +ac +"} +(41,1,1) = {" +aa +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +bF +bF +bF +ae +ac +"} +(42,1,1) = {" +aa +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +bF +bF +bF +ae +ac +"} +(43,1,1) = {" +aa +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +bF +bF +bF +bF +ae +ac +"} +(44,1,1) = {" +aa +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ad +bF +bF +bF +bF +ae +ac +"} +(45,1,1) = {" +aa +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ad +bF +bF +bF +bF +ae +ac +"} +(46,1,1) = {" +aa +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ad +bF +bF +bF +bF +ae +ac +"} +(47,1,1) = {" +aa +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ad +bF +bF +bF +bF +ae +ac +"} +(48,1,1) = {" +aa +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ad +bF +bF +bF +bF +ae +ac +"} +(49,1,1) = {" +aa +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +bF +bF +bF +bF +bF +ae +ac +"} +(50,1,1) = {" +aa +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ad +bF +bF +bF +bF +bF +ae +ac +"} +(51,1,1) = {" +aa +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ad +bF +bF +bF +bF +bF +ae +ac +"} +(52,1,1) = {" +aa +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ad +bF +bF +bF +bF +bF +ae +ac +"} +(53,1,1) = {" +aa +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ad +ad +bF +bF +bF +bF +ae +ac +"} +(54,1,1) = {" +aa +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ad +bF +bF +bF +bF +ae +ac +"} +(55,1,1) = {" +aa +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ad +bF +bF +bF +bF +ae +ac +"} +(56,1,1) = {" +aa +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ad +bF +bF +bF +bF +ae +ac +"} +(57,1,1) = {" +aa +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ad +bF +bF +bF +bF +ae +ac +"} +(58,1,1) = {" +aa +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ad +bF +bF +bF +bF +ae +ac +"} +(59,1,1) = {" +aa +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ad +ad +bF +bF +bF +ae +ac +"} +(60,1,1) = {" +aa +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ad +ad +ad +bF +bF +bF +ae +ac +"} +(61,1,1) = {" +aa +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ad +ad +ad +bF +bF +bF +ae +ac +"} +(62,1,1) = {" +aa +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ad +ad +bF +bF +bF +ae +ac +"} +(63,1,1) = {" +aa +ab +ad +ad +ab +ad +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ad +ad +bF +bF +bF +ae +ac +"} +(64,1,1) = {" +aa +ad +ad +ad +ad +ad +ad +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ad +bF +bF +bF +bF +ae +ac +"} +(65,1,1) = {" +aa +ag +ag +ag +ag +ag +ad +ad +ad +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ad +bF +bF +bF +bF +ae +ac +"} +(66,1,1) = {" +af +bj +aj +bj +bj +ag +ad +ad +ad +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ad +bF +bF +bF +bF +ae +ac +"} +(67,1,1) = {" +af +bj +bj +bj +bj +ah +ad +ad +ad +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ad +bF +bF +bF +bF +ae +ac +"} +(68,1,1) = {" +af +bj +bj +bj +bj +ai +an +ad +ad +ad +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ad +ad +bF +bF +bF +ae +ac +"} +(69,1,1) = {" +af +bj +bj +bj +bj +bj +an +ad +ad +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ad +ad +bF +bF +bF +ae +ac +"} +(70,1,1) = {" +af +bj +bj +bj +bj +ah +ad +ad +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ad +bF +bF +bF +ae +ac +"} +(71,1,1) = {" +af +bj +bj +bj +bj +ai +an +ad +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +bF +bF +bF +ae +ac +"} +(72,1,1) = {" +af +bj +bj +bj +bj +bj +an +ad +ad +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +bF +bF +bF +ae +ac +"} +(73,1,1) = {" +af +bj +bj +bj +bj +ah +ad +ad +ad +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +bF +bF +bF +ae +ac +"} +(74,1,1) = {" +af +bj +ak +al +am +ag +ad +ad +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +bF +bF +bF +ae +ac +"} +(75,1,1) = {" +aa +ag +ag +ag +ag +ag +ad +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ad +bF +bF +bF +ae +ac +"} +(76,1,1) = {" +aa +ad +ad +ad +ad +ad +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ad +ad +bF +bF +bF +ae +ac +"} +(77,1,1) = {" +aa +ad +ad +ad +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ad +ad +bF +bF +bF +bF +ae +ac +"} +(78,1,1) = {" +aa +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ad +ad +bF +bF +bF +bF +bF +ae +ac +"} +(79,1,1) = {" +aa +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ad +ad +bF +bF +bF +bF +bF +ae +ac +"} +(80,1,1) = {" +aa +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ad +ad +ad +bF +bF +bF +bF +ae +ac +"} +(81,1,1) = {" +aa +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ad +ad +bF +bF +bF +bF +ae +ac +"} +(82,1,1) = {" +aa +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ad +ad +bF +bF +bF +bF +ae +ac +"} +(83,1,1) = {" +aa +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ad +ad +bF +bF +bF +bF +ae +ac +"} +(84,1,1) = {" +aa +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ad +ad +bF +bF +bF +bF +ae +ac +"} +(85,1,1) = {" +aa +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ad +ad +bF +bF +bF +bF +ae +ac +"} +(86,1,1) = {" +aa +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ad +ad +bF +bF +bF +bF +ae +ac +"} +(87,1,1) = {" +aa +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ad +bF +bF +bF +bF +bF +ae +ac +"} +(88,1,1) = {" +aa +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ad +bF +bF +bF +bF +bF +ae +ac +"} +(89,1,1) = {" +aa +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ad +bF +bF +bF +bF +bF +ae +ac +"} +(90,1,1) = {" +aa +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ad +ad +bF +bF +bF +bF +ae +ac +"} +(91,1,1) = {" +aa +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ad +ad +bF +bF +bF +ae +ac +"} +(92,1,1) = {" +aa +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ad +ad +bF +bF +bF +ae +ac +"} +(93,1,1) = {" +aa +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ad +ad +bF +bF +bF +ae +ac +"} +(94,1,1) = {" +aa +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ad +ad +bF +bF +bF +ae +ac +"} +(95,1,1) = {" +aa +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ad +ad +bF +bF +bF +ae +ac +"} +(96,1,1) = {" +aa +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ad +ad +ad +bF +bF +bF +ae +ac +"} +(97,1,1) = {" +aa +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ad +ad +ad +bF +bF +bF +ae +ac +"} +(98,1,1) = {" +aa +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ad +ad +bF +bF +bF +ae +ac +"} +(99,1,1) = {" +aa +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ad +bF +bF +bF +bF +ae +ac +"} +(100,1,1) = {" +aa +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ad +bF +bF +bF +bF +ae +ac +"} +(101,1,1) = {" +aa +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ad +bF +bF +bF +bF +ae +ac +"} +(102,1,1) = {" +aa +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ad +bF +bF +bF +bF +ae +ac +"} +(103,1,1) = {" +aa +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +bF +bF +bF +bF +ae +ac +"} +(104,1,1) = {" +aa +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +bF +bF +bF +bF +ae +ac +"} +(105,1,1) = {" +aa +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +bF +bF +bF +bF +ae +ac +"} +(106,1,1) = {" +aa +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +bF +bF +bF +bF +ae +ac +"} +(107,1,1) = {" +aa +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +bF +bF +bF +bF +ae +ac +"} +(108,1,1) = {" +aa +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ad +bF +bF +bF +bF +ae +ac +"} +(109,1,1) = {" +aa +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ad +bF +bF +bF +bF +ae +ac +"} +(110,1,1) = {" +aa +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ad +bF +bF +bF +bF +ae +ac +"} +(111,1,1) = {" +aa +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ad +bF +bF +bF +bF +ae +ac +"} +(112,1,1) = {" +aa +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ad +bF +bF +bF +bF +ae +ac +"} +(113,1,1) = {" +aa +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ad +bF +bF +bF +bF +ae +ac +"} +(114,1,1) = {" +aa +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ad +ad +bF +bF +bF +ae +ac +"} +(115,1,1) = {" +aa +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ad +ad +bF +bF +bF +ae +ac +"} +(116,1,1) = {" +aa +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ad +ad +ad +bF +bF +bF +ae +ac +"} +(117,1,1) = {" +aa +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ad +ad +ad +bF +bF +bF +ae +ac +"} +(118,1,1) = {" +aa +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ad +ad +bF +bF +bF +ae +ac +"} +(119,1,1) = {" +aa +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ad +ad +bF +bF +bF +ae +ac +"} +(120,1,1) = {" +aa +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ad +ad +bF +bF +bF +ae +ac +"} +(121,1,1) = {" +aa +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ad +ad +bF +bF +bF +ae +ac +"} +(122,1,1) = {" +aa +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ad +bF +bF +bF +bF +ae +ac +"} +(123,1,1) = {" +aa +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ad +bF +bF +bF +bF +ae +ac +"} +(124,1,1) = {" +aa +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ad +bF +bF +bF +bF +ae +ac +"} +(125,1,1) = {" +aa +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ad +bF +bF +bF +bF +ae +ac +"} +(126,1,1) = {" +aa +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ad +ad +bF +bF +bF +bF +ae +ac +"} +(127,1,1) = {" +aa +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ad +ad +bF +bF +bF +bF +ae +ac +"} +(128,1,1) = {" +aa +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ad +ad +ad +bF +bF +bF +bF +ae +ac +"} +(129,1,1) = {" +aa +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ad +bF +bF +bF +bF +ae +ac +"} +(130,1,1) = {" +aa +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ad +bF +bF +bF +bF +ae +ac +"} +(131,1,1) = {" +aa +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ad +ad +bF +bF +bF +ae +ac +"} +(132,1,1) = {" +aa +ab +ab +ab +ad +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ad +ad +ab +ab +ad +ad +ad +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ad +ad +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ad +bF +bF +bF +bF +ae +ac +"} +(133,1,1) = {" +aa +ad +ab +ad +ad +ad +ad +ad +ab +ab +ab +ad +ad +ad +ad +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ad +ad +ab +ab +ab +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ab +ab +ab +ab +ab +ab +ad +ad +ad +ab +ab +ab +ab +ab +ab +ab +ab +ab +ad +ad +ad +bF +ad +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ad +ad +ad +ad +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ad +ad +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ad +ad +bF +bF +bF +bF +ae +ac +"} +(134,1,1) = {" +aa +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ab +ab +ab +ab +ad +ad +ad +ad +ad +ad +ad +bF +bF +bF +bF +bF +ad +ad +ad +ad +ad +ad +ab +ab +ab +ad +ad +ad +ad +ad +ad +ad +ab +ab +ab +ab +ab +ad +ad +ad +ad +bF +bF +bF +ab +ab +bF +ad +ad +ad +ad +ad +ad +ad +ab +ab +ab +ad +ad +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +bF +bF +bF +bF +ad +ad +ad +ad +ad +ad +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ab +ab +ab +ad +ad +ad +bF +bF +bF +bF +ae +ac +"} +(135,1,1) = {" +aa +bF +bF +bF +bF +bF +bF +bF +bF +bF +bF +bF +ad +ad +bF +bF +bF +bF +bF +bF +bF +bF +bF +bF +bF +ab +ab +ab +bF +bF +bF +bF +bF +bF +bF +bF +bF +bF +bF +bF +bF +bF +bF +bF +bF +bF +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +bF +bF +bF +bF +bF +bF +bF +bF +bF +bF +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +bF +bF +bF +bF +bF +bF +bF +bF +bF +bF +bF +ad +ad +ad +ad +ab +ab +ab +ab +ab +ad +ad +ad +ad +ad +ad +ad +ad +bF +bF +bF +bF +bF +bF +bF +bF +bF +bF +ab +bF +bF +bF +bF +bF +bF +bF +ae +ac +"} +(136,1,1) = {" +aa +bF +bF +bF +bF +bF +bF +bF +bF +bF +bF +bF +bF +bF +bF +bF +bF +bF +bF +bF +bF +bF +bF +bF +bF +bF +bF +bF +bF +bF +bF +bF +bF +bF +bF +bF +bF +bF +bF +bF +bF +bF +bF +bF +bF +bF +bF +bF +bF +bF +bF +bF +bF +bF +bF +bF +bF +bF +bF +bF +bF +bF +bF +bF +bF +bF +bF +bF +bF +bF +bF +bF +bF +bF +bF +bF +bF +bF +bF +bF +bF +bF +bF +bF +bF +bF +bF +bF +bF +bF +bF +bF +bF +bF +bF +bF +bF +bF +bF +bF +bF +bF +bF +bF +bF +bF +bF +bF +bF +bF +bF +bF +bF +bF +bF +bF +bF +bF +bF +bF +bF +bF +bF +bF +bF +bF +bF +bF +bF +bF +bF +bF +bF +bF +bF +bF +bF +bF +ae +ac +"} +(137,1,1) = {" +aa +bF +bF +bF +bF +bF +bF +bF +bF +bF +bF +bF +bF +bF +bF +bF +bF +bF +bF +bF +bF +bF +bF +bF +bF +bF +bF +bF +bF +bF +bF +bF +bF +bF +bF +bF +bF +bF +bF +bF +bF +bF +bF +bF +bF +bF +bF +bF +bF +bF +bF +bF +bF +bF +bF +bF +bF +bF +bF +bF +bF +bF +bF +bF +bF +bF +bF +bF +bF +bF +bF +bF +bF +bF +bF +bF +bF +bF +bF +bF +bF +bF +bF +bF +bF +bF +bF +bF +bF +bF +bF +bF +bF +bF +bF +bF +bF +bF +bF +bF +bF +bF +bF +bF +bF +bF +bF +bF +bF +bF +bF +bF +bF +bF +bF +bF +bF +bF +bF +bF +bF +bF +bF +bF +bF +bF +bF +bF +bF +bF +bF +bF +bF +bF +bF +bF +bF +bF +ae +ac +"} +(138,1,1) = {" +aa +bF +bF +bF +bF +bF +bF +bF +bF +bF +bF +bF +bF +bF +bF +bF +bF +bF +bF +bF +bF +bF +bF +bF +bF +bF +bF +bF +bF +bF +bF +bF +bF +bF +bF +bF +bF +bF +bF +bF +bF +bF +bF +bF +bF +bF +bF +bF +bF +bF +bF +bF +bF +bF +bF +bF +bF +bF +bF +bF +bF +bF +bF +bF +bF +bF +bF +bF +bF +bF +bF +bF +bF +bF +bF +bF +bF +bF +bF +bF +bF +bF +bF +bF +bF +bF +bF +bF +bF +bF +bF +bF +bF +bF +bF +bF +bF +bF +bF +bF +bF +bF +bF +bF +bF +bF +bF +bF +bF +bF +bF +bF +bF +bF +bF +bF +bF +bF +bF +bF +bF +bF +bF +bF +bF +bF +bF +bF +bF +bF +bF +bF +bF +bF +bF +bF +bF +bF +ae +ac +"} +(139,1,1) = {" +aa +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ac +"} +(140,1,1) = {" +aa +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +"} diff --git a/maps/tether/submaps/tether_underdark.dmm b/maps/tether/submaps/tether_underdark.dmm index 029965b56c..7fc80268c2 100644 --- a/maps/tether/submaps/tether_underdark.dmm +++ b/maps/tether/submaps/tether_underdark.dmm @@ -13,9 +13,6 @@ /turf/simulated/floor/outdoors/dirt/virgo3b, /area/mine/explored/underdark) "b" = ( -/obj/tether_away_spawner/shadekin{ - faction = "underdark" - }, /turf/simulated/mineral/floor/virgo3b, /area/mine/explored/underdark) "c" = ( diff --git a/maps/tether/tether-01-surface1.dmm b/maps/tether/tether-01-surface1.dmm index b7c6a77749..e9eeaf98ee 100644 --- a/maps/tether/tether-01-surface1.dmm +++ b/maps/tether/tether-01-surface1.dmm @@ -42,9 +42,7 @@ name = "south bump"; pixel_y = -28 }, -/obj/structure/cable/green{ - icon_state = "16-0" - }, +/obj/structure/cable/green, /turf/simulated/floor/tiled/steel_dirty/virgo3b, /area/tether/surfacebase/mining_main/external) "aak" = ( @@ -403,13 +401,52 @@ /turf/simulated/floor/tiled/techfloor, /area/tether/surfacebase/mining_main/refinery) "aaS" = ( -/obj/structure/grille, -/obj/structure/window/reinforced/full, +/obj/machinery/atmospherics/pipe/simple/hidden/cyan{ + dir = 4 + }, +/obj/machinery/door/airlock/maintenance/common, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/obj/machinery/door/firedoor/glass, /turf/simulated/floor/plating, -/area/tether/surfacebase/mining_main/refinery) +/area/maintenance/lower/mining_eva) +"aaT" = ( +/obj/structure/cable{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/obj/machinery/alarm{ + pixel_y = 22; + target_temperature = 293.15 + }, +/turf/simulated/floor/plating, +/area/maintenance/lower/solars) "aaU" = ( /turf/simulated/wall, /area/maintenance/lower/trash_pit) +"aaV" = ( +/obj/structure/catwalk, +/obj/effect/decal/cleanable/dirt, +/obj/machinery/alarm{ + dir = 8; + icon_state = "alarm0"; + pixel_x = 24 + }, +/turf/simulated/floor/plating, +/area/maintenance/lower/trash_pit) +"aaW" = ( +/obj/structure/cable{ + d1 = 2; + d2 = 8; + icon_state = "2-8" + }, +/obj/machinery/alarm{ + pixel_y = 22 + }, +/turf/simulated/floor/tiled/techfloor, +/area/maintenance/lower/vacant_site) "aaX" = ( /obj/structure/plasticflaps, /obj/machinery/conveyor{ @@ -481,6 +518,26 @@ }, /turf/simulated/floor/tiled/steel_grid, /area/tether/surfacebase/mining_main/refinery) +"abf" = ( +/obj/machinery/door/airlock/maintenance/common{ + name = "Trash Pit Access"; + req_one_access = list(26,48) + }, +/obj/structure/catwalk, +/obj/machinery/door/firedoor/glass, +/turf/simulated/floor/plating, +/area/maintenance/lower/trash_pit) +"abg" = ( +/obj/effect/floor_decal/steeldecal/steel_decals4{ + dir = 10 + }, +/obj/effect/floor_decal/steeldecal/steel_decals4, +/obj/machinery/alarm{ + pixel_y = 22; + target_temperature = 293.15 + }, +/turf/simulated/floor/tiled, +/area/rnd/hallway) "abh" = ( /turf/simulated/floor/tiled, /area/tether/surfacebase/mining_main/refinery) @@ -658,6 +715,23 @@ }, /turf/simulated/floor/tiled, /area/tether/surfacebase/mining_main/storage) +"abx" = ( +/obj/effect/floor_decal/industrial/loading{ + dir = 8 + }, +/obj/effect/floor_decal/steeldecal/steel_decals6{ + dir = 9 + }, +/obj/effect/floor_decal/steeldecal/steel_decals6{ + dir = 6 + }, +/obj/machinery/door/firedoor/glass/hidden/steel{ + dir = 8 + }, +/turf/simulated/floor/tiled{ + icon_state = "monotile" + }, +/area/security/checkpoint) "aby" = ( /obj/machinery/conveyor{ dir = 8; @@ -672,6 +746,26 @@ }, /turf/simulated/floor/plating, /area/tether/surfacebase/mining_main/refinery) +"abA" = ( +/obj/effect/floor_decal/industrial/outline/yellow, +/obj/machinery/alarm{ + dir = 1; + pixel_y = -25 + }, +/turf/simulated/floor/tiled{ + icon_state = "techmaint" + }, +/area/security/checkpoint) +"abB" = ( +/obj/structure/cable{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/obj/machinery/door/airlock/maintenance/common, +/obj/machinery/door/firedoor/glass, +/turf/simulated/floor/plating, +/area/maintenance/lower/solars) "abC" = ( /obj/structure/plasticflaps/mining, /obj/machinery/conveyor{ @@ -680,6 +774,19 @@ }, /turf/simulated/floor/plating, /area/tether/surfacebase/mining_main/refinery) +"abD" = ( +/obj/structure/table/glass, +/obj/effect/floor_decal/borderfloor, +/obj/effect/floor_decal/corner/mauve/border, +/obj/machinery/atmospherics/unary/vent_pump/on{ + dir = 1 + }, +/obj/machinery/alarm{ + dir = 1; + pixel_y = -22 + }, +/turf/simulated/floor/tiled, +/area/rnd/xenobiology/xenoflora/lab_atmos) "abE" = ( /obj/effect/floor_decal/industrial/warning{ dir = 8 @@ -1058,6 +1165,9 @@ }, /turf/simulated/floor/tiled, /area/tether/surfacebase/mining_main/eva) +"aci" = ( +/turf/simulated/mineral, +/area/storage/surface_eva/external) "acj" = ( /obj/effect/floor_decal/borderfloor{ dir = 8 @@ -1131,6 +1241,14 @@ }, /turf/simulated/floor/tiled, /area/tether/surfacebase/mining_main/uxstorage) +"aco" = ( +/obj/structure/railing, +/obj/structure/railing{ + dir = 4 + }, +/obj/effect/decal/cleanable/dirt, +/turf/simulated/floor/plating, +/area/maintenance/lower/research) "acp" = ( /obj/structure/catwalk, /obj/effect/decal/cleanable/dirt, @@ -1148,6 +1266,73 @@ /obj/effect/decal/cleanable/dirt, /turf/simulated/floor/plating, /area/maintenance/lower/trash_pit) +"acr" = ( +/obj/structure/table/marble, +/obj/machinery/door/window{ + dir = 8; + req_one_access = list(25) + }, +/obj/machinery/door/blast/shutters{ + dir = 8; + id = "cafe"; + layer = 3.1; + name = "Cafe Shutters" + }, +/obj/machinery/door/firedoor/glass, +/turf/simulated/floor/tiled, +/area/crew_quarters/visitor_dining) +"acs" = ( +/turf/simulated/wall/r_wall, +/area/tether/surfacebase/medical/first_aid_west) +"act" = ( +/obj/machinery/door/airlock/maintenance/common{ + name = "Tram Maintenance Access" + }, +/obj/machinery/door/firedoor/glass, +/turf/simulated/floor/tiled, +/area/crew_quarters/visitor_dining) +"acu" = ( +/obj/effect/floor_decal/borderfloor{ + dir = 8 + }, +/obj/effect/floor_decal/corner/mauve/border{ + dir = 8 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/obj/structure/cable/green{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/obj/structure/disposalpipe/segment, +/obj/effect/floor_decal/steeldecal/steel_decals7{ + dir = 5 + }, +/obj/effect/floor_decal/steeldecal/steel_decals7{ + dir = 6 + }, +/obj/machinery/alarm{ + dir = 4; + icon_state = "alarm0"; + pixel_x = -22 + }, +/turf/simulated/floor/tiled, +/area/rnd/hallway) +"acv" = ( +/obj/machinery/atmospherics/pipe/simple/visible/red{ + dir = 6 + }, +/turf/simulated/floor/tiled, +/area/engineering/atmos) +"acw" = ( +/obj/effect/floor_decal/steeldecal/steel_decals_central1{ + dir = 1 + }, +/turf/simulated/floor/tiled/monofloor{ + dir = 1 + }, +/area/crew_quarters/visitor_laundry) "acx" = ( /turf/simulated/floor/tiled, /area/tether/surfacebase/mining_main/storage) @@ -1155,6 +1340,31 @@ /obj/machinery/atmospherics/unary/vent_pump/on, /turf/simulated/floor/tiled, /area/tether/surfacebase/mining_main/storage) +"acz" = ( +/obj/machinery/door/airlock/multi_tile/glass{ + autoclose = 1; + dir = 2; + id_tag = null; + name = "Laundry"; + req_access = list() + }, +/obj/effect/floor_decal/steeldecal/steel_decals_central1, +/obj/structure/cable/green{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/turf/simulated/floor/tiled/monofloor, +/area/crew_quarters/visitor_laundry) "acA" = ( /obj/structure/disposalpipe/segment{ dir = 4 @@ -1245,6 +1455,14 @@ }, /turf/simulated/floor/tiled, /area/tether/surfacebase/mining_main/eva) +"acJ" = ( +/obj/effect/floor_decal/borderfloor, +/obj/effect/floor_decal/corner/lightgrey/border, +/obj/effect/landmark{ + name = "lightsout" + }, +/turf/simulated/floor/tiled, +/area/hallway/lower/first_west) "acK" = ( /obj/machinery/atmospherics/unary/vent_scrubber/on, /turf/simulated/floor/tiled, @@ -1281,6 +1499,19 @@ }, /turf/simulated/floor/tiled, /area/tether/surfacebase/mining_main/uxstorage) +"acN" = ( +/obj/structure/cable/ender{ + icon_state = "1-2"; + id = "surface-mining" + }, +/obj/structure/railing{ + dir = 8 + }, +/obj/structure/railing{ + dir = 4 + }, +/turf/simulated/floor/plating, +/area/tether/surfacebase/outside/outside1) "acO" = ( /obj/machinery/atmospherics/pipe/simple/hidden/supply, /obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, @@ -1328,6 +1559,27 @@ }, /turf/simulated/floor/plating, /area/maintenance/lower/mining_eva) +"acT" = ( +/obj/structure/cable/green{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/obj/structure/cable/green{ + d1 = 2; + d2 = 8; + icon_state = "2-8" + }, +/obj/structure/cable{ + d1 = 1; + d2 = 8; + icon_state = "1-8" + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/structure/disposalpipe/segment, +/turf/simulated/floor/tiled, +/area/hallway/lower/first_west) "acU" = ( /obj/machinery/light{ dir = 8 @@ -1340,6 +1592,15 @@ }, /turf/simulated/floor/tiled, /area/tether/surfacebase/mining_main/storage) +"acV" = ( +/obj/structure/cable/green{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/obj/machinery/atmospherics/unary/vent_pump/on, +/turf/simulated/floor/tiled, +/area/hallway/lower/first_west) "acW" = ( /obj/structure/catwalk, /obj/effect/decal/cleanable/dirt, @@ -1413,6 +1674,19 @@ }, /turf/simulated/floor/tiled, /area/tether/surfacebase/mining_main/storage) +"ada" = ( +/obj/structure/cable/green{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/obj/structure/cable/green{ + d1 = 2; + d2 = 8; + icon_state = "2-8" + }, +/turf/simulated/floor/tiled, +/area/hallway/lower/first_west) "adb" = ( /obj/machinery/light{ dir = 1 @@ -1454,6 +1728,15 @@ }, /turf/simulated/floor/tiled, /area/tether/surfacebase/mining_main/storage) +"add" = ( +/obj/structure/cable/green{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/obj/machinery/atmospherics/unary/vent_scrubber/on, +/turf/simulated/floor/tiled, +/area/hallway/lower/first_west) "ade" = ( /obj/effect/floor_decal/industrial/warning{ dir = 1 @@ -1500,6 +1783,70 @@ }, /turf/simulated/floor/plating, /area/maintenance/lower/trash_pit) +"adh" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/obj/structure/cable/green{ + d1 = 1; + d2 = 8; + icon_state = "1-8" + }, +/obj/structure/cable/green{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/turf/simulated/floor/tiled, +/area/hallway/lower/first_west) +"adi" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/structure/cable/green{ + d1 = 2; + d2 = 8; + icon_state = "2-8" + }, +/obj/structure/disposalpipe/segment{ + dir = 1; + icon_state = "pipe-c" + }, +/turf/simulated/floor/tiled, +/area/hallway/lower/first_west) +"adj" = ( +/obj/structure/cable/green{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/obj/effect/floor_decal/steeldecal/steel_decals6, +/obj/machinery/atmospherics/pipe/manifold/hidden/supply, +/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers, +/obj/structure/disposalpipe/segment{ + dir = 1; + icon_state = "pipe-c" + }, +/turf/simulated/floor/tiled, +/area/hallway/lower/first_west) +"adk" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/obj/effect/floor_decal/borderfloor, +/obj/effect/floor_decal/corner/lightgrey/border, +/obj/effect/floor_decal/borderfloor/corner2, +/obj/effect/floor_decal/corner/lightgrey/bordercorner2, +/obj/effect/floor_decal/steeldecal/steel_decals7{ + dir = 8 + }, +/obj/effect/floor_decal/steeldecal/steel_decals7{ + dir = 1 + }, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/turf/simulated/floor/tiled, +/area/hallway/lower/first_west) "adl" = ( /obj/machinery/atmospherics/pipe/simple/hidden/cyan{ dir = 10; @@ -1600,6 +1947,26 @@ }, /turf/simulated/floor/tiled, /area/tether/surfacebase/mining_main/storage) +"adu" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/obj/effect/floor_decal/borderfloor, +/obj/effect/floor_decal/corner/lightgrey/border, +/obj/effect/floor_decal/steeldecal/steel_decals7{ + dir = 8 + }, +/obj/effect/floor_decal/steeldecal/steel_decals7{ + dir = 1 + }, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/turf/simulated/floor/tiled, +/area/hallway/lower/first_west) "adv" = ( /obj/effect/floor_decal/borderfloor{ dir = 4 @@ -1700,6 +2067,25 @@ }, /turf/simulated/floor/tiled, /area/tether/surfacebase/mining_main/uxstorage) +"adF" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, +/obj/effect/floor_decal/borderfloor, +/obj/effect/floor_decal/corner/lightgrey/border, +/obj/machinery/atmospherics/pipe/manifold/hidden/supply, +/obj/effect/floor_decal/steeldecal/steel_decals7{ + dir = 8 + }, +/obj/effect/floor_decal/steeldecal/steel_decals7{ + dir = 1 + }, +/obj/machinery/light, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/turf/simulated/floor/tiled, +/area/hallway/lower/first_west) "adG" = ( /obj/structure/disposalpipe/segment{ dir = 1; @@ -1707,6 +2093,75 @@ }, /turf/simulated/floor/tiled, /area/tether/surfacebase/mining_main/storage) +"adH" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/obj/machinery/power/apc{ + dir = 2; + name = "south bump"; + pixel_y = -28 + }, +/obj/structure/cable/green, +/obj/effect/floor_decal/borderfloor, +/obj/effect/floor_decal/corner/lightgrey/border, +/obj/effect/floor_decal/steeldecal/steel_decals7{ + dir = 8 + }, +/obj/effect/floor_decal/steeldecal/steel_decals7{ + dir = 1 + }, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/turf/simulated/floor/tiled, +/area/hallway/lower/first_west) +"adI" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/obj/effect/floor_decal/borderfloor, +/obj/effect/floor_decal/corner/lightgrey/border, +/obj/effect/floor_decal/steeldecal/steel_decals7{ + dir = 8 + }, +/obj/effect/floor_decal/steeldecal/steel_decals7{ + dir = 1 + }, +/obj/structure/extinguisher_cabinet{ + dir = 1; + icon_state = "extinguisher_closed"; + pixel_y = -32 + }, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/turf/simulated/floor/tiled, +/area/hallway/lower/first_west) +"adJ" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/obj/effect/floor_decal/borderfloor, +/obj/effect/floor_decal/corner/lightgrey/border, +/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers, +/obj/effect/floor_decal/steeldecal/steel_decals7{ + dir = 8 + }, +/obj/effect/floor_decal/steeldecal/steel_decals7{ + dir = 1 + }, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/turf/simulated/floor/tiled, +/area/hallway/lower/first_west) "adK" = ( /turf/simulated/wall, /area/tether/surfacebase/outside/outside1) @@ -1737,15 +2192,23 @@ /turf/simulated/floor/plating, /area/maintenance/lower/mining_eva) "adO" = ( -/obj/machinery/atmospherics/pipe/simple/hidden/cyan{ - dir = 4 - }, -/obj/machinery/door/airlock/maintenance/common, +/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers, /obj/machinery/atmospherics/pipe/simple/hidden/supply{ dir = 4 }, -/turf/simulated/floor/plating, -/area/maintenance/lower/mining_eva) +/obj/effect/floor_decal/borderfloor, +/obj/effect/floor_decal/corner/lightgrey/border, +/obj/effect/floor_decal/steeldecal/steel_decals7{ + dir = 8 + }, +/obj/effect/floor_decal/steeldecal/steel_decals7{ + dir = 1 + }, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/turf/simulated/floor/tiled, +/area/hallway/lower/first_west) "adP" = ( /obj/machinery/atmospherics/pipe/simple/hidden/supply, /obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, @@ -1829,6 +2292,32 @@ }, /turf/simulated/floor/tiled, /area/tether/surfacebase/mining_main/storage) +"adW" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/obj/effect/floor_decal/borderfloor, +/obj/effect/floor_decal/corner/lightgrey/border, +/obj/effect/floor_decal/borderfloor/corner2{ + dir = 9 + }, +/obj/effect/floor_decal/corner/lightgrey/bordercorner2{ + dir = 9 + }, +/obj/effect/floor_decal/steeldecal/steel_decals7{ + dir = 8 + }, +/obj/effect/floor_decal/steeldecal/steel_decals7{ + dir = 1 + }, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/turf/simulated/floor/tiled, +/area/hallway/lower/first_west) "adX" = ( /obj/item/weapon/pickaxe, /obj/structure/table/steel, @@ -2030,6 +2519,27 @@ /obj/effect/floor_decal/rust, /turf/simulated/floor/virgo3b, /area/tether/surfacebase/outside/outside1) +"aeq" = ( +/obj/structure/cable/green{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{ + dir = 1 + }, +/obj/machinery/atmospherics/pipe/manifold4w/hidden/supply, +/obj/effect/floor_decal/steeldecal/steel_decals4{ + dir = 5 + }, +/obj/effect/floor_decal/steeldecal/steel_decals4{ + dir = 8 + }, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/turf/simulated/floor/tiled, +/area/hallway/lower/first_west) "aer" = ( /turf/simulated/wall, /area/tether/surfacebase/mining_main/ore) @@ -2042,6 +2552,28 @@ }, /turf/simulated/floor/tiled/steel_grid, /area/tether/surfacebase/mining_main/ore) +"aet" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/obj/effect/floor_decal/borderfloor, +/obj/effect/floor_decal/corner/lightgrey/border, +/obj/effect/floor_decal/borderfloor/corner2, +/obj/effect/floor_decal/corner/lightgrey/bordercorner2, +/obj/effect/floor_decal/steeldecal/steel_decals7{ + dir = 1 + }, +/obj/effect/floor_decal/steeldecal/steel_decals7{ + dir = 8 + }, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/turf/simulated/floor/tiled, +/area/hallway/lower/first_west) "aeu" = ( /obj/machinery/door/airlock/glass_mining{ name = "Mining Operations" @@ -2059,9 +2591,77 @@ }, /turf/simulated/floor/tiled/steel_grid, /area/tether/surfacebase/mining_main/eva) +"aew" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/obj/effect/floor_decal/borderfloor, +/obj/effect/floor_decal/corner/lightgrey/border, +/obj/effect/floor_decal/steeldecal/steel_decals7{ + dir = 8 + }, +/obj/effect/floor_decal/steeldecal/steel_decals7{ + dir = 1 + }, +/obj/effect/floor_decal/borderfloor/corner2{ + dir = 9 + }, +/obj/effect/floor_decal/corner/lightgrey/bordercorner2{ + dir = 9 + }, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/turf/simulated/floor/tiled, +/area/hallway/lower/first_west) "aex" = ( /turf/simulated/wall, /area/maintenance/substation/mining) +"aey" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/obj/effect/floor_decal/steeldecal/steel_decals_central1, +/obj/machinery/door/airlock/multi_tile/glass{ + dir = 1; + name = "West Hallway" + }, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/turf/simulated/floor/tiled/monofloor, +/area/tether/surfacebase/north_stairs_one) +"aez" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/obj/effect/floor_decal/borderfloor, +/obj/effect/floor_decal/corner/lightgrey/border, +/obj/effect/floor_decal/steeldecal/steel_decals7{ + dir = 8 + }, +/obj/effect/floor_decal/steeldecal/steel_decals7{ + dir = 1 + }, +/obj/effect/floor_decal/borderfloor/corner2, +/obj/effect/floor_decal/corner/lightgrey/bordercorner2, +/obj/effect/floor_decal/steeldecal/steel_decals4{ + dir = 1 + }, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/turf/simulated/floor/tiled, +/area/tether/surfacebase/north_stairs_one) "aeA" = ( /obj/machinery/light/small{ dir = 1 @@ -2120,6 +2720,45 @@ "aeF" = ( /turf/simulated/floor/tiled/steel_dirty, /area/tether/surfacebase/mining_main/ore) +"aeG" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/obj/effect/floor_decal/borderfloor, +/obj/effect/floor_decal/corner/lightgrey/border, +/obj/effect/floor_decal/borderfloor/corner2{ + dir = 9 + }, +/obj/effect/floor_decal/corner/lightgrey/bordercorner2{ + dir = 9 + }, +/obj/effect/floor_decal/steeldecal/steel_decals7{ + dir = 8 + }, +/obj/effect/floor_decal/steeldecal/steel_decals7{ + dir = 1 + }, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/turf/simulated/floor/tiled, +/area/tether/surfacebase/north_stairs_one) +"aeH" = ( +/obj/effect/floor_decal/industrial/warning, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/turf/simulated/floor/tiled, +/area/tether/surfacebase/north_stairs_one) "aeI" = ( /obj/machinery/light_switch{ pixel_x = 25 @@ -2130,6 +2769,30 @@ "aeJ" = ( /turf/simulated/wall, /area/tether/surfacebase/mining_main/lobby) +"aeK" = ( +/obj/machinery/light/small, +/obj/effect/floor_decal/industrial/warning/corner{ + dir = 8 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/manifold/hidden/supply, +/obj/effect/floor_decal/borderfloor, +/obj/effect/floor_decal/corner/lightgrey/border, +/obj/effect/floor_decal/borderfloor/corner2, +/obj/effect/floor_decal/corner/lightgrey/bordercorner2, +/obj/effect/floor_decal/steeldecal/steel_decals7{ + dir = 1 + }, +/obj/effect/floor_decal/steeldecal/steel_decals7{ + dir = 8 + }, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/turf/simulated/floor/tiled, +/area/tether/surfacebase/north_stairs_one) "aeL" = ( /obj/effect/floor_decal/borderfloor{ dir = 1 @@ -2168,6 +2831,51 @@ }, /turf/simulated/floor/tiled, /area/tether/surfacebase/mining_main/lobby) +"aeO" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, +/obj/effect/floor_decal/borderfloor, +/obj/effect/floor_decal/corner/lightgrey/border, +/obj/effect/floor_decal/steeldecal/steel_decals7{ + dir = 1 + }, +/obj/effect/floor_decal/steeldecal/steel_decals7{ + dir = 8 + }, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/turf/simulated/floor/tiled, +/area/tether/surfacebase/north_stairs_one) +"aeP" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, +/obj/effect/floor_decal/borderfloor, +/obj/effect/floor_decal/corner/lightgrey/border, +/obj/effect/floor_decal/steeldecal/steel_decals7{ + dir = 1 + }, +/obj/effect/floor_decal/steeldecal/steel_decals7{ + dir = 8 + }, +/obj/structure/extinguisher_cabinet{ + dir = 1; + icon_state = "extinguisher_closed"; + pixel_y = -32 + }, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/turf/simulated/floor/tiled, +/area/tether/surfacebase/north_stairs_one) "aeQ" = ( /obj/structure/disposalpipe/segment{ dir = 4 @@ -2210,16 +2918,23 @@ /turf/simulated/floor/tiled, /area/tether/surfacebase/mining_main/lobby) "aeT" = ( -/obj/structure/table/glass, +/obj/structure/cable{ + icon_state = "1-2" + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/structure/disposalpipe/segment, /obj/effect/floor_decal/borderfloor{ - dir = 1 + dir = 4 }, -/obj/effect/floor_decal/corner/brown/border{ - dir = 1 +/obj/effect/floor_decal/corner/lightgrey/border{ + dir = 4 + }, +/obj/machinery/camera/network/tether{ + dir = 9 }, -/obj/machinery/camera/network/mining, /turf/simulated/floor/tiled, -/area/tether/surfacebase/mining_main/lobby) +/area/tether/surfacebase/public_garden) "aeU" = ( /obj/machinery/atmospherics/pipe/simple/hidden/supply{ dir = 4 @@ -2241,6 +2956,32 @@ "aeW" = ( /turf/simulated/wall, /area/storage/primary) +"aeX" = ( +/obj/structure/cable{ + icon_state = "0-4" + }, +/obj/machinery/power/apc{ + dir = 2; + name = "south bump"; + pixel_y = -28 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers, +/obj/effect/floor_decal/borderfloor, +/obj/effect/floor_decal/corner/lightgrey/border, +/obj/effect/floor_decal/steeldecal/steel_decals7{ + dir = 1 + }, +/obj/effect/floor_decal/steeldecal/steel_decals7{ + dir = 8 + }, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/turf/simulated/floor/tiled, +/area/tether/surfacebase/north_stairs_one) "aeY" = ( /obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ dir = 5 @@ -2270,6 +3011,32 @@ /obj/machinery/hologram/holopad, /turf/simulated/floor/tiled, /area/tether/surfacebase/mining_main/storage) +"afa" = ( +/obj/structure/cable{ + d1 = 4; + d2 = 8; + icon_state = "4-8"; + pixel_x = 0 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/obj/effect/floor_decal/borderfloor, +/obj/effect/floor_decal/corner/lightgrey/border, +/obj/effect/floor_decal/steeldecal/steel_decals7{ + dir = 1 + }, +/obj/effect/floor_decal/steeldecal/steel_decals7{ + dir = 8 + }, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/turf/simulated/floor/tiled, +/area/tether/surfacebase/north_stairs_one) "afb" = ( /obj/machinery/atmospherics/pipe/manifold4w/hidden/supply, /obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{ @@ -2282,6 +3049,41 @@ }, /turf/simulated/floor/tiled, /area/tether/surfacebase/mining_main/storage) +"afc" = ( +/obj/structure/cable{ + d1 = 4; + d2 = 8; + icon_state = "4-8"; + pixel_x = 0 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/obj/effect/floor_decal/borderfloor, +/obj/effect/floor_decal/corner/lightgrey/border, +/obj/effect/floor_decal/borderfloor/corner2{ + dir = 9 + }, +/obj/effect/floor_decal/corner/lightgrey/bordercorner2{ + dir = 9 + }, +/obj/effect/floor_decal/steeldecal/steel_decals4{ + dir = 10 + }, +/obj/effect/floor_decal/steeldecal/steel_decals7{ + dir = 1 + }, +/obj/effect/floor_decal/steeldecal/steel_decals7{ + dir = 8 + }, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/turf/simulated/floor/tiled, +/area/tether/surfacebase/north_stairs_one) "afd" = ( /turf/simulated/floor/tiled/techfloor, /area/maintenance/lower/mining_eva) @@ -2313,6 +3115,33 @@ }, /turf/simulated/floor/tiled, /area/tether/surfacebase/mining_main/storage) +"afh" = ( +/obj/effect/floor_decal/spline/plain{ + dir = 4 + }, +/obj/machinery/door/firedoor/glass, +/obj/structure/cable{ + d1 = 4; + d2 = 8; + icon_state = "4-8"; + pixel_x = 0 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/obj/machinery/door/airlock/multi_tile/glass{ + dir = 1; + name = "West Hallway" + }, +/obj/effect/floor_decal/steeldecal/steel_decals_central1, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/turf/simulated/floor/tiled/monofloor, +/area/tether/surfacebase/atrium_one) "afi" = ( /obj/effect/floor_decal/steeldecal/steel_decals6{ dir = 1 @@ -2378,6 +3207,25 @@ "afo" = ( /turf/simulated/floor/tiled, /area/tether/surfacebase/mining_main/lobby) +"afp" = ( +/obj/structure/cable{ + d1 = 4; + d2 = 8; + icon_state = "4-8"; + pixel_x = 0 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 10 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 10 + }, +/obj/effect/floor_decal/steeldecal/steel_decals6{ + dir = 6 + }, +/obj/structure/disposalpipe/junction, +/turf/simulated/floor/tiled, +/area/tether/surfacebase/atrium_one) "afq" = ( /obj/effect/decal/cleanable/dirt, /turf/simulated/floor/virgo3b, @@ -2390,6 +3238,17 @@ /obj/random/tech_supply, /turf/simulated/floor/tiled, /area/storage/primary) +"afs" = ( +/obj/structure/table/glass, +/obj/effect/floor_decal/borderfloor{ + dir = 1 + }, +/obj/effect/floor_decal/corner/brown/border{ + dir = 1 + }, +/obj/machinery/camera/network/cargo, +/turf/simulated/floor/tiled, +/area/tether/surfacebase/mining_main/lobby) "aft" = ( /obj/machinery/camera/network/civilian{ dir = 2 @@ -2431,6 +3290,33 @@ }, /turf/simulated/floor/tiled, /area/storage/primary) +"afx" = ( +/obj/effect/floor_decal/borderfloor{ + dir = 8 + }, +/obj/effect/floor_decal/corner/brown/border{ + dir = 8 + }, +/obj/effect/floor_decal/borderfloor/corner2{ + dir = 8 + }, +/obj/effect/floor_decal/corner/brown/bordercorner2{ + dir = 8 + }, +/obj/effect/floor_decal/steeldecal/steel_decals4{ + dir = 4 + }, +/obj/effect/floor_decal/steeldecal/steel_decals7{ + dir = 5 + }, +/obj/effect/floor_decal/steeldecal/steel_decals7{ + dir = 6 + }, +/obj/machinery/camera/network/cargo{ + dir = 4 + }, +/turf/simulated/floor/tiled, +/area/tether/surfacebase/mining_main/lobby) "afy" = ( /obj/machinery/atmospherics/pipe/simple/hidden/supply{ dir = 4 @@ -2449,6 +3335,20 @@ }, /turf/simulated/floor/tiled/steel_grid, /area/tether/surfacebase/mining_main/eva) +"afz" = ( +/obj/effect/floor_decal/borderfloor{ + dir = 1 + }, +/obj/effect/floor_decal/corner/lightgrey/border{ + dir = 1 + }, +/obj/effect/floor_decal/steeldecal/steel_decals7, +/obj/effect/floor_decal/steeldecal/steel_decals7{ + dir = 4 + }, +/obj/machinery/camera/network/tether, +/turf/simulated/floor/tiled, +/area/hallway/lower/first_west) "afA" = ( /obj/structure/catwalk, /turf/simulated/floor/tiled/techfloor, @@ -2511,6 +3411,20 @@ /obj/machinery/hologram/holopad, /turf/simulated/floor/tiled, /area/tether/surfacebase/mining_main/eva) +"afG" = ( +/obj/structure/bed/chair, +/obj/machinery/camera/network/civilian, +/turf/simulated/floor/tiled, +/area/tether/surfacebase/tram) +"afH" = ( +/obj/effect/floor_decal/techfloor/orange{ + dir = 4 + }, +/obj/machinery/camera/network/civilian{ + dir = 9 + }, +/turf/simulated/floor/tiled/techfloor/grid, +/area/tether/surfacebase/tram) "afI" = ( /obj/machinery/atmospherics/pipe/manifold4w/hidden/supply, /obj/machinery/atmospherics/pipe/manifold4w/hidden/scrubbers, @@ -2651,6 +3565,18 @@ "afT" = ( /turf/simulated/floor/tiled, /area/storage/primary) +"afU" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/obj/structure/disposalpipe/segment{ + dir = 8; + icon_state = "pipe-c" + }, +/obj/machinery/camera/network/civilian{ + dir = 4 + }, +/turf/simulated/floor/tiled, +/area/tether/surfacebase/tram) "afV" = ( /obj/machinery/atmospherics/unary/vent_pump/on, /turf/simulated/floor/tiled, @@ -2665,6 +3591,45 @@ }, /turf/simulated/floor, /area/maintenance/substation/mining) +"afY" = ( +/obj/machinery/camera/network/civilian, +/turf/simulated/floor/tiled, +/area/tether/surfacebase/tram) +"afZ" = ( +/obj/effect/floor_decal/borderfloor{ + dir = 8 + }, +/obj/effect/floor_decal/corner/grey/border{ + icon_state = "bordercolor"; + dir = 8 + }, +/obj/effect/floor_decal/borderfloor/corner2{ + dir = 10 + }, +/turf/simulated/floor/tiled, +/area/crew_quarters/visitor_laundry) +"aga" = ( +/obj/effect/floor_decal/borderfloor{ + dir = 4 + }, +/obj/effect/floor_decal/corner/grey/border{ + icon_state = "bordercolor"; + dir = 4 + }, +/obj/machinery/vending/coffee, +/obj/machinery/camera/network/civilian{ + dir = 9 + }, +/turf/simulated/floor/tiled, +/area/crew_quarters/visitor_laundry) +"agb" = ( +/turf/simulated/shuttle/wall/voidcraft/green{ + hard_corner = 1 + }, +/area/tether/elevator) +"agc" = ( +/turf/simulated/floor/holofloor/tiled/dark, +/area/tether/elevator) "agd" = ( /obj/random/trash_pile, /turf/simulated/floor/tiled/techfloor, @@ -2689,6 +3654,18 @@ /obj/machinery/light, /turf/simulated/floor/tiled/steel_dirty, /area/tether/surfacebase/mining_main/ore) +"agh" = ( +/obj/turbolift_map_holder/tether{ + dir = 4 + }, +/turf/simulated/floor/holofloor/tiled/dark, +/area/tether/elevator) +"agi" = ( +/obj/structure/sign/deck/first, +/turf/simulated/shuttle/wall/voidcraft/green{ + hard_corner = 1 + }, +/area/tether/elevator) "agj" = ( /obj/effect/floor_decal/borderfloor{ dir = 10 @@ -2708,6 +3685,10 @@ }, /turf/simulated/floor/tiled, /area/tether/surfacebase/mining_main/lobby) +"agk" = ( +/obj/machinery/portable_atmospherics/canister/oxygen, +/turf/simulated/floor/tiled, +/area/rnd/xenoarch_storage) "agl" = ( /obj/structure/disposalpipe/segment{ dir = 4 @@ -2735,6 +3716,15 @@ /obj/effect/floor_decal/corner/brown/border, /turf/simulated/floor/tiled, /area/tether/surfacebase/mining_main/lobby) +"agp" = ( +/obj/machinery/alarm{ + dir = 4; + icon_state = "alarm0"; + pixel_x = -22 + }, +/obj/machinery/suspension_gen, +/turf/simulated/floor/tiled, +/area/rnd/xenoarch_storage) "agq" = ( /obj/structure/bed/chair{ dir = 1 @@ -2749,10 +3739,46 @@ /obj/effect/floor_decal/corner/brown/border, /turf/simulated/floor/tiled, /area/tether/surfacebase/mining_main/lobby) +"ags" = ( +/obj/machinery/light{ + dir = 4 + }, +/obj/structure/table/rack, +/obj/item/clothing/mask/gas, +/obj/item/clothing/suit/storage/hooded/wintercoat/science, +/obj/item/weapon/tank/emergency/oxygen/engi, +/obj/item/clothing/mask/gas, +/obj/item/clothing/suit/storage/hooded/wintercoat/science, +/obj/item/weapon/tank/emergency/oxygen/engi, +/turf/simulated/floor/tiled, +/area/rnd/xenoarch_storage) +"agt" = ( +/obj/structure/table/rack, +/obj/item/device/suit_cooling_unit, +/obj/item/device/suit_cooling_unit, +/turf/simulated/floor/tiled, +/area/rnd/xenoarch_storage) "agu" = ( /obj/machinery/atmospherics/pipe/simple/hidden/supply, /turf/simulated/floor/tiled, /area/storage/primary) +"agv" = ( +/turf/simulated/wall/r_wall, +/area/rnd/chemistry_lab) +"agw" = ( +/obj/structure/cable/green{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 9 + }, +/obj/machinery/camera/network/research{ + dir = 1 + }, +/turf/simulated/floor/tiled, +/area/rnd/xenoarch_storage) "agx" = ( /obj/machinery/door/firedoor/glass, /obj/effect/floor_decal/steeldecal/steel_decals_central1{ @@ -2793,32 +3819,20 @@ /turf/simulated/floor/tiled, /area/storage/primary) "agC" = ( -/obj/effect/floor_decal/borderfloor{ - dir = 8 +/obj/structure/cable/green{ + d1 = 1; + d2 = 2; + icon_state = "1-2" }, -/obj/effect/floor_decal/corner/brown/border{ - dir = 8 +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/obj/machinery/door/firedoor/glass, +/obj/machinery/door/airlock/glass_research{ + name = "Xenoarch Storage"; + req_access = list(65) }, -/obj/effect/floor_decal/borderfloor/corner2{ - dir = 8 - }, -/obj/effect/floor_decal/corner/brown/bordercorner2{ - dir = 8 - }, -/obj/machinery/camera/network/mining{ - dir = 4 - }, -/obj/effect/floor_decal/steeldecal/steel_decals4{ - dir = 4 - }, -/obj/effect/floor_decal/steeldecal/steel_decals7{ - dir = 5 - }, -/obj/effect/floor_decal/steeldecal/steel_decals7{ - dir = 6 - }, -/turf/simulated/floor/tiled, -/area/tether/surfacebase/mining_main/lobby) +/turf/simulated/floor/tiled/steel_grid, +/area/rnd/xenoarch_storage) "agD" = ( /obj/effect/floor_decal/borderfloor{ dir = 4 @@ -2900,6 +3914,17 @@ }, /turf/simulated/floor/tiled, /area/storage/primary) +"agL" = ( +/obj/structure/table/glass, +/obj/item/weapon/storage/box/beakers, +/obj/effect/floor_decal/borderfloor{ + dir = 9 + }, +/obj/effect/floor_decal/corner/mauve/border{ + dir = 9 + }, +/turf/simulated/floor/tiled/white, +/area/rnd/chemistry_lab) "agM" = ( /turf/simulated/wall, /area/tether/surfacebase/atrium_one) @@ -2921,6 +3946,22 @@ }, /turf/simulated/floor/tiled, /area/tether/surfacebase/mining_main/lobby) +"agO" = ( +/obj/structure/table/glass, +/obj/machinery/status_display{ + layer = 4; + pixel_x = 0; + pixel_y = 32 + }, +/obj/effect/floor_decal/borderfloor{ + dir = 1; + pixel_y = 0 + }, +/obj/effect/floor_decal/corner/mauve/border{ + dir = 1 + }, +/turf/simulated/floor/tiled/white, +/area/rnd/chemistry_lab) "agP" = ( /obj/structure/catwalk, /obj/effect/decal/cleanable/dirt, @@ -2941,6 +3982,18 @@ /obj/random/trash_pile, /turf/simulated/floor/plating, /area/maintenance/lower/trash_pit) +"agR" = ( +/obj/structure/table/glass, +/obj/item/weapon/tool/screwdriver, +/obj/effect/floor_decal/borderfloor{ + dir = 1; + pixel_y = 0 + }, +/obj/effect/floor_decal/corner/mauve/border{ + dir = 1 + }, +/turf/simulated/floor/tiled/white, +/area/rnd/chemistry_lab) "agS" = ( /obj/structure/railing{ dir = 1 @@ -2963,6 +4016,53 @@ "agU" = ( /turf/simulated/wall, /area/storage/surface_eva) +"agV" = ( +/obj/structure/closet/crate, +/obj/item/weapon/grenade/chem_grenade, +/obj/item/weapon/grenade/chem_grenade, +/obj/item/weapon/grenade/chem_grenade, +/obj/item/device/assembly/timer, +/obj/item/device/assembly/timer, +/obj/item/device/assembly/timer, +/obj/item/device/assembly/igniter, +/obj/item/device/assembly/igniter, +/obj/item/device/assembly/igniter, +/obj/structure/cable/green{ + icon_state = "0-2" + }, +/obj/machinery/power/apc{ + dir = 1; + name = "north bump"; + pixel_x = 0; + pixel_y = 28 + }, +/obj/effect/floor_decal/borderfloor{ + dir = 5 + }, +/obj/effect/floor_decal/corner/mauve/border{ + dir = 5 + }, +/obj/effect/floor_decal/borderfloor/corner2{ + dir = 5 + }, +/obj/effect/floor_decal/corner/mauve/bordercorner2{ + dir = 5 + }, +/turf/simulated/floor/tiled/white, +/area/rnd/chemistry_lab) +"agW" = ( +/obj/machinery/disposal, +/obj/structure/disposalpipe/trunk{ + dir = 4 + }, +/obj/effect/floor_decal/borderfloor{ + dir = 8 + }, +/obj/effect/floor_decal/corner/mauve/border{ + dir = 8 + }, +/turf/simulated/floor/tiled/white, +/area/rnd/chemistry_lab) "agX" = ( /obj/effect/floor_decal/industrial/hatch/yellow, /turf/simulated/floor/tiled, @@ -2971,6 +4071,21 @@ /obj/effect/floor_decal/industrial/outline/yellow, /turf/simulated/floor/tiled, /area/storage/primary) +"agZ" = ( +/obj/structure/bed/chair/office/light{ + dir = 1 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 6 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 6 + }, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/turf/simulated/floor/tiled/white, +/area/rnd/chemistry_lab) "aha" = ( /obj/structure/catwalk, /obj/machinery/atmospherics/pipe/simple/visible/scrubbers, @@ -3045,6 +4160,18 @@ }, /turf/simulated/floor/tiled, /area/tether/surfacebase/mining_main/lobby) +"ahf" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/turf/simulated/floor/tiled/white, +/area/rnd/chemistry_lab) "ahg" = ( /obj/effect/decal/cleanable/dirt, /obj/effect/floor_decal/rust, @@ -3054,6 +4181,27 @@ /obj/random/tool, /turf/simulated/floor/plating, /area/maintenance/lower/trash_pit) +"ahh" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/structure/cable/green{ + d1 = 1; + d2 = 4; + icon_state = "1-4" + }, +/obj/effect/floor_decal/steeldecal/steel_decals4{ + dir = 10 + }, +/obj/effect/floor_decal/steeldecal/steel_decals4, +/turf/simulated/floor/tiled/white, +/area/rnd/chemistry_lab) "ahi" = ( /obj/structure/table/rack{ dir = 4 @@ -3145,6 +4293,27 @@ /obj/effect/floor_decal/rust, /turf/simulated/floor/tiled/techfloor, /area/maintenance/lower/mining_eva) +"aht" = ( +/obj/machinery/door/firedoor/glass, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/structure/cable/green{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/obj/machinery/door/airlock/glass_research{ + name = "Chemical Research" + }, +/turf/simulated/floor/tiled/white, +/area/rnd/chemistry_lab) "ahu" = ( /obj/structure/grille, /obj/structure/railing, @@ -3248,21 +4417,19 @@ /turf/simulated/floor/tiled, /area/hallway/lower/first_west) "ahH" = ( -/obj/machinery/camera/network/civilian{ - dir = 2 - }, +/obj/machinery/chemical_analyzer, /obj/effect/floor_decal/borderfloor{ - dir = 1 + dir = 8 }, -/obj/effect/floor_decal/corner/lightgrey/border{ - dir = 1 +/obj/effect/floor_decal/corner/mauve/border{ + dir = 8 }, -/obj/effect/floor_decal/steeldecal/steel_decals7, -/obj/effect/floor_decal/steeldecal/steel_decals7{ - dir = 4 +/obj/machinery/light{ + icon_state = "tube1"; + dir = 8 }, -/turf/simulated/floor/tiled, -/area/hallway/lower/first_west) +/turf/simulated/floor/tiled/white, +/area/rnd/chemistry_lab) "ahI" = ( /obj/machinery/status_display{ pixel_y = 30 @@ -3362,8 +4529,36 @@ }, /turf/simulated/floor/tiled, /area/hallway/lower/first_west) +"ahO" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/turf/simulated/floor/tiled/white, +/area/rnd/chemistry_lab) +"ahP" = ( +/turf/simulated/floor/tiled/white, +/area/rnd/chemistry_lab) +"ahQ" = ( +/obj/machinery/alarm{ + dir = 8; + icon_state = "alarm0"; + pixel_x = 24 + }, +/obj/effect/floor_decal/borderfloor{ + dir = 4 + }, +/obj/effect/floor_decal/corner/mauve/border{ + dir = 4 + }, +/obj/effect/floor_decal/borderfloor/corner2{ + dir = 6 + }, +/obj/effect/floor_decal/corner/mauve/bordercorner2{ + dir = 6 + }, +/turf/simulated/floor/tiled/white, +/area/rnd/chemistry_lab) "ahR" = ( -/obj/machinery/camera/network/northern_star, +/obj/machinery/camera/network/tether, /obj/effect/floor_decal/borderfloor{ dir = 1 }, @@ -3395,6 +4590,16 @@ }, /turf/simulated/floor/tiled, /area/hallway/lower/first_west) +"ahT" = ( +/obj/effect/floor_decal/borderfloor{ + dir = 6 + }, +/obj/effect/floor_decal/corner/mauve/border{ + dir = 6 + }, +/obj/structure/closet/firecloset, +/turf/simulated/floor/tiled, +/area/rnd/hallway) "ahU" = ( /obj/effect/floor_decal/borderfloor{ dir = 1 @@ -3467,6 +4672,24 @@ }, /turf/simulated/wall, /area/tether/surfacebase/north_stairs_one) +"aib" = ( +/obj/structure/table/glass, +/obj/item/weapon/storage/fancy/vials, +/obj/item/device/reagent_scanner, +/obj/machinery/atmospherics/unary/vent_scrubber/on{ + dir = 4 + }, +/obj/machinery/camera/network/research{ + dir = 4 + }, +/obj/effect/floor_decal/borderfloor{ + dir = 8 + }, +/obj/effect/floor_decal/corner/mauve/border{ + dir = 8 + }, +/turf/simulated/floor/tiled/white, +/area/rnd/chemistry_lab) "aic" = ( /obj/machinery/atm{ pixel_y = 31 @@ -3531,7 +4754,7 @@ /obj/structure/disposalpipe/segment{ dir = 4 }, -/obj/machinery/camera/network/northern_star, +/obj/machinery/camera/network/tether, /obj/effect/floor_decal/corner/lightgrey/border{ dir = 1 }, @@ -3592,6 +4815,13 @@ }, /turf/simulated/floor/tiled, /area/tether/surfacebase/atrium_one) +"aij" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 9 + }, +/turf/simulated/floor/tiled/white, +/area/rnd/chemistry_lab) "aik" = ( /obj/effect/floor_decal/borderfloor{ dir = 1 @@ -3635,6 +4865,20 @@ }, /turf/simulated/floor/tiled, /area/tether/surfacebase/atrium_one) +"ain" = ( +/obj/machinery/chem_master, +/obj/effect/floor_decal/borderfloor{ + dir = 4 + }, +/obj/effect/floor_decal/corner/mauve/border{ + dir = 4 + }, +/obj/machinery/light{ + dir = 4; + icon_state = "tube1" + }, +/turf/simulated/floor/tiled/white, +/area/rnd/chemistry_lab) "aio" = ( /obj/effect/floor_decal/borderfloor{ dir = 1 @@ -3645,13 +4889,28 @@ /obj/structure/disposalpipe/segment{ dir = 4 }, -/obj/machinery/camera/network/northern_star, +/obj/machinery/camera/network/tether, /obj/effect/floor_decal/steeldecal/steel_decals7{ dir = 4 }, /obj/effect/floor_decal/steeldecal/steel_decals7, /turf/simulated/floor/tiled, /area/tether/surfacebase/atrium_one) +"aip" = ( +/obj/structure/table/glass, +/obj/item/weapon/storage/box/beakers, +/obj/item/clothing/glasses/science, +/obj/machinery/atmospherics/unary/vent_pump/on{ + dir = 4 + }, +/obj/effect/floor_decal/borderfloor{ + dir = 8 + }, +/obj/effect/floor_decal/corner/mauve/border{ + dir = 8 + }, +/turf/simulated/floor/tiled/white, +/area/rnd/chemistry_lab) "aiq" = ( /obj/effect/floor_decal/borderfloor, /obj/effect/floor_decal/corner/brown/border, @@ -3676,6 +4935,13 @@ }, /turf/simulated/floor/tiled, /area/tether/surfacebase/atrium_one) +"ais" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 9; + pixel_y = 0 + }, +/turf/simulated/floor/tiled/white, +/area/rnd/chemistry_lab) "ait" = ( /obj/machinery/portable_atmospherics/powered/pump/filled, /obj/effect/floor_decal/industrial/outline/blue, @@ -3801,6 +5067,69 @@ }, /turf/simulated/floor/plating, /area/maintenance/lower/trash_pit) +"aiH" = ( +/obj/structure/bed/chair/office/light{ + dir = 4 + }, +/turf/simulated/floor/tiled/white, +/area/rnd/chemistry_lab) +"aiI" = ( +/obj/structure/table/glass, +/obj/machinery/chemical_dispenser/full, +/obj/effect/floor_decal/borderfloor{ + dir = 4 + }, +/obj/effect/floor_decal/corner/mauve/border{ + dir = 4 + }, +/turf/simulated/floor/tiled/white, +/area/rnd/chemistry_lab) +"aiJ" = ( +/obj/structure/table/glass, +/obj/item/weapon/storage/box/syringes, +/obj/item/weapon/reagent_containers/spray/cleaner, +/obj/effect/floor_decal/borderfloor{ + dir = 10 + }, +/obj/effect/floor_decal/corner/mauve/border{ + dir = 10 + }, +/turf/simulated/floor/tiled/white, +/area/rnd/chemistry_lab) +"aiK" = ( +/obj/structure/table/glass, +/obj/machinery/reagentgrinder, +/obj/effect/floor_decal/borderfloor, +/obj/effect/floor_decal/corner/mauve/border, +/turf/simulated/floor/tiled/white, +/area/rnd/chemistry_lab) +"aiL" = ( +/obj/structure/table/glass, +/obj/item/weapon/reagent_containers/glass/beaker/large, +/obj/item/weapon/reagent_containers/dropper, +/obj/machinery/firealarm{ + dir = 1; + pixel_x = 0; + pixel_y = -25 + }, +/obj/effect/floor_decal/borderfloor, +/obj/effect/floor_decal/corner/mauve/border, +/turf/simulated/floor/tiled/white, +/area/rnd/chemistry_lab) +"aiM" = ( +/obj/structure/table/glass, +/obj/item/weapon/storage/box/beakers{ + pixel_x = 2; + pixel_y = 2 + }, +/obj/effect/floor_decal/borderfloor{ + dir = 6 + }, +/obj/effect/floor_decal/corner/mauve/border{ + dir = 6 + }, +/turf/simulated/floor/tiled/white, +/area/rnd/chemistry_lab) "aiN" = ( /obj/structure/disposalpipe/segment{ dir = 4 @@ -3856,6 +5185,18 @@ }, /turf/simulated/floor/tiled, /area/tether/surfacebase/north_stairs_one) +"aiR" = ( +/obj/effect/floor_decal/borderfloor{ + dir = 1 + }, +/obj/effect/floor_decal/corner/mauve/border{ + dir = 1 + }, +/obj/machinery/light_switch{ + pixel_y = 25 + }, +/turf/simulated/floor/tiled, +/area/rnd/xenobiology/xenoflora) "aiS" = ( /obj/machinery/alarm{ pixel_y = 22 @@ -3892,6 +5233,17 @@ }, /turf/simulated/floor/tiled/techfloor, /area/maintenance/lower/mining_eva) +"aiU" = ( +/obj/machinery/door/firedoor/glass, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/machinery/door/airlock/glass_research{ + name = "Xenoflora Research"; + req_access = list(55) + }, +/turf/simulated/floor/tiled/steel_grid, +/area/rnd/xenobiology/xenoflora) "aiV" = ( /obj/structure/disposalpipe/segment{ dir = 4 @@ -3908,6 +5260,14 @@ /obj/effect/floor_decal/steeldecal/steel_decals7, /turf/simulated/floor/tiled, /area/tether/surfacebase/north_stairs_one) +"aiW" = ( +/obj/machinery/door/firedoor/glass, +/obj/machinery/door/airlock/glass_research{ + name = "Xenoflora Research"; + req_access = list(55) + }, +/turf/simulated/floor/tiled/steel_grid, +/area/rnd/xenobiology/xenoflora) "aiX" = ( /obj/machinery/atmospherics/unary/vent_scrubber/on, /obj/structure/disposalpipe/segment{ @@ -3999,6 +5359,37 @@ }, /turf/simulated/floor/tiled, /area/tether/surfacebase/mining_main/storage) +"ajc" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/obj/machinery/door/firedoor/glass, +/obj/structure/cable/green{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/obj/machinery/door/airlock/glass_research{ + name = "Xenoflora Research"; + req_access = list(55) + }, +/turf/simulated/floor/tiled/steel_grid, +/area/rnd/xenobiology/xenoflora) +"ajd" = ( +/obj/effect/floor_decal/borderfloor{ + dir = 1 + }, +/obj/effect/floor_decal/corner/mauve/border{ + dir = 1 + }, +/obj/item/device/radio/intercom{ + dir = 1; + pixel_y = 24; + req_access = list() + }, +/obj/structure/table/glass, +/obj/machinery/chemical_dispenser/xenoflora/full, +/turf/simulated/floor/tiled, +/area/rnd/xenobiology/xenoflora) "aje" = ( /obj/item/stack/flag/green{ pixel_x = -4; @@ -4018,6 +5409,39 @@ /obj/item/weapon/storage/box/nifsofts_mining, /turf/simulated/floor/tiled, /area/tether/surfacebase/mining_main/storage) +"ajf" = ( +/obj/structure/cable/cyan{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/obj/machinery/alarm{ + breach_detection = 0; + dir = 8; + icon_state = "alarm0"; + pixel_x = 25; + rcon_setting = 3; + report_danger_level = 0 + }, +/turf/simulated/floor/tiled/steel_dirty/virgo3b, +/area/engineering/atmos/intake) +"ajg" = ( +/obj/structure/cable/cyan{ + d1 = 1; + d2 = 4; + icon_state = "1-4" + }, +/obj/machinery/atmospherics/unary/vent_scrubber{ + dir = 4 + }, +/turf/simulated/floor/tiled/steel_dirty/virgo3b, +/area/engineering/atmos/intake) +"ajh" = ( +/obj/machinery/atmospherics/unary/vent_scrubber{ + dir = 4 + }, +/turf/simulated/floor/tiled/steel_dirty/virgo3b, +/area/engineering/atmos/intake) "aji" = ( /obj/effect/floor_decal/borderfloor{ dir = 6 @@ -4169,246 +5593,6 @@ }, /turf/simulated/floor/tiled, /area/hallway/lower/first_west) -"ajx" = ( -/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ - dir = 4 - }, -/obj/machinery/atmospherics/pipe/simple/hidden/supply{ - dir = 4 - }, -/obj/effect/floor_decal/borderfloor, -/obj/effect/floor_decal/corner/lightgrey/border, -/obj/effect/floor_decal/borderfloor/corner2, -/obj/effect/floor_decal/corner/lightgrey/bordercorner2, -/obj/effect/floor_decal/steeldecal/steel_decals7{ - dir = 8 - }, -/obj/effect/floor_decal/steeldecal/steel_decals7{ - dir = 1 - }, -/turf/simulated/floor/tiled, -/area/hallway/lower/first_west) -"ajy" = ( -/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ - dir = 4 - }, -/obj/machinery/atmospherics/pipe/simple/hidden/supply{ - dir = 4 - }, -/obj/effect/floor_decal/borderfloor, -/obj/effect/floor_decal/corner/lightgrey/border, -/obj/effect/floor_decal/steeldecal/steel_decals7{ - dir = 8 - }, -/obj/effect/floor_decal/steeldecal/steel_decals7{ - dir = 1 - }, -/turf/simulated/floor/tiled, -/area/hallway/lower/first_west) -"ajz" = ( -/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ - dir = 4 - }, -/obj/effect/floor_decal/borderfloor, -/obj/effect/floor_decal/corner/lightgrey/border, -/obj/machinery/atmospherics/pipe/manifold/hidden/supply, -/obj/effect/floor_decal/steeldecal/steel_decals7{ - dir = 8 - }, -/obj/effect/floor_decal/steeldecal/steel_decals7{ - dir = 1 - }, -/obj/machinery/light, -/turf/simulated/floor/tiled, -/area/hallway/lower/first_west) -"ajB" = ( -/obj/machinery/atmospherics/pipe/simple/hidden/supply{ - dir = 4 - }, -/obj/effect/floor_decal/borderfloor, -/obj/effect/floor_decal/corner/lightgrey/border, -/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers, -/obj/effect/floor_decal/steeldecal/steel_decals7{ - dir = 8 - }, -/obj/effect/floor_decal/steeldecal/steel_decals7{ - dir = 1 - }, -/turf/simulated/floor/tiled, -/area/hallway/lower/first_west) -"ajC" = ( -/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers, -/obj/machinery/atmospherics/pipe/simple/hidden/supply{ - dir = 4 - }, -/obj/effect/floor_decal/borderfloor, -/obj/effect/floor_decal/corner/lightgrey/border, -/obj/effect/floor_decal/steeldecal/steel_decals7{ - dir = 8 - }, -/obj/effect/floor_decal/steeldecal/steel_decals7{ - dir = 1 - }, -/turf/simulated/floor/tiled, -/area/hallway/lower/first_west) -"ajD" = ( -/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ - dir = 4 - }, -/obj/machinery/atmospherics/pipe/simple/hidden/supply{ - dir = 4 - }, -/obj/effect/floor_decal/borderfloor, -/obj/effect/floor_decal/corner/lightgrey/border, -/obj/effect/floor_decal/borderfloor/corner2{ - dir = 9 - }, -/obj/effect/floor_decal/corner/lightgrey/bordercorner2{ - dir = 9 - }, -/obj/effect/floor_decal/steeldecal/steel_decals7{ - dir = 8 - }, -/obj/effect/floor_decal/steeldecal/steel_decals7{ - dir = 1 - }, -/turf/simulated/floor/tiled, -/area/hallway/lower/first_west) -"ajF" = ( -/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ - dir = 4 - }, -/obj/machinery/atmospherics/pipe/simple/hidden/supply{ - dir = 4 - }, -/obj/effect/floor_decal/borderfloor, -/obj/effect/floor_decal/corner/lightgrey/border, -/obj/effect/floor_decal/borderfloor/corner2, -/obj/effect/floor_decal/corner/lightgrey/bordercorner2, -/obj/effect/floor_decal/steeldecal/steel_decals7{ - dir = 1 - }, -/obj/effect/floor_decal/steeldecal/steel_decals7{ - dir = 8 - }, -/turf/simulated/floor/tiled, -/area/hallway/lower/first_west) -"ajG" = ( -/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ - dir = 4 - }, -/obj/machinery/atmospherics/pipe/simple/hidden/supply{ - dir = 4 - }, -/obj/effect/floor_decal/borderfloor, -/obj/effect/floor_decal/corner/lightgrey/border, -/obj/effect/floor_decal/steeldecal/steel_decals7{ - dir = 8 - }, -/obj/effect/floor_decal/steeldecal/steel_decals7{ - dir = 1 - }, -/obj/effect/floor_decal/borderfloor/corner2{ - dir = 9 - }, -/obj/effect/floor_decal/corner/lightgrey/bordercorner2{ - dir = 9 - }, -/turf/simulated/floor/tiled, -/area/hallway/lower/first_west) -"ajI" = ( -/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ - dir = 4 - }, -/obj/machinery/atmospherics/pipe/simple/hidden/supply{ - dir = 4 - }, -/obj/effect/floor_decal/borderfloor, -/obj/effect/floor_decal/corner/lightgrey/border, -/obj/effect/floor_decal/steeldecal/steel_decals7{ - dir = 8 - }, -/obj/effect/floor_decal/steeldecal/steel_decals7{ - dir = 1 - }, -/obj/effect/floor_decal/borderfloor/corner2, -/obj/effect/floor_decal/corner/lightgrey/bordercorner2, -/obj/effect/floor_decal/steeldecal/steel_decals4{ - dir = 1 - }, -/turf/simulated/floor/tiled, -/area/tether/surfacebase/north_stairs_one) -"ajJ" = ( -/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ - dir = 4 - }, -/obj/machinery/atmospherics/pipe/simple/hidden/supply{ - dir = 4 - }, -/obj/effect/floor_decal/borderfloor, -/obj/effect/floor_decal/corner/lightgrey/border, -/obj/effect/floor_decal/borderfloor/corner2{ - dir = 9 - }, -/obj/effect/floor_decal/corner/lightgrey/bordercorner2{ - dir = 9 - }, -/obj/effect/floor_decal/steeldecal/steel_decals7{ - dir = 8 - }, -/obj/effect/floor_decal/steeldecal/steel_decals7{ - dir = 1 - }, -/turf/simulated/floor/tiled, -/area/tether/surfacebase/north_stairs_one) -"ajK" = ( -/obj/effect/floor_decal/industrial/warning, -/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ - dir = 4 - }, -/obj/machinery/atmospherics/pipe/simple/hidden/supply{ - dir = 4 - }, -/turf/simulated/floor/tiled, -/area/tether/surfacebase/north_stairs_one) -"ajL" = ( -/obj/machinery/light/small, -/obj/effect/floor_decal/industrial/warning/corner{ - dir = 8 - }, -/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ - dir = 4 - }, -/obj/machinery/atmospherics/pipe/manifold/hidden/supply, -/obj/effect/floor_decal/borderfloor, -/obj/effect/floor_decal/corner/lightgrey/border, -/obj/effect/floor_decal/borderfloor/corner2, -/obj/effect/floor_decal/corner/lightgrey/bordercorner2, -/obj/effect/floor_decal/steeldecal/steel_decals7{ - dir = 1 - }, -/obj/effect/floor_decal/steeldecal/steel_decals7{ - dir = 8 - }, -/turf/simulated/floor/tiled, -/area/tether/surfacebase/north_stairs_one) -"ajM" = ( -/obj/machinery/atmospherics/pipe/simple/hidden/supply{ - dir = 4 - }, -/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ - dir = 4 - }, -/obj/effect/floor_decal/borderfloor, -/obj/effect/floor_decal/corner/lightgrey/border, -/obj/effect/floor_decal/steeldecal/steel_decals7{ - dir = 1 - }, -/obj/effect/floor_decal/steeldecal/steel_decals7{ - dir = 8 - }, -/turf/simulated/floor/tiled, -/area/tether/surfacebase/north_stairs_one) "ajN" = ( /obj/structure/catwalk, /obj/machinery/atmospherics/pipe/simple/visible/scrubbers, @@ -5263,7 +6447,7 @@ /turf/simulated/floor/tiled, /area/tether/surfacebase/north_stairs_one) "amu" = ( -/mob/living/simple_animal/fish/koi/poisonous, +/mob/living/simple_mob/animal/passive/fish/koi/poisonous, /turf/simulated/floor/water/pool, /area/tether/surfacebase/atrium_one) "amv" = ( @@ -5428,25 +6612,6 @@ /obj/random/trash_pile, /turf/simulated/floor/plating, /area/maintenance/lower/vacant_site) -"amU" = ( -/turf/simulated/wall/r_wall, -/area/rnd/anomaly_lab) -"amW" = ( -/obj/machinery/artifact_scanpad, -/turf/simulated/floor/tiled/dark, -/area/rnd/anomaly_lab/containment_one) -"amX" = ( -/obj/machinery/artifact_analyser, -/turf/simulated/floor/tiled/dark, -/area/rnd/anomaly_lab/containment_one) -"amZ" = ( -/obj/machinery/artifact_scanpad, -/turf/simulated/floor/tiled/dark, -/area/rnd/anomaly_lab/containment_two) -"ana" = ( -/obj/machinery/artifact_analyser, -/turf/simulated/floor/tiled/dark, -/area/rnd/anomaly_lab/containment_two) "anb" = ( /obj/effect/floor_decal/industrial/warning{ dir = 8 @@ -5515,7 +6680,7 @@ /obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, /obj/machinery/atmospherics/pipe/simple/hidden/supply, /obj/structure/disposalpipe/segment, -/obj/machinery/camera/network/northern_star{ +/obj/machinery/camera/network/tether{ dir = 5 }, /obj/effect/floor_decal/corner/lightgrey/border{ @@ -5537,7 +6702,7 @@ /obj/effect/floor_decal/borderfloor{ dir = 4 }, -/obj/machinery/camera/network/northern_star{ +/obj/machinery/camera/network/tether{ dir = 9 }, /obj/effect/floor_decal/corner/lightgrey/border{ @@ -5567,9 +6732,6 @@ }, /turf/simulated/floor/tiled/techfloor, /area/maintenance/lower/mining_eva) -"ant" = ( -/turf/simulated/floor/tiled/dark, -/area/rnd/anomaly_lab/containment_two) "anw" = ( /obj/machinery/atmospherics/pipe/simple/hidden/supply{ dir = 4 @@ -5792,32 +6954,6 @@ /obj/machinery/door/firedoor/glass, /turf/simulated/floor/plating, /area/crew_quarters/locker) -"aoh" = ( -/obj/structure/grille, -/obj/structure/window/reinforced/full, -/obj/machinery/door/firedoor/glass, -/turf/simulated/floor/plating, -/area/rnd/anomaly_lab/containment_one) -"aoi" = ( -/obj/structure/grille, -/obj/structure/window/reinforced/full, -/obj/machinery/atmospherics/pipe/simple/visible/yellow, -/obj/machinery/door/firedoor/glass, -/turf/simulated/floor/plating, -/area/rnd/anomaly_lab/containment_one) -"aol" = ( -/obj/structure/grille, -/obj/structure/window/reinforced/full, -/obj/machinery/atmospherics/pipe/simple/visible/yellow, -/obj/machinery/door/firedoor/glass, -/turf/simulated/floor/plating, -/area/rnd/anomaly_lab/containment_two) -"aom" = ( -/obj/structure/grille, -/obj/structure/window/reinforced/full, -/obj/machinery/door/firedoor/glass, -/turf/simulated/floor/plating, -/area/rnd/anomaly_lab/containment_two) "aon" = ( /obj/effect/floor_decal/borderfloor{ dir = 8 @@ -6016,65 +7152,6 @@ }, /turf/simulated/floor/tiled, /area/tether/surfacebase/atrium_one) -"aoE" = ( -/obj/item/weapon/stool, -/turf/simulated/floor/tiled, -/area/rnd/anomaly_lab) -"aoF" = ( -/obj/effect/floor_decal/industrial/warning{ - dir = 4 - }, -/turf/simulated/floor/tiled, -/area/rnd/anomaly_lab) -"aoG" = ( -/obj/effect/floor_decal/borderfloor{ - dir = 4 - }, -/obj/effect/floor_decal/industrial/danger{ - dir = 4 - }, -/turf/simulated/floor/tiled, -/area/rnd/anomaly_lab) -"aoH" = ( -/obj/effect/floor_decal/steeldecal/steel_decals_central4{ - dir = 1 - }, -/obj/machinery/atmospherics/pipe/simple/visible/yellow{ - dir = 5 - }, -/turf/simulated/floor/tiled/monotile, -/area/rnd/anomaly_lab) -"aoJ" = ( -/obj/machinery/atmospherics/pipe/manifold/visible/yellow{ - dir = 1 - }, -/obj/machinery/light{ - dir = 1 - }, -/turf/simulated/floor/tiled, -/area/rnd/anomaly_lab) -"aoL" = ( -/obj/effect/floor_decal/steeldecal/steel_decals_central4{ - dir = 1 - }, -/obj/machinery/atmospherics/pipe/simple/visible/yellow{ - dir = 9 - }, -/turf/simulated/floor/tiled/monotile, -/area/rnd/anomaly_lab) -"aoM" = ( -/obj/effect/floor_decal/borderfloor{ - dir = 8 - }, -/obj/effect/floor_decal/industrial/danger{ - dir = 8 - }, -/turf/simulated/floor/tiled, -/area/rnd/anomaly_lab) -"aoN" = ( -/obj/machinery/suspension_gen, -/turf/simulated/floor/tiled, -/area/rnd/xenoarch_storage) "aoO" = ( /obj/item/weapon/storage/excavation, /obj/item/weapon/pickaxe, @@ -6263,14 +7340,6 @@ }, /turf/simulated/floor/tiled, /area/crew_quarters/locker) -"apl" = ( -/obj/structure/anomaly_container, -/turf/simulated/floor/tiled, -/area/rnd/anomaly_lab) -"apo" = ( -/obj/machinery/atmospherics/pipe/simple/visible/yellow, -/turf/simulated/floor/tiled, -/area/rnd/anomaly_lab) "app" = ( /obj/structure/railing{ dir = 8 @@ -6290,14 +7359,6 @@ /obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, /turf/simulated/floor/tiled, /area/rnd/xenoarch_storage) -"apt" = ( -/obj/machinery/light{ - dir = 4 - }, -/obj/item/device/suit_cooling_unit, -/obj/structure/table/rack, -/turf/simulated/floor/tiled, -/area/rnd/xenoarch_storage) "apu" = ( /obj/effect/floor_decal/borderfloor{ dir = 8 @@ -6568,22 +7629,23 @@ /obj/structure/cable/green, /turf/simulated/floor/tiled, /area/tether/surfacebase/mining_main/lobby) +"aqd" = ( +/obj/structure/railing{ + icon_state = "railing0"; + dir = 1 + }, +/obj/structure/table/rack, +/obj/item/clothing/suit/fire/firefighter, +/obj/item/weapon/tank/oxygen/red, +/obj/item/clothing/mask/gas/wwii, +/obj/item/clothing/head/hardhat/red, +/obj/effect/decal/cleanable/dirt, +/turf/simulated/floor/plating, +/area/maintenance/lower/research) "aqe" = ( /obj/structure/closet/excavation, /turf/simulated/floor/tiled, /area/rnd/xenoarch_storage) -"aqf" = ( -/obj/structure/table/rack, -/obj/item/weapon/storage/belt/archaeology, -/obj/item/clothing/suit/space/anomaly, -/obj/item/clothing/head/helmet/space/anomaly, -/obj/item/clothing/mask/breath, -/obj/item/weapon/storage/belt/archaeology, -/obj/item/clothing/suit/space/anomaly, -/obj/item/clothing/head/helmet/space/anomaly, -/obj/item/clothing/mask/breath, -/turf/simulated/floor/tiled, -/area/rnd/xenoarch_storage) "aqi" = ( /obj/structure/reagent_dispensers/fueltank, /obj/machinery/ai_status_display{ @@ -6697,11 +7759,6 @@ }, /turf/simulated/floor/tiled, /area/crew_quarters/locker) -"aqx" = ( -/obj/structure/bed/chair, -/obj/machinery/camera/network/northern_star, -/turf/simulated/floor/tiled, -/area/tether/surfacebase/tram) "aqz" = ( /obj/structure/bed/chair, /obj/machinery/status_display{ @@ -6756,59 +7813,6 @@ }, /turf/simulated/floor/tiled, /area/storage/primary) -"aqI" = ( -/obj/machinery/atmospherics/unary/vent_scrubber/on{ - dir = 8 - }, -/turf/simulated/floor/tiled, -/area/rnd/anomaly_lab) -"aqJ" = ( -/obj/machinery/hologram/holopad, -/turf/simulated/floor/tiled, -/area/rnd/anomaly_lab) -"aqK" = ( -/obj/machinery/atmospherics/unary/vent_pump/on{ - dir = 1 - }, -/turf/simulated/floor/tiled, -/area/rnd/anomaly_lab) -"aqL" = ( -/obj/machinery/atmospherics/pipe/manifold/visible/yellow{ - dir = 8 - }, -/turf/simulated/floor/tiled, -/area/rnd/anomaly_lab) -"aqM" = ( -/obj/machinery/atmospherics/pipe/manifold/visible/yellow{ - dir = 1 - }, -/turf/simulated/floor/tiled, -/area/rnd/anomaly_lab) -"aqN" = ( -/obj/machinery/atmospherics/pipe/manifold/visible/yellow{ - dir = 1 - }, -/obj/effect/floor_decal/corner/red{ - dir = 6 - }, -/turf/simulated/floor/tiled, -/area/rnd/anomaly_lab) -"aqO" = ( -/obj/machinery/atmospherics/unary/heater{ - dir = 8 - }, -/obj/effect/floor_decal/corner/red{ - dir = 9 - }, -/obj/effect/floor_decal/corner/red{ - dir = 6 - }, -/obj/structure/sign/nosmoking_2{ - pixel_x = 32; - pixel_y = 0 - }, -/turf/simulated/floor/tiled, -/area/rnd/anomaly_lab) "aqW" = ( /obj/structure/catwalk, /obj/effect/decal/cleanable/dirt, @@ -6899,72 +7903,6 @@ /obj/structure/disposalpipe/segment, /turf/simulated/floor/tiled, /area/tether/surfacebase/tram) -"arp" = ( -/obj/effect/floor_decal/steeldecal/steel_decals9, -/obj/effect/floor_decal/steeldecal/steel_decals9{ - dir = 4 - }, -/obj/effect/floor_decal/steeldecal/steel_decals9{ - dir = 1 - }, -/obj/effect/floor_decal/steeldecal/steel_decals9{ - dir = 8 - }, -/turf/simulated/floor/tiled/monotile, -/area/rnd/anomaly_lab) -"arq" = ( -/obj/effect/floor_decal/steeldecal/steel_decals9, -/obj/effect/floor_decal/steeldecal/steel_decals9{ - dir = 4 - }, -/obj/effect/floor_decal/steeldecal/steel_decals9{ - dir = 1 - }, -/obj/effect/floor_decal/steeldecal/steel_decals9{ - dir = 8 - }, -/obj/machinery/radiocarbon_spectrometer, -/turf/simulated/floor/tiled/monotile, -/area/rnd/anomaly_lab) -"ars" = ( -/turf/simulated/floor/tiled, -/area/rnd/anomaly_lab) -"art" = ( -/obj/machinery/atmospherics/portables_connector, -/obj/effect/floor_decal/corner/white{ - dir = 9 - }, -/obj/effect/floor_decal/corner/white{ - dir = 6 - }, -/turf/simulated/floor/tiled, -/area/rnd/anomaly_lab) -"aru" = ( -/obj/machinery/atmospherics/binary/pump, -/obj/effect/floor_decal/corner/orange{ - dir = 10 - }, -/turf/simulated/floor/tiled, -/area/rnd/anomaly_lab) -"arv" = ( -/obj/machinery/atmospherics/binary/pump{ - dir = 1 - }, -/obj/effect/floor_decal/corner/green{ - dir = 10 - }, -/turf/simulated/floor/tiled, -/area/rnd/anomaly_lab) -"arw" = ( -/obj/machinery/atmospherics/pipe/simple/visible/yellow{ - dir = 5 - }, -/obj/structure/bed/chair, -/obj/effect/floor_decal/corner/blue{ - dir = 6 - }, -/turf/simulated/floor/tiled, -/area/rnd/anomaly_lab) "ary" = ( /turf/simulated/wall/r_wall, /area/rnd/xenoarch_storage) @@ -7145,101 +8083,12 @@ /area/shuttle/escape/station{ base_turf = /turf/simulated/floor/tiled/techfloor/grid }) -"arZ" = ( -/obj/machinery/atmospherics/portables_connector{ - dir = 4 - }, -/obj/effect/floor_decal/corner/white{ - dir = 9 - }, -/obj/effect/floor_decal/corner/white{ - dir = 6 - }, -/turf/simulated/floor/tiled, -/area/rnd/anomaly_lab) -"asa" = ( -/obj/machinery/atmospherics/omni/mixer, -/obj/effect/floor_decal/corner/black{ - dir = 5 - }, -/obj/effect/floor_decal/corner/black{ - dir = 10 - }, -/turf/simulated/floor/tiled, -/area/rnd/anomaly_lab) -"asb" = ( -/obj/machinery/atmospherics/portables_connector{ - dir = 8 - }, -/obj/effect/floor_decal/corner/white{ - dir = 9 - }, -/obj/effect/floor_decal/corner/white{ - dir = 6 - }, -/turf/simulated/floor/tiled, -/area/rnd/anomaly_lab) -"asc" = ( -/obj/machinery/atmospherics/portables_connector{ - dir = 1 - }, -/obj/effect/floor_decal/corner/orange{ - dir = 5 - }, -/obj/effect/floor_decal/corner/orange{ - dir = 10 - }, -/turf/simulated/floor/tiled, -/area/rnd/anomaly_lab) -"asd" = ( -/obj/machinery/atmospherics/portables_connector{ - dir = 1 - }, -/obj/effect/floor_decal/corner/green{ - dir = 10 - }, -/obj/effect/floor_decal/corner/green{ - dir = 5 - }, -/turf/simulated/floor/tiled, -/area/rnd/anomaly_lab) -"ase" = ( -/obj/structure/table/standard, -/turf/simulated/floor/tiled, -/area/rnd/anomaly_lab) -"asf" = ( -/obj/machinery/camera/network/research, -/obj/structure/closet/firecloset, -/obj/effect/floor_decal/industrial/warning{ - dir = 8 - }, -/obj/machinery/light_switch{ - dir = 2; - name = "light switch "; - pixel_x = 10; - pixel_y = 36 - }, -/turf/simulated/floor/tiled, -/area/rnd/anomaly_lab) -"asg" = ( -/obj/structure/grille, -/obj/structure/window/reinforced/full, -/obj/machinery/door/firedoor, -/turf/simulated/floor/plating, -/area/rnd/anomaly_lab) "asi" = ( /obj/machinery/light{ dir = 1 }, /turf/simulated/floor/tiled, /area/rnd/hallway) -"asj" = ( -/obj/effect/floor_decal/steeldecal/steel_decals4{ - dir = 10 - }, -/obj/effect/floor_decal/steeldecal/steel_decals4, -/turf/simulated/floor/tiled, -/area/rnd/hallway) "asl" = ( /obj/effect/floor_decal/steeldecal/steel_decals4{ dir = 6 @@ -7249,6 +8098,19 @@ }, /turf/simulated/floor/tiled, /area/hallway/lower/first_west) +"asn" = ( +/obj/structure/table/standard, +/obj/random/tech_supply, +/obj/effect/floor_decal/borderfloor{ + dir = 5 + }, +/obj/effect/floor_decal/corner/yellow/border{ + icon_state = "bordercolor"; + dir = 5 + }, +/obj/fiftyspawner/steel, +/turf/simulated/floor/tiled/techmaint, +/area/engineering/atmos) "asp" = ( /obj/machinery/light/small{ dir = 1 @@ -7274,7 +8136,7 @@ }, /obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, /obj/machinery/atmospherics/pipe/simple/hidden/supply, -/obj/machinery/camera/network/northern_star{ +/obj/machinery/camera/network/tether{ dir = 5 }, /obj/effect/floor_decal/corner/lightgrey/border{ @@ -7412,24 +8274,6 @@ /obj/structure/disposalpipe/segment, /turf/simulated/floor/tiled, /area/tether/surfacebase/tram) -"asK" = ( -/obj/effect/floor_decal/techfloor/orange{ - dir = 4 - }, -/obj/machinery/camera/network/northern_star{ - dir = 9 - }, -/turf/simulated/floor/tiled/techfloor/grid, -/area/tether/surfacebase/tram) -"asL" = ( -/obj/effect/floor_decal/industrial/warning/corner, -/obj/effect/floor_decal/industrial/warning, -/turf/simulated/floor/tiled, -/area/rnd/anomaly_lab) -"asM" = ( -/obj/structure/anomaly_container, -/turf/simulated/floor/tiled/techfloor/grid, -/area/rnd/anomaly_lab) "asU" = ( /obj/effect/floor_decal/borderfloor{ dir = 4 @@ -7473,11 +8317,6 @@ }, /turf/simulated/floor/tiled, /area/hallway/lower/first_west) -"asX" = ( -/obj/effect/floor_decal/borderfloor, -/obj/effect/floor_decal/corner/lightgrey/border, -/turf/simulated/floor/tiled, -/area/hallway/lower/first_west) "asY" = ( /obj/effect/floor_decal/borderfloor{ dir = 6 @@ -7650,31 +8489,6 @@ /obj/structure/disposalpipe/segment, /turf/simulated/floor/tiled, /area/tether/surfacebase/tram) -"atw" = ( -/obj/machinery/portable_atmospherics/canister/nitrogen, -/turf/simulated/floor/tiled, -/area/rnd/anomaly_lab) -"atx" = ( -/obj/effect/floor_decal/industrial/warning/corner, -/turf/simulated/floor/tiled, -/area/rnd/anomaly_lab) -"aty" = ( -/obj/effect/floor_decal/industrial/warning, -/turf/simulated/floor/tiled, -/area/rnd/anomaly_lab) -"atA" = ( -/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ - dir = 6 - }, -/turf/simulated/floor/tiled, -/area/rnd/anomaly_lab) -"atC" = ( -/obj/structure/grille, -/obj/structure/window/reinforced/full, -/obj/machinery/door/firedoor, -/obj/structure/sign/department/anomaly, -/turf/simulated/floor/plating, -/area/rnd/anomaly_lab) "atD" = ( /obj/effect/floor_decal/borderfloor{ dir = 8 @@ -7696,15 +8510,6 @@ }, /turf/simulated/floor/tiled, /area/rnd/hallway) -"atF" = ( -/obj/effect/floor_decal/borderfloor{ - dir = 6 - }, -/obj/effect/floor_decal/corner/mauve/border{ - dir = 6 - }, -/turf/simulated/floor/tiled, -/area/rnd/hallway) "atG" = ( /turf/simulated/wall, /area/rnd/hallway) @@ -7857,11 +8662,6 @@ }, /turf/simulated/floor/tiled, /area/storage/primary) -"atW" = ( -/turf/simulated/shuttle/wall/voidcraft/green{ - hard_corner = 1 - }, -/area/tether/surfacebase/atrium_one) "atX" = ( /obj/effect/floor_decal/borderfloor{ dir = 8 @@ -8023,33 +8823,6 @@ /obj/machinery/vending/snack, /turf/simulated/floor/tiled, /area/tether/surfacebase/tram) -"auk" = ( -/obj/machinery/hologram/holopad, -/obj/effect/floor_decal/industrial/warning{ - dir = 4 - }, -/turf/simulated/floor/tiled, -/area/rnd/anomaly_lab) -"aul" = ( -/obj/machinery/artifact_harvester, -/turf/simulated/floor/tiled/techfloor/grid, -/area/rnd/anomaly_lab) -"aum" = ( -/obj/machinery/artifact_scanpad, -/turf/simulated/floor/tiled/techfloor/grid, -/area/rnd/anomaly_lab) -"aun" = ( -/obj/effect/floor_decal/industrial/warning{ - dir = 8 - }, -/obj/structure/disposalpipe/segment, -/turf/simulated/floor/tiled, -/area/rnd/anomaly_lab) -"auo" = ( -/obj/structure/closet/secure_closet/xenoarchaeologist, -/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, -/turf/simulated/floor/tiled, -/area/rnd/anomaly_lab) "aur" = ( /obj/effect/floor_decal/borderfloor{ dir = 8 @@ -8145,9 +8918,6 @@ /obj/machinery/atmospherics/pipe/simple/visible/yellow, /turf/simulated/floor/tiled/techfloor, /area/maintenance/lower/xenoflora) -"auF" = ( -/turf/simulated/floor/holofloor/tiled/dark, -/area/tether/surfacebase/atrium_one) "auG" = ( /obj/structure/closet/firecloset/full/double, /turf/simulated/floor/tiled/techfloor, @@ -8442,20 +9212,6 @@ /obj/machinery/vending/cola, /turf/simulated/floor/tiled, /area/tether/surfacebase/tram) -"avd" = ( -/obj/machinery/camera/network/research{ - dir = 4 - }, -/turf/simulated/floor/tiled, -/area/rnd/anomaly_lab) -"ave" = ( -/obj/machinery/portable_atmospherics/canister/oxygen, -/turf/simulated/floor/tiled, -/area/rnd/anomaly_lab) -"avf" = ( -/obj/machinery/portable_atmospherics/canister/carbon_dioxide, -/turf/simulated/floor/tiled, -/area/rnd/anomaly_lab) "avh" = ( /obj/structure/railing{ dir = 1 @@ -8795,11 +9551,6 @@ /obj/structure/disposalpipe/segment, /turf/simulated/floor/tiled, /area/tether/surfacebase/tram) -"avY" = ( -/obj/structure/table/standard, -/obj/item/device/multitool, -/turf/simulated/floor/tiled, -/area/rnd/anomaly_lab) "avZ" = ( /obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, /obj/structure/cable/green{ @@ -8815,45 +9566,6 @@ }, /turf/simulated/floor/tiled, /area/hallway/lower/first_west) -"awb" = ( -/obj/effect/floor_decal/industrial/warning{ - dir = 8 - }, -/obj/machinery/disposal, -/obj/structure/disposalpipe/trunk{ - dir = 1 - }, -/turf/simulated/floor/tiled, -/area/rnd/anomaly_lab) -"awc" = ( -/obj/machinery/light, -/obj/machinery/washing_machine, -/turf/simulated/floor/tiled, -/area/rnd/anomaly_lab) -"awe" = ( -/obj/structure/closet/secure_closet/xenoarchaeologist, -/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ - dir = 5 - }, -/turf/simulated/floor/tiled, -/area/rnd/anomaly_lab) -"awf" = ( -/obj/machinery/light, -/obj/machinery/atmospherics/unary/vent_scrubber/on{ - dir = 8 - }, -/turf/simulated/floor/tiled, -/area/rnd/anomaly_lab) -"awg" = ( -/obj/structure/table/rack, -/obj/item/clothing/suit/bio_suit/anomaly, -/obj/item/clothing/head/bio_hood/anomaly, -/obj/item/clothing/mask/breath, -/obj/item/clothing/glasses/science, -/obj/item/clothing/gloves/sterile/latex, -/obj/effect/floor_decal/industrial/hatch/yellow, -/turf/simulated/floor/tiled, -/area/rnd/anomaly_lab) "awi" = ( /obj/effect/floor_decal/borderfloor{ dir = 9 @@ -9268,30 +9980,6 @@ }, /turf/simulated/floor/tiled, /area/tether/surfacebase/atrium_one) -"awW" = ( -/obj/structure/cable/green{ - d1 = 4; - d2 = 8; - icon_state = "4-8" - }, -/obj/structure/cable/green{ - d1 = 2; - d2 = 8; - icon_state = "2-8" - }, -/obj/structure/cable{ - d1 = 1; - d2 = 8; - icon_state = "1-8" - }, -/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, -/obj/machinery/atmospherics/pipe/simple/hidden/supply, -/obj/structure/disposalpipe/segment{ - dir = 1; - icon_state = "pipe-c" - }, -/turf/simulated/floor/tiled, -/area/hallway/lower/first_west) "awX" = ( /obj/effect/floor_decal/borderfloor{ dir = 1 @@ -9339,18 +10027,6 @@ }, /turf/simulated/floor/tiled, /area/tether/surfacebase/atrium_one) -"axb" = ( -/obj/structure/cable/green{ - d1 = 4; - d2 = 8; - icon_state = "4-8" - }, -/obj/machinery/atmospherics/unary/vent_pump/on, -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/turf/simulated/floor/tiled, -/area/hallway/lower/first_west) "axc" = ( /obj/machinery/door/firedoor/glass, /obj/machinery/cryopod/robot/door/tram, @@ -9380,14 +10056,6 @@ "axf" = ( /turf/simulated/wall/r_wall, /area/maintenance/lower/solars) -"axh" = ( -/obj/machinery/portable_atmospherics/canister/air, -/turf/simulated/floor/tiled, -/area/rnd/anomaly_lab) -"axi" = ( -/obj/machinery/portable_atmospherics/canister/sleeping_agent, -/turf/simulated/floor/tiled, -/area/rnd/anomaly_lab) "axj" = ( /obj/structure/table/glass, /obj/effect/floor_decal/borderfloor{ @@ -9399,18 +10067,6 @@ /obj/machinery/reagentgrinder, /turf/simulated/floor/tiled, /area/rnd/xenobiology/xenoflora) -"axk" = ( -/obj/structure/cable/green{ - d1 = 4; - d2 = 8; - icon_state = "4-8" - }, -/obj/machinery/atmospherics/unary/vent_scrubber/on, -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/turf/simulated/floor/tiled, -/area/hallway/lower/first_west) "axl" = ( /obj/structure/reagent_dispensers/watertank, /obj/item/weapon/reagent_containers/glass/bucket, @@ -9438,18 +10094,6 @@ }, /turf/simulated/floor/tiled, /area/rnd/xenobiology/xenoflora) -"axn" = ( -/obj/effect/floor_decal/borderfloor{ - dir = 1 - }, -/obj/effect/floor_decal/corner/mauve/border{ - dir = 1 - }, -/obj/machinery/light_switch{ - pixel_y = 25 - }, -/turf/simulated/floor/tiled, -/area/rnd/xenobiology/xenoflora) "axo" = ( /obj/effect/floor_decal/borderfloor/corner{ dir = 1 @@ -9477,38 +10121,6 @@ }, /turf/simulated/floor/tiled, /area/rnd/xenobiology/xenoflora) -"axs" = ( -/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, -/obj/structure/cable/green{ - d1 = 1; - d2 = 8; - icon_state = "1-8" - }, -/obj/structure/cable/green{ - d1 = 4; - d2 = 8; - icon_state = "4-8" - }, -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/turf/simulated/floor/tiled, -/area/hallway/lower/first_west) -"axt" = ( -/obj/machinery/atmospherics/pipe/simple/hidden/supply, -/obj/structure/cable/green{ - d1 = 2; - d2 = 8; - icon_state = "2-8" - }, -/obj/structure/disposalpipe/sortjunction{ - name = "Primary Tool Storage"; - icon_state = "pipe-j1s"; - dir = 8; - sortType = "Primary Tool Storage" - }, -/turf/simulated/floor/tiled, -/area/hallway/lower/first_west) "axu" = ( /obj/machinery/atmospherics/pipe/simple/visible{ dir = 4 @@ -9618,18 +10230,6 @@ /obj/random/junk, /turf/simulated/floor/tiled/techfloor, /area/maintenance/lower/xenoflora) -"axD" = ( -/obj/turbolift_map_holder/tether{ - dir = 4 - }, -/turf/simulated/floor/holofloor/tiled/dark, -/area/tether/surfacebase/atrium_one) -"axE" = ( -/obj/structure/sign/deck/first, -/turf/simulated/shuttle/wall/voidcraft/green{ - hard_corner = 1 - }, -/area/tether/surfacebase/atrium_one) "axF" = ( /obj/machinery/hologram/holopad, /turf/simulated/floor/tiled, @@ -9681,7 +10281,7 @@ /area/tether/surfacebase/atrium_one) "axK" = ( /obj/machinery/atmospherics/unary/vent_pump/on, -/obj/machinery/camera/network/northern_star, +/obj/machinery/camera/network/tether, /obj/structure/disposalpipe/segment{ dir = 4 }, @@ -10169,15 +10769,6 @@ }, /turf/simulated/floor/tiled, /area/rnd/xenobiology/xenoflora/lab_atmos) -"ayG" = ( -/obj/structure/table/glass, -/obj/effect/floor_decal/borderfloor, -/obj/effect/floor_decal/corner/mauve/border, -/obj/machinery/atmospherics/unary/vent_pump/on{ - dir = 1 - }, -/turf/simulated/floor/tiled, -/area/rnd/xenobiology/xenoflora/lab_atmos) "ayH" = ( /obj/structure/table/glass, /obj/effect/floor_decal/borderfloor{ @@ -10409,17 +11000,6 @@ }, /turf/simulated/floor/tiled, /area/tether/surfacebase/atrium_one) -"aza" = ( -/obj/structure/cable/green{ - d1 = 1; - d2 = 2; - icon_state = "1-2" - }, -/obj/effect/floor_decal/steeldecal/steel_decals6, -/obj/machinery/atmospherics/pipe/manifold/hidden/supply, -/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers, -/turf/simulated/floor/tiled, -/area/hallway/lower/first_west) "azb" = ( /obj/effect/floor_decal/borderfloor, /obj/machinery/atmospherics/pipe/simple/hidden/supply{ @@ -10546,29 +11126,6 @@ }, /turf/simulated/floor/tiled, /area/tether/surfacebase/atrium_one) -"azj" = ( -/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ - dir = 4 - }, -/obj/machinery/atmospherics/pipe/simple/hidden/supply{ - dir = 4 - }, -/obj/machinery/power/apc{ - dir = 2; - name = "south bump"; - pixel_y = -28 - }, -/obj/structure/cable/green, -/obj/effect/floor_decal/borderfloor, -/obj/effect/floor_decal/corner/lightgrey/border, -/obj/effect/floor_decal/steeldecal/steel_decals7{ - dir = 8 - }, -/obj/effect/floor_decal/steeldecal/steel_decals7{ - dir = 1 - }, -/turf/simulated/floor/tiled, -/area/hallway/lower/first_west) "azk" = ( /obj/effect/decal/cleanable/dirt, /obj/effect/floor_decal/industrial/outline/blue, @@ -10661,38 +11218,10 @@ /obj/machinery/door/firedoor/glass/hidden/steel, /turf/simulated/floor/tiled, /area/rnd/hallway) -"azt" = ( -/obj/structure/cable/green{ - d1 = 1; - d2 = 2; - icon_state = "1-2" - }, -/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{ - dir = 1 - }, -/obj/machinery/atmospherics/pipe/manifold4w/hidden/supply, -/obj/effect/floor_decal/steeldecal/steel_decals4{ - dir = 5 - }, -/obj/effect/floor_decal/steeldecal/steel_decals4{ - dir = 8 - }, -/turf/simulated/floor/tiled, -/area/hallway/lower/first_west) "azu" = ( -/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ - dir = 4 - }, -/obj/machinery/atmospherics/pipe/simple/hidden/supply{ - dir = 4 - }, -/obj/effect/floor_decal/steeldecal/steel_decals_central1, -/obj/machinery/door/airlock/multi_tile/glass{ - dir = 1; - name = "West Hallway" - }, -/turf/simulated/floor/tiled/monofloor, -/area/tether/surfacebase/north_stairs_one) +/obj/structure/stairs/south, +/turf/simulated/floor/tiled, +/area/tether/surfacebase/atrium_one) "azv" = ( /obj/machinery/atmospherics/unary/vent_scrubber/on{ dir = 1 @@ -10737,18 +11266,23 @@ }, /obj/structure/disposalpipe/segment, /obj/effect/decal/cleanable/dirt, +/obj/machinery/atmospherics/pipe/simple/visible/scrubbers, +/obj/machinery/atmospherics/pipe/simple/visible/supply, /turf/simulated/floor/plating, -/area/maintenance/lower/atmos) +/area/maintenance/lower/research) "azE" = ( /obj/effect/decal/cleanable/dirt, /obj/structure/reagent_dispensers/fueltank, /turf/simulated/floor/plating, -/area/maintenance/lower/atmos) +/area/maintenance/lower/research) "azF" = ( /obj/effect/decal/cleanable/dirt, /obj/structure/reagent_dispensers/watertank, +/obj/machinery/light/small{ + dir = 1 + }, /turf/simulated/floor/plating, -/area/maintenance/lower/atmos) +/area/maintenance/lower/research) "azG" = ( /obj/effect/decal/cleanable/dirt, /obj/structure/table/rack, @@ -10757,12 +11291,12 @@ /obj/random/maintenance/clean, /obj/random/maintenance/clean, /turf/simulated/floor/plating, -/area/maintenance/lower/atmos) +/area/maintenance/lower/research) "azH" = ( /obj/random/trash_pile, /obj/effect/decal/cleanable/dirt, /turf/simulated/floor/plating, -/area/maintenance/lower/atmos) +/area/maintenance/lower/research) "azI" = ( /turf/simulated/wall, /area/maintenance/lower/atmos) @@ -10799,29 +11333,6 @@ }, /turf/simulated/floor/tiled, /area/crew_quarters/locker/laundry_arrival) -"azO" = ( -/obj/structure/cable{ - icon_state = "0-4" - }, -/obj/machinery/power/apc{ - dir = 2; - name = "south bump"; - pixel_y = -28 - }, -/obj/machinery/atmospherics/pipe/simple/hidden/supply{ - dir = 4 - }, -/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers, -/obj/effect/floor_decal/borderfloor, -/obj/effect/floor_decal/corner/lightgrey/border, -/obj/effect/floor_decal/steeldecal/steel_decals7{ - dir = 1 - }, -/obj/effect/floor_decal/steeldecal/steel_decals7{ - dir = 8 - }, -/turf/simulated/floor/tiled, -/area/tether/surfacebase/north_stairs_one) "azP" = ( /obj/effect/floor_decal/borderfloor, /obj/machinery/atmospherics/pipe/simple/hidden/supply{ @@ -10830,7 +11341,7 @@ /obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ dir = 4 }, -/obj/machinery/camera/network/northern_star{ +/obj/machinery/camera/network/tether{ dir = 1 }, /obj/effect/floor_decal/corner/lightgrey/border, @@ -10849,7 +11360,7 @@ /obj/effect/floor_decal/borderfloor{ dir = 4 }, -/obj/machinery/camera/network/northern_star{ +/obj/machinery/camera/network/tether{ dir = 8; icon_state = "camera" }, @@ -10904,28 +11415,6 @@ /obj/machinery/chem_master, /turf/simulated/floor/tiled, /area/rnd/xenobiology/xenoflora) -"azW" = ( -/obj/machinery/atmospherics/pipe/simple/hidden/supply{ - dir = 4 - }, -/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ - dir = 4 - }, -/obj/effect/floor_decal/borderfloor, -/obj/effect/floor_decal/corner/lightgrey/border, -/obj/effect/floor_decal/steeldecal/steel_decals7{ - dir = 1 - }, -/obj/effect/floor_decal/steeldecal/steel_decals7{ - dir = 8 - }, -/obj/structure/extinguisher_cabinet{ - dir = 1; - icon_state = "extinguisher_closed"; - pixel_y = -32 - }, -/turf/simulated/floor/tiled, -/area/tether/surfacebase/north_stairs_one) "azX" = ( /obj/structure/disposaloutlet, /obj/structure/disposalpipe/trunk{ @@ -10933,61 +11422,6 @@ }, /turf/simulated/floor/reinforced, /area/rnd/xenobiology) -"azZ" = ( -/obj/structure/cable{ - d1 = 4; - d2 = 8; - icon_state = "4-8"; - pixel_x = 0 - }, -/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ - dir = 4 - }, -/obj/machinery/atmospherics/pipe/simple/hidden/supply{ - dir = 4 - }, -/obj/effect/floor_decal/borderfloor, -/obj/effect/floor_decal/corner/lightgrey/border, -/obj/effect/floor_decal/borderfloor/corner2{ - dir = 9 - }, -/obj/effect/floor_decal/corner/lightgrey/bordercorner2{ - dir = 9 - }, -/obj/effect/floor_decal/steeldecal/steel_decals4{ - dir = 10 - }, -/obj/effect/floor_decal/steeldecal/steel_decals7{ - dir = 1 - }, -/obj/effect/floor_decal/steeldecal/steel_decals7{ - dir = 8 - }, -/turf/simulated/floor/tiled, -/area/tether/surfacebase/north_stairs_one) -"aAa" = ( -/obj/structure/cable{ - d1 = 4; - d2 = 8; - icon_state = "4-8"; - pixel_x = 0 - }, -/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ - dir = 4 - }, -/obj/machinery/atmospherics/pipe/simple/hidden/supply{ - dir = 4 - }, -/obj/effect/floor_decal/borderfloor, -/obj/effect/floor_decal/corner/lightgrey/border, -/obj/effect/floor_decal/steeldecal/steel_decals7{ - dir = 1 - }, -/obj/effect/floor_decal/steeldecal/steel_decals7{ - dir = 8 - }, -/turf/simulated/floor/tiled, -/area/tether/surfacebase/north_stairs_one) "aAb" = ( /obj/structure/grille, /obj/structure/window/reinforced/full, @@ -11012,25 +11446,6 @@ }, /turf/simulated/floor/tiled, /area/rnd/hallway) -"aAd" = ( -/obj/structure/cable{ - d1 = 4; - d2 = 8; - icon_state = "4-8"; - pixel_x = 0 - }, -/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ - dir = 10 - }, -/obj/machinery/atmospherics/pipe/simple/hidden/supply{ - dir = 10 - }, -/obj/structure/disposalpipe/segment, -/obj/effect/floor_decal/steeldecal/steel_decals6{ - dir = 6 - }, -/turf/simulated/floor/tiled, -/area/tether/surfacebase/atrium_one) "aAg" = ( /obj/machinery/portable_atmospherics/hydroponics, /obj/effect/floor_decal/corner/green{ @@ -11068,30 +11483,6 @@ /obj/machinery/recharge_station, /turf/simulated/floor/tiled, /area/rnd/hallway) -"aAl" = ( -/obj/effect/floor_decal/spline/plain{ - dir = 4 - }, -/obj/machinery/door/firedoor/glass, -/obj/structure/cable{ - d1 = 4; - d2 = 8; - icon_state = "4-8"; - pixel_x = 0 - }, -/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ - dir = 4 - }, -/obj/machinery/atmospherics/pipe/simple/hidden/supply{ - dir = 4 - }, -/obj/machinery/door/airlock/multi_tile/glass{ - dir = 1; - name = "West Hallway" - }, -/obj/effect/floor_decal/steeldecal/steel_decals_central1, -/turf/simulated/floor/tiled/monofloor, -/area/tether/surfacebase/atrium_one) "aAm" = ( /obj/effect/floor_decal/borderfloor{ dir = 1 @@ -11181,8 +11572,14 @@ }, /obj/effect/decal/cleanable/dirt, /obj/effect/floor_decal/rust, +/obj/machinery/atmospherics/pipe/simple/visible/scrubbers{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/visible/supply{ + dir = 4 + }, /turf/simulated/floor/plating, -/area/maintenance/lower/atmos) +/area/maintenance/lower/research) "aAu" = ( /obj/structure/cable{ icon_state = "4-8" @@ -11191,8 +11588,14 @@ dir = 4 }, /obj/effect/decal/cleanable/dirt, +/obj/machinery/atmospherics/pipe/simple/visible/scrubbers{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/visible/supply{ + dir = 4 + }, /turf/simulated/floor/plating, -/area/maintenance/lower/atmos) +/area/maintenance/lower/research) "aAv" = ( /obj/structure/cable{ icon_state = "4-8" @@ -11202,8 +11605,14 @@ }, /obj/random/junk, /obj/effect/decal/cleanable/dirt, +/obj/machinery/atmospherics/pipe/simple/visible/scrubbers{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/visible/supply{ + dir = 4 + }, /turf/simulated/floor/plating, -/area/maintenance/lower/atmos) +/area/maintenance/lower/research) "aAw" = ( /obj/structure/cable{ icon_state = "4-8" @@ -11213,8 +11622,14 @@ }, /obj/effect/decal/cleanable/dirt, /obj/effect/decal/cleanable/dirt, +/obj/machinery/atmospherics/pipe/simple/visible/scrubbers{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/visible/supply{ + dir = 4 + }, /turf/simulated/floor/plating, -/area/maintenance/lower/atmos) +/area/maintenance/lower/research) "aAx" = ( /obj/structure/cable{ icon_state = "4-8" @@ -11225,8 +11640,14 @@ /obj/effect/decal/cleanable/dirt, /obj/effect/floor_decal/rust, /obj/random/junk, +/obj/machinery/atmospherics/pipe/simple/visible/scrubbers{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/visible/supply{ + dir = 4 + }, /turf/simulated/floor/plating, -/area/maintenance/lower/atmos) +/area/maintenance/lower/research) "aAy" = ( /obj/machinery/door/firedoor/glass, /obj/structure/cable{ @@ -11235,9 +11656,15 @@ /obj/structure/disposalpipe/segment{ dir = 4 }, +/obj/machinery/atmospherics/pipe/simple/visible/scrubbers{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/visible/supply{ + dir = 4 + }, /obj/machinery/door/airlock/maintenance/common, /turf/simulated/floor/plating, -/area/maintenance/lower/atmos) +/area/maintenance/lower/research) "aAA" = ( /obj/machinery/recharge_station, /obj/structure/disposalpipe/segment, @@ -11291,8 +11718,14 @@ /turf/simulated/floor/tiled, /area/storage/surface_eva/external) "aAG" = ( -/turf/simulated/wall, -/area/maintenance/lower/locker_room) +/obj/structure/railing, +/obj/structure/closet/crate, +/obj/item/device/camera, +/obj/item/device/tape/random, +/obj/item/device/taperecorder/empty, +/obj/effect/decal/cleanable/dirt, +/turf/simulated/floor/plating, +/area/maintenance/lower/research) "aAH" = ( /obj/structure/railing, /obj/structure/grille, @@ -11517,39 +11950,22 @@ /turf/simulated/wall/r_wall, /area/maintenance/lower/atmos) "aBf" = ( -/obj/structure/catwalk, +/obj/structure/cable{ + icon_state = "1-2" + }, /obj/machinery/atmospherics/pipe/simple/visible/scrubbers, -/obj/structure/cable{ - icon_state = "1-4" - }, /obj/machinery/atmospherics/pipe/simple/visible/supply, +/obj/structure/catwalk, /obj/random/junk, -/turf/simulated/floor/tiled/techfloor, -/area/maintenance/lower/atmos) +/turf/simulated/floor/plating, +/area/maintenance/lower/research) "aBg" = ( -/obj/structure/catwalk, -/obj/structure/cable{ - icon_state = "4-8" +/obj/structure/railing{ + dir = 8 }, -/turf/simulated/floor/tiled/techfloor, -/area/maintenance/lower/atmos) -"aBh" = ( -/obj/structure/catwalk, -/obj/machinery/alarm{ - pixel_y = 22 - }, -/obj/structure/cable{ - icon_state = "4-8" - }, -/turf/simulated/floor/tiled/techfloor, -/area/maintenance/lower/atmos) -"aBi" = ( -/obj/structure/catwalk, -/obj/structure/cable{ - icon_state = "2-8" - }, -/turf/simulated/floor/tiled/techfloor, -/area/maintenance/lower/atmos) +/obj/effect/decal/cleanable/dirt, +/turf/simulated/floor/plating, +/area/maintenance/lower/research) "aBj" = ( /obj/machinery/disposal, /obj/structure/disposalpipe/trunk{ @@ -11813,40 +12229,15 @@ /turf/simulated/floor/tiled/techfloor, /area/tether/surfacebase/emergency_storage/rnd) "aBW" = ( -/obj/structure/railing{ - dir = 1 +/obj/structure/cable{ + icon_state = "1-2" }, -/obj/machinery/atmospherics/pipe/simple/visible/scrubbers{ - dir = 5 - }, -/obj/machinery/atmospherics/pipe/simple/visible/supply{ - dir = 5 - }, -/obj/effect/floor_decal/rust, -/turf/simulated/floor/tiled/techfloor, -/area/maintenance/lower/atmos) -"aBX" = ( -/obj/structure/railing{ - dir = 1 - }, -/obj/machinery/atmospherics/pipe/simple/visible/scrubbers{ - dir = 10 - }, -/obj/machinery/atmospherics/pipe/simple/visible/supply{ - dir = 10 - }, -/obj/effect/floor_decal/rust, -/turf/simulated/floor/tiled/techfloor, -/area/maintenance/lower/atmos) -"aBY" = ( -/obj/structure/railing{ - dir = 4 - }, -/obj/structure/railing{ - dir = 1 - }, -/turf/simulated/floor/tiled/techfloor, -/area/maintenance/lower/atmos) +/obj/machinery/atmospherics/pipe/simple/visible/scrubbers, +/obj/machinery/atmospherics/pipe/simple/visible/supply, +/obj/structure/catwalk, +/obj/effect/decal/cleanable/dirt, +/turf/simulated/floor/plating, +/area/maintenance/lower/research) "aCb" = ( /obj/machinery/door/airlock/glass_external{ frequency = 1379; @@ -12196,50 +12587,27 @@ }, /turf/simulated/floor/tiled, /area/storage/art) -"aCA" = ( -/obj/effect/decal/cleanable/dirt, -/obj/effect/floor_decal/rust, -/obj/machinery/camera/network/northern_star{ - dir = 4 - }, -/obj/machinery/atmospherics/unary/vent_scrubber/on{ - dir = 4 - }, -/turf/simulated/floor/tiled/techfloor, -/area/maintenance/lower/atmos) "aCB" = ( -/obj/machinery/atmospherics/pipe/manifold/visible/scrubbers{ - dir = 4 - }, -/obj/machinery/atmospherics/pipe/manifold/visible/supply{ - dir = 8 - }, -/turf/simulated/floor/tiled/techfloor, -/area/maintenance/lower/atmos) -"aCC" = ( -/obj/structure/railing{ - dir = 4 - }, -/obj/machinery/atmospherics/unary/vent_pump/on{ - dir = 8 - }, -/turf/simulated/floor/tiled/techfloor, -/area/maintenance/lower/atmos) -"aCD" = ( -/obj/structure/catwalk, -/obj/structure/cable{ - icon_state = "1-2" - }, -/turf/simulated/floor/tiled/techfloor, -/area/maintenance/lower/atmos) -"aCG" = ( -/obj/effect/decal/cleanable/dirt, /obj/structure/railing, /obj/structure/railing{ - dir = 4 + dir = 8 }, -/turf/simulated/floor/tiled/techfloor, -/area/maintenance/lower/locker_room) +/obj/effect/decal/cleanable/dirt, +/turf/simulated/floor/plating, +/area/maintenance/lower/research) +"aCC" = ( +/obj/structure/railing, +/obj/effect/decal/cleanable/dirt, +/turf/simulated/floor/plating, +/area/maintenance/lower/research) +"aCD" = ( +/obj/effect/floor_decal/rust, +/obj/structure/railing, +/obj/structure/table/rack, +/obj/random/maintenance/clean, +/obj/random/maintenance/clean, +/turf/simulated/floor/plating, +/area/maintenance/lower/research) "aCH" = ( /obj/effect/floor_decal/borderfloor{ dir = 4 @@ -12298,14 +12666,6 @@ /obj/machinery/door/firedoor/glass, /turf/simulated/floor/plating, /area/maintenance/lower/solars) -"aCP" = ( -/obj/structure/cable{ - d1 = 2; - d2 = 8; - icon_state = "2-8" - }, -/turf/simulated/floor/tiled/techfloor, -/area/maintenance/lower/vacant_site) "aCQ" = ( /obj/structure/cable{ d1 = 1; @@ -12430,56 +12790,57 @@ /turf/simulated/floor/tiled/techfloor, /area/tether/surfacebase/emergency_storage/rnd) "aDl" = ( -/obj/machinery/atmospherics/pipe/simple/visible/supply{ - dir = 6 - }, -/obj/machinery/atmospherics/pipe/simple/visible/scrubbers{ - dir = 6 - }, -/turf/simulated/floor/tiled/techfloor, -/area/maintenance/lower/atmos) -"aDm" = ( -/obj/machinery/atmospherics/pipe/manifold/visible/supply, -/obj/machinery/atmospherics/pipe/manifold/visible/scrubbers, -/obj/effect/decal/cleanable/dirt, -/obj/random/junk, -/turf/simulated/floor/tiled/techfloor, -/area/maintenance/lower/atmos) -"aDn" = ( -/obj/structure/railing{ - dir = 4 - }, -/obj/machinery/atmospherics/pipe/simple/visible/supply{ - dir = 4 - }, -/obj/machinery/atmospherics/pipe/simple/visible/scrubbers{ - dir = 4 - }, -/obj/effect/decal/cleanable/dirt, -/turf/simulated/floor/tiled/techfloor, -/area/maintenance/lower/atmos) -"aDo" = ( -/obj/structure/catwalk, -/obj/machinery/atmospherics/pipe/simple/visible/supply{ - dir = 4 - }, -/obj/machinery/atmospherics/pipe/simple/visible/scrubbers{ - dir = 4 - }, -/obj/structure/cable{ - icon_state = "4-8" - }, /obj/structure/cable{ + d1 = 1; + d2 = 4; icon_state = "1-4" }, -/turf/simulated/floor/tiled/techfloor, -/area/maintenance/lower/atmos) -"aDt" = ( -/obj/structure/sign/directions/evac{ - name = "\improper Secondary Evacuation Route" +/obj/structure/cable{ + d1 = 1; + d2 = 2; + icon_state = "1-2" }, -/turf/simulated/wall, -/area/maintenance/lower/locker_room) +/obj/machinery/atmospherics/pipe/manifold/visible/scrubbers{ + dir = 8 + }, +/obj/machinery/atmospherics/pipe/manifold/visible/supply{ + dir = 8 + }, +/obj/structure/catwalk, +/obj/effect/decal/cleanable/dirt, +/turf/simulated/floor/plating, +/area/maintenance/lower/research) +"aDm" = ( +/obj/structure/cable{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/obj/machinery/atmospherics/pipe/simple/visible/scrubbers{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/visible/supply{ + dir = 4 + }, +/obj/structure/catwalk, +/turf/simulated/floor/plating, +/area/maintenance/lower/research) +"aDn" = ( +/obj/structure/cable{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/obj/machinery/atmospherics/pipe/simple/visible/scrubbers{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/visible/supply{ + dir = 4 + }, +/obj/structure/catwalk, +/obj/effect/decal/cleanable/dirt, +/turf/simulated/floor/plating, +/area/maintenance/lower/research) "aDv" = ( /obj/effect/floor_decal/steeldecal/steel_decals6{ dir = 4 @@ -12602,58 +12963,34 @@ /obj/effect/floor_decal/steeldecal/steel_decals_central1, /turf/simulated/floor/tiled/monofloor, /area/storage/surface_eva) -"aDH" = ( -/obj/effect/decal/cleanable/blood, -/obj/item/device/tape{ - desc = "No Talk" - }, -/obj/item/clothing/suit/varsity/brown{ - desc = "Showdown" - }, -/obj/item/clothing/head/richard, -/obj/effect/floor_decal/rust, -/obj/effect/decal/cleanable/dirt, -/turf/simulated/floor/plating, -/area/maintenance/lower/atmos) "aDI" = ( -/obj/structure/railing, -/obj/machinery/atmospherics/pipe/simple/visible/supply, -/obj/machinery/atmospherics/pipe/simple/visible/scrubbers, -/obj/structure/closet, -/obj/random/maintenance/clean, -/obj/random/maintenance/research, -/obj/random/maintenance/research, -/obj/random/maintenance/cargo, -/turf/simulated/floor/tiled/techfloor, -/area/maintenance/lower/atmos) -"aDJ" = ( -/obj/structure/railing, -/obj/effect/decal/cleanable/dirt, -/turf/simulated/floor/tiled/techfloor, -/area/maintenance/lower/atmos) -"aDK" = ( -/obj/structure/railing{ - dir = 4 +/obj/structure/cable{ + icon_state = "1-2" }, -/obj/structure/railing, -/obj/structure/table/rack, -/obj/random/maintenance/clean, -/obj/random/maintenance/research, -/obj/random/maintenance/research, -/obj/random/maintenance/cargo, -/turf/simulated/floor/tiled/techfloor, -/area/maintenance/lower/atmos) -"aDL" = ( +/obj/machinery/atmospherics/pipe/simple/visible/scrubbers, +/obj/machinery/atmospherics/pipe/simple/visible/supply, /obj/structure/catwalk, -/turf/simulated/floor/tiled/techfloor, -/area/maintenance/lower/atmos) -"aDM" = ( -/obj/structure/closet/crate, -/obj/item/weapon/handcuffs/fuzzy, -/obj/random/maintenance/security, -/obj/random/contraband, +/obj/machinery/door/firedoor/glass, +/obj/machinery/door/airlock/maintenance/common, /turf/simulated/floor/plating, -/area/maintenance/lower/locker_room) +/area/maintenance/lower/research) +"aDJ" = ( +/obj/structure/sign/directions/evac{ + dir = 4; + name = "\improper Secondary Evacuation Route" + }, +/turf/simulated/wall, +/area/maintenance/lower/research) +"aDL" = ( +/obj/machinery/atmospherics/pipe/simple/visible/scrubbers{ + dir = 10 + }, +/obj/machinery/atmospherics/pipe/simple/visible/supply{ + dir = 10 + }, +/obj/structure/catwalk, +/turf/simulated/floor/plating, +/area/maintenance/lower/research) "aDN" = ( /obj/structure/cable{ icon_state = "1-2" @@ -12774,14 +13111,6 @@ }, /turf/simulated/floor/tiled, /area/tether/surfacebase/north_stairs_one) -"aEk" = ( -/obj/machinery/door/airlock/maintenance/common{ - name = "Trash Pit Access"; - req_one_access = list(26,48) - }, -/obj/structure/catwalk, -/turf/simulated/floor/plating, -/area/maintenance/lower/trash_pit) "aEl" = ( /obj/machinery/portable_atmospherics/powered/scrubber/huge/stationary{ frequency = 1379; @@ -12792,13 +13121,6 @@ }, /turf/simulated/floor/tiled/techmaint, /area/storage/surface_eva/external) -"aEm" = ( -/obj/structure/catwalk, -/obj/machinery/alarm{ - pixel_y = 22 - }, -/turf/simulated/floor/tiled/techfloor, -/area/maintenance/lower/atmos) "aEn" = ( /obj/structure/railing{ dir = 1 @@ -12827,11 +13149,19 @@ /turf/simulated/floor/tiled, /area/storage/surface_eva) "aEp" = ( +/obj/structure/cable{ + icon_state = "1-2" + }, +/obj/machinery/atmospherics/pipe/simple/visible/scrubbers{ + dir = 5 + }, +/obj/machinery/atmospherics/pipe/simple/visible/supply{ + dir = 5 + }, /obj/structure/catwalk, -/obj/machinery/atmospherics/pipe/simple/visible/supply, -/obj/machinery/atmospherics/pipe/simple/visible/scrubbers, -/turf/simulated/floor/tiled/techfloor, -/area/maintenance/lower/atmos) +/obj/effect/decal/cleanable/dirt, +/turf/simulated/floor/plating, +/area/maintenance/lower/research) "aEq" = ( /obj/item/weapon/storage/briefcase/inflatable{ pixel_x = 3; @@ -13240,11 +13570,6 @@ "aEU" = ( /turf/simulated/wall, /area/maintenance/lower/research) -"aEV" = ( -/obj/structure/catwalk, -/obj/effect/decal/cleanable/dirt, -/turf/simulated/floor/tiled/techfloor, -/area/maintenance/lower/atmos) "aEW" = ( /obj/structure/table/standard, /obj/item/weapon/hand_labeler, @@ -13261,12 +13586,13 @@ /turf/simulated/floor/tiled, /area/storage/art) "aEZ" = ( +/obj/structure/cable{ + icon_state = "1-8" + }, /obj/structure/catwalk, -/obj/machinery/atmospherics/pipe/simple/visible/supply, -/obj/machinery/atmospherics/pipe/simple/visible/scrubbers, /obj/effect/decal/cleanable/dirt, -/turf/simulated/floor/tiled/techfloor, -/area/maintenance/lower/atmos) +/turf/simulated/floor/plating, +/area/maintenance/lower/research) "aFb" = ( /obj/structure/bed/chair/wood{ dir = 4 @@ -13321,32 +13647,18 @@ /obj/structure/sign/warning/caution, /turf/simulated/wall/r_wall, /area/rnd/xenobiology/xenoflora_storage) -"aFr" = ( -/obj/structure/railing{ - dir = 4 - }, -/obj/random/junk, -/turf/simulated/floor/tiled/techfloor, -/area/maintenance/lower/research) "aFs" = ( -/obj/structure/catwalk, -/turf/simulated/floor/tiled/techfloor, -/area/maintenance/lower/research) -"aFt" = ( -/obj/structure/catwalk, -/obj/machinery/alarm{ - pixel_y = 22 - }, -/obj/effect/decal/cleanable/dirt, -/turf/simulated/floor/tiled/techfloor, -/area/maintenance/lower/research) +/turf/simulated/wall/r_wall, +/area/maintenance/substation/surface_atmos) "aFu" = ( /obj/structure/catwalk, +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, /obj/effect/decal/cleanable/dirt, -/turf/simulated/floor/tiled/techfloor, +/turf/simulated/floor/plating, /area/maintenance/lower/research) "aFv" = ( -/mob/living/simple_animal/retaliate/gaslamp, +/mob/living/simple_mob/animal/passive/gaslamp, /turf/simulated/floor/outdoors/grass/sif/virgo3b, /area/tether/surfacebase/outside/outside1) "aFw" = ( @@ -13359,22 +13671,15 @@ }, /turf/simulated/floor/plating, /area/maintenance/lower/vacant_site) -"aFx" = ( -/obj/structure/railing, -/obj/structure/railing{ - dir = 8 - }, -/obj/effect/decal/cleanable/dirt, -/obj/effect/floor_decal/rust, -/turf/simulated/floor/tiled/techfloor, -/area/maintenance/lower/atmos) "aFz" = ( -/obj/machinery/door/airlock/maintenance/engi{ - name = "Atmospherics Access" +/obj/effect/floor_decal/rust, +/obj/random/trash_pile, +/obj/structure/railing{ + icon_state = "railing0"; + dir = 1 }, -/obj/machinery/door/firedoor/glass, -/turf/simulated/floor/tiled/techfloor, -/area/maintenance/lower/atmos) +/turf/simulated/floor/plating, +/area/maintenance/lower/research) "aFA" = ( /obj/structure/table/woodentable, /turf/simulated/floor/lino, @@ -13453,7 +13758,7 @@ d2 = 2; icon_state = "1-2" }, -/obj/machinery/camera/network/northern_star{ +/obj/machinery/camera/network/tether{ dir = 8; icon_state = "camera" }, @@ -13542,26 +13847,31 @@ /turf/simulated/floor/tiled/steel_dirty, /area/rnd/xenobiology/xenoflora_storage) "aFX" = ( -/obj/structure/railing{ - dir = 4 - }, -/obj/machinery/light/small{ - dir = 8 - }, /obj/effect/decal/cleanable/dirt, -/turf/simulated/floor/tiled/techfloor, +/turf/simulated/floor/plating, /area/maintenance/lower/research) "aFY" = ( -/obj/structure/catwalk, -/obj/effect/floor_decal/rust, -/turf/simulated/floor/tiled/techfloor, -/area/maintenance/lower/atmos) -"aFZ" = ( -/obj/structure/catwalk, +/obj/structure/cable{ + d1 = 1; + d2 = 4; + icon_state = "1-4" + }, +/obj/effect/floor_decal/industrial/warning/corner, +/obj/structure/cable{ + icon_state = "1-8" + }, /obj/effect/decal/cleanable/dirt, -/obj/effect/floor_decal/rust, -/turf/simulated/floor/tiled/techfloor, -/area/maintenance/lower/atmos) +/turf/simulated/floor/plating, +/area/maintenance/substation/surface_atmos) +"aFZ" = ( +/obj/structure/cable{ + icon_state = "1-2" + }, +/obj/machinery/door/airlock/maintenance/engi{ + name = "Atmospherics Substation" + }, +/turf/simulated/floor/plating, +/area/maintenance/substation/surface_atmos) "aGb" = ( /obj/structure/railing{ dir = 1 @@ -13575,39 +13885,6 @@ /obj/effect/decal/cleanable/dirt, /turf/simulated/floor/plating, /area/maintenance/lower/vacant_site) -"aGc" = ( -/obj/structure/catwalk, -/obj/machinery/atmospherics/pipe/simple/visible/supply{ - dir = 4 - }, -/obj/machinery/atmospherics/pipe/simple/visible/scrubbers{ - dir = 4 - }, -/turf/simulated/floor/tiled/techfloor, -/area/maintenance/lower/atmos) -"aGd" = ( -/obj/machinery/door/airlock/maintenance/common, -/obj/machinery/atmospherics/pipe/simple/visible/supply{ - dir = 4 - }, -/obj/machinery/atmospherics/pipe/simple/visible/scrubbers{ - dir = 4 - }, -/obj/machinery/door/firedoor/glass, -/obj/structure/catwalk, -/turf/simulated/floor/tiled/techfloor, -/area/maintenance/lower/atmos) -"aGe" = ( -/obj/structure/catwalk, -/obj/machinery/atmospherics/pipe/simple/visible/supply{ - dir = 9 - }, -/obj/machinery/atmospherics/pipe/simple/visible/scrubbers{ - dir = 9 - }, -/obj/effect/decal/cleanable/dirt, -/turf/simulated/floor/tiled/techfloor, -/area/maintenance/lower/atmos) "aGg" = ( /obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{ dir = 8 @@ -13659,49 +13936,6 @@ /obj/machinery/atmospherics/pipe/simple/hidden/universal, /turf/simulated/floor/plating, /area/maintenance/asmaint2) -"aGn" = ( -/obj/structure/table/standard, -/obj/item/device/flashlight/lamp, -/obj/machinery/power/apc{ - dir = 1; - name = "north bump"; - pixel_x = 0; - pixel_y = 28 - }, -/obj/structure/cable/green{ - d2 = 2; - icon_state = "0-2" - }, -/turf/simulated/floor/tiled/dark, -/area/rnd/anomaly_lab/containment_one) -"aGo" = ( -/obj/structure/railing{ - dir = 4 - }, -/obj/random/trash_pile, -/turf/simulated/floor/tiled/techfloor, -/area/maintenance/lower/research) -"aGp" = ( -/obj/structure/table/standard, -/obj/item/device/flashlight/lamp, -/obj/machinery/power/apc{ - dir = 1; - name = "north bump"; - pixel_x = 0; - pixel_y = 28 - }, -/obj/structure/cable/green{ - d2 = 2; - icon_state = "0-2" - }, -/turf/simulated/floor/tiled/dark, -/area/rnd/anomaly_lab/containment_two) -"aGq" = ( -/obj/machinery/door/firedoor/glass, -/obj/effect/decal/cleanable/dirt, -/obj/structure/catwalk, -/turf/simulated/floor/tiled/techfloor, -/area/maintenance/lower/atmos) "aGr" = ( /obj/machinery/light{ dir = 1 @@ -13943,13 +14177,31 @@ /turf/simulated/floor/tiled/steel_dirty, /area/rnd/xenobiology/xenoflora_storage) "aGY" = ( -/obj/structure/catwalk, -/obj/random/junk, -/turf/simulated/floor/tiled/techfloor, -/area/maintenance/lower/research) +/obj/machinery/portable_atmospherics/canister/oxygen, +/obj/machinery/light/small{ + dir = 1 + }, +/obj/effect/floor_decal/industrial/outline/yellow, +/turf/simulated/floor/tiled/techmaint, +/area/engineering/atmos) "aGZ" = ( -/turf/simulated/wall/r_wall, -/area/engineering/drone_fabrication) +/obj/structure/table/standard, +/obj/machinery/requests_console{ + department = "Atmospherics"; + departmentType = 3; + name = "Atmos RC"; + pixel_x = 0; + pixel_y = 28 + }, +/obj/item/weapon/tool/wrench, +/obj/item/device/t_scanner, +/obj/item/weapon/storage/belt/utility/atmostech, +/obj/machinery/light_switch{ + dir = 4; + pixel_x = -28 + }, +/turf/simulated/floor/tiled, +/area/engineering/atmos) "aHb" = ( /obj/structure/table/standard, /obj/machinery/atmospherics/unary/vent_scrubber/on{ @@ -13976,17 +14228,6 @@ "aHe" = ( /turf/simulated/wall/r_wall, /area/rnd/external) -"aHg" = ( -/obj/machinery/camera/network/research{ - dir = 4 - }, -/obj/structure/cable/green{ - d1 = 1; - d2 = 4; - icon_state = "1-4" - }, -/turf/simulated/floor/tiled/dark, -/area/rnd/anomaly_lab/containment_one) "aHh" = ( /turf/simulated/wall, /area/rnd/external) @@ -14014,82 +14255,29 @@ /obj/machinery/portable_atmospherics/canister/sleeping_agent, /turf/simulated/floor/tiled/steel_dirty, /area/rnd/xenobiology/xenoflora_storage) -"aHm" = ( -/obj/machinery/alarm/monitor/isolation{ - alarm_id = "isolation_one"; - dir = 8; - pixel_x = 22; - pixel_y = 0 - }, -/obj/structure/cable/green{ - d1 = 2; - d2 = 8; - icon_state = "2-8" - }, -/turf/simulated/floor/tiled/dark, -/area/rnd/anomaly_lab/containment_one) -"aHn" = ( -/obj/effect/decal/cleanable/dirt, -/turf/simulated/floor/tiled/steel_dirty, -/area/maintenance/lower/research) "aHo" = ( -/obj/structure/railing{ - dir = 8 - }, -/turf/simulated/floor/tiled/techfloor, -/area/maintenance/lower/research) -"aHp" = ( -/obj/effect/floor_decal/techfloor{ - dir = 9 - }, -/obj/machinery/recharge_station, -/turf/simulated/floor/tiled/techfloor, -/area/engineering/drone_fabrication) -"aHq" = ( -/obj/effect/floor_decal/techfloor{ - dir = 1 - }, -/obj/machinery/computer/cryopod/robot{ - pixel_y = 30 - }, -/obj/machinery/atmospherics/unary/vent_pump/on, -/turf/simulated/floor/tiled/techfloor, -/area/engineering/drone_fabrication) -"aHr" = ( -/obj/effect/floor_decal/techfloor{ - dir = 5 - }, -/obj/machinery/cryopod/robot, -/turf/simulated/floor/tiled/techfloor, -/area/engineering/drone_fabrication) -"aHs" = ( -/obj/structure/cable/green{ - d1 = 4; - d2 = 8; - icon_state = "4-8" - }, -/turf/simulated/floor/tiled/dark, -/area/rnd/anomaly_lab/containment_one) -"aHt" = ( -/obj/machinery/camera/network/research{ +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ dir = 4 }, -/obj/structure/cable/green{ - d1 = 1; - d2 = 2; - icon_state = "1-2" - }, -/turf/simulated/floor/tiled/dark, -/area/rnd/anomaly_lab/containment_two) -"aHu" = ( -/obj/machinery/alarm/monitor/isolation{ - alarm_id = "isolation_two"; +/turf/simulated/floor/tiled/techmaint, +/area/engineering/atmos) +"aHp" = ( +/obj/item/device/radio/intercom{ + broadcasting = 1; dir = 8; - pixel_x = 22; + listening = 1; + name = "Common Channel"; + pixel_x = -21; pixel_y = 0 }, -/turf/simulated/floor/tiled/dark, -/area/rnd/anomaly_lab/containment_two) +/obj/effect/floor_decal/industrial/outline/yellow, +/obj/machinery/pipedispenser, +/turf/simulated/floor/tiled, +/area/engineering/atmos) +"aHr" = ( +/obj/item/weapon/stool, +/turf/simulated/floor/tiled, +/area/engineering/atmos) "aHv" = ( /obj/structure/table/standard, /obj/effect/floor_decal/borderfloor{ @@ -14243,46 +14431,32 @@ /obj/machinery/portable_atmospherics/canister/nitrogen, /turf/simulated/floor/tiled/steel_dirty, /area/rnd/xenobiology/xenoflora_storage) -"aHK" = ( -/turf/simulated/mineral, -/area/maintenance/lower/research) -"aHL" = ( -/obj/effect/floor_decal/rust, -/obj/effect/decal/cleanable/dirt, -/turf/simulated/floor/tiled/steel_dirty, -/area/maintenance/lower/research) "aHM" = ( -/obj/effect/floor_decal/techfloor{ - dir = 8 - }, -/obj/effect/floor_decal/industrial/warning, -/turf/simulated/floor/tiled/techfloor, -/area/engineering/drone_fabrication) -"aHN" = ( -/obj/effect/floor_decal/industrial/warning, -/obj/machinery/atmospherics/pipe/simple/hidden/supply, -/turf/simulated/floor/tiled/techfloor, -/area/engineering/drone_fabrication) -"aHO" = ( -/obj/effect/floor_decal/corner_techfloor_grid{ - dir = 4 - }, -/obj/effect/floor_decal/industrial/warning, -/obj/effect/landmark{ - name = "JoinLateCyborg" - }, -/turf/simulated/floor/tiled/techfloor, -/area/engineering/drone_fabrication) -"aHP" = ( -/obj/effect/floor_decal/techfloor{ - dir = 1 - }, -/obj/effect/floor_decal/industrial/warning, /obj/machinery/alarm{ - pixel_y = 22 + dir = 4; + icon_state = "alarm0"; + pixel_x = -22 }, -/turf/simulated/floor/tiled/techfloor, -/area/engineering/drone_fabrication) +/obj/effect/floor_decal/industrial/outline/yellow, +/obj/machinery/pipedispenser/disposal, +/turf/simulated/floor/tiled, +/area/engineering/atmos) +"aHN" = ( +/obj/structure/cable/cyan{ + d1 = 2; + d2 = 4; + icon_state = "2-4" + }, +/turf/simulated/floor/tiled, +/area/engineering/atmos) +"aHO" = ( +/obj/structure/cable/cyan{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/turf/simulated/floor/tiled, +/area/engineering/atmos) "aHV" = ( /obj/effect/floor_decal/industrial/warning/dust{ dir = 4 @@ -14295,57 +14469,21 @@ /area/rnd/xenobiology/xenoflora_storage) "aHW" = ( /obj/effect/floor_decal/rust, -/turf/simulated/floor/tiled/steel_dirty, +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/turf/simulated/floor/plating, /area/maintenance/lower/research) -"aHX" = ( -/obj/effect/floor_decal/rust, -/obj/machinery/alarm{ - pixel_y = 22 - }, -/turf/simulated/floor/tiled/steel_dirty, -/area/maintenance/lower/research) -"aHY" = ( -/obj/structure/bed/chair{ - dir = 4 - }, -/obj/machinery/atmospherics/unary/vent_scrubber/on{ - dir = 4 - }, -/turf/simulated/floor/tiled/steel_dirty, -/area/engineering/drone_fabrication) "aHZ" = ( -/obj/machinery/computer/drone_control{ - dir = 8 - }, -/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ - dir = 4 - }, /obj/machinery/atmospherics/pipe/simple/hidden/supply{ - dir = 5 + dir = 10 }, -/turf/simulated/floor/tiled/steel_dirty, -/area/engineering/drone_fabrication) -"aIa" = ( -/obj/machinery/drone_fabricator{ - fabricator_tag = "Near Atmosia" +/obj/structure/cable/cyan{ + d1 = 1; + d2 = 2; + icon_state = "1-2" }, -/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ - dir = 4 - }, -/obj/machinery/atmospherics/pipe/simple/hidden/supply{ - dir = 4 - }, -/turf/simulated/floor/tiled/steel_dirty, -/area/engineering/drone_fabrication) -"aIb" = ( -/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ - dir = 4 - }, -/obj/machinery/atmospherics/pipe/simple/hidden/supply{ - dir = 4 - }, -/turf/simulated/floor/tiled/steel_dirty, -/area/engineering/drone_fabrication) +/turf/simulated/floor/tiled, +/area/engineering/atmos) "aId" = ( /obj/effect/floor_decal/borderfloor{ dir = 8 @@ -14395,45 +14533,24 @@ }, /turf/simulated/floor/tiled/techmaint, /area/rnd/xenobiology/xenoflora_storage) -"aIi" = ( -/obj/structure/ladder/up, -/obj/effect/floor_decal/rust, -/turf/simulated/floor/tiled/steel_dirty, -/area/maintenance/lower/research) "aIk" = ( -/obj/effect/floor_decal/techfloor{ +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, +/turf/simulated/floor/tiled, +/area/engineering/atmos) +"aIl" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ dir = 10 }, -/obj/effect/floor_decal/industrial/warning{ - dir = 1 +/obj/structure/cable/cyan{ + d1 = 1; + d2 = 2; + icon_state = "1-2" }, -/turf/simulated/floor/tiled/techfloor, -/area/engineering/drone_fabrication) -"aIl" = ( -/obj/effect/floor_decal/techfloor, -/obj/effect/floor_decal/industrial/warning{ - dir = 1 - }, -/turf/simulated/floor/tiled/techfloor, -/area/engineering/drone_fabrication) -"aIm" = ( -/obj/machinery/light, -/obj/effect/floor_decal/techfloor, -/obj/effect/floor_decal/industrial/warning{ - dir = 1 - }, -/turf/simulated/floor/tiled/techfloor, -/area/engineering/drone_fabrication) -"aIn" = ( -/obj/effect/floor_decal/techfloor, -/obj/effect/floor_decal/industrial/warning{ - dir = 1 - }, -/obj/machinery/camera/network/engineering{ - dir = 1 - }, -/turf/simulated/floor/tiled/techfloor, -/area/engineering/drone_fabrication) +/turf/simulated/floor/tiled, +/area/engineering/atmos) "aIp" = ( /turf/simulated/mineral, /area/rnd/external) @@ -14463,287 +14580,109 @@ /obj/random/maintenance/clean, /turf/simulated/floor/tiled/steel_dirty, /area/maintenance/lower/research) -"aIt" = ( -/obj/effect/floor_decal/rust, -/obj/random/junk, -/turf/simulated/floor/tiled/steel_dirty, -/area/maintenance/lower/research) -"aIu" = ( -/obj/effect/floor_decal/rust, -/obj/structure/closet, -/obj/random/maintenance/research, -/obj/random/maintenance/research, -/obj/random/maintenance/research, -/obj/random/maintenance/clean, -/turf/simulated/floor/tiled/steel_dirty, -/area/maintenance/lower/research) "aIv" = ( /turf/simulated/wall/r_wall, /area/engineering/atmos/processing) "aIz" = ( -/obj/effect/floor_decal/techfloor{ +/obj/machinery/atmospherics/pipe/simple/visible/green, +/obj/effect/floor_decal/borderfloor/corner{ dir = 1 }, -/turf/simulated/floor/tiled/techfloor, -/area/engineering/atmos/processing) -"aIA" = ( -/obj/effect/floor_decal/techfloor{ +/obj/effect/floor_decal/corner/yellow/bordercorner{ + icon_state = "bordercolorcorner"; dir = 1 }, -/obj/structure/extinguisher_cabinet{ - pixel_y = 30 - }, -/turf/simulated/floor/tiled/techfloor, -/area/engineering/atmos/processing) -"aIB" = ( -/obj/machinery/light{ - dir = 1 - }, -/obj/effect/floor_decal/techfloor{ - dir = 1 - }, -/obj/machinery/atmospherics/unary/vent_scrubber/on, -/turf/simulated/floor/tiled/techfloor, -/area/engineering/atmos/processing) +/turf/simulated/floor/tiled, +/area/engineering/atmos) "aIG" = ( -/obj/effect/floor_decal/techfloor{ - dir = 1 - }, -/obj/machinery/camera/network/engineering, -/turf/simulated/floor/tiled/techfloor, -/area/engineering/atmos/processing) -"aIH" = ( -/obj/effect/floor_decal/industrial/warning{ - icon_state = "warning"; - dir = 1 - }, -/obj/machinery/atmospherics/unary/vent_pump{ +/obj/machinery/atmospherics/binary/pump{ dir = 4; - use_power = 0 + name = "Port to Isolation" }, /turf/simulated/floor/tiled, -/area/rnd/anomaly_lab/containment_one) -"aII" = ( -/obj/effect/floor_decal/techfloor{ - dir = 1 - }, -/obj/machinery/status_display{ - pixel_y = 30 - }, -/turf/simulated/floor/tiled/techfloor, -/area/engineering/atmos/processing) -"aIJ" = ( -/obj/effect/floor_decal/techfloor{ - dir = 1 - }, -/obj/machinery/alarm{ - pixel_y = 22 - }, -/turf/simulated/floor/tiled/techfloor, -/area/engineering/atmos/processing) -"aIK" = ( -/obj/effect/floor_decal/industrial/warning{ - icon_state = "warning"; - dir = 1 - }, -/obj/machinery/atmospherics/unary/vent_scrubber{ - dir = 8 - }, -/obj/structure/cable/green{ - d1 = 1; - d2 = 2; - icon_state = "1-2" - }, -/turf/simulated/floor/tiled, -/area/rnd/anomaly_lab/containment_one) +/area/engineering/atmos) "aIL" = ( -/obj/machinery/light{ - dir = 1 - }, -/obj/effect/floor_decal/techfloor{ - dir = 1 - }, -/turf/simulated/floor/tiled/techfloor, -/area/engineering/atmos/processing) -"aIM" = ( -/obj/effect/floor_decal/techfloor{ - dir = 5 - }, -/turf/simulated/floor/tiled/techfloor, -/area/engineering/atmos/processing) -"aIN" = ( -/obj/effect/floor_decal/techfloor{ +/obj/machinery/atmospherics/portables_connector{ dir = 8 }, -/turf/simulated/floor/tiled/techfloor, -/area/engineering/atmos/processing) -"aIO" = ( -/obj/effect/floor_decal/industrial/warning{ - icon_state = "warning"; - dir = 1 - }, -/obj/machinery/atmospherics/pipe/manifold/visible/yellow{ - dir = 1 - }, -/turf/simulated/floor/tiled, -/area/rnd/anomaly_lab/containment_one) -"aIP" = ( -/obj/machinery/atmospherics/pipe/simple/visible/universal{ +/obj/effect/floor_decal/industrial/outline/yellow, +/turf/simulated/floor/tiled/techmaint, +/area/engineering/atmos) +"aIT" = ( +/obj/machinery/atmospherics/unary/freezer{ dir = 4 }, -/turf/simulated/floor/tiled/techfloor, -/area/engineering/atmos/processing) -"aIQ" = ( -/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers, -/obj/machinery/atmospherics/pipe/simple/hidden/supply{ +/turf/simulated/floor/tiled/techmaint, +/area/engineering/atmos) +"aIU" = ( +/obj/machinery/atmospherics/pipe/manifold/visible/yellow{ + dir = 4 + }, +/obj/machinery/meter, +/obj/effect/floor_decal/borderfloor{ + dir = 8 + }, +/obj/effect/floor_decal/corner/yellow/border{ + icon_state = "bordercolor"; + dir = 8 + }, +/turf/simulated/floor/tiled, +/area/engineering/atmos) +"aIY" = ( +/obj/machinery/atmospherics/pipe/simple/visible/green, +/turf/simulated/floor/tiled, +/area/engineering/atmos) +"aJa" = ( +/obj/machinery/atmospherics/pipe/simple/visible/cyan{ dir = 6 }, -/turf/simulated/floor/tiled/techfloor, -/area/engineering/atmos/processing) -"aIR" = ( -/obj/effect/floor_decal/industrial/warning{ - icon_state = "warning"; - dir = 1 - }, -/obj/machinery/atmospherics/unary/vent_pump{ - dir = 4; - use_power = 0 - }, -/obj/structure/cable/green{ - d1 = 1; - d2 = 2; - icon_state = "1-2" - }, /turf/simulated/floor/tiled, -/area/rnd/anomaly_lab/containment_two) -"aIS" = ( -/obj/machinery/atmospherics/pipe/simple/hidden/supply{ - dir = 4 - }, -/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ - dir = 4 - }, -/obj/machinery/atmospherics/pipe/simple/visible/yellow{ - dir = 10 - }, -/turf/simulated/floor/tiled/techfloor, -/area/engineering/atmos/processing) -"aIT" = ( -/obj/machinery/atmospherics/pipe/simple/hidden/supply{ - dir = 4 - }, -/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ - dir = 4 - }, -/turf/simulated/floor/tiled/techfloor, -/area/engineering/atmos/processing) -"aIU" = ( -/obj/machinery/atmospherics/pipe/simple/hidden/supply{ - dir = 4 - }, -/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ - dir = 4 - }, -/obj/machinery/atmospherics/pipe/cap/visible, -/turf/simulated/floor/tiled/techfloor, -/area/engineering/atmos/processing) -"aIV" = ( -/obj/effect/floor_decal/industrial/warning/corner, -/obj/machinery/atmospherics/pipe/simple/hidden/supply{ - dir = 4 - }, -/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ - dir = 4 - }, -/turf/simulated/floor/tiled/techfloor, -/area/engineering/atmos/processing) -"aIW" = ( -/obj/effect/floor_decal/industrial/warning, -/obj/machinery/atmospherics/pipe/simple/hidden/supply{ - dir = 4 - }, -/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ - dir = 4 - }, -/turf/simulated/floor/tiled/techfloor, -/area/engineering/atmos/processing) -"aIX" = ( -/obj/effect/floor_decal/industrial/warning/corner{ - dir = 8 - }, -/obj/machinery/atmospherics/pipe/simple/hidden/supply{ - dir = 4 - }, -/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ - dir = 4 - }, -/turf/simulated/floor/tiled/techfloor, -/area/engineering/atmos/processing) -"aIY" = ( -/obj/effect/floor_decal/industrial/warning/corner, -/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ - dir = 10 - }, -/obj/machinery/atmospherics/pipe/simple/hidden/supply{ - dir = 10 - }, -/turf/simulated/floor/tiled/techfloor, -/area/engineering/atmos/processing) -"aIZ" = ( -/obj/structure/window/reinforced, -/turf/simulated/floor/tiled/techfloor, -/area/engineering/atmos/processing) -"aJa" = ( -/obj/structure/window/reinforced, -/obj/effect/floor_decal/techfloor{ - dir = 4 - }, -/turf/simulated/floor/tiled/techfloor, -/area/engineering/atmos/processing) +/area/engineering/atmos) "aJb" = ( /turf/simulated/wall/r_wall, /area/engineering/atmos/intake) -"aJc" = ( -/obj/effect/floor_decal/industrial/warning{ - icon_state = "warning"; - dir = 1 - }, -/obj/machinery/atmospherics/unary/vent_scrubber{ +"aJd" = ( +/obj/machinery/atmospherics/pipe/manifold/visible/yellow{ dir = 8 }, /turf/simulated/floor/tiled, -/area/rnd/anomaly_lab/containment_two) -"aJd" = ( -/obj/machinery/atmospherics/pipe/simple/visible/red, -/turf/simulated/floor/tiled/techfloor, -/area/engineering/atmos/processing) +/area/engineering/atmos) "aJe" = ( -/turf/simulated/floor/tiled/techfloor, -/area/engineering/atmos/processing) -"aJf" = ( -/obj/machinery/atmospherics/unary/vent_pump/on{ +/obj/machinery/atmospherics/portables_connector{ + dir = 4 + }, +/obj/effect/floor_decal/industrial/outline/yellow, +/turf/simulated/floor/tiled/techmaint, +/area/engineering/atmos) +"aJh" = ( +/obj/machinery/light{ dir = 1 }, -/turf/simulated/floor/tiled/techfloor, -/area/engineering/atmos/processing) -"aJg" = ( -/obj/effect/floor_decal/industrial/warning{ - icon_state = "warning"; +/obj/machinery/atmospherics/pipe/simple/visible/yellow{ + dir = 4 + }, +/obj/effect/floor_decal/borderfloor{ dir = 1 }, -/obj/machinery/atmospherics/pipe/manifold/visible/yellow{ +/obj/effect/floor_decal/corner/yellow/border{ + icon_state = "bordercolor"; dir = 1 }, /turf/simulated/floor/tiled, -/area/rnd/anomaly_lab/containment_two) -"aJh" = ( -/obj/machinery/atmospherics/pipe/simple/visible/yellow, -/turf/simulated/floor/tiled/techfloor, -/area/engineering/atmos/processing) +/area/engineering/atmos) "aJi" = ( -/obj/machinery/atmospherics/valve/digital, -/turf/simulated/floor/tiled/techfloor, -/area/engineering/atmos/processing) +/obj/machinery/atmospherics/pipe/manifold/visible/yellow{ + dir = 4 + }, +/obj/effect/floor_decal/borderfloor{ + dir = 8 + }, +/obj/effect/floor_decal/corner/yellow/border{ + icon_state = "bordercolor"; + dir = 8 + }, +/turf/simulated/floor/tiled, +/area/engineering/atmos) "aJj" = ( /obj/structure/table/glass, /obj/item/device/radio/phone/medbay{ @@ -14762,47 +14701,6 @@ "aJk" = ( /turf/simulated/floor/tiled/techmaint, /area/engineering/atmos/processing) -"aJl" = ( -/obj/effect/floor_decal/industrial/warning{ - dir = 8 - }, -/obj/machinery/atmospherics/pipe/simple/visible/blue{ - dir = 6 - }, -/turf/simulated/floor/tiled/techfloor, -/area/engineering/atmos/processing) -"aJm" = ( -/obj/effect/floor_decal/industrial/warning{ - dir = 9 - }, -/obj/machinery/atmospherics/pipe/simple/visible/blue{ - dir = 4 - }, -/turf/simulated/floor/tiled/techmaint, -/area/engineering/atmos/processing) -"aJn" = ( -/obj/effect/floor_decal/industrial/warning{ - dir = 1 - }, -/obj/structure/closet/crate/hydroponics, -/obj/item/stack/material/algae, -/obj/item/stack/material/algae, -/obj/item/stack/material/algae, -/obj/machinery/atmospherics/pipe/simple/visible/blue{ - dir = 4 - }, -/obj/item/stack/material/algae, -/turf/simulated/floor/tiled/techmaint, -/area/engineering/atmos/processing) -"aJo" = ( -/obj/effect/floor_decal/industrial/warning{ - dir = 5 - }, -/obj/machinery/atmospherics/pipe/simple/visible/blue{ - dir = 10 - }, -/turf/simulated/floor/tiled/techmaint, -/area/engineering/atmos/processing) "aJp" = ( /obj/item/device/radio/intercom{ dir = 2; @@ -14813,10 +14711,6 @@ }, /turf/simulated/floor/tiled/white, /area/tether/surfacebase/medical/first_aid_west) -"aJq" = ( -/obj/machinery/portable_atmospherics/canister/empty, -/turf/simulated/floor/tiled/techmaint, -/area/engineering/atmos/processing) "aJr" = ( /obj/machinery/atmospherics/unary/vent_scrubber/on{ dir = 1 @@ -14835,8 +14729,8 @@ /turf/simulated/floor/tiled/white, /area/tether/surfacebase/medical/first_aid_west) "aJs" = ( -/turf/simulated/mineral, -/area/engineering/atmos/intake) +/turf/simulated/floor/tiled, +/area/engineering/atmos/processing) "aJt" = ( /turf/simulated/floor/tiled/steel_dirty/virgo3b, /area/engineering/atmos/intake) @@ -14852,59 +14746,87 @@ /turf/simulated/floor/tiled, /area/hallway/lower/first_west) "aJv" = ( -/obj/machinery/atmospherics/pipe/simple/visible/red{ +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ dir = 4 }, -/turf/simulated/floor/tiled/steel_dirty/virgo3b, -/area/engineering/atmos/intake) +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/obj/structure/cable/cyan{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/turf/simulated/floor/tiled, +/area/engineering/atmos) "aJw" = ( -/obj/machinery/atmospherics/pipe/simple/visible/red{ - dir = 4 +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 9 }, -/obj/machinery/door/firedoor, -/obj/structure/grille, -/obj/structure/window/reinforced/full, -/turf/simulated/floor/plating, -/area/engineering/atmos/processing) +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 9 + }, +/obj/structure/cable/cyan{ + d1 = 1; + d2 = 8; + icon_state = "1-8" + }, +/obj/structure/cable/cyan{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/turf/simulated/floor/tiled, +/area/engineering/atmos) "aJy" = ( -/obj/machinery/atmospherics/pipe/manifold/visible/red{ - dir = 4 +/obj/machinery/atmospherics/pipe/simple/visible/yellow{ + dir = 6 }, -/turf/simulated/floor/tiled/techfloor, -/area/engineering/atmos/processing) +/turf/simulated/floor/tiled, +/area/engineering/atmos) "aJA" = ( -/obj/machinery/atmospherics/pipe/manifold/visible/yellow{ +/obj/machinery/atmospherics/pipe/simple/visible/yellow{ + dir = 9 + }, +/obj/effect/floor_decal/borderfloor{ dir = 8 }, -/turf/simulated/floor/tiled/techfloor, -/area/engineering/atmos/processing) +/obj/effect/floor_decal/corner/yellow/border{ + icon_state = "bordercolor"; + dir = 8 + }, +/turf/simulated/floor/tiled, +/area/engineering/atmos) "aJC" = ( /obj/machinery/atmospherics/pipe/simple/visible/yellow{ dir = 4 }, -/obj/machinery/meter, -/turf/simulated/floor/tiled/techmaint, -/area/engineering/atmos/processing) -"aJE" = ( -/obj/effect/floor_decal/industrial/warning{ - dir = 8 - }, -/obj/machinery/atmospherics/binary/pump, -/turf/simulated/floor/tiled/techfloor, -/area/engineering/atmos/processing) -"aJG" = ( -/obj/machinery/atmospherics/binary/algae_farm/filled{ +/obj/effect/floor_decal/borderfloor/corner{ dir = 4 }, -/turf/simulated/floor/tiled/techmaint, -/area/engineering/atmos/processing) -"aJI" = ( -/obj/machinery/portable_atmospherics/canister/empty, -/obj/machinery/camera/network/engineering{ - dir = 8 +/obj/effect/floor_decal/corner/yellow/bordercorner{ + icon_state = "bordercolorcorner"; + dir = 4 }, -/turf/simulated/floor/tiled/techmaint, -/area/engineering/atmos/processing) +/turf/simulated/floor/tiled, +/area/engineering/atmos) +"aJG" = ( +/obj/machinery/atmospherics/pipe/simple/visible/yellow{ + dir = 10 + }, +/obj/effect/floor_decal/borderfloor/corner{ + dir = 4 + }, +/obj/effect/floor_decal/corner/yellow/bordercorner{ + icon_state = "bordercolorcorner"; + dir = 4 + }, +/turf/simulated/floor/tiled, +/area/engineering/atmos) +"aJI" = ( +/obj/machinery/atmospherics/pipe/manifold4w/visible/black, +/turf/simulated/floor/tiled, +/area/engineering/atmos) "aJJ" = ( /obj/machinery/atmospherics/pipe/simple/heat_exchanging{ dir = 6 @@ -14918,25 +14840,26 @@ /turf/simulated/floor/tiled/steel_dirty/virgo3b, /area/engineering/atmos/intake) "aJL" = ( -/obj/structure/stairs/north, -/turf/simulated/floor/tiled/techfloor, -/area/engineering/atmos/processing) -"aJO" = ( -/obj/effect/floor_decal/industrial/warning{ - dir = 8 - }, -/obj/machinery/atmospherics/pipe/manifold/visible/yellow{ +/obj/machinery/atmospherics/pipe/simple/visible/yellow{ dir = 4 }, -/turf/simulated/floor/tiled/techfloor, -/area/engineering/atmos/processing) +/obj/machinery/atmospherics/binary/pump/on{ + dir = 2; + name = "Waste Compresser" + }, +/turf/simulated/floor/tiled, +/area/engineering/atmos) "aJQ" = ( -/obj/machinery/portable_atmospherics/canister/empty/phoron, +/obj/machinery/atmospherics/pipe/simple/visible/black, +/turf/simulated/floor/tiled, +/area/engineering/atmos) +"aJR" = ( +/obj/machinery/atmospherics/pipe/manifold/visible/black{ + dir = 1 + }, +/obj/machinery/meter, /turf/simulated/floor/tiled/techmaint, /area/engineering/atmos/processing) -"aJR" = ( -/turf/simulated/floor/outdoors/grass/sif/virgo3b, -/area/engineering/atmos/intake) "aJS" = ( /obj/machinery/atmospherics/pipe/simple/heat_exchanging{ dir = 5 @@ -14944,18 +14867,14 @@ /turf/simulated/floor/tiled/steel_dirty/virgo3b, /area/engineering/atmos/intake) "aJT" = ( -/obj/machinery/atmospherics/pipe/simple/heat_exchanging, -/obj/machinery/atmospherics/pipe/simple/heat_exchanging{ +/obj/machinery/atmospherics/pipe/simple/visible/purple{ + icon_state = "intact"; + dir = 10 + }, +/obj/machinery/light{ dir = 4 }, -/turf/simulated/floor/tiled/steel_dirty/virgo3b, -/area/engineering/atmos/intake) -"aJV" = ( -/obj/effect/floor_decal/industrial/warning{ - dir = 8 - }, -/obj/machinery/atmospherics/pipe/simple/visible/yellow, -/turf/simulated/floor/tiled/techfloor, +/turf/simulated/floor/tiled, /area/engineering/atmos/processing) "aJW" = ( /obj/machinery/atmospherics/pipe/simple/heat_exchanging{ @@ -14963,41 +14882,13 @@ }, /turf/simulated/floor/tiled/steel_dirty/virgo3b, /area/engineering/atmos/intake) -"aJX" = ( -/obj/effect/floor_decal/techfloor{ - dir = 8 - }, -/obj/machinery/camera/network/engineering{ - dir = 4 - }, -/obj/machinery/atmospherics/binary/pump, -/turf/simulated/floor/tiled/techfloor, -/area/engineering/atmos/processing) -"aJZ" = ( -/obj/machinery/atmospherics/pipe/simple/visible/red{ - dir = 4 - }, -/turf/simulated/floor/tiled/techfloor, -/area/engineering/atmos/processing) -"aKc" = ( -/obj/machinery/atmospherics/pipe/manifold/visible/yellow{ - dir = 4 - }, -/obj/machinery/meter, -/turf/simulated/floor/tiled/techfloor, -/area/engineering/atmos/processing) "aKd" = ( -/obj/machinery/hologram/holopad, -/turf/simulated/floor/tiled/techfloor, -/area/engineering/atmos/processing) -"aKe" = ( -/obj/effect/floor_decal/industrial/warning{ - dir = 8 +/obj/machinery/atmospherics/pipe/manifold/visible/green{ + dir = 1 }, -/obj/machinery/atmospherics/pipe/simple/visible/yellow, /obj/machinery/meter, -/turf/simulated/floor/tiled/techfloor, -/area/engineering/atmos/processing) +/turf/simulated/floor/tiled, +/area/engineering/atmos) "aKf" = ( /obj/structure/catwalk, /obj/structure/disposalpipe/segment{ @@ -15006,27 +14897,6 @@ }, /turf/simulated/floor/tiled/techfloor, /area/maintenance/lower/xenoflora) -"aKh" = ( -/obj/structure/window/reinforced{ - dir = 1 - }, -/turf/simulated/floor/tiled/techfloor, -/area/engineering/atmos/processing) -"aKi" = ( -/obj/effect/floor_decal/techfloor{ - dir = 4 - }, -/obj/structure/window/reinforced{ - dir = 1 - }, -/turf/simulated/floor/tiled/techfloor, -/area/engineering/atmos/processing) -"aKj" = ( -/obj/structure/sign/warning/caution{ - name = "\improper CAUTION - ATMOSPHERICS AREA" - }, -/turf/simulated/wall/r_wall, -/area/engineering/atmos/intake) "aKk" = ( /obj/machinery/atmospherics/pipe/simple/heat_exchanging{ dir = 5 @@ -15043,86 +14913,72 @@ /turf/simulated/floor/tiled/steel_dirty/virgo3b, /area/engineering/atmos/intake) "aKm" = ( -/obj/machinery/atmospherics/pipe/simple/heat_exchanging/junction{ - dir = 8 +/obj/machinery/atmospherics/pipe/simple/visible/purple{ + dir = 4 }, -/turf/simulated/floor/tiled/steel_dirty/virgo3b, -/area/engineering/atmos/intake) +/turf/simulated/floor/tiled, +/area/engineering/atmos) "aKn" = ( +/obj/machinery/atmospherics/pipe/simple/visible/purple{ + dir = 4 + }, +/obj/structure/cable/cyan{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/turf/simulated/floor/tiled, +/area/engineering/atmos) +"aKo" = ( +/obj/machinery/atmospherics/valve/digital{ + dir = 4 + }, +/turf/simulated/floor/tiled, +/area/engineering/atmos) +"aKs" = ( +/obj/machinery/atmospherics/pipe/simple/visible/yellow, +/obj/machinery/meter, +/turf/simulated/floor/tiled, +/area/engineering/atmos) +"aKu" = ( +/obj/machinery/atmospherics/pipe/simple/visible/green{ + icon_state = "intact"; + dir = 5 + }, +/turf/simulated/floor/tiled, +/area/engineering/atmos) +"aKv" = ( /obj/machinery/atmospherics/pipe/simple/visible/black{ dir = 4 }, -/obj/machinery/door/firedoor, -/obj/structure/grille, -/obj/structure/window/reinforced/full, -/turf/simulated/floor/plating, -/area/engineering/atmos/processing) -"aKo" = ( -/obj/effect/floor_decal/techfloor{ - dir = 8 +/obj/machinery/atmospherics/binary/passive_gate/on{ + dir = 1; + target_pressure = 15000 }, -/obj/machinery/atmospherics/pipe/manifold4w/visible/black, -/turf/simulated/floor/tiled/techfloor, -/area/engineering/atmos/processing) -"aKr" = ( -/obj/effect/floor_decal/industrial/warning{ - dir = 10 +/turf/simulated/floor/tiled, +/area/engineering/atmos) +"aKw" = ( +/obj/machinery/atmospherics/pipe/simple/visible/green{ + dir = 4 }, -/obj/machinery/atmospherics/binary/pump{ +/obj/machinery/atmospherics/binary/passive_gate{ dir = 1 }, -/turf/simulated/floor/tiled/techmaint, -/area/engineering/atmos/processing) -"aKs" = ( -/obj/effect/floor_decal/industrial/warning, -/turf/simulated/floor/tiled/techmaint, -/area/engineering/atmos/processing) -"aKt" = ( -/obj/effect/floor_decal/industrial/warning{ - dir = 6 - }, -/turf/simulated/floor/tiled/techmaint, -/area/engineering/atmos/processing) -"aKu" = ( -/obj/machinery/atmospherics/pipe/simple/hidden/supply, -/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, -/turf/simulated/floor/tiled/techfloor, -/area/engineering/atmos/processing) -"aKv" = ( -/obj/effect/floor_decal/techfloor{ - dir = 4 - }, -/turf/simulated/floor/tiled/techfloor, -/area/engineering/atmos/processing) -"aKw" = ( -/obj/machinery/atmospherics/pipe/simple/heat_exchanging{ - dir = 6 - }, -/obj/machinery/atmospherics/pipe/simple/heat_exchanging{ - dir = 9 - }, -/turf/simulated/floor/tiled/steel_dirty/virgo3b, -/area/engineering/atmos/intake) -"aKx" = ( -/obj/effect/floor_decal/techfloor{ - dir = 8 - }, -/obj/machinery/atmospherics/pipe/manifold4w/visible/black, -/obj/machinery/meter, -/turf/simulated/floor/tiled/techfloor, +/turf/simulated/floor/tiled, /area/engineering/atmos/processing) "aKy" = ( -/obj/machinery/atmospherics/unary/heat_exchanger{ - dir = 8 - }, -/turf/simulated/floor/tiled/techfloor, -/area/engineering/atmos/processing) -"aKz" = ( -/obj/machinery/atmospherics/unary/heat_exchanger{ +/obj/machinery/atmospherics/pipe/simple/visible/black{ dir = 4 }, -/turf/simulated/floor/tiled/techfloor, -/area/engineering/atmos/processing) +/obj/machinery/atmospherics/valve/digital, +/turf/simulated/floor/tiled, +/area/engineering/atmos) +"aKz" = ( +/obj/machinery/atmospherics/pipe/manifold/visible/black{ + dir = 4 + }, +/turf/simulated/floor/tiled, +/area/engineering/atmos) "aKA" = ( /obj/structure/cable{ d1 = 1; @@ -15142,65 +14998,23 @@ /turf/simulated/floor/grass, /area/tether/surfacebase/atrium_one) "aKC" = ( -/obj/machinery/atmospherics/portables_connector, -/obj/effect/floor_decal/industrial/hatch/yellow, -/turf/simulated/floor/tiled/techmaint, -/area/engineering/atmos/processing) -"aKF" = ( -/obj/effect/floor_decal/industrial/warning{ - dir = 8 - }, -/turf/simulated/floor/tiled/techmaint, -/area/engineering/atmos/processing) -"aKK" = ( -/obj/structure/table/standard, -/obj/machinery/computer/atmoscontrol/laptop{ - monitored_alarm_ids = list("isolation_one","isolation_two"); - req_one_access = list(47,24,11) +/obj/machinery/atmospherics/omni/atmos_filter{ + name = "N2/O2 Filter"; + tag_east = 4; + tag_north = 3; + tag_south = 2; + tag_west = 1 }, /turf/simulated/floor/tiled, -/area/rnd/anomaly_lab) -"aKL" = ( -/obj/machinery/atmospherics/pipe/manifold/visible/yellow{ - dir = 4 - }, -/turf/simulated/floor/tiled/techfloor, -/area/engineering/atmos/processing) +/area/engineering/atmos) "aKM" = ( -/obj/machinery/meter, -/obj/machinery/atmospherics/pipe/manifold/visible/yellow{ - dir = 8 +/obj/machinery/atmospherics/binary/passive_gate/on{ + target_pressure = 15000 }, -/turf/simulated/floor/tiled/techfloor, -/area/engineering/atmos/processing) -"aKN" = ( -/obj/machinery/door/airlock/glass_external{ - name = "Isolation Room 1"; - req_access = list(65); - req_one_access = list(47) - }, -/obj/structure/cable/green{ - d1 = 1; - d2 = 2; - icon_state = "1-2" - }, -/obj/machinery/door/firedoor/glass, +/obj/effect/floor_decal/borderfloor, +/obj/effect/floor_decal/corner/orange/border, /turf/simulated/floor/tiled, -/area/rnd/anomaly_lab/containment_one) -"aKO" = ( -/obj/structure/cable/green{ - d1 = 1; - d2 = 2; - icon_state = "1-2" - }, -/obj/machinery/door/firedoor/glass, -/obj/machinery/door/airlock/glass_external{ - name = "Isolation Room 2"; - req_access = list(65); - req_one_access = list(47) - }, -/turf/simulated/floor/tiled, -/area/rnd/anomaly_lab/containment_two) +/area/engineering/atmos) "aKP" = ( /obj/structure/cable/green{ d1 = 1; @@ -15213,60 +15027,34 @@ /turf/simulated/floor/tiled, /area/hallway/lower/first_west) "aKS" = ( -/obj/machinery/atmospherics/pipe/simple/visible{ - dir = 4 - }, -/turf/simulated/floor/tiled/steel_dirty/virgo3b, -/area/engineering/atmos/intake) -"aKT" = ( -/obj/machinery/atmospherics/pipe/simple/visible{ - dir = 4 - }, -/obj/machinery/door/firedoor, -/obj/structure/grille, -/obj/structure/window/reinforced/full, -/turf/simulated/floor/plating, -/area/engineering/atmos/processing) +/obj/machinery/atmospherics/pipe/manifold/visible/black, +/turf/simulated/floor/tiled, +/area/engineering/atmos) "aKV" = ( +/obj/machinery/light, /obj/machinery/atmospherics/pipe/simple/visible/yellow{ - dir = 10 + dir = 9 }, -/turf/simulated/floor/tiled/techfloor, -/area/engineering/atmos/processing) +/obj/effect/floor_decal/borderfloor{ + dir = 4 + }, +/obj/effect/floor_decal/corner/black/border{ + icon_state = "bordercolor"; + dir = 4 + }, +/turf/simulated/floor/tiled, +/area/engineering/atmos) "aLb" = ( -/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ - dir = 10 - }, -/turf/simulated/floor/tiled/techfloor, -/area/engineering/atmos/processing) -"aLe" = ( -/obj/structure/grille, -/obj/structure/window/reinforced/full, -/obj/machinery/door/firedoor, -/obj/machinery/atmospherics/pipe/simple/visible{ - dir = 4 - }, -/turf/simulated/floor/plating, -/area/engineering/atmos/processing) -"aLf" = ( -/obj/effect/floor_decal/techfloor/corner{ - dir = 1 - }, -/obj/machinery/atmospherics/binary/pump{ - dir = 4 - }, -/turf/simulated/floor/tiled/techfloor, -/area/engineering/atmos/processing) -"aLg" = ( -/obj/machinery/atmospherics/pipe/manifold4w/visible/yellow, -/turf/simulated/floor/tiled/techfloor, -/area/engineering/atmos/processing) +/obj/machinery/light, +/turf/simulated/floor/tiled, +/area/engineering/atmos) "aLh" = ( -/obj/machinery/atmospherics/unary/heater{ - dir = 8 +/obj/machinery/atmospherics/pipe/tank/carbon_dioxide{ + icon_state = "co2_map"; + dir = 4 }, -/turf/simulated/floor/tiled/techfloor, -/area/engineering/atmos/processing) +/turf/simulated/floor/tiled/techmaint, +/area/engineering/atmos) "aLi" = ( /obj/structure/disposalpipe/junction{ dir = 1; @@ -15284,24 +15072,13 @@ /turf/simulated/floor/tiled, /area/tether/surfacebase/atrium_one) "aLk" = ( -/obj/machinery/atmospherics/binary/pump, -/turf/simulated/floor/tiled/techmaint, -/area/engineering/atmos/processing) -"aLl" = ( -/obj/machinery/atmospherics/unary/vent_scrubber/on{ - dir = 1 +/obj/machinery/door/airlock/maintenance/engi{ + name = "Atmospherics"; + req_access = list(24) }, -/turf/simulated/floor/tiled/techfloor, -/area/engineering/atmos/processing) -"aLm" = ( -/obj/effect/floor_decal/techfloor{ - dir = 4 - }, -/obj/machinery/camera/network/engineering{ - dir = 8 - }, -/turf/simulated/floor/tiled/techfloor, -/area/engineering/atmos/processing) +/obj/machinery/door/firedoor, +/turf/simulated/floor/plating, +/area/engineering/atmos) "aLn" = ( /obj/machinery/door/firedoor/glass, /obj/machinery/door/window/brigdoor/northright, @@ -15312,45 +15089,6 @@ /obj/structure/sign/nanotrasen, /turf/simulated/wall, /area/security/checkpoint) -"aLs" = ( -/obj/effect/floor_decal/borderfloor{ - dir = 8 - }, -/obj/effect/floor_decal/industrial/danger{ - dir = 8 - }, -/obj/machinery/atmospherics/valve/digital{ - dir = 4 - }, -/obj/structure/cable/green{ - d1 = 1; - d2 = 2; - icon_state = "1-2" - }, -/turf/simulated/floor/tiled, -/area/rnd/anomaly_lab) -"aLt" = ( -/obj/effect/floor_decal/borderfloor{ - dir = 4 - }, -/obj/effect/floor_decal/industrial/danger{ - dir = 4 - }, -/obj/machinery/atmospherics/valve/digital{ - dir = 4 - }, -/obj/structure/cable/green{ - d1 = 1; - d2 = 2; - icon_state = "1-2" - }, -/turf/simulated/floor/tiled, -/area/rnd/anomaly_lab) -"aLu" = ( -/obj/effect/floor_decal/techfloor, -/obj/machinery/atmospherics/pipe/manifold/visible/yellow, -/turf/simulated/floor/tiled/techfloor, -/area/engineering/atmos/processing) "aLv" = ( /obj/structure/extinguisher_cabinet{ dir = 4; @@ -15398,40 +15136,6 @@ }, /turf/simulated/floor/tiled, /area/hallway/lower/first_west) -"aLx" = ( -/obj/effect/floor_decal/techfloor, -/obj/machinery/atmospherics/pipe/simple/visible/yellow{ - dir = 4 - }, -/turf/simulated/floor/tiled/techfloor, -/area/engineering/atmos/processing) -"aLy" = ( -/obj/effect/floor_decal/techfloor, -/obj/machinery/atmospherics/pipe/simple/visible/yellow{ - dir = 4 - }, -/obj/machinery/meter, -/turf/simulated/floor/tiled/techfloor, -/area/engineering/atmos/processing) -"aLz" = ( -/obj/effect/floor_decal/techfloor, -/obj/machinery/camera/network/engineering{ - dir = 1 - }, -/obj/machinery/atmospherics/pipe/simple/visible/yellow{ - dir = 4 - }, -/turf/simulated/floor/tiled/techfloor, -/area/engineering/atmos/processing) -"aLA" = ( -/obj/machinery/alarm{ - dir = 4; - icon_state = "alarm0"; - pixel_x = -22; - pixel_y = 0 - }, -/turf/simulated/floor/plating, -/area/vacant/vacant_site) "aLB" = ( /obj/structure/catwalk, /obj/machinery/firealarm{ @@ -15443,29 +15147,15 @@ /turf/simulated/floor/tiled/techfloor, /area/maintenance/lower/xenoflora) "aLC" = ( -/obj/machinery/light, -/obj/machinery/atmospherics/portables_connector{ - dir = 1 - }, -/obj/effect/floor_decal/techfloor, -/obj/effect/floor_decal/industrial/hatch/yellow, -/turf/simulated/floor/tiled/techmaint, -/area/engineering/atmos/processing) +/turf/simulated/floor/plating, +/area/maintenance/lower/atmos) "aLD" = ( -/obj/effect/floor_decal/techfloor, -/turf/simulated/floor/tiled/techmaint, -/area/engineering/atmos/processing) +/obj/structure/reagent_dispensers/watertank, +/turf/simulated/floor/plating, +/area/maintenance/lower/atmos) "aLE" = ( -/obj/effect/floor_decal/techfloor, -/turf/simulated/floor/tiled/techfloor, -/area/engineering/atmos/processing) -"aLF" = ( -/obj/effect/floor_decal/techfloor{ - dir = 6 - }, -/obj/machinery/pipedispenser, -/turf/simulated/floor/tiled/techfloor, -/area/engineering/atmos/processing) +/turf/simulated/wall, +/area/crew_quarters/showers) "aLG" = ( /obj/structure/catwalk, /obj/structure/disposalpipe/segment{ @@ -15524,65 +15214,6 @@ }, /turf/simulated/floor/tiled, /area/security/checkpoint) -"aMH" = ( -/obj/effect/floor_decal/borderfloor{ - dir = 8 - }, -/obj/effect/floor_decal/industrial/danger{ - dir = 8 - }, -/obj/structure/cable/green{ - d1 = 1; - d2 = 2; - icon_state = "1-2" - }, -/turf/simulated/floor/tiled, -/area/rnd/anomaly_lab) -"aMJ" = ( -/obj/machinery/power/emitter{ - anchored = 1; - dir = 1; - state = 2 - }, -/obj/effect/floor_decal/steeldecal/steel_decals6, -/obj/effect/floor_decal/steeldecal/steel_decals6{ - dir = 4 - }, -/obj/effect/floor_decal/steeldecal/steel_decals6{ - dir = 1 - }, -/obj/effect/floor_decal/steeldecal/steel_decals6{ - dir = 8 - }, -/obj/structure/cable/green{ - d2 = 2; - icon_state = "0-2" - }, -/turf/simulated/floor/tiled/monotile, -/area/rnd/anomaly_lab) -"aMM" = ( -/obj/effect/floor_decal/borderfloor{ - dir = 4 - }, -/obj/effect/floor_decal/industrial/danger{ - dir = 4 - }, -/obj/structure/cable/green{ - d1 = 1; - d2 = 2; - icon_state = "1-2" - }, -/turf/simulated/floor/tiled, -/area/rnd/anomaly_lab) -"aMR" = ( -/obj/machinery/suspension_gen, -/obj/machinery/alarm{ - dir = 4; - icon_state = "alarm0"; - pixel_x = -22 - }, -/turf/simulated/floor/tiled, -/area/rnd/xenoarch_storage) "aND" = ( /obj/structure/table/standard, /obj/random/tech_supply, @@ -15599,6 +15230,22 @@ }, /turf/simulated/wall, /area/maintenance/lower/xenoflora) +"aOd" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/obj/structure/cable/green{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/obj/item/weapon/caution/cone, +/obj/effect/decal/cleanable/dirt, +/turf/simulated/floor/plating, +/area/maintenance/lower/atmos) "aOf" = ( /obj/effect/floor_decal/borderfloor{ dir = 4 @@ -15620,145 +15267,25 @@ icon_state = "techmaint" }, /area/security/checkpoint) -"aPq" = ( -/obj/machinery/firealarm{ - dir = 1; - pixel_x = 0; - pixel_y = -25 - }, -/obj/structure/closet/firecloset, -/turf/simulated/floor/tiled, -/area/rnd/anomaly_lab) -"aPv" = ( -/obj/effect/floor_decal/borderfloor/corner{ +"aOV" = ( +/obj/machinery/door/firedoor/glass, +/obj/machinery/atmospherics/pipe/simple/visible/purple{ dir = 4 }, -/obj/effect/floor_decal/industrial/danger/corner{ +/obj/structure/grille, +/obj/structure/window/reinforced/full, +/turf/simulated/floor/plating, +/area/engineering/atmos/processing) +"aPU" = ( +/obj/machinery/atmospherics/pipe/simple/visible/scrubbers{ dir = 4 }, -/obj/structure/cable/green{ - d1 = 4; - d2 = 8; - icon_state = "4-8" - }, -/obj/machinery/atmospherics/pipe/simple/hidden/supply{ +/obj/machinery/atmospherics/pipe/simple/visible/supply{ dir = 4 }, -/turf/simulated/floor/tiled, -/area/rnd/anomaly_lab) -"aPx" = ( -/obj/effect/floor_decal/industrial/warning{ - dir = 4 - }, -/obj/structure/cable/green{ - d1 = 2; - d2 = 4; - icon_state = "2-4" - }, -/obj/machinery/atmospherics/pipe/simple/hidden/supply{ - dir = 6 - }, -/turf/simulated/floor/tiled, -/area/rnd/anomaly_lab) -"aPC" = ( -/obj/effect/floor_decal/borderfloor/corner{ - dir = 1 - }, -/obj/effect/floor_decal/industrial/danger/corner{ - dir = 8 - }, -/obj/structure/cable/green{ - d1 = 4; - d2 = 8; - icon_state = "4-8" - }, -/obj/structure/cable/green{ - d1 = 1; - d2 = 8; - icon_state = "1-8" - }, -/obj/machinery/atmospherics/pipe/simple/hidden/supply{ - dir = 10 - }, -/turf/simulated/floor/tiled, -/area/rnd/anomaly_lab) -"aPN" = ( -/obj/effect/floor_decal/borderfloor{ - dir = 1 - }, -/obj/effect/floor_decal/industrial/danger{ - dir = 1 - }, -/obj/structure/cable/green{ - d1 = 1; - d2 = 8; - icon_state = "1-8" - }, -/obj/structure/cable/green{ - d1 = 4; - d2 = 8; - icon_state = "4-8" - }, -/obj/machinery/atmospherics/pipe/simple/hidden/supply{ - dir = 4 - }, -/turf/simulated/floor/tiled, -/area/rnd/anomaly_lab) -"aPQ" = ( -/obj/effect/floor_decal/borderfloor/corner{ - dir = 4 - }, -/obj/effect/floor_decal/industrial/danger/corner{ - dir = 4 - }, -/obj/structure/cable/green{ - d1 = 4; - d2 = 8; - icon_state = "4-8" - }, -/obj/structure/cable/green{ - d1 = 1; - d2 = 8; - icon_state = "1-8" - }, -/turf/simulated/floor/tiled, -/area/rnd/anomaly_lab) -"aQm" = ( -/obj/machinery/atmospherics/pipe/simple/visible/yellow, -/obj/structure/cable/green{ - d1 = 4; - d2 = 8; - icon_state = "4-8" - }, -/turf/simulated/floor/tiled, -/area/rnd/anomaly_lab) -"aQC" = ( -/obj/effect/floor_decal/borderfloor/corner{ - dir = 1 - }, -/obj/effect/floor_decal/industrial/danger/corner{ - dir = 8 - }, -/obj/item/device/radio/intercom{ - dir = 8; - pixel_x = 24 - }, -/turf/simulated/floor/tiled, -/area/rnd/anomaly_lab) -"aQD" = ( -/obj/effect/floor_decal/borderfloor{ - dir = 1 - }, -/obj/effect/floor_decal/industrial/danger{ - dir = 1 - }, -/obj/structure/cable/green{ - d1 = 1; - d2 = 8; - icon_state = "1-8" - }, -/turf/simulated/floor/tiled, -/area/rnd/anomaly_lab) +/obj/structure/catwalk, +/turf/simulated/floor/plating, +/area/maintenance/lower/research) "aQE" = ( /obj/machinery/firealarm{ dir = 8; @@ -15821,20 +15348,6 @@ /obj/random/trash_pile, /turf/simulated/floor/tiled/techfloor, /area/maintenance/lower/xenoflora) -"aQK" = ( -/obj/effect/floor_decal/industrial/loading{ - dir = 8 - }, -/obj/effect/floor_decal/steeldecal/steel_decals6{ - dir = 9 - }, -/obj/effect/floor_decal/steeldecal/steel_decals6{ - dir = 6 - }, -/turf/simulated/floor/tiled{ - icon_state = "monotile" - }, -/area/security/checkpoint) "aQM" = ( /obj/effect/floor_decal/industrial/outline/yellow, /turf/simulated/floor/tiled{ @@ -15856,38 +15369,6 @@ }, /turf/simulated/floor/tiled, /area/tether/surfacebase/tram) -"aRJ" = ( -/obj/effect/floor_decal/industrial/warning{ - dir = 4 - }, -/obj/effect/floor_decal/industrial/warning/corner{ - dir = 8 - }, -/obj/machinery/camera/network/research{ - dir = 4 - }, -/obj/structure/cable/green{ - d1 = 1; - d2 = 2; - icon_state = "1-2" - }, -/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ - dir = 6 - }, -/obj/machinery/atmospherics/pipe/simple/hidden/supply, -/turf/simulated/floor/tiled, -/area/rnd/anomaly_lab) -"aSa" = ( -/obj/structure/cable/green{ - d1 = 4; - d2 = 8; - icon_state = "4-8" - }, -/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ - dir = 9 - }, -/turf/simulated/floor/tiled, -/area/rnd/xenoarch_storage) "aSh" = ( /obj/structure/cable/green{ d1 = 2; @@ -16143,49 +15624,6 @@ }, /turf/simulated/floor/tiled/techfloor/grid, /area/tether/surfacebase/tram) -"aTL" = ( -/obj/effect/floor_decal/industrial/warning{ - dir = 4 - }, -/obj/effect/floor_decal/industrial/warning{ - dir = 8 - }, -/obj/structure/cable/green{ - d1 = 1; - d2 = 2; - icon_state = "1-2" - }, -/obj/machinery/atmospherics/pipe/simple/hidden/supply, -/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, -/turf/simulated/floor/tiled, -/area/rnd/anomaly_lab) -"aTQ" = ( -/obj/machinery/atmospherics/unary/freezer{ - dir = 8 - }, -/obj/effect/floor_decal/corner/blue{ - dir = 6 - }, -/obj/effect/floor_decal/corner/blue{ - dir = 9 - }, -/turf/simulated/floor/tiled, -/area/rnd/anomaly_lab) -"aTR" = ( -/obj/machinery/door/airlock/glass_research{ - name = "Anomalous Materials"; - req_access = list(65) - }, -/obj/structure/cable/green{ - d1 = 1; - d2 = 2; - icon_state = "1-2" - }, -/obj/machinery/atmospherics/pipe/simple/hidden/supply, -/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, -/obj/machinery/door/firedoor/glass, -/turf/simulated/floor/tiled/steel_grid, -/area/rnd/xenoarch_storage) "aTX" = ( /obj/structure/cable{ icon_state = "0-4"; @@ -16264,24 +15702,6 @@ }, /turf/simulated/floor/tiled, /area/tether/surfacebase/atrium_one) -"aUE" = ( -/obj/effect/floor_decal/steeldecal/steel_decals9, -/obj/effect/floor_decal/steeldecal/steel_decals9{ - dir = 4 - }, -/obj/effect/floor_decal/steeldecal/steel_decals9{ - dir = 1 - }, -/obj/effect/floor_decal/steeldecal/steel_decals9{ - dir = 8 - }, -/obj/machinery/light{ - icon_state = "tube1"; - dir = 8 - }, -/obj/structure/reagent_dispensers/coolanttank, -/turf/simulated/floor/tiled/monotile, -/area/rnd/anomaly_lab) "aUH" = ( /obj/structure/cable/green{ d1 = 1; @@ -16320,7 +15740,7 @@ /obj/effect/floor_decal/steeldecal/steel_decals7{ dir = 10 }, -/obj/machinery/camera/network/northern_star{ +/obj/machinery/camera/network/tether{ dir = 8; icon_state = "camera" }, @@ -16462,123 +15882,6 @@ }, /turf/simulated/floor/tiled, /area/tether/surfacebase/tram) -"aWP" = ( -/obj/effect/floor_decal/industrial/warning{ - icon_state = "warning"; - dir = 1 - }, -/obj/structure/cable/green{ - d1 = 4; - d2 = 8; - icon_state = "4-8" - }, -/obj/machinery/atmospherics/pipe/simple/hidden/supply{ - dir = 4 - }, -/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ - dir = 4 - }, -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/turf/simulated/floor/tiled, -/area/rnd/anomaly_lab) -"aWR" = ( -/obj/effect/floor_decal/industrial/warning/corner{ - dir = 4 - }, -/obj/effect/floor_decal/industrial/warning{ - dir = 8 - }, -/obj/structure/cable/green{ - d1 = 1; - d2 = 4; - icon_state = "1-4" - }, -/obj/machinery/atmospherics/pipe/simple/hidden/supply{ - dir = 5 - }, -/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ - dir = 5 - }, -/obj/structure/disposalpipe/segment{ - dir = 4; - icon_state = "pipe-c" - }, -/turf/simulated/floor/tiled, -/area/rnd/anomaly_lab) -"aXb" = ( -/obj/effect/floor_decal/industrial/warning{ - icon_state = "warning"; - dir = 1 - }, -/obj/structure/cable/green{ - d1 = 4; - d2 = 8; - icon_state = "4-8" - }, -/obj/structure/cable/green{ - d1 = 2; - d2 = 4; - icon_state = "2-4" - }, -/obj/machinery/atmospherics/pipe/manifold/hidden/supply{ - dir = 1 - }, -/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{ - dir = 1 - }, -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/turf/simulated/floor/tiled, -/area/rnd/anomaly_lab) -"aXc" = ( -/obj/machinery/door/airlock/glass_research{ - name = "Anomalous Materials"; - req_access = list(65) - }, -/obj/structure/cable/green{ - d1 = 4; - d2 = 8; - icon_state = "4-8" - }, -/obj/machinery/door/firedoor/glass, -/obj/machinery/atmospherics/pipe/simple/hidden/supply{ - dir = 4 - }, -/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ - dir = 4 - }, -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/turf/simulated/floor/tiled/steel_grid, -/area/rnd/anomaly_lab) -"aXd" = ( -/obj/effect/floor_decal/industrial/warning/corner{ - dir = 1 - }, -/obj/structure/cable/green{ - d1 = 4; - d2 = 8; - icon_state = "4-8" - }, -/obj/machinery/atmospherics/pipe/simple/hidden/supply{ - dir = 4 - }, -/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ - dir = 4 - }, -/obj/effect/floor_decal/steeldecal/steel_decals4, -/obj/effect/floor_decal/steeldecal/steel_decals4{ - dir = 10 - }, -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/turf/simulated/floor/tiled, -/area/rnd/anomaly_lab) "aXj" = ( /obj/structure/cable/green{ d1 = 2; @@ -16775,46 +16078,6 @@ }, /turf/simulated/wall, /area/tether/surfacebase/tram) -"aYQ" = ( -/obj/effect/floor_decal/industrial/warning/corner{ - dir = 8 - }, -/obj/effect/floor_decal/industrial/warning/corner{ - dir = 1 - }, -/obj/machinery/alarm{ - dir = 4; - icon_state = "alarm0"; - pixel_x = -22 - }, -/obj/structure/disposalpipe/segment, -/obj/structure/table/standard, -/obj/item/stack/nanopaste, -/obj/item/weapon/reagent_containers/glass/bucket, -/turf/simulated/floor/tiled, -/area/rnd/anomaly_lab) -"aYR" = ( -/obj/effect/floor_decal/industrial/warning/corner{ - dir = 8 - }, -/obj/machinery/firealarm{ - dir = 1; - pixel_y = -24 - }, -/turf/simulated/floor/tiled, -/area/rnd/anomaly_lab) -"aYZ" = ( -/obj/structure/cable/green{ - d1 = 1; - d2 = 2; - icon_state = "1-2" - }, -/obj/machinery/atmospherics/pipe/simple/hidden/supply, -/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ - dir = 9 - }, -/turf/simulated/floor/tiled, -/area/rnd/anomaly_lab) "aZd" = ( /obj/structure/cable/green{ d1 = 1; @@ -17032,31 +16295,6 @@ }, /turf/simulated/floor/tiled, /area/tether/surfacebase/public_garden) -"baZ" = ( -/obj/structure/cable/green{ - d1 = 1; - d2 = 2; - icon_state = "1-2" - }, -/obj/machinery/atmospherics/unary/vent_pump/on{ - dir = 1 - }, -/turf/simulated/floor/tiled, -/area/rnd/anomaly_lab) -"bbf" = ( -/obj/structure/table/rack, -/obj/item/clothing/suit/bio_suit/anomaly, -/obj/item/clothing/head/bio_hood/anomaly, -/obj/item/clothing/mask/breath, -/obj/item/clothing/glasses/science, -/obj/item/clothing/gloves/sterile/latex, -/obj/effect/floor_decal/industrial/hatch/yellow, -/obj/item/device/radio/intercom{ - dir = 8; - pixel_x = 24 - }, -/turf/simulated/floor/tiled, -/area/rnd/anomaly_lab) "bbn" = ( /obj/effect/floor_decal/borderfloor{ dir = 4 @@ -17091,6 +16329,19 @@ /obj/structure/catwalk, /turf/simulated/floor/plating, /area/maintenance/lower/solars) +"bbA" = ( +/obj/effect/floor_decal/rust, +/obj/structure/sink{ + pixel_y = 22 + }, +/obj/structure/mirror{ + dir = 4; + pixel_x = 0; + pixel_y = 32 + }, +/obj/effect/decal/cleanable/dirt, +/turf/simulated/floor/tiled/white, +/area/crew_quarters/sleep/maintDorm1) "bbL" = ( /obj/structure/flora/pottedplant, /turf/simulated/floor/lino, @@ -17209,41 +16460,6 @@ }, /turf/simulated/floor/tiled, /area/tether/surfacebase/atrium_one) -"bcK" = ( -/obj/machinery/camera/network/research{ - dir = 8; - network = list("Research","Toxins Test Area") - }, -/obj/machinery/portable_atmospherics/canister/phoron, -/turf/simulated/floor/tiled, -/area/rnd/anomaly_lab) -"bcL" = ( -/obj/structure/cable/green{ - d1 = 1; - d2 = 4; - icon_state = "1-4" - }, -/turf/simulated/floor/tiled, -/area/rnd/anomaly_lab) -"bcQ" = ( -/obj/structure/table/rack, -/obj/item/clothing/suit/bio_suit/anomaly, -/obj/item/clothing/head/bio_hood/anomaly, -/obj/item/clothing/mask/breath, -/obj/item/clothing/glasses/science, -/obj/item/clothing/gloves/sterile/latex, -/obj/effect/floor_decal/industrial/hatch/yellow, -/obj/machinery/power/apc{ - dir = 4; - name = "east bump"; - pixel_x = 28 - }, -/obj/structure/cable/green{ - d2 = 8; - icon_state = "0-8" - }, -/turf/simulated/floor/tiled, -/area/rnd/anomaly_lab) "bcR" = ( /obj/effect/floor_decal/borderfloor{ dir = 4 @@ -17517,27 +16733,6 @@ dir = 1 }, /area/tether/surfacebase/atrium_one) -"bdY" = ( -/obj/structure/table/standard, -/obj/item/weapon/anobattery{ - pixel_x = 6; - pixel_y = 6 - }, -/obj/item/weapon/anobattery{ - pixel_x = 2; - pixel_y = 2 - }, -/obj/item/weapon/anobattery{ - pixel_x = -2; - pixel_y = -2 - }, -/obj/item/weapon/anobattery{ - pixel_x = -6; - pixel_y = 2 - }, -/obj/item/weapon/tool/screwdriver, -/turf/simulated/floor/tiled, -/area/rnd/anomaly_lab) "bdZ" = ( /obj/effect/floor_decal/borderfloor{ dir = 4 @@ -17559,16 +16754,6 @@ }, /turf/simulated/floor/tiled, /area/tether/surfacebase/atrium_one) -"bed" = ( -/obj/structure/table/standard, -/obj/item/weapon/anodevice, -/obj/item/weapon/anodevice{ - pixel_x = 3; - pixel_y = 3 - }, -/obj/item/weapon/tool/crowbar, -/turf/simulated/floor/tiled, -/area/rnd/anomaly_lab) "bee" = ( /obj/effect/floor_decal/borderfloor{ dir = 4 @@ -17820,6 +17005,16 @@ }, /turf/simulated/floor/tiled, /area/rnd/xenobiology/xenoflora/lab_atmos) +"beU" = ( +/obj/effect/floor_decal/borderfloor/corner{ + dir = 8 + }, +/obj/effect/floor_decal/corner/yellow/bordercorner{ + icon_state = "bordercolorcorner"; + dir = 8 + }, +/turf/simulated/floor/tiled, +/area/engineering/atmos) "bfc" = ( /obj/structure/disposalpipe/segment{ dir = 4; @@ -17942,7 +17137,7 @@ /obj/effect/floor_decal/borderfloor{ dir = 1 }, -/obj/machinery/camera/network/northern_star, +/obj/machinery/camera/network/tether, /obj/effect/floor_decal/corner/lightgrey/border{ dir = 1 }, @@ -17971,9 +17166,9 @@ /turf/simulated/floor/tiled, /area/crew_quarters/visitor_dining) "bfC" = ( -/obj/machinery/camera/network/northern_star, -/turf/simulated/floor/tiled, -/area/tether/surfacebase/tram) +/obj/machinery/atmospherics/pipe/simple/heat_exchanging/junction, +/turf/simulated/floor/tiled/steel_dirty/virgo3b, +/area/engineering/atmos/intake) "bfF" = ( /obj/machinery/status_display{ pixel_y = 30 @@ -18023,22 +17218,6 @@ }, /turf/simulated/floor/tiled, /area/rnd/hallway) -"bfP" = ( -/obj/effect/floor_decal/borderfloor{ - dir = 1 - }, -/obj/effect/floor_decal/corner/mauve/border{ - dir = 1 - }, -/obj/item/device/radio/intercom{ - dir = 1; - pixel_y = 24; - req_access = list() - }, -/obj/structure/table/glass, -/obj/machinery/chemical_dispenser/full, -/turf/simulated/floor/tiled, -/area/rnd/xenobiology/xenoflora) "bfR" = ( /obj/structure/table/glass, /obj/effect/floor_decal/borderfloor{ @@ -18286,18 +17465,6 @@ }, /turf/simulated/floor/tiled, /area/tether/surfacebase/atrium_one) -"bhj" = ( -/obj/machinery/atmospherics/pipe/simple/hidden/supply, -/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, -/obj/structure/disposalpipe/segment{ - dir = 8; - icon_state = "pipe-c" - }, -/obj/machinery/camera/network/northern_star{ - dir = 5 - }, -/turf/simulated/floor/tiled, -/area/tether/surfacebase/tram) "bhk" = ( /obj/structure/cable{ d1 = 2; @@ -18328,15 +17495,6 @@ /obj/effect/decal/cleanable/dirt, /turf/simulated/floor/plating, /area/maintenance/lower/solars) -"bht" = ( -/obj/structure/cable{ - d1 = 4; - d2 = 8; - icon_state = "4-8" - }, -/obj/machinery/door/airlock/maintenance/common, -/turf/simulated/floor/plating, -/area/maintenance/lower/solars) "bhw" = ( /obj/structure/cable{ d1 = 4; @@ -18423,8 +17581,10 @@ /obj/machinery/atmospherics/pipe/simple/visible/supply, /obj/structure/disposalpipe/segment, /obj/machinery/door/firedoor/glass, -/obj/machinery/door/airlock/glass, /obj/structure/catwalk, +/obj/machinery/door/airlock/glass_external/public{ + name = "Evacuation Route" + }, /turf/simulated/floor/tiled/techfloor, /area/tether/surfacebase/atrium_one) "bip" = ( @@ -18592,7 +17752,6 @@ /turf/simulated/floor/tiled, /area/rnd/xenobiology/xenoflora) "bjn" = ( -/obj/structure/catwalk, /obj/structure/cable{ d1 = 1; d2 = 2; @@ -18602,8 +17761,10 @@ /obj/machinery/atmospherics/pipe/simple/visible/scrubbers, /obj/machinery/atmospherics/pipe/simple/visible/supply, /obj/structure/disposalpipe/segment, -/turf/simulated/floor/tiled/techfloor, -/area/maintenance/lower/atmos) +/obj/structure/catwalk, +/obj/effect/decal/cleanable/dirt, +/turf/simulated/floor/plating, +/area/maintenance/lower/research) "bjw" = ( /obj/structure/cable{ d1 = 1; @@ -18816,17 +17977,6 @@ }, /turf/simulated/floor/tiled, /area/rnd/xenobiology/xenoflora) -"bkM" = ( -/obj/machinery/door/firedoor/glass, -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/obj/machinery/door/airlock/glass_research{ - name = "Xenoflora Research"; - req_access = list(55) - }, -/turf/simulated/floor/tiled/steel_grid, -/area/rnd/xenobiology/xenoflora) "blj" = ( /obj/effect/floor_decal/borderfloor{ dir = 1 @@ -18878,24 +18028,35 @@ icon_state = "pipe-c" }, /obj/effect/decal/cleanable/dirt, +/obj/machinery/atmospherics/pipe/simple/visible/scrubbers{ + icon_state = "intact-scrubbers"; + dir = 5 + }, +/obj/machinery/atmospherics/pipe/simple/visible/supply{ + dir = 5 + }, /turf/simulated/floor/plating, -/area/maintenance/lower/atmos) +/area/maintenance/lower/research) "blP" = ( -/obj/structure/catwalk, /obj/structure/cable{ icon_state = "1-8" }, /obj/structure/cable{ icon_state = "1-2" }, -/obj/machinery/atmospherics/pipe/simple/visible/scrubbers, -/obj/machinery/atmospherics/pipe/simple/visible/supply, /obj/structure/disposalpipe/segment{ dir = 8; icon_state = "pipe-c" }, -/turf/simulated/floor/tiled/techfloor, -/area/maintenance/lower/atmos) +/obj/machinery/atmospherics/pipe/manifold/visible/scrubbers{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/manifold/visible/supply{ + dir = 4 + }, +/obj/structure/catwalk, +/turf/simulated/floor/plating, +/area/maintenance/lower/research) "blQ" = ( /obj/structure/reagent_dispensers/watertank, /obj/machinery/alarm{ @@ -19340,14 +18501,6 @@ }, /turf/simulated/floor/tiled, /area/rnd/xenobiology/xenoflora) -"boG" = ( -/obj/machinery/door/firedoor/glass, -/obj/machinery/door/airlock/glass_research{ - name = "Xenoflora Research"; - req_access = list(55) - }, -/turf/simulated/floor/tiled/steel_grid, -/area/rnd/xenobiology/xenoflora) "boP" = ( /obj/structure/window/reinforced{ dir = 8 @@ -19386,17 +18539,19 @@ }, /turf/simulated/floor/tiled/techfloor, /area/tether/surfacebase/emergency_storage/rnd) -"bpK" = ( -/obj/structure/catwalk, -/obj/machinery/light/small{ - dir = 4; - pixel_y = 0 +"bpQ" = ( +/obj/machinery/atmospherics/pipe/simple/visible/yellow{ + dir = 4 }, -/obj/structure/cable{ - icon_state = "1-2" +/obj/effect/floor_decal/borderfloor/corner{ + dir = 1 }, -/turf/simulated/floor/tiled/techfloor, -/area/maintenance/lower/atmos) +/obj/effect/floor_decal/corner/yellow/bordercorner{ + icon_state = "bordercolorcorner"; + dir = 1 + }, +/turf/simulated/floor/tiled, +/area/engineering/atmos) "bqa" = ( /obj/machinery/door/airlock/maintenance/common{ name = "Laundry Maintenance Access" @@ -19409,6 +18564,7 @@ icon_state = "1-2" }, /obj/machinery/door/firedoor/glass, +/obj/structure/catwalk, /turf/simulated/floor/tiled/techfloor, /area/crew_quarters/locker/laundry_arrival) "bqf" = ( @@ -19731,37 +18887,21 @@ /turf/simulated/floor/tiled/techfloor, /area/tether/surfacebase/emergency_storage/rnd) "brd" = ( -/obj/structure/sign/directions/evac{ - dir = 4; - name = "\improper Secondary Evacuation Route" - }, -/turf/simulated/wall, -/area/maintenance/lower/atmos) -"brf" = ( -/obj/machinery/power/apc{ - dir = 1; - name = "north bump"; - pixel_x = 0; - pixel_y = 28 - }, -/obj/structure/cable{ - icon_state = "0-2"; - d2 = 2 +/obj/structure/railing, +/obj/structure/table/rack, +/obj/item/clothing/suit/suspenders, +/obj/machinery/light/small{ + dir = 1 }, /obj/effect/decal/cleanable/dirt, +/turf/simulated/floor/plating, +/area/maintenance/lower/research) +"brf" = ( /obj/structure/railing, -/turf/simulated/floor/tiled/techfloor, -/area/maintenance/lower/locker_room) -"brg" = ( -/obj/machinery/atmospherics/pipe/simple/hidden/supply, -/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, -/obj/structure/cable{ - d1 = 1; - d2 = 2; - icon_state = "1-2" - }, -/turf/simulated/floor/tiled/techfloor, -/area/maintenance/lower/locker_room) +/obj/random/junk, +/obj/effect/decal/cleanable/dirt, +/turf/simulated/floor/plating, +/area/maintenance/lower/research) "bri" = ( /obj/effect/floor_decal/corner/lightgrey{ dir = 9 @@ -19818,20 +18958,6 @@ }, /turf/simulated/floor/tiled, /area/crew_quarters/visitor_dining) -"brv" = ( -/obj/structure/table/marble, -/obj/machinery/door/window{ - dir = 8; - req_one_access = list(25) - }, -/obj/machinery/door/blast/shutters{ - dir = 8; - id = "cafe"; - layer = 3.1; - name = "Cafe Shutters" - }, -/turf/simulated/floor/tiled, -/area/crew_quarters/visitor_dining) "brw" = ( /obj/structure/window/reinforced, /obj/structure/table/glass, @@ -19914,6 +19040,12 @@ }, /turf/simulated/floor/tiled, /area/rnd/hallway) +"brB" = ( +/obj/structure/table/woodentable, +/obj/machinery/microwave, +/obj/effect/decal/cleanable/dirt, +/turf/simulated/floor/plating, +/area/crew_quarters/sleep/maintDorm3) "brE" = ( /obj/machinery/atmospherics/pipe/simple/hidden/supply, /obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, @@ -19988,82 +19120,45 @@ /turf/simulated/floor/tiled, /area/rnd/hallway) "bse" = ( -/obj/machinery/atmospherics/pipe/simple/hidden/supply{ - dir = 4 - }, -/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ - dir = 4 - }, /obj/structure/cable{ d1 = 4; d2 = 8; - icon_state = "4-8"; - pixel_x = 0 + icon_state = "4-8" + }, +/obj/machinery/atmospherics/pipe/simple/visible/scrubbers{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/visible/supply{ + dir = 4 }, /obj/structure/catwalk, -/turf/simulated/floor/tiled/techfloor, -/area/maintenance/lower/locker_room) -"bsg" = ( -/obj/machinery/door/firedoor/glass, -/obj/machinery/atmospherics/pipe/simple/hidden/supply{ - dir = 4 - }, -/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ - dir = 4 - }, -/obj/structure/cable{ - d1 = 4; - d2 = 8; - icon_state = "4-8"; - pixel_x = 0 - }, -/obj/structure/catwalk, -/turf/simulated/floor/tiled/techfloor, -/area/maintenance/lower/atmos) -"bsl" = ( -/obj/machinery/atmospherics/pipe/simple/hidden/supply{ - dir = 4 - }, -/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ - dir = 4 - }, -/obj/structure/cable{ - d1 = 4; - d2 = 8; - icon_state = "4-8"; - pixel_x = 0 - }, +/obj/effect/floor_decal/rust, +/turf/simulated/floor/plating, +/area/maintenance/lower/research) +"bsn" = ( /obj/structure/cable{ icon_state = "1-8" }, +/obj/structure/cable{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/obj/machinery/atmospherics/pipe/manifold/visible/scrubbers, +/obj/machinery/atmospherics/pipe/manifold/visible/supply, /obj/structure/catwalk, -/turf/simulated/floor/tiled/techfloor, -/area/maintenance/lower/locker_room) -"bsn" = ( -/obj/machinery/light/small{ - dir = 4; - pixel_y = 0 +/obj/effect/decal/cleanable/dirt, +/turf/simulated/floor/plating, +/area/maintenance/lower/research) +"bsB" = ( +/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{ + dir = 8 }, /obj/machinery/atmospherics/pipe/manifold/hidden/supply{ - dir = 4 + dir = 8 }, -/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{ - dir = 4 - }, -/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, -/obj/structure/cable{ - d1 = 1; - d2 = 2; - icon_state = "1-2" - }, -/obj/structure/cable{ - d1 = 2; - d2 = 8; - icon_state = "2-8" - }, -/obj/structure/catwalk, -/turf/simulated/floor/tiled/techfloor, -/area/maintenance/lower/locker_room) +/turf/simulated/floor/tiled, +/area/engineering/atmos/processing) "bsU" = ( /turf/simulated/floor/tiled/techfloor, /area/maintenance/lower/public_garden_maintenence) @@ -20101,24 +19196,6 @@ }, /turf/simulated/floor/tiled, /area/tether/surfacebase/atrium_one) -"btx" = ( -/obj/structure/cable{ - icon_state = "1-2" - }, -/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, -/obj/machinery/atmospherics/pipe/simple/hidden/supply, -/obj/structure/disposalpipe/segment, -/obj/effect/floor_decal/borderfloor{ - dir = 4 - }, -/obj/effect/floor_decal/corner/lightgrey/border{ - dir = 4 - }, -/obj/machinery/camera/network/civilian{ - dir = 9 - }, -/turf/simulated/floor/tiled, -/area/tether/surfacebase/public_garden) "btD" = ( /obj/effect/floor_decal/steeldecal/steel_decals6{ dir = 5 @@ -20299,21 +19376,6 @@ }, /turf/simulated/floor/tiled, /area/rnd/hallway) -"bup" = ( -/obj/machinery/atmospherics/pipe/simple/hidden/supply, -/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, -/obj/machinery/door/firedoor/glass, -/obj/structure/cable/green{ - d1 = 1; - d2 = 2; - icon_state = "1-2" - }, -/obj/machinery/door/airlock/glass_research{ - name = "Xenoflora Research"; - req_access = list(55) - }, -/turf/simulated/floor/tiled/steel_grid, -/area/rnd/xenobiology/xenoflora) "buC" = ( /obj/effect/floor_decal/borderfloor{ dir = 4 @@ -20336,33 +19398,13 @@ }, /turf/simulated/floor/tiled, /area/rnd/hallway) -"buQ" = ( -/obj/effect/decal/cleanable/blood, -/obj/item/clothing/shoes/athletic{ - desc = "Assault" +"bvn" = ( +/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 }, -/obj/item/clothing/under/pants{ - desc = "Overdose" - }, -/obj/item/weapon/material/twohanded/baseballbat{ - desc = "Decadence"; - health = 1989 - }, -/obj/effect/floor_decal/rust, -/obj/effect/decal/cleanable/dirt, -/turf/simulated/floor/plating, -/area/maintenance/lower/atmos) -"bvd" = ( -/obj/machinery/atmospherics/pipe/simple/hidden/supply, -/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, -/obj/structure/cable{ - d1 = 1; - d2 = 2; - icon_state = "1-2" - }, -/obj/structure/catwalk, -/turf/simulated/floor/tiled/techfloor, -/area/maintenance/lower/locker_room) +/turf/simulated/floor/tiled, +/area/engineering/atmos) "bvs" = ( /obj/effect/floor_decal/borderfloor{ dir = 8 @@ -20955,43 +19997,6 @@ }, /turf/simulated/floor/tiled, /area/rnd/hallway) -"bxT" = ( -/obj/machinery/power/apc{ - dir = 1; - name = "north bump"; - pixel_x = 0; - pixel_y = 28 - }, -/obj/structure/cable/cyan{ - d2 = 8; - icon_state = "0-8" - }, -/obj/effect/decal/cleanable/dirt, -/turf/simulated/floor/tiled/techfloor, -/area/maintenance/lower/atmos) -"bxW" = ( -/obj/structure/railing{ - dir = 8 - }, -/obj/effect/floor_decal/industrial/outline/yellow, -/obj/machinery/atmospherics/pipe/zpipe/up/scrubbers, -/obj/machinery/atmospherics/pipe/zpipe/up/supply, -/obj/structure/cable/cyan{ - d1 = 16; - d2 = 0; - icon_state = "16-0" - }, -/obj/structure/cable/cyan{ - d2 = 2; - icon_state = "0-2" - }, -/obj/structure/cable/cyan{ - d2 = 4; - icon_state = "0-4" - }, -/obj/effect/decal/cleanable/dirt, -/turf/simulated/floor/tiled/techfloor, -/area/maintenance/lower/atmos) "byk" = ( /obj/effect/decal/cleanable/dirt, /turf/simulated/floor, @@ -21003,12 +20008,6 @@ /obj/effect/floor_decal/corner/lightgrey/border{ dir = 8 }, -/obj/effect/floor_decal/borderfloor/corner2{ - dir = 10 - }, -/obj/effect/floor_decal/corner/lightgrey/bordercorner2{ - dir = 10 - }, /obj/structure/disposalpipe/segment, /obj/structure/cable/green{ d1 = 1; @@ -21214,131 +20213,55 @@ /turf/simulated/floor/tiled, /area/crew_quarters/locker/laundry_arrival) "bzG" = ( -/obj/structure/catwalk, -/obj/effect/decal/cleanable/dirt, -/obj/machinery/light/small{ - dir = 8; - pixel_x = 0 - }, -/turf/simulated/floor/tiled/techfloor, -/area/maintenance/lower/atmos) -"bzJ" = ( -/obj/machinery/atmospherics/pipe/simple/visible/scrubbers{ - dir = 10 - }, -/obj/machinery/atmospherics/pipe/simple/visible/supply{ - dir = 10 - }, -/obj/structure/cable/cyan{ +/obj/structure/cable{ d1 = 2; - d2 = 8; - icon_state = "2-8" + d2 = 4; + icon_state = "2-4" + }, +/obj/structure/catwalk, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 }, /obj/effect/decal/cleanable/dirt, -/turf/simulated/floor/tiled/techfloor, -/area/maintenance/lower/atmos) +/turf/simulated/floor/plating, +/area/maintenance/lower/research) "bzL" = ( -/obj/structure/railing{ - dir = 8 +/obj/structure/cable{ + icon_state = "4-8" }, -/obj/machinery/atmospherics/pipe/simple/visible/scrubbers{ - dir = 5 +/obj/structure/catwalk, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 }, -/obj/machinery/atmospherics/pipe/simple/visible/supply{ - dir = 5 +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 }, -/obj/structure/cable/cyan{ - d1 = 1; - d2 = 4; - icon_state = "1-4" - }, -/turf/simulated/floor/tiled/techfloor, -/area/maintenance/lower/atmos) -"bzO" = ( -/obj/structure/ladder/up, -/obj/machinery/light/small{ - dir = 8; - pixel_x = 0 - }, -/turf/simulated/floor/tiled/techfloor, -/area/maintenance/lower/atmos) +/obj/effect/decal/cleanable/dirt, +/turf/simulated/floor/plating, +/area/maintenance/lower/research) "bAe" = ( /obj/machinery/door/firedoor/glass, /obj/machinery/door/airlock/glass_external/public, /turf/simulated/floor/tiled/steel_grid, /area/tether/surfacebase/tram) -"bAy" = ( -/obj/machinery/atmospherics/pipe/simple/hidden/supply{ - dir = 5 - }, -/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ - dir = 5 - }, -/obj/structure/cable{ - d1 = 1; - d2 = 4; - icon_state = "1-4" - }, -/obj/structure/catwalk, -/turf/simulated/floor/tiled/techfloor, -/area/maintenance/lower/locker_room) "bAA" = ( /obj/machinery/door/firedoor/glass/hidden/steel{ dir = 1 }, /turf/simulated/floor/tiled, /area/tether/surfacebase/atrium_one) -"bAN" = ( -/obj/machinery/atmospherics/pipe/simple/hidden/supply{ - dir = 4 - }, -/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ - dir = 9 - }, -/obj/structure/cable{ - d1 = 4; - d2 = 8; - icon_state = "4-8"; - pixel_x = 0 - }, -/turf/simulated/floor/plating, -/area/vacant/vacant_site/east) -"bAO" = ( -/obj/machinery/atmospherics/pipe/simple/hidden/supply{ - dir = 4 - }, -/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ - dir = 4 - }, -/obj/structure/cable{ - d1 = 4; - d2 = 8; - icon_state = "4-8"; - pixel_x = 0 - }, -/obj/structure/catwalk, -/obj/machinery/door/airlock/maintenance/common, -/turf/simulated/floor/tiled/techfloor, -/area/maintenance/lower/locker_room) "bAP" = ( /obj/effect/floor_decal/steeldecal/steel_decals4{ dir = 10 }, /obj/effect/floor_decal/steeldecal/steel_decals4, -/obj/machinery/light{ - dir = 8; - icon_state = "tube1"; - pixel_y = 0 - }, -/turf/simulated/floor/tiled/steel_grid, -/area/tether/surfacebase/atrium_one) +/obj/effect/decal/cleanable/dirt, +/turf/simulated/floor/plating, +/area/vacant/vacant_site/east) "bAR" = ( -/obj/effect/floor_decal/steeldecal/steel_decals4{ - dir = 6 - }, -/obj/effect/floor_decal/steeldecal/steel_decals4{ - dir = 1 - }, /obj/structure/disposalpipe/segment, /obj/structure/cable/green{ d1 = 1; @@ -21347,6 +20270,12 @@ }, /obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, /obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/effect/floor_decal/borderfloor{ + dir = 8 + }, +/obj/effect/floor_decal/corner/lightgrey/border{ + dir = 8 + }, /turf/simulated/floor/tiled, /area/tether/surfacebase/atrium_one) "bAT" = ( @@ -21416,29 +20345,6 @@ }, /turf/simulated/floor/tiled/steel_grid, /area/rnd/xenobiology) -"bBl" = ( -/obj/effect/floor_decal/borderfloor{ - dir = 8 - }, -/obj/effect/floor_decal/corner/mauve/border{ - dir = 8 - }, -/obj/machinery/atmospherics/pipe/simple/hidden/supply, -/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, -/obj/structure/cable/green{ - d1 = 1; - d2 = 2; - icon_state = "1-2" - }, -/obj/structure/disposalpipe/segment, -/obj/effect/floor_decal/steeldecal/steel_decals7{ - dir = 5 - }, -/obj/effect/floor_decal/steeldecal/steel_decals7{ - dir = 6 - }, -/turf/simulated/floor/tiled, -/area/rnd/hallway) "bBy" = ( /obj/effect/floor_decal/borderfloor{ dir = 4 @@ -21485,18 +20391,6 @@ }, /turf/simulated/floor/tiled/steel_grid, /area/rnd/hallway) -"bCH" = ( -/obj/structure/railing, -/obj/machinery/atmospherics/pipe/simple/visible/scrubbers, -/obj/machinery/atmospherics/pipe/simple/visible/supply, -/obj/structure/cable/cyan{ - d1 = 1; - d2 = 2; - icon_state = "1-2" - }, -/obj/random/trash_pile, -/turf/simulated/floor/tiled/techfloor, -/area/maintenance/lower/atmos) "bDJ" = ( /obj/effect/floor_decal/borderfloor{ dir = 8 @@ -21504,12 +20398,6 @@ /obj/effect/floor_decal/corner/lightgrey/border{ dir = 8 }, -/obj/effect/floor_decal/borderfloor/corner2{ - dir = 8 - }, -/obj/effect/floor_decal/corner/lightgrey/bordercorner2{ - dir = 8 - }, /obj/structure/disposalpipe/segment, /obj/structure/cable/green{ d1 = 1; @@ -21518,6 +20406,12 @@ }, /obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, /obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/effect/floor_decal/borderfloor/corner2{ + dir = 10 + }, +/obj/effect/floor_decal/corner/lightgrey/bordercorner2{ + dir = 10 + }, /turf/simulated/floor/tiled, /area/tether/surfacebase/atrium_one) "bDU" = ( @@ -21640,50 +20534,24 @@ "bEG" = ( /obj/structure/cable/green{ d1 = 1; - d2 = 2; - icon_state = "1-2" - }, -/turf/simulated/floor/tiled/steel_dirty, -/area/maintenance/lower/research) -"bEV" = ( -/obj/structure/catwalk, -/obj/machinery/atmospherics/pipe/manifold/visible/scrubbers{ - dir = 8 - }, -/obj/machinery/atmospherics/pipe/manifold/visible/supply{ - dir = 8 - }, -/obj/structure/cable/cyan{ - d1 = 1; - d2 = 2; - icon_state = "1-2" + d2 = 4; + icon_state = "1-4" }, /obj/effect/decal/cleanable/dirt, -/turf/simulated/floor/tiled/techfloor, -/area/maintenance/lower/atmos) +/turf/simulated/floor/plating, +/area/maintenance/lower/research) +"bEV" = ( +/obj/structure/cable{ + icon_state = "2-8" + }, +/obj/effect/floor_decal/industrial/warning, +/obj/effect/decal/cleanable/dirt, +/turf/simulated/floor/plating, +/area/maintenance/substation/surface_atmos) "bEX" = ( -/obj/structure/catwalk, -/obj/machinery/atmospherics/pipe/simple/visible/supply{ - dir = 4 - }, -/obj/machinery/atmospherics/pipe/simple/visible/scrubbers{ - dir = 4 - }, -/obj/machinery/firealarm{ - dir = 2; - layer = 3.3; - pixel_x = 0; - pixel_y = 26 - }, -/turf/simulated/floor/tiled/techfloor, -/area/maintenance/lower/atmos) +/turf/simulated/wall/r_wall, +/area/engineering/atmos) "bFy" = ( -/obj/effect/floor_decal/borderfloor{ - dir = 8 - }, -/obj/effect/floor_decal/corner/lightgrey/border{ - dir = 8 - }, /obj/structure/disposalpipe/segment, /obj/structure/cable/green{ d1 = 1; @@ -21692,6 +20560,9 @@ }, /obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, /obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/effect/floor_decal/steeldecal/steel_decals6{ + dir = 9 + }, /turf/simulated/floor/tiled, /area/tether/surfacebase/atrium_one) "bFR" = ( @@ -21749,51 +20620,35 @@ }, /turf/simulated/floor/tiled, /area/rnd/hallway) -"bGh" = ( -/obj/machinery/light/small{ - dir = 8 +"bGF" = ( +/obj/machinery/power/breakerbox/activated{ + RCon_tag = "Atmos Substation Bypass" }, -/obj/structure/cable/green{ - d1 = 1; - d2 = 2; - icon_state = "1-2" +/turf/simulated/floor/plating, +/area/maintenance/substation/surface_atmos) +"bHl" = ( +/obj/machinery/atmospherics/pipe/simple/visible/yellow{ + dir = 4 }, /obj/effect/decal/cleanable/dirt, -/turf/simulated/floor/tiled/steel_dirty, -/area/maintenance/lower/research) -"bGF" = ( -/obj/machinery/door/airlock/multi_tile/metal/mait{ - name = "Atmospherics Maintenance"; - req_access = list(24); - req_one_access = list(24) - }, -/obj/machinery/atmospherics/pipe/simple/visible/scrubbers, -/obj/machinery/atmospherics/pipe/simple/visible/supply, -/obj/structure/cable/cyan{ - d1 = 1; - d2 = 2; - icon_state = "1-2" - }, -/obj/machinery/door/firedoor/glass, -/obj/structure/catwalk, -/turf/simulated/floor/tiled/techfloor, -/area/maintenance/lower/atmos) +/turf/simulated/floor/plating, +/area/engineering/atmos/processing) "bHE" = ( -/obj/effect/floor_decal/borderfloor{ - dir = 8 - }, -/obj/effect/floor_decal/corner/lightgrey/border{ - dir = 8 - }, -/obj/structure/disposalpipe/segment, /obj/structure/cable/green{ d1 = 1; d2 = 2; icon_state = "1-2" }, -/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, -/obj/machinery/atmospherics/pipe/manifold/hidden/supply{ - dir = 8 +/obj/effect/floor_decal/steeldecal/steel_decals6{ + dir = 6 + }, +/obj/machinery/atmospherics/pipe/manifold4w/hidden/supply, +/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{ + dir = 4 + }, +/obj/structure/disposalpipe/junction{ + dir = 1; + icon_state = "pipe-j2" }, /turf/simulated/floor/tiled, /area/tether/surfacebase/atrium_one) @@ -22002,16 +20857,10 @@ /turf/simulated/floor/tiled/steel_dirty, /area/rnd/xenobiology/xenoflora_storage) "bIY" = ( -/obj/structure/catwalk, -/obj/machinery/atmospherics/pipe/simple/visible/scrubbers, -/obj/machinery/atmospherics/pipe/simple/visible/supply, -/obj/structure/cable/cyan{ - d1 = 1; - d2 = 2; - icon_state = "1-2" - }, -/turf/simulated/floor/tiled/techfloor, -/area/maintenance/lower/atmos) +/obj/effect/floor_decal/borderfloor/corner, +/obj/effect/floor_decal/corner/yellow/bordercorner, +/turf/simulated/floor/tiled, +/area/engineering/atmos) "bJC" = ( /obj/effect/floor_decal/borderfloor{ dir = 8 @@ -22034,6 +20883,12 @@ /obj/machinery/atmospherics/pipe/simple/hidden/supply{ dir = 5 }, +/obj/effect/floor_decal/borderfloor/corner2{ + dir = 8 + }, +/obj/effect/floor_decal/corner/lightgrey/bordercorner2{ + dir = 8 + }, /turf/simulated/floor/tiled, /area/tether/surfacebase/atrium_one) "bJD" = ( @@ -22171,6 +21026,13 @@ }, /turf/simulated/floor/plating, /area/maintenance/lower/public_garden_maintenence) +"bLo" = ( +/obj/machinery/door/window/southright{ + req_access = list(5) + }, +/obj/effect/decal/cleanable/dirt, +/turf/simulated/floor/plating, +/area/maintenance/lower/atmos) "bLV" = ( /obj/effect/floor_decal/steeldecal/steel_decals6{ dir = 8 @@ -22289,47 +21151,16 @@ /obj/machinery/atmospherics/pipe/simple/hidden, /turf/simulated/floor/tiled/steel_grid, /area/rnd/external) -"bMv" = ( -/obj/machinery/power/apc{ - cell_type = /obj/item/weapon/cell/super; - dir = 8; - name = "west bump"; - pixel_x = -30 - }, -/obj/structure/cable/green, -/turf/simulated/floor/tiled/steel_dirty, -/area/maintenance/lower/research) "bMK" = ( /obj/effect/floor_decal/borderfloor, /obj/effect/floor_decal/corner/lightgrey/border, /obj/structure/closet/firecloset, /turf/simulated/floor/tiled, /area/tether/surfacebase/atrium_one) -"bMS" = ( -/obj/structure/catwalk, -/obj/machinery/atmospherics/pipe/simple/visible/scrubbers, -/obj/machinery/atmospherics/pipe/simple/visible/supply, -/obj/structure/cable/cyan{ - d1 = 1; - d2 = 2; - icon_state = "1-2" - }, -/obj/machinery/light/small{ - dir = 8; - pixel_x = 0 - }, -/turf/simulated/floor/tiled/techfloor, -/area/maintenance/lower/atmos) -"bMW" = ( -/obj/structure/catwalk, -/obj/machinery/alarm{ - dir = 8; - icon_state = "alarm0"; - pixel_x = 24 - }, -/obj/effect/decal/cleanable/dirt, -/turf/simulated/floor/tiled/techfloor, -/area/maintenance/lower/atmos) +"bMR" = ( +/obj/machinery/door/firedoor/glass, +/turf/simulated/floor/tiled, +/area/tether/surfacebase/atrium_one) "bNu" = ( /obj/machinery/door/airlock/multi_tile/glass, /obj/machinery/door/firedoor/glass, @@ -22589,27 +21420,43 @@ }, /turf/simulated/floor/tiled, /area/rnd/external) -"bPw" = ( -/obj/effect/floor_decal/techfloor{ - dir = 5 +"bOS" = ( +/obj/machinery/atmospherics/pipe/simple/visible/green{ + icon_state = "intact"; + dir = 10 }, -/obj/effect/floor_decal/industrial/warning/corner{ +/obj/effect/floor_decal/borderfloor/corner{ dir = 8 }, +/obj/effect/floor_decal/corner/yellow/bordercorner{ + icon_state = "bordercolorcorner"; + dir = 8 + }, +/turf/simulated/floor/tiled, +/area/engineering/atmos) +"bPw" = ( /obj/structure/cable/cyan{ - d2 = 2; - icon_state = "0-2" + d1 = 1; + d2 = 4; + icon_state = "1-4" }, -/obj/machinery/power/apc{ - dir = 4; - name = "east bump"; - pixel_x = 28 +/obj/structure/cable/cyan{ + d1 = 1; + d2 = 8; + icon_state = "1-8" }, -/obj/machinery/light_switch{ - pixel_y = 25 +/turf/simulated/floor/tiled, +/area/engineering/atmos) +"bPA" = ( +/obj/effect/decal/cleanable/dirt, +/obj/machinery/light/small, +/obj/structure/cable/green{ + d1 = 4; + d2 = 8; + icon_state = "4-8" }, -/turf/simulated/floor/tiled/techfloor, -/area/engineering/drone_fabrication) +/turf/simulated/floor/plating, +/area/maintenance/lower/atmos) "bPI" = ( /obj/effect/floor_decal/borderfloor{ dir = 6 @@ -22725,6 +21572,24 @@ /obj/structure/reagent_dispensers/fueltank, /turf/simulated/floor/reinforced, /area/rnd/xenobiology) +"bQA" = ( +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/obj/structure/cable/green{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/obj/effect/decal/cleanable/dirt, +/turf/simulated/floor/plating, +/area/maintenance/lower/atmos) "bQB" = ( /obj/structure/cable/green{ d1 = 1; @@ -22838,64 +21703,12 @@ }, /turf/simulated/floor/tiled, /area/rnd/external) -"bRl" = ( -/obj/effect/floor_decal/techfloor/corner, -/obj/effect/floor_decal/techfloor/corner{ - dir = 4 - }, -/obj/effect/floor_decal/industrial/warning{ - dir = 8 - }, -/obj/structure/cable/cyan{ - d1 = 1; - d2 = 4; - icon_state = "1-4" - }, -/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ - dir = 4 - }, -/obj/machinery/atmospherics/pipe/simple/hidden/supply{ - dir = 4 - }, -/turf/simulated/floor/tiled/techfloor, -/area/engineering/drone_fabrication) "bRs" = ( -/obj/structure/catwalk, -/obj/structure/cable/cyan{ - d1 = 1; - d2 = 2; - icon_state = "1-2" - }, -/obj/structure/cable/cyan{ - d1 = 2; - d2 = 8; - icon_state = "2-8" - }, -/obj/machinery/atmospherics/pipe/manifold/visible/supply{ +/obj/machinery/atmospherics/pipe/simple/visible/red{ dir = 4 }, -/obj/machinery/atmospherics/pipe/manifold/visible/scrubbers{ - dir = 4 - }, -/turf/simulated/floor/tiled/techfloor, -/area/maintenance/lower/atmos) -"bRx" = ( -/obj/structure/cable/cyan{ - d1 = 4; - d2 = 8; - icon_state = "4-8" - }, -/obj/machinery/door/airlock/maintenance/engi{ - name = "Drone Bay" - }, -/obj/machinery/atmospherics/pipe/simple/visible/supply{ - dir = 4 - }, -/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ - dir = 4 - }, -/turf/simulated/floor/tiled/techfloor, -/area/maintenance/lower/atmos) +/turf/simulated/floor/tiled, +/area/engineering/atmos) "bRy" = ( /obj/machinery/door/airlock/glass_external/public, /obj/machinery/atmospherics/pipe/simple/hidden/supply{ @@ -23168,20 +21981,6 @@ }, /turf/simulated/floor/tiled/steel_grid, /area/rnd/external) -"bSP" = ( -/obj/effect/floor_decal/techfloor{ - dir = 6 - }, -/obj/effect/floor_decal/industrial/warning/corner{ - icon_state = "warningcorner"; - dir = 1 - }, -/obj/machinery/firealarm{ - dir = 4; - pixel_x = 24 - }, -/turf/simulated/floor/tiled/techfloor, -/area/engineering/drone_fabrication) "bSU" = ( /obj/structure/cable/green{ d1 = 4; @@ -23385,44 +22184,13 @@ /obj/structure/disposalpipe/trunk, /turf/simulated/floor/lino, /area/crew_quarters/visitor_dining) -"bTO" = ( -/obj/machinery/atmospherics/pipe/simple/visible/supply, -/obj/machinery/atmospherics/pipe/simple/visible/scrubbers, -/obj/structure/cable/cyan{ - d1 = 1; - d2 = 2; - icon_state = "1-2" - }, -/obj/machinery/door/firedoor/glass, -/obj/machinery/door/airlock/multi_tile/metal/mait{ - name = "Atmospherics Maintenance"; - req_access = list(24); - req_one_access = list(24) - }, -/obj/structure/catwalk, -/obj/machinery/door/blast/regular{ - density = 0; - dir = 4; - icon_state = "pdoor0"; - id = "atmoslockdown"; - name = "Atmospherics Lockdown"; - opacity = 0 - }, -/turf/simulated/floor/tiled/techfloor, -/area/engineering/atmos/processing) +"bTM" = ( +/obj/structure/closet, +/turf/simulated/floor/plating, +/area/crew_quarters/sleep/maintDorm4) "bTQ" = ( -/obj/machinery/door/firedoor/glass, -/obj/structure/catwalk, -/obj/machinery/door/blast/regular{ - density = 0; - dir = 4; - icon_state = "pdoor0"; - id = "atmoslockdown"; - name = "Atmospherics Lockdown"; - opacity = 0 - }, -/turf/simulated/floor/tiled/techfloor, -/area/engineering/atmos/processing) +/turf/simulated/wall, +/area/engineering/atmos) "bTR" = ( /obj/effect/floor_decal/borderfloor{ dir = 4 @@ -23480,106 +22248,65 @@ }, /obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, /obj/machinery/atmospherics/pipe/simple/hidden/supply, -/obj/machinery/camera/network/northern_star{ +/obj/machinery/camera/network/tether{ dir = 4 }, /obj/structure/disposalpipe/segment, /turf/simulated/floor/tiled, /area/crew_quarters/visitor_lodging) -"bUs" = ( -/obj/effect/floor_decal/techfloor{ - dir = 9 - }, -/obj/machinery/firealarm{ - dir = 2; - layer = 3.3; - pixel_x = 0; - pixel_y = 26 - }, -/turf/simulated/floor/tiled/techfloor, -/area/engineering/atmos/processing) "bUu" = ( -/obj/effect/floor_decal/techfloor/corner{ - dir = 1 - }, -/obj/machinery/atmospherics/pipe/simple/hidden/supply, -/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, -/obj/structure/cable/cyan{ - d1 = 1; - d2 = 2; - icon_state = "1-2" - }, -/obj/structure/cable/cyan{ - d1 = 1; - d2 = 4; - icon_state = "1-4" - }, -/turf/simulated/floor/tiled/techfloor, -/area/engineering/atmos/processing) -"bUy" = ( -/obj/effect/floor_decal/techfloor{ - dir = 1 - }, -/obj/structure/cable/cyan{ - d1 = 4; - d2 = 8; - icon_state = "4-8" - }, -/obj/machinery/light_switch{ - pixel_y = 25 - }, -/turf/simulated/floor/tiled/techfloor, -/area/engineering/atmos/processing) -"bUH" = ( -/obj/effect/floor_decal/techfloor/corner{ +/obj/effect/floor_decal/borderfloor/corner{ dir = 4 }, -/obj/structure/cable/cyan{ - d1 = 4; - d2 = 8; - icon_state = "4-8" +/obj/effect/floor_decal/corner/yellow/bordercorner{ + icon_state = "bordercolorcorner"; + dir = 4 }, -/turf/simulated/floor/tiled/techfloor, -/area/engineering/atmos/processing) +/turf/simulated/floor/tiled, +/area/engineering/atmos) +"bUy" = ( +/obj/machinery/atmospherics/unary/heater{ + dir = 4 + }, +/turf/simulated/floor/tiled/techmaint, +/area/engineering/atmos) +"bUH" = ( +/obj/machinery/door/firedoor/glass, +/obj/structure/grille, +/obj/structure/window/reinforced/full, +/turf/simulated/floor/plating, +/area/engineering/atmos) "bUK" = ( -/obj/effect/floor_decal/techfloor{ - dir = 1 +/obj/machinery/atmospherics/pipe/manifold4w/visible/yellow, +/obj/effect/floor_decal/borderfloor{ + dir = 8 }, -/obj/structure/cable/cyan{ - d2 = 8; - icon_state = "0-8" +/obj/effect/floor_decal/corner/yellow/border{ + icon_state = "bordercolor"; + dir = 8 }, -/obj/machinery/power/apc{ - dir = 1; - name = "north bump"; - pixel_x = 0; - pixel_y = 28 - }, -/turf/simulated/floor/tiled/techfloor, -/area/engineering/atmos/processing) +/turf/simulated/floor/tiled, +/area/engineering/atmos) "bUM" = ( -/obj/effect/floor_decal/techfloor{ - dir = 1 +/obj/machinery/atmospherics/pipe/simple/visible/green{ + dir = 9; + icon_state = "intact" }, -/obj/machinery/newscaster{ - pixel_x = 0; - pixel_y = 30 - }, -/turf/simulated/floor/tiled/techfloor, -/area/engineering/atmos/processing) +/turf/simulated/floor/tiled, +/area/engineering/atmos) "bUO" = ( -/obj/effect/floor_decal/techfloor{ - dir = 1 +/obj/machinery/atmospherics/pipe/manifold/visible/green{ + dir = 8 }, -/obj/machinery/requests_console{ - department = "Atmospherics"; - departmentType = 3; - name = "Atmos RC"; - pixel_x = 0; - pixel_y = 28 +/obj/effect/floor_decal/borderfloor{ + dir = 4 }, -/turf/simulated/floor/tiled/techfloor, -/area/engineering/atmos/processing) +/obj/effect/floor_decal/corner/yellow/border{ + icon_state = "bordercolor"; + dir = 4 + }, +/turf/simulated/floor/tiled, +/area/engineering/atmos) "bUY" = ( /obj/machinery/alarm{ dir = 8; @@ -23660,26 +22387,15 @@ }, /turf/simulated/floor/tiled/white, /area/crew_quarters/sleep/Dorm_6) -"bVx" = ( -/obj/machinery/atmospherics/pipe/simple/visible/red{ - icon_state = "intact"; +"bVp" = ( +/obj/machinery/atmospherics/pipe/simple/heat_exchanging{ + dir = 9 + }, +/obj/machinery/atmospherics/pipe/simple/heat_exchanging{ dir = 6 }, -/turf/simulated/floor/tiled/techfloor, -/area/engineering/atmos/processing) -"bVz" = ( -/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers, -/obj/machinery/atmospherics/pipe/manifold/hidden/supply, -/obj/structure/cable/cyan{ - d1 = 1; - d2 = 2; - icon_state = "1-2" - }, -/obj/machinery/atmospherics/pipe/simple/visible/yellow{ - dir = 6 - }, -/turf/simulated/floor/tiled/techfloor, -/area/engineering/atmos/processing) +/turf/simulated/floor/tiled/steel_dirty/virgo3b, +/area/engineering/atmos/intake) "bVQ" = ( /obj/effect/floor_decal/steeldecal/steel_decals6{ dir = 10 @@ -23787,35 +22503,6 @@ }, /turf/simulated/floor/reinforced, /area/rnd/xenobiology) -"bWp" = ( -/obj/machinery/light{ - dir = 8; - icon_state = "tube1"; - pixel_y = 0 - }, -/obj/effect/floor_decal/techfloor{ - dir = 8 - }, -/turf/simulated/floor/tiled/techfloor, -/area/engineering/atmos/processing) -"bWt" = ( -/obj/structure/cable/cyan{ - d1 = 1; - d2 = 2; - icon_state = "1-2" - }, -/obj/machinery/atmospherics/pipe/zpipe/up{ - dir = 1 - }, -/turf/simulated/floor/tiled/techfloor, -/area/engineering/atmos/processing) -"bWu" = ( -/obj/effect/floor_decal/industrial/warning{ - icon_state = "warning"; - dir = 4 - }, -/turf/simulated/floor/tiled/techfloor, -/area/engineering/atmos/processing) "bWv" = ( /obj/machinery/door/firedoor/glass, /obj/effect/floor_decal/steeldecal/steel_decals_central1{ @@ -23830,23 +22517,18 @@ /turf/simulated/floor/lino, /area/crew_quarters/visitor_dining) "bWK" = ( -/obj/effect/floor_decal/industrial/warning{ - icon_state = "warning"; - dir = 4 +/obj/machinery/atmospherics/pipe/manifold/visible/green{ + dir = 8 }, -/obj/machinery/atmospherics/pipe/simple/hidden/supply, -/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, -/turf/simulated/floor/tiled/techfloor, -/area/engineering/atmos/processing) -"bWL" = ( -/obj/machinery/portable_atmospherics/canister/empty, -/obj/machinery/light{ - dir = 4; - icon_state = "tube1"; - pixel_x = 0 +/obj/effect/floor_decal/borderfloor/corner{ + dir = 8 }, -/turf/simulated/floor/tiled/techmaint, -/area/engineering/atmos/processing) +/obj/effect/floor_decal/corner/yellow/bordercorner{ + icon_state = "bordercolorcorner"; + dir = 8 + }, +/turf/simulated/floor/tiled, +/area/engineering/atmos) "bWQ" = ( /obj/structure/cable/green{ d1 = 4; @@ -24033,79 +22715,47 @@ /turf/simulated/floor/wood, /area/crew_quarters/sleep/Dorm_6) "bXm" = ( -/obj/machinery/atmospherics/unary/outlet_injector{ - dir = 4; - icon_state = "map_injector"; - use_power = 1; - volume_rate = 700 - }, -/turf/simulated/floor/tiled/steel_dirty/virgo3b, -/area/engineering/atmos/intake) -"bXs" = ( -/obj/effect/floor_decal/techfloor{ - dir = 8 - }, -/obj/machinery/atmospherics/binary/passive_gate{ - dir = 8; - name = "Scrubber Purge Valve"; - target_pressure = 4500 - }, -/turf/simulated/floor/tiled/techfloor, +/obj/machinery/door/firedoor/glass, +/turf/simulated/floor/tiled, /area/engineering/atmos/processing) "bXu" = ( /turf/simulated/floor/tiled, /area/crew_quarters/visitor_dining) -"bXv" = ( -/obj/effect/floor_decal/industrial/warning/corner{ - dir = 8 - }, -/obj/structure/cable/cyan{ - d1 = 1; - d2 = 2; - icon_state = "1-2" - }, -/turf/simulated/floor/tiled/techfloor, -/area/engineering/atmos/processing) -"bXz" = ( -/obj/effect/floor_decal/industrial/warning{ - icon_state = "warning"; - dir = 4 - }, -/obj/machinery/atmospherics/valve/digital/open{ - dir = 4; - icon_state = "map_valve1" - }, -/turf/simulated/floor/tiled/techfloor, -/area/engineering/atmos/processing) "bXA" = ( -/obj/machinery/atmospherics/pipe/tank/phoron{ - dir = 8; - start_pressure = 1215.9 +/obj/effect/floor_decal/borderfloor, +/obj/effect/floor_decal/corner/yellow/border, +/obj/machinery/camera/network/engineering{ + dir = 1 }, -/obj/effect/floor_decal/industrial/outline/yellow, -/turf/simulated/floor/tiled/techmaint, -/area/engineering/atmos/processing) +/turf/simulated/floor/tiled, +/area/engineering/atmos) "bXB" = ( -/obj/effect/floor_decal/industrial/warning{ - icon_state = "warning"; - dir = 8 - }, -/obj/machinery/atmospherics/pipe/simple/visible/black{ +/obj/machinery/atmospherics/pipe/simple/visible/green{ icon_state = "intact"; - dir = 6 + dir = 5 }, -/turf/simulated/floor/tiled/techmaint, -/area/engineering/atmos/processing) +/obj/effect/floor_decal/borderfloor{ + dir = 4 + }, +/obj/effect/floor_decal/corner/yellow/border{ + icon_state = "bordercolor"; + dir = 4 + }, +/turf/simulated/floor/tiled, +/area/engineering/atmos) "bXC" = ( -/obj/effect/floor_decal/industrial/warning{ - icon_state = "warning"; - dir = 4 +/obj/machinery/light{ + dir = 1 }, -/obj/machinery/atmospherics/pipe/manifold/visible/blue{ - dir = 4 +/obj/effect/floor_decal/borderfloor{ + dir = 1 }, -/turf/simulated/floor/tiled/techmaint, -/area/engineering/atmos/processing) +/obj/effect/floor_decal/corner/yellow/border{ + icon_state = "bordercolor"; + dir = 1 + }, +/turf/simulated/floor/tiled, +/area/engineering/atmos) "bXJ" = ( /obj/effect/floor_decal/borderfloor{ dir = 8 @@ -24135,34 +22785,19 @@ /turf/simulated/floor/tiled, /area/crew_quarters/visitor_lodging) "bXY" = ( -/obj/effect/floor_decal/industrial/warning{ - dir = 8 +/obj/machinery/atmospherics/pipe/simple/visible/yellow{ + dir = 10 }, -/obj/structure/cable/cyan{ - d1 = 1; - d2 = 2; - icon_state = "1-2" +/obj/machinery/meter, +/obj/effect/floor_decal/borderfloor{ + dir = 4 }, -/turf/simulated/floor/tiled/techfloor, -/area/engineering/atmos/processing) -"bYb" = ( -/obj/machinery/atmospherics/pipe/zpipe/up{ - dir = 4; - icon_state = "up"; - level = 2 +/obj/effect/floor_decal/corner/yellow/border{ + icon_state = "bordercolor"; + dir = 4 }, -/turf/simulated/floor/tiled/techmaint, -/area/engineering/atmos/processing) -"bYc" = ( -/obj/effect/floor_decal/industrial/warning{ - icon_state = "warning"; - dir = 8 - }, -/obj/machinery/atmospherics/pipe/manifold/visible/black{ - dir = 8 - }, -/turf/simulated/floor/tiled/techmaint, -/area/engineering/atmos/processing) +/turf/simulated/floor/tiled, +/area/engineering/atmos) "bYe" = ( /obj/machinery/alarm{ dir = 8; @@ -24264,18 +22899,6 @@ }, /turf/simulated/floor/tiled/white, /area/crew_quarters/sleep/Dorm_4) -"bYo" = ( -/obj/effect/floor_decal/techfloor{ - dir = 8 - }, -/obj/structure/extinguisher_cabinet{ - dir = 4; - icon_state = "extinguisher_closed"; - pixel_x = -30 - }, -/obj/machinery/atmospherics/portables_connector, -/turf/simulated/floor/tiled/techfloor, -/area/engineering/atmos/processing) "bYv" = ( /obj/machinery/button/remote/airlock{ id = "dorm3"; @@ -24311,7 +22934,7 @@ /obj/effect/floor_decal/steeldecal/steel_decals7{ dir = 10 }, -/obj/machinery/camera/network/northern_star{ +/obj/machinery/camera/network/tether{ dir = 9 }, /obj/structure/disposalpipe/junction{ @@ -24373,64 +22996,26 @@ /turf/simulated/floor/tiled/white, /area/crew_quarters/sleep/Dorm_4) "bZc" = ( -/obj/machinery/atmospherics/pipe/simple/visible/red{ - icon_state = "intact"; - dir = 5 - }, -/turf/simulated/floor/tiled/techfloor, -/area/engineering/atmos/processing) -"bZd" = ( -/obj/effect/floor_decal/industrial/warning/corner{ - icon_state = "warningcorner"; - dir = 1 - }, -/obj/structure/cable/cyan{ - d1 = 1; - d2 = 2; - icon_state = "1-2" - }, -/obj/machinery/atmospherics/binary/pump/on{ - dir = 4; - name = "Scrubbers to Waste" - }, -/obj/effect/floor_decal/industrial/outline/yellow, -/turf/simulated/floor/tiled/techfloor, -/area/engineering/atmos/processing) -"bZe" = ( -/obj/effect/floor_decal/industrial/warning{ - dir = 1 - }, -/obj/machinery/atmospherics/pipe/manifold/visible/red{ - icon_state = "map"; - dir = 1 - }, -/obj/machinery/meter{ - frequency = 1443; - id = "scrub_main_meter"; - name = "Scrubbers Loop" - }, -/turf/simulated/floor/tiled/techfloor, -/area/engineering/atmos/processing) -"bZi" = ( -/obj/effect/floor_decal/industrial/warning/corner{ - icon_state = "warningcorner"; - dir = 4 - }, -/obj/machinery/atmospherics/pipe/simple/hidden/supply, -/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, -/turf/simulated/floor/tiled/techfloor, -/area/engineering/atmos/processing) -"bZk" = ( -/obj/effect/floor_decal/industrial/warning{ - icon_state = "warning"; - dir = 4 - }, -/obj/machinery/atmospherics/pipe/simple/visible/blue{ - icon_state = "intact"; +/obj/machinery/atmospherics/pipe/simple/visible/yellow{ dir = 9 }, -/turf/simulated/floor/tiled/techmaint, -/area/engineering/atmos/processing) +/turf/simulated/floor/tiled, +/area/engineering/atmos) +"bZe" = ( +/obj/machinery/atmospherics/pipe/simple/visible/green{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/visible/red, +/turf/simulated/floor/tiled, +/area/engineering/atmos) +"bZi" = ( +/obj/machinery/atmospherics/pipe/manifold/visible/green{ + icon_state = "map"; + dir = 4 + }, +/obj/machinery/meter, +/turf/simulated/floor/tiled, +/area/engineering/atmos) "bZu" = ( /obj/structure/cable/green{ d1 = 4; @@ -24580,22 +23165,24 @@ }, /turf/simulated/floor/wood, /area/crew_quarters/sleep/Dorm_4) +"cab" = ( +/obj/machinery/atmospherics/pipe/simple/visible/scrubbers{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/visible/supply{ + dir = 4 + }, +/obj/structure/catwalk, +/obj/effect/decal/cleanable/dirt, +/turf/simulated/floor/plating, +/area/maintenance/lower/research) "cae" = ( -/obj/machinery/atmospherics/pipe/cap/visible{ - icon_state = "cap"; - dir = 8 +/obj/machinery/atmospherics/pipe/manifold/visible/red{ + icon_state = "map"; + dir = 1 }, -/turf/simulated/floor/tiled/techfloor, -/area/engineering/atmos/processing) -"cal" = ( -/obj/structure/cable/cyan{ - d1 = 1; - d2 = 2; - icon_state = "1-2" - }, -/obj/machinery/atmospherics/pipe/zpipe/up, -/turf/simulated/floor/tiled/techfloor, -/area/engineering/atmos/processing) +/turf/simulated/floor/tiled, +/area/engineering/atmos) "cay" = ( /obj/effect/floor_decal/borderfloor{ dir = 8 @@ -24633,54 +23220,23 @@ /obj/structure/disposalpipe/segment, /turf/simulated/floor/tiled, /area/crew_quarters/visitor_lodging) -"caE" = ( -/obj/structure/cable/cyan{ - d1 = 1; - d2 = 2; - icon_state = "1-2" - }, -/obj/machinery/atmospherics/binary/pump/on{ - name = "Filtering to Waste" - }, -/turf/simulated/floor/tiled/techfloor, -/area/engineering/atmos/processing) "caH" = ( -/obj/machinery/meter, -/obj/machinery/atmospherics/pipe/manifold/visible/black{ - icon_state = "map"; - dir = 4 +/obj/machinery/atmospherics/omni/atmos_filter{ + name = "CO2 Filter"; + tag_east = 2; + tag_north = 1; + tag_south = 5; + tag_west = 0 }, -/turf/simulated/floor/tiled/techfloor, -/area/engineering/atmos/processing) +/turf/simulated/floor/tiled, +/area/engineering/atmos) "caP" = ( -/obj/machinery/atmospherics/pipe/tank/carbon_dioxide{ - dir = 8; - start_pressure = 3039.75 - }, -/obj/effect/floor_decal/industrial/outline/yellow, -/turf/simulated/floor/tiled/techmaint, -/area/engineering/atmos/processing) -"caS" = ( -/obj/machinery/atmospherics/pipe/manifold/visible/black{ - dir = 8 - }, -/obj/effect/floor_decal/industrial/warning{ - icon_state = "warning"; +/obj/machinery/atmospherics/pipe/simple/visible/yellow, +/obj/machinery/atmospherics/pipe/simple/visible/red{ dir = 4 }, -/turf/simulated/floor/tiled/techmaint, -/area/engineering/atmos/processing) -"caV" = ( -/obj/effect/floor_decal/techfloor{ - dir = 4 - }, -/obj/structure/extinguisher_cabinet{ - dir = 8; - icon_state = "extinguisher_closed"; - pixel_x = 30 - }, -/turf/simulated/floor/tiled/techfloor, -/area/engineering/atmos/processing) +/turf/simulated/floor/tiled, +/area/engineering/atmos) "cbj" = ( /obj/machinery/alarm{ dir = 8; @@ -24793,97 +23349,59 @@ /turf/simulated/floor/tiled/white, /area/crew_quarters/sleep/Dorm_2) "cbw" = ( -/obj/machinery/light/small{ - dir = 4; - pixel_y = 0 - }, -/obj/machinery/alarm/monitor{ - dir = 8; - pixel_x = 25; - pixel_y = 0; - rcon_setting = 3 - }, -/turf/simulated/floor/tiled/steel_dirty/virgo3b, -/area/engineering/atmos/intake) -"cbA" = ( -/obj/effect/floor_decal/techfloor{ - dir = 8 - }, -/obj/machinery/light{ - dir = 8; - icon_state = "tube1"; - pixel_y = 0 - }, /obj/machinery/atmospherics/pipe/simple/visible/black{ - dir = 5 + dir = 6 }, -/turf/simulated/floor/tiled/techfloor, -/area/engineering/atmos/processing) +/turf/simulated/floor/tiled, +/area/engineering/atmos) +"cbA" = ( +/obj/machinery/atmospherics/unary/heat_exchanger{ + dir = 4 + }, +/turf/simulated/floor/tiled, +/area/engineering/atmos) "cbB" = ( -/obj/structure/cable/cyan{ - d1 = 1; - d2 = 2; - icon_state = "1-2" - }, -/obj/machinery/atmospherics/pipe/simple/visible/yellow{ - dir = 5 - }, -/turf/simulated/floor/tiled/techfloor, -/area/engineering/atmos/processing) +/obj/effect/floor_decal/borderfloor, +/obj/effect/floor_decal/corner/black/border, +/turf/simulated/floor/tiled, +/area/engineering/atmos) "cbE" = ( -/obj/machinery/atmospherics/pipe/manifold/visible/black{ - icon_state = "map"; - dir = 4 +/obj/machinery/atmospherics/binary/passive_gate/on{ + target_pressure = 15000 }, -/turf/simulated/floor/tiled/techfloor, -/area/engineering/atmos/processing) +/obj/effect/floor_decal/borderfloor, +/obj/effect/floor_decal/corner/black/border, +/turf/simulated/floor/tiled, +/area/engineering/atmos) "cbH" = ( -/obj/machinery/atmospherics/binary/pump{ - dir = 4 - }, -/obj/effect/floor_decal/industrial/warning/corner{ - icon_state = "warningcorner"; - dir = 4 - }, -/turf/simulated/floor/tiled/techfloor, -/area/engineering/atmos/processing) +/obj/effect/floor_decal/borderfloor, +/obj/effect/floor_decal/corner/orange/border, +/turf/simulated/floor/tiled, +/area/engineering/atmos) "cbK" = ( -/obj/effect/floor_decal/industrial/warning{ - icon_state = "warning"; - dir = 1 - }, -/obj/machinery/atmospherics/pipe/manifold/visible/yellow, -/turf/simulated/floor/tiled/techfloor, -/area/engineering/atmos/processing) +/obj/machinery/atmospherics/pipe/simple/visible/black, +/obj/effect/floor_decal/borderfloor, +/obj/effect/floor_decal/corner/red/border, +/turf/simulated/floor/tiled, +/area/engineering/atmos) "cbN" = ( -/obj/effect/floor_decal/industrial/warning/corner{ - icon_state = "warningcorner"; - dir = 1 - }, -/obj/machinery/atmospherics/pipe/simple/visible/yellow, -/turf/simulated/floor/tiled/techfloor, -/area/engineering/atmos/processing) +/obj/effect/floor_decal/borderfloor, +/obj/effect/floor_decal/corner/red/border, +/turf/simulated/floor/tiled, +/area/engineering/atmos) "cbO" = ( -/obj/effect/floor_decal/industrial/warning{ - icon_state = "warning"; - dir = 1 +/obj/machinery/atmospherics/binary/passive_gate/on{ + target_pressure = 15000 }, -/obj/machinery/atmospherics/pipe/simple/visible/yellow{ - dir = 9 - }, -/turf/simulated/floor/tiled/techfloor, -/area/engineering/atmos/processing) +/obj/effect/floor_decal/borderfloor, +/obj/effect/floor_decal/corner/white/border, +/turf/simulated/floor/tiled, +/area/engineering/atmos) "cbP" = ( -/obj/machinery/atmospherics/pipe/manifold/visible/black{ - dir = 8 - }, -/obj/effect/floor_decal/industrial/warning{ - icon_state = "warning"; - dir = 4 - }, -/obj/machinery/meter, -/turf/simulated/floor/tiled/techmaint, -/area/engineering/atmos/processing) +/obj/effect/floor_decal/borderfloor, +/obj/effect/floor_decal/corner/white/border, +/turf/simulated/floor/tiled, +/area/engineering/atmos) "cbT" = ( /obj/machinery/button/remote/airlock{ id = "dorm1"; @@ -24921,82 +23439,54 @@ /turf/simulated/floor/tiled/white, /area/crew_quarters/sleep/Dorm_2) "ccn" = ( -/obj/effect/floor_decal/techfloor{ - dir = 8 +/obj/machinery/alarm{ + dir = 1; + icon_state = "alarm0"; + pixel_y = -22 }, -/obj/machinery/atmospherics/binary/passive_gate{ - dir = 8; - name = "Waste Purge Valve"; - target_pressure = 4500 +/obj/machinery/atmospherics/unary/heat_exchanger{ + dir = 4 }, -/turf/simulated/floor/tiled/techfloor, -/area/engineering/atmos/processing) +/turf/simulated/floor/tiled, +/area/engineering/atmos) "ccx" = ( -/obj/structure/cable/cyan{ - d1 = 1; - d2 = 2; - icon_state = "1-2" +/obj/machinery/atmospherics/binary/pump{ + dir = 4 }, -/turf/simulated/floor/tiled/techfloor, -/area/engineering/atmos/processing) +/turf/simulated/floor/tiled/techmaint, +/area/engineering/atmos) "ccC" = ( -/obj/machinery/atmospherics/pipe/manifold/visible/black{ - dir = 1 +/obj/effect/floor_decal/borderfloor{ + dir = 8 }, -/obj/effect/floor_decal/industrial/warning{ - icon_state = "warning"; - dir = 1 +/obj/effect/floor_decal/corner/white/border{ + dir = 8 }, -/turf/simulated/floor/tiled/techmaint, -/area/engineering/atmos/processing) +/turf/simulated/floor/tiled, +/area/engineering/atmos) "ccM" = ( -/turf/simulated/floor/outdoors/dirt/virgo3b, -/area/engineering/atmos/intake) -"ccN" = ( -/turf/simulated/floor/plating, -/area/engineering/atmos/intake) -"ccO" = ( -/obj/machinery/atmospherics/pipe/manifold/visible/black{ - dir = 8 - }, -/obj/effect/floor_decal/industrial/warning/corner{ - icon_state = "warningcorner"; +/obj/machinery/atmospherics/pipe/simple/heat_exchanging{ dir = 4 }, -/turf/simulated/floor/tiled/techmaint, -/area/engineering/atmos/processing) -"ccQ" = ( -/obj/machinery/atmospherics/pipe/simple/hidden/supply, -/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ - dir = 5 - }, -/obj/machinery/atmospherics/pipe/cap/visible{ - icon_state = "cap"; - dir = 8 - }, -/turf/simulated/floor/tiled/techfloor, -/area/engineering/atmos/processing) +/obj/machinery/atmospherics/pipe/simple/heat_exchanging, +/turf/simulated/floor/tiled/steel_dirty/virgo3b, +/area/engineering/atmos/intake) "ccR" = ( -/obj/effect/floor_decal/industrial/warning/corner{ - icon_state = "warningcorner"; - dir = 1 +/obj/machinery/firealarm{ + dir = 1; + pixel_x = 0; + pixel_y = -25 }, -/obj/machinery/atmospherics/valve/digital{ - dir = 4 - }, -/turf/simulated/floor/tiled/techmaint, -/area/engineering/atmos/processing) +/turf/simulated/floor/tiled, +/area/engineering/atmos) "ccS" = ( -/obj/machinery/light{ - dir = 4; - icon_state = "tube1"; - pixel_x = 0 +/obj/machinery/alarm{ + dir = 1; + icon_state = "alarm0"; + pixel_y = -22 }, -/obj/effect/floor_decal/techfloor{ - dir = 4 - }, -/turf/simulated/floor/tiled/techfloor, -/area/engineering/atmos/processing) +/turf/simulated/floor/tiled, +/area/engineering/atmos) "ccW" = ( /obj/structure/cable/green{ d1 = 4; @@ -25146,30 +23636,6 @@ }, /turf/simulated/floor/wood, /area/crew_quarters/sleep/Dorm_2) -"cdf" = ( -/obj/machinery/door/airlock/multi_tile/metal/mait{ - name = "Atmospherics Maintenance"; - icon_state = "door_closed"; - dir = 2; - req_access = list(24); - req_one_access = list(24) - }, -/turf/simulated/floor/plating, -/area/engineering/atmos/intake) -"cdh" = ( -/obj/machinery/atmospherics/unary/vent_scrubber{ - icon_state = "map_scrubber_off"; - dir = 4 - }, -/turf/simulated/floor/tiled/steel_dirty/virgo3b, -/area/engineering/atmos/intake) -"cdk" = ( -/obj/machinery/atmospherics/binary/pump/high_power/on{ - icon_state = "map_on"; - dir = 1 - }, -/turf/simulated/floor/tiled/techfloor, -/area/engineering/atmos/processing) "cdm" = ( /obj/structure/disposalpipe/segment, /turf/simulated/floor/reinforced, @@ -25216,13 +23682,6 @@ }, /turf/simulated/floor/reinforced, /area/rnd/xenobiology) -"cdu" = ( -/obj/machinery/atmospherics/binary/pump/high_power/on{ - icon_state = "map_on"; - dir = 1 - }, -/turf/simulated/floor/tiled/techmaint, -/area/engineering/atmos/processing) "cdK" = ( /obj/effect/floor_decal/steeldecal/steel_decals7{ dir = 10 @@ -25280,143 +23739,18 @@ /obj/structure/disposalpipe/segment, /turf/simulated/floor/tiled, /area/crew_quarters/visitor_lodging) -"ced" = ( -/obj/machinery/atmospherics/pipe/simple/visible{ - dir = 4 - }, -/obj/structure/cable/cyan{ - d1 = 2; - d2 = 4; - icon_state = "2-4" - }, -/turf/simulated/floor/tiled/steel_dirty/virgo3b, -/area/engineering/atmos/intake) -"ceh" = ( -/obj/effect/floor_decal/techfloor, -/obj/structure/cable/cyan{ - d1 = 4; - d2 = 8; - icon_state = "4-8" - }, -/obj/machinery/atmospherics/binary/pump{ - dir = 4 - }, -/turf/simulated/floor/tiled/techfloor, -/area/engineering/atmos/processing) -"cen" = ( -/obj/structure/grille, -/obj/structure/window/reinforced/full, -/obj/machinery/door/firedoor, -/obj/machinery/atmospherics/pipe/simple/visible{ - dir = 4 - }, -/obj/structure/cable/cyan{ - d1 = 4; - d2 = 8; - icon_state = "4-8" - }, -/turf/simulated/floor/plating, -/area/engineering/atmos/processing) -"ceo" = ( -/obj/effect/floor_decal/techfloor, -/obj/structure/cable/cyan{ - d1 = 4; - d2 = 8; - icon_state = "4-8" - }, -/obj/machinery/atmospherics/pipe/simple/visible/yellow{ - dir = 4 - }, -/turf/simulated/floor/tiled/techfloor, -/area/engineering/atmos/processing) -"ceq" = ( -/obj/effect/floor_decal/techfloor, -/obj/structure/cable/cyan{ - d1 = 4; - d2 = 8; - icon_state = "4-8" - }, -/obj/machinery/camera/network/engineering{ - dir = 1 - }, -/obj/machinery/atmospherics/pipe/manifold/visible/yellow, -/obj/machinery/meter, -/turf/simulated/floor/tiled/techfloor, -/area/engineering/atmos/processing) -"ces" = ( -/obj/effect/floor_decal/techfloor, -/obj/structure/cable/cyan{ - d1 = 1; - d2 = 8; - icon_state = "1-8" - }, -/obj/machinery/atmospherics/pipe/simple/visible/yellow{ - dir = 4 - }, -/turf/simulated/floor/tiled/techfloor, -/area/engineering/atmos/processing) "cet" = ( -/obj/machinery/light, -/obj/effect/floor_decal/techfloor, -/obj/structure/cable/cyan{ - d1 = 4; - d2 = 8; - icon_state = "4-8" - }, -/obj/machinery/atmospherics/pipe/manifold/visible/yellow, -/turf/simulated/floor/tiled/techfloor, -/area/engineering/atmos/processing) -"ceu" = ( -/obj/effect/floor_decal/techfloor, -/obj/machinery/atmospherics/binary/pump/high_power/on{ - dir = 4; - icon_state = "map_on"; - name = "Waste to Filtering" - }, -/turf/simulated/floor/tiled/techfloor, -/area/engineering/atmos/processing) -"cev" = ( -/obj/effect/floor_decal/techfloor, -/obj/machinery/atmospherics/omni/atmos_filter{ - tag_east = 2; - tag_north = 6; - tag_south = 0; - tag_west = 1 - }, -/turf/simulated/floor/tiled/techfloor, -/area/engineering/atmos/processing) -"cex" = ( -/obj/effect/floor_decal/techfloor, -/obj/machinery/atmospherics/omni/atmos_filter{ - tag_east = 5; - tag_north = 2; - tag_south = 0; - tag_west = 1 - }, -/turf/simulated/floor/tiled/techfloor, -/area/engineering/atmos/processing) -"cey" = ( -/obj/machinery/door/firedoor/glass, -/obj/structure/catwalk, -/obj/machinery/door/airlock/maintenance/common, -/turf/simulated/floor/tiled/techfloor, -/area/maintenance/lower/atmos) -"cez" = ( -/obj/machinery/light_switch{ - pixel_y = -25 - }, -/obj/machinery/atmospherics/pipe/simple/visible/black{ - icon_state = "intact"; - dir = 9 - }, -/obj/effect/floor_decal/techfloor, +/obj/machinery/atmospherics/pipe/manifold/visible/black, /turf/simulated/floor/tiled/techmaint, -/area/engineering/atmos/processing) +/area/engineering/atmos) "ceD" = ( -/obj/machinery/door/firedoor/glass, -/obj/structure/catwalk, -/obj/machinery/door/airlock/maintenance/common, -/turf/simulated/floor/tiled/techfloor, +/obj/effect/floor_decal/rust, +/obj/structure/closet, +/obj/random/maintenance/research, +/obj/random/maintenance/research, +/obj/random/maintenance/research, +/obj/random/maintenance/clean, +/turf/simulated/floor/plating, /area/maintenance/lower/research) "ceG" = ( /obj/effect/floor_decal/steeldecal/steel_decals7{ @@ -25584,15 +23918,6 @@ }, /turf/simulated/floor/lino, /area/crew_quarters/visitor_dining) -"cfc" = ( -/obj/structure/cable/cyan, -/obj/machinery/power/apc{ - dir = 4; - name = "east bump"; - pixel_x = 28 - }, -/turf/simulated/floor/tiled/steel_dirty/virgo3b, -/area/engineering/atmos/intake) "cfd" = ( /obj/machinery/atmospherics/pipe/simple/hidden/supply{ dir = 4 @@ -25646,14 +23971,6 @@ /obj/structure/bed/chair/wood, /turf/simulated/floor/tiled, /area/tether/surfacebase/tram) -"cfl" = ( -/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, -/turf/simulated/floor/plating, -/area/vacant/vacant_site/east) -"cfm" = ( -/obj/structure/stairs/north, -/turf/simulated/floor/tiled, -/area/tether/surfacebase/atrium_one) "cfp" = ( /obj/effect/floor_decal/steeldecal/steel_decals7{ dir = 6 @@ -25692,19 +24009,6 @@ }, /turf/simulated/floor/tiled, /area/tether/surfacebase/atrium_one) -"cft" = ( -/obj/effect/floor_decal/borderfloor{ - dir = 8 - }, -/obj/effect/floor_decal/corner/grey/border{ - icon_state = "bordercolor"; - dir = 8 - }, -/obj/effect/floor_decal/borderfloor/corner2{ - dir = 10 - }, -/turf/simulated/floor/tiled, -/area/crew_quarters/visitor_laundry) "cfv" = ( /turf/simulated/floor/tiled, /area/crew_quarters/visitor_laundry) @@ -25785,27 +24089,10 @@ }, /turf/simulated/floor/tiled, /area/crew_quarters/visitor_laundry) -"cfM" = ( -/obj/effect/floor_decal/steeldecal/steel_decals_central1{ - dir = 1 - }, -/turf/simulated/floor/tiled/monofloor{ - dir = 1 - }, -/area/crew_quarters/visitor_laundry) "cfN" = ( /obj/machinery/washing_machine, /turf/simulated/floor/tiled, /area/crew_quarters/visitor_laundry) -"cfO" = ( -/obj/machinery/atmospherics/pipe/simple/hidden/supply{ - dir = 10 - }, -/obj/structure/cable{ - icon_state = "1-8" - }, -/turf/simulated/floor/plating, -/area/vacant/vacant_site/east) "cfP" = ( /obj/machinery/atmospherics/unary/vent_scrubber/on, /turf/simulated/floor/tiled, @@ -25825,11 +24112,6 @@ }, /turf/simulated/floor/tiled, /area/crew_quarters/visitor_laundry) -"cfT" = ( -/obj/machinery/door/airlock/glass, -/obj/machinery/door/firedoor/glass, -/turf/simulated/floor/tiled/steel_grid, -/area/tether/surfacebase/atrium_one) "cfU" = ( /obj/effect/floor_decal/borderfloor/corner{ dir = 4 @@ -25864,12 +24146,6 @@ }, /turf/simulated/floor/plating, /area/crew_quarters/visitor_laundry) -"cgb" = ( -/obj/machinery/door/airlock/maintenance/common{ - name = "Tram Maintenance Access" - }, -/turf/simulated/floor/tiled, -/area/crew_quarters/visitor_dining) "cge" = ( /obj/machinery/atmospherics/pipe/simple/hidden/supply, /obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, @@ -25923,26 +24199,25 @@ /obj/effect/floor_decal/steeldecal/steel_decals7{ dir = 5 }, -/obj/effect/floor_decal/borderfloor{ - dir = 8 - }, -/obj/effect/floor_decal/corner/blue/border{ - dir = 8 +/obj/structure/cable/green{ + d1 = 1; + d2 = 2; + icon_state = "1-2" }, /obj/structure/cable/green{ d1 = 1; d2 = 4; icon_state = "1-4" }, -/obj/machinery/atmospherics/pipe/simple/hidden/supply{ - dir = 5 +/obj/structure/disposalpipe/junction{ + dir = 1 }, -/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ - dir = 5 - }, -/obj/structure/disposalpipe/segment{ - dir = 1; - icon_state = "pipe-c" +/obj/machinery/atmospherics/pipe/manifold4w/hidden/scrubbers, +/obj/machinery/atmospherics/pipe/manifold4w/hidden/supply, +/obj/structure/cable/green{ + d1 = 1; + d2 = 8; + icon_state = "1-8" }, /turf/simulated/floor/tiled, /area/crew_quarters/visitor_lodging) @@ -26054,31 +24329,6 @@ }, /turf/simulated/floor/lino, /area/crew_quarters/visitor_dining) -"cgw" = ( -/obj/machinery/door/airlock/multi_tile/glass{ - autoclose = 1; - dir = 2; - id_tag = null; - name = "Laundry"; - req_access = list() - }, -/obj/effect/floor_decal/steeldecal/steel_decals_central1, -/obj/structure/cable/green{ - d1 = 4; - d2 = 8; - icon_state = "4-8" - }, -/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ - dir = 4 - }, -/obj/machinery/atmospherics/pipe/simple/hidden/supply{ - dir = 4 - }, -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/turf/simulated/floor/tiled/monofloor, -/area/crew_quarters/visitor_laundry) "cgz" = ( /obj/structure/cable/green{ d1 = 4; @@ -26340,6 +24590,23 @@ /obj/effect/floor_decal/corner/white/border{ dir = 8 }, +/obj/structure/disposalpipe/segment, +/obj/effect/floor_decal/borderfloor/corner2{ + dir = 8 + }, +/obj/effect/floor_decal/corner/white/bordercorner2{ + dir = 8 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/structure/cable/green{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/obj/machinery/light{ + dir = 8 + }, /turf/simulated/floor/tiled, /area/crew_quarters/visitor_lodging) "chk" = ( @@ -26461,6 +24728,11 @@ }, /turf/simulated/floor/wood, /area/crew_quarters/sleep/Dorm_7) +"chB" = ( +/obj/machinery/portable_atmospherics/canister/oxygen, +/obj/effect/floor_decal/industrial/outline/yellow, +/turf/simulated/floor/tiled/techmaint, +/area/engineering/atmos) "chC" = ( /obj/machinery/disposal, /obj/structure/disposalpipe/trunk{ @@ -26527,6 +24799,14 @@ /obj/effect/floor_decal/corner/blue/border{ dir = 8 }, +/obj/structure/disposalpipe/segment, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/structure/cable/green{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, /turf/simulated/floor/tiled, /area/crew_quarters/visitor_lodging) "chK" = ( @@ -26562,6 +24842,7 @@ icon_state = "bordercolor"; dir = 8 }, +/obj/machinery/vending/fitness, /turf/simulated/floor/tiled, /area/crew_quarters/visitor_laundry) "chP" = ( @@ -26625,17 +24906,6 @@ /obj/machinery/atmospherics/unary/vent_pump/on, /turf/simulated/floor/wood, /area/crew_quarters/sleep/Dorm_6) -"chW" = ( -/obj/effect/floor_decal/borderfloor{ - dir = 4 - }, -/obj/effect/floor_decal/corner/grey/border{ - icon_state = "bordercolor"; - dir = 4 - }, -/obj/machinery/vending/coffee, -/turf/simulated/floor/tiled, -/area/crew_quarters/visitor_laundry) "chY" = ( /obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, /obj/effect/floor_decal/spline/plain{ @@ -26897,24 +25167,19 @@ }, /turf/simulated/floor/wood, /area/crew_quarters/sleep/Dorm_3) -"ciZ" = ( -/obj/effect/floor_decal/borderfloor{ - dir = 6 - }, -/obj/effect/floor_decal/corner/white/border{ - dir = 6 - }, -/turf/simulated/floor/tiled, -/area/crew_quarters/visitor_lodging) "cjb" = ( -/obj/effect/floor_decal/borderfloor{ - dir = 10 +/obj/structure/disposalpipe/segment, +/obj/machinery/door/airlock/maintenance/common, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/structure/cable/green{ + d1 = 1; + d2 = 2; + icon_state = "1-2" }, -/obj/effect/floor_decal/corner/blue/border{ - dir = 10 - }, -/turf/simulated/floor/tiled, -/area/crew_quarters/visitor_lodging) +/obj/machinery/door/firedoor/glass, +/turf/simulated/floor/plating, +/area/maintenance/lower/atmos) "cjd" = ( /obj/machinery/disposal, /obj/structure/disposalpipe/trunk{ @@ -27107,13 +25372,10 @@ dir = 6 }, /obj/structure/closet/crate, -/obj/item/weapon/bedsheet/green, /obj/machinery/alarm{ - breach_detection = 0; dir = 8; pixel_x = 25; - pixel_y = 0; - report_danger_level = 0 + pixel_y = 0 }, /obj/machinery/light{ dir = 4; @@ -27227,8 +25489,30 @@ /turf/simulated/floor/lino, /area/crew_quarters/visitor_dining) "cjX" = ( -/turf/simulated/wall, -/area/crew_quarters/visitor_lodging) +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/obj/machinery/door/firedoor/glass, +/obj/machinery/door/airlock{ + name = "Unisex Showers" + }, +/obj/structure/cable/green{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/turf/simulated/floor/tiled, +/area/crew_quarters/showers) +"ckE" = ( +/obj/machinery/door/firedoor, +/obj/structure/grille, +/obj/structure/window/reinforced/full, +/obj/structure/window/reinforced, +/turf/simulated/floor/plating, +/area/crew_quarters/sleep/maintDorm4) "clb" = ( /obj/structure/sign/warning/caution{ desc = "No unarmed personnel beyond this point."; @@ -27315,6 +25599,54 @@ }, /turf/simulated/floor/tiled, /area/tether/surfacebase/atrium_one) +"clm" = ( +/obj/structure/cable{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/obj/structure/cable{ + icon_state = "0-8" + }, +/obj/machinery/power/terminal, +/obj/effect/floor_decal/industrial/warning, +/turf/simulated/floor/plating, +/area/maintenance/substation/surface_atmos) +"cmq" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/turf/simulated/floor/tiled, +/area/engineering/atmos/processing) +"crL" = ( +/obj/structure/table/rack, +/obj/random/maintenance/clean, +/turf/simulated/floor/plating, +/area/maintenance/lower/research) +"csS" = ( +/obj/machinery/atmospherics/unary/vent_scrubber/on{ + dir = 4 + }, +/turf/simulated/floor/tiled/techmaint, +/area/engineering/atmos) +"cws" = ( +/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{ + dir = 8 + }, +/obj/machinery/atmospherics/pipe/manifold/hidden/supply{ + dir = 8 + }, +/obj/structure/cable/green{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/turf/simulated/floor/plating, +/area/crew_quarters/sleep/maintDorm4) +"cyE" = ( +/obj/effect/decal/cleanable/dirt, +/turf/simulated/floor/plating, +/area/maintenance/lower/atmos) "cBB" = ( /obj/effect/floor_decal/borderfloor{ dir = 8 @@ -27331,6 +25663,16 @@ /obj/structure/catwalk, /turf/simulated/floor/plating, /area/tether/surfacebase/outside/outside1) +"cHO" = ( +/obj/machinery/alarm{ + dir = 8; + pixel_x = 25; + pixel_y = 0 + }, +/obj/structure/table/woodentable, +/obj/effect/decal/cleanable/dirt, +/turf/simulated/floor/wood, +/area/crew_quarters/sleep/maintDorm4) "cHS" = ( /obj/effect/floor_decal/borderfloor{ dir = 9 @@ -27346,6 +25688,102 @@ }, /turf/simulated/floor/tiled, /area/tether/surfacebase/public_garden_one) +"cKm" = ( +/obj/machinery/atmospherics/pipe/simple/visible/supply{ + dir = 6 + }, +/turf/simulated/floor/tiled, +/area/engineering/atmos) +"cKH" = ( +/obj/machinery/portable_atmospherics/canister/air, +/obj/effect/floor_decal/industrial/outline/yellow, +/turf/simulated/floor/tiled/techmaint, +/area/engineering/atmos) +"cLz" = ( +/obj/machinery/atmospherics/pipe/manifold/visible/red{ + icon_state = "map"; + dir = 4 + }, +/obj/machinery/meter, +/turf/simulated/floor/tiled, +/area/engineering/atmos) +"cLW" = ( +/obj/effect/floor_decal/rust, +/obj/structure/toilet{ + pixel_y = 10 + }, +/obj/effect/decal/cleanable/dirt, +/turf/simulated/floor/tiled/white, +/area/crew_quarters/sleep/maintDorm3) +"cOL" = ( +/obj/machinery/atmospherics/unary/vent_scrubber/on, +/obj/machinery/light_construct{ + icon_state = "tube-construct-stage1"; + dir = 1 + }, +/obj/random/junk, +/turf/simulated/floor/wood, +/area/crew_quarters/sleep/maintDorm1) +"cQA" = ( +/obj/effect/floor_decal/borderfloor{ + dir = 1 + }, +/obj/effect/floor_decal/corner/blue/border{ + icon_state = "bordercolor"; + dir = 1 + }, +/obj/structure/table/standard, +/obj/machinery/light{ + dir = 1 + }, +/obj/machinery/alarm{ + frequency = 1441; + pixel_y = 22 + }, +/obj/item/weapon/towel/random, +/turf/simulated/floor/tiled, +/area/crew_quarters/showers) +"cRf" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/structure/disposalpipe/segment{ + dir = 8; + icon_state = "pipe-c" + }, +/obj/machinery/light_switch{ + dir = 8; + pixel_x = 24; + pixel_y = 6 + }, +/obj/machinery/button/remote/airlock{ + id = "maintdorm1"; + name = "Room 1 Lock"; + pixel_x = 23; + pixel_y = -4; + specialfunctions = 4 + }, +/obj/structure/cable/green{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/obj/effect/decal/cleanable/dirt, +/turf/simulated/floor/wood, +/area/crew_quarters/sleep/maintDorm1) +"cTp" = ( +/obj/structure/table/steel, +/obj/effect/decal/cleanable/cobweb, +/obj/effect/decal/cleanable/dirt, +/turf/simulated/floor/plating, +/area/vacant/vacant_bar) +"cVX" = ( +/obj/machinery/light{ + icon_state = "tube1"; + dir = 8 + }, +/obj/machinery/atmospherics/unary/vent_scrubber/on, +/turf/simulated/floor/tiled, +/area/engineering/atmos) "cWl" = ( /obj/effect/floor_decal/borderfloor{ dir = 8 @@ -27367,10 +25805,43 @@ }, /turf/simulated/floor/tiled, /area/tether/surfacebase/atrium_one) +"cWT" = ( +/obj/machinery/atmospherics/pipe/simple/visible/green{ + dir = 4 + }, +/obj/structure/cable/cyan{ + d1 = 2; + d2 = 4; + icon_state = "2-4" + }, +/turf/simulated/floor/plating, +/area/engineering/atmos/processing) +"daz" = ( +/obj/machinery/atmospherics/pipe/simple/visible/scrubbers{ + dir = 5 + }, +/obj/machinery/atmospherics/pipe/simple/visible/supply{ + dir = 5 + }, +/obj/structure/catwalk, +/obj/effect/decal/cleanable/dirt, +/turf/simulated/floor/plating, +/area/maintenance/lower/research) "dbc" = ( /obj/effect/decal/cleanable/dirt, /turf/simulated/floor/plating, /area/maintenance/lower/public_garden_maintenence) +"dby" = ( +/obj/machinery/door/firedoor/glass, +/obj/machinery/door/airlock/glass_atmos{ + name = "Canister Storage"; + req_access = list(24) + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, +/turf/simulated/floor/tiled/techmaint, +/area/engineering/atmos) "deS" = ( /obj/structure/railing{ dir = 4 @@ -27378,6 +25849,79 @@ /obj/effect/decal/cleanable/dirt, /turf/simulated/floor/tiled/techfloor, /area/maintenance/lower/public_garden_maintenence) +"dhv" = ( +/obj/machinery/atmospherics/pipe/manifold/hidden/supply, +/turf/simulated/floor/tiled/freezer, +/area/crew_quarters/showers) +"djV" = ( +/obj/machinery/door/firedoor, +/obj/structure/grille, +/obj/structure/window/reinforced/full, +/obj/structure/window/reinforced, +/turf/simulated/floor/plating, +/area/crew_quarters/sleep/maintDorm3) +"dmW" = ( +/obj/structure/symbol/fe, +/turf/simulated/wall, +/area/vacant/vacant_bar) +"drg" = ( +/obj/machinery/light{ + icon_state = "tube1"; + dir = 8 + }, +/turf/simulated/floor/tiled/techmaint, +/area/engineering/atmos) +"dss" = ( +/obj/machinery/atmospherics/pipe/tank/oxygen, +/turf/simulated/floor/tiled/techmaint, +/area/engineering/atmos) +"dtB" = ( +/obj/machinery/door/firedoor/glass, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/obj/machinery/door/airlock/multi_tile/glass{ + dir = 2 + }, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/turf/simulated/floor/tiled, +/area/tether/surfacebase/atrium_one) +"dul" = ( +/turf/simulated/floor/plating, +/area/engineering/atmos/processing) +"duL" = ( +/obj/structure/sink/kitchen{ + pixel_y = 28 + }, +/obj/effect/decal/cleanable/dirt, +/turf/simulated/floor/plating, +/area/vacant/vacant_bar) +"dwT" = ( +/obj/machinery/atmospherics/pipe/simple/visible/green{ + dir = 4 + }, +/obj/structure/cable/cyan{ + d1 = 1; + d2 = 8; + icon_state = "1-8" + }, +/turf/simulated/floor/tiled, +/area/engineering/atmos) +"dym" = ( +/obj/effect/decal/cleanable/dirt, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 9 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 10 + }, +/turf/simulated/floor/plating, +/area/vacant/vacant_bar) "dAk" = ( /obj/effect/floor_decal/borderfloor/corner{ dir = 4 @@ -27387,6 +25931,73 @@ }, /turf/simulated/floor/tiled, /area/tether/surfacebase/public_garden_one) +"dAD" = ( +/obj/machinery/atmospherics/unary/vent_scrubber/on{ + dir = 1 + }, +/turf/simulated/floor/tiled, +/area/engineering/atmos/processing) +"dAV" = ( +/obj/effect/floor_decal/rust, +/obj/effect/decal/cleanable/dirt, +/turf/simulated/floor/plating, +/area/maintenance/lower/research) +"dCs" = ( +/obj/effect/floor_decal/borderfloor{ + dir = 4 + }, +/obj/effect/floor_decal/corner/blue/border{ + dir = 4 + }, +/obj/machinery/atmospherics/binary/passive_gate/on{ + dir = 1; + target_pressure = 15000 + }, +/turf/simulated/floor/tiled, +/area/engineering/atmos) +"dCw" = ( +/obj/machinery/atmospherics/unary/vent_pump/on{ + dir = 4 + }, +/turf/simulated/floor/tiled/techmaint, +/area/engineering/atmos) +"dCM" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/obj/effect/floor_decal/industrial/warning/corner, +/obj/effect/floor_decal/steeldecal/steel_decals_central6{ + icon_state = "steel_decals_central6"; + dir = 4 + }, +/turf/simulated/floor/tiled, +/area/tether/surfacebase/atrium_one) +"dDr" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/obj/effect/decal/cleanable/dirt, +/turf/simulated/floor/plating, +/area/vacant/vacant_bar) +"dFd" = ( +/obj/machinery/power/apc/super{ + dir = 4; + name = "east bump"; + pixel_x = 24 + }, +/obj/structure/cable/cyan{ + d2 = 2; + icon_state = "0-2" + }, +/turf/simulated/floor/tiled/steel_dirty/virgo3b, +/area/engineering/atmos/intake) +"dGG" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/obj/item/weapon/stool, +/obj/effect/decal/cleanable/dirt, +/turf/simulated/floor/plating, +/area/vacant/vacant_bar) "dLl" = ( /obj/effect/floor_decal/borderfloor{ dir = 10 @@ -27399,11 +26010,97 @@ }, /turf/simulated/floor/tiled, /area/tether/surfacebase/public_garden_one) +"dLD" = ( +/obj/machinery/light{ + dir = 1 + }, +/obj/effect/floor_decal/borderfloor{ + dir = 1; + icon_state = "borderfloor"; + pixel_y = 0 + }, +/obj/effect/floor_decal/corner/yellow/border{ + icon_state = "bordercolor"; + dir = 1 + }, +/obj/machinery/portable_atmospherics/powered/scrubber, +/turf/simulated/floor/tiled/techmaint, +/area/engineering/atmos) +"dNl" = ( +/obj/effect/floor_decal/steeldecal/steel_decals7{ + dir = 6 + }, +/obj/effect/floor_decal/steeldecal/steel_decals7{ + dir = 5 + }, +/obj/effect/floor_decal/borderfloor{ + dir = 8 + }, +/obj/effect/floor_decal/corner/white/border{ + dir = 8 + }, +/obj/structure/cable/green{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/structure/disposalpipe/segment, +/obj/effect/floor_decal/borderfloor/corner2{ + dir = 10 + }, +/obj/effect/floor_decal/corner/white/bordercorner2{ + dir = 10 + }, +/turf/simulated/floor/tiled, +/area/crew_quarters/visitor_lodging) +"dOc" = ( +/obj/machinery/atmospherics/pipe/manifold/visible/green, +/turf/simulated/floor/tiled/techmaint, +/area/engineering/atmos/processing) +"dOh" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 10 + }, +/turf/simulated/floor/plating, +/area/crew_quarters/sleep/maintDorm1) "dOn" = ( /obj/effect/floor_decal/borderfloor, /obj/effect/floor_decal/corner/lightgrey/border, /turf/simulated/floor/tiled, /area/tether/surfacebase/public_garden_one) +"dQB" = ( +/obj/machinery/alarm{ + frequency = 1441; + pixel_y = 22 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/turf/simulated/floor/tiled, +/area/engineering/atmos/processing) +"dRx" = ( +/obj/machinery/power/apc{ + cell_type = /obj/item/weapon/cell/apc; + dir = 8; + name = "west bump"; + pixel_x = -28 + }, +/obj/structure/cable/green{ + d2 = 4; + icon_state = "0-4" + }, +/obj/structure/table/woodentable, +/obj/item/weapon/storage/box/donkpockets, +/turf/simulated/floor/plating, +/area/crew_quarters/sleep/maintDorm3) "dSz" = ( /obj/effect/floor_decal/techfloor{ dir = 9 @@ -27413,6 +26110,27 @@ }, /turf/simulated/floor/tiled/techfloor, /area/tether/surfacebase/public_garden_one) +"dUk" = ( +/obj/machinery/alarm{ + frequency = 1441; + pixel_y = 22 + }, +/obj/machinery/power/apc{ + cell_type = /obj/item/weapon/cell/apc; + dir = 8; + name = "west bump"; + pixel_x = -28 + }, +/obj/structure/cable{ + icon_state = "0-4" + }, +/obj/effect/decal/cleanable/dirt, +/turf/simulated/floor/plating, +/area/maintenance/substation/surface_atmos) +"dUT" = ( +/obj/machinery/atmospherics/pipe/manifold4w/visible/red, +/turf/simulated/floor/tiled, +/area/engineering/atmos) "dYj" = ( /obj/structure/cable{ icon_state = "4-8" @@ -27445,6 +26163,48 @@ /obj/effect/floor_decal/corner/lightgrey/bordercorner, /turf/simulated/floor/tiled, /area/tether/surfacebase/public_garden) +"dYn" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 9 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 10 + }, +/turf/simulated/floor/plating, +/area/crew_quarters/sleep/maintDorm4) +"dYy" = ( +/obj/machinery/door/firedoor/glass, +/turf/simulated/floor/plating, +/area/vacant/vacant_bar) +"eaK" = ( +/obj/effect/decal/cleanable/dirt, +/turf/simulated/floor/plating, +/area/vacant/vacant_bar) +"eaW" = ( +/obj/structure/disposalpipe/trunk{ + dir = 4 + }, +/obj/machinery/disposal, +/turf/simulated/floor/plating, +/area/crew_quarters/sleep/maintDorm3) +"eca" = ( +/turf/simulated/floor/plating, +/area/crew_quarters/sleep/maintDorm2) +"eel" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/obj/machinery/door/firedoor/glass, +/obj/structure/cable/green{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/turf/simulated/floor/plating, +/area/vacant/vacant_bar) "egX" = ( /obj/structure/cable{ icon_state = "1-2" @@ -27459,6 +26219,43 @@ }, /turf/simulated/floor/tiled, /area/tether/surfacebase/public_garden) +"epw" = ( +/turf/simulated/wall/r_wall, +/area/crew_quarters/sleep/Dorm_3) +"erR" = ( +/obj/machinery/camera/network/outside{ + dir = 8 + }, +/turf/simulated/floor/tiled/steel_dirty/virgo3b, +/area/engineering/atmos/intake) +"euU" = ( +/obj/machinery/power/apc{ + cell_type = /obj/item/weapon/cell/apc; + dir = 8; + name = "west bump"; + pixel_x = -28 + }, +/obj/structure/cable/green{ + d2 = 4; + icon_state = "0-4" + }, +/obj/structure/table, +/obj/effect/decal/cleanable/dirt, +/turf/simulated/floor/wood, +/area/crew_quarters/sleep/maintDorm4) +"ewA" = ( +/obj/machinery/atmospherics/unary/vent_pump/on{ + dir = 1 + }, +/obj/effect/decal/cleanable/dirt, +/turf/simulated/floor/plating, +/area/crew_quarters/sleep/maintDorm3) +"eyS" = ( +/obj/machinery/atmospherics/pipe/simple/visible/black{ + dir = 4 + }, +/turf/simulated/floor/tiled, +/area/engineering/atmos/processing) "ezH" = ( /obj/structure/cable/heavyduty{ icon_state = "1-2" @@ -27469,6 +26266,63 @@ }, /turf/simulated/floor/plating, /area/tether/surfacebase/outside/outside1) +"eAn" = ( +/obj/machinery/atmospherics/pipe/simple/visible/purple{ + dir = 6 + }, +/turf/simulated/floor/tiled/techmaint, +/area/engineering/atmos/processing) +"eCJ" = ( +/obj/structure/cable/cyan{ + d1 = 2; + d2 = 8; + icon_state = "2-8" + }, +/obj/structure/railing{ + dir = 8 + }, +/turf/simulated/floor/tiled, +/area/engineering/atmos) +"eFJ" = ( +/obj/structure/table, +/obj/effect/decal/cleanable/dirt, +/turf/simulated/floor/plating, +/area/crew_quarters/sleep/maintDorm4) +"eGQ" = ( +/obj/machinery/atmospherics/unary/vent_scrubber/on{ + dir = 8 + }, +/obj/machinery/alarm{ + dir = 8; + pixel_x = 25; + pixel_y = 0 + }, +/turf/simulated/floor/tiled/white, +/area/crew_quarters/sleep/maintDorm2) +"eJG" = ( +/obj/machinery/atmospherics/pipe/tank/phoron{ + icon_state = "phoron_map"; + dir = 4 + }, +/turf/simulated/floor/tiled/techmaint, +/area/engineering/atmos) +"eJQ" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/turf/simulated/floor/tiled/freezer, +/area/crew_quarters/showers) +"eLg" = ( +/obj/structure/table/steel, +/turf/simulated/floor/plating, +/area/vacant/vacant_bar) +"eNp" = ( +/obj/structure/table/steel, +/obj/machinery/light/small{ + icon_state = "bulb1"; + dir = 1 + }, +/obj/random/cigarettes, +/turf/simulated/floor/plating, +/area/vacant/vacant_bar) "ePE" = ( /obj/effect/floor_decal/borderfloor{ dir = 1 @@ -27488,22 +26342,75 @@ }, /turf/simulated/floor/tiled, /area/hallway/lower/first_west) -"eVp" = ( -/obj/structure/cable/green{ - d1 = 4; - d2 = 8; - icon_state = "4-8" +"eQh" = ( +/obj/effect/floor_decal/borderfloor{ + dir = 1; + icon_state = "borderfloor"; + pixel_y = 0 }, -/obj/structure/cable/green{ - d1 = 2; - d2 = 8; - icon_state = "2-8" +/obj/effect/floor_decal/corner/yellow/border{ + icon_state = "bordercolor"; + dir = 1 }, -/obj/structure/disposalpipe/segment{ +/obj/effect/floor_decal/borderfloor/corner2{ dir = 4 }, +/obj/effect/floor_decal/corner/yellow/bordercorner2{ + icon_state = "bordercolorcorner2"; + dir = 4 + }, +/obj/machinery/camera/network/engineering, +/obj/machinery/portable_atmospherics/powered/pump/filled, +/turf/simulated/floor/tiled/techmaint, +/area/engineering/atmos) +"eQE" = ( +/obj/effect/floor_decal/borderfloor{ + dir = 4 + }, +/obj/effect/floor_decal/corner/white/border{ + dir = 4 + }, +/obj/effect/floor_decal/borderfloor/corner2{ + dir = 5 + }, +/obj/effect/floor_decal/corner/white/bordercorner2{ + dir = 5 + }, +/obj/structure/table/standard, +/obj/item/weapon/bikehorn/rubberducky, +/obj/machinery/firealarm{ + dir = 4; + pixel_x = 24 + }, /turf/simulated/floor/tiled, -/area/hallway/lower/first_west) +/area/crew_quarters/showers) +"eUB" = ( +/turf/simulated/floor/tiled/freezer, +/area/crew_quarters/showers) +"eYr" = ( +/obj/machinery/atmospherics/pipe/simple/visible/green{ + dir = 5; + icon_state = "intact" + }, +/turf/simulated/floor/tiled/techmaint, +/area/engineering/atmos/processing) +"eZF" = ( +/obj/machinery/atmospherics/pipe/simple/visible/black, +/obj/effect/floor_decal/borderfloor, +/obj/effect/floor_decal/corner/orange/border, +/turf/simulated/floor/tiled, +/area/engineering/atmos) +"fah" = ( +/obj/structure/sink{ + pixel_y = 22 + }, +/obj/structure/mirror{ + dir = 4; + pixel_x = 0; + pixel_y = 32 + }, +/turf/simulated/floor/tiled/white, +/area/crew_quarters/sleep/maintDorm3) "fbF" = ( /obj/structure/cable{ icon_state = "1-2" @@ -27524,6 +26431,74 @@ }, /turf/simulated/floor/tiled, /area/tether/surfacebase/public_garden) +"fdi" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 10 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 10 + }, +/obj/machinery/firealarm{ + dir = 4; + pixel_x = 26 + }, +/obj/structure/table/standard, +/obj/item/stack/cable_coil/random_belt, +/obj/item/stack/cable_coil/random_belt, +/obj/effect/floor_decal/borderfloor{ + dir = 4 + }, +/obj/effect/floor_decal/corner/yellow/border{ + icon_state = "bordercolor"; + dir = 4 + }, +/obj/item/taperoll/atmos, +/obj/item/stack/cable_coil/random_belt, +/obj/random/tech_supply, +/turf/simulated/floor/tiled/techmaint, +/area/engineering/atmos) +"fhU" = ( +/obj/machinery/atmospherics/pipe/simple/visible/black{ + icon_state = "intact"; + dir = 9 + }, +/turf/simulated/floor/tiled/techmaint, +/area/engineering/atmos) +"flp" = ( +/obj/machinery/alarm{ + dir = 8; + pixel_x = 25; + pixel_y = 0 + }, +/obj/structure/table, +/obj/effect/decal/cleanable/dirt, +/turf/simulated/floor/wood, +/area/crew_quarters/sleep/maintDorm1) +"flv" = ( +/obj/structure/table, +/obj/item/stack/material/wood{ + amount = 10 + }, +/turf/simulated/floor/plating, +/area/crew_quarters/sleep/maintDorm3) +"fmD" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/turf/simulated/floor/plating, +/area/crew_quarters/sleep/maintDorm2) +"fqS" = ( +/obj/random/trash_pile, +/turf/simulated/floor/plating, +/area/maintenance/lower/atmos) +"frp" = ( +/obj/machinery/atmospherics/pipe/simple/visible/scrubbers{ + dir = 6 + }, +/obj/machinery/atmospherics/pipe/simple/visible/supply{ + dir = 4 + }, +/turf/simulated/floor/tiled, +/area/engineering/atmos) "frA" = ( /obj/structure/cable/heavyduty{ icon_state = "1-2" @@ -27543,6 +26518,22 @@ /obj/machinery/light, /turf/simulated/floor/tiled/techfloor, /area/tether/surfacebase/public_garden_one) +"fsN" = ( +/obj/effect/floor_decal/corner/lightgrey{ + dir = 10 + }, +/obj/effect/floor_decal/corner/lightgrey{ + dir = 5 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 5 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 9 + }, +/obj/machinery/vending/coffee, +/turf/simulated/floor/tiled, +/area/tether/surfacebase/atrium_one) "ftb" = ( /obj/effect/floor_decal/borderfloor{ dir = 10 @@ -27552,6 +26543,15 @@ }, /turf/simulated/floor/tiled, /area/tether/surfacebase/public_garden_one) +"ftc" = ( +/obj/effect/floor_decal/borderfloor, +/obj/effect/floor_decal/corner/yellow/border, +/obj/machinery/atmospherics/pipe/simple/visible/red{ + icon_state = "intact"; + dir = 5 + }, +/turf/simulated/floor/tiled, +/area/engineering/atmos) "fAq" = ( /obj/structure/cable/heavyduty{ icon_state = "1-2" @@ -27564,6 +26564,25 @@ }, /turf/simulated/floor/plating, /area/tether/surfacebase/outside/outside1) +"fEe" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, +/obj/effect/decal/cleanable/dirt, +/turf/simulated/floor/plating, +/area/maintenance/lower/research) +"fEC" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/turf/simulated/floor/tiled, +/area/crew_quarters/showers) "fEQ" = ( /obj/effect/floor_decal/borderfloor{ dir = 1; @@ -27575,18 +26594,204 @@ }, /turf/simulated/floor/tiled, /area/tether/surfacebase/public_garden_one) +"fER" = ( +/obj/effect/decal/cleanable/dirt, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 5 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 5 + }, +/obj/structure/cable/green{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/turf/simulated/floor/plating, +/area/vacant/vacant_bar) +"fFa" = ( +/obj/machinery/light{ + dir = 1 + }, +/obj/effect/floor_decal/borderfloor{ + dir = 1; + icon_state = "borderfloor"; + pixel_y = 0 + }, +/obj/effect/floor_decal/corner/yellow/border{ + icon_state = "bordercolor"; + dir = 1 + }, +/obj/machinery/portable_atmospherics/powered/pump/filled, +/turf/simulated/floor/tiled/techmaint, +/area/engineering/atmos) +"fHe" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/obj/effect/floor_decal/steeldecal/steel_decals6{ + dir = 5 + }, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/turf/simulated/floor/tiled, +/area/tether/surfacebase/atrium_one) +"fKm" = ( +/obj/machinery/alarm{ + dir = 1; + pixel_y = -22 + }, +/obj/structure/cable/green{ + d1 = 1; + d2 = 8; + icon_state = "1-8" + }, +/turf/simulated/floor/plating, +/area/vacant/vacant_bar) +"fLT" = ( +/obj/machinery/alarm{ + dir = 4; + icon_state = "alarm0"; + pixel_x = -22; + pixel_y = 0 + }, +/turf/simulated/floor/plating, +/area/vacant/vacant_bar) +"fPW" = ( +/obj/structure/table/rack, +/obj/item/clothing/suit/fire/firefighter, +/obj/item/weapon/tank/oxygen/red, +/obj/item/clothing/mask/gas/wwii, +/obj/item/clothing/head/hardhat/red, +/turf/simulated/floor/plating, +/area/maintenance/lower/research) +"fQy" = ( +/obj/machinery/atmospherics/pipe/manifold/visible/red, +/turf/simulated/floor/tiled, +/area/engineering/atmos) +"fQL" = ( +/obj/structure/closet/crate/hydroponics, +/obj/item/stack/material/algae, +/obj/item/stack/material/algae, +/obj/item/stack/material/algae, +/obj/item/stack/material/algae, +/turf/simulated/floor/tiled/techmaint, +/area/engineering/atmos/processing) +"fRb" = ( +/obj/structure/sink{ + pixel_y = 22 + }, +/obj/structure/mirror{ + dir = 4; + pixel_x = 0; + pixel_y = 32 + }, +/obj/effect/decal/cleanable/dirt, +/turf/simulated/floor/tiled/white, +/area/crew_quarters/sleep/maintDorm4) +"fRH" = ( +/obj/machinery/door/firedoor/glass, +/obj/machinery/door/airlock/multi_tile/glass{ + dir = 1 + }, +/turf/simulated/floor/tiled, +/area/engineering/atmos/processing) +"fSd" = ( +/obj/structure/cable{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/obj/machinery/atmospherics/pipe/simple/visible/scrubbers{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/visible/supply{ + dir = 4 + }, +/obj/structure/catwalk, +/obj/machinery/door/firedoor/glass, +/obj/machinery/door/airlock/external{ + name = "Evacuation Route" + }, +/turf/simulated/floor/plating, +/area/maintenance/lower/research) +"fVt" = ( +/obj/structure/ladder/up, +/obj/effect/decal/cleanable/dirt, +/turf/simulated/floor/plating, +/area/maintenance/lower/research) "fWK" = ( /obj/effect/floor_decal/techfloor{ dir = 5 }, /turf/simulated/floor/tiled/techfloor, /area/tether/surfacebase/public_garden) +"fZk" = ( +/obj/effect/decal/cleanable/dirt, +/turf/simulated/floor/wood, +/area/crew_quarters/sleep/maintDorm2) +"fZx" = ( +/obj/machinery/atmospherics/pipe/simple/visible/cyan{ + dir = 10 + }, +/turf/simulated/floor/tiled, +/area/engineering/atmos) "gaK" = ( /obj/structure/railing{ dir = 1 }, /turf/simulated/floor/tiled/techfloor, /area/maintenance/lower/public_garden_maintenence) +"gaN" = ( +/obj/structure/cable/cyan{ + d1 = 16; + d2 = 0; + icon_state = "16-0" + }, +/obj/machinery/atmospherics/pipe/zpipe/up, +/obj/structure/cable/cyan{ + d2 = 4; + icon_state = "0-4" + }, +/turf/simulated/floor/plating, +/area/engineering/atmos) +"gaW" = ( +/obj/machinery/holosign/bar{ + id = "maintbar" + }, +/turf/simulated/wall, +/area/vacant/vacant_bar) +"gcD" = ( +/obj/effect/floor_decal/rust, +/obj/machinery/shower{ + dir = 1 + }, +/obj/structure/curtain/open/shower, +/obj/effect/floor_decal/steeldecal/steel_decals5{ + dir = 1 + }, +/obj/effect/floor_decal/steeldecal/steel_decals10{ + dir = 9 + }, +/obj/effect/floor_decal/steeldecal/steel_decals10{ + dir = 10 + }, +/turf/simulated/floor/tiled, +/area/crew_quarters/sleep/maintDorm4) +"gcG" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/obj/effect/floor_decal/industrial/warning, +/turf/simulated/floor/tiled, +/area/tether/surfacebase/atrium_one) "gek" = ( /obj/effect/floor_decal/borderfloor{ dir = 4 @@ -27606,6 +26811,27 @@ }, /turf/simulated/floor/tiled, /area/tether/surfacebase/atrium_one) +"giF" = ( +/turf/simulated/wall/r_wall, +/area/maintenance/lower/research) +"gjQ" = ( +/obj/structure/cable/cyan{ + d2 = 4; + icon_state = "0-4" + }, +/obj/structure/table/standard, +/obj/item/clothing/ears/earmuffs, +/obj/item/clothing/ears/earmuffs, +/obj/item/device/radio/headset/headset_eng, +/obj/machinery/light{ + dir = 1 + }, +/obj/machinery/power/apc/super{ + dir = 1; + pixel_y = 28 + }, +/turf/simulated/floor/tiled, +/area/engineering/atmos) "gri" = ( /obj/effect/floor_decal/techfloor{ dir = 10 @@ -27613,6 +26839,43 @@ /obj/machinery/light, /turf/simulated/floor/tiled/techfloor, /area/tether/surfacebase/public_garden_one) +"grU" = ( +/obj/machinery/atmospherics/pipe/simple/visible/cyan, +/obj/effect/floor_decal/borderfloor{ + dir = 4 + }, +/obj/effect/floor_decal/corner/red/border{ + dir = 4 + }, +/turf/simulated/floor/tiled, +/area/engineering/atmos) +"gtp" = ( +/obj/machinery/atmospherics/pipe/simple/visible/scrubbers{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/visible/supply{ + dir = 4 + }, +/obj/structure/catwalk, +/obj/machinery/door/airlock/maintenance/common, +/obj/machinery/door/firedoor/glass, +/turf/simulated/floor/plating, +/area/maintenance/lower/research) +"gts" = ( +/obj/structure/cable/cyan{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/obj/structure/railing{ + dir = 4 + }, +/turf/simulated/floor/tiled, +/area/engineering/atmos) +"gtV" = ( +/obj/machinery/door/firedoor/glass, +/turf/simulated/floor/plating, +/area/maintenance/lower/atmos) "gwL" = ( /obj/structure/window/reinforced{ dir = 4 @@ -27641,12 +26904,43 @@ /obj/effect/decal/cleanable/dirt, /turf/simulated/floor/tiled/techfloor, /area/maintenance/lower/public_garden_maintenence) +"gzx" = ( +/obj/machinery/atmospherics/binary/pump/on{ + dir = 1; + name = "Air to Ports" + }, +/obj/structure/railing{ + icon_state = "railing0"; + dir = 1 + }, +/turf/simulated/floor/tiled, +/area/engineering/atmos) +"gzM" = ( +/obj/structure/reagent_dispensers/fueltank, +/obj/effect/decal/cleanable/dirt, +/turf/simulated/floor/plating, +/area/maintenance/lower/atmos) "gDo" = ( /obj/effect/floor_decal/techfloor{ dir = 6 }, /turf/simulated/floor/tiled/techfloor, /area/tether/surfacebase/public_garden) +"gFH" = ( +/obj/machinery/portable_atmospherics/canister/sleeping_agent, +/obj/machinery/light/small, +/obj/effect/floor_decal/industrial/outline/yellow, +/turf/simulated/floor/tiled/techmaint, +/area/engineering/atmos) +"gHF" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/structure/cable/green{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/turf/simulated/floor/tiled, +/area/crew_quarters/showers) "gPz" = ( /turf/simulated/floor/tiled, /area/tether/surfacebase/public_garden_one) @@ -27660,6 +26954,38 @@ }, /turf/simulated/floor/tiled/techmaint, /area/tether/surfacebase/mining_main/airlock) +"gSq" = ( +/obj/machinery/door/firedoor/glass, +/obj/machinery/door/airlock{ + name = "Restroom" + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, +/turf/simulated/floor/plating, +/area/crew_quarters/sleep/maintDorm1) +"gSV" = ( +/obj/machinery/atmospherics/portables_connector, +/obj/effect/floor_decal/industrial/outline/yellow, +/turf/simulated/floor/tiled/techmaint, +/area/engineering/atmos) +"gTd" = ( +/obj/effect/decal/cleanable/dirt, +/turf/simulated/floor/wood, +/area/crew_quarters/sleep/maintDorm3) +"gTS" = ( +/obj/structure/catwalk, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, +/turf/simulated/floor/plating, +/area/maintenance/lower/research) "gUy" = ( /obj/structure/railing{ dir = 4 @@ -27679,6 +27005,10 @@ "gXh" = ( /turf/simulated/wall, /area/tether/surfacebase/public_garden) +"gZC" = ( +/obj/structure/closet, +/turf/simulated/floor/wood, +/area/crew_quarters/sleep/maintDorm2) "hbn" = ( /obj/effect/floor_decal/borderfloor{ dir = 5 @@ -27694,6 +27024,52 @@ /obj/random/junk, /turf/simulated/floor/plating, /area/maintenance/lower/public_garden_maintenence) +"heb" = ( +/obj/machinery/atmospherics/binary/pump, +/turf/simulated/floor/tiled, +/area/engineering/atmos) +"hlg" = ( +/obj/structure/railing{ + dir = 8 + }, +/obj/effect/floor_decal/borderfloor/shifted, +/obj/effect/floor_decal/corner/lightgrey/border/shifted, +/obj/effect/floor_decal/corner/lightgrey{ + dir = 10 + }, +/obj/structure/disposalpipe/segment, +/turf/simulated/floor/tiled, +/area/tether/surfacebase/atrium_one) +"hlk" = ( +/obj/random/junk, +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/obj/effect/decal/cleanable/dirt, +/turf/simulated/floor/plating, +/area/maintenance/lower/research) +"hpN" = ( +/obj/machinery/atmospherics/pipe/simple/visible/yellow{ + dir = 4 + }, +/obj/effect/floor_decal/borderfloor{ + dir = 1 + }, +/obj/effect/floor_decal/corner/yellow/border{ + icon_state = "bordercolor"; + dir = 1 + }, +/turf/simulated/floor/tiled, +/area/engineering/atmos) +"hqc" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 5 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 5 + }, +/obj/effect/decal/cleanable/dirt, +/turf/simulated/floor/plating, +/area/crew_quarters/sleep/maintDorm2) "hqU" = ( /obj/structure/cable{ icon_state = "1-2" @@ -27722,12 +27098,124 @@ }, /turf/simulated/floor/tiled, /area/tether/surfacebase/public_garden) +"hAF" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/turf/simulated/floor/tiled/freezer, +/area/crew_quarters/showers) +"hHd" = ( +/obj/machinery/atmospherics/unary/vent_pump/on, +/obj/effect/floor_decal/borderfloor{ + dir = 1; + icon_state = "borderfloor"; + pixel_y = 0 + }, +/obj/effect/floor_decal/corner/yellow/border{ + icon_state = "bordercolor"; + dir = 1 + }, +/obj/machinery/portable_atmospherics/powered/scrubber, +/turf/simulated/floor/tiled/techmaint, +/area/engineering/atmos) +"hHW" = ( +/obj/structure/cable/green{ + d2 = 4; + icon_state = "0-4" + }, +/turf/simulated/floor/plating, +/area/maintenance/lower/atmos) +"hKw" = ( +/obj/structure/table/steel, +/obj/random/junk, +/obj/machinery/atmospherics/unary/vent_scrubber/on{ + dir = 1 + }, +/turf/simulated/floor/plating, +/area/vacant/vacant_bar) +"hLA" = ( +/obj/machinery/portable_atmospherics/canister/nitrogen, +/obj/effect/floor_decal/industrial/outline/yellow, +/turf/simulated/floor/tiled/techmaint, +/area/engineering/atmos) +"hNn" = ( +/obj/structure/table/rack, +/obj/random/maintenance/engineering, +/obj/random/maintenance/clean, +/turf/simulated/floor/plating, +/area/maintenance/lower/atmos) +"hOW" = ( +/obj/machinery/light/small{ + dir = 8 + }, +/turf/simulated/floor/plating, +/area/maintenance/lower/atmos) +"hQI" = ( +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/obj/structure/cable/green{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/turf/simulated/floor/plating, +/area/maintenance/lower/atmos) +"hQO" = ( +/obj/random/junk, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 6 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 6 + }, +/obj/structure/cable/green{ + d1 = 2; + d2 = 4; + icon_state = "2-4" + }, +/turf/simulated/floor/plating, +/area/vacant/vacant_bar) +"hSO" = ( +/obj/machinery/atmospherics/unary/vent_scrubber/on, +/turf/simulated/floor/tiled, +/area/crew_quarters/showers) +"hXY" = ( +/obj/item/stack/material/steel, +/turf/simulated/floor/plating, +/area/crew_quarters/sleep/maintDorm1) +"icN" = ( +/obj/machinery/atmospherics/pipe/simple/visible/black{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/visible/purple, +/obj/structure/cable/cyan{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/turf/simulated/floor/plating, +/area/engineering/atmos/processing) "idw" = ( /obj/effect/floor_decal/techfloor/corner{ dir = 4 }, /turf/simulated/floor/tiled/techfloor, /area/tether/surfacebase/public_garden_one) +"ieJ" = ( +/obj/effect/floor_decal/industrial/outline/yellow, +/obj/machinery/pipedispenser, +/turf/simulated/floor/tiled/techmaint, +/area/engineering/atmos) +"ifc" = ( +/obj/machinery/portable_atmospherics/canister/sleeping_agent, +/obj/effect/floor_decal/industrial/outline/yellow, +/turf/simulated/floor/tiled/techmaint, +/area/engineering/atmos) "igB" = ( /obj/effect/floor_decal/techfloor{ dir = 5 @@ -27737,6 +27225,32 @@ }, /turf/simulated/floor/tiled/techfloor, /area/tether/surfacebase/public_garden_one) +"iia" = ( +/obj/random/junk, +/obj/effect/decal/cleanable/dirt, +/turf/simulated/floor/wood, +/area/crew_quarters/sleep/maintDorm2) +"ijo" = ( +/obj/machinery/alarm{ + dir = 4; + icon_state = "alarm0"; + pixel_x = -22; + pixel_y = 0 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/obj/effect/decal/cleanable/dirt, +/turf/simulated/floor/plating, +/area/maintenance/lower/research) +"ijE" = ( +/obj/effect/decal/cleanable/dirt, +/obj/machinery/alarm{ + dir = 4; + icon_state = "alarm0"; + pixel_x = -22 + }, +/turf/simulated/floor/plating, +/area/vacant/vacant_site/east) "ijX" = ( /obj/structure/railing{ dir = 8 @@ -27750,6 +27264,94 @@ /obj/random/maintenance/research, /turf/simulated/floor/tiled/techfloor, /area/maintenance/lower/public_garden_maintenence) +"ipf" = ( +/obj/structure/disposalpipe/segment, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/machinery/door/firedoor/glass, +/obj/machinery/door/airlock{ + id_tag = "maintdorm2"; + name = "Room 2" + }, +/obj/structure/cable/green{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/turf/simulated/floor/plating, +/area/crew_quarters/sleep/maintDorm2) +"ipN" = ( +/obj/structure/closet/crate, +/obj/random/maintenance/engineering, +/obj/effect/decal/cleanable/dirt, +/turf/simulated/floor/plating, +/area/maintenance/lower/atmos) +"irF" = ( +/obj/machinery/light/small{ + dir = 4; + pixel_y = 0 + }, +/obj/effect/decal/cleanable/dirt, +/turf/simulated/floor/plating, +/area/maintenance/lower/research) +"itr" = ( +/obj/effect/floor_decal/borderfloor{ + dir = 8 + }, +/obj/effect/floor_decal/corner/blue/border{ + dir = 8 + }, +/turf/simulated/floor/tiled, +/area/crew_quarters/showers) +"itW" = ( +/obj/structure/table, +/obj/effect/decal/cleanable/dirt, +/turf/simulated/floor/plating, +/area/vacant/vacant_bar) +"iuw" = ( +/obj/machinery/atmospherics/pipe/simple/visible/supply{ + dir = 10 + }, +/turf/simulated/floor/tiled, +/area/engineering/atmos) +"ivg" = ( +/obj/effect/floor_decal/steeldecal/steel_decals10{ + dir = 5 + }, +/turf/simulated/floor/tiled/freezer, +/area/crew_quarters/showers) +"iwn" = ( +/obj/machinery/atmospherics/binary/passive_gate/on{ + dir = 4; + target_pressure = 15000 + }, +/obj/effect/floor_decal/borderfloor{ + dir = 4 + }, +/obj/effect/floor_decal/corner/red/border{ + dir = 4 + }, +/turf/simulated/floor/tiled, +/area/engineering/atmos) +"iwJ" = ( +/obj/effect/floor_decal/corner/lightgrey{ + dir = 10 + }, +/obj/effect/floor_decal/corner/lightgrey{ + dir = 5 + }, +/obj/machinery/atmospherics/unary/vent_scrubber/on{ + dir = 8 + }, +/obj/machinery/lapvend, +/turf/simulated/floor/tiled, +/area/tether/surfacebase/atrium_one) +"ixj" = ( +/obj/machinery/atmospherics/pipe/simple/visible/cyan{ + dir = 4 + }, +/turf/simulated/floor/tiled, +/area/engineering/atmos) "izr" = ( /obj/effect/floor_decal/borderfloor/corner{ dir = 8 @@ -27759,6 +27361,13 @@ }, /turf/simulated/floor/tiled, /area/tether/surfacebase/public_garden_one) +"izV" = ( +/obj/structure/table/rack, +/obj/random/maintenance/engineering, +/obj/random/maintenance/engineering, +/obj/effect/decal/cleanable/dirt, +/turf/simulated/floor/plating, +/area/maintenance/lower/atmos) "iAg" = ( /obj/machinery/portable_atmospherics/powered/scrubber/huge/stationary{ frequency = 1379; @@ -27769,12 +27378,200 @@ }, /turf/simulated/floor/tiled/techmaint, /area/tether/surfacebase/mining_main/airlock) +"iDf" = ( +/obj/machinery/atmospherics/pipe/simple/visible/purple{ + icon_state = "intact"; + dir = 10 + }, +/obj/structure/cable/cyan{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/turf/simulated/floor/plating, +/area/engineering/atmos/processing) +"iGv" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/structure/disposalpipe/segment{ + dir = 8; + icon_state = "pipe-c" + }, +/obj/machinery/light_switch{ + dir = 8; + pixel_x = 24; + pixel_y = 6 + }, +/obj/machinery/button/remote/airlock{ + id = "maintdorm2"; + name = "Room 2 Lock"; + pixel_x = 23; + pixel_y = -4; + specialfunctions = 4 + }, +/obj/structure/cable/green{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/obj/effect/decal/cleanable/dirt, +/turf/simulated/floor/wood, +/area/crew_quarters/sleep/maintDorm2) +"iGR" = ( +/obj/effect/floor_decal/borderfloor/shifted, +/obj/effect/floor_decal/corner/lightgrey/border/shifted, +/obj/effect/floor_decal/corner/lightgrey{ + dir = 10 + }, +/turf/simulated/floor/tiled, +/area/tether/surfacebase/atrium_one) +"iHh" = ( +/obj/structure/table/steel, +/obj/machinery/reagentgrinder, +/turf/simulated/floor/plating, +/area/vacant/vacant_bar) +"iJC" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 10 + }, +/turf/simulated/floor/tiled/freezer, +/area/crew_quarters/showers) +"iLm" = ( +/obj/machinery/atmospherics/pipe/simple/visible/green{ + dir = 4 + }, +/obj/machinery/meter, +/turf/simulated/floor/tiled, +/area/engineering/atmos) +"iLO" = ( +/obj/machinery/atmospherics/pipe/simple/visible/yellow{ + dir = 5 + }, +/obj/effect/floor_decal/borderfloor/corner{ + dir = 4 + }, +/obj/effect/floor_decal/corner/yellow/bordercorner{ + icon_state = "bordercolorcorner"; + dir = 4 + }, +/turf/simulated/floor/tiled, +/area/engineering/atmos) +"iMg" = ( +/obj/structure/table/steel, +/obj/item/weapon/paper_bin, +/obj/item/weapon/pen, +/obj/machinery/button/holosign{ + id = "maintbar"; + pixel_x = -24 + }, +/turf/simulated/floor/plating, +/area/vacant/vacant_bar) +"iNX" = ( +/obj/structure/railing, +/obj/structure/railing{ + dir = 8 + }, +/obj/structure/closet/crate, +/obj/random/cigarettes, +/obj/effect/decal/cleanable/dirt, +/turf/simulated/floor/plating, +/area/maintenance/lower/research) +"iOz" = ( +/obj/machinery/atmospherics/pipe/simple/visible/scrubbers{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/visible/supply{ + dir = 4 + }, +/obj/structure/catwalk, +/obj/random/junk, +/obj/effect/decal/cleanable/dirt, +/turf/simulated/floor/plating, +/area/maintenance/lower/research) +"iOL" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/structure/cable/green{ + d1 = 1; + d2 = 8; + icon_state = "1-8" + }, +/obj/effect/decal/cleanable/dirt, +/turf/simulated/floor/plating, +/area/crew_quarters/sleep/maintDorm1) "iPi" = ( /obj/effect/floor_decal/techfloor/corner{ dir = 1 }, /turf/simulated/floor/tiled/techfloor, /area/tether/surfacebase/public_garden_one) +"iPO" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/obj/structure/cable/cyan{ + d2 = 4; + icon_state = "0-4" + }, +/obj/machinery/power/apc/super{ + dir = 1; + pixel_y = 28 + }, +/turf/simulated/floor/tiled, +/area/engineering/atmos/processing) +"iQg" = ( +/obj/effect/decal/cleanable/dirt, +/obj/structure/cable/green{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/obj/structure/cable/green{ + d1 = 2; + d2 = 8; + icon_state = "2-8" + }, +/turf/simulated/floor/plating, +/area/maintenance/lower/atmos) +"iQr" = ( +/obj/item/stack/material/steel, +/obj/effect/decal/cleanable/dirt, +/turf/simulated/floor/wood, +/area/crew_quarters/sleep/maintDorm3) +"iRv" = ( +/obj/machinery/atmospherics/pipe/manifold/visible/cyan, +/turf/simulated/floor/tiled, +/area/engineering/atmos) +"iRV" = ( +/obj/structure/bed/chair/comfy/black{ + dir = 4 + }, +/obj/effect/decal/cleanable/dirt, +/turf/simulated/floor/wood, +/area/crew_quarters/sleep/maintDorm2) +"iVI" = ( +/obj/machinery/atmospherics/pipe/manifold/visible/purple{ + dir = 1 + }, +/turf/simulated/floor/tiled/techmaint, +/area/engineering/atmos/processing) +"iVW" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/obj/structure/cable/cyan{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/turf/simulated/floor/tiled, +/area/engineering/atmos/processing) "iVY" = ( /obj/structure/cable{ d1 = 2; @@ -27795,6 +27592,57 @@ }, /turf/simulated/floor/tiled, /area/tether/surfacebase/public_garden) +"iWC" = ( +/obj/effect/decal/cleanable/dirt, +/turf/simulated/floor/plating, +/area/crew_quarters/sleep/maintDorm2) +"iXb" = ( +/obj/machinery/atmospherics/unary/vent_pump/on, +/obj/machinery/light{ + dir = 1 + }, +/turf/simulated/floor/tiled/freezer, +/area/crew_quarters/showers) +"iXi" = ( +/obj/machinery/door/firedoor, +/obj/structure/grille, +/obj/structure/window/reinforced/full, +/obj/structure/window/reinforced, +/turf/simulated/floor/plating, +/area/crew_quarters/sleep/maintDorm1) +"iYP" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/effect/floor_decal/borderfloor/shifted, +/obj/effect/floor_decal/corner/lightgrey/border/shifted, +/obj/effect/floor_decal/corner/lightgrey{ + dir = 10 + }, +/turf/simulated/floor/tiled, +/area/tether/surfacebase/atrium_one) +"iZM" = ( +/obj/machinery/air_sensor{ + frequency = 1441; + id_tag = "atmos_intake" + }, +/turf/simulated/floor/tiled/steel_dirty/virgo3b, +/area/engineering/atmos/intake) +"jau" = ( +/obj/structure/bed/double/padded, +/obj/item/weapon/bedsheet/mimedouble, +/turf/simulated/floor/plating, +/area/crew_quarters/sleep/maintDorm1) +"jcl" = ( +/obj/machinery/door/firedoor/glass, +/obj/machinery/door/airlock/glass_atmos{ + name = "Canister Storage"; + req_access = list(24) + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/turf/simulated/floor/tiled/techmaint, +/area/engineering/atmos) "jec" = ( /obj/machinery/atmospherics/unary/vent_scrubber/on, /obj/effect/floor_decal/borderfloor/corner{ @@ -27805,6 +27653,78 @@ }, /turf/simulated/floor/tiled, /area/tether/surfacebase/public_garden_one) +"jfn" = ( +/obj/structure/disposalpipe/trunk{ + dir = 4 + }, +/obj/machinery/disposal, +/turf/simulated/floor/plating, +/area/crew_quarters/sleep/maintDorm1) +"jiZ" = ( +/turf/simulated/wall, +/area/vacant/vacant_bar) +"jkn" = ( +/obj/structure/toilet{ + pixel_y = 10 + }, +/turf/simulated/floor/plating, +/area/crew_quarters/sleep/maintDorm4) +"jky" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/obj/structure/cable/green{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/turf/simulated/floor/tiled, +/area/crew_quarters/showers) +"jmF" = ( +/obj/machinery/atmospherics/unary/vent_scrubber/on{ + dir = 8 + }, +/turf/simulated/floor/tiled, +/area/engineering/atmos/processing) +"jmP" = ( +/obj/machinery/door/firedoor, +/obj/structure/grille, +/turf/simulated/floor/plating, +/area/vacant/vacant_bar) +"jod" = ( +/obj/effect/floor_decal/borderfloor{ + dir = 4 + }, +/obj/effect/floor_decal/corner/white/border{ + dir = 4 + }, +/obj/effect/floor_decal/borderfloor/corner2{ + dir = 6 + }, +/obj/effect/floor_decal/corner/white/bordercorner2{ + dir = 6 + }, +/obj/structure/table/rack, +/obj/item/weapon/towel/random, +/obj/item/weapon/towel/random, +/obj/item/weapon/towel/random, +/obj/item/weapon/towel/random, +/obj/item/weapon/towel/random, +/turf/simulated/floor/tiled, +/area/crew_quarters/showers) +"jpd" = ( +/obj/effect/floor_decal/rust, +/obj/structure/railing{ + icon_state = "railing0"; + dir = 1 + }, +/obj/structure/closet/crate, +/obj/effect/decal/cleanable/dirt, +/turf/simulated/floor/plating, +/area/maintenance/lower/research) "jrI" = ( /obj/effect/floor_decal/borderfloor{ dir = 1 @@ -27820,6 +27740,129 @@ }, /turf/simulated/floor/tiled, /area/tether/surfacebase/public_garden_one) +"jrO" = ( +/obj/item/clothing/head/soft/rainbow, +/obj/item/clothing/shoes/rainbow, +/obj/item/clothing/under/color/rainbow, +/obj/item/clothing/gloves/rainbow, +/obj/item/clothing/suit/storage/seromi/cloak/standard/rainbow, +/turf/simulated/floor/plating, +/area/engineering/atmos) +"jrV" = ( +/obj/machinery/atmospherics/pipe/simple/visible/yellow, +/obj/machinery/light/small{ + dir = 4; + pixel_y = 0 + }, +/turf/simulated/floor/plating, +/area/engineering/atmos/processing) +"jso" = ( +/obj/machinery/atmospherics/pipe/manifold/visible/supply{ + dir = 8 + }, +/obj/machinery/atmospherics/pipe/manifold/visible/scrubbers{ + dir = 8 + }, +/obj/structure/catwalk, +/turf/simulated/floor/plating, +/area/maintenance/lower/research) +"juf" = ( +/obj/machinery/atmospherics/pipe/simple/visible/black{ + dir = 5 + }, +/turf/simulated/floor/tiled/techmaint, +/area/engineering/atmos) +"jBQ" = ( +/turf/simulated/floor/plating, +/area/vacant/vacant_bar) +"jFL" = ( +/obj/machinery/atmospherics/pipe/simple/visible/yellow, +/obj/machinery/atmospherics/pipe/simple/visible/black{ + dir = 4 + }, +/turf/simulated/floor/plating, +/area/engineering/atmos/processing) +"jGM" = ( +/obj/structure/cable{ + icon_state = "4-8" + }, +/obj/structure/catwalk, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, +/obj/machinery/light/small{ + dir = 1 + }, +/obj/effect/decal/cleanable/dirt, +/turf/simulated/floor/plating, +/area/maintenance/lower/research) +"jJF" = ( +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/obj/machinery/light/small{ + icon_state = "bulb1"; + dir = 1 + }, +/obj/structure/cable/green{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/turf/simulated/floor/plating, +/area/maintenance/lower/atmos) +"jLy" = ( +/obj/structure/disposalpipe/segment, +/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{ + icon_state = "map-scrubbers"; + dir = 4 + }, +/obj/machinery/atmospherics/pipe/manifold/hidden/supply{ + dir = 4 + }, +/obj/structure/cable/green{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/obj/structure/cable/green{ + d1 = 1; + d2 = 8; + icon_state = "1-8" + }, +/obj/effect/decal/cleanable/dirt, +/turf/simulated/floor/plating, +/area/maintenance/lower/atmos) +"jLF" = ( +/obj/machinery/atmospherics/pipe/simple/visible/cyan, +/turf/simulated/floor/tiled, +/area/engineering/atmos) +"jQS" = ( +/obj/structure/cable/cyan{ + d1 = 1; + d2 = 8; + icon_state = "1-8" + }, +/turf/simulated/floor/tiled, +/area/engineering/atmos) +"jRe" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 5 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 6 + }, +/turf/simulated/floor/tiled/freezer, +/area/crew_quarters/showers) "jRG" = ( /obj/structure/cable/heavyduty{ icon_state = "1-2" @@ -27828,23 +27871,82 @@ /obj/structure/railing, /turf/simulated/floor/plating, /area/tether/surfacebase/outside/outside1) +"jRT" = ( +/obj/machinery/atmospherics/pipe/simple/visible/scrubbers, +/obj/machinery/atmospherics/pipe/simple/visible/supply, +/obj/structure/catwalk, +/obj/effect/decal/cleanable/dirt, +/turf/simulated/floor/plating, +/area/maintenance/lower/research) +"jSm" = ( +/obj/structure/bed/double/padded, +/obj/item/weapon/bedsheet/iandouble, +/turf/simulated/floor/plating, +/area/crew_quarters/sleep/maintDorm2) +"jUH" = ( +/obj/effect/step_trigger/teleporter/to_plains, +/turf/simulated/floor/tiled/steel_dirty/virgo3b, +/area/tether/surfacebase/outside/outside1) +"jWP" = ( +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/obj/machinery/alarm{ + frequency = 1441; + pixel_y = 22 + }, +/obj/structure/cable/green{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/obj/effect/decal/cleanable/dirt, +/turf/simulated/floor/plating, +/area/maintenance/lower/atmos) +"jXa" = ( +/obj/machinery/alarm{ + frequency = 1441; + pixel_y = 22 + }, +/obj/structure/table/bench/steel, +/obj/random/cigarettes, +/obj/effect/decal/cleanable/dirt, +/turf/simulated/floor/plating, +/area/maintenance/lower/atmos) +"jYt" = ( +/obj/structure/closet/crate, +/obj/effect/decal/cleanable/dirt, +/turf/simulated/floor/plating, +/area/maintenance/lower/research) +"jYN" = ( +/obj/machinery/atmospherics/unary/vent_scrubber/on{ + dir = 8 + }, +/obj/machinery/alarm{ + dir = 8; + pixel_x = 25; + pixel_y = 0 + }, +/obj/effect/decal/cleanable/dirt, +/turf/simulated/floor/plating, +/area/crew_quarters/sleep/maintDorm4) +"kaj" = ( +/obj/machinery/atmospherics/pipe/manifold/visible/red{ + icon_state = "map"; + dir = 4 + }, +/turf/simulated/floor/tiled, +/area/engineering/atmos) "kcR" = ( /obj/structure/window/reinforced, /turf/simulated/floor/tiled, /area/tether/surfacebase/public_garden_one) -"kdx" = ( -/obj/structure/cable/ender{ - icon_state = "1-2"; - id = "surface-solars" - }, -/obj/structure/railing{ - dir = 8 - }, -/obj/structure/railing{ - dir = 4 - }, -/turf/simulated/floor/plating, -/area/tether/surfacebase/outside/outside1) "kfl" = ( /obj/structure/cable/green{ d1 = 4; @@ -27858,6 +27960,102 @@ }, /turf/simulated/floor/tiled/steel_dirty/virgo3b, /area/tether/surfacebase/mining_main/external) +"kfZ" = ( +/turf/simulated/wall, +/area/crew_quarters/sleep/maintDorm2) +"kgx" = ( +/obj/structure/disposalpipe/segment, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/machinery/door/firedoor/glass, +/obj/machinery/door/airlock{ + id_tag = "maintdorm4"; + name = "Room 4" + }, +/obj/structure/cable/green{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/turf/simulated/floor/plating, +/area/crew_quarters/sleep/maintDorm4) +"kgW" = ( +/obj/structure/window/reinforced, +/obj/structure/closet/masks, +/turf/simulated/floor/plating, +/area/maintenance/lower/atmos) +"khS" = ( +/obj/machinery/atmospherics/pipe/simple/visible/scrubbers{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/visible/supply{ + dir = 4 + }, +/obj/structure/catwalk, +/obj/effect/floor_decal/rust, +/turf/simulated/floor/plating, +/area/maintenance/lower/research) +"kip" = ( +/obj/structure/sink{ + pixel_y = 22 + }, +/obj/structure/mirror{ + dir = 4; + pixel_x = 0; + pixel_y = 32 + }, +/turf/simulated/floor/plating, +/area/crew_quarters/sleep/maintDorm2) +"kjb" = ( +/obj/effect/decal/cleanable/dirt, +/obj/machinery/atmospherics/pipe/manifold/hidden/supply{ + dir = 1 + }, +/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers, +/obj/structure/cable/green{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/turf/simulated/floor/plating, +/area/vacant/vacant_bar) +"kjZ" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/turf/simulated/floor/plating, +/area/crew_quarters/sleep/maintDorm4) +"kkf" = ( +/obj/machinery/atmospherics/pipe/tank/phoron{ + dir = 8; + start_pressure = 1215.9 + }, +/turf/simulated/floor/tiled/techmaint, +/area/engineering/atmos) +"kpk" = ( +/obj/machinery/atmospherics/binary/algae_farm/filled{ + dir = 1 + }, +/turf/simulated/floor/tiled/techmaint, +/area/engineering/atmos/processing) +"kpu" = ( +/obj/structure/railing{ + dir = 8 + }, +/turf/simulated/floor/plating, +/area/maintenance/lower/research) +"kpz" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 9 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 10 + }, +/turf/simulated/floor/plating, +/area/crew_quarters/sleep/maintDorm2) +"ktM" = ( +/obj/effect/decal/cleanable/blood, +/turf/simulated/floor/plating, +/area/maintenance/lower/atmos) "kuC" = ( /obj/effect/floor_decal/borderfloor{ dir = 5 @@ -27868,6 +28066,19 @@ /obj/machinery/atmospherics/unary/vent_scrubber/on, /turf/simulated/floor/tiled, /area/tether/surfacebase/public_garden) +"kva" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 10 + }, +/obj/effect/decal/cleanable/dirt, +/turf/simulated/floor/plating, +/area/crew_quarters/sleep/maintDorm2) +"kwi" = ( +/turf/simulated/floor/tiled, +/area/engineering/atmos) "kCO" = ( /obj/machinery/light{ dir = 8 @@ -27876,10 +28087,130 @@ name = "Holodeck Projector Floor" }, /area/crew_quarters/sleep/Dorm_3/holo) +"kGC" = ( +/obj/structure/disposalpipe/segment, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/structure/cable/green{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/obj/effect/decal/cleanable/dirt, +/turf/simulated/floor/plating, +/area/maintenance/lower/atmos) +"kHg" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/turf/simulated/floor/plating, +/area/maintenance/lower/research) +"kMh" = ( +/obj/effect/decal/cleanable/dirt, +/obj/structure/cable/green{ + icon_state = "0-4" + }, +/obj/machinery/power/apc{ + cell_type = /obj/item/weapon/cell/apc; + dir = 8; + name = "west bump"; + pixel_x = -28 + }, +/turf/simulated/floor/plating, +/area/vacant/vacant_bar) +"kMU" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/turf/simulated/floor/tiled, +/area/tether/surfacebase/atrium_one) "kOB" = ( /obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, /turf/simulated/floor/tiled, /area/tether/surfacebase/public_garden_one) +"kOE" = ( +/obj/machinery/atmospherics/binary/pump, +/obj/effect/floor_decal/borderfloor{ + dir = 4 + }, +/obj/effect/floor_decal/corner/yellow/border{ + icon_state = "bordercolor"; + dir = 4 + }, +/turf/simulated/floor/tiled, +/area/engineering/atmos) +"kPm" = ( +/obj/effect/floor_decal/borderfloor, +/obj/effect/floor_decal/corner/grey/border, +/turf/simulated/floor/tiled, +/area/crew_quarters/visitor_laundry) +"kRQ" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/obj/structure/cable/green{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/obj/effect/decal/cleanable/dirt, +/turf/simulated/floor/plating, +/area/vacant/vacant_bar) +"kVd" = ( +/obj/machinery/atmospherics/pipe/manifold/visible/purple{ + icon_state = "map"; + dir = 4 + }, +/obj/effect/decal/cleanable/dirt, +/obj/structure/cable/cyan{ + d1 = 1; + d2 = 8; + icon_state = "1-8" + }, +/turf/simulated/floor/plating, +/area/engineering/atmos/processing) +"kXc" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/turf/simulated/floor/plating, +/area/vacant/vacant_site/east) +"kXi" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, +/turf/simulated/floor/tiled/techmaint, +/area/engineering/atmos) +"kYa" = ( +/obj/structure/disposalpipe/segment, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/effect/floor_decal/rust, +/obj/structure/cable/green{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/turf/simulated/floor/tiled/steel_dirty, +/area/maintenance/lower/atmos) +"kYv" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 10 + }, +/obj/effect/decal/cleanable/dirt, +/turf/simulated/floor/plating, +/area/crew_quarters/sleep/maintDorm4) "kZc" = ( /obj/structure/railing{ dir = 4 @@ -27895,17 +28226,192 @@ }, /turf/simulated/floor/tiled/techfloor, /area/maintenance/lower/public_garden_maintenence) +"kZI" = ( +/obj/effect/decal/cleanable/dirt, +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/obj/structure/cable/green{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/turf/simulated/floor/plating, +/area/vacant/vacant_bar) +"laN" = ( +/obj/structure/cable/cyan{ + d1 = 2; + d2 = 4; + icon_state = "2-4" + }, +/obj/structure/cable/cyan{ + d2 = 4; + icon_state = "0-4" + }, +/obj/machinery/power/sensor{ + name = "Powernet Sensor - Atmospherics Subgrid"; + name_tag = "Atmospherics Subgrid" + }, +/obj/effect/floor_decal/industrial/warning{ + icon_state = "warning"; + dir = 4 + }, +/obj/effect/decal/cleanable/dirt, +/turf/simulated/floor/plating, +/area/maintenance/substation/surface_atmos) +"lcg" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/turf/simulated/floor/tiled, +/area/engineering/atmos) +"lcu" = ( +/obj/effect/floor_decal/steeldecal/steel_decals10{ + dir = 9 + }, +/turf/simulated/floor/tiled/freezer, +/area/crew_quarters/showers) +"lda" = ( +/obj/machinery/atmospherics/pipe/manifold/hidden/supply{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{ + icon_state = "map-scrubbers"; + dir = 4 + }, +/obj/structure/cable/cyan{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/turf/simulated/floor/tiled, +/area/engineering/atmos) +"lee" = ( +/obj/structure/disposalpipe/segment, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/machinery/door/firedoor/glass, +/obj/machinery/door/airlock{ + id_tag = "maintdorm3"; + name = "Room 3" + }, +/obj/structure/cable/green{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/turf/simulated/floor/wood, +/area/crew_quarters/sleep/maintDorm3) +"leP" = ( +/obj/structure/railing{ + dir = 4 + }, +/turf/simulated/floor/tiled, +/area/engineering/atmos) +"liI" = ( +/obj/machinery/atmospherics/unary/vent_scrubber/on, +/obj/machinery/light_construct{ + icon_state = "tube-construct-stage1"; + dir = 1 + }, +/obj/structure/table, +/turf/simulated/floor/plating, +/area/crew_quarters/sleep/maintDorm3) +"ljc" = ( +/obj/structure/disposalpipe/junction{ + icon_state = "pipe-j1"; + dir = 4 + }, +/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{ + dir = 1 + }, +/obj/machinery/atmospherics/pipe/manifold/hidden/supply{ + dir = 1 + }, +/obj/structure/cable/green{ + d1 = 2; + d2 = 4; + icon_state = "2-4" + }, +/obj/structure/cable/green{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/obj/effect/decal/cleanable/dirt, +/turf/simulated/floor/plating, +/area/maintenance/lower/atmos) +"lnR" = ( +/obj/machinery/atmospherics/binary/passive_gate{ + dir = 8; + name = "Waste Purge Valve"; + target_pressure = 4500 + }, +/turf/simulated/floor/tiled, +/area/engineering/atmos) +"loJ" = ( +/turf/simulated/wall, +/area/crew_quarters/sleep/maintDorm3) +"lsv" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/turf/simulated/floor/tiled, +/area/crew_quarters/showers) +"lsH" = ( +/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{ + dir = 1 + }, +/obj/machinery/alarm{ + frequency = 1441; + pixel_y = 22 + }, +/turf/simulated/floor/tiled/freezer, +/area/crew_quarters/showers) +"lvx" = ( +/obj/machinery/atmospherics/binary/pump/on{ + name = "Scrubber to Waste" + }, +/turf/simulated/floor/tiled, +/area/engineering/atmos) +"lvE" = ( +/obj/machinery/atmospherics/pipe/simple/visible/purple{ + icon_state = "intact"; + dir = 9 + }, +/obj/effect/decal/cleanable/dirt, +/turf/simulated/floor/plating, +/area/engineering/atmos/processing) +"lyv" = ( +/obj/machinery/atmospherics/pipe/simple/visible/green{ + dir = 6 + }, +/turf/simulated/floor/tiled, +/area/engineering/atmos) "lCL" = ( /obj/structure/catwalk, /obj/machinery/alarm{ - breach_detection = 0; dir = 8; pixel_x = 25; - pixel_y = 0; - report_danger_level = 0 + pixel_y = 0 }, /turf/simulated/floor/plating, /area/maintenance/lower/public_garden_maintenence) +"lEM" = ( +/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{ + dir = 8 + }, +/obj/machinery/atmospherics/pipe/manifold/hidden/supply{ + dir = 8 + }, +/obj/structure/cable/green{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/obj/effect/decal/cleanable/dirt, +/turf/simulated/floor/wood, +/area/crew_quarters/sleep/maintDorm2) "lFg" = ( /obj/structure/grille, /obj/structure/railing, @@ -27923,6 +28429,21 @@ }, /turf/simulated/floor/plating, /area/crew_quarters/visitor_dining) +"lJh" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 9 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 5 + }, +/turf/simulated/floor/tiled, +/area/engineering/atmos/processing) +"lJn" = ( +/obj/structure/bed/chair/comfy/black{ + dir = 4 + }, +/turf/simulated/floor/wood, +/area/crew_quarters/sleep/maintDorm4) "lJJ" = ( /obj/effect/floor_decal/borderfloor{ dir = 1; @@ -27953,6 +28474,22 @@ /obj/effect/floor_decal/corner/lightgrey/bordercorner2, /turf/simulated/floor/tiled, /area/tether/surfacebase/public_garden) +"lSd" = ( +/obj/structure/cable/cyan{ + d1 = 1; + d2 = 8; + icon_state = "1-8" + }, +/obj/structure/cable/cyan{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/obj/structure/railing{ + dir = 4 + }, +/turf/simulated/floor/tiled, +/area/engineering/atmos) "lUv" = ( /obj/machinery/alarm{ pixel_y = 23 @@ -27965,6 +28502,34 @@ }, /turf/simulated/floor/tiled, /area/tether/surfacebase/public_garden_one) +"lUB" = ( +/obj/machinery/portable_atmospherics/canister/phoron, +/obj/effect/floor_decal/industrial/outline/yellow, +/turf/simulated/floor/tiled/techmaint, +/area/engineering/atmos) +"lUR" = ( +/obj/structure/cable/cyan{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/obj/machinery/door/airlock/atmos{ + name = "Atmospherics Substation"; + req_access = list(24) + }, +/turf/simulated/floor/plating, +/area/engineering/atmos) +"lVl" = ( +/obj/structure/railing{ + icon_state = "railing0"; + dir = 1 + }, +/obj/structure/railing{ + dir = 4 + }, +/obj/effect/decal/cleanable/dirt, +/turf/simulated/floor/plating, +/area/maintenance/lower/research) "lWW" = ( /obj/structure/cable{ icon_state = "1-2" @@ -27974,6 +28539,145 @@ /obj/structure/disposalpipe/segment, /turf/simulated/floor/tiled, /area/hallway/lower/first_west) +"lXf" = ( +/obj/structure/symbol/sa, +/turf/simulated/wall, +/area/crew_quarters/sleep/maintDorm4) +"lYE" = ( +/obj/effect/floor_decal/borderfloor{ + dir = 8 + }, +/obj/effect/floor_decal/corner/blue/border{ + dir = 8 + }, +/obj/structure/closet/secure_closet/personal, +/obj/item/clothing/under/bathrobe, +/turf/simulated/floor/tiled, +/area/crew_quarters/showers) +"lYJ" = ( +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/obj/structure/cable/green{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/turf/simulated/floor/tiled/steel_dirty, +/area/maintenance/lower/atmos) +"lZz" = ( +/obj/effect/floor_decal/borderfloor{ + dir = 4 + }, +/obj/effect/floor_decal/corner/yellow/border{ + icon_state = "bordercolor"; + dir = 4 + }, +/turf/simulated/floor/tiled, +/area/engineering/atmos) +"lZQ" = ( +/obj/machinery/door/firedoor/glass, +/obj/machinery/door/airlock/maintenance/common, +/obj/structure/cable/green{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/turf/simulated/floor/plating, +/area/maintenance/lower/atmos) +"maK" = ( +/obj/machinery/atmospherics/unary/vent_pump/on{ + dir = 1 + }, +/obj/structure/cable/green{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/turf/simulated/floor/tiled, +/area/crew_quarters/showers) +"mbM" = ( +/obj/structure/disposalpipe/segment{ + dir = 4; + icon_state = "pipe-c" + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 6 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 6 + }, +/obj/structure/cable/green{ + d1 = 2; + d2 = 4; + icon_state = "2-4" + }, +/obj/structure/cable/green{ + d1 = 1; + d2 = 4; + icon_state = "1-4" + }, +/turf/simulated/floor/plating, +/area/maintenance/lower/atmos) +"mdV" = ( +/obj/machinery/atmospherics/pipe/simple/visible/scrubbers{ + dir = 10 + }, +/obj/machinery/atmospherics/pipe/simple/visible/supply{ + dir = 10 + }, +/obj/structure/catwalk, +/obj/effect/decal/cleanable/dirt, +/turf/simulated/floor/plating, +/area/maintenance/lower/research) +"mgm" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/turf/simulated/floor/tiled/freezer, +/area/crew_quarters/showers) +"mgv" = ( +/obj/machinery/light{ + dir = 1 + }, +/turf/simulated/floor/tiled, +/area/tether/surfacebase/atrium_one) +"mgz" = ( +/obj/machinery/atmospherics/omni/atmos_filter{ + name = "N2O Filter"; + tag_east = 2; + tag_south = 7; + tag_west = 1 + }, +/turf/simulated/floor/tiled, +/area/engineering/atmos) +"mks" = ( +/obj/machinery/atmospherics/pipe/simple/visible/yellow{ + dir = 4 + }, +/turf/simulated/floor/tiled, +/area/engineering/atmos) +"mnZ" = ( +/obj/effect/floor_decal/borderfloor, +/obj/effect/floor_decal/corner/blue/border, +/obj/machinery/light, +/obj/structure/cable/green, +/obj/machinery/power/apc{ + dir = 2; + name = "south bump"; + pixel_y = -32 + }, +/turf/simulated/floor/tiled, +/area/crew_quarters/showers) +"moi" = ( +/turf/simulated/floor/plating, +/area/crew_quarters/sleep/maintDorm1) "mpN" = ( /obj/random/junk, /turf/simulated/floor/tiled/techfloor, @@ -27981,12 +28685,155 @@ "mpQ" = ( /turf/simulated/wall, /area/tether/surfacebase/public_garden_one) +"mqx" = ( +/turf/simulated/mineral/floor/virgo3b, +/area/tether/surfacebase/outside/outside1) +"msj" = ( +/obj/structure/railing, +/obj/structure/closet/crate, +/obj/item/clothing/head/that, +/obj/random/maintenance/clean, +/obj/random/maintenance/clean, +/obj/machinery/light/small{ + dir = 1 + }, +/obj/effect/decal/cleanable/dirt, +/turf/simulated/floor/plating, +/area/maintenance/lower/research) +"msr" = ( +/obj/structure/bed/chair/comfy/black{ + dir = 8 + }, +/turf/simulated/floor/wood, +/area/crew_quarters/sleep/maintDorm3) "mtw" = ( /obj/effect/floor_decal/techfloor/corner{ dir = 8 }, /turf/simulated/floor/tiled/techfloor, /area/tether/surfacebase/public_garden_one) +"mvw" = ( +/obj/machinery/door/firedoor/glass, +/obj/machinery/door/airlock{ + name = "Restroom" + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, +/turf/simulated/floor/plating, +/area/crew_quarters/sleep/maintDorm4) +"mwy" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/turf/simulated/floor/tiled, +/area/engineering/atmos) +"myG" = ( +/obj/structure/cable/cyan{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/turf/simulated/floor/tiled, +/area/engineering/atmos) +"myP" = ( +/obj/effect/floor_decal/steeldecal/steel_decals10{ + dir = 6 + }, +/turf/simulated/floor/tiled/freezer, +/area/crew_quarters/showers) +"mzf" = ( +/obj/machinery/shower{ + dir = 1 + }, +/obj/effect/floor_decal/steeldecal/steel_decals5{ + dir = 1 + }, +/obj/effect/floor_decal/steeldecal/steel_decals10{ + dir = 9 + }, +/obj/effect/floor_decal/steeldecal/steel_decals10{ + dir = 10 + }, +/turf/simulated/floor/tiled, +/area/crew_quarters/sleep/maintDorm3) +"mAx" = ( +/obj/machinery/atmospherics/pipe/simple/visible/yellow, +/turf/simulated/floor/plating, +/area/engineering/atmos/processing) +"mBW" = ( +/obj/item/weapon/beach_ball/holoball, +/turf/simulated/floor/plating, +/area/maintenance/lower/research) +"mDj" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/obj/effect/floor_decal/industrial/warning/corner{ + icon_state = "warningcorner"; + dir = 8 + }, +/obj/structure/disposalpipe/segment{ + dir = 4; + icon_state = "pipe-c" + }, +/turf/simulated/floor/tiled, +/area/tether/surfacebase/atrium_one) +"mDm" = ( +/obj/structure/cable/green{ + d2 = 4; + icon_state = "0-4" + }, +/obj/machinery/power/apc{ + dir = 1; + name = "north bump"; + pixel_x = 0; + pixel_y = 28 + }, +/turf/simulated/floor/plating, +/area/maintenance/lower/atmos) +"mEg" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/structure/cable/green{ + d1 = 1; + d2 = 8; + icon_state = "1-8" + }, +/turf/simulated/floor/wood, +/area/crew_quarters/sleep/maintDorm2) +"mHi" = ( +/obj/machinery/atmospherics/pipe/simple/visible/green{ + dir = 4 + }, +/obj/effect/floor_decal/borderfloor, +/obj/effect/floor_decal/corner/yellow/border, +/turf/simulated/floor/tiled, +/area/engineering/atmos) +"mMD" = ( +/obj/structure/stairs/south, +/turf/simulated/floor/plating, +/area/maintenance/lower/atmos) +"mQU" = ( +/obj/random/junk, +/turf/simulated/floor/plating, +/area/maintenance/lower/atmos) +"mQY" = ( +/obj/machinery/atmospherics/unary/vent_pump/on{ + dir = 1 + }, +/turf/simulated/floor/tiled, +/area/engineering/atmos) +"mTp" = ( +/obj/machinery/atmospherics/pipe/tank/air, +/turf/simulated/floor/tiled/techmaint, +/area/engineering/atmos) "mUG" = ( /obj/structure/cable{ icon_state = "1-2" @@ -28004,6 +28851,9 @@ }, /turf/simulated/floor/tiled, /area/tether/surfacebase/public_garden) +"mXi" = ( +/turf/simulated/floor/plating, +/area/crew_quarters/sleep/maintDorm3) "mXP" = ( /obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ dir = 5 @@ -28017,6 +28867,25 @@ }, /turf/simulated/floor/tiled, /area/tether/surfacebase/public_garden_one) +"naR" = ( +/obj/structure/table/rack, +/obj/random/junk, +/obj/random/maintenance/engineering, +/obj/random/maintenance/engineering, +/obj/random/maintenance/engineering, +/turf/simulated/floor/plating, +/area/maintenance/substation/surface_atmos) +"nce" = ( +/obj/effect/floor_decal/borderfloor{ + dir = 9 + }, +/obj/effect/floor_decal/corner/yellow/border{ + icon_state = "bordercolor"; + dir = 9 + }, +/obj/machinery/space_heater, +/turf/simulated/floor/tiled/techmaint, +/area/engineering/atmos) "ncL" = ( /obj/machinery/door/airlock/multi_tile/glass{ name = "Public Gardens" @@ -28029,11 +28898,190 @@ dir = 8 }, /area/hallway/lower/first_west) +"ngd" = ( +/obj/structure/disposalpipe/segment, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/machinery/door/firedoor/glass, +/obj/machinery/door/airlock{ + id_tag = "maintdorm1"; + name = "Room 1" + }, +/obj/structure/cable/green{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/turf/simulated/floor/plating, +/area/crew_quarters/sleep/maintDorm1) +"nhV" = ( +/obj/machinery/atmospherics/pipe/tank/nitrous_oxide{ + icon_state = "n2o_map"; + dir = 4 + }, +/turf/simulated/floor/tiled/techmaint, +/area/engineering/atmos) +"nij" = ( +/obj/machinery/atmospherics/pipe/simple/visible/black{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/visible/cyan, +/obj/effect/floor_decal/borderfloor{ + dir = 4 + }, +/obj/effect/floor_decal/corner/blue/border{ + dir = 4 + }, +/turf/simulated/floor/tiled, +/area/engineering/atmos) +"njh" = ( +/obj/effect/decal/cleanable/dirt, +/turf/simulated/floor/plating, +/area/crew_quarters/sleep/maintDorm4) +"njo" = ( +/obj/structure/disposalpipe/junction{ + icon_state = "pipe-j1"; + dir = 4 + }, +/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{ + dir = 1 + }, +/obj/machinery/atmospherics/pipe/manifold/hidden/supply{ + dir = 1 + }, +/obj/structure/cable/green{ + d1 = 2; + d2 = 4; + icon_state = "2-4" + }, +/obj/structure/cable/green{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/turf/simulated/floor/plating, +/area/maintenance/lower/atmos) +"nlQ" = ( +/obj/effect/decal/cleanable/dirt, +/turf/simulated/floor/plating, +/area/crew_quarters/sleep/maintDorm1) +"nma" = ( +/obj/machinery/door/firedoor/glass, +/obj/machinery/door/airlock/multi_tile/metal/mait{ + name = "Maintenance Access" + }, +/turf/simulated/floor/plating, +/area/maintenance/lower/atmos) +"nmr" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 5 + }, +/turf/simulated/floor/tiled/freezer, +/area/crew_quarters/showers) +"nod" = ( +/obj/machinery/firealarm{ + dir = 8; + pixel_x = -24 + }, +/turf/simulated/floor/tiled/techmaint, +/area/engineering/atmos) +"npt" = ( +/obj/machinery/atmospherics/portables_connector{ + dir = 4 + }, +/obj/effect/floor_decal/industrial/outline/yellow, +/turf/simulated/floor/tiled/techmaint, +/area/engineering/atmos/processing) +"npw" = ( +/obj/structure/catwalk, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, +/obj/effect/decal/cleanable/dirt, +/turf/simulated/floor/plating, +/area/maintenance/lower/research) +"nrl" = ( +/obj/structure/table/woodentable, +/obj/item/weapon/storage/fancy/markers, +/turf/simulated/floor/plating, +/area/crew_quarters/sleep/maintDorm1) +"nrV" = ( +/obj/machinery/atmospherics/pipe/manifold/visible/yellow{ + dir = 4 + }, +/obj/machinery/meter, +/obj/effect/floor_decal/borderfloor/corner, +/obj/effect/floor_decal/corner/black/bordercorner, +/turf/simulated/floor/tiled, +/area/engineering/atmos) +"nuR" = ( +/obj/machinery/atmospherics/binary/pump, +/turf/simulated/floor/tiled, +/area/engineering/atmos/processing) +"nww" = ( +/obj/structure/cable{ + icon_state = "4-8" + }, +/obj/structure/catwalk, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, +/turf/simulated/floor/plating, +/area/maintenance/lower/research) +"nwT" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 5 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 5 + }, +/obj/effect/decal/cleanable/dirt, +/turf/simulated/floor/wood, +/area/crew_quarters/sleep/maintDorm3) "nxt" = ( /obj/effect/decal/cleanable/dirt, /obj/structure/closet/firecloset, /turf/simulated/floor/tiled/techfloor, /area/maintenance/lower/public_garden_maintenence) +"nzj" = ( +/obj/machinery/atmospherics/pipe/tank/nitrous_oxide{ + dir = 8; + start_pressure = 1519.88 + }, +/turf/simulated/floor/tiled/techmaint, +/area/engineering/atmos) +"nzv" = ( +/obj/structure/toilet{ + pixel_y = 10 + }, +/obj/effect/decal/cleanable/dirt, +/turf/simulated/floor/plating, +/area/crew_quarters/sleep/maintDorm2) +"nzZ" = ( +/obj/machinery/atmospherics/unary/vent_scrubber/on, +/obj/machinery/light_construct{ + icon_state = "tube-construct-stage1"; + dir = 1 + }, +/obj/structure/table/woodentable, +/turf/simulated/floor/wood, +/area/crew_quarters/sleep/maintDorm4) +"nCo" = ( +/obj/machinery/atmospherics/pipe/simple/visible/universal{ + name = "Distro Loop Drain" + }, +/turf/simulated/floor/tiled, +/area/engineering/atmos) +"nCz" = ( +/obj/machinery/door/firedoor, +/turf/simulated/floor/plating, +/area/vacant/vacant_bar) "nCB" = ( /obj/structure/cable{ icon_state = "1-2" @@ -28055,6 +29103,28 @@ }, /turf/simulated/floor/tiled, /area/tether/surfacebase/public_garden) +"nED" = ( +/obj/structure/bed/double/padded, +/obj/effect/decal/cleanable/dirt, +/obj/item/weapon/bedsheet/rainbowdouble, +/turf/simulated/floor/wood, +/area/crew_quarters/sleep/maintDorm4) +"nHz" = ( +/obj/machinery/alarm{ + dir = 4; + icon_state = "alarm0"; + pixel_x = -22 + }, +/obj/effect/floor_decal/borderfloor{ + dir = 8 + }, +/obj/effect/floor_decal/corner/yellow/border{ + icon_state = "bordercolor"; + dir = 8 + }, +/obj/machinery/space_heater, +/turf/simulated/floor/tiled/techmaint, +/area/engineering/atmos) "nJE" = ( /obj/structure/cable{ icon_state = "4-8" @@ -28076,16 +29146,171 @@ }, /turf/simulated/floor/tiled, /area/tether/surfacebase/public_garden) +"nKO" = ( +/obj/machinery/light{ + icon_state = "tube1"; + dir = 8 + }, +/turf/simulated/floor/tiled, +/area/engineering/atmos/processing) +"nKS" = ( +/turf/simulated/floor/wood, +/area/crew_quarters/sleep/maintDorm1) "nMZ" = ( /obj/structure/window/reinforced{ dir = 8 }, /turf/simulated/floor/tiled, /area/tether/surfacebase/public_garden_one) +"nOq" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/obj/effect/decal/cleanable/dirt, +/turf/simulated/floor/plating, +/area/maintenance/lower/research) +"nOV" = ( +/obj/effect/floor_decal/rust, +/obj/structure/catwalk, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, +/turf/simulated/floor/plating, +/area/maintenance/lower/research) +"nSl" = ( +/obj/machinery/atmospherics/pipe/simple/visible/black{ + dir = 4 + }, +/turf/simulated/floor/tiled/techmaint, +/area/engineering/atmos/processing) +"nSL" = ( +/obj/machinery/door/firedoor/glass, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, +/obj/effect/decal/cleanable/dirt, +/turf/simulated/floor/plating, +/area/crew_quarters/sleep/maintDorm2) +"nTZ" = ( +/obj/machinery/camera/network/engineering{ + dir = 8 + }, +/obj/machinery/atmospherics/portables_connector{ + dir = 8 + }, +/obj/effect/floor_decal/industrial/outline/yellow, +/turf/simulated/floor/tiled/techmaint, +/area/engineering/atmos) +"nUf" = ( +/obj/structure/closet/gmcloset{ + icon_closed = "black"; + icon_state = "black"; + name = "formal wardrobe" + }, +/turf/simulated/floor/plating, +/area/vacant/vacant_bar) +"nZd" = ( +/obj/machinery/atmospherics/pipe/simple/visible/yellow{ + dir = 9 + }, +/turf/simulated/floor/plating, +/area/engineering/atmos/processing) +"ocQ" = ( +/obj/machinery/atmospherics/pipe/simple/visible/green, +/obj/effect/floor_decal/borderfloor{ + dir = 8 + }, +/obj/effect/floor_decal/corner/yellow/border{ + icon_state = "bordercolor"; + dir = 8 + }, +/turf/simulated/floor/tiled, +/area/engineering/atmos) +"ocU" = ( +/obj/machinery/atmospherics/pipe/manifold/visible/green{ + dir = 8 + }, +/obj/machinery/meter, +/obj/effect/floor_decal/borderfloor{ + dir = 4 + }, +/obj/effect/floor_decal/corner/yellow/border{ + icon_state = "bordercolor"; + dir = 4 + }, +/turf/simulated/floor/tiled, +/area/engineering/atmos) +"odp" = ( +/obj/structure/catwalk, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 9 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 9 + }, +/obj/random/junk, +/turf/simulated/floor/plating, +/area/maintenance/lower/research) +"odM" = ( +/obj/machinery/firealarm{ + dir = 8; + pixel_x = -24 + }, +/turf/simulated/floor/tiled, +/area/engineering/atmos/processing) +"odO" = ( +/obj/machinery/atmospherics/unary/heater, +/turf/simulated/floor/tiled/techmaint, +/area/engineering/atmos/processing) +"oem" = ( +/obj/structure/bed/chair/comfy/black{ + dir = 4 + }, +/turf/simulated/floor/wood, +/area/crew_quarters/sleep/maintDorm1) +"ojj" = ( +/obj/machinery/atmospherics/pipe/simple/visible/yellow{ + dir = 4 + }, +/turf/simulated/floor/plating, +/area/engineering/atmos/processing) +"okM" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 9 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 10 + }, +/obj/effect/decal/cleanable/dirt, +/turf/simulated/floor/plating, +/area/crew_quarters/sleep/maintDorm3) "ora" = ( /obj/effect/floor_decal/techfloor/corner, /turf/simulated/floor/tiled/techfloor, /area/tether/surfacebase/public_garden_one) +"oso" = ( +/obj/machinery/atmospherics/binary/pump{ + dir = 4 + }, +/turf/simulated/floor/tiled/techmaint, +/area/engineering/atmos/processing) +"ouI" = ( +/turf/simulated/floor/wood, +/area/crew_quarters/sleep/maintDorm4) +"owQ" = ( +/turf/simulated/wall{ + can_open = 1 + }, +/area/maintenance/lower/atmos) +"oxc" = ( +/obj/effect/floor_decal/rust, +/turf/simulated/floor/tiled/steel_dirty, +/area/maintenance/lower/atmos) "ozv" = ( /obj/structure/cable{ icon_state = "2-4" @@ -28119,6 +29344,48 @@ /obj/random/junk, /turf/simulated/floor/tiled/techfloor, /area/maintenance/lower/public_garden_maintenence) +"oAK" = ( +/obj/effect/floor_decal/borderfloor{ + dir = 5 + }, +/obj/effect/floor_decal/corner/white/border{ + icon_state = "bordercolor"; + dir = 5 + }, +/obj/structure/table/standard, +/obj/item/device/communicator, +/obj/item/device/communicator, +/turf/simulated/floor/tiled, +/area/crew_quarters/showers) +"oAU" = ( +/obj/machinery/power/apc{ + dir = 1; + name = "north bump"; + pixel_x = 0; + pixel_y = 24 + }, +/obj/structure/cable/green{ + d2 = 8; + icon_state = "0-8" + }, +/obj/effect/decal/cleanable/dirt, +/turf/simulated/floor/plating, +/area/maintenance/lower/research) +"oGH" = ( +/obj/effect/floor_decal/rust, +/obj/machinery/atmospherics/unary/vent_pump/on{ + dir = 1 + }, +/obj/machinery/light_construct/small, +/turf/simulated/floor/tiled/white, +/area/crew_quarters/sleep/maintDorm3) +"oMG" = ( +/obj/machinery/door/firedoor, +/obj/structure/grille, +/obj/structure/window/reinforced/full, +/obj/structure/window/reinforced, +/turf/simulated/floor/plating, +/area/crew_quarters/sleep/maintDorm2) "oOc" = ( /obj/structure/bed/chair/wood, /obj/effect/floor_decal/borderfloor{ @@ -28129,6 +29396,22 @@ }, /turf/simulated/floor/tiled, /area/tether/surfacebase/public_garden) +"oON" = ( +/obj/structure/railing{ + dir = 8 + }, +/obj/effect/floor_decal/corner/lightgrey{ + dir = 10 + }, +/obj/effect/floor_decal/corner/lightgrey{ + dir = 5 + }, +/obj/structure/disposalpipe/trunk{ + dir = 1 + }, +/obj/machinery/disposal, +/turf/simulated/floor/tiled, +/area/tether/surfacebase/atrium_one) "oPX" = ( /obj/structure/cable/green{ d1 = 4; @@ -28137,6 +29420,40 @@ }, /turf/simulated/floor/tiled/steel_dirty/virgo3b, /area/tether/surfacebase/mining_main/external) +"oRd" = ( +/obj/structure/table/woodentable, +/turf/simulated/floor/wood, +/area/crew_quarters/sleep/maintDorm2) +"oRr" = ( +/obj/structure/table/woodentable, +/obj/effect/decal/cleanable/dirt, +/turf/simulated/floor/wood, +/area/crew_quarters/sleep/maintDorm4) +"oRG" = ( +/obj/machinery/atmospherics/pipe/manifold/visible/purple{ + icon_state = "map"; + dir = 8 + }, +/obj/machinery/meter, +/turf/simulated/floor/tiled, +/area/engineering/atmos/processing) +"oTM" = ( +/obj/machinery/atmospherics/pipe/simple/visible/black{ + icon_state = "intact"; + dir = 6 + }, +/obj/machinery/door/firedoor, +/obj/structure/grille, +/obj/structure/window/reinforced/full, +/obj/structure/window/reinforced, +/turf/simulated/floor/plating, +/area/engineering/atmos/processing) +"oTW" = ( +/obj/machinery/atmospherics/pipe/simple/visible/yellow{ + dir = 6 + }, +/turf/simulated/floor/plating, +/area/engineering/atmos/processing) "oUC" = ( /obj/machinery/light{ dir = 8 @@ -28145,6 +29462,81 @@ name = "Holodeck Projector Floor" }, /area/crew_quarters/sleep/Dorm_1/holo) +"oUO" = ( +/turf/simulated/floor/plating, +/area/maintenance/lower/research) +"oZi" = ( +/obj/machinery/door/firedoor/glass, +/obj/machinery/atmospherics/pipe/simple/visible/green{ + dir = 4 + }, +/obj/structure/grille, +/obj/structure/window/reinforced/full, +/obj/structure/cable/cyan{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/turf/simulated/floor/plating, +/area/engineering/atmos/processing) +"oZs" = ( +/obj/machinery/light/small{ + dir = 4 + }, +/turf/simulated/floor/plating, +/area/maintenance/lower/atmos) +"oZQ" = ( +/obj/effect/decal/cleanable/dirt, +/turf/simulated/floor/plating, +/area/crew_quarters/sleep/maintDorm3) +"pby" = ( +/obj/effect/floor_decal/borderfloor{ + dir = 8 + }, +/obj/effect/floor_decal/corner/white/border{ + dir = 8 + }, +/obj/effect/floor_decal/borderfloor/corner2{ + dir = 10 + }, +/obj/effect/floor_decal/corner/white/bordercorner2{ + dir = 10 + }, +/turf/simulated/floor/tiled, +/area/crew_quarters/showers) +"pbE" = ( +/obj/structure/stairs/north, +/turf/simulated/floor/tiled, +/area/engineering/atmos) +"pdL" = ( +/obj/structure/disposalpipe/segment, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/structure/cable/green{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/turf/simulated/floor/tiled/steel_dirty, +/area/maintenance/lower/atmos) +"pfD" = ( +/obj/structure/closet/crate, +/obj/item/weapon/handcuffs/fuzzy, +/obj/random/maintenance/security, +/obj/random/contraband, +/turf/simulated/floor/plating, +/area/tether/surfacebase/atrium_one) +"phh" = ( +/obj/machinery/firealarm{ + dir = 1; + pixel_x = 0; + pixel_y = -25 + }, +/obj/machinery/atmospherics/unary/vent_pump/on{ + dir = 1 + }, +/turf/simulated/floor/tiled, +/area/engineering/atmos/processing) "piN" = ( /obj/machinery/atmospherics/unary/vent_pump/on{ dir = 4 @@ -28167,13 +29559,308 @@ /obj/effect/floor_decal/techfloor/hole, /turf/simulated/floor/tiled/techfloor, /area/tether/surfacebase/public_garden_one) +"pkJ" = ( +/obj/machinery/atmospherics/unary/vent_pump/on{ + dir = 1 + }, +/obj/machinery/light_construct/small, +/obj/effect/decal/cleanable/dirt, +/turf/simulated/floor/plating, +/area/crew_quarters/sleep/maintDorm1) +"pmE" = ( +/obj/machinery/door/airlock/maintenance/engi{ + name = "Atmospherics"; + req_access = list(24) + }, +/obj/machinery/door/firedoor/glass, +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/turf/simulated/floor/plating, +/area/engineering/atmos/processing) +"ppK" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/structure/disposalpipe/segment{ + dir = 8; + icon_state = "pipe-c" + }, +/obj/machinery/light_switch{ + dir = 8; + pixel_x = 24; + pixel_y = 6 + }, +/obj/machinery/button/remote/airlock{ + id = "maintdorm4"; + name = "Room 4 Lock"; + pixel_x = 23; + pixel_y = -4; + specialfunctions = 4 + }, +/obj/structure/cable/green{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/obj/effect/decal/cleanable/dirt, +/turf/simulated/floor/wood, +/area/crew_quarters/sleep/maintDorm4) +"pqF" = ( +/obj/structure/table/woodentable, +/obj/effect/decal/cleanable/dirt, +/turf/simulated/floor/plating, +/area/crew_quarters/sleep/maintDorm4) +"pqJ" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/structure/cable/green{ + d1 = 1; + d2 = 8; + icon_state = "1-8" + }, +/obj/effect/decal/cleanable/dirt, +/turf/simulated/floor/plating, +/area/crew_quarters/sleep/maintDorm4) +"prt" = ( +/obj/machinery/atmospherics/pipe/manifold/visible/purple, +/obj/machinery/meter, +/turf/simulated/floor/tiled/techmaint, +/area/engineering/atmos/processing) +"prS" = ( +/obj/machinery/alarm{ + dir = 8; + pixel_x = 25; + pixel_y = 0 + }, +/obj/structure/table/woodentable, +/turf/simulated/floor/wood, +/area/crew_quarters/sleep/maintDorm2) +"pvj" = ( +/obj/effect/decal/cleanable/dirt, +/obj/structure/cable/green{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/obj/effect/decal/cleanable/blood/oil, +/turf/simulated/floor/plating, +/area/maintenance/lower/atmos) +"pvC" = ( +/obj/structure/closet, +/obj/random/maintenance/engineering, +/obj/random/junk, +/obj/random/maintenance/clean, +/obj/random/maintenance/clean, +/turf/simulated/floor/plating, +/area/maintenance/lower/atmos) +"pxR" = ( +/obj/effect/floor_decal/corner/lightgrey{ + dir = 10 + }, +/obj/effect/floor_decal/corner/lightgrey{ + dir = 5 + }, +/obj/machinery/atmospherics/unary/vent_pump/on{ + dir = 4 + }, +/obj/structure/table/standard, +/obj/random/plushie, +/obj/machinery/firealarm{ + dir = 1; + pixel_x = 0; + pixel_y = -24 + }, +/turf/simulated/floor/tiled, +/area/tether/surfacebase/atrium_one) "pxT" = ( /obj/structure/catwalk, /turf/simulated/floor/plating, /area/maintenance/lower/public_garden_maintenence) +"pxZ" = ( +/obj/structure/bed/chair/comfy/black{ + dir = 8 + }, +/turf/simulated/floor/wood, +/area/crew_quarters/sleep/maintDorm4) +"pyO" = ( +/obj/structure/railing, +/obj/effect/floor_decal/borderfloor{ + dir = 8 + }, +/obj/effect/floor_decal/corner/yellow/border{ + icon_state = "bordercolor"; + dir = 8 + }, +/obj/machinery/space_heater, +/turf/simulated/floor/tiled/techmaint, +/area/engineering/atmos) +"pAL" = ( +/obj/machinery/atmospherics/pipe/manifold/visible/green{ + dir = 8 + }, +/obj/machinery/meter, +/obj/effect/floor_decal/borderfloor{ + dir = 8 + }, +/obj/effect/floor_decal/corner/yellow/border{ + icon_state = "bordercolor"; + dir = 8 + }, +/turf/simulated/floor/tiled, +/area/engineering/atmos) +"pAT" = ( +/obj/structure/closet, +/turf/simulated/floor/plating, +/area/crew_quarters/sleep/maintDorm1) "pCg" = ( /turf/simulated/floor/plating, /area/tether/surfacebase/public_garden_one) +"pGN" = ( +/obj/machinery/light/small{ + dir = 4 + }, +/obj/effect/decal/cleanable/dirt, +/turf/simulated/floor/plating, +/area/maintenance/lower/atmos) +"pMj" = ( +/obj/machinery/atmospherics/pipe/simple/visible/green{ + icon_state = "intact"; + dir = 5 + }, +/turf/simulated/floor/tiled/techmaint, +/area/engineering/atmos/processing) +"pQi" = ( +/obj/machinery/camera/network/engineering{ + dir = 4 + }, +/turf/simulated/floor/tiled, +/area/engineering/atmos/processing) +"pSw" = ( +/obj/structure/railing, +/obj/structure/table/rack, +/obj/random/maintenance/clean, +/turf/simulated/floor/plating, +/area/maintenance/lower/research) +"pTB" = ( +/turf/simulated/wall, +/area/crew_quarters/sleep/maintDorm4) +"pTP" = ( +/obj/machinery/alarm{ + dir = 4; + icon_state = "alarm0"; + pixel_x = -22 + }, +/turf/simulated/floor/tiled/techmaint, +/area/engineering/atmos) +"pUD" = ( +/obj/machinery/atmospherics/pipe/tank/carbon_dioxide{ + dir = 8; + start_pressure = 3039.75 + }, +/turf/simulated/floor/tiled/techmaint, +/area/engineering/atmos) +"pUG" = ( +/obj/effect/floor_decal/steeldecal/steel_decals10{ + dir = 10 + }, +/turf/simulated/floor/tiled/freezer, +/area/crew_quarters/showers) +"pVM" = ( +/obj/machinery/atmospherics/pipe/tank/nitrogen, +/turf/simulated/floor/tiled/techmaint, +/area/engineering/atmos) +"pYp" = ( +/obj/effect/floor_decal/borderfloor{ + dir = 4 + }, +/obj/effect/floor_decal/corner/blue/border{ + dir = 4 + }, +/obj/structure/table/standard, +/obj/random/soap, +/turf/simulated/floor/tiled, +/area/crew_quarters/showers) +"qaO" = ( +/obj/effect/floor_decal/borderfloor{ + dir = 1; + icon_state = "borderfloor"; + pixel_y = 0 + }, +/obj/effect/floor_decal/corner/yellow/border{ + icon_state = "bordercolor"; + dir = 1 + }, +/obj/effect/floor_decal/borderfloor/corner2{ + dir = 1 + }, +/obj/effect/floor_decal/corner/yellow/bordercorner2{ + icon_state = "bordercolorcorner2"; + dir = 1 + }, +/obj/machinery/portable_atmospherics/powered/scrubber, +/turf/simulated/floor/tiled/techmaint, +/area/engineering/atmos) +"qdF" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/effect/decal/cleanable/dirt, +/turf/simulated/floor/plating, +/area/crew_quarters/sleep/maintDorm4) +"qfJ" = ( +/obj/effect/floor_decal/borderfloor{ + dir = 10 + }, +/obj/structure/disposalpipe/segment, +/obj/effect/floor_decal/corner/white/border{ + icon_state = "bordercolor"; + dir = 10 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/structure/cable/green{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/turf/simulated/floor/tiled, +/area/crew_quarters/visitor_lodging) +"qgD" = ( +/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{ + dir = 8 + }, +/obj/machinery/atmospherics/pipe/manifold/hidden/supply{ + dir = 8 + }, +/obj/structure/cable/green{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/obj/effect/decal/cleanable/dirt, +/turf/simulated/floor/plating, +/area/crew_quarters/sleep/maintDorm1) +"qlw" = ( +/obj/machinery/atmospherics/binary/pump/on{ + dir = 1; + name = "Air to Distro" + }, +/turf/simulated/floor/tiled, +/area/engineering/atmos) +"qoc" = ( +/obj/machinery/atmospherics/unary/vent_pump/on{ + dir = 4 + }, +/turf/simulated/floor/tiled, +/area/engineering/atmos/processing) +"qpo" = ( +/obj/machinery/atmospherics/pipe/simple/visible/cyan, +/obj/effect/floor_decal/borderfloor{ + dir = 4 + }, +/obj/effect/floor_decal/corner/blue/border{ + dir = 4 + }, +/turf/simulated/floor/tiled, +/area/engineering/atmos) "qpB" = ( /obj/effect/floor_decal/borderfloor{ dir = 8 @@ -28186,6 +29873,39 @@ }, /turf/simulated/floor/tiled, /area/tether/surfacebase/public_garden) +"qqu" = ( +/obj/machinery/shower{ + dir = 4; + icon_state = "shower"; + pixel_x = 0; + pixel_y = 0 + }, +/turf/simulated/floor/tiled/freezer, +/area/crew_quarters/showers) +"qsL" = ( +/obj/machinery/atmospherics/unary/vent_scrubber/on, +/obj/item/weapon/stool, +/turf/simulated/floor/plating, +/area/vacant/vacant_bar) +"qtf" = ( +/obj/machinery/camera/network/tether, +/turf/simulated/floor/tiled, +/area/tether/surfacebase/atrium_one) +"qvU" = ( +/obj/machinery/door/firedoor/glass, +/obj/machinery/atmospherics/pipe/simple/visible/black{ + dir = 4 + }, +/obj/structure/grille, +/obj/structure/window/reinforced/full, +/turf/simulated/floor/plating, +/area/engineering/atmos/processing) +"qwy" = ( +/obj/machinery/atmospherics/unary/vent_pump/on{ + dir = 1 + }, +/turf/simulated/floor/plating, +/area/crew_quarters/sleep/maintDorm4) "qyw" = ( /obj/structure/cable{ icon_state = "0-4" @@ -28212,6 +29932,25 @@ name = "Holodeck Projector Floor" }, /area/crew_quarters/sleep/Dorm_7/holo) +"qCd" = ( +/obj/machinery/atmospherics/pipe/zpipe/up, +/obj/machinery/atmospherics/pipe/zpipe/up/supply{ + dir = 1 + }, +/obj/machinery/atmospherics/pipe/zpipe/up/scrubbers{ + dir = 1 + }, +/turf/simulated/floor/plating, +/area/engineering/atmos) +"qDb" = ( +/obj/machinery/atmospherics/pipe/manifold/visible/supply, +/obj/machinery/atmospherics/pipe/simple/visible/scrubbers{ + dir = 9 + }, +/obj/effect/floor_decal/borderfloor/cee, +/obj/effect/floor_decal/industrial/danger/cee, +/turf/simulated/floor/plating, +/area/engineering/atmos) "qGm" = ( /obj/structure/cable{ icon_state = "1-2" @@ -28240,11 +29979,78 @@ }, /turf/simulated/floor/tiled, /area/tether/surfacebase/public_garden_one) +"qKd" = ( +/turf/simulated/wall, +/area/crew_quarters/sleep/maintDorm1) +"qLe" = ( +/obj/effect/decal/cleanable/dirt, +/turf/simulated/floor/plating, +/area/vacant/vacant_site/east) "qMQ" = ( /obj/effect/floor_decal/rust, /obj/random/junk, /turf/simulated/floor/plating, /area/maintenance/lower/public_garden_maintenence) +"qNc" = ( +/obj/effect/floor_decal/borderfloor{ + dir = 6 + }, +/obj/effect/floor_decal/corner/white/border{ + dir = 6 + }, +/obj/structure/table/standard, +/obj/random/soap, +/obj/random/soap, +/turf/simulated/floor/tiled, +/area/crew_quarters/showers) +"qPz" = ( +/turf/simulated/floor/wood, +/area/crew_quarters/sleep/maintDorm3) +"qPT" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 5 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 5 + }, +/obj/item/stack/material/wood{ + amount = 10 + }, +/obj/effect/decal/cleanable/dirt, +/turf/simulated/floor/plating, +/area/crew_quarters/sleep/maintDorm4) +"qQA" = ( +/obj/random/trash_pile, +/obj/structure/railing, +/obj/effect/decal/cleanable/dirt, +/turf/simulated/floor/plating, +/area/maintenance/lower/research) +"qRQ" = ( +/obj/effect/floor_decal/rust, +/obj/effect/decal/cleanable/dirt, +/turf/simulated/floor/tiled/steel_dirty, +/area/maintenance/lower/atmos) +"qUj" = ( +/obj/structure/disposalpipe/trunk{ + dir = 4 + }, +/obj/machinery/disposal, +/turf/simulated/floor/plating, +/area/crew_quarters/sleep/maintDorm2) +"qZk" = ( +/obj/machinery/atmospherics/pipe/manifold/visible/purple, +/turf/simulated/floor/tiled/techmaint, +/area/engineering/atmos/processing) +"rab" = ( +/obj/machinery/atmospherics/unary/outlet_injector{ + dir = 4; + frequency = 1441; + icon_state = "map_injector"; + id = "atmos_out"; + use_power = 1 + }, +/turf/simulated/floor/tiled/steel_dirty/virgo3b, +/area/engineering/atmos/intake) "ram" = ( /obj/effect/floor_decal/borderfloor{ dir = 5 @@ -28257,6 +30063,37 @@ }, /turf/simulated/floor/tiled, /area/tether/surfacebase/public_garden_one) +"rbh" = ( +/obj/machinery/portable_atmospherics/canister/phoron, +/obj/machinery/camera/network/engineering{ + dir = 4 + }, +/obj/effect/floor_decal/industrial/outline/yellow, +/turf/simulated/floor/tiled/techmaint, +/area/engineering/atmos) +"rbv" = ( +/obj/effect/floor_decal/corner/lightgrey{ + dir = 10 + }, +/obj/effect/floor_decal/corner/lightgrey{ + dir = 5 + }, +/obj/machinery/vending/cigarette, +/turf/simulated/floor/tiled, +/area/tether/surfacebase/atrium_one) +"rcO" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, +/turf/simulated/floor/plating, +/area/maintenance/lower/research) +"rdw" = ( +/obj/effect/decal/cleanable/dirt, +/turf/simulated/floor/plating, +/area/engineering/atmos) "rfg" = ( /obj/structure/cable{ icon_state = "4-8" @@ -28280,11 +30117,178 @@ }, /turf/simulated/floor/tiled, /area/tether/surfacebase/public_garden_one) +"rfn" = ( +/obj/machinery/camera/network/engineering{ + dir = 8 + }, +/obj/effect/floor_decal/borderfloor/corner, +/turf/simulated/floor/tiled, +/area/engineering/atmos) +"rfP" = ( +/obj/machinery/atmospherics/unary/vent_pump/on{ + dir = 1 + }, +/turf/simulated/floor/plating, +/area/vacant/vacant_bar) +"rhY" = ( +/obj/structure/cable/green{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/obj/effect/decal/cleanable/dirt, +/turf/simulated/floor/plating, +/area/maintenance/lower/research) +"rik" = ( +/obj/machinery/atmospherics/pipe/tank/air{ + dir = 1 + }, +/turf/simulated/floor/tiled/techmaint, +/area/engineering/atmos) "riT" = ( /obj/machinery/door/airlock/maintenance/common, /obj/machinery/door/firedoor/glass, /turf/simulated/floor/tiled, /area/tether/surfacebase/public_garden_one) +"rlb" = ( +/obj/structure/table/bench/steel, +/turf/simulated/floor/plating, +/area/maintenance/lower/atmos) +"rlN" = ( +/obj/effect/floor_decal/rust, +/obj/machinery/atmospherics/unary/vent_pump/on{ + dir = 1 + }, +/obj/machinery/light_construct/small, +/turf/simulated/floor/tiled/white, +/area/crew_quarters/sleep/maintDorm4) +"rmb" = ( +/obj/machinery/power/apc{ + cell_type = /obj/item/weapon/cell/apc; + dir = 8; + name = "west bump"; + pixel_x = -28 + }, +/obj/structure/cable/green{ + d2 = 4; + icon_state = "0-4" + }, +/obj/item/stack/material/wood{ + amount = 10 + }, +/obj/structure/table, +/obj/effect/decal/cleanable/dirt, +/turf/simulated/floor/wood, +/area/crew_quarters/sleep/maintDorm2) +"rmE" = ( +/obj/machinery/door/firedoor, +/obj/machinery/atmospherics/pipe/simple/visible/purple{ + dir = 4 + }, +/obj/structure/grille, +/obj/structure/window/reinforced/full, +/obj/structure/window/reinforced{ + dir = 8 + }, +/turf/simulated/floor/plating, +/area/engineering/atmos/processing) +"roN" = ( +/obj/structure/railing, +/obj/structure/closet, +/obj/random/maintenance/research, +/obj/random/maintenance/research, +/obj/random/cigarettes, +/turf/simulated/floor/plating, +/area/maintenance/lower/research) +"rpg" = ( +/obj/machinery/atmospherics/binary/pump{ + dir = 8 + }, +/obj/effect/floor_decal/borderfloor{ + dir = 4 + }, +/obj/effect/floor_decal/corner/yellow/border{ + icon_state = "bordercolor"; + dir = 4 + }, +/turf/simulated/floor/tiled, +/area/engineering/atmos) +"rpz" = ( +/obj/structure/table, +/obj/effect/decal/cleanable/dirt, +/turf/simulated/floor/plating, +/area/crew_quarters/sleep/maintDorm3) +"rrW" = ( +/obj/machinery/light/small{ + icon_state = "bulb1"; + dir = 1 + }, +/obj/effect/decal/cleanable/dirt, +/obj/machinery/atmospherics/unary/vent_pump/on, +/turf/simulated/floor/plating, +/area/vacant/vacant_bar) +"rtj" = ( +/obj/machinery/atmospherics/omni/mixer{ + name = "Air Mixer"; + tag_north = 2; + tag_south = 1; + tag_south_con = 0.79; + tag_west = 1; + tag_west_con = 0.21 + }, +/obj/effect/floor_decal/borderfloor{ + dir = 4 + }, +/obj/effect/floor_decal/corner/yellow/border{ + icon_state = "bordercolor"; + dir = 4 + }, +/turf/simulated/floor/tiled, +/area/engineering/atmos) +"ruP" = ( +/obj/structure/table/woodentable, +/obj/item/clothing/mask/smokable/cigarette/joint{ + desc = "Ever been to orbit?" + }, +/obj/effect/decal/cleanable/dirt, +/turf/simulated/floor/plating, +/area/crew_quarters/sleep/maintDorm3) +"rCg" = ( +/obj/machinery/atmospherics/pipe/simple/visible/green{ + dir = 4 + }, +/obj/structure/cable/cyan{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/turf/simulated/floor/tiled, +/area/engineering/atmos) +"rCO" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 6 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 6 + }, +/obj/effect/decal/cleanable/dirt, +/turf/simulated/floor/plating, +/area/maintenance/lower/research) +"rDT" = ( +/obj/structure/bed/chair/comfy/black{ + dir = 4 + }, +/obj/effect/decal/cleanable/dirt, +/turf/simulated/floor/plating, +/area/crew_quarters/sleep/maintDorm3) +"rDY" = ( +/obj/machinery/atmospherics/pipe/simple/visible/yellow, +/obj/effect/decal/cleanable/dirt, +/obj/machinery/camera/network/engineering{ + dir = 8 + }, +/turf/simulated/floor/plating, +/area/engineering/atmos/processing) "rEC" = ( /obj/effect/floor_decal/borderfloor{ dir = 8 @@ -28296,20 +30300,191 @@ /obj/machinery/gear_painter, /turf/simulated/floor/tiled, /area/crew_quarters/visitor_laundry) +"rHC" = ( +/obj/machinery/atmospherics/pipe/simple/visible/black, +/obj/effect/floor_decal/borderfloor, +/obj/effect/floor_decal/corner/black/border, +/turf/simulated/floor/tiled, +/area/engineering/atmos) "rKM" = ( /obj/structure/stairs/north, /turf/simulated/floor/tiled, /area/tether/surfacebase/public_garden_one) +"rMy" = ( +/obj/structure/bed/double/padded, +/obj/effect/decal/cleanable/dirt, +/obj/item/weapon/bedsheet/double, +/turf/simulated/floor/plating, +/area/crew_quarters/sleep/maintDorm3) +"rNz" = ( +/obj/machinery/atmospherics/pipe/simple/visible/green{ + dir = 4 + }, +/turf/simulated/floor/tiled, +/area/engineering/atmos) +"rPU" = ( +/turf/simulated/floor/tiled/steel_dirty, +/area/maintenance/lower/atmos) +"rSb" = ( +/obj/structure/window/reinforced, +/obj/structure/closet/boxinggloves, +/obj/effect/decal/cleanable/dirt, +/turf/simulated/floor/plating, +/area/maintenance/lower/atmos) "rTC" = ( /obj/vehicle/train/trolley, /turf/simulated/floor/tiled/steel_dirty, /area/tether/surfacebase/mining_main/ore) +"rUQ" = ( +/obj/machinery/atmospherics/pipe/simple/visible/purple{ + dir = 4 + }, +/turf/simulated/floor/plating, +/area/engineering/atmos/processing) +"rWv" = ( +/obj/machinery/atmospherics/pipe/simple/visible/yellow{ + dir = 5 + }, +/obj/effect/floor_decal/borderfloor/corner{ + dir = 8 + }, +/obj/effect/floor_decal/corner/red/bordercorner{ + icon_state = "bordercolorcorner"; + dir = 8 + }, +/turf/simulated/floor/tiled, +/area/engineering/atmos) +"rXi" = ( +/obj/machinery/atmospherics/pipe/simple/visible/cyan{ + dir = 4 + }, +/obj/machinery/meter, +/turf/simulated/floor/tiled, +/area/engineering/atmos) +"rYL" = ( +/obj/effect/floor_decal/rust, +/obj/structure/railing{ + dir = 8 + }, +/obj/effect/decal/cleanable/dirt, +/turf/simulated/floor/plating, +/area/maintenance/lower/research) +"sbo" = ( +/obj/structure/railing, +/turf/simulated/floor/plating, +/area/maintenance/lower/research) +"scG" = ( +/obj/machinery/door/firedoor/glass, +/obj/machinery/atmospherics/pipe/simple/visible/green{ + dir = 4 + }, +/obj/structure/grille, +/obj/structure/window/reinforced/full, +/turf/simulated/floor/plating, +/area/engineering/atmos/processing) +"seb" = ( +/obj/structure/table, +/obj/effect/decal/cleanable/dirt, +/turf/simulated/floor/wood, +/area/crew_quarters/sleep/maintDorm4) +"sfi" = ( +/obj/effect/floor_decal/borderfloor{ + dir = 6 + }, +/obj/effect/floor_decal/corner/blue/border{ + dir = 6 + }, +/turf/simulated/floor/tiled, +/area/crew_quarters/visitor_lodging) +"sfF" = ( +/obj/machinery/atmospherics/pipe/manifold/visible/yellow, +/obj/machinery/meter, +/turf/simulated/floor/tiled, +/area/engineering/atmos) +"shl" = ( +/obj/structure/cable{ + icon_state = "0-8" + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/turf/simulated/floor/plating, +/area/vacant/vacant_site/east) +"shP" = ( +/obj/machinery/atmospherics/pipe/simple/visible/purple, +/obj/structure/cable/cyan{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/turf/simulated/floor/plating, +/area/engineering/atmos/processing) +"sjP" = ( +/obj/machinery/door/firedoor/glass, +/obj/structure/grille, +/obj/structure/window/reinforced/full, +/turf/simulated/floor/plating, +/area/engineering/atmos/processing) "slR" = ( /obj/machinery/portable_atmospherics/powered/scrubber/huge/stationary{ scrub_id = "atrium" }, /turf/simulated/floor/tiled/techmaint, /area/tether/surfacebase/public_garden_one) +"sma" = ( +/obj/effect/decal/cleanable/dirt, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, +/obj/structure/cable/green{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/turf/simulated/floor/plating, +/area/vacant/vacant_bar) +"soV" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/manifold/hidden/supply{ + dir = 1 + }, +/obj/structure/cable/cyan{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/turf/simulated/floor/tiled, +/area/engineering/atmos/processing) +"spi" = ( +/obj/effect/decal/cleanable/dirt, +/obj/random/action_figure, +/obj/random/action_figure, +/obj/random/action_figure, +/turf/simulated/floor/plating, +/area/maintenance/lower/atmos) +"spN" = ( +/obj/random/junk, +/obj/effect/decal/cleanable/dirt, +/turf/simulated/floor/plating, +/area/maintenance/lower/atmos) +"srm" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 10 + }, +/obj/effect/decal/cleanable/dirt, +/turf/simulated/floor/tiled/white, +/area/crew_quarters/sleep/maintDorm3) "svt" = ( /obj/effect/floor_decal/borderfloor{ dir = 1 @@ -28322,6 +30497,43 @@ }, /turf/simulated/floor/tiled, /area/tether/surfacebase/mining_main/lobby) +"sym" = ( +/obj/machinery/power/apc{ + cell_type = /obj/item/weapon/cell/apc; + dir = 8; + name = "west bump"; + pixel_x = -28 + }, +/obj/structure/cable/green{ + d2 = 4; + icon_state = "0-4" + }, +/obj/effect/decal/cleanable/dirt, +/turf/simulated/floor/plating, +/area/crew_quarters/sleep/maintDorm1) +"szK" = ( +/obj/effect/floor_decal/borderfloor{ + dir = 8 + }, +/obj/effect/floor_decal/corner/white/border{ + dir = 8 + }, +/obj/effect/floor_decal/borderfloor/corner2{ + dir = 8 + }, +/obj/effect/floor_decal/corner/white/bordercorner2{ + dir = 8 + }, +/obj/structure/closet/secure_closet/personal, +/obj/item/clothing/under/bathrobe, +/turf/simulated/floor/tiled, +/area/crew_quarters/showers) +"szR" = ( +/obj/machinery/atmospherics/pipe/simple/visible/purple{ + dir = 4 + }, +/turf/simulated/floor/tiled/techmaint, +/area/engineering/atmos/processing) "sCz" = ( /obj/effect/floor_decal/borderfloor{ dir = 1 @@ -28341,6 +30553,28 @@ }, /turf/simulated/floor/tiled, /area/hallway/lower/first_west) +"sDR" = ( +/obj/structure/disposalpipe/trunk{ + dir = 4 + }, +/obj/machinery/disposal, +/turf/simulated/floor/wood, +/area/crew_quarters/sleep/maintDorm4) +"sHl" = ( +/obj/machinery/alarm{ + dir = 4; + icon_state = "alarm0"; + pixel_x = -22; + pixel_y = 0 + }, +/obj/effect/decal/cleanable/dirt, +/turf/simulated/floor/plating, +/area/maintenance/lower/atmos) +"sHx" = ( +/obj/machinery/light/small, +/obj/effect/decal/cleanable/dirt, +/turf/simulated/floor/plating, +/area/vacant/vacant_bar) "sJs" = ( /obj/effect/floor_decal/borderfloor{ dir = 1; @@ -28358,6 +30592,19 @@ }, /turf/simulated/floor/tiled, /area/tether/surfacebase/public_garden) +"sMv" = ( +/obj/machinery/atmospherics/pipe/manifold/visible/red{ + icon_state = "map"; + dir = 1 + }, +/obj/machinery/meter, +/turf/simulated/floor/tiled, +/area/engineering/atmos) +"sQh" = ( +/obj/machinery/atmospherics/pipe/manifold/visible/black, +/obj/machinery/meter, +/turf/simulated/floor/tiled/techmaint, +/area/engineering/atmos) "sRi" = ( /obj/structure/disposalpipe/segment{ dir = 4 @@ -28370,28 +30617,44 @@ }, /turf/simulated/floor/tiled, /area/tether/surfacebase/atrium_one) -"tbZ" = ( -/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ - dir = 4 +"sSk" = ( +/obj/machinery/atmospherics/pipe/simple/visible/universal{ + name = "Air to Distro" }, +/turf/simulated/floor/tiled, +/area/engineering/atmos) +"sVp" = ( /obj/machinery/atmospherics/pipe/simple/hidden/supply{ dir = 4 }, -/obj/effect/floor_decal/borderfloor, -/obj/effect/floor_decal/corner/lightgrey/border, -/obj/effect/floor_decal/steeldecal/steel_decals7{ - dir = 8 +/obj/machinery/alarm{ + frequency = 1441; + pixel_y = 22 }, -/obj/effect/floor_decal/steeldecal/steel_decals7{ +/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{ dir = 1 }, -/obj/structure/extinguisher_cabinet{ - dir = 1; - icon_state = "extinguisher_closed"; - pixel_y = -32 +/obj/structure/cable/cyan{ + d1 = 4; + d2 = 8; + icon_state = "4-8" }, /turf/simulated/floor/tiled, -/area/hallway/lower/first_west) +/area/engineering/atmos/processing) +"sVz" = ( +/obj/machinery/atmospherics/pipe/simple/visible/yellow, +/obj/machinery/atmospherics/pipe/simple/visible/purple{ + dir = 4 + }, +/turf/simulated/floor/plating, +/area/engineering/atmos/processing) +"taQ" = ( +/obj/machinery/atmospherics/pipe/tank/oxygen{ + icon_state = "o2_map"; + dir = 1 + }, +/turf/simulated/floor/tiled/techmaint, +/area/engineering/atmos) "tec" = ( /obj/machinery/portable_atmospherics/hydroponics, /obj/machinery/atmospherics/portables_connector, @@ -28406,14 +30669,257 @@ }, /turf/simulated/floor/tiled, /area/rnd/xenobiology/xenoflora/lab_atmos) +"tfC" = ( +/obj/machinery/atmospherics/pipe/simple/visible/cyan, +/obj/effect/floor_decal/borderfloor{ + dir = 4 + }, +/obj/effect/floor_decal/corner/yellow/border{ + icon_state = "bordercolor"; + dir = 4 + }, +/turf/simulated/floor/tiled, +/area/engineering/atmos) +"thn" = ( +/obj/structure/table/woodentable, +/obj/effect/decal/cleanable/dirt, +/turf/simulated/floor/wood, +/area/crew_quarters/sleep/maintDorm2) "thL" = ( /obj/structure/sign/poster, /turf/simulated/wall, /area/tether/surfacebase/public_garden) +"tiP" = ( +/obj/machinery/atmospherics/pipe/manifold/visible/black, +/obj/effect/floor_decal/borderfloor{ + dir = 4 + }, +/obj/effect/floor_decal/corner/red/border{ + dir = 4 + }, +/turf/simulated/floor/tiled, +/area/engineering/atmos) +"tkX" = ( +/obj/structure/railing, +/obj/structure/railing{ + dir = 4 + }, +/obj/random/trash_pile, +/turf/simulated/floor/plating, +/area/maintenance/lower/research) +"tlS" = ( +/obj/machinery/atmospherics/pipe/manifold/visible/black{ + icon_state = "map"; + dir = 4 + }, +/obj/machinery/door/firedoor, +/obj/structure/grille, +/obj/structure/window/reinforced/full, +/obj/structure/window/reinforced, +/turf/simulated/floor/plating, +/area/engineering/atmos/processing) +"tmk" = ( +/obj/effect/decal/cleanable/dirt, +/turf/simulated/floor/wood, +/area/crew_quarters/sleep/maintDorm1) +"tmG" = ( +/obj/machinery/atmospherics/pipe/simple/visible/purple{ + dir = 5 + }, +/turf/simulated/floor/tiled/techmaint, +/area/engineering/atmos/processing) +"tmX" = ( +/obj/machinery/atmospherics/pipe/simple/visible/yellow, +/obj/machinery/atmospherics/pipe/simple/visible/green{ + dir = 4 + }, +/turf/simulated/floor/tiled, +/area/engineering/atmos) +"toz" = ( +/obj/machinery/shower{ + dir = 8; + icon_state = "shower"; + pixel_x = 0; + pixel_y = 0 + }, +/turf/simulated/floor/tiled/freezer, +/area/crew_quarters/showers) +"toK" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/structure/disposalpipe/segment{ + dir = 8; + icon_state = "pipe-c" + }, +/obj/machinery/light_switch{ + dir = 8; + pixel_x = 24; + pixel_y = 6 + }, +/obj/machinery/button/remote/airlock{ + id = "maintdorm3"; + name = "Room 3 Lock"; + pixel_x = 23; + pixel_y = -4; + specialfunctions = 4 + }, +/obj/structure/cable/green{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/turf/simulated/floor/wood, +/area/crew_quarters/sleep/maintDorm3) +"toY" = ( +/obj/machinery/atmospherics/omni/atmos_filter{ + name = "Phoron Filter"; + tag_east = 2; + tag_south = 6; + tag_west = 1 + }, +/turf/simulated/floor/tiled, +/area/engineering/atmos) +"ttd" = ( +/obj/machinery/atmospherics/pipe/manifold/visible/cyan, +/obj/machinery/meter, +/turf/simulated/floor/tiled/techmaint, +/area/engineering/atmos) +"ttM" = ( +/obj/effect/decal/cleanable/dirt, +/obj/structure/cable/green{ + d1 = 2; + d2 = 8; + icon_state = "2-8" + }, +/turf/simulated/floor/plating, +/area/maintenance/lower/atmos) +"tux" = ( +/obj/structure/catwalk, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 6 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 6 + }, +/turf/simulated/floor/plating, +/area/maintenance/lower/research) +"tvA" = ( +/obj/structure/table, +/obj/effect/decal/cleanable/dirt, +/turf/simulated/floor/wood, +/area/crew_quarters/sleep/maintDorm1) +"twt" = ( +/obj/machinery/atmospherics/pipe/simple/visible/red{ + dir = 4 + }, +/obj/machinery/atmospherics/binary/pump{ + dir = 1 + }, +/turf/simulated/floor/tiled, +/area/engineering/atmos) "tzX" = ( /obj/structure/grille, /turf/simulated/floor/tiled/techmaint, /area/tether/surfacebase/public_garden_one) +"tAD" = ( +/obj/machinery/atmospherics/pipe/manifold/visible/cyan{ + dir = 4 + }, +/turf/simulated/floor/tiled/techmaint, +/area/engineering/atmos) +"tBj" = ( +/obj/item/stack/material/steel, +/turf/simulated/floor/wood, +/area/crew_quarters/sleep/maintDorm2) +"tEh" = ( +/obj/structure/disposalpipe/junction{ + dir = 1; + icon_state = "pipe-j2" + }, +/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{ + icon_state = "map-scrubbers"; + dir = 4 + }, +/obj/machinery/atmospherics/pipe/manifold/hidden/supply{ + dir = 4 + }, +/obj/structure/cable/green{ + d1 = 1; + d2 = 8; + icon_state = "1-8" + }, +/obj/structure/cable/green{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/turf/simulated/floor/tiled/steel_dirty, +/area/maintenance/lower/atmos) +"tEU" = ( +/obj/machinery/atmospherics/unary/vent_scrubber/on{ + dir = 8 + }, +/obj/machinery/alarm{ + dir = 8; + pixel_x = 25; + pixel_y = 0 + }, +/turf/simulated/floor/tiled/white, +/area/crew_quarters/sleep/maintDorm3) +"tHv" = ( +/obj/machinery/atmospherics/pipe/simple/visible/yellow, +/obj/machinery/atmospherics/pipe/simple/visible/green{ + dir = 4 + }, +/obj/structure/cable/cyan{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/turf/simulated/floor/plating, +/area/engineering/atmos/processing) +"tIi" = ( +/obj/machinery/atmospherics/pipe/simple/visible/yellow, +/obj/effect/decal/cleanable/dirt, +/turf/simulated/floor/plating, +/area/engineering/atmos/processing) +"tIj" = ( +/obj/machinery/door/firedoor/glass, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/obj/structure/cable/cyan{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/turf/simulated/floor/tiled, +/area/engineering/atmos/processing) +"tJc" = ( +/obj/structure/flora/pottedplant/flower, +/turf/simulated/floor/tiled, +/area/tether/surfacebase/atrium_one) +"tKM" = ( +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/obj/effect/floor_decal/rust, +/obj/structure/cable/green{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/turf/simulated/floor/tiled/steel_dirty, +/area/maintenance/lower/atmos) "tLH" = ( /obj/effect/floor_decal/techfloor{ dir = 10 @@ -28439,6 +30945,16 @@ }, /turf/simulated/floor/plating, /area/tether/surfacebase/outside/outside1) +"tNq" = ( +/obj/machinery/atmospherics/portables_connector{ + dir = 8 + }, +/obj/effect/floor_decal/industrial/outline/yellow, +/obj/machinery/camera/network/engineering{ + dir = 1 + }, +/turf/simulated/floor/tiled/techmaint, +/area/engineering/atmos) "tNF" = ( /obj/structure/grille, /obj/structure/railing{ @@ -28461,6 +30977,11 @@ }, /turf/simulated/floor/tiled, /area/tether/surfacebase/public_garden) +"tPN" = ( +/obj/random/junk, +/obj/effect/decal/cleanable/dirt, +/turf/simulated/floor/plating, +/area/vacant/vacant_bar) "tXm" = ( /obj/effect/floor_decal/corner/lightgrey{ dir = 9 @@ -28491,6 +31012,115 @@ /obj/effect/floor_decal/techfloor/hole/right, /turf/simulated/floor/tiled/techfloor, /area/tether/surfacebase/public_garden_one) +"tXR" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/structure/railing, +/obj/structure/table/standard, +/obj/random/maintenance/engineering, +/obj/item/stack/cable_coil/random_belt, +/obj/effect/floor_decal/borderfloor{ + dir = 4 + }, +/obj/effect/floor_decal/corner/yellow/border{ + icon_state = "bordercolor"; + dir = 4 + }, +/obj/item/weapon/storage/box/lights/mixed, +/turf/simulated/floor/tiled/techmaint, +/area/engineering/atmos) +"ubX" = ( +/obj/machinery/atmospherics/unary/vent_scrubber/on, +/obj/machinery/light_construct{ + icon_state = "tube-construct-stage1"; + dir = 1 + }, +/obj/structure/table, +/turf/simulated/floor/wood, +/area/crew_quarters/sleep/maintDorm2) +"udl" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/turf/simulated/floor/wood, +/area/crew_quarters/sleep/maintDorm3) +"uep" = ( +/obj/structure/cable/green{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/turf/simulated/floor/plating, +/area/maintenance/lower/atmos) +"ugE" = ( +/obj/structure/cable/cyan{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/obj/structure/closet/fireaxecabinet{ + pixel_y = 32 + }, +/obj/structure/table/standard, +/obj/item/device/pipe_painter{ + pixel_x = 3; + pixel_y = 3 + }, +/obj/item/device/pipe_painter, +/turf/simulated/floor/tiled, +/area/engineering/atmos) +"uib" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, +/turf/simulated/floor/tiled/freezer, +/area/crew_quarters/showers) +"uiB" = ( +/obj/machinery/atmospherics/pipe/manifold4w/visible/black, +/turf/simulated/floor/tiled/techmaint, +/area/engineering/atmos) +"uiD" = ( +/obj/structure/cable/cyan{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/obj/structure/railing{ + icon_state = "railing0"; + dir = 1 + }, +/obj/machinery/atmospherics/binary/pump/on{ + name = "Ports to Waste" + }, +/turf/simulated/floor/tiled, +/area/engineering/atmos) +"ulG" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/effect/decal/cleanable/dirt, +/turf/simulated/floor/wood, +/area/crew_quarters/sleep/maintDorm1) +"uqC" = ( +/obj/machinery/atmospherics/pipe/manifold/visible/purple{ + dir = 1 + }, +/obj/machinery/meter, +/turf/simulated/floor/tiled/techmaint, +/area/engineering/atmos/processing) +"uux" = ( +/turf/simulated/floor/plating, +/area/crew_quarters/sleep/maintDorm4) +"uuF" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 9 + }, +/turf/simulated/floor/tiled/freezer, +/area/crew_quarters/showers) +"uvM" = ( +/obj/structure/table, +/obj/random/junk, +/obj/effect/decal/cleanable/dirt, +/turf/simulated/floor/plating, +/area/crew_quarters/sleep/maintDorm4) "uwI" = ( /obj/effect/floor_decal/borderfloor/corner{ dir = 1 @@ -28500,21 +31130,48 @@ }, /turf/simulated/floor/tiled, /area/tether/surfacebase/public_garden_one) -"uyO" = ( -/obj/structure/cable/green{ - d1 = 4; - d2 = 8; - icon_state = "4-8" - }, -/obj/structure/disposalpipe/segment{ - dir = 4 - }, +"uzQ" = ( +/obj/effect/floor_decal/borderfloor, +/obj/effect/floor_decal/corner/yellow/border, /turf/simulated/floor/tiled, -/area/hallway/lower/first_west) +/area/engineering/atmos) +"uBl" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 5 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 5 + }, +/obj/effect/decal/cleanable/dirt, +/turf/simulated/floor/plating, +/area/crew_quarters/sleep/maintDorm1) "uEZ" = ( /obj/machinery/hologram/holopad, /turf/simulated/floor/tiled, /area/tether/surfacebase/public_garden_one) +"uFp" = ( +/obj/machinery/atmospherics/unary/vent_scrubber/on, +/obj/effect/floor_decal/borderfloor{ + dir = 1; + icon_state = "borderfloor"; + pixel_y = 0 + }, +/obj/effect/floor_decal/corner/yellow/border{ + icon_state = "bordercolor"; + dir = 1 + }, +/obj/machinery/portable_atmospherics/powered/pump/filled, +/turf/simulated/floor/tiled/techmaint, +/area/engineering/atmos) +"uHJ" = ( +/obj/machinery/door/firedoor/glass, +/obj/machinery/atmospherics/pipe/simple/visible/yellow{ + dir = 4 + }, +/obj/structure/grille, +/obj/structure/window/reinforced/full, +/turf/simulated/floor/plating, +/area/engineering/atmos/processing) "uLU" = ( /obj/effect/floor_decal/borderfloor{ dir = 8 @@ -28528,6 +31185,56 @@ }, /turf/simulated/floor/tiled, /area/tether/surfacebase/public_garden) +"uOc" = ( +/obj/item/weapon/bone/skull/unathi, +/obj/effect/decal/cleanable/dirt, +/turf/simulated/floor/plating, +/area/maintenance/lower/research) +"uPe" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/structure/cable/cyan{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/turf/simulated/floor/tiled, +/area/engineering/atmos) +"uSZ" = ( +/obj/machinery/atmospherics/pipe/simple/visible/purple, +/obj/structure/cable/cyan{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/turf/simulated/floor/plating, +/area/engineering/atmos/intake) +"uZb" = ( +/obj/random/cash, +/turf/simulated/floor/plating, +/area/maintenance/lower/atmos) +"uZy" = ( +/obj/structure/cable/cyan{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/obj/machinery/newscaster{ + pixel_y = 30 + }, +/obj/structure/table/standard, +/obj/fiftyspawner/steel, +/obj/fiftyspawner/steel, +/obj/fiftyspawner/glass, +/turf/simulated/floor/tiled, +/area/engineering/atmos) +"vad" = ( +/obj/effect/floor_decal/steeldecal/steel_decals_central6{ + icon_state = "steel_decals_central6"; + dir = 4 + }, +/turf/simulated/floor/tiled, +/area/engineering/atmos) "vbd" = ( /obj/structure/cable/heavyduty{ icon_state = "1-4" @@ -28537,9 +31244,126 @@ }, /turf/simulated/floor/plating, /area/tether/surfacebase/outside/outside1) +"vbQ" = ( +/obj/structure/table, +/obj/item/frame, +/obj/effect/decal/cleanable/dirt, +/turf/simulated/floor/wood, +/area/crew_quarters/sleep/maintDorm2) +"vfu" = ( +/obj/machinery/atmospherics/pipe/manifold/visible/green{ + dir = 4 + }, +/turf/simulated/floor/tiled, +/area/engineering/atmos) +"vgd" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 5 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 6 + }, +/obj/machinery/camera/network/engineering{ + dir = 4 + }, +/turf/simulated/floor/tiled, +/area/engineering/atmos) +"vgW" = ( +/obj/machinery/door/airlock/maintenance/engi{ + name = "Atmospherics"; + req_access = list(24) + }, +/turf/simulated/floor/plating, +/area/engineering/atmos/processing) +"vhW" = ( +/obj/machinery/atmospherics/unary/vent_scrubber/on{ + dir = 8 + }, +/obj/machinery/alarm{ + dir = 8; + pixel_x = 25; + pixel_y = 0 + }, +/obj/effect/decal/cleanable/dirt, +/turf/simulated/floor/plating, +/area/crew_quarters/sleep/maintDorm1) +"vjX" = ( +/obj/effect/decal/cleanable/dirt, +/turf/simulated/floor/plating, +/area/engineering/atmos/processing) +"vko" = ( +/obj/machinery/smartfridge, +/turf/simulated/floor/plating, +/area/vacant/vacant_bar) "vkK" = ( /turf/simulated/wall, /area/maintenance/lower/public_garden_maintenence) +"vlP" = ( +/obj/machinery/atmospherics/pipe/simple/visible/yellow{ + dir = 4 + }, +/obj/structure/cable/cyan{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/turf/simulated/floor/tiled, +/area/engineering/atmos) +"vlW" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/structure/cable/green{ + d1 = 1; + d2 = 8; + icon_state = "1-8" + }, +/obj/effect/decal/cleanable/dirt, +/turf/simulated/floor/wood, +/area/crew_quarters/sleep/maintDorm3) +"vsE" = ( +/obj/effect/floor_decal/borderfloor{ + dir = 9 + }, +/obj/effect/floor_decal/corner/white/border{ + icon_state = "bordercolor"; + dir = 9 + }, +/obj/structure/undies_wardrobe, +/obj/machinery/camera/network/civilian, +/turf/simulated/floor/tiled, +/area/crew_quarters/showers) +"vtZ" = ( +/obj/machinery/atmospherics/pipe/manifold4w/visible/black, +/obj/machinery/meter, +/turf/simulated/floor/tiled/techmaint, +/area/engineering/atmos) +"vvB" = ( +/obj/machinery/door/window/southleft, +/obj/effect/decal/cleanable/vomit, +/turf/simulated/floor/plating, +/area/maintenance/lower/atmos) +"vvE" = ( +/obj/machinery/atmospherics/binary/pump{ + dir = 1 + }, +/obj/effect/floor_decal/borderfloor/corner{ + dir = 8 + }, +/obj/effect/floor_decal/corner/yellow/bordercorner{ + icon_state = "bordercolorcorner"; + dir = 8 + }, +/obj/machinery/atmospherics/pipe/simple/visible/red{ + dir = 4 + }, +/turf/simulated/floor/tiled, +/area/engineering/atmos) +"vyB" = ( +/obj/machinery/atmospherics/pipe/simple/visible/universal{ + name = "Waste to Filter" + }, +/turf/simulated/floor/tiled, +/area/engineering/atmos) "vzE" = ( /obj/effect/floor_decal/techfloor{ dir = 6 @@ -28550,6 +31374,41 @@ /obj/structure/closet/crate, /turf/simulated/floor/tiled/techfloor, /area/tether/surfacebase/public_garden_one) +"vAU" = ( +/obj/machinery/atmospherics/pipe/simple/visible/red{ + dir = 4 + }, +/obj/machinery/meter, +/turf/simulated/floor/tiled, +/area/engineering/atmos) +"vBq" = ( +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/obj/machinery/light/small{ + icon_state = "bulb1"; + dir = 1 + }, +/obj/structure/cable/green{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/obj/effect/decal/cleanable/dirt, +/turf/simulated/floor/plating, +/area/maintenance/lower/atmos) +"vBY" = ( +/obj/structure/railing{ + dir = 8 + }, +/turf/simulated/floor/tiled, +/area/engineering/atmos) "vCB" = ( /obj/structure/cable/green{ d1 = 1; @@ -28558,6 +31417,24 @@ }, /turf/simulated/floor/tiled/steel_dirty/virgo3b, /area/tether/surfacebase/mining_main/external) +"vCV" = ( +/obj/machinery/door/firedoor, +/obj/machinery/atmospherics/pipe/simple/visible/yellow{ + dir = 4 + }, +/obj/structure/grille, +/obj/structure/window/reinforced/full, +/obj/structure/window/reinforced{ + dir = 8 + }, +/turf/simulated/floor/plating, +/area/engineering/atmos/processing) +"vES" = ( +/obj/machinery/atmospherics/unary/vent_pump/on{ + dir = 1 + }, +/turf/simulated/floor/wood, +/area/crew_quarters/sleep/maintDorm1) "vHM" = ( /obj/item/device/radio/intercom{ dir = 8; @@ -28592,6 +31469,48 @@ }, /turf/simulated/floor/tiled, /area/tether/surfacebase/public_garden) +"vJa" = ( +/turf/simulated/floor/tiled/techmaint, +/area/engineering/atmos) +"vLN" = ( +/obj/machinery/atmospherics/pipe/manifold/visible/black{ + dir = 1 + }, +/obj/machinery/door/firedoor, +/obj/structure/grille, +/obj/structure/window/reinforced/full, +/obj/structure/window/reinforced, +/turf/simulated/floor/plating, +/area/engineering/atmos/processing) +"vLV" = ( +/obj/effect/floor_decal/rust, +/obj/machinery/atmospherics/unary/vent_pump/on{ + dir = 1 + }, +/obj/machinery/light_construct/small, +/turf/simulated/floor/tiled/white, +/area/crew_quarters/sleep/maintDorm2) +"vMa" = ( +/obj/effect/decal/cleanable/dirt, +/turf/simulated/floor/wood, +/area/crew_quarters/sleep/maintDorm4) +"vMY" = ( +/obj/machinery/alarm{ + dir = 8; + pixel_x = 25; + pixel_y = 0 + }, +/obj/effect/decal/cleanable/dirt, +/turf/simulated/floor/plating, +/area/crew_quarters/sleep/maintDorm3) +"vNJ" = ( +/obj/item/device/radio/intercom{ + dir = 1; + pixel_y = 24; + req_access = list() + }, +/turf/simulated/floor/tiled, +/area/engineering/atmos) "vNR" = ( /obj/structure/grille, /obj/structure/railing{ @@ -28612,6 +31531,40 @@ }, /turf/simulated/floor/tiled, /area/tether/surfacebase/public_garden_one) +"vPb" = ( +/obj/machinery/atmospherics/unary/vent_scrubber/on{ + dir = 1 + }, +/obj/machinery/light, +/turf/simulated/floor/tiled/freezer, +/area/crew_quarters/showers) +"vTt" = ( +/obj/machinery/door/firedoor/glass, +/obj/machinery/door/airlock{ + name = "Restroom" + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, +/turf/simulated/floor/tiled/white, +/area/crew_quarters/sleep/maintDorm3) +"vVa" = ( +/obj/structure/table/steel, +/obj/item/weapon/reagent_containers/food/drinks/smallmilk, +/turf/simulated/floor/plating, +/area/vacant/vacant_bar) +"vXn" = ( +/obj/machinery/atmospherics/pipe/manifold/visible/purple, +/turf/simulated/floor/tiled, +/area/engineering/atmos/processing) +"vYA" = ( +/obj/machinery/atmospherics/portables_connector, +/obj/effect/floor_decal/industrial/outline/yellow, +/turf/simulated/floor/tiled/techmaint, +/area/engineering/atmos/processing) "vZw" = ( /obj/machinery/door/firedoor/glass, /obj/effect/floor_decal/steeldecal/steel_decals_central1{ @@ -28621,6 +31574,51 @@ dir = 1 }, /area/tether/surfacebase/public_garden_one) +"waA" = ( +/obj/machinery/atmospherics/pipe/manifold/visible/green{ + dir = 1 + }, +/obj/effect/floor_decal/borderfloor/corner, +/obj/effect/floor_decal/corner/yellow/bordercorner, +/turf/simulated/floor/tiled, +/area/engineering/atmos) +"weg" = ( +/obj/structure/railing{ + dir = 8 + }, +/obj/structure/railing, +/obj/effect/decal/cleanable/dirt, +/turf/simulated/floor/plating, +/area/maintenance/lower/research) +"wkZ" = ( +/obj/structure/ladder/up, +/turf/simulated/floor/plating, +/area/maintenance/lower/atmos) +"wle" = ( +/obj/effect/decal/cleanable/dirt, +/turf/simulated/floor/tiled/steel_dirty, +/area/maintenance/lower/atmos) +"wof" = ( +/obj/machinery/atmospherics/pipe/manifold/visible/yellow{ + dir = 4 + }, +/obj/effect/decal/cleanable/dirt, +/turf/simulated/floor/plating, +/area/engineering/atmos/processing) +"wtU" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/obj/item/weapon/stool, +/turf/simulated/floor/plating, +/area/vacant/vacant_bar) +"wxS" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 9 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 10 + }, +/turf/simulated/floor/wood, +/area/crew_quarters/sleep/maintDorm1) "wzH" = ( /obj/structure/railing{ dir = 4 @@ -28628,6 +31626,20 @@ /obj/structure/table/rack, /turf/simulated/floor/tiled/techfloor, /area/maintenance/lower/public_garden_maintenence) +"wDZ" = ( +/obj/machinery/portable_atmospherics/canister/carbon_dioxide, +/obj/effect/floor_decal/industrial/outline/yellow, +/turf/simulated/floor/tiled/techmaint, +/area/engineering/atmos) +"wEU" = ( +/obj/structure/closet, +/obj/random/maintenance/clean, +/obj/random/maintenance/clean, +/obj/random/junk, +/obj/random/maintenance/engineering, +/obj/random/maintenance/engineering, +/turf/simulated/floor/plating, +/area/maintenance/lower/atmos) "wFT" = ( /turf/simulated/mineral, /area/maintenance/lower/public_garden_maintenence) @@ -28637,6 +31649,131 @@ /obj/random/maintenance/research, /turf/simulated/floor/tiled/techfloor, /area/maintenance/lower/public_garden_maintenence) +"wJy" = ( +/obj/machinery/atmospherics/pipe/manifold/visible/green{ + dir = 1 + }, +/turf/simulated/floor/tiled, +/area/engineering/atmos) +"wKH" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 6 + }, +/turf/simulated/floor/tiled/freezer, +/area/crew_quarters/showers) +"wLs" = ( +/obj/machinery/shower{ + dir = 1 + }, +/obj/structure/curtain/open/shower, +/obj/effect/floor_decal/steeldecal/steel_decals5{ + dir = 1 + }, +/obj/effect/floor_decal/steeldecal/steel_decals10{ + dir = 9 + }, +/obj/effect/floor_decal/steeldecal/steel_decals10{ + dir = 10 + }, +/turf/simulated/floor/tiled, +/area/crew_quarters/sleep/maintDorm2) +"wLU" = ( +/obj/machinery/atmospherics/unary/heat_exchanger{ + dir = 8 + }, +/turf/simulated/floor/tiled, +/area/engineering/atmos) +"wOg" = ( +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/obj/structure/cable/green{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/obj/effect/decal/cleanable/dirt, +/turf/simulated/floor/tiled/steel_dirty, +/area/maintenance/lower/atmos) +"wOA" = ( +/obj/machinery/atmospherics/pipe/manifold/visible/black{ + dir = 4 + }, +/turf/simulated/floor/tiled/techmaint, +/area/engineering/atmos) +"wPv" = ( +/obj/machinery/atmospherics/pipe/simple/visible/red, +/turf/simulated/floor/tiled, +/area/engineering/atmos) +"wQs" = ( +/obj/machinery/light{ + dir = 4 + }, +/turf/simulated/floor/tiled/techmaint, +/area/engineering/atmos) +"wRw" = ( +/obj/structure/railing, +/obj/structure/table/rack, +/obj/item/clothing/mask/gas, +/obj/item/clothing/mask/gas, +/obj/item/clothing/mask/gas, +/obj/item/weapon/tank/emergency, +/obj/item/weapon/tank/emergency, +/obj/item/weapon/tank/emergency, +/obj/effect/decal/cleanable/dirt, +/turf/simulated/floor/plating, +/area/maintenance/lower/research) +"wRT" = ( +/obj/effect/decal/cleanable/dirt, +/obj/random/junk, +/obj/machinery/light/small{ + dir = 8 + }, +/turf/simulated/floor/plating, +/area/maintenance/lower/research) +"wRV" = ( +/obj/machinery/atmospherics/unary/vent_pump/on{ + dir = 1 + }, +/turf/simulated/floor/wood, +/area/crew_quarters/sleep/maintDorm2) +"wTR" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 5 + }, +/turf/simulated/floor/tiled, +/area/engineering/atmos) +"wUd" = ( +/obj/machinery/atmospherics/pipe/manifold/visible/yellow{ + dir = 8 + }, +/obj/machinery/meter, +/turf/simulated/floor/tiled, +/area/engineering/atmos) +"wUq" = ( +/obj/machinery/atmospherics/pipe/manifold/visible/cyan{ + dir = 1 + }, +/obj/effect/floor_decal/borderfloor{ + dir = 4 + }, +/obj/effect/floor_decal/corner/white/border{ + dir = 4 + }, +/turf/simulated/floor/tiled, +/area/engineering/atmos) +"wUM" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, +/turf/simulated/floor/tiled, +/area/engineering/atmos/processing) "wUS" = ( /obj/machinery/light{ dir = 8 @@ -28645,9 +31782,175 @@ name = "Holodeck Projector Floor" }, /area/crew_quarters/sleep/Dorm_5/holo) +"wWi" = ( +/obj/effect/floor_decal/borderfloor{ + dir = 4 + }, +/obj/effect/floor_decal/corner/blue/border{ + dir = 4 + }, +/obj/structure/table/standard, +/obj/item/clothing/head/soft/purple, +/turf/simulated/floor/tiled, +/area/crew_quarters/showers) +"wXS" = ( +/obj/machinery/door/firedoor/glass, +/obj/machinery/door/airlock{ + name = "Bar Backroom"; + welded = 1 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/obj/structure/cable/green{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/turf/simulated/floor/plating, +/area/vacant/vacant_bar) "wYi" = ( /turf/simulated/floor/plating, /area/maintenance/lower/public_garden_maintenence) +"wYY" = ( +/obj/structure/bed/chair/comfy/black{ + dir = 8 + }, +/turf/simulated/floor/plating, +/area/crew_quarters/sleep/maintDorm1) +"xac" = ( +/obj/machinery/atmospherics/pipe/manifold/visible/yellow{ + dir = 8 + }, +/obj/effect/floor_decal/borderfloor{ + dir = 8 + }, +/obj/effect/floor_decal/corner/yellow/border{ + icon_state = "bordercolor"; + dir = 8 + }, +/turf/simulated/floor/tiled, +/area/engineering/atmos) +"xdG" = ( +/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers, +/obj/machinery/atmospherics/pipe/manifold/hidden/supply{ + dir = 1 + }, +/obj/structure/cable/green{ + d1 = 2; + d2 = 4; + icon_state = "2-4" + }, +/turf/simulated/floor/tiled, +/area/crew_quarters/showers) +"xfe" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/turf/simulated/floor/plating, +/area/crew_quarters/sleep/maintDorm3) +"xgc" = ( +/obj/machinery/atmospherics/binary/pump{ + dir = 1 + }, +/turf/simulated/floor/tiled/techmaint, +/area/engineering/atmos) +"xiL" = ( +/obj/machinery/alarm{ + frequency = 1441; + pixel_y = 22 + }, +/turf/simulated/floor/plating, +/area/maintenance/lower/atmos) +"xlv" = ( +/obj/machinery/door/firedoor, +/obj/machinery/atmospherics/pipe/simple/visible/purple{ + dir = 4 + }, +/obj/structure/grille, +/obj/structure/window/reinforced/full, +/obj/structure/window/reinforced{ + dir = 8 + }, +/obj/structure/cable/cyan{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/turf/simulated/floor/plating, +/area/engineering/atmos/processing) +"xoJ" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/effect/floor_decal/steeldecal/steel_decals_central6{ + pixel_y = 9 + }, +/turf/simulated/floor/tiled, +/area/engineering/atmos) +"xve" = ( +/obj/machinery/atmospherics/pipe/simple/visible/scrubbers{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/visible/supply{ + dir = 4 + }, +/obj/structure/catwalk, +/obj/effect/floor_decal/rust, +/obj/effect/decal/cleanable/dirt, +/turf/simulated/floor/plating, +/area/maintenance/lower/research) +"xyM" = ( +/obj/machinery/atmospherics/pipe/manifold4w/visible/cyan, +/turf/simulated/floor/tiled/techmaint, +/area/engineering/atmos) +"xCN" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/turf/simulated/floor/tiled/freezer, +/area/crew_quarters/showers) +"xCP" = ( +/obj/machinery/shower{ + dir = 1 + }, +/obj/structure/curtain/open/shower, +/turf/simulated/floor/plating, +/area/crew_quarters/sleep/maintDorm1) +"xDD" = ( +/obj/effect/decal/cleanable/dirt, +/obj/structure/cable/green{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/turf/simulated/floor/plating, +/area/maintenance/lower/atmos) +"xDX" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/obj/machinery/door/firedoor/glass, +/obj/machinery/door/airlock{ + name = "Unisex Showers" + }, +/turf/simulated/floor/tiled/freezer, +/area/crew_quarters/showers) +"xEo" = ( +/obj/effect/floor_decal/borderfloor{ + dir = 10 + }, +/obj/effect/floor_decal/corner/white/border{ + icon_state = "bordercolor"; + dir = 10 + }, +/obj/structure/closet/secure_closet/personal, +/obj/item/clothing/under/bathrobe, +/turf/simulated/floor/tiled, +/area/crew_quarters/showers) "xED" = ( /obj/structure/cable{ d1 = 2; @@ -28672,6 +31975,33 @@ }, /turf/simulated/floor/tiled, /area/tether/surfacebase/public_garden) +"xFo" = ( +/obj/structure/toilet{ + pixel_y = 10 + }, +/turf/simulated/floor/plating, +/area/crew_quarters/sleep/maintDorm1) +"xJz" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/structure/catwalk, +/obj/machinery/door/airlock/maintenance/engi{ + name = "Atmospherics"; + req_access = list(24) + }, +/turf/simulated/floor/plating, +/area/engineering/atmos) +"xKT" = ( +/obj/machinery/atmospherics/binary/pump{ + dir = 8 + }, +/turf/simulated/floor/tiled, +/area/engineering/atmos) +"xQJ" = ( +/obj/effect/decal/cleanable/blood, +/obj/effect/decal/cleanable/dirt, +/turf/simulated/floor/plating, +/area/maintenance/lower/atmos) "xRo" = ( /obj/structure/catwalk, /obj/machinery/light/small{ @@ -28679,6 +32009,25 @@ }, /turf/simulated/floor/plating, /area/maintenance/lower/public_garden_maintenence) +"xUk" = ( +/obj/machinery/atmospherics/pipe/manifold/visible/green{ + icon_state = "map"; + dir = 4 + }, +/turf/simulated/floor/tiled/techmaint, +/area/engineering/atmos/processing) +"xUl" = ( +/obj/machinery/atmospherics/pipe/tank/nitrogen{ + icon_state = "n2_map"; + dir = 1 + }, +/turf/simulated/floor/tiled/techmaint, +/area/engineering/atmos) +"xVj" = ( +/obj/machinery/atmospherics/pipe/manifold/visible/green, +/obj/machinery/meter, +/turf/simulated/floor/tiled/techmaint, +/area/engineering/atmos/processing) "xWa" = ( /obj/machinery/atmospherics/pipe/simple/hidden/supply{ dir = 9 @@ -28688,6 +32037,62 @@ /obj/effect/floor_decal/corner/lightgrey/bordercorner, /turf/simulated/floor/tiled, /area/tether/surfacebase/public_garden_one) +"xWo" = ( +/obj/structure/cable/cyan{ + d2 = 8; + icon_state = "0-8" + }, +/obj/structure/cable/cyan{ + d2 = 4; + icon_state = "0-4" + }, +/obj/machinery/power/smes/buildable{ + charge = 2e+006; + RCon_tag = "Substation - Atmospherics" + }, +/turf/simulated/floor/plating, +/area/maintenance/substation/surface_atmos) +"xXP" = ( +/obj/machinery/atmospherics/pipe/manifold4w/hidden/supply, +/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{ + dir = 8 + }, +/turf/simulated/floor/tiled, +/area/engineering/atmos) +"ycb" = ( +/obj/machinery/alarm{ + frequency = 1441; + pixel_y = 22 + }, +/turf/simulated/floor/tiled, +/area/tether/surfacebase/atrium_one) +"ydd" = ( +/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{ + dir = 8 + }, +/obj/machinery/atmospherics/pipe/manifold/hidden/supply{ + dir = 8 + }, +/obj/structure/cable/green{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/obj/effect/decal/cleanable/dirt, +/turf/simulated/floor/wood, +/area/crew_quarters/sleep/maintDorm3) +"yeV" = ( +/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{ + dir = 1 + }, +/obj/machinery/atmospherics/pipe/manifold/hidden/supply{ + dir = 1 + }, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/turf/simulated/floor/tiled, +/area/tether/surfacebase/atrium_one) "yiG" = ( /obj/structure/cable{ icon_state = "4-8" @@ -28710,6 +32115,20 @@ /obj/effect/floor_decal/corner/lightgrey/border, /turf/simulated/floor/tiled, /area/tether/surfacebase/public_garden) +"yka" = ( +/obj/structure/table/steel, +/obj/item/frame, +/turf/simulated/floor/plating, +/area/vacant/vacant_bar) +"ylA" = ( +/obj/effect/floor_decal/borderfloor{ + dir = 4 + }, +/obj/effect/floor_decal/corner/blue/border{ + dir = 4 + }, +/turf/simulated/floor/tiled, +/area/engineering/atmos) (1,1,1) = {" aaa @@ -31756,10 +35175,10 @@ aah aah aah aah -amU -amU -amU -amU +aah +aah +aah +aah axf arG arG @@ -31894,14 +35313,14 @@ aah aah aah aah -amU -amU -amU -amU -amU -aul -avd -avY +aah +aah +aah +aah +aah +aah +aah +aah axf bhk azp @@ -32031,19 +35450,19 @@ akb aah aah aah -amU -amU -amU -amU -amU -amU -arq -aUE -arq -amU -aum -ars -bed +aah +aah +aah +aah +aah +aah +aah +aah +aah +aah +aah +aah +aah axf bhs azr @@ -32173,19 +35592,19 @@ akb aah aah aah -amU -aKK -aoE -ars -aPq -amU -arp -arp -arp -amU -asM -ars -bdY +aah +aah +aah +aah +aah +aah +aah +aah +aah +aah +aah +aah +aah axf bhp azr @@ -32312,22 +35731,22 @@ akc akH akH alZ -amD -amU -amU -amU -amU -aoF -aoF -aPx -aRJ -aTL -aTL -aWR -aYQ -aun -aun -awb +aci +aah +aah +aah +aah +aah +aah +aah +aah +aah +aah +aah +aah +aah +aah +aah axf bhp azr @@ -32455,23 +35874,23 @@ aCb aDD aiy amD -aGn -aHg -aIH -aoh -aoG -aoG -aPv -aqI -ars -arZ -aWP -ars -ars -ars -awc +aah +aah +aah +aah +aah +aah +aah +aah +aah +aah +aah +aah +aah +aah +aah axf -bht +abB azr aBv azU @@ -32597,21 +36016,21 @@ aCe alv aEn amD -amW -aHs -aIO -aoi -aoH -aMJ -aPN -aqJ -art -asa -aWP -atx -auk -aoF -aoF +aah +aah +aah +aah +aah +aah +aah +aah +aah +aah +aah +aah +aah +aah +aah axf bhp azr @@ -32739,21 +36158,21 @@ aCd aDE aEl amD -amX -aHm -aIK -aKN -aLs -aMH -aPC -aqK -ars -asb -aWP -asL -atw -avf -axh +aah +aah +aah +aah +aah +aah +aah +aah +aah +aah +aah +aah +aah +aah +aah axf bhw azr @@ -32881,21 +36300,21 @@ aCg aDF aiy amD -amU -amU -amU -amU -aoJ -apo -aQm -aqL -aru -asc -aWP -aty -ave -bcK -axi +aah +aah +aah +aah +aah +aah +aah +aah +agv +agv +agv +agv +agv +agv +agv axf bhy azr @@ -33023,23 +36442,23 @@ aCf aly amc amE -aGp -aHt -aIR -aKO -aLt -aMM -aPQ -aqM -arv -asd -aWP -aYR -amU -amU -amU +aah +aah +aah +aah +aah +aah +aah +aah +agv +agL +agW +ahH +aib +aip +aiJ axf -bhp +aaT azr bkd bmv @@ -33165,21 +36584,21 @@ aCi alz aEo amE -amZ -ant -aJg -aol -aoL -aMJ -aQD -aqN -arw -ase -aWP -atA -auo -auo -awe +aah +aah +aah +aah +aah +aah +aah +aah +agv +agO +agZ +ahO +aij +ais +aiK axf bhp azr @@ -33307,21 +36726,21 @@ aCh aDG agU amE -ana -aHu -aJc -aom -aoM -aoM -aQC -aqO -aTQ -ase -aXb -aYZ -baZ -bcL -awf +aah +aah +aah +aah +aah +aah +aah +aah +agv +agR +ahf +ahP +ahP +aiH +aiL axf bhy azr @@ -33449,21 +36868,21 @@ aCk aDO aEr amE -amU -amU -amU -amU -amU -amU -amU -amU -amU -asf -aXd -apl -bbf -bcQ -awg +acs +acs +acs +acs +ary +ary +ary +ary +ary +agV +ahh +ahQ +ain +aiI +aiM axf bhp azr @@ -33595,17 +37014,17 @@ aGx aHw aJj amF -aoN -aMR +agk +agp aqe aqe ary -asg -aXc -atC -amU -amU -amU +agv +aht +agv +agv +agv +agv axf bhF azr @@ -33741,7 +37160,7 @@ aoO apr apr aSh -aTR +agC aUH aXD atD @@ -33882,7 +37301,7 @@ amF aoP aps aps -aSa +agw arA asi aXj @@ -34022,20 +37441,20 @@ aHz aJr amF aoQ -apt -aqf +ags +agt aSt arA -asj +abg asU -atF +ahT arG bcW auu auu auu auu -bkM +aiU aAS aAS aAS @@ -34435,7 +37854,7 @@ aah aah aah ahl -ahH +afz aiE ajq ako @@ -34453,12 +37872,12 @@ ako ako ako ako -asX +acJ atI arG aVu auu -bfP +ajd ayv azv axp @@ -34469,7 +37888,7 @@ aCX auu bvO byA -bBl +acu bEf bFS bHV @@ -34873,7 +38292,7 @@ akV anB akX aor -aLA +akX apw aqj aSP @@ -34914,7 +38333,7 @@ aad aad aad aad -aLH +aad aad aad aad @@ -35026,7 +38445,7 @@ atL auu auu auu -axn +aiR ayw azx aAh @@ -35034,7 +38453,7 @@ aAh aBG bqs brE -bup +ajc bwg aEK atG @@ -35056,7 +38475,7 @@ aad aad aad aad -aLH +aad aad aad aad @@ -35198,8 +38617,8 @@ aad aad aad aad -aLH -aLH +aad +aad aad aad aad @@ -35341,7 +38760,7 @@ aad aad aad aad -aLH +aad aad aad aad @@ -35420,7 +38839,7 @@ wIm thL kuC xED -btx +aeT qGm aYz dYl @@ -35430,8 +38849,8 @@ mUG nCB hqU lWW -awW -aza +acT +adj aBc aCw aCw @@ -35483,7 +38902,7 @@ aad aad aad aad -aLH +aad aad aad aad @@ -35572,8 +38991,8 @@ gXh gXh ahl sCz -uyO -ajx +awH +adk akq ala ala @@ -35625,8 +39044,8 @@ aad aad aad aad -aLH -aLH +aad +aad aad aad aad @@ -35714,8 +39133,8 @@ aah aah ahl avN -uyO -ajy +awH +adu ahl alb akX @@ -35741,7 +39160,7 @@ avr atf auu auu -boG +aiW auu aAS aAS @@ -35767,8 +39186,8 @@ aad aad aad aad -aLH -aLH +aad +aad aad aad aad @@ -35856,8 +39275,8 @@ aah aah ahl ahL -axb -ajz +acV +adF ahl akV akV @@ -35909,8 +39328,8 @@ aad aad aad aad -aLH -aLH +aad +aad aad aad aad @@ -35998,8 +39417,8 @@ aah aah ahl ahN -eVp -azj +ada +adH ahl akV akV @@ -36043,26 +39462,26 @@ aIh aFQ aFn aah -aJb -aJb -aJb -aJb -aJb -aKj -aJb -aJb -ccN -cdf -aJb -aJb -aKj -aJb -aJb -aJb -aJb -aJb -aJb -aKj +aah +aah +aah +aad +aad +aad +aad +aad +aad +aad +aad +aad +aad +aad +aad +aad +aad +aad +aad +aad aad aad aad @@ -36140,8 +39559,8 @@ aah aah ahl ahL -uyO -tbZ +awH +adI ahl akV akV @@ -36185,26 +39604,26 @@ aFn aFn aFn aah -aJb -aJs -aJs -aJR -aJR -aJR -aJR -aJR -ccM -ccM -aJR -aJR -aJR -aJR -aJR -aJR -aJR -aJR -aJR -aJb +aah +aah +aah +aad +aad +aad +aad +aad +aad +aad +aad +aad +aad +aad +aad +aad +aad +aad +aad +aad aad aad aad @@ -36282,8 +39701,8 @@ aah aah ahl ahL -uyO -ajy +awH +adu ahl akV akV @@ -36327,26 +39746,26 @@ aFn aah aah aah -aJb -aJs -aJs -aJR -aJR -aJR -aJR -aJR -aJR -ccM -ccM -aJR -aJR -aJR -aJR -aJR -aJR -aJR -aJR -aJb +aah +aah +aah +aad +aad +aad +aad +aad +aad +aad +aad +aad +aad +aad +aad +aad +aad +aad +aad +aad aad aad aad @@ -36424,8 +39843,8 @@ aah aah ahl ePE -uyO -ajy +awH +adu ahl akV akV @@ -36463,32 +39882,32 @@ aah aah aah aah -aHK -aHK -aHK -aHK -aEU aah -aJb -aJs -aJs -aJs -aJs -aJs -aJs -aJs -aJR -aJR -ccM -ccM -ccM -aJR -aJR -aJR -aJR -aJR -aJR -aJb +aah +aah +aah +aah +aah +aIv +aIv +aIv +aIv +aIv +aIv +aIv +aIv +aIv +aIv +aJt +aJt +aJt +aJt +iZM +aJt +aJt +aJt +aJt +aJt aad aad aad @@ -36566,8 +39985,8 @@ aah aah ahl ahR -uyO -ajy +awH +adu ahl akV akV @@ -36603,35 +40022,35 @@ atG aEU aEU aEU -aEU -aEU -aEU -aHK -aHK -aIs -aEU aah -aJb +aah +aah +aah +aah +aah +aah +aah +aIv +aJs +aJs +nKO +odM +pQi aJs aJs aJs -aJs -aJs -aJs -aJs -aJR -aJR -aJR -aJR -ccM -aJR -aJR -aJR -aJR -aJR -aJR -aJb -aad +aIv +aJt +aJJ +aJS +aJJ +aJS +aJJ +aJS +aJJ +aJS +aJt +aJt aad aad aad @@ -36708,8 +40127,8 @@ aah aah ahl ahL -uyO -ajy +awH +adu ahl akV akV @@ -36731,7 +40150,7 @@ auz avw beQ bgd -ayG +abD atf blx aAZ @@ -36743,37 +40162,37 @@ bwQ byX bBP bEG -bGh -bEG -bEG -bMv -aEU -aHK -aHL -aIt +aFX aEU aah -aJb +aah +aah +aah +aah +aah +aah +aah +aIv aJs -aJs -aJs -aJs -aJs -aJs -aJs -aJs -aJs -aJs -aJR +qoc +aJk +fQL +aJk +odO +tmG +aJk +oTM +bfC +bVp ccM -aJR -aJR -aJR -aJR -aJR -aJR -aJb -aad +ccM +ccM +ccM +ccM +ccM +ccM +aJS +aJt aad aad aad @@ -36850,8 +40269,8 @@ aah aah ahl ahK -axk -ajB +add +adJ ahl akV akV @@ -36884,38 +40303,38 @@ buC bxc aGN atG +rhY +dAV aEU aEU aEU aEU -aHn -aHL -aHW -aHW -aHW aEU -aah -aJb +aEU +aEU +aEU +aEU +aIv aJs -aJs -aJs -aJs -aJs -aJs -aJs -aJs -aJs -aJs -aJR -ccM -aJR -aJR -aJR -aJR -aJR -aJR -aJb -aad +cmq +eAn +kpk +pMj +odO +qZk +npt +vLN +bfC +aJW +aJK +aJW +aJK +aJW +aJK +aJW +aKl +aKl +aJt aad aad aad @@ -36992,8 +40411,8 @@ aah aah ahl ahL -uyO -ajy +awH +adu ahl akV akV @@ -37026,38 +40445,38 @@ atG atG atG atG -aah -aah -aah -aEU -aEU -aEU +rhY +rCO +nOq +ijo +hlk +kHg aHW -aIi -aHL -aEU -aah -aJb -aJs -aJs -aJs -aJs -aJs -aJs -aJs -aJs -aJR -aJR -aJR -ccM -aJR -aJR -aJR -aJR -aJR -aJR -aKj -aad +kHg +nOq +nOq +nOq +pmE +bsB +lJh +iVI +kpk +dOc +vYA +prt +oso +vLN +bfC +aJS +aJJ +aJS +aJJ +aJS +aJJ +aJS +aKl +aKl +aJt aad aad aad @@ -37134,8 +40553,8 @@ aeW aeW aeW ahL -uyO -ajy +awH +adu ahl akV akV @@ -37158,8 +40577,8 @@ avy awv axB alg -aah -aah +wRT +crL aBd bpg bqR @@ -37167,39 +40586,39 @@ aDi aBd aah aah -aah -aah -aah -aah -aah -aah aEU -aHX -aHW -aIu -aEU -aah -aJb -aJs -aJs -aJs -aJs -aJs -aJs -aJR -aJR -aJR -aJR +rhY +rcO +irF +aFX +aFX +aFX +aFX +aFX +aFX +oUO +aFX +aIv +dQB +wUM +uqC +kpk +xVj +vYA +qZk aJR +tlS +bfC +aKk ccM -aJR -aJR -aJR -aJR -aJR -aJR -aJb -aad +ccM +ccM +ccM +ccM +ccM +ccM +aJW +aJt aad aad aad @@ -37276,8 +40695,8 @@ agI atU aeW ahS -uyO -ajy +awH +adu ahl akV akV @@ -37308,40 +40727,40 @@ aCy aDj aBd aah -aEU -aEU -aEU -aEU -aEU -aah aah aEU +oAU +rcO +aEU +fPW +aFX +jYt aEU ceD -aEU -aEU -aah -aJb +aIs +fVt +oUO +aIv +iPO +jmF +iVI +kpk +xUk +eYr +szR +nSl +aIv aJt -aJJ -aJS -aJJ -aJS -aJJ -aJS -aJJ -aJS +aJK +aJW +aJK +aJW +aJK +aJW +aJK +aJW aJt aJt -ccM -aJR -aJR -aJR -aJR -aJR -aJR -aJb -aah aah aah aah @@ -37418,8 +40837,8 @@ agJ atV auP avZ -axs -ajC +adh +adO ahl akV akV @@ -37442,7 +40861,7 @@ ati ati ati ati -ati +giF aAt aBd aBV @@ -37450,39 +40869,39 @@ bqS aDk aBd aah +aah aEU -aFr aFX -aGo -aEU -aah -aah -aah -aEU -aFs -aEU -aah -aah -aJb -aJt -aJK +rcO +giF +bEX +bEX +bEX +bEX +bEX +bEX +bEX +bEX +bEX +iVW +aJs aJT -aJT -aKk +nuR +oRG aKw -aJT -aJT -aJW +vXn +eyS +aIv +aJt +dFd +ajf +ajg +ajh +rab +rab +erR aJt aJt -aJt -aJR -aJR -aJR -aJR -aJs -aJs -aJb aah aah aah @@ -37560,8 +40979,8 @@ afT agX ahn ahU -uyO -ajy +awH +adu akt akt akt @@ -37584,7 +41003,7 @@ avA avA avA ayJ -ati +giF aAu aBd aBd @@ -37592,39 +41011,39 @@ aBd aBd aBd aah -aEU -aFs -aFs -aFu -aEU -aEU -aEU -aEU -aEU -aFu -aEU aah +aEU +oUO +fEe +giF +hLA +hLA +hLA +pTP +nod +rbh +lUB +lUB +bEX +tIj +fRH +aIv +sjP +aOV +scG +aOV +qvU +aIv +aIv +aJb +aIv +xlv +rmE +vCV +vCV +aIv +aIv aah -aJb -aJt -aJJ -aJT -aJT -aJW -aJK -aJT -aJT -aJS -aJt -aJt -aJt -aJR -aJR -aJR -aJs -aJs -aJs -aJb aah aah aah @@ -37702,8 +41121,8 @@ aoB agY ahn ahL -uyO -ajy +awH +adu aku alc aDW @@ -37719,55 +41138,55 @@ alg alg alg aah -atj -atW -atW -atW -atW -atW -atW -atj +ati +agb +agb +agb +agb +agb +agb +giF aAu -azI +aEU +aah aah aah aah aah aah aEU -aFs -aEU -aFs -aFs +aFX +rcO +giF aGY -aFs -aFs -aFu -aFu -aEU +chB +chB +dCw +csS +ifc +ifc +gFH +bEX +sVp +dAD +aIv +dul +rUQ +cWT +iDf +icN +shP +shP +uSZ +shP +kVd +lvE +bHl +ojj +vjX +aIv aah aah -aJb -aJt -aJK -aJT -aJT -aJS -aJJ -aJT -aJT -aJW -aJt -aJt -aJt -aJR -aJR -aJs -aJs -aJs -aJs -aJb -aah aah aah aah @@ -37844,8 +41263,8 @@ afT agX ahn ahS -uyO -ajD +awH +adW aku ald ald @@ -37861,55 +41280,55 @@ alg aah aah aah -atj -atW -auF -auF -auF -axD -atW -atj +ati +agb +agc +agc +agc +agh +agb +giF aAu -azI +aEU +aah aah aah aah aah aah aEU -aFs -aEU -aEU -aEU -aEU +aFX +gTS +giF +cKH +cKH +cKH aHo -aHo -aHo -aHo -aEU +kXi +wDZ +wDZ +wDZ +bEX +soV +phh +aIv +oTW +sVz +tHv +mAx +jFL +mAx +mAx +mAx +jrV +rDY +tIi +wof +nZd +dul +aIv aah aah -aJb -aJt -aJt -aJK -aJW -aKl -aKl -aJK -aJW -aJt -aJt -aJt -aJt -aJR -aJs -aJs -aJs -aJs -aJs -aJb -aah aah aah aah @@ -37986,8 +41405,8 @@ agu atZ aho ahV -axt -azt +adi +aeq aBo aCz aDX @@ -38003,54 +41422,54 @@ alg aah aah aah -atj -atW -auF -auF -auF -auF -atW -atj +ati +agb +agc +agc +agc +agc +agb +giF aAu -azI +aEU +aah aah aah aah aah aah aEU -aFt -aEU -aah -aah -aGZ -aGZ -aGZ -aGZ -aGZ -aGZ -aah -aah -aJb +roN +npw +bEX +bEX +bEX +bEX +jcl +dby +bEX +bEX +bEX +bEX +tIj bXm -bXm -aJt -aJt -aKl -aKl -aJt -bXm -cdh -cdh -aJt -aJt -aJs -aJs -aJs -aJs -aJs -aJs -aJb +aIv +uHJ +aOV +oZi +sjP +qvU +aIv +aIv +aIv +aIv +aIv +aIv +vgW +aIv +aIv +aIv +aah aah aah aah @@ -38081,7 +41500,7 @@ aad aad aLH aLH -aaa +jUH "} (67,1,1) = {" aaa @@ -38129,7 +41548,7 @@ atY aeW ahU aiN -ajF +aet aku ald ald @@ -38145,57 +41564,57 @@ alg aah aah aah -atj -atW -auF -auF -auF -auF -atW -atj +ati +agb +agc +agc +agc +agc +agb +giF aAu +aEU +aah +aah +aah +aah +aEU +aEU +aEU +tkX +nOV +bEX +aGZ +aHp +aHM +mwy +aIk +cVX +vgd +mQY +vad +aJv +kwi +kwi +mks +aKm +rCg +cbw +aKS +bEX +aah +aah +aah +aah +azI +cyE +pvC azI aah aah aah aah aah -aEU -aFs -aEU -aah -aah -aGZ -aHp -aHM -aHY -aIk -aGZ -aah -aah -aJb -aJv -aJv -aJt -aJt -aKm -aKm -cbw -aKS -aKS -ced -cfc -aJt -aJs -aJs -aJs -aJs -aJs -aJs -aJb -aah -aah -aah aah aah aah @@ -38223,7 +41642,7 @@ aad aLH aLH aLH -aaa +jUH "} (68,1,1) = {" aaa @@ -38271,7 +41690,7 @@ aeW aeW ahW aiO -ajG +aew aku alf aDY @@ -38287,65 +41706,65 @@ alg aah aah aah -atj -atW -auF -auF -auF -auF -atW -atj +ati +agb +agc +agc +agc +agc +agb +giF aAu +aEU +aah +aah +aah +aah +aEU +tux +aFu +aFu +odp +bEX +gjQ +kwi +aHN +aHZ +aIl +uPe +lda +uPe +uPe +aJw +myG +myG +vlP +aKn +dwT +wLU +wLU +bEX +aah +aah +aah +aah +azI +aLC +hNn +azI +azI +azI +azI +azI +azI +azI +azI azI aah aah aah aah aah -aEU -aFu -aEU -aah -aah -aGZ -aHq -aHN -aHZ -aIl -aIv -aIv -aIv -aIv -aJw -aJw -aIv -aIv -aKn -aKn -aIv -aKT -aLe -cen -aIv -aJs -aJs -aJs -aJs -aJs -aJs -aJs -aJb -aah -aah -aah -aah -aah -aah -aah -aah -aah -aah -aah aah aad aad @@ -38365,7 +41784,7 @@ aad aLH aLH aLH -aaa +jUH "} (69,1,1) = {" aaa @@ -38413,7 +41832,7 @@ abT abT ahX aiP -azu +aey akw alg alg @@ -38430,64 +41849,64 @@ aah aah aah atj -atW -atW -auF -auF -axE -atW +agb +agb +agc +agc +agi +agb atj aAu +aEU +aah +aah +aah +aah +aEU +gTS +aFs +aFs +aFs +bEX +ugE +aHr +aHO +kwi +kwi +kwi +kwi +kwi +kwi +kwi +kwi +kwi +mks +aKo +xKT +cbA +ccn +bEX +aah +aah +aah +aah +azI +cyE +izV +azI +rlb +uZb +kgW +ktM +aLC +cyE +cyE azI aah aah aah aah aah -aEU -aFs -aEU -aah -aah -aGZ -aHr -aHO -aIa -aIm -aIv -bUs -aIN -bWp -bXs -bXs -bYo -aJX -aKo -aKx -cbA -ccn -aLf -ceh -aIv -aJs -aJs -aJs -aJs -aJs -aJs -aJs -aJb -aah -aah -aah -aah -aah -aah -aah -aah -aah -aah -aah aah aad aad @@ -38507,7 +41926,7 @@ aLH aLH aLH aLH -aaa +jUH "} (70,1,1) = {" aaa @@ -38555,7 +41974,7 @@ afA afA ahY aiQ -ajI +aez akx alh alO @@ -38580,51 +41999,51 @@ bAA bMK agM aAv -azI +aEU aah aah aah -aBe -aBe -aBe -cey -aBe -aBe aah -aGZ -aGZ -aHP -aIb -aIn -aIv -aIz -bVx -aJd -aJy +aEU +gTS +aFs +dUk +naR +bEX +uZy +kwi +aHO +kwi +kwi +kwi +kwi +kwi +kwi aJy +wUd aJd bZc cae aKy -aKy +nrV aKV -aLg -ceq -aIv -aJs -aJs -aJs -aJs -aJs -aJs -aJs -aJb -aah -aah -aah -aah +bEX +bEX +bEX aah aah +azI +cyE +fqS +azI +jXa +aLC +vvB +cyE +cyE +xQJ +aLC +azI aah aah aah @@ -38634,7 +42053,7 @@ aah aad aad aad -aFv +aad aad aad aad @@ -38649,11 +42068,11 @@ aLH aLH aLH aLH -aaa +jUH "} (71,1,1) = {" aaa -kdx +acN fAq frA frA @@ -38697,7 +42116,7 @@ afA ahp ahX axw -ajJ +aeG ahX ahX ahX @@ -38722,54 +42141,54 @@ axG bPI agM aAt +aEU +aah +aah +aah +aah +aEU +bzG +aFZ +aFY +laN +lUR +lSd +gts +bPw +kwi +kwi +kwi +kwi +kwi +kwi +lnR +lnR +lnR +lyv +twt +aKz +rHC +juf +aLh +aLh +bEX +aah +aah +azI +cyE +ipN +azI +rlb +cyE +bLo +xQJ +cyE +aLC +cyE azI aah aah aah -aBe -aEm -bzG -aFZ -aFY -aBe -aah -aah -aGZ -bPw -bRl -bSP -aIv -aIA -aIP -aJe -aIv -aIv -aIv -aJZ -aJe -aKz -aKz -aJe -aLh -ceo -aIv -aJs -aJs -aJs -aJs -aJs -aJs -aJs -aJb -aah -aah -aah -aah -aah -aah -aah -aah -aah aah aah aah @@ -38791,7 +42210,7 @@ aLH aLH aLH aLH -aaa +jUH "} (72,1,1) = {" aaa @@ -38839,7 +42258,7 @@ afA ahq ahX aiS -ajK +aeH aky ali ahX @@ -38864,54 +42283,54 @@ axH agM agM aAt +aEU +aah +aah +aah +aah +aEU +bzL +aFs +clm +xWo +bEX +pbE +kwi +aHO +acv +wPv +wPv +wPv +wPv +wPv +kaj +aJL +kaj +bZe +cLz +caH +cbE +vtZ +uiB +cet +bEX +aah +aah +azI +aLC +wEU +azI +wkZ +cyE +rSb +oZs +xQJ +aLC +cyE azI aah aah aah -aBe -bxW -bzL -aFx -aFZ -aBe -aBe -aBe -aBe -aBe -bRx -aBe -aIv -aIB -aIQ -aJf -aIv -aJL -aJe -bZe -aJi -caH -cbE -aJi -aJh -cet -aIv -aJb -aJb -aJb -aJb -aJb -aJb -aJb -aJb -aah -aah -aah -aah -aah -aah -aah -aah -aah aah aah aah @@ -38933,7 +42352,7 @@ aLH aLH aLH aLH -aaa +jUH "} (73,1,1) = {" aaa @@ -38981,7 +42400,7 @@ ahb ahr ahX axA -ajK +aeH aky ali ahX @@ -39006,54 +42425,54 @@ axI agM azE aAw +aEU +aah +aah +aah +aah +aEU +bzL +aFs +bEV +bGF +bEX +pbE +kwi +aHO +bRs +bIY +lZz +bUu +kwi +kwi +bIY +bXY +iLO +rNz +kwi +bRs +cbB +ccx +pUD +pUD +bEX +aBe +azI +azI +aLC +cyE +azI +azI +owQ +azI +azI +azI +azI +azI azI aah aah aah -aBe -bxT -bzJ -bCH -bEV -bGF -bIY -bIY -bMS -bIY -bRs -bIY -bTO -bUu -bVz -bWt -bXv -bXY -bXY -bZd -cal -caE -cbB -ccx -ccx -ces -aIv -aah -aah -aah -aah -aah -aah -aah -aah -aah -aah -aah -aah -aah -aah -aah -aah -aah aah aah aah @@ -39075,7 +42494,7 @@ aad aLH aLH aLH -aaa +jUH "} (74,1,1) = {" aab @@ -39123,7 +42542,7 @@ afA ahq ahX axK -ajL +aeK aBy ahX ahX @@ -39148,53 +42567,53 @@ axJ agM azF aAx +aEU +aah +aah +aah +aah +aEU +nww +aFs +bEX +bEX +bEX +bEX +bEX +aHO +bRs +uzQ +bTQ +bUH +bUH +bUH +bUH +bTQ +aJh +rNz +kwi +vAU +uzQ +tNq +bEX +bEX +bEX +aLC +aLC +hOW +cyE +cyE +aLC +nma +aLC +sHl +aLC +cyE +aLC +mMD azI aah aah -aBe -aBe -aBe -aBe -aBe -bEX -aGq -aEV -aEV -bMW -aDL -aDL -aDL -bTQ -bUH -aIS -aJh -aJh -aJh -aJh -aKc -aJh -aJh -aKL -aJh -aJh -aLu -aIv -aah -aah -aah -aah -aah -aah -aah -aah -aah -aah -aah -aah -aah -aah -aah -aah aah aah aah @@ -39217,7 +42636,7 @@ aad aLH aLH aLH -aaa +jUH "} (75,1,1) = {" aac @@ -39265,7 +42684,7 @@ afA ahs ahZ aiV -ajM +aeO aBx alj aky @@ -39290,51 +42709,51 @@ bgA agM azG aAu -azI +aEU aah aah -aBe -buQ -aBe -bzO +aah +aah +aEU +nww aFz -aGc -aBe -aBe -aBe -aBe -aBe -aBe -aBe -aIv +bEX +nce +nHz +pyO +gaN +uiD +dUT +ftc +drg bUy aIT aJe aJe -aJe -aJe +bUH +bpQ aKd -aJe -aJe -aJe -aJe -aJe -ceu -aIv -aah -aah -aah -aah -aah -aah -aah -aah -aah -aah -aah -aah -aah -aah +aIY +twt +eZF +juf +eJG +eJG +bEX +cyE +spN +aLC +aLC +mQU +aLC +gtV +cyE +pGN +cyE +aLC +aLC +mMD +azI aah aah aah @@ -39394,7 +42813,7 @@ abn abn abn abT -adO +aaS abT akz alH @@ -39407,7 +42826,7 @@ afA ahs ahX axO -azW +aeP ahX alk aEe @@ -39432,51 +42851,51 @@ axL agM azH aAu -azI -aah -aah -aBe -aDH -aBe -aBe -aBe -aGd -aBe +aEU aah aah aah aah -aah -aah -aIv +aEU +bzL +jpd +bEX +dLD +kwi +kwi +eCJ +jQS +sMv +vvE +xac bUK aIU aJi aJA -aJA -aJA -aJA -aJh -aJh +bUH +mks +rNz +kwi +toY aKM -aJh -cdk -cev -aIv -aah -aah -aah -aah -aah -aah -aah -aah -aah -aah -aah -aah -aah -aah +vtZ +uiB +cet +bEX +spN +aLC +azI +azI +azI +azI +azI +azI +azI +azI +azI +azI +azI +azI aah aah aah @@ -39549,7 +42968,7 @@ asv avh aia aiX -azO +aeX ahX ahX ahX @@ -39572,53 +42991,53 @@ avI avB axM ayM -azI +aEU aAy -aBe -aBe -aBe -aBe -aBe -aBe -aDL -aDL -aGc -aBe -aah -aah -aah -aah -aah -aah -aIv +aEU +aEU +aEU +aEU +aEU +aEU +jGM +aqd +bEX +hHd +wTR +cKm +nCo +heb +fQy +xKT +xKT aIG -aIV -bWu -bXz -bXz -bXz -bXz -bWu -bWu +kwi +kwi +kwi +bUH +mks +rNz +kwi +bRs cbH -aJe -aJe -aLx -aIv -aah -aah -aah -aah -aah -aah -aah -aah -aah -aah -aah -aah -aah -aah +ccx +kkf +kkf +bEX +cyE +aLC +azI +cTp +yka +vko +iMg +eLg +fLT +jiZ +jBQ +jBQ +kMh +jiZ aah aah aah @@ -39691,7 +43110,7 @@ abT abT ahX aiY -aAa +afa ahX ayV agM @@ -39718,49 +43137,49 @@ bjn blP aBf aBW -aCA +aBW aDl aDI aEp aEZ -aEZ -aGe -aBe -aah -aah -aah -aah -aah -aah -aIv +lVl +bEX +qaO +mwy +frp +vyB +lvx +fQy +wJy +vfu bUM -aIW -aJk +kwi +kwi +bIY +bUH aJC -aJC -aJC -aJC -aJk -aKC -cbK -aJe -aJe -aLy -aIv -aah -aah -aah -aah -aah -aah -aah -aah -aah -aah -aah -aah -aah -aah +rNz +kwi +vAU +uzQ +aIL +bEX +bEX +bEX +cyE +cyE +azI +duL +jBQ +eaK +jBQ +hQO +kZI +wXS +kZI +fER +fKm +jiZ aah aah aah @@ -39833,7 +43252,7 @@ aah aah ahX aiZ -azZ +afc ahX ayV agM @@ -39856,53 +43275,53 @@ avK aua bgI ayO -azI -azI +kpu +rYL +aBg aBg -aBX aCB aDm aDJ aDL -aBe -aBe -aBe -aBe -aah -aah -aah -aah -aah -aah -aIv -aIz -aIW -aJk +jRT +jso +xJz +xoJ +xXP +qDb +kwi +kwi +xKT +iLm +kwi +kwi +kwi +kwi bXA -bXA -bXA -bXA -aJk -aKC +bTQ +hpN +wJy +aIY +twt cbK -aJe -aJe -aLz -aIv -aah -aah -aah -aah -aah -aah -aah -aah -aah -aah -aah -aah -aah -aah +juf +nhV +nhV +bEX +xiL +cyE +azI +eNp +vVa +itW +itW +sma +sHx +jiZ +rrW +dym +hKw +jiZ aah aah aah @@ -39975,7 +43394,7 @@ aah agM agM aja -aAl +afh agM agM agM @@ -39998,53 +43417,53 @@ avL awz bgQ agM -aah -azI -aBh -aBY +aEU +aEU +aEU +aEU aCC aDn -aDK -aDL -aBe -aah -aah -aah -aah -aah -aah -aah -aah -aah -aIv -aII -aIW -aJk -aJk -bYb -aJk -aJk -aJk -aKC +aEU +aEU +aEU +cab +bEX +eQh +lcg +iuw +sSk +qlw +iRv +rNz +kwi +kwi +kwi +kwi +beU +bUH +bpQ +rNz +kwi +mgz cbO -aJe -aJe -aLx -aIv -aah -aah -aah -aah -aah -aah -aah -aah -aah -aah -aah -aah -aah -aah +vtZ +uiB +cet +bEX +aLC +hHW +azI +qsL +wtU +dGG +dDr +kjb +rfP +jiZ +jBQ +eaK +iHh +dmW aah aah aah @@ -40117,7 +43536,7 @@ aah agM awi axQ -aAd +afp akB all alQ @@ -40141,52 +43560,52 @@ awA bgL agM aah -azI -aBi -bpK +aah +aah +aEU aCD -aDo -aDL -aDL -aBe +aDn +aEU aah -aah -aah -aah -aah -aah -aah -aah -aah -aIv -aIJ -aIX -aJl -aJE -aJO -aJV -aKe -aJV -aJV +aEU +cab +bEX +uFp +bvn +kwi +kwi +kwi +ixj +rNz +kwi +kwi +kwi +kwi +kwi +bUH +mks +rNz +kwi +bRs cbN -aJh -aJh -cex -aIv -aah -aah -aah -aah -aah -aah -aah -aah -aah -aah -aah -aah -aah -aah +ccx +nzj +nzj +bEX +cyE +bPA +azI +jBQ +itW +tPN +eaK +kRQ +jBQ +jiZ +nUf +eLg +eLg +jiZ aah aah aah @@ -40283,57 +43702,57 @@ bff bgU agM aah -azI -azI -azI +aah +aah +aEU brd -bsg -aBe -aBe -aBe +aDn +aEU aah -aah -aah -aah -aah -aah -aah -aah -aah -aIv +aEU +cab +bEX +fFa +lcg +kwi +leP +kwi +rXi +waA +kOE +bUO +ocU bUO -aIT -aJm bXB -bYc -bYc -bYc -aKr -caS +bUH +mks +rNz +kwi +bRs cbP -ccO -cdu -cez -aIv -aah -aah -aah -aah -aah -aah -aah -aah -aah -aah -aah -aah -aah -aah -aah -aah -aah -aah -aah +aIL +bEX +bEX +bEX +aLC +pvj +azI +jmP +nCz +dYy +gaW +eel +pTB +pTB +pTB +pTB +lXf +pTB +pTB +pTB +pTB +pTB +mqx aad aad aad @@ -40427,56 +43846,56 @@ agM aah aah aah -aah -aAG -bse +aEU aAG +aDn +aEU aah -aah -aah -aah -aah -aah -aah -aah -aah -aah -aah -aIv +aEU +aPU +bEX +asn +fdi +tXR +qCd +gzx +iRv +mHi +wQs aIL -aIT -aJn -aJG -aJG -aJG +aIL +aIL +aIL +bUH aJG +tmX aKs caP -caP +rWv ccC aLk aLC -aIv -aah -aah -aah -aah -aah -aah -aah -aah -aah -aah -aah -aah -aah -aah -aah -aah -aah -aah -aah -aah +cyE +cyE +uep +azI +mDm +cyE +cyE +aLC +aOd +pTB +sDR +seb +euU +pqF +bTM +ouI +vMa +lJn +ckE +mqx +mqx aad aad aad @@ -40566,59 +43985,59 @@ agM amw agM agM +agM aah aah +aEU +aCC +aDn +aEU aah -aah -aAG -bse -aAG -aah -aah -aah -aah -aah -aah -aah -aah -aah -aah -aah -aIv -aIA -aIT -aJo +aEU +khS +bEX +bEX +bEX +bEX +bEX +kwi +ixj +mHi +bTQ +bUH +bUH +bUH +bUH +bTQ bXC -bXC -bXC -bZk -aKt -aKF -aKF +rNz +kwi +vAU +mks ccR -aJk +bEX aLD -aIv -aah -aah -aah -aah -aah -aah -aah -aah -aah -aah -aah -aah -aah -aah -aah -aah -aah -aah -aah -aah +gzM +cyE +ttM +lZQ +iQg +xDD +xDD +mbM +jLy +kgx +ppK +cws +pqJ +kjZ +qdF +qPT +vMa +oRr +ckE +mqx +mqx aad aad aad @@ -40707,60 +44126,60 @@ bcA agM ahc agM +pfD +agM aah aah -aah -aah -aAG -aAG +aEU +sbo bse -aAG +aEU aah -aah -aah -aah -aah -aah -aah -aah -aah -aah -aah -aIv +aEU +mdV +jRT +daz +bEX +pbE +kwi +kwi +ixj +bOS +pAL aIz aIY +aIY bWK -bWK -bWK -bWK +ocQ +aIz bZi aKu -aKu -aKu -ccQ -aJf +bRs +mks +kwi +bEX aLE -aIv -aah -aah -aah -aah -aah -aah -aah -aah -aah -aah -aah -aah -aah -aah -aah -aah -aah -aah -aah -aah +aLE +aLE +aLE +aLE +aLE +aLE +aLE +hQI +cyE +pTB +pTB +mvw +pTB +pTB +nzZ +dYn +qwy +pxZ +pTB +mqx +mqx aad aad aad @@ -40855,54 +44274,54 @@ avP avP avP brf -bsl -aAG +aDm +aEU aah -aah -aah -aah -aah -aah -aah -aah -aah -aah -aah -aIv -aIz -aIZ -aJq -aJq -aJQ -aJQ -aKh -aJe -aJe -aJe +aEU +aBg +weg +iOz +bEX +pbE +kwi +kwi +ixj +kwi +xKT +kwi +kwi +kwi +xKT +kwi +kwi +kwi +xKT +bRs +aKo aLb -aLl +bEX +eUB +ivg +qqu +qqu +qqu +pUG +eUB aLE -aIv -aah -aah -aah -aah -aah -aah -aah -aah -aah -aah -aah -aah -aah -aah -aah -aah -aah -aah -aah -aah +bQA +aLC +pTB +fRb +kYv +rlN +pTB +uvM +njh +uux +vMa +ckE +mqx +mqx aad aad aad @@ -40996,53 +44415,53 @@ azK aAA aBj avP -aCG -bse -aAG -aAG -aAG -aAG +aco +aDm +aEU aah -aah -aah -aah -aah -aah -aah -aah -aIv -aIM +aEU +aEU +sbo +xve +bEX +vBY +vBY +kwi +fZx +jLF +iRv +kwi aJa -bWL +jLF aJI aJQ aJQ -aKi -aKv -caV +aJQ aKv +aKC +sfF ccS -aLm -aLF -aIv -aah -aah -aah -aah -aah -aah -aah -aah -aah -aah -aah -aah -aah -aah -aah -aah -aah -aah +bEX +eUB +eUB +eUB +eUB +eUB +eUB +eUB +aLE +vBq +wle +pTB +jkn +jYN +gcD +pTB +eFJ +cHO +nED +ouI +ckE aad aad aad @@ -41138,53 +44557,53 @@ azL aAB aBk bqa -brg +aBW bsn -bvd -bvd -bAy -aAG -aah -aah -aah -aah -aah -aah -aah -aah -aIv -aIv -aIv -aIv -aIv -aIv -aIv -aIv -aIv -aIv -aIv -aIv -aIv -aIv -aIv -aah -aah -aah -aah -aah -aah -aah -aah -aah -aah -aah -aah -aah -aah -aah -aah +aEU aah aah +aEU +aCC +aPU +bEX +vNJ +kwi +rfn +lZz +ylA +wUq +dCs +rtj +qpo +nij +qpo +tfC +grU +tiP +iwn +rpg +lZz +bEX +eUB +myP +toz +toz +toz +lcu +eUB +aLE +bQA +cyE +pTB +pTB +pTB +pTB +pTB +pTB +pTB +pTB +pTB +pTB aad aad aad @@ -41280,53 +44699,53 @@ azM aAC aBl avP -aAG -aDt -aAG -aAG -bse -aAG -aah -aah -aah -aah -aah -aah -aah -aah -aah -aah -aah -aah -aah -aah -aah -aah -aah -aah -aah -aah -aah -aah -aah -aah -aah -aah -aah -aah -aah -aah -aah -aah -aah -aah -aah -aah -aah -aah -aah +iNX +aDn +aEU aah aah +aEU +msj +aPU +bEX +bEX +bEX +bEX +gSV +xgc +ttd +vJa +gSV +xgc +sQh +vJa +gSV +xgc +vtZ +fhU +nTZ +ieJ +bEX +wKH +vPb +aLE +aLE +aLE +iXb +nmr +aLE +bQA +aLC +loJ +eaW +brB +dRx +qPz +iQr +mXi +mXi +rDT +djV aad aad aad @@ -41374,8 +44793,8 @@ aah aah aar aaI -aaS -aaS +aaC +aaC abE abM acg @@ -41422,54 +44841,54 @@ azM blQ bnF avP -aah -aAG -aDM -aAG -bse -aAG -aah -aah -aah -aah -aah -aah -aah -aah -aah -aah -aah -aah -aah -aah -aah -aah -aah -aah -aah -aah -aah -aah -aah -aah -aah -aah -aah -aah -aah -aah -aah -aah -aah -aah -aah -aah -aah -aah -aah -aah +qQA +aDm +aEU aah aah +aEU +pSw +cab +aEU +mBW +oUO +bEX +bEX +mTp +xyM +rik +bEX +dss +uiB +taQ +bEX +pVM +uiB +xUl +bEX +bEX +bEX +uib +ivg +qqu +qqu +qqu +pUG +mgm +aLE +ljc +kYa +lee +toK +ydd +vlW +xfe +udl +nwT +mXi +rpz +djV +mqx aad aad aad @@ -41516,7 +44935,7 @@ aah aah aar aaI -aaS +aaC abb abh abM @@ -41531,7 +44950,7 @@ afk anL agl agx -agC +afx agN ahd ahv @@ -41564,53 +44983,53 @@ avP avP avP avP -bgr -bgr -aAG -aAG -bse -aAG -aah -aah -aah -aah -aah -aah -aah -aah -aah -aah -aah -aah -aah -aah -aah -aah -aah -aah -aah -aah -aah -aah -aah -aah -aah -aah -aah -aah -aah -aah -aah -aah -aah -aah -aah -aah -aah -aah -aah +wRw +aDn +aEU aah aah +aEU +aEU +gtp +aEU +aFX +uOc +rdw +bEX +mTp +tAD +rik +bEX +dss +wOA +taQ +bEX +pVM +wOA +xUl +bEX +jrO +bTQ +uib +eUB +eUB +eUB +eUB +eUB +mgm +aLE +lYJ +qRQ +loJ +loJ +vTt +loJ +loJ +liI +okM +ewA +msr +loJ aad aad aad @@ -41658,7 +45077,7 @@ aah aah aar aaJ -aaS +aaC abc abG abL @@ -41706,16 +45125,16 @@ azN aAE aBn avP -aCI -aCI -aCI -aAG -bAO -aAG -bgr -bgr +aEU +fSd +aEU bgr bgr +agM +tJc +dCM +agM +agM cgS cgS cgS @@ -41726,33 +45145,33 @@ chM chM chM ciA -ciA +epw ciA ciA cjm cjm cjm cjm -aah -aah -aah -aah -aah -aah -aah -aah -aah -aah -aah -aah -aah -aah -aah -aah -aah -aah -aah -aah +uib +myP +toz +toz +toz +lcu +mgm +aLE +hQI +aLC +loJ +fah +srm +oGH +loJ +ruP +qPz +gTd +gTd +djV aad aad aad @@ -41800,7 +45219,7 @@ aah aah aar aaK -aaS +aaC abq abF abL @@ -41849,15 +45268,15 @@ blS bnK avP aCI +shl aCI -cfl -cfl -bAN -aCI -aCI -aCI -aCI +ijE aCI +agM +avB +gcG +avB +azu cgS cgY qBH @@ -41875,28 +45294,28 @@ cjl oUC cjl cjm -aah -aah -aah -aah -aah -aah -aah -aah -aah -aah -aah -aah -aah -aah -aah -aah -aah -aah -aah -aah -aah -aah +lsH +vPb +aLE +aLE +aLE +iXb +dhv +aLE +jWP +aLC +loJ +cLW +tEU +mzf +loJ +flv +vMY +rMy +oZQ +djV +mqx +mqx aad aad aad @@ -41990,16 +45409,16 @@ avP avP avP avP -aCI -aCI -aCI -aCI -cfO -aCI -aCI -aCI -aCI -aCI +qLe +kXc +qLe +qLe +qLe +agM +avB +gcG +avB +azu cgS cgY cgY @@ -42017,28 +45436,28 @@ cjl cjl cjl cjm -aah -aah -aah -aah -aah -aah -aah -aah -aah -aah -aah -aah -aah -aah -aah -aah -aah -aah -aah -aah -aah -aah +uib +ivg +qqu +qqu +qqu +pUG +mgm +aLE +bQA +wle +loJ +loJ +loJ +loJ +loJ +loJ +loJ +loJ +loJ +loJ +mqx +mqx aad aad aad @@ -42131,17 +45550,17 @@ ayZ agM aCI aCI +qLe aCI aCI -aCI -aCI -aCI -aCI -aCI -aCI -aCI -aCI -aCI +qLe +qLe +qLe +agM +avB +mDj +hlg +oON cgS cgY cgY @@ -42159,28 +45578,28 @@ cjl cjl cjl cjm -aah -aah -aah -aah -aah -aah -aah -aah -aah -aah -aah -aah -aah -aah -aah -aah -aah -aah -aah -aah -aah -aah +iJC +hAF +hAF +jRe +eJQ +eJQ +uuF +aLE +hQI +cyE +kfZ +qUj +vbQ +rmb +thn +gZC +eca +fZk +iRV +oMG +mqx +mqx aad aad aad @@ -42226,7 +45645,7 @@ aah aah aar aaI -aaS +aaC abs abO acP @@ -42271,19 +45690,19 @@ bar clc cle agM +qLe +qLe +qLe +qLe +qLe aCI aCI -aCI -aCI -aCI -aCI -aCI -aCI -aCI -aCI -aCI -aCI -aCI +qLe +agM +mgv +kMU +iGR +pxR cgS cgY cgY @@ -42301,28 +45720,28 @@ cjl cjl cjl cjm -aah -aah -aah -aah -aah -aah -aah -aah -aah -aah -aah -aah -aah -aah -aah -aah -aah -aah -aah -aah -aah -aah +eUB +eUB +eUB +xCN +eUB +eUB +eUB +aLE +njo +kGC +ipf +iGv +lEM +mEg +fmD +fmD +hqc +fZk +thn +oMG +mqx +mqx aah aad aad @@ -42368,7 +45787,7 @@ aah aah aar aaI -aaS +aaC abh abN abM @@ -42414,18 +45833,18 @@ awA azb agM aCI +qLe aCI +qLe +qLe aCI -aCI -aCI -aCI -aCI -aCI -aCI -aCI -aCI -aCI -aCI +qLe +qLe +agM +qtf +yeV +iYP +fsN cgS cgY cgY @@ -42443,27 +45862,27 @@ cjl cjl cjl cjm -aah -aah -aah -aah -aah -aah -aah -aah -aah -aah -aah -aah -aah -aah -aah -aah -aah -aah -aah -aah -aah +aLE +aLE +aLE +xDX +aLE +aLE +aLE +aLE +jJF +rPU +kfZ +kfZ +nSL +kfZ +kfZ +ubX +kpz +wRV +tBj +kfZ +mqx aad aad aad @@ -42510,7 +45929,7 @@ aah aah aar aaJ -aaS +aaC abi abU abL @@ -42549,25 +45968,25 @@ atp auf atp aLp -aQK +abx aLJ bdV ayb aze agM aCI +qLe +qLe aCI +qLe +qLe aCI aCI agM -agM -agM -agM -agM -aCI -aCI -aCI -aCI +ycb +kMU +iGR +iwJ cgS cgY cgY @@ -42585,27 +46004,27 @@ cjl cjl cjl cjm -aah -aah -aah -aah -aah -aah -aah -aah -aah -aah -aah -aah -aah -aah -aah -aah -aah -aah -aah -aah -aah +vsE +itr +pby +fEC +szK +lYE +xEo +aLE +tKM +aLC +kfZ +kip +kva +vLV +kfZ +oRd +iWC +iWC +iia +oMG +mqx aad aad aad @@ -42652,7 +46071,7 @@ aad aah aar aaM -aaS +aaC abt abQ abP @@ -42662,7 +46081,7 @@ afL adE aeg abP -aeT +afs afo afo agr @@ -42698,18 +46117,18 @@ cld clf agM aCI +qLe +qLe +qLe +qLe +qLe aCI -aCI -aCI -agM -cfm -avB bAP agM -aCI -aCI -aCI -aCI +bVQ +fHe +iGR +rbv cgS cgZ chk @@ -42727,27 +46146,27 @@ cjn cjz cjI cjm -aah -aah -aah -aah -aah -aah -aah -aah -aah -aah -aah -aah -aah -aah -aah -aah -aah -aah -aah -aah -aah +cQA +hSO +lsv +xdG +gHF +maK +mnZ +aLE +wOg +cyE +kfZ +nzv +eGQ +wLs +kfZ +thn +prS +jSm +eca +oMG +mqx aad aad aad @@ -42846,10 +46265,10 @@ bro agM agM agM -cfT -agM agM agM +bMR +dtB agM agM cgS @@ -42869,27 +46288,27 @@ cbj cbT ccY cjm -aah -aah -aah -aah -aah -aah -aah -aah -aah -aah -aah -aah -aah -aah -aah -aah -aah -aah -aah -aah -aah +oAK +wWi +eQE +jky +jod +pYp +qNc +aLE +bQA +cyE +kfZ +kfZ +kfZ +kfZ +kfZ +kfZ +kfZ +kfZ +kfZ +kfZ +mqx aah aah aad @@ -42959,7 +46378,7 @@ awr ayq ajZ ahx -aCP +aaW alU amy alr @@ -43011,27 +46430,27 @@ cjm cjm ccW cjm +aLE +aLE +aLE cjX -cjX -cjX -cjX -cjX -cjX -cjX -cjX -cjX -aah -aah -aah -aah -aah -aah -aah -aah -aah -aah -aah -aah +aLE +aLE +aLE +aLE +hQI +qRQ +qKd +jfn +tvA +sym +nKS +pAT +nlQ +nlQ +oem +iXi +mqx aah aah aad @@ -43117,7 +46536,7 @@ atp auT awM aLJ -aQM +abA atp biv bhi @@ -43155,25 +46574,25 @@ ccZ cdN ceJ cfp -ceJ +dNl cgj chi chI -chi +qfJ cjb -cjX -aah -aah -aah -aah -aah -aah -aah -aah -aah -aah -aah -aah +tEh +pdL +ngd +cRf +qgD +iOL +ulG +ulG +uBl +tmk +hXY +iXi +mqx aah aad aad @@ -43301,21 +46720,21 @@ cfG cgi cha chD -ceG -ciZ -cjX -aah -aah -aah -aah -aah -aah -aah -aah -aah -aah -aah -aah +sfi +azI +qRQ +oxc +qKd +qKd +gSq +qKd +qKd +cOL +wxS +vES +wYY +qKd +mqx aah aad aad @@ -43439,25 +46858,25 @@ cdd cjs ceM ceM -cfM -cgw +acw +acz ceM chQ chQ -ceM -ceM -aah -aah -aah -aah -aah -aah -aah -aah -aah -aah -aah -aah +azI +azI +azI +qKd +bbA +dOh +pkJ +qKd +tmk +tmk +moi +tmk +iXi +mqx aad aad aad @@ -43580,26 +46999,26 @@ cce cda cjs ceK -cft +afZ cfL cgk chl rEC chO cje -ceM -aah -aah -aah -aah -aah -aah -aah -aah -aah -aah -aah -aah +azI +spi +qKd +xFo +vhW +xCP +qKd +nrl +flp +jau +nlQ +iXi +mqx aad aad aad @@ -43728,19 +47147,19 @@ cgB chm cfv cfv -cjo -ceM -aah -aah -aah -aah -aah -aah -aah -aah -aah -aah -aah +kPm +azI +azI +qKd +qKd +qKd +qKd +qKd +qKd +qKd +qKd +qKd +qKd aah aad aad @@ -43954,7 +47373,7 @@ ajl aka ajl ajl -aEk +abf alY amR alr @@ -44231,7 +47650,7 @@ aah aaU abH agT -abH +aaV agT agT aaU @@ -44404,7 +47823,7 @@ apP apP aFc aFc -brv +acr lHO lHO lHO @@ -44550,7 +47969,7 @@ arm cfj cfz arm -cgb +act bdk cgt bdk @@ -44578,7 +47997,7 @@ cfx cfU cfv chu -chW +aga ciK cjA ceM @@ -44673,7 +48092,7 @@ aah aah aah apP -aqx +afG arm arm arm @@ -44687,7 +48106,7 @@ azl azR avb apP -bfC +afY arm cfi cfy @@ -45108,7 +48527,7 @@ atu atu avX axd -bhj +afU azo azS aAJ @@ -46160,7 +49579,7 @@ aad aad aad aad -aFv +aad aad aad aad @@ -46806,7 +50225,7 @@ apR aqG aTI aqG -asK +afH aTI aqG aqG @@ -46818,7 +50237,7 @@ aTI aqG aqG aTI -asK +afH aqG aTI aqG diff --git a/maps/tether/tether-02-surface2.dmm b/maps/tether/tether-02-surface2.dmm index f95e5e4bf8..112022871c 100644 --- a/maps/tether/tether-02-surface2.dmm +++ b/maps/tether/tether-02-surface2.dmm @@ -376,9 +376,9 @@ /obj/item/weapon/handcuffs/legcuffs/fuzzy, /obj/item/weapon/handcuffs/fuzzy, /obj/item/clothing/mask/balaclava, -/obj/item/clothing/gloves/combat{ - desc = "These gloves are insulated with rubber."; - name = "black insulated gloves" +/obj/item/clothing/gloves/black{ + desc = "They seem to be made of rubber-like material, though insulation quality is doubtful"; + name = "elastic black gloves" }, /obj/item/clothing/under/fluff/latexmaid, /turf/simulated/floor/tiled/techfloor, @@ -478,6 +478,9 @@ dir = 1 }, /obj/effect/floor_decal/rust, +/obj/machinery/alarm{ + pixel_y = 22 + }, /turf/simulated/floor/tiled/techfloor, /area/maintenance/lower/mining) "bj" = ( @@ -1174,14 +1177,17 @@ /turf/simulated/floor/tiled/techfloor, /area/maintenance/lower/mining) "cU" = ( -/obj/structure/catwalk, -/obj/machinery/alarm{ - dir = 8; - icon_state = "alarm0"; - pixel_x = 24 +/obj/effect/floor_decal/borderfloor{ + dir = 1 }, -/turf/simulated/floor/tiled/techfloor, -/area/maintenance/lower/mining) +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/machinery/alarm{ + pixel_y = 22 + }, +/turf/simulated/floor/tiled/techmaint, +/area/tether/surfacebase/atrium_two) "cV" = ( /obj/effect/floor_decal/corner_steel_grid{ dir = 10 @@ -2193,7 +2199,7 @@ /obj/structure/disposalpipe/segment{ dir = 4 }, -/obj/machinery/camera/network/northern_star, +/obj/machinery/camera/network/tether, /turf/simulated/floor/tiled/techmaint, /area/tether/surfacebase/atrium_two) "fe" = ( @@ -2400,7 +2406,7 @@ /obj/structure/disposalpipe/segment{ dir = 4 }, -/obj/machinery/camera/network/northern_star, +/obj/machinery/camera/network/tether, /turf/simulated/floor/tiled/techmaint, /area/tether/surfacebase/atrium_two) "fr" = ( @@ -2616,22 +2622,25 @@ /turf/simulated/floor/tiled/techfloor/grid, /area/maintenance/lower/north) "fQ" = ( -/obj/effect/floor_decal/techfloor{ +/obj/structure/cable{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{ dir = 1 }, -/obj/effect/floor_decal/techfloor, -/obj/effect/floor_decal/techfloor/hole/right{ +/obj/machinery/atmospherics/pipe/manifold/hidden/supply{ dir = 1 }, /obj/structure/cable{ - icon_state = "4-8" + icon_state = "2-4" }, -/obj/structure/disposalpipe/segment{ - dir = 4 +/obj/machinery/alarm{ + pixel_y = 22 }, -/obj/effect/decal/cleanable/dirt, -/turf/simulated/floor/tiled/techfloor, -/area/maintenance/lower/north) +/turf/simulated/floor/plating, +/area/tether/surfacebase/public_garden_two) "fR" = ( /obj/effect/floor_decal/techfloor{ dir = 1 @@ -3168,7 +3177,7 @@ /turf/simulated/wall, /area/tether/surfacebase/north_staires_two) "hd" = ( -/obj/machinery/camera/network/northern_star{ +/obj/machinery/camera/network/tether{ dir = 4 }, /turf/simulated/open, @@ -3210,7 +3219,7 @@ /obj/effect/floor_decal/borderfloor/corner2{ dir = 10 }, -/obj/machinery/camera/network/northern_star{ +/obj/machinery/camera/network/tether{ dir = 4 }, /turf/simulated/floor/tiled/techmaint, @@ -3222,7 +3231,7 @@ /obj/effect/floor_decal/borderfloor/corner2{ dir = 6 }, -/obj/machinery/camera/network/northern_star{ +/obj/machinery/camera/network/tether{ dir = 9 }, /turf/simulated/floor/tiled/techmaint, @@ -4440,11 +4449,25 @@ /turf/simulated/floor/plating, /area/maintenance/lower/rnd) "jP" = ( -/obj/item/weapon/storage/fancy/cigar/havana, -/obj/effect/decal/cleanable/dirt, -/obj/random/drinkbottle, -/turf/simulated/floor/plating, -/area/maintenance/lower/rnd) +/obj/machinery/firealarm{ + dir = 8; + pixel_x = -24; + pixel_y = 0 + }, +/obj/structure/table/reinforced, +/obj/effect/floor_decal/borderfloor{ + dir = 8 + }, +/obj/effect/floor_decal/corner/mauve/border{ + dir = 8 + }, +/obj/item/weapon/paper{ + desc = ""; + info = "This is a direct notice to anyone using firing range: All tests involving destruction of testing facilities MUST be run through Research Director or Central Command before anyone even so much as thinks about going through with this, or be moved outside to where test cannot affect any existing facility. This is both to maintain a professional environment, and ensure nobody else is harmed during these experiments. Nobody wants another 'two SM shards going nuclear in the firing range' incident again, especially not the people handling your paychecks."; + name = "note to science staff" + }, +/turf/simulated/floor/tiled, +/area/rnd/research/testingrange) "jQ" = ( /obj/effect/floor_decal/borderfloor{ dir = 8 @@ -4594,7 +4617,7 @@ /obj/effect/floor_decal/borderfloor{ dir = 8 }, -/obj/machinery/camera/network/northern_star{ +/obj/machinery/camera/network/tether{ dir = 4 }, /turf/simulated/floor/tiled/techmaint, @@ -4603,7 +4626,7 @@ /obj/effect/floor_decal/borderfloor{ dir = 4 }, -/obj/machinery/camera/network/northern_star{ +/obj/machinery/camera/network/tether{ dir = 9 }, /turf/simulated/floor/tiled/techmaint, @@ -4636,15 +4659,21 @@ /turf/simulated/floor/tiled/techfloor, /area/maintenance/lower/bar) "kl" = ( -/obj/structure/railing{ - dir = 1 +/obj/machinery/door/airlock/maintenance/engi, +/obj/structure/cable{ + d1 = 4; + d2 = 8; + icon_state = "4-8" }, -/obj/effect/floor_decal/techfloor{ +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ dir = 4 }, -/obj/effect/floor_decal/rust, -/turf/simulated/floor/tiled/techfloor, -/area/maintenance/lower/bar) +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, +/obj/machinery/door/firedoor/glass, +/turf/simulated/floor/plating, +/area/gateway) "km" = ( /obj/item/toy/plushie/kitten{ desc = "An odd appearing, cryptic plush of a cat."; @@ -5009,9 +5038,6 @@ "lc" = ( /turf/simulated/wall/r_wall, /area/maintenance/lower/rnd) -"ld" = ( -/turf/simulated/wall/r_wall, -/area/tether/surfacebase/atrium_two) "le" = ( /obj/structure/railing{ dir = 4 @@ -5144,7 +5170,7 @@ /turf/simulated/shuttle/wall/voidcraft/green{ hard_corner = 1 }, -/area/tether/surfacebase/atrium_two) +/area/tether/elevator) "lt" = ( /obj/effect/floor_decal/techfloor/corner{ dir = 4 @@ -5354,21 +5380,24 @@ /turf/simulated/floor, /area/maintenance/substation/research) "lM" = ( -/obj/structure/cable/green{ - d1 = 4; - d2 = 8; - icon_state = "4-8" - }, -/obj/machinery/door/airlock/engineering{ - name = "Science Substation"; - req_one_access = list(11,24,47) - }, -/obj/machinery/door/firedoor, /obj/structure/cable{ - icon_state = "4-8" + d1 = 1; + d2 = 2; + icon_state = "1-2"; + pixel_y = 0 }, -/turf/simulated/floor, -/area/maintenance/substation/research) +/obj/effect/decal/cleanable/dirt, +/obj/effect/floor_decal/rust, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/machinery/alarm{ + dir = 4; + icon_state = "alarm0"; + pixel_x = -22; + pixel_y = 0 + }, +/turf/simulated/floor/plating, +/area/gateway) "lN" = ( /obj/machinery/atmospherics/pipe/simple/visible/supply{ dir = 6 @@ -5431,7 +5460,7 @@ /area/maintenance/lower/rnd) "lQ" = ( /turf/simulated/floor/holofloor/tiled/dark, -/area/tether/surfacebase/atrium_two) +/area/tether/elevator) "lR" = ( /obj/effect/floor_decal/borderfloor{ dir = 1 @@ -5598,9 +5627,6 @@ icon_state = "16-0" }, /obj/structure/cable, -/obj/structure/cable{ - icon_state = "0-2" - }, /obj/structure/disposalpipe/up, /obj/effect/floor_decal/industrial/outline/yellow, /turf/simulated/floor/plating, @@ -5621,25 +5647,12 @@ }, /turf/simulated/floor/tiled/techmaint, /area/tether/surfacebase/atrium_two) -"mo" = ( -/obj/effect/floor_decal/borderfloor{ - dir = 1 - }, -/obj/machinery/alarm{ - pixel_y = 22 - }, -/turf/simulated/floor/tiled/techmaint, -/area/tether/surfacebase/atrium_two) "mp" = ( /obj/effect/floor_decal/borderfloor{ dir = 1 }, -/obj/machinery/camera/network/northern_star, -/obj/machinery/firealarm{ - dir = 2; - layer = 3.3; - pixel_x = 0; - pixel_y = 26 +/obj/machinery/status_display{ + pixel_y = 30 }, /turf/simulated/floor/tiled/techmaint, /area/tether/surfacebase/atrium_two) @@ -5648,18 +5661,18 @@ dir = 1 }, /obj/machinery/atmospherics/unary/vent_scrubber/on, +/obj/machinery/alarm{ + pixel_y = 22 + }, /turf/simulated/floor/tiled/techmaint, /area/tether/surfacebase/atrium_two) "mr" = ( /obj/effect/floor_decal/borderfloor{ dir = 1 }, -/obj/machinery/light/small{ +/obj/effect/floor_decal/industrial/danger{ dir = 1 }, -/obj/machinery/status_display{ - pixel_y = 30 - }, /turf/simulated/floor/tiled/techmaint, /area/tether/surfacebase/atrium_two) "ms" = ( @@ -5762,21 +5775,6 @@ /obj/effect/floor_decal/rust, /turf/simulated/floor/tiled/techfloor, /area/maintenance/asmaint2) -"mF" = ( -/obj/machinery/firealarm{ - dir = 8; - pixel_x = -24; - pixel_y = 0 - }, -/obj/structure/table/reinforced, -/obj/effect/floor_decal/borderfloor{ - dir = 8 - }, -/obj/effect/floor_decal/corner/mauve/border{ - dir = 8 - }, -/turf/simulated/floor/tiled, -/area/rnd/research/testingrange) "mG" = ( /obj/structure/cable/green{ d1 = 2; @@ -5855,32 +5853,28 @@ /turf/simulated/floor, /area/maintenance/substation/research) "mM" = ( +/obj/effect/floor_decal/techfloor{ + dir = 1 + }, +/obj/effect/floor_decal/techfloor, +/obj/effect/floor_decal/techfloor/hole/right{ + dir = 1 + }, /obj/structure/cable{ - d1 = 4; - d2 = 8; - icon_state = "4-8"; - pixel_x = 0 - }, -/obj/machinery/door/airlock/engineering{ - name = "Science Substation"; - req_one_access = list(11,24,47) - }, -/obj/machinery/door/firedoor, -/obj/structure/cable/green{ - d1 = 4; - d2 = 8; icon_state = "4-8" }, -/turf/simulated/floor, -/area/maintenance/substation/research) +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/effect/decal/cleanable/dirt, +/obj/machinery/alarm{ + dir = 1; + pixel_y = -25 + }, +/turf/simulated/floor/tiled/techfloor, +/area/maintenance/lower/north) "mN" = ( /obj/effect/decal/cleanable/dirt, -/obj/machinery/atmospherics/pipe/manifold/visible/supply{ - dir = 8 - }, -/obj/machinery/atmospherics/pipe/manifold/visible/scrubbers{ - dir = 8 - }, /obj/structure/cable/green{ d1 = 2; d2 = 8; @@ -5890,33 +5884,25 @@ dir = 4; icon_state = "pipe-c" }, +/obj/machinery/atmospherics/pipe/simple/visible/scrubbers, +/obj/machinery/atmospherics/pipe/simple/visible/supply, /turf/simulated/floor/plating, /area/maintenance/lower/rnd) "mO" = ( /obj/machinery/door/airlock/maintenance/engi, -/obj/machinery/atmospherics/pipe/simple/visible/supply{ - dir = 4 - }, /obj/machinery/atmospherics/pipe/simple/visible/scrubbers{ dir = 4 }, -/obj/machinery/door/firedoor/glass, /obj/structure/disposalpipe/segment{ dir = 4 }, /turf/simulated/floor/plating, /area/maintenance/lower/rnd) "mP" = ( -/obj/machinery/atmospherics/pipe/simple/visible/supply{ - dir = 10 +/obj/structure/disposalpipe/segment{ + dir = 8; + icon_state = "pipe-c" }, -/obj/machinery/atmospherics/pipe/simple/visible/scrubbers{ - dir = 10 - }, -/obj/structure/cable{ - icon_state = "1-2" - }, -/obj/structure/disposalpipe/junction, /turf/simulated/floor/plating, /area/maintenance/lower/rnd) "mQ" = ( @@ -5952,26 +5938,17 @@ /obj/machinery/door/airlock/glass, /turf/simulated/floor/tiled/techmaint, /area/tether/surfacebase/atrium_two) -"mU" = ( -/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{ - dir = 1 - }, -/obj/machinery/atmospherics/pipe/manifold/hidden/supply{ - dir = 1 - }, -/turf/simulated/floor/tiled/techmaint, -/area/tether/surfacebase/atrium_two) "mV" = ( /obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers, /obj/machinery/atmospherics/pipe/manifold4w/hidden/supply, /turf/simulated/floor/tiled/techmaint, /area/tether/surfacebase/atrium_two) "mW" = ( -/obj/machinery/atmospherics/pipe/simple/hidden/supply{ - dir = 4 +/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{ + dir = 1 }, -/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ - dir = 4 +/obj/machinery/atmospherics/pipe/manifold/hidden/supply{ + dir = 1 }, /obj/structure/disposalpipe/segment{ dir = 4; @@ -6106,7 +6083,7 @@ /obj/structure/cable{ icon_state = "4-8" }, -/obj/machinery/camera/network/northern_star{ +/obj/machinery/camera/network/tether{ dir = 1 }, /turf/simulated/floor/tiled/techfloor, @@ -6167,14 +6144,20 @@ /turf/simulated/floor/tiled/techfloor, /area/maintenance/asmaint2) "nj" = ( -/obj/effect/floor_decal/borderfloor{ - dir = 10 +/obj/structure/railing{ + dir = 1 }, -/obj/effect/floor_decal/corner/mauve/border{ - dir = 10 +/obj/effect/floor_decal/techfloor{ + dir = 4 }, -/turf/simulated/floor/tiled, -/area/rnd/research/testingrange) +/obj/effect/floor_decal/rust, +/obj/machinery/alarm{ + dir = 8; + icon_state = "alarm0"; + pixel_x = 24 + }, +/turf/simulated/floor/tiled/techfloor, +/area/maintenance/lower/bar) "nk" = ( /obj/machinery/recharger/wallcharger{ pixel_x = 4; @@ -6262,21 +6245,12 @@ "nt" = ( /turf/simulated/wall/r_wall, /area/rnd/research) -"nu" = ( -/obj/machinery/atmospherics/pipe/simple/visible/supply, -/obj/machinery/atmospherics/pipe/simple/visible/scrubbers, -/obj/structure/cable{ - icon_state = "1-2" - }, -/obj/structure/disposalpipe/segment, -/turf/simulated/floor/plating, -/area/maintenance/lower/rnd) "nv" = ( /obj/structure/sign/deck/second, /turf/simulated/shuttle/wall/voidcraft/green{ hard_corner = 1 }, -/area/tether/surfacebase/atrium_two) +/area/tether/elevator) "nw" = ( /obj/machinery/door/firedoor/glass/hidden/steel{ dir = 1 @@ -6290,6 +6264,7 @@ "ny" = ( /obj/machinery/light/small, /obj/effect/floor_decal/borderfloor, +/obj/effect/floor_decal/corner/yellow/border, /turf/simulated/floor/tiled/techmaint, /area/tether/surfacebase/atrium_two) "nz" = ( @@ -6306,18 +6281,24 @@ /obj/machinery/atmospherics/unary/vent_pump/on{ dir = 1 }, +/obj/effect/floor_decal/corner/yellow/border, /turf/simulated/floor/tiled/techmaint, /area/tether/surfacebase/atrium_two) "nC" = ( /obj/effect/floor_decal/borderfloor, +/obj/effect/floor_decal/corner/yellow/border, /obj/effect/floor_decal/borderfloor/corner2{ dir = 9 }, +/obj/effect/floor_decal/corner/yellow/bordercorner2{ + icon_state = "bordercolorcorner2"; + dir = 9 + }, /obj/machinery/door/firedoor/glass, /obj/machinery/door/airlock/glass, /turf/simulated/floor/tiled/techmaint, /area/tether/surfacebase/atrium_two) -"nD" = ( +"nE" = ( /obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, /obj/machinery/atmospherics/pipe/simple/hidden/supply, /obj/effect/floor_decal/steeldecal/steel_decals4{ @@ -6326,26 +6307,20 @@ /obj/effect/floor_decal/steeldecal/steel_decals4{ dir = 5 }, -/turf/simulated/floor/tiled/techmaint, -/area/tether/surfacebase/atrium_two) -"nE" = ( /obj/structure/disposalpipe/segment, -/obj/effect/floor_decal/steeldecal/steel_decals4{ - dir = 8 - }, -/obj/effect/floor_decal/steeldecal/steel_decals4{ - dir = 5 - }, /turf/simulated/floor/tiled/techmaint, /area/tether/surfacebase/atrium_two) "nF" = ( /obj/effect/floor_decal/borderfloor, +/obj/effect/floor_decal/corner/yellow/border, /obj/effect/floor_decal/borderfloor/corner2, +/obj/effect/floor_decal/corner/yellow/bordercorner2, /turf/simulated/floor/tiled/techmaint, /area/tether/surfacebase/atrium_two) "nG" = ( /obj/effect/floor_decal/borderfloor, -/obj/machinery/camera/network/northern_star{ +/obj/effect/floor_decal/corner/yellow/border, +/obj/machinery/camera/network/tether{ dir = 1 }, /turf/simulated/floor/tiled/techmaint, @@ -6360,6 +6335,7 @@ dir = 1; pixel_y = -25 }, +/obj/effect/floor_decal/corner/yellow/border, /turf/simulated/floor/tiled/techmaint, /area/tether/surfacebase/atrium_two) "nI" = ( @@ -6370,35 +6346,9 @@ }, /turf/simulated/floor/tiled/techmaint, /area/tether/surfacebase/atrium_two) -"nJ" = ( -/obj/effect/floor_decal/borderfloor, -/obj/effect/floor_decal/borderfloor/corner2{ - dir = 9 - }, -/turf/simulated/floor/tiled/techmaint, -/area/tether/surfacebase/atrium_two) -"nK" = ( -/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, -/obj/machinery/atmospherics/pipe/simple/hidden/supply, -/obj/structure/cable{ - d1 = 1; - d2 = 2; - icon_state = "1-2"; - pixel_y = 0 - }, -/obj/structure/disposalpipe/segment, -/obj/effect/floor_decal/steeldecal/steel_decals4{ - dir = 5 - }, -/obj/effect/floor_decal/steeldecal/steel_decals4{ - dir = 8 - }, -/turf/simulated/floor/tiled/techmaint, -/area/tether/surfacebase/atrium_two) "nL" = ( /obj/effect/floor_decal/borderfloor, /obj/machinery/light/small, -/obj/effect/floor_decal/borderfloor/corner2, /turf/simulated/floor/tiled/techmaint, /area/tether/surfacebase/atrium_two) "nM" = ( @@ -6458,18 +6408,18 @@ "nT" = ( /obj/machinery/atmospherics/pipe/simple/hidden/supply, /obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, -/obj/effect/floor_decal/borderfloor{ - dir = 5 - }, -/obj/effect/floor_decal/corner/mauve/border{ - dir = 5 - }, /obj/structure/cable/green{ d1 = 1; d2 = 2; icon_state = "1-2" }, /obj/structure/disposalpipe/segment, +/obj/effect/floor_decal/borderfloor{ + dir = 1 + }, +/obj/effect/floor_decal/corner/mauve/border{ + dir = 1 + }, /turf/simulated/floor/tiled, /area/rnd/research) "nU" = ( @@ -6501,47 +6451,17 @@ /obj/machinery/door/airlock/glass{ name = "Atmospherics" }, -/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, -/obj/machinery/atmospherics/pipe/simple/hidden/supply, /obj/machinery/door/firedoor/glass, -/obj/machinery/door/blast/regular{ - density = 0; - dir = 4; - icon_state = "pdoor0"; - id = "atmoslockdown"; - name = "Atmospherics Lockdown"; - opacity = 0 - }, /turf/simulated/floor/tiled/steel_grid, /area/engineering/lower/lobby) -"nZ" = ( -/obj/structure/grille, -/obj/structure/window/reinforced/full, -/obj/machinery/door/firedoor, -/obj/machinery/door/blast/regular{ - density = 0; - dir = 4; - icon_state = "pdoor0"; - id = "atmoslockdown"; - name = "Atmospherics Lockdown"; - opacity = 0 - }, -/turf/simulated/floor/plating, -/area/engineering/lower/lobby) "oa" = ( -/obj/machinery/door/firedoor/glass, -/obj/structure/disposalpipe/segment, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/obj/machinery/atmospherics/pipe/simple/hidden/supply, /obj/machinery/door/airlock/glass{ name = "Atmospherics" }, -/obj/machinery/door/blast/regular{ - density = 0; - dir = 4; - icon_state = "pdoor0"; - id = "atmoslockdown"; - name = "Atmospherics Lockdown"; - opacity = 0 - }, +/obj/structure/disposalpipe/segment, +/obj/machinery/door/firedoor/glass, /turf/simulated/floor/tiled/steel_grid, /area/engineering/lower/lobby) "ob" = ( @@ -6550,43 +6470,6 @@ "oc" = ( /turf/simulated/wall, /area/janitor) -"od" = ( -/obj/machinery/door/firedoor/border_only, -/obj/machinery/door/airlock{ - name = "Custodial Closet"; - req_access = list(26) - }, -/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, -/obj/machinery/atmospherics/pipe/simple/hidden/supply, -/obj/structure/cable{ - d1 = 1; - d2 = 2; - icon_state = "1-2"; - pixel_y = 0 - }, -/obj/structure/disposalpipe/segment, -/turf/simulated/floor/tiled/steel_grid, -/area/janitor) -"oe" = ( -/obj/structure/table/reinforced, -/obj/machinery/door/window/eastleft{ - name = "Janitorial Desk"; - icon_state = "left"; - dir = 2 - }, -/obj/machinery/door/window/eastleft{ - name = "Janitorial Desk"; - icon_state = "left"; - dir = 1 - }, -/obj/machinery/door/blast/shutters{ - dir = 2; - id = "janitor_blast"; - layer = 3.3; - name = "Janitorial Shutters" - }, -/turf/simulated/floor/tiled, -/area/janitor) "of" = ( /obj/effect/floor_decal/corner_techfloor_grid{ dir = 9 @@ -6669,19 +6552,14 @@ dir = 5 }, /obj/structure/table/steel, -/obj/item/stack/material/glass{ - amount = 50; - pixel_x = 3; - pixel_y = 3 - }, +/obj/fiftyspawner/glass, /turf/simulated/floor/tiled/techfloor, /area/rnd/workshop) "oo" = ( /obj/machinery/door/firedoor/glass, /obj/machinery/door/airlock/glass_research{ name = "Weapons Testing Range"; - req_access = list(7); - req_one_access = list(7) + req_access = list(47) }, /turf/simulated/floor/tiled, /area/rnd/research/testingrange) @@ -6696,8 +6574,7 @@ /obj/machinery/atmospherics/pipe/simple/hidden/supply, /obj/machinery/door/airlock/glass_research{ name = "Weapons Testing Range"; - req_access = list(7); - req_one_access = list(7) + req_access = list(47) }, /turf/simulated/floor/tiled, /area/rnd/research/testingrange) @@ -6743,12 +6620,6 @@ /turf/simulated/floor/tiled, /area/rnd/research) "ov" = ( -/obj/effect/floor_decal/borderfloor{ - dir = 4 - }, -/obj/effect/floor_decal/corner/mauve/border{ - dir = 4 - }, /obj/machinery/atmospherics/pipe/simple/hidden/supply, /obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, /obj/structure/cable/green{ @@ -6759,311 +6630,111 @@ /obj/structure/disposalpipe/segment, /turf/simulated/floor/tiled, /area/rnd/research) -"ow" = ( -/obj/machinery/atmospherics/pipe/simple/visible/supply{ - dir = 5 - }, -/obj/machinery/atmospherics/pipe/simple/visible/scrubbers{ - dir = 5 - }, -/obj/structure/cable{ - icon_state = "1-4" - }, -/obj/structure/disposalpipe/segment{ - dir = 1; - icon_state = "pipe-c" - }, -/turf/simulated/floor/plating, -/area/maintenance/lower/rnd) -"ox" = ( -/obj/machinery/atmospherics/pipe/simple/visible/supply{ - dir = 4 - }, -/obj/machinery/atmospherics/pipe/simple/visible/scrubbers{ - dir = 4 - }, -/obj/structure/cable{ - icon_state = "4-8" - }, -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/turf/simulated/floor/plating, -/area/maintenance/lower/rnd) "oy" = ( -/obj/machinery/atmospherics/pipe/simple/visible/supply{ - dir = 10 - }, -/obj/machinery/atmospherics/pipe/simple/visible/scrubbers{ - dir = 10 - }, -/obj/structure/cable{ - icon_state = "2-8" - }, -/obj/structure/disposalpipe/segment{ - dir = 2; - icon_state = "pipe-c" - }, -/turf/simulated/floor/plating, -/area/maintenance/lower/rnd) +/turf/simulated/wall, +/area/tether/surfacebase/emergency_storage/atmos) "oz" = ( -/obj/machinery/atmospherics/portables_connector{ - dir = 4 - }, -/obj/effect/floor_decal/industrial/outline, -/obj/machinery/portable_atmospherics/powered/scrubber, -/obj/structure/extinguisher_cabinet{ - pixel_y = 30 - }, -/turf/simulated/floor/tiled/techfloor, -/area/engineering/lower/lobby) -"oA" = ( -/obj/machinery/atmospherics/pipe/simple/hidden/yellow{ - dir = 10 - }, -/obj/effect/floor_decal/borderfloor{ +/obj/effect/floor_decal/borderfloor/shifted{ + icon_state = "borderfloor_shifted"; dir = 1 }, -/obj/effect/floor_decal/corner/yellow/border{ +/obj/effect/floor_decal/corner/red/border/shifted{ + icon_state = "bordercolor_shifted"; dir = 1 }, -/obj/effect/floor_decal/borderfloor/corner2{ - dir = 1 - }, -/obj/effect/floor_decal/corner/yellow/bordercorner2{ - dir = 1 - }, -/obj/machinery/firealarm{ - dir = 2; - layer = 3.3; - pixel_x = 0; - pixel_y = 26 +/obj/effect/floor_decal/corner/yellow{ + icon_state = "corner_white"; + dir = 5 }, +/obj/structure/bed/chair, /turf/simulated/floor/tiled, /area/engineering/lower/lobby) -"oB" = ( -/obj/effect/floor_decal/steeldecal/steel_decals10{ +"oA" = ( +/obj/effect/floor_decal/corner/yellow{ + icon_state = "corner_white"; dir = 1 }, -/obj/effect/floor_decal/steeldecal/steel_decals10{ - dir = 4 +/obj/structure/bed/chair, +/obj/machinery/light{ + dir = 1 + }, +/obj/effect/floor_decal/borderfloor/shifted{ + icon_state = "borderfloor_shifted"; + dir = 6 + }, +/obj/effect/floor_decal/corner/red/border/shifted{ + icon_state = "bordercolor_shifted"; + dir = 6 }, -/obj/effect/decal/cleanable/dirt, -/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, -/obj/machinery/atmospherics/pipe/simple/hidden/supply, /turf/simulated/floor/tiled, /area/engineering/lower/lobby) "oC" = ( /obj/effect/floor_decal/borderfloor{ - dir = 1 + dir = 1; + icon_state = "borderfloor"; + pixel_y = 0 }, /obj/effect/floor_decal/corner/yellow/border{ + icon_state = "bordercolor"; + dir = 1 + }, +/obj/effect/floor_decal/borderfloor/corner2{ dir = 1 }, /obj/effect/floor_decal/borderfloor/corner2{ dir = 4 }, -/obj/effect/floor_decal/borderfloor/corner2{ - dir = 1 - }, /obj/effect/floor_decal/corner/yellow/bordercorner2{ + icon_state = "bordercolorcorner2"; dir = 4 }, /obj/effect/floor_decal/corner/yellow/bordercorner2{ + icon_state = "bordercolorcorner2"; dir = 1 }, /turf/simulated/floor/tiled, /area/engineering/lower/lobby) "oD" = ( -/obj/effect/floor_decal/steeldecal/steel_decals10{ - dir = 4 - }, -/obj/effect/floor_decal/steeldecal/steel_decals10{ +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/obj/structure/disposalpipe/junction{ dir = 1 }, -/obj/effect/decal/cleanable/dirt, -/obj/structure/disposalpipe/sortjunction{ - dir = 1; - icon_state = "pipe-j1s"; - name = "Atmospherics"; - sortType = "Atmospherics" - }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply, /turf/simulated/floor/tiled, /area/engineering/lower/lobby) "oE" = ( /obj/effect/floor_decal/borderfloor{ - dir = 1 + dir = 5 }, /obj/effect/floor_decal/corner/yellow/border{ - dir = 1 + icon_state = "bordercolor"; + dir = 5 }, /obj/effect/floor_decal/borderfloor/corner2{ dir = 4 }, /obj/effect/floor_decal/corner/yellow/bordercorner2{ + icon_state = "bordercolorcorner2"; dir = 4 }, -/obj/machinery/alarm{ - pixel_y = 22 - }, -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/turf/simulated/floor/tiled, -/area/engineering/lower/lobby) -"oF" = ( -/obj/structure/bed/chair{ - dir = 8 - }, -/obj/effect/floor_decal/borderfloor{ - dir = 5 - }, -/obj/effect/floor_decal/corner/yellow/border{ - dir = 5 - }, -/obj/machinery/computer/guestpass{ - pixel_x = 0; - pixel_y = 28 - }, -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/turf/simulated/floor/tiled, -/area/engineering/lower/lobby) -"oG" = ( -/obj/structure/grille, -/obj/structure/window/reinforced/full, -/obj/machinery/door/firedoor, -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/turf/simulated/floor/plating, -/area/engineering/lower/breakroom) -"oH" = ( -/obj/effect/floor_decal/borderfloor{ - dir = 9 - }, -/obj/effect/floor_decal/corner/yellow/border{ - dir = 9 - }, -/obj/machinery/disposal, /obj/structure/disposalpipe/trunk{ dir = 8 }, +/obj/machinery/disposal, /turf/simulated/floor/tiled, +/area/engineering/lower/lobby) +"oG" = ( +/obj/structure/bookcase, +/obj/item/weapon/book/manual/engineering_guide, +/obj/item/weapon/book/manual/engineering_construction, +/obj/item/weapon/book/manual/atmospipes, +/turf/simulated/floor/tiled/dark, /area/engineering/lower/breakroom) -"oI" = ( -/obj/effect/floor_decal/borderfloor{ - dir = 1 +"oH" = ( +/obj/structure/cable/cyan{ + d2 = 2; + icon_state = "0-2" }, -/obj/effect/floor_decal/corner/yellow/border{ - dir = 1 - }, -/obj/machinery/alarm{ - pixel_y = 22 - }, -/turf/simulated/floor/tiled, -/area/engineering/lower/breakroom) -"oJ" = ( -/obj/effect/floor_decal/borderfloor{ - dir = 1 - }, -/obj/effect/floor_decal/corner/yellow/border{ - dir = 1 - }, -/obj/machinery/light_switch{ - pixel_y = 25 - }, -/turf/simulated/floor/tiled, -/area/engineering/lower/breakroom) -"oK" = ( -/obj/effect/floor_decal/borderfloor{ - dir = 1 - }, -/obj/effect/floor_decal/corner/yellow/border{ - dir = 1 - }, -/obj/machinery/firealarm{ - dir = 2; - layer = 3.3; - pixel_x = 0; - pixel_y = 26 - }, -/turf/simulated/floor/tiled, -/area/engineering/lower/breakroom) -"oL" = ( -/obj/effect/floor_decal/borderfloor{ - dir = 1 - }, -/obj/effect/floor_decal/corner/yellow/border{ - dir = 1 - }, -/obj/machinery/camera/network/engineering, -/obj/item/device/radio/intercom{ - dir = 1; - pixel_y = 24; - req_access = list() - }, -/turf/simulated/floor/tiled, -/area/engineering/lower/breakroom) -"oM" = ( -/obj/machinery/vending/snack, -/obj/effect/floor_decal/borderfloor{ - dir = 5 - }, -/obj/effect/floor_decal/corner/yellow/border{ - dir = 5 - }, -/turf/simulated/floor/tiled, -/area/engineering/lower/breakroom) -"oN" = ( -/obj/item/weapon/grenade/chem_grenade/cleaner, -/obj/item/weapon/grenade/chem_grenade/cleaner, -/obj/item/weapon/grenade/chem_grenade/cleaner, -/obj/machinery/requests_console{ - department = "Janitorial"; - departmentType = 1; - pixel_y = 28 - }, -/obj/item/weapon/reagent_containers/spray/cleaner, -/obj/structure/table/steel, -/obj/item/weapon/storage/box/mousetraps, -/obj/item/weapon/storage/box/lights/mixed, -/obj/item/weapon/storage/box/lights/mixed, -/obj/item/weapon/reagent_containers/spray/cleaner, -/obj/machinery/atmospherics/unary/vent_pump/on{ - dir = 4 - }, -/obj/effect/floor_decal/borderfloor{ - dir = 9 - }, -/obj/effect/floor_decal/corner/purple/border{ - dir = 9 - }, -/turf/simulated/floor/tiled, -/area/janitor) -"oO" = ( -/obj/structure/table/steel, -/obj/item/weapon/paper_bin{ - pixel_x = -3; - pixel_y = 7 - }, -/obj/item/weapon/pen, -/obj/machinery/newscaster{ - pixel_y = 32 - }, -/obj/machinery/atmospherics/pipe/simple/hidden/supply{ - dir = 4 - }, -/obj/effect/floor_decal/borderfloor{ - dir = 1 - }, -/obj/effect/floor_decal/corner/purple/border{ - dir = 1 - }, -/turf/simulated/floor/tiled, -/area/janitor) -"oP" = ( /obj/machinery/power/apc{ dir = 1; name = "north bump"; @@ -7071,118 +6742,72 @@ pixel_y = 28 }, /obj/machinery/atmospherics/pipe/simple/hidden/supply{ - dir = 4 - }, -/obj/structure/cable{ - icon_state = "0-4"; - d2 = 4 - }, -/obj/effect/floor_decal/borderfloor{ - dir = 1 - }, -/obj/effect/floor_decal/corner/purple/border{ - dir = 1 - }, -/turf/simulated/floor/tiled, -/area/janitor) -"oQ" = ( -/obj/machinery/status_display{ - pixel_x = 0; - pixel_y = 32 + dir = 6 }, +/turf/simulated/floor/wood, +/area/engineering/lower/breakroom) +"oI" = ( /obj/machinery/atmospherics/pipe/simple/hidden/supply{ dir = 4 }, -/obj/structure/cable{ - d1 = 4; - d2 = 8; - icon_state = "4-8" +/turf/simulated/floor/wood, +/area/engineering/lower/breakroom) +"oJ" = ( +/obj/machinery/atmospherics/unary/vent_pump/on{ + dir = 8 }, +/turf/simulated/floor/wood, +/area/engineering/lower/breakroom) +"oK" = ( +/turf/simulated/floor/wood, +/area/engineering/lower/breakroom) +"oL" = ( +/obj/machinery/newscaster{ + pixel_y = 30 + }, +/turf/simulated/floor/wood, +/area/engineering/lower/breakroom) +"oM" = ( +/obj/machinery/vending/cola, +/turf/simulated/floor/tiled/dark, +/area/engineering/lower/breakroom) +"oN" = ( +/obj/machinery/portable_atmospherics/powered/scrubber/huge/stationary{ + scrub_id = "atrium" + }, +/turf/simulated/floor/tiled/techmaint, +/area/tether/surfacebase/east_stairs_two) +"oO" = ( +/obj/structure/grille, +/obj/structure/railing{ + dir = 4 + }, +/turf/simulated/floor/tiled/techmaint, +/area/tether/surfacebase/east_stairs_two) +"oP" = ( /obj/effect/floor_decal/borderfloor{ - dir = 1 + dir = 8 }, -/obj/effect/floor_decal/corner/purple/border{ - dir = 1 +/obj/effect/floor_decal/industrial/danger{ + dir = 8 }, -/obj/effect/floor_decal/borderfloor/corner2{ - dir = 1 - }, -/obj/effect/floor_decal/corner/purple/bordercorner2{ - dir = 1 - }, -/turf/simulated/floor/tiled, -/area/janitor) -"oR" = ( /obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, -/obj/machinery/atmospherics/pipe/simple/hidden/supply{ - dir = 9 - }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/structure/disposalpipe/segment, /obj/structure/cable{ d1 = 1; - d2 = 8; - icon_state = "1-8" - }, -/obj/structure/disposalpipe/segment, -/obj/effect/floor_decal/steeldecal/steel_decals4{ - dir = 4 - }, -/obj/effect/floor_decal/steeldecal/steel_decals4{ - dir = 9 - }, -/turf/simulated/floor/tiled, -/area/janitor) -"oS" = ( -/obj/machinery/alarm{ - pixel_y = 22 - }, -/obj/effect/floor_decal/borderfloor{ - dir = 1 - }, -/obj/effect/floor_decal/corner/purple/border{ - dir = 1 - }, -/obj/effect/floor_decal/borderfloor/corner2{ - dir = 4 - }, -/obj/effect/floor_decal/corner/purple/bordercorner2{ - dir = 4 - }, -/obj/machinery/camera/network/civilian, -/turf/simulated/floor/tiled, -/area/janitor) -"oT" = ( -/obj/effect/floor_decal/borderfloor{ - dir = 1 - }, -/obj/effect/floor_decal/corner/purple/border{ - dir = 1 - }, -/turf/simulated/floor/tiled, -/area/janitor) -"oU" = ( -/obj/structure/extinguisher_cabinet{ - pixel_x = 25; + d2 = 2; + icon_state = "1-2"; pixel_y = 0 }, -/obj/machinery/light_switch{ - pixel_x = 34; - pixel_y = 1 - }, -/obj/machinery/button/remote/blast_door{ - id = "janitor_blast"; - name = "Privacy Shutters"; - pixel_x = 0; - pixel_y = 24; - pixel_z = 0 - }, +/turf/simulated/floor/tiled/techmaint, +/area/tether/surfacebase/east_stairs_two) +"oQ" = ( /obj/effect/floor_decal/borderfloor{ - dir = 5 + dir = 4 }, -/obj/effect/floor_decal/corner/purple/border{ - dir = 5 - }, -/turf/simulated/floor/tiled, -/area/janitor) +/turf/simulated/floor/tiled/techmaint, +/area/tether/surfacebase/east_stairs_two) "oV" = ( /obj/effect/floor_decal/corner_techfloor_grid{ dir = 9 @@ -7199,9 +6824,21 @@ /turf/simulated/floor/tiled/techfloor, /area/maintenance/lower/bar) "oX" = ( -/obj/machinery/door/airlock/maintenance/common, +/obj/structure/cable/green{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/obj/machinery/door/airlock/engineering{ + name = "Science Substation"; + req_one_access = list(11,24,47) + }, +/obj/machinery/door/firedoor, +/obj/structure/cable{ + icon_state = "4-8" + }, /turf/simulated/floor, -/area/maintenance/lower/bar) +/area/maintenance/substation/research) "oY" = ( /obj/effect/floor_decal/techfloor{ dir = 8 @@ -7377,121 +7014,99 @@ /turf/simulated/floor/tiled, /area/rnd/research) "pl" = ( -/obj/machinery/atmospherics/pipe/simple/visible/scrubbers, -/obj/machinery/atmospherics/pipe/simple/visible/supply, -/obj/structure/cable{ - icon_state = "1-2" - }, -/obj/structure/cable{ - d1 = 1; - d2 = 4; - icon_state = "1-4" - }, -/obj/structure/disposalpipe/segment, -/obj/effect/floor_decal/industrial/warning/corner, +/obj/machinery/portable_atmospherics/powered/pump/filled, /turf/simulated/floor/plating, -/area/maintenance/substation/surface_atmos) +/area/tether/surfacebase/emergency_storage/atmos) "pm" = ( -/obj/structure/cable{ - d1 = 2; - d2 = 8; - icon_state = "2-8" - }, -/obj/effect/floor_decal/industrial/warning, -/turf/simulated/floor/plating, -/area/maintenance/substation/surface_atmos) -"pn" = ( -/turf/simulated/wall, -/area/maintenance/substation/surface_atmos) -"po" = ( +/obj/machinery/space_heater, /obj/effect/decal/cleanable/dirt, /turf/simulated/floor/plating, -/area/maintenance/substation/surface_atmos) +/area/tether/surfacebase/emergency_storage/atmos) +"pn" = ( +/obj/structure/cable/cyan{ + d2 = 2; + icon_state = "0-2" + }, +/obj/machinery/power/apc{ + dir = 1; + name = "north bump"; + pixel_x = 0; + pixel_y = 28 + }, +/obj/effect/decal/cleanable/dirt, +/turf/simulated/floor/plating, +/area/tether/surfacebase/emergency_storage/atmos) +"po" = ( +/obj/machinery/light_switch{ + dir = 4; + pixel_x = -28 + }, +/obj/machinery/camera/network/engineering, +/obj/machinery/atmospherics/unary/vent_pump/on, +/turf/simulated/floor/tiled, +/area/engineering/lower/lobby) "pp" = ( -/obj/machinery/atmospherics/portables_connector{ +/obj/machinery/atmospherics/pipe/simple/hidden/red{ + icon_state = "intact"; dir = 4 }, -/obj/effect/floor_decal/industrial/outline, -/obj/machinery/portable_atmospherics/powered/scrubber, -/turf/simulated/floor/tiled/techfloor, -/area/engineering/lower/lobby) -"pq" = ( -/obj/machinery/atmospherics/pipe/manifold/hidden/yellow{ - dir = 4 - }, -/turf/simulated/floor/tiled, -/area/engineering/lower/lobby) -"pr" = ( -/obj/machinery/atmospherics/pipe/simple/hidden/supply, -/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{ - dir = 8 - }, -/turf/simulated/floor/tiled, -/area/engineering/lower/lobby) -"ps" = ( -/obj/machinery/atmospherics/unary/vent_scrubber/on{ - dir = 8 - }, /turf/simulated/floor/tiled, /area/engineering/lower/lobby) "pt" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/red{ + icon_state = "intact"; + dir = 10 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, /obj/structure/disposalpipe/segment, +/obj/machinery/atmospherics/pipe/manifold/hidden/supply{ + dir = 8 + }, /turf/simulated/floor/tiled, /area/engineering/lower/lobby) "pu" = ( /turf/simulated/floor/tiled, /area/engineering/lower/lobby) -"pv" = ( -/obj/structure/bed/chair{ - dir = 8 - }, -/obj/effect/floor_decal/borderfloor{ - dir = 4 - }, -/obj/effect/floor_decal/corner/yellow/border{ - dir = 4 - }, -/turf/simulated/floor/tiled, -/area/engineering/lower/lobby) "pw" = ( -/obj/structure/grille, -/obj/structure/window/reinforced/full, -/obj/machinery/door/firedoor, -/turf/simulated/floor/plating, +/obj/structure/cable/cyan{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/turf/simulated/floor/tiled/dark, /area/engineering/lower/breakroom) "px" = ( -/turf/simulated/floor/carpet, +/obj/structure/cable/cyan{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/turf/simulated/floor/wood, /area/engineering/lower/breakroom) "py" = ( /obj/structure/bed/chair, /turf/simulated/floor/carpet, /area/engineering/lower/breakroom) "pz" = ( -/turf/simulated/floor/tiled, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/turf/simulated/floor/wood, /area/engineering/lower/breakroom) "pA" = ( -/obj/machinery/vending/cola, -/obj/effect/floor_decal/borderfloor{ - dir = 4 - }, -/obj/effect/floor_decal/corner/yellow/border{ - dir = 4 - }, -/turf/simulated/floor/tiled, +/obj/machinery/vending/snack, +/turf/simulated/floor/tiled/dark, /area/engineering/lower/breakroom) -"pB" = ( -/obj/effect/floor_decal/borderfloor{ - dir = 8 - }, -/obj/effect/floor_decal/corner/purple/border{ - dir = 8 - }, -/obj/item/weapon/stool/padded, -/obj/effect/landmark/start{ - name = "Janitor" - }, -/turf/simulated/floor/tiled, -/area/janitor) "pC" = ( /obj/item/weapon/stool/padded, /obj/effect/landmark/start{ @@ -7502,22 +7117,6 @@ "pD" = ( /turf/simulated/floor/tiled, /area/janitor) -"pE" = ( -/obj/machinery/hologram/holopad, -/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, -/obj/structure/disposalpipe/segment, -/turf/simulated/floor/tiled, -/area/janitor) -"pF" = ( -/obj/structure/janitorialcart, -/obj/effect/floor_decal/borderfloor{ - dir = 4 - }, -/obj/effect/floor_decal/corner/purple/border{ - dir = 4 - }, -/turf/simulated/floor/tiled, -/area/janitor) "pG" = ( /obj/effect/floor_decal/corner_techfloor_grid{ dir = 9 @@ -7682,42 +7281,14 @@ /turf/simulated/floor/tiled, /area/rnd/research) "pT" = ( -/obj/effect/floor_decal/borderfloor/corner{ - dir = 4 - }, -/obj/effect/floor_decal/corner/mauve/bordercorner{ - dir = 4 - }, -/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/structure/disposalpipe/segment, /obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/obj/machinery/atmospherics/pipe/simple/hidden/supply, /obj/structure/cable/green{ d1 = 1; d2 = 2; icon_state = "1-2" }, -/obj/structure/cable/green{ - d1 = 2; - d2 = 4; - icon_state = "2-4" - }, -/obj/structure/disposalpipe/segment, -/turf/simulated/floor/tiled, -/area/rnd/research) -"pU" = ( -/obj/effect/floor_decal/borderfloor{ - dir = 1 - }, -/obj/effect/floor_decal/corner/mauve/border{ - dir = 1 - }, -/obj/structure/cable/green{ - d1 = 4; - d2 = 8; - icon_state = "4-8" - }, -/obj/machinery/light_switch{ - pixel_y = 25 - }, /turf/simulated/floor/tiled, /area/rnd/research) "pV" = ( @@ -7751,14 +7322,8 @@ /obj/structure/table/standard{ name = "plastic table frame" }, -/obj/item/stack/material/glass{ - amount = 50; - pixel_x = 3; - pixel_y = 3 - }, -/obj/item/stack/material/steel{ - amount = 50 - }, +/obj/fiftyspawner/glass, +/obj/fiftyspawner/steel, /obj/item/clothing/glasses/welding, /obj/effect/floor_decal/borderfloor{ dir = 1 @@ -7789,181 +7354,162 @@ }, /turf/simulated/floor/tiled, /area/rnd/research) -"pY" = ( -/obj/item/weapon/stock_parts/console_screen, -/obj/structure/table/standard, -/obj/item/weapon/stock_parts/console_screen, -/obj/item/weapon/stock_parts/console_screen, -/obj/item/weapon/stock_parts/matter_bin, -/obj/item/weapon/stock_parts/matter_bin, -/obj/machinery/recharger{ - pixel_y = 0 - }, -/obj/effect/floor_decal/borderfloor{ - dir = 5 - }, -/obj/effect/floor_decal/corner/mauve/border{ - dir = 5 - }, -/turf/simulated/floor/tiled, -/area/rnd/research) "pZ" = ( -/obj/machinery/atmospherics/pipe/simple/visible/scrubbers, -/obj/machinery/atmospherics/pipe/simple/visible/supply, -/obj/structure/cable{ - icon_state = "1-2" - }, -/obj/structure/disposalpipe/segment, -/obj/effect/floor_decal/industrial/warning{ - dir = 4 - }, +/obj/effect/decal/cleanable/dirt, /turf/simulated/floor/plating, -/area/maintenance/substation/surface_atmos) +/area/tether/surfacebase/emergency_storage/atmos) "qa" = ( -/obj/machinery/power/breakerbox/activated{ - RCon_tag = "Atmos Substation Bypass" +/obj/effect/decal/cleanable/dirt, +/obj/effect/floor_decal/rust, +/turf/simulated/floor/plating, +/area/tether/surfacebase/emergency_storage/atmos) +"qb" = ( +/obj/structure/cable/cyan{ + d1 = 1; + d2 = 4; + icon_state = "1-4" }, /turf/simulated/floor/plating, -/area/maintenance/substation/surface_atmos) -"qb" = ( -/obj/structure/sign/warning/high_voltage, -/turf/simulated/wall, -/area/maintenance/substation/surface_atmos) -"qc" = ( -/obj/machinery/atmospherics/pipe/manifold/hidden/yellow, -/turf/simulated/floor/tiled, -/area/engineering/lower/lobby) +/area/tether/surfacebase/emergency_storage/atmos) "qd" = ( -/obj/machinery/atmospherics/pipe/simple/hidden/yellow{ +/obj/structure/cable/cyan{ + d1 = 2; + d2 = 4; + icon_state = "2-4" + }, +/obj/structure/cable/cyan{ + d1 = 2; + d2 = 8; + icon_state = "2-8" + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ dir = 4 }, -/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, -/obj/machinery/atmospherics/pipe/simple/hidden/supply, /turf/simulated/floor/tiled, /area/engineering/lower/lobby) "qe" = ( -/obj/machinery/atmospherics/pipe/simple/hidden/yellow{ - dir = 4 +/obj/structure/cable/cyan{ + d1 = 4; + d2 = 8; + icon_state = "4-8" }, /obj/machinery/hologram/holopad, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, /turf/simulated/floor/tiled, /area/engineering/lower/lobby) "qf" = ( -/obj/machinery/atmospherics/pipe/simple/hidden/yellow{ - dir = 10 +/obj/structure/cable/cyan{ + d1 = 4; + d2 = 8; + icon_state = "4-8" }, +/obj/machinery/atmospherics/pipe/simple/hidden/red, /obj/structure/disposalpipe/junction{ dir = 1 }, +/obj/machinery/atmospherics/pipe/manifold4w/hidden/scrubbers, +/obj/machinery/atmospherics/pipe/manifold4w/hidden/supply, /turf/simulated/floor/tiled, /area/engineering/lower/lobby) "qg" = ( +/obj/structure/cable/cyan{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, /obj/structure/disposalpipe/segment{ dir = 4 }, /turf/simulated/floor/tiled, /area/engineering/lower/lobby) "qh" = ( -/obj/effect/floor_decal/borderfloor{ +/obj/structure/cable/cyan{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ dir = 4 }, -/obj/effect/floor_decal/corner/yellow/border{ +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ dir = 4 }, -/obj/machinery/disposal, -/obj/structure/disposalpipe/trunk{ - dir = 8 +/obj/machinery/door/airlock/glass_atmos{ + name = "Atmospherics"; + req_access = list(24) }, -/turf/simulated/floor/tiled, -/area/engineering/lower/lobby) +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/machinery/door/firedoor/glass, +/turf/simulated/floor/wood, +/area/engineering/lower/breakroom) "qi" = ( -/obj/structure/bed/chair{ - dir = 4 - }, -/turf/simulated/floor/carpet, -/area/engineering/lower/breakroom) -"qj" = ( -/obj/structure/table/glass, -/turf/simulated/floor/carpet, -/area/engineering/lower/breakroom) -"qk" = ( -/obj/structure/table/glass, -/obj/machinery/computer/atmoscontrol/laptop, -/turf/simulated/floor/carpet, -/area/engineering/lower/breakroom) -"ql" = ( -/obj/structure/bed/chair{ - dir = 8 - }, -/turf/simulated/floor/carpet, -/area/engineering/lower/breakroom) -"qm" = ( -/obj/machinery/vending/coffee, -/obj/effect/floor_decal/borderfloor{ - dir = 4 - }, -/obj/effect/floor_decal/corner/yellow/border{ - dir = 4 - }, -/turf/simulated/floor/tiled, -/area/engineering/lower/breakroom) -"qn" = ( -/obj/effect/decal/cleanable/dirt, -/obj/effect/floor_decal/rust, -/obj/random/trash_pile, -/turf/simulated/floor/tiled/techfloor, -/area/maintenance/lower/south) -"qo" = ( -/obj/machinery/light{ - dir = 8; - icon_state = "tube1"; - pixel_y = 0 - }, -/obj/effect/floor_decal/borderfloor{ - dir = 8 - }, -/obj/effect/floor_decal/corner/purple/border{ - dir = 8 - }, -/turf/simulated/floor/tiled, -/area/janitor) -"qp" = ( -/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ - dir = 5 - }, -/obj/structure/disposalpipe/segment, -/turf/simulated/floor/tiled, -/area/janitor) -"qq" = ( -/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ - dir = 4 - }, -/turf/simulated/floor/tiled, -/area/janitor) -"qr" = ( -/obj/structure/janitorialcart, -/obj/machinery/light{ - icon_state = "tube1"; - dir = 4 +/obj/structure/cable/cyan{ + d1 = 1; + d2 = 8; + icon_state = "1-8" }, /obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ dir = 10 }, -/obj/effect/floor_decal/borderfloor{ +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 9; + pixel_y = 0 + }, +/obj/structure/disposalpipe/segment{ dir = 4 }, -/obj/effect/floor_decal/corner/purple/border{ +/turf/simulated/floor/wood, +/area/engineering/lower/breakroom) +"qj" = ( +/obj/structure/table/glass, +/obj/structure/disposalpipe/segment{ dir = 4 }, -/turf/simulated/floor/tiled, -/area/janitor) +/turf/simulated/floor/carpet, +/area/engineering/lower/breakroom) +"qk" = ( +/obj/machinery/hologram/holopad, +/obj/structure/table/glass, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/turf/simulated/floor/carpet, +/area/engineering/lower/breakroom) +"qm" = ( +/obj/machinery/light{ + dir = 4 + }, +/obj/structure/disposalpipe/trunk{ + dir = 8 + }, +/obj/machinery/disposal, +/turf/simulated/floor/tiled/dark, +/area/engineering/lower/breakroom) "qs" = ( -/obj/effect/floor_decal/corner_techfloor_grid{ - dir = 9 +/obj/structure/railing{ + dir = 8 + }, +/obj/effect/floor_decal/corner_techfloor_grid/full{ + dir = 1 }, -/obj/random/trash_pile, /turf/simulated/floor/tiled/techfloor, -/area/maintenance/lower/bar) +/area/maintenance/lower/south) "qt" = ( /obj/structure/railing{ dir = 8 @@ -8020,7 +7566,8 @@ /obj/machinery/door/firedoor/glass, /obj/machinery/door/airlock/glass_research{ name = "Workshop"; - req_access = list(47) + req_access = list(7); + req_one_access = list(7) }, /turf/simulated/floor/tiled/steel_grid, /area/rnd/workshop) @@ -8129,14 +7676,14 @@ /turf/simulated/floor/tiled, /area/rnd/research) "qI" = ( -/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers, -/obj/machinery/atmospherics/pipe/manifold/hidden/supply, /obj/structure/cable/green{ d1 = 1; d2 = 2; icon_state = "1-2" }, /obj/structure/disposalpipe/segment, +/obj/machinery/atmospherics/pipe/manifold4w/hidden/scrubbers, +/obj/machinery/atmospherics/pipe/manifold4w/hidden/supply, /turf/simulated/floor/tiled, /area/rnd/research) "qJ" = ( @@ -8185,185 +7732,93 @@ /turf/simulated/floor/tiled, /area/rnd/research) "qN" = ( -/obj/machinery/atmospherics/pipe/simple/visible/scrubbers, -/obj/machinery/atmospherics/pipe/simple/visible/supply, -/obj/machinery/power/terminal{ - dir = 4 - }, -/obj/structure/cable, -/obj/structure/disposalpipe/segment, -/obj/effect/floor_decal/industrial/warning{ - dir = 4 +/obj/structure/table/rack{ + dir = 1 }, +/obj/item/clothing/suit/fire/firefighter, +/obj/item/weapon/tank/oxygen, +/obj/item/clothing/mask/gas, +/obj/item/weapon/extinguisher, +/obj/item/clothing/head/hardhat/red, +/obj/item/clothing/glasses/meson, +/obj/random/maintenance/clean, +/obj/random/maintenance/research, /turf/simulated/floor/plating, -/area/maintenance/substation/surface_atmos) +/area/tether/surfacebase/emergency_storage/atmos) "qO" = ( -/obj/structure/cable/cyan{ - d2 = 2; - icon_state = "0-2" - }, -/obj/structure/cable/cyan, -/obj/machinery/power/smes/buildable{ - charge = 2e+006; - RCon_tag = "Substation - Atmospherics" - }, -/turf/simulated/floor, -/area/maintenance/substation/surface_atmos) +/obj/structure/table/standard, +/obj/item/device/t_scanner, +/obj/item/weapon/storage/box/lights/mixed, +/obj/item/weapon/storage/box/lights/mixed, +/obj/item/weapon/storage/briefcase/inflatable, +/obj/random/maintenance/clean, +/obj/random/maintenance/medical, +/obj/random/maintenance/research, +/obj/random/tech_supply, +/obj/effect/decal/cleanable/dirt, +/turf/simulated/floor/plating, +/area/tether/surfacebase/emergency_storage/atmos) "qP" = ( -/obj/effect/floor_decal/industrial/hatch/yellow, -/obj/machinery/light{ - dir = 8; - icon_state = "tube1"; - pixel_y = 0 - }, -/obj/item/device/radio/intercom{ - dir = 8; - pixel_x = -24 +/obj/machinery/atmospherics/pipe/simple/hidden/cyan{ + dir = 4 }, /turf/simulated/floor/tiled, /area/engineering/lower/lobby) "qQ" = ( -/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, -/obj/machinery/atmospherics/pipe/manifold/hidden/supply{ - dir = 8 +/obj/structure/cable/cyan{ + d1 = 1; + d2 = 2; + icon_state = "1-2" }, -/turf/simulated/floor/tiled, -/area/engineering/lower/lobby) -"qR" = ( -/obj/machinery/atmospherics/unary/vent_pump/on{ - dir = 8 +/obj/machinery/atmospherics/pipe/simple/hidden/cyan{ + dir = 10; + icon_state = "intact" }, /turf/simulated/floor/tiled, /area/engineering/lower/lobby) "qS" = ( -/obj/machinery/atmospherics/pipe/simple/hidden/yellow, -/obj/structure/disposalpipe/junction{ - dir = 1 - }, -/turf/simulated/floor/tiled, -/area/engineering/lower/lobby) -"qT" = ( -/obj/effect/floor_decal/borderfloor{ - dir = 4 - }, -/obj/effect/floor_decal/corner/yellow/border{ - dir = 4 - }, -/obj/structure/disposalpipe/segment{ - dir = 4 +/obj/machinery/atmospherics/pipe/simple/hidden/red, +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/structure/disposalpipe/segment, +/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{ + dir = 8 }, /turf/simulated/floor/tiled, /area/engineering/lower/lobby) "qU" = ( -/obj/structure/bed/chair{ - dir = 4 - }, -/obj/structure/disposalpipe/segment{ - dir = 2; - icon_state = "pipe-c" - }, -/turf/simulated/floor/carpet, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/turf/simulated/floor/wood, /area/engineering/lower/breakroom) "qV" = ( -/obj/machinery/vending/cigarette, -/obj/machinery/light{ - dir = 4; - icon_state = "tube1"; - pixel_x = 0 - }, -/obj/effect/floor_decal/borderfloor{ - dir = 4 - }, -/obj/effect/floor_decal/corner/yellow/border{ - dir = 4 - }, -/turf/simulated/floor/tiled, +/obj/structure/table/glass, +/obj/item/weapon/storage/box/cups, +/obj/item/weapon/storage/box/cups, +/turf/simulated/floor/tiled/dark, /area/engineering/lower/breakroom) "qW" = ( /obj/effect/decal/cleanable/dirt, /turf/simulated/floor/tiled/techfloor, /area/maintenance/lower/south) -"qX" = ( -/obj/structure/closet/l3closet/janitor, -/obj/effect/floor_decal/borderfloor{ - dir = 10 - }, -/obj/effect/floor_decal/corner/purple/border{ - dir = 10 - }, -/turf/simulated/floor/tiled, -/area/janitor) "qY" = ( -/obj/structure/closet/jcloset, -/obj/item/weapon/soap/nanotrasen, -/obj/effect/floor_decal/borderfloor, -/obj/effect/floor_decal/corner/purple/border, -/turf/simulated/floor/tiled, -/area/janitor) -"qZ" = ( -/obj/machinery/firealarm{ - dir = 1; - pixel_x = 0; - pixel_y = -26 - }, -/obj/structure/mopbucket, -/obj/item/weapon/mop, -/obj/item/weapon/reagent_containers/glass/bucket, -/obj/effect/floor_decal/borderfloor, -/obj/effect/floor_decal/corner/purple/border, -/turf/simulated/floor/tiled, -/area/janitor) -"ra" = ( -/obj/structure/mopbucket, -/obj/item/weapon/mop, -/obj/item/weapon/reagent_containers/glass/bucket, -/obj/effect/floor_decal/borderfloor, -/obj/effect/floor_decal/corner/purple/border, -/obj/structure/disposalpipe/segment{ - dir = 1; - icon_state = "pipe-c" - }, -/turf/simulated/floor/tiled, -/area/janitor) -"rb" = ( -/obj/effect/floor_decal/borderfloor, -/obj/effect/floor_decal/corner/purple/border, -/obj/effect/floor_decal/borderfloor/corner2{ - dir = 9 - }, -/obj/effect/floor_decal/corner/purple/bordercorner2{ - dir = 9 - }, -/obj/machinery/disposal, -/obj/structure/disposalpipe/trunk{ - dir = 8 - }, -/turf/simulated/floor/tiled, -/area/janitor) -"rc" = ( -/obj/effect/floor_decal/steeldecal/steel_decals4{ - dir = 5 - }, -/obj/effect/floor_decal/steeldecal/steel_decals4{ - dir = 8 - }, -/turf/simulated/floor/tiled, -/area/janitor) -"rd" = ( -/obj/structure/reagent_dispensers/watertank, -/obj/machinery/atmospherics/unary/vent_scrubber/on{ - dir = 1 - }, /obj/effect/floor_decal/borderfloor{ - dir = 6 + dir = 8 }, -/obj/effect/floor_decal/corner/purple/border{ - dir = 6 +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/structure/disposalpipe/segment, +/obj/structure/cable{ + d1 = 1; + d2 = 2; + icon_state = "1-2" }, -/obj/effect/floor_decal/borderfloor/corner2, -/obj/effect/floor_decal/corner/purple/bordercorner2, -/turf/simulated/floor/tiled, -/area/janitor) +/obj/machinery/alarm{ + dir = 4; + icon_state = "alarm0"; + pixel_x = -22; + pixel_y = 0 + }, +/turf/simulated/floor/tiled/techmaint, +/area/tether/surfacebase/east_stairs_two) "re" = ( /obj/effect/floor_decal/rust, /obj/effect/floor_decal/corner_techfloor_grid{ @@ -8377,7 +7832,7 @@ /obj/random/maintenance/clean, /obj/random/maintenance/clean, /turf/simulated/floor/tiled/techfloor, -/area/maintenance/lower/bar) +/area/maintenance/lower/south) "rf" = ( /obj/structure/railing{ dir = 4 @@ -8586,10 +8041,9 @@ d2 = 2; icon_state = "1-2" }, -/obj/structure/disposalpipe/junction{ - dir = 1; - icon_state = "pipe-j2" - }, +/obj/structure/disposalpipe/junction, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/obj/machinery/atmospherics/pipe/simple/hidden/supply, /turf/simulated/floor/tiled, /area/rnd/research) "ry" = ( @@ -8599,15 +8053,15 @@ /turf/simulated/floor/tiled, /area/rnd/research) "rz" = ( -/obj/machinery/atmospherics/pipe/manifold/hidden/supply{ - dir = 4 - }, -/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{ - dir = 8 - }, /obj/effect/landmark/start{ name = "Scientist" }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 5 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 9 + }, /turf/simulated/floor/tiled, /area/rnd/research) "rA" = ( @@ -8636,82 +8090,60 @@ /turf/simulated/floor/tiled, /area/rnd/research) "rC" = ( -/obj/machinery/atmospherics/pipe/simple/visible/scrubbers, -/obj/machinery/atmospherics/pipe/simple/visible/supply, -/obj/machinery/alarm{ - dir = 4; - icon_state = "alarm0"; - pixel_x = -22; - pixel_y = 0 +/turf/simulated/wall/r_wall, +/area/engineering/lower/atmos_eva) +"rE" = ( +/obj/effect/floor_decal/borderfloor/shifted, +/obj/effect/floor_decal/corner/white/border/shifted, +/obj/effect/floor_decal/corner/yellow{ + icon_state = "corner_white"; + dir = 10 }, -/obj/effect/decal/cleanable/dirt, -/obj/structure/disposalpipe/segment, -/obj/effect/floor_decal/industrial/warning/corner{ - dir = 4 - }, -/obj/random/junk, -/turf/simulated/floor/plating, -/area/maintenance/substation/surface_atmos) -"rD" = ( -/obj/machinery/power/sensor{ - name = "Powernet Sensor - Atmospherics Subgrid"; - name_tag = "Atmospherics Subgrid" - }, -/obj/effect/decal/cleanable/dirt, -/obj/effect/floor_decal/industrial/warning{ - icon_state = "warning"; +/obj/structure/bed/chair{ dir = 1 }, -/obj/structure/cable/cyan, -/obj/structure/cable/cyan{ - d2 = 2; - icon_state = "0-2" - }, -/turf/simulated/floor/plating, -/area/maintenance/substation/surface_atmos) -"rE" = ( -/obj/machinery/atmospherics/portables_connector{ - dir = 4 - }, -/obj/effect/floor_decal/industrial/outline/blue, -/obj/machinery/portable_atmospherics/powered/pump/filled, -/turf/simulated/floor/tiled/techfloor, +/turf/simulated/floor/tiled, /area/engineering/lower/lobby) "rF" = ( -/obj/machinery/atmospherics/pipe/simple/hidden/cyan{ - dir = 10; - icon_state = "intact" +/obj/effect/floor_decal/corner/yellow{ + icon_state = "corner_white"; + dir = 8 + }, +/obj/structure/bed/chair{ + dir = 1 + }, +/obj/machinery/light, +/obj/effect/floor_decal/borderfloor/shifted{ + icon_state = "borderfloor_shifted"; + dir = 5 + }, +/obj/effect/floor_decal/corner/blue/border/shifted{ + icon_state = "bordercolor_shifted"; + dir = 5 }, /turf/simulated/floor/tiled, /area/engineering/lower/lobby) "rG" = ( -/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, -/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/structure/cable/cyan{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/obj/machinery/atmospherics/pipe/simple/hidden/cyan, /turf/simulated/floor/tiled, /area/engineering/lower/lobby) "rH" = ( -/obj/machinery/atmospherics/pipe/simple/hidden/yellow, +/obj/machinery/atmospherics/pipe/simple/hidden/red, +/obj/machinery/atmospherics/pipe/simple/hidden/supply, /obj/structure/disposalpipe/segment, -/turf/simulated/floor/tiled, -/area/engineering/lower/lobby) -"rI" = ( -/obj/effect/floor_decal/borderfloor{ - dir = 4 - }, -/obj/effect/floor_decal/corner/yellow/border{ - dir = 4 - }, -/obj/effect/floor_decal/borderfloor/corner2{ - dir = 5 - }, -/obj/effect/floor_decal/corner/yellow/bordercorner2{ - dir = 5 - }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, /turf/simulated/floor/tiled, /area/engineering/lower/lobby) "rJ" = ( -/obj/structure/disposalpipe/segment, -/turf/simulated/floor/carpet, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 5 + }, +/turf/simulated/floor/wood, /area/engineering/lower/breakroom) "rK" = ( /obj/structure/bed/chair{ @@ -8719,37 +8151,11 @@ }, /turf/simulated/floor/carpet, /area/engineering/lower/breakroom) -"rL" = ( -/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ - dir = 6 - }, -/turf/simulated/floor/tiled, -/area/engineering/lower/breakroom) "rM" = ( /obj/structure/table/glass, -/obj/effect/floor_decal/borderfloor{ - dir = 4 - }, -/obj/effect/floor_decal/corner/yellow/border{ - dir = 4 - }, -/obj/machinery/atmospherics/unary/vent_scrubber/on{ - dir = 8 - }, -/obj/item/weapon/storage/box/glasses/pint, -/obj/machinery/requests_console/preset/engineering{ - pixel_x = 30 - }, -/turf/simulated/floor/tiled, +/obj/machinery/chemical_dispenser/bar_soft/full, +/turf/simulated/floor/tiled/dark, /area/engineering/lower/breakroom) -"rN" = ( -/obj/machinery/door/airlock/maintenance{ - name = "Custodial Maintenance"; - req_access = list(26) - }, -/obj/machinery/door/firedoor/border_only, -/turf/simulated/floor/tiled/steel_grid, -/area/janitor) "rO" = ( /turf/simulated/wall, /area/tether/surfacebase/east_stairs_two) @@ -8785,14 +8191,13 @@ /turf/simulated/floor/tiled/techfloor, /area/maintenance/lower/south) "rS" = ( -/obj/structure/railing{ - dir = 8 +/obj/structure/cable/cyan{ + d1 = 4; + d2 = 8; + icon_state = "4-8" }, -/obj/effect/floor_decal/corner_techfloor_grid/full{ - dir = 1 - }, -/turf/simulated/floor/tiled/techfloor, -/area/maintenance/lower/south) +/turf/simulated/floor/tiled, +/area/engineering/lower/atmos_eva) "rT" = ( /obj/structure/catwalk, /obj/effect/decal/cleanable/dirt, @@ -8851,7 +8256,8 @@ }, /obj/machinery/door/airlock/glass_research{ name = "Workshop"; - req_access = list(47) + req_access = list(7); + req_one_access = list(7) }, /turf/simulated/floor/tiled/steel_grid, /area/rnd/workshop) @@ -8932,15 +8338,12 @@ d2 = 8; icon_state = "1-8" }, -/obj/structure/cable/green{ - d1 = 2; - d2 = 8; - icon_state = "2-8" - }, -/obj/structure/disposalpipe/segment{ - dir = 1; - icon_state = "pipe-c" +/obj/structure/disposalpipe/junction{ + icon_state = "pipe-j2"; + dir = 2 }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/obj/machinery/atmospherics/pipe/simple/hidden/supply, /turf/simulated/floor/tiled/steel_grid, /area/rnd/research) "se" = ( @@ -8950,15 +8353,6 @@ }, /turf/simulated/floor/tiled/steel_grid, /area/rnd/research) -"sf" = ( -/obj/effect/floor_decal/industrial/warning, -/obj/machinery/atmospherics/pipe/simple/hidden/supply, -/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/turf/simulated/floor/tiled/steel_grid, -/area/rnd/research) "sg" = ( /obj/effect/floor_decal/industrial/warning/corner{ dir = 8 @@ -8982,271 +8376,83 @@ /turf/simulated/floor/tiled, /area/rnd/research) "si" = ( -/obj/machinery/atmospherics/pipe/simple/visible/scrubbers, -/obj/machinery/atmospherics/pipe/simple/visible/supply, -/obj/structure/cable/cyan{ - d1 = 2; - d2 = 4; - icon_state = "2-4" +/obj/effect/floor_decal/borderfloor{ + dir = 9 }, -/obj/effect/decal/cleanable/dirt, -/obj/structure/disposalpipe/segment, -/turf/simulated/floor/plating, -/area/maintenance/substation/surface_atmos) +/obj/effect/floor_decal/corner/yellow/border{ + icon_state = "bordercolor"; + dir = 9 + }, +/obj/structure/table/rack{ + dir = 8; + layer = 2.9 + }, +/obj/machinery/door/window/northleft{ + dir = 4; + name = "Atmospherics Hardsuits"; + req_access = list(24) + }, +/obj/item/clothing/shoes/magboots, +/obj/item/clothing/mask/breath, +/obj/item/clothing/suit/space/void/atmos, +/obj/item/clothing/head/helmet/space/void/atmos, +/turf/simulated/floor/tiled, +/area/engineering/lower/atmos_eva) "sj" = ( +/obj/effect/floor_decal/borderfloor{ + dir = 1; + icon_state = "borderfloor"; + pixel_y = 0 + }, +/obj/effect/floor_decal/corner/yellow/border{ + icon_state = "bordercolor"; + dir = 1 + }, +/turf/simulated/floor/tiled, +/area/engineering/lower/atmos_eva) +"sl" = ( /obj/structure/cable/cyan{ d1 = 1; - d2 = 8; - icon_state = "1-8" + d2 = 2; + icon_state = "1-2" }, -/obj/machinery/power/apc{ - dir = 4; - name = "east bump"; - pixel_x = 28 - }, -/obj/structure/cable/cyan, -/obj/effect/decal/cleanable/dirt, -/turf/simulated/floor/plating, -/area/maintenance/substation/surface_atmos) -"sk" = ( -/obj/machinery/atmospherics/pipe/manifold/hidden/cyan{ - dir = 4 - }, -/turf/simulated/floor/tiled, -/area/engineering/lower/lobby) -"sl" = ( -/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{ - dir = 8 - }, -/obj/machinery/atmospherics/pipe/manifold/hidden/supply{ - dir = 8 - }, -/turf/simulated/floor/tiled, -/area/engineering/lower/lobby) -"sm" = ( -/obj/machinery/atmospherics/pipe/simple/hidden/supply{ - dir = 4 - }, -/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ - dir = 4 +/obj/machinery/atmospherics/pipe/simple/hidden/cyan, +/obj/machinery/door/airlock/glass_atmos{ + name = "Atmospherics"; + req_access = list(24) }, +/obj/machinery/door/firedoor/glass, /turf/simulated/floor/tiled, /area/engineering/lower/lobby) "sn" = ( -/obj/machinery/atmospherics/pipe/simple/hidden/yellow, -/obj/machinery/atmospherics/pipe/simple/hidden/supply{ - dir = 4 - }, -/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ - dir = 4 - }, -/obj/structure/cable/cyan{ - d1 = 2; - d2 = 4; - icon_state = "2-4" +/obj/machinery/atmospherics/pipe/simple/hidden/red, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/machinery/door/airlock/glass_atmos{ + name = "Atmospherics"; + req_access = list(24) }, /obj/structure/disposalpipe/segment, -/turf/simulated/floor/tiled, -/area/engineering/lower/lobby) -"so" = ( -/obj/machinery/atmospherics/pipe/simple/hidden/supply{ - dir = 4 - }, -/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ - dir = 4 - }, -/obj/structure/cable/cyan{ - d1 = 4; - d2 = 8; - icon_state = "4-8" - }, +/obj/machinery/door/firedoor/glass, /turf/simulated/floor/tiled, /area/engineering/lower/lobby) "sp" = ( -/obj/machinery/atmospherics/pipe/simple/hidden/supply{ - dir = 4 - }, -/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ - dir = 4 - }, -/obj/structure/cable/cyan{ - d1 = 4; - d2 = 8; - icon_state = "4-8" - }, -/obj/structure/cable/cyan{ - d1 = 2; - d2 = 8; - icon_state = "2-8" - }, -/obj/effect/floor_decal/steeldecal/steel_decals4{ - dir = 10 - }, -/obj/effect/floor_decal/steeldecal/steel_decals4, -/turf/simulated/floor/tiled, -/area/engineering/lower/lobby) -"sq" = ( -/obj/machinery/atmospherics/pipe/simple/hidden/supply{ - dir = 4 - }, -/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ - dir = 4 - }, -/obj/structure/cable/cyan{ - d1 = 4; - d2 = 8; - icon_state = "4-8" - }, -/obj/machinery/door/firedoor/glass, -/obj/machinery/door/airlock/glass_engineering{ - name = "Break Room"; - req_access = list(10) - }, -/turf/simulated/floor/tiled, +/turf/simulated/wall/r_wall, /area/engineering/lower/breakroom) -"sr" = ( -/obj/machinery/atmospherics/pipe/simple/hidden/supply{ - dir = 4 - }, -/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ - dir = 4 - }, -/obj/structure/cable/cyan{ - d1 = 4; - d2 = 8; - icon_state = "4-8" - }, -/obj/structure/disposalpipe/segment, -/obj/effect/floor_decal/steeldecal/steel_decals4{ - dir = 1 - }, -/obj/effect/floor_decal/steeldecal/steel_decals4{ - dir = 6 - }, -/turf/simulated/floor/tiled, -/area/engineering/lower/breakroom) -"ss" = ( -/obj/machinery/atmospherics/pipe/simple/hidden/supply{ - dir = 4 - }, -/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ - dir = 4 - }, -/obj/structure/cable/cyan{ - d1 = 4; - d2 = 8; - icon_state = "4-8" - }, -/turf/simulated/floor/tiled, -/area/engineering/lower/breakroom) -"st" = ( -/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{ - dir = 1 - }, -/obj/machinery/atmospherics/pipe/manifold/hidden/supply{ - dir = 1 - }, -/obj/structure/cable/cyan{ - d1 = 2; - d2 = 8; - icon_state = "2-8" - }, -/turf/simulated/floor/tiled, -/area/engineering/lower/breakroom) -"su" = ( -/obj/machinery/atmospherics/pipe/simple/hidden/supply{ - dir = 4 - }, -/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ - dir = 4 - }, -/turf/simulated/floor/tiled, -/area/engineering/lower/breakroom) -"sv" = ( -/obj/machinery/atmospherics/pipe/simple/hidden/supply{ - dir = 4 - }, -/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ - dir = 9 - }, -/turf/simulated/floor/tiled, -/area/engineering/lower/breakroom) -"sw" = ( -/obj/structure/table/glass, -/obj/item/weapon/storage/box/donkpockets, +"sx" = ( +/turf/simulated/wall/r_wall, +/area/maintenance/engineering/pumpstation) +"sA" = ( /obj/effect/floor_decal/borderfloor{ dir = 4 }, -/obj/effect/floor_decal/corner/yellow/border{ - dir = 4 - }, /obj/machinery/atmospherics/unary/vent_pump/on{ dir = 8 }, -/turf/simulated/floor/tiled, -/area/engineering/lower/breakroom) -"sx" = ( -/obj/effect/decal/cleanable/dirt, -/obj/random/junk, -/turf/simulated/floor, -/area/maintenance/lower/south) -"sy" = ( -/obj/effect/decal/cleanable/dirt, -/turf/simulated/floor, -/area/maintenance/lower/south) -"sz" = ( -/obj/effect/floor_decal/rust, -/obj/effect/decal/cleanable/dirt, -/turf/simulated/floor, -/area/maintenance/lower/south) -"sA" = ( -/obj/effect/decal/cleanable/dirt, -/obj/structure/closet, -/obj/random/maintenance/research, -/obj/random/maintenance/cargo, -/obj/random/maintenance/clean, -/obj/random/junk, -/turf/simulated/floor, -/area/maintenance/lower/south) -"sB" = ( -/obj/machinery/alarm{ - dir = 4; - icon_state = "alarm0"; - pixel_x = -22 - }, -/obj/effect/floor_decal/steeldecal/steel_decals4{ - dir = 4 - }, -/obj/effect/floor_decal/steeldecal/steel_decals4{ +/obj/machinery/camera/network/tether{ dir = 9 }, -/turf/simulated/floor/tiled/steel_grid, -/area/tether/surfacebase/east_stairs_two) -"sC" = ( -/obj/machinery/light{ - dir = 1 - }, -/turf/simulated/floor/tiled/steel_grid, -/area/tether/surfacebase/east_stairs_two) -"sD" = ( -/obj/structure/cable{ - icon_state = "0-4" - }, -/obj/machinery/power/apc{ - dir = 1; - name = "north bump"; - pixel_x = 0; - pixel_y = 24 - }, -/turf/simulated/floor/tiled/steel_grid, -/area/tether/surfacebase/east_stairs_two) -"sE" = ( -/obj/machinery/door/airlock/maintenance/common, -/obj/structure/cable{ - icon_state = "4-8" - }, -/obj/machinery/door/firedoor/border_only, -/turf/simulated/floor, +/turf/simulated/floor/tiled/techmaint, /area/tether/surfacebase/east_stairs_two) "sF" = ( /obj/effect/floor_decal/corner_techfloor_grid{ @@ -9256,9 +8462,6 @@ /obj/effect/floor_decal/corner_techfloor_grid{ dir = 4 }, -/obj/structure/cable{ - icon_state = "4-8" - }, /turf/simulated/floor/tiled/techfloor, /area/maintenance/lower/south) "sG" = ( @@ -9268,9 +8471,6 @@ /obj/structure/cable{ icon_state = "2-4" }, -/obj/structure/cable{ - icon_state = "4-8" - }, /turf/simulated/floor/tiled/techfloor, /area/maintenance/lower/south) "sH" = ( @@ -9481,11 +8681,9 @@ /obj/effect/floor_decal/industrial/warning{ dir = 4 }, -/obj/structure/cable/green{ - d1 = 1; - d2 = 2; - icon_state = "1-2" - }, +/obj/structure/disposalpipe/segment, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/obj/machinery/atmospherics/pipe/simple/hidden/supply, /turf/simulated/floor/tiled/steel_grid, /area/rnd/research) "sZ" = ( @@ -9495,8 +8693,6 @@ /turf/simulated/floor/tiled/dark, /area/rnd/research) "ta" = ( -/obj/machinery/atmospherics/pipe/simple/hidden/supply, -/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, /turf/simulated/floor/tiled/dark, /area/rnd/research) "tb" = ( @@ -9524,200 +8720,151 @@ /turf/simulated/floor/tiled, /area/rnd/research) "te" = ( -/obj/machinery/atmospherics/pipe/simple/visible/scrubbers, -/obj/machinery/atmospherics/pipe/simple/visible/supply, +/obj/effect/floor_decal/borderfloor{ + dir = 8 + }, +/obj/effect/floor_decal/corner/yellow/border{ + icon_state = "bordercolor"; + dir = 8 + }, +/obj/structure/table/rack{ + dir = 8; + layer = 2.9 + }, +/obj/structure/window/reinforced, +/obj/machinery/door/window/northright{ + dir = 4; + name = "Atmospherics Hardsuits"; + req_access = list(24) + }, +/obj/item/clothing/shoes/magboots, +/obj/item/clothing/mask/breath, +/obj/item/clothing/suit/space/void/atmos, +/obj/item/clothing/head/helmet/space/void/atmos, +/turf/simulated/floor/tiled, +/area/engineering/lower/atmos_eva) +"tf" = ( +/turf/simulated/floor/tiled, +/area/engineering/lower/atmos_eva) +"tg" = ( +/obj/machinery/door/firedoor/glass, +/obj/structure/grille, +/obj/structure/window/reinforced/full, +/turf/simulated/floor/plating, +/area/engineering/lower/atmos_eva) +"th" = ( +/obj/machinery/door/firedoor/glass, +/obj/structure/grille, +/obj/structure/window/reinforced/full, +/turf/simulated/floor/plating, +/area/engineering/lower/atmos_lockers) +"ti" = ( /obj/structure/cable/cyan{ d1 = 1; d2 = 2; icon_state = "1-2" }, -/obj/effect/decal/cleanable/dirt, -/obj/structure/disposalpipe/segment, -/turf/simulated/floor/plating, -/area/maintenance/substation/surface_atmos) -"tf" = ( -/obj/effect/decal/cleanable/dirt, -/obj/structure/table/rack, -/obj/random/maintenance/engineering, -/obj/random/maintenance/clean, -/obj/random/junk, -/obj/random/maintenance/clean, -/obj/random/maintenance/clean, -/turf/simulated/floor/plating, -/area/maintenance/substation/surface_atmos) -"tg" = ( -/turf/simulated/wall, -/area/engineering/atmos/hallway) -"th" = ( -/obj/machinery/atmospherics/pipe/manifold/hidden/cyan, -/obj/effect/floor_decal/borderfloor, -/obj/effect/floor_decal/corner/yellow/border, +/obj/machinery/atmospherics/pipe/simple/hidden/cyan, +/turf/simulated/floor/tiled, +/area/engineering/atmos) +"tj" = ( +/obj/machinery/atmospherics/unary/vent_pump/on{ + dir = 4 + }, +/obj/effect/floor_decal/borderfloor{ + dir = 1; + icon_state = "borderfloor"; + pixel_y = 0 + }, +/obj/effect/floor_decal/corner/yellow/border{ + icon_state = "bordercolor"; + dir = 1 + }, /obj/effect/floor_decal/borderfloor/corner2{ - dir = 9 + dir = 1 + }, +/obj/effect/floor_decal/borderfloor/corner2{ + dir = 4 }, /obj/effect/floor_decal/corner/yellow/bordercorner2{ - dir = 9 + icon_state = "bordercolorcorner2"; + dir = 4 }, +/obj/effect/floor_decal/corner/yellow/bordercorner2{ + icon_state = "bordercolorcorner2"; + dir = 1 + }, +/turf/simulated/floor/tiled/monotile, +/area/engineering/atmos) +"tk" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/red, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/obj/machinery/atmospherics/pipe/manifold/hidden/supply{ + dir = 4 + }, +/obj/machinery/firealarm{ + dir = 4; + pixel_x = 26 + }, +/obj/structure/disposalpipe/segment, /turf/simulated/floor/tiled, -/area/engineering/lower/lobby) -"ti" = ( +/area/engineering/atmos) +"tl" = ( +/turf/simulated/wall/r_wall, +/area/engineering/atmos/storage) +"tm" = ( +/obj/effect/floor_decal/industrial/outline/yellow, +/obj/machinery/shieldgen, +/obj/machinery/camera/network/engineering{ + dir = 4 + }, +/turf/simulated/floor/plating, +/area/engineering/atmos/storage) +"tn" = ( +/obj/effect/floor_decal/industrial/outline/yellow, +/obj/machinery/shieldgen, +/turf/simulated/floor/plating, +/area/engineering/atmos/storage) +"tp" = ( +/obj/effect/floor_decal/industrial/outline/yellow, +/obj/machinery/atmospherics/unary/vent_scrubber/on, +/obj/machinery/light/small{ + icon_state = "bulb1"; + dir = 1 + }, +/obj/effect/decal/cleanable/dirt, +/turf/simulated/floor/plating, +/area/engineering/atmos/storage) +"tr" = ( +/obj/machinery/atmospherics/portables_connector{ + dir = 4 + }, +/obj/machinery/portable_atmospherics/powered/pump/filled, +/turf/simulated/floor/plating, +/area/maintenance/engineering/pumpstation) +"ts" = ( /obj/machinery/atmospherics/pipe/simple/hidden/cyan{ dir = 10; icon_state = "intact" }, -/obj/effect/floor_decal/steeldecal/steel_decals_central4, -/obj/machinery/atmospherics/pipe/simple/hidden/supply, -/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, -/turf/simulated/floor/tiled, -/area/engineering/lower/lobby) -"tj" = ( -/obj/machinery/light, -/obj/effect/floor_decal/borderfloor, -/obj/effect/floor_decal/corner/yellow/border, -/obj/effect/floor_decal/borderfloor/corner2{ - dir = 9 - }, -/obj/effect/floor_decal/borderfloor/corner2, -/obj/effect/floor_decal/corner/yellow/bordercorner2, -/obj/effect/floor_decal/corner/yellow/bordercorner2{ - dir = 9 - }, -/turf/simulated/floor/tiled, -/area/engineering/lower/lobby) -"tk" = ( -/obj/machinery/atmospherics/pipe/simple/hidden/yellow, -/obj/effect/floor_decal/steeldecal/steel_decals_central4, /obj/structure/cable/cyan{ - d1 = 1; d2 = 2; - icon_state = "1-2" + icon_state = "0-2" }, -/obj/structure/disposalpipe/segment, -/turf/simulated/floor/tiled, -/area/engineering/lower/lobby) -"tl" = ( -/obj/effect/floor_decal/borderfloor, -/obj/effect/floor_decal/corner/yellow/border, -/obj/effect/floor_decal/borderfloor/corner2, -/obj/effect/floor_decal/corner/yellow/bordercorner2, -/obj/machinery/camera/network/engineering{ - dir = 1 - }, -/turf/simulated/floor/tiled, -/area/engineering/lower/lobby) -"tm" = ( -/obj/effect/floor_decal/borderfloor{ - dir = 6 - }, -/obj/effect/floor_decal/corner/yellow/border{ - dir = 6 - }, -/obj/effect/floor_decal/borderfloor/corner2{ - dir = 6 - }, -/obj/effect/floor_decal/corner/yellow/bordercorner2{ - dir = 6 - }, -/obj/structure/cable/cyan, /obj/machinery/power/apc{ - dir = 2; - name = "south bump"; - pixel_y = -28 + dir = 1; + name = "north bump"; + pixel_x = 0; + pixel_y = 28 }, -/turf/simulated/floor/tiled, -/area/engineering/lower/lobby) -"tn" = ( -/obj/effect/floor_decal/borderfloor{ - dir = 10 - }, -/obj/effect/floor_decal/corner/yellow/border{ - dir = 10 - }, -/obj/effect/floor_decal/borderfloor/corner2{ - dir = 8 - }, -/obj/effect/floor_decal/corner/yellow/bordercorner2{ - dir = 8 - }, -/obj/machinery/newscaster{ - pixel_x = -25 - }, -/obj/structure/disposalpipe/segment, -/turf/simulated/floor/tiled, -/area/engineering/lower/breakroom) -"to" = ( -/obj/effect/floor_decal/borderfloor, -/obj/effect/floor_decal/corner/yellow/border, -/turf/simulated/floor/tiled, -/area/engineering/lower/breakroom) -"tp" = ( -/obj/effect/floor_decal/borderfloor, -/obj/effect/floor_decal/corner/yellow/border, -/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, -/obj/machinery/atmospherics/pipe/simple/hidden/supply, -/obj/structure/cable/cyan{ - d1 = 1; - d2 = 2; - icon_state = "1-2" - }, -/obj/structure/cable/cyan{ - d1 = 1; - d2 = 4; - icon_state = "1-4" - }, -/turf/simulated/floor/tiled, -/area/engineering/lower/breakroom) -"tq" = ( -/obj/effect/floor_decal/borderfloor, -/obj/effect/floor_decal/corner/yellow/border, -/obj/machinery/power/apc{ - dir = 2; - name = "south bump"; - pixel_y = -28 - }, -/obj/structure/cable/cyan{ - d2 = 8; - icon_state = "0-8" - }, -/turf/simulated/floor/tiled, -/area/engineering/lower/breakroom) -"tr" = ( -/obj/effect/floor_decal/borderfloor, -/obj/effect/floor_decal/corner/yellow/border, -/obj/machinery/camera/network/engineering{ - dir = 1 - }, -/turf/simulated/floor/tiled, -/area/engineering/lower/breakroom) -"ts" = ( -/obj/structure/table/glass, -/obj/machinery/microwave, -/obj/effect/floor_decal/borderfloor{ - dir = 6 - }, -/obj/effect/floor_decal/corner/yellow/border{ - dir = 6 - }, -/turf/simulated/floor/tiled, -/area/engineering/lower/breakroom) +/turf/simulated/floor/plating, +/area/maintenance/engineering/pumpstation) "tt" = ( /turf/simulated/wall, /area/engineering/atmos/monitoring) "tu" = ( /turf/simulated/open, /area/tether/surfacebase/east_stairs_two) -"tv" = ( -/obj/structure/railing{ - dir = 4 - }, -/obj/structure/railing{ - dir = 8 - }, -/turf/simulated/floor/tiled, -/area/tether/surfacebase/east_stairs_two) -"tw" = ( -/turf/simulated/floor/tiled, -/area/tether/surfacebase/east_stairs_two) "tx" = ( /obj/effect/floor_decal/corner_techfloor_grid{ dir = 9 @@ -9891,20 +9038,25 @@ /turf/simulated/floor/tiled, /area/rnd/lockers) "tL" = ( +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/manifold/hidden/supply{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{ + dir = 4 + }, +/obj/structure/cable/green{ + d1 = 2; + d2 = 8; + icon_state = "2-8" + }, /obj/structure/cable/green{ d1 = 4; d2 = 8; icon_state = "4-8" }, -/obj/machinery/atmospherics/pipe/simple/hidden/supply{ - dir = 9 - }, -/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ - dir = 9 - }, -/obj/structure/disposalpipe/segment{ - dir = 4 - }, /turf/simulated/floor/tiled, /area/rnd/lockers) "tM" = ( @@ -9957,8 +9109,6 @@ /area/rnd/research) "tP" = ( /obj/machinery/hologram/holopad, -/obj/machinery/atmospherics/pipe/simple/hidden/supply, -/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, /turf/simulated/floor/tiled/dark, /area/rnd/research) "tQ" = ( @@ -9977,142 +9127,93 @@ /turf/simulated/floor/tiled, /area/rnd/research) "tS" = ( -/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, -/obj/machinery/atmospherics/pipe/simple/hidden/supply, -/obj/structure/cable/cyan{ - d1 = 1; - d2 = 2; - icon_state = "1-2" - }, -/obj/machinery/door/firedoor/glass, -/obj/structure/disposalpipe/segment, -/obj/machinery/door/airlock/atmos{ - name = "Atmospherics Maintenance"; - req_access = list(24) - }, -/obj/machinery/door/blast/regular{ - density = 0; - dir = 4; - icon_state = "pdoor0"; - id = "atmoslockdown"; - name = "Atmospherics Lockdown"; - opacity = 0 - }, -/turf/simulated/floor/tiled/steel_grid, -/area/engineering/atmos/hallway) -"tT" = ( -/obj/structure/lattice, -/obj/structure/railing, -/obj/machinery/atmospherics/pipe/zpipe/down/supply, -/obj/machinery/atmospherics/pipe/zpipe/down/scrubbers, -/obj/structure/cable/cyan{ - d1 = 32; - d2 = 2; - icon_state = "32-2" - }, -/obj/machinery/door/firedoor/glass, -/turf/simulated/open, -/area/engineering/atmos/hallway) -"tU" = ( -/obj/machinery/atmospherics/pipe/simple/hidden/cyan, -/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, -/obj/machinery/door/firedoor/glass, -/obj/machinery/atmospherics/pipe/simple/hidden/supply, -/obj/machinery/door/airlock/glass_atmos{ - name = "Atmospherics"; - req_access = list(24) - }, -/turf/simulated/floor/tiled/steel_grid, -/area/engineering/atmos/hallway) -"tV" = ( -/obj/machinery/atmospherics/pipe/zpipe/up/scrubbers, -/obj/machinery/atmospherics/pipe/zpipe/up/supply, -/obj/structure/window/reinforced{ - dir = 1 - }, -/obj/structure/window/reinforced{ +/obj/effect/floor_decal/borderfloor{ dir = 8 }, -/obj/structure/window/reinforced{ +/obj/machinery/atmospherics/unary/vent_scrubber/on{ dir = 4 }, -/obj/machinery/door/firedoor/glass, -/obj/structure/cable/cyan{ - d2 = 2; - icon_state = "0-2" +/obj/effect/floor_decal/corner/yellow/border{ + icon_state = "bordercolor"; + dir = 8 }, -/obj/structure/cable/cyan{ - d1 = 16; - d2 = 0; - icon_state = "16-0" +/obj/machinery/suit_cycler/engineering{ + name = "Atmospherics suit cycler" }, -/obj/structure/railing, -/turf/simulated/floor/plating, -/area/engineering/atmos/hallway) +/obj/machinery/light{ + icon_state = "tube1"; + dir = 8 + }, +/turf/simulated/floor/tiled, +/area/engineering/lower/atmos_eva) +"tT" = ( +/obj/effect/floor_decal/borderfloor{ + dir = 8 + }, +/obj/effect/floor_decal/corner/yellow/border{ + icon_state = "bordercolor"; + dir = 8 + }, +/obj/effect/floor_decal/borderfloor/corner2{ + dir = 10; + icon_state = "borderfloorcorner2"; + pixel_x = 0 + }, +/obj/effect/floor_decal/corner/yellow/bordercorner2{ + icon_state = "bordercolorcorner2"; + dir = 10 + }, +/turf/simulated/floor/tiled, +/area/engineering/lower/atmos_lockers) +"tV" = ( +/turf/simulated/floor/tiled/monotile, +/area/engineering/atmos) "tW" = ( -/obj/machinery/atmospherics/pipe/simple/hidden/yellow, -/obj/structure/cable/cyan{ - d1 = 1; - d2 = 2; - icon_state = "1-2" - }, -/obj/machinery/door/firedoor/glass, -/obj/structure/disposalpipe/segment, -/obj/machinery/door/airlock/glass_atmos{ - name = "Atmospherics"; - req_access = list(24) - }, -/turf/simulated/floor/tiled/steel_grid, -/area/engineering/atmos/hallway) -"tX" = ( -/obj/structure/grille, -/obj/structure/window/reinforced/full, -/obj/machinery/door/firedoor, -/obj/structure/disposalpipe/segment, -/turf/simulated/floor/plating, -/area/engineering/atmos/monitoring) -"tY" = ( -/obj/structure/grille, -/obj/structure/window/reinforced/full, -/obj/machinery/door/firedoor, -/turf/simulated/floor/plating, -/area/engineering/atmos/monitoring) -"tZ" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/red, /obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, /obj/machinery/atmospherics/pipe/simple/hidden/supply, -/obj/structure/cable/cyan{ - d1 = 1; - d2 = 2; - icon_state = "1-2" - }, -/obj/machinery/door/firedoor/glass, -/obj/machinery/door/airlock/glass_atmos{ - name = "Atmospherics Monitoring Room"; - req_access = list(24) - }, +/obj/structure/disposalpipe/segment, /turf/simulated/floor/tiled, -/area/engineering/atmos/monitoring) -"ua" = ( -/turf/simulated/floor/tiled/techfloor, -/area/engineering/atmos/monitoring) -"ub" = ( -/obj/machinery/portable_atmospherics/powered/pump/filled, -/obj/effect/floor_decal/industrial/outline/blue, -/turf/simulated/floor/tiled/techfloor, -/area/engineering/atmos/monitoring) -"uc" = ( -/obj/machinery/space_heater, -/obj/effect/floor_decal/industrial/outline/grey, -/turf/simulated/floor/tiled/techfloor, -/area/engineering/atmos/monitoring) -"ud" = ( +/area/engineering/atmos) +"tX" = ( /obj/effect/decal/cleanable/dirt, -/obj/effect/floor_decal/rust, -/turf/simulated/floor, -/area/maintenance/lower/south) -"ue" = ( -/obj/structure/stairs/south, +/turf/simulated/floor/plating, +/area/engineering/atmos/storage) +"tY" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/red{ + icon_state = "intact"; + dir = 4 + }, /turf/simulated/floor/tiled, +/area/engineering/atmos) +"tZ" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/turf/simulated/floor/plating, +/area/engineering/atmos/storage) +"ua" = ( +/obj/effect/floor_decal/rust, +/obj/effect/decal/cleanable/dirt, +/obj/machinery/atmospherics/portables_connector{ + dir = 8 + }, +/obj/machinery/firealarm{ + dir = 4; + pixel_x = 26 + }, +/obj/machinery/portable_atmospherics/powered/scrubber, +/turf/simulated/floor/plating, +/area/maintenance/engineering/pumpstation) +"ud" = ( +/obj/effect/floor_decal/borderfloor{ + dir = 8 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/machinery/atmospherics/unary/vent_scrubber/on{ + dir = 4 + }, +/obj/structure/disposalpipe/segment, +/turf/simulated/floor/tiled/techmaint, /area/tether/surfacebase/east_stairs_two) "uf" = ( /obj/effect/floor_decal/corner_techfloor_grid{ @@ -10228,14 +9329,19 @@ /turf/simulated/floor/tiled, /area/rnd/lockers) "uq" = ( -/obj/effect/floor_decal/borderfloor, -/obj/effect/floor_decal/corner/mauve/border, -/obj/effect/floor_decal/steeldecal/steel_decals7{ - dir = 1 - }, -/obj/effect/floor_decal/steeldecal/steel_decals7{ +/obj/effect/floor_decal/steeldecal/steel_decals4{ dir = 8 }, +/obj/effect/floor_decal/steeldecal/steel_decals4{ + dir = 5 + }, +/obj/structure/cable/green{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, /turf/simulated/floor/tiled, /area/rnd/lockers) "ur" = ( @@ -10292,6 +9398,8 @@ dir = 6 }, /obj/structure/flora/pottedplant/stoutbush, +/obj/effect/floor_decal/borderfloor/corner2, +/obj/effect/floor_decal/corner/mauve/bordercorner2, /turf/simulated/floor/tiled, /area/rnd/lockers) "uv" = ( @@ -10313,10 +9421,15 @@ /obj/effect/floor_decal/industrial/warning/corner{ dir = 4 }, -/obj/structure/cable/green{ - d1 = 1; - d2 = 4; - icon_state = "1-4" +/obj/structure/disposalpipe/segment{ + dir = 1; + icon_state = "pipe-c" + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 5 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 5 }, /turf/simulated/floor/tiled/steel_grid, /area/rnd/research) @@ -10324,10 +9437,14 @@ /obj/effect/floor_decal/industrial/warning{ dir = 1 }, -/obj/structure/cable/green{ - d1 = 4; - d2 = 8; - icon_state = "4-8" +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 }, /turf/simulated/floor/tiled/steel_grid, /area/rnd/research) @@ -10335,12 +9452,15 @@ /obj/effect/floor_decal/industrial/warning{ dir = 1 }, -/obj/machinery/atmospherics/pipe/simple/hidden/supply, -/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, -/obj/structure/cable/green{ - d1 = 2; - d2 = 8; - icon_state = "2-8" +/obj/structure/disposalpipe/segment{ + dir = 2; + icon_state = "pipe-c" + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 10 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 10 }, /turf/simulated/floor/tiled/steel_grid, /area/rnd/research) @@ -10356,411 +9476,275 @@ }, /turf/simulated/floor/tiled/steel_grid, /area/rnd/research) -"uB" = ( -/obj/effect/floor_decal/borderfloor{ - dir = 4 - }, -/obj/effect/floor_decal/corner/mauve/border{ - dir = 4 - }, -/obj/machinery/requests_console{ - department = "Science"; - departmentType = 2; - name = "Science Requests Console"; - pixel_x = 30; - pixel_y = 0 - }, -/obj/structure/closet/secure_closet/personal, -/turf/simulated/floor/tiled, -/area/rnd/research) "uC" = ( /obj/effect/floor_decal/borderfloor{ - dir = 9 + dir = 8 }, /obj/effect/floor_decal/corner/yellow/border{ - dir = 9 + icon_state = "bordercolor"; + dir = 8 }, -/obj/effect/floor_decal/steeldecal/steel_decals7, +/obj/machinery/power/apc{ + cell_type = /obj/item/weapon/cell/super; + dir = 8; + name = "west bump"; + pixel_x = -30 + }, +/obj/structure/cable/cyan{ + d2 = 4; + icon_state = "0-4" + }, +/obj/structure/dispenser{ + phorontanks = 0 + }, +/turf/simulated/floor/tiled, +/area/engineering/lower/atmos_eva) +"uD" = ( /obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, /obj/machinery/atmospherics/pipe/simple/hidden/supply, /obj/structure/cable/cyan{ - d1 = 1; - d2 = 2; - icon_state = "1-2" + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/turf/simulated/floor/tiled, +/area/engineering/lower/atmos_eva) +"uE" = ( +/turf/simulated/floor/tiled/techmaint, +/area/engineering/drone_fabrication) +"uF" = ( +/obj/structure/cable/cyan{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/obj/machinery/door/airlock/glass_atmos{ + name = "Atmospherics EVA"; + req_access = list(24) + }, +/obj/machinery/door/firedoor/glass, +/turf/simulated/floor/tiled, +/area/engineering/lower/atmos_eva) +"uG" = ( +/obj/structure/cable/cyan{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/turf/simulated/floor/tiled, +/area/engineering/lower/atmos_lockers) +"uI" = ( +/obj/structure/cable/cyan{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 5 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 6 + }, +/turf/simulated/floor/tiled, +/area/engineering/lower/atmos_lockers) +"uJ" = ( +/obj/structure/cable/cyan{ + d1 = 4; + d2 = 8; + icon_state = "4-8" }, /obj/structure/cable/cyan{ d1 = 1; d2 = 4; icon_state = "1-4" }, -/obj/structure/disposalpipe/segment, -/turf/simulated/floor/tiled, -/area/engineering/atmos/hallway) -"uD" = ( -/obj/effect/floor_decal/borderfloor{ - dir = 1 - }, -/obj/effect/floor_decal/corner/yellow/border{ - dir = 1 - }, -/obj/effect/floor_decal/steeldecal/steel_decals7{ +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ dir = 4 }, -/obj/effect/floor_decal/steeldecal/steel_decals7, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/obj/item/weapon/stool, +/turf/simulated/floor/tiled, +/area/engineering/lower/atmos_lockers) +"uK" = ( /obj/structure/cable/cyan{ d1 = 4; d2 = 8; icon_state = "4-8" }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, /turf/simulated/floor/tiled, -/area/engineering/atmos/hallway) -"uE" = ( -/obj/effect/floor_decal/borderfloor{ - dir = 1 - }, -/obj/effect/floor_decal/corner/yellow/border{ - dir = 1 - }, -/obj/effect/floor_decal/steeldecal/steel_decals5, -/obj/machinery/atmospherics/unary/vent_pump/on, +/area/engineering/lower/atmos_lockers) +"uL" = ( /obj/structure/cable/cyan{ d1 = 4; d2 = 8; icon_state = "4-8" }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/obj/machinery/door/airlock/glass_atmos{ + name = "Locker Room"; + req_access = list(24) + }, +/obj/machinery/door/firedoor/glass, /turf/simulated/floor/tiled, -/area/engineering/atmos/hallway) -"uF" = ( -/obj/effect/floor_decal/borderfloor{ - dir = 1 - }, -/obj/effect/floor_decal/corner/yellow/border{ - dir = 1 - }, -/obj/effect/floor_decal/steeldecal/steel_decals5, -/obj/machinery/atmospherics/unary/vent_scrubber/on, -/obj/structure/cable/cyan{ - d1 = 4; - d2 = 8; - icon_state = "4-8" - }, -/obj/structure/extinguisher_cabinet{ - pixel_y = 30 - }, -/turf/simulated/floor/tiled, -/area/engineering/atmos/hallway) -"uG" = ( -/obj/effect/floor_decal/borderfloor{ - dir = 1 - }, -/obj/effect/floor_decal/corner/yellow/border{ - dir = 1 - }, -/obj/effect/floor_decal/steeldecal/steel_decals5, -/obj/machinery/atmospherics/pipe/simple/hidden/supply, -/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, -/obj/structure/cable/cyan{ - d1 = 1; - d2 = 8; - icon_state = "1-8" - }, +/area/engineering/lower/atmos_lockers) +"uM" = ( /obj/structure/cable/cyan{ d1 = 2; d2 = 8; icon_state = "2-8" }, -/turf/simulated/floor/tiled, -/area/engineering/atmos/hallway) -"uH" = ( -/obj/effect/floor_decal/borderfloor{ - dir = 1 - }, -/obj/effect/floor_decal/corner/yellow/border{ - dir = 1 - }, -/obj/effect/floor_decal/steeldecal/steel_decals5, -/turf/simulated/floor/tiled, -/area/engineering/atmos/hallway) -"uI" = ( -/obj/effect/floor_decal/borderfloor{ - dir = 1 - }, -/obj/effect/floor_decal/corner/yellow/border{ - dir = 1 - }, -/obj/effect/floor_decal/steeldecal/steel_decals5, -/obj/machinery/camera/network/engineering, -/turf/simulated/floor/tiled, -/area/engineering/atmos/hallway) -"uJ" = ( -/obj/structure/ladder/updown, -/obj/effect/floor_decal/borderfloor{ - dir = 1 - }, -/obj/effect/floor_decal/corner/yellow/border{ - dir = 1 - }, -/obj/machinery/status_display{ - pixel_y = 30 - }, -/turf/simulated/floor/tiled, -/area/engineering/atmos/hallway) -"uK" = ( -/obj/structure/grille, -/obj/structure/window/reinforced/full, -/obj/machinery/door/firedoor, -/turf/simulated/floor/plating, -/area/engineering/atmos/hallway) -"uL" = ( -/obj/effect/floor_decal/borderfloor{ - dir = 9 - }, -/obj/effect/floor_decal/corner/yellow/border{ - dir = 9 - }, -/obj/effect/floor_decal/borderfloor/corner2{ - dir = 10 - }, -/obj/effect/floor_decal/borderfloor/corner2{ - dir = 1 - }, -/obj/effect/floor_decal/corner/yellow/bordercorner2{ - dir = 1 - }, -/obj/effect/floor_decal/corner/yellow/bordercorner2{ - dir = 10 - }, -/obj/machinery/light_switch{ - pixel_y = 25 - }, -/obj/machinery/atmospherics/unary/vent_pump/on, -/turf/simulated/floor/tiled, -/area/engineering/atmos/hallway) -"uM" = ( -/obj/machinery/atmospherics/pipe/simple/hidden/cyan, -/obj/machinery/atmospherics/pipe/simple/hidden/supply, -/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, -/obj/effect/floor_decal/steeldecal/steel_decals4{ - dir = 9 - }, -/obj/effect/floor_decal/steeldecal/steel_decals4{ - dir = 4 - }, -/turf/simulated/floor/tiled, -/area/engineering/atmos/hallway) -"uN" = ( -/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, -/obj/machinery/atmospherics/pipe/simple/hidden/supply, -/obj/effect/floor_decal/borderfloor{ - dir = 1 - }, -/obj/effect/floor_decal/corner/yellow/border{ - dir = 1 - }, -/obj/effect/floor_decal/borderfloor/corner2{ - dir = 4 - }, -/obj/effect/floor_decal/borderfloor/corner2{ - dir = 1 - }, -/obj/effect/floor_decal/corner/yellow/bordercorner2{ - dir = 4 - }, -/obj/effect/floor_decal/corner/yellow/bordercorner2{ - dir = 1 - }, /obj/structure/cable/cyan{ - d1 = 1; - d2 = 2; - icon_state = "1-2" - }, -/obj/effect/floor_decal/steeldecal/steel_decals7, -/obj/effect/floor_decal/steeldecal/steel_decals7{ - dir = 4 - }, -/turf/simulated/floor/tiled, -/area/engineering/atmos/hallway) -"uO" = ( -/obj/machinery/atmospherics/pipe/simple/hidden/yellow{ - dir = 5; - icon_state = "intact" - }, -/obj/structure/cable/cyan{ - d1 = 1; - d2 = 2; - icon_state = "1-2" - }, -/obj/structure/disposalpipe/segment, -/obj/effect/floor_decal/steeldecal/steel_decals4{ - dir = 9 - }, -/obj/effect/floor_decal/steeldecal/steel_decals4{ - dir = 4 - }, -/turf/simulated/floor/tiled, -/area/engineering/atmos/hallway) -"uP" = ( -/obj/effect/floor_decal/borderfloor{ - dir = 1 - }, -/obj/effect/floor_decal/corner/yellow/border{ - dir = 1 - }, -/obj/effect/floor_decal/borderfloor/corner2{ - dir = 4 - }, -/obj/effect/floor_decal/corner/yellow/bordercorner2{ - dir = 4 - }, -/obj/machinery/firealarm{ - dir = 2; - layer = 3.3; - pixel_x = 0; - pixel_y = 26 - }, -/obj/effect/floor_decal/steeldecal/steel_decals7{ - dir = 4 - }, -/obj/effect/floor_decal/steeldecal/steel_decals7, -/obj/machinery/atmospherics/pipe/simple/hidden/yellow{ - dir = 4 - }, -/turf/simulated/floor/tiled, -/area/engineering/atmos/hallway) -"uQ" = ( -/obj/effect/floor_decal/borderfloor{ - dir = 5 - }, -/obj/effect/floor_decal/corner/yellow/border{ - dir = 5 - }, -/obj/effect/floor_decal/borderfloor/corner2{ - dir = 5 - }, -/obj/effect/floor_decal/corner/yellow/bordercorner2{ - dir = 5 - }, -/obj/machinery/atmospherics/pipe/simple/hidden/yellow{ - dir = 10 - }, -/turf/simulated/floor/tiled, -/area/engineering/atmos/hallway) -"uR" = ( -/obj/effect/floor_decal/steeldecal/steel_decals5{ - dir = 8 - }, -/obj/effect/floor_decal/steeldecal/steel_decals5{ - dir = 4 - }, -/obj/effect/floor_decal/steeldecal/steel_decals9, -/obj/effect/floor_decal/steeldecal/steel_decals4{ - dir = 1 - }, -/obj/machinery/firealarm{ - dir = 8; - pixel_x = -24 - }, -/obj/machinery/disposal, -/obj/structure/disposalpipe/trunk{ - dir = 1 - }, -/turf/simulated/floor/tiled, -/area/engineering/atmos/monitoring) -"uS" = ( -/obj/effect/floor_decal/steeldecal/steel_decals5{ - dir = 4 - }, -/obj/effect/floor_decal/steeldecal/steel_decals5{ - dir = 8 - }, -/turf/simulated/floor/tiled, -/area/engineering/atmos/monitoring) -"uT" = ( -/obj/effect/floor_decal/steeldecal/steel_decals5{ - dir = 4 - }, -/obj/effect/floor_decal/steeldecal/steel_decals5{ - dir = 8 - }, -/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, -/obj/machinery/atmospherics/pipe/simple/hidden/supply, -/obj/structure/cable/cyan{ - d1 = 1; + d1 = 2; d2 = 4; - icon_state = "1-4" + icon_state = "2-4" }, -/turf/simulated/floor/tiled, -/area/engineering/atmos/monitoring) -"uU" = ( -/obj/machinery/light{ - dir = 1 +/obj/structure/cable/cyan{ + d1 = 1; + d2 = 2; + icon_state = "1-2" }, -/obj/effect/floor_decal/steeldecal/steel_decals5{ +/obj/machinery/atmospherics/pipe/simple/hidden/cyan, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ dir = 4 }, -/obj/effect/floor_decal/steeldecal/steel_decals5{ - dir = 8 +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 }, +/turf/simulated/floor/tiled, +/area/engineering/atmos) +"uN" = ( /obj/structure/cable/cyan{ d1 = 4; d2 = 8; icon_state = "4-8" }, -/turf/simulated/floor/tiled, -/area/engineering/atmos/monitoring) -"uV" = ( -/obj/effect/floor_decal/steeldecal/steel_decals5{ +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ dir = 4 }, -/obj/effect/floor_decal/steeldecal/steel_decals5{ - dir = 8 +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 }, +/turf/simulated/floor/tiled/monotile, +/area/engineering/atmos) +"uO" = ( /obj/structure/cable/cyan{ + d1 = 4; d2 = 8; - icon_state = "0-8" - }, -/obj/machinery/power/apc{ - dir = 1; - name = "north bump"; - pixel_x = 0; - pixel_y = 28 + icon_state = "4-8" }, +/obj/machinery/atmospherics/pipe/simple/hidden/red, +/obj/machinery/atmospherics/pipe/manifold4w/hidden/scrubbers, +/obj/machinery/atmospherics/pipe/manifold4w/hidden/supply, +/obj/structure/disposalpipe/segment, /turf/simulated/floor/tiled, -/area/engineering/atmos/monitoring) -"uW" = ( -/obj/effect/floor_decal/steeldecal/steel_decals5{ +/area/engineering/atmos) +"uP" = ( +/obj/structure/cable/cyan{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ dir = 4 }, -/obj/effect/floor_decal/steeldecal/steel_decals5{ - dir = 8 +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 }, -/obj/machinery/light_switch{ - pixel_y = 25 - }, -/turf/simulated/floor/tiled, -/area/engineering/atmos/monitoring) -"uX" = ( -/obj/machinery/door/airlock/maintenance/int{ - name = "Emergency Storage" +/obj/machinery/door/airlock/atmos{ + name = "Atmospherics Storage"; + req_access = list(24) }, /obj/machinery/door/firedoor/glass, -/turf/simulated/floor/tiled/techfloor, -/area/engineering/atmos/monitoring) -"uY" = ( -/obj/machinery/floodlight, -/obj/effect/floor_decal/industrial/outline/yellow, -/obj/machinery/alarm{ - dir = 8; - icon_state = "alarm0"; - pixel_x = 24 +/turf/simulated/floor/plating, +/area/engineering/atmos/storage) +"uQ" = ( +/obj/structure/cable/cyan{ + d1 = 4; + d2 = 8; + icon_state = "4-8" }, -/turf/simulated/floor/tiled/techfloor, -/area/engineering/atmos/monitoring) -"uZ" = ( -/obj/machinery/door/airlock/maintenance/common, -/obj/machinery/door/firedoor/border_only, -/turf/simulated/floor, -/area/tether/surfacebase/east_stairs_two) +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/obj/effect/decal/cleanable/dirt, +/turf/simulated/floor/plating, +/area/engineering/atmos/storage) +"uR" = ( +/obj/structure/cable/cyan{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, +/turf/simulated/floor/plating, +/area/engineering/atmos/storage) +"uS" = ( +/obj/structure/cable/cyan{ + d1 = 2; + d2 = 8; + icon_state = "2-8" + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, +/turf/simulated/floor/plating, +/area/engineering/atmos/storage) +"uT" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 9 + }, +/turf/simulated/floor/plating, +/area/engineering/atmos/storage) +"uV" = ( +/obj/machinery/atmospherics/portables_connector{ + dir = 4 + }, +/obj/machinery/portable_atmospherics/powered/pump/filled, +/obj/machinery/camera/network/engineering{ + dir = 4 + }, +/turf/simulated/floor/plating, +/area/maintenance/engineering/pumpstation) +"uW" = ( +/obj/effect/decal/cleanable/dirt, +/obj/machinery/atmospherics/pipe/manifold/hidden/cyan{ + dir = 4 + }, +/obj/structure/cable/cyan{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/obj/machinery/meter, +/turf/simulated/floor/plating, +/area/maintenance/engineering/pumpstation) +"uX" = ( +/obj/effect/decal/cleanable/dirt, +/obj/machinery/atmospherics/pipe/manifold/hidden/red{ + icon_state = "map"; + dir = 8 + }, +/obj/machinery/meter, +/turf/simulated/floor/plating, +/area/maintenance/engineering/pumpstation) "va" = ( /obj/structure/railing{ dir = 4 @@ -10821,11 +9805,7 @@ dir = 10 }, /obj/structure/table/steel, -/obj/item/stack/material/glass{ - amount = 50; - pixel_x = 3; - pixel_y = 3 - }, +/obj/fiftyspawner/glass, /turf/simulated/floor/tiled/techfloor, /area/rnd/workshop) "vh" = ( @@ -10883,35 +9863,14 @@ "vm" = ( /obj/effect/floor_decal/borderfloor, /obj/effect/floor_decal/corner/mauve/border, -/obj/effect/floor_decal/borderfloor/corner2{ - dir = 9 - }, -/obj/effect/floor_decal/corner/mauve/bordercorner2{ - dir = 9 - }, /turf/simulated/floor/tiled, /area/rnd/research) "vn" = ( -/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, -/obj/machinery/atmospherics/pipe/simple/hidden/supply, -/obj/structure/cable/green{ - d1 = 1; - d2 = 2; - icon_state = "1-2" - }, -/obj/effect/floor_decal/steeldecal/steel_decals4{ - dir = 5 - }, -/obj/effect/floor_decal/steeldecal/steel_decals4{ - dir = 8 - }, -/turf/simulated/floor/tiled, -/area/rnd/research) -"vo" = ( /obj/effect/floor_decal/borderfloor, /obj/effect/floor_decal/corner/mauve/border, -/obj/effect/floor_decal/borderfloor/corner2, -/obj/effect/floor_decal/corner/mauve/bordercorner2, +/obj/structure/disposalpipe/segment, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/obj/machinery/atmospherics/pipe/simple/hidden/supply, /turf/simulated/floor/tiled, /area/rnd/research) "vp" = ( @@ -10936,427 +9895,218 @@ /area/rnd/research) "vr" = ( /obj/effect/floor_decal/borderfloor{ - dir = 8 + dir = 10 }, /obj/effect/floor_decal/corner/yellow/border{ - dir = 8 + icon_state = "bordercolor"; + dir = 10 }, -/obj/effect/floor_decal/steeldecal/steel_decals7{ - dir = 8 - }, -/obj/effect/floor_decal/steeldecal/steel_decals7, -/obj/effect/floor_decal/steeldecal/steel_decals10{ - dir = 4 - }, -/obj/effect/floor_decal/steeldecal/steel_decals4{ +/obj/effect/floor_decal/borderfloor/corner2{ dir = 9 }, -/obj/machinery/atmospherics/pipe/manifold/hidden/supply{ +/obj/effect/floor_decal/corner/yellow/bordercorner2{ + icon_state = "bordercolorcorner2"; + dir = 9 + }, +/obj/machinery/portable_atmospherics/canister/oxygen, +/turf/simulated/floor/tiled, +/area/engineering/lower/atmos_eva) +"vs" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/turf/simulated/floor/tiled, +/area/engineering/lower/atmos_eva) +"vt" = ( +/obj/effect/floor_decal/borderfloor{ + dir = 6 + }, +/obj/effect/floor_decal/corner/yellow/border{ + icon_state = "bordercolor"; + dir = 6 + }, +/obj/effect/floor_decal/borderfloor/corner2{ + dir = 6 + }, +/obj/effect/floor_decal/borderfloor/corner2, +/obj/effect/floor_decal/corner/yellow/bordercorner2{ + icon_state = "bordercolorcorner2"; + dir = 6 + }, +/obj/effect/floor_decal/corner/yellow/bordercorner2, +/obj/machinery/recharge_station, +/turf/simulated/floor/tiled, +/area/engineering/lower/atmos_eva) +"vv" = ( +/obj/effect/floor_decal/borderfloor{ + dir = 10 + }, +/obj/effect/floor_decal/corner/yellow/border{ + icon_state = "bordercolor"; + dir = 10 + }, +/obj/effect/floor_decal/borderfloor/corner2{ dir = 8 }, +/obj/effect/floor_decal/corner/yellow/bordercorner2{ + icon_state = "bordercolorcorner2"; + dir = 8 + }, +/obj/structure/closet/secure_closet/engineering_electrical, +/turf/simulated/floor/tiled, +/area/engineering/lower/atmos_lockers) +"vw" = ( +/obj/effect/floor_decal/borderfloor, +/obj/effect/floor_decal/corner/yellow/border, +/obj/structure/closet/secure_closet/engineering_welding, +/turf/simulated/floor/tiled, +/area/engineering/lower/atmos_lockers) +"vx" = ( +/obj/effect/floor_decal/borderfloor, +/obj/machinery/atmospherics/unary/vent_pump/on{ + dir = 1 + }, +/obj/effect/floor_decal/corner/yellow/border, +/obj/structure/table/standard, +/obj/item/clothing/glasses/welding, +/obj/item/clothing/head/welding{ + pixel_x = -5; + pixel_y = 3 + }, +/obj/item/weapon/storage/box/nifsofts_engineering, +/turf/simulated/floor/tiled, +/area/engineering/lower/atmos_lockers) +"vy" = ( +/obj/effect/floor_decal/borderfloor, +/obj/effect/floor_decal/corner/yellow/border, +/obj/structure/table/standard, +/obj/machinery/cell_charger, +/turf/simulated/floor/tiled, +/area/engineering/lower/atmos_lockers) +"vz" = ( +/obj/effect/floor_decal/borderfloor{ + dir = 6 + }, +/obj/effect/floor_decal/corner/yellow/border{ + icon_state = "bordercolor"; + dir = 6 + }, +/obj/effect/floor_decal/borderfloor/corner2{ + dir = 6 + }, +/obj/effect/floor_decal/corner/yellow/bordercorner2{ + icon_state = "bordercolorcorner2"; + dir = 6 + }, +/obj/structure/table/standard, +/obj/item/clothing/gloves/black, +/obj/item/clothing/gloves/black, +/obj/item/weapon/storage/belt/utility/atmostech, +/obj/item/weapon/cartridge/atmos, +/obj/item/device/floor_painter, +/turf/simulated/floor/tiled, +/area/engineering/lower/atmos_lockers) +"vC" = ( +/obj/machinery/atmospherics/unary/vent_scrubber/on{ + dir = 4 + }, +/obj/effect/floor_decal/borderfloor, +/obj/effect/floor_decal/corner/yellow/border, +/obj/effect/floor_decal/borderfloor/corner2, +/obj/effect/floor_decal/borderfloor/corner2{ + dir = 9 + }, +/obj/effect/floor_decal/corner/yellow/bordercorner2{ + icon_state = "bordercolorcorner2"; + dir = 9 + }, +/obj/effect/floor_decal/corner/yellow/bordercorner2, +/turf/simulated/floor/tiled/monotile, +/area/engineering/atmos) +"vD" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/red, +/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/structure/disposalpipe/segment, +/obj/machinery/camera/network/engineering{ + dir = 8 + }, +/turf/simulated/floor/tiled, +/area/engineering/atmos) +"vF" = ( +/obj/machinery/light_switch{ + pixel_y = -28 + }, +/obj/effect/floor_decal/industrial/outline/yellow, +/obj/machinery/floodlight, +/turf/simulated/floor/plating, +/area/engineering/atmos/storage) +"vG" = ( +/obj/effect/floor_decal/industrial/outline/yellow, +/obj/machinery/floodlight, +/obj/machinery/light/small, +/obj/effect/decal/cleanable/dirt, +/turf/simulated/floor/plating, +/area/engineering/atmos/storage) +"vH" = ( +/obj/effect/floor_decal/industrial/outline/yellow, +/obj/structure/dispenser, +/turf/simulated/floor/plating, +/area/engineering/atmos/storage) +"vI" = ( +/obj/machinery/power/apc{ + dir = 2; + name = "south bump"; + pixel_y = -32 + }, +/obj/structure/cable/cyan, +/obj/effect/floor_decal/industrial/outline/yellow, +/obj/machinery/power/thermoregulator, +/turf/simulated/floor/plating, +/area/engineering/atmos/storage) +"vJ" = ( +/obj/effect/floor_decal/industrial/outline/yellow, +/obj/effect/decal/cleanable/dirt, +/turf/simulated/floor/plating, +/area/engineering/atmos/storage) +"vL" = ( +/obj/effect/floor_decal/rust, +/obj/effect/decal/cleanable/dirt, +/obj/machinery/atmospherics/pipe/manifold/hidden/cyan{ + dir = 4 + }, /obj/structure/cable/cyan{ d1 = 1; d2 = 2; icon_state = "1-2" }, -/obj/structure/disposalpipe/segment{ - dir = 1; - icon_state = "pipe-c" - }, -/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ - dir = 5 - }, -/turf/simulated/floor/tiled, -/area/engineering/atmos/hallway) -"vs" = ( -/obj/effect/floor_decal/borderfloor/corner, -/obj/effect/floor_decal/corner/yellow/bordercorner, -/obj/effect/floor_decal/steeldecal/steel_decals7{ - dir = 1 - }, -/obj/effect/floor_decal/steeldecal/steel_decals7{ - dir = 8 - }, -/obj/effect/floor_decal/steeldecal/steel_decals7{ - dir = 4 - }, -/obj/effect/floor_decal/steeldecal/steel_decals10{ - dir = 1 - }, -/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ - dir = 4 - }, -/obj/machinery/atmospherics/pipe/simple/hidden/supply{ - dir = 4 - }, -/obj/structure/disposalpipe/sortjunction{ - dir = 4; - icon_state = "pipe-j1s"; - name = "Atmospherics"; - sortType = "Atmospherics" - }, -/turf/simulated/floor/tiled, -/area/engineering/atmos/hallway) -"vt" = ( -/obj/effect/floor_decal/borderfloor, -/obj/effect/floor_decal/corner/yellow/border, -/obj/effect/floor_decal/steeldecal/steel_decals7{ - dir = 1 - }, -/obj/effect/floor_decal/steeldecal/steel_decals7{ - dir = 8 - }, -/obj/machinery/atmospherics/pipe/manifold/hidden/supply, -/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ - dir = 4 - }, -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/turf/simulated/floor/tiled, -/area/engineering/atmos/hallway) -"vu" = ( -/obj/effect/floor_decal/borderfloor, -/obj/effect/floor_decal/corner/yellow/border, -/obj/effect/floor_decal/steeldecal/steel_decals7{ - dir = 1 - }, -/obj/effect/floor_decal/steeldecal/steel_decals7{ - dir = 8 - }, -/obj/machinery/atmospherics/pipe/simple/hidden/supply{ - dir = 4 - }, -/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers, -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/turf/simulated/floor/tiled, -/area/engineering/atmos/hallway) -"vv" = ( -/obj/effect/floor_decal/borderfloor, -/obj/effect/floor_decal/corner/yellow/border, -/obj/effect/floor_decal/steeldecal/steel_decals7{ - dir = 1 - }, -/obj/effect/floor_decal/steeldecal/steel_decals7{ - dir = 8 - }, -/obj/effect/floor_decal/steeldecal/steel_decals4{ - dir = 6 - }, -/obj/machinery/atmospherics/pipe/manifold/hidden/supply, -/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers, -/obj/machinery/light, -/obj/structure/cable/cyan{ - d1 = 1; - d2 = 4; - icon_state = "1-4" - }, -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/turf/simulated/floor/tiled, -/area/engineering/atmos/hallway) -"vw" = ( -/obj/effect/floor_decal/borderfloor, -/obj/effect/floor_decal/corner/yellow/border, -/obj/effect/floor_decal/steeldecal/steel_decals7{ - dir = 1 - }, -/obj/effect/floor_decal/steeldecal/steel_decals7{ - dir = 8 - }, -/obj/machinery/atmospherics/pipe/simple/hidden/supply{ - dir = 4 - }, -/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ - dir = 4 - }, -/obj/structure/cable/cyan{ - d1 = 4; - d2 = 8; - icon_state = "4-8" - }, -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/turf/simulated/floor/tiled, -/area/engineering/atmos/hallway) -"vx" = ( -/obj/effect/floor_decal/borderfloor, -/obj/effect/floor_decal/corner/yellow/border, -/obj/effect/floor_decal/borderfloor/corner2{ - dir = 9 - }, -/obj/effect/floor_decal/corner/yellow/bordercorner2{ - dir = 9 - }, -/obj/effect/floor_decal/steeldecal/steel_decals7{ - dir = 1 - }, -/obj/effect/floor_decal/steeldecal/steel_decals7{ - dir = 8 - }, -/obj/structure/cable/cyan{ - d1 = 4; - d2 = 8; - icon_state = "4-8" - }, -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/obj/machinery/atmospherics/pipe/manifold/hidden/supply{ - dir = 1 - }, -/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{ - dir = 1 - }, -/turf/simulated/floor/tiled, -/area/engineering/atmos/hallway) -"vy" = ( -/obj/machinery/atmospherics/pipe/simple/hidden/supply{ - dir = 4 - }, -/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ - dir = 4 - }, -/obj/structure/cable/cyan{ - d1 = 4; - d2 = 8; - icon_state = "4-8" - }, -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/turf/simulated/floor/tiled/steel_grid, -/area/engineering/atmos/hallway) -"vz" = ( -/obj/machinery/door/airlock/glass_atmos, -/obj/machinery/atmospherics/pipe/simple/hidden/supply{ - dir = 4 - }, -/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ - dir = 4 - }, -/obj/structure/cable/cyan{ - d1 = 4; - d2 = 8; - icon_state = "4-8" - }, -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/obj/machinery/door/firedoor/glass, -/turf/simulated/floor/tiled/steel_grid, -/area/engineering/atmos/hallway) -"vA" = ( -/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ - dir = 4 - }, -/obj/structure/cable/cyan{ - d1 = 4; - d2 = 8; - icon_state = "4-8" - }, -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/obj/effect/floor_decal/steeldecal/steel_decals4{ - dir = 1 - }, -/obj/effect/floor_decal/steeldecal/steel_decals4{ - dir = 6 - }, -/obj/machinery/atmospherics/pipe/manifold/hidden/supply, -/turf/simulated/floor/tiled, -/area/engineering/atmos/hallway) -"vB" = ( -/obj/machinery/atmospherics/pipe/simple/hidden/cyan{ - dir = 5; - icon_state = "intact" - }, -/obj/machinery/atmospherics/pipe/simple/hidden/supply{ - dir = 9 - }, -/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ - dir = 9 - }, -/obj/structure/cable/cyan{ - d1 = 4; - d2 = 8; - icon_state = "4-8" - }, -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/turf/simulated/floor/tiled, -/area/engineering/atmos/hallway) -"vC" = ( -/obj/machinery/atmospherics/pipe/simple/hidden/cyan{ - dir = 4 - }, -/obj/machinery/atmospherics/pipe/simple/hidden/supply, -/obj/structure/cable/cyan{ - d1 = 4; - d2 = 8; - icon_state = "4-8" - }, -/obj/structure/cable/cyan{ - d1 = 2; - d2 = 8; - icon_state = "2-8" - }, -/obj/structure/cable/cyan{ - d1 = 1; - d2 = 8; - icon_state = "1-8" - }, -/obj/structure/disposalpipe/junction{ - icon_state = "pipe-j1"; - dir = 4 - }, -/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{ - dir = 8 - }, -/turf/simulated/floor/tiled, -/area/engineering/atmos/hallway) -"vD" = ( -/obj/machinery/atmospherics/pipe/simple/hidden/cyan{ - dir = 10; - icon_state = "intact" - }, -/obj/structure/cable/cyan{ - d1 = 1; - d2 = 8; - icon_state = "1-8" - }, -/obj/structure/disposalpipe/segment{ - dir = 8; - icon_state = "pipe-c" - }, -/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ - dir = 4 - }, -/turf/simulated/floor/tiled, -/area/engineering/atmos/hallway) -"vE" = ( -/obj/machinery/atmospherics/unary/vent_scrubber/on{ - dir = 8 - }, -/turf/simulated/floor/tiled, -/area/engineering/atmos/hallway) -"vF" = ( -/obj/effect/floor_decal/steeldecal/steel_decals4, -/obj/effect/floor_decal/steeldecal/steel_decals4{ - dir = 10 - }, -/obj/machinery/atmospherics/pipe/simple/hidden/yellow, -/turf/simulated/floor/tiled, -/area/engineering/atmos/hallway) -"vG" = ( -/obj/machinery/door/firedoor/glass, -/obj/machinery/door/airlock/glass_atmos{ - name = "Atmospherics"; - req_access = list(24) - }, -/turf/simulated/floor/tiled/steel_grid, -/area/engineering/atmos/monitoring) -"vH" = ( -/obj/effect/floor_decal/steeldecal/steel_decals5{ - dir = 4 - }, -/obj/effect/floor_decal/steeldecal/steel_decals5{ - dir = 8 - }, -/obj/effect/floor_decal/steeldecal/steel_decals4{ - dir = 6 - }, -/obj/effect/floor_decal/steeldecal/steel_decals4{ - dir = 1 - }, -/turf/simulated/floor/tiled, -/area/engineering/atmos/monitoring) -"vI" = ( -/obj/effect/floor_decal/steeldecal/steel_decals5{ - dir = 4 - }, -/obj/effect/floor_decal/steeldecal/steel_decals5{ - dir = 8 - }, -/obj/machinery/atmospherics/unary/vent_pump/on{ - dir = 4 - }, -/turf/simulated/floor/tiled, -/area/engineering/atmos/monitoring) -"vJ" = ( -/obj/effect/floor_decal/steeldecal/steel_decals5{ - dir = 4 - }, -/obj/effect/floor_decal/steeldecal/steel_decals5{ - dir = 8 - }, -/obj/machinery/atmospherics/pipe/simple/hidden/supply{ - dir = 9 - }, -/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ - dir = 5 - }, -/turf/simulated/floor/tiled, -/area/engineering/atmos/monitoring) -"vK" = ( -/obj/effect/floor_decal/steeldecal/steel_decals5{ - dir = 4 - }, -/obj/effect/floor_decal/steeldecal/steel_decals5{ - dir = 8 - }, -/obj/machinery/atmospherics/unary/vent_scrubber/on{ - dir = 8 - }, -/turf/simulated/floor/tiled, -/area/engineering/atmos/monitoring) -"vL" = ( -/obj/effect/floor_decal/steeldecal/steel_decals5{ - dir = 4 - }, -/obj/effect/floor_decal/steeldecal/steel_decals5{ - dir = 8 - }, -/obj/effect/floor_decal/steeldecal/steel_decals6{ - dir = 5 - }, -/obj/machinery/alarm{ - dir = 8; - icon_state = "alarm0"; - pixel_x = 24 - }, -/turf/simulated/floor/tiled, -/area/engineering/atmos/monitoring) -"vM" = ( -/obj/structure/closet/firecloset, -/turf/simulated/floor/tiled/techfloor, -/area/engineering/atmos/monitoring) -"vN" = ( -/obj/machinery/light/small, -/turf/simulated/floor/tiled/techfloor, -/area/engineering/atmos/monitoring) -"vO" = ( -/obj/structure/table/standard, -/obj/item/device/t_scanner, -/obj/item/weapon/storage/briefcase/inflatable, -/turf/simulated/floor/tiled/techfloor, -/area/engineering/atmos/monitoring) +/turf/simulated/floor/plating, +/area/maintenance/engineering/pumpstation) "vP" = ( -/obj/effect/decal/cleanable/dirt, -/obj/structure/catwalk, -/turf/simulated/floor/tiled/techfloor, -/area/maintenance/lower/south) +/obj/effect/floor_decal/corner/purple{ + icon_state = "corner_white"; + dir = 5 + }, +/obj/structure/mopbucket, +/obj/item/weapon/mop, +/obj/item/weapon/reagent_containers/glass/bucket, +/obj/effect/floor_decal/borderfloor/shifted{ + icon_state = "borderfloor_shifted"; + dir = 1 + }, +/obj/effect/floor_decal/corner/purple/border/shifted{ + icon_state = "bordercolor_shifted"; + dir = 1 + }, +/turf/simulated/floor/tiled, +/area/janitor) "vQ" = ( /obj/effect/decal/cleanable/dirt, /obj/effect/floor_decal/corner_techfloor_grid{ dir = 8 }, +/obj/structure/railing, /turf/simulated/floor/tiled/techfloor, /area/maintenance/lower/south) "vR" = ( @@ -11433,234 +10183,78 @@ /turf/simulated/wall/r_wall, /area/server) "vZ" = ( -/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, -/obj/machinery/atmospherics/pipe/simple/hidden/supply, /obj/machinery/door/firedoor/glass, -/obj/structure/cable/green{ - d1 = 1; - d2 = 2; - icon_state = "1-2" - }, -/obj/structure/cable/green{ - d1 = 1; - d2 = 2; - icon_state = "1-2" - }, -/obj/machinery/door/airlock/command{ - name = "Server Room"; - req_access = list(30) - }, -/turf/simulated/floor/tiled/steel_grid, -/area/server) -"wa" = ( -/obj/effect/floor_decal/borderfloor{ - dir = 8 - }, -/obj/effect/floor_decal/corner/yellow/border{ - dir = 8 - }, -/obj/effect/floor_decal/steeldecal/steel_decals9, -/obj/effect/floor_decal/steeldecal/steel_decals7{ - dir = 8 - }, -/obj/machinery/atmospherics/pipe/simple/hidden/supply, -/obj/structure/cable/cyan{ - d1 = 1; - d2 = 2; - icon_state = "1-2" - }, -/obj/machinery/firealarm{ - dir = 8; - pixel_x = -24 - }, -/turf/simulated/floor/tiled, -/area/engineering/atmos/hallway) -"wb" = ( -/obj/effect/floor_decal/borderfloor{ - dir = 4 - }, -/obj/effect/floor_decal/corner/yellow/border{ - dir = 4 - }, -/obj/effect/floor_decal/steeldecal/steel_decals7{ - dir = 4 - }, -/obj/effect/floor_decal/steeldecal/steel_decals7{ - dir = 1 - }, -/obj/machinery/light_switch{ - pixel_x = 25 +/obj/machinery/door/airlock/maintenance/rnd{ + name = "Research and Development Maintenance"; + req_access = list(7) }, /obj/structure/disposalpipe/segment, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/turf/simulated/floor/plating, +/area/rnd/research) +"wb" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/machinery/door/airlock/glass_atmos{ + name = "Atmospherics EVA"; + req_access = list(24) + }, +/obj/machinery/door/firedoor/glass, /turf/simulated/floor/tiled, -/area/engineering/atmos/hallway) +/area/engineering/lower/atmos_eva) "wc" = ( /turf/simulated/wall, /area/engineering/lower/atmos_lockers) -"wd" = ( -/obj/structure/grille, -/obj/structure/window/reinforced/full, -/obj/machinery/door/firedoor, -/turf/simulated/floor/plating, -/area/engineering/lower/atmos_lockers) -"we" = ( -/obj/structure/grille, -/obj/structure/window/reinforced/full, -/obj/machinery/door/firedoor, -/obj/machinery/atmospherics/pipe/simple/hidden/supply, -/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, -/turf/simulated/floor/plating, -/area/engineering/lower/atmos_lockers) -"wf" = ( -/obj/effect/floor_decal/corner/yellow{ - dir = 6 - }, -/obj/effect/floor_decal/corner/yellow{ - dir = 9 - }, -/obj/effect/floor_decal/steeldecal/steel_decals9, -/obj/effect/floor_decal/steeldecal/steel_decals9{ - dir = 4 - }, -/obj/effect/floor_decal/steeldecal/steel_decals9{ - dir = 8 - }, -/obj/effect/floor_decal/steeldecal/steel_decals9{ - dir = 1 - }, -/obj/machinery/vending/engivend, -/turf/simulated/floor/tiled/monotile, -/area/engineering/atmos/hallway) "wg" = ( -/obj/effect/floor_decal/corner/yellow{ - dir = 6 - }, -/obj/effect/floor_decal/corner/yellow{ - dir = 9 - }, -/obj/effect/floor_decal/steeldecal/steel_decals9, -/obj/effect/floor_decal/steeldecal/steel_decals9{ - dir = 4 - }, -/obj/effect/floor_decal/steeldecal/steel_decals9{ - dir = 8 - }, -/obj/effect/floor_decal/steeldecal/steel_decals9{ - dir = 1 - }, -/obj/machinery/vending/tool, -/turf/simulated/floor/tiled/monotile, -/area/engineering/atmos/hallway) -"wh" = ( /obj/structure/cable/cyan{ d1 = 1; d2 = 2; icon_state = "1-2" }, -/obj/effect/floor_decal/steeldecal/steel_decals7{ - dir = 6 +/obj/machinery/atmospherics/pipe/simple/hidden/cyan, +/obj/machinery/door/airlock/glass_atmos{ + name = "Atmospherics"; + req_access = list(24) }, -/obj/effect/floor_decal/steeldecal/steel_decals7{ - dir = 1 +/obj/machinery/door/firedoor/glass, +/turf/simulated/floor/tiled, +/area/engineering/atmos) +"wh" = ( +/obj/machinery/door/firedoor/glass, +/obj/structure/grille, +/obj/structure/window/reinforced/full, +/turf/simulated/floor/plating, +/area/engineering/atmos) +"wi" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/red, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/machinery/door/airlock/glass_atmos{ + name = "Atmospherics"; + req_access = list(24) }, /obj/structure/disposalpipe/segment, -/obj/effect/floor_decal/borderfloor{ - dir = 8 - }, -/obj/effect/floor_decal/corner/yellow/border{ - dir = 8 - }, -/obj/effect/floor_decal/borderfloor/corner2{ - dir = 8 - }, -/obj/effect/floor_decal/corner/yellow/bordercorner2{ - dir = 8 - }, -/obj/machinery/atmospherics/pipe/simple/hidden/supply, -/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ - dir = 5 - }, +/obj/machinery/door/firedoor/glass, /turf/simulated/floor/tiled, -/area/engineering/atmos/hallway) -"wi" = ( -/obj/machinery/atmospherics/pipe/simple/hidden/cyan, -/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ - dir = 4 - }, -/turf/simulated/floor/tiled, -/area/engineering/atmos/hallway) -"wj" = ( -/obj/machinery/atmospherics/pipe/simple/hidden/universal{ - dir = 4 - }, -/turf/simulated/floor/tiled, -/area/engineering/atmos/hallway) -"wk" = ( -/obj/machinery/light{ - dir = 4; - icon_state = "tube1"; - pixel_x = 0 - }, -/obj/effect/floor_decal/borderfloor{ - dir = 4 - }, -/obj/effect/floor_decal/corner/yellow/border{ - dir = 4 - }, -/obj/effect/floor_decal/steeldecal/steel_decals7{ - dir = 10 - }, -/obj/effect/floor_decal/steeldecal/steel_decals7{ - dir = 9 - }, -/obj/effect/floor_decal/borderfloor/corner2{ - dir = 6 - }, -/obj/effect/floor_decal/corner/yellow/bordercorner2{ - dir = 6 - }, -/obj/machinery/atmospherics/pipe/manifold/hidden/yellow{ - dir = 4 - }, -/turf/simulated/floor/tiled, -/area/engineering/atmos/hallway) -"wl" = ( -/obj/structure/table/glass, -/obj/item/weapon/tool/wrench, -/turf/simulated/floor/tiled, -/area/engineering/atmos/monitoring) +/area/engineering/atmos) "wm" = ( -/obj/structure/bed/chair/office/light, -/turf/simulated/floor/tiled, -/area/engineering/atmos/monitoring) -"wn" = ( -/obj/structure/table/glass, -/turf/simulated/floor/tiled, -/area/engineering/atmos/monitoring) -"wo" = ( -/obj/structure/table/glass, -/obj/item/weapon/storage/box/donkpockets, -/turf/simulated/floor/tiled, -/area/engineering/atmos/monitoring) +/turf/simulated/wall, +/area/maintenance/engineering/pumpstation) "wp" = ( -/obj/item/device/radio/intercom{ - dir = 8; - pixel_x = 24 +/obj/machinery/door/airlock/maintenance/engi{ + name = "Pump Station" }, -/obj/structure/table/glass, -/obj/machinery/button/remote/blast_door{ - id = "atmoslockdown"; - name = "Atmospherics Lockdown"; - pixel_x = 20; - pixel_y = -30; - req_one_access = list(10,24) +/obj/machinery/atmospherics/pipe/simple/hidden/cyan, +/obj/structure/cable/cyan{ + d1 = 1; + d2 = 2; + icon_state = "1-2" }, -/turf/simulated/floor/tiled, -/area/engineering/atmos/monitoring) +/obj/machinery/door/firedoor/glass, +/turf/simulated/floor/plating, +/area/maintenance/engineering/pumpstation) "wq" = ( -/obj/structure/railing{ - dir = 4 - }, /obj/structure/cable{ d1 = 1; d2 = 2; @@ -11672,6 +10266,10 @@ icon_state = "1-4" }, /obj/effect/decal/cleanable/dirt, +/obj/structure/cable{ + icon_state = "1-8" + }, +/obj/structure/catwalk, /turf/simulated/floor/tiled/techfloor, /area/maintenance/lower/south) "wr" = ( @@ -11806,24 +10404,9 @@ /obj/effect/decal/cleanable/dirt, /turf/simulated/floor/tiled/techfloor, /area/maintenance/asmaint2) -"wA" = ( -/obj/machinery/computer/message_monitor{ - dir = 4 - }, -/obj/effect/floor_decal/techfloor{ - dir = 9 - }, -/turf/simulated/floor/tiled/techfloor, -/area/server) "wB" = ( -/obj/structure/bed/chair/office/light{ - dir = 8 - }, -/obj/effect/floor_decal/techfloor{ - dir = 1 - }, -/turf/simulated/floor/tiled/techfloor, -/area/server) +/turf/simulated/floor/plating, +/area/maintenance/asmaint2) "wC" = ( /obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, /obj/machinery/atmospherics/pipe/simple/hidden/supply, @@ -11841,12 +10424,10 @@ /turf/simulated/floor/tiled/techfloor, /area/server) "wD" = ( -/obj/effect/floor_decal/techfloor{ - dir = 1 - }, -/obj/machinery/camera/network/research, -/turf/simulated/floor/tiled/techfloor, -/area/server) +/obj/random/junk, +/obj/effect/decal/cleanable/dirt, +/turf/simulated/floor/plating, +/area/maintenance/asmaint2) "wE" = ( /obj/machinery/atmospherics/portables_connector, /obj/machinery/portable_atmospherics/canister/nitrogen, @@ -11871,222 +10452,391 @@ /turf/simulated/floor/tiled/techfloor, /area/server) "wG" = ( -/obj/machinery/light{ - dir = 8; - icon_state = "tube1"; +/obj/structure/cable/cyan{ + d1 = 2; + d2 = 4; + icon_state = "2-4" + }, +/obj/effect/floor_decal/borderfloor{ + dir = 1; + icon_state = "borderfloor"; pixel_y = 0 }, -/obj/effect/floor_decal/borderfloor{ - dir = 8 - }, -/obj/effect/floor_decal/corner/yellow/border{ - dir = 8 - }, -/obj/effect/floor_decal/steeldecal/steel_decals7{ - dir = 8 - }, -/obj/effect/floor_decal/steeldecal/steel_decals7, -/obj/machinery/atmospherics/pipe/simple/hidden/supply, -/obj/structure/cable/cyan{ - d1 = 1; - d2 = 2; - icon_state = "1-2" - }, -/turf/simulated/floor/tiled, -/area/engineering/atmos/hallway) -"wH" = ( -/obj/effect/floor_decal/borderfloor{ - dir = 4 - }, -/obj/effect/floor_decal/corner/yellow/border{ - dir = 4 - }, -/obj/effect/floor_decal/steeldecal/steel_decals7{ - dir = 4 - }, -/obj/effect/floor_decal/steeldecal/steel_decals7{ +/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{ dir = 1 }, -/obj/machinery/alarm{ - dir = 8; - icon_state = "alarm0"; - pixel_x = 24 - }, -/obj/structure/disposalpipe/segment, -/turf/simulated/floor/tiled, -/area/engineering/atmos/hallway) -"wI" = ( -/obj/item/weapon/pickaxe, -/turf/simulated/floor/tiled/techfloor, -/area/engineering/atmos/hallway) -"wJ" = ( -/obj/structure/closet/secure_closet/atmos_personal, -/obj/effect/floor_decal/borderfloor{ - dir = 9 - }, -/obj/effect/floor_decal/corner/yellow/border{ - dir = 9 - }, -/turf/simulated/floor/tiled, -/area/engineering/lower/atmos_lockers) -"wK" = ( -/obj/structure/closet/secure_closet/atmos_personal, -/obj/effect/floor_decal/borderfloor{ - dir = 1 - }, -/obj/effect/floor_decal/corner/yellow/border{ - dir = 1 - }, -/obj/machinery/atmospherics/pipe/simple/hidden/supply, -/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, -/turf/simulated/floor/tiled, -/area/engineering/lower/atmos_lockers) -"wL" = ( -/obj/structure/closet/secure_closet/atmos_personal, -/obj/effect/floor_decal/borderfloor{ - dir = 5 - }, -/obj/effect/floor_decal/corner/yellow/border{ - dir = 5 - }, -/turf/simulated/floor/tiled, -/area/engineering/lower/atmos_lockers) -"wM" = ( -/obj/effect/floor_decal/borderfloor{ - dir = 8 - }, -/obj/effect/floor_decal/corner/yellow/border{ - dir = 8 - }, -/obj/structure/cable/cyan{ - d1 = 1; - d2 = 2; - icon_state = "1-2" - }, -/obj/effect/floor_decal/steeldecal/steel_decals7{ - dir = 5 - }, -/obj/effect/floor_decal/steeldecal/steel_decals7{ +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ dir = 6 }, -/obj/structure/disposalpipe/segment, -/obj/machinery/atmospherics/pipe/simple/hidden/universal, +/obj/effect/floor_decal/corner/yellow/border{ + icon_state = "bordercolor"; + dir = 1 + }, +/obj/effect/floor_decal/borderfloor/corner2{ + dir = 1 + }, +/obj/effect/floor_decal/corner/yellow/bordercorner2{ + icon_state = "bordercolorcorner2"; + dir = 1 + }, /turf/simulated/floor/tiled, -/area/engineering/atmos/hallway) -"wN" = ( -/obj/machinery/atmospherics/pipe/simple/hidden/cyan, +/area/engineering/atmos) +"wH" = ( +/obj/structure/cable/cyan{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers, +/obj/machinery/atmospherics/pipe/manifold/hidden/supply, /turf/simulated/floor/tiled, -/area/engineering/atmos/hallway) -"wO" = ( -/turf/simulated/floor/tiled, -/area/engineering/atmos/hallway) -"wP" = ( +/area/engineering/atmos) +"wI" = ( +/obj/structure/cable/cyan{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, /obj/effect/floor_decal/borderfloor{ + dir = 1; + icon_state = "borderfloor"; + pixel_y = 0 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ dir = 4 }, /obj/effect/floor_decal/corner/yellow/border{ + icon_state = "bordercolor"; + dir = 1 + }, +/obj/machinery/firealarm{ + dir = 2; + layer = 3.3; + pixel_x = 0; + pixel_y = 26 + }, +/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{ + dir = 1 + }, +/turf/simulated/floor/tiled, +/area/engineering/atmos) +"wL" = ( +/obj/structure/cable/cyan{ + d1 = 2; + d2 = 4; + icon_state = "2-4" + }, +/obj/structure/cable/cyan{ + d1 = 2; + d2 = 8; + icon_state = "2-8" + }, +/obj/effect/floor_decal/borderfloor{ + dir = 1; + icon_state = "borderfloor"; + pixel_y = 0 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ dir = 4 }, -/obj/machinery/alarm{ - dir = 8; - icon_state = "alarm0"; - pixel_x = 24 +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 }, -/obj/effect/floor_decal/steeldecal/steel_decals7{ - dir = 10 +/obj/effect/floor_decal/corner/yellow/border{ + icon_state = "bordercolor"; + dir = 1 }, -/obj/effect/floor_decal/steeldecal/steel_decals7{ - dir = 9 - }, -/obj/machinery/atmospherics/pipe/simple/hidden/yellow, /turf/simulated/floor/tiled, -/area/engineering/atmos/hallway) +/area/engineering/atmos) +"wM" = ( +/obj/structure/cable/cyan{ + d1 = 2; + d2 = 8; + icon_state = "2-8" + }, +/obj/machinery/atmospherics/pipe/simple/hidden/cyan{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{ + dir = 1 + }, +/obj/machinery/atmospherics/pipe/manifold/hidden/supply{ + dir = 1 + }, +/obj/effect/floor_decal/borderfloor{ + dir = 1; + icon_state = "borderfloor"; + pixel_y = 0 + }, +/obj/effect/floor_decal/corner/yellow/border{ + icon_state = "bordercolor"; + dir = 1 + }, +/obj/effect/floor_decal/borderfloor/corner2{ + dir = 1 + }, +/obj/effect/floor_decal/borderfloor/corner2{ + dir = 4 + }, +/obj/effect/floor_decal/corner/yellow/bordercorner2{ + icon_state = "bordercolorcorner2"; + dir = 4 + }, +/obj/effect/floor_decal/corner/yellow/bordercorner2{ + icon_state = "bordercolorcorner2"; + dir = 1 + }, +/obj/structure/cable/cyan{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/turf/simulated/floor/tiled, +/area/engineering/atmos) +"wN" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/red, +/obj/machinery/atmospherics/pipe/simple/hidden/cyan{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers, +/obj/machinery/atmospherics/pipe/manifold/hidden/supply, +/obj/structure/disposalpipe/segment, +/obj/structure/cable/cyan{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/turf/simulated/floor/tiled, +/area/engineering/atmos) +"wO" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/cyan{ + dir = 4 + }, +/obj/effect/floor_decal/borderfloor{ + dir = 1; + icon_state = "borderfloor"; + pixel_y = 0 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/obj/effect/floor_decal/corner/yellow/border{ + icon_state = "bordercolor"; + dir = 1 + }, +/obj/effect/floor_decal/borderfloor/corner2{ + dir = 4 + }, +/obj/effect/floor_decal/corner/yellow/bordercorner2{ + icon_state = "bordercolorcorner2"; + dir = 4 + }, +/obj/structure/cable/cyan{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/obj/machinery/door/firedoor/glass/hidden/steel{ + dir = 2 + }, +/turf/simulated/floor/tiled, +/area/engineering/atmos) +"wP" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/cyan{ + dir = 4 + }, +/obj/effect/floor_decal/borderfloor{ + dir = 1; + icon_state = "borderfloor"; + pixel_y = 0 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, +/obj/effect/floor_decal/corner/yellow/border{ + icon_state = "bordercolor"; + dir = 1 + }, +/obj/structure/cable/cyan{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/obj/machinery/atmospherics/pipe/manifold/hidden/supply{ + dir = 1 + }, +/turf/simulated/floor/tiled, +/area/engineering/atmos) "wQ" = ( -/obj/machinery/computer/atmos_alert{ - icon_state = "computer"; +/obj/effect/floor_decal/borderfloor{ + dir = 1; + icon_state = "borderfloor"; + pixel_y = 0 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/obj/effect/floor_decal/corner/yellow/border{ + icon_state = "bordercolor"; dir = 1 }, +/obj/machinery/atmospherics/pipe/simple/hidden/cyan{ + dir = 4; + icon_state = "intact" + }, +/obj/structure/cable/cyan{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, /turf/simulated/floor/tiled, -/area/engineering/atmos/monitoring) -"wR" = ( -/obj/machinery/computer/atmoscontrol{ - dir = 1 - }, -/turf/simulated/floor/tiled, -/area/engineering/atmos/monitoring) -"wS" = ( -/obj/machinery/camera/network/engineering{ - dir = 1 - }, -/obj/machinery/computer/security/engineering{ - dir = 1 - }, -/turf/simulated/floor/tiled, -/area/engineering/atmos/monitoring) +/area/engineering/atmos) "wT" = ( -/obj/machinery/computer/rcon{ - icon_state = "computer"; +/obj/effect/floor_decal/borderfloor{ + dir = 1; + icon_state = "borderfloor"; + pixel_y = 0 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/obj/effect/floor_decal/corner/yellow/border{ + icon_state = "bordercolor"; + dir = 1 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/cyan{ + dir = 4; + icon_state = "intact" + }, +/obj/structure/cable/cyan{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{ dir = 1 }, /turf/simulated/floor/tiled, -/area/engineering/atmos/monitoring) +/area/engineering/atmos) "wU" = ( -/obj/machinery/computer/station_alert{ +/obj/effect/floor_decal/borderfloor{ + dir = 1; + icon_state = "borderfloor"; + pixel_y = 0 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/obj/effect/floor_decal/corner/yellow/border{ + icon_state = "bordercolor"; dir = 1 }, +/obj/machinery/atmospherics/pipe/simple/hidden/cyan{ + dir = 4; + icon_state = "intact" + }, +/obj/structure/cable/cyan{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/obj/machinery/door/firedoor/glass/hidden/steel{ + dir = 2 + }, /turf/simulated/floor/tiled, -/area/engineering/atmos/monitoring) +/area/engineering/atmos) "wV" = ( -/obj/machinery/computer/power_monitor{ - icon_state = "computer"; +/obj/effect/floor_decal/borderfloor{ + dir = 1; + icon_state = "borderfloor"; + pixel_y = 0 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/obj/effect/floor_decal/corner/yellow/border{ + icon_state = "bordercolor"; dir = 1 }, +/obj/machinery/atmospherics/pipe/simple/hidden/cyan{ + dir = 9; + icon_state = "intact" + }, +/obj/structure/cable/cyan{ + d1 = 1; + d2 = 8; + icon_state = "1-8" + }, /turf/simulated/floor/tiled, -/area/engineering/atmos/monitoring) +/area/engineering/atmos) "wW" = ( -/obj/effect/decal/cleanable/dirt, -/obj/random/trash_pile, -/turf/simulated/floor, -/area/maintenance/lower/south) -"wX" = ( -/obj/effect/floor_decal/rust, -/obj/effect/decal/cleanable/dirt, -/obj/structure/catwalk, -/obj/structure/closet/crate, -/obj/random/maintenance/engineering, -/obj/random/maintenance/research, -/obj/random/maintenance/clean, -/obj/random/junk, -/turf/simulated/floor, -/area/maintenance/lower/south) +/obj/effect/floor_decal/borderfloor{ + dir = 5 + }, +/obj/effect/floor_decal/corner/yellow/border{ + icon_state = "bordercolor"; + dir = 5 + }, +/obj/machinery/atmospherics/unary/vent_scrubber/on{ + dir = 8 + }, +/obj/machinery/alarm{ + frequency = 1441; + pixel_y = 22 + }, +/turf/simulated/floor/tiled, +/area/engineering/atmos) "wY" = ( -/obj/effect/decal/cleanable/dirt, -/obj/structure/catwalk, -/turf/simulated/floor, -/area/maintenance/lower/south) -"wZ" = ( -/obj/effect/floor_decal/rust, -/obj/effect/decal/cleanable/dirt, -/obj/structure/catwalk, -/turf/simulated/floor, -/area/maintenance/lower/south) -"xa" = ( -/obj/effect/decal/cleanable/dirt, -/obj/structure/catwalk, -/obj/random/junk, -/turf/simulated/floor/tiled/techfloor, -/area/maintenance/lower/south) +/obj/structure/railing{ + dir = 8 + }, +/obj/effect/floor_decal/borderfloor{ + dir = 8 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/structure/disposalpipe/segment, +/turf/simulated/floor/tiled/techmaint, +/area/tether/surfacebase/east_stairs_two) "xb" = ( -/obj/effect/floor_decal/rust, -/obj/structure/table/rack, -/obj/structure/catwalk, -/obj/random/maintenance/research, -/obj/random/maintenance/clean, -/turf/simulated/floor/tiled/techfloor, -/area/maintenance/lower/south) +/obj/effect/floor_decal/borderfloor{ + dir = 4 + }, +/obj/effect/floor_decal/corner/purple/border{ + dir = 4 + }, +/obj/effect/floor_decal/borderfloor/corner2{ + dir = 6 + }, +/obj/effect/floor_decal/corner/purple/bordercorner2{ + icon_state = "bordercolorcorner2"; + dir = 6 + }, +/obj/machinery/light{ + dir = 4; + icon_state = "tube1"; + pixel_x = 0 + }, +/turf/simulated/floor/tiled, +/area/janitor) "xc" = ( /obj/machinery/light/small, /obj/effect/floor_decal/corner_techfloor_grid/full, +/obj/structure/railing{ + dir = 1 + }, /turf/simulated/floor/tiled/techfloor, /area/maintenance/lower/south) "xd" = ( @@ -12102,6 +10852,9 @@ pixel_y = -28 }, /obj/structure/cable, +/obj/structure/railing{ + dir = 1 + }, /turf/simulated/floor/tiled/techfloor, /area/maintenance/lower/south) "xe" = ( @@ -12236,161 +10989,170 @@ /turf/simulated/floor/tiled/techfloor, /area/server) "xs" = ( -/obj/effect/floor_decal/borderfloor{ - dir = 8 - }, -/obj/effect/floor_decal/corner/yellow/border{ - dir = 8 - }, -/obj/effect/floor_decal/steeldecal/steel_decals7{ - dir = 8 - }, -/obj/machinery/atmospherics/pipe/simple/hidden/supply, /obj/structure/cable/cyan{ d1 = 1; d2 = 2; icon_state = "1-2" }, -/obj/effect/floor_decal/steeldecal/steel_decals7, -/obj/machinery/status_display{ - pixel_x = -32 +/obj/effect/floor_decal/borderfloor, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/obj/machinery/atmospherics/pipe/manifold/hidden/supply{ + dir = 4 + }, +/obj/effect/floor_decal/corner/yellow/border, +/obj/structure/disposalpipe/segment{ + dir = 4 }, /turf/simulated/floor/tiled, -/area/engineering/atmos/hallway) +/area/engineering/atmos) "xt" = ( -/obj/effect/floor_decal/borderfloor{ +/obj/effect/floor_decal/borderfloor, +/obj/effect/floor_decal/corner/yellow/border, +/obj/structure/disposalpipe/segment{ dir = 4 }, -/obj/effect/floor_decal/corner/yellow/border{ - dir = 4 - }, -/obj/effect/floor_decal/steeldecal/steel_decals7{ - dir = 4 - }, -/obj/effect/floor_decal/steeldecal/steel_decals7{ +/obj/machinery/camera/network/engineering{ dir = 1 }, -/obj/structure/disposalpipe/segment, /turf/simulated/floor/tiled, -/area/engineering/atmos/hallway) +/area/engineering/atmos) "xu" = ( -/obj/item/toy/figure/clown, -/turf/simulated/floor/tiled/techfloor, -/area/engineering/atmos/hallway) -"xv" = ( -/obj/effect/floor_decal/borderfloor{ - dir = 8 - }, -/obj/effect/floor_decal/corner/yellow/border{ - dir = 8 - }, -/obj/machinery/firealarm{ - dir = 8; - pixel_x = -24 - }, -/turf/simulated/floor/tiled, -/area/engineering/lower/atmos_lockers) -"xw" = ( -/obj/machinery/atmospherics/pipe/simple/hidden/supply, -/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ - dir = 5 - }, -/turf/simulated/floor/tiled, -/area/engineering/lower/atmos_lockers) -"xx" = ( -/obj/effect/floor_decal/borderfloor/corner{ - dir = 4 - }, -/obj/effect/floor_decal/corner/yellow/bordercorner{ - dir = 4 - }, -/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ - dir = 10 - }, -/turf/simulated/floor/tiled, -/area/engineering/lower/atmos_lockers) -"xy" = ( -/obj/structure/closet/secure_closet/engineering_electrical, -/obj/effect/floor_decal/borderfloor{ - dir = 1 - }, -/obj/effect/floor_decal/corner/yellow/border{ - dir = 1 - }, -/turf/simulated/floor/tiled, -/area/engineering/lower/atmos_lockers) -"xz" = ( -/obj/structure/closet/secure_closet/engineering_welding, -/obj/effect/floor_decal/borderfloor{ - dir = 5 - }, -/obj/effect/floor_decal/corner/yellow/border{ - dir = 5 - }, +/obj/effect/floor_decal/borderfloor, +/obj/effect/floor_decal/corner/yellow/border, /obj/effect/floor_decal/borderfloor/corner2{ - dir = 5 - }, -/obj/effect/floor_decal/corner/yellow/bordercorner2{ - dir = 5 - }, -/turf/simulated/floor/tiled, -/area/engineering/lower/atmos_lockers) -"xA" = ( -/obj/effect/floor_decal/borderfloor{ - dir = 8 - }, -/obj/effect/floor_decal/corner/yellow/border{ - dir = 8 - }, -/obj/effect/floor_decal/borderfloor/corner2{ - dir = 10 - }, -/obj/effect/floor_decal/corner/yellow/bordercorner2{ - dir = 10 - }, -/obj/structure/cable/cyan{ - d1 = 1; - d2 = 2; - icon_state = "1-2" - }, -/obj/effect/floor_decal/steeldecal/steel_decals7{ - dir = 5 - }, -/obj/effect/floor_decal/steeldecal/steel_decals7{ - dir = 6 - }, -/obj/structure/disposalpipe/segment, -/obj/machinery/atmospherics/pipe/simple/hidden/cyan{ - dir = 5; - icon_state = "intact" - }, -/turf/simulated/floor/tiled, -/area/engineering/atmos/hallway) -"xB" = ( -/obj/machinery/atmospherics/pipe/manifold/hidden/cyan{ - dir = 4 - }, -/turf/simulated/floor/tiled, -/area/engineering/atmos/hallway) -"xC" = ( -/obj/effect/floor_decal/borderfloor{ - dir = 4 - }, -/obj/effect/floor_decal/corner/yellow/border{ - dir = 4 - }, -/obj/effect/floor_decal/steeldecal/steel_decals7{ - dir = 10 - }, -/obj/effect/floor_decal/steeldecal/steel_decals7{ dir = 9 }, -/obj/machinery/atmospherics/pipe/simple/hidden/yellow, +/obj/effect/floor_decal/corner/yellow/bordercorner2{ + icon_state = "bordercolorcorner2"; + dir = 9 + }, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/machinery/atmospherics/unary/vent_scrubber/on{ + dir = 1 + }, /turf/simulated/floor/tiled, -/area/engineering/atmos/hallway) +/area/engineering/atmos) +"xw" = ( +/obj/effect/floor_decal/borderfloor, +/obj/effect/floor_decal/corner/yellow/border, +/obj/effect/floor_decal/borderfloor/corner2, +/obj/effect/floor_decal/corner/yellow/bordercorner2, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/turf/simulated/floor/tiled, +/area/engineering/atmos) +"xx" = ( +/obj/structure/cable/cyan{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/obj/machinery/atmospherics/pipe/simple/hidden/red{ + icon_state = "intact"; + dir = 6 + }, +/obj/effect/floor_decal/borderfloor, +/obj/effect/floor_decal/corner/yellow/border, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/turf/simulated/floor/tiled, +/area/engineering/atmos) +"xy" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/red{ + icon_state = "intact"; + dir = 4 + }, +/obj/effect/floor_decal/borderfloor, +/obj/effect/floor_decal/corner/yellow/border, +/obj/machinery/light, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/machinery/atmospherics/unary/vent_pump/on{ + dir = 1 + }, +/turf/simulated/floor/tiled, +/area/engineering/atmos) +"xz" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/red{ + icon_state = "intact"; + dir = 4 + }, +/obj/effect/floor_decal/borderfloor, +/obj/effect/floor_decal/corner/yellow/border, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/structure/closet/hydrant{ + pixel_y = -32 + }, +/obj/machinery/door/firedoor/glass/hidden/steel{ + dir = 1 + }, +/turf/simulated/floor/tiled, +/area/engineering/atmos) +"xA" = ( +/obj/structure/cable/cyan{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/obj/machinery/atmospherics/pipe/simple/hidden/red{ + icon_state = "intact"; + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/structure/disposalpipe/sortjunction{ + dir = 4; + icon_state = "pipe-j1s"; + name = "Atmospherics"; + sortType = "Atmospherics" + }, +/turf/simulated/floor/tiled, +/area/engineering/atmos) +"xB" = ( +/obj/effect/floor_decal/borderfloor, +/obj/effect/floor_decal/corner/yellow/border, +/obj/effect/floor_decal/borderfloor/corner2, +/obj/effect/floor_decal/corner/yellow/bordercorner2, +/obj/structure/disposalpipe/segment{ + dir = 8; + icon_state = "pipe-c" + }, +/obj/machinery/atmospherics/pipe/manifold/hidden/red, +/turf/simulated/floor/tiled, +/area/engineering/atmos) +"xC" = ( +/obj/effect/floor_decal/borderfloor, +/obj/effect/floor_decal/corner/yellow/border, +/obj/machinery/light, +/obj/machinery/atmospherics/pipe/simple/hidden/red{ + icon_state = "intact"; + dir = 4 + }, +/obj/machinery/atmospherics/unary/vent_pump/on{ + dir = 1 + }, +/turf/simulated/floor/tiled, +/area/engineering/atmos) "xD" = ( -/turf/simulated/wall, -/area/engineering/atmos/storage) +/obj/effect/floor_decal/borderfloor{ + dir = 6 + }, +/obj/machinery/atmospherics/unary/vent_pump/on{ + dir = 8 + }, +/obj/effect/floor_decal/corner/yellow/border{ + icon_state = "bordercolor"; + dir = 6 + }, +/turf/simulated/floor/tiled, +/area/engineering/atmos) "xE" = ( /obj/structure/catwalk, /obj/effect/floor_decal/corner_techfloor_grid/full, @@ -12494,16 +11256,6 @@ }, /turf/simulated/floor/tiled/techfloor, /area/maintenance/asmaint2) -"xN" = ( -/obj/effect/floor_decal/techfloor{ - dir = 8 - }, -/obj/machinery/firealarm{ - dir = 8; - pixel_x = -24 - }, -/turf/simulated/floor/tiled/techfloor, -/area/server) "xO" = ( /obj/machinery/atmospherics/unary/vent_scrubber/on{ dir = 1 @@ -12564,250 +11316,103 @@ }, /area/server) "xT" = ( -/obj/effect/floor_decal/borderfloor{ - dir = 8 - }, -/obj/effect/floor_decal/corner/yellow/border{ - dir = 8 - }, -/obj/machinery/atmospherics/pipe/simple/hidden/supply, /obj/structure/cable/cyan{ d1 = 1; d2 = 2; icon_state = "1-2" }, -/obj/effect/floor_decal/steeldecal/steel_decals7, -/obj/effect/floor_decal/steeldecal/steel_decals7{ - dir = 8 +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/machinery/door/airlock/maintenance/engi{ + name = "Drone Bay"; + req_access = list(24) }, -/obj/machinery/camera/network/engineering{ - dir = 4 - }, -/turf/simulated/floor/tiled, -/area/engineering/atmos/hallway) +/obj/machinery/door/firedoor/glass, +/turf/simulated/floor/plating, +/area/engineering/drone_fabrication) "xU" = ( -/obj/item/clothing/shoes/clown_shoes, -/obj/item/clothing/mask/gas/clown_hat, -/turf/simulated/floor/tiled/techfloor, -/area/engineering/atmos/hallway) -"xV" = ( -/obj/effect/floor_decal/borderfloor{ - dir = 8 - }, -/obj/effect/floor_decal/corner/yellow/border{ - dir = 8 - }, -/obj/machinery/alarm{ - dir = 4; - icon_state = "alarm0"; - pixel_x = -22; - pixel_y = 0 - }, -/turf/simulated/floor/tiled, -/area/engineering/lower/atmos_lockers) -"xW" = ( -/obj/machinery/atmospherics/unary/vent_pump/on{ +/obj/structure/railing{ + icon_state = "railing0"; dir = 1 }, -/turf/simulated/floor/tiled, -/area/engineering/lower/atmos_lockers) +/turf/simulated/open, +/area/engineering/atmos) "xX" = ( -/obj/machinery/atmospherics/unary/vent_scrubber/on{ - dir = 1 +/obj/structure/cable/cyan{ + d1 = 1; + d2 = 2; + icon_state = "1-2" }, -/turf/simulated/floor/tiled, -/area/engineering/lower/atmos_lockers) +/obj/machinery/atmospherics/pipe/simple/hidden/red, +/obj/structure/railing, +/turf/simulated/floor/tiled/techmaint, +/area/engineering/atmos) "xY" = ( /turf/simulated/floor/tiled, /area/engineering/lower/atmos_lockers) -"xZ" = ( -/obj/effect/floor_decal/steeldecal/steel_decals4{ - dir = 10 - }, -/obj/effect/floor_decal/steeldecal/steel_decals4, -/obj/structure/cable/cyan{ - d1 = 2; - d2 = 4; - icon_state = "2-4" - }, -/turf/simulated/floor/tiled, -/area/engineering/lower/atmos_lockers) "ya" = ( -/obj/structure/cable/cyan{ - d1 = 4; - d2 = 8; - icon_state = "4-8" - }, /obj/machinery/door/firedoor/glass, -/obj/machinery/door/airlock/glass_atmos{ - name = "Locker Room"; - req_access = list(24) - }, -/turf/simulated/floor/tiled/steel_grid, -/area/engineering/lower/atmos_lockers) +/obj/structure/grille, +/obj/structure/window/reinforced/full, +/turf/simulated/floor/plating, +/area/engineering/atmos/monitoring) "yb" = ( /obj/structure/cable/cyan{ d1 = 1; - d2 = 8; - icon_state = "1-8" + d2 = 2; + icon_state = "1-2" }, -/obj/structure/cable/cyan{ - d1 = 1; - d2 = 4; - icon_state = "1-4" - }, -/obj/effect/floor_decal/steeldecal/steel_decals4{ - dir = 6 - }, -/obj/effect/floor_decal/steeldecal/steel_decals4{ - dir = 1 +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/machinery/door/airlock/glass_atmos{ + name = "Atmospherics Monitoring Room"; + req_access = list(24) }, +/obj/machinery/door/firedoor/glass, /obj/structure/disposalpipe/segment, /turf/simulated/floor/tiled, -/area/engineering/atmos/hallway) -"yc" = ( -/obj/machinery/atmospherics/pipe/simple/hidden/cyan, -/obj/structure/cable/cyan{ - d1 = 4; - d2 = 8; - icon_state = "4-8" - }, -/turf/simulated/floor/tiled, -/area/engineering/atmos/hallway) -"yd" = ( -/obj/structure/cable/cyan{ - d1 = 4; - d2 = 8; - icon_state = "4-8" - }, -/turf/simulated/floor/tiled, -/area/engineering/atmos/hallway) -"ye" = ( -/obj/effect/floor_decal/borderfloor/corner{ - dir = 4 - }, -/obj/effect/floor_decal/corner/yellow/bordercorner{ - dir = 4 - }, -/obj/structure/cable/cyan{ - d1 = 4; - d2 = 8; - icon_state = "4-8" - }, -/obj/effect/floor_decal/steeldecal/steel_decals7, -/obj/effect/floor_decal/steeldecal/steel_decals7{ - dir = 10 - }, -/obj/machinery/atmospherics/pipe/simple/hidden/yellow, -/turf/simulated/floor/tiled, -/area/engineering/atmos/hallway) +/area/engineering/atmos/monitoring) "yf" = ( -/obj/effect/floor_decal/borderfloor{ - dir = 1 - }, -/obj/effect/floor_decal/corner/yellow/border{ - dir = 1 - }, -/obj/structure/cable/cyan{ - d1 = 4; - d2 = 8; - icon_state = "4-8" - }, -/obj/structure/extinguisher_cabinet{ - pixel_y = 30 - }, -/obj/effect/floor_decal/steeldecal/steel_decals7, -/obj/effect/floor_decal/steeldecal/steel_decals7{ - dir = 4 - }, -/turf/simulated/floor/tiled, -/area/engineering/atmos/hallway) -"yg" = ( -/obj/effect/floor_decal/borderfloor{ - dir = 1 - }, -/obj/effect/floor_decal/corner/yellow/border{ - dir = 1 - }, -/obj/structure/cable/cyan{ - d1 = 4; - d2 = 8; - icon_state = "4-8" - }, -/obj/machinery/power/apc{ - dir = 1; - name = "north bump"; - pixel_x = 0; - pixel_y = 28 - }, -/obj/structure/cable/cyan{ - d2 = 8; - icon_state = "0-8" - }, -/obj/effect/floor_decal/steeldecal/steel_decals7, -/obj/effect/floor_decal/steeldecal/steel_decals7{ - dir = 4 - }, -/turf/simulated/floor/tiled, -/area/engineering/atmos/hallway) -"yh" = ( -/obj/effect/floor_decal/borderfloor{ - dir = 1 - }, -/obj/effect/floor_decal/corner/yellow/border{ - dir = 1 - }, -/obj/structure/cable/cyan{ - d1 = 4; - d2 = 8; - icon_state = "4-8" - }, -/obj/effect/floor_decal/steeldecal/steel_decals7, -/obj/effect/floor_decal/steeldecal/steel_decals7{ - dir = 4 - }, -/turf/simulated/floor/tiled, -/area/engineering/atmos/hallway) +/obj/machinery/atmospherics/pipe/simple/hidden/cyan, +/obj/structure/railing, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/turf/simulated/floor/tiled/techmaint, +/area/engineering/atmos) "yi" = ( -/obj/effect/floor_decal/borderfloor{ - dir = 5 +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/machinery/door/airlock/maintenance/engi{ + name = "Atmospherics"; + req_access = list(24) }, -/obj/effect/floor_decal/corner/yellow/border{ - dir = 5 +/obj/structure/catwalk, +/turf/simulated/floor/plating, +/area/engineering/atmos) +"ym" = ( +/obj/structure/railing{ + dir = 8 + }, +/obj/effect/floor_decal/borderfloor{ + dir = 8 }, /obj/effect/floor_decal/borderfloor/corner2{ - dir = 5 + dir = 10; + icon_state = "borderfloorcorner2"; + pixel_x = 0 }, -/obj/effect/floor_decal/corner/yellow/bordercorner2{ - dir = 5 +/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{ + dir = 8 }, -/obj/structure/cable/cyan{ - d1 = 2; - d2 = 8; - icon_state = "2-8" +/obj/machinery/atmospherics/pipe/manifold/hidden/supply{ + dir = 8 }, -/turf/simulated/floor/tiled, -/area/engineering/atmos/hallway) -"yj" = ( -/obj/machinery/light_switch{ - pixel_y = 25 +/obj/structure/disposalpipe/segment{ + dir = 1; + icon_state = "pipe-c" }, -/turf/simulated/floor, -/area/engineering/atmos/storage) -"yk" = ( -/obj/machinery/alarm{ - pixel_y = 22 - }, -/turf/simulated/floor, -/area/engineering/atmos/storage) -"yl" = ( -/obj/machinery/space_heater, -/turf/simulated/floor, -/area/engineering/atmos/storage) -"ym" = ( -/obj/machinery/power/thermoregulator, -/turf/simulated/floor, -/area/engineering/atmos/storage) +/turf/simulated/floor/tiled/techmaint, +/area/tether/surfacebase/east_stairs_two) "yn" = ( /obj/machinery/door/airlock/multi_tile/metal/mait, /obj/machinery/door/firedoor/glass, @@ -12857,15 +11462,6 @@ }, /turf/simulated/floor/tiled/techfloor, /area/maintenance/asmaint2) -"yr" = ( -/obj/machinery/light_switch{ - pixel_x = -25 - }, -/obj/effect/floor_decal/techfloor{ - dir = 10 - }, -/turf/simulated/floor/tiled/techfloor, -/area/server) "ys" = ( /obj/effect/floor_decal/techfloor, /obj/machinery/power/apc{ @@ -12940,245 +11536,194 @@ }, /area/server) "yx" = ( -/obj/effect/floor_decal/borderfloor{ - dir = 8 - }, -/obj/effect/floor_decal/corner/yellow/border{ - dir = 8 - }, -/obj/effect/floor_decal/steeldecal/steel_decals7{ - dir = 8 - }, -/obj/effect/floor_decal/steeldecal/steel_decals7, -/obj/machinery/atmospherics/pipe/simple/hidden/supply, /obj/structure/cable/cyan{ d1 = 1; - d2 = 2; - icon_state = "1-2" + d2 = 8; + icon_state = "1-8" }, -/turf/simulated/floor/tiled, -/area/engineering/atmos/hallway) +/obj/effect/floor_decal/industrial/warning, +/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{ + dir = 8 + }, +/obj/machinery/atmospherics/pipe/manifold/hidden/supply{ + dir = 4 + }, +/turf/simulated/floor/plating, +/area/engineering/drone_fabrication) "yy" = ( -/obj/effect/floor_decal/borderfloor{ - dir = 4 +/obj/machinery/light_switch{ + pixel_y = 28 }, -/obj/effect/floor_decal/corner/yellow/border{ - dir = 4 +/obj/effect/floor_decal/industrial/warning/corner{ + icon_state = "warningcorner"; + dir = 8 }, -/obj/effect/floor_decal/steeldecal/steel_decals7{ - dir = 4 - }, -/obj/effect/floor_decal/steeldecal/steel_decals7{ - dir = 1 - }, -/obj/effect/decal/cleanable/dirt, -/obj/structure/disposalpipe/segment, -/turf/simulated/floor/tiled, -/area/engineering/atmos/hallway) -"yz" = ( -/obj/item/clothing/under/rank/clown, -/turf/simulated/floor/tiled/techfloor, -/area/engineering/atmos/hallway) -"yA" = ( -/obj/machinery/recharge_station, -/obj/effect/floor_decal/borderfloor{ +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ dir = 10 }, -/obj/effect/floor_decal/corner/yellow/border{ - dir = 10 +/obj/machinery/light/small{ + dir = 4 }, -/turf/simulated/floor/tiled, -/area/engineering/lower/atmos_lockers) +/turf/simulated/floor/plating, +/area/engineering/drone_fabrication) "yB" = ( -/obj/effect/floor_decal/borderfloor, -/obj/effect/floor_decal/corner/yellow/border, -/turf/simulated/floor/tiled, -/area/engineering/lower/atmos_lockers) +/obj/structure/railing{ + dir = 4 + }, +/turf/simulated/floor/tiled/techmaint, +/area/engineering/atmos) "yC" = ( -/obj/effect/floor_decal/borderfloor, -/obj/effect/floor_decal/corner/yellow/border, -/obj/machinery/light, -/turf/simulated/floor/tiled, -/area/engineering/lower/atmos_lockers) -"yD" = ( -/obj/effect/floor_decal/borderfloor, -/obj/effect/floor_decal/corner/yellow/border, -/obj/machinery/camera/network/engineering{ +/obj/structure/cable/cyan{ + d1 = 32; + d2 = 1; + icon_state = "32-1" + }, +/obj/structure/lattice, +/obj/machinery/atmospherics/pipe/zpipe/down{ dir = 1 }, -/turf/simulated/floor/tiled, -/area/engineering/lower/atmos_lockers) +/turf/simulated/open, +/area/engineering/atmos) "yE" = ( -/obj/effect/floor_decal/borderfloor{ - dir = 6 - }, -/obj/effect/floor_decal/corner/yellow/border{ - dir = 6 - }, -/obj/effect/floor_decal/borderfloor/corner2{ - dir = 6 - }, -/obj/effect/floor_decal/corner/yellow/bordercorner2{ - dir = 6 - }, -/obj/structure/cable/cyan, -/obj/machinery/power/apc{ +/obj/machinery/light_switch{ dir = 4; - name = "east bump"; - pixel_x = 28 + pixel_x = -28 }, -/turf/simulated/floor/tiled, -/area/engineering/lower/atmos_lockers) -"yF" = ( /obj/effect/floor_decal/borderfloor{ - dir = 10 + dir = 9 }, /obj/effect/floor_decal/corner/yellow/border{ - dir = 10 + icon_state = "bordercolor"; + dir = 9 }, -/obj/effect/floor_decal/borderfloor/corner2{ - dir = 8 - }, -/obj/effect/floor_decal/corner/yellow/bordercorner2{ - dir = 8 +/obj/machinery/light{ + dir = 1 }, /obj/machinery/camera/network/engineering{ - dir = 1 + dir = 4 }, -/obj/machinery/disposal, -/obj/structure/disposalpipe/trunk{ - dir = 1 +/obj/machinery/computer/general_air_control/large_tank_control{ + frequency = 1441; + input_tag = "atmos_out"; + name = "Atmos Intake Control"; + output_tag = "atmos_in"; + sensors = list("atmos_intake" = "Tank") }, /turf/simulated/floor/tiled, -/area/engineering/atmos/hallway) -"yG" = ( -/obj/machinery/atmospherics/pipe/simple/hidden/cyan, -/obj/effect/floor_decal/borderfloor, -/obj/effect/floor_decal/corner/yellow/border, -/obj/effect/floor_decal/borderfloor/corner2{ - dir = 9 - }, -/obj/effect/floor_decal/corner/yellow/bordercorner2{ - dir = 9 - }, -/obj/effect/floor_decal/steeldecal/steel_decals7{ - dir = 8 - }, -/obj/effect/floor_decal/steeldecal/steel_decals7{ - dir = 1 - }, -/turf/simulated/floor/tiled, -/area/engineering/atmos/hallway) -"yH" = ( -/obj/effect/floor_decal/steeldecal/steel_decals4{ - dir = 5 - }, -/obj/effect/floor_decal/steeldecal/steel_decals4{ - dir = 8 - }, -/turf/simulated/floor/tiled, -/area/engineering/atmos/hallway) -"yI" = ( -/obj/effect/floor_decal/borderfloor, -/obj/effect/floor_decal/corner/yellow/border, -/obj/effect/floor_decal/borderfloor/corner2, -/obj/effect/floor_decal/corner/yellow/bordercorner2, -/obj/effect/floor_decal/steeldecal/steel_decals7{ - dir = 1 - }, -/obj/effect/floor_decal/steeldecal/steel_decals7{ - dir = 8 - }, -/obj/machinery/atmospherics/pipe/simple/hidden/yellow, -/turf/simulated/floor/tiled, -/area/engineering/atmos/hallway) -"yJ" = ( -/obj/effect/floor_decal/borderfloor, -/obj/effect/floor_decal/corner/yellow/border, -/obj/effect/floor_decal/steeldecal/steel_decals7{ - dir = 1 - }, -/obj/effect/floor_decal/steeldecal/steel_decals7{ - dir = 8 - }, -/obj/structure/closet/hydrant{ - pixel_y = -32 - }, -/turf/simulated/floor/tiled, -/area/engineering/atmos/hallway) -"yK" = ( -/obj/effect/floor_decal/borderfloor, -/obj/effect/floor_decal/corner/yellow/border, -/obj/effect/floor_decal/steeldecal/steel_decals7{ - dir = 1 - }, -/obj/effect/floor_decal/steeldecal/steel_decals7{ - dir = 8 - }, -/turf/simulated/floor/tiled, -/area/engineering/atmos/hallway) -"yL" = ( -/obj/effect/floor_decal/borderfloor, -/obj/effect/floor_decal/corner/yellow/border, -/obj/effect/floor_decal/borderfloor/corner2{ - dir = 9 - }, -/obj/effect/floor_decal/corner/yellow/bordercorner2{ - dir = 9 - }, -/obj/effect/floor_decal/steeldecal/steel_decals7{ - dir = 1 - }, -/obj/effect/floor_decal/steeldecal/steel_decals7{ - dir = 8 - }, -/turf/simulated/floor/tiled, -/area/engineering/atmos/hallway) -"yM" = ( +/area/engineering/atmos/monitoring) +"yF" = ( /obj/structure/cable/cyan{ d1 = 1; d2 = 4; icon_state = "1-4" }, -/obj/effect/floor_decal/steeldecal/steel_decals4, -/obj/effect/floor_decal/steeldecal/steel_decals4{ - dir = 10 - }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/structure/disposalpipe/segment, /turf/simulated/floor/tiled, -/area/engineering/atmos/hallway) -"yN" = ( +/area/engineering/atmos/monitoring) +"yG" = ( /obj/structure/cable/cyan{ d1 = 4; d2 = 8; icon_state = "4-8" }, -/obj/machinery/door/firedoor/glass, -/obj/machinery/door/airlock/atmos, -/turf/simulated/floor/tiled, -/area/engineering/atmos/storage) -"yO" = ( -/obj/effect/decal/cleanable/dirt, -/obj/structure/cable/cyan{ - d1 = 2; - d2 = 8; - icon_state = "2-8" - }, -/turf/simulated/floor, -/area/engineering/atmos/storage) -"yP" = ( -/obj/effect/decal/cleanable/dirt, -/turf/simulated/floor, -/area/engineering/atmos/storage) -"yQ" = ( -/turf/simulated/floor, -/area/engineering/atmos/storage) -"yR" = ( -/obj/machinery/light/small{ - dir = 4; +/obj/effect/floor_decal/borderfloor{ + dir = 1; + icon_state = "borderfloor"; pixel_y = 0 }, -/turf/simulated/floor, -/area/engineering/atmos/storage) +/obj/effect/floor_decal/corner/yellow/border{ + icon_state = "bordercolor"; + dir = 1 + }, +/obj/effect/floor_decal/borderfloor/corner2{ + dir = 4 + }, +/obj/effect/floor_decal/corner/yellow/bordercorner2{ + icon_state = "bordercolorcorner2"; + dir = 4 + }, +/obj/machinery/computer/power_monitor, +/turf/simulated/floor/tiled, +/area/engineering/atmos/monitoring) +"yH" = ( +/obj/machinery/power/apc{ + dir = 4; + name = "east bump"; + pixel_x = 28 + }, +/obj/structure/cable/cyan{ + d2 = 8; + icon_state = "0-8" + }, +/obj/effect/floor_decal/borderfloor{ + dir = 5 + }, +/obj/effect/floor_decal/corner/yellow/border{ + icon_state = "bordercolor"; + dir = 5 + }, +/obj/machinery/computer/rcon, +/obj/machinery/light{ + dir = 1 + }, +/turf/simulated/floor/tiled, +/area/engineering/atmos/monitoring) +"yJ" = ( +/obj/structure/lattice, +/obj/machinery/atmospherics/pipe/zpipe/down{ + dir = 1 + }, +/obj/machinery/atmospherics/pipe/zpipe/down/supply{ + dir = 1 + }, +/obj/machinery/atmospherics/pipe/zpipe/down/scrubbers{ + dir = 1 + }, +/turf/simulated/open, +/area/engineering/atmos) +"yL" = ( +/obj/structure/closet, +/obj/random/maintenance/clean, +/obj/random/powercell, +/turf/simulated/floor/plating, +/area/maintenance/lower/south) +"yM" = ( +/obj/machinery/atmospherics/pipe/simple/visible/scrubbers, +/obj/machinery/atmospherics/pipe/simple/visible/supply, +/obj/effect/decal/cleanable/dirt, +/turf/simulated/floor/plating, +/area/maintenance/lower/south) +"yN" = ( +/obj/effect/decal/cleanable/dirt, +/turf/simulated/floor/plating, +/area/maintenance/lower/south) +"yP" = ( +/obj/effect/floor_decal/industrial/warning{ + icon_state = "warning"; + dir = 1 + }, +/turf/simulated/floor/tiled/techmaint, +/area/tether/surfacebase/east_stairs_two) +"yQ" = ( +/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{ + dir = 1 + }, +/obj/machinery/atmospherics/pipe/manifold/hidden/supply{ + dir = 1 + }, +/turf/simulated/floor/tiled/techmaint, +/area/tether/surfacebase/east_stairs_two) +"yR" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/effect/floor_decal/industrial/warning/corner{ + icon_state = "warningcorner"; + dir = 1 + }, +/turf/simulated/floor/tiled/techmaint, +/area/tether/surfacebase/east_stairs_two) "yS" = ( /obj/structure/catwalk, /obj/machinery/atmospherics/pipe/simple/visible/scrubbers, @@ -13195,415 +11740,185 @@ /turf/simulated/wall, /area/rnd/research_storage) "yU" = ( -/obj/structure/cable/cyan{ - d1 = 1; - d2 = 2; - icon_state = "1-2" - }, -/obj/machinery/door/firedoor/glass, -/obj/machinery/door/airlock/glass_atmos{ - name = "Atmospherics"; - req_access = list(24) - }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, /obj/machinery/atmospherics/pipe/simple/hidden/supply, -/turf/simulated/floor/tiled/steel_grid, -/area/engineering/atmos) +/turf/simulated/floor/tiled/techmaint, +/area/engineering/drone_fabrication) "yV" = ( -/obj/machinery/door/firedoor/glass, -/obj/structure/disposalpipe/segment, -/obj/machinery/door/airlock/glass_atmos{ - name = "Atmospherics"; - req_access = list(24) +/obj/effect/floor_decal/industrial/warning{ + icon_state = "warning"; + dir = 8 }, -/turf/simulated/floor/tiled/steel_grid, -/area/engineering/atmos) +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/obj/effect/floor_decal/rust, +/turf/simulated/floor/plating, +/area/engineering/drone_fabrication) "yW" = ( -/turf/simulated/wall, -/area/engineering/atmos) -"yX" = ( -/obj/structure/grille, -/obj/structure/window/reinforced/full, -/obj/machinery/door/firedoor, -/obj/machinery/atmospherics/pipe/simple/hidden/cyan, -/turf/simulated/floor/plating, -/area/engineering/atmos) -"yY" = ( -/obj/machinery/door/airlock/glass_atmos{ - name = "Atmospherics"; - req_access = list(24) - }, /obj/machinery/door/firedoor/glass, -/turf/simulated/floor/tiled/steel_grid, -/area/engineering/atmos) -"yZ" = ( /obj/structure/grille, /obj/structure/window/reinforced/full, -/obj/machinery/door/firedoor, -/obj/machinery/atmospherics/pipe/simple/hidden/yellow, /turf/simulated/floor/plating, -/area/engineering/atmos) +/area/engineering/drone_fabrication) +"yX" = ( +/obj/structure/bed/chair/office/light{ + dir = 4 + }, +/turf/simulated/floor/tiled, +/area/engineering/atmos/monitoring) +"yY" = ( +/obj/effect/floor_decal/borderfloor{ + dir = 4 + }, +/obj/effect/floor_decal/corner/yellow/border{ + icon_state = "bordercolor"; + dir = 4 + }, +/obj/structure/table/standard, +/obj/item/weapon/storage/firstaid/regular, +/obj/random/medical/lite, +/turf/simulated/floor/tiled, +/area/engineering/atmos/monitoring) "za" = ( -/obj/effect/decal/cleanable/dirt, -/obj/structure/cable/cyan, -/obj/machinery/power/apc{ - cell_type = /obj/item/weapon/cell/super; - dir = 8; - name = "west bump"; - pixel_x = -30 +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 }, -/turf/simulated/floor, -/area/engineering/atmos/storage) +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/obj/machinery/door/airlock/maintenance/common, +/turf/simulated/floor/plating, +/area/tether/surfacebase/east_stairs_two) "zb" = ( -/obj/structure/closet/firecloset, -/turf/simulated/floor/tiled/steel_dirty, -/area/rnd/research_storage) +/obj/structure/railing, +/obj/effect/floor_decal/techfloor{ + dir = 9 + }, +/obj/effect/floor_decal/rust, +/obj/effect/decal/cleanable/dirt, +/turf/simulated/floor/tiled/techfloor, +/area/maintenance/asmaint2) "zc" = ( -/obj/structure/closet/secure_closet/scientist, -/obj/item/weapon/handcuffs/fuzzy, -/turf/simulated/floor/tiled/steel_dirty, -/area/rnd/research_storage) +/obj/structure/railing, +/obj/effect/floor_decal/techfloor{ + dir = 1 + }, +/turf/simulated/floor/tiled/techfloor, +/area/maintenance/asmaint2) "zd" = ( -/obj/machinery/firealarm{ - dir = 2; - layer = 3.3; - pixel_x = 0; - pixel_y = 26 - }, -/turf/simulated/floor/tiled/steel_dirty, -/area/rnd/research_storage) -"ze" = ( -/obj/effect/floor_decal/rust, -/obj/machinery/camera/network/research, -/turf/simulated/floor/tiled/steel_dirty, -/area/rnd/research_storage) -"zf" = ( -/obj/effect/floor_decal/rust, -/obj/machinery/light_switch{ - pixel_y = 25 - }, -/turf/simulated/floor/tiled/steel_dirty, -/area/rnd/research_storage) -"zg" = ( -/obj/effect/floor_decal/techfloor{ - dir = 9 - }, -/obj/structure/extinguisher_cabinet{ - pixel_y = 30 - }, -/turf/simulated/floor/tiled/techfloor, -/area/engineering/atmos) -"zh" = ( -/obj/machinery/atmospherics/pipe/simple/visible/cyan{ - dir = 6 - }, -/obj/effect/floor_decal/techfloor{ - dir = 1 - }, -/turf/simulated/floor/tiled/techfloor, -/area/engineering/atmos) -"zi" = ( -/obj/machinery/light{ - dir = 1 - }, -/obj/effect/floor_decal/techfloor{ - dir = 1 - }, -/obj/machinery/atmospherics/binary/pump/on{ - dir = 4; - name = "Mix to Distro" - }, -/obj/effect/floor_decal/industrial/outline/blue, -/turf/simulated/floor/tiled/techfloor, -/area/engineering/atmos) -"zj" = ( -/obj/machinery/atmospherics/pipe/simple/visible/cyan{ - dir = 4 - }, -/obj/effect/floor_decal/techfloor{ - dir = 1 - }, -/obj/machinery/power/apc{ - dir = 1; - name = "north bump"; - pixel_x = 0; - pixel_y = 28 - }, -/obj/structure/cable/cyan{ - d2 = 4; - icon_state = "0-4" - }, -/obj/machinery/meter{ - frequency = 1443; - id = "dist_main_meter"; - name = "Distribution Loop" - }, -/turf/simulated/floor/tiled/techfloor, -/area/engineering/atmos) -"zk" = ( -/obj/machinery/atmospherics/pipe/simple/visible/universal{ - dir = 4 - }, -/obj/effect/floor_decal/techfloor{ - dir = 1 - }, -/obj/structure/cable/cyan{ - d1 = 4; - d2 = 8; - icon_state = "4-8" - }, -/obj/machinery/light_switch{ - pixel_y = 25 - }, -/turf/simulated/floor/tiled/techfloor, -/area/engineering/atmos) -"zl" = ( -/obj/machinery/atmospherics/pipe/simple/visible/supply{ - dir = 9 - }, -/obj/effect/floor_decal/techfloor/corner{ - dir = 1 - }, -/obj/structure/cable/cyan{ - d1 = 1; - d2 = 8; - icon_state = "1-8" - }, -/turf/simulated/floor/tiled/techfloor, -/area/engineering/atmos) -"zm" = ( -/obj/effect/floor_decal/techfloor/corner{ - dir = 4 - }, -/obj/structure/disposalpipe/segment, -/turf/simulated/floor/tiled/techfloor, -/area/engineering/atmos) -"zn" = ( -/obj/effect/floor_decal/techfloor{ - dir = 1 - }, -/obj/machinery/status_display{ - pixel_y = 30 - }, -/turf/simulated/floor/tiled/techfloor, -/area/engineering/atmos) -"zo" = ( -/obj/effect/floor_decal/techfloor{ - dir = 1 - }, -/turf/simulated/floor/tiled/techfloor, -/area/engineering/atmos) -"zp" = ( -/obj/effect/floor_decal/techfloor{ - dir = 1 - }, -/obj/structure/extinguisher_cabinet{ - pixel_y = 30 - }, -/obj/machinery/atmospherics/unary/freezer, -/turf/simulated/floor/tiled/techfloor, -/area/engineering/atmos) -"zq" = ( -/obj/structure/table/standard, -/obj/machinery/requests_console{ - department = "Atmospherics"; - departmentType = 3; - name = "Atmos RC"; - pixel_x = 0; - pixel_y = 28 - }, -/obj/item/device/t_scanner, -/obj/item/device/multitool{ - pixel_x = 5 - }, -/obj/item/device/radio/headset/headset_eng, -/obj/item/weapon/cartridge/atmos, -/obj/item/clothing/ears/earmuffs, -/obj/item/clothing/ears/earmuffs, -/obj/item/weapon/cartridge/atmos, -/obj/item/device/pipe_painter, -/obj/effect/floor_decal/techfloor{ - dir = 1 - }, -/obj/machinery/atmospherics/pipe/simple/visible/red{ - dir = 6 - }, -/turf/simulated/floor/tiled/techfloor, -/area/engineering/atmos) -"zr" = ( -/obj/structure/table/standard, -/obj/structure/closet/fireaxecabinet{ - pixel_y = 32 - }, -/obj/machinery/cell_charger, -/obj/item/weapon/tool/wrench, -/obj/effect/floor_decal/techfloor{ - dir = 1 - }, -/obj/machinery/atmospherics/pipe/simple/visible/red{ - dir = 4 - }, -/turf/simulated/floor/tiled/techfloor, -/area/engineering/atmos) -"zs" = ( -/obj/structure/table/standard, -/obj/machinery/newscaster{ - pixel_y = 30 - }, -/obj/item/stack/material/steel{ - amount = 50 - }, -/obj/item/stack/material/glass{ - amount = 50 - }, -/obj/item/clothing/gloves/black, -/obj/item/clothing/gloves/black, -/obj/item/weapon/storage/belt/utility/atmostech, -/obj/item/weapon/storage/belt/utility/atmostech, -/obj/machinery/camera/network/engineering{ - dir = 2 - }, -/obj/effect/floor_decal/techfloor{ - dir = 1 - }, -/obj/machinery/atmospherics/pipe/simple/visible/red{ - dir = 4 - }, -/turf/simulated/floor/tiled/techfloor, -/area/engineering/atmos) -"zt" = ( -/obj/machinery/light{ - dir = 1 - }, -/obj/effect/floor_decal/techfloor{ - dir = 1 - }, -/obj/item/device/radio/intercom{ - dir = 1; - pixel_y = 24; - req_access = list() - }, -/obj/machinery/atmospherics/pipe/simple/visible/red{ - dir = 4 - }, -/turf/simulated/floor/tiled/techfloor, -/area/engineering/atmos) -"zu" = ( -/obj/effect/floor_decal/techfloor{ - dir = 1 - }, -/obj/machinery/firealarm{ - dir = 2; - layer = 3.3; - pixel_x = 0; - pixel_y = 26 - }, -/obj/machinery/atmospherics/pipe/simple/visible/red{ - dir = 4 - }, -/turf/simulated/floor/tiled/techfloor, -/area/engineering/atmos) -"zv" = ( -/obj/effect/floor_decal/techfloor{ - dir = 1 - }, /obj/machinery/alarm{ + frequency = 1441; pixel_y = 22 }, -/obj/machinery/atmospherics/pipe/simple/visible/red{ - dir = 4 - }, -/turf/simulated/floor/tiled/techfloor, -/area/engineering/atmos) -"zw" = ( +/obj/structure/railing, /obj/effect/floor_decal/techfloor{ dir = 1 }, -/obj/machinery/light_switch{ - pixel_y = 25 - }, -/obj/machinery/atmospherics/pipe/simple/visible/red{ - dir = 4 - }, /turf/simulated/floor/tiled/techfloor, -/area/engineering/atmos) -"zx" = ( -/obj/effect/floor_decal/techfloor/corner{ +/area/maintenance/asmaint2) +"zf" = ( +/obj/structure/railing, +/obj/effect/floor_decal/techfloor{ dir = 1 }, -/obj/effect/floor_decal/industrial/outline/blue, -/obj/machinery/atmospherics/pipe/simple/visible/red{ - dir = 4 - }, -/obj/machinery/atmospherics/binary/pump{ - dir = 1; - name = "Mix to Portables" - }, +/obj/effect/decal/cleanable/dirt, /turf/simulated/floor/tiled/techfloor, -/area/engineering/atmos) -"zy" = ( -/obj/machinery/atmospherics/pipe/simple/visible/red{ - dir = 4 - }, -/turf/simulated/floor/tiled/techfloor, -/area/engineering/atmos) -"zz" = ( +/area/maintenance/asmaint2) +"zg" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/turf/simulated/floor/plating, +/area/maintenance/asmaint2) +"zi" = ( /obj/effect/floor_decal/techfloor/corner{ dir = 4 }, -/obj/machinery/atmospherics/pipe/simple/visible/red{ +/obj/machinery/drone_fabricator{ + fabricator_tag = "Atmos" + }, +/turf/simulated/floor/tiled/techfloor/grid, +/area/engineering/drone_fabrication) +"zj" = ( +/obj/effect/floor_decal/techfloor{ + dir = 1 + }, +/turf/simulated/floor/tiled/techfloor/grid, +/area/engineering/drone_fabrication) +"zk" = ( +/obj/effect/floor_decal/techfloor{ + dir = 5 + }, +/turf/simulated/floor/tiled/techfloor/grid, +/area/engineering/drone_fabrication) +"zm" = ( +/obj/effect/floor_decal/industrial/warning{ + icon_state = "warning"; + dir = 8 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/turf/simulated/floor/plating, +/area/engineering/drone_fabrication) +"zu" = ( +/obj/machinery/atmospherics/unary/vent_scrubber/on{ + dir = 4 + }, +/obj/effect/floor_decal/borderfloor{ + dir = 8 + }, +/obj/effect/floor_decal/corner/yellow/border{ + icon_state = "bordercolor"; + dir = 8 + }, +/obj/machinery/computer/area_atmos/tag{ + dir = 4; + scrub_id = "rnd_can_store" + }, +/turf/simulated/floor/tiled, +/area/engineering/atmos/monitoring) +"zv" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, +/turf/simulated/floor/tiled, +/area/engineering/atmos/monitoring) +"zw" = ( +/obj/machinery/hologram/holopad, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ dir = 9 }, -/turf/simulated/floor/tiled/techfloor, -/area/engineering/atmos) -"zA" = ( -/obj/effect/floor_decal/techfloor{ - dir = 1 +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 5 }, -/obj/machinery/camera/network/engineering, -/turf/simulated/floor/tiled/techfloor, -/area/engineering/atmos) -"zB" = ( -/obj/machinery/atmospherics/unary/freezer, -/turf/simulated/floor/tiled/steel_dirty, -/area/engineering/atmos) -"zC" = ( -/obj/machinery/light{ - dir = 1 +/obj/structure/disposalpipe/segment, +/turf/simulated/floor/tiled, +/area/engineering/atmos/monitoring) +"zx" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 }, -/obj/machinery/atmospherics/unary/heater{ - dir = 2; - icon_state = "heater" +/turf/simulated/floor/tiled, +/area/engineering/atmos/monitoring) +"zy" = ( +/obj/machinery/atmospherics/unary/vent_pump/on{ + dir = 8 }, -/turf/simulated/floor/tiled/steel_dirty, -/area/engineering/atmos) -"zD" = ( -/obj/machinery/atmospherics/portables_connector, -/obj/effect/floor_decal/industrial/hatch/yellow, -/obj/structure/extinguisher_cabinet{ - pixel_y = 30 +/obj/effect/floor_decal/borderfloor{ + dir = 4 }, -/turf/simulated/floor/tiled/steel_dirty, -/area/engineering/atmos) -"zE" = ( -/obj/machinery/atmospherics/portables_connector, -/obj/effect/floor_decal/industrial/hatch/yellow, -/turf/simulated/floor/tiled/steel_dirty, -/area/engineering/atmos) -"zF" = ( -/obj/structure/closet/firecloset, -/obj/random/maintenance/engineering, -/turf/simulated/floor, -/area/engineering/atmos/storage) +/obj/effect/floor_decal/corner/yellow/border{ + icon_state = "bordercolor"; + dir = 4 + }, +/obj/structure/table/standard, +/obj/item/weapon/paper_bin{ + pixel_x = -3; + pixel_y = 7 + }, +/obj/item/weapon/pen, +/turf/simulated/floor/tiled, +/area/engineering/atmos/monitoring) "zG" = ( -/obj/effect/decal/cleanable/dirt, -/obj/structure/dispenser{ - oxygentanks = 0 - }, -/turf/simulated/floor, -/area/engineering/atmos/storage) -"zH" = ( -/turf/simulated/mineral, -/area/maintenance/lower/south) +/turf/simulated/floor/tiled/techmaint, +/area/tether/surfacebase/east_stairs_two) "zI" = ( /obj/structure/cable/green{ d1 = 1; @@ -13637,145 +11952,135 @@ /turf/simulated/floor/tiled/techfloor, /area/maintenance/asmaint2) "zK" = ( -/obj/machinery/alarm{ - dir = 4; - icon_state = "alarm0"; - pixel_x = -22; - pixel_y = 0 +/obj/structure/catwalk, +/obj/effect/floor_decal/techfloor{ + dir = 8 }, -/turf/simulated/floor/tiled/steel_dirty, -/area/rnd/research_storage) +/obj/random/junk, +/obj/effect/decal/cleanable/dirt, +/turf/simulated/floor/tiled/techfloor, +/area/maintenance/asmaint2) "zL" = ( -/turf/simulated/floor/tiled/steel_dirty, -/area/rnd/research_storage) +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 6 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 6 + }, +/obj/structure/catwalk, +/obj/effect/decal/cleanable/dirt, +/turf/simulated/floor/tiled/techfloor, +/area/maintenance/asmaint2) "zM" = ( /obj/effect/floor_decal/rust, /turf/simulated/floor/tiled/steel_dirty, /area/rnd/research_storage) "zN" = ( -/obj/structure/ladder, -/turf/simulated/floor/tiled/steel_dirty, -/area/rnd/research_storage) +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/obj/structure/catwalk, +/turf/simulated/floor/plating, +/area/maintenance/asmaint2) "zO" = ( -/obj/effect/floor_decal/techfloor{ - dir = 8 - }, -/turf/simulated/floor/tiled/techfloor, -/area/engineering/atmos) +/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers, +/obj/machinery/atmospherics/pipe/manifold/hidden/supply, +/obj/structure/catwalk, +/turf/simulated/floor/plating, +/area/maintenance/asmaint2) "zP" = ( -/obj/machinery/atmospherics/pipe/manifold/visible/cyan{ - dir = 8 +/obj/machinery/door/airlock/maintenance/engi{ + name = "Drone Bay"; + req_access = list(24) }, -/turf/simulated/floor/tiled/techfloor, -/area/engineering/atmos) +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/obj/machinery/door/firedoor/glass, +/turf/simulated/floor/tiled/techfloor/grid, +/area/engineering/drone_fabrication) "zQ" = ( -/obj/machinery/atmospherics/pipe/simple/visible/cyan{ +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ dir = 4 }, -/turf/simulated/floor/tiled/techfloor, -/area/engineering/atmos) +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/turf/simulated/floor/tiled/techfloor/grid, +/area/engineering/drone_fabrication) "zR" = ( -/obj/machinery/atmospherics/pipe/manifold/visible/cyan{ - dir = 1 +/obj/effect/floor_decal/techfloor{ + dir = 4 }, -/turf/simulated/floor/tiled/techfloor, -/area/engineering/atmos) +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/turf/simulated/floor/tiled/techfloor/grid, +/area/engineering/drone_fabrication) "zS" = ( -/obj/machinery/atmospherics/binary/pump{ - dir = 4; - name = "Mix to Waste" +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 9 }, -/turf/simulated/floor/tiled/techfloor, -/area/engineering/atmos) -"zT" = ( -/obj/machinery/atmospherics/pipe/simple/visible/yellow{ - dir = 4 +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 9; + pixel_y = 0 }, -/obj/structure/disposalpipe/segment, -/turf/simulated/floor/tiled/techfloor, -/area/engineering/atmos) -"zU" = ( -/obj/machinery/atmospherics/pipe/manifold/visible/yellow{ - dir = 1 - }, -/obj/machinery/meter, -/turf/simulated/floor/tiled/techfloor, -/area/engineering/atmos) +/turf/simulated/floor/tiled/techmaint, +/area/engineering/drone_fabrication) "zV" = ( -/obj/machinery/atmospherics/pipe/simple/visible/yellow{ - dir = 4 +/obj/structure/bed/chair/office/light, +/obj/effect/landmark/start{ + name = "Atmospheric Technician" }, -/turf/simulated/floor/tiled/techfloor, -/area/engineering/atmos) -"zW" = ( -/obj/machinery/atmospherics/pipe/manifold/visible/yellow, -/turf/simulated/floor/tiled/techfloor, -/area/engineering/atmos) -"zX" = ( -/obj/machinery/atmospherics/pipe/simple/visible/red, -/obj/machinery/atmospherics/pipe/simple/visible/yellow{ - dir = 4 +/obj/structure/disposalpipe/segment{ + dir = 1; + icon_state = "pipe-c" }, -/turf/simulated/floor/tiled/techfloor, -/area/engineering/atmos) +/turf/simulated/floor/tiled, +/area/engineering/atmos/monitoring) "zY" = ( -/obj/machinery/atmospherics/pipe/manifold/visible/yellow{ - dir = 1 - }, -/turf/simulated/floor/tiled/techfloor, -/area/engineering/atmos) -"zZ" = ( -/obj/machinery/atmospherics/pipe/simple/visible/yellow{ - dir = 4 - }, -/obj/machinery/atmospherics/pipe/simple/visible/cyan, -/turf/simulated/floor/tiled/techfloor, -/area/engineering/atmos) -"Aa" = ( -/obj/machinery/meter, -/obj/machinery/atmospherics/pipe/simple/visible/yellow{ - dir = 4 - }, -/turf/simulated/floor/tiled/techfloor, -/area/engineering/atmos) -"Ab" = ( -/obj/machinery/atmospherics/pipe/simple/visible/yellow{ +/obj/effect/floor_decal/borderfloor{ dir = 10 }, -/turf/simulated/floor/tiled/techfloor, -/area/engineering/atmos) -"Ac" = ( -/obj/machinery/atmospherics/pipe/manifold/visible/green{ - dir = 8 +/obj/effect/floor_decal/corner/yellow/border{ + icon_state = "bordercolor"; + dir = 10 }, -/turf/simulated/floor/tiled/techfloor, -/area/engineering/atmos) -"Ad" = ( -/obj/machinery/atmospherics/pipe/manifold/visible/green{ +/obj/structure/closet/firecloset, +/turf/simulated/floor/tiled, +/area/engineering/atmos/monitoring) +"zZ" = ( +/obj/effect/floor_decal/borderfloor/corner, +/obj/effect/floor_decal/corner/yellow/bordercorner, +/obj/structure/disposalpipe/segment{ dir = 4 }, -/turf/simulated/floor/tiled/techfloor, -/area/engineering/atmos) -"Ae" = ( -/obj/machinery/atmospherics/pipe/manifold/visible/green{ - dir = 4 - }, -/obj/effect/floor_decal/techfloor{ - dir = 4 - }, -/turf/simulated/floor/tiled/techfloor, -/area/engineering/atmos) +/turf/simulated/floor/tiled, +/area/engineering/atmos/monitoring) "Af" = ( -/obj/machinery/floodlight, -/obj/effect/floor_decal/industrial/outline/yellow, -/turf/simulated/floor, -/area/engineering/atmos/storage) +/obj/machinery/atmospherics/unary/vent_scrubber/on{ + dir = 4 + }, +/turf/simulated/floor/tiled/techmaint, +/area/tether/surfacebase/east_stairs_two) "Ag" = ( -/obj/effect/decal/cleanable/dirt, -/obj/machinery/floodlight, -/obj/effect/floor_decal/industrial/outline/yellow, -/turf/simulated/floor, -/area/engineering/atmos/storage) +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 9 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 5 + }, +/turf/simulated/floor/tiled/techmaint, +/area/tether/surfacebase/east_stairs_two) "Ah" = ( /obj/structure/cable/green{ d1 = 1; @@ -13825,312 +12130,135 @@ }, /obj/machinery/door/airlock/maintenance/common, /turf/simulated/floor/tiled, -/area/rnd/research_storage) +/area/maintenance/asmaint2) "Ak" = ( -/obj/structure/cable/green{ - d1 = 4; - d2 = 8; - icon_state = "4-8" - }, /obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ dir = 4 }, /obj/machinery/atmospherics/pipe/simple/hidden/supply{ - dir = 10 + dir = 4 }, -/turf/simulated/floor/tiled/steel_dirty, -/area/rnd/research_storage) -"Al" = ( /obj/structure/cable/green{ d1 = 4; d2 = 8; icon_state = "4-8" }, -/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ - dir = 10 +/obj/structure/catwalk, +/turf/simulated/floor/tiled/techfloor, +/area/maintenance/asmaint2) +"Al" = ( +/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{ + icon_state = "map-scrubbers"; + dir = 4 + }, +/obj/machinery/atmospherics/pipe/manifold/hidden/supply{ + dir = 4 }, -/turf/simulated/floor/tiled/steel_dirty, -/area/rnd/research_storage) -"Am" = ( /obj/structure/cable/green{ d1 = 2; d2 = 8; icon_state = "2-8" }, -/turf/simulated/floor/tiled/steel_dirty, -/area/rnd/research_storage) -"An" = ( -/obj/effect/floor_decal/rust, -/obj/structure/extinguisher_cabinet{ - dir = 8; - icon_state = "extinguisher_closed"; - pixel_x = 30 +/obj/structure/catwalk, +/obj/effect/floor_decal/techfloor{ + dir = 4 }, -/turf/simulated/floor/tiled/steel_dirty, -/area/rnd/research_storage) +/turf/simulated/floor/tiled/techfloor, +/area/maintenance/asmaint2) "Ao" = ( -/obj/effect/floor_decal/techfloor{ - dir = 8 - }, -/obj/machinery/requests_console{ - pixel_x = -30 - }, -/turf/simulated/floor/tiled/techfloor, -/area/engineering/atmos) -"Ap" = ( -/obj/effect/floor_decal/corner_techfloor_gray{ - dir = 1 - }, -/obj/machinery/atmospherics/pipe/simple/visible/cyan, -/obj/machinery/meter{ - frequency = 1443; - id = "dist_before_split"; - name = "Outgoing Air Mix" - }, -/turf/simulated/floor/tiled/techmaint, -/area/engineering/atmos) +/obj/structure/catwalk, +/obj/effect/decal/cleanable/dirt, +/turf/simulated/floor/plating, +/area/maintenance/asmaint2) "Aq" = ( -/obj/effect/floor_decal/industrial/warning/corner, -/turf/simulated/floor/tiled/techmaint, -/area/engineering/atmos) -"Ar" = ( -/obj/effect/floor_decal/industrial/warning, -/turf/simulated/floor/tiled/techmaint, -/area/engineering/atmos) -"As" = ( -/obj/effect/floor_decal/industrial/warning, -/obj/machinery/atmospherics/pipe/simple/visible/cyan{ - dir = 5 - }, -/turf/simulated/floor/tiled/techmaint, -/area/engineering/atmos) -"At" = ( -/obj/effect/floor_decal/industrial/warning, -/obj/machinery/atmospherics/pipe/simple/visible/cyan{ - dir = 4 - }, -/turf/simulated/floor/tiled/techmaint, -/area/engineering/atmos) -"Au" = ( -/obj/effect/floor_decal/industrial/warning/corner{ - icon_state = "warningcorner"; - dir = 8 - }, -/obj/machinery/atmospherics/pipe/simple/visible/cyan{ - dir = 4 - }, -/obj/effect/floor_decal/corner_techfloor_gray{ - dir = 4 - }, -/obj/structure/disposalpipe/segment{ - dir = 1; - icon_state = "pipe-c" - }, -/turf/simulated/floor/tiled/techmaint, -/area/engineering/atmos) -"Av" = ( -/obj/machinery/atmospherics/pipe/simple/visible/yellow, -/obj/machinery/atmospherics/pipe/simple/visible/cyan{ - dir = 4 - }, -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/turf/simulated/floor/tiled/techfloor, -/area/engineering/atmos) -"Aw" = ( -/obj/machinery/atmospherics/pipe/simple/visible/cyan{ - dir = 4 - }, -/obj/structure/disposalpipe/segment{ - dir = 2; - icon_state = "pipe-c" - }, -/turf/simulated/floor/tiled/techfloor, -/area/engineering/atmos) -"Ax" = ( -/obj/machinery/atmospherics/pipe/simple/visible/red, -/obj/machinery/atmospherics/pipe/simple/visible/cyan{ - dir = 4 - }, -/turf/simulated/floor/tiled/techfloor, -/area/engineering/atmos) -"Ay" = ( -/obj/machinery/atmospherics/pipe/simple/visible/cyan{ - dir = 4 - }, -/obj/machinery/atmospherics/binary/pump{ - dir = 1 - }, -/turf/simulated/floor/tiled/techfloor, -/area/engineering/atmos) -"Az" = ( -/obj/machinery/atmospherics/pipe/simple/visible/cyan{ - dir = 4 - }, -/obj/machinery/atmospherics/binary/pump, -/turf/simulated/floor/tiled/techfloor, -/area/engineering/atmos) -"AA" = ( -/obj/machinery/meter, -/obj/machinery/atmospherics/pipe/simple/visible/cyan{ - dir = 9 - }, -/turf/simulated/floor/tiled/techfloor, -/area/engineering/atmos) -"AB" = ( -/turf/simulated/floor/tiled/techfloor, -/area/engineering/atmos) -"AC" = ( -/obj/machinery/atmospherics/pipe/simple/visible/yellow, -/turf/simulated/floor/tiled/techfloor, -/area/engineering/atmos) -"AD" = ( -/obj/machinery/atmospherics/valve/digital/open, -/turf/simulated/floor/tiled/techfloor, -/area/engineering/atmos) -"AE" = ( -/obj/machinery/atmospherics/binary/pump{ - dir = 1 - }, -/turf/simulated/floor/tiled/techfloor, -/area/engineering/atmos) -"AF" = ( -/obj/machinery/atmospherics/binary/pump, -/obj/effect/floor_decal/techfloor{ - dir = 4 - }, -/turf/simulated/floor/tiled/techfloor, -/area/engineering/atmos) -"AG" = ( -/obj/structure/table/steel, -/obj/item/weapon/implantcase/chem, -/obj/machinery/atmospherics/unary/vent_pump/on{ - dir = 1 - }, -/turf/simulated/floor/tiled/steel_dirty, -/area/rnd/research_storage) -"AH" = ( -/obj/structure/table/steel, -/obj/item/weapon/locator, -/obj/machinery/atmospherics/unary/vent_scrubber/on{ - dir = 1 - }, -/obj/machinery/light/small, -/turf/simulated/floor/tiled/steel_dirty, -/area/rnd/research_storage) -"AI" = ( -/obj/structure/cable/green, -/obj/machinery/power/apc{ - dir = 2; - name = "south bump"; - pixel_y = -28 - }, -/turf/simulated/floor/tiled/steel_dirty, -/area/rnd/research_storage) -"AJ" = ( -/obj/structure/closet/wardrobe/robotics_black, -/turf/simulated/floor/tiled/steel_dirty, -/area/rnd/research_storage) -"AK" = ( -/obj/structure/closet/wardrobe/robotics_black, -/obj/effect/floor_decal/rust, -/obj/random/maintenance/research, -/turf/simulated/floor/tiled/steel_dirty, -/area/rnd/research_storage) -"AL" = ( -/obj/effect/floor_decal/techfloor{ - dir = 8 +/obj/effect/floor_decal/techfloor/corner, +/obj/machinery/drone_fabricator{ + fabricator_tag = "Atmos" }, /obj/machinery/camera/network/engineering{ dir = 4 }, -/turf/simulated/floor/tiled/techfloor, -/area/engineering/atmos) -"AM" = ( -/obj/machinery/atmospherics/pipe/simple/visible/cyan, -/turf/simulated/floor/tiled/techmaint, -/area/engineering/atmos) -"AN" = ( -/obj/machinery/atmospherics/portables_connector, -/obj/effect/floor_decal/industrial/warning{ - icon_state = "warning"; - dir = 4 - }, -/obj/effect/floor_decal/industrial/hatch/yellow, -/turf/simulated/floor/tiled/steel_dirty, -/area/engineering/atmos) -"AO" = ( -/obj/machinery/atmospherics/pipe/tank/nitrogen, -/obj/effect/floor_decal/industrial/outline/yellow, -/turf/simulated/floor/tiled/steel_dirty, -/area/engineering/atmos) -"AP" = ( -/obj/effect/floor_decal/industrial/warning{ - dir = 8 - }, -/turf/simulated/floor/tiled/techmaint, -/area/engineering/atmos) -"AQ" = ( -/obj/machinery/atmospherics/pipe/simple/visible/green{ +/turf/simulated/floor/tiled/techfloor/grid, +/area/engineering/drone_fabrication) +"Ar" = ( +/obj/effect/floor_decal/techfloor, +/turf/simulated/floor/tiled/techfloor/grid, +/area/engineering/drone_fabrication) +"As" = ( +/obj/effect/floor_decal/techfloor{ dir = 6 }, -/obj/structure/disposalpipe/segment, -/turf/simulated/floor/tiled/techfloor, -/area/engineering/atmos) -"AR" = ( -/obj/machinery/atmospherics/pipe/simple/visible/green{ - dir = 4 +/turf/simulated/floor/tiled/techfloor/grid, +/area/engineering/drone_fabrication) +"At" = ( +/obj/effect/decal/cleanable/blood/oil, +/turf/simulated/floor/tiled/techmaint, +/area/engineering/drone_fabrication) +"Az" = ( +/obj/effect/floor_decal/borderfloor{ + dir = 10 }, -/turf/simulated/floor/tiled/techfloor, -/area/engineering/atmos) -"AS" = ( -/obj/machinery/atmospherics/pipe/simple/visible/red, -/obj/machinery/atmospherics/pipe/simple/visible/green{ - dir = 4 +/obj/effect/floor_decal/corner/yellow/border{ + icon_state = "bordercolor"; + dir = 10 }, -/turf/simulated/floor/tiled/techfloor, -/area/engineering/atmos) -"AT" = ( -/obj/machinery/atmospherics/pipe/manifold/visible/green{ +/obj/machinery/computer/station_alert{ dir = 1 }, -/turf/simulated/floor/tiled/techfloor, -/area/engineering/atmos) -"AU" = ( -/obj/machinery/atmospherics/pipe/manifold4w/visible/green, -/turf/simulated/floor/tiled/techfloor, -/area/engineering/atmos) -"AV" = ( -/obj/machinery/atmospherics/pipe/simple/visible/green, -/turf/simulated/floor/tiled/techfloor, -/area/engineering/atmos) -"AW" = ( -/obj/machinery/atmospherics/pipe/simple/visible/green{ - dir = 5; - icon_state = "intact" +/turf/simulated/floor/tiled, +/area/engineering/atmos/monitoring) +"AA" = ( +/obj/effect/floor_decal/borderfloor{ + dir = 6 }, -/turf/simulated/floor/tiled/techfloor, -/area/engineering/atmos) -"AX" = ( -/obj/machinery/atmospherics/pipe/manifold/visible/green, -/obj/effect/floor_decal/corner_techfloor_gray{ +/obj/effect/floor_decal/corner/yellow/border{ + icon_state = "bordercolor"; + dir = 6 + }, +/obj/machinery/computer/security/engineering{ dir = 1 }, -/turf/simulated/floor/tiled/techmaint, -/area/engineering/atmos) -"AY" = ( -/obj/machinery/atmospherics/pipe/simple/visible/green{ - dir = 9; - icon_state = "intact" +/turf/simulated/floor/tiled, +/area/engineering/atmos/monitoring) +"AB" = ( +/obj/structure/railing, +/turf/simulated/floor/plating, +/area/maintenance/lower/atmos) +"AH" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/structure/cable/green{ + d1 = 1; + d2 = 2; + icon_state = "1-2" }, -/obj/structure/extinguisher_cabinet{ - dir = 8; - icon_state = "extinguisher_closed"; - pixel_x = 30 +/obj/effect/floor_decal/techfloor{ + dir = 8 + }, +/obj/effect/floor_decal/techfloor{ + dir = 4 + }, +/obj/effect/floor_decal/rust, +/obj/effect/decal/cleanable/dirt, +/turf/simulated/floor/tiled/techfloor, +/area/maintenance/asmaint2) +"AN" = ( +/obj/effect/floor_decal/techfloor{ + dir = 6 + }, +/obj/machinery/computer/drone_control{ + icon_state = "computer"; + dir = 4 + }, +/turf/simulated/floor/tiled/techfloor/grid, +/area/engineering/drone_fabrication) +"AO" = ( +/obj/machinery/atmospherics/unary/vent_scrubber/on, +/obj/effect/landmark{ + name = "JoinLateCyborg" }, /turf/simulated/floor/tiled/techmaint, -/area/engineering/atmos) +/area/engineering/drone_fabrication) "AZ" = ( /obj/structure/catwalk, /obj/machinery/firealarm{ @@ -14142,126 +12270,57 @@ /turf/simulated/floor/tiled/techfloor, /area/maintenance/lower/south) "Ba" = ( -/obj/machinery/light{ - dir = 8; - icon_state = "tube1"; - pixel_y = 0 +/obj/machinery/door/firedoor/glass, +/obj/structure/catwalk, +/obj/machinery/door/airlock/maintenance/common, +/turf/simulated/floor/plating, +/area/maintenance/lower/atmos) +"Bc" = ( +/obj/effect/floor_decal/industrial/warning{ + icon_state = "warning"; + dir = 1 }, -/obj/effect/floor_decal/techfloor{ - dir = 8 +/obj/machinery/cryopod/robot, +/turf/simulated/floor/plating, +/area/engineering/drone_fabrication) +"Bd" = ( +/obj/effect/floor_decal/industrial/warning{ + icon_state = "warning"; + dir = 1 }, -/turf/simulated/floor/tiled/techfloor, -/area/engineering/atmos) -"Bb" = ( -/obj/effect/floor_decal/industrial/warning/corner{ - icon_state = "warningcorner"; +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 5 + }, +/obj/machinery/cryopod/robot, +/turf/simulated/floor/plating, +/area/engineering/drone_fabrication) +"Be" = ( +/obj/effect/floor_decal/industrial/warning{ + icon_state = "warning"; + dir = 1 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ dir = 4 }, -/obj/machinery/atmospherics/binary/pump{ - dir = 1 +/obj/machinery/computer/cryopod/robot{ + pixel_y = -32 }, -/turf/simulated/floor/tiled/techmaint, -/area/engineering/atmos) -"Bc" = ( -/obj/machinery/atmospherics/pipe/manifold/visible/red{ - dir = 8 - }, -/obj/effect/floor_decal/industrial/warning{ - icon_state = "warning"; - dir = 1 - }, -/turf/simulated/floor/tiled/techmaint, -/area/engineering/atmos) -"Bd" = ( -/obj/machinery/atmospherics/pipe/manifold4w/visible/red, -/obj/effect/floor_decal/industrial/warning{ - icon_state = "warning"; - dir = 1 - }, -/obj/machinery/meter, -/turf/simulated/floor/tiled/techmaint, -/area/engineering/atmos) -"Be" = ( -/obj/machinery/atmospherics/pipe/manifold/visible/red{ - dir = 4; - initialize_directions = 11 - }, -/obj/effect/floor_decal/industrial/warning{ - icon_state = "warning"; - dir = 1 - }, -/turf/simulated/floor/tiled/techmaint, -/area/engineering/atmos) +/turf/simulated/floor/plating, +/area/engineering/drone_fabrication) "Bf" = ( /obj/effect/floor_decal/industrial/warning/corner{ icon_state = "warningcorner"; dir = 1 }, -/turf/simulated/floor/tiled/techmaint, -/area/engineering/atmos) -"Bg" = ( -/obj/machinery/atmospherics/pipe/simple/visible/green, -/obj/structure/disposalpipe/segment, -/turf/simulated/floor/tiled/techfloor, -/area/engineering/atmos) -"Bh" = ( -/obj/machinery/hologram/holopad, -/turf/simulated/floor/tiled/techfloor, -/area/engineering/atmos) -"Bi" = ( -/obj/effect/floor_decal/industrial/outline/yellow, -/obj/machinery/atmospherics/binary/pump{ - name = "Waste from Portables" +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 9 }, -/turf/simulated/floor/tiled/steel_dirty, -/area/engineering/atmos) -"Bj" = ( -/obj/machinery/atmospherics/portables_connector{ - dir = 1 - }, -/obj/effect/floor_decal/industrial/hatch/yellow, -/turf/simulated/floor/tiled/steel_dirty, -/area/engineering/atmos) -"Bk" = ( -/obj/machinery/atmospherics/pipe/simple/visible/green{ +/obj/machinery/light/small{ dir = 4 }, -/obj/machinery/atmospherics/pipe/simple/visible/yellow, -/turf/simulated/floor/tiled/techfloor, -/area/engineering/atmos) -"Bl" = ( -/obj/machinery/atmospherics/pipe/simple/visible/green{ - dir = 9; - icon_state = "intact" - }, -/turf/simulated/floor/tiled/techfloor, -/area/engineering/atmos) -"Bm" = ( -/obj/machinery/atmospherics/pipe/simple/visible/purple{ - dir = 6 - }, -/turf/simulated/floor/tiled/techmaint, -/area/engineering/atmos) -"Bn" = ( -/obj/effect/floor_decal/industrial/warning/corner, -/obj/machinery/atmospherics/binary/pump{ - dir = 4 - }, -/turf/simulated/floor/tiled/techmaint, -/area/engineering/atmos) -"Bo" = ( -/obj/effect/floor_decal/industrial/warning, -/obj/machinery/atmospherics/portables_connector{ - dir = 8 - }, -/obj/effect/floor_decal/industrial/hatch/yellow, -/obj/machinery/light{ - dir = 4; - icon_state = "tube1"; - pixel_x = 0 - }, -/turf/simulated/floor/tiled/steel_dirty, -/area/engineering/atmos) +/obj/effect/floor_decal/rust, +/turf/simulated/floor/plating, +/area/engineering/drone_fabrication) "Bp" = ( /obj/structure/catwalk, /obj/machinery/atmospherics/pipe/simple/visible/scrubbers, @@ -14280,169 +12339,61 @@ /turf/simulated/floor/tiled/techfloor, /area/maintenance/lower/south) "Br" = ( -/obj/effect/floor_decal/industrial/warning/corner{ - icon_state = "warningcorner"; +/obj/structure/railing{ dir = 8 }, -/obj/effect/floor_decal/industrial/outline/blue, -/obj/machinery/atmospherics/valve/digital/open{ - name = "Main Air Output" - }, -/turf/simulated/floor/tiled/techmaint, -/area/engineering/atmos) +/turf/simulated/floor/plating, +/area/maintenance/lower/atmos) "Bs" = ( -/obj/machinery/atmospherics/pipe/simple/visible/red{ - dir = 5 - }, -/turf/simulated/floor/tiled/techmaint, -/area/engineering/atmos) -"Bt" = ( -/obj/machinery/atmospherics/pipe/manifold/visible/red{ - dir = 4; - initialize_directions = 11 - }, -/turf/simulated/floor/tiled/techmaint, -/area/engineering/atmos) +/obj/structure/railing, +/obj/structure/table/rack, +/obj/random/maintenance/clean, +/turf/simulated/floor/plating, +/area/maintenance/lower/atmos) "Bu" = ( -/obj/machinery/atmospherics/binary/pump, -/turf/simulated/floor/tiled/techmaint, -/area/engineering/atmos) -"Bv" = ( -/obj/machinery/atmospherics/binary/pump/high_power/on{ - icon_state = "map_on"; - dir = 1 - }, -/turf/simulated/floor/tiled/techmaint, -/area/engineering/atmos) +/obj/structure/table/steel, +/obj/random/coin, +/obj/item/clothing/accessory/scarf/stripedred, +/turf/simulated/floor/wood, +/area/maintenance/lower/atmos) "Bw" = ( /turf/simulated/floor/tiled/techmaint, /area/engineering/atmos) -"Bx" = ( -/obj/structure/railing{ - dir = 1 - }, -/obj/structure/railing{ - dir = 8 - }, -/obj/machinery/atmospherics/pipe/zpipe/down{ - dir = 1 - }, -/turf/simulated/open, -/area/engineering/atmos) -"By" = ( -/obj/structure/railing{ - dir = 1 - }, -/turf/simulated/open, -/area/engineering/atmos) -"Bz" = ( -/obj/structure/railing{ - dir = 1 - }, -/obj/structure/railing{ - dir = 4 - }, -/turf/simulated/open, -/area/engineering/atmos) -"BA" = ( -/obj/machinery/atmospherics/unary/vent_pump/on{ - dir = 4 - }, -/turf/simulated/floor/tiled/techfloor, -/area/engineering/atmos) -"BB" = ( -/obj/machinery/atmospherics/pipe/simple/hidden/supply{ - dir = 10 - }, -/turf/simulated/floor/tiled/techfloor, -/area/engineering/atmos) -"BC" = ( -/obj/machinery/atmospherics/omni/atmos_filter{ - tag_east = 7; - tag_north = 2; - tag_south = 1 - }, -/turf/simulated/floor/tiled/techmaint, -/area/engineering/atmos) -"BD" = ( -/obj/machinery/atmospherics/binary/pump/high_power/on{ - icon_state = "map_on"; - dir = 4 - }, -/turf/simulated/floor/tiled/techmaint, -/area/engineering/atmos) -"BE" = ( -/obj/machinery/atmospherics/pipe/manifold/visible/purple, -/turf/simulated/floor/tiled/techmaint, -/area/engineering/atmos) -"BF" = ( -/obj/effect/floor_decal/industrial/warning{ - icon_state = "warning"; - dir = 4 - }, -/obj/machinery/atmospherics/pipe/manifold/visible/purple{ - dir = 1 - }, -/obj/machinery/meter, -/turf/simulated/floor/tiled/techmaint, -/area/engineering/atmos) -"BG" = ( -/obj/machinery/atmospherics/pipe/tank/nitrous_oxide{ - dir = 8; - start_pressure = 1519.88 - }, -/obj/effect/floor_decal/industrial/outline/yellow, -/turf/simulated/floor/tiled/steel_dirty, -/area/engineering/atmos) "BH" = ( -/obj/machinery/atmospherics/pipe/tank/air{ - dir = 4 - }, -/obj/effect/floor_decal/industrial/outline/yellow, -/turf/simulated/floor/tiled/steel_dirty, -/area/engineering/atmos) +/obj/structure/catwalk, +/obj/random/junk, +/turf/simulated/floor/plating, +/area/maintenance/lower/atmos) "BI" = ( -/obj/effect/floor_decal/industrial/warning{ +/obj/structure/railing{ dir = 8 }, -/obj/machinery/atmospherics/pipe/manifold/visible/cyan{ - dir = 4 - }, -/turf/simulated/floor/tiled/techmaint, -/area/engineering/atmos) +/obj/structure/railing, +/obj/effect/decal/cleanable/dirt, +/turf/simulated/floor/plating, +/area/maintenance/lower/atmos) "BJ" = ( -/obj/machinery/atmospherics/valve/digital/open, -/turf/simulated/floor/tiled/techmaint, -/area/engineering/atmos) +/obj/structure/railing, +/obj/structure/closet, +/obj/random/maintenance/clean, +/obj/random/maintenance/research, +/obj/random/maintenance/research, +/obj/effect/decal/cleanable/dirt, +/turf/simulated/floor/plating, +/area/maintenance/lower/atmos) "BK" = ( -/obj/machinery/atmospherics/pipe/simple/visible/green, -/turf/simulated/floor/tiled/techmaint, -/area/engineering/atmos) -"BL" = ( -/obj/machinery/atmospherics/valve/digital/open{ - dir = 4; - icon_state = "map_valve1" - }, -/turf/simulated/floor/tiled/techmaint, -/area/engineering/atmos) -"BM" = ( -/obj/machinery/atmospherics/omni/atmos_filter{ - tag_north = 1; - tag_south = 2; - tag_west = 4 - }, -/turf/simulated/floor/tiled/techmaint, -/area/engineering/atmos) -"BN" = ( -/obj/machinery/atmospherics/pipe/simple/visible/green, -/obj/effect/floor_decal/industrial/warning/corner, -/obj/structure/disposalpipe/segment, -/turf/simulated/floor/tiled/techfloor, -/area/engineering/atmos) +/obj/structure/railing, +/obj/structure/closet, +/obj/random/maintenance/clean, +/obj/random/junk, +/obj/random/maintenance/research, +/obj/effect/decal/cleanable/dirt, +/turf/simulated/floor/plating, +/area/maintenance/lower/atmos) "BO" = ( -/obj/effect/floor_decal/industrial/warning, +/obj/structure/catwalk, /turf/simulated/floor/tiled/techfloor, -/area/engineering/atmos) +/area/maintenance/lower/atmos) "BP" = ( /obj/structure/railing{ dir = 8 @@ -14458,67 +12409,6 @@ }, /turf/simulated/open, /area/engineering/atmos) -"BS" = ( -/obj/machinery/atmospherics/unary/vent_scrubber/on{ - dir = 4 - }, -/turf/simulated/floor/tiled/techfloor, -/area/engineering/atmos) -"BT" = ( -/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ - dir = 10 - }, -/obj/machinery/atmospherics/pipe/simple/hidden/supply, -/turf/simulated/floor/tiled/techfloor, -/area/engineering/atmos) -"BU" = ( -/obj/machinery/atmospherics/pipe/simple/visible/green{ - icon_state = "intact"; - dir = 5 - }, -/turf/simulated/floor/tiled/techfloor, -/area/engineering/atmos) -"BV" = ( -/obj/machinery/atmospherics/pipe/simple/visible/yellow, -/obj/effect/floor_decal/corner_techfloor_gray{ - dir = 8 - }, -/obj/machinery/atmospherics/binary/pump{ - dir = 8 - }, -/turf/simulated/floor/tiled/techmaint, -/area/engineering/atmos) -"BW" = ( -/obj/machinery/atmospherics/pipe/simple/visible/purple{ - dir = 4 - }, -/turf/simulated/floor/tiled/techmaint, -/area/engineering/atmos) -"BX" = ( -/obj/effect/floor_decal/industrial/warning{ - icon_state = "warning"; - dir = 4 - }, -/obj/machinery/atmospherics/pipe/manifold/visible/purple, -/turf/simulated/floor/tiled/techmaint, -/area/engineering/atmos) -"BY" = ( -/obj/structure/catwalk, -/obj/machinery/atmospherics/pipe/simple/visible/scrubbers, -/obj/machinery/atmospherics/pipe/simple/visible/supply, -/obj/structure/cable{ - d1 = 1; - d2 = 2; - icon_state = "1-2"; - pixel_y = 0 - }, -/obj/effect/decal/cleanable/dirt, -/obj/structure/table/rack, -/obj/random/maintenance/clean, -/obj/random/maintenance/clean, -/obj/random/maintenance/research, -/turf/simulated/floor/tiled/techfloor, -/area/maintenance/lower/south) "BZ" = ( /obj/structure/catwalk, /obj/machinery/light/small{ @@ -14528,163 +12418,33 @@ /obj/effect/decal/cleanable/dirt, /turf/simulated/floor/tiled/techfloor, /area/maintenance/lower/south) -"Ca" = ( -/obj/machinery/atmospherics/pipe/manifold4w/visible/cyan, -/obj/effect/floor_decal/industrial/warning{ - dir = 8 - }, -/obj/machinery/meter{ - frequency = 1443; - id = "mair_main_meter"; - name = "Mixed Air Tank" - }, -/turf/simulated/floor/tiled/techmaint, -/area/engineering/atmos) -"Cb" = ( -/obj/machinery/atmospherics/binary/pump/on{ - dir = 8 - }, -/turf/simulated/floor/tiled/techmaint, -/area/engineering/atmos) -"Cc" = ( -/obj/machinery/atmospherics/omni/mixer{ - tag_north = 1; - tag_north_con = 0.79; - tag_south = 1; - tag_south_con = 0.21; - tag_west = 2 - }, -/obj/effect/floor_decal/industrial/outline/yellow, -/turf/simulated/floor/tiled/techmaint, -/area/engineering/atmos) -"Cd" = ( -/obj/machinery/atmospherics/pipe/manifold/visible/green{ - dir = 8 - }, -/turf/simulated/floor/tiled/techmaint, -/area/engineering/atmos) -"Ce" = ( -/obj/machinery/atmospherics/pipe/simple/visible/green{ - dir = 4 - }, -/turf/simulated/floor/tiled/techmaint, -/area/engineering/atmos) -"Cf" = ( -/obj/machinery/atmospherics/pipe/simple/visible/yellow, -/obj/machinery/atmospherics/pipe/simple/visible/green{ - dir = 4 - }, -/turf/simulated/floor/tiled/techmaint, -/area/engineering/atmos) "Cg" = ( -/obj/machinery/atmospherics/pipe/simple/visible/green{ - dir = 9; - icon_state = "intact" +/obj/structure/railing, +/obj/machinery/light{ + icon_state = "tube1"; + dir = 8 }, -/obj/effect/floor_decal/industrial/warning{ - dir = 4 - }, -/obj/structure/disposalpipe/segment, -/turf/simulated/floor/tiled/techfloor, +/turf/simulated/open, /area/engineering/atmos) -"Ch" = ( -/obj/structure/railing{ - dir = 4 - }, -/obj/machinery/atmospherics/pipe/zpipe/down{ +"Ck" = ( +/obj/structure/railing, +/obj/machinery/light{ dir = 4 }, /turf/simulated/open, /area/engineering/atmos) -"Ci" = ( -/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, -/obj/machinery/atmospherics/pipe/simple/hidden/supply, -/obj/machinery/atmospherics/pipe/simple/visible/yellow{ - dir = 4 - }, -/turf/simulated/floor/tiled/techfloor, -/area/engineering/atmos) -"Cj" = ( -/obj/machinery/atmospherics/pipe/simple/visible/yellow{ - dir = 9 - }, -/turf/simulated/floor/tiled/techfloor, -/area/engineering/atmos) -"Ck" = ( -/obj/effect/floor_decal/industrial/warning/corner{ - icon_state = "warningcorner"; - dir = 4 - }, -/turf/simulated/floor/tiled/techmaint, -/area/engineering/atmos) -"Cl" = ( -/obj/effect/floor_decal/industrial/warning{ - dir = 1 - }, -/obj/machinery/camera/network/engineering{ - dir = 8 - }, -/turf/simulated/floor/tiled/techmaint, -/area/engineering/atmos) -"Cm" = ( -/obj/structure/catwalk, -/obj/machinery/atmospherics/pipe/simple/visible/scrubbers, -/obj/machinery/atmospherics/pipe/simple/visible/supply, -/obj/structure/cable{ - d1 = 1; - d2 = 2; - icon_state = "1-2"; - pixel_y = 0 - }, -/obj/structure/closet/crate, -/obj/random/maintenance/clean, -/obj/random/maintenance/clean, -/obj/random/maintenance/research, -/turf/simulated/floor/tiled/techfloor, -/area/maintenance/lower/south) -"Cn" = ( -/obj/effect/floor_decal/industrial/warning/dust{ - dir = 8 - }, -/obj/effect/floor_decal/industrial/warning/dust{ - dir = 4 - }, -/turf/simulated/floor/tiled/steel_dirty/virgo3b, -/area/engineering/atmos/intake) -"Co" = ( -/obj/machinery/atmospherics/pipe/simple/visible/blue{ - dir = 6 - }, -/turf/simulated/floor/tiled/techmaint, -/area/engineering/atmos) "Cp" = ( -/obj/machinery/atmospherics/omni/atmos_filter{ - tag_north = 1; - tag_south = 2; - tag_west = 3 +/obj/machinery/door/firedoor/glass, +/obj/machinery/door/airlock/maintenance/engi{ + name = "Atmospherics Balcony"; + req_access = list(24) }, -/turf/simulated/floor/tiled/techmaint, +/obj/structure/catwalk, +/turf/simulated/floor/plating, /area/engineering/atmos) "Cq" = ( -/obj/effect/floor_decal/industrial/warning{ - dir = 4 - }, -/obj/structure/disposalpipe/segment, -/turf/simulated/floor/tiled/techfloor, -/area/engineering/atmos) -"Cr" = ( -/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, -/obj/machinery/atmospherics/pipe/simple/hidden/supply, -/turf/simulated/floor/tiled/techfloor, -/area/engineering/atmos) -"Cs" = ( -/obj/machinery/light_switch{ - pixel_x = 25 - }, -/obj/effect/floor_decal/techfloor{ - dir = 4 - }, -/turf/simulated/floor/tiled/techfloor, +/obj/structure/catwalk, +/turf/simulated/open, /area/engineering/atmos) "Ct" = ( /obj/structure/catwalk, @@ -14717,127 +12477,70 @@ /turf/simulated/floor/tiled/techfloor, /area/maintenance/lower/south) "Cv" = ( -/obj/effect/floor_decal/industrial/warning{ - icon_state = "warning"; +/obj/machinery/light/small{ + icon_state = "bulb1"; dir = 1 }, -/obj/machinery/camera/network/engineering{ - dir = 4 +/obj/structure/mirror{ + dir = 4; + pixel_x = 0; + pixel_y = 32 }, -/obj/machinery/atmospherics/pipe/simple/visible/cyan{ - dir = 6 - }, -/turf/simulated/floor/tiled/techmaint, -/area/engineering/atmos) +/turf/simulated/floor/carpet, +/area/maintenance/lower/atmos) "Cw" = ( -/obj/effect/floor_decal/industrial/warning/corner{ - icon_state = "warningcorner"; - dir = 1 - }, -/obj/machinery/atmospherics/pipe/manifold/visible/cyan{ - dir = 4 - }, -/turf/simulated/floor/tiled/techmaint, -/area/engineering/atmos) +/obj/structure/bed, +/obj/item/weapon/bedsheet/rainbow, +/turf/simulated/floor/wood, +/area/maintenance/lower/atmos) "Cx" = ( -/obj/machinery/atmospherics/pipe/manifold/visible/blue{ - dir = 4 +/obj/effect/decal/cleanable/blood, +/obj/item/device/tape{ + desc = "No Talk" }, -/turf/simulated/floor/tiled/techmaint, -/area/engineering/atmos) -"Cy" = ( -/obj/machinery/atmospherics/binary/pump{ - dir = 1 +/obj/item/clothing/suit/varsity/brown{ + desc = "Showdown" }, -/turf/simulated/floor/tiled/techmaint, -/area/engineering/atmos) -"Cz" = ( -/obj/machinery/atmospherics/binary/pump/high_power/on, -/turf/simulated/floor/tiled/techmaint, -/area/engineering/atmos) -"CA" = ( -/obj/effect/floor_decal/industrial/warning/corner{ - icon_state = "warningcorner"; - dir = 4 - }, -/obj/structure/disposalpipe/segment, -/turf/simulated/floor/tiled/techfloor, -/area/engineering/atmos) -"CB" = ( -/obj/structure/railing{ - dir = 1 - }, -/obj/structure/railing{ - dir = 8 - }, -/turf/simulated/open, -/area/engineering/atmos) -"CC" = ( -/obj/effect/floor_decal/techfloor{ - dir = 4 - }, -/turf/simulated/floor/tiled/techfloor, -/area/engineering/atmos) -"CD" = ( -/obj/machinery/light{ - dir = 8; - icon_state = "tube1"; - pixel_y = 0 - }, -/obj/effect/floor_decal/techfloor{ - dir = 8 - }, -/obj/machinery/atmospherics/valve/digital, -/turf/simulated/floor/tiled/techfloor, -/area/engineering/atmos) -"CE" = ( -/obj/effect/floor_decal/industrial/warning/corner, -/obj/machinery/atmospherics/binary/pump, -/turf/simulated/floor/tiled/techmaint, -/area/engineering/atmos) +/obj/item/clothing/head/richard, +/obj/effect/floor_decal/rust, +/obj/effect/decal/cleanable/dirt, +/turf/simulated/floor/plating, +/area/maintenance/lower/atmos) "CF" = ( -/obj/machinery/atmospherics/pipe/manifold/visible/blue{ - dir = 8 +/obj/effect/decal/cleanable/blood, +/obj/item/clothing/shoes/athletic{ + desc = "Assault" }, -/obj/effect/floor_decal/industrial/warning, -/turf/simulated/floor/tiled/techmaint, -/area/engineering/atmos) -"CG" = ( -/obj/machinery/atmospherics/pipe/manifold4w/visible/blue, -/obj/effect/floor_decal/industrial/warning, -/obj/machinery/meter, -/turf/simulated/floor/tiled/techmaint, -/area/engineering/atmos) -"CH" = ( -/obj/machinery/atmospherics/pipe/manifold/visible/blue{ - dir = 4 +/obj/item/clothing/under/pants{ + desc = "Overdose" }, -/obj/effect/floor_decal/industrial/warning, -/turf/simulated/floor/tiled/techmaint, -/area/engineering/atmos) +/obj/item/weapon/material/twohanded/baseballbat{ + desc = "Decadence"; + health = 1989 + }, +/obj/effect/floor_decal/rust, +/obj/effect/decal/cleanable/dirt, +/turf/simulated/floor/plating, +/area/maintenance/lower/atmos) "CI" = ( -/obj/effect/floor_decal/industrial/warning/corner{ - icon_state = "warningcorner"; - dir = 8 - }, -/turf/simulated/floor/tiled/techmaint, -/area/engineering/atmos) -"CJ" = ( -/obj/structure/disposalpipe/segment, -/turf/simulated/floor/tiled/techfloor, -/area/engineering/atmos) -"CK" = ( +/obj/structure/railing, /obj/structure/railing{ dir = 8 }, -/obj/structure/railing, -/turf/simulated/open, -/area/engineering/atmos) -"CL" = ( -/obj/structure/railing, -/obj/machinery/atmospherics/pipe/zpipe/down, -/turf/simulated/open, -/area/engineering/atmos) +/obj/effect/decal/cleanable/dirt, +/turf/simulated/floor/plating, +/area/maintenance/lower/atmos) +"CJ" = ( +/obj/machinery/alarm{ + dir = 1; + pixel_y = -22 + }, +/obj/structure/railing{ + dir = 1 + }, +/obj/random/junk, +/turf/simulated/floor/plating, +/area/maintenance/lower/atmos) "CM" = ( /obj/structure/railing, /turf/simulated/open, @@ -14864,85 +12567,38 @@ }, /turf/simulated/floor/plating, /area/maintenance/lower/south) -"CP" = ( -/obj/effect/floor_decal/techfloor{ - dir = 8 - }, -/obj/machinery/atmospherics/pipe/cap/visible{ - icon_state = "cap"; - dir = 1 - }, -/turf/simulated/floor/tiled/techfloor, -/area/engineering/atmos) -"CQ" = ( -/obj/machinery/atmospherics/portables_connector{ - dir = 1 - }, -/obj/effect/floor_decal/industrial/warning{ - icon_state = "warning"; - dir = 4 - }, -/obj/effect/floor_decal/industrial/hatch/yellow, -/turf/simulated/floor/tiled/steel_dirty, -/area/engineering/atmos) -"CR" = ( -/obj/machinery/atmospherics/pipe/tank/oxygen{ - dir = 1 - }, -/obj/effect/floor_decal/industrial/outline/yellow, -/turf/simulated/floor/tiled/steel_dirty, -/area/engineering/atmos) -"CS" = ( -/obj/machinery/atmospherics/pipe/simple/visible/yellow{ - dir = 5 - }, -/turf/simulated/floor/tiled/techfloor, -/area/engineering/atmos) -"CT" = ( -/obj/machinery/atmospherics/pipe/manifold/visible/yellow{ - dir = 4 - }, -/obj/machinery/meter, -/turf/simulated/floor/tiled/techfloor, -/area/engineering/atmos) "CU" = ( -/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ - dir = 5 - }, -/obj/machinery/atmospherics/pipe/simple/hidden/supply{ - dir = 5 - }, -/turf/simulated/floor/tiled/techfloor, -/area/engineering/atmos) -"CV" = ( -/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ - dir = 4 - }, -/obj/machinery/atmospherics/pipe/simple/hidden/supply{ - dir = 4 - }, -/turf/simulated/floor/tiled/techfloor, -/area/engineering/atmos) -"CW" = ( -/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ - dir = 10 - }, -/obj/machinery/atmospherics/pipe/simple/hidden/supply{ - dir = 10 - }, -/turf/simulated/floor/tiled/techfloor, -/area/engineering/atmos) -"CX" = ( -/obj/machinery/light{ - dir = 4; - icon_state = "tube1"; - pixel_x = 0 - }, /obj/effect/floor_decal/techfloor{ - dir = 4 + dir = 1 }, +/obj/machinery/light/small{ + icon_state = "bulb1"; + dir = 1 + }, +/obj/structure/railing, +/obj/effect/floor_decal/rust, /turf/simulated/floor/tiled/techfloor, -/area/engineering/atmos) +/area/maintenance/lower/atmos) +"CV" = ( +/obj/effect/floor_decal/techfloor{ + dir = 1 + }, +/obj/structure/railing, +/obj/structure/closet/crate, +/obj/random/maintenance/research, +/obj/random/maintenance/research, +/obj/random/cigarettes, +/obj/effect/decal/cleanable/dirt, +/turf/simulated/floor/tiled/techfloor, +/area/maintenance/lower/atmos) +"CW" = ( +/obj/effect/floor_decal/techfloor{ + dir = 5 + }, +/obj/structure/railing, +/obj/random/trash_pile, +/turf/simulated/floor/tiled/techfloor, +/area/maintenance/lower/atmos) "CY" = ( /obj/structure/catwalk, /obj/effect/decal/cleanable/cobweb, @@ -14966,84 +12622,50 @@ /turf/simulated/floor/plating, /area/maintenance/lower/south) "Db" = ( -/obj/effect/floor_decal/techfloor{ - dir = 8 +/obj/machinery/vending/coffee{ + product_ads = "Have a drink!;Drink up!;It's good for you!;Would you like a hot joe?;I'd kill for some coffee!;The best beans in the galaxy.;Only the finest brew for you.;Mmmm. Nothing like a coffee.;I like coffee, don't you?;Coffee helps you work!;Try some tea.;We hope you like the best!;Try our new chocolate!;Admin conspiracies;Would you like some tea, Mrs. Nesbit?"; + shut_up = 0 }, -/obj/machinery/light_switch{ - pixel_x = -25 - }, -/turf/simulated/floor/tiled/techfloor, -/area/engineering/atmos) +/turf/simulated/floor/wood, +/area/maintenance/lower/atmos) "Dc" = ( -/obj/effect/floor_decal/corner_techfloor_gray{ - dir = 8 - }, -/turf/simulated/floor/tiled/techmaint, -/area/engineering/atmos) +/obj/structure/table/steel, +/obj/machinery/microwave, +/obj/item/weapon/storage/box/donkpockets, +/turf/simulated/floor/wood, +/area/maintenance/lower/atmos) "Dd" = ( -/obj/effect/floor_decal/industrial/warning{ - icon_state = "warning"; - dir = 1 - }, -/turf/simulated/floor/tiled/techmaint, -/area/engineering/atmos) -"De" = ( -/obj/effect/floor_decal/industrial/warning/corner{ - icon_state = "warningcorner"; - dir = 1 - }, -/obj/effect/floor_decal/corner_techfloor_gray, -/turf/simulated/floor/tiled/techmaint, -/area/engineering/atmos) +/obj/effect/floor_decal/rust, +/obj/effect/decal/cleanable/dirt, +/turf/simulated/floor/plating, +/area/maintenance/lower/atmos) "Df" = ( -/obj/machinery/atmospherics/binary/pump, -/turf/simulated/floor/tiled/techfloor, -/area/engineering/atmos) -"Dg" = ( -/obj/effect/floor_decal/industrial/warning/corner, -/turf/simulated/floor/tiled/techfloor, -/area/engineering/atmos) -"Dh" = ( -/obj/machinery/hologram/holopad, -/obj/effect/floor_decal/industrial/warning, -/turf/simulated/floor/tiled/techfloor, -/area/engineering/atmos) -"Di" = ( -/obj/effect/floor_decal/industrial/warning/corner{ - icon_state = "warningcorner"; - dir = 8 - }, -/turf/simulated/floor/tiled/techfloor, -/area/engineering/atmos) -"Dj" = ( -/obj/effect/floor_decal/corner_techfloor_grid, -/turf/simulated/floor/tiled/techfloor, -/area/engineering/atmos) +/obj/structure/catwalk, +/obj/random/junk, +/obj/effect/decal/cleanable/dirt, +/turf/simulated/floor/plating, +/area/maintenance/lower/atmos) "Dk" = ( -/obj/machinery/light, /obj/effect/floor_decal/techfloor, +/obj/structure/catwalk, +/obj/effect/floor_decal/rust, +/obj/effect/decal/cleanable/dirt, /turf/simulated/floor/tiled/techfloor, -/area/engineering/atmos) +/area/maintenance/lower/atmos) "Dl" = ( /obj/effect/floor_decal/techfloor, +/obj/structure/catwalk, +/obj/effect/decal/cleanable/dirt, /turf/simulated/floor/tiled/techfloor, -/area/engineering/atmos) +/area/maintenance/lower/atmos) "Dm" = ( -/obj/machinery/atmospherics/pipe/simple/hidden/supply, -/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, -/turf/simulated/floor/tiled/techfloor, -/area/engineering/atmos) -"Dn" = ( -/obj/structure/extinguisher_cabinet{ - dir = 8; - icon_state = "extinguisher_closed"; - pixel_x = 30 - }, /obj/effect/floor_decal/techfloor{ dir = 6 }, +/obj/structure/catwalk, +/obj/effect/decal/cleanable/dirt, /turf/simulated/floor/tiled/techfloor, -/area/engineering/atmos) +/area/maintenance/lower/atmos) "Do" = ( /obj/structure/railing{ dir = 1 @@ -15078,78 +12700,53 @@ /obj/effect/decal/cleanable/dirt, /turf/simulated/floor/plating, /area/maintenance/lower/south) -"Ds" = ( -/obj/structure/table/standard, -/obj/effect/floor_decal/techfloor{ - dir = 8 - }, -/obj/structure/closet/hydrant{ - pixel_x = -32 - }, -/turf/simulated/floor/tiled/techfloor, -/area/engineering/atmos) -"Dt" = ( -/obj/machinery/atmospherics/pipe/manifold/visible/yellow{ - dir = 8 - }, -/turf/simulated/floor/tiled/techfloor, -/area/engineering/atmos) -"Du" = ( -/obj/machinery/atmospherics/portables_connector{ - dir = 8 - }, -/obj/effect/floor_decal/industrial/hatch/yellow, -/turf/simulated/floor/tiled/techfloor, -/area/engineering/atmos) "Dv" = ( -/obj/machinery/portable_atmospherics/canister/air, -/turf/simulated/floor/tiled/steel_dirty, -/area/engineering/atmos) -"Dw" = ( -/obj/machinery/portable_atmospherics/canister/nitrogen, -/turf/simulated/floor/tiled/steel_dirty, -/area/engineering/atmos) -"Dx" = ( -/obj/machinery/portable_atmospherics/canister/oxygen, -/turf/simulated/floor/tiled/steel_dirty, -/area/engineering/atmos) -"Dy" = ( -/obj/machinery/portable_atmospherics/canister/sleeping_agent, -/turf/simulated/floor/tiled/steel_dirty, -/area/engineering/atmos) -"Dz" = ( -/obj/machinery/portable_atmospherics/canister/carbon_dioxide, -/turf/simulated/floor/tiled/steel_dirty, -/area/engineering/atmos) -"DA" = ( -/obj/machinery/portable_atmospherics/canister/empty, -/turf/simulated/floor/tiled/steel_dirty, -/area/engineering/atmos) -"DB" = ( -/obj/structure/window/reinforced{ - dir = 8 +/obj/structure/railing{ + dir = 1 }, -/turf/simulated/floor/tiled/techfloor, -/area/engineering/atmos) -"DC" = ( -/obj/effect/floor_decal/techfloor{ +/obj/structure/railing{ dir = 4 }, -/obj/machinery/camera/network/engineering{ +/turf/simulated/floor/plating, +/area/maintenance/lower/atmos) +"Dy" = ( +/obj/effect/floor_decal/techfloor{ + dir = 10 + }, +/obj/structure/railing{ + dir = 1 + }, +/turf/simulated/floor/tiled/techfloor, +/area/maintenance/lower/atmos) +"Dz" = ( +/obj/effect/floor_decal/techfloor, +/obj/structure/railing{ + dir = 4 + }, +/obj/structure/railing{ + dir = 1 + }, +/turf/simulated/floor/tiled/techfloor, +/area/maintenance/lower/atmos) +"DA" = ( +/obj/effect/floor_decal/techfloor, +/obj/structure/catwalk, +/obj/random/junk, +/obj/effect/floor_decal/rust, +/turf/simulated/floor/tiled/techfloor, +/area/maintenance/lower/atmos) +"DC" = ( +/obj/effect/floor_decal/techfloor{ + dir = 6 + }, +/obj/structure/railing{ + dir = 1 + }, +/obj/structure/railing{ dir = 8 }, /turf/simulated/floor/tiled/techfloor, -/area/engineering/atmos) -"DD" = ( -/obj/machinery/door/firedoor/glass, -/obj/machinery/atmospherics/pipe/simple/hidden/supply, -/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, -/obj/machinery/door/airlock/atmos{ - name = "Atmospherics Maintenance"; - req_access = list(24) - }, -/turf/simulated/floor/tiled/techfloor/grid, -/area/engineering/atmos) +/area/maintenance/lower/atmos) "DE" = ( /obj/structure/catwalk, /obj/machinery/light/small{ @@ -15211,41 +12808,15 @@ }, /area/maintenance/lower/south) "DK" = ( -/obj/structure/table/standard, -/obj/effect/floor_decal/techfloor{ - dir = 8 - }, -/obj/item/weapon/storage/briefcase/inflatable{ - pixel_x = 3; +/obj/structure/plushie/ian{ + dir = 8; + icon_state = "ianplushie"; pixel_y = 6 }, -/obj/item/weapon/storage/briefcase/inflatable{ - pixel_y = 3 - }, -/obj/item/weapon/storage/briefcase/inflatable{ - pixel_x = -3 - }, -/turf/simulated/floor/tiled/techfloor, -/area/engineering/atmos) -"DL" = ( -/obj/structure/disposalpipe/segment{ - dir = 1; - icon_state = "pipe-c" - }, -/turf/simulated/floor/tiled/techfloor, -/area/engineering/atmos) -"DM" = ( -/obj/structure/disposalpipe/segment{ - dir = 2; - icon_state = "pipe-c" - }, -/turf/simulated/floor/tiled/techfloor, -/area/engineering/atmos) +/turf/simulated/floor/wood, +/area/maintenance/lower/atmos) "DN" = ( /obj/structure/railing, -/obj/structure/railing{ - dir = 4 - }, /obj/effect/floor_decal/techfloor{ dir = 9 }, @@ -15254,23 +12825,26 @@ /obj/random/maintenance/clean, /obj/random/maintenance/clean, /obj/random/maintenance/clean, +/obj/structure/railing{ + dir = 4 + }, /turf/simulated/floor/tiled/techfloor, /area/maintenance/lower/south) "DO" = ( +/obj/machinery/atmospherics/pipe/simple/visible/supply{ + dir = 6 + }, +/obj/machinery/atmospherics/pipe/simple/visible/scrubbers{ + dir = 6 + }, +/obj/effect/floor_decal/techfloor{ + dir = 1 + }, /obj/structure/catwalk, -/obj/machinery/atmospherics/pipe/manifold/visible/supply{ - dir = 8 - }, -/obj/machinery/atmospherics/pipe/manifold/visible/scrubbers{ - dir = 8 - }, /turf/simulated/floor/tiled/techfloor, /area/maintenance/lower/south) "DP" = ( /obj/structure/railing, -/obj/structure/railing{ - dir = 8 - }, /obj/effect/floor_decal/techfloor{ dir = 1 }, @@ -15280,6 +12854,9 @@ /obj/machinery/atmospherics/pipe/simple/visible/supply{ dir = 4 }, +/obj/structure/railing{ + dir = 8 + }, /turf/simulated/floor/tiled/techfloor, /area/maintenance/lower/south) "DQ" = ( @@ -15341,10 +12918,12 @@ /obj/machinery/atmospherics/pipe/simple/visible/supply{ dir = 4 }, -/obj/structure/cable{ - icon_state = "2-4" - }, /obj/random/junk, +/obj/structure/cable{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, /turf/simulated/floor/tiled/techfloor, /area/maintenance/lower/south) "DU" = ( @@ -15487,148 +13066,43 @@ }, /turf/simulated/floor/tiled/techfloor, /area/maintenance/lower/south) -"Ed" = ( -/obj/structure/table/standard, -/obj/effect/floor_decal/techfloor{ - dir = 10 - }, -/obj/item/device/suit_cooling_unit, -/obj/item/device/suit_cooling_unit, -/turf/simulated/floor/tiled/techfloor, -/area/engineering/atmos) -"Ee" = ( -/obj/structure/table/standard, -/obj/effect/floor_decal/techfloor, -/obj/item/clothing/glasses/welding, -/obj/item/clothing/head/welding{ - pixel_x = -5; - pixel_y = 3 - }, -/turf/simulated/floor/tiled/techfloor, -/area/engineering/atmos) -"Ef" = ( -/obj/effect/floor_decal/techfloor, -/obj/machinery/camera/network/engineering{ - dir = 1 - }, -/obj/structure/dispenser{ - phorontanks = 0 - }, -/turf/simulated/floor/tiled/techfloor, -/area/engineering/atmos) -"Eg" = ( -/obj/effect/floor_decal/techfloor, -/obj/machinery/space_heater, -/obj/machinery/light, -/turf/simulated/floor/tiled/techfloor, -/area/engineering/atmos) -"Eh" = ( -/obj/effect/floor_decal/techfloor, -/obj/machinery/suit_cycler/engineering{ - name = "Atmospherics suit cycler" - }, -/turf/simulated/floor/tiled/techfloor, -/area/engineering/atmos) -"Ei" = ( -/obj/structure/table/rack{ - dir = 8; - layer = 2.9 - }, -/obj/structure/window/reinforced{ - dir = 8 - }, -/obj/machinery/door/window/northleft{ - name = "Atmospherics Hardsuits"; - req_access = list(24) - }, -/obj/item/clothing/shoes/magboots, -/obj/item/clothing/mask/breath, -/obj/item/clothing/suit/space/void/atmos, -/obj/item/clothing/head/helmet/space/void/atmos, -/turf/simulated/floor/tiled/techfloor, -/area/engineering/atmos) -"Ej" = ( -/obj/structure/table/rack{ - dir = 8; - layer = 2.9 - }, -/obj/machinery/door/window/northright{ - name = "Atmospherics Hardsuits"; - req_access = list(24) - }, -/obj/structure/window/reinforced{ - dir = 4 - }, -/obj/item/clothing/shoes/magboots, -/obj/item/clothing/mask/breath, -/obj/item/clothing/suit/space/void/atmos, -/obj/item/clothing/head/helmet/space/void/atmos, -/turf/simulated/floor/tiled/techfloor, -/area/engineering/atmos) "Ek" = ( -/obj/machinery/pipedispenser/disposal, -/obj/effect/floor_decal/industrial/outline/yellow, -/turf/simulated/floor/tiled/techfloor, -/area/engineering/atmos) +/obj/structure/table/steel, +/obj/item/weapon/tool/crowbar, +/obj/item/weapon/tool/screwdriver, +/obj/effect/decal/cleanable/cobweb, +/turf/simulated/floor/tiled/techfloor/grid, +/area/maintenance/lower/atmos) "El" = ( -/obj/machinery/pipedispenser, -/obj/effect/floor_decal/industrial/outline/yellow, -/turf/simulated/floor/tiled/techfloor, -/area/engineering/atmos) +/obj/machinery/optable{ + name = "Robotics Operating Table" + }, +/obj/item/weapon/bone/ribs, +/obj/item/weapon/handcuffs/legcuffs, +/obj/item/weapon/handcuffs, +/obj/effect/floor_decal/rust, +/obj/effect/decal/cleanable/blood, +/turf/simulated/floor/tiled/techfloor/grid, +/area/maintenance/lower/atmos) "Em" = ( -/obj/effect/floor_decal/techfloor, -/obj/machinery/disposal, -/obj/structure/disposalpipe/trunk{ - dir = 1 +/obj/structure/table/steel, +/obj/machinery/vending/wallmed1{ + emagged = 1; + pixel_y = 32; + shut_up = 0 }, -/turf/simulated/floor/tiled/techfloor, -/area/engineering/atmos) -"En" = ( -/obj/effect/floor_decal/techfloor, -/obj/machinery/camera/network/engineering{ - dir = 1 - }, -/obj/item/device/radio/intercom{ - dir = 2; - pixel_y = -24 - }, -/obj/machinery/atmospherics/pipe/simple/visible/yellow{ - dir = 5 - }, -/turf/simulated/floor/tiled/techfloor, -/area/engineering/atmos) -"Eo" = ( -/obj/machinery/atmospherics/portables_connector{ - dir = 8 - }, -/obj/effect/floor_decal/corner_techfloor_grid{ - dir = 8 - }, -/obj/effect/floor_decal/corner_techfloor_grid, -/obj/effect/floor_decal/industrial/hatch/yellow, -/turf/simulated/floor/tiled/techfloor, -/area/engineering/atmos) -"Ep" = ( -/obj/machinery/portable_atmospherics/canister/oxygen, -/obj/machinery/light, -/turf/simulated/floor/tiled/steel_dirty, -/area/engineering/atmos) -"Eq" = ( -/obj/effect/floor_decal/corner_techfloor_grid, -/obj/effect/floor_decal/corner_techfloor_grid{ - dir = 8 - }, -/obj/structure/window/reinforced{ - dir = 8 - }, -/turf/simulated/floor/tiled/techfloor, -/area/engineering/atmos) +/obj/item/weapon/tool/wirecutters, +/obj/item/weapon/tool/wrench, +/obj/effect/decal/cleanable/dirt, +/turf/simulated/floor/tiled/techfloor/grid, +/area/maintenance/lower/atmos) "Er" = ( -/obj/effect/floor_decal/techfloor{ - dir = 6 +/obj/effect/decal/cleanable/cobweb{ + icon_state = "cobweb2" }, -/turf/simulated/floor/tiled/techfloor, -/area/engineering/atmos) +/obj/effect/decal/cleanable/dirt, +/turf/simulated/floor/plating, +/area/maintenance/lower/atmos) "Es" = ( /obj/structure/catwalk, /obj/machinery/atmospherics/pipe/simple/visible/supply, @@ -15638,16 +13112,7 @@ "Et" = ( /obj/structure/catwalk, /obj/structure/cable{ - icon_state = "2-4" - }, -/turf/simulated/floor/tiled/techfloor, -/area/maintenance/lower/south) -"Eu" = ( -/obj/structure/catwalk, -/obj/structure/cable{ - d1 = 1; - d2 = 8; - icon_state = "1-8" + icon_state = "1-2" }, /turf/simulated/floor/tiled/techfloor, /area/maintenance/lower/south) @@ -15670,18 +13135,24 @@ /turf/simulated/wall, /area/maintenance/substation/tcomms) "Ex" = ( -/obj/machinery/door/airlock/maintenance/engi{ - name = "Telecomms Substation" - }, /obj/structure/cable{ - d1 = 1; - d2 = 2; - icon_state = "1-2"; - pixel_y = 0 + d1 = 4; + d2 = 8; + icon_state = "4-8"; + pixel_x = 0 + }, +/obj/machinery/door/airlock/engineering{ + name = "Science Substation"; + req_one_access = list(11,24,47) }, /obj/machinery/door/firedoor, -/turf/simulated/floor/plating, -/area/maintenance/substation/tcomms) +/obj/structure/cable/green{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/turf/simulated/floor, +/area/maintenance/substation/research) "Ey" = ( /obj/structure/sign/securearea{ desc = "A warning sign which reads 'HIGH VOLTAGE'"; @@ -15903,7 +13374,7 @@ name = "\improper Telecomms Lobby" }) "EX" = ( -/obj/machinery/camera/network/telecom, +/obj/machinery/camera/network/tcomms, /turf/simulated/floor/tiled/dark, /area/tcomsat{ name = "\improper Telecomms Lobby" @@ -16044,7 +13515,7 @@ name = "\improper Telecomms Lobby" }) "Fk" = ( -/obj/machinery/camera/network/telecom, +/obj/machinery/camera/network/tcomms, /obj/structure/sign/electricshock{ pixel_y = 32 }, @@ -16074,17 +13545,18 @@ name = "\improper Telecomms Lobby" }) "Fn" = ( -/obj/structure/window/reinforced/full, -/obj/structure/grille, -/obj/machinery/door/firedoor/glass, -/obj/structure/cable/green{ - d2 = 2; - icon_state = "0-2" +/obj/effect/floor_decal/borderfloor{ + dir = 10 }, -/turf/simulated/floor/plating, -/area/tcomsat{ - name = "\improper Telecomms Lobby" - }) +/obj/effect/floor_decal/corner/mauve/border{ + dir = 10 + }, +/obj/machinery/alarm{ + dir = 1; + pixel_y = -25 + }, +/turf/simulated/floor/tiled, +/area/rnd/research/testingrange) "Fo" = ( /turf/simulated/floor/tiled, /area/tcomsat{ @@ -16100,7 +13572,7 @@ /obj/machinery/atmospherics/pipe/simple/hidden/supply{ dir = 6 }, -/obj/machinery/camera/network/telecom{ +/obj/machinery/camera/network/tcomms{ dir = 4 }, /obj/item/device/radio/intercom{ @@ -16155,21 +13627,10 @@ /turf/simulated/floor/tiled/techfloor, /area/maintenance/lower/south) "Fy" = ( -/obj/machinery/door/airlock/highsecurity{ - name = "Telecomms Access"; - req_one_access = list(61) - }, -/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ - dir = 4 - }, -/obj/machinery/atmospherics/pipe/simple/hidden/supply{ - dir = 4 - }, -/obj/machinery/door/firedoor, -/turf/simulated/floor/tiled, -/area/tcommsat/entrance{ - name = "\improper Telecomms Entrance" - }) +/obj/machinery/door/airlock/maintenance/common, +/obj/machinery/door/firedoor/glass, +/turf/simulated/floor, +/area/maintenance/lower/bar) "Fz" = ( /obj/machinery/atmospherics/pipe/manifold/hidden/supply{ dir = 1 @@ -16213,27 +13674,9 @@ name = "\improper Telecomms Entrance" }) "FC" = ( -/obj/structure/cable/green{ - d1 = 4; - d2 = 8; - icon_state = "4-8" - }, -/obj/machinery/atmospherics/pipe/simple/hidden/supply{ - dir = 4 - }, -/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ - dir = 4 - }, -/obj/machinery/door/airlock/hatch{ - name = "Telecomms Foyer"; - req_access = list(61); - req_one_access = list(12) - }, -/obj/machinery/door/firedoor, +/obj/machinery/hologram/holopad, /turf/simulated/floor/tiled, -/area/tcomsat{ - name = "\improper Telecomms Lobby" - }) +/area/janitor) "FD" = ( /obj/structure/cable/green{ d1 = 4; @@ -16515,7 +13958,7 @@ name = "\improper Telecomms Entrance" }) "FW" = ( -/obj/machinery/camera/network/telecom{ +/obj/machinery/camera/network/tcomms{ dir = 1 }, /turf/simulated/floor/tiled, @@ -16638,20 +14081,6 @@ }, /turf/simulated/floor/tiled, /area/tcommsat/computer) -"Gi" = ( -/obj/machinery/door/airlock/maintenance_hatch{ - frequency = 1381; - icon_state = "door_locked"; - id_tag = "server_access_outer"; - locked = 1; - name = "Telecoms Server Access"; - req_access = list(61) - }, -/obj/machinery/atmospherics/pipe/simple/hidden{ - dir = 4 - }, -/turf/simulated/floor/tiled, -/area/tcommsat/chamber) "Gj" = ( /obj/machinery/airlock_sensor{ frequency = 1381; @@ -16809,22 +14238,6 @@ temperature = 80 }, /area/tcommsat/chamber) -"Gu" = ( -/obj/effect/floor_decal/industrial/warning/dust{ - dir = 10 - }, -/obj/effect/floor_decal/industrial/warning/dust/corner{ - dir = 4 - }, -/turf/simulated/floor/tiled/steel_dirty/virgo3b, -/area/engineering/atmos/intake) -"Gv" = ( -/obj/effect/floor_decal/industrial/warning/dust, -/obj/effect/floor_decal/industrial/warning/dust{ - dir = 1 - }, -/turf/simulated/floor/tiled/steel_dirty/virgo3b, -/area/engineering/atmos/intake) "Gw" = ( /turf/simulated/wall/r_wall, /area/tcomfoyer{ @@ -17189,7 +14602,7 @@ name = "\improper Telecomms Storage" }) "Hc" = ( -/obj/machinery/camera/network/telecom{ +/obj/machinery/camera/network/tcomms{ dir = 4 }, /turf/simulated/floor/bluegrid{ @@ -17211,7 +14624,7 @@ }, /area/tcommsat/chamber) "He" = ( -/obj/machinery/camera/network/telecom{ +/obj/machinery/camera/network/tcomms{ dir = 8 }, /turf/simulated/floor/bluegrid{ @@ -17244,7 +14657,7 @@ /obj/item/weapon/stock_parts/subspace/sub_filter, /obj/item/weapon/stock_parts/subspace/sub_filter, /obj/item/weapon/stock_parts/subspace/sub_filter, -/obj/machinery/camera/network/telecom{ +/obj/machinery/camera/network/tcomms{ dir = 1 }, /turf/simulated/floor/tiled/techmaint, @@ -17500,7 +14913,7 @@ }, /area/tcommsat/chamber) "HI" = ( -/obj/machinery/camera/network/telecom{ +/obj/machinery/camera/network/tcomms{ dir = 1 }, /turf/simulated/floor/bluegrid{ @@ -17557,6 +14970,93 @@ temperature = 80 }, /area/tcommsat/chamber) +"HM" = ( +/obj/machinery/door/airlock/maintenance/engi{ + name = "Telecomms Substation" + }, +/obj/structure/cable{ + d1 = 1; + d2 = 2; + icon_state = "1-2"; + pixel_y = 0 + }, +/obj/machinery/door/firedoor, +/turf/simulated/floor/plating, +/area/maintenance/substation/tcomms) +"HN" = ( +/obj/structure/window/reinforced/full, +/obj/structure/grille, +/obj/structure/cable/green{ + d2 = 2; + icon_state = "0-2" + }, +/obj/machinery/door/firedoor, +/turf/simulated/floor/plating, +/area/tcomsat{ + name = "\improper Telecomms Lobby" + }) +"HO" = ( +/obj/machinery/door/airlock/highsecurity{ + name = "Telecomms Access"; + req_one_access = list(61) + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/obj/machinery/door/firedoor/glass, +/turf/simulated/floor/tiled, +/area/tcommsat/entrance{ + name = "\improper Telecomms Entrance" + }) +"HP" = ( +/obj/structure/cable/green{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, +/obj/machinery/door/airlock/hatch{ + name = "Telecomms Foyer"; + req_access = list(61); + req_one_access = list(12) + }, +/obj/machinery/door/firedoor/glass, +/turf/simulated/floor/tiled, +/area/tcomsat{ + name = "\improper Telecomms Lobby" + }) +"HQ" = ( +/obj/machinery/door/airlock/maintenance_hatch{ + frequency = 1381; + icon_state = "door_locked"; + id_tag = "server_access_outer"; + locked = 1; + name = "Telecoms Server Access"; + req_access = list(61) + }, +/obj/machinery/atmospherics/pipe/simple/hidden{ + dir = 4 + }, +/obj/machinery/door/firedoor/glass, +/turf/simulated/floor/tiled, +/area/tcommsat/chamber) +"HR" = ( +/obj/machinery/telecomms/relay/preset/tether/midpoint, +/turf/simulated/floor/bluegrid{ + name = "Mainframe Base"; + nitrogen = 100; + oxygen = 0; + temperature = 80 + }, +/area/tcommsat/chamber) "HT" = ( /obj/item/weapon/storage/box/glasses/pint, /obj/item/weapon/storage/box/glass_extras/straws, @@ -17584,6 +15084,121 @@ }, /turf/simulated/floor/tiled, /area/tether/surfacebase/public_garden_two) +"HW" = ( +/obj/effect/floor_decal/borderfloor{ + dir = 1; + icon_state = "borderfloor"; + pixel_y = 0 + }, +/obj/machinery/atmospherics/unary/vent_scrubber/on, +/obj/effect/floor_decal/corner/yellow/border{ + icon_state = "bordercolor"; + dir = 1 + }, +/obj/structure/closet/secure_closet/atmos_personal, +/obj/machinery/firealarm{ + dir = 2; + layer = 3.3; + pixel_x = 0; + pixel_y = 26 + }, +/obj/machinery/light{ + dir = 1 + }, +/turf/simulated/floor/tiled, +/area/engineering/lower/atmos_lockers) +"Ie" = ( +/obj/effect/decal/cleanable/dirt, +/turf/simulated/floor/tiled/techfloor/grid, +/area/maintenance/lower/atmos) +"If" = ( +/obj/machinery/atmospherics/unary/vent_scrubber/on{ + dir = 8 + }, +/obj/machinery/light, +/turf/simulated/floor/wood, +/area/engineering/lower/breakroom) +"Ij" = ( +/obj/machinery/alarm{ + dir = 4; + icon_state = "alarm0"; + pixel_x = -22; + pixel_y = 0 + }, +/turf/simulated/floor/plating, +/area/maintenance/lower/atmos) +"Il" = ( +/obj/machinery/atmospherics/unary/vent_scrubber/on, +/obj/effect/floor_decal/rust, +/obj/machinery/light_switch{ + pixel_y = 25 + }, +/obj/effect/decal/cleanable/cobweb{ + icon_state = "cobweb2" + }, +/obj/effect/decal/cleanable/dirt, +/turf/simulated/floor/tiled/steel_dirty, +/area/rnd/research_storage) +"Ip" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/structure/cable/green{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/turf/simulated/floor/tiled/techfloor, +/area/server) +"Iq" = ( +/turf/simulated/wall/r_wall, +/area/engineering/atmos) +"Ir" = ( +/obj/structure/disposalpipe/trunk{ + dir = 1 + }, +/obj/machinery/disposal, +/obj/machinery/requests_console{ + department = "Janitorial"; + departmentType = 1; + pixel_y = -28 + }, +/obj/effect/floor_decal/borderfloor{ + dir = 6 + }, +/obj/effect/floor_decal/corner/purple/border{ + dir = 6 + }, +/turf/simulated/floor/tiled, +/area/janitor) +"Is" = ( +/obj/structure/cable/green{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/obj/effect/floor_decal/borderfloor/corner{ + dir = 4 + }, +/obj/effect/floor_decal/corner/mauve/bordercorner{ + dir = 4 + }, +/turf/simulated/floor/tiled, +/area/rnd/research) +"Iu" = ( +/obj/structure/table/steel, +/obj/item/weapon/reagent_containers/food/drinks/bottle/goldschlager, +/turf/simulated/floor/plating, +/area/maintenance/lower/atmos) +"Iw" = ( +/obj/effect/floor_decal/borderfloor/corner{ + dir = 8 + }, +/obj/effect/floor_decal/corner/yellow/bordercorner{ + icon_state = "bordercolorcorner"; + dir = 8 + }, +/turf/simulated/floor/tiled, +/area/engineering/atmos/monitoring) "IB" = ( /obj/effect/floor_decal/industrial/outline/yellow, /obj/structure/cable{ @@ -17610,6 +15225,15 @@ }, /turf/simulated/floor/tiled, /area/tether/surfacebase/public_garden_two) +"ID" = ( +/obj/effect/floor_decal/borderfloor{ + dir = 4 + }, +/obj/effect/floor_decal/borderfloor/corner2{ + dir = 5 + }, +/turf/simulated/floor/tiled/techmaint, +/area/tether/surfacebase/east_stairs_two) "IE" = ( /obj/structure/cable{ d1 = 1; @@ -17625,6 +15249,32 @@ /obj/machinery/hologram/holopad, /turf/simulated/floor/tiled, /area/tether/surfacebase/public_garden_two) +"IO" = ( +/obj/effect/floor_decal/rust, +/obj/structure/cable/green{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/obj/effect/decal/cleanable/dirt, +/turf/simulated/floor/tiled/steel_dirty, +/area/rnd/research_storage) +"IR" = ( +/obj/machinery/camera/network/engineering{ + dir = 1 + }, +/turf/simulated/floor/wood, +/area/engineering/lower/breakroom) +"IS" = ( +/obj/structure/railing{ + dir = 1 + }, +/obj/structure/railing{ + dir = 8 + }, +/obj/effect/decal/cleanable/dirt, +/turf/simulated/floor/plating, +/area/maintenance/lower/atmos) "IT" = ( /obj/effect/floor_decal/borderfloor{ dir = 1; @@ -17639,9 +15289,114 @@ }, /turf/simulated/floor/tiled, /area/tether/surfacebase/public_garden_two) +"IU" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/turf/simulated/floor/tiled/techmaint, +/area/tether/surfacebase/east_stairs_two) +"IV" = ( +/obj/effect/floor_decal/borderfloor{ + dir = 10 + }, +/obj/machinery/atmospherics/unary/vent_pump/on{ + dir = 4 + }, +/obj/effect/floor_decal/corner/yellow/border{ + icon_state = "bordercolor"; + dir = 10 + }, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/turf/simulated/floor/tiled, +/area/engineering/atmos) +"IW" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 9 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 9 + }, +/turf/simulated/floor/tiled/techmaint, +/area/tether/surfacebase/east_stairs_two) "IY" = ( /turf/simulated/floor/outdoors/dirt/virgo3b, /area/tether/surfacebase/outside/outside2) +"Ja" = ( +/obj/effect/floor_decal/borderfloor{ + dir = 4 + }, +/obj/effect/floor_decal/corner/yellow/border{ + icon_state = "bordercolor"; + dir = 4 + }, +/obj/effect/floor_decal/borderfloor/corner2{ + dir = 5 + }, +/obj/effect/floor_decal/corner/yellow/bordercorner2{ + icon_state = "bordercolorcorner2"; + dir = 5 + }, +/obj/machinery/atmospherics/unary/vent_pump/on{ + dir = 8 + }, +/turf/simulated/floor/tiled, +/area/engineering/lower/lobby) +"Jc" = ( +/obj/effect/floor_decal/techfloor{ + dir = 1 + }, +/turf/simulated/floor/tiled/techfloor, +/area/server) +"Jd" = ( +/obj/effect/floor_decal/borderfloor{ + dir = 4 + }, +/obj/structure/cable{ + d2 = 8; + icon_state = "0-8" + }, +/obj/machinery/power/apc{ + dir = 4; + name = "east bump"; + pixel_x = 28 + }, +/turf/simulated/floor/tiled/techmaint, +/area/tether/surfacebase/east_stairs_two) +"Je" = ( +/obj/random/trash_pile, +/obj/effect/decal/cleanable/dirt, +/turf/simulated/floor/plating, +/area/maintenance/lower/atmos) +"Jf" = ( +/obj/effect/floor_decal/rust, +/obj/structure/bed, +/turf/simulated/floor/tiled/steel_dirty, +/area/rnd/research_storage) +"Ji" = ( +/turf/simulated/wall/r_wall, +/area/engineering/lower/lobby) +"Jk" = ( +/obj/effect/floor_decal/borderfloor{ + dir = 1 + }, +/obj/machinery/light/small{ + dir = 1 + }, +/turf/simulated/floor/tiled/techmaint, +/area/tether/surfacebase/atrium_two) +"Jt" = ( +/turf/simulated/floor/wood, +/area/maintenance/lower/atmos) +"Jv" = ( +/obj/structure/railing, +/obj/effect/decal/cleanable/dirt, +/turf/simulated/floor/plating, +/area/maintenance/lower/atmos) "Jx" = ( /obj/effect/decal/cleanable/dirt, /obj/effect/floor_decal/corner_techfloor_grid{ @@ -17649,6 +15404,119 @@ }, /turf/simulated/floor/tiled/techfloor, /area/maintenance/lower/bar) +"Jz" = ( +/obj/effect/floor_decal/borderfloor, +/obj/effect/floor_decal/corner/purple/border, +/obj/structure/closet/l3closet/janitor, +/turf/simulated/floor/tiled, +/area/janitor) +"JD" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/obj/structure/catwalk, +/obj/effect/floor_decal/techfloor, +/obj/effect/decal/cleanable/dirt, +/turf/simulated/floor/tiled/techfloor, +/area/maintenance/asmaint2) +"JE" = ( +/obj/structure/railing, +/obj/structure/railing{ + dir = 4 + }, +/obj/effect/decal/cleanable/dirt, +/turf/simulated/floor/plating, +/area/maintenance/lower/atmos) +"JG" = ( +/obj/structure/lattice, +/turf/simulated/open, +/area/maintenance/lower/atmos) +"JJ" = ( +/obj/structure/closet, +/obj/structure/catwalk, +/obj/random/maintenance/clean, +/turf/simulated/floor/plating, +/area/maintenance/lower/atmos) +"JK" = ( +/obj/structure/catwalk, +/obj/effect/floor_decal/rust, +/turf/simulated/floor/plating, +/area/maintenance/lower/atmos) +"JP" = ( +/obj/structure/disposalpipe/segment, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/effect/decal/cleanable/dirt, +/turf/simulated/floor/plating, +/area/maintenance/asmaint2) +"JQ" = ( +/obj/structure/table/steel, +/obj/item/weapon/flame/candle, +/obj/item/weapon/flame/candle, +/obj/item/weapon/flame/lighter, +/turf/simulated/floor/plating, +/area/maintenance/lower/south) +"JU" = ( +/obj/random/obstruction, +/obj/effect/decal/cleanable/dirt, +/turf/simulated/floor/wood, +/area/maintenance/lower/atmos) +"JV" = ( +/obj/structure/railing{ + dir = 4 + }, +/obj/effect/decal/cleanable/dirt, +/obj/machinery/light/small, +/turf/simulated/floor/plating, +/area/maintenance/asmaint2) +"JW" = ( +/obj/structure/cable/cyan{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/turf/simulated/floor/tiled, +/area/engineering/lower/atmos_lockers) +"Kb" = ( +/obj/effect/decal/cleanable/dirt, +/obj/machinery/atmospherics/portables_connector{ + dir = 8 + }, +/obj/machinery/portable_atmospherics/powered/scrubber, +/turf/simulated/floor/plating, +/area/maintenance/engineering/pumpstation) +"Ke" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 10 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 6 + }, +/turf/simulated/floor/tiled, +/area/engineering/lower/atmos_eva) +"Kf" = ( +/obj/effect/floor_decal/borderfloor{ + dir = 8 + }, +/obj/effect/floor_decal/corner/yellow/border{ + icon_state = "bordercolor"; + dir = 8 + }, +/obj/machinery/computer/atmoscontrol{ + icon_state = "computer"; + dir = 4 + }, +/turf/simulated/floor/tiled, +/area/engineering/atmos/monitoring) +"Ki" = ( +/obj/machinery/atmospherics/unary/vent_pump/on{ + dir = 8 + }, +/turf/simulated/floor/tiled/techmaint, +/area/tether/surfacebase/east_stairs_two) "Kj" = ( /obj/machinery/atmospherics/pipe/simple/hidden/supply{ dir = 4 @@ -17657,6 +15525,25 @@ /obj/effect/floor_decal/corner/lime/border, /turf/simulated/floor/tiled, /area/tether/surfacebase/public_garden_two) +"Kl" = ( +/obj/effect/floor_decal/borderfloor{ + dir = 1; + icon_state = "borderfloor"; + pixel_y = 0 + }, +/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{ + dir = 1 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 10 + }, +/obj/effect/floor_decal/corner/yellow/border{ + icon_state = "bordercolor"; + dir = 1 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/red, +/turf/simulated/floor/tiled, +/area/engineering/atmos) "Kn" = ( /obj/structure/cable{ d1 = 1; @@ -17672,9 +15559,114 @@ }, /turf/simulated/floor/tiled, /area/tether/surfacebase/public_garden_two) +"Kq" = ( +/obj/effect/floor_decal/borderfloor{ + dir = 5 + }, +/obj/effect/floor_decal/corner/mauve/border{ + dir = 5 + }, +/obj/machinery/light_switch{ + dir = 8; + pixel_x = 28 + }, +/turf/simulated/floor/tiled, +/area/rnd/research) +"Kr" = ( +/obj/effect/floor_decal/rust, +/turf/simulated/floor/tiled/techfloor, +/area/maintenance/lower/atmos) +"Ks" = ( +/obj/structure/bed, +/obj/effect/decal/cleanable/blood, +/obj/effect/decal/cleanable/dirt, +/turf/simulated/floor/plating, +/area/maintenance/lower/south) "Kt" = ( /turf/simulated/wall, /area/tether/surfacebase/public_garden_two) +"Kv" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/turf/simulated/floor/plating, +/area/engineering/atmos/storage) +"Kx" = ( +/obj/effect/floor_decal/borderfloor, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/obj/machinery/atmospherics/pipe/manifold/hidden/supply{ + dir = 8 + }, +/obj/effect/floor_decal/corner/yellow/border, +/obj/machinery/atmospherics/pipe/simple/hidden/red{ + icon_state = "intact"; + dir = 9 + }, +/turf/simulated/floor/tiled, +/area/engineering/atmos) +"Kz" = ( +/obj/structure/bed/chair/office/dark{ + dir = 4 + }, +/obj/effect/decal/cleanable/dirt, +/turf/simulated/floor/plating, +/area/maintenance/lower/atmos) +"KA" = ( +/obj/effect/floor_decal/borderfloor, +/obj/effect/floor_decal/corner/yellow/border, +/obj/machinery/computer/atmos_alert{ + icon_state = "computer"; + dir = 1 + }, +/turf/simulated/floor/tiled, +/area/engineering/atmos/monitoring) +"KB" = ( +/obj/structure/table/woodentable, +/obj/item/weapon/reagent_containers/food/drinks/teapot, +/turf/simulated/floor/wood, +/area/maintenance/lower/atmos) +"KC" = ( +/obj/effect/decal/cleanable/dirt, +/turf/simulated/floor/tiled/techfloor, +/area/maintenance/lower/atmos) +"KG" = ( +/obj/structure/table/steel, +/obj/item/weapon/reagent_containers/food/drinks/bottle/lemonjuice, +/obj/item/weapon/reagent_containers/food/drinks/bottle/limejuice, +/obj/item/weapon/reagent_containers/food/drinks/bottle/cream, +/obj/item/weapon/reagent_containers/food/drinks/bottle/orangejuice, +/obj/effect/decal/cleanable/dirt, +/turf/simulated/floor/plating, +/area/maintenance/lower/atmos) +"KH" = ( +/obj/effect/floor_decal/borderfloor{ + dir = 1; + icon_state = "borderfloor"; + pixel_y = 0 + }, +/obj/effect/floor_decal/corner/yellow/border{ + icon_state = "bordercolor"; + dir = 1 + }, +/obj/structure/closet/secure_closet/atmos_personal, +/obj/machinery/alarm{ + frequency = 1441; + pixel_y = 22 + }, +/turf/simulated/floor/tiled, +/area/engineering/lower/atmos_lockers) +"KI" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 9 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/obj/effect/decal/cleanable/dirt, +/turf/simulated/floor/tiled/steel_dirty, +/area/rnd/research_storage) +"KJ" = ( +/obj/structure/catwalk, +/turf/simulated/floor/plating, +/area/maintenance/lower/atmos) "KL" = ( /obj/effect/floor_decal/borderfloor/corner{ dir = 4 @@ -17685,12 +15677,236 @@ }, /turf/simulated/floor/tiled, /area/tether/surfacebase/public_garden_two) +"KR" = ( +/obj/machinery/light_switch{ + pixel_y = 28 + }, +/obj/effect/floor_decal/borderfloor{ + dir = 5 + }, +/obj/effect/floor_decal/corner/yellow/border{ + icon_state = "bordercolor"; + dir = 5 + }, +/obj/machinery/vending/tool, +/turf/simulated/floor/tiled, +/area/engineering/lower/atmos_lockers) +"KS" = ( +/obj/structure/railing{ + dir = 1 + }, +/turf/simulated/floor/plating, +/area/maintenance/lower/south) +"KU" = ( +/obj/effect/floor_decal/borderfloor, +/obj/effect/floor_decal/corner/purple/border, +/obj/structure/closet/jcloset, +/obj/item/weapon/soap/nanotrasen, +/turf/simulated/floor/tiled, +/area/janitor) +"KV" = ( +/obj/structure/table/rack, +/obj/item/clothing/under/color/black, +/turf/simulated/floor/plating, +/area/maintenance/lower/south) +"KX" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 9 + }, +/obj/structure/disposalpipe/segment{ + dir = 2; + icon_state = "pipe-c" + }, +/obj/structure/extinguisher_cabinet{ + pixel_x = 25; + pixel_y = 0 + }, +/obj/effect/floor_decal/borderfloor{ + dir = 4 + }, +/obj/effect/floor_decal/corner/purple/border{ + dir = 4 + }, +/obj/structure/table/steel, +/obj/item/weapon/grenade/chem_grenade/cleaner, +/obj/item/weapon/grenade/chem_grenade/cleaner, +/obj/item/weapon/grenade/chem_grenade/cleaner, +/obj/item/weapon/grenade/chem_grenade/cleaner, +/obj/item/weapon/storage/box/mousetraps, +/obj/item/weapon/storage/box/lights/mixed, +/obj/item/weapon/storage/box/lights/mixed, +/obj/item/weapon/reagent_containers/spray/cleaner, +/obj/item/weapon/reagent_containers/spray/cleaner, +/turf/simulated/floor/tiled, +/area/janitor) +"KY" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/turf/simulated/floor/tiled/techmaint, +/area/tether/surfacebase/east_stairs_two) +"La" = ( +/obj/structure/cable/cyan{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 5 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 6 + }, +/obj/structure/cable/cyan{ + d1 = 2; + d2 = 4; + icon_state = "2-4" + }, +/turf/simulated/floor/tiled, +/area/engineering/lower/lobby) +"Ld" = ( +/turf/simulated/floor/carpet, +/area/maintenance/lower/atmos) +"Le" = ( +/obj/structure/railing{ + dir = 4 + }, +/obj/effect/floor_decal/rust, +/obj/effect/decal/cleanable/dirt, +/turf/simulated/floor/plating, +/area/maintenance/asmaint2) +"Lj" = ( +/obj/effect/floor_decal/borderfloor{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 10 + }, +/turf/simulated/floor/tiled/techmaint, +/area/tether/surfacebase/east_stairs_two) +"Lk" = ( +/obj/machinery/door/airlock/maintenance/common, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/structure/cable/green{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/obj/machinery/door/firedoor/glass, +/turf/simulated/floor/tiled/techfloor, +/area/rnd/research_storage) +"Lm" = ( +/obj/machinery/atmospherics/pipe/manifold/hidden/red, +/turf/simulated/floor/tiled, +/area/engineering/lower/lobby) +"Lo" = ( +/obj/structure/stairs/east, +/turf/simulated/floor/tiled/techmaint, +/area/tether/surfacebase/east_stairs_two) "Lp" = ( /obj/structure/frame{ anchored = 1 }, /turf/simulated/floor, /area/maintenance/lower/bar) +"Lq" = ( +/obj/structure/table/steel, +/obj/item/weapon/handcuffs/fuzzy, +/obj/item/weapon/handcuffs/legcuffs/fuzzy, +/obj/effect/decal/cleanable/dirt, +/turf/simulated/floor/plating, +/area/maintenance/lower/south) +"Lr" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/obj/structure/catwalk, +/obj/effect/floor_decal/techfloor, +/obj/effect/floor_decal/rust, +/obj/effect/decal/cleanable/dirt, +/turf/simulated/floor/tiled/techfloor, +/area/maintenance/asmaint2) +"Lt" = ( +/obj/structure/closet/crate, +/obj/random/maintenance/clean, +/obj/random/maintenance/engineering, +/obj/random/maintenance/clean, +/obj/structure/catwalk, +/turf/simulated/floor/plating, +/area/maintenance/lower/south) +"Lu" = ( +/obj/machinery/atmospherics/pipe/simple/visible/scrubbers{ + dir = 5 + }, +/obj/machinery/atmospherics/pipe/simple/visible/supply{ + dir = 5 + }, +/obj/effect/floor_decal/rust, +/obj/effect/decal/cleanable/dirt, +/turf/simulated/floor/plating, +/area/maintenance/lower/south) +"Lv" = ( +/obj/structure/cable/cyan{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 9; + pixel_y = 0 + }, +/turf/simulated/floor/plating, +/area/engineering/atmos/storage) +"Ly" = ( +/obj/structure/reagent_dispensers/watertank, +/obj/structure/catwalk, +/turf/simulated/floor/plating, +/area/maintenance/lower/south) +"Lz" = ( +/obj/effect/floor_decal/borderfloor, +/obj/effect/floor_decal/corner/yellow/border, +/obj/machinery/light, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/machinery/door/firedoor/glass/hidden/steel{ + dir = 1 + }, +/turf/simulated/floor/tiled, +/area/engineering/atmos) +"LB" = ( +/obj/effect/floor_decal/borderfloor, +/obj/effect/floor_decal/corner/yellow/border, +/obj/effect/floor_decal/borderfloor/corner2, +/obj/effect/floor_decal/borderfloor/corner2{ + dir = 9 + }, +/obj/effect/floor_decal/corner/yellow/bordercorner2{ + icon_state = "bordercolorcorner2"; + dir = 9 + }, +/obj/effect/floor_decal/corner/yellow/bordercorner2, +/turf/simulated/floor/tiled, +/area/engineering/lower/lobby) +"LF" = ( +/obj/structure/bed/chair/office/light{ + dir = 8 + }, +/turf/simulated/floor/tiled/techfloor, +/area/server) "LG" = ( /obj/effect/floor_decal/borderfloor/corner{ dir = 1 @@ -17700,21 +15916,131 @@ }, /turf/simulated/floor/tiled, /area/tether/surfacebase/public_garden_two) +"LH" = ( +/obj/effect/floor_decal/borderfloor{ + dir = 9 + }, +/obj/effect/floor_decal/corner/yellow/border{ + icon_state = "bordercolor"; + dir = 9 + }, +/obj/structure/closet/secure_closet/atmos_personal, +/turf/simulated/floor/tiled, +/area/engineering/lower/atmos_lockers) "LI" = ( /turf/simulated/floor/outdoors/grass/sif/virgo3b, /area/tether/surfacebase/outside/outside2) +"LL" = ( +/obj/machinery/door/firedoor/glass, +/obj/machinery/door/airlock/maintenance/common, +/turf/simulated/floor/plating, +/area/maintenance/lower/atmos) "LM" = ( /obj/structure/frame{ anchored = 1 }, /turf/simulated/floor/tiled/techfloor, /area/maintenance/lower/bar) +"LN" = ( +/obj/item/weapon/contraband/poster, +/obj/structure/table/steel, +/turf/simulated/floor/wood, +/area/maintenance/lower/atmos) +"LP" = ( +/obj/structure/table/rack, +/obj/random/maintenance/clean, +/obj/random/maintenance/clean, +/obj/random/maintenance/engineering, +/obj/structure/catwalk, +/turf/simulated/floor/plating, +/area/maintenance/lower/south) +"LQ" = ( +/obj/structure/table/steel, +/obj/item/device/flashlight/lamp, +/turf/simulated/floor/plating, +/area/maintenance/lower/atmos) +"LR" = ( +/obj/structure/ladder_assembly, +/obj/effect/decal/cleanable/dirt, +/turf/simulated/floor/plating, +/area/maintenance/lower/atmos) +"LV" = ( +/obj/structure/extinguisher_cabinet{ + dir = 8; + icon_state = "extinguisher_closed"; + pixel_x = 30 + }, +/obj/effect/decal/cleanable/dirt, +/turf/simulated/floor/tiled/steel_dirty, +/area/rnd/research_storage) +"LY" = ( +/obj/machinery/camera/network/tether{ + dir = 4 + }, +/turf/simulated/floor/tiled/techmaint, +/area/tether/surfacebase/east_stairs_two) "Mf" = ( /obj/machinery/light/small, /obj/effect/decal/cleanable/dirt, /obj/structure/closet/firecloset/full/double, /turf/simulated/floor/plating, /area/tether/surfacebase/public_garden_two) +"Mh" = ( +/obj/structure/table/steel, +/obj/item/weapon/hand_labeler, +/obj/item/weapon/storage/fancy/candle_box, +/turf/simulated/floor/plating, +/area/maintenance/lower/atmos) +"Mk" = ( +/obj/structure/ladder_assembly, +/obj/effect/decal/cleanable/dirt, +/turf/simulated/floor/wood, +/area/maintenance/lower/atmos) +"Mn" = ( +/obj/structure/catwalk, +/obj/machinery/alarm{ + dir = 1; + pixel_y = -22 + }, +/turf/simulated/open, +/area/engineering/atmos) +"Mo" = ( +/obj/structure/railing{ + dir = 8 + }, +/turf/simulated/floor/tiled/techmaint, +/area/engineering/atmos) +"Mq" = ( +/obj/effect/floor_decal/borderfloor{ + dir = 8 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/structure/disposalpipe/segment, +/obj/machinery/door/firedoor/border_only, +/obj/structure/cable{ + d1 = 1; + d2 = 2; + icon_state = "1-2"; + pixel_y = 0 + }, +/obj/machinery/door/airlock/multi_tile/glass, +/turf/simulated/floor/tiled/techmaint, +/area/tether/surfacebase/east_stairs_two) +"Ms" = ( +/obj/structure/railing{ + dir = 1 + }, +/obj/structure/railing{ + dir = 4 + }, +/obj/effect/decal/cleanable/dirt, +/turf/simulated/floor/plating, +/area/maintenance/lower/south) +"Mu" = ( +/obj/structure/ladder, +/turf/simulated/floor/plating, +/area/maintenance/lower/atmos) "Mv" = ( /obj/effect/decal/cleanable/dirt, /obj/effect/floor_decal/corner_techfloor_grid{ @@ -17725,6 +16051,90 @@ }, /turf/simulated/floor/tiled/techfloor, /area/maintenance/lower/bar) +"MA" = ( +/obj/structure/table/steel, +/obj/item/device/nif/bad, +/obj/effect/decal/cleanable/dirt, +/turf/simulated/floor/plating, +/area/maintenance/lower/atmos) +"MB" = ( +/obj/structure/morgue, +/turf/simulated/floor/plating, +/area/maintenance/lower/atmos) +"ME" = ( +/obj/effect/floor_decal/rust, +/obj/structure/closet/wardrobe/robotics_black, +/obj/random/maintenance/research, +/turf/simulated/floor/tiled/steel_dirty, +/area/rnd/research_storage) +"MG" = ( +/obj/machinery/door/firedoor/glass, +/obj/structure/grille, +/obj/structure/window/reinforced/full, +/turf/simulated/floor/plating, +/area/engineering/lower/lobby) +"MH" = ( +/obj/structure/table/rack/shelf/steel, +/obj/item/weapon/reagent_containers/food/drinks/bottle/patron, +/obj/item/weapon/reagent_containers/food/drinks/bottle/wine, +/obj/item/weapon/reagent_containers/food/drinks/bottle/kahlua, +/obj/item/weapon/reagent_containers/food/drinks/bottle/sake, +/obj/effect/decal/cleanable/dirt, +/turf/simulated/floor/wood, +/area/maintenance/lower/atmos) +"MI" = ( +/obj/structure/table/steel, +/obj/item/clothing/head/welding/demon, +/obj/effect/decal/cleanable/dirt, +/turf/simulated/floor/plating, +/area/maintenance/lower/south) +"ML" = ( +/obj/effect/decal/cleanable/dirt, +/obj/machinery/atmospherics/pipe/simple/hidden/red{ + icon_state = "intact"; + dir = 6 + }, +/turf/simulated/floor/plating, +/area/maintenance/engineering/pumpstation) +"MN" = ( +/obj/effect/floor_decal/borderfloor/shifted{ + icon_state = "borderfloor_shifted"; + dir = 1 + }, +/obj/effect/floor_decal/corner/red/border/shifted{ + icon_state = "bordercolor_shifted"; + dir = 1 + }, +/obj/effect/floor_decal/corner/yellow{ + icon_state = "corner_white"; + dir = 5 + }, +/obj/machinery/atmospherics/portables_connector, +/obj/machinery/portable_atmospherics/powered/scrubber, +/turf/simulated/floor/tiled, +/area/engineering/lower/lobby) +"MO" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/obj/structure/catwalk, +/obj/effect/decal/cleanable/dirt, +/turf/simulated/floor/plating, +/area/maintenance/asmaint2) +"MQ" = ( +/turf/simulated/wall/r_wall, +/area/tether/surfacebase/east_stairs_two) +"MT" = ( +/obj/structure/grille, +/obj/structure/window/reinforced/full, +/obj/structure/window/reinforced{ + dir = 8 + }, +/turf/simulated/floor/plating, +/area/maintenance/lower/atmos) "MX" = ( /obj/structure/table/standard{ name = "plastic table frame" @@ -17747,9 +16157,49 @@ /obj/machinery/camera/network/civilian, /turf/simulated/floor/tiled, /area/tether/surfacebase/public_garden_two) +"Ne" = ( +/obj/effect/decal/cleanable/dirt, +/turf/simulated/floor/plating, +/area/maintenance/lower/atmos) "Nf" = ( /turf/simulated/open, /area/tether/surfacebase/public_garden_two) +"Ng" = ( +/obj/effect/floor_decal/borderfloor, +/obj/effect/floor_decal/corner/yellow/border, +/turf/simulated/floor/tiled/techmaint, +/area/tether/surfacebase/atrium_two) +"Nj" = ( +/obj/machinery/alarm{ + dir = 4; + icon_state = "alarm0"; + pixel_x = -22; + pixel_y = 0 + }, +/obj/effect/decal/cleanable/dirt, +/obj/machinery/light/small{ + dir = 8 + }, +/turf/simulated/floor/plating, +/area/maintenance/lower/south) +"No" = ( +/obj/structure/table/steel, +/turf/simulated/floor/plating, +/area/maintenance/lower/atmos) +"Np" = ( +/obj/effect/floor_decal/borderfloor{ + dir = 6 + }, +/obj/effect/floor_decal/corner/yellow/border{ + icon_state = "bordercolor"; + dir = 6 + }, +/obj/structure/disposalpipe/trunk{ + dir = 8 + }, +/obj/machinery/disposal, +/turf/simulated/floor/tiled, +/area/engineering/atmos/monitoring) "Nq" = ( /obj/structure/table/bench/steel, /obj/effect/floor_decal/borderfloor/corner{ @@ -17760,10 +16210,111 @@ }, /turf/simulated/floor/tiled, /area/tether/surfacebase/public_garden_two) +"Nt" = ( +/obj/effect/floor_decal/borderfloor{ + dir = 8 + }, +/obj/effect/floor_decal/corner/purple/border{ + dir = 8 + }, +/turf/simulated/floor/tiled, +/area/janitor) +"Nw" = ( +/obj/structure/table/rack, +/obj/random/maintenance/clean, +/obj/random/maintenance/engineering, +/turf/simulated/floor/plating, +/area/maintenance/lower/south) +"Nx" = ( +/obj/structure/catwalk, +/obj/effect/decal/cleanable/dirt, +/turf/simulated/floor/plating, +/area/maintenance/lower/atmos) +"Nz" = ( +/obj/effect/floor_decal/industrial/outline/yellow, +/obj/machinery/atmospherics/unary/vent_pump/on, +/obj/machinery/shieldgen, +/turf/simulated/floor/plating, +/area/engineering/atmos/storage) +"NB" = ( +/turf/simulated/floor/plating, +/area/maintenance/lower/south) +"NG" = ( +/obj/machinery/door/airlock/maintenance/engi{ + name = "Atmospherics"; + req_access = list(24) + }, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/machinery/door/firedoor/glass, +/turf/simulated/floor/plating, +/area/engineering/atmos) +"NH" = ( +/obj/machinery/light/small, +/obj/structure/railing{ + dir = 1 + }, +/turf/simulated/floor/plating, +/area/maintenance/lower/atmos) +"NJ" = ( +/obj/structure/railing{ + dir = 1 + }, +/obj/effect/decal/cleanable/dirt, +/obj/machinery/light/small, +/turf/simulated/floor/plating, +/area/maintenance/lower/south) +"NK" = ( +/obj/structure/railing{ + dir = 8 + }, +/obj/structure/closet, +/obj/random/maintenance/clean, +/obj/random/maintenance/clean, +/turf/simulated/floor/plating, +/area/maintenance/lower/south) +"NL" = ( +/obj/machinery/light/small{ + dir = 8 + }, +/obj/structure/plushie/carp{ + icon_state = "carpplushie"; + dir = 4 + }, +/turf/simulated/floor/plating, +/area/maintenance/lower/atmos) +"NO" = ( +/obj/item/weapon/stool/padded, +/obj/random/action_figure, +/turf/simulated/floor/plating, +/area/maintenance/lower/atmos) +"NT" = ( +/obj/structure/railing{ + dir = 8 + }, +/obj/structure/railing{ + dir = 1 + }, +/turf/simulated/floor/plating, +/area/maintenance/lower/south) "NV" = ( /obj/structure/sign/nanotrasen, /turf/simulated/wall, /area/tether/surfacebase/public_garden_two) +"NW" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/effect/decal/cleanable/dirt, +/turf/simulated/floor/plating, +/area/maintenance/asmaint2) +"NX" = ( +/obj/structure/railing{ + dir = 8 + }, +/obj/effect/decal/cleanable/dirt, +/turf/simulated/floor/plating, +/area/maintenance/lower/south) "NY" = ( /obj/structure/symbol/gu, /turf/simulated/wall{ @@ -17777,6 +16328,202 @@ }, /turf/simulated/floor/tiled, /area/tether/surfacebase/public_garden_two) +"Oa" = ( +/obj/structure/catwalk, +/obj/effect/floor_decal/rust, +/obj/effect/decal/cleanable/dirt, +/turf/simulated/floor/plating, +/area/maintenance/lower/atmos) +"Ob" = ( +/obj/effect/decal/cleanable/dirt, +/turf/simulated/floor/wood, +/area/maintenance/lower/atmos) +"Od" = ( +/obj/structure/table/steel, +/obj/item/stack/medical/splint/ghetto, +/obj/random/technology_scanner, +/turf/simulated/floor/tiled/techfloor, +/area/maintenance/lower/atmos) +"Oi" = ( +/obj/effect/floor_decal/borderfloor{ + dir = 4 + }, +/obj/effect/floor_decal/corner/yellow/border{ + icon_state = "bordercolor"; + dir = 4 + }, +/obj/effect/floor_decal/borderfloor/corner2{ + dir = 6 + }, +/obj/effect/floor_decal/corner/yellow/bordercorner2{ + icon_state = "bordercolorcorner2"; + dir = 6 + }, +/obj/machinery/atmospherics/unary/vent_scrubber/on{ + dir = 8 + }, +/turf/simulated/floor/tiled, +/area/engineering/lower/lobby) +"Oj" = ( +/obj/machinery/atmospherics/unary/vent_pump/on{ + dir = 1 + }, +/obj/effect/floor_decal/borderfloor, +/obj/effect/floor_decal/corner/yellow/border, +/obj/effect/floor_decal/borderfloor/corner2, +/obj/effect/floor_decal/borderfloor/corner2{ + dir = 9 + }, +/obj/effect/floor_decal/corner/yellow/bordercorner2{ + icon_state = "bordercolorcorner2"; + dir = 9 + }, +/obj/effect/floor_decal/corner/yellow/bordercorner2, +/turf/simulated/floor/tiled/techmaint, +/area/tether/surfacebase/atrium_two) +"Ok" = ( +/obj/effect/floor_decal/borderfloor{ + dir = 1; + icon_state = "borderfloor"; + pixel_y = 0 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, +/obj/effect/floor_decal/corner/yellow/border{ + icon_state = "bordercolor"; + dir = 1 + }, +/obj/machinery/alarm{ + frequency = 1441; + pixel_y = 22 + }, +/turf/simulated/floor/tiled, +/area/engineering/atmos) +"Oo" = ( +/obj/effect/floor_decal/borderfloor, +/obj/effect/floor_decal/corner/mauve/border, +/obj/effect/floor_decal/steeldecal/steel_decals7{ + dir = 1 + }, +/obj/effect/floor_decal/steeldecal/steel_decals7{ + dir = 8 + }, +/obj/effect/floor_decal/borderfloor/corner2{ + dir = 9 + }, +/obj/effect/floor_decal/corner/mauve/bordercorner2{ + dir = 9 + }, +/turf/simulated/floor/tiled, +/area/rnd/lockers) +"Op" = ( +/obj/structure/bed/chair, +/obj/effect/landmark/start{ + name = "Atmospheric Technician" + }, +/turf/simulated/floor/carpet, +/area/engineering/lower/breakroom) +"Oq" = ( +/obj/structure/railing{ + dir = 4 + }, +/obj/effect/floor_decal/rust, +/turf/simulated/floor/plating, +/area/maintenance/lower/atmos) +"Os" = ( +/obj/structure/catwalk, +/obj/structure/table/steel, +/obj/machinery/alarm{ + dir = 4; + pixel_x = -23; + pixel_y = 0 + }, +/obj/random/junk, +/turf/simulated/floor/plating, +/area/maintenance/lower/atmos) +"Ou" = ( +/obj/effect/floor_decal/borderfloor, +/obj/machinery/camera/network/tether{ + dir = 1 + }, +/turf/simulated/floor/tiled/techmaint, +/area/tether/surfacebase/atrium_two) +"Ov" = ( +/obj/structure/cable/cyan{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/obj/effect/floor_decal/borderfloor{ + dir = 1; + icon_state = "borderfloor"; + pixel_y = 0 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/obj/effect/floor_decal/corner/yellow/border{ + icon_state = "bordercolor"; + dir = 1 + }, +/obj/effect/floor_decal/borderfloor/corner2{ + dir = 1 + }, +/obj/effect/floor_decal/corner/yellow/bordercorner2{ + icon_state = "bordercolorcorner2"; + dir = 1 + }, +/obj/machinery/door/firedoor/glass/hidden/steel{ + dir = 2 + }, +/turf/simulated/floor/tiled, +/area/engineering/atmos) +"Ox" = ( +/obj/machinery/door/window/eastleft{ + dir = 8; + icon_state = "left"; + name = "Janitorial Desk" + }, +/obj/machinery/door/window/eastleft{ + dir = 4; + icon_state = "left"; + name = "Janitorial Desk" + }, +/obj/structure/table/reinforced, +/obj/machinery/door/blast/shutters{ + dir = 2; + id = "janitor_blast"; + layer = 3.3; + name = "Janitorial Shutters" + }, +/obj/machinery/door/firedoor/border_only, +/turf/simulated/floor/tiled, +/area/janitor) +"Oy" = ( +/obj/structure/railing, +/obj/structure/railing{ + dir = 4 + }, +/turf/simulated/floor/plating, +/area/maintenance/lower/atmos) +"OE" = ( +/obj/effect/floor_decal/borderfloor{ + dir = 8 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/structure/disposalpipe/segment, +/obj/structure/cable{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/turf/simulated/floor/tiled/techmaint, +/area/tether/surfacebase/east_stairs_two) "OG" = ( /obj/machinery/light, /obj/effect/floor_decal/borderfloor{ @@ -17787,6 +16534,10 @@ }, /turf/simulated/floor/tiled, /area/tether/surfacebase/public_garden_two) +"OI" = ( +/obj/effect/decal/cleanable/dirt, +/turf/simulated/floor/tiled/steel_dirty, +/area/rnd/research_storage) "OL" = ( /obj/machinery/atmospherics/pipe/simple/hidden/supply{ dir = 10 @@ -17804,6 +16555,16 @@ /obj/random/maintenance/clean, /turf/simulated/floor, /area/maintenance/lower/bar) +"OP" = ( +/obj/machinery/hologram/holopad, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/turf/simulated/floor/tiled/techfloor/grid, +/area/engineering/drone_fabrication) "OQ" = ( /obj/structure/cable{ d1 = 4; @@ -17820,17 +16581,126 @@ /obj/machinery/door/firedoor/glass, /turf/simulated/floor/plating, /area/tether/surfacebase/public_garden_two) +"OR" = ( +/obj/effect/floor_decal/borderfloor/shifted, +/obj/effect/floor_decal/corner/blue/border/shifted, +/obj/effect/floor_decal/corner/yellow{ + icon_state = "corner_white"; + dir = 10 + }, +/obj/machinery/atmospherics/portables_connector{ + dir = 1 + }, +/obj/machinery/portable_atmospherics/powered/pump/filled, +/turf/simulated/floor/tiled, +/area/engineering/lower/lobby) +"OS" = ( +/obj/effect/floor_decal/rust, +/turf/simulated/floor/plating, +/area/maintenance/lower/atmos) +"OT" = ( +/obj/structure/table/rack, +/obj/item/device/flashlight, +/obj/random/maintenance/clean, +/obj/random/maintenance/clean, +/obj/structure/catwalk, +/obj/effect/decal/cleanable/dirt, +/turf/simulated/floor/plating, +/area/maintenance/lower/atmos) +"OU" = ( +/obj/structure/catwalk, +/obj/structure/bed/chair, +/turf/simulated/floor/plating, +/area/maintenance/lower/atmos) +"OX" = ( +/obj/effect/floor_decal/borderfloor{ + dir = 4 + }, +/obj/effect/floor_decal/corner/yellow/border{ + icon_state = "bordercolor"; + dir = 4 + }, +/obj/structure/table/standard, +/obj/item/device/suit_cooling_unit, +/obj/item/device/suit_cooling_unit, +/turf/simulated/floor/tiled, +/area/engineering/lower/atmos_eva) "OZ" = ( /obj/effect/floor_decal/corner_techfloor_grid{ dir = 10 }, /turf/simulated/floor/tiled/techfloor, /area/maintenance/lower/bar) +"Pa" = ( +/obj/machinery/light/small{ + icon_state = "bulb1"; + dir = 1 + }, +/obj/effect/decal/cleanable/dirt, +/turf/simulated/floor/plating, +/area/maintenance/lower/atmos) +"Pb" = ( +/obj/structure/grille, +/obj/structure/window/reinforced/full, +/obj/structure/window/reinforced, +/turf/simulated/floor/plating, +/area/maintenance/lower/atmos) +"Pc" = ( +/obj/effect/floor_decal/techfloor{ + dir = 5 + }, +/turf/simulated/floor/tiled/techfloor, +/area/server) "Pd" = ( /obj/effect/decal/cleanable/dirt, /obj/item/weapon/newspaper, /turf/simulated/floor, /area/maintenance/lower/bar) +"Pe" = ( +/obj/structure/catwalk, +/obj/effect/decal/cleanable/dirt, +/turf/simulated/floor/tiled/techfloor, +/area/maintenance/lower/atmos) +"Pi" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/cyan{ + dir = 6; + icon_state = "intact" + }, +/turf/simulated/floor/tiled, +/area/engineering/lower/lobby) +"Pj" = ( +/obj/effect/floor_decal/borderfloor, +/obj/machinery/firealarm{ + dir = 1; + pixel_x = 0; + pixel_y = -26 + }, +/obj/effect/floor_decal/corner/yellow/border, +/turf/simulated/floor/tiled/techmaint, +/area/tether/surfacebase/atrium_two) +"Pl" = ( +/obj/effect/floor_decal/borderfloor{ + dir = 4 + }, +/obj/machinery/atmospherics/unary/vent_pump/on{ + dir = 8 + }, +/obj/effect/floor_decal/corner/yellow/border{ + icon_state = "bordercolor"; + dir = 4 + }, +/obj/effect/floor_decal/borderfloor/corner2{ + dir = 5 + }, +/obj/effect/floor_decal/corner/yellow/bordercorner2{ + icon_state = "bordercolorcorner2"; + dir = 5 + }, +/turf/simulated/floor/tiled, +/area/engineering/lower/atmos_eva) +"Pm" = ( +/turf/simulated/floor/tiled/dark, +/area/engineering/lower/breakroom) "Po" = ( /obj/machinery/atmospherics/pipe/simple/hidden/supply{ dir = 5 @@ -17846,9 +16716,66 @@ }, /turf/simulated/floor/tiled, /area/tether/surfacebase/public_garden_two) +"Pp" = ( +/obj/effect/floor_decal/borderfloor{ + dir = 4 + }, +/obj/effect/floor_decal/corner/mauve/border{ + dir = 4 + }, +/obj/structure/closet/secure_closet/personal, +/obj/machinery/requests_console{ + department = "Science"; + departmentType = 2; + name = "Science Requests Console"; + pixel_x = 30; + pixel_y = 0 + }, +/turf/simulated/floor/tiled, +/area/rnd/research) +"Ps" = ( +/obj/machinery/light/small{ + dir = 8 + }, +/obj/structure/railing{ + dir = 4 + }, +/obj/random/junk, +/obj/effect/decal/cleanable/dirt, +/turf/simulated/floor/plating, +/area/maintenance/lower/atmos) +"Pv" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/turf/simulated/floor/tiled, +/area/janitor) +"Pw" = ( +/obj/structure/catwalk, +/obj/structure/table/steel, +/obj/effect/decal/cleanable/dirt, +/obj/item/weapon/flame/candle, +/turf/simulated/floor/plating, +/area/maintenance/lower/atmos) "Py" = ( /turf/simulated/floor, /area/maintenance/lower/bar) +"Pz" = ( +/obj/effect/floor_decal/borderfloor/shifted, +/obj/effect/floor_decal/corner/white/border/shifted, +/obj/effect/floor_decal/corner/yellow{ + icon_state = "corner_white"; + dir = 10 + }, +/obj/machinery/atmospherics/portables_connector{ + dir = 1 + }, +/obj/machinery/portable_atmospherics/powered/pump/filled, +/turf/simulated/floor/tiled, +/area/engineering/lower/lobby) "PC" = ( /obj/machinery/atmospherics/unary/vent_pump/on, /obj/effect/floor_decal/borderfloor/corner{ @@ -17859,6 +16786,32 @@ }, /turf/simulated/floor/tiled, /area/tether/surfacebase/public_garden_two) +"PF" = ( +/obj/effect/floor_decal/borderfloor, +/obj/effect/floor_decal/corner/yellow/border, +/obj/effect/floor_decal/borderfloor/corner2{ + dir = 9 + }, +/obj/effect/floor_decal/corner/yellow/bordercorner2{ + icon_state = "bordercolorcorner2"; + dir = 9 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/red{ + icon_state = "intact"; + dir = 4 + }, +/turf/simulated/floor/tiled, +/area/engineering/atmos) +"PG" = ( +/obj/machinery/light/small{ + icon_state = "bulb1"; + dir = 1 + }, +/obj/structure/railing, +/obj/effect/floor_decal/rust, +/obj/effect/decal/cleanable/dirt, +/turf/simulated/floor/plating, +/area/maintenance/lower/atmos) "PI" = ( /obj/structure/grille, /obj/structure/window/reinforced/full, @@ -17874,6 +16827,10 @@ }, /turf/simulated/floor/tiled/techfloor, /area/maintenance/lower/bar) +"PM" = ( +/obj/structure/catwalk, +/turf/simulated/floor/plating, +/area/maintenance/lower/south) "PP" = ( /obj/machinery/atmospherics/pipe/simple/hidden/supply{ dir = 4 @@ -17883,6 +16840,87 @@ /obj/effect/floor_decal/corner/lime/border, /turf/simulated/floor/tiled, /area/tether/surfacebase/public_garden_two) +"PQ" = ( +/obj/effect/floor_decal/corner_techfloor_grid{ + dir = 9 + }, +/obj/structure/cable{ + icon_state = "4-8" + }, +/obj/structure/catwalk, +/turf/simulated/floor/tiled/techfloor, +/area/maintenance/lower/south) +"PT" = ( +/obj/item/weapon/reagent_containers/food/drinks/bottle/vodka, +/turf/simulated/floor/plating, +/area/maintenance/lower/atmos) +"PV" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, +/turf/simulated/floor/wood, +/area/engineering/lower/breakroom) +"Qa" = ( +/obj/structure/bed/chair, +/obj/effect/decal/cleanable/dirt, +/turf/simulated/floor/plating, +/area/maintenance/lower/atmos) +"Qd" = ( +/obj/machinery/atmospherics/portables_connector{ + dir = 8 + }, +/obj/machinery/portable_atmospherics/powered/scrubber, +/turf/simulated/floor/plating, +/area/maintenance/engineering/pumpstation) +"Qe" = ( +/obj/random/junk, +/turf/simulated/floor/plating, +/area/maintenance/asmaint2) +"Qh" = ( +/obj/machinery/button/remote/blast_door{ + id = "janitor_blast"; + name = "Desk Shutters"; + pixel_x = -22; + pixel_y = 0; + pixel_z = 0 + }, +/obj/effect/floor_decal/borderfloor{ + dir = 8 + }, +/obj/effect/floor_decal/corner/purple/border{ + dir = 8 + }, +/turf/simulated/floor/tiled, +/area/janitor) +"Qj" = ( +/obj/structure/table/steel, +/obj/structure/cable/green{ + d2 = 8; + icon_state = "0-8" + }, +/obj/machinery/power/apc{ + dir = 4; + name = "east bump"; + pixel_x = 28 + }, +/turf/simulated/floor/tiled/steel_dirty, +/area/rnd/research_storage) +"Qm" = ( +/obj/machinery/door/airlock/maintenance/engi{ + name = "Pump Station" + }, +/obj/machinery/atmospherics/pipe/simple/hidden/red, +/obj/machinery/door/firedoor/glass, +/turf/simulated/floor/plating, +/area/maintenance/engineering/pumpstation) +"Qo" = ( +/turf/simulated/floor/plating, +/area/engineering/atmos/storage) +"Qq" = ( +/obj/structure/reagent_dispensers/fueltank, +/obj/structure/catwalk, +/turf/simulated/floor/plating, +/area/maintenance/lower/south) "Qr" = ( /obj/machinery/atmospherics/pipe/simple/hidden/supply{ dir = 5 @@ -17916,22 +16954,278 @@ /obj/structure/table/marble, /turf/simulated/floor/tiled, /area/tether/surfacebase/public_garden_two) +"QC" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/obj/structure/catwalk, +/turf/simulated/floor/tiled/techfloor, +/area/maintenance/asmaint2) +"QD" = ( +/obj/effect/floor_decal/techfloor{ + dir = 8 + }, +/turf/simulated/floor/tiled/techfloor, +/area/maintenance/asmaint2) +"QF" = ( +/obj/effect/floor_decal/borderfloor{ + dir = 4 + }, +/obj/machinery/light/small{ + dir = 4; + pixel_y = 0 + }, +/turf/simulated/floor/tiled/techmaint, +/area/tether/surfacebase/east_stairs_two) +"QH" = ( +/obj/structure/cable/cyan{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, +/turf/simulated/floor/tiled, +/area/engineering/lower/lobby) +"QJ" = ( +/obj/effect/floor_decal/techfloor{ + dir = 1 + }, +/obj/structure/railing, +/turf/simulated/floor/tiled/techfloor, +/area/maintenance/lower/atmos) "QM" = ( /obj/machinery/portable_atmospherics/powered/scrubber, /obj/effect/decal/cleanable/dirt, /turf/simulated/floor/plating, /area/tether/surfacebase/public_garden_two) +"QQ" = ( +/obj/structure/cable/cyan{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/obj/machinery/door/firedoor/glass, +/obj/machinery/door/airlock/maintenance/int{ + name = "Emergency Storage"; + req_one_access = list() + }, +/turf/simulated/floor/plating, +/area/tether/surfacebase/emergency_storage/atmos) +"QR" = ( +/obj/machinery/atmospherics/unary/vent_pump/on, +/obj/machinery/light_switch{ + dir = 4; + pixel_x = -28 + }, +/obj/effect/floor_decal/borderfloor{ + dir = 8 + }, +/obj/effect/floor_decal/corner/purple/border{ + dir = 8 + }, +/obj/effect/floor_decal/borderfloor/corner2{ + dir = 10; + icon_state = "borderfloorcorner2"; + pixel_x = 0 + }, +/obj/effect/floor_decal/corner/purple/bordercorner2{ + icon_state = "bordercolorcorner2"; + dir = 10 + }, +/turf/simulated/floor/tiled, +/area/janitor) +"QT" = ( +/obj/effect/floor_decal/techfloor{ + dir = 10 + }, +/obj/machinery/camera/network/research{ + dir = 1 + }, +/obj/machinery/firealarm{ + dir = 8; + pixel_x = -24 + }, +/turf/simulated/floor/tiled/techfloor, +/area/server) +"QV" = ( +/turf/simulated/open, +/area/maintenance/lower/atmos) +"QZ" = ( +/obj/machinery/pros_fabricator{ + desc = "A machine used for construction of legit prosthetics. You weren't sure if cardboard was considered an engineering material until now."; + dir = 4; + emagged = 0; + mat_efficiency = 0.9; + name = "Legitimate Prosthetics Fabricator"; + res_max_amount = 150000; + speed = 0.2 + }, +/turf/simulated/floor/plating, +/area/maintenance/lower/atmos) "Rc" = ( /obj/structure/table/rack/holorack, /obj/random/maintenance/clean, /turf/simulated/floor/plating, /area/tether/surfacebase/public_garden_two) +"Rd" = ( +/obj/structure/cable{ + d1 = 1; + d2 = 4; + icon_state = "1-4" + }, +/turf/simulated/floor/tiled, +/area/janitor) +"Rf" = ( +/obj/effect/floor_decal/borderfloor{ + dir = 6 + }, +/obj/effect/floor_decal/corner/yellow/border{ + icon_state = "bordercolor"; + dir = 6 + }, +/obj/effect/floor_decal/borderfloor/corner2, +/obj/effect/floor_decal/corner/yellow/bordercorner2, +/turf/simulated/floor/tiled, +/area/engineering/lower/lobby) +"Rg" = ( +/obj/structure/cable/cyan{ + d1 = 1; + d2 = 8; + icon_state = "1-8" + }, +/obj/structure/cable/cyan{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/obj/machinery/atmospherics/pipe/simple/hidden/cyan{ + dir = 5; + icon_state = "intact" + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/turf/simulated/floor/tiled, +/area/engineering/atmos) +"Ri" = ( +/obj/structure/closet/crate/freezer, +/obj/machinery/light/small{ + dir = 4 + }, +/turf/simulated/floor/plating, +/area/maintenance/lower/atmos) +"Rj" = ( +/obj/effect/floor_decal/techfloor{ + dir = 1 + }, +/obj/structure/railing, +/obj/effect/decal/cleanable/dirt, +/turf/simulated/floor/tiled/techfloor, +/area/maintenance/lower/atmos) "Rl" = ( /obj/structure/window/reinforced{ dir = 4 }, /turf/simulated/floor/tiled, /area/tether/surfacebase/public_garden_two) +"Ro" = ( +/obj/structure/railing, +/obj/structure/railing{ + dir = 8 + }, +/turf/simulated/floor/plating, +/area/maintenance/lower/south) +"Rp" = ( +/obj/structure/cable/cyan{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/obj/effect/floor_decal/borderfloor{ + dir = 1; + icon_state = "borderfloor"; + pixel_y = 0 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/obj/effect/floor_decal/corner/yellow/border{ + icon_state = "bordercolor"; + dir = 1 + }, +/obj/effect/floor_decal/borderfloor/corner2{ + dir = 4 + }, +/obj/effect/floor_decal/corner/yellow/bordercorner2{ + icon_state = "bordercolorcorner2"; + dir = 4 + }, +/obj/machinery/door/firedoor/glass/hidden/steel{ + dir = 2 + }, +/turf/simulated/floor/tiled, +/area/engineering/atmos) +"Rq" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/turf/simulated/floor/tiled/techmaint, +/area/tether/surfacebase/east_stairs_two) +"Rs" = ( +/obj/structure/railing{ + dir = 8 + }, +/obj/effect/decal/cleanable/dirt, +/turf/simulated/floor/plating, +/area/maintenance/lower/atmos) +"Rx" = ( +/obj/effect/floor_decal/borderfloor{ + dir = 8 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/structure/disposalpipe/segment, +/obj/machinery/door/firedoor/border_only, +/obj/machinery/door/airlock/multi_tile/glass, +/turf/simulated/floor/tiled/techmaint, +/area/tether/surfacebase/east_stairs_two) +"Rz" = ( +/obj/structure/cable/green{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/obj/machinery/door/firedoor/glass, +/obj/machinery/door/airlock/command{ + name = "Server Room"; + req_access = list(30) + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/turf/simulated/floor/tiled/steel_grid, +/area/server) +"RF" = ( +/turf/simulated/mineral, +/area/maintenance/lower/atmos) +"RK" = ( +/obj/machinery/door/firedoor/glass, +/obj/structure/grille, +/obj/structure/window/reinforced/full, +/turf/simulated/floor/plating, +/area/engineering/lower/breakroom) "RL" = ( /obj/machinery/firealarm{ dir = 2; @@ -17947,25 +17241,134 @@ }, /turf/simulated/floor/tiled, /area/tether/surfacebase/public_garden_two) -"Sv" = ( -/obj/machinery/door/airlock/maintenance/engi, -/obj/structure/cable{ - d1 = 4; - d2 = 8; - icon_state = "4-8" +"RN" = ( +/obj/machinery/door/firedoor/glass, +/obj/structure/simple_door/wood, +/turf/simulated/floor/wood, +/area/maintenance/lower/atmos) +"RR" = ( +/obj/structure/catwalk, +/obj/effect/floor_decal/rust, +/obj/effect/decal/cleanable/dirt, +/turf/simulated/floor/plating, +/area/maintenance/lower/south) +"RU" = ( +/obj/effect/decal/cleanable/dirt, +/turf/simulated/floor/plating, +/area/maintenance/asmaint2) +"RY" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 }, /obj/machinery/atmospherics/pipe/simple/hidden/supply{ dir = 4 }, +/obj/structure/catwalk, +/obj/effect/floor_decal/techfloor, +/turf/simulated/floor/tiled/techfloor, +/area/maintenance/asmaint2) +"RZ" = ( +/obj/effect/floor_decal/borderfloor/shifted, +/obj/effect/floor_decal/corner/white/border/shifted, +/obj/effect/floor_decal/corner/yellow{ + icon_state = "corner_white"; + dir = 10 + }, +/obj/structure/flora/pottedplant/subterranean, +/turf/simulated/floor/tiled, +/area/engineering/lower/lobby) +"Sa" = ( +/obj/structure/cable/cyan{ + d2 = 2; + icon_state = "0-2" + }, +/obj/machinery/power/apc{ + dir = 1; + name = "north bump"; + pixel_x = 0; + pixel_y = 28 + }, +/obj/effect/floor_decal/borderfloor{ + dir = 1; + icon_state = "borderfloor"; + pixel_y = 0 + }, +/obj/effect/floor_decal/corner/yellow/border{ + icon_state = "bordercolor"; + dir = 1 + }, +/obj/machinery/vending/engivend, +/turf/simulated/floor/tiled, +/area/engineering/lower/atmos_lockers) +"Sg" = ( +/obj/machinery/vending/assist, +/turf/simulated/floor/plating, +/area/maintenance/lower/atmos) +"Sk" = ( +/obj/effect/floor_decal/techfloor/corner{ + dir = 4 + }, +/obj/effect/floor_decal/techfloor/corner{ + dir = 4 + }, +/turf/simulated/floor/tiled/techfloor, +/area/server) +"Sl" = ( +/obj/effect/floor_decal/borderfloor, +/obj/effect/floor_decal/corner/yellow/border, +/obj/machinery/atmospherics/pipe/simple/hidden/red{ + icon_state = "intact"; + dir = 4 + }, +/obj/machinery/camera/network/engineering{ + dir = 1 + }, +/turf/simulated/floor/tiled, +/area/engineering/atmos) +"Sp" = ( +/obj/structure/cable/cyan{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/obj/effect/floor_decal/borderfloor{ + dir = 1; + icon_state = "borderfloor"; + pixel_y = 0 + }, /obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ dir = 4 }, -/turf/simulated/floor/plating, -/area/gateway) +/obj/effect/floor_decal/corner/yellow/border{ + icon_state = "bordercolor"; + dir = 1 + }, +/obj/machinery/atmospherics/pipe/manifold/hidden/supply{ + dir = 1 + }, +/turf/simulated/floor/tiled, +/area/engineering/atmos) +"Su" = ( +/obj/machinery/alarm{ + dir = 4; + icon_state = "alarm0"; + pixel_x = -22; + pixel_y = 0 + }, +/turf/simulated/floor/wood, +/area/maintenance/lower/atmos) "Sy" = ( /obj/structure/sign/poster, /turf/simulated/wall, /area/tether/surfacebase/public_garden_two) +"SA" = ( +/obj/structure/catwalk, +/obj/effect/decal/cleanable/dirt, +/obj/machinery/light/small{ + dir = 8 + }, +/turf/simulated/floor/plating, +/area/maintenance/lower/south) "SE" = ( /obj/structure/table/standard{ name = "plastic table frame" @@ -17978,6 +17381,12 @@ }, /turf/simulated/floor/tiled, /area/tether/surfacebase/public_garden_two) +"SG" = ( +/obj/effect/floor_decal/rust, +/obj/machinery/light/small, +/obj/effect/decal/cleanable/dirt, +/turf/simulated/floor/tiled/steel_dirty, +/area/rnd/research_storage) "SH" = ( /obj/structure/window/reinforced{ dir = 1 @@ -17992,6 +17401,30 @@ }, /turf/simulated/floor/tiled, /area/tether/surfacebase/public_garden_two) +"SJ" = ( +/obj/effect/floor_decal/techfloor{ + dir = 8 + }, +/turf/simulated/floor/tiled/techfloor, +/area/server) +"SP" = ( +/obj/effect/floor_decal/borderfloor{ + dir = 8 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/structure/disposalpipe/segment, +/turf/simulated/floor/tiled/techmaint, +/area/tether/surfacebase/east_stairs_two) +"SR" = ( +/obj/structure/cable/green{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/obj/effect/decal/cleanable/dirt, +/turf/simulated/floor/tiled/steel_dirty, +/area/rnd/research_storage) "SS" = ( /obj/structure/table/standard{ name = "plastic table frame" @@ -18008,6 +17441,195 @@ }, /turf/simulated/floor/tiled, /area/tether/surfacebase/public_garden_two) +"SV" = ( +/obj/structure/bed/chair, +/obj/effect/floor_decal/rust, +/turf/simulated/floor/plating, +/area/maintenance/lower/atmos) +"SY" = ( +/obj/structure/catwalk, +/obj/machinery/light, +/turf/simulated/open, +/area/engineering/atmos) +"SZ" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/item/weapon/stool/padded, +/obj/effect/landmark/start{ + name = "Janitor" + }, +/turf/simulated/floor/tiled, +/area/janitor) +"Ta" = ( +/obj/effect/floor_decal/borderfloor, +/obj/effect/floor_decal/corner/yellow/border, +/obj/structure/closet/hydrant{ + pixel_y = -32 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/red{ + icon_state = "intact"; + dir = 4 + }, +/obj/machinery/door/firedoor/glass/hidden/steel{ + dir = 1 + }, +/turf/simulated/floor/tiled, +/area/engineering/atmos) +"Tk" = ( +/obj/machinery/atmospherics/pipe/manifold/hidden/red{ + icon_state = "map"; + dir = 8 + }, +/turf/simulated/floor/plating, +/area/maintenance/engineering/pumpstation) +"Tn" = ( +/turf/simulated/wall/r_wall, +/area/engineering/drone_fabrication) +"Tp" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/red{ + icon_state = "intact"; + dir = 4 + }, +/obj/effect/floor_decal/borderfloor, +/obj/effect/floor_decal/corner/yellow/border, +/obj/effect/floor_decal/borderfloor/corner2{ + dir = 9 + }, +/obj/effect/floor_decal/corner/yellow/bordercorner2{ + icon_state = "bordercolorcorner2"; + dir = 9 + }, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/turf/simulated/floor/tiled, +/area/engineering/atmos) +"Ts" = ( +/obj/effect/floor_decal/techfloor, +/obj/structure/catwalk, +/turf/simulated/floor/tiled/techfloor, +/area/maintenance/lower/atmos) +"Tt" = ( +/obj/effect/floor_decal/borderfloor{ + dir = 4 + }, +/obj/effect/floor_decal/borderfloor/corner2{ + dir = 6 + }, +/turf/simulated/floor/tiled/techmaint, +/area/tether/surfacebase/east_stairs_two) +"Tv" = ( +/obj/machinery/floodlight, +/obj/effect/decal/cleanable/dirt, +/turf/simulated/floor/plating, +/area/tether/surfacebase/emergency_storage/atmos) +"Tx" = ( +/obj/machinery/light/small, +/obj/structure/catwalk, +/turf/simulated/floor/plating, +/area/maintenance/lower/atmos) +"Ty" = ( +/obj/effect/floor_decal/borderfloor, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/obj/effect/floor_decal/corner/yellow/border, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/turf/simulated/floor/tiled, +/area/engineering/atmos) +"Tz" = ( +/obj/structure/railing{ + dir = 8 + }, +/obj/structure/railing{ + dir = 1 + }, +/obj/structure/closet/crate, +/obj/random/maintenance/clean, +/obj/random/maintenance/engineering, +/obj/effect/decal/cleanable/dirt, +/turf/simulated/floor/plating, +/area/maintenance/lower/atmos) +"TA" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 9; + pixel_y = 0 + }, +/turf/simulated/floor/tiled/steel_dirty, +/area/rnd/research_storage) +"TD" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 9 + }, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/turf/simulated/floor/tiled, +/area/janitor) +"TE" = ( +/obj/structure/railing{ + dir = 1 + }, +/obj/structure/closet, +/obj/random/maintenance/clean, +/obj/random/maintenance/clean, +/turf/simulated/floor/plating, +/area/maintenance/lower/south) +"TG" = ( +/obj/structure/table/steel, +/obj/item/weapon/locator, +/obj/effect/floor_decal/rust, +/obj/machinery/firealarm{ + dir = 4; + layer = 3.3; + pixel_x = 26 + }, +/turf/simulated/floor/tiled/steel_dirty, +/area/rnd/research_storage) +"TN" = ( +/obj/structure/table/steel, +/obj/item/weapon/paper_bin, +/turf/simulated/floor/plating, +/area/maintenance/lower/atmos) +"TQ" = ( +/obj/structure/cable/cyan{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/obj/effect/floor_decal/borderfloor{ + dir = 1; + icon_state = "borderfloor"; + pixel_y = 0 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/obj/effect/floor_decal/corner/yellow/border{ + icon_state = "bordercolor"; + dir = 1 + }, +/turf/simulated/floor/tiled, +/area/engineering/atmos) +"TU" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/red{ + icon_state = "intact"; + dir = 5 + }, +/turf/simulated/floor/tiled, +/area/engineering/lower/lobby) "TV" = ( /obj/machinery/light{ dir = 1 @@ -18020,13 +17642,128 @@ }, /turf/simulated/floor/tiled, /area/tether/surfacebase/public_garden_two) +"TW" = ( +/turf/simulated/wall, +/area/engineering/lower/atmos_eva) +"TX" = ( +/obj/machinery/light/small{ + dir = 4 + }, +/obj/structure/catwalk, +/obj/effect/decal/cleanable/dirt, +/turf/simulated/floor/plating, +/area/maintenance/lower/atmos) +"TY" = ( +/obj/structure/table/steel, +/obj/item/weapon/implantcase/chem, +/obj/effect/floor_decal/rust, +/turf/simulated/floor/tiled/steel_dirty, +/area/rnd/research_storage) +"TZ" = ( +/obj/structure/cable/cyan{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/obj/effect/floor_decal/industrial/warning, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 6 + }, +/obj/machinery/recharge_station, +/obj/machinery/alarm{ + pixel_y = 22 + }, +/turf/simulated/floor/plating, +/area/engineering/drone_fabrication) +"Uc" = ( +/obj/structure/table/steel, +/obj/item/clothing/glasses/sunglasses/blindfold, +/turf/simulated/floor/plating, +/area/maintenance/lower/south) +"Ud" = ( +/obj/structure/table/rack/shelf/steel, +/obj/item/weapon/reagent_containers/food/drinks/bottle/vermouth, +/obj/item/weapon/reagent_containers/food/drinks/bottle/rum, +/obj/item/weapon/reagent_containers/food/drinks/bottle/cognac, +/turf/simulated/floor/wood, +/area/maintenance/lower/atmos) +"Uf" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/turf/simulated/floor/tiled, +/area/engineering/lower/atmos_lockers) "Uh" = ( /turf/simulated/floor/tiled, /area/tether/surfacebase/public_garden_two) +"Ui" = ( +/obj/structure/railing{ + dir = 8 + }, +/obj/random/junk, +/obj/effect/decal/cleanable/dirt, +/turf/simulated/floor/plating, +/area/maintenance/lower/atmos) "Uk" = ( /obj/structure/symbol/gu, /turf/simulated/wall, /area/tether/surfacebase/public_garden_two) +"Ul" = ( +/obj/structure/cable{ + icon_state = "4-8" + }, +/turf/simulated/floor/tiled, +/area/janitor) +"Ur" = ( +/obj/machinery/door/firedoor/glass, +/obj/structure/grille, +/obj/structure/window/reinforced/full, +/obj/structure/window/reinforced{ + dir = 8 + }, +/turf/simulated/floor/plating, +/area/rnd/research_storage) +"Ut" = ( +/obj/structure/disposalpipe/segment{ + dir = 1; + icon_state = "pipe-c" + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/turf/simulated/floor/plating, +/area/maintenance/asmaint2) +"Uu" = ( +/obj/structure/railing{ + dir = 1 + }, +/obj/effect/floor_decal/rust, +/obj/effect/decal/cleanable/dirt, +/turf/simulated/floor/plating, +/area/maintenance/lower/south) +"Uw" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/machinery/door/firedoor/border_only, +/obj/machinery/door/airlock{ + name = "Custodial Closet"; + req_access = list(26) + }, +/turf/simulated/floor/tiled, +/area/janitor) +"Uy" = ( +/obj/structure/table/steel, +/obj/random/medical/pillbottle, +/obj/machinery/light/small{ + dir = 8 + }, +/obj/random/tech_supply, +/turf/simulated/floor/tiled/techfloor, +/area/maintenance/lower/atmos) "UB" = ( /obj/machinery/power/apc{ dir = 1; @@ -18045,6 +17782,39 @@ }, /turf/simulated/floor/tiled, /area/tether/surfacebase/public_garden_two) +"UD" = ( +/obj/structure/railing, +/turf/simulated/floor/plating, +/area/maintenance/asmaint2) +"UG" = ( +/obj/machinery/alarm{ + frequency = 1441; + pixel_y = 22 + }, +/obj/structure/catwalk, +/turf/simulated/floor/plating, +/area/maintenance/lower/south) +"UH" = ( +/obj/machinery/power/apc{ + dir = 1; + name = "north bump"; + pixel_x = 0; + pixel_y = 28 + }, +/obj/structure/cable/cyan{ + d2 = 4; + icon_state = "0-4" + }, +/obj/effect/floor_decal/industrial/warning, +/obj/machinery/recharge_station, +/turf/simulated/floor/plating, +/area/engineering/drone_fabrication) +"UI" = ( +/obj/machinery/door/firedoor/glass, +/obj/structure/catwalk, +/obj/machinery/door/airlock/maintenance/common, +/turf/simulated/floor/plating, +/area/maintenance/lower/south) "UJ" = ( /obj/effect/decal/cleanable/dirt, /obj/machinery/alarm{ @@ -18057,23 +17827,96 @@ /obj/random/maintenance/clean, /turf/simulated/floor, /area/maintenance/lower/bar) -"UX" = ( -/obj/structure/cable{ - d1 = 4; - d2 = 8; - icon_state = "4-8" - }, -/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{ +"UN" = ( +/turf/simulated/floor/plating, +/area/maintenance/lower/atmos) +"US" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/structure/disposalpipe/segment, +/turf/simulated/floor/tiled, +/area/engineering/atmos/monitoring) +"UT" = ( +/obj/structure/plushie/drone{ + icon_state = "droneplushie"; dir = 1 }, -/obj/machinery/atmospherics/pipe/manifold/hidden/supply{ +/turf/simulated/floor/wood, +/area/maintenance/lower/atmos) +"UW" = ( +/obj/random/junk, +/obj/effect/decal/cleanable/dirt, +/turf/simulated/floor/plating, +/area/maintenance/lower/atmos) +"Va" = ( +/obj/effect/floor_decal/borderfloor{ + dir = 1; + icon_state = "borderfloor"; + pixel_y = 0 + }, +/obj/effect/floor_decal/corner/yellow/border{ + icon_state = "bordercolor"; dir = 1 }, +/obj/effect/floor_decal/borderfloor/corner2{ + dir = 1 + }, +/obj/effect/floor_decal/corner/yellow/bordercorner2{ + icon_state = "bordercolorcorner2"; + dir = 1 + }, +/obj/structure/table/standard, +/obj/item/taperoll/atmos, +/obj/random/tech_supply, +/obj/random/tool, +/turf/simulated/floor/tiled, +/area/engineering/atmos/monitoring) +"Vb" = ( +/obj/structure/ladder, +/turf/simulated/floor/plating, +/area/maintenance/asmaint2) +"Vd" = ( +/obj/machinery/light_switch{ + pixel_y = -28 + }, +/obj/machinery/computer/security/engineering{ + dir = 4 + }, +/turf/simulated/floor/tiled/dark, +/area/engineering/lower/breakroom) +"Ve" = ( +/obj/structure/railing, +/obj/effect/floor_decal/techfloor{ + dir = 1 + }, +/obj/machinery/atmospherics/pipe/simple/visible/scrubbers{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/visible/supply{ + dir = 4 + }, /obj/structure/cable{ icon_state = "2-4" }, +/turf/simulated/floor/tiled/techfloor, +/area/maintenance/lower/south) +"Vf" = ( +/obj/structure/railing{ + dir = 8 + }, +/obj/structure/railing{ + dir = 1 + }, +/obj/random/trash_pile, +/obj/effect/decal/cleanable/dirt, /turf/simulated/floor/plating, -/area/tether/surfacebase/public_garden_two) +/area/maintenance/lower/south) +"Vj" = ( +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/turf/simulated/floor/tiled, +/area/engineering/atmos) "Vk" = ( /obj/structure/cable{ icon_state = "4-8" @@ -18093,10 +17936,150 @@ }, /turf/simulated/floor/tiled, /area/tether/surfacebase/public_garden_two) +"Vl" = ( +/obj/effect/floor_decal/borderfloor{ + dir = 8 + }, +/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{ + dir = 8 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/structure/disposalpipe/segment, +/turf/simulated/floor/tiled/techmaint, +/area/tether/surfacebase/east_stairs_two) +"Vn" = ( +/obj/structure/sign/warning/caution{ + name = "\improper CAUTION - DANGEROUS EQUIPMENT AND DROPS" + }, +/turf/simulated/wall, +/area/engineering/lower/lobby) +"Vo" = ( +/obj/effect/landmark{ + name = "lightsout" + }, +/turf/simulated/open, +/area/engineering/atmos) +"Vr" = ( +/obj/effect/floor_decal/borderfloor{ + dir = 8 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/structure/disposalpipe/segment, +/obj/machinery/light/small{ + dir = 8 + }, +/obj/structure/cable{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/turf/simulated/floor/tiled/techmaint, +/area/tether/surfacebase/east_stairs_two) +"Vv" = ( +/obj/structure/closet, +/obj/item/clothing/under/schoolgirl, +/turf/simulated/floor/wood, +/area/maintenance/lower/atmos) +"Vw" = ( +/obj/structure/railing{ + dir = 4 + }, +/obj/random/trash_pile, +/turf/simulated/floor/plating, +/area/maintenance/lower/atmos) "Vx" = ( /obj/effect/decal/cleanable/dirt, /turf/simulated/floor, /area/maintenance/lower/bar) +"Vy" = ( +/obj/machinery/newscaster{ + pixel_y = 32 + }, +/obj/effect/floor_decal/borderfloor/shifted{ + icon_state = "borderfloor_shifted"; + dir = 1 + }, +/obj/effect/floor_decal/corner/purple/border/shifted{ + icon_state = "bordercolor_shifted"; + dir = 1 + }, +/obj/effect/floor_decal/corner/purple{ + icon_state = "corner_white"; + dir = 5 + }, +/obj/structure/mopbucket, +/obj/item/weapon/mop, +/obj/item/weapon/reagent_containers/glass/bucket, +/turf/simulated/floor/tiled, +/area/janitor) +"Vz" = ( +/obj/effect/floor_decal/borderfloor{ + dir = 10 + }, +/obj/effect/floor_decal/corner/purple/border{ + dir = 10 + }, +/obj/effect/floor_decal/borderfloor/corner2{ + dir = 8 + }, +/obj/effect/floor_decal/corner/purple/bordercorner2{ + icon_state = "bordercolorcorner2"; + dir = 8 + }, +/obj/structure/closet/jcloset, +/obj/item/weapon/soap/nanotrasen, +/turf/simulated/floor/tiled, +/area/janitor) +"VA" = ( +/turf/simulated/wall, +/area/maintenance/lower/atmos) +"VC" = ( +/obj/structure/table/steel, +/obj/random/medical/lite, +/turf/simulated/floor/tiled/techfloor, +/area/maintenance/lower/atmos) +"VD" = ( +/obj/structure/closet/crate, +/obj/random/contraband, +/turf/simulated/floor/wood, +/area/maintenance/lower/atmos) +"VE" = ( +/obj/structure/cable{ + d2 = 2; + icon_state = "0-2" + }, +/obj/machinery/power/apc{ + dir = 1; + name = "north bump"; + pixel_x = 0; + pixel_y = 24 + }, +/obj/effect/floor_decal/borderfloor/shifted{ + icon_state = "borderfloor_shifted"; + dir = 1 + }, +/obj/effect/floor_decal/corner/purple/border/shifted{ + icon_state = "bordercolor_shifted"; + dir = 1 + }, +/obj/effect/floor_decal/corner/purple{ + icon_state = "corner_white"; + dir = 5 + }, +/obj/structure/janitorialcart, +/turf/simulated/floor/tiled, +/area/janitor) +"VF" = ( +/obj/structure/railing{ + dir = 8 + }, +/obj/structure/railing{ + dir = 1 + }, +/obj/effect/decal/cleanable/dirt, +/turf/simulated/floor/plating, +/area/maintenance/lower/atmos) "VM" = ( /obj/machinery/reagentgrinder, /obj/structure/table/standard{ @@ -18110,9 +18093,145 @@ }, /turf/simulated/floor/tiled, /area/tether/surfacebase/public_garden_two) +"VO" = ( +/obj/machinery/alarm{ + frequency = 1441; + pixel_y = 22 + }, +/obj/item/weapon/bananapeel, +/turf/simulated/floor/plating, +/area/maintenance/lower/atmos) +"VQ" = ( +/obj/item/weapon/contraband/poster, +/turf/simulated/floor/wood, +/area/maintenance/lower/atmos) "VR" = ( /turf/simulated/floor/outdoors/rocks/virgo3b, /area/tether/surfacebase/outside/outside2) +"VS" = ( +/obj/machinery/atmospherics/pipe/simple/visible/scrubbers{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/visible/supply{ + dir = 4 + }, +/obj/effect/floor_decal/rust, +/obj/effect/decal/cleanable/dirt, +/turf/simulated/floor/plating, +/area/maintenance/lower/south) +"VT" = ( +/obj/effect/floor_decal/borderfloor{ + dir = 4 + }, +/obj/effect/floor_decal/borderfloor/corner2{ + dir = 5 + }, +/obj/machinery/light{ + dir = 4; + icon_state = "tube1"; + pixel_x = 0 + }, +/turf/simulated/floor/tiled/techmaint, +/area/tether/surfacebase/east_stairs_two) +"VY" = ( +/obj/structure/bed/chair, +/obj/random/junk, +/turf/simulated/floor/plating, +/area/maintenance/lower/atmos) +"VZ" = ( +/obj/structure/table/steel, +/obj/item/clothing/accessory/collar/pink, +/obj/item/clothing/accessory/collar/shock, +/turf/simulated/floor/plating, +/area/maintenance/lower/south) +"Wa" = ( +/obj/structure/table/steel, +/obj/item/clothing/mask/muzzle, +/obj/machinery/light/small{ + dir = 1 + }, +/turf/simulated/floor/plating, +/area/maintenance/lower/south) +"Wb" = ( +/obj/machinery/atmospherics/portables_connector{ + dir = 4 + }, +/obj/machinery/portable_atmospherics/powered/pump/filled, +/obj/machinery/alarm{ + dir = 4; + icon_state = "alarm0"; + pixel_x = -22 + }, +/turf/simulated/floor/plating, +/area/maintenance/engineering/pumpstation) +"We" = ( +/obj/structure/catwalk, +/obj/effect/decal/cleanable/dirt, +/turf/simulated/floor/plating, +/area/maintenance/lower/south) +"Wf" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/effect/floor_decal/rust, +/obj/structure/cable/green{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/turf/simulated/floor/tiled/steel_dirty, +/area/rnd/research_storage) +"Wg" = ( +/obj/structure/morgue, +/obj/effect/decal/cleanable/dirt, +/turf/simulated/floor/plating, +/area/maintenance/lower/atmos) +"Wh" = ( +/obj/effect/decal/cleanable/blood/oil, +/turf/simulated/floor/plating, +/area/maintenance/lower/atmos) +"Wk" = ( +/obj/machinery/computer/message_monitor{ + dir = 4 + }, +/obj/effect/floor_decal/techfloor{ + dir = 8 + }, +/turf/simulated/floor/tiled/techfloor, +/area/server) +"Wm" = ( +/obj/structure/railing{ + dir = 1 + }, +/obj/effect/decal/cleanable/dirt, +/turf/simulated/floor/plating, +/area/maintenance/lower/south) +"Wo" = ( +/obj/structure/railing{ + dir = 8 + }, +/obj/effect/floor_decal/techfloor{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/visible/supply, +/obj/machinery/atmospherics/pipe/simple/visible/scrubbers, +/obj/effect/floor_decal/rust, +/turf/simulated/floor/tiled/techfloor, +/area/maintenance/lower/south) +"Wp" = ( +/obj/item/weapon/stock_parts/console_screen, +/obj/structure/table/standard, +/obj/item/weapon/stock_parts/console_screen, +/obj/item/weapon/stock_parts/console_screen, +/obj/item/weapon/stock_parts/matter_bin, +/obj/item/weapon/stock_parts/matter_bin, +/obj/effect/floor_decal/borderfloor{ + dir = 5 + }, +/obj/effect/floor_decal/corner/mauve/border{ + dir = 5 + }, +/turf/simulated/floor/tiled, +/area/rnd/research) "Wr" = ( /obj/machinery/atmospherics/unary/vent_scrubber/on{ dir = 1 @@ -18122,6 +18241,136 @@ /obj/effect/floor_decal/corner/lime/bordercorner, /turf/simulated/floor/tiled, /area/tether/surfacebase/public_garden_two) +"Wt" = ( +/obj/structure/catwalk, +/obj/structure/bed/chair, +/obj/effect/decal/cleanable/dirt, +/turf/simulated/floor/plating, +/area/maintenance/lower/atmos) +"Wu" = ( +/obj/effect/floor_decal/borderfloor{ + dir = 4 + }, +/obj/effect/floor_decal/corner/mauve/border{ + dir = 4 + }, +/obj/structure/table/standard, +/obj/machinery/recharger{ + pixel_y = 0 + }, +/turf/simulated/floor/tiled, +/area/rnd/research) +"Wv" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/cyan, +/obj/effect/floor_decal/borderfloor, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/effect/floor_decal/corner/yellow/border, +/obj/machinery/atmospherics/pipe/simple/hidden/red{ + icon_state = "intact"; + dir = 4 + }, +/turf/simulated/floor/tiled, +/area/engineering/atmos) +"Wx" = ( +/obj/effect/floor_decal/borderfloor{ + dir = 4 + }, +/obj/effect/floor_decal/corner/yellow/border{ + icon_state = "bordercolor"; + dir = 4 + }, +/obj/effect/floor_decal/borderfloor/corner2{ + dir = 5 + }, +/obj/effect/floor_decal/corner/yellow/bordercorner2{ + icon_state = "bordercolorcorner2"; + dir = 5 + }, +/turf/simulated/floor/tiled, +/area/engineering/lower/atmos_lockers) +"Wy" = ( +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/turf/simulated/floor/plating, +/area/maintenance/asmaint2) +"WB" = ( +/obj/structure/cable/green{ + d1 = 1; + d2 = 4; + icon_state = "1-4" + }, +/obj/machinery/alarm{ + dir = 4; + icon_state = "alarm0"; + pixel_x = -22; + pixel_y = 0 + }, +/turf/simulated/floor/tiled/steel_dirty, +/area/rnd/research_storage) +"WE" = ( +/obj/machinery/atmospherics/pipe/manifold/hidden/red, +/obj/machinery/meter, +/turf/simulated/floor/tiled, +/area/engineering/lower/lobby) +"WG" = ( +/obj/structure/railing{ + dir = 1 + }, +/obj/structure/railing{ + dir = 4 + }, +/obj/effect/decal/cleanable/dirt, +/turf/simulated/floor/plating, +/area/maintenance/lower/atmos) +"WH" = ( +/obj/item/weapon/stool, +/turf/simulated/floor/tiled/techmaint, +/area/engineering/drone_fabrication) +"WI" = ( +/obj/structure/table/steel, +/obj/item/weapon/tape_roll, +/obj/item/stack/medical/bruise_pack, +/obj/effect/decal/cleanable/dirt, +/turf/simulated/floor/tiled/techfloor, +/area/maintenance/lower/atmos) +"WK" = ( +/obj/machinery/door/firedoor/glass, +/obj/machinery/door/airlock/atmos{ + name = "Atmospherics Storage"; + req_access = list(24) + }, +/turf/simulated/floor/plating, +/area/engineering/atmos/storage) +"WM" = ( +/obj/machinery/light{ + icon_state = "tube1"; + dir = 8 + }, +/obj/machinery/atmospherics/unary/vent_scrubber/on{ + dir = 1 + }, +/obj/machinery/power/apc{ + cell_type = /obj/item/weapon/cell/apc; + dir = 8; + name = "west bump"; + pixel_x = -28 + }, +/obj/structure/cable/cyan, +/turf/simulated/floor/tiled, +/area/engineering/lower/lobby) +"WN" = ( +/obj/machinery/atmospherics/pipe/manifold/hidden/cyan{ + dir = 4 + }, +/obj/structure/cable/cyan{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/turf/simulated/floor/plating, +/area/maintenance/engineering/pumpstation) "WO" = ( /obj/effect/floor_decal/borderfloor{ dir = 6 @@ -18131,12 +18380,94 @@ }, /turf/simulated/floor/tiled, /area/tether/surfacebase/public_garden_two) +"WQ" = ( +/obj/structure/catwalk, +/obj/machinery/camera/network/engineering{ + dir = 1 + }, +/turf/simulated/open, +/area/engineering/atmos) +"WR" = ( +/obj/machinery/atmospherics/unary/vent_scrubber/on, +/obj/effect/floor_decal/borderfloor{ + dir = 4 + }, +/obj/effect/floor_decal/corner/purple/border{ + dir = 4 + }, +/obj/structure/table/steel, +/obj/item/weapon/paper_bin{ + pixel_x = -3; + pixel_y = 7 + }, +/obj/item/weapon/pen, +/obj/machinery/firealarm{ + dir = 4; + pixel_x = 24 + }, +/turf/simulated/floor/tiled, +/area/janitor) +"WT" = ( +/obj/structure/bed/chair/office/light{ + dir = 8 + }, +/turf/simulated/floor/tiled, +/area/engineering/atmos/monitoring) +"WU" = ( +/obj/effect/floor_decal/borderfloor, +/obj/effect/floor_decal/corner/yellow/border, +/obj/machinery/light, +/obj/machinery/atmospherics/pipe/simple/hidden/red{ + icon_state = "intact"; + dir = 4 + }, +/obj/machinery/door/firedoor/glass/hidden/steel{ + dir = 1 + }, +/turf/simulated/floor/tiled, +/area/engineering/atmos) +"WV" = ( +/obj/item/device/camera, +/obj/structure/table/steel, +/turf/simulated/floor/plating, +/area/maintenance/lower/south) +"WW" = ( +/obj/machinery/light_switch{ + dir = 8; + pixel_x = 28 + }, +/obj/effect/floor_decal/borderfloor{ + dir = 5 + }, +/obj/effect/floor_decal/corner/yellow/border{ + icon_state = "bordercolor"; + dir = 5 + }, +/obj/structure/table/standard, +/obj/item/weapon/storage/briefcase/inflatable{ + pixel_x = 3; + pixel_y = 6 + }, +/obj/item/weapon/storage/briefcase/inflatable{ + pixel_y = 3 + }, +/obj/item/weapon/storage/briefcase/inflatable{ + pixel_x = -3 + }, +/obj/machinery/firealarm{ + dir = 2; + layer = 3.3; + pixel_x = 0; + pixel_y = 26 + }, +/turf/simulated/floor/tiled, +/area/engineering/lower/atmos_eva) "Xc" = ( /obj/structure/dogbed, /obj/effect/floor_decal/corner_techfloor_grid{ dir = 10 }, -/mob/living/simple_animal/lizard, +/mob/living/simple_mob/animal/passive/lizard, /turf/simulated/floor/tiled/techfloor, /area/maintenance/lower/bar) "Xd" = ( @@ -18168,6 +18499,33 @@ }, /turf/simulated/floor/tiled, /area/tether/surfacebase/public_garden_two) +"Xj" = ( +/obj/effect/floor_decal/borderfloor{ + dir = 1; + icon_state = "borderfloor"; + pixel_y = 0 + }, +/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{ + dir = 1 + }, +/obj/machinery/atmospherics/pipe/manifold/hidden/supply{ + dir = 1 + }, +/obj/effect/floor_decal/corner/yellow/border{ + icon_state = "bordercolor"; + dir = 1 + }, +/obj/machinery/atmospherics/pipe/manifold/hidden/cyan{ + icon_state = "map"; + dir = 1 + }, +/obj/structure/cable/cyan{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/turf/simulated/floor/tiled, +/area/engineering/atmos) "Xk" = ( /obj/structure/cable{ d1 = 4; @@ -18188,6 +18546,69 @@ }, /turf/simulated/floor/tiled, /area/tether/surfacebase/public_garden_two) +"Xm" = ( +/obj/machinery/atmospherics/unary/vent_pump/on{ + dir = 1 + }, +/turf/simulated/floor/tiled/techmaint, +/area/engineering/drone_fabrication) +"Xq" = ( +/obj/structure/catwalk, +/obj/structure/table/steel, +/obj/effect/decal/cleanable/dirt, +/obj/random/cigarettes, +/obj/item/weapon/flame/lighter/random, +/turf/simulated/floor/plating, +/area/maintenance/lower/atmos) +"Xr" = ( +/obj/effect/floor_decal/borderfloor{ + dir = 8 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/obj/machinery/atmospherics/pipe/manifold/hidden/supply{ + dir = 8 + }, +/obj/structure/disposalpipe/segment, +/turf/simulated/floor/tiled/techmaint, +/area/tether/surfacebase/east_stairs_two) +"Xu" = ( +/obj/effect/floor_decal/borderfloor{ + dir = 8 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/structure/disposalpipe/segment, +/obj/structure/cable{ + icon_state = "1-4" + }, +/turf/simulated/floor/tiled/techmaint, +/area/tether/surfacebase/east_stairs_two) +"Xv" = ( +/obj/structure/railing{ + dir = 8 + }, +/obj/structure/closet, +/obj/random/maintenance/clean, +/obj/item/stack/flag/red{ + amount = 1 + }, +/obj/item/stack/flag/blue{ + amount = 1 + }, +/obj/effect/decal/cleanable/dirt, +/turf/simulated/floor/plating, +/area/maintenance/lower/south) +"Xw" = ( +/obj/machinery/door/firedoor/border_only, +/obj/machinery/door/airlock/maintenance{ + name = "Custodial Maintenance"; + req_access = list(26) + }, +/obj/structure/cable{ + icon_state = "4-8" + }, +/turf/simulated/floor/tiled/steel_grid, +/area/janitor) "Xx" = ( /obj/structure/cable{ d1 = 4; @@ -18203,10 +18624,169 @@ /obj/effect/decal/cleanable/dirt, /turf/simulated/floor/plating, /area/tether/surfacebase/public_garden_two) +"Xy" = ( +/obj/machinery/atmospherics/pipe/manifold/hidden/cyan{ + icon_state = "map"; + dir = 1 + }, +/turf/simulated/floor/tiled, +/area/engineering/lower/lobby) +"XD" = ( +/obj/effect/floor_decal/borderfloor{ + dir = 4 + }, +/obj/effect/floor_decal/corner/mauve/border{ + dir = 4 + }, +/turf/simulated/floor/tiled, +/area/rnd/research) +"XG" = ( +/obj/structure/railing{ + dir = 1 + }, +/obj/structure/closet, +/obj/random/maintenance/clean, +/obj/random/maintenance/clean, +/obj/effect/decal/cleanable/dirt, +/turf/simulated/floor/plating, +/area/maintenance/lower/atmos) +"XI" = ( +/obj/structure/railing{ + dir = 4 + }, +/obj/effect/decal/cleanable/dirt, +/turf/simulated/floor/plating, +/area/maintenance/lower/atmos) +"XJ" = ( +/obj/item/weapon/storage/fancy/cigar/havana, +/obj/effect/decal/cleanable/dirt, +/obj/random/drinkbottle, +/turf/simulated/floor/plating, +/area/tether/surfacebase/atrium_two) +"XN" = ( +/obj/effect/floor_decal/borderfloor, +/obj/effect/floor_decal/corner/yellow/border, +/obj/effect/floor_decal/borderfloor/corner2, +/obj/effect/floor_decal/corner/yellow/bordercorner2, +/obj/machinery/atmospherics/pipe/simple/hidden/red{ + icon_state = "intact"; + dir = 4 + }, +/obj/machinery/atmospherics/unary/vent_scrubber/on{ + dir = 1 + }, +/turf/simulated/floor/tiled, +/area/engineering/atmos) +"XP" = ( +/obj/machinery/atmospherics/pipe/manifold/hidden/cyan{ + icon_state = "map"; + dir = 1 + }, +/obj/machinery/meter, +/turf/simulated/floor/tiled, +/area/engineering/lower/lobby) +"XS" = ( +/obj/machinery/light_switch{ + pixel_x = -25 + }, +/obj/effect/floor_decal/techfloor{ + dir = 9 + }, +/obj/structure/table/steel, +/turf/simulated/floor/tiled/techfloor, +/area/server) +"XT" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 5 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 5 + }, +/obj/effect/floor_decal/rust, +/obj/structure/cable/green{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/turf/simulated/floor/tiled/steel_dirty, +/area/rnd/research_storage) +"XV" = ( +/obj/effect/floor_decal/borderfloor{ + dir = 4 + }, +/obj/machinery/door/firedoor/border_only, +/turf/simulated/floor/tiled/techmaint, +/area/tether/surfacebase/east_stairs_two) +"Ya" = ( +/obj/machinery/light/small, +/obj/structure/railing{ + dir = 4 + }, +/obj/structure/railing{ + dir = 1 + }, +/obj/effect/decal/cleanable/dirt, +/obj/random/trash_pile, +/turf/simulated/floor/plating, +/area/maintenance/lower/atmos) +"Yb" = ( +/obj/item/weapon/stool, +/turf/simulated/floor/plating, +/area/maintenance/lower/atmos) +"Yc" = ( +/obj/machinery/light/small{ + dir = 8 + }, +/turf/simulated/floor/plating, +/area/maintenance/asmaint2) "Ye" = ( /obj/structure/frame/computer, /turf/simulated/floor, /area/maintenance/lower/bar) +"Yf" = ( +/obj/random/junk, +/obj/random/junk, +/obj/machinery/light/small{ + dir = 8 + }, +/turf/simulated/floor/plating, +/area/maintenance/lower/atmos) +"Yh" = ( +/turf/simulated/floor/tiled/techfloor, +/area/maintenance/lower/atmos) +"Yk" = ( +/obj/effect/floor_decal/borderfloor/shifted{ + icon_state = "borderfloor_shifted"; + dir = 1 + }, +/obj/effect/floor_decal/corner/purple/border/shifted{ + icon_state = "bordercolor_shifted"; + dir = 1 + }, +/obj/effect/floor_decal/corner/purple{ + icon_state = "corner_white"; + dir = 5 + }, +/obj/structure/janitorialcart, +/obj/structure/sink/kitchen{ + pixel_y = 28 + }, +/turf/simulated/floor/tiled, +/area/janitor) +"Yl" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/effect/floor_decal/rust, +/obj/effect/decal/cleanable/dirt, +/turf/simulated/floor/plating, +/area/maintenance/asmaint2) +"Ym" = ( +/obj/structure/table/steel, +/obj/item/bodybag, +/obj/item/bodybag, +/obj/effect/decal/cleanable/dirt, +/turf/simulated/floor/plating, +/area/maintenance/lower/atmos) "Yq" = ( /obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, /obj/effect/floor_decal/borderfloor{ @@ -18220,6 +18800,65 @@ }, /turf/simulated/floor/tiled, /area/tether/surfacebase/public_garden_two) +"Yu" = ( +/obj/effect/floor_decal/techfloor{ + dir = 5 + }, +/obj/machinery/computer/drone_control{ + icon_state = "computer"; + dir = 4 + }, +/obj/machinery/firealarm{ + dir = 8; + pixel_x = -24 + }, +/turf/simulated/floor/tiled/techfloor/grid, +/area/engineering/drone_fabrication) +"Yw" = ( +/obj/structure/railing{ + dir = 1 + }, +/turf/simulated/open, +/area/maintenance/lower/atmos) +"Yx" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/structure/cable{ + d1 = 1; + d2 = 2; + icon_state = "1-2"; + pixel_y = 0 + }, +/obj/structure/disposalpipe/segment, +/obj/effect/floor_decal/steeldecal/steel_decals4{ + dir = 5 + }, +/obj/effect/floor_decal/steeldecal/steel_decals4{ + dir = 8 + }, +/obj/effect/floor_decal/borderfloor/corner{ + dir = 8 + }, +/turf/simulated/floor/tiled/techmaint, +/area/tether/surfacebase/atrium_two) +"Yy" = ( +/obj/effect/decal/cleanable/dirt, +/obj/effect/floor_decal/rust, +/turf/simulated/floor/plating, +/area/maintenance/lower/atmos) +"YA" = ( +/obj/machinery/atmospherics/unary/vent_pump/on, +/obj/structure/closet/firecloset, +/obj/item/weapon/handcuffs, +/obj/effect/decal/cleanable/cobweb, +/turf/simulated/floor/tiled/steel_dirty, +/area/rnd/research_storage) +"YD" = ( +/obj/structure/railing{ + dir = 8 + }, +/turf/simulated/floor/plating, +/area/maintenance/lower/south) "YE" = ( /obj/effect/floor_decal/borderfloor{ dir = 4 @@ -18229,6 +18868,12 @@ }, /turf/simulated/floor/tiled, /area/tether/surfacebase/public_garden_two) +"YG" = ( +/obj/effect/floor_decal/industrial/warning{ + dir = 4 + }, +/turf/simulated/floor/tiled/techmaint, +/area/tether/surfacebase/east_stairs_two) "YH" = ( /obj/structure/window/reinforced{ dir = 4 @@ -18241,6 +18886,25 @@ }, /turf/simulated/floor/tiled, /area/tether/surfacebase/public_garden_two) +"YJ" = ( +/obj/effect/decal/cleanable/dirt, +/obj/machinery/atmospherics/pipe/manifold/hidden/red{ + icon_state = "map"; + dir = 8 + }, +/turf/simulated/floor/plating, +/area/maintenance/engineering/pumpstation) +"YK" = ( +/obj/structure/table/rack, +/obj/random/maintenance/clean, +/obj/random/toolbox, +/turf/simulated/floor/plating, +/area/maintenance/lower/south) +"YM" = ( +/obj/structure/railing, +/obj/effect/decal/cleanable/dirt, +/turf/simulated/floor/plating, +/area/maintenance/asmaint2) "YN" = ( /obj/structure/closet/hydrant{ pixel_x = -32 @@ -18270,6 +18934,78 @@ }, /turf/simulated/floor/tiled, /area/tether/surfacebase/public_garden_two) +"YU" = ( +/obj/structure/table/rack/shelf/steel, +/obj/item/weapon/reagent_containers/food/drinks/bottle/specialwhiskey, +/obj/item/weapon/reagent_containers/food/drinks/bottle/tequilla, +/obj/item/weapon/reagent_containers/food/drinks/bottle/absinthe, +/turf/simulated/floor/plating, +/area/maintenance/lower/atmos) +"YX" = ( +/obj/structure/catwalk, +/obj/effect/decal/cleanable/dirt, +/obj/machinery/door/firedoor/glass, +/obj/machinery/door/airlock/maintenance/common, +/turf/simulated/floor/plating, +/area/maintenance/lower/south) +"YY" = ( +/obj/machinery/computer/station_alert{ + icon_state = "computer"; + dir = 4 + }, +/turf/simulated/floor/tiled/dark, +/area/engineering/lower/breakroom) +"Za" = ( +/obj/random/junk, +/obj/item/weapon/broken_bottle, +/obj/effect/decal/cleanable/dirt, +/turf/simulated/floor/plating, +/area/maintenance/lower/atmos) +"Zb" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/obj/structure/cable/green{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/obj/structure/cable/green{ + d1 = 2; + d2 = 4; + icon_state = "2-4" + }, +/obj/structure/disposalpipe/segment, +/turf/simulated/floor/tiled, +/area/rnd/research) +"Zd" = ( +/turf/simulated/wall, +/area/engineering/drone_fabrication) +"Zi" = ( +/obj/machinery/alarm{ + frequency = 1441; + pixel_y = 22 + }, +/turf/simulated/floor/carpet, +/area/maintenance/lower/atmos) +"Zj" = ( +/obj/structure/table/rack/shelf/steel, +/obj/item/weapon/reagent_containers/food/drinks/bottle/space_mountain_wind, +/obj/item/weapon/reagent_containers/food/drinks/bottle/cola, +/turf/simulated/floor/plating, +/area/maintenance/lower/atmos) +"Zk" = ( +/obj/effect/floor_decal/borderfloor{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 9 + }, +/turf/simulated/floor/tiled/techmaint, +/area/tether/surfacebase/east_stairs_two) +"Zn" = ( +/obj/item/weapon/reagent_containers/food/drinks/bottle/gin, +/turf/simulated/floor/plating, +/area/maintenance/lower/atmos) "Zo" = ( /obj/structure/table/bench/steel, /obj/effect/floor_decal/borderfloor/corner{ @@ -18290,6 +19026,10 @@ }, /turf/simulated/floor/tiled, /area/tether/surfacebase/public_garden_two) +"Zq" = ( +/obj/structure/reagent_dispensers/fueltank, +/turf/simulated/floor/plating, +/area/maintenance/lower/atmos) "Zs" = ( /obj/effect/decal/cleanable/dirt, /obj/effect/floor_decal/corner_techfloor_grid{ @@ -18302,6 +19042,56 @@ /obj/effect/floor_decal/corner/lime/bordercorner, /turf/simulated/floor/tiled, /area/tether/surfacebase/public_garden_two) +"Zu" = ( +/obj/structure/railing{ + dir = 1 + }, +/turf/simulated/floor/plating, +/area/maintenance/lower/atmos) +"Zx" = ( +/obj/effect/decal/cleanable/dirt, +/obj/structure/kitchenspike, +/turf/simulated/floor/plating, +/area/maintenance/lower/south) +"Zy" = ( +/obj/structure/table/steel, +/obj/item/clothing/mask/balaclava, +/obj/item/clothing/mask/bandana, +/obj/effect/decal/cleanable/dirt, +/turf/simulated/floor/plating, +/area/maintenance/lower/south) +"ZB" = ( +/obj/machinery/light/small{ + dir = 8 + }, +/turf/simulated/floor/plating, +/area/maintenance/lower/atmos) +"ZC" = ( +/obj/effect/floor_decal/borderfloor{ + dir = 9 + }, +/obj/machinery/atmospherics/unary/vent_scrubber/on{ + dir = 4 + }, +/obj/effect/floor_decal/corner/yellow/border{ + icon_state = "bordercolor"; + dir = 9 + }, +/turf/simulated/floor/tiled, +/area/engineering/atmos) +"ZE" = ( +/obj/structure/railing{ + dir = 4 + }, +/obj/structure/cable{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/obj/effect/decal/cleanable/dirt, +/obj/structure/railing, +/turf/simulated/floor/tiled/techfloor, +/area/maintenance/lower/south) "ZF" = ( /obj/machinery/seed_extractor, /obj/effect/floor_decal/borderfloor{ @@ -18312,6 +19102,15 @@ }, /turf/simulated/floor/tiled, /area/tether/surfacebase/public_garden_two) +"ZI" = ( +/obj/effect/floor_decal/rust, +/turf/simulated/floor/plating, +/area/maintenance/lower/south) +"ZJ" = ( +/obj/structure/dogbed, +/obj/item/clothing/accessory/collar/pink, +/turf/simulated/floor/wood, +/area/maintenance/lower/atmos) "ZO" = ( /obj/structure/cable{ d1 = 1; @@ -18334,6 +19133,13 @@ }, /turf/simulated/floor/plating, /area/gateway) +"ZP" = ( +/obj/structure/railing, +/obj/structure/railing{ + dir = 8 + }, +/turf/simulated/open, +/area/engineering/atmos) "ZT" = ( /obj/structure/closet/crate/bin{ anchored = 1; @@ -18347,6 +19153,22 @@ }, /turf/simulated/floor/tiled, /area/tether/surfacebase/public_garden_two) +"ZU" = ( +/obj/structure/closet/secure_closet/scientist, +/turf/simulated/floor/tiled/steel_dirty, +/area/rnd/research_storage) +"ZW" = ( +/obj/random/trash_pile, +/obj/structure/railing{ + dir = 4 + }, +/turf/simulated/floor/plating, +/area/maintenance/lower/atmos) +"ZY" = ( +/turf/simulated/wall{ + can_open = 1 + }, +/area/maintenance/lower/atmos) (1,1,1) = {" aa @@ -24629,7 +25451,7 @@ ac ac ac Kt -UX +fQ IB Mf Kt @@ -24913,7 +25735,7 @@ ae ae ae ae -Sv +kl ae ae ae @@ -24946,8 +25768,8 @@ kW li lC lZ -mF -nj +jP +Fn nP ol oZ @@ -25057,7 +25879,7 @@ bX cm ZO bX -cm +lM bX bX dP @@ -25538,8 +26360,8 @@ ka ka ka ac -ac -ac +LI +LI ab ab ab @@ -25680,26 +26502,26 @@ zI Ah ka ac -ac -ac -ac -Cn -Cn -Cn -Cn -Cn -Cn -Cn -Cn -Cn -Cn -Cn -Cn -Cn -Cn -Cn -Cn -Gu +LI +LI +LI +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab ab ab ab @@ -25809,7 +26631,7 @@ rq qA sS tJ -uq +ut nq vW wz @@ -25822,9 +26644,10 @@ zJ Ai ka ac -ac -ac -ac +LI +LI +LI +ab ab ab ab @@ -25841,7 +26664,6 @@ ab ab ab ab -Gv ab ab ab @@ -25952,21 +26774,22 @@ rr sT tK ur -nq +vX +vX +vX +vX +vX +vX +vX ka ka -ka -ka -ka -yT -yT -yT Aj -yT -yT -ac -ac +ka ac +LI +LI +LI +ab ab ab ab @@ -25983,7 +26806,6 @@ ab ab ab ab -Gv ab ab ab @@ -26094,26 +26916,28 @@ rs sU tK us -nq -ac -ac -ac -ac -ac -yT +vX +XS +Wk +xm +SJ +QT +vX zb zK Ak -AG +ka +yT +Ur +Ur +yT +Ur +Ur yT ac ac -ac -ac -ac -ac -ac -ac +jM +jM ab ab ab @@ -26125,8 +26949,6 @@ ab ab ab ab -Gv -ab ab ab ab @@ -26235,27 +27057,29 @@ qD qD sV tK -ut -nq -ac -ac -ac -ac -ac -yT +Oo +vY +Jc +LF +xn +xO +ys +vX zc zL Al AH +Lk +Wf +XT +WB +OI +ME yT ac ac -ac -ac -ac -ac -ac -ac +jM +jM ab ab ab @@ -26267,8 +27091,6 @@ ab ab ab ab -Gv -ab ab ab ab @@ -26367,7 +27189,7 @@ ln lJ mg mJ -nq +ln nq ot pi @@ -26378,29 +27200,29 @@ rt rt tL uq -nq -ac -ac -ac -ac -ac -yT +Rz +Ip +wC +xo +xP +yt +vX zd +Lr +ka +ka +yT +Il +KI +SR zM -Am -AI +Jf yT ac ac ac ac ac -ac -ac -ac -ac -ac -ac ab ab ab @@ -26409,7 +27231,7 @@ ab ab ab ab -Gv +ab ab ab ab @@ -26520,29 +27342,29 @@ sa sW tM uu -nq -ac -ac -ac -ac +vY +Pc +Sk +xp +xQ +yu +vX +zc +JD +ka ac yT -ze +YA +TA +IO zM -zM -AJ +SG yT ac ac ac ac ac -ac -ac -ac -ac -ac -ac ab ab ab @@ -26551,7 +27373,7 @@ ab ab ab ab -Gv +ab ab ab ab @@ -26662,17 +27484,23 @@ sb nr nr nr -nr -nr -ac -ac -ac -ac -yT +nt +vX +wE +xq +xR +yv +vX zf zN -An -AK +ka +ac +yT +ZU +LV +Qj +TG +TY yT ac ac @@ -26681,19 +27509,13 @@ ac ac ac ac -ac -ac -ac -ac -ac -ac ab ab ab ab ab ab -Gv +ab ab ab ab @@ -26790,9 +27612,9 @@ ku il il lo -lM +oX ln -mM +Ex nr nS ou @@ -26806,28 +27628,28 @@ tN uv vk vX +wF +xr +xS +yw vX -vX -vX -vX -vX +YM +RY +ka +ka yT yT yT yT yT -ac -ac -ac -ac -ac -ac -ac -ac -ac -ac -ac -ac +yT +yT +VA +VA +VA +VA +VA +VA ac ab ab @@ -26835,7 +27657,7 @@ ab ab ab ab -Gv +ab ab ab ab @@ -26938,7 +27760,7 @@ mN ns nT ov -ov +Zb pT qI rx @@ -26948,28 +27770,28 @@ sY uw vl vX -wA -xm -xN -yr vX -ac -ac -ac -ac -ac -ac -ac -ac -ac -ac -ac -ac -ac -ac -ac -ac -ac +vX +vX +vX +vX +UD +QC +QD +Vb +VA +UN +Je +UW +VA +ZJ +Jt +VA +Vv +Su +NL +Jt +VA ac ac ac @@ -26977,12 +27799,12 @@ ab ab ab ab -Gv -ac -ac +ab ac ac ac +LI +LI ab ab ab @@ -27078,10 +27900,10 @@ lO lq mO nt -nt -nt -nt -pU +Kq +XD +Is +qL qJ ry se @@ -27089,31 +27911,29 @@ sZ tO ux vm -vY +nt wB -xn -xO -ys -vX -yW -yW -yW -yW -yW -yW -yW -yW -yW -yW -yW -yW -yW -yW -yW -yW -yW -ac -ac +RU +Yc +Qe +QD +wB +MO +Le +JV +VA +Ne +Ne +UN +VA +Zi +Ld +RN +Jt +NO +KB +UT +VA ac ac ac @@ -27125,6 +27945,8 @@ ac ac ac ac +LI +LI ab ab ab @@ -27219,42 +28041,41 @@ lr lP mk mP -nu -nu -ow +nt +nt nt pV +qL qK rz -sf +se ta tP uy vn vZ -wC -xo -xP -yt -vX +JP +Ut +Yl +NW +Yl zg zO Ao -AL +Ao Ba -Ar -BH -BH +KJ BH +Nx +VA Cv -CD -CP +Ld +VA Db -Ds +UN DK -Ed -yW -ac +UN +VA ac ac ac @@ -27267,6 +28088,7 @@ ac ac ac ac +LI ab ab ab @@ -27356,60 +28178,60 @@ jN jN ky jy -ld +lc ls ls ls ls ls ls -ox nt pW qL +qL rA se tb tQ uz -vo -vY +vm +nt wD -xp -xQ -yu -vX -zh +Wy +wB +Tn +Tn +Tn zP -Ap -AM -AM +Tn +Tn +Tn Br BI -Ca -BI +Nx +VA Cw Bu -Bj +VA Dc -AB -AB -Ee -yW -ac -ac -ac -ac -ac -ac -ac -ac -ac -ac +UN +UN +Jt +VA +ac +ac +VA +VA +VA +VA +VA +VA ac ac ac ac +LI +LI ab ab ab @@ -27498,63 +28320,63 @@ jy jy jy jy -ld +lc ls lQ lQ lQ lQ ls -ox nt pX qL qL +qL sg tc tc uA vp -vX -wE -xq -xR -yv -vX +nt +Iq +NG +Tn +Tn +Yu zi zQ Aq AN -Bb -Bs -Bw -Cb -Bw -Co -CE -CQ -Ck -AB -AB -Ef -yW -ac -ac -ac -ac -ac -ac -ac -ac -ac -ac -ac -ac -ac -ac -ab -ab -ab +Tn +Tn +PG +Nx +VA +VA +VA +VA +VA +LL +VA +VA +VA +VA +VA +VA +Nx +Nx +OT +JJ +VA +VA +VA +VA +VA +VA +VA +MT +MT +VA ab ab ab @@ -27640,63 +28462,63 @@ jy jy jy jy -ld +lc ls lQ lQ lQ lQ ls -ox nt -pY +Wp qM rB +Wu sh td +Pp tR -uB vq -vX -wF -xr -xS -yw -vX +nt +ZC +IV +Zd +UH +WH zj -zQ +OP Ar -AO +WH Bc -Bt -BJ -Cc +Tn BJ +Nx +VA Cx CF -CR +VA Dd -AB -AB -Eg -yW -ac -ac -ac -ac -ac -ac -ac -ac -ac -ac -ac -ac -ac -ac -ac -ac -ac +Ne +UN +VA +Vw +Oq +JE +Nx +Nx +Nx +Nx +Nx +KJ +WG +Ps +XI +Oy +Os +Xq +Nx +OU +Pb ab ab ab @@ -27782,14 +28604,13 @@ jy jy jy jy -ld +lc ls lQ lQ lQ lQ ls -ox nt nt nt @@ -27799,46 +28620,47 @@ nt nt nt nt -vX -vX -vX -vX -vX -vX +nt +nt +Ok +Ty +Zd +TZ +Xm zk zR As AO Bd -Bu +Tn BK -Cd -BK -Cy -CG -CR -Dd -AB -AB -Eh -yW -ac -ac -ac -ac -ac -ac -ac -ac -ac -ac -ac -ac -ac -ac -ac -ac -ac +Nx +VA +VA +VA +VA +KJ +KJ +Nx +Ba +Nx +Df +TX +Nx +VF +Ui +Br +CI +KJ +Nx +KJ +Nx +Oa +KJ +Nx +Nx +Wt +Pb ac ab ab @@ -27924,7 +28746,7 @@ jy jy jy jy -ld +lc ls lQ lQ @@ -27941,46 +28763,46 @@ te tS uC vr -wa +tg wG xs xT yx yU -zl +yU zS At -AO +uE Be -Bv +Tn Bs -Ce -Co -Cz -CH -CR -Dd -AB -AB -Ei -yW -ac -ac -ac -ac -ac -ac -ac -ac -ac -ac -ac -ac -ac -ac -ac -ac -ac +KJ +KJ +KJ +Nx +Nx +Nx +VF +Rs +VA +VA +VA +VA +VA +VA +VA +VA +VA +LL +VA +VA +VA +VA +VA +VA +KJ +Pw +VA ac ac ac @@ -28066,63 +28888,63 @@ jy jy jy jy -ld +lc ls ls lQ lQ nv ls -ld +oy pm qa qO -rD +rC sj tf -tg +Ke uD vs wb wH xt -xt +Zd yy yV zm -zT -Au -AP +zm +zm +yV Bf -Bw -BL -Ce -BL -Bw +Tn +Ne +BI +KJ +IS CI -AP -De -AB -AB -Ej -yW -ac -ac -ac -ac -ac -ac -ac -ac -ac -ac -ac -ac -ac -ac -ac -ac -ac +KJ +Nx +Zu +VA +VA +WI +Uy +QZ +Wg +MB +VA +VA +Yf +UN +Qa +Yw +QV +QV +QV +VA +JK +KJ +VA ac ac ac @@ -28215,56 +29037,56 @@ ml ml nw nU -dY +oy pn qb -pn -pn -pn -pn -tg -uE +Tv +rC +WW +OX +Pl +rS vt tg -tg -tg -tg -tg +Rp +Lz +Zd +Zd yW -zn -zU -Av -AC -AC -AC -BM -Cf +yW +yW +yW +yW +Zd +Tn +Iq +Iq Cp -AC -AC -CS -AB -AB -AB +Iq +Iq +KJ +Nx +NH +VA Ek -yW -ac -ac -ac -ac -ac -ac -ac -ac -ac -ac -ac -ac -ac -ac -ac -ac -ac +Ie +Kr +Wh +Ne +UN +Ym +VA +VO +Ne +VY +Yw +QV +QV +QV +VA +Nx +Tz +VA ac ac ac @@ -28331,7 +29153,7 @@ dV eD eW ap -fQ +mM ge ge ge @@ -28357,56 +29179,56 @@ mm mQ nx nV -dY -po -po -po -po -po +oy +oy +QQ +oy +rC +rC tg tg uF -vu tg +TW wI xu xU -yz -yW -zo -zV -Aw -AQ -Bg -Bg -BN +BQ +BQ +BQ +BQ +BQ +BQ +BQ +BQ +BQ Cg Cq -CA +Cq +Iq +KJ +Nx CJ -zT -CJ -CJ -DL +VA El -yW -ac -ac -ac -ac -ac -ac -ac -ac -ac -ac -ac -ac -ac -ac -ac -ac -ac +Ie +Ne +UN +UN +KC +MA +VA +Ne +UN +SV +Yw +QV +QV +QV +VA +Nx +XG +VA ac ac ac @@ -28491,64 +29313,64 @@ jy jy jy jy -jy -jy +ii +ii dY hY -mn +Jk fG -ny -hY -dY +Ou +Vn +nX po -po -po -po -po -tg +La +WM +RZ +Ji +LH tT uG vv -wc -wc -wc -wc -wc -yW -zp -zW -zQ -AR -Bh -AB -BO +th +TQ +Vj BQ BQ -CB -CK -zV -AB -AB -DM +Vo +BQ +BQ +BQ +BQ +BQ +BQ +BQ +CM +Cq +Cq +Iq +UN +KJ +Zu +VA Em -yW -ac -ac -ac -ac -ac -ac -ac -ac -ac -ac -ac -ac -ac -ac -ac -ac -ac +Ie +Kz +Yh +Yy +UN +Zq +VA +Mu +Za +Qa +Yw +QV +QV +QV +VA +Nx +Ya +VA ac ac ac @@ -28634,63 +29456,63 @@ ii ii ii ii -ii -ii -dY -mo +il +il +lT +mn fG -nz -dY -dY -dY -po -po -po -po -tg -tg -uH +Pj +nX +MN +TU +QH +Pi +OR +Ji +KH +xY +uG vw -wd -wJ -xv -xV -yA -yW -zq -zX -Ax -AS -Bi -Bx -BP -BP -BP +th +TQ +Vj +BR +BR BQ -CL -CT +BQ +BQ +BQ +BQ +BQ +BQ +BQ +BQ +ZP +Cq +Iq +Ne Df -Dt -Dt -En -yW -ac -ac -ac -ac -ac -ac -ac -ac -ac -ac -ac -ac -ac -ac -ac -ac -ac +VA +VA +VA +Od +VC +Sg +Ri +Ne +VA +VA +VA +VA +VA +VA +VA +VA +VA +VA +BH +Nx +VA ac ac ac @@ -28781,58 +29603,58 @@ il dY mp fG -nA -nW -en -dY -po -po -po -po -po -tg +Ng +MG +MN +Lm +QH +Xy +Pz +Ji +HW +Uf uI vx -we -wK +th +TQ xw -xW +Bw yB -yW -zr -zV -zQ -AT -Bj -By +xU +BQ +BQ +BQ +BQ BQ BQ BQ BQ CM -AB -Dg -Du -Du -Eo -yW -ac -ac -ac -ac -ac -ac -ac -ac -ac -ac -ac -ac -ac -ac -ac -ac -ac +Mn +Iq +Ne +Nx +KJ +KJ +VA +VA +VA +VA +VA +Yy +VA +RF +RF +RF +VA +QV +QV +QV +QV +Ne +KJ +KJ +VA ac ac ab @@ -28912,69 +29734,69 @@ il iC il jf -ii -ii -ii -dY -dY -dY il -il -lT +ii +ii +dY +dY +dY +dY +dY +dY mq mR nB -nX -nX -nX -nX -nX -nX -nX -nX -tg +MG +MN +WE +QH +XP +OR +Ji +Sa +JW uJ vy -wd +th wL xx xX yC -yW -zs -zV -zQ -AT -Bj -By +xU +BQ +BQ +BQ +BQ BQ BQ BQ BQ CM -AB +Cq +Iq +UN BO +Nx +Nx Dv -Dv -Dv -yW -ac -ac -ac -ac -ac -ac -ac -ac -ac -ac -ac -ac -ac -ac -ac -ac -ac +XI +XI +ZW +VA +Ne +VA +RF +RF +RF +VA +QV +QV +QV +QV +Ne +Nx +KJ +VA ac ac ac @@ -29054,69 +29876,69 @@ il iD il jf +il ii jG -jP +XJ dY en dY -il -il -dY +en +eK mr mS -nz -nX +Ng +MG oz pp -pp +QH qP rE -rE -rE -tg +Ji +KR +Wx uK vz -wc -wc +th +Sp xy -xY -yD -yW -zt -zV -zQ -AT -Bj -By +tt +tt +ya +ya +ya +ya +BQ BQ BQ BQ BQ CM +Cq +Iq AB -BO -Dw -Dw -Dw -yW -ac -ac -ac -ac -ac -ac -ac -ac -ac -ac -ac -ac -ac -ac -ac -ac -ac +KJ +KJ +Nx +Nx +Nx +Nx +Tx +VA +UN +VA +VA +VA +VA +VA +VA +VA +VA +VA +VA +VA +VA +VA ac ac ac @@ -29200,8 +30022,8 @@ dY dY dY dY -kz dY +kz dY dY dY @@ -29210,52 +30032,52 @@ mT nC nX oA -pq -qc -pu +pp +QH +qP rF -sk +Ji +th th -tg uL -vA -wf +th wc +Ov xz -xZ +tt yE -yW +Kf zu zY -Ay -AU -Bj -By +ya +ya BQ BQ BQ BQ CM +Cq +Iq AB -BO -Dx -Dx -Ep -yW -ac -ac -ac -ac -ac -ac -ac -ac -ac -ac -ac -ac -ac -ac +Ts +VA +VA +VA +VA +VA +VA +VA +Ne +VA +YU +Ne +ZB +Jt +VA +PT +Ne +UN +VA ac ac ac @@ -29338,6 +30160,7 @@ fV fV fV jm +fV gG fB jQ @@ -29346,58 +30169,57 @@ kA gG fV fV -fV mt -mU -nD +mS +fG nY -oB -pr +pu +pp qd qQ rG sl ti -tU +ti uM -vB +ti wg -wc -wc +Rg +Tp ya -wc -yW +Va +WT zv -zY +Iw Az -Ad -AW -By +ya BQ BQ BQ BQ CM -AB -BO +WQ +Iq +Jv +Pe Dy -Dy -Dy -yW -ac -ac -ac -ac -ac -ac -ac -ac -ac -ac -ac -ac -ac -ac +VA +UN +Ij +Yy +UN +ZY +UN +VA +Ud +Ob +Ob +JU +ZY +Ne +OS +Zn +RF ac ac ac @@ -29491,14 +30313,14 @@ jB jB jB mV -jR -nZ +Oj +MG oC -ps +pp qe -qR pu -sm +LB +MG tj tV uN @@ -29508,38 +30330,38 @@ wM xA yb yF -yW +US zw zV -zQ -AB -AR -By +KA +ya BQ BQ BQ BQ CM -AB -BO +SY +Iq +Rj +Nx Dz -Dz -Dz -yW -ac -ac -ac -ac -ac -ac -ac -ac -ac -ac -ac -ac -ac -ac +VA +Ne +Ne +Kz +TN +VA +VA +VA +Zj +Ob +VQ +Jt +VA +JG +UN +Ne +VA ac ac ac @@ -29648,40 +30470,40 @@ vD wi wN xB -yc +ya yG yX zx zZ AA -AB -AR -Bz -BR -Ch -BR -BR -CN -AB -Dh +ya +BQ +BQ +BQ +BQ +CM +Cq +Iq +QJ +Pe DA -DA -DA -yW -ac -ac -ac -ac -ac -ac -ac -ac -ac -ac -ac -ac -ac -ac +VA +Pa +Mh +No +LQ +VA +RF +VA +VD +Mk +Ob +Ne +VA +QV +JG +UN +RF ac ac ac @@ -29778,52 +30600,52 @@ mX nF nX oE -pu +Ja qg -qg -pu -so +Oi +Rf +Ji tl -tg +WK uP -vE -wj +tl +tl wO -wO -yd +Ta +tt yH yY zy -zV -AB -AB -AR -BA -BS -zV -AB -AB -AB -AB -Di -DB -DB -Eq -yW -ac -ac -ac -ac -ac -ac -ac -ac -ac -ac -ac -ac -ac -ac +Np +ya +ya +BQ +BQ +BQ +BQ +CM +Cq +Iq +QJ +Pe +Ts +LL +Ne +Yy +Yb +Ne +VA +RF +VA +LN +UN +Yy +Ob +VA +UW +LR +UN +VA ac ac ac @@ -29918,54 +30740,54 @@ lV mv mX nG -nX -oF -pv +ob +RK +RK qh -qT -rI +RK +RK sp tm -tg +Qo uQ vF -wk +tl wP xC -ye -yI -yZ -zz -Aa -AB -AB -AR -BB -BT -Ci -Cr -Cr -Cr +tt +tt +ya +ya +ya +ya +BQ +BQ +BQ +BQ +BQ +CM +Cq +Iq CU -Dj +Pe DC -CC +VA Er -yW -ac -ac -ac -ac -ac -ac -ac -ac -ac -ac -ac -ac -ac -ac +Ne +UN +UN +VA +RF +VA +KG +Iu +MH +Jt +VA +VA +VA +RF +RF ac ac ac @@ -30062,48 +30884,48 @@ mX nH ob oG +Pm pw -pw -oG -pw -sq -ob -tt -tt +YY +Vd +sp +Nz +Kv +Lv vG -tY -tt -tt +tl +Xj +Wv yf yJ -yW -zo -zV -AB -AB -AT -AV -BU -zV -AB -AB -AB -CV +xU +BQ +BQ +BQ +BQ +BQ +BQ +BQ +BQ +CM +Cq +Iq +Rj Dk -yW -yW -yW -rg -rg -rg -rg -rg -rg -rg -rg -ac -ac -ac +VA +VA +VA +VA +VA +VA +VA +VA +VA +VA +VA +VA +VA +VA ac ac ac @@ -30201,38 +31023,38 @@ gw lV mv mX -nz +Ng ob oH px qi qU rJ -sr +sp tn tX uR vH -wl +tl wQ -tt -yg -yJ -yW -zA -Ab -AC -AC -Bk -BC -BV -Cj -AB -AB -AB +PF +Bw +Mo +xU +BQ +BQ +BQ +BQ +BQ +BQ +BQ +BQ +CM +Cq +Iq CV Dl -yW +VA DN sK sK @@ -30343,42 +31165,42 @@ gw lV mv mX -nz -ob +Ng +RK oI -py -qj +Op qj rK -ss -to -tY +PV +sp +tn +tX uS vI -wm -wR +tl +wQ tY -yh -yJ -yW -zB -Ac -AD -AV -Bl -BD -BW -Bh -AB -AB -AB +BP +BP +BQ +BQ +BQ +BQ +BQ +BQ +BQ +BQ +BQ +CN +Cq +Iq CW Dm -DD +Ba DO Es Ev -EA +Wo EG EA Fe @@ -30485,38 +31307,38 @@ gw lV mv mX -nI -ob +Ng +RK oJ py qk -qj rK -st +If +sp tp tZ uT vJ -wn -wS +tl +wQ tY -yh -yJ -yW -zC -Ad -AD -AW -Bm -BE -BW -Bw -AB -AB -AB -AB -Dl -yW +BQ +BQ +BQ +BQ +BQ +BQ +BQ +BQ +BQ +BQ +CM +Cq +Cq +Iq +VA +VA +VA DP sK rg @@ -30524,7 +31346,7 @@ rg rg ET Ff -Fy +HO FU ET ac @@ -30627,38 +31449,38 @@ gw lV mv mX -nz -ob +Ng +RK oK -px -ql -ql -px -su -tq -tt -uU -vK -wo +Op +qj +rK +IR +sp +tl +tl +tl +tl +tl wT -tY -yh -yK -yW -zD -Ac -AE -AX -Bn -BF -BX +XN +xU +BQ +BQ +BQ +BQ +BQ +BQ +BQ +BQ +BQ Ck -AB -AB -AB -AB -Dl -yW +Cq +Cq +Iq +ac +ac +rg DQ sK rg @@ -30769,38 +31591,38 @@ gw lV mv mX -nz +Ng ob oL +oK pz -pz -pz -rL -sv +oK +oK +sp tr -tt +Wb uV -uS +tr wm wU -tY -yh -yK -yW -zE -Ae -AF -AY -Bo -BG -BG -Cl -Cs -CC -CC -CX -Dn -yW +WU +Iq +Iq +Iq +Iq +Iq +Iq +Iq +Iq +Iq +Iq +Iq +Iq +Iq +Iq +ac +ac +rg DQ sK rg @@ -30918,31 +31740,31 @@ pA qm qV rM -sw +sp ts -tt +WN uW vL wp wV -tt -yh +Sl +Iq yL -yW -yW -yW -yW -yW -yW -yW -yW -yW -yW -yW -yW -yW -yW -yW +YK +Nw +NB +SA +We +PM +rg +VZ +Nj +ZI +KV +rg +ac +ac +rg DR sK rg @@ -31053,35 +31875,35 @@ gw lV mv mX -nz +nI ob ob ob ob ob ob -ob -ob -tt +sp +ML +Tk uX -tt -tt -tt -tt +YJ +Qm +Kl +Kx yi yM -tg -ac -ac -ac -ac -ac -ac -ac -ac -ac -ac -ac +Lu +yN +yN +RR +PM +PM +rg +JQ +Dr +yN +yN +rg ac ac rg @@ -31092,7 +31914,7 @@ Ez Ez EM EM -FC +HP EM EM Gw @@ -31199,37 +32021,37 @@ nA nW en dY -qn -qW -qW +ac +ac +ac sx -tt +Kb ua -ua -vM -tt +Qd +Qd +wm wW xD -xD +Iq yN -xD -xD -xD -ac -ac -ac -ac -ac -ac -ac -ac -ac +VS +NB +NB +Ro +PM +Vf +rg +yN +NB +Zy +MI +rg ac ac rg -DQ +Ve Et -Ex +HM EB EH EM @@ -31338,39 +32160,39 @@ lV mv mX nz -oc -oc -oc -oc -oc -oc -sy -tt -ub -ua -vN -tt -wX -xD -yj -yO +dY +dY +dY +ac +ac +ac +sx +sx +sx +sx +sx +MQ +MQ +MQ +MQ +rO za -zF -xD -xD -ac -ac -ac -ac -ac -ac -ac -ac +rO +rO +rO +PM +TE +rg +rg +NB +rg +rg +rg ac ac rg DT -Eu +sK Ey EC EI @@ -31479,35 +32301,35 @@ gw lV mv mX -nG -oc +nz +dY oN -pB -qo -qX -oc -sy -tt -uc -uY -vO -tt -wY -xD -yk -yP -yP +rO +ac +ac +ac +ac +ac +ac +ac +ac +rO +tu +tu +tu yP +IU +LY Af -xD -ac -ac -ac -ac -ac -ac -ac -ac +rO +PM +Wm +rg +WV +NB +Lq +Uc +rg ac ac rg @@ -31595,7 +32417,7 @@ dG dG aG dY -fn +cU fG fY gj @@ -31621,35 +32443,35 @@ gw lV mv mX -nz -oc +Ou +dY oO -pC -pD -qY -oc -sz -tt -tt -tt -tt -tt -wY -xD -yl -yQ -yQ +rO +rO +rO +rO +rO +rO +rO +rO +rO +rO +tu +tu +tu yP +yQ +Rq Ag -xD -ac -ac -ac -ac -ac -ac -ac -ac +rO +UG +Wm +rg +Wa +yN +NB +NB +rg ac ac rg @@ -31762,36 +32584,36 @@ gw gw lV mv -mX -nz -oc +mY +Yx +Mq oP -pD -pD +Vr +OE qY -oc -qW -rg +Xu +Xr +Vl ud -ud -ud -rg +SP +SP +Rx +wY wY -xD ym yR -yQ +IW zG -xD -xD -ac -ac -ac -ac -ac -ac -ac -ac +Ki +rO +PM +Wm +DJ +NB +Dr +Ks +yN +rg ac ac rg @@ -31801,7 +32623,7 @@ Ez Ez EL EM -Fn +HN FH Ga FR @@ -31872,7 +32694,7 @@ bO ad cx cy -cU +cy dh cy cy @@ -31904,35 +32726,35 @@ gw gw lV mv -mX -nJ -oc +mZ +nx +XV oQ -pD -pD -qZ -oc +oQ +oQ +oQ +Jd sA +Lj +Zk +QF +oQ +XV +oQ +ID +KY +Tt +VT +YG +YG +rO +We +Uu rg -ud -ud -ud -rg -wZ -xD -xD -xD -xD -xD -xD -ac -ac -ac -ac -ac -ac -ac -ac +Zx +NB +yN +yN rg rg rg @@ -32046,35 +32868,35 @@ gx gx lW mv -mY -nK -od -oR -pE -qp -ra +mZ +nz +rO +rO +rO +rO +rO +rO +rO +rO +rO oc -sz +oc +oc +Ox +oc +Uw +oc +oc +zG +zG +rO +We +Ms +rg +rg rg -ud -ud -ud rg -wY rg -ac -ac -ac -ac -ac -ac -ac -ac -ac -ac -ac -ac -ac rg CY sK @@ -32190,34 +33012,34 @@ gl mw mZ nL +dY +ac +ac +ac +ac +ac +ac +ac +ac oc -oS -pD -qq -rb +vP +Qh +Nt +QR +TD +Vz oc +Lo +Lo rO -rO -rO -rO -vP -vP -vP -rg -ac -ac -ac -ac -ac -ac -ac -ac -ac -ac -ac -ac -ac -rg +We +We +UI +PM +We +We +PM +UI sK Do DF @@ -32332,33 +33154,33 @@ kM kM na nz -oe -oT +dY +ac +ac +ac +ac +ac +ac +ac +ac +oc +Vy pD -qq -rc -rN -sB -tu -tu +FC +pD +Pv +KU +oc rO -vP -vP -sK +rO +rO +PM +NT rg -ac -ac -ac -ac -ac -ac -ac -ac -ac -ac -ac -ac -ac +Xv +NK +YD +NX rg CZ xg @@ -32474,33 +33296,33 @@ iE mx nb nM +dY +ac +ac +ac +ac +ac +ac +ac +ac oc -oU -pF -qr -rd -rO -sC -tv -tv -uZ -sK -sK -xa +VE +Rd +pD +pC +SZ +Jz +oc +ac +rg +Qq +We +KS +rg +rg +rg +rg rg -ac -ac -ac -ac -ac -ac -ac -ac -ac -ac -ac -ac -ac rg sK Dp @@ -32616,29 +33438,29 @@ dY my nc dY -oc -oc -oc -oc -oc rO -sD -tw -ue -rO -sK -sK -xb +rg +rg +rg +rg rg ac ac ac +oc +Yk +Ul +xb +WR +KX +Ir +oc ac -ac -ac -ac -ac -ac +rg +Ly +We +NJ +rg ac ac ac @@ -32761,26 +33583,26 @@ du of oV pG -qs +pG re -rO -sE -rO -rO -rO rg rg rg rg +oc +oc +Xw +oc +oc +oc +oc +oc ac -ac -ac -ac -ac -ac -ac -ac -ac +rg +Lt +We +KS +rg ac ac ac @@ -32801,7 +33623,7 @@ Gg Gq GD GP -Gz +HR Hd Hn Gz @@ -32905,24 +33727,24 @@ oW oW oW rf -du +rg sF tx uf uf vQ -tx +PQ xc rg ac ac ac ac -ac -ac -ac -ac -ac +rg +LP +PM +KS +rg ac ac ac @@ -33042,7 +33864,7 @@ du mB ne du -ee +mA ee ee gY @@ -33052,7 +33874,7 @@ sG ty ug va -va +ZE wq xd rg @@ -33062,7 +33884,7 @@ rg rg rg rg -rg +YX rg rg rg @@ -33207,8 +34029,8 @@ yS yS Bp Bp -BY -Cm +Bp +yS Ct rg rg @@ -33223,7 +34045,7 @@ ES Fd Fv FR -Gi +HQ FR GG GI @@ -33469,7 +34291,7 @@ mD nf du du -oX +Fy du du rg @@ -33485,8 +34307,8 @@ xG rg rg rg -zH -zH +ac +ac rg rg rg @@ -33743,7 +34565,7 @@ ef ef ef jZ -kl +nj id kQ ee @@ -33899,7 +34721,7 @@ du du du rg -rS +qs sL tB tB diff --git a/maps/tether/tether-03-surface3.dmm b/maps/tether/tether-03-surface3.dmm index e4e19a3212..d62592f183 100644 --- a/maps/tether/tether-03-surface3.dmm +++ b/maps/tether/tether-03-surface3.dmm @@ -9,7 +9,7 @@ /turf/simulated/floor/outdoors/grass/sif/virgo3b, /area/tether/surfacebase/outside/outside3) "ad" = ( -/obj/machinery/camera/network/northern_star{ +/obj/machinery/camera/network/outside{ dir = 1 }, /turf/simulated/floor/outdoors/grass/sif/virgo3b, @@ -57,7 +57,6 @@ /obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ dir = 10 }, -/obj/random/trash_pile, /turf/simulated/floor/wood, /area/vacant/vacant_site2) "ak" = ( @@ -498,11 +497,13 @@ /turf/simulated/floor/plating, /area/tether/surfacebase/reading_room) "bg" = ( -/obj/machinery/camera/network/security{ - dir = 9 +/obj/machinery/door/blast/shutters{ + id = "hangarsurface"; + name = "Engine Repair Bay" }, -/turf/simulated/floor/outdoors/grass/sif/virgo3b, -/area/tether/surfacebase/outside/outside3) +/obj/machinery/door/firedoor, +/turf/simulated/floor/tiled/techmaint, +/area/tether/surfacebase/shuttle_pad) "bh" = ( /turf/simulated/wall/r_wall, /area/gateway/prep_room) @@ -538,7 +539,6 @@ /area/vacant/vacant_site2) "bo" = ( /obj/machinery/door/firedoor/glass, -/obj/machinery/door/airlock/maintenance/engi, /obj/structure/cable/green{ d1 = 1; d2 = 2; @@ -546,6 +546,7 @@ }, /obj/machinery/atmospherics/pipe/simple/hidden/supply, /obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/obj/machinery/door/airlock/maintenance/common, /turf/simulated/floor/tiled/techfloor/grid, /area/vacant/vacant_site2) "bp" = ( @@ -2183,6 +2184,7 @@ layer = 3.3; name = "Public Access Shutter" }, +/obj/machinery/door/firedoor/glass, /turf/simulated/floor/tiled, /area/gateway/prep_room) "ep" = ( @@ -2895,7 +2897,7 @@ /turf/simulated/floor/plating, /area/tether/surfacebase/medical/lobby) "fF" = ( -/obj/machinery/camera/network/northern_star{ +/obj/machinery/camera/network/outside{ dir = 8 }, /turf/simulated/floor/outdoors/grass/sif/virgo3b, @@ -3709,6 +3711,12 @@ /obj/effect/floor_decal/techfloor{ dir = 8 }, +/obj/structure/closet/crate, +/obj/random/maintenance/medical, +/obj/random/maintenance/medical, +/obj/random/junk, +/obj/random/maintenance/medical, +/obj/random/maintenance/clean, /turf/simulated/floor/tiled/techfloor/grid, /area/vacant/vacant_site2) "gV" = ( @@ -4149,12 +4157,7 @@ /obj/effect/floor_decal/techfloor/hole{ dir = 8 }, -/obj/structure/closet/crate, -/obj/random/maintenance/clean, -/obj/random/maintenance/medical, -/obj/random/junk, -/obj/random/maintenance/medical, -/obj/random/maintenance/medical, +/obj/random/trash_pile, /turf/simulated/floor/tiled/techfloor/grid, /area/vacant/vacant_site2) "hI" = ( @@ -4304,7 +4307,6 @@ /obj/machinery/atmospherics/pipe/simple/hidden/supply, /obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, /obj/structure/disposalpipe/segment, -/obj/machinery/door/firedoor, /obj/structure/cable{ d1 = 1; d2 = 2; @@ -4314,6 +4316,7 @@ /obj/effect/floor_decal/steeldecal/steel_decals_central1{ dir = 8 }, +/obj/machinery/door/firedoor/glass, /turf/simulated/floor/tiled/monofloor{ dir = 8 }, @@ -4325,10 +4328,10 @@ layer = 3.3; name = "Gateway Prep Shutter" }, -/obj/machinery/door/firedoor, /obj/effect/floor_decal/steeldecal/steel_decals_central1{ dir = 4 }, +/obj/machinery/door/firedoor/glass, /turf/simulated/floor/tiled/monofloor{ dir = 4 }, @@ -4336,13 +4339,13 @@ "hV" = ( /obj/machinery/atmospherics/pipe/simple/hidden/supply, /obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, -/obj/machinery/door/firedoor, /obj/machinery/door/airlock{ name = "Unisex Restrooms" }, /obj/structure/cable{ icon_state = "1-2" }, +/obj/machinery/door/firedoor/glass, /turf/simulated/floor/tiled/steel_grid, /area/crew_quarters/recreation_area_restroom) "hW" = ( @@ -4662,20 +4665,11 @@ /turf/simulated/floor/tiled, /area/tether/surfacebase/atrium_three) "iv" = ( +/obj/random/junk, /obj/machinery/alarm{ pixel_y = 22 }, -/obj/effect/floor_decal/borderfloor{ - dir = 1 - }, -/obj/effect/floor_decal/corner/lightgrey/border{ - dir = 1 - }, -/obj/effect/floor_decal/steeldecal/steel_decals7, -/obj/effect/floor_decal/steeldecal/steel_decals7{ - dir = 4 - }, -/turf/simulated/floor/tiled, +/turf/simulated/floor/plating, /area/tether/surfacebase/atrium_three) "iw" = ( /obj/machinery/firealarm{ @@ -4731,7 +4725,7 @@ d2 = 4; icon_state = "2-4" }, -/obj/machinery/camera/network/northern_star, +/obj/machinery/camera/network/tether, /obj/effect/floor_decal/borderfloor{ dir = 1 }, @@ -4867,33 +4861,6 @@ /obj/effect/floor_decal/steeldecal/steel_decals7, /turf/simulated/floor/tiled, /area/tether/surfacebase/atrium_three) -"iF" = ( -/obj/structure/cable{ - d1 = 4; - d2 = 8; - icon_state = "4-8" - }, -/obj/effect/floor_decal/borderfloor{ - dir = 1 - }, -/obj/effect/floor_decal/corner/lightgrey/border{ - dir = 1 - }, -/obj/machinery/atmospherics/pipe/simple/hidden/supply{ - dir = 4 - }, -/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ - dir = 4 - }, -/obj/effect/floor_decal/steeldecal/steel_decals7{ - dir = 4 - }, -/obj/effect/floor_decal/steeldecal/steel_decals7, -/obj/machinery/door/firedoor/glass/hidden/steel{ - dir = 2 - }, -/turf/simulated/floor/tiled, -/area/tether/surfacebase/atrium_three) "iG" = ( /obj/structure/cable{ d1 = 4; @@ -4979,7 +4946,7 @@ /turf/simulated/floor/tiled, /area/tether/surfacebase/atrium_three) "iK" = ( -/obj/machinery/camera/network/northern_star, +/obj/machinery/camera/network/tether, /obj/effect/floor_decal/borderfloor{ dir = 1 }, @@ -5082,7 +5049,7 @@ dir = 4 }, /obj/effect/floor_decal/steeldecal/steel_decals7, -/obj/machinery/camera/network/northern_star, +/obj/machinery/camera/network/tether, /turf/simulated/floor/tiled, /area/tether/surfacebase/atrium_three) "iR" = ( @@ -5119,7 +5086,6 @@ }, /obj/effect/floor_decal/steeldecal/steel_decals7, /obj/machinery/alarm{ - frequency = 1441; pixel_y = 22 }, /obj/machinery/atmospherics/unary/vent_pump/on, @@ -5261,7 +5227,7 @@ /turf/simulated/floor/tiled, /area/tether/surfacebase/atrium_three) "jc" = ( -/obj/machinery/camera/network/northern_star, +/obj/machinery/camera/network/tether, /obj/effect/floor_decal/borderfloor{ dir = 1 }, @@ -5633,9 +5599,8 @@ /turf/simulated/floor/tiled, /area/tether/surfacebase/atrium_three) "jI" = ( -/obj/machinery/door/firedoor/glass/hidden/steel, -/turf/simulated/floor/tiled, -/area/tether/surfacebase/atrium_three) +/turf/simulated/wall, +/area/rnd/research/researchdivision) "jJ" = ( /obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ dir = 5 @@ -5705,6 +5670,9 @@ dir = 2 }, /obj/machinery/hologram/holopad, +/obj/effect/landmark{ + name = "lightsout" + }, /turf/simulated/floor/tiled, /area/tether/surfacebase/atrium_three) "jR" = ( @@ -5900,7 +5868,7 @@ /turf/simulated/floor/tiled/techfloor, /area/crew_quarters/panic_shelter) "kk" = ( -/obj/machinery/camera/network/northern_star{ +/obj/machinery/camera/network/outside{ dir = 4 }, /turf/simulated/floor/outdoors/grass/sif/virgo3b, @@ -5950,9 +5918,6 @@ /turf/simulated/floor/tiled, /area/tether/surfacebase/atrium_three) "ko" = ( -/obj/machinery/camera/network/civilian{ - dir = 1 - }, /obj/effect/floor_decal/borderfloor, /obj/effect/floor_decal/corner/lightgrey/border, /obj/effect/floor_decal/steeldecal/steel_decals7{ @@ -5961,6 +5926,9 @@ /obj/effect/floor_decal/steeldecal/steel_decals7{ dir = 1 }, +/obj/machinery/camera/network/tether{ + dir = 1 + }, /turf/simulated/floor/tiled, /area/tether/surfacebase/atrium_three) "kp" = ( @@ -6081,17 +6049,27 @@ /turf/simulated/floor/tiled, /area/tether/surfacebase/atrium_three) "ky" = ( -/obj/effect/floor_decal/borderfloor, -/obj/effect/floor_decal/corner/lightgrey/border, -/obj/effect/floor_decal/steeldecal/steel_decals7{ +/obj/structure/cable{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/obj/effect/floor_decal/borderfloor{ dir = 1 }, -/obj/effect/floor_decal/steeldecal/steel_decals7{ - dir = 8 - }, -/obj/machinery/door/firedoor/glass/hidden/steel{ +/obj/effect/floor_decal/corner/lightgrey/border{ dir = 1 }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, +/obj/effect/floor_decal/steeldecal/steel_decals7{ + dir = 4 + }, +/obj/effect/floor_decal/steeldecal/steel_decals7, /turf/simulated/floor/tiled, /area/tether/surfacebase/atrium_three) "kz" = ( @@ -6262,7 +6240,7 @@ /turf/simulated/floor/tiled, /area/tether/surfacebase/atrium_three) "kM" = ( -/obj/machinery/camera/network/northern_star{ +/obj/machinery/camera/network/tether{ dir = 9 }, /obj/effect/floor_decal/borderfloor{ @@ -6339,10 +6317,10 @@ /obj/machinery/door/airlock/multi_tile/glass{ name = "Pool" }, -/obj/machinery/door/firedoor, /obj/effect/floor_decal/steeldecal/steel_decals_central1{ dir = 8 }, +/obj/machinery/door/firedoor/glass, /turf/simulated/floor/tiled/monofloor{ dir = 8 }, @@ -6350,10 +6328,10 @@ "kV" = ( /obj/machinery/atmospherics/pipe/simple/hidden/supply, /obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, -/obj/machinery/door/firedoor, /obj/effect/floor_decal/steeldecal/steel_decals_central1{ dir = 4 }, +/obj/machinery/door/firedoor/glass, /turf/simulated/floor/tiled/monofloor{ dir = 4 }, @@ -6553,7 +6531,7 @@ /obj/effect/floor_decal/steeldecal/steel_decals7{ dir = 10 }, -/obj/machinery/camera/network/northern_star{ +/obj/machinery/camera/network/tether{ dir = 9 }, /turf/simulated/floor/tiled, @@ -7413,7 +7391,7 @@ /turf/simulated/floor/tiled/steel_grid, /area/tether/surfacebase/north_stairs_three) "nd" = ( -/obj/machinery/camera/network/northern_star{ +/obj/machinery/camera/network/tether{ dir = 4 }, /turf/simulated/open, @@ -7428,7 +7406,7 @@ /turf/simulated/wall, /area/tether/surfacebase/north_stairs_three) "ng" = ( -/obj/machinery/camera/network/northern_star{ +/obj/machinery/camera/network/tether{ dir = 4 }, /obj/effect/floor_decal/borderfloor{ @@ -7688,10 +7666,10 @@ /turf/simulated/floor/tiled, /area/crew_quarters/pool) "nC" = ( -/obj/machinery/door/firedoor, /obj/machinery/door/airlock/glass{ name = "Recreation Area" }, +/obj/machinery/door/firedoor/glass, /turf/simulated/floor/tiled/steel_grid, /area/crew_quarters/recreation_area) "nD" = ( @@ -8361,10 +8339,10 @@ /obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, /obj/machinery/atmospherics/pipe/simple/hidden/supply, /obj/structure/disposalpipe/segment, -/obj/machinery/door/firedoor, /obj/machinery/door/airlock/glass{ name = "Recreation Area" }, +/obj/machinery/door/firedoor/glass, /turf/simulated/floor/tiled/steel_grid, /area/crew_quarters/recreation_area) "oW" = ( @@ -8707,9 +8685,21 @@ /turf/simulated/floor/plating, /area/tether/surfacebase/atrium_three) "pA" = ( -/obj/random/junk, -/turf/simulated/floor/plating, -/area/tether/surfacebase/atrium_three) +/obj/machinery/status_display{ + pixel_y = 30 + }, +/obj/effect/floor_decal/borderfloor{ + dir = 9 + }, +/obj/effect/floor_decal/corner/mauve/border{ + dir = 9 + }, +/obj/structure/disposalpipe/trunk{ + dir = 4 + }, +/obj/machinery/disposal, +/turf/simulated/floor/tiled, +/area/rnd/research/researchdivision) "pB" = ( /obj/effect/floor_decal/borderfloor{ dir = 8 @@ -8859,7 +8849,7 @@ /obj/machinery/door/airlock/glass{ name = "Pool" }, -/obj/machinery/door/firedoor, +/obj/machinery/door/firedoor/glass, /turf/simulated/floor/tiled/steel_grid, /area/crew_quarters/pool) "pO" = ( @@ -9463,13 +9453,13 @@ /obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ dir = 4 }, -/obj/machinery/door/firedoor, /obj/machinery/door/airlock{ name = "Unisex Showers" }, /obj/structure/cable{ icon_state = "4-8" }, +/obj/machinery/door/firedoor/glass, /turf/simulated/floor/tiled/steel_grid, /area/crew_quarters/recreation_area_restroom{ name = "\improper Recreation Area Showers" @@ -9587,7 +9577,7 @@ /turf/simulated/floor/tiled, /area/tether/surfacebase/atrium_three) "qS" = ( -/obj/machinery/camera/network/northern_star{ +/obj/machinery/camera/network/tether{ dir = 9 }, /obj/effect/floor_decal/borderfloor{ @@ -9788,7 +9778,7 @@ name = "\improper Recreation Area Showers" }) "rn" = ( -/obj/machinery/camera/network/northern_star{ +/obj/machinery/camera/network/tether{ dir = 4 }, /obj/effect/floor_decal/borderfloor{ @@ -10141,6 +10131,11 @@ "rT" = ( /obj/effect/floor_decal/corner/grey/diagonal, /obj/structure/closet/secure_closet/freezer/meat, +/obj/machinery/alarm{ + dir = 8; + icon_state = "alarm0"; + pixel_x = 24 + }, /turf/simulated/floor/tiled/white, /area/crew_quarters/kitchen) "rU" = ( @@ -10250,7 +10245,7 @@ d2 = 8; icon_state = "4-8" }, -/obj/machinery/camera/network/northern_star, +/obj/machinery/camera/network/tether, /obj/effect/floor_decal/borderfloor{ dir = 1 }, @@ -11158,7 +11153,9 @@ /turf/simulated/floor/wood, /area/crew_quarters/bar) "tz" = ( -/obj/machinery/smartfridge, +/obj/machinery/smartfridge{ + req_access = list(28) + }, /turf/simulated/wall, /area/crew_quarters/kitchen) "tA" = ( @@ -11508,7 +11505,7 @@ /turf/simulated/shuttle/wall/voidcraft/green{ hard_corner = 1 }, -/area/hallway/lower/third_south) +/area/tether/elevator) "ue" = ( /obj/structure/grille, /obj/structure/window/reinforced/full, @@ -11703,7 +11700,7 @@ /area/rnd/breakroom) "ux" = ( /turf/simulated/floor/holofloor/tiled/dark, -/area/hallway/lower/third_south) +/area/tether/elevator) "uy" = ( /obj/effect/floor_decal/borderfloor{ dir = 1 @@ -12108,11 +12105,6 @@ /turf/simulated/floor/tiled, /area/tether/surfacebase/atrium_three) "vi" = ( -/obj/structure/cable{ - d1 = 1; - d2 = 4; - icon_state = "1-4" - }, /obj/structure/disposalpipe/segment{ dir = 4 }, @@ -12126,29 +12118,8 @@ dir = 10 }, /obj/effect/floor_decal/steeldecal/steel_decals7, -/turf/simulated/floor/tiled, -/area/tether/surfacebase/atrium_three) -"vj" = ( /obj/structure/cable{ - d1 = 2; - d2 = 8; - icon_state = "2-8" - }, -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/obj/effect/floor_decal/borderfloor{ - dir = 1 - }, -/obj/effect/floor_decal/corner/lightgrey/border{ - dir = 1 - }, -/obj/effect/floor_decal/steeldecal/steel_decals7, -/obj/effect/floor_decal/steeldecal/steel_decals7{ - dir = 4 - }, -/obj/structure/window/basic{ - dir = 1 + icon_state = "1-2" }, /turf/simulated/floor/tiled, /area/tether/surfacebase/atrium_three) @@ -12356,30 +12327,14 @@ }, /turf/simulated/floor/tiled, /area/tether/surfacebase/atrium_three) -"vF" = ( -/obj/structure/cable{ - icon_state = "1-2" - }, -/obj/machinery/atmospherics/pipe/simple/hidden/supply{ +"vG" = ( +/obj/structure/disposalpipe/segment{ dir = 4 }, /obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ dir = 4 }, -/obj/structure/disposalpipe/segment{ - dir = 4; - icon_state = "pipe-c" - }, -/turf/simulated/floor/tiled, -/area/tether/surfacebase/atrium_three) -"vG" = ( -/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{ - dir = 1 - }, -/obj/machinery/atmospherics/pipe/manifold/hidden/supply{ - dir = 1 - }, -/obj/structure/disposalpipe/segment{ +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ dir = 4 }, /turf/simulated/floor/tiled, @@ -12549,7 +12504,7 @@ /turf/simulated/shuttle/wall/voidcraft/green{ hard_corner = 1 }, -/area/hallway/lower/third_south) +/area/tether/elevator) "vZ" = ( /obj/machinery/door/firedoor/glass/hidden/steel{ dir = 1 @@ -12575,6 +12530,12 @@ /obj/effect/floor_decal/steeldecal/steel_decals7{ dir = 8 }, +/obj/structure/cable{ + d1 = 4; + d2 = 8; + icon_state = "4-8"; + pixel_x = 0 + }, /turf/simulated/floor/tiled, /area/hallway/lower/third_south) "wd" = ( @@ -12587,6 +12548,12 @@ /obj/effect/floor_decal/steeldecal/steel_decals7{ dir = 8 }, +/obj/structure/cable{ + d1 = 4; + d2 = 8; + icon_state = "4-8"; + pixel_x = 0 + }, /turf/simulated/floor/tiled, /area/hallway/lower/third_south) "we" = ( @@ -12602,6 +12569,12 @@ dir = 1; pixel_y = -25 }, +/obj/structure/cable{ + d1 = 4; + d2 = 8; + icon_state = "4-8"; + pixel_x = 0 + }, /turf/simulated/floor/tiled, /area/hallway/lower/third_south) "wf" = ( @@ -12628,6 +12601,12 @@ /obj/machinery/door/airlock/multi_tile/glass{ dir = 2 }, +/obj/structure/cable{ + d1 = 4; + d2 = 8; + icon_state = "4-8"; + pixel_x = 0 + }, /turf/simulated/floor/tiled, /area/hallway/lower/third_south) "wh" = ( @@ -12642,16 +12621,15 @@ /obj/effect/floor_decal/steeldecal/steel_decals7{ dir = 8 }, +/obj/structure/cable{ + d1 = 4; + d2 = 8; + icon_state = "4-8"; + pixel_x = 0 + }, /turf/simulated/floor/tiled, /area/tether/surfacebase/atrium_three) "wi" = ( -/obj/structure/cable{ - icon_state = "1-2" - }, -/obj/structure/cable{ - icon_state = "2-4" - }, -/obj/structure/disposalpipe/segment, /obj/effect/floor_decal/borderfloor, /obj/effect/floor_decal/corner/lightgrey/border, /obj/effect/floor_decal/steeldecal/steel_decals7{ @@ -12660,6 +12638,9 @@ /obj/effect/floor_decal/steeldecal/steel_decals7{ dir = 8 }, +/obj/structure/cable{ + icon_state = "4-8" + }, /turf/simulated/floor/tiled, /area/tether/surfacebase/atrium_three) "wj" = ( @@ -12700,28 +12681,13 @@ icon_state = "4-8" }, /obj/effect/floor_decal/borderfloor, -/obj/effect/floor_decal/industrial/danger, /obj/effect/floor_decal/steeldecal/steel_decals7{ dir = 1 }, /obj/effect/floor_decal/steeldecal/steel_decals7{ dir = 8 }, -/turf/simulated/floor/tiled, -/area/tether/surfacebase/atrium_three) -"wm" = ( -/obj/structure/cable{ - icon_state = "4-8" - }, -/obj/effect/floor_decal/borderfloor, -/obj/machinery/light, /obj/effect/floor_decal/corner/lightgrey/border, -/obj/effect/floor_decal/steeldecal/steel_decals7{ - dir = 1 - }, -/obj/effect/floor_decal/steeldecal/steel_decals7{ - dir = 8 - }, /turf/simulated/floor/tiled, /area/tether/surfacebase/atrium_three) "wn" = ( @@ -12736,19 +12702,10 @@ /obj/effect/floor_decal/steeldecal/steel_decals7{ dir = 8 }, -/turf/simulated/floor/tiled, -/area/tether/surfacebase/atrium_three) -"wo" = ( -/obj/machinery/atmospherics/pipe/simple/hidden/supply, -/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, -/obj/effect/floor_decal/borderfloor, -/obj/effect/floor_decal/corner/lightgrey/border, -/obj/effect/floor_decal/steeldecal/steel_decals7{ - dir = 1 - }, -/obj/effect/floor_decal/steeldecal/steel_decals7{ - dir = 8 +/obj/structure/cable{ + icon_state = "4-8" }, +/obj/machinery/light, /turf/simulated/floor/tiled, /area/tether/surfacebase/atrium_three) "wp" = ( @@ -12970,39 +12927,10 @@ dir = 1 }, /turf/simulated/wall, -/area/maintenance/lower/atrium) +/area/vacant/vacant_library) "wJ" = ( /turf/simulated/wall, /area/maintenance/lower/atrium) -"wK" = ( -/obj/machinery/door/firedoor/glass, -/obj/structure/cable{ - icon_state = "1-2" - }, -/obj/structure/disposalpipe/segment, -/obj/machinery/door/airlock/maintenance/common, -/turf/simulated/floor/plating, -/area/maintenance/lower/atrium) -"wL" = ( -/obj/structure/grille, -/obj/structure/railing{ - dir = 1 - }, -/turf/simulated/floor/tiled/techmaint, -/area/tether/surfacebase/atrium_three) -"wM" = ( -/obj/structure/cable{ - d1 = 1; - d2 = 2; - icon_state = "1-2"; - pixel_y = 0 - }, -/obj/machinery/door/airlock/maintenance/int{ - name = "Emergency Storage"; - req_one_access = list() - }, -/turf/simulated/floor/plating, -/area/maintenance/lower/atrium) "wN" = ( /obj/structure/sign/directions/medical{ dir = 4; @@ -13022,13 +12950,6 @@ }, /turf/simulated/wall, /area/maintenance/lower/atrium) -"wO" = ( -/obj/machinery/door/airlock/maintenance/common, -/obj/machinery/door/firedoor/glass, -/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, -/obj/machinery/atmospherics/pipe/simple/hidden/supply, -/turf/simulated/floor/plating, -/area/maintenance/lower/atrium) "wP" = ( /turf/simulated/wall, /area/hydroponics) @@ -13165,6 +13086,11 @@ /obj/machinery/atmospherics/pipe/simple/hidden/supply, /obj/machinery/door/firedoor/glass, /obj/machinery/door/airlock/glass, +/obj/structure/cable{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, /turf/simulated/floor/tiled, /area/hallway/lower/third_south) "xe" = ( @@ -13186,59 +13112,61 @@ /turf/simulated/floor/tiled, /area/hallway/lower/third_south) "xf" = ( -/obj/structure/table/rack, -/obj/item/weapon/reagent_containers/food/drinks/bottle/gin, -/obj/random/maintenance/clean, -/obj/random/maintenance/clean, -/obj/random/maintenance/clean, -/obj/random/maintenance/research, +/obj/structure/reagent_dispensers/fueltank, /turf/simulated/floor/plating, -/area/maintenance/lower/atrium) +/area/vacant/vacant_library) "xg" = ( -/obj/machinery/alarm{ - pixel_y = 22 - }, -/turf/simulated/floor/plating, -/area/maintenance/lower/atrium) -"xh" = ( -/obj/effect/decal/cleanable/blood/splatter, -/turf/simulated/floor/plating, -/area/maintenance/lower/atrium) -"xi" = ( -/obj/random/trash_pile, -/turf/simulated/floor/plating, -/area/maintenance/lower/atrium) -"xj" = ( -/obj/machinery/light/small{ - dir = 4 - }, -/turf/simulated/floor/plating, -/area/maintenance/lower/atrium) -"xk" = ( -/obj/structure/cable{ - icon_state = "1-2" - }, /obj/effect/decal/cleanable/dirt, -/obj/structure/disposalpipe/segment, +/obj/structure/reagent_dispensers/watertank, /turf/simulated/floor/plating, -/area/maintenance/lower/atrium) -"xl" = ( +/area/vacant/vacant_library) +"xi" = ( +/obj/structure/bed/chair/comfy/beige, +/turf/simulated/floor/carpet, +/area/vacant/vacant_library) +"xj" = ( +/obj/machinery/light_construct{ + icon_state = "tube-construct-stage1"; + dir = 1 + }, +/turf/simulated/floor/plating, +/turf/simulated/floor/wood/broken, +/area/vacant/vacant_library) +"xk" = ( +/obj/structure/bookcase, +/obj/item/weapon/book/manual/engineering_guide, +/obj/effect/decal/cleanable/cobweb{ + icon_state = "cobweb2" + }, +/turf/simulated/floor/wood, +/area/vacant/vacant_library) +"xm" = ( +/obj/structure/disposalpipe/segment, /obj/structure/cable{ d1 = 1; d2 = 2; icon_state = "1-2"; pixel_y = 0 }, -/turf/simulated/floor/plating, -/area/maintenance/lower/atrium) -"xm" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, /obj/effect/decal/cleanable/dirt, -/obj/random/trash_pile, /turf/simulated/floor/plating, /area/maintenance/lower/atrium) "xn" = ( -/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, -/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/machinery/floodlight, +/obj/machinery/alarm{ + dir = 8; + icon_state = "alarm0"; + pixel_x = 24 + }, +/obj/machinery/firealarm{ + dir = 2; + layer = 3.3; + pixel_x = 0; + pixel_y = 26 + }, +/obj/effect/decal/cleanable/dirt, /turf/simulated/floor/plating, /area/maintenance/lower/atrium) "xo" = ( @@ -13360,25 +13288,6 @@ /turf/simulated/floor/wood, /area/crew_quarters/bar) "xy" = ( -/turf/simulated/wall, -/area/rnd/research) -"xz" = ( -/obj/machinery/status_display{ - pixel_y = 30 - }, -/obj/effect/floor_decal/borderfloor{ - dir = 9 - }, -/obj/effect/floor_decal/corner/mauve/border{ - dir = 9 - }, -/obj/structure/disposalpipe/trunk{ - dir = 4 - }, -/obj/machinery/disposal, -/turf/simulated/floor/tiled, -/area/rnd/research) -"xA" = ( /obj/effect/floor_decal/borderfloor{ dir = 1 }, @@ -13390,7 +13299,31 @@ icon_state = "pipe-c" }, /turf/simulated/floor/tiled, -/area/rnd/research) +/area/rnd/research/researchdivision) +"xz" = ( +/obj/effect/floor_decal/borderfloor{ + dir = 1 + }, +/obj/effect/floor_decal/corner/mauve/border{ + dir = 1 + }, +/obj/effect/floor_decal/borderfloor/corner2{ + dir = 1 + }, +/obj/effect/floor_decal/corner/mauve/bordercorner2{ + dir = 1 + }, +/turf/simulated/floor/tiled, +/area/rnd/research/researchdivision) +"xA" = ( +/obj/effect/floor_decal/steeldecal/steel_decals4{ + dir = 4 + }, +/obj/effect/floor_decal/steeldecal/steel_decals4{ + dir = 9 + }, +/turf/simulated/floor/tiled, +/area/rnd/research/researchdivision) "xB" = ( /obj/effect/floor_decal/borderfloor{ dir = 1 @@ -13399,38 +13332,14 @@ dir = 1 }, /obj/effect/floor_decal/borderfloor/corner2{ - dir = 1 + dir = 4 }, /obj/effect/floor_decal/corner/mauve/bordercorner2{ - dir = 1 + dir = 4 }, /turf/simulated/floor/tiled, -/area/rnd/research) +/area/rnd/research/researchdivision) "xC" = ( -/obj/effect/floor_decal/steeldecal/steel_decals4{ - dir = 4 - }, -/obj/effect/floor_decal/steeldecal/steel_decals4{ - dir = 9 - }, -/turf/simulated/floor/tiled, -/area/rnd/research) -"xD" = ( -/obj/effect/floor_decal/borderfloor{ - dir = 1 - }, -/obj/effect/floor_decal/corner/mauve/border{ - dir = 1 - }, -/obj/effect/floor_decal/borderfloor/corner2{ - dir = 4 - }, -/obj/effect/floor_decal/corner/mauve/bordercorner2{ - dir = 4 - }, -/turf/simulated/floor/tiled, -/area/rnd/research) -"xE" = ( /obj/effect/floor_decal/borderfloor{ dir = 1 }, @@ -13439,8 +13348,8 @@ }, /obj/machinery/camera/network/research, /turf/simulated/floor/tiled, -/area/rnd/research) -"xF" = ( +/area/rnd/research/researchdivision) +"xD" = ( /obj/effect/floor_decal/borderfloor{ dir = 1 }, @@ -13448,8 +13357,8 @@ dir = 1 }, /turf/simulated/floor/tiled, -/area/rnd/research) -"xG" = ( +/area/rnd/research/researchdivision) +"xE" = ( /obj/structure/cable/green{ d1 = 1; d2 = 2; @@ -13465,8 +13374,8 @@ dir = 9 }, /turf/simulated/floor/tiled, -/area/rnd/research) -"xH" = ( +/area/rnd/research/researchdivision) +"xF" = ( /obj/effect/floor_decal/borderfloor{ dir = 1 }, @@ -13481,8 +13390,8 @@ }, /obj/structure/disposalpipe/segment, /turf/simulated/floor/tiled, -/area/rnd/research) -"xI" = ( +/area/rnd/research/researchdivision) +"xG" = ( /obj/effect/floor_decal/borderfloor{ dir = 1 }, @@ -13491,8 +13400,8 @@ }, /obj/structure/disposalpipe/segment, /turf/simulated/floor/tiled, -/area/rnd/research) -"xJ" = ( +/area/rnd/research/researchdivision) +"xH" = ( /obj/machinery/newscaster{ pixel_x = 0; pixel_y = 30 @@ -13505,13 +13414,35 @@ }, /obj/structure/flora/pottedplant/stoutbush, /turf/simulated/floor/tiled, -/area/rnd/research) -"xK" = ( +/area/rnd/research/researchdivision) +"xI" = ( /obj/structure/grille, /obj/structure/window/reinforced/full, /obj/machinery/door/firedoor, /turf/simulated/floor/plating, -/area/rnd/research) +/area/rnd/research/researchdivision) +"xJ" = ( +/obj/effect/floor_decal/borderfloor{ + dir = 8 + }, +/obj/effect/floor_decal/corner/mauve/border{ + dir = 8 + }, +/turf/simulated/floor/tiled, +/area/rnd/research/researchdivision) +"xK" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 6 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 6 + }, +/obj/structure/disposalpipe/segment{ + dir = 1; + icon_state = "pipe-c" + }, +/turf/simulated/floor/tiled, +/area/rnd/research/researchdivision) "xL" = ( /obj/structure/table/glass, /obj/effect/floor_decal/borderfloor{ @@ -13614,36 +13545,49 @@ "xS" = ( /obj/machinery/door/firedoor/glass, /obj/machinery/door/airlock/maintenance/common, +/obj/structure/cable{ + d1 = 4; + d2 = 8; + icon_state = "4-8"; + pixel_x = 0 + }, /turf/simulated/floor/plating, -/area/maintenance/lower/atrium) +/area/vacant/vacant_library) "xT" = ( +/obj/effect/decal/cleanable/dirt, +/obj/effect/floor_decal/rust, +/obj/structure/cable{ + d1 = 4; + d2 = 8; + icon_state = "4-8"; + pixel_x = 0 + }, /turf/simulated/floor/plating, -/area/maintenance/lower/atrium) +/area/vacant/vacant_library) "xU" = ( /obj/random/junk, /turf/simulated/floor/plating, /area/maintenance/lower/atrium) "xV" = ( -/obj/machinery/door/airlock/maintenance/common, -/obj/machinery/door/firedoor/glass, +/obj/effect/decal/cleanable/dirt, /turf/simulated/floor/plating, -/area/maintenance/lower/atrium) +/area/vacant/vacant_library) "xW" = ( -/obj/effect/decal/cleanable/dirt, -/obj/structure/closet, -/obj/random/action_figure, -/obj/random/maintenance/clean, -/obj/random/maintenance/clean, -/obj/random/maintenance/research, /turf/simulated/floor/plating, -/area/maintenance/lower/atrium) +/area/vacant/vacant_library) "xX" = ( +/obj/structure/disposalpipe/segment, +/obj/structure/cable{ + icon_state = "1-8" + }, +/obj/structure/cable{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, /obj/effect/decal/cleanable/dirt, -/obj/structure/closet, -/obj/random/maintenance/clean, -/obj/random/maintenance/clean, -/obj/random/maintenance/clean, -/obj/random/maintenance/research, /turf/simulated/floor/plating, /area/maintenance/lower/atrium) "xY" = ( @@ -13741,40 +13685,18 @@ /turf/simulated/floor/wood, /area/crew_quarters/bar) "yi" = ( -/obj/effect/floor_decal/borderfloor{ - dir = 8 +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 }, -/obj/effect/floor_decal/corner/mauve/border{ - dir = 8 +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, +/obj/structure/disposalpipe/segment{ + dir = 4 }, /turf/simulated/floor/tiled, -/area/rnd/research) +/area/rnd/research/researchdivision) "yj" = ( -/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ - dir = 6 - }, -/obj/machinery/atmospherics/pipe/simple/hidden/supply{ - dir = 6 - }, -/obj/structure/disposalpipe/segment{ - dir = 1; - icon_state = "pipe-c" - }, -/turf/simulated/floor/tiled, -/area/rnd/research) -"yk" = ( -/obj/machinery/atmospherics/pipe/simple/hidden/supply{ - dir = 4 - }, -/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ - dir = 4 - }, -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/turf/simulated/floor/tiled, -/area/rnd/research) -"yl" = ( /obj/machinery/atmospherics/pipe/simple/hidden/supply{ dir = 4 }, @@ -13785,8 +13707,8 @@ dir = 1 }, /turf/simulated/floor/tiled, -/area/rnd/research) -"ym" = ( +/area/rnd/research/researchdivision) +"yk" = ( /obj/structure/cable/green{ d1 = 1; d2 = 2; @@ -13799,28 +13721,28 @@ sortType = "Research" }, /turf/simulated/floor/tiled, -/area/rnd/research) +/area/rnd/research/researchdivision) +"yl" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, +/obj/structure/disposalpipe/segment, +/turf/simulated/floor/tiled, +/area/rnd/research/researchdivision) +"ym" = ( +/obj/structure/disposalpipe/segment, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 10 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 10 + }, +/turf/simulated/floor/tiled, +/area/rnd/research/researchdivision) "yn" = ( -/obj/machinery/atmospherics/pipe/simple/hidden/supply{ - dir = 4 - }, -/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ - dir = 4 - }, -/obj/structure/disposalpipe/segment, -/turf/simulated/floor/tiled, -/area/rnd/research) -"yo" = ( -/obj/structure/disposalpipe/segment, -/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ - dir = 10 - }, -/obj/machinery/atmospherics/pipe/simple/hidden/supply{ - dir = 10 - }, -/turf/simulated/floor/tiled, -/area/rnd/research) -"yp" = ( /obj/effect/floor_decal/borderfloor{ dir = 4 }, @@ -13834,7 +13756,27 @@ dir = 5 }, /turf/simulated/floor/tiled, -/area/rnd/research) +/area/rnd/research/researchdivision) +"yo" = ( +/obj/machinery/alarm{ + dir = 4; + icon_state = "alarm0"; + pixel_x = -22; + pixel_y = 0 + }, +/obj/effect/floor_decal/borderfloor{ + dir = 8 + }, +/obj/effect/floor_decal/corner/mauve/border{ + dir = 8 + }, +/turf/simulated/floor/tiled, +/area/rnd/research/researchdivision) +"yp" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/turf/simulated/floor/tiled, +/area/rnd/research/researchdivision) "yq" = ( /obj/structure/table/glass, /obj/effect/floor_decal/borderfloor{ @@ -13917,39 +13859,29 @@ /turf/simulated/floor/tiled, /area/hallway/lower/third_south) "yx" = ( -/turf/simulated/wall, -/area/maintenance/engineering/pumpstation) +/obj/effect/decal/cleanable/dirt, +/obj/structure/closet/crate, +/obj/random/maintenance/engineering, +/obj/item/weapon/flame/lighter/zippo, +/obj/random/tool, +/turf/simulated/floor/plating, +/area/vacant/vacant_library) "yy" = ( -/obj/effect/decal/cleanable/dirt, -/obj/structure/reagent_dispensers/fueltank, -/turf/simulated/floor/plating, -/area/maintenance/lower/atrium) +/turf/simulated/floor/wood, +/area/vacant/vacant_library) "yz" = ( -/obj/machinery/firealarm{ - dir = 2; - layer = 3.3; - pixel_x = 0; - pixel_y = 26 +/obj/structure/bed/chair/comfy/beige{ + dir = 4 }, -/obj/effect/decal/cleanable/dirt, -/turf/simulated/floor/plating, -/area/maintenance/lower/atrium) +/turf/simulated/floor/wood, +/area/vacant/vacant_library) "yA" = ( -/obj/machinery/alarm{ - pixel_y = 22 - }, +/obj/structure/table/woodentable, +/obj/item/stack/tile/carpet, /obj/effect/decal/cleanable/dirt, -/turf/simulated/floor/plating, -/area/maintenance/lower/atrium) -"yB" = ( -/obj/machinery/power/apc{ - dir = 4; - name = "east bump"; - pixel_x = 28 - }, -/obj/structure/cable, -/turf/simulated/floor/plating, -/area/maintenance/lower/atrium) +/obj/random/tool, +/turf/simulated/floor/wood, +/area/vacant/vacant_library) "yC" = ( /obj/machinery/light{ icon_state = "tube1"; @@ -13996,6 +13928,18 @@ "yG" = ( /turf/simulated/floor/tiled, /area/hallway/lower/third_south) +"yH" = ( +/obj/structure/cable/green{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/machinery/door/firedoor/glass, +/turf/simulated/floor/tiled/steel_grid, +/area/assembly/robotics) "yI" = ( /obj/machinery/atmospherics/pipe/simple/hidden/supply, /obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{ @@ -14041,41 +13985,21 @@ /turf/simulated/floor/wood, /area/crew_quarters/bar) "yN" = ( -/obj/machinery/alarm{ - dir = 4; - icon_state = "alarm0"; - pixel_x = -22; - pixel_y = 0 - }, -/obj/effect/floor_decal/borderfloor{ +/obj/structure/railing{ dir = 8 }, -/obj/effect/floor_decal/corner/mauve/border{ - dir = 8 +/obj/structure/railing{ + dir = 1 }, -/turf/simulated/floor/tiled, -/area/rnd/research) +/turf/simulated/open, +/area/rnd/research/researchdivision) "yO" = ( -/obj/machinery/atmospherics/pipe/simple/hidden/supply, -/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, -/turf/simulated/floor/tiled, -/area/rnd/research) +/obj/structure/railing{ + dir = 1 + }, +/turf/simulated/open, +/area/rnd/research/researchdivision) "yP" = ( -/obj/structure/railing{ - dir = 8 - }, -/obj/structure/railing{ - dir = 1 - }, -/turf/simulated/open, -/area/rnd/research) -"yQ" = ( -/obj/structure/railing{ - dir = 1 - }, -/turf/simulated/open, -/area/rnd/research) -"yR" = ( /obj/structure/railing{ dir = 4 }, @@ -14083,15 +14007,15 @@ dir = 1 }, /turf/simulated/open, -/area/rnd/research) -"yS" = ( +/area/rnd/research/researchdivision) +"yQ" = ( /obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, /turf/simulated/floor/tiled, -/area/rnd/research) -"yT" = ( +/area/rnd/research/researchdivision) +"yR" = ( /turf/simulated/floor/tiled, -/area/rnd/research) -"yU" = ( +/area/rnd/research/researchdivision) +"yS" = ( /obj/structure/cable/green{ d1 = 1; d2 = 4; @@ -14099,8 +14023,8 @@ }, /obj/structure/disposalpipe/segment, /turf/simulated/floor/tiled, -/area/rnd/research) -"yV" = ( +/area/rnd/research/researchdivision) +"yT" = ( /obj/structure/cable/green{ d1 = 2; d2 = 4; @@ -14116,8 +14040,8 @@ icon_state = "pipe-c" }, /turf/simulated/floor/tiled, -/area/rnd/research) -"yW" = ( +/area/rnd/research/researchdivision) +"yU" = ( /obj/structure/cable/green{ d1 = 4; d2 = 8; @@ -14134,8 +14058,8 @@ }, /obj/structure/disposalpipe/segment, /turf/simulated/floor/tiled, -/area/rnd/research) -"yX" = ( +/area/rnd/research/researchdivision) +"yV" = ( /obj/structure/cable/green{ d1 = 4; d2 = 8; @@ -14155,8 +14079,8 @@ dir = 10 }, /turf/simulated/floor/tiled, -/area/rnd/research) -"yY" = ( +/area/rnd/research/researchdivision) +"yW" = ( /obj/machinery/door/firedoor/glass, /obj/structure/cable/green{ d1 = 4; @@ -14176,7 +14100,27 @@ name = "Front Desk" }, /turf/simulated/floor/tiled/steel_grid, -/area/rnd/research) +/area/rnd/research/researchdivision) +"yX" = ( +/obj/effect/floor_decal/borderfloor{ + dir = 8 + }, +/obj/effect/floor_decal/corner/mauve/border{ + dir = 8 + }, +/obj/structure/extinguisher_cabinet{ + dir = 4; + icon_state = "extinguisher_closed"; + pixel_x = -30 + }, +/turf/simulated/floor/tiled, +/area/rnd/research/researchdivision) +"yY" = ( +/obj/structure/railing{ + dir = 8 + }, +/turf/simulated/open, +/area/rnd/research/researchdivision) "yZ" = ( /obj/structure/cable/green{ d1 = 4; @@ -14296,76 +14240,63 @@ /turf/simulated/floor/tiled, /area/hallway/lower/third_south) "zh" = ( -/obj/machinery/portable_atmospherics/powered/scrubber, -/obj/machinery/atmospherics/portables_connector, -/turf/simulated/floor/plating, -/area/maintenance/engineering/pumpstation) -"zi" = ( -/obj/machinery/portable_atmospherics/powered/scrubber, -/obj/machinery/atmospherics/portables_connector, -/obj/machinery/camera/network/engineering, -/turf/simulated/floor/plating, -/area/maintenance/engineering/pumpstation) -"zj" = ( +/obj/structure/table/rack, +/obj/random/maintenance/research, +/obj/random/maintenance/engineering, /obj/machinery/light/small{ - dir = 1 + dir = 8; + pixel_x = 0 }, -/obj/machinery/portable_atmospherics/powered/scrubber, -/obj/machinery/atmospherics/portables_connector, /turf/simulated/floor/plating, -/area/maintenance/engineering/pumpstation) -"zk" = ( +/area/vacant/vacant_library) +"zi" = ( +/obj/item/weapon/caution/cone, /obj/structure/cable{ icon_state = "1-4" }, -/obj/structure/disposalpipe/segment{ - dir = 1; - icon_state = "pipe-c" - }, /turf/simulated/floor/plating, -/area/maintenance/lower/atrium) -"zl" = ( -/obj/machinery/alarm{ - dir = 8; - icon_state = "alarm0"; - pixel_x = 24 - }, +/area/vacant/vacant_library) +"zj" = ( +/obj/effect/decal/cleanable/dirt, +/obj/machinery/door/firedoor/glass, +/obj/machinery/door/airlock/maintenance/common, /obj/structure/cable{ - icon_state = "2-8" - }, -/obj/effect/decal/cleanable/dirt, -/obj/structure/disposalpipe/segment{ - dir = 2; - icon_state = "pipe-c" + d1 = 4; + d2 = 8; + icon_state = "4-8"; + pixel_x = 0 }, /turf/simulated/floor/plating, -/area/maintenance/lower/atrium) +/area/vacant/vacant_library) "zm" = ( -/obj/machinery/portable_atmospherics/powered/pump/filled, -/obj/machinery/light/small{ - dir = 8 - }, -/turf/simulated/floor/tiled/techfloor, -/area/maintenance/lower/atrium) +/turf/simulated/floor/plating, +/turf/simulated/floor/wood/broken, +/area/vacant/vacant_library) "zn" = ( +/obj/random/tech_supply, +/obj/structure/table/steel, +/obj/random/maintenance/engineering, +/obj/item/stack/cable_coil/random, +/obj/machinery/light/small{ + dir = 4 + }, /obj/effect/decal/cleanable/dirt, /turf/simulated/floor/plating, -/area/maintenance/lower/atrium) -"zo" = ( -/obj/machinery/space_heater, -/turf/simulated/floor/tiled/techfloor, -/area/maintenance/lower/atrium) +/area/maintenance/substation/bar{ + name = "\improper Surface Civilian Substation" + }) "zp" = ( -/obj/structure/reagent_dispensers/watertank, -/turf/simulated/floor/plating, -/area/maintenance/lower/atrium) -"zq" = ( -/obj/structure/cable/green{ +/obj/structure/disposalpipe/segment, +/obj/structure/cable{ + d1 = 1; d2 = 2; - icon_state = "0-2" + icon_state = "1-2"; + pixel_y = 0 }, -/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, /obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/obj/machinery/door/firedoor/glass, +/obj/machinery/door/airlock/maintenance/common, /turf/simulated/floor/plating, /area/maintenance/lower/atrium) "zr" = ( @@ -14434,6 +14365,10 @@ }, /turf/simulated/wall, /area/crew_quarters/bar) +"zw" = ( +/obj/machinery/door/firedoor/glass, +/turf/simulated/floor/tiled/steel_grid, +/area/assembly/robotics) "zx" = ( /obj/structure/table/bench/wooden, /obj/machinery/light{ @@ -14448,59 +14383,39 @@ /turf/simulated/floor/wood, /area/crew_quarters/bar) "zy" = ( -/obj/effect/floor_decal/borderfloor{ - dir = 8 - }, -/obj/effect/floor_decal/corner/mauve/border{ - dir = 8 - }, -/obj/structure/extinguisher_cabinet{ - dir = 4; - icon_state = "extinguisher_closed"; - pixel_x = -30 - }, -/turf/simulated/floor/tiled, -/area/rnd/research) +/turf/simulated/open, +/area/rnd/research/researchdivision) "zz" = ( -/obj/structure/railing{ - dir = 8 - }, -/turf/simulated/open, -/area/rnd/research) -"zA" = ( -/turf/simulated/open, -/area/rnd/research) -"zB" = ( /obj/structure/railing{ dir = 4 }, /turf/simulated/open, -/area/rnd/research) -"zC" = ( +/area/rnd/research/researchdivision) +"zA" = ( /obj/machinery/atmospherics/unary/vent_scrubber/on{ dir = 1 }, /turf/simulated/floor/tiled, -/area/rnd/research) -"zD" = ( +/area/rnd/research/researchdivision) +"zB" = ( /obj/structure/disposalpipe/segment, /turf/simulated/floor/tiled, -/area/rnd/research) -"zE" = ( +/area/rnd/research/researchdivision) +"zC" = ( /obj/structure/cable/green{ d1 = 1; d2 = 2; icon_state = "1-2" }, /turf/simulated/floor/tiled, -/area/rnd/research) -"zF" = ( +/area/rnd/research/researchdivision) +"zD" = ( /obj/machinery/atmospherics/pipe/simple/hidden/supply, /obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, /obj/structure/disposalpipe/segment, /turf/simulated/floor/tiled, -/area/rnd/research) -"zG" = ( +/area/rnd/research/researchdivision) +"zE" = ( /obj/effect/floor_decal/borderfloor{ dir = 4 }, @@ -14517,7 +14432,27 @@ pixel_x = 32 }, /turf/simulated/floor/tiled, -/area/rnd/research) +/area/rnd/research/researchdivision) +"zF" = ( +/obj/machinery/computer/guestpass{ + dir = 4; + pixel_x = -28; + pixel_y = 0 + }, +/obj/effect/floor_decal/borderfloor{ + dir = 8 + }, +/obj/effect/floor_decal/corner/mauve/border{ + dir = 8 + }, +/turf/simulated/floor/tiled, +/area/rnd/research/researchdivision) +"zG" = ( +/obj/machinery/atmospherics/unary/vent_pump/on{ + dir = 4 + }, +/turf/simulated/floor/tiled, +/area/rnd/research/researchdivision) "zH" = ( /obj/effect/floor_decal/borderfloor{ dir = 10 @@ -14612,92 +14547,91 @@ /turf/simulated/floor/tiled, /area/hallway/lower/third_south) "zP" = ( -/obj/machinery/atmospherics/pipe/simple/visible/red{ - dir = 5 - }, -/obj/machinery/firealarm{ - dir = 8; - pixel_x = -24 - }, -/turf/simulated/floor/plating, -/area/maintenance/engineering/pumpstation) -"zQ" = ( -/obj/machinery/atmospherics/pipe/manifold/visible/red, -/turf/simulated/floor/plating, -/area/maintenance/engineering/pumpstation) -"zR" = ( -/obj/machinery/atmospherics/pipe/manifold/visible/red{ - dir = 4 - }, -/obj/machinery/light_switch{ - pixel_x = 25 - }, -/turf/simulated/floor/plating, -/area/maintenance/engineering/pumpstation) -"zS" = ( -/obj/structure/closet/crate, -/obj/random/maintenance/clean, -/obj/random/maintenance/clean, +/obj/structure/closet, /obj/random/maintenance/research, -/obj/random/tool, -/obj/random/tech_supply, -/obj/item/weapon/flame/lighter/zippo, -/turf/simulated/floor/plating, -/area/maintenance/lower/atrium) -"zT" = ( -/obj/structure/cable{ - icon_state = "1-2" - }, -/obj/structure/disposalpipe/segment, -/turf/simulated/floor/plating, -/area/maintenance/lower/atrium) -"zU" = ( -/obj/machinery/floodlight, -/turf/simulated/floor/tiled/techfloor, -/area/maintenance/lower/atrium) -"zV" = ( -/obj/structure/table/rack{ - dir = 1 - }, -/obj/item/clothing/suit/fire/firefighter, -/obj/item/weapon/tank/oxygen, -/obj/item/clothing/mask/gas, -/obj/item/weapon/extinguisher, -/obj/item/clothing/head/hardhat/red, -/obj/item/clothing/glasses/meson, -/obj/random/maintenance/clean, -/obj/random/maintenance/medical, -/obj/random/maintenance/research, -/turf/simulated/floor/tiled/techfloor, -/area/maintenance/lower/atrium) -"zW" = ( -/obj/structure/table/standard, -/obj/item/device/t_scanner, -/obj/item/weapon/storage/box/lights/mixed, -/obj/item/weapon/storage/box/lights/mixed, -/obj/item/weapon/storage/briefcase/inflatable, -/obj/random/maintenance/clean, -/obj/random/maintenance/medical, -/obj/random/maintenance/research, -/obj/random/tech_supply, -/turf/simulated/floor/tiled/techfloor, -/area/maintenance/lower/atrium) -"zX" = ( -/obj/structure/reagent_dispensers/fueltank, -/turf/simulated/floor/plating, -/area/maintenance/lower/atrium) -"zY" = ( -/obj/machinery/light/small{ +/obj/machinery/alarm{ dir = 4; + icon_state = "alarm0"; + pixel_x = -22; pixel_y = 0 }, -/obj/structure/cable/green{ +/turf/simulated/floor/plating, +/area/vacant/vacant_library) +"zQ" = ( +/obj/structure/bed/chair/comfy/beige, +/obj/item/stack/tile/carpet, +/turf/simulated/floor/plating, +/area/vacant/vacant_library) +"zR" = ( +/obj/structure/cable{ d1 = 1; d2 = 2; icon_state = "1-2" }, -/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/turf/simulated/floor/plating, +/area/vacant/vacant_library) +"zS" = ( +/obj/structure/bookcase, +/obj/effect/decal/cleanable/cobweb{ + icon_state = "cobweb2" + }, +/turf/simulated/floor/wood, +/area/vacant/vacant_library) +"zT" = ( +/obj/item/stack/tile/wood{ + amount = 10 + }, +/obj/effect/decal/cleanable/dirt, +/turf/simulated/floor/wood, +/area/vacant/vacant_library) +"zV" = ( +/obj/structure/bed/chair/comfy/beige, +/obj/effect/decal/cleanable/dirt, +/turf/simulated/floor/carpet, +/area/vacant/vacant_library) +"zW" = ( +/obj/structure/table/woodentable, +/obj/effect/decal/cleanable/dirt, +/obj/item/weapon/paper_bin{ + pixel_x = -3; + pixel_y = 7 + }, +/turf/simulated/floor/wood, +/area/vacant/vacant_library) +"zX" = ( +/obj/structure/disposalpipe/segment, +/obj/structure/cable{ + d1 = 1; + d2 = 2; + icon_state = "1-2"; + pixel_y = 0 + }, /obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/obj/structure/cable{ + d1 = 1; + d2 = 4; + icon_state = "1-4" + }, +/obj/effect/decal/cleanable/dirt, +/obj/machinery/alarm{ + dir = 4; + icon_state = "alarm0"; + pixel_x = -22 + }, +/turf/simulated/floor/plating, +/area/maintenance/lower/atrium) +"zY" = ( +/obj/structure/cable{ + icon_state = "0-8" + }, +/obj/machinery/power/apc{ + dir = 4; + name = "east bump"; + pixel_x = 28 + }, +/obj/effect/decal/cleanable/dirt, +/obj/effect/floor_decal/rust, /turf/simulated/floor/plating, /area/maintenance/lower/atrium) "zZ" = ( @@ -14765,11 +14699,6 @@ /turf/simulated/floor/tiled, /area/hallway/lower/third_south) "Af" = ( -/obj/structure/cable/green{ - d1 = 1; - d2 = 8; - icon_state = "1-8" - }, /obj/structure/cable/green{ d1 = 2; d2 = 8; @@ -14787,18 +14716,13 @@ /obj/effect/floor_decal/steeldecal/steel_decals7{ dir = 9 }, +/obj/structure/cable/green{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, /turf/simulated/floor/tiled, /area/hallway/lower/third_south) -"Ag" = ( -/obj/machinery/light{ - icon_state = "tube1"; - dir = 8 - }, -/obj/machinery/firealarm{ - pixel_x = -30 - }, -/turf/simulated/floor/wood, -/area/crew_quarters/bar) "Ah" = ( /obj/structure/disposalpipe/segment{ dir = 1; @@ -14840,39 +14764,19 @@ /turf/simulated/floor/wood, /area/crew_quarters/bar) "Al" = ( -/obj/machinery/computer/guestpass{ - dir = 4; - pixel_x = -28; - pixel_y = 0 - }, -/obj/effect/floor_decal/borderfloor{ - dir = 8 - }, -/obj/effect/floor_decal/corner/mauve/border{ - dir = 8 - }, -/turf/simulated/floor/tiled, -/area/rnd/research) -"Am" = ( -/obj/machinery/atmospherics/unary/vent_pump/on{ - dir = 4 - }, -/turf/simulated/floor/tiled, -/area/rnd/research) -"An" = ( /obj/machinery/atmospherics/pipe/simple/hidden/supply{ dir = 4 }, /turf/simulated/floor/tiled, -/area/rnd/research) -"Ao" = ( +/area/rnd/research/researchdivision) +"Am" = ( /obj/structure/disposalpipe/segment, /obj/machinery/atmospherics/pipe/simple/hidden/supply{ dir = 4 }, /turf/simulated/floor/tiled, -/area/rnd/research) -"Ap" = ( +/area/rnd/research/researchdivision) +"An" = ( /obj/structure/cable/green{ d1 = 1; d2 = 2; @@ -14882,16 +14786,16 @@ dir = 4 }, /turf/simulated/floor/tiled, -/area/rnd/research) -"Aq" = ( +/area/rnd/research/researchdivision) +"Ao" = ( /obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, /obj/structure/disposalpipe/segment, /obj/machinery/atmospherics/pipe/manifold/hidden/supply{ dir = 4 }, /turf/simulated/floor/tiled, -/area/rnd/research) -"Ar" = ( +/area/rnd/research/researchdivision) +"Ap" = ( /obj/effect/floor_decal/borderfloor{ dir = 4 }, @@ -14899,7 +14803,27 @@ dir = 4 }, /turf/simulated/floor/tiled, -/area/rnd/research) +/area/rnd/research/researchdivision) +"Aq" = ( +/obj/machinery/light{ + icon_state = "tube1"; + dir = 8 + }, +/obj/effect/floor_decal/borderfloor{ + dir = 8 + }, +/obj/effect/floor_decal/corner/mauve/border{ + dir = 8 + }, +/turf/simulated/floor/tiled, +/area/rnd/research/researchdivision) +"Ar" = ( +/obj/structure/railing, +/obj/structure/railing{ + dir = 8 + }, +/turf/simulated/open, +/area/rnd/research/researchdivision) "As" = ( /obj/structure/grille, /obj/structure/window/reinforced/full, @@ -14937,78 +14861,68 @@ }, /turf/simulated/floor/tiled, /area/hallway/lower/third_south) -"Av" = ( -/obj/structure/table/rack, -/obj/random/maintenance/clean, -/obj/random/maintenance/engineering, -/obj/random/maintenance/engineering, -/obj/random/maintenance/engineering, -/obj/random/tech_supply, -/turf/simulated/floor/plating, -/area/maintenance/engineering/pumpstation) "Aw" = ( -/obj/machinery/atmospherics/pipe/simple/visible/red{ - dir = 6 - }, +/obj/effect/decal/cleanable/dirt, +/obj/effect/floor_decal/rust, /turf/simulated/floor/plating, -/area/maintenance/engineering/pumpstation) -"Ax" = ( -/obj/machinery/atmospherics/pipe/simple/visible/red{ - dir = 4 - }, -/turf/simulated/floor/plating, -/area/maintenance/engineering/pumpstation) +/area/vacant/vacant_library) "Ay" = ( -/obj/machinery/atmospherics/binary/pump{ +/obj/structure/table, +/obj/machinery/light_construct{ + icon_state = "tube-construct-stage1"; dir = 8 }, -/turf/simulated/floor/plating, -/area/maintenance/engineering/pumpstation) +/turf/simulated/floor/carpet, +/area/vacant/vacant_library) "Az" = ( -/obj/machinery/atmospherics/pipe/simple/visible/red{ - dir = 9 +/obj/structure/cable{ + d1 = 1; + d2 = 2; + icon_state = "1-2" }, -/turf/simulated/floor/plating, -/area/maintenance/engineering/pumpstation) +/turf/simulated/floor/wood, +/area/vacant/vacant_library) "AA" = ( -/obj/machinery/door/firedoor/glass, -/obj/machinery/door/airlock/maintenance/engi{ - name = "Engineering Pump Station" +/obj/structure/bookcase, +/obj/effect/decal/cleanable/cobweb, +/obj/effect/decal/cleanable/cobweb{ + icon_state = "cobweb2" }, -/turf/simulated/floor/plating, -/area/maintenance/engineering/pumpstation) +/turf/simulated/floor/wood, +/area/vacant/vacant_library) "AB" = ( /turf/simulated/wall, /area/maintenance/substation/bar{ name = "\improper Surface Civilian Substation" }) "AC" = ( -/obj/structure/table/rack, -/obj/item/clothing/mask/gas, -/obj/item/clothing/mask/gas, -/obj/item/clothing/mask/gas, -/obj/random/maintenance/research, -/obj/random/maintenance/research, -/obj/random/maintenance/research, -/turf/simulated/floor/plating, -/area/maintenance/lower/atrium) -"AD" = ( -/obj/structure/cable/green{ - d1 = 2; - d2 = 4; - icon_state = "2-4" - }, -/obj/structure/cable/green{ +/obj/structure/disposalpipe/segment, +/obj/structure/cable{ d1 = 1; d2 = 2; - icon_state = "1-2" - }, -/obj/machinery/atmospherics/pipe/simple/hidden/supply{ - dir = 5 + icon_state = "1-2"; + pixel_y = 0 }, /obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ dir = 5 }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 5 + }, +/obj/machinery/light/small{ + dir = 8; + pixel_x = 0 + }, +/turf/simulated/floor/plating, +/area/maintenance/lower/atrium) +"AD" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, +/obj/effect/decal/cleanable/dirt, /turf/simulated/floor/plating, /area/maintenance/lower/atrium) "AE" = ( @@ -15028,6 +14942,12 @@ /obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ dir = 4 }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, /turf/simulated/floor/plating, /area/hydroponics) "AF" = ( @@ -15037,22 +14957,17 @@ /obj/effect/floor_decal/corner/lime/border{ dir = 8 }, -/obj/structure/cable/green{ - d1 = 4; - d2 = 8; - icon_state = "4-8" - }, -/obj/structure/cable/green{ - d1 = 2; - d2 = 8; - icon_state = "2-8" - }, /obj/machinery/atmospherics/pipe/simple/hidden/supply{ dir = 4 }, /obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ dir = 4 }, +/obj/structure/cable/green{ + d1 = 2; + d2 = 4; + icon_state = "2-4" + }, /turf/simulated/floor/tiled, /area/hydroponics) "AG" = ( @@ -15189,38 +15104,18 @@ }, /turf/simulated/floor/tiled, /area/hallway/lower/third_south) -"AM" = ( -/obj/structure/cable/green{ - d1 = 1; - d2 = 2; - icon_state = "1-2" - }, -/obj/effect/floor_decal/borderfloor{ - dir = 4 - }, -/obj/effect/floor_decal/corner/beige/border{ - dir = 4 - }, -/obj/effect/floor_decal/steeldecal/steel_decals7{ - dir = 10 - }, -/obj/effect/floor_decal/steeldecal/steel_decals7{ - dir = 9 - }, -/obj/structure/railing{ - dir = 4 - }, -/turf/simulated/floor/tiled, -/area/hallway/lower/third_south) "AN" = ( /turf/simulated/open, /area/hallway/lower/third_south) "AO" = ( -/obj/structure/grille, -/obj/structure/window/reinforced/full, -/obj/machinery/door/firedoor, -/turf/simulated/floor/plating, -/area/hallway/lower/third_south) +/obj/machinery/camera/network/civilian{ + dir = 4 + }, +/obj/structure/bed/chair/wood{ + dir = 4 + }, +/turf/simulated/floor/wood, +/area/crew_quarters/bar) "AP" = ( /obj/structure/bed/chair/wood, /turf/simulated/floor/wood, @@ -15237,65 +15132,39 @@ /obj/machinery/computer/arcade, /turf/simulated/floor/wood, /area/crew_quarters/bar) -"AS" = ( -/obj/machinery/camera/network/northern_star{ - dir = 9 - }, -/turf/simulated/floor/outdoors/grass/sif/virgo3b, -/area/tether/surfacebase/outside/outside3) "AT" = ( -/obj/machinery/light{ - icon_state = "tube1"; - dir = 8 - }, -/obj/effect/floor_decal/borderfloor{ - dir = 8 - }, -/obj/effect/floor_decal/corner/mauve/border{ - dir = 8 - }, -/turf/simulated/floor/tiled, -/area/rnd/research) +/obj/structure/railing, +/turf/simulated/open, +/area/rnd/research/researchdivision) "AU" = ( -/obj/structure/railing, -/obj/structure/railing{ - dir = 8 - }, -/turf/simulated/open, -/area/rnd/research) -"AV" = ( -/obj/structure/railing, -/turf/simulated/open, -/area/rnd/research) -"AW" = ( /obj/structure/railing{ dir = 4 }, /obj/structure/railing, /turf/simulated/open, -/area/rnd/research) -"AX" = ( +/area/rnd/research/researchdivision) +"AV" = ( /obj/structure/disposalpipe/segment{ dir = 4; icon_state = "pipe-c" }, /obj/machinery/hologram/holopad, /turf/simulated/floor/tiled, -/area/rnd/research) -"AY" = ( +/area/rnd/research/researchdivision) +"AW" = ( /obj/structure/disposalpipe/segment{ dir = 4 }, /turf/simulated/floor/tiled, -/area/rnd/research) -"AZ" = ( +/area/rnd/research/researchdivision) +"AX" = ( /obj/structure/disposalpipe/sortjunction{ name = "RD Office"; sortType = "RD Office" }, /turf/simulated/floor/tiled, -/area/rnd/research) -"Ba" = ( +/area/rnd/research/researchdivision) +"AY" = ( /obj/machinery/atmospherics/pipe/simple/hidden/supply, /obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, /obj/structure/disposalpipe/segment{ @@ -15303,8 +15172,8 @@ icon_state = "pipe-c" }, /turf/simulated/floor/tiled, -/area/rnd/research) -"Bb" = ( +/area/rnd/research/researchdivision) +"AZ" = ( /obj/machinery/light_switch{ pixel_x = 25 }, @@ -15325,7 +15194,31 @@ icon_state = "pipe-c" }, /turf/simulated/floor/tiled, -/area/rnd/research) +/area/rnd/research/researchdivision) +"Ba" = ( +/obj/effect/floor_decal/borderfloor{ + dir = 8 + }, +/obj/effect/floor_decal/corner/mauve/border{ + dir = 8 + }, +/obj/machinery/camera/network/research{ + dir = 4 + }, +/turf/simulated/floor/tiled, +/area/rnd/research/researchdivision) +"Bb" = ( +/obj/effect/floor_decal/steeldecal/steel_decals5{ + dir = 1 + }, +/obj/effect/floor_decal/steeldecal/steel_decals9{ + dir = 4 + }, +/obj/effect/floor_decal/steeldecal/steel_decals9{ + dir = 1 + }, +/turf/simulated/floor/tiled, +/area/rnd/research/researchdivision) "Bc" = ( /obj/effect/floor_decal/borderfloor{ dir = 9 @@ -15490,107 +15383,62 @@ /turf/simulated/floor/tiled, /area/hallway/lower/third_south) "Bl" = ( -/obj/machinery/atmospherics/pipe/tank{ - dir = 4 - }, +/obj/effect/decal/cleanable/dirt, +/obj/structure/table/steel, +/obj/random/maintenance/engineering, +/obj/random/tech_supply, /turf/simulated/floor/plating, -/area/maintenance/engineering/pumpstation) +/area/vacant/vacant_library) "Bm" = ( -/obj/machinery/atmospherics/tvalve/digital/bypass{ - dir = 8 - }, +/obj/effect/decal/cleanable/dirt, +/obj/structure/table/steel, +/obj/random/maintenance/engineering, +/obj/item/stack/cable_coil/random, +/obj/random/tool, /turf/simulated/floor/plating, -/area/maintenance/engineering/pumpstation) -"Bn" = ( -/obj/machinery/atmospherics/pipe/simple/visible/universal{ - dir = 4 - }, -/turf/simulated/floor/plating, -/area/maintenance/engineering/pumpstation) +/area/vacant/vacant_library) "Bo" = ( -/obj/machinery/atmospherics/pipe/simple/visible/scrubbers{ - dir = 10 - }, -/turf/simulated/floor/plating, -/area/maintenance/engineering/pumpstation) -"Bp" = ( -/obj/structure/railing, -/obj/machinery/computer/area_atmos/tag{ - dir = 8; - scrub_id = "atrium" - }, -/turf/simulated/floor/plating, -/area/maintenance/engineering/pumpstation) -"Bq" = ( -/obj/machinery/light/small{ - dir = 8; - pixel_x = 0 - }, -/turf/simulated/floor/plating, -/area/maintenance/lower/atrium) -"Br" = ( -/obj/structure/cable{ - icon_state = "1-4" - }, -/obj/structure/disposalpipe/segment, -/obj/random/junk, -/turf/simulated/floor/plating, -/area/maintenance/lower/atrium) -"Bs" = ( -/obj/machinery/door/firedoor/glass, -/obj/structure/cable{ - icon_state = "4-8" - }, -/obj/machinery/door/airlock/maintenance/engi{ - name = "Bar Substation" - }, -/turf/simulated/floor/plating, -/area/maintenance/substation/bar{ - name = "\improper Surface Civilian Substation" - }) -"Bt" = ( -/obj/structure/cable{ - icon_state = "2-8" - }, -/obj/machinery/camera/network/engineering, -/obj/structure/cable{ - icon_state = "4-8" - }, -/turf/simulated/floor/plating, -/area/maintenance/substation/bar{ - name = "\improper Surface Civilian Substation" - }) -"Bu" = ( -/obj/machinery/light/small{ +/obj/structure/bed/chair/comfy/beige{ + icon_state = "comfychair_preview"; dir = 1 }, -/obj/structure/cable{ - icon_state = "4-8" - }, -/turf/simulated/floor/plating, -/area/maintenance/substation/bar{ - name = "\improper Surface Civilian Substation" - }) -"Bv" = ( /obj/machinery/alarm{ - pixel_y = 22 - }, -/obj/effect/decal/cleanable/blood/splatter, -/obj/structure/cable{ - icon_state = "2-8" + dir = 4; + icon_state = "alarm0"; + pixel_x = -22; + pixel_y = 0 }, /turf/simulated/floor/plating, -/area/maintenance/substation/bar{ - name = "\improper Surface Civilian Substation" - }) -"Bw" = ( -/obj/structure/cable/green{ - d1 = 1; - d2 = 2; - icon_state = "1-2" +/area/vacant/vacant_library) +"Bq" = ( +/obj/structure/bookcase, +/obj/effect/decal/cleanable/cobweb{ + icon_state = "cobweb2" }, /turf/simulated/floor/plating, -/area/maintenance/lower/atrium) +/area/vacant/vacant_library) +"Br" = ( +/obj/effect/decal/cleanable/dirt, +/obj/effect/decal/cleanable/blood, +/turf/simulated/floor/wood, +/area/vacant/vacant_library) +"Bs" = ( +/obj/effect/decal/cleanable/dirt, +/obj/effect/decal/cleanable/dirt, +/obj/random/junk, +/turf/simulated/floor/plating, +/area/vacant/vacant_library) +"Bt" = ( +/obj/structure/bed/chair/comfy/beige{ + icon_state = "comfychair_preview"; + dir = 1 + }, +/turf/simulated/floor/carpet, +/area/vacant/vacant_library) +"Bv" = ( +/obj/structure/table/woodentable, +/turf/simulated/floor/wood, +/area/vacant/vacant_library) "Bx" = ( /obj/effect/floor_decal/borderfloor{ dir = 8 @@ -15680,46 +15528,22 @@ /turf/simulated/floor/wood, /area/crew_quarters/bar) "BH" = ( -/obj/effect/floor_decal/borderfloor{ - dir = 8 - }, -/obj/effect/floor_decal/corner/mauve/border{ - dir = 8 - }, -/obj/machinery/camera/network/research{ - dir = 4 - }, -/turf/simulated/floor/tiled, -/area/rnd/research) -"BI" = ( -/obj/effect/floor_decal/steeldecal/steel_decals5{ - dir = 1 - }, -/obj/effect/floor_decal/steeldecal/steel_decals9{ - dir = 4 - }, -/obj/effect/floor_decal/steeldecal/steel_decals9{ - dir = 1 - }, -/turf/simulated/floor/tiled, -/area/rnd/research) -"BJ" = ( /obj/structure/cable/green{ d1 = 2; d2 = 4; icon_state = "2-4" }, /turf/simulated/floor/tiled, -/area/rnd/research) -"BK" = ( +/area/rnd/research/researchdivision) +"BI" = ( /obj/structure/cable/green{ d1 = 4; d2 = 8; icon_state = "4-8" }, /turf/simulated/floor/tiled, -/area/rnd/research) -"BL" = ( +/area/rnd/research/researchdivision) +"BJ" = ( /obj/structure/cable/green{ d1 = 4; d2 = 8; @@ -15727,8 +15551,8 @@ }, /obj/structure/disposalpipe/segment, /turf/simulated/floor/tiled, -/area/rnd/research) -"BM" = ( +/area/rnd/research/researchdivision) +"BK" = ( /obj/structure/cable/green{ d1 = 4; d2 = 8; @@ -15739,8 +15563,8 @@ icon_state = "pipe-c" }, /turf/simulated/floor/tiled, -/area/rnd/research) -"BN" = ( +/area/rnd/research/researchdivision) +"BL" = ( /obj/structure/cable/green{ d1 = 4; d2 = 8; @@ -15763,8 +15587,8 @@ sortType = "Robotics" }, /turf/simulated/floor/tiled, -/area/rnd/research) -"BO" = ( +/area/rnd/research/researchdivision) +"BM" = ( /obj/structure/cable/green{ d1 = 4; d2 = 8; @@ -15781,8 +15605,8 @@ icon_state = "pipe-c" }, /turf/simulated/floor/tiled, -/area/rnd/research) -"BP" = ( +/area/rnd/research/researchdivision) +"BN" = ( /obj/structure/cable/green{ d1 = 4; d2 = 8; @@ -15803,8 +15627,8 @@ dir = 10 }, /turf/simulated/floor/tiled, -/area/rnd/research) -"BQ" = ( +/area/rnd/research/researchdivision) +"BO" = ( /obj/machinery/door/firedoor/glass, /obj/structure/cable/green{ d1 = 4; @@ -15826,7 +15650,19 @@ req_access = list(47) }, /turf/simulated/floor/tiled/steel_grid, -/area/rnd/research) +/area/rnd/research/researchdivision) +"BP" = ( +/obj/effect/floor_decal/borderfloor/corner, +/obj/effect/floor_decal/corner/mauve/bordercorner, +/obj/structure/disposalpipe/segment, +/turf/simulated/floor/tiled, +/area/rnd/research/researchdivision) +"BQ" = ( +/obj/machinery/light, +/obj/effect/floor_decal/borderfloor, +/obj/effect/floor_decal/corner/mauve/border, +/turf/simulated/floor/tiled, +/area/rnd/research/researchdivision) "BR" = ( /obj/effect/floor_decal/steeldecal/steel_decals7, /obj/effect/floor_decal/steeldecal/steel_decals7{ @@ -15974,105 +15810,46 @@ }, /turf/simulated/floor/tiled, /area/hallway/lower/third_south) -"BZ" = ( -/obj/machinery/atmospherics/tvalve/digital/mirrored/bypass{ - dir = 8 - }, -/turf/simulated/floor/plating, -/area/maintenance/engineering/pumpstation) -"Ca" = ( -/obj/machinery/atmospherics/pipe/simple/visible/scrubbers{ - dir = 5 - }, -/obj/structure/railing{ - dir = 4 - }, -/obj/machinery/atmospherics/pipe/simple/visible/supply{ - dir = 4 - }, -/turf/simulated/floor/plating, -/area/maintenance/engineering/pumpstation) "Cb" = ( -/obj/machinery/atmospherics/pipe/zpipe/down/scrubbers{ - dir = 8 +/obj/machinery/firealarm{ + dir = 1; + pixel_x = 0; + pixel_y = -25 }, -/obj/machinery/atmospherics/pipe/zpipe/down/supply{ - dir = 8 +/obj/effect/floor_decal/borderfloor, +/obj/effect/floor_decal/corner/mauve/border, +/obj/effect/floor_decal/borderfloor/corner2{ + dir = 9 }, -/obj/structure/cable/cyan{ - d1 = 32; +/obj/effect/floor_decal/corner/mauve/bordercorner2{ + dir = 9 + }, +/turf/simulated/floor/tiled, +/area/rnd/research/researchdivision) +"Cc" = ( +/obj/item/stack/material/wood{ + amount = 10 + }, +/obj/effect/decal/cleanable/dirt, +/turf/simulated/floor/wood, +/turf/simulated/floor/wood/broken, +/area/vacant/vacant_library) +"Ch" = ( +/obj/structure/disposalpipe/segment, +/obj/structure/cable{ + d1 = 1; d2 = 2; - icon_state = "32-2" - }, -/obj/machinery/camera/network/engineering{ - dir = 8 + icon_state = "1-2"; + pixel_y = 0 }, /obj/machinery/door/firedoor/glass, -/turf/simulated/open, -/area/maintenance/engineering/pumpstation) -"Cc" = ( -/obj/effect/decal/cleanable/dirt, -/obj/structure/disposalpipe/segment, -/turf/simulated/floor/plating, -/area/maintenance/lower/atrium) -"Cd" = ( -/obj/structure/sign/warning/high_voltage, -/turf/simulated/wall, -/area/maintenance/substation/bar{ - name = "\improper Surface Civilian Substation" - }) -"Ce" = ( -/obj/structure/cable{ - d1 = 1; - d2 = 4; - icon_state = "1-4" +/obj/machinery/door/airlock/maintenance/engi{ + name = "Bar Substation" }, -/obj/structure/cable{ - d1 = 1; - d2 = 2; - icon_state = "1-2" - }, -/obj/effect/floor_decal/industrial/warning, /turf/simulated/floor/plating, /area/maintenance/substation/bar{ name = "\improper Surface Civilian Substation" }) -"Cf" = ( -/obj/machinery/power/terminal, -/obj/structure/cable{ - icon_state = "0-8" - }, -/obj/effect/floor_decal/industrial/warning, -/turf/simulated/floor/plating, -/area/maintenance/substation/bar{ - name = "\improper Surface Civilian Substation" - }) -"Cg" = ( -/obj/machinery/power/apc{ - dir = 4; - name = "east bump"; - pixel_x = 28 - }, -/obj/effect/floor_decal/industrial/warning/corner{ - dir = 8 - }, -/obj/structure/cable, -/turf/simulated/floor/plating, -/area/maintenance/substation/bar{ - name = "\improper Surface Civilian Substation" - }) -"Ch" = ( -/obj/structure/closet/firecloset, -/obj/structure/sign/warning/high_voltage{ - pixel_x = -32 - }, -/obj/random/maintenance/clean, -/obj/random/maintenance/research, -/obj/random/maintenance/research, -/obj/random/maintenance/medical, -/obj/random/maintenance/medical, -/turf/simulated/floor/plating, -/area/maintenance/lower/atrium) "Ci" = ( /obj/effect/floor_decal/borderfloor{ dir = 8 @@ -16135,41 +15912,6 @@ }, /turf/simulated/floor/tiled, /area/hallway/lower/third_south) -"Cm" = ( -/obj/structure/cable/green{ - d1 = 1; - d2 = 2; - icon_state = "1-2" - }, -/obj/effect/floor_decal/borderfloor{ - dir = 4 - }, -/obj/effect/floor_decal/corner/beige/border{ - dir = 4 - }, -/obj/effect/floor_decal/steeldecal/steel_decals7{ - dir = 10 - }, -/obj/effect/floor_decal/steeldecal/steel_decals7{ - dir = 9 - }, -/obj/structure/railing{ - dir = 4 - }, -/obj/effect/floor_decal/borderfloor/corner2{ - dir = 5 - }, -/obj/effect/floor_decal/corner/beige/bordercorner2{ - dir = 5 - }, -/turf/simulated/floor/tiled, -/area/hallway/lower/third_south) -"Cn" = ( -/obj/machinery/camera/network/civilian{ - dir = 4 - }, -/turf/simulated/floor/wood, -/area/crew_quarters/bar) "Co" = ( /obj/structure/table/gamblingtable, /obj/item/weapon/deck/cards, @@ -16187,34 +15929,6 @@ /turf/simulated/floor/wood, /area/crew_quarters/bar) "Cq" = ( -/obj/effect/floor_decal/borderfloor/corner, -/obj/effect/floor_decal/corner/mauve/bordercorner, -/obj/structure/disposalpipe/segment, -/turf/simulated/floor/tiled, -/area/rnd/research) -"Cr" = ( -/obj/machinery/light, -/obj/effect/floor_decal/borderfloor, -/obj/effect/floor_decal/corner/mauve/border, -/turf/simulated/floor/tiled, -/area/rnd/research) -"Cs" = ( -/obj/machinery/firealarm{ - dir = 1; - pixel_x = 0; - pixel_y = -25 - }, -/obj/effect/floor_decal/borderfloor, -/obj/effect/floor_decal/corner/mauve/border, -/obj/effect/floor_decal/borderfloor/corner2{ - dir = 9 - }, -/obj/effect/floor_decal/corner/mauve/bordercorner2{ - dir = 9 - }, -/turf/simulated/floor/tiled, -/area/rnd/research) -"Ct" = ( /obj/structure/cable/green{ d1 = 1; d2 = 2; @@ -16228,8 +15942,8 @@ dir = 8 }, /turf/simulated/floor/tiled, -/area/rnd/research) -"Cu" = ( +/area/rnd/research/researchdivision) +"Cr" = ( /obj/machinery/atmospherics/pipe/simple/hidden/supply{ dir = 5 }, @@ -16251,8 +15965,8 @@ icon_state = "pipe-c" }, /turf/simulated/floor/tiled, -/area/rnd/research) -"Cv" = ( +/area/rnd/research/researchdivision) +"Cs" = ( /obj/machinery/atmospherics/pipe/simple/hidden/supply{ dir = 10 }, @@ -16270,7 +15984,58 @@ dir = 8 }, /turf/simulated/floor/tiled, -/area/rnd/research) +/area/rnd/research/researchdivision) +"Ct" = ( +/obj/effect/floor_decal/borderfloor{ + dir = 8 + }, +/obj/effect/floor_decal/corner/mauve/border{ + dir = 8 + }, +/obj/structure/cable/green{ + d2 = 2; + icon_state = "0-2" + }, +/obj/machinery/power/apc{ + cell_type = /obj/item/weapon/cell/super; + dir = 8; + name = "west bump"; + pixel_x = -30 + }, +/turf/simulated/floor/tiled, +/area/rnd/research/researchdivision) +"Cu" = ( +/obj/machinery/light_switch{ + pixel_x = 25 + }, +/obj/effect/floor_decal/borderfloor{ + dir = 4 + }, +/obj/effect/floor_decal/corner/mauve/border{ + dir = 4 + }, +/obj/structure/disposalpipe/segment, +/obj/machinery/recharge_station, +/turf/simulated/floor/tiled, +/area/rnd/research/researchdivision) +"Cv" = ( +/obj/machinery/firealarm{ + dir = 8; + pixel_x = -24 + }, +/obj/effect/floor_decal/borderfloor{ + dir = 8 + }, +/obj/effect/floor_decal/corner/mauve/border{ + dir = 8 + }, +/obj/structure/cable/green{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/turf/simulated/floor/tiled, +/area/rnd/research/researchdivision) "Cw" = ( /obj/effect/floor_decal/borderfloor{ dir = 10 @@ -16419,49 +16184,37 @@ /turf/simulated/floor/tiled, /area/hallway/lower/third_south) "CF" = ( -/obj/structure/ladder, -/obj/effect/floor_decal/industrial/outline/yellow, +/obj/structure/table/woodentable, +/obj/item/stack/material/wood{ + amount = 10 + }, +/obj/item/stack/tile/carpet, +/obj/random/drinkbottle, /turf/simulated/floor/plating, -/area/maintenance/engineering/pumpstation) +/area/vacant/vacant_library) "CG" = ( -/obj/machinery/atmospherics/pipe/simple/visible/blue{ - dir = 5 - }, +/obj/structure/table, +/obj/effect/decal/cleanable/dirt, /turf/simulated/floor/plating, -/area/maintenance/engineering/pumpstation) +/area/vacant/vacant_library) "CH" = ( -/obj/machinery/atmospherics/pipe/simple/visible/blue{ - dir = 4 +/obj/structure/table/woodentable, +/obj/item/weapon/paper_bin{ + pixel_x = -3; + pixel_y = 7 }, -/turf/simulated/floor/plating, -/area/maintenance/engineering/pumpstation) -"CI" = ( -/obj/machinery/atmospherics/binary/pump{ - dir = 4 - }, -/turf/simulated/floor/plating, -/area/maintenance/engineering/pumpstation) +/obj/item/weapon/pen, +/turf/simulated/floor/wood, +/area/vacant/vacant_library) "CJ" = ( -/obj/machinery/atmospherics/pipe/simple/visible/blue{ - dir = 10 - }, -/obj/structure/railing{ - dir = 1 - }, -/obj/structure/cable/cyan{ +/obj/effect/decal/cleanable/dirt, +/obj/structure/cable{ d1 = 1; d2 = 2; icon_state = "1-2" }, -/turf/simulated/floor/plating, -/area/maintenance/engineering/pumpstation) -"CK" = ( -/obj/machinery/door/airlock/maintenance/engi{ - name = "Engineering Pump Station" - }, -/obj/machinery/door/firedoor/glass, -/turf/simulated/floor/plating, -/area/maintenance/engineering/pumpstation) +/turf/simulated/floor/wood, +/area/vacant/vacant_library) "CL" = ( /obj/machinery/power/breakerbox/activated{ RCon_tag = "Surface Civilian Substation Bypass" @@ -16471,80 +16224,49 @@ name = "\improper Surface Civilian Substation" }) "CM" = ( -/obj/machinery/power/smes/buildable{ - charge = 0; - RCon_tag = "Substation - Surface Civilian" - }, -/obj/structure/cable/green{ - d2 = 4; - icon_state = "0-4" - }, -/obj/structure/cable/green{ - d2 = 8; - icon_state = "0-8" - }, -/turf/simulated/floor/plating, -/area/maintenance/substation/bar{ - name = "\improper Surface Civilian Substation" - }) -"CN" = ( -/obj/machinery/power/sensor{ - name = "Powernet Sensor - Surface Civilian Subgrid"; - name_tag = "Surface Civilian Subgrid" - }, -/obj/structure/cable/green{ - d2 = 8; - icon_state = "0-8" - }, -/obj/structure/cable/green{ - d2 = 4; - icon_state = "0-4" - }, -/obj/effect/floor_decal/industrial/warning{ - icon_state = "warning"; - dir = 8 - }, -/turf/simulated/floor/plating, -/area/maintenance/substation/bar{ - name = "\improper Surface Civilian Substation" - }) -"CO" = ( -/obj/machinery/door/firedoor/glass, -/obj/structure/cable/green{ - d1 = 4; - d2 = 8; - icon_state = "4-8" - }, -/obj/machinery/door/airlock/maintenance/engi{ - name = "Bar Substation" - }, -/turf/simulated/floor/plating, -/area/maintenance/substation/bar{ - name = "\improper Surface Civilian Substation" - }) +/obj/structure/table, +/turf/simulated/floor/wood, +/area/vacant/vacant_library) "CP" = ( -/obj/structure/cable/green{ - d1 = 4; - d2 = 8; - icon_state = "4-8" - }, -/obj/structure/cable/green{ - d1 = 2; - d2 = 8; - icon_state = "2-8" - }, -/obj/effect/decal/cleanable/dirt, -/obj/random/junk, -/turf/simulated/floor/plating, -/area/maintenance/lower/atrium) -"CQ" = ( -/obj/structure/cable/green{ - d1 = 1; - d2 = 8; +/obj/structure/disposalpipe/segment, +/obj/structure/cable{ icon_state = "1-8" }, +/obj/structure/cable{ + icon_state = "1-4" + }, +/obj/structure/cable{ + icon_state = "1-2" + }, +/obj/effect/floor_decal/industrial/warning{ + dir = 8 + }, +/obj/effect/decal/cleanable/dirt, /turf/simulated/floor/plating, -/area/maintenance/lower/atrium) +/area/maintenance/substation/bar{ + name = "\improper Surface Civilian Substation" + }) +"CQ" = ( +/obj/structure/cable{ + icon_state = "0-8" + }, +/obj/machinery/power/apc{ + dir = 1; + name = "north bump"; + pixel_x = 0; + pixel_y = 28 + }, +/obj/machinery/alarm{ + dir = 8; + icon_state = "alarm0"; + pixel_x = 24 + }, +/obj/effect/decal/cleanable/dirt, +/obj/effect/floor_decal/rust, +/turf/simulated/floor/plating, +/area/maintenance/substation/bar{ + name = "\improper Surface Civilian Substation" + }) "CR" = ( /obj/machinery/seed_extractor, /obj/effect/floor_decal/borderfloor{ @@ -16586,11 +16308,20 @@ d2 = 2; icon_state = "1-2" }, +/obj/effect/floor_decal/borderfloor{ + dir = 4 + }, +/obj/effect/floor_decal/steeldecal/steel_decals7{ + dir = 10 + }, +/obj/effect/floor_decal/steeldecal/steel_decals7{ + dir = 9 + }, +/obj/effect/floor_decal/corner/beige/border{ + dir = 4 + }, /turf/simulated/floor/tiled, /area/hallway/lower/third_south) -"CV" = ( -/turf/simulated/floor/tiled/steel_grid, -/area/hallway/lower/third_south) "CW" = ( /obj/structure/table/gamblingtable, /obj/item/weapon/storage/pill_bottle/dice_nerd, @@ -16606,32 +16337,18 @@ /turf/simulated/floor/wood, /area/crew_quarters/bar) "CY" = ( -/obj/machinery/firealarm{ - dir = 8; - pixel_x = -24 - }, -/obj/effect/floor_decal/borderfloor{ - dir = 8 - }, -/obj/effect/floor_decal/corner/mauve/border{ - dir = 8 - }, +/obj/machinery/atmospherics/unary/vent_pump/on, /turf/simulated/floor/tiled, -/area/rnd/research) +/area/rnd/research/researchdivision) "CZ" = ( -/obj/machinery/light_switch{ - pixel_x = 25 +/obj/structure/cable/green{ + d1 = 1; + d2 = 2; + icon_state = "1-2" }, -/obj/effect/floor_decal/borderfloor{ - dir = 4 - }, -/obj/effect/floor_decal/corner/mauve/border{ - dir = 4 - }, -/obj/structure/disposalpipe/segment, -/obj/machinery/recharge_station, +/obj/machinery/atmospherics/unary/vent_scrubber/on, /turf/simulated/floor/tiled, -/area/rnd/research) +/area/rnd/research/researchdivision) "Da" = ( /turf/simulated/wall, /area/assembly/robotics) @@ -16711,58 +16428,54 @@ /turf/simulated/floor/tiled, /area/hallway/lower/third_south) "Di" = ( -/obj/machinery/atmospherics/pipe/simple/visible/blue{ - dir = 6 - }, -/obj/machinery/alarm{ - dir = 4; - icon_state = "alarm0"; - pixel_x = -22; - pixel_y = 0 - }, -/turf/simulated/floor/plating, -/area/maintenance/engineering/pumpstation) -"Dj" = ( -/obj/machinery/atmospherics/pipe/manifold/visible/blue{ - dir = 1 - }, -/turf/simulated/floor/plating, -/area/maintenance/engineering/pumpstation) -"Dk" = ( -/obj/machinery/atmospherics/pipe/manifold/visible/blue{ - dir = 4 +/obj/structure/cable{ + icon_state = "0-4"; + d2 = 4 }, /obj/machinery/power/apc{ - dir = 4; - name = "east bump"; - pixel_x = 28 + cell_type = /obj/item/weapon/cell/apc; + dir = 8; + name = "west bump"; + pixel_x = -28 }, -/obj/structure/cable/cyan, /turf/simulated/floor/plating, -/area/maintenance/engineering/pumpstation) -"Dl" = ( +/area/vacant/vacant_library) +"Dj" = ( +/obj/structure/bed/chair/office/dark{ + dir = 4 + }, +/obj/structure/cable{ + d1 = 4; + d2 = 8; + icon_state = "4-8"; + pixel_x = 0 + }, +/turf/simulated/floor/plating, +/area/vacant/vacant_library) +"Dk" = ( /obj/effect/decal/cleanable/dirt, -/obj/structure/closet, -/obj/random/maintenance/clean, -/obj/random/maintenance/clean, -/obj/random/maintenance/research, -/turf/simulated/floor/plating, -/area/maintenance/lower/atrium) -"Dm" = ( -/obj/machinery/alarm{ - dir = 4; - icon_state = "alarm0"; - pixel_x = -22; - pixel_y = 0 - }, -/obj/structure/cable/green{ +/obj/random/junk, +/obj/structure/cable{ d1 = 1; - d2 = 2; - icon_state = "1-2" + d2 = 8; + icon_state = "1-8" + }, +/turf/simulated/floor/plating, +/area/vacant/vacant_library) +"Dm" = ( +/obj/structure/disposalpipe/segment, +/obj/structure/cable, +/obj/machinery/power/terminal{ + dir = 8 + }, +/obj/effect/floor_decal/industrial/warning{ + dir = 8 }, /obj/effect/decal/cleanable/dirt, /turf/simulated/floor/plating, -/area/maintenance/lower/atrium) +/area/maintenance/substation/bar{ + name = "\improper Surface Civilian Substation" + }) "Dn" = ( /obj/effect/floor_decal/borderfloor{ dir = 8 @@ -16805,6 +16518,28 @@ }, /turf/simulated/floor/wood, /area/crew_quarters/bar) +"Dq" = ( +/obj/structure/extinguisher_cabinet{ + dir = 4; + icon_state = "extinguisher_closed"; + pixel_x = -30 + }, +/obj/effect/floor_decal/borderfloor{ + dir = 8 + }, +/obj/effect/floor_decal/corner/lime/border{ + dir = 8 + }, +/obj/effect/floor_decal/steeldecal/steel_decals7{ + dir = 5 + }, +/obj/effect/floor_decal/steeldecal/steel_decals7{ + dir = 6 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/turf/simulated/floor/tiled, +/area/hallway/lower/third_south) "Dr" = ( /obj/machinery/camera/network/civilian{ dir = 1 @@ -16858,32 +16593,6 @@ /turf/simulated/floor/wood, /area/crew_quarters/bar) "Du" = ( -/obj/effect/floor_decal/borderfloor{ - dir = 8 - }, -/obj/effect/floor_decal/corner/mauve/border{ - dir = 8 - }, -/obj/item/device/radio/intercom{ - dir = 8; - pixel_x = -24 - }, -/turf/simulated/floor/tiled, -/area/rnd/research) -"Dv" = ( -/obj/machinery/atmospherics/unary/vent_pump/on, -/turf/simulated/floor/tiled, -/area/rnd/research) -"Dw" = ( -/obj/structure/cable/green{ - d1 = 1; - d2 = 2; - icon_state = "1-2" - }, -/obj/machinery/atmospherics/unary/vent_scrubber/on, -/turf/simulated/floor/tiled, -/area/rnd/research) -"Dx" = ( /obj/machinery/recharge_station, /obj/effect/floor_decal/borderfloor{ dir = 4 @@ -16898,7 +16607,63 @@ }, /obj/structure/disposalpipe/segment, /turf/simulated/floor/tiled, -/area/rnd/research) +/area/rnd/research/researchdivision) +"Dv" = ( +/obj/structure/lattice, +/obj/structure/cable/green{ + icon_state = "32-4" + }, +/obj/machinery/atmospherics/pipe/zpipe/down/supply{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/zpipe/down/scrubbers{ + dir = 4 + }, +/obj/machinery/door/firedoor/glass, +/turf/simulated/open, +/area/rnd/research/researchdivision) +"Dw" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/yellow{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/obj/machinery/door/firedoor/glass, +/obj/structure/cable/green{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/obj/structure/cable/green{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/obj/machinery/door/airlock/maintenance/rnd, +/turf/simulated/floor/tiled/steel_dirty, +/area/rnd/research/researchdivision) +"Dx" = ( +/obj/effect/floor_decal/borderfloor{ + dir = 8 + }, +/obj/effect/floor_decal/corner/mauve/border{ + dir = 8 + }, +/obj/item/device/radio/intercom{ + dir = 8; + pixel_x = -24 + }, +/obj/structure/cable/green{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/turf/simulated/floor/tiled, +/area/rnd/research/researchdivision) "Dy" = ( /obj/effect/floor_decal/borderfloor{ dir = 9 @@ -17044,52 +16809,33 @@ /turf/simulated/floor/tiled, /area/hallway/lower/third_south) "DJ" = ( -/obj/machinery/atmospherics/portables_connector{ - dir = 1 - }, -/obj/machinery/portable_atmospherics/powered/pump/filled, +/obj/machinery/light_construct, /turf/simulated/floor/plating, -/area/maintenance/engineering/pumpstation) -"DK" = ( -/obj/machinery/light/small, -/obj/machinery/atmospherics/portables_connector{ - dir = 1 - }, -/obj/machinery/portable_atmospherics/powered/pump/filled, -/turf/simulated/floor/plating, -/area/maintenance/engineering/pumpstation) -"DL" = ( -/obj/effect/decal/cleanable/dirt, -/obj/structure/table/rack, -/obj/random/maintenance/clean, -/obj/random/maintenance/clean, -/obj/random/maintenance/research, -/turf/simulated/floor/plating, -/area/maintenance/lower/atrium) -"DM" = ( -/obj/random/toy, -/turf/simulated/floor/plating, -/area/maintenance/lower/atrium) +/turf/simulated/floor/wood/broken, +/area/vacant/vacant_library) "DN" = ( +/obj/structure/disposalpipe/segment, /obj/structure/cable/green{ - d1 = 1; - d2 = 2; - icon_state = "1-2" + d1 = 2; + d2 = 8; + icon_state = "2-8" + }, +/obj/effect/floor_decal/industrial/warning/corner{ + dir = 1 }, /obj/effect/decal/cleanable/dirt, /turf/simulated/floor/plating, -/area/maintenance/lower/atrium) +/area/maintenance/substation/bar{ + name = "\improper Surface Civilian Substation" + }) "DO" = ( -/obj/structure/closet, -/obj/item/clothing/mask/gas, -/obj/effect/decal/cleanable/dirt, -/obj/random/maintenance/clean, -/obj/random/maintenance/clean, -/obj/random/maintenance/research, -/obj/random/maintenance/medical, -/obj/random/maintenance/medical, +/obj/random/tech_supply, +/obj/structure/table/steel, +/obj/random/maintenance/engineering, /turf/simulated/floor/plating, -/area/maintenance/lower/atrium) +/area/maintenance/substation/bar{ + name = "\improper Surface Civilian Substation" + }) "DP" = ( /obj/effect/floor_decal/borderfloor{ dir = 10 @@ -17149,28 +16895,6 @@ /turf/simulated/floor/tiled, /area/hydroponics) "DV" = ( -/obj/structure/extinguisher_cabinet{ - dir = 4; - icon_state = "extinguisher_closed"; - pixel_x = -30 - }, -/obj/effect/floor_decal/borderfloor{ - dir = 8 - }, -/obj/effect/floor_decal/corner/lime/border{ - dir = 8 - }, -/obj/effect/floor_decal/steeldecal/steel_decals7{ - dir = 5 - }, -/obj/effect/floor_decal/steeldecal/steel_decals7{ - dir = 6 - }, -/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, -/obj/machinery/atmospherics/pipe/simple/hidden/supply, -/turf/simulated/floor/tiled, -/area/hallway/lower/third_south) -"DW" = ( /obj/machinery/status_display{ pixel_x = 32; pixel_y = 0 @@ -17192,11 +16916,34 @@ d2 = 2; icon_state = "1-2" }, +/turf/simulated/floor/tiled, +/area/hallway/lower/third_south) +"DW" = ( +/obj/structure/cable/green{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/obj/effect/floor_decal/borderfloor{ + dir = 4 + }, +/obj/effect/floor_decal/corner/beige/border{ + dir = 4 + }, /obj/effect/floor_decal/borderfloor/corner2{ - dir = 6 + dir = 5 }, /obj/effect/floor_decal/corner/beige/bordercorner2{ - dir = 6 + dir = 5 + }, +/obj/effect/floor_decal/steeldecal/steel_decals7{ + dir = 10 + }, +/obj/effect/floor_decal/steeldecal/steel_decals7{ + dir = 9 + }, +/obj/machinery/door/firedoor/glass/hidden/steel{ + dir = 8 }, /turf/simulated/floor/tiled, /area/hallway/lower/third_south) @@ -17242,64 +16989,6 @@ /turf/simulated/floor/wood, /area/crew_quarters/bar) "Ea" = ( -/obj/structure/lattice, -/obj/structure/cable/green{ - icon_state = "32-4" - }, -/obj/machinery/atmospherics/pipe/zpipe/down/supply{ - dir = 4 - }, -/obj/machinery/atmospherics/pipe/zpipe/down/scrubbers{ - dir = 4 - }, -/obj/machinery/door/firedoor/glass, -/turf/simulated/open, -/area/rnd/research) -"Eb" = ( -/obj/machinery/atmospherics/pipe/simple/hidden/yellow{ - dir = 4 - }, -/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ - dir = 4 - }, -/obj/machinery/atmospherics/pipe/simple/hidden/supply{ - dir = 4 - }, -/obj/machinery/door/firedoor/glass, -/obj/structure/cable/green{ - d1 = 4; - d2 = 8; - icon_state = "4-8" - }, -/obj/structure/cable/green{ - d1 = 4; - d2 = 8; - icon_state = "4-8" - }, -/obj/machinery/door/airlock/maintenance/rnd, -/turf/simulated/floor/tiled/steel_dirty, -/area/rnd/research) -"Ec" = ( -/obj/structure/cable/green{ - d1 = 4; - d2 = 8; - icon_state = "4-8" - }, -/obj/machinery/atmospherics/pipe/simple/hidden/supply{ - dir = 4 - }, -/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ - dir = 4 - }, -/obj/effect/floor_decal/borderfloor{ - dir = 8 - }, -/obj/effect/floor_decal/corner/mauve/border{ - dir = 8 - }, -/turf/simulated/floor/tiled, -/area/rnd/research) -"Ed" = ( /obj/structure/cable/green{ d1 = 4; d2 = 8; @@ -17308,8 +16997,8 @@ /obj/machinery/atmospherics/pipe/manifold/hidden/supply, /obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers, /turf/simulated/floor/tiled, -/area/rnd/research) -"Ee" = ( +/area/rnd/research/researchdivision) +"Eb" = ( /obj/structure/cable/green{ d1 = 4; d2 = 8; @@ -17322,8 +17011,8 @@ dir = 4 }, /turf/simulated/floor/tiled, -/area/rnd/research) -"Ef" = ( +/area/rnd/research/researchdivision) +"Ec" = ( /obj/structure/cable/green{ d1 = 4; d2 = 8; @@ -17334,8 +17023,8 @@ }, /obj/machinery/atmospherics/pipe/manifold/hidden/supply, /turf/simulated/floor/tiled, -/area/rnd/research) -"Eg" = ( +/area/rnd/research/researchdivision) +"Ed" = ( /obj/structure/cable/green{ d1 = 1; d2 = 8; @@ -17353,8 +17042,8 @@ dir = 4 }, /turf/simulated/floor/tiled, -/area/rnd/research) -"Eh" = ( +/area/rnd/research/researchdivision) +"Ee" = ( /obj/effect/floor_decal/borderfloor{ dir = 4 }, @@ -17363,7 +17052,33 @@ }, /obj/structure/disposalpipe/segment, /turf/simulated/floor/tiled, -/area/rnd/research) +/area/rnd/research/researchdivision) +"Ef" = ( +/obj/effect/floor_decal/borderfloor{ + dir = 10 + }, +/obj/effect/floor_decal/corner/mauve/border{ + dir = 10 + }, +/obj/structure/flora/pottedplant/stoutbush, +/turf/simulated/floor/tiled, +/area/rnd/research/researchdivision) +"Eg" = ( +/obj/effect/floor_decal/borderfloor, +/obj/effect/floor_decal/corner/mauve/border, +/turf/simulated/floor/tiled, +/area/rnd/research/researchdivision) +"Eh" = ( +/obj/effect/floor_decal/borderfloor, +/obj/effect/floor_decal/corner/mauve/border, +/obj/effect/floor_decal/borderfloor/corner2{ + dir = 9 + }, +/obj/effect/floor_decal/corner/mauve/bordercorner2{ + dir = 9 + }, +/turf/simulated/floor/tiled, +/area/rnd/research/researchdivision) "Ei" = ( /obj/structure/grille, /obj/structure/window/reinforced/full, @@ -17492,29 +17207,28 @@ pixel_y = -10 }, /turf/simulated/wall, -/area/maintenance/engineering/pumpstation) +/area/vacant/vacant_library) "Ev" = ( /obj/structure/sign/directions/evac{ dir = 8 }, /turf/simulated/wall, -/area/maintenance/engineering/pumpstation) -"Ew" = ( -/obj/machinery/door/firedoor/glass, -/obj/structure/disposalpipe/segment, -/obj/machinery/door/airlock/maintenance/common, -/turf/simulated/floor/plating, -/area/maintenance/lower/atrium) +/area/vacant/vacant_library) "Ex" = ( -/obj/machinery/door/airlock/maintenance/common, -/obj/machinery/door/firedoor/glass, +/obj/structure/disposalpipe/segment, /obj/structure/cable/green{ d1 = 1; d2 = 2; icon_state = "1-2" }, +/obj/machinery/door/firedoor/glass, +/obj/machinery/door/airlock/maintenance/engi{ + name = "Bar Substation" + }, /turf/simulated/floor/plating, -/area/maintenance/lower/atrium) +/area/maintenance/substation/bar{ + name = "\improper Surface Civilian Substation" + }) "Ey" = ( /obj/structure/sign/directions/medical{ dir = 4; @@ -17535,52 +17249,35 @@ /turf/simulated/wall, /area/hydroponics) "Ez" = ( -/obj/effect/floor_decal/borderfloor{ - dir = 8 - }, -/obj/effect/floor_decal/corner/lime/border{ - dir = 8 - }, -/obj/effect/floor_decal/steeldecal/steel_decals7{ - dir = 5 - }, -/obj/effect/floor_decal/steeldecal/steel_decals7{ - dir = 6 - }, -/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, -/obj/machinery/atmospherics/pipe/simple/hidden/supply, -/obj/machinery/door/firedoor/glass/hidden/steel, -/turf/simulated/floor/tiled, -/area/hallway/lower/third_south) -"EA" = ( /obj/structure/cable/green{ d1 = 1; d2 = 2; icon_state = "1-2" }, -/obj/effect/floor_decal/borderfloor{ - dir = 4 +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/structure/disposalpipe/segment{ + dir = 4; + icon_state = "pipe-c" }, -/obj/effect/floor_decal/corner/beige/border{ - dir = 4 - }, -/obj/effect/floor_decal/borderfloor/corner2{ - dir = 5 - }, -/obj/effect/floor_decal/corner/beige/bordercorner2{ - dir = 5 - }, -/obj/effect/floor_decal/steeldecal/steel_decals7{ - dir = 10 - }, -/obj/effect/floor_decal/steeldecal/steel_decals7{ - dir = 9 - }, -/obj/machinery/door/firedoor/glass/hidden/steel{ +/obj/effect/floor_decal/steeldecal/steel_decals4{ dir = 8 }, +/obj/effect/floor_decal/steeldecal/steel_decals4{ + dir = 5 + }, /turf/simulated/floor/tiled, -/area/hallway/lower/third_south) +/area/rnd/research/researchdivision) +"EA" = ( +/obj/effect/floor_decal/borderfloor, +/obj/effect/floor_decal/corner/mauve/border, +/obj/effect/floor_decal/borderfloor/corner2, +/obj/effect/floor_decal/corner/mauve/bordercorner2, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/turf/simulated/floor/tiled, +/area/rnd/research/researchdivision) "EB" = ( /obj/structure/cable/green{ d2 = 2; @@ -17592,18 +17289,7 @@ name = "west bump"; pixel_x = -30 }, -/obj/structure/disposalpipe/segment{ - dir = 4; - icon_state = "pipe-c" - }, -/obj/machinery/computer/timeclock/premade/north, -/turf/simulated/floor/wood, -/area/crew_quarters/bar) -"EC" = ( -/obj/structure/disposalpipe/segment{ - dir = 8; - icon_state = "pipe-c" - }, +/obj/structure/disposalpipe/segment, /turf/simulated/floor/wood, /area/crew_quarters/bar) "ED" = ( @@ -17668,62 +17354,6 @@ /turf/simulated/floor/tiled/white, /area/crew_quarters/barrestroom) "EK" = ( -/obj/effect/floor_decal/borderfloor{ - dir = 10 - }, -/obj/effect/floor_decal/corner/mauve/border{ - dir = 10 - }, -/obj/structure/flora/pottedplant/stoutbush, -/turf/simulated/floor/tiled, -/area/rnd/research) -"EL" = ( -/obj/effect/floor_decal/borderfloor, -/obj/effect/floor_decal/corner/mauve/border, -/turf/simulated/floor/tiled, -/area/rnd/research) -"EM" = ( -/obj/effect/floor_decal/borderfloor, -/obj/effect/floor_decal/corner/mauve/border, -/obj/effect/floor_decal/borderfloor/corner2{ - dir = 9 - }, -/obj/effect/floor_decal/corner/mauve/bordercorner2{ - dir = 9 - }, -/turf/simulated/floor/tiled, -/area/rnd/research) -"EN" = ( -/obj/structure/cable/green{ - d1 = 1; - d2 = 2; - icon_state = "1-2" - }, -/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, -/obj/machinery/atmospherics/pipe/simple/hidden/supply, -/obj/structure/disposalpipe/segment{ - dir = 4; - icon_state = "pipe-c" - }, -/obj/effect/floor_decal/steeldecal/steel_decals4{ - dir = 8 - }, -/obj/effect/floor_decal/steeldecal/steel_decals4{ - dir = 5 - }, -/turf/simulated/floor/tiled, -/area/rnd/research) -"EO" = ( -/obj/effect/floor_decal/borderfloor, -/obj/effect/floor_decal/corner/mauve/border, -/obj/effect/floor_decal/borderfloor/corner2, -/obj/effect/floor_decal/corner/mauve/bordercorner2, -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/turf/simulated/floor/tiled, -/area/rnd/research) -"EP" = ( /obj/effect/floor_decal/borderfloor{ dir = 6 }, @@ -17736,7 +17366,83 @@ }, /obj/structure/flora/pottedplant/stoutbush, /turf/simulated/floor/tiled, -/area/rnd/research) +/area/rnd/research/researchdivision) +"EL" = ( +/obj/structure/cable/green{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, +/obj/effect/floor_decal/borderfloor{ + dir = 8 + }, +/obj/effect/floor_decal/corner/mauve/border{ + dir = 8 + }, +/obj/structure/cable/green{ + d1 = 1; + d2 = 4; + icon_state = "1-4" + }, +/turf/simulated/floor/tiled, +/area/rnd/research/researchdivision) +"EM" = ( +/obj/structure/grille, +/obj/machinery/door/firedoor, +/obj/structure/window/reinforced/polarized/full{ + id = "rd_office" + }, +/turf/simulated/floor/plating, +/area/rnd/rdoffice) +"EN" = ( +/obj/structure/grille, +/obj/machinery/door/firedoor, +/obj/structure/window/reinforced/polarized/full{ + id = "rd_office" + }, +/obj/structure/window/reinforced/polarized{ + dir = 8; + id = "rd_office" + }, +/turf/simulated/floor/plating, +/area/rnd/rdoffice) +"EO" = ( +/obj/structure/bed/chair/office/light{ + dir = 1 + }, +/obj/machinery/button/windowtint{ + id = "rd_office"; + pixel_x = 24; + pixel_y = 16 + }, +/obj/effect/landmark/start{ + name = "Research Director" + }, +/obj/machinery/button/remote/airlock{ + id = "RDdoor"; + name = "RD Office Door Control"; + pixel_x = 30; + pixel_y = 18 + }, +/turf/simulated/floor/tiled, +/area/rnd/rdoffice) +"EP" = ( +/obj/structure/grille, +/obj/machinery/door/firedoor, +/obj/structure/window/reinforced/polarized/full{ + id = "rd_office" + }, +/obj/structure/window/reinforced/polarized{ + id = "rd_office" + }, +/turf/simulated/floor/plating, +/area/rnd/rdoffice) "EQ" = ( /obj/effect/floor_decal/borderfloor{ dir = 8 @@ -17804,17 +17510,6 @@ }, /turf/simulated/floor/tiled/steel_grid, /area/assembly/robotics) -"EV" = ( -/obj/structure/cable/green{ - d1 = 4; - d2 = 8; - icon_state = "4-8" - }, -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/turf/simulated/floor/tiled/steel_grid, -/area/assembly/robotics) "EW" = ( /obj/effect/floor_decal/industrial/warning{ dir = 8 @@ -18060,10 +17755,6 @@ /turf/simulated/floor/tiled, /area/hallway/lower/third_south) "Fn" = ( -/obj/structure/disposalpipe/segment{ - dir = 8; - icon_state = "pipe-c" - }, /obj/effect/floor_decal/borderfloor{ dir = 1 }, @@ -18074,6 +17765,9 @@ /obj/effect/floor_decal/steeldecal/steel_decals7{ dir = 4 }, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, /turf/simulated/floor/tiled, /area/hallway/lower/third_south) "Fo" = ( @@ -18090,40 +17784,30 @@ /obj/effect/floor_decal/steeldecal/steel_decals7{ dir = 4 }, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, /turf/simulated/floor/tiled, /area/hallway/lower/third_south) "Fp" = ( /obj/effect/floor_decal/borderfloor{ dir = 1 }, -/obj/effect/floor_decal/industrial/danger{ - dir = 1 - }, /obj/effect/floor_decal/steeldecal/steel_decals7, /obj/effect/floor_decal/steeldecal/steel_decals7{ dir = 4 }, -/turf/simulated/floor/tiled, -/area/hallway/lower/third_south) -"Fq" = ( -/obj/effect/floor_decal/borderfloor{ - dir = 1 - }, -/obj/machinery/door/firedoor/glass/hidden/steel{ - dir = 2 - }, /obj/effect/floor_decal/corner/lightgrey/border{ dir = 1 }, -/obj/effect/floor_decal/steeldecal/steel_decals7, -/obj/effect/floor_decal/steeldecal/steel_decals7{ - dir = 4 - }, /obj/item/device/radio/intercom{ dir = 1; pixel_y = 24; req_access = list() }, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, /turf/simulated/floor/tiled, /area/hallway/lower/third_south) "Fr" = ( @@ -18147,6 +17831,9 @@ /obj/effect/floor_decal/steeldecal/steel_decals7{ dir = 4 }, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, /turf/simulated/floor/tiled, /area/hallway/lower/third_south) "Fs" = ( @@ -18161,6 +17848,9 @@ /obj/effect/floor_decal/steeldecal/steel_decals7{ dir = 4 }, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, /turf/simulated/floor/tiled, /area/hallway/lower/third_south) "Ft" = ( @@ -18179,6 +17869,10 @@ /obj/effect/floor_decal/steeldecal/steel_decals7{ dir = 4 }, +/obj/structure/disposalpipe/segment{ + dir = 8; + icon_state = "pipe-c" + }, /turf/simulated/floor/tiled, /area/hallway/lower/third_south) "Fu" = ( @@ -18195,6 +17889,9 @@ /obj/machinery/station_map{ pixel_y = 32 }, +/obj/machinery/door/firedoor/glass/hidden/steel{ + dir = 2 + }, /turf/simulated/floor/tiled, /area/hallway/lower/third_south) "Fv" = ( @@ -18399,6 +18096,10 @@ }, /turf/simulated/floor/lino, /area/crew_quarters/bar) +"FK" = ( +/obj/machinery/camera/network/outside, +/turf/simulated/floor/outdoors/grass/sif/virgo3b, +/area/tether/surfacebase/outside/outside3) "FM" = ( /obj/structure/sink{ dir = 4; @@ -18414,12 +18115,6 @@ "FN" = ( /turf/simulated/wall, /area/rnd/rdoffice) -"FO" = ( -/obj/structure/grille, -/obj/machinery/door/firedoor, -/obj/structure/window/reinforced/polarized/full, -/turf/simulated/floor/plating, -/area/rnd/rdoffice) "FP" = ( /obj/machinery/door/firedoor/glass, /obj/structure/cable/green{ @@ -18543,15 +18238,6 @@ }, /turf/simulated/floor/tiled, /area/hallway/lower/third_south) -"Gd" = ( -/obj/machinery/atmospherics/pipe/manifold/hidden/supply{ - dir = 1 - }, -/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{ - dir = 1 - }, -/turf/simulated/floor/tiled, -/area/hallway/lower/third_south) "Ge" = ( /obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{ dir = 1 @@ -18559,20 +18245,6 @@ /obj/machinery/atmospherics/pipe/manifold/hidden/supply, /turf/simulated/floor/tiled, /area/hallway/lower/third_south) -"Gf" = ( -/obj/structure/cable/green{ - d1 = 2; - d2 = 4; - icon_state = "2-4" - }, -/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ - dir = 4 - }, -/obj/machinery/atmospherics/pipe/simple/hidden/supply{ - dir = 4 - }, -/turf/simulated/floor/tiled, -/area/hallway/lower/third_south) "Gg" = ( /obj/structure/cable/green{ d1 = 4; @@ -18587,29 +18259,7 @@ }, /turf/simulated/floor/tiled, /area/hallway/lower/third_south) -"Gh" = ( -/obj/structure/cable/green{ - d1 = 4; - d2 = 8; - icon_state = "4-8" - }, -/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ - dir = 4 - }, -/obj/machinery/atmospherics/pipe/simple/hidden/supply{ - dir = 4 - }, -/obj/machinery/door/firedoor/glass/hidden/steel{ - dir = 8 - }, -/turf/simulated/floor/tiled, -/area/hallway/lower/third_south) "Gi" = ( -/obj/structure/cable/green{ - d1 = 4; - d2 = 8; - icon_state = "4-8" - }, /obj/structure/cable/green{ d1 = 1; d2 = 4; @@ -18624,17 +18274,22 @@ /turf/simulated/floor/tiled, /area/hallway/lower/third_south) "Gj" = ( -/obj/structure/cable/green{ - d1 = 1; - d2 = 8; - icon_state = "1-8" - }, /obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ dir = 4 }, /obj/machinery/atmospherics/pipe/simple/hidden/supply{ dir = 4 }, +/obj/structure/cable/green{ + d1 = 1; + d2 = 8; + icon_state = "1-8" + }, +/obj/structure/cable/green{ + d1 = 1; + d2 = 4; + icon_state = "1-4" + }, /turf/simulated/floor/tiled, /area/hallway/lower/third_south) "Gk" = ( @@ -18644,12 +18299,22 @@ }, /obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers, /obj/machinery/door/firedoor/glass/hidden/steel, +/obj/structure/cable/green{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, /turf/simulated/floor/tiled, /area/hallway/lower/third_south) "Gl" = ( /obj/machinery/atmospherics/unary/vent_pump/on{ dir = 1 }, +/obj/structure/cable/green{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, /turf/simulated/floor/tiled, /area/hallway/lower/third_south) "Gm" = ( @@ -18661,6 +18326,11 @@ /obj/effect/floor_decal/steeldecal/steel_decals6{ dir = 5 }, +/obj/structure/cable/green{ + d1 = 1; + d2 = 8; + icon_state = "1-8" + }, /turf/simulated/floor/tiled, /area/hallway/lower/third_south) "Gn" = ( @@ -18756,6 +18426,26 @@ }, /turf/simulated/floor/lino, /area/crew_quarters/bar) +"Gt" = ( +/obj/structure/table/rack/shelf, +/obj/item/weapon/storage/backpack/parachute{ + pixel_x = -4; + pixel_y = -6 + }, +/obj/item/weapon/storage/backpack/parachute{ + pixel_x = 4; + pixel_y = -6 + }, +/obj/item/weapon/storage/backpack/parachute{ + pixel_x = -4; + pixel_y = 4 + }, +/obj/item/weapon/storage/backpack/parachute{ + pixel_x = 4; + pixel_y = 4 + }, +/turf/simulated/floor/tiled, +/area/tether/surfacebase/shuttle_pad) "Gu" = ( /obj/machinery/atmospherics/pipe/simple/hidden/supply, /obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, @@ -18987,45 +18677,20 @@ }, /turf/simulated/floor/tiled, /area/hallway/lower/third_south) -"GL" = ( -/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, -/obj/machinery/atmospherics/pipe/simple/hidden/supply, -/obj/effect/floor_decal/borderfloor/corner{ - dir = 8 - }, -/obj/effect/floor_decal/corner/lightgrey/bordercorner{ - dir = 8 - }, +"GM" = ( +/obj/effect/floor_decal/borderfloor, +/obj/effect/floor_decal/corner/lightgrey/border, /obj/effect/floor_decal/steeldecal/steel_decals7{ dir = 1 }, /obj/effect/floor_decal/steeldecal/steel_decals7{ - dir = 6 + dir = 8 }, -/turf/simulated/floor/tiled, -/area/hallway/lower/third_south) -"GM" = ( /obj/machinery/atmospherics/unary/vent_scrubber/on{ dir = 1 }, /turf/simulated/floor/tiled, /area/hallway/lower/third_south) -"GN" = ( -/obj/structure/cable/green{ - d1 = 1; - d2 = 2; - icon_state = "1-2" - }, -/obj/effect/floor_decal/borderfloor/corner, -/obj/effect/floor_decal/corner/lightgrey/bordercorner, -/obj/effect/floor_decal/steeldecal/steel_decals7{ - dir = 8 - }, -/obj/effect/floor_decal/steeldecal/steel_decals7{ - dir = 9 - }, -/turf/simulated/floor/tiled, -/area/hallway/lower/third_south) "GO" = ( /obj/effect/floor_decal/borderfloor, /obj/effect/floor_decal/corner/lightgrey/border, @@ -19037,20 +18702,6 @@ }, /turf/simulated/floor/tiled, /area/hallway/lower/third_south) -"GP" = ( -/obj/effect/floor_decal/borderfloor, -/obj/machinery/door/firedoor/glass/hidden/steel{ - dir = 1 - }, -/obj/effect/floor_decal/corner/lightgrey/border, -/obj/effect/floor_decal/steeldecal/steel_decals7{ - dir = 8 - }, -/obj/effect/floor_decal/steeldecal/steel_decals7{ - dir = 1 - }, -/turf/simulated/floor/tiled, -/area/hallway/lower/third_south) "GQ" = ( /obj/machinery/light, /obj/effect/floor_decal/borderfloor, @@ -19063,22 +18714,6 @@ }, /turf/simulated/floor/tiled, /area/hallway/lower/third_south) -"GR" = ( -/obj/machinery/computer/guestpass{ - dir = 1; - icon_state = "guest"; - pixel_y = -28 - }, -/obj/effect/floor_decal/borderfloor, -/obj/effect/floor_decal/corner/lightgrey/border, -/obj/effect/floor_decal/steeldecal/steel_decals7{ - dir = 8 - }, -/obj/effect/floor_decal/steeldecal/steel_decals7{ - dir = 1 - }, -/turf/simulated/floor/tiled, -/area/hallway/lower/third_south) "GS" = ( /obj/effect/floor_decal/borderfloor, /obj/effect/floor_decal/corner/lightgrey/border, @@ -19093,21 +18728,6 @@ }, /turf/simulated/floor/tiled, /area/hallway/lower/third_south) -"GT" = ( -/obj/machinery/alarm{ - dir = 1; - pixel_y = -25 - }, -/obj/effect/floor_decal/borderfloor, -/obj/effect/floor_decal/corner/lightgrey/border, -/obj/effect/floor_decal/steeldecal/steel_decals7{ - dir = 8 - }, -/obj/effect/floor_decal/steeldecal/steel_decals7{ - dir = 1 - }, -/turf/simulated/floor/tiled, -/area/hallway/lower/third_south) "GU" = ( /obj/machinery/camera/network/northern_star{ dir = 1 @@ -19137,22 +18757,10 @@ /turf/simulated/floor/tiled, /area/hallway/lower/third_south) "GW" = ( -/obj/effect/floor_decal/borderfloor{ - dir = 6 - }, -/obj/effect/floor_decal/corner/beige/border{ - dir = 6 - }, -/obj/effect/floor_decal/borderfloor/corner2{ - dir = 6 - }, -/obj/effect/floor_decal/corner/beige/bordercorner2{ - dir = 6 - }, /obj/structure/sign/department/bar{ pixel_x = 32 }, -/obj/structure/flora/pottedplant, +/obj/effect/floor_decal/steeldecal/steel_decals6, /turf/simulated/floor/tiled, /area/hallway/lower/third_south) "GX" = ( @@ -19164,6 +18772,7 @@ /area/crew_quarters/bar) "GY" = ( /obj/machinery/light, +/obj/structure/flora/pottedplant, /turf/simulated/floor/wood, /area/crew_quarters/bar) "GZ" = ( @@ -19208,6 +18817,24 @@ /obj/item/weapon/book/manual/barman_recipes, /turf/simulated/floor/lino, /area/crew_quarters/bar) +"Hg" = ( +/obj/effect/floor_decal/borderfloor{ + dir = 8 + }, +/obj/effect/floor_decal/corner/lime/border{ + dir = 8 + }, +/obj/effect/floor_decal/steeldecal/steel_decals7{ + dir = 5 + }, +/obj/effect/floor_decal/steeldecal/steel_decals7{ + dir = 6 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/machinery/door/firedoor/glass/hidden/steel, +/turf/simulated/floor/tiled, +/area/hallway/lower/third_south) "Hh" = ( /obj/structure/sink{ dir = 4; @@ -19349,56 +18976,8 @@ /turf/simulated/floor/tiled/steel_grid, /area/assembly/robotics) "Hr" = ( -/obj/structure/grille, -/obj/structure/window/reinforced/full, /obj/machinery/door/firedoor, -/obj/structure/window/reinforced, -/turf/simulated/floor/plating, -/area/hallway/lower/third_south) -"Hs" = ( -/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, -/obj/machinery/atmospherics/pipe/simple/hidden/supply, -/obj/effect/floor_decal/borderfloor{ - dir = 8 - }, -/obj/effect/floor_decal/corner/lightgrey/border{ - dir = 8 - }, -/obj/effect/floor_decal/steeldecal/steel_decals7{ - dir = 6 - }, -/obj/effect/floor_decal/steeldecal/steel_decals7{ - dir = 5 - }, -/obj/machinery/door/firedoor/glass, -/obj/machinery/door/airlock/glass, -/turf/simulated/floor/tiled, -/area/hallway/lower/third_south) -"Ht" = ( -/obj/machinery/door/firedoor/glass, -/obj/machinery/door/airlock/glass, -/turf/simulated/floor/tiled, -/area/hallway/lower/third_south) -"Hu" = ( -/obj/structure/cable/green{ - d1 = 1; - d2 = 2; - icon_state = "1-2" - }, -/obj/effect/floor_decal/borderfloor{ - dir = 4 - }, -/obj/effect/floor_decal/corner/lightgrey/border{ - dir = 4 - }, -/obj/effect/floor_decal/steeldecal/steel_decals7{ - dir = 9 - }, -/obj/effect/floor_decal/steeldecal/steel_decals7{ - dir = 10 - }, -/obj/machinery/door/firedoor/glass, -/obj/machinery/door/airlock/glass, +/obj/machinery/door/airlock/glass_external/public, /turf/simulated/floor/tiled, /area/hallway/lower/third_south) "Hv" = ( @@ -19423,15 +19002,6 @@ /obj/machinery/door/firedoor/glass, /turf/simulated/floor/lino, /area/tether/surfacebase/bar_backroom) -"Hy" = ( -/obj/structure/grille, -/obj/machinery/door/firedoor, -/obj/structure/window/reinforced/polarized{ - dir = 8 - }, -/obj/structure/window/reinforced/polarized/full, -/turf/simulated/floor/plating, -/area/rnd/rdoffice) "Hz" = ( /obj/structure/table/glass, /obj/item/weapon/paper_bin{ @@ -19622,41 +19192,15 @@ /obj/structure/closet{ name = "materials" }, -/obj/item/stack/material/steel{ - amount = 50 - }, -/obj/item/stack/material/steel{ - amount = 50 - }, -/obj/item/stack/material/steel{ - amount = 50 - }, -/obj/item/stack/material/steel{ - amount = 50 - }, -/obj/item/stack/material/steel{ - amount = 50 - }, -/obj/item/stack/material/glass{ - amount = 50; - pixel_x = -2; - pixel_y = 2 - }, -/obj/item/stack/material/glass{ - amount = 50; - pixel_x = -2; - pixel_y = 2 - }, -/obj/item/stack/material/glass{ - amount = 50; - pixel_x = -2; - pixel_y = 2 - }, -/obj/item/stack/material/glass{ - amount = 50; - pixel_x = -2; - pixel_y = 2 - }, +/obj/fiftyspawner/steel, +/obj/fiftyspawner/steel, +/obj/fiftyspawner/steel, +/obj/fiftyspawner/steel, +/obj/fiftyspawner/steel, +/obj/fiftyspawner/glass, +/obj/fiftyspawner/glass, +/obj/fiftyspawner/glass, +/obj/fiftyspawner/glass, /obj/item/stack/material/plasteel{ amount = 10 }, @@ -19732,61 +19276,6 @@ }, /turf/simulated/floor/tiled/steel_grid, /area/assembly/robotics) -"HT" = ( -/obj/structure/grille, -/obj/structure/window/reinforced/full, -/obj/machinery/door/firedoor, -/obj/structure/window/reinforced{ - dir = 8 - }, -/turf/simulated/floor/plating, -/area/hallway/lower/third_south) -"HU" = ( -/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, -/obj/machinery/atmospherics/pipe/simple/hidden/supply, -/obj/effect/floor_decal/borderfloor{ - dir = 8 - }, -/obj/effect/floor_decal/corner/lightgrey/border{ - dir = 8 - }, -/obj/effect/floor_decal/steeldecal/steel_decals7{ - dir = 6 - }, -/obj/effect/floor_decal/steeldecal/steel_decals7{ - dir = 5 - }, -/turf/simulated/floor/tiled, -/area/hallway/lower/third_south) -"HV" = ( -/obj/structure/cable/green{ - d1 = 1; - d2 = 2; - icon_state = "1-2" - }, -/obj/effect/floor_decal/borderfloor{ - dir = 4 - }, -/obj/effect/floor_decal/corner/lightgrey/border{ - dir = 4 - }, -/obj/effect/floor_decal/steeldecal/steel_decals7{ - dir = 9 - }, -/obj/effect/floor_decal/steeldecal/steel_decals7{ - dir = 10 - }, -/turf/simulated/floor/tiled, -/area/hallway/lower/third_south) -"HW" = ( -/obj/structure/grille, -/obj/structure/window/reinforced/full, -/obj/machinery/door/firedoor, -/obj/structure/window/reinforced{ - dir = 4 - }, -/turf/simulated/floor/plating, -/area/hallway/lower/third_south) "HX" = ( /obj/machinery/portable_atmospherics/powered/scrubber/huge/stationary{ scrub_id = "atrium" @@ -19803,25 +19292,6 @@ }, /turf/simulated/floor/tiled, /area/rnd/rdoffice) -"HZ" = ( -/obj/structure/bed/chair/office/light{ - dir = 1 - }, -/obj/machinery/button/windowtint{ - pixel_x = 24; - pixel_y = 16 - }, -/obj/effect/landmark/start{ - name = "Research Director" - }, -/obj/machinery/button/remote/airlock{ - id = "RDdoor"; - name = "RD Office Door Control"; - pixel_x = 30; - pixel_y = 18 - }, -/turf/simulated/floor/tiled, -/area/rnd/rdoffice) "Ia" = ( /obj/structure/table/glass, /obj/machinery/photocopier/faxmachine{ @@ -19917,7 +19387,7 @@ /turf/simulated/floor/tiled, /area/rnd/rdoffice) "Ik" = ( -/mob/living/simple_animal/slime/rainbow/kendrick, +/mob/living/simple_mob/slime/xenobio/rainbow/kendrick, /turf/simulated/floor/tiled, /area/rnd/rdoffice) "Il" = ( @@ -19979,30 +19449,6 @@ }, /turf/simulated/floor/tiled/steel_grid, /area/assembly/robotics) -"Is" = ( -/obj/structure/symbol/da, -/turf/simulated/wall, -/area/hallway/lower/third_south) -"It" = ( -/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, -/obj/machinery/atmospherics/pipe/simple/hidden/supply, -/obj/machinery/camera/network/northern_star{ - dir = 4 - }, -/obj/effect/floor_decal/borderfloor{ - dir = 8 - }, -/obj/effect/floor_decal/corner/lightgrey/border{ - dir = 8 - }, -/obj/effect/floor_decal/steeldecal/steel_decals7{ - dir = 6 - }, -/obj/effect/floor_decal/steeldecal/steel_decals7{ - dir = 5 - }, -/turf/simulated/floor/tiled, -/area/hallway/lower/third_south) "Iu" = ( /obj/machinery/computer/aifixer{ dir = 1 @@ -20269,73 +19715,9 @@ }, /turf/simulated/floor/tiled/steel_grid, /area/assembly/robotics) -"IO" = ( -/obj/structure/symbol/es, -/turf/simulated/wall, -/area/hallway/lower/third_south) -"IP" = ( -/obj/machinery/light{ - icon_state = "tube1"; - dir = 8 - }, -/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, -/obj/machinery/atmospherics/pipe/simple/hidden/supply, -/obj/effect/floor_decal/borderfloor{ - dir = 8 - }, -/obj/effect/floor_decal/corner/lightgrey/border{ - dir = 8 - }, -/obj/effect/floor_decal/steeldecal/steel_decals7{ - dir = 6 - }, -/obj/effect/floor_decal/steeldecal/steel_decals7{ - dir = 5 - }, -/turf/simulated/floor/tiled, -/area/hallway/lower/third_south) -"IQ" = ( -/obj/structure/cable/green{ - d1 = 1; - d2 = 2; - icon_state = "1-2" - }, -/obj/effect/floor_decal/borderfloor{ - dir = 4 - }, -/obj/effect/floor_decal/corner/lightgrey/border{ - dir = 4 - }, -/obj/effect/floor_decal/steeldecal/steel_decals7{ - dir = 9 - }, -/obj/effect/floor_decal/steeldecal/steel_decals7{ - dir = 10 - }, -/obj/structure/closet/hydrant{ - pixel_x = 32 - }, -/turf/simulated/floor/tiled, -/area/hallway/lower/third_south) "IR" = ( /turf/simulated/wall, /area/tether/surfacebase/shuttle_pad) -"IS" = ( -/obj/structure/grille, -/obj/structure/window/reinforced/full, -/obj/machinery/door/firedoor, -/obj/structure/window/reinforced{ - dir = 1 - }, -/turf/simulated/floor/plating, -/area/tether/surfacebase/shuttle_pad) -"IT" = ( -/obj/structure/grille, -/obj/machinery/door/firedoor, -/obj/structure/window/reinforced/polarized, -/obj/structure/window/reinforced/polarized/full, -/turf/simulated/floor/plating, -/area/rnd/rdoffice) "IU" = ( /obj/structure/grille, /obj/structure/window/reinforced/full, @@ -20343,140 +19725,18 @@ /obj/structure/window/reinforced, /turf/simulated/floor/plating, /area/assembly/robotics) -"IV" = ( -/obj/machinery/firealarm{ - dir = 8; - pixel_x = -24 - }, -/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, -/obj/machinery/atmospherics/pipe/simple/hidden/supply, -/obj/effect/floor_decal/borderfloor{ - dir = 8 - }, -/obj/effect/floor_decal/corner/lightgrey/border{ - dir = 8 - }, -/obj/effect/floor_decal/steeldecal/steel_decals7{ - dir = 6 - }, -/obj/effect/floor_decal/steeldecal/steel_decals7{ - dir = 5 - }, -/turf/simulated/floor/tiled, -/area/hallway/lower/third_south) -"IW" = ( -/obj/structure/cable/green{ - d1 = 1; - d2 = 2; - icon_state = "1-2" - }, -/obj/machinery/status_display{ - pixel_x = 32; - pixel_y = 0 - }, -/obj/effect/floor_decal/borderfloor{ - dir = 4 - }, -/obj/effect/floor_decal/corner/lightgrey/border{ - dir = 4 - }, -/obj/effect/floor_decal/steeldecal/steel_decals7{ - dir = 9 - }, -/obj/effect/floor_decal/steeldecal/steel_decals7{ - dir = 10 - }, -/turf/simulated/floor/tiled, -/area/hallway/lower/third_south) -"IX" = ( -/obj/structure/closet/firecloset, -/turf/simulated/floor/reinforced, -/area/tether/surfacebase/shuttle_pad) "IY" = ( /turf/simulated/floor/reinforced, /area/tether/surfacebase/shuttle_pad) -"IZ" = ( -/obj/machinery/computer/shuttle_control/tether_backup, -/obj/machinery/airlock_sensor{ - frequency = 1380; - id_tag = "tether_pad_sensor"; - pixel_x = -11; - pixel_y = 28 - }, -/obj/machinery/embedded_controller/radio/simple_docking_controller{ - frequency = 1380; - id_tag = "tether_pad_airlock"; - pixel_x = 0; - pixel_y = 28; - tag_door = "tether_pad_hatch" - }, -/turf/simulated/floor/reinforced, -/area/tether/surfacebase/shuttle_pad) -"Ja" = ( -/obj/structure/table/rack/shelf, -/obj/item/weapon/storage/backpack/parachute{ - pixel_x = -4; - pixel_y = 4 - }, -/obj/item/weapon/storage/backpack/parachute{ - pixel_x = 4; - pixel_y = 4 - }, -/obj/item/weapon/storage/backpack/parachute{ - pixel_x = -4; - pixel_y = -6 - }, -/obj/item/weapon/storage/backpack/parachute{ - pixel_x = 4; - pixel_y = -6 +"Jc" = ( +/obj/effect/floor_decal/steeldecal/steel_decals_central5{ + icon_state = "steel_decals_central5"; + dir = 4 }, /obj/machinery/light{ - dir = 1 - }, -/turf/simulated/floor/reinforced, -/area/tether/surfacebase/shuttle_pad) -"Jb" = ( -/obj/structure/frame/computer, -/turf/simulated/floor/reinforced, -/area/tether/surfacebase/shuttle_pad) -"Jc" = ( -/obj/structure/grille, -/obj/structure/window/reinforced/full, -/obj/machinery/door/firedoor, -/obj/structure/window/reinforced{ dir = 8 }, -/turf/simulated/floor/plating, -/area/tether/surfacebase/shuttle_pad) -"Jd" = ( -/obj/effect/floor_decal/industrial/warning/corner, -/turf/simulated/floor/reinforced, -/area/tether/surfacebase/shuttle_pad) -"Je" = ( -/obj/effect/floor_decal/industrial/warning, -/turf/simulated/floor/reinforced, -/area/tether/surfacebase/shuttle_pad) -"Jf" = ( -/obj/effect/floor_decal/industrial/warning/corner{ - icon_state = "warningcorner"; - dir = 8 - }, -/turf/simulated/floor/reinforced, -/area/tether/surfacebase/shuttle_pad) -"Jg" = ( -/obj/structure/grille, -/obj/structure/window/reinforced/full, -/obj/machinery/door/firedoor, -/obj/structure/window/reinforced{ - dir = 4 - }, -/turf/simulated/floor/plating, -/area/tether/surfacebase/shuttle_pad) -"Jh" = ( -/obj/effect/floor_decal/industrial/warning{ - dir = 4 - }, -/turf/simulated/floor/reinforced, +/turf/simulated/floor/tiled/monotile, /area/tether/surfacebase/shuttle_pad) "Ji" = ( /turf/simulated/shuttle/wall, @@ -20486,26 +19746,6 @@ /obj/structure/grille, /turf/simulated/shuttle/plating/airless, /area/shuttle/tether/surface) -"Jk" = ( -/obj/effect/floor_decal/industrial/warning{ - icon_state = "warning"; - dir = 8 - }, -/turf/simulated/floor/reinforced, -/area/tether/surfacebase/shuttle_pad) -"Jl" = ( -/obj/item/device/radio/beacon, -/turf/simulated/floor/tiled, -/area/hallway/lower/third_south) -"Jm" = ( -/obj/effect/floor_decal/industrial/warning{ - dir = 4 - }, -/obj/machinery/camera/network/civilian{ - dir = 4 - }, -/turf/simulated/floor/reinforced, -/area/tether/surfacebase/shuttle_pad) "Jn" = ( /obj/structure/closet/firecloset, /turf/simulated/shuttle/floor/black, @@ -20518,16 +19758,6 @@ /obj/structure/closet/emcloset, /turf/simulated/shuttle/floor/black, /area/shuttle/tether/surface) -"Jq" = ( -/obj/effect/floor_decal/industrial/warning{ - icon_state = "warning"; - dir = 8 - }, -/obj/machinery/camera/network/civilian{ - dir = 8 - }, -/turf/simulated/floor/reinforced, -/area/tether/surfacebase/shuttle_pad) "Jr" = ( /obj/structure/bed/chair/shuttle{ dir = 4 @@ -20550,138 +19780,12 @@ }, /turf/simulated/shuttle/floor/black, /area/shuttle/tether/surface) -"Ju" = ( -/obj/structure/symbol/es, -/turf/simulated/shuttle/wall, -/area/shuttle/tether/surface) -"Jv" = ( -/obj/machinery/light{ - dir = 8; - icon_state = "tube1"; - pixel_y = 0 - }, -/turf/simulated/shuttle/floor/black, -/area/shuttle/tether/surface) -"Jw" = ( -/obj/machinery/door/airlock/glass_external{ - frequency = 1380; - icon_state = "door_locked"; - id_tag = "tether_shuttle_hatch"; - locked = 1; - name = "Shuttle Hatch" - }, -/turf/simulated/floor/plating, -/area/shuttle/tether/surface) -"Jx" = ( -/obj/structure/cable/green{ - d1 = 1; - d2 = 2; - icon_state = "1-2" - }, -/obj/machinery/camera/network/northern_star{ - dir = 9 - }, -/obj/effect/floor_decal/borderfloor{ - dir = 4 - }, -/obj/effect/floor_decal/corner/lightgrey/border{ - dir = 4 - }, -/obj/effect/floor_decal/steeldecal/steel_decals7{ - dir = 9 - }, -/obj/effect/floor_decal/steeldecal/steel_decals7{ - dir = 10 - }, -/turf/simulated/floor/tiled, -/area/hallway/lower/third_south) -"Jy" = ( -/obj/machinery/firealarm{ - dir = 8; - pixel_x = -24 - }, -/obj/effect/floor_decal/industrial/warning{ - dir = 4 - }, -/turf/simulated/floor/reinforced, -/area/tether/surfacebase/shuttle_pad) "Jz" = ( /obj/structure/bed/chair/shuttle{ dir = 1 }, /turf/simulated/shuttle/floor/black, /area/shuttle/tether/surface) -"JA" = ( -/obj/structure/symbol/da, -/turf/simulated/shuttle/wall, -/area/shuttle/tether/surface) -"JB" = ( -/obj/machinery/alarm{ - dir = 4; - icon_state = "alarm0"; - pixel_x = -22; - pixel_y = 0 - }, -/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, -/obj/machinery/atmospherics/pipe/simple/hidden/supply, -/obj/effect/floor_decal/borderfloor{ - dir = 8 - }, -/obj/effect/floor_decal/corner/lightgrey/border{ - dir = 8 - }, -/obj/effect/floor_decal/steeldecal/steel_decals7{ - dir = 6 - }, -/obj/effect/floor_decal/steeldecal/steel_decals7{ - dir = 5 - }, -/turf/simulated/floor/tiled, -/area/hallway/lower/third_south) -"JC" = ( -/obj/machinery/light{ - dir = 4; - icon_state = "tube1" - }, -/obj/structure/cable/green{ - d1 = 1; - d2 = 2; - icon_state = "1-2" - }, -/obj/structure/extinguisher_cabinet{ - dir = 8; - icon_state = "extinguisher_closed"; - pixel_x = 30 - }, -/obj/effect/floor_decal/borderfloor{ - dir = 4 - }, -/obj/effect/floor_decal/corner/lightgrey/border{ - dir = 4 - }, -/obj/effect/floor_decal/steeldecal/steel_decals7{ - dir = 9 - }, -/obj/effect/floor_decal/steeldecal/steel_decals7{ - dir = 10 - }, -/turf/simulated/floor/tiled, -/area/hallway/lower/third_south) -"JD" = ( -/obj/machinery/light{ - icon_state = "tube1"; - dir = 8 - }, -/obj/effect/floor_decal/industrial/warning{ - dir = 4 - }, -/obj/structure/extinguisher_cabinet{ - dir = 4; - icon_state = "extinguisher_closed"; - pixel_x = -30 - }, -/turf/simulated/floor/reinforced, -/area/tether/surfacebase/shuttle_pad) "JE" = ( /obj/structure/shuttle/engine/heater, /obj/structure/window/reinforced{ @@ -20689,590 +19793,98 @@ }, /turf/simulated/shuttle/plating/airless, /area/shuttle/tether/surface) -"JF" = ( -/obj/machinery/light{ - dir = 4; - icon_state = "tube1" - }, -/obj/effect/floor_decal/industrial/warning{ - icon_state = "warning"; - dir = 8 - }, -/turf/simulated/floor/reinforced, -/area/tether/surfacebase/shuttle_pad) -"JG" = ( -/obj/structure/cable/green{ - d1 = 1; - d2 = 2; - icon_state = "1-2" - }, -/obj/machinery/newscaster{ - pixel_x = 25 - }, -/obj/effect/floor_decal/borderfloor{ - dir = 4 - }, -/obj/effect/floor_decal/corner/lightgrey/border{ - dir = 4 - }, -/obj/effect/floor_decal/steeldecal/steel_decals7{ - dir = 9 - }, -/obj/effect/floor_decal/steeldecal/steel_decals7{ - dir = 10 - }, -/turf/simulated/floor/tiled, -/area/hallway/lower/third_south) "JH" = ( -/obj/machinery/power/apc{ - cell_type = /obj/item/weapon/cell/super; - dir = 8; - name = "west bump"; - pixel_x = -30 - }, -/obj/structure/cable/green{ - d2 = 2; - icon_state = "0-2" - }, -/obj/effect/floor_decal/industrial/warning{ +/obj/effect/floor_decal/borderfloorblack{ + dir = 4 + }, +/obj/effect/floor_decal/corner/grey/border{ + icon_state = "bordercolor"; dir = 4 }, -/turf/simulated/floor/reinforced, -/area/tether/surfacebase/shuttle_pad) -"JI" = ( -/obj/structure/shuttle/engine/propulsion, -/turf/simulated/floor/reinforced, -/turf/simulated/shuttle/plating/carry, -/area/shuttle/tether/surface) -"JJ" = ( -/obj/machinery/atmospherics/unary/vent_scrubber/on, /turf/simulated/floor/tiled, -/area/hallway/lower/third_south) +/area/tether/surfacebase/shuttle_pad) "JK" = ( +/obj/machinery/door/firedoor, /obj/structure/grille, /obj/structure/window/reinforced/full, -/obj/machinery/door/firedoor, -/turf/simulated/floor/plating, -/area/tether/surfacebase/shuttle_pad) -"JL" = ( -/obj/structure/cable/green{ - d1 = 1; - d2 = 2; - icon_state = "1-2" - }, -/obj/machinery/atmospherics/unary/vent_scrubber/on, -/obj/effect/floor_decal/industrial/warning/corner{ - icon_state = "warningcorner"; +/obj/structure/window/reinforced{ dir = 4 }, -/turf/simulated/floor/reinforced, +/turf/simulated/floor/plating, /area/tether/surfacebase/shuttle_pad) "JM" = ( -/obj/effect/floor_decal/industrial/warning{ - dir = 1 - }, -/turf/simulated/floor/reinforced, +/obj/structure/reagent_dispensers/fueltank, +/turf/simulated/floor/tiled/techmaint, /area/tether/surfacebase/shuttle_pad) -"JN" = ( -/obj/effect/floor_decal/industrial/warning/corner{ - dir = 1 - }, -/turf/simulated/floor/reinforced, -/area/tether/surfacebase/shuttle_pad) -"JO" = ( -/obj/effect/floor_decal/industrial/warning/corner{ - icon_state = "warningcorner"; - dir = 4 - }, -/turf/simulated/floor/reinforced, -/area/tether/surfacebase/shuttle_pad) -"JP" = ( -/obj/machinery/atmospherics/pipe/simple/hidden/supply{ - dir = 5 - }, -/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ - dir = 5 - }, -/obj/effect/floor_decal/borderfloor{ - dir = 8 - }, -/obj/effect/floor_decal/corner/lightgrey/border{ - dir = 8 - }, -/obj/effect/floor_decal/steeldecal/steel_decals7{ - dir = 6 - }, -/obj/effect/floor_decal/steeldecal/steel_decals7{ - dir = 5 - }, -/turf/simulated/floor/tiled, -/area/hallway/lower/third_south) -"JQ" = ( -/obj/machinery/atmospherics/pipe/manifold/hidden/supply{ - dir = 1 - }, -/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers, -/turf/simulated/floor/tiled, -/area/hallway/lower/third_south) -"JR" = ( -/obj/structure/cable/green{ - d1 = 1; - d2 = 4; - icon_state = "1-4" - }, -/obj/machinery/atmospherics/pipe/simple/hidden/supply{ - dir = 4 - }, -/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ - dir = 4 - }, -/obj/effect/floor_decal/borderfloor/corner{ - dir = 4 - }, -/obj/effect/floor_decal/corner/lightgrey/bordercorner{ - dir = 4 - }, -/obj/effect/floor_decal/steeldecal/steel_decals7{ - dir = 10 - }, -/obj/effect/floor_decal/steeldecal/steel_decals7, -/turf/simulated/floor/tiled, -/area/hallway/lower/third_south) -"JS" = ( -/obj/structure/cable/green{ - d1 = 4; - d2 = 8; - icon_state = "4-8" - }, -/obj/machinery/atmospherics/pipe/simple/hidden/supply{ - dir = 4 - }, -/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ - dir = 4 - }, -/obj/effect/floor_decal/borderfloor{ - dir = 1 - }, -/obj/effect/floor_decal/corner/lightgrey/border{ - dir = 1 - }, -/obj/effect/floor_decal/steeldecal/steel_decals7, -/obj/effect/floor_decal/steeldecal/steel_decals7{ - dir = 4 - }, -/turf/simulated/floor/tiled, -/area/hallway/lower/third_south) -"JT" = ( -/obj/structure/cable/green{ - d1 = 4; - d2 = 8; - icon_state = "4-8" - }, -/obj/machinery/atmospherics/pipe/simple/hidden/supply{ - dir = 4 - }, -/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ - dir = 4 - }, -/obj/effect/floor_decal/borderfloor{ - dir = 1 - }, -/obj/effect/floor_decal/corner/lightgrey/border{ - dir = 1 - }, -/obj/effect/floor_decal/borderfloor/corner2{ - dir = 1 - }, -/obj/effect/floor_decal/corner/lightgrey/bordercorner2{ - dir = 1 - }, -/obj/effect/floor_decal/steeldecal/steel_decals7, -/obj/effect/floor_decal/steeldecal/steel_decals7{ - dir = 4 - }, -/turf/simulated/floor/tiled, -/area/hallway/lower/third_south) -"JU" = ( -/obj/structure/cable/green{ - d1 = 4; - d2 = 8; - icon_state = "4-8" - }, -/obj/machinery/atmospherics/pipe/simple/hidden/supply{ - dir = 4 - }, -/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ - dir = 4 - }, -/turf/simulated/floor/tiled/steel_grid, -/area/hallway/lower/third_south) "JV" = ( -/obj/machinery/door/firedoor/glass, -/obj/structure/cable/green{ - d1 = 4; - d2 = 8; - icon_state = "4-8" +/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{ + dir = 8 }, -/obj/machinery/atmospherics/pipe/simple/hidden/supply{ - dir = 4 +/obj/machinery/atmospherics/pipe/manifold/hidden/supply{ + dir = 8 }, -/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ - dir = 4 - }, -/obj/machinery/door/airlock/glass_external/public, -/turf/simulated/floor/tiled/steel_grid, +/turf/simulated/floor/tiled, /area/tether/surfacebase/shuttle_pad) "JW" = ( -/obj/structure/cable/green{ - d1 = 4; - d2 = 8; - icon_state = "4-8" - }, /obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ dir = 4 }, -/obj/machinery/atmospherics/pipe/manifold/hidden/supply{ - dir = 1 - }, -/turf/simulated/floor/tiled/steel_grid, -/area/tether/surfacebase/shuttle_pad) -"JX" = ( -/obj/structure/cable/green{ - d1 = 4; - d2 = 8; - icon_state = "4-8" - }, /obj/machinery/atmospherics/pipe/simple/hidden/supply{ dir = 4 }, -/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{ - dir = 1 - }, -/obj/machinery/alarm{ - frequency = 1441; - pixel_y = 22 - }, -/turf/simulated/floor/tiled/steel_grid, +/turf/simulated/floor/tiled, /area/tether/surfacebase/shuttle_pad) "JY" = ( -/obj/structure/cable/green{ - d1 = 1; - d2 = 8; - icon_state = "1-8" - }, -/obj/machinery/atmospherics/pipe/simple/hidden/supply{ - dir = 10 - }, -/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{ +/obj/effect/floor_decal/borderfloorblack{ dir = 4 }, -/turf/simulated/floor/reinforced, -/area/tether/surfacebase/shuttle_pad) -"JZ" = ( -/obj/machinery/hologram/holopad, -/turf/simulated/floor/reinforced, -/area/tether/surfacebase/shuttle_pad) -"Ka" = ( -/obj/structure/extinguisher_cabinet{ - dir = 8; - icon_state = "extinguisher_closed"; - pixel_x = 30 +/obj/effect/floor_decal/corner/grey/border{ + icon_state = "bordercolor"; + dir = 4 }, -/turf/simulated/floor/reinforced, -/area/tether/surfacebase/shuttle_pad) -"Kb" = ( -/obj/effect/floor_decal/borderfloor{ - dir = 8 +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 }, -/obj/effect/floor_decal/corner/lightgrey/border{ - dir = 8 - }, -/obj/effect/floor_decal/steeldecal/steel_decals7{ - dir = 6 - }, -/obj/effect/floor_decal/steeldecal/steel_decals7{ - dir = 5 +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 }, /turf/simulated/floor/tiled, -/area/hallway/lower/third_south) +/area/tether/surfacebase/shuttle_pad) "Kc" = ( -/obj/machinery/hologram/holopad, -/turf/simulated/floor/tiled, -/area/hallway/lower/third_south) -"Kd" = ( -/obj/structure/sign/warning/internals_required, -/obj/machinery/door/firedoor/glass, -/obj/structure/grille, -/obj/structure/window/reinforced/full, -/turf/simulated/floor/plating, -/area/tether/surfacebase/shuttle_pad) -"Ke" = ( -/obj/machinery/atmospherics/pipe/simple/hidden/supply, -/turf/simulated/floor/tiled/steel_grid, -/area/tether/surfacebase/shuttle_pad) -"Kf" = ( -/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, -/turf/simulated/floor/tiled/steel_grid, -/area/tether/surfacebase/shuttle_pad) -"Kg" = ( -/obj/structure/sign/warning/nosmoking_1, -/obj/machinery/door/firedoor/glass, -/obj/structure/grille, -/obj/structure/window/reinforced/full, -/turf/simulated/floor/plating, -/area/tether/surfacebase/shuttle_pad) -"Kh" = ( -/obj/machinery/atmospherics/pipe/simple/hidden/supply, -/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, -/turf/simulated/floor/reinforced, -/area/tether/surfacebase/shuttle_pad) -"Ki" = ( -/obj/machinery/camera/network/civilian{ +/obj/effect/floor_decal/borderfloorblack/corner{ + icon_state = "borderfloorcorner_black"; dir = 1 }, -/turf/simulated/floor/reinforced, -/area/tether/surfacebase/shuttle_pad) -"Kj" = ( -/obj/effect/floor_decal/borderfloor{ - dir = 10 - }, -/obj/effect/floor_decal/corner/lightgrey/border{ - dir = 10 - }, -/turf/simulated/floor/tiled, -/area/hallway/lower/third_south) -"Kk" = ( -/obj/machinery/camera/network/northern_star{ - dir = 1 - }, -/obj/effect/floor_decal/borderfloor, -/obj/effect/floor_decal/corner/lightgrey/border, -/obj/effect/floor_decal/steeldecal/steel_decals7{ - dir = 1 - }, -/obj/effect/floor_decal/steeldecal/steel_decals7{ +/obj/effect/floor_decal/industrial/danger/corner{ dir = 8 }, /turf/simulated/floor/tiled, -/area/hallway/lower/third_south) -"Kl" = ( -/obj/effect/floor_decal/borderfloor, -/obj/effect/floor_decal/corner/lightgrey/border, -/obj/effect/floor_decal/borderfloor/corner2{ - dir = 9 - }, -/obj/effect/floor_decal/corner/lightgrey/bordercorner2{ - dir = 9 - }, -/obj/effect/floor_decal/steeldecal/steel_decals7{ - dir = 1 - }, -/obj/effect/floor_decal/steeldecal/steel_decals7{ - dir = 8 - }, -/turf/simulated/floor/tiled, -/area/hallway/lower/third_south) +/area/tether/surfacebase/shuttle_pad) "Km" = ( -/obj/machinery/door/firedoor/glass, -/obj/machinery/door/airlock/glass_external/public, -/turf/simulated/floor/tiled/steel_grid, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/machinery/door/airlock/hatch, +/obj/machinery/door/firedoor, +/turf/simulated/floor/tiled/techfloor, /area/tether/surfacebase/shuttle_pad) -"Kn" = ( -/obj/machinery/atmospherics/unary/vent_pump/on{ - dir = 1 - }, -/turf/simulated/floor/tiled/steel_grid, -/area/tether/surfacebase/shuttle_pad) -"Ko" = ( -/obj/machinery/atmospherics/unary/vent_scrubber/on{ - dir = 1 - }, -/turf/simulated/floor/tiled/steel_grid, -/area/tether/surfacebase/shuttle_pad) -"Kp" = ( -/obj/machinery/atmospherics/pipe/manifold/hidden/supply{ - dir = 8 - }, +"Kt" = ( /obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 9 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ dir = 5 }, -/turf/simulated/floor/reinforced, -/area/tether/surfacebase/shuttle_pad) -"Kq" = ( -/obj/machinery/atmospherics/pipe/simple/hidden/supply{ - dir = 4 - }, -/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ - dir = 4 - }, -/turf/simulated/floor/reinforced, -/area/tether/surfacebase/shuttle_pad) -"Kr" = ( -/obj/machinery/atmospherics/pipe/simple/hidden/supply{ - dir = 10 - }, -/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ - dir = 10 - }, -/turf/simulated/floor/reinforced, -/area/tether/surfacebase/shuttle_pad) -"Ks" = ( -/obj/structure/grille, -/obj/structure/window/reinforced/full, -/obj/machinery/door/firedoor, -/obj/structure/window/reinforced, -/obj/structure/window/reinforced{ - dir = 8 - }, -/turf/simulated/floor/plating, -/area/hallway/lower/third_south) -"Kt" = ( -/obj/structure/grille, -/obj/structure/window/reinforced/full, -/obj/machinery/door/firedoor, -/obj/structure/window/reinforced, -/turf/simulated/floor/plating, -/area/tether/surfacebase/shuttle_pad) -"Ku" = ( -/obj/machinery/atmospherics/unary/vent_pump/on{ - dir = 1 - }, -/turf/simulated/floor/reinforced, +/turf/simulated/floor/tiled/techfloor, /area/tether/surfacebase/shuttle_pad) "Kv" = ( /turf/simulated/floor/tiled/techfloor, /area/tether/surfacebase/shuttle_pad) -"Kw" = ( -/obj/machinery/light{ - dir = 1 - }, -/turf/simulated/floor/tiled/techfloor, -/area/tether/surfacebase/shuttle_pad) -"Kx" = ( -/obj/structure/shuttle/engine/propulsion, -/turf/simulated/floor/tiled/techfloor, -/area/tether/surfacebase/shuttle_pad) -"Ky" = ( -/obj/machinery/atmospherics/pipe/simple/hidden/supply{ - dir = 5 - }, -/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ - dir = 5 - }, -/turf/simulated/floor/reinforced, -/area/tether/surfacebase/shuttle_pad) -"Kz" = ( -/obj/machinery/door/airlock/glass, -/obj/machinery/door/firedoor/glass, +"KN" = ( /obj/machinery/atmospherics/pipe/simple/hidden/supply{ dir = 4 }, -/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ - dir = 4 - }, -/turf/simulated/floor/tiled/techfloor, +/turf/simulated/floor/tiled/techmaint, /area/tether/surfacebase/shuttle_pad) -"KA" = ( -/obj/machinery/atmospherics/pipe/simple/hidden/supply{ - dir = 10 - }, -/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ - dir = 10 - }, -/turf/simulated/floor/tiled/techfloor, -/area/tether/surfacebase/shuttle_pad) -"KB" = ( -/obj/structure/table/steel, -/obj/item/weapon/storage/toolbox/mechanical, -/obj/machinery/atmospherics/unary/vent_pump/on, -/turf/simulated/floor/tiled/techfloor, -/area/tether/surfacebase/shuttle_pad) -"KC" = ( -/obj/machinery/alarm{ - dir = 4; - icon_state = "alarm0"; - pixel_x = -22; - pixel_y = 0 - }, -/turf/simulated/floor/reinforced, -/area/tether/surfacebase/shuttle_pad) -"KD" = ( -/obj/structure/extinguisher_cabinet{ - dir = 4; - icon_state = "extinguisher_closed"; - pixel_x = -30 - }, -/obj/machinery/atmospherics/pipe/simple/hidden/supply{ - dir = 5 - }, -/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ - dir = 5 - }, -/turf/simulated/floor/tiled/techfloor, -/area/tether/surfacebase/shuttle_pad) -"KE" = ( -/obj/machinery/atmospherics/pipe/simple/hidden/supply{ - dir = 4 - }, -/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ - dir = 4 - }, -/turf/simulated/floor/tiled/techfloor, -/area/tether/surfacebase/shuttle_pad) -"KF" = ( -/obj/structure/bed/chair, -/obj/machinery/atmospherics/pipe/simple/hidden/supply{ - dir = 4 - }, -/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ - dir = 4 - }, -/turf/simulated/floor/tiled/techfloor, -/area/tether/surfacebase/shuttle_pad) -"KG" = ( -/obj/structure/table/steel, -/obj/item/weapon/storage/toolbox/electrical, -/obj/machinery/atmospherics/pipe/simple/hidden/supply{ - dir = 9 - }, -/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ - dir = 10 - }, -/turf/simulated/floor/tiled/techfloor, -/area/tether/surfacebase/shuttle_pad) -"KH" = ( -/obj/structure/extinguisher_cabinet{ - dir = 4; - icon_state = "extinguisher_closed"; - pixel_x = -30 - }, -/turf/simulated/floor/reinforced, -/area/tether/surfacebase/shuttle_pad) -"KI" = ( -/obj/machinery/light, -/turf/simulated/floor/reinforced, -/area/tether/surfacebase/shuttle_pad) -"KJ" = ( -/obj/machinery/camera/network/engineering{ - dir = 1 - }, -/turf/simulated/floor/tiled/techfloor, -/area/tether/surfacebase/shuttle_pad) -"KK" = ( -/obj/structure/table/steel, -/turf/simulated/floor/tiled/techfloor, -/area/tether/surfacebase/shuttle_pad) -"KL" = ( -/obj/structure/table/steel, -/obj/machinery/atmospherics/unary/vent_scrubber/on{ - dir = 1 - }, -/turf/simulated/floor/tiled/techfloor, -/area/tether/surfacebase/shuttle_pad) -"KM" = ( -/obj/machinery/camera/network/northern_star, -/turf/simulated/floor/outdoors/grass/sif/virgo3b, -/area/tether/surfacebase/outside/outside3) "KO" = ( /obj/structure/table/marble, /obj/item/weapon/flame/lighter/zippo, @@ -21318,6 +19930,31 @@ }, /turf/simulated/floor/tiled/white, /area/crew_quarters/barrestroom) +"KV" = ( +/obj/machinery/light, +/obj/effect/floor_decal/borderfloor, +/obj/effect/floor_decal/corner/lightgrey/border, +/obj/effect/floor_decal/steeldecal/steel_decals7{ + dir = 1 + }, +/obj/effect/floor_decal/steeldecal/steel_decals7{ + dir = 8 + }, +/obj/structure/cable{ + d1 = 1; + d2 = 4; + icon_state = "1-4" + }, +/obj/structure/cable{ + d1 = 1; + d2 = 8; + icon_state = "1-8" + }, +/turf/simulated/floor/tiled, +/area/tether/surfacebase/atrium_three) +"KW" = ( +/turf/simulated/floor/tiled/monotile, +/area/tether/surfacebase/shuttle_pad) "KX" = ( /obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ dir = 4 @@ -21333,6 +19970,25 @@ /obj/structure/disposalpipe/segment, /turf/simulated/floor/wood, /area/crew_quarters/bar) +"Lc" = ( +/obj/machinery/firealarm{ + pixel_x = -30 + }, +/obj/machinery/light{ + icon_state = "tube1"; + dir = 8 + }, +/turf/simulated/floor/wood, +/area/crew_quarters/bar) +"Lg" = ( +/obj/effect/floor_decal/borderfloorblack{ + dir = 4 + }, +/obj/effect/floor_decal/industrial/danger{ + dir = 4 + }, +/turf/simulated/floor/tiled, +/area/tether/surfacebase/shuttle_pad) "Li" = ( /obj/structure/disposalpipe/segment{ dir = 4 @@ -21349,6 +20005,16 @@ }, /turf/simulated/floor/tiled, /area/tether/surfacebase/atrium_three) +"Ll" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 10 + }, +/turf/simulated/floor/tiled/techmaint, +/area/tether/surfacebase/shuttle_pad) +"Lm" = ( +/obj/effect/decal/cleanable/dirt, +/turf/simulated/floor/wood, +/area/vacant/vacant_library) "Lr" = ( /obj/structure/table/woodentable, /obj/random/maintenance/clean, @@ -21367,6 +20033,72 @@ }, /turf/simulated/floor/tiled, /area/tether/surfacebase/public_garden_three) +"Lt" = ( +/turf/simulated/floor/tiled/monofloor, +/area/tether/surfacebase/shuttle_pad) +"Lu" = ( +/obj/effect/decal/cleanable/dirt, +/obj/structure/cable{ + d1 = 4; + d2 = 8; + icon_state = "4-8"; + pixel_x = 0 + }, +/turf/simulated/floor/wood, +/area/vacant/vacant_library) +"LA" = ( +/obj/structure/cable/green{ + d1 = 1; + d2 = 4; + icon_state = "1-4" + }, +/turf/simulated/floor/tiled/monotile, +/area/tether/surfacebase/shuttle_pad) +"LB" = ( +/obj/effect/floor_decal/borderfloor, +/obj/effect/floor_decal/corner/lightgrey/border, +/obj/effect/floor_decal/steeldecal/steel_decals7{ + dir = 1 + }, +/obj/effect/floor_decal/steeldecal/steel_decals7{ + dir = 8 + }, +/obj/structure/cable{ + d1 = 4; + d2 = 8; + icon_state = "4-8"; + pixel_x = 0 + }, +/turf/simulated/floor/tiled, +/area/tether/surfacebase/atrium_three) +"LD" = ( +/obj/machinery/door/airlock/glass_external{ + frequency = 1380; + icon_state = "door_locked"; + id_tag = "tether_shuttle_hatch"; + locked = 1; + name = "Shuttle Hatch" + }, +/turf/simulated/shuttle/floor/black, +/area/shuttle/tether/surface) +"LE" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 10 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/turf/simulated/floor/tiled/techmaint, +/area/tether/surfacebase/shuttle_pad) +"LM" = ( +/obj/effect/decal/cleanable/dirt, +/obj/structure/cable{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/turf/simulated/floor/plating, +/area/vacant/vacant_library) "LP" = ( /obj/structure/extinguisher_cabinet{ dir = 8; @@ -21385,6 +20117,12 @@ }, /turf/simulated/floor/wood, /area/tether/surfacebase/bar_backroom) +"LV" = ( +/obj/structure/table/steel, +/obj/random/tech_supply, +/obj/random/tool, +/turf/simulated/floor/tiled/techmaint, +/area/tether/surfacebase/shuttle_pad) "LX" = ( /obj/structure/disposalpipe/segment{ dir = 2; @@ -21429,10 +20167,32 @@ }, /turf/simulated/floor/tiled, /area/tether/surfacebase/public_garden_three) +"Mq" = ( +/obj/machinery/computer/atmos_alert{ + icon_state = "computer"; + dir = 8 + }, +/turf/simulated/floor/tiled, +/area/tether/surfacebase/shuttle_pad) +"Ms" = ( +/obj/effect/floor_decal/borderfloorblack/corner{ + icon_state = "borderfloorcorner_black"; + dir = 4 + }, +/obj/effect/floor_decal/industrial/danger/corner{ + dir = 4 + }, +/turf/simulated/floor/tiled, +/area/tether/surfacebase/shuttle_pad) "Mu" = ( /obj/machinery/portable_atmospherics/hydroponics/soil, /turf/simulated/floor/grass, /area/tether/surfacebase/public_garden_three) +"My" = ( +/obj/structure/bookcase, +/obj/item/weapon/book/manual/rust_engine, +/turf/simulated/floor/wood, +/area/vacant/vacant_library) "MB" = ( /obj/machinery/atmospherics/unary/vent_pump/on{ dir = 4 @@ -21450,6 +20210,45 @@ }, /turf/simulated/floor/wood, /area/tether/surfacebase/bar_backroom) +"MI" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 9 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 9 + }, +/obj/structure/cable/green{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/turf/simulated/floor/tiled, +/area/tether/surfacebase/shuttle_pad) +"MJ" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 6 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 6 + }, +/turf/simulated/floor/tiled, +/area/tether/surfacebase/shuttle_pad) +"MK" = ( +/obj/structure/table/woodentable, +/obj/item/weapon/book/codex/lore/news, +/obj/effect/decal/cleanable/dirt, +/obj/machinery/light_construct{ + icon_state = "tube-construct-stage1"; + dir = 4 + }, +/turf/simulated/floor/wood, +/area/vacant/vacant_library) +"ML" = ( +/obj/structure/table/rack, +/obj/random/maintenance/clean, +/obj/random/maintenance/engineering, +/turf/simulated/floor/tiled/techfloor, +/area/tether/surfacebase/shuttle_pad) "MO" = ( /obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ dir = 4 @@ -21462,12 +20261,35 @@ /obj/effect/floor_decal/corner/lime/border, /turf/simulated/floor/tiled, /area/tether/surfacebase/public_garden_three) +"MR" = ( +/turf/simulated/floor/tiled/monofloor{ + dir = 1 + }, +/area/tether/surfacebase/shuttle_pad) +"MS" = ( +/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{ + icon_state = "map-scrubbers"; + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/structure/cable/green{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/turf/simulated/floor/tiled, +/area/tether/surfacebase/shuttle_pad) "MW" = ( /obj/structure/closet/secure_closet/bar{ req_access = list(25) }, /turf/simulated/floor/wood, /area/tether/surfacebase/bar_backroom) +"MY" = ( +/obj/effect/floor_decal/borderfloorblack/corner, +/obj/effect/floor_decal/industrial/danger/corner, +/turf/simulated/floor/tiled, +/area/tether/surfacebase/shuttle_pad) "Nb" = ( /obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ dir = 4 @@ -21479,6 +20301,12 @@ /obj/effect/floor_decal/corner/lime/bordercorner, /turf/simulated/floor/tiled, /area/tether/surfacebase/public_garden_three) +"Nd" = ( +/obj/machinery/atmospherics/unary/vent_pump/on{ + dir = 4 + }, +/turf/simulated/floor/tiled, +/area/tether/surfacebase/shuttle_pad) "Ng" = ( /obj/structure/bed/chair/wood{ dir = 1 @@ -21494,13 +20322,63 @@ }, /turf/simulated/floor/tiled, /area/tether/surfacebase/atrium_three) +"No" = ( +/obj/structure/disposalpipe/segment, +/obj/effect/floor_decal/borderfloor{ + dir = 4 + }, +/obj/effect/floor_decal/corner/lightgrey/border{ + dir = 4 + }, +/obj/effect/floor_decal/steeldecal/steel_decals7{ + dir = 10 + }, +/obj/effect/floor_decal/steeldecal/steel_decals7{ + dir = 9 + }, +/obj/structure/cable{ + d1 = 4; + d2 = 8; + icon_state = "4-8"; + pixel_x = 0 + }, +/turf/simulated/floor/tiled, +/area/hallway/lower/third_south) +"Nr" = ( +/obj/machinery/atmospherics/unary/vent_pump/on{ + dir = 8 + }, +/obj/effect/floor_decal/steeldecal/steel_decals5{ + dir = 1 + }, +/obj/effect/floor_decal/steeldecal/steel_decals5, +/obj/machinery/camera/network/tether{ + dir = 9 + }, +/turf/simulated/floor/tiled, +/area/tether/surfacebase/shuttle_pad) +"Ns" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/turf/simulated/floor/tiled/monotile, +/area/tether/surfacebase/shuttle_pad) +"Nw" = ( +/obj/structure/cable/green{ + icon_state = "0-2" + }, +/obj/machinery/power/apc{ + dir = 1; + name = "north bump"; + pixel_x = 0; + pixel_y = 28 + }, +/turf/simulated/floor/tiled/monotile, +/area/tether/surfacebase/shuttle_pad) "NA" = ( /obj/machinery/alarm{ - breach_detection = 0; dir = 8; pixel_x = 25; - pixel_y = 0; - report_danger_level = 0 + pixel_y = 0 }, /obj/effect/floor_decal/borderfloor{ dir = 6 @@ -21510,6 +20388,19 @@ }, /turf/simulated/floor/tiled, /area/tether/surfacebase/public_garden_three) +"NB" = ( +/obj/structure/bed/chair{ + dir = 8 + }, +/turf/simulated/floor/tiled, +/area/tether/surfacebase/shuttle_pad) +"NF" = ( +/obj/item/clothing/under/color/grey, +/obj/item/clothing/mask/gas/wwii, +/obj/item/weapon/storage/belt/utility/full, +/obj/effect/decal/cleanable/dirt, +/turf/simulated/floor/plating, +/area/tether/surfacebase/shuttle_pad) "NG" = ( /obj/structure/bed/chair/wood, /obj/structure/window/basic{ @@ -21526,6 +20417,18 @@ }, /turf/simulated/floor/tiled, /area/tether/surfacebase/atrium_three) +"NJ" = ( +/obj/structure/table/standard, +/obj/random/maintenance/clean, +/obj/random/maintenance/medical, +/obj/item/device/t_scanner, +/obj/machinery/light/small{ + dir = 8; + pixel_x = 0 + }, +/obj/effect/decal/cleanable/dirt, +/turf/simulated/floor/plating, +/area/maintenance/lower/atrium) "NL" = ( /obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ dir = 6 @@ -21564,6 +20467,17 @@ }, /turf/simulated/floor/wood, /area/tether/surfacebase/bar_backroom) +"NP" = ( +/obj/effect/floor_decal/borderfloorblack/corner{ + icon_state = "borderfloorcorner_black"; + dir = 8 + }, +/obj/effect/floor_decal/industrial/danger/corner{ + icon_state = "dangercorner"; + dir = 1 + }, +/turf/simulated/floor/tiled, +/area/tether/surfacebase/shuttle_pad) "NR" = ( /obj/machinery/light/small{ dir = 4; @@ -21572,14 +20486,36 @@ /obj/machinery/recharge_station, /turf/simulated/floor/tiled/white, /area/crew_quarters/barrestroom) -"NS" = ( -/obj/item/clothing/gloves/rainbow, -/obj/item/clothing/head/soft/rainbow, -/obj/item/clothing/shoes/rainbow, -/obj/item/clothing/suit/storage/seromi/cloak/standard/rainbow, -/obj/item/clothing/under/color/rainbow, -/turf/simulated/floor/plating, -/area/crew_quarters/bar) +"NW" = ( +/obj/structure/shuttle/engine/propulsion{ + anchored = 0; + dir = 8; + icon_state = "propulsion" + }, +/turf/simulated/floor/tiled/techmaint, +/area/tether/surfacebase/shuttle_pad) +"NX" = ( +/obj/effect/floor_decal/borderfloorblack{ + dir = 4 + }, +/obj/effect/floor_decal/industrial/danger{ + dir = 4 + }, +/obj/machinery/embedded_controller/radio/simple_docking_controller{ + frequency = 1380; + id_tag = "tether_pad_airlock"; + pixel_x = 0; + pixel_y = 28; + tag_door = "tether_pad_hatch" + }, +/obj/machinery/airlock_sensor{ + frequency = 1380; + id_tag = "tether_pad_sensor"; + pixel_x = -11; + pixel_y = 28 + }, +/turf/simulated/floor/tiled, +/area/tether/surfacebase/shuttle_pad) "Oa" = ( /obj/machinery/atmospherics/pipe/simple/hidden/supply{ dir = 5 @@ -21599,6 +20535,14 @@ /obj/structure/window/reinforced, /turf/simulated/floor/tiled, /area/tether/surfacebase/public_garden_three) +"Od" = ( +/obj/effect/floor_decal/borderfloorblack, +/obj/effect/floor_decal/industrial/danger, +/obj/machinery/light{ + dir = 1 + }, +/turf/simulated/floor/tiled, +/area/tether/surfacebase/shuttle_pad) "Of" = ( /obj/effect/floor_decal/borderfloor{ dir = 4 @@ -21620,6 +20564,18 @@ "Oi" = ( /turf/simulated/floor/tiled/white, /area/crew_quarters/barrestroom) +"Om" = ( +/obj/effect/floor_decal/steeldecal/steel_decals_central5{ + icon_state = "steel_decals_central5"; + dir = 8 + }, +/obj/machinery/light{ + dir = 4; + icon_state = "tube1"; + pixel_x = 0 + }, +/turf/simulated/floor/tiled/monotile, +/area/tether/surfacebase/shuttle_pad) "Op" = ( /obj/structure/grille, /obj/structure/window/reinforced/full, @@ -21630,6 +20586,65 @@ /obj/structure/window/reinforced, /turf/simulated/floor/plating, /area/tether/surfacebase/public_garden_three) +"Ou" = ( +/obj/effect/floor_decal/borderfloorblack{ + dir = 1 + }, +/obj/effect/floor_decal/industrial/danger{ + dir = 1 + }, +/obj/machinery/alarm{ + dir = 1; + pixel_y = -22 + }, +/obj/machinery/camera/network/tether{ + dir = 1 + }, +/turf/simulated/floor/tiled, +/area/tether/surfacebase/shuttle_pad) +"Ow" = ( +/obj/machinery/atmospherics/unary/vent_scrubber/on{ + dir = 1 + }, +/obj/structure/table/steel, +/obj/random/maintenance/engineering, +/obj/random/maintenance/engineering, +/obj/random/tech_supply, +/obj/item/stack/cable_coil/random, +/turf/simulated/floor/tiled/techmaint, +/area/tether/surfacebase/shuttle_pad) +"Ox" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/turf/simulated/floor/tiled/monotile, +/area/tether/surfacebase/shuttle_pad) +"OB" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/obj/machinery/atmospherics/pipe/manifold/hidden/supply{ + dir = 4 + }, +/obj/structure/cable/green{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/obj/machinery/alarm{ + dir = 8; + icon_state = "alarm0"; + pixel_x = 24 + }, +/turf/simulated/floor/tiled, +/area/tether/surfacebase/shuttle_pad) +"OC" = ( +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/turf/simulated/floor/wood, +/area/crew_quarters/bar) "OI" = ( /obj/structure/table/woodentable, /obj/item/weapon/storage/box/beanbags, @@ -21643,6 +20658,13 @@ }, /turf/simulated/floor/wood, /area/tether/surfacebase/bar_backroom) +"OL" = ( +/obj/machinery/computer/shuttle_control/tether_backup{ + icon_state = "computer"; + dir = 8 + }, +/turf/simulated/floor/tiled, +/area/tether/surfacebase/shuttle_pad) "OM" = ( /obj/machinery/atmospherics/pipe/simple/hidden/supply, /obj/machinery/power/apc{ @@ -21654,6 +20676,31 @@ /obj/structure/cable/green, /turf/simulated/floor/tiled/white, /area/crew_quarters/barrestroom) +"OP" = ( +/obj/structure/frame/computer, +/obj/item/weapon/material/twohanded/baseballbat{ + name = "Swatta" + }, +/turf/simulated/floor/tiled/techfloor, +/area/tether/surfacebase/shuttle_pad) +"OR" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/turf/simulated/floor/tiled, +/area/tether/surfacebase/shuttle_pad) +"OU" = ( +/obj/structure/table/rack{ + dir = 1 + }, +/obj/item/clothing/suit/fire/firefighter, +/obj/item/weapon/tank/oxygen, +/obj/item/clothing/mask/gas, +/obj/item/weapon/extinguisher, +/obj/item/clothing/head/hardhat/red, +/obj/item/clothing/glasses/meson, +/obj/item/weapon/storage/briefcase/inflatable, +/turf/simulated/floor/plating, +/area/maintenance/lower/atrium) "OV" = ( /obj/structure/table/woodentable, /obj/machinery/firealarm{ @@ -21662,6 +20709,47 @@ }, /turf/simulated/floor/wood, /area/tether/surfacebase/bar_backroom) +"Pe" = ( +/obj/structure/table, +/turf/simulated/floor/carpet, +/area/vacant/vacant_library) +"Pm" = ( +/obj/machinery/alarm{ + frequency = 1441; + pixel_y = 22 + }, +/obj/machinery/atmospherics/unary/vent_scrubber/on{ + dir = 4 + }, +/turf/simulated/floor/tiled/techfloor, +/area/tether/surfacebase/shuttle_pad) +"Pn" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/structure/cable{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/turf/simulated/floor/tiled, +/area/hallway/lower/third_south) +"Pq" = ( +/obj/effect/floor_decal/borderfloorblack{ + dir = 8 + }, +/obj/effect/floor_decal/industrial/danger{ + icon_state = "danger"; + dir = 8 + }, +/turf/simulated/floor/tiled, +/area/tether/surfacebase/shuttle_pad) +"Pr" = ( +/obj/effect/floor_decal/industrial/warning{ + icon_state = "warning"; + dir = 8 + }, +/turf/simulated/floor/tiled, +/area/hallway/lower/third_south) "Ps" = ( /obj/machinery/light/small{ dir = 1 @@ -21671,6 +20759,14 @@ }, /turf/simulated/floor/tiled/white, /area/crew_quarters/barrestroom) +"Pv" = ( +/obj/structure/cable/green{ + d1 = 1; + d2 = 8; + icon_state = "1-8" + }, +/turf/simulated/floor/tiled/monotile, +/area/tether/surfacebase/shuttle_pad) "PA" = ( /obj/structure/table/woodentable, /obj/machinery/atmospherics/unary/vent_scrubber/on{ @@ -21679,6 +20775,15 @@ /obj/structure/disposalpipe/segment, /turf/simulated/floor/wood, /area/crew_quarters/bar) +"PC" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/turf/simulated/floor/tiled/techmaint, +/area/tether/surfacebase/shuttle_pad) "PD" = ( /obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ dir = 10 @@ -21714,6 +20819,25 @@ }, /turf/simulated/floor/tiled, /area/tether/surfacebase/public_garden_three) +"PI" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/obj/machinery/door/firedoor, +/obj/machinery/door/airlock/maintenance/common{ + name = "Engine Repair Bay" + }, +/turf/simulated/floor/tiled/techmaint, +/area/tether/surfacebase/shuttle_pad) +"PJ" = ( +/obj/machinery/camera/network/northern_star{ + dir = 9 + }, +/turf/simulated/floor/tiled, +/area/hallway/lower/third_south) "PL" = ( /obj/machinery/door/airlock{ name = "Unit 2" @@ -21733,6 +20857,20 @@ }, /turf/simulated/floor/wood, /area/tether/surfacebase/bar_backroom) +"PT" = ( +/obj/machinery/door/airlock/multi_tile/glass, +/obj/effect/floor_decal/industrial/warning/corner{ + icon_state = "warningcorner"; + dir = 8 + }, +/obj/machinery/door/firedoor, +/turf/simulated/floor/tiled, +/area/hallway/lower/third_south) +"Qb" = ( +/obj/machinery/door/firedoor, +/obj/machinery/door/airlock/glass_external/public, +/turf/simulated/floor/tiled, +/area/tether/surfacebase/shuttle_pad) "Qd" = ( /obj/structure/table/woodentable, /obj/item/weapon/material/minihoe, @@ -21780,6 +20918,37 @@ /obj/structure/window/reinforced, /turf/simulated/floor/tiled, /area/tether/surfacebase/public_garden_three) +"Qk" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/obj/structure/cable/green{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/obj/machinery/door/firedoor/glass/hidden/steel{ + dir = 8 + }, +/turf/simulated/floor/tiled, +/area/hallway/lower/third_south) +"Ql" = ( +/obj/machinery/camera/network/northern_star{ + dir = 1 + }, +/obj/effect/floor_decal/borderfloor, +/obj/effect/floor_decal/corner/lightgrey/border, +/obj/effect/floor_decal/steeldecal/steel_decals7{ + dir = 1 + }, +/obj/effect/floor_decal/steeldecal/steel_decals7{ + dir = 8 + }, +/turf/simulated/floor/tiled, +/area/tether/surfacebase/atrium_three) "Qo" = ( /obj/structure/table/bench/wooden, /obj/structure/disposalpipe/segment, @@ -21788,9 +20957,34 @@ "Qr" = ( /turf/simulated/floor/lino, /area/crew_quarters/bar) +"Qs" = ( +/obj/effect/decal/cleanable/dirt, +/turf/simulated/floor/plating, +/turf/simulated/floor/wood/broken, +/area/vacant/vacant_library) "Qx" = ( /turf/simulated/wall, /area/tether/surfacebase/public_garden_three) +"Qz" = ( +/obj/machinery/alarm{ + dir = 1; + pixel_y = -22 + }, +/obj/structure/table/steel, +/obj/random/maintenance/engineering, +/obj/item/clothing/glasses/welding, +/obj/item/weapon/weldingtool, +/turf/simulated/floor/tiled/techmaint, +/area/tether/surfacebase/shuttle_pad) +"QA" = ( +/obj/item/stack/material/plastic, +/obj/structure/table/rack, +/obj/item/stack/material/steel{ + amount = 3 + }, +/obj/random/maintenance/engineering, +/turf/simulated/floor/tiled/techfloor, +/area/tether/surfacebase/shuttle_pad) "QB" = ( /obj/structure/bed/chair/comfy{ dir = 8 @@ -21804,18 +20998,59 @@ /obj/machinery/door/firedoor, /turf/simulated/floor/plating, /area/tether/surfacebase/public_garden_three) -"QN" = ( -/obj/effect/floor_decal/borderfloor, -/obj/effect/floor_decal/corner/lightgrey/border, -/obj/effect/floor_decal/steeldecal/steel_decals7{ - dir = 1 +"QD" = ( +/obj/effect/floor_decal/borderfloorblack{ + dir = 4 }, -/obj/effect/floor_decal/steeldecal/steel_decals7{ +/obj/effect/floor_decal/industrial/danger{ + dir = 4 + }, +/obj/machinery/light{ + dir = 8 + }, +/turf/simulated/floor/tiled, +/area/tether/surfacebase/shuttle_pad) +"QE" = ( +/obj/effect/floor_decal/steeldecal/steel_decals6{ + dir = 1 + }, +/obj/effect/floor_decal/industrial/warning{ + icon_state = "warning"; dir = 8 }, -/obj/machinery/light, /turf/simulated/floor/tiled, /area/hallway/lower/third_south) +"QI" = ( +/obj/machinery/atmospherics/unary/vent_pump/on{ + dir = 8 + }, +/obj/effect/floor_decal/steeldecal/steel_decals5{ + dir = 1 + }, +/obj/effect/floor_decal/steeldecal/steel_decals5, +/obj/structure/extinguisher_cabinet{ + dir = 8; + icon_state = "extinguisher_closed"; + pixel_x = 30 + }, +/turf/simulated/floor/tiled, +/area/tether/surfacebase/shuttle_pad) +"QJ" = ( +/obj/machinery/atmospherics/unary/vent_pump/on{ + dir = 8 + }, +/turf/simulated/floor/tiled/techfloor, +/area/tether/surfacebase/shuttle_pad) +"QL" = ( +/obj/machinery/atmospherics/unary/vent_scrubber/on{ + dir = 4 + }, +/obj/effect/floor_decal/steeldecal/steel_decals5{ + dir = 1 + }, +/obj/effect/floor_decal/steeldecal/steel_decals5, +/turf/simulated/floor/tiled, +/area/tether/surfacebase/shuttle_pad) "QW" = ( /obj/effect/floor_decal/borderfloor{ dir = 10 @@ -21825,6 +21060,13 @@ }, /turf/simulated/floor/tiled, /area/tether/surfacebase/public_garden_three) +"QX" = ( +/obj/structure/table/woodentable, +/obj/item/stack/tile/carpet, +/obj/item/weapon/book/codex/lore/robutt, +/obj/effect/decal/cleanable/dirt, +/turf/simulated/floor/plating, +/area/vacant/vacant_library) "Rb" = ( /obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ dir = 9 @@ -21833,6 +21075,13 @@ /obj/effect/floor_decal/corner/lime/border, /turf/simulated/floor/tiled, /area/tether/surfacebase/public_garden_three) +"Rf" = ( +/obj/machinery/alarm{ + frequency = 1441; + pixel_y = 22 + }, +/turf/simulated/floor/tiled, +/area/tether/surfacebase/shuttle_pad) "Rh" = ( /obj/structure/table/bench/wooden, /turf/simulated/floor/tiled, @@ -21870,6 +21119,10 @@ "Rw" = ( /turf/simulated/open, /area/tether/surfacebase/public_garden_three) +"Rz" = ( +/obj/structure/bookcase, +/turf/simulated/floor/plating, +/area/vacant/vacant_library) "RB" = ( /turf/simulated/wall, /area/tether/surfacebase/bar_backroom) @@ -21911,6 +21164,21 @@ }, /turf/simulated/floor/tiled/white, /area/crew_quarters/barrestroom) +"RJ" = ( +/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{ + dir = 1 + }, +/obj/machinery/atmospherics/pipe/manifold/hidden/supply, +/obj/structure/cable/green{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/turf/simulated/floor/tiled, +/area/hallway/lower/third_south) +"RO" = ( +/turf/simulated/floor/tiled/techmaint, +/area/tether/surfacebase/shuttle_pad) "RQ" = ( /obj/machinery/atmospherics/pipe/simple/hidden/supply{ dir = 9; @@ -21938,6 +21206,29 @@ }, /turf/simulated/floor/tiled, /area/tether/surfacebase/public_garden_three) +"RU" = ( +/obj/machinery/door/firedoor, +/obj/structure/grille, +/obj/structure/window/reinforced/full, +/obj/structure/window/reinforced, +/turf/simulated/floor/plating, +/area/tether/surfacebase/shuttle_pad) +"RV" = ( +/obj/machinery/atmospherics/unary/vent_scrubber/on{ + dir = 8 + }, +/obj/structure/cable/green{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/turf/simulated/floor/tiled, +/area/hallway/lower/third_south) +"Sa" = ( +/obj/structure/bookcase, +/obj/effect/decal/cleanable/cobweb, +/turf/simulated/floor/plating, +/area/vacant/vacant_library) "Sf" = ( /obj/structure/table/woodentable, /obj/structure/window/basic{ @@ -21968,6 +21259,12 @@ /obj/machinery/camera/network/civilian, /turf/simulated/floor/tiled, /area/tether/surfacebase/public_garden_three) +"Sh" = ( +/obj/effect/floor_decal/steeldecal/steel_decals6{ + dir = 8 + }, +/turf/simulated/floor/tiled, +/area/hallway/lower/third_south) "Sp" = ( /obj/structure/table/marble, /obj/machinery/door/blast/shutters{ @@ -21983,6 +21280,12 @@ }, /turf/simulated/floor/lino, /area/crew_quarters/bar) +"Sz" = ( +/obj/machinery/door/firedoor, +/obj/structure/grille, +/obj/structure/window/reinforced/full, +/turf/simulated/floor/plating, +/area/hallway/lower/third_south) "SJ" = ( /obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ dir = 6 @@ -22003,6 +21306,19 @@ }, /turf/simulated/floor/tiled, /area/tether/surfacebase/public_garden_three) +"SP" = ( +/obj/machinery/light/small, +/turf/simulated/floor/tiled/techmaint, +/area/tether/surfacebase/shuttle_pad) +"SQ" = ( +/obj/machinery/portable_atmospherics/powered/pump/filled, +/turf/simulated/floor/plating, +/area/maintenance/lower/atrium) +"Te" = ( +/obj/structure/railing, +/obj/structure/grille, +/turf/simulated/floor/tiled/techmaint, +/area/hallway/lower/third_south) "Ti" = ( /obj/structure/cable/green{ d1 = 4; @@ -22011,6 +21327,18 @@ }, /turf/simulated/floor/wood, /area/crew_quarters/bar) +"Tn" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, +/obj/structure/cable{ + icon_state = "1-2" + }, +/turf/simulated/floor/tiled, +/area/tether/surfacebase/atrium_three) "To" = ( /obj/machinery/door/airlock{ name = "Unit 1" @@ -22051,12 +21379,30 @@ "Ty" = ( /turf/simulated/wall, /area/crew_quarters/barrestroom) +"TE" = ( +/obj/structure/bed/chair/comfy/beige{ + icon_state = "comfychair_preview"; + dir = 1 + }, +/obj/effect/decal/cleanable/dirt, +/turf/simulated/floor/carpet, +/area/vacant/vacant_library) "TG" = ( /obj/machinery/atmospherics/pipe/simple/hidden/supply{ dir = 4 }, /turf/simulated/floor/tiled/white, /area/crew_quarters/barrestroom) +"TJ" = ( +/obj/structure/bookcase, +/obj/item/weapon/book/manual/security_space_law, +/obj/effect/decal/cleanable/cobweb{ + icon_state = "cobweb2" + }, +/obj/effect/decal/cleanable/cobweb, +/obj/item/weapon/book/manual/hydroponics_pod_people, +/turf/simulated/floor/wood, +/area/vacant/vacant_library) "TL" = ( /obj/effect/floor_decal/borderfloor{ dir = 1 @@ -22094,6 +21440,20 @@ }, /turf/simulated/floor/plating, /area/tether/surfacebase/public_garden_three) +"TR" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/obj/structure/cable/green{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/turf/simulated/floor/tiled, +/area/hallway/lower/third_south) "TT" = ( /obj/structure/table/woodentable, /obj/machinery/alarm{ @@ -22102,6 +21462,20 @@ }, /turf/simulated/floor/wood, /area/crew_quarters/bar) +"TY" = ( +/obj/structure/bookcase, +/obj/effect/decal/cleanable/cobweb, +/turf/simulated/floor/wood, +/area/vacant/vacant_library) +"Uj" = ( +/turf/simulated/floor/tiled, +/area/tether/surfacebase/shuttle_pad) +"Ut" = ( +/obj/effect/floor_decal/borderfloorblack, +/obj/effect/floor_decal/industrial/danger, +/obj/machinery/camera/network/tether, +/turf/simulated/floor/tiled, +/area/tether/surfacebase/shuttle_pad) "Uu" = ( /obj/machinery/atmospherics/unary/vent_pump/on, /obj/effect/floor_decal/borderfloor{ @@ -22124,6 +21498,19 @@ }, /turf/simulated/floor/plating, /area/tether/surfacebase/public_garden_three) +"UD" = ( +/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{ + dir = 1 + }, +/obj/machinery/atmospherics/pipe/manifold/hidden/supply{ + dir = 1 + }, +/obj/structure/disposalpipe/segment{ + dir = 4; + icon_state = "pipe-c" + }, +/turf/simulated/floor/tiled, +/area/tether/surfacebase/atrium_three) "UH" = ( /obj/machinery/power/apc{ dir = 1; @@ -22147,6 +21534,57 @@ /obj/structure/table/bench/wooden, /turf/simulated/floor/grass, /area/tether/surfacebase/public_garden_three) +"UM" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/structure/cable{ + icon_state = "2-4" + }, +/turf/simulated/floor/tiled, +/area/hallway/lower/third_south) +"UW" = ( +/obj/machinery/power/apc{ + cell_type = /obj/item/weapon/cell/apc; + dir = 8; + name = "west bump"; + pixel_x = -28 + }, +/obj/structure/cable{ + icon_state = "0-4" + }, +/obj/structure/table/standard, +/obj/item/weapon/storage/box/lights/mixed, +/obj/item/weapon/storage/box/lights/mixed, +/obj/effect/decal/cleanable/dirt, +/turf/simulated/floor/plating, +/area/maintenance/lower/atrium) +"UZ" = ( +/obj/structure/disposalpipe/segment, +/obj/structure/cable{ + d1 = 1; + d2 = 2; + icon_state = "1-2"; + pixel_y = 0 + }, +/obj/effect/decal/cleanable/dirt, +/turf/simulated/floor/plating, +/area/maintenance/lower/atrium) +"Va" = ( +/obj/item/weapon/tank/emergency/oxygen/double, +/obj/item/clothing/gloves/fyellow, +/obj/item/weapon/book{ + author = "Urist McHopefulsoul"; + desc = "It contains fourty blank pages followed by the entire screenplay of a movie called 'Requiem for a Dream'"; + name = "A Comprehensive Guide to Assisting" + }, +/obj/effect/decal/cleanable/dirt, +/turf/simulated/floor/plating, +/area/tether/surfacebase/shuttle_pad) +"Vc" = ( +/obj/structure/bookcase, +/obj/effect/decal/cleanable/dirt, +/turf/simulated/floor/wood, +/area/vacant/vacant_library) "Ve" = ( /obj/effect/floor_decal/borderfloor{ dir = 5 @@ -22186,6 +21624,32 @@ }, /turf/simulated/floor/tiled, /area/tether/surfacebase/public_garden_three) +"Vu" = ( +/obj/effect/floor_decal/borderfloorblack{ + dir = 1 + }, +/obj/effect/floor_decal/industrial/danger{ + dir = 1 + }, +/turf/simulated/floor/tiled, +/area/tether/surfacebase/shuttle_pad) +"VA" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/machinery/door/firedoor, +/obj/structure/cable/green{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/obj/machinery/door/airlock/glass_external/public, +/turf/simulated/floor/tiled, +/area/tether/surfacebase/shuttle_pad) +"VB" = ( +/obj/structure/shuttle/engine/propulsion, +/turf/simulated/floor/reinforced, +/turf/simulated/shuttle/plating/carry, +/area/shuttle/tether/surface) "VF" = ( /obj/machinery/light{ dir = 1 @@ -22205,6 +21669,13 @@ /obj/effect/floor_decal/corner/lime/border, /turf/simulated/floor/tiled, /area/tether/surfacebase/public_garden_three) +"VM" = ( +/obj/effect/decal/cleanable/dirt, +/obj/structure/cable{ + icon_state = "2-8" + }, +/turf/simulated/floor/plating, +/area/vacant/vacant_library) "VN" = ( /obj/machinery/firealarm{ dir = 8; @@ -22220,13 +21691,68 @@ }, /turf/simulated/floor/wood, /area/tether/surfacebase/bar_backroom) +"VV" = ( +/obj/structure/bookcase, +/obj/item/weapon/book/manual/nuclear, +/turf/simulated/floor/wood, +/area/vacant/vacant_library) "VW" = ( /turf/simulated/floor/wood, /area/tether/surfacebase/bar_backroom) +"VX" = ( +/obj/structure/bookcase, +/obj/item/weapon/book/manual/engineering_hacking, +/obj/effect/decal/cleanable/cobweb, +/turf/simulated/floor/wood, +/area/vacant/vacant_library) +"Wa" = ( +/obj/structure/table/woodentable, +/obj/random/junk, +/obj/structure/cable{ + d1 = 4; + d2 = 8; + icon_state = "4-8"; + pixel_x = 0 + }, +/turf/simulated/floor/plating, +/area/vacant/vacant_library) +"Wc" = ( +/obj/random/junk, +/obj/structure/cable{ + icon_state = "2-8" + }, +/turf/simulated/floor/plating, +/area/vacant/vacant_library) +"Wh" = ( +/obj/structure/bed/chair/shuttle{ + dir = 1 + }, +/obj/machinery/light{ + dir = 8; + icon_state = "tube1"; + pixel_y = 0 + }, +/turf/simulated/shuttle/floor/black, +/area/shuttle/tether/surface) "Ws" = ( /obj/structure/table/bench/wooden, /turf/simulated/floor/grass, /area/tether/surfacebase/public_garden_three) +"Wz" = ( +/obj/machinery/atmospherics/unary/vent_scrubber/on{ + dir = 4 + }, +/obj/effect/floor_decal/steeldecal/steel_decals5{ + dir = 1 + }, +/obj/effect/floor_decal/steeldecal/steel_decals5, +/obj/structure/extinguisher_cabinet{ + dir = 4; + icon_state = "extinguisher_closed"; + pixel_x = -30 + }, +/turf/simulated/floor/tiled, +/area/tether/surfacebase/shuttle_pad) "WA" = ( /obj/machinery/atmospherics/unary/vent_scrubber/on{ dir = 1 @@ -22239,33 +21765,6 @@ }, /turf/simulated/floor/tiled, /area/tether/surfacebase/public_garden_three) -"WE" = ( -/obj/structure/cable/green{ - d1 = 4; - d2 = 8; - icon_state = "4-8" - }, -/obj/machinery/atmospherics/pipe/simple/hidden/supply{ - dir = 4 - }, -/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ - dir = 4 - }, -/obj/effect/floor_decal/borderfloor{ - dir = 1 - }, -/obj/effect/floor_decal/corner/lightgrey/border{ - dir = 1 - }, -/obj/effect/floor_decal/steeldecal/steel_decals7, -/obj/effect/floor_decal/steeldecal/steel_decals7{ - dir = 4 - }, -/obj/machinery/light{ - dir = 1 - }, -/turf/simulated/floor/tiled, -/area/hallway/lower/third_south) "WF" = ( /obj/structure/table/bench/wooden, /obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ @@ -22276,6 +21775,93 @@ }, /turf/simulated/floor/tiled, /area/tether/surfacebase/public_garden_three) +"WH" = ( +/obj/machinery/atmospherics/unary/vent_pump/on{ + dir = 1 + }, +/obj/machinery/camera/network/tether{ + dir = 1 + }, +/turf/simulated/floor/tiled/techmaint, +/area/tether/surfacebase/shuttle_pad) +"WI" = ( +/obj/machinery/door/firedoor, +/obj/structure/grille, +/obj/structure/window/reinforced/full, +/obj/structure/window/reinforced{ + dir = 8 + }, +/turf/simulated/floor/plating, +/area/tether/surfacebase/shuttle_pad) +"WM" = ( +/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{ + dir = 1 + }, +/obj/machinery/atmospherics/pipe/manifold/hidden/supply{ + dir = 1 + }, +/obj/structure/cable/green{ + d1 = 2; + d2 = 8; + icon_state = "2-8" + }, +/obj/structure/cable/green{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/turf/simulated/floor/tiled, +/area/hallway/lower/third_south) +"WN" = ( +/obj/structure/closet/hydrant, +/turf/simulated/wall, +/area/tether/surfacebase/shuttle_pad) +"WZ" = ( +/obj/structure/disposalpipe/segment, +/obj/structure/cable{ + d1 = 1; + d2 = 2; + icon_state = "1-2"; + pixel_y = 0 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/obj/machinery/door/firedoor/glass, +/obj/machinery/door/airlock/maintenance/int{ + name = "Emergency Storage"; + req_one_access = list() + }, +/turf/simulated/floor/plating, +/area/maintenance/lower/atrium) +"Xa" = ( +/obj/effect/floor_decal/borderfloorblack, +/obj/effect/floor_decal/industrial/danger, +/turf/simulated/floor/tiled, +/area/tether/surfacebase/shuttle_pad) +"Xb" = ( +/obj/effect/floor_decal/borderfloor, +/obj/effect/floor_decal/corner/lightgrey/border, +/obj/effect/floor_decal/steeldecal/steel_decals7{ + dir = 8 + }, +/obj/effect/floor_decal/steeldecal/steel_decals7{ + dir = 1 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/structure/cable/green{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/turf/simulated/floor/tiled, +/area/hallway/lower/third_south) +"Xg" = ( +/obj/machinery/atmospherics/unary/vent_scrubber/on{ + dir = 4 + }, +/turf/simulated/floor/tiled, +/area/tether/surfacebase/shuttle_pad) "Xo" = ( /obj/structure/bed/chair/wood, /obj/structure/window/basic{ @@ -22289,6 +21875,14 @@ }, /turf/simulated/floor/tiled, /area/tether/surfacebase/atrium_three) +"Xp" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/structure/cable{ + icon_state = "1-4" + }, +/turf/simulated/floor/tiled, +/area/hallway/lower/third_south) "Xq" = ( /obj/machinery/light/small{ dir = 1 @@ -22298,6 +21892,50 @@ }, /turf/simulated/floor/wood, /area/tether/surfacebase/bar_backroom) +"Xr" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/machinery/door/firedoor, +/obj/structure/cable/green{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/obj/machinery/door/airlock/glass_external/public, +/turf/simulated/floor/tiled, +/area/hallway/lower/third_south) +"Xs" = ( +/obj/structure/cable/green{ + icon_state = "0-2" + }, +/obj/structure/cable, +/obj/machinery/power/smes/buildable{ + charge = 0; + RCon_tag = "Substation - Surface Civilian" + }, +/turf/simulated/floor/plating, +/area/maintenance/substation/bar{ + name = "\improper Surface Civilian Substation" + }) +"Xt" = ( +/obj/structure/bed/chair, +/obj/machinery/light/small{ + dir = 8 + }, +/turf/simulated/floor/tiled/techfloor, +/area/tether/surfacebase/shuttle_pad) +"Xv" = ( +/obj/item/stack/tile/wood{ + amount = 10 + }, +/obj/structure/cable{ + d1 = 4; + d2 = 8; + icon_state = "4-8"; + pixel_x = 0 + }, +/turf/simulated/floor/plating, +/area/vacant/vacant_library) "XG" = ( /obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ dir = 4 @@ -22326,6 +21964,34 @@ }, /turf/simulated/floor/wood, /area/crew_quarters/bar) +"XR" = ( +/obj/effect/floor_decal/steeldecal/steel_decals6{ + dir = 4 + }, +/obj/machinery/light{ + dir = 4; + icon_state = "tube1"; + pixel_x = 0 + }, +/turf/simulated/floor/tiled, +/area/hallway/lower/third_south) +"XW" = ( +/obj/effect/floor_decal/borderfloor, +/obj/effect/floor_decal/corner/lightgrey/border, +/obj/effect/floor_decal/steeldecal/steel_decals7{ + dir = 1 + }, +/obj/effect/floor_decal/steeldecal/steel_decals7{ + dir = 8 + }, +/obj/structure/cable{ + d1 = 4; + d2 = 8; + icon_state = "4-8"; + pixel_x = 0 + }, +/turf/simulated/floor/tiled, +/area/hallway/lower/third_south) "XY" = ( /obj/structure/table/woodentable, /obj/machinery/atmospherics/unary/vent_scrubber/on{ @@ -22340,6 +22006,14 @@ }, /turf/simulated/floor/wood, /area/tether/surfacebase/bar_backroom) +"XZ" = ( +/obj/structure/cable/green{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/turf/simulated/floor/tiled/monotile, +/area/tether/surfacebase/shuttle_pad) "Ya" = ( /obj/structure/railing{ dir = 4 @@ -22356,6 +22030,61 @@ }, /turf/simulated/floor/plating, /area/tether/surfacebase/public_garden_three) +"Yh" = ( +/obj/structure/bookcase, +/turf/simulated/floor/wood, +/area/vacant/vacant_library) +"Yo" = ( +/obj/effect/floor_decal/borderfloor, +/obj/effect/floor_decal/corner/lightgrey/border, +/obj/effect/floor_decal/steeldecal/steel_decals7{ + dir = 1 + }, +/obj/effect/floor_decal/steeldecal/steel_decals7{ + dir = 8 + }, +/obj/structure/disposalpipe/segment, +/obj/structure/cable{ + d1 = 2; + d2 = 8; + icon_state = "2-8" + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/turf/simulated/floor/tiled, +/area/tether/surfacebase/atrium_three) +"Yp" = ( +/obj/structure/railing{ + dir = 1 + }, +/obj/structure/grille, +/turf/simulated/floor/tiled/techmaint, +/area/tether/surfacebase/atrium_three) +"Yq" = ( +/obj/structure/cable/green, +/obj/structure/cable/green{ + d2 = 4; + icon_state = "0-4" + }, +/obj/machinery/power/sensor{ + name = "Powernet Sensor - Surface Civilian Subgrid"; + name_tag = "Surface Civilian Subgrid" + }, +/obj/effect/decal/cleanable/dirt, +/obj/effect/floor_decal/industrial/warning{ + icon_state = "warning"; + dir = 1 + }, +/turf/simulated/floor/plating, +/area/maintenance/substation/bar{ + name = "\improper Surface Civilian Substation" + }) +"Yt" = ( +/obj/machinery/door/firedoor, +/obj/structure/grille, +/obj/structure/window/reinforced/full, +/turf/simulated/floor/plating, +/area/tether/surfacebase/shuttle_pad) "Yu" = ( /obj/structure/disposalpipe/segment, /obj/effect/floor_decal/borderfloor{ @@ -22374,7 +22103,6 @@ /area/tether/surfacebase/atrium_three) "Yz" = ( /obj/item/device/radio/intercom{ - broadcasting = 1; dir = 8; listening = 1; name = "Common Channel"; @@ -22396,6 +22124,24 @@ }, /turf/simulated/floor/plating, /area/tether/surfacebase/public_garden_three) +"YD" = ( +/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{ + icon_state = "map-scrubbers"; + dir = 4 + }, +/obj/machinery/atmospherics/pipe/manifold/hidden/supply{ + dir = 8 + }, +/obj/effect/floor_decal/steeldecal/steel_decals5{ + dir = 1 + }, +/obj/effect/floor_decal/steeldecal/steel_decals5, +/turf/simulated/floor/tiled, +/area/tether/surfacebase/shuttle_pad) +"YK" = ( +/obj/machinery/door/firedoor, +/turf/simulated/floor/tiled, +/area/hallway/lower/third_south) "YM" = ( /obj/machinery/atmospherics/pipe/simple/hidden/supply{ dir = 4 @@ -22457,6 +22203,21 @@ /obj/structure/disposalpipe/segment, /turf/simulated/floor/wood, /area/crew_quarters/bar) +"Ze" = ( +/obj/machinery/space_heater, +/obj/effect/decal/cleanable/dirt, +/turf/simulated/floor/plating, +/area/maintenance/lower/atrium) +"Zh" = ( +/obj/machinery/button/remote/blast_door{ + dir = 1; + id = "hangarsurface"; + name = "Engine Repair Bay"; + pixel_x = 0; + pixel_y = -25 + }, +/turf/simulated/floor/reinforced, +/area/tether/surfacebase/shuttle_pad) "Zn" = ( /obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ dir = 9 @@ -22473,6 +22234,10 @@ }, /turf/simulated/floor/tiled, /area/tether/surfacebase/public_garden_three) +"Zo" = ( +/obj/structure/bed/chair, +/turf/simulated/floor/tiled/techfloor, +/area/tether/surfacebase/shuttle_pad) "Zp" = ( /obj/structure/grille, /obj/structure/window/reinforced/full, @@ -22486,6 +22251,16 @@ "Zq" = ( /turf/simulated/floor/grass, /area/tether/surfacebase/public_garden_three) +"Zt" = ( +/obj/structure/table/woodentable, +/obj/effect/decal/cleanable/dirt, +/obj/item/weapon/pen, +/obj/random/tool, +/turf/simulated/floor/carpet, +/area/vacant/vacant_library) +"Zv" = ( +/turf/simulated/wall, +/area/vacant/vacant_library) "Zz" = ( /obj/structure/disposalpipe/segment{ dir = 1; @@ -22508,6 +22283,24 @@ }, /turf/simulated/floor/tiled, /area/tether/surfacebase/public_garden_three) +"ZT" = ( +/obj/effect/floor_decal/borderfloor, +/obj/effect/floor_decal/corner/lightgrey/border, +/obj/effect/floor_decal/steeldecal/steel_decals7{ + dir = 8 + }, +/obj/effect/floor_decal/steeldecal/steel_decals7{ + dir = 1 + }, +/obj/machinery/alarm{ + dir = 1; + pixel_y = -25 + }, +/obj/machinery/door/firedoor/glass/hidden/steel{ + dir = 1 + }, +/turf/simulated/floor/tiled, +/area/hallway/lower/third_south) "ZX" = ( /obj/machinery/atmospherics/pipe/simple/hidden/supply, /obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, @@ -28248,7 +28041,7 @@ ac ac ac ac -bg +fF ac ac ac @@ -29223,7 +29016,7 @@ ac ac ac ac -bg +fF ac ac ac @@ -29272,9 +29065,9 @@ ac ac ac ac -xy -xy -xy +jI +jI +jI ac ac ac @@ -29376,7 +29169,7 @@ bh bh hf bh -iv +ir jz kn kS @@ -29410,13 +29203,13 @@ ac ac ac ac -AS +fF ac ac ac -xy -Ea -xy +jI +Dv +jI ac ac ac @@ -29547,19 +29340,19 @@ uq uq tB tB -xy -xy -xy -xy -xy -xy -xy -xy -xy -xy -Eb -xy -xy +jI +jI +jI +jI +jI +jI +jI +jI +jI +jI +Dw +jI +jI ac ac ac @@ -29689,19 +29482,19 @@ vt tU wx tB -xz -yi -yN -zy -Al -AT -BH -yi -CY -Du -Ec -EK -xy +pA +xJ +yo +yX +zF +Aq +Ba +Ct +Cv +Dx +EL +Ef +jI ac ac ac @@ -29831,24 +29624,24 @@ tU vQ wy wW -xA -yj -yO -yO -yO -yO -yO -yO -yO -yO -Ed -EL +xy +xK +yp +yp +yp +yp +yp +yp +yp +yp +Ea +Eg FN FN FN -Hy -Hy -Hy +EN +EN +EN FN FN ac @@ -29973,19 +29766,19 @@ tU vR wz wW -xB -yk -yP -zz -zz -zz -BI -yT -yT -yT -Ee -EL -FO +xz +yi +yN +yY +yY +yY +Bb +yR +yR +yR +Eb +Eg +EM Gw Hi Hz @@ -30115,26 +29908,26 @@ tU vS tU wX -xC -yk -yQ -zA -zA -AU -yT -yT -yT -Dv -Ef +xA +yi +yO +zy +zy +Ar +yR +yR +yR +CY +Ec +Eh EM -FO Gx Hj HA -HZ +EO Ik Iv -IT +EP ac ac ac @@ -30257,18 +30050,18 @@ vu vS tU wW -xD -yk -yQ -zA -zA -AV -BJ -zE -zE -Dw -Eg -EN +xB +yi +yO +zy +zy +AT +BH +zC +zC +CZ +Ed +Ez FP Gy Hk @@ -30276,7 +30069,7 @@ HB Ia HC Iw -IT +EP ac ac ac @@ -30399,26 +30192,26 @@ vu vS tU wW -xE -yk +xC +yi +yP +zz +zz +AU +BI yR -zB -zB -AW -BK -yT -yT -yT -yT -EO -FO +yR +yR +yR +EA +EM Gz Hl HC HC HC Ix -IT +EP ac ac ac @@ -30541,19 +30334,19 @@ vv vS tU wW -xF -yl -yS -zC -Am -AX -BL -Cq -CZ -Dx -Eh -EP -FO +xD +yj +yQ +zA +zG +AV +BJ +BP +Cu +Du +Ee +EK +EM GA Hm HD @@ -30683,14 +30476,14 @@ vu vS tU wW -xB -yk -yT -yT -An -AY -BK -Cr +xz +yi +yR +yR +Al +AW +BI +BQ Da Da Ei @@ -30698,9 +30491,9 @@ Ei FN FN FN -FO -FO -FO +EM +EM +EM FN FN ac @@ -30825,14 +30618,14 @@ uW vT wA wY -xG -ym -yU -zD -Ao -AZ -BM -Cs +xE +yk +yS +zB +Am +AX +BK +Cb Da Dy Ej @@ -30938,9 +30731,9 @@ fh fh fh fh -iF -jI ky +pS +kx kZ lL mw @@ -30967,14 +30760,14 @@ tU vU wB wZ -xH -yn -yV -zE -Ap -zE -BN -Ct +xF +yl +yT +zC +An +zC +BL +Cq Db Dz Ek @@ -31109,14 +30902,14 @@ vw vV wC wZ -xI -yo -yW -zF -Aq -Ba -BO -Cu +xG +ym +yU +zD +Ao +AY +BM +Cr Dc DA El @@ -31251,14 +31044,14 @@ tE vW wD tE -xJ -yp -yX -zG -Ar -Bb -BP -Cv +xH +yn +yV +zE +Ap +AZ +BN +Cs Dd DB Em @@ -31393,14 +31186,14 @@ vx vX wE tE -xK -xK -yY -xy -xy -xy -BQ -xy +xI +xI +yW +jI +jI +jI +BO +jI Da DC En @@ -31546,9 +31339,9 @@ Cw Da Da Da -EV -FV -FV +yH +zw +zw Da HJ Ig @@ -32668,10 +32461,10 @@ ue uA vb vz -wb -wb +UM +Pn xd -wb +Xp wb wb zN @@ -32813,7 +32606,7 @@ vA wc wH xe -wH +No yw zg zO @@ -32840,7 +32633,7 @@ ac ac ac ac -ac +fF ac ac ac @@ -32954,17 +32747,17 @@ vd vB wd wI -wJ +Zv xS -yx -yx -yx -yx -yx -yx -yx -yx -yx +Zv +Zv +Zv +Zv +Zv +Zv +Zv +Zv +Zv Eu Ff Gb @@ -32975,18 +32768,18 @@ Da Da Da Da -ac -ac -ac -ac -ac -ac -ac -ac -ac -ac -ac -ac +IR +WI +WI +WI +WI +WI +WI +IR +IR +WI +WI +IR ac ac ac @@ -33095,40 +32888,40 @@ uC ve vC we -wJ +Zv xf xT yx zh zP -Av -Bl +xV Bl +Zv CF Di -DJ -yx +xV +Zv Fg Gc GK -ts -ac -ac -ac -ac -ac -ac -ac -ac -ac -ac -ac -ac -ac -ac -ac -ac -ac +Sz +MY +Lg +Lg +Lg +Lg +QD +Lg +Lg +Lg +Lg +Lg +Lg +QD +Lg +Lg +Ms +RU ac ac ac @@ -33221,7 +33014,7 @@ ne ne ne lc -pA +iv pY qO gw @@ -33236,41 +33029,41 @@ uf uD ve vC -wf -wJ +XW +Zv xg -xU -yx +VM +LM zi -zQ +xV Aw Bm -BZ +Zv CG Dj -DJ -yx +xW +Zv Fh Gb wf -Hr -ac -ac -ac -ac -ac -ac -ac -ac -ac -ac -ac -ac -ac -ac -ac -ac -ac +Sz +Xa +IY +IY +IY +IY +IY +IY +IY +IY +IY +IY +IY +IY +IY +IY +Vu +RU ac ac ac @@ -33379,40 +33172,40 @@ uE vf vD wg -wJ -xh -xT -yx +Zv +Zv +Zv +Zv zj -zQ -Ax -Bn -Bn +Zv +Zv +Zv +Zv CH -Dj -DK -yx +Wa +xV +Zv Fi Gb wf -Hr -ac -ac -ac -ac -ac -ac -ac -ac -ac -ac -ac -AS -ac -ac -ac -ac -ac +ts +Od +IY +IY +IY +IY +IY +IY +IY +IY +IY +IY +IY +IY +IY +IY +Vu +IR ac ac ac @@ -33520,42 +33313,42 @@ ha uF vg jX -kx -wJ +LB +Zv xi -xT -yx -zh +QX +TE +Lu zQ Ay Bo -Ca -CI -Dj -DJ -yx +yy +Lm +Xv +xV +Zv Fj Gb wf -AO -HT -HT -Is -IO -ts -HT -HT -HT -HT -HT -ts -ts -ts -HT -HT -HT -HT -Ks +Sz +Xa +IY +IY +IY +IY +IY +IY +IY +IY +IY +IY +IY +IY +IY +IY +Vu +RU +ac ac ac ac @@ -33663,41 +33456,41 @@ uG vh vE wh -wJ +Zv xj -xT -yx -zh +Lm +Qs +Wc zR Az -Bp -Cb +Az +LM CJ Dk DJ -yx +Zv Fk -Gd -GL -Hs -HU -HU -It -IP -IV -HU -HU -HU -HU -HU -HU -JB -HU -HU -JP -Kb -Kj -ts +Gb +wf +Sz +Xa +IY +IY +IY +IY +IY +IY +IY +IY +IY +IY +IY +IY +IY +IY +Vu +RU +ac ac ac ac @@ -33803,43 +33596,43 @@ qQ qQ qQ vi -jM -kv -wJ -wJ +Tn +KV +Zv +Yh xV -yx -yx -yx +Lm +yy +yy AA -yx -yx -CK -yx -yx +Lm +zm +xW +Lm +zS Ev Fl Ge GM -Ht -yG -yG -yG -yG -yG -yG -yG -Jl -yG -yG -yG -yG -yG -JJ -JQ -Gl -QN ts +Ut +IY +IY +IY +IY +IY +IY +IY +IY +IY +IY +IY +IY +IY +IY +Ou +IR +ac ac ac ac @@ -33944,44 +33737,44 @@ lX lX lX uH -vj -vF +vk +jM wi -wK +Zv xk -xk -xk -zk +Lm +Yh +Rz zS -xT +Zv Bq -xT -xT -Dl -DL -wJ +TY +VV +xV +AA +Zv Fm -Gf -GN -Hu -HV -HV -HV -IQ -IW -HV -HV -HV -HV -HV -Jx -JC -JG -HV -JR -yG -Kk -ts +Gb +wf +Sz +Xa +IY +IY +IY +IY +IY +IY +IY +IY +IY +IY +IY +IY +IY +IY +Vu +RU +ac ac ac ac @@ -34087,43 +33880,43 @@ lY lY uI vk -ka +jM wj -wJ -xi +Zv +Sa xW yy -zl -zT +xV zT +Yh Br Cc -Cc -Cc -Cc -Ew +Lm +xW +VX +Zv Fn -Gg +Gb GO -AO -HW -HW -ts -ts -ts -HW -HW -HW -HW -HW -ts -ts -ts -AO -JS -yG -wf -Hr +Sz +Xa +IY +IY +IY +IY +IY +IY +IY +IY +IY +IY +IY +IY +IY +IY +Vu +RU +ac ac ac ac @@ -34229,25 +34022,42 @@ lY lY uI vk -ka +jM wk -wJ -wJ -wJ -wJ -wJ -wJ -AB +Zv +Rz +TJ +Vc +Lm +Lm +xW Bs -Cd -AB -AB -wJ -wJ +yy +zS +My +TY +Zv Fo -Gg +Gb GO -Hr +ts +Xa +IY +IY +IY +IY +IY +IY +IY +IY +IY +IY +IY +IY +IY +IY +Vu +IR ac ac ac @@ -34261,23 +34071,6 @@ ac ac ac ac -ue -JS -yG -wf -Hr -ac -ac -ac -ac -ac -ac -ac -ac -ac -ac -ac -ac ac ac ac @@ -34371,25 +34164,42 @@ lY lY uI vk -ka +jM wl -wL -hd -wJ +Zv +Zv +Zv yz zm -zU -AB +xi +Pe Bt -Ce -CL -AB -tH -uf +Lm +yz +Zv +Zv +Zv Fp -Gg +Gb GO -Hr +Sz +Xa +IY +IY +IY +IY +IY +IY +IY +IY +IY +IY +IY +IY +IY +IY +Vu +RU ac ac ac @@ -34403,23 +34213,6 @@ ac ac ac ac -ue -JS -yG -wf -Hr -ac -ac -ac -ac -ac -ac -ac -ac -ac -ac -ac -ac ac ac ac @@ -34513,25 +34306,42 @@ lY lY uI vk -ka -wm -wJ -wJ -wJ +jM +wk +Yp +hd +Zv yA -zn +yy zV -AB -Bu -Cf +Zt +Bt +xW CM -AB -wJ -wJ -Fq -Gh -GP -ts +Zv +tH +Te +Fn +Gb +GO +Sz +Xa +IY +IY +IY +IY +IY +IY +IY +IY +IY +IY +IY +IY +IY +IY +Vu +RU ac ac ac @@ -34545,23 +34355,6 @@ ac ac ac ac -ue -JS -yG -wf -Hr -ac -ac -ac -ac -ac -ac -ac -ac -ac -ac -ac -ac ac ac ac @@ -34655,25 +34448,42 @@ lY lY uI vk -ka +jM wn -wM -xl -xl -yB -zo -zW -AB -Bv -Cg -CN -AB -DM wJ +wJ +wJ +wJ +wJ +zW +MK +Bv +AB +AB +AB +AB +AB Fr Gi GQ ts +Od +IY +IY +IY +IY +IY +IY +IY +IY +IY +IY +IY +IY +IY +IY +Vu +IR ac ac ac @@ -34687,23 +34497,6 @@ ac ac ac ac -ue -JS -yG -wf -Hr -ac -ac -ac -ac -ac -ac -ac -ac -ac -ac -ac -ac ac ac ac @@ -34797,43 +34590,43 @@ lY lY uI vk -ka -kx +jM +wi wN -wJ +OU +UW +NJ wJ wJ wJ wJ AB +CL +Xs +Yq AB -AB -CO -AB -wJ -wJ Fs Gg -GR -ts -ac -ac -ac -ac -ac -ac -ac -ac -ac -ac -ac -ac -ac -ts -JS +GO +Sz +NP +Pq +Pq +Pq +Pq +Pq +Pq +Pq +Pq +Pq +Pq +Pq +Pq +Pq +Pq Kc -wf -ts +IR +ac ac ac ac @@ -34939,16 +34732,16 @@ lY lY uI vk -ka -kx -wJ +UD +Yo +WZ xm xX -xU +xm zp zX AC -wJ +UZ Ch CP Dm @@ -34957,27 +34750,27 @@ Ex Ft Gj GO -Hr -ac -ac -ac -ac -ac -ac -ac -ac -ac -ac -ac -ac -ac -ts -WE -yG -wf -ts -ac -ac +Sz +KW +KW +KW +KW +KW +Om +KW +KW +MR +Lt +KW +KW +Om +KW +KW +KW +IR +WI +WI +IR ac ac ac @@ -35082,46 +34875,46 @@ lY uI vk vG -wo -wO +kx +wJ xn -xn -xn -zq +Ze +SQ +wJ zY AD -Bw -Bw +xU +AB CQ zn DO -wJ +AB Fu -Gb -GO -Hr -ac -ac -ac -ac -ac -ac -ac -ac -ac -ac -ac -ac -ac +Qk +ZT ts -JT -yG -Kl -ts -ac -ac -ac -ac +Yt +Yt +IR +Uj +KW +IR +KW +Uj +NB +NB +Uj +KW +WN +KW +Uj +Uj +IR +QA +ML +IR +IR +FK ac ac ac @@ -35224,7 +35017,7 @@ lY uI vk jR -wh +Ql wP wP wP @@ -35239,30 +35032,30 @@ wP wP Ey Fv -Ge +RJ GS Hr -ac -ac -ac -ac -ac -ac -ac -ac -ac -ac -ac -ac -ac -ue -JU -CV -CV -Hr -ac -ac -ac +Uj +Uj +Qb +Uj +KW +Wz +KW +Uj +Uj +Uj +Uj +KW +QL +KW +Uj +Uj +IR +Pm +Kv +Xt +RU ac ac ac @@ -35381,30 +35174,30 @@ Dn DP wP Fw -Gb +TR GO -Hr -ac -ac -ac -ac -ac -ac -ac -ac -ac -ac -ac -ac -ac -IS +Sz +Xg +Nd +Yt +MJ +Ns +YD +Ns +OR +OR +OR +OR +Ns +YD +Ns JV -Kd +OR Km Kt -ac -ac -ac +Kv +Zo +RU ac ac ac @@ -35523,30 +35316,30 @@ xZ DQ wR Fx -Gb -GO -Hr -ac -ac -ac -ac -ac -ac -ac -ac -ac -ac -ac -ac -ac -IS +WM +Xb +Xr +MS +OB +VA +MI +LA +Nr +KW +Uj +Uj +Uj +Uj +KW +QI +KW JW -Ke -Kn -Kt -ac -ac -ac +Uj +IR +QJ +Kv +Zo +RU ac ac ac @@ -35665,30 +35458,30 @@ ya DR wR Fx -Gb -GT +TR +GO ts -ac -ac -ac -ac -ac -ac -ac -ac -ac -ac -ac -ac -ac -IS -JX -Kf -Ko -Kt -ac -ac -ac +IR +IR +IR +Rf +XZ +WN +KW +Gt +Mq +OL +Gt +KW +IR +KW +JW +Uj +IR +OP +Kv +IR +IR ac ac ac @@ -35807,32 +35600,32 @@ ya DS wR Fx -Gb -GQ +TR +GO ts -ac -ac -ac -IR +Va +NF IR +Nw +Pv Jc +KW +KW +MR +Lt +KW +KW Jc -Jc -Jc -Jc -IR -IR +KW +Ox +KW IR JK -JV -Kg -Km JK IR -IR -IR -IR -KM +ac +ac +ac ac ac ac @@ -35949,30 +35742,25 @@ yb DT wR Fx -Gb +TR GU ts -ac -ac -ac -IR -IX -Jd -Jh -Jm -Jh -Jh -Jy -JD +ts +ts +ts +NX +Lg +Lg +Lg +Lg +Lg +Lg +Lg +Lg +JH JH -JL JY -Kh -Kp -Ku -IY -KC -KH +JH IR ac ac @@ -35989,6 +35777,11 @@ ac ac ac ac +ac +ac +ac +ac +ac ab ab ab @@ -36093,29 +35886,29 @@ wP Fy Gk GV -Hr -ac -ac -ac -IS -IY -Je -Ji -Ji -Ji -Ji -Ji -Ji -Ji -JM +Sz +AN +AN +Sz +IY +IY +IY IY IY -Kq IY IY IY IY IR +IR +PI +IR +IR +ac +ac +ac +ac +ac ac ac ac @@ -36233,31 +36026,31 @@ wR wP wP Fz -Cl +RV GO -Hr -ac -ac -ac -IS -IY -Je -Jj -Jn -Jr -Jv -Jz -JE -JI -JM -IY -IY -Kq -IY -IY -IY +Sz +AN +AN +Sz IY +Ji +Ji +Ji +LD +Ji +Ji +Ji +Zh IR +JM +PC +LV +IR +ac +ac +ac +ac +ac ac ac ac @@ -36372,33 +36165,28 @@ BB Ck CS Do -DV -Ez +Dq +Hg FA -yG +Ae GO -Hr -ac -ac -ac -IS +Sz +AN +AN +Sz IY -Je Jj -Jo +Jn +Jr Js -Js -Jz +Wh JE -JI -JM -IY -IY -Kq -IY -IY -IY +VB IY +bg +RO +LE +Ow IR ac ac @@ -36414,6 +36202,11 @@ ac ac ac ac +ac +ac +ac +ac +ac ab ab ab @@ -36518,29 +36311,24 @@ yG vZ FB Gl -GO -Hr -ac -ac -ac -IS +Sh +PT +QE +Pr +Sz IY -Je Jj -Jp -Jt +Jo +Js Js Jz JE -JI -JM +VB IY -IY -Kq -IY -IY -IY -Ki +bg +RO +KN +Qz IR ac ac @@ -36556,6 +36344,11 @@ ac ac ac ac +ac +ac +ac +ac +ac ab ab ab @@ -36651,38 +36444,33 @@ ye xw xw Af -AM -AM -Cm +xw +xw +xw CU CU +DV DW -EA FC Gm GW -Hr -ac -AS -ac -IS -IY -Je -Ji -Ji -Ju -Jw -JA -Ji -Ji -JM -IY -IY -Kq -IY -IY +YK +XR +PJ +Sz IY +Jj +Jp +Jt +Js +Jz +JE +VB IY +bg +RO +KN +SP IR ac ac @@ -36700,6 +36488,11 @@ ac ac ac ac +ac +ac +ac +ac +ac ab ab ab @@ -36792,13 +36585,13 @@ vK sF rJ zv -ts -AN -AN -AN -CV -yG -ts +rJ +vK +vK +vK +vK +vK +rJ rJ FD Gn @@ -36807,25 +36600,25 @@ rJ rJ rJ rJ +IY +Ji +Ji +Ji +Ji +Ji +Ji +Ji +IY +bg +RO +Ll +WH IR -IZ -Jf -Jk -Jk -Jk -Jk -Jk -Jk -Jk -JN -IY -IY -Kq -IY -IY -IY -IY -IR +ac +ac +ac +ac +ac ac ac ac @@ -36934,13 +36727,13 @@ xx ti AR BG -ts +Lc +sX +sX AO -AO -AO -AO -AO -ts +sX +sX +DX EB FE Go @@ -36948,25 +36741,20 @@ GX Hv HX rJ -NS +rJ +IY +IY +IY +IY +IY +IY +IY +IY +IY IR -Ja -IY -IY -IY -IY -IY -IY -IY -IY -IY -JZ -IY -Kq -IY -IY -IY -KI +NW +NW +NW IR ac ac @@ -36983,6 +36771,11 @@ ac ac ac ac +ac +ac +ac +ac +ac ab ab ab @@ -37076,14 +36869,14 @@ sX sX sX sX -Ag +sX AP -BC -Cn +BD +Co BC Dp -DX -EC +OC +sX sX Ti GY @@ -37091,25 +36884,25 @@ RB RB RB RB +RB IR -Jb -Jd -Jh -Jh -Jh -Jh -Jh -Jh -Jh -JO -IY -IY -Kr -Kh -Ky -IY -IX IR +IR +IR +IR +IR +IR +IR +IR +IR +IR +IR +IR +ac +ac +ac +ac +ac ac ac ac @@ -37220,8 +37013,8 @@ yI vp Ah AP -BD -Co +BC +BC CW Dp DY @@ -37233,25 +37026,25 @@ RB MW PN OI -IR -IY -Je -IY -IY -IY -IY -IY -IY -IY -JM -IY -Ki -IR -IR -Kz -IR -IR -IR +RB +ac +ac +ac +ac +ac +kk +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac ac ac ac @@ -37375,25 +37168,25 @@ RB LQ Rt Vq -IR -IY -Je -IY -IY -IY -IY -IY -IY -IY -JM -IY -KI -IR -Kv -KA -KD -Kv -IR +RB +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac ac ac ac @@ -37517,25 +37310,25 @@ Hw TP NO OV -IR -IY -Je -IY -IY -IY -IY -IY -IY -IY -JM -IY -IY -IR -Kv -Kv -KE -KJ -IR +RB +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac ac ac ac @@ -37659,25 +37452,25 @@ RB Xq MF NM -IR -IY -Je -IY -IY -IY -IY -IY -IY -IY -JM -IY -IY -IR -Kw -Kv -KE -KK -IR +RB +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac ac ac ac @@ -37801,25 +37594,25 @@ RB XY VW XK -IR -IY -Je -IY -IY -IY -IY -IY -IY -IY -JM -IY -IY -IR -Kv -Kv -KF -KK -IR +RB +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac ac ac ac @@ -37943,25 +37736,25 @@ RB QB VS Vi -IR -IX -Jf -Jk -Jq -Jk -Jk -Jk -JF -Jk -JN -Ka -IY -IR -Kx -KB -KG -KL -IR +RB +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac ac ac ac @@ -38085,26 +37878,26 @@ RB RB RB RB -IR -IR -Jg -Jg -Jg -Jg -Jg -IR -IR -IR -IR -IR -IR -IR -IR -IR -IR -IR -IR -KM +RB +Ty +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac ac ac ac diff --git a/maps/tether/tether-04-transit.dmm b/maps/tether/tether-04-transit.dmm index 5338af8a8b..65fece4dcd 100644 --- a/maps/tether/tether-04-transit.dmm +++ b/maps/tether/tether-04-transit.dmm @@ -4,7 +4,7 @@ /area/tether/transit) "b" = ( /turf/simulated/wall/r_wall, -/area/space) +/area/tether/elevator) "c" = ( /obj/machinery/light/small{ dir = 4; @@ -20,12 +20,12 @@ /obj/structure/disposalpipe/down, /obj/effect/ceiling, /turf/simulated/open, -/area/space) +/area/tether/elevator) "d" = ( /turf/simulated/shuttle/wall/voidcraft/green{ hard_corner = 1 }, -/area/space) +/area/tether/elevator) "e" = ( /obj/machinery/atmospherics/pipe/simple/visible/supply, /obj/machinery/atmospherics/pipe/simple/visible/scrubbers, @@ -36,10 +36,10 @@ /obj/structure/disposalpipe/segment, /obj/effect/ceiling, /turf/simulated/floor/plating, -/area/space) +/area/tether/elevator) "f" = ( /turf/simulated/floor/holofloor/tiled/dark, -/area/space) +/area/tether/elevator) "g" = ( /obj/machinery/atmospherics/pipe/zpipe/up/supply{ dir = 1 @@ -59,23 +59,23 @@ /obj/structure/cable, /obj/effect/ceiling, /turf/simulated/floor/plating, -/area/space) +/area/tether/elevator) "h" = ( /obj/effect/ceiling, /turf/simulated/floor/tiled, -/area/space) +/area/tether/elevator) "i" = ( /obj/structure/disposalpipe/up, /obj/effect/ceiling, /turf/simulated/floor/tiled, -/area/space) +/area/tether/elevator) "j" = ( /obj/structure/disposalpipe/down{ dir = 1 }, /obj/effect/ceiling, /turf/simulated/floor/tiled, -/area/space) +/area/tether/elevator) (1,1,1) = {" a diff --git a/maps/tether/tether-05-station1.dmm b/maps/tether/tether-05-station1.dmm index ac19de75b0..98879a511b 100644 --- a/maps/tether/tether-05-station1.dmm +++ b/maps/tether/tether-05-station1.dmm @@ -94,6 +94,22 @@ "aaq" = ( /turf/simulated/shuttle/wall/voidcraft, /area/shuttle/excursion/tether) +"aar" = ( +/obj/structure/cable/cyan{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/obj/machinery/door/airlock/hatch{ + icon_state = "door_locked"; + id_tag = "engine_electrical_maintenance"; + locked = 1; + name = "Electrical Maintenance"; + req_access = list(10) + }, +/obj/machinery/door/firedoor/glass, +/turf/simulated/floor/tiled/techmaint, +/area/engineering/engine_smes) "aas" = ( /obj/machinery/power/smes/buildable{ charge = 2e+006; @@ -158,6 +174,20 @@ }, /turf/simulated/floor, /area/engineering/engine_smes) +"aaB" = ( +/obj/structure/cable{ + d1 = 4; + d2 = 8; + icon_state = "4-8"; + pixel_x = 0 + }, +/obj/machinery/door/airlock/maintenance_hatch{ + name = "SMES Access"; + req_access = list(11) + }, +/obj/machinery/door/firedoor/glass, +/turf/simulated/floor/tiled/techmaint, +/area/engineering/engine_smes) "aaC" = ( /obj/machinery/power/grid_checker, /obj/structure/cable{ @@ -173,6 +203,41 @@ "aaD" = ( /turf/simulated/shuttle/floor/black, /area/shuttle/excursion/tether) +"aaE" = ( +/obj/structure/cable/yellow{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/obj/machinery/door/airlock/hatch{ + icon_state = "door_locked"; + id_tag = "engine_electrical_maintenance"; + locked = 1; + name = "Electrical Maintenance"; + req_access = list(10) + }, +/obj/machinery/door/firedoor/glass, +/turf/simulated/floor/tiled/techmaint, +/area/engineering/engine_smes) +"aaF" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, +/obj/machinery/door/airlock/maintenance_hatch{ + name = "SMES Access"; + req_access = list(11) + }, +/obj/structure/cable/green{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/obj/machinery/door/firedoor/glass, +/turf/simulated/floor/tiled/techmaint, +/area/engineering/engine_smes) "aaG" = ( /obj/machinery/power/smes/buildable{ charge = 2e+007; @@ -307,6 +372,14 @@ "aaT" = ( /turf/simulated/wall, /area/hallway/station/atrium) +"aaU" = ( +/obj/machinery/door/airlock/maintenance_hatch{ + name = "SMES Access"; + req_access = list(11) + }, +/obj/machinery/door/firedoor/glass, +/turf/simulated/floor/tiled/steel_grid, +/area/engineering/engine_monitoring) "aaV" = ( /turf/simulated/wall/r_wall, /area/crew_quarters/sleep/engi_wash) @@ -328,6 +401,11 @@ }, /turf/simulated/floor/tiled/techmaint, /area/engineering/engine_smes) +"aaY" = ( +/obj/machinery/door/airlock/maintenance/common, +/obj/machinery/door/firedoor/glass, +/turf/simulated/floor, +/area/maintenance/station/eng_lower) "aaZ" = ( /obj/machinery/atmospherics/pipe/simple/hidden/supply, /obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ @@ -482,6 +560,18 @@ }, /turf/simulated/shuttle/wall/voidcraft, /area/shuttle/excursion/tether) +"abq" = ( +/obj/machinery/door/airlock/maintenance_hatch{ + frequency = 1379; + icon_state = "door_closed"; + id_tag = "engine_airlock_interior"; + locked = 0; + name = "Engine Airlock Interior"; + req_access = list(11) + }, +/obj/machinery/door/firedoor/glass, +/turf/simulated/floor/plating, +/area/engineering/engine_airlock) "abr" = ( /obj/structure/cable/cyan{ d1 = 1; @@ -491,20 +581,23 @@ /turf/simulated/floor/tiled/techmaint, /area/engineering/engine_smes) "abs" = ( -/obj/structure/cable/cyan{ - d1 = 4; - d2 = 8; - icon_state = "4-8" +/obj/machinery/door/airlock/maintenance_hatch{ + frequency = 1379; + icon_state = "door_closed"; + id_tag = "engine_airlock_exterior"; + locked = 0; + name = "Engine Airlock Exterior"; + req_access = list(11) }, -/obj/machinery/door/airlock/hatch{ - icon_state = "door_locked"; - id_tag = "engine_electrical_maintenance"; - locked = 1; - name = "Electrical Maintenance"; - req_access = list(10) +/obj/machinery/atmospherics/pipe/simple/hidden{ + dir = 4 }, -/turf/simulated/floor/tiled/techmaint, -/area/engineering/engine_smes) +/obj/machinery/atmospherics/pipe/simple/hidden{ + dir = 4 + }, +/obj/machinery/door/firedoor/glass, +/turf/simulated/floor/tiled/steel_grid, +/area/engineering/engine_airlock) "abt" = ( /obj/machinery/atmospherics/unary/vent_scrubber/on, /obj/structure/cable/yellow{ @@ -523,18 +616,16 @@ /turf/simulated/floor/tiled/techmaint, /area/engineering/engine_smes) "abv" = ( -/obj/structure/cable{ - d1 = 4; - d2 = 8; - icon_state = "4-8"; - pixel_x = 0 +/obj/effect/floor_decal/industrial/warning/corner{ + dir = 4 }, -/obj/machinery/door/airlock/maintenance_hatch{ - name = "SMES Access"; - req_access = list(11) +/obj/structure/table/reinforced, +/obj/item/device/pipe_painter, +/obj/machinery/atmospherics/unary/vent_pump/on{ + dir = 4 }, -/turf/simulated/floor/tiled/techmaint, -/area/engineering/engine_smes) +/turf/simulated/floor/tiled, +/area/engineering/atmos/backup) "abw" = ( /obj/structure/cable{ d1 = 1; @@ -592,6 +683,21 @@ /obj/random/maintenance/medical, /turf/simulated/floor, /area/maintenance/station/eng_lower) +"abB" = ( +/obj/effect/floor_decal/steeldecal/steel_decals6{ + dir = 1 + }, +/obj/effect/floor_decal/industrial/warning{ + dir = 1 + }, +/obj/machinery/atmospherics/pipe/manifold/visible/supply{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/manifold/visible/scrubbers{ + dir = 8 + }, +/turf/simulated/floor/tiled, +/area/engineering/atmos/backup) "abC" = ( /turf/simulated/wall, /area/maintenance/station/eng_lower) @@ -604,20 +710,31 @@ /turf/simulated/floor/tiled/techmaint, /area/engineering/engine_smes) "abE" = ( -/obj/structure/cable/yellow{ - d1 = 4; - d2 = 8; - icon_state = "4-8" +/obj/effect/floor_decal/steeldecal/steel_decals6{ + dir = 4 }, -/obj/machinery/door/airlock/hatch{ - icon_state = "door_locked"; - id_tag = "engine_electrical_maintenance"; - locked = 1; - name = "Electrical Maintenance"; - req_access = list(10) +/obj/effect/floor_decal/industrial/warning{ + dir = 1 }, -/turf/simulated/floor/tiled/techmaint, -/area/engineering/engine_smes) +/obj/structure/cable/green{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/obj/machinery/button/remote/blast_door{ + desc = "A remote control-switch for the engine control room blast doors."; + id = "EngineEmitterPortWest2"; + name = "Engine Room Blast Doors"; + pixel_x = 25; + pixel_y = 0; + req_access = null; + req_one_access = list(11,24) + }, +/obj/machinery/atmospherics/unary/vent_scrubber/on{ + dir = 8 + }, +/turf/simulated/floor/tiled, +/area/engineering/atmos/backup) "abF" = ( /obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ dir = 5 @@ -687,23 +804,21 @@ /turf/simulated/shuttle/floor/black, /area/shuttle/excursion/tether) "abL" = ( -/obj/machinery/atmospherics/pipe/simple/hidden/supply{ - dir = 4 - }, -/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ - dir = 4 - }, -/obj/machinery/door/airlock/maintenance_hatch{ - name = "SMES Access"; - req_access = list(11) +/obj/structure/grille, +/obj/machinery/door/firedoor/glass, +/obj/structure/cable/green{ + d2 = 4; + icon_state = "0-4" }, /obj/structure/cable/green{ - d1 = 4; - d2 = 8; - icon_state = "4-8" + d2 = 2; + icon_state = "0-2" }, -/turf/simulated/floor/tiled/techmaint, -/area/engineering/engine_smes) +/obj/structure/window/reinforced/polarized/full{ + id = "pathfinder_office" + }, +/turf/simulated/floor/plating, +/area/tether/station/pathfinder_office) "abM" = ( /obj/machinery/atmospherics/pipe/simple/hidden/supply{ dir = 4 @@ -808,10 +923,9 @@ /turf/simulated/floor, /area/maintenance/station/eng_lower) "abU" = ( -/obj/machinery/camera/network/northern_star, -/obj/effect/floor_decal/steeldecal/steel_decals6{ - dir = 10 - }, +/obj/effect/floor_decal/borderfloorblack, +/obj/effect/floor_decal/industrial/danger, +/obj/machinery/camera/network/exploration, /turf/simulated/floor/tiled, /area/tether/station/excursion_dock) "abV" = ( @@ -835,12 +949,11 @@ /turf/simulated/floor/tiled, /area/hallway/station/atrium) "abY" = ( -/obj/machinery/door/airlock/maintenance_hatch{ - name = "SMES Access"; - req_access = list(11) +/obj/machinery/alarm{ + pixel_y = 22 }, -/turf/simulated/floor/tiled/steel_grid, -/area/engineering/engine_monitoring) +/turf/simulated/floor, +/area/maintenance/station/eng_lower) "abZ" = ( /turf/simulated/wall/r_wall, /area/engineering/atmos/backup) @@ -884,7 +997,7 @@ dir = 4 }, /obj/structure/railing, -/mob/living/simple_animal/fish/koi/poisonous, +/mob/living/simple_mob/animal/passive/fish/koi/poisonous, /turf/simulated/floor/water/pool, /area/hallway/station/atrium) "acg" = ( @@ -894,6 +1007,15 @@ /obj/effect/floor_decal/rust, /turf/simulated/floor, /area/maintenance/station/eng_lower) +"aci" = ( +/obj/machinery/atmospherics/unary/vent_scrubber/on, +/obj/structure/table/standard, +/obj/random/soap, +/obj/machinery/alarm{ + pixel_y = 22 + }, +/turf/simulated/floor/tiled/white, +/area/crew_quarters/sleep/engi_wash) "acj" = ( /obj/effect/decal/cleanable/dirt, /turf/simulated/floor, @@ -901,10 +1023,6 @@ "ack" = ( /turf/simulated/floor, /area/maintenance/station/eng_lower) -"acl" = ( -/obj/random/junk, -/turf/simulated/floor, -/area/maintenance/station/eng_lower) "acm" = ( /turf/simulated/floor/tiled, /area/hallway/station/atrium) @@ -914,6 +1032,18 @@ }, /turf/simulated/floor/tiled, /area/hallway/station/atrium) +"aco" = ( +/obj/structure/disposalpipe/segment, +/obj/structure/cable{ + d1 = 1; + d2 = 2; + icon_state = "1-2"; + pixel_y = 0 + }, +/obj/machinery/door/airlock/maintenance/common, +/obj/machinery/door/firedoor/glass, +/turf/simulated/floor, +/area/hallway/station/atrium) "acp" = ( /obj/structure/disposalpipe/segment{ dir = 4 @@ -942,6 +1072,12 @@ }, /turf/simulated/floor/tiled, /area/hallway/station/atrium) +"acs" = ( +/obj/structure/grille, +/obj/structure/window/reinforced/full, +/obj/machinery/door/firedoor/glass, +/turf/simulated/floor, +/area/hallway/station/atrium) "act" = ( /obj/machinery/atmospherics/unary/vent_pump/on{ dir = 1 @@ -966,6 +1102,17 @@ }, /turf/simulated/floor/tiled, /area/engineering/hallway) +"acv" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, +/obj/structure/cable/green{ + d2 = 4; + icon_state = "0-4" + }, +/obj/effect/decal/cleanable/dirt, +/turf/simulated/floor, +/area/vacant/vacant_restaurant_lower) "acw" = ( /obj/machinery/atmospherics/unary/vent_scrubber/on{ dir = 1 @@ -1060,6 +1207,26 @@ "acL" = ( /turf/simulated/wall/r_wall, /area/engineering/engine_smes) +"acM" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/obj/structure/cable/green{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/obj/effect/decal/cleanable/dirt, +/obj/effect/floor_decal/rust, +/obj/structure/disposalpipe/broken{ + icon_state = "pipe-b"; + dir = 4 + }, +/turf/simulated/floor, +/area/vacant/vacant_restaurant_lower) "acN" = ( /obj/structure/cable/green{ d1 = 4; @@ -1329,6 +1496,24 @@ }, /turf/simulated/floor/tiled, /area/engineering/engine_monitoring) +"adp" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/obj/structure/cable/green{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/obj/effect/floor_decal/rust, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/turf/simulated/floor, +/area/vacant/vacant_restaurant_lower) "adq" = ( /obj/structure/cable/green{ d1 = 2; @@ -1446,7 +1631,7 @@ /obj/structure/railing{ dir = 1 }, -/mob/living/simple_animal/fish/koi/poisonous, +/mob/living/simple_mob/animal/passive/fish/koi/poisonous, /turf/simulated/floor/water/pool, /area/hallway/station/atrium) "adA" = ( @@ -1616,12 +1801,54 @@ }, /turf/simulated/floor/tiled, /area/engineering/engine_monitoring) +"adR" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, +/obj/structure/cable/green{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/obj/machinery/door/airlock/glass, +/obj/machinery/door/firedoor/glass, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/turf/simulated/floor/tiled/steel_grid, +/area/hallway/station/atrium) "adS" = ( /obj/machinery/atmospherics/binary/pump{ dir = 1 }, /turf/simulated/floor/tiled, /area/engineering/atmos/backup) +"adT" = ( +/obj/effect/floor_decal/steeldecal/steel_decals4{ + dir = 6 + }, +/obj/effect/floor_decal/steeldecal/steel_decals4{ + dir = 1 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 10 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 10 + }, +/obj/structure/cable/green{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/turf/simulated/floor/tiled, +/area/hallway/station/atrium) "adU" = ( /obj/structure/cable/green{ d1 = 1; @@ -1668,6 +1895,17 @@ }, /turf/simulated/floor, /area/maintenance/substation/engineering) +"adX" = ( +/obj/structure/cable/green{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/turf/simulated/floor/tiled, +/area/hallway/station/atrium) "adY" = ( /obj/machinery/atmospherics/binary/pump{ dir = 8 @@ -1692,6 +1930,19 @@ /obj/machinery/atmospherics/unary/vent_pump/on, /turf/simulated/floor/tiled/techmaint, /area/engineering/engine_smes) +"aec" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/structure/cable/green{ + d1 = 1; + d2 = 8; + icon_state = "1-8" + }, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/turf/simulated/floor/tiled, +/area/hallway/station/atrium) "aed" = ( /obj/effect/floor_decal/steeldecal/steel_decals10, /obj/effect/floor_decal/steeldecal/steel_decals10{ @@ -1704,6 +1955,13 @@ }, /turf/simulated/floor/tiled, /area/tether/station/explorer_prep) +"aee" = ( +/obj/structure/disposalpipe/junction{ + icon_state = "pipe-j2"; + dir = 4 + }, +/turf/simulated/floor/tiled, +/area/hallway/station/atrium) "aef" = ( /obj/random/junk, /obj/random/trash, @@ -1732,6 +1990,36 @@ }, /turf/simulated/shuttle/wall/voidcraft, /area/shuttle/excursion/tether) +"aek" = ( +/obj/machinery/door/airlock/maintenance/common, +/obj/machinery/atmospherics/pipe/simple/hidden{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/obj/machinery/door/firedoor/glass, +/turf/simulated/floor, +/area/hallway/station/docks) +"ael" = ( +/obj/machinery/atmospherics/pipe/manifold/hidden{ + dir = 8; + icon_state = "map" + }, +/obj/effect/decal/cleanable/dirt, +/obj/machinery/meter{ + frequency = 1443; + id = "dist_aux_meter"; + name = "Distribution Loop" + }, +/obj/machinery/alarm{ + dir = 4; + icon_state = "alarm0"; + pixel_x = -22; + pixel_y = 0 + }, +/turf/simulated/floor, +/area/hallway/station/docks) "aem" = ( /obj/effect/floor_decal/industrial/outline/yellow, /obj/machinery/space_heater, @@ -1777,10 +2065,10 @@ /turf/simulated/shuttle/floor/black, /area/shuttle/excursion/tether) "aeq" = ( -/turf/simulated/shuttle/wall/voidcraft/green{ - hard_corner = 1 - }, -/area/hallway/station/atrium) +/obj/structure/shuttle/engine/propulsion, +/turf/simulated/floor/reinforced, +/turf/simulated/shuttle/plating/airless/carry, +/area/shuttle/excursion/tether) "aer" = ( /obj/effect/floor_decal/borderfloor{ dir = 1 @@ -1792,7 +2080,7 @@ /obj/effect/floor_decal/steeldecal/steel_decals7{ dir = 4 }, -/obj/machinery/camera/network/northern_star{ +/obj/machinery/camera/network/tether{ dir = 2 }, /turf/simulated/floor/tiled, @@ -2035,6 +2323,12 @@ }, /turf/simulated/floor/tiled, /area/engineering/hallway) +"aeF" = ( +/obj/structure/grille, +/obj/structure/window/reinforced/full, +/obj/machinery/door/firedoor/glass, +/turf/simulated/floor, +/area/hallway/station/docks) "aeG" = ( /obj/structure/cable{ d1 = 1; @@ -2049,6 +2343,11 @@ }, /turf/simulated/shuttle/floor/black, /area/shuttle/excursion/tether) +"aeI" = ( +/obj/machinery/door/airlock/multi_tile/glass, +/obj/machinery/door/firedoor/glass, +/turf/simulated/floor, +/area/hallway/station/docks) "aeJ" = ( /obj/effect/floor_decal/steeldecal/steel_decals5, /obj/machinery/light{ @@ -2107,8 +2406,10 @@ /turf/simulated/floor/tiled, /area/tether/station/excursion_dock) "aeO" = ( -/turf/simulated/floor/holofloor/tiled/dark, -/area/hallway/station/atrium) +/turf/simulated/shuttle/wall/voidcraft/green{ + hard_corner = 1 + }, +/area/tether/elevator) "aeP" = ( /obj/machinery/door/firedoor/glass/hidden/steel{ dir = 2 @@ -2128,6 +2429,10 @@ }, /turf/simulated/floor/tiled, /area/engineering/engine_monitoring) +"aeR" = ( +/obj/machinery/door/firedoor/glass, +/turf/simulated/floor, +/area/hallway/station/docks) "aeS" = ( /obj/structure/cable/green{ d1 = 1; @@ -2153,6 +2458,22 @@ }, /turf/simulated/floor/tiled, /area/engineering/engine_monitoring) +"aeT" = ( +/obj/structure/grille, +/obj/machinery/door/firedoor/glass, +/obj/structure/cable/green{ + d2 = 4; + icon_state = "0-4" + }, +/obj/structure/cable/green{ + d2 = 8; + icon_state = "0-8" + }, +/obj/structure/window/reinforced/polarized/full{ + id = "pathfinder_office" + }, +/turf/simulated/floor/plating, +/area/tether/station/pathfinder_office) "aeU" = ( /obj/machinery/door/firedoor/glass/hidden/steel, /turf/simulated/floor/tiled, @@ -2199,6 +2520,18 @@ /obj/item/clothing/head/helmet/space/void/pilot, /turf/simulated/shuttle/floor/black, /area/shuttle/excursion/tether) +"aeZ" = ( +/obj/structure/grille, +/obj/machinery/door/firedoor/glass, +/obj/structure/cable/green{ + d2 = 8; + icon_state = "0-8" + }, +/obj/structure/window/reinforced/polarized/full{ + id = "pathfinder_office" + }, +/turf/simulated/floor/plating, +/area/tether/station/pathfinder_office) "afa" = ( /obj/structure/cable/green{ d1 = 2; @@ -2218,6 +2551,19 @@ }, /turf/simulated/floor/tiled/monotile, /area/tether/station/excursion_dock) +"afb" = ( +/obj/structure/grille, +/obj/machinery/door/firedoor/glass, +/obj/structure/cable/green{ + d2 = 4; + icon_state = "0-4" + }, +/obj/structure/cable/green, +/obj/structure/window/reinforced/polarized/full{ + id = "pathfinder_office" + }, +/turf/simulated/floor/plating, +/area/tether/station/pathfinder_office) "afc" = ( /obj/effect/floor_decal/steeldecal/steel_decals4{ dir = 8 @@ -2279,6 +2625,20 @@ }, /turf/simulated/floor/tiled, /area/engineering/engine_monitoring) +"afg" = ( +/obj/item/clothing/under/gladiator, +/obj/item/clothing/head/helmet/gladiator, +/turf/simulated/floor, +/area/tether/station/pathfinder_office) +"afh" = ( +/obj/structure/grille, +/obj/structure/window/reinforced/full, +/obj/structure/window/reinforced{ + dir = 4 + }, +/obj/machinery/door/firedoor/glass, +/turf/simulated/floor/plating, +/area/tether/station/explorer_meeting) "afi" = ( /obj/machinery/camera/network/engine{ dir = 1 @@ -2328,6 +2688,12 @@ /obj/effect/floor_decal/corner/yellow/bordercorner2, /turf/simulated/floor/tiled, /area/engineering/engine_monitoring) +"afl" = ( +/obj/machinery/alarm{ + pixel_y = 22 + }, +/turf/simulated/floor/tiled, +/area/hallway/station/atrium) "afm" = ( /obj/structure/cable/green{ d1 = 1; @@ -2350,9 +2716,30 @@ /turf/simulated/floor/tiled, /area/engineering/hallway) "afn" = ( -/obj/machinery/door/airlock/maintenance/common, -/turf/simulated/floor, -/area/maintenance/station/eng_lower) +/obj/effect/floor_decal/borderfloor{ + dir = 9 + }, +/obj/effect/floor_decal/corner/lightgrey/border{ + dir = 9 + }, +/obj/machinery/alarm{ + dir = 4; + icon_state = "alarm0"; + pixel_x = -22; + pixel_y = 0 + }, +/turf/simulated/floor/tiled, +/area/hallway/station/atrium) +"afo" = ( +/obj/structure/cable{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/turf/simulated/floor/tiled, +/area/hallway/station/docks) "afp" = ( /obj/machinery/light{ dir = 8; @@ -2362,6 +2749,43 @@ /obj/machinery/portable_atmospherics/canister/phoron, /turf/simulated/floor, /area/engineering/storage) +"afq" = ( +/obj/structure/cable{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/machinery/atmospherics/unary/vent_pump/on{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/turf/simulated/floor/tiled, +/area/hallway/station/docks) +"afr" = ( +/obj/effect/floor_decal/steeldecal/steel_decals7{ + dir = 9 + }, +/obj/effect/floor_decal/borderfloor{ + dir = 4 + }, +/obj/effect/floor_decal/corner/lightgrey/border{ + dir = 4 + }, +/obj/effect/floor_decal/steeldecal/steel_decals7{ + dir = 10 + }, +/obj/machinery/alarm{ + dir = 8; + pixel_x = 25; + pixel_y = 0 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 10 + }, +/turf/simulated/floor/tiled, +/area/hallway/station/docks) "afs" = ( /obj/effect/floor_decal/rust, /obj/machinery/light{ @@ -2373,12 +2797,120 @@ /obj/effect/floor_decal/industrial/outline/yellow, /turf/simulated/floor, /area/engineering/storage) -"afy" = ( -/obj/structure/sign/deck1, -/turf/simulated/shuttle/wall/voidcraft/green{ - hard_corner = 1 +"aft" = ( +/obj/structure/cable{ + d1 = 1; + d2 = 2; + icon_state = "1-2" }, -/area/hallway/station/atrium) +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/structure/cable{ + icon_state = "1-8" + }, +/obj/machinery/atmospherics/unary/vent_scrubber/on{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/turf/simulated/floor/tiled, +/area/hallway/station/docks) +"afu" = ( +/obj/effect/floor_decal/steeldecal/steel_decals7{ + dir = 9 + }, +/obj/machinery/status_display{ + layer = 4; + pixel_x = 32; + pixel_y = 0 + }, +/obj/effect/floor_decal/borderfloor{ + dir = 4 + }, +/obj/effect/floor_decal/corner/lightgrey/border{ + dir = 4 + }, +/obj/effect/floor_decal/steeldecal/steel_decals7{ + dir = 10 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 10 + }, +/turf/simulated/floor/tiled, +/area/hallway/station/docks) +"afv" = ( +/obj/structure/grille, +/obj/structure/cable/green{ + d2 = 4; + icon_state = "0-4" + }, +/obj/machinery/door/firedoor/glass, +/obj/machinery/door/blast/regular{ + density = 0; + dir = 4; + icon_state = "pdoor0"; + id = "bridge blast"; + name = "Bridge Blast Doors"; + opacity = 0 + }, +/obj/structure/window/reinforced/full, +/obj/structure/window/reinforced{ + dir = 1 + }, +/turf/simulated/floor/plating, +/area/bridge) +"afw" = ( +/obj/structure/grille, +/obj/structure/cable/green{ + d2 = 8; + icon_state = "0-8" + }, +/obj/structure/cable/green{ + d2 = 4; + icon_state = "0-4" + }, +/obj/machinery/door/firedoor/glass, +/obj/machinery/door/blast/regular{ + density = 0; + dir = 4; + icon_state = "pdoor0"; + id = "bridge blast"; + name = "Bridge Blast Doors"; + opacity = 0 + }, +/obj/structure/window/reinforced/full, +/obj/structure/window/reinforced{ + dir = 1 + }, +/turf/simulated/floor/plating, +/area/bridge) +"afx" = ( +/obj/structure/grille, +/obj/structure/cable/green{ + d2 = 8; + icon_state = "0-8" + }, +/obj/structure/cable/green{ + d2 = 2; + icon_state = "0-2" + }, +/obj/machinery/door/firedoor/glass, +/obj/machinery/door/blast/regular{ + density = 0; + dir = 4; + icon_state = "pdoor0"; + id = "bridge blast"; + name = "Bridge Blast Doors"; + opacity = 0 + }, +/obj/structure/window/reinforced/full, +/obj/structure/window/reinforced{ + dir = 1 + }, +/turf/simulated/floor/plating, +/area/bridge) +"afy" = ( +/turf/simulated/floor/holofloor/tiled/dark, +/area/tether/elevator) "afz" = ( /obj/machinery/door/firedoor/glass/hidden/steel{ dir = 1 @@ -2389,11 +2921,24 @@ /obj/machinery/hologram/holopad, /turf/simulated/floor/tiled, /area/hallway/station/atrium) +"afB" = ( +/obj/structure/cable{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/obj/machinery/atmospherics/pipe/simple/hidden{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/manifold4w/hidden/supply, +/obj/machinery/atmospherics/pipe/manifold4w/hidden/scrubbers, +/turf/simulated/floor/tiled, +/area/hallway/station/docks) "afC" = ( /turf/simulated/wall/r_wall, /area/hallway/station/atrium) "afD" = ( -/obj/machinery/camera/network/northern_star{ +/obj/machinery/camera/network/tether{ dir = 4 }, /obj/effect/floor_decal/borderfloor{ @@ -2436,6 +2981,25 @@ /obj/structure/closet/emcloset, /turf/simulated/floor/tiled, /area/hallway/station/atrium) +"afG" = ( +/obj/effect/floor_decal/steeldecal/steel_decals7{ + dir = 9 + }, +/obj/machinery/atmospherics/pipe/simple/hidden{ + dir = 4 + }, +/obj/effect/floor_decal/borderfloor{ + dir = 4 + }, +/obj/effect/floor_decal/corner/lightgrey/border{ + dir = 4 + }, +/obj/effect/floor_decal/steeldecal/steel_decals7{ + dir = 10 + }, +/obj/machinery/atmospherics/pipe/manifold/hidden/supply, +/turf/simulated/floor/tiled, +/area/hallway/station/docks) "afH" = ( /obj/structure/cable/green{ d1 = 4; @@ -2466,6 +3030,25 @@ }, /turf/simulated/floor/tiled, /area/hallway/station/atrium) +"afK" = ( +/obj/effect/floor_decal/steeldecal/steel_decals7{ + dir = 9 + }, +/obj/effect/floor_decal/borderfloor{ + dir = 4 + }, +/obj/effect/floor_decal/corner/blue/border{ + dir = 4 + }, +/obj/effect/floor_decal/steeldecal/steel_decals7{ + dir = 10 + }, +/obj/effect/floor_decal/steeldecal/steel_decals4, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/turf/simulated/floor/tiled, +/area/bridge_hallway) "afL" = ( /turf/simulated/floor/tiled, /area/engineering/engine_monitoring) @@ -2543,7 +3126,6 @@ /turf/simulated/floor/tiled/steel_grid, /area/engineering/engine_monitoring) "afT" = ( -/obj/structure/table/woodentable, /obj/effect/floor_decal/borderfloor{ dir = 4 }, @@ -2551,6 +3133,7 @@ icon_state = "bordercolor"; dir = 4 }, +/obj/structure/table/woodentable, /obj/item/device/camera, /turf/simulated/floor/tiled, /area/tether/station/explorer_meeting) @@ -2562,10 +3145,29 @@ /turf/simulated/floor/tiled, /area/engineering/workshop) "afV" = ( -/obj/structure/shuttle/engine/propulsion, -/turf/simulated/floor/reinforced, -/turf/simulated/shuttle/plating/airless/carry, -/area/shuttle/excursion/tether) +/obj/effect/floor_decal/steeldecal/steel_decals7{ + dir = 8 + }, +/obj/effect/floor_decal/steeldecal/steel_decals7{ + dir = 1 + }, +/obj/effect/floor_decal/steeldecal/steel_decals5, +/obj/effect/floor_decal/steeldecal/steel_decals6{ + dir = 5 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 10 + }, +/obj/machinery/alarm{ + pixel_y = 22 + }, +/turf/simulated/floor/tiled, +/area/bridge_hallway) +"afW" = ( +/obj/structure/closet/secure_closet/pilot, +/obj/machinery/camera/network/exploration, +/turf/simulated/floor/tiled, +/area/tether/station/explorer_prep) "afX" = ( /obj/structure/cable/green{ d1 = 1; @@ -2586,6 +3188,10 @@ }, /turf/simulated/floor/tiled, /area/engineering/hallway) +"afY" = ( +/obj/item/weapon/material/twohanded/spear/foam, +/turf/simulated/floor, +/area/tether/station/pathfinder_office) "afZ" = ( /obj/effect/floor_decal/steeldecal/steel_decals7{ dir = 10 @@ -2601,16 +3207,29 @@ }, /turf/simulated/floor/tiled, /area/engineering/hallway) +"aga" = ( +/obj/item/weapon/storage/fancy/crayons{ + desc = "Special food for special warriors of the expedition force."; + name = "spearman ration" + }, +/turf/simulated/floor, +/area/tether/station/pathfinder_office) "agb" = ( /obj/structure/sign/department/eng, /turf/simulated/wall/r_wall, /area/hallway/station/atrium) -"agd" = ( -/obj/effect/floor_decal/borderfloor{ - dir = 9 +"agc" = ( +/obj/structure/grille, +/obj/structure/cable/green, +/obj/machinery/door/firedoor/glass, +/obj/structure/window/reinforced/polarized/full{ + id = "ce_office" }, -/obj/effect/floor_decal/corner/lightgrey/border{ - dir = 9 +/turf/simulated/floor, +/area/crew_quarters/heads/chief) +"agd" = ( +/obj/effect/landmark{ + name = "lightsout" }, /turf/simulated/floor/tiled, /area/hallway/station/atrium) @@ -2667,6 +3286,197 @@ }, /turf/simulated/floor/tiled, /area/hallway/station/atrium) +"agi" = ( +/obj/structure/grille, +/obj/machinery/door/firedoor/glass, +/obj/machinery/door/blast/regular{ + density = 0; + dir = 1; + icon_state = "pdoor0"; + id = "englockdown"; + name = "Engineering Lockdown"; + opacity = 0 + }, +/obj/structure/window/reinforced/polarized/full{ + id = "ce_office" + }, +/obj/structure/window/reinforced/polarized{ + dir = 8; + id = "ce_office" + }, +/turf/simulated/floor, +/area/crew_quarters/heads/chief) +"agj" = ( +/obj/structure/grille, +/obj/structure/cable/green{ + d2 = 4; + icon_state = "0-4" + }, +/obj/structure/cable/green{ + d2 = 8; + icon_state = "0-8" + }, +/obj/structure/cable/green{ + d2 = 2; + icon_state = "0-2" + }, +/obj/machinery/door/firedoor/glass, +/obj/structure/window/reinforced/polarized/full{ + id = "hop_office" + }, +/obj/structure/window/reinforced/polarized{ + dir = 1; + id = "hop_office" + }, +/turf/simulated/floor/plating, +/area/crew_quarters/heads/hop) +"agk" = ( +/obj/structure/grille, +/obj/structure/cable/green{ + d2 = 4; + icon_state = "0-4" + }, +/obj/structure/cable/green{ + d2 = 8; + icon_state = "0-8" + }, +/obj/machinery/door/firedoor/glass, +/obj/structure/window/reinforced/polarized/full{ + id = "hop_office" + }, +/obj/structure/window/reinforced/polarized{ + dir = 1; + id = "hop_office" + }, +/turf/simulated/floor/plating, +/area/crew_quarters/heads/hop) +"agl" = ( +/obj/structure/grille, +/obj/structure/cable/green{ + d2 = 8; + icon_state = "0-8" + }, +/obj/machinery/door/firedoor/glass, +/obj/structure/window/reinforced/polarized/full{ + id = "hop_office" + }, +/obj/structure/window/reinforced/polarized{ + dir = 1; + id = "hop_office" + }, +/turf/simulated/floor/plating, +/area/crew_quarters/heads/hop) +"agm" = ( +/obj/structure/grille, +/obj/machinery/door/firedoor/glass, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/structure/cable/green{ + d2 = 4; + icon_state = "0-4" + }, +/obj/structure/window/reinforced/polarized/full{ + id = "hop_office" + }, +/turf/simulated/floor/plating, +/area/crew_quarters/heads/hop) +"agn" = ( +/obj/structure/grille, +/obj/machinery/door/firedoor/glass, +/obj/structure/cable/green{ + d2 = 4; + icon_state = "0-4" + }, +/obj/structure/window/reinforced/polarized/full{ + id = "hop_office" + }, +/turf/simulated/floor/plating, +/area/crew_quarters/heads/hop) +"ago" = ( +/obj/structure/grille, +/obj/machinery/door/firedoor/border_only, +/obj/structure/window/reinforced/polarized/full{ + id = "library_study" + }, +/turf/simulated/floor/plating, +/area/library) +"agp" = ( +/obj/machinery/button/windowtint{ + id = "library_study"; + pixel_x = 26; + pixel_y = -26 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/turf/simulated/floor/carpet, +/area/library) +"agq" = ( +/obj/machinery/atmospherics/unary/vent_pump/on{ + dir = 4 + }, +/obj/machinery/camera/network/exploration, +/turf/simulated/floor/tiled/monotile, +/area/tether/station/excursion_dock) +"agr" = ( +/obj/effect/floor_decal/steeldecal/steel_decals6{ + dir = 10 + }, +/obj/machinery/camera/network/exploration, +/turf/simulated/floor/tiled, +/area/tether/station/excursion_dock) +"ags" = ( +/obj/machinery/atmospherics/unary/vent_pump/on{ + dir = 1 + }, +/obj/machinery/camera/network/exploration{ + dir = 1 + }, +/turf/simulated/floor/tiled, +/area/tether/station/pathfinder_office) +"agt" = ( +/obj/machinery/atmospherics/unary/vent_pump/on{ + dir = 8 + }, +/obj/machinery/camera/network/exploration, +/turf/simulated/floor/tiled/monotile, +/area/tether/station/excursion_dock) +"agu" = ( +/obj/structure/sign/deck1, +/turf/simulated/shuttle/wall/voidcraft/green{ + hard_corner = 1 + }, +/area/tether/elevator) +"agv" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, +/obj/machinery/camera/network/exploration{ + dir = 1 + }, +/turf/simulated/floor/tiled/monotile, +/area/tether/station/excursion_dock) +"agw" = ( +/obj/structure/disposalpipe/segment, +/obj/effect/floor_decal/borderfloor{ + dir = 8 + }, +/obj/effect/floor_decal/corner/purple/border{ + icon_state = "bordercolor"; + dir = 8 + }, +/obj/structure/extinguisher_cabinet{ + dir = 4; + icon_state = "extinguisher_closed"; + pixel_x = -30 + }, +/obj/machinery/camera/network/exploration{ + dir = 4 + }, +/turf/simulated/floor/tiled, +/area/tether/station/explorer_meeting) "agx" = ( /obj/structure/bed/chair/comfy/blue{ icon_state = "comfychair_preview"; @@ -2674,11 +3484,20 @@ }, /turf/simulated/shuttle/floor/black, /area/shuttle/excursion/tether) -"agE" = ( -/obj/structure/grille, -/obj/structure/window/reinforced/full, -/turf/simulated/floor, -/area/hallway/station/atrium) +"agy" = ( +/obj/effect/floor_decal/borderfloor{ + dir = 4 + }, +/obj/effect/floor_decal/corner/purple/border{ + icon_state = "bordercolor"; + dir = 4 + }, +/obj/machinery/photocopier, +/obj/machinery/camera/network/exploration{ + dir = 8 + }, +/turf/simulated/floor/tiled, +/area/tether/station/explorer_meeting) "agF" = ( /obj/effect/floor_decal/industrial/warning{ icon_state = "warning"; @@ -2903,7 +3722,7 @@ dir = 4 }, /obj/effect/floor_decal/steeldecal/steel_decals7, -/obj/machinery/camera/network/northern_star, +/obj/machinery/camera/network/tether, /obj/structure/disposalpipe/segment{ dir = 4 }, @@ -2947,34 +3766,6 @@ }, /turf/simulated/floor/plating, /area/engineering/engine_airlock) -"ahu" = ( -/obj/machinery/door/airlock/maintenance_hatch{ - frequency = 1379; - icon_state = "door_closed"; - id_tag = "engine_airlock_interior"; - locked = 0; - name = "Engine Airlock Interior"; - req_access = list(11) - }, -/turf/simulated/floor/plating, -/area/engineering/engine_airlock) -"ahw" = ( -/obj/machinery/door/airlock/maintenance_hatch{ - frequency = 1379; - icon_state = "door_closed"; - id_tag = "engine_airlock_exterior"; - locked = 0; - name = "Engine Airlock Exterior"; - req_access = list(11) - }, -/obj/machinery/atmospherics/pipe/simple/hidden{ - dir = 4 - }, -/obj/machinery/atmospherics/pipe/simple/hidden{ - dir = 4 - }, -/turf/simulated/floor/tiled/steel_grid, -/area/engineering/engine_airlock) "ahy" = ( /obj/effect/floor_decal/industrial/warning{ icon_state = "warning"; @@ -3770,13 +4561,6 @@ /obj/machinery/door/firedoor/glass, /turf/simulated/floor, /area/maintenance/station/eng_lower) -"akC" = ( -/obj/machinery/firealarm{ - dir = 8; - pixel_x = -26 - }, -/turf/simulated/floor/tiled, -/area/tether/station/excursion_dock) "akI" = ( /obj/machinery/atmospherics/pipe/simple/hidden/supply, /obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, @@ -4075,7 +4859,6 @@ dir = 8 }, /obj/machinery/alarm{ - frequency = 1441; pixel_y = 22 }, /obj/vehicle/train/engine, @@ -4387,29 +5170,6 @@ }, /turf/simulated/floor/tiled/monotile, /area/tether/station/explorer_prep) -"amX" = ( -/obj/effect/floor_decal/steeldecal/steel_decals6{ - dir = 4 - }, -/obj/effect/floor_decal/industrial/warning{ - dir = 1 - }, -/obj/structure/cable/green{ - d1 = 1; - d2 = 2; - icon_state = "1-2" - }, -/obj/machinery/button/remote/blast_door{ - desc = "A remote control-switch for the engine control room blast doors."; - id = "EngineEmitterPortWest2"; - name = "Engine Room Blast Doors"; - pixel_x = 25; - pixel_y = 0; - req_access = null; - req_one_access = list(11,24) - }, -/turf/simulated/floor/tiled, -/area/engineering/atmos/backup) "amY" = ( /obj/structure/table/reinforced, /obj/item/weapon/storage/firstaid/regular, @@ -4768,17 +5528,6 @@ }, /turf/simulated/shuttle/floor/black, /area/shuttle/excursion/tether) -"aoe" = ( -/obj/effect/floor_decal/steeldecal/steel_decals6{ - dir = 1 - }, -/obj/effect/floor_decal/industrial/warning{ - dir = 1 - }, -/obj/machinery/atmospherics/pipe/simple/visible/supply, -/obj/machinery/atmospherics/pipe/simple/visible/scrubbers, -/turf/simulated/floor/tiled, -/area/engineering/atmos/backup) "aof" = ( /obj/machinery/power/breakerbox/activated{ RCon_tag = "Civilian Substation Bypass" @@ -5026,22 +5775,10 @@ dir = 1 }, /area/holodeck_control) -"aoW" = ( -/obj/effect/floor_decal/industrial/warning/corner{ - dir = 4 - }, -/obj/structure/table/reinforced, -/obj/item/device/pipe_painter, -/turf/simulated/floor/tiled, -/area/engineering/atmos/backup) "aoX" = ( /obj/structure/table/reinforced, -/obj/item/stack/material/steel{ - amount = 50 - }, -/obj/item/stack/material/glass{ - amount = 50 - }, +/obj/fiftyspawner/steel, +/obj/fiftyspawner/glass, /turf/simulated/floor/tiled, /area/engineering/atmos/backup) "aoZ" = ( @@ -5861,7 +6598,7 @@ /obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ dir = 4 }, -/obj/machinery/camera/network/northern_star{ +/obj/machinery/camera/network/tether{ dir = 1 }, /obj/effect/floor_decal/borderfloor, @@ -7774,7 +8511,7 @@ /obj/effect/floor_decal/industrial/loading{ dir = 1 }, -/obj/machinery/camera/network/northern_star{ +/obj/machinery/camera/network/tether{ dir = 4 }, /obj/structure/disposalpipe/segment, @@ -7786,6 +8523,9 @@ /turf/simulated/floor/plating, /area/crew_quarters/heads/hop) "awH" = ( +/obj/machinery/light{ + dir = 4 + }, /obj/effect/floor_decal/industrial/loading, /turf/simulated/floor/tiled, /area/crew_quarters/heads/hop) @@ -8119,6 +8859,7 @@ /obj/effect/floor_decal/industrial/warning/corner{ dir = 8 }, +/obj/structure/stasis_cage, /turf/simulated/shuttle/floor/black, /area/shuttle/excursion/tether) "axM" = ( @@ -8132,21 +8873,11 @@ /area/maintenance/station/bridge) "axO" = ( /obj/structure/table/reinforced, -/obj/item/stack/material/glass{ - amount = 50 - }, -/obj/item/stack/material/glass{ - amount = 50 - }, -/obj/item/stack/material/glass{ - amount = 50 - }, -/obj/item/stack/material/glass{ - amount = 50 - }, -/obj/item/stack/material/glass{ - amount = 50 - }, +/obj/fiftyspawner/glass, +/obj/fiftyspawner/glass, +/obj/fiftyspawner/glass, +/obj/fiftyspawner/glass, +/obj/fiftyspawner/glass, /obj/machinery/alarm{ dir = 1; icon_state = "alarm0"; @@ -8157,21 +8888,11 @@ /area/engineering/workshop) "axP" = ( /obj/structure/table/reinforced, -/obj/item/stack/material/steel{ - amount = 50 - }, -/obj/item/stack/material/steel{ - amount = 50 - }, -/obj/item/stack/material/steel{ - amount = 50 - }, -/obj/item/stack/material/steel{ - amount = 50 - }, -/obj/item/stack/material/steel{ - amount = 50 - }, +/obj/fiftyspawner/steel, +/obj/fiftyspawner/steel, +/obj/fiftyspawner/steel, +/obj/fiftyspawner/steel, +/obj/fiftyspawner/steel, /obj/machinery/firealarm{ dir = 1; pixel_y = -24 @@ -8393,37 +9114,6 @@ }, /turf/simulated/floor/tiled, /area/hallway/station/docks) -"ayF" = ( -/obj/effect/floor_decal/steeldecal/steel_decals7{ - dir = 9 - }, -/obj/machinery/atmospherics/pipe/simple/hidden{ - dir = 4 - }, -/obj/machinery/atmospherics/pipe/simple/hidden/supply{ - dir = 4 - }, -/obj/effect/floor_decal/borderfloor{ - dir = 4 - }, -/obj/effect/floor_decal/corner/lightgrey/border{ - dir = 4 - }, -/obj/effect/floor_decal/steeldecal/steel_decals7{ - dir = 10 - }, -/turf/simulated/floor/tiled, -/area/hallway/station/docks) -"ayG" = ( -/obj/machinery/door/airlock/maintenance/common, -/obj/machinery/atmospherics/pipe/simple/hidden{ - dir = 4 - }, -/obj/machinery/atmospherics/pipe/simple/hidden/supply{ - dir = 4 - }, -/turf/simulated/floor, -/area/hallway/station/docks) "ayK" = ( /obj/machinery/computer/rcon, /turf/simulated/floor/tiled/dark, @@ -8646,27 +9336,8 @@ }, /turf/simulated/floor/tiled/dark, /area/bridge) -"azv" = ( -/obj/effect/floor_decal/steeldecal/steel_decals7{ - dir = 9 - }, -/obj/effect/floor_decal/borderfloor{ - dir = 4 - }, -/obj/effect/floor_decal/corner/blue/border{ - dir = 4 - }, -/obj/effect/floor_decal/steeldecal/steel_decals7{ - dir = 10 - }, -/obj/effect/floor_decal/steeldecal/steel_decals4, -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/turf/simulated/floor/tiled, -/area/bridge_hallway) "azy" = ( -/mob/living/simple_animal/corgi/Ian, +/mob/living/simple_mob/animal/passive/dog/corgi/Ian, /turf/simulated/floor/carpet, /area/crew_quarters/heads/hop) "azz" = ( @@ -8775,7 +9446,7 @@ /area/storage/tools) "azQ" = ( /obj/machinery/atmospherics/pipe/simple/hidden, -/obj/machinery/camera/network/northern_star{ +/obj/machinery/camera/network/tether{ dir = 5 }, /obj/effect/floor_decal/borderfloor{ @@ -9008,7 +9679,7 @@ dir = 2; icon_state = "pipe-c" }, -/obj/machinery/camera/network/northern_star, +/obj/machinery/camera/network/tether, /obj/effect/floor_decal/borderfloor{ dir = 1 }, @@ -9240,7 +9911,7 @@ /obj/machinery/atmospherics/pipe/simple/hidden/supply{ dir = 4 }, -/obj/machinery/camera/network/northern_star, +/obj/machinery/camera/network/tether, /obj/effect/floor_decal/borderfloor{ dir = 1 }, @@ -9559,7 +10230,7 @@ /area/crew_quarters/sleep/engi_wash) "aAX" = ( /obj/structure/bed/chair, -/obj/machinery/camera/network/northern_star, +/obj/machinery/camera/network/tether, /turf/simulated/floor/tiled, /area/hallway/station/docks) "aAZ" = ( @@ -9948,7 +10619,7 @@ /turf/simulated/floor/tiled, /area/hallway/station/atrium) "aCc" = ( -/obj/machinery/camera/network/northern_star{ +/obj/machinery/camera/network/tether{ dir = 9 }, /turf/simulated/floor/tiled, @@ -10014,22 +10685,6 @@ }, /turf/simulated/floor/tiled, /area/bridge_hallway) -"aCr" = ( -/obj/effect/floor_decal/steeldecal/steel_decals7{ - dir = 8 - }, -/obj/effect/floor_decal/steeldecal/steel_decals7{ - dir = 1 - }, -/obj/effect/floor_decal/steeldecal/steel_decals5, -/obj/effect/floor_decal/steeldecal/steel_decals6{ - dir = 5 - }, -/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ - dir = 10 - }, -/turf/simulated/floor/tiled, -/area/bridge_hallway) "aCs" = ( /obj/effect/floor_decal/steeldecal/steel_decals7{ dir = 8 @@ -10474,12 +11129,6 @@ /obj/machinery/door/firedoor/glass, /turf/simulated/floor/plating, /area/tether/station/dock_one) -"aDI" = ( -/obj/machinery/atmospherics/unary/vent_scrubber/on, -/obj/structure/table/standard, -/obj/random/soap, -/turf/simulated/floor/tiled/white, -/area/crew_quarters/sleep/engi_wash) "aDJ" = ( /obj/machinery/atmospherics/pipe/simple/hidden, /turf/simulated/floor/tiled, @@ -10588,7 +11237,7 @@ /obj/effect/floor_decal/steeldecal/steel_decals7{ dir = 6 }, -/obj/machinery/camera/network/northern_star{ +/obj/machinery/camera/network/tether{ dir = 4 }, /obj/structure/disposalpipe/segment, @@ -10732,7 +11381,7 @@ /obj/machinery/atmospherics/pipe/simple/hidden/supply{ dir = 4 }, -/mob/living/simple_animal/fox/fluff/Renault, +/mob/living/simple_mob/animal/passive/fox/renault, /turf/simulated/floor/wood, /area/crew_quarters/captain) "aEu" = ( @@ -11134,7 +11783,7 @@ }, /obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, /obj/machinery/atmospherics/pipe/simple/hidden/supply, -/obj/machinery/camera/network/northern_star{ +/obj/machinery/camera/network/tether{ dir = 9 }, /obj/effect/floor_decal/borderfloor{ @@ -11601,7 +12250,7 @@ "aHs" = ( /obj/machinery/door/firedoor/glass/hidden/steel, /obj/machinery/atmospherics/pipe/simple/hidden, -/obj/machinery/camera/network/northern_star{ +/obj/machinery/camera/network/tether{ dir = 4 }, /turf/simulated/floor/tiled, @@ -11928,9 +12577,6 @@ }, /turf/simulated/floor, /area/maintenance/station/eng_lower) -"aIr" = ( -/turf/space, -/area/shuttle/tether/station) "aIs" = ( /obj/effect/floor_decal/borderfloor{ dir = 8 @@ -11979,10 +12625,13 @@ /turf/simulated/floor/tiled, /area/tether/station/dock_one) "aIA" = ( -/obj/machinery/computer/shuttle_control/tether_backup{ - dir = 4 +/obj/machinery/door/firedoor/glass, +/obj/structure/grille, +/obj/structure/window/reinforced/full, +/obj/structure/window/reinforced{ + dir = 8 }, -/turf/simulated/floor/tiled, +/turf/simulated/floor/plating, /area/tether/station/dock_two) "aIC" = ( /obj/machinery/bookbinder{ @@ -12016,6 +12665,9 @@ /area/library_conference_room) "aIM" = ( /obj/effect/floor_decal/sign/dock/one, +/obj/machinery/atmospherics/pipe/simple/hidden{ + dir = 4 + }, /turf/simulated/floor/tiled, /area/tether/station/dock_one) "aIO" = ( @@ -12026,7 +12678,7 @@ /turf/simulated/floor/tiled, /area/tether/station/dock_two) "aIS" = ( -/obj/machinery/camera/network/northern_star{ +/obj/machinery/camera/network/tether{ dir = 9 }, /turf/simulated/floor/tiled, @@ -12134,7 +12786,6 @@ }, /obj/effect/floor_decal/steeldecal/steel_decals7, /obj/machinery/alarm{ - frequency = 1441; pixel_y = 22 }, /obj/machinery/atmospherics/pipe/simple/hidden/universal{ @@ -13162,17 +13813,6 @@ }, /turf/simulated/floor/tiled, /area/engineering/engineering_airlock) -"aNg" = ( -/obj/structure/grille, -/obj/structure/cable/green, -/obj/machinery/door/firedoor/glass, -/obj/structure/window/reinforced/polarized{ - dir = 10; - icon_state = "fwindow"; - id = "ce_office" - }, -/turf/simulated/floor, -/area/crew_quarters/heads/chief) "aNo" = ( /obj/structure/cable/green{ d1 = 1; @@ -13400,23 +14040,6 @@ /obj/item/weapon/rig/ce/equipped, /turf/simulated/floor/tiled, /area/crew_quarters/heads/chief) -"aQc" = ( -/obj/structure/grille, -/obj/structure/window/reinforced/full, -/obj/structure/window/reinforced{ - dir = 8 - }, -/obj/machinery/door/firedoor/glass, -/obj/machinery/door/blast/regular{ - density = 0; - dir = 1; - icon_state = "pdoor0"; - id = "englockdown"; - name = "Engineering Lockdown"; - opacity = 0 - }, -/turf/simulated/floor, -/area/crew_quarters/heads/chief) "aQh" = ( /obj/structure/cable/green{ d1 = 4; @@ -14476,17 +15099,6 @@ }, /turf/simulated/floor, /area/engineering/foyer) -"aYs" = ( -/obj/structure/disposalpipe/segment, -/obj/structure/cable{ - d1 = 1; - d2 = 2; - icon_state = "1-2"; - pixel_y = 0 - }, -/obj/machinery/door/airlock/maintenance/common, -/turf/simulated/floor, -/area/hallway/station/atrium) "aYt" = ( /obj/effect/floor_decal/borderfloor{ dir = 1 @@ -14722,74 +15334,6 @@ /obj/machinery/telecomms/relay/preset/tether/station_mid, /turf/simulated/floor/tiled/techfloor, /area/crew_quarters/heads/chief) -"bbd" = ( -/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ - dir = 4 - }, -/obj/machinery/atmospherics/pipe/simple/hidden/supply{ - dir = 4 - }, -/obj/structure/cable/green{ - d1 = 4; - d2 = 8; - icon_state = "4-8" - }, -/obj/effect/decal/cleanable/dirt, -/obj/effect/floor_decal/rust, -/turf/simulated/floor, -/area/vacant/vacant_restaurant_lower) -"bbl" = ( -/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ - dir = 4 - }, -/obj/structure/cable/green{ - d2 = 4; - icon_state = "0-4" - }, -/obj/effect/decal/cleanable/dirt, -/obj/machinery/atmospherics/pipe/cap/hidden/supply{ - dir = 4 - }, -/turf/simulated/floor, -/area/vacant/vacant_restaurant_lower) -"bbn" = ( -/obj/machinery/atmospherics/pipe/simple/hidden/supply{ - dir = 4 - }, -/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ - dir = 4 - }, -/obj/structure/cable/green{ - d1 = 4; - d2 = 8; - icon_state = "4-8" - }, -/obj/machinery/door/airlock/glass, -/turf/simulated/floor/tiled/steel_grid, -/area/hallway/station/atrium) -"bbq" = ( -/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ - dir = 4 - }, -/obj/machinery/atmospherics/pipe/simple/hidden/supply{ - dir = 4 - }, -/obj/structure/cable/green{ - d1 = 4; - d2 = 8; - icon_state = "4-8" - }, -/obj/effect/floor_decal/rust, -/turf/simulated/floor, -/area/vacant/vacant_restaurant_lower) -"bbr" = ( -/obj/structure/cable/green{ - d1 = 4; - d2 = 8; - icon_state = "4-8" - }, -/turf/simulated/floor/tiled, -/area/hallway/station/atrium) "bbs" = ( /obj/structure/bed/chair/office/dark{ dir = 4 @@ -14799,26 +15343,6 @@ }, /turf/simulated/floor/tiled, /area/engineering/foyer) -"bbw" = ( -/obj/effect/floor_decal/steeldecal/steel_decals4{ - dir = 6 - }, -/obj/effect/floor_decal/steeldecal/steel_decals4{ - dir = 1 - }, -/obj/machinery/atmospherics/pipe/simple/hidden/supply{ - dir = 10 - }, -/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ - dir = 10 - }, -/obj/structure/cable/green{ - d1 = 4; - d2 = 8; - icon_state = "4-8" - }, -/turf/simulated/floor/tiled, -/area/hallway/station/atrium) "bbx" = ( /obj/machinery/atmospherics/unary/vent_scrubber/on{ dir = 4 @@ -14831,16 +15355,6 @@ }, /turf/simulated/floor/tiled, /area/engineering/foyer) -"bbz" = ( -/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, -/obj/machinery/atmospherics/pipe/simple/hidden/supply, -/obj/structure/cable/green{ - d1 = 1; - d2 = 8; - icon_state = "1-8" - }, -/turf/simulated/floor/tiled, -/area/hallway/station/atrium) "bbE" = ( /obj/structure/disposalpipe/segment{ dir = 4 @@ -15076,7 +15590,7 @@ icon_state = "4-8"; pixel_x = 0 }, -/obj/machinery/camera/network/northern_star{ +/obj/machinery/camera/network/tether{ dir = 1 }, /obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ @@ -15696,7 +16210,10 @@ /obj/effect/floor_decal/steeldecal/steel_decals7{ dir = 1 }, -/obj/machinery/light, +/obj/machinery/computer/id_restorer{ + dir = 1; + pixel_y = -28 + }, /turf/simulated/floor/tiled, /area/hallway/station/atrium) "beH" = ( @@ -15893,7 +16410,7 @@ /area/hallway/station/atrium) "bfT" = ( /obj/structure/disposalpipe/segment, -/mob/living/simple_animal/snake/Noodle, +/mob/living/simple_mob/animal/passive/snake/noodle, /turf/simulated/floor/carpet/oracarpet, /area/crew_quarters/heads/chief) "bfW" = ( @@ -16086,7 +16603,7 @@ pixel_x = 25; pixel_y = 0 }, -/obj/machinery/camera/network/northern_star, +/obj/machinery/camera/network/tether, /obj/effect/floor_decal/borderfloor{ dir = 1; icon_state = "borderfloor"; @@ -16368,54 +16885,6 @@ }, /turf/simulated/floor/tiled/monotile, /area/bridge_hallway) -"bju" = ( -/obj/structure/grille, -/obj/structure/cable/green{ - d2 = 4; - icon_state = "0-4" - }, -/obj/structure/cable/green{ - d2 = 8; - icon_state = "0-8" - }, -/obj/structure/cable/green{ - d2 = 2; - icon_state = "0-2" - }, -/obj/machinery/door/firedoor/glass, -/obj/structure/window/reinforced/polarized{ - dir = 10; - icon_state = "fwindow"; - id = "hop_office" - }, -/obj/structure/window/reinforced/polarized{ - dir = 1; - id = "hop_office" - }, -/turf/simulated/floor/plating, -/area/crew_quarters/heads/hop) -"bjz" = ( -/obj/structure/grille, -/obj/structure/cable/green{ - d2 = 4; - icon_state = "0-4" - }, -/obj/structure/cable/green{ - d2 = 8; - icon_state = "0-8" - }, -/obj/machinery/door/firedoor/glass, -/obj/structure/window/reinforced/polarized{ - dir = 10; - icon_state = "fwindow"; - id = "hop_office" - }, -/obj/structure/window/reinforced/polarized{ - dir = 1; - id = "hop_office" - }, -/turf/simulated/floor/plating, -/area/crew_quarters/heads/hop) "bjC" = ( /obj/structure/table/reinforced, /obj/structure/cable/green{ @@ -16450,24 +16919,6 @@ }, /turf/simulated/floor/tiled, /area/crew_quarters/heads/hop) -"bjP" = ( -/obj/structure/grille, -/obj/structure/cable/green{ - d2 = 8; - icon_state = "0-8" - }, -/obj/machinery/door/firedoor/glass, -/obj/structure/window/reinforced/polarized{ - dir = 10; - icon_state = "fwindow"; - id = "hop_office" - }, -/obj/structure/window/reinforced/polarized{ - dir = 1; - id = "hop_office" - }, -/turf/simulated/floor/plating, -/area/crew_quarters/heads/hop) "bjS" = ( /obj/structure/disposalpipe/segment, /obj/effect/floor_decal/borderfloor{ @@ -16556,36 +17007,13 @@ /obj/effect/floor_decal/steeldecal/steel_decals4, /turf/simulated/floor/tiled, /area/storage/tools) -"bkt" = ( -/obj/structure/cable{ - d1 = 1; - d2 = 2; - icon_state = "1-2" - }, -/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, -/obj/machinery/atmospherics/pipe/simple/hidden/supply, -/obj/structure/cable{ - icon_state = "1-8" - }, -/turf/simulated/floor/tiled, -/area/hallway/station/docks) "bkx" = ( /obj/structure/table/reinforced, /obj/item/stack/material/plasteel{ - amount = 10 - }, -/obj/item/stack/material/plasteel{ - amount = 10 - }, -/obj/item/stack/material/plasteel{ - amount = 10 - }, -/obj/item/stack/material/plastic{ - amount = 50 - }, -/obj/item/stack/material/plastic{ - amount = 50 + amount = 30 }, +/obj/fiftyspawner/plastic, +/obj/fiftyspawner/plastic, /turf/simulated/floor/tiled, /area/engineering/workshop) "bky" = ( @@ -16602,26 +17030,6 @@ }, /turf/simulated/floor/tiled, /area/hallway/station/docks) -"bkA" = ( -/obj/effect/floor_decal/steeldecal/steel_decals7{ - dir = 9 - }, -/obj/machinery/status_display{ - layer = 4; - pixel_x = 32; - pixel_y = 0 - }, -/obj/effect/floor_decal/borderfloor{ - dir = 4 - }, -/obj/effect/floor_decal/corner/lightgrey/border{ - dir = 4 - }, -/obj/effect/floor_decal/steeldecal/steel_decals7{ - dir = 10 - }, -/turf/simulated/floor/tiled, -/area/hallway/station/docks) "bkC" = ( /obj/effect/floor_decal/corner/blue/full{ dir = 8 @@ -16636,80 +17044,6 @@ /obj/structure/flora/pottedplant, /turf/simulated/floor/tiled/dark, /area/bridge) -"bkP" = ( -/obj/structure/grille, -/obj/structure/cable/green{ - d2 = 4; - icon_state = "0-4" - }, -/obj/machinery/door/firedoor/glass, -/obj/machinery/door/blast/regular{ - density = 0; - dir = 4; - icon_state = "pdoor0"; - id = "bridge blast"; - name = "Bridge Blast Doors"; - opacity = 0 - }, -/obj/structure/window/reinforced/full, -/obj/structure/window/reinforced{ - dir = 1 - }, -/obj/structure/window/reinforced, -/turf/simulated/floor/plating, -/area/bridge) -"bkS" = ( -/obj/structure/grille, -/obj/structure/cable/green{ - d2 = 8; - icon_state = "0-8" - }, -/obj/structure/cable/green{ - d2 = 4; - icon_state = "0-4" - }, -/obj/machinery/door/firedoor/glass, -/obj/machinery/door/blast/regular{ - density = 0; - dir = 4; - icon_state = "pdoor0"; - id = "bridge blast"; - name = "Bridge Blast Doors"; - opacity = 0 - }, -/obj/structure/window/reinforced/full, -/obj/structure/window/reinforced{ - dir = 1 - }, -/obj/structure/window/reinforced, -/turf/simulated/floor/plating, -/area/bridge) -"bld" = ( -/obj/structure/grille, -/obj/structure/cable/green{ - d2 = 8; - icon_state = "0-8" - }, -/obj/structure/cable/green{ - d2 = 2; - icon_state = "0-2" - }, -/obj/machinery/door/firedoor/glass, -/obj/machinery/door/blast/regular{ - density = 0; - dir = 4; - icon_state = "pdoor0"; - id = "bridge blast"; - name = "Bridge Blast Doors"; - opacity = 0 - }, -/obj/structure/window/reinforced/full, -/obj/structure/window/reinforced{ - dir = 1 - }, -/obj/structure/window/reinforced, -/turf/simulated/floor/plating, -/area/bridge) "bll" = ( /obj/effect/floor_decal/steeldecal/steel_decals7{ dir = 9 @@ -16873,21 +17207,6 @@ }, /turf/simulated/floor/tiled, /area/storage/tools) -"bng" = ( -/obj/structure/cable{ - d1 = 1; - d2 = 2; - icon_state = "1-2" - }, -/obj/machinery/atmospherics/pipe/simple/hidden{ - dir = 4 - }, -/obj/machinery/atmospherics/pipe/manifold4w/hidden/supply, -/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{ - dir = 4 - }, -/turf/simulated/floor/tiled, -/area/hallway/station/docks) "bnl" = ( /obj/machinery/atmospherics/pipe/simple/hidden{ dir = 9; @@ -17106,19 +17425,6 @@ }, /turf/simulated/floor/tiled, /area/tether/station/stairs_one) -"boB" = ( -/obj/machinery/atmospherics/pipe/manifold/hidden{ - dir = 8; - icon_state = "map" - }, -/obj/effect/decal/cleanable/dirt, -/obj/machinery/meter{ - frequency = 1443; - id = "dist_aux_meter"; - name = "Distribution Loop" - }, -/turf/simulated/floor, -/area/hallway/station/docks) "boH" = ( /obj/machinery/computer/transhuman/resleeving{ dir = 8 @@ -17177,23 +17483,6 @@ }, /turf/simulated/floor/tiled, /area/crew_quarters/heads/hop) -"boO" = ( -/obj/structure/grille, -/obj/machinery/door/firedoor/glass, -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/obj/structure/cable/green{ - d2 = 4; - icon_state = "0-4" - }, -/obj/structure/window/reinforced/polarized{ - dir = 10; - icon_state = "fwindow"; - id = "hop_office" - }, -/turf/simulated/floor/plating, -/area/crew_quarters/heads/hop) "boU" = ( /obj/machinery/recharger/wallcharger{ pixel_x = 32; @@ -17276,7 +17565,7 @@ /obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ dir = 4 }, -/obj/machinery/camera/network/northern_star{ +/obj/machinery/camera/network/tether{ dir = 1 }, /obj/effect/floor_decal/borderfloor, @@ -17425,20 +17714,6 @@ }, /turf/simulated/floor/tiled, /area/crew_quarters/heads/hop) -"bpO" = ( -/obj/structure/grille, -/obj/machinery/door/firedoor/glass, -/obj/structure/cable/green{ - d2 = 4; - icon_state = "0-4" - }, -/obj/structure/window/reinforced/polarized{ - dir = 10; - icon_state = "fwindow"; - id = "hop_office" - }, -/turf/simulated/floor/plating, -/area/crew_quarters/heads/hop) "bpQ" = ( /obj/structure/table/reinforced, /obj/item/weapon/paper_bin{ @@ -17847,7 +18122,7 @@ pixel_x = 0; pixel_y = 26 }, -/obj/machinery/camera/network/northern_star, +/obj/machinery/camera/network/tether, /turf/simulated/floor/tiled, /area/hallway/station/docks) "bsv" = ( @@ -18236,7 +18511,6 @@ /area/bridge) "bvW" = ( /obj/structure/table/reinforced, -/obj/structure/table/reinforced, /obj/item/weapon/storage/firstaid/regular, /obj/item/device/radio{ pixel_x = 2; @@ -18264,6 +18538,9 @@ }, /turf/simulated/floor/tiled/dark, /area/bridge) +"bwb" = ( +/turf/space, +/area/shuttle/tether/station) "bwc" = ( /obj/item/device/aicard, /obj/item/weapon/storage/box/PDAs{ @@ -19174,16 +19451,6 @@ /obj/machinery/atmospherics/unary/vent_scrubber/on, /turf/simulated/floor/carpet, /area/library) -"bCl" = ( -/obj/structure/grille, -/obj/machinery/door/firedoor/border_only, -/obj/structure/window/reinforced/polarized{ - dir = 10; - icon_state = "fwindow"; - id = "library_window_tint" - }, -/turf/simulated/floor/plating, -/area/library) "bDr" = ( /obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, /obj/machinery/atmospherics/pipe/simple/hidden/supply, @@ -19552,15 +19819,6 @@ }, /turf/simulated/floor/tiled/monotile, /area/bridge_hallway) -"bGj" = ( -/obj/machinery/button/windowtint{ - id = "library_window_tint"; - pixel_x = 26; - pixel_y = -26 - }, -/obj/machinery/atmospherics/pipe/simple/hidden/supply, -/turf/simulated/floor/carpet, -/area/library) "bGl" = ( /obj/machinery/firealarm{ dir = 1; @@ -19891,7 +20149,7 @@ /turf/simulated/floor/tiled, /area/tether/station/dock_two) "bHY" = ( -/obj/machinery/camera/network/northern_star{ +/obj/machinery/camera/network/tether{ dir = 9 }, /obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ @@ -20311,18 +20569,6 @@ }, /turf/simulated/floor/wood, /area/library_conference_room) -"bOz" = ( -/obj/structure/grille, -/obj/structure/window/reinforced/full, -/obj/structure/window/reinforced{ - dir = 8 - }, -/obj/machinery/door/firedoor/glass, -/obj/structure/window/reinforced{ - dir = 1 - }, -/turf/simulated/floor/plating, -/area/tether/station/dock_two) "bOQ" = ( /obj/structure/table/rack{ dir = 8; @@ -20341,21 +20587,6 @@ }, /turf/simulated/floor/wood, /area/library_conference_room) -"bOU" = ( -/obj/machinery/firealarm{ - dir = 4; - layer = 3.3; - pixel_x = 26 - }, -/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ - dir = 9 - }, -/obj/machinery/atmospherics/pipe/simple/hidden/supply{ - dir = 9; - pixel_y = 0 - }, -/turf/simulated/floor/tiled, -/area/tether/station/dock_one) "bPc" = ( /obj/machinery/firealarm{ dir = 4; @@ -20469,17 +20700,14 @@ /obj/effect/floor_decal/industrial/warning{ dir = 8 }, -/obj/machinery/atmospherics/pipe/manifold/hidden{ - dir = 4; - icon_state = "map" - }, +/obj/machinery/atmospherics/pipe/manifold4w/hidden, /turf/simulated/floor/tiled, /area/tether/station/dock_one) "bPt" = ( /obj/machinery/access_button{ command = "cycle_exterior"; frequency = 1380; - master_tag = "tether_dock"; + master_tag = "d2a1_dock"; name = "exterior access button"; pixel_x = -5; pixel_y = -26; @@ -20488,7 +20716,7 @@ /obj/machinery/door/airlock/glass_external{ frequency = 1380; icon_state = "door_locked"; - id_tag = "tether_dock_outer"; + id_tag = "d2a1_dock_outer"; locked = 1; name = "Docking Port Airlock" }, @@ -20498,7 +20726,7 @@ /obj/machinery/door/airlock/glass_external{ frequency = 1380; icon_state = "door_locked"; - id_tag = "tether_dock_inner"; + id_tag = "d2a1_dock_inner"; locked = 1; name = "Docking Port Airlock" }, @@ -20511,25 +20739,25 @@ /obj/machinery/atmospherics/unary/vent_pump/high_volume{ dir = 4; frequency = 1380; - id_tag = "tether_dock_pump" + id_tag = "d2a1_dock_pump" }, /obj/machinery/light/small, /obj/machinery/airlock_sensor{ frequency = 1380; - id_tag = "tether_dock_sensor"; + id_tag = "d2a1_dock_sensor"; pixel_x = 0; pixel_y = -25 }, /obj/machinery/embedded_controller/radio/airlock/docking_port{ frequency = 1380; - id_tag = "tether_dock_airlock"; + id_tag = "d2a1_dock_airlock"; pixel_x = 0; pixel_y = 30; req_one_access = list(13); - tag_airpump = "tether_dock_pump"; - tag_chamber_sensor = "tether_dock_sensor"; - tag_exterior_door = "tether_dock_outer"; - tag_interior_door = "tether_dock_inner" + tag_airpump = "d2a1_dock_pump"; + tag_chamber_sensor = "d2a1_dock_sensor"; + tag_exterior_door = "d2a1_dock_outer"; + tag_interior_door = "d2a1_dock_inner" }, /turf/simulated/floor/tiled/dark, /area/tether/station/dock_two) @@ -20539,7 +20767,7 @@ frequency = 1380; master_tag = "tether_dock"; name = "interior access button"; - pixel_x = -28; + pixel_x = 28; pixel_y = 26; req_one_access = list(13) }, @@ -20608,9 +20836,13 @@ req_access = list(13) }, /obj/machinery/atmospherics/pipe/simple/hidden, -/obj/machinery/camera/network/northern_star{ +/obj/machinery/camera/network/tether{ dir = 4 }, +/obj/machinery/firealarm{ + dir = 8; + pixel_x = -26 + }, /turf/simulated/floor/tiled, /area/tether/station/dock_one) "bPQ" = ( @@ -20739,9 +20971,6 @@ /turf/simulated/floor/tiled, /area/tether/station/dock_two) "bQl" = ( -/obj/effect/floor_decal/industrial/warning{ - dir = 1 - }, /obj/machinery/atmospherics/pipe/simple/hidden{ dir = 10; icon_state = "intact" @@ -20749,6 +20978,9 @@ /obj/machinery/light/small{ dir = 4 }, +/obj/effect/floor_decal/industrial/warning{ + dir = 5 + }, /turf/simulated/floor/tiled, /area/tether/station/dock_two) "bQm" = ( @@ -20772,7 +21004,7 @@ /obj/effect/floor_decal/industrial/warning{ dir = 10 }, -/obj/machinery/camera/network/northern_star{ +/obj/machinery/camera/network/tether{ dir = 4 }, /obj/machinery/atmospherics/unary/vent_pump/high_volume{ @@ -20800,12 +21032,14 @@ /turf/simulated/floor/tiled, /area/tether/station/dock_two) "bQu" = ( -/obj/effect/floor_decal/industrial/warning, /obj/machinery/atmospherics/unary/vent_pump/high_volume{ dir = 1; frequency = 1380; id_tag = "nuke_shuttle_dock_pump" }, +/obj/effect/floor_decal/industrial/warning{ + dir = 6 + }, /turf/simulated/floor/tiled, /area/tether/station/dock_two) "bQv" = ( @@ -21086,18 +21320,6 @@ }, /turf/simulated/floor/carpet, /area/engineering/foyer) -"bYz" = ( -/obj/structure/grille, -/obj/structure/window/reinforced/full, -/turf/simulated/floor, -/area/hallway/station/docks) -"bYC" = ( -/turf/simulated/floor, -/area/hallway/station/docks) -"bYD" = ( -/obj/machinery/door/airlock/multi_tile/glass, -/turf/simulated/floor, -/area/hallway/station/docks) "bYE" = ( /obj/machinery/recharge_station, /turf/simulated/floor/carpet, @@ -21123,27 +21345,14 @@ "bYP" = ( /turf/simulated/wall, /area/vacant/vacant_restaurant_lower) -"bYR" = ( -/obj/effect/decal/cleanable/dirt, -/obj/machinery/atmospherics/pipe/cap/hidden/scrubbers{ - dir = 4 - }, -/turf/simulated/floor, -/area/vacant/vacant_restaurant_lower) "bZc" = ( /obj/structure/table/reinforced, -/obj/item/stack/rods{ - amount = 50 - }, -/obj/item/stack/rods{ - amount = 50 - }, +/obj/fiftyspawner/rods, +/obj/fiftyspawner/rods, /obj/item/stack/material/glass/phoronrglass{ amount = 20 }, -/obj/item/stack/material/wood{ - amount = 50 - }, +/obj/fiftyspawner/wood, /obj/machinery/camera/network/engineering{ dir = 1 }, @@ -21254,7 +21463,7 @@ /obj/machinery/atmospherics/pipe/simple/hidden{ dir = 6 }, -/obj/machinery/camera/network/northern_star{ +/obj/machinery/camera/network/tether{ dir = 4 }, /obj/machinery/newscaster{ @@ -21332,6 +21541,15 @@ /obj/effect/floor_decal/corner/purple/border, /turf/simulated/floor/tiled, /area/tether/station/explorer_meeting) +"col" = ( +/obj/structure/grille, +/obj/structure/window/reinforced/full, +/obj/machinery/door/firedoor/glass, +/obj/structure/window/reinforced{ + dir = 8 + }, +/turf/simulated/floor/plating, +/area/tether/station/dock_two) "coV" = ( /obj/structure/cable/green{ d1 = 4; @@ -21393,21 +21611,25 @@ }, /turf/simulated/floor/tiled, /area/tether/station/pathfinder_office) -"dvn" = ( +"dlV" = ( +/obj/machinery/door/firedoor/glass, /obj/structure/grille, /obj/structure/window/reinforced/full, /obj/structure/window/reinforced{ dir = 4 }, -/obj/machinery/door/firedoor/glass, -/obj/structure/window/reinforced{ - dir = 8 - }, /obj/structure/window/reinforced{ dir = 1 }, +/obj/structure/sign/securearea{ + desc = "A warning sign which reads 'EXTERNAL AIRLOCK'"; + icon_state = "space"; + layer = 4; + name = "EXTERNAL AIRLOCK"; + pixel_x = 0 + }, /turf/simulated/floor/plating, -/area/tether/station/explorer_meeting) +/area/tether/station/dock_one) "dxX" = ( /obj/machinery/atmospherics/pipe/simple/hidden/supply, /obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, @@ -21438,35 +21660,6 @@ /obj/machinery/vending/snack, /turf/simulated/floor/tiled, /area/tether/station/explorer_meeting) -"dPZ" = ( -/obj/machinery/camera/network/northern_star{ - dir = 8 - }, -/obj/effect/floor_decal/borderfloor{ - dir = 4 - }, -/obj/effect/floor_decal/corner/purple/border{ - icon_state = "bordercolor"; - dir = 4 - }, -/obj/machinery/photocopier, -/turf/simulated/floor/tiled, -/area/tether/station/explorer_meeting) -"dYE" = ( -/obj/structure/grille, -/obj/structure/window/reinforced/polarized{ - dir = 10; - icon_state = "fwindow"; - id = "pathfinder_office" - }, -/obj/structure/window/reinforced/polarized, -/obj/machinery/door/firedoor/glass, -/obj/structure/cable/green{ - d2 = 8; - icon_state = "0-8" - }, -/turf/simulated/floor/plating, -/area/tether/station/pathfinder_office) "edg" = ( /obj/structure/bed/chair/office/dark{ dir = 4 @@ -21510,9 +21703,17 @@ }, /turf/simulated/floor/tiled, /area/tether/station/explorer_meeting) +"ezX" = ( +/obj/machinery/door/firedoor/glass, +/obj/structure/grille, +/obj/structure/window/reinforced/full, +/obj/structure/window/reinforced{ + dir = 1 + }, +/turf/simulated/floor/plating, +/area/tether/station/dock_two) "eAe" = ( /obj/machinery/alarm{ - frequency = 1441; pixel_y = 22 }, /obj/structure/closet/secure_closet/pilot, @@ -21598,28 +21799,6 @@ }, /turf/simulated/floor/tiled, /area/tether/station/explorer_meeting) -"gcH" = ( -/obj/effect/floor_decal/borderfloorblack{ - dir = 1 - }, -/obj/effect/floor_decal/industrial/danger{ - dir = 1 - }, -/obj/machinery/meter, -/turf/simulated/floor/tiled, -/area/tether/station/excursion_dock) -"ggi" = ( -/obj/structure/grille, -/obj/structure/window/reinforced/full, -/obj/structure/window/reinforced{ - dir = 4 - }, -/obj/machinery/door/firedoor/glass, -/obj/structure/window/reinforced{ - dir = 8 - }, -/turf/simulated/floor/plating, -/area/tether/station/explorer_meeting) "gUt" = ( /obj/structure/table/steel, /obj/item/clothing/head/pilot, @@ -21714,6 +21893,19 @@ /obj/item/weapon/paper_bin, /turf/simulated/floor/tiled, /area/tether/station/explorer_meeting) +"jys" = ( +/obj/machinery/door/airlock/glass_external{ + frequency = 1380; + icon_state = "door_locked"; + id_tag = "tether_dock_inner"; + locked = 1; + name = "Docking Port Airlock" + }, +/obj/machinery/atmospherics/pipe/simple/hidden{ + dir = 4 + }, +/turf/simulated/floor/tiled/dark, +/area/tether/station/dock_one) "jDS" = ( /obj/effect/floor_decal/borderfloor{ dir = 1 @@ -21735,28 +21927,43 @@ }, /turf/simulated/floor/carpet, /area/hallway/station/atrium) -"jZN" = ( -/obj/structure/grille, -/obj/structure/window/reinforced/polarized{ - dir = 10; - icon_state = "fwindow"; - id = "pathfinder_office" - }, -/obj/structure/window/reinforced/polarized{ - dir = 1; - id = "hop_office" - }, +"jRS" = ( +/obj/random/junk, +/turf/simulated/floor, +/area/maintenance/station/eng_lower) +"kCH" = ( /obj/machinery/door/firedoor/glass, -/obj/structure/cable/green{ - d2 = 4; - icon_state = "0-4" - }, -/obj/structure/cable/green{ - d2 = 2; - icon_state = "0-2" - }, +/obj/structure/grille, +/obj/structure/window/reinforced/full, +/obj/structure/window/reinforced, /turf/simulated/floor/plating, -/area/tether/station/pathfinder_office) +/area/tether/station/dock_one) +"kLN" = ( +/obj/machinery/atmospherics/unary/vent_pump/high_volume{ + dir = 8; + frequency = 1380; + id_tag = "tether_dock_pump" + }, +/obj/machinery/light/small, +/obj/machinery/airlock_sensor{ + frequency = 1380; + id_tag = "tether_dock_sensor"; + pixel_x = 0; + pixel_y = -25 + }, +/obj/machinery/embedded_controller/radio/airlock/docking_port{ + frequency = 1380; + id_tag = "tether_dock_airlock"; + pixel_x = 0; + pixel_y = 30; + req_one_access = list(13); + tag_airpump = "tether_dock_pump"; + tag_chamber_sensor = "tether_dock_sensor"; + tag_exterior_door = "tether_dock_outer"; + tag_interior_door = "tether_dock_inner" + }, +/turf/simulated/floor/tiled/dark, +/area/tether/station/dock_one) "kZI" = ( /obj/structure/window/reinforced{ dir = 8 @@ -21811,6 +22018,18 @@ }, /turf/simulated/floor/tiled, /area/bridge_hallway) +"lGA" = ( +/obj/machinery/door/firedoor/glass, +/obj/structure/grille, +/obj/structure/window/reinforced/full, +/obj/structure/window/reinforced{ + dir = 1 + }, +/obj/structure/window/reinforced{ + dir = 4 + }, +/turf/simulated/floor/plating, +/area/tether/station/dock_one) "lHz" = ( /obj/machinery/atmospherics/unary/vent_pump/on{ dir = 1 @@ -21871,12 +22090,6 @@ /obj/machinery/vending/cola, /turf/simulated/floor/tiled, /area/tether/station/explorer_meeting) -"mcB" = ( -/obj/machinery/atmospherics/unary/vent_pump/on{ - dir = 1 - }, -/turf/simulated/floor/tiled, -/area/tether/station/pathfinder_office) "mtd" = ( /obj/structure/table/woodentable, /obj/item/weapon/folder/yellow, @@ -21916,25 +22129,15 @@ }, /turf/simulated/floor/tiled, /area/tether/station/explorer_meeting) -"mJI" = ( -/obj/machinery/camera/network/northern_star{ - dir = 5 +"mNU" = ( +/obj/machinery/door/firedoor/glass, +/obj/structure/grille, +/obj/structure/window/reinforced/full, +/obj/structure/window/reinforced{ + dir = 4 }, -/obj/structure/disposalpipe/segment, -/obj/effect/floor_decal/borderfloor{ - dir = 8 - }, -/obj/effect/floor_decal/corner/purple/border{ - icon_state = "bordercolor"; - dir = 8 - }, -/obj/structure/extinguisher_cabinet{ - dir = 4; - icon_state = "extinguisher_closed"; - pixel_x = -30 - }, -/turf/simulated/floor/tiled, -/area/tether/station/explorer_meeting) +/turf/simulated/floor/plating, +/area/tether/station/dock_one) "mSH" = ( /obj/structure/grille, /obj/structure/window/reinforced/full, @@ -22000,10 +22203,6 @@ }, /turf/simulated/floor/carpet, /area/hallway/station/atrium) -"nOF" = ( -/obj/structure/closet/secure_closet/pilot, -/turf/simulated/floor/tiled, -/area/tether/station/explorer_prep) "nSw" = ( /obj/structure/grille, /obj/structure/window/reinforced/full, @@ -22012,28 +22211,6 @@ }, /turf/simulated/shuttle/plating, /area/shuttle/excursion/tether) -"nYc" = ( -/obj/structure/grille, -/obj/structure/window/reinforced/polarized{ - dir = 10; - icon_state = "fwindow"; - id = "pathfinder_office" - }, -/obj/structure/window/reinforced/polarized{ - dir = 1; - id = "hop_office" - }, -/obj/machinery/door/firedoor/glass, -/obj/structure/cable/green{ - d2 = 4; - icon_state = "0-4" - }, -/obj/structure/cable/green{ - d2 = 8; - icon_state = "0-8" - }, -/turf/simulated/floor/plating, -/area/tether/station/pathfinder_office) "nYp" = ( /obj/effect/floor_decal/industrial/outline/red, /obj/structure/closet/secure_closet/guncabinet/excursion, @@ -22201,6 +22378,32 @@ /obj/item/weapon/tank/emergency/oxygen/engi, /turf/simulated/shuttle/floor/black, /area/shuttle/excursion/tether) +"qLu" = ( +/obj/effect/floor_decal/steeldecal/steel_decals5{ + dir = 4 + }, +/obj/machinery/shower{ + icon_state = "shower"; + dir = 4 + }, +/obj/effect/floor_decal/steeldecal/steel_decals10{ + dir = 4 + }, +/obj/effect/floor_decal/steeldecal/steel_decals10, +/obj/structure/curtain/open/shower, +/obj/item/weapon/soap/nanotrasen, +/obj/effect/floor_decal/steeldecal/steel_decals9{ + dir = 8 + }, +/obj/effect/floor_decal/steeldecal/steel_decals9{ + dir = 1 + }, +/obj/effect/floor_decal/steeldecal/steel_decals9{ + dir = 4 + }, +/obj/effect/floor_decal/steeldecal/steel_decals9, +/turf/simulated/floor/tiled/monotile, +/area/tether/station/excursion_dock) "qSW" = ( /obj/structure/table/woodentable, /obj/machinery/button/windowtint{ @@ -22211,58 +22414,12 @@ /obj/item/device/binoculars, /turf/simulated/floor/tiled, /area/tether/station/pathfinder_office) -"rhA" = ( -/obj/effect/floor_decal/borderfloorblack, -/obj/effect/floor_decal/industrial/danger, -/obj/machinery/camera/network/northern_star, -/turf/simulated/floor/tiled, -/area/tether/station/excursion_dock) -"rRn" = ( -/obj/structure/bed/chair/office/dark{ - dir = 1 - }, -/turf/simulated/floor/tiled, -/area/tether/station/explorer_meeting) -"sbI" = ( -/obj/structure/cable/green{ - d1 = 4; - d2 = 8; - icon_state = "4-8" - }, -/obj/machinery/atmospherics/pipe/simple/hidden/supply{ - dir = 10 - }, -/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ - dir = 4 - }, -/turf/simulated/floor/tiled, -/area/tether/station/explorer_meeting) -"soc" = ( -/obj/machinery/camera/network/northern_star, -/obj/machinery/atmospherics/unary/vent_pump/on{ - dir = 8 - }, -/turf/simulated/floor/tiled/monotile, -/area/tether/station/excursion_dock) -"sqC" = ( -/obj/structure/grille, -/obj/structure/window/reinforced/polarized{ - dir = 10; - icon_state = "fwindow"; - id = "pathfinder_office" - }, -/obj/structure/window/reinforced/polarized{ - dir = 1; - id = "hop_office" - }, -/obj/machinery/door/firedoor/glass, -/obj/structure/cable/green{ - d2 = 8; - icon_state = "0-8" - }, -/turf/simulated/floor/plating, -/area/tether/station/pathfinder_office) -"sSn" = ( +"rje" = ( +/obj/effect/floor_decal/industrial/warning, +/obj/structure/stasis_cage, +/turf/simulated/shuttle/floor/black, +/area/shuttle/excursion/tether) +"rlO" = ( /obj/effect/floor_decal/steeldecal/steel_decals5{ dir = 4 }, @@ -22284,6 +22441,33 @@ }, /turf/simulated/floor/tiled, /area/tether/station/explorer_meeting) +"rRn" = ( +/obj/structure/bed/chair/office/dark{ + dir = 1 + }, +/turf/simulated/floor/tiled, +/area/tether/station/explorer_meeting) +"sbI" = ( +/obj/structure/cable/green{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 10 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, +/turf/simulated/floor/tiled, +/area/tether/station/explorer_meeting) +"scB" = ( +/obj/machinery/computer/shuttle_control/tether_backup{ + icon_state = "computer"; + dir = 8 + }, +/turf/simulated/floor/tiled, +/area/tether/station/dock_one) "sZd" = ( /obj/structure/bed/chair/office/dark{ dir = 4 @@ -22314,32 +22498,6 @@ }, /turf/simulated/shuttle/wall/voidcraft, /area/shuttle/excursion/tether) -"txl" = ( -/obj/effect/floor_decal/steeldecal/steel_decals5{ - dir = 4 - }, -/obj/machinery/shower{ - icon_state = "shower"; - dir = 4 - }, -/obj/effect/floor_decal/steeldecal/steel_decals10{ - dir = 4 - }, -/obj/effect/floor_decal/steeldecal/steel_decals10, -/obj/structure/curtain/open/shower, -/obj/item/weapon/soap/nanotrasen, -/obj/effect/floor_decal/steeldecal/steel_decals9{ - dir = 8 - }, -/obj/effect/floor_decal/steeldecal/steel_decals9{ - dir = 1 - }, -/obj/effect/floor_decal/steeldecal/steel_decals9{ - dir = 4 - }, -/obj/effect/floor_decal/steeldecal/steel_decals9, -/turf/simulated/floor/tiled/monotile, -/area/tether/station/excursion_dock) "tEu" = ( /obj/structure/bed/chair/office/dark{ dir = 1 @@ -22355,6 +22513,25 @@ }, /turf/simulated/shuttle/floor/darkred, /area/shuttle/excursion/tether) +"tKI" = ( +/obj/machinery/access_button{ + command = "cycle_exterior"; + frequency = 1380; + master_tag = "tether_dock"; + name = "exterior access button"; + pixel_x = -5; + pixel_y = -26; + req_one_access = list(13) + }, +/obj/machinery/door/airlock/glass_external{ + frequency = 1380; + icon_state = "door_locked"; + id_tag = "tether_dock_outer"; + locked = 1; + name = "Docking Port Airlock" + }, +/turf/simulated/floor/tiled/dark, +/area/tether/station/dock_one) "tNS" = ( /obj/machinery/atmospherics/pipe/simple/hidden/supply, /turf/simulated/floor/tiled, @@ -22373,22 +22550,6 @@ /obj/machinery/portable_atmospherics/canister/oxygen, /turf/simulated/floor/tiled, /area/tether/station/explorer_prep) -"ugj" = ( -/obj/structure/grille, -/obj/structure/window/reinforced/polarized{ - dir = 10; - icon_state = "fwindow"; - id = "pathfinder_office" - }, -/obj/machinery/door/firedoor/glass, -/obj/structure/cable/green{ - d2 = 4; - icon_state = "0-4" - }, -/obj/structure/cable/green, -/obj/structure/window/reinforced/polarized, -/turf/simulated/floor/plating, -/area/tether/station/pathfinder_office) "uoG" = ( /obj/structure/window/reinforced{ dir = 8 @@ -22422,6 +22583,31 @@ }, /turf/simulated/floor/tiled, /area/tether/station/explorer_meeting) +"uWS" = ( +/obj/machinery/atmospherics/pipe/simple/hidden{ + dir = 4 + }, +/obj/machinery/access_button{ + command = "cycle_interior"; + frequency = 1380; + master_tag = "tether_dock"; + name = "interior access button"; + pixel_x = 28; + pixel_y = 26; + req_one_access = list(13) + }, +/turf/simulated/floor/tiled, +/area/tether/station/dock_one) +"vbm" = ( +/obj/machinery/door/firedoor/glass, +/obj/structure/grille, +/obj/structure/window/reinforced/full, +/obj/structure/window/reinforced{ + dir = 4 + }, +/obj/structure/window/reinforced, +/turf/simulated/floor/plating, +/area/tether/station/dock_one) "vrH" = ( /obj/structure/cable/green{ d1 = 1; @@ -22445,25 +22631,13 @@ }, /turf/simulated/floor/tiled/monotile, /area/tether/station/excursion_dock) -"vEZ" = ( -/obj/structure/grille, -/obj/structure/window/reinforced/polarized{ - dir = 10; - icon_state = "fwindow"; - id = "pathfinder_office" +"vwL" = ( +/obj/machinery/firealarm{ + dir = 8; + pixel_x = -26 }, -/obj/structure/window/reinforced/polarized, -/obj/machinery/door/firedoor/glass, -/obj/structure/cable/green{ - d2 = 4; - icon_state = "0-4" - }, -/obj/structure/cable/green{ - d2 = 8; - icon_state = "0-8" - }, -/turf/simulated/floor/plating, -/area/tether/station/pathfinder_office) +/turf/simulated/floor/tiled, +/area/tether/station/excursion_dock) "vIv" = ( /obj/structure/table/bench/padded, /obj/item/device/radio/intercom{ @@ -22527,13 +22701,6 @@ }, /turf/simulated/floor/tiled, /area/tether/station/explorer_meeting) -"wbr" = ( -/obj/machinery/camera/network/northern_star, -/obj/machinery/atmospherics/unary/vent_pump/on{ - dir = 4 - }, -/turf/simulated/floor/tiled/monotile, -/area/tether/station/excursion_dock) "wcD" = ( /obj/structure/grille, /obj/structure/window/reinforced/full, @@ -22556,6 +22723,12 @@ }, /turf/simulated/floor/tiled, /area/tether/station/explorer_prep) +"wlD" = ( +/obj/machinery/door/firedoor/glass, +/obj/structure/grille, +/obj/structure/window/reinforced/full, +/turf/simulated/floor/plating, +/area/tether/station/dock_one) "wmC" = ( /obj/effect/floor_decal/borderfloor, /obj/effect/floor_decal/corner/purple/border, @@ -22600,19 +22773,6 @@ }, /turf/simulated/floor/tiled, /area/tether/station/explorer_meeting) -"wSk" = ( -/obj/structure/grille, -/obj/structure/window/reinforced/full, -/obj/structure/window/reinforced{ - dir = 4 - }, -/obj/machinery/door/firedoor/glass, -/obj/structure/window/reinforced{ - dir = 8 - }, -/obj/structure/window/reinforced, -/turf/simulated/floor/plating, -/area/tether/station/explorer_meeting) "wZn" = ( /obj/machinery/power/apc{ cell_type = /obj/item/weapon/cell/super; @@ -22636,18 +22796,6 @@ /obj/structure/table/bench/padded, /turf/simulated/floor/carpet, /area/hallway/station/atrium) -"xhk" = ( -/obj/machinery/atmospherics/pipe/simple/hidden/supply{ - dir = 4 - }, -/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ - dir = 4 - }, -/obj/machinery/camera/network/northern_star{ - dir = 1 - }, -/turf/simulated/floor/tiled/monotile, -/area/tether/station/excursion_dock) "xhv" = ( /obj/machinery/door/airlock/glass{ name = "Shuttle Bay" @@ -27131,7 +27279,7 @@ aks aks aks alx -aoW +abv aoX aqK aqf @@ -27150,9 +27298,9 @@ aJn aLt aRb aRb -aQc -aQc -aQc +agi +agi +agi aRb aRb aRb @@ -27273,7 +27421,7 @@ aks aks aks alw -aoe +abB aoj aqI adS @@ -27415,7 +27563,7 @@ aks aks aks alz -amX +abE aol app aqa @@ -27432,7 +27580,7 @@ aFO aSC bds aLA -aNg +agc aYH aRV bcp @@ -27574,7 +27722,7 @@ aFL aSC aoq aLy -aNg +agc aYF aRX aSe @@ -27716,7 +27864,7 @@ aFO aSC aTK aLG -aNg +agc aYJ baA bcn @@ -27858,7 +28006,7 @@ aQv aSC aTJ aLC -aNg +agc aBg aTm bcr @@ -28142,7 +28290,7 @@ bZt aSC aTL aLH -aNg +agc aRV aQh aRV @@ -28301,7 +28449,7 @@ bZP bYl bYl bYj -bYz +aeF bZZ bty aBZ @@ -28318,9 +28466,9 @@ bKo aDG aEm aDF -bOU -aDG +bHz aDG +uWS aDG bPQ aFU @@ -28443,7 +28591,7 @@ bYj bZS bZD bZm -bYz +aeF aAV btu bvu @@ -28459,11 +28607,11 @@ aDH aCF aDH aDH -aDH -aCF -aDH -aDH -aDH +aFU +scB +wlD +jys +wlD aCF aCF aaa @@ -28585,7 +28733,7 @@ bZz bYl bZD bYj -bYz +aeF aAV btu aBZ @@ -28601,11 +28749,11 @@ aaa aaa aaa aaa -aaa -aaa -aaa -aaa -aaa +lGA +mNU +wlD +kLN +kCH aaa aaa aaa @@ -28718,7 +28866,7 @@ aIO aVK alv bYk -bYR +bYl bYj bYj bYj @@ -28742,16 +28890,16 @@ aFs aFs aFs aaa -aIb -aIb -aIb -aIb -aIb -aIb -aIb -aIb -aIb -aIb +aaa +aaa +aaa +dlV +tKI +vbm +aaa +aaa +aaa +aaa aaa aaa aaa @@ -28819,8 +28967,8 @@ aaa acL acL acL -abs -abE +aar +aaE abW adf adf @@ -28829,7 +28977,7 @@ adf adf alF aiM -ahu +abq aiM aiM aac @@ -28860,7 +29008,7 @@ aIO aVW alv bYm -bbl +acv bYj bZz bYj @@ -28869,7 +29017,7 @@ bYj bYl bYl bZk -bYD +aeI aBi btu aBZ @@ -28884,16 +29032,16 @@ aFs aFs aFs aaa -aIb -aIb -aIb -aIb -aIb -aIb -aIb -aIb -aIb -aIb +aaa +bwb +bwb +bwb +bwb +bwb +bwb +bwb +aaa +aaa aaa aaa aJr @@ -29002,7 +29150,7 @@ aSB aVP alv bYl -bbd +acM bZk bYl bYl @@ -29011,7 +29159,7 @@ bZQ bYj bYj bYj -bYC +aeR aBi btu aBZ @@ -29026,16 +29174,16 @@ aFs aFs aFs aaa -aIb -aIb -aIb -aIb -aIb -aIb -aIb -aIb -aIb -aIb +aaa +bwb +bwb +bwb +bwb +bwb +bwb +bwb +aaa +aaa aaa aJr aJr @@ -29144,7 +29292,7 @@ aXX aZn alv bYl -bbq +adp bZm bfF bYj @@ -29168,16 +29316,16 @@ aFs aFs aFs aaa -aIb -aIb -aIb -aIb -aIb -aIb -aIb -aIb -aIb -aIb +aaa +bwb +bwb +bwb +bwb +bwb +bwb +bwb +aaa +aaa aaa aJr aJr @@ -29247,7 +29395,7 @@ aaz aaX abt abF -abY +aaU afM afL aib @@ -29255,7 +29403,7 @@ afL afi alF ajt -ahw +abs ajt aiM aac @@ -29285,9 +29433,9 @@ aSz alt alt alv -agE -bbn -agE +acs +adR +acs aws aws aws @@ -29310,16 +29458,16 @@ aFs aFs aFs aaa -aIb -aIb -aIb -aIb -aIb -aIb -aIb -aIb -aIb -aIb +aaa +bwb +bwb +bwb +bwb +bwb +bwb +bwb +aaa +aaa aaa aJr aJr @@ -29428,7 +29576,7 @@ aoI aTE aoJ agR -bbw +adT ajK awp awP @@ -29453,13 +29601,13 @@ aFs aFs aaa aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa +bwb +bwb +bwb +bwb +bwb +bwb +bwb aaa aaa aaa @@ -29570,7 +29718,7 @@ aUk bXG atH agQ -bbr +adX bdi bfG bgG @@ -29712,7 +29860,7 @@ bgC bXI aYa agT -bbr +adX bdq bfJ bgJ @@ -29736,16 +29884,16 @@ aFs aFs aFs aaa -aaa -aIr -aIr -aIr -aIr -aIr -aIr -aIr -aaa -aaa +aIb +aIb +aIb +aIb +aIb +aIb +aIb +aIb +aIb +aIb aaa aaa aaa @@ -29813,8 +29961,8 @@ aac acL acL abf -abv -abL +aaB +aaF acd afP afP @@ -29854,7 +30002,7 @@ aUm aWd aXY aZq -bbz +aec bdn aws bgH @@ -29878,16 +30026,16 @@ aFs aFs aFs aaa -aaa -aIr -aIr -aIr -aIr -aIr -aIr -aIr -aaa -aaa +aIb +aIb +aIb +aIb +aIb +aIb +aIb +aIb +aIb +aIb aaa aaa aaa @@ -29996,7 +30144,7 @@ bgE bXK aYc agV -aCe +aee bdu aws bgN @@ -30020,16 +30168,16 @@ aFs aFs aFs aaa -aaa -aIr -aIr -aIr -aIr -aIr -aIr -aIr -aaa -aaa +aIb +aIb +aIb +aIb +aIb +aIb +aIb +aIb +aIb +aIb aaa aaa aaa @@ -30162,16 +30310,16 @@ aFs aFs aFs aaa -aaa -aIr -aIr -aIr -aIr -aIr -aIr -aIr -aaa -aaa +aIb +aIb +aIb +aIb +aIb +aIb +aIb +aIb +aIb +aIb aaa aaa aaa @@ -30264,7 +30412,7 @@ apg avD apg apg -aij +auz aAW aAW aAW @@ -30304,16 +30452,16 @@ aFs aFs aaa aaa -aaa -aIr -aIr -aIr -aIr -aIr -aIr -aIr -aaa -aaa +aIb +aIb +aIb +aIb +aIb +aIb +aIb +aIb +aIb +aIb aaa aaa aaa @@ -30589,9 +30737,9 @@ aHc aaa aaa aaa -bOz -bzq -bXl +aaa +aaa +ezX bPz bXn aaa @@ -30731,7 +30879,7 @@ aFZ aCK bzq bzq -aFZ +col aIA bXl bPx @@ -30993,10 +31141,10 @@ agZ aim bdL bfQ -bha -bha -bkt -bng +afo +afq +aft +afB bha bha bqf @@ -31117,7 +31265,7 @@ apQ apQ als auz -aDI +aci aLl aET aaV @@ -31136,9 +31284,9 @@ acp bdW arf awZ -awZ -bkA -ayF +afr +afu +afG awZ azR aAo @@ -31235,7 +31383,7 @@ adh acj acj ack -afn +aaY adG ack aJs @@ -31280,7 +31428,7 @@ aaT awu awu awu -ayG +aek awu awu awu @@ -31414,7 +31562,7 @@ aRr aSO aUI aWj -aYs +aco aZP bbE bdZ @@ -31423,7 +31571,7 @@ bhg axD axZ bno -boB +ael bpz bqj awu @@ -31676,7 +31824,7 @@ aik ack ack ack -acl +jRS ach ach acj @@ -31690,12 +31838,12 @@ alQ aBH aGP alQ -aeq -aeq -aeq -aeq -aeq -aeq +aeO +aeO +aeO +aeO +aeO +aeO afC afC afC @@ -31832,22 +31980,22 @@ aDs aEW aGI alQ -aeq aeO +afy +afy +afy +afy aeO -aeO -aeO -aeq afC afE -agd +afn ahF aio bed awz axc axc -bkP +afv aZV azm bpD @@ -31974,12 +32122,12 @@ aDM aEX aof alQ -aeq aeO +afy +afy +afy +afy aeO -aeO -aeO -aeq afC afJ age @@ -31989,7 +32137,7 @@ beh awz axc axd -bkS +afw ayK azn azU @@ -32116,12 +32264,12 @@ alQ alQ alQ alQ -aeq aeO +afy +afy +afy +afy aeO -aeO -aeO -aeq afC afF age @@ -32131,7 +32279,7 @@ beg awz axc axc -bkS +afw bcE azo azV @@ -32258,12 +32406,12 @@ asu aFc aog aoO -aeq aeO +afy +afy +afy +afy aeO -aeO -aeO -aeq afC afN agg @@ -32273,7 +32421,7 @@ beg awz axc axc -bkS +afw bkC azp azU @@ -32400,12 +32548,12 @@ aDP aEZ avS aoO -aeq -aeq aeO aeO afy -aeq +afy +agu +aeO afC afC aYt @@ -32415,7 +32563,7 @@ bei awz axc axc -bkS +afw ayN azn azU @@ -32557,7 +32705,7 @@ beg awz axc axc -bkS +afw blS azq azU @@ -32699,7 +32847,7 @@ beg awz axc axc -bkS +afw bkE azr azW @@ -32841,7 +32989,7 @@ beg awz axc axc -bkS +afw ayQ azn azU @@ -32983,7 +33131,7 @@ bed awz axd axc -bld +afx bnB boH bpJ @@ -33102,7 +33250,7 @@ aad aad aad aad -ack +abY aaT aAc acn @@ -33232,17 +33380,17 @@ aah aah aaP aad -wbr +agq aah -akC +vwL aah aah aaP aad -txl -sSn -sSn -txl +qLu +rlO +rlO +qLu aad ach aaT @@ -33526,7 +33674,7 @@ aao aao aao asY -xhk +agv aad ack aaT @@ -33553,7 +33701,7 @@ axg bjo bll ayU -azv +afK azZ bqU bsM @@ -33652,7 +33800,7 @@ aat aat aat aad -rhA +abU aap aap aap @@ -33666,7 +33814,7 @@ aeo aaq aaq aau -afV +aeq avK avN aad @@ -33695,8 +33843,8 @@ awE awE awI awI -boO -bpO +agm +agn brj awI awI @@ -33805,10 +33953,10 @@ aaq aaq nYp amF -avG +rje adB aaq -afV +aeq avK avN aad @@ -33834,7 +33982,7 @@ bbT ber awF bhr -bju +agj blr bnL boN @@ -33947,10 +34095,10 @@ abK aaq aem amF -avG +rje adB aaq -afV +aeq avK auH aad @@ -34096,7 +34244,7 @@ aap avK auF aad -acm +afl aaT aAp acp @@ -34118,7 +34266,7 @@ acp bez awG axj -bjz +agk ayj ayX azy @@ -34126,7 +34274,7 @@ bpQ ayX aBt awI -aCr +afV aCY aDz bAz @@ -34260,7 +34408,7 @@ acp bez awG axj -bjz +agk blF ayX azz @@ -34380,7 +34528,7 @@ aap avK auK axm -acm +agd abh aAt acp @@ -34402,7 +34550,7 @@ acp beE awG axj -bjz +agk ayl ayX azA @@ -34544,7 +34692,7 @@ acp beH awH bmM -bjP +agl aym bnZ boU @@ -34661,7 +34809,7 @@ anX afI oVP aap -gcH +avK qgR aad axI @@ -34802,7 +34950,7 @@ aaD avG tIi aaq -afV +aeq avK auQ aad @@ -34944,7 +35092,7 @@ amL aob dbI aaq -afV +aeq avK qgR aad @@ -35072,7 +35220,7 @@ aat aat aat aad -rhA +abU aap aap aap @@ -35086,7 +35234,7 @@ aep aeu aev aau -afV +aeq avK qgR aad @@ -35504,14 +35652,14 @@ aah pTz abc aad -abU +agr acN jdD adP amP fmN aad -soc +agt nxL coV abc @@ -35649,11 +35797,11 @@ aad abV acP aad -aad -aad +hCe +hCe vQL -aad -aad +hCe +hCe aTU lMo nYM @@ -35791,15 +35939,15 @@ dkC acc acQ amU -aiv +hCe xcY afc wZn -nYM +hCe oaO wFb vUO -mJI +agw mCP epz ash @@ -35933,11 +36081,11 @@ akL oeg acV amU -aiv +hCe adO afe -mcB -nYM +ags +hCe fsu sbI sZd @@ -36070,16 +36218,16 @@ aaa aaa aac aad -nOF +afW akL bQQ adj amU -jZN +abL dDZ tpZ dDZ -ugj +afb uDP nks uzS @@ -36217,11 +36365,11 @@ akL bQQ adj amU -nYc +aeT ygn fpA pAD -vEZ +aeT uDP mId wrg @@ -36260,9 +36408,9 @@ aAk aAk aAg aAg -bCl +ago bFC -bCl +ago bWN aAg aGL @@ -36359,11 +36507,11 @@ akL awf adr amW -sqC +aeZ ygn jki qSW -dYE +aeZ uDP nks mtd @@ -36404,7 +36552,7 @@ aAg bBg aEL aFk -bGj +agp bHr aAg aac @@ -36505,7 +36653,7 @@ hCe pYE dlk ekp -nYM +hCe nma lue hJg @@ -36647,7 +36795,7 @@ hCe hCe hCe hCe -nYM +hCe jDS wLj cNq @@ -36785,11 +36933,11 @@ prz vUd tWI aeB -aiv -aac -aac -aac -nYM +hCe +afg +afY +aga +hCe uDP mFo mFo @@ -36927,15 +37075,15 @@ aiv aiv aiv aiv -aiv -aac -aac -aac -nYM +hCe +hCe +hCe +hCe +hCe qzk dMN mcn -dPZ +agy afT ixk ash @@ -37074,12 +37222,12 @@ aac aac aac nYM -dvn -ggi -ggi -ggi -ggi -wSk +afh +afh +afh +afh +afh +afh ash amg amg diff --git a/maps/tether/tether-06-station2.dmm b/maps/tether/tether-06-station2.dmm index c2928919a6..35d6e0918e 100644 --- a/maps/tether/tether-06-station2.dmm +++ b/maps/tether/tether-06-station2.dmm @@ -1835,15 +1835,12 @@ /turf/simulated/floor/tiled/dark, /area/security/brig) "cL" = ( -/obj/structure/shuttle/engine/propulsion{ - dir = 8; - icon_state = "propulsion_l" +/obj/random/trash, +/obj/machinery/alarm{ + pixel_y = 22 }, -/turf/space, -/turf/simulated/shuttle/plating/airless/carry, -/area/shuttle/large_escape_pod1/station{ - base_turf = /turf/simulated/mineral/floor/vacuum - }) +/turf/simulated/floor, +/area/maintenance/station/sec_lower) "cM" = ( /obj/effect/floor_decal/borderfloor/shifted{ icon_state = "borderfloor_shifted"; @@ -1988,14 +1985,15 @@ /turf/simulated/floor/tiled/dark, /area/security/recstorage) "cW" = ( -/obj/structure/shuttle/engine/propulsion{ - dir = 8 +/obj/effect/decal/cleanable/dirt, +/obj/machinery/alarm{ + dir = 4; + icon_state = "alarm0"; + pixel_x = -22; + pixel_y = 0 }, -/turf/space, -/turf/simulated/shuttle/plating/airless/carry, -/area/shuttle/large_escape_pod1/station{ - base_turf = /turf/simulated/mineral/floor/vacuum - }) +/turf/simulated/floor, +/area/maintenance/station/sec_lower) "cX" = ( /obj/machinery/door/firedoor/glass, /obj/structure/cable/green{ @@ -2130,16 +2128,11 @@ /turf/simulated/floor/tiled/dark, /area/chapel/chapel_morgue) "dg" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, /obj/structure/extinguisher_cabinet{ pixel_x = 25; pixel_y = 0 }, -/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ - dir = 9 - }, -/obj/machinery/atmospherics/pipe/simple/hidden/supply{ - dir = 10 - }, /turf/simulated/floor/tiled/dark, /area/chapel/chapel_morgue) "dh" = ( @@ -2228,15 +2221,14 @@ /turf/simulated/floor/tiled, /area/security/brig/visitation) "dm" = ( -/obj/structure/shuttle/engine/propulsion{ - dir = 8; - icon_state = "propulsion_r" +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 9 }, -/turf/space, -/turf/simulated/shuttle/plating/airless/carry, -/area/shuttle/large_escape_pod1/station{ - base_turf = /turf/simulated/mineral/floor/vacuum - }) +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 10 + }, +/turf/simulated/floor/tiled/dark, +/area/chapel/chapel_morgue) "dn" = ( /obj/effect/floor_decal/industrial/warning, /obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, @@ -2303,6 +2295,13 @@ }, /turf/simulated/floor/tiled/dark, /area/security/brig) +"dr" = ( +/obj/structure/table/steel, +/obj/machinery/alarm{ + pixel_y = 22 + }, +/turf/simulated/floor, +/area/maintenance/station/sec_lower) "ds" = ( /obj/effect/floor_decal/borderfloor{ dir = 4 @@ -2611,6 +2610,25 @@ /obj/machinery/atmospherics/pipe/simple/hidden/green, /turf/simulated/floor, /area/security/riot_control) +"dS" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 10 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 10 + }, +/obj/structure/cable/green{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/obj/structure/disposalpipe/junction/yjunction, +/obj/structure/catwalk, +/obj/machinery/alarm{ + pixel_y = 22 + }, +/turf/simulated/floor/plating, +/area/maintenance/station/eng_upper) "dT" = ( /obj/machinery/atmospherics/pipe/simple/hidden/supply{ dir = 6 @@ -2659,6 +2677,29 @@ }, /turf/simulated/floor/tiled/dark, /area/security/recstorage) +"dW" = ( +/obj/structure/cable/green{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/obj/machinery/door/airlock/maintenance/common, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/structure/catwalk, +/obj/machinery/door/firedoor/glass, +/turf/simulated/floor/plating, +/area/maintenance/station/eng_upper) +"dX" = ( +/obj/structure/grille, +/obj/structure/window/reinforced/full, +/obj/structure/window/reinforced{ + dir = 8 + }, +/obj/machinery/door/firedoor/glass, +/turf/simulated/floor/plating, +/area/vacant/vacant_restaurant_upper) "dY" = ( /obj/machinery/light{ dir = 8 @@ -2705,6 +2746,83 @@ }, /turf/simulated/floor/lino, /area/chapel/office) +"ed" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/obj/structure/cable/green{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/turf/simulated/floor/plating, +/area/vacant/vacant_restaurant_upper) +"ee" = ( +/obj/machinery/atmospherics/pipe/simple/hidden{ + dir = 4 + }, +/obj/machinery/door/airlock/maintenance/common, +/obj/machinery/door/firedoor/glass, +/turf/simulated/floor/tiled/dark, +/area/ai_monitored/storage/eva) +"ef" = ( +/obj/machinery/meter, +/obj/machinery/atmospherics/pipe/simple/hidden{ + dir = 5; + icon_state = "intact" + }, +/obj/machinery/alarm{ + dir = 1; + icon_state = "alarm0"; + pixel_y = -22 + }, +/turf/simulated/floor/tiled/dark, +/area/ai_monitored/storage/eva) +"eg" = ( +/obj/structure/grille, +/obj/structure/window/reinforced/full, +/obj/structure/window/reinforced, +/obj/machinery/door/firedoor/glass, +/turf/simulated/floor/plating, +/area/vacant/vacant_restaurant_upper) +"eh" = ( +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/effect/decal/cleanable/dirt, +/obj/machinery/alarm{ + dir = 1; + icon_state = "alarm0"; + pixel_y = -22 + }, +/turf/simulated/floor, +/area/bridge/meeting_room) +"ei" = ( +/obj/structure/cable/green{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/effect/decal/cleanable/dirt, +/obj/machinery/alarm{ + dir = 1; + icon_state = "alarm0"; + pixel_y = -22 + }, +/turf/simulated/floor, +/area/bridge/meeting_room) +"ej" = ( +/obj/machinery/atmospherics/unary/vent_scrubber/on, +/obj/machinery/alarm{ + dir = 8; + pixel_x = 25; + pixel_y = 0 + }, +/turf/simulated/floor/tiled/dark, +/area/storage/tech) "ek" = ( /obj/structure/cable/pink, /obj/machinery/power/apc{ @@ -2779,11 +2897,49 @@ }, /turf/simulated/floor/tiled, /area/security/brig) +"er" = ( +/obj/machinery/light/small{ + dir = 8 + }, +/obj/machinery/alarm{ + dir = 1; + pixel_y = -25 + }, +/turf/simulated/floor/tiled/dark, +/area/ai_monitored/storage/eva) "es" = ( /obj/effect/decal/cleanable/dirt, /obj/machinery/hologram/holopad, /turf/simulated/floor/tiled/steel_dirty, /area/security/brig) +"et" = ( +/obj/machinery/light/small{ + dir = 4; + pixel_y = 0 + }, +/obj/machinery/alarm{ + dir = 1; + pixel_y = -25 + }, +/turf/simulated/floor/tiled/dark, +/area/ai_monitored/storage/eva) +"eu" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/obj/structure/cable/green{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/turf/simulated/floor/tiled, +/area/hallway/station/port) "ev" = ( /obj/structure/disposalpipe/segment{ dir = 4 @@ -2821,6 +2977,22 @@ }, /turf/simulated/floor/tiled/dark, /area/security/brig) +"ex" = ( +/obj/effect/floor_decal/borderfloor{ + dir = 8 + }, +/obj/effect/floor_decal/corner/lightgrey/border{ + dir = 8 + }, +/obj/effect/floor_decal/steeldecal/steel_decals7{ + dir = 6 + }, +/obj/effect/floor_decal/steeldecal/steel_decals7{ + dir = 5 + }, +/obj/machinery/door/firedoor/glass/hidden/steel, +/turf/simulated/floor/tiled, +/area/tether/station/stairs_two) "ey" = ( /obj/structure/table/woodentable, /obj/item/device/flashlight/lamp{ @@ -2907,8 +3079,10 @@ }, /obj/machinery/atmospherics/pipe/zpipe/up/scrubbers, /obj/machinery/atmospherics/pipe/zpipe/up/supply, -/obj/machinery/alarm{ - pixel_y = 22 +/obj/machinery/turretid/stun{ + control_area = /area/ai/foyer; + name = "AI Core Access turret control"; + pixel_y = 30 }, /turf/simulated/floor/tiled/techfloor, /area/ai_upload) @@ -2919,6 +3093,14 @@ }, /turf/simulated/floor/tiled/techfloor, /area/ai_upload) +"eJ" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/machinery/door/firedoor/glass/hidden/steel{ + dir = 1 + }, +/turf/simulated/floor/tiled, +/area/tether/station/stairs_two) "eK" = ( /obj/effect/floor_decal/techfloor{ dir = 4 @@ -2936,6 +3118,46 @@ /obj/structure/lattice, /turf/space, /area/space) +"eN" = ( +/obj/structure/cable{ + d1 = 1; + d2 = 2; + icon_state = "1-2"; + pixel_y = 0 + }, +/obj/effect/floor_decal/borderfloor{ + dir = 4 + }, +/obj/effect/floor_decal/corner/lightgrey/border{ + dir = 4 + }, +/obj/effect/floor_decal/steeldecal/steel_decals7{ + dir = 9 + }, +/obj/effect/floor_decal/steeldecal/steel_decals7{ + dir = 10 + }, +/obj/machinery/door/firedoor/glass/hidden/steel{ + dir = 8 + }, +/turf/simulated/floor/tiled, +/area/tether/station/stairs_two) +"eO" = ( +/obj/machinery/alarm{ + pixel_y = 22 + }, +/turf/simulated/floor/tiled/dark, +/area/ai_monitored/storage/eva) +"eP" = ( +/obj/machinery/atmospherics/unary/vent_scrubber/on{ + dir = 1 + }, +/obj/machinery/alarm{ + dir = 1; + pixel_y = -25 + }, +/turf/simulated/floor/tiled, +/area/tether/station/stairs_two) "eQ" = ( /obj/machinery/atmospherics/unary/vent_pump/on{ dir = 4 @@ -2953,6 +3175,17 @@ }, /turf/simulated/floor/tiled, /area/security/brig) +"eR" = ( +/obj/effect/floor_decal/techfloor, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/obj/machinery/alarm{ + dir = 1; + pixel_y = -22 + }, +/turf/simulated/floor/bluegrid, +/area/ai_upload) "eS" = ( /obj/effect/floor_decal/industrial/warning/corner{ icon_state = "warningcorner"; @@ -2971,6 +3204,114 @@ }, /turf/simulated/floor/tiled, /area/security/brig) +"eT" = ( +/obj/effect/floor_decal/steeldecal/steel_decals7{ + dir = 1 + }, +/obj/effect/floor_decal/steeldecal/steel_decals7{ + dir = 8 + }, +/obj/effect/floor_decal/steeldecal/steel_decals5, +/obj/machinery/alarm{ + pixel_y = 22 + }, +/turf/simulated/floor/tiled, +/area/bridge/meeting_room) +"eU" = ( +/obj/effect/floor_decal/borderfloorwhite, +/obj/effect/floor_decal/corner/paleblue/border, +/obj/machinery/camera/network/medbay{ + dir = 1 + }, +/obj/effect/landmark{ + name = "lightsout" + }, +/turf/simulated/floor/tiled/white, +/area/hallway/secondary/escape/medical_escape_pod_hallway) +"eV" = ( +/obj/structure/table/wooden_reinforced, +/obj/item/weapon/paper_bin{ + pixel_x = 1; + pixel_y = 8 + }, +/obj/item/weapon/pen/blue{ + pixel_x = -2; + pixel_y = -2 + }, +/obj/item/weapon/pen, +/obj/item/weapon/pen/red{ + pixel_x = 2; + pixel_y = 2 + }, +/turf/simulated/floor/carpet/bcarpet, +/area/tether/station/public_meeting_room) +"eW" = ( +/obj/machinery/turretid/stun{ + control_area = /area/ai_upload; + name = "AI Upload turret control"; + pixel_x = 0; + pixel_y = 30 + }, +/obj/machinery/alarm{ + dir = 4; + pixel_x = -23; + pixel_y = 0 + }, +/turf/simulated/floor/tiled/techfloor, +/area/ai_upload_foyer) +"eX" = ( +/obj/structure/table/steel, +/obj/effect/floor_decal/techfloor{ + dir = 8 + }, +/obj/item/weapon/folder/white, +/turf/simulated/floor/tiled/techfloor, +/area/medical/morgue) +"eY" = ( +/obj/structure/grille, +/obj/machinery/door/firedoor/glass, +/obj/structure/window/reinforced/polarized/full{ + id = "chapel" + }, +/turf/simulated/floor/plating, +/area/chapel/office) +"eZ" = ( +/obj/structure/grille, +/obj/machinery/door/firedoor/glass, +/obj/structure/disposalpipe/segment, +/obj/structure/window/reinforced/polarized/full{ + id = "chapel" + }, +/turf/simulated/floor/plating, +/area/chapel/office) +"fa" = ( +/obj/machinery/door/firedoor/glass, +/obj/structure/grille, +/obj/structure/window/reinforced/polarized/full{ + id = "interrogation" + }, +/obj/structure/window/reinforced/tinted{ + dir = 8; + icon_state = "twindow" + }, +/obj/structure/window/reinforced/tinted, +/obj/structure/window/reinforced/tinted{ + dir = 1 + }, +/turf/simulated/floor, +/area/security/interrogation) +"fb" = ( +/obj/machinery/door/firedoor/glass, +/obj/structure/grille, +/obj/structure/window/reinforced/polarized/full{ + id = "interrogation" + }, +/obj/structure/window/reinforced/tinted, +/obj/structure/window/reinforced/tinted{ + dir = 1 + }, +/turf/simulated/floor, +/area/security/interrogation) "fc" = ( /obj/effect/floor_decal/borderfloor{ dir = 4 @@ -2996,6 +3337,44 @@ "fd" = ( /turf/simulated/wall/r_wall, /area/security/interrogation) +"fe" = ( +/obj/machinery/door/firedoor/glass, +/obj/structure/grille, +/obj/structure/window/reinforced/polarized/full{ + id = "interrogation" + }, +/obj/structure/window/reinforced/tinted{ + dir = 4; + icon_state = "twindow" + }, +/obj/structure/window/reinforced/tinted, +/obj/structure/window/reinforced/tinted{ + dir = 1 + }, +/turf/simulated/floor, +/area/security/interrogation) +"ff" = ( +/obj/machinery/door/firedoor/glass, +/obj/structure/grille, +/obj/structure/disposalpipe/segment, +/obj/structure/window/reinforced/full, +/turf/simulated/floor/plating, +/area/hallway/station/starboard) +"fg" = ( +/obj/machinery/door/firedoor/glass, +/obj/structure/grille, +/obj/structure/window/reinforced/full, +/turf/simulated/floor/plating, +/area/hallway/station/starboard) +"fh" = ( +/obj/effect/floor_decal/techfloor{ + dir = 8 + }, +/obj/machinery/camera/network/command{ + dir = 4 + }, +/turf/simulated/floor/bluegrid, +/area/ai_upload) "fi" = ( /obj/machinery/alarm{ dir = 4; @@ -3054,14 +3433,19 @@ /turf/simulated/wall, /area/chapel/main) "fp" = ( -/obj/effect/floor_decal/techfloor{ - dir = 8 +/obj/structure/sink{ + dir = 4; + icon_state = "sink"; + pixel_x = 11; + pixel_y = 0 }, -/obj/machinery/camera/motion/security{ - dir = 4 +/turf/simulated/floor/tiled/white, +/area/medical/virologyaccess) +"fq" = ( +/turf/simulated/shuttle/wall/voidcraft/green{ + hard_corner = 1 }, -/turf/simulated/floor/bluegrid, -/area/ai_upload) +/area/tether/elevator) "fr" = ( /obj/effect/floor_decal/industrial/outline/grey, /obj/structure/window/reinforced{ @@ -3086,6 +3470,9 @@ }, /turf/simulated/floor/tiled/techfloor, /area/ai_upload) +"fu" = ( +/turf/simulated/floor/holofloor/tiled/dark, +/area/tether/elevator) "fv" = ( /obj/effect/floor_decal/techfloor{ dir = 4 @@ -3095,6 +3482,12 @@ }, /turf/simulated/floor/bluegrid, /area/ai_upload) +"fw" = ( +/obj/structure/sign/deck2, +/turf/simulated/shuttle/wall/voidcraft/green{ + hard_corner = 1 + }, +/area/tether/elevator) "fx" = ( /obj/effect/decal/cleanable/dirt, /obj/structure/table/rack{ @@ -3105,6 +3498,35 @@ /obj/random/maintenance/clean, /turf/simulated/floor/plating, /area/engineering/shaft) +"fy" = ( +/obj/structure/shuttle/engine/propulsion{ + dir = 8; + icon_state = "propulsion_l" + }, +/turf/space, +/turf/simulated/shuttle/plating/airless/carry, +/area/shuttle/large_escape_pod1/station{ + base_turf = /turf/simulated/mineral/floor/vacuum + }) +"fz" = ( +/obj/structure/shuttle/engine/propulsion{ + dir = 8 + }, +/turf/space, +/turf/simulated/shuttle/plating/airless/carry, +/area/shuttle/large_escape_pod1/station{ + base_turf = /turf/simulated/mineral/floor/vacuum + }) +"fA" = ( +/obj/structure/shuttle/engine/propulsion{ + dir = 8; + icon_state = "propulsion_r" + }, +/turf/space, +/turf/simulated/shuttle/plating/airless/carry, +/area/shuttle/large_escape_pod1/station{ + base_turf = /turf/simulated/mineral/floor/vacuum + }) "fB" = ( /obj/structure/stairs/south, /turf/simulated/floor/tiled, @@ -3156,16 +3578,6 @@ /obj/random/trash_pile, /turf/simulated/floor, /area/maintenance/station/sec_lower) -"fO" = ( -/obj/structure/grille, -/obj/machinery/door/firedoor/glass, -/obj/structure/window/reinforced/polarized{ - dir = 10; - icon_state = "fwindow"; - id = "chapel" - }, -/turf/simulated/floor/plating, -/area/chapel/office) "fP" = ( /obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, /obj/machinery/atmospherics/pipe/simple/hidden/supply, @@ -3181,17 +3593,6 @@ }, /turf/simulated/floor/lino, /area/chapel/office) -"fQ" = ( -/obj/structure/grille, -/obj/machinery/door/firedoor/glass, -/obj/structure/disposalpipe/segment, -/obj/structure/window/reinforced/polarized{ - dir = 10; - icon_state = "fwindow"; - id = "chapel" - }, -/turf/simulated/floor/plating, -/area/chapel/office) "fR" = ( /obj/structure/cable/pink{ icon_state = "1-2" @@ -3437,13 +3838,6 @@ }, /turf/simulated/floor/bluegrid, /area/ai_upload) -"go" = ( -/obj/effect/floor_decal/techfloor, -/obj/machinery/atmospherics/pipe/simple/hidden/supply{ - dir = 4 - }, -/turf/simulated/floor/bluegrid, -/area/ai_upload) "gp" = ( /obj/structure/cable/cyan{ d1 = 1; @@ -3776,24 +4170,6 @@ /obj/structure/disposalpipe/segment, /turf/simulated/floor/tiled, /area/security/security_cell_hallway) -"ha" = ( -/obj/machinery/door/firedoor/glass, -/obj/structure/grille, -/obj/structure/window/reinforced/polarized{ - dir = 10; - icon_state = "fwindow"; - id = "chapel" - }, -/obj/structure/window/reinforced/tinted, -/obj/structure/window/reinforced/tinted{ - dir = 1 - }, -/obj/structure/window/reinforced/tinted{ - dir = 4; - icon_state = "twindow" - }, -/turf/simulated/floor, -/area/security/interrogation) "hc" = ( /obj/structure/cable/pink{ icon_state = "1-2" @@ -5021,22 +5397,6 @@ "jL" = ( /turf/simulated/floor/plating, /area/maintenance/station/eng_upper) -"jM" = ( -/obj/machinery/atmospherics/pipe/simple/hidden/supply{ - dir = 10 - }, -/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ - dir = 10 - }, -/obj/structure/cable/green{ - d1 = 4; - d2 = 8; - icon_state = "4-8" - }, -/obj/structure/disposalpipe/junction/yjunction, -/obj/structure/catwalk, -/turf/simulated/floor/plating, -/area/maintenance/station/eng_upper) "jN" = ( /obj/structure/cable/green{ d1 = 4; @@ -5049,19 +5409,6 @@ /obj/structure/catwalk, /turf/simulated/floor/plating, /area/maintenance/station/eng_upper) -"jO" = ( -/obj/structure/cable/green{ - d1 = 4; - d2 = 8; - icon_state = "4-8" - }, -/obj/machinery/door/airlock/maintenance/common, -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/obj/structure/catwalk, -/turf/simulated/floor/plating, -/area/maintenance/station/eng_upper) "jP" = ( /obj/structure/cable/green{ d1 = 1; @@ -5263,20 +5610,6 @@ /obj/machinery/atmospherics/unary/vent_scrubber/on, /turf/simulated/floor/tiled/techfloor, /area/ai_server_room) -"ks" = ( -/obj/machinery/turretid/stun{ - control_area = "\improper AI Upload Chamber"; - name = "AI Upload turret control"; - pixel_x = 0; - pixel_y = 30 - }, -/obj/machinery/alarm{ - dir = 4; - pixel_x = -23; - pixel_y = 0 - }, -/turf/simulated/floor/tiled/techfloor, -/area/ai_upload_foyer) "kt" = ( /obj/structure/cable/cyan{ d1 = 1; @@ -5340,13 +5673,6 @@ /obj/random/tech_supply, /turf/simulated/floor, /area/vacant/vacant_office) -"kD" = ( -/obj/effect/decal/cleanable/dirt, -/obj/machinery/atmospherics/pipe/cap/hidden/supply{ - dir = 4 - }, -/turf/simulated/floor, -/area/vacant/vacant_office) "kF" = ( /obj/effect/decal/cleanable/dirt, /obj/structure/table, @@ -5504,11 +5830,6 @@ /obj/machinery/door/firedoor/glass, /turf/simulated/open, /area/maintenance/station/eng_upper) -"kY" = ( -/turf/simulated/shuttle/wall/voidcraft/green{ - hard_corner = 1 - }, -/area/hallway/station/starboard) "kZ" = ( /obj/effect/floor_decal/borderfloor{ dir = 1 @@ -5535,7 +5856,7 @@ /turf/simulated/floor/tiled, /area/hallway/station/starboard) "la" = ( -/obj/machinery/camera/network/northern_star, +/obj/machinery/camera/network/tether, /obj/effect/floor_decal/borderfloor{ dir = 1 }, @@ -5906,9 +6227,6 @@ /obj/random/maintenance/clean, /turf/simulated/floor/plating, /area/maintenance/station/eng_upper) -"lH" = ( -/turf/simulated/floor/holofloor/tiled/dark, -/area/hallway/station/starboard) "lI" = ( /obj/machinery/door/firedoor/glass/hidden/steel{ dir = 2 @@ -6068,13 +6386,6 @@ }, /turf/simulated/floor/tiled/dark, /area/storage/tech) -"mf" = ( -/obj/machinery/atmospherics/unary/vent_scrubber/on, -/obj/machinery/light/small{ - dir = 4 - }, -/turf/simulated/floor/tiled/dark, -/area/storage/tech) "mg" = ( /obj/structure/cable/green{ d2 = 2; @@ -6301,27 +6612,6 @@ /obj/machinery/status_display, /turf/simulated/wall, /area/hallway/station/starboard) -"mz" = ( -/obj/machinery/door/firedoor/glass, -/obj/structure/grille, -/obj/structure/disposalpipe/segment, -/obj/structure/window/reinforced/polarized{ - dir = 10; - icon_state = "fwindow"; - id = "lawyer_blast" - }, -/turf/simulated/floor/plating, -/area/hallway/station/starboard) -"mA" = ( -/obj/machinery/door/firedoor/glass, -/obj/structure/grille, -/obj/structure/window/reinforced/polarized{ - dir = 10; - icon_state = "fwindow"; - id = "lawyer_blast" - }, -/turf/simulated/floor/plating, -/area/hallway/station/starboard) "mB" = ( /obj/machinery/door/firedoor/glass, /obj/structure/cable/green{ @@ -6819,7 +7109,7 @@ /obj/structure/disposalpipe/segment{ dir = 4 }, -/obj/machinery/camera/network/northern_star, +/obj/machinery/camera/network/tether, /obj/effect/floor_decal/borderfloor{ dir = 1 }, @@ -7247,12 +7537,6 @@ /obj/effect/floor_decal/industrial/outline/yellow, /turf/simulated/floor/plating, /area/maintenance/station/eng_upper) -"nI" = ( -/obj/structure/sign/deck2, -/turf/simulated/shuttle/wall/voidcraft/green{ - hard_corner = 1 - }, -/area/hallway/station/starboard) "nJ" = ( /obj/machinery/door/firedoor/glass/hidden/steel{ dir = 1 @@ -7566,7 +7850,7 @@ /turf/simulated/floor/tiled, /area/hallway/station/starboard) "op" = ( -/obj/machinery/camera/network/northern_star{ +/obj/machinery/camera/network/tether{ dir = 1 }, /obj/structure/cable{ @@ -7674,7 +7958,7 @@ /turf/simulated/floor/tiled, /area/hallway/station/starboard) "ow" = ( -/obj/machinery/camera/network/northern_star{ +/obj/machinery/camera/network/tether{ dir = 1 }, /obj/effect/floor_decal/borderfloor, @@ -8444,14 +8728,6 @@ /obj/item/clothing/head/helmet/space/void/security, /turf/simulated/floor/tiled/dark, /area/ai_monitored/storage/eva) -"pF" = ( -/obj/structure/grille, -/obj/structure/window/reinforced/full, -/obj/structure/window/reinforced{ - dir = 8 - }, -/turf/simulated/floor/plating, -/area/vacant/vacant_restaurant_upper) "pG" = ( /turf/simulated/floor/plating, /area/vacant/vacant_restaurant_upper) @@ -8694,12 +8970,6 @@ /obj/effect/floor_decal/rust, /turf/simulated/floor, /area/maintenance/evahallway) -"qb" = ( -/obj/machinery/light/small{ - dir = 8 - }, -/turf/simulated/floor/tiled/dark, -/area/ai_monitored/storage/eva) "qc" = ( /turf/simulated/floor/tiled/dark, /area/ai_monitored/storage/eva) @@ -8745,13 +9015,6 @@ /obj/machinery/door/firedoor/glass, /turf/simulated/floor/tiled, /area/ai_monitored/storage/eva) -"qj" = ( -/obj/machinery/light/small{ - dir = 4; - pixel_y = 0 - }, -/turf/simulated/floor/tiled/dark, -/area/ai_monitored/storage/eva) "qk" = ( /obj/effect/decal/cleanable/dirt, /turf/simulated/floor/plating, @@ -8799,22 +9062,6 @@ /obj/effect/floor_decal/steeldecal/steel_decals7, /turf/simulated/floor/tiled, /area/hallway/station/port) -"qq" = ( -/obj/effect/floor_decal/borderfloor{ - dir = 1 - }, -/obj/effect/floor_decal/corner/yellow/border{ - dir = 1 - }, -/obj/effect/floor_decal/steeldecal/steel_decals7{ - dir = 4 - }, -/obj/effect/floor_decal/steeldecal/steel_decals7, -/obj/machinery/door/firedoor/glass/hidden/steel{ - dir = 2 - }, -/turf/simulated/floor/tiled, -/area/hallway/station/port) "qr" = ( /obj/structure/disposalpipe/segment, /obj/machinery/atmospherics/pipe/manifold/hidden/supply{ @@ -8997,7 +9244,7 @@ icon_state = "4-8"; pixel_x = 0 }, -/obj/machinery/camera/network/northern_star, +/obj/machinery/camera/network/tether, /obj/effect/floor_decal/borderfloor{ dir = 1 }, @@ -9311,31 +9558,6 @@ }, /turf/simulated/floor/plating, /area/vacant/vacant_restaurant_upper) -"qZ" = ( -/obj/machinery/atmospherics/pipe/cap/hidden/supply{ - dir = 4 - }, -/obj/structure/cable/green{ - d1 = 4; - d2 = 8; - icon_state = "4-8" - }, -/turf/simulated/floor/plating, -/area/vacant/vacant_restaurant_upper) -"ra" = ( -/obj/machinery/atmospherics/pipe/simple/hidden/supply{ - dir = 4 - }, -/obj/machinery/atmospherics/pipe/cap/hidden/scrubbers{ - dir = 4 - }, -/obj/structure/cable/green{ - d1 = 4; - d2 = 8; - icon_state = "4-8" - }, -/turf/simulated/floor/plating, -/area/vacant/vacant_restaurant_upper) "rb" = ( /obj/structure/disposalpipe/broken{ icon_state = "pipe-b"; @@ -9407,27 +9629,6 @@ }, /turf/simulated/floor/tiled, /area/hallway/station/port) -"rf" = ( -/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ - dir = 4 - }, -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/obj/machinery/atmospherics/pipe/simple/hidden/supply{ - dir = 4 - }, -/obj/machinery/door/firedoor/glass/hidden/steel, -/obj/structure/cable/green{ - d1 = 4; - d2 = 8; - icon_state = "4-8" - }, -/obj/effect/floor_decal/steeldecal/steel_decals5{ - dir = 4 - }, -/turf/simulated/floor/tiled, -/area/hallway/station/port) "rg" = ( /obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{ dir = 1 @@ -9732,15 +9933,9 @@ /area/ai_monitored/storage/eva) "rK" = ( /obj/structure/table/reinforced, -/obj/item/stack/material/glass{ - amount = 50 - }, -/obj/item/stack/material/glass{ - amount = 50 - }, -/obj/item/stack/material/glass{ - amount = 50 - }, +/obj/fiftyspawner/glass, +/obj/fiftyspawner/glass, +/obj/fiftyspawner/glass, /obj/effect/floor_decal/industrial/warning{ dir = 4 }, @@ -9816,20 +10011,6 @@ /obj/machinery/light, /turf/simulated/floor/tiled, /area/hallway/station/port) -"rR" = ( -/obj/effect/floor_decal/borderfloor, -/obj/effect/floor_decal/corner/lightgrey/border, -/obj/effect/floor_decal/steeldecal/steel_decals7{ - dir = 1 - }, -/obj/effect/floor_decal/steeldecal/steel_decals7{ - dir = 8 - }, -/obj/machinery/door/firedoor/glass/hidden/steel{ - dir = 1 - }, -/turf/simulated/floor/tiled, -/area/hallway/station/port) "rS" = ( /obj/effect/floor_decal/borderfloor/corner{ dir = 8 @@ -9888,7 +10069,7 @@ d2 = 8; icon_state = "4-8" }, -/obj/machinery/camera/network/northern_star{ +/obj/machinery/camera/network/tether{ dir = 1 }, /obj/effect/floor_decal/borderfloor, @@ -10117,12 +10298,8 @@ /obj/machinery/camera/network/security{ dir = 8 }, -/obj/item/stack/material/glass/reinforced{ - amount = 50 - }, -/obj/item/stack/rods{ - amount = 50 - }, +/obj/fiftyspawner/rglass, +/obj/fiftyspawner/rods, /obj/effect/floor_decal/industrial/warning{ dir = 4 }, @@ -10176,21 +10353,6 @@ }, /turf/simulated/wall, /area/tether/station/stairs_two) -"sy" = ( -/obj/effect/floor_decal/borderfloor{ - dir = 8 - }, -/obj/effect/floor_decal/corner/lightgrey/border{ - dir = 8 - }, -/obj/effect/floor_decal/steeldecal/steel_decals7{ - dir = 6 - }, -/obj/effect/floor_decal/steeldecal/steel_decals7{ - dir = 5 - }, -/turf/simulated/floor/tiled, -/area/tether/station/stairs_two) "sz" = ( /obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, /obj/machinery/atmospherics/pipe/simple/hidden/supply, @@ -10388,15 +10550,9 @@ /obj/item/stack/material/plasteel{ amount = 10 }, -/obj/item/stack/material/steel{ - amount = 50 - }, -/obj/item/stack/material/steel{ - amount = 50 - }, -/obj/item/stack/material/steel{ - amount = 50 - }, +/obj/fiftyspawner/steel, +/obj/fiftyspawner/steel, +/obj/fiftyspawner/steel, /obj/effect/floor_decal/industrial/warning{ dir = 4 }, @@ -10428,13 +10584,6 @@ }, /turf/simulated/floor/tiled/dark, /area/ai_monitored/storage/eva) -"sV" = ( -/obj/machinery/atmospherics/pipe/simple/hidden{ - dir = 4 - }, -/obj/machinery/door/airlock/maintenance/common, -/turf/simulated/floor/tiled/dark, -/area/ai_monitored/storage/eva) "sW" = ( /obj/machinery/light/small{ dir = 1 @@ -10792,14 +10941,6 @@ /obj/machinery/atmospherics/pipe/simple/hidden, /turf/simulated/floor/tiled/dark, /area/ai_monitored/storage/eva) -"tF" = ( -/obj/machinery/meter, -/obj/machinery/atmospherics/pipe/simple/hidden{ - dir = 5; - icon_state = "intact" - }, -/turf/simulated/floor/tiled/dark, -/area/ai_monitored/storage/eva) "tG" = ( /obj/effect/decal/cleanable/dirt, /obj/random/powercell, @@ -11624,6 +11765,10 @@ icon_state = "0-8" }, /obj/structure/closet/crate/freezer, +/obj/item/weapon/virusdish, +/obj/item/weapon/virusdish, +/obj/item/weapon/virusdish, +/obj/item/weapon/virusdish, /turf/simulated/floor/tiled/white, /area/medical/virology) "vc" = ( @@ -12070,12 +12215,6 @@ }, /turf/simulated/floor/tiled, /area/tether/station/stairs_two) -"vO" = ( -/obj/machinery/atmospherics/unary/vent_scrubber/on{ - dir = 1 - }, -/turf/simulated/floor/tiled, -/area/tether/station/stairs_two) "vP" = ( /obj/machinery/door/firedoor/glass/hidden/steel{ dir = 1 @@ -12083,7 +12222,7 @@ /turf/simulated/floor/tiled, /area/tether/station/stairs_two) "vQ" = ( -/obj/machinery/camera/network/northern_star{ +/obj/machinery/camera/network/tether{ dir = 1 }, /obj/effect/floor_decal/steeldecal/steel_decals6{ @@ -12325,12 +12464,6 @@ "wo" = ( /turf/simulated/wall/r_wall, /area/bridge/meeting_room) -"wp" = ( -/obj/structure/grille, -/obj/structure/window/reinforced/full, -/obj/structure/window/reinforced, -/turf/simulated/floor/plating, -/area/vacant/vacant_restaurant_upper) "wq" = ( /obj/structure/table/rack, /obj/effect/floor_decal/borderfloor{ @@ -12894,7 +13027,6 @@ }, /obj/machinery/camera/network/medbay, /obj/machinery/alarm{ - frequency = 1441; pixel_y = 22 }, /obj/machinery/atmospherics/pipe/simple/hidden{ @@ -13402,13 +13534,6 @@ /obj/structure/sign/nosmoking_1, /turf/simulated/wall, /area/medical/morgue) -"xX" = ( -/obj/structure/table/steel, -/obj/effect/floor_decal/techfloor{ - dir = 8 - }, -/turf/simulated/floor/tiled/techfloor, -/area/medical/morgue) "xY" = ( /obj/structure/bed/chair/office/light{ dir = 8 @@ -13814,18 +13939,6 @@ }, /turf/simulated/floor/tiled/white, /area/medical/virologyaccess) -"yH" = ( -/obj/structure/sink{ - dir = 4; - icon_state = "sink"; - pixel_x = 11; - pixel_y = 0 - }, -/obj/machinery/camera/network/medbay{ - dir = 1 - }, -/turf/simulated/floor/tiled/white, -/area/medical/virologyaccess) "yI" = ( /obj/machinery/light/small, /obj/effect/decal/cleanable/dirt, @@ -14515,13 +14628,6 @@ /obj/machinery/door/airlock/maintenance/medical, /turf/simulated/floor, /area/hallway/secondary/escape/medical_escape_pod_hallway) -"zA" = ( -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/obj/effect/decal/cleanable/dirt, -/turf/simulated/floor, -/area/bridge/meeting_room) "zB" = ( /obj/structure/lattice, /obj/machinery/door/firedoor/glass, @@ -15119,14 +15225,6 @@ }, /turf/simulated/floor/tiled/white, /area/hallway/secondary/escape/medical_escape_pod_hallway) -"As" = ( -/obj/effect/floor_decal/borderfloorwhite, -/obj/effect/floor_decal/corner/paleblue/border, -/obj/machinery/camera/network/medbay{ - dir = 1 - }, -/turf/simulated/floor/tiled/white, -/area/hallway/secondary/escape/medical_escape_pod_hallway) "At" = ( /obj/effect/floor_decal/borderfloorwhite, /obj/effect/floor_decal/corner/paleblue/border, @@ -16930,24 +17028,6 @@ }, /turf/simulated/floor/airless, /area/maintenance/station/sec_lower) -"Fj" = ( -/obj/machinery/door/firedoor/glass, -/obj/structure/grille, -/obj/structure/window/reinforced/polarized{ - dir = 10; - icon_state = "fwindow"; - id = "chapel" - }, -/obj/structure/window/reinforced/tinted, -/obj/structure/window/reinforced/tinted{ - dir = 1 - }, -/obj/structure/window/reinforced/tinted{ - dir = 8; - icon_state = "twindow" - }, -/turf/simulated/floor, -/area/security/interrogation) "Fq" = ( /obj/machinery/atmospherics/pipe/simple/hidden/supply{ dir = 5 @@ -17117,11 +17197,6 @@ /obj/structure/table/steel, /turf/simulated/floor/tiled/steel_dirty, /area/security/brig) -"GV" = ( -/obj/machinery/door/airlock/maintenance/common, -/obj/machinery/door/firedoor/glass, -/turf/simulated/floor, -/area/vacant/vacant_restaurant_upper) "GW" = ( /obj/structure/table/reinforced, /turf/simulated/floor, @@ -17625,17 +17700,6 @@ /obj/machinery/door/airlock/maintenance/common, /turf/simulated/floor, /area/maintenance/evahallway) -"LT" = ( -/obj/structure/table/wooden_reinforced, -/obj/item/weapon/paper_bin{ - pixel_x = 1; - pixel_y = 8 - }, -/obj/item/weapon/pen/blue, -/obj/item/weapon/pen, -/obj/item/weapon/pen/red, -/turf/simulated/floor/carpet/bcarpet, -/area/tether/station/public_meeting_room) "LW" = ( /obj/structure/catwalk, /obj/effect/decal/cleanable/dirt, @@ -17896,20 +17960,6 @@ }, /turf/simulated/floor/tiled, /area/security/security_cell_hallway) -"Of" = ( -/obj/machinery/door/firedoor/glass, -/obj/structure/grille, -/obj/structure/window/reinforced/polarized{ - dir = 10; - icon_state = "fwindow"; - id = "chapel" - }, -/obj/structure/window/reinforced/tinted, -/obj/structure/window/reinforced/tinted{ - dir = 1 - }, -/turf/simulated/floor, -/area/security/interrogation) "Oj" = ( /obj/machinery/alarm{ dir = 8; @@ -19014,7 +19064,6 @@ /area/security/brig) "Wi" = ( /obj/machinery/alarm{ - frequency = 1441; pixel_y = 22 }, /turf/simulated/floor, @@ -19339,11 +19388,9 @@ /obj/machinery/atmospherics/pipe/simple/hidden/supply, /obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, /obj/machinery/alarm{ - breach_detection = 0; dir = 8; pixel_x = 25; - pixel_y = 0; - report_danger_level = 0 + pixel_y = 0 }, /obj/structure/catwalk, /turf/simulated/floor/airless, @@ -19409,12 +19456,6 @@ }, /turf/simulated/floor/plating, /area/security/brig) -"YH" = ( -/obj/machinery/atmospherics/pipe/cap/hidden/scrubbers{ - dir = 4 - }, -/turf/simulated/floor, -/area/vacant/vacant_office) "YK" = ( /obj/machinery/atmospherics/pipe/simple/hidden/green, /obj/structure/disposalpipe/segment, @@ -19452,10 +19493,6 @@ /obj/random/maintenance/engineering, /turf/simulated/floor, /area/chapel/office) -"YW" = ( -/obj/random/trash, -/turf/simulated/floor, -/area/maintenance/station/sec_lower) "Za" = ( /obj/machinery/atmospherics/pipe/simple/hidden/supply, /obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, @@ -23920,16 +23957,16 @@ at FZ FZ FZ +at +dX +dX pd -pF -pF +dX +dX +dX pd -pF -pF -pF -pd -pF -pF +dX +dX pd aP aa @@ -24062,7 +24099,7 @@ Zr Zr FR DA -pd +at pG pG pG @@ -24204,7 +24241,7 @@ IX Yd Or XM -GV +Ln pG qk pG @@ -24346,7 +24383,7 @@ at JH JH at -pd +at pG qk qk @@ -24358,7 +24395,7 @@ ul qk vm qk -wp +eg aP aP ac @@ -24500,7 +24537,7 @@ pG qk pG pG -wp +eg aP aP aP @@ -24642,7 +24679,7 @@ um qk pG pG -wp +eg aP aP aP @@ -24757,7 +24794,7 @@ ac ac aP at -Mn +dr bf bf RS @@ -24909,7 +24946,7 @@ at aP aP lv -mf +ej mE nu nY @@ -24926,7 +24963,7 @@ qm qm sv tb -wp +eg aP aP aP @@ -25068,7 +25105,7 @@ ta ta tb tb -wp +eg aP aP aP @@ -25169,7 +25206,7 @@ at Fs UV at -YW +cL RS at at @@ -25210,7 +25247,7 @@ tb tb tb tb -wp +eg aP aP aP @@ -25352,7 +25389,7 @@ tb tb tb tb -wp +eg aP aP aP @@ -25627,7 +25664,7 @@ oI kJ pG ql -qZ +qY pG sv tb @@ -25636,7 +25673,7 @@ tb tb tb tb -wp +eg aP aP aP @@ -25769,7 +25806,7 @@ oJ kJ pH qm -ra +ed pG sv tb @@ -25778,7 +25815,7 @@ tb tb tb tb -wp +eg aP aP aP @@ -25920,7 +25957,7 @@ tb tb tb tb -wp +eg aP aP aP @@ -26062,7 +26099,7 @@ tb tb tb tb -wp +eg aP aP aP @@ -26487,7 +26524,7 @@ sw un uP vo -vO +eP sw ac ac @@ -26771,7 +26808,7 @@ te te te vq -vO +eP sw ac ac @@ -27046,9 +27083,9 @@ of oM oM pK -qq -rf -rR +qp +eu +rP sx sw sw @@ -27191,7 +27228,7 @@ pK qp re rS -sy +ex tf tI uo @@ -27333,7 +27370,7 @@ pK UU rg rT -sz +eJ sz sz sz @@ -27475,7 +27512,7 @@ pL qr rh rU -sA +eN sA tJ up @@ -28029,7 +28066,7 @@ ht hV hV aj -jM +dS ki kU lD @@ -28046,7 +28083,7 @@ rY KI Ha RJ -LT +eV Pj ev vT @@ -28455,7 +28492,7 @@ fd cx fd aj -jO +dW kj kX lG @@ -28592,19 +28629,19 @@ fd Mp Sy Mp -Fj +fa En hY fd LD jP kk -kY -kY -kY -kY -kY -kY +fq +fq +fq +fq +fq +fq jj pj kj @@ -28627,7 +28664,7 @@ xd zj vT Ad -As +eU AH AY Bp @@ -28734,19 +28771,19 @@ fd fK gb gE -Of +fb WL hZ fd fN jQ kk -kY -lH -lH -lH -lH -kY +fq +fu +fu +fu +fu +fq jj kj pO @@ -28876,19 +28913,19 @@ fd fL gc Mp -ha +fe hw ia fd jl jR kk -kY -lH -lH -lH -lH -kY +fq +fu +fu +fu +fu +fq jL kj pP @@ -29025,12 +29062,12 @@ fd Tj jS kk -kY -lH -lH -lH -lH -kY +fq +fu +fu +fu +fu +fq oR kj pQ @@ -29047,7 +29084,7 @@ vV ww xh xx -xX +eX yz uW zl @@ -29148,7 +29185,7 @@ RS at RS RS -bf +cW bf bf RS @@ -29167,12 +29204,12 @@ aN XM jS kk -kY -lH -lH -lH -lH -kY +fq +fu +fu +fu +fu +fq oS kj pR @@ -29309,12 +29346,12 @@ SI SI RT kk -kY -kY -lH -lH -nI -kY +fq +fq +fu +fu +fw +fq kj kj pS @@ -29583,7 +29620,7 @@ dy dY ey iH -fO +eY ge gI hc @@ -29725,7 +29762,7 @@ dz dZ ez fj -fO +eY gf gJ hd @@ -30009,7 +30046,7 @@ dB eb eB fl -fQ +eZ gh gL hf @@ -30052,11 +30089,11 @@ AN AN Bw yY -cL -cW -cW -cW -dm +fy +fz +fz +fz +fA yY ac ac @@ -30151,7 +30188,7 @@ dC ec eC fm -fO +eY gi gM hg @@ -30468,7 +30505,7 @@ wF xn xE yd -yH +fp yX zv zW @@ -31002,7 +31039,7 @@ bg db dE To -fp +fh eE gm dE @@ -31180,7 +31217,7 @@ wo wo wo wo -zA +eh zZ aP AF @@ -31288,7 +31325,7 @@ dE eG fr fV -go +eR dE hk hG @@ -31296,7 +31333,7 @@ il iT jp jY -ks +eW ll lQ jY @@ -31606,7 +31643,7 @@ wo yi yK wo -zD +ei zZ ac aP @@ -31745,7 +31782,7 @@ wm wO xq wo -yi +eT yK wo zD @@ -32276,8 +32313,8 @@ bz bV cj cF -cF dg +dm dG el bg @@ -32441,10 +32478,10 @@ Tl Uu oY pw -qb +er oY rF -qb +er oY tx ud @@ -32588,7 +32625,7 @@ oY rG qc oY -qc +eO qc qc qc @@ -33003,7 +33040,7 @@ js kz js jx -mz +ff nm nP oA @@ -33145,7 +33182,7 @@ jt jx js NJ -mA +fg nn nR oB @@ -33426,7 +33463,7 @@ Ll iY js Rl -kD +jx ls ma mB @@ -33713,7 +33750,7 @@ js kF jx Nh -mA +fg nl nU ot @@ -33854,14 +33891,14 @@ jx kd kG jx -YH -mA +js +fg nr nV oF oY pE -qj +et oY rN qc @@ -34007,7 +34044,7 @@ oY oY oY oY -sV +ee oY oY uL @@ -34150,7 +34187,7 @@ ac ac oY sW -tF +ef oY uM oY diff --git a/maps/tether/tether-07-station3.dmm b/maps/tether/tether-07-station3.dmm index f3de244601..e0dba22890 100644 --- a/maps/tether/tether-07-station3.dmm +++ b/maps/tether/tether-07-station3.dmm @@ -122,6 +122,14 @@ }, /turf/simulated/floor, /area/security/eva) +"an" = ( +/obj/machinery/door/airlock/maintenance/sec{ + name = "Security Airlock Access"; + req_access = list(1,2,18) + }, +/obj/machinery/door/firedoor/glass, +/turf/simulated/floor, +/area/security/eva) "ao" = ( /turf/simulated/wall/r_wall, /area/security/armory/blue) @@ -1473,6 +1481,20 @@ /obj/structure/closet/bombcloset/double, /turf/simulated/floor/tiled/dark, /area/security/armory/blue) +"cn" = ( +/obj/machinery/door/airlock/engineering{ + name = "Security Substation"; + req_one_access = list(1,11,24) + }, +/obj/structure/cable{ + d1 = 4; + d2 = 8; + icon_state = "4-8"; + pixel_x = 0 + }, +/obj/machinery/door/firedoor/glass, +/turf/simulated/floor, +/area/maintenance/substation/security) "co" = ( /obj/effect/floor_decal/borderfloor{ dir = 4 @@ -1498,10 +1520,15 @@ }, /area/maintenance/cargo) "cq" = ( -/obj/structure/grille, -/obj/structure/window/reinforced/full, +/obj/random/trash_pile, +/obj/effect/decal/cleanable/cobweb{ + icon_state = "cobweb2" + }, +/obj/structure/railing{ + dir = 8 + }, /turf/simulated/floor, -/area/security/breakroom) +/area/maintenance/station/sec_upper) "cr" = ( /obj/effect/floor_decal/borderfloor{ dir = 4 @@ -1514,6 +1541,20 @@ }, /turf/simulated/floor/tiled, /area/security/hallwayaux) +"cs" = ( +/obj/structure/cable{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/obj/structure/catwalk, +/obj/machinery/camera/network/command, +/obj/machinery/alarm{ + dir = 1; + pixel_y = -22 + }, +/turf/simulated/floor, +/area/maintenance/cargo) "ct" = ( /obj/machinery/door/firedoor/glass, /obj/machinery/door/blast/regular{ @@ -1538,6 +1579,12 @@ "cv" = ( /turf/simulated/wall/r_wall, /area/security/range) +"cw" = ( +/obj/structure/grille, +/obj/structure/window/reinforced/full, +/obj/machinery/door/firedoor/glass, +/turf/simulated/floor, +/area/security/breakroom) "cx" = ( /obj/machinery/atmospherics/pipe/simple/hidden/supply{ dir = 9 @@ -1585,15 +1632,17 @@ /turf/simulated/floor, /area/maintenance/cargo) "cB" = ( -/obj/structure/cable{ - d1 = 4; - d2 = 8; - icon_state = "4-8" +/obj/structure/cable/cyan{ + d2 = 2; + icon_state = "0-2" }, -/obj/structure/catwalk, -/obj/machinery/camera/network/command, -/turf/simulated/floor, -/area/maintenance/cargo) +/obj/machinery/power/apc{ + dir = 4; + name = "east bump"; + pixel_x = 28 + }, +/turf/simulated/floor/bluegrid, +/area/ai) "cC" = ( /obj/structure/cable{ d1 = 4; @@ -1842,13 +1891,66 @@ }, /turf/simulated/floor/carpet, /area/security/breakroom) +"db" = ( +/obj/structure/cable/cyan{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/obj/effect/floor_decal/techfloor{ + dir = 5 + }, +/obj/effect/floor_decal/techfloor/corner{ + dir = 8 + }, +/turf/simulated/floor/tiled/techfloor/grid, +/area/ai) "dc" = ( /turf/simulated/floor/plating, /area/maintenance/station/ai) "dd" = ( -/obj/machinery/recharge_station, +/obj/structure/toilet, +/obj/machinery/light/small{ + dir = 1 + }, /turf/simulated/floor/tiled/white, /area/security/security_bathroom) +"de" = ( +/obj/machinery/door/airlock/glass_security{ + name = "Break Room"; + req_one_access = list(1,38) + }, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/obj/structure/cable/green{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, +/obj/machinery/door/firedoor/glass, +/turf/simulated/floor/wood, +/area/security/breakroom) +"df" = ( +/obj/effect/floor_decal/techfloor{ + dir = 8 + }, +/obj/effect/floor_decal/techfloor{ + dir = 4 + }, +/obj/structure/cable/cyan{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/turf/simulated/floor/tiled/techfloor/grid, +/area/ai) "dg" = ( /obj/effect/floor_decal/borderfloorblack{ dir = 9 @@ -1930,6 +2032,36 @@ /obj/effect/floor_decal/industrial/outline/yellow, /turf/simulated/floor/tiled, /area/security/hallwayaux) +"dq" = ( +/obj/machinery/door/airlock/security{ + name = "Security Restroom"; + req_one_access = list(1,38) + }, +/obj/structure/cable/green{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/obj/machinery/door/firedoor/glass, +/turf/simulated/floor/tiled/white, +/area/security/security_bathroom) +"dr" = ( +/obj/effect/decal/cleanable/dirt, +/obj/structure/catwalk, +/obj/machinery/alarm{ + dir = 4; + icon_state = "alarm0"; + pixel_x = -22; + pixel_y = 0 + }, +/turf/simulated/floor, +/area/maintenance/station/sec_upper) "ds" = ( /obj/structure/bed/chair/office/dark{ dir = 8 @@ -1971,6 +2103,22 @@ /obj/structure/catwalk, /turf/simulated/floor, /area/maintenance/station/sec_upper) +"dx" = ( +/obj/structure/cable/green{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/obj/structure/disposalpipe/segment{ + dir = 2; + icon_state = "pipe-c" + }, +/obj/structure/catwalk, +/obj/machinery/alarm{ + pixel_y = 22 + }, +/turf/simulated/floor, +/area/maintenance/station/sec_upper) "dy" = ( /obj/effect/decal/cleanable/dirt, /obj/structure/catwalk, @@ -2041,17 +2189,42 @@ /turf/simulated/floor, /area/maintenance/cargo) "dG" = ( -/obj/structure/cable/cyan{ +/obj/machinery/door/airlock/vault/bolted{ + req_access = list(53) + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/structure/cable{ + d1 = 1; d2 = 2; - icon_state = "0-2" + icon_state = "1-2" }, -/obj/machinery/power/apc{ - dir = 4; - name = "east bump"; - pixel_x = 28 +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 }, -/turf/simulated/floor/bluegrid, -/area/ai) +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, +/obj/machinery/door/blast/regular{ + id = "VaultAc"; + name = "\improper Vault" + }, +/obj/structure/cable{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/obj/machinery/button/remote/blast_door{ + id = "VaultAc"; + name = "Vault Blast Door"; + pixel_x = 0; + pixel_y = -32; + req_access = list(53); + req_one_access = list(53) + }, +/obj/machinery/door/firedoor/glass, +/turf/simulated/floor/tiled/dark, +/area/security/nuke_storage) "dH" = ( /obj/effect/landmark/start{ name = "AI" @@ -2181,6 +2354,25 @@ }, /turf/simulated/floor/tiled, /area/security/hallwayaux) +"dN" = ( +/obj/effect/floor_decal/borderfloorblack{ + dir = 1 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 10 + }, +/obj/machinery/light/small{ + icon_state = "bulb1"; + dir = 1 + }, +/obj/machinery/alarm{ + pixel_y = 22 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 6 + }, +/turf/simulated/floor/tiled/dark, +/area/security/armory/blue) "dO" = ( /obj/effect/floor_decal/borderfloor{ dir = 9 @@ -2195,6 +2387,20 @@ "dP" = ( /turf/simulated/wall, /area/security/security_bathroom) +"dQ" = ( +/obj/machinery/disposal, +/obj/structure/disposalpipe/trunk{ + dir = 8 + }, +/obj/effect/floor_decal/borderfloor, +/obj/effect/floor_decal/corner/red/border, +/obj/machinery/alarm{ + dir = 8; + icon_state = "alarm0"; + pixel_x = 24 + }, +/turf/simulated/floor/tiled, +/area/security/range) "dR" = ( /turf/simulated/wall/r_wall, /area/security/breakroom) @@ -2235,19 +2441,26 @@ /turf/simulated/floor/tiled/techfloor/grid, /area/ai) "dX" = ( -/obj/structure/cable/cyan{ +/obj/effect/floor_decal/borderfloor{ + dir = 8 + }, +/obj/effect/floor_decal/corner/red/border{ + dir = 8 + }, +/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{ + dir = 8 + }, +/obj/structure/cable/green{ d1 = 1; d2 = 2; icon_state = "1-2" }, -/obj/effect/floor_decal/techfloor{ - dir = 5 - }, -/obj/effect/floor_decal/techfloor/corner{ +/obj/structure/disposalpipe/segment, +/obj/machinery/atmospherics/pipe/manifold/hidden/supply{ dir = 8 }, -/turf/simulated/floor/tiled/techfloor/grid, -/area/ai) +/turf/simulated/floor/tiled, +/area/security/hallway) "dY" = ( /obj/machinery/door/airlock/hatch{ icon_state = "door_locked"; @@ -2259,32 +2472,10 @@ /turf/simulated/floor/tiled/dark, /area/ai) "dZ" = ( -/obj/machinery/ai_slipper{ - icon_state = "motion0" - }, -/obj/machinery/turretid/stun{ - check_synth = 1; - name = "AI Chamber turret control"; - pixel_x = 30; - pixel_y = 24 - }, -/obj/machinery/flasher{ - id = "AI"; - pixel_x = -24; - pixel_y = 25 - }, -/obj/machinery/button/remote/blast_door{ - desc = "A remote control-switch for the AI core maintenance door."; - id = "AICore"; - name = "AI Maintenance Hatch"; - pixel_x = 8; - pixel_y = -25; - req_access = list(16) - }, -/obj/machinery/light/small, -/obj/machinery/hologram/holopad, -/turf/simulated/floor/tiled/dark, -/area/ai) +/obj/structure/table/steel, +/obj/random/maintenance/clean, +/turf/simulated/floor, +/area/maintenance/station/ai) "ea" = ( /obj/structure/cable/cyan{ d1 = 1; @@ -2432,15 +2623,32 @@ /obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ dir = 4 }, -/turf/simulated/wall, +/turf/simulated/wall{ + can_open = 1 + }, /area/maintenance/station/ai) "en" = ( /obj/machinery/camera/network/security{ - c_tag = "SEC - Vault Exterior West"; + icon_state = "camera"; dir = 8 }, /turf/simulated/floor/wood, /area/security/breakroom) +"eo" = ( +/obj/effect/floor_decal/borderfloor{ + dir = 4 + }, +/obj/effect/floor_decal/corner/red/border{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 9 + }, +/obj/machinery/atmospherics/unary/vent_pump/on{ + dir = 8 + }, +/turf/simulated/floor/tiled, +/area/security/hallway) "ep" = ( /turf/simulated/wall, /area/security/security_lockerroom) @@ -2519,19 +2727,23 @@ /turf/simulated/floor/tiled/dark, /area/security/security_lockerroom) "ew" = ( -/obj/effect/floor_decal/techfloor{ +/obj/effect/floor_decal/borderfloor{ dir = 8 }, -/obj/effect/floor_decal/techfloor{ - dir = 4 +/obj/effect/floor_decal/corner/red/border{ + dir = 8 }, -/obj/structure/cable/cyan{ +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/obj/structure/cable/green{ d1 = 1; d2 = 2; icon_state = "1-2" }, -/turf/simulated/floor/tiled/techfloor/grid, -/area/ai) +/obj/structure/disposalpipe/segment, +/obj/machinery/door/firedoor/glass, +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/turf/simulated/floor/tiled, +/area/security/hallway) "ex" = ( /obj/effect/floor_decal/techfloor{ dir = 4 @@ -2620,6 +2832,27 @@ /obj/structure/window/reinforced/full, /turf/simulated/floor, /area/security/observation) +"eE" = ( +/obj/effect/floor_decal/borderfloor{ + dir = 4 + }, +/obj/effect/floor_decal/corner/red/border{ + dir = 4 + }, +/obj/effect/floor_decal/borderfloor/corner2{ + dir = 5 + }, +/obj/effect/floor_decal/corner/red/bordercorner2{ + dir = 5 + }, +/obj/machinery/door/firedoor/glass, +/obj/structure/extinguisher_cabinet{ + dir = 8; + icon_state = "extinguisher_closed"; + pixel_x = 30 + }, +/turf/simulated/floor/tiled, +/area/security/hallway) "eF" = ( /obj/structure/cable/green{ d1 = 4; @@ -2673,6 +2906,16 @@ }, /turf/simulated/floor/tiled/dark, /area/security/security_lockerroom) +"eL" = ( +/obj/structure/disposalpipe/segment, +/obj/effect/decal/cleanable/dirt, +/obj/structure/cable{ + icon_state = "1-2" + }, +/obj/machinery/door/airlock/maintenance/common, +/obj/machinery/door/firedoor/glass, +/turf/simulated/floor, +/area/maintenance/cargo) "eM" = ( /obj/structure/railing{ dir = 4 @@ -2773,7 +3016,6 @@ "eU" = ( /obj/structure/closet/crate, /obj/machinery/alarm{ - frequency = 1441; pixel_y = 22 }, /obj/item/clothing/accessory/tie/horrible, @@ -2805,6 +3047,9 @@ /obj/random/maintenance/security, /obj/random/maintenance/clean, /obj/random/maintenance/clean, +/obj/structure/railing{ + dir = 8 + }, /turf/simulated/floor, /area/maintenance/station/sec_upper) "eX" = ( @@ -2831,6 +3076,26 @@ /obj/structure/table/reinforced, /turf/simulated/floor/tiled, /area/security/briefing_room) +"fa" = ( +/obj/structure/disposalpipe/segment{ + dir = 1; + icon_state = "pipe-c" + }, +/obj/effect/floor_decal/borderfloor{ + dir = 1 + }, +/obj/effect/floor_decal/corner/brown/border{ + dir = 1 + }, +/obj/effect/floor_decal/steeldecal/steel_decals7, +/obj/effect/floor_decal/steeldecal/steel_decals7{ + dir = 4 + }, +/obj/machinery/alarm{ + pixel_y = 22 + }, +/turf/simulated/floor/tiled, +/area/hallway/station/upper) "fb" = ( /obj/machinery/light_switch{ dir = 4; @@ -3276,6 +3541,10 @@ pixel_x = 0; pixel_y = 24 }, +/obj/structure/cable/green{ + d2 = 2; + icon_state = "0-2" + }, /turf/simulated/floor/tiled/white, /area/security/forensics) "fK" = ( @@ -4035,24 +4304,21 @@ /turf/simulated/floor/tiled/dark, /area/security/armory/blue) "he" = ( -/obj/effect/floor_decal/borderfloorblack{ +/obj/effect/floor_decal/borderfloor{ dir = 1 }, -/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ - dir = 10 - }, -/obj/machinery/atmospherics/pipe/simple/hidden/supply{ - dir = 10 - }, -/obj/machinery/light/small{ - icon_state = "bulb1"; +/obj/effect/floor_decal/corner/brown/border{ dir = 1 }, -/obj/machinery/alarm{ - pixel_y = 22 +/obj/effect/floor_decal/steeldecal/steel_decals7, +/obj/effect/floor_decal/steeldecal/steel_decals7{ + dir = 4 }, -/turf/simulated/floor/tiled/dark, -/area/security/armory/blue) +/obj/machinery/door/firedoor/glass/hidden/steel{ + dir = 2 + }, +/turf/simulated/floor/tiled, +/area/quartermaster/foyer) "hf" = ( /obj/effect/floor_decal/borderfloorblack{ dir = 5 @@ -4176,6 +4442,18 @@ /obj/random/cigarettes, /turf/simulated/floor, /area/maintenance/station/ai) +"ht" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/obj/machinery/door/firedoor/glass/hidden/steel{ + dir = 8 + }, +/turf/simulated/floor/tiled, +/area/quartermaster/foyer) "hu" = ( /obj/machinery/door/firedoor/glass, /obj/machinery/door/blast/regular{ @@ -4384,6 +4662,26 @@ }, /turf/simulated/floor/tiled, /area/security/eva) +"hO" = ( +/obj/effect/floor_decal/borderfloor, +/obj/effect/floor_decal/corner/brown/border, +/obj/effect/floor_decal/borderfloor/corner2{ + dir = 9 + }, +/obj/effect/floor_decal/corner/brown/bordercorner2{ + dir = 9 + }, +/obj/effect/floor_decal/steeldecal/steel_decals7{ + dir = 8 + }, +/obj/effect/floor_decal/steeldecal/steel_decals7{ + dir = 1 + }, +/obj/machinery/door/firedoor/glass/hidden/steel{ + dir = 1 + }, +/turf/simulated/floor/tiled, +/area/quartermaster/foyer) "hP" = ( /obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ dir = 4 @@ -4499,14 +4797,16 @@ /turf/simulated/floor/tiled/dark, /area/security/armory/red) "hX" = ( -/obj/machinery/disposal, -/obj/structure/disposalpipe/trunk{ - dir = 8 +/obj/machinery/atmospherics/pipe/manifold/hidden/supply, +/obj/structure/cable{ + icon_state = "1-8" + }, +/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{ + icon_state = "map-scrubbers"; + dir = 4 }, -/obj/effect/floor_decal/borderfloor, -/obj/effect/floor_decal/corner/red/border, /turf/simulated/floor/tiled, -/area/security/range) +/area/hallway/station/upper) "hY" = ( /obj/structure/table/rack{ dir = 8; @@ -4522,12 +4822,24 @@ /turf/simulated/floor/tiled/dark, /area/security/eva) "hZ" = ( -/obj/machinery/door/airlock/maintenance/sec{ - name = "Security Airlock Access"; - req_access = list(1,2,18) +/obj/effect/floor_decal/borderfloor, +/obj/effect/floor_decal/corner/paleblue/border, +/obj/effect/floor_decal/steeldecal/steel_decals7{ + dir = 8 }, -/turf/simulated/floor, -/area/security/eva) +/obj/effect/floor_decal/steeldecal/steel_decals7{ + dir = 1 + }, +/obj/machinery/alarm{ + dir = 1; + icon_state = "alarm0"; + pixel_y = -22 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 5 + }, +/turf/simulated/floor/tiled, +/area/hallway/station/upper) "ia" = ( /obj/structure/table/rack{ dir = 1 @@ -4543,7 +4855,6 @@ "ic" = ( /obj/structure/catwalk, /obj/machinery/alarm{ - frequency = 1441; pixel_y = 22 }, /turf/simulated/floor, @@ -5162,10 +5473,33 @@ /turf/simulated/floor, /area/maintenance/station/ai) "iK" = ( -/obj/structure/table/steel, -/obj/random/maintenance, -/turf/simulated/floor, -/area/maintenance/station/ai) +/obj/machinery/ai_slipper{ + icon_state = "motion0" + }, +/obj/machinery/turretid/stun{ + check_synth = 1; + control_area = /area/ai; + name = "AI Chamber turret control"; + pixel_x = 30; + pixel_y = 24 + }, +/obj/machinery/flasher{ + id = "AI"; + pixel_x = -24; + pixel_y = 25 + }, +/obj/machinery/button/remote/blast_door{ + desc = "A remote control-switch for the AI core maintenance door."; + id = "AICore"; + name = "AI Maintenance Hatch"; + pixel_x = 8; + pixel_y = -25; + req_access = list(16) + }, +/obj/machinery/light/small, +/obj/machinery/hologram/holopad, +/turf/simulated/floor/tiled/dark, +/area/ai) "iL" = ( /obj/effect/floor_decal/borderfloorblack{ dir = 6 @@ -5499,6 +5833,20 @@ /obj/structure/disposalpipe/segment, /turf/simulated/floor/tiled, /area/security/hallwayaux) +"jm" = ( +/obj/effect/floor_decal/borderfloor, +/obj/effect/floor_decal/corner/paleblue/border, +/obj/effect/floor_decal/steeldecal/steel_decals7{ + dir = 8 + }, +/obj/effect/floor_decal/steeldecal/steel_decals7{ + dir = 1 + }, +/obj/machinery/atmospherics/unary/vent_scrubber/on{ + dir = 8 + }, +/turf/simulated/floor/tiled, +/area/hallway/station/upper) "jn" = ( /obj/machinery/newscaster/security_unit{ pixel_y = 32 @@ -5761,6 +6109,14 @@ }, /turf/simulated/floor/tiled, /area/security/hallwayaux) +"jJ" = ( +/obj/machinery/door/airlock{ + name = "Secondary Janitorial Closet"; + req_access = list(26) + }, +/obj/machinery/door/firedoor/border_only, +/turf/simulated/floor/tiled, +/area/maintenance/station/cargo) "jK" = ( /obj/machinery/atmospherics/pipe/simple/hidden/supply{ dir = 4 @@ -5801,6 +6157,16 @@ /obj/item/weapon/storage/box/donut, /turf/simulated/floor/carpet, /area/security/breakroom) +"jO" = ( +/obj/effect/decal/cleanable/dirt, +/obj/effect/floor_decal/rust, +/obj/machinery/alarm{ + dir = 1; + icon_state = "alarm0"; + pixel_y = -22 + }, +/turf/simulated/floor/tiled, +/area/maintenance/station/cargo) "jP" = ( /obj/structure/table/rack{ dir = 4 @@ -5874,26 +6240,16 @@ /turf/simulated/floor/tiled, /area/security/hallwayaux) "jV" = ( -/obj/machinery/door/airlock/glass_security{ - name = "Break Room"; - req_one_access = list(1,38) +/obj/structure/disposalpipe/segment, +/obj/effect/decal/cleanable/dirt, +/obj/machinery/alarm{ + dir = 4; + icon_state = "alarm0"; + pixel_x = -22; + pixel_y = 0 }, -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/obj/machinery/atmospherics/pipe/simple/hidden/supply{ - dir = 4 - }, -/obj/structure/cable/green{ - d1 = 4; - d2 = 8; - icon_state = "4-8" - }, -/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ - dir = 4 - }, -/turf/simulated/floor/wood, -/area/security/breakroom) +/turf/simulated/floor, +/area/maintenance/station/cargo) "jW" = ( /obj/structure/bed/chair/office/dark{ dir = 4 @@ -6006,6 +6362,22 @@ /obj/structure/sign/warning/secure_area, /turf/simulated/wall/r_wall, /area/security/armory/blue) +"kg" = ( +/obj/structure/railing{ + dir = 8 + }, +/obj/structure/railing, +/obj/structure/cable{ + d2 = 2; + icon_state = "0-2" + }, +/obj/machinery/power/apc{ + dir = 4; + name = "east bump"; + pixel_x = 28 + }, +/turf/simulated/floor, +/area/maintenance/station/sec_upper) "kh" = ( /obj/structure/disposalpipe/segment, /turf/simulated/floor/wood, @@ -6091,6 +6463,46 @@ /obj/structure/disposalpipe/segment, /turf/simulated/floor/tiled, /area/security/hallwayaux) +"ks" = ( +/obj/structure/cable{ + icon_state = "2-8" + }, +/obj/structure/catwalk, +/obj/machinery/alarm{ + dir = 8; + pixel_x = 25; + pixel_y = 0 + }, +/obj/structure/cable{ + d1 = 1; + d2 = 2; + icon_state = "1-2"; + pixel_y = 0 + }, +/turf/simulated/floor, +/area/maintenance/station/sec_upper) +"kt" = ( +/obj/effect/floor_decal/rust, +/obj/structure/railing{ + dir = 4 + }, +/obj/structure/table/rack{ + dir = 8; + layer = 2.9 + }, +/obj/random/maintenance/security, +/obj/random/maintenance/security, +/obj/random/maintenance/clean, +/turf/simulated/floor, +/area/maintenance/station/sec_upper) +"ku" = ( +/obj/effect/decal/cleanable/dirt, +/obj/structure/railing{ + dir = 4 + }, +/obj/random/trash_pile, +/turf/simulated/floor, +/area/maintenance/station/sec_upper) "kv" = ( /obj/structure/cable/green{ d1 = 4; @@ -6236,6 +6648,13 @@ /obj/item/weapon/book/manual/command_guide, /turf/simulated/floor/wood, /area/crew_quarters/heads/hos) +"kJ" = ( +/obj/structure/railing{ + dir = 4 + }, +/obj/random/trash_pile, +/turf/simulated/floor, +/area/maintenance/station/sec_upper) "kK" = ( /obj/effect/floor_decal/borderfloorblack{ dir = 8 @@ -6358,7 +6777,6 @@ /area/maintenance/station/ai) "kR" = ( /obj/machinery/alarm{ - frequency = 1441; pixel_y = 22 }, /turf/simulated/floor, @@ -6386,12 +6804,33 @@ }, /turf/simulated/floor, /area/maintenance/station/ai) +"kV" = ( +/obj/structure/railing{ + icon_state = "railing0"; + dir = 1 + }, +/obj/structure/railing{ + dir = 4 + }, +/turf/simulated/floor, +/area/maintenance/station/sec_upper) "kW" = ( /obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ dir = 6 }, /turf/simulated/floor/tiled/white, /area/security/security_bathroom) +"kX" = ( +/obj/structure/railing{ + icon_state = "railing0"; + dir = 1 + }, +/obj/structure/railing{ + dir = 4 + }, +/obj/structure/closet, +/turf/simulated/floor, +/area/maintenance/station/sec_upper) "kY" = ( /obj/effect/floor_decal/borderfloorblack{ dir = 10 @@ -6536,6 +6975,34 @@ }, /turf/simulated/floor/tiled, /area/security/briefing_room) +"lj" = ( +/obj/machinery/door/firedoor/glass, +/obj/structure/cable/green{ + d2 = 4; + icon_state = "0-4" + }, +/obj/structure/cable/green{ + d2 = 2; + icon_state = "0-2" + }, +/obj/structure/grille, +/obj/machinery/door/blast/regular{ + density = 0; + dir = 1; + icon_state = "pdoor0"; + id = "security_lockdown"; + name = "Security Blast Doors"; + opacity = 0 + }, +/obj/structure/window/reinforced/polarized/full{ + id = "hos_office" + }, +/obj/structure/window/reinforced/polarized{ + dir = 8; + id = "hos_office" + }, +/turf/simulated/floor, +/area/crew_quarters/heads/hos) "lk" = ( /obj/effect/floor_decal/techfloor{ dir = 8 @@ -6613,6 +7080,54 @@ }, /turf/simulated/floor, /area/maintenance/station/ai) +"lu" = ( +/obj/machinery/door/firedoor/glass, +/obj/structure/cable/green, +/obj/structure/grille, +/obj/structure/cable/green{ + icon_state = "0-4" + }, +/obj/machinery/door/blast/regular{ + density = 0; + dir = 1; + icon_state = "pdoor0"; + id = "security_lockdown"; + name = "Security Blast Doors"; + opacity = 0 + }, +/obj/structure/window/reinforced/polarized/full{ + id = "hos_office" + }, +/obj/structure/window/reinforced/polarized{ + dir = 8; + id = "hos_office" + }, +/turf/simulated/floor, +/area/crew_quarters/heads/hos) +"lv" = ( +/obj/machinery/door/firedoor/glass, +/obj/machinery/door/blast/regular{ + density = 0; + dir = 4; + icon_state = "pdoor0"; + id = "brig_lockdown"; + name = "Security Blast Doors"; + opacity = 0 + }, +/obj/structure/grille, +/obj/structure/window/reinforced/polarized/full{ + id = "sec_processing" + }, +/turf/simulated/floor, +/area/security/security_processing) +"lw" = ( +/obj/machinery/door/firedoor/glass, +/obj/structure/grille, +/obj/structure/window/reinforced/polarized/full{ + id = "sec_processing" + }, +/turf/simulated/floor, +/area/security/security_processing) "lx" = ( /obj/machinery/door/firedoor/glass, /obj/machinery/door/airlock/security{ @@ -6906,6 +7421,47 @@ "lY" = ( /turf/space, /area/shuttle/antag_space/north) +"lZ" = ( +/obj/machinery/door/firedoor/glass, +/obj/structure/cable/green, +/obj/structure/grille, +/obj/machinery/door/blast/regular{ + density = 0; + dir = 1; + icon_state = "pdoor0"; + id = "security_lockdown"; + name = "Security Blast Doors"; + opacity = 0 + }, +/obj/structure/window/reinforced/polarized/full{ + id = "hos_office" + }, +/obj/structure/window/reinforced/polarized{ + dir = 8; + id = "hos_office" + }, +/turf/simulated/floor, +/area/crew_quarters/heads/hos) +"ma" = ( +/obj/machinery/door/firedoor/glass, +/obj/structure/grille, +/obj/structure/window/reinforced/polarized/full{ + id = "hos_office" + }, +/turf/simulated/floor, +/area/security/breakroom) +"mb" = ( +/obj/structure/grille, +/obj/structure/cable/green{ + d2 = 4; + icon_state = "0-4" + }, +/obj/machinery/door/firedoor/glass, +/obj/structure/window/reinforced/polarized/full{ + id = "hos_office" + }, +/turf/simulated/floor, +/area/security/forensics) "mc" = ( /obj/effect/floor_decal/borderfloorblack{ dir = 9 @@ -7261,36 +7817,31 @@ /turf/simulated/floor/tiled/dark, /area/security/security_lockerroom) "mE" = ( -/obj/effect/floor_decal/borderfloor{ - dir = 8 - }, -/obj/effect/floor_decal/corner/red/border{ - dir = 8 - }, -/obj/machinery/atmospherics/pipe/simple/hidden/supply, -/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{ - dir = 8 - }, +/obj/structure/grille, +/obj/structure/cable/green, /obj/structure/cable/green{ - d1 = 1; - d2 = 2; - icon_state = "1-2" + icon_state = "0-8" }, -/obj/structure/disposalpipe/segment, -/turf/simulated/floor/tiled, -/area/security/hallway) +/obj/machinery/door/firedoor/glass, +/obj/structure/cable/green{ + icon_state = "0-4" + }, +/obj/structure/window/reinforced/polarized/full{ + id = "hos_office" + }, +/turf/simulated/floor, +/area/security/forensics) "mF" = ( -/obj/effect/floor_decal/borderfloor{ - dir = 4 +/obj/structure/grille, +/obj/structure/cable/green{ + icon_state = "0-8" }, -/obj/effect/floor_decal/corner/red/border{ - dir = 4 +/obj/machinery/door/firedoor/glass, +/obj/structure/window/reinforced/polarized/full{ + id = "hos_office" }, -/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ - dir = 9 - }, -/turf/simulated/floor/tiled, -/area/security/hallway) +/turf/simulated/floor, +/area/security/forensics) "mG" = ( /obj/structure/railing{ dir = 8 @@ -7306,6 +7857,48 @@ "mH" = ( /turf/simulated/wall/r_wall, /area/security/hallway) +"mI" = ( +/obj/machinery/door/firedoor/glass, +/obj/structure/cable/green{ + icon_state = "0-4" + }, +/obj/machinery/door/blast/regular{ + density = 0; + dir = 4; + icon_state = "pdoor0"; + id = "security_lockdown"; + name = "Security Blast Doors"; + opacity = 0 + }, +/obj/structure/grille, +/obj/structure/window/reinforced/polarized/full{ + id = "iaa_office" + }, +/turf/simulated/floor, +/area/lawoffice) +"mJ" = ( +/obj/machinery/door/firedoor/glass, +/obj/structure/cable/green{ + d2 = 8; + icon_state = "0-8" + }, +/obj/structure/cable/green{ + icon_state = "0-4" + }, +/obj/machinery/door/blast/regular{ + density = 0; + dir = 4; + icon_state = "pdoor0"; + id = "security_lockdown"; + name = "Security Blast Doors"; + opacity = 0 + }, +/obj/structure/grille, +/obj/structure/window/reinforced/polarized/full{ + id = "iaa_office" + }, +/turf/simulated/floor, +/area/lawoffice) "mK" = ( /obj/effect/floor_decal/borderfloor{ dir = 8 @@ -7403,6 +7996,18 @@ /obj/structure/catwalk, /turf/simulated/floor, /area/maintenance/station/sec_upper) +"mS" = ( +/obj/effect/floor_decal/borderfloor{ + dir = 6 + }, +/obj/effect/floor_decal/corner/red/border{ + dir = 6 + }, +/obj/effect/landmark{ + name = "lightsout" + }, +/turf/simulated/floor/tiled, +/area/security/hallwayaux) "mT" = ( /obj/effect/decal/cleanable/dirt, /obj/structure/catwalk, @@ -7426,6 +8031,22 @@ /obj/random/trash_pile, /turf/simulated/floor, /area/maintenance/cargo) +"mW" = ( +/obj/machinery/recharge_station, +/obj/machinery/light/small{ + dir = 1 + }, +/turf/simulated/floor/tiled/white, +/area/security/security_bathroom) +"mX" = ( +/obj/effect/floor_decal/industrial/warning/corner{ + dir = 1 + }, +/obj/machinery/atmospherics/pipe/simple/hidden{ + dir = 4 + }, +/turf/simulated/floor/tiled/white, +/area/medical/sleeper) "mY" = ( /obj/effect/floor_decal/techfloor{ dir = 10 @@ -7451,6 +8072,32 @@ }, /turf/simulated/floor/bluegrid, /area/ai/foyer) +"nb" = ( +/obj/structure/table/standard, +/obj/structure/cable/green{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/obj/effect/floor_decal/borderfloor{ + dir = 8 + }, +/obj/effect/floor_decal/corner/brown/border{ + dir = 8 + }, +/obj/item/weapon/folder/yellow, +/obj/item/weapon/stamp/denied{ + pixel_x = 4; + pixel_y = -2 + }, +/obj/item/weapon/stamp/cargo, +/turf/simulated/floor/tiled, +/area/quartermaster/office) +"nc" = ( +/obj/structure/table/glass, +/obj/item/weapon/folder/white, +/turf/simulated/floor/tiled/white, +/area/medical/reception) "nd" = ( /obj/structure/cable{ d1 = 1; @@ -7469,6 +8116,55 @@ }, /turf/simulated/floor/wood, /area/security/breakroom) +"nf" = ( +/obj/effect/floor_decal/borderfloorwhite{ + dir = 10 + }, +/obj/effect/floor_decal/corner/paleblue/border{ + dir = 10 + }, +/obj/structure/table/glass, +/obj/item/weapon/storage/box/body_record_disk, +/obj/item/weapon/paper{ + desc = ""; + info = "Bodies designed on the design console must be saved to a disk, provided on the front desk counter, then placed into the resleeving console for printing."; + name = "Body Designer Note" + }, +/obj/item/device/sleevemate, +/obj/item/weapon/folder/white, +/turf/simulated/floor/tiled/white, +/area/medical/reception) +"ng" = ( +/obj/structure/cable/green{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/obj/effect/floor_decal/steeldecal/steel_decals4{ + dir = 6 + }, +/obj/effect/floor_decal/steeldecal/steel_decals4{ + dir = 1 + }, +/turf/simulated/floor/tiled/white, +/area/medical/sleeper) +"nh" = ( +/obj/structure/table/standard, +/obj/item/weapon/hand_labeler, +/obj/item/weapon/stamp{ + pixel_x = -3; + pixel_y = 3 + }, +/obj/item/weapon/hand_labeler, +/obj/item/weapon/folder/yellow, +/turf/simulated/floor/tiled, +/area/quartermaster/storage) "ni" = ( /obj/structure/bookcase, /obj/item/weapon/book/manual/security_space_law, @@ -7512,49 +8208,37 @@ /turf/simulated/floor/tiled/dark, /area/security/security_lockerroom) "nm" = ( -/obj/effect/floor_decal/borderfloor{ - dir = 8 - }, -/obj/effect/floor_decal/corner/red/border{ - dir = 8 - }, -/obj/machinery/atmospherics/pipe/manifold/hidden/supply{ - dir = 8 - }, -/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/obj/machinery/door/firedoor/glass, /obj/structure/cable/green{ - d1 = 1; - d2 = 2; - icon_state = "1-2" + d2 = 8; + icon_state = "0-8" }, -/obj/structure/disposalpipe/segment, -/obj/machinery/door/firedoor/glass, -/turf/simulated/floor/tiled, -/area/security/hallway) +/obj/machinery/door/blast/regular{ + density = 0; + dir = 4; + icon_state = "pdoor0"; + id = "security_lockdown"; + name = "Security Blast Doors"; + opacity = 0 + }, +/obj/structure/grille, +/obj/structure/window/reinforced/polarized/full{ + id = "iaa_office" + }, +/turf/simulated/floor, +/area/lawoffice) "nn" = ( -/obj/effect/floor_decal/borderfloor{ - dir = 4 - }, -/obj/effect/floor_decal/corner/red/border{ - dir = 4 - }, -/obj/effect/floor_decal/borderfloor/corner2{ - dir = 5 - }, -/obj/effect/floor_decal/corner/red/bordercorner2{ - dir = 5 - }, -/obj/machinery/atmospherics/unary/vent_pump/on{ - dir = 8 - }, /obj/machinery/door/firedoor/glass, -/obj/structure/extinguisher_cabinet{ - dir = 8; - icon_state = "extinguisher_closed"; - pixel_x = 30 +/obj/structure/grille, +/obj/structure/window/reinforced/polarized/full{ + id = "iaa_office" }, -/turf/simulated/floor/tiled, -/area/security/hallway) +/obj/structure/window/reinforced/polarized{ + dir = 8; + id = "iaa_office" + }, +/turf/simulated/floor, +/area/lawoffice) "no" = ( /turf/simulated/wall, /area/security/hallway) @@ -7997,6 +8681,20 @@ /obj/structure/table/woodentable, /turf/simulated/floor/carpet, /area/security/breakroom) +"nZ" = ( +/obj/effect/floor_decal/spline/plain, +/obj/structure/flora/pottedplant/stoutbush, +/obj/machinery/button/windowtint{ + id = "iaa_office"; + pixel_x = 0; + pixel_y = -36 + }, +/obj/machinery/light_switch{ + pixel_x = 0; + pixel_y = -26 + }, +/turf/simulated/floor/tiled/dark, +/area/lawoffice) "oa" = ( /obj/item/device/radio/intercom{ dir = 4; @@ -8074,22 +8772,36 @@ /area/security/security_processing) "og" = ( /obj/machinery/door/firedoor/glass, -/obj/machinery/door/blast/regular{ - density = 0; - dir = 4; - icon_state = "pdoor0"; - id = "brig_lockdown"; - name = "Security Blast Doors"; - opacity = 0 - }, /obj/structure/grille, -/obj/structure/window/reinforced/polarized{ - dir = 10; - icon_state = "fwindow"; - id = "sec_processing" +/obj/structure/window/reinforced/polarized/full{ + id = "iaa_office" }, /turf/simulated/floor, -/area/security/security_processing) +/area/lawoffice) +"oh" = ( +/obj/structure/table/glass, +/obj/item/weapon/paper_bin, +/obj/item/weapon/clipboard, +/obj/item/weapon/pen, +/obj/machinery/camera/network/medbay{ + dir = 8 + }, +/obj/machinery/firealarm{ + dir = 4; + pixel_x = 24 + }, +/obj/effect/floor_decal/borderfloorwhite{ + dir = 5 + }, +/obj/machinery/atmospherics/unary/vent_pump/on{ + dir = 8 + }, +/obj/effect/floor_decal/corner/pink/border{ + dir = 5 + }, +/obj/item/weapon/folder/white, +/turf/simulated/floor/tiled/white, +/area/medical/exam_room) "oi" = ( /obj/effect/floor_decal/borderfloor{ dir = 8 @@ -8189,6 +8901,14 @@ /obj/random/junk, /turf/simulated/floor, /area/maintenance/cargo) +"oq" = ( +/obj/structure/grille, +/obj/machinery/door/firedoor/glass, +/obj/structure/window/reinforced/polarized/full{ + id = "psych_office" + }, +/turf/simulated/floor/plating, +/area/medical/psych) "or" = ( /obj/item/weapon/storage/laundry_basket, /turf/simulated/floor, @@ -8207,6 +8927,14 @@ /obj/structure/grille, /turf/space, /area/space) +"ou" = ( +/obj/machinery/button/windowtint{ + id = "psych_office"; + pixel_x = 24; + range = 8 + }, +/turf/simulated/floor/carpet/blue, +/area/medical/psych) "ov" = ( /obj/structure/bed/chair/office/dark{ dir = 1 @@ -8523,6 +9251,22 @@ }, /turf/simulated/floor/wood, /area/crew_quarters/heads/hos) +"oY" = ( +/obj/structure/grille, +/obj/machinery/door/firedoor/glass, +/obj/machinery/door/blast/shutters{ + density = 0; + dir = 8; + icon_state = "shutter0"; + id = "surgeryobs"; + name = "Operating Theatre Privacy Shutters"; + opacity = 0 + }, +/obj/structure/window/reinforced/polarized/full{ + id = "surgery_1" + }, +/turf/simulated/floor/plating, +/area/medical/surgery) "oZ" = ( /obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ dir = 5 @@ -8965,6 +9709,14 @@ /obj/random/maintenance/medical, /turf/simulated/floor, /area/maintenance/station/ai) +"pB" = ( +/obj/structure/grille, +/obj/machinery/door/firedoor/glass, +/obj/structure/window/reinforced/polarized/full{ + id = "resleeving" + }, +/turf/simulated/floor/plating, +/area/medical/resleeving) "pC" = ( /obj/machinery/disposal, /obj/structure/disposalpipe/trunk{ @@ -8973,15 +9725,37 @@ /turf/simulated/floor/wood, /area/crew_quarters/heads/hos) "pD" = ( -/obj/machinery/door/firedoor/glass, -/obj/structure/grille, -/obj/structure/window/reinforced/polarized{ - dir = 10; - icon_state = "fwindow"; - id = "hos_office" +/obj/machinery/atmospherics/pipe/simple/hidden{ + dir = 4 }, -/turf/simulated/floor, -/area/security/breakroom) +/obj/effect/floor_decal/borderfloorwhite{ + dir = 4 + }, +/obj/effect/floor_decal/corner/paleblue/border{ + dir = 4 + }, +/obj/effect/floor_decal/borderfloorwhite/corner2{ + dir = 5 + }, +/obj/effect/floor_decal/corner/paleblue/bordercorner2{ + dir = 5 + }, +/obj/machinery/button/windowtint{ + dir = 8; + id = "resleeving"; + pixel_x = 28; + pixel_y = 8 + }, +/obj/machinery/button/remote/airlock{ + desc = "A remote control switch for the medbay recovery room door."; + dir = 8; + id = "MedicalResleeving"; + name = "Exit Button"; + pixel_x = 28; + pixel_y = -4 + }, +/turf/simulated/floor/tiled/white, +/area/medical/resleeving) "pE" = ( /obj/effect/floor_decal/borderfloor, /obj/effect/floor_decal/corner/red/border, @@ -9064,9 +9838,16 @@ /turf/simulated/floor/tiled, /area/security/security_processing) "pN" = ( -/obj/structure/closet, -/turf/simulated/floor, -/area/maintenance/station/sec_upper) +/obj/structure/grille, +/obj/machinery/atmospherics/pipe/simple/hidden{ + dir = 4 + }, +/obj/machinery/door/firedoor/glass, +/obj/structure/window/reinforced/polarized/full{ + id = "resleeving" + }, +/turf/simulated/floor/plating, +/area/medical/resleeving) "pO" = ( /obj/machinery/atmospherics/pipe/simple/hidden/supply, /obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, @@ -9125,12 +9906,16 @@ /turf/simulated/floor/tiled, /area/security/hallway) "pS" = ( -/obj/random/trash_pile, -/obj/effect/decal/cleanable/cobweb{ - icon_state = "cobweb2" +/obj/structure/table/standard, +/obj/effect/floor_decal/borderfloorwhite, +/obj/effect/floor_decal/corner/white/border, +/obj/machinery/button/windowtint{ + id = "surgery_1"; + pixel_y = -26 }, -/turf/simulated/floor, -/area/maintenance/station/sec_upper) +/obj/item/stack/nanopaste, +/turf/simulated/floor/tiled/white, +/area/medical/surgery) "pT" = ( /obj/structure/railing, /turf/simulated/floor, @@ -9633,15 +10418,13 @@ /turf/simulated/floor/tiled, /area/security/hallway) "qQ" = ( -/obj/machinery/door/firedoor/glass, /obj/structure/grille, -/obj/structure/window/reinforced/polarized{ - dir = 10; - icon_state = "fwindow"; - id = "sec_processing" +/obj/machinery/door/firedoor/glass, +/obj/structure/window/reinforced/polarized/full{ + id = "surgery_2" }, -/turf/simulated/floor, -/area/security/security_processing) +/turf/simulated/floor/plating, +/area/medical/surgery2) "qR" = ( /obj/effect/floor_decal/borderfloor{ dir = 8 @@ -10212,18 +10995,13 @@ /turf/simulated/floor, /area/security/hallway) "rC" = ( -/obj/structure/cable/green{ - d1 = 4; - d2 = 8; - icon_state = "4-8" +/obj/structure/grille, +/obj/machinery/door/firedoor/glass, +/obj/structure/window/reinforced/polarized/full{ + id = "cmo_office_int" }, -/obj/structure/disposalpipe/segment{ - dir = 2; - icon_state = "pipe-c" - }, -/obj/structure/catwalk, -/turf/simulated/floor, -/area/maintenance/station/sec_upper) +/turf/simulated/floor/plating, +/area/crew_quarters/heads/cmo) "rD" = ( /obj/structure/cable/green{ d1 = 4; @@ -11287,18 +12065,42 @@ /turf/simulated/floor/tiled, /area/security/hallway) "tc" = ( -/obj/machinery/door/firedoor/glass, -/obj/structure/grille, -/obj/structure/window/reinforced/polarized{ - dir = 10; - icon_state = "fwindow"; - id = "lawyer_blast" +/obj/structure/bed/chair/office/light{ + dir = 4 }, -/obj/structure/window/reinforced{ - dir = 8 +/obj/effect/landmark/start{ + name = "Chief Medical Officer" }, -/turf/simulated/floor, -/area/lawoffice) +/obj/machinery/button/remote/airlock{ + desc = "A remote control switch for the CMO's office."; + id = "cmodoor"; + name = "CMO Office Door Control"; + pixel_x = -8; + pixel_y = -36 + }, +/obj/machinery/button/remote/blast_door{ + desc = "A remote control-switch for shutters."; + id = "virologyquar"; + name = "Virology Emergency Lockdown Control"; + pixel_x = 0; + pixel_y = -28; + req_access = list(5) + }, +/obj/machinery/button/remote/blast_door{ + desc = "A remote control-switch for shutters."; + id = "medbayquar"; + name = "Medbay Emergency Lockdown Control"; + pixel_x = 0; + pixel_y = -36; + req_access = list(5) + }, +/obj/machinery/button/windowtint{ + id = "cmo_office_int"; + pixel_x = -6; + pixel_y = -28 + }, +/turf/simulated/floor/tiled/white, +/area/crew_quarters/heads/cmo) "td" = ( /obj/effect/floor_decal/borderfloor{ dir = 1; @@ -11476,7 +12278,7 @@ /turf/simulated/shuttle/wall/voidcraft/green{ hard_corner = 1 }, -/area/hallway/station/upper) +/area/tether/elevator) "to" = ( /obj/effect/floor_decal/borderfloor{ dir = 1 @@ -11515,7 +12317,6 @@ }, /obj/effect/floor_decal/steeldecal/steel_decals7, /obj/machinery/alarm{ - frequency = 1441; pixel_y = 22 }, /obj/machinery/atmospherics/unary/vent_scrubber/on, @@ -11581,14 +12382,13 @@ /turf/simulated/floor/tiled, /area/hallway/station/upper) "tt" = ( -/obj/structure/disposalpipe/segment, -/obj/effect/decal/cleanable/dirt, -/obj/structure/cable{ - icon_state = "1-2" +/obj/machinery/door/firedoor/glass, +/obj/structure/grille, +/obj/structure/window/reinforced/polarized/full{ + id = "exam_room" }, -/obj/machinery/door/airlock/maintenance/common, /turf/simulated/floor, -/area/maintenance/cargo) +/area/medical/sleeper) "tu" = ( /obj/machinery/conveyor{ dir = 1; @@ -11661,25 +12461,15 @@ /turf/simulated/wall, /area/quartermaster/office) "tC" = ( -/obj/item/weapon/stamp/denied{ - pixel_x = 4; - pixel_y = -2 - }, /obj/structure/table/standard, -/obj/item/weapon/stamp/cargo, -/obj/structure/cable/green{ - d1 = 1; - d2 = 2; - icon_state = "1-2" +/obj/effect/floor_decal/borderfloorwhite, +/obj/effect/floor_decal/corner/white/border, +/obj/machinery/button/windowtint{ + id = "surgery_2"; + pixel_y = -26 }, -/obj/effect/floor_decal/borderfloor{ - dir = 8 - }, -/obj/effect/floor_decal/corner/brown/border{ - dir = 8 - }, -/turf/simulated/floor/tiled, -/area/quartermaster/office) +/turf/simulated/floor/tiled/white, +/area/medical/surgery2) "tD" = ( /obj/structure/disposalpipe/segment, /obj/machinery/atmospherics/pipe/simple/hidden/supply{ @@ -12097,7 +12887,7 @@ /area/maintenance/station/elevator) "ui" = ( /turf/simulated/floor/holofloor/tiled/dark, -/area/hallway/station/upper) +/area/tether/elevator) "uj" = ( /obj/machinery/atmospherics/pipe/simple/hidden/supply, /obj/machinery/door/firedoor/glass/hidden/steel{ @@ -12432,51 +13222,24 @@ /turf/simulated/wall/r_wall, /area/security/detectives_office) "uK" = ( -/obj/machinery/door/firedoor/glass, -/obj/structure/cable/green{ - icon_state = "0-4" - }, -/obj/machinery/door/blast/regular{ - density = 0; - dir = 4; - icon_state = "pdoor0"; - id = "security_lockdown"; - name = "Security Blast Doors"; - opacity = 0 - }, /obj/structure/grille, -/obj/structure/window/reinforced/polarized{ - dir = 10; - icon_state = "fwindow"; - id = "lawyer_blast" +/obj/machinery/door/firedoor/glass, +/obj/structure/window/reinforced/polarized/full{ + id = "cmo_office_ext" }, -/turf/simulated/floor, -/area/lawoffice) +/obj/structure/window/reinforced/polarized{ + dir = 8; + id = "cmo_office_ext" + }, +/turf/simulated/floor/plating, +/area/crew_quarters/heads/cmo) "uL" = ( -/obj/machinery/door/firedoor/glass, -/obj/structure/cable/green{ - d2 = 8; - icon_state = "0-8" +/obj/machinery/washing_machine, +/obj/machinery/light{ + dir = 4 }, -/obj/structure/cable/green{ - icon_state = "0-4" - }, -/obj/machinery/door/blast/regular{ - density = 0; - dir = 4; - icon_state = "pdoor0"; - id = "security_lockdown"; - name = "Security Blast Doors"; - opacity = 0 - }, -/obj/structure/grille, -/obj/structure/window/reinforced/polarized{ - dir = 10; - icon_state = "fwindow"; - id = "lawyer_blast" - }, -/turf/simulated/floor, -/area/lawoffice) +/turf/simulated/floor/tiled/white, +/area/security/security_bathroom) "uM" = ( /obj/machinery/door/firedoor/glass, /obj/structure/cable/green{ @@ -12511,27 +13274,16 @@ /turf/simulated/floor/tiled/dark, /area/lawoffice) "uN" = ( -/obj/machinery/door/firedoor/glass, -/obj/structure/cable/green{ - d2 = 8; - icon_state = "0-8" - }, -/obj/machinery/door/blast/regular{ - density = 0; - dir = 4; - icon_state = "pdoor0"; - id = "security_lockdown"; - name = "Security Blast Doors"; - opacity = 0 - }, /obj/structure/grille, -/obj/structure/window/reinforced/polarized{ - dir = 10; - icon_state = "fwindow"; - id = "lawyer_blast" +/obj/machinery/door/firedoor/glass, +/obj/structure/window/reinforced/polarized/full{ + id = "exam_room" }, -/turf/simulated/floor, -/area/lawoffice) +/obj/structure/window/reinforced/polarized{ + id = "exam_room" + }, +/turf/simulated/floor/plating, +/area/medical/exam_room) "uO" = ( /turf/simulated/wall/r_wall, /area/lawoffice) @@ -12702,11 +13454,9 @@ /obj/random/maintenance/cargo, /obj/random/maintenance/cargo, /obj/machinery/alarm{ - breach_detection = 0; dir = 8; pixel_x = 25; - pixel_y = 0; - report_danger_level = 0 + pixel_y = 0 }, /obj/item/weapon/storage/box/lights/mixed, /obj/item/weapon/storage/box/lights/mixed, @@ -13325,15 +14075,19 @@ /turf/space/cracked_asteroid, /area/mine/explored/upper_level) "wf" = ( -/obj/machinery/door/firedoor/glass, -/obj/structure/grille, -/obj/structure/window/reinforced/polarized{ - dir = 10; - icon_state = "fwindow"; - id = "lawyer_blast" +/obj/effect/floor_decal/borderfloorwhite{ + dir = 10 }, -/turf/simulated/floor, -/area/lawoffice) +/obj/effect/floor_decal/corner/paleblue/border{ + dir = 10 + }, +/obj/machinery/button/windowtint{ + id = "cmo_office_ext"; + pixel_x = -20; + pixel_y = -25 + }, +/turf/simulated/floor/tiled/white, +/area/crew_quarters/heads/cmo) "wg" = ( /obj/effect/floor_decal/spline/plain{ icon_state = "spline_plain"; @@ -13497,7 +14251,7 @@ /turf/simulated/shuttle/wall/voidcraft/green{ hard_corner = 1 }, -/area/hallway/station/upper) +/area/tether/elevator) "ww" = ( /obj/machinery/atmospherics/pipe/simple/hidden/supply, /obj/machinery/door/firedoor/glass/hidden/steel{ @@ -13581,7 +14335,7 @@ pixel_x = -27; pixel_y = 0 }, -/obj/machinery/camera/network/northern_star{ +/obj/machinery/camera/network/tether{ dir = 4 }, /obj/effect/floor_decal/borderfloor{ @@ -13667,11 +14421,10 @@ /area/quartermaster/office) "wL" = ( /obj/machinery/camera/network/security{ - c_tag = "SEC - Vault Exterior North"; - dir = 1 + c_tag = "SEC - Vault Exterior South" }, /turf/simulated/mineral/floor/vacuum, -/area/mine/explored/upper_level) +/area/security/nuke_storage) "wM" = ( /obj/machinery/atmospherics/unary/vent_scrubber/on, /obj/structure/table/reinforced, @@ -13877,7 +14630,7 @@ /obj/structure/disposalpipe/segment{ dir = 4 }, -/obj/machinery/camera/network/northern_star, +/obj/machinery/camera/network/tether, /obj/effect/floor_decal/borderfloor{ dir = 1 }, @@ -13980,22 +14733,16 @@ /turf/simulated/floor/tiled, /area/hallway/station/upper) "xh" = ( -/obj/structure/disposalpipe/segment{ - dir = 1; - icon_state = "pipe-c" +/obj/structure/grille, +/obj/machinery/door/firedoor/glass, +/obj/structure/window/reinforced/polarized/full{ + id = "cmo_office_ext" }, -/obj/effect/floor_decal/borderfloor{ - dir = 1 +/obj/structure/window/reinforced/polarized{ + id = "cmo_office_ext" }, -/obj/effect/floor_decal/corner/brown/border{ - dir = 1 - }, -/obj/effect/floor_decal/steeldecal/steel_decals7, -/obj/effect/floor_decal/steeldecal/steel_decals7{ - dir = 4 - }, -/turf/simulated/floor/tiled, -/area/hallway/station/upper) +/turf/simulated/floor/plating, +/area/crew_quarters/heads/cmo) "xi" = ( /obj/structure/disposalpipe/segment{ dir = 4 @@ -14180,12 +14927,22 @@ /turf/simulated/floor/tiled, /area/quartermaster/office) "xu" = ( -/obj/machinery/light{ - dir = 4; - icon_state = "tube1" +/obj/structure/table/glass, +/obj/effect/floor_decal/borderfloorwhite{ + dir = 4 }, -/turf/space, -/area/space) +/obj/effect/floor_decal/corner/paleblue/border{ + dir = 4 + }, +/obj/effect/floor_decal/borderfloorwhite/corner2{ + dir = 6 + }, +/obj/effect/floor_decal/corner/paleblue/bordercorner2{ + dir = 6 + }, +/obj/item/device/defib_kit/loaded, +/turf/simulated/floor/tiled/white, +/area/medical/sleeper) "xv" = ( /obj/structure/sign/warning/secure_area, /turf/simulated/wall/r_wall, @@ -14194,13 +14951,12 @@ /turf/simulated/wall/r_wall, /area/security/nuke_storage) "xx" = ( -/obj/machinery/light{ - dir = 8; - icon_state = "tube1"; - pixel_y = 0 +/obj/machinery/camera/network/security{ + c_tag = "SEC - Vault Exterior North"; + dir = 1 }, /turf/simulated/mineral/floor/vacuum, -/area/mine/explored/upper_level) +/area/security/nuke_storage) "xy" = ( /obj/effect/floor_decal/spline/plain{ icon_state = "spline_plain"; @@ -14438,7 +15194,7 @@ pixel_x = -27; pixel_y = 0 }, -/obj/machinery/camera/network/northern_star{ +/obj/machinery/camera/network/tether{ dir = 4 }, /obj/effect/floor_decal/borderfloor{ @@ -14726,19 +15482,13 @@ /turf/simulated/floor/tiled/dark, /area/lawoffice) "yl" = ( -/obj/effect/floor_decal/spline/plain, -/obj/structure/flora/pottedplant/stoutbush, -/obj/machinery/button/windowtint{ - id = "lawyer_blast"; - pixel_x = 0; - pixel_y = -36 +/obj/structure/grille, +/obj/machinery/door/firedoor/glass, +/obj/structure/window/reinforced/polarized/full{ + id = "recovery_ward" }, -/obj/machinery/light_switch{ - pixel_x = 0; - pixel_y = -26 - }, -/turf/simulated/floor/tiled/dark, -/area/lawoffice) +/turf/simulated/floor/plating, +/area/medical/sleeper) "ym" = ( /obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, /obj/machinery/atmospherics/pipe/simple/hidden/supply, @@ -14923,7 +15673,7 @@ /obj/effect/floor_decal/corner/lightgrey{ dir = 6 }, -/obj/machinery/camera/network/northern_star, +/obj/machinery/camera/network/tether, /obj/structure/table/bench/standard, /obj/effect/floor_decal/steeldecal/steel_decals6{ dir = 9 @@ -15186,7 +15936,7 @@ /turf/simulated/floor/tiled, /area/hallway/station/upper) "yR" = ( -/obj/machinery/camera/network/northern_star{ +/obj/machinery/camera/network/tether{ dir = 1 }, /obj/effect/floor_decal/borderfloor, @@ -15211,22 +15961,32 @@ /turf/simulated/floor/tiled, /area/quartermaster/foyer) "yT" = ( -/obj/effect/floor_decal/borderfloor, -/obj/effect/floor_decal/corner/brown/border, -/obj/effect/floor_decal/borderfloor/corner2{ - dir = 9 - }, -/obj/effect/floor_decal/corner/brown/bordercorner2{ - dir = 9 - }, -/obj/effect/floor_decal/steeldecal/steel_decals7{ - dir = 8 - }, -/obj/effect/floor_decal/steeldecal/steel_decals7{ +/obj/effect/floor_decal/borderfloorwhite{ dir = 1 }, -/turf/simulated/floor/tiled, -/area/quartermaster/foyer) +/obj/effect/floor_decal/corner/paleblue/border{ + dir = 1 + }, +/obj/effect/floor_decal/borderfloorwhite/corner2{ + dir = 4 + }, +/obj/effect/floor_decal/corner/paleblue/bordercorner2{ + dir = 4 + }, +/obj/machinery/button/remote/airlock{ + desc = "A remote control switch for the medbay recovery room door."; + id = "MedicalRecovery"; + name = "Exit Button"; + pixel_x = -4; + pixel_y = 26 + }, +/obj/machinery/button/windowtint{ + id = "recovery_ward"; + pixel_x = 6; + pixel_y = 26 + }, +/turf/simulated/floor/tiled/white, +/area/medical/ward) "yU" = ( /obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, /obj/machinery/atmospherics/pipe/simple/hidden/supply, @@ -15915,7 +16675,7 @@ dir = 4 }, /obj/effect/floor_decal/steeldecal/steel_decals7, -/obj/machinery/camera/network/northern_star, +/obj/machinery/camera/network/tether, /turf/simulated/floor/tiled, /area/hallway/station/upper) "zY" = ( @@ -16101,7 +16861,7 @@ /turf/simulated/floor/tiled, /area/hallway/station/upper) "Aj" = ( -/obj/machinery/camera/network/northern_star, +/obj/machinery/camera/network/tether, /obj/effect/floor_decal/borderfloor{ dir = 1 }, @@ -16400,15 +17160,13 @@ /turf/simulated/floor/tiled, /area/hallway/station/upper) "AA" = ( -/obj/structure/grille, -/obj/structure/window/reinforced/polarized{ - dir = 10; - icon_state = "fwindow"; - id = "psych-tint" - }, /obj/machinery/door/firedoor/glass, -/turf/simulated/floor/plating, -/area/medical/psych) +/obj/structure/grille, +/obj/structure/window/reinforced/polarized/full{ + id = "patient_room_a" + }, +/turf/simulated/floor, +/area/medical/patient_a) "AB" = ( /obj/structure/table/woodentable, /obj/structure/plushie/ian{ @@ -16601,13 +17359,6 @@ /area/supply/station{ dynamic_lighting = 0 }) -"AZ" = ( -/obj/machinery/camera/network/security{ - c_tag = "SEC - Vault Exterior West"; - dir = 8 - }, -/turf/space, -/area/space) "Ba" = ( /obj/machinery/atmospherics/unary/vent_pump/on{ dir = 4 @@ -16667,41 +17418,13 @@ /turf/simulated/floor/tiled/dark, /area/security/nuke_storage) "Bf" = ( -/obj/machinery/door/airlock/vault/bolted{ - req_access = list(53) +/obj/machinery/door/firedoor/glass, +/obj/structure/grille, +/obj/structure/window/reinforced/polarized/full{ + id = "patient_room_b" }, -/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, -/obj/machinery/atmospherics/pipe/simple/hidden/supply, -/obj/structure/cable{ - d1 = 1; - d2 = 2; - icon_state = "1-2" - }, -/obj/machinery/atmospherics/pipe/simple/hidden/supply{ - dir = 4 - }, -/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ - dir = 4 - }, -/obj/machinery/door/blast/regular{ - id = "VaultAc"; - name = "\improper Vault" - }, -/obj/structure/cable{ - d1 = 4; - d2 = 8; - icon_state = "4-8" - }, -/obj/machinery/button/remote/blast_door{ - id = "VaultAc"; - name = "Vault Blast Door"; - pixel_x = 0; - pixel_y = -32; - req_access = list(53); - req_one_access = list(53) - }, -/turf/simulated/floor/tiled/dark, -/area/security/nuke_storage) +/turf/simulated/floor, +/area/medical/patient_b) "Bg" = ( /obj/structure/disposalpipe/segment{ dir = 4; @@ -17045,15 +17768,13 @@ /turf/simulated/floor/tiled, /area/hallway/station/upper) "BB" = ( -/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ - dir = 9 +/obj/machinery/door/firedoor/glass, +/obj/structure/grille, +/obj/structure/window/reinforced/polarized/full{ + id = "patient_room_c" }, -/obj/machinery/atmospherics/pipe/manifold/hidden/supply, -/obj/structure/cable{ - icon_state = "1-8" - }, -/turf/simulated/floor/tiled, -/area/hallway/station/upper) +/turf/simulated/floor, +/area/medical/patient_c) "BC" = ( /obj/effect/floor_decal/borderfloor, /obj/effect/floor_decal/corner/lightgrey/border, @@ -17327,7 +18048,7 @@ /turf/simulated/floor/tiled, /area/hallway/station/upper) "Cg" = ( -/obj/machinery/camera/network/northern_star{ +/obj/machinery/camera/network/tether{ dir = 1 }, /obj/effect/floor_decal/borderfloor, @@ -17528,17 +18249,67 @@ /turf/simulated/floor/wood, /area/medical/psych) "Cy" = ( -/obj/machinery/door/airlock{ - name = "Secondary Janitorial Closet"; - req_access = list(26) +/obj/structure/bed/chair{ + dir = 8 }, -/turf/simulated/floor/tiled, -/area/maintenance/station/cargo) +/obj/effect/floor_decal/borderfloorwhite{ + dir = 5 + }, +/obj/effect/floor_decal/corner/pink/border{ + dir = 5 + }, +/obj/effect/floor_decal/borderfloorwhite/corner2{ + dir = 4 + }, +/obj/effect/floor_decal/corner/pink/bordercorner2{ + dir = 4 + }, +/obj/machinery/light_switch{ + dir = 2; + name = "light switch "; + pixel_x = 0; + pixel_y = 36 + }, +/obj/machinery/button/windowtint{ + id = "patient_room_a"; + pixel_y = 26 + }, +/obj/machinery/camera/network/medbay{ + dir = 8 + }, +/turf/simulated/floor/tiled/white, +/area/medical/patient_a) "Cz" = ( -/obj/effect/decal/cleanable/dirt, -/obj/effect/floor_decal/rust, -/turf/simulated/floor/tiled, -/area/maintenance/station/cargo) +/obj/structure/bed/chair{ + dir = 8 + }, +/obj/effect/floor_decal/borderfloorwhite{ + dir = 5 + }, +/obj/effect/floor_decal/corner/pink/border{ + dir = 5 + }, +/obj/effect/floor_decal/borderfloorwhite/corner2{ + dir = 4 + }, +/obj/effect/floor_decal/corner/pink/bordercorner2{ + dir = 4 + }, +/obj/machinery/button/windowtint{ + id = "patient_room_b"; + pixel_y = 26 + }, +/obj/machinery/light_switch{ + dir = 2; + name = "light switch "; + pixel_x = 0; + pixel_y = 36 + }, +/obj/machinery/camera/network/medbay{ + dir = 8 + }, +/turf/simulated/floor/tiled/white, +/area/medical/patient_b) "CA" = ( /obj/effect/floor_decal/rust, /turf/simulated/floor/tiled, @@ -17576,7 +18347,7 @@ dir = 9; pixel_y = 0 }, -/mob/living/simple_animal/fluffy, +/mob/living/simple_mob/animal/sif/fluffy, /turf/simulated/floor/tiled, /area/quartermaster/qm) "CG" = ( @@ -18464,13 +19235,36 @@ /turf/simulated/floor/carpet/blue, /area/medical/psych) "Ej" = ( -/obj/machinery/button/windowtint{ - id = "psych-tint"; - pixel_x = 24; - range = 8 +/obj/structure/bed/chair{ + dir = 8 }, -/turf/simulated/floor/carpet/blue, -/area/medical/psych) +/obj/effect/floor_decal/borderfloorwhite{ + dir = 5 + }, +/obj/effect/floor_decal/corner/pink/border{ + dir = 5 + }, +/obj/effect/floor_decal/borderfloorwhite/corner2{ + dir = 4 + }, +/obj/effect/floor_decal/corner/pink/bordercorner2{ + dir = 4 + }, +/obj/machinery/button/windowtint{ + id = "patient_room_c"; + pixel_y = 26 + }, +/obj/machinery/light_switch{ + dir = 2; + name = "light switch "; + pixel_x = 0; + pixel_y = 36 + }, +/obj/machinery/camera/network/medbay{ + dir = 8 + }, +/turf/simulated/floor/tiled/white, +/area/medical/patient_c) "Ek" = ( /obj/structure/cable{ d1 = 1; @@ -18652,7 +19446,7 @@ /obj/machinery/atmospherics/unary/vent_pump/on{ dir = 1 }, -/obj/machinery/camera/network/northern_star{ +/obj/machinery/camera/network/tether{ dir = 9 }, /obj/effect/floor_decal/industrial/warning, @@ -19590,9 +20384,16 @@ /turf/simulated/floor/tiled/white, /area/medical/reception) "Gn" = ( -/obj/structure/table/glass, -/turf/simulated/floor/tiled/white, -/area/medical/reception) +/obj/structure/grille, +/obj/machinery/door/firedoor/glass, +/obj/structure/window/reinforced/polarized/full{ + id = "patient_room_a" + }, +/obj/structure/window/reinforced/polarized{ + id = "patient_room_a" + }, +/turf/simulated/floor/plating, +/area/medical/patient_a) "Go" = ( /obj/machinery/door/window/eastleft{ req_one_access = list(5) @@ -20110,21 +20911,14 @@ "Hk" = ( /obj/structure/grille, /obj/machinery/door/firedoor/glass, -/obj/machinery/door/blast/shutters{ - density = 0; - dir = 8; - icon_state = "shutter0"; - id = "surgeryobs"; - name = "Operating Theatre Privacy Shutters"; - opacity = 0 +/obj/structure/window/reinforced/polarized/full{ + id = "patient_room_b" }, /obj/structure/window/reinforced/polarized{ - dir = 10; - icon_state = "fwindow"; - id = "surgeryobs" + id = "patient_room_b" }, /turf/simulated/floor/plating, -/area/medical/surgery) +/area/medical/patient_b) "Hl" = ( /obj/machinery/iv_drip, /obj/effect/floor_decal/borderfloorwhite{ @@ -20441,22 +21235,16 @@ /turf/simulated/floor, /area/maintenance/security_starboard) "HM" = ( -/obj/effect/floor_decal/borderfloorwhite{ - dir = 10 +/obj/structure/grille, +/obj/machinery/door/firedoor/glass, +/obj/structure/window/reinforced/polarized/full{ + id = "patient_room_c" }, -/obj/effect/floor_decal/corner/paleblue/border{ - dir = 10 +/obj/structure/window/reinforced/polarized{ + id = "patient_room_c" }, -/obj/structure/table/glass, -/obj/item/weapon/storage/box/body_record_disk, -/obj/item/weapon/paper{ - desc = ""; - info = "Bodies designed on the design console must be saved to a disk, provided on the front desk counter, then placed into the resleeving console for printing."; - name = "Body Designer Note" - }, -/obj/item/device/sleevemate, -/turf/simulated/floor/tiled/white, -/area/medical/reception) +/turf/simulated/floor/plating, +/area/medical/patient_c) "HN" = ( /obj/effect/floor_decal/borderfloorwhite, /obj/effect/floor_decal/corner/paleblue/border, @@ -21391,13 +22179,14 @@ "Jg" = ( /obj/structure/grille, /obj/machinery/door/firedoor/glass, +/obj/structure/window/reinforced/polarized/full{ + id = "recovery_ward" + }, /obj/structure/window/reinforced/polarized{ - dir = 10; - icon_state = "fwindow"; - id = "resleeving-tint" + id = "recovery_ward" }, /turf/simulated/floor/plating, -/area/medical/resleeving) +/area/medical/ward) "Jh" = ( /obj/effect/floor_decal/borderfloorwhite{ dir = 9 @@ -21789,15 +22578,13 @@ /turf/simulated/wall, /area/quartermaster/warehouse) "JM" = ( -/obj/structure/table/standard, -/obj/item/weapon/hand_labeler, -/obj/item/weapon/stamp{ - pixel_x = -3; - pixel_y = 3 +/obj/machinery/alarm{ + dir = 1; + icon_state = "alarm0"; + pixel_y = -22 }, -/obj/item/weapon/hand_labeler, /turf/simulated/floor/tiled, -/area/quartermaster/storage) +/area/security/hallway) "JN" = ( /obj/structure/table/standard, /obj/machinery/cell_charger, @@ -21875,50 +22662,20 @@ /turf/simulated/floor/tiled/white, /area/medical/resleeving) "JW" = ( -/obj/machinery/atmospherics/pipe/simple/hidden{ - dir = 4 +/obj/machinery/light{ + dir = 4; + icon_state = "tube1" }, -/obj/effect/floor_decal/borderfloorwhite{ - dir = 4 - }, -/obj/effect/floor_decal/corner/paleblue/border{ - dir = 4 - }, -/obj/effect/floor_decal/borderfloorwhite/corner2{ - dir = 5 - }, -/obj/effect/floor_decal/corner/paleblue/bordercorner2{ - dir = 5 - }, -/obj/machinery/button/windowtint{ - dir = 8; - id = "resleeving-tint"; - pixel_x = 28; - pixel_y = 8 - }, -/obj/machinery/button/remote/airlock{ - desc = "A remote control switch for the medbay recovery room door."; - dir = 8; - id = "MedicalResleeving"; - name = "Exit Button"; - pixel_x = 28; - pixel_y = -4 - }, -/turf/simulated/floor/tiled/white, -/area/medical/resleeving) +/turf/space, +/area/security/nuke_storage) "JX" = ( -/obj/structure/grille, -/obj/machinery/atmospherics/pipe/simple/hidden{ - dir = 4 +/obj/machinery/light{ + dir = 8; + icon_state = "tube1"; + pixel_y = 0 }, -/obj/machinery/door/firedoor/glass, -/obj/structure/window/reinforced/polarized{ - dir = 10; - icon_state = "fwindow"; - id = "resleeving-tint" - }, -/turf/simulated/floor/plating, -/area/medical/resleeving) +/turf/simulated/mineral/floor/vacuum, +/area/security/nuke_storage) "JY" = ( /obj/effect/floor_decal/industrial/warning/corner{ dir = 4 @@ -21947,15 +22704,6 @@ /obj/machinery/atmospherics/pipe/manifold/hidden, /turf/simulated/floor/tiled/white, /area/medical/sleeper) -"Ka" = ( -/obj/effect/floor_decal/industrial/warning/corner{ - dir = 1 - }, -/obj/machinery/atmospherics/pipe/simple/hidden{ - dir = 4 - }, -/turf/simulated/floor/tiled/white, -/area/medical/sleeper) "Kb" = ( /obj/machinery/atmospherics/pipe/simple/hidden{ dir = 4 @@ -22130,16 +22878,12 @@ /turf/simulated/floor/tiled/white, /area/medical/surgery) "Kq" = ( -/obj/structure/table/standard, -/obj/effect/floor_decal/borderfloorwhite, -/obj/effect/floor_decal/corner/white/border, -/obj/machinery/button/windowtint{ - id = "surgeryobs"; - pixel_y = -26 +/obj/machinery/camera/network/security{ + c_tag = "SEC - Vault Exterior West"; + dir = 8 }, -/obj/item/stack/nanopaste, -/turf/simulated/floor/tiled/white, -/area/medical/surgery) +/turf/space, +/area/security/nuke_storage) "Kr" = ( /obj/structure/table/standard, /obj/item/weapon/storage/firstaid/surgery, @@ -22298,26 +23042,6 @@ }, /turf/simulated/floor/tiled/white, /area/medical/resleeving) -"KD" = ( -/obj/structure/cable/green{ - d1 = 4; - d2 = 8; - icon_state = "4-8" - }, -/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ - dir = 4 - }, -/obj/machinery/atmospherics/pipe/simple/hidden/supply{ - dir = 4 - }, -/obj/effect/floor_decal/steeldecal/steel_decals4{ - dir = 6 - }, -/obj/effect/floor_decal/steeldecal/steel_decals4{ - dir = 1 - }, -/turf/simulated/floor/tiled/white, -/area/medical/sleeper) "KE" = ( /obj/structure/cable/green{ d1 = 2; @@ -22695,23 +23419,6 @@ }, /turf/simulated/floor/tiled/white, /area/medical/sleeper) -"Lo" = ( -/obj/structure/table/glass, -/obj/effect/floor_decal/borderfloorwhite{ - dir = 4 - }, -/obj/effect/floor_decal/corner/paleblue/border{ - dir = 4 - }, -/obj/effect/floor_decal/borderfloorwhite/corner2{ - dir = 6 - }, -/obj/effect/floor_decal/corner/paleblue/bordercorner2{ - dir = 6 - }, -/obj/item/device/defib_kit/loaded, -/turf/simulated/floor/tiled/white, -/area/space) "Lp" = ( /obj/structure/grille, /obj/structure/window/reinforced/full, @@ -22801,16 +23508,6 @@ }, /turf/simulated/floor/tiled/white, /area/medical/surgery_hallway) -"Lw" = ( -/obj/structure/grille, -/obj/machinery/door/firedoor/glass, -/obj/structure/window/reinforced/polarized{ - dir = 10; - icon_state = "fwindow"; - id = "surgeryobs2" - }, -/turf/simulated/floor/plating, -/area/medical/surgery2) "Lx" = ( /obj/effect/floor_decal/borderfloorwhite{ dir = 9 @@ -23572,16 +24269,6 @@ }, /turf/simulated/floor/tiled/white, /area/crew_quarters/heads/cmo) -"ME" = ( -/obj/structure/grille, -/obj/machinery/door/firedoor/glass, -/obj/structure/window/reinforced/polarized{ - dir = 10; - icon_state = "fwindow"; - id = "cmooffice" - }, -/turf/simulated/floor/plating, -/area/crew_quarters/heads/cmo) "MF" = ( /obj/effect/floor_decal/borderfloorwhite{ dir = 8 @@ -23716,43 +24403,6 @@ }, /turf/simulated/floor/tiled/white, /area/crew_quarters/heads/cmo) -"MO" = ( -/obj/structure/bed/chair/office/light{ - dir = 4 - }, -/obj/effect/landmark/start{ - name = "Chief Medical Officer" - }, -/obj/machinery/button/remote/airlock{ - desc = "A remote control switch for the CMO's office."; - id = "cmodoor"; - name = "CMO Office Door Control"; - pixel_x = -8; - pixel_y = -36 - }, -/obj/machinery/button/remote/blast_door{ - desc = "A remote control-switch for shutters."; - id = "virologyquar"; - name = "Virology Emergency Lockdown Control"; - pixel_x = 0; - pixel_y = -28; - req_access = list(5) - }, -/obj/machinery/button/remote/blast_door{ - desc = "A remote control-switch for shutters."; - id = "medbayquar"; - name = "Medbay Emergency Lockdown Control"; - pixel_x = 0; - pixel_y = -36; - req_access = list(5) - }, -/obj/machinery/button/windowtint{ - id = "cmooffice"; - pixel_x = -6; - pixel_y = -28 - }, -/turf/simulated/floor/tiled/white, -/area/crew_quarters/heads/cmo) "MP" = ( /obj/structure/table/glass, /obj/item/weapon/paper_bin, @@ -24233,16 +24883,6 @@ }, /turf/simulated/floor/tiled/white, /area/medical/surgery2) -"Nr" = ( -/obj/structure/table/standard, -/obj/effect/floor_decal/borderfloorwhite, -/obj/effect/floor_decal/corner/white/border, -/obj/machinery/button/windowtint{ - id = "surgeryobs2"; - pixel_y = -26 - }, -/turf/simulated/floor/tiled/white, -/area/medical/surgery2) "Ns" = ( /obj/structure/table/standard, /obj/effect/floor_decal/borderfloorwhite, @@ -24284,19 +24924,6 @@ /obj/random/junk, /turf/simulated/floor, /area/maintenance/station/medbay) -"Nw" = ( -/obj/structure/grille, -/obj/structure/window/reinforced{ - dir = 8 - }, -/obj/machinery/door/firedoor/glass, -/obj/structure/window/reinforced/polarized{ - dir = 10; - icon_state = "fwindow"; - id = "cmooffice_b" - }, -/turf/simulated/floor/plating, -/area/crew_quarters/heads/cmo) "Nx" = ( /obj/effect/floor_decal/borderfloorwhite{ dir = 8 @@ -24324,7 +24951,7 @@ /obj/machinery/atmospherics/pipe/simple/hidden/supply{ dir = 4 }, -/mob/living/simple_animal/cat/fluff/Runtime, +/mob/living/simple_mob/animal/passive/cat/runtime, /turf/simulated/floor/tiled/white, /area/crew_quarters/heads/cmo) "NB" = ( @@ -24452,20 +25079,6 @@ /obj/effect/decal/cleanable/dirt, /turf/simulated/floor, /area/maintenance/station/medbay) -"NO" = ( -/obj/effect/floor_decal/borderfloorwhite{ - dir = 10 - }, -/obj/effect/floor_decal/corner/paleblue/border{ - dir = 10 - }, -/obj/machinery/button/windowtint{ - id = "cmooffice_b"; - pixel_x = -20; - pixel_y = -25 - }, -/turf/simulated/floor/tiled/white, -/area/crew_quarters/heads/cmo) "NP" = ( /obj/effect/floor_decal/borderfloorwhite, /obj/effect/floor_decal/corner/paleblue/border, @@ -24857,31 +25470,10 @@ }, /turf/simulated/floor/tiled/white, /area/medical/surgery_hallway) -"Ov" = ( -/obj/structure/grille, -/obj/structure/window/reinforced, -/obj/machinery/door/firedoor/glass, -/obj/structure/window/reinforced/polarized{ - dir = 10; - icon_state = "fwindow"; - id = "cmooffice_b" - }, -/turf/simulated/floor/plating, -/area/crew_quarters/heads/cmo) "Ow" = ( /obj/structure/sign/nosmoking_1, /turf/simulated/wall, /area/medical/sleeper) -"Ox" = ( -/obj/structure/grille, -/obj/machinery/door/firedoor/glass, -/obj/structure/window/reinforced/polarized{ - dir = 10; - icon_state = "fwindow"; - id = "mrecovery-tint" - }, -/turf/simulated/floor/plating, -/area/medical/sleeper) "Oy" = ( /obj/structure/cable/green{ d1 = 1; @@ -24908,16 +25500,6 @@ }, /turf/simulated/floor/tiled/white, /area/medical/sleeper) -"Oz" = ( -/obj/machinery/door/firedoor/glass, -/obj/structure/grille, -/obj/structure/window/reinforced/polarized{ - dir = 10; - icon_state = "fwindow"; - id = "exam_room" - }, -/turf/simulated/floor, -/area/medical/sleeper) "OA" = ( /obj/structure/cable/green{ d1 = 1; @@ -25325,33 +25907,6 @@ /obj/structure/disposalpipe/segment, /turf/simulated/floor/tiled/white, /area/medical/ward) -"OX" = ( -/obj/effect/floor_decal/borderfloorwhite{ - dir = 1 - }, -/obj/effect/floor_decal/corner/paleblue/border{ - dir = 1 - }, -/obj/effect/floor_decal/borderfloorwhite/corner2{ - dir = 4 - }, -/obj/effect/floor_decal/corner/paleblue/bordercorner2{ - dir = 4 - }, -/obj/machinery/button/remote/airlock{ - desc = "A remote control switch for the medbay recovery room door."; - id = "MedicalRecovery"; - name = "Exit Button"; - pixel_x = -4; - pixel_y = 26 - }, -/obj/machinery/button/windowtint{ - id = "mrecovery-tint"; - pixel_x = 6; - pixel_y = 26 - }, -/turf/simulated/floor/tiled/white, -/area/medical/ward) "OY" = ( /obj/structure/bed/padded, /obj/item/weapon/bedsheet/medical, @@ -25435,42 +25990,9 @@ /obj/item/weapon/cane, /turf/simulated/floor/tiled/white, /area/medical/exam_room) -"Pc" = ( -/obj/structure/table/glass, -/obj/item/weapon/paper_bin, -/obj/item/weapon/clipboard, -/obj/item/weapon/pen, -/obj/machinery/camera/network/medbay{ - dir = 8 - }, -/obj/machinery/firealarm{ - dir = 4; - pixel_x = 24 - }, -/obj/effect/floor_decal/borderfloorwhite{ - dir = 5 - }, -/obj/machinery/atmospherics/unary/vent_pump/on{ - dir = 8 - }, -/obj/effect/floor_decal/corner/pink/border{ - dir = 5 - }, -/turf/simulated/floor/tiled/white, -/area/medical/exam_room) "Pd" = ( /turf/simulated/wall, /area/medical/patient_a) -"Pe" = ( -/obj/machinery/door/firedoor/glass, -/obj/structure/grille, -/obj/structure/window/reinforced/polarized{ - dir = 10; - icon_state = "fwindow"; - id = "pr1_window_tint" - }, -/turf/simulated/floor, -/area/medical/patient_a) "Pf" = ( /obj/structure/cable/green{ d1 = 1; @@ -25499,16 +26021,6 @@ "Pg" = ( /turf/simulated/wall, /area/medical/patient_b) -"Ph" = ( -/obj/machinery/door/firedoor/glass, -/obj/structure/grille, -/obj/structure/window/reinforced/polarized{ - dir = 10; - icon_state = "fwindow"; - id = "pr2_window_tint" - }, -/turf/simulated/floor, -/area/medical/patient_b) "Pi" = ( /obj/structure/cable/green{ d1 = 1; @@ -25537,16 +26049,6 @@ "Pj" = ( /turf/simulated/wall, /area/medical/patient_c) -"Pk" = ( -/obj/machinery/door/firedoor/glass, -/obj/structure/grille, -/obj/structure/window/reinforced/polarized{ - dir = 10; - icon_state = "fwindow"; - id = "pr3_window_tint" - }, -/turf/simulated/floor, -/area/medical/patient_c) "Pl" = ( /obj/structure/cable/green{ d1 = 1; @@ -25781,37 +26283,6 @@ }, /turf/simulated/floor/tiled/white, /area/medical/patient_a) -"PC" = ( -/obj/structure/bed/chair{ - dir = 8 - }, -/obj/effect/floor_decal/borderfloorwhite{ - dir = 5 - }, -/obj/effect/floor_decal/corner/pink/border{ - dir = 5 - }, -/obj/effect/floor_decal/borderfloorwhite/corner2{ - dir = 4 - }, -/obj/effect/floor_decal/corner/pink/bordercorner2{ - dir = 4 - }, -/obj/machinery/light_switch{ - dir = 2; - name = "light switch "; - pixel_x = 0; - pixel_y = 36 - }, -/obj/machinery/button/windowtint{ - id = "pr1_window_tint"; - pixel_y = 26 - }, -/obj/machinery/camera/network/medbay{ - dir = 8 - }, -/turf/simulated/floor/tiled/white, -/area/medical/patient_a) "PD" = ( /obj/structure/table/glass, /obj/machinery/computer/med_data/laptop, @@ -25854,37 +26325,6 @@ }, /turf/simulated/floor/tiled/white, /area/medical/patient_b) -"PF" = ( -/obj/structure/bed/chair{ - dir = 8 - }, -/obj/effect/floor_decal/borderfloorwhite{ - dir = 5 - }, -/obj/effect/floor_decal/corner/pink/border{ - dir = 5 - }, -/obj/effect/floor_decal/borderfloorwhite/corner2{ - dir = 4 - }, -/obj/effect/floor_decal/corner/pink/bordercorner2{ - dir = 4 - }, -/obj/machinery/button/windowtint{ - id = "pr2_window_tint"; - pixel_y = 26 - }, -/obj/machinery/light_switch{ - dir = 2; - name = "light switch "; - pixel_x = 0; - pixel_y = 36 - }, -/obj/machinery/camera/network/medbay{ - dir = 8 - }, -/turf/simulated/floor/tiled/white, -/area/medical/patient_b) "PG" = ( /obj/structure/table/glass, /obj/machinery/computer/med_data/laptop, @@ -25927,37 +26367,6 @@ }, /turf/simulated/floor/tiled/white, /area/medical/patient_c) -"PI" = ( -/obj/structure/bed/chair{ - dir = 8 - }, -/obj/effect/floor_decal/borderfloorwhite{ - dir = 5 - }, -/obj/effect/floor_decal/corner/pink/border{ - dir = 5 - }, -/obj/effect/floor_decal/borderfloorwhite/corner2{ - dir = 4 - }, -/obj/effect/floor_decal/corner/pink/bordercorner2{ - dir = 4 - }, -/obj/machinery/button/windowtint{ - id = "pr3_window_tint"; - pixel_y = 26 - }, -/obj/machinery/light_switch{ - dir = 2; - name = "light switch "; - pixel_x = 0; - pixel_y = 36 - }, -/obj/machinery/camera/network/medbay{ - dir = 8 - }, -/turf/simulated/floor/tiled/white, -/area/medical/patient_c) "PJ" = ( /obj/machinery/door/firedoor/glass, /obj/machinery/door/airlock/medical{ @@ -26589,50 +26998,6 @@ }, /turf/simulated/floor/tiled/white, /area/medical/ward) -"QI" = ( -/obj/structure/grille, -/obj/structure/window/reinforced, -/obj/machinery/door/firedoor/glass, -/obj/structure/window/reinforced/polarized{ - dir = 10; - icon_state = "fwindow"; - id = "exam_room" - }, -/turf/simulated/floor/plating, -/area/medical/exam_room) -"QJ" = ( -/obj/structure/grille, -/obj/structure/window/reinforced, -/obj/machinery/door/firedoor/glass, -/obj/structure/window/reinforced/polarized{ - dir = 10; - icon_state = "fwindow"; - id = "pr1_window_tint" - }, -/turf/simulated/floor/plating, -/area/medical/patient_a) -"QK" = ( -/obj/structure/grille, -/obj/structure/window/reinforced, -/obj/machinery/door/firedoor/glass, -/obj/structure/window/reinforced/polarized{ - dir = 10; - icon_state = "fwindow"; - id = "pr2_window_tint" - }, -/turf/simulated/floor/plating, -/area/medical/patient_b) -"QL" = ( -/obj/structure/grille, -/obj/structure/window/reinforced, -/obj/machinery/door/firedoor/glass, -/obj/structure/window/reinforced/polarized{ - dir = 10; - icon_state = "fwindow"; - id = "pr3_window_tint" - }, -/turf/simulated/floor/plating, -/area/medical/patient_c) "QM" = ( /obj/structure/grille, /obj/structure/window/reinforced/full, @@ -26704,17 +27069,6 @@ }, /turf/simulated/floor/tiled/white, /area/medical/ward) -"QS" = ( -/obj/structure/grille, -/obj/machinery/door/firedoor/glass, -/obj/structure/window/reinforced, -/obj/structure/window/reinforced/polarized{ - dir = 10; - icon_state = "fwindow"; - id = "mrecovery-tint" - }, -/turf/simulated/floor/plating, -/area/medical/ward) "QT" = ( /obj/effect/landmark/map_data/virgo3b, /turf/space, @@ -26920,7 +27274,6 @@ dir = 6 }, /obj/machinery/suit_cycler/security, -/obj/machinery/meter, /turf/simulated/floor/tiled, /area/security/eva) "Rn" = ( @@ -26969,18 +27322,6 @@ }, /turf/simulated/floor/tiled/dark, /area/security/warden) -"RN" = ( -/obj/effect/decal/cleanable/dirt, -/obj/structure/railing{ - dir = 4 - }, -/obj/random/trash_pile, -/turf/simulated/floor, -/area/maintenance/cargo) -"RT" = ( -/obj/structure/toilet, -/turf/simulated/floor/tiled/white, -/area/security/security_bathroom) "Sa" = ( /obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers, /obj/machinery/atmospherics/pipe/manifold/hidden/supply{ @@ -27038,33 +27379,6 @@ }, /turf/simulated/floor/tiled/white, /area/security/security_bathroom) -"Tb" = ( -/obj/structure/grille, -/obj/structure/window/reinforced/polarized{ - dir = 10; - icon_state = "fwindow"; - id = "hos_office" - }, -/obj/structure/cable/green, -/obj/structure/cable/green{ - icon_state = "0-8" - }, -/obj/machinery/door/firedoor/glass, -/obj/structure/cable/green{ - icon_state = "0-4" - }, -/turf/simulated/floor, -/area/security/forensics) -"Tc" = ( -/obj/structure/railing{ - icon_state = "railing0"; - dir = 1 - }, -/obj/structure/railing{ - dir = 4 - }, -/turf/simulated/floor, -/area/maintenance/cargo) "Td" = ( /obj/structure/cable/green{ d1 = 1; @@ -27238,20 +27552,6 @@ }, /turf/simulated/floor/wood, /area/crew_quarters/heads/hos) -"UA" = ( -/obj/structure/grille, -/obj/structure/window/reinforced/polarized{ - dir = 10; - icon_state = "fwindow"; - id = "hos_office" - }, -/obj/structure/cable/green{ - d2 = 4; - icon_state = "0-4" - }, -/obj/machinery/door/firedoor/glass, -/turf/simulated/floor, -/area/security/forensics) "UC" = ( /obj/effect/floor_decal/borderfloor{ dir = 8 @@ -27265,63 +27565,6 @@ }, /turf/simulated/floor/tiled, /area/security/hallwayaux) -"UH" = ( -/obj/machinery/door/firedoor/glass, -/obj/structure/cable/green{ - d2 = 4; - icon_state = "0-4" - }, -/obj/structure/cable/green{ - d2 = 2; - icon_state = "0-2" - }, -/obj/structure/grille, -/obj/structure/window/reinforced/polarized{ - dir = 10; - icon_state = "fwindow"; - id = "hos_office" - }, -/obj/machinery/door/blast/regular{ - density = 0; - dir = 1; - icon_state = "pdoor0"; - id = "security_lockdown"; - name = "Security Blast Doors"; - opacity = 0 - }, -/obj/structure/window/reinforced{ - dir = 8 - }, -/turf/simulated/floor, -/area/crew_quarters/heads/hos) -"UM" = ( -/turf/simulated/wall/r_wall, -/area/maintenance/cargo) -"UO" = ( -/obj/machinery/door/firedoor/glass, -/obj/structure/cable/green, -/obj/structure/grille, -/obj/structure/window/reinforced/polarized{ - dir = 10; - icon_state = "fwindow"; - id = "hos_office" - }, -/obj/structure/cable/green{ - icon_state = "0-4" - }, -/obj/machinery/door/blast/regular{ - density = 0; - dir = 1; - icon_state = "pdoor0"; - id = "security_lockdown"; - name = "Security Blast Doors"; - opacity = 0 - }, -/obj/structure/window/reinforced{ - dir = 8 - }, -/turf/simulated/floor, -/area/crew_quarters/heads/hos) "US" = ( /obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ dir = 9 @@ -27354,28 +27597,6 @@ }, /turf/simulated/floor/tiled, /area/security/security_bathroom) -"Vb" = ( -/obj/machinery/door/firedoor/glass, -/obj/structure/cable/green, -/obj/structure/grille, -/obj/structure/window/reinforced/polarized{ - dir = 10; - icon_state = "fwindow"; - id = "hos_office" - }, -/obj/machinery/door/blast/regular{ - density = 0; - dir = 1; - icon_state = "pdoor0"; - id = "security_lockdown"; - name = "Security Blast Doors"; - opacity = 0 - }, -/obj/structure/window/reinforced{ - dir = 8 - }, -/turf/simulated/floor, -/area/crew_quarters/heads/hos) "Ve" = ( /obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ dir = 4 @@ -27387,20 +27608,6 @@ }, /turf/simulated/floor/carpet, /area/crew_quarters/heads/hos) -"Vk" = ( -/obj/effect/floor_decal/rust, -/obj/structure/railing{ - dir = 4 - }, -/obj/structure/table/rack{ - dir = 8; - layer = 2.9 - }, -/obj/random/maintenance/security, -/obj/random/maintenance/security, -/obj/random/maintenance/clean, -/turf/simulated/floor, -/area/maintenance/cargo) "Vn" = ( /obj/structure/bed/chair/office/dark{ dir = 4 @@ -27432,10 +27639,6 @@ }, /turf/simulated/floor/bluegrid, /area/ai/foyer) -"VB" = ( -/obj/machinery/washing_machine, -/turf/simulated/floor/tiled/white, -/area/security/security_bathroom) "VJ" = ( /obj/structure/cable/green{ d2 = 2; @@ -27478,32 +27681,6 @@ }, /turf/simulated/floor/bluegrid, /area/ai/foyer) -"Wc" = ( -/obj/machinery/door/airlock/engineering{ - name = "Security Substation"; - req_one_access = list(1,11,24) - }, -/obj/structure/cable{ - d1 = 4; - d2 = 8; - icon_state = "4-8"; - pixel_x = 0 - }, -/turf/space, -/area/maintenance/substation/security) -"Wj" = ( -/obj/structure/grille, -/obj/structure/window/reinforced/polarized{ - dir = 10; - icon_state = "fwindow"; - id = "hos_office" - }, -/obj/structure/cable/green{ - icon_state = "0-8" - }, -/obj/machinery/door/firedoor/glass, -/turf/simulated/floor, -/area/security/forensics) "WB" = ( /obj/machinery/atmospherics/unary/vent_scrubber/on{ dir = 8 @@ -27548,11 +27725,6 @@ }, /turf/simulated/floor/bluegrid, /area/ai/foyer) -"XP" = ( -/obj/effect/floor_decal/rust, -/obj/structure/catwalk, -/turf/simulated/floor, -/area/maintenance/cargo) "XT" = ( /obj/effect/floor_decal/borderfloor{ dir = 1 @@ -27612,7 +27784,6 @@ "YV" = ( /obj/machinery/computer/secure_data, /obj/machinery/alarm{ - frequency = 1441; pixel_y = 22 }, /turf/simulated/floor/wood, @@ -27624,24 +27795,6 @@ }, /turf/space, /area/space) -"Ze" = ( -/obj/machinery/door/airlock/security{ - name = "Security Restroom"; - req_one_access = list(1,38) - }, -/obj/structure/cable/green{ - d1 = 4; - d2 = 8; - icon_state = "4-8" - }, -/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ - dir = 4 - }, -/obj/machinery/atmospherics/pipe/simple/hidden/supply{ - dir = 4 - }, -/turf/simulated/floor/tiled/white, -/area/security/security_bathroom) "ZM" = ( /obj/structure/table/woodentable, /obj/item/device/radio/off, @@ -27651,20 +27804,6 @@ /obj/machinery/atmospherics/unary/vent_scrubber/on, /turf/simulated/floor/tiled, /area/security/eva) -"ZP" = ( -/obj/structure/cable{ - icon_state = "2-8" - }, -/obj/structure/catwalk, -/turf/simulated/floor, -/area/maintenance/station/sec_upper) -"ZT" = ( -/obj/structure/railing{ - dir = 4 - }, -/obj/random/trash_pile, -/turf/simulated/floor, -/area/maintenance/cargo) "ZY" = ( /turf/simulated/wall/r_wall, /area/security/security_lockerroom) @@ -31555,13 +31694,13 @@ aa ab ab je -UH -UO +lj +lu je je je -UH -Vb +lj +lZ qc qv rd @@ -31576,7 +31715,7 @@ aa aa ae aa -AZ +Kq aa ae aa @@ -31704,7 +31843,7 @@ nW TO oW ZM -UA +mb qw re sa @@ -31714,7 +31853,7 @@ uG vs ae aa -xu +JW xv xw xw @@ -31722,7 +31861,7 @@ xw xw xw xv -xu +JW aa ae aa @@ -31846,7 +31985,7 @@ nX nX oX Sc -Tb +mE qx rf sb @@ -31988,7 +32127,7 @@ Rq jM kv SP -Wj +mF qy rg sc @@ -32139,7 +32278,7 @@ tJ qc vs vt -wL +xx xw xw zf @@ -32149,7 +32288,7 @@ BW CU xw xw -vt +wL vt vt vt @@ -32272,7 +32411,7 @@ eH ow Un cZ -UA +mb qz ri sd @@ -32414,7 +32553,7 @@ jM jM pa Sz -Tb +mE qA rj se @@ -32556,7 +32695,7 @@ oa ox ff pC -Wj +mF qB rk sf @@ -32697,7 +32836,7 @@ ZY ZY ZY av -pD +ma qd qC rl @@ -32708,15 +32847,15 @@ qc vt vt vt -xx +JX xw zj xw -Bf +dG xw zj xw -xx +JX vt ab ab @@ -32957,7 +33096,7 @@ ab ab ao ao -he +dN hB hT ih @@ -33132,9 +33271,9 @@ sT tP uJ vu -tc -tc -tc +nn +nn +nn vu uO zX @@ -33278,7 +33417,7 @@ wg wg xy yi -wf +og zY Bj Ca @@ -33420,7 +33559,7 @@ wh wh xz yj -wf +og zZ Bk BC @@ -33440,8 +33579,8 @@ Ix Me Me Me -Nw -Nw +uK +uK Me aa aa @@ -33562,7 +33701,7 @@ wh wM xA yk -wf +og Aa Bl Ca @@ -33583,8 +33722,8 @@ Me My MN Nx -NO -Ov +wf +xh aa aa aa @@ -33703,7 +33842,7 @@ vy wh wh xB -yl +nZ uO Ab Bm @@ -33723,10 +33862,10 @@ La LG Me Mz -MO +tc Ny NP -Ov +xh aa aa aa @@ -33827,8 +33966,8 @@ fD ga lz mi -mE -nm +dX +ew lz lz lz @@ -33840,7 +33979,7 @@ rr sm sV tS -uK +mI vz wh Cu @@ -33868,7 +34007,7 @@ MA MP Nz NP -Ov +xh aa aa aa @@ -33969,8 +34108,8 @@ QW lb lA mj -mF -nn +eo +eE nN nN fe @@ -33982,7 +34121,7 @@ rs lA DO tT -uL +mJ vA wh wh @@ -34130,7 +34269,7 @@ wh wM xE yk -wf +og Ae Bo Ca @@ -34266,13 +34405,13 @@ rt oz sY tV -uN +nm vC wh wh xF yo -wf +og Af Bp Cg @@ -34285,7 +34424,7 @@ Df Df Ix Jf -JW +pD KB Ld LK @@ -34387,7 +34526,7 @@ cr cR jx cR -iT +mS eD kN kE @@ -34398,7 +34537,7 @@ lC lC lC nO -nN +JM oz fo pK @@ -34414,7 +34553,7 @@ wi wN xG yp -wf +og Aa Bq Ch @@ -34426,15 +34565,15 @@ Gk Gk Gk Ix -Jg -JX +pB +pN KC -Jg -Jg +pB +pB Me -ME +rC MT -ME +rC Me Me ab @@ -34570,7 +34709,7 @@ Gk Iy Jh JY -KD +ng Le LL Mf @@ -34652,8 +34791,8 @@ ad aa aa Rg -ae -ae +cv +cv cv cv ai @@ -34824,14 +34963,14 @@ cV jk jk jk -og +lv oB pl pM qh fK rv -qQ +lw qP tX uR @@ -34850,7 +34989,7 @@ EG Fv Gl GU -HM +nf Iy Ji JZ @@ -34966,14 +35105,14 @@ jk jk jk jk -og +lv oC pm Rs qi qN rw -qQ +lw pg tY uS @@ -34995,7 +35134,7 @@ GV HN Iy Jj -Ka +mX KG Lh Lh @@ -35115,7 +35254,7 @@ DP nu qN rx -qQ +lw td pG mH @@ -35130,7 +35269,7 @@ Bt Cc Dk EI -Gn +nc Fx GS GW @@ -35250,7 +35389,7 @@ cS jk jk jk -qQ +lw oE po pO @@ -35392,14 +35531,14 @@ cT jy jk jk -qQ +lw oF pp pP qi mz ry -qQ +lw tZ ua uU @@ -35515,7 +35654,7 @@ gk gR aw aE -hX +dQ bf ci bO @@ -35535,12 +35674,12 @@ mH lD lD of -qQ -qQ -qQ +lw +lw +lw qk -qQ -qQ +lw +lw oA tg ub @@ -35572,7 +35711,7 @@ LO Nb LO NW -Ox +yl OU Pr PL @@ -35580,7 +35719,7 @@ Qk QH QN QP -QS +Jg vt aa aa @@ -35714,7 +35853,7 @@ LP Nc NF NZ -Ox +yl OV Ps PM @@ -35722,7 +35861,7 @@ Ql Pu Pu QQ -QS +Jg vt vt aa @@ -35864,7 +36003,7 @@ Qm Pu Pu QQ -QS +Jg vt vt aa @@ -35946,13 +36085,13 @@ in bt iR YT -cq -cq -cq -jV -cq -cq -cq +cw +cw +cw +de +cw +cw +cw dR le eX @@ -35991,22 +36130,22 @@ IC Jq Kf KL -Lo +xu LR Mj MG Ne KI Ob -Ox -OX +yl +yT Pu PO Qn Pu Pu QQ -QS +Jg vt vt vt @@ -36140,7 +36279,7 @@ Jr Nf KI Oc -Ox +yl OY Pv PP @@ -36148,7 +36287,7 @@ Qo PP QO QR -QS +Jg vt vt vt @@ -36250,7 +36389,7 @@ eX lC lC mH -rC +dx so tk uf @@ -36424,12 +36563,12 @@ Lp Nh KI Od -Oz +tt OZ Pw PQ Qp -QI +uN vt vt vt @@ -36571,7 +36710,7 @@ Pa Px PR Qq -QI +uN vt vt vt @@ -36708,12 +36847,12 @@ Lp Nj KI Of -Oz +tt Pb Py PS Qr -QI +uN vt vt vt @@ -36851,11 +36990,11 @@ Nk NI Og Ow -Pc +oh Pz PT Qs -QI +uN vt vt vt @@ -36944,7 +37083,7 @@ dP dP dP dP -Ze +dq dP dP dP @@ -37082,7 +37221,7 @@ bz bw cl dS -RT +dd SX ST VJ @@ -37135,11 +37274,11 @@ Nm NK Oi OB -Pe +AA PA PU Qt -QJ +Gn vt vt vt @@ -37281,7 +37420,7 @@ Pf PB PV Qu -QJ +Gn vt vt vt @@ -37366,11 +37505,11 @@ bB by cz dS -dd +mW SX TX WB -VB +uL Uw UV fG @@ -37381,7 +37520,7 @@ fc fc dw dw -dw +dr mR fc dw @@ -37419,11 +37558,11 @@ No Kn Ok OD -Pe -PC +AA +Cy PW Qv -QJ +Gn vt vt vt @@ -37506,16 +37645,16 @@ hQ bm bm bm -Wc +cn +af +af +af af af af af af af -UM -UM -UM af lL aI @@ -37540,24 +37679,24 @@ xP yG zA Av -BB -Ck +hX +hZ zD -AA +oq EX -AA +oq zD -Hk -Hk +oY +oY II -Hk -Hk +oY +oY KU -Lw -Lw +qQ +qQ Mq -Lw -Lw +qQ +qQ KV Ol OE @@ -37645,7 +37784,7 @@ bc gZ ha hw -hZ +an dw fc dA @@ -37655,13 +37794,13 @@ jq qU qU aI -Vk -RN -ZT +kt +ku +kJ +aI +mR +kV aI -XP -Tc -iV aI aI aI @@ -37683,8 +37822,8 @@ yH zB Ay xX -Ck -AA +jm +oq Ec EY FN @@ -37703,11 +37842,11 @@ Np KV Om OF -Ph +Bf PD PX Qw -QK +Hk vt vt vt @@ -37788,23 +37927,23 @@ bc hb hb bc -pS +cq eW -pN -ZP +kg +ks Tp dy dw dw eI -nx -nx -nx -nx -nx -nx -Tc -iV +fc +fc +fc +fc +fc +fc +kX +aI ab ab ab @@ -37826,7 +37965,7 @@ zC Az BD Cv -AA +oq Ed EZ Ef @@ -37849,7 +37988,7 @@ Pi PE PY Qx -QK +Hk vt vt vt @@ -37939,14 +38078,14 @@ dB aI aI aI -iV -iV -iV -iV -iV -nx -nx -iV +aI +aI +aI +aI +aI +fc +fc +aI ab ab ab @@ -37965,10 +38104,10 @@ xb xR yJ zD -AA +oq BE -AA -AA +oq +oq Ee EZ FO @@ -37977,21 +38116,21 @@ Hn Ig IL JC -Kq +pS KV Lz Ma Mt Ma -Nr +tC KV Oo OH -Ph -PF +Bf +Cz PZ Qy -QK +Hk vt vt vt @@ -38225,7 +38364,7 @@ ab ab ab ab -ab +iV iV iV mU @@ -38271,11 +38410,11 @@ Nt KV Oq OF -Pk +BB PG Qa Qz -QL +HM vt vt vt @@ -38417,7 +38556,7 @@ Pl PH Qb QA -QL +HM vt vt vt @@ -38555,11 +38694,11 @@ Mw Mw Os OJ -Pk -PI +BB +Ej Qc QB -QL +HM vt vt vt @@ -38643,7 +38782,7 @@ gK gK gJ iV -cB +cs iV bY bY @@ -38679,7 +38818,7 @@ AF BG Cx Du -Ej +ou Ef FT zD @@ -38808,7 +38947,7 @@ qp qX rH st -tt +eL up vc vS @@ -38965,7 +39104,7 @@ BH BH Ek Fe -Fe +jV Fe Hr Hr @@ -39103,7 +39242,7 @@ yQ zF AH AH -Cy +jJ AH El Ff @@ -39213,9 +39352,9 @@ gJ bY cF dj -dG -dX -ew +cB +db +df eO fg bY @@ -39239,13 +39378,13 @@ ur ve vU wA -xh +fa xR yQ zG AH BI -Cz +jO AH El Fg @@ -39498,7 +39637,7 @@ bY cH dk dH -dZ +iK dk eQ fi @@ -40091,9 +40230,9 @@ uw uw uw qr -xm -ya -yT +he +ht +hO zL AK BN @@ -40674,7 +40813,7 @@ GK HA Ir IU -JM +nh zO ab ab @@ -40771,7 +40910,7 @@ aa aa aa bX -iK +dZ iX ib ib @@ -41080,7 +41219,7 @@ qu qu rV sH -tC +nb uC vo wb diff --git a/maps/tether/tether-08-mining.dmm b/maps/tether/tether-08-mining.dmm index 0957a86181..db89f96d88 100644 --- a/maps/tether/tether-08-mining.dmm +++ b/maps/tether/tether-08-mining.dmm @@ -112,6 +112,13 @@ }, /turf/simulated/floor/tiled/steel_dirty/virgo3b, /area/outpost/mining_main/storage) +"av" = ( +/obj/structure/cable/ender{ + icon_state = "1-2"; + id = "surface-mining" + }, +/turf/simulated/floor/plating, +/area/mine/explored) "aw" = ( /obj/machinery/light/small, /turf/simulated/floor/tiled/steel_dirty/virgo3b, @@ -395,6 +402,9 @@ /obj/effect/floor_decal/steeldecal/steel_decals7{ dir = 8 }, +/obj/machinery/camera/network/mining{ + dir = 1 + }, /obj/structure/closet/hydrant{ pixel_y = -32 }, @@ -428,7 +438,7 @@ /turf/simulated/floor/tiled/steel_dirty/virgo3b, /area/outpost/mining_main/passage) "cu" = ( -/mob/living/simple_animal/retaliate/gaslamp, +/mob/living/simple_mob/animal/passive/gaslamp, /turf/simulated/floor/outdoors/grass/sif/virgo3b, /area/mine/explored) "cv" = ( @@ -590,7 +600,7 @@ pressure_checks_default = 2; use_power = 1 }, -/turf/simulated/floor/tiled/steel_dirty/virgo3b, +/turf/simulated/floor/plating, /area/outpost/mining_main/maintenance) "mH" = ( /obj/machinery/atmospherics/pipe/simple/visible/cyan{ @@ -982,13 +992,6 @@ /obj/structure/window/reinforced, /turf/simulated/floor/plating, /area/outpost/mining_main/maintenance) -"FG" = ( -/obj/structure/cable/ender{ - icon_state = "1-2"; - id = "surface-solars" - }, -/turf/simulated/floor/plating, -/area/mine/explored) "FV" = ( /obj/structure/cable/heavyduty{ icon_state = "2-8" @@ -1136,6 +1139,11 @@ /obj/effect/floor_decal/techfloor, /turf/simulated/floor/tiled/techfloor, /area/outpost/mining_main/maintenance) +"KL" = ( +/obj/machinery/telecomms/relay/preset/underdark, +/obj/effect/floor_decal/techfloor, +/turf/simulated/floor/tiled/techfloor, +/area/outpost/mining_main/maintenance) "Ma" = ( /obj/machinery/door/airlock/mining{ name = "Quarters" @@ -1257,6 +1265,7 @@ /turf/simulated/floor/outdoors/grass/sif/virgo3b, /area/mine/explored) "TC" = ( +/obj/machinery/camera/network/mining, /obj/machinery/atmospherics/pipe/simple/visible/cyan{ dir = 10 }, @@ -4158,7 +4167,7 @@ Kj Zg RB MV -KJ +KL SF ab Il @@ -11555,7 +11564,7 @@ jh jh lb KF -FG +av aa "} (72,1,1) = {" diff --git a/maps/tether/tether-09-solars.dmm b/maps/tether/tether-09-solars.dmm index 913fc4b196..dd9c2f1d16 100644 --- a/maps/tether/tether-09-solars.dmm +++ b/maps/tether/tether-09-solars.dmm @@ -202,7 +202,7 @@ /turf/simulated/floor/virgo3b_indoors, /area/tether/outpost/solars_shed) "aw" = ( -/mob/living/simple_animal/retaliate/gaslamp, +/mob/living/simple_mob/animal/passive/gaslamp, /turf/simulated/floor/outdoors/grass/sif/virgo3b, /area/tether/outpost/solars_outside) "ax" = ( @@ -800,7 +800,7 @@ /turf/simulated/mineral/virgo3b, /area/tether/outpost/solars_outside) "bH" = ( -/mob/living/simple_animal/retaliate/gaslamp, +/mob/living/simple_mob/animal/passive/gaslamp, /turf/simulated/floor/tiled/steel_dirty/virgo3b, /area/tether/outpost/solars_outside) "bI" = ( @@ -817,7 +817,7 @@ /turf/simulated/floor/virgo3b, /area/tether/outpost/solars_outside) "bJ" = ( -/mob/living/simple_animal/retaliate/gaslamp, +/mob/living/simple_mob/animal/passive/gaslamp, /turf/simulated/floor/outdoors/dirt/virgo3b, /area/tether/outpost/solars_outside) "bK" = ( @@ -1377,7 +1377,15 @@ /obj/effect/floor_decal/steeldecal/steel_decals5{ dir = 1 }, -/obj/machinery/portable_atmospherics/canister/oxygen, +/obj/structure/table/standard, +/obj/item/weapon/storage/briefcase/inflatable{ + pixel_x = -1; + pixel_y = -2 + }, +/obj/item/weapon/storage/briefcase/inflatable{ + pixel_x = 2; + pixel_y = 1 + }, /turf/simulated/floor/tiled, /area/rnd/outpost/eva) "cY" = ( @@ -1589,6 +1597,7 @@ /obj/effect/floor_decal/steeldecal/steel_decals5{ dir = 1 }, +/obj/machinery/portable_atmospherics/canister/oxygen, /turf/simulated/floor/tiled, /area/rnd/outpost/eva) "dz" = ( @@ -2968,6 +2977,9 @@ /obj/effect/floor_decal/corner/purple/bordercorner2{ dir = 8 }, +/obj/machinery/portable_atmospherics/powered/scrubber/huge/stationary{ + scrub_id = "science_outpost" + }, /turf/simulated/floor/tiled, /area/rnd/outpost) "fM" = ( @@ -3287,6 +3299,9 @@ /obj/effect/floor_decal/corner/purple/border{ dir = 10 }, +/obj/machinery/portable_atmospherics/powered/scrubber/huge/stationary{ + scrub_id = "science_outpost" + }, /turf/simulated/floor/tiled, /area/rnd/outpost) "gl" = ( @@ -3787,6 +3802,10 @@ /obj/effect/floor_decal/steeldecal/steel_decals7{ dir = 9 }, +/obj/machinery/light{ + dir = 4; + icon_state = "tube1" + }, /turf/simulated/floor/tiled, /area/rnd/outpost) "ha" = ( @@ -3987,10 +4006,6 @@ d2 = 4; icon_state = "1-4" }, -/obj/machinery/computer/area_atmos/tag{ - dir = 4; - scrub_id = "science_outpost" - }, /obj/effect/floor_decal/borderfloor{ dir = 10 }, @@ -4013,6 +4028,9 @@ dir = 5; icon_state = "intact" }, +/obj/machinery/portable_atmospherics/powered/scrubber/huge/stationary{ + scrub_id = "science_outpost" + }, /turf/simulated/floor/tiled, /area/rnd/outpost) "hv" = ( @@ -4256,10 +4274,6 @@ /turf/simulated/wall, /area/rnd/outpost/storage) "hN" = ( -/obj/structure/sign/warning/compressed_gas, -/turf/simulated/wall, -/area/rnd/outpost/storage) -"hO" = ( /obj/structure/cable/green{ d1 = 1; d2 = 2; @@ -4267,12 +4281,25 @@ }, /obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, /obj/machinery/atmospherics/pipe/simple/hidden/supply, -/obj/machinery/door/airlock/science{ - name = "Toxins Storage" - }, /obj/machinery/door/firedoor/border_only, +/obj/machinery/door/airlock/science{ + name = "Research Outpost" + }, /turf/simulated/floor/tiled, -/area/rnd/outpost/storage) +/area/rnd/outpost) +"hO" = ( +/obj/machinery/computer/area_atmos/tag{ + dir = 2; + scrub_id = "science_outpost" + }, +/obj/effect/floor_decal/borderfloor{ + dir = 9 + }, +/obj/effect/floor_decal/corner/purple/border{ + dir = 9 + }, +/turf/simulated/floor/tiled, +/area/rnd/outpost) "hP" = ( /obj/machinery/atmospherics/pipe/simple/visible/universal, /obj/machinery/camera/network/research_outpost{ @@ -4398,71 +4425,51 @@ /turf/simulated/floor/tiled/steel_ridged, /area/rnd/outpost/heating) "ie" = ( -/obj/machinery/portable_atmospherics/canister/sleeping_agent, -/obj/structure/window/reinforced, -/obj/structure/window/reinforced{ - dir = 1 - }, -/obj/machinery/conveyor{ - dir = 4; - id = "outpost_canisters"; - operating = 1 - }, -/turf/simulated/floor/tiled/steel_dirty, -/area/rnd/outpost/storage) -"if" = ( -/obj/machinery/power/apc{ +/obj/effect/floor_decal/borderfloor{ dir = 1; - name = "north bump"; - pixel_x = 0; - pixel_y = 28 + icon_state = "borderfloor"; + pixel_y = 0 }, -/obj/structure/cable/green{ - icon_state = "0-4" - }, -/obj/effect/floor_decal/industrial/warning/dust{ - dir = 8 - }, -/turf/simulated/floor/tiled/steel_dirty, -/area/rnd/outpost/storage) -"ig" = ( -/obj/machinery/portable_atmospherics/canister/sleeping_agent, -/obj/structure/window/reinforced, -/obj/structure/window/reinforced{ +/obj/effect/floor_decal/corner/purple/border{ dir = 1 }, -/obj/machinery/door/window/eastleft, -/turf/simulated/floor/tiled/steel_dirty, -/area/rnd/outpost/storage) +/obj/machinery/recharge_station, +/turf/simulated/floor/tiled, +/area/rnd/outpost) +"if" = ( +/obj/machinery/atmospherics/pipe/manifold/visible/red, +/obj/machinery/meter, +/turf/simulated/floor/tiled/white, +/area/rnd/outpost/heating) +"ig" = ( +/obj/machinery/atmospherics/pipe/simple/visible/red{ + dir = 9 + }, +/obj/structure/extinguisher_cabinet{ + dir = 2; + icon_state = "extinguisher_closed"; + pixel_x = 30 + }, +/obj/effect/floor_decal/corner/purple{ + dir = 6 + }, +/turf/simulated/floor/tiled/white, +/area/rnd/outpost/heating) "ih" = ( -/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ +/obj/effect/floor_decal/corner/purple{ dir = 10 }, -/obj/machinery/atmospherics/pipe/simple/hidden/supply{ - dir = 10 +/turf/simulated/floor/tiled/white, +/area/rnd/outpost/heating) +"ii" = ( +/obj/effect/floor_decal/corner/purple/full{ + dir = 4 }, /obj/machinery/portable_atmospherics/powered/scrubber/huge/stationary{ scrub_id = "science_outpost" }, -/obj/machinery/camera/network/research_outpost{ - dir = 8 - }, -/turf/simulated/floor/tiled/steel_dirty, -/area/rnd/outpost/storage) -"ii" = ( -/obj/structure/cable/green{ - d1 = 1; - d2 = 8; - icon_state = "1-8" - }, -/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ - dir = 5 - }, -/obj/machinery/atmospherics/pipe/simple/hidden/supply{ - dir = 5 - }, -/turf/simulated/floor/tiled/steel_dirty, -/area/rnd/outpost/storage) +/turf/simulated/floor/tiled/white, +/area/rnd/outpost/heating) "ij" = ( /obj/machinery/atmospherics/pipe/manifold/visible/red{ dir = 8 @@ -4567,66 +4574,52 @@ /turf/simulated/floor/tiled/white, /area/rnd/outpost/heating) "iw" = ( -/obj/machinery/atmospherics/pipe/simple/visible/red{ - dir = 9 +/obj/machinery/portable_atmospherics/powered/scrubber/huge/stationary{ + scrub_id = "science_outpost" }, -/obj/effect/floor_decal/corner/purple/full{ - dir = 4 - }, -/obj/structure/extinguisher_cabinet{ - dir = 2; - icon_state = "extinguisher_closed"; - pixel_x = 30 - }, -/turf/simulated/floor/tiled/white, -/area/rnd/outpost/heating) +/turf/simulated/floor/tiled/steel_dirty, +/area/rnd/outpost/storage) "ix" = ( -/obj/machinery/atmospherics/pipe/manifold/visible/red, -/obj/machinery/meter, -/obj/effect/floor_decal/corner/purple, -/turf/simulated/floor/tiled/white, -/area/rnd/outpost/heating) -"iy" = ( -/obj/machinery/portable_atmospherics/canister/carbon_dioxide, -/obj/structure/window/reinforced, -/obj/structure/window/reinforced{ - dir = 1 +/obj/machinery/alarm{ + pixel_y = 22 }, -/obj/machinery/conveyor{ - dir = 4; - id = "outpost_canisters"; - operating = 1 +/turf/simulated/floor/tiled/steel_dirty, +/area/rnd/outpost/storage) +"iy" = ( +/obj/structure/cable/green{ + d2 = 2; + icon_state = "0-2" + }, +/obj/machinery/power/apc{ + dir = 1; + name = "north bump"; + pixel_x = 0; + pixel_y = 28 }, /turf/simulated/floor/tiled/steel_dirty, /area/rnd/outpost/storage) "iz" = ( -/obj/effect/floor_decal/industrial/warning/dust{ - dir = 8 +/obj/machinery/light{ + dir = 1 }, /turf/simulated/floor/tiled/steel_dirty, /area/rnd/outpost/storage) "iA" = ( -/obj/machinery/portable_atmospherics/canister/carbon_dioxide, -/obj/structure/window/reinforced, -/obj/structure/window/reinforced{ - dir = 1 +/obj/effect/floor_decal/industrial/warning/dust{ + dir = 4 }, -/obj/machinery/door/window/eastleft, /turf/simulated/floor/tiled/steel_dirty, /area/rnd/outpost/storage) "iB" = ( -/obj/machinery/alarm{ - breach_detection = 0; - dir = 8; - pixel_x = 25; - pixel_y = 0; - report_danger_level = 0 +/obj/structure/window/reinforced{ + dir = 1 }, -/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, -/obj/machinery/atmospherics/pipe/simple/hidden/supply{ - dir = 9; - pixel_y = 0 +/obj/structure/window/reinforced, +/obj/machinery/door/window/brigdoor/westleft{ + req_access = list() }, +/obj/machinery/portable_atmospherics/canister/phoron, +/obj/effect/floor_decal/rust, /turf/simulated/floor/tiled/steel_dirty, /area/rnd/outpost/storage) "iC" = ( @@ -4756,42 +4749,64 @@ /turf/simulated/floor/tiled/white, /area/rnd/outpost/heating) "iR" = ( -/obj/machinery/portable_atmospherics/powered/scrubber/huge/stationary{ - scrub_id = "science_outpost" - }, -/obj/effect/floor_decal/corner/purple/full{ - dir = 4 - }, -/turf/simulated/floor/tiled/white, -/area/rnd/outpost/heating) -"iS" = ( -/obj/machinery/portable_atmospherics/canister/nitrogen, -/obj/structure/window/reinforced, /obj/structure/window/reinforced{ dir = 1 }, +/obj/structure/window/reinforced, /obj/machinery/conveyor{ - dir = 4; + dir = 8; id = "outpost_canisters"; operating = 1 }, -/turf/simulated/floor/tiled/steel_dirty, +/obj/machinery/portable_atmospherics/canister/phoron, +/turf/simulated/floor, /area/rnd/outpost/storage) -"iT" = ( -/obj/machinery/portable_atmospherics/canister/nitrogen, -/obj/structure/window/reinforced, +"iS" = ( /obj/structure/window/reinforced{ dir = 1 }, -/obj/machinery/door/window/eastleft, +/obj/structure/window/reinforced, +/obj/structure/window/reinforced{ + dir = 4 + }, +/obj/machinery/conveyor{ + dir = 8; + id = "outpost_canisters"; + operating = 1 + }, +/obj/machinery/portable_atmospherics/canister/phoron, +/turf/simulated/floor, +/area/rnd/outpost/storage) +"iT" = ( +/obj/machinery/door/airlock/science{ + name = "Toxins Storage" + }, +/obj/machinery/door/firedoor/border_only, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/obj/structure/cable/green{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, /turf/simulated/floor/tiled/steel_dirty, /area/rnd/outpost/storage) "iU" = ( -/obj/machinery/firealarm{ - dir = 4; - pixel_x = 24 +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/obj/structure/cable/green{ + d1 = 4; + d2 = 8; + icon_state = "4-8" }, -/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, /turf/simulated/floor/tiled/steel_dirty, /area/rnd/outpost/storage) "iV" = ( @@ -4816,25 +4831,26 @@ /turf/simulated/floor/outdoors/grass/sif/virgo3b, /area/tether/outpost/solars_outside) "iZ" = ( -/obj/machinery/portable_atmospherics/canister/empty, -/obj/structure/window/reinforced, -/obj/structure/window/reinforced{ - dir = 1 +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 }, -/obj/machinery/conveyor{ - dir = 4; - id = "outpost_canisters"; - operating = 1 +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/obj/structure/cable/green{ + d1 = 1; + d2 = 8; + icon_state = "1-8" }, /turf/simulated/floor/tiled/steel_dirty, /area/rnd/outpost/storage) "ja" = ( -/obj/machinery/portable_atmospherics/canister/empty, -/obj/structure/window/reinforced, -/obj/structure/window/reinforced{ - dir = 1 +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 10 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 10 }, -/obj/machinery/door/window/eastleft, /turf/simulated/floor/tiled/steel_dirty, /area/rnd/outpost/storage) "jb" = ( @@ -4842,38 +4858,51 @@ /turf/simulated/floor/tiled/steel_dirty, /area/rnd/outpost/storage) "jc" = ( -/obj/machinery/portable_atmospherics/powered/scrubber, +/obj/structure/window/reinforced{ + dir = 1 + }, +/obj/structure/window/reinforced, +/obj/machinery/door/window/brigdoor/westleft{ + req_access = list() + }, +/obj/machinery/portable_atmospherics/canister/oxygen, /obj/effect/floor_decal/rust, /turf/simulated/floor/tiled/steel_dirty, /area/rnd/outpost/storage) "jd" = ( -/obj/machinery/portable_atmospherics/powered/scrubber, -/obj/effect/floor_decal/industrial/warning/dust{ - dir = 8 - }, -/turf/simulated/floor/tiled/steel_dirty, -/area/rnd/outpost/storage) -"je" = ( -/obj/machinery/portable_atmospherics/canister/oxygen, -/obj/structure/window/reinforced, /obj/structure/window/reinforced{ dir = 1 }, +/obj/structure/window/reinforced, /obj/machinery/conveyor{ - dir = 4; + dir = 8; id = "outpost_canisters"; operating = 1 }, -/turf/simulated/floor/tiled/steel_dirty, -/area/rnd/outpost/storage) -"jf" = ( /obj/machinery/portable_atmospherics/canister/oxygen, -/obj/structure/window/reinforced, +/turf/simulated/floor, +/area/rnd/outpost/storage) +"je" = ( /obj/structure/window/reinforced{ dir = 1 }, -/obj/machinery/door/window/eastleft, -/obj/effect/floor_decal/rust, +/obj/structure/window/reinforced, +/obj/structure/window/reinforced{ + dir = 4 + }, +/obj/machinery/conveyor{ + dir = 8; + id = "outpost_canisters"; + operating = 1 + }, +/obj/machinery/portable_atmospherics/canister/oxygen, +/turf/simulated/floor, +/area/rnd/outpost/storage) +"jf" = ( +/obj/machinery/firealarm{ + dir = 8; + pixel_x = -26 + }, /turf/simulated/floor/tiled/steel_dirty, /area/rnd/outpost/storage) "jg" = ( @@ -4894,63 +4923,77 @@ /turf/simulated/floor/tiled/steel_dirty, /area/rnd/outpost/storage) "jj" = ( -/obj/machinery/portable_atmospherics/powered/pump, -/obj/effect/floor_decal/industrial/warning/dust{ - dir = 8 +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 9; + pixel_y = 0 }, /turf/simulated/floor/tiled/steel_dirty, /area/rnd/outpost/storage) "jk" = ( +/obj/structure/window/reinforced{ + dir = 1 + }, +/obj/structure/window/reinforced, +/obj/machinery/door/window/brigdoor/westleft{ + req_access = list() + }, +/obj/machinery/portable_atmospherics/canister/empty, /obj/effect/floor_decal/rust, -/obj/machinery/portable_atmospherics/powered/pump, /turf/simulated/floor/tiled/steel_dirty, /area/rnd/outpost/storage) "jl" = ( -/obj/machinery/portable_atmospherics/canister/phoron, -/obj/structure/window/reinforced, /obj/structure/window/reinforced{ dir = 1 }, +/obj/structure/window/reinforced, /obj/machinery/conveyor{ - dir = 4; + dir = 8; id = "outpost_canisters"; operating = 1 }, -/turf/simulated/floor/tiled/steel_dirty, +/obj/machinery/portable_atmospherics/canister/empty, +/turf/simulated/floor, /area/rnd/outpost/storage) "jm" = ( -/obj/machinery/portable_atmospherics/canister/phoron, -/obj/structure/window/reinforced, /obj/structure/window/reinforced{ dir = 1 }, +/obj/structure/window/reinforced, +/obj/structure/window/reinforced{ + dir = 4 + }, /obj/machinery/conveyor{ - dir = 4; + dir = 8; id = "outpost_canisters"; operating = 1 }, -/obj/effect/floor_decal/rust, -/turf/simulated/floor/tiled/steel_dirty, +/obj/machinery/portable_atmospherics/canister/empty, +/turf/simulated/floor, /area/rnd/outpost/storage) "jn" = ( -/obj/machinery/light_switch{ +/obj/machinery/camera/network/research_outpost, +/obj/effect/floor_decal/borderfloor{ dir = 1; - pixel_x = 4; - pixel_y = -24 + icon_state = "borderfloor"; + pixel_y = 0 }, -/obj/effect/floor_decal/rust, -/obj/effect/floor_decal/industrial/warning/dust{ - dir = 8 +/obj/effect/floor_decal/corner/purple/border{ + dir = 1 }, -/turf/simulated/floor/tiled/steel_dirty, -/area/rnd/outpost/storage) +/obj/effect/floor_decal/borderfloor/corner2{ + dir = 1 + }, +/obj/effect/floor_decal/corner/purple/bordercorner2{ + dir = 1 + }, +/turf/simulated/floor/tiled, +/area/rnd/outpost) "jo" = ( -/obj/machinery/portable_atmospherics/canister/phoron, -/obj/structure/window/reinforced, /obj/structure/window/reinforced{ dir = 1 }, -/obj/machinery/door/window/eastleft, +/obj/machinery/portable_atmospherics/powered/scrubber, /obj/effect/floor_decal/rust, /turf/simulated/floor/tiled/steel_dirty, /area/rnd/outpost/storage) @@ -4964,14 +5007,25 @@ /turf/simulated/floor/tiled/steel_dirty, /area/rnd/outpost/storage) "jq" = ( -/obj/structure/reagent_dispensers/watertank, +/obj/structure/window/reinforced{ + dir = 1 + }, +/obj/machinery/portable_atmospherics/powered/scrubber, +/obj/effect/floor_decal/industrial/warning/dust{ + dir = 4 + }, /turf/simulated/floor/tiled/steel_dirty, /area/rnd/outpost/storage) "jr" = ( -/obj/structure/reagent_dispensers/fueltank, -/obj/effect/floor_decal/industrial/warning/dust{ - dir = 8 +/obj/structure/window/reinforced{ + dir = 1 }, +/obj/structure/window/reinforced, +/obj/machinery/door/window/brigdoor/westleft{ + req_access = list() + }, +/obj/machinery/portable_atmospherics/canister/nitrogen, +/obj/effect/floor_decal/rust, /turf/simulated/floor/tiled/steel_dirty, /area/rnd/outpost/storage) "js" = ( @@ -4998,6 +5052,2007 @@ /obj/effect/decal/cleanable/dirt, /turf/simulated/floor/virgo3b, /area/tether/outpost/solars_outside) +"jv" = ( +/obj/structure/window/reinforced{ + dir = 1 + }, +/obj/structure/window/reinforced, +/obj/machinery/conveyor{ + dir = 8; + id = "outpost_canisters"; + operating = 1 + }, +/obj/machinery/portable_atmospherics/canister/nitrogen, +/turf/simulated/floor, +/area/rnd/outpost/storage) +"jw" = ( +/turf/simulated/wall/r_wall, +/area/rnd/outpost/anomaly_lab/testing) +"jx" = ( +/turf/simulated/wall, +/area/rnd/outpost/anomaly_lab) +"jy" = ( +/obj/structure/cable/green{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/turf/simulated/floor/tiled, +/area/rnd/outpost) +"jz" = ( +/obj/machinery/portable_atmospherics/powered/scrubber/huge/stationary{ + scrub_id = "science_outpost" + }, +/obj/effect/floor_decal/borderfloor{ + dir = 5 + }, +/obj/effect/floor_decal/corner/purple/border{ + dir = 5 + }, +/obj/effect/floor_decal/borderfloor/corner2{ + dir = 4 + }, +/obj/effect/floor_decal/corner/purple/bordercorner2{ + dir = 4 + }, +/turf/simulated/floor/tiled, +/area/rnd/outpost) +"jA" = ( +/obj/machinery/portable_atmospherics/powered/pump, +/obj/effect/floor_decal/rust, +/obj/effect/floor_decal/industrial/warning/dust{ + dir = 4 + }, +/turf/simulated/floor/tiled/steel_dirty, +/area/rnd/outpost/storage) +"jB" = ( +/obj/structure/window/reinforced, +/obj/structure/window/reinforced{ + dir = 1 + }, +/obj/machinery/door/window/brigdoor/westleft{ + req_access = list() + }, +/obj/machinery/portable_atmospherics/canister/carbon_dioxide, +/obj/effect/floor_decal/rust, +/turf/simulated/floor/tiled/steel_dirty, +/area/rnd/outpost/storage) +"jC" = ( +/obj/structure/window/reinforced, +/obj/structure/window/reinforced{ + dir = 1 + }, +/obj/machinery/conveyor{ + dir = 8; + id = "outpost_canisters"; + operating = 1 + }, +/obj/machinery/portable_atmospherics/canister/carbon_dioxide, +/turf/simulated/floor, +/area/rnd/outpost/storage) +"jD" = ( +/obj/structure/window/reinforced, +/obj/structure/window/reinforced{ + dir = 1 + }, +/obj/structure/window/reinforced{ + dir = 4 + }, +/obj/machinery/conveyor{ + dir = 8; + id = "outpost_canisters"; + operating = 1 + }, +/obj/machinery/portable_atmospherics/canister/carbon_dioxide, +/turf/simulated/floor, +/area/rnd/outpost/storage) +"jE" = ( +/turf/simulated/wall/r_wall, +/area/rnd/outpost/anomaly_lab/storage) +"jF" = ( +/obj/structure/reagent_dispensers/watertank, +/obj/effect/floor_decal/rust, +/turf/simulated/floor/tiled/steel_dirty, +/area/rnd/outpost/storage) +"jG" = ( +/obj/structure/reagent_dispensers/fueltank, +/obj/effect/floor_decal/rust, +/obj/effect/floor_decal/industrial/warning/dust{ + dir = 4 + }, +/turf/simulated/floor/tiled/steel_dirty, +/area/rnd/outpost/storage) +"jH" = ( +/obj/effect/floor_decal/rust, +/turf/simulated/floor/tiled/steel_dirty, +/area/rnd/outpost/storage) +"jI" = ( +/obj/machinery/light_switch{ + dir = 1; + pixel_x = 4; + pixel_y = -24 + }, +/obj/effect/floor_decal/industrial/warning/dust{ + dir = 4 + }, +/turf/simulated/floor/tiled/steel_dirty, +/area/rnd/outpost/storage) +"jJ" = ( +/obj/structure/window/reinforced, +/obj/structure/window/reinforced{ + dir = 1 + }, +/obj/machinery/door/window/brigdoor/westleft{ + req_access = list() + }, +/obj/machinery/portable_atmospherics/canister/sleeping_agent, +/obj/effect/floor_decal/rust, +/turf/simulated/floor/tiled/steel_dirty, +/area/rnd/outpost/storage) +"jK" = ( +/obj/structure/window/reinforced, +/obj/structure/window/reinforced{ + dir = 1 + }, +/obj/machinery/conveyor{ + dir = 8; + id = "outpost_canisters"; + operating = 1 + }, +/obj/machinery/portable_atmospherics/canister/sleeping_agent, +/turf/simulated/floor, +/area/rnd/outpost/storage) +"jL" = ( +/obj/structure/window/reinforced, +/obj/structure/window/reinforced{ + dir = 1 + }, +/obj/structure/window/reinforced{ + dir = 4 + }, +/obj/machinery/conveyor{ + dir = 8; + id = "outpost_canisters"; + operating = 1 + }, +/obj/machinery/portable_atmospherics/canister/sleeping_agent, +/turf/simulated/floor, +/area/rnd/outpost/storage) +"jM" = ( +/obj/effect/floor_decal/industrial/warning/corner, +/turf/simulated/floor/tiled/dark, +/area/rnd/outpost/anomaly_lab/testing) +"jN" = ( +/obj/machinery/door/blast/regular{ + dir = 2; + id = "anomaly_testing_v"; + name = "Anomaly Testing Vent" + }, +/turf/simulated/floor/reinforced/airless, +/area/rnd/outpost/anomaly_lab/testing) +"jO" = ( +/obj/effect/floor_decal/industrial/warning, +/turf/simulated/floor/tiled/dark, +/area/rnd/outpost/anomaly_lab/testing) +"jP" = ( +/obj/machinery/door/airlock/glass_external{ + name = "Anomaly Secure Testing"; + req_access = list(65); + req_one_access = list(47) + }, +/obj/machinery/door/firedoor/glass, +/turf/simulated/floor/tiled, +/area/rnd/outpost/anomaly_lab/testing) +"jQ" = ( +/obj/machinery/alarm{ + dir = 8; + pixel_x = 22; + pixel_y = 0 + }, +/obj/machinery/light/small{ + icon_state = "bulb1"; + dir = 1 + }, +/turf/simulated/floor/tiled, +/area/rnd/outpost/anomaly_lab) +"jR" = ( +/obj/structure/closet/crate/plastic, +/turf/simulated/floor, +/area/rnd/outpost/anomaly_lab/storage) +"jS" = ( +/obj/effect/floor_decal/industrial/warning/corner, +/turf/simulated/floor, +/area/rnd/outpost/anomaly_lab/storage) +"jT" = ( +/obj/effect/floor_decal/industrial/warning, +/turf/simulated/floor, +/area/rnd/outpost/anomaly_lab/storage) +"jU" = ( +/obj/effect/floor_decal/industrial/warning/dust{ + dir = 9 + }, +/obj/effect/floor_decal/rust, +/turf/simulated/floor/tiled/steel_dirty/virgo3b, +/area/tether/outpost/solars_outside) +"jV" = ( +/obj/structure/anomaly_container, +/obj/effect/floor_decal/rust, +/obj/effect/floor_decal/industrial/warning/dust{ + dir = 1 + }, +/turf/simulated/floor/tiled/steel_dirty/virgo3b, +/area/tether/outpost/solars_outside) +"jW" = ( +/obj/effect/floor_decal/industrial/warning/dust{ + dir = 5 + }, +/obj/effect/floor_decal/rust, +/turf/simulated/floor/tiled/steel_dirty/virgo3b, +/area/tether/outpost/solars_outside) +"jX" = ( +/obj/structure/window/reinforced{ + dir = 1 + }, +/obj/structure/window/reinforced{ + dir = 8 + }, +/obj/structure/window/reinforced{ + dir = 4 + }, +/obj/structure/flora/ausbushes/brflowers, +/turf/simulated/floor/grass, +/area/rnd/outpost) +"jY" = ( +/obj/structure/window/reinforced{ + dir = 8 + }, +/obj/structure/window/reinforced, +/obj/structure/window/reinforced{ + dir = 4 + }, +/obj/structure/flora/ausbushes/brflowers, +/turf/simulated/floor/grass, +/area/rnd/outpost) +"jZ" = ( +/obj/structure/sign/warning/compressed_gas, +/turf/simulated/wall, +/area/rnd/outpost/storage) +"ka" = ( +/obj/effect/floor_decal/industrial/warning/corner, +/obj/effect/floor_decal/industrial/warning/corner{ + dir = 8 + }, +/obj/machinery/camera/network/research_outpost, +/turf/simulated/floor, +/area/rnd/outpost/anomaly_lab/storage) +"kb" = ( +/obj/effect/floor_decal/industrial/warning/corner{ + dir = 8 + }, +/obj/structure/cable/green{ + d2 = 2; + icon_state = "0-2" + }, +/obj/machinery/power/apc{ + dir = 1; + name = "north bump"; + pixel_x = 0; + pixel_y = 28 + }, +/turf/simulated/floor, +/area/rnd/outpost/anomaly_lab/storage) +"kc" = ( +/obj/machinery/atmospherics/unary/vent_scrubber/on, +/obj/machinery/light_switch{ + dir = 8; + pixel_x = 28 + }, +/turf/simulated/floor, +/area/rnd/outpost/anomaly_lab/storage) +"kd" = ( +/obj/effect/floor_decal/industrial/warning{ + dir = 4 + }, +/obj/machinery/light/small{ + dir = 8 + }, +/turf/simulated/floor/tiled/dark, +/area/rnd/outpost/anomaly_lab/testing) +"ke" = ( +/obj/effect/floor_decal/borderfloor{ + dir = 8 + }, +/obj/effect/floor_decal/corner/purple/border{ + dir = 8 + }, +/obj/machinery/light{ + dir = 8; + icon_state = "tube1" + }, +/turf/simulated/floor/tiled, +/area/rnd/outpost) +"kf" = ( +/obj/effect/floor_decal/industrial/outline/red, +/turf/simulated/floor/tiled/dark, +/area/rnd/outpost/anomaly_lab/testing) +"kg" = ( +/obj/effect/floor_decal/industrial/warning/corner{ + dir = 8 + }, +/obj/machinery/alarm{ + alarm_id = "anomaly_testing"; + dir = 8; + frequency = 1439; + pixel_x = 22; + pixel_y = 0 + }, +/turf/simulated/floor/tiled/dark, +/area/rnd/outpost/anomaly_lab/testing) +"kh" = ( +/obj/machinery/door/airlock/glass_external{ + name = "Anomaly Secure Testing"; + req_access = list(65); + req_one_access = list(47) + }, +/obj/machinery/door/firedoor/glass, +/turf/simulated/floor/tiled, +/area/rnd/outpost/anomaly_lab) +"ki" = ( +/obj/structure/closet/crate/science, +/turf/simulated/floor, +/area/rnd/outpost/anomaly_lab/storage) +"kj" = ( +/obj/effect/floor_decal/industrial/warning{ + dir = 4 + }, +/turf/simulated/floor, +/area/rnd/outpost/anomaly_lab/storage) +"kk" = ( +/obj/effect/floor_decal/industrial/outline/red, +/obj/structure/anomaly_container, +/turf/simulated/floor, +/area/rnd/outpost/anomaly_lab/storage) +"kl" = ( +/obj/effect/floor_decal/industrial/warning{ + dir = 4 + }, +/obj/effect/floor_decal/industrial/warning{ + dir = 8 + }, +/turf/simulated/floor, +/area/rnd/outpost/anomaly_lab/storage) +"km" = ( +/obj/effect/floor_decal/industrial/outline/red, +/turf/simulated/floor, +/area/rnd/outpost/anomaly_lab/storage) +"kn" = ( +/obj/effect/floor_decal/borderfloor{ + dir = 4 + }, +/obj/effect/floor_decal/corner/purple/border{ + dir = 4 + }, +/turf/simulated/floor/tiled, +/area/rnd/outpost) +"ko" = ( +/obj/effect/floor_decal/industrial/warning{ + dir = 8 + }, +/obj/structure/cable/green{ + d1 = 1; + d2 = 4; + icon_state = "1-4" + }, +/turf/simulated/floor, +/area/rnd/outpost/anomaly_lab/storage) +"kp" = ( +/obj/machinery/atmospherics/pipe/simple/visible/supply{ + dir = 6 + }, +/obj/machinery/atmospherics/pipe/simple/visible/scrubbers{ + dir = 5 + }, +/obj/structure/cable/green{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/turf/simulated/floor, +/area/rnd/outpost/anomaly_lab/storage) +"kq" = ( +/obj/machinery/door/airlock/maintenance/rnd{ + name = "Anomaly Storage" + }, +/obj/machinery/atmospherics/pipe/simple/visible/scrubbers{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/visible/supply{ + dir = 4 + }, +/obj/structure/cable/green{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/obj/machinery/door/firedoor/border_only, +/turf/simulated/floor, +/area/rnd/outpost/anomaly_lab/storage) +"kr" = ( +/turf/simulated/wall, +/area/rnd/outpost/xenoarch_storage) +"ks" = ( +/obj/machinery/door/airlock/glass_science{ + name = "Xenoarch Storage" + }, +/obj/machinery/door/firedoor/border_only, +/obj/structure/cable/green{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/turf/simulated/floor/tiled, +/area/rnd/outpost/xenoarch_storage) +"kt" = ( +/obj/effect/floor_decal/industrial/warning/corner{ + dir = 4 + }, +/obj/effect/floor_decal/industrial/warning, +/turf/simulated/floor/tiled/dark, +/area/rnd/outpost/anomaly_lab/testing) +"ku" = ( +/obj/effect/floor_decal/borderfloor{ + dir = 8 + }, +/obj/effect/floor_decal/corner/purple/border{ + dir = 8 + }, +/turf/simulated/floor/tiled, +/area/rnd/outpost) +"kv" = ( +/obj/effect/floor_decal/industrial/warning{ + dir = 1 + }, +/obj/effect/floor_decal/industrial/warning, +/turf/simulated/floor/tiled/dark, +/area/rnd/outpost/anomaly_lab/testing) +"kw" = ( +/obj/effect/floor_decal/borderfloor{ + dir = 4 + }, +/obj/effect/floor_decal/corner/purple/border{ + dir = 4 + }, +/obj/machinery/alarm{ + dir = 8; + pixel_x = 25; + pixel_y = 0 + }, +/turf/simulated/floor/tiled, +/area/rnd/outpost) +"kx" = ( +/obj/effect/floor_decal/industrial/warning{ + dir = 8 + }, +/obj/machinery/camera/network/research_outpost{ + dir = 8 + }, +/turf/simulated/floor/tiled/dark, +/area/rnd/outpost/anomaly_lab/testing) +"ky" = ( +/obj/effect/floor_decal/industrial/warning{ + dir = 1 + }, +/turf/simulated/floor/tiled, +/area/rnd/outpost/anomaly_lab) +"kz" = ( +/obj/effect/floor_decal/industrial/warning/corner{ + dir = 1 + }, +/turf/simulated/floor/tiled, +/area/rnd/outpost/anomaly_lab) +"kA" = ( +/obj/effect/floor_decal/borderfloor{ + dir = 8 + }, +/obj/effect/floor_decal/corner/purple/border{ + dir = 8 + }, +/obj/machinery/firealarm{ + dir = 8; + pixel_x = -26 + }, +/turf/simulated/floor/tiled, +/area/rnd/outpost) +"kB" = ( +/obj/effect/floor_decal/borderfloor{ + dir = 4 + }, +/obj/effect/floor_decal/corner/purple/border{ + dir = 4 + }, +/obj/effect/floor_decal/borderfloor/corner2{ + dir = 5 + }, +/obj/effect/floor_decal/corner/purple/bordercorner2{ + dir = 5 + }, +/turf/simulated/floor/tiled, +/area/rnd/outpost) +"kC" = ( +/obj/machinery/light/small{ + dir = 8; + pixel_x = 0 + }, +/turf/simulated/floor, +/area/rnd/outpost/anomaly_lab/storage) +"kD" = ( +/obj/effect/floor_decal/industrial/warning/corner, +/obj/effect/floor_decal/industrial/warning/corner{ + dir = 4 + }, +/turf/simulated/floor, +/area/rnd/outpost/anomaly_lab/storage) +"kE" = ( +/obj/effect/floor_decal/industrial/warning, +/obj/effect/floor_decal/industrial/warning{ + dir = 1 + }, +/turf/simulated/floor, +/area/rnd/outpost/anomaly_lab/storage) +"kF" = ( +/obj/effect/floor_decal/industrial/warning/corner, +/obj/effect/floor_decal/industrial/warning/corner{ + dir = 1 + }, +/obj/effect/floor_decal/industrial/warning/corner{ + dir = 4 + }, +/obj/effect/floor_decal/industrial/warning/corner{ + dir = 8 + }, +/turf/simulated/floor, +/area/rnd/outpost/anomaly_lab/storage) +"kG" = ( +/obj/effect/floor_decal/industrial/warning/corner{ + dir = 1 + }, +/obj/effect/floor_decal/industrial/warning/corner{ + dir = 8 + }, +/turf/simulated/floor, +/area/rnd/outpost/anomaly_lab/storage) +"kH" = ( +/obj/machinery/atmospherics/unary/vent_pump/on{ + dir = 1 + }, +/obj/machinery/light/small{ + dir = 4 + }, +/turf/simulated/floor, +/area/rnd/outpost/anomaly_lab/storage) +"kI" = ( +/obj/machinery/door/airlock/science{ + name = "Anomalous Materials" + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/structure/cable/green{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/obj/machinery/door/firedoor/border_only, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/turf/simulated/floor/tiled, +/area/rnd/outpost/anomaly_lab) +"kJ" = ( +/obj/structure/sign/department/anomaly, +/turf/simulated/wall, +/area/rnd/outpost/anomaly_lab) +"kK" = ( +/obj/machinery/suspension_gen, +/obj/machinery/camera/network/research_outpost{ + dir = 4 + }, +/turf/simulated/floor/tiled, +/area/rnd/outpost/xenoarch_storage) +"kL" = ( +/obj/structure/table/rack, +/obj/item/device/suit_cooling_unit, +/obj/item/device/suit_cooling_unit, +/turf/simulated/floor/tiled, +/area/rnd/outpost/xenoarch_storage) +"kM" = ( +/obj/effect/floor_decal/industrial/warning/dust{ + dir = 4 + }, +/obj/machinery/camera/network/research_outpost, +/turf/simulated/floor/tiled/steel_dirty, +/area/rnd/outpost/storage) +"kN" = ( +/obj/effect/floor_decal/borderfloor{ + dir = 9 + }, +/obj/effect/floor_decal/corner/purple/border{ + dir = 9 + }, +/obj/machinery/vending/snack, +/turf/simulated/floor/tiled, +/area/rnd/outpost) +"kO" = ( +/obj/structure/cable/green{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 5 + }, +/turf/simulated/floor/tiled, +/area/rnd/outpost/xenoarch_storage) +"kP" = ( +/obj/structure/closet/excavation, +/obj/machinery/atmospherics/unary/vent_scrubber/on{ + dir = 8 + }, +/turf/simulated/floor/tiled, +/area/rnd/outpost/xenoarch_storage) +"kQ" = ( +/obj/effect/floor_decal/borderfloor{ + dir = 1; + icon_state = "borderfloor"; + pixel_y = 0 + }, +/obj/effect/floor_decal/corner/purple/border{ + dir = 1 + }, +/obj/machinery/vending/coffee, +/turf/simulated/floor/tiled, +/area/rnd/outpost) +"kR" = ( +/obj/machinery/atmospherics/unary/vent_pump/on{ + dir = 4 + }, +/turf/simulated/floor/tiled, +/area/rnd/outpost) +"kS" = ( +/obj/effect/floor_decal/borderfloor{ + dir = 1; + icon_state = "borderfloor"; + pixel_y = 0 + }, +/obj/effect/floor_decal/corner/purple/border{ + dir = 1 + }, +/obj/structure/extinguisher_cabinet{ + dir = 1; + icon_state = "extinguisher_closed"; + pixel_y = 32 + }, +/turf/simulated/floor/tiled, +/area/rnd/outpost) +"kT" = ( +/obj/effect/floor_decal/borderfloor{ + dir = 1; + icon_state = "borderfloor"; + pixel_y = 0 + }, +/obj/effect/floor_decal/corner/purple/border{ + dir = 1 + }, +/obj/machinery/door/firedoor/glass/hidden/steel{ + dir = 1 + }, +/turf/simulated/floor/tiled, +/area/rnd/outpost) +"kU" = ( +/obj/machinery/atmospherics/unary/vent_pump{ + dir = 4; + use_power = 0 + }, +/turf/simulated/floor/tiled, +/area/rnd/outpost/anomaly_lab/testing) +"kV" = ( +/obj/machinery/atmospherics/pipe/manifold/visible/yellow{ + dir = 1 + }, +/turf/simulated/floor/tiled, +/area/rnd/outpost/anomaly_lab/testing) +"kW" = ( +/obj/structure/cable/green{ + icon_state = "0-2" + }, +/obj/machinery/atmospherics/unary/vent_scrubber{ + dir = 8 + }, +/obj/machinery/power/apc{ + dir = 4; + name = "east bump"; + pixel_x = 28 + }, +/turf/simulated/floor/tiled, +/area/rnd/outpost/anomaly_lab/testing) +"kX" = ( +/obj/effect/floor_decal/borderfloor/corner{ + dir = 1 + }, +/obj/effect/floor_decal/corner/purple/bordercorner{ + dir = 1 + }, +/obj/machinery/door/firedoor/glass/hidden/steel, +/turf/simulated/floor/tiled, +/area/rnd/outpost) +"kY" = ( +/obj/machinery/atmospherics/unary/vent_pump/on, +/turf/simulated/floor/tiled, +/area/rnd/outpost/anomaly_lab) +"kZ" = ( +/turf/simulated/floor/tiled, +/area/rnd/outpost/anomaly_lab) +"la" = ( +/obj/machinery/door/airlock/maintenance/rnd{ + name = "Anomaly Storage" + }, +/obj/machinery/door/firedoor/border_only, +/turf/simulated/floor, +/area/rnd/outpost/anomaly_lab/storage) +"lb" = ( +/turf/simulated/floor, +/area/rnd/outpost/anomaly_lab/storage) +"lc" = ( +/obj/structure/cable/green{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/obj/machinery/atmospherics/pipe/manifold/hidden/supply{ + dir = 4 + }, +/turf/simulated/floor/tiled, +/area/rnd/outpost) +"ld" = ( +/obj/effect/floor_decal/industrial/warning{ + dir = 8 + }, +/turf/simulated/floor, +/area/rnd/outpost/anomaly_lab/storage) +"le" = ( +/obj/machinery/firealarm{ + dir = 4; + pixel_x = 24 + }, +/turf/simulated/floor, +/area/rnd/outpost/anomaly_lab/storage) +"lf" = ( +/obj/structure/closet/firecloset, +/turf/simulated/floor/tiled, +/area/rnd/outpost/anomaly_lab) +"lg" = ( +/obj/effect/floor_decal/borderfloor{ + dir = 1; + icon_state = "borderfloor"; + pixel_y = 0 + }, +/obj/effect/floor_decal/corner/purple/border{ + dir = 1 + }, +/obj/machinery/atmospherics/unary/vent_scrubber/on, +/turf/simulated/floor/tiled, +/area/rnd/outpost) +"lh" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/obj/structure/cable/green{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/turf/simulated/floor/tiled, +/area/rnd/outpost/anomaly_lab) +"li" = ( +/obj/structure/table/rack, +/obj/structure/window/reinforced{ + dir = 8 + }, +/obj/item/clothing/suit/bio_suit/anomaly, +/obj/item/clothing/head/bio_hood/anomaly, +/obj/item/clothing/mask/breath, +/obj/item/clothing/gloves/sterile/latex, +/obj/item/clothing/glasses/science, +/obj/effect/floor_decal/industrial/hatch/yellow, +/turf/simulated/floor/tiled, +/area/rnd/outpost/anomaly_lab) +"lj" = ( +/obj/structure/table/rack, +/obj/item/clothing/suit/bio_suit/anomaly, +/obj/item/clothing/head/bio_hood/anomaly, +/obj/item/clothing/mask/breath, +/obj/item/clothing/gloves/sterile/latex, +/obj/item/clothing/glasses/science, +/obj/effect/floor_decal/industrial/hatch/yellow, +/obj/machinery/light{ + dir = 1 + }, +/turf/simulated/floor/tiled, +/area/rnd/outpost/anomaly_lab) +"lk" = ( +/obj/structure/table/rack, +/obj/item/clothing/suit/bio_suit/anomaly, +/obj/item/clothing/head/bio_hood/anomaly, +/obj/item/clothing/mask/breath, +/obj/item/clothing/gloves/sterile/latex, +/obj/item/clothing/glasses/science, +/obj/effect/floor_decal/industrial/hatch/yellow, +/turf/simulated/floor/tiled, +/area/rnd/outpost/anomaly_lab) +"ll" = ( +/obj/machinery/suspension_gen, +/turf/simulated/floor/tiled, +/area/rnd/outpost/xenoarch_storage) +"lm" = ( +/turf/simulated/floor/tiled, +/area/rnd/outpost/xenoarch_storage) +"ln" = ( +/obj/structure/cable/green{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 5 + }, +/turf/simulated/floor/tiled, +/area/rnd/outpost/xenoarch_storage) +"lo" = ( +/obj/structure/closet/excavation, +/obj/machinery/atmospherics/unary/vent_pump/on{ + dir = 8 + }, +/turf/simulated/floor/tiled, +/area/rnd/outpost/xenoarch_storage) +"lp" = ( +/obj/structure/grille, +/obj/machinery/door/firedoor/glass, +/obj/structure/window/reinforced/full, +/turf/simulated/floor, +/area/rnd/outpost/anomaly_lab/testing) +"lq" = ( +/obj/effect/floor_decal/borderfloor{ + dir = 1; + icon_state = "borderfloor"; + pixel_y = 0 + }, +/obj/effect/floor_decal/corner/purple/border{ + dir = 1 + }, +/obj/machinery/atmospherics/unary/vent_pump/on, +/turf/simulated/floor/tiled, +/area/rnd/outpost) +"lr" = ( +/obj/structure/cable/green{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, +/turf/simulated/floor/tiled, +/area/rnd/outpost) +"ls" = ( +/obj/effect/floor_decal/borderfloor/corner, +/obj/effect/floor_decal/corner/purple/bordercorner, +/obj/structure/cable/green{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, +/turf/simulated/floor/tiled, +/area/rnd/outpost) +"lt" = ( +/obj/effect/floor_decal/borderfloor, +/obj/effect/floor_decal/corner/purple/border, +/obj/structure/cable/green{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, +/obj/machinery/door/firedoor/glass/hidden/steel, +/turf/simulated/floor/tiled, +/area/rnd/outpost) +"lu" = ( +/obj/effect/floor_decal/borderfloor, +/obj/effect/floor_decal/corner/purple/border, +/obj/structure/cable/green{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, +/turf/simulated/floor/tiled, +/area/rnd/outpost) +"lv" = ( +/obj/effect/floor_decal/borderfloor, +/obj/effect/floor_decal/corner/purple/border, +/obj/effect/floor_decal/borderfloor/corner2{ + dir = 9 + }, +/obj/effect/floor_decal/corner/purple/bordercorner2{ + dir = 9 + }, +/obj/structure/cable/green{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, +/obj/machinery/light, +/turf/simulated/floor/tiled, +/area/rnd/outpost) +"lw" = ( +/obj/structure/cable/green{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/obj/structure/cable/green{ + d1 = 1; + d2 = 8; + icon_state = "1-8" + }, +/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{ + icon_state = "map-scrubbers"; + dir = 4 + }, +/obj/machinery/atmospherics/pipe/manifold/hidden/supply{ + dir = 4 + }, +/turf/simulated/floor/tiled, +/area/rnd/outpost) +"lx" = ( +/obj/effect/floor_decal/borderfloor{ + dir = 6 + }, +/obj/effect/floor_decal/corner/purple/border{ + dir = 6 + }, +/obj/effect/floor_decal/borderfloor/corner2, +/obj/effect/floor_decal/borderfloor/corner2{ + dir = 6 + }, +/obj/effect/floor_decal/corner/purple/bordercorner2, +/obj/effect/floor_decal/corner/purple/bordercorner2{ + dir = 6 + }, +/turf/simulated/floor/tiled, +/area/rnd/outpost) +"ly" = ( +/obj/structure/grille, +/obj/machinery/door/firedoor/glass, +/obj/structure/window/reinforced/full, +/obj/machinery/atmospherics/pipe/simple/visible/yellow, +/turf/simulated/floor, +/area/rnd/outpost/anomaly_lab/testing) +"lz" = ( +/obj/machinery/door/airlock/glass_external{ + icon_state = "door_locked"; + id_tag = "anomalytesting"; + locked = 1; + name = "Anomaly Testing"; + req_access = list(65); + req_one_access = list(47) + }, +/obj/machinery/door/firedoor/glass, +/obj/structure/cable/green{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/turf/simulated/floor/tiled, +/area/rnd/outpost/anomaly_lab/testing) +"lA" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/machinery/camera/network/research_outpost{ + dir = 4 + }, +/turf/simulated/floor/tiled, +/area/rnd/outpost/anomaly_lab) +"lB" = ( +/obj/machinery/atmospherics/unary/vent_scrubber/on, +/turf/simulated/floor/tiled, +/area/rnd/outpost/anomaly_lab) +"lC" = ( +/obj/structure/closet/crate, +/turf/simulated/floor, +/area/rnd/outpost/anomaly_lab/storage) +"lD" = ( +/obj/effect/floor_decal/borderfloor{ + dir = 10 + }, +/obj/effect/floor_decal/corner/purple/border{ + dir = 10 + }, +/obj/structure/cable/green{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, +/turf/simulated/floor/tiled, +/area/rnd/outpost) +"lE" = ( +/obj/effect/floor_decal/borderfloor, +/obj/effect/floor_decal/corner/purple/border, +/obj/effect/floor_decal/borderfloor/corner2, +/obj/effect/floor_decal/corner/purple/bordercorner2, +/turf/simulated/floor/tiled, +/area/rnd/outpost) +"lF" = ( +/obj/machinery/atmospherics/unary/vent_scrubber/on{ + dir = 4 + }, +/turf/simulated/floor/tiled, +/area/rnd/outpost) +"lG" = ( +/obj/structure/cable/green{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/obj/structure/cable/green{ + d1 = 1; + d2 = 4; + icon_state = "1-4" + }, +/obj/machinery/atmospherics/pipe/manifold/hidden/supply{ + dir = 8 + }, +/obj/machinery/atmospherics/pipe/manifold4w/hidden/scrubbers, +/turf/simulated/floor/tiled, +/area/rnd/outpost) +"lH" = ( +/obj/effect/floor_decal/industrial/warning/corner{ + dir = 4 + }, +/turf/simulated/floor, +/area/rnd/outpost/anomaly_lab/storage) +"lI" = ( +/obj/effect/floor_decal/industrial/warning{ + dir = 1 + }, +/turf/simulated/floor, +/area/rnd/outpost/anomaly_lab/storage) +"lJ" = ( +/obj/effect/floor_decal/industrial/warning/corner{ + dir = 1 + }, +/obj/effect/floor_decal/industrial/warning/corner{ + dir = 4 + }, +/turf/simulated/floor, +/area/rnd/outpost/anomaly_lab/storage) +"lK" = ( +/obj/effect/floor_decal/industrial/warning/corner{ + dir = 1 + }, +/obj/structure/anomaly_container, +/turf/simulated/floor, +/area/rnd/outpost/anomaly_lab/storage) +"lL" = ( +/obj/machinery/alarm{ + dir = 8; + pixel_x = 22; + pixel_y = 0 + }, +/turf/simulated/floor, +/area/rnd/outpost/anomaly_lab/storage) +"lM" = ( +/obj/machinery/atmospherics/unary/vent_scrubber/on{ + dir = 4 + }, +/obj/machinery/light{ + dir = 8; + icon_state = "tube1" + }, +/turf/simulated/floor/tiled, +/area/rnd/outpost/anomaly_lab) +"lN" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 5 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, +/turf/simulated/floor/tiled, +/area/rnd/outpost/anomaly_lab) +"lO" = ( +/obj/machinery/atmospherics/pipe/manifold/hidden/supply{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{ + icon_state = "map-scrubbers"; + dir = 4 + }, +/obj/structure/cable/green{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/turf/simulated/floor/tiled, +/area/rnd/outpost/anomaly_lab) +"lP" = ( +/obj/machinery/camera/network/research_outpost{ + dir = 8 + }, +/turf/simulated/floor/tiled, +/area/rnd/outpost/anomaly_lab) +"lQ" = ( +/obj/machinery/portable_atmospherics/canister/oxygen, +/obj/machinery/light{ + dir = 8; + icon_state = "tube1" + }, +/turf/simulated/floor/tiled, +/area/rnd/outpost/xenoarch_storage) +"lR" = ( +/obj/structure/cable/green{ + d1 = 1; + d2 = 4; + icon_state = "1-4" + }, +/turf/simulated/floor/tiled, +/area/rnd/outpost/xenoarch_storage) +"lS" = ( +/obj/structure/table/steel, +/obj/item/device/measuring_tape, +/obj/item/weapon/tool/wrench, +/obj/item/weapon/storage/excavation, +/obj/item/stack/flag/yellow, +/obj/item/weapon/pickaxe, +/obj/structure/cable/green{ + d2 = 8; + icon_state = "0-8" + }, +/obj/machinery/power/apc{ + dir = 4; + name = "east bump"; + pixel_x = 28 + }, +/turf/simulated/floor/tiled, +/area/rnd/outpost/xenoarch_storage) +"lT" = ( +/obj/effect/floor_decal/industrial/danger{ + dir = 4 + }, +/turf/simulated/floor/tiled, +/area/rnd/outpost/anomaly_lab) +"lU" = ( +/obj/machinery/atmospherics/valve, +/turf/simulated/floor/tiled, +/area/rnd/outpost/anomaly_lab) +"lV" = ( +/obj/structure/cable/green{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/obj/effect/floor_decal/industrial/danger{ + dir = 8 + }, +/turf/simulated/floor/tiled, +/area/rnd/outpost/anomaly_lab) +"lW" = ( +/obj/effect/floor_decal/industrial/warning/corner{ + dir = 1 + }, +/obj/effect/floor_decal/industrial/warning, +/obj/machinery/alarm{ + alarm_id = "anomaly_testing"; + dir = 8; + frequency = 1439; + pixel_x = 22; + pixel_y = 0 + }, +/turf/simulated/floor/tiled/dark, +/area/rnd/outpost/anomaly_lab/testing) +"lX" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/turf/simulated/floor/tiled, +/area/rnd/outpost/anomaly_lab) +"lY" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/obj/effect/floor_decal/industrial/warning/corner, +/obj/machinery/light{ + dir = 4; + icon_state = "tube1"; + pixel_x = 0 + }, +/turf/simulated/floor/tiled, +/area/rnd/outpost/anomaly_lab) +"lZ" = ( +/obj/machinery/power/apc{ + cell_type = /obj/item/weapon/cell/apc; + dir = 8; + name = "west bump"; + pixel_x = -28 + }, +/obj/structure/cable/green{ + icon_state = "0-4" + }, +/turf/simulated/floor/tiled, +/area/rnd/outpost/anomaly_lab) +"ma" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 6 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 6 + }, +/obj/structure/cable/green{ + d1 = 2; + d2 = 4; + icon_state = "2-4" + }, +/obj/structure/cable/green{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/turf/simulated/floor/tiled, +/area/rnd/outpost/anomaly_lab) +"mb" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 9 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 9 + }, +/obj/structure/cable/green{ + d1 = 1; + d2 = 8; + icon_state = "1-8" + }, +/obj/structure/anomaly_container, +/turf/simulated/floor/tiled, +/area/rnd/outpost/anomaly_lab) +"mc" = ( +/obj/structure/closet/secure_closet/xenoarchaeologist, +/obj/structure/window/reinforced{ + dir = 8 + }, +/turf/simulated/floor/tiled, +/area/rnd/outpost/anomaly_lab) +"md" = ( +/obj/structure/closet/secure_closet/xenoarchaeologist, +/turf/simulated/floor/tiled, +/area/rnd/outpost/anomaly_lab) +"me" = ( +/obj/structure/anomaly_container, +/turf/simulated/floor/tiled, +/area/rnd/outpost/xenoarch_storage) +"mf" = ( +/obj/structure/table/steel, +/obj/item/device/measuring_tape, +/obj/item/weapon/tool/wrench, +/obj/item/weapon/storage/excavation, +/obj/item/stack/flag/yellow, +/obj/item/weapon/pickaxe, +/obj/machinery/alarm{ + dir = 8; + pixel_x = 22; + pixel_y = 0 + }, +/turf/simulated/floor/tiled, +/area/rnd/outpost/xenoarch_storage) +"mg" = ( +/obj/effect/floor_decal/industrial/danger{ + dir = 4 + }, +/obj/effect/floor_decal/industrial/warning/corner{ + icon_state = "warningcorner"; + dir = 8 + }, +/obj/machinery/atmospherics/pipe/simple/visible/yellow{ + dir = 6 + }, +/turf/simulated/floor/tiled, +/area/rnd/outpost/anomaly_lab) +"mh" = ( +/obj/machinery/atmospherics/pipe/manifold/visible/yellow, +/turf/simulated/floor/tiled, +/area/rnd/outpost/anomaly_lab) +"mi" = ( +/obj/structure/cable/green{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/obj/effect/floor_decal/industrial/danger{ + dir = 8 + }, +/obj/machinery/atmospherics/pipe/simple/visible/yellow{ + dir = 10 + }, +/turf/simulated/floor/tiled, +/area/rnd/outpost/anomaly_lab) +"mj" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/obj/effect/floor_decal/industrial/warning{ + dir = 4 + }, +/turf/simulated/floor/tiled, +/area/rnd/outpost/anomaly_lab) +"mk" = ( +/obj/structure/table/standard, +/obj/machinery/computer/atmoscontrol/laptop{ + monitored_alarm_ids = list("anomaly_testing"); + req_one_access = list(47,24,11) + }, +/obj/structure/window/reinforced{ + dir = 8 + }, +/turf/simulated/floor/tiled, +/area/rnd/outpost/anomaly_lab) +"ml" = ( +/obj/structure/table/standard, +/obj/machinery/camera/network/research_outpost, +/turf/simulated/floor/tiled, +/area/rnd/outpost/anomaly_lab) +"mm" = ( +/obj/structure/table/standard, +/turf/simulated/floor/tiled, +/area/rnd/outpost/anomaly_lab) +"mn" = ( +/obj/machinery/washing_machine, +/obj/structure/window/reinforced{ + dir = 4 + }, +/turf/simulated/floor/tiled, +/area/rnd/outpost/anomaly_lab) +"mo" = ( +/obj/machinery/radiocarbon_spectrometer, +/obj/structure/window/reinforced{ + dir = 8 + }, +/obj/effect/floor_decal/steeldecal/steel_decals9, +/obj/effect/floor_decal/steeldecal/steel_decals9{ + dir = 4 + }, +/obj/effect/floor_decal/steeldecal/steel_decals9{ + dir = 8 + }, +/obj/effect/floor_decal/steeldecal/steel_decals9{ + dir = 1 + }, +/turf/simulated/floor/tiled/monotile, +/area/rnd/outpost/anomaly_lab) +"mp" = ( +/obj/structure/reagent_dispensers/coolanttank, +/obj/effect/floor_decal/steeldecal/steel_decals9, +/obj/effect/floor_decal/steeldecal/steel_decals9{ + dir = 4 + }, +/obj/effect/floor_decal/steeldecal/steel_decals9{ + dir = 8 + }, +/obj/effect/floor_decal/steeldecal/steel_decals9{ + dir = 1 + }, +/turf/simulated/floor/tiled/monotile, +/area/rnd/outpost/anomaly_lab) +"mq" = ( +/obj/machinery/radiocarbon_spectrometer, +/obj/effect/floor_decal/steeldecal/steel_decals9, +/obj/effect/floor_decal/steeldecal/steel_decals9{ + dir = 4 + }, +/obj/effect/floor_decal/steeldecal/steel_decals9{ + dir = 8 + }, +/obj/effect/floor_decal/steeldecal/steel_decals9{ + dir = 1 + }, +/turf/simulated/floor/tiled/monotile, +/area/rnd/outpost/anomaly_lab) +"mr" = ( +/obj/structure/table/standard, +/obj/item/stack/nanopaste, +/obj/item/weapon/reagent_containers/glass/bucket, +/obj/structure/window/reinforced{ + dir = 4 + }, +/obj/effect/floor_decal/steeldecal/steel_decals9, +/obj/effect/floor_decal/steeldecal/steel_decals9{ + dir = 4 + }, +/obj/effect/floor_decal/steeldecal/steel_decals9{ + dir = 8 + }, +/obj/effect/floor_decal/steeldecal/steel_decals9{ + dir = 1 + }, +/obj/machinery/camera/network/research_outpost, +/turf/simulated/floor/tiled/monotile, +/area/rnd/outpost/anomaly_lab) +"ms" = ( +/obj/effect/floor_decal/industrial/warning/corner, +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/obj/structure/cable/green{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/turf/simulated/floor/tiled, +/area/rnd/outpost/anomaly_lab) +"mt" = ( +/turf/simulated/wall/r_wall, +/area/rnd/outpost/anomaly_lab/analysis) +"mu" = ( +/obj/structure/table/rack, +/obj/item/clothing/suit/space/anomaly, +/obj/item/clothing/head/helmet/space/anomaly, +/obj/item/clothing/mask/breath, +/obj/item/weapon/storage/belt/archaeology, +/obj/machinery/light_switch{ + dir = 1; + pixel_x = 4; + pixel_y = -24 + }, +/turf/simulated/floor/tiled, +/area/rnd/outpost/xenoarch_storage) +"mv" = ( +/obj/structure/table/rack, +/obj/item/clothing/suit/space/anomaly, +/obj/item/clothing/head/helmet/space/anomaly, +/obj/item/clothing/mask/breath, +/obj/item/weapon/storage/belt/archaeology, +/obj/machinery/firealarm{ + dir = 1; + pixel_x = 0; + pixel_y = -26 + }, +/turf/simulated/floor/tiled, +/area/rnd/outpost/xenoarch_storage) +"mw" = ( +/obj/structure/dispenser/oxygen, +/turf/simulated/floor/tiled, +/area/rnd/outpost/xenoarch_storage) +"mx" = ( +/obj/machinery/artifact_harvester, +/turf/simulated/floor/tiled/techfloor/grid, +/area/rnd/outpost/anomaly_lab) +"my" = ( +/obj/machinery/artifact_scanpad, +/turf/simulated/floor/tiled/techfloor/grid, +/area/rnd/outpost/anomaly_lab) +"mz" = ( +/obj/machinery/camera/network/research_outpost, +/turf/simulated/floor/tiled/techfloor/grid, +/area/rnd/outpost/anomaly_lab) +"mA" = ( +/obj/machinery/atmospherics/binary/pump, +/obj/effect/floor_decal/industrial/danger{ + dir = 4 + }, +/obj/effect/floor_decal/industrial/warning{ + dir = 8 + }, +/turf/simulated/floor/tiled, +/area/rnd/outpost/anomaly_lab) +"mB" = ( +/obj/structure/cable/green{ + icon_state = "0-4" + }, +/obj/machinery/power/emitter{ + anchored = 1; + dir = 1; + state = 2 + }, +/turf/simulated/floor/tiled, +/area/rnd/outpost/anomaly_lab) +"mC" = ( +/obj/machinery/atmospherics/binary/pump{ + dir = 1 + }, +/obj/structure/cable/green{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/obj/structure/cable/green{ + d1 = 1; + d2 = 4; + icon_state = "1-4" + }, +/obj/effect/floor_decal/industrial/danger{ + dir = 8 + }, +/turf/simulated/floor/tiled, +/area/rnd/outpost/anomaly_lab) +"mD" = ( +/obj/structure/cable/green{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/obj/machinery/atmospherics/unary/vent_pump/on{ + dir = 4 + }, +/turf/simulated/floor/tiled, +/area/rnd/outpost/anomaly_lab) +"mE" = ( +/obj/structure/cable/green{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/obj/machinery/atmospherics/pipe/manifold/hidden/supply, +/turf/simulated/floor/tiled, +/area/rnd/outpost/anomaly_lab) +"mF" = ( +/obj/structure/cable/green{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{ + dir = 8 + }, +/obj/effect/floor_decal/industrial/warning{ + dir = 4 + }, +/turf/simulated/floor/tiled, +/area/rnd/outpost/anomaly_lab) +"mG" = ( +/obj/structure/cable/green{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, +/turf/simulated/floor/tiled, +/area/rnd/outpost/anomaly_lab) +"mH" = ( +/obj/structure/cable/green{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, +/obj/effect/floor_decal/industrial/warning{ + dir = 1 + }, +/turf/simulated/floor/tiled, +/area/rnd/outpost/anomaly_lab) +"mI" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, +/obj/structure/cable/green{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/turf/simulated/floor/tiled, +/area/rnd/outpost/anomaly_lab) +"mJ" = ( +/obj/effect/floor_decal/industrial/warning{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/manifold/hidden/supply, +/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers, +/obj/structure/cable/green{ + d1 = 1; + d2 = 4; + icon_state = "1-4" + }, +/obj/structure/cable/green{ + d1 = 1; + d2 = 8; + icon_state = "1-8" + }, +/turf/simulated/floor/tiled, +/area/rnd/outpost/anomaly_lab) +"mK" = ( +/obj/machinery/door/airlock/glass_external{ + name = "Anomaly Analysis"; + req_access = list(65); + req_one_access = list(47) + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, +/obj/structure/cable/green{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/obj/machinery/door/firedoor/glass, +/turf/simulated/floor/tiled/dark, +/area/rnd/outpost/anomaly_lab/analysis) +"mL" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, +/obj/structure/cable/green{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/turf/simulated/floor/tiled/dark, +/area/rnd/outpost/anomaly_lab/analysis) +"mM" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 10 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 10 + }, +/obj/machinery/power/apc{ + dir = 1; + name = "north bump"; + pixel_x = 0; + pixel_y = 28 + }, +/obj/structure/cable/green{ + d2 = 8; + icon_state = "0-8" + }, +/turf/simulated/floor/tiled/dark, +/area/rnd/outpost/anomaly_lab/analysis) +"mN" = ( +/obj/structure/table/standard, +/obj/item/device/flashlight/lamp, +/turf/simulated/floor/tiled/dark, +/area/rnd/outpost/anomaly_lab/analysis) +"mO" = ( +/obj/machinery/light{ + dir = 8; + icon_state = "tube1" + }, +/turf/simulated/floor/tiled, +/area/rnd/outpost/anomaly_lab) +"mP" = ( +/obj/machinery/atmospherics/portables_connector{ + dir = 1 + }, +/obj/effect/floor_decal/industrial/danger/corner{ + dir = 4 + }, +/obj/effect/floor_decal/industrial/warning{ + dir = 8 + }, +/turf/simulated/floor/tiled, +/area/rnd/outpost/anomaly_lab) +"mQ" = ( +/obj/effect/floor_decal/industrial/danger{ + dir = 1 + }, +/turf/simulated/floor/tiled, +/area/rnd/outpost/anomaly_lab) +"mR" = ( +/obj/machinery/atmospherics/portables_connector{ + dir = 1 + }, +/obj/effect/floor_decal/industrial/danger/corner{ + dir = 8 + }, +/turf/simulated/floor/tiled, +/area/rnd/outpost/anomaly_lab) +"mS" = ( +/obj/machinery/atmospherics/unary/vent_scrubber/on{ + dir = 4 + }, +/turf/simulated/floor/tiled, +/area/rnd/outpost/anomaly_lab) +"mT" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 9 + }, +/obj/effect/floor_decal/industrial/warning{ + dir = 4 + }, +/turf/simulated/floor/tiled, +/area/rnd/outpost/anomaly_lab) +"mU" = ( +/obj/structure/bed/chair/office/light, +/turf/simulated/floor/tiled, +/area/rnd/outpost/anomaly_lab) +"mV" = ( +/obj/structure/table/standard, +/obj/item/weapon/reagent_containers/glass/beaker/large, +/obj/item/weapon/reagent_containers/dropper, +/turf/simulated/floor/tiled, +/area/rnd/outpost/anomaly_lab) +"mW" = ( +/obj/effect/floor_decal/industrial/warning/corner{ + dir = 4 + }, +/turf/simulated/floor/tiled, +/area/rnd/outpost/anomaly_lab) +"mX" = ( +/obj/structure/grille, +/obj/structure/window/reinforced/full, +/obj/machinery/door/firedoor/glass, +/turf/simulated/floor, +/area/rnd/outpost/anomaly_lab/analysis) +"mY" = ( +/obj/machinery/atmospherics/unary/vent_scrubber/on{ + dir = 4 + }, +/turf/simulated/floor/tiled/dark, +/area/rnd/outpost/anomaly_lab/analysis) +"mZ" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 9 + }, +/turf/simulated/floor/tiled/dark, +/area/rnd/outpost/anomaly_lab/analysis) +"na" = ( +/obj/machinery/artifact_scanpad, +/turf/simulated/floor/tiled/dark, +/area/rnd/outpost/anomaly_lab/analysis) +"nb" = ( +/obj/structure/table/standard, +/obj/item/device/multitool, +/turf/simulated/floor/tiled, +/area/rnd/outpost/anomaly_lab) +"nc" = ( +/obj/structure/table/standard, +/obj/item/weapon/tool/crowbar, +/obj/item/weapon/anodevice{ + pixel_x = -2 + }, +/obj/item/weapon/anodevice{ + pixel_x = 1 + }, +/turf/simulated/floor/tiled, +/area/rnd/outpost/anomaly_lab) +"nd" = ( +/obj/structure/table/standard, +/obj/item/weapon/tool/screwdriver, +/obj/item/weapon/anobattery{ + pixel_x = 5; + pixel_y = 2 + }, +/obj/item/weapon/anobattery, +/obj/item/weapon/anobattery{ + pixel_x = -4; + pixel_y = 3 + }, +/obj/item/weapon/anobattery{ + pixel_x = -5; + pixel_y = -3 + }, +/turf/simulated/floor/tiled, +/area/rnd/outpost/anomaly_lab) +"ne" = ( +/obj/effect/floor_decal/industrial/warning{ + dir = 8 + }, +/turf/simulated/floor/tiled, +/area/rnd/outpost/anomaly_lab) +"nf" = ( +/obj/machinery/light, +/turf/simulated/floor/tiled, +/area/rnd/outpost/anomaly_lab) +"ng" = ( +/obj/structure/cable/green{ + d1 = 2; + d2 = 4; + icon_state = "2-4" + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 6 + }, +/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{ + dir = 8 + }, +/turf/simulated/floor/tiled, +/area/rnd/outpost) +"nh" = ( +/obj/machinery/chem_master, +/turf/simulated/floor/tiled, +/area/rnd/outpost/anomaly_lab) +"ni" = ( +/obj/structure/table/standard, +/obj/machinery/chemical_dispenser/full, +/obj/machinery/light, +/turf/simulated/floor/tiled, +/area/rnd/outpost/anomaly_lab) +"nj" = ( +/obj/structure/table/standard, +/obj/item/weapon/storage/box/beakers, +/turf/simulated/floor/tiled, +/area/rnd/outpost/anomaly_lab) +"nk" = ( +/obj/machinery/firealarm{ + dir = 1; + pixel_x = 0; + pixel_y = -26 + }, +/turf/simulated/floor/tiled, +/area/rnd/outpost/anomaly_lab) +"nl" = ( +/obj/machinery/alarm{ + dir = 1; + pixel_y = -25 + }, +/turf/simulated/floor/tiled, +/area/rnd/outpost/anomaly_lab) +"nm" = ( +/obj/structure/filingcabinet/chestdrawer, +/turf/simulated/floor/tiled, +/area/rnd/outpost/anomaly_lab) +"nn" = ( +/obj/structure/table/standard, +/obj/item/weapon/folder/white, +/obj/item/weapon/pen, +/obj/machinery/light, +/turf/simulated/floor/tiled, +/area/rnd/outpost/anomaly_lab) +"no" = ( +/obj/structure/table/standard, +/obj/item/weapon/paper_bin, +/turf/simulated/floor/tiled, +/area/rnd/outpost/anomaly_lab) +"np" = ( +/obj/machinery/atmospherics/unary/vent_pump/on{ + dir = 4 + }, +/obj/machinery/camera/network/research_outpost{ + dir = 1 + }, +/turf/simulated/floor/tiled/dark, +/area/rnd/outpost/anomaly_lab/analysis) +"nq" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 9 + }, +/obj/machinery/alarm{ + dir = 1; + pixel_y = -25 + }, +/turf/simulated/floor/tiled/dark, +/area/rnd/outpost/anomaly_lab/analysis) +"nr" = ( +/obj/machinery/artifact_analyser, +/turf/simulated/floor/tiled/dark, +/area/rnd/outpost/anomaly_lab/analysis) +"ns" = ( +/obj/structure/cable/green{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/manifold/hidden/supply, +/turf/simulated/floor/tiled, +/area/rnd/outpost) +"nt" = ( +/obj/effect/floor_decal/borderfloor, +/obj/effect/floor_decal/corner/purple/border, +/obj/machinery/alarm{ + dir = 1; + pixel_y = -25 + }, +/obj/structure/closet/firecloset, +/turf/simulated/floor/tiled, +/area/rnd/outpost) +"nu" = ( +/obj/machinery/camera/network/research_outpost{ + dir = 1 + }, +/obj/effect/floor_decal/borderfloor{ + dir = 6 + }, +/obj/effect/floor_decal/corner/purple/border{ + dir = 6 + }, +/obj/machinery/portable_atmospherics/powered/scrubber/huge/stationary{ + scrub_id = "science_outpost" + }, +/turf/simulated/floor/tiled, +/area/rnd/outpost) +"nv" = ( +/obj/effect/floor_decal/industrial/warning{ + dir = 4 + }, +/obj/structure/closet/firecloset, +/turf/simulated/floor/tiled, +/area/rnd/outpost/anomaly_lab) +"nw" = ( +/obj/structure/cable/green{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, +/obj/item/weapon/stool, +/turf/simulated/floor/tiled, +/area/rnd/outpost/anomaly_lab) +"nx" = ( +/obj/machinery/button/remote/airlock{ + id = "anomalytesting"; + name = "Direct Access Bolt Control"; + pixel_x = -6; + pixel_y = 26; + specialfunctions = 4 + }, +/obj/machinery/button/remote/blast_door{ + id = "anomaly_testing_v"; + name = "Panic Chamber Vent"; + pixel_x = 6; + pixel_y = 26 + }, +/turf/simulated/floor/tiled, +/area/rnd/outpost/anomaly_lab) (1,1,1) = {" aa @@ -16207,7 +18262,7 @@ ab ab ab ab -ab +aw ab ab ab @@ -17769,11 +19824,11 @@ ab ab ab ab -ab -ab -ab -ab -ab +jx +jx +jx +jx +jx ab ab ab @@ -17911,11 +19966,11 @@ ab ab ab ab -ab -ab -ab -ab -ab +jx +mx +mO +nb +jx ab ab ab @@ -18053,11 +20108,11 @@ ab ab ab ab -ab -ab -ab -ab -ab +jx +my +kZ +nc +jx ab ab ab @@ -18188,18 +20243,18 @@ ab ab ab ab -aw -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab +jw +jw +jw +jw +jw +jw +jx +jx +mz +kZ +nd +jx ab ab ab @@ -18330,18 +20385,18 @@ ab ab ab ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab +jN +jM +kd +kt +kU +lp +lT +mg +mA +mP +ne +jx ab ab ab @@ -18472,18 +20527,18 @@ ab ab ab ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab +jN +jO +kf +kv +kV +ly +lU +mh +mB +mQ +kZ +jx ab ab ab @@ -18614,18 +20669,18 @@ ab ab ab ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab +jN +kg +kx +lW +kW +lz +lV +mi +mC +mR +nf +jx ab ab ab @@ -18756,18 +20811,18 @@ ab ab ab ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab +jw +jP +jw +jw +jw +jw +nx +kZ +mD +kZ +kZ +jx ab ab ab @@ -18898,18 +20953,18 @@ ab ab ab ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab +jx +jQ +kh +ky +kY +lA +lX +lX +mE +mS +kZ +jx ab ab ab @@ -19009,7 +21064,7 @@ bF bF bF bF -bj +bG bF bF bF @@ -19040,18 +21095,18 @@ ab ab ab ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab +jx +jx +jx +kz +kZ +lB +lY +mj +mF +mT +nv +jx ab ab ab @@ -19182,18 +21237,18 @@ ab ab ab ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab +jE +jE +jE +jE +la +jE +jE +mk +nw +kZ +nh +jx ab ab ab @@ -19324,18 +21379,18 @@ gK gK ab ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab +jE +jR +ki +kC +lb +lC +jE +ml +mG +mU +ni +jx ab ab ab @@ -19466,18 +21521,18 @@ hh gK ab ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab +jE +jS +kj +kD +kj +lH +jE +mm +mG +mV +nj +jx ab ab ab @@ -19608,18 +21663,18 @@ hU gK gs ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab +jE +jT +kk +kE +kk +lI +jE +mn +mG +kZ +nk +jx ab ab ab @@ -19750,18 +21805,18 @@ hV ip iM ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab +jE +ka +kl +kF +kl +lJ +la +kZ +mG +kZ +nl +jx ab ab ab @@ -19892,18 +21947,18 @@ hV io iL iW -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab +jE +jT +km +kE +km +lI +jE +mo +mH +kZ +nm +jx ab ab ab @@ -20034,18 +22089,18 @@ hX ir gs iY -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab +jE +kb +ko +kG +ld +lK +jE +mp +mH +mU +nn +jx ab ab ab @@ -20176,18 +22231,18 @@ hW iq iN iX -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab +jE +kc +kp +kH +le +lL +jE +mq +mH +kZ +no +jx ab ab ab @@ -20298,7 +22353,7 @@ ad ad ad ad -ad +jU cg cg cg @@ -20318,18 +22373,18 @@ hZ it gw hr -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab +jE +jE +kq +jE +jE +jE +jE +mr +mH +kZ +kZ +jx ab ab ab @@ -20440,7 +22495,7 @@ ad ad ad ad -ad +jV cg cz cW @@ -20460,18 +22515,18 @@ hY is iO hr -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab +kN +ku +lD +jx +lf +lM +lZ +kZ +mI +kZ +kZ +jx ab ab ab @@ -20582,7 +22637,7 @@ ad ad ad ad -ad +bk cg cB cY @@ -20602,18 +22657,18 @@ ib iv iQ hr -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab +kQ +ft +lv +jx +kY +lN +ma +ms +mJ +mW +kZ +jx ab ab ab @@ -20724,7 +22779,7 @@ ad ad ad ad -ad +jW cg cA cX @@ -20744,18 +22799,18 @@ ia iu iP hr -hM -hM -hM -ab -ab -ab -ab -ab -ab -ab -ab -ab +lg +ng +lw +kI +lh +lO +mb +mt +mK +mX +mX +mt ab ab ab @@ -20883,21 +22938,21 @@ gU hq hL id -ix -iR +if +ih hr -je -jl -hM -ab -ab -ab -ab -ab -ab -ab -ab -ab +lq +ns +lE +kJ +li +kZ +mc +mt +mL +mY +np +mt ab ab ab @@ -21025,21 +23080,21 @@ gT hp hK ic -iw +ig +ii hr -hM -je -jl -hM -ab -ab -ab -ab -ab -ab -ab -ab -ab +kS +lr +nt +jx +lj +kZ +md +mt +mM +mZ +nq +mt ab ab ab @@ -21165,23 +23220,23 @@ eu eu gW hs -hM -hM -hM -hM -iZ -je -jl -hM -ab -ab -ab -ab -ab -ab -ab -ab -ab +hr +hr +hr +hr +hr +kT +ls +nu +jx +lk +lP +md +mt +mN +na +nr +mt ab ab ab @@ -21307,23 +23362,23 @@ gk eu gV hr -hM -ie -iy -iS -iZ -je -jm -hM -ab -ab -ab -ab -ab -ab -ab -ab -ab +hr +hO +ke +ku +kA +kX +lt +kr +kr +kr +kr +kr +mt +mt +mt +mt +mt ab ab ab @@ -21449,20 +23504,20 @@ gm gC gY hu -hM -ig -iA -iT -ja -jf -jo -hM -ab -ab -ab -ab -ab -ab +eu +ie +ft +ft +ft +ft +lu +kr +kK +ll +lQ +me +me +kr ab ab ab @@ -21591,20 +23646,20 @@ gl gB gX ht -hM -if -iz -iz -iz -iz +eu jn -hM -ab -ab -ab -ab -ab -ab +kR +jX +jY +lF +lv +kr +kL +lm +lm +lm +mu +kr ab ab ab @@ -21733,20 +23788,20 @@ dE gE ha hw -hO -ii -iC -iV -iV -jh -jp -hM -ab -ab -ab -ab -ab -ab +hN +jy +lc +jy +jy +lG +lw +ks +kO +ln +lR +lm +mv +kr ab ab ab @@ -21875,20 +23930,20 @@ dE gD gZ hv -hN -ih -iB -iU -jb -jg -iV -hM -ab -ab -ab -ab -ab -ab +eu +jz +kn +kw +kB +lr +lx +kr +kP +lo +lS +mf +mw +kr ab ab ab @@ -22021,16 +24076,16 @@ fC fC fC fC -jd -jj -jr +jZ +iT hM -ab -ab -ab -ab -ab -ab +hM +hM +hM +kr +kr +kr +kr ab ab ab @@ -22163,13 +24218,13 @@ hP ij iD fC -jc +iw +iU +jf +jo ji -jq hM -ab -ab -ab +hM ab ab ab @@ -22305,13 +24360,13 @@ hR il iF fC -jc -jk +iV +iU +iV +jo +ji +jF hM -ca -ab -ab -ab ab ab ab @@ -22447,13 +24502,13 @@ hQ ik iE fC +ix +iU +iV +jq +jA +jG hM -hM -ca -ab -ab -ab -ab ab ab ab @@ -22589,13 +24644,13 @@ hT in iH fC -ab -ab -ab -ab -ab -ab -ab +iy +iZ +iC +iV +jh +jH +hM ab ab ab @@ -22731,13 +24786,13 @@ hS im iG fC -ab -ab -ab -ab -ab -ab -ab +iz +ja +jj +jb +jg +jp +hM ab ab ab @@ -22873,13 +24928,13 @@ fC fC iJ fC -ab -ab -ab -ab -ab -ab -ab +kM +iA +iA +iA +iA +jI +hM ab ab ab @@ -23015,13 +25070,13 @@ ab fC iI fC -ab -ab -ab -ab -ab -ab -ab +iB +jc +jk +jr +jB +jJ +hM ab ab ab @@ -23156,14 +25211,14 @@ ab ab ab iK -ab -ab -ab -ab -ab -ab -ab -ab +hM +iR +jd +jl +jv +jC +jK +hM ab ab ab @@ -23298,14 +25353,14 @@ ab ab ab ab -ab -ab -ab -ab -ab -ab -ab -ab +hM +iR +jd +jl +jv +jD +jL +hM ab ab ab @@ -23440,14 +25495,14 @@ ab ab ab ab -ab -ab -ab -ab -ab -ab -ab -ab +hM +iR +jd +jl +jv +hM +hM +hM ab ab ab @@ -23582,12 +25637,12 @@ ab ab ab ab -ab -ab -ab -ab -ab -ab +hM +iR +jd +jl +hM +hM ab ab ab @@ -23724,11 +25779,11 @@ ab ab ab ab -ab -ab -ab -ab -ab +hM +iS +je +jm +hM ab ab ab @@ -23866,11 +25921,11 @@ ab ab ab ab -ab -ab -ab -ab -ab +hM +hM +hM +hM +hM ab ab ab diff --git a/maps/tether/tether-10-colony.dmm b/maps/tether/tether-10-colony.dmm index 52b0d9a393..312b865f7b 100644 --- a/maps/tether/tether-10-colony.dmm +++ b/maps/tether/tether-10-colony.dmm @@ -689,11 +689,11 @@ "bd" = ( /obj/structure/table/rack, /obj/structure/window/reinforced, -/obj/item/weapon/gun/projectile/automatic/saber, -/obj/item/ammo_magazine/m9mmR/saber, -/obj/item/ammo_magazine/m9mmR/saber, -/obj/item/ammo_magazine/m9mmR/saber, -/obj/item/ammo_magazine/m9mmR/saber, +/obj/item/weapon/gun/projectile/automatic/advanced_smg, +/obj/item/ammo_magazine/m9mmAdvanced, +/obj/item/ammo_magazine/m9mmAdvanced, +/obj/item/ammo_magazine/m9mmAdvanced, +/obj/item/ammo_magazine/m9mmAdvanced, /turf/unsimulated/floor{ icon_state = "dark" }, diff --git a/maps/tether/tether_areas.dm b/maps/tether/tether_areas.dm index 9684dc5c37..315ca7f40b 100644 --- a/maps/tether/tether_areas.dm +++ b/maps/tether/tether_areas.dm @@ -27,6 +27,8 @@ forced_ambience = list('sound/music/elevator.ogg') dynamic_lighting = FALSE //Temporary fix for elevator lighting + requires_power = FALSE + /area/turbolift/tether/transit name = "tether (midway)" lift_floor_label = "Tether Midpoint" @@ -74,10 +76,12 @@ /area/vacant/vacant_restaurant_upper name = "\improper Vacant Restaurant" icon_state = "vacant_site" + flags = null /area/vacant/vacant_restaurant_lower name = "\improper Vacant Restaurant" icon_state = "vacant_site" + flags = null /area/engineering/engineering_airlock name = "\improper Engineering Airlock" diff --git a/maps/tether/tether_areas2.dm b/maps/tether/tether_areas2.dm index f102bc216b..1b6280b743 100644 --- a/maps/tether/tether_areas2.dm +++ b/maps/tether/tether_areas2.dm @@ -81,6 +81,11 @@ icon_state = "dk_yellow" /area/vacant/vacant_site/east name = "\improper East Base Vacant Site" + flags = null +/area/vacant/vacant_library + name = "\improper Atrium Construction Site" +/area/vacant/vacant_bar + name = "\improper Vacant Bar" // /area/tether/surfacebase/east_stairs_three //This is just part of an upper hallway @@ -137,6 +142,12 @@ /area/tether/outpost/solars_shed name = "\improper Solar Farm Shed" +// Exploration area - Plains +/area/tether/outpost/exploration_plains + name = "\improper Plains Exploration Zone" + icon_state = "green" +/area/tether/outpost/exploration_shed + name = "\improper Plains Entrance Shed" /area/maintenance/substation/medsec name = "\improper MedSec Substation" @@ -196,6 +207,8 @@ name = "\improper Tether Lower Service Corridor" /area/engineering/lower/atmos_lockers name = "\improper Engineering Atmos Locker Room" +/area/engineering/lower/atmos_eva + name = "\improper Engineering Atmos EVA" /area/gateway/prep_room name = "\improper Gateway Prep Room" @@ -254,18 +267,29 @@ /area/rnd/hallway name = "\improper Research Lower Hallway" icon_state = "research" -/area/rnd/anomaly_lab - name = "\improper Anomaly Lab" - icon_state = "research" -/area/rnd/anomaly_lab/containment_one - name = "\improper Anomaly Lab - Containment One" - icon_state = "research" -/area/rnd/anomaly_lab/containment_two - name = "\improper Anomaly Lab - Containment Two" - icon_state = "research" /area/rnd/xenoarch_storage name = "\improper Xenoarch Storage" icon_state = "research" +/area/rnd/chemistry_lab + name = "\improper Research Chemistry Lab" + icon_state = "research" + +//Outpost areas +/area/rnd/outpost/anomaly_lab + name = "\improper Research Outpost Anomaly Lab" + icon_state = "research" +/area/rnd/outpost/anomaly_lab/analysis + name = "\improper Anomaly Lab Analysis Chamber" + icon_state = "research" +/area/rnd/outpost/anomaly_lab/testing + name = "\improper Anomaly Lab Testing Chamber" + icon_state = "research" +/area/rnd/outpost/anomaly_lab/storage + name = "\improper Anomaly Storage" + icon_state = "research" +/area/rnd/outpost/xenoarch_storage + name = "\improper Research Outpost Xenoarch Storage" + icon_state = "research" // Misc /area/hallway/lower/third_south name = "\improper Hallway Third Floor South" @@ -286,10 +310,12 @@ name = "\improper Reading Room" /area/tether/surfacebase/vacant_site name = "\improper Vacant Site" + flags = null /area/crew_quarters/freezer name = "\improper Kitchen Freezer" /area/crew_quarters/panic_shelter name = "\improper Panic Shelter" + flags = RAD_SHIELDED //It just makes sense @@ -314,40 +340,77 @@ name = "\improper Dock Two" icon_state = "dk_yellow" +/area/crew_quarters/showers + name = "\improper Unisex Showers" + icon_state = "recreation_area_restroom" + +/area/crew_quarters/sleep/maintDorm1 + name = "\improper Construction Dorm 1" + icon_state = "Sleep" + flags = RAD_SHIELDED + +/area/crew_quarters/sleep/maintDorm2 + name = "\improper Construction Dorm 2" + icon_state = "Sleep" + flags = RAD_SHIELDED + +/area/crew_quarters/sleep/maintDorm3 + name = "\improper Construction Dorm 3" + icon_state = "Sleep" + flags = RAD_SHIELDED + +/area/crew_quarters/sleep/maintDorm4 + name = "\improper Construction Dorm 4" + icon_state = "Sleep" + flags = RAD_SHIELDED + /area/crew_quarters/sleep/Dorm_1/holo name = "\improper Dorm 1 Holodeck" icon_state = "dk_yellow" + flags = RAD_SHIELDED | BLUE_SHIELDED /area/crew_quarters/sleep/Dorm_3/holo name = "\improper Dorm 3 Holodeck" icon_state = "dk_yellow" + flags = RAD_SHIELDED | BLUE_SHIELDED /area/crew_quarters/sleep/Dorm_5/holo name = "\improper Dorm 5 Holodeck" icon_state = "dk_yellow" + flags = RAD_SHIELDED | BLUE_SHIELDED /area/crew_quarters/sleep/Dorm_7/holo name = "\improper Dorm 7 Holodeck" icon_state = "dk_yellow" + flags = RAD_SHIELDED | BLUE_SHIELDED /area/holodeck/holodorm/source_basic name = "\improper Holodeck Source" + flags = RAD_SHIELDED | BLUE_SHIELDED /area/holodeck/holodorm/source_desert name = "\improper Holodeck Source" + flags = RAD_SHIELDED | BLUE_SHIELDED /area/holodeck/holodorm/source_seating name = "\improper Holodeck Source" + flags = RAD_SHIELDED | BLUE_SHIELDED /area/holodeck/holodorm/source_beach name = "\improper Holodeck Source" + flags = RAD_SHIELDED | BLUE_SHIELDED /area/holodeck/holodorm/source_garden name = "\improper Holodeck Source" + flags = RAD_SHIELDED | BLUE_SHIELDED /area/holodeck/holodorm/source_boxing name = "\improper Holodeck Source" + flags = RAD_SHIELDED | BLUE_SHIELDED /area/holodeck/holodorm/source_snow name = "\improper Holodeck Source" + flags = RAD_SHIELDED | BLUE_SHIELDED /area/holodeck/holodorm/source_space name = "\improper Holodeck Source" + flags = RAD_SHIELDED | BLUE_SHIELDED /area/holodeck/holodorm/source_off name = "\improper Holodeck Source" + flags = RAD_SHIELDED | BLUE_SHIELDED /area/ai/foyer name = "\improper AI Core Access" @@ -499,6 +562,17 @@ /area/shuttle/excursion/virgo3b_sky name = "\improper Excursion Shuttle - Virgo3b Sky" base_turf = /turf/simulated/sky + +// Elevator area // + +/area/tether/elevator + name = "\improper Tether Elevator" + icon = 'icons/turf/areas_vr.dmi' + icon_state = "elevator" + dynamic_lighting = FALSE + + requires_power = FALSE + ////////////////////////////////// /area/antag/antag_base diff --git a/maps/tether/tether_defines.dm b/maps/tether/tether_defines.dm index fbc6caf28a..306d0ed3b4 100644 --- a/maps/tether/tether_defines.dm +++ b/maps/tether/tether_defines.dm @@ -35,11 +35,20 @@ #define Z_LEVEL_MISC 11 #define Z_LEVEL_SHIPS 12 #define Z_LEVEL_UNDERDARK 13 -#define Z_LEVEL_ALIENSHIP 14 -#define Z_LEVEL_BEACH 15 -#define Z_LEVEL_BEACH_CAVE 16 -#define Z_LEVEL_AEROSTAT 17 -#define Z_LEVEL_AEROSTAT_SURFACE 18 +#define Z_LEVEL_PLAINS 14 +#define Z_LEVEL_ALIENSHIP 15 +#define Z_LEVEL_BEACH 16 +#define Z_LEVEL_BEACH_CAVE 17 +#define Z_LEVEL_AEROSTAT 18 +#define Z_LEVEL_AEROSTAT_SURFACE 19 +#define Z_LEVEL_DEBRISFIELD 20 + +//Camera networks +#define NETWORK_TETHER "Tether" +#define NETWORK_TCOMMS "Telecommunications" //Using different from Polaris one for better name +#define NETWORK_OUTSIDE "Outside" +#define NETWORK_EXPLORATION "Exploration" +#define NETWORK_XENOBIO "Xenobiology" /datum/map/tether name = "Virgo" @@ -84,17 +93,17 @@ NETWORK_COMMAND, NETWORK_ENGINE, NETWORK_ENGINEERING, - NETWORK_ENGINEERING_OUTPOST, - NETWORK_DEFAULT, + NETWORK_EXPLORATION, + //NETWORK_DEFAULT, //Is this even used for anything? Robots show up here, but they show up in ROBOTS network too NETWORK_MEDICAL, NETWORK_MINE, - NETWORK_NORTHERN_STAR, + NETWORK_OUTSIDE, NETWORK_RESEARCH, NETWORK_RESEARCH_OUTPOST, NETWORK_ROBOTS, - NETWORK_PRISON, NETWORK_SECURITY, - NETWORK_INTERROGATION + NETWORK_TCOMMS, + NETWORK_TETHER ) allowed_spawns = list("Tram Station","Gateway","Cryogenic Storage","Cyborg Storage") @@ -106,6 +115,7 @@ unit_test_exempt_areas = list( /area/tether/surfacebase/outside/outside1, + /area/tether/elevator, /area/vacant/vacant_site, /area/vacant/vacant_site/east, /area/crew_quarters/sleep/Dorm_1/holo, @@ -121,10 +131,11 @@ /area/tether/surfacebase/emergency_storage/atrium) lateload_z_levels = list( - list("Tether - Misc","Tether - Ships","Tether - Underdark"), //Stock Tether lateload maps + list("Tether - Misc","Tether - Ships","Tether - Underdark","Tether - Plains"), //Stock Tether lateload maps list("Alien Ship - Z1 Ship"), list("Desert Planet - Z1 Beach","Desert Planet - Z2 Cave"), - list("Remmi Aerostat - Z1 Aerostat","Remmi Aerostat - Z2 Surface") + list("Remmi Aerostat - Z1 Aerostat","Remmi Aerostat - Z2 Surface"), + list("Debris Field - Z1 Space") ) lateload_single_pick = null //Nothing right now. @@ -254,7 +265,7 @@ if(activated && isemptylist(frozen_mobs)) return activated = 1 - for(var/mob/living/simple_animal/M in frozen_mobs) + for(var/mob/living/simple_mob/M in frozen_mobs) M.life_disabled = 0 frozen_mobs -= M frozen_mobs.Cut() diff --git a/maps/tether/tether_phoronlock.dm b/maps/tether/tether_phoronlock.dm index 8f86c9eedc..ead834fb70 100644 --- a/maps/tether/tether_phoronlock.dm +++ b/maps/tether/tether_phoronlock.dm @@ -50,7 +50,7 @@ obj/machinery/airlock_sensor/phoron/airlock_exterior var/frequency = 0 var/datum/radio_frequency/radio_connection -/obj/machinery/portable_atmospherics/powered/scrubber/huge/stationary/initialize() +/obj/machinery/portable_atmospherics/powered/scrubber/huge/stationary/Initialize() . = ..() if(frequency) set_frequency(frequency) @@ -97,7 +97,7 @@ obj/machinery/airlock_sensor/phoron/airlock_exterior /obj/machinery/embedded_controller/radio/airlock/phoron var/tag_scrubber -/obj/machinery/embedded_controller/radio/airlock/phoron/initialize() +/obj/machinery/embedded_controller/radio/airlock/phoron/Initialize() . = ..() program = new/datum/computer/file/embedded_program/airlock/phoron(src) diff --git a/maps/tether/tether_shuttles.dm b/maps/tether/tether_shuttles.dm index 194dcfa147..1d4b260292 100644 --- a/maps/tether/tether_shuttles.dm +++ b/maps/tether/tether_shuttles.dm @@ -63,6 +63,7 @@ // // The backup tether shuttle uses experimental engines and can degrade and/or crash! // +/* //Disabling the crash mechanics per request /datum/shuttle/ferry/tether_backup crash_message = "Tether shuttle distress signal received. Shuttle location is approximately 200 meters from tether base." category = /datum/shuttle/ferry/tether_backup // So shuttle_controller.dm doesn't try and instantiate this type as an acutal mapped in shuttle. @@ -166,7 +167,7 @@ wear = 20 update_icon() return 1 - +*/ //////////////////////////////////////// //////// Excursion Shuttle ///////////// //////////////////////////////////////// diff --git a/maps/tether/tether_telecomms.dm b/maps/tether/tether_telecomms.dm index 619b21a5d2..d60188b834 100644 --- a/maps/tether/tether_telecomms.dm +++ b/maps/tether/tether_telecomms.dm @@ -18,6 +18,12 @@ listening_level = Z_LEVEL_SURFACE_HIGH autolinkers = list("tbh_relay") +//Some coverage for midpoint +/obj/machinery/telecomms/relay/preset/tether/midpoint + id = "Midpoint Relay" + listening_level = Z_LEVEL_TRANSIT + autolinkers = list("tmp_relay") + // The station of course needs relays fluff-wise to connect to ground station. But again, no multi-z so, we need one for each z level. /obj/machinery/telecomms/relay/preset/tether/station_low id = "Station Relay 1" @@ -49,7 +55,7 @@ id = "Hub" network = "tcommsat" autolinkers = list("hub", - "tbl_relay", "tbm_relay", "tbh_relay", "tsl_relay", "tsm_relay", "tsh_relay", + "tbl_relay", "tbm_relay", "tbh_relay", "tmp_relay", "tsl_relay", "tsm_relay", "tsh_relay", "c_relay", "m_relay", "r_relay", "sci_o_relay", "ud_relay", "science", "medical", "supply", "service", "common", "command", "engineering", "security", "explorer", "unused", "hb_relay", "receiverA", "broadcasterA" @@ -119,6 +125,6 @@ name = "pre-linked multitool (tether hub)" desc = "This multitool has already been linked to the Tether telecomms hub and can be used to configure one (1) relay." -/obj/item/device/multitool/tether_buffered/initialize() +/obj/item/device/multitool/tether_buffered/Initialize() . = ..() buffer = locate(/obj/machinery/telecomms/hub/preset/tether) diff --git a/maps/tether/tether_things.dm b/maps/tether/tether_things.dm index 1cb9e08766..05cf0d4629 100644 --- a/maps/tether/tether_things.dm +++ b/maps/tether/tether_things.dm @@ -1,8 +1,3 @@ -/obj/structure/window/reinforced/polarized/full - dir = SOUTHWEST - icon_state = "fwindow" - maxhealth = 80 - //Special map objects /obj/effect/landmark/map_data/virgo3b height = 7 @@ -80,7 +75,7 @@ icon = 'icons/obj/stairs.dmi' icon_state = "stairs" invisibility = 0 -/obj/effect/step_trigger/teleporter/to_underdark/initialize() +/obj/effect/step_trigger/teleporter/to_underdark/Initialize() . = ..() teleport_x = x teleport_y = y @@ -93,7 +88,7 @@ icon = 'icons/obj/stairs.dmi' icon_state = "stairs" invisibility = 0 -/obj/effect/step_trigger/teleporter/from_underdark/initialize() +/obj/effect/step_trigger/teleporter/from_underdark/Initialize() . = ..() teleport_x = x teleport_y = y @@ -102,9 +97,20 @@ if(Z.name == "Mining Outpost") teleport_z = Z.z -/obj/effect/step_trigger/teleporter/planetary_fall/virgo3b/initialize() +/obj/effect/step_trigger/teleporter/to_plains/New() + ..() + teleport_x = src.x + teleport_y = world.maxy - 1 + teleport_z = Z_LEVEL_PLAINS + +/obj/effect/step_trigger/teleporter/from_plains/New() + ..() + teleport_x = src.x + teleport_y = 2 + teleport_z = Z_LEVEL_SURFACE_LOW + +/obj/effect/step_trigger/teleporter/planetary_fall/virgo3b/find_planet() planet = planet_virgo3b - . = ..() /obj/effect/step_trigger/lost_in_space var/deathmessage = "You drift off into space, floating alone in the void until your life support runs out." @@ -157,7 +163,7 @@ var/area/shock_area = /area/tether/surfacebase/tram -/turf/simulated/floor/maglev/initialize() +/turf/simulated/floor/maglev/Initialize() . = ..() shock_area = locate(shock_area) @@ -197,7 +203,7 @@ /obj/machinery/smartfridge/chemistry/chemvator/down name = "\improper Smart Chemavator - Lower" -/obj/machinery/smartfridge/chemistry/chemvator/down/initialize() +/obj/machinery/smartfridge/chemistry/chemvator/down/Initialize() . = ..() var/obj/machinery/smartfridge/chemistry/chemvator/above = locate(/obj/machinery/smartfridge/chemistry/chemvator,get_zstep(src,UP)) if(istype(above)) @@ -319,22 +325,22 @@ var/global/list/latejoin_tram = list() "Beach" = new/datum/holodeck_program(/area/houseboat/holodeck/beach), "Desert" = new/datum/holodeck_program(/area/houseboat/holodeck/desert, list( - 'sound/effects/wind/wind_2_1.ogg', - 'sound/effects/wind/wind_2_2.ogg', - 'sound/effects/wind/wind_3_1.ogg', - 'sound/effects/wind/wind_4_1.ogg', - 'sound/effects/wind/wind_4_2.ogg', - 'sound/effects/wind/wind_5_1.ogg' + 'sound/effects/weather/wind/wind_2_1.ogg', + 'sound/effects/weather/wind/wind_2_2.ogg', + 'sound/effects/weather/wind/wind_3_1.ogg', + 'sound/effects/weather/wind/wind_4_1.ogg', + 'sound/effects/weather/wind/wind_4_2.ogg', + 'sound/effects/weather/wind/wind_5_1.ogg' ) ), "Snowfield" = new/datum/holodeck_program(/area/houseboat/holodeck/snow, list( - 'sound/effects/wind/wind_2_1.ogg', - 'sound/effects/wind/wind_2_2.ogg', - 'sound/effects/wind/wind_3_1.ogg', - 'sound/effects/wind/wind_4_1.ogg', - 'sound/effects/wind/wind_4_2.ogg', - 'sound/effects/wind/wind_5_1.ogg' + 'sound/effects/weather/wind/wind_2_1.ogg', + 'sound/effects/weather/wind/wind_2_2.ogg', + 'sound/effects/weather/wind/wind_3_1.ogg', + 'sound/effects/weather/wind/wind_4_1.ogg', + 'sound/effects/weather/wind/wind_4_2.ogg', + 'sound/effects/weather/wind/wind_5_1.ogg' ) ), "Space" = new/datum/holodeck_program(/area/houseboat/holodeck/space, @@ -406,10 +412,10 @@ var/global/list/latejoin_tram = list() prob_fall = 50 guard = 20 mobs_to_pick_from = list( - /mob/living/simple_animal/hostile/jelly = 3, - /mob/living/simple_animal/hostile/giant_spider/hunter = 1, - /mob/living/simple_animal/hostile/giant_spider/phorogenic = 1, - /mob/living/simple_animal/hostile/giant_spider/lurker = 1, + /mob/living/simple_mob/animal/space/jelly = 3, + /mob/living/simple_mob/animal/giant_spider/hunter = 1, + /mob/living/simple_mob/animal/giant_spider/phorogenic = 1, + /mob/living/simple_mob/animal/giant_spider/lurker = 1, ) /obj/tether_away_spawner/underdark_hard @@ -420,9 +426,9 @@ var/global/list/latejoin_tram = list() prob_fall = 50 guard = 20 mobs_to_pick_from = list( - /mob/living/simple_animal/hostile/corrupthound = 1, - /mob/living/simple_animal/hostile/rat = 1, - /mob/living/simple_animal/hostile/mimic = 1 + /mob/living/simple_mob/vore/aggressive/corrupthound = 1, + /mob/living/simple_mob/vore/aggressive/rat = 1, + /mob/living/simple_mob/animal/space/mimic = 1 ) /obj/tether_away_spawner/underdark_boss @@ -433,13 +439,45 @@ var/global/list/latejoin_tram = list() prob_fall = 100 guard = 70 mobs_to_pick_from = list( - /mob/living/simple_animal/hostile/dragon = 1 + /mob/living/simple_mob/vore/aggressive/dragon = 1 ) // Used at centcomm for the elevator /obj/machinery/cryopod/robot/door/dorms spawnpoint_type = /datum/spawnpoint/tram +//Tether-unique network cameras +/obj/machinery/camera/network/tether + network = list(NETWORK_TETHER) + +/obj/machinery/camera/network/tcomms + network = list(NETWORK_TCOMMS) + +/obj/machinery/camera/network/outside + network = list(NETWORK_OUTSIDE) + +/obj/machinery/camera/network/exploration + network = list(NETWORK_EXPLORATION) + +/obj/machinery/camera/network/research/xenobio + network = list(NETWORK_RESEARCH, NETWORK_XENOBIO) + +//Camera monitors +/obj/machinery/computer/security/xenobio + name = "xenobiology camera monitor" + desc = "Used to access the xenobiology cell cameras." + icon_keyboard = "mining_key" + icon_screen = "mining" + network = list(NETWORK_XENOBIO) + circuit = /obj/item/weapon/circuitboard/security/xenobio + light_color = "#F9BBFC" + +/obj/item/weapon/circuitboard/security/xenobio + name = T_BOARD("xenobiology camera monitor") + build_path = /obj/machinery/computer/security/xenobio + network = list(NETWORK_XENOBIO) + req_access = list() + // // ### Wall Machines On Full Windows ### // To make sure wall-mounted machines placed on full-tile windows are clickable they must be above the window diff --git a/maps/tether/tether_turfs.dm b/maps/tether/tether_turfs.dm index 4ae161d40f..8e3ccbfcdb 100644 --- a/maps/tether/tether_turfs.dm +++ b/maps/tether/tether_turfs.dm @@ -163,9 +163,11 @@ VIRGO3B_TURF_CREATE(/turf/simulated/mineral/floor) // Bluespace jump turf! /turf/space/bluespace name = "bluespace" + icon = 'icons/turf/space_vr.dmi' icon_state = "bluespace" -/turf/space/bluespace/initialize() +/turf/space/bluespace/Initialize() ..() + icon = 'icons/turf/space_vr.dmi' icon_state = "bluespace" // Desert jump turf! @@ -173,7 +175,7 @@ VIRGO3B_TURF_CREATE(/turf/simulated/mineral/floor) name = "sand transit" icon = 'icons/turf/transit_vr.dmi' icon_state = "desert_ns" -/turf/space/sandyscroll/initialize() +/turf/space/sandyscroll/Initialize() ..() icon_state = "desert_ns" @@ -182,7 +184,7 @@ VIRGO3B_TURF_CREATE(/turf/simulated/mineral/floor) /turf/simulated/sky/virgo3b color = "#FFBBBB" -/turf/simulated/sky/virgo3b/initialize() +/turf/simulated/sky/virgo3b/Initialize() SSplanets.addTurf(src) set_light(2, 2, "#FFBBBB") diff --git a/maps/tether/tether_virgo3b.dm b/maps/tether/tether_virgo3b.dm index 284b3d2f4e..d7208204df 100644 --- a/maps/tether/tether_virgo3b.dm +++ b/maps/tether/tether_virgo3b.dm @@ -14,7 +14,8 @@ var/datum/planet/virgo3b/planet_virgo3b = null Z_LEVEL_SURFACE_MID, Z_LEVEL_SURFACE_HIGH, Z_LEVEL_SURFACE_MINE, - Z_LEVEL_SOLARS + Z_LEVEL_SOLARS, + Z_LEVEL_PLAINS ) planetary_wall_type = /turf/unsimulated/wall/planetary/virgo3b @@ -72,12 +73,12 @@ var/datum/planet/virgo3b/planet_virgo3b = null high_color = "#FFFFFF" min = 0.70 - var/lerp_weight = (abs(min - sun_position)) * 4 + var/interpolate_weight = (abs(min - sun_position)) * 4 var/weather_light_modifier = 1 if(weather_holder && weather_holder.current_weather) weather_light_modifier = weather_holder.current_weather.light_modifier - var/new_brightness = (Interpolate(low_brightness, high_brightness, weight = lerp_weight) ) * weather_light_modifier + var/new_brightness = (LERP(low_brightness, high_brightness, interpolate_weight) ) * weather_light_modifier var/new_color = null if(weather_holder && weather_holder.current_weather && weather_holder.current_weather.light_color) @@ -93,9 +94,9 @@ var/datum/planet/virgo3b/planet_virgo3b = null var/high_g = high_color_list[2] var/high_b = high_color_list[3] - var/new_r = Interpolate(low_r, high_r, weight = lerp_weight) - var/new_g = Interpolate(low_g, high_g, weight = lerp_weight) - var/new_b = Interpolate(low_b, high_b, weight = lerp_weight) + var/new_r = LERP(low_r, high_r, interpolate_weight) + var/new_g = LERP(low_g, high_g, interpolate_weight) + var/new_b = LERP(low_b, high_b, interpolate_weight) new_color = rgb(new_r, new_g, new_b) @@ -114,7 +115,10 @@ var/datum/planet/virgo3b/planet_virgo3b = null WEATHER_RAIN = new /datum/weather/virgo3b/rain(), WEATHER_STORM = new /datum/weather/virgo3b/storm(), WEATHER_HAIL = new /datum/weather/virgo3b/hail(), - WEATHER_BLOOD_MOON = new /datum/weather/virgo3b/blood_moon() + WEATHER_BLOOD_MOON = new /datum/weather/virgo3b/blood_moon(), + WEATHER_EMBERFALL = new /datum/weather/virgo3b/emberfall(), + WEATHER_ASH_STORM = new /datum/weather/virgo3b/ash_storm(), + WEATHER_FALLOUT = new /datum/weather/virgo3b/fallout() ) roundstart_weather_chances = list( WEATHER_CLEAR = 30, @@ -138,6 +142,13 @@ var/datum/planet/virgo3b/planet_virgo3b = null WEATHER_CLEAR = 60, WEATHER_OVERCAST = 40 ) + transition_messages = list( + "The sky clears up.", + "The sky is visible.", + "The weather is calm." + ) + sky_visible = TRUE + observed_message = "The sky is clear." /datum/weather/virgo3b/overcast name = "overcast" @@ -150,6 +161,12 @@ var/datum/planet/virgo3b/planet_virgo3b = null WEATHER_RAIN = 5, WEATHER_HAIL = 5 ) + observed_message = "It is overcast, all you can see are clouds." + transition_messages = list( + "All you can see above are clouds.", + "Clouds cut off your view of the sky.", + "It's very cloudy." + ) /datum/weather/virgo3b/light_snow name = "light snow" @@ -163,6 +180,11 @@ var/datum/planet/virgo3b/planet_virgo3b = null WEATHER_SNOW = 25, WEATHER_HAIL = 5 ) + observed_message = "It is snowing lightly." + transition_messages = list( + "Small snowflakes begin to fall from above.", + "It begins to snow lightly.", + ) /datum/weather/virgo3b/snow name = "moderate snow" @@ -178,6 +200,13 @@ var/datum/planet/virgo3b/planet_virgo3b = null WEATHER_HAIL = 5, WEATHER_OVERCAST = 5 ) + observed_message = "It is snowing." + transition_messages = list( + "It's starting to snow.", + "The air feels much colder as snowflakes fall from above." + ) + outdoor_sounds_type = /datum/looping_sound/weather/outside_snow + indoor_sounds_type = /datum/looping_sound/weather/inside_snow /datum/weather/virgo3b/snow/process_effects() ..() @@ -202,6 +231,13 @@ var/datum/planet/virgo3b/planet_virgo3b = null WEATHER_HAIL = 10, WEATHER_OVERCAST = 5 ) + observed_message = "A blizzard blows snow everywhere." + transition_messages = list( + "Strong winds howl around you as a blizzard appears.", + "It starts snowing heavily, and it feels extremly cold now." + ) + outdoor_sounds_type = /datum/looping_sound/weather/outside_blizzard + indoor_sounds_type = /datum/looping_sound/weather/inside_blizzard /datum/weather/virgo3b/blizzard/process_effects() ..() @@ -226,6 +262,10 @@ var/datum/planet/virgo3b/planet_virgo3b = null WEATHER_STORM = 10, WEATHER_HAIL = 5 ) + observed_message = "It is raining." + transition_messages = list( + "The sky is dark, and rain falls down upon you." + ) /datum/weather/virgo3b/rain/process_effects() ..() @@ -240,13 +280,13 @@ var/datum/planet/virgo3b/planet_virgo3b = null var/obj/item/weapon/melee/umbrella/U = L.get_active_hand() if(U.open) if(show_message) - to_chat(L, "Rain patters softly onto your umbrella") + to_chat(L, "Rain patters softly onto your umbrella.") continue else if(istype(L.get_inactive_hand(), /obj/item/weapon/melee/umbrella)) var/obj/item/weapon/melee/umbrella/U = L.get_inactive_hand() if(U.open) if(show_message) - to_chat(L, "Rain patters softly onto your umbrella") + to_chat(L, "Rain patters softly onto your umbrella.") continue L.water_act(1) @@ -258,6 +298,17 @@ var/datum/planet/virgo3b/planet_virgo3b = null icon_state = "storm" light_modifier = 0.3 flight_failure_modifier = 10 + effect_message = "Rain falls on you, drenching you in water." + + var/next_lightning_strike = 0 // world.time when lightning will strike. + var/min_lightning_cooldown = 5 SECONDS + var/max_lightning_cooldown = 1 MINUTE + observed_message = "An intense storm pours down over the region." + transition_messages = list( + "You feel intense winds hit you as the weather takes a turn for the worst.", + "Loud thunder is heard in the distance.", + "A bright flash heralds the approach of a storm." + ) transition_chances = list( @@ -275,22 +326,52 @@ var/datum/planet/virgo3b/planet_virgo3b = null if(!T.outdoors) continue // They're indoors, so no need to rain on them. - // If they have an open umbrella, it'll get stolen by the wind + // Lazy wind code + if(prob(10)) + if(istype(L.get_active_hand(), /obj/item/weapon/melee/umbrella)) + var/obj/item/weapon/melee/umbrella/U = L.get_active_hand() + if(U.open) + to_chat(L, "You struggle to keep hold of your umbrella!") + L.Stun(20) // This is not nearly as long as it seems + playsound(L, 'sound/effects/rustle1.ogg', 100, 1) // Closest sound I've got to "Umbrella in the wind" + else if(istype(L.get_inactive_hand(), /obj/item/weapon/melee/umbrella)) + var/obj/item/weapon/melee/umbrella/U = L.get_inactive_hand() + if(U.open) + to_chat(L, "A gust of wind yanks the umbrella from your hand!") + playsound(L, 'sound/effects/rustle1.ogg', 100, 1) + L.drop_from_inventory(U) + U.toggle_umbrella() + U.throw_at(get_edge_target_turf(U, pick(alldirs)), 8, 1, L) + + // If they have an open umbrella, it'll guard from rain if(istype(L.get_active_hand(), /obj/item/weapon/melee/umbrella)) var/obj/item/weapon/melee/umbrella/U = L.get_active_hand() if(U.open) - to_chat(L, "A gust of wind yanks the umbrella from your hand!") - L.drop_from_inventory(U) - U.throw_at(get_edge_target_turf(U, pick(alldirs)), 8, 1, L) + if(show_message) + to_chat(L, "Rain showers loudly onto your umbrella!") + continue else if(istype(L.get_inactive_hand(), /obj/item/weapon/melee/umbrella)) var/obj/item/weapon/melee/umbrella/U = L.get_inactive_hand() if(U.open) - to_chat(L, "A gust of wind yanks the umbrella from your hand!") - L.drop_from_inventory(U) - U.throw_at(get_edge_target_turf(U, pick(alldirs)), 8, 1, L) + if(show_message) + to_chat(L, "Rain showers loudly onto your umbrella!") + continue + L.water_act(2) - to_chat(L, "Rain falls on you, drenching you in water.") + if(show_message) + to_chat(L, effect_message) + + handle_lightning() + +// This gets called to do lightning periodically. +// There is a seperate function to do the actual lightning strike, so that badmins can play with it. +/datum/weather/virgo3b/storm/proc/handle_lightning() + if(world.time < next_lightning_strike) + return // It's too soon to strike again. + next_lightning_strike = world.time + rand(min_lightning_cooldown, max_lightning_cooldown) + var/turf/T = pick(holder.our_planet.planet_floors) // This has the chance to 'strike' the sky, but that might be a good thing, to scare reckless pilots. + lightning_strike(T) /datum/weather/virgo3b/hail name = "hail" @@ -307,41 +388,47 @@ var/datum/planet/virgo3b/planet_virgo3b = null WEATHER_HAIL = 10, WEATHER_OVERCAST = 5 ) + observed_message = "Ice is falling from the sky." + transition_messages = list( + "Ice begins to fall from the sky.", + "It begins to hail.", + "An intense chill is felt, and chunks of ice start to fall from the sky, towards you." + ) /datum/weather/virgo3b/hail/process_effects() ..() - for(var/mob/living/carbon/human/H in living_mob_list) + for(var/humie in human_mob_list) + var/mob/living/carbon/human/H = humie if(H.z in holder.our_planet.expected_z_levels) var/turf/T = get_turf(H) if(!T.outdoors) continue // They're indoors, so no need to pelt them with ice. - // If they have an open umbrella, it'll guard from rain - // Message plays every time the umbrella gets stolen, just so they're especially aware of what's happening + // If they have an open umbrella, it'll guard from hail + var/obj/item/weapon/melee/umbrella/U if(istype(H.get_active_hand(), /obj/item/weapon/melee/umbrella)) - var/obj/item/weapon/melee/umbrella/U = H.get_active_hand() - if(U.open) - if(show_message) - to_chat(H, "Hail patters gently onto your umbrella.") - continue + U = H.get_active_hand() else if(istype(H.get_inactive_hand(), /obj/item/weapon/melee/umbrella)) - var/obj/item/weapon/melee/umbrella/U = H.get_inactive_hand() - if(U.open) - if(show_message) - to_chat(H, "Hail patters gently onto your umbrella.") - continue - + U = H.get_inactive_hand() + if(U && U.open) + if(show_message) + to_chat(H, "Hail patters onto your umbrella.") + continue + var/target_zone = pick(BP_ALL) var/amount_blocked = H.run_armor_check(target_zone, "melee") var/amount_soaked = H.get_armor_soak(target_zone, "melee") - if(amount_blocked >= 100) + var/damage = rand(1,3) + + if(amount_blocked >= 30) + continue // No need to apply damage. Hardhats are 30. They should probably protect you from hail on your head. + //Voidsuits are likewise 40, and riot, 80. Clothes are all less than 30. + + if(amount_soaked >= damage) continue // No need to apply damage. - if(amount_soaked >= 10) - continue // No need to apply damage. - - H.apply_damage(rand(1, 3), BRUTE, target_zone, amount_blocked, amount_soaked, used_weapon = "hail") + H.apply_damage(damage, BRUTE, target_zone, amount_blocked, amount_soaked, used_weapon = "hail") if(show_message) to_chat(H, effect_message) @@ -353,3 +440,110 @@ var/datum/planet/virgo3b/planet_virgo3b = null transition_chances = list( WEATHER_BLOODMOON = 100 ) + observed_message = "Everything is red. Something really ominous is going on." + transition_messages = list( + "The sky turns blood red!" + ) + outdoor_sounds_type = /datum/looping_sound/weather/wind + indoor_sounds_type = /datum/looping_sound/weather/wind/indoors + +// Ash and embers fall forever, such as from a volcano or something. +/datum/weather/virgo3b/emberfall + name = "emberfall" + icon_state = "ashfall_light" + light_modifier = 0.7 + light_color = "#880000" + temp_high = 293.15 // 20c + temp_low = 283.15 // 10c + flight_failure_modifier = 20 + transition_chances = list( + WEATHER_EMBERFALL = 100 + ) + observed_message = "Soot, ash, and embers float down from above." + transition_messages = list( + "Gentle embers waft down around you like grotesque snow." + ) + outdoor_sounds_type = /datum/looping_sound/weather/wind + indoor_sounds_type = /datum/looping_sound/weather/wind/indoors + +// Like the above but a lot more harmful. +/datum/weather/virgo3b/ash_storm + name = "ash storm" + icon_state = "ashfall_heavy" + light_modifier = 0.1 + light_color = "#FF0000" + temp_high = 323.15 // 50c + temp_low = 313.15 // 40c + flight_failure_modifier = 50 + transition_chances = list( + WEATHER_ASH_STORM = 100 + ) + observed_message = "All that can be seen is black smoldering ash." + transition_messages = list( + "Smoldering clouds of scorching ash billow down around you!" + ) + // Lets recycle. + outdoor_sounds_type = /datum/looping_sound/weather/outside_blizzard + indoor_sounds_type = /datum/looping_sound/weather/inside_blizzard + +/datum/weather/virgo3b/ash_storm/process_effects() + ..() + for(var/thing in living_mob_list) + var/mob/living/L = thing + if(L.z in holder.our_planet.expected_z_levels) + var/turf/T = get_turf(L) + if(!T.outdoors) + continue // They're indoors, so no need to burn them with ash. + + L.inflict_heat_damage(rand(1, 3)) + + +// Totally radical. +/datum/weather/virgo3b/fallout + name = "fallout" + icon_state = "fallout" + light_modifier = 0.7 + light_color = "#CCFFCC" + flight_failure_modifier = 30 + transition_chances = list( + WEATHER_FALLOUT = 100 + ) + observed_message = "Radioactive soot and ash rains down from the heavens." + transition_messages = list( + "Radioactive soot and ash start to float down around you, contaminating whatever they touch." + ) + outdoor_sounds_type = /datum/looping_sound/weather/wind + indoor_sounds_type = /datum/looping_sound/weather/wind/indoors + + // How much radiation a mob gets while on an outside tile. + var/direct_rad_low = RAD_LEVEL_LOW + var/direct_rad_high = RAD_LEVEL_MODERATE + + // How much radiation is bursted onto a random tile near a mob. + var/fallout_rad_low = RAD_LEVEL_HIGH + var/fallout_rad_high = RAD_LEVEL_VERY_HIGH + +/datum/weather/virgo3b/fallout/process_effects() + ..() + for(var/thing in living_mob_list) + var/mob/living/L = thing + if(L.z in holder.our_planet.expected_z_levels) + irradiate_nearby_turf(L) + var/turf/T = get_turf(L) + if(!T.outdoors) + continue // They're indoors, so no need to irradiate them with fallout. + + L.rad_act(rand(direct_rad_low, direct_rad_high)) + +// This makes random tiles near people radioactive for awhile. +// Tiles far away from people are left alone, for performance. +/datum/weather/virgo3b/fallout/proc/irradiate_nearby_turf(mob/living/L) + if(!istype(L)) + return + var/list/turfs = RANGE_TURFS(world.view, L) + var/turf/T = pick(turfs) // We get one try per tick. + if(!istype(T)) + return + if(T.outdoors) + radiation_repository.radiate(T, rand(fallout_rad_low, fallout_rad_high)) + diff --git a/maps/virgo/virgo-1.dmm b/maps/virgo/virgo-1.dmm index 88c9598bad..c734bb6c36 100644 --- a/maps/virgo/virgo-1.dmm +++ b/maps/virgo/virgo-1.dmm @@ -212,7 +212,7 @@ "aed" = (/obj/machinery/atmospherics/pipe/tank/air,/obj/effect/floor_decal/industrial/warning{icon_state = "warning"; dir = 8},/turf/simulated/floor,/area/maintenance/library) "aee" = (/obj/machinery/atmospherics/pipe/tank/air,/obj/effect/floor_decal/industrial/warning/corner,/turf/simulated/floor,/area/maintenance/library) "aef" = (/obj/effect/floor_decal/industrial/warning{dir = 1},/turf/simulated/floor/tiled,/area/hallway/secondary/civilian_hallway_fore) -"aeg" = (/obj/effect/decal/cleanable/generic,/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"},/mob/living/simple_animal/mouse,/turf/simulated/floor/plating,/area/maintenance/locker) +"aeg" = (/obj/effect/decal/cleanable/generic,/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"},/mob/living/simple_mob/mouse,/turf/simulated/floor/plating,/area/maintenance/locker) "aeh" = (/obj/machinery/camera/network/civilian{c_tag = "CIV - Chapel Morgue"; dir = 4},/obj/machinery/alarm{dir = 4; icon_state = "alarm0"; pixel_x = -22},/turf/simulated/floor/tiled/dark,/area/chapel/chapel_morgue) "aei" = (/obj/machinery/hologram/holopad,/turf/simulated/floor/tiled/dark,/area/chapel/chapel_morgue) "aej" = (/obj/machinery/door/window{dir = 8; name = "Mass Driver"; req_access = list(22)},/obj/machinery/mass_driver{dir = 4; id = "chapelgun"},/obj/machinery/atmospherics/unary/vent_pump/on{dir = 8},/obj/machinery/airlock_sensor{pixel_y = 25},/obj/effect/floor_decal/industrial/warning{dir = 8},/turf/simulated/floor/plating,/area/chapel/chapel_morgue) @@ -1015,7 +1015,7 @@ "atA" = (/obj/machinery/atmospherics/valve{dir = 4},/obj/machinery/alarm{pixel_y = 22},/turf/simulated/floor,/area/security/riot_control) "atB" = (/obj/machinery/atmospherics/portables_connector{dir = 8},/obj/effect/floor_decal/industrial/warning{dir = 5},/turf/simulated/floor,/area/security/riot_control) "atC" = (/turf/simulated/wall/r_wall,/area/security/riot_control) -"atD" = (/obj/effect/decal/cleanable/dirt,/mob/living/simple_animal/mouse,/turf/simulated/floor/plating,/area/maintenance/security_starboard) +"atD" = (/obj/effect/decal/cleanable/dirt,/mob/living/simple_mob/mouse,/turf/simulated/floor/plating,/area/maintenance/security_starboard) "atE" = (/obj/machinery/light/small{dir = 1},/obj/effect/decal/cleanable/dirt,/obj/effect/decal/cleanable/dirt,/turf/simulated/floor,/area/maintenance/security_starboard) "atF" = (/obj/effect/decal/cleanable/dirt,/turf/simulated/floor,/area/maintenance/security_starboard) "atG" = (/obj/machinery/door/firedoor/border_only,/obj/machinery/door/airlock/maintenance{req_access = list(12)},/turf/simulated/floor,/area/maintenance/security_starboard) @@ -3066,7 +3066,7 @@ "bgX" = (/obj/machinery/atmospherics/pipe/simple/hidden{dir = 10; icon_state = "intact";},/obj/machinery/light/small{dir = 1},/obj/structure/cable/green{d2 = 2; icon_state = "0-2"},/obj/machinery/power/apc/high{dir = 1; name = "north bump"; pixel_y = 24},/turf/simulated/floor/tiled/dark,/area/server) "bgY" = (/obj/machinery/camera/network/research{c_tag = "SCI - Server Room"},/obj/machinery/portable_atmospherics/canister/nitrogen,/obj/machinery/atmospherics/portables_connector,/turf/simulated/floor/tiled/dark,/area/server) "bgZ" = (/obj/machinery/atmospherics/unary/freezer{dir = 2; icon_state = "freezer_1"; use_power = 1; power_setting = 20; set_temperature = 73},/obj/machinery/alarm{dir = 8; icon_state = "alarm0"; pixel_x = 24},/turf/simulated/floor/tiled/dark,/area/server) -"bha" = (/mob/living/simple_animal/mouse,/turf/simulated/floor,/area/maintenance/research_shuttle) +"bha" = (/mob/living/simple_mob/mouse,/turf/simulated/floor,/area/maintenance/research_shuttle) "bhb" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced{dir = 4},/obj/machinery/door/firedoor/border_only,/turf/simulated/floor/plating,/area/maintenance/research_shuttle) "bhc" = (/obj/machinery/atmospherics/pipe/manifold/hidden/supply,/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/turf/simulated/floor/tiled/white,/area/rnd/research) "bhd" = (/obj/structure/grille,/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 8},/obj/machinery/door/firedoor/border_only,/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/turf/simulated/floor/plating,/area/rnd/research) @@ -3748,7 +3748,7 @@ "bud" = (/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced{dir = 4},/obj/structure/grille,/obj/structure/window/reinforced{dir = 1},/obj/machinery/door/blast/shutters{density = 0; dir = 8; icon_state = "shutter0"; id = "cmooffice"; name = "CMO Office Privacy Shutters"; opacity = 0},/obj/machinery/door/firedoor/border_only,/turf/simulated/floor/plating,/area/crew_quarters/heads/cmo) "bue" = (/obj/structure/flora/pottedplant{icon_state = "plant-01"},/obj/effect/floor_decal/corner/paleblue/full{dir = 8},/obj/structure/disposalpipe/segment{dir = 4; icon_state = "pipe-c"},/turf/simulated/floor/tiled/white,/area/crew_quarters/heads/cmo) "buf" = (/obj/machinery/atmospherics/unary/vent_scrubber/on,/obj/effect/floor_decal/corner/paleblue{dir = 5},/obj/structure/disposalpipe/segment{dir = 4},/turf/simulated/floor/tiled/white,/area/crew_quarters/heads/cmo) -"bug" = (/obj/effect/floor_decal/corner/paleblue{dir = 1},/obj/machinery/light{dir = 1},/obj/structure/disposalpipe/segment{dir = 4},/mob/living/simple_animal/cat/fluff/Runtime,/turf/simulated/floor/tiled/white,/area/crew_quarters/heads/cmo) +"bug" = (/obj/effect/floor_decal/corner/paleblue{dir = 1},/obj/machinery/light{dir = 1},/obj/structure/disposalpipe/segment{dir = 4},/mob/living/simple_mob/cat/fluff/Runtime,/turf/simulated/floor/tiled/white,/area/crew_quarters/heads/cmo) "buh" = (/obj/structure/disposalpipe/segment{dir = 4},/turf/simulated/floor/tiled/white,/area/crew_quarters/heads/cmo) "bui" = (/obj/effect/floor_decal/corner/paleblue{dir = 4},/obj/structure/disposalpipe/segment{dir = 4},/turf/simulated/floor/tiled/white,/area/crew_quarters/heads/cmo) "buj" = (/obj/machinery/disposal,/obj/structure/disposalpipe/trunk{dir = 8},/obj/machinery/alarm{dir = 8; icon_state = "alarm0"; pixel_x = 24},/obj/effect/floor_decal/corner/paleblue/full{dir = 1},/turf/simulated/floor/tiled/white,/area/crew_quarters/heads/cmo) @@ -4158,7 +4158,7 @@ "bBX" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced{dir = 1},/obj/structure/cable/green{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor/plating,/area/maintenance/central) "bBY" = (/obj/structure/cable/green{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/item/weapon/material/shard{icon_state = "medium"},/obj/item/stack/rods,/turf/simulated/floor,/area/maintenance/central) "bBZ" = (/obj/structure/cable/green{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor,/area/maintenance/central) -"bCa" = (/obj/structure/cable/green{d1 = 4; d2 = 8; icon_state = "4-8"},/mob/living/simple_animal/mouse,/turf/simulated/floor,/area/maintenance/central) +"bCa" = (/obj/structure/cable/green{d1 = 4; d2 = 8; icon_state = "4-8"},/mob/living/simple_mob/mouse,/turf/simulated/floor,/area/maintenance/central) "bCb" = (/obj/structure/cable/green{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 5},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 5},/turf/simulated/floor,/area/maintenance/central) "bCc" = (/obj/structure/cable/green{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/machinery/door/airlock/maintenance{req_access = list(12)},/obj/machinery/door/firedoor,/turf/simulated/floor/tiled,/area/maintenance/central) "bCd" = (/obj/structure/cable/green{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/turf/simulated/floor/tiled,/area/maintenance/central) @@ -4238,7 +4238,7 @@ "bDz" = (/obj/structure/closet/crate,/obj/item/weapon/reagent_containers/food/drinks/bottle/wine,/obj/random/drinkbottle,/obj/random/maintenance/clean,/turf/simulated/floor/plating,/area/maintenance/central) "bDA" = (/turf/simulated/floor/tiled,/area/maintenance/central) "bDB" = (/obj/structure/cable/green{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/turf/simulated/floor/tiled,/area/maintenance/central) -"bDC" = (/obj/machinery/light/small,/mob/living/simple_animal/mouse,/turf/simulated/floor/plating,/area/maintenance/central) +"bDC" = (/obj/machinery/light/small,/mob/living/simple_mob/mouse,/turf/simulated/floor/plating,/area/maintenance/central) "bDD" = (/obj/structure/cable{d1 = 2; d2 = 4; icon_state = "2-4"},/turf/simulated/floor,/area/maintenance/central) "bDE" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0},/turf/simulated/floor,/area/maintenance/central) "bDF" = (/obj/structure/closet,/obj/item/weapon/storage/backpack,/obj/structure/cable{d1 = 1; d2 = 8; icon_state = "1-8"},/obj/random/maintenance/clean,/obj/random/maintenance/cargo,/turf/simulated/floor/plating,/area/maintenance/central) @@ -4542,7 +4542,7 @@ "bJr" = (/turf/simulated/wall/r_wall,/area/quartermaster/miningdock) "bJs" = (/obj/structure/lattice,/obj/machinery/light{dir = 8},/turf/simulated/mineral/floor/ignore_mapgen,/area/quartermaster/miningdock) "bJt" = (/obj/structure/lattice,/obj/machinery/light{dir = 4; icon_state = "tube1"; pixel_x = 0},/turf/simulated/mineral/floor/ignore_mapgen,/area/quartermaster/miningdock) -"bJu" = (/obj/structure/table/rack,/obj/item/weapon/extinguisher,/obj/item/weapon/storage/belt/utility,/obj/item/clothing/mask/gas,/obj/machinery/atmospherics/pipe/simple/hidden/yellow,/mob/living/simple_animal/mouse,/turf/simulated/floor/plating,/area/maintenance/research) +"bJu" = (/obj/structure/table/rack,/obj/item/weapon/extinguisher,/obj/item/weapon/storage/belt/utility,/obj/item/clothing/mask/gas,/obj/machinery/atmospherics/pipe/simple/hidden/yellow,/mob/living/simple_mob/mouse,/turf/simulated/floor/plating,/area/maintenance/research) "bJv" = (/obj/structure/table/rack{dir = 8; layer = 2.9},/obj/item/weapon/tank/oxygen,/obj/item/weapon/tank/oxygen,/obj/item/clothing/mask/breath,/obj/item/clothing/mask/breath,/obj/item/device/flashlight,/obj/item/device/flashlight,/obj/item/weapon/storage/box/lights/mixed,/obj/item/weapon/extinguisher,/obj/random/maintenance/research,/obj/random/maintenance/research,/turf/simulated/floor/plating,/area/maintenance/research) "bJw" = (/obj/structure/table/standard,/obj/item/device/assembly/igniter,/turf/simulated/floor/reinforced,/area/rnd/misc_lab) "bJx" = (/obj/structure/reagent_dispensers/watertank,/obj/machinery/light,/turf/simulated/floor/reinforced,/area/rnd/misc_lab) @@ -4562,7 +4562,7 @@ "bJL" = (/obj/machinery/atmospherics/unary/vent_pump/on{dir = 4},/obj/machinery/light{dir = 8},/turf/simulated/floor/tiled,/area/hallway/primary/central_four) "bJM" = (/obj/structure/grille,/obj/structure/sign/securearea{desc = "A warning sign which reads 'HIGH VOLTAGE'"; icon_state = "shock"; name = "HIGH VOLTAGE"; pixel_y = -32},/obj/structure/cable/green,/obj/machinery/door/firedoor,/obj/structure/window/reinforced/polarized{dir = 8; id = "hop_office"},/obj/structure/window/reinforced/polarized{dir = 2; id = "hop_office"},/obj/structure/window/reinforced/polarized{dir = 4; id = "hop_office"},/turf/simulated/floor/plating,/area/crew_quarters/heads/hop) "bJN" = (/obj/structure/closet/secure_closet/hop,/obj/effect/floor_decal/corner/blue{dir = 9},/obj/item/clothing/glasses/omnihud,/turf/simulated/floor/tiled,/area/crew_quarters/heads/hop) -"bJO" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 6},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 5},/mob/living/simple_animal/corgi/Ian,/turf/simulated/floor/carpet,/area/crew_quarters/heads/hop) +"bJO" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 6},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 5},/mob/living/simple_mob/corgi/Ian,/turf/simulated/floor/carpet,/area/crew_quarters/heads/hop) "bJP" = (/obj/structure/bed/chair/office/dark,/obj/effect/landmark/start{name = "Head of Personnel"},/obj/structure/cable/green{d1 = 1; d2 = 4; icon_state = "1-4"},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/turf/simulated/floor/carpet,/area/crew_quarters/heads/hop) "bJQ" = (/obj/structure/cable/green{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/turf/simulated/floor/carpet,/area/crew_quarters/heads/hop) "bJR" = (/obj/structure/cable/green{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/obj/structure/cable/green{d1 = 2; d2 = 4; icon_state = "2-4"},/turf/simulated/floor/carpet,/area/crew_quarters/heads/hop) @@ -4855,7 +4855,7 @@ "bPs" = (/obj/machinery/computer/aifixer,/obj/effect/floor_decal/corner/purple/full,/obj/machinery/status_display{layer = 4; pixel_x = 0; pixel_y = -32},/turf/simulated/floor/tiled/white,/area/rnd/rdoffice) "bPt" = (/obj/machinery/computer/robotics,/obj/effect/floor_decal/corner/purple{dir = 10},/turf/simulated/floor/tiled/white,/area/rnd/rdoffice) "bPu" = (/obj/machinery/computer/mecha,/obj/effect/floor_decal/corner/purple{dir = 10},/obj/machinery/ai_status_display{pixel_y = -32},/obj/machinery/camera/network/research{c_tag = "SCI - RD's Office"; dir = 1},/turf/simulated/floor/tiled/white,/area/rnd/rdoffice) -"bPv" = (/obj/effect/floor_decal/corner/purple/full{dir = 4},/obj/machinery/alarm{dir = 1; pixel_y = -22},/mob/living/simple_animal/slime/science,/turf/simulated/floor/tiled/white,/area/rnd/rdoffice) +"bPv" = (/obj/effect/floor_decal/corner/purple/full{dir = 4},/obj/machinery/alarm{dir = 1; pixel_y = -22},/mob/living/simple_mob/slime/science,/turf/simulated/floor/tiled/white,/area/rnd/rdoffice) "bPw" = (/obj/structure/table/rack,/obj/item/weapon/rig/hazmat/equipped,/obj/structure/extinguisher_cabinet{pixel_x = 25; pixel_y = 0},/obj/machinery/firealarm{dir = 1; pixel_y = -24},/turf/simulated/floor/tiled/dark,/area/rnd/rdoffice) "bPx" = (/obj/structure/table/standard,/obj/item/device/mmi,/obj/item/device/mmi,/obj/item/device/mmi,/obj/structure/extinguisher_cabinet{pixel_x = -27},/turf/simulated/floor/tiled,/area/assembly/robotics) "bPy" = (/obj/structure/table/standard,/obj/machinery/cell_charger,/obj/item/device/radio/intercom{dir = 4; name = "Station Intercom (General)"; pixel_x = 21},/obj/effect/floor_decal/corner/pink{dir = 4},/turf/simulated/floor/tiled,/area/assembly/robotics) @@ -5307,7 +5307,7 @@ "bYc" = (/turf/simulated/wall,/area/maintenance/medbay_aft) "bYd" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; pixel_y = 0},/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/structure/disposalpipe/segment,/turf/simulated/floor,/area/maintenance/medbay_aft) "bYe" = (/obj/machinery/atmospherics/valve,/turf/simulated/floor/plating,/area/maintenance/medbay_aft) -"bYf" = (/obj/machinery/atmospherics/pipe/simple/hidden/cyan{dir = 6; icon_state = "intact";},/obj/effect/floor_decal/industrial/warning{dir = 8},/mob/living/simple_animal/mouse,/turf/simulated/floor/plating,/area/maintenance/medbay_aft) +"bYf" = (/obj/machinery/atmospherics/pipe/simple/hidden/cyan{dir = 6; icon_state = "intact";},/obj/effect/floor_decal/industrial/warning{dir = 8},/mob/living/simple_mob/mouse,/turf/simulated/floor/plating,/area/maintenance/medbay_aft) "bYg" = (/obj/machinery/atmospherics/pipe/tank/air{dir = 8},/turf/simulated/floor/plating,/area/maintenance/medbay_aft) "bYh" = (/obj/machinery/embedded_controller/radio/simple_docking_controller/escape_pod_berth{frequency = 1380; id_tag = "large_escape_pod_1_berth"; pixel_x = -26; pixel_y = 0; tag_door = "large_escape_pod_1_berth_hatch"},/obj/effect/floor_decal/industrial/warning{dir = 8},/turf/simulated/floor/tiled,/area/hallway/secondary/escape/medical_escape_pod_hallway) "bYi" = (/obj/effect/floor_decal/industrial/warning/corner,/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/machinery/atmospherics/pipe/simple/hidden/yellow,/obj/structure/disposalpipe/segment,/turf/simulated/floor/tiled,/area/hallway/secondary/escape/medical_escape_pod_hallway) @@ -5346,7 +5346,7 @@ "bYP" = (/obj/structure/cable/green{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/structure/disposalpipe/segment,/turf/simulated/floor/tiled,/area/bridge_hallway) "bYQ" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 8},/obj/structure/cable/green{d2 = 2; icon_state = "0-2"},/obj/structure/cable/green,/obj/structure/cable/green{d2 = 8; icon_state = "0-8"},/obj/machinery/door/firedoor,/obj/machinery/door/blast/shutters{dir = 8; id = "cap_office"; layer = 3.1; name = "Captain's Shutters"},/turf/simulated/floor/plating,/area/bridge_hallway) "bYR" = (/obj/structure/bed/chair/comfy/brown{dir = 1},/turf/simulated/floor/carpet,/area/crew_quarters/captain) -"bYS" = (/obj/machinery/atmospherics/pipe/manifold/hidden/supply{dir = 8},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/mob/living/simple_animal/fox/fluff/Renault,/turf/simulated/floor/wood,/area/crew_quarters/captain) +"bYS" = (/obj/machinery/atmospherics/pipe/manifold/hidden/supply{dir = 8},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/mob/living/simple_mob/fox/fluff/Renault,/turf/simulated/floor/wood,/area/crew_quarters/captain) "bYT" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/turf/simulated/floor/wood,/area/crew_quarters/captain) "bYU" = (/obj/machinery/atmospherics/unary/vent_pump/on{dir = 8},/obj/structure/bed/chair{dir = 1},/turf/simulated/floor/wood,/area/crew_quarters/captain) "bYV" = (/obj/structure/filingcabinet,/obj/machinery/light{dir = 4},/turf/simulated/floor/wood,/area/crew_quarters/captain) @@ -6142,7 +6142,7 @@ "cof" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced,/obj/machinery/door/firedoor/border_only,/obj/structure/window/reinforced{dir = 4},/turf/simulated/floor/plating,/area/hallway/primary/central_three) "cog" = (/obj/machinery/atmospherics/unary/vent_pump/on{dir = 4},/obj/machinery/light{dir = 8},/obj/structure/closet/crate/secure{name = "Confiscated Contraband Crate"; req_access = list(19)},/obj/item/stolenpackage,/obj/item/stolenpackage,/obj/item/stolenpackage,/turf/simulated/floor/tiled/dark,/area/security/nuke_storage) "coh" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/turf/simulated/floor/tiled/dark,/area/security/nuke_storage) -"coi" = (/obj/machinery/hologram/holopad,/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 5},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 9},/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"},/mob/living/simple_animal/mouse/brown/Tom,/turf/simulated/floor/tiled/dark,/area/security/nuke_storage) +"coi" = (/obj/machinery/hologram/holopad,/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 5},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 9},/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"},/mob/living/simple_mob/mouse/brown/Tom,/turf/simulated/floor/tiled/dark,/area/security/nuke_storage) "coj" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/turf/simulated/floor/tiled/dark,/area/security/nuke_storage) "cok" = (/obj/machinery/camera/network/command{c_tag = "COM - Vault"; dir = 9},/obj/machinery/atmospherics/unary/vent_scrubber/on{dir = 8},/obj/structure/closet/crate/secure{name = "Platinum Crate"; req_access = list(19)},/obj/fiftyspawner/platinum,/obj/item/weapon/coin/platinum,/obj/item/weapon/coin/platinum,/obj/item/weapon/coin/platinum,/obj/item/weapon/coin/platinum,/obj/item/weapon/coin/platinum,/turf/simulated/floor/tiled/dark,/area/security/nuke_storage) "col" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/structure/disposalpipe/segment,/obj/machinery/door/airlock/maintenance{req_access = list(12)},/turf/simulated/floor,/area/maintenance/medbay_aft) @@ -6787,7 +6787,7 @@ "cAA" = (/obj/structure/cable/green{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/structure/cable/green{d1 = 1; d2 = 4; icon_state = "1-4"},/obj/structure/disposalpipe/segment{dir = 4},/turf/simulated/floor/tiled,/area/quartermaster/storage) "cAB" = (/obj/machinery/door/airlock/glass_mining{name = "Quartermaster"; req_access = list(41)},/obj/machinery/door/firedoor/glass,/obj/structure/cable/green{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/structure/disposalpipe/segment{dir = 4},/turf/simulated/floor/tiled,/area/quartermaster/qm) "cAC" = (/obj/structure/cable/green{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/structure/disposalpipe/segment{dir = 8; icon_state = "pipe-c"},/turf/simulated/floor/tiled,/area/quartermaster/qm) -"cAD" = (/obj/structure/cable/green{d1 = 1; d2 = 8; icon_state = "1-8"},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/structure/cable/green{d1 = 1; d2 = 4; icon_state = "1-4"},/mob/living/simple_animal/fluffy,/turf/simulated/floor/tiled,/area/quartermaster/qm) +"cAD" = (/obj/structure/cable/green{d1 = 1; d2 = 8; icon_state = "1-8"},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/structure/cable/green{d1 = 1; d2 = 4; icon_state = "1-4"},/mob/living/simple_mob/fluffy,/turf/simulated/floor/tiled,/area/quartermaster/qm) "cAE" = (/obj/structure/table/standard,/obj/item/weapon/clipboard,/obj/structure/cable/green{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/item/weapon/stamp/qm,/turf/simulated/floor/tiled,/area/quartermaster/qm) "cAF" = (/obj/structure/cable/green{d1 = 2; d2 = 8; icon_state = "2-8"},/turf/simulated/floor/tiled,/area/quartermaster/qm) "cAG" = (/obj/machinery/computer/security/mining,/turf/simulated/floor/tiled,/area/quartermaster/qm) diff --git a/maps/virgo/virgo-2.dmm b/maps/virgo/virgo-2.dmm index 9e956a10a1..ea70471df2 100644 --- a/maps/virgo/virgo-2.dmm +++ b/maps/virgo/virgo-2.dmm @@ -646,7 +646,7 @@ "amv" = (/obj/machinery/vending/snack{name = "hacked Getmore Chocolate Corp"; prices = list()},/turf/simulated/shuttle/floor/black,/area/shuttle/trade/centcom) "amw" = (/obj/machinery/light{dir = 8; icon_state = "tube1"; pixel_y = 0},/turf/simulated/shuttle/floor/black,/area/shuttle/trade/centcom) "amx" = (/obj/structure/frame/computer,/turf/simulated/shuttle/floor/black,/area/shuttle/trade/centcom) -"amy" = (/obj/machinery/light{dir = 4},/obj/structure/sign/kiddieplaque{desc = "A plaque commemorating the construction of the cargo ship Beruang."; name = "Beruang"; pixel_x = 32},/mob/living/simple_animal/corgi/tamaskan/spice,/turf/simulated/shuttle/floor/darkred,/area/shuttle/trade/centcom) +"amy" = (/obj/machinery/light{dir = 4},/obj/structure/sign/kiddieplaque{desc = "A plaque commemorating the construction of the cargo ship Beruang."; name = "Beruang"; pixel_x = 32},/mob/living/simple_mob/corgi/tamaskan/spice,/turf/simulated/shuttle/floor/darkred,/area/shuttle/trade/centcom) "amz" = (/obj/effect/step_trigger/thrower{affect_ghosts = 1; direction = 2; name = "thrower_throwdown"; tiles = 0},/turf/space/transit/north/shuttlespace_ns13,/area/space) "amA" = (/obj/effect/step_trigger/thrower{affect_ghosts = 1; direction = 4; name = "thrower_escapeshuttletop(right)"; tiles = 0},/turf/space/transit/north/shuttlespace_ns2,/area/space) "amB" = (/turf/unsimulated/floor{icon = 'icons/turf/snow.dmi'; icon_state = "snow"},/area/syndicate_mothership) @@ -1205,7 +1205,7 @@ "axi" = (/turf/simulated/shuttle/floor/black,/area/shuttle/administration/centcom) "axj" = (/obj/machinery/recharge_station,/turf/simulated/shuttle/floor/black,/area/shuttle/administration/centcom) "axk" = (/obj/machinery/door/airlock/external{frequency = 1380; icon_state = "door_locked"; id_tag = "specops_shuttle_fore_hatch"; locked = 1; name = "Forward Docking Hatch"; req_access = list(13)},/turf/simulated/shuttle/plating,/area/shuttle/specops/centcom) -"axl" = (/obj/effect/floor_decal/corner/blue/diagonal{dir = 4},/obj/effect/floor_decal/corner/red/diagonal,/mob/living/simple_animal/corgi/puppy{name = "Bockscar"},/turf/unsimulated/floor{icon_state = "steel"},/area/centcom/specops) +"axl" = (/obj/effect/floor_decal/corner/blue/diagonal{dir = 4},/obj/effect/floor_decal/corner/red/diagonal,/mob/living/simple_mob/corgi/puppy{name = "Bockscar"},/turf/unsimulated/floor{icon_state = "steel"},/area/centcom/specops) "axm" = (/obj/structure/table/reinforced,/obj/machinery/recharger{pixel_y = 4},/turf/simulated/shuttle/floor/black,/area/shuttle/administration/centcom) "axn" = (/obj/machinery/flasher{id = "syndieflash"; pixel_x = 0; pixel_y = 28},/obj/machinery/light/small{dir = 1},/turf/simulated/shuttle/floor/black,/area/syndicate_station/start) "axo" = (/obj/structure/toilet{dir = 4},/turf/simulated/shuttle/floor/black,/area/syndicate_station/start) @@ -1305,7 +1305,7 @@ "aze" = (/obj/machinery/embedded_controller/radio/simple_docking_controller{frequency = 1380; id_tag = "admin_shuttle"; pixel_x = -25; pixel_y = -4; req_one_access = list(101); tag_door = "admin_shuttle_hatch"},/obj/machinery/airlock_sensor{pixel_x = -24; pixel_y = 6},/turf/simulated/floor/plating,/area/shuttle/administration/centcom) "azf" = (/obj/machinery/light/small{dir = 4; pixel_y = 0},/turf/simulated/floor/plating,/area/shuttle/administration/centcom) "azg" = (/obj/machinery/button/remote/blast_door{id = "smindicate"; name = "ship lockdown control"; pixel_x = -25},/turf/simulated/shuttle/floor/darkred,/area/syndicate_station/start) -"azh" = (/mob/living/simple_animal/cat/kitten{name = "Enola"},/turf/simulated/shuttle/floor/darkred,/area/syndicate_station/start) +"azh" = (/mob/living/simple_mob/cat/kitten{name = "Enola"},/turf/simulated/shuttle/floor/darkred,/area/syndicate_station/start) "azi" = (/obj/machinery/atmospherics/pipe/tank/air{dir = 4; start_pressure = 740.5},/turf/simulated/shuttle/floor/darkred,/area/syndicate_station/start) "azj" = (/obj/machinery/access_button{command = "cycle_interior"; frequency = 1331; master_tag = "merc_shuttle"; name = "interior access button"; pixel_x = 25; pixel_y = 25; req_access = list(150)},/obj/machinery/atmospherics/pipe/simple/visible{icon_state = "intact"; dir = 9},/turf/simulated/shuttle/floor/darkred,/area/syndicate_station/start) "azk" = (/obj/machinery/atmospherics/pipe/simple/visible{dir = 4},/obj/machinery/meter,/turf/simulated/shuttle/floor/darkred,/area/syndicate_station/start) @@ -2458,7 +2458,7 @@ "aVn" = (/obj/structure/reagent_dispensers/watertank,/obj/machinery/light/small{dir = 4},/turf/simulated/shuttle/plating,/area/space) "aVo" = (/obj/machinery/door/airlock/hatch{req_access = list(150)},/turf/simulated/shuttle/floor/red,/area/space) "aVp" = (/obj/structure/table/rack,/obj/item/clothing/shoes/magboots,/obj/item/clothing/suit/space/syndicate/black/engie,/obj/item/clothing/mask/breath,/obj/item/clothing/head/helmet/space/syndicate/black/engie,/obj/machinery/light/small{dir = 8},/turf/simulated/shuttle/plating,/area/space) -"aVq" = (/mob/living/simple_animal/crab/Coffee,/turf/unsimulated/beach/sand,/area/centcom/evac) +"aVq" = (/mob/living/simple_mob/crab/Coffee,/turf/unsimulated/beach/sand,/area/centcom/evac) "aVr" = (/obj/item/robot_parts/head,/turf/simulated/shuttle/plating,/area/space) "aVs" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 8},/obj/machinery/door/blast/regular{id = "skipjackshutters"; name = "Skipjack Blast Shielding"},/turf/simulated/shuttle/plating,/area/space) "aVt" = (/obj/item/robot_parts/l_leg,/turf/simulated/shuttle/plating,/area/space) @@ -2621,7 +2621,7 @@ "aZM" = (/obj/machinery/media/jukebox,/turf/unsimulated/floor{dir = 8; icon_state = "wood"},/area/wizard_station) "aZN" = (/obj/machinery/vending/hydronutrients,/turf/unsimulated/floor{icon_state = "grass0"; name = "grass"},/area/wizard_station) "aZO" = (/obj/structure/closet{icon_closed = "cabinet_closed"; icon_opened = "cabinet_open"; icon_state = "cabinet_closed"},/obj/item/clothing/under/psysuit,/obj/item/clothing/suit/wizrobe/psypurple,/obj/item/clothing/head/wizard/amp,/turf/unsimulated/floor{icon_state = "vault"; dir = 5},/area/wizard_station) -"aZP" = (/mob/living/simple_animal/mouse/gray{desc = "He looks kingly."; name = "Arthur"},/turf/unsimulated/floor{icon_state = "dark"},/area/wizard_station) +"aZP" = (/mob/living/simple_mob/mouse/gray{desc = "He looks kingly."; name = "Arthur"},/turf/unsimulated/floor{icon_state = "dark"},/area/wizard_station) "aZQ" = (/obj/structure/flora/pottedplant{icon_state = "plant-24"},/turf/unsimulated/floor{icon_state = "dark"},/area/wizard_station) "aZY" = (/obj/machinery/photocopier,/turf/unsimulated/floor{dir = 8; icon_state = "wood"},/area/wizard_station) "aZZ" = (/obj/structure/bookcase,/turf/unsimulated/floor{dir = 8; icon_state = "wood"},/area/wizard_station) diff --git a/maps/~map_system/maps.dm b/maps/~map_system/maps.dm index 0ecd7fbfdb..4ba9d3d03b 100644 --- a/maps/~map_system/maps.dm +++ b/maps/~map_system/maps.dm @@ -140,7 +140,7 @@ var/list/all_maps = list() /datum/map/proc/get_empty_zlevel() if(empty_levels == null) - world.maxz++ + world.increment_max_z() empty_levels = list(world.maxz) return pick(empty_levels) diff --git a/nano/images/nanomap_z1.png b/nano/images/nanomap_z1.png index 10dc0a5ff3..bd90787837 100644 Binary files a/nano/images/nanomap_z1.png and b/nano/images/nanomap_z1.png differ diff --git a/nano/images/nanomap_z2.png b/nano/images/nanomap_z2.png index babe33e4f1..2d44730ab1 100644 Binary files a/nano/images/nanomap_z2.png and b/nano/images/nanomap_z2.png differ diff --git a/nano/images/nanomap_z3.png b/nano/images/nanomap_z3.png index 1b8991eb26..bd452dc67a 100644 Binary files a/nano/images/nanomap_z3.png and b/nano/images/nanomap_z3.png differ diff --git a/nano/images/nanomap_z5.png b/nano/images/nanomap_z5.png index ede2cb688e..06c7872a0a 100644 Binary files a/nano/images/nanomap_z5.png and b/nano/images/nanomap_z5.png differ diff --git a/sound/effects/break_stone.ogg b/sound/effects/break_stone.ogg new file mode 100644 index 0000000000..711fd50d48 Binary files /dev/null and b/sound/effects/break_stone.ogg differ diff --git a/sound/effects/footstep/asteroid1.ogg b/sound/effects/footstep/asteroid1.ogg new file mode 100644 index 0000000000..1cb215dc78 Binary files /dev/null and b/sound/effects/footstep/asteroid1.ogg differ diff --git a/sound/effects/footstep/asteroid2.ogg b/sound/effects/footstep/asteroid2.ogg new file mode 100644 index 0000000000..331d0ef241 Binary files /dev/null and b/sound/effects/footstep/asteroid2.ogg differ diff --git a/sound/effects/footstep/asteroid3.ogg b/sound/effects/footstep/asteroid3.ogg new file mode 100644 index 0000000000..90fbf251a0 Binary files /dev/null and b/sound/effects/footstep/asteroid3.ogg differ diff --git a/sound/effects/footstep/asteroid4.ogg b/sound/effects/footstep/asteroid4.ogg new file mode 100644 index 0000000000..186ff17a43 Binary files /dev/null and b/sound/effects/footstep/asteroid4.ogg differ diff --git a/sound/effects/footstep/asteroid5.ogg b/sound/effects/footstep/asteroid5.ogg new file mode 100644 index 0000000000..0ea4c962d0 Binary files /dev/null and b/sound/effects/footstep/asteroid5.ogg differ diff --git a/sound/effects/footstep/grass1.ogg b/sound/effects/footstep/grass1.ogg new file mode 100644 index 0000000000..357547cd77 Binary files /dev/null and b/sound/effects/footstep/grass1.ogg differ diff --git a/sound/effects/footstep/grass2.ogg b/sound/effects/footstep/grass2.ogg new file mode 100644 index 0000000000..75bf8657e8 Binary files /dev/null and b/sound/effects/footstep/grass2.ogg differ diff --git a/sound/effects/footstep/grass3.ogg b/sound/effects/footstep/grass3.ogg new file mode 100644 index 0000000000..04f82872b1 Binary files /dev/null and b/sound/effects/footstep/grass3.ogg differ diff --git a/sound/effects/footstep/grass4.ogg b/sound/effects/footstep/grass4.ogg new file mode 100644 index 0000000000..6d736f2fb2 Binary files /dev/null and b/sound/effects/footstep/grass4.ogg differ diff --git a/sound/effects/footstep/lava1.ogg b/sound/effects/footstep/lava1.ogg new file mode 100644 index 0000000000..e26dbaf8bd Binary files /dev/null and b/sound/effects/footstep/lava1.ogg differ diff --git a/sound/effects/footstep/lava2.ogg b/sound/effects/footstep/lava2.ogg new file mode 100644 index 0000000000..90b73f840b Binary files /dev/null and b/sound/effects/footstep/lava2.ogg differ diff --git a/sound/effects/footstep/lava3.ogg b/sound/effects/footstep/lava3.ogg new file mode 100644 index 0000000000..3436381510 Binary files /dev/null and b/sound/effects/footstep/lava3.ogg differ diff --git a/sound/effects/footstep/water1.ogg b/sound/effects/footstep/water1.ogg new file mode 100644 index 0000000000..f22cbf2848 Binary files /dev/null and b/sound/effects/footstep/water1.ogg differ diff --git a/sound/effects/footstep/water2.ogg b/sound/effects/footstep/water2.ogg new file mode 100644 index 0000000000..e2a47650c6 Binary files /dev/null and b/sound/effects/footstep/water2.ogg differ diff --git a/sound/effects/footstep/water3.ogg b/sound/effects/footstep/water3.ogg new file mode 100644 index 0000000000..97ce152a5c Binary files /dev/null and b/sound/effects/footstep/water3.ogg differ diff --git a/sound/effects/footstep/water4.ogg b/sound/effects/footstep/water4.ogg new file mode 100644 index 0000000000..5778a52560 Binary files /dev/null and b/sound/effects/footstep/water4.ogg differ diff --git a/sound/effects/servostep.ogg b/sound/effects/servostep.ogg new file mode 100644 index 0000000000..9999b99ccb Binary files /dev/null and b/sound/effects/servostep.ogg differ diff --git a/sound/effects/suitstep1.ogg b/sound/effects/suitstep1.ogg new file mode 100644 index 0000000000..fdc56bb9e4 Binary files /dev/null and b/sound/effects/suitstep1.ogg differ diff --git a/sound/effects/suitstep2.ogg b/sound/effects/suitstep2.ogg new file mode 100644 index 0000000000..17a528feeb Binary files /dev/null and b/sound/effects/suitstep2.ogg differ diff --git a/sound/effects/tones/440_sine_01.ogg b/sound/effects/tones/440_sine_01.ogg new file mode 100644 index 0000000000..2ceca22e12 Binary files /dev/null and b/sound/effects/tones/440_sine_01.ogg differ diff --git a/sound/effects/tones/440_sine_02.ogg b/sound/effects/tones/440_sine_02.ogg new file mode 100644 index 0000000000..88e8a0009e Binary files /dev/null and b/sound/effects/tones/440_sine_02.ogg differ diff --git a/sound/effects/tones/440_sine_03.ogg b/sound/effects/tones/440_sine_03.ogg new file mode 100644 index 0000000000..cfeb52bbd4 Binary files /dev/null and b/sound/effects/tones/440_sine_03.ogg differ diff --git a/sound/effects/tones/440_sine_06.ogg b/sound/effects/tones/440_sine_06.ogg new file mode 100644 index 0000000000..97c7d5a0eb Binary files /dev/null and b/sound/effects/tones/440_sine_06.ogg differ diff --git a/sound/effects/weather/acidrain_end.ogg b/sound/effects/weather/acidrain_end.ogg new file mode 100644 index 0000000000..75fb4aaf8d Binary files /dev/null and b/sound/effects/weather/acidrain_end.ogg differ diff --git a/sound/effects/weather/acidrain_mid.ogg b/sound/effects/weather/acidrain_mid.ogg new file mode 100644 index 0000000000..03d4812355 Binary files /dev/null and b/sound/effects/weather/acidrain_mid.ogg differ diff --git a/sound/effects/weather/acidrain_start.ogg b/sound/effects/weather/acidrain_start.ogg new file mode 100644 index 0000000000..48f365d9df Binary files /dev/null and b/sound/effects/weather/acidrain_start.ogg differ diff --git a/sound/effects/weather/snowstorm/inside/active_end.ogg b/sound/effects/weather/snowstorm/inside/active_end.ogg new file mode 100644 index 0000000000..959bf5773e Binary files /dev/null and b/sound/effects/weather/snowstorm/inside/active_end.ogg differ diff --git a/sound/effects/weather/snowstorm/inside/active_mid1.ogg b/sound/effects/weather/snowstorm/inside/active_mid1.ogg new file mode 100644 index 0000000000..95244cd2b7 Binary files /dev/null and b/sound/effects/weather/snowstorm/inside/active_mid1.ogg differ diff --git a/sound/effects/weather/snowstorm/inside/active_mid2.ogg b/sound/effects/weather/snowstorm/inside/active_mid2.ogg new file mode 100644 index 0000000000..a45584b9f3 Binary files /dev/null and b/sound/effects/weather/snowstorm/inside/active_mid2.ogg differ diff --git a/sound/effects/weather/snowstorm/inside/active_mid3.ogg b/sound/effects/weather/snowstorm/inside/active_mid3.ogg new file mode 100644 index 0000000000..be2e672fa0 Binary files /dev/null and b/sound/effects/weather/snowstorm/inside/active_mid3.ogg differ diff --git a/sound/effects/weather/snowstorm/inside/active_start.ogg b/sound/effects/weather/snowstorm/inside/active_start.ogg new file mode 100644 index 0000000000..3efab12ef2 Binary files /dev/null and b/sound/effects/weather/snowstorm/inside/active_start.ogg differ diff --git a/sound/effects/weather/snowstorm/inside/weak_end.ogg b/sound/effects/weather/snowstorm/inside/weak_end.ogg new file mode 100644 index 0000000000..416b75a9b8 Binary files /dev/null and b/sound/effects/weather/snowstorm/inside/weak_end.ogg differ diff --git a/sound/effects/weather/snowstorm/inside/weak_mid1.ogg b/sound/effects/weather/snowstorm/inside/weak_mid1.ogg new file mode 100644 index 0000000000..d3211c6b5f Binary files /dev/null and b/sound/effects/weather/snowstorm/inside/weak_mid1.ogg differ diff --git a/sound/effects/weather/snowstorm/inside/weak_mid2.ogg b/sound/effects/weather/snowstorm/inside/weak_mid2.ogg new file mode 100644 index 0000000000..b6491a7afb Binary files /dev/null and b/sound/effects/weather/snowstorm/inside/weak_mid2.ogg differ diff --git a/sound/effects/weather/snowstorm/inside/weak_mid3.ogg b/sound/effects/weather/snowstorm/inside/weak_mid3.ogg new file mode 100644 index 0000000000..95238c72d4 Binary files /dev/null and b/sound/effects/weather/snowstorm/inside/weak_mid3.ogg differ diff --git a/sound/effects/weather/snowstorm/inside/weak_start.ogg b/sound/effects/weather/snowstorm/inside/weak_start.ogg new file mode 100644 index 0000000000..59abf1937d Binary files /dev/null and b/sound/effects/weather/snowstorm/inside/weak_start.ogg differ diff --git a/sound/effects/weather/snowstorm/outside/active_end.ogg b/sound/effects/weather/snowstorm/outside/active_end.ogg new file mode 100644 index 0000000000..95149d846c Binary files /dev/null and b/sound/effects/weather/snowstorm/outside/active_end.ogg differ diff --git a/sound/effects/weather/snowstorm/outside/active_mid1.ogg b/sound/effects/weather/snowstorm/outside/active_mid1.ogg new file mode 100644 index 0000000000..189528ab56 Binary files /dev/null and b/sound/effects/weather/snowstorm/outside/active_mid1.ogg differ diff --git a/sound/effects/weather/snowstorm/outside/active_mid2.ogg b/sound/effects/weather/snowstorm/outside/active_mid2.ogg new file mode 100644 index 0000000000..92317f2e0a Binary files /dev/null and b/sound/effects/weather/snowstorm/outside/active_mid2.ogg differ diff --git a/sound/effects/weather/snowstorm/outside/active_mid3.ogg b/sound/effects/weather/snowstorm/outside/active_mid3.ogg new file mode 100644 index 0000000000..34846bfd42 Binary files /dev/null and b/sound/effects/weather/snowstorm/outside/active_mid3.ogg differ diff --git a/sound/effects/weather/snowstorm/outside/active_start.ogg b/sound/effects/weather/snowstorm/outside/active_start.ogg new file mode 100644 index 0000000000..8b3acf1a15 Binary files /dev/null and b/sound/effects/weather/snowstorm/outside/active_start.ogg differ diff --git a/sound/effects/weather/snowstorm/outside/weak_end.ogg b/sound/effects/weather/snowstorm/outside/weak_end.ogg new file mode 100644 index 0000000000..55db2fc356 Binary files /dev/null and b/sound/effects/weather/snowstorm/outside/weak_end.ogg differ diff --git a/sound/effects/weather/snowstorm/outside/weak_mid1.ogg b/sound/effects/weather/snowstorm/outside/weak_mid1.ogg new file mode 100644 index 0000000000..56faa9ad26 Binary files /dev/null and b/sound/effects/weather/snowstorm/outside/weak_mid1.ogg differ diff --git a/sound/effects/weather/snowstorm/outside/weak_mid2.ogg b/sound/effects/weather/snowstorm/outside/weak_mid2.ogg new file mode 100644 index 0000000000..0c836ad220 Binary files /dev/null and b/sound/effects/weather/snowstorm/outside/weak_mid2.ogg differ diff --git a/sound/effects/weather/snowstorm/outside/weak_mid3.ogg b/sound/effects/weather/snowstorm/outside/weak_mid3.ogg new file mode 100644 index 0000000000..f2cbfb0f4b Binary files /dev/null and b/sound/effects/weather/snowstorm/outside/weak_mid3.ogg differ diff --git a/sound/effects/weather/snowstorm/outside/weak_start.ogg b/sound/effects/weather/snowstorm/outside/weak_start.ogg new file mode 100644 index 0000000000..1ac59c36f0 Binary files /dev/null and b/sound/effects/weather/snowstorm/outside/weak_start.ogg differ diff --git a/sound/effects/wind/wind_2_1.ogg b/sound/effects/weather/wind/wind_2_1.ogg similarity index 100% rename from sound/effects/wind/wind_2_1.ogg rename to sound/effects/weather/wind/wind_2_1.ogg diff --git a/sound/effects/wind/wind_2_2.ogg b/sound/effects/weather/wind/wind_2_2.ogg similarity index 100% rename from sound/effects/wind/wind_2_2.ogg rename to sound/effects/weather/wind/wind_2_2.ogg diff --git a/sound/effects/wind/wind_3_1.ogg b/sound/effects/weather/wind/wind_3_1.ogg similarity index 100% rename from sound/effects/wind/wind_3_1.ogg rename to sound/effects/weather/wind/wind_3_1.ogg diff --git a/sound/effects/wind/wind_4_1.ogg b/sound/effects/weather/wind/wind_4_1.ogg similarity index 100% rename from sound/effects/wind/wind_4_1.ogg rename to sound/effects/weather/wind/wind_4_1.ogg diff --git a/sound/effects/wind/wind_4_2.ogg b/sound/effects/weather/wind/wind_4_2.ogg similarity index 100% rename from sound/effects/wind/wind_4_2.ogg rename to sound/effects/weather/wind/wind_4_2.ogg diff --git a/sound/effects/wind/wind_5_1.ogg b/sound/effects/weather/wind/wind_5_1.ogg similarity index 100% rename from sound/effects/wind/wind_5_1.ogg rename to sound/effects/weather/wind/wind_5_1.ogg diff --git a/sound/items/amulanceweeoo.ogg b/sound/items/amulanceweeoo.ogg new file mode 100644 index 0000000000..cd8835deca Binary files /dev/null and b/sound/items/amulanceweeoo.ogg differ diff --git a/sound/items/geiger/ext1.ogg b/sound/items/geiger/ext1.ogg new file mode 100644 index 0000000000..ca1b44e4d8 Binary files /dev/null and b/sound/items/geiger/ext1.ogg differ diff --git a/sound/items/geiger/ext2.ogg b/sound/items/geiger/ext2.ogg new file mode 100644 index 0000000000..c0c316245b Binary files /dev/null and b/sound/items/geiger/ext2.ogg differ diff --git a/sound/items/geiger/ext3.ogg b/sound/items/geiger/ext3.ogg new file mode 100644 index 0000000000..fc367d9466 Binary files /dev/null and b/sound/items/geiger/ext3.ogg differ diff --git a/sound/items/geiger/ext4.ogg b/sound/items/geiger/ext4.ogg new file mode 100644 index 0000000000..d3b00ebaac Binary files /dev/null and b/sound/items/geiger/ext4.ogg differ diff --git a/sound/items/geiger/high1.ogg b/sound/items/geiger/high1.ogg new file mode 100644 index 0000000000..8725affdd4 Binary files /dev/null and b/sound/items/geiger/high1.ogg differ diff --git a/sound/items/geiger/high2.ogg b/sound/items/geiger/high2.ogg new file mode 100644 index 0000000000..f1e3868898 Binary files /dev/null and b/sound/items/geiger/high2.ogg differ diff --git a/sound/items/geiger/high3.ogg b/sound/items/geiger/high3.ogg new file mode 100644 index 0000000000..bdc5282a5c Binary files /dev/null and b/sound/items/geiger/high3.ogg differ diff --git a/sound/items/geiger/high4.ogg b/sound/items/geiger/high4.ogg new file mode 100644 index 0000000000..8e185d6f78 Binary files /dev/null and b/sound/items/geiger/high4.ogg differ diff --git a/sound/items/geiger/low1.ogg b/sound/items/geiger/low1.ogg new file mode 100644 index 0000000000..9bdb8bd327 Binary files /dev/null and b/sound/items/geiger/low1.ogg differ diff --git a/sound/items/geiger/low2.ogg b/sound/items/geiger/low2.ogg new file mode 100644 index 0000000000..ce4855f25f Binary files /dev/null and b/sound/items/geiger/low2.ogg differ diff --git a/sound/items/geiger/low3.ogg b/sound/items/geiger/low3.ogg new file mode 100644 index 0000000000..70aaea064f Binary files /dev/null and b/sound/items/geiger/low3.ogg differ diff --git a/sound/items/geiger/low4.ogg b/sound/items/geiger/low4.ogg new file mode 100644 index 0000000000..f36e3b7699 Binary files /dev/null and b/sound/items/geiger/low4.ogg differ diff --git a/sound/items/geiger/med1.ogg b/sound/items/geiger/med1.ogg new file mode 100644 index 0000000000..c062c4d2a8 Binary files /dev/null and b/sound/items/geiger/med1.ogg differ diff --git a/sound/items/geiger/med2.ogg b/sound/items/geiger/med2.ogg new file mode 100644 index 0000000000..210119a287 Binary files /dev/null and b/sound/items/geiger/med2.ogg differ diff --git a/sound/items/geiger/med3.ogg b/sound/items/geiger/med3.ogg new file mode 100644 index 0000000000..ed6f0f4d7f Binary files /dev/null and b/sound/items/geiger/med3.ogg differ diff --git a/sound/items/geiger/med4.ogg b/sound/items/geiger/med4.ogg new file mode 100644 index 0000000000..70635a97a3 Binary files /dev/null and b/sound/items/geiger/med4.ogg differ diff --git a/sound/items/geiger1.ogg b/sound/items/geiger1.ogg deleted file mode 100644 index b822085659..0000000000 Binary files a/sound/items/geiger1.ogg and /dev/null differ diff --git a/sound/items/geiger2.ogg b/sound/items/geiger2.ogg deleted file mode 100644 index 4c0d734463..0000000000 Binary files a/sound/items/geiger2.ogg and /dev/null differ diff --git a/sound/items/geiger3.ogg b/sound/items/geiger3.ogg deleted file mode 100644 index a9a5924d80..0000000000 Binary files a/sound/items/geiger3.ogg and /dev/null differ diff --git a/sound/items/geiger4.ogg b/sound/items/geiger4.ogg deleted file mode 100644 index dfad69866c..0000000000 Binary files a/sound/items/geiger4.ogg and /dev/null differ diff --git a/sound/items/geiger5.ogg b/sound/items/geiger5.ogg deleted file mode 100644 index 1e5f20913c..0000000000 Binary files a/sound/items/geiger5.ogg and /dev/null differ diff --git a/sound/items/geiger_weak1.ogg b/sound/items/geiger_weak1.ogg deleted file mode 100644 index cadfcde746..0000000000 Binary files a/sound/items/geiger_weak1.ogg and /dev/null differ diff --git a/sound/items/geiger_weak2.ogg b/sound/items/geiger_weak2.ogg deleted file mode 100644 index 12f54ae669..0000000000 Binary files a/sound/items/geiger_weak2.ogg and /dev/null differ diff --git a/sound/items/geiger_weak3.ogg b/sound/items/geiger_weak3.ogg deleted file mode 100644 index c935711aac..0000000000 Binary files a/sound/items/geiger_weak3.ogg and /dev/null differ diff --git a/sound/items/geiger_weak4.ogg b/sound/items/geiger_weak4.ogg deleted file mode 100644 index 2b17311a82..0000000000 Binary files a/sound/items/geiger_weak4.ogg and /dev/null differ diff --git a/sound/machines/beep.ogg b/sound/machines/beep.ogg new file mode 100644 index 0000000000..faca0771e0 Binary files /dev/null and b/sound/machines/beep.ogg differ diff --git a/sound/machines/fryer/deep_fryer_1.ogg b/sound/machines/fryer/deep_fryer_1.ogg new file mode 100644 index 0000000000..7b726c9de6 Binary files /dev/null and b/sound/machines/fryer/deep_fryer_1.ogg differ diff --git a/sound/machines/fryer/deep_fryer_2.ogg b/sound/machines/fryer/deep_fryer_2.ogg new file mode 100644 index 0000000000..4bd4be7d77 Binary files /dev/null and b/sound/machines/fryer/deep_fryer_2.ogg differ diff --git a/sound/machines/fryer/deep_fryer_emerge.ogg b/sound/machines/fryer/deep_fryer_emerge.ogg new file mode 100644 index 0000000000..a803dd4c67 Binary files /dev/null and b/sound/machines/fryer/deep_fryer_emerge.ogg differ diff --git a/sound/machines/fryer/deep_fryer_immerse.ogg b/sound/machines/fryer/deep_fryer_immerse.ogg new file mode 100644 index 0000000000..3c06b865ca Binary files /dev/null and b/sound/machines/fryer/deep_fryer_immerse.ogg differ diff --git a/sound/machines/generator/generator_end.ogg b/sound/machines/generator/generator_end.ogg new file mode 100644 index 0000000000..4397991167 Binary files /dev/null and b/sound/machines/generator/generator_end.ogg differ diff --git a/sound/machines/generator/generator_mid1.ogg b/sound/machines/generator/generator_mid1.ogg new file mode 100644 index 0000000000..10a0d01a7e Binary files /dev/null and b/sound/machines/generator/generator_mid1.ogg differ diff --git a/sound/machines/generator/generator_mid2.ogg b/sound/machines/generator/generator_mid2.ogg new file mode 100644 index 0000000000..77656772cc Binary files /dev/null and b/sound/machines/generator/generator_mid2.ogg differ diff --git a/sound/machines/generator/generator_mid3.ogg b/sound/machines/generator/generator_mid3.ogg new file mode 100644 index 0000000000..812a10e6fc Binary files /dev/null and b/sound/machines/generator/generator_mid3.ogg differ diff --git a/sound/machines/generator/generator_start.ogg b/sound/machines/generator/generator_start.ogg new file mode 100644 index 0000000000..53f734388e Binary files /dev/null and b/sound/machines/generator/generator_start.ogg differ diff --git a/sound/machines/microwave/microwave-end.ogg b/sound/machines/microwave/microwave-end.ogg new file mode 100644 index 0000000000..1c13d87e17 Binary files /dev/null and b/sound/machines/microwave/microwave-end.ogg differ diff --git a/sound/machines/microwave/microwave-mid1.ogg b/sound/machines/microwave/microwave-mid1.ogg new file mode 100644 index 0000000000..60a0cc8ec5 Binary files /dev/null and b/sound/machines/microwave/microwave-mid1.ogg differ diff --git a/sound/machines/microwave/microwave-mid2.ogg b/sound/machines/microwave/microwave-mid2.ogg new file mode 100644 index 0000000000..3b3dd32c28 Binary files /dev/null and b/sound/machines/microwave/microwave-mid2.ogg differ diff --git a/sound/machines/microwave/microwave-start.ogg b/sound/machines/microwave/microwave-start.ogg new file mode 100644 index 0000000000..5e59c78e8a Binary files /dev/null and b/sound/machines/microwave/microwave-start.ogg differ diff --git a/sound/machines/shower/shower_end.ogg b/sound/machines/shower/shower_end.ogg new file mode 100644 index 0000000000..80b93af39e Binary files /dev/null and b/sound/machines/shower/shower_end.ogg differ diff --git a/sound/machines/shower/shower_mid1.ogg b/sound/machines/shower/shower_mid1.ogg new file mode 100644 index 0000000000..e1ae5a0c45 Binary files /dev/null and b/sound/machines/shower/shower_mid1.ogg differ diff --git a/sound/machines/shower/shower_mid2.ogg b/sound/machines/shower/shower_mid2.ogg new file mode 100644 index 0000000000..4a54acd352 Binary files /dev/null and b/sound/machines/shower/shower_mid2.ogg differ diff --git a/sound/machines/shower/shower_mid3.ogg b/sound/machines/shower/shower_mid3.ogg new file mode 100644 index 0000000000..8b4776a9b9 Binary files /dev/null and b/sound/machines/shower/shower_mid3.ogg differ diff --git a/sound/machines/shower/shower_start.ogg b/sound/machines/shower/shower_start.ogg new file mode 100644 index 0000000000..e5529f401b Binary files /dev/null and b/sound/machines/shower/shower_start.ogg differ diff --git a/sound/machines/sm/supermatter1.ogg b/sound/machines/sm/supermatter1.ogg new file mode 100644 index 0000000000..1860e78800 Binary files /dev/null and b/sound/machines/sm/supermatter1.ogg differ diff --git a/sound/machines/sm/supermatter2.ogg b/sound/machines/sm/supermatter2.ogg new file mode 100644 index 0000000000..fb2d39fe26 Binary files /dev/null and b/sound/machines/sm/supermatter2.ogg differ diff --git a/sound/machines/sm/supermatter3.ogg b/sound/machines/sm/supermatter3.ogg new file mode 100644 index 0000000000..93ac3d505b Binary files /dev/null and b/sound/machines/sm/supermatter3.ogg differ diff --git a/sound/weapons/Gunshot.ogg b/sound/weapons/Gunshot1.ogg similarity index 100% rename from sound/weapons/Gunshot.ogg rename to sound/weapons/Gunshot1.ogg diff --git a/sound/weapons/svd_shot.ogg b/sound/weapons/Gunshot_SVD.ogg similarity index 100% rename from sound/weapons/svd_shot.ogg rename to sound/weapons/Gunshot_SVD.ogg diff --git a/sound/weapons/cannon.ogg b/sound/weapons/Gunshot_cannon.ogg similarity index 100% rename from sound/weapons/cannon.ogg rename to sound/weapons/Gunshot_cannon.ogg diff --git a/sound/weapons/deagle.ogg b/sound/weapons/Gunshot_deagle.ogg similarity index 100% rename from sound/weapons/deagle.ogg rename to sound/weapons/Gunshot_deagle.ogg diff --git a/sound/weapons/gunshot/gunshot2.ogg b/sound/weapons/Gunshot_generic_rifle.ogg similarity index 100% rename from sound/weapons/gunshot/gunshot2.ogg rename to sound/weapons/Gunshot_generic_rifle.ogg diff --git a/sound/weapons/gunshot/gunshot3.ogg b/sound/weapons/Gunshot_machinegun.ogg similarity index 100% rename from sound/weapons/gunshot/gunshot3.ogg rename to sound/weapons/Gunshot_machinegun.ogg diff --git a/sound/weapons/gunshot/shotgun.ogg b/sound/weapons/Gunshot_shotgun.ogg similarity index 100% rename from sound/weapons/gunshot/shotgun.ogg rename to sound/weapons/Gunshot_shotgun.ogg diff --git a/sound/weapons/gunshot/sniper.ogg b/sound/weapons/Gunshot_sniper.ogg similarity index 100% rename from sound/weapons/gunshot/sniper.ogg rename to sound/weapons/Gunshot_sniper.ogg diff --git a/sound/weapons/grenade_launcher.ogg b/sound/weapons/grenade_launcher.ogg new file mode 100644 index 0000000000..261c222dea Binary files /dev/null and b/sound/weapons/grenade_launcher.ogg differ diff --git a/sound/weapons/gunshot/gunshot.ogg b/sound/weapons/gunshot/gunshot.ogg deleted file mode 100644 index 1eaf4043a4..0000000000 Binary files a/sound/weapons/gunshot/gunshot.ogg and /dev/null differ diff --git a/sound/weapons/gunshot/gunshot_pistol.ogg b/sound/weapons/gunshot/gunshot_pistol.ogg deleted file mode 100644 index c9d6322992..0000000000 Binary files a/sound/weapons/gunshot/gunshot_pistol.ogg and /dev/null differ diff --git a/sound/weapons/gunshot/gunshot_smg.ogg b/sound/weapons/gunshot/gunshot_smg.ogg deleted file mode 100644 index 5c0000bb32..0000000000 Binary files a/sound/weapons/gunshot/gunshot_smg.ogg and /dev/null differ diff --git a/sound/weapons/gunshot/gunshot_strong.ogg b/sound/weapons/gunshot/gunshot_strong.ogg deleted file mode 100644 index 6794bfa08e..0000000000 Binary files a/sound/weapons/gunshot/gunshot_strong.ogg and /dev/null differ diff --git a/sound/weapons/machinegun.ogg b/sound/weapons/machinegun.ogg deleted file mode 100644 index 49c2b0c554..0000000000 Binary files a/sound/weapons/machinegun.ogg and /dev/null differ diff --git a/sound/weapons/rifleshot.ogg b/sound/weapons/rifleshot.ogg deleted file mode 100644 index 4b26d5e7e6..0000000000 Binary files a/sound/weapons/rifleshot.ogg and /dev/null differ diff --git a/sound/weapons/shotgun.ogg b/sound/weapons/shotgun.ogg deleted file mode 100644 index f10004d1ee..0000000000 Binary files a/sound/weapons/shotgun.ogg and /dev/null differ diff --git a/sound/weapons/sniper.ogg b/sound/weapons/sniper.ogg deleted file mode 100644 index aabe4601ba..0000000000 Binary files a/sound/weapons/sniper.ogg and /dev/null differ diff --git a/tools/mapmerge/1prepare_map.sh b/tools/mapmerge/1prepare_map.sh new file mode 100755 index 0000000000..ee4fe2f5a5 --- /dev/null +++ b/tools/mapmerge/1prepare_map.sh @@ -0,0 +1,6 @@ +#!/bin/sh +cd ../../maps/southern_cross + +for f in *.dmm; +do cp $f $f.backup; +done diff --git a/tools/mapmerge/2clean_map.sh b/tools/mapmerge/2clean_map.sh new file mode 100755 index 0000000000..71c16f7999 --- /dev/null +++ b/tools/mapmerge/2clean_map.sh @@ -0,0 +1,4 @@ +#!/bin/sh +for f in ../../maps/southern_cross/*.dmm; +do java -jar MapPatcher.jar -clean $f.backup $f $f; +done diff --git a/vorestation.dme b/vorestation.dme index d839ce0091..304e4fe977 100644 --- a/vorestation.dme +++ b/vorestation.dme @@ -16,6 +16,7 @@ #include "code\_map_tests.dm" #include "code\_unit_tests.dm" #include "code\global.dm" +#include "code\global_init.dm" #include "code\global_vr.dm" #include "code\global_yw.dm" #include "code\hub.dm" @@ -25,6 +26,7 @@ #include "code\__datastructures\globals.dm" #include "code\__defines\_compile_options.dm" #include "code\__defines\_globals.dm" +#include "code\__defines\_lists.dm" #include "code\__defines\_planes+layers.dm" #include "code\__defines\_planes+layers_vr.dm" #include "code\__defines\_tick.dm" @@ -40,10 +42,12 @@ #include "code\__defines\construction.dm" #include "code\__defines\damage_organs.dm" #include "code\__defines\dna.dm" +#include "code\__defines\flags.dm" #include "code\__defines\gamemode.dm" #include "code\__defines\holomap.dm" #include "code\__defines\integrated_circuits.dm" #include "code\__defines\inventory_sizes.dm" +#include "code\__defines\is_helpers.dm" #include "code\__defines\items_clothing.dm" #include "code\__defines\lighting.dm" #include "code\__defines\machinery.dm" @@ -76,6 +80,7 @@ #include "code\__defines\typeids.dm" #include "code\__defines\unit_tests.dm" #include "code\__defines\vote.dm" +#include "code\__defines\vv.dm" #include "code\__defines\xenoarcheaology.dm" #include "code\__defines\ZAS.dm" #include "code\_compatibility\509\_JSON.dm" @@ -83,11 +88,13 @@ #include "code\_compatibility\509\JSON Writer.dm" #include "code\_compatibility\509\text.dm" #include "code\_compatibility\509\type2type.dm" +#include "code\_global_vars\bitfields.dm" #include "code\_global_vars\misc.dm" #include "code\_global_vars\mobs.dm" #include "code\_global_vars\sensitive.dm" #include "code\_global_vars\lists\mapping.dm" #include "code\_helpers\_global_objects.dm" +#include "code\_helpers\_lists.dm" #include "code\_helpers\atmospherics.dm" #include "code\_helpers\events.dm" #include "code\_helpers\files.dm" @@ -96,10 +103,8 @@ #include "code\_helpers\global_lists_vr.dm" #include "code\_helpers\icons.dm" #include "code\_helpers\icons_vr.dm" -#include "code\_helpers\lists.dm" #include "code\_helpers\logging.dm" #include "code\_helpers\logging_vr.dm" -#include "code\_helpers\maths.dm" #include "code\_helpers\matrices.dm" #include "code\_helpers\mobs.dm" #include "code\_helpers\names.dm" @@ -113,7 +118,7 @@ #include "code\_helpers\type2type_vr.dm" #include "code\_helpers\unsorted.dm" #include "code\_helpers\unsorted_vr.dm" -#include "code\_helpers\vector.dm" +#include "code\_helpers\view.dm" #include "code\_helpers\sorts\__main.dm" #include "code\_helpers\sorts\comparators.dm" #include "code\_helpers\sorts\TimSort.dm" @@ -208,26 +213,23 @@ #include "code\controllers\Processes\alarm.dm" #include "code\controllers\Processes\chemistry.dm" #include "code\controllers\Processes\emergencyShuttle.dm" -#include "code\controllers\Processes\event.dm" #include "code\controllers\Processes\game_master.dm" -#include "code\controllers\Processes\inactivity.dm" #include "code\controllers\Processes\nanoui.dm" -#include "code\controllers\Processes\obj.dm" #include "code\controllers\Processes\radiation.dm" -#include "code\controllers\Processes\scheduler.dm" -#include "code\controllers\Processes\sun.dm" #include "code\controllers\Processes\supply.dm" #include "code\controllers\Processes\ticker.dm" -#include "code\controllers\Processes\turf.dm" #include "code\controllers\ProcessScheduler\core\process.dm" #include "code\controllers\ProcessScheduler\core\processScheduler.dm" +#include "code\controllers\subsystems\ai.dm" #include "code\controllers\subsystems\air.dm" #include "code\controllers\subsystems\airflow.dm" #include "code\controllers\subsystems\atoms.dm" #include "code\controllers\subsystems\bellies_vr.dm" #include "code\controllers\subsystems\circuits.dm" +#include "code\controllers\subsystems\events.dm" #include "code\controllers\subsystems\garbage.dm" #include "code\controllers\subsystems\holomaps.dm" +#include "code\controllers\subsystems\inactivity.dm" #include "code\controllers\subsystems\lighting.dm" #include "code\controllers\subsystems\machines.dm" #include "code\controllers\subsystems\mapping_vr.dm" @@ -238,9 +240,17 @@ #include "code\controllers\subsystems\persist_vr.dm" #include "code\controllers\subsystems\planets.dm" #include "code\controllers\subsystems\shuttles.dm" +#include "code\controllers\subsystems\sun.dm" +#include "code\controllers\subsystems\time_track.dm" +#include "code\controllers\subsystems\timer.dm" #include "code\controllers\subsystems\transcore_vr.dm" #include "code\controllers\subsystems\vote.dm" #include "code\controllers\subsystems\xenoarch.dm" +#include "code\controllers\subsystems\processing\fastprocess.dm" +#include "code\controllers\subsystems\processing\obj.dm" +#include "code\controllers\subsystems\processing\processing.dm" +#include "code\controllers\subsystems\processing\projectiles.dm" +#include "code\controllers\subsystems\processing\turfs.dm" #include "code\datums\ai_law_sets.dm" #include "code\datums\ai_laws.dm" #include "code\datums\api.dm" @@ -261,9 +271,11 @@ #include "code\datums\mutable_appearance.dm" #include "code\datums\orbit.dm" #include "code\datums\organs.dm" +#include "code\datums\position_point_vector.dm" #include "code\datums\progressbar.dm" #include "code\datums\recipe.dm" #include "code\datums\riding.dm" +#include "code\datums\soul_link.dm" #include "code\datums\sun.dm" #include "code\datums\weakref.dm" #include "code\datums\autolathe\arms.dm" @@ -292,6 +304,11 @@ #include "code\datums\locations\tau_ceti.dm" #include "code\datums\locations\uueoa_esa.dm" #include "code\datums\locations\vir.dm" +#include "code\datums\looping_sounds\_looping_sound.dm" +#include "code\datums\looping_sounds\item_sounds.dm" +#include "code\datums\looping_sounds\machinery_sounds.dm" +#include "code\datums\looping_sounds\sequence.dm" +#include "code\datums\looping_sounds\weather_sounds.dm" #include "code\datums\observation\_debug.dm" #include "code\datums\observation\_defines.dm" #include "code\datums\observation\destroyed.dm" @@ -301,9 +318,9 @@ #include "code\datums\observation\logged_in.dm" #include "code\datums\observation\moved.dm" #include "code\datums\observation\observation.dm" -#include "code\datums\observation\task_triggered.dm" #include "code\datums\observation\turf_changed.dm" #include "code\datums\observation\unequipped.dm" +#include "code\datums\observation\z_moved.dm" #include "code\datums\observation\~cleanup.dm" #include "code\datums\outfits\_defines.dm" #include "code\datums\outfits\horror_killers.dm" @@ -360,7 +377,6 @@ #include "code\datums\supplypacks\robotics.dm" #include "code\datums\supplypacks\robotics_vr.dm" #include "code\datums\supplypacks\science.dm" -#include "code\datums\supplypacks\science_vr.dm" #include "code\datums\supplypacks\security.dm" #include "code\datums\supplypacks\security_vr.dm" #include "code\datums\supplypacks\supply.dm" @@ -530,6 +546,7 @@ #include "code\game\gamemodes\cult\narsie.dm" #include "code\game\gamemodes\cult\ritual.dm" #include "code\game\gamemodes\cult\runes.dm" +#include "code\game\gamemodes\cult\soulstone.dm" #include "code\game\gamemodes\cult\talisman.dm" #include "code\game\gamemodes\cult\cultify\mob.dm" #include "code\game\gamemodes\cult\cultify\obj.dm" @@ -587,7 +604,6 @@ #include "code\game\gamemodes\technomancer\spell_objs_helpers.dm" #include "code\game\gamemodes\technomancer\technomancer.dm" #include "code\game\gamemodes\technomancer\assistance\assistance.dm" -#include "code\game\gamemodes\technomancer\assistance\golem.dm" #include "code\game\gamemodes\technomancer\devices\boots_of_speed.dm" #include "code\game\gamemodes\technomancer\devices\disposable_teleporter.dm" #include "code\game\gamemodes\technomancer\devices\gloves_of_regen.dm" @@ -745,7 +761,6 @@ #include "code\game\machinery\turret_control.dm" #include "code\game\machinery\vending.dm" #include "code\game\machinery\vending_vr.dm" -#include "code\game\machinery\vr_console.dm" #include "code\game\machinery\wall_frames.dm" #include "code\game\machinery\washing_machine.dm" #include "code\game\machinery\wishgranter.dm" @@ -775,6 +790,7 @@ #include "code\game\machinery\computer\computer.dm" #include "code\game\machinery\computer\crew.dm" #include "code\game\machinery\computer\guestpass.dm" +#include "code\game\machinery\computer\id_restorer_vr.dm" #include "code\game\machinery\computer\law.dm" #include "code\game\machinery\computer\medical.dm" #include "code\game\machinery\computer\message.dm" @@ -861,6 +877,8 @@ #include "code\game\machinery\telecomms\telecomunications.dm" #include "code\game\machinery\telecomms\telemonitor.dm" #include "code\game\machinery\telecomms\traffic_control.dm" +#include "code\game\machinery\virtual_reality\ar_console.dm" +#include "code\game\machinery\virtual_reality\vr_console.dm" #include "code\game\magic\Uristrunes.dm" #include "code\game\mecha\mech_bay.dm" #include "code\game\mecha\mech_fabricator.dm" @@ -938,10 +956,21 @@ #include "code\game\objects\effects\decals\Cleanable\tracks.dm" #include "code\game\objects\effects\decals\posters\bs12.dm" #include "code\game\objects\effects\decals\posters\polarisposters.dm" +#include "code\game\objects\effects\map_effects\beam_point.dm" +#include "code\game\objects\effects\map_effects\effect_emitter.dm" +#include "code\game\objects\effects\map_effects\map_effects.dm" +#include "code\game\objects\effects\map_effects\perma_light.dm" +#include "code\game\objects\effects\map_effects\radiation_emitter.dm" +#include "code\game\objects\effects\map_effects\screen_shaker.dm" +#include "code\game\objects\effects\map_effects\sound_emitter.dm" #include "code\game\objects\effects\spawners\bombspawner.dm" #include "code\game\objects\effects\spawners\gibspawner.dm" #include "code\game\objects\effects\temporary_visuals\miscellaneous.dm" -#include "code\game\objects\effects\temporary_visuals\temproary_visual.dm" +#include "code\game\objects\effects\temporary_visuals\temporary_visual.dm" +#include "code\game\objects\effects\temporary_visuals\projectiles\impact.dm" +#include "code\game\objects\effects\temporary_visuals\projectiles\muzzle.dm" +#include "code\game\objects\effects\temporary_visuals\projectiles\projectile_effects.dm" +#include "code\game\objects\effects\temporary_visuals\projectiles\tracer.dm" #include "code\game\objects\items\antag_spawners.dm" #include "code\game\objects\items\apc_frame.dm" #include "code\game\objects\items\blueprints.dm" @@ -950,6 +979,7 @@ #include "code\game\objects\items\contraband_vr.dm" #include "code\game\objects\items\crayons.dm" #include "code\game\objects\items\glassjar.dm" +#include "code\game\objects\items\godfigures.dm" #include "code\game\objects\items\gunbox.dm" #include "code\game\objects\items\gunbox_vr.dm" #include "code\game\objects\items\gunbox_yw.dm" @@ -1192,10 +1222,12 @@ #include "code\game\objects\random\mob.dm" #include "code\game\objects\random\random_vr.dm" #include "code\game\objects\random\spacesuits.dm" +#include "code\game\objects\random\unidentified\medicine.dm" #include "code\game\objects\structures\barsign.dm" #include "code\game\objects\structures\bedsheet_bin.dm" #include "code\game\objects\structures\bonfire.dm" #include "code\game\objects\structures\catwalk.dm" +#include "code\game\objects\structures\cliff.dm" #include "code\game\objects\structures\coathanger.dm" #include "code\game\objects\structures\curtains.dm" #include "code\game\objects\structures\displaycase.dm" @@ -1203,6 +1235,7 @@ #include "code\game\objects\structures\door_assembly.dm" #include "code\game\objects\structures\electricchair.dm" #include "code\game\objects\structures\extinguisher.dm" +#include "code\game\objects\structures\fence.dm" #include "code\game\objects\structures\fitness.dm" #include "code\game\objects\structures\flora.dm" #include "code\game\objects\structures\flora_vr.dm" @@ -1214,6 +1247,7 @@ #include "code\game\objects\structures\janicart.dm" #include "code\game\objects\structures\kitchen_spike.dm" #include "code\game\objects\structures\lattice.dm" +#include "code\game\objects\structures\lightpost.dm" #include "code\game\objects\structures\loot_piles.dm" #include "code\game\objects\structures\map_blocker_vr.dm" #include "code\game\objects\structures\mirror.dm" @@ -1228,6 +1262,7 @@ #include "code\game\objects\structures\signs.dm" #include "code\game\objects\structures\simple_doors.dm" #include "code\game\objects\structures\snowman.dm" +#include "code\game\objects\structures\stasis_cage.dm" #include "code\game\objects\structures\tank_dispenser.dm" #include "code\game\objects\structures\target_stake.dm" #include "code\game\objects\structures\transit_tubes.dm" @@ -1280,10 +1315,13 @@ #include "code\game\objects\structures\ghost_pods\silicon.dm" #include "code\game\objects\structures\props\alien_props.dm" #include "code\game\objects\structures\props\beam_prism.dm" +#include "code\game\objects\structures\props\blackbox.dm" +#include "code\game\objects\structures\props\fake_ai.dm" #include "code\game\objects\structures\props\nest.dm" #include "code\game\objects\structures\props\projectile_lock.dm" #include "code\game\objects\structures\props\prop.dm" #include "code\game\objects\structures\props\puzzledoor.dm" +#include "code\game\objects\structures\props\transmitter.dm" #include "code\game\objects\structures\stool_bed_chair_nest\alien_nests.dm" #include "code\game\objects\structures\stool_bed_chair_nest\bed.dm" #include "code\game\objects\structures\stool_bed_chair_nest\chairs.dm" @@ -1310,6 +1348,7 @@ #include "code\game\turfs\simulated\floor_static.dm" #include "code\game\turfs\simulated\floor_types.dm" #include "code\game\turfs\simulated\floor_types_vr.dm" +#include "code\game\turfs\simulated\lava.dm" #include "code\game\turfs\simulated\wall_attacks.dm" #include "code\game\turfs\simulated\wall_icon.dm" #include "code\game\turfs\simulated\wall_types.dm" @@ -1425,24 +1464,43 @@ #include "code\modules\admin\verbs\lightning_strike.dm" #include "code\modules\admin\verbs\map_template_loadverb.dm" #include "code\modules\admin\verbs\mapping.dm" -#include "code\modules\admin\verbs\massmodvar.dm" -#include "code\modules\admin\verbs\modifyvariables.dm" #include "code\modules\admin\verbs\panicbunker.dm" #include "code\modules\admin\verbs\playsound.dm" #include "code\modules\admin\verbs\possess.dm" #include "code\modules\admin\verbs\pray.dm" #include "code\modules\admin\verbs\randomverbs.dm" -#include "code\modules\admin\verbs\SDQL.dm" -#include "code\modules\admin\verbs\SDQL_2.dm" -#include "code\modules\admin\verbs\SDQL_2_parser.dm" #include "code\modules\admin\verbs\smite.dm" #include "code\modules\admin\verbs\smite_vr.dm" #include "code\modules\admin\verbs\striketeam.dm" #include "code\modules\admin\verbs\ticklag.dm" #include "code\modules\admin\verbs\tripAI.dm" -#include "code\modules\admin\view_variables\helpers.dm" +#include "code\modules\admin\verbs\SDQL2\SDQL_2.dm" +#include "code\modules\admin\verbs\SDQL2\SDQL_2_parser.dm" +#include "code\modules\admin\verbs\SDQL2\SDQL_2_wrappers.dm" +#include "code\modules\admin\view_variables\admin_delete.dm" +#include "code\modules\admin\view_variables\debug_variables.dm" +#include "code\modules\admin\view_variables\get_variables.dm" +#include "code\modules\admin\view_variables\helpers_deprecated.dm" +#include "code\modules\admin\view_variables\mass_edit_variables.dm" +#include "code\modules\admin\view_variables\modify_variables.dm" #include "code\modules\admin\view_variables\topic.dm" #include "code\modules\admin\view_variables\view_variables.dm" +#include "code\modules\ai\_defines.dm" +#include "code\modules\ai\ai_holder.dm" +#include "code\modules\ai\ai_holder_combat.dm" +#include "code\modules\ai\ai_holder_communication.dm" +#include "code\modules\ai\ai_holder_cooperation.dm" +#include "code\modules\ai\ai_holder_debug.dm" +#include "code\modules\ai\ai_holder_disabled.dm" +#include "code\modules\ai\ai_holder_fleeing.dm" +#include "code\modules\ai\ai_holder_follow.dm" +#include "code\modules\ai\ai_holder_movement.dm" +#include "code\modules\ai\ai_holder_pathfinding.dm" +#include "code\modules\ai\ai_holder_targeting.dm" +#include "code\modules\ai\interfaces.dm" +#include "code\modules\ai\say_list.dm" +#include "code\modules\ai\aI_holder_subtypes\simple_mob_ai.dm" +#include "code\modules\ai\aI_holder_subtypes\slime_xenobio_ai.dm" #include "code\modules\alarm\alarm.dm" #include "code\modules\alarm\alarm_handler.dm" #include "code\modules\alarm\atmosphere_alarm.dm" @@ -1481,14 +1539,16 @@ #include "code\modules\blob2\blobs\normal.dm" #include "code\modules\blob2\blobs\resource.dm" #include "code\modules\blob2\blobs\shield.dm" -#include "code\modules\blob2\mobs\blob_mob.dm" -#include "code\modules\blob2\mobs\spore.dm" #include "code\modules\blob2\overmind\overmind.dm" #include "code\modules\blob2\overmind\powers.dm" #include "code\modules\blob2\overmind\types.dm" #include "code\modules\busy_space\air_traffic.dm" #include "code\modules\busy_space\loremaster.dm" #include "code\modules\busy_space_vr\organizations.dm" +#include "code\modules\catalogue\atoms.dm" +#include "code\modules\catalogue\catalogue_data.dm" +#include "code\modules\catalogue\cataloguer.dm" +#include "code\modules\catalogue\cataloguer_visuals.dm" #include "code\modules\client\client defines.dm" #include "code\modules\client\client procs.dm" #include "code\modules\client\movement.dm" @@ -1633,6 +1693,7 @@ #include "code\modules\clothing\spacesuits\void\void.dm" #include "code\modules\clothing\spacesuits\void\void_vr.dm" #include "code\modules\clothing\spacesuits\void\wizard.dm" +#include "code\modules\clothing\spacesuits\void\zaddat.dm" #include "code\modules\clothing\suits\armor.dm" #include "code\modules\clothing\suits\armor_vr.dm" #include "code\modules\clothing\suits\armor_yw.dm" @@ -1735,8 +1796,6 @@ #include "code\modules\events\event_manager.dm" #include "code\modules\events\gravity.dm" #include "code\modules\events\grid_check.dm" -#include "code\modules\events\grubinfestation_vr.dm" -#include "code\modules\events\ian_storm_vr.dm" #include "code\modules\events\infestation.dm" #include "code\modules\events\ion_storm.dm" #include "code\modules\events\meteor_strike_vr.dm" @@ -1880,6 +1939,8 @@ #include "code\modules\hydroponics\trays\tray_soil.dm" #include "code\modules\hydroponics\trays\tray_tools.dm" #include "code\modules\hydroponics\trays\tray_update_icons.dm" +#include "code\modules\identification\identification.dm" +#include "code\modules\identification\item_procs.dm" #include "code\modules\integrated_electronics\_defines.dm" #include "code\modules\integrated_electronics\core\assemblies.dm" #include "code\modules\integrated_electronics\core\detailer.dm" @@ -2061,6 +2122,7 @@ #include "code\modules\mob\living\living_defense.dm" #include "code\modules\mob\living\living_defines.dm" #include "code\modules\mob\living\living_defines_vr.dm" +#include "code\modules\mob\living\living_movement.dm" #include "code\modules\mob\living\living_powers.dm" #include "code\modules\mob\living\login.dm" #include "code\modules\mob\living\logout.dm" @@ -2080,6 +2142,7 @@ #include "code\modules\mob\living\carbon\carbon_defines.dm" #include "code\modules\mob\living\carbon\carbon_powers.dm" #include "code\modules\mob\living\carbon\give.dm" +#include "code\modules\mob\living\carbon\lick_wounds.dm" #include "code\modules\mob\living\carbon\resist.dm" #include "code\modules\mob\living\carbon\shock.dm" #include "code\modules\mob\living\carbon\taste.dm" @@ -2130,6 +2193,7 @@ #include "code\modules\mob\living\carbon\human\human_movement.dm" #include "code\modules\mob\living\carbon\human\human_organs.dm" #include "code\modules\mob\living\carbon\human\human_powers.dm" +#include "code\modules\mob\living\carbon\human\human_resist.dm" #include "code\modules\mob\living\carbon\human\human_species.dm" #include "code\modules\mob\living\carbon\human\human_species_vr.dm" #include "code\modules\mob\living\carbon\human\human_vr.dm" @@ -2160,6 +2224,7 @@ #include "code\modules\mob\living\carbon\human\species\species_shapeshift_vr.dm" #include "code\modules\mob\living\carbon\human\species\species_vr.dm" #include "code\modules\mob\living\carbon\human\species\outsider\event.dm" +#include "code\modules\mob\living\carbon\human\species\outsider\replicant.dm" #include "code\modules\mob\living\carbon\human\species\outsider\shadow.dm" #include "code\modules\mob\living\carbon\human\species\outsider\skeleton.dm" #include "code\modules\mob\living\carbon\human\species\outsider\vox.dm" @@ -2205,6 +2270,7 @@ #include "code\modules\mob\living\silicon\subystems.dm" #include "code\modules\mob\living\silicon\ai\ai.dm" #include "code\modules\mob\living\silicon\ai\ai_movement.dm" +#include "code\modules\mob\living\silicon\ai\ai_remote_control.dm" #include "code\modules\mob\living\silicon\ai\ai_vr.dm" #include "code\modules\mob\living\silicon\ai\death.dm" #include "code\modules\mob\living\silicon\ai\examine.dm" @@ -2247,6 +2313,7 @@ #include "code\modules\mob\living\silicon\robot\robot_items.dm" #include "code\modules\mob\living\silicon\robot\robot_modules_yw.dm" #include "code\modules\mob\living\silicon\robot\robot_movement.dm" +#include "code\modules\mob\living\silicon\robot\robot_remote_control.dm" #include "code\modules\mob\living\silicon\robot\robot_vr.dm" #include "code\modules\mob\living\silicon\robot\syndicate.dm" #include "code\modules\mob\living\silicon\robot\dogborg\dog_modules_vr.dm" @@ -2258,7 +2325,6 @@ #include "code\modules\mob\living\silicon\robot\drone\drone_damage.dm" #include "code\modules\mob\living\silicon\robot\drone\drone_items.dm" #include "code\modules\mob\living\silicon\robot\drone\drone_manufacturer.dm" -#include "code\modules\mob\living\silicon\robot\drone\drone_remote_control.dm" #include "code\modules\mob\living\silicon\robot\drone\drone_say.dm" #include "code\modules\mob\living\silicon\robot\robot_modules\event.dm" #include "code\modules\mob\living\silicon\robot\robot_modules\station.dm" @@ -2268,98 +2334,138 @@ #include "code\modules\mob\living\silicon\robot\subtypes\lost_drone.dm" #include "code\modules\mob\living\silicon\robot\subtypes\syndicate.dm" #include "code\modules\mob\living\simple_animal\corpse.dm" -#include "code\modules\mob\living\simple_animal\simple_animal.dm" -#include "code\modules\mob\living\simple_animal\simple_animal_vr.dm" -#include "code\modules\mob\living\simple_animal\simple_hud.dm" -#include "code\modules\mob\living\simple_animal\aliens\alien.dm" -#include "code\modules\mob\living\simple_animal\aliens\creature.dm" -#include "code\modules\mob\living\simple_animal\aliens\drone.dm" -#include "code\modules\mob\living\simple_animal\aliens\faithless.dm" -#include "code\modules\mob\living\simple_animal\aliens\hivebot.dm" -#include "code\modules\mob\living\simple_animal\aliens\mimic.dm" -#include "code\modules\mob\living\simple_animal\aliens\shade.dm" -#include "code\modules\mob\living\simple_animal\aliens\statue.dm" -#include "code\modules\mob\living\simple_animal\animals\bat.dm" -#include "code\modules\mob\living\simple_animal\animals\bear.dm" -#include "code\modules\mob\living\simple_animal\animals\birds_vr.dm" -#include "code\modules\mob\living\simple_animal\animals\carp.dm" -#include "code\modules\mob\living\simple_animal\animals\cat.dm" -#include "code\modules\mob\living\simple_animal\animals\cat_vr.dm" -#include "code\modules\mob\living\simple_animal\animals\corgi.dm" -#include "code\modules\mob\living\simple_animal\animals\corgi_vr.dm" -#include "code\modules\mob\living\simple_animal\animals\crab.dm" -#include "code\modules\mob\living\simple_animal\animals\farm_animals.dm" -#include "code\modules\mob\living\simple_animal\animals\fish.dm" -#include "code\modules\mob\living\simple_animal\animals\fish_vr.dm" -#include "code\modules\mob\living\simple_animal\animals\fluffy_vr.dm" -#include "code\modules\mob\living\simple_animal\animals\fox_vr.dm" -#include "code\modules\mob\living\simple_animal\animals\giant_spider.dm" -#include "code\modules\mob\living\simple_animal\animals\giant_spider_vr.dm" -#include "code\modules\mob\living\simple_animal\animals\goose.dm" -#include "code\modules\mob\living\simple_animal\animals\lizard.dm" -#include "code\modules\mob\living\simple_animal\animals\miscellaneous.dm" -#include "code\modules\mob\living\simple_animal\animals\mouse.dm" -#include "code\modules\mob\living\simple_animal\animals\mouse_vr.dm" -#include "code\modules\mob\living\simple_animal\animals\parrot.dm" -#include "code\modules\mob\living\simple_animal\animals\penguin.dm" -#include "code\modules\mob\living\simple_animal\animals\pike_vr.dm" -#include "code\modules\mob\living\simple_animal\animals\slime.dm" -#include "code\modules\mob\living\simple_animal\animals\snake_vr.dm" -#include "code\modules\mob\living\simple_animal\animals\spiderbot.dm" -#include "code\modules\mob\living\simple_animal\animals\tomato.dm" -#include "code\modules\mob\living\simple_animal\animals\tree.dm" -#include "code\modules\mob\living\simple_animal\animals\worm.dm" -#include "code\modules\mob\living\simple_animal\animals\sif_wildlife\diyaab.dm" -#include "code\modules\mob\living\simple_animal\animals\sif_wildlife\savik.dm" -#include "code\modules\mob\living\simple_animal\animals\sif_wildlife\shantak.dm" -#include "code\modules\mob\living\simple_animal\borer\borer.dm" -#include "code\modules\mob\living\simple_animal\borer\borer_captive.dm" -#include "code\modules\mob\living\simple_animal\borer\borer_powers.dm" -#include "code\modules\mob\living\simple_animal\borer\say.dm" -#include "code\modules\mob\living\simple_animal\constructs\constructs.dm" -#include "code\modules\mob\living\simple_animal\constructs\soulstone.dm" -#include "code\modules\mob\living\simple_animal\humanoids\clown.dm" -#include "code\modules\mob\living\simple_animal\humanoids\head.dm" -#include "code\modules\mob\living\simple_animal\humanoids\mechamobs.dm" -#include "code\modules\mob\living\simple_animal\humanoids\pirate.dm" -#include "code\modules\mob\living\simple_animal\humanoids\russian.dm" -#include "code\modules\mob\living\simple_animal\humanoids\syndicate.dm" -#include "code\modules\mob\living\simple_animal\slime\ai.dm" -#include "code\modules\mob\living\simple_animal\slime\combat.dm" -#include "code\modules\mob\living\simple_animal\slime\death.dm" -#include "code\modules\mob\living\simple_animal\slime\life.dm" -#include "code\modules\mob\living\simple_animal\slime\slime.dm" -#include "code\modules\mob\living\simple_animal\slime\subtypes.dm" -#include "code\modules\mob\living\simple_animal\vore\bee.dm" -#include "code\modules\mob\living\simple_animal\vore\carp.dm" -#include "code\modules\mob\living\simple_animal\vore\catgirl.dm" -#include "code\modules\mob\living\simple_animal\vore\corrupt_hounds.dm" -#include "code\modules\mob\living\simple_animal\vore\deathclaw.dm" -#include "code\modules\mob\living\simple_animal\vore\dino.dm" -#include "code\modules\mob\living\simple_animal\vore\dragon.dm" -#include "code\modules\mob\living\simple_animal\vore\fennec.dm" -#include "code\modules\mob\living\simple_animal\vore\fennix.dm" -#include "code\modules\mob\living\simple_animal\vore\frog.dm" -#include "code\modules\mob\living\simple_animal\vore\gaslamp.dm" -#include "code\modules\mob\living\simple_animal\vore\hippo.dm" -#include "code\modules\mob\living\simple_animal\vore\horse.dm" -#include "code\modules\mob\living\simple_animal\vore\jelly.dm" -#include "code\modules\mob\living\simple_animal\vore\otie.dm" -#include "code\modules\mob\living\simple_animal\vore\panther.dm" -#include "code\modules\mob\living\simple_animal\vore\rat.dm" -#include "code\modules\mob\living\simple_animal\vore\redpanda.dm" -#include "code\modules\mob\living\simple_animal\vore\snake.dm" -#include "code\modules\mob\living\simple_animal\vore\solargrub.dm" -#include "code\modules\mob\living\simple_animal\vore\solargrub_larva.dm" -#include "code\modules\mob\living\simple_animal\vore\wolf.dm" -#include "code\modules\mob\living\simple_animal\vore\wolfgirl.dm" -#include "code\modules\mob\living\simple_animal\vore\zz_vore_overrides.dm" -#include "code\modules\mob\living\simple_animal\vore\shadekin\_defines.dm" -#include "code\modules\mob\living\simple_animal\vore\shadekin\ability_objects.dm" -#include "code\modules\mob\living\simple_animal\vore\shadekin\ability_procs.dm" -#include "code\modules\mob\living\simple_animal\vore\shadekin\shadekin.dm" -#include "code\modules\mob\living\simple_animal\vore\shadekin\types.dm" -#include "code\modules\mob\living\simple_animal\vore\shadekin\~defines.dm" +#include "code\modules\mob\living\simple_mob\appearance.dm" +#include "code\modules\mob\living\simple_mob\combat.dm" +#include "code\modules\mob\living\simple_mob\defense.dm" +#include "code\modules\mob\living\simple_mob\hands.dm" +#include "code\modules\mob\living\simple_mob\life.dm" +#include "code\modules\mob\living\simple_mob\on_click.dm" +#include "code\modules\mob\living\simple_mob\simple_hud.dm" +#include "code\modules\mob\living\simple_mob\simple_mob.dm" +#include "code\modules\mob\living\simple_mob\simple_mob_vr.dm" +#include "code\modules\mob\living\simple_mob\subtypes\animal\animal.dm" +#include "code\modules\mob\living\simple_mob\subtypes\animal\borer\borer.dm" +#include "code\modules\mob\living\simple_mob\subtypes\animal\borer\borer_captive.dm" +#include "code\modules\mob\living\simple_mob\subtypes\animal\borer\borer_powers.dm" +#include "code\modules\mob\living\simple_mob\subtypes\animal\farm animals\chicken.dm" +#include "code\modules\mob\living\simple_mob\subtypes\animal\farm animals\cow.dm" +#include "code\modules\mob\living\simple_mob\subtypes\animal\farm animals\goat.dm" +#include "code\modules\mob\living\simple_mob\subtypes\animal\giant_spider\_giant_spider.dm" +#include "code\modules\mob\living\simple_mob\subtypes\animal\giant_spider\carrier.dm" +#include "code\modules\mob\living\simple_mob\subtypes\animal\giant_spider\electric.dm" +#include "code\modules\mob\living\simple_mob\subtypes\animal\giant_spider\frost.dm" +#include "code\modules\mob\living\simple_mob\subtypes\animal\giant_spider\giant_spider_vr.dm" +#include "code\modules\mob\living\simple_mob\subtypes\animal\giant_spider\hunter.dm" +#include "code\modules\mob\living\simple_mob\subtypes\animal\giant_spider\lurker.dm" +#include "code\modules\mob\living\simple_mob\subtypes\animal\giant_spider\nurse.dm" +#include "code\modules\mob\living\simple_mob\subtypes\animal\giant_spider\pepper.dm" +#include "code\modules\mob\living\simple_mob\subtypes\animal\giant_spider\phorogenic.dm" +#include "code\modules\mob\living\simple_mob\subtypes\animal\giant_spider\thermic.dm" +#include "code\modules\mob\living\simple_mob\subtypes\animal\giant_spider\tunneler.dm" +#include "code\modules\mob\living\simple_mob\subtypes\animal\giant_spider\webslinger.dm" +#include "code\modules\mob\living\simple_mob\subtypes\animal\passive\crab.dm" +#include "code\modules\mob\living\simple_mob\subtypes\animal\passive\fish.dm" +#include "code\modules\mob\living\simple_mob\subtypes\animal\passive\fish_vr.dm" +#include "code\modules\mob\living\simple_mob\subtypes\animal\passive\lizard.dm" +#include "code\modules\mob\living\simple_mob\subtypes\animal\passive\misc.dm" +#include "code\modules\mob\living\simple_mob\subtypes\animal\passive\mouse.dm" +#include "code\modules\mob\living\simple_mob\subtypes\animal\passive\passive.dm" +#include "code\modules\mob\living\simple_mob\subtypes\animal\passive\penguin.dm" +#include "code\modules\mob\living\simple_mob\subtypes\animal\pets\bird.dm" +#include "code\modules\mob\living\simple_mob\subtypes\animal\pets\cat.dm" +#include "code\modules\mob\living\simple_mob\subtypes\animal\pets\cat_vr.dm" +#include "code\modules\mob\living\simple_mob\subtypes\animal\pets\dog.dm" +#include "code\modules\mob\living\simple_mob\subtypes\animal\pets\fox_vr.dm" +#include "code\modules\mob\living\simple_mob\subtypes\animal\pets\parrot.dm" +#include "code\modules\mob\living\simple_mob\subtypes\animal\sif\diyaab.dm" +#include "code\modules\mob\living\simple_mob\subtypes\animal\sif\fluffy_vr.dm" +#include "code\modules\mob\living\simple_mob\subtypes\animal\sif\hooligan_crab.dm" +#include "code\modules\mob\living\simple_mob\subtypes\animal\sif\savik.dm" +#include "code\modules\mob\living\simple_mob\subtypes\animal\sif\shantak.dm" +#include "code\modules\mob\living\simple_mob\subtypes\animal\sif\sif.dm" +#include "code\modules\mob\living\simple_mob\subtypes\animal\space\alien.dm" +#include "code\modules\mob\living\simple_mob\subtypes\animal\space\bats.dm" +#include "code\modules\mob\living\simple_mob\subtypes\animal\space\bear.dm" +#include "code\modules\mob\living\simple_mob\subtypes\animal\space\carp.dm" +#include "code\modules\mob\living\simple_mob\subtypes\animal\space\gaslamp_vr.dm" +#include "code\modules\mob\living\simple_mob\subtypes\animal\space\goose.dm" +#include "code\modules\mob\living\simple_mob\subtypes\animal\space\mimic_vr.dm" +#include "code\modules\mob\living\simple_mob\subtypes\animal\space\snake_vr.dm" +#include "code\modules\mob\living\simple_mob\subtypes\animal\space\space.dm" +#include "code\modules\mob\living\simple_mob\subtypes\blob\blob.dm" +#include "code\modules\mob\living\simple_mob\subtypes\blob\spore.dm" +#include "code\modules\mob\living\simple_mob\subtypes\humanoid\clown.dm" +#include "code\modules\mob\living\simple_mob\subtypes\humanoid\humanoid.dm" +#include "code\modules\mob\living\simple_mob\subtypes\humanoid\pirates.dm" +#include "code\modules\mob\living\simple_mob\subtypes\humanoid\russian.dm" +#include "code\modules\mob\living\simple_mob\subtypes\humanoid\mercs\mercs.dm" +#include "code\modules\mob\living\simple_mob\subtypes\illusion\illusion.dm" +#include "code\modules\mob\living\simple_mob\subtypes\mechanical\combat_drone.dm" +#include "code\modules\mob\living\simple_mob\subtypes\mechanical\golem.dm" +#include "code\modules\mob\living\simple_mob\subtypes\mechanical\mechanical.dm" +#include "code\modules\mob\living\simple_mob\subtypes\mechanical\viscerator.dm" +#include "code\modules\mob\living\simple_mob\subtypes\mechanical\hivebot\hivebot.dm" +#include "code\modules\mob\living\simple_mob\subtypes\mechanical\hivebot\ranged_damage.dm" +#include "code\modules\mob\living\simple_mob\subtypes\mechanical\hivebot\support.dm" +#include "code\modules\mob\living\simple_mob\subtypes\mechanical\hivebot\tank.dm" +#include "code\modules\mob\living\simple_mob\subtypes\mechanical\mecha\adv_dark_gygax.dm" +#include "code\modules\mob\living\simple_mob\subtypes\mechanical\mecha\combat_mecha.dm" +#include "code\modules\mob\living\simple_mob\subtypes\mechanical\mecha\durand.dm" +#include "code\modules\mob\living\simple_mob\subtypes\mechanical\mecha\gygax.dm" +#include "code\modules\mob\living\simple_mob\subtypes\mechanical\mecha\hoverpod.dm" +#include "code\modules\mob\living\simple_mob\subtypes\mechanical\mecha\marauder.dm" +#include "code\modules\mob\living\simple_mob\subtypes\mechanical\mecha\mecha.dm" +#include "code\modules\mob\living\simple_mob\subtypes\mechanical\mecha\odysseus.dm" +#include "code\modules\mob\living\simple_mob\subtypes\mechanical\mecha\phazon.dm" +#include "code\modules\mob\living\simple_mob\subtypes\mechanical\mecha\ripley.dm" +#include "code\modules\mob\living\simple_mob\subtypes\mechanical\ward\monitor_ward.dm" +#include "code\modules\mob\living\simple_mob\subtypes\mechanical\ward\ward.dm" +#include "code\modules\mob\living\simple_mob\subtypes\occult\creature.dm" +#include "code\modules\mob\living\simple_mob\subtypes\occult\faithless.dm" +#include "code\modules\mob\living\simple_mob\subtypes\occult\constructs\_construct.dm" +#include "code\modules\mob\living\simple_mob\subtypes\occult\constructs\artificer.dm" +#include "code\modules\mob\living\simple_mob\subtypes\occult\constructs\harvester.dm" +#include "code\modules\mob\living\simple_mob\subtypes\occult\constructs\juggernaut.dm" +#include "code\modules\mob\living\simple_mob\subtypes\occult\constructs\shade.dm" +#include "code\modules\mob\living\simple_mob\subtypes\occult\constructs\wraith.dm" +#include "code\modules\mob\living\simple_mob\subtypes\plant\tomato.dm" +#include "code\modules\mob\living\simple_mob\subtypes\plant\tree.dm" +#include "code\modules\mob\living\simple_mob\subtypes\slime\slime.dm" +#include "code\modules\mob\living\simple_mob\subtypes\slime\feral\feral.dm" +#include "code\modules\mob\living\simple_mob\subtypes\slime\xenobio\combat.dm" +#include "code\modules\mob\living\simple_mob\subtypes\slime\xenobio\consumption.dm" +#include "code\modules\mob\living\simple_mob\subtypes\slime\xenobio\defense.dm" +#include "code\modules\mob\living\simple_mob\subtypes\slime\xenobio\discipline.dm" +#include "code\modules\mob\living\simple_mob\subtypes\slime\xenobio\subtypes.dm" +#include "code\modules\mob\living\simple_mob\subtypes\slime\xenobio\subtypes_vr.dm" +#include "code\modules\mob\living\simple_mob\subtypes\slime\xenobio\xenobio.dm" +#include "code\modules\mob\living\simple_mob\subtypes\vore\bee.dm" +#include "code\modules\mob\living\simple_mob\subtypes\vore\catgirl.dm" +#include "code\modules\mob\living\simple_mob\subtypes\vore\cookiegirl.dm" +#include "code\modules\mob\living\simple_mob\subtypes\vore\corrupt_hounds.dm" +#include "code\modules\mob\living\simple_mob\subtypes\vore\deathclaw.dm" +#include "code\modules\mob\living\simple_mob\subtypes\vore\dino.dm" +#include "code\modules\mob\living\simple_mob\subtypes\vore\dragon.dm" +#include "code\modules\mob\living\simple_mob\subtypes\vore\fennec.dm" +#include "code\modules\mob\living\simple_mob\subtypes\vore\fennix.dm" +#include "code\modules\mob\living\simple_mob\subtypes\vore\frog.dm" +#include "code\modules\mob\living\simple_mob\subtypes\vore\hippo.dm" +#include "code\modules\mob\living\simple_mob\subtypes\vore\horse.dm" +#include "code\modules\mob\living\simple_mob\subtypes\vore\jelly.dm" +#include "code\modules\mob\living\simple_mob\subtypes\vore\panther.dm" +#include "code\modules\mob\living\simple_mob\subtypes\vore\rat.dm" +#include "code\modules\mob\living\simple_mob\subtypes\vore\redpanda.dm" +#include "code\modules\mob\living\simple_mob\subtypes\vore\snake.dm" +#include "code\modules\mob\living\simple_mob\subtypes\vore\vore.dm" +#include "code\modules\mob\living\simple_mob\subtypes\vore\wolf.dm" +#include "code\modules\mob\living\simple_mob\subtypes\vore\wolfgirl.dm" +#include "code\modules\mob\living\simple_mob\subtypes\vore\zz_vore_overrides.dm" +#include "code\modules\mob\living\simple_mob\subtypes\vore\shadekin\_defines.dm" +#include "code\modules\mob\living\simple_mob\subtypes\vore\shadekin\ability_objects.dm" +#include "code\modules\mob\living\simple_mob\subtypes\vore\shadekin\ability_procs.dm" +#include "code\modules\mob\living\simple_mob\subtypes\vore\shadekin\shadekin.dm" +#include "code\modules\mob\living\simple_mob\subtypes\vore\shadekin\types.dm" +#include "code\modules\mob\living\simple_mob\subtypes\vore\shadekin\~defines.dm" #include "code\modules\mob\living\voice\voice.dm" #include "code\modules\mob\new_player\login.dm" #include "code\modules\mob\new_player\logout.dm" @@ -2415,6 +2521,7 @@ #include "code\modules\nifsoft\nifsoft.dm" #include "code\modules\nifsoft\software\01_vision.dm" #include "code\modules\nifsoft\software\05_health.dm" +#include "code\modules\nifsoft\software\06_screens.dm" #include "code\modules\nifsoft\software\10_combat.dm" #include "code\modules\nifsoft\software\13_soulcatcher.dm" #include "code\modules\nifsoft\software\14_commlink.dm" @@ -2444,6 +2551,7 @@ #include "code\modules\organs\subtypes\indestructible.dm" #include "code\modules\organs\subtypes\machine.dm" #include "code\modules\organs\subtypes\nano.dm" +#include "code\modules\organs\subtypes\replicant.dm" #include "code\modules\organs\subtypes\seromi.dm" #include "code\modules\organs\subtypes\slime.dm" #include "code\modules\organs\subtypes\standard.dm" @@ -2562,7 +2670,6 @@ #include "code\modules\power\tesla\tesla_act.dm" #include "code\modules\projectiles\ammunition.dm" #include "code\modules\projectiles\dnalocking.dm" -#include "code\modules\projectiles\effects.dm" #include "code\modules\projectiles\gun.dm" #include "code\modules\projectiles\projectile.dm" #include "code\modules\projectiles\ammunition\boxes_yw.dm" @@ -2576,6 +2683,7 @@ #include "code\modules\projectiles\guns\modular_guns.dm" #include "code\modules\projectiles\guns\projectile.dm" #include "code\modules\projectiles\guns\vox.dm" +#include "code\modules\projectiles\guns\energy\hooklauncher.dm" #include "code\modules\projectiles\guns\energy\kinetic_accelerator_vr.dm" #include "code\modules\projectiles\guns\energy\laser.dm" #include "code\modules\projectiles\guns\energy\laser_yw.dm" @@ -2595,6 +2703,7 @@ #include "code\modules\projectiles\guns\launcher\pneumatic.dm" #include "code\modules\projectiles\guns\launcher\rocket.dm" #include "code\modules\projectiles\guns\launcher\syringe_gun.dm" +#include "code\modules\projectiles\guns\magnetic\bore.dm" #include "code\modules\projectiles\guns\magnetic\magnetic.dm" #include "code\modules\projectiles\guns\magnetic\magnetic_construction.dm" #include "code\modules\projectiles\guns\magnetic\magnetic_railgun.dm" @@ -2602,6 +2711,7 @@ #include "code\modules\projectiles\guns\projectile\automatic_vr.dm" #include "code\modules\projectiles\guns\projectile\automatic_yw.dm" #include "code\modules\projectiles\guns\projectile\boltaction.dm" +#include "code\modules\projectiles\guns\projectile\caseless.dm" #include "code\modules\projectiles\guns\projectile\contender.dm" #include "code\modules\projectiles\guns\projectile\dartgun.dm" #include "code\modules\projectiles\guns\projectile\pistol.dm" @@ -2614,7 +2724,6 @@ #include "code\modules\projectiles\guns\projectile\shotgun_yw.dm" #include "code\modules\projectiles\guns\projectile\sniper.dm" #include "code\modules\projectiles\guns\projectile\sniper\collapsible_sniper.dm" -#include "code\modules\projectiles\projectile\animate.dm" #include "code\modules\projectiles\projectile\arc.dm" #include "code\modules\projectiles\projectile\beams.dm" #include "code\modules\projectiles\projectile\beams_vr.dm" @@ -2626,9 +2735,11 @@ #include "code\modules\projectiles\projectile\energy_vr.dm" #include "code\modules\projectiles\projectile\energy_yw.dm" #include "code\modules\projectiles\projectile\force.dm" +#include "code\modules\projectiles\projectile\hook.dm" #include "code\modules\projectiles\projectile\magnetic.dm" #include "code\modules\projectiles\projectile\pellets.dm" #include "code\modules\projectiles\projectile\special.dm" +#include "code\modules\projectiles\projectile\trace.dm" #include "code\modules\projectiles\targeting\targeting_client.dm" #include "code\modules\projectiles\targeting\targeting_gun.dm" #include "code\modules\projectiles\targeting\targeting_mob.dm" @@ -2677,10 +2788,12 @@ #include "code\modules\reagents\dispenser\_defines.dm" #include "code\modules\reagents\dispenser\cartridge.dm" #include "code\modules\reagents\dispenser\cartridge_presets.dm" +#include "code\modules\reagents\dispenser\cartridge_presets_vr.dm" #include "code\modules\reagents\dispenser\cartridge_spawn.dm" #include "code\modules\reagents\dispenser\dispenser2.dm" #include "code\modules\reagents\dispenser\dispenser2_energy.dm" #include "code\modules\reagents\dispenser\dispenser_presets.dm" +#include "code\modules\reagents\dispenser\dispenser_presets_vr.dm" #include "code\modules\reagents\dispenser\supply.dm" #include "code\modules\reagents\reagent_containers\blood_pack.dm" #include "code\modules\reagents\reagent_containers\blood_pack_vr.dm" @@ -2696,6 +2809,7 @@ #include "code\modules\reagents\reagent_containers\spray_vr.dm" #include "code\modules\reagents\reagent_containers\syringes.dm" #include "code\modules\reagents\reagent_containers\syringes_vr.dm" +#include "code\modules\reagents\reagent_containers\unidentified_hypospray.dm" #include "code\modules\recycling\conveyor2.dm" #include "code\modules\recycling\disposal-construction.dm" #include "code\modules\recycling\disposal.dm" @@ -3050,12 +3164,13 @@ #include "maps\submaps\engine_submaps_yw\engine_yw.dm" #include "maps\submaps\engine_submaps_yw\engine_yw_index.dm" #include "maps\submaps\space_submaps\space.dm" +#include "maps\submaps\space_submaps\debrisfield\debrisfield.dm" #include "maps\submaps\surface_submaps\mountains\mountains.dm" #include "maps\submaps\surface_submaps\mountains\mountains_areas.dm" #include "maps\submaps\surface_submaps\plains\plains.dm" #include "maps\submaps\surface_submaps\plains\plains_areas.dm" #include "maps\submaps\surface_submaps\wilderness\wilderness.dm" #include "maps\submaps\surface_submaps\wilderness\wilderness_areas.dm" -#include "maps\tether_yw\tether_yw.dm" +#include "maps\tether\tether.dm" #include "maps\~map_system\maps.dm" // END_INCLUDE